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

редактировать
Программная среда ALSA
Скриншот Alsamixer 1.0.14 Снимок экрана Alsamixer 1.0.14
Оригинал автор (ы) Ярослав Кисела
Разработчик (и) Команда ALSA
Первоначальный выпуск1998; 22 года назад (1998 г.)
Стабильный выпуск 1.2.1 / 15 ноября 2019 г.; 10 месяцев назад (2019-11-15)
Написано вC
Операционной системе Linux
Тип
Лицензия
Веб-сайтalsa-project.org
Linux API состоит из интерфейса системных вызовов ядра Linux, Библиотека GNU C (от GNU ), libdrm, libalsa и libevdev (от freedesktop.org ). ALSA является частью ядра Linux, а PulseAudio является промежуточным программным обеспечением, частью нижних уровней стека рабочего стола. Так же и SDL.

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).

Содержание

  • 1 История
  • 2 Возможности
    • 2.1 Приложения
  • 3 Концепции
  • 4 Реализации
  • 5 См. Также
  • 6 Ссылки
  • 7 Внешние ссылки

История

Проект по разработке 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.

Взаимодействие между различными частями стека вывода звука Linux

Возможности

ALSA была разработана с некоторыми функциями, которые на момент ее создания не поддерживались 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 выдает ошибку.

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

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

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

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

Реализации

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

См. также

  • Портал бесплатного программного обеспечения с открытым исходным кодом

Ссылки

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

Различные уровни в Linux, также показано разделение между пользовательским пространством и пространством ядра
Пользовательский режимПользовательские приложенияНапример, 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, основная память, устройства хранения данных и т. Д.)
Последняя правка сделана 2021-06-10 02:08:06
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте