]> git.nihav.org Git - nihav.git/commitdiff
nihav_commonfmt: switch to ByteIO
authorKostya Shishkov <kostya.shishkov@gmail.com>
Sun, 17 Aug 2025 16:25:33 +0000 (18:25 +0200)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Sun, 17 Aug 2025 16:25:33 +0000 (18:25 +0200)
18 files changed:
nihav-commonfmt/src/codecs/atrac3.rs
nihav-commonfmt/src/codecs/cinepak.rs
nihav-commonfmt/src/codecs/cinepakenc.rs
nihav-commonfmt/src/codecs/clearvideo.rs
nihav-commonfmt/src/codecs/gif.rs
nihav-commonfmt/src/codecs/gifenc.rs
nihav-commonfmt/src/codecs/jpeg.rs
nihav-commonfmt/src/codecs/pcm.rs
nihav-commonfmt/src/codecs/zmbvenc.rs
nihav-commonfmt/src/demuxers/avi.rs
nihav-commonfmt/src/demuxers/gif.rs
nihav-commonfmt/src/demuxers/mov.rs
nihav-commonfmt/src/demuxers/wav.rs
nihav-commonfmt/src/demuxers/y4m.rs
nihav-commonfmt/src/muxers/avi.rs
nihav-commonfmt/src/muxers/gif.rs
nihav-commonfmt/src/muxers/wav.rs
nihav-commonfmt/src/muxers/y4m.rs

