| Index: media/mp4/box_definitions.cc
|
| diff --git a/media/mp4/box_definitions.cc b/media/mp4/box_definitions.cc
|
| index c9245d8b3132204938e6f0736e49e281da65a930..d6ab0fcd3d1ca55548819eff6739630316a45522 100644
|
| --- a/media/mp4/box_definitions.cc
|
| +++ b/media/mp4/box_definitions.cc
|
| @@ -27,7 +27,7 @@ FourCC ProtectionSystemSpecificHeader::BoxType() const { return FOURCC_PSSH; }
|
|
|
| bool ProtectionSystemSpecificHeader::Parse(BoxReader* reader) {
|
| uint32 size;
|
| - return reader->SkipBytes(4) &&
|
| + return reader->ReadFullBoxHeader() &&
|
| reader->ReadVec(&system_id, 16) &&
|
| reader->Read4(&size) &&
|
| reader->ReadVec(&data, size);
|
| @@ -88,7 +88,7 @@ SchemeType::~SchemeType() {}
|
| FourCC SchemeType::BoxType() const { return FOURCC_SCHM; }
|
|
|
| bool SchemeType::Parse(BoxReader* reader) {
|
| - RCHECK(reader->SkipBytes(4) &&
|
| + RCHECK(reader->ReadFullBoxHeader() &&
|
| reader->ReadFourCC(&type) &&
|
| reader->Read4(&version));
|
| RCHECK(type == FOURCC_CENC);
|
| @@ -103,7 +103,8 @@ FourCC TrackEncryption::BoxType() const { return FOURCC_TENC; }
|
|
|
| bool TrackEncryption::Parse(BoxReader* reader) {
|
| uint8 flag;
|
| - RCHECK(reader->SkipBytes(2) &&
|
| + RCHECK(reader->ReadFullBoxHeader() &&
|
| + reader->SkipBytes(2) &&
|
| reader->Read1(&flag) &&
|
| reader->Read1(&default_iv_size) &&
|
| reader->ReadVec(&default_kid, 16));
|
| @@ -129,9 +130,11 @@ ProtectionSchemeInfo::~ProtectionSchemeInfo() {}
|
| FourCC ProtectionSchemeInfo::BoxType() const { return FOURCC_SINF; }
|
|
|
| bool ProtectionSchemeInfo::Parse(BoxReader* reader) {
|
| - return reader->ScanChildren() &&
|
| + RCHECK(reader->ScanChildren() &&
|
| + reader->ReadChild(&format) &&
|
| reader->ReadChild(&type) &&
|
| - reader->ReadChild(&info);
|
| + reader->ReadChild(&info));
|
| + return true;
|
| }
|
|
|
| MovieHeader::MovieHeader()
|
| @@ -375,20 +378,15 @@ bool VideoSampleEntry::Parse(BoxReader* reader) {
|
| reader->Read2(&height) &&
|
| reader->SkipBytes(50));
|
|
|
| - RCHECK(reader->ScanChildren());
|
| - RCHECK(reader->MaybeReadChild(&pixel_aspect));
|
| - if (format == FOURCC_ENCV) {
|
| - RCHECK(reader->ReadChild(&sinf));
|
| - }
|
| + RCHECK(reader->ScanChildren() &&
|
| + reader->MaybeReadChild(&pixel_aspect));
|
|
|
| - // TODO(strobe): finalize format signaling for encrypted media
|
| - // (http://crbug.com/132351)
|
| - //
|
| - // if (format == FOURCC_AVC1 ||
|
| - // (format == FOURCC_ENCV &&
|
| - // sinf.format.format == FOURCC_AVC1)) {
|
| + if (format == FOURCC_ENCV)
|
| + RCHECK(reader->ReadChild(&sinf));
|
| + if (format == FOURCC_AVC1 ||
|
| + (format == FOURCC_ENCV && sinf.format.format == FOURCC_AVC1)) {
|
| RCHECK(reader->ReadChild(&avcc));
|
| - // }
|
| + }
|
| return true;
|
| }
|
|
|
| @@ -444,9 +442,8 @@ bool AudioSampleEntry::Parse(BoxReader* reader) {
|
| samplerate >>= 16;
|
|
|
| RCHECK(reader->ScanChildren());
|
| - if (format == FOURCC_ENCA) {
|
| + if (format == FOURCC_ENCA)
|
| RCHECK(reader->ReadChild(&sinf));
|
| - }
|
| RCHECK(reader->ReadChild(&esds));
|
| return true;
|
| }
|
| @@ -597,6 +594,7 @@ bool MovieFragmentHeader::Parse(BoxReader* reader) {
|
|
|
| TrackFragmentHeader::TrackFragmentHeader()
|
| : track_id(0),
|
| + sample_description_index(0),
|
| default_sample_duration(0),
|
| default_sample_size(0),
|
| default_sample_flags(0),
|
|
|