pipewire/spa/plugins
Wim Taymans 68916e062b impl-node: implement async scheduling
When node.async is set, make the node async.

Advertize SPA_IO_AsyncBuffers on mixer ports when supported. Set a new
port flag when AsyncBuffer is supported on the port.

When making a link and if one of the nodes is async and the linked ports
support AsyncBuffer, make the link async and set this as a property on
the link. For async nodes we will use SPA_IO_AsyncBuffers on the mixer
ports.

Nodes that are async will not increment the peer required counters. This
ensures that the peer can start immediately before the async node is
ready.

On an async link, writers will write to the (cycle+1 & 1) async buffers
entry and readers will read from (cycle & 1). This makes the readers read
from the previously filled area.

We need to have two very controlled areas with specific rules for who
reads and who writes where because the two nodes will run concurrently
and no special synchronization is possible otherwise.

These async nodes can be paused and blocked without blocking or xrunning
the rest of graph. If the node didn't produce anything when the next
cycle starts, the graph will run with silence.

See #3509
2024-04-18 10:31:29 +02:00
..
aec spa: export log topic enumerations 2024-01-04 10:02:55 +00:00
alsa alsa-pcm: set threshold to final value before set_swparams is called 2024-04-09 09:03:49 +00:00
audioconvert audioconvert: also clamp monitor volume to min/max 2024-04-15 16:28:24 +02:00
audiomixer impl-node: implement async scheduling 2024-04-18 10:31:29 +02:00
audiotestsrc spa: use log topics everywhere 2024-03-11 18:45:21 +02:00
avb spa: small cleanups 2024-01-10 15:51:01 +01:00
bluez5 bluez5: don't use spa_invoke from data loop to main loop 2024-04-13 15:54:22 +03:00
control impl-node: implement async scheduling 2024-04-18 10:31:29 +02:00
ffmpeg spa: use log topics everywhere 2024-03-11 18:45:21 +02:00
jack spa: use log topics everywhere 2024-03-11 18:45:21 +02:00
libcamera libcamera: add camera rotation property on nodes 2024-03-31 13:24:19 +02:00
support spa: improve null-audio-sink channels 2024-03-28 17:11:16 +01:00
test spa: use log topics everywhere 2024-03-11 18:45:21 +02:00
v4l2 v4l2: handle empty properties gracefully 2024-04-10 11:06:44 +02:00
videoconvert videoconvert: Enable loading external converter plugins 2024-01-22 13:59:16 +00:00
videotestsrc spa: use log topics everywhere 2024-03-11 18:45:21 +02:00
volume spa: use log topics everywhere 2024-03-11 18:45:21 +02:00
vulkan vulkan: Complete vulkan_pass 2024-04-09 09:05:03 +00:00
meson.build meson: fix build with missing libudev-devel 2024-02-06 11:49:40 +01:00