Index: media/base/android/ndk_media_codec_bridge.cc |
diff --git a/media/base/android/ndk_media_codec_bridge.cc b/media/base/android/ndk_media_codec_bridge.cc |
index b7d757510c42d93e3aabb44cee96529b8812fd10..5fe8b5a9ca191310f4d38c1e52ef9bebc81bac30 100644 |
--- a/media/base/android/ndk_media_codec_bridge.cc |
+++ b/media/base/android/ndk_media_codec_bridge.cc |
@@ -13,6 +13,7 @@ |
#include "base/logging.h" |
#include "base/native_library.h" |
#include "base/strings/string_util.h" |
+#include "media/base/encryption_scheme.h" |
#include "media/base/subsample_entry.h" |
namespace { |
@@ -136,6 +137,7 @@ MediaCodecStatus NdkMediaCodecBridge::QueueSecureInputBuffer( |
const std::vector<char>& iv, |
const SubsampleEntry* subsamples, |
int subsamples_size, |
+ const EncryptionScheme& encryption_scheme, |
base::TimeDelta presentation_time) { |
if (data_size > |
base::checked_cast<size_t>(std::numeric_limits<int32_t>::max())) { |
@@ -145,6 +147,9 @@ MediaCodecStatus NdkMediaCodecBridge::QueueSecureInputBuffer( |
return MEDIA_CODEC_ERROR; |
if (data && !FillInputBuffer(index, data, data_size)) |
return MEDIA_CODEC_ERROR; |
+ if (encryption_scheme.mode() != EncryptionScheme::CIPHER_MODE_AES_CTR || |
+ encryption_scheme.pattern().IsInEffect()) |
+ return MEDIA_CODEC_ERROR; |
int new_subsamples_size = subsamples_size == 0 ? 1 : subsamples_size; |
std::vector<size_t> clear_data, encrypted_data; |