Параметры PCM канала
#include <sys/asoundlib.h>
typedef struct snd_pcm_channel_params {
int32_t channel;
int32_t mode;
snd_pcm_sync_t sync;
snd_pcm_format_t format;
snd_pcm_digital_t digital;
int32_t start_mode;
int32_t stop_mode;
int32_t time:1;
int32_t ust_time:1;
uint32_t why_failed;
union {
struct {
int32_t queue_size;
int32_t fill;
int32_t max_fill;
uint8_t reserved[124];
} stream;
struct {
int32_t frag_size;
int32_t frags_min;
int32_t frags_max;
uint8_t reserved[124];
} block;
uint8_t reserved[128];
} buf;
char sw_mixer_subchn_name[32];
uint8_t reserved[96];
} snd_pcm_channel_params_t;
Структура snd_pcm_channel_params_t
описывает параметры PCM каналов захвата или воспроизведения. Поля структуры включают:
- channel
- Ориентация канала. Одно из значений:
- SND_PCM_CHANNEL_CAPTURE
- SND_PCM_CHANNEL_PLAYBACK
- mode
- Режим канала:
SND_PCM_MODE_BLOCK
(значение SND_PCM_MODE_STREAM
устарело). - format
- Формат данных (см. snd_pcm_format_t).
- digital
- Не реализовано.
- start_mode
- Режим начала операции, одно из значений:
- SND_PCM_START_DATA
- операция начинается при записи данных (воспроизведение) или запросе на их получение (захват).
- SND_PCM_START_FULL
- операция начинается при полном заполнении очереди (только при воспроизведении).
- SND_PCM_START_GO
- операция начинается при поступлении команды "Go".
- stop_mode
- Режим остановки операции, одно из значений:
- SND_PCM_STOP_STOP
- операция останавливаться при обнаружении события опустошения (underrun) или переполнения (overrun).
- SND_PCM_STOP_ERASE
- операция останавливаться при опустошении буфера совместно с underrun событием (только при захвате).
- SND_PCM_STOP_ROLLOVER
- ROLLOVER (например, автоматическая переподготовка канала и продолжение операции) при обнаружении события опустошения (underrun) или переполнения (overrun).
- time
- Если установлено, драйвер записывает в статусной структуре время начала передачи. Формат времени соответствует gettimeofday().
- ust_time
- Если установлено, драйвер записывает в статусной структуре время начала передачи. Формат времени соответствует UST.
- sync
- Группа синхронизации. Не поддерживается, не следует использовать данное поле.
- queue_size
- Размер очереди в потоковом режиме в байтах. Не поддерживается, не следует использовать данное поле.
- fill
- Режим заполнения (см. константы
SND_PCM_FILL_*
). Не поддерживается, не следует использовать данное поле. - max_fill
- Размер заполняемой "тишиной" порции данных в байтах. Не поддерживается, не следует использовать данное поле.
- frag_size
- Размер фрагмента в байтах.
- frags_min
- Зависит от режима:
- захват — минимальное число заполненных фрагментов для разрешения пробуждения (обычно равно
1
). - воспроизведение — минимально число свободных фрагментов для разрешения пробуждения (обычно равно
1
).
- frags_max
- При воспроизведении максимальное число заполненных фрагментов для разрешения пробуждения. Это значение определяет общее число фрагментов, которые могут быть записаны приложением, за исключением того фрагмента, который сейчас проигрывается (таким образом, общее число фрагментов равно frags_max + 1).
- sw_mixer_subchn_name
- По умолчанию, имя всех sw_mixer групп субканалов есть PCM Subchannel. Данное поле может быть использовано для назначение другого имени.
ЗОСРВ «Нейтрино»
snd_pcm_channel_params(), snd_pcm_format_t
Предыдущий раздел: Библиотека libasound