Метод IXAudio2SourceVoice::FlushSourceBuffers (xaudio2.h)

Удаляет все ожидающие звуковые буферы из голосовой очереди.

Синтаксис

HRESULT FlushSourceBuffers();

Возвращаемое значение

Возвращает S_OK в случае успешного выполнения, в противном случае — код ошибки.

Комментарии

Если голос запущен, буфер, воспроизводимый в данный момент, не удаляется из очереди.

FlushSourceBuffers можно вызывать независимо от того, запущен или остановлен голос в данный момент.

Для каждого удаленного буфера будет выполнен обратный вызов OnBufferEnd , но ни один из других обратных вызовов для каждого буфера (OnBufferStart, OnStreamEnd или OnLoopEnd) не будет выполнен.

FlushSourceBuffers не изменяет состояние выполнения голоса, поэтому, если голос воспроизводил буфер до вызова, он будет продолжать делать это и будет выполнять все обратные вызовы для буфера в обычном режиме. Это означает, что обратный вызов OnBufferEnd для этого буфера будет выполняться после обратных вызовов OnBufferEnd для удаленных буферов. Таким образом, клиент XAudio2, вызывающий FlushSourceBuffers , не может ожидать получения обратных вызовов OnBufferEnd в том порядке, в котором были отправлены буферы.

После завершения текущего воспроизводимого буфера предупреждения о нехватке очереди буфера не будут выдаваться; предполагается, что клиент намеренно удалил следующие за ним буферы. Однако если этот буфер не заканчивается на нулевом пересечении, может возникнуть звуковое всплывающее уведомление. Если приложение должно убедиться, что операция очистки выполняется во время воспроизведения определенного буфера (возможно, из-за того, что буфер заканчивается нулевым пересечением), оно должно вызывать FlushSourceBuffers из обратного вызова, чтобы выполняться синхронно.

Вызов FlushSourceBuffers после остановки голоса, а затем отправка новых данных в голос сбрасывает все внутренние счетчики голоса.

Состояние голоса не считается сбросом после вызова FlushSourceBuffers , пока не произойдет обратный вызов OnBufferEnd (если буфер был отправлен ранее) или IXAudio2SourceVoice::GetState не возвращает с XAUDIO2_VOICE_STATE. BuffersQueued == 0. Например, если вы останавливаете голос и вызываете FlushSourceBuffers, по-прежнему не законно немедленно вызывать IXAudio2SourceVoice::SetSourceSampleRate (для которого требуется, чтобы у голоса не было буферов, помещенных в очередь), пока не будет выполнено любое из ранее упомянутых условий.

Требования к платформе

Windows 10 (XAudio2.9); Windows 8, Windows Phone 8 (XAudio 2.8); Пакет SDK Для DirectX (XAudio 2.7)

Требования

   
Целевая платформа Windows
Header xaudio2.h

См. также раздел

IXAudio2SourceVoice