From 28468035d2c644e6003ded54698fe9912d30a61d Mon Sep 17 00:00:00 2001 From: Raja Subramanian Date: Mon, 3 Aug 2026 15:22:59 +0530 Subject: [PATCH] Check for pictureID existence in VP8 and VP9 (#4721) * Check for pictureID existence in VP8 and VP9 * test --- pkg/sfu/buffer/fps.go | 9 ++++++++- pkg/sfu/buffer/fps_test.go | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) 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)},