2013-10-10 51 views
1

在「音頻MIDI設置」應用程序中,您可以配置您的揚聲器設置,它是多聲道(2.0至7.1的任何配置)還是立體聲(僅2.0)。CoreAudio獲得佈局配置的正確方法

我試圖在我的應用程序中實現對佈局配置的正確支持,該應用程序基於專有引擎,本身不使用coreaudio佈局,所以我需要自己實現通道映射。

爲了得到多通道配置我使用

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

,直到配置選擇爲立體聲哪個完美的作品(!!!!不是多通道 - 在它的立體佈局,但立體聲如圖所示的圖像)。

enter image description here

在這種情況下kAudioDevicePropertyPreferredChannelLayout屬性仍引導到多聲道配置和我無法找到我可以使用,以確定選擇哪個配置的任何其他屬性。

有人能幫助我解決這種情況嗎?

回答

0

如果您正在處理立體聲輸出,則輸出單元會發佈一個屬性kAudioDevicePropertyPreferredChannelsForStereo,您應該使用該屬性來確定通道映射。這對應於Stereo以上的選擇。正如您發現的那樣,kAudioDevicePropertyPreferredChannelLayout屬性是指多通道佈局,應該用於非立體聲/單聲道音頻。

+0

邑那一個很容易。但問題是如何確定是否選擇立體聲或多聲道佈局?還有立體聲聲道映射是由系統應用的,我不需要做任何事情來映射聲道,所有這些都是由系統完成的。 –

+0

我不相信用戶選擇一個或另一個是主動 - 這些按鈕只是Apple簡化UI的方式。一個設備同時擁有兩個屬性。 – sbooth

+0

嗯。這一點似乎不像試驗配置後那樣,我發現如果在多聲道中選擇了該佈局,那麼即使選擇了立體聲配置,首選佈局仍然是5.1。尤其令我驚訝的是,在立體聲選擇的情況下,通過系統進行通道映射而不是通過它自己的軟件(或者用於音頻輸出的所有音頻庫(用於閃存和所有其他多平臺框架)正確的頻道映射,但看起來不太可能)。 –