Remove always-on options in OveruseFrameDetector.
BUG=webrtc:5132
R=asapersson@webrtc.org
Review URL: https://codereview.webrtc.org/1556703002 .
Cr-Commit-Position: refs/heads/master@{#11169}
diff --git a/webrtc/video/overuse_frame_detector.cc b/webrtc/video/overuse_frame_detector.cc
index db58266..d971ad9 100644
--- a/webrtc/video/overuse_frame_detector.cc
+++ b/webrtc/video/overuse_frame_detector.cc
@@ -255,23 +255,10 @@
last_capture_time_ = now;
- if (options_.enable_extended_processing_usage) {
- frame_queue_->Start(capture_time_ms, now);
- }
-}
-
-void OveruseFrameDetector::FrameEncoded(int encode_time_ms) {
- if (options_.enable_extended_processing_usage)
- return;
-
- rtc::CritScope cs(&crit_);
- AddProcessingTime(encode_time_ms);
+ frame_queue_->Start(capture_time_ms, now);
}
void OveruseFrameDetector::FrameSent(int64_t capture_time_ms) {
- if (!options_.enable_extended_processing_usage)
- return;
-
rtc::CritScope cs(&crit_);
int delay_ms = frame_queue_->End(capture_time_ms,
clock_->TimeInMilliseconds());
@@ -356,12 +343,8 @@
}
bool OveruseFrameDetector::IsOverusing(const CpuOveruseMetrics& metrics) {
- bool overusing = false;
- if (options_.enable_encode_usage_method) {
- overusing = metrics.encode_usage_percent >=
- options_.high_encode_usage_threshold_percent;
- }
- if (overusing) {
+ if (metrics.encode_usage_percent >=
+ options_.high_encode_usage_threshold_percent) {
++checks_above_threshold_;
} else {
checks_above_threshold_ = 0;
@@ -375,11 +358,7 @@
if (time_now < last_rampup_time_ + delay)
return false;
- bool underusing = false;
- if (options_.enable_encode_usage_method) {
- underusing = metrics.encode_usage_percent <
- options_.low_encode_usage_threshold_percent;
- }
- return underusing;
+ return metrics.encode_usage_percent <
+ options_.low_encode_usage_threshold_percent;
}
} // namespace webrtc
diff --git a/webrtc/video/overuse_frame_detector.h b/webrtc/video/overuse_frame_detector.h
index d53042a..d2606c1 100644
--- a/webrtc/video/overuse_frame_detector.h
+++ b/webrtc/video/overuse_frame_detector.h
@@ -38,23 +38,15 @@
struct CpuOveruseOptions {
CpuOveruseOptions()
- : enable_encode_usage_method(true),
- low_encode_usage_threshold_percent(55),
+ : low_encode_usage_threshold_percent(55),
high_encode_usage_threshold_percent(85),
- enable_extended_processing_usage(true),
frame_timeout_interval_ms(1500),
min_frame_samples(120),
min_process_count(3),
high_threshold_consecutive_count(2) {}
- // Method based on encode time of frames.
- bool enable_encode_usage_method;
int low_encode_usage_threshold_percent; // Threshold for triggering underuse.
int high_encode_usage_threshold_percent; // Threshold for triggering overuse.
- bool enable_extended_processing_usage; // Include a larger time span (in
- // addition to encode time) for
- // measuring the processing time of a
- // frame.
// General settings.
int frame_timeout_interval_ms; // The maximum allowed interval between two
// frames before resetting estimations.
@@ -93,9 +85,6 @@
// Called for each captured frame.
void FrameCaptured(int width, int height, int64_t capture_time_ms);
- // Called for each encoded frame.
- void FrameEncoded(int encode_time_ms);
-
// Called for each sent frame.
void FrameSent(int64_t capture_time_ms);
diff --git a/webrtc/video/overuse_frame_detector_unittest.cc b/webrtc/video/overuse_frame_detector_unittest.cc
index e8a7e28..65e006b 100644
--- a/webrtc/video/overuse_frame_detector_unittest.cc
+++ b/webrtc/video/overuse_frame_detector_unittest.cc
@@ -78,7 +78,6 @@
int64_t capture_time_ms = clock_->TimeInMilliseconds();
overuse_detector_->FrameCaptured(width, height, capture_time_ms);
clock_->AdvanceTimeMilliseconds(delay_ms);
- overuse_detector_->FrameEncoded(delay_ms);
overuse_detector_->FrameSent(capture_time_ms);
clock_->AdvanceTimeMilliseconds(interval_ms - delay_ms);
}
@@ -113,21 +112,15 @@
};
-// enable_encode_usage_method = true;
-// enable_extended_processing_usage = false;
// UsagePercent() > high_encode_usage_threshold_percent => overuse.
// UsagePercent() < low_encode_usage_threshold_percent => underuse.
TEST_F(OveruseFrameDetectorTest, TriggerOveruse) {
- options_.enable_extended_processing_usage = false;
- ReinitializeOveruseDetector();
// usage > high => overuse
EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(1);
TriggerOveruse(options_.high_threshold_consecutive_count);
}
TEST_F(OveruseFrameDetectorTest, OveruseAndRecover) {
- options_.enable_extended_processing_usage = false;
- ReinitializeOveruseDetector();
// usage > high => overuse
EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(1);
TriggerOveruse(options_.high_threshold_consecutive_count);
@@ -137,7 +130,6 @@
}
TEST_F(OveruseFrameDetectorTest, OveruseAndRecoverWithNoObserver) {
- options_.enable_extended_processing_usage = false;
overuse_detector_.reset(
new OveruseFrameDetector(clock_.get(), options_, nullptr, this));
EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(0);
@@ -146,19 +138,7 @@
TriggerUnderuse();
}
-TEST_F(OveruseFrameDetectorTest, OveruseAndRecoverWithMethodDisabled) {
- options_.enable_encode_usage_method = false;
- options_.enable_extended_processing_usage = false;
- ReinitializeOveruseDetector();
- EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(0);
- TriggerOveruse(options_.high_threshold_consecutive_count);
- EXPECT_CALL(*(observer_.get()), NormalUsage()).Times(0);
- TriggerUnderuse();
-}
-
TEST_F(OveruseFrameDetectorTest, DoubleOveruseAndRecover) {
- options_.enable_extended_processing_usage = false;
- ReinitializeOveruseDetector();
EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(2);
TriggerOveruse(options_.high_threshold_consecutive_count);
TriggerOveruse(options_.high_threshold_consecutive_count);
@@ -167,7 +147,6 @@
}
TEST_F(OveruseFrameDetectorTest, TriggerUnderuseWithMinProcessCount) {
- options_.enable_extended_processing_usage = false;
options_.min_process_count = 1;
CpuOveruseObserverImpl overuse_observer;
overuse_detector_.reset(new OveruseFrameDetector(clock_.get(), options_,
@@ -182,8 +161,6 @@
}
TEST_F(OveruseFrameDetectorTest, ConstantOveruseGivesNoNormalUsage) {
- options_.enable_extended_processing_usage = false;
- ReinitializeOveruseDetector();
EXPECT_CALL(*(observer_.get()), NormalUsage()).Times(0);
EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(64);
for (size_t i = 0; i < 64; ++i) {
@@ -193,7 +170,6 @@
TEST_F(OveruseFrameDetectorTest, ConsecutiveCountTriggersOveruse) {
EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(1);
- options_.enable_extended_processing_usage = false;
options_.high_threshold_consecutive_count = 2;
ReinitializeOveruseDetector();
TriggerOveruse(2);
@@ -201,7 +177,6 @@
TEST_F(OveruseFrameDetectorTest, IncorrectConsecutiveCountTriggersNoOveruse) {
EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(0);
- options_.enable_extended_processing_usage = false;
options_.high_threshold_consecutive_count = 2;
ReinitializeOveruseDetector();
TriggerOveruse(1);
@@ -254,19 +229,7 @@
EXPECT_EQ(InitialUsage(), UsagePercent());
}
-TEST_F(OveruseFrameDetectorTest, FrameDelay_OneFrameDisabled) {
- options_.enable_extended_processing_usage = false;
- ReinitializeOveruseDetector();
- const int kProcessingTimeMs = 100;
- overuse_detector_->FrameCaptured(kWidth, kHeight, 33);
- clock_->AdvanceTimeMilliseconds(kProcessingTimeMs);
- overuse_detector_->FrameSent(33);
- EXPECT_EQ(-1, overuse_detector_->LastProcessingTimeMs());
-}
-
TEST_F(OveruseFrameDetectorTest, FrameDelay_OneFrame) {
- options_.enable_extended_processing_usage = true;
- ReinitializeOveruseDetector();
const int kProcessingTimeMs = 100;
overuse_detector_->FrameCaptured(kWidth, kHeight, 33);
clock_->AdvanceTimeMilliseconds(kProcessingTimeMs);
@@ -277,8 +240,6 @@
}
TEST_F(OveruseFrameDetectorTest, FrameDelay_TwoFrames) {
- options_.enable_extended_processing_usage = true;
- ReinitializeOveruseDetector();
const int kProcessingTimeMs1 = 100;
const int kProcessingTimeMs2 = 50;
const int kTimeBetweenFramesMs = 200;
@@ -294,8 +255,6 @@
}
TEST_F(OveruseFrameDetectorTest, FrameDelay_MaxQueueSize) {
- options_.enable_extended_processing_usage = true;
- ReinitializeOveruseDetector();
const int kMaxQueueSize = 91;
for (int i = 0; i < kMaxQueueSize * 2; ++i) {
overuse_detector_->FrameCaptured(kWidth, kHeight, i);
@@ -304,8 +263,6 @@
}
TEST_F(OveruseFrameDetectorTest, FrameDelay_NonProcessedFramesRemoved) {
- options_.enable_extended_processing_usage = true;
- ReinitializeOveruseDetector();
const int kProcessingTimeMs = 100;
overuse_detector_->FrameCaptured(kWidth, kHeight, 33);
clock_->AdvanceTimeMilliseconds(kProcessingTimeMs);
@@ -327,8 +284,6 @@
}
TEST_F(OveruseFrameDetectorTest, FrameDelay_ResetClearsFrames) {
- options_.enable_extended_processing_usage = true;
- ReinitializeOveruseDetector();
const int kProcessingTimeMs = 100;
overuse_detector_->FrameCaptured(kWidth, kHeight, 33);
EXPECT_EQ(1, overuse_detector_->FramesInQueue());
@@ -343,8 +298,6 @@
}
TEST_F(OveruseFrameDetectorTest, FrameDelay_NonMatchingSendFrameIgnored) {
- options_.enable_extended_processing_usage = true;
- ReinitializeOveruseDetector();
const int kProcessingTimeMs = 100;
overuse_detector_->FrameCaptured(kWidth, kHeight, 33);
clock_->AdvanceTimeMilliseconds(kProcessingTimeMs);
@@ -354,40 +307,4 @@
EXPECT_EQ(kProcessingTimeMs, overuse_detector_->LastProcessingTimeMs());
}
-// enable_encode_usage_method = true;
-// enable_extended_processing_usage = true;
-// UsagePercent() > high_encode_usage_threshold_percent => overuse.
-// UsagePercent() < low_encode_usage_threshold_percent => underuse.
-TEST_F(OveruseFrameDetectorTest, TriggerOveruseWithExtendedProcessingUsage) {
- options_.enable_extended_processing_usage = true;
- ReinitializeOveruseDetector();
- // usage > high => overuse
- EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(1);
- TriggerOveruse(options_.high_threshold_consecutive_count);
-}
-
-TEST_F(OveruseFrameDetectorTest, OveruseAndRecoverWithExtendedProcessingUsage) {
- options_.enable_extended_processing_usage = true;
- ReinitializeOveruseDetector();
- // usage > high => overuse
- EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(1);
- TriggerOveruse(options_.high_threshold_consecutive_count);
- // usage < low => underuse
- EXPECT_CALL(*(observer_.get()), NormalUsage()).Times(testing::AtLeast(1));
- TriggerUnderuse();
-}
-
-TEST_F(OveruseFrameDetectorTest,
- OveruseAndRecoverWithExtendedProcessingUsageMethodDisabled) {
- options_.enable_encode_usage_method = false;
- options_.enable_extended_processing_usage = true;
- ReinitializeOveruseDetector();
- // usage > high => overuse
- EXPECT_CALL(*(observer_.get()), OveruseDetected()).Times(0);
- TriggerOveruse(options_.high_threshold_consecutive_count);
- // usage < low => underuse
- EXPECT_CALL(*(observer_.get()), NormalUsage()).Times(0);
- TriggerUnderuse();
-}
-
} // namespace webrtc
diff --git a/webrtc/video/video_capture_input.cc b/webrtc/video/video_capture_input.cc
index 8cbacc1..1c5f299 100644
--- a/webrtc/video/video_capture_input.cc
+++ b/webrtc/video/video_capture_input.cc
@@ -147,7 +147,6 @@
if (encode_start_time != -1) {
int encode_time_ms = static_cast<int>(
Clock::GetRealTimeClock()->TimeInMilliseconds() - encode_start_time);
- overuse_detector_->FrameEncoded(encode_time_ms);
stats_proxy_->OnEncodedFrame(encode_time_ms);
if (encoding_time_observer_) {
encoding_time_observer_->OnReportEncodedTime(