use std::sync::Arc; use serde::{Deserialize, Serialize}; #[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)] pub struct WindowMeta { pub id: u64, pub title: Option, pub app_id: Option, pub pid: Option, pub workspace_id: Option, pub focused: bool, } #[derive(Clone, Debug, PartialEq, Eq)] pub enum WindowEvent { Upsert(WindowMeta), Remove(u64), } #[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)] #[serde(rename_all = "UPPERCASE")] pub enum PixelFormat { Bgra8888, } #[derive(Clone, Debug)] pub struct CpuFrame { pub window_id: u64, pub sequence: u64, pub monotonic_ns: u64, pub width: u32, pub height: u32, pub stride: u32, pub format: PixelFormat, pub pixels: Arc<[u8]>, } #[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)] #[serde(rename_all = "kebab-case")] pub enum CaptureStatus { Starting, Streaming, Backoff, Stopped, Error, } #[derive(Clone, Debug, Serialize)] pub struct WindowSnapshot { pub id: u64, pub title: Option, pub app_id: Option, pub pid: Option, pub workspace_id: Option, pub focused: bool, pub status: CaptureStatus, pub width: Option, pub height: Option, pub sequence: u64, pub monotonic_ns: Option, pub error: Option, }