From: Kostya Shishkov Date: Fri, 10 Mar 2023 18:35:17 +0000 (+0100) Subject: enhance printed runtime stats X-Git-Url: https://git.nihav.org/?p=nihav-encoder.git;a=commitdiff_plain;h=908ba48cf95994308dcd669c9b730c6b5934b401 enhance printed runtime stats --- diff --git a/src/main.rs b/src/main.rs index 5e00cf0..41a4a92 100644 --- a/src/main.rs +++ b/src/main.rs @@ -99,7 +99,7 @@ struct Transcoder { no_audio: bool, start: NATimePoint, end: NATimePoint, - verbose: bool, + verbose: u8, } macro_rules! parse_and_apply_options { @@ -954,7 +954,9 @@ fn main() { return; } }, - "--verbose" | "-v" => transcoder.verbose = true, + "--verbose" | "-v" => transcoder.verbose = 1, + "-vv" => transcoder.verbose = 2, + "-v-" => transcoder.verbose = 0, _ => { if args[arg_idx].starts_with("--istream") { let opt0 = &args[arg_idx]; @@ -1107,6 +1109,8 @@ println!("stream {} - {} {}", i, s, info.get_name()); let mut time = Instant::now(); let show_interval = Duration::from_millis(100); + let mut adata_size = 0; + let mut vdata_size = 0; 'main_loop: loop { let pktres = dmx.get_frame(); if let Err(DemuxerError::EOF) = pktres { break; } @@ -1117,7 +1121,7 @@ println!("stream {} - {} {}", i, s, info.get_name()); let mut pkt = pktres.unwrap(); if transcoder.start != NATimePoint::None && pkt.ts.less_than(transcoder.start) { continue; } let src_id = pkt.get_stream().get_num(); - if transcoder.verbose && time.elapsed() >= show_interval { + if transcoder.verbose > 0 && time.elapsed() >= show_interval { if let Some(pts) = pkt.get_pts() { let cur_time = format_time(NATimeInfo::ts_to_time(pts, 1000, pkt.ts.tb_num, pkt.ts.tb_den)); print!(" {}", cur_time); @@ -1127,6 +1131,9 @@ println!("stream {} - {} {}", i, s, info.get_name()); if !duration_string.is_empty() { print!(" / {}", duration_string); } + if transcoder.verbose > 1 { + print!(" data sizes V: {} A: {}", vdata_size, adata_size); + } print!("\r"); std::io::stdout().flush().unwrap(); time = Instant::now(); @@ -1137,6 +1144,12 @@ println!("stream {} - {} {}", i, s, info.get_name()); let dstr = mux.get_stream(dst_id as usize).unwrap(); pkt.reassign(dstr, pkt.get_time_information()); if transcoder.end != NATimePoint::None && !pkt.ts.less_than(transcoder.end) { break 'main_loop; } + let pkt_size = pkt.get_buffer().len(); + match pkt.get_stream().get_media_type() { + StreamType::Video => { vdata_size += pkt_size; }, + StreamType::Audio => { adata_size += pkt_size; }, + _ => {}, + }; if mux.mux_frame(pkt).is_err() { println!("error muxing packet"); break; @@ -1160,6 +1173,12 @@ println!("stream {} - {} {}", i, s, info.get_name()); } while let Ok(Some(pkt)) = encoder.get_packet() { if transcoder.end != NATimePoint::None && !pkt.ts.less_than(transcoder.end) { break 'main_loop; } + let pkt_size = pkt.get_buffer().len(); + match pkt.get_stream().get_media_type() { + StreamType::Video => { vdata_size += pkt_size; }, + StreamType::Audio => { adata_size += pkt_size; }, + _ => {}, + }; mux.mux_frame(pkt).unwrap(); } } @@ -1205,7 +1224,7 @@ println!("stream {} - {} {}", i, s, info.get_name()); _ => {}, }; } - if transcoder.verbose { + if transcoder.verbose > 0 { println!(); }