diff --git a/pkg/sfu/downtrack.go b/pkg/sfu/downtrack.go index 33fa429a6..587e1b770 100644 --- a/pkg/sfu/downtrack.go +++ b/pkg/sfu/downtrack.go @@ -1593,9 +1593,9 @@ func (d *DownTrack) GetNackStats() (totalPackets uint32, totalRepeatedNACKs uint func (d *DownTrack) onBindAndConnected() { if d.connected.Load() && d.bound.Load() && !d.bindAndConnectedOnce.Swap(true) { if d.kind == webrtc.RTPCodecTypeVideo { - targetLayers := d.forwarder.TargetLayers() - if targetLayers != InvalidLayers { - d.receiver.SendPLI(targetLayers.Spatial, true) + _, layer := d.forwarder.CheckSync() + if layer != InvalidLayerSpatial { + d.receiver.SendPLI(layer, true) } } diff --git a/pkg/sfu/forwarder.go b/pkg/sfu/forwarder.go index c155a20b4..99bcb2848 100644 --- a/pkg/sfu/forwarder.go +++ b/pkg/sfu/forwarder.go @@ -1515,10 +1515,10 @@ func (f *Forwarder) getTranslationParamsVideo(extPkt *buffer.ExtPacket, layer in "feed", extPkt.Packet.SSRC, ) f.currentLayers.Spatial = layer - f.targetLayers.Spatial = layer if f.currentLayers.Spatial >= f.maxLayers.Spatial || f.currentLayers.Spatial == f.maxPublishedLayer { tp.isSwitchingToMaxLayer = true + f.targetLayers.Spatial = layer } } } diff --git a/pkg/sfu/streamallocator.go b/pkg/sfu/streamallocator.go index 3885158ec..54906c964 100644 --- a/pkg/sfu/streamallocator.go +++ b/pkg/sfu/streamallocator.go @@ -1340,6 +1340,7 @@ func newTrack( isSimulcast: isSimulcast, publisherID: publisherID, logger: logger, + isPaused: true, } t.SetPriority(0) t.SetMaxLayers(downTrack.MaxLayers())