diff --git a/rtc_base/experiments/BUILD.gn b/rtc_base/experiments/BUILD.gn index 185d5931f7..d44eefd4fc 100644 --- a/rtc_base/experiments/BUILD.gn +++ b/rtc_base/experiments/BUILD.gn @@ -16,10 +16,9 @@ rtc_library("alr_experiment") { deps = [ "..:logging", "../../api:field_trials_view", - "../../api/transport:field_trial_based_config", ] absl_deps = [ - "//third_party/abseil-cpp/absl/strings:strings", + "//third_party/abseil-cpp/absl/strings:string_view", "//third_party/abseil-cpp/absl/types:optional", ] } diff --git a/rtc_base/experiments/alr_experiment.cc b/rtc_base/experiments/alr_experiment.cc index f5d36f6867..5370de5452 100644 --- a/rtc_base/experiments/alr_experiment.cc +++ b/rtc_base/experiments/alr_experiment.cc @@ -16,21 +16,16 @@ #include #include "absl/strings/string_view.h" -#include "api/transport/field_trial_based_config.h" +#include "api/field_trials_view.h" #include "rtc_base/logging.h" namespace webrtc { +namespace { -const char AlrExperimentSettings::kScreenshareProbingBweExperimentName[] = - "WebRTC-ProbingScreenshareBwe"; -const char AlrExperimentSettings::kStrictPacingAndProbingExperimentName[] = - "WebRTC-StrictPacingAndProbing"; -const char kDefaultProbingScreenshareBweSettings[] = "1.0,2875,80,40,-60,3"; +constexpr absl::string_view kDefaultProbingScreenshareBweSettings = + "1.0,2875,80,40,-60,3"; -bool AlrExperimentSettings::MaxOneFieldTrialEnabled() { - return AlrExperimentSettings::MaxOneFieldTrialEnabled( - FieldTrialBasedConfig()); -} +} // namespace bool AlrExperimentSettings::MaxOneFieldTrialEnabled( const FieldTrialsView& key_value_config) { @@ -39,12 +34,6 @@ bool AlrExperimentSettings::MaxOneFieldTrialEnabled( key_value_config.Lookup(kScreenshareProbingBweExperimentName).empty(); } -absl::optional -AlrExperimentSettings::CreateFromFieldTrial(absl::string_view experiment_name) { - return AlrExperimentSettings::CreateFromFieldTrial(FieldTrialBasedConfig(), - experiment_name); -} - absl::optional AlrExperimentSettings::CreateFromFieldTrial( const FieldTrialsView& key_value_config, diff --git a/rtc_base/experiments/alr_experiment.h b/rtc_base/experiments/alr_experiment.h index 048fd90cab..9914828827 100644 --- a/rtc_base/experiments/alr_experiment.h +++ b/rtc_base/experiments/alr_experiment.h @@ -30,14 +30,14 @@ struct AlrExperimentSettings { // reserved value to indicate absence of experiment. int group_id; - static const char kScreenshareProbingBweExperimentName[]; - static const char kStrictPacingAndProbingExperimentName[]; - static absl::optional CreateFromFieldTrial( - absl::string_view experiment_name); + static constexpr absl::string_view kScreenshareProbingBweExperimentName = + "WebRTC-ProbingScreenshareBwe"; + static constexpr absl::string_view kStrictPacingAndProbingExperimentName = + "WebRTC-StrictPacingAndProbing"; + static absl::optional CreateFromFieldTrial( const FieldTrialsView& key_value_config, absl::string_view experiment_name); - static bool MaxOneFieldTrialEnabled(); static bool MaxOneFieldTrialEnabled(const FieldTrialsView& key_value_config); private: diff --git a/video/video_send_stream_impl.cc b/video/video_send_stream_impl.cc index ee023d9fec..6075cc70c3 100644 --- a/video/video_send_stream_impl.cc +++ b/video/video_send_stream_impl.cc @@ -18,6 +18,7 @@ #include "absl/algorithm/container.h" #include "api/crypto/crypto_options.h" +#include "api/field_trials_view.h" #include "api/rtp_parameters.h" #include "api/scoped_refptr.h" #include "api/sequence_checker.h" @@ -139,12 +140,15 @@ int CalculateMaxPadBitrateBps(const std::vector& streams, } absl::optional GetAlrSettings( + const FieldTrialsView& field_trials, VideoEncoderConfig::ContentType content_type) { if (content_type == VideoEncoderConfig::ContentType::kScreen) { return AlrExperimentSettings::CreateFromFieldTrial( + field_trials, AlrExperimentSettings::kScreenshareProbingBweExperimentName); } return AlrExperimentSettings::CreateFromFieldTrial( + field_trials, AlrExperimentSettings::kStrictPacingAndProbingExperimentName); } @@ -171,7 +175,7 @@ absl::optional GetConfiguredPacingFactor( return absl::nullopt; absl::optional alr_settings = - GetAlrSettings(content_type); + GetAlrSettings(field_trials, content_type); if (alr_settings) return alr_settings->pacing_factor; @@ -230,7 +234,7 @@ VideoSendStreamImpl::VideoSendStreamImpl( const FieldTrialsView& field_trials) : clock_(clock), has_alr_probing_(config->periodic_alr_bandwidth_probing || - GetAlrSettings(content_type)), + GetAlrSettings(field_trials, content_type)), pacing_config_(PacingConfig(field_trials)), stats_proxy_(stats_proxy), config_(config), @@ -258,7 +262,7 @@ VideoSendStreamImpl::VideoSendStreamImpl( RTC_DCHECK_NE(initial_encoder_max_bitrate, 0); RTC_LOG(LS_INFO) << "VideoSendStreamImpl: " << config_->ToString(); - RTC_CHECK(AlrExperimentSettings::MaxOneFieldTrialEnabled()); + RTC_CHECK(AlrExperimentSettings::MaxOneFieldTrialEnabled(field_trials)); // Only request rotation at the source when we positively know that the remote // side doesn't support the rotation extension. This allows us to prepare the @@ -277,7 +281,7 @@ VideoSendStreamImpl::VideoSendStreamImpl( // pacing settings. if (configured_pacing_factor_) { absl::optional alr_settings = - GetAlrSettings(content_type); + GetAlrSettings(field_trials, content_type); int queue_time_limit_ms; if (alr_settings) { enable_alr_bw_probing = true;