X-Git-Url: https://git.nihav.org/?p=nihav-tool.git;a=blobdiff_plain;f=src%2Fmain.rs;h=cbd17d327ebe0769f92621b3cb30860a460c5090;hp=76e720ef3e46ed304522f592c918f07ef88e6c92;hb=f7e9662a6343256ffdf5d1fc6bc7da45f2fb20e6;hpb=fabefb1bbbe0989b89e588a9409679cf3096d2d8 diff --git a/src/main.rs b/src/main.rs index 76e720e..cbd17d3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,7 +3,7 @@ extern crate nihav_codec_support; extern crate nihav_registry; extern crate nihav_allstuff; -use std::io::{SeekFrom, Write}; +use std::io::{SeekFrom, Write, BufReader}; use std::fs::File; use std::path::Path; use nihav_core::io::byteio::{FileReader, ByteReader}; @@ -74,7 +74,23 @@ fn main() { let args: Vec<_> = env::args().collect(); if args.len() == 1 { - println!("usage: nihav-tool [-noout] [-vn] [-an] input [lastpts]"); + println!("usage: nihav-tool [-noout] [-vn] [-an] input [endtime]"); + println!(" or invoke nihav-tool --help for more detailed information"); + return; + } + if args.len() == 2 && args[1] == "--help" { + println!("usage: nihav-tool [options] input [endtime]"); + println!("available options:"); + println!(" -noout - decode but do not write output"); + println!(" -an - do not decode audio streams"); + println!(" -vn - do not decode video streams"); + println!(" -nm={{count,pktpts,frmpts}} - use counter/frame PTS/decoded PTS as output image number"); + println!(" -skip={{key,intra}} - decode only reference frames (I-/P-) or intra frames only"); + println!(" -seek time - try seeking to the given time before starting decoding"); + println!(" -apfx/-vpfx prefix - use given prefix when creating output audio/video files instead of default 'out'"); + println!(" -ignerr - keep decoding even if decoding error is encountered"); + println!(" -dumpfrm - dump raw frame data for all streams"); + println!(" endtime - decoding end time, can be given either as time (hh:mm:ss.ms) or as a timestamp (e.g. 42pts)"); return; } let mut lastpts = NATimePoint::None; @@ -148,7 +164,8 @@ fn main() { } let path = Path::new(name); - let mut file = File::open(path).unwrap(); + let file = File::open(path).unwrap(); + let mut file = BufReader::new(file); let dmx_fact; let mut fr = FileReader::new_read(&mut file); let mut br = ByteReader::new(&mut fr); @@ -163,7 +180,7 @@ println!("trying demuxer {} on {}", dmx_name, name); let mut dmx_reg = RegisteredDemuxers::new(); nihav_register_all_demuxers(&mut dmx_reg); let mut dec_reg = RegisteredDecoders::new(); - nihav_register_all_codecs(&mut dec_reg); + nihav_register_all_decoders(&mut dec_reg); dmx_fact = dmx_reg.find_demuxer(dmx_name).unwrap(); br.seek(SeekFrom::Start(0)).unwrap();