diff --git a/experiments/field_trials.py b/experiments/field_trials.py index 3f94963648..9a9ca9114b 100755 --- a/experiments/field_trials.py +++ b/experiments/field_trials.py @@ -805,9 +805,6 @@ POLICY_EXEMPT_FIELD_TRIALS: FrozenSet[FieldTrial] = frozenset([ FieldTrial('WebRTC-VP8-Postproc-Config-Arm', 42231704, INDEFINITE), - FieldTrial('WebRTC-VP8ConferenceTemporalLayers', - 42234443, - INDEFINITE), FieldTrial('WebRTC-VP8IosMaxNumberOfThread', 42220027, date(2024, 4, 1)), @@ -887,7 +884,7 @@ POLICY_EXEMPT_FIELD_TRIALS: FrozenSet[FieldTrial] = frozenset([ ]) # yapf: disable POLICY_EXEMPT_FIELD_TRIALS_DIGEST: str = \ - 'd6beac9eb318c70cd1695598b3d3c069cd17b42f' + 'ad853beba9dddb16d9f45164a8d69b5d01e7d1c9' REGISTERED_FIELD_TRIALS: FrozenSet[FieldTrial] = ACTIVE_FIELD_TRIALS.union( POLICY_EXEMPT_FIELD_TRIALS) diff --git a/test/BUILD.gn b/test/BUILD.gn index a3e396601e..f083e02bd6 100644 --- a/test/BUILD.gn +++ b/test/BUILD.gn @@ -1391,6 +1391,8 @@ rtc_library("video_codec_tester") { "../rtc_base:timeutils", "../rtc_base/synchronization:mutex", "../system_wrappers", + "../system_wrappers:field_trial", + "../test:explicit_key_value_config", "../test:fileutils", "../video/config:streams_config", "//third_party/abseil-cpp/absl/strings", diff --git a/test/video_codec_tester.cc b/test/video_codec_tester.cc index 8744af91f4..6e290a3a1f 100644 --- a/test/video_codec_tester.cc +++ b/test/video_codec_tester.cc @@ -46,7 +46,9 @@ #include "rtc_base/synchronization/mutex.h" #include "rtc_base/task_queue_for_test.h" #include "rtc_base/time_utils.h" +#include "system_wrappers/include/field_trial.h" #include "system_wrappers/include/sleep.h" +#include "test/explicit_key_value_config.h" #include "test/scoped_key_value_config.h" #include "test/testsupport/file_utils.h" #include "test/testsupport/frame_reader.h" @@ -1291,11 +1293,7 @@ void ConfigureSimulcast(VideoCodec* vc) { return; } - ScopedKeyValueConfig field_trials((rtc::StringBuilder() - << "WebRTC-VP8ConferenceTemporalLayers/" - << num_temporal_layers << "/") - .str()); - + ExplicitKeyValueConfig field_trials(field_trial::GetFieldTrialString()); const std::vector streams = cricket::GetSimulcastConfig( /*min_layer=*/1, num_spatial_layers, vc->width, vc->height, /*is_screenshare=*/false, /*temporal_layers_supported=*/true, @@ -1312,8 +1310,7 @@ void ConfigureSimulcast(VideoCodec* vc) { SimulcastStream* ss = &vc->simulcastStream[i]; ss->width = streams[i].width; ss->height = streams[i].height; - RTC_CHECK_EQ(*streams[i].num_temporal_layers, num_temporal_layers); - ss->numberOfTemporalLayers = *streams[i].num_temporal_layers; + ss->numberOfTemporalLayers = num_temporal_layers; ss->maxBitrate = streams[i].max_bitrate_bps / 1000; ss->targetBitrate = streams[i].target_bitrate_bps / 1000; ss->minBitrate = streams[i].min_bitrate_bps / 1000; diff --git a/video/config/simulcast.cc b/video/config/simulcast.cc index ce20cec4ad..ced7b89587 100644 --- a/video/config/simulcast.cc +++ b/video/config/simulcast.cc @@ -178,27 +178,6 @@ std::vector GetSimulcastFormats( return formats; } -// Multiway: Number of temporal layers for each simulcast stream. -int DefaultNumberOfTemporalLayers(const webrtc::FieldTrialsView& trials) { - const std::string group_name = - trials.Lookup("WebRTC-VP8ConferenceTemporalLayers"); - if (group_name.empty()) - return kDefaultNumTemporalLayers; - - int num_temporal_layers = kDefaultNumTemporalLayers; - if (sscanf(group_name.c_str(), "%d", &num_temporal_layers) == 1 && - num_temporal_layers > 0 && - num_temporal_layers <= webrtc::kMaxTemporalStreams) { - return num_temporal_layers; - } - - RTC_LOG(LS_WARNING) << "Attempt to set number of temporal layers to " - "incorrect value: " - << group_name; - - return kDefaultNumTemporalLayers; -} - int FindSimulcastFormatIndex(int width, int height, bool enable_lowres_bitrate_interpolation, @@ -260,7 +239,8 @@ std::vector GetNormalSimulcastLayers( std::vector layers(layer_count); const bool enable_lowres_bitrate_interpolation = EnableLowresBitrateInterpolation(trials); - const int num_temporal_layers = DefaultNumberOfTemporalLayers(trials); + const int num_temporal_layers = + temporal_layers_supported ? kDefaultNumTemporalLayers : 1; // Format width and height has to be divisible by |2 ^ num_simulcast_layers - // 1|. width = NormalizeSimulcastSize(trials, width, layer_count); @@ -270,8 +250,7 @@ std::vector GetNormalSimulcastLayers( for (size_t s = layer_count - 1;; --s) { layers[s].width = width; layers[s].height = height; - layers[s].num_temporal_layers = - temporal_layers_supported ? num_temporal_layers : 1; + layers[s].num_temporal_layers = num_temporal_layers; SimulcastFormat interpolated_format = InterpolateSimulcastFormat( width, height, /*max_roundup_rate=*/absl::nullopt,