Chromium Code Reviews| Index: media/filters/stream_parser_factory.cc |
| diff --git a/media/filters/stream_parser_factory.cc b/media/filters/stream_parser_factory.cc |
| index fd8e92bff0bb56785bcc08ec58e879ddad9d8985..a32ec479193db6c171c82ed928c1caad8e8aa229 100644 |
| --- a/media/filters/stream_parser_factory.cc |
| +++ b/media/filters/stream_parser_factory.cc |
| @@ -50,7 +50,8 @@ struct CodecInfo { |
| HISTOGRAM_EAC3, |
| HISTOGRAM_MP3, |
| HISTOGRAM_OPUS, |
| - HISTOGRAM_MAX = HISTOGRAM_OPUS // Must be equal to largest logged entry. |
| + HISTOGRAM_AC3, |
| + HISTOGRAM_MAX = HISTOGRAM_AC3 // Must be equal to largest logged entry. |
| }; |
| const char* pattern; |
| @@ -150,6 +151,21 @@ static const CodecInfo kMPEG4AACCodecInfo = { "mp4a.40.*", CodecInfo::AUDIO, |
| static const CodecInfo kMPEG2AACLCCodecInfo = { "mp4a.67", CodecInfo::AUDIO, |
| NULL, |
| CodecInfo::HISTOGRAM_MPEG2AAC }; |
| +#if defined(ENABLE_AC3_EAC3_AUDIO_DEMUXING) |
| +// The 'ac-3' and 'ec-3' are mime codec ids for AC3 and EAC3 according to |
| +// http://www.mp4ra.org/codecs.html |
| +// The object types for AC3 and EAC3 in MP4 container are 0xa5 and 0xa6, so |
| +// according to RFC 6381 this corresponds to codec ids 'mp4a.a5' and 'mp4a.a6'. |
| +// Different applications use different codec ids. |
| +static const CodecInfo kAC3CodecInfo1 = { "ac-3", CodecInfo::AUDIO, NULL, |
| + CodecInfo::HISTOGRAM_AC3 }; |
| +static const CodecInfo kAC3CodecInfo2 = { "mp4a.a5", CodecInfo::AUDIO, NULL, |
| + CodecInfo::HISTOGRAM_AC3 }; |
| +static const CodecInfo kEAC3CodecInfo1 = { "ec-3", CodecInfo::AUDIO, NULL, |
| + CodecInfo::HISTOGRAM_EAC3 }; |
| +static const CodecInfo kEAC3CodecInfo2 = { "mp4a.a6", CodecInfo::AUDIO, NULL, |
| + CodecInfo::HISTOGRAM_EAC3 }; |
| +#endif |
| static const CodecInfo* kVideoMP4Codecs[] = { |
| &kH264AVC1CodecInfo, |
| @@ -162,6 +178,12 @@ static const CodecInfo* kVideoMP4Codecs[] = { |
| static const CodecInfo* kAudioMP4Codecs[] = { |
| &kMPEG4AACCodecInfo, |
| &kMPEG2AACLCCodecInfo, |
| +#if defined(ENABLE_AC3_EAC3_AUDIO_DEMUXING) |
| + &kAC3CodecInfo1, |
| + &kAC3CodecInfo2, |
| + &kEAC3CodecInfo1, |
| + &kEAC3CodecInfo2, |
| +#endif |
| NULL |
| }; |
| @@ -185,6 +207,14 @@ static StreamParser* BuildMP4Parser( |
| has_sbr = true; |
| break; |
| } |
| +#if defined(ENABLE_AC3_EAC3_AUDIO_DEMUXING) |
| + } else if (MatchPattern(codec_id, kAC3CodecInfo1.pattern) |
| + || MatchPattern(codec_id, kAC3CodecInfo2.pattern)) { |
|
DaleCurtis
2015/01/14 23:36:33
|| on above line.
servolk
2015/01/15 00:06:45
Done.
|
| + audio_object_types.insert(mp4::kAC3); |
| + } else if (MatchPattern(codec_id, kEAC3CodecInfo1.pattern) |
| + || MatchPattern(codec_id, kEAC3CodecInfo2.pattern)) { |
|
DaleCurtis
2015/01/14 23:36:33
Ditto.
servolk
2015/01/15 00:06:45
Done.
|
| + audio_object_types.insert(mp4::kEAC3); |
| +#endif |
| } |
| } |