From a11944f84d681adaef32ed3c7ae45527c538f330 Mon Sep 17 00:00:00 2001 From: Raja Subramanian Date: Wed, 19 Apr 2023 16:21:16 +0530 Subject: [PATCH] Restore VP8 munger state properly. (#1634) * Restore VP8 munger state properly. * clean up --- pkg/sfu/codecmunger/null.go | 8 +++++++- pkg/sfu/codecmunger/vp8.go | 6 ++++++ pkg/sfu/forwarder.go | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/pkg/sfu/codecmunger/null.go b/pkg/sfu/codecmunger/null.go index e6b3f00cb..f9c327a2d 100644 --- a/pkg/sfu/codecmunger/null.go +++ b/pkg/sfu/codecmunger/null.go @@ -6,6 +6,7 @@ import ( ) type Null struct { + seededState interface{} } func NewNull(_logger logger.Logger) *Null { @@ -16,7 +17,12 @@ func (n *Null) GetState() interface{} { return nil } -func (n *Null) SeedState(_state interface{}) { +func (n *Null) SeedState(state interface{}) { + n.seededState = state +} + +func (n *Null) GetSeededState() interface{} { + return n.seededState } func (n *Null) SetLast(_extPkt *buffer.ExtPacket) { diff --git a/pkg/sfu/codecmunger/vp8.go b/pkg/sfu/codecmunger/vp8.go index 271dac71e..dbe8f0665 100644 --- a/pkg/sfu/codecmunger/vp8.go +++ b/pkg/sfu/codecmunger/vp8.go @@ -64,6 +64,12 @@ func NewVP8(logger logger.Logger) *VP8 { } } +func NewVP8FromNull(cm CodecMunger, logger logger.Logger) *VP8 { + v := NewVP8(logger) + v.SeedState(cm.(*Null).GetSeededState()) + return v +} + func (v *VP8) GetState() interface{} { return VP8State{ ExtLastPictureId: v.extLastPictureId, diff --git a/pkg/sfu/forwarder.go b/pkg/sfu/forwarder.go index ab4e83dfb..069132850 100644 --- a/pkg/sfu/forwarder.go +++ b/pkg/sfu/forwarder.go @@ -256,7 +256,7 @@ func (f *Forwarder) DetermineCodec(codec webrtc.RTPCodecCapability, extensions [ switch strings.ToLower(codec.MimeType) { case "video/vp8": - f.codecMunger = codecmunger.NewVP8(f.logger) + f.codecMunger = codecmunger.NewVP8FromNull(f.codecMunger, f.logger) if f.vls != nil { f.vls = videolayerselector.NewSimulcastFromNull(f.vls) } else {