Jump to content

PulseAudio

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Intgr (talk | contribs) at 09:47, 3 October 2014 (Revert, inappropriate link per WP:EL). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

PulseAudio
Developer(s)Lennart Poettering, Pierre Ossman, Shahms E. King, Tanu Kaskinen, Colin Guthrie
Initial releaseJuly 2004; 20 years ago (2004-07)
Stable release
5.0[1] / 3 March 2014; 10 years ago (2014-03-03)
Repository
Written inC[2]
Operating systemFreeBSD, NetBSD, OpenBSD, Linux, Solaris, and Microsoft Windows
PlatformARM, PowerPC, x86 / IA-32, x86-64, and MIPS architecture
Type
LicenseGNU Lesser General Public License 2.1.[3]
Websitefreedesktop.org/../PulseAudio

PulseAudio is a network-capable sound server hosted at freedesktop.org. Supported operating systems include Linux, the BSDs, Solaris as well as Microsoft Windows.

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

Software architecture

PulseAudio operational flow chart

PulseAudio is 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).[4]

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 complies with the XDG Sound Theme and Naming Specifications. libcanberra is an abstract API for desktop event sounds and a total replacement for the "PulseAudio sample cache API"

  • libcanberra defines a simple abstract interface for playing event sounds.[5]
  • interfaces with ALSA through libasound.[6]
  • libcanberra has a back-end to PulseAudio.[7]

libSydney

libsydney is a total replacement for the "PulseAudio streaming API".

Features

The main PulseAudio features include:[4]

  • Per-application volume controls[8]
  • An extensible plugin architecture with support for loadable modules
  • Compatibility with many popular audio applications[9]
  • Support for multiple audio sources and sinks
  • Low-latency operation and latency measurement
  • A zero-copy memory architecture for processor resource efficiency
  • Ability to discover other computers using PulseAudio on the local network and play sound through their speakers directly
  • Ability to change which output device an application plays sound through while the application is playing sound (without the application needing to support this, and indeed without even being aware that this happened)
  • A command-line interface with scripting capabilities
  • A sound daemon with command line reconfiguration capabilities
  • Built-in sample conversion and resampling capabilities
  • The ability to combine multiple sound cards into one
  • The ability to synchronize multiple playback streams
  • Bluetooth audio devices with dynamic detection
  • The ability to enable system wide equalization

Adoption

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

  • When first adopted by distributions, PulseAudio developer Lennart Poettering described it as "the software that currently breaks your audio".[13] Poettering later claimed that "Ubuntu didn't exactly do a stellar job. They didn't do their homework" in adopting PulseAudio[14] for Ubuntu "Hardy Heron" (8.04), a problem which was then improved with subsequent Ubuntu releases.[15] However, in October 2009, Poettering reported that he was still not happy with Ubuntu's integration of PulseAudio.[16]
  • Interaction with old sound components by particular software: Certain programs, such as Adobe Flash for Linux, caused instability in PulseAudio.[17][18] Newer implementations of Flash plugins do not require the conflicting elements, and as a result Flash and PulseAudio are now compatible.
  • Early management of buffer over-underruns: Earlier versions of Pulseaudio sometimes started to distort the processed audio due to incorrect handling of buffer over-/underruns.[19]

Other sound servers

JACK is a professional sound server, which 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 and 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 as the same time as JACK clients. The procedure is explained here.

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.

  • ALSA provides a software mixer called dmix, which was developed prior to PulseAudio. This is available on almost all Linux distributions and is a simpler PCM audio mixing solution. It does not provide the advanced features (such as timer-based scheduling, and network audio) of PulseAudio. On the other hand, ALSA offers, when combined with corresponding sound cards and software, low latencies.
  • OSS. This was the original sound system used in Linux and other Unices, but was deprecated after the 2.5 Linux kernel.[20] Proprietary development was continued by 4Front Technologies, who in July 2007 released sources for OSS under CDDL for OpenSolaris and GPL for Linux.[21] The modern implementation, Open Sound System v4, provides software mixing, resampling, and changing of the volume on a per-application basis; in contrast to PulseAudio, these features are implemented within the kernel.

See also

References

  1. ^ "Notes on 5.0". Retrieved 3 March 2014.
  2. ^ "PulseAudio", Analysis Summary, Ohloh, archived from the original on 18 October 2009, retrieved 16 June 2011
  3. ^ a b "License", PulseAudio git, Free desktop, retrieved 16 June 2011
  4. ^ a b "About", PulseAudio, Free desktop, retrieved 11 March 2013
  5. ^ https://packages.debian.org/libcanberra
  6. ^ https://packages.debian.org/libasound
  7. ^ https://packages.debian.org/libcanberra-pulse
  8. ^ Poettering, Lennart, "Interviews", Fedora Project, Red Hat, retrieved 3 July 2009
  9. ^ Pulse Audio wiki, PulseAudio, archived from the original on 18 October 2009, retrieved 19 July 2009
  10. ^ PulseAudio (wiki), Debian, retrieved 9 November 2013
  11. ^ PulseAudio (wiki), OpenWRT, retrieved 8 January 2012
  12. ^ "Open source identity: PulseAudio creator Lennart Poettering", TechWorld, 8 October 2009
  13. ^ LPC: Linux audio: it's a mess, LWN, 18 September 2008, archived from the original on 18 October 2009, retrieved 3 July 2009
  14. ^ Lennart Poettering (18 July 2008), PulseAudio FUD, 0pointer.de, archived from the original on 18 October 2009, retrieved 30 December 2009
  15. ^ How-to: PulseAudio Fixes & System-Wide Equalizer Support, Ubuntu Forums, 10 May 2008, archived from the original on 18 October 2009, retrieved 18 October 2009
  16. ^ I'll Break Your Audio, Lennart Poettering Blog, 19 October 2009, retrieved 26 December 2009
  17. ^ No sound after running Flash, YouTube, etc. (pulseaudio solution), Ubuntu Forums, archived from the original on 18 October 2009, retrieved 18 October 2009
  18. ^ PulseAudio, Ubuntu Wiki, archived from the original on 18 October 2009, retrieved 18 October 2009
  19. ^ "Over-optimistic buffering in PulseAudio causes underruns (audible stuttering, pops)". Launchpad. Retrieved 9 November 2013.
  20. ^ 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...
  21. ^ 4Front technologies releases the source code for open sound system, Linux PR, 14 June 2007, retrieved 8 January 2012.