use crate::*;
use ae_sys::*;
define_suite!(
SoundDataSuite,
AEGP_SoundDataSuite1,
kAEGPSoundDataSuite,
kAEGPSoundDataVersion1
);
impl SoundDataSuite {
pub fn new() -> Result<Self, Error> {
crate::Suite::new()
}
pub fn new_sound_data(&self, sound_format: &AEGP_SoundDataFormat) -> Result<SoundDataHandle, Error> {
Ok(SoundDataHandle::from_raw_owned(
call_suite_fn_single!(self, AEGP_NewSoundData -> AEGP_SoundDataH, sound_format)?,
))
}
pub fn dispose_sound_data(&self, sound_data: impl AsPtr<AEGP_SoundDataH>) -> Result<(), Error> {
call_suite_fn!(self, AEGP_DisposeSoundData, sound_data.as_ptr())
}
pub fn sound_data_format(&self, sound_data: impl AsPtr<AEGP_SoundDataH>) -> Result<AEGP_SoundDataFormat, Error> {
call_suite_fn_single!(self, AEGP_GetSoundDataFormat -> AEGP_SoundDataFormat, sound_data.as_ptr())
}
pub fn lock_sound_data_samples(&self, sound_data: impl AsPtr<AEGP_SoundDataH>) -> Result<*mut std::ffi::c_void, Error> {
call_suite_fn_single!(self, AEGP_LockSoundDataSamples -> *mut std::ffi::c_void, sound_data.as_ptr())
}
pub fn unlock_sound_data_samples(&self, sound_data: impl AsPtr<AEGP_SoundDataH>) -> Result<(), Error> {
call_suite_fn!(self, AEGP_UnlockSoundDataSamples, sound_data.as_ptr())
}
pub fn num_samples(&self, sound_data: impl AsPtr<AEGP_SoundDataH>) -> Result<i32, Error> {
Ok(call_suite_fn_single!(self, AEGP_GetNumSamples -> A_long, sound_data.as_ptr())?)
}
}
register_handle!(AEGP_SoundDataH);
define_owned_handle_wrapper!(SoundDataHandle, AEGP_SoundDataH);
impl Drop for SoundDataHandle {
fn drop(&mut self) {
if let Ok(suite) = SoundDataSuite::new() {
suite.dispose_sound_data(self.as_ptr()).unwrap();
}
}
}