in src/backend/mod.rs [1142:1181]
fn audiounit_get_current_channel_layout(output_unit: AudioUnit) -> Result<Vec<mixer::Channel>> {
debug_assert_running_serially();
let mut rv = NO_ERR;
let mut size: usize = 0;
rv = audio_unit_get_property_info(
output_unit,
kAudioUnitProperty_AudioChannelLayout,
kAudioUnitScope_Output,
AU_OUT_BUS,
&mut size,
None,
);
if rv != NO_ERR {
cubeb_log!(
"AudioUnitGetPropertyInfo/kAudioUnitProperty_AudioChannelLayout rv={}",
rv
);
return Err(Error::error());
}
debug_assert!(size > 0);
let mut layout = make_sized_audio_channel_layout(size);
rv = audio_unit_get_property(
output_unit,
kAudioUnitProperty_AudioChannelLayout,
kAudioUnitScope_Output,
AU_OUT_BUS,
layout.as_mut(),
&mut size,
);
if rv != NO_ERR {
cubeb_log!(
"AudioUnitGetProperty/kAudioUnitProperty_AudioChannelLayout rv={}",
rv
);
return Err(Error::error());
}
audiounit_convert_channel_layout(layout.as_ref())
}