Commit 7d5b952c authored by Xiaohan Wang's avatar Xiaohan Wang Committed by Commit Bot

media: Add kWidevineAv1ForceSupportForTesting feature

This is useful for encrypted AV1 testing on platforms that doesn't not
support component updated CDM (where codec support is read from CDM
manifest).

Bug: 953507
Change-Id: If43dc7d5fcbb8a8e69777831a9a3e52593f77ff2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1747232Reviewed-by: default avatarJohn Rummell <jrummell@chromium.org>
Commit-Queue: Xiaohan Wang <xhwang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#686184}
parent c7f38767
...@@ -99,19 +99,27 @@ EmeConfigRule WidevineKeySystemProperties::GetEncryptionSchemeConfigRule( ...@@ -99,19 +99,27 @@ EmeConfigRule WidevineKeySystemProperties::GetEncryptionSchemeConfigRule(
return EmeConfigRule::NOT_SUPPORTED; return EmeConfigRule::NOT_SUPPORTED;
} }
static SupportedCodecs OverrideAv1SupportIfNeeded(SupportedCodecs codecs) {
auto result = codecs;
// Enable AV1 if force-support is enabled.
if (base::FeatureList::IsEnabled(media::kWidevineAv1ForceSupportForTesting))
result |= media::EME_CODEC_AV1;
// Disable AV1 if the master switch kWidevineAv1 is disabled.
if (!base::FeatureList::IsEnabled(media::kWidevineAv1))
result &= ~media::EME_CODEC_AV1;
return result;
}
SupportedCodecs WidevineKeySystemProperties::GetSupportedCodecs() const { SupportedCodecs WidevineKeySystemProperties::GetSupportedCodecs() const {
// Disable AV1 if feature kWidevineAv1 is disabled return OverrideAv1SupportIfNeeded(codecs_);
return base::FeatureList::IsEnabled(media::kWidevineAv1)
? codecs_
: (codecs_ & ~media::EME_CODEC_AV1);
} }
SupportedCodecs WidevineKeySystemProperties::GetSupportedHwSecureCodecs() SupportedCodecs WidevineKeySystemProperties::GetSupportedHwSecureCodecs()
const { const {
// Disable AV1 if feature kWidevineAv1 is disabled return OverrideAv1SupportIfNeeded(hw_secure_codecs_);
return base::FeatureList::IsEnabled(media::kWidevineAv1)
? hw_secure_codecs_
: (hw_secure_codecs_ & ~media::EME_CODEC_AV1);
} }
EmeConfigRule WidevineKeySystemProperties::GetRobustnessConfigRule( EmeConfigRule WidevineKeySystemProperties::GetRobustnessConfigRule(
......
...@@ -348,6 +348,12 @@ const base::Feature kHardwareSecureDecryption{ ...@@ -348,6 +348,12 @@ const base::Feature kHardwareSecureDecryption{
const base::Feature kWidevineAv1{"WidevineAv1", const base::Feature kWidevineAv1{"WidevineAv1",
base::FEATURE_ENABLED_BY_DEFAULT}; base::FEATURE_ENABLED_BY_DEFAULT};
// Forces to support encrypted AV1 in EME requestMediaKeySystemAccess() query by
// Widevine key system even if the underlying Widevine CDM doesn't support it.
// No effect if "WidevineAv1" feature is disabled.
const base::Feature kWidevineAv1ForceSupportForTesting{
"WidevineAv1ForceSupportForTesting", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables handling of hardware media keys for controlling media. // Enables handling of hardware media keys for controlling media.
const base::Feature kHardwareMediaKeyHandling{ const base::Feature kHardwareMediaKeyHandling{
"HardwareMediaKeyHandling", "HardwareMediaKeyHandling",
......
...@@ -140,6 +140,7 @@ MEDIA_EXPORT extern const base::Feature kVaapiVP9Encoder; ...@@ -140,6 +140,7 @@ MEDIA_EXPORT extern const base::Feature kVaapiVP9Encoder;
MEDIA_EXPORT extern const base::Feature kVp9kSVCHWDecoding; MEDIA_EXPORT extern const base::Feature kVp9kSVCHWDecoding;
MEDIA_EXPORT extern const base::Feature kVideoBlitColorAccuracy; MEDIA_EXPORT extern const base::Feature kVideoBlitColorAccuracy;
MEDIA_EXPORT extern const base::Feature kWidevineAv1; MEDIA_EXPORT extern const base::Feature kWidevineAv1;
MEDIA_EXPORT extern const base::Feature kWidevineAv1ForceSupportForTesting;
#if defined(OS_ANDROID) #if defined(OS_ANDROID)
MEDIA_EXPORT extern const base::Feature kMediaControlsExpandGesture; MEDIA_EXPORT extern const base::Feature kMediaControlsExpandGesture;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment