summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsandersd <sandersd@chromium.org>2014-11-26 12:39:38 -0800
committerCommit bot <commit-bot@chromium.org>2014-11-26 20:39:53 +0000
commit5ec6dcf5f219f913f7649f2ec4a6bd039cecb6bc (patch)
tree69bdc08db135a875dd763b9527620f5d884d03ce
parent6f26efa74ce5b7c8cb12d599eabfd2041fbbd41b (diff)
downloadchromium_src-5ec6dcf5f219f913f7649f2ec4a6bd039cecb6bc.zip
chromium_src-5ec6dcf5f219f913f7649f2ec4a6bd039cecb6bc.tar.gz
chromium_src-5ec6dcf5f219f913f7649f2ec4a6bd039cecb6bc.tar.bz2
Advertise Opus support in EME.
BUG=417398 Review URL: https://codereview.chromium.org/755143004 Cr-Commit-Position: refs/heads/master@{#305878}
-rw-r--r--chrome/browser/media/encrypted_media_browsertest.cc12
-rw-r--r--chrome/browser/media/encrypted_media_istypesupported_browsertest.cc68
-rw-r--r--chrome/renderer/media/chrome_key_systems.cc10
-rw-r--r--components/cdm/browser/cdm_message_filter_android.cc1
-rw-r--r--content/browser/media/encrypted_media_browsertest.cc24
-rw-r--r--media/base/eme_constants.h13
-rw-r--r--media/base/key_systems.cc5
7 files changed, 125 insertions, 8 deletions
diff --git a/chrome/browser/media/encrypted_media_browsertest.cc b/chrome/browser/media/encrypted_media_browsertest.cc
index ae27e70..e119636 100644
--- a/chrome/browser/media/encrypted_media_browsertest.cc
+++ b/chrome/browser/media/encrypted_media_browsertest.cc
@@ -555,6 +555,18 @@ IN_PROC_BROWSER_TEST_P(EncryptedMediaTest, Playback_VP9Video_WebM) {
TestSimplePlayback("bear-320x240-v-vp9_enc-v.webm", kWebMVP9VideoOnly);
}
+IN_PROC_BROWSER_TEST_P(EncryptedMediaTest, Playback_AudioOnly_WebM_Opus) {
+ TestSimplePlayback("bear-320x240-opus-a_enc-a.webm", kWebMAudioOnly);
+}
+
+IN_PROC_BROWSER_TEST_P(EncryptedMediaTest, Playback_VideoAudio_WebM_Opus) {
+ TestSimplePlayback("bear-320x240-opus-av_enc-av.webm", kWebMAudioVideo);
+}
+
+IN_PROC_BROWSER_TEST_P(EncryptedMediaTest, Playback_VideoClearAudio_WebM_Opus) {
+ TestSimplePlayback("bear-320x240-opus-av_enc-v.webm", kWebMAudioVideo);
+}
+
IN_PROC_BROWSER_TEST_P(EncryptedMediaTest, InvalidResponseKeyError) {
RunInvalidResponseTest();
}
diff --git a/chrome/browser/media/encrypted_media_istypesupported_browsertest.cc b/chrome/browser/media/encrypted_media_istypesupported_browsertest.cc
index d725ad1..7d13c04 100644
--- a/chrome/browser/media/encrypted_media_istypesupported_browsertest.cc
+++ b/chrome/browser/media/encrypted_media_istypesupported_browsertest.cc
@@ -106,8 +106,16 @@ class EncryptedMediaIsTypeSupportedTest : public InProcessBrowserTest {
vp90_codec_.push_back("vp9.0");
+ opus_codec_.push_back("opus");
+
vorbis_codec_.push_back("vorbis");
+ vp8_and_opus_codecs_.push_back("vp8");
+ vp8_and_opus_codecs_.push_back("opus");
+
+ vp9_and_opus_codecs_.push_back("vp9");
+ vp9_and_opus_codecs_.push_back("opus");
+
vp8_and_vorbis_codecs_.push_back("vp8");
vp8_and_vorbis_codecs_.push_back("vorbis");
@@ -157,7 +165,14 @@ class EncryptedMediaIsTypeSupportedTest : public InProcessBrowserTest {
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& opus_codec() const { return opus_codec_; }
const CodecVector& vorbis_codec() const { return vorbis_codec_; }
+ const CodecVector& vp8_and_opus_codecs() const {
+ return vp8_and_opus_codecs_;
+ }
+ const CodecVector& vp9_and_opus_codecs() const {
+ return vp9_and_opus_codecs_;
+ }
const CodecVector& vp8_and_vorbis_codecs() const {
return vp8_and_vorbis_codecs_;
}
@@ -298,7 +313,10 @@ class EncryptedMediaIsTypeSupportedTest : public InProcessBrowserTest {
CodecVector vp80_codec_;
CodecVector vp9_codec_;
CodecVector vp90_codec_;
+ CodecVector opus_codec_;
CodecVector vorbis_codec_;
+ CodecVector vp8_and_opus_codecs_;
+ CodecVector vp9_and_opus_codecs_;
CodecVector vp8_and_vorbis_codecs_;
CodecVector vp9_and_vorbis_codecs_;
CodecVector avc1_codec_;
@@ -481,12 +499,18 @@ IN_PROC_BROWSER_TEST_F(EncryptedMediaIsTypeSupportedTest,
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
"video/webm", vp80_codec(), kPrefixedClearKey));
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ "video/webm", vp8_and_opus_codecs(), kPrefixedClearKey));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
"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_opus_codecs(), kPrefixedClearKey));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ "video/webm", opus_codec(), kPrefixedClearKey));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
"video/webm", vp9_and_vorbis_codecs(), kPrefixedClearKey));
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
"video/webm", vorbis_codec(), kPrefixedClearKey));
@@ -507,16 +531,22 @@ IN_PROC_BROWSER_TEST_F(EncryptedMediaIsTypeSupportedTest,
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
"audio/webm", no_codecs(), kPrefixedClearKey));
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ "audio/webm", opus_codec(), kPrefixedClearKey));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
"audio/webm", vorbis_codec(), kPrefixedClearKey));
// Non-audio codecs.
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
"audio/webm", vp8_codec(), kPrefixedClearKey));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
+ "audio/webm", vp8_and_opus_codecs(), kPrefixedClearKey));
+ EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
"audio/webm", vp8_and_vorbis_codecs(), kPrefixedClearKey));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
"audio/webm", vp9_codec(), kPrefixedClearKey));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
+ "audio/webm", vp9_and_opus_codecs(), kPrefixedClearKey));
+ EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
"audio/webm", vp9_and_vorbis_codecs(), kPrefixedClearKey));
// Non-Webm codec.
@@ -597,6 +627,8 @@ IN_PROC_BROWSER_TEST_F(EncryptedMediaIsTypeSupportedTest,
// Invalid or Non-MP4 codec.
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
+ "audio/mp4", opus_codec(), kPrefixedClearKey));
+ EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
"audio/mp4", vorbis_codec(), kPrefixedClearKey));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
"audio/mp4", mp4a_invalid_no_extension(), kPrefixedClearKey));
@@ -692,12 +724,18 @@ IN_PROC_BROWSER_TEST_F(
EXPECT_ECK(IsSupportedKeySystemWithMediaMimeType(
"video/webm", vp80_codec(), kExternalClearKey));
EXPECT_ECK(IsSupportedKeySystemWithMediaMimeType(
+ "video/webm", vp8_and_opus_codecs(), kExternalClearKey));
+ EXPECT_ECK(IsSupportedKeySystemWithMediaMimeType(
"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_opus_codecs(), kExternalClearKey));
+ EXPECT_ECK(IsSupportedKeySystemWithMediaMimeType(
+ "video/webm", opus_codec(), kExternalClearKey));
+ EXPECT_ECK(IsSupportedKeySystemWithMediaMimeType(
"video/webm", vp9_and_vorbis_codecs(), kExternalClearKey));
EXPECT_ECK(IsSupportedKeySystemWithMediaMimeType(
"video/webm", vorbis_codec(), kExternalClearKey));
@@ -718,16 +756,22 @@ IN_PROC_BROWSER_TEST_F(
EXPECT_ECK(IsSupportedKeySystemWithMediaMimeType(
"audio/webm", no_codecs(), kExternalClearKey));
EXPECT_ECK(IsSupportedKeySystemWithMediaMimeType(
+ "audio/webm", opus_codec(), kExternalClearKey));
+ EXPECT_ECK(IsSupportedKeySystemWithMediaMimeType(
"audio/webm", vorbis_codec(), kExternalClearKey));
// Non-audio codecs.
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
"audio/webm", vp8_codec(), kExternalClearKey));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
+ "audio/webm", vp8_and_opus_codecs(), kExternalClearKey));
+ EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
"audio/webm", vp8_and_vorbis_codecs(), kExternalClearKey));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
"audio/webm", vp9_codec(), kExternalClearKey));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
+ "audio/webm", vp9_and_opus_codecs(), kExternalClearKey));
+ EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
"audio/webm", vp9_and_vorbis_codecs(), kExternalClearKey));
// Non-Webm codec.
@@ -809,6 +853,8 @@ IN_PROC_BROWSER_TEST_F(
// Invalid or Non-MP4 codec.
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
+ "audio/mp4", opus_codec(), kExternalClearKey));
+ EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
"audio/mp4", vorbis_codec(), kExternalClearKey));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
"audio/mp4", mp4a_invalid_no_extension(), kExternalClearKey));
@@ -899,12 +945,18 @@ IN_PROC_BROWSER_TEST_F(EncryptedMediaIsTypeSupportedWidevineTest,
EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
"video/webm", vp80_codec(), kWidevineAlpha));
EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
+ "video/webm", vp8_and_opus_codecs(), kWidevineAlpha));
+ EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
"video/webm", vp8_and_vorbis_codecs(), kWidevineAlpha));
EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
"video/webm", vp9_codec(), kWidevineAlpha));
EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
"video/webm", vp90_codec(), kWidevineAlpha));
EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
+ "video/webm", vp9_and_opus_codecs(), kWidevineAlpha));
+ EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
+ "video/webm", opus_codec(), kWidevineAlpha));
+ EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
"video/webm", vp9_and_vorbis_codecs(), kWidevineAlpha));
EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
"video/webm", vorbis_codec(), kWidevineAlpha));
@@ -917,12 +969,18 @@ IN_PROC_BROWSER_TEST_F(EncryptedMediaIsTypeSupportedWidevineTest,
EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
"video/webm", vp80_codec(), kWidevine));
EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
+ "video/webm", vp8_and_opus_codecs(), kWidevine));
+ EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
"video/webm", vp8_and_vorbis_codecs(), kWidevine));
EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
"video/webm", vp9_codec(), kWidevine));
EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
"video/webm", vp90_codec(), kWidevine));
EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
+ "video/webm", vp9_and_opus_codecs(), kWidevine));
+ EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
+ "video/webm", opus_codec(), kWidevine));
+ EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
"video/webm", vp9_and_vorbis_codecs(), kWidevine));
EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
"video/webm", vorbis_codec(), kWidevine));
@@ -943,22 +1001,30 @@ IN_PROC_BROWSER_TEST_F(EncryptedMediaIsTypeSupportedWidevineTest,
EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
"audio/webm", no_codecs(), kWidevineAlpha));
EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
+ "audio/webm", opus_codec(), kWidevineAlpha));
+ EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
"audio/webm", vorbis_codec(), kWidevineAlpha));
// Valid audio types - parent key system.
EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
"audio/webm", no_codecs(), kWidevine));
EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
+ "audio/webm", opus_codec(), kWidevine));
+ EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
"audio/webm", vorbis_codec(), kWidevine));
// Non-audio codecs.
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
"audio/webm", vp8_codec(), kWidevineAlpha));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
+ "audio/webm", vp8_and_opus_codecs(), kWidevineAlpha));
+ EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
"audio/webm", vp8_and_vorbis_codecs(), kWidevineAlpha));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
"audio/webm", vp9_codec(), kWidevineAlpha));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
+ "audio/webm", vp9_and_opus_codecs(), kWidevineAlpha));
+ EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
"audio/webm", vp9_and_vorbis_codecs(), kWidevineAlpha));
// Non-Webm codec.
@@ -1056,6 +1122,8 @@ IN_PROC_BROWSER_TEST_F(EncryptedMediaIsTypeSupportedWidevineTest,
// Invalid or Non-MP4 codec.
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
+ "audio/mp4", opus_codec(), kWidevineAlpha));
+ EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
"audio/mp4", vorbis_codec(), kWidevineAlpha));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
"audio/mp4", mp4a_invalid_no_extension(), kWidevineAlpha));
diff --git a/chrome/renderer/media/chrome_key_systems.cc b/chrome/renderer/media/chrome_key_systems.cc
index 7ebb4fe..2af95c1 100644
--- a/chrome/renderer/media/chrome_key_systems.cc
+++ b/chrome/renderer/media/chrome_key_systems.cc
@@ -157,9 +157,15 @@ static void AddPepperBasedWidevine(
&codecs);
SupportedCodecs supported_codecs = media::EME_CODEC_NONE;
+
+ // Audio codecs are always supported.
+ // TODO(sandersd): Include AAC here once the tests are updated.
+ // TODO(sandersd): Distinguish these from those that are directly supported,
+ // as those may offer a higher level of protection.
+ supported_codecs |= media::EME_CODEC_WEBM_OPUS;
+ supported_codecs |= media::EME_CODEC_WEBM_VORBIS;
+
for (size_t i = 0; i < codecs.size(); ++i) {
- if (codecs[i] == kCdmSupportedCodecVorbis)
- supported_codecs |= media::EME_CODEC_WEBM_VORBIS;
if (codecs[i] == kCdmSupportedCodecVp8)
supported_codecs |= media::EME_CODEC_WEBM_VP8;
if (codecs[i] == kCdmSupportedCodecVp9)
diff --git a/components/cdm/browser/cdm_message_filter_android.cc b/components/cdm/browser/cdm_message_filter_android.cc
index a19a037..e9399f6 100644
--- a/components/cdm/browser/cdm_message_filter_android.cc
+++ b/components/cdm/browser/cdm_message_filter_android.cc
@@ -34,6 +34,7 @@ struct CodecInfo {
};
const CodecInfo kCodecsToQuery[] = {
+ {media::EME_CODEC_WEBM_OPUS, CODEC_AUDIO, "opus", "video/webm"},
{media::EME_CODEC_WEBM_VORBIS, CODEC_AUDIO, "vorbis", "video/webm"},
{media::EME_CODEC_WEBM_VP8, CODEC_VIDEO, "vp8", "video/webm"},
{media::EME_CODEC_WEBM_VP9, CODEC_VIDEO, "vp9", "video/webm"},
diff --git a/content/browser/media/encrypted_media_browsertest.cc b/content/browser/media/encrypted_media_browsertest.cc
index 3d56142..b693443 100644
--- a/content/browser/media/encrypted_media_browsertest.cc
+++ b/content/browser/media/encrypted_media_browsertest.cc
@@ -168,6 +168,30 @@ IN_PROC_BROWSER_TEST_P(EncryptedMediaTest, Playback_VideoClearAudio_WebM) {
TestSimplePlayback("bear-320x240-av_enc-v.webm", kWebMAudioVideo);
}
+IN_PROC_BROWSER_TEST_P(EncryptedMediaTest, Playback_AudioOnly_WebM_Opus) {
+ // Opus is not supported on Android. http://crbug.com/318436
+#if defined(OS_ANDROID)
+ return;
+#endif
+ TestSimplePlayback("bear-320x240-opus-a_enc-a.webm", kWebMAudioOnly);
+}
+
+IN_PROC_BROWSER_TEST_P(EncryptedMediaTest, Playback_VideoAudio_WebM_Opus) {
+ // Opus is not supported on Android. http://crbug.com/318436
+#if defined(OS_ANDROID)
+ return;
+#endif
+ TestSimplePlayback("bear-320x240-opus-av_enc-av.webm", kWebMAudioVideo);
+}
+
+IN_PROC_BROWSER_TEST_P(EncryptedMediaTest, Playback_VideoClearAudio_WebM_Opus) {
+ // Opus is not supported on Android. http://crbug.com/318436
+#if defined(OS_ANDROID)
+ return;
+#endif
+ TestSimplePlayback("bear-320x240-opus-av_enc-v.webm", kWebMAudioVideo);
+}
+
IN_PROC_BROWSER_TEST_P(EncryptedMediaTest, ConfigChangeVideo) {
TestConfigChange();
}
diff --git a/media/base/eme_constants.h b/media/base/eme_constants.h
index 27ebfff..e78af3b 100644
--- a/media/base/eme_constants.h
+++ b/media/base/eme_constants.h
@@ -27,16 +27,17 @@ enum EmeCodec {
// *_ALL values should only be used for masking, do not use them to specify
// codec support because they may be extended to include more codecs.
EME_CODEC_NONE = 0,
- EME_CODEC_WEBM_VORBIS = 1 << 0,
- EME_CODEC_WEBM_AUDIO_ALL = EME_CODEC_WEBM_VORBIS,
- EME_CODEC_WEBM_VP8 = 1 << 1,
- EME_CODEC_WEBM_VP9 = 1 << 2,
+ EME_CODEC_WEBM_OPUS = 1 << 0,
+ EME_CODEC_WEBM_VORBIS = 1 << 1,
+ EME_CODEC_WEBM_AUDIO_ALL = EME_CODEC_WEBM_OPUS | EME_CODEC_WEBM_VORBIS,
+ EME_CODEC_WEBM_VP8 = 1 << 2,
+ EME_CODEC_WEBM_VP9 = 1 << 3,
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),
#if defined(USE_PROPRIETARY_CODECS)
- EME_CODEC_MP4_AAC = 1 << 3,
+ EME_CODEC_MP4_AAC = 1 << 4,
EME_CODEC_MP4_AUDIO_ALL = EME_CODEC_MP4_AAC,
- EME_CODEC_MP4_AVC1 = 1 << 4,
+ EME_CODEC_MP4_AVC1 = 1 << 5,
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_ALL = (EME_CODEC_WEBM_ALL | EME_CODEC_MP4_ALL),
diff --git a/media/base/key_systems.cc b/media/base/key_systems.cc
index b98e4df..f97660c 100644
--- a/media/base/key_systems.cc
+++ b/media/base/key_systems.cc
@@ -60,6 +60,7 @@ static NamedCodec kContainerToCodecMasks[] = {
// Mapping between codec names and enum values.
static NamedCodec kCodecStrings[] = {
+ {"opus", EME_CODEC_WEBM_OPUS},
{"vorbis", EME_CODEC_WEBM_VORBIS},
{"vp8", EME_CODEC_WEBM_VP8},
{"vp8.0", EME_CODEC_WEBM_VP8},
@@ -86,6 +87,10 @@ static void AddClearKey(std::vector<KeySystemInfo>* concrete_key_systems) {
// 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;
+
+ // Opus is not supported on Android yet. http://crbug.com/318436.
+ // TODO(sandersd): Check for platform support to set this bit.
+ info.supported_codecs &= ~EME_CODEC_WEBM_OPUS;
#endif // defined(OS_ANDROID)
#if defined(USE_PROPRIETARY_CODECS)