Scope

upgrade PulseAudio to at least 0.9.21 and enable module-device-manager (done)

backport the KMix PulseAudio backend, which is targeted upstream for 4.5 (done)

How To Test

No special hardware is needed, though there should be at least one sound device reachable through PulseAudio. (You can test with a dummy sink, but that won't be as effective for testing as a real one.)

start the KDE Live CD

open KMix (click on the speaker icon in the panel, then on the Mixer button)

verify that you see the PulseAudio tabs

start Dragon Player (or another Phonon-based application)

play something with it

verify that the application shows up in KMix (this also tests Phonon)

verify that it doesn't say "ALSA plugin" (Phonon should use PulseAudio natively)

verify that you don't get annoying "device 'Foo' unreachable, falling back to 'Bar'" notification popups from Phonon

verify that you actually hear the sound

quit KMix (completely, i.e. File / Quit)

open a Konsole

run KMIX_PULSEAUDIO_DISABLE=1 kmix

verify that you get the traditional ALSA mixer (all the hardware controls)

quit KMix (completely, i.e. File / Quit)

run just kmix (or start it from the menu)

verify that you get the PulseAudio KMix back

open the Multimedia tab in System Settings (i.e. the Phonon KCM)

verify that you see your sound devices listed (you should see the hardware devices which are reachable through PulseAudio, there should not be a "PulseAudio" or "PulseAudio Sound Server" device)

All this should pass without crashes (obviously), error messages or annoying notification popups.

User Experience

KDE users are now able to set priorities for hardware devices while using PulseAudio and to control application volumes and devices used by individual applications.

Dependencies

Requirements this feature depends on:

KDE 4.4 contains the Phonon improvements and is the base for the KMix backports (already in Rawhide)

PulseAudio 0.9.21 adds the module-device-manager (already in Rawhide)

Nothing else depends on this feature.

Contingency Plan

The feature is already complete, but it is still technically possible to revert/disable it if we don't judge it good enough. The Phonon and KMix parts can be reverted separately. It is also possible to disable KMix PulseAudio integration by default while still shipping it by setting the KMIX_PULSEAUDIO_DISABLE environment variable.

Release Notes

Fedora 13 features improved integration of the KDE desktop and applications with PulseAudio. Phonon, the KDE sound framework, now detects PulseAudio and allows you to configure the priorities of devices while still using PulseAudio (where before it would offer one PulseAudio device and several options for direct hardware access which do not work properly when PulseAudio is running). KMix, the KDE volume control application, now also detects PulseAudio and allows you to set application volumes and move applications between hardware devices when PulseAudio is running.

Users of KMix will notice that most of their hardware sound controls are no longer shown in the default (PulseAudio-based) interface. To get access to these controls, close KMix (use right-click / quit) and restart it by running KMIX_PULSEAUDIO_DISABLE=1 kmix in a Konsole terminal. To make this change permanent, add export KMIX_PULSEAUDIO_DISABLE=1 to your ~/.bashrc file.