From: Kostya Shishkov Date: Fri, 6 Feb 2026 17:55:06 +0000 (+0100) Subject: use integer array reading functions where applicable X-Git-Url: https://git.nihav.org/?a=commitdiff_plain;h=5aab70379b60aba3da4cbc643f99176093097dc3;p=nihav.git use integer array reading functions where applicable --- diff --git a/nihav-commonfmt/src/demuxers/mov.rs b/nihav-commonfmt/src/demuxers/mov.rs index 15a1432..0d7799e 100644 --- a/nihav-commonfmt/src/demuxers/mov.rs +++ b/nihav-commonfmt/src/demuxers/mov.rs @@ -928,24 +928,8 @@ fn read_stsz(track: &mut Track, br: &mut dyn ByteIO, size: u64) -> DemuxerResult } else { let entries = br.read_u32be()? as usize; validate!((entries * 4 + 12) as u64 == size); - if entries < 1024 { - track.chunk_sizes = Vec::with_capacity(entries); - for _ in 0..entries { - let sample_size = br.read_u32be()?; - track.chunk_sizes.push(sample_size); - } - } else { - // reading whole array at once and converting it later is much faster - track.chunk_sizes = vec![0; entries]; - unsafe { - let ptr = track.chunk_sizes.as_mut_ptr() as *mut u8; - let dbuf = std::slice::from_raw_parts_mut(ptr, entries * 4); - br.read_buf(dbuf)?; - } - for el in track.chunk_sizes.iter_mut() { - *el = u32::from_be(*el); - } - } + track.chunk_sizes = vec![0; entries]; + br.read_u32be_arr(&mut track.chunk_sizes)?; Ok(size) } } diff --git a/nihav-duck/src/codecs/truemotion2x.rs b/nihav-duck/src/codecs/truemotion2x.rs index a8d84e2..b145080 100644 --- a/nihav-duck/src/codecs/truemotion2x.rs +++ b/nihav-duck/src/codecs/truemotion2x.rs @@ -236,9 +236,7 @@ impl TM2XDecoder { validate!(idx < self.deltas.tabs.len()); let len = br.read_byte()? as usize; validate!(((len * 2) as i64) == br.left()); - for i in 0..len { - self.deltas.tabs[idx][i] = br.read_u16be()? as i16; - } + br.read_i16be_arr(&mut self.deltas.tabs[idx][..len])?; Ok(()) } diff --git a/nihav-rad/src/demuxers/smacker.rs b/nihav-rad/src/demuxers/smacker.rs index 2c3ea33..9548907 100644 --- a/nihav-rad/src/demuxers/smacker.rs +++ b/nihav-rad/src/demuxers/smacker.rs @@ -142,12 +142,8 @@ impl<'a> DemuxCore<'a> for SmackerVideoDemuxer<'a> { self.frame_sizes.resize(self.frames, 0); self.frame_flags.resize(self.frames, 0); - for i in 0..self.frames { - self.frame_sizes[i] = src.read_u32le()?; - } - for i in 0..self.frames { - self.frame_flags[i] = src.read_byte()?; - } + src.read_u32le_arr(&mut self.frame_sizes)?; + src.read_buf(&mut self.frame_flags)?; src.read_buf(&mut treedata[24..])?;