IXAudio2SourceVoice::FlushSourceBuffers, méthode (xaudio2.h)
Supprime toutes les mémoires tampons audio en attente de la file d’attente vocale.
Syntaxe
HRESULT FlushSourceBuffers();
Valeur de retour
Retourne S_OK en cas de réussite, un code d’erreur dans le cas contraire.
Remarques
Si la voix est démarrée, la mémoire tampon en cours de lecture n’est pas supprimée de la file d’attente.
FlushSourceBuffers peut être appelé, que la voix soit démarrée ou arrêtée.
Pour chaque mémoire tampon supprimée, un rappel OnBufferEnd est effectué, mais aucun des autres rappels par mémoire tampon (OnBufferStart, OnStreamEnd ou OnLoopEnd) ne sera effectué.
FlushSourceBuffers ne modifie pas l’état d’exécution d’une voix. Par conséquent, si la voix lisait une mémoire tampon avant l’appel, elle continue à le faire et remet normalement tous les rappels pour la mémoire tampon. Cela signifie que le rappel OnBufferEnd pour cette mémoire tampon aura lieu après les rappels OnBufferEnd pour les mémoires tampons qui ont été supprimées. Ainsi, un client XAudio2 qui appelle FlushSourceBuffers ne peut pas s’attendre à recevoir des rappels OnBufferEnd dans l’ordre dans lequel les mémoires tampons ont été envoyées.
Aucun avertissement en cas d’insuffisance de la file d’attente de la mémoire tampon n’est émis lorsque la mémoire tampon en cours de lecture est terminée ; il est supposé que le client a intentionnellement supprimé les mémoires tampons qui l’ont suivi. Toutefois, il peut y avoir une pop audio si cette mémoire tampon ne se termine pas à un passage à zéro. Si l’application doit s’assurer que l’opération de vidage a lieu pendant la lecture d’une mémoire tampon spécifique( peut-être parce que la mémoire tampon se termine par un croisement de zéro), elle doit appeler FlushSourceBuffers à partir d’un rappel, afin qu’elle s’exécute de manière synchrone.
L’appel de FlushSourceBuffers après l’arrêt d’une voix, puis l’envoi de nouvelles données à la voix réinitialise tous les compteurs internes de la voix.
L’état d’une voix n’est pas considéré comme réinitialisé après l’appel de FlushSourceBuffers jusqu’à ce que le rappel OnBufferEnd se produise (si une mémoire tampon a été précédemment envoyée) ou que IXAudio2SourceVoice::GetState retourne avec XAUDIO2_VOICE_STATE. BuffersQueued == 0. Par exemple, si vous arrêtez une voix et que vous appelez FlushSourceBuffers, il n’est toujours pas légal d’appeler immédiatement IXAudio2SourceVoice::SetSourceSampleRate (ce qui nécessite que la voix n’ait pas de mémoires tampons actuellement mises en file d’attente), tant que l’une des conditions mentionnées précédemment n’est pas remplie.
Configuration requise pour la plateforme
Windows 10 (XAudio2.9); Windows 8, Windows Phone 8 (XAudio 2.8) ; Kit de développement logiciel (SDK) DirectX (XAudio 2.7)Spécifications
Plateforme cible | Windows |
En-tête | xaudio2.h |