]> git.nihav.org Git - nihav.git/commitdiff
use integer array reading functions where applicable
authorKostya Shishkov <kostya.shishkov@gmail.com>
Fri, 6 Feb 2026 17:55:06 +0000 (18:55 +0100)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Fri, 6 Feb 2026 17:55:06 +0000 (18:55 +0100)
nihav-commonfmt/src/demuxers/mov.rs
nihav-duck/src/codecs/truemotion2x.rs
nihav-rad/src/demuxers/smacker.rs

index 15a14326f7885dcfe497067512ada9bfa4924bc8..0d7799e4268334bdb83237a6f1bfed89a9df9940 100644 (file)
@@ -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)
     }
 }
index a8d84e23fc78564a3215930b3410f1b40d31b63f..b14508090ce6f3d6450867ee447f78e01366ab78 100644 (file)
@@ -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(())
     }
index 2c3ea3386c68b3ed704b05f6c5fa1c6989896d61..9548907b68900ced8974498d24ae26b31b615531 100644 (file)
@@ -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..])?;