use crate::multimedia::{
audio::{AudioFormat, AudioOutput},
AudioSpec, MultimediaError, Result,
};
pub struct WasmAudio {
spec: Option<AudioSpec>,
format: Option<AudioFormat>,
volume: f32,
paused: bool,
}
impl WasmAudio {
pub fn new() -> Result<Self> {
Ok(Self {
spec: None,
format: None,
volume: 1.0,
paused: false,
})
}
}
impl AudioOutput for WasmAudio {
fn initialize(&mut self, spec: AudioSpec, format: AudioFormat) -> Result<()> {
self.spec = Some(spec);
self.format = Some(format);
Ok(())
}
fn queue_samples(&mut self, _samples: &[u8]) -> Result<()> {
Ok(())
}
fn get_queued_size(&self) -> usize {
0 }
fn clear_queue(&mut self) -> Result<()> {
Ok(())
}
fn set_volume(&mut self, volume: f32) -> Result<()> {
self.volume = volume.clamp(0.0, 1.0);
Ok(())
}
fn get_volume(&self) -> f32 {
self.volume
}
fn pause(&mut self, paused: bool) -> Result<()> {
self.paused = paused;
Ok(())
}
fn is_paused(&self) -> bool {
self.paused
}
fn get_spec(&self) -> Option<&AudioSpec> {
self.spec.as_ref()
}
}