Index: media/filters/stream_parser_factory.cc |
diff --git a/media/filters/stream_parser_factory.cc b/media/filters/stream_parser_factory.cc |
index 93b0e8b3d53da4e02feb345497dbbe4aea075216..8f4a55fe79de9b2f431fc751d9032ebd05cea39e 100644 |
--- a/media/filters/stream_parser_factory.cc |
+++ b/media/filters/stream_parser_factory.cc |
@@ -108,6 +108,12 @@ static const CodecInfo kMPEG2AACLCCodecInfo = { |
"mp4a.67", CodecInfo::AUDIO, NULL |
}; |
+#if defined(ENABLE_EAC3_PLAYBACK) |
+static const CodecInfo kEAC3CodecInfo = { |
+ "mp4a.a6", CodecInfo::AUDIO, NULL |
+}; |
+#endif |
+ |
static const CodecInfo* kVideoMP4Codecs[] = { |
&kH264CodecInfo, |
&kMPEG4AACCodecInfo, |
@@ -118,6 +124,9 @@ static const CodecInfo* kVideoMP4Codecs[] = { |
static const CodecInfo* kAudioMP4Codecs[] = { |
&kMPEG4AACCodecInfo, |
&kMPEG2AACLCCodecInfo, |
+#if defined(ENABLE_EAC3_PLAYBACK) |
+ &kEAC3CodecInfo, |
+#endif |
NULL |
}; |
@@ -125,6 +134,10 @@ static media::StreamParser* BuildMP4Parser( |
const std::vector<std::string>& codecs, const media::LogCB& log_cb) { |
std::set<int> audio_object_types; |
bool has_sbr = false; |
+#if defined(ENABLE_EAC3_PLAYBACK) |
+ bool enable_eac3 = CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kEnableEac3Playback); |
+#endif |
for (size_t i = 0; i < codecs.size(); ++i) { |
std::string codec_id = codecs[i]; |
if (MatchPattern(codec_id, kMPEG2AACLCCodecInfo.pattern)) { |
@@ -139,6 +152,10 @@ static media::StreamParser* BuildMP4Parser( |
has_sbr = true; |
break; |
} |
+#if defined(ENABLE_EAC3_PLAYBACK) |
+ } else if (enable_eac3 && MatchPattern(codec_id, kEAC3CodecInfo.pattern)) { |
+ audio_object_types.insert(media::mp4::kEAC3); |
+#endif |
} |
} |
@@ -204,6 +221,12 @@ static bool IsSupported(const std::string& type, |
const CommandLine* cmd_line = CommandLine::ForCurrentProcess(); |
switch (codec_type) { |
case CodecInfo::AUDIO: |
+#if defined(ENABLE_EAC3_PLAYBACK) |
+ if (MatchPattern(codec_id, kEAC3CodecInfo.pattern) && |
+ !cmd_line->HasSwitch(switches::kEnableEac3Playback)) { |
+ return false; |
+ } |
+#endif |
*has_audio = true; |
break; |
case CodecInfo::VIDEO: |