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" => {
"--ignerr" => {
ignerr = true;
},
+ "--skip-unknown" => {
+ skip_unknown = true;
+ },
"-f" => {
next_arg!(args, arg_idx);
transcoder.input_fmt[0] = Some(args[arg_idx].clone());
}
}
+ 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" {
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::<u32>();