mirror of
https://github.com/jamiepine/voicebox.git
synced 2026-09-16 13:20:39 -07:00
- Removed console logging from the useSystemAudioCapture hook to streamline the code. - Introduced error handling in the audio capture state to capture and report errors more effectively. - Updated the cleanup logic to ensure proper handling of errors during audio capture on unmount. - Enhanced error messages for better clarity when audio capture fails.
44 lines
1.2 KiB
Rust
44 lines
1.2 KiB
Rust
#[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<Mutex<Vec<f32>>>,
|
|
pub sample_rate: Arc<Mutex<u32>>,
|
|
pub channels: Arc<Mutex<u16>>,
|
|
pub stop_tx: Arc<Mutex<Option<tokio::sync::mpsc::Sender<()>>>>,
|
|
pub error: Arc<Mutex<Option<String>>>,
|
|
#[cfg(target_os = "macos")]
|
|
pub stream: Arc<Mutex<Option<SCStream>>>,
|
|
}
|
|
|
|
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;
|
|
}
|
|
}
|