mirror of
https://github.com/livekit/livekit.git
synced 2026-04-04 19:05:58 +00:00
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:
@@ -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,
|
||||
|
||||
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user