Here are the examples of the java api class android.media.MediaCrypto taken from open source projects.
1. MediaCodecTrackRenderer#maybeInitCodec()
Project: ExoPlayer
File: MediaCodecTrackRenderer.java
File: MediaCodecTrackRenderer.java
@SuppressWarnings("deprecation") protected final void maybeInitCodec() throws ExoPlaybackException { if (!shouldInitCodec()) { return; } String mimeType = format.mimeType; MediaCrypto mediaCrypto = null; boolean requiresSecureDecoder = false; if (drmInitData != null) { if (drmSessionManager == null) { throw new ExoPlaybackException("Media requires a DrmSessionManager"); } if (!openedDrmSession) { drmSessionManager.open(drmInitData); openedDrmSession = true; } int drmSessionState = drmSessionManager.getState(); if (drmSessionState == DrmSessionManager.STATE_ERROR) { throw new ExoPlaybackException(drmSessionManager.getError()); } else if (drmSessionState == DrmSessionManager.STATE_OPENED || drmSessionState == DrmSessionManager.STATE_OPENED_WITH_KEYS) { mediaCrypto = drmSessionManager.getMediaCrypto(); requiresSecureDecoder = drmSessionManager.requiresSecureDecoderComponent(mimeType); } else { // The drm session isn't open yet. return; } } DecoderInfo decoderInfo = null; try { decoderInfo = getDecoderInfo(mediaCodecSelector, mimeType, requiresSecureDecoder); } catch (DecoderQueryException e) { notifyAndThrowDecoderInitError(new DecoderInitializationException(format, e, requiresSecureDecoder, DecoderInitializationException.DECODER_QUERY_ERROR)); } if (decoderInfo == null) { notifyAndThrowDecoderInitError(new DecoderInitializationException(format, null, requiresSecureDecoder, DecoderInitializationException.NO_SUITABLE_DECODER_ERROR)); } String codecName = decoderInfo.name; codecIsAdaptive = decoderInfo.adaptive; codecNeedsDiscardToSpsWorkaround = codecNeedsDiscardToSpsWorkaround(codecName, format); codecNeedsFlushWorkaround = codecNeedsFlushWorkaround(codecName); codecNeedsEosPropagationWorkaround = codecNeedsEosPropagationWorkaround(codecName); codecNeedsEosFlushWorkaround = codecNeedsEosFlushWorkaround(codecName); codecNeedsMonoChannelCountWorkaround = codecNeedsMonoChannelCountWorkaround(codecName, format); try { long codecInitializingTimestamp = SystemClock.elapsedRealtime(); TraceUtil.beginSection("createByCodecName(" + codecName + ")"); codec = MediaCodec.createByCodecName(codecName); TraceUtil.endSection(); TraceUtil.beginSection("configureCodec"); configureCodec(codec, decoderInfo.adaptive, getFrameworkMediaFormat(format), mediaCrypto); TraceUtil.endSection(); TraceUtil.beginSection("codec.start()"); codec.start(); TraceUtil.endSection(); long codecInitializedTimestamp = SystemClock.elapsedRealtime(); notifyDecoderInitialized(codecName, codecInitializedTimestamp, codecInitializedTimestamp - codecInitializingTimestamp); inputBuffers = codec.getInputBuffers(); outputBuffers = codec.getOutputBuffers(); } catch (Exception e) { notifyAndThrowDecoderInitError(new DecoderInitializationException(format, e, requiresSecureDecoder, codecName)); } codecHotswapTimeMs = getState() == TrackRenderer.STATE_STARTED ? SystemClock.elapsedRealtime() : -1; inputIndex = -1; outputIndex = -1; waitingForFirstSyncFrame = true; codecCounters.codecInitCount++; }