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 |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 void TriggerUnderuse() { | 96 void TriggerUnderuse() { |
97 const int kDelayMs1 = 5; | 97 const int kDelayMs1 = 5; |
98 const int kDelayMs2 = 6; | 98 const int kDelayMs2 = 6; |
99 InsertAndSendFramesWithInterval( | 99 InsertAndSendFramesWithInterval( |
100 1300, kFrameInterval33ms, kWidth, kHeight, kDelayMs1); | 100 1300, kFrameInterval33ms, kWidth, kHeight, kDelayMs1); |
101 InsertAndSendFramesWithInterval( | 101 InsertAndSendFramesWithInterval( |
102 1, kFrameInterval33ms, kWidth, kHeight, kDelayMs2); | 102 1, kFrameInterval33ms, kWidth, kHeight, kDelayMs2); |
103 overuse_detector_->Process(); | 103 overuse_detector_->Process(); |
104 } | 104 } |
105 | 105 |
106 int AvgEncodeTimeMs() { return metrics_.avg_encode_time_ms; } | |
107 | |
108 int UsagePercent() { return metrics_.encode_usage_percent; } | 106 int UsagePercent() { return metrics_.encode_usage_percent; } |
109 | 107 |
110 CpuOveruseOptions options_; | 108 CpuOveruseOptions options_; |
111 rtc::scoped_ptr<SimulatedClock> clock_; | 109 rtc::scoped_ptr<SimulatedClock> clock_; |
112 rtc::scoped_ptr<MockCpuOveruseObserver> observer_; | 110 rtc::scoped_ptr<MockCpuOveruseObserver> observer_; |
113 rtc::scoped_ptr<OveruseFrameDetector> overuse_detector_; | 111 rtc::scoped_ptr<OveruseFrameDetector> overuse_detector_; |
114 CpuOveruseMetrics metrics_; | 112 CpuOveruseMetrics metrics_; |
115 }; | 113 }; |
116 | 114 |
117 | 115 |
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
349 ReinitializeOveruseDetector(); | 347 ReinitializeOveruseDetector(); |
350 const int kProcessingTimeMs = 100; | 348 const int kProcessingTimeMs = 100; |
351 overuse_detector_->FrameCaptured(kWidth, kHeight, 33); | 349 overuse_detector_->FrameCaptured(kWidth, kHeight, 33); |
352 clock_->AdvanceTimeMilliseconds(kProcessingTimeMs); | 350 clock_->AdvanceTimeMilliseconds(kProcessingTimeMs); |
353 overuse_detector_->FrameSent(34); | 351 overuse_detector_->FrameSent(34); |
354 EXPECT_EQ(-1, overuse_detector_->LastProcessingTimeMs()); | 352 EXPECT_EQ(-1, overuse_detector_->LastProcessingTimeMs()); |
355 overuse_detector_->FrameSent(33); | 353 overuse_detector_->FrameSent(33); |
356 EXPECT_EQ(kProcessingTimeMs, overuse_detector_->LastProcessingTimeMs()); | 354 EXPECT_EQ(kProcessingTimeMs, overuse_detector_->LastProcessingTimeMs()); |
357 } | 355 } |
358 | 356 |
359 TEST_F(OveruseFrameDetectorTest, EncodedFrame) { | |
360 const int kInitialAvgEncodeTimeInMs = 5; | |
361 EXPECT_EQ(kInitialAvgEncodeTimeInMs, AvgEncodeTimeMs()); | |
362 for (int i = 0; i < 30; i++) { | |
363 clock_->AdvanceTimeMilliseconds(33); | |
364 overuse_detector_->FrameEncoded(2); | |
365 } | |
366 EXPECT_EQ(2, AvgEncodeTimeMs()); | |
367 } | |
368 | |
369 // enable_encode_usage_method = true; | 357 // enable_encode_usage_method = true; |
370 // enable_extended_processing_usage = true; | 358 // enable_extended_processing_usage = true; |
371 // UsagePercent() > high_encode_usage_threshold_percent => overuse. | 359 // UsagePercent() > high_encode_usage_threshold_percent => overuse. |
372 // UsagePercent() < low_encode_usage_threshold_percent => underuse. | 360 // UsagePercent() < low_encode_usage_threshold_percent => underuse. |
373 TEST_F(OveruseFrameDetectorTest, TriggerOveruseWithExtendedProcessingUsage) { | 361 TEST_F(OveruseFrameDetectorTest, TriggerOveruseWithExtendedProcessingUsage) { |
374 options_.enable_extended_processing_usage = true; | 362 options_.enable_extended_processing_usage = true; |
375 ReinitializeOveruseDetector(); | 363 ReinitializeOveruseDetector(); |
376 // usage > high => overuse | 364 // usage > high => overuse |
377 EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(1); | 365 EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(1); |
378 TriggerOveruse(options_.high_threshold_consecutive_count); | 366 TriggerOveruse(options_.high_threshold_consecutive_count); |
(...skipping 17 matching lines...) Expand all Loading... |
396 ReinitializeOveruseDetector(); | 384 ReinitializeOveruseDetector(); |
397 // usage > high => overuse | 385 // usage > high => overuse |
398 EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(0); | 386 EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(0); |
399 TriggerOveruse(options_.high_threshold_consecutive_count); | 387 TriggerOveruse(options_.high_threshold_consecutive_count); |
400 // usage < low => underuse | 388 // usage < low => underuse |
401 EXPECT_CALL(*(observer_.get()), NormalUsage()).Times(0); | 389 EXPECT_CALL(*(observer_.get()), NormalUsage()).Times(0); |
402 TriggerUnderuse(); | 390 TriggerUnderuse(); |
403 } | 391 } |
404 | 392 |
405 } // namespace webrtc | 393 } // namespace webrtc |
OLD | NEW |