【XAduio2】6.如何枚举音频设备
這個例子向您展示了如何初始化XAudio2當可能存在多個音頻設備。GetDeviceCount和GetDeviceDetails方法用于檢查音頻設備上可用的屬性系統。這個過程允許選擇最匹配的設備游戲的需求。找到一個可以接受的設備后,設備號可以傳遞到CreateMasteringVoice方法。
注意
如果只有一個音頻設備例如Xbox 360,或者默認的音頻設備,簡單地使用的默認值0給IXAudio2::CreateMasteringVoice的參數DeviceIndex 。例如初始化XAudio2使用默認的音頻設備,看如何:XAudio2進行初始化。
枚舉可用的音頻設備
1.通過XAudio2Create函數創建一個XAudio2引擎實例。
HRESULT hr; if ( FAILED(hr = XAudio2Create( &pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR ) ) )return hr;2.通過GetDeviceCount函數返回音頻設備數量
UINT32 deviceCount; pXAudio2->GetDeviceCount(&deviceCount);3.遍歷可用的音頻設備,確定最適合的
?
你可以通過GetDeviceDetails函數返回一個音頻設備的詳細說明。下面這個例子,只要求音頻設備有兩個通道。
?
XAUDIO2_DEVICE_DETAILS deviceDetails; int preferredDevice = 0; for (unsigned int i = 0; i < deviceCount; i++) {pXAudio2->GetDeviceDetails(i,&deviceDetails);if (deviceDetails.OutputFormat.Format.nChannels > 2){preferredDevice = i;break;} }除了設備的輸出格式,您可以確定每個查詢音頻設備的默認角色XAUDIO2_DEVICE_DETAILS.Role檢查返回的值。例如,如果需要默認的通訊設備,使用以下代碼來找到它。除了設備的輸出格式,您可以確定每個查詢音頻設備的默認角色XAUDIO2_DEVICE_DETAILS.Role檢查返回的值。例如,如果需要默認的通訊設備,使用以下代碼來找到它。
4.找到合適的設備后,傳遞索引給CreateMasteringVoice 函數
注意
如果沒有設備滿足需要的條件, 指定索引0使用全局默認的音頻設備。
?
總結
以上是生活随笔為你收集整理的【XAduio2】6.如何枚举音频设备的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【XAudio2】5.如何初始化 XAu
- 下一篇: 【XAudio2】7.如何加载音频数据文