PipeWire 1.2 Released With Async Processing, Explicit Sync & Other Features

Written by Michael Larabel in PipeWire on 27 June 2024 at 09:45 AM EDT. 70 Comments
PipeWire 1.2 was christened today as the latest major feature update to this solution common to the modern Linux desktop for managing audio/video streams.

PipeWire 1.2 brings many new features like async processing and explicit sync support, Snap packaging support, streaming to Snapcast servers for multi-room audio, and many other additions.

PipeWire logo

The just-released PipeWire 1.2 announcement sums up the major changes in this new version as:
- Support for asynchronous processing has been implemented. Nodes can choose (or be forced) to be scheduled asynchronously. The graph will not wait for the output of the node to continue processing but it will use the output of the previous cycle (or silence) instead. This adds one cycle of latency but it can avoid having some nodes blocking the processing graph. Non realtime streams and filters now also use this asynchronous processing instead of their own slightly broken version.

- The concept of node.sync-group was added. This groups nodes with overlapping sync-group together when one of them sets the node.sync = true. This is now used to make sure all nodes are scheduled together when JACK transport is started so that they all see the same transport time.

- Config parsing errors are reported earlier and much better with line and column numbers where the parsing started to fail.

- Add support for mandatory metadata when negotiating buffer parameters. This can be used to only negotiate extra buffer planes when certain metadata is negotiated. One use case is the explicit sync support that requires 2 extra fds for the timelines.

- Explicit sync metadata and support was added.

- Support was added for making and using multiple data-loops in the server and clients. Support for CPU affinity and priorities was added to the data-loops as well.

- The log topic debug levels can now be changed at runtime with metadata.

- The log levels in the pulse server can be dynamically changed with a /core message.

- The UCM conflicting devices patches were merged.

- Add snapcast-discover module to stream to snapcast servers.

- Rework how peers are linked and the counters are updated. Resume the peers when a node is unlinked and not yet processed. This should cause less occasional dropouts in the graph when reconnecting things.

- Many GStreamer element updates.

- Many more fixes and improvements.

PipeWire 1.2 looks like a great update for H2'2024 Linux desktop distributions.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.

Popular News This Week