index 323090a553b262901ecae92d3878e3d4f0f61196..2ac257c1c234dff283d800d7e9957b459fd4b572 100644 (file)
@@ -551,8 +551,7 @@ impl NADecoder for Atrac3Decoder {
             let edata = info.get_extradata().unwrap();
             validate!(edata.len() >= 4);
 
-            let mut mr = MemoryReader::new_read(&edata);
-            let mut br = ByteReader::new(&mut mr);
+            let mut br = MemoryReader::new_read(&edata);
 
             match edata.len() {
                 10 => {
index c3f31ce453a379e99e191912d24af452d6820e04..ef0b237eaa6d7d85a7c6b9982023fc6010ebbbeb 100644 (file)
@@ -1,4 +1,4 @@
-use nihav_core::io::byteio::{ByteReader,MemoryReader};
+use nihav_core::io::byteio::{ByteIO,MemoryReader};
 use nihav_core::formats::YUV420_FORMAT;
 use nihav_core::codecs::*;
 use nihav_codec_support::codecs::HAMShuffler;
@@ -64,7 +64,7 @@ impl CinepakDecoder {
             mode:   DecodeMode::Unknown,
         }
     }
-    fn read_cb(br: &mut ByteReader, size: usize, cb: &mut [[u8; 6]; 256], is_yuv: bool) -> DecoderResult<()> {
+    fn read_cb(br: &mut dyn ByteIO, size: usize, cb: &mut [[u8; 6]; 256], is_yuv: bool) -> DecoderResult<()> {
         let cb_elem = if is_yuv { 6 } else { 4 };
         let cb_size = (size - 4) / cb_elem;
         validate!(size - 4 == cb_size * cb_elem);
@@ -81,7 +81,7 @@ impl CinepakDecoder {
         }
         Ok(())
     }
-    fn read_cb_upd(br: &mut ByteReader, size: usize, cb: &mut [[u8; 6]; 256], is_yuv: bool) -> DecoderResult<()> {
+    fn read_cb_upd(br: &mut dyn ByteIO, size: usize, cb: &mut [[u8; 6]; 256], is_yuv: bool) -> DecoderResult<()> {
         let cb_elem = if is_yuv { 6 } else { 4 };
         let end = br.tell() + (size as u64) - 4;
         for i in (0..256).step_by(32) {
@@ -107,8 +107,7 @@ impl CinepakDecoder {
     }
     #[allow(clippy::too_many_arguments)]
     fn decode_strip(&mut self, src: &[u8], sno: usize, is_intra: bool, is_intra_strip: bool, xoff: usize, yoff: usize, xend: usize, yend: usize, frm: &mut NASimpleVideoFrame<u8>) -> DecoderResult<()> {
-        let mut mr = MemoryReader::new_read(src);
-        let mut br = ByteReader::new(&mut mr);
+        let mut br = MemoryReader::new_read(src);
         let mut idx_pos = 0;
         let mut idx_size = 0;
         let mut v1_only = false;
@@ -154,8 +153,7 @@ impl CinepakDecoder {
             };
         }
         validate!(idx_pos != 0);
-        let mut mr = MemoryReader::new_read(&src[idx_pos..][..idx_size]);
-        let mut br = ByteReader::new(&mut mr);
+        let mut br = MemoryReader::new_read(&src[idx_pos..][..idx_size]);
 
         let mut x = xoff;
         let mut y = yoff;
@@ -247,8 +245,7 @@ impl NADecoder for CinepakDecoder {
         let src = pkt.get_buffer();
         if src.len() <= 10 { return Err(DecoderError::ShortData); }
 
-        let mut mr = MemoryReader::new_read(src.as_slice());
-        let mut br = ByteReader::new(&mut mr);
+        let mut br = MemoryReader::new_read(src.as_slice());
 
         let flags                       = br.read_byte()?;
         let size                        = br.read_u24be()? as usize;
index e5f888c4ada75d2c0f0c3180dfa98c4119372200..baff7b73a782a58d43244afdfbee597234285ba7 100644 (file)
@@ -279,7 +279,7 @@ fn variance(a: u8, mean: u8) -> u32 {
     }
 }
 
-fn patch_size(bw: &mut ByteWriter, pos: u64) -> EncoderResult<()> {
+fn patch_size(bw: &mut dyn ByteIO, pos: u64) -> EncoderResult<()> {
     let size = bw.tell() - pos;
     bw.seek(SeekFrom::Current(-((size + 3) as i64)))?;
     bw.write_u24be((size + 4) as u32)?;
@@ -444,7 +444,7 @@ impl CinepakEncoder {
         let upd_size = cb_size * (new_cb.len() - skip_count) + (new_cb.len() + 31) / 32 * 4;
         upd_size < full_size
     }
-    fn write_cb(bw: &mut ByteWriter, mut id: u8, new_cb: &[YUVCode], old_cb: &[YUVCode], grayscale: bool, update: bool, num_elem: usize) -> EncoderResult<()> {
+    fn write_cb(bw: &mut dyn ByteIO, mut id: u8, new_cb: &[YUVCode], old_cb: &[YUVCode], grayscale: bool, update: bool, num_elem: usize) -> EncoderResult<()> {
         if grayscale {
             id |= 4;
         }
@@ -754,7 +754,7 @@ impl CinepakEncoder {
         for e in self.v1_cur_cb[self.cur_strip].iter_mut().skip(self.v1_len) { *e = YUVCode::default(); }
         for e in self.v4_cur_cb[self.cur_strip].iter_mut().skip(self.v4_len) { *e = YUVCode::default(); }
     }
-    fn encode_intra(&mut self, bw: &mut ByteWriter, in_frm: &NAVideoBuffer<u8>) -> EncoderResult<bool> {
+    fn encode_intra(&mut self, bw: &mut dyn ByteIO, in_frm: &NAVideoBuffer<u8>) -> EncoderResult<bool> {
         let (width, height) = in_frm.get_dimensions(0);
         let mut strip_h = (height / self.nstrips + 3) & !3;
         if strip_h == 0 {
@@ -943,7 +943,7 @@ impl CinepakEncoder {
         patch_size(bw, frame_data_pos)?;
         Ok(true)
     }
-    fn encode_inter(&mut self, bw: &mut ByteWriter, in_frm: &NAVideoBuffer<u8>) -> EncoderResult<bool> {
+    fn encode_inter(&mut self, bw: &mut dyn ByteIO, in_frm: &NAVideoBuffer<u8>) -> EncoderResult<bool> {
         let (width, height) = in_frm.get_dimensions(0);
         let mut strip_h = (height / self.nstrips + 3) & !3;
         if strip_h == 0 {
@@ -1229,8 +1229,7 @@ impl NAEncoder for CinepakEncoder {
             }
 
             let mut dbuf = Vec::with_capacity(4);
-            let mut gw   = GrowableMemoryWriter::new_write(&mut dbuf);
-            let mut bw   = ByteWriter::new(&mut gw);
+            let mut bw   = GrowableMemoryWriter::new_write(&mut dbuf);
             let is_intra = if self.frmcount == 0 {
                     self.encode_intra(&mut bw, vbuf)?
                 } else {
index 5f1405e628a891b966e037469e2854b33bd79a9d..0abdeace22a783b1a6a396f855f4a7d31d5a4cec 100644 (file)
@@ -1,4 +1,4 @@
-use nihav_core::io::byteio::{ByteReader,MemoryReader};
+use nihav_core::io::byteio::{ByteIO,MemoryReader};
 use nihav_core::io::bitreader::*;
 use nihav_core::io::codebook::*;
 use nihav_core::formats;
@@ -893,14 +893,12 @@ impl NADecoder for ClearVideoDecoder {
             if edata.len() == 0 || edata.len() < 0x60 { // no or short extradata probably comes from MOV
                 self.tsize = 4;
             } else if !self.is_rm {
-                let mut mr = MemoryReader::new_read(edata.as_slice());
-                let mut br = ByteReader::new(&mut mr);
+                let mut br = MemoryReader::new_read(edata.as_slice());
                 br.read_skip(0x5E).unwrap();
                 let tile_size = br.read_u32le()?;
                 self.tsize = tile_size.trailing_zeros() as u8;
             } else {
-                let mut mr = MemoryReader::new_read(edata.as_slice());
-                let mut br = ByteReader::new(&mut mr);
+                let mut br = MemoryReader::new_read(edata.as_slice());
                 br.read_skip(0x86).unwrap();
                 let tile_size = br.read_u32be()?;
                 self.tsize = tile_size.trailing_zeros() as u8;
index a5b91d3b2ff9464fd43c73c74230547d26b7dec3..e29c275108264b81f647be94a7eedd3eb110b40b 100644 (file)
@@ -223,8 +223,7 @@ impl NADecoder for GIFDecoder {
             }
         }
 
-        let mut mr = MemoryReader::new_read(&src);
-        let mut br = ByteReader::new(&mut mr);
+        let mut br = MemoryReader::new_read(&src);
         let tag                         = br.read_byte()?;
         validate!(tag == 0x2C);
         let left                        = usize::from(br.read_u16le()?);
index 475323516d3ad191bc5aded641848ac1b8529fc7..4a1e2b710f4a245cb7dc12c788f24dcb801584e2 100644 (file)
@@ -123,7 +123,7 @@ impl LZWEncoder {
             tmp:        Vec::new(),
         }
     }
-    fn compress(&mut self, writer: &mut ByteWriter, src: &[u8]) -> EncoderResult<()> {
+    fn compress(&mut self, writer: &mut dyn ByteIO, src: &[u8]) -> EncoderResult<()> {
         let clr_bits: u8 = if self.level != CompressionLevel::None {
                 let maxclr = u16::from(src.iter().fold(0u8, |acc, &a| acc.max(a))) + 1;
                 let mut bits = 2;
@@ -245,7 +245,7 @@ impl GIFEncoder {
             tr_idx:     None,
         }
     }
-    fn write_dummy_frame(&mut self, bw: &mut ByteWriter) -> EncoderResult<()> {
+    fn write_dummy_frame(&mut self, bw: &mut dyn ByteIO) -> EncoderResult<()> {
         let mut pix = [self.cur_frm[0]];
         if let (true, Some(tr_idx)) = (self.p_trans, self.tr_idx) {
             if tr_idx < pix[0] {
@@ -318,8 +318,7 @@ impl NAEncoder for GIFEncoder {
     }
     fn encode(&mut self, frm: &NAFrame) -> EncoderResult<()> {
         let mut dbuf = Vec::with_capacity(4);
-        let mut gw   = GrowableMemoryWriter::new_write(&mut dbuf);
-        let mut bw   = ByteWriter::new(&mut gw);
+        let mut bw   = GrowableMemoryWriter::new_write(&mut dbuf);
 
         self.tmp_buf.clear();
 
index 267e6339280e394f3308210e3b4ad833dfc1a887..4b70151be4b47cd39cdc5cc84a072f6041bbf967 100644 (file)
@@ -1,4 +1,4 @@
-use nihav_core::io::byteio::{ByteReader,MemoryReader};
+use nihav_core::io::byteio::{ByteIO,MemoryReader};
 use nihav_core::io::bitreader::*;
 use nihav_core::io::codebook::*;
 use nihav_core::codecs::*;
@@ -235,7 +235,7 @@ impl JPEGDecoder {
         self.depth      = 0;
     }
 
-    fn parse_sof(&mut self, br: &mut ByteReader) -> DecoderResult<NABufferType> {
+    fn parse_sof(&mut self, br: &mut dyn ByteIO) -> DecoderResult<NABufferType> {
         validate!(self.width == 0);
 
         let len                         = br.read_u16be()? as usize;
@@ -462,8 +462,7 @@ impl NADecoder for JPEGDecoder {
         if src.len() <= 4 { return Err(DecoderError::ShortData); }
 
         let mut bufinfo = NABufferType::None;
-        let mut mr = MemoryReader::new_read(&src);
-        let mut br = ByteReader::new(&mut mr);
+        let mut br = MemoryReader::new_read(&src);
         let start_tag                   = br.read_u16be()?;
         validate!(start_tag == 0xFFD8);
 
index dbc71748a8c9f47331432acd6e792d4000e73cb3..8ca5342aca10292dd3201fa40b2481ea6ee45374 100644 (file)
@@ -170,8 +170,7 @@ macro_rules! write_buffer {
         let is_be = info.format.be;
 
         $dvec = vec![0u8; len * channels * std::mem::size_of::<$dtype>()];
-        let mut mw = MemoryWriter::new_write($dvec.as_mut_slice());
-        let mut bw = ByteWriter::new(&mut mw);
+        let mut bw = MemoryWriter::new_write($dvec.as_mut_slice());
         for off in 0..len {
             for j in 0..channels {
                 if is_be {
index e112eb459db31e00e215668b25f64c3c421a3462..59efa99c8130723b94212378f554b83fd9c241e1 100644 (file)
@@ -140,7 +140,7 @@ impl ZMBVEncoder {
             sent_pal:   false,
         }
     }
-    fn encode_intra(&mut self, bw: &mut ByteWriter, buf: NABufferType) -> EncoderResult<()> {
+    fn encode_intra(&mut self, bw: &mut dyn ByteIO, buf: NABufferType) -> EncoderResult<()> {
         let mut bpp = buf_type_to_bpp(&buf);
 
         if let NABufferType::None = buf {
@@ -223,7 +223,7 @@ impl ZMBVEncoder {
 
         Ok(())
     }
-    fn encode_inter(&mut self, bw: &mut ByteWriter, buf: NABufferType) -> EncoderResult<()> {
+    fn encode_inter(&mut self, bw: &mut dyn ByteIO, buf: NABufferType) -> EncoderResult<()> {
         if let NABufferType::None = buf {
             self.frm1.copy_from_slice(&self.frm2);
 
@@ -488,8 +488,7 @@ impl NAEncoder for ZMBVEncoder {
     fn encode(&mut self, frm: &NAFrame) -> EncoderResult<()> {
         let buf = frm.get_buffer();
         let mut dbuf = Vec::with_capacity(4);
-        let mut gw   = GrowableMemoryWriter::new_write(&mut dbuf);
-        let mut bw   = ByteWriter::new(&mut gw);
+        let mut bw   = GrowableMemoryWriter::new_write(&mut dbuf);
         let is_intra = if self.frmcount == 0 {
                 self.encode_intra(&mut bw, buf)?;
                 true
index e5dfbf4e3c233b53b32dae0e55cb8a01cc58996e..de7d705418e50787bd7736c5f870493fc7030809 100644 (file)
@@ -59,7 +59,7 @@ impl RIFFSegment {
 }
 
 struct AVIDemuxer<'a> {
-    src:            &'a mut ByteReader<'a>,
+    src:            &'a mut dyn ByteIO,
     cur_frame:      Vec<u64>,
     num_streams:    u8,
     size:           usize,
@@ -263,7 +263,7 @@ impl<'a> NAOptionHandler for AVIDemuxer<'a> {
 }
 
 impl<'a> AVIDemuxer<'a> {
-    fn new(io: &'a mut ByteReader<'a>) -> Self {
+    fn new(io: &'a mut dyn ByteIO) -> Self {
         AVIDemuxer {
             cur_frame: Vec::new(),
             num_streams: 0,
@@ -813,7 +813,7 @@ fn parse_junk(dmx: &mut AVIDemuxer, _strmgr: &mut StreamManager, size: usize) ->
     Ok(size)
 }
 
-fn parse_idx1(src: &mut ByteReader, strmgr: &mut StreamManager, seek_idx: &mut SeekIndex, size: usize, movi_pos: u64, key_offs: &mut Vec<u64>) -> DemuxerResult<usize> {
+fn parse_idx1(src: &mut dyn ByteIO, strmgr: &mut StreamManager, seek_idx: &mut SeekIndex, size: usize, movi_pos: u64, key_offs: &mut Vec<u64>) -> DemuxerResult<usize> {
     validate!((size & 15) == 0);
     let mut tag = [0u8; 4];
     let num_entries = size >> 4;
@@ -856,7 +856,7 @@ fn parse_idx1(src: &mut ByteReader, strmgr: &mut StreamManager, seek_idx: &mut S
     Ok(size)
 }
 
-fn parse_iddx_data(src: &mut ByteReader, strmgr: &mut StreamManager, seek_idx: &mut SeekIndex, size: usize, movi_pos: u64, key_offs: &mut Vec<u64>) -> DemuxerResult<(usize, bool)> {
+fn parse_iddx_data(src: &mut dyn ByteIO, strmgr: &mut StreamManager, seek_idx: &mut SeekIndex, size: usize, movi_pos: u64, key_offs: &mut Vec<u64>) -> DemuxerResult<(usize, bool)> {
     validate!((size & 15) == 0);
     let mut tag = [0u8; 4];
     let num_entries = size >> 4;
@@ -904,7 +904,7 @@ fn parse_iddx_data(src: &mut ByteReader, strmgr: &mut StreamManager, seek_idx: &
     Ok((size, odd_offset))
 }
 
-fn parse_odml_ix(src: &mut ByteReader, strmgr: &mut StreamManager, seek_idx: &mut SeekIndex, stream_no: usize, size: usize, start: u64) -> DemuxerResult<u64> {
+fn parse_odml_ix(src: &mut dyn ByteIO, strmgr: &mut StreamManager, seek_idx: &mut SeekIndex, stream_no: usize, size: usize, start: u64) -> DemuxerResult<u64> {
     validate!(size >= 24);
     let entry_size = src.read_u16le()? as usize;
     if entry_size != 2 {
@@ -944,7 +944,7 @@ fn parse_odml_ix(src: &mut ByteReader, strmgr: &mut StreamManager, seek_idx: &mu
 pub struct AVIDemuxerCreator { }
 
 impl DemuxerCreator for AVIDemuxerCreator {
-    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(AVIDemuxer::new(br))
     }
     fn get_name(&self) -> &'static str { "avi" }
@@ -959,8 +959,7 @@ mod test {
     fn test_avi_demux() {
         //test sample: https://samples.mplayerhq.hu/V-codecs/RT21/320x240/laser05.avi
         let mut file = File::open("assets/Indeo/laser05.avi").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 = AVIDemuxer::new(&mut br);
         let mut sm = StreamManager::new();
         let mut si = SeekIndex::new();
index eef0a0061b4d7c5ba9d24949bd87666f7bf0dfbd..fd4b0b3a6b6269da6ddc8d31750f14a045deaeed 100644 (file)
@@ -1,14 +1,14 @@
 use nihav_core::demuxers::*;
 
 struct GIFDemuxer<'a> {
-    src:        &'a mut ByteReader<'a>,
+    src:        &'a mut dyn ByteIO,
     frameno:    u64,
     is_87:      bool,
     pal:        Arc<[u8; 1024]>,
 }
 
 impl<'a> GIFDemuxer<'a> {
-    fn new(io: &'a mut ByteReader<'a>) -> Self {
+    fn new(io: &'a mut dyn ByteIO) -> Self {
         Self {
             src:        io,
             frameno:    0,
@@ -162,7 +162,7 @@ impl<'a> NAOptionHandler for GIFDemuxer<'a> {
 pub struct GIFDemuxerCreator { }
 
 impl DemuxerCreator for GIFDemuxerCreator {
-    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(GIFDemuxer::new(br))
     }
     fn get_name(&self) -> &'static str { "gif" }
@@ -177,8 +177,7 @@ mod test {
     fn test_gif_demux() {
         // sample: https://samples.mplayerhq.hu/image-samples/GIF/3D.gif
         let mut file = File::open("assets/Misc/3D.gif").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 = GIFDemuxer::new(&mut br);
         let mut sm = StreamManager::new();
         let mut si = SeekIndex::new();
index 58a3a86d1af245f6d5d7ccb41ae9401437cea19a..1920ed4aae6da41f102508a863fac1b3d26743b7 100644 (file)
@@ -22,7 +22,7 @@ trait Skip64 {
     fn skip64(&mut self, size: u64) -> ByteIOResult<()>;
 }
 
-impl<'a> Skip64 for ByteReader<'a> {
+impl<T: ?Sized + ByteIO> Skip64 for T {
     fn skip64(&mut self, size: u64) -> ByteIOResult<()> {
         if (size as usize as u64) != size {
             self.seek(SeekFrom::Current(size as i64))?;
@@ -33,7 +33,7 @@ impl<'a> Skip64 for ByteReader<'a> {
     }
 }
 
-fn read_chunk_header(br: &mut ByteReader) -> DemuxerResult<(u32, u64)> {
+fn read_chunk_header(br: &mut dyn ByteIO) -> DemuxerResult<(u32, u64)> {
     let size            = br.read_u32be()?;
     let ctype           = br.read_u32be()?;
     if size == 0 {
@@ -48,7 +48,7 @@ fn read_chunk_header(br: &mut ByteReader) -> DemuxerResult<(u32, u64)> {
     }
 }
 
-fn read_palette(br: &mut ByteReader, size: u64, pal: &mut [u8; 1024]) -> DemuxerResult<u64> {
+fn read_palette(br: &mut dyn ByteIO, size: u64, pal: &mut [u8; 1024]) -> DemuxerResult<u64> {
     let _seed           = br.read_u32be()?;
     let flags           = br.read_u16be()?;
     let palsize         = (br.read_u16be()? as usize) + 1;
@@ -80,7 +80,7 @@ struct RootChunkHandler {
 
 struct TrackChunkHandler {
     ctype:  u32,
-    parse:  fn(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult<u64>,
+    parse:  fn(track: &mut Track, br: &mut dyn ByteIO, size: u64) -> DemuxerResult<u64>,
 }
 
 const IGNORED_CHUNKS: &[u32] = &[
@@ -150,7 +150,7 @@ macro_rules! read_chunk_list {
         }
     };
     (track; $name: expr, $fname: ident, $handlers: ident) => {
-        fn $fname(&mut self, br: &mut ByteReader, size: u64) -> DemuxerResult<()> {
+        fn $fname(&mut self, br: &mut dyn ByteIO, size: u64) -> DemuxerResult<()> {
             self.depth += 1;
             validate!(self.depth < 32);
             let list_end = br.tell() + size;
@@ -185,7 +185,7 @@ macro_rules! read_chunk_list {
     }
 }
 
-fn skip_chunk(_track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult<u64> {
+fn skip_chunk(_track: &mut Track, br: &mut dyn ByteIO, size: u64) -> DemuxerResult<u64> {
     br.skip64(size)?;
     Ok(size)
 }
@@ -274,8 +274,7 @@ fn read_cmov(dmx: &mut MOVDemuxer, strmgr: &mut StreamManager, size: u64) -> Dem
     }
     let len = ret.unwrap();
     validate!(len == uncomp_size);
-    let mut mr = MemoryReader::new_read(dbuf.as_slice());
-    let mut br = ByteReader::new(&mut mr);
+    let mut br = MemoryReader::new_read(dbuf.as_slice());
     let (ctype, csize) = read_chunk_header(&mut br)?;
     validate!(ctype == mktag!(b"moov"));
     let mut ddmx = MOVDemuxer::new(&mut br);
@@ -379,7 +378,7 @@ const TRAK_CHUNK_HANDLERS: &[TrackChunkHandler] = &[
     TrackChunkHandler { ctype: mktag!(b"mdia"), parse: read_mdia },
 ];
 
-fn read_tkhd(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult<u64> {
+fn read_tkhd(track: &mut Track, br: &mut dyn ByteIO, size: u64) -> DemuxerResult<u64> {
     const KNOWN_TKHD_SIZE: u64 = 84;
     validate!(size >= KNOWN_TKHD_SIZE);
     let version             = br.read_byte()?;
@@ -407,7 +406,7 @@ fn read_tkhd(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult
     Ok(KNOWN_TKHD_SIZE)
 }
 
-fn read_mdia(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult<u64> {
+fn read_mdia(track: &mut Track, br: &mut dyn ByteIO, size: u64) -> DemuxerResult<u64> {
     track.stream_type = StreamType::None;
     track.read_mdia(br, size)?;
     Ok(size)
@@ -419,7 +418,7 @@ const MDIA_CHUNK_HANDLERS: &[TrackChunkHandler] = &[
     TrackChunkHandler { ctype: mktag!(b"minf"), parse: read_minf },
 ];
 
-fn read_mdhd(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult<u64> {
+fn read_mdhd(track: &mut Track, br: &mut dyn ByteIO, size: u64) -> DemuxerResult<u64> {
     const KNOWN_MDHD_SIZE: u64 = 24;
     validate!(size >= KNOWN_MDHD_SIZE);
     let version             = br.read_byte()?;
@@ -437,7 +436,7 @@ fn read_mdhd(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult
     Ok(KNOWN_MDHD_SIZE)
 }
 
-fn read_hdlr(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult<u64> {
+fn read_hdlr(track: &mut Track, br: &mut dyn ByteIO, size: u64) -> DemuxerResult<u64> {
     const KNOWN_HDLR_SIZE: u64 = 24;
     validate!(size >= KNOWN_HDLR_SIZE);
     let version             = br.read_byte()?;
@@ -468,7 +467,7 @@ fn read_hdlr(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult
     Ok(KNOWN_HDLR_SIZE)
 }
 
-fn read_minf(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult<u64> {
+fn read_minf(track: &mut Track, br: &mut dyn ByteIO, size: u64) -> DemuxerResult<u64> {
     track.read_minf(br, size)?;
     Ok(size)
 }
@@ -483,7 +482,7 @@ const MINF_CHUNK_HANDLERS: &[TrackChunkHandler] = &[
     TrackChunkHandler { ctype: mktag!(b"stbl"), parse: read_stbl },
 ];
 
-fn read_vmhd(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult<u64> {
+fn read_vmhd(track: &mut Track, br: &mut dyn ByteIO, size: u64) -> DemuxerResult<u64> {
     const KNOWN_VMHD_SIZE: u64 = 12;
     validate!(track.stream_type == StreamType::Video);
     validate!(size >= KNOWN_VMHD_SIZE);
@@ -495,7 +494,7 @@ fn read_vmhd(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult
     Ok(KNOWN_VMHD_SIZE)
 }
 
-fn read_smhd(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult<u64> {
+fn read_smhd(track: &mut Track, br: &mut dyn ByteIO, size: u64) -> DemuxerResult<u64> {
     const KNOWN_SMHD_SIZE: u64 = 8;
     validate!(track.stream_type == StreamType::Audio);
     validate!(size >= KNOWN_SMHD_SIZE);
@@ -507,12 +506,12 @@ fn read_smhd(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult
     Ok(KNOWN_SMHD_SIZE)
 }
 
-fn read_gmhd(track: &mut Track, _br: &mut ByteReader, _size: u64) -> DemuxerResult<u64> {
+fn read_gmhd(track: &mut Track, _br: &mut dyn ByteIO, _size: u64) -> DemuxerResult<u64> {
     validate!(track.stream_type == StreamType::Data);
     Ok(0)
 }
 
-fn read_gmin(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult<u64> {
+fn read_gmin(track: &mut Track, br: &mut dyn ByteIO, size: u64) -> DemuxerResult<u64> {
     validate!(track.stream_type == StreamType::Data);
     const KNOWN_GMIN_SIZE: u64 = 16;
     validate!(size >= KNOWN_GMIN_SIZE);
@@ -526,7 +525,7 @@ fn read_gmin(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult
     Ok(KNOWN_GMIN_SIZE)
 }
 
-fn read_stbl(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult<u64> {
+fn read_stbl(track: &mut Track, br: &mut dyn ByteIO, size: u64) -> DemuxerResult<u64> {
     track.read_stbl(br, size)?;
     Ok(size)
 }
@@ -542,7 +541,7 @@ const STBL_CHUNK_HANDLERS: &[TrackChunkHandler] = &[
     TrackChunkHandler { ctype: mktag!(b"ctts"), parse: read_ctts },
 ];
 
-fn parse_audio_edata(br: &mut ByteReader, start_pos: u64, size: u64) -> DemuxerResult<Option<Vec<u8>>> {
+fn parse_audio_edata(br: &mut dyn ByteIO, start_pos: u64, size: u64) -> DemuxerResult<Option<Vec<u8>>> {
     let read_part = br.tell() - start_pos;
     if read_part + 8 < size {
         let mut buf = [0; 8];
@@ -584,7 +583,7 @@ fn parse_audio_edata(br: &mut ByteReader, start_pos: u64, size: u64) -> DemuxerR
 }
 
 #[allow(clippy::neg_cmp_op_on_partial_ord)]
-fn read_stsd(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult<u64> {
+fn read_stsd(track: &mut Track, br: &mut dyn ByteIO, size: u64) -> DemuxerResult<u64> {
     const KNOWN_STSD_SIZE: u64 = 24;
     validate!(size >= KNOWN_STSD_SIZE);
     let start_pos = br.tell();
@@ -797,7 +796,7 @@ fn read_stsd(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult
     Ok(read_size)
 }
 
-fn read_stts(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult<u64> {
+fn read_stts(track: &mut Track, br: &mut dyn ByteIO, size: u64) -> DemuxerResult<u64> {
     validate!(size >= 8);
     let start_pos = br.tell();
     let version             = br.read_byte()?;
@@ -825,7 +824,7 @@ fn read_stts(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult
     Ok(read_size)
 }
 
-fn read_stss(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult<u64> {
+fn read_stss(track: &mut Track, br: &mut dyn ByteIO, size: u64) -> DemuxerResult<u64> {
     let version             = br.read_byte()?;
     validate!(version == 0);
     let _flags              = br.read_u24be()?;
@@ -843,7 +842,7 @@ fn read_stss(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult
     Ok(size)
 }
 
-fn read_stsc(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult<u64> {
+fn read_stsc(track: &mut Track, br: &mut dyn ByteIO, size: u64) -> DemuxerResult<u64> {
     let version             = br.read_byte()?;
     validate!(version == 0);
     let _flags              = br.read_u24be()?;
@@ -863,7 +862,7 @@ fn read_stsc(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult
     Ok(size)
 }
 
-fn read_stsz(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult<u64> {
+fn read_stsz(track: &mut Track, br: &mut dyn ByteIO, size: u64) -> DemuxerResult<u64> {
     let version             = br.read_byte()?;
     validate!(version == 0);
     let _flags              = br.read_u24be()?;
@@ -899,7 +898,7 @@ fn read_stsz(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult
     }
 }
 
-fn read_stco(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult<u64> {
+fn read_stco(track: &mut Track, br: &mut dyn ByteIO, size: u64) -> DemuxerResult<u64> {
     let version             = br.read_byte()?;
     validate!(version == 0);
     let _flags              = br.read_u24be()?;
@@ -927,7 +926,7 @@ fn read_stco(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult
     Ok(size)
 }
 
-fn read_ctts(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult<u64> {
+fn read_ctts(track: &mut Track, br: &mut dyn ByteIO, size: u64) -> DemuxerResult<u64> {
     validate!(size >= 8);
     let version             = br.read_byte()?;
     let _flags              = br.read_u24be()?;
@@ -979,7 +978,7 @@ const TRAF_CHUNK_HANDLERS: &[TrackChunkHandler] = &[
     TrackChunkHandler { ctype: mktag!(b"meta"), parse: skip_chunk },
 ];
 
-fn read_tfhd(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult<u64> {
+fn read_tfhd(track: &mut Track, br: &mut dyn ByteIO, size: u64) -> DemuxerResult<u64> {
     validate!(size >= 8);
     let start = br.tell();
     let _version            = br.read_byte()?;
@@ -1011,7 +1010,7 @@ fn read_tfhd(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult
     Ok(br.tell() - start)
 }
 
-fn read_trun(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult<u64> {
+fn read_trun(track: &mut Track, br: &mut dyn ByteIO, size: u64) -> DemuxerResult<u64> {
     validate!(size >= 8);
     let version             = br.read_byte()?;
     let flags               = br.read_u24be()?;
@@ -1100,7 +1099,7 @@ fn read_trun(track: &mut Track, br: &mut ByteReader, size: u64) -> DemuxerResult
 }
 
 struct MOVDemuxer<'a> {
-    src:            &'a mut ByteReader<'a>,
+    src:            &'a mut dyn ByteIO,
     depth:          usize,
     mdat_pos:       u64,
     mdat_size:      u64,
@@ -1641,7 +1640,7 @@ impl Track {
     }
 }
 
-fn process_packet(src: &mut ByteReader, strmgr: &StreamManager, track: &mut Track, pts: NATimeInfo, offset: u64, size: usize, first: bool) -> DemuxerResult<NAPacket> {
+fn process_packet(src: &mut dyn ByteIO, strmgr: &StreamManager, track: &mut Track, pts: NATimeInfo, offset: u64, size: usize, first: bool) -> DemuxerResult<NAPacket> {
     if let Some(cpts) = pts.get_pts() {
         let ts = NATimeInfo::ts_to_time(cpts, 1000, pts.tb_num, pts.tb_den);
         track.cur_ts = Some(ts);
@@ -1911,16 +1910,16 @@ impl<'a> NAOptionHandler for MOVDemuxer<'a> {
 }
 
 impl<'a> MOVDemuxer<'a> {
-    fn new(io: &'a mut ByteReader<'a>) -> Self {
+    fn new(io: &'a mut dyn ByteIO) -> Self {
         Self::new_common(io, DemuxMode::Normal)
     }
-    fn new_macbinary(io: &'a mut ByteReader<'a>) -> Self {
+    fn new_macbinary(io: &'a mut dyn ByteIO) -> Self {
         Self::new_common(io, DemuxMode::MacBin)
     }
-    fn new_resfork(io: &'a mut ByteReader<'a>) -> Self {
+    fn new_resfork(io: &'a mut dyn ByteIO) -> Self {
         Self::new_common(io, DemuxMode::ResFork)
     }
-    fn new_common(io: &'a mut ByteReader<'a>, demux_mode: DemuxMode,) -> Self {
+    fn new_common(io: &'a mut dyn ByteIO, demux_mode: DemuxMode,) -> Self {
         MOVDemuxer {
             src:            io,
             depth:          0,
@@ -1973,7 +1972,7 @@ impl<'a> MOVDemuxer<'a> {
 pub struct MOVDemuxerCreator { }
 
 impl DemuxerCreator for MOVDemuxerCreator {
-    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(MOVDemuxer::new(br))
     }
     fn get_name(&self) -> &'static str { "mov" }
@@ -1982,7 +1981,7 @@ impl DemuxerCreator for MOVDemuxerCreator {
 pub struct MacBinaryMOVDemuxerCreator { }
 
 impl DemuxerCreator for MacBinaryMOVDemuxerCreator {
-    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(MOVDemuxer::new_macbinary(br))
     }
     fn get_name(&self) -> &'static str { "mov-macbin" }
@@ -1991,7 +1990,7 @@ impl DemuxerCreator for MacBinaryMOVDemuxerCreator {
 pub struct MacResForkMOVDemuxerCreator { }
 
 impl DemuxerCreator for MacResForkMOVDemuxerCreator {
-    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(MOVDemuxer::new_resfork(br))
     }
     fn get_name(&self) -> &'static str { "mov-resfork" }
@@ -2289,8 +2288,7 @@ mod test {
     fn test_mov_demux() {
         // sample: https://samples.mplayerhq.hu/V-codecs/IV32/cubes.mov
         let mut file = File::open("assets/Indeo/cubes.mov").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 = MOVDemuxer::new(&mut br);
         let mut sm = StreamManager::new();
         let mut si = SeekIndex::new();
@@ -2311,8 +2309,7 @@ mod test {
     fn test_dash_demux() {
         // sample: a stream downloaded with youtube-dl
         let mut file = File::open("assets/ITU/dash.m4a").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 = MOVDemuxer::new(&mut br);
         let mut sm = StreamManager::new();
         let mut si = SeekIndex::new();
@@ -2333,8 +2330,7 @@ mod test {
     fn test_macbinary_demux() {
         // sample from King's Quest VI Macintosh edition
         let mut file = File::open("assets/QT/Halfdome.bin").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 = MOVDemuxer::new_macbinary(&mut br);
         let mut sm = StreamManager::new();
         let mut si = SeekIndex::new();
@@ -2355,8 +2351,7 @@ mod test {
     fn test_resfork_demux() {
         // sample from The Wonders of Electricity: An Adventure in Safety
         let mut file = File::open("assets/QT/car.mov").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 = MOVDemuxer::new_resfork(&mut br);
         let mut sm = StreamManager::new();
         let mut si = SeekIndex::new();
index b28294a4e21ef767502b1da801fb4559337ee8ad..c6b90a4a48e88b7ebd37a0046c7818a1ba45f50b 100644 (file)
@@ -12,7 +12,7 @@ macro_rules! mktag {
 }
 
 struct WAVDemuxer<'a> {
-    src:            &'a mut ByteReader<'a>,
+    src:            &'a mut dyn ByteIO,
     data_pos:       u64,
     data_end:       u64,
     srate:          u32,
@@ -171,7 +171,7 @@ impl<'a> NAOptionHandler for WAVDemuxer<'a> {
 }
 
 impl<'a> WAVDemuxer<'a> {
-    fn new(io: &'a mut ByteReader<'a>) -> Self {
+    fn new(io: &'a mut dyn ByteIO) -> Self {
         WAVDemuxer {
             src:        io,
             data_pos:   0,
@@ -243,7 +243,7 @@ impl<'a> WAVDemuxer<'a> {
 pub struct WAVDemuxerCreator { }
 
 impl DemuxerCreator for WAVDemuxerCreator {
-    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(WAVDemuxer::new(br))
     }
     fn get_name(&self) -> &'static str { "wav" }
@@ -258,8 +258,7 @@ mod test {
     fn test_wav_demux() {
         // sample: https://samples.mplayerhq.hu/A-codecs/msadpcm-stereo/scatter.wav
         let mut file = File::open("assets/MS/scatter.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 = WAVDemuxer::new(&mut br);
         let mut sm = StreamManager::new();
         let mut si = SeekIndex::new();
index 3571ea97aeb4944d47c4f5b58b1cb657906082d9..fd8edea205ecbf3c9cb907f38a6a55023bf5a40f 100644 (file)
@@ -2,7 +2,7 @@ use nihav_core::demuxers::*;
 use std::str::FromStr;
 
 struct Y4MDemuxer<'a> {
-    src:        &'a mut ByteReader<'a>,
+    src:        &'a mut dyn ByteIO,
     width:      usize,
     height:     usize,
     frame_size: usize,
@@ -72,7 +72,7 @@ impl<'a> NAOptionHandler for Y4MDemuxer<'a> {
 }
 
 impl<'a> Y4MDemuxer<'a> {
-    fn new(io: &'a mut ByteReader<'a>) -> Self {
+    fn new(io: &'a mut dyn ByteIO) -> Self {
         Self {
             src:        io,
             width:      0,
@@ -160,7 +160,7 @@ impl<'a> Y4MDemuxer<'a> {
     }
 }
 
-fn read_token(src: &mut ByteReader) -> DemuxerResult<(bool, String)> {
+fn read_token(src: &mut dyn ByteIO) -> DemuxerResult<(bool, String)> {
     let mut string = String::new();
     let ws;
     loop {
@@ -178,7 +178,7 @@ fn read_token(src: &mut ByteReader) -> DemuxerResult<(bool, String)> {
 pub struct Y4MDemuxerCreator { }
 
 impl DemuxerCreator for Y4MDemuxerCreator {
-    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(Y4MDemuxer::new(br))
     }
     fn get_name(&self) -> &'static str { "yuv4mpeg" }
@@ -193,8 +193,7 @@ mod test {
     fn test_y4m_demux() {
         // sample: self-created with avconv
         let mut file = File::open("assets/Misc/test.y4m").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 = Y4MDemuxer::new(&mut br);
         let mut sm = StreamManager::new();
         let mut si = SeekIndex::new();
index 77de73c871d6a322269ee03b1aad6855e99bbb4f..bb622c87dc5e7bd88ca32dffda6fcb92cfc93645 100644 (file)
@@ -24,7 +24,7 @@ struct AVIStream {
 }
 
 struct AVIMuxer<'a> {
-    bw:             &'a mut ByteWriter<'a>,
+    bw:             &'a mut dyn ByteIO,
     index:          Vec<IdxEntry>,
     video_str:      Option<usize>,
     video_id:       u32,
@@ -38,7 +38,7 @@ struct AVIMuxer<'a> {
 }
 
 impl<'a> AVIMuxer<'a> {
-    fn new(bw: &'a mut ByteWriter<'a>) -> Self {
+    fn new(bw: &'a mut dyn ByteIO) -> Self {
         Self {
             bw,
             index:          Vec::new(),
@@ -133,7 +133,7 @@ impl<'a> AVIMuxer<'a> {
     }
 }
 
-fn patch_size(bw: &mut ByteWriter, pos: u64) -> MuxerResult<()> {
+fn patch_size(bw: &mut dyn ByteIO, pos: u64) -> MuxerResult<()> {
     let size = bw.tell() - pos;
     bw.seek(SeekFrom::Current(-((size + 4) as i64)))?;
     bw.write_u32le(size as u32)?;
@@ -573,7 +573,7 @@ impl<'a> NAOptionHandler for AVIMuxer<'a> {
 pub struct AVIMuxerCreator {}
 
 impl MuxerCreator for AVIMuxerCreator {
-    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(AVIMuxer::new(bw))
     }
     fn get_name(&self) -> &'static str { "avi" }
index 13ca8180d37e0002be6a4ae10e61ecde2b75507e..42968ddfa73e353b4369086ec649568e9d7726b3 100644 (file)
@@ -1,7 +1,7 @@
 use nihav_core::muxers::*;
 
 struct GIFMuxer<'a> {
-    bw:             &'a mut ByteWriter<'a>,
+    bw:             &'a mut dyn ByteIO,
     single:         bool,
     gif87:          bool,
     pal_written:    bool,
@@ -9,7 +9,7 @@ struct GIFMuxer<'a> {
 }
 
 impl<'a> GIFMuxer<'a> {
-    fn new(bw: &'a mut ByteWriter<'a>) -> Self {
+    fn new(bw: &'a mut dyn ByteIO) -> Self {
         Self {
             bw,
             single:         false,
@@ -190,7 +190,7 @@ impl<'a> NAOptionHandler for GIFMuxer<'a> {
 pub struct GIFMuxerCreator {}
 
 impl MuxerCreator for GIFMuxerCreator {
-    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(GIFMuxer::new(bw))
     }
     fn get_name(&self) -> &'static str { "gif" }
index 2e6dc0cb25a413969b3d4628078fac33dab77dbb..a73256321f6190ce38054d1a3ef72f8eef1cf73d 100644 (file)
@@ -2,12 +2,12 @@ use nihav_core::muxers::*;
 use nihav_registry::register::*;
 
 struct WAVMuxer<'a> {
-    bw:         &'a mut ByteWriter<'a>,
+    bw:         &'a mut dyn ByteIO,
     data_pos:   u64,
 }
 
 impl<'a> WAVMuxer<'a> {
-    fn new(bw: &'a mut ByteWriter<'a>) -> Self {
+    fn new(bw: &'a mut dyn ByteIO) -> Self {
         Self {
             bw,
             data_pos:   0,
@@ -15,7 +15,7 @@ impl<'a> WAVMuxer<'a> {
     }
 }
 
-fn patch_size(bw: &mut ByteWriter, pos: u64) -> MuxerResult<()> {
+fn patch_size(bw: &mut dyn ByteIO, pos: u64) -> MuxerResult<()> {
     let size = bw.tell() - pos;
     bw.seek(SeekFrom::Current(-((size + 4) as i64)))?;
     bw.write_u32le(size as u32)?;
@@ -111,7 +111,7 @@ impl<'a> NAOptionHandler for WAVMuxer<'a> {
 pub struct WAVMuxerCreator {}
 
 impl MuxerCreator for WAVMuxerCreator {
-    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(WAVMuxer::new(bw))
     }
     fn get_name(&self) -> &'static str { "wav" }
index 1d0ad38c7e0a709616e161c4155002aceaaac517..301073c19a548f459239c7cc70d07a0d8ce41d14 100644 (file)
@@ -1,11 +1,11 @@
 use nihav_core::muxers::*;
 
 struct Y4MMuxer<'a> {
-    bw:             &'a mut ByteWriter<'a>,
+    bw:             &'a mut dyn ByteIO,
 }
 
 impl<'a> Y4MMuxer<'a> {
-    fn new(bw: &'a mut ByteWriter<'a>) -> Self {
+    fn new(bw: &'a mut dyn ByteIO) -> Self {
         Self {
             bw,
         }
@@ -78,7 +78,7 @@ impl<'a> NAOptionHandler for Y4MMuxer<'a> {
 pub struct Y4MMuxerCreator {}
 
 impl MuxerCreator for Y4MMuxerCreator {
-    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(Y4MMuxer::new(bw))
     }
     fn get_name(&self) -> &'static str { "yuv4mpeg" }