From 35bb36e5fb2dd7321b354782251084ae3ac79cbf Mon Sep 17 00:00:00 2001 From: Raja Subramanian Date: Mon, 20 Jan 2025 16:40:52 +0530 Subject: [PATCH] Request key frame if subscribed is higher than max seen and not (#3348) congested. --- pkg/sfu/forwarder.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/pkg/sfu/forwarder.go b/pkg/sfu/forwarder.go index 219c9b2e5..111b4d80f 100644 --- a/pkg/sfu/forwarder.go +++ b/pkg/sfu/forwarder.go @@ -1552,7 +1552,18 @@ func (f *Forwarder) CheckSync() (bool, int32) { f.lock.RLock() defer f.lock.RUnlock() - return f.vls.CheckSync() + locked, layer := f.vls.CheckSync() + if !locked { + return locked, layer + } + + // max published layer (as seen by this forwarder) could be + // lower than max subscribed, mark de-synced if not deficient + if !f.isDeficientLocked() && f.vls.GetMax().Spatial > f.vls.GetTarget().Spatial { + return false, layer + } + + return true, layer } func (f *Forwarder) FilterRTX(nacks []uint16) (filtered []uint16, disallowedLayers [buffer.DefaultMaxLayerSpatial + 1]bool) {