]> git.nihav.org Git - nihav-player.git/commitdiff
videoplayer: add options for turning OSD on/off/whatever
authorKostya Shishkov <kostya.shiskov@gmail.com>
Sat, 30 Aug 2025 18:48:47 +0000 (20:48 +0200)
committerKostya Shishkov <kostya.shiskov@gmail.com>
Sat, 30 Aug 2025 18:48:47 +0000 (20:48 +0200)
videoplayer/src/main.rs
videoplayer/src/osd.rs

index 3a3cd3f0ff41f6428a499b2fd8c8e623f99847b4..16597bdf6c88b7eee4ccfa8333c36a61f69d59a2 100644 (file)
@@ -359,6 +359,7 @@ struct Player {
 
     debug:          bool,
     osd:            OSD,
+    show_osd:       Option<bool>,
 
     #[cfg(feature="debug")]
     logfile:        File,
@@ -399,6 +400,7 @@ impl Player {
 
             debug:          false,
             osd:            OSD::new(),
+            show_osd:       None,
 
             #[cfg(feature="debug")]
             logfile:        File::create("debug.log").expect("'debug.log' should be available for writing"),
@@ -582,6 +584,7 @@ impl Player {
                     Keycode::O => {
                         if keymod.contains(Mod::RSHIFTMOD) || keymod.contains(Mod::LSHIFTMOD) {
                             self.osd.toggle_perm();
+                            self.show_osd = None;
                         } else {
                             self.osd.toggle();
                         }
@@ -669,6 +672,9 @@ impl Player {
         self.has_audio = false;
         self.osd.reset();
         self.osd.set_duration(duration);
+        if let Some(val) = self.show_osd {
+            self.osd.set_perm(val);
+        }
         for i in 0..dmx.get_num_streams() {
             let s = dmx.get_stream(i).unwrap();
             let info = s.get_info();
@@ -1038,6 +1044,15 @@ fn main() {
                     }
                 }
             },
+            "-osd" => {
+                player.show_osd = Some(true);
+            },
+            "-noosd" => {
+                player.show_osd = Some(false);
+            },
+            "-ignosd" => {
+                player.show_osd = None;
+            },
             _ => {
                 window = player.play(window, arg, seek_time);
                 if player.end { break; }
index f2dd24d34447badb94cece20530f02f5f7b47a62..95fd4f5ca3a29f27dba8e1a98a235a5e96133b61 100644 (file)
@@ -32,6 +32,12 @@ impl OSD {
             self.time = None;
         }
     }
+    pub fn set_perm(&mut self, perm: bool) {
+        self.perm = perm;
+        if !self.perm {
+            self.time = None;
+        }
+    }
     pub fn toggle_perm(&mut self) {
         if !self.perm {
             self.perm = true;