From 17f9a397b1842bc2d9285d3bd47c497f382ee627 Mon Sep 17 00:00:00 2001 From: Kostya Shishkov Date: Mon, 6 Apr 2026 15:59:16 +0200 Subject: [PATCH] movmuxer: write more compact stsc atom representation --- nihav-commonfmt/src/muxers/mov/mod.rs | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) 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(()) -- 2.39.5