]> git.nihav.org Git - nihav-encoder.git/commitdiff
error out on too large constant framerate
authorKostya Shishkov <kostya.shishkov@gmail.com>
Wed, 19 Mar 2025 17:35:18 +0000 (18:35 +0100)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Wed, 19 Mar 2025 17:35:18 +0000 (18:35 +0100)
src/transcoder.rs

index 78e6296c93b00f787aff749335ab5bb1f1a84604..ad2a096f4a75f5085f1db7d9267581e2584b401f 100644 (file)
@@ -796,6 +796,10 @@ impl Transcoder {
                 let enc_ctx: Box<dyn EncoderInterface> = match (&iformat, &real_fmt) {
                         (NACodecTypeInfo::Video(svinfo), NACodecTypeInfo::Video(dvinfo)) => {
                             let force_cfr = self.fixed_rate || (ret_eparams.flags & ENC_MODE_CFR) != 0;
+                            if force_cfr && enc_stream.tb_den / enc_stream.tb_num > 120 {
+                                println!("Timebase {}/{} is too much for constant framerate!", enc_stream.tb_num, enc_stream.tb_den);
+                                return RegisterResult::Failed;
+                            }
                             if svinfo == dvinfo && !forced_out {
                                 Box::new(VideoEncodeContext {
                                     encoder,
@@ -895,6 +899,10 @@ println!("encoder {} is not supported by output (expected {})", istr.id, istr.ge
             let enc_ctx: Box<dyn EncoderInterface> = match (&oopts.enc_params.format, &real_fmt) {
                     (NACodecTypeInfo::Video(svinfo), NACodecTypeInfo::Video(dvinfo)) => {
                         let force_cfr = self.fixed_rate || (ret_eparams.flags & ENC_MODE_CFR) != 0;
+                        if force_cfr && enc_stream.tb_den / enc_stream.tb_num > 120 {
+                            println!("Timebase {}/{} is too much for constant framerate!", enc_stream.tb_num, enc_stream.tb_den);
+                            return RegisterResult::Failed;
+                        }
                         if svinfo == dvinfo {
                             Box::new(VideoEncodeContext {
                                 encoder,