blob: 7a2c06c4bab145a88169ffa417a8476f26aa6507 [file] [log] [blame]
Erik Språngadfb4f72019-08-23 20:02:13 +02001/*
2 * Copyright 2019 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11#ifndef RTC_BASE_EXPERIMENTS_STABLE_TARGET_RATE_EXPERIMENT_H_
12#define RTC_BASE_EXPERIMENTS_STABLE_TARGET_RATE_EXPERIMENT_H_
13
14#include "api/transport/webrtc_key_value_config.h"
15#include "rtc_base/experiments/field_trial_parser.h"
16
17namespace webrtc {
18
19class StableTargetRateExperiment {
20 public:
Erik Språngcf9cbf52019-09-04 14:30:57 +020021 StableTargetRateExperiment(const StableTargetRateExperiment&);
Erik Språngadfb4f72019-08-23 20:02:13 +020022 StableTargetRateExperiment(StableTargetRateExperiment&&);
23 static StableTargetRateExperiment ParseFromFieldTrials();
24 static StableTargetRateExperiment ParseFromKeyValueConfig(
25 const WebRtcKeyValueConfig* const key_value_config);
26
27 bool IsEnabled() const;
28 absl::optional<double> GetVideoHysteresisFactor() const;
29 absl::optional<double> GetScreenshareHysteresisFactor() const;
30
31 private:
32 explicit StableTargetRateExperiment(
33 const WebRtcKeyValueConfig* const key_value_config,
34 absl::optional<double> default_video_hysteresis,
35 absl::optional<double> default_screenshare_hysteresis);
36
37 FieldTrialParameter<bool> enabled_;
38 FieldTrialOptional<double> video_hysteresis_factor_;
39 FieldTrialOptional<double> screenshare_hysteresis_factor_;
40};
41
42} // namespace webrtc
43
44#endif // RTC_BASE_EXPERIMENTS_STABLE_TARGET_RATE_EXPERIMENT_H_