adapt to freshly-introduced encoder capabilities
authorKostya Shishkov <kostya.shishkov@gmail.com>
Tue, 14 Mar 2023 10:12:43 +0000 (11:12 +0100)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Tue, 14 Mar 2023 10:12:43 +0000 (11:12 +0100)
src/main.rs
src/null.rs

index 41a4a927b9c540a28c20f006fac5bae0ae3547d0..409c677a5c4f2e81179e1ccd9e4480df7746e4c2 100644 (file)
@@ -707,6 +707,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 = if let NABufferType::None = buf {
+        if (encoder.get_capabilities() & ENC_CAPS_SKIPFRAME) == 0 {
+            println!("encoder does not support skip frames, skipping");
+            return true;
+        }
         buf
     } else {
         match cvt {
index 3e9b813244f6b33d10ee00e9664ab566ff62d359..eece63b3650dd8e4080163710c6f5add3792df64 100644 (file)
@@ -16,6 +16,7 @@ impl NAEncoder for NullEncoder {
     fn negotiate_format(&self, encinfo: &EncodeParameters) -> EncoderResult<EncodeParameters> {
         Ok(*encinfo)
     }
+    fn get_capabilities(&self) -> u64 { 0 }
     fn init(&mut self, stream_id: u32, encinfo: EncodeParameters) -> EncoderResult<NAStreamRef> {
         let stype = match encinfo.format {
                 NACodecTypeInfo::Audio(_) => StreamType::Audio,