]> git.nihav.org Git - nihav-encoder.git/commitdiff
introduce silent option setting and use for encoder post-init options setting
authorKostya Shishkov <kostya.shishkov@gmail.com>
Thu, 23 Apr 2026 19:09:31 +0000 (21:09 +0200)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Thu, 23 Apr 2026 19:09:31 +0000 (21:09 +0200)
Otherwise it complains about invalid or unknown options twice.

src/main.rs
src/transcoder.rs

index b476cdfb3c60bcf246b0d4196f05fc0c4b6a2f19..d806f8a163d1473a97195cba7ac0679480dd5f0d 100644 (file)
@@ -45,6 +45,27 @@ macro_rules! parse_and_apply_options {
             }
         }
         $obj.set_options(opts.as_slice());
+    };
+    (ignerr; $obj: expr, $in_opts: expr, $name: expr) => {
+        let mut opts = Vec::with_capacity($in_opts.len());
+        let opt_def = $obj.get_supported_options();
+        for opt in $in_opts.iter() {
+            for opt_def in opt_def.iter() {
+                let mut matches = opt.name == opt_def.name;
+                if !matches && opt.name.starts_with("no") {
+                    let (_, name) = opt.name.split_at(2);
+                    matches = name == opt_def.name;
+                }
+                if matches {
+                    let arg = if let Some(ref strval) = opt.value { Some(strval) } else { None };
+                    let ret = opt_def.parse(&opt.name, arg);
+                    if let Ok((val, _)) = ret {
+                        opts.push(val);
+                    }
+                }
+            }
+        }
+        $obj.set_options(opts.as_slice());
     }
 }
 
index c7c9957bd1570519fd904b2501a0e1f5bb6b2f22..7208334ff639080de52d081dd038fab2d4af1e29 100644 (file)
@@ -1006,7 +1006,7 @@ impl Transcoder {
             return None;
         }
 
-        parse_and_apply_options!(encoder, &oopts.enc_opts, name);
+        parse_and_apply_options!(ignerr; encoder, &oopts.enc_opts, name);
 
         let enc_stream = ret.unwrap();
         let real_fmt = enc_stream.get_info().get_properties();