]> git.nihav.org Git - nihav-encoder.git/commitdiff
hopefully fix audio parameters
authorKostya Shishkov <kostya.shishkov@gmail.com>
Fri, 21 Mar 2025 12:59:13 +0000 (13:59 +0100)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Fri, 21 Mar 2025 12:59:13 +0000 (13:59 +0100)
src/transcoder.rs

index 3e78e1d72530f53abeb54ffea840fcf372afe109..b11ba12d4e8b3406218e7cb32d74f759a27bd344 100644 (file)
@@ -946,7 +946,7 @@ println!("encoder {} is not supported by output (expected {})", istr.id, istr.ge
             let enc_stream = ret.unwrap();
 //todo check for params mismatch
             let real_fmt = enc_stream.get_info().get_properties();
-            let enc_ctx: Box<dyn EncoderInterface> = match (&oopts.enc_params.format, &real_fmt) {
+            let enc_ctx: Box<dyn EncoderInterface> = match (&oopts.enc_params.format, &ret_eparams.format) {
                     (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 {
@@ -988,8 +988,14 @@ println!("encoder {} is not supported by output (expected {})", istr.id, istr.ge
                             })
                         }
                     },
-                    (NACodecTypeInfo::Audio(sainfo), NACodecTypeInfo::Audio(dainfo)) => {
-                        if sainfo == dainfo {
+                    (NACodecTypeInfo::Audio(sainfo), NACodecTypeInfo::Audio(ref_dainfo)) => {
+                        let mut dainfo = *ref_dainfo;
+                        if &oopts.enc_name == "pcm" {
+                            if let NACodecTypeInfo::Audio(oformat) = real_fmt {
+                                dainfo.block_len = oformat.block_len;
+                            }
+                        }
+                        if sainfo == &dainfo {
                             Box::new(AudioEncodeContext { encoder, cvt: None })
                         } else {
                             let dchmap = match dainfo.channels {
@@ -1000,8 +1006,9 @@ println!("can't generate default channel map for {} channels", dainfo.channels);
                                         return RegisterResult::Failed;
                                     },
                                 };
+
 //todo channelmap
-                            let acvt = AudioConverter::new(sainfo, dainfo, dchmap);
+                            let acvt = AudioConverter::new(sainfo, &dainfo, dchmap);
                             Box::new(AudioEncodeContext { encoder, cvt: Some(acvt) })
                         }
                     },