ado_pcm_config_t

Конфигурация субканала PCM

Прототип:

struct ado_pcm_config {
snd_pcm_format_t format;
union {
struct {
int32_t frag_size;
int32_t frags_min;
int32_t frags_max;
int32_t frags_total;
ado_pcm_mmap_t mmap;
} block;
} mode;
ado_pcm_dmabuf_t dmabuf;
int32_t mixer_device; /* mixer device */
snd_mixer_eid_t mixer_eid; /* pcm subchn source element */
snd_mixer_gid_t mixer_gid; /* lowest-level mixer group subchn specific */
};

Описание:

Структура, передаваемая в callback-функции aquire(), prepare() и trigger(), и определяющая устанавливаемые параметры субканала PCM (см. ado_pcm_hw_t). Поля структуры:

format
Формат, который должен поддерживать субканал, включая частоту, битность, endianness и число каналов. Тип snd_pcm_format_t определен как:

typedef struct snd_pcm_format {
int32_t interleave:1;
int32_t format;
int32_t rate;
int32_t voices;
int32_t special;
uint8_t reserved[124];
} snd_pcm_format_t;

mode
Объединение включает параметры для блочного и потокового режимов, причем последний считает устаревшим. Для блочного режима структура включает:
frag_size
запрошенный клиентом размер фрагмента.
frags_min
frags_max
запрошенные клиентом минимальный и максимальный размеры фрагментов.
frags_total
общее число флогментов в DMA буфере.

В большинстве случаев, выделенный в aquire() DMA буфер имеет размер frags_total × frag_size. Но если оборудование имеет особые требования, например, к frag_size, то за счет остальных полей может быть определен наилучший размер буфера.
dmabuf
Параметры DMA буфера: виртуальный и физический адрес, размер и имя (если он будет разделяемым). Тип ado_pcm_dmabuf определен как:

struct ado_pcm_dmabuf {
uint8_t *addr;
off64_t phys_addr;
size_t size;
int8_t name[QNX_SHM_NAME_LEN];
};

mixer_device
mixer_eid
mixer_gid
Микшер, элемент и группа для взаимодействия с PCM устройством.

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

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

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

ado_pcm_hw_t




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