| 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};
|
|
|