So wird's gemacht: Wiedergeben von Ton mit XAudio2

In diesem Thema werden die Mindestschritte beschrieben, die zum Wiedergeben zuvor geladener Audiodaten in XAudio2 erforderlich sind. Nachdem Sie XAudio2 initialisiert (siehe Vorgehensweise: Initialisieren von XAudio2) und die Audiodaten geladen haben (siehe Vorgehensweise : How to: Load Audio Data Files in XAudio2), können Sie einen Sound wiedergeben, indem Sie eine Quellstimme erstellen und Audiodaten an diese übergeben.

So geben Sie einen Sound ab

  1. Initialisieren Sie die XAudio2-Engine, indem Sie die unter Vorgehensweise: Initialisieren von XAudio2 beschriebenen Schritte ausführen.

  2. Füllen Sie eine WAVEFORMATEX - und XAUDIO2_BUFFER-Struktur auf, indem Sie die unter Vorgehensweise: Laden von Audiodatendateien in XAudio2 beschriebenen Schritte ausführen.

    Hinweis

    Je nach Format der Audiodaten müssen Sie möglicherweise eine größere Datenstruktur verwenden, die eine WAVEFORMATEX-Struktur anstelle einer WAVEFORMATEX-Struktur enthält. Weitere Informationen finden Sie auf der WAVEFORMATEX-Referenzseite .

     

  3. Erstellen Sie eine Quellstimme, indem Sie die IXAudio2::CreateSourceVoice-Methode auf einer instance der XAudio2-Engine aufrufen. Das Format der Stimme wird durch die werte angegeben, die in einer WAVEFORMATEX-Struktur festgelegt sind.

    IXAudio2SourceVoice* pSourceVoice;
    if( FAILED(hr = pXAudio2->CreateSourceVoice( &pSourceVoice, (WAVEFORMATEX*)&wfx ) ) ) return hr;
    
  4. Übermitteln Sie mit der Funktion SubmitSourceBuffer einen XAUDIO2_BUFFER an die Quellstimme.

    if( FAILED(hr = pSourceVoice->SubmitSourceBuffer( &buffer ) ) )
        return hr;
    

    Hinweis

    Die Audiobeispieldaten, deren Pufferpunkte sich weiterhin im Besitz der App befinden, müssen zugeordnet und zugänglich bleiben, bis der Sound nicht mehr wiedergegeben wird.

     

  5. Verwenden Sie die Startfunktion , um die Quellstimme zu starten. Da alle XAudio2-Stimmen ihre Ausgabe standardmäßig an die Masterstimme senden, wird das Audio von der Quellstimme automatisch an das bei der Initialisierung ausgewählte Audiogerät gesendet. In einem komplizierteren Audiodiagramm müsste die Quellstimme die Stimme angeben, an die ihre Ausgabe gesendet werden soll.

    if ( FAILED(hr = pSourceVoice->Start( 0 ) ) )
        return hr;
    

Hinweise für Windows Store-Apps

Es wird empfohlen, einen intelligenten Zeiger zu verwenden, um die Lebensdauer von XAUDIO2-Objekten ausnahmesicher zu verwalten. Für Windows Store-Apps können Sie die Vorlage ComPtr smart pointer aus der Windows-Runtime C++-Vorlagenbibliothek (WRL) verwenden.

Microsoft::WRL::ComPtr<IXAudio2SourceVoice> SourceVoice;
HRESULT hr;
if( FAILED(hr = pXAudio2->CreateSourceVoice( &SourceVoice, (WAVEFORMATEX*)&wfx ) ) )
    throw Platform::Exception::CreateException(hr); 

if( FAILED(hr = SourceVoice->SubmitSourceBuffer( &buffer ) ) )
    throw Platform::Exception::CreateException(hr); 

if ( FAILED(hr = SourceVoice->Start( 0 ) ) )
    throw Platform::Exception::CreateException(hr);

Hinweis

Stellen Sie sicher, dass alle intelligenten Zeiger auf XAUDIO2-Objekte vollständig freigegeben sind, bevor Sie das IXAudio2-Objekt freigeben.

 

XAudio2 Erste Schritte

So wird's gemacht: Initialisieren von XAudio2

So wird's gemacht: Laden von Datendateien in XAudio2