Fix nack issue for svc codecs (#1856)

* Fix nack issue for svc codecs

* Fix test
This commit is contained in:
cnderrauber
2023-07-07 15:46:18 +08:00
committed by GitHub
parent 919355c873
commit 873c87f24b
3 changed files with 11 additions and 8 deletions
+4 -2
View File
@@ -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
}
@@ -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
@@ -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{