Audio / Video and independent links seem to be processed in the same thread (data loop)
In our setup, we link multiple ALSA audio input / output streams to each other and also some video streams. In certain situations (when there is change in video streams) it seems that the audio processing is late. Normally, the followers are processed in the driver interval, but in said situations it happens that the time is a multiple of the driver interval, causing a resync due to completely wrong buffer delays.
With the preemptirqsoff kernel tracer we see that there are sometimes longer hangs in syscalls done by the video parts of pipewire (which is probably the drivers fault).
procfs shows that there are only 2 threads running in the daemon. I suspect one is the main loop with little CPU usage, the other being the data loop thread.
In the code I see, that there is one context in the pipewire daemon, and one context seems to have one data loop.
Based on these findings, am I correct that all the processing in the daemon takes place in this one data loop? If yes, are there any plans to support processing independent graphs in own threads? Am I missing a configuration option, that allows me to spawn multiple data loops or contexts?
Are there any other approaches to tackle lots of stream links?