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

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

Issue 1556703002: Remove always-on options in OveruseFrameDetector. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 11 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/overuse_frame_detector.cc ('k') | webrtc/video/video_capture_input.cc » ('j') | 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 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 return ((options_.low_encode_usage_threshold_percent + 71 return ((options_.low_encode_usage_threshold_percent +
72 options_.high_encode_usage_threshold_percent) / 2.0f) + 0.5; 72 options_.high_encode_usage_threshold_percent) / 2.0f) + 0.5;
73 } 73 }
74 74
75 void InsertAndSendFramesWithInterval( 75 void InsertAndSendFramesWithInterval(
76 int num_frames, int interval_ms, int width, int height, int delay_ms) { 76 int num_frames, int interval_ms, int width, int height, int delay_ms) {
77 while (num_frames-- > 0) { 77 while (num_frames-- > 0) {
78 int64_t capture_time_ms = clock_->TimeInMilliseconds(); 78 int64_t capture_time_ms = clock_->TimeInMilliseconds();
79 overuse_detector_->FrameCaptured(width, height, capture_time_ms); 79 overuse_detector_->FrameCaptured(width, height, capture_time_ms);
80 clock_->AdvanceTimeMilliseconds(delay_ms); 80 clock_->AdvanceTimeMilliseconds(delay_ms);
81 overuse_detector_->FrameEncoded(delay_ms);
82 overuse_detector_->FrameSent(capture_time_ms); 81 overuse_detector_->FrameSent(capture_time_ms);
83 clock_->AdvanceTimeMilliseconds(interval_ms - delay_ms); 82 clock_->AdvanceTimeMilliseconds(interval_ms - delay_ms);
84 } 83 }
85 } 84 }
86 85
87 void TriggerOveruse(int num_times) { 86 void TriggerOveruse(int num_times) {
88 const int kDelayMs = 32; 87 const int kDelayMs = 32;
89 for (int i = 0; i < num_times; ++i) { 88 for (int i = 0; i < num_times; ++i) {
90 InsertAndSendFramesWithInterval( 89 InsertAndSendFramesWithInterval(
91 1000, kFrameInterval33ms, kWidth, kHeight, kDelayMs); 90 1000, kFrameInterval33ms, kWidth, kHeight, kDelayMs);
(...skipping 14 matching lines...) Expand all
106 int UsagePercent() { return metrics_.encode_usage_percent; } 105 int UsagePercent() { return metrics_.encode_usage_percent; }
107 106
108 CpuOveruseOptions options_; 107 CpuOveruseOptions options_;
109 rtc::scoped_ptr<SimulatedClock> clock_; 108 rtc::scoped_ptr<SimulatedClock> clock_;
110 rtc::scoped_ptr<MockCpuOveruseObserver> observer_; 109 rtc::scoped_ptr<MockCpuOveruseObserver> observer_;
111 rtc::scoped_ptr<OveruseFrameDetector> overuse_detector_; 110 rtc::scoped_ptr<OveruseFrameDetector> overuse_detector_;
112 CpuOveruseMetrics metrics_; 111 CpuOveruseMetrics metrics_;
113 }; 112 };
114 113
115 114
116 // enable_encode_usage_method = true;
117 // enable_extended_processing_usage = false;
118 // UsagePercent() > high_encode_usage_threshold_percent => overuse. 115 // UsagePercent() > high_encode_usage_threshold_percent => overuse.
119 // UsagePercent() < low_encode_usage_threshold_percent => underuse. 116 // UsagePercent() < low_encode_usage_threshold_percent => underuse.
120 TEST_F(OveruseFrameDetectorTest, TriggerOveruse) { 117 TEST_F(OveruseFrameDetectorTest, TriggerOveruse) {
121 options_.enable_extended_processing_usage = false;
122 ReinitializeOveruseDetector();
123 // usage > high => overuse 118 // usage > high => overuse
124 EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(1); 119 EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(1);
125 TriggerOveruse(options_.high_threshold_consecutive_count); 120 TriggerOveruse(options_.high_threshold_consecutive_count);
126 } 121 }
127 122
128 TEST_F(OveruseFrameDetectorTest, OveruseAndRecover) { 123 TEST_F(OveruseFrameDetectorTest, OveruseAndRecover) {
129 options_.enable_extended_processing_usage = false;
130 ReinitializeOveruseDetector();
131 // usage > high => overuse 124 // usage > high => overuse
132 EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(1); 125 EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(1);
133 TriggerOveruse(options_.high_threshold_consecutive_count); 126 TriggerOveruse(options_.high_threshold_consecutive_count);
134 // usage < low => underuse 127 // usage < low => underuse
135 EXPECT_CALL(*(observer_.get()), NormalUsage()).Times(testing::AtLeast(1)); 128 EXPECT_CALL(*(observer_.get()), NormalUsage()).Times(testing::AtLeast(1));
136 TriggerUnderuse(); 129 TriggerUnderuse();
137 } 130 }
138 131
139 TEST_F(OveruseFrameDetectorTest, OveruseAndRecoverWithNoObserver) { 132 TEST_F(OveruseFrameDetectorTest, OveruseAndRecoverWithNoObserver) {
140 options_.enable_extended_processing_usage = false;
141 overuse_detector_.reset( 133 overuse_detector_.reset(
142 new OveruseFrameDetector(clock_.get(), options_, nullptr, this)); 134 new OveruseFrameDetector(clock_.get(), options_, nullptr, this));
143 EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(0); 135 EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(0);
144 TriggerOveruse(options_.high_threshold_consecutive_count); 136 TriggerOveruse(options_.high_threshold_consecutive_count);
145 EXPECT_CALL(*(observer_.get()), NormalUsage()).Times(0); 137 EXPECT_CALL(*(observer_.get()), NormalUsage()).Times(0);
146 TriggerUnderuse(); 138 TriggerUnderuse();
147 } 139 }
148 140
149 TEST_F(OveruseFrameDetectorTest, OveruseAndRecoverWithMethodDisabled) {
150 options_.enable_encode_usage_method = false;
151 options_.enable_extended_processing_usage = false;
152 ReinitializeOveruseDetector();
153 EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(0);
154 TriggerOveruse(options_.high_threshold_consecutive_count);
155 EXPECT_CALL(*(observer_.get()), NormalUsage()).Times(0);
156 TriggerUnderuse();
157 }
158
159 TEST_F(OveruseFrameDetectorTest, DoubleOveruseAndRecover) { 141 TEST_F(OveruseFrameDetectorTest, DoubleOveruseAndRecover) {
160 options_.enable_extended_processing_usage = false;
161 ReinitializeOveruseDetector();
162 EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(2); 142 EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(2);
163 TriggerOveruse(options_.high_threshold_consecutive_count); 143 TriggerOveruse(options_.high_threshold_consecutive_count);
164 TriggerOveruse(options_.high_threshold_consecutive_count); 144 TriggerOveruse(options_.high_threshold_consecutive_count);
165 EXPECT_CALL(*(observer_.get()), NormalUsage()).Times(testing::AtLeast(1)); 145 EXPECT_CALL(*(observer_.get()), NormalUsage()).Times(testing::AtLeast(1));
166 TriggerUnderuse(); 146 TriggerUnderuse();
167 } 147 }
168 148
169 TEST_F(OveruseFrameDetectorTest, TriggerUnderuseWithMinProcessCount) { 149 TEST_F(OveruseFrameDetectorTest, TriggerUnderuseWithMinProcessCount) {
170 options_.enable_extended_processing_usage = false;
171 options_.min_process_count = 1; 150 options_.min_process_count = 1;
172 CpuOveruseObserverImpl overuse_observer; 151 CpuOveruseObserverImpl overuse_observer;
173 overuse_detector_.reset(new OveruseFrameDetector(clock_.get(), options_, 152 overuse_detector_.reset(new OveruseFrameDetector(clock_.get(), options_,
174 &overuse_observer, this)); 153 &overuse_observer, this));
175 InsertAndSendFramesWithInterval( 154 InsertAndSendFramesWithInterval(
176 1200, kFrameInterval33ms, kWidth, kHeight, kProcessTime5ms); 155 1200, kFrameInterval33ms, kWidth, kHeight, kProcessTime5ms);
177 overuse_detector_->Process(); 156 overuse_detector_->Process();
178 EXPECT_EQ(0, overuse_observer.normaluse_); 157 EXPECT_EQ(0, overuse_observer.normaluse_);
179 clock_->AdvanceTimeMilliseconds(kProcessIntervalMs); 158 clock_->AdvanceTimeMilliseconds(kProcessIntervalMs);
180 overuse_detector_->Process(); 159 overuse_detector_->Process();
181 EXPECT_EQ(1, overuse_observer.normaluse_); 160 EXPECT_EQ(1, overuse_observer.normaluse_);
182 } 161 }
183 162
184 TEST_F(OveruseFrameDetectorTest, ConstantOveruseGivesNoNormalUsage) { 163 TEST_F(OveruseFrameDetectorTest, ConstantOveruseGivesNoNormalUsage) {
185 options_.enable_extended_processing_usage = false;
186 ReinitializeOveruseDetector();
187 EXPECT_CALL(*(observer_.get()), NormalUsage()).Times(0); 164 EXPECT_CALL(*(observer_.get()), NormalUsage()).Times(0);
188 EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(64); 165 EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(64);
189 for (size_t i = 0; i < 64; ++i) { 166 for (size_t i = 0; i < 64; ++i) {
190 TriggerOveruse(options_.high_threshold_consecutive_count); 167 TriggerOveruse(options_.high_threshold_consecutive_count);
191 } 168 }
192 } 169 }
193 170
194 TEST_F(OveruseFrameDetectorTest, ConsecutiveCountTriggersOveruse) { 171 TEST_F(OveruseFrameDetectorTest, ConsecutiveCountTriggersOveruse) {
195 EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(1); 172 EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(1);
196 options_.enable_extended_processing_usage = false;
197 options_.high_threshold_consecutive_count = 2; 173 options_.high_threshold_consecutive_count = 2;
198 ReinitializeOveruseDetector(); 174 ReinitializeOveruseDetector();
199 TriggerOveruse(2); 175 TriggerOveruse(2);
200 } 176 }
201 177
202 TEST_F(OveruseFrameDetectorTest, IncorrectConsecutiveCountTriggersNoOveruse) { 178 TEST_F(OveruseFrameDetectorTest, IncorrectConsecutiveCountTriggersNoOveruse) {
203 EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(0); 179 EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(0);
204 options_.enable_extended_processing_usage = false;
205 options_.high_threshold_consecutive_count = 2; 180 options_.high_threshold_consecutive_count = 2;
206 ReinitializeOveruseDetector(); 181 ReinitializeOveruseDetector();
207 TriggerOveruse(1); 182 TriggerOveruse(1);
208 } 183 }
209 184
210 TEST_F(OveruseFrameDetectorTest, ProcessingUsage) { 185 TEST_F(OveruseFrameDetectorTest, ProcessingUsage) {
211 InsertAndSendFramesWithInterval( 186 InsertAndSendFramesWithInterval(
212 1000, kFrameInterval33ms, kWidth, kHeight, kProcessTime5ms); 187 1000, kFrameInterval33ms, kWidth, kHeight, kProcessTime5ms);
213 EXPECT_EQ(kProcessTime5ms * 100 / kFrameInterval33ms, UsagePercent()); 188 EXPECT_EQ(kProcessTime5ms * 100 / kFrameInterval33ms, UsagePercent());
214 } 189 }
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 EXPECT_EQ(InitialUsage(), UsagePercent()); 222 EXPECT_EQ(InitialUsage(), UsagePercent());
248 InsertAndSendFramesWithInterval( 223 InsertAndSendFramesWithInterval(
249 1, kFrameInterval33ms, kWidth, kHeight, kProcessTime5ms); 224 1, kFrameInterval33ms, kWidth, kHeight, kProcessTime5ms);
250 EXPECT_NE(InitialUsage(), UsagePercent()); 225 EXPECT_NE(InitialUsage(), UsagePercent());
251 } 226 }
252 227
253 TEST_F(OveruseFrameDetectorTest, InitialProcessingUsage) { 228 TEST_F(OveruseFrameDetectorTest, InitialProcessingUsage) {
254 EXPECT_EQ(InitialUsage(), UsagePercent()); 229 EXPECT_EQ(InitialUsage(), UsagePercent());
255 } 230 }
256 231
257 TEST_F(OveruseFrameDetectorTest, FrameDelay_OneFrameDisabled) { 232 TEST_F(OveruseFrameDetectorTest, FrameDelay_OneFrame) {
258 options_.enable_extended_processing_usage = false;
259 ReinitializeOveruseDetector();
260 const int kProcessingTimeMs = 100; 233 const int kProcessingTimeMs = 100;
261 overuse_detector_->FrameCaptured(kWidth, kHeight, 33); 234 overuse_detector_->FrameCaptured(kWidth, kHeight, 33);
262 clock_->AdvanceTimeMilliseconds(kProcessingTimeMs); 235 clock_->AdvanceTimeMilliseconds(kProcessingTimeMs);
263 overuse_detector_->FrameSent(33);
264 EXPECT_EQ(-1, overuse_detector_->LastProcessingTimeMs());
265 }
266
267 TEST_F(OveruseFrameDetectorTest, FrameDelay_OneFrame) {
268 options_.enable_extended_processing_usage = true;
269 ReinitializeOveruseDetector();
270 const int kProcessingTimeMs = 100;
271 overuse_detector_->FrameCaptured(kWidth, kHeight, 33);
272 clock_->AdvanceTimeMilliseconds(kProcessingTimeMs);
273 EXPECT_EQ(-1, overuse_detector_->LastProcessingTimeMs()); 236 EXPECT_EQ(-1, overuse_detector_->LastProcessingTimeMs());
274 overuse_detector_->FrameSent(33); 237 overuse_detector_->FrameSent(33);
275 EXPECT_EQ(kProcessingTimeMs, overuse_detector_->LastProcessingTimeMs()); 238 EXPECT_EQ(kProcessingTimeMs, overuse_detector_->LastProcessingTimeMs());
276 EXPECT_EQ(0, overuse_detector_->FramesInQueue()); 239 EXPECT_EQ(0, overuse_detector_->FramesInQueue());
277 } 240 }
278 241
279 TEST_F(OveruseFrameDetectorTest, FrameDelay_TwoFrames) { 242 TEST_F(OveruseFrameDetectorTest, FrameDelay_TwoFrames) {
280 options_.enable_extended_processing_usage = true;
281 ReinitializeOveruseDetector();
282 const int kProcessingTimeMs1 = 100; 243 const int kProcessingTimeMs1 = 100;
283 const int kProcessingTimeMs2 = 50; 244 const int kProcessingTimeMs2 = 50;
284 const int kTimeBetweenFramesMs = 200; 245 const int kTimeBetweenFramesMs = 200;
285 overuse_detector_->FrameCaptured(kWidth, kHeight, 33); 246 overuse_detector_->FrameCaptured(kWidth, kHeight, 33);
286 clock_->AdvanceTimeMilliseconds(kProcessingTimeMs1); 247 clock_->AdvanceTimeMilliseconds(kProcessingTimeMs1);
287 overuse_detector_->FrameSent(33); 248 overuse_detector_->FrameSent(33);
288 EXPECT_EQ(kProcessingTimeMs1, overuse_detector_->LastProcessingTimeMs()); 249 EXPECT_EQ(kProcessingTimeMs1, overuse_detector_->LastProcessingTimeMs());
289 clock_->AdvanceTimeMilliseconds(kTimeBetweenFramesMs); 250 clock_->AdvanceTimeMilliseconds(kTimeBetweenFramesMs);
290 overuse_detector_->FrameCaptured(kWidth, kHeight, 66); 251 overuse_detector_->FrameCaptured(kWidth, kHeight, 66);
291 clock_->AdvanceTimeMilliseconds(kProcessingTimeMs2); 252 clock_->AdvanceTimeMilliseconds(kProcessingTimeMs2);
292 overuse_detector_->FrameSent(66); 253 overuse_detector_->FrameSent(66);
293 EXPECT_EQ(kProcessingTimeMs2, overuse_detector_->LastProcessingTimeMs()); 254 EXPECT_EQ(kProcessingTimeMs2, overuse_detector_->LastProcessingTimeMs());
294 } 255 }
295 256
296 TEST_F(OveruseFrameDetectorTest, FrameDelay_MaxQueueSize) { 257 TEST_F(OveruseFrameDetectorTest, FrameDelay_MaxQueueSize) {
297 options_.enable_extended_processing_usage = true;
298 ReinitializeOveruseDetector();
299 const int kMaxQueueSize = 91; 258 const int kMaxQueueSize = 91;
300 for (int i = 0; i < kMaxQueueSize * 2; ++i) { 259 for (int i = 0; i < kMaxQueueSize * 2; ++i) {
301 overuse_detector_->FrameCaptured(kWidth, kHeight, i); 260 overuse_detector_->FrameCaptured(kWidth, kHeight, i);
302 } 261 }
303 EXPECT_EQ(kMaxQueueSize, overuse_detector_->FramesInQueue()); 262 EXPECT_EQ(kMaxQueueSize, overuse_detector_->FramesInQueue());
304 } 263 }
305 264
306 TEST_F(OveruseFrameDetectorTest, FrameDelay_NonProcessedFramesRemoved) { 265 TEST_F(OveruseFrameDetectorTest, FrameDelay_NonProcessedFramesRemoved) {
307 options_.enable_extended_processing_usage = true;
308 ReinitializeOveruseDetector();
309 const int kProcessingTimeMs = 100; 266 const int kProcessingTimeMs = 100;
310 overuse_detector_->FrameCaptured(kWidth, kHeight, 33); 267 overuse_detector_->FrameCaptured(kWidth, kHeight, 33);
311 clock_->AdvanceTimeMilliseconds(kProcessingTimeMs); 268 clock_->AdvanceTimeMilliseconds(kProcessingTimeMs);
312 overuse_detector_->FrameCaptured(kWidth, kHeight, 35); 269 overuse_detector_->FrameCaptured(kWidth, kHeight, 35);
313 clock_->AdvanceTimeMilliseconds(kProcessingTimeMs); 270 clock_->AdvanceTimeMilliseconds(kProcessingTimeMs);
314 overuse_detector_->FrameCaptured(kWidth, kHeight, 66); 271 overuse_detector_->FrameCaptured(kWidth, kHeight, 66);
315 clock_->AdvanceTimeMilliseconds(kProcessingTimeMs); 272 clock_->AdvanceTimeMilliseconds(kProcessingTimeMs);
316 overuse_detector_->FrameCaptured(kWidth, kHeight, 99); 273 overuse_detector_->FrameCaptured(kWidth, kHeight, 99);
317 clock_->AdvanceTimeMilliseconds(kProcessingTimeMs); 274 clock_->AdvanceTimeMilliseconds(kProcessingTimeMs);
318 EXPECT_EQ(-1, overuse_detector_->LastProcessingTimeMs()); 275 EXPECT_EQ(-1, overuse_detector_->LastProcessingTimeMs());
319 EXPECT_EQ(4, overuse_detector_->FramesInQueue()); 276 EXPECT_EQ(4, overuse_detector_->FramesInQueue());
320 overuse_detector_->FrameSent(66); 277 overuse_detector_->FrameSent(66);
321 // Frame 33, 35 removed, 66 processed, 99 not processed. 278 // Frame 33, 35 removed, 66 processed, 99 not processed.
322 EXPECT_EQ(2 * kProcessingTimeMs, overuse_detector_->LastProcessingTimeMs()); 279 EXPECT_EQ(2 * kProcessingTimeMs, overuse_detector_->LastProcessingTimeMs());
323 EXPECT_EQ(1, overuse_detector_->FramesInQueue()); 280 EXPECT_EQ(1, overuse_detector_->FramesInQueue());
324 overuse_detector_->FrameSent(99); 281 overuse_detector_->FrameSent(99);
325 EXPECT_EQ(kProcessingTimeMs, overuse_detector_->LastProcessingTimeMs()); 282 EXPECT_EQ(kProcessingTimeMs, overuse_detector_->LastProcessingTimeMs());
326 EXPECT_EQ(0, overuse_detector_->FramesInQueue()); 283 EXPECT_EQ(0, overuse_detector_->FramesInQueue());
327 } 284 }
328 285
329 TEST_F(OveruseFrameDetectorTest, FrameDelay_ResetClearsFrames) { 286 TEST_F(OveruseFrameDetectorTest, FrameDelay_ResetClearsFrames) {
330 options_.enable_extended_processing_usage = true;
331 ReinitializeOveruseDetector();
332 const int kProcessingTimeMs = 100; 287 const int kProcessingTimeMs = 100;
333 overuse_detector_->FrameCaptured(kWidth, kHeight, 33); 288 overuse_detector_->FrameCaptured(kWidth, kHeight, 33);
334 EXPECT_EQ(1, overuse_detector_->FramesInQueue()); 289 EXPECT_EQ(1, overuse_detector_->FramesInQueue());
335 clock_->AdvanceTimeMilliseconds(kProcessingTimeMs); 290 clock_->AdvanceTimeMilliseconds(kProcessingTimeMs);
336 // Verify reset (resolution changed). 291 // Verify reset (resolution changed).
337 overuse_detector_->FrameCaptured(kWidth, kHeight + 1, 66); 292 overuse_detector_->FrameCaptured(kWidth, kHeight + 1, 66);
338 EXPECT_EQ(1, overuse_detector_->FramesInQueue()); 293 EXPECT_EQ(1, overuse_detector_->FramesInQueue());
339 clock_->AdvanceTimeMilliseconds(kProcessingTimeMs); 294 clock_->AdvanceTimeMilliseconds(kProcessingTimeMs);
340 overuse_detector_->FrameSent(66); 295 overuse_detector_->FrameSent(66);
341 EXPECT_EQ(kProcessingTimeMs, overuse_detector_->LastProcessingTimeMs()); 296 EXPECT_EQ(kProcessingTimeMs, overuse_detector_->LastProcessingTimeMs());
342 EXPECT_EQ(0, overuse_detector_->FramesInQueue()); 297 EXPECT_EQ(0, overuse_detector_->FramesInQueue());
343 } 298 }
344 299
345 TEST_F(OveruseFrameDetectorTest, FrameDelay_NonMatchingSendFrameIgnored) { 300 TEST_F(OveruseFrameDetectorTest, FrameDelay_NonMatchingSendFrameIgnored) {
346 options_.enable_extended_processing_usage = true;
347 ReinitializeOveruseDetector();
348 const int kProcessingTimeMs = 100; 301 const int kProcessingTimeMs = 100;
349 overuse_detector_->FrameCaptured(kWidth, kHeight, 33); 302 overuse_detector_->FrameCaptured(kWidth, kHeight, 33);
350 clock_->AdvanceTimeMilliseconds(kProcessingTimeMs); 303 clock_->AdvanceTimeMilliseconds(kProcessingTimeMs);
351 overuse_detector_->FrameSent(34); 304 overuse_detector_->FrameSent(34);
352 EXPECT_EQ(-1, overuse_detector_->LastProcessingTimeMs()); 305 EXPECT_EQ(-1, overuse_detector_->LastProcessingTimeMs());
353 overuse_detector_->FrameSent(33); 306 overuse_detector_->FrameSent(33);
354 EXPECT_EQ(kProcessingTimeMs, overuse_detector_->LastProcessingTimeMs()); 307 EXPECT_EQ(kProcessingTimeMs, overuse_detector_->LastProcessingTimeMs());
355 } 308 }
356 309
357 // enable_encode_usage_method = true;
358 // enable_extended_processing_usage = true;
359 // UsagePercent() > high_encode_usage_threshold_percent => overuse. 310 // UsagePercent() > high_encode_usage_threshold_percent => overuse.
åsapersson 2016/01/07 15:02:46 These two methods could be removed now (tested abo
pbos-webrtc 2016/01/07 15:36:35 Done.
360 // UsagePercent() < low_encode_usage_threshold_percent => underuse. 311 // UsagePercent() < low_encode_usage_threshold_percent => underuse.
361 TEST_F(OveruseFrameDetectorTest, TriggerOveruseWithExtendedProcessingUsage) { 312 TEST_F(OveruseFrameDetectorTest, TriggerOveruseWithExtendedProcessingUsage) {
362 options_.enable_extended_processing_usage = true;
363 ReinitializeOveruseDetector();
364 // usage > high => overuse 313 // usage > high => overuse
365 EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(1); 314 EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(1);
366 TriggerOveruse(options_.high_threshold_consecutive_count); 315 TriggerOveruse(options_.high_threshold_consecutive_count);
367 } 316 }
368 317
369 TEST_F(OveruseFrameDetectorTest, OveruseAndRecoverWithExtendedProcessingUsage) { 318 TEST_F(OveruseFrameDetectorTest, OveruseAndRecoverWithExtendedProcessingUsage) {
370 options_.enable_extended_processing_usage = true;
371 ReinitializeOveruseDetector();
372 // usage > high => overuse 319 // usage > high => overuse
373 EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(1); 320 EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(1);
374 TriggerOveruse(options_.high_threshold_consecutive_count); 321 TriggerOveruse(options_.high_threshold_consecutive_count);
375 // usage < low => underuse 322 // usage < low => underuse
376 EXPECT_CALL(*(observer_.get()), NormalUsage()).Times(testing::AtLeast(1)); 323 EXPECT_CALL(*(observer_.get()), NormalUsage()).Times(testing::AtLeast(1));
377 TriggerUnderuse(); 324 TriggerUnderuse();
378 } 325 }
379 326
380 TEST_F(OveruseFrameDetectorTest,
381 OveruseAndRecoverWithExtendedProcessingUsageMethodDisabled) {
382 options_.enable_encode_usage_method = false;
383 options_.enable_extended_processing_usage = true;
384 ReinitializeOveruseDetector();
385 // usage > high => overuse
386 EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(0);
387 TriggerOveruse(options_.high_threshold_consecutive_count);
388 // usage < low => underuse
389 EXPECT_CALL(*(observer_.get()), NormalUsage()).Times(0);
390 TriggerUnderuse();
391 }
392
393 } // namespace webrtc 327 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/video/overuse_frame_detector.cc ('k') | webrtc/video/video_capture_input.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698