Commit 62579169 authored by xhwang@chromium.org's avatar xhwang@chromium.org

Encrypted Media: Add VP9 support to IsTypeSupported().

BUG=361318
TEST=Add VP9 to unittests.

Review URL: https://codereview.chromium.org/252513005

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@267047 0039d316-1c4b-4281-b951-d872f2087c98
parent c47f86fa
...@@ -21,6 +21,10 @@ ...@@ -21,6 +21,10 @@
#include "widevine_cdm_version.h" // In SHARED_INTERMEDIATE_DIR. #include "widevine_cdm_version.h" // In SHARED_INTERMEDIATE_DIR.
#if defined(OS_ANDROID)
#error This file needs to be updated to run on Android.
#endif
#if defined(USE_PROPRIETARY_CODECS) #if defined(USE_PROPRIETARY_CODECS)
#define EXPECT_PROPRIETARY EXPECT_TRUE #define EXPECT_PROPRIETARY EXPECT_TRUE
#else #else
...@@ -86,6 +90,8 @@ const char kWidevineAlphaHr[] = "com.widevine.alpha.hr"; ...@@ -86,6 +90,8 @@ const char kWidevineAlphaHr[] = "com.widevine.alpha.hr";
const char kWidevineAlphaHrNonCompositing[] = const char kWidevineAlphaHrNonCompositing[] =
"com.widevine.alpha.hrnoncompositing"; "com.widevine.alpha.hrnoncompositing";
// TODO(xhwang): Simplify this test! See http://crbug.com/367158
class EncryptedMediaIsTypeSupportedTest : public InProcessBrowserTest { class EncryptedMediaIsTypeSupportedTest : public InProcessBrowserTest {
protected: protected:
EncryptedMediaIsTypeSupportedTest() EncryptedMediaIsTypeSupportedTest()
...@@ -94,11 +100,18 @@ class EncryptedMediaIsTypeSupportedTest : public InProcessBrowserTest { ...@@ -94,11 +100,18 @@ class EncryptedMediaIsTypeSupportedTest : public InProcessBrowserTest {
vp80_codec_.push_back("vp8.0"); vp80_codec_.push_back("vp8.0");
vp9_codec_.push_back("vp9");
vp90_codec_.push_back("vp9.0");
vorbis_codec_.push_back("vorbis"); vorbis_codec_.push_back("vorbis");
vp8_and_vorbis_codecs_.push_back("vp8"); vp8_and_vorbis_codecs_.push_back("vp8");
vp8_and_vorbis_codecs_.push_back("vorbis"); vp8_and_vorbis_codecs_.push_back("vorbis");
vp9_and_vorbis_codecs_.push_back("vp9");
vp9_and_vorbis_codecs_.push_back("vorbis");
avc1_codec_.push_back("avc1"); avc1_codec_.push_back("avc1");
avc1_extended_codec_.push_back("avc1.4D400C"); avc1_extended_codec_.push_back("avc1.4D400C");
...@@ -127,10 +140,15 @@ class EncryptedMediaIsTypeSupportedTest : public InProcessBrowserTest { ...@@ -127,10 +140,15 @@ class EncryptedMediaIsTypeSupportedTest : public InProcessBrowserTest {
const CodecVector& no_codecs() const { return no_codecs_; } const CodecVector& no_codecs() const { return no_codecs_; }
const CodecVector& vp8_codec() const { return vp8_codec_; } const CodecVector& vp8_codec() const { return vp8_codec_; }
const CodecVector& vp80_codec() const { return vp80_codec_; } const CodecVector& vp80_codec() const { return vp80_codec_; }
const CodecVector& vp9_codec() const { return vp9_codec_; }
const CodecVector& vp90_codec() const { return vp90_codec_; }
const CodecVector& vorbis_codec() const { return vorbis_codec_; } const CodecVector& vorbis_codec() const { return vorbis_codec_; }
const CodecVector& vp8_and_vorbis_codecs() const { const CodecVector& vp8_and_vorbis_codecs() const {
return vp8_and_vorbis_codecs_; return vp8_and_vorbis_codecs_;
} }
const CodecVector& vp9_and_vorbis_codecs() const {
return vp9_and_vorbis_codecs_;
}
const CodecVector& avc1_codec() const { return avc1_codec_; } const CodecVector& avc1_codec() const { return avc1_codec_; }
const CodecVector& avc1_extended_codec() const { const CodecVector& avc1_extended_codec() const {
return avc1_extended_codec_; return avc1_extended_codec_;
...@@ -244,8 +262,11 @@ class EncryptedMediaIsTypeSupportedTest : public InProcessBrowserTest { ...@@ -244,8 +262,11 @@ class EncryptedMediaIsTypeSupportedTest : public InProcessBrowserTest {
const CodecVector no_codecs_; const CodecVector no_codecs_;
CodecVector vp8_codec_; CodecVector vp8_codec_;
CodecVector vp80_codec_; CodecVector vp80_codec_;
CodecVector vp9_codec_;
CodecVector vp90_codec_;
CodecVector vorbis_codec_; CodecVector vorbis_codec_;
CodecVector vp8_and_vorbis_codecs_; CodecVector vp8_and_vorbis_codecs_;
CodecVector vp9_and_vorbis_codecs_;
CodecVector avc1_codec_; CodecVector avc1_codec_;
CodecVector avc1_extended_codec_; CodecVector avc1_extended_codec_;
CodecVector avc1_dot_codec_; CodecVector avc1_dot_codec_;
...@@ -422,6 +443,12 @@ IN_PROC_BROWSER_TEST_F(EncryptedMediaIsTypeSupportedTest, ...@@ -422,6 +443,12 @@ IN_PROC_BROWSER_TEST_F(EncryptedMediaIsTypeSupportedTest,
"video/webm", vp80_codec(), kPrefixedClearKey)); "video/webm", vp80_codec(), kPrefixedClearKey));
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType( EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
"video/webm", vp8_and_vorbis_codecs(), kPrefixedClearKey)); "video/webm", vp8_and_vorbis_codecs(), kPrefixedClearKey));
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
"video/webm", vp9_codec(), kPrefixedClearKey));
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
"video/webm", vp90_codec(), kPrefixedClearKey));
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
"video/webm", vp9_and_vorbis_codecs(), kPrefixedClearKey));
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType( EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
"video/webm", vorbis_codec(), kPrefixedClearKey)); "video/webm", vorbis_codec(), kPrefixedClearKey));
...@@ -444,6 +471,10 @@ IN_PROC_BROWSER_TEST_F(EncryptedMediaIsTypeSupportedTest, ...@@ -444,6 +471,10 @@ IN_PROC_BROWSER_TEST_F(EncryptedMediaIsTypeSupportedTest,
"audio/webm", vp8_codec(), kPrefixedClearKey)); "audio/webm", vp8_codec(), kPrefixedClearKey));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType( EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
"audio/webm", vp8_and_vorbis_codecs(), kPrefixedClearKey)); "audio/webm", vp8_and_vorbis_codecs(), kPrefixedClearKey));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
"audio/webm", vp9_codec(), kPrefixedClearKey));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
"audio/webm", vp9_and_vorbis_codecs(), kPrefixedClearKey));
// Non-Webm codec. // Non-Webm codec.
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType( EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
...@@ -597,6 +628,12 @@ IN_PROC_BROWSER_TEST_F( ...@@ -597,6 +628,12 @@ IN_PROC_BROWSER_TEST_F(
"video/webm", vp80_codec(), kExternalClearKey)); "video/webm", vp80_codec(), kExternalClearKey));
EXPECT_ECK(IsSupportedKeySystemWithMediaMimeType( EXPECT_ECK(IsSupportedKeySystemWithMediaMimeType(
"video/webm", vp8_and_vorbis_codecs(), kExternalClearKey)); "video/webm", vp8_and_vorbis_codecs(), kExternalClearKey));
EXPECT_ECK(IsSupportedKeySystemWithMediaMimeType(
"video/webm", vp9_codec(), kExternalClearKey));
EXPECT_ECK(IsSupportedKeySystemWithMediaMimeType(
"video/webm", vp90_codec(), kExternalClearKey));
EXPECT_ECK(IsSupportedKeySystemWithMediaMimeType(
"video/webm", vp9_and_vorbis_codecs(), kExternalClearKey));
EXPECT_ECK(IsSupportedKeySystemWithMediaMimeType( EXPECT_ECK(IsSupportedKeySystemWithMediaMimeType(
"video/webm", vorbis_codec(), kExternalClearKey)); "video/webm", vorbis_codec(), kExternalClearKey));
...@@ -619,6 +656,10 @@ IN_PROC_BROWSER_TEST_F( ...@@ -619,6 +656,10 @@ IN_PROC_BROWSER_TEST_F(
"audio/webm", vp8_codec(), kExternalClearKey)); "audio/webm", vp8_codec(), kExternalClearKey));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType( EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
"audio/webm", vp8_and_vorbis_codecs(), kExternalClearKey)); "audio/webm", vp8_and_vorbis_codecs(), kExternalClearKey));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
"audio/webm", vp9_codec(), kExternalClearKey));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
"audio/webm", vp9_and_vorbis_codecs(), kExternalClearKey));
// Non-Webm codec. // Non-Webm codec.
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType( EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
...@@ -757,6 +798,9 @@ IN_PROC_BROWSER_TEST_F(EncryptedMediaIsTypeSupportedWidevineTest, ...@@ -757,6 +798,9 @@ IN_PROC_BROWSER_TEST_F(EncryptedMediaIsTypeSupportedWidevineTest,
std::string(), no_codecs(), "com.widevine.alpha.foo")); std::string(), no_codecs(), "com.widevine.alpha.foo"));
} }
// TODO(xhwang): Add VP9 Widevine tests after VP9 is supported by Widevine CDM.
// See http://crbug.com/361318
IN_PROC_BROWSER_TEST_F(EncryptedMediaIsTypeSupportedWidevineTest, IN_PROC_BROWSER_TEST_F(EncryptedMediaIsTypeSupportedWidevineTest,
IsSupportedKeySystemWithMediaMimeType_Widevine_WebM) { IsSupportedKeySystemWithMediaMimeType_Widevine_WebM) {
// Valid video types. // Valid video types.
......
...@@ -35,6 +35,7 @@ struct CodecInfo { ...@@ -35,6 +35,7 @@ struct CodecInfo {
const CodecInfo kCodecsToQuery[] = { const CodecInfo kCodecsToQuery[] = {
{content::EME_CODEC_WEBM_VORBIS, CODEC_AUDIO, "vorbis", "video/webm"}, {content::EME_CODEC_WEBM_VORBIS, CODEC_AUDIO, "vorbis", "video/webm"},
{content::EME_CODEC_WEBM_VP8, CODEC_VIDEO, "vp8", "video/webm"}, {content::EME_CODEC_WEBM_VP8, CODEC_VIDEO, "vp8", "video/webm"},
{content::EME_CODEC_WEBM_VP9, CODEC_VIDEO, "vp9", "video/webm"},
#if defined(USE_PROPRIETARY_CODECS) #if defined(USE_PROPRIETARY_CODECS)
{content::EME_CODEC_MP4_AAC, CODEC_AUDIO, "mp4a", "video/mp4"}, {content::EME_CODEC_MP4_AAC, CODEC_AUDIO, "mp4a", "video/mp4"},
{content::EME_CODEC_MP4_AVC1, CODEC_VIDEO, "avc1", "video/mp4"} {content::EME_CODEC_MP4_AVC1, CODEC_VIDEO, "avc1", "video/mp4"}
......
...@@ -279,6 +279,8 @@ void ComputeBuiltInPlugins(std::vector<content::PepperPluginInfo>* plugins) { ...@@ -279,6 +279,8 @@ void ComputeBuiltInPlugins(std::vector<content::PepperPluginInfo>* plugins) {
std::vector<std::string> codecs; std::vector<std::string> codecs;
codecs.push_back(kCdmSupportedCodecVorbis); codecs.push_back(kCdmSupportedCodecVorbis);
codecs.push_back(kCdmSupportedCodecVp8); codecs.push_back(kCdmSupportedCodecVp8);
// TODO(xhwang): Add VP9 when it's supported by Widevine CDM.
// See http://crbug.com/361318
#if defined(USE_PROPRIETARY_CODECS) #if defined(USE_PROPRIETARY_CODECS)
// TODO(ddorwin): Rename these macros to reflect their real meaning: whether the // TODO(ddorwin): Rename these macros to reflect their real meaning: whether the
// CDM Chrome was built [and shipped] with support these types. // CDM Chrome was built [and shipped] with support these types.
......
...@@ -220,6 +220,8 @@ static void AddPepperBasedWidevine( ...@@ -220,6 +220,8 @@ static void AddPepperBasedWidevine(
supported_codecs |= content::EME_CODEC_WEBM_VORBIS; supported_codecs |= content::EME_CODEC_WEBM_VORBIS;
if (codecs[i] == kCdmSupportedCodecVp8) if (codecs[i] == kCdmSupportedCodecVp8)
supported_codecs |= content::EME_CODEC_WEBM_VP8; supported_codecs |= content::EME_CODEC_WEBM_VP8;
if (codecs[i] == kCdmSupportedCodecVp9)
supported_codecs |= content::EME_CODEC_WEBM_VP9;
#if defined(USE_PROPRIETARY_CODECS) #if defined(USE_PROPRIETARY_CODECS)
if (codecs[i] == kCdmSupportedCodecAac) if (codecs[i] == kCdmSupportedCodecAac)
supported_codecs |= content::EME_CODEC_MP4_AAC; supported_codecs |= content::EME_CODEC_MP4_AAC;
......
...@@ -15,12 +15,13 @@ enum EmeCodec { ...@@ -15,12 +15,13 @@ enum EmeCodec {
EME_CODEC_WEBM_VORBIS = 1 << 0, EME_CODEC_WEBM_VORBIS = 1 << 0,
EME_CODEC_WEBM_AUDIO_ALL = EME_CODEC_WEBM_VORBIS, EME_CODEC_WEBM_AUDIO_ALL = EME_CODEC_WEBM_VORBIS,
EME_CODEC_WEBM_VP8 = 1 << 1, EME_CODEC_WEBM_VP8 = 1 << 1,
EME_CODEC_WEBM_VIDEO_ALL = EME_CODEC_WEBM_VP8, EME_CODEC_WEBM_VP9 = 1 << 2,
EME_CODEC_WEBM_VIDEO_ALL = (EME_CODEC_WEBM_VP8 | EME_CODEC_WEBM_VP9),
EME_CODEC_WEBM_ALL = (EME_CODEC_WEBM_AUDIO_ALL | EME_CODEC_WEBM_VIDEO_ALL), EME_CODEC_WEBM_ALL = (EME_CODEC_WEBM_AUDIO_ALL | EME_CODEC_WEBM_VIDEO_ALL),
#if defined(USE_PROPRIETARY_CODECS) #if defined(USE_PROPRIETARY_CODECS)
EME_CODEC_MP4_AAC = 1 << 2, EME_CODEC_MP4_AAC = 1 << 3,
EME_CODEC_MP4_AUDIO_ALL = EME_CODEC_MP4_AAC, EME_CODEC_MP4_AUDIO_ALL = EME_CODEC_MP4_AAC,
EME_CODEC_MP4_AVC1 = 1 << 3, EME_CODEC_MP4_AVC1 = 1 << 4,
EME_CODEC_MP4_VIDEO_ALL = EME_CODEC_MP4_AVC1, EME_CODEC_MP4_VIDEO_ALL = EME_CODEC_MP4_AVC1,
EME_CODEC_MP4_ALL = (EME_CODEC_MP4_AUDIO_ALL | EME_CODEC_MP4_VIDEO_ALL), EME_CODEC_MP4_ALL = (EME_CODEC_MP4_AUDIO_ALL | EME_CODEC_MP4_VIDEO_ALL),
EME_CODEC_ALL = (EME_CODEC_WEBM_ALL | EME_CODEC_MP4_ALL), EME_CODEC_ALL = (EME_CODEC_WEBM_ALL | EME_CODEC_MP4_ALL),
......
...@@ -50,6 +50,8 @@ CodecMask kCodecMasks[] = { ...@@ -50,6 +50,8 @@ CodecMask kCodecMasks[] = {
{"vorbis", EME_CODEC_WEBM_VORBIS}, {"vorbis", EME_CODEC_WEBM_VORBIS},
{"vp8", EME_CODEC_WEBM_VP8}, {"vp8", EME_CODEC_WEBM_VP8},
{"vp8.0", EME_CODEC_WEBM_VP8}, {"vp8.0", EME_CODEC_WEBM_VP8},
{"vp9", EME_CODEC_WEBM_VP9},
{"vp9.0", EME_CODEC_WEBM_VP9},
#if defined(USE_PROPRIETARY_CODECS) #if defined(USE_PROPRIETARY_CODECS)
{"mp4a", EME_CODEC_MP4_AAC}, {"mp4a", EME_CODEC_MP4_AAC},
{"avc1", EME_CODEC_MP4_AVC1}, {"avc1", EME_CODEC_MP4_AVC1},
...@@ -60,11 +62,18 @@ CodecMask kCodecMasks[] = { ...@@ -60,11 +62,18 @@ CodecMask kCodecMasks[] = {
static void AddClearKey(std::vector<KeySystemInfo>* concrete_key_systems) { static void AddClearKey(std::vector<KeySystemInfo>* concrete_key_systems) {
KeySystemInfo info(kClearKeyKeySystem); KeySystemInfo info(kClearKeyKeySystem);
// On Android, Vorbis, VP8, AAC and AVC1 are supported in all MediaCodec // On Android, Vorbis, VP8, AAC and AVC1 are supported in MediaCodec:
// implementations:
// http://developer.android.com/guide/appendix/media-formats.html // http://developer.android.com/guide/appendix/media-formats.html
// VP9 support is device dependent.
info.supported_codecs = EME_CODEC_WEBM_ALL; info.supported_codecs = EME_CODEC_WEBM_ALL;
#if defined(OS_ANDROID)
// Temporarily disable VP9 support for Android.
// TODO(xhwang): Use mime_util.h to query VP9 support on Android.
info.supported_codecs &= ~EME_CODEC_WEBM_VP9;
#endif // defined(OS_ANDROID)
#if defined(USE_PROPRIETARY_CODECS) #if defined(USE_PROPRIETARY_CODECS)
info.supported_codecs |= EME_CODEC_MP4_ALL; info.supported_codecs |= EME_CODEC_MP4_ALL;
#endif // defined(USE_PROPRIETARY_CODECS) #endif // defined(USE_PROPRIETARY_CODECS)
......
...@@ -120,11 +120,18 @@ class KeySystemsTest : public testing::Test { ...@@ -120,11 +120,18 @@ class KeySystemsTest : public testing::Test {
vp80_codec_.push_back("vp8.0"); vp80_codec_.push_back("vp8.0");
vp9_codec_.push_back("vp9");
vp90_codec_.push_back("vp9.0");
vorbis_codec_.push_back("vorbis"); vorbis_codec_.push_back("vorbis");
vp8_and_vorbis_codecs_.push_back("vp8"); vp8_and_vorbis_codecs_.push_back("vp8");
vp8_and_vorbis_codecs_.push_back("vorbis"); vp8_and_vorbis_codecs_.push_back("vorbis");
vp9_and_vorbis_codecs_.push_back("vp9");
vp9_and_vorbis_codecs_.push_back("vorbis");
foovideo_codec_.push_back("foovideo"); foovideo_codec_.push_back("foovideo");
foovideo_extended_codec_.push_back("foovideo.4D400C"); foovideo_extended_codec_.push_back("foovideo.4D400C");
...@@ -167,10 +174,17 @@ class KeySystemsTest : public testing::Test { ...@@ -167,10 +174,17 @@ class KeySystemsTest : public testing::Test {
const CodecVector& vp8_codec() const { return vp8_codec_; } const CodecVector& vp8_codec() const { return vp8_codec_; }
const CodecVector& vp80_codec() const { return vp80_codec_; } const CodecVector& vp80_codec() const { return vp80_codec_; }
const CodecVector& vp9_codec() const { return vp9_codec_; }
const CodecVector& vp90_codec() const { return vp90_codec_; }
const CodecVector& vorbis_codec() const { return vorbis_codec_; } const CodecVector& vorbis_codec() const { return vorbis_codec_; }
const CodecVector& vp8_and_vorbis_codecs() const { const CodecVector& vp8_and_vorbis_codecs() const {
return vp8_and_vorbis_codecs_; return vp8_and_vorbis_codecs_;
} }
const CodecVector& vp9_and_vorbis_codecs() const {
return vp9_and_vorbis_codecs_;
}
const CodecVector& foovideo_codec() const { return foovideo_codec_; } const CodecVector& foovideo_codec() const { return foovideo_codec_; }
const CodecVector& foovideo_extended_codec() const { const CodecVector& foovideo_extended_codec() const {
...@@ -188,11 +202,13 @@ class KeySystemsTest : public testing::Test { ...@@ -188,11 +202,13 @@ class KeySystemsTest : public testing::Test {
private: private:
const CodecVector no_codecs_; const CodecVector no_codecs_;
CodecVector vp8_codec_; CodecVector vp8_codec_;
CodecVector vp80_codec_; CodecVector vp80_codec_;
CodecVector vp9_codec_;
CodecVector vp90_codec_;
CodecVector vorbis_codec_; CodecVector vorbis_codec_;
CodecVector vp8_and_vorbis_codecs_; CodecVector vp8_and_vorbis_codecs_;
CodecVector vp9_and_vorbis_codecs_;
CodecVector foovideo_codec_; CodecVector foovideo_codec_;
CodecVector foovideo_extended_codec_; CodecVector foovideo_extended_codec_;
...@@ -282,6 +298,12 @@ TEST_F(KeySystemsTest, ...@@ -282,6 +298,12 @@ TEST_F(KeySystemsTest,
kVideoWebM, vp80_codec(), kUsesAes)); kVideoWebM, vp80_codec(), kUsesAes));
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType( EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
kVideoWebM, vp8_and_vorbis_codecs(), kUsesAes)); kVideoWebM, vp8_and_vorbis_codecs(), kUsesAes));
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
kVideoWebM, vp9_codec(), kUsesAes));
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
kVideoWebM, vp90_codec(), kUsesAes));
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
kVideoWebM, vp9_and_vorbis_codecs(), kUsesAes));
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType( EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
kVideoWebM, vorbis_codec(), kUsesAes)); kVideoWebM, vorbis_codec(), kUsesAes));
...@@ -304,6 +326,10 @@ TEST_F(KeySystemsTest, ...@@ -304,6 +326,10 @@ TEST_F(KeySystemsTest,
kAudioWebM, vp8_codec(), kUsesAes)); kAudioWebM, vp8_codec(), kUsesAes));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType( EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
kAudioWebM, vp8_and_vorbis_codecs(), kUsesAes)); kAudioWebM, vp8_and_vorbis_codecs(), kUsesAes));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
kAudioWebM, vp9_codec(), kUsesAes));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
kAudioWebM, vp9_and_vorbis_codecs(), kUsesAes));
// Non-Webm codec. // Non-Webm codec.
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType( EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
...@@ -476,6 +502,12 @@ TEST_F( ...@@ -476,6 +502,12 @@ TEST_F(
kVideoWebM, vp80_codec(), kExternal)); kVideoWebM, vp80_codec(), kExternal));
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType( EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
kVideoWebM, vp8_and_vorbis_codecs(), kExternal)); kVideoWebM, vp8_and_vorbis_codecs(), kExternal));
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
kVideoWebM, vp9_codec(), kExternal));
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
kVideoWebM, vp90_codec(), kExternal));
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
kVideoWebM, vp9_and_vorbis_codecs(), kExternal));
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType( EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
kVideoWebM, vorbis_codec(), kExternal)); kVideoWebM, vorbis_codec(), kExternal));
...@@ -488,6 +520,12 @@ TEST_F( ...@@ -488,6 +520,12 @@ TEST_F(
kVideoWebM, vp80_codec(), kExternalParent)); kVideoWebM, vp80_codec(), kExternalParent));
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType( EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
kVideoWebM, vp8_and_vorbis_codecs(), kExternalParent)); kVideoWebM, vp8_and_vorbis_codecs(), kExternalParent));
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
kVideoWebM, vp9_codec(), kExternalParent));
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
kVideoWebM, vp90_codec(), kExternalParent));
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
kVideoWebM, vp9_and_vorbis_codecs(), kExternalParent));
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType( EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
kVideoWebM, vorbis_codec(), kExternalParent)); kVideoWebM, vorbis_codec(), kExternalParent));
...@@ -516,6 +554,10 @@ TEST_F( ...@@ -516,6 +554,10 @@ TEST_F(
kAudioWebM, vp8_codec(), kExternal)); kAudioWebM, vp8_codec(), kExternal));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType( EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
kAudioWebM, vp8_and_vorbis_codecs(), kExternal)); kAudioWebM, vp8_and_vorbis_codecs(), kExternal));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
kAudioWebM, vp9_codec(), kExternal));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
kAudioWebM, vp9_and_vorbis_codecs(), kExternal));
// Non-Webm codec. // Non-Webm codec.
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType( EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
......
...@@ -51,6 +51,7 @@ const char kCdmSupportedCodecsParamName[] = "codecs"; ...@@ -51,6 +51,7 @@ const char kCdmSupportedCodecsParamName[] = "codecs";
const char kCdmSupportedCodecsValueDelimiter = ','; const char kCdmSupportedCodecsValueDelimiter = ',';
const char kCdmSupportedCodecVorbis[] = "vorbis"; const char kCdmSupportedCodecVorbis[] = "vorbis";
const char kCdmSupportedCodecVp8[] = "vp8"; const char kCdmSupportedCodecVp8[] = "vp8";
const char kCdmSupportedCodecVp9[] = "vp9.0";
#if defined(USE_PROPRIETARY_CODECS) #if defined(USE_PROPRIETARY_CODECS)
const char kCdmSupportedCodecAac[] = "aac"; const char kCdmSupportedCodecAac[] = "aac";
const char kCdmSupportedCodecAvc1[] = "avc1"; const char kCdmSupportedCodecAvc1[] = "avc1";
......
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