mirror of
https://github.com/livekit/livekit.git
synced 2026-03-30 13:25:42 +00:00
Broadcast cond var on RTX write. (#4038)
* Broadcast cond var on RTX write. High forwarding latency logs all show high queuing delay so far. From code inspection, RTX writes were not signaling the cond var. Not sure if that is the reason, but adding a signal there for further tests. * Remove return values from writeRTX as they are not used
This commit is contained in:
@@ -455,7 +455,7 @@ func (b *Buffer) SetPrimaryBufferForRTX(primaryBuffer *Buffer) {
|
||||
}
|
||||
}
|
||||
|
||||
func (b *Buffer) writeRTX(rtxPkt *rtp.Packet, arrivalTime int64) (n int, err error) {
|
||||
func (b *Buffer) writeRTX(rtxPkt *rtp.Packet, arrivalTime int64) {
|
||||
b.Lock()
|
||||
defer b.Unlock()
|
||||
if !b.bound {
|
||||
@@ -481,14 +481,14 @@ func (b *Buffer) writeRTX(rtxPkt *rtp.Packet, arrivalTime int64) (n int, err err
|
||||
repairedPkt.SequenceNumber = binary.BigEndian.Uint16(rtxPkt.Payload[:2])
|
||||
repairedPkt.SSRC = b.mediaSSRC
|
||||
repairedPkt.Payload = rtxPkt.Payload[2:]
|
||||
n, err = repairedPkt.MarshalTo(b.rtxPktBuf)
|
||||
n, err := repairedPkt.MarshalTo(b.rtxPktBuf)
|
||||
if err != nil {
|
||||
b.logger.Errorw("could not marshal repaired packet", err, "ssrc", b.mediaSSRC, "sn", repairedPkt.SequenceNumber)
|
||||
return
|
||||
}
|
||||
|
||||
b.calc(b.rtxPktBuf[:n], &repairedPkt, arrivalTime, true)
|
||||
return
|
||||
b.readCond.Broadcast()
|
||||
}
|
||||
|
||||
func (b *Buffer) Read(buff []byte) (n int, err error) {
|
||||
|
||||
@@ -834,6 +834,7 @@ func (w *WebRTCReceiver) forwardRTP(layer int32, buff *buffer.Buffer) {
|
||||
"latency", latency,
|
||||
"writeCount", writeCount,
|
||||
"queuingLatency", dequeuedAt-pkt.Arrival,
|
||||
"isOutOfOrder", pkt.IsOutOfOrder,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user