GNOME/Ideas/11.0/PulseAudio

From openSUSE

This page contains information about the integration of PulseAudio into GNOME for the upcoming openSUSE 11.0 release.

Packaging is taking place in the home:rodrigomoya:pulseaudio build service project, so if you want to help with testing, make sure you add this repository to your software repositories in Yast. If you want to help packaging, just contact Rodrigo and ask for permissions on that subproject.

Contents

TODO

Upstream To Do list is here.

To Do List Given to jpr by lennart (the pulseaudio author) for integration into openSUSE at GNOME Boston Summit 2007

Package Status Assignee
pulseaudio 0.9.7 - submitted late October
alsa rodrigo
gst-pulse rodrigo
libasound plugins pulseaudio plugin, patch from fedora, svn
glibc
  • abba patch. This is a patch to fix some freezing happening when running pulseaudio in gnome-session. I fear we have to get that patch manually from Fedora's glibc-2.6.90-14. Hence getting it directly from upstream glibc CVS is probably the best way to get it. This is part of glibc 2.7 anyway.
FunkyM
xmms pulse xmms is dropped from the distro? cyberorg
libao pulse
padsp
  • check all oss/libaoss using apps work with this. This needs to be read carefully. For applications insisting on using OSS consider adding wrappers like this:
#!/bin/sh
if test -x /usr/bin/padsp ; then
  exec /usr/bin/padsp -n "Foomedia Flush" -- therealprogram "$@"
else
  exec therealprogram "$@"
fi

This makes those applications appear much nicer (s/Foomedia Flush/RealApplicationName) in the PulseAudio volume control. Using -m for padsp might make sense too.

pasuspender
  • For jack and quake2 (and similar apps using raw ALSA or when the software doesn't work with our ALSA or OSS emulation), consider adding wrappers like this:
 #!/bin/sh
if test -x /usr/bin/pasuspender ; then
  exec /usr/bin/pasuspender therealprogram "$@"
else
  exec therealprogram  "$@"
fi

This wil temporarily suspend PA's access to the audio devices, making it accessible for other applications. Note that PA closes the devices after 1s of idle anyway, so most of the time this script won't even be necessary, except in cases where one of these apps is started from a menu or similar where an event sound is generated when clicking on the menu item which will block the audio device for a second, i.e. possibly causing the app started not being able to open the audio device. Hence it is better to have these wrapper scripts. Note that on some applications just using pasuspender is not sufficient. If they use "default" as ALSA audio device they still will be connected to PA. Hardcoded device strings is a big problem anyway, especially with closed source software. It's not fun.

pavucontrol
paprefs
paman
pavumeter
padevchooser
xine
  • The PA backend for XINE is not perfect, but apparently good enough. There have been some issues that need to be fixes. It's on Lennart's TODO list.||
mplayer
  • Lennart has patch (This goes to packman?) which he says is out-of-date. It was never accepted by the MPlayer people so it bitrotted a bit, and doesn't apply as is anymore on MPlayer. Lennart plans to post it a second time, cleaned up, but since Fedora doesn't ship Mplayer this is no top-priority for him. Also, the ALSA backend of MPlayer seems to work fine with the PA plugin for ALSA.
Check KDE phonon + xine + pulse
flash
  • libflashsupport.so (if exists, overrides audio functions), grab from lennart's git (git.0pointer.de). Flash is big pile of bugs. If libflashsupport.so is not used it will open as many PCM streams as possible (64 on PA), and then it cannot really cope with that and doesn't work anymore. And PA refuses to take any further connections as a safety feature. In effect, if you load Flash without that aforementioned plugin you basically kill audio entirely until your browser terminates and all connections Flash made to PA are closed. (yes, Flash keeps all streams open all the time, it never closes them until the browser terminates. It's an evil piece of software)
  • Make sure flash audio works on x86_64 with nspluginwrapper (it's possible, but you need to have 32bit libs of libflashsupport and pulseaudio as well as any deps)
  • There is a package for a PA-based plugin here.
  • Imported libflashsupport package in home:rodrigomoya:pulseaudio repository
http://www.pulseaudio.org/wiki/PerfectSetup list of app setup
start up
  • Turn off session support in pulse, autostart fragment to turn on xsmp
gnome-sound-properties
  • Needs to reflect pulse audio better
rodrigo

Development

Compilation instructions

PulseAudio is now integrated into jhbuild (the GNOME SVN-based build system), so to build it:

  • Edit ~/.jhbuildrc and add 'pulseaudio' to the moduleset array in that file. It's probably a good idea to place it in front, so that any GNOME module depending on PulseAudio can find it. Then just running:
jhbuild build pulseaudio

should pull and compile PulseAudio and all its dependencies. One of those dependencies is xmltoman, which you can find in Darix' home repository.

Tentative Installation Instructions

Install via 1-click (10.3)

Install via 1-click (FACTORY)

Reboot and log in as user.

Launch PulseAudio Device Chooser

Right-click the icon in the traybar and play the test sound.

750px-Pulseaudio-banshee-and-totem.png

Known problems

If it does not work, you might be still have the esound binaries not replaced with the wrapper scripts (it might happen depending on which repositories you are subscribed to). In this case, as root, run:

$ rcesound stop
$ rcalsasound restart

Then, with your user:

$ pulseaudio &
$ padevchooser

Also, if you were trying the packages before, when it was necessary to run programs as root, you might be hitting this error:

E: main.c: Failed to create '/tmp/pulse-$user': Operation not permitted

In this case, just remove that directory and try again.