Загрузка указанной стандартной библиотеки микшера
#include <audio_driver.h>
int32_t ado_mixer_dll( ado_card_t *card,
char *mixer_dll,
uint32_t version,
void *params,
void *callbacks,
ado_mixer_t **rmixer );
- card
- Аргумент, переданный менеджером стека io-audio в функцию драйвера ctrl_init().
- mixer_dll
- Имя стандартной библиотеки микшера.
![Note:](./../../../gendoc_inserted_style/images/note.png) | ДАнный аргумент должен содержать только уникальную часть имени файла библиотеки микшера. Например, если библиотека микшера имеет имя audio-mixer-ac97.so , то следует указать параметру mixer_dll значение "ac97". |
- version
- Версия библиотеки микшера (в настоящий момент не используется).
- params
- Указатель на конфигурационную информацию и функции контроля, требуемые библиотеке микшера со стороны драйвера (например, функции чтения и записи регистров кодека). Передаваемая структура в заголовочном файле библиотеки, например
<mixer/mixer_name_dll.h>
. Так, например, при загрузке Audio Codec 97 (AC97) следует передать структуру типа ado_mixer_dll_params_ac97_t
.
- callbacks
- Буффер, в котором ado_mixer_dll() заполнит список функций, предоставленный библиотекой микшера, которые драйвер может использовать для контроля специальных возможностей микшера, например, конвертирование частоты сэмплов. Ориентироваться стоит на документацию к конкретному стандартизованному микшеру. Так, например, при загрузке Audio Codec 97 (AC97) следует передать структуру типа
ado_mixer_dll_callbacks_ac97_t
.
- rmixer
- Буффер, в котором ado_mixer_dll() может созранить указатель на созданную структуру микшера. Структура
ado_mixer_t
является прозрачной для драйвера, используемой аудио стеком. Возвращенный указатель должен быть сохранен для последующей передачи в другие драйверные вызовы.
libado
Функция ado_mixer_dll() загружает стандартную библиотеку микшера mixer_dll и возвращает указатель на свежесозданную структуру микшера.
- ≠-1
- Успешное завершение.
- -1
- Возникла ошибка (также устанавливается errno).
- ENOMEM
- Недостаточно свободной памяти для создания нового микшера.
- ELIBACC
- Вызов dlopen() при загрузке библиотеки завершился с ошибкой.
- ELIBBAD
- Вызов dlsym() при загрузке библиотеки завершился с ошибкой.
- EPROGMISMATCH
- ADO_MAJOR_VERSION в библиотеке микшера не соответствует ожиданиям аудио стека io-audio.
ЗОСРВ «Нейтрино»
- Нет
- Обработчик прерываний
- Нет
- Обработчик сигналов
- Нет
- В потоке
- Нет
ctrl_init()
Разработка аналогового микшера, Основные виды кодеков
Предыдущий раздел: Библиотека libado