aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKostya Shishkov <kostya.shishkov@gmail.com>2020-04-16 13:27:22 +0200
committerKostya Shishkov <kostya.shishkov@gmail.com>2020-04-16 13:27:22 +0200
commit7437145d254f1852f5b594e56e20124761bb5b02 (patch)
treeb76422841eac0dd0499228dfd18e7be00d78ac7a
parent7c6134ccc50772924bd4f6b917fe3dead9fc8e5e (diff)
downloadnihav-tool-7437145d254f1852f5b594e56e20124761bb5b02.tar.gz
allow setting custom output prefixes
-rw-r--r--src/frmwriter.rs6
-rw-r--r--src/main.rs34
2 files changed, 31 insertions, 9 deletions
diff --git a/src/frmwriter.rs b/src/frmwriter.rs
index f3221d0..5b50b81 100644
--- a/src/frmwriter.rs
+++ b/src/frmwriter.rs
@@ -6,7 +6,7 @@ use std::fs::File;
pub fn write_pgmyuv(pfx: &str, strno: usize, num: u64, frm: NAFrameRef) {
if let NABufferType::None = frm.get_buffer() { return; }
- let name = format!("{}out{:02}_{:08}.pgm", pfx, strno, num);
+ let name = format!("{}{:02}_{:08}.pgm", pfx, strno, num);
let mut ofile = File::create(name).unwrap();
let buf = frm.get_buffer().get_vbuf().unwrap();
let is_flipped = buf.get_info().is_flipped();
@@ -96,7 +96,7 @@ pub fn write_pgmyuv(pfx: &str, strno: usize, num: u64, frm: NAFrameRef) {
}
pub fn write_palppm(pfx: &str, strno: usize, num: u64, frm: NAFrameRef) {
- let name = format!("{}out{:02}_{:08}.ppm", pfx, strno, num);
+ let name = format!("{}{:02}_{:08}.ppm", pfx, strno, num);
let mut ofile = File::create(name).unwrap();
let buf = frm.get_buffer().get_vbuf().unwrap();
let (w, h) = buf.get_dimensions(0);
@@ -131,7 +131,7 @@ pub fn write_palppm(pfx: &str, strno: usize, num: u64, frm: NAFrameRef) {
}
pub fn write_ppm(pfx: &str, strno: usize, num: u64, frm: NAFrameRef) {
- let name = format!("{}out{:02}_{:08}.ppm", pfx, strno, num);
+ let name = format!("{}{:02}_{:08}.ppm", pfx, strno, num);
let mut ofile = File::create(name).unwrap();
let info = frm.get_buffer().get_video_info().unwrap();
let flipped = info.is_flipped();
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<String> = 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;
}