Снимок экрана Alsamixer 1.0.14 | |
Оригинал автор (ы) | Ярослав Кисела |
---|---|
Разработчик (и) | Команда ALSA |
Первоначальный выпуск | 1998; 22 года назад (1998 г.) |
Стабильный выпуск | 1.2.1 / 15 ноября 2019 г.; 10 месяцев назад (2019-11-15) |
Написано в | C |
Операционной системе | Linux |
Тип | |
Лицензия | |
Веб-сайт | alsa-project.org |
Advanced Linux Sound Architecture (ALSA ) - это программная среда и часть ядра Linux, которая предоставляет интерфейс прикладного программирования (API) для звуковая карта драйверы устройств.
Одной из целей проекта ALSA на момент его создания была автоматическая настройка оборудования звуковой карты и изящная обработка нескольких звуковых устройств в системе. ALSA выпущена u Примените Стандартную общественную лицензию GNU (GPL) и Стандартную общественную лицензию ограниченного применения GNU (LGPL).
Звуковые серверы PulseAudio и JACK (редактирование и микширование звука профессионального уровня с малой задержкой), API абстракции более высокого уровня OpenAL, SDL audio и т. Д. Работают поверх ALSA и реализованы драйверы устройств звуковой карты. В системах Linux ALSA пришла на смену старой Open Sound System (OSS).
Проект по разработке ALSA возглавлял Ярослав Кисела и основывался на драйвере устройства Linux для звуковой карты Gravis Ultrasound. Он начался в 1998 году и разрабатывался отдельно от ядра Linux до тех пор, пока не был представлен в серии разработки 2.5 в 2002 году (2.5.4–2.5.5).
В версии 2.6 он заменил предыдущую систему, Open Sound System (OSS), по умолчанию (хотя уровень обратной совместимости действительно существует).
ALSA имеет более крупный и сложный API, чем OSS, поэтому может быть труднее разработать приложение, использующее ALSA в качестве звуковой технологии. Хотя ALSA может быть настроен для обеспечения уровня эмуляции OSS, такая функциональность больше не доступна или не устанавливается по умолчанию во многих дистрибутивах Linux.
Взаимодействие между различными частями стека вывода звука LinuxALSA была разработана с некоторыми функциями, которые на момент ее создания не поддерживались OSS:
Помимо драйверов звуковых устройств, ALSA объединяет user-space библиотеку для разработчиков приложений, которые хотят использовать функции драйвера через интерфейс на выше- уровень, чем интерфейс, предусмотренный для прямого взаимодействия с драйверами ядра. В отличие от API ядра, который пытается напрямую отразить возможности оборудования, библиотека пользовательского пространства ALSA представляет собой абстракцию, которая остается максимально стандартизированной для различных базовых аппаратных элементов. Эта цель частично достигается за счет использования программных плагинов ; например, многие современные звуковые карты или встроенные звуковые чипы не имеют регулятора «основной громкости». Вместо этого для этих устройств библиотека пользовательского пространства обеспечивает программное управление громкостью с использованием подключаемого модуля «softvol », и обычному прикладному программному обеспечению не нужно заботиться о том, реализовано ли такое управление посредством базового оборудования или программной эмуляции такое базовое оборудование.
В дополнение к программной среде, внутренней по отношению к ядру Linux, проект ALSA также предоставляет утилиты командной строки alsactl
, amixer
, arecord / aplay
и alsamixer
, ncurses -based TUI.
Также есть графические интерфейсы, запрограммированные сторонними разработчиками. разработчиков, таких как gnome-alsamixer (с использованием GTK + ), kmix, xfce4-Mixer, lxpanel, qashctl, pavucontrol, alsamixergui (с использованием FLTK ) и, возможно, даже больше.
В этом разделе представлен обзор основных концепций, относящихся к ALSA.
Обычно ALSA поддерживает до восьми карт, пронумерованных от 0 до 7; каждая карта представляет собой физическое или логическое устройство ядра, способное осуществлять ввод и вывод. Кроме того, к каждой карте можно обращаться по ее идентификатору, который представляет собой поясняющую строку, например «Гарнитура» или «ICH9».
На карте есть устройства, пронумерованные с 0; устройство может быть воспроизводящего типа, что означает, что оно выводит звук с компьютера, или какого-либо другого типа, такого как захват, управление, таймер или секвенсор; номер устройства 0 используется по умолчанию, если не указано конкретное устройство.
Устройство может иметь подустройства, пронумерованные, начиная с 0; подустройство представляет некоторую соответствующую звуковую оконечную точку для устройства, например пару динамиков. Если подустройство не указано или если указан номер подустройства -1, то используется любое доступное подустройство.
Интерфейс карты - это описание протокола ALSA для доступа к карте; возможные интерфейсы включают: hw, plughw, default и plug: dmix. Интерфейс hw обеспечивает прямой доступ к устройству ядра, но не поддерживает микширование программного обеспечения или адаптацию потока. Параметры plughw и default включают вывод звука, при котором интерфейс hw выдает ошибку.
Приложение обычно описывает вывод звука путем объединения всех вышеупомянутых спецификаций в строку устройства, которая имеет одну из следующих форм (которые чувствительны к регистру ):
Поток ALSA - это поток данных, представляющий звук; наиболее распространенным форматом потока является PCM, который должен создаваться таким образом, чтобы соответствовать характеристикам или параметрам оборудования, включая:
Уровень системы на кристалле ALSA (ASoC) призван обеспечить лучшую поддержку ALSA на встроенных системах, использующих систему на- конструкция микросхемы (SoC).
Пользовательский режим | Пользовательские приложения | Например, bash, LibreOffice, GIMP, Blender, 0 AD, Mozilla Firefox и т. Д. | ||||
---|---|---|---|---|---|---|
Низкоуровневые системные компоненты: | Система демоны :. systemd, runit, logind, networkd, PulseAudio,... | Оконная система :. X11, Wayland, SurfaceFlinger (Android) | Другие библиотеки: . GTK +, Qt, EFL, SDL, SFML, FLTK, GNUstep и т. Д. | Graphics :. Mesa, AMD Catalyst,... | ||
Стандартная библиотека C | open () , exec () , sbrk () , socket () , fopen () , calloc () ,... (до 2000 подпрограмм ). glibc стремится быть быстрым, musl и uClibc целевые встроены системы, бионический, написанный для Android и т. д. Все нацелены на POSIX / S US -совместимый. | |||||
режим ядра | ядро Linux | stat , splice , dup , read , open , ioctl , write , mmap , close , exit и т. Д. (Около 380 системных вызовов). Ядро Linux Интерфейс системных вызовов (SCI, стремится быть POSIX / SUS -совместимо) | ||||
Планирование процессов. подсистема | IPC. подсистема | Управление памятью. подсистема | Виртуальные файлы. подсистема | Сеть. подсистема | ||
Другие компоненты: ALSA, DRI, evdev, LVM, устройство отображения, Linux Network Scheduler, Netfilter. Linux Security Modules : SELinux, TOMOYO, AppArmor, Smack | ||||||
Аппаратное обеспечение (CPU, основная память, устройства хранения данных и т. Д.) |