diff --git a/pkg/rtc/mediatrack.go b/pkg/rtc/mediatrack.go index 08becb859be..f192d18c7b5 100644 --- a/pkg/rtc/mediatrack.go +++ b/pkg/rtc/mediatrack.go @@ -232,30 +232,36 @@ func (t *MediaTrack) ClearSubscriberNodes() { } func (t *MediaTrack) HasSignalCid(cid string) bool { - ti := t.MediaTrackReceiver.TrackInfoClone() - for _, c := range ti.Codecs { - if c.Cid == cid { - return true + if cid != "" { + ti := t.MediaTrackReceiver.TrackInfoClone() + for _, c := range ti.Codecs { + if c.Cid == cid { + return true + } } } return false } func (t *MediaTrack) HasSdpCid(cid string) bool { - ti := t.MediaTrackReceiver.TrackInfoClone() - for _, c := range ti.Codecs { - if c.Cid == cid || c.SdpCid == cid { - return true + if cid != "" { + ti := t.MediaTrackReceiver.TrackInfoClone() + for _, c := range ti.Codecs { + if c.Cid == cid || c.SdpCid == cid { + return true + } } } return false } func (t *MediaTrack) GetMimeTypeForSdpCid(cid string) mime.MimeType { - ti := t.MediaTrackReceiver.TrackInfoClone() - for _, c := range ti.Codecs { - if c.Cid == cid || c.SdpCid == cid { - return mime.NormalizeMimeType(c.MimeType) + if cid != "" { + ti := t.MediaTrackReceiver.TrackInfoClone() + for _, c := range ti.Codecs { + if c.Cid == cid || c.SdpCid == cid { + return mime.NormalizeMimeType(c.MimeType) + } } } return mime.MimeTypeUnknown diff --git a/pkg/sfu/buffer/buffer.go b/pkg/sfu/buffer/buffer.go index 4805fde5f8a..72c32a6bc2e 100644 --- a/pkg/sfu/buffer/buffer.go +++ b/pkg/sfu/buffer/buffer.go @@ -1343,6 +1343,14 @@ func (b *Buffer) seedKeyFrame(keyFrameSeederGeneration int32) { ticker := time.NewTicker(time.Second) defer ticker.Stop() + initialCount := uint32(0) + b.RLock() + rtpStats := b.rtpStats + b.RUnlock() + if rtpStats != nil { + initialCount, _ = rtpStats.KeyFrame() + } + for { if b.closed.Load() || b.keyFrameSeederGeneration.Load() != keyFrameSeederGeneration { return @@ -1354,15 +1362,12 @@ func (b *Buffer) seedKeyFrame(keyFrameSeederGeneration int32) { return case <-ticker.C: - b.RLock() - rtpStats := b.rtpStats - b.RUnlock() - if rtpStats != nil { cnt, last := rtpStats.KeyFrame() - if cnt > 0 { + if cnt > initialCount { b.logger.Debugw( "stopping key frame seeder: received key frame", + "keyFrameCountInitial", initialCount, "keyFrameCount", cnt, "lastKeyFrame", last, )