use nihav_core::demuxers::*;
-use nihav_core::register;
+use nihav_registry::register;
use nihav_core::demuxers::DemuxerError::*;
macro_rules! mktag {
}
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))?;
let samplespersec = dmx.src.read_u32le()?;
let avgbytespersec = dmx.src.read_u32le()?;
let block_align = dmx.src.read_u16le()?;
- let bits_per_sample = dmx.src.read_u16le()? * 8;
+ let bits_per_sample = dmx.src.read_u16le()?;
let soniton = NASoniton::new(bits_per_sample as u8, SONITON_FLAG_SIGNED);
let ahdr = NAAudioInfo::new(samplespersec, channels as u8, soniton, block_align as usize);
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);