]> git.nihav.org Git - nihav.git/commitdiff
mov: when inventing keyframes intra-only mode should take priority master
authorKostya Shishkov <kostya.shishkov@gmail.com>
Tue, 14 Apr 2026 19:10:47 +0000 (21:10 +0200)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Tue, 14 Apr 2026 19:10:47 +0000 (21:10 +0200)
nihav-commonfmt/src/demuxers/mov/pktread.rs

index 2185664327b5a122065932bc9be489a25ef704dc..5ec988951be0ffa28300780a63525a181e2f136b 100644 (file)
@@ -181,17 +181,17 @@ impl QTPacketDemuxer {
     }
     pub fn invent_keyframes(&mut self, intraonly: bool) {
         self.keyframes.reserve(self.time_to_sample.len());
     }
     pub fn invent_keyframes(&mut self, intraonly: bool) {
         self.keyframes.reserve(self.time_to_sample.len());
-        if self.time_to_sample.len() > 2 {
+        if intraonly && !self.chunk_sizes.is_empty() {
+            for samp in 0..self.chunk_sizes.len() {
+                self.keyframes.push((samp + 1) as u32);
+            }
+        } else if self.time_to_sample.len() > 2 {
             let mut abs_csamp = 1u64;
             for &(count, _scount) in self.time_to_sample.iter() {
                 let count = u64::from(count);
                 self.keyframes.push(abs_csamp as u32);
                 abs_csamp += count;
             }
             let mut abs_csamp = 1u64;
             for &(count, _scount) in self.time_to_sample.iter() {
                 let count = u64::from(count);
                 self.keyframes.push(abs_csamp as u32);
                 abs_csamp += count;
             }
-        } else if intraonly && !self.chunk_sizes.is_empty() {
-            for samp in 0..self.chunk_sizes.len() {
-                self.keyframes.push((samp + 1) as u32);
-            }
         } else {
             let max_nsamps = self.sample_map.iter().fold(0u32, |mns, &(_sno, ns)| mns.max(ns));
             if max_nsamps >= 3 {
         } else {
             let max_nsamps = self.sample_map.iter().fold(0u32, |mns, &(_sno, ns)| mns.max(ns));
             if max_nsamps >= 3 {