Add configuration of new cpu load estimator via field trials.
Field trial overrides setting via RTCConfiguration.
Bug: None
Change-Id: Id7b2aa9c533fe20f2870edd589bb169946cc4936
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133568
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27757}
diff --git a/video/BUILD.gn b/video/BUILD.gn
index 2555339..8d776d5 100644
--- a/video/BUILD.gn
+++ b/video/BUILD.gn
@@ -205,6 +205,7 @@
"../rtc_base:rtc_task_queue",
"../rtc_base:timeutils",
"../rtc_base/experiments:alr_experiment",
+ "../rtc_base/experiments:field_trial_parser",
"../rtc_base/experiments:quality_scaling_experiment",
"../rtc_base/experiments:rate_control_settings",
"../rtc_base/synchronization:sequence_checker",
diff --git a/video/overuse_frame_detector.cc b/video/overuse_frame_detector.cc
index 894a648..182ff54 100644
--- a/video/overuse_frame_detector.cc
+++ b/video/overuse_frame_detector.cc
@@ -533,6 +533,8 @@
in_quick_rampup_(false),
current_rampup_delay_ms_(kStandardRampUpDelayMs) {
task_checker_.Detach();
+ ParseFieldTrial({&filter_time_constant_},
+ field_trial::FindFullName("WebRTC-CpuLoadEstimator"));
}
OveruseFrameDetector::~OveruseFrameDetector() {}
@@ -683,6 +685,11 @@
void OveruseFrameDetector::SetOptions(const CpuOveruseOptions& options) {
RTC_DCHECK_RUN_ON(&task_checker_);
options_ = options;
+
+ // Time constant config overridable by field trial.
+ if (filter_time_constant_) {
+ options_.filter_time_ms = filter_time_constant_->ms();
+ }
// Force reset with next frame.
num_pixels_ = 0;
usage_ = CreateProcessingUsage(options);
diff --git a/video/overuse_frame_detector.h b/video/overuse_frame_detector.h
index c65acc2..20e0971 100644
--- a/video/overuse_frame_detector.h
+++ b/video/overuse_frame_detector.h
@@ -18,6 +18,7 @@
#include "api/video/video_stream_encoder_observer.h"
#include "modules/video_coding/utility/quality_scaler.h"
#include "rtc_base/constructor_magic.h"
+#include "rtc_base/experiments/field_trial_parser.h"
#include "rtc_base/numerics/exp_filter.h"
#include "rtc_base/synchronization/sequence_checker.h"
#include "rtc_base/task_queue.h"
@@ -146,6 +147,9 @@
std::unique_ptr<ProcessingUsage> usage_ RTC_PT_GUARDED_BY(task_checker_);
+ // If set by field trial, overrides CpuOveruseOptions::filter_time_ms.
+ FieldTrialOptional<TimeDelta> filter_time_constant_{"tau"};
+
RTC_DISALLOW_COPY_AND_ASSIGN(OveruseFrameDetector);
};