]> git.nihav.org Git - nihav.git/commitdiff
nihav_llaudio: switch to ByteIO
authorKostya Shishkov <kostya.shishkov@gmail.com>
Sun, 17 Aug 2025 17:26:05 +0000 (19:26 +0200)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Mon, 18 Aug 2025 17:02:12 +0000 (19:02 +0200)
nihav-llaudio/src/codecs/ape.rs
nihav-llaudio/src/codecs/flac.rs
nihav-llaudio/src/codecs/tta.rs
nihav-llaudio/src/codecs/wavpack.rs
nihav-llaudio/src/demuxers/ape.rs
nihav-llaudio/src/demuxers/flac.rs
nihav-llaudio/src/demuxers/flacraw.rs
nihav-llaudio/src/demuxers/tta.rs
nihav-llaudio/src/demuxers/wavpack.rs
nihav-llaudio/src/muxers/flac.rs

index 7b02c94d033e21ac25848bbbcc0651cda91851f9..fd320de118c17cd3621602d14cf54c4541a94a11 100644 (file)
@@ -41,8 +41,7 @@ impl NADecoder for APEDecoder {
     fn init(&mut self, _supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()> {
         if let NACodecTypeInfo::Audio(_ainfo) = info.get_properties() {
             if let Some(buf) = info.get_extradata() {
-                let mut mr = MemoryReader::new_read(&buf);
-                let mut br = ByteReader::new(&mut mr);
+                let mut br = MemoryReader::new_read(&buf);
                 let version             = br.read_u16le()?;
                 let compression         = br.read_u16le()?;
                 let _flags              = br.read_u16le()?;
index c1142b15de4ebbd6d7ac7a99e9279e17c1d3b340..63fa288d92d4bf53f58c77fbefd0db964eae036d 100644 (file)
@@ -243,8 +243,7 @@ impl NADecoder for FlacDecoder {
             if let Some(buf) = info.get_extradata() {
                 validate!(buf.len() >= 22);
 
-                let mut mr = MemoryReader::new_read(&buf);
-                let mut br = ByteReader::new(&mut mr);
+                let mut br = MemoryReader::new_read(&buf);
 
                 self.min_blk_size       = br.read_u16be()? as usize;
                 self.max_blk_size       = br.read_u16be()? as usize;
@@ -655,8 +654,7 @@ mod test {
         llaudio_register_all_demuxers(&mut dmx_reg);
         let dmx_f = dmx_reg.find_demuxer("flac").unwrap();
         let mut file = std::fs::File::open("assets/LLaudio/luckynight.flac").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 = create_demuxer(dmx_f, &mut br).unwrap();
 
         let mut pkt_sizes = Vec::new();
index 2ef90a58a904a0b3246eb763984ca5958053c65b..1bfee62eb772c642a1615b4fe5ccce3133786df6 100644 (file)
@@ -224,8 +224,7 @@ impl NADecoder for TTADecoder {
                 if !check_crc(&buf) {
                     return Err(DecoderError::ChecksumError);
                 }
-                let mut mr = MemoryReader::new_read(&buf);
-                let mut br = ByteReader::new(&mut mr);
+                let mut br = MemoryReader::new_read(&buf);
                 let tag                 = br.read_tag()?;
                 validate!(&tag == b"TTA1");
                 let afmt                = br.read_u16le()?;
index d8f2302600a127e320dbc61135e566caa411b51d..963d5e71680553da3662724535b32bbd907fb1a3 100644 (file)
@@ -40,8 +40,7 @@ const WV_HEADER_SIZE: usize = 32;
 impl WVHeader {
     #[allow(clippy::field_reassign_with_default)]
     fn parse(src: &[u8]) -> DecoderResult<Self> {
-        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_tag()?;
         validate!(&tag == b"wvpk");
         let mut hdr = Self::default();
@@ -535,7 +534,7 @@ struct WavPackDecoder {
     dstate:     DecorrState,
 }
 
-fn get_subblock(br: &mut ByteReader) -> DecoderResult<(u8, usize)> {
+fn get_subblock(br: &mut dyn ByteIO) -> DecoderResult<(u8, usize)> {
     let id1                             = br.read_byte()?;
     let id = id1 & 0x3F;
     let mut len = 2 * if (id1 & 0x80) == 0 {
@@ -657,8 +656,7 @@ impl WavPackDecoder {
     }
     #[allow(clippy::cognitive_complexity)]
     fn decode_block(&mut self, hdr: &WVHeader, src: &[u8], start_ch: usize, abuf: &mut NABufferType) -> DecoderResult<()> {
-        let mut mr = MemoryReader::new_read(src);
-        let mut br = ByteReader::new(&mut mr);
+        let mut br = MemoryReader::new_read(src);
         let mut has_terms = false;
         let mut has_weights = false;
         let mut has_samples = false;
@@ -930,8 +928,7 @@ impl NADecoder for WavPackDecoder {
                     self.header = hdr;
                     off += WV_HEADER_SIZE;
                     let size = hdr.get_size();
-                    let mut mr = MemoryReader::new_read(&buf[off..][..size]);
-                    let mut br = ByteReader::new(&mut mr);
+                    let mut br = MemoryReader::new_read(&buf[off..][..size]);
                     while br.left() > 0 {
                         let (id, len)   = get_subblock(&mut br)?;
                         match id {
index 76717378ff201c2aaa878140b536b67a60b0d6e0..8cf01d8ea77b2fd5557e0447c5721403fdc73e2c 100644 (file)
@@ -9,7 +9,7 @@ struct Frame {
 }
 
 struct APEDemuxer<'a> {
-    src:            &'a mut ByteReader<'a>,
+    src:            &'a mut dyn ByteIO,
     cur_frame:      usize,
     frames:         Vec<Frame>,
     normal_blocks:  u32,
@@ -19,7 +19,7 @@ struct APEDemuxer<'a> {
 }
 
 impl<'a> APEDemuxer<'a> {
-    fn new(io: &'a mut ByteReader<'a>) -> Self {
+    fn new(io: &'a mut dyn ByteIO) -> Self {
         Self {
             src:            io,
             cur_frame:      0,
@@ -237,7 +237,7 @@ impl<'a> NAOptionHandler for APEDemuxer<'a> {
 pub struct APEDemuxerCreator { }
 
 impl DemuxerCreator for APEDemuxerCreator {
-    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(APEDemuxer::new(br))
     }
     fn get_name(&self) -> &'static str { "ape" }
@@ -252,8 +252,7 @@ mod test {
     fn test_ape_demux() {
         // sample: https://samples.mplayerhq.hu/A-codecs/lossless/luckynight.ape
         let mut file = File::open("assets/LLaudio/ape/luckynight.ape").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 = APEDemuxer::new(&mut br);
         let mut sm = StreamManager::new();
         let mut si = SeekIndex::new();
index bb685b2d062f3d66c08128ee4ea7b295f0e4485a..a9526b73d36796c80fcd5f3276fe465de56be65c 100644 (file)
@@ -10,7 +10,7 @@ struct FrameSeekInfo {
 }
 
 struct FLACDemuxer<'a> {
-    src:            &'a mut ByteReader<'a>,
+    src:            &'a mut dyn ByteIO,
     data_start:     u64,
     tot_samples:    u64,
     cur_samples:    u64,
@@ -35,7 +35,7 @@ fn common_header_word(mut val: u32) -> u32 {
 }
 
 impl<'a> FLACDemuxer<'a> {
-    fn new(io: &'a mut ByteReader<'a>) -> Self {
+    fn new(io: &'a mut dyn ByteIO) -> Self {
         Self {
             src:            io,
             data_start:     0,
@@ -287,7 +287,7 @@ impl<'a> NAOptionHandler for FLACDemuxer<'a> {
 pub struct FLACDemuxerCreator { }
 
 impl DemuxerCreator for FLACDemuxerCreator {
-    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(FLACDemuxer::new(br))
     }
     fn get_name(&self) -> &'static str { "flac" }
@@ -302,8 +302,7 @@ mod test {
     fn test_flac_demux() {
         // sample: https://samples.mplayerhq.hu/A-codecs/lossless/luckynight.flac
         let mut file = File::open("assets/LLaudio/luckynight.flac").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 = FLACDemuxer::new(&mut br);
         let mut sm = StreamManager::new();
         let mut si = SeekIndex::new();
index dcdd5a5b9be9082cf4a7a971eaa0bc3f543ea00d..072ed4c6ee724d94184e9752d964cc81f6381fe5 100644 (file)
@@ -2,7 +2,7 @@ use nihav_core::frame::*;
 use nihav_core::demuxers::*;
 
 struct FLACDemuxer<'a> {
-    src:            &'a mut ByteReader<'a>,
+    src:            &'a mut dyn ByteIO,
     data_start:     u64,
     tot_samples:    u64,
     cur_samples:    u64,
@@ -15,7 +15,7 @@ struct FLACDemuxer<'a> {
 }
 
 impl<'a> FLACDemuxer<'a> {
-    fn new(io: &'a mut ByteReader<'a>) -> Self {
+    fn new(io: &'a mut dyn ByteIO) -> Self {
         Self {
             src:            io,
             data_start:     0,
@@ -129,11 +129,11 @@ impl<'a> NAOptionHandler for FLACDemuxer<'a> {
 pub struct FLACDemuxerCreator { }
 
 impl RawDemuxerCreator for FLACDemuxerCreator {
-    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(FLACDemuxer::new(br))
     }
     fn get_name(&self) -> &'static str { "flac" }
-    fn check_format(&self, br: &mut ByteReader) -> bool {
+    fn check_format(&self, br: &mut dyn ByteIO) -> bool {
         if br.seek(SeekFrom::Start(0)).is_err() {
             return false;
         }
@@ -152,8 +152,7 @@ mod test {
     fn test_flac_raw_demux() {
         // sample: https://samples.mplayerhq.hu/A-codecs/lossless/luckynight.flac
         let mut file = File::open("assets/LLaudio/luckynight.flac").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 = FLACDemuxer::new(&mut br);
         let mut sm = StreamManager::new();
         let mut si = SeekIndex::new();
index 88589a65d06f1a9178846c1604005fecc1326059..824ada64609232f1638d0eac67da5b0275ac6385 100644 (file)
@@ -2,7 +2,7 @@ use nihav_core::frame::*;
 use nihav_core::demuxers::*;
 
 struct TTADemuxer<'a> {
-    src:            &'a mut ByteReader<'a>,
+    src:            &'a mut dyn ByteIO,
     cur_frame:      u32,
     nframes:        u32,
     nsamples:       u32,
@@ -13,7 +13,7 @@ struct TTADemuxer<'a> {
 }
 
 impl<'a> TTADemuxer<'a> {
-    fn new(io: &'a mut ByteReader<'a>) -> Self {
+    fn new(io: &'a mut dyn ByteIO) -> Self {
         Self {
             src:            io,
             cur_frame:      0,
@@ -110,7 +110,7 @@ impl<'a> NAOptionHandler for TTADemuxer<'a> {
 pub struct TTADemuxerCreator { }
 
 impl DemuxerCreator for TTADemuxerCreator {
-    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(TTADemuxer::new(br))
     }
     fn get_name(&self) -> &'static str { "tta" }
@@ -125,8 +125,7 @@ mod test {
     fn test_tta_demux() {
         // sample: https://samples.mplayerhq.hu/A-codecs/lossless/luckynight.tta
         let mut file = File::open("assets/LLaudio/luckynight.tta").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 = TTADemuxer::new(&mut br);
         let mut sm = StreamManager::new();
         let mut si = SeekIndex::new();
index 6c5f8dd392b51d155abebc000ac519dc11439e36..6b95dcce2f9467f280a5dcb31f8e0bb4d7dfb90b 100644 (file)
@@ -38,8 +38,7 @@ const WV_HEADER_SIZE: usize = 32;
 impl WVHeader {
     #[allow(clippy::field_reassign_with_default)]
     fn parse(src: &[u8]) -> DemuxerResult<Self> {
-        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_tag()?;
         validate!(&tag == b"wvpk");
         let mut hdr = Self::default();
@@ -94,7 +93,7 @@ struct FrameSeekInfo {
 }
 
 struct WavPackDemuxer<'a> {
-    src:            &'a mut ByteReader<'a>,
+    src:            &'a mut dyn ByteIO,
     samplepos:      u64,
     nsamples:       u64,
     first_blocks:   Option<(WVHeader, Vec<u8>)>,
@@ -103,7 +102,7 @@ struct WavPackDemuxer<'a> {
 }
 
 impl<'a> WavPackDemuxer<'a> {
-    fn new(io: &'a mut ByteReader<'a>) -> Self {
+    fn new(io: &'a mut dyn ByteIO) -> Self {
         Self {
             src:            io,
             samplepos:      0,
@@ -265,7 +264,7 @@ impl<'a> NAOptionHandler for WavPackDemuxer<'a> {
 pub struct WavPackDemuxerCreator { }
 
 impl DemuxerCreator for WavPackDemuxerCreator {
-    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(WavPackDemuxer::new(br))
     }
     fn get_name(&self) -> &'static str { "wavpack" }
@@ -280,8 +279,7 @@ mod test {
     fn test_wavpack_demux() {
         // sample from the official WavPack test samples set
         let mut file = File::open("assets/LLaudio/wv/false_stereo.wv").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 = WavPackDemuxer::new(&mut br);
         let mut sm = StreamManager::new();
         let mut si = SeekIndex::new();
index c4f1478d090a59efbe2999f503ccd361ea034f03..0821e93e0f61d76690ec4ba93621492b06155351 100644 (file)
@@ -1,7 +1,7 @@
 use nihav_core::muxers::*;
 
 struct FLACMuxer<'a> {
-    bw:             &'a mut ByteWriter<'a>,
+    bw:             &'a mut dyn ByteIO,
     maxpkt:         usize,
     minpkt:         usize,
     duration:       u64,
@@ -11,7 +11,7 @@ struct FLACMuxer<'a> {
 }
 
 impl<'a> FLACMuxer<'a> {
-    fn new(bw: &'a mut ByteWriter<'a>) -> Self {
+    fn new(bw: &'a mut dyn ByteIO) -> Self {
         Self {
             bw,
             maxpkt: usize::MAX, minpkt: 0,
@@ -89,7 +89,7 @@ impl<'a> NAOptionHandler for FLACMuxer<'a> {
 pub struct FLACMuxerCreator {}
 
 impl MuxerCreator for FLACMuxerCreator {
-    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(FLACMuxer::new(bw))
     }
     fn get_name(&self) -> &'static str { "flac" }