pass null frames to the encoder without attempting to convert them
authorKostya Shishkov <kostya.shishkov@gmail.com>
Fri, 10 Mar 2023 17:23:23 +0000 (18:23 +0100)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Fri, 10 Mar 2023 17:23:23 +0000 (18:23 +0100)
src/main.rs

index 191a8a6133c2d24175464ebc88995a6ba75ab317..5e00cf08a8412bd9cac2dfa37c64602011bb5184 100644 (file)
@@ -706,7 +706,10 @@ println!("can't generate default channel map for {} channels", dainfo.channels);
 
 fn encode_frame(dst_id: u32, encoder: &mut Box<dyn NAEncoder>, cvt: &mut OutputConvert, frm: NAFrameRef, scale_opts: &[(String, String)]) -> bool {
     let buf = frm.get_buffer();
-    let cbuf = match cvt {
+    let cbuf = if let NABufferType::None = buf {
+        buf
+    } else {
+        match cvt {
             OutputConvert::None => buf,
             OutputConvert::Video(ref mut scaler, ref mut dbuf) => {
                 let cur_ifmt = get_scale_fmt_from_pic(&buf);
@@ -735,7 +738,8 @@ fn encode_frame(dst_id: u32, encoder: &mut Box<dyn NAEncoder>, cvt: &mut OutputC
                 }
                 ret.unwrap()
             },
-        };
+        }
+    };
     let cfrm = NAFrame::new(frm.get_time_information(), frm.frame_type, frm.key, frm.get_info(), cbuf);
     encoder.encode(&cfrm).unwrap();
     true