aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKostya Shishkov <kostya.shishkov@gmail.com>2020-10-24 18:19:04 +0200
committerKostya Shishkov <kostya.shishkov@gmail.com>2020-10-24 18:50:03 +0200
commitd4809976880805236bed090e96fc8442c37d88d8 (patch)
tree2cd1c933162737095f594b3f59cec622abdf2dc3
parent009c5158ba9cddf627cba468ef3691d5d45874e0 (diff)
downloadnihav-d4809976880805236bed090e96fc8442c37d88d8.tar.gz
mov: some fixes for MP4 parsing
-rw-r--r--nihav-commonfmt/src/demuxers/mov.rs7
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 {