Index: media/mp4/box_definitions.cc |
diff --git a/media/mp4/box_definitions.cc b/media/mp4/box_definitions.cc |
index f9d2bcc3b1890034a50e8655f8ebc5c67d0322b8..ebfeae7eda5c95a7d6a0b7c5eea16534120d08fa 100644 |
--- a/media/mp4/box_definitions.cc |
+++ b/media/mp4/box_definitions.cc |
@@ -5,8 +5,7 @@ |
#include "media/mp4/box_definitions.h" |
#include "base/logging.h" |
-#include "media/mp4/box_reader.h" |
-#include "media/mp4/fourccs.h" |
+#include "media/mp4/es_descriptor.h" |
#include "media/mp4/rcheck.h" |
namespace media { |
@@ -389,6 +388,30 @@ bool VideoSampleEntry::Parse(BoxReader* reader) { |
return true; |
} |
+ElementaryStreamDescriptor::ElementaryStreamDescriptor() |
+ : object_type(kForbidden) {} |
+ |
+ElementaryStreamDescriptor::~ElementaryStreamDescriptor() {} |
+ |
+FourCC ElementaryStreamDescriptor::BoxType() const { |
+ return FOURCC_ESDS; |
+} |
+ |
+bool ElementaryStreamDescriptor::Parse(BoxReader* reader) { |
+ std::vector<uint8> data; |
+ ESDescriptor es_desc; |
+ |
+ RCHECK(reader->ReadFullBoxHeader()); |
+ RCHECK(reader->ReadVec(&data, reader->size() - reader->pos())); |
+ RCHECK(es_desc.Parse(data)); |
+ |
+ object_type = es_desc.object_type(); |
+ |
+ RCHECK(aac.Parse(es_desc.decoder_specific_info())); |
+ |
+ return true; |
+} |
+ |
AudioSampleEntry::AudioSampleEntry() |
: format(FOURCC_NULL), |
data_reference_index(0), |
@@ -397,6 +420,7 @@ AudioSampleEntry::AudioSampleEntry() |
samplerate(0) {} |
AudioSampleEntry::~AudioSampleEntry() {} |
+ |
FourCC AudioSampleEntry::BoxType() const { |
DCHECK(false) << "AudioSampleEntry should be parsed according to the " |
<< "handler type recovered in its Media ancestor."; |
@@ -419,6 +443,7 @@ bool AudioSampleEntry::Parse(BoxReader* reader) { |
if (format == FOURCC_ENCA) { |
RCHECK(reader->ReadChild(&sinf)); |
} |
+ RCHECK(reader->ReadChild(&esds)); |
return true; |
} |