SlideShare a Scribd company logo
1 of 193
Download to read offline
Introduction
   What is PulseAudio?
                  Usage
               Internals
                Recipes
                Outlook




The PulseAudio Sound Server
                 foss.in 2007


        Lennart Poettering
    lennart@poettering.net




              December 2007

    Lennart Poettering     The PulseAudio Sound Server
Introduction
                    What is PulseAudio?
                                   Usage
                                Internals
                                 Recipes
                                 Outlook


Who Am I?



  Software Engineer at Red Hat, Inc.
  Developer of PulseAudio, Avahi and a few other Free Software
  projects
  http://0pointer.de/lennart/
  lennart@poettering.net
  IRC: mezcalero




                     Lennart Poettering     The PulseAudio Sound Server
Introduction
What is PulseAudio?
               Usage
            Internals
             Recipes
             Outlook




             Introduction




 Lennart Poettering     The PulseAudio Sound Server
Introduction
                 What is PulseAudio?
                                Usage
                             Internals
                              Recipes
                              Outlook


Current State of Linux Audio




                  Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Current State of Linux Audio

   It’s a mess! There are just too many widely adopted but
   competing and incompatible sound systems.




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Current State of Linux Audio

   It’s a mess! There are just too many widely adopted but
   competing and incompatible sound systems.
   Too many low-level APIs: Open Sound System (OSS), ALSA,
   EsounD, aRts, Phonon, JACK




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Current State of Linux Audio

   It’s a mess! There are just too many widely adopted but
   competing and incompatible sound systems.
   Too many low-level APIs: Open Sound System (OSS), ALSA,
   EsounD, aRts, Phonon, JACK
   Incompatible APIs: The OSS API is the *only* API that is widely
   understood and at least a half-way compatible with other sound
   systems. All other APIs are incompatible and exclusive to each
   other, e.g. you cannot run an ALSA application on top of EsounD,
   etc. (Notable exception: the JACK plugin for ALSA)




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Current State of Linux Audio

   It’s a mess! There are just too many widely adopted but
   competing and incompatible sound systems.
   Too many low-level APIs: Open Sound System (OSS), ALSA,
   EsounD, aRts, Phonon, JACK
   Incompatible APIs: The OSS API is the *only* API that is widely
   understood and at least a half-way compatible with other sound
   systems. All other APIs are incompatible and exclusive to each
   other, e.g. you cannot run an ALSA application on top of EsounD,
   etc. (Notable exception: the JACK plugin for ALSA)
   OSS API emulation is kludgy: $LD PRELOAD! (esddsp, artsdsp,
   aoss)

                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Current State of Linux Audio II


   Sound systems fight a constant battle which one gets access to the
   sound device.




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Current State of Linux Audio II


   Sound systems fight a constant battle which one gets access to the
   sound device.
   If EsounD wins only EsounD clients can play audio.




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Current State of Linux Audio II


   Sound systems fight a constant battle which one gets access to the
   sound device.
   If EsounD wins only EsounD clients can play audio.
   If aRts wins only aRts clients can play audio.




                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Current State of Linux Audio II


   Sound systems fight a constant battle which one gets access to the
   sound device.
   If EsounD wins only EsounD clients can play audio.
   If aRts wins only aRts clients can play audio.
   If JACK wins only JACK (and some ALSA) clients can play audio.




                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Current State of Linux Audio II


   Sound systems fight a constant battle which one gets access to the
   sound device.
   If EsounD wins only EsounD clients can play audio.
   If aRts wins only aRts clients can play audio.
   If JACK wins only JACK (and some ALSA) clients can play audio.
   If ALSA dmix wins OSS applications lose.




                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                    What is PulseAudio?
                                   Usage
                                Internals
                                 Recipes
                                 Outlook


Current State of Linux Audio III


   If EsounD, aRts or ALSA dmix wins, you cannot have good,
   dependable, exactly measured latencies.




                     Lennart Poettering     The PulseAudio Sound Server
Introduction
                    What is PulseAudio?
                                   Usage
                                Internals
                                 Recipes
                                 Outlook


Current State of Linux Audio III


   If EsounD, aRts or ALSA dmix wins, you cannot have good,
   dependable, exactly measured latencies.
   If EsounD wins you cannot have surround sound.




                      Lennart Poettering    The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Current State of Linux Audio III


   If EsounD, aRts or ALSA dmix wins, you cannot have good,
   dependable, exactly measured latencies.
   If EsounD wins you cannot have surround sound.
   If OSS wins you can (usually) play only a single audio stream at a
   time




                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Current State of Linux Audio III


   If EsounD, aRts or ALSA dmix wins, you cannot have good,
   dependable, exactly measured latencies.
   If EsounD wins you cannot have surround sound.
   If OSS wins you can (usually) play only a single audio stream at a
   time
   If JACK wins you can only have FLOAT32 samples - and playback
   needs to be started manually in JACK




                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Current State of Linux Audio III


   If EsounD, aRts or ALSA dmix wins, you cannot have good,
   dependable, exactly measured latencies.
   If EsounD wins you cannot have surround sound.
   If OSS wins you can (usually) play only a single audio stream at a
   time
   If JACK wins you can only have FLOAT32 samples - and playback
   needs to be started manually in JACK
   ...



                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Current State of Linux Audio IV



   Abstraction APIs exist, but are not widely accepted.




                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Current State of Linux Audio IV



   Abstraction APIs exist, but are not widely accepted.
   PortAudio, libao, OpenAL, SDL, CSL




                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Current State of Linux Audio IV



   Abstraction APIs exist, but are not widely accepted.
   PortAudio, libao, OpenAL, SDL, CSL
   Phonon?




                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Current State of Linux Audio IV



   Abstraction APIs exist, but are not widely accepted.
   PortAudio, libao, OpenAL, SDL, CSL
   Phonon?
   Is excessive abstraction a good idea?




                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Current State of Linux Audio IV



   Abstraction APIs exist, but are not widely accepted.
   PortAudio, libao, OpenAL, SDL, CSL
   Phonon?
   Is excessive abstraction a good idea?
   Amarok on Phonon on GStreamer on ALSA on PulseAudio on
   ALSA?




                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Current State of Linux Audio V
   Free desktops lack a “Compiz for sound”:
       Allowing different volumes for each running application




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Current State of Linux Audio V
   Free desktops lack a “Compiz for sound”:
       Allowing different volumes for each running application
       Automatically remembering the volume for each application




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Current State of Linux Audio V
   Free desktops lack a “Compiz for sound”:
       Allowing different volumes for each running application
       Automatically remembering the volume for each application
       Automatically remembering the output device of an
       application




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Current State of Linux Audio V
   Free desktops lack a “Compiz for sound”:
       Allowing different volumes for each running application
       Automatically remembering the volume for each application
       Automatically remembering the output device of an
       application
       Doing “hot” switching of playback streams between devices
       on USB headset hotplug
       Interrupting music playback when a VoIP call takes place




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Current State of Linux Audio V
   Free desktops lack a “Compiz for sound”:
       Allowing different volumes for each running application
       Automatically remembering the volume for each application
       Automatically remembering the output device of an
       application
       Doing “hot” switching of playback streams between devices
       on USB headset hotplug
       Interrupting music playback when a VoIP call takes place
       Automatically increasing volume of the application in
       foreground, decreasing volume of window in background



                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Current State of Linux Audio V
   Free desktops lack a “Compiz for sound”:
       Allowing different volumes for each running application
       Automatically remembering the volume for each application
       Automatically remembering the output device of an
       application
       Doing “hot” switching of playback streams between devices
       on USB headset hotplug
       Interrupting music playback when a VoIP call takes place
       Automatically increasing volume of the application in
       foreground, decreasing volume of window in background
       “Spatial” event sounds
       Adjust volume of one stream, if there’s a signal on another one
       ...
                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Current State of Linux Audio VI



   Professional audio and desktop audio on Linux are currently two
   completely seperate worlds.




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Current State of Linux Audio VI



   Professional audio and desktop audio on Linux are currently two
   completely seperate worlds.
   The only common infrastructure seems to be ALSA




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Current State of Linux Audio VI



   Professional audio and desktop audio on Linux are currently two
   completely seperate worlds.
   The only common infrastructure seems to be ALSA
   - but in different configuration (no dmix!)




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Current State of Linux Audio VII


   However, current free desktops also have unique features:




                       Lennart Poettering    The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Current State of Linux Audio VII


   However, current free desktops also have unique features:
   Network transparent sound (EsounD) for thin clients




                       Lennart Poettering    The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Current State of Linux Audio VII


   However, current free desktops also have unique features:
   Network transparent sound (EsounD) for thin clients
   Wide range of high-level audio applications




                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                        What is PulseAudio?
                                       Usage
                                    Internals
                                     Recipes
                                     Outlook


Current State of Linux Audio VII


   However, current free desktops also have unique features:
   Network transparent sound (EsounD) for thin clients
   Wide range of high-level audio applications
   Low-latency kernel




                         Lennart Poettering     The PulseAudio Sound Server
Introduction
                        What is PulseAudio?
                                       Usage
                                    Internals
                                     Recipes
                                     Outlook


Current State of Linux Audio VII


   However, current free desktops also have unique features:
   Network transparent sound (EsounD) for thin clients
   Wide range of high-level audio applications
   Low-latency kernel
   Well defined, accepted APIs for pro audio, such as JACK for
   interconnection or LADSPA for plugins




                         Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Competition



   The current audio mess we have on Linux is not law of nature that
   cannot be overturned.




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Competition



   The current audio mess we have on Linux is not law of nature that
   cannot be overturned.
   Apple has shown with CoreAudio that a unified sound system for
   both desktop and professional use is achievable.




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Competition



   The current audio mess we have on Linux is not law of nature that
   cannot be overturned.
   Apple has shown with CoreAudio that a unified sound system for
   both desktop and professional use is achievable.
   Microsoft ships a new userspace sound system with Windows Vista.




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                   What is PulseAudio?
                                  Usage
                               Internals
                                Recipes
                                Outlook


What can we do?



  We need to acknowledge that the OSS API is not going to go
  away




                    Lennart Poettering     The PulseAudio Sound Server
Introduction
                    What is PulseAudio?
                                   Usage
                                Internals
                                 Recipes
                                 Outlook


What can we do?



  We need to acknowledge that the OSS API is not going to go
  away (although the OSS drivers are most likely to be removed from
  the Linux kernel eventually.)




                     Lennart Poettering     The PulseAudio Sound Server
Introduction
                    What is PulseAudio?
                                   Usage
                                Internals
                                 Recipes
                                 Outlook


What can we do?



  We need to acknowledge that the OSS API is not going to go
  away (although the OSS drivers are most likely to be removed from
  the Linux kernel eventually.)
  We need to agree on an API that people should standardize on




                     Lennart Poettering     The PulseAudio Sound Server
Introduction
                    What is PulseAudio?
                                   Usage
                                Internals
                                 Recipes
                                 Outlook


What can we do?



  We need to acknowledge that the OSS API is not going to go
  away (although the OSS drivers are most likely to be removed from
  the Linux kernel eventually.)
  We need to agree on an API that people should standardize on
  We should stop abstracting abstracted abstraction layers




                      Lennart Poettering    The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Missing Pieces



   We need to find a way to marry all the currently conflicting APIs or
   at least introduce a (temporary?) compatibility system for them.




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Missing Pieces



   We need to find a way to marry all the currently conflicting APIs or
   at least introduce a (temporary?) compatibility system for them.
   We need to come up with a “Compiz for sound”.




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Missing Pieces



   We need to find a way to marry all the currently conflicting APIs or
   at least introduce a (temporary?) compatibility system for them.
   We need to come up with a “Compiz for sound”.
   We need to retain the unique features we already can offer.




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Missing Pieces



   We need to find a way to marry all the currently conflicting APIs or
   at least introduce a (temporary?) compatibility system for them.
   We need to come up with a “Compiz for sound”.
   We need to retain the unique features we already can offer.
   Play a little catch-up with Apple, Microsoft




                       Lennart Poettering     The PulseAudio Sound Server
Introduction
What is PulseAudio?
               Usage
            Internals
             Recipes
             Outlook




      What is PulseAudio?




 Lennart Poettering     The PulseAudio Sound Server
Introduction
                What is PulseAudio?
                               Usage
                            Internals
                             Recipes
                             Outlook


What is PulseAudio?




                 Lennart Poettering     The PulseAudio Sound Server
