diff --git a/pkg/sfu/buffer/fps.go b/pkg/sfu/buffer/fps.go index 023e40c63..070d9ae7e 100644 --- a/pkg/sfu/buffer/fps.go +++ b/pkg/sfu/buffer/fps.go @@ -215,6 +215,10 @@ func (f *FrameRateCalculatorVP8) RecvPacket(ep *ExtPacket) bool { f.logger.Debugw("no vp8 payload", "sn", ep.Packet.SequenceNumber) return false } + if !vp8.I { + f.logger.Debugw("no vp8 pictureID", "sn", ep.Packet.SequenceNumber) + return false + } success := f.frameRateCalculatorVPx.RecvPacket(ep, vp8.PictureID) if f.frameRateCalculatorVPx.Completed() { @@ -262,7 +266,10 @@ func (f *FrameRateCalculatorVP9) RecvPacket(ep *ExtPacket) bool { f.logger.Debugw("no vp9 payload", "sn", ep.Packet.SequenceNumber) return false } - + if !vp9.I { + f.logger.Debugw("no vp9 pictureID", "sn", ep.Packet.SequenceNumber) + return false + } if ep.Spatial < 0 || ep.Spatial >= int32(len(f.frameRateCalculatorsVPx)) || f.frameRateCalculatorsVPx[ep.Spatial] == nil { f.logger.Debugw("invalid spatial layer", "sn", ep.Packet.SequenceNumber, "spatial", ep.Spatial) return false diff --git a/pkg/sfu/buffer/fps_test.go b/pkg/sfu/buffer/fps_test.go index 9c32cc5a0..8bdacb13f 100644 --- a/pkg/sfu/buffer/fps_test.go +++ b/pkg/sfu/buffer/fps_test.go @@ -37,6 +37,7 @@ func (f *testFrameInfo) toVP8() *ExtPacket { return &ExtPacket{ Packet: &rtp.Packet{Header: f.header}, Payload: codec.VP8{ + I: true, PictureID: f.framenumber, }, VideoLayer: VideoLayer{Spatial: InvalidLayerSpatial, Temporal: int32(f.temporal)},