diff --git a/src/config.rs b/src/config.rs index f0dab69..3f03f33 100644 --- a/src/config.rs +++ b/src/config.rs @@ -19,6 +19,9 @@ pub struct Config { #[arg(short = 'y', long = "yolo", help = "YOLO JSON file path")] pub yolo: Option, + #[arg(short = 'c', long = "chunks", help = "Chunk/Cut JSON file path")] + pub chunks: Option, + #[arg( short = 'w', long = "width", diff --git a/src/main.rs b/src/main.rs index bff1ea3..df32df7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -15,7 +15,7 @@ mod player; mod web; use config::Config; -use overlay::{AsrLoader, YoloLoader}; +use overlay::{AsrLoader, ChunkLoader, YoloLoader}; use player::ffmpeg::FFmpegDecoder; use player::state::{PlaybackState, PlayerState}; @@ -63,6 +63,7 @@ fn run(config: &Config) -> Result<()> { let mut video_info = None; let mut asr: Option = None; let mut yolo: Option = None; + let mut chunks: Option = None; let mut is_fullscreen = false; if let Some(ref video_path) = config.video { @@ -111,6 +112,19 @@ fn run(config: &Config) -> Result<()> { } } + if let Some(ref chunks_path) = config.chunks { + info!("Loading Chunks: {:?}", chunks_path); + match ChunkLoader::load(Path::new(chunks_path)) { + Ok(loader) => { + info!("Chunks loaded: {} scenes", loader.scene_count()); + chunks = Some(loader); + } + Err(e) => { + error!("Failed to load Chunks: {}", e); + } + } + } + let mut player_state = PlayerState::default(); if let Some(ref info) = video_info { player_state.total_frames = info.frame_count; @@ -510,6 +524,58 @@ fn run(config: &Config) -> Result<()> { progress_width, progress_bar_height as u32, )); + + if player_state.show_chunks { + if let Some(ref chunk_loader) = chunks { + let bar_start = 10i32; + let bar_width = config.width as i32 - 20; + let boundaries = chunk_loader.get_scene_boundaries(); + for &boundary_frame in &boundaries { + let ratio = boundary_frame as f64 / player_state.total_frames as f64; + let x_pos = (bar_start + (bar_width as f64 * ratio) as i32) + .min(bar_start + bar_width - 1); + if x_pos > bar_start && x_pos < bar_start + bar_width { + canvas.set_draw_color(sdl2::pixels::Color::RGB(255, 200, 50)); + let _ = canvas.fill_rect(Rect::new( + x_pos, + progress_y - 2, + 2, + (progress_bar_height + 4) as u32, + )); + } + } + if let Some(current_scene) = + chunk_loader.get_current_scene(player_state.current_frame) + { + if let Some(ref font) = font { + let scene_text = format!("Scene {}", current_scene.scene_number); + if let Ok(surface) = font + .render(&scene_text) + .solid(sdl2::pixels::Color::RGB(255, 200, 50)) + { + if let Ok(tex) = + texture_creator.create_texture_from_surface(&surface) + { + let rect = Rect::new( + bar_start + bar_width - surface.width() as i32 - 10, + progress_y - 25, + surface.width(), + surface.height(), + ); + canvas.set_draw_color(sdl2::pixels::Color::RGBA(0, 0, 0, 180)); + let _ = canvas.fill_rect(Rect::new( + rect.x() - 4, + rect.y() - 2, + rect.width() + 8, + rect.height() + 4, + )); + canvas.copy(&tex, None, Some(rect)).ok(); + } + } + } + } + } + } } canvas.present(); diff --git a/src/overlay/chunk.rs b/src/overlay/chunk.rs new file mode 100644 index 0000000..a66c65a --- /dev/null +++ b/src/overlay/chunk.rs @@ -0,0 +1,52 @@ +use anyhow::Context; +use log::info; +use serde::Deserialize; +use std::fs; +use std::path::Path; + +#[derive(Debug, Deserialize)] +pub struct CutData { + pub frame_count: u64, + pub fps: f64, + pub scenes: Vec, +} + +#[derive(Debug, Deserialize, Clone)] +pub struct Scene { + pub scene_number: u32, + pub start_frame: u64, + pub end_frame: u64, + pub start_time: f64, + pub end_time: f64, +} + +#[derive(Debug)] +pub struct ChunkLoader { + pub data: CutData, +} + +impl ChunkLoader { + pub fn load(path: &Path) -> anyhow::Result { + let content = fs::read_to_string(path) + .with_context(|| format!("Failed to read chunk file: {:?}", path))?; + let data: CutData = serde_json::from_str(&content) + .with_context(|| format!("Failed to parse chunk JSON: {:?}", path))?; + info!("Loaded {} scenes from {:?}", data.scenes.len(), path); + Ok(Self { data }) + } + + pub fn scene_count(&self) -> usize { + self.data.scenes.len() + } + + pub fn get_scene_boundaries(&self) -> Vec { + self.data.scenes.iter().map(|s| s.start_frame).collect() + } + + pub fn get_current_scene(&self, frame: u64) -> Option<&Scene> { + self.data + .scenes + .iter() + .find(|s| frame >= s.start_frame && frame <= s.end_frame) + } +} diff --git a/src/overlay/mod.rs b/src/overlay/mod.rs index c6563a6..c7a2394 100644 --- a/src/overlay/mod.rs +++ b/src/overlay/mod.rs @@ -1,9 +1,11 @@ //! Overlay module //! -//! ASR subtitle and YOLO bbox overlay management +//! ASR subtitle, YOLO bbox, and chunk marker overlay management pub mod asr; +pub mod chunk; pub mod yolo; pub use asr::AsrLoader; +pub use chunk::ChunkLoader; pub use yolo::YoloLoader; diff --git a/target/release/.fingerprint/momentry_playground-d0e10ec51fcac34b/dep-bin-momentry b/target/release/.fingerprint/momentry_playground-d0e10ec51fcac34b/dep-bin-momentry index 20cec89..d93d4d5 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 169bae9..8478a6e 100644 --- a/target/release/.fingerprint/momentry_playground-d0e10ec51fcac34b/output-bin-momentry +++ b/target/release/.fingerprint/momentry_playground-d0e10ec51fcac34b/output-bin-momentry @@ -2,9 +2,10 @@ {"$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: `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":"unused variable: `font_size`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":3856,"byte_end":3865,"line_start":124,"line_end":124,"column_start":9,"column_end":18,"is_primary":true,"text":[{"text":" let font_size = 18;","highlight_start":9,"highlight_end":18}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":3856,"byte_end":3865,"line_start":124,"line_end":124,"column_start":9,"column_end":18,"is_primary":true,"text":[{"text":" let font_size = 18;","highlight_start":9,"highlight_end":18}],"label":null,"suggested_replacement":"_font_size","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused variable: `font_size`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/main.rs:124:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m124\u001b[0m \u001b[1m\u001b[94m|\u001b[0m let font_size = 18;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^\u001b[0m \u001b[1m\u001b[33mhelp: if this is intentional, prefix it with an underscore: `_font_size`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default\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"} +{"$message_type":"diagnostic","message":"fields `frame_count` and `fps` are never read","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/overlay/chunk.rs","byte_start":136,"byte_end":143,"line_start":8,"line_end":8,"column_start":12,"column_end":19,"is_primary":false,"text":[{"text":"pub struct CutData {","highlight_start":12,"highlight_end":19}],"label":"fields in this struct","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/chunk.rs","byte_start":154,"byte_end":165,"line_start":9,"line_end":9,"column_start":9,"column_end":20,"is_primary":true,"text":[{"text":" pub frame_count: u64,","highlight_start":9,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/chunk.rs","byte_start":180,"byte_end":183,"line_start":10,"line_end":10,"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}],"children":[{"message":"`CutData` has a derived impl for the trait `Debug`, but this is 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_count` and `fps` are never read\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/overlay/chunk.rs:9:9\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct CutData {\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[94m9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub frame_count: u64,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m10\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[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `CutData` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis\n\n"} +{"$message_type":"diagnostic","message":"fields `start_time` and `end_time` are never read","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/overlay/chunk.rs","byte_start":269,"byte_end":274,"line_start":15,"line_end":15,"column_start":12,"column_end":17,"is_primary":false,"text":[{"text":"pub struct Scene {","highlight_start":12,"highlight_end":17}],"label":"fields in this struct","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/chunk.rs","byte_start":362,"byte_end":372,"line_start":19,"line_end":19,"column_start":9,"column_end":19,"is_primary":true,"text":[{"text":" pub start_time: f64,","highlight_start":9,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/chunk.rs","byte_start":387,"byte_end":395,"line_start":20,"line_end":20,"column_start":9,"column_end":17,"is_primary":true,"text":[{"text":" pub end_time: f64,","highlight_start":9,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`Scene` 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 `start_time` and `end_time` are never read\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/overlay/chunk.rs:19:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m15\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct Scene {\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[94m...\u001b[0m\n\u001b[1m\u001b[94m19\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub start_time: f64,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m20\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub end_time: f64,\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: `Scene` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis\n\n"} {"$message_type":"diagnostic","message":"field `class_id` is never read","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/overlay/yolo.rs","byte_start":292,"byte_end":301,"line_start":13,"line_end":13,"column_start":12,"column_end":21,"is_primary":false,"text":[{"text":"pub struct Detection {","highlight_start":12,"highlight_end":21}],"label":"field in this struct","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":312,"byte_end":320,"line_start":14,"line_end":14,"column_start":9,"column_end":17,"is_primary":true,"text":[{"text":" pub class_id: u32,","highlight_start":9,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`Detection` 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 `class_id` is never read\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/overlay/yolo.rs:14:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m13\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct Detection {\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[94m14\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub class_id: 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[94m= \u001b[0m\u001b[1mnote\u001b[0m: `Detection` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis\n\n"} {"$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"} @@ -23,4 +24,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":"25 warnings emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: 25 warnings emitted\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"} 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 79caf0c..5eb7d7a 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 586a226..faa9c16 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 ec2c2a2..54eaa1f 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 cb7b922..3c667c1 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 a3ee0d5..ce46756 100644 --- a/target/release/deps/momentry-d0e10ec51fcac34b.d +++ b/target/release/deps/momentry-d0e10ec51fcac34b.d @@ -1,11 +1,12 @@ -/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/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/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/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/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: src/overlay/mod.rs: src/overlay/asr.rs: +src/overlay/chunk.rs: src/overlay/yolo.rs: src/player/mod.rs: src/player/ffmpeg.rs: diff --git a/target/release/deps/momentry_playground-f7686bde04eb7bb7.d b/target/release/deps/momentry_playground-f7686bde04eb7bb7.d index f5fbd22..f027e3e 100644 --- a/target/release/deps/momentry_playground-f7686bde04eb7bb7.d +++ b/target/release/deps/momentry_playground-f7686bde04eb7bb7.d @@ -1,8 +1,8 @@ -/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/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/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/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/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/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/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/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/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 src/lib.rs: src/player/mod.rs: @@ -12,6 +12,7 @@ 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: diff --git a/target/release/libmomentry_playground.d b/target/release/libmomentry_playground.d index b804e7b..2ca26f9 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/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/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 586a226..faa9c16 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 cb7b922..3c667c1 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 d8a7207..7a04c39 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/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/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