Introduction
                    What is PulseAudio?
                                   Usage
                                Internals
                                 Recipes
                                 Outlook


What is PulseAudio?
   Modular sound server




                     Lennart Poettering     The PulseAudio Sound Server
Introduction
                    What is PulseAudio?
                                   Usage
                                Internals
                                 Recipes
                                 Outlook


What is PulseAudio?
   Modular sound server
   Drop-in replacement for EsounD; EsounD done right




                     Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


What is PulseAudio?
   Modular sound server
   Drop-in replacement for EsounD; EsounD done right
   “Application server for sound”




                       Lennart Poettering    The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


What is PulseAudio?
   Modular sound server
   Drop-in replacement for EsounD; EsounD done right
   “Application server for sound”
   “Compiz for sound”




                        Lennart Poettering   The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


What is PulseAudio?
   Modular sound server
   Drop-in replacement for EsounD; EsounD done right
   “Application server for sound”
   “Compiz for sound”
   “Window manager for sound”




                        Lennart Poettering   The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


What is PulseAudio?
   Modular sound server
   Drop-in replacement for EsounD; EsounD done right
   “Application server for sound”
   “Compiz for sound”
   “Window manager for sound”
   Counterpart for the new Windows Vista userspace sound system




                        Lennart Poettering   The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


What is PulseAudio?
   Modular sound server
   Drop-in replacement for EsounD; EsounD done right
   “Application server for sound”
   “Compiz for sound”
   “Window manager for sound”
   Counterpart for the new Windows Vista userspace sound system
   The “compatible sound system”, which allows running 90% of
   Linux audio software simultaneously without conflicting.




                        Lennart Poettering   The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


What is PulseAudio?
   Modular sound server
   Drop-in replacement for EsounD; EsounD done right
   “Application server for sound”
   “Compiz for sound”
   “Window manager for sound”
   Counterpart for the new Windows Vista userspace sound system
   The “compatible sound system”, which allows running 90% of
   Linux audio software simultaneously without conflicting.
   Developed by Pierre Ossman and yours truly.


                        Lennart Poettering   The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


What is PulseAudio?
   Modular sound server
   Drop-in replacement for EsounD; EsounD done right
   “Application server for sound”
   “Compiz for sound”
   “Window manager for sound”
   Counterpart for the new Windows Vista userspace sound system
   The “compatible sound system”, which allows running 90% of
   Linux audio software simultaneously without conflicting.
   Developed by Pierre Ossman and yours truly.
   LGPL licensed (practically downgraded to GPL on the server side)
                        Lennart Poettering   The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


What is PulseAudio, really?



   It’s basically a proxy for your sound device, that receives audio
   data from your applications, does simple, or more advanced
   operations on it, and passes it on to the device.




                        Lennart Poettering    The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


What is PulseAudio, really?



   It’s basically a proxy for your sound device, that receives audio
   data from your applications, does simple, or more advanced
   operations on it, and passes it on to the device.
   It’s also a proxy that recieves audio data from your sound device,
   does simple, or more advanced operations on it, and passes it on
   the your applications.




                        Lennart Poettering    The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


What is PulseAudio, really? II

   What are those simple, or more advanced operations?




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


What is PulseAudio, really? II

   What are those simple, or more advanced operations?

       Mixing multiple streams together




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


What is PulseAudio, really? II

   What are those simple, or more advanced operations?

       Mixing multiple streams together
       Adjust sample rate or format




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


What is PulseAudio, really? II

   What are those simple, or more advanced operations?

       Mixing multiple streams together
       Adjust sample rate or format
       Do volume adjustments




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


What is PulseAudio, really? II

   What are those simple, or more advanced operations?

       Mixing multiple streams together
       Adjust sample rate or format
       Do volume adjustments
       Apply other filters, echo cancellation




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


What is PulseAudio, really? II

   What are those simple, or more advanced operations?

       Mixing multiple streams together
       Adjust sample rate or format
       Do volume adjustments
       Apply other filters, echo cancellation
       Redirect or copy to another audio device or application,
       possibly over the network




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


What is PulseAudio, really? II

   What are those simple, or more advanced operations?

       Mixing multiple streams together
       Adjust sample rate or format
       Do volume adjustments
       Apply other filters, echo cancellation
       Redirect or copy to another audio device or application,
       possibly over the network
       Reroute channels (e.g. Stereo to Surround)
       ...


                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Modular Design



   Modular System, currently shipping with 37 modules:




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Modular Design



   Modular System, currently shipping with 37 modules:
   Driver support: OSS, ALSA, Solaris Audio, Win32 Audio




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Modular Design



   Modular System, currently shipping with 37 modules:
   Driver support: OSS, ALSA, Solaris Audio, Win32 Audio
   Protocol support: Native TCP, EsounD TCP, RTP




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Modular Design



   Modular System, currently shipping with 37 modules:
   Driver support: OSS, ALSA, Solaris Audio, Win32 Audio
   Protocol support: Native TCP, EsounD TCP, RTP
   Toys: LIRC, multimedia keyboard (Linux evdev)




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Modular Design



   Modular System, currently shipping with 37 modules:
   Driver support: OSS, ALSA, Solaris Audio, Win32 Audio
   Protocol support: Native TCP, EsounD TCP, RTP
   Toys: LIRC, multimedia keyboard (Linux evdev)
   Desktop integration: X11 bell, X11 credentials




                       Lennart Poettering    The PulseAudio Sound Server
Introduction
                    What is PulseAudio?
                                   Usage
                                Internals
                                 Recipes
                                 Outlook


Modular Design II


   Integration: JACK, EsounD




                     Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Modular Design II


   Integration: JACK, EsounD
   Zeroconf - Avahi Rocks!




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Modular Design II


   Integration: JACK, EsounD
   Zeroconf - Avahi Rocks!
   Managing: Restore volumes, devices, move stream to other device
   if device vanishes




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Modular Design II


   Integration: JACK, EsounD
   Zeroconf - Avahi Rocks!
   Managing: Restore volumes, devices, move stream to other device
   if device vanishes
   Plug’n’Play: simple device autodetection, HAL-based hotplug




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Modular Design II


   Integration: JACK, EsounD
   Zeroconf - Avahi Rocks!
   Managing: Restore volumes, devices, move stream to other device
   if device vanishes
   Plug’n’Play: simple device autodetection, HAL-based hotplug
   Synchronize output on multiple sound devices, channel remapping




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Modular Design II


   Integration: JACK, EsounD
   Zeroconf - Avahi Rocks!
   Managing: Restore volumes, devices, move stream to other device
   if device vanishes
   Plug’n’Play: simple device autodetection, HAL-based hotplug
   Synchronize output on multiple sound devices, channel remapping
   LADSPA filters



                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                What is PulseAudio?
                               Usage
                            Internals
                             Recipes
                             Outlook


What is PulseAudio not?




                 Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


What is PulseAudio not?




   Not a competitor for JACK, GStreamer, Helix, Xine, Phonon!




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


What is PulseAudio not?




   Not a competitor for JACK, GStreamer, Helix, Xine, Phonon!
   Not just “Yet another audio API”!




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


What is PulseAudio not?




   Not a competitor for JACK, GStreamer, Helix, Xine, Phonon!
   Not just “Yet another audio API”!
   Not a try to push yes another EsounD on the people!




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Features



   Supports up to 32 channels.
   Wide range of sample formats (PCM, µLaw, aLaw)
   Realtime scheduling
   Network transparent sample cacheing




                         Lennart Poettering   The PulseAudio Sound Server
Introduction
                    What is PulseAudio?
                                   Usage
                                Internals
                                 Recipes
                                 Outlook


Current Status


   Supersedes EsounD, ALSA dmix in every way




                     Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Current Status


   Supersedes EsounD, ALSA dmix in every way
   Part of most major distributions




                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Current Status


   Supersedes EsounD, ALSA dmix in every way
   Part of most major distributions
   Wide adoption in thin client environments, installed by default on
   Fedora 8




                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Current Status


   Supersedes EsounD, ALSA dmix in every way
   Part of most major distributions
   Wide adoption in thin client environments, installed by default on
   Fedora 8
   Portable: Linux, FreeBSD, Solaris, Native Win32 (no Cygwin)




                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Current Status


   Supersedes EsounD, ALSA dmix in every way
   Part of most major distributions
   Wide adoption in thin client environments, installed by default on
   Fedora 8
   Portable: Linux, FreeBSD, Solaris, Native Win32 (no Cygwin)
   Good latency behaviour and exact latency estimations




                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Current Status


   Supersedes EsounD, ALSA dmix in every way
   Part of most major distributions
   Wide adoption in thin client environments, installed by default on
   Fedora 8
   Portable: Linux, FreeBSD, Solaris, Native Win32 (no Cygwin)
   Good latency behaviour and exact latency estimations
   Lots of room for improvement



                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


PulseAudio vs. ALSA dmix


   ALSA dmix has serious limitations: bad latency behaviour,
   unstable timing, not portable




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


PulseAudio vs. ALSA dmix


   ALSA dmix has serious limitations: bad latency behaviour,
   unstable timing, not portable
   Why not fix ALSA dmix? - PulseAudio is kind of a “fix” for dmix.




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


PulseAudio vs. ALSA dmix


   ALSA dmix has serious limitations: bad latency behaviour,
   unstable timing, not portable
   Why not fix ALSA dmix? - PulseAudio is kind of a “fix” for dmix.
   PulseAudio may be started automatically on demand by
   libasound so that it becomes “invisible” to the user, like ALSA
   dmix.




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


PulseAudio vs. ALSA dmix


   ALSA dmix has serious limitations: bad latency behaviour,
   unstable timing, not portable
   Why not fix ALSA dmix? - PulseAudio is kind of a “fix” for dmix.
   PulseAudio may be started automatically on demand by
   libasound so that it becomes “invisible” to the user, like ALSA
   dmix.
   Not recommended to run it that way, though.




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


PulseAudio vs. ALSA dmix


   ALSA dmix has serious limitations: bad latency behaviour,
   unstable timing, not portable
   Why not fix ALSA dmix? - PulseAudio is kind of a “fix” for dmix.
   PulseAudio may be started automatically on demand by
   libasound so that it becomes “invisible” to the user, like ALSA
   dmix.
   Not recommended to run it that way, though.
   PulseAudio replaces the libasound plugin dmix, plughw, others



                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


PulseAudio vs. EsounD




   There is practically no reason left to use EsounD instead of
   PulseAudio




                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                       What is PulseAudio?
                                      Usage
                                   Internals
                                    Recipes
                                    Outlook


PulseAudio vs. JACK



  There is no “vs.”!
  Different objectives - JACK: inter-application communication for
  pro audio




                        Lennart Poettering     The PulseAudio Sound Server
Introduction
                       What is PulseAudio?
                                      Usage
                                   Internals
                                    Recipes
                                    Outlook


PulseAudio vs. JACK



  There is no “vs.”!
  Different objectives - JACK: inter-application communication for
  pro audio
  JACK has some limitations that makes it unusable for desktop use:
  reliance on FP, incompatibility with everything else.




                        Lennart Poettering     The PulseAudio Sound Server
Introduction
                       What is PulseAudio?
                                      Usage
                                   Internals
                                    Recipes
                                    Outlook


PulseAudio vs. JACK



  There is no “vs.”!
  Different objectives - JACK: inter-application communication for
  pro audio
  JACK has some limitations that makes it unusable for desktop use:
  reliance on FP, incompatibility with everything else.
  Future integration with PulseAudio?




                        Lennart Poettering     The PulseAudio Sound Server
Introduction
                 What is PulseAudio?
                                Usage
                             Internals
                              Recipes
                              Outlook


PulseAudio vs. aRts




                  Lennart Poettering     The PulseAudio Sound Server
Introduction
                        What is PulseAudio?
                                       Usage
                                    Internals
                                     Recipes
                                     Outlook


PulseAudio vs. aRts




   There is no “vs.”!




                         Lennart Poettering     The PulseAudio Sound Server
Introduction
                        What is PulseAudio?
                                       Usage
                                    Internals
                                     Recipes
                                     Outlook


PulseAudio vs. aRts




   There is no “vs.”!
   aRts is officially dead.




                         Lennart Poettering     The PulseAudio Sound Server
Introduction
What is PulseAudio?
               Usage
            Internals
             Recipes
             Outlook




                   Usage




 Lennart Poettering     The PulseAudio Sound Server
