/* * Copyright 2018 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ #ifndef RTC_BASE_EXPERIMENTS_CONGESTION_CONTROLLER_EXPERIMENT_H_ #define RTC_BASE_EXPERIMENTS_CONGESTION_CONTROLLER_EXPERIMENT_H_ #include namespace webrtc { class CongestionControllerExperiment { public: struct BbrExperimentConfig { int exit_startup_on_loss; int exit_startup_rtt_threshold_ms; int fully_drain_queue; int initial_conservation_in_startup; int num_startup_rtts; int probe_rtt_based_on_bdp; int probe_rtt_disabled_if_app_limited; int probe_rtt_skipped_if_similar_rtt; int rate_based_recovery; int rate_based_startup; int slower_startup; double encoder_rate_gain; double encoder_rate_gain_in_probe_rtt; double max_ack_height_window_multiplier; double max_aggregation_bytes_multiplier; double probe_bw_pacing_gain_offset; double probe_rtt_congestion_window_gain; }; static bool BbrControllerEnabled(); static bool InjectedControllerEnabled(); static absl::optional GetBbrExperimentConfig(); }; } // namespace webrtc #endif // RTC_BASE_EXPERIMENTS_CONGESTION_CONTROLLER_EXPERIMENT_H_