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 {