Dela via


Anvisningar: Initiera XAudio2

Du initierar XAudio2 för ljuduppspelning genom att skapa en instans av XAudio2-motorn och sedan skapa en mastering-röst.

  1. Först måste du ha initierat COM. Om du använder C++/WinRT, så är det ordnat. Om du inte är säker på att din miljö redan har initierat COM kan du anropa CoInitializeEx så länge du kontrollerar returvärdet.

    HRESULT hr = ::CoInitializeEx(nullptr, COINIT_MULTITHREADED);
    if (FAILED(hr)) return hr;
    
  2. Om du vill skapa en instans av XAudio2-motorn anropar du funktionen XAudio2Create. Det ger dig en pekare till ett IXAudio2--gränssnitt, och det är en bra idé att lagra det i en klassdatamedlem. I det här kodfragmentet använder vi en smart C++/WinRT-pekare, men du kan använda en råpekare om det behövs.

    winrt::com_ptr<IXAudio2> m_xAudio2{};
    ...
    winrt::check_hresult(::XAudio2Create(m_xAudio2.put(), 0, XAUDIO2_DEFAULT_PROCESSOR));
    
  3. För att skapa en så kallad mastering-röst anropar du sedan metoden IXAudio2::CreateMasteringVoice. Det ger dig en pekare till ett IXAudio2MasteringVoice--gränssnitt. En masterröst kapslar in en ljudenhet. Det är det ultimata målet för allt ljud som passerar genom ett ljuddiagram.

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

Smarta pekare

För säkerhet och bekvämlighet kan du använda en smart pekare för gränssnittet IXAudio2. Men röstgränssnitten (till exempel IXAudio2MasteringVoice) har ingen Release-metod, så du får se ett byggfel om du försöker använda en smart pekare för dem. I dessa kodfragment använder vi en smart pekare där det är möjligt och en råpekare där det behövs.