PipeWire 0.3.81 (2023-10-06) This is the first 1.0 release candidate that is API and ABI compatible with previous 0.3.x releases.

Highlights

  • jackdbus support is now enabled by default.
  • IRQ based scheduling in ALSA was improved and enabled by default for Pro-Audio profile. It will also link the pcms together to get lower latency. This now matches what JACK does and results in equal latency for Pro-Audio profiles.
  • Support both old and new versions of webrtc-audio-processing to make the transition easier.
  • Forced quantum changes by nodes or metadata will now also force a suspend and resume of the graph, like the rate changes to make sure all nodes adapt to the new quantum. This is important for Pro-Audio nodes that need to reconfigure the hardware to a new period in IRQ based scheduling.
  • Fix a regression in regex parsing.
  • Many bugfixes and improvements.

PipeWire

  • Jackdbus is by default enabled now. The idea is that when jackdbus is installed, the real libjack.so is in the path and we can become a real JACK client.
  • Forces quantum changes by nodes or metadata will now also force a suspend and resume in the graph, like the rate changes to make sure all nodes adapt to the new quantum. This is important for Pro-Audio nodes that need to reconfigure the hardware to a new period.
  • The stream now has an EARLY_PROCESS option that can be used to implement custom buffer fill levels. (#3480)
  • Fix a regression in regex parsing. (#3528)
  • Fix a bug in position reporting in the driver node. (#3189) (#3544)
  • Destroying a link will now recalculate the graph correctly.
  • Fix the rate comparison for finding the best rate in the graph.
  • Use malloc_trim() when available to release memory. (#1840)

Tools

  • pw-cat now supports DFF DSD files.
  • pw-cli avoid some NULL derefs in some cases.

Modules

  • The RAOP sink has seen some cleanups and improvements. It will now ask for feedback every 2 seconds to keep some devices alive.
  • A bug in filter-chain was fixed where it would fail to apply the gain when mixing just one source.
  • The filter-chain can now pass the stream volume to a control in the filter-chain graph. (#3434)
  • Improve volume handling in RAOP sink.

Pulse-server

  • Some cleanup in the pending_stream handling.
  • Fix a regression in the event emission code where it failed to emit a changed event when a node was linked. (#3522)
  • Lower the realtime priority of pulseaudio clients.
  • Set pulse.module.id on the echo-cancel streams. (#3541)

SPA

  • Support both old and new versions of webrtc-audio-processing to make the transition easier.
  • The ALSA driver now does the sync of all followers directly from the wakeup event. This results in more stable rate matching.
  • IRQ based scheduling in ALSA was improved and enabled by default for Pro-Audio profile. It will also link the pcms together to get lower latency. This now matches what JACK does and gives equal latency for Pro-Audio profiles.
  • GNU/Hurd support was added.
  • Some improvements to passthrough handling.

Bluetooth

  • Improvements to the codec handling when PipeWire is used as Audio Gateway.
  • Adapt to new Bluez API for BAP devices.

JACK

  • When the jack library is set in the default library path, avoid using LD_LIBRARY_PATH because this can cause confusion.
  • Handle clearing the latency on a port.
  • jack_property now always manages to actually change the metadata because it waits for a roundtrip before exiting.
  • Skull giver@popplesburger.hilciferous.nl
    link
    fedilink
    arrow-up
    23
    ·
    9 months ago

    Pipewire fixed a lot of Bluetooth audio issues for me, and the ease with which I could enable things like SBC XQ was a lot more pleasant than the unoffiical Pulse integration that would do that same. It’s also interoperable with JACK (though it’s not as low-latency as Jack, but still beats Pulse of course) which is pretty cool, and it can do audio stream management that Pulse probably can but wasn’t built for.

    It’s also the most common implementation of various Wayland screen recording features, though that doesn’t mean someone couldn’t reimplement the API with Pulse integration instead.

    The most common way applications integrate with Pipewire seems to be through the Pulse compatibility layer, so if you don’t want to upgrade you can stick with Pulse for years to come. It’s not so much a full replacement (like how X.org is on maintenance only and Wayland intends to replace it for good) as it is a more modern alternative that has become the preference of many people (like how systemd has taken over the init space by being easier to work with, with alternatives still being developed and maintained to this day).