Different client buffer sizes (and required wake time)
I have a system with multiple audio clients, each may be performing very differently and have difficulty feeding data in time. They can also be present and playing audio at the same time.
To avoid, xruns, I want to allow different buffer sizes for each. By example, say the pipewire quantum is 512. I want good performing apps to use 512 and some others to use 2048 and have lower scheduling requirements.
Example below using a null-audio-sink sending audio over the network via the RTP module. I want to keep the null-audio-sink, rtp-sink and Chromium at 512 but would like "Game" to be at 2048 such that it may feed data less often. It appears even though QUANT in pw-top shows 2048, it is still getting 512 as seen in these logs with "client too slow!".
pw.node: (Game) client too slow! rate:512/48000 pos:101266944 status:triggered
pw.node: (Game) client too slow! rate:512/48000 pos:102322688 status:awake
pw.node: (Game) client too slow! rate:512/48000 pos:105001472 status:triggered
pw.node: (Game) client too slow! rate:512/48000 pos:105903104 status:triggered
pw.node: (Game) client too slow! rate:512/48000 pos:111538176 status:triggered
S ID QUANT RATE WAIT BUSY W/Q B/Q ERR FORMAT NAME
S 29 0 0 --- --- --- --- 0 Dummy-Driver
S 30 0 0 --- --- --- --- 0 Freewheel-Driver
R 31 512 48000 64.7us 10.2us 0.01 0.00 0 F32P 2 48000 null-audio-sink
R 39 512 48000 13.8us 46.4us 0.00 0.00 82 S16BE 2 48000 + rtp-sink
R 65 2048 48000 22.8us 18.9us 0.00 0.00 118 F32LE 2 48000 + Game
R 69 512 48000 660.9us 30.1us 0.06 0.00 2 F32LE 2 48000 + Chromium
Or maybe there is already a way to do this? I couldn't find anything so far, running 0.3.60.