Since 2022-06-18 (commit cbc548d3), dynamic rate limiter allows
overshooting one frame by the factor of 50% so we can safely set the
default factor to 1.5 now.
see also GH-114
Decrease log level for implicit options returning E_NOTIMPL to info -
perhaps not important at all (like passthrough on old devices) and we
do not want to decrease user attention to warning.s
It doesn't seem to be restricted by API version, eg. on an Intensity Pro,
16 works for both SDK 11.6 and 12 (second advertises 32/64 channels in
SDK doc, first not), although it has only 2 channels (attrs mach/aach/iach).
32 channels is refused by both SDK versions, so doesn't necessarily need
to be related to version.
Since this setting is on the sender, we do not need to check the validity
since if invalid, it would fail later, anyways.
Not needed to store separately "current" buffer packets since it is
already stored in cumulative, it is just needed to store the current
buffer number.
It needs to be enabled explicitly, anyways - at least Opus won't work
with former UG versions. For 40 ms frame, it produces 2 packets. When
merged into one packet, the decoder is unable to decompress.
Send channels sequentially with a new function to simplify the code.
Also removed the the cumbersome multiplier packet interleaving - not
sure if it worked as expected (having sliding n-packet interleave window
for n-multiplied stream).
Now we simply send all packets of the frame as without multiplication
and then repeated with M-bit set to the latest packet. It is much easier
and it is supposed to work approximately the same or even better.
Since pipewire will convert the audio format to anything we ask it to,
this shouldn't have any effect. Maybe will help when implementing the
exclusive device mode in the future.
Stream target should be set using PW_KEY_TARGET_OBJECT to target node
serial or node name.
However, old pipewire versions (e.g. 0.3.48) seem to ignore this
property. So instead we use the PW_KEY_NODE_TARGET (which gets
deprecated in 0.3.64) with the target node name. This older property
however doesn't support serial numbers.