diff options
author | Kostya Shishkov <kostya.shishkov@gmail.com> | 2020-10-24 18:19:04 +0200 |
---|---|---|
committer | Kostya Shishkov <kostya.shishkov@gmail.com> | 2020-10-24 18:50:03 +0200 |
commit | d4809976880805236bed090e96fc8442c37d88d8 (patch) | |
tree | 2cd1c933162737095f594b3f59cec622abdf2dc3 | |
parent | 009c5158ba9cddf627cba468ef3691d5d45874e0 (diff) | |
download | nihav-d4809976880805236bed090e96fc8442c37d88d8.tar.gz |
mov: some fixes for MP4 parsing
-rw-r--r-- | nihav-commonfmt/src/demuxers/mov.rs | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/nihav-commonfmt/src/demuxers/mov.rs b/nihav-commonfmt/src/demuxers/mov.rs index 5a0e4f9..1c52dfe 100644 --- a/nihav-commonfmt/src/demuxers/mov.rs +++ b/nihav-commonfmt/src/demuxers/mov.rs @@ -335,7 +335,7 @@ fn read_hdlr(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult let _comp_flags = br.read_u32be()?; let _comp_flags_mask = br.read_u32be()?; - if comp_type == mktag!(b"mhlr") { + if comp_type == mktag!(b"mhlr") || comp_type == 0 { if comp_subtype == mktag!(b"vide") { track.stream_type = StreamType::Video; } else if comp_subtype == mktag!(b"soun") { @@ -630,14 +630,15 @@ fn read_stsd(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult } fn read_stts(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult<u64> { - validate!(size >= 16); + validate!(size >= 8); let start_pos = br.tell(); let version = br.read_byte()?; validate!(version == 0); let _flags = br.read_u24be()?; let entries = br.read_u32be()? as usize; validate!(entries as u64 <= (size - 8) / 8); - if entries == 1 { + if entries == 0 { + } else if entries == 1 { let _count = br.read_u32be()?; let tb_num = br.read_u32be()?; if let Some(ref mut stream) = track.stream { |