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 {
})
}
},
- (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 {
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) })
}
},