diff --git a/src/lib.rs b/src/lib.rs index a687b8c..b7c3658 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,10 +1,10 @@ //! MoMentry Playground -//! +//! //! Unified media player with ASR/YOLO/Chunks overlay support -pub mod player; -pub mod overlay; -pub mod web; pub mod config; +pub mod overlay; +pub mod player; +pub mod web; pub use config::Config; diff --git a/src/main.rs b/src/main.rs index 53a3ff6..3d26ce4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -16,6 +16,7 @@ mod web; use config::Config; use overlay::{AsrLoader, ChunkLoader, YoloLoader}; +use player::audio::AudioPlayer; use player::ffmpeg::FFmpegDecoder; use player::state::{PlaybackState, PlayerState}; @@ -64,6 +65,7 @@ fn run(config: &Config) -> Result<()> { let mut asr: Option = None; let mut yolo: Option = None; let mut chunks: Option = None; + let mut audio_player: Option = None; let mut is_fullscreen = false; let mut is_dragging = false; @@ -85,6 +87,10 @@ fn run(config: &Config) -> Result<()> { texture = Some(tex); dec.start_decoding(0)?; decoder = Some(dec); + + let player = AudioPlayer::new(); + info!("Audio player initialized"); + audio_player = Some(player); } if let Some(ref asr_path) = config.asr { @@ -158,12 +164,21 @@ fn run(config: &Config) -> Result<()> { match key { sdl2::keyboard::Keycode::Escape => running = false, sdl2::keyboard::Keycode::Space => { - player_state.playback = + let was_playing = player_state.playback == PlaybackState::Playing; + player_state.playback = if was_playing { + PlaybackState::Paused + } else { + PlaybackState::Playing + }; + if let Some(ref mut audio) = audio_player { if player_state.playback == PlaybackState::Playing { - PlaybackState::Paused + if !player_state.muted { + audio.resume(); + } } else { - PlaybackState::Playing - }; + audio.pause(); + } + } } sdl2::keyboard::Keycode::S => { player_state.show_subtitle = !player_state.show_subtitle; @@ -188,6 +203,14 @@ fn run(config: &Config) -> Result<()> { } sdl2::keyboard::Keycode::M => { player_state.muted = !player_state.muted; + if let Some(ref mut audio) = audio_player { + if player_state.muted { + audio.pause(); + } else if player_state.playback == PlaybackState::Playing { + audio.resume(); + } + } + info!("Audio: {}", if player_state.muted { "MUTED" } else { "ON" }); } sdl2::keyboard::Keycode::F => { is_fullscreen = !is_fullscreen; @@ -197,39 +220,62 @@ fn run(config: &Config) -> Result<()> { dec.seek(0).ok(); player_state.current_frame = 0; player_state.current_time_ms = 0; + sync_audio( + &mut audio_player, + &config.video, + 0, + player_state.playback == PlaybackState::Playing, + ); } } sdl2::keyboard::Keycode::End => { if let Some(ref mut dec) = decoder { let last_frame = player_state.total_frames.saturating_sub(1); - dec.seek( - ((last_frame as f64 / player_state.fps) * 1000.0) as u64, - ) - .ok(); + let time_ms = + ((last_frame as f64 / player_state.fps) * 1000.0) as u64; + dec.seek(time_ms).ok(); player_state.current_frame = last_frame; player_state.current_time_ms = player_state.duration_ms; + sync_audio( + &mut audio_player, + &config.video, + time_ms, + player_state.playback == PlaybackState::Playing, + ); } } sdl2::keyboard::Keycode::Left => { let step = if shift { 60 } else { 1 }; if let Some(ref mut dec) = decoder { let current = player_state.current_frame.saturating_sub(step); - dec.seek(((current as f64 / player_state.fps) * 1000.0) as u64) - .ok(); - player_state.current_frame = current; - player_state.current_time_ms = + let time_ms = ((current as f64 / player_state.fps) * 1000.0) as u64; + dec.seek(time_ms).ok(); + player_state.current_frame = current; + player_state.current_time_ms = time_ms; + sync_audio( + &mut audio_player, + &config.video, + time_ms, + player_state.playback == PlaybackState::Playing, + ); } } sdl2::keyboard::Keycode::Right => { let step = if shift { 60 } else { 1 }; if let Some(ref mut dec) = decoder { let current = player_state.current_frame + step; - dec.seek(((current as f64 / player_state.fps) * 1000.0) as u64) - .ok(); - player_state.current_frame = current; - player_state.current_time_ms = + let time_ms = ((current as f64 / player_state.fps) * 1000.0) as u64; + dec.seek(time_ms).ok(); + player_state.current_frame = current; + player_state.current_time_ms = time_ms; + sync_audio( + &mut audio_player, + &config.video, + time_ms, + player_state.playback == PlaybackState::Playing, + ); } } sdl2::keyboard::Keycode::Up => { @@ -286,12 +332,13 @@ fn run(config: &Config) -> Result<()> { player_state.playback = PlaybackState::Paused; let ratio = (x - bar_x_start) as f64 / bar_width as f64; let target_frame = (player_state.total_frames as f64 * ratio) as u64; + let time_ms = + ((target_frame as f64 / player_state.fps) * 1000.0) as u64; if let Some(ref mut dec) = decoder { - let time_ms = - ((target_frame as f64 / player_state.fps) * 1000.0) as u64; if dec.seek(time_ms).is_ok() { player_state.current_frame = target_frame; player_state.current_time_ms = time_ms; + sync_audio(&mut audio_player, &config.video, time_ms, false); info!( "Seeked to frame {} ({:.1}%)", target_frame, @@ -619,6 +666,22 @@ fn run(config: &Config) -> Result<()> { Ok(()) } +fn sync_audio( + audio_player: &mut Option, + video_path: &Option, + time_ms: u64, + is_playing: bool, +) { + if let Some(ref mut audio) = audio_player { + if let Some(ref path) = video_path { + audio.play(path.as_path(), time_ms); + if !is_playing { + audio.pause(); + } + } + } +} + fn format_time(ms: u64) -> String { let total_secs = ms / 1000; let hours = total_secs / 3600; diff --git a/src/player/audio.rs b/src/player/audio.rs index 976252d..61b80ca 100644 --- a/src/player/audio.rs +++ b/src/player/audio.rs @@ -1,13 +1,11 @@ -//! 音頻播放模組 +//! Audio player module -use anyhow::Result; -use std::process::{Command, Stdio}; -use std::io::Write; -use std::sync::{Arc, Mutex}; +use log::info; +use std::process::{Child, Command, Stdio}; -#[derive(Debug, Clone)] +#[derive(Debug)] pub struct AudioPlayer { - process: Option, + process: Option, volume: f32, muted: bool, } @@ -21,46 +19,61 @@ impl AudioPlayer { } } - pub fn play(&mut self, path: &str, start_ms: u64) -> Result<()> { - self.stop()?; - + pub fn play(&mut self, path: &std::path::Path, start_ms: u64) -> Option<()> { + self.stop(); + let start_sec = start_ms as f64 / 1000.0; let volume_filter = if self.muted { "volume=0".to_string() } else { format!("volume={}", self.volume) }; - - let mut cmd = Command::new("ffplay"); - cmd.args([ - "-nodisp", - "-autoexit", - "-ss", &format!("{}", start_sec), - "-af", &volume_filter, - "-i", path, - ]) - .stdin(Stdio::null()) - .stdout(Stdio::null()) - .stderr(Stdio::null()) - .spawn()?; - + + let cmd = Command::new("ffplay") + .args([ + "-nodisp", + "-autoexit", + "-ss", + &format!("{:.3}", start_sec), + "-af", + &volume_filter, + "-i", + ]) + .arg(path) + .stdin(Stdio::null()) + .stdout(Stdio::null()) + .stderr(Stdio::null()) + .spawn() + .ok()?; + self.process = Some(cmd); - Ok(()) + info!("Audio playback started from {:.1}s", start_sec); + Some(()) } - pub fn stop(&mut self) -> Result<()> { - if let Some(mut child) = self.process.take() { + pub fn pause(&mut self) { + if let Some(ref mut child) = self.process { let _ = child.kill(); let _ = child.wait(); } - Ok(()) + self.process = None; + info!("Audio paused"); + } + + pub fn resume(&mut self) { + info!("Audio resumed"); + } + + pub fn stop(&mut self) { + if let Some(ref mut child) = self.process.take() { + let _ = child.kill(); + let _ = child.wait(); + } + self.process = None; } pub fn set_volume(&mut self, volume: f32) { self.volume = volume.clamp(0.0, 1.0); - if !self.muted { - self.restart_with_volume()?; - } } pub fn toggle_mute(&mut self) -> bool { @@ -71,14 +84,16 @@ impl AudioPlayer { pub fn is_muted(&self) -> bool { self.muted } +} - fn restart_with_volume(&mut self) -> Result<()> { - Ok(()) +impl Default for AudioPlayer { + fn default() -> Self { + Self::new() } } impl Drop for AudioPlayer { fn drop(&mut self) { - let _ = self.stop(); + self.stop(); } } diff --git a/src/player/mod.rs b/src/player/mod.rs index 07fd7f5..3f29075 100644 --- a/src/player/mod.rs +++ b/src/player/mod.rs @@ -2,10 +2,12 @@ //! //! Video playback, frame decoding, and rendering +pub mod audio; pub mod ffmpeg; pub mod renderer; pub mod state; pub mod video; +pub use audio::AudioPlayer; pub use state::{PlaybackState, PlayerState}; pub use video::VideoPlayer; diff --git a/target/release/.fingerprint/momentry_playground-d0e10ec51fcac34b/dep-bin-momentry b/target/release/.fingerprint/momentry_playground-d0e10ec51fcac34b/dep-bin-momentry index d93d4d5..e6a1cfa 100644 Binary files a/target/release/.fingerprint/momentry_playground-d0e10ec51fcac34b/dep-bin-momentry and b/target/release/.fingerprint/momentry_playground-d0e10ec51fcac34b/dep-bin-momentry differ diff --git a/target/release/.fingerprint/momentry_playground-d0e10ec51fcac34b/output-bin-momentry b/target/release/.fingerprint/momentry_playground-d0e10ec51fcac34b/output-bin-momentry index 8478a6e..543ab2e 100644 --- a/target/release/.fingerprint/momentry_playground-d0e10ec51fcac34b/output-bin-momentry +++ b/target/release/.fingerprint/momentry_playground-d0e10ec51fcac34b/output-bin-momentry @@ -1,6 +1,7 @@ {"$message_type":"diagnostic","message":"unused import: `sdl2::pixels::PixelFormatEnum`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/player/renderer.rs","byte_start":50,"byte_end":79,"line_start":4,"line_end":4,"column_start":5,"column_end":34,"is_primary":true,"text":[{"text":"use sdl2::pixels::PixelFormatEnum;","highlight_start":5,"highlight_end":34}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"src/player/renderer.rs","byte_start":46,"byte_end":81,"line_start":4,"line_end":5,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use sdl2::pixels::PixelFormatEnum;","highlight_start":1,"highlight_end":35},{"text":"use sdl2::rect::Rect;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `sdl2::pixels::PixelFormatEnum`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/player/renderer.rs:4:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m4\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use sdl2::pixels::PixelFormatEnum;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default\n\n"} -{"$message_type":"diagnostic","message":"unused imports: `PlaybackState` and `PlayerState`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/player/mod.rs","byte_start":154,"byte_end":167,"line_start":10,"line_end":10,"column_start":17,"column_end":30,"is_primary":true,"text":[{"text":"pub use state::{PlaybackState, PlayerState};","highlight_start":17,"highlight_end":30}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/mod.rs","byte_start":169,"byte_end":180,"line_start":10,"line_end":10,"column_start":32,"column_end":43,"is_primary":true,"text":[{"text":"pub use state::{PlaybackState, PlayerState};","highlight_start":32,"highlight_end":43}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"src/player/mod.rs","byte_start":138,"byte_end":183,"line_start":10,"line_end":11,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"pub use state::{PlaybackState, PlayerState};","highlight_start":1,"highlight_end":45},{"text":"pub use video::VideoPlayer;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused imports: `PlaybackState` and `PlayerState`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/player/mod.rs:10:17\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub use state::{PlaybackState, PlayerState};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"unused import: `video::VideoPlayer`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/player/mod.rs","byte_start":191,"byte_end":209,"line_start":11,"line_end":11,"column_start":9,"column_end":27,"is_primary":true,"text":[{"text":"pub use video::VideoPlayer;","highlight_start":9,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"src/player/mod.rs","byte_start":183,"byte_end":211,"line_start":11,"line_end":11,"column_start":1,"column_end":29,"is_primary":true,"text":[{"text":"pub use video::VideoPlayer;","highlight_start":1,"highlight_end":29}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `video::VideoPlayer`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/player/mod.rs:11:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m11\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub use video::VideoPlayer;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"unused import: `audio::AudioPlayer`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/player/mod.rs","byte_start":161,"byte_end":179,"line_start":11,"line_end":11,"column_start":9,"column_end":27,"is_primary":true,"text":[{"text":"pub use audio::AudioPlayer;","highlight_start":9,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"src/player/mod.rs","byte_start":153,"byte_end":181,"line_start":11,"line_end":12,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"pub use audio::AudioPlayer;","highlight_start":1,"highlight_end":28},{"text":"pub use state::{PlaybackState, PlayerState};","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `audio::AudioPlayer`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/player/mod.rs:11:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m11\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub use audio::AudioPlayer;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"unused imports: `PlaybackState` and `PlayerState`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/player/mod.rs","byte_start":197,"byte_end":210,"line_start":12,"line_end":12,"column_start":17,"column_end":30,"is_primary":true,"text":[{"text":"pub use state::{PlaybackState, PlayerState};","highlight_start":17,"highlight_end":30}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/mod.rs","byte_start":212,"byte_end":223,"line_start":12,"line_end":12,"column_start":32,"column_end":43,"is_primary":true,"text":[{"text":"pub use state::{PlaybackState, PlayerState};","highlight_start":32,"highlight_end":43}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"src/player/mod.rs","byte_start":181,"byte_end":226,"line_start":12,"line_end":13,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"pub use state::{PlaybackState, PlayerState};","highlight_start":1,"highlight_end":45},{"text":"pub use video::VideoPlayer;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused imports: `PlaybackState` and `PlayerState`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/player/mod.rs:12:17\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m12\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub use state::{PlaybackState, PlayerState};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"unused import: `video::VideoPlayer`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/player/mod.rs","byte_start":234,"byte_end":252,"line_start":13,"line_end":13,"column_start":9,"column_end":27,"is_primary":true,"text":[{"text":"pub use video::VideoPlayer;","highlight_start":9,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"src/player/mod.rs","byte_start":226,"byte_end":254,"line_start":13,"line_end":13,"column_start":1,"column_end":29,"is_primary":true,"text":[{"text":"pub use video::VideoPlayer;","highlight_start":1,"highlight_end":29}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `video::VideoPlayer`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/player/mod.rs:13:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m13\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub use video::VideoPlayer;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} {"$message_type":"diagnostic","message":"unused import: `bridge::WebBridge`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/web/mod.rs","byte_start":60,"byte_end":77,"line_start":5,"line_end":5,"column_start":9,"column_end":26,"is_primary":true,"text":[{"text":"pub use bridge::WebBridge;","highlight_start":9,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"src/web/mod.rs","byte_start":52,"byte_end":79,"line_start":5,"line_end":5,"column_start":1,"column_end":28,"is_primary":true,"text":[{"text":"pub use bridge::WebBridge;","highlight_start":1,"highlight_end":28}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `bridge::WebBridge`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/web/mod.rs:5:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m5\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub use bridge::WebBridge;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} {"$message_type":"diagnostic","message":"fields `language` and `language_probability` are never read","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/overlay/asr.rs","byte_start":286,"byte_end":293,"line_start":15,"line_end":15,"column_start":12,"column_end":19,"is_primary":false,"text":[{"text":"pub struct AsrData {","highlight_start":12,"highlight_end":19}],"label":"fields in this struct","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/asr.rs","byte_start":304,"byte_end":312,"line_start":16,"line_end":16,"column_start":9,"column_end":17,"is_primary":true,"text":[{"text":" pub language: Option,","highlight_start":9,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/asr.rs","byte_start":338,"byte_end":358,"line_start":17,"line_end":17,"column_start":9,"column_end":29,"is_primary":true,"text":[{"text":" pub language_probability: Option,","highlight_start":9,"highlight_end":29}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`AsrData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"`#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: fields `language` and `language_probability` are never read\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/overlay/asr.rs:16:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m15\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct AsrData {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m-------\u001b[0m \u001b[1m\u001b[94mfields in this struct\u001b[0m\n\u001b[1m\u001b[94m16\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub language: Option,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m17\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub language_probability: Option,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `AsrData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default\n\n"} {"$message_type":"diagnostic","message":"methods `get_all_segments` and `duration` are never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/overlay/asr.rs","byte_start":480,"byte_end":494,"line_start":26,"line_end":26,"column_start":1,"column_end":15,"is_primary":false,"text":[{"text":"impl AsrLoader {","highlight_start":1,"highlight_end":15}],"label":"methods in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/asr.rs","byte_start":1223,"byte_end":1239,"line_start":49,"line_end":49,"column_start":12,"column_end":28,"is_primary":true,"text":[{"text":" pub fn get_all_segments(&self) -> &[AsrSegment] {","highlight_start":12,"highlight_end":28}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/asr.rs","byte_start":1395,"byte_end":1403,"line_start":57,"line_end":57,"column_start":12,"column_end":20,"is_primary":true,"text":[{"text":" pub fn duration(&self) -> f64 {","highlight_start":12,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: methods `get_all_segments` and `duration` are never used\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/overlay/asr.rs:49:12\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m26\u001b[0m \u001b[1m\u001b[94m|\u001b[0m impl AsrLoader {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m--------------\u001b[0m \u001b[1m\u001b[94mmethods in this implementation\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m49\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn get_all_segments(&self) -> &[AsrSegment] {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m57\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn duration(&self) -> f64 {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^\u001b[0m\n\n"} @@ -10,6 +11,7 @@ {"$message_type":"diagnostic","message":"fields `frame_number`, `time_seconds`, and `time_formatted` are never read","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/overlay/yolo.rs","byte_start":499,"byte_end":508,"line_start":24,"line_end":24,"column_start":12,"column_end":21,"is_primary":false,"text":[{"text":"pub struct FrameData {","highlight_start":12,"highlight_end":21}],"label":"fields in this struct","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":519,"byte_end":531,"line_start":25,"line_end":25,"column_start":9,"column_end":21,"is_primary":true,"text":[{"text":" pub frame_number: u64,","highlight_start":9,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":546,"byte_end":558,"line_start":26,"line_end":26,"column_start":9,"column_end":21,"is_primary":true,"text":[{"text":" pub time_seconds: f64,","highlight_start":9,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":573,"byte_end":587,"line_start":27,"line_end":27,"column_start":9,"column_end":23,"is_primary":true,"text":[{"text":" pub time_formatted: String,","highlight_start":9,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`FrameData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: fields `frame_number`, `time_seconds`, and `time_formatted` are never read\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/overlay/yolo.rs:25:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m24\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct FrameData {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m---------\u001b[0m \u001b[1m\u001b[94mfields in this struct\u001b[0m\n\u001b[1m\u001b[94m25\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub frame_number: u64,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m26\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub time_seconds: f64,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m27\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub time_formatted: String,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `FrameData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis\n\n"} {"$message_type":"diagnostic","message":"multiple fields are never read","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/overlay/yolo.rs","byte_start":684,"byte_end":696,"line_start":32,"line_end":32,"column_start":12,"column_end":24,"is_primary":false,"text":[{"text":"pub struct YoloMetadata {","highlight_start":12,"highlight_end":24}],"label":"fields in this struct","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":707,"byte_end":717,"line_start":33,"line_end":33,"column_start":9,"column_end":19,"is_primary":true,"text":[{"text":" pub video_path: String,","highlight_start":9,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":735,"byte_end":745,"line_start":34,"line_end":34,"column_start":9,"column_end":19,"is_primary":true,"text":[{"text":" pub model_path: Option,","highlight_start":9,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":771,"byte_end":776,"line_start":35,"line_end":35,"column_start":9,"column_end":14,"is_primary":true,"text":[{"text":" pub width: u32,","highlight_start":9,"highlight_end":14}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":791,"byte_end":797,"line_start":36,"line_end":36,"column_start":9,"column_end":15,"is_primary":true,"text":[{"text":" pub height: u32,","highlight_start":9,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":812,"byte_end":815,"line_start":37,"line_end":37,"column_start":9,"column_end":12,"is_primary":true,"text":[{"text":" pub fps: f64,","highlight_start":9,"highlight_end":12}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":857,"byte_end":871,"line_start":39,"line_end":39,"column_start":9,"column_end":23,"is_primary":true,"text":[{"text":" pub total_duration: f64,","highlight_start":9,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":886,"byte_end":898,"line_start":40,"line_end":40,"column_start":9,"column_end":21,"is_primary":true,"text":[{"text":" pub processed_at: Option,","highlight_start":9,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":924,"byte_end":930,"line_start":41,"line_end":41,"column_start":9,"column_end":15,"is_primary":true,"text":[{"text":" pub status: Option,","highlight_start":9,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":956,"byte_end":972,"line_start":42,"line_end":42,"column_start":9,"column_end":25,"is_primary":true,"text":[{"text":" pub total_detections: u64,","highlight_start":9,"highlight_end":25}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":987,"byte_end":1011,"line_start":43,"line_end":43,"column_start":9,"column_end":33,"is_primary":true,"text":[{"text":" pub avg_detections_per_frame: f64,","highlight_start":9,"highlight_end":33}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":1048,"byte_end":1066,"line_start":45,"line_end":45,"column_start":9,"column_end":27,"is_primary":true,"text":[{"text":" pub auto_save_interval: Option,","highlight_start":9,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":1111,"byte_end":1126,"line_start":47,"line_end":47,"column_start":9,"column_end":24,"is_primary":true,"text":[{"text":" pub processing_time: Option,","highlight_start":9,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":1171,"byte_end":1189,"line_start":49,"line_end":49,"column_start":9,"column_end":27,"is_primary":true,"text":[{"text":" pub avg_time_per_frame: Option,","highlight_start":9,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":1234,"byte_end":1247,"line_start":51,"line_end":51,"column_start":9,"column_end":22,"is_primary":true,"text":[{"text":" pub last_saved_at: Option,","highlight_start":9,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":1295,"byte_end":1307,"line_start":53,"line_end":53,"column_start":9,"column_end":21,"is_primary":true,"text":[{"text":" pub completed_at: Option,","highlight_start":9,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":1355,"byte_end":1370,"line_start":55,"line_end":55,"column_start":9,"column_end":24,"is_primary":true,"text":[{"text":" pub auto_save_count: Option,","highlight_start":9,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`YoloMetadata` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: multiple fields are never read\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/overlay/yolo.rs:33:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m32\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct YoloMetadata {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m------------\u001b[0m \u001b[1m\u001b[94mfields in this struct\u001b[0m\n\u001b[1m\u001b[94m33\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub video_path: String,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m34\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub model_path: Option,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m35\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub width: u32,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^\u001b[0m\n\u001b[1m\u001b[94m36\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub height: u32,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^\u001b[0m\n\u001b[1m\u001b[94m37\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fps: f64,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^\u001b[0m\n\u001b[1m\u001b[94m38\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub total_frames: u64,\n\u001b[1m\u001b[94m39\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub total_duration: f64,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m40\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub processed_at: Option,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m41\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub status: Option,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^\u001b[0m\n\u001b[1m\u001b[94m42\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub total_detections: u64,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m43\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub avg_detections_per_frame: f64,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m44\u001b[0m \u001b[1m\u001b[94m|\u001b[0m #[serde(default)]\n\u001b[1m\u001b[94m45\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub auto_save_interval: Option,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m46\u001b[0m \u001b[1m\u001b[94m|\u001b[0m #[serde(default)]\n\u001b[1m\u001b[94m47\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub processing_time: Option,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m48\u001b[0m \u001b[1m\u001b[94m|\u001b[0m #[serde(default)]\n\u001b[1m\u001b[94m49\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub avg_time_per_frame: Option,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m50\u001b[0m \u001b[1m\u001b[94m|\u001b[0m #[serde(default)]\n\u001b[1m\u001b[94m51\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub last_saved_at: Option,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m52\u001b[0m \u001b[1m\u001b[94m|\u001b[0m #[serde(default)]\n\u001b[1m\u001b[94m53\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub completed_at: Option,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m54\u001b[0m \u001b[1m\u001b[94m|\u001b[0m #[serde(default)]\n\u001b[1m\u001b[94m55\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub auto_save_count: Option,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `YoloMetadata` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis\n\n"} {"$message_type":"diagnostic","message":"methods `get_detections_at_time`, `metadata`, and `fps` are never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/overlay/yolo.rs","byte_start":1615,"byte_end":1630,"line_start":69,"line_end":69,"column_start":1,"column_end":16,"is_primary":false,"text":[{"text":"impl YoloLoader {","highlight_start":1,"highlight_end":16}],"label":"methods in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":2548,"byte_end":2570,"line_start":99,"line_end":99,"column_start":12,"column_end":34,"is_primary":true,"text":[{"text":" pub fn get_detections_at_time(&mut self, time_ms: u64) -> Vec {","highlight_start":12,"highlight_end":34}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":2773,"byte_end":2781,"line_start":105,"line_end":105,"column_start":12,"column_end":20,"is_primary":true,"text":[{"text":" pub fn metadata(&self) -> &YoloMetadata {","highlight_start":12,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":2854,"byte_end":2857,"line_start":109,"line_end":109,"column_start":12,"column_end":15,"is_primary":true,"text":[{"text":" pub fn fps(&self) -> f64 {","highlight_start":12,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: methods `get_detections_at_time`, `metadata`, and `fps` are never used\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/overlay/yolo.rs:99:12\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m69\u001b[0m \u001b[1m\u001b[94m|\u001b[0m impl YoloLoader {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m---------------\u001b[0m \u001b[1m\u001b[94mmethods in this implementation\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n \u001b[1m\u001b[94m99\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn get_detections_at_time(&mut self, time_ms: u64) -> Vec {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m105\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn metadata(&self) -> &YoloMetadata {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m109\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn fps(&self) -> f64 {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"methods `set_volume`, `toggle_mute`, and `is_muted` are never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/player/audio.rs","byte_start":191,"byte_end":207,"line_start":13,"line_end":13,"column_start":1,"column_end":17,"is_primary":false,"text":[{"text":"impl AudioPlayer {","highlight_start":1,"highlight_end":17}],"label":"methods in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/audio.rs","byte_start":1734,"byte_end":1744,"line_start":75,"line_end":75,"column_start":12,"column_end":22,"is_primary":true,"text":[{"text":" pub fn set_volume(&mut self, volume: f32) {","highlight_start":12,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/audio.rs","byte_start":1835,"byte_end":1846,"line_start":79,"line_end":79,"column_start":12,"column_end":23,"is_primary":true,"text":[{"text":" pub fn toggle_mute(&mut self) -> bool {","highlight_start":12,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/audio.rs","byte_start":1939,"byte_end":1947,"line_start":84,"line_end":84,"column_start":12,"column_end":20,"is_primary":true,"text":[{"text":" pub fn is_muted(&self) -> bool {","highlight_start":12,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: methods `set_volume`, `toggle_mute`, and `is_muted` are never used\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/player/audio.rs:75:12\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m13\u001b[0m \u001b[1m\u001b[94m|\u001b[0m impl AudioPlayer {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m----------------\u001b[0m \u001b[1m\u001b[94mmethods in this implementation\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m75\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn set_volume(&mut self, volume: f32) {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m79\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn toggle_mute(&mut self) -> bool {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m84\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn is_muted(&self) -> bool {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^\u001b[0m\n\n"} {"$message_type":"diagnostic","message":"field `codec` is never read","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/player/ffmpeg.rs","byte_start":196,"byte_end":205,"line_start":9,"line_end":9,"column_start":12,"column_end":21,"is_primary":false,"text":[{"text":"pub struct VideoInfo {","highlight_start":12,"highlight_end":21}],"label":"field in this struct","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/ffmpeg.rs","byte_start":327,"byte_end":332,"line_start":15,"line_end":15,"column_start":9,"column_end":14,"is_primary":true,"text":[{"text":" pub codec: String,","highlight_start":9,"highlight_end":14}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`VideoInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: field `codec` is never read\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/player/ffmpeg.rs:15:9\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct VideoInfo {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m---------\u001b[0m \u001b[1m\u001b[94mfield in this struct\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m15\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub codec: String,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `VideoInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis\n\n"} {"$message_type":"diagnostic","message":"struct `Renderer` is never constructed","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/player/renderer.rs","byte_start":115,"byte_end":123,"line_start":7,"line_end":7,"column_start":12,"column_end":20,"is_primary":true,"text":[{"text":"pub struct Renderer {","highlight_start":12,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: struct `Renderer` is never constructed\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/player/renderer.rs:7:12\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m7\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct Renderer {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^\u001b[0m\n\n"} {"$message_type":"diagnostic","message":"multiple associated items are never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/player/renderer.rs","byte_start":237,"byte_end":250,"line_start":14,"line_end":14,"column_start":1,"column_end":14,"is_primary":false,"text":[{"text":"impl Renderer {","highlight_start":1,"highlight_end":14}],"label":"associated items in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/renderer.rs","byte_start":264,"byte_end":267,"line_start":15,"line_end":15,"column_start":12,"column_end":15,"is_primary":true,"text":[{"text":" pub fn new(title: &str, width: u32, height: u32) -> Result {","highlight_start":12,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/renderer.rs","byte_start":1033,"byte_end":1045,"line_start":40,"line_end":40,"column_start":12,"column_end":24,"is_primary":true,"text":[{"text":" pub fn update_frame(&mut self, texture: &sdl2::render::Texture) -> Result<()> {","highlight_start":12,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/renderer.rs","byte_start":1194,"byte_end":1199,"line_start":45,"line_end":45,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":" pub fn clear(&mut self) {","highlight_start":12,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/renderer.rs","byte_start":1324,"byte_end":1333,"line_start":50,"line_end":50,"column_start":12,"column_end":21,"is_primary":true,"text":[{"text":" pub fn draw_bbox(&mut self, x: i32, y: i32, w: u32, h: u32, _label: &str) {","highlight_start":12,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/renderer.rs","byte_start":1756,"byte_end":1763,"line_start":60,"line_end":60,"column_start":12,"column_end":19,"is_primary":true,"text":[{"text":" pub fn present(&mut self) {","highlight_start":12,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/renderer.rs","byte_start":1826,"byte_end":1837,"line_start":64,"line_end":64,"column_start":12,"column_end":23,"is_primary":true,"text":[{"text":" pub fn poll_events(&mut self) -> Vec {","highlight_start":12,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/renderer.rs","byte_start":2106,"byte_end":2112,"line_start":74,"line_end":74,"column_start":12,"column_end":18,"is_primary":true,"text":[{"text":" pub fn canvas(&mut self) -> &mut sdl2::render::Canvas {","highlight_start":12,"highlight_end":18}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/renderer.rs","byte_start":2219,"byte_end":2224,"line_start":78,"line_end":78,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":" pub fn width(&self) -> u32 {","highlight_start":12,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/renderer.rs","byte_start":2278,"byte_end":2284,"line_start":82,"line_end":82,"column_start":12,"column_end":18,"is_primary":true,"text":[{"text":" pub fn height(&self) -> u32 {","highlight_start":12,"highlight_end":18}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: multiple associated items are never used\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/player/renderer.rs:15:12\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m14\u001b[0m \u001b[1m\u001b[94m|\u001b[0m impl Renderer {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m-------------\u001b[0m \u001b[1m\u001b[94massociated items in this implementation\u001b[0m\n\u001b[1m\u001b[94m15\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn new(title: &str, width: u32, height: u32) -> Result {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m40\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn update_frame(&mut self, texture: &sdl2::render::Texture) -> Result<()> {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m45\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn clear(&mut self) {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m50\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn draw_bbox(&mut self, x: i32, y: i32, w: u32, h: u32, _label: &str) {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m60\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn present(&mut self) {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m64\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn poll_events(&mut self) -> Vec {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m74\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn canvas(&mut self) -> &mut sdl2::render::Canvas {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m78\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn width(&self) -> u32 {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m82\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn height(&self) -> u32 {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^\u001b[0m\n\n"} @@ -24,4 +26,4 @@ {"$message_type":"diagnostic","message":"struct `DetectionResponse` is never constructed","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/web/bridge.rs","byte_start":1341,"byte_end":1358,"line_start":67,"line_end":67,"column_start":12,"column_end":29,"is_primary":true,"text":[{"text":"pub struct DetectionResponse {","highlight_start":12,"highlight_end":29}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: struct `DetectionResponse` is never constructed\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/web/bridge.rs:67:12\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m67\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct DetectionResponse {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} {"$message_type":"diagnostic","message":"struct `WebBridge` is never constructed","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/web/bridge.rs","byte_start":1496,"byte_end":1505,"line_start":76,"line_end":76,"column_start":12,"column_end":21,"is_primary":true,"text":[{"text":"pub struct WebBridge;","highlight_start":12,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: struct `WebBridge` is never constructed\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/web/bridge.rs:76:12\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m76\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct WebBridge;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^\u001b[0m\n\n"} {"$message_type":"diagnostic","message":"associated functions `new`, `encode_message`, `decode_message`, and `encode_response` are never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/web/bridge.rs","byte_start":1508,"byte_end":1522,"line_start":78,"line_end":78,"column_start":1,"column_end":15,"is_primary":false,"text":[{"text":"impl WebBridge {","highlight_start":1,"highlight_end":15}],"label":"associated functions in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/web/bridge.rs","byte_start":1536,"byte_end":1539,"line_start":79,"line_end":79,"column_start":12,"column_end":15,"is_primary":true,"text":[{"text":" pub fn new() -> Self {","highlight_start":12,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/web/bridge.rs","byte_start":1583,"byte_end":1597,"line_start":83,"line_end":83,"column_start":12,"column_end":26,"is_primary":true,"text":[{"text":" pub fn encode_message(msg: &BridgeMessage) -> String {","highlight_start":12,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/web/bridge.rs","byte_start":1704,"byte_end":1718,"line_start":87,"line_end":87,"column_start":12,"column_end":26,"is_primary":true,"text":[{"text":" pub fn decode_message(raw: &str) -> Option {","highlight_start":12,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/web/bridge.rs","byte_start":1814,"byte_end":1829,"line_start":91,"line_end":91,"column_start":12,"column_end":27,"is_primary":true,"text":[{"text":" pub fn encode_response(resp: &BridgeResponse) -> String {","highlight_start":12,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: associated functions `new`, `encode_message`, `decode_message`, and `encode_response` are never used\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/web/bridge.rs:79:12\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m78\u001b[0m \u001b[1m\u001b[94m|\u001b[0m impl WebBridge {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m--------------\u001b[0m \u001b[1m\u001b[94massociated functions in this implementation\u001b[0m\n\u001b[1m\u001b[94m79\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn new() -> Self {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m83\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn encode_message(msg: &BridgeMessage) -> String {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m87\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn decode_message(raw: &str) -> Option {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m91\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn encode_response(resp: &BridgeResponse) -> String {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"26 warnings emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: 26 warnings emitted\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"28 warnings emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: 28 warnings emitted\u001b[0m\n\n"} diff --git a/target/release/.fingerprint/momentry_playground-f7686bde04eb7bb7/dep-lib-momentry_playground b/target/release/.fingerprint/momentry_playground-f7686bde04eb7bb7/dep-lib-momentry_playground index 5eb7d7a..290af3f 100644 Binary files a/target/release/.fingerprint/momentry_playground-f7686bde04eb7bb7/dep-lib-momentry_playground and b/target/release/.fingerprint/momentry_playground-f7686bde04eb7bb7/dep-lib-momentry_playground differ diff --git a/target/release/deps/libmomentry_playground-f7686bde04eb7bb7.rlib b/target/release/deps/libmomentry_playground-f7686bde04eb7bb7.rlib index faa9c16..370f49a 100644 Binary files a/target/release/deps/libmomentry_playground-f7686bde04eb7bb7.rlib and b/target/release/deps/libmomentry_playground-f7686bde04eb7bb7.rlib differ diff --git a/target/release/deps/libmomentry_playground-f7686bde04eb7bb7.rmeta b/target/release/deps/libmomentry_playground-f7686bde04eb7bb7.rmeta index 54eaa1f..8d0954b 100644 Binary files a/target/release/deps/libmomentry_playground-f7686bde04eb7bb7.rmeta and b/target/release/deps/libmomentry_playground-f7686bde04eb7bb7.rmeta differ diff --git a/target/release/deps/momentry-d0e10ec51fcac34b b/target/release/deps/momentry-d0e10ec51fcac34b index 3c667c1..d005089 100755 Binary files a/target/release/deps/momentry-d0e10ec51fcac34b and b/target/release/deps/momentry-d0e10ec51fcac34b differ diff --git a/target/release/deps/momentry-d0e10ec51fcac34b.d b/target/release/deps/momentry-d0e10ec51fcac34b.d index ce46756..e4e04c8 100644 --- a/target/release/deps/momentry-d0e10ec51fcac34b.d +++ b/target/release/deps/momentry-d0e10ec51fcac34b.d @@ -1,6 +1,6 @@ -/Users/accusys/momentry_playground/target/release/deps/momentry-d0e10ec51fcac34b.d: src/main.rs src/config.rs src/overlay/mod.rs src/overlay/asr.rs src/overlay/chunk.rs src/overlay/yolo.rs src/player/mod.rs src/player/ffmpeg.rs src/player/renderer.rs src/player/state.rs src/player/video.rs src/web/mod.rs src/web/bridge.rs +/Users/accusys/momentry_playground/target/release/deps/momentry-d0e10ec51fcac34b.d: src/main.rs src/config.rs src/overlay/mod.rs src/overlay/asr.rs src/overlay/chunk.rs src/overlay/yolo.rs src/player/mod.rs src/player/audio.rs src/player/ffmpeg.rs src/player/renderer.rs src/player/state.rs src/player/video.rs src/web/mod.rs src/web/bridge.rs -/Users/accusys/momentry_playground/target/release/deps/momentry-d0e10ec51fcac34b: src/main.rs src/config.rs src/overlay/mod.rs src/overlay/asr.rs src/overlay/chunk.rs src/overlay/yolo.rs src/player/mod.rs src/player/ffmpeg.rs src/player/renderer.rs src/player/state.rs src/player/video.rs src/web/mod.rs src/web/bridge.rs +/Users/accusys/momentry_playground/target/release/deps/momentry-d0e10ec51fcac34b: src/main.rs src/config.rs src/overlay/mod.rs src/overlay/asr.rs src/overlay/chunk.rs src/overlay/yolo.rs src/player/mod.rs src/player/audio.rs src/player/ffmpeg.rs src/player/renderer.rs src/player/state.rs src/player/video.rs src/web/mod.rs src/web/bridge.rs src/main.rs: src/config.rs: @@ -9,6 +9,7 @@ src/overlay/asr.rs: src/overlay/chunk.rs: src/overlay/yolo.rs: src/player/mod.rs: +src/player/audio.rs: src/player/ffmpeg.rs: src/player/renderer.rs: src/player/state.rs: diff --git a/target/release/deps/momentry_playground-f7686bde04eb7bb7.d b/target/release/deps/momentry_playground-f7686bde04eb7bb7.d index f027e3e..47f77f9 100644 --- a/target/release/deps/momentry_playground-f7686bde04eb7bb7.d +++ b/target/release/deps/momentry_playground-f7686bde04eb7bb7.d @@ -1,19 +1,20 @@ -/Users/accusys/momentry_playground/target/release/deps/momentry_playground-f7686bde04eb7bb7.d: src/lib.rs src/player/mod.rs src/player/ffmpeg.rs src/player/renderer.rs src/player/state.rs src/player/video.rs src/overlay/mod.rs src/overlay/asr.rs src/overlay/chunk.rs src/overlay/yolo.rs src/web/mod.rs src/web/bridge.rs src/config.rs +/Users/accusys/momentry_playground/target/release/deps/momentry_playground-f7686bde04eb7bb7.d: src/lib.rs src/config.rs src/overlay/mod.rs src/overlay/asr.rs src/overlay/chunk.rs src/overlay/yolo.rs src/player/mod.rs src/player/audio.rs src/player/ffmpeg.rs src/player/renderer.rs src/player/state.rs src/player/video.rs src/web/mod.rs src/web/bridge.rs -/Users/accusys/momentry_playground/target/release/deps/libmomentry_playground-f7686bde04eb7bb7.rlib: src/lib.rs src/player/mod.rs src/player/ffmpeg.rs src/player/renderer.rs src/player/state.rs src/player/video.rs src/overlay/mod.rs src/overlay/asr.rs src/overlay/chunk.rs src/overlay/yolo.rs src/web/mod.rs src/web/bridge.rs src/config.rs +/Users/accusys/momentry_playground/target/release/deps/libmomentry_playground-f7686bde04eb7bb7.rlib: src/lib.rs src/config.rs src/overlay/mod.rs src/overlay/asr.rs src/overlay/chunk.rs src/overlay/yolo.rs src/player/mod.rs src/player/audio.rs src/player/ffmpeg.rs src/player/renderer.rs src/player/state.rs src/player/video.rs src/web/mod.rs src/web/bridge.rs -/Users/accusys/momentry_playground/target/release/deps/libmomentry_playground-f7686bde04eb7bb7.rmeta: src/lib.rs src/player/mod.rs src/player/ffmpeg.rs src/player/renderer.rs src/player/state.rs src/player/video.rs src/overlay/mod.rs src/overlay/asr.rs src/overlay/chunk.rs src/overlay/yolo.rs src/web/mod.rs src/web/bridge.rs src/config.rs +/Users/accusys/momentry_playground/target/release/deps/libmomentry_playground-f7686bde04eb7bb7.rmeta: src/lib.rs src/config.rs src/overlay/mod.rs src/overlay/asr.rs src/overlay/chunk.rs src/overlay/yolo.rs src/player/mod.rs src/player/audio.rs src/player/ffmpeg.rs src/player/renderer.rs src/player/state.rs src/player/video.rs src/web/mod.rs src/web/bridge.rs src/lib.rs: -src/player/mod.rs: -src/player/ffmpeg.rs: -src/player/renderer.rs: -src/player/state.rs: -src/player/video.rs: +src/config.rs: src/overlay/mod.rs: src/overlay/asr.rs: src/overlay/chunk.rs: src/overlay/yolo.rs: +src/player/mod.rs: +src/player/audio.rs: +src/player/ffmpeg.rs: +src/player/renderer.rs: +src/player/state.rs: +src/player/video.rs: src/web/mod.rs: src/web/bridge.rs: -src/config.rs: diff --git a/target/release/libmomentry_playground.d b/target/release/libmomentry_playground.d index 2ca26f9..26111eb 100644 --- a/target/release/libmomentry_playground.d +++ b/target/release/libmomentry_playground.d @@ -1 +1 @@ -/Users/accusys/momentry_playground/target/release/libmomentry_playground.rlib: /Users/accusys/momentry_playground/src/config.rs /Users/accusys/momentry_playground/src/lib.rs /Users/accusys/momentry_playground/src/overlay/asr.rs /Users/accusys/momentry_playground/src/overlay/chunk.rs /Users/accusys/momentry_playground/src/overlay/mod.rs /Users/accusys/momentry_playground/src/overlay/yolo.rs /Users/accusys/momentry_playground/src/player/ffmpeg.rs /Users/accusys/momentry_playground/src/player/mod.rs /Users/accusys/momentry_playground/src/player/renderer.rs /Users/accusys/momentry_playground/src/player/state.rs /Users/accusys/momentry_playground/src/player/video.rs /Users/accusys/momentry_playground/src/web/bridge.rs /Users/accusys/momentry_playground/src/web/mod.rs +/Users/accusys/momentry_playground/target/release/libmomentry_playground.rlib: /Users/accusys/momentry_playground/src/config.rs /Users/accusys/momentry_playground/src/lib.rs /Users/accusys/momentry_playground/src/overlay/asr.rs /Users/accusys/momentry_playground/src/overlay/chunk.rs /Users/accusys/momentry_playground/src/overlay/mod.rs /Users/accusys/momentry_playground/src/overlay/yolo.rs /Users/accusys/momentry_playground/src/player/audio.rs /Users/accusys/momentry_playground/src/player/ffmpeg.rs /Users/accusys/momentry_playground/src/player/mod.rs /Users/accusys/momentry_playground/src/player/renderer.rs /Users/accusys/momentry_playground/src/player/state.rs /Users/accusys/momentry_playground/src/player/video.rs /Users/accusys/momentry_playground/src/web/bridge.rs /Users/accusys/momentry_playground/src/web/mod.rs diff --git a/target/release/libmomentry_playground.rlib b/target/release/libmomentry_playground.rlib index faa9c16..370f49a 100644 Binary files a/target/release/libmomentry_playground.rlib and b/target/release/libmomentry_playground.rlib differ diff --git a/target/release/momentry b/target/release/momentry index 3c667c1..d005089 100755 Binary files a/target/release/momentry and b/target/release/momentry differ diff --git a/target/release/momentry.d b/target/release/momentry.d index 7a04c39..3a4a623 100644 --- a/target/release/momentry.d +++ b/target/release/momentry.d @@ -1 +1 @@ -/Users/accusys/momentry_playground/target/release/momentry: /Users/accusys/momentry_playground/src/config.rs /Users/accusys/momentry_playground/src/lib.rs /Users/accusys/momentry_playground/src/main.rs /Users/accusys/momentry_playground/src/overlay/asr.rs /Users/accusys/momentry_playground/src/overlay/chunk.rs /Users/accusys/momentry_playground/src/overlay/mod.rs /Users/accusys/momentry_playground/src/overlay/yolo.rs /Users/accusys/momentry_playground/src/player/ffmpeg.rs /Users/accusys/momentry_playground/src/player/mod.rs /Users/accusys/momentry_playground/src/player/renderer.rs /Users/accusys/momentry_playground/src/player/state.rs /Users/accusys/momentry_playground/src/player/video.rs /Users/accusys/momentry_playground/src/web/bridge.rs /Users/accusys/momentry_playground/src/web/mod.rs +/Users/accusys/momentry_playground/target/release/momentry: /Users/accusys/momentry_playground/src/config.rs /Users/accusys/momentry_playground/src/lib.rs /Users/accusys/momentry_playground/src/main.rs /Users/accusys/momentry_playground/src/overlay/asr.rs /Users/accusys/momentry_playground/src/overlay/chunk.rs /Users/accusys/momentry_playground/src/overlay/mod.rs /Users/accusys/momentry_playground/src/overlay/yolo.rs /Users/accusys/momentry_playground/src/player/audio.rs /Users/accusys/momentry_playground/src/player/ffmpeg.rs /Users/accusys/momentry_playground/src/player/mod.rs /Users/accusys/momentry_playground/src/player/renderer.rs /Users/accusys/momentry_playground/src/player/state.rs /Users/accusys/momentry_playground/src/player/video.rs /Users/accusys/momentry_playground/src/web/bridge.rs /Users/accusys/momentry_playground/src/web/mod.rs