Index: media/base/android/java/src/org/chromium/media/MediaCodecBridge.java |
diff --git a/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java b/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java |
index ce50ab2bdd489045db3f0c709110736f5ec4dc22..50c0e5eae25d39f1e6d02140252b4cc099b4f305 100644 |
--- a/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java |
+++ b/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java |
@@ -373,14 +373,20 @@ class MediaCodecBridge { |
} |
@CalledByNative |
- private int queueSecureInputBuffer( |
- int index, int offset, byte[] iv, byte[] keyId, int[] numBytesOfClearData, |
- int[] numBytesOfEncryptedData, int numSubSamples, long presentationTimeUs) { |
+ private int queueSecureInputBuffer(int index, int offset, byte[] iv, byte[] keyId, |
+ int[] numBytesOfClearData, int[] numBytesOfEncryptedData, int numSubSamples, |
+ int cipherMode, int patternEncrypt, int patternSkip, long presentationTimeUs) { |
resetLastPresentationTimeIfNeeded(presentationTimeUs); |
try { |
MediaCodec.CryptoInfo cryptoInfo = new MediaCodec.CryptoInfo(); |
- cryptoInfo.set(numSubSamples, numBytesOfClearData, numBytesOfEncryptedData, |
- keyId, iv, MediaCodec.CRYPTO_MODE_AES_CTR); |
+ cryptoInfo.set(numSubSamples, numBytesOfClearData, numBytesOfEncryptedData, keyId, iv, |
+ cipherMode); |
+ if (patternEncrypt != 0 && patternSkip != 0 |
+ && !MediaCodecUtil.trySetCryptoInfoPattern( |
+ cryptoInfo, patternEncrypt, patternSkip)) { |
+ Log.e(TAG, "Failed to set encryption pattern: %d %d", patternEncrypt, patternSkip); |
+ return MEDIA_CODEC_ERROR; |
+ } |
mMediaCodec.queueSecureInputBuffer(index, offset, cryptoInfo, presentationTimeUs, 0); |
} catch (MediaCodec.CryptoException e) { |
if (e.getErrorCode() == MediaCodec.CryptoException.ERROR_NO_KEY) { |