MediaCodec: require Crypto/Descrambler object for secure codecs
Bug: 346313704
Bug: 365162324
Test: manual
Flag: android.media.codec.secure_codecs_require_crypto
Change-Id: Id0fb0c3d4549d648f863aab48a819f3a6174ba17
diff --git a/media/aconfig/codec_fwk.aconfig b/media/aconfig/codec_fwk.aconfig
index 362e98e..09a07c0 100644
--- a/media/aconfig/codec_fwk.aconfig
+++ b/media/aconfig/codec_fwk.aconfig
@@ -98,6 +98,16 @@
}
flag {
+ name: "secure_codecs_require_crypto"
+ namespace: "codec_fwk"
+ description: "Bugfix flag for requiring setting crypto for secure codecs"
+ bug: "365162324"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
+
+flag {
name: "set_callback_stall"
namespace: "codec_fwk"
description: "Bugfix flag for setCallback stall"
diff --git a/media/libstagefright/MediaCodec.cpp b/media/libstagefright/MediaCodec.cpp
index 4a02985..eea5242 100644
--- a/media/libstagefright/MediaCodec.cpp
+++ b/media/libstagefright/MediaCodec.cpp
@@ -2459,7 +2459,12 @@
mediametrics_setInt32(nextMetricsHandle, kCodecCrypto, 1);
}
} else if (mFlags & kFlagIsSecure) {
- ALOGW("Crypto or descrambler should be given for secure codec");
+ if (android::media::codec::provider_->secure_codecs_require_crypto()) {
+ mErrorLog.log(LOG_TAG, "Crypto or descrambler must be given for secure codec");
+ return INVALID_OPERATION;
+ } else {
+ ALOGW("Crypto or descrambler should be given for secure codec");
+ }
}
if (mConfigureMsg != nullptr) {