Adding field trials to control additional quality scaler settings
Bug: webrtc:11924 Change-Id: I98c7aa4bd4536770500fec7e8e8da9629fddd20f Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/183342 Reviewed-by: Henrik Boström <hbos@webrtc.org> Reviewed-by: Åsa Persson <asapersson@webrtc.org> Commit-Queue: Åsa Persson <asapersson@webrtc.org> Cr-Commit-Position: refs/heads/master@{#32103}
This commit is contained in:
@ -189,13 +189,17 @@ QualityScaler::QualityScaler(QualityScalerQpUsageHandlerInterface* handler,
|
||||
// Protected ctor, should not be called directly.
|
||||
QualityScaler::QualityScaler(QualityScalerQpUsageHandlerInterface* handler,
|
||||
VideoEncoder::QpThresholds thresholds,
|
||||
int64_t sampling_period_ms)
|
||||
int64_t default_sampling_period_ms)
|
||||
: handler_(handler),
|
||||
thresholds_(thresholds),
|
||||
sampling_period_ms_(sampling_period_ms),
|
||||
sampling_period_ms_(QualityScalerSettings::ParseFromFieldTrials()
|
||||
.SamplingPeriodMs()
|
||||
.value_or(default_sampling_period_ms)),
|
||||
fast_rampup_(true),
|
||||
// Arbitrarily choose size based on 30 fps for 5 seconds.
|
||||
average_qp_(5 * 30),
|
||||
average_qp_(QualityScalerSettings::ParseFromFieldTrials()
|
||||
.AverageQpWindow()
|
||||
.value_or(5 * 30)),
|
||||
framedrop_percent_media_opt_(5 * 30),
|
||||
framedrop_percent_all_(5 * 30),
|
||||
experiment_enabled_(QualityScalingExperiment::Enabled()),
|
||||
|
@ -21,14 +21,17 @@ const double kMinScaleFactor = 0.01;
|
||||
|
||||
QualityScalerSettings::QualityScalerSettings(
|
||||
const WebRtcKeyValueConfig* const key_value_config)
|
||||
: min_frames_("min_frames"),
|
||||
: sampling_period_ms_("sampling_period_ms"),
|
||||
average_qp_window_("average_qp_window"),
|
||||
min_frames_("min_frames"),
|
||||
initial_scale_factor_("initial_scale_factor"),
|
||||
scale_factor_("scale_factor"),
|
||||
initial_bitrate_interval_ms_("initial_bitrate_interval_ms"),
|
||||
initial_bitrate_factor_("initial_bitrate_factor") {
|
||||
ParseFieldTrial(
|
||||
{&min_frames_, &initial_scale_factor_, &scale_factor_,
|
||||
&initial_bitrate_interval_ms_, &initial_bitrate_factor_},
|
||||
{&sampling_period_ms_, &average_qp_window_, &min_frames_,
|
||||
&initial_scale_factor_, &scale_factor_, &initial_bitrate_interval_ms_,
|
||||
&initial_bitrate_factor_},
|
||||
key_value_config->Lookup("WebRTC-Video-QualityScalerSettings"));
|
||||
}
|
||||
|
||||
@ -37,6 +40,22 @@ QualityScalerSettings QualityScalerSettings::ParseFromFieldTrials() {
|
||||
return QualityScalerSettings(&field_trial_config);
|
||||
}
|
||||
|
||||
absl::optional<int> QualityScalerSettings::SamplingPeriodMs() const {
|
||||
if (sampling_period_ms_ && sampling_period_ms_.Value() <= 0) {
|
||||
RTC_LOG(LS_WARNING) << "Unsupported sampling_period_ms value, ignored.";
|
||||
return absl::nullopt;
|
||||
}
|
||||
return sampling_period_ms_.GetOptional();
|
||||
}
|
||||
|
||||
absl::optional<int> QualityScalerSettings::AverageQpWindow() const {
|
||||
if (average_qp_window_ && average_qp_window_.Value() <= 0) {
|
||||
RTC_LOG(LS_WARNING) << "Unsupported average_qp_window value, ignored.";
|
||||
return absl::nullopt;
|
||||
}
|
||||
return average_qp_window_.GetOptional();
|
||||
}
|
||||
|
||||
absl::optional<int> QualityScalerSettings::MinFrames() const {
|
||||
if (min_frames_ && min_frames_.Value() < kMinFrames) {
|
||||
RTC_LOG(LS_WARNING) << "Unsupported min_frames value, ignored.";
|
||||
|
@ -21,6 +21,8 @@ class QualityScalerSettings final {
|
||||
public:
|
||||
static QualityScalerSettings ParseFromFieldTrials();
|
||||
|
||||
absl::optional<int> SamplingPeriodMs() const;
|
||||
absl::optional<int> AverageQpWindow() const;
|
||||
absl::optional<int> MinFrames() const;
|
||||
absl::optional<double> InitialScaleFactor() const;
|
||||
absl::optional<double> ScaleFactor() const;
|
||||
@ -31,6 +33,8 @@ class QualityScalerSettings final {
|
||||
explicit QualityScalerSettings(
|
||||
const WebRtcKeyValueConfig* const key_value_config);
|
||||
|
||||
FieldTrialOptional<int> sampling_period_ms_;
|
||||
FieldTrialOptional<int> average_qp_window_;
|
||||
FieldTrialOptional<int> min_frames_;
|
||||
FieldTrialOptional<double> initial_scale_factor_;
|
||||
FieldTrialOptional<double> scale_factor_;
|
||||
|
Reference in New Issue
Block a user