]> git.nihav.org Git - nihav.git/commitdiff
nihav_indeo: switch to ByteIO
authorKostya Shishkov <kostya.shishkov@gmail.com>
Sun, 17 Aug 2025 17:17:33 +0000 (19:17 +0200)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Mon, 18 Aug 2025 17:00:55 +0000 (19:00 +0200)
nihav-indeo/src/codecs/indeo3.rs
nihav-indeo/src/codecs/indeo3enc/mod.rs
nihav-indeo/src/demuxers/dvi.rs
nihav-indeo/src/demuxers/ivf.rs

index 3dd2e7844718d56a9a6540f84b129378eb5ecd74..5d6b72bbe710d8fe773ef66965f51a800ae859b0 100644 (file)
@@ -66,14 +66,14 @@ impl Header {
     }
 }
 
-struct DataReader<'a, 'b> {
-    br:         &'a mut ByteReader<'b>,
+struct DataReader<'a> {
+    br:         &'a mut dyn ByteIO,
     bpos:       u8,
     bitbuf:     u8,
 }
 
-impl<'a, 'b> DataReader<'a, 'b> {
-    fn new(br: &'a mut ByteReader<'b>) -> Self {
+impl<'a> DataReader<'a> {
+    fn new(br: &'a mut dyn ByteIO) -> Self {
         Self {
             br,
             bpos:       0,
@@ -108,8 +108,8 @@ impl Corrector {
     fn is_whole_block(&self) -> bool { matches!(*self, Corrector::Fill(_) | Corrector::ZeroBlock | Corrector::SkipBlock) }
 }
 
-struct QuadDecoder<'a, 'b, 'c> {
-    br:         &'a mut DataReader<'b, 'c>,
+struct QuadDecoder<'a, 'b> {
+    br:         &'a mut DataReader<'b>,
     cb:         [&'static IviDeltaCB; 4],
     cb_idx:     [usize; 4],
     mode:       u8,
@@ -121,8 +121,8 @@ struct QuadDecoder<'a, 'b, 'c> {
     fill:       Option<u8>,
 }
 
-impl<'a, 'b, 'c> QuadDecoder<'a, 'b, 'c> {
-    fn new(br: &'a mut DataReader<'b, 'c>, mode: u8, cb_index: [usize; 2]) -> Self {
+impl<'a, 'b> QuadDecoder<'a, 'b> {
+    fn new(br: &'a mut DataReader<'b>, mode: u8, cb_index: [usize; 2]) -> Self {
         Self {
             br, mode,
             lines_run:  0,
@@ -788,7 +788,7 @@ impl IV3Frame {
             plane.reset()
         }
     }
-    fn decode_planes(&mut self, ref_frame: &mut IV3Frame, br: &mut ByteReader, header: &mut Header, requant_tab: &RequantTab) -> DecoderResult<()> {
+    fn decode_planes(&mut self, ref_frame: &mut IV3Frame, br: &mut dyn ByteIO, header: &mut Header, requant_tab: &RequantTab) -> DecoderResult<()> {
         let data_start = header.data_start;
         let data_end   = header.data_end;
         for ((cur_plane, ref_plane), (&start, &end)) in self.plane.iter_mut()
@@ -903,8 +903,7 @@ impl NADecoder for Indeo3Decoder {
     #[allow(clippy::manual_range_contains)]
     fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let src = pkt.get_buffer();
-        let mut mr = MemoryReader::new_read(&src);
-        let mut br = ByteReader::new(&mut mr);
+        let mut br = MemoryReader::new_read(&src);
 
         // read OS header
         let frameno                     = br.read_u32le()?;
index 762f8a2764bf1c71a572788f3dbd577fa706754b..917b2a46bc74fd5202ed795652591e10a28c59af 100644 (file)
@@ -248,8 +248,7 @@ impl NAEncoder for Indeo3Encoder {
         }
         if skip_frame {
             let mut dbuf = Vec::with_capacity(16);
-            let mut gw   = GrowableMemoryWriter::new_write(&mut dbuf);
-            let mut bw   = ByteWriter::new(&mut gw);
+            let mut bw   = GrowableMemoryWriter::new_write(&mut dbuf);
 
             // OS header
             bw.write_u32le(self.frameno)?;
@@ -282,8 +281,7 @@ impl NAEncoder for Indeo3Encoder {
 
         if let Some(ref vbuf) = buf.get_vbuf() {
             let mut dbuf = Vec::with_capacity(16);
-            let mut gw   = GrowableMemoryWriter::new_write(&mut dbuf);
-            let mut bw   = ByteWriter::new(&mut gw);
+            let mut bw   = GrowableMemoryWriter::new_write(&mut dbuf);
 
             let (width, height) = vbuf.get_dimensions(0);
             if width != self.width || height != self.height {
index 6a2d90e330f6c1f03a893759ca408cc4ae43ec59..21fbd1a0d951f58460fb919f1daf0356f493dfe3 100644 (file)
@@ -12,14 +12,14 @@ const GRAY_FORMAT: NAPixelFormaton = NAPixelFormaton {
 };
 
 struct DVIDemuxer<'a> {
-    src:            &'a mut ByteReader<'a>,
+    src:            &'a mut dyn ByteIO,
     data_end:       u64,
     packets:        VecDeque<NAPacket>,
     fsizes:         Vec<usize>,
 }
 
 impl<'a> DVIDemuxer<'a> {
-    fn new(src: &'a mut ByteReader<'a>) -> Self {
+    fn new(src: &'a mut dyn ByteIO) -> Self {
         Self {
             src,
             data_end:   0,
@@ -225,7 +225,7 @@ impl<'a> NAOptionHandler for DVIDemuxer<'a> {
 pub struct DVIDemuxerCreator { }
 
 impl DemuxerCreator for DVIDemuxerCreator {
-    fn new_demuxer<'a>(&self, br: &'a mut ByteReader<'a>) -> Box<dyn DemuxCore<'a> + 'a> {
+    fn new_demuxer<'a>(&self, br: &'a mut dyn ByteIO) -> Box<dyn DemuxCore<'a> + 'a> {
         Box::new(DVIDemuxer::new(br))
     }
     fn get_name(&self) -> &'static str { "dvi" }
@@ -240,8 +240,7 @@ mod test {
     fn test_dvi_demux() {
         // sample comes from a demo by Digital Video Arts
         let mut file = File::open("assets/Indeo/YULELOG.AVS").unwrap();
-        let mut fr = FileReader::new_read(&mut file);
-        let mut br = ByteReader::new(&mut fr);
+        let mut br = FileReader::new_read(&mut file);
         let mut dmx = DVIDemuxer::new(&mut br);
         let mut sm = StreamManager::new();
         let mut si = SeekIndex::new();
index 6809bb4ec8b542dcb4d4efe4dc61ae07dd94997b..813ade7ba840f6d0fa203a4ced4fa96397e1be53 100644 (file)
@@ -1,7 +1,7 @@
 use nihav_core::demuxers::*;
 
 struct IVFDemuxer<'a> {
-    src:            &'a mut ByteReader<'a>,
+    src:            &'a mut dyn ByteIO,
     nframes:        u32,
     vframe:         u32,
     aframe:         u32,
@@ -15,7 +15,7 @@ struct IVFDemuxer<'a> {
 }
 
 impl<'a> IVFDemuxer<'a> {
-    fn new(src: &'a mut ByteReader<'a>) -> Self {
+    fn new(src: &'a mut dyn ByteIO) -> Self {
         IVFDemuxer {
             src,
             nframes:    0,
@@ -272,7 +272,7 @@ impl<'a> NAOptionHandler for IVFDemuxer<'a> {
 pub struct IVFDemuxerCreator { }
 
 impl DemuxerCreator for IVFDemuxerCreator {
-    fn new_demuxer<'a>(&self, br: &'a mut ByteReader<'a>) -> Box<dyn DemuxCore<'a> + 'a> {
+    fn new_demuxer<'a>(&self, br: &'a mut dyn ByteIO) -> Box<dyn DemuxCore<'a> + 'a> {
         Box::new(IVFDemuxer::new(br))
     }
     fn get_name(&self) -> &'static str { "ivf" }
@@ -287,8 +287,7 @@ mod test {
     fn test_ivf_demux() {
         // sample is a trailer for Heart of Darkness game
         let mut file = File::open("assets/Indeo/TRAILERIIE.IVF").unwrap();
-        let mut fr = FileReader::new_read(&mut file);
-        let mut br = ByteReader::new(&mut fr);
+        let mut br = FileReader::new_read(&mut file);
         let mut dmx = IVFDemuxer::new(&mut br);
         let mut sm = StreamManager::new();
         let mut si = SeekIndex::new();