]> git.nihav.org Git - nihav.git/commitdiff
nihav_acorn: switch to ByteIO
authorKostya Shishkov <kostya.shishkov@gmail.com>
Sun, 17 Aug 2025 16:07:28 +0000 (18:07 +0200)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Sun, 17 Aug 2025 16:07:28 +0000 (18:07 +0200)
nihav-acorn/src/codecs/escape.rs
nihav-acorn/src/codecs/linepack.rs
nihav-acorn/src/codecs/movinglines.rs
nihav-acorn/src/codecs/rawvideo.rs
nihav-acorn/src/demuxers/armovie.rs
nihav-acorn/src/demuxers/tca.rs

index d2e0b4d72db6eb5315a78e0cc6817d02dcfbda33..d5b4e07f8529710feeb4d49b53e65b27de4af1ca 100644 (file)
@@ -98,8 +98,7 @@ impl NADecoder for Escape102Decoder {
     fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         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 codec_id = br.read_u32le()?;
         validate!(codec_id == 0x102);
         let vsize = br.read_u32le()? as usize;
@@ -230,8 +229,7 @@ impl NADecoder for Escape122Decoder {
     fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         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 codec_id = br.read_u32le()?;
         validate!(codec_id == 0x100 + 22);
         let vsize = br.read_u32le()? as usize;
index 62f40540eecb62441870e5c7a8a224c0cc3a83fd..feb1cd6bbda5a63812a9185cfd64b2faeadbab0a 100644 (file)
@@ -41,8 +41,7 @@ impl NADecoder for LinePackDecoder {
     fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let src = pkt.get_buffer();
         validate!(src.len() > 2 && (src.len() & 1) == 0);
-        let mut mr = MemoryReader::new_read(&src);
-        let mut br = ByteReader::new(&mut mr);
+        let mut br = MemoryReader::new_read(&src);
 
         let mut is_intra = true;
         let mut dpos = 0;
index b11af12ebb3d5beb38204952b573271a273f0307..fb9696b936dd4e04f8b76131119b8c4b1c916e1a 100644 (file)
@@ -43,8 +43,7 @@ impl NADecoder for MLDecoder {
     fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let src = pkt.get_buffer();
         validate!(src.len() > 2 && (src.len() & 1) == 0);
-        let mut mr = MemoryReader::new_read(&src);
-        let mut br = ByteReader::new(&mut mr);
+        let mut br = MemoryReader::new_read(&src);
 
         let mut is_intra = true;
         let mut dpos = 0;
index 2e636954aea514309b9503c8a3ab5185a2bbf13b..71f9f74cc8657f38e787f1dfe50e2e7c306608c4 100644 (file)
@@ -100,8 +100,7 @@ impl NADecoder for RawDecoder {
         let bufinfo = alloc_video_buffer(self.info.get_properties().get_video_info().unwrap(), 0)?;
         match self.codec_id {
             2 => {
-                let mut mr = MemoryReader::new_read(&src);
-                let mut br = ByteReader::new(&mut mr);
+                let mut br = MemoryReader::new_read(&src);
 
                 let mut buf = bufinfo.get_vbuf16().unwrap();
                 let stride = buf.get_stride(0);
index 23cf94abe4a5dc7bec4c23e33f0a0559a5542451..9243a3087abe9be4c0714a255bfbd89037a77f21 100644 (file)
@@ -28,7 +28,7 @@ trait ReadString {
     fn read_string(&mut self) -> DemuxerResult<Vec<u8>>;
 }
 
-impl<'a> ReadString for ByteReader<'a> {
+impl<T: ?Sized + ByteIO> ReadString for T {
     fn read_string(&mut self) -> DemuxerResult<Vec<u8>> {
         let mut res = Vec::new();
         loop {
@@ -153,7 +153,7 @@ enum ReadState {
 }
 
 struct ARMovieDemuxer<'a> {
-    src:            &'a mut ByteReader<'a>,
+    src:            &'a mut dyn ByteIO,
     chunk_offs:     Vec<ChunkInfo>,
     cur_chunk:      usize,
     state:          ReadState,
@@ -164,7 +164,7 @@ struct ARMovieDemuxer<'a> {
 }
 
 impl<'a> ARMovieDemuxer<'a> {
-    fn new(src: &'a mut ByteReader<'a>) -> Self {
+    fn new(src: &'a mut dyn ByteIO) -> Self {
         Self {
             src,
             chunk_offs:     Vec::new(),
@@ -427,11 +427,11 @@ impl<'a> NAOptionHandler for ARMovieDemuxer<'a> {
 pub struct ARMovieDemuxerCreator { }
 
 impl RawDemuxerCreator for ARMovieDemuxerCreator {
-    fn new_demuxer<'a>(&self, br: &'a mut ByteReader<'a>) -> Box<dyn RawDemuxCore<'a> + 'a> {
+    fn new_demuxer<'a>(&self, br: &'a mut dyn ByteIO) -> Box<dyn RawDemuxCore<'a> + 'a> {
         Box::new(ARMovieDemuxer::new(br))
     }
     fn get_name(&self) -> &'static str { "armovie" }
-    fn check_format(&self, br: &mut ByteReader) -> bool {
+    fn check_format(&self, br: &mut dyn ByteIO) -> bool {
         let mut hdr = [0; 8];
         br.read_buf(&mut hdr).is_ok() && &hdr == b"ARMovie\n"
     }
@@ -446,8 +446,7 @@ mod test {
     fn test_armovie_demux() {
         // a sample from Acorn Replay Demonstration Disc 2
         let mut file = File::open("assets/Acorn/CHEMSET2").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 = ARMovieDemuxer::new(&mut br);
         let mut sm = StreamManager::new();
         let mut si = SeekIndex::new();
@@ -467,8 +466,7 @@ mod test {
     fn test_armovie_tca_demux() {
         // a sample from All About Planes
         let mut file = File::open("assets/Acorn/wessex").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 = ARMovieDemuxer::new(&mut br);
         let mut sm = StreamManager::new();
         let mut si = SeekIndex::new();
index e35e718cab046477efe06007af3c6bfc5013237c..16c8cffd93567515220090d96587d2ef99735a04 100644 (file)
@@ -1,12 +1,12 @@
 use nihav_core::demuxers::*;
 
 struct TCADemuxer<'a> {
-    src:        &'a mut ByteReader<'a>,
+    src:        &'a mut dyn ByteIO,
     tca:        TCACoreDemuxer,
 }
 
 impl<'a> TCADemuxer<'a> {
-    fn new(src: &'a mut ByteReader<'a>) -> Self {
+    fn new(src: &'a mut dyn ByteIO) -> Self {
         Self {
             src,
             tca:    TCACoreDemuxer::default()
@@ -38,7 +38,7 @@ impl<'a> NAOptionHandler for TCADemuxer<'a> {
 pub struct TCADemuxerCreator { }
 
 impl DemuxerCreator for TCADemuxerCreator {
-    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(TCADemuxer::new(br))
     }
     fn get_name(&self) -> &'static str { "tca" }
@@ -57,7 +57,7 @@ pub(crate) struct TCACoreDemuxer {
 }
 
 impl TCACoreDemuxer {
-    pub(crate) fn open(&mut self, src: &mut ByteReader, strmgr: &mut StreamManager, mut tb_num: u32, mut tb_den: u32) -> DemuxerResult<()> {
+    pub(crate) fn open(&mut self, src: &mut dyn ByteIO, strmgr: &mut StreamManager, mut tb_num: u32, mut tb_den: u32) -> DemuxerResult<()> {
         let start_pos = src.tell();
         let tag                     = src.peek_tag()?;
         let is_acef = &tag == b"ACEF";
@@ -175,7 +175,7 @@ impl TCACoreDemuxer {
         Ok(())
     }
 
-    pub(crate) fn get_frame(&mut self, src: &mut ByteReader, strmgr: &mut StreamManager) -> DemuxerResult<NAPacket> {
+    pub(crate) fn get_frame(&mut self, src: &mut dyn ByteIO, strmgr: &mut StreamManager) -> DemuxerResult<NAPacket> {
         let has_video = self.video_pos + 4 < self.data_end;
         let has_audio = self.audio && self.sound_pos < self.sound_end;
 
@@ -215,7 +215,7 @@ impl TCACoreDemuxer {
         }
     }
 
-    pub(crate) fn get_frame_raw(&mut self, src: &mut ByteReader, strmgr: &mut StreamManager) -> DemuxerResult<NARawData> {
+    pub(crate) fn get_frame_raw(&mut self, src: &mut dyn ByteIO, strmgr: &mut StreamManager) -> DemuxerResult<NARawData> {
         let pkt = self.get_frame(src, strmgr)?;
         Ok(NARawData::new_from_refbuf(pkt.get_stream(), pkt.get_buffer()))
     }
@@ -230,8 +230,7 @@ mod test {
     fn test_tca_demux() {
         // a sample from RISC DISC 3
         let mut file = File::open("assets/Acorn/JUMPER").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 = TCADemuxer::new(&mut br);
         let mut sm = StreamManager::new();
         let mut si = SeekIndex::new();