Завершение обработки всех буферизированных в очереди воспроизведения данных и остановка PCM канала
#include <sys/asoundlib.h>int snd_pcm_plugin_flush( snd_pcm_t *handle,int channel );
libasound
Функция snd_pcm_plugin_flush() сбрасывает все необработанные данные в очереди драйвера:
Если операция завершается успешно (возвращено значение 0
), состояние канала меняется на SND_PCM_STATUS_READY
.
См. wave.c.
ЗОСРВ «Нейтрино»
Поскольку интерфейс плагина может выполнять дополнительную буферизацию записываемых данных до заполнения полного блока данных драйвера, функция может инжектировать до (blocksize - 1) пустых сэмплов в канал, чтобы последний блок мог быть отправлен драйверу для воспроизведения. Поэтому вызов может возвращать положительное значение, указывающее на то, что подобная пауза была инжектирована.
Функция является плагино-зависимым аналогом snd_pcm_channel_flush(). Следует убедиться, что плагино-зависимый и независимый вызовы не смешиваются в приложении. В противном случае поведение будет непредсказуемым.
snd_pcm_capture_flush(), snd_pcm_channel_flush(), snd_pcm_playback_flush(), snd_pcm_plugin_playback_drain()
Предыдущий раздел: Библиотека libasound