Enlightened Sound Daemon (ESD): Звуковой сервер для Linux и UNIX
Enlightened Sound Daemon
ESD (EsounD): звуковой сервер для Linux/UNIX, обеспечивающий простой интерфейс к аудиоустройствам и совместный доступ приложений. Безопасность и совместимость.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
Звуковой сервер
Sound server
В вычислительной технике 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.
In computing, the Enlightened Sound Daemon (ESD or EsounD) was the sound server for Enlightenment and GNOME. Esound is a small sound daemon for both Linux and UNIX. ESD was created to provide a consistent and simple interface to the audio device, so applications do not need to have different driver support written per architecture. It was also designed to enhance capabilities of audio devices such as allowing more than one application to share an open device. ESD accomplishes these things while remaining transparent to the application, meaning that the application developer can simply provide ESD support and let it do the rest. On top of this, the API is designed to be very similar to the current audio device API, making it easy to port to ESD. ESD will mix the simultaneous audio output of multiple running programs, and output the resulting stream to the sound card. ESD can also manage network transparent audio. As such, an application that supports ESD can output audio over the network, to any connected computer that is running an ESD server. ESD support must be specifically written and added into applications, as ESD does not emulate normal audio hardware APIs. Since ESD has been around for over a decade, earlier than almost any other sound server, a very large number of Unix applications have support for ESD output built in, or available as add ons. ESD was maintained as part of the GNOME project, but as of April 2009, all ESD modules in GNOME have been ported to libcanberra for event sounds or GStreamer/PulseAudio for everything else. PulseAudio 2.0 completely drops ESounD support.
Обзор архитектуры
Esound (ESD) — это автономный звуковой демон, который предоставляет абстракцию системного звукового устройства для множества клиентов. В Linux, использующем Open Sound System (OSS), а также в других UNIX-системах, как правило, только один процесс может получить доступ к звуковому устройству. Это неприемлемо в графической среде, такой как GNOME, поскольку ожидается, что множество приложений будут воспроизводить звук (музыкальные декодеры, звуковые события, видеоконференции и т. д.). Демон ESD подключается к звуковому устройству и принимает соединения от нескольких клиентов, смешивая входящие аудиопотоки и отправляя полученный результат на звуковое устройство. Соединения разрешаются только для клиентов, успешно прошедших аутентификацию, что исключает возможность прослушивания звука неавторизованными пользователями. Помимо приема клиентских соединений с локальной машины, ESD может быть настроен для приема соединений с удаленных хостов, прошедших успешную аутентификацию. Приложения, желающие взаимодействовать с демоном ESD, используют библиотеку libesd. Подобно работе с файлами, сначала открывается соединение с ESD. Библиотека libesd автоматически запустит демон ESD, если он еще не запущен. Затем данные либо считываются, либо записываются в демон ESD. Для ESD-клиента, работающего на той же машине, что и демон ESD, данные передаются через локальный сокет, а затем записываются на звуковое устройство демоном ESD. Для клиента на удаленной машине данные отправляются libesd с удаленной машины по сети демону ESD. Весь этот процесс полностью прозрачен для приложения, использующего ESD.
Esound (ESD) is a stand alone sound daemon that abstracts the system sound device to multiple clients. Under Linux using the Open Sound System (OSS), as well as other UNIX systems, typically only one process may open the sound device. This is not acceptable in a desktop environment like GNOME, as it is expected that many applications will be making sounds (music decoders, event based sounds, video conferencing, etc.). The ESD daemon connects to the sound device and accepts connections from multiple clients, mixing the incoming audio streams and sending the result to the sound device. Connections are only allowed to clients that can authenticate successfully, alleviating the concern that unauthorized users can eavesdrop via the sound device. In addition to accepting client connections from the local machine, ESD can be configured to accept client connections from remote hosts that authenticate successfully. Applications wanting to contact the ESD daemon do so using the libesd library. Much like with file i/o, an ESD connection is first opened. The ESD daemon will be spawned automatically by libesd if a daemon is not already present. Data is then either read or written to the ESD daemon. For an ESD client local to the machine that the ESD daemon is running on, the data is transferred through a local socket, then written to the sound device by the ESD daemon. For a client on a remote machine, the data is sent by libesd on the remote machine over the network to the ESD daemon. The process is completely transparent to the application using ESD.