Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(303)

Side by Side Diff: webrtc/video/receive_statistics_proxy.cc

Issue 1885393002: Add histogram stats for jitter buffer delay and target delay for received video streams: (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: add stats for current delay Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/video/receive_statistics_proxy.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 if (qp != -1) 70 if (qp != -1)
71 RTC_LOGGED_HISTOGRAM_COUNTS_200("WebRTC.Video.Decoded.Vp8.Qp", qp); 71 RTC_LOGGED_HISTOGRAM_COUNTS_200("WebRTC.Video.Decoded.Vp8.Qp", qp);
72 72
73 // TODO(asapersson): DecoderTiming() is call periodically (each 1000ms) and 73 // TODO(asapersson): DecoderTiming() is call periodically (each 1000ms) and
74 // not per frame. Change decode time to include every frame. 74 // not per frame. Change decode time to include every frame.
75 const int kMinRequiredDecodeSamples = 5; 75 const int kMinRequiredDecodeSamples = 5;
76 int decode_ms = decode_time_counter_.Avg(kMinRequiredDecodeSamples); 76 int decode_ms = decode_time_counter_.Avg(kMinRequiredDecodeSamples);
77 if (decode_ms != -1) 77 if (decode_ms != -1)
78 RTC_LOGGED_HISTOGRAM_COUNTS_1000("WebRTC.Video.DecodeTimeInMs", decode_ms); 78 RTC_LOGGED_HISTOGRAM_COUNTS_1000("WebRTC.Video.DecodeTimeInMs", decode_ms);
79 79
80 int jb_delay_ms = jitter_buffer_delay_counter_.Avg(kMinRequiredDecodeSamples);
81 if (jb_delay_ms != -1) {
82 RTC_LOGGED_HISTOGRAM_COUNTS_10000("WebRTC.Video.JitterBufferDelayInMs",
83 jb_delay_ms);
84 }
85 int target_delay_ms = target_delay_counter_.Avg(kMinRequiredDecodeSamples);
86 if (target_delay_ms != -1) {
87 RTC_LOGGED_HISTOGRAM_COUNTS_10000("WebRTC.Video.TargetDelayInMs",
88 target_delay_ms);
89 }
90 int current_delay_ms = current_delay_counter_.Avg(kMinRequiredDecodeSamples);
91 if (current_delay_ms != -1) {
92 RTC_LOGGED_HISTOGRAM_COUNTS_10000("WebRTC.Video.CurrentDelayInMs",
93 current_delay_ms);
94 }
95
80 int delay_ms = delay_counter_.Avg(kMinRequiredDecodeSamples); 96 int delay_ms = delay_counter_.Avg(kMinRequiredDecodeSamples);
81 if (delay_ms != -1) 97 if (delay_ms != -1)
82 RTC_LOGGED_HISTOGRAM_COUNTS_10000("WebRTC.Video.OnewayDelayInMs", delay_ms); 98 RTC_LOGGED_HISTOGRAM_COUNTS_10000("WebRTC.Video.OnewayDelayInMs", delay_ms);
83 99
84 StreamDataCounters rtp = stats_.rtp_stats; 100 StreamDataCounters rtp = stats_.rtp_stats;
85 StreamDataCounters rtx; 101 StreamDataCounters rtx;
86 for (auto it : rtx_stats_) 102 for (auto it : rtx_stats_)
87 rtx.Add(it.second); 103 rtx.Add(it.second);
88 StreamDataCounters rtp_rtx = rtp; 104 StreamDataCounters rtp_rtx = rtp;
89 rtp_rtx.Add(rtx); 105 rtp_rtx.Add(rtx);
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 int64_t rtt_ms) { 179 int64_t rtt_ms) {
164 rtc::CritScope lock(&crit_); 180 rtc::CritScope lock(&crit_);
165 stats_.decode_ms = decode_ms; 181 stats_.decode_ms = decode_ms;
166 stats_.max_decode_ms = max_decode_ms; 182 stats_.max_decode_ms = max_decode_ms;
167 stats_.current_delay_ms = current_delay_ms; 183 stats_.current_delay_ms = current_delay_ms;
168 stats_.target_delay_ms = target_delay_ms; 184 stats_.target_delay_ms = target_delay_ms;
169 stats_.jitter_buffer_ms = jitter_buffer_ms; 185 stats_.jitter_buffer_ms = jitter_buffer_ms;
170 stats_.min_playout_delay_ms = min_playout_delay_ms; 186 stats_.min_playout_delay_ms = min_playout_delay_ms;
171 stats_.render_delay_ms = render_delay_ms; 187 stats_.render_delay_ms = render_delay_ms;
172 decode_time_counter_.Add(decode_ms); 188 decode_time_counter_.Add(decode_ms);
189 jitter_buffer_delay_counter_.Add(jitter_buffer_ms);
190 target_delay_counter_.Add(target_delay_ms);
191 current_delay_counter_.Add(current_delay_ms);
173 // Network delay (rtt/2) + target_delay_ms (jitter delay + decode time + 192 // Network delay (rtt/2) + target_delay_ms (jitter delay + decode time +
174 // render delay). 193 // render delay).
175 delay_counter_.Add(target_delay_ms + rtt_ms / 2); 194 delay_counter_.Add(target_delay_ms + rtt_ms / 2);
176 } 195 }
177 196
178 void ReceiveStatisticsProxy::RtcpPacketTypesCounterUpdated( 197 void ReceiveStatisticsProxy::RtcpPacketTypesCounterUpdated(
179 uint32_t ssrc, 198 uint32_t ssrc,
180 const RtcpPacketTypeCounter& packet_counter) { 199 const RtcpPacketTypeCounter& packet_counter) {
181 rtc::CritScope lock(&crit_); 200 rtc::CritScope lock(&crit_);
182 if (stats_.ssrc != ssrc) 201 if (stats_.ssrc != ssrc)
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 ++num_samples; 299 ++num_samples;
281 } 300 }
282 301
283 int ReceiveStatisticsProxy::SampleCounter::Avg(int min_required_samples) const { 302 int ReceiveStatisticsProxy::SampleCounter::Avg(int min_required_samples) const {
284 if (num_samples < min_required_samples || num_samples == 0) 303 if (num_samples < min_required_samples || num_samples == 0)
285 return -1; 304 return -1;
286 return sum / num_samples; 305 return sum / num_samples;
287 } 306 }
288 307
289 } // namespace webrtc 308 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/video/receive_statistics_proxy.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698