This is a bugfix release that is API and ABI compatible with previous 0.3.x releases.
- This release focuses on bugfixes and stability improvements.
- A new experimental pulse-server module was added. This module implements the pulseaudio protocol on top of PipeWire and can be used to make flatpaks work with PipeWire. It looks like this might be a better way forward compared to the libpulse.so replacement library.
- A2DP bluetooth was reworked. Playback should work a lot better now. Support was also added to automatically link an A2DP source to a playback device, which makes it possible to use PipeWire as a bluetooth receiver as well.
- Improvements to the routing and volume restore features of the session manager.
- The channelmixer does not normalize volumes anymore. Volumes are only normalized for monitoring streams now.
- Streams can actually start in the inactive state now.
- The channelmixer can now also convert volume updates from one channel layout to another. This makes saved volumes work even when streams have different channel layouts.
- Clients are only registered after the properties have been updated.
- Links now have a new active state.
- Drivers can now also specify a minimum quantum. This makes it possible for bluetooth devices to specify an optimum quantum for the given codec settings and MTU.
- The amount of data sent over the socket was reduced by only sending the data that changed.
- Client objects are now exposed after they uploaded their properties, which makes the new object more useful.
- pw-cat will now add metadata to the PipeWire streams.
Session manager improvements
- Fix crashes when reading bad data in stored settings.
- volume and routing is improved. Settings are now remembered per application or media-role.
- The session manager remembers the last device used per stream
- Fix a bug when moving streams where it could sometimes end up with linking a stream to multiple devices.
- Use RTKit to set realtime priority on the data thread in the session manager. This improves performance of the pulse-server and bluetooth devices.
- Add a new property to mark streams that want to capture from the monitor of the default sink.
- NODE_TARGET can now also contain the node name. This avoids some lookups in the pulseaudio layer when selecting target nodes by name.
- the -e and -d options are more usable now and can be used to add and remove modules from the default list of modules.
- v4l2: add some workarounds for buggy drivers. Add Limited support for droidcam.
- ACP: improve selection of default port and profiles.
- ACP: add support for using the hardware mixer for more than 8 channel streams.
- ACP: support the new port type and availability group found in PulseAudio.
- A2DP bluetooth timings were reworked. Automatic linking of A2DP sources was added to make it possible for PipeWire to act as a bluetooth receiver. The code was reworked to allow other codecs such as APTX and LDAC in the future.
- Try harder to recover from ALSA errors.
- Fix some crashes in the monitor that cause gnome-initial-setup to crash.
PulseAudio layer improvements
- Many compatibility improvements. Improved playback in chrome. Fix a crash in firefox when the daemon is stopped.
- Fix a leak in the formats.
- Fix !ADJUST_LATENCY streams like paplay.
- Make the device option in paplay work.
- Fix volume/mute notifications, this makes plasma volume updates work again.
- Do the conversion between PulseAudio cubic volumes and PipeWire linear volumes. Volume levels should behave now like they did with PulseAudio.
JACK layer improvements
- Return an error when we run out of midi events. Some application rely on this behaviour.
ALSA plugin improvements
- The ALSA plugin now also supports the node name in the playback_node and capture_node properties.