]> git.nihav.org Git - nihav-encoder.git/commitdiff
do not try to fill too large gaps in CFR mode
authorKostya Shishkov <kostya.shishkov@gmail.com>
Thu, 20 Mar 2025 17:09:14 +0000 (18:09 +0100)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Thu, 20 Mar 2025 17:09:14 +0000 (18:09 +0100)
src/transcoder.rs

index cee575f84a2f268592062a8a83e0b7dbc9c7f79a..786aedfd2dd75cc245660cfca045dc433596e367 100644 (file)
@@ -243,6 +243,10 @@ impl EncoderInterface for VideoEncodeContext {
                 let mut cur_lts = *last_ts;
                 let mut next_lts = *last_ts + u64::from(self.tb_num);
                 let mut had_frame = false;
+                if cur_ts > cur_lts && (cur_ts - cur_lts) / u64::from(self.tb_den) > 16 {
+                    println!("Gap over 16 seconds between consequent frames, that's too much");
+                    return Err(EncoderError::AllocError);
+                }
                 while cur_ts >= cur_lts {
                     cfrm.ts.pts = Some(cur_lts);
                     self.encoder.encode(&cfrm)?;