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}
This commit is contained in:
Niels Möller 2019-04-25 08:44:04 +02:00 committed by Commit Bot
parent c9a2c5e93a
commit eea9288367
3 changed files with 12 additions and 0 deletions

View File

@ -205,6 +205,7 @@ rtc_source_set("video_stream_encoder_impl") {
"../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",

View File

@ -533,6 +533,8 @@ OveruseFrameDetector::OveruseFrameDetector(
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::CheckForOveruse(
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);

View File

@ -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 @@ class OveruseFrameDetector {
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);
};