- Emulation libraries need to be tested with a lot of applications. Many application (ab)use API in different ways that all need to be supported.
- The ALSA plugin is probably quite complete and seems to work with a lot of apps.
- The JACK library is quite complete. The JACK API is not huge but apps still expect certain implementation details that are not documented well (order of callbacks, thread contexts, etc)
PulseAudio in general is a big API with many subtle bugs that will need time to perfect. Some things currently work with the pulseaudio API, others don't. Most apps should be able to produce/consume sound.PulseAudio support is now implemented with a replacement daemon. The replacement library is deprecated. The daemon has much better compatibility and uses the regular pulse library.
Bluetooth is not tested much and might not work very well yet.See below.
- Portaudio apps tend to do bad things (audacity) like opening all devices multiple times in all possible formats and configurations to 'probe' the devices. This is quite expensive.
No mixer, unclear how it could make sense.since 0.3.8.
- Tested: aplay, vlc, mplayer, sweep, apulse
- No session management API implemented, possibly not important/used.
- Internal clients not implemented.
Freewheeling not implemented. Since 0.3.7 there is a dummy driver that could be used to implement this later.Freewheeling is implemented since 0.3.28.
Latencies not implemented at all yet.Latency reporting is implemented since 0.3.29.
- No jackdbus yet.
- Tested: ardour5, qjackctl, carla, catia, jack_simple_client, jack-smf-player, xjadeo, qsynth, calfjackhost, ...
Move to sink/source is not implemented.since 0.3.7.
Default source/sink is not implemented.since 0.3.7.
Volumes are done in software currently, hardware volumes are not touched.since 0.3.7 uses UCM or PulseAudio profile config to implement hardware volume and mute.
Profiles on devices is not implemented.since 0.3.7. supported with UCM and PulseAudio profile config.
Time reporting is inaccurate and broken, apps might skip, stutter or hang. better since 0.3.4, firefox youtube works perfect, chrome youtube has trouble.Better with pulse-server in 0.3.16.
Extensions are not implemented.Only the stream-restore extension is implemented for the notification volume. device-manager and device-restore are not implemented yet.
- There are problems with switching between ports and profiles when plugs are (dis)connected.
- Tested: paplay, pavucontrol, vlc, mplayer, firefox, chrome, webrtc, youtube, spotify, ...
Session Manager (pipewire-media-session)
The default session manager has no configuration options. It performs a hardcoded logic on devices detected by udev.Since 0.3.4 it's however possible to disable some modules. Since 0.3.22 there are various config files to configure and tweak behaviour.
No support for setup or configuration of devices with UCM or otherwise. All ALSA PCM are simply exposed as is.since 0.3.7 using PulseAudio profile config parser.
No mixer support in any way.since 0.3.7 via PulseAudio config parser.
- No support for the session-manager API, no Endpoints/Streams.
- A2DP source and sink works well,
LDAC codec causes stuttering, AptX/HD should work fine.
- SCO needs testing
- Flatpaks using PulseAudio will work with the pulse-server implementation.
- Flatpaks with JACK will not work and need to be converted to use the replacement
- Tested: chrome, firefox, spotify, lutris with the libretro runner, steam, sonic robo blast 2, virt manager (own packaging, not in Flathub), audio over SPICE TCP socket.