Chromium Code Reviews| Index: media/base/mime_util.cc |
| diff --git a/media/base/mime_util.cc b/media/base/mime_util.cc |
| index bb85b91bd2c50a6edbf112c503537abd526953d5..c7085bf3c820a9429b0ffd3aaac62e10fb3df86a 100644 |
| --- a/media/base/mime_util.cc |
| +++ b/media/base/mime_util.cc |
| @@ -24,6 +24,8 @@ class MimeUtil { |
| enum Codec { |
| INVALID_CODEC, |
| PCM, |
| + AC3, |
|
ddorwin
2015/12/03 23:46:52
nit: It seems these should come after MP3.
servolk
2015/12/21 17:50:57
Done.
|
| + EAC3, |
| MP3, |
| MPEG2_AAC_LC, |
| MPEG2_AAC_MAIN, |
| @@ -162,6 +164,11 @@ static bool IsCodecSupportedOnAndroid(MimeUtil::Codec codec) { |
| // MPEG-2 variants of AAC are not supported on Android. |
| return false; |
| + case MimeUtil::AC3: |
|
ddorwin
2015/12/03 23:46:52
Should be before 161.
servolk
2015/12/21 17:50:57
Done.
|
| + case MimeUtil::EAC3: |
| + // TODO(servolk): Revisit this for AC3/EAC3 support on AndroidTV |
| + return false; |
| + |
| case MimeUtil::VP9: |
| // VP9 is supported only in KitKat+ (API Level 19). |
| return base::android::BuildInfo::GetInstance()->sdk_int() >= 19; |
| @@ -205,6 +212,11 @@ struct MediaFormat { |
| // avc1.6400xx - H.264 High |
| static const char kMP4AudioCodecsExpression[] = |
| "mp4a.66,mp4a.67,mp4a.68,mp4a.69,mp4a.6B,mp4a.40.2,mp4a.40.02,mp4a.40.5," |
| +#if defined(ENABLE_AC3_EAC3_AUDIO_DEMUXING) |
| + // Note: only one variant of ac3/eac3 codec string is sufficient here, since |
|
ddorwin
2015/12/03 23:46:52
variant *each* of ac3 *&* eac3
servolk
2015/12/21 17:50:57
Done.
|
| + // these strings are parsed and mapped to MimeUtil::Codec enum values. |
| + "ac-3,ec-3," |
| +#endif |
| "mp4a.40.05,mp4a.40.29"; |
| static const char kMP4VideoCodecsExpression[] = |
| // This is not a complete list of supported avc1 codecs. It is simply used |
| @@ -220,6 +232,11 @@ static const char kMP4VideoCodecsExpression[] = |
| "hev1.1.6.L93.B0," |
| #endif |
| "mp4a.66,mp4a.67,mp4a.68,mp4a.69,mp4a.6B,mp4a.40.2,mp4a.40.02,mp4a.40.5," |
| +#if defined(ENABLE_AC3_EAC3_AUDIO_DEMUXING) |
| + // Note: only one variant of ac3/eac3 codec string is sufficient here, since |
|
ddorwin
2015/12/03 23:46:52
ditto
servolk
2015/12/21 17:50:57
Done.
|
| + // these strings are parsed and mapped to MimeUtil::Codec enum values. |
| + "ac-3,ec-3," |
| +#endif |
| "mp4a.40.05,mp4a.40.29"; |
| #endif // USE_PROPRIETARY_CODECS |
| @@ -285,6 +302,20 @@ static const CodecIDMappings kUnambiguousCodecStringMap[] = { |
| {"mp4a.40.5", MimeUtil::MPEG4_AAC_SBR_v1}, |
| {"mp4a.40.05", MimeUtil::MPEG4_AAC_SBR_v1}, |
| {"mp4a.40.29", MimeUtil::MPEG4_AAC_SBR_PS_v2}, |
| +#if defined(ENABLE_AC3_EAC3_AUDIO_DEMUXING) |
| + // TODO(servolk): Strictly speaking only mp4a.A5 and mp4a.A6 codec ids are |
| + // valid according to RFC 6381 section 3.3, 3.4. Lower-case oti (mp4a.a5 and |
| + // mp4a.a6) should be rejected. But we used to allow those in older versions |
| + // of Chromecast firmware and some apps (notably MPL) depend on those codec |
| + // types being supported, so they should be allowed for now |
| + // (crbug.com/564960) |
|
ddorwin
2015/12/03 23:46:52
nit: missing period
servolk
2015/12/21 17:50:57
Done.
|
| + {"ac-3", MimeUtil::AC3}, |
| + {"mp4a.a5", MimeUtil::AC3}, |
| + {"mp4a.A5", MimeUtil::AC3}, |
| + {"ec-3", MimeUtil::EAC3}, |
| + {"mp4a.a6", MimeUtil::EAC3}, |
| + {"mp4a.A6", MimeUtil::EAC3}, |
| +#endif |
| {"vorbis", MimeUtil::VORBIS}, |
| {"opus", MimeUtil::OPUS}, |
| {"vp8", MimeUtil::VP8}, |
| @@ -632,6 +663,8 @@ bool MimeUtil::IsCodecSupported(Codec codec) const { |
| bool MimeUtil::IsCodecProprietary(Codec codec) const { |
| switch (codec) { |
| case INVALID_CODEC: |
| + case AC3: |
| + case EAC3: |
| case MP3: |
| case MPEG2_AAC_LC: |
| case MPEG2_AAC_MAIN: |