pipewire/spa/plugins
Pauli Virtanen a6dcdfae0c bluez5: iso-io: track and apply corrections to tx latency
Use TX timestamps to get accurate reading of queue length and latency on
kernel + controller side.

This is new kernel BT feature, so requires kernel with the necessary
patches, available currently only in bluetooth-next/master branch.
Enabling Poll Errqueue kernel experimental Bluetooth feature is also
required for this.

Use the latency information to mitigate controller issues where ISO
streams are desynchronized due to tx problems or spontaneously when some
packets that should have been sent are left sitting in the queue, and
transmission is off by a multiple of the ISO interval.  This state is
visible in the latency information, so if we see streams in a group have
persistently different latencies, drop packets to resynchronize them.

Also make corrections if the kernel/controller queues get too long, so
that we don't have too big latency there.

Since BlueZ watches the same socket for errors, and TX timestamps arrive
via the socket error queue, we need to set BT_POLL_ERRQUEUE in addition
to SO_TIMESTAMPING so that BlueZ doesn't think TX timestamps are errors.

Link: https://github.com/bluez/bluez/issues/515
Link: https://lore.kernel.org/linux-bluetooth/cover.1710440392.git.pav@iki.fi/
Link: https://lore.kernel.org/linux-bluetooth/f57e065bb571d633f811610d273711c7047af335.1712499936.git.pav@iki.fi/
2024-04-12 18:50:15 +03: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 spa: use log topics everywhere 2024-03-11 18:45:21 +02:00
audiomixer spa: export log topic enumerations 2024-01-04 10:02:55 +00: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: iso-io: track and apply corrections to tx latency 2024-04-12 18:50:15 +03:00
control spa: use log topics everywhere 2024-03-11 18:45:21 +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