Written in C | ||
Developer(s) Lennart PoetteringPierre OssmanShahms E. KingTanu KaskinenColin GuthrieArun RaghavanDavid Henningsson Initial release 17 July 2004; 12 years ago (2004-07-17) Stable release 10.0 / 19 January 2017; 2 months ago (2017-01-19) Repository github.com/pulseaudio/pulseaudio Operating system |
PulseAudio is a network-capable sound server program distributed via the freedesktop.org project. It runs on Linux, various BSD distributions such as FreeBSD and OpenBSD, macOS, as well as the Solaris operating system. Microsoft Windows was previously supported via the MinGW toolchain (implementation of the GNU toolchain, which includes various tools such as GCC and binutils). The Windows port has not been updated since 2011, however.
Contents
- Software architecture
- libcanberra
- libSydney
- Features
- Adoption
- Problems during adoption phase
- Other sound servers
- General audio infrastructures
- References
PulseAudio is free and open-source software, and is licensed under the terms of the GNU Lesser General Public License. It is licensed under version 2.1 of the aforementioned license.
It was created in 2004 under the name Polypaudio but was renamed in 2006 to PulseAudio.
Software architecture
PulseAudio acts as a sound server, where a background process accepting sound input from one or more sources (processes, capture devices, etc) is created. The background process then redirects mentioned sound sources to one or more sinks (sound cards, remote network PulseAudio servers, or other processes).
One of the goals of PulseAudio is to reroute all sound streams through it, including those from processes that attempt to directly access the hardware (like legacy OSS applications). PulseAudio achieves this by providing adapters to applications using other audio systems, like aRts and ESD.
In a typical installation scenario under Linux, the user configures ALSA to use a virtual device provided by PulseAudio. Thus, applications using ALSA will output sound to PulseAudio, which then uses ALSA itself to access the real sound card. PulseAudio also provides its own native interface to applications that want to support PulseAudio directly, as well as a legacy interface for ESD applications, making it suitable as a drop-in replacement for ESD.
For OSS applications, PulseAudio provides the padsp
utility, which replaces device files such as /dev/dsp
, tricking the applications into believing that they have exclusive control over the sound card. In reality, their output is rerouted through PulseAudio.
libcanberra
libcanberra is an abstract API for desktop event sounds and a total replacement for the "PulseAudio sample cache API":
libSydney
libSydney is a total replacement for the "PulseAudio streaming API", and plans have been made for libSyndey to eventually become the only audio API used in PulseAudio.
Features
The main PulseAudio features include:
Adoption
PulseAudio is available in recent versions of several major linux distributions such as Fedora, Ubuntu, Debian, Mageia, Mandriva, Linux Mint, openSUSE, and OpenWrt. There is support for PulseAudio in the GNOME project, and also in KDE, as it is integrated into Plasma Workspaces, adding support to Phonon (the KDE multimedia framework) and KMix (the integrated mixer application) as well as a "Speaker Setup" GUI to aid the configuration of multi-channel speakers.
Various Linux-based mobile devices, including Nokia N900, Nokia N9 and the Palm Pre use PulseAudio.
Tizen, an open-source mobile operating system, which is a project of the Linux Foundation and is governed by a Technical Steering Group (TSG) composed of Intel and Samsung, uses PulseAudio.
Problems during adoption phase
Other sound servers
JACK is a sound server that provides real-time, low latency (i.e. 5 milliseconds or less) audio performance and, since JACK2, supports efficient load balancing by utilizing symmetric multiprocessing; that is, the load of all audio clients can be distributed among several processors. JACK is the preferred sound server for professional audio applications such as Ardour, ReZound, and LinuxSampler; multiple free audio-production distributions use it as the default audio server.
It is possible for JACK and PulseAudio to coexist: while JACK is running, PulseAudio can automatically connect itself as a JACK client, allowing PulseAudio clients to make and record sound at the same time as JACK clients.
General audio infrastructures
Before JACK and PulseAudio, sound on these systems was managed by multi-purpose integrated audio solutions. These solutions do not fully cover the mixing and sound streaming process, but they are still used by JACK and PulseAudio to send the final audio stream to the sound card.