diff --git a/pkg/sfu/forwarder.go b/pkg/sfu/forwarder.go index 75e00baa9..92fae3ea7 100644 --- a/pkg/sfu/forwarder.go +++ b/pkg/sfu/forwarder.go @@ -1599,8 +1599,10 @@ func (f *Forwarder) getTranslationParamsVideo(extPkt *buffer.ExtPacket, layer in if !result.IsSelected { tp.shouldDrop = true if f.started && result.IsRelevant { - f.rtpMunger.UpdateAndGetSnTs(extPkt) // call to update highest incoming sequence number and other internal structures - f.rtpMunger.PacketDropped(extPkt) + // call to update highest incoming sequence number and other internal structures + if _, err := f.rtpMunger.UpdateAndGetSnTs(extPkt); err == nil { + f.rtpMunger.PacketDropped(extPkt) + } } return tp, nil } diff --git a/pkg/sfu/videolayerselector/dependencydescriptor.go b/pkg/sfu/videolayerselector/dependencydescriptor.go index 101c73e1a..3cc5fcf70 100644 --- a/pkg/sfu/videolayerselector/dependencydescriptor.go +++ b/pkg/sfu/videolayerselector/dependencydescriptor.go @@ -46,6 +46,9 @@ func (d *DependencyDescriptor) IsOvershootOkay() bool { } func (d *DependencyDescriptor) Select(extPkt *buffer.ExtPacket, _layer int32) (result VideoLayerSelectorResult) { + // a packet is always relevant for the svc codec + result.IsRelevant = true + ddwdt := extPkt.DependencyDescriptor if ddwdt == nil { // packet doesn't have dependency descriptor @@ -54,9 +57,6 @@ func (d *DependencyDescriptor) Select(extPkt *buffer.ExtPacket, _layer int32) (r dd := ddwdt.Descriptor - // a packet is relevant as long as it has DD extension - result.IsRelevant = true - frameNum := d.frameNum.Update(dd.FrameNumber) extFrameNum := frameNum.ExtendedVal diff --git a/pkg/sfu/videolayerselector/dependencydescriptor_test.go b/pkg/sfu/videolayerselector/dependencydescriptor_test.go index 21e416691..0a4ead314 100644 --- a/pkg/sfu/videolayerselector/dependencydescriptor_test.go +++ b/pkg/sfu/videolayerselector/dependencydescriptor_test.go @@ -4,11 +4,12 @@ import ( "sort" "testing" + "github.com/pion/rtp" + "github.com/stretchr/testify/require" + "github.com/livekit/livekit-server/pkg/sfu/buffer" dd "github.com/livekit/livekit-server/pkg/sfu/dependencydescriptor" "github.com/livekit/protocol/logger" - "github.com/pion/rtp" - "github.com/stretchr/testify/require" ) func TestDecodeTarget(t *testing.T) { @@ -124,7 +125,7 @@ func TestDependencyDescriptor(t *testing.T) { // no dd ext, dropped ret := ddSelector.Select(&buffer.ExtPacket{}, 0) require.False(t, ret.IsSelected) - require.False(t, ret.IsRelevant) + require.True(t, ret.IsRelevant) // non key frame, dropped ret = ddSelector.Select(&buffer.ExtPacket{