Take RTT and jitter from receiver view while reporting track stats for (#3483)

* Take RTT and jitter from receiver view while reporting track stats for
down stream tracks.

* adjust jitter in aggregate
This commit is contained in:
Raja Subramanian
2025-03-03 18:48:37 +05:30
committed by GitHub
parent 04ed56835e
commit 05dfd30d5b
2 changed files with 17 additions and 8 deletions

View File

@@ -429,6 +429,13 @@ func toAggregateDeltaInfo(streams map[uint32]*buffer.StreamStatsWithLayers, useR
for _, s := range streams {
if useRemoteView {
if s.RTPStatsRemoteView != nil {
// discount jitter from publisher side + internal processing while reporting downstream jitter
if s.RTPStats != nil {
s.RTPStatsRemoteView.JitterMax -= s.RTPStats.JitterMax
if s.RTPStatsRemoteView.JitterMax < 0.0 {
s.RTPStatsRemoteView.JitterMax = 0.0
}
}
deltaInfoList = append(deltaInfoList, s.RTPStatsRemoteView)
}
} else {
@@ -450,7 +457,10 @@ func toAnalyticsStream(
}
// discount the feed side loss when reporting forwarded track stats,
// discount jitter from publisher side + internal processing while reporting downstream jitter
packetsLost := deltaStats.PacketsLost
rtt := uint32(0)
maxJitter := float64(0.0)
if deltaStatsRemoteView != nil {
packetsLost = deltaStatsRemoteView.PacketsLost
if deltaStatsRemoteView.PacketsMissing > packetsLost {
@@ -458,7 +468,11 @@ func toAnalyticsStream(
} else {
packetsLost -= deltaStatsRemoteView.PacketsMissing
}
rtt = deltaStatsRemoteView.RttMax
maxJitter = deltaStatsRemoteView.JitterMax
}
return &livekit.AnalyticsStream{
StartTime: timestamppb.New(deltaStats.StartTime),
EndTime: timestamppb.New(deltaStats.EndTime),
@@ -472,8 +486,8 @@ func toAnalyticsStream(
PacketsLost: packetsLost,
PacketsOutOfOrder: deltaStats.PacketsOutOfOrder,
Frames: deltaStats.Frames,
Rtt: deltaStats.RttMax,
Jitter: uint32(deltaStats.JitterMax),
Rtt: rtt,
Jitter: uint32(maxJitter),
Nacks: deltaStats.Nacks,
Plis: deltaStats.Plis,
Firs: deltaStats.Firs,

View File

@@ -1048,12 +1048,7 @@ func (r *RTPStatsSender) DeltaInfoSender(senderSnapshotID uint32) (*RTPDeltaInfo
packetsLost = packetsExpected
}
// discount jitter from publisher side + internal processing
maxJitter := thenReceiverView.maxJitter - thenReceiverView.maxJitterFeed
if maxJitter < 0.0 {
maxJitter = 0.0
}
maxJitterTime := maxJitter / float64(r.params.ClockRate) * 1e6
maxJitterTime := thenReceiverView.maxJitter / float64(r.params.ClockRate) * 1e6
deltaStatsReceiverView = &RTPDeltaInfo{
StartTime: time.Unix(0, startTime),