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

Side by Side Diff: webrtc/video_engine/overuse_frame_detector.h

Issue 1278383002: Remove avg encode time from CpuOveruseMetric struct and use value from OnEncodedFrame instead. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 5 years 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 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 // frames before resetting estimations. 60 // frames before resetting estimations.
61 int min_frame_samples; // The minimum number of frames required. 61 int min_frame_samples; // The minimum number of frames required.
62 int min_process_count; // The number of initial process times required before 62 int min_process_count; // The number of initial process times required before
63 // triggering an overuse/underuse. 63 // triggering an overuse/underuse.
64 int high_threshold_consecutive_count; // The number of consecutive checks 64 int high_threshold_consecutive_count; // The number of consecutive checks
65 // above the high threshold before 65 // above the high threshold before
66 // triggering an overuse. 66 // triggering an overuse.
67 }; 67 };
68 68
69 struct CpuOveruseMetrics { 69 struct CpuOveruseMetrics {
70 CpuOveruseMetrics() 70 CpuOveruseMetrics() : encode_usage_percent(-1) {}
71 : avg_encode_time_ms(-1),
72 encode_usage_percent(-1) {}
73 71
74 int avg_encode_time_ms; // Average encode time in ms.
75 int encode_usage_percent; // Average encode time divided by the average time 72 int encode_usage_percent; // Average encode time divided by the average time
76 // difference between incoming captured frames. 73 // difference between incoming captured frames.
77 }; 74 };
78 75
79 class CpuOveruseMetricsObserver { 76 class CpuOveruseMetricsObserver {
80 public: 77 public:
81 virtual ~CpuOveruseMetricsObserver() {} 78 virtual ~CpuOveruseMetricsObserver() {}
82 virtual void CpuOveruseMetricsUpdated(const CpuOveruseMetrics& metrics) = 0; 79 virtual void CpuOveruseMetricsUpdated(const CpuOveruseMetrics& metrics) = 0;
83 }; 80 };
84 81
(...skipping 19 matching lines...) Expand all
104 101
105 // Only public for testing. 102 // Only public for testing.
106 int LastProcessingTimeMs() const; 103 int LastProcessingTimeMs() const;
107 int FramesInQueue() const; 104 int FramesInQueue() const;
108 105
109 // Implements Module. 106 // Implements Module.
110 int64_t TimeUntilNextProcess() override; 107 int64_t TimeUntilNextProcess() override;
111 int32_t Process() override; 108 int32_t Process() override;
112 109
113 private: 110 private:
114 class EncodeTimeAvg;
115 class SendProcessingUsage; 111 class SendProcessingUsage;
116 class FrameQueue; 112 class FrameQueue;
117 113
118 void UpdateCpuOveruseMetrics() EXCLUSIVE_LOCKS_REQUIRED(crit_); 114 void UpdateCpuOveruseMetrics() EXCLUSIVE_LOCKS_REQUIRED(crit_);
119 115
120 // TODO(asapersson): This method is only used on one thread, so it shouldn't 116 // TODO(asapersson): This method is only used on one thread, so it shouldn't
121 // need a guard. 117 // need a guard.
122 void AddProcessingTime(int elapsed_ms) EXCLUSIVE_LOCKS_REQUIRED(crit_); 118 void AddProcessingTime(int elapsed_ms) EXCLUSIVE_LOCKS_REQUIRED(crit_);
123 119
124 // Only called on the processing thread. 120 // Only called on the processing thread.
(...skipping 30 matching lines...) Expand all
155 151
156 // These seven members are only accessed on the processing thread. 152 // These seven members are only accessed on the processing thread.
157 int64_t next_process_time_; 153 int64_t next_process_time_;
158 int64_t last_overuse_time_; 154 int64_t last_overuse_time_;
159 int checks_above_threshold_; 155 int checks_above_threshold_;
160 int num_overuse_detections_; 156 int num_overuse_detections_;
161 int64_t last_rampup_time_; 157 int64_t last_rampup_time_;
162 bool in_quick_rampup_; 158 bool in_quick_rampup_;
163 int current_rampup_delay_ms_; 159 int current_rampup_delay_ms_;
164 160
165 int64_t last_encode_sample_ms_; // Only accessed by one thread.
166 int64_t last_sample_time_ms_; // Only accessed by one thread. 161 int64_t last_sample_time_ms_; // Only accessed by one thread.
167 162
168 // TODO(asapersson): Can these be regular members (avoid separate heap 163 // TODO(asapersson): Can these be regular members (avoid separate heap
169 // allocs)? 164 // allocs)?
170 const rtc::scoped_ptr<EncodeTimeAvg> encode_time_ GUARDED_BY(crit_);
171 const rtc::scoped_ptr<SendProcessingUsage> usage_ GUARDED_BY(crit_); 165 const rtc::scoped_ptr<SendProcessingUsage> usage_ GUARDED_BY(crit_);
172 const rtc::scoped_ptr<FrameQueue> frame_queue_ GUARDED_BY(crit_); 166 const rtc::scoped_ptr<FrameQueue> frame_queue_ GUARDED_BY(crit_);
173 167
174 rtc::ThreadChecker processing_thread_; 168 rtc::ThreadChecker processing_thread_;
175 169
176 RTC_DISALLOW_COPY_AND_ASSIGN(OveruseFrameDetector); 170 RTC_DISALLOW_COPY_AND_ASSIGN(OveruseFrameDetector);
177 }; 171 };
178 172
179 } // namespace webrtc 173 } // namespace webrtc
180 174
181 #endif // WEBRTC_VIDEO_ENGINE_OVERUSE_FRAME_DETECTOR_H_ 175 #endif // WEBRTC_VIDEO_ENGINE_OVERUSE_FRAME_DETECTOR_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698