Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(146)

Unified Diff: media/mp4/mp4_stream_parser.cc

Issue 11819013: Add support for accepting MPEG2 AAC-LC bitstreams. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase and add MPEG2 AAC-LC test. Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/mp4/mp4_stream_parser.h ('k') | media/mp4/mp4_stream_parser_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/mp4/mp4_stream_parser.cc
diff --git a/media/mp4/mp4_stream_parser.cc b/media/mp4/mp4_stream_parser.cc
index 3f9b016c31287e83b1d1a471c59c4eda7ed031aa..970c51693b20d93be6706737f1f933723d41235a 100644
--- a/media/mp4/mp4_stream_parser.cc
+++ b/media/mp4/mp4_stream_parser.cc
@@ -23,7 +23,8 @@ namespace mp4 {
// TODO(xhwang): Figure out the init data type appropriately once it's spec'ed.
static const char kMp4InitDataType[] = "video/mp4";
-MP4StreamParser::MP4StreamParser(bool has_sbr)
+MP4StreamParser::MP4StreamParser(const std::set<int>& audio_object_types,
+ bool has_sbr)
: state_(kWaitingForInit),
moof_head_(0),
mdat_tail_(0),
@@ -31,6 +32,7 @@ MP4StreamParser::MP4StreamParser(bool has_sbr)
has_video_(false),
audio_track_id_(0),
video_track_id_(0),
+ audio_object_types_(audio_object_types),
has_sbr_(has_sbr),
is_audio_track_encrypted_(false),
is_video_track_encrypted_(false) {
@@ -202,11 +204,21 @@ bool MP4StreamParser::ParseMoov(BoxReader* reader) {
<< std::hex << entry.format << " in stsd box.";
return false;
}
- // Check if it is MPEG4 AAC defined in ISO 14496 Part 3.
- if (entry.esds.object_type != kISO_14496_3) {
+
+ int audio_type = entry.esds.object_type;
+ DVLOG(1) << "audio_type " << std::hex << audio_type;
+ if (audio_object_types_.find(audio_type) == audio_object_types_.end()) {
+ MEDIA_LOG(log_cb_) << "audio object type 0x" << std::hex << audio_type
+ << " does not match what is specified in the"
+ << " mimetype.";
+ return false;
+ }
+
+ // Check if it is MPEG4 AAC defined in ISO 14496 Part 3 or
+ // supported MPEG2 AAC varients.
+ if (audio_type != kISO_14496_3 && audio_type != kISO_13818_7_AAC_LC) {
MEDIA_LOG(log_cb_) << "Unsupported audio object type 0x" << std::hex
- << static_cast<int>(entry.esds.object_type)
- << " in esds.";
+ << audio_type << " in esds.";
return false;
}
« no previous file with comments | « media/mp4/mp4_stream_parser.h ('k') | media/mp4/mp4_stream_parser_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698