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,
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,