IXAudio2SourceVoice::FlushSourceBuffers-Methode (xaudio2.h)
Entfernt alle ausstehenden Audiopuffer aus der Sprachwarteschlange.
Syntax
HRESULT FlushSourceBuffers();
Rückgabewert
Gibt bei erfolgreicher Ausführung S_OK einen Fehlercode zurück.
Hinweise
Wenn die Stimme gestartet wird, wird der derzeit wiedergegebene Puffer nicht aus der Warteschlange entfernt.
FlushSourceBuffers können unabhängig davon aufgerufen werden, ob die Stimme gerade gestartet oder beendet wird.
Für jeden entfernten Puffer wird ein OnBufferEnd-Rückruf durchgeführt, aber keines der anderen Rückrufe pro Puffer (OnBufferStart, OnStreamEnd oder OnLoopEnd) wird durchgeführt.
FlushSourceBuffers ändert den Ausführungszustand der Stimme nicht. Wenn die Stimme also vor dem Anruf einen Puffer wiedergegeben hat, wird dies weiterhin getan und alle Rückrufe für den Puffer normal übermittelt. Dies bedeutet, dass der OnBufferEnd-Rückruf für diesen Puffer nach den OnBufferEnd-Rückrufen für die entfernten Puffer erfolgt. Daher kann ein XAudio2-Client, der FlushSourceBuffers aufruft , keine OnBufferEnd-Rückrufe in der Reihenfolge empfangen, in der die Puffer übermittelt wurden.
Wenn der derzeit wiedergegebene Puffer abgeschlossen ist, werden keine Warnungen für das Ausstarren der Pufferwarteschlange ausgegeben. Es wird davon ausgegangen, dass der Client die darauf folgenden Puffer absichtlich entfernt hat. Es kann jedoch zu einem Audio-Pop kommen, wenn dieser Puffer nicht mit einer Nullüberquerung endet. Wenn die Anwendung sicherstellen muss, dass der Leerungsvorgang ausgeführt wird, während ein bestimmter Puffer wiedergegeben wird ( z. B. weil der Puffer mit einer Nullüberquerung endet), muss sie FlushSourceBuffers aus einem Rückruf aufrufen, damit er synchron ausgeführt wird.
Wenn FlushSourceBuffers aufgerufen wird, nachdem eine Stimme beendet wurde, und dann neue Daten an die Stimme übermittelt werden, werden alle internen Leistungsindikatoren der Stimme zurückgesetzt.
Der Zustand einer Stimme gilt nach dem Aufruf von FlushSourceBuffers erst als zurückgesetzt, wenn der OnBufferEnd-Rückruf erfolgt (wenn zuvor ein Puffer übermittelt wurde) oder IXAudio2SourceVoice::GetState mit XAUDIO2_VOICE_STATE zurückgibt. BuffersQueued == 0. Wenn Sie beispielsweise eine Stimme beenden und FlushSourceBuffers aufrufen, ist es immer noch nicht zulässig , IXAudio2SourceVoice::SetSourceSampleRate sofort aufzurufen (was erfordert, dass die Stimme derzeit keine Puffer in der Warteschlange hat), bis eine der zuvor genannten Bedingungen erfüllt ist.
Plattformanforderungen
Windows 10 (XAudio2.9); Windows 8, Windows Phone 8 (XAudio 2.8); DirectX SDK (XAudio 2.7)Requirements (Anforderungen)
Zielplattform | Windows |
Kopfzeile | xaudio2.h |