PulseAudio is now enabled by default on new Fedora installs

Lennart Poettering mzerqung at 0pointer.de
Thu Aug 16 17:03:23 UTC 2007


Hi!

A few minutes ago I edited "comps-f8.xml" and kicked out esound and
enabled PulseAudio instead for default installs, as suggested here:

   http://fedoraproject.org/wiki/Releases/FeaturePulseaudio

If PulseAudio is installed a lot of audio applications *will*
break. PA provides compatibility with a couple of audio APIs, and it
is my declared intention to provide compatibility with existing APIs
as good as possible. However some APIs are notoriously difficult to
virtualize (OSS), others don't really fit on top of something that is
not a hardware device (ALSA, OSS), even others are often violated
brutally by many applications (ALSA), and others are just too broken
to be properly emulated in PA.

Due to all that our compatibility APIs are far from perfect. They're
quite good (and probably hugely better than any previous effort) but
there are still a lot of applications where they are not good enough,
especially those which play some dirty, non-standard games with audio
devices. (i.e. require DMA/mmap working, use exotic fragment settings
and suchlike).

If your application doesn't work with any of our compatibility APIs,
please file a bug to us and we'll try to fix this in our compat
layers. Please do *not* file any bugs regarding adobe flash. We know
it doesn't work on PA. Flash is completely broken when it comes to
audio it we can neither support it through our ESD compat nor through
our ALSA compat. Due to the closed source nature of Flash we cannot go
and fix their code. I will eventually add some workarounds for
this. But it's low priority on my list, given the closed source nature
of Flash. Oh, and Flash is evil anyway. ;-)

If you're packaging an audio application in Fedora, please go through
the following list and check what is necessary to get your package
working flawlessly with PA. And test your application with PA!
Unfortunately, due to the heavy balkanization of Linux audio it is
necessary to go through this list for each app seperately, and if
necessary do some manual modifications to each seperately.

1. For GStreamer applications no changes are necessary.

2. For ESD clients no changes are necessary.

3. Read http://pulseaudio.org/wiki/PerfectSetup, you might find some
   valuable information for your package there.

4. If you maintain a "pro audio" application or a full-screen
   game: pro audio apps usually have very strict requirements on the
   sound system they use. We cannot provide all of them (yet) in
   Pulseaudio. Thus I recommend using a tool "pasuspender" that is
   shipped in pulseaudio-utils. This tool will suspend a running
   (local) PA server (if one is running), so that the audio devices 
   are closed and start a child
   process that may be passed on the command line. After the child
   died the audio devices are resumed again. The execution environment
   (or open FDs) is not touched by pasuspender. 

   Say you have a program, let's call it "jack". Then, rename /usr/bin/jack to
   /usr/bin/jack.real and make /usr/bin/jack a shell script with
   contents like this:

   #!/bin/sh
   if test -x /usr/bin/pasuspender ; then
       exec /usr/bin/pasuspender /usr/bin/jack.real "$@"
   else
       exec /usr/bin/jack.real "$@"
   fi

   Please use pasuspender only in few cases, because PA is network
   transparent and by using pasuspender you loose that (among other
   things).

   Don't forget to depend on pulseaudio-utils in your spec file if you
   use this!

5. If you have an application that uses OSS, check whether it works
   with padsp, our LD_PRELOAD OSS wrapper. If so, replace its binary 
   by something like this:

   #!/bin/sh
   if test -x /usr/bin/padsp ; then
       exec /usr/bin/padsp /usr/bin/the-real-binary "$@"
   else
       exec /usr/bin/the-real-binary "$@"

   Don't forget to depend on pulseaudio-utils in your spec file if you
   use this!

6. If you have an application that uses ALSA, please make sure that it
   doesn't hardcode ALSA driver names (i.e. something like "hw:0"), it
   should use  "default" instead, which is now being redirected to
   "pulse", our plugin for libasound. Hardcoding ALSA device names
   (besides "default") is a bug in your application anyway, so here
   you have yet another reason to fix that!

Please note, that the PA version in Rawhide is based on an SVN
snapshot that has not been released officially yet. Not all
functionality has been restored that had been available in previous PA
versions, due to major changes in the core since PA 0.9.6.

Small FAQ:

1. What is this PulseAudio thing anyway?

  Come out under your rock, and read this:

        http://pulseaudio.org

  browse through this:

        http://0pointer.de/public/pulseaudio-presentation-ols2007.pdf

  watch this:

        http://mirror.linux.org.au/pub/linux.conf.au/2007/video/talks/211.ogg

  or have a peek on this:

        http://fedoraproject.org/wiki/Releases/FeaturePulseaudio

2. I hate sound servers, and all this Pulse crap!

  Please go back and hide under your rock again! Thank you!

3. I don't want to reinstall my system just to get PA installed. What
  can I do to install PA on my Rawhide system?

  Run "sudo yum install pulseaudio pulseaudio-esound-compat
  pulseaudio-module-gconf pulseaudio-module-x11
  gstreamer-plugins-pulse pulseaudio-utils alsa-plugins-pulseaudio
  pavucontrol"

  You might also want to install a couple of optional packages:

  "sudo yum install pulseaudio-module-zeroconf pulseaudio-module-lirc
  pavumeter paman paprefs padevchooser"

  You also have to make sure that some GConf keys are set up properly:

  /system/gstreamer/0.10/default/audiosrc -> pulsesrc
  /system/gstreamer/0.10/default/audiosink -> pulsesink (or autoaudiosink)
  /system/gstreamer/0.10/default/chataudiosink -> pulsesink (or autoaudiosink)
  /system/gstreamer/0.10/default/musicaudiosink -> pulsesink (or autoaudiosink)

  /desktop/gnome/sound/enable_esd -> True

4. What about KDE? 

  Yes, what about it? TBH I don't know. All I know is that KDE still
  ships aRts, but I have no idea what steps would be necessary to get
  properly supported in KDE. If you're into KDE and interested to get
  PA working properly with KDE, ping me!

5. I have a question!

  Just ping me (mezcalero) on #pulseaudio on freenode! I am happy to
  answer any question you might have.

  But before doing so, please have a look on this:

  http://pulseaudio.org/wiki/FAQ

Thank you very much for your time,

Lennart

-- 
Lennart Poettering                        Red Hat, Inc.
lennart [at] poettering [dot] net         ICQ# 11060553
http://0pointer.net/lennart/           GnuPG 0x1A015CC4




More information about the devel mailing list