So wird's gemacht: Wiedergeben von Ton mit XAudio2

In diesem Thema werden die Mindestschritte beschrieben, die für die Wiedergabe zuvor geladener Audiodaten in XAudio2 erforderlich sind. Nachdem Sie XAudio2 initialisiert (siehe How to: Initialize XAudio2) und die Audiodaten geladen haben (siehe How to: How to: Load Audio Data Files in XAudio2), können Sie einen Sound wieder geben, indem Sie eine Quellstimme erstellen und Audiodaten an sie übergeben.

So spielen Sie einen Sound wieder

  1. Initialisieren Sie die XAudio2-Engine, indem Sie die unter How to: Initialize XAudio2 beschriebenen Schritte ausführen.

  2. Füllen Sie eine WAVEFORMATEX- und XAUDIO2 _ BUFFER-Struktur auf, indem Sie die unter How to: Load Audio Data Files 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 statt einer WAVEFORMATEX enthält. Weitere Informationen finden Sie auf der Referenzseite zu WAVEFORMATEX.

  3. Erstellen Sie eine Quellstimme, indem Sie die IXAudio2::CreateSourceVoice-Methode auf einer Instanz 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 mithilfe der Funktion SubmitSourceBuffereinen XAUDIO2 _ BUFFER an die Quellstimme.

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

    Hinweis

    Die Audiobeispieldaten, für die Pufferpunkte noch "im Besitz der App" sind, müssen zugeordnet und zugänglich bleiben, bis die Wiedergabe des Sounds beendet wird.

  5. Verwenden Sie die Start-Funktion, um die Quellstimme zu starten. Da alle XAudio2-Stimmen ihre Ausgabe standardmäßig an die Masterstimme senden, geht audio von der Quellstimme automatisch zu dem Audiogerät, das bei der Initialisierung ausgewählt wurde. In einem komplizierteren Audiographen müsste die Quellstimme die Stimme angeben, an die die 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 auf ausnahmesichere Weise zu verwalten. Für Windows Store-Apps können Sie die intelligente ComPtr-Zeigervorlage 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 werden, bevor Sie das IXAudio2-Objekt veröffentlichen.

XAudio2-Erste Schritte

So wird's gemacht: Initialisieren von XAudio2

So wird's gemacht: Laden von Datendateien in XAudio2