diff options
author | wolenetz <wolenetz@chromium.org> | 2014-11-25 12:22:50 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-11-25 20:23:08 +0000 |
commit | 2a1e948cc3bc735ac13e9ffa125a512e9cf2e2db (patch) | |
tree | db7ad62561173af1b295d21efc2ff45a696b2066 /net | |
parent | cea221bc9d741848e165e4d7ae93a31bb76cc682 (diff) | |
download | chromium_src-2a1e948cc3bc735ac13e9ffa125a512e9cf2e2db.zip chromium_src-2a1e948cc3bc735ac13e9ffa125a512e9cf2e2db.tar.gz chromium_src-2a1e948cc3bc735ac13e9ffa125a512e9cf2e2db.tar.bz2 |
MSE and non-MSE: Support HE-AACv2 "mp4a.40.29" codec string
Adds codec string support for HE-AACv2 to match existing
support/lack of support of HE-AACv1 "mp4a.40.5" codec string.
Also fixes a pre-existing MPEG4 AAC codec string parsing error in
stream_parser_factory.cc that interpreted the object type id xx in
"mp4a.40.xx" as hexadecimal (which was ok for just 2 and 5, but not 29).
BUG=315566
R=servolk@chromium.org,qinmin@chromium.org,dalecurtis@chromium.org,rsleevi@chromium.org
TEST=Updated MediaCanPlayTypeTest.CodecSupportTest_*,
* manual confirmation of MediaSource.isTypeSupported(), and
* dashif.org reference player 1.2.0 "Multiple Audio Representations 6"
plays audio when proprietary codecs are included in local build
Review URL: https://codereview.chromium.org/746253004
Cr-Commit-Position: refs/heads/master@{#305684}
Diffstat (limited to 'net')
-rw-r--r-- | net/base/mime_util.cc | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/net/base/mime_util.cc b/net/base/mime_util.cc index 27f3c70..c35e24c 100644 --- a/net/base/mime_util.cc +++ b/net/base/mime_util.cc @@ -59,7 +59,8 @@ class MimeUtil : public PlatformMimeUtil { MPEG2_AAC_MAIN, MPEG2_AAC_SSR, MPEG4_AAC_LC, - MPEG4_AAC_SBRv1, + MPEG4_AAC_SBR_v1, + MPEG4_AAC_SBR_PS_v2, VORBIS, OPUS, H264_BASELINE, @@ -475,7 +476,8 @@ static bool IsCodecSupportedOnAndroid(MimeUtil::Codec codec) { case MimeUtil::PCM: case MimeUtil::MP3: case MimeUtil::MPEG4_AAC_LC: - case MimeUtil::MPEG4_AAC_SBRv1: + case MimeUtil::MPEG4_AAC_SBR_v1: + case MimeUtil::MPEG4_AAC_SBR_PS_v2: case MimeUtil::H264_BASELINE: case MimeUtil::H264_MAIN: case MimeUtil::H264_HIGH: @@ -528,16 +530,17 @@ struct MediaFormatStrict { // mp4a.69 - MPEG-2 extension to MPEG-1 // mp4a.6B - MPEG-1 audio // mp4a.40.2 - MPEG-4 AAC LC -// mp4a.40.5 - MPEG-4 AAC SBRv1 +// mp4a.40.5 - MPEG-4 HE-AAC v1 (AAC LC + SBR) +// mp4a.40.29 - MPEG-4 HE-AAC v2 (AAC LC + SBR + PS) // // avc1.42E0xx - H.264 Baseline // avc1.4D40xx - H.264 Main // avc1.6400xx - H.264 High static const char kMP4AudioCodecsExpression[] = - "mp4a.66,mp4a.67,mp4a.68,mp4a.69,mp4a.6B,mp4a.40.2,mp4a.40.5"; + "mp4a.66,mp4a.67,mp4a.68,mp4a.69,mp4a.6B,mp4a.40.2,mp4a.40.5,mp4a.40.29"; static const char kMP4VideoCodecsExpression[] = "avc1.42E00A,avc1.4D400A,avc1.64000A," \ - "mp4a.66,mp4a.67,mp4a.68,mp4a.69,mp4a.6B,mp4a.40.2,mp4a.40.5"; + "mp4a.66,mp4a.67,mp4a.68,mp4a.69,mp4a.6B,mp4a.40.2,mp4a.40.5,mp4a.40.29"; static const MediaFormatStrict format_codec_mappings[] = { { "video/webm", "opus,vorbis,vp8,vp8.0,vp9,vp9.0" }, @@ -576,7 +579,8 @@ static const CodecIDMappings kUnambiguousCodecIDs[] = { { "mp4a.69", MimeUtil::MP3 }, { "mp4a.6B", MimeUtil::MP3 }, { "mp4a.40.2", MimeUtil::MPEG4_AAC_LC }, - { "mp4a.40.5", MimeUtil::MPEG4_AAC_SBRv1 }, + { "mp4a.40.5", MimeUtil::MPEG4_AAC_SBR_v1 }, + { "mp4a.40.29", MimeUtil::MPEG4_AAC_SBR_PS_v2 }, { "vorbis", MimeUtil::VORBIS }, { "opus", MimeUtil::OPUS }, { "vp8", MimeUtil::VP8 }, @@ -1044,7 +1048,8 @@ bool MimeUtil::IsCodecProprietary(Codec codec) const { case MPEG2_AAC_MAIN: case MPEG2_AAC_SSR: case MPEG4_AAC_LC: - case MPEG4_AAC_SBRv1: + case MPEG4_AAC_SBR_v1: + case MPEG4_AAC_SBR_PS_v2: case H264_BASELINE: case H264_MAIN: case H264_HIGH: |