CoreAudio正确的方式来获得布局配置

时间:2013-10-10 13:33:20

标签: macos core-audio

在“音频MIDI设置”应用程序中,您可以配置您的扬声器设置,它是多声道(从2.0到7.1的任何配置)或立体声(仅2.0)。

我正在尝试在我的应用程序中实现对布局配置的正确支持,该应用程序基于专有引擎,它本身不使用coreaudio布局,所以我需要自己实现通道映射。

要获得多渠道配置,我正在使用

AudioObjectPropertyAddress propertyAddress;
propertyAddress.mSelector = kAudioDevicePropertyPreferredChannelLayout;
propertyAddress.mScope = kAudioDevicePropertyScopeOutput;
propertyAddress.mElement = kAudioObjectPropertyElementMaster;

在配置被选择为立体声(!!!!不是多声道 - 其中的立体声布局,但是立体声如图所示)之前,这是完美无缺的。

enter image description here

在这种情况下,kAudioDevicePropertyPreferredChannelLayout属性仍然指向多通道配置,我找不到任何其他可用于确定选择配置的属性。

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

如果您正在处理立体声输出,则输出单元会发布一个属性kAudioDevicePropertyPreferredChannelsForStereo,您应该使用该属性来确定通道映射。这对应于上面的 Stereo 选项。正如您所发现的,kAudioDevicePropertyPreferredChannelLayout属性是指多声道布局,应该用于非立体声/单声道音频。