Отключение PCM плагинов
#include <sys/asoundlib.h>
unsigned int snd_pcm_plugin_set_disable( snd_pcm_t *pcm,
unsigned int mask );
- pcm
- Дескриптор PCM устройства, созданный с помощью snd_pcm_open() или snd_pcm_open_preferred().
- mask
- Маска отключения плагинов. Следующие биты поддерживаются:
- PLUGIN_DISABLE_MMAP
- Отключение mmap-плагина.
- PLUGIN_DISABLE_BUFFER_PARTIAL_BLOCKS
- Предотвращение чтения и записи с использованием частично заполненных блоков данных.
Плагино-зависимые версии вызовов чтения и записи не требуют, чтобы использовались блоки кратного фрагменту размера (в отличие от плагино-независимых вызовов). Это связано с тем, что плагины осуществляют промежуточную буферизацию данных и их предварительное накопление. Плагин накопления данных как раз и отключается с помощью бита PLUGIN_DISABLE_BUFFER_PARTIAL_BLOCKS
. При этом сответствующие плагино-зависимые вызовы станут возвращать ошибку при попытке оперирования буферами не кратного фрагменту размера.
В любом случае чредующиеся стерео данные должны быть выровнены по размеру сэмплов (по числу каналов). Например, каждая запись должна иметь такое же число сэмплов для левого и правого каналов.
libasound
Функция snd_pcm_plugin_set_disable() используется для отключения различных плагинов, которые обычно используются в виде конвейера (цепочки) взаимосвязанных плагинов.
Предыдущее (до изменения) значение маски отключения плагинов.
См. wave.c.
ЗОСРВ «Нейтрино»
- Нет
- Обработчик прерываний
- Нет
- Обработчик сигналов
- Да
- В потоке
- Да
Маска отключения плагинов должна быть установлена перед вызовом snd_pcm_plugin_params(), чтобы он возымел эффект.
snd_pcm_channel_status_t, snd_pcm_plugin_read(), snd_pcm_plugin_write()
Предыдущий раздел: Библиотека libasound