From f50cfb468e84012329b2a5f952eb082c832650ac Mon Sep 17 00:00:00 2001 From: Kostya Shishkov Date: Sun, 17 Aug 2025 19:26:05 +0200 Subject: [PATCH] nihav_llaudio: switch to ByteIO --- nihav-llaudio/src/codecs/ape.rs | 3 +-- nihav-llaudio/src/codecs/flac.rs | 6 ++---- nihav-llaudio/src/codecs/tta.rs | 3 +-- nihav-llaudio/src/codecs/wavpack.rs | 11 ++++------- nihav-llaudio/src/demuxers/ape.rs | 9 ++++----- nihav-llaudio/src/demuxers/flac.rs | 9 ++++----- nihav-llaudio/src/demuxers/flacraw.rs | 11 +++++------ nihav-llaudio/src/demuxers/tta.rs | 9 ++++----- nihav-llaudio/src/demuxers/wavpack.rs | 12 +++++------- nihav-llaudio/src/muxers/flac.rs | 6 +++--- 10 files changed, 33 insertions(+), 46 deletions(-) diff --git a/nihav-llaudio/src/codecs/ape.rs b/nihav-llaudio/src/codecs/ape.rs index 7b02c94..fd320de 100644 --- a/nihav-llaudio/src/codecs/ape.rs +++ b/nihav-llaudio/src/codecs/ape.rs @@ -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()?; diff --git a/nihav-llaudio/src/codecs/flac.rs b/nihav-llaudio/src/codecs/flac.rs index c1142b1..63fa288 100644 --- a/nihav-llaudio/src/codecs/flac.rs +++ b/nihav-llaudio/src/codecs/flac.rs @@ -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(); diff --git a/nihav-llaudio/src/codecs/tta.rs b/nihav-llaudio/src/codecs/tta.rs index 2ef90a5..1bfee62 100644 --- a/nihav-llaudio/src/codecs/tta.rs +++ b/nihav-llaudio/src/codecs/tta.rs @@ -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()?; diff --git a/nihav-llaudio/src/codecs/wavpack.rs b/nihav-llaudio/src/codecs/wavpack.rs index d8f2302..963d5e7 100644 --- a/nihav-llaudio/src/codecs/wavpack.rs +++ b/nihav-llaudio/src/codecs/wavpack.rs @@ -40,8 +40,7 @@ const WV_HEADER_SIZE: usize = 32; impl WVHeader { #[allow(clippy::field_reassign_with_default)] fn parse(src: &[u8]) -> DecoderResult { - 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 { diff --git a/nihav-llaudio/src/demuxers/ape.rs b/nihav-llaudio/src/demuxers/ape.rs index 7671737..8cf01d8 100644 --- a/nihav-llaudio/src/demuxers/ape.rs +++ b/nihav-llaudio/src/demuxers/ape.rs @@ -9,7 +9,7 @@ struct Frame { } struct APEDemuxer<'a> { - src: &'a mut ByteReader<'a>, + src: &'a mut dyn ByteIO, cur_frame: usize, frames: Vec, 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 + 'a> { + fn new_demuxer<'a>(&self, br: &'a mut dyn ByteIO) -> Box + '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(); diff --git a/nihav-llaudio/src/demuxers/flac.rs b/nihav-llaudio/src/demuxers/flac.rs index bb685b2..a9526b7 100644 --- a/nihav-llaudio/src/demuxers/flac.rs +++ b/nihav-llaudio/src/demuxers/flac.rs @@ -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 + 'a> { + fn new_demuxer<'a>(&self, br: &'a mut dyn ByteIO) -> Box + '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(); diff --git a/nihav-llaudio/src/demuxers/flacraw.rs b/nihav-llaudio/src/demuxers/flacraw.rs index dcdd5a5..072ed4c 100644 --- a/nihav-llaudio/src/demuxers/flacraw.rs +++ b/nihav-llaudio/src/demuxers/flacraw.rs @@ -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 + 'a> { + fn new_demuxer<'a>(&self, br: &'a mut dyn ByteIO) -> Box + '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(); diff --git a/nihav-llaudio/src/demuxers/tta.rs b/nihav-llaudio/src/demuxers/tta.rs index 88589a6..824ada6 100644 --- a/nihav-llaudio/src/demuxers/tta.rs +++ b/nihav-llaudio/src/demuxers/tta.rs @@ -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 + 'a> { + fn new_demuxer<'a>(&self, br: &'a mut dyn ByteIO) -> Box + '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(); diff --git a/nihav-llaudio/src/demuxers/wavpack.rs b/nihav-llaudio/src/demuxers/wavpack.rs index 6c5f8dd..6b95dcc 100644 --- a/nihav-llaudio/src/demuxers/wavpack.rs +++ b/nihav-llaudio/src/demuxers/wavpack.rs @@ -38,8 +38,7 @@ const WV_HEADER_SIZE: usize = 32; impl WVHeader { #[allow(clippy::field_reassign_with_default)] fn parse(src: &[u8]) -> DemuxerResult { - 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)>, @@ -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 + 'a> { + fn new_demuxer<'a>(&self, br: &'a mut dyn ByteIO) -> Box + '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(); diff --git a/nihav-llaudio/src/muxers/flac.rs b/nihav-llaudio/src/muxers/flac.rs index c4f1478..0821e93 100644 --- a/nihav-llaudio/src/muxers/flac.rs +++ b/nihav-llaudio/src/muxers/flac.rs @@ -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 + 'a> { + fn new_muxer<'a>(&self, bw: &'a mut dyn ByteIO) -> Box + 'a> { Box::new(FLACMuxer::new(bw)) } fn get_name(&self) -> &'static str { "flac" } -- 2.39.5