snd_pcm_plugin_update_src()

Получение размера следующего записываемого фрагмента (плагино-зависимая функция)

Прототип:

#include <sys/asoundlib.h>
int snd_pcm_plugin_update_src( snd_pcm_t *handle,
snd_pcm_channel_setup_t *setup,
int currlevel );

Аргументы:

handle
Дескриптор PCM устройства, созданный с помощью snd_pcm_open() или snd_pcm_open_preferred().
setup
Указатель на заполняемую структуру snd_pcm_channel_setup_t.
currlevel
Текущий уровень буферизации на стороне клиента, в процентах.

Библиотека:

libasound

Описание:

Функция snd_pcm_plugin_update_src() возвращает размер следующего фрагмента, требуемый для snd_pcm_plugin_write().

Если используется режим SND_SRC_MODE_ACTUAL или SND_SRC_MODE_ASYNC (см. snd_pcm_plugin_set_src_mode()), следует вызвать snd_pcm_plugin_update_src() после каждого последующего вызова snd_pcm_plugin_write().

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

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

>=0
Число записываемых сэмплов при следующем вызове snd_pcm_plugin_write().
-EINVAL
Если любой из аргументов является некорректным.

Классификация:

ЗОСРВ «Нейтрино»

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Предостережения:

Следует убедиться, что плагино-зависимые и независимые вызовы не смешиваются в приложении. В противном случае поведение будет непредсказуемым.

Тематические ссылки:

snd_pcm_plugin_src_max_frag(), snd_pcm_plugin_set_src_mode()




Предыдущий раздел: Библиотека libasound