From d50b9c685f542fcd262fa2f9a29a104f4ee84f8a Mon Sep 17 00:00:00 2001 From: Kostya Shishkov Date: Sun, 17 Aug 2025 18:37:16 +0200 Subject: [PATCH] nihav_flash: switch to ByteIO --- nihav-flash/src/codecs/flashsv.rs | 10 ++++------ nihav-flash/src/demuxers/flv.rs | 12 +++++------- nihav-flash/src/muxers/flv.rs | 8 ++++---- 3 files changed, 13 insertions(+), 17 deletions(-) diff --git a/nihav-flash/src/codecs/flashsv.rs b/nihav-flash/src/codecs/flashsv.rs index 195df10..d221487 100644 --- a/nihav-flash/src/codecs/flashsv.rs +++ b/nihav-flash/src/codecs/flashsv.rs @@ -80,7 +80,7 @@ impl FSVDecoder { bsize: Vec::new(), } } - fn decode_v1(&mut self, br: &mut ByteReader, data: &mut [u8], stride: usize) -> DecoderResult { + fn decode_v1(&mut self, br: &mut dyn ByteIO, data: &mut [u8], stride: usize) -> DecoderResult { let mut is_intra = true; for (yy, row) in data.chunks_mut(stride * self.block_h).enumerate() { let cur_h = (self.h - yy * self.block_h).min(self.block_h); @@ -104,7 +104,7 @@ impl FSVDecoder { } Ok(is_intra) } - fn decode_v2(&mut self, br: &mut ByteReader, data: &mut [u8], stride: usize, keyframe: bool) -> DecoderResult { + fn decode_v2(&mut self, br: &mut dyn ByteIO, data: &mut [u8], stride: usize, keyframe: bool) -> DecoderResult { let mut is_intra = !self.has_ifrm; let bstride = (self.w + self.block_w - 1) / self.block_w; for y in (0..self.h).step_by(self.block_h) { @@ -189,8 +189,7 @@ impl FSVDecoder { } }, 2 => { - let mut mr = MemoryReader::new_read(&self.tile[..src_len]); - let mut br = ByteReader::new(&mut mr); + let mut br = MemoryReader::new_read(&self.tile[..src_len]); for line in dst.chunks_mut(stride).skip(start).take(height) { for rgb in line.chunks_mut(3).take(cur_w) { let b = br.read_byte()?; @@ -240,8 +239,7 @@ impl NADecoder for FSVDecoder { let src = pkt.get_buffer(); validate!(src.len() > 4); - let mut mr = MemoryReader::new_read(&src); - let mut br = ByteReader::new(&mut mr); + let mut br = MemoryReader::new_read(&src); let hdr0 = br.read_u16be()? as usize; let hdr1 = br.read_u16be()? as usize; diff --git a/nihav-flash/src/demuxers/flv.rs b/nihav-flash/src/demuxers/flv.rs index 5f0dc0b..75680a6 100644 --- a/nihav-flash/src/demuxers/flv.rs +++ b/nihav-flash/src/demuxers/flv.rs @@ -4,7 +4,7 @@ use nihav_core::io::bitreader::*; const AVC_ID: u8 = 7; struct FLVDemuxer<'a> { - src: &'a mut ByteReader<'a>, + src: &'a mut dyn ByteIO, vpkts: Vec, vtag: Option, apkts: Vec, @@ -118,7 +118,7 @@ impl<'a> NAOptionHandler for FLVDemuxer<'a> { } impl<'a> FLVDemuxer<'a> { - fn new(io: &'a mut ByteReader<'a>) -> Self { + fn new(io: &'a mut dyn ByteIO) -> Self { Self { src: io, vpkts: Vec::with_capacity(2), @@ -460,7 +460,7 @@ impl<'a> FLVDemuxer<'a> { pub struct FLVDemuxerCreator { } impl DemuxerCreator for FLVDemuxerCreator { - 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(FLVDemuxer::new(br)) } fn get_name(&self) -> &'static str { "flv" } @@ -475,8 +475,7 @@ mod test { #[test] fn test_flv_demux() { let mut file = File::open("assets/Flash/input.flv").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 = FLVDemuxer::new(&mut br); let mut sm = StreamManager::new(); let mut si = SeekIndex::new(); @@ -495,8 +494,7 @@ mod test { #[test] fn test_flv_demux_back() { let mut file = File::open("assets/Flash/input.flv").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 = FLVDemuxer::new(&mut br); let mut sm = StreamManager::new(); let mut si = SeekIndex::new(); diff --git a/nihav-flash/src/muxers/flv.rs b/nihav-flash/src/muxers/flv.rs index 2ab2c5b..b145238 100644 --- a/nihav-flash/src/muxers/flv.rs +++ b/nihav-flash/src/muxers/flv.rs @@ -49,7 +49,7 @@ trait FLVPropertyWriter { fn write_property_bool(&mut self, name: &str, val: bool) -> MuxerResult<()>; } -impl<'a> FLVPropertyWriter for ByteWriter<'a> { +impl FLVPropertyWriter for T { fn write_property_num(&mut self, name: &str, val: f64) -> MuxerResult<()> { self.write_u16be(name.len() as u16)?; self.write_buf(name.as_bytes())?; @@ -87,7 +87,7 @@ macro_rules! write_packet { } struct FLVMuxer<'a> { - bw: &'a mut ByteWriter<'a>, + bw: &'a mut dyn ByteIO, atag: u8, ahdr: u8, vtag: u8, @@ -97,7 +97,7 @@ struct FLVMuxer<'a> { } impl<'a> FLVMuxer<'a> { - fn new(bw: &'a mut ByteWriter<'a>) -> Self { + fn new(bw: &'a mut dyn ByteIO) -> Self { Self { bw, atag: NO_CODEC, @@ -282,7 +282,7 @@ impl<'a> NAOptionHandler for FLVMuxer<'a> { pub struct FLVMuxerCreator {} impl MuxerCreator for FLVMuxerCreator { - fn new_muxer<'a>(&self, bw: &'a mut ByteWriter<'a>) -> Box + 'a> { + fn new_muxer<'a>(&self, bw: &'a mut dyn ByteIO) -> Box + 'a> { Box::new(FLVMuxer::new(bw)) } fn get_name(&self) -> &'static str { "flv" } -- 2.39.5