Introduction
                    What is PulseAudio?
                                   Usage
                                Internals
                                 Recipes
                                 Outlook


Required Dependencies




   liboil: Optimized inner loops
   libsndfile: Loading sound files




                     Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Optional Dependencies
   ALSA: Hardware access
   GLIB: Support for integration into the GLib event loop - no hard
   dependency
   Avahi: for Zeroconf support
   JACK: for JACK integration
   X11: Hook into bell event, store authentication credentials
   liboil: Asynchronous name resolution
   TCPWRAP: access control
   LIRC: remote control
   libsamplerate: High quality resampling
                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Compatibility


   Plugin for libasound: most ALSA applications can access
   PulseAudio like a local sound card
   $LD PRELOAD based OSS compatibility
   Implementation of the EsounD protocol
   Integration with JACK
   Plugin for libao
   Plugin for GStreamer (With nice tricks!)



                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Compatibility II



   Plugin for XMMS, Audacious
   Driver for MPlayer, Xine
   Driver for MPD




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Compatibility II



   Plugin for XMMS, Audacious
   Driver for MPlayer, Xine
   Driver for MPD
   > 90 % of all Linux audio applications should run on it.
   http://pulseaudio.org/wiki/PerfectSetup




                       Lennart Poettering     The PulseAudio Sound Server
Introduction
             What is PulseAudio?
                            Usage
                         Internals
                          Recipes
                          Outlook


Screenshot




              Lennart Poettering     The PulseAudio Sound Server
Introduction
                    What is PulseAudio?
                                   Usage
                                Internals
                                 Recipes
                                 Outlook


GStreamer Plugin



      Wraps playback, capturing, mixer, device enumeration
      Extracts song metadata from pipeline, uses it to name the
      stream in the PulseAudio server - independent from the
      application.
      Not yet part with upstream GStreamer, but will be




                     Lennart Poettering     The PulseAudio Sound Server
Introduction
                  What is PulseAudio?
                                 Usage
                              Internals
                               Recipes
                               Outlook


XMMS Plugin




     Wraps playback, mixer
     Uses song name to name stream in PulseAudio




                   Lennart Poettering     The PulseAudio Sound Server
Introduction
                What is PulseAudio?
                               Usage
                            Internals
                             Recipes
                             Outlook


GUI: Volume Control




                 Lennart Poettering     The PulseAudio Sound Server
Introduction
                    What is PulseAudio?
                                   Usage
                                Internals
                                 Recipes
                                 Outlook


GUI: Volume Control II



      Shows streams, sinks, sources
      Allows volume changing for each channel separately
      Shows song name for each stream (that’s why sliders are
      horizontal!)
      Allows to move stream from one sink to another without
      interrupting playback




                     Lennart Poettering     The PulseAudio Sound Server
Introduction
               What is PulseAudio?
                              Usage
                           Internals
                            Recipes
                            Outlook


GUI: Volume Meter




                Lennart Poettering     The PulseAudio Sound Server
Introduction
               What is PulseAudio?
                              Usage
                           Internals
                            Recipes
                            Outlook


GUI: Manager




                Lennart Poettering     The PulseAudio Sound Server
Introduction
                    What is PulseAudio?
                                   Usage
                                Internals
                                 Recipes
                                 Outlook


GUI: Manager II




      Shows internals of a PulseAudio server
      Not for the regular user




                     Lennart Poettering     The PulseAudio Sound Server
Introduction
                What is PulseAudio?
                               Usage
                            Internals
                             Recipes
                             Outlook


GUI: Device Chooser




                 Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


GUI: Device Chooser II




      Sits in the notification area
      Allows easy changing of the input/output device/server
      Avahi support
      Easy access to the utility programs




                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                   What is PulseAudio?
                                  Usage
                               Internals
                                Recipes
                                Outlook


GUI: Preferences




                    Lennart Poettering     The PulseAudio Sound Server
Introduction
                       What is PulseAudio?
                                      Usage
                                   Internals
                                    Recipes
                                    Outlook


GUI: Preferences II



       Easy access to selected configuration options
       Communicates over GConf with PulseAudio
       Instant apply
       Requires module-gconf loaded into the server
       Current options: Remote access, Authentication, Zeroconf,
       RTP multicast receive, send




                        Lennart Poettering     The PulseAudio Sound Server
Introduction
What is PulseAudio?
               Usage
            Internals
             Recipes
             Outlook




                Internals




 Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Nomenclatura
  Sink - A clocked output device PA writes data to (e.g. ALSA
  sound card)
  Source - A clocked input device PA reads data from (e.g. ALSA
  sound card)
  Monitor Source - Implicitly attached to every sink for monitoring
  what is currently being played




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Nomenclatura
  Sink - A clocked output device PA writes data to (e.g. ALSA
  sound card)
  Source - A clocked input device PA reads data from (e.g. ALSA
  sound card)
  Monitor Source - Implicitly attached to every sink for monitoring
  what is currently being played
  Sink Input - An output stream whose data PA sends on to a sink;
  not clocked! (e.g. a client application such as Rhythmbox)
  Source Output - An input stream where PA sends to data from a
  source; not clocked! (e.g. a client application such as Ekiga)


                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Nomenclatura
  Sink - A clocked output device PA writes data to (e.g. ALSA
  sound card)
  Source - A clocked input device PA reads data from (e.g. ALSA
  sound card)
  Monitor Source - Implicitly attached to every sink for monitoring
  what is currently being played
  Sink Input - An output stream whose data PA sends on to a sink;
  not clocked! (e.g. a client application such as Rhythmbox)
  Source Output - An input stream where PA sends to data from a
  source; not clocked! (e.g. a client application such as Ekiga)
  PulseAudio does not know the notion of “pipelines”!
                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Nomenclatura II


   Module - A shared library code blob which can be loaded into the
   daemon at any time which can register any number of sinks,
   sources, inputs or outputs.
   Client - A local or networked client which cann allocate any
   number of inputs or outputs.




                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Nomenclatura II


   Module - A shared library code blob which can be loaded into the
   daemon at any time which can register any number of sinks,
   sources, inputs or outputs.
   Client - A local or networked client which cann allocate any
   number of inputs or outputs.
   Sinks and sources can be identified by a short string such as dsp1
   or dsp1.monitor. Name is generated automatically from the
   underlying device name - or may configured manually.



                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                  What is PulseAudio?
                                 Usage
                              Internals
                               Recipes
                               Outlook


Internals



   Zero-Copy memory management




                   Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Internals



   Zero-Copy memory management
   Lock-free (almost), real-time capable core




                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Internals



   Zero-Copy memory management
   Lock-free (almost), real-time capable core
   Shared-Memory data transfer




                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Internals



   Zero-Copy memory management
   Lock-free (almost), real-time capable core
   Shared-Memory data transfer
   Powerful playback model




                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Internals



   Zero-Copy memory management
   Lock-free (almost), real-time capable core
   Shared-Memory data transfer
   Powerful playback model
   Automatic underrun handling




                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Internals


   Accurate latency estimation for every element in the pipeline




                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Internals


   Accurate latency estimation for every element in the pipeline
   Client-side latency interpolation




                        Lennart Poettering    The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Internals


   Accurate latency estimation for every element in the pipeline
   Client-side latency interpolation
   Embeddable core




                        Lennart Poettering    The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Internals


   Accurate latency estimation for every element in the pipeline
   Client-side latency interpolation
   Embeddable core
   Supports multiple sinks/sources in a single daemon




                        Lennart Poettering    The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Internals


   Accurate latency estimation for every element in the pipeline
   Client-side latency interpolation
   Embeddable core
   Supports multiple sinks/sources in a single daemon
   Asynchronous Client API




                        Lennart Poettering    The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Internals


   Accurate latency estimation for every element in the pipeline
   Client-side latency interpolation
   Embeddable core
   Supports multiple sinks/sources in a single daemon
   Asynchronous Client API
   Fully configurable during runtime




                        Lennart Poettering    The PulseAudio Sound Server
Introduction
                    What is PulseAudio?
                                   Usage
                                Internals
                                 Recipes
                                 Outlook


Zero-Copy Memory Management



  We never copy memory around if not really necessary
  Instead of queueing samples, we queue pointers to reference
  counted memory data blocks
  Location of those memory data blocks is flexible: dynamic memory,
  SHM from other process, DMA buffer of sound card, mapped file
  Advantages: low memory usage, low-latency




                     Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Shared-Memory data transfer


   Audio data between local clients and server is transferred via
   shared memory
   The server and each client allocates one shared memory segment
   and allocates its audio buffers from it. Indexes into this segment
   are passed between clients and between client and server.
   RW access only to local segment, RO access to other process’
   segments




                       Lennart Poettering     The PulseAudio Sound Server
Introduction
            What is PulseAudio?
                           Usage
                        Internals
                         Recipes
                         Outlook


Internals




             Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Playback Model

  Playback buffer is a linked list of pointers to audio data blocks and
  their indexes
  Monotonically advancing read index
  Freely seekable write index: SEEK RELATIVE, SEEK ABSOLUTE,
  SEEK RELATIVE ON READ, SEEK RELATIVE END
  If data is written “left” of the current read pointer, it is
  immediately dropped
  If due to seeking the buffer contains “holes” silence is
  automatically inserted.


                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Playback Model II

   Multiple streams can be synced together, read indexes will never
   deviate if enabled.
   If buffer fill level becomes 0, an UNDERRUN event is sent to the
   client. If buffer fill level becomes smaller than a specified lower
   watermark a REQUEST event is sent to the client. If a specified
   maximum buffer length is reached an OVERRUN event is sent to
   the client.
   Advantages: large buffers with quick reaction possible - useful
   especially over the network; easy to write RTP receivers; low
   memory usage


                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                 What is PulseAudio?
                                Usage
                             Internals
                              Recipes
                              Outlook


Playback Model III




                     Lennart Poettering   The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Handling Underruns


   Two different modes supported:

       Playback stops on underrun, starts again if “prebuf” level is
       reached.




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Handling Underruns


   Two different modes supported:

       Playback stops on underrun, starts again if “prebuf” level is
       reached.
       Playback never stops, read index advances monotonically, and
       drops enough samples so that the time the underrun lasted is
       compensated.




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                    What is PulseAudio?
                                   Usage
                                Internals
                                 Recipes
                                 Outlook


Emulating OSS


  Difficult, because kernel interfaces cannot easily be emulated from
  userspace




                     Lennart Poettering     The PulseAudio Sound Server
Introduction
                    What is PulseAudio?
                                   Usage
                                Internals
                                 Recipes
                                 Outlook


Emulating OSS


  Difficult, because kernel interfaces cannot easily be emulated from
  userspace
  $LD PRELOAD based tools: esddsp, aoss, padsp.




                     Lennart Poettering     The PulseAudio Sound Server
Introduction
                       What is PulseAudio?
                                      Usage
                                   Internals
                                    Recipes
                                    Outlook


Emulating OSS


  Difficult, because kernel interfaces cannot easily be emulated from
  userspace
  $LD PRELOAD based tools: esddsp, aoss, padsp.
  Doesn’t support: SUID binaries, static binaries, tools which unset
  $LD PRELOAD, dlopen()
  It’s slow and it’s ugly.
  DMA practically impossible.




                        Lennart Poettering     The PulseAudio Sound Server
Introduction
                       What is PulseAudio?
                                      Usage
                                   Internals
                                    Recipes
                                    Outlook


Emulating OSS


  Difficult, because kernel interfaces cannot easily be emulated from
  userspace
  $LD PRELOAD based tools: esddsp, aoss, padsp.
  Doesn’t support: SUID binaries, static binaries, tools which unset
  $LD PRELOAD, dlopen()
  It’s slow and it’s ugly.
  DMA practically impossible.
  Quake2 - What about DMA?


                        Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Emulating OSS II




   Possible solution: FUSD - emulating character devices from
   userspace.




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Emulating OSS II




   Possible solution: FUSD - emulating character devices from
   userspace.
   DMA still a problem?




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Emulating aRts



   Difficult, because aRts is more a synthesizer than a sound server.




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Emulating aRts



   Difficult, because aRts is more a synthesizer than a sound server.
   Worth it? Does anyone still use it?




                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                      What is PulseAudio?
                                     Usage
                                  Internals
                                   Recipes
                                   Outlook


