diff --git a/pkg/sfu/redprimaryreceiver.go b/pkg/sfu/redprimaryreceiver.go index c6ded2a0e..db47a7e94 100644 --- a/pkg/sfu/redprimaryreceiver.go +++ b/pkg/sfu/redprimaryreceiver.go @@ -121,6 +121,12 @@ func (r *RedPrimaryReceiver) DeleteDownTrack(subscriberID livekit.ParticipantID) r.logger.Debugw("red primary receiver downtrack deleted", "subscriberID", subscriberID) } +func (r *RedPrimaryReceiver) ResyncDownTracks() { + r.downTrackSpreader.Broadcast(func(dt TrackSender) { + dt.Resync() + }) +} + func (r *RedPrimaryReceiver) IsClosed() bool { return r.closed.Load() } diff --git a/pkg/sfu/redreceiver.go b/pkg/sfu/redreceiver.go index 81121fb2e..e4afaa5ca 100644 --- a/pkg/sfu/redreceiver.go +++ b/pkg/sfu/redreceiver.go @@ -112,6 +112,12 @@ func (r *RedReceiver) DeleteDownTrack(subscriberID livekit.ParticipantID) { r.logger.Debugw("red receiver downtrack deleted", "subscriberID", subscriberID) } +func (r *RedReceiver) ResyncDownTracks() { + r.downTrackSpreader.Broadcast(func(dt TrackSender) { + dt.Resync() + }) +} + func (r *RedReceiver) CanClose() bool { return r.closed.Load() || r.downTrackSpreader.DownTrackCount() == 0 }