From 7a1da73278499da30ba05ba586cb5b86d7339ea9 Mon Sep 17 00:00:00 2001 From: Kostya Shishkov Date: Sun, 17 Aug 2025 19:30:06 +0200 Subject: [PATCH] nihav_misc: switch to ByteIO --- nihav-misc/src/codecs/mwv1.rs | 5 ++--- nihav-misc/src/codecs/pgvv.rs | 5 ++--- nihav-misc/src/codecs/pivc.rs | 15 ++++++--------- nihav-misc/src/codecs/qpeg.rs | 5 ++--- nihav-misc/src/codecs/tealvid.rs | 13 ++++++------- nihav-misc/src/demuxers/mvi.rs | 9 ++++----- nihav-misc/src/demuxers/qpeg.rs | 9 ++++----- nihav-misc/src/demuxers/tealmov.rs | 18 ++++++++---------- 8 files changed, 34 insertions(+), 45 deletions(-) diff --git a/nihav-misc/src/codecs/mwv1.rs b/nihav-misc/src/codecs/mwv1.rs index fd9b8b4..532b892 100644 --- a/nihav-misc/src/codecs/mwv1.rs +++ b/nihav-misc/src/codecs/mwv1.rs @@ -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::*; @@ -254,8 +254,7 @@ impl NADecoder for MWV1Decoder { if let NACodecTypeInfo::Video(_vinfo) = info.get_properties() { if let Some(edata) = info.get_extradata() { validate!(edata.len() >= 64); - 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()); let len = br.read_u32be()? as usize; validate!(edata.len() == len); let _ = br.read_u32be()?; //always 7? diff --git a/nihav-misc/src/codecs/pgvv.rs b/nihav-misc/src/codecs/pgvv.rs index e982540..21e15bd 100644 --- a/nihav-misc/src/codecs/pgvv.rs +++ b/nihav-misc/src/codecs/pgvv.rs @@ -1,7 +1,7 @@ // Somewhat simplified JPEG decoder // TODO: move common JPEG decoding into codec-support -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::*; @@ -363,8 +363,7 @@ impl NADecoder for RadiusStudioDecoder { fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult { let src = pkt.get_buffer(); if src.len() < 2048 { return Err(DecoderError::ShortData); } - let mut mr = MemoryReader::new_read(&src); - let mut br = ByteReader::new(&mut mr); + let mut br = MemoryReader::new_read(&src); let _size_v0 = br.read_u32be()? as usize; let field2_size = br.read_u32be()? as usize; if field2_size != 0 { diff --git a/nihav-misc/src/codecs/pivc.rs b/nihav-misc/src/codecs/pivc.rs index a342411..dd45c11 100644 --- a/nihav-misc/src/codecs/pivc.rs +++ b/nihav-misc/src/codecs/pivc.rs @@ -124,7 +124,7 @@ impl PIFrame { self.stride = (w + tile_size - 1) / tile_size * tile_size; self.frame = vec![0; self.stride * ((h + tile_size - 1) / tile_size * tile_size)]; } - fn decode_tile_intra(&mut self, xpos: usize, ypos: usize, tsize: usize, flags: &mut ByteReader, pixels: &mut ByteReader) -> DecoderResult<()> { + fn decode_tile_intra(&mut self, xpos: usize, ypos: usize, tsize: usize, flags: &mut dyn ByteIO, pixels: &mut dyn ByteIO) -> DecoderResult<()> { let mut flg = flags.read_u16le()?; for yoff in (0..tsize).step_by(tsize / 4) { for xoff in (0..tsize).step_by(tsize / 4) { @@ -151,7 +151,7 @@ impl PIFrame { } Ok(()) } - fn decode_intra(&mut self, flags: &mut ByteReader, pixels: &mut ByteReader) -> DecoderResult<()> { + fn decode_intra(&mut self, flags: &mut dyn ByteIO, pixels: &mut dyn ByteIO) -> DecoderResult<()> { for y in (0..self.height).step_by(self.tile_size) { for x in (0..self.width).step_by(self.tile_size) { self.decode_tile_intra(x, y, self.tile_size, flags, pixels)?; @@ -160,7 +160,7 @@ impl PIFrame { Ok(()) } - fn decode_tile_inter(&mut self, xpos: usize, ypos: usize, tsize: usize, flags: &mut ByteReader, pixels: &mut ByteReader) -> DecoderResult<()> { + fn decode_tile_inter(&mut self, xpos: usize, ypos: usize, tsize: usize, flags: &mut dyn ByteIO, pixels: &mut dyn ByteIO) -> DecoderResult<()> { let mut flg = flags.read_u16le()?; for yoff in (0..tsize).step_by(tsize / 4) { for xoff in (0..tsize).step_by(tsize / 4) { @@ -189,7 +189,7 @@ impl PIFrame { } Ok(()) } - fn decode_inter(&mut self, flags: &mut ByteReader, pixels: &mut ByteReader) -> DecoderResult<()> { + fn decode_inter(&mut self, flags: &mut dyn ByteIO, pixels: &mut dyn ByteIO) -> DecoderResult<()> { for y in (0..self.height).step_by(self.tile_size) { for x in (0..self.width).step_by(self.tile_size) { self.decode_tile_inter(x, y, self.tile_size, flags, pixels)?; @@ -286,11 +286,8 @@ impl NADecoder for PIVideoDecoder { &self.ubuf }; - let mut mr = MemoryReader::new_read(tree_flags); - let mut flags = ByteReader::new(&mut mr); - - let mut mr = MemoryReader::new_read(pixel_data); - let mut pixels = ByteReader::new(&mut mr); + let mut flags = MemoryReader::new_read(tree_flags); + let mut pixels = MemoryReader::new_read(pixel_data); let is_intra = (frame_flags & 1) == 0; diff --git a/nihav-misc/src/codecs/qpeg.rs b/nihav-misc/src/codecs/qpeg.rs index e9702f1..b0e05d7 100644 --- a/nihav-misc/src/codecs/qpeg.rs +++ b/nihav-misc/src/codecs/qpeg.rs @@ -1,4 +1,4 @@ -use nihav_core::io::byteio::{ByteReader,MemoryReader}; +use nihav_core::io::byteio::{ByteIO,MemoryReader}; use nihav_core::codecs::*; struct DVCDecoder { @@ -42,8 +42,7 @@ impl NADecoder for DVCDecoder { } fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult { 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 mut pos = 0; let mut is_intra = true; diff --git a/nihav-misc/src/codecs/tealvid.rs b/nihav-misc/src/codecs/tealvid.rs index 09ff3a3..e37ec8d 100644 --- a/nihav-misc/src/codecs/tealvid.rs +++ b/nihav-misc/src/codecs/tealvid.rs @@ -1,4 +1,4 @@ -use nihav_core::io::byteio::{ByteReader,MemoryReader}; +use nihav_core::io::byteio::{ByteIO,MemoryReader}; use nihav_core::codecs::*; use nihav_codec_support::codecs::imaadpcm::*; @@ -17,7 +17,7 @@ struct FrameContext { } impl FrameContext { - fn decode_block2(&mut self, br: &mut ByteReader, dst: &mut [u8], xpos: usize, ypos: usize) -> DecoderResult<()> { + fn decode_block2(&mut self, br: &mut dyn ByteIO, dst: &mut [u8], xpos: usize, ypos: usize) -> DecoderResult<()> { let op = if self.sub2op_run > 0 { self.sub2op_run -= 1; self.sub2op_val @@ -76,7 +76,7 @@ impl FrameContext { } Ok(()) } - fn decode_block4(&mut self, br: &mut ByteReader, dst: &mut [u8], xpos: usize, ypos: usize, split: bool) -> DecoderResult<()> { + fn decode_block4(&mut self, br: &mut dyn ByteIO, dst: &mut [u8], xpos: usize, ypos: usize, split: bool) -> DecoderResult<()> { let op = if split { 0xFF } else if self.subop_run > 0 { @@ -149,7 +149,7 @@ impl FrameContext { } Ok(()) } - fn unpack_frame(&mut self, br: &mut ByteReader, dst: &mut [u8]) -> DecoderResult<()> { + fn unpack_frame(&mut self, br: &mut dyn ByteIO, dst: &mut [u8]) -> DecoderResult<()> { self.op_run = 0; self.op_val = 0; self.subop_run = 0; @@ -251,7 +251,7 @@ impl FrameDecoder { self.frame = vec![0; self.fctx.width * self.fctx.height]; self.fctx.pframe = vec![0; self.fctx.width * self.fctx.height]; } - fn load_raw_frame(&mut self, br: &mut ByteReader) -> DecoderResult<()> { + fn load_raw_frame(&mut self, br: &mut dyn ByteIO) -> DecoderResult<()> { if self.fctx.width == 160 { br.read_buf(&mut self.frame)?; } else { @@ -364,8 +364,7 @@ impl NADecoder for TealVideoDecoder { } fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult { 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 frm_type = br.read_u16be()?; let _is_last = (br.read_u16be()? & 1) == 0; diff --git a/nihav-misc/src/demuxers/mvi.rs b/nihav-misc/src/demuxers/mvi.rs index 99af37c..48856ac 100644 --- a/nihav-misc/src/demuxers/mvi.rs +++ b/nihav-misc/src/demuxers/mvi.rs @@ -1,7 +1,7 @@ use nihav_core::demuxers::*; struct MVIDemuxer<'a> { - src: &'a mut ByteReader<'a>, + src: &'a mut dyn ByteIO, is_large: bool, vpacket: Option, aframe: usize, @@ -13,7 +13,7 @@ struct MVIDemuxer<'a> { } impl<'a> MVIDemuxer<'a> { - fn new(src: &'a mut ByteReader<'a>) -> Self { + fn new(src: &'a mut dyn ByteIO) -> Self { MVIDemuxer { src, is_large: false, @@ -134,7 +134,7 @@ impl<'a> NAOptionHandler for MVIDemuxer<'a> { pub struct MVIDemuxerCreator { } impl DemuxerCreator for MVIDemuxerCreator { - fn new_demuxer<'a>(&self, br: &'a mut ByteReader<'a>) -> Box + 'a> { + fn new_demuxer<'a>(&self, br: &'a mut dyn ByteIO) -> Box + 'a> { Box::new(MVIDemuxer::new(br)) } fn get_name(&self) -> &'static str { "mvi" } @@ -149,8 +149,7 @@ mod test { fn test_mvi_demux() { // sample from AD&D Core Rules CD let mut file = File::open("assets/Misc/MP/avtest.mvi").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 = MVIDemuxer::new(&mut br); let mut sm = StreamManager::new(); let mut si = SeekIndex::new(); diff --git a/nihav-misc/src/demuxers/qpeg.rs b/nihav-misc/src/demuxers/qpeg.rs index a80a01a..c43fc86 100644 --- a/nihav-misc/src/demuxers/qpeg.rs +++ b/nihav-misc/src/demuxers/qpeg.rs @@ -1,12 +1,12 @@ use nihav_core::demuxers::*; struct QPEGDemuxer<'a> { - src: &'a mut ByteReader<'a>, + src: &'a mut dyn ByteIO, frameno: u32, } impl<'a> QPEGDemuxer<'a> { - fn new(src: &'a mut ByteReader<'a>) -> Self { + fn new(src: &'a mut dyn ByteIO) -> Self { QPEGDemuxer { src, frameno: 0, @@ -68,7 +68,7 @@ impl<'a> NAOptionHandler for QPEGDemuxer<'a> { pub struct QPEGDemuxerCreator { } impl DemuxerCreator for QPEGDemuxerCreator { - fn new_demuxer<'a>(&self, br: &'a mut ByteReader<'a>) -> Box + 'a> { + fn new_demuxer<'a>(&self, br: &'a mut dyn ByteIO) -> Box + 'a> { Box::new(QPEGDemuxer::new(br)) } fn get_name(&self) -> &'static str { "qpeg" } @@ -83,8 +83,7 @@ mod test { fn test_qpeg_demux() { // sample from Inside Multimedia 1994 October let mut file = File::open("assets/Misc/club01.dvc").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 = QPEGDemuxer::new(&mut br); let mut sm = StreamManager::new(); let mut si = SeekIndex::new(); diff --git a/nihav-misc/src/demuxers/tealmov.rs b/nihav-misc/src/demuxers/tealmov.rs index 283b795..0634c96 100644 --- a/nihav-misc/src/demuxers/tealmov.rs +++ b/nihav-misc/src/demuxers/tealmov.rs @@ -1,7 +1,7 @@ use nihav_core::demuxers::*; struct TealMovieDemuxer<'a> { - src: &'a mut ByteReader<'a>, + src: &'a mut dyn ByteIO, frameno: usize, offsets: Vec, afrm_start: usize, @@ -15,7 +15,7 @@ struct TealMovieDemuxer<'a> { } impl<'a> TealMovieDemuxer<'a> { - fn new(src: &'a mut ByteReader<'a>) -> Self { + fn new(src: &'a mut dyn ByteIO) -> Self { TealMovieDemuxer { src, frameno: 0, @@ -30,7 +30,7 @@ impl<'a> TealMovieDemuxer<'a> { height: 0, } } - fn skip_block2(br: &mut ByteReader, b2_run: &mut usize, b2_type: &mut u8) -> DemuxerResult<()> { + fn skip_block2(br: &mut dyn ByteIO, b2_run: &mut usize, b2_type: &mut u8) -> DemuxerResult<()> { let op = if *b2_run > 0 { *b2_run -= 1; *b2_type @@ -58,7 +58,7 @@ impl<'a> TealMovieDemuxer<'a> { } Ok(()) } - fn skip_block4(br: &mut ByteReader, split: bool, b4_run: &mut usize, b4_type: &mut u8, b2_run: &mut usize, b2_type: &mut u8) -> DemuxerResult<()> { + fn skip_block4(br: &mut dyn ByteIO, split: bool, b4_run: &mut usize, b4_type: &mut u8, b2_run: &mut usize, b2_type: &mut u8) -> DemuxerResult<()> { let op = if split { 0xFF } else if *b4_run > 0 { @@ -93,7 +93,7 @@ impl<'a> TealMovieDemuxer<'a> { } Ok(()) } - fn find_type2_size(br: &mut ByteReader, width: usize, height: usize) -> DemuxerResult { + fn find_type2_size(br: &mut dyn ByteIO, width: usize, height: usize) -> DemuxerResult { let mut b8_type = 0; let mut b8_run = 0; let mut b4_type = 0; @@ -144,8 +144,7 @@ impl<'a> TealMovieDemuxer<'a> { Ok(br.tell() as usize) } fn parse_frame(&mut self) -> DemuxerResult<(bool, Vec)> { - let mut mr = MemoryReader::new_read(&self.buf[self.ppos..]); - let mut br = ByteReader::new(&mut mr); + let mut br = MemoryReader::new_read(&self.buf[self.ppos..]); let ftype = br.read_u16be()?; let flags = br.read_u16be()?; if (flags & 1) == 0 { @@ -319,7 +318,7 @@ impl<'a> NAOptionHandler for TealMovieDemuxer<'a> { pub struct TealMovieDemuxerCreator { } impl DemuxerCreator for TealMovieDemuxerCreator { - fn new_demuxer<'a>(&self, br: &'a mut ByteReader<'a>) -> Box + 'a> { + fn new_demuxer<'a>(&self, br: &'a mut dyn ByteIO) -> Box + 'a> { Box::new(TealMovieDemuxer::new(br)) } fn get_name(&self) -> &'static str { "tealmov" } @@ -334,8 +333,7 @@ mod test { fn test_teal_movie_demux() { // sample bundled with TealMovie software let mut file = File::open("assets/Misc/ASTRONUT.PDB").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 = TealMovieDemuxer::new(&mut br); let mut sm = StreamManager::new(); let mut si = SeekIndex::new(); -- 2.39.5