summaryrefslogtreecommitdiffstats
path: root/net/base/mime_util.cc
diff options
context:
space:
mode:
authorwolenetz <wolenetz@chromium.org>2014-12-10 11:45:37 -0800
committerCommit bot <commit-bot@chromium.org>2014-12-10 19:46:02 +0000
commitd8590e28fd83b265559479164499767f2f852b53 (patch)
treefc0fb910e73ff91a61d906b7dbfa4f7fd5222925 /net/base/mime_util.cc
parentbcb30d6b5cc579153cec6267430c216bf3c599c6 (diff)
downloadchromium_src-d8590e28fd83b265559479164499767f2f852b53.zip
chromium_src-d8590e28fd83b265559479164499767f2f852b53.tar.gz
chromium_src-d8590e28fd83b265559479164499767f2f852b53.tar.bz2
MSE and non-MSE: Relax mp4a mimetype to allow leading 0 in aud-oti
Adds codec string support for mp4a.40.02 and mp4a.40.05 to match existing support (or lack thereof) for mp4a.40.2 and mp4a.40.5, respectively. To satisfy presubmit, also includes result of $ git cl format net BUG=440607 R=servolk@chromium.org,rsleevi@chromium.org,dalecurtis@chromium.org TEST=Updated MediaCanPlayTypeTest.CodecSupportTest_* Review URL: https://codereview.chromium.org/791863002 Cr-Commit-Position: refs/heads/master@{#307743}
Diffstat (limited to 'net/base/mime_util.cc')
-rw-r--r--net/base/mime_util.cc48
1 files changed, 27 insertions, 21 deletions
diff --git a/net/base/mime_util.cc b/net/base/mime_util.cc
index c35e24c..cba37a4 100644
--- a/net/base/mime_util.cc
+++ b/net/base/mime_util.cc
@@ -530,17 +530,22 @@ struct MediaFormatStrict {
// mp4a.69 - MPEG-2 extension to MPEG-1
// mp4a.6B - MPEG-1 audio
// mp4a.40.2 - MPEG-4 AAC LC
+// mp4a.40.02 - MPEG-4 AAC LC (leading 0 in aud-oti for compatibility)
// mp4a.40.5 - MPEG-4 HE-AAC v1 (AAC LC + SBR)
+// mp4a.40.05 - MPEG-4 HE-AAC v1 (AAC LC + SBR) (leading 0 in aud-oti for
+// compatibility)
// 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.40.29";
+ "mp4a.66,mp4a.67,mp4a.68,mp4a.69,mp4a.6B,mp4a.40.2,mp4a.40.02,mp4a.40.5,"
+ "mp4a.40.05,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.40.29";
+ "avc1.42E00A,avc1.4D400A,avc1.64000A,"
+ "mp4a.66,mp4a.67,mp4a.68,mp4a.69,mp4a.6B,mp4a.40.2,mp4a.40.02,mp4a.40.5,"
+ "mp4a.40.05,mp4a.40.29";
static const MediaFormatStrict format_codec_mappings[] = {
{ "video/webm", "opus,vorbis,vp8,vp8.0,vp9,vp9.0" },
@@ -571,24 +576,25 @@ struct CodecIDMappings {
//
// The "mp4a" strings come from RFC 6381.
static const CodecIDMappings kUnambiguousCodecIDs[] = {
- { "1", MimeUtil::PCM }, // We only allow this for WAV so it isn't ambiguous.
- { "mp3", MimeUtil::MP3 },
- { "mp4a.66", MimeUtil::MPEG2_AAC_MAIN },
- { "mp4a.67", MimeUtil::MPEG2_AAC_LC },
- { "mp4a.68", MimeUtil::MPEG2_AAC_SSR },
- { "mp4a.69", MimeUtil::MP3 },
- { "mp4a.6B", MimeUtil::MP3 },
- { "mp4a.40.2", MimeUtil::MPEG4_AAC_LC },
- { "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 },
- { "vp8.0", MimeUtil::VP8 },
- { "vp9", MimeUtil::VP9 },
- { "vp9.0", MimeUtil::VP9 },
- { "theora", MimeUtil::THEORA }
-};
+ {"1", MimeUtil::PCM}, // We only allow this for WAV so it isn't ambiguous.
+ {"mp3", MimeUtil::MP3},
+ {"mp4a.66", MimeUtil::MPEG2_AAC_MAIN},
+ {"mp4a.67", MimeUtil::MPEG2_AAC_LC},
+ {"mp4a.68", MimeUtil::MPEG2_AAC_SSR},
+ {"mp4a.69", MimeUtil::MP3},
+ {"mp4a.6B", MimeUtil::MP3},
+ {"mp4a.40.2", MimeUtil::MPEG4_AAC_LC},
+ {"mp4a.40.02", MimeUtil::MPEG4_AAC_LC},
+ {"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},
+ {"vorbis", MimeUtil::VORBIS},
+ {"opus", MimeUtil::OPUS},
+ {"vp8", MimeUtil::VP8},
+ {"vp8.0", MimeUtil::VP8},
+ {"vp9", MimeUtil::VP9},
+ {"vp9.0", MimeUtil::VP9},
+ {"theora", MimeUtil::THEORA}};
// List of codec IDs that are ambiguous and don't provide
// enough information to determine the codec and profile.