Структура контроля группы микшера
#include <sys/asoundlib.h>
typedef struct snd_mixer_group_s {
snd_mixer_gid_t gid;
uint32_t caps;
uint32_t channels;
int32_t min;
int32_t max;
union {
uint32_t values[32];
struct {
uint32_t front_left;
uint32_t front_right;
uint32_t front_center;
uint32_t rear_left;
uint32_t rear_right;
uint32_t woofer;
uint8_t reserved[128];
} names;
} volume;
uint32_t mute;
uint32_t capture;
int32_t capture_group;
int32_t elements_size;
int32_t elements;
int32_t elements_over;
snd_mixer_eid_t *pelements;
uint16_t change_duration;
uint16_t spare;
int32_t min_dB;
int32_t max_dB;
uint8_t reserved[120];
} snd_mixer_group_t;
Структура snd_mixer_group_t
позволяет контролировать параметры группы микшера. Получать информацию можно с помощью функции snd_mixer_group_read(), а устанавливать через snd_mixer_group_write().
Поля структуры включают:
- gid
- Идентификатор группы микшера. Структура snd_mixer_gid_t включает имя группы и индекс.
- caps
- Возможности группы (комбинация флагов):
- SND_MIXER_GRPCAP_VOLUME
- Группа имеет хотя бы один регулятор громкости.
- SND_MIXER_GRPCAP_JOINTLY_VOLUME
- Уровень громкости для всех каналов группы должен быть одинаковым (посредством группировки).
- SND_MIXER_GRPCAP_MUTE
- Группа имеет хотя бы один элемент отключения звука (mute).
- SND_MIXER_GRPCAP_JOINTLY_MUTE
- Настройки отключения звука для всех каналов группы должны быть одинаковыми (посредством группировки).
- SND_MIXER_GRPCAP_CAPTURE
- Группа может принимать учасние в захвате звука (звукозапись).
- SND_MIXER_GRPCAP_JOINTLY_CAPTURE
- Все настройки захвата звука для всех каналов группы должны быть одинаковыми (посредством группировки).
- SND_MIXER_GRPCAP_EXCL_CAPTURE
- Только одна группа устройства может участвовать в звукозахвате одновременно.
- SND_MIXER_GRPCAP_PLAY_GRP
- Данная группа относится к воспроизведению звука.
- SND_MIXER_GRPCAP_CAP_GRP
- Данная группа относится к захвату звука.
- SND_MIXER_GRPCAP_SUBCHANNEL
- Группа контролирует субканал. Она существует только пока PCM субканал аллоцирован приложением.
- channels
- Биты поля соответствуют каналам, содержащимся в группе. Например, левому и правому стерео динамикам соответствуют биты 1 и 2 (00011), а центральному стерео динамику бит 3 (00100).
- min
- max
- Минимальное и максимальное значение уровня громкости. При этом минимум не обязан быть равен
0
. - volume
- Структура, содержащая уровни звука для каждого канала группы. Доступ может осуществляться по именам каналов или косвенно через массив значений.
![Note:](./../../../gendoc_inserted_style/images/note.png) | Если группа имеет общую громкость, все значения должны быть одинаковыми; установка разных значений приводит к неопределенному поведению. |
- mute
- Состояние отключения звука (mute) для каждого канала группы. Если соответствующий бит установлен, звук в канале отключен.
![Note:](./../../../gendoc_inserted_style/images/note.png) | Если группа имеет общий контроль отключения звука (mute), все биты должны быть одинаковыми; установка разных значений бит приводит к неопределенному поведению. |
- capture
- Состояние захвата звука для каждого канала группы. Если соответствующий бит установлен, звук в канале может захватываться приложением. Если группа предназначена для эксклюзивного захвата звука (см
SND_MIXER_GRPCAP_EXCL_CAPTURE
выше), установка бита говорит о том, что звук в ней больше не может быть захвачен.
![Note:](./../../../gendoc_inserted_style/images/note.png) | Если группа имеет общий контроль захвата звука, все биты должны быть одинаковыми; установка разных значений бит приводит к неопределенному поведению. |
- capture_group
- Не используется.
- elements_size
- Размер блока памяти, ассоциированного с полем pelements в единицах
snd_mixer_eid_t
. - elements
- Число идентификаторов элементов, которые в настоящий момент заполнено в pelements.
- elements_over
- Число идентификаторов элементов, информацию о которых не удалось разместить в pelements из-за недостаточности размера хранилища.
- pelements
- Указатель на область памяти (хранилище), выделенную приложением, используемую для хранения массива идентификаторов элементов микшера. Хранилище представляет собой массив структур snd_mixer_eid_t. Записанные идентификаторы характеризуются полем elements и идентификатором группы gid.
- change_duration
- Число миллисекунд, в течение которых следует увеличивать громкость.
- min_dB
- max_dB
- Минимальный и максимальный уровень звука в децибелах.
ЗОСРВ «Нейтрино»
snd_mixer_eid_t, snd_mixer_gid_t, snd_mixer_group_read(), snd_mixer_group_write()
Предыдущий раздел: Библиотека libasound