Emulating aRts



   Difficult, because aRts is more a synthesizer than a sound server.
   Worth it? Does anyone still use it?
   Probably more applications around that run exclusively on aRts
   than run exclusively on EsounD




                       Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Authentication




   Local: UNIX user ids




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Authentication




   Local: UNIX user ids
   Remote: Cookie, IP ACL, X11 root window




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
                     What is PulseAudio?
                                    Usage
                                 Internals
                                  Recipes
                                  Outlook


Authentication




   Local: UNIX user ids
   Remote: Cookie, IP ACL, X11 root window
   No encryption - no challenge response




                      Lennart Poettering     The PulseAudio Sound Server
Introduction
What is PulseAudio?
               Usage
            Internals
             Recipes
             Outlook




                 Recipes




 Lennart Poettering     The PulseAudio Sound Server
Introduction
                    What is PulseAudio?
                                   Usage
                                Internals
                                 Recipes
                                 Outlook


CLI - Command Line Language


  PulseAudio may be configured during startup and runtime with a
  simple imperative command line language. (Not Turing complete).




                     Lennart Poettering     The PulseAudio Sound Server
Introduction
                    What is PulseAudio?
                                   Usage
                                Internals
                                 Recipes
                                 Outlook


CLI - Command Line Language


  PulseAudio may be configured during startup and runtime with a
  simple imperative command line language. (Not Turing complete).
  CLI script /.pulse/default.pa is read on startup.




                     Lennart Poettering     The PulseAudio Sound Server
Introduction
                    What is PulseAudio?
                                   Usage
                                Internals
                                 Recipes
                                 Outlook


CLI - Command Line Language


  PulseAudio may be configured during startup and runtime with a
  simple imperative command line language. (Not Turing complete).
  CLI script /.pulse/default.pa is read on startup.
  Use pacmd to enter configuration commands during runtime.




                     Lennart Poettering     The PulseAudio Sound Server
Introduction
                    What is PulseAudio?
                                   Usage
                                Internals
                                 Recipes
                                 Outlook


CLI - Command Line Language


  PulseAudio may be configured during startup and runtime with a
  simple imperative command line language. (Not Turing complete).
  CLI script /.pulse/default.pa is read on startup.
  Use pacmd to enter configuration commands during runtime.
  Ineteresting Commands:
  load-module module-oss device=quot;/dev/dspquot;
  sink name=output source name=input channels=1




                     Lennart Poettering     The PulseAudio Sound Server
Introduction
                    What is PulseAudio?
                                   Usage
                                Internals
                                 Recipes
                                 Outlook


CLI - Command Line Language


  PulseAudio may be configured during startup and runtime with a
  simple imperative command line language. (Not Turing complete).
  CLI script /.pulse/default.pa is read on startup.
  Use pacmd to enter configuration commands during runtime.
  Ineteresting Commands:
  load-module module-oss device=quot;/dev/dspquot;
  sink name=output source name=input channels=1
  load-sample x11-bell /usr/share/sounds/notify.wav


                     Lennart Poettering     The PulseAudio Sound Server
Introduction
                What is PulseAudio?
                               Usage
                            Internals
                             Recipes
                             Outlook


Recipe: RTP Multicast “Radio” Receiver




                 Lennart Poettering     The PulseAudio Sound Server
Introduction
                  What is PulseAudio?
                                 Usage
                              Internals
                               Recipes
                               Outlook


Recipe: RTP Multicast “Radio” Receiver




   load-module module-rtp-recv




                   Lennart Poettering     The PulseAudio Sound Server
Introduction
                What is PulseAudio?
                               Usage
                            Internals
                             Recipes
                             Outlook


Recipe: RTP Multicast “Radio” Sender




                 Lennart Poettering     The PulseAudio Sound Server
Introduction
                  What is PulseAudio?
                                 Usage
                              Internals
                               Recipes
                               Outlook


Recipe: RTP Multicast “Radio” Sender




   load-module module-null-sink sink name=rtp




                   Lennart Poettering     The PulseAudio Sound Server
Introduction
                  What is PulseAudio?
                                 Usage
                              Internals
                               Recipes
                               Outlook


Recipe: RTP Multicast “Radio” Sender




   load-module module-null-sink sink name=rtp
   load-module module-rtp-send source=rtp.monitor




                   Lennart Poettering     The PulseAudio Sound Server
Introduction
                  What is PulseAudio?
                                 Usage
                              Internals
                               Recipes
                               Outlook


Recipe: RTP Multicast “Radio” Sender




   load-module module-null-sink sink name=rtp
   load-module module-rtp-send source=rtp.monitor
   set-default-sink rtp




                   Lennart Poettering     The PulseAudio Sound Server
Introduction
                 What is PulseAudio?
                                Usage
                             Internals
                              Recipes
                              Outlook


Recipe: Output audio on two soundcards simultaneously




                  Lennart Poettering     The PulseAudio Sound Server
Introduction
                  What is PulseAudio?
                                 Usage
                              Internals
                               Recipes
                               Outlook


Recipe: Output audio on two soundcards simultaneously


   load-module module-oss device=quot;/dev/dspquot;
   sink name=output0




                   Lennart Poettering     The PulseAudio Sound Server
Introduction
                  What is PulseAudio?
                                 Usage
                              Internals
                               Recipes
                               Outlook


Recipe: Output audio on two soundcards simultaneously


   load-module module-oss device=quot;/dev/dspquot;
   sink name=output0
   load-module module-oss device=quot;/dev/dsp1quot;
   sink name=output1




                   Lennart Poettering     The PulseAudio Sound Server
Introduction
                  What is PulseAudio?
                                 Usage
                              Internals
                               Recipes
                               Outlook


Recipe: Output audio on two soundcards simultaneously


   load-module module-oss device=quot;/dev/dspquot;
   sink name=output0
   load-module module-oss device=quot;/dev/dsp1quot;
   sink name=output1
   load-module module-combine sink name=combined
   master=output0 slaves=output1




                   Lennart Poettering     The PulseAudio Sound Server
Introduction
                  What is PulseAudio?
                                 Usage
                              Internals
                               Recipes
                               Outlook


Recipe: Output audio on two soundcards simultaneously


   load-module module-oss device=quot;/dev/dspquot;
   sink name=output0
   load-module module-oss device=quot;/dev/dsp1quot;
   sink name=output1
   load-module module-combine sink name=combined
   master=output0 slaves=output1
   set-sink-default combined




                   Lennart Poettering     The PulseAudio Sound Server
Introduction
                 What is PulseAudio?
                                Usage
                             Internals
                              Recipes
                              Outlook


Recipe: Combine two Stereo devices into a virtual
4-channel Surround device




                  Lennart Poettering     The PulseAudio Sound Server
Introduction
                  What is PulseAudio?
                                 Usage
                              Internals
                               Recipes
                               Outlook


Recipe: Combine two Stereo devices into a virtual
4-channel Surround device

   load-module module-oss device=quot;/dev/dspquot;
   sink name=output0 channel map=left,right channels=2




                   Lennart Poettering     The PulseAudio Sound Server
Introduction
                  What is PulseAudio?
                                 Usage
                              Internals
                               Recipes
                               Outlook


Recipe: Combine two Stereo devices into a virtual
4-channel Surround device

   load-module module-oss device=quot;/dev/dspquot;
   sink name=output0 channel map=left,right channels=2
   load-module module-oss device=quot;/dev/dsp1quot;
   sink name=output1 channel map=rear-left,rear-right
   channels=2




                   Lennart Poettering     The PulseAudio Sound Server
Introduction
                  What is PulseAudio?
                                 Usage
                              Internals
                               Recipes
                               Outlook


Recipe: Combine two Stereo devices into a virtual
4-channel Surround device

   load-module module-oss device=quot;/dev/dspquot;
   sink name=output0 channel map=left,right channels=2
   load-module module-oss device=quot;/dev/dsp1quot;
   sink name=output1 channel map=rear-left,rear-right
   channels=2
   load-module module-combine sink name=combined
   master=output0 slaves=output1
   channel map=left,right,rear-left,rear-right
   channels=4


                   Lennart Poettering     The PulseAudio Sound Server
Introduction
                  What is PulseAudio?
                                 Usage
                              Internals
                               Recipes
                               Outlook


Recipe: Combine two Stereo devices into a virtual
4-channel Surround device

   load-module module-oss device=quot;/dev/dspquot;
   sink name=output0 channel map=left,right channels=2
   load-module module-oss device=quot;/dev/dsp1quot;
   sink name=output1 channel map=rear-left,rear-right
   channels=2
   load-module module-combine sink name=combined
   master=output0 slaves=output1
   channel map=left,right,rear-left,rear-right
   channels=4
   set-sink-default combined
                   Lennart Poettering     The PulseAudio Sound Server
Introduction
What is PulseAudio?
               Usage
            Internals
             Recipes
             Outlook




                 Outlook




 Lennart Poettering     The PulseAudio Sound Server
Introduction
                    What is PulseAudio?
                                   Usage
                                Internals
                                 Recipes
                                 Outlook


Current Work



  Best possible OSS compatibility




                     Lennart Poettering     The PulseAudio Sound Server
Introduction
                    What is PulseAudio?
                                   Usage
                                Internals
                                 Recipes
                                 Outlook


Current Work



  Best possible OSS compatibility
  More earcandy




                     Lennart Poettering     The PulseAudio Sound Server
The PulseAudio Sound Server: An Introduction
The PulseAudio Sound Server: An Introduction
The PulseAudio Sound Server: An Introduction
The PulseAudio Sound Server: An Introduction
The PulseAudio Sound Server: An Introduction
The PulseAudio Sound Server: An Introduction
The PulseAudio Sound Server: An Introduction
The PulseAudio Sound Server: An Introduction
The PulseAudio Sound Server: An Introduction
The PulseAudio Sound Server: An Introduction
The PulseAudio Sound Server: An Introduction

More Related Content

Similar to The PulseAudio Sound Server: An Introduction

Lua and adaptive audio - Don Veca (Activision)
Lua and adaptive audio - Don Veca (Activision)Lua and adaptive audio - Don Veca (Activision)
Lua and adaptive audio - Don Veca (Activision)Kore VM
 
The GNOME Audio Story
The GNOME Audio StoryThe GNOME Audio Story
The GNOME Audio Storyarunarunarun1
 
Presentation on audio editing softwares by akanksha
Presentation on audio editing softwares by akankshaPresentation on audio editing softwares by akanksha
Presentation on audio editing softwares by akankshaakanksha singh
 
Tips for live streaming a musical performance
Tips for live streaming a musical performanceTips for live streaming a musical performance
Tips for live streaming a musical performancePaul Richards
 
Vst Virtual Studio Technology
Vst Virtual Studio TechnologyVst Virtual Studio Technology
Vst Virtual Studio TechnologyJonny Williams
 
Sound systems on linux
Sound systems on linuxSound systems on linux
Sound systems on linuxDeepak KARDA
 

Similar to The PulseAudio Sound Server: An Introduction (6)

Lua and adaptive audio - Don Veca (Activision)
Lua and adaptive audio - Don Veca (Activision)Lua and adaptive audio - Don Veca (Activision)
Lua and adaptive audio - Don Veca (Activision)
 
The GNOME Audio Story
The GNOME Audio StoryThe GNOME Audio Story
The GNOME Audio Story
 
Presentation on audio editing softwares by akanksha
Presentation on audio editing softwares by akankshaPresentation on audio editing softwares by akanksha
Presentation on audio editing softwares by akanksha
 
Tips for live streaming a musical performance
Tips for live streaming a musical performanceTips for live streaming a musical performance
Tips for live streaming a musical performance
 
Vst Virtual Studio Technology
Vst Virtual Studio TechnologyVst Virtual Studio Technology
Vst Virtual Studio Technology
 
Sound systems on linux
Sound systems on linuxSound systems on linux
Sound systems on linux
 

Recently uploaded

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 

Recently uploaded (20)

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 

