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