Расширенная звуковая архитектура Linux - Advanced Linux Sound Architecture

ALSA
Alsa v1.0.14 ubuntu7.1 ru.png
Скриншот Alsamixer 1.0.14
Автор (ы) оригинала Ярослав Кисела
Разработчики) Команда ALSA
Первый выпуск 1998 ; 23 года назад ( 1998 )
Стабильный выпуск
1.2.5.1 / 14 июня 2021 г . ; 3 месяца назад ( 14 июня 2021 г. )
Написано в C
Операционная система Linux
Тип
Лицензия
Веб-сайт alsa-project .org
Linux API состоит из интерфейса системы вызовов в Linux ядра, в GNU C Library (по GNU ), libdrm , libalsa и libevdev (по freedesktop.org ).
ALSA является частью ядра Linux , а PulseAudio - промежуточным программным обеспечением, частью нижних уровней стека рабочего стола. То же самое и SDL .

Расширенная звуковая архитектура Linux ( ALSA ) - это программная среда и часть ядра Linux, которая предоставляет интерфейс прикладного программирования (API) для драйверов устройств звуковой карты .

Одними из целей проекта ALSA с самого начала были автоматическая настройка оборудования звуковой карты и изящное управление несколькими звуковыми устройствами в системе. ALSA выпускается под GPL-2.0 или новее и LGPL-2.1 или новее .

В Linux звуковые серверы, такие как sndio , PulseAudio , JACK (редактирование и микширование звука профессионального уровня с низкой задержкой) и PipeWire , а также API более высокого уровня (например, OpenAL , SDL audio и т. Д.) Работают поверх ALSA, и это звук драйверы устройств карты. ALSA пришла на смену более старому Linux-порту 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.

Функции

ALSA была разработана с некоторыми функциями, которые на момент ее создания не поддерживались OSS:

Помимо драйверов звуковых устройств, ALSA объединяет библиотеку пользовательского пространства для разработчиков приложений, которые хотят использовать функции драйвера через интерфейс более высокого уровня, чем интерфейс, предоставляемый для прямого взаимодействия с драйверами ядра. В отличие от API ядра, который пытается напрямую отразить возможности оборудования, библиотека пользовательского пространства ALSA представляет собой абстракцию, которая остается максимально стандартизированной для различных базовых аппаратных элементов. Эта цель частично достигается за счет использования подключаемых модулей программного обеспечения ; например, многие современные звуковые карты или встроенные звуковые чипы не имеют регулятора «основной громкости». Вместо этого для этих устройств библиотека пользовательского пространства обеспечивает программное управление громкостью с использованием подключаемого модуля « softvol », и обычному прикладному программному обеспечению не нужно заботиться о том, реализовано ли такое управление посредством нижележащего оборудования или программной эмуляции такого нижележащего оборудования.

Приложения

Дополнительно к каркасу программного обеспечения внутреннего к ядру Linux, проект ALSA также предоставляет инструменты командной строки и утилиты alsactl, amixer, arecord/aplayи alsamixer, Н. Ncurses -На TUI .

Там также ГПИ запрограммированные сторонних разработчиков , таких как GNOME-ALSAmixer ( с использованием GTK ), KMix, XFCE4-смеситель, LXPanel, QasHctl, QasMixer, Pavucontrol, AconnectGUI, tapiir, PolarBear, ALSAmixerGUI ( с использованием FLTK ), ZynAddSubFX , Yoshimi , и еще более.

Концепции

В этом разделе представлен обзор основных концепций, относящихся к ALSA.

Обычно ALSA поддерживает до восьми карт , пронумерованных от 0 до 7; каждая карта представляет собой физическое или логическое устройство ядра, способное к вводу и выводу. Кроме того, к каждой карте можно обращаться по ее идентификатору , который представляет собой поясняющую строку, такую ​​как « Гарнитура » или « ICH9 ».

