X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=src%2Fmain.rs;h=8261d6abca0d08768460fb1b7bd3caf5ef52918d;hb=b267d37e527242aa3507dea50c4065944312db09;hp=9e2bd88efd4830abbe1ca487a6272bc2de2f4605;hpb=a7b5f0087c3e7c631902f911dc5c6f6190f3887e;p=nihav-encoder.git diff --git a/src/main.rs b/src/main.rs index 9e2bd88..8261d6a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -13,9 +13,13 @@ use nihav_core::muxers::*; use nihav_core::scale::*; use nihav_core::soundcvt::*; use nihav_registry::detect; +use nihav_registry::register; use nihav_allstuff::*; use std::env; +mod null; +use crate::null::*; + fn print_options(name: &str, options: &[NAOptionDefinition]) { if options.is_empty() { println!("No custom options."); @@ -558,14 +562,59 @@ fn main() { let mut mux_reg = RegisteredMuxers::new(); nihav_register_all_muxers(&mut mux_reg); + mux_reg.add_muxer(NULL_MUXER); let mut enc_reg = RegisteredEncoders::new(); nihav_register_all_encoders(&mut enc_reg); + enc_reg.add_encoder(NULL_ENCODER); let mut transcoder = Transcoder::new(); let mut arg_idx = 1; + let mut printed_info = false; while arg_idx < args.len() { match args[arg_idx].as_str() { + "--list-decoders" => { + if dec_reg.iter().len() > 0 { + println!("Registered decoders:"); + for dec in dec_reg.iter() { + let cdesc = register::get_codec_description(dec.name); + let full_name = if let Some(cd) = cdesc { cd.get_full_name() } else { "???" }; + println!(" {} ({})", dec.name, full_name); + } + } else { + println!("No registered decoders."); + } + printed_info = true; + }, + "--list-encoders" => { + if enc_reg.iter().len() > 0 { + println!("Registered encoders:"); + for enc in enc_reg.iter() { + let cdesc = register::get_codec_description(enc.name); + let full_name = if let Some(cd) = cdesc { cd.get_full_name() } else { "???" }; + println!(" {} ({})", enc.name, full_name); + } + } else { + println!("No registered encoders."); + } + printed_info = true; + }, + "--list-demuxers" => { + print!("Registered demuxers:"); + for dmx in dmx_reg.iter() { + print!(" {}", dmx.get_name()); + } + println!(); + printed_info = true; + }, + "--list-muxers" => { + print!("Registered muxers:"); + for mux in mux_reg.iter() { + print!(" {}", mux.get_name()); + } + println!(); + printed_info = true; + }, "--query-decoder-options" => { next_arg!(args, arg_idx); let cname = args[arg_idx].as_str(); @@ -576,6 +625,7 @@ fn main() { } else { println!("codec {} is not found", cname); } + printed_info = true; }, "--query-demuxer-options" => { next_arg!(args, arg_idx); @@ -589,6 +639,7 @@ fn main() { } else { println!("demuxer {} is not found", dname); } + printed_info = true; }, "--query-encoder-options" => { next_arg!(args, arg_idx); @@ -600,6 +651,7 @@ fn main() { } else { println!("codec {} is not found", cname); } + printed_info = true; }, "--query-muxer-options" => { next_arg!(args, arg_idx); @@ -614,6 +666,7 @@ fn main() { } else { println!("muxer {} is not found", name); } + printed_info = true; }, "--input" => { next_arg!(args, arg_idx); @@ -676,6 +729,10 @@ fn main() { arg_idx += 1; } + if printed_info { + return; + } + if transcoder.input_name.len() == 0 { println!("no input name provided"); return;