Merge "Merge 24Q3 to AOSP main" into main
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) {
diff --git a/media/tests/benchmark/MediaBenchmarkTest/Android.bp b/media/tests/benchmark/MediaBenchmarkTest/Android.bp
index d41a7f9..1049d5e 100644
--- a/media/tests/benchmark/MediaBenchmarkTest/Android.bp
+++ b/media/tests/benchmark/MediaBenchmarkTest/Android.bp
@@ -36,8 +36,8 @@
resource_dirs: ["res"],
libs: [
- "android.test.runner",
- "android.test.base",
+ "android.test.runner.stubs.system",
+ "android.test.base.stubs.system",
],
jni_libs: [
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
index 41b6aeb..f36d8d5 100644
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
@@ -8293,6 +8293,9 @@
int delayMs,
bool force)
{
+ // APM is single threaded, and single instance.
+ static std::set<IVolumeCurves*> invalidCurvesReported;
+
// do not change actual attributes volume if the attributes is muted
if (outputDesc->isMuted(volumeSource)) {
ALOGVV("%s: volume source %d muted count %d active=%d", __func__, volumeSource,
@@ -8317,7 +8320,12 @@
}
if (curves.getVolumeIndexMin() < 0 || curves.getVolumeIndexMax() < 0) {
- ALOGE("invalid volume index range");
+ if (!invalidCurvesReported.count(&curves)) {
+ invalidCurvesReported.insert(&curves);
+ String8 dump;
+ curves.dump(&dump);
+ ALOGE("invalid volume index range in the curve:\n%s", dump.c_str());
+ }
return BAD_VALUE;
}