From: Kostya Shishkov Date: Mon, 6 Apr 2026 13:59:16 +0000 (+0200) Subject: movmuxer: write more compact stsc atom representation X-Git-Url: https://git.nihav.org/?a=commitdiff_plain;h=17f9a397b1842bc2d9285d3bd47c497f382ee627;p=nihav.git movmuxer: write more compact stsc atom representation --- diff --git a/nihav-commonfmt/src/muxers/mov/mod.rs b/nihav-commonfmt/src/muxers/mov/mod.rs index 748d36f..aaf5203 100644 --- a/nihav-commonfmt/src/muxers/mov/mod.rs +++ b/nihav-commonfmt/src/muxers/mov/mod.rs @@ -152,11 +152,23 @@ impl ChunkAccount { bw.write_u32be(1)?; // samples per chunk bw.write_u32be(1)?; // sample description ID } else { - bw.write_u32be(self.cmap.len() as u32)?; + let mut len = 0u32; + let mut prev = 0; + for &nsamps in self.cmap.iter() { + if nsamps != prev { + prev = nsamps; + len += 1; + } + } + bw.write_u32be(len)?; + let mut prev = 0; for (i, &entry) in self.cmap.iter().enumerate() { - bw.write_u32be(i as u32 + 1)?; - bw.write_u32be(entry)?; // samples per chunk - bw.write_u32be(1)?; // sample description ID + if entry != prev { + bw.write_u32be(i as u32 + 1)?; + bw.write_u32be(entry)?; // samples per chunk + bw.write_u32be(1)?; // sample description ID + prev = entry; + } } } Ok(())