Método IXAudio2SourceVoice::FlushSourceBuffers (xaudio2.h)
Quita todos los búferes de audio pendientes de la cola de voz.
Sintaxis
HRESULT FlushSourceBuffers();
Valor devuelto
Devuelve S_OK si se ejecuta correctamente, de lo contrario, un código de error.
Observaciones
Si se inicia la voz, el búfer que se está reproduciendo actualmente no se quita de la cola.
Se puede llamar a FlushSourceBuffers independientemente de si la voz está iniciada o detenida actualmente.
Para cada búfer quitado, se realizará una devolución de llamada OnBufferEnd , pero no se realizará ninguna otra devolución de llamada por búfer (OnBufferStart, OnStreamEnd o OnLoopEnd).
FlushSourceBuffers no cambia el estado de ejecución de la voz, por lo que si la voz estaba reproduciendo un búfer antes de la llamada, seguirá haciéndolo y entregará todas las devoluciones de llamada para el búfer normalmente. Esto significa que la devolución de llamada OnBufferEnd para este búfer tendrá lugar después de las devoluciones de llamada OnBufferEnd para los búferes que se quitaron. Por lo tanto, un cliente XAudio2 que llama a FlushSourceBuffers no puede esperar recibir devoluciones de llamada OnBufferEnd en el orden en que se enviaron los búferes.
No se emitirá ninguna advertencia para el hambre de la cola de búfer cuando se complete el búfer que se está reproduciendo actualmente; se supone que el cliente ha quitado intencionadamente los búferes que lo han seguido. Sin embargo, puede haber un pop de audio si este búfer no termina en un cruce cero. Si la aplicación debe asegurarse de que la operación de vaciado tiene lugar mientras se está reproduciendo un búfer específico (quizás porque el búfer termina con un cruce cero), debe llamar a FlushSourceBuffers desde una devolución de llamada para que se ejecute de forma sincrónica.
Llamar a FlushSourceBuffers después de detener una voz y, a continuación, enviar nuevos datos a la voz restablece todos los contadores internos de la voz.
El estado de una voz no se considera restablecido después de llamar a FlushSourceBuffers hasta que se produzca la devolución de llamada OnBufferEnd (si se envió un búfer) o IXAudio2SourceVoice::GetState devuelve con XAUDIO2_VOICE_STATE. BuffersQueued == 0. Por ejemplo, si detiene una voz y llama a FlushSourceBuffers, todavía no es legal llamar inmediatamente a IXAudio2SourceVoice::SetSourceSampleRate (que requiere que la voz no tenga ningún búfer actualmente en cola), hasta que se cumpla alguna de las condiciones mencionadas anteriormente.
Requisitos de la plataforma
Windows 10 (XAudio2.9); Windows 8, Windows Phone 8 (XAudio 2.8); SDK de DirectX (XAudio 2.7)Requisitos
Plataforma de destino | Windows |
Encabezado | xaudio2.h |