tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 1c92a6e24c06a105ee4b7c919dd15f4feab8c309
parent 1a72edafad35346c7c1f1eee7a2c15b401dcbe41
Author: Michael Froman <mfroman@mozilla.com>
Date:   Wed,  8 Oct 2025 15:42:44 -0500

Bug 1993083 - Vendor libwebrtc from 5b17541d00

Upstream commit: https://webrtc.googlesource.com/src/+/5b17541d00613028644a4833495bc3af8d436d31
    Propagate field trials in test::CallTest based unittests

    Bug: webrtc:419453427
    Change-Id: Ia2ce2ea2145971f80693f0295cdd28d16743d762
    Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/395001
    Reviewed-by: Erik Språng <sprang@webrtc.org>
    Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
    Cr-Commit-Position: refs/heads/main@{#44989}

Diffstat:
Mthird_party/libwebrtc/README.mozilla.last-vendor | 4++--
Mthird_party/libwebrtc/call/call_perf_tests.cc | 5+----
Mthird_party/libwebrtc/moz-patch-stack/s0027.patch | 8++++----
Mthird_party/libwebrtc/moz-patch-stack/s0099.patch | 2+-
Mthird_party/libwebrtc/moz-patch-stack/s0103.patch | 2+-
Mthird_party/libwebrtc/test/BUILD.gn | 3++-
Mthird_party/libwebrtc/test/call_test.cc | 3++-
Mthird_party/libwebrtc/test/call_test.h | 5+++--
Mthird_party/libwebrtc/video/BUILD.gn | 5+----
Mthird_party/libwebrtc/video/cpu_scaling_tests.cc | 6+-----
Mthird_party/libwebrtc/video/end_to_end_tests/bandwidth_tests.cc | 7+------
Mthird_party/libwebrtc/video/end_to_end_tests/codec_tests.cc | 6+-----
Mthird_party/libwebrtc/video/end_to_end_tests/extended_reports_tests.cc | 4+---
Mthird_party/libwebrtc/video/end_to_end_tests/resolution_bitrate_limits_tests.cc | 199++++++++++++++++++++++++++++++++++++-------------------------------------------
Mthird_party/libwebrtc/video/end_to_end_tests/transport_feedback_tests.cc | 4+---
Mthird_party/libwebrtc/video/quality_scaling_tests.cc | 126+++++++++++++++++++++++++++++++++++--------------------------------------------
Mthird_party/libwebrtc/video/video_send_stream_tests.cc | 34+++++++++++++++-------------------
17 files changed, 183 insertions(+), 240 deletions(-)

diff --git a/third_party/libwebrtc/README.mozilla.last-vendor b/third_party/libwebrtc/README.mozilla.last-vendor @@ -1,4 +1,4 @@ # ./mach python dom/media/webrtc/third_party_build/vendor-libwebrtc.py --from-local /home/mfroman/mozilla/elm/.moz-fast-forward/moz-libwebrtc --commit mozpatches libwebrtc -libwebrtc updated from /home/mfroman/mozilla/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-08T20:41:32.394489+00:00. +libwebrtc updated from /home/mfroman/mozilla/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-08T20:42:35.456628+00:00. # base of lastest vendoring -bb9331cfbe +5b17541d00 diff --git a/third_party/libwebrtc/call/call_perf_tests.cc b/third_party/libwebrtc/call/call_perf_tests.cc @@ -74,13 +74,11 @@ #include "test/drifting_clock.h" #include "test/encoder_settings.h" #include "test/fake_encoder.h" -#include "test/field_trial.h" #include "test/frame_generator_capturer.h" #include "test/gtest.h" #include "test/network/simulated_network.h" #include "test/rtp_rtcp_observer.h" #include "test/test_flags.h" -#include "test/testsupport/file_utils.h" #include "test/video_encoder_proxy_factory.h" #include "test/video_test_constants.h" #include "video/config/video_encoder_config.h" @@ -431,8 +429,7 @@ TEST_F(CallPerfTest, TEST_F(CallPerfTest, ReceivesCpuOveruseAndUnderuse) { // Minimal normal usage at the start, then 30s overuse to allow filter to // settle, and then 80s underuse to allow plenty of time for rampup again. - test::ScopedFieldTrials fake_overuse_settings( - "WebRTC-ForceSimulatedOveruseIntervalMs/1-30000-80000/"); + field_trials().Set("WebRTC-ForceSimulatedOveruseIntervalMs", "1-30000-80000"); class LoadObserver : public test::SendTest, public test::FrameGeneratorCapturer::SinkWantsObserver { diff --git a/third_party/libwebrtc/moz-patch-stack/s0027.patch b/third_party/libwebrtc/moz-patch-stack/s0027.patch @@ -1194,7 +1194,7 @@ index c1181618e9..4a772795ed 100644 deps += [ "..:logging", diff --git a/test/BUILD.gn b/test/BUILD.gn -index 61c56738f6..63e956ba36 100644 +index c5d3791a2a..075db77d4e 100644 --- a/test/BUILD.gn +++ b/test/BUILD.gn @@ -258,6 +258,7 @@ rtc_library("audio_test_common") { @@ -1236,7 +1236,7 @@ index 61c56738f6..63e956ba36 100644 sources += [ "testsupport/jpeg_frame_writer.cc" ] } else { sources += [ "testsupport/jpeg_frame_writer_ios.cc" ] -@@ -1384,6 +1392,7 @@ if (!build_with_chromium) { +@@ -1385,6 +1393,7 @@ if (!build_with_chromium) { } } @@ -1244,7 +1244,7 @@ index 61c56738f6..63e956ba36 100644 if (!build_with_chromium && is_android) { rtc_android_library("native_test_java") { testonly = true -@@ -1426,6 +1435,7 @@ if (!build_with_chromium && is_android) { +@@ -1427,6 +1436,7 @@ if (!build_with_chromium && is_android) { sources = [ "android/org/webrtc/native_test/NativeTestWebrtc.java" ] } } @@ -1253,7 +1253,7 @@ index 61c56738f6..63e956ba36 100644 rtc_library("call_config_utils") { testonly = true diff --git a/video/BUILD.gn b/video/BUILD.gn -index af02a74467..b543f5933e 100644 +index f484d75dd9..1fc2c195bd 100644 --- a/video/BUILD.gn +++ b/video/BUILD.gn @@ -17,7 +17,7 @@ rtc_library("video_stream_encoder_interface") { diff --git a/third_party/libwebrtc/moz-patch-stack/s0099.patch b/third_party/libwebrtc/moz-patch-stack/s0099.patch @@ -86,7 +86,7 @@ index 7aa3c3f428..2ca0a36dbb 100644 if (!build_with_mozilla) { diff --git a/test/BUILD.gn b/test/BUILD.gn -index 63e956ba36..d0a57657f4 100644 +index 075db77d4e..a4d00f02e2 100644 --- a/test/BUILD.gn +++ b/test/BUILD.gn @@ -509,6 +509,12 @@ rtc_source_set("test_support") { diff --git a/third_party/libwebrtc/moz-patch-stack/s0103.patch b/third_party/libwebrtc/moz-patch-stack/s0103.patch @@ -756,7 +756,7 @@ index 8222263e1f..913382709e 100644 import("../webrtc.gni") diff --git a/test/BUILD.gn b/test/BUILD.gn -index d0a57657f4..9444b72b12 100644 +index a4d00f02e2..359e600bab 100644 --- a/test/BUILD.gn +++ b/test/BUILD.gn @@ -6,10 +6,10 @@ diff --git a/third_party/libwebrtc/test/BUILD.gn b/third_party/libwebrtc/test/BUILD.gn @@ -1323,6 +1323,7 @@ if (!build_with_chromium) { ] deps = [ + ":create_test_field_trials", ":direct_transport", ":encoder_settings", ":fake_video_codecs", @@ -1330,7 +1331,6 @@ if (!build_with_chromium) { ":frame_generator_capturer", ":mock_transport", ":run_loop", - ":scoped_key_value_config", ":test_flags", ":test_support", ":test_video_capturer", @@ -1340,6 +1340,7 @@ if (!build_with_chromium) { "../api:array_view", "../api:create_frame_generator", "../api:fec_controller_api", + "../api:field_trials", "../api:frame_generator_api", "../api:network_state_predictor_api", "../api:rtp_headers", diff --git a/third_party/libwebrtc/test/call_test.cc b/third_party/libwebrtc/test/call_test.cc @@ -58,6 +58,7 @@ #include "modules/rtp_rtcp/source/rtp_packet_received.h" #include "rtc_base/checks.h" #include "rtc_base/task_queue_for_test.h" +#include "test/create_test_field_trials.h" #include "test/encoder_settings.h" #include "test/fake_decoder.h" #include "test/fake_encoder.h" @@ -73,7 +74,7 @@ namespace webrtc { namespace test { CallTest::CallTest(absl::string_view field_trials) - : field_trials_(field_trials), + : field_trials_(CreateTestFieldTrials(field_trials)), env_(CreateEnvironment(&field_trials_)), send_env_(env_), recv_env_(env_), diff --git a/third_party/libwebrtc/test/call_test.h b/third_party/libwebrtc/test/call_test.h @@ -27,6 +27,7 @@ #include "api/call/transport.h" #include "api/environment/environment.h" #include "api/fec_controller.h" +#include "api/field_trials.h" #include "api/media_types.h" #include "api/network_state_predictor.h" #include "api/rtc_event_log/rtc_event_log.h" @@ -58,7 +59,6 @@ #include "test/gtest.h" #include "test/rtp_rtcp_observer.h" #include "test/run_loop.h" -#include "test/scoped_key_value_config.h" #include "test/test_video_capturer.h" #include "video/config/video_encoder_config.h" @@ -76,6 +76,7 @@ class CallTest : public ::testing::Test, public RtpPacketSinkInterface { protected: const Environment& env() const { return env_; } + FieldTrials& field_trials() { return field_trials_; } void SetSendEventLog(std::unique_ptr<RtcEventLog> event_log); void SetRecvEventLog(std::unique_ptr<RtcEventLog> event_log); @@ -215,7 +216,7 @@ class CallTest : public ::testing::Test, public RtpPacketSinkInterface { void OnRtpPacket(const RtpPacketReceived& packet) override; test::RunLoop loop_; - test::ScopedKeyValueConfig field_trials_; + FieldTrials field_trials_; Environment env_; Environment send_env_; Environment recv_env_; diff --git a/third_party/libwebrtc/video/BUILD.gn b/third_party/libwebrtc/video/BUILD.gn @@ -725,7 +725,6 @@ if (rtc_include_tests) { "../rtc_base:checks", "../rtc_base:logging", "../system_wrappers:field_trial", - "../test:field_trial", "../test:run_test", "../test:run_test_interface", "../test:test_common", @@ -769,7 +768,6 @@ if (rtc_include_tests) { "../rtc_base:logging", "../rtc_base:stringutils", "../system_wrappers:field_trial", - "../test:field_trial", "../test:run_test", "../test:run_test_interface", "../test:test_common", @@ -796,7 +794,6 @@ if (rtc_include_tests) { "../rtc_base:logging", "../rtc_base:stringutils", "../system_wrappers:field_trial", - "../test:field_trial", "../test:run_test", "../test:run_test_interface", "../test:test_common", @@ -889,6 +886,7 @@ if (rtc_include_tests) { "../api:fake_frame_decryptor", "../api:fake_frame_encryptor", "../api:fec_controller_api", + "../api:field_trials", "../api:field_trials_view", "../api:frame_generator_api", "../api:frame_transformer_interface", @@ -1028,7 +1026,6 @@ if (rtc_include_tests) { "../rtc_base/experiments:rate_control_settings", "../rtc_base/synchronization:mutex", "../system_wrappers", - "../system_wrappers:field_trial", "../system_wrappers:metrics", "../test:direct_transport", "../test:encoder_settings", diff --git a/third_party/libwebrtc/video/cpu_scaling_tests.cc b/third_party/libwebrtc/video/cpu_scaling_tests.cc @@ -20,7 +20,6 @@ #include "rtc_base/checks.h" #include "rtc_base/event.h" #include "test/call_test.h" -#include "test/field_trial.h" #include "test/frame_generator_capturer.h" #include "test/gtest.h" #include "test/video_test_constants.h" @@ -37,14 +36,11 @@ constexpr int kFps = 28; class CpuOveruseTest : public test::CallTest { protected: CpuOveruseTest() - : field_trials_("WebRTC-ForceSimulatedOveruseIntervalMs/1-60000-60000/") { - } + : CallTest("WebRTC-ForceSimulatedOveruseIntervalMs/1-60000-60000/") {} void RunTestAndCheckForAdaptation( const DegradationPreference& degradation_preference, bool expect_adaptation); - - test::ScopedFieldTrials field_trials_; }; void CpuOveruseTest::RunTestAndCheckForAdaptation( diff --git a/third_party/libwebrtc/video/end_to_end_tests/bandwidth_tests.cc b/third_party/libwebrtc/video/end_to_end_tests/bandwidth_tests.cc @@ -10,7 +10,6 @@ #include <cstdint> #include <memory> -#include <string> #include <vector> #include "api/array_view.h" @@ -37,10 +36,8 @@ #include "rtc_base/task_queue_for_test.h" #include "rtc_base/thread.h" #include "rtc_base/thread_annotations.h" -#include "system_wrappers/include/field_trial.h" #include "test/call_test.h" #include "test/fake_encoder.h" -#include "test/field_trial.h" #include "test/gtest.h" #include "test/rtcp_packet_parser.h" #include "test/rtp_rtcp_observer.h" @@ -327,9 +324,7 @@ TEST_F(BandwidthEndToEndTest, RembWithSendSideBwe) { TEST_F(BandwidthEndToEndTest, ReportsSetEncoderRates) { // If these fields trial are on, we get lower bitrates than expected by this // test, due to the packetization overhead and encoder pushback. - test::ScopedFieldTrials field_trials( - std::string(field_trial::GetFieldTrialString()) + - "WebRTC-VideoRateControl/bitrate_adjuster:false/"); + field_trials().Set("WebRTC-VideoRateControl", "bitrate_adjuster:false"); class EncoderRateStatsTest : public test::EndToEndTest, public test::FakeEncoder { public: diff --git a/third_party/libwebrtc/video/end_to_end_tests/codec_tests.cc b/third_party/libwebrtc/video/end_to_end_tests/codec_tests.cc @@ -32,7 +32,6 @@ #include "modules/video_coding/codecs/vp8/include/vp8.h" #include "modules/video_coding/codecs/vp9/include/vp9.h" #include "test/call_test.h" -#include "test/field_trial.h" #include "test/frame_generator_capturer.h" #include "test/gtest.h" #include "test/video_test_constants.h" @@ -216,13 +215,10 @@ TEST_F(CodecEndToEndTest, class EndToEndTestH264 : public test::CallTest, public ::testing::WithParamInterface<std::string> { public: - EndToEndTestH264() : field_trial_(GetParam()) { + EndToEndTestH264() : CallTest(/*field_trials=*/GetParam()) { RegisterRtpExtension(RtpExtension(RtpExtension::kVideoRotationUri, kVideoRotationExtensionId)); } - - private: - test::ScopedFieldTrials field_trial_; }; INSTANTIATE_TEST_SUITE_P( diff --git a/third_party/libwebrtc/video/end_to_end_tests/extended_reports_tests.cc b/third_party/libwebrtc/video/end_to_end_tests/extended_reports_tests.cc @@ -34,7 +34,6 @@ #include "test/gtest.h" #include "test/rtcp_packet_parser.h" #include "test/rtp_rtcp_observer.h" -#include "test/scoped_key_value_config.h" #include "test/video_test_constants.h" #include "video/config/video_encoder_config.h" @@ -244,8 +243,7 @@ TEST_F(ExtendedReportsEndToEndTest, TEST_F(ExtendedReportsEndToEndTest, TestExtendedReportsWithoutRrtrWithTargetBitrateExplicitlySet) { - test::ScopedKeyValueConfig field_trials( - field_trials_, "WebRTC-Target-Bitrate-Rtcp/Enabled/"); + field_trials().Set("WebRTC-Target-Bitrate-Rtcp", "Enabled"); RtcpXrObserver test(/*enable_rrtr=*/false, /*expect_target_bitrate=*/true, /*enable_zero_target_bitrate=*/false, VideoEncoderConfig::ContentType::kRealtimeVideo); diff --git a/third_party/libwebrtc/video/end_to_end_tests/resolution_bitrate_limits_tests.cc b/third_party/libwebrtc/video/end_to_end_tests/resolution_bitrate_limits_tests.cc @@ -30,7 +30,6 @@ #include "rtc_base/experiments/encoder_info_settings.h" #include "test/call_test.h" #include "test/fake_encoder.h" -#include "test/field_trial.h" #include "test/frame_generator_capturer.h" #include "test/gtest.h" #include "test/video_encoder_proxy_factory.h" @@ -228,12 +227,11 @@ class InitEncodeTest : public test::EndToEndTest, }; TEST_P(ResolutionBitrateLimitsTest, LimitsApplied) { - test::ScopedFieldTrials field_trials( - "WebRTC-GetEncoderInfoOverride/" - "frame_size_pixels:921600," - "min_start_bitrate_bps:0," - "min_bitrate_bps:32000," - "max_bitrate_bps:3333000/"); + field_trials().Set("WebRTC-GetEncoderInfoOverride", + "frame_size_pixels:921600," + "min_start_bitrate_bps:0," + "min_bitrate_bps:32000," + "max_bitrate_bps:3333000"); InitEncodeTest test(env(), payload_name_, {{.active = true}}, // Expectations: @@ -272,12 +270,11 @@ TEST_F(ResolutionBitrateLimitsWithScalabilityModeTest, } TEST_F(ResolutionBitrateLimitsWithScalabilityModeTest, OneStreamLimitsAppliedForOneSpatialLayer) { - test::ScopedFieldTrials field_trials( - "WebRTC-GetEncoderInfoOverride/" - "frame_size_pixels:921600," - "min_start_bitrate_bps:0," - "min_bitrate_bps:32000," - "max_bitrate_bps:3333000/"); + field_trials().Set("WebRTC-GetEncoderInfoOverride", + "frame_size_pixels:921600," + "min_start_bitrate_bps:0," + "min_bitrate_bps:32000," + "max_bitrate_bps:3333000"); InitEncodeTest test( env(), "VP9", @@ -291,12 +288,11 @@ TEST_F(ResolutionBitrateLimitsWithScalabilityModeTest, TEST_F(ResolutionBitrateLimitsWithScalabilityModeTest, OneStreamLimitsNotAppliedForMultipleSpatialLayers) { - test::ScopedFieldTrials field_trials( - "WebRTC-GetEncoderInfoOverride/" - "frame_size_pixels:230400|921600," - "min_start_bitrate_bps:0|0," - "min_bitrate_bps:21000|32000," - "max_bitrate_bps:2222000|3333000/"); + field_trials().Set("WebRTC-GetEncoderInfoOverride", + "frame_size_pixels:230400|921600," + "min_start_bitrate_bps:0|0," + "min_bitrate_bps:21000|32000," + "max_bitrate_bps:2222000|3333000"); InitEncodeTest test( env(), "VP9", @@ -324,12 +320,11 @@ TEST_P(ResolutionBitrateLimitsTest, EncodingsApplied) { } TEST_P(ResolutionBitrateLimitsTest, IntersectionApplied) { - test::ScopedFieldTrials field_trials( - "WebRTC-GetEncoderInfoOverride/" - "frame_size_pixels:921600," - "min_start_bitrate_bps:0," - "min_bitrate_bps:32000," - "max_bitrate_bps:3333000/"); + field_trials().Set("WebRTC-GetEncoderInfoOverride", + "frame_size_pixels:921600," + "min_start_bitrate_bps:0," + "min_bitrate_bps:32000," + "max_bitrate_bps:3333000"); InitEncodeTest test(env(), payload_name_, {{.active = true, @@ -343,12 +338,11 @@ TEST_P(ResolutionBitrateLimitsTest, IntersectionApplied) { } TEST_P(ResolutionBitrateLimitsTest, LimitsAppliedMiddleActive) { - test::ScopedFieldTrials field_trials( - "WebRTC-GetEncoderInfoOverride/" - "frame_size_pixels:230400|921600," - "min_start_bitrate_bps:0|0," - "min_bitrate_bps:21000|32000," - "max_bitrate_bps:2222000|3333000/"); + field_trials().Set("WebRTC-GetEncoderInfoOverride", + "frame_size_pixels:230400|921600," + "min_start_bitrate_bps:0|0," + "min_bitrate_bps:21000|32000," + "max_bitrate_bps:2222000|3333000"); InitEncodeTest test(env(), payload_name_, {{.active = false}, {.active = true}, {.active = false}}, @@ -360,12 +354,11 @@ TEST_P(ResolutionBitrateLimitsTest, LimitsAppliedMiddleActive) { } TEST_P(ResolutionBitrateLimitsTest, EncodingMinMaxBitrateAppliedMiddleActive) { - test::ScopedFieldTrials field_trials( - "WebRTC-GetEncoderInfoOverride/" - "frame_size_pixels:230400|921600," - "min_start_bitrate_bps:0|0," - "min_bitrate_bps:31000|32000," - "max_bitrate_bps:1111000|3333000/"); + field_trials().Set("WebRTC-GetEncoderInfoOverride", + "frame_size_pixels:230400|921600," + "min_start_bitrate_bps:0|0," + "min_bitrate_bps:31000|32000," + "max_bitrate_bps:1111000|3333000"); InitEncodeTest test(env(), payload_name_, {{.active = false, @@ -383,12 +376,11 @@ TEST_P(ResolutionBitrateLimitsTest, EncodingMinMaxBitrateAppliedMiddleActive) { } TEST_P(ResolutionBitrateLimitsTest, MinBitrateNotAboveEncodingMax) { - test::ScopedFieldTrials field_trials( - "WebRTC-GetEncoderInfoOverride/" - "frame_size_pixels:230400|921600," - "min_start_bitrate_bps:0|0," - "min_bitrate_bps:31000|32000," - "max_bitrate_bps:1111000|3333000/"); + field_trials().Set("WebRTC-GetEncoderInfoOverride", + "frame_size_pixels:230400|921600," + "min_start_bitrate_bps:0|0," + "min_bitrate_bps:31000|32000," + "max_bitrate_bps:1111000|3333000"); InitEncodeTest test( env(), payload_name_, @@ -404,12 +396,11 @@ TEST_P(ResolutionBitrateLimitsTest, MinBitrateNotAboveEncodingMax) { } TEST_P(ResolutionBitrateLimitsTest, MaxBitrateNotBelowEncodingMin) { - test::ScopedFieldTrials field_trials( - "WebRTC-GetEncoderInfoOverride/" - "frame_size_pixels:230400|921600," - "min_start_bitrate_bps:0|0," - "min_bitrate_bps:21000|22000," - "max_bitrate_bps:31000|32000/"); + field_trials().Set("WebRTC-GetEncoderInfoOverride", + "frame_size_pixels:230400|921600," + "min_start_bitrate_bps:0|0," + "min_bitrate_bps:21000|22000," + "max_bitrate_bps:31000|32000"); InitEncodeTest test( env(), payload_name_, @@ -464,12 +455,11 @@ TEST_F(ResolutionBitrateLimitsWithScalabilityModeTest, } TEST_P(ResolutionBitrateLimitsTest, LimitsAppliedHighestActive) { - test::ScopedFieldTrials field_trials( - "WebRTC-GetEncoderInfoOverride/" - "frame_size_pixels:230400|921600," - "min_start_bitrate_bps:0|0," - "min_bitrate_bps:31000|32000," - "max_bitrate_bps:2222000|3333000/"); + field_trials().Set("WebRTC-GetEncoderInfoOverride", + "frame_size_pixels:230400|921600," + "min_start_bitrate_bps:0|0," + "min_bitrate_bps:31000|32000," + "max_bitrate_bps:2222000|3333000"); InitEncodeTest test(env(), payload_name_, {{.active = false}, {.active = false}, {.active = true}}, @@ -481,12 +471,11 @@ TEST_P(ResolutionBitrateLimitsTest, LimitsAppliedHighestActive) { } TEST_P(ResolutionBitrateLimitsTest, EncodingMinMaxBitrateAppliedHighestActive) { - test::ScopedFieldTrials field_trials( - "WebRTC-GetEncoderInfoOverride/" - "frame_size_pixels:230400|921600," - "min_start_bitrate_bps:0|0," - "min_bitrate_bps:31000|32000," - "max_bitrate_bps:555000|1111000/"); + field_trials().Set("WebRTC-GetEncoderInfoOverride", + "frame_size_pixels:230400|921600," + "min_start_bitrate_bps:0|0," + "min_bitrate_bps:31000|32000," + "max_bitrate_bps:555000|1111000"); InitEncodeTest test(env(), payload_name_, {{.active = false, @@ -506,12 +495,11 @@ TEST_P(ResolutionBitrateLimitsTest, EncodingMinMaxBitrateAppliedHighestActive) { } TEST_P(ResolutionBitrateLimitsTest, LimitsNotAppliedLowestActive) { - test::ScopedFieldTrials field_trials( - "WebRTC-GetEncoderInfoOverride/" - "frame_size_pixels:230400|921600," - "min_start_bitrate_bps:0|0," - "min_bitrate_bps:31000|32000," - "max_bitrate_bps:2222000|3333000/"); + field_trials().Set("WebRTC-GetEncoderInfoOverride", + "frame_size_pixels:230400|921600," + "min_start_bitrate_bps:0|0," + "min_bitrate_bps:31000|32000," + "max_bitrate_bps:2222000|3333000"); InitEncodeTest test(env(), payload_name_, {{.active = true}, {.active = false}}, @@ -527,12 +515,11 @@ TEST_P(ResolutionBitrateLimitsTest, LimitsNotAppliedLowestActive) { TEST_F(ResolutionBitrateLimitsWithScalabilityModeTest, LimitsAppliedForVp9OneSpatialLayer) { - test::ScopedFieldTrials field_trials( - "WebRTC-GetEncoderInfoOverride/" - "frame_size_pixels:230400|921600," - "min_start_bitrate_bps:0|0," - "min_bitrate_bps:31000|32000," - "max_bitrate_bps:2222000|3333000/"); + field_trials().Set("WebRTC-GetEncoderInfoOverride", + "frame_size_pixels:230400|921600," + "min_start_bitrate_bps:0|0," + "min_bitrate_bps:31000|32000," + "max_bitrate_bps:2222000|3333000"); InitEncodeTest test( env(), "VP9", @@ -547,12 +534,11 @@ TEST_F(ResolutionBitrateLimitsWithScalabilityModeTest, TEST_F(ResolutionBitrateLimitsWithScalabilityModeTest, LimitsNotAppliedForVp9MultipleSpatialLayers) { - test::ScopedFieldTrials field_trials( - "WebRTC-GetEncoderInfoOverride/" - "frame_size_pixels:230400|921600," - "min_start_bitrate_bps:0|0," - "min_bitrate_bps:31000|32000," - "max_bitrate_bps:2222000|3333000/"); + field_trials().Set("WebRTC-GetEncoderInfoOverride", + "frame_size_pixels:230400|921600," + "min_start_bitrate_bps:0|0," + "min_bitrate_bps:31000|32000," + "max_bitrate_bps:2222000|3333000"); InitEncodeTest test( env(), "VP9", @@ -570,12 +556,11 @@ TEST_F(ResolutionBitrateLimitsWithScalabilityModeTest, TEST_F(ResolutionBitrateLimitsWithScalabilityModeTest, OneStreamLimitsAppliedForAv1OneSpatialLayer) { - test::ScopedFieldTrials field_trials( - "WebRTC-GetEncoderInfoOverride/" - "frame_size_pixels:921600," - "min_start_bitrate_bps:0," - "min_bitrate_bps:32000," - "max_bitrate_bps:133000/"); + field_trials().Set("WebRTC-GetEncoderInfoOverride", + "frame_size_pixels:921600," + "min_start_bitrate_bps:0," + "min_bitrate_bps:32000," + "max_bitrate_bps:133000"); InitEncodeTest test( env(), "AV1", @@ -589,12 +574,11 @@ TEST_F(ResolutionBitrateLimitsWithScalabilityModeTest, TEST_F(ResolutionBitrateLimitsWithScalabilityModeTest, LimitsAppliedForAv1SingleSpatialLayer) { - test::ScopedFieldTrials field_trials( - "WebRTC-GetEncoderInfoOverride/" - "frame_size_pixels:230400|921600," - "min_start_bitrate_bps:0|0," - "min_bitrate_bps:25000|80000," - "max_bitrate_bps:400000|1200000/"); + field_trials().Set("WebRTC-GetEncoderInfoOverride", + "frame_size_pixels:230400|921600," + "min_start_bitrate_bps:0|0," + "min_bitrate_bps:25000|80000," + "max_bitrate_bps:400000|1200000"); InitEncodeTest test( env(), "AV1", @@ -609,12 +593,11 @@ TEST_F(ResolutionBitrateLimitsWithScalabilityModeTest, TEST_F(ResolutionBitrateLimitsWithScalabilityModeTest, EncodingMinMaxBitrateAppliedForAv1SingleSpatialLayer) { - test::ScopedFieldTrials field_trials( - "WebRTC-GetEncoderInfoOverride/" - "frame_size_pixels:921600," - "min_start_bitrate_bps:0," - "min_bitrate_bps:32000," - "max_bitrate_bps:99000/"); + field_trials().Set("WebRTC-GetEncoderInfoOverride", + "frame_size_pixels:921600," + "min_start_bitrate_bps:0," + "min_bitrate_bps:32000," + "max_bitrate_bps:99000"); InitEncodeTest test(env(), "AV1", {{.active = true, @@ -631,12 +614,11 @@ TEST_F(ResolutionBitrateLimitsWithScalabilityModeTest, TEST_F(ResolutionBitrateLimitsWithScalabilityModeTest, LimitsNotAppliedForAv1MultipleSpatialLayers) { - test::ScopedFieldTrials field_trials( - "WebRTC-GetEncoderInfoOverride/" - "frame_size_pixels:230400|921600," - "min_start_bitrate_bps:0|0," - "min_bitrate_bps:20000|25000," - "max_bitrate_bps:900000|1333000/"); + field_trials().Set("WebRTC-GetEncoderInfoOverride", + "frame_size_pixels:230400|921600," + "min_start_bitrate_bps:0|0," + "min_bitrate_bps:20000|25000," + "max_bitrate_bps:900000|1333000"); InitEncodeTest test( env(), "AV1", @@ -653,12 +635,11 @@ TEST_F(ResolutionBitrateLimitsWithScalabilityModeTest, } TEST_P(ResolutionBitrateLimitsTest, LimitsNotAppliedSimulcast) { - test::ScopedFieldTrials field_trials( - "WebRTC-GetEncoderInfoOverride/" - "frame_size_pixels:230400|921600," - "min_start_bitrate_bps:0|0," - "min_bitrate_bps:31000|32000," - "max_bitrate_bps:2222000|3333000/"); + field_trials().Set("WebRTC-GetEncoderInfoOverride", + "frame_size_pixels:230400|921600," + "min_start_bitrate_bps:0|0," + "min_bitrate_bps:31000|32000," + "max_bitrate_bps:2222000|3333000"); InitEncodeTest test(env(), payload_name_, {{.active = true}, {.active = true}}, diff --git a/third_party/libwebrtc/video/end_to_end_tests/transport_feedback_tests.cc b/third_party/libwebrtc/video/end_to_end_tests/transport_feedback_tests.cc @@ -40,7 +40,6 @@ #include "test/call_test.h" #include "test/direct_transport.h" #include "test/fake_videorenderer.h" -#include "test/field_trial.h" #include "test/frame_generator_capturer.h" #include "test/gtest.h" #include "test/network/simulated_network.h" @@ -342,8 +341,7 @@ TEST_F(TransportFeedbackEndToEndTest, AudioVideoReceivesTransportFeedback) { TEST_F(TransportFeedbackEndToEndTest, StopsAndResumesMediaWhenCongestionWindowFull) { - test::ScopedFieldTrials override_field_trials( - "WebRTC-CongestionWindow/QueueSize:250/"); + field_trials().Set("WebRTC-CongestionWindow", "QueueSize:250"); class TransportFeedbackTester : public test::EndToEndTest { public: diff --git a/third_party/libwebrtc/video/quality_scaling_tests.cc b/third_party/libwebrtc/video/quality_scaling_tests.cc @@ -39,11 +39,11 @@ #include "modules/video_coding/codecs/vp9/include/vp9.h" #include "rtc_base/checks.h" #include "rtc_base/experiments/encoder_info_settings.h" +#include "rtc_base/strings/string_builder.h" #include "test/call_test.h" #include "test/frame_generator_capturer.h" #include "test/gtest.h" #include "test/rtp_rtcp_observer.h" -#include "test/scoped_key_value_config.h" #include "test/video_test_constants.h" #include "video/config/video_encoder_config.h" @@ -78,8 +78,23 @@ void SetEncoderSpecific(VideoEncoderConfig* encoder_config, class QualityScalingTest : public test::CallTest { protected: - const std::string kPrefix = "WebRTC-Video-QualityScaling/Enabled-"; - const std::string kEnd = ",0,0,0.9995,0.9999,1/"; + struct QualityScalingParams { + int vp8_low = 0; + int vp8_high = 0; + int vp9_low = 0; + int vp9_high = 0; + int h264_low = 0; + int h264_high = 0; + }; + void SetQualityScalingTrialQP(QualityScalingParams p) { + StringBuilder sb; + sb << "Enabled-" << p.vp8_low << "," << p.vp8_high // + << "," << p.vp9_low << "," << p.vp9_high // + << "," << p.h264_low << "," << p.h264_high // + << ",0,0,0.9995,0.9999,1"; + field_trials().Set("WebRTC-Video-QualityScaling", sb.str()); + } + const std::optional<VideoEncoder::ResolutionBitrateLimits> kSinglecastLimits720pVp8 = EncoderInfoSettings::GetDefaultSinglecastBitrateLimitsForResolution( @@ -264,8 +279,7 @@ class UpscalingObserver TEST_F(QualityScalingTest, AdaptsDownForHighQp_Vp8) { // qp_low:1, qp_high:1 -> kHighQp - test::ScopedKeyValueConfig field_trials(field_trials_, - kPrefix + "1,1,0,0,0,0" + kEnd); + SetQualityScalingTrialQP({.vp8_low = 1, .vp8_high = 1}); DownscalingObserver test("VP8", {{.active = true}}, kHighStartBps, /*automatic_resize=*/true, @@ -275,8 +289,7 @@ TEST_F(QualityScalingTest, AdaptsDownForHighQp_Vp8) { TEST_F(QualityScalingTest, NoAdaptDownForHighQpIfScalingOff_Vp8) { // qp_low:1, qp_high:1 -> kHighQp - test::ScopedKeyValueConfig field_trials(field_trials_, - kPrefix + "1,1,0,0,0,0" + kEnd); + SetQualityScalingTrialQP({.vp8_low = 1, .vp8_high = 1}); DownscalingObserver test("VP8", {{.active = true}}, kHighStartBps, /*automatic_resize=*/false, @@ -286,8 +299,7 @@ TEST_F(QualityScalingTest, NoAdaptDownForHighQpIfScalingOff_Vp8) { TEST_F(QualityScalingTest, NoAdaptDownForNormalQp_Vp8) { // qp_low:1, qp_high:127 -> kNormalQp - test::ScopedKeyValueConfig field_trials(field_trials_, - kPrefix + "1,127,0,0,0,0" + kEnd); + SetQualityScalingTrialQP({.vp8_low = 1, .vp8_high = 127}); DownscalingObserver test("VP8", {{.active = true}}, kHighStartBps, /*automatic_resize=*/true, @@ -297,8 +309,7 @@ TEST_F(QualityScalingTest, NoAdaptDownForNormalQp_Vp8) { TEST_F(QualityScalingTest, AdaptsDownForLowStartBitrate_Vp8) { // qp_low:1, qp_high:127 -> kNormalQp - test::ScopedKeyValueConfig field_trials(field_trials_, - kPrefix + "1,127,0,0,0,0" + kEnd); + SetQualityScalingTrialQP({.vp8_low = 1, .vp8_high = 127}); DownscalingObserver test("VP8", {{.active = true}}, kLowStartBps, /*automatic_resize=*/true, @@ -308,11 +319,10 @@ TEST_F(QualityScalingTest, AdaptsDownForLowStartBitrate_Vp8) { TEST_F(QualityScalingTest, AdaptsDownForLowStartBitrateAndThenUp) { // qp_low:127, qp_high:127 -> kLowQp - test::ScopedKeyValueConfig field_trials( - field_trials_, - kPrefix + "127,127,0,0,0,0" + kEnd + - "WebRTC-Video-BalancedDegradationSettings/" - "pixels:230400|921600,fps:20|30,kbps:300|500/"); // should not affect + SetQualityScalingTrialQP({.vp8_low = 127, .vp8_high = 127}); + field_trials().Set( + "WebRTC-Video-BalancedDegradationSettings", + "pixels:230400|921600,fps:20|30,kbps:300|500"); // should not affect UpscalingObserver test("VP8", {{.active = true}}, kDefaultVgaMinStartBps - 1, /*automatic_resize=*/true, /*expect_upscale=*/true); @@ -321,10 +331,9 @@ TEST_F(QualityScalingTest, AdaptsDownForLowStartBitrateAndThenUp) { TEST_F(QualityScalingTest, AdaptsDownAndThenUpWithBalanced) { // qp_low:127, qp_high:127 -> kLowQp - test::ScopedKeyValueConfig field_trials( - field_trials_, kPrefix + "127,127,0,0,0,0" + kEnd + - "WebRTC-Video-BalancedDegradationSettings/" - "pixels:230400|921600,fps:20|30,kbps:300|499/"); + SetQualityScalingTrialQP({.vp8_low = 127, .vp8_high = 127}); + field_trials().Set("WebRTC-Video-BalancedDegradationSettings", + "pixels:230400|921600,fps:20|30,kbps:300|499"); UpscalingObserver test("VP8", {{.active = true}}, kDefaultVgaMinStartBps - 1, /*automatic_resize=*/true, /*expect_upscale=*/true); @@ -334,10 +343,9 @@ TEST_F(QualityScalingTest, AdaptsDownAndThenUpWithBalanced) { TEST_F(QualityScalingTest, AdaptsDownButNotUpWithBalancedIfBitrateNotEnough) { // qp_low:127, qp_high:127 -> kLowQp - test::ScopedKeyValueConfig field_trials( - field_trials_, kPrefix + "127,127,0,0,0,0" + kEnd + - "WebRTC-Video-BalancedDegradationSettings/" - "pixels:230400|921600,fps:20|30,kbps:300|500/"); + SetQualityScalingTrialQP({.vp8_low = 127, .vp8_high = 127}); + field_trials().Set("WebRTC-Video-BalancedDegradationSettings", + "pixels:230400|921600,fps:20|30,kbps:300|500"); UpscalingObserver test("VP8", {{.active = true}}, kDefaultVgaMinStartBps - 1, /*automatic_resize=*/true, /*expect_upscale=*/false); @@ -347,8 +355,7 @@ TEST_F(QualityScalingTest, AdaptsDownButNotUpWithBalancedIfBitrateNotEnough) { TEST_F(QualityScalingTest, NoAdaptDownForLowStartBitrate_Simulcast) { // qp_low:1, qp_high:127 -> kNormalQp - test::ScopedKeyValueConfig field_trials(field_trials_, - kPrefix + "1,127,0,0,0,0" + kEnd); + SetQualityScalingTrialQP({.vp8_low = 1, .vp8_high = 127}); DownscalingObserver test("VP8", {{.active = true}, {.active = true}}, kLowStartBps, @@ -359,8 +366,7 @@ TEST_F(QualityScalingTest, NoAdaptDownForLowStartBitrate_Simulcast) { TEST_F(QualityScalingTest, AdaptsDownForHighQp_HighestStreamActive_Vp8) { // qp_low:1, qp_high:1 -> kHighQp - test::ScopedKeyValueConfig field_trials(field_trials_, - kPrefix + "1,1,0,0,0,0" + kEnd); + SetQualityScalingTrialQP({.vp8_low = 1, .vp8_high = 1}); DownscalingObserver test( "VP8", {{.active = false}, {.active = false}, {.active = true}}, @@ -373,8 +379,7 @@ TEST_F(QualityScalingTest, AdaptsDownForHighQp_HighestStreamActive_Vp8) { TEST_F(QualityScalingTest, AdaptsDownForLowStartBitrate_HighestStreamActive_Vp8) { // qp_low:1, qp_high:127 -> kNormalQp - test::ScopedKeyValueConfig field_trials(field_trials_, - kPrefix + "1,127,0,0,0,0" + kEnd); + SetQualityScalingTrialQP({.vp8_low = 1, .vp8_high = 127}); DownscalingObserver test( "VP8", {{.active = false}, {.active = false}, {.active = true}}, @@ -386,8 +391,7 @@ TEST_F(QualityScalingTest, TEST_F(QualityScalingTest, AdaptsDownButNotUpWithMinStartBitrateLimit) { // qp_low:127, qp_high:127 -> kLowQp - test::ScopedKeyValueConfig field_trials(field_trials_, - kPrefix + "127,127,0,0,0,0" + kEnd); + SetQualityScalingTrialQP({.vp8_low = 127, .vp8_high = 127}); UpscalingObserver test("VP8", {{.active = false}, {.active = true}}, kSinglecastLimits720pVp8->min_start_bitrate_bps - 1, @@ -397,8 +401,7 @@ TEST_F(QualityScalingTest, AdaptsDownButNotUpWithMinStartBitrateLimit) { TEST_F(QualityScalingTest, NoAdaptDownForLowStartBitrateIfBitrateEnough_Vp8) { // qp_low:1, qp_high:127 -> kNormalQp - test::ScopedKeyValueConfig field_trials(field_trials_, - kPrefix + "1,127,0,0,0,0" + kEnd); + SetQualityScalingTrialQP({.vp8_low = 1, .vp8_high = 127}); DownscalingObserver test( "VP8", {{.active = false}, {.active = false}, {.active = true}}, @@ -411,9 +414,8 @@ TEST_F(QualityScalingTest, NoAdaptDownForLowStartBitrateIfBitrateEnough_Vp8) { TEST_F(QualityScalingTest, NoAdaptDownForLowStartBitrateIfDefaultLimitsDisabled_Vp8) { // qp_low:1, qp_high:127 -> kNormalQp - test::ScopedKeyValueConfig field_trials( - field_trials_, kPrefix + "1,127,0,0,0,0" + kEnd + - "WebRTC-DefaultBitrateLimitsKillSwitch/Enabled/"); + SetQualityScalingTrialQP({.vp8_low = 1, .vp8_high = 127}); + field_trials().Set("WebRTC-DefaultBitrateLimitsKillSwitch", "Enabled"); DownscalingObserver test( "VP8", {{.active = false}, {.active = false}, {.active = true}}, @@ -426,8 +428,7 @@ TEST_F(QualityScalingTest, TEST_F(QualityScalingTest, NoAdaptDownForLowStartBitrate_OneStreamSinglecastLimitsNotUsed_Vp8) { // qp_low:1, qp_high:127 -> kNormalQp - test::ScopedKeyValueConfig field_trials(field_trials_, - kPrefix + "1,127,0,0,0,0" + kEnd); + SetQualityScalingTrialQP({.vp8_low = 1, .vp8_high = 127}); DownscalingObserver test("VP8", {{.active = true}}, kSinglecastLimits720pVp8->min_start_bitrate_bps - 1, @@ -438,8 +439,7 @@ TEST_F(QualityScalingTest, TEST_F(QualityScalingTest, NoAdaptDownForHighQp_LowestStreamActive_Vp8) { // qp_low:1, qp_high:1 -> kHighQp - test::ScopedKeyValueConfig field_trials(field_trials_, - kPrefix + "1,1,0,0,0,0" + kEnd); + SetQualityScalingTrialQP({.vp8_low = 1, .vp8_high = 1}); DownscalingObserver test( "VP8", {{.active = true}, {.active = false}, {.active = false}}, @@ -452,8 +452,7 @@ TEST_F(QualityScalingTest, NoAdaptDownForHighQp_LowestStreamActive_Vp8) { TEST_F(QualityScalingTest, NoAdaptDownForLowStartBitrate_LowestStreamActive_Vp8) { // qp_low:1, qp_high:127 -> kNormalQp - test::ScopedKeyValueConfig field_trials(field_trials_, - kPrefix + "1,127,0,0,0,0" + kEnd); + SetQualityScalingTrialQP({.vp8_low = 1, .vp8_high = 127}); DownscalingObserver test( "VP8", {{.active = true}, {.active = false}, {.active = false}}, @@ -465,8 +464,7 @@ TEST_F(QualityScalingTest, TEST_F(QualityScalingTest, NoAdaptDownForLowStartBitrateIfScalingOff_Vp8) { // qp_low:1, qp_high:127 -> kNormalQp - test::ScopedKeyValueConfig field_trials(field_trials_, - kPrefix + "1,127,0,0,0,0" + kEnd); + SetQualityScalingTrialQP({.vp8_low = 1, .vp8_high = 127}); DownscalingObserver test("VP8", {{.active = true}}, kLowStartBps, /*automatic_resize=*/false, @@ -476,8 +474,7 @@ TEST_F(QualityScalingTest, NoAdaptDownForLowStartBitrateIfScalingOff_Vp8) { TEST_F(QualityScalingTest, AdaptsDownForHighQp_Vp9) { // qp_low:1, qp_high:1 -> kHighQp - test::ScopedKeyValueConfig field_trials(field_trials_, - kPrefix + "0,0,1,1,0,0" + kEnd); + SetQualityScalingTrialQP({.vp9_low = 1, .vp9_high = 1}); DownscalingObserver test("VP9", {{.active = true}}, kHighStartBps, /*automatic_resize=*/true, @@ -487,9 +484,8 @@ TEST_F(QualityScalingTest, AdaptsDownForHighQp_Vp9) { TEST_F(QualityScalingTest, NoAdaptDownForHighQpIfScalingOff_Vp9) { // qp_low:1, qp_high:1 -> kHighQp - test::ScopedKeyValueConfig field_trials( - field_trials_, - kPrefix + "0,0,1,1,0,0" + kEnd + "WebRTC-VP9QualityScaler/Disabled/"); + SetQualityScalingTrialQP({.vp9_low = 1, .vp9_high = 1}); + field_trials().Set("WebRTC-VP9QualityScaler", "Disabled"); DownscalingObserver test("VP9", {{.active = true}}, kHighStartBps, /*automatic_resize=*/true, @@ -499,8 +495,7 @@ TEST_F(QualityScalingTest, NoAdaptDownForHighQpIfScalingOff_Vp9) { TEST_F(QualityScalingTest, AdaptsDownForLowStartBitrate_Vp9) { // qp_low:1, qp_high:255 -> kNormalQp - test::ScopedKeyValueConfig field_trials(field_trials_, - kPrefix + "0,0,1,255,0,0" + kEnd); + SetQualityScalingTrialQP({.vp9_low = 1, .vp9_high = 255}); DownscalingObserver test("VP9", {{.active = true}}, kLowStartBps, /*automatic_resize=*/true, @@ -519,8 +514,7 @@ TEST_F(QualityScalingTest, NoAdaptDownForHighStartBitrate_Vp9) { TEST_F(QualityScalingTest, NoAdaptDownForHighQp_LowestStreamActive_Vp9) { // qp_low:1, qp_high:1 -> kHighQp - test::ScopedKeyValueConfig field_trials(field_trials_, - kPrefix + "0,0,1,1,0,0" + kEnd); + SetQualityScalingTrialQP({.vp9_low = 1, .vp9_high = 1}); DownscalingObserver test( "VP9", {{.active = true}, {.active = false}, {.active = false}}, @@ -533,8 +527,7 @@ TEST_F(QualityScalingTest, NoAdaptDownForHighQp_LowestStreamActive_Vp9) { TEST_F(QualityScalingTest, NoAdaptDownForLowStartBitrate_LowestStreamActive_Vp9) { // qp_low:1, qp_high:255 -> kNormalQp - test::ScopedKeyValueConfig field_trials(field_trials_, - kPrefix + "0,0,1,255,0,0" + kEnd); + SetQualityScalingTrialQP({.vp9_low = 1, .vp9_high = 255}); DownscalingObserver test( "VP9", {{.active = true}, {.active = false}, {.active = false}}, @@ -546,8 +539,7 @@ TEST_F(QualityScalingTest, TEST_F(QualityScalingTest, AdaptsDownForHighQp_MiddleStreamActive_Vp9) { // qp_low:1, qp_high:1 -> kHighQp - test::ScopedKeyValueConfig field_trials(field_trials_, - kPrefix + "0,0,1,1,0,0" + kEnd); + SetQualityScalingTrialQP({.vp9_low = 1, .vp9_high = 1}); DownscalingObserver test( "VP9", {{.active = false}, {.active = true}, {.active = false}}, @@ -560,8 +552,7 @@ TEST_F(QualityScalingTest, AdaptsDownForHighQp_MiddleStreamActive_Vp9) { TEST_F(QualityScalingTest, AdaptsDownForLowStartBitrate_MiddleStreamActive_Vp9) { // qp_low:1, qp_high:255 -> kNormalQp - test::ScopedKeyValueConfig field_trials(field_trials_, - kPrefix + "0,0,1,255,0,0" + kEnd); + SetQualityScalingTrialQP({.vp9_low = 1, .vp9_high = 255}); DownscalingObserver test( "VP9", {{.active = false}, {.active = true}, {.active = false}}, @@ -573,8 +564,7 @@ TEST_F(QualityScalingTest, TEST_F(QualityScalingTest, NoAdaptDownForLowStartBitrateIfBitrateEnough_Vp9) { // qp_low:1, qp_high:255 -> kNormalQp - test::ScopedKeyValueConfig field_trials(field_trials_, - kPrefix + "0,0,1,255,0,0" + kEnd); + SetQualityScalingTrialQP({.vp9_low = 1, .vp9_high = 255}); DownscalingObserver test( "VP9", {{.active = false}, {.active = true}, {.active = false}}, @@ -587,8 +577,7 @@ TEST_F(QualityScalingTest, NoAdaptDownForLowStartBitrateIfBitrateEnough_Vp9) { TEST_F(QualityScalingTest, AdaptsDownButNotUpWithMinStartBitrateLimitWithScalabilityMode_VP9) { // qp_low:255, qp_high:255 -> kLowQp - test::ScopedKeyValueConfig field_trials(field_trials_, - kPrefix + "0,0,255,255,0,0" + kEnd); + SetQualityScalingTrialQP({.vp9_low = 255, .vp9_high = 255}); UpscalingObserver test( "VP9", @@ -602,8 +591,7 @@ TEST_F(QualityScalingTest, TEST_F(QualityScalingTest, NoAdaptDownForLowStartBitrateIfBitrateEnoughWithScalabilityMode_Vp9) { // qp_low:1, qp_high:255 -> kNormalQp - test::ScopedKeyValueConfig field_trials(field_trials_, - kPrefix + "0,0,1,255,0,0" + kEnd); + SetQualityScalingTrialQP({.vp9_low = 1, .vp9_high = 255}); DownscalingObserver test( "VP9", @@ -619,8 +607,7 @@ TEST_F(QualityScalingTest, #if defined(WEBRTC_USE_H264) TEST_F(QualityScalingTest, AdaptsDownForHighQp_H264) { // qp_low:1, qp_high:1 -> kHighQp - test::ScopedKeyValueConfig field_trials(field_trials_, - kPrefix + "0,0,0,0,1,1" + kEnd); + SetQualityScalingTrialQP({.h264_low = 1, .h264_high = 1}); DownscalingObserver test("H264", {{.active = true}}, kHighStartBps, /*automatic_resize=*/true, @@ -630,8 +617,7 @@ TEST_F(QualityScalingTest, AdaptsDownForHighQp_H264) { TEST_F(QualityScalingTest, AdaptsDownForLowStartBitrate_H264) { // qp_low:1, qp_high:51 -> kNormalQp - test::ScopedKeyValueConfig field_trials(field_trials_, - kPrefix + "0,0,0,0,1,51" + kEnd); + SetQualityScalingTrialQP({.h264_low = 1, .h264_high = 51}); DownscalingObserver test("H264", {{.active = true}}, kLowStartBps, /*automatic_resize=*/true, diff --git a/third_party/libwebrtc/video/video_send_stream_tests.cc b/third_party/libwebrtc/video/video_send_stream_tests.cc @@ -22,10 +22,12 @@ #include <vector> #include "absl/strings/match.h" +#include "absl/strings/string_view.h" #include "api/array_view.h" #include "api/environment/environment.h" #include "api/environment/environment_factory.h" #include "api/fec_controller_override.h" +#include "api/field_trials.h" #include "api/field_trials_view.h" #include "api/make_ref_counted.h" #include "api/rtp_headers.h" @@ -105,7 +107,6 @@ #include "test/configurable_frame_size_encoder.h" #include "test/encoder_settings.h" #include "test/fake_encoder.h" -#include "test/field_trial.h" #include "test/frame_forwarder.h" #include "test/frame_generator_capturer.h" #include "test/frame_utils.h" @@ -114,7 +115,6 @@ #include "test/null_transport.h" #include "test/rtcp_packet_parser.h" #include "test/rtp_rtcp_observer.h" -#include "test/scoped_key_value_config.h" #include "test/video_encoder_proxy_factory.h" #include "test/video_test_constants.h" #include "video/config/video_encoder_config.h" @@ -733,10 +733,7 @@ TEST_F(VideoSendStreamTest, SupportsUlpfecWithoutExtensions) { class VideoSendStreamWithoutUlpfecTest : public test::CallTest { protected: VideoSendStreamWithoutUlpfecTest() - : field_trial_(field_trials_, "WebRTC-DisableUlpFecExperiment/Enabled/") { - } - - test::ScopedKeyValueConfig field_trial_; + : CallTest(/*field_trials=*/"WebRTC-DisableUlpFecExperiment/Enabled/") {} }; TEST_F(VideoSendStreamWithoutUlpfecTest, NoUlpfecIfDisabledThroughFieldTrial) { @@ -1770,9 +1767,9 @@ TEST_F(VideoSendStreamTest, DISABLED_RelayToDirectRoute) { static const int kStartBitrateBps = 300000; static const int kRelayBandwidthCapBps = 800000; static const int kMinPacketsToSend = 100; - test::ScopedKeyValueConfig field_trials( - field_trials_, "WebRTC-Bwe-NetworkRouteConstraints/relay_cap:" + - std::to_string(kRelayBandwidthCapBps) + "bps/"); + field_trials().Set( + "WebRTC-Bwe-NetworkRouteConstraints", + "relay_cap:" + std::to_string(kRelayBandwidthCapBps) + "bps"); class RelayToDirectRouteTest : public test::EndToEndTest { public: @@ -2728,8 +2725,7 @@ TEST_F(VideoSendStreamTest, ReconfigureBitratesSetsEncoderBitratesCorrectly) { // TODO(bugs.webrtc.org/12058): If these fields trial are on, we get lower // bitrates than expected by this test, due to encoder pushback and subtracted // overhead. - test::ScopedKeyValueConfig field_trials( - field_trials_, "WebRTC-VideoRateControl/bitrate_adjuster:false/"); + field_trials().Set("WebRTC-VideoRateControl", "bitrate_adjuster:false"); class EncoderBitrateThresholdObserver : public test::SendTest, public VideoBitrateAllocatorFactory, @@ -3889,15 +3885,13 @@ class PacingFactorObserver : public test::SendTest { const std::optional<float> expected_pacing_factor_; }; -std::string GetAlrProbingExperimentString() { - return std::string( - AlrExperimentSettings::kScreenshareProbingBweExperimentName) + - "/1.0,2875,80,40,-60,3/"; -} -const float kAlrProbingExperimentPaceMultiplier = 1.0f; +constexpr absl::string_view kAlrProbingExperimentValue = "1.0,2875,80,40,-60,3"; +constexpr float kAlrProbingExperimentPaceMultiplier = 1.0f; TEST_F(VideoSendStreamTest, AlrConfiguredWhenSendSideOn) { - test::ScopedFieldTrials alr_experiment(GetAlrProbingExperimentString()); + field_trials().Set( + AlrExperimentSettings::kScreenshareProbingBweExperimentName, + kAlrProbingExperimentValue); // Send-side bwe on, use pacing factor from `kAlrProbingExperiment` above. PacingFactorObserver test_with_send_side(true, kAlrProbingExperimentPaceMultiplier); @@ -3905,7 +3899,9 @@ TEST_F(VideoSendStreamTest, AlrConfiguredWhenSendSideOn) { } TEST_F(VideoSendStreamTest, AlrNotConfiguredWhenSendSideOff) { - test::ScopedFieldTrials alr_experiment(GetAlrProbingExperimentString()); + field_trials().Set( + AlrExperimentSettings::kScreenshareProbingBweExperimentName, + kAlrProbingExperimentValue); // Send-side bwe off, use configuration should not be overridden. PacingFactorObserver test_without_send_side(false, std::nullopt); RunBaseTest(&test_without_send_side);