-
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.
EDIT: Whoops, looks like a repost.