Files
livekit/pkg/sfu/buffer
Raja SubramanianandClaude Opus 5.5 031e7bd61d sfu: restart the dependency descriptor parser after a stream gap (#5192)
* sfu: restart the dependency descriptor parser of a publisher stream after a gap

libwebrtc numbers dependency descriptor frames with one counter across all
simulcast layers. A layer that dynacast paused for a long time resumes with a
frame number more than half the 16 bit range away from its last one. The
publisher buffer's parser never restarted, so it unwrapped the resumed frames
against the stale number and later lost a full wrap. Every packet of the layer
then fell below the structure thresholds and was dropped until the numbers
caught up, about 16 minutes for three 22 fps layers.

Enable the parser restart after a 30 s gap that relayed tracks already use, and
start the key frame seeder on a restart, as the restart drops the structure the
following packets need.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* sfu: request a key frame only when a restarted stream has no structure

The parser now reports the restart on the packet that caused it, so the
buffer does not read the parser's state. A stream that resumes with a key
frame carries its structure and needs no key frame request.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 00:39:21 +05:30
..
2023-07-27 16:43:19 -07:00