From f0242bd4a2950ef7cee683ab916f2eea58ab1924 Mon Sep 17 00:00:00 2001 From: Kostya Shishkov Date: Wed, 1 Jul 2026 03:48:11 +0200 Subject: [PATCH] videoplayer: introduce slightly more granular log level --- videoplayer/src/main.rs | 48 ++++++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 17 deletions(-) diff --git a/videoplayer/src/main.rs b/videoplayer/src/main.rs index 6384241..dfc5946 100644 --- a/videoplayer/src/main.rs +++ b/videoplayer/src/main.rs @@ -412,6 +412,14 @@ fn try_display(disp_queue: &mut DispQueue, canvas: &mut Canvas, osd: &mu None } +#[derive(Clone,Copy,Default,PartialEq)] +enum LogLevel { + #[default] + Verbose, + Essentials, + Quiet, +} + struct Player { sdl_context: sdl2::Sdl, vsystem: sdl2::VideoSubsystem, @@ -451,7 +459,7 @@ struct Player { tkeep: TimeKeep, - quiet: bool, + loglevel: LogLevel, debug: bool, osd: OSD, show_osd: Option, @@ -506,7 +514,7 @@ impl Player { tkeep: TimeKeep::new(), - quiet: false, + loglevel: LogLevel::default(), debug: false, osd: OSD::new(), show_osd: None, @@ -525,7 +533,7 @@ impl Player { let ret = dmx.seek(NATimePoint::Milliseconds(seektime)); if ret.is_err() { - if !self.quiet { + if self.loglevel != LogLevel::Quiet { println!(" seek error"); } return Ok(()); //TODO: not ignore some of seek errors? @@ -639,7 +647,7 @@ impl Player { for event in event_pump.poll_iter() { if let Event::Quit {..} = event { self.end = true; - if !self.quiet { + if self.loglevel == LogLevel::Verbose { println!(); } return Ok(true); @@ -698,14 +706,14 @@ impl Player { match keycode { Keycode::Escape => { self.end = true; - if !self.quiet { + if self.loglevel == LogLevel::Verbose { println!(); } return Ok(true); }, Keycode::Q if keymod.contains(Mod::RSHIFTMOD) || keymod.contains(Mod::LSHIFTMOD) => { self.end = true; - if !self.quiet { + if self.loglevel == LogLevel::Verbose { println!(); } return Ok(true); @@ -776,7 +784,7 @@ impl Player { }, _ => {}, }; - if !self.paused && !self.quiet { + if !self.paused && self.loglevel == LogLevel::Verbose { print!("{:60}\r", ' '); std::io::stdout().flush().unwrap(); } @@ -785,7 +793,7 @@ impl Player { Ok(false) } fn play(&mut self, mut window: Window, name: &str, start_time: NATimePoint) -> Window { - if !self.quiet { + if self.loglevel != LogLevel::Quiet { println!("Playing {name}"); } debug_log!(self; {format!("Playing {}", name)}); @@ -830,7 +838,7 @@ impl Player { let mut audio_dec: Option = None; let duration = dmx.get_duration(); - if !self.quiet { + if self.loglevel != LogLevel::Quiet { print!(" {dmx}"); if duration != 0 { print!(" total duration {}", format_time(duration)); @@ -850,7 +858,7 @@ impl Player { let decfunc = self.full_reg.dec_reg.find_decoder(info.get_name()); let decfunc_mt = if self.use_mt { self.full_reg.mtdec_reg.find_decoder(info.get_name()) } else { None }; let stream_info = format_stream_info(i, &s); - if !self.quiet { + if self.loglevel != LogLevel::Quiet { println!("{stream_info}"); } debug_log!(self; {stream_info}); @@ -870,7 +878,7 @@ impl Player { height = props.get_height(); } if dec.init(info.clone()).is_err() { - if !self.quiet { + if self.loglevel != LogLevel::Quiet { println!("failed to initialise hwaccel video decoder"); } } else { @@ -880,7 +888,7 @@ impl Player { tb_num = tbn; tb_den = tbd; self.has_video = true; - if !self.quiet { + if self.loglevel != LogLevel::Quiet { println!(" using hardware-accelerated decoding"); } continue; @@ -902,7 +910,7 @@ impl Player { tb_den = tbd; self.has_video = true; continue; - } else if !self.quiet { + } else if self.loglevel != LogLevel::Quiet { println!("failed to create multi-threaded decoder, falling back"); } } @@ -1074,7 +1082,7 @@ impl Player { self.seeked = false; let ret = self.handle_events(&mut event_pump, &mut canvas, &mut dmx, &mut disp_q); if matches!(ret, Ok(true) | Err(_)) { - if !self.quiet { + if self.loglevel == LogLevel::Verbose { println!(); } break 'main; @@ -1142,7 +1150,7 @@ impl Player { if last_disp.elapsed().as_millis() >= 10 { let c_time = self.tkeep.get_cur_time(); - if !self.quiet { + if self.loglevel == LogLevel::Verbose { if !self.debug { print!(" {} {}% \r", format_time(c_time), self.acontrol.get_volume()); } else { @@ -1167,7 +1175,7 @@ impl Player { thread::sleep(Duration::from_millis(20)); } } - if !self.quiet { + if self.loglevel == LogLevel::Verbose { println!(); } std::mem::swap(&mut self.vcontrol, &mut new_vcontrol); @@ -1333,7 +1341,13 @@ fn main() { player.no_sdl_scale = true; }, "-quiet" => { - player.quiet = true; + player.loglevel = LogLevel::Quiet; + }, + "-quieter" => { + player.loglevel = LogLevel::Essentials; + }, + "-verbose" => { + player.loglevel = LogLevel::Verbose; }, "-osd" => { player.show_osd = Some(true); -- 2.39.5