Sound Policy

Материал из ALT Linux Wiki
Stub.png
Черновик политики Sisyphus
Автор(ы) — icesik@
Обсуждение в devel@
Обсуждается с 26.01.2010


Sound Policy — поведение по-умолчанию для приложений работающих со звуком.

Общие соображения

Данное полиси является отправной точкой для маинтейнеров собирающих звуковые приложения в ALT Linux. Оно растолковывает общие принципы сборки приложений для работы со звуком. Оно затрагивает приложения для проигрывания звука (mpg123, mpg321, rhythmbox, amarok, xmms и etc), приложения для проигрывания видео (mplayer, totem и etc), записи звука и видео в общем.

Теория

В текущий момент в среде GNU/Linux существует достаточное количество звуковых серверов, звуковых библиотек и интерфейсов для ввода/вывода звука.

Начнём с интерфейсов:

  • ALSA
  • OSSv3
  • OSSv4

Звуковые серверы:

  • PulseAudio
  • EsounD
  • aRts
  • NAS
  • JACK

Библиотеки:

  • libao

ALSA

ALSA это набор драйверов и библиотек для ввода/вывода звука. Является низкоуровневым интерфейсом по-умолчанию. Поддерживает кучу звуковых карт. Нет поддержки сети. Имеет регулярные проблемы с микшированием звука из различных приложений (dmix).

OSSv3 и OSSv4

OSSv3 это старый набор драйверов для звука и API для работы с ним. В текущее время практически не используется. Появился после того как 4Front Technologies выложили не нужные драйвера под GPL в ядро Linux. В тоже время продолжая продавать драйвера для более топовых моделей. Со временем в ядре появились и другие драйвера написанные сообществом с таким же API.

OSSv4 это более современный вариант OSSv3. Разработчик выложил драйвера под тремя лицензиями: BSD/GPL/CDDL и про проприетарной. Имеется прослойка для эмуляции ALSA API.

PulseAudio

Современный звуковой аудио сервер. О возможностях можно почитать в Википедии.

EsounD

Старый звуковой сервер который использовался в GNOME. Не поддерживается. В GNOME он был заменём на PulseAudio.

aRts

Звуковой сервер который использовался в KDE3. В KDE4 выкинут и больше не поддерживается.

NAS

TODO

JACK

Звуковой сервер для профессионалов. Нет поддержки сети. Очень низкая задержка ввода и вывода звука.

Как это всё должно работать

В общем случае, для обычного пользователя всё должно работать незаметно и сразу после установки из дистрибутива. Пользователь не должен настраивать каждое приложение после установки.

Технически, сейчас это лучше всего реализовывается через PulseAudio.

Сборка приложений для работы со звуком

Все приложения которые выводят звук должны по-умолчанию выводить его через PulseAudio. Если у приложения нет поддержки PulseAudio, то использовать ALSA. Ну и продробнее:

  • Собирать у приложения модуль вывода через ALSA
  • Собирать у приложения модуль вывода через PulseAudio (и ставить у основного приложения зависимость на этот субпакет). Тут ещё надо уточнить детали.
  • Собирать у приложения модуль вывода через JACK
  • Собирать или нет у приложения модуль для вывода звука через OSS на усмотрение маинтейнера
  • Собирать или нет у приложения модуль для вывода звука через EsounD на усмотрение маинтейнера
  • Собирать или нет у приложения модуль для вывода звука через aRts на усмотрение маинтейнера
  • Собирать или нет у приложения модуль для вывода звука через NAS на усмотрение маинтейнера
  • Собирать или нет у приложения модуль для вывода звука через libao на усмотрение маинтейнера

Если приложение не имеет поддержки модулей, а может только в себя вкомпиливать поддержку звуковых подсистем, то собирать с ALSA, PulseAudio и JACK. Остальные варианты вывода звука на усмотрение маинтейнера.

Если приложение не умеет PulseAudio, но умеет ALSA и libao то желательнее использовать ALSA. Они оба умеет играть через PulseAudio сами.

Кроме самой сборки нужно ещё поправить настройки приложения что бы оно по-умолчанию выводило звук через PulseAudio.

Поддержка со стороны DE/WM

DE/WM должен при запуске запускать pulseaudio deamon если тот установлен в системе.

GNOME

GNOME сейчас сам запускает pulseaudio при старте.

KDE

Уточнить.

OpenBox

Уточнить.

Ссылки