Введение

Звуковой сервер

В вычислительной технике Enlightened Sound Daemon (ESD или EsounD) являлся звуковым сервером для Enlightenment и GNOME. Esound — это небольшой звуковой демон для Linux и UNIX. ESD был создан для обеспечения согласованного и простого интерфейса к аудиоустройству, чтобы приложениям не требовалась различная поддержка драйверов для каждой архитектуры. Он также был разработан для расширения возможностей аудиоустройств, например, для обеспечения возможности одновременного использования открытого устройства несколькими приложениями. ESD выполняет эти задачи, оставаясь прозрачным для приложения, то есть разработчику приложения достаточно реализовать поддержку ESD, а остальное сделает он. Более того, API разработан таким образом, чтобы быть очень похожим на текущий API аудиоустройства, что упрощает портирование на ESD. ESD смешивает одновременный аудиовыход нескольких запущенных программ и выводит полученный поток на звуковую карту. ESD также может управлять сетевым аудио с прозрачной передачей. Таким образом, приложение, поддерживающее ESD, может выводить звук по сети на любой подключенный компьютер, на котором запущен сервер ESD. Поддержка ESD должна быть специально реализована и добавлена в приложения, поскольку ESD не эмулирует стандартные аппаратные API. Поскольку ESD существует уже более десяти лет, раньше, чем почти любой другой звуковой сервер, большое количество Unix-приложений имеет встроенную поддержку вывода ESD или возможность её добавления в виде дополнений. ESD поддерживался как часть проекта GNOME, но с апреля 2009 года все модули ESD в GNOME были перенесены на libcanberra для событийных звуков или GStreamer/PulseAudio для всего остального. PulseAudio 2.0 полностью отказался от поддержки ESound.

Обзор архитектуры

Esound (ESD) — это автономный звуковой демон, который предоставляет абстракцию системного звукового устройства для множества клиентов. В Linux, использующем Open Sound System (OSS), а также в других UNIX-системах, как правило, только один процесс может получить доступ к звуковому устройству. Это неприемлемо в графической среде, такой как GNOME, поскольку ожидается, что множество приложений будут воспроизводить звук (музыкальные декодеры, звуковые события, видеоконференции и т. д.). Демон ESD подключается к звуковому устройству и принимает соединения от нескольких клиентов, смешивая входящие аудиопотоки и отправляя полученный результат на звуковое устройство. Соединения разрешаются только для клиентов, успешно прошедших аутентификацию, что исключает возможность прослушивания звука неавторизованными пользователями. Помимо приема клиентских соединений с локальной машины, ESD может быть настроен для приема соединений с удаленных хостов, прошедших успешную аутентификацию. Приложения, желающие взаимодействовать с демоном ESD, используют библиотеку libesd. Подобно работе с файлами, сначала открывается соединение с ESD. Библиотека libesd автоматически запустит демон ESD, если он еще не запущен. Затем данные либо считываются, либо записываются в демон ESD. Для ESD-клиента, работающего на той же машине, что и демон ESD, данные передаются через локальный сокет, а затем записываются на звуковое устройство демоном ESD. Для клиента на удаленной машине данные отправляются libesd с удаленной машины по сети демону ESD. Весь этот процесс полностью прозрачен для приложения, использующего ESD.