]> git.nihav.org Git - nihav.git/commitdiff
nihav_game: switch to ByteIO
authorKostya Shishkov <kostya.shishkov@gmail.com>
Sun, 17 Aug 2025 16:58:43 +0000 (18:58 +0200)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Mon, 18 Aug 2025 17:00:24 +0000 (19:00 +0200)
18 files changed:
nihav-game/src/codecs/bmv.rs
nihav-game/src/codecs/bmv3.rs
nihav-game/src/codecs/gremlinvideo.rs
nihav-game/src/codecs/kmvc.rs
nihav-game/src/codecs/midivid.rs
nihav-game/src/codecs/seq.rs
nihav-game/src/codecs/sga.rs
nihav-game/src/codecs/smush/iact.rs
nihav-game/src/codecs/smush/v1.rs
nihav-game/src/codecs/smush/v2.rs
nihav-game/src/codecs/vmd.rs
nihav-game/src/demuxers/bmv.rs
nihav-game/src/demuxers/gdv.rs
nihav-game/src/demuxers/seq.rs
nihav-game/src/demuxers/sga.rs
nihav-game/src/demuxers/smush.rs
nihav-game/src/demuxers/vmd.rs
nihav-game/src/muxers/ea.rs

index ac487b03f412ab686fd4cb1b04b07ca8e310df80..a9d43130ca2f7a75bea8a61f2813ea950660e472 100644 (file)
@@ -187,8 +187,7 @@ impl NADecoder for BMVVideoDecoder {
         let src = pkt.get_buffer();
         validate!(src.len() > 1);
 
-        let mut mr = MemoryReader::new_read(&src);
-        let mut br = ByteReader::new(&mut mr);
+        let mut br = MemoryReader::new_read(&src);
         let flags                               = br.read_byte()?;
 
         if (flags & BMV_COMMAND) != 0 {
index 6d4149fa57131f527e229c8a3dffe67fcd154085..875285aa61885c42c3a123f8f1f94bed058251de 100644 (file)
@@ -33,7 +33,7 @@ impl NibbleReader {
     fn new() -> Self {
         Self { nib: 0, has_nib: false }
     }
-    fn get_nib(&mut self, br: &mut ByteReader) -> DecoderResult<u8> {
+    fn get_nib(&mut self, br: &mut dyn ByteIO) -> DecoderResult<u8> {
         if self.has_nib {
             self.has_nib = false;
             Ok(self.nib)
@@ -44,7 +44,7 @@ impl NibbleReader {
             Ok(b & 0xF)
         }
     }
-    fn get_length(&mut self, br: &mut ByteReader, mut len: usize, mut shift: u8) -> DecoderResult<usize> {
+    fn get_length(&mut self, br: &mut dyn ByteIO, mut len: usize, mut shift: u8) -> DecoderResult<usize> {
         loop {
             let nib = self.get_nib(br)? as usize;
             len |= nib << shift;
@@ -111,7 +111,7 @@ impl BMV3VideoDecoder {
         }
     }
     #[allow(clippy::identity_op)]
-    fn decode_frame(&mut self, br: &mut ByteReader) -> DecoderResult<()> {
+    fn decode_frame(&mut self, br: &mut dyn ByteIO) -> DecoderResult<()> {
         let mut idx = 0;
         loop {
             let op                          = br.read_byte()?;
@@ -258,7 +258,7 @@ impl BMV3VideoDecoder {
         self.mode = BMV3Mode::Copy;
         Ok(())
     }
-    fn pixfunc(&mut self, br: &mut ByteReader, len: usize) -> DecoderResult<()> {
+    fn pixfunc(&mut self, br: &mut dyn ByteIO, len: usize) -> DecoderResult<()> {
         validate!(len <= self.end - self.pos);
         for _ in 0..len {
             let op                          = BMV_PIXFUNCS_MAP[br.read_byte()? as usize];
@@ -290,7 +290,7 @@ impl BMV3VideoDecoder {
         Ok(())
     }
 
-    fn decode_normal(&mut self, br: &mut ByteReader, op: u8) -> DecoderResult<()> {
+    fn decode_normal(&mut self, br: &mut dyn ByteIO, op: u8) -> DecoderResult<()> {
         if op < 0x40 {
             let mode = op & 1;
             let len = ((op >> 1) & 0x7) as usize;
@@ -349,7 +349,7 @@ impl BMV3VideoDecoder {
         }
         Ok(())
     }
-    fn decode_copy(&mut self, br: &mut ByteReader, op: u8) -> DecoderResult<()> {
+    fn decode_copy(&mut self, br: &mut dyn ByteIO, op: u8) -> DecoderResult<()> {
         if op < 0x40 {
             let len = ((op >> 1) & 0x7) as usize;
             if len < 2 {
@@ -386,7 +386,7 @@ impl BMV3VideoDecoder {
         }
         Ok(())
     }
-    fn decode_mode4(&mut self, br: &mut ByteReader, op: u8) -> DecoderResult<()> {
+    fn decode_mode4(&mut self, br: &mut dyn ByteIO, op: u8) -> DecoderResult<()> {
         if (op & 0xF) < 4 {
             let mut len = ((op & 3) * 2) as usize;
             if (op & 0xF0) >= 0x20 {
@@ -404,7 +404,7 @@ impl BMV3VideoDecoder {
         }
         Ok(())
     }
-    fn decode_mode5c(&mut self, br: &mut ByteReader, op: u8) -> DecoderResult<()> {
+    fn decode_mode5c(&mut self, br: &mut dyn ByteIO, op: u8) -> DecoderResult<()> {
         if (op & 0xF) < 4 {
             let mut len = ((op & 3) * 2) as usize;
             if (op & 0xF0) >= 0x20 {
@@ -457,8 +457,7 @@ impl NADecoder for BMV3VideoDecoder {
         let src = pkt.get_buffer();
         validate!(src.len() > 1);
 
-        let mut mr = MemoryReader::new_read(&src);
-        let mut br = ByteReader::new(&mut mr);
+        let mut br = MemoryReader::new_read(&src);
         let flags                               = br.read_byte()?;
 
         if (flags & BMV_COMMAND) != 0 {
index ad637968abda653b9aa6771ef5534e9e2c539b32..6db19137a9aa48ebd49ff010b6a328254ef74b46 100644 (file)
@@ -28,7 +28,7 @@ const PREAMBLE_SIZE: usize = 4096;
 
 impl Bits8 {
     fn new() -> Self { Bits8 { queue: 0, fill: 0 } }
-    fn read_2bits(&mut self, br: &mut ByteReader) -> ByteIOResult<u8> {
+    fn read_2bits(&mut self, br: &mut dyn ByteIO) -> ByteIOResult<u8> {
         if self.fill == 0 {
             self.queue  = br.read_byte()?;
             self.fill  += 8;
@@ -42,12 +42,12 @@ impl Bits8 {
 
 impl Bits32 {
     fn new() -> Self { Bits32 { queue: 0, fill: 0 } }
-    fn fill(&mut self, br: &mut ByteReader) -> ByteIOResult<()> {
+    fn fill(&mut self, br: &mut dyn ByteIO) -> ByteIOResult<()> {
         self.queue = br.read_u32le()?;
         self.fill  = 32;
         Ok(())
     }
-    fn read_bits(&mut self, br: &mut ByteReader, nbits: u8) -> ByteIOResult<u32> {
+    fn read_bits(&mut self, br: &mut dyn ByteIO, nbits: u8) -> ByteIOResult<u32> {
         let res = self.queue & ((1 << nbits) - 1);
         self.queue >>= nbits;
         self.fill   -= nbits;
@@ -271,7 +271,7 @@ impl GremlinVideoDecoder {
         }
     }
 
-    fn decode_method2(&mut self, br: &mut ByteReader) -> DecoderResult<()> {
+    fn decode_method2(&mut self, br: &mut dyn ByteIO) -> DecoderResult<()> {
         let mut bits = Bits8::new();
 
         let mut size = self.info.get_properties().get_video_info().unwrap().get_width() *
@@ -309,7 +309,7 @@ impl GremlinVideoDecoder {
         Ok(())
     }
 
-    fn decode_method2_16bit(&mut self, br: &mut ByteReader) -> DecoderResult<()> {
+    fn decode_method2_16bit(&mut self, br: &mut dyn ByteIO) -> DecoderResult<()> {
         let mut bits = Bits8::new();
 
         if self.frame16[8] != 64 {
@@ -351,7 +351,7 @@ impl GremlinVideoDecoder {
         Ok(())
     }
 
-    fn decode_method5(&mut self, br: &mut ByteReader, skip: usize) -> DecoderResult<()> {
+    fn decode_method5(&mut self, br: &mut dyn ByteIO, skip: usize) -> DecoderResult<()> {
         let mut bits = Bits8::new();
 
         let mut size = self.info.get_properties().get_video_info().unwrap().get_width() *
@@ -396,7 +396,7 @@ impl GremlinVideoDecoder {
     }
 
     #[allow(clippy::identity_op)]
-    fn decode_method68(&mut self, br: &mut ByteReader,
+    fn decode_method68(&mut self, br: &mut dyn ByteIO,
                        skip: usize, use8: bool) -> DecoderResult<()> {
         let mut bits = Bits32::new();
 
@@ -564,8 +564,7 @@ impl NADecoder for GremlinVideoDecoder {
     }
     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);
         let flags = br.read_u32le()?;
         let w = self.info.get_properties().get_video_info().unwrap().get_width();
         let h = self.info.get_properties().get_video_info().unwrap().get_height();
index 88cb7f403a59c0dbb3f0fa20ce2822d82840f574..f1a3ab1f6981008ef544d2600fdf81f0df2daf4d 100644 (file)
@@ -288,8 +288,7 @@ impl NADecoder for KMVCDecoder {
             }
         }
 
-        let mut mr = MemoryReader::new_read(&src);
-        let mut br = ByteReader::new(&mut mr);
+        let mut br = MemoryReader::new_read(&src);
 
         let header = br.read_byte()?;
         let method = header & 0xF;
index 1e3b85811ecee896661856fb47d2da4c65c3abcc..3ce4f625593bb9fd0844b6eb7f28fb004e1fd78f 100644 (file)
@@ -75,10 +75,8 @@ fn decode_frame(frm: &mut NASimpleVideoFrame<u8>, src: &[u8], width: usize, heig
     validate!(src.len() > idx_start);
 
     let src1 = if num_vec > 256 { &src[idx_start + (nblocks + 7)/8..] } else { &src[idx_start..] };
-    let mut mr = MemoryReader::new_read(src1);
-    let mut idx_br = ByteReader::new(&mut mr);
-    let mut mr = MemoryReader::new_read(&src[idx_start..]);
-    let mut idx9_br = ByteReader::new(&mut mr);
+    let mut idx_br = MemoryReader::new_read(src1);
+    let mut idx9_br = MemoryReader::new_read(&src[idx_start..]);
     let mut hi9 = 0u8;
     let mut bits = 0u8;
     for y in (0..height).step_by(2) {
index 5968423451f4aa22b0cc85b327af53e687796fc8..d0c03ddfd6f795d015e07e6b2927520d102ab957 100644 (file)
@@ -54,8 +54,7 @@ impl NADecoder for SequenceDecoder {
         let src = pkt.get_buffer();
         validate!(src.len() > FRAME_HEADER);
 
-        let mut mr = MemoryReader::new_read(&src);
-        let mut br = ByteReader::new(&mut mr);
+        let mut br = MemoryReader::new_read(&src);
 
         let width       = br.read_u16le()? as usize;
         let height      = br.read_u16le()? as usize;
@@ -83,10 +82,8 @@ impl NADecoder for SequenceDecoder {
             },
             1 | 11 => {
                 validate!(!opcodes.is_empty());
-                let mut mr = MemoryReader::new_read(opcodes);
-                let mut ops = ByteReader::new(&mut mr);
-                let mut mr = MemoryReader::new_read(clr_data);
-                let mut clr = ByteReader::new(&mut mr);
+                let mut ops = MemoryReader::new_read(opcodes);
+                let mut clr = MemoryReader::new_read(clr_data);
 
                 let mut x = xoff;
                 let mut y = yoff;
index f8cff3ebd70d0228b04a0ef51bc9a32cc573104d..4339fd6effe32aaf22fe0a490c2de945be648b8c 100644 (file)
@@ -31,7 +31,7 @@ impl DPVideoDecoder {
             height:     0,
         }
     }
-    fn decode_81(&mut self, br: &mut ByteReader) -> DecoderResult<()> {
+    fn decode_81(&mut self, br: &mut dyn ByteIO) -> DecoderResult<()> {
         let mut pat = [0; 8];
         let mut cur_clr = [0; 16];
         let mut off = 0;
@@ -171,10 +171,8 @@ impl DPVideoDecoder {
         Ok(())
     }
     fn decode_85(&mut self, clr_src: &[u8], op_src: &[u8]) -> DecoderResult<()> {
-        let mut mr = MemoryReader::new_read(clr_src);
-        let mut clrs = ByteReader::new(&mut mr);
-        let mut mr = MemoryReader::new_read(op_src);
-        let mut ops = ByteReader::new(&mut mr);
+        let mut clrs = MemoryReader::new_read(clr_src);
+        let mut ops = MemoryReader::new_read(op_src);
 
         let mut pat = [0; 8];
         let mut cur_clr = [0; 16];
@@ -444,8 +442,7 @@ impl NADecoder for DPVideoDecoder {
         match self.subtype {
             0x81 | 0x8A => {
                 validate!(src.len() > 12);
-                let mut mr = MemoryReader::new_read(&src);
-                let mut br = ByteReader::new(&mut mr);
+                let mut br = MemoryReader::new_read(&src);
                 let stype           = br.read_byte()?;
                 validate!(stype == 0x81 || stype == 0x8A);
                                       br.read_byte()?;
@@ -469,8 +466,7 @@ impl NADecoder for DPVideoDecoder {
             },
             0x85 | 0x86 | 0x89 => {
                 validate!(src.len() > 6);
-                let mut mr = MemoryReader::new_read(&src);
-                let mut br = ByteReader::new(&mut mr);
+                let mut br = MemoryReader::new_read(&src);
 
                 let pal_offset      = usize::from(br.read_u16be()?);
                 let pal_size        = usize::from(br.read_u16be()?);
index 7dccff416c09109348dcbd6f996c631766642a4b..ae2886a23fb3b1b9e4c5b0607f8094770e980593 100644 (file)
@@ -51,8 +51,7 @@ impl NADecoder for IACTDecoder {
             }
             let _left = read_u32le(&src[14..])?;
             let offset = if self.tot_size == 0 {
-                    let mut mr = MemoryReader::new_read(&src[18..]);
-                    let mut br = ByteReader::new(&mut mr);
+                    let mut br = MemoryReader::new_read(&src[18..]);
                     let tag             = br.read_tag()?;
                     if &tag == b"iMUS" {
                         self.tot_size   = br.read_u32be()?;
@@ -82,8 +81,7 @@ impl NADecoder for IACTDecoder {
             }
             let nsamples = (match self.bits {
                     _ if self.old => {
-                        let mut mr = MemoryReader::new_read(&self.queued);
-                        let mut br = ByteReader::new(&mut mr);
+                        let mut br = MemoryReader::new_read(&self.queued);
                         let mut nblocks = 0;
                         while br.left() > 0 {
                             let len     = br.read_u16be()? as usize;
@@ -106,8 +104,7 @@ impl NADecoder for IACTDecoder {
             let adata = adata.get_data_mut().unwrap();
             match self.bits {
                 _ if self.old => {
-                    let mut mr = MemoryReader::new_read(&self.queued);
-                    let mut br = ByteReader::new(&mut mr);
+                    let mut br = MemoryReader::new_read(&self.queued);
                     for dst in adata.chunks_exact_mut(1024 * 2) {
                         let len         = br.read_u16be()? as usize;
                         let end = br.tell() + (len as u64);
index dbee752e6070a50d1048610b081e82d44035970c..46778e378e07291a024744c92848a260fe5f8f7c 100644 (file)
@@ -130,7 +130,7 @@ impl Glyphs {
             }
         }
     }
-    fn read_additional(&mut self, br: &mut ByteReader, add: u16) -> DecoderResult<()> {
+    fn read_additional(&mut self, br: &mut dyn ByteIO, add: u16) -> DecoderResult<()> {
         if add > 0 {
             validate!(add <= 256);
             let mut gbuf = [0; 8];
@@ -284,7 +284,7 @@ fn do_mc(dst: &mut [u8], src: &[u8], stride: usize, xoff: isize, yoff: isize, w:
 }
 
 #[allow(clippy::too_many_arguments)]
-fn do_block47(br: &mut ByteReader, dst: &mut [u8], frm1: &[u8], frm2: &[u8], x: usize, y: usize, stride: usize, bsize: usize, clr: &[u8; 6], glyphs: &Glyphs) -> DecoderResult<()> {
+fn do_block47(br: &mut dyn ByteIO, dst: &mut [u8], frm1: &[u8], frm2: &[u8], x: usize, y: usize, stride: usize, bsize: usize, clr: &[u8; 6], glyphs: &Glyphs) -> DecoderResult<()> {
     let op                              = br.read_byte()?;
     match op {
         0xFF if bsize > 2 => {
@@ -413,7 +413,7 @@ impl Smush1Decoder {
         }
     }
 
-    fn decode_rle(br: &mut ByteReader, dst: &mut [u8], w: usize, h: usize, stride: usize) -> DecoderResult<()> {
+    fn decode_rle(br: &mut dyn ByteIO, dst: &mut [u8], w: usize, h: usize, stride: usize) -> DecoderResult<()> {
         let mut x = 0;
         let mut y = 0;
         let mut len = 0;
@@ -445,7 +445,7 @@ impl Smush1Decoder {
         Ok(())
     }
 
-    fn decode_1(&mut self, br: &mut ByteReader, x: i16, y: i16, w: usize, h: usize, transparent: bool) -> DecoderResult<()> {
+    fn decode_1(&mut self, br: &mut dyn ByteIO, x: i16, y: i16, w: usize, h: usize, transparent: bool) -> DecoderResult<()> {
         for yy in 0..h {
             let len                     = u64::from(br.read_u16le()?);
             let end = br.tell() + len;
@@ -478,7 +478,7 @@ impl Smush1Decoder {
 
         Ok(())
     }
-    fn decode_2(&mut self, br: &mut ByteReader, x: i16, y: i16, _w: usize, _h: usize, len: usize) -> DecoderResult<()> {
+    fn decode_2(&mut self, br: &mut dyn ByteIO, x: i16, y: i16, _w: usize, _h: usize, len: usize) -> DecoderResult<()> {
 
         validate!((len & 3) == 0);
         let mut xpos = x;
@@ -495,7 +495,7 @@ impl Smush1Decoder {
         Ok(())
     }
     #[allow(clippy::too_many_arguments)]
-    fn decode_4(&mut self, br: &mut ByteReader, x: i16, y: i16, w: usize, h: usize, mode: u8, add: u16) -> DecoderResult<()> {
+    fn decode_4(&mut self, br: &mut dyn ByteIO, x: i16, y: i16, w: usize, h: usize, mode: u8, add: u16) -> DecoderResult<()> {
         self.glyphs.make_glyphs_4(mode);
         self.glyphs.read_additional(br, add)?;
 
@@ -535,7 +535,7 @@ impl Smush1Decoder {
         Ok(())
     }
     #[allow(clippy::too_many_arguments)]
-    fn decode_5(&mut self, br: &mut ByteReader, x: i16, y: i16, w: usize, h: usize, mode: u8, add: u16) -> DecoderResult<()> {
+    fn decode_5(&mut self, br: &mut dyn ByteIO, x: i16, y: i16, w: usize, h: usize, mode: u8, add: u16) -> DecoderResult<()> {
         self.glyphs.make_glyphs_5(mode);
         self.glyphs.read_additional(br, add)?;
 
@@ -571,7 +571,7 @@ impl Smush1Decoder {
 
         Ok(())
     }
-    fn decode_21(&mut self, br: &mut ByteReader, x: i16, y: i16, w: usize, h: usize, size: usize) -> DecoderResult<()> {
+    fn decode_21(&mut self, br: &mut dyn ByteIO, x: i16, y: i16, w: usize, h: usize, size: usize) -> DecoderResult<()> {
         let end = br.tell() + (size as u64);
         for yy in 0..h {
             if br.tell() >= end { break; }
@@ -601,7 +601,7 @@ impl Smush1Decoder {
         Ok(())
     }
     #[allow(clippy::too_many_arguments)]
-    fn decode_23(&mut self, br: &mut ByteReader, x: i16, y: i16, w: usize, h: usize, bias: u8, add: u16, old: bool) -> DecoderResult<()> {
+    fn decode_23(&mut self, br: &mut dyn ByteIO, x: i16, y: i16, w: usize, h: usize, bias: u8, add: u16, old: bool) -> DecoderResult<()> {
         let mut lut = [0; 256];
         if old {
             for (i, el) in lut.iter_mut().enumerate() {
@@ -637,7 +637,7 @@ impl Smush1Decoder {
 
         Ok(())
     }
-    fn decode_37(&mut self, br: &mut ByteReader, x: i16, y: i16, mut w: usize, mut h: usize) -> DecoderResult<()> {
+    fn decode_37(&mut self, br: &mut dyn ByteIO, x: i16, y: i16, mut w: usize, mut h: usize) -> DecoderResult<()> {
         let compr                       = br.read_byte()?;
         let mv_off                      = br.read_byte()? as usize;
         validate!(mv_off <= 2);
@@ -788,7 +788,7 @@ impl Smush1Decoder {
 
         Ok(())
     }
-    fn decode_47(&mut self, br: &mut ByteReader, x: i16, y: i16, w: usize, h: usize) -> DecoderResult<()> {
+    fn decode_47(&mut self, br: &mut dyn ByteIO, x: i16, y: i16, w: usize, h: usize) -> DecoderResult<()> {
         let seq                         = br.read_u16le()?;
         let compr                       = br.read_byte()?;
         let reorder                     = br.read_byte()?;
@@ -871,7 +871,7 @@ impl Smush1Decoder {
 
         Ok(())
     }
-    fn decode_48(&mut self, br: &mut ByteReader, x: i16, y: i16, mut w: usize, mut h: usize) -> DecoderResult<()> {
+    fn decode_48(&mut self, br: &mut dyn ByteIO, x: i16, y: i16, mut w: usize, mut h: usize) -> DecoderResult<()> {
         let compr                       = br.read_byte()?;
         let mvsel                       = br.read_byte()? as usize;
         validate!(mvsel < 2);
@@ -1019,8 +1019,7 @@ impl NADecoder for Smush1Decoder {
         let src = pkt.get_buffer();
         validate!(src.len() > 8);
 
-        let mut mr = MemoryReader::new_read(&src);
-        let mut br = ByteReader::new(&mut mr);
+        let mut br = MemoryReader::new_read(&src);
 
         let mut store = false;
         while br.left() > 0 {
@@ -1092,22 +1091,19 @@ impl NADecoder for Smush1Decoder {
                         37 => {
                             let start = br.tell() as usize;
                             let end   = start + size - 14;
-                            let mut mr = MemoryReader::new_read(&src[start..end]);
-                            let mut br = ByteReader::new(&mut mr);
+                            let mut br = MemoryReader::new_read(&src[start..end]);
                             self.decode_37(&mut br, x, y, w, h)?;
                         },
                         47 => {
                             let start = br.tell() as usize;
                             let end   = start + size - 14;
-                            let mut mr = MemoryReader::new_read(&src[start..end]);
-                            let mut br = ByteReader::new(&mut mr);
+                            let mut br = MemoryReader::new_read(&src[start..end]);
                             self.decode_47(&mut br, x, y, w, h)?;
                         },
                         48 => {
                             let start = br.tell() as usize;
                             let end   = start + size - 14;
-                            let mut mr = MemoryReader::new_read(&src[start..end]);
-                            let mut br = ByteReader::new(&mut mr);
+                            let mut br = MemoryReader::new_read(&src[start..end]);
                             self.decode_48(&mut br, x, y, w, h)?;
                         },
                         _ => return Err(DecoderError::NotImplemented),
index ddf8f77ed2c2ac6debd751637129688ccfed50b5..76db1e9f078fe4f479e8a88f0457793309f1af2f 100644 (file)
@@ -57,7 +57,7 @@ impl FrameData {
     }
 }
 
-fn decode_rle(br: &mut ByteReader, dst: &mut [u8]) -> DecoderResult<()> {
+fn decode_rle(br: &mut dyn ByteIO, dst: &mut [u8]) -> DecoderResult<()> {
     let mut len = 0;
     let mut clr = 0;
     let mut run = false;
@@ -117,7 +117,7 @@ fn draw_glyph(dst: &mut [u16], stride: usize, bsize: usize, glyph: &[u8], clr2:
     }
 }
 
-fn do_block2(br: &mut ByteReader, dst: &mut [u16], x: usize, y: usize, bsize: usize, bdata: &BlockData) -> DecoderResult<()> {
+fn do_block2(br: &mut dyn ByteIO, dst: &mut [u16], x: usize, y: usize, bsize: usize, bdata: &BlockData) -> DecoderResult<()> {
     let stride = bdata.stride;
     let op                              = br.read_byte()?;
     match op {
@@ -228,8 +228,7 @@ impl NADecoder for Smush2Decoder {
         let src = pkt.get_buffer();
         validate!(src.len() > 8);
 
-        let mut mr = MemoryReader::new_read(&src);
-        let mut br = ByteReader::new(&mut mr);
+        let mut br = MemoryReader::new_read(&src);
 
         let mut reorder = 0;
         while br.left() > 0 {
@@ -270,8 +269,7 @@ impl NADecoder for Smush2Decoder {
                         validate!(br.tell() < tend);
                         let start = br.tell() as usize;
                                           br.seek(SeekFrom::Start(tend))?;
-                        let mut mr = MemoryReader::new_read(&src[start..(tend as usize)]);
-                        let mut br = ByteReader::new(&mut mr);
+                        let mut br = MemoryReader::new_read(&src[start..(tend as usize)]);
 
                         if seq == 0 {
                             for el in self.pic.frm1.iter_mut() {
index 06cc63ba577d4641458ca37bdc4723a91865b86f..02c76dda88c0d032a0dc0a95ad10b38017baab21 100644 (file)
@@ -23,7 +23,7 @@ macro_rules! lz_op {
         $off = ($off + 1) & 0xFFF;
     };
 }
-fn lz_unpack(br: &mut ByteReader, dst: &mut [u8]) -> DecoderResult<()> {
+fn lz_unpack(br: &mut dyn ByteIO, dst: &mut [u8]) -> DecoderResult<()> {
     let mut window: [u8; 0x1000] = [0x20; 0x1000];
 
     let dst_size = br.read_u32le()? as usize;
@@ -70,7 +70,7 @@ fn lz_unpack(br: &mut ByteReader, dst: &mut [u8]) -> DecoderResult<()> {
     Ok(())
 }
 
-fn rle_unpack(br: &mut ByteReader, len: usize, dst: &mut [u8]) -> DecoderResult<()> {
+fn rle_unpack(br: &mut dyn ByteIO, len: usize, dst: &mut [u8]) -> DecoderResult<()> {
     let end = br.tell() + (len as u64);
     let mut dpos = 0;
     if (len & 1) != 0 {
@@ -97,7 +97,7 @@ fn rle_unpack(br: &mut ByteReader, len: usize, dst: &mut [u8]) -> DecoderResult<
     Ok(())
 }
 
-fn decode_frame_data(br: &mut ByteReader, dst: &mut [u8], mut dpos: usize, stride: usize, w: usize, h: usize, method: u8) -> DecoderResult<bool> {
+fn decode_frame_data(br: &mut dyn ByteIO, dst: &mut [u8], mut dpos: usize, stride: usize, w: usize, h: usize, method: u8) -> DecoderResult<bool> {
     match method {
         1 => {
             for _ in 0..h {
@@ -182,7 +182,7 @@ impl VMDVideoDecoder {
             ver2:       0,
         }
     }
-    fn decode_frame(&mut self, br: &mut ByteReader) -> DecoderResult<bool> {
+    fn decode_frame(&mut self, br: &mut dyn ByteIO) -> DecoderResult<bool> {
         let frame_x                             = br.read_u16le()? as usize;
         let frame_y                             = br.read_u16le()? as usize;
         let frame_r                             = br.read_u16le()? as usize;
@@ -223,8 +223,7 @@ impl VMDVideoDecoder {
         let is_intra = if (method & 0x80) != 0 {
                 validate!(!self.buf.is_empty());
                 lz_unpack(br, &mut self.buf)?;
-                let mut mr = MemoryReader::new_read(&self.buf);
-                let mut buf_br = ByteReader::new(&mut mr);
+                let mut buf_br = MemoryReader::new_read(&self.buf);
                 decode_frame_data(&mut buf_br, &mut self.framebuf, dpos, stride, w, h, method & 0x7F)?
             } else {
                 decode_frame_data(br, &mut self.framebuf, dpos, stride, w, h, method & 0x7F)?
@@ -294,8 +293,7 @@ impl NADecoder for VMDVideoDecoder {
         let src = pkt.get_buffer();
         validate!(src.len() >= 10);
 
-        let mut mr = MemoryReader::new_read(&src);
-        let mut br = ByteReader::new(&mut mr);
+        let mut br = MemoryReader::new_read(&src);
 
         let is_intra = self.decode_frame(&mut br)?;
 
@@ -400,7 +398,7 @@ impl VMDAudioDecoder {
             ch:     0,
         }
     }
-    fn decode_16bit(&self, dst: &mut [i16], off1: usize, br: &mut ByteReader, nblocks: usize, mut mask: u32) -> DecoderResult<()> {
+    fn decode_16bit(&self, dst: &mut [i16], off1: usize, br: &mut dyn ByteIO, nblocks: usize, mut mask: u32) -> DecoderResult<()> {
         let channels = self.chmap.num_channels();
         let mut off = [0, off1];
         for _ in 0..nblocks {
@@ -493,8 +491,7 @@ impl NADecoder for VMDAudioDecoder {
         if let NACodecTypeInfo::Audio(_) = info.get_properties() {
             let pktbuf = pkt.get_buffer();
             validate!(pktbuf.len() >= 6);
-            let mut mr = MemoryReader::new_read(&pktbuf);
-            let mut br = ByteReader::new(&mut mr);
+            let mut br = MemoryReader::new_read(&pktbuf);
             let blk_type                        = br.read_byte()?;
                                                   br.read_skip(9)?;
             let mask;
index d276897ac97c429ece198a4c4d1ea14c58e7dcf4..913b8e84bd1eb9b1468aa8102970dba226e35ed7 100644 (file)
@@ -2,7 +2,7 @@ use nihav_core::frame::*;
 use nihav_core::demuxers::*;
 
 struct BMVDemuxer<'a> {
-    src:        &'a mut ByteReader<'a>,
+    src:        &'a mut dyn ByteIO,
     vid_id:     usize,
     aud_id:     usize,
     vpos:       u64,
@@ -78,7 +78,7 @@ impl<'a> NAOptionHandler for BMVDemuxer<'a> {
 }
 
 impl<'a> BMVDemuxer<'a> {
-    fn new(io: &'a mut ByteReader<'a>) -> Self {
+    fn new(io: &'a mut dyn ByteIO) -> Self {
         Self {
             src:        io,
             vid_id:     0,
@@ -93,14 +93,14 @@ impl<'a> BMVDemuxer<'a> {
 pub struct BMVDemuxerCreator { }
 
 impl DemuxerCreator for BMVDemuxerCreator {
-    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(BMVDemuxer::new(br))
     }
     fn get_name(&self) -> &'static str { "bmv" }
 }
 
 struct BMV3Demuxer<'a> {
-    src:        &'a mut ByteReader<'a>,
+    src:        &'a mut dyn ByteIO,
     vid_id:     usize,
     aud_id:     usize,
     vpos:       u64,
@@ -223,7 +223,7 @@ impl<'a> NAOptionHandler for BMV3Demuxer<'a> {
 }
 
 impl<'a> BMV3Demuxer<'a> {
-    fn new(io: &'a mut ByteReader<'a>) -> Self {
+    fn new(io: &'a mut dyn ByteIO) -> Self {
         Self {
             src:        io,
             vid_id:     0,
@@ -240,7 +240,7 @@ impl<'a> BMV3Demuxer<'a> {
 pub struct BMV3DemuxerCreator { }
 
 impl DemuxerCreator for BMV3DemuxerCreator {
-    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(BMV3Demuxer::new(br))
     }
     fn get_name(&self) -> &'static str { "bmv3" }
@@ -255,8 +255,7 @@ mod test {
     #[test]
     fn test_bmv_demux() {
         let mut file = File::open("assets/Game/DW2-MOUSE.BMV").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 = BMVDemuxer::new(&mut br);
         let mut sm = StreamManager::new();
         let mut si = SeekIndex::new();
@@ -274,8 +273,7 @@ mod test {
     #[test]
     fn test_bmv3_demux() {
         let mut file = File::open("assets/Game/DW3-Loffnote.bmv").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 = BMV3Demuxer::new(&mut br);
         let mut sm = StreamManager::new();
         let mut si = SeekIndex::new();
index fc25600289f73b21d4d2b1758d8c4227aaeda9f5..9d9efc4b21d5c4e8828545e2e066e10d81b04a41 100644 (file)
@@ -8,7 +8,7 @@ enum GDVState {
 }
 
 struct GremlinVideoDemuxer<'a> {
-    src:        &'a mut ByteReader<'a>,
+    src:        &'a mut dyn ByteIO,
     frames:     u16,
     cur_frame:  u16,
     asize:      usize,
@@ -117,7 +117,7 @@ impl<'a> NAOptionHandler for GremlinVideoDemuxer<'a> {
     fn query_option_value(&self, _name: &str) -> Option<NAValue> { None }
 }
 impl<'a> GremlinVideoDemuxer<'a> {
-    fn new(io: &'a mut ByteReader<'a>) -> Self {
+    fn new(io: &'a mut dyn ByteIO) -> Self {
         GremlinVideoDemuxer {
             cur_frame: 0,
             frames: 0,
@@ -155,7 +155,7 @@ impl<'a> GremlinVideoDemuxer<'a> {
 pub struct GDVDemuxerCreator { }
 
 impl DemuxerCreator for GDVDemuxerCreator {
-    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(GremlinVideoDemuxer::new(br))
     }
     fn get_name(&self) -> &'static str { "gdv" }
@@ -170,8 +170,7 @@ mod test {
     fn test_gdv_demux() {
         // sample from Normality game
         let mut file = File::open("assets/Game/intro1.gdv").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 = GremlinVideoDemuxer::new(&mut br);
         let mut sm = StreamManager::new();
         let mut si = SeekIndex::new();
index cbd1bdcdffc9f2774d6a7c23e3edc2129b6ef94f..eeb9c7812402aad1c5035224438e6f0d73c487b3 100644 (file)
@@ -2,7 +2,7 @@ use nihav_core::frame::*;
 use nihav_core::demuxers::*;
 
 struct SequenceDemuxer<'a> {
-    src:        &'a mut ByteReader<'a>,
+    src:        &'a mut dyn ByteIO,
     nframes:    usize,
     frame_no:   usize,
 }
@@ -64,7 +64,7 @@ impl<'a> NAOptionHandler for SequenceDemuxer<'a> {
     fn query_option_value(&self, _name: &str) -> Option<NAValue> { None }
 }
 impl<'a> SequenceDemuxer<'a> {
-    fn new(io: &'a mut ByteReader<'a>) -> Self {
+    fn new(io: &'a mut dyn ByteIO) -> Self {
         SequenceDemuxer {
             src:        io,
             frame_no:   0,
@@ -76,7 +76,7 @@ impl<'a> SequenceDemuxer<'a> {
 pub struct SequenceDemuxerCreator { }
 
 impl DemuxerCreator for SequenceDemuxerCreator {
-    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(SequenceDemuxer::new(br))
     }
     fn get_name(&self) -> &'static str { "sierra-seq" }
@@ -91,8 +91,7 @@ mod test {
     #[test]
     fn test_seq() {
         let mut file = File::open("assets/Game/sierra/FS1.SEQ").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 = SequenceDemuxer::new(&mut br);
         let mut sm = StreamManager::new();
         let mut si = SeekIndex::new();
index de37b72fa086b84dfe241ec5802c0732d6ec167d..6c827089b12cc3829e6640b001f10e3b2f30c74f 100644 (file)
@@ -9,7 +9,7 @@ const RGB555_FORMAT: NAPixelFormaton = NAPixelFormaton { model: ColorModel::RGB(
                                             None, None],
                                         elem_size: 2, be: false, alpha: false, palette: false };
 struct SGADemuxer<'a> {
-    src:            &'a mut ByteReader<'a>,
+    src:            &'a mut dyn ByteIO,
     subtype:        u8,
     apts:           u64,
     abuf:           Vec<u8>,
@@ -20,7 +20,7 @@ struct SGADemuxer<'a> {
 }
 
 impl<'a> SGADemuxer<'a> {
-    fn new(io: &'a mut ByteReader<'a>) -> Self {
+    fn new(io: &'a mut dyn ByteIO) -> Self {
         Self {
             src:            io,
             subtype:        0,
@@ -53,7 +53,7 @@ fn parse_smpte_time(src: &[u8], ntsc: bool) -> DemuxerResult<u64> {
     Ok(tot_sec * if ntsc { 60 } else { 30 } + u64::from(frame))
 }
 
-fn get_smpte_time(src: &mut ByteReader, ntsc: bool) -> DemuxerResult<u64> {
+fn get_smpte_time(src: &mut dyn ByteIO, ntsc: bool) -> DemuxerResult<u64> {
     let mut buf = [0; 4];
                                           src.read_buf(&mut buf)?;
     parse_smpte_time(&buf, ntsc)
@@ -359,7 +359,7 @@ impl<'a> NAOptionHandler for SGADemuxer<'a> {
 pub struct SGADemuxerCreator { }
 
 impl DemuxerCreator for SGADemuxerCreator {
-    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(SGADemuxer::new(br))
     }
     fn get_name(&self) -> &'static str { "sga" }
@@ -372,8 +372,7 @@ mod test {
 
     fn test_sga_demux(name: &str) {
         let mut file = File::open(name).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 = SGADemuxer::new(&mut br);
         let mut sm = StreamManager::new();
         let mut si = SeekIndex::new();
index 3cc5fbc5410a591172605ffee6c98832abe14512..92eb19af179919e21213c9d14341ca6e916839c6 100644 (file)
@@ -2,7 +2,7 @@ use nihav_core::frame::*;
 use nihav_core::demuxers::*;
 
 struct SmushDemuxer<'a> {
-    src:        &'a mut ByteReader<'a>,
+    src:        &'a mut dyn ByteIO,
     old:        bool,
     size:       u64,
 
@@ -15,7 +15,7 @@ struct SmushDemuxer<'a> {
     asize:      u64,
 }
 
-fn parse_iact(br: &mut ByteReader, end: u64, arate: &mut u32, abits: &mut u8, chans: &mut u8, mcmp: bool) -> DemuxerResult<()> {
+fn parse_iact(br: &mut dyn ByteIO, end: u64, arate: &mut u32, abits: &mut u8, chans: &mut u8, mcmp: bool) -> DemuxerResult<()> {
     if !mcmp {
                                           br.read_skip(14)?;
     }
@@ -65,7 +65,7 @@ fn parse_iact(br: &mut ByteReader, end: u64, arate: &mut u32, abits: &mut u8, ch
 }
 
 impl<'a> SmushDemuxer<'a> {
-    fn new(io: &'a mut ByteReader<'a>) -> Self {
+    fn new(io: &'a mut dyn ByteIO) -> Self {
         SmushDemuxer {
             src:        io,
 
@@ -149,7 +149,7 @@ impl<'a> SmushDemuxer<'a> {
                     let opcode          = src.read_u16le()?;
                     let flags           = src.read_u16le()?;
                     if (opcode == 8) && (flags == 0x2E) {
-                        if parse_iact(src, end, &mut arate, &mut abits, &mut chans, false).is_ok() {
+                        if parse_iact(*src, end, &mut arate, &mut abits, &mut chans, false).is_ok() {
                             aname = "smush-iact";
                         }
                         validate!(src.tell() <= end);
@@ -489,7 +489,7 @@ impl<'a> NAOptionHandler for SmushDemuxer<'a> {
 pub struct SmushDemuxerCreator { }
 
 impl DemuxerCreator for SmushDemuxerCreator {
-    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(SmushDemuxer::new(br))
     }
     fn get_name(&self) -> &'static str { "smush" }
@@ -497,7 +497,7 @@ impl DemuxerCreator for SmushDemuxerCreator {
 
 
 struct MCMPDemuxer<'a> {
-    src:        &'a mut ByteReader<'a>,
+    src:        &'a mut dyn ByteIO,
     cur_frame:  usize,
 
     offsets:    Vec<u64>,
@@ -507,7 +507,7 @@ struct MCMPDemuxer<'a> {
 }
 
 impl<'a> MCMPDemuxer<'a> {
-    fn new(io: &'a mut ByteReader<'a>) -> Self {
+    fn new(io: &'a mut dyn ByteIO) -> Self {
         MCMPDemuxer {
             src:        io,
             cur_frame:  0,
@@ -571,7 +571,7 @@ impl<'a> DemuxCore<'a> for MCMPDemuxer<'a> {
             arate                       = self.src.read_u32le()?;
             validate!(arate > 0);
         } else {
-            parse_iact(self.src, data_start, &mut arate, &mut abits, &mut chans, true)?;
+            parse_iact(&mut *self.src, data_start, &mut arate, &mut abits, &mut chans, true)?;
         }
         if chans == 2 {
             for (samp, pts) in self.samples.iter_mut().zip(self.pts.iter_mut()) {
@@ -637,7 +637,7 @@ impl<'a> NAOptionHandler for MCMPDemuxer<'a> {
 pub struct MCMPDemuxerCreator { }
 
 impl DemuxerCreator for MCMPDemuxerCreator {
-    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(MCMPDemuxer::new(br))
     }
     fn get_name(&self) -> &'static str { "smush-mcmp" }
@@ -653,8 +653,7 @@ mod test {
     fn test_smush_demux_anim_v1() {
         // sample from Rebel Assault game
         let mut file = File::open("assets/Game/smush/c1block.anm").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 = SmushDemuxer::new(&mut br);
         let mut sm = StreamManager::new();
         let mut si = SeekIndex::new();
@@ -673,8 +672,7 @@ mod test {
     fn test_smush_demux_anim_v2() {
         // sample from The Dig
         let mut file = File::open("assets/Game/smush/PIGOUT.SAN").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 = SmushDemuxer::new(&mut br);
         let mut sm = StreamManager::new();
         let mut si = SeekIndex::new();
@@ -693,8 +691,7 @@ mod test {
     fn test_smush_demux_sanm() {
         // sample from Grim Fandango
         let mut file = File::open("assets/Game/smush/lol.snm").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 = SmushDemuxer::new(&mut br);
         let mut sm = StreamManager::new();
         let mut si = SeekIndex::new();
@@ -713,8 +710,7 @@ mod test {
     fn test_mcmp_demux_imus() {
         // sample from Grim Fandango
         let mut file = File::open("assets/Game/smush/1104 - Lupe.IMC").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 = MCMPDemuxer::new(&mut br);
         let mut sm = StreamManager::new();
         let mut si = SeekIndex::new();
@@ -733,8 +729,7 @@ mod test {
     fn test_mcmp_demux_wav() {
         // sample from Grim Fandango
         let mut file = File::open("assets/Game/smush/breadpor.WAV").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 = MCMPDemuxer::new(&mut br);
         let mut sm = StreamManager::new();
         let mut si = SeekIndex::new();
index 4e85dea17d594d8f13c4680f92c01a10ee5d29ef..fd48a6611aae8550e6742f1a5f8d83324cd4ba46 100644 (file)
@@ -21,7 +21,7 @@ struct FrameRec {
 }
 
 struct VMDDemuxer<'a> {
-    src:        &'a mut ByteReader<'a>,
+    src:        &'a mut dyn ByteIO,
     vid_id:     usize,
     aud_id:     usize,
     fno:        usize,
@@ -192,7 +192,7 @@ impl<'a> NAOptionHandler for VMDDemuxer<'a> {
 }
 
 impl<'a> VMDDemuxer<'a> {
-    fn new(io: &'a mut ByteReader<'a>) -> Self {
+    fn new(io: &'a mut dyn ByteIO) -> Self {
         Self {
             src:        io,
             vid_id:     0,
@@ -208,7 +208,7 @@ impl<'a> VMDDemuxer<'a> {
 pub struct VMDDemuxerCreator { }
 
 impl DemuxerCreator for VMDDemuxerCreator {
-    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(VMDDemuxer::new(br))
     }
     fn get_name(&self) -> &'static str { "vmd" }
@@ -224,8 +224,7 @@ mod test {
         // sample: https://samples.mplayerhq.hu/game-formats/sierra-vmd/Lighthouse/128.vmd
         let mut file = File::open("assets/Game/sierra/128.vmd").unwrap();
         //let mut file = File::open("assets/Game/1491.VMD").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 = VMDDemuxer::new(&mut br);
         let mut sm = StreamManager::new();
         let mut si = SeekIndex::new();
index 3aa42125e8b1a6a205c836bc0abc344bbf598fee..141af7383eb4c818a79fb52986267be466837b8b 100644 (file)
@@ -1,14 +1,14 @@
 use nihav_core::muxers::*;
 
 struct EAMuxer<'a> {
-    bw:             &'a mut ByteWriter<'a>,
+    bw:             &'a mut dyn ByteIO,
     has_alpha:      bool,
     nframes:        u32,
     max_size:       [u32; 2],
 }
 
 impl<'a> EAMuxer<'a> {
-    fn new(bw: &'a mut ByteWriter<'a>) -> Self {
+    fn new(bw: &'a mut dyn ByteIO) -> Self {
         Self {
             bw,
             has_alpha:      false,
@@ -118,7 +118,7 @@ impl<'a> NAOptionHandler for EAMuxer<'a> {
 pub struct EAMuxerCreator {}
 
 impl MuxerCreator for EAMuxerCreator {
-    fn new_muxer<'a>(&self, bw: &'a mut ByteWriter<'a>) -> Box<dyn MuxCore<'a> + 'a> {
+    fn new_muxer<'a>(&self, bw: &'a mut dyn ByteIO) -> Box<dyn MuxCore<'a> + 'a> {
         Box::new(EAMuxer::new(bw))
     }
     fn get_name(&self) -> &'static str { "ea" }