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

Unified Diff: media/base/mime_util_internal.cc

Issue 2783963002: Add IsSupportedAudioConfig in MediaClient (Closed)
Patch Set: Update MediaCanPlayTypeTest Created 3 years, 9 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
« media/base/decode_capabilities.cc ('K') | « media/base/media_client.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/base/mime_util_internal.cc
diff --git a/media/base/mime_util_internal.cc b/media/base/mime_util_internal.cc
index db4f10b97cedcb8392e48a6731cd585e9f0424e9..9bb409995088b2a0d77ae2bfd2008796b7a5c229 100644
--- a/media/base/mime_util_internal.cc
+++ b/media/base/mime_util_internal.cc
@@ -136,6 +136,31 @@ MimeUtil::MimeUtil() : allow_proprietary_codecs_(false) {
MimeUtil::~MimeUtil() {}
+AudioCodec MimeUtilToAudioCodec(MimeUtil::Codec codec) {
+ switch (codec) {
+ case MimeUtil::PCM:
+ return kCodecPCM;
+ case MimeUtil::MP3:
+ return kCodecMP3;
+ case MimeUtil::AC3:
+ return kCodecAC3;
+ case MimeUtil::EAC3:
+ return kCodecEAC3;
+ case MimeUtil::MPEG2_AAC:
+ case MimeUtil::MPEG4_AAC:
+ return kCodecAAC;
+ case MimeUtil::VORBIS:
+ return kCodecVorbis;
+ case MimeUtil::OPUS:
+ return kCodecOpus;
+ case MimeUtil::FLAC:
+ return kCodecFLAC;
+ default:
+ break;
+ }
+ return kUnknownAudioCodec;
+}
+
VideoCodec MimeUtilToVideoCodec(MimeUtil::Codec codec) {
switch (codec) {
case MimeUtil::H264:
@@ -710,6 +735,21 @@ SupportsType MimeUtil::IsCodecSupported(const std::string& mime_type_lower_case,
ambiguous_platform_support = true;
}
+ AudioCodec audio_codec = MimeUtilToAudioCodec(codec);
+ if (audio_codec != kUnknownAudioCodec) {
+ AudioConfig audio_config = {audio_codec};
+
+ // If MediaClient is provided use it to check for decoder support.
+ MediaClient* media_client = GetMediaClient();
+ if (media_client && !media_client->IsSupportedAudioConfig(audio_config))
+ return IsNotSupported;
+
+ // When no MediaClient is provided, assume default decoders are available
+ // as described by media::IsSupportedAudioConfig().
+ if (!media_client && !IsSupportedAudioConfig(audio_config))
+ return IsNotSupported;
+ }
+
if (video_codec != kUnknownVideoCodec) {
VideoConfig video_config = {video_codec, video_profile, video_level,
color_space};
« media/base/decode_capabilities.cc ('K') | « media/base/media_client.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698