| OLD | NEW |
| 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 |
| 11 #include "webrtc/video/send_statistics_proxy.h" | 11 #include "webrtc/video/send_statistics_proxy.h" |
| 12 | 12 |
| 13 #include <algorithm> | 13 #include <algorithm> |
| 14 #include <cmath> |
| 14 #include <map> | 15 #include <map> |
| 15 | 16 |
| 16 #include "webrtc/base/checks.h" | 17 #include "webrtc/base/checks.h" |
| 17 | 18 |
| 18 #include "webrtc/base/logging.h" | 19 #include "webrtc/base/logging.h" |
| 19 #include "webrtc/system_wrappers/include/critical_section_wrapper.h" | 20 #include "webrtc/system_wrappers/include/critical_section_wrapper.h" |
| 20 #include "webrtc/system_wrappers/include/metrics.h" | 21 #include "webrtc/system_wrappers/include/metrics.h" |
| 21 | 22 |
| 22 namespace webrtc { | 23 namespace webrtc { |
| 23 namespace { | 24 namespace { |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 63 max_sent_height_per_timestamp_(0) { | 64 max_sent_height_per_timestamp_(0) { |
| 64 UpdateCodecTypeHistogram(config_.encoder_settings.payload_name); | 65 UpdateCodecTypeHistogram(config_.encoder_settings.payload_name); |
| 65 } | 66 } |
| 66 | 67 |
| 67 SendStatisticsProxy::~SendStatisticsProxy() { | 68 SendStatisticsProxy::~SendStatisticsProxy() { |
| 68 UpdateHistograms(); | 69 UpdateHistograms(); |
| 69 } | 70 } |
| 70 | 71 |
| 71 void SendStatisticsProxy::UpdateHistograms() { | 72 void SendStatisticsProxy::UpdateHistograms() { |
| 72 int input_fps = | 73 int input_fps = |
| 73 static_cast<int>(input_frame_rate_tracker_.ComputeTotalRate()); | 74 round(input_frame_rate_tracker_.ComputeTotalRate()); |
| 74 if (input_fps > 0) | 75 if (input_fps > 0) |
| 75 RTC_HISTOGRAM_COUNTS_100("WebRTC.Video.InputFramesPerSecond", input_fps); | 76 RTC_HISTOGRAM_COUNTS_100("WebRTC.Video.InputFramesPerSecond", input_fps); |
| 76 int sent_fps = | 77 int sent_fps = |
| 77 static_cast<int>(sent_frame_rate_tracker_.ComputeTotalRate()); | 78 round(sent_frame_rate_tracker_.ComputeTotalRate()); |
| 78 if (sent_fps > 0) | 79 if (sent_fps > 0) |
| 79 RTC_HISTOGRAM_COUNTS_100("WebRTC.Video.SentFramesPerSecond", sent_fps); | 80 RTC_HISTOGRAM_COUNTS_100("WebRTC.Video.SentFramesPerSecond", sent_fps); |
| 80 | 81 |
| 81 const int kMinRequiredSamples = 200; | 82 const int kMinRequiredSamples = 200; |
| 82 int in_width = input_width_counter_.Avg(kMinRequiredSamples); | 83 int in_width = input_width_counter_.Avg(kMinRequiredSamples); |
| 83 int in_height = input_height_counter_.Avg(kMinRequiredSamples); | 84 int in_height = input_height_counter_.Avg(kMinRequiredSamples); |
| 84 if (in_width != -1) { | 85 if (in_width != -1) { |
| 85 RTC_HISTOGRAM_COUNTS_10000("WebRTC.Video.InputWidthInPixels", in_width); | 86 RTC_HISTOGRAM_COUNTS_10000("WebRTC.Video.InputWidthInPixels", in_width); |
| 86 RTC_HISTOGRAM_COUNTS_10000("WebRTC.Video.InputHeightInPixels", in_height); | 87 RTC_HISTOGRAM_COUNTS_10000("WebRTC.Video.InputHeightInPixels", in_height); |
| 87 } | 88 } |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 148 | 149 |
| 149 void SendStatisticsProxy::OnSuspendChange(bool is_suspended) { | 150 void SendStatisticsProxy::OnSuspendChange(bool is_suspended) { |
| 150 rtc::CritScope lock(&crit_); | 151 rtc::CritScope lock(&crit_); |
| 151 stats_.suspended = is_suspended; | 152 stats_.suspended = is_suspended; |
| 152 } | 153 } |
| 153 | 154 |
| 154 VideoSendStream::Stats SendStatisticsProxy::GetStats() { | 155 VideoSendStream::Stats SendStatisticsProxy::GetStats() { |
| 155 rtc::CritScope lock(&crit_); | 156 rtc::CritScope lock(&crit_); |
| 156 PurgeOldStats(); | 157 PurgeOldStats(); |
| 157 stats_.input_frame_rate = | 158 stats_.input_frame_rate = |
| 158 static_cast<int>(input_frame_rate_tracker_.ComputeRate()); | 159 round(input_frame_rate_tracker_.ComputeRate()); |
| 159 return stats_; | 160 return stats_; |
| 160 } | 161 } |
| 161 | 162 |
| 162 void SendStatisticsProxy::PurgeOldStats() { | 163 void SendStatisticsProxy::PurgeOldStats() { |
| 163 int64_t old_stats_ms = clock_->TimeInMilliseconds() - kStatsTimeoutMs; | 164 int64_t old_stats_ms = clock_->TimeInMilliseconds() - kStatsTimeoutMs; |
| 164 for (std::map<uint32_t, VideoSendStream::StreamStats>::iterator it = | 165 for (std::map<uint32_t, VideoSendStream::StreamStats>::iterator it = |
| 165 stats_.substreams.begin(); | 166 stats_.substreams.begin(); |
| 166 it != stats_.substreams.end(); ++it) { | 167 it != stats_.substreams.end(); ++it) { |
| 167 uint32_t ssrc = it->first; | 168 uint32_t ssrc = it->first; |
| 168 if (update_times_[ssrc].resolution_update_ms <= old_stats_ms) { | 169 if (update_times_[ssrc].resolution_update_ms <= old_stats_ms) { |
| (...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 379 } | 380 } |
| 380 | 381 |
| 381 int SendStatisticsProxy::BoolSampleCounter::Fraction( | 382 int SendStatisticsProxy::BoolSampleCounter::Fraction( |
| 382 int min_required_samples, float multiplier) const { | 383 int min_required_samples, float multiplier) const { |
| 383 if (num_samples < min_required_samples || num_samples == 0) | 384 if (num_samples < min_required_samples || num_samples == 0) |
| 384 return -1; | 385 return -1; |
| 385 return static_cast<int>((sum * multiplier / num_samples) + 0.5f); | 386 return static_cast<int>((sum * multiplier / num_samples) + 0.5f); |
| 386 } | 387 } |
| 387 | 388 |
| 388 } // namespace webrtc | 389 } // namespace webrtc |
| OLD | NEW |