Звук в Linux
Под звуковой подсистемой понимается инфраструктура операционной системы, отвечающая за работу установленных в компьютере устройств для обработки звуки, а именно — звуковых карт, а также различных подключаемых извне (по USB или Firewire) интерфейсов. Эта инфраструктура включает в себя не только драйверы к той или иной звуковой карте, загружаемые ядром операционной системы, но и интерфейс для разработки прикладных приложений (API), предназначенных для записи, воспроизведения и обработки звукового сигнала.
В настоящее время в GNU/Linux существует две конкурирующие звуковые подсистемы — OSS (старая) и ALSA (новая). Под OSS здесь подразумевается свободная версия этой кроссплатформенной звуковой подсистемы, которую можно свободно распространять — в отличие от коммерческой версии OSS. OSS издавна входит в состав ядер Linux.
Однако, при разработке ядер версий 2.5.x/2.6.x в качестве стандартной звуковой подсистемы была выбрана сравнительно новая ALSA, имеющая ряд конструктивных преимуществ перед OSS и во многом созданная по мотивам технологически удачных смежных звуковых подсистем ОС Mac OS X — CoreAudio и CoreMidi.
Разработчики OSS продолжают обеспечивать поддержку современных ядер ветки 2.6.x, однако количество приложений, спроектированных для работы именно с ALSA, неуклонно продолжает расти. Также, благодаря существованию OSS-эмуляции в подсистеме ALSA, старые приложения, рассчитанные на использование с OSS (например некоторые игры) можно использовать и с ALSA. Еще стоит отметить, что появилась и эмуляция ALSA в последних версиях OSS.
Помимо звуковых подсистем существуют звуковые серверы. Основная задача звукового сервера — это программное смешивание одновременно звучащих сигналов, издаваемых несколькими приложениями. Типичный пример: необходимость слышать звуковое сопровождение смены статусов присутствия собеседников в сети мгновенного обмена сообщениями во время прослушивания музыки через программный проигрыватель. Поскольку не все звуковые карты умеют смешивать несколько одновременных сигналов, звуковой сервер берёт на себя эту задачу, транслируя звуковому устройству уже смешанный сигнал. В последних версиях звуковой подсистемы ALSA среди ее расширений появился модуль dmix, который позволяет программно смешивать разные звуковые потоки, что уменьшает необходимость в использовании специализированного аудиосервера для обычного пользователя.
Исторически сложилось так, что разработка каждой новой мощной графической оболочки рано или поздно начинает требовать создания собственного звукового сервера. Так, благодаря графической среде Enlightenment появился популярный до сих пор звуковой сервер EsounD (ESD, Enlightened Sound Daemon). В ходе разработки KDE был создан сервер aRts (analog realtime synthesizer). До версии 2.0 в GNOME использовался ESD, после чего произошёл переход не просто на новый звуковой сервер, а на новую модульную мультимедийную инфраструктуру под названием GStreamer, позволяющую не просто смешивать звуки, а буквально строить из модулей как из кирпичиков свою систему передачи мультимедийных данных разного типа — звук, видео, изображения.
В некоторых случаях между звуковыми серверами возникают конфликты. Хрестоматийным является пример, когда приложение, основанное на библиотеках графической оболочки KDE, вместе с собой запускает звуковой сервер aRts, который отнимает у работающего сервера ESD доступ к файлу устройства звуковой карты (/dev/dsp), вследствие чего музыка, воспроизводившаяся в XMMS, стихает.
Поскольку GStreamer является решением, позволяющим подружить один звуковой сервер с другим, существует немалая вероятность того, что в будущем он станет стандартом для различных графических оболочек. Во всяком случае, в настоящее время aRts является официально неподдерживаемым проектом, а в качестве его замены рассматривается именно GStreamer. Ряд приложений для KDE уже использует Gstreamer для вывода звука. К таким приложениям, например, относятся популярные проигрыватели звуковых файлов amaroK и YuK.
Многие проигрыватели звуковых и видеофайлов позволяют пользователю выбирать, через какой звуковой сервер воспроизводить звук. Для этого в случае с каждым проигрывателем необходимо проверить соответствующие параметры, заданные в его диалоге настройки.
Автор: Север
Источник: www.slackguide.com
|