From eea928836755bd37dbe8ef058ca4856422d90eec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=B6ller?= Date: Thu, 25 Apr 2019 08:44:04 +0200 Subject: [PATCH] Add configuration of new cpu load estimator via field trials. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Reviewed-by: Erik Språng Commit-Queue: Niels Moller Cr-Commit-Position: refs/heads/master@{#27757} --- video/BUILD.gn | 1 + video/overuse_frame_detector.cc | 7 +++++++ video/overuse_frame_detector.h | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/video/BUILD.gn b/video/BUILD.gn index 2555339ad5..8d776d5dde 100644 --- a/video/BUILD.gn +++ b/video/BUILD.gn @@ -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", diff --git a/video/overuse_frame_detector.cc b/video/overuse_frame_detector.cc index 894a648cf2..182ff54fbf 100644 --- a/video/overuse_frame_detector.cc +++ b/video/overuse_frame_detector.cc @@ -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); diff --git a/video/overuse_frame_detector.h b/video/overuse_frame_detector.h index c65acc2b76..20e097111b 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 @@ class OveruseFrameDetector { std::unique_ptr usage_ RTC_PT_GUARDED_BY(task_checker_); + // If set by field trial, overrides CpuOveruseOptions::filter_time_ms. + FieldTrialOptional filter_time_constant_{"tau"}; + RTC_DISALLOW_COPY_AND_ASSIGN(OveruseFrameDetector); };