Sound Policy
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
Уточнить.