X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-game%2Fsrc%2Fdemuxers%2Fbmv.rs;h=19019d450d0c61cb3596a578e83abdbd50908464;hb=787b8d03074419d7f8e6b52daba02a3807444bc2;hp=6ef023ba58946bdabfc7066df9ce4eda67cf885f;hpb=6011e20199143f519881660144a4ca95ba77fd2d;p=nihav.git diff --git a/nihav-game/src/demuxers/bmv.rs b/nihav-game/src/demuxers/bmv.rs index 6ef023b..19019d4 100644 --- a/nihav-game/src/demuxers/bmv.rs +++ b/nihav-game/src/demuxers/bmv.rs @@ -12,7 +12,7 @@ struct BMVDemuxer<'a> { impl<'a> DemuxCore<'a> for BMVDemuxer<'a> { #[allow(unused_variables)] - fn open(&mut self, strmgr: &mut StreamManager) -> DemuxerResult<()> { + fn open(&mut self, strmgr: &mut StreamManager, _seek_index: &mut SeekIndex) -> DemuxerResult<()> { let src = &mut self.src; let vhdr = NAVideoInfo::new(640, 429, false, PAL8_FORMAT); @@ -30,7 +30,7 @@ impl<'a> DemuxCore<'a> for BMVDemuxer<'a> { } fn get_frame(&mut self, strmgr: &mut StreamManager) -> DemuxerResult { - if self.pkt_buf.len() > 0 { + if !self.pkt_buf.is_empty() { return Ok(self.pkt_buf.pop().unwrap()); } @@ -51,13 +51,12 @@ impl<'a> DemuxCore<'a> for BMVDemuxer<'a> { let (tb_num, tb_den) = str.get_timebase(); let ts = NATimeInfo::new(Some(self.apos), None, None, tb_num, tb_den); let apkt = self.src.read_packet(str, ts, false, asize)?; - self.apos += (nblocks as u64) * 32; + self.apos += u64::from(nblocks) * 32; self.pkt_buf.push(apkt); } else { asize = 0; } - let mut buf: Vec = Vec::with_capacity(size - asize + 1); - buf.resize(size - asize + 1, 0); + let mut buf: Vec = vec![0; size - asize + 1]; buf[0] = ctype; self.src.read_buf(&mut buf[1..])?; @@ -71,12 +70,17 @@ impl<'a> DemuxCore<'a> for BMVDemuxer<'a> { } } - #[allow(unused_variables)] - fn seek(&mut self, time: u64) -> DemuxerResult<()> { - Err(DemuxerError::NotImplemented) + fn seek(&mut self, _time: u64, _seek_index: &SeekIndex) -> DemuxerResult<()> { + Err(DemuxerError::NotPossible) } } +impl<'a> NAOptionHandler for BMVDemuxer<'a> { + fn get_supported_options(&self) -> &[NAOptionDefinition] { &[] } + fn set_options(&mut self, _options: &[NAOption]) { } + fn query_option_value(&self, _name: &str) -> Option { None } +} + impl<'a> BMVDemuxer<'a> { fn new(io: &'a mut ByteReader<'a>) -> Self { Self { @@ -112,7 +116,7 @@ struct BMV3Demuxer<'a> { impl<'a> DemuxCore<'a> for BMV3Demuxer<'a> { #[allow(unused_variables)] - fn open(&mut self, strmgr: &mut StreamManager) -> DemuxerResult<()> { + fn open(&mut self, strmgr: &mut StreamManager, _seek_index: &mut SeekIndex) -> DemuxerResult<()> { let src = &mut self.src; let mut magic = [0u8; 4]; @@ -158,7 +162,7 @@ impl<'a> DemuxCore<'a> for BMV3Demuxer<'a> { } fn get_frame(&mut self, strmgr: &mut StreamManager) -> DemuxerResult { - if self.pkt_buf.len() > 0 { + if !self.pkt_buf.is_empty() { return Ok(self.pkt_buf.pop().unwrap()); } @@ -178,8 +182,7 @@ impl<'a> DemuxCore<'a> for BMV3Demuxer<'a> { asize = self.asize; } validate!(asize <= size); - let mut buf: Vec = Vec::with_capacity(asize + 1); - buf.resize(asize + 1, 0); + let mut buf: Vec = vec![0; asize + 1]; buf[0] = (self.src.tell() & 1) as u8; self.src.read_buf(&mut buf[1..])?; @@ -194,14 +197,13 @@ impl<'a> DemuxCore<'a> for BMV3Demuxer<'a> { asize = 0; } if size == asize { - if self.pkt_buf.len() > 0 { + if !self.pkt_buf.is_empty() { return Ok(self.pkt_buf.pop().unwrap()); } else { continue; } } - let mut buf: Vec = Vec::with_capacity(size - asize + 1); - buf.resize(size - asize + 1, 0); + let mut buf: Vec = vec![0; size - asize + 1]; buf[0] = ctype; self.src.read_buf(&mut buf[1..])?; @@ -215,12 +217,17 @@ impl<'a> DemuxCore<'a> for BMV3Demuxer<'a> { } } - #[allow(unused_variables)] - fn seek(&mut self, time: u64) -> DemuxerResult<()> { - Err(DemuxerError::NotImplemented) + fn seek(&mut self, _time: u64, _seek_index: &SeekIndex) -> DemuxerResult<()> { + Err(DemuxerError::NotPossible) } } +impl<'a> NAOptionHandler for BMV3Demuxer<'a> { + fn get_supported_options(&self) -> &[NAOptionDefinition] { &[] } + fn set_options(&mut self, _options: &[NAOption]) { } + fn query_option_value(&self, _name: &str) -> Option { None } +} + impl<'a> BMV3Demuxer<'a> { fn new(io: &'a mut ByteReader<'a>) -> Self { Self { @@ -257,7 +264,8 @@ mod test { let mut br = ByteReader::new(&mut fr); let mut dmx = BMVDemuxer::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); if let Err(e) = pktres { @@ -275,7 +283,8 @@ mod test { let mut br = ByteReader::new(&mut fr); let mut dmx = BMV3Demuxer::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); if let Err(e) = pktres {