mirror of
https://github.com/livekit/livekit.git
synced 2026-08-29 09:49:24 +00:00
Fix nack issue for svc codecs (#1856)
* Fix nack issue for svc codecs * Fix test
This commit is contained in:
@@ -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{
|
||||
|
||||
Reference in New Issue
Block a user