in src/backend/mod.rs [1324:1353]
fn enable_audiounit_scope(
unit: AudioUnit,
devtype: DeviceType,
enable_io: bool,
) -> std::result::Result<(), OSStatus> {
assert!(!unit.is_null());
let enable = u32::from(enable_io);
let (scope, element) = match devtype {
DeviceType::INPUT => (kAudioUnitScope_Input, AU_IN_BUS),
DeviceType::OUTPUT => (kAudioUnitScope_Output, AU_OUT_BUS),
_ => panic!(
"Enable AudioUnit {:?} with unsupported type: {:?}",
unit, devtype
),
};
let status = audio_unit_set_property(
unit,
kAudioOutputUnitProperty_EnableIO,
scope,
element,
&enable,
mem::size_of::<u32>(),
);
if status == NO_ERR {
Ok(())
} else {
Err(status)
}
}