LK logger with context in SFU (#391)

* LK logger with context in SFU

* Move buff.SetLogger into sfu.WebRTCReceiver
This commit is contained in:
Raja Subramanian authored and GitHub committed 2022-02-01 08:57:09 +05:30
1 parent 3d132730f9
commit 9db2bd22df
12 files changed
+46 -50

No files matched your search

+12 -11
View File
@@ -9,7 +9,7 @@ import (
"time"
"github.com/gammazero/deque"
"github.com/go-logr/logr"
"github.com/livekit/protocol/logger"
"github.com/pion/rtcp"
"github.com/pion/rtp"
"github.com/pion/sdp/v3"
@@ -20,9 +20,6 @@ const (
ReportDelta = 1e9
)
// Logger is an implementation of logr.Logger. If is not provided - will be turned off.
var Logger = logr.Discard()
type pendingPackets struct {
arrivalTime int64
packet []byte
@@ -92,7 +89,7 @@ type Buffer struct {
feedbackTWCC func(sn uint16, timeNS int64, marker bool)
// logger
logger logr.Logger
logger logger.Logger
}
type Stats struct {
@@ -110,18 +107,22 @@ type Options struct {
}
// NewBuffer constructs a new Buffer
func NewBuffer(ssrc uint32, vp, ap *sync.Pool, logger logr.Logger) *Buffer {
func NewBuffer(ssrc uint32, vp, ap *sync.Pool) *Buffer {
b := &Buffer{
mediaSSRC: ssrc,
videoPool: vp,
audioPool: ap,
logger: logger,
logger: logger.Logger(logger.GetLogger()), // will be reset with correct context via SetLogger
}
b.bitrate.Store(make([]int64, len(b.bitrateHelper)))
b.extPackets.SetMinCapacity(7)
return b
}
func (b *Buffer) SetLogger(logger logger.Logger) {
b.logger = logger
}
func (b *Buffer) Bind(params webrtc.RTPParameters, codec webrtc.RTPCodecCapability, o Options) {
b.Lock()
defer b.Unlock()
@@ -152,13 +153,13 @@ func (b *Buffer) Bind(params webrtc.RTPParameters, codec webrtc.RTPCodecCapabili
for _, fb := range codec.RTCPFeedback {
switch fb.Type {
case webrtc.TypeRTCPFBGoogREMB:
b.logger.V(1).Info("Setting feedback", "type", "webrtc.TypeRTCPFBGoogREMB")
b.logger.Infow("Setting feedback", "type", webrtc.TypeRTCPFBGoogREMB)
b.remb = true
case webrtc.TypeRTCPFBTransportCC:
b.logger.V(1).Info("Setting feedback", "type", webrtc.TypeRTCPFBTransportCC)
b.logger.Infow("Setting feedback", "type", webrtc.TypeRTCPFBTransportCC)
b.twcc = true
case webrtc.TypeRTCPFBNACK:
b.logger.V(1).Info("Setting feedback", "type", webrtc.TypeRTCPFBNACK)
b.logger.Infow("Setting feedback", "type", webrtc.TypeRTCPFBNACK)
b.nacker = NewNACKQueue()
b.nack = true
}
@@ -178,7 +179,7 @@ func (b *Buffer) Bind(params webrtc.RTPParameters, codec webrtc.RTPCodecCapabili
b.pPackets = nil
b.bound = true
b.logger.V(1).Info("NewBuffer", "MaxBitRate", o.MaxBitRate)
b.logger.Infow("NewBuffer", "MaxBitRate", o.MaxBitRate)
}
// Write adds an RTP Packet, out of order, new packet may be arrived later
+4 -6
View File
@@ -37,10 +37,9 @@ func TestNack(t *testing.T) {
return &b
},
}
logger := Logger
t.Run("nack normal", func(t *testing.T) {
buff := NewBuffer(123, pool, pool, logger)
buff := NewBuffer(123, pool, pool)
buff.codecType = webrtc.RTPCodecTypeVideo
assert.NotNil(t, buff)
var wg sync.WaitGroup
@@ -82,7 +81,7 @@ func TestNack(t *testing.T) {
})
t.Run("nack with seq wrap", func(t *testing.T) {
buff := NewBuffer(123, pool, pool, logger)
buff := NewBuffer(123, pool, pool)
buff.codecType = webrtc.RTPCodecTypeVideo
assert.NotNil(t, buff)
var wg sync.WaitGroup
@@ -187,8 +186,7 @@ func TestNewBuffer(t *testing.T) {
return &b
},
}
logger := Logger
buff := NewBuffer(123, pool, pool, logger)
buff := NewBuffer(123, pool, pool)
buff.codecType = webrtc.RTPCodecTypeVideo
assert.NotNil(t, buff)
assert.NotNil(t, TestPackets)
@@ -217,7 +215,7 @@ func TestFractionLostReport(t *testing.T) {
return &b
},
}
buff := NewBuffer(123, pool, pool, Logger)
buff := NewBuffer(123, pool, pool)
buff.codecType = webrtc.RTPCodecTypeVideo
assert.NotNil(t, buff)
var wg sync.WaitGroup
+2 -14
View File
@@ -4,7 +4,6 @@ import (
"io"
"sync"
"github.com/go-logr/logr"
"github.com/pion/transport/packetio"
)
@@ -14,19 +13,9 @@ type Factory struct {
audioPool *sync.Pool
rtpBuffers map[uint32]*Buffer
rtcpReaders map[uint32]*RTCPReader
logger logr.Logger
}
func NewBufferFactory(trackingPackets int, logger logr.Logger) *Factory {
// Enable package wide logging for non-method functions.
// If logger is empty - use default Logger.
// Logger is a public variable in buffer package.
if logger == (logr.Logger{}) {
logger = Logger
} else {
Logger = logger
}
func NewBufferFactory(trackingPackets int) *Factory {
return &Factory{
videoPool: &sync.Pool{
New: func() interface{} {
@@ -42,7 +31,6 @@ func NewBufferFactory(trackingPackets int, logger logr.Logger) *Factory {
},
rtpBuffers: make(map[uint32]*Buffer),
rtcpReaders: make(map[uint32]*RTCPReader),
logger: logger,
}
}
@@ -66,7 +54,7 @@ func (f *Factory) GetOrNew(packetType packetio.BufferPacketType, ssrc uint32) io
if reader, ok := f.rtpBuffers[ssrc]; ok {
return reader
}
buffer := NewBuffer(ssrc, f.videoPool, f.audioPool, f.logger)
buffer := NewBuffer(ssrc, f.videoPool, f.audioPool)
f.rtpBuffers[ssrc] = buffer
buffer.OnClose(func() {
f.Lock()
+3 -1
View File
@@ -4,6 +4,8 @@ import (
"encoding/binary"
"errors"
"sync/atomic"
"github.com/livekit/protocol/logger"
)
var (
@@ -267,7 +269,7 @@ func IsH264Keyframe(payload []byte) bool {
return true
} else if n >= 24 {
// is this legal?
Logger.V(0).Info("Non-simple NALU within a STAP")
logger.Infow("Non-simple NALU within a STAP")
}
i += int(length)
}