From d690819a7f4dd98784745d2fb5ee1b26b1c87abc Mon Sep 17 00:00:00 2001 From: Kostya Shishkov Date: Thu, 12 Feb 2026 07:38:08 +0100 Subject: [PATCH] add an option to prune unsupported input streams --- src/main.rs | 8 ++++++++ src/transcoder.rs | 16 ++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/main.rs b/src/main.rs index 1f5846c..07ad781 100644 --- a/src/main.rs +++ b/src/main.rs @@ -198,6 +198,7 @@ fn main() { let mut profile_name = "".to_string(); let mut custom_profile = false; let mut ignerr = false; + let mut skip_unknown = false; while arg_idx < args.len() { match args[arg_idx].as_str() { "--list-decoders" => { @@ -368,6 +369,9 @@ fn main() { "--ignerr" => { ignerr = true; }, + "--skip-unknown" => { + skip_unknown = true; + }, "-f" => { next_arg!(args, arg_idx); transcoder.input_fmt[0] = Some(args[arg_idx].clone()); @@ -527,6 +531,10 @@ fn main() { } } + if skip_unknown { + transcoder.prune_input_streams(); + } + let output_fmt = if let Some(ref fmtname) = transcoder.output_fmt { fmtname } else if transcoder.output_name.as_str() == "/dev/null" { diff --git a/src/transcoder.rs b/src/transcoder.rs index bef9f6c..a8e0c9b 100644 --- a/src/transcoder.rs +++ b/src/transcoder.rs @@ -394,6 +394,22 @@ pub struct Transcoder { impl Transcoder { pub fn new() -> Self { Self::default() } + pub fn prune_input_streams(&mut self) { + for (dec_no, dec) in self.decoders.iter().enumerate() { + if dec.is_some() { + continue; + } + let streamno = dec_no as u32; + let sidx = if let Some(idx) = self.istr_opts.iter().position(|el| el.id == streamno) { + idx + } else { + self.istr_opts.push(InputStreamOptions {id: streamno, drop: false, dec_opts: Vec::new() }); + self.istr_opts.len() - 1 + }; + let istr = &mut self.istr_opts[sidx]; + istr.drop = true; + } + } pub fn parse_istream_options(&mut self, opt0: &str, opt1: &str) -> bool { let (_, strno) = opt0.split_at(9); let ret = strno.parse::(); -- 2.39.5