(
_in_ref_con: *mut std::ffi::c_void,
_io_action_flags: *mut u32,
_in_time_stamp: *const std::ffi::c_void,
_in_bus_number: u32,
in_number_frames: u32,
io_data: *mut AudioBuffer
| 221 | unsafe impl Sync for AudioUnitInstance {} |
| 222 | |
| 223 | unsafe extern "C" fn audio_render_callback( |
| 224 | _in_ref_con: *mut std::ffi::c_void, |
| 225 | _io_action_flags: *mut u32, |
| 226 | _in_time_stamp: *const std::ffi::c_void, |
| 227 | _in_bus_number: u32, |
| 228 | in_number_frames: u32, |
| 229 | io_data: *mut AudioBufferList, |
| 230 | ) -> OSStatus { |
| 231 | let buffer_list = &mut *io_data; |
| 232 | let buffer = &mut buffer_list.buffers[0]; |
| 233 | let num_samples = in_number_frames as usize * 2; // stereo |
| 234 | let output = std::slice::from_raw_parts_mut( |
| 235 | buffer.data as *mut f32, |
| 236 | num_samples, |
| 237 | ); |
| 238 | |
| 239 | ENGINE.get_mut().map(|eng| { |
| 240 | eng.audio.mix_output(output); |
| 241 | }); |
| 242 | |
| 243 | 0 // noErr |
| 244 | } |
| 245 | |
| 246 | // ============================================================ |
| 247 | // FFI entry points |
nothing calls this directly
no test coverage detected