use crate::prelude::*;
use soloud_sys::soloud as ffi;
#[derive(Debug)]
pub struct Queue {
inner: *mut ffi::Queue,
}
crate::macros::audio::impl_audio_ext!(Queue);
impl Queue {
pub fn play<T: AudioExt>(&self, sound: &T) -> Result<(), SoloudError> {
ffi_call!(ffi::Queue_play(self.inner, sound.inner()))
}
pub fn get_count(&self) -> u32 {
unsafe { ffi::Queue_getQueueCount(self.inner) }
}
pub fn is_currently_playing<AS: AudioExt>(&self, sound: &AS) -> bool {
unsafe { ffi::Queue_isCurrentlyPlaying(self.inner, sound.inner()) != 0 }
}
pub fn set_params_from_audio_source<AS: AudioExt>(
&mut self,
sound: &AS,
) -> Result<(), SoloudError> {
ffi_call!(ffi::Queue_setParamsFromAudioSource(
self.inner,
sound.inner()
))
}
pub fn set_params(&mut self, samplerate: f32) -> Result<(), SoloudError> {
ffi_call!(ffi::Queue_setParams(self.inner, samplerate))
}
pub fn set_params_ex(&mut self, samplerate: f32, channels: u32) -> Result<(), SoloudError> {
ffi_call!(ffi::Queue_setParamsEx(self.inner, samplerate, channels))
}
}