На карте есть устройства , пронумерованные начиная с 0; устройство может быть воспроизводящего типа, что означает, что оно выводит звук с компьютера, или какого-либо другого типа, такого как захват , управление , таймер или секвенсор ; номер устройства 0 используется по умолчанию, если не указано конкретное устройство.

Устройство может иметь подустройства , пронумерованные, начиная с 0; подустройство представляет некоторую соответствующую звуковую оконечную точку для устройства, например пару динамиков. Если подустройство не указано или если указано подустройство с номером -1, то используется любое доступное подустройство.

Интерфейс карты - это описание протокола ALSA для доступа к карте; возможные интерфейсы включают: hw , plughw , default и plug: dmix . Интерфейс hw обеспечивает прямой доступ к устройству ядра, но не поддерживает микширование программного обеспечения или адаптацию потока. Plughw и по умолчанию включить звуковой выход , где HW интерфейс будет выдавать ошибку.

Приложение обычно описывает вывод звука путем объединения всех вышеупомянутых спецификаций в строку устройства , которая имеет одну из следующих форм (с учетом регистра ):

  • интерфейс: карта, устройство, подустройство
  • интерфейс: CARD = 1, DEV = 3, SUBDEV = 2 .

Поток ALSA - это поток данных, представляющий звук; наиболее распространенным форматом потока является PCM, который должен создаваться таким образом, чтобы соответствовать характеристикам или параметрам оборудования, включая:

  • частота дискретизации : часто 44,1 кГц в домашних стереосистемах или 48 кГц в домашних кинотеатрах, но до 88,2 кГц, 96 кГц или даже 192 кГц для производства или воспроизведения звука Hi-Fi.
  • ширина выборки : измеряется в некотором количестве бит на выборку (например, 8, 16, 24 или 32 бит / выборка)
  • кодировка образца : например, порядок байтов
  • количество каналов : 1 для моно, 2 для стерео или 6 для AC-3 / IEC958

Реализации

Уровень ALSA System on Chip (ASoC) призван обеспечить лучшую поддержку ALSA во встроенных системах , использующих архитектуру системы на кристалле (SoC).

Смотрите также

использованная литература

внешние ссылки

  • Официальный веб-сайт
  • Констебль, Марк. "Альса Вики" . AlsaOpensrcOrg . Архивировано из оригинального 29 марта 2002 года . Проверено 18 июля 2021 года . Некоторые из причин, по которым этот сайт продолжает существовать, заключаются в том, что никто с официального сайта ALSA никогда ничего не вносил на этот сайт (до того, как существовал официальный сайт, он появился на несколько лет раньше официальной вики), никто официально или официально предложили слияние, никто другой не проявил серьезного интереса к их объединению, и, что наиболее важно, существует значительное количество внешних рефералов и обращений Google, которые приходят непосредственно на этот сайт, потому что он существует уже так давно.
Различные уровни в Linux, также демонстрирующие разделение между пользовательским пространством и пространством ядра.
Пользовательский режим Пользовательские приложения bash , LibreOffice , GIMP , Blender , 0 AD , Mozilla Firefox , ...
Системные компоненты Демоны :
Systemd , runit , udevd , polkitd , SSHD , Smbd ...
Оконный менеджер :
X11 , Wayland , SurfaceFlinger (Android)
Графика :
Mesa , AMD Catalyst , ...
Другие библиотеки:
GTK , Qt , EFL , SDL , SFML , FLTK , GNUstep , ...
Стандартная библиотека C fopen, execv, malloc, memcpy, localtime, pthread_create... (до 2000 подпрограмм )
Glibc цели , чтобы быть быстрой, MUSL и uClibc целевых встроенные системы, бионические , написанные для Android и т.д. Все стремятся быть POSIX / SUS -Совместимы.
Режим ядра Ядро 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 : SELinux , Tomoyo , AppArmor , Хлопайте
Аппаратное обеспечение ( ЦП , основная память , устройства хранения данных и т. Д.)