diff --git a/pkg/sfu/buffer/buffer_base.go b/pkg/sfu/buffer/buffer_base.go index f43084430..640070487 100644 --- a/pkg/sfu/buffer/buffer_base.go +++ b/pkg/sfu/buffer/buffer_base.go @@ -487,11 +487,11 @@ func (b *BufferBase) RestartStream(reason string) { b.Lock() defer b.Unlock() - b.restartStreamLocked(reason) + b.restartStreamLocked(reason, false) b.readCond.Broadcast() } -func (b *BufferBase) restartStreamLocked(reason string) { +func (b *BufferBase) restartStreamLocked(reason string, isDetected bool) { b.logger.Infow("stream restart", "reason", reason) // stop @@ -530,7 +530,7 @@ func (b *BufferBase) restartStreamLocked(reason string) { b.isRestartPending = true - if f := b.onStreamRestart; f != nil { + if f := b.onStreamRestart; f != nil && isDetected { go f(reason) } } @@ -754,7 +754,7 @@ func (b *BufferBase) HandleIncomingPacketLocked( return 0, fmt.Errorf("unhandled reason: %s", flowState.UnhandledReason.String()) } - b.restartStreamLocked("discontinuity") + b.restartStreamLocked("discontinuity", true) flowState = b.rtpStats.Update( arrivalTime, @@ -964,7 +964,7 @@ func (b *BufferBase) handleCodecChange(newPT uint8) { b.rtxPayloadType = rtxPt b.mime = mime.NormalizeMimeType(newCodec.MimeType) - b.restartStreamLocked("codec-change") + b.restartStreamLocked("codec-change", true) if f := b.onCodecChange; f != nil { go f(newCodec) diff --git a/pkg/sfu/receiver_base.go b/pkg/sfu/receiver_base.go index 9ff78efe4..12c16a230 100644 --- a/pkg/sfu/receiver_base.go +++ b/pkg/sfu/receiver_base.go @@ -904,6 +904,7 @@ func (r *ReceiverBase) forwardRTP( "numPacketsDropped", numPacketsDropped, "forwarderGeneration", forwarderGeneration, "forwardersGeneration", r.forwardersGeneration.Load(), + "errror", err, ) wg.Done() }() @@ -915,7 +916,7 @@ func (r *ReceiverBase) forwardRTP( } pktBuf := make([]byte, bucket.RTPMaxPktSize) - r.params.Logger.Debugw("starting forwarding", "layer", layer) + r.params.Logger.Debugw("starting forwarding", "layer", layer, "forwarderGeneration", forwarderGeneration) for r.forwardersGeneration.Load() == forwarderGeneration { extPkt, err = buff.ReadExtended(pktBuf)