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

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

Issue 2772033002: Add content type information to encoded images and corresponding rtp extension header (Closed)
Patch Set: Fix Mac CE Created 3 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
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 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 kBadFraction, 67 kBadFraction,
68 kNumMeasurementsVariance), 68 kNumMeasurementsVariance),
69 num_bad_states_(0), 69 num_bad_states_(0),
70 num_certain_states_(0), 70 num_certain_states_(0),
71 // 1000ms window, scale 1000 for ms to s. 71 // 1000ms window, scale 1000 for ms to s.
72 decode_fps_estimator_(1000, 1000), 72 decode_fps_estimator_(1000, 1000),
73 renders_fps_estimator_(1000, 1000), 73 renders_fps_estimator_(1000, 1000),
74 render_fps_tracker_(100, 10u), 74 render_fps_tracker_(100, 10u),
75 render_pixel_tracker_(100, 10u), 75 render_pixel_tracker_(100, 10u),
76 total_byte_tracker_(100, 10u), // bucket_interval_ms, bucket_count 76 total_byte_tracker_(100, 10u), // bucket_interval_ms, bucket_count
77 e2e_delay_max_ms_video_(-1),
78 e2e_delay_max_ms_screenshare_(-1),
77 freq_offset_counter_(clock, nullptr, kFreqOffsetProcessIntervalMs), 79 freq_offset_counter_(clock, nullptr, kFreqOffsetProcessIntervalMs),
78 first_report_block_time_ms_(-1), 80 first_report_block_time_ms_(-1),
79 avg_rtt_ms_(0) { 81 avg_rtt_ms_(0) {
80 stats_.ssrc = config_.rtp.remote_ssrc; 82 stats_.ssrc = config_.rtp.remote_ssrc;
81 // TODO(brandtr): Replace |rtx_stats_| with a single instance of 83 // TODO(brandtr): Replace |rtx_stats_| with a single instance of
82 // StreamDataCounters. 84 // StreamDataCounters.
83 if (config_.rtp.rtx_ssrc) { 85 if (config_.rtp.rtx_ssrc) {
84 rtx_stats_[config_.rtp.rtx_ssrc] = StreamDataCounters(); 86 rtx_stats_[config_.rtp.rtx_ssrc] = StreamDataCounters();
85 } 87 }
86 } 88 }
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 } 164 }
163 int current_delay_ms = current_delay_counter_.Avg(kMinRequiredSamples); 165 int current_delay_ms = current_delay_counter_.Avg(kMinRequiredSamples);
164 if (current_delay_ms != -1) { 166 if (current_delay_ms != -1) {
165 RTC_HISTOGRAM_COUNTS_10000("WebRTC.Video.CurrentDelayInMs", 167 RTC_HISTOGRAM_COUNTS_10000("WebRTC.Video.CurrentDelayInMs",
166 current_delay_ms); 168 current_delay_ms);
167 } 169 }
168 int delay_ms = delay_counter_.Avg(kMinRequiredSamples); 170 int delay_ms = delay_counter_.Avg(kMinRequiredSamples);
169 if (delay_ms != -1) 171 if (delay_ms != -1)
170 RTC_HISTOGRAM_COUNTS_10000("WebRTC.Video.OnewayDelayInMs", delay_ms); 172 RTC_HISTOGRAM_COUNTS_10000("WebRTC.Video.OnewayDelayInMs", delay_ms);
171 173
172 int e2e_delay_ms = e2e_delay_counter_.Avg(kMinRequiredSamples); 174 int e2e_delay_ms_video = e2e_delay_counter_video_.Avg(kMinRequiredSamples);
173 if (e2e_delay_ms != -1) 175 if (e2e_delay_ms_video != -1) {
174 RTC_HISTOGRAM_COUNTS_10000("WebRTC.Video.EndToEndDelayInMs", e2e_delay_ms); 176 RTC_HISTOGRAM_COUNTS_10000("WebRTC.Video.EndToEndDelayInMs",
177 e2e_delay_ms_video);
178 }
179
180 int e2e_delay_ms_screenshare =
181 e2e_delay_counter_screenshare_.Avg(kMinRequiredSamples);
182 if (e2e_delay_ms_screenshare != -1) {
183 RTC_HISTOGRAM_COUNTS_10000("WebRTC.Video.Screenshare.EndToEndDelayInMs",
184 e2e_delay_ms_screenshare);
185 }
186
187 int e2e_delay_max_ms_video = e2e_delay_max_ms_video_;
188 if (e2e_delay_max_ms_video != -1) {
189 RTC_HISTOGRAM_COUNTS_100000("WebRTC.Video.EndToEndDelayMaxInMs",
190 e2e_delay_max_ms_video);
191 }
192
193 int e2e_delay_max_ms_screenshare = e2e_delay_max_ms_screenshare_;
194 if (e2e_delay_max_ms_screenshare != -1) {
195 RTC_HISTOGRAM_COUNTS_100000("WebRTC.Video.Screenshare.EndToEndDelayMaxInMs",
196 e2e_delay_max_ms_screenshare);
197 }
175 198
176 StreamDataCounters rtp = stats_.rtp_stats; 199 StreamDataCounters rtp = stats_.rtp_stats;
177 StreamDataCounters rtx; 200 StreamDataCounters rtx;
178 for (auto it : rtx_stats_) 201 for (auto it : rtx_stats_)
179 rtx.Add(it.second); 202 rtx.Add(it.second);
180 StreamDataCounters rtp_rtx = rtp; 203 StreamDataCounters rtp_rtx = rtp;
181 rtp_rtx.Add(rtx); 204 rtp_rtx.Add(rtx);
182 int64_t elapsed_sec = 205 int64_t elapsed_sec =
183 rtp_rtx.TimeSinceFirstPacketInMs(clock_->TimeInMilliseconds()) / 1000; 206 rtp_rtx.TimeSinceFirstPacketInMs(clock_->TimeInMilliseconds()) / 1000;
184 if (elapsed_sec > metrics::kMinRunTimeInSeconds) { 207 if (elapsed_sec > metrics::kMinRunTimeInSeconds) {
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 ++stats_.frames_rendered; 491 ++stats_.frames_rendered;
469 stats_.width = width; 492 stats_.width = width;
470 stats_.height = height; 493 stats_.height = height;
471 render_width_counter_.Add(width); 494 render_width_counter_.Add(width);
472 render_height_counter_.Add(height); 495 render_height_counter_.Add(height);
473 render_fps_tracker_.AddSamples(1); 496 render_fps_tracker_.AddSamples(1);
474 render_pixel_tracker_.AddSamples(sqrt(width * height)); 497 render_pixel_tracker_.AddSamples(sqrt(width * height));
475 498
476 if (frame.ntp_time_ms() > 0) { 499 if (frame.ntp_time_ms() > 0) {
477 int64_t delay_ms = clock_->CurrentNtpInMilliseconds() - frame.ntp_time_ms(); 500 int64_t delay_ms = clock_->CurrentNtpInMilliseconds() - frame.ntp_time_ms();
478 if (delay_ms >= 0) 501 if (delay_ms >= 0) {
479 e2e_delay_counter_.Add(delay_ms); 502 if (frame.content_type() == VideoContentType::kScreenshare) {
503 e2e_delay_max_ms_screenshare_ =
504 std::max(delay_ms, e2e_delay_max_ms_screenshare_);
505 e2e_delay_counter_screenshare_.Add(delay_ms);
506 } else {
507 e2e_delay_max_ms_video_ = std::max(delay_ms, e2e_delay_max_ms_video_);
508 e2e_delay_counter_video_.Add(delay_ms);
509 }
510 }
480 } 511 }
481 } 512 }
482 513
483 void ReceiveStatisticsProxy::OnSyncOffsetUpdated(int64_t sync_offset_ms, 514 void ReceiveStatisticsProxy::OnSyncOffsetUpdated(int64_t sync_offset_ms,
484 double estimated_freq_khz) { 515 double estimated_freq_khz) {
485 rtc::CritScope lock(&crit_); 516 rtc::CritScope lock(&crit_);
486 sync_offset_counter_.Add(std::abs(sync_offset_ms)); 517 sync_offset_counter_.Add(std::abs(sync_offset_ms));
487 stats_.sync_offset_ms = sync_offset_ms; 518 stats_.sync_offset_ms = sync_offset_ms;
488 519
489 const double kMaxFreqKhz = 10000.0; 520 const double kMaxFreqKhz = 10000.0;
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
553 sum = 0; 584 sum = 0;
554 } 585 }
555 586
556 void ReceiveStatisticsProxy::OnRttUpdate(int64_t avg_rtt_ms, 587 void ReceiveStatisticsProxy::OnRttUpdate(int64_t avg_rtt_ms,
557 int64_t max_rtt_ms) { 588 int64_t max_rtt_ms) {
558 rtc::CritScope lock(&crit_); 589 rtc::CritScope lock(&crit_);
559 avg_rtt_ms_ = avg_rtt_ms; 590 avg_rtt_ms_ = avg_rtt_ms;
560 } 591 }
561 592
562 } // namespace webrtc 593 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698