projects
/
nihav-tool.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
b4a0ee1
)
add frame skipping mode
author
Kostya Shishkov
<kostya.shishkov@gmail.com>
Thu, 11 Jun 2020 08:19:55 +0000
(10:19 +0200)
committer
Kostya Shishkov
<kostya.shishkov@gmail.com>
Thu, 11 Jun 2020 08:19:55 +0000
(10:19 +0200)
src/main.rs
patch
|
blob
|
blame
|
history
diff --git
a/src/main.rs
b/src/main.rs
index 0892c43d0ba5a305c8877c2f0dfe51c8f8411c8e..1be4e2a0a7e36a42ebb004e69251cc84006bd64a 100644
(file)
--- a/
src/main.rs
+++ b/
src/main.rs
@@
-83,6
+83,7
@@
fn main() {
let mut decode_video = true;
let mut decode_audio = true;
let mut nmode = NumberMode::FrmPTS;
let mut decode_video = true;
let mut decode_audio = true;
let mut nmode = NumberMode::FrmPTS;
+ let mut smode = FrameSkipMode::None;
let mut seek_time = 0u64;
let mut vpfx: Option<String> = None;
let mut apfx: Option<&str> = None;
let mut seek_time = 0u64;
let mut vpfx: Option<String> = None;
let mut apfx: Option<&str> = None;
@@
-98,6
+99,8
@@
fn main() {
"-nm=count" => { nmode = NumberMode::Counter; },
"-nm=pktpts" => { nmode = NumberMode::PktPTS; },
"-nm=frmpts" => { nmode = NumberMode::FrmPTS; },
"-nm=count" => { nmode = NumberMode::Counter; },
"-nm=pktpts" => { nmode = NumberMode::PktPTS; },
"-nm=frmpts" => { nmode = NumberMode::FrmPTS; },
+ "-skip=key" => { smode = FrameSkipMode::KeyframesOnly; },
+ "-skip=intra" => { smode = FrameSkipMode::IntraOnly; },
"-seek" => {
cur_arg += 1;
if cur_arg == args.len() {
"-seek" => {
cur_arg += 1;
if cur_arg == args.len() {
@@
-171,6
+174,7
@@
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();
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();
+ let dec_opts = [NAOption{name: FRAME_SKIP_OPTION, value: NAValue::String(smode.to_string())}];
for i in 0..dmx.get_num_streams() {
let s = dmx.get_stream(i).unwrap();
let info = s.get_info();
for i in 0..dmx.get_num_streams() {
let s = dmx.get_stream(i).unwrap();
let info = s.get_info();
@@
-188,6
+192,7
@@
println!("stream {} - {} {}", i, s, info.get_name());
let mut dec = (decfunc.unwrap())();
let mut dsupp = Box::new(NADecoderSupport::new());
dec.init(&mut dsupp, info).unwrap();
let mut dec = (decfunc.unwrap())();
let mut dsupp = Box::new(NADecoderSupport::new());
dec.init(&mut dsupp, info).unwrap();
+ dec.set_options(&dec_opts);
decs.push(Some((dsupp, dec)));
if !noout {
writers.push(Outputter::Video(FrameOutput{prefix: if let Some(ref str) = vpfx { str.clone() } else { "out".to_string() }, streamno: i, frameno: 1, nmode}));
decs.push(Some((dsupp, dec)));
if !noout {
writers.push(Outputter::Video(FrameOutput{prefix: if let Some(ref str) = vpfx { str.clone() } else { "out".to_string() }, streamno: i, frameno: 1, nmode}));