in src/backend/mod.rs [1377:1400]
fn create_typed_audiounit(sub_type: c_uint) -> Result<AudioUnit> {
let desc = AudioComponentDescription {
componentType: kAudioUnitType_Output,
componentSubType: sub_type,
componentManufacturer: kAudioUnitManufacturer_Apple,
componentFlags: 0,
componentFlagsMask: 0,
};
let comp = unsafe { AudioComponentFindNext(ptr::null_mut(), &desc) };
if comp.is_null() {
cubeb_log!("Could not find matching audio hardware.");
return Err(Error::error());
}
let mut unit: AudioUnit = ptr::null_mut();
let status = unsafe { AudioComponentInstanceNew(comp, &mut unit) };
if status == NO_ERR {
assert!(!unit.is_null());
Ok(unit)
} else {
cubeb_log!("Fail to get a new AudioUnit. Error: {}", status);
Err(Error::error())
}
}