Releases/FeaturePulseaudio

From FedoraProject

< Releases
Revision as of 19:31, 27 November 2008 by Kiilerix (Talk | contribs)
(diff) ← Older revision | Current revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Contents

Pulseaudio

Summary

Use pulseaudio as sound server, install and use it by default.

Owner

Current status

Pulseaudio packages are available, but not installed and used by default.

Needs support in other packages so that PA support is properly set up using padsp, the alsa plugin and stuff.

The Pulseaudio and hal packages in rawhide now have the necessary support to play well with fast user switching.

The alsa-plugins-pulseaudio package has just appeared in rawhide.

PulseAudio has been made default for new installs.

The switch has been officially anounced

Usage cases/rationale

1. Karl logs into his system. He has desktop sound effects turned on, so it clicks and plings as he presses buttons and does other things. When he listens to music in rhythmbox, the clicks and plings do still happen over the background music.

2. Karl wants to quickly check out another song that he knows how to find in xmms, so he turns down the volume in rhythmbox and starts xmms. He hears the music from both players at the same time.

3. Karl shares his desktop with the rest of his family. His wife Sara uses the user-switching feature on the lock dialog to start her own session. The music from Karls session stops when Saras session becomes active, and the flash ads on the web pages she visits make the expected noise.

Scope

This requires changes to Pulseaudio to cooperate with ConsoleKit or hal. It also requires changes to the configuration of legacy audio systems to make all sound go through Pulseaudio.

Test Plan

Verify that the use cases above do all work. Also test that a11y tools which use sound (ie the orca screen reader) work with pulseaudio, both inside the session and on the login screen.

Dependencies

Depends on a ConsoleKit or hal enhancement to notify interested applications when sessions become active or inactive.

Details

Fast-user-switching support

After some discussion, the current plan is to make hal emit dbus signals when it adds and removes ACLs on devices. Pulseaudio will then let go of the device. Later on, if the kernel gets revoke() support, hal can enforce this. Pulseaudio should be prepared for that and handle SIGBUS when using mmapped devices.

Current HAL development version support the ACL changes now, and the Pulseaudio snapshot in rawhide makes use of it.

Basically, FUS works fine now.

revoke() is not available in the kernel yet, support for this I will leave for later.

Legacy audio systems

Most important are OSS and ALSA (though I wouldn't call ALSA "legacy"). The former can be supported using padsp in most cases. padsp has to be run for each program seperately. I am not sure how can do this best. Suggestions welcome. I fear every single OSS-using package needs to patched to replace the actual binary by a shell script that runs the real binary through padsp. The latter can be supported through the alsa-plugins package which is currently being introduced to fedora CVS and should be very straightforward.

The gstreamer-plugins-pulse package should probably installed by default as well.

We also have plugins for XMMS, libao and a couple of other application which are probably very low priority, and are mostly not even part of fedora yet.

Packages

Here is a list of packages that will be needed in the default install:

pulseaudio
pulseaudio-esound-compat
alsa-plugins-pulseaudio
pulseaudio-module-x11
pulseaudio-module-gconf
pulseaudio-utils
gstreamer-0.10-plugins-pulseaudio

Also, newer flash needs some support library to work with pulseaudio, that we probably want to install by default (since firefox will happily offer to install flash, and it is nice if sound works after that).

We also need to remove esound from the default install.

Contingency Plan

Stay with esound/no sound server at all. None of the above scenarios will work.

We can always go back to the status quo ante easily. It's just a matter of having pa in the default install set, toggling one gconf option, and patching a single config file (asound.conf). Since PA is a drop-in replacement for ESD, which even comes with an "esd" script (which is command line compatible with the original ESD), changes necessary are not too invasive.

Documentation

Release Notes

Comments