X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-commonfmt%2Fsrc%2Fdemuxers%2Favi.rs;h=6bfb4eb13a5099263c7cd4c9bb01723e51ccb118;hb=5580b11b0e9daf065c81a8b354295c6d5d1dd3dd;hp=93ac060b96b37326e39bdb7801287ae3c3f43cae;hpb=4a6263cf8ef4a0d6ae85a04d5bac8326190bbd1e;p=nihav.git diff --git a/nihav-commonfmt/src/demuxers/avi.rs b/nihav-commonfmt/src/demuxers/avi.rs index 93ac060..6bfb4eb 100644 --- a/nihav-commonfmt/src/demuxers/avi.rs +++ b/nihav-commonfmt/src/demuxers/avi.rs @@ -224,16 +224,18 @@ impl<'a> AVIDemuxer<'a> { } rest_size -= csz; } - self.src.read_skip(self.movi_size)?; - while rest_size > 0 { - let ret = self.parse_chunk(strmgr, RIFFTag::Chunk(mktag!(b"idx1")), rest_size,0); - if ret.is_err() { break; } - let (csz, end) = ret.unwrap(); - if end { - let _res = parse_idx1(&mut self.src, strmgr, seek_idx, csz, self.movi_pos); - break; + if !seek_idx.skip_index { + self.src.read_skip(self.movi_size)?; + while rest_size > 0 { + let ret = self.parse_chunk(strmgr, RIFFTag::Chunk(mktag!(b"idx1")), rest_size,0); + if ret.is_err() { break; } + let (csz, end) = ret.unwrap(); + if end { + let _res = parse_idx1(&mut self.src, strmgr, seek_idx, csz, self.movi_pos); + break; + } + rest_size -= csz; } - rest_size -= csz; } if self.movi_pos != 0 { self.src.seek(SeekFrom::Start(self.movi_pos))?; @@ -485,7 +487,8 @@ mod test { let mut br = ByteReader::new(&mut fr); let mut dmx = AVIDemuxer::new(&mut br); let mut sm = StreamManager::new(); - dmx.open(&mut sm).unwrap(); + let mut si = SeekIndex::new(); + dmx.open(&mut sm, &mut si).unwrap(); loop { let pktres = dmx.get_frame(&mut sm);