use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct StreamConfig {
pub channels: u16,
pub sample_format: String,
pub sample_rate: u32,
pub buffer_size: Option<BufferSizeRange>,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct BufferSizeRange {
pub min_frames: u32,
pub max_frames: u32,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct AudioDevice {
pub id: String,
pub name: String,
pub selected_stream_config: Option<StreamConfig>,
pub error: Option<String>,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct AudioDeviceList {
pub devices: Vec<AudioDevice>,
#[serde(rename = "default_id")]
pub default_id: String,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct LoadedAudio {
pub channels: usize,
pub sample_rate: u32,
pub duration_seconds: f64,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct PlaybackProgress {
pub position_seconds: f64,
pub duration_seconds: f64,
pub is_playing: bool,
}