use crate::ffi::system::{sfStdString, sfStdStringVector};
pub use crate::ffi::*;
use super::system::sfInputStream;
decl_opaque! {
sfSoundBufferRecorder;
sfSoundRecorder;
sfMusic;
sfSound;
sfSoundStream;
}
pub type sfSoundBuffer = crate::audio::SoundBuffer;
#[repr(C)]
pub struct sfSoundStreamChunk {
pub samples: *mut i16,
pub sample_count: c_uint,
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub enum sfSoundStatus {
Stopped,
Paused,
Playing,
}
type sfMusicStatus = sfSoundStatus;
type sfSoundStreamStatus = sfSoundStatus;
#[repr(C)]
pub struct sfTimeSpan {
pub offset: i64,
pub length: i64,
}
type sfSoundRecorderStartCallback = Option<unsafe extern "C" fn(user_data: *mut c_void) -> bool>;
type sfSoundRecorderProcessCallback =
Option<unsafe extern "C" fn(samples: *const i16, len: usize, user_data: *mut c_void) -> bool>;
type sfSoundRecorderStopCallback = Option<unsafe extern "C" fn(user_data: *mut c_void)>;
type sfSoundStreamGetDataCallback =
Option<unsafe extern "C" fn(chunk: *mut sfSoundStreamChunk, user_data: *mut c_void) -> bool>;
type sfSoundStreamSeekCallback = Option<unsafe extern "C" fn(pos: i64, user_data: *mut c_void)>;
include!("audio_bindgen.rs");