次の方法で共有


方法: XAudio2 の初期化

オーディオ再生用に XAudio2 を初期化するには、XAudio2 エンジンのインスタンスを作成し、マスタリング ボイスを作成します。

  1. まず、COM を初期化する必要があります。 C++/WinRT を使用している場合は、処理されます。 環境で COM が既に初期化されているか不明な場合は、戻り値を確認する限り、CoInitializeEx を呼び出すことができます。

    HRESULT hr = ::CoInitializeEx(nullptr, COINIT_MULTITHREADED);
    if (FAILED(hr)) return hr;
    
  2. XAudio2 エンジンのインスタンスを作成するには、XAudio2Create 関数を呼び出します。 これは、IXAudio2 インターフェイスへのポインターを提供します。クラス データ メンバーに格納することが推奨されます。 このスニペットでは C++/WinRT スマート ポインターを使用していますが、必要に応じて生ポインターを使用することもできます。

    winrt::com_ptr<IXAudio2> m_xAudio2{};
    ...
    winrt::check_hresult(::XAudio2Create(m_xAudio2.put(), 0, XAUDIO2_DEFAULT_PROCESSOR));
    
  3. 次に、マスターボイスと呼ばれるものを作成するには、IXAudio2::CreateMasteringVoice メソッドを呼び出します。 これにより、IXAudio2MasteringVoice インターフェイスへのポインターが提供されます。 マスタリング音声は、オーディオ デバイスをカプセル化します。 これは、オーディオ グラフを通過するすべてのオーディオの最終的な宛先です。

    IXAudio2MasteringVoice* m_pXAudio2MasteringVoice{};
    ...
    winrt::check_hresult(xAudio2->CreateMasteringVoice(&m_pXAudio2MasteringVoice));
    

スマート ポインター

安全性と利便性のために、IXAudio2 インターフェイスにスマート ポインターを使用できます。 ただし、音声インターフェイス (IXAudio2MasteringVoice など) には Release メソッドがないため、スマート ポインターを使用しようとするとビルド エラーが表示されます。 これらのコード スニペットでは、可能であればスマート ポインターを、必要に応じて生ポインターを使用します。