pipewire/spa/plugins
Pauli Virtanen f21c44751e bluez5: iso-io: resync if controller packet completion is out of sync
Add heuristic to resync streams if controller packet completion times
for different streams differ by too much.  This likely indicates
controller has lost sync between the streams, and we have to reset
playback.

There's no way to do this properly. The ISO-over-HCI transport is badly
specified in Bluetooth Core Specification.  Many controllers have broken
implementation of the current send timestamp read command, so packets
have no identifiers which ISO interval they belong to.

Controllers try to reconstruct the right interval based on
manufacturer-specific heuristics probably based on packet arrival times.
Kernel + USB introduce timing jitter, and playback sometimes desyncs and
packet from some streams are persistently sent some multiple of the SDU
interval off from the intended timing.

Try to determine this from packet completion latencies.  This is
somewhat manufacturer specific, tested on Intel & Realtek, hopefully
works on others too.
2026-01-11 17:55:26 +02:00
..
aec spa: aec: webrtc: Expose echo canceller mobile_mode 2025-07-09 13:02:18 -04:00
alsa spa: alsa: actually set the channel map when use-chmap=true 2026-01-05 15:37:05 +00:00
audioconvert Adds explanation to reduce chance of regressing the fix 2025-12-15 08:20:24 +00:00
audiomixer audiomixer: only passthrough on dynamic data 2025-12-01 16:33:50 +01:00
audiotestsrc audiotestsrc: Operate as follower too 2025-12-16 13:15:00 +01:00
avb modules: support audio.layout where we can 2025-10-30 12:29:31 +01:00
bluez5 bluez5: iso-io: resync if controller packet completion is out of sync 2026-01-11 17:55:26 +02:00
control control: unit test for event sort 2025-09-17 13:42:12 +02:00
ffmpeg spa: use log topics everywhere 2024-03-11 18:45:21 +02:00
filter-graph filter-graph: add feedback and feedforward to delay 2025-11-28 17:10:55 +01:00
jack *: don't include standard C headers inside of extern "C" 2025-05-30 09:48:28 +01:00
libcamera spa: libcamera: source: ignore frame rate 2025-11-21 08:20:30 +00:00
support support: return NULL instead of FALSE 2026-01-03 22:54:25 +01:00
test spa: make the wave, pattern and ditherType Int 2025-06-13 10:06:09 +02:00
v4l2 spa: ensure enum always has 2 values 2025-11-04 09:23:26 +01:00
videoconvert spa: add Capability and PeerCapability 2025-11-21 10:08:46 +01:00
videotestsrc loop: spa_loop_invoke -> spa_loop_locked where possible 2025-05-30 11:59:35 +02:00
volume treewide: access the position information using helpers 2025-10-21 13:06:25 +02:00
vulkan spa: vulkan: map VK_INCOMPLETE to ENOSPC 2025-07-12 19:54:14 +00:00
meson.build filter-chain: move the filter-graph to plugins 2024-11-13 11:12:06 +01:00