The PulseAudio Sound Server: An Introduction

  • 1. Introduction What is PulseAudio? Usage Internals Recipes Outlook The PulseAudio Sound Server foss.in 2007 Lennart Poettering lennart@poettering.net December 2007 Lennart Poettering The PulseAudio Sound Server
  • 2. Introduction What is PulseAudio? Usage Internals Recipes Outlook Who Am I? Software Engineer at Red Hat, Inc. Developer of PulseAudio, Avahi and a few other Free Software projects http://0pointer.de/lennart/ lennart@poettering.net IRC: mezcalero Lennart Poettering The PulseAudio Sound Server
  • 3. Introduction What is PulseAudio? Usage Internals Recipes Outlook Introduction Lennart Poettering The PulseAudio Sound Server
  • 4. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio Lennart Poettering The PulseAudio Sound Server
  • 5. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio It’s a mess! There are just too many widely adopted but competing and incompatible sound systems. Lennart Poettering The PulseAudio Sound Server
  • 6. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio It’s a mess! There are just too many widely adopted but competing and incompatible sound systems. Too many low-level APIs: Open Sound System (OSS), ALSA, EsounD, aRts, Phonon, JACK Lennart Poettering The PulseAudio Sound Server
  • 7. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio It’s a mess! There are just too many widely adopted but competing and incompatible sound systems. Too many low-level APIs: Open Sound System (OSS), ALSA, EsounD, aRts, Phonon, JACK Incompatible APIs: The OSS API is the *only* API that is widely understood and at least a half-way compatible with other sound systems. All other APIs are incompatible and exclusive to each other, e.g. you cannot run an ALSA application on top of EsounD, etc. (Notable exception: the JACK plugin for ALSA) Lennart Poettering The PulseAudio Sound Server
  • 8. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio It’s a mess! There are just too many widely adopted but competing and incompatible sound systems. Too many low-level APIs: Open Sound System (OSS), ALSA, EsounD, aRts, Phonon, JACK Incompatible APIs: The OSS API is the *only* API that is widely understood and at least a half-way compatible with other sound systems. All other APIs are incompatible and exclusive to each other, e.g. you cannot run an ALSA application on top of EsounD, etc. (Notable exception: the JACK plugin for ALSA) OSS API emulation is kludgy: $LD PRELOAD! (esddsp, artsdsp, aoss) Lennart Poettering The PulseAudio Sound Server
  • 9. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio II Sound systems fight a constant battle which one gets access to the sound device. Lennart Poettering The PulseAudio Sound Server
  • 10. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio II Sound systems fight a constant battle which one gets access to the sound device. If EsounD wins only EsounD clients can play audio. Lennart Poettering The PulseAudio Sound Server
  • 11. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio II Sound systems fight a constant battle which one gets access to the sound device. If EsounD wins only EsounD clients can play audio. If aRts wins only aRts clients can play audio. Lennart Poettering The PulseAudio Sound Server
  • 12. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio II Sound systems fight a constant battle which one gets access to the sound device. If EsounD wins only EsounD clients can play audio. If aRts wins only aRts clients can play audio. If JACK wins only JACK (and some ALSA) clients can play audio. Lennart Poettering The PulseAudio Sound Server
  • 13. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio II Sound systems fight a constant battle which one gets access to the sound device. If EsounD wins only EsounD clients can play audio. If aRts wins only aRts clients can play audio. If JACK wins only JACK (and some ALSA) clients can play audio. If ALSA dmix wins OSS applications lose. Lennart Poettering The PulseAudio Sound Server
  • 14. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio III If EsounD, aRts or ALSA dmix wins, you cannot have good, dependable, exactly measured latencies. Lennart Poettering The PulseAudio Sound Server
  • 15. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio III If EsounD, aRts or ALSA dmix wins, you cannot have good, dependable, exactly measured latencies. If EsounD wins you cannot have surround sound. Lennart Poettering The PulseAudio Sound Server
  • 16. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio III If EsounD, aRts or ALSA dmix wins, you cannot have good, dependable, exactly measured latencies. If EsounD wins you cannot have surround sound. If OSS wins you can (usually) play only a single audio stream at a time Lennart Poettering The PulseAudio Sound Server
  • 17. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio III If EsounD, aRts or ALSA dmix wins, you cannot have good, dependable, exactly measured latencies. If EsounD wins you cannot have surround sound. If OSS wins you can (usually) play only a single audio stream at a time If JACK wins you can only have FLOAT32 samples - and playback needs to be started manually in JACK Lennart Poettering The PulseAudio Sound Server
  • 18. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio III If EsounD, aRts or ALSA dmix wins, you cannot have good, dependable, exactly measured latencies. If EsounD wins you cannot have surround sound. If OSS wins you can (usually) play only a single audio stream at a time If JACK wins you can only have FLOAT32 samples - and playback needs to be started manually in JACK ... Lennart Poettering The PulseAudio Sound Server
  • 19. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio IV Abstraction APIs exist, but are not widely accepted. Lennart Poettering The PulseAudio Sound Server
  • 20. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio IV Abstraction APIs exist, but are not widely accepted. PortAudio, libao, OpenAL, SDL, CSL Lennart Poettering The PulseAudio Sound Server
  • 21. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio IV Abstraction APIs exist, but are not widely accepted. PortAudio, libao, OpenAL, SDL, CSL Phonon? Lennart Poettering The PulseAudio Sound Server
  • 22. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio IV Abstraction APIs exist, but are not widely accepted. PortAudio, libao, OpenAL, SDL, CSL Phonon? Is excessive abstraction a good idea? Lennart Poettering The PulseAudio Sound Server
  • 23. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio IV Abstraction APIs exist, but are not widely accepted. PortAudio, libao, OpenAL, SDL, CSL Phonon? Is excessive abstraction a good idea? Amarok on Phonon on GStreamer on ALSA on PulseAudio on ALSA? Lennart Poettering The PulseAudio Sound Server
  • 24. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio V Free desktops lack a “Compiz for sound”: Allowing different volumes for each running application Lennart Poettering The PulseAudio Sound Server
  • 25. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio V Free desktops lack a “Compiz for sound”: Allowing different volumes for each running application Automatically remembering the volume for each application Lennart Poettering The PulseAudio Sound Server
  • 26. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio V Free desktops lack a “Compiz for sound”: Allowing different volumes for each running application Automatically remembering the volume for each application Automatically remembering the output device of an application Lennart Poettering The PulseAudio Sound Server
  • 27. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio V Free desktops lack a “Compiz for sound”: Allowing different volumes for each running application Automatically remembering the volume for each application Automatically remembering the output device of an application Doing “hot” switching of playback streams between devices on USB headset hotplug Interrupting music playback when a VoIP call takes place Lennart Poettering The PulseAudio Sound Server
  • 28. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio V Free desktops lack a “Compiz for sound”: Allowing different volumes for each running application Automatically remembering the volume for each application Automatically remembering the output device of an application Doing “hot” switching of playback streams between devices on USB headset hotplug Interrupting music playback when a VoIP call takes place Automatically increasing volume of the application in foreground, decreasing volume of window in background Lennart Poettering The PulseAudio Sound Server
  • 29. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio V Free desktops lack a “Compiz for sound”: Allowing different volumes for each running application Automatically remembering the volume for each application Automatically remembering the output device of an application Doing “hot” switching of playback streams between devices on USB headset hotplug Interrupting music playback when a VoIP call takes place Automatically increasing volume of the application in foreground, decreasing volume of window in background “Spatial” event sounds Adjust volume of one stream, if there’s a signal on another one ... Lennart Poettering The PulseAudio Sound Server
  • 30. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio VI Professional audio and desktop audio on Linux are currently two completely seperate worlds. Lennart Poettering The PulseAudio Sound Server
  • 31. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio VI Professional audio and desktop audio on Linux are currently two completely seperate worlds. The only common infrastructure seems to be ALSA Lennart Poettering The PulseAudio Sound Server
  • 32. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio VI Professional audio and desktop audio on Linux are currently two completely seperate worlds. The only common infrastructure seems to be ALSA - but in different configuration (no dmix!) Lennart Poettering The PulseAudio Sound Server
  • 33. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio VII However, current free desktops also have unique features: Lennart Poettering The PulseAudio Sound Server
  • 34. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio VII However, current free desktops also have unique features: Network transparent sound (EsounD) for thin clients Lennart Poettering The PulseAudio Sound Server
  • 35. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio VII However, current free desktops also have unique features: Network transparent sound (EsounD) for thin clients Wide range of high-level audio applications Lennart Poettering The PulseAudio Sound Server
  • 36. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio VII However, current free desktops also have unique features: Network transparent sound (EsounD) for thin clients Wide range of high-level audio applications Low-latency kernel Lennart Poettering The PulseAudio Sound Server
  • 37. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current State of Linux Audio VII However, current free desktops also have unique features: Network transparent sound (EsounD) for thin clients Wide range of high-level audio applications Low-latency kernel Well defined, accepted APIs for pro audio, such as JACK for interconnection or LADSPA for plugins Lennart Poettering The PulseAudio Sound Server
  • 38. Introduction What is PulseAudio? Usage Internals Recipes Outlook Competition The current audio mess we have on Linux is not law of nature that cannot be overturned. Lennart Poettering The PulseAudio Sound Server
  • 39. Introduction What is PulseAudio? Usage Internals Recipes Outlook Competition The current audio mess we have on Linux is not law of nature that cannot be overturned. Apple has shown with CoreAudio that a unified sound system for both desktop and professional use is achievable. Lennart Poettering The PulseAudio Sound Server
  • 40. Introduction What is PulseAudio? Usage Internals Recipes Outlook Competition The current audio mess we have on Linux is not law of nature that cannot be overturned. Apple has shown with CoreAudio that a unified sound system for both desktop and professional use is achievable. Microsoft ships a new userspace sound system with Windows Vista. Lennart Poettering The PulseAudio Sound Server
  • 41. Introduction What is PulseAudio? Usage Internals Recipes Outlook What can we do? We need to acknowledge that the OSS API is not going to go away Lennart Poettering The PulseAudio Sound Server
  • 42. Introduction What is PulseAudio? Usage Internals Recipes Outlook What can we do? We need to acknowledge that the OSS API is not going to go away (although the OSS drivers are most likely to be removed from the Linux kernel eventually.) Lennart Poettering The PulseAudio Sound Server
  • 43. Introduction What is PulseAudio? Usage Internals Recipes Outlook What can we do? We need to acknowledge that the OSS API is not going to go away (although the OSS drivers are most likely to be removed from the Linux kernel eventually.) We need to agree on an API that people should standardize on Lennart Poettering The PulseAudio Sound Server
  • 44. Introduction What is PulseAudio? Usage Internals Recipes Outlook What can we do? We need to acknowledge that the OSS API is not going to go away (although the OSS drivers are most likely to be removed from the Linux kernel eventually.) We need to agree on an API that people should standardize on We should stop abstracting abstracted abstraction layers Lennart Poettering The PulseAudio Sound Server
  • 45. Introduction What is PulseAudio? Usage Internals Recipes Outlook Missing Pieces We need to find a way to marry all the currently conflicting APIs or at least introduce a (temporary?) compatibility system for them. Lennart Poettering The PulseAudio Sound Server
  • 46. Introduction What is PulseAudio? Usage Internals Recipes Outlook Missing Pieces We need to find a way to marry all the currently conflicting APIs or at least introduce a (temporary?) compatibility system for them. We need to come up with a “Compiz for sound”. Lennart Poettering The PulseAudio Sound Server
  • 47. Introduction What is PulseAudio? Usage Internals Recipes Outlook Missing Pieces We need to find a way to marry all the currently conflicting APIs or at least introduce a (temporary?) compatibility system for them. We need to come up with a “Compiz for sound”. We need to retain the unique features we already can offer. Lennart Poettering The PulseAudio Sound Server
  • 48. Introduction What is PulseAudio? Usage Internals Recipes Outlook Missing Pieces We need to find a way to marry all the currently conflicting APIs or at least introduce a (temporary?) compatibility system for them. We need to come up with a “Compiz for sound”. We need to retain the unique features we already can offer. Play a little catch-up with Apple, Microsoft Lennart Poettering The PulseAudio Sound Server
  • 49. Introduction What is PulseAudio? Usage Internals Recipes Outlook What is PulseAudio? Lennart Poettering The PulseAudio Sound Server
  • 50. Introduction What is PulseAudio? Usage Internals Recipes Outlook What is PulseAudio? Lennart Poettering The PulseAudio Sound Server
  • 51. Introduction What is PulseAudio? Usage Internals Recipes Outlook What is PulseAudio? Modular sound server Lennart Poettering The PulseAudio Sound Server
  • 52. Introduction What is PulseAudio? Usage Internals Recipes Outlook What is PulseAudio? Modular sound server Drop-in replacement for EsounD; EsounD done right Lennart Poettering The PulseAudio Sound Server
  • 53. Introduction What is PulseAudio? Usage Internals Recipes Outlook What is PulseAudio? Modular sound server Drop-in replacement for EsounD; EsounD done right “Application server for sound” Lennart Poettering The PulseAudio Sound Server
  • 54. Introduction What is PulseAudio? Usage Internals Recipes Outlook What is PulseAudio? Modular sound server Drop-in replacement for EsounD; EsounD done right “Application server for sound” “Compiz for sound” Lennart Poettering The PulseAudio Sound Server
  • 55. Introduction What is PulseAudio? Usage Internals Recipes Outlook What is PulseAudio? Modular sound server Drop-in replacement for EsounD; EsounD done right “Application server for sound” “Compiz for sound” “Window manager for sound” Lennart Poettering The PulseAudio Sound Server
  • 56. Introduction What is PulseAudio? Usage Internals Recipes Outlook What is PulseAudio? Modular sound server Drop-in replacement for EsounD; EsounD done right “Application server for sound” “Compiz for sound” “Window manager for sound” Counterpart for the new Windows Vista userspace sound system Lennart Poettering The PulseAudio Sound Server
  • 57. Introduction What is PulseAudio? Usage Internals Recipes Outlook What is PulseAudio? Modular sound server Drop-in replacement for EsounD; EsounD done right “Application server for sound” “Compiz for sound” “Window manager for sound” Counterpart for the new Windows Vista userspace sound system The “compatible sound system”, which allows running 90% of Linux audio software simultaneously without conflicting. Lennart Poettering The PulseAudio Sound Server
  • 58. Introduction What is PulseAudio? Usage Internals Recipes Outlook What is PulseAudio? Modular sound server Drop-in replacement for EsounD; EsounD done right “Application server for sound” “Compiz for sound” “Window manager for sound” Counterpart for the new Windows Vista userspace sound system The “compatible sound system”, which allows running 90% of Linux audio software simultaneously without conflicting. Developed by Pierre Ossman and yours truly. Lennart Poettering The PulseAudio Sound Server
  • 59. Introduction What is PulseAudio? Usage Internals Recipes Outlook What is PulseAudio? Modular sound server Drop-in replacement for EsounD; EsounD done right “Application server for sound” “Compiz for sound” “Window manager for sound” Counterpart for the new Windows Vista userspace sound system The “compatible sound system”, which allows running 90% of Linux audio software simultaneously without conflicting. Developed by Pierre Ossman and yours truly. LGPL licensed (practically downgraded to GPL on the server side) Lennart Poettering The PulseAudio Sound Server
  • 60. Introduction What is PulseAudio? Usage Internals Recipes Outlook What is PulseAudio, really? It’s basically a proxy for your sound device, that receives audio data from your applications, does simple, or more advanced operations on it, and passes it on to the device. Lennart Poettering The PulseAudio Sound Server
  • 61. Introduction What is PulseAudio? Usage Internals Recipes Outlook What is PulseAudio, really? It’s basically a proxy for your sound device, that receives audio data from your applications, does simple, or more advanced operations on it, and passes it on to the device. It’s also a proxy that recieves audio data from your sound device, does simple, or more advanced operations on it, and passes it on the your applications. Lennart Poettering The PulseAudio Sound Server
  • 62. Introduction What is PulseAudio? Usage Internals Recipes Outlook What is PulseAudio, really? II What are those simple, or more advanced operations? Lennart Poettering The PulseAudio Sound Server
  • 63. Introduction What is PulseAudio? Usage Internals Recipes Outlook What is PulseAudio, really? II What are those simple, or more advanced operations? Mixing multiple streams together Lennart Poettering The PulseAudio Sound Server
  • 64. Introduction What is PulseAudio? Usage Internals Recipes Outlook What is PulseAudio, really? II What are those simple, or more advanced operations? Mixing multiple streams together Adjust sample rate or format Lennart Poettering The PulseAudio Sound Server
  • 65. Introduction What is PulseAudio? Usage Internals Recipes Outlook What is PulseAudio, really? II What are those simple, or more advanced operations? Mixing multiple streams together Adjust sample rate or format Do volume adjustments Lennart Poettering The PulseAudio Sound Server
  • 66. Introduction What is PulseAudio? Usage Internals Recipes Outlook What is PulseAudio, really? II What are those simple, or more advanced operations? Mixing multiple streams together Adjust sample rate or format Do volume adjustments Apply other filters, echo cancellation Lennart Poettering The PulseAudio Sound Server
  • 67. Introduction What is PulseAudio? Usage Internals Recipes Outlook What is PulseAudio, really? II What are those simple, or more advanced operations? Mixing multiple streams together Adjust sample rate or format Do volume adjustments Apply other filters, echo cancellation Redirect or copy to another audio device or application, possibly over the network Lennart Poettering The PulseAudio Sound Server
  • 68. Introduction What is PulseAudio? Usage Internals Recipes Outlook What is PulseAudio, really? II What are those simple, or more advanced operations? Mixing multiple streams together Adjust sample rate or format Do volume adjustments Apply other filters, echo cancellation Redirect or copy to another audio device or application, possibly over the network Reroute channels (e.g. Stereo to Surround) ... Lennart Poettering The PulseAudio Sound Server
  • 69. Introduction What is PulseAudio? Usage Internals Recipes Outlook Modular Design Modular System, currently shipping with 37 modules: Lennart Poettering The PulseAudio Sound Server
  • 70. Introduction What is PulseAudio? Usage Internals Recipes Outlook Modular Design Modular System, currently shipping with 37 modules: Driver support: OSS, ALSA, Solaris Audio, Win32 Audio Lennart Poettering The PulseAudio Sound Server
  • 71. Introduction What is PulseAudio? Usage Internals Recipes Outlook Modular Design Modular System, currently shipping with 37 modules: Driver support: OSS, ALSA, Solaris Audio, Win32 Audio Protocol support: Native TCP, EsounD TCP, RTP Lennart Poettering The PulseAudio Sound Server
  • 72. Introduction What is PulseAudio? Usage Internals Recipes Outlook Modular Design Modular System, currently shipping with 37 modules: Driver support: OSS, ALSA, Solaris Audio, Win32 Audio Protocol support: Native TCP, EsounD TCP, RTP Toys: LIRC, multimedia keyboard (Linux evdev) Lennart Poettering The PulseAudio Sound Server
  • 73. Introduction What is PulseAudio? Usage Internals Recipes Outlook Modular Design Modular System, currently shipping with 37 modules: Driver support: OSS, ALSA, Solaris Audio, Win32 Audio Protocol support: Native TCP, EsounD TCP, RTP Toys: LIRC, multimedia keyboard (Linux evdev) Desktop integration: X11 bell, X11 credentials Lennart Poettering The PulseAudio Sound Server
  • 74. Introduction What is PulseAudio? Usage Internals Recipes Outlook Modular Design II Integration: JACK, EsounD Lennart Poettering The PulseAudio Sound Server
  • 75. Introduction What is PulseAudio? Usage Internals Recipes Outlook Modular Design II Integration: JACK, EsounD Zeroconf - Avahi Rocks! Lennart Poettering The PulseAudio Sound Server
  • 76. Introduction What is PulseAudio? Usage Internals Recipes Outlook Modular Design II Integration: JACK, EsounD Zeroconf - Avahi Rocks! Managing: Restore volumes, devices, move stream to other device if device vanishes Lennart Poettering The PulseAudio Sound Server
  • 77. Introduction What is PulseAudio? Usage Internals Recipes Outlook Modular Design II Integration: JACK, EsounD Zeroconf - Avahi Rocks! Managing: Restore volumes, devices, move stream to other device if device vanishes Plug’n’Play: simple device autodetection, HAL-based hotplug Lennart Poettering The PulseAudio Sound Server
  • 78. Introduction What is PulseAudio? Usage Internals Recipes Outlook Modular Design II Integration: JACK, EsounD Zeroconf - Avahi Rocks! Managing: Restore volumes, devices, move stream to other device if device vanishes Plug’n’Play: simple device autodetection, HAL-based hotplug Synchronize output on multiple sound devices, channel remapping Lennart Poettering The PulseAudio Sound Server
  • 79. Introduction What is PulseAudio? Usage Internals Recipes Outlook Modular Design II Integration: JACK, EsounD Zeroconf - Avahi Rocks! Managing: Restore volumes, devices, move stream to other device if device vanishes Plug’n’Play: simple device autodetection, HAL-based hotplug Synchronize output on multiple sound devices, channel remapping LADSPA filters Lennart Poettering The PulseAudio Sound Server
  • 80. Introduction What is PulseAudio? Usage Internals Recipes Outlook What is PulseAudio not? Lennart Poettering The PulseAudio Sound Server
  • 81. Introduction What is PulseAudio? Usage Internals Recipes Outlook What is PulseAudio not? Not a competitor for JACK, GStreamer, Helix, Xine, Phonon! Lennart Poettering The PulseAudio Sound Server
  • 82. Introduction What is PulseAudio? Usage Internals Recipes Outlook What is PulseAudio not? Not a competitor for JACK, GStreamer, Helix, Xine, Phonon! Not just “Yet another audio API”! Lennart Poettering The PulseAudio Sound Server
  • 83. Introduction What is PulseAudio? Usage Internals Recipes Outlook What is PulseAudio not? Not a competitor for JACK, GStreamer, Helix, Xine, Phonon! Not just “Yet another audio API”! Not a try to push yes another EsounD on the people! Lennart Poettering The PulseAudio Sound Server
  • 84. Introduction What is PulseAudio? Usage Internals Recipes Outlook Features Supports up to 32 channels. Wide range of sample formats (PCM, µLaw, aLaw) Realtime scheduling Network transparent sample cacheing Lennart Poettering The PulseAudio Sound Server
  • 85. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current Status Supersedes EsounD, ALSA dmix in every way Lennart Poettering The PulseAudio Sound Server
  • 86. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current Status Supersedes EsounD, ALSA dmix in every way Part of most major distributions Lennart Poettering The PulseAudio Sound Server
  • 87. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current Status Supersedes EsounD, ALSA dmix in every way Part of most major distributions Wide adoption in thin client environments, installed by default on Fedora 8 Lennart Poettering The PulseAudio Sound Server
  • 88. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current Status Supersedes EsounD, ALSA dmix in every way Part of most major distributions Wide adoption in thin client environments, installed by default on Fedora 8 Portable: Linux, FreeBSD, Solaris, Native Win32 (no Cygwin) Lennart Poettering The PulseAudio Sound Server
  • 89. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current Status Supersedes EsounD, ALSA dmix in every way Part of most major distributions Wide adoption in thin client environments, installed by default on Fedora 8 Portable: Linux, FreeBSD, Solaris, Native Win32 (no Cygwin) Good latency behaviour and exact latency estimations Lennart Poettering The PulseAudio Sound Server
  • 90. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current Status Supersedes EsounD, ALSA dmix in every way Part of most major distributions Wide adoption in thin client environments, installed by default on Fedora 8 Portable: Linux, FreeBSD, Solaris, Native Win32 (no Cygwin) Good latency behaviour and exact latency estimations Lots of room for improvement Lennart Poettering The PulseAudio Sound Server
  • 91. Introduction What is PulseAudio? Usage Internals Recipes Outlook PulseAudio vs. ALSA dmix ALSA dmix has serious limitations: bad latency behaviour, unstable timing, not portable Lennart Poettering The PulseAudio Sound Server
  • 92. Introduction What is PulseAudio? Usage Internals Recipes Outlook PulseAudio vs. ALSA dmix ALSA dmix has serious limitations: bad latency behaviour, unstable timing, not portable Why not fix ALSA dmix? - PulseAudio is kind of a “fix” for dmix. Lennart Poettering The PulseAudio Sound Server
  • 93. Introduction What is PulseAudio? Usage Internals Recipes Outlook PulseAudio vs. ALSA dmix ALSA dmix has serious limitations: bad latency behaviour, unstable timing, not portable Why not fix ALSA dmix? - PulseAudio is kind of a “fix” for dmix. PulseAudio may be started automatically on demand by libasound so that it becomes “invisible” to the user, like ALSA dmix. Lennart Poettering The PulseAudio Sound Server
  • 94. Introduction What is PulseAudio? Usage Internals Recipes Outlook PulseAudio vs. ALSA dmix ALSA dmix has serious limitations: bad latency behaviour, unstable timing, not portable Why not fix ALSA dmix? - PulseAudio is kind of a “fix” for dmix. PulseAudio may be started automatically on demand by libasound so that it becomes “invisible” to the user, like ALSA dmix. Not recommended to run it that way, though. Lennart Poettering The PulseAudio Sound Server
  • 95. Introduction What is PulseAudio? Usage Internals Recipes Outlook PulseAudio vs. ALSA dmix ALSA dmix has serious limitations: bad latency behaviour, unstable timing, not portable Why not fix ALSA dmix? - PulseAudio is kind of a “fix” for dmix. PulseAudio may be started automatically on demand by libasound so that it becomes “invisible” to the user, like ALSA dmix. Not recommended to run it that way, though. PulseAudio replaces the libasound plugin dmix, plughw, others Lennart Poettering The PulseAudio Sound Server
  • 96. Introduction What is PulseAudio? Usage Internals Recipes Outlook PulseAudio vs. EsounD There is practically no reason left to use EsounD instead of PulseAudio Lennart Poettering The PulseAudio Sound Server
  • 97. Introduction What is PulseAudio? Usage Internals Recipes Outlook PulseAudio vs. JACK There is no “vs.”! Different objectives - JACK: inter-application communication for pro audio Lennart Poettering The PulseAudio Sound Server
  • 98. Introduction What is PulseAudio? Usage Internals Recipes Outlook PulseAudio vs. JACK There is no “vs.”! Different objectives - JACK: inter-application communication for pro audio JACK has some limitations that makes it unusable for desktop use: reliance on FP, incompatibility with everything else. Lennart Poettering The PulseAudio Sound Server
  • 99. Introduction What is PulseAudio? Usage Internals Recipes Outlook PulseAudio vs. JACK There is no “vs.”! Different objectives - JACK: inter-application communication for pro audio JACK has some limitations that makes it unusable for desktop use: reliance on FP, incompatibility with everything else. Future integration with PulseAudio? Lennart Poettering The PulseAudio Sound Server
  • 100. Introduction What is PulseAudio? Usage Internals Recipes Outlook PulseAudio vs. aRts Lennart Poettering The PulseAudio Sound Server
  • 101. Introduction What is PulseAudio? Usage Internals Recipes Outlook PulseAudio vs. aRts There is no “vs.”! Lennart Poettering The PulseAudio Sound Server
  • 102. Introduction What is PulseAudio? Usage Internals Recipes Outlook PulseAudio vs. aRts There is no “vs.”! aRts is officially dead. Lennart Poettering The PulseAudio Sound Server
  • 103. Introduction What is PulseAudio? Usage Internals Recipes Outlook Usage Lennart Poettering The PulseAudio Sound Server
  • 104. Introduction What is PulseAudio? Usage Internals Recipes Outlook Required Dependencies liboil: Optimized inner loops libsndfile: Loading sound files Lennart Poettering The PulseAudio Sound Server
  • 105. Introduction What is PulseAudio? Usage Internals Recipes Outlook Optional Dependencies ALSA: Hardware access GLIB: Support for integration into the GLib event loop - no hard dependency Avahi: for Zeroconf support JACK: for JACK integration X11: Hook into bell event, store authentication credentials liboil: Asynchronous name resolution TCPWRAP: access control LIRC: remote control libsamplerate: High quality resampling Lennart Poettering The PulseAudio Sound Server
  • 106. Introduction What is PulseAudio? Usage Internals Recipes Outlook Compatibility Plugin for libasound: most ALSA applications can access PulseAudio like a local sound card $LD PRELOAD based OSS compatibility Implementation of the EsounD protocol Integration with JACK Plugin for libao Plugin for GStreamer (With nice tricks!) Lennart Poettering The PulseAudio Sound Server
  • 107. Introduction What is PulseAudio? Usage Internals Recipes Outlook Compatibility II Plugin for XMMS, Audacious Driver for MPlayer, Xine Driver for MPD Lennart Poettering The PulseAudio Sound Server
  • 108. Introduction What is PulseAudio? Usage Internals Recipes Outlook Compatibility II Plugin for XMMS, Audacious Driver for MPlayer, Xine Driver for MPD > 90 % of all Linux audio applications should run on it. http://pulseaudio.org/wiki/PerfectSetup Lennart Poettering The PulseAudio Sound Server
  • 109. Introduction What is PulseAudio? Usage Internals Recipes Outlook Screenshot Lennart Poettering The PulseAudio Sound Server
  • 110. Introduction What is PulseAudio? Usage Internals Recipes Outlook GStreamer Plugin Wraps playback, capturing, mixer, device enumeration Extracts song metadata from pipeline, uses it to name the stream in the PulseAudio server - independent from the application. Not yet part with upstream GStreamer, but will be Lennart Poettering The PulseAudio Sound Server
  • 111. Introduction What is PulseAudio? Usage Internals Recipes Outlook XMMS Plugin Wraps playback, mixer Uses song name to name stream in PulseAudio Lennart Poettering The PulseAudio Sound Server
  • 112. Introduction What is PulseAudio? Usage Internals Recipes Outlook GUI: Volume Control Lennart Poettering The PulseAudio Sound Server
  • 113. Introduction What is PulseAudio? Usage Internals Recipes Outlook GUI: Volume Control II Shows streams, sinks, sources Allows volume changing for each channel separately Shows song name for each stream (that’s why sliders are horizontal!) Allows to move stream from one sink to another without interrupting playback Lennart Poettering The PulseAudio Sound Server
  • 114. Introduction What is PulseAudio? Usage Internals Recipes Outlook GUI: Volume Meter Lennart Poettering The PulseAudio Sound Server
  • 115. Introduction What is PulseAudio? Usage Internals Recipes Outlook GUI: Manager Lennart Poettering The PulseAudio Sound Server
  • 116. Introduction What is PulseAudio? Usage Internals Recipes Outlook GUI: Manager II Shows internals of a PulseAudio server Not for the regular user Lennart Poettering The PulseAudio Sound Server
  • 117. Introduction What is PulseAudio? Usage Internals Recipes Outlook GUI: Device Chooser Lennart Poettering The PulseAudio Sound Server
  • 118. Introduction What is PulseAudio? Usage Internals Recipes Outlook GUI: Device Chooser II Sits in the notification area Allows easy changing of the input/output device/server Avahi support Easy access to the utility programs Lennart Poettering The PulseAudio Sound Server
  • 119. Introduction What is PulseAudio? Usage Internals Recipes Outlook GUI: Preferences Lennart Poettering The PulseAudio Sound Server
  • 120. Introduction What is PulseAudio? Usage Internals Recipes Outlook GUI: Preferences II Easy access to selected configuration options Communicates over GConf with PulseAudio Instant apply Requires module-gconf loaded into the server Current options: Remote access, Authentication, Zeroconf, RTP multicast receive, send Lennart Poettering The PulseAudio Sound Server
  • 121. Introduction What is PulseAudio? Usage Internals Recipes Outlook Internals Lennart Poettering The PulseAudio Sound Server
  • 122. Introduction What is PulseAudio? Usage Internals Recipes Outlook Nomenclatura Sink - A clocked output device PA writes data to (e.g. ALSA sound card) Source - A clocked input device PA reads data from (e.g. ALSA sound card) Monitor Source - Implicitly attached to every sink for monitoring what is currently being played Lennart Poettering The PulseAudio Sound Server
  • 123. Introduction What is PulseAudio? Usage Internals Recipes Outlook Nomenclatura Sink - A clocked output device PA writes data to (e.g. ALSA sound card) Source - A clocked input device PA reads data from (e.g. ALSA sound card) Monitor Source - Implicitly attached to every sink for monitoring what is currently being played Sink Input - An output stream whose data PA sends on to a sink; not clocked! (e.g. a client application such as Rhythmbox) Source Output - An input stream where PA sends to data from a source; not clocked! (e.g. a client application such as Ekiga) Lennart Poettering The PulseAudio Sound Server
  • 124. Introduction What is PulseAudio? Usage Internals Recipes Outlook Nomenclatura Sink - A clocked output device PA writes data to (e.g. ALSA sound card) Source - A clocked input device PA reads data from (e.g. ALSA sound card) Monitor Source - Implicitly attached to every sink for monitoring what is currently being played Sink Input - An output stream whose data PA sends on to a sink; not clocked! (e.g. a client application such as Rhythmbox) Source Output - An input stream where PA sends to data from a source; not clocked! (e.g. a client application such as Ekiga) PulseAudio does not know the notion of “pipelines”! Lennart Poettering The PulseAudio Sound Server
  • 125. Introduction What is PulseAudio? Usage Internals Recipes Outlook Nomenclatura II Module - A shared library code blob which can be loaded into the daemon at any time which can register any number of sinks, sources, inputs or outputs. Client - A local or networked client which cann allocate any number of inputs or outputs. Lennart Poettering The PulseAudio Sound Server
  • 126. Introduction What is PulseAudio? Usage Internals Recipes Outlook Nomenclatura II Module - A shared library code blob which can be loaded into the daemon at any time which can register any number of sinks, sources, inputs or outputs. Client - A local or networked client which cann allocate any number of inputs or outputs. Sinks and sources can be identified by a short string such as dsp1 or dsp1.monitor. Name is generated automatically from the underlying device name - or may configured manually. Lennart Poettering The PulseAudio Sound Server
  • 127. Introduction What is PulseAudio? Usage Internals Recipes Outlook Internals Zero-Copy memory management Lennart Poettering The PulseAudio Sound Server
  • 128. Introduction What is PulseAudio? Usage Internals Recipes Outlook Internals Zero-Copy memory management Lock-free (almost), real-time capable core Lennart Poettering The PulseAudio Sound Server
  • 129. Introduction What is PulseAudio? Usage Internals Recipes Outlook Internals Zero-Copy memory management Lock-free (almost), real-time capable core Shared-Memory data transfer Lennart Poettering The PulseAudio Sound Server
  • 130. Introduction What is PulseAudio? Usage Internals Recipes Outlook Internals Zero-Copy memory management Lock-free (almost), real-time capable core Shared-Memory data transfer Powerful playback model Lennart Poettering The PulseAudio Sound Server
  • 131. Introduction What is PulseAudio? Usage Internals Recipes Outlook Internals Zero-Copy memory management Lock-free (almost), real-time capable core Shared-Memory data transfer Powerful playback model Automatic underrun handling Lennart Poettering The PulseAudio Sound Server
  • 132. Introduction What is PulseAudio? Usage Internals Recipes Outlook Internals Accurate latency estimation for every element in the pipeline Lennart Poettering The PulseAudio Sound Server
  • 133. Introduction What is PulseAudio? Usage Internals Recipes Outlook Internals Accurate latency estimation for every element in the pipeline Client-side latency interpolation Lennart Poettering The PulseAudio Sound Server
  • 134. Introduction What is PulseAudio? Usage Internals Recipes Outlook Internals Accurate latency estimation for every element in the pipeline Client-side latency interpolation Embeddable core Lennart Poettering The PulseAudio Sound Server
  • 135. Introduction What is PulseAudio? Usage Internals Recipes Outlook Internals Accurate latency estimation for every element in the pipeline Client-side latency interpolation Embeddable core Supports multiple sinks/sources in a single daemon Lennart Poettering The PulseAudio Sound Server
  • 136. Introduction What is PulseAudio? Usage Internals Recipes Outlook Internals Accurate latency estimation for every element in the pipeline Client-side latency interpolation Embeddable core Supports multiple sinks/sources in a single daemon Asynchronous Client API Lennart Poettering The PulseAudio Sound Server
  • 137. Introduction What is PulseAudio? Usage Internals Recipes Outlook Internals Accurate latency estimation for every element in the pipeline Client-side latency interpolation Embeddable core Supports multiple sinks/sources in a single daemon Asynchronous Client API Fully configurable during runtime Lennart Poettering The PulseAudio Sound Server
  • 138. Introduction What is PulseAudio? Usage Internals Recipes Outlook Zero-Copy Memory Management We never copy memory around if not really necessary Instead of queueing samples, we queue pointers to reference counted memory data blocks Location of those memory data blocks is flexible: dynamic memory, SHM from other process, DMA buffer of sound card, mapped file Advantages: low memory usage, low-latency Lennart Poettering The PulseAudio Sound Server
  • 139. Introduction What is PulseAudio? Usage Internals Recipes Outlook Shared-Memory data transfer Audio data between local clients and server is transferred via shared memory The server and each client allocates one shared memory segment and allocates its audio buffers from it. Indexes into this segment are passed between clients and between client and server. RW access only to local segment, RO access to other process’ segments Lennart Poettering The PulseAudio Sound Server
  • 140. Introduction What is PulseAudio? Usage Internals Recipes Outlook Internals Lennart Poettering The PulseAudio Sound Server
  • 141. Introduction What is PulseAudio? Usage Internals Recipes Outlook Playback Model Playback buffer is a linked list of pointers to audio data blocks and their indexes Monotonically advancing read index Freely seekable write index: SEEK RELATIVE, SEEK ABSOLUTE, SEEK RELATIVE ON READ, SEEK RELATIVE END If data is written “left” of the current read pointer, it is immediately dropped If due to seeking the buffer contains “holes” silence is automatically inserted. Lennart Poettering The PulseAudio Sound Server
  • 142. Introduction What is PulseAudio? Usage Internals Recipes Outlook Playback Model II Multiple streams can be synced together, read indexes will never deviate if enabled. If buffer fill level becomes 0, an UNDERRUN event is sent to the client. If buffer fill level becomes smaller than a specified lower watermark a REQUEST event is sent to the client. If a specified maximum buffer length is reached an OVERRUN event is sent to the client. Advantages: large buffers with quick reaction possible - useful especially over the network; easy to write RTP receivers; low memory usage Lennart Poettering The PulseAudio Sound Server
  • 143. Introduction What is PulseAudio? Usage Internals Recipes Outlook Playback Model III Lennart Poettering The PulseAudio Sound Server
  • 144. Introduction What is PulseAudio? Usage Internals Recipes Outlook Handling Underruns Two different modes supported: Playback stops on underrun, starts again if “prebuf” level is reached. Lennart Poettering The PulseAudio Sound Server
  • 145. Introduction What is PulseAudio? Usage Internals Recipes Outlook Handling Underruns Two different modes supported: Playback stops on underrun, starts again if “prebuf” level is reached. Playback never stops, read index advances monotonically, and drops enough samples so that the time the underrun lasted is compensated. Lennart Poettering The PulseAudio Sound Server
  • 146. Introduction What is PulseAudio? Usage Internals Recipes Outlook Emulating OSS Difficult, because kernel interfaces cannot easily be emulated from userspace Lennart Poettering The PulseAudio Sound Server
  • 147. Introduction What is PulseAudio? Usage Internals Recipes Outlook Emulating OSS Difficult, because kernel interfaces cannot easily be emulated from userspace $LD PRELOAD based tools: esddsp, aoss, padsp. Lennart Poettering The PulseAudio Sound Server
  • 148. Introduction What is PulseAudio? Usage Internals Recipes Outlook Emulating OSS Difficult, because kernel interfaces cannot easily be emulated from userspace $LD PRELOAD based tools: esddsp, aoss, padsp. Doesn’t support: SUID binaries, static binaries, tools which unset $LD PRELOAD, dlopen() It’s slow and it’s ugly. DMA practically impossible. Lennart Poettering The PulseAudio Sound Server
  • 149. Introduction What is PulseAudio? Usage Internals Recipes Outlook Emulating OSS Difficult, because kernel interfaces cannot easily be emulated from userspace $LD PRELOAD based tools: esddsp, aoss, padsp. Doesn’t support: SUID binaries, static binaries, tools which unset $LD PRELOAD, dlopen() It’s slow and it’s ugly. DMA practically impossible. Quake2 - What about DMA? Lennart Poettering The PulseAudio Sound Server
  • 150. Introduction What is PulseAudio? Usage Internals Recipes Outlook Emulating OSS II Possible solution: FUSD - emulating character devices from userspace. Lennart Poettering The PulseAudio Sound Server
  • 151. Introduction What is PulseAudio? Usage Internals Recipes Outlook Emulating OSS II Possible solution: FUSD - emulating character devices from userspace. DMA still a problem? Lennart Poettering The PulseAudio Sound Server
  • 152. Introduction What is PulseAudio? Usage Internals Recipes Outlook Emulating aRts Difficult, because aRts is more a synthesizer than a sound server. Lennart Poettering The PulseAudio Sound Server
  • 153. Introduction What is PulseAudio? Usage Internals Recipes Outlook Emulating aRts Difficult, because aRts is more a synthesizer than a sound server. Worth it? Does anyone still use it? Lennart Poettering The PulseAudio Sound Server
  • 154. Introduction What is PulseAudio? Usage Internals Recipes Outlook Emulating aRts Difficult, because aRts is more a synthesizer than a sound server. Worth it? Does anyone still use it? Probably more applications around that run exclusively on aRts than run exclusively on EsounD Lennart Poettering The PulseAudio Sound Server
  • 155. Introduction What is PulseAudio? Usage Internals Recipes Outlook Authentication Local: UNIX user ids Lennart Poettering The PulseAudio Sound Server
  • 156. Introduction What is PulseAudio? Usage Internals Recipes Outlook Authentication Local: UNIX user ids Remote: Cookie, IP ACL, X11 root window Lennart Poettering The PulseAudio Sound Server
  • 157. Introduction What is PulseAudio? Usage Internals Recipes Outlook Authentication Local: UNIX user ids Remote: Cookie, IP ACL, X11 root window No encryption - no challenge response Lennart Poettering The PulseAudio Sound Server
  • 158. Introduction What is PulseAudio? Usage Internals Recipes Outlook Recipes Lennart Poettering The PulseAudio Sound Server
  • 159. Introduction What is PulseAudio? Usage Internals Recipes Outlook CLI - Command Line Language PulseAudio may be configured during startup and runtime with a simple imperative command line language. (Not Turing complete). Lennart Poettering The PulseAudio Sound Server
  • 160. Introduction What is PulseAudio? Usage Internals Recipes Outlook CLI - Command Line Language PulseAudio may be configured during startup and runtime with a simple imperative command line language. (Not Turing complete). CLI script /.pulse/default.pa is read on startup. Lennart Poettering The PulseAudio Sound Server
  • 161. Introduction What is PulseAudio? Usage Internals Recipes Outlook CLI - Command Line Language PulseAudio may be configured during startup and runtime with a simple imperative command line language. (Not Turing complete). CLI script /.pulse/default.pa is read on startup. Use pacmd to enter configuration commands during runtime. Lennart Poettering The PulseAudio Sound Server
  • 162. Introduction What is PulseAudio? Usage Internals Recipes Outlook CLI - Command Line Language PulseAudio may be configured during startup and runtime with a simple imperative command line language. (Not Turing complete). CLI script /.pulse/default.pa is read on startup. Use pacmd to enter configuration commands during runtime. Ineteresting Commands: load-module module-oss device=quot;/dev/dspquot; sink name=output source name=input channels=1 Lennart Poettering The PulseAudio Sound Server
  • 163. Introduction What is PulseAudio? Usage Internals Recipes Outlook CLI - Command Line Language PulseAudio may be configured during startup and runtime with a simple imperative command line language. (Not Turing complete). CLI script /.pulse/default.pa is read on startup. Use pacmd to enter configuration commands during runtime. Ineteresting Commands: load-module module-oss device=quot;/dev/dspquot; sink name=output source name=input channels=1 load-sample x11-bell /usr/share/sounds/notify.wav Lennart Poettering The PulseAudio Sound Server
  • 164. Introduction What is PulseAudio? Usage Internals Recipes Outlook Recipe: RTP Multicast “Radio” Receiver Lennart Poettering The PulseAudio Sound Server
  • 165. Introduction What is PulseAudio? Usage Internals Recipes Outlook Recipe: RTP Multicast “Radio” Receiver load-module module-rtp-recv Lennart Poettering The PulseAudio Sound Server
  • 166. Introduction What is PulseAudio? Usage Internals Recipes Outlook Recipe: RTP Multicast “Radio” Sender Lennart Poettering The PulseAudio Sound Server
  • 167. Introduction What is PulseAudio? Usage Internals Recipes Outlook Recipe: RTP Multicast “Radio” Sender load-module module-null-sink sink name=rtp Lennart Poettering The PulseAudio Sound Server
  • 168. Introduction What is PulseAudio? Usage Internals Recipes Outlook Recipe: RTP Multicast “Radio” Sender load-module module-null-sink sink name=rtp load-module module-rtp-send source=rtp.monitor Lennart Poettering The PulseAudio Sound Server
  • 169. Introduction What is PulseAudio? Usage Internals Recipes Outlook Recipe: RTP Multicast “Radio” Sender load-module module-null-sink sink name=rtp load-module module-rtp-send source=rtp.monitor set-default-sink rtp Lennart Poettering The PulseAudio Sound Server
  • 170. Introduction What is PulseAudio? Usage Internals Recipes Outlook Recipe: Output audio on two soundcards simultaneously Lennart Poettering The PulseAudio Sound Server
  • 171. Introduction What is PulseAudio? Usage Internals Recipes Outlook Recipe: Output audio on two soundcards simultaneously load-module module-oss device=quot;/dev/dspquot; sink name=output0 Lennart Poettering The PulseAudio Sound Server
  • 172. Introduction What is PulseAudio? Usage Internals Recipes Outlook Recipe: Output audio on two soundcards simultaneously load-module module-oss device=quot;/dev/dspquot; sink name=output0 load-module module-oss device=quot;/dev/dsp1quot; sink name=output1 Lennart Poettering The PulseAudio Sound Server
  • 173. Introduction What is PulseAudio? Usage Internals Recipes Outlook Recipe: Output audio on two soundcards simultaneously load-module module-oss device=quot;/dev/dspquot; sink name=output0 load-module module-oss device=quot;/dev/dsp1quot; sink name=output1 load-module module-combine sink name=combined master=output0 slaves=output1 Lennart Poettering The PulseAudio Sound Server
  • 174. Introduction What is PulseAudio? Usage Internals Recipes Outlook Recipe: Output audio on two soundcards simultaneously load-module module-oss device=quot;/dev/dspquot; sink name=output0 load-module module-oss device=quot;/dev/dsp1quot; sink name=output1 load-module module-combine sink name=combined master=output0 slaves=output1 set-sink-default combined Lennart Poettering The PulseAudio Sound Server
  • 175. Introduction What is PulseAudio? Usage Internals Recipes Outlook Recipe: Combine two Stereo devices into a virtual 4-channel Surround device Lennart Poettering The PulseAudio Sound Server
  • 176. Introduction What is PulseAudio? Usage Internals Recipes Outlook Recipe: Combine two Stereo devices into a virtual 4-channel Surround device load-module module-oss device=quot;/dev/dspquot; sink name=output0 channel map=left,right channels=2 Lennart Poettering The PulseAudio Sound Server
  • 177. Introduction What is PulseAudio? Usage Internals Recipes Outlook Recipe: Combine two Stereo devices into a virtual 4-channel Surround device load-module module-oss device=quot;/dev/dspquot; sink name=output0 channel map=left,right channels=2 load-module module-oss device=quot;/dev/dsp1quot; sink name=output1 channel map=rear-left,rear-right channels=2 Lennart Poettering The PulseAudio Sound Server
  • 178. Introduction What is PulseAudio? Usage Internals Recipes Outlook Recipe: Combine two Stereo devices into a virtual 4-channel Surround device load-module module-oss device=quot;/dev/dspquot; sink name=output0 channel map=left,right channels=2 load-module module-oss device=quot;/dev/dsp1quot; sink name=output1 channel map=rear-left,rear-right channels=2 load-module module-combine sink name=combined master=output0 slaves=output1 channel map=left,right,rear-left,rear-right channels=4 Lennart Poettering The PulseAudio Sound Server
  • 179. Introduction What is PulseAudio? Usage Internals Recipes Outlook Recipe: Combine two Stereo devices into a virtual 4-channel Surround device load-module module-oss device=quot;/dev/dspquot; sink name=output0 channel map=left,right channels=2 load-module module-oss device=quot;/dev/dsp1quot; sink name=output1 channel map=rear-left,rear-right channels=2 load-module module-combine sink name=combined master=output0 slaves=output1 channel map=left,right,rear-left,rear-right channels=4 set-sink-default combined Lennart Poettering The PulseAudio Sound Server
  • 180. Introduction What is PulseAudio? Usage Internals Recipes Outlook Outlook Lennart Poettering The PulseAudio Sound Server
  • 181. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current Work Best possible OSS compatibility Lennart Poettering The PulseAudio Sound Server
  • 182. Introduction What is PulseAudio? Usage Internals Recipes Outlook Current Work Best possible OSS compatibility More earcandy Lennart Poettering The PulseAudio Sound Server