diff options
author | Kostya Shishkov <kostya.shishkov@gmail.com> | 2019-11-16 10:00:49 +0100 |
---|---|---|
committer | Kostya Shishkov <kostya.shishkov@gmail.com> | 2019-11-16 10:00:49 +0100 |
commit | fde9f7c350f401dec51e6a08c4aa8134744b4b68 (patch) | |
tree | 3ebc5c1ecd4a1df4dc334ef6d27ebcdb93dd2e15 | |
parent | f15f3836e13cc132ea67202a74cf85847ccccabb (diff) | |
download | nihav-tool-fde9f7c350f401dec51e6a08c4aa8134744b4b68.tar.gz |
add seeking functionality
-rw-r--r-- | src/main.rs | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs index c26e671..784fccb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -90,6 +90,7 @@ fn main() { let mut decode_video = true; let mut decode_audio = true; let mut nmode = NumberMode::FrmPTS; + let mut seek_time = 0u64; while (cur_arg < args.len()) && args[cur_arg].starts_with('-') { match args[cur_arg].as_str() { @@ -100,6 +101,19 @@ fn main() { "-nm=count" => { nmode = NumberMode::Counter; }, "-nm=pktpts" => { nmode = NumberMode::PktPTS; }, "-nm=frmpts" => { nmode = NumberMode::FrmPTS; }, + "-seek" => { + cur_arg += 1; + if cur_arg == args.len() { + println!("seek time missing"); + return; + } + let ret = args[cur_arg].parse::<u64>(); + if ret.is_err() { + println!("wrong seek time"); + return; + } + seek_time = ret.unwrap(); + }, _ => { println!("unknown option {}", args[cur_arg]); return; }, } cur_arg += 1; @@ -132,6 +146,13 @@ println!("trying demuxer {} on {}", dmx_name, name); br.seek(SeekFrom::Start(0)).unwrap(); let mut dmx = create_demuxer(dmx_fact, &mut br).unwrap(); + if seek_time > 0 { + let ret = dmx.seek(seek_time); + if ret.is_err() { +println!(" seek error {:?}", ret.err().unwrap()); + } + } + let mut decs: Vec<Option<(Box<NADecoderSupport>, Box<dyn NADecoder>)>> = Vec::new(); let mut sids: Vec<u32> = Vec::new(); let mut writers: Vec<Outputter> = Vec::new(); |