#[cfg(target_os = "macos")] mod macos; #[cfg(target_os = "windows")] mod windows; #[cfg(target_os = "macos")] pub use macos::*; #[cfg(target_os = "windows")] pub use windows::*; use std::sync::{Arc, Mutex}; #[cfg(target_os = "macos")] use screencapturekit::stream::sc_stream::SCStream; pub struct AudioCaptureState { pub samples: Arc>>, pub sample_rate: Arc>, pub channels: Arc>, pub stop_tx: Arc>>>, pub error: Arc>>, #[cfg(target_os = "macos")] pub stream: Arc>>, } impl AudioCaptureState { pub fn new() -> Self { Self { samples: Arc::new(Mutex::new(Vec::new())), sample_rate: Arc::new(Mutex::new(44100)), channels: Arc::new(Mutex::new(2)), stop_tx: Arc::new(Mutex::new(None)), error: Arc::new(Mutex::new(None)), #[cfg(target_os = "macos")] stream: Arc::new(Mutex::new(None)), } } pub fn reset(&self) { *self.samples.lock().unwrap() = Vec::new(); *self.error.lock().unwrap() = None; } }