操作說明:初始化 XAudio2
您可以藉由建立 XAudio2 引擎的實例,然後建立主控語音,初始化 XAudio2 以進行音訊播放。
首先,您必須已初始化 COM。 如果您使用 C++/WinRT,則會加以處理。 如果您不確定您的環境已經初始化 COM,只要檢查傳回值,就可以呼叫 CoInitializeEx。
HRESULT hr = ::CoInitializeEx(nullptr, COINIT_MULTITHREADED); if (FAILED(hr)) return hr;
若要建立 XAudio2 引擎的實例,請呼叫 XAudio2Create 函式。 這可讓您指向 IXAudio2 介面,而且最好將它儲存在類別數據成員中。 在此代碼段中,我們使用C++/WinRT 智慧型指標,但如有必要,您可以使用原始指標。
winrt::com_ptr<IXAudio2> m_xAudio2{}; ... winrt::check_hresult(::XAudio2Create(m_xAudio2.put(), 0, XAUDIO2_DEFAULT_PROCESSOR));
接下來,若要建立所謂的主控語音,請呼叫 IXAudio2::CreateMasteringVoice 方法。 這可讓您指向 IXAudio2MasteringVoice 介面。 主控語音會封裝音訊裝置。 它是通過音訊圖形的所有音訊的最終目的地。
IXAudio2MasteringVoice* m_pXAudio2MasteringVoice{}; ... winrt::check_hresult(xAudio2->CreateMasteringVoice(&m_pXAudio2MasteringVoice));
智慧指標
為了安全性和便利性,您可以使用 IXAudio2 介面的智慧型手機指標。 但是語音介面(例如 IXAudio2MasteringVoice)沒有 Release 方法,因此如果您嘗試針對這些介面使用智慧型手機指標,您將會看到建置錯誤。 在這些代碼段中,我們會盡可能使用智慧型指標,並視需要使用原始指標。