From: Kostya Shishkov Date: Thu, 23 Apr 2026 19:09:31 +0000 (+0200) Subject: introduce silent option setting and use for encoder post-init options setting X-Git-Url: https://git.nihav.org/?a=commitdiff_plain;h=283a7dfe2e9da01031dfe0511161697d56d017e6;p=nihav-encoder.git introduce silent option setting and use for encoder post-init options setting Otherwise it complains about invalid or unknown options twice. --- diff --git a/src/main.rs b/src/main.rs index b476cdf..d806f8a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -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()); } } diff --git a/src/transcoder.rs b/src/transcoder.rs index c7c9957..7208334 100644 --- a/src/transcoder.rs +++ b/src/transcoder.rs @@ -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();