X-Git-Url: https://git.nihav.org/?p=nihav-tool.git;a=blobdiff_plain;f=src%2Fmain.rs;fp=src%2Fmain.rs;h=ff6baac91cea84ed7bf3dc46c6ae0465fc5eaf70;hp=bb6a7bc1c6fde740f353f0b5b10ef7fe9b3def87;hb=7437145d254f1852f5b594e56e20124761bb5b02;hpb=7c6134ccc50772924bd4f6b917fe3dead9fc8e5e diff --git a/src/main.rs b/src/main.rs index bb6a7bc..ff6baac 100644 --- a/src/main.rs +++ b/src/main.rs @@ -27,7 +27,7 @@ enum NumberMode { } struct FrameOutput { - prefix: &'static str, + prefix: String, streamno: usize, frameno: u64, nmode: NumberMode, @@ -43,11 +43,11 @@ impl FrameOutput { }; let vinfo = frm.get_buffer().get_video_info().unwrap(); if vinfo.get_format().is_paletted() { - write_palppm(self.prefix, self.streamno, pts, frm); + write_palppm(&self.prefix, self.streamno, pts, frm); } else if vinfo.get_format().get_model().is_yuv() { - write_pgmyuv(self.prefix, self.streamno, pts, frm); + write_pgmyuv(&self.prefix, self.streamno, pts, frm); } else if vinfo.get_format().get_model().is_rgb() { - write_ppm(self.prefix, self.streamno, pts, frm); + write_ppm(&self.prefix, self.streamno, pts, frm); } else { panic!(" unknown format"); } @@ -92,6 +92,8 @@ fn main() { let mut decode_audio = true; let mut nmode = NumberMode::FrmPTS; let mut seek_time = 0u64; + let mut vpfx: Option = None; + let mut apfx: Option<&str> = None; while (cur_arg < args.len()) && args[cur_arg].starts_with('-') { match args[cur_arg].as_str() { @@ -115,6 +117,22 @@ fn main() { } seek_time = ret.unwrap(); }, + "-apfx" => { + cur_arg += 1; + if cur_arg == args.len() { + println!("name missing"); + return; + } + apfx = Some(&args[cur_arg]); + }, + "-vpfx" => { + cur_arg += 1; + if cur_arg == args.len() { + println!("name missing"); + return; + } + vpfx = Some(args[cur_arg].clone()); + }, _ => { println!("unknown option {}", args[cur_arg]); return; }, } cur_arg += 1; @@ -176,7 +194,7 @@ println!("stream {} - {} {}", i, s, info.get_name()); dec.init(&mut dsupp, info).unwrap(); decs.push(Some((dsupp, dec))); if !noout { - writers.push(Outputter::Video(FrameOutput{prefix: "", streamno: i, frameno: 1, nmode})); + writers.push(Outputter::Video(FrameOutput{prefix: if let Some(ref str) = vpfx { str.clone() } else { "out".to_string() }, streamno: i, frameno: 1, nmode})); has_out = true; } } else { @@ -193,7 +211,11 @@ println!("stream {} - {} {}", i, s, info.get_name()); dec.init(&mut dsupp, info).unwrap(); decs.push(Some((dsupp, dec))); if !noout { - let name = format!("out{:02}.wav", i); + let name = if let Some(apfx) = apfx { + format!("{}{:02}.wav", apfx, i) + } else { + format!("out{:02}.wav", i) + }; writers.push(Outputter::Audio(AudioOutput::new(&name))); has_out = true; }