PulseAudio

PulseAudio
Developer(s) Lennart Poettering, Pierre Ossman, Shahms E. King, Tanu Kaskinen, Colin Guthrie, Arun Raghavan, David Henningsson
Initial release 17 July 2004 (2004-07-17)[1]
Stable release
9.0[2] / 22 June 2016 (2016-06-22)
Written in C[3]
Operating system FreeBSD, NetBSD, OpenBSD, Linux, Solaris, OS X and Microsoft Windows
Platform ARM, PowerPC, x86 / IA-32, x86-64, and MIPS architecture
Type
License GNU Lesser General Public License 2.1.[4]
Website pulseaudio.org

PulseAudio is a network-capable sound server program distributed by freedesktop.org. It runs on Linux, the BSDs including Mac OS X, Solaris and Microsoft Windows operating systems, although the Windows version has not been updated since 2011 and is now 8 versions behind.[5]

PulseAudio is free and open-source software subject to the terms of the GNU Lesser General Public License 2.1.[4]

It was created in 2004 under the name Polypaudio but was renamed in 2006 to PulseAudio.[6]

Software architecture

PulseAudio operational flow chart
PulseAudio is a daemon that does mixing in software.

PulseAudio runs a sound server, a background process accepting sound input from one or more sources (processes or capture devices) and redirecting it to one or more sinks (sound cards, remote network PulseAudio servers, or other processes).[7]

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.

Few programs cannot communicate with PulseAudio:
Sound source → libALSA → PulseAudio → ALSA driver → hardware

Most can:
Sound source → PulseAudio → ALSA driver → hardware

PulseAudio is network-capable:
Sound source → PulseAudio → network → PulseAudio → ALSA driver → hardware

A program can circumvent PulseAudio and communicate directly with the soundcard driver:
Sound source → ALSA driver → hardware

A program can circumvent PulseAudio and communicate with the ALSA soundserver:
Sound source → libALSA → ALSA driver → hardware

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".

Features

The main PulseAudio features include:[7]

Adoption

PulseAudio is available in recent versions of several major linux distributions such as Fedora, Ubuntu, Debian,[13] Mageia, Mandriva, Linux Mint, openSUSE, and OpenWrt.[14] 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[15] 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.[23]

General audio infrastructures

Before JACK and PulseAudio, sound on free 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.

See also

References

  1. Old release history
  2. "PulseAudio 9.0 Release Notes". 2016-06-22. Retrieved 2016-06-22.
  3. "PulseAudio", Analysis Summary, Open Hub, archived from the original on 2009-10-18, retrieved 2011-06-16
  4. 1 2 "License", PulseAudio git, Free desktop, retrieved 2011-06-16
  5. "PulseAudio on Windows"
  6. The Project Formerly Known as Polypaudio
  7. 1 2 "About", PulseAudio, Free desktop, retrieved 2013-03-11
  8. https://packages.debian.org/libcanberra
  9. https://packages.debian.org/libasound
  10. https://packages.debian.org/libcanberra-pulse
  11. Poettering, Lennart, "Interviews", Fedora Project, Red Hat, retrieved 2009-07-03
  12. Pulse Audio wiki, PulseAudio, archived from the original on 2009-10-18, retrieved 2009-07-19
  13. PulseAudio (wiki), Debian, retrieved 2013-11-09
  14. PulseAudio (wiki), OpenWRT, retrieved 2012-01-08
  15. "Open source identity: PulseAudio creator Lennart Poettering", TechWorld, 8 October 2009
  16. LPC: Linux audio: it's a mess, LWN, 2008-09-18, archived from the original on 2009-10-18, retrieved 2009-07-03
  17. Lennart Poettering (18 July 2008), PulseAudio FUD, 0pointer.de, archived from the original on 2009-10-18, retrieved 2009-12-30
  18. How-to: PulseAudio Fixes & System-Wide Equalizer Support, Ubuntu Forums, 2008-05-10, archived from the original on 2009-10-18, retrieved 2009-10-18
  19. I'll Break Your Audio, Lennart Poettering Blog, 19 October 2009, retrieved 26 December 2009
  20. No sound after running Flash, YouTube, etc. (pulseaudio solution), Ubuntu Forums, archived from the original on 2009-10-18, retrieved 2009-10-18
  21. PulseAudio, Ubuntu Wiki, archived from the original on 2009-10-18, retrieved 2009-10-18
  22. "Over-optimistic buffering in PulseAudio causes underruns (audible stuttering, pops)". Launchpad. Retrieved 9 November 2013.
  23. See Digital Music Composition/Making Sound.
  24. An introduction to Linux sound systems and APIs, Linux.com, 9 August 2004, retrieved 23 March 2013, OSS is available not only for Linux but also for BSD OSes and other Unixes. That may be its only advantage, because this system is not very powerful and was officially replaced by ALSA in 2.5 kernels...
  25. 4Front technologies releases the source code for open sound system, Linux PR, 2007-06-14, retrieved 2012-01-08.
Wikimedia Commons has media related to PulseAudio.
This article is issued from Wikipedia - version of the 8/11/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.