add null encoder and muxer
[nihav-encoder.git] / src / main.rs
index 08aab6b35a3e99898ba8ff0eba9097b3196d50b9..55630fcdcc4161c96867f5210a70037da98c02ad 100644 (file)
@@ -16,6 +16,9 @@ use nihav_registry::detect;
 use nihav_allstuff::*;
 use std::env;
 
+mod null;
+use null::*;
+
 fn print_options(name: &str, options: &[NAOptionDefinition]) {
     if options.is_empty() {
         println!("No custom options.");
@@ -350,7 +353,8 @@ impl Transcoder {
 
         if let Some(str_idx) = self.ostr_opts.iter().position(|str| str.id == out_id) {
             let oopts = &mut self.ostr_opts[str_idx];
-            if cname == "copy" && istr.get_info().get_name() == cname {
+            if oopts.enc_name.as_str() == "copy" && (cname == "any" || istr.get_info().get_name() == cname) {
+                out_sm.add_stream_ref(istr.clone());
                 self.encoders.push(OutputMode::Copy(out_id));
             } else if cname == "any" || oopts.enc_name.as_str() == cname {
                 let enc_create = enc_reg.find_encoder(oopts.enc_name.as_str());
@@ -430,6 +434,7 @@ println!("encoder {} is not supported by output (expected {})", istr.id, istr.ge
             }
         } else {
             if cname == "any" || istr.get_info().get_name() == cname {
+                out_sm.add_stream_ref(istr.clone());
                 self.encoders.push(OutputMode::Copy(out_id));
             } else {
 println!("stream {} ({}) can't be handled", istr.id, istr.get_info().get_name());
@@ -556,8 +561,10 @@ 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();