diff --git a/pkg/sfu/buffer/buffer.go b/pkg/sfu/buffer/buffer.go index 82fe85a80..16289bc01 100644 --- a/pkg/sfu/buffer/buffer.go +++ b/pkg/sfu/buffer/buffer.go @@ -677,6 +677,9 @@ func (b *Buffer) GetStats() *StreamStatsWithLayers { } stats := b.rtpStats.ToProto() + if stats == nil { + return nil + } layers := make(map[int]LayerStats) layers[0] = LayerStats{ diff --git a/pkg/sfu/downtrack.go b/pkg/sfu/downtrack.go index cb5d9bd5c..5da64d2e3 100644 --- a/pkg/sfu/downtrack.go +++ b/pkg/sfu/downtrack.go @@ -1201,6 +1201,9 @@ func (d *DownTrack) GetTrackStats() map[uint32]*buffer.StreamStatsWithLayers { streamStats := make(map[uint32]*buffer.StreamStatsWithLayers, 1) stats := d.rtpStats.ToProto() + if stats == nil { + return nil + } layers := make(map[int]buffer.LayerStats) layers[0] = buffer.LayerStats{ diff --git a/pkg/sfu/receiver.go b/pkg/sfu/receiver.go index 24081a39d..403edebb4 100644 --- a/pkg/sfu/receiver.go +++ b/pkg/sfu/receiver.go @@ -420,6 +420,9 @@ func (w *WebRTCReceiver) GetTrackStats() map[uint32]*buffer.StreamStatsWithLayer } sswl := buff.GetStats() + if sswl == nil { + continue + } // if simulcast, patch buffer stats with correct layer if w.isSimulcast {