snd_pcm_plugin_flush()

Завершение обработки всех буферизированных в очереди воспроизведения данных и остановка PCM канала

Прототип:

#include <sys/asoundlib.h>
int snd_pcm_plugin_flush( snd_pcm_t *handle,
int channel );

Аргументы:

handle
Дескриптор PCM устройства, созданный с помощью snd_pcm_open() или snd_pcm_open_preferred().
channel
Канал:
SND_PCM_CHANNEL_CAPTURE
SND_PCM_CHANNEL_PLAYBACK

Библиотека:

libasound

Описание:

Функция snd_pcm_plugin_flush() сбрасывает все необработанные данные в очереди драйвера:

Если операция завершается успешно (возвращено значение 0), состояние канала меняется на SND_PCM_STATUS_READY.

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

>0
Успешное завершение.
-EINVAL
Некорректный аргумент handle.

Примеры:

См. 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