Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2066)

Unified Diff: media/base/mime_util.cc

Issue 1690063002: Fix mime type mappings when the unified media pipeline is enabled. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix browser tests. Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/base/mime_util.cc
diff --git a/media/base/mime_util.cc b/media/base/mime_util.cc
index ff1d3369e1d6017a2274a0aeef4ef2d90f50d18f..9529734cee5c6a38577b55ea9efe979c50ee8229 100644
--- a/media/base/mime_util.cc
+++ b/media/base/mime_util.cc
@@ -14,6 +14,7 @@
#include "base/strings/string_split.h"
#include "base/strings/string_util.h"
#include "build/build_config.h"
+#include "media/base/media.h"
#include "media/base/mime_util.h"
#include "media/media_features.h"
@@ -163,11 +164,12 @@ static bool IsCodecSupportedOnAndroid(MimeUtil::Codec codec) {
case MimeUtil::MPEG2_AAC_MAIN:
case MimeUtil::MPEG2_AAC_SSR:
// MPEG-2 variants of AAC are not supported on Android.
- return false;
+ return IsUnifiedMediaPipelineEnabled();
ddorwin 2016/02/12 18:45:12 As mentioned previously, we need to know that it c
DaleCurtis 2016/02/13 02:01:43 We'll either be using MediaPlayer or the unified m
case MimeUtil::OPUS:
// Opus is supported only in Lollipop+ (API Level 21).
- return base::android::BuildInfo::GetInstance()->sdk_int() >= 21;
+ return base::android::BuildInfo::GetInstance()->sdk_int() >= 21 ||
+ IsUnifiedMediaPipelineEnabled();
case MimeUtil::HEVC_MAIN:
#if BUILDFLAG(ENABLE_HEVC_DEMUXING)
@@ -180,7 +182,8 @@ static bool IsCodecSupportedOnAndroid(MimeUtil::Codec codec) {
case MimeUtil::VP9:
// VP9 is supported only in KitKat+ (API Level 19).
- return base::android::BuildInfo::GetInstance()->sdk_int() >= 19;
+ return base::android::BuildInfo::GetInstance()->sdk_int() >= 19 ||
+ IsUnifiedMediaPipelineEnabled();
ddorwin 2016/02/12 18:45:12 This one may not be affected by the blacklist (bas
DaleCurtis 2016/02/13 02:01:43 The blacklist doesn't matter here (currently), so
case MimeUtil::THEORA:
return false;
@@ -188,6 +191,19 @@ static bool IsCodecSupportedOnAndroid(MimeUtil::Codec codec) {
return false;
}
+
+static bool IsMimeTypeAndCodecSupportedOnAndroid(const std::string& mime_type,
+ MimeUtil::Codec codec) {
+ // Opus in ogg is not allowed on Android unless the unified media pipeline is
+ // available.
+ if (base::EndsWith(mime_type, "ogg", base::CompareCase::INSENSITIVE_ASCII) &&
ddorwin 2016/02/12 18:45:12 Minor: Since this comes from our code, the check c
DaleCurtis 2016/02/13 02:01:43 Done.
+ codec == MimeUtil::OPUS) {
+ return IsUnifiedMediaPipelineEnabled();
ddorwin 2016/02/12 18:45:12 Ditto on the blacklist. (As long as we support WM
DaleCurtis 2016/02/13 02:01:43 Blacklist doesn't matter here since either the pip
+ }
+
+ return true;
ddorwin 2016/02/12 18:45:12 As mentioned below, we might want to call IsCodecS
DaleCurtis 2016/02/13 02:01:43 Done.
+}
+
#endif
enum MediaFormatType { COMMON, PROPRIETARY };
@@ -254,16 +270,13 @@ static const MediaFormat kFormatCodecMappings[] = {
{"audio/webm", COMMON, "opus,vorbis"},
{"audio/wav", COMMON, "1"},
{"audio/x-wav", COMMON, "1"},
-#if defined(OS_ANDROID)
- // Android does not support Opus in Ogg container.
- // Android does not support Theora and thus video/ogg.
- {"audio/ogg", COMMON, "vorbis"},
- {"application/ogg", COMMON, "vorbis"},
-#else
+#if !defined(OS_ANDROID)
ddorwin 2016/02/12 18:45:12 Should we retain this comment? // Android does not
DaleCurtis 2016/02/13 02:01:43 Done.
{"video/ogg", COMMON, "opus,theora,vorbis"},
+#endif
{"audio/ogg", COMMON, "opus,vorbis"},
+ // Note: Theora is not supported on Android and will be rejected during the
+ // call to IsCodecSupportedOnAndroid().
{"application/ogg", COMMON, "opus,theora,vorbis"},
-#endif
#if defined(USE_PROPRIETARY_CODECS)
{"audio/mpeg", PROPRIETARY, "mp3"},
{"audio/mp3", PROPRIETARY, ""},
@@ -447,6 +460,16 @@ void MimeUtil::InitializeMimeTypeMaps() {
bool is_ambiguous = true;
CHECK(StringToCodec(mime_type_codecs[j], &codec, &is_ambiguous));
DCHECK(!is_ambiguous);
+
+#if defined(OS_ANDROID)
+ // Android has container retrictions on codecs which may vary at runtime,
+ // filter out container and codec combinations which are disallowed.
+ if (!IsMimeTypeAndCodecSupportedOnAndroid(
+ kFormatCodecMappings[i].mime_type, codec)) {
+ continue;
+ }
+#endif
+
codecs.insert(codec);
}

Powered by Google App Engine
This is Rietveld 408576698