方法: 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 メソッドがないため、スマート ポインターを使用しようとするとビルド エラーが表示されます。 これらのコード スニペットでは、可能であればスマート ポインターを、必要に応じて生ポインターを使用します。