introduce a way for encoder to manifest its capabilities
[nihav.git] / nihav-ms / src / codecs / imaadpcmenc.rs
index a64f58f0dbac96282d6208516bcf3f53837552de..a113d5d3e0e47be3be0a6364c190d6613df68ede 100644 (file)
@@ -189,9 +189,9 @@ impl NAEncoder for IMAADPCMEncoder {
     fn negotiate_format(&self, encinfo: &EncodeParameters) -> EncoderResult<EncodeParameters> {
         match encinfo.format {
             NACodecTypeInfo::None => {
-                let mut ofmt = EncodeParameters::default();
-                ofmt.format = NACodecTypeInfo::Audio(NAAudioInfo::new(0, 1, SND_S16_FORMAT, DEFAULT_BLOCK_LEN));
-                Ok(ofmt)
+                Ok(EncodeParameters {
+                    format: NACodecTypeInfo::Audio(NAAudioInfo::new(0, 1, SND_S16_FORMAT, DEFAULT_BLOCK_LEN)),
+                    ..Default::default() })
             },
             NACodecTypeInfo::Video(_) => Err(EncoderError::FormatError),
             NACodecTypeInfo::Audio(ainfo) => {
@@ -215,6 +215,7 @@ impl NAEncoder for IMAADPCMEncoder {
             }
         }
     }
+    fn get_capabilities(&self) -> u64 { ENC_CAPS_CBR }
     fn init(&mut self, stream_id: u32, encinfo: EncodeParameters) -> EncoderResult<NAStreamRef> {
         match encinfo.format {
             NACodecTypeInfo::None => Err(EncoderError::FormatError),
@@ -341,6 +342,7 @@ mod test {
         let mut enc_reg = RegisteredEncoders::new();
         ms_register_all_encoders(&mut enc_reg);
 
+        // sample: https://samples.mplayerhq.hu/V-codecs/VP4/ot171_vp40.avi
         let dec_config = DecoderTestParams {
                 demuxer:        "avi",
                 in_name:        "assets/Duck/ot171_vp40.avi",
@@ -371,7 +373,7 @@ mod test {
         let enc_options = &[
                 NAOption{name: "trellis", value: NAValue::Bool(trellis)},
             ];
-        test_encoding_to_file(&dec_config, &enc_config, enc_params, enc_options);
+//        test_encoding_to_file(&dec_config, &enc_config, enc_params, enc_options);
 
         test_encoding_md5(&dec_config, &enc_config, enc_params, enc_options,
                           hash);