Информация о PCM канале
#include <sys/asoundlib.h>
typedef struct snd_pcm_channel_info {
int32_t subdevice;
int8_t subname[36];
int32_t channel;
int32_t zero1;
int32_t zero2[4];
uint32_t flags;
uint32_t formats;
uint32_t rates;
int32_t min_rate;
int32_t max_rate;
int32_t min_voices;
int32_t max_voices;
int32_t max_buffer_size;
int32_t min_fragment_size;
int32_t max_fragment_size;
int32_t fragment_align;
int32_t fifo_size;
int32_t transfer_block_size;
uint8_t zero3[4];
snd_pcm_digital_t dig_mask;
uint32_t zero4;
int32_t mixer_device;
snd_mixer_eid_t mixer_eid;
snd_mixer_gid_t mixer_gid;
uint8_t reserved[128];
} snd_pcm_channel_info_t;
Структура snd_pcm_channel_info_t
представляет информацию о PCM канале. Поля структуры включают:
- subdevice
- Номер суб-устройства.
- subname[32]
- Имя суб-устройства.
- channel
- Ориентация канала. Одно из значений:
- SND_PCM_CHANNEL_CAPTURE
- SND_PCM_CHANNEL_PLAYBACK
- flags
- Комбинация констант:
- SND_PCM_CHNINFO_BLOCK
- Оборудование поддерживает блочный режим.
- SND_PCM_CHNINFO_BLOCK_TRANSFER
- Оборудование осуществляет передачи сэмплов в виде их цепочек (например, при PCI-burst режимах передачи).
- SND_PCM_CHNINFO_INTERLEAVE
- Оборудование принимает данные, состоящие из чередующихся (interleaved) сэмплов.
- SND_PCM_CHNINFO_MMAP
- Оборудование поддерживает доступ в виде мапирований.
- SND_PCM_CHNINFO_MMAP_VALID
- Фрагменты сэмплов действительны во время передачи. Это означает, что фрагменты могут использоваться, если установлено поле io структуры
snd_pcm_mmap_control_t
. - SND_PCM_CHNINFO_NONINTERLEAVE
- Оборудование принимает данные, состоящие из не чередующихся (noninterleaved) сэмплов.
- SND_PCM_CHNINFO_OVERRANGE
- Оборудование захвата (ADC) поддерживает детектирование переполнений.
- SND_PCM_CHNINFO_PAUSE
- Оборудование поддерживает постановку на паузу DMA механизмов (речь только о режимах воспроизведения).
| Отсутствие этого флага не препятствует генерации пауз приложением. Поддержка этого режима оборудованием крайне редка, поэтому не следует на него сильно полагаться. |
- formats
- Поддерживаемые форматы (
SND_PCM_FMT_*
). - rates
- Поддерживаемые оборудованием частоты дискретизации (
SND_PCM_RATE_*
). - min_rate
- Минимальная частота дискретизации (в Гц).
- max_rate
- Максимальная частота дискретизации (в Гц).
- min_voices
- Минимальное поддерживаемое число голосов (обычно равно
1
). - max_voices
- Максимально поддерживаемое число голосов.
- max_buffer_size
- Максимальный размер буфера в байтах.
- min_fragment_size
- Минимальный размер фрагмента в байтах.
- max_fragment_size
- Максимальный размер фрагмента в байтах.
- fragment_align
- Если это значение установлено, то размер буфера фрагментов должен быть ему кратен, чтобы он был правильно выровнен.
- fifo_size
- Размер потокового FIFO в байтах. Поле считается устаревшим, использовать его не следует.
- transfer_block_size
- Размер передаваемого по шине блока данных в байтах.
- dig_mask
- Поле не используется.
- mixer_device
- Устройство микшера для данного канала.
- mixer_eid
- Структура snd_mixer_eid_t, описывающая идентифицирующий элемент микшера для данного канала.
- mixer_gid
- Идентифицирующая группа микшера (см. snd_mixer_gid_t) для данного канала. Эту группу следует использовать приложениям, которые будут настраивать громкость звука в канале. Данная группа гарантированно является самой низкоуровневой группой канала (или субканала), как определено во время вызова snd_ctl_pcm_channel_info(). Если она вызвана уже после завершения конфигурирования канала и субканал был выделен (например, после вызова snd_pcm_channel_params()), группа микшера mixer_gid будет группой субканала, которая соответствует текущему субканалу приложения.
ЗОСРВ «Нейтрино»
snd_ctl_pcm_channel_info(), snd_mixer_eid_t, snd_mixer_gid_t, snd_pcm_channel_info(), snd_pcm_plugin_info()
Предыдущий раздел: Библиотека libasound