From e62c2f2c77bca9af93b1f8cc5a37bb9978a18844 Mon Sep 17 00:00:00 2001 From: Jonas Oreland Date: Tue, 29 Mar 2022 11:04:48 +0200 Subject: [PATCH] WebRTC-DeprecateGlobalFieldTrialString/Enabled/ - part 12/inf rename WebRtcKeyValueConfig to FieldTrialsView Bug: webrtc:10335 Change-Id: If725bd498c4c3daf144bee638230fa089fdde833 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256965 Reviewed-by: Mirko Bonadei Commit-Queue: Jonas Oreland Reviewed-by: Harald Alvestrand Cr-Commit-Position: refs/heads/main@{#36365} --- api/BUILD.gn | 12 +++- api/audio_codecs/BUILD.gn | 2 +- api/audio_codecs/L16/BUILD.gn | 4 +- api/audio_codecs/L16/audio_decoder_L16.cc | 2 +- api/audio_codecs/L16/audio_decoder_L16.h | 4 +- api/audio_codecs/L16/audio_encoder_L16.cc | 2 +- api/audio_codecs/L16/audio_encoder_L16.h | 4 +- .../audio_decoder_factory_template.h | 12 ++-- .../audio_encoder_factory_template.h | 12 ++-- .../builtin_audio_encoder_factory.cc | 2 +- api/audio_codecs/g711/BUILD.gn | 4 +- api/audio_codecs/g711/audio_decoder_g711.cc | 2 +- api/audio_codecs/g711/audio_decoder_g711.h | 4 +- api/audio_codecs/g711/audio_encoder_g711.cc | 2 +- api/audio_codecs/g711/audio_encoder_g711.h | 4 +- api/audio_codecs/g722/BUILD.gn | 4 +- api/audio_codecs/g722/audio_decoder_g722.cc | 2 +- api/audio_codecs/g722/audio_decoder_g722.h | 4 +- api/audio_codecs/g722/audio_encoder_g722.cc | 2 +- api/audio_codecs/g722/audio_encoder_g722.h | 4 +- api/audio_codecs/ilbc/BUILD.gn | 4 +- api/audio_codecs/ilbc/audio_decoder_ilbc.cc | 2 +- api/audio_codecs/ilbc/audio_decoder_ilbc.h | 4 +- api/audio_codecs/ilbc/audio_encoder_ilbc.cc | 2 +- api/audio_codecs/ilbc/audio_encoder_ilbc.h | 4 +- api/audio_codecs/isac/BUILD.gn | 8 +-- .../isac/audio_decoder_isac_fix.cc | 2 +- .../isac/audio_decoder_isac_fix.h | 4 +- .../isac/audio_decoder_isac_float.cc | 2 +- .../isac/audio_decoder_isac_float.h | 4 +- .../isac/audio_encoder_isac_fix.cc | 2 +- .../isac/audio_encoder_isac_fix.h | 4 +- .../isac/audio_encoder_isac_float.cc | 2 +- .../isac/audio_encoder_isac_float.h | 4 +- api/audio_codecs/opus/BUILD.gn | 8 +-- .../opus/audio_decoder_multi_channel_opus.cc | 2 +- .../opus/audio_decoder_multi_channel_opus.h | 4 +- api/audio_codecs/opus/audio_decoder_opus.cc | 2 +- api/audio_codecs/opus/audio_decoder_opus.h | 4 +- .../opus/audio_encoder_multi_channel_opus.cc | 2 +- .../opus/audio_encoder_multi_channel_opus.h | 4 +- api/audio_codecs/opus/audio_encoder_opus.cc | 2 +- api/audio_codecs/opus/audio_encoder_opus.h | 4 +- .../opus_audio_encoder_factory.cc | 2 +- api/field_trials_view.h | 46 ++++++++++++++ api/ice_transport_interface.h | 8 +-- api/peer_connection_interface.h | 4 +- api/transport/BUILD.gn | 16 +---- api/transport/field_trial_based_config.h | 4 +- api/transport/network_control.h | 6 +- api/transport/webrtc_key_value_config.h | 17 ------ api/video/BUILD.gn | 2 +- api/video/video_stream_decoder_create.cc | 2 +- api/video/video_stream_decoder_create.h | 4 +- api/webrtc_key_value_config.h | 30 +-------- audio/BUILD.gn | 2 +- audio/audio_send_stream.cc | 6 +- audio/audio_send_stream.h | 10 +-- audio/channel_send.cc | 6 +- audio/channel_send.h | 4 +- call/BUILD.gn | 8 +-- call/adaptation/BUILD.gn | 2 +- call/adaptation/video_stream_adapter.cc | 2 +- call/adaptation/video_stream_adapter.h | 4 +- call/call.cc | 6 +- call/call.h | 2 +- call/call_config.h | 4 +- call/call_factory.cc | 6 +- call/degraded_call.cc | 2 +- call/degraded_call.h | 2 +- call/receive_time_calculator.cc | 6 +- call/receive_time_calculator.h | 9 ++- call/rtp_payload_params.cc | 2 +- call/rtp_payload_params.h | 4 +- call/rtp_transport_config.h | 4 +- call/rtp_transport_controller_send.cc | 8 +-- call/rtp_transport_controller_send.h | 6 +- call/rtp_video_sender.cc | 10 +-- call/rtp_video_sender.h | 6 +- call/rtp_video_sender_unittest.cc | 6 +- media/BUILD.gn | 6 +- media/base/codec.cc | 12 ++-- media/base/codec.h | 17 +++--- media/base/media_engine.cc | 2 +- media/base/media_engine.h | 8 +-- media/base/test_utils.h | 2 +- media/engine/fake_webrtc_call.h | 4 +- media/engine/simulcast.cc | 13 ++-- media/engine/simulcast.h | 8 +-- media/engine/webrtc_media_engine.cc | 6 +- media/engine/webrtc_media_engine.h | 6 +- media/engine/webrtc_video_engine.cc | 16 +++-- media/engine/webrtc_video_engine.h | 8 +-- media/engine/webrtc_voice_engine.cc | 11 ++-- media/engine/webrtc_voice_engine.h | 4 +- media/sctp/sctp_transport_factory.cc | 4 +- media/sctp/sctp_transport_factory.h | 7 +-- modules/audio_coding/BUILD.gn | 2 +- .../codecs/red/audio_encoder_copy_red.cc | 8 +-- .../codecs/red/audio_encoder_copy_red.h | 5 +- .../congestion_controller/goog_cc/BUILD.gn | 20 +++--- .../goog_cc/acknowledged_bitrate_estimator.cc | 4 +- .../goog_cc/acknowledged_bitrate_estimator.h | 6 +- ...cknowledged_bitrate_estimator_interface.cc | 4 +- ...acknowledged_bitrate_estimator_interface.h | 6 +- .../goog_cc/alr_detector.cc | 7 +-- .../goog_cc/alr_detector.h | 8 +-- .../goog_cc/bitrate_estimator.cc | 2 +- .../goog_cc/bitrate_estimator.h | 4 +- .../congestion_window_pushback_controller.cc | 2 +- .../congestion_window_pushback_controller.h | 4 +- .../goog_cc/delay_based_bwe.cc | 4 +- .../goog_cc/delay_based_bwe.h | 8 +-- .../goog_cc/goog_cc_network_control.cc | 4 +- .../goog_cc/goog_cc_network_control.h | 4 +- .../loss_based_bandwidth_estimation.cc | 6 +- .../goog_cc/loss_based_bandwidth_estimation.h | 6 +- .../goog_cc/loss_based_bwe_v2.cc | 6 +- .../goog_cc/loss_based_bwe_v2.h | 6 +- .../goog_cc/probe_controller.cc | 4 +- .../goog_cc/probe_controller.h | 6 +- .../goog_cc/robust_throughput_estimator.h | 2 +- .../goog_cc/send_side_bandwidth_estimation.cc | 6 +- .../goog_cc/send_side_bandwidth_estimation.h | 6 +- .../goog_cc/trendline_estimator.cc | 7 +-- .../goog_cc/trendline_estimator.h | 7 +-- modules/pacing/BUILD.gn | 4 +- modules/pacing/DEPS | 2 +- modules/pacing/bitrate_prober.cc | 4 +- modules/pacing/bitrate_prober.h | 4 +- modules/pacing/paced_sender.cc | 2 +- modules/pacing/paced_sender.h | 4 +- modules/pacing/paced_sender_unittest.cc | 2 +- modules/pacing/pacing_controller.cc | 10 ++- modules/pacing/pacing_controller.h | 6 +- modules/pacing/task_queue_paced_sender.cc | 2 +- modules/pacing/task_queue_paced_sender.h | 4 +- modules/remote_bitrate_estimator/BUILD.gn | 2 +- modules/remote_bitrate_estimator/DEPS | 2 +- .../aimd_rate_control.cc | 12 ++-- .../aimd_rate_control.h | 6 +- .../overuse_detector.cc | 8 +-- .../overuse_detector.h | 8 +-- .../remote_bitrate_estimator_single_stream.cc | 2 +- .../remote_estimator_proxy.cc | 2 +- .../remote_estimator_proxy.h | 6 +- modules/rtp_rtcp/BUILD.gn | 2 +- modules/rtp_rtcp/DEPS | 2 +- .../deprecated_rtp_sender_egress.cc | 3 +- .../source/rtp_rtcp_impl2_unittest.cc | 2 +- modules/rtp_rtcp/source/rtp_rtcp_interface.h | 4 +- modules/rtp_rtcp/source/rtp_sender.cc | 2 +- modules/rtp_rtcp/source/rtp_sender.h | 2 +- modules/rtp_rtcp/source/rtp_sender_egress.cc | 2 +- .../source/rtp_sender_egress_unittest.cc | 2 +- .../rtp_rtcp/source/rtp_sender_unittest.cc | 2 +- modules/rtp_rtcp/source/rtp_sender_video.cc | 2 +- modules/rtp_rtcp/source/rtp_sender_video.h | 2 +- .../source/rtp_sender_video_unittest.cc | 4 +- modules/video_coding/BUILD.gn | 16 ++--- .../codecs/vp9/libvpx_vp9_decoder.cc | 2 +- .../codecs/vp9/libvpx_vp9_decoder.h | 4 +- .../codecs/vp9/libvpx_vp9_encoder.cc | 9 ++- .../codecs/vp9/libvpx_vp9_encoder.h | 10 +-- modules/video_coding/deprecated/BUILD.gn | 2 +- .../video_coding/deprecated/nack_module.cc | 6 +- modules/video_coding/deprecated/nack_module.h | 6 +- modules/video_coding/frame_buffer2.cc | 2 +- modules/video_coding/frame_buffer2.h | 4 +- .../video_coding/frame_buffer2_unittest.cc | 2 +- modules/video_coding/frame_buffer3.cc | 2 +- modules/video_coding/frame_buffer3.h | 4 +- modules/video_coding/generic_decoder.cc | 2 +- modules/video_coding/generic_decoder.h | 4 +- modules/video_coding/include/video_coding.h | 4 +- modules/video_coding/jitter_buffer.cc | 2 +- modules/video_coding/jitter_buffer.h | 4 +- modules/video_coding/jitter_estimator.cc | 4 +- modules/video_coding/jitter_estimator.h | 4 +- modules/video_coding/nack_requester.cc | 6 +- modules/video_coding/nack_requester.h | 6 +- modules/video_coding/receiver.cc | 4 +- modules/video_coding/receiver.h | 6 +- modules/video_coding/timing.cc | 2 +- modules/video_coding/timing.h | 4 +- modules/video_coding/video_coding_impl.cc | 8 +-- modules/video_coding/video_coding_impl.h | 4 +- modules/video_coding/video_receiver.cc | 2 +- modules/video_coding/video_receiver2.cc | 2 +- modules/video_coding/video_receiver2.h | 4 +- p2p/BUILD.gn | 4 +- p2p/base/fake_port_allocator.h | 8 +-- p2p/base/p2p_transport_channel.cc | 10 +-- p2p/base/p2p_transport_channel.h | 13 ++-- p2p/base/p2p_transport_channel_unittest.cc | 2 +- p2p/base/port.cc | 4 +- p2p/base/port.h | 8 +-- p2p/base/stun_port.cc | 8 +-- p2p/base/stun_port.h | 12 ++-- p2p/base/tcp_port.cc | 2 +- p2p/base/tcp_port.h | 4 +- p2p/base/transport_description_factory.cc | 2 +- p2p/base/transport_description_factory.h | 8 +-- p2p/base/turn_port.cc | 9 ++- p2p/base/turn_port.h | 8 +-- p2p/client/basic_port_allocator.cc | 7 +-- p2p/client/basic_port_allocator.h | 14 ++--- p2p/client/relay_port_factory_interface.h | 4 +- pc/BUILD.gn | 28 ++++----- pc/connection_context.cc | 2 +- pc/connection_context.h | 6 +- pc/dtls_srtp_transport.cc | 2 +- pc/dtls_srtp_transport.h | 3 +- pc/jsep_transport_controller.h | 2 +- pc/media_session.cc | 61 +++++++++---------- pc/media_session.h | 2 +- pc/media_session_unittest.cc | 2 +- pc/peer_connection.h | 4 +- pc/peer_connection_factory.h | 4 +- pc/peer_connection_internal.h | 2 +- pc/peer_connection_jsep_unittest.cc | 2 +- pc/srtp_session.cc | 4 +- pc/srtp_session.h | 4 +- pc/srtp_transport.cc | 2 +- pc/srtp_transport.h | 7 +-- pc/stats_collector.cc | 2 +- pc/stats_collector.h | 2 +- pc/test/fake_peer_connection_base.h | 4 +- pc/test/integration_test_helpers.h | 6 +- rtc_base/BUILD.gn | 2 +- rtc_base/experiments/BUILD.gn | 16 ++--- rtc_base/experiments/alr_experiment.cc | 4 +- rtc_base/experiments/alr_experiment.h | 7 +-- .../balanced_degradation_settings.cc | 2 +- .../balanced_degradation_settings.h | 4 +- .../bandwidth_quality_scaler_settings.cc | 2 +- .../bandwidth_quality_scaler_settings.h | 4 +- .../experiments/keyframe_interval_settings.cc | 2 +- .../experiments/keyframe_interval_settings.h | 5 +- .../experiments/quality_rampup_experiment.cc | 2 +- .../experiments/quality_rampup_experiment.h | 4 +- .../experiments/quality_scaler_settings.cc | 2 +- .../experiments/quality_scaler_settings.h | 5 +- rtc_base/experiments/rate_control_settings.cc | 8 +-- rtc_base/experiments/rate_control_settings.h | 7 +-- .../stable_target_rate_experiment.cc | 4 +- .../stable_target_rate_experiment.h | 6 +- rtc_base/network.cc | 12 ++-- rtc_base/network.h | 26 ++++---- rtc_base/network_monitor_factory.h | 4 +- rtc_base/network_unittest.cc | 4 +- sdk/BUILD.gn | 2 +- sdk/android/BUILD.gn | 2 +- .../src/jni/android_network_monitor.cc | 2 +- sdk/android/src/jni/android_network_monitor.h | 4 +- sdk/objc/native/src/objc_network_monitor.h | 4 +- sdk/objc/native/src/objc_network_monitor.mm | 2 +- test/BUILD.gn | 4 +- test/explicit_key_value_config.cc | 2 +- test/explicit_key_value_config.h | 4 +- test/fuzzers/BUILD.gn | 2 +- test/fuzzers/vp9_encoder_references_fuzzer.cc | 4 +- test/network/BUILD.gn | 2 +- test/pc/e2e/BUILD.gn | 2 +- .../e2e/peer_connection_quality_test_params.h | 4 +- test/scenario/scenario_config.h | 2 +- test/scoped_key_value_config.cc | 2 +- test/scoped_key_value_config.h | 4 +- video/BUILD.gn | 12 ++-- video/adaptation/BUILD.gn | 2 +- video/adaptation/balanced_constraint.cc | 2 +- video/adaptation/balanced_constraint.h | 4 +- .../video_stream_encoder_resource_manager.cc | 2 +- .../video_stream_encoder_resource_manager.h | 6 +- video/buffered_frame_decryptor.cc | 2 +- video/buffered_frame_decryptor.h | 4 +- video/frame_buffer_proxy.cc | 11 ++-- video/frame_buffer_proxy.h | 4 +- video/frame_buffer_proxy_unittest.cc | 2 +- video/frame_cadence_adapter.cc | 6 +- video/frame_cadence_adapter.h | 4 +- video/frame_cadence_adapter_unittest.cc | 2 +- video/frame_decode_timing_unittest.cc | 2 +- video/receive_statistics_proxy.cc | 4 +- video/receive_statistics_proxy.h | 4 +- video/receive_statistics_proxy2.cc | 2 +- video/receive_statistics_proxy2.h | 4 +- video/rtp_video_stream_receiver.cc | 8 +-- video/rtp_video_stream_receiver.h | 6 +- video/rtp_video_stream_receiver2.cc | 6 +- video/rtp_video_stream_receiver2.h | 4 +- video/send_statistics_proxy.cc | 6 +- video/send_statistics_proxy.h | 4 +- video/video_receive_stream2.cc | 3 +- video/video_send_stream.cc | 6 +- video/video_send_stream.h | 4 +- video/video_send_stream_impl.cc | 4 +- video/video_send_stream_impl.h | 6 +- video/video_stream_decoder_impl.cc | 2 +- video/video_stream_decoder_impl.h | 6 +- video/video_stream_encoder.cc | 4 +- video/video_stream_encoder.h | 6 +- video/video_stream_encoder_unittest.cc | 6 +- 303 files changed, 785 insertions(+), 831 deletions(-) create mode 100644 api/field_trials_view.h delete mode 100644 api/transport/webrtc_key_value_config.h diff --git a/api/BUILD.gn b/api/BUILD.gn index b736f93885..c3f305126c 100644 --- a/api/BUILD.gn +++ b/api/BUILD.gn @@ -171,6 +171,7 @@ rtc_library("libjingle_peerconnection_api") { ":audio_options_api", ":callfactory_api", ":fec_controller_api", + ":field_trials_view", ":frame_transformer_interface", ":libjingle_logging_api", ":media_stream_interface", @@ -200,7 +201,6 @@ rtc_library("libjingle_peerconnection_api") { "transport:enums", "transport:network_control", "transport:sctp_transport_factory_interface", - "transport:webrtc_key_value_config", "transport/rtp:rtp_source", "units:data_rate", "units:timestamp", @@ -1224,9 +1224,15 @@ if (rtc_include_tests) { } } -rtc_source_set("webrtc_key_value_config") { +rtc_source_set("field_trials_view") { visibility = [ "*" ] - sources = [ "webrtc_key_value_config.h" ] + sources = [ "field_trials_view.h" ] deps = [ "../rtc_base/system:rtc_export" ] absl_deps = [ "//third_party/abseil-cpp/absl/strings" ] } + +rtc_source_set("webrtc_key_value_config") { + visibility = [ "*" ] + sources = [ "webrtc_key_value_config.h" ] + deps = [ ":field_trials_view" ] +} diff --git a/api/audio_codecs/BUILD.gn b/api/audio_codecs/BUILD.gn index 3c84af8d19..4fd30ced37 100644 --- a/api/audio_codecs/BUILD.gn +++ b/api/audio_codecs/BUILD.gn @@ -32,7 +32,7 @@ rtc_library("audio_codecs_api") { "..:array_view", "..:bitrate_allocation", "..:scoped_refptr", - "../../api:webrtc_key_value_config", + "../../api:field_trials_view", "../../rtc_base:checks", "../../rtc_base:rtc_base_approved", "../../rtc_base:sanitizer", diff --git a/api/audio_codecs/L16/BUILD.gn b/api/audio_codecs/L16/BUILD.gn index 9e4a0f1002..b35e67bb4b 100644 --- a/api/audio_codecs/L16/BUILD.gn +++ b/api/audio_codecs/L16/BUILD.gn @@ -21,7 +21,7 @@ rtc_library("audio_encoder_L16") { ] deps = [ "..:audio_codecs_api", - "../../../api:webrtc_key_value_config", + "../../../api:field_trials_view", "../../../modules/audio_coding:pcm16b", "../../../rtc_base:rtc_base_approved", "../../../rtc_base:safe_minmax", @@ -42,7 +42,7 @@ rtc_library("audio_decoder_L16") { ] deps = [ "..:audio_codecs_api", - "../../../api:webrtc_key_value_config", + "../../../api:field_trials_view", "../../../modules/audio_coding:pcm16b", "../../../rtc_base:rtc_base_approved", "../../../rtc_base/system:rtc_export", diff --git a/api/audio_codecs/L16/audio_decoder_L16.cc b/api/audio_codecs/L16/audio_decoder_L16.cc index 874a8a5111..a03abe26f7 100644 --- a/api/audio_codecs/L16/audio_decoder_L16.cc +++ b/api/audio_codecs/L16/audio_decoder_L16.cc @@ -38,7 +38,7 @@ void AudioDecoderL16::AppendSupportedDecoders( std::unique_ptr AudioDecoderL16::MakeAudioDecoder( const Config& config, absl::optional /*codec_pair_id*/, - const WebRtcKeyValueConfig* field_trials) { + const FieldTrialsView* field_trials) { if (!config.IsOk()) { return nullptr; } diff --git a/api/audio_codecs/L16/audio_decoder_L16.h b/api/audio_codecs/L16/audio_decoder_L16.h index ade8f98088..5a01b7dc01 100644 --- a/api/audio_codecs/L16/audio_decoder_L16.h +++ b/api/audio_codecs/L16/audio_decoder_L16.h @@ -18,7 +18,7 @@ #include "api/audio_codecs/audio_codec_pair_id.h" #include "api/audio_codecs/audio_decoder.h" #include "api/audio_codecs/audio_format.h" -#include "api/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "rtc_base/system/rtc_export.h" namespace webrtc { @@ -41,7 +41,7 @@ struct RTC_EXPORT AudioDecoderL16 { static std::unique_ptr MakeAudioDecoder( const Config& config, absl::optional codec_pair_id = absl::nullopt, - const WebRtcKeyValueConfig* field_trials = nullptr); + const FieldTrialsView* field_trials = nullptr); }; } // namespace webrtc diff --git a/api/audio_codecs/L16/audio_encoder_L16.cc b/api/audio_codecs/L16/audio_encoder_L16.cc index 3994f5c20d..20259b9ad8 100644 --- a/api/audio_codecs/L16/audio_encoder_L16.cc +++ b/api/audio_codecs/L16/audio_encoder_L16.cc @@ -60,7 +60,7 @@ std::unique_ptr AudioEncoderL16::MakeAudioEncoder( const AudioEncoderL16::Config& config, int payload_type, absl::optional /*codec_pair_id*/, - const WebRtcKeyValueConfig* field_trials) { + const FieldTrialsView* field_trials) { AudioEncoderPcm16B::Config c; c.sample_rate_hz = config.sample_rate_hz; c.num_channels = config.num_channels; diff --git a/api/audio_codecs/L16/audio_encoder_L16.h b/api/audio_codecs/L16/audio_encoder_L16.h index e0916dfb24..47509849de 100644 --- a/api/audio_codecs/L16/audio_encoder_L16.h +++ b/api/audio_codecs/L16/audio_encoder_L16.h @@ -18,7 +18,7 @@ #include "api/audio_codecs/audio_codec_pair_id.h" #include "api/audio_codecs/audio_encoder.h" #include "api/audio_codecs/audio_format.h" -#include "api/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "rtc_base/system/rtc_export.h" namespace webrtc { @@ -46,7 +46,7 @@ struct RTC_EXPORT AudioEncoderL16 { const Config& config, int payload_type, absl::optional codec_pair_id = absl::nullopt, - const WebRtcKeyValueConfig* field_trials = nullptr); + const FieldTrialsView* field_trials = nullptr); }; } // namespace webrtc diff --git a/api/audio_codecs/audio_decoder_factory_template.h b/api/audio_codecs/audio_decoder_factory_template.h index 4badd825b1..4e39365182 100644 --- a/api/audio_codecs/audio_decoder_factory_template.h +++ b/api/audio_codecs/audio_decoder_factory_template.h @@ -15,8 +15,8 @@ #include #include "api/audio_codecs/audio_decoder_factory.h" +#include "api/field_trials_view.h" #include "api/scoped_refptr.h" -#include "api/webrtc_key_value_config.h" #include "rtc_base/ref_counted_object.h" namespace webrtc { @@ -34,7 +34,7 @@ struct Helper<> { static std::unique_ptr MakeAudioDecoder( const SdpAudioFormat& format, absl::optional codec_pair_id, - const WebRtcKeyValueConfig* field_trials) { + const FieldTrialsView* field_trials) { return nullptr; } }; @@ -58,7 +58,7 @@ struct Helper { static std::unique_ptr MakeAudioDecoder( const SdpAudioFormat& format, absl::optional codec_pair_id, - const WebRtcKeyValueConfig* field_trials) { + const FieldTrialsView* field_trials) { auto opt_config = T::SdpToConfig(format); return opt_config ? T::MakeAudioDecoder(*opt_config, codec_pair_id) : Helper::MakeAudioDecoder(format, codec_pair_id, @@ -69,7 +69,7 @@ struct Helper { template class AudioDecoderFactoryT : public AudioDecoderFactory { public: - explicit AudioDecoderFactoryT(const WebRtcKeyValueConfig* field_trials) { + explicit AudioDecoderFactoryT(const FieldTrialsView* field_trials) { field_trials_ = field_trials; } @@ -90,7 +90,7 @@ class AudioDecoderFactoryT : public AudioDecoderFactory { field_trials_); } - const WebRtcKeyValueConfig* field_trials_; + const FieldTrialsView* field_trials_; }; } // namespace audio_decoder_factory_template_impl @@ -127,7 +127,7 @@ class AudioDecoderFactoryT : public AudioDecoderFactory { // how it is used. template rtc::scoped_refptr CreateAudioDecoderFactory( - const WebRtcKeyValueConfig* field_trials = nullptr) { + const FieldTrialsView* field_trials = nullptr) { // There's no technical reason we couldn't allow zero template parameters, // but such a factory couldn't create any decoders, and callers can do this // by mistake by simply forgetting the <> altogether. So we forbid it in diff --git a/api/audio_codecs/audio_encoder_factory_template.h b/api/audio_codecs/audio_encoder_factory_template.h index ceefab2dd5..8490f46b7d 100644 --- a/api/audio_codecs/audio_encoder_factory_template.h +++ b/api/audio_codecs/audio_encoder_factory_template.h @@ -15,8 +15,8 @@ #include #include "api/audio_codecs/audio_encoder_factory.h" +#include "api/field_trials_view.h" #include "api/scoped_refptr.h" -#include "api/webrtc_key_value_config.h" #include "rtc_base/ref_counted_object.h" namespace webrtc { @@ -38,7 +38,7 @@ struct Helper<> { int payload_type, const SdpAudioFormat& format, absl::optional codec_pair_id, - const WebRtcKeyValueConfig* field_trials) { + const FieldTrialsView* field_trials) { return nullptr; } }; @@ -66,7 +66,7 @@ struct Helper { int payload_type, const SdpAudioFormat& format, absl::optional codec_pair_id, - const WebRtcKeyValueConfig* field_trials) { + const FieldTrialsView* field_trials) { auto opt_config = T::SdpToConfig(format); if (opt_config) { return T::MakeAudioEncoder(*opt_config, payload_type, codec_pair_id); @@ -80,7 +80,7 @@ struct Helper { template class AudioEncoderFactoryT : public AudioEncoderFactory { public: - explicit AudioEncoderFactoryT(const WebRtcKeyValueConfig* field_trials) { + explicit AudioEncoderFactoryT(const FieldTrialsView* field_trials) { field_trials_ = field_trials; } @@ -103,7 +103,7 @@ class AudioEncoderFactoryT : public AudioEncoderFactory { field_trials_); } - const WebRtcKeyValueConfig* field_trials_; + const FieldTrialsView* field_trials_; }; } // namespace audio_encoder_factory_template_impl @@ -145,7 +145,7 @@ class AudioEncoderFactoryT : public AudioEncoderFactory { // how it is used. template rtc::scoped_refptr CreateAudioEncoderFactory( - const WebRtcKeyValueConfig* field_trials = nullptr) { + const FieldTrialsView* field_trials = nullptr) { // There's no technical reason we couldn't allow zero template parameters, // but such a factory couldn't create any encoders, and callers can do this // by mistake by simply forgetting the <> altogether. So we forbid it in diff --git a/api/audio_codecs/builtin_audio_encoder_factory.cc b/api/audio_codecs/builtin_audio_encoder_factory.cc index 4433893c1b..530d64b2ba 100644 --- a/api/audio_codecs/builtin_audio_encoder_factory.cc +++ b/api/audio_codecs/builtin_audio_encoder_factory.cc @@ -48,7 +48,7 @@ struct NotAdvertised { const Config& config, int payload_type, absl::optional codec_pair_id = absl::nullopt, - const WebRtcKeyValueConfig* field_trials = nullptr) { + const FieldTrialsView* field_trials = nullptr) { return T::MakeAudioEncoder(config, payload_type, codec_pair_id, field_trials); } diff --git a/api/audio_codecs/g711/BUILD.gn b/api/audio_codecs/g711/BUILD.gn index 1f0b7dff7a..faac0471c0 100644 --- a/api/audio_codecs/g711/BUILD.gn +++ b/api/audio_codecs/g711/BUILD.gn @@ -21,7 +21,7 @@ rtc_library("audio_encoder_g711") { ] deps = [ "..:audio_codecs_api", - "../../../api:webrtc_key_value_config", + "../../../api:field_trials_view", "../../../modules/audio_coding:g711", "../../../rtc_base:rtc_base_approved", "../../../rtc_base:safe_minmax", @@ -42,7 +42,7 @@ rtc_library("audio_decoder_g711") { ] deps = [ "..:audio_codecs_api", - "../../../api:webrtc_key_value_config", + "../../../api:field_trials_view", "../../../modules/audio_coding:g711", "../../../rtc_base:rtc_base_approved", "../../../rtc_base/system:rtc_export", diff --git a/api/audio_codecs/g711/audio_decoder_g711.cc b/api/audio_codecs/g711/audio_decoder_g711.cc index b34b464ebd..838f7e9624 100644 --- a/api/audio_codecs/g711/audio_decoder_g711.cc +++ b/api/audio_codecs/g711/audio_decoder_g711.cc @@ -48,7 +48,7 @@ void AudioDecoderG711::AppendSupportedDecoders( std::unique_ptr AudioDecoderG711::MakeAudioDecoder( const Config& config, absl::optional /*codec_pair_id*/, - const WebRtcKeyValueConfig* field_trials) { + const FieldTrialsView* field_trials) { if (!config.IsOk()) { RTC_DCHECK_NOTREACHED(); return nullptr; diff --git a/api/audio_codecs/g711/audio_decoder_g711.h b/api/audio_codecs/g711/audio_decoder_g711.h index 62b0f880d5..0f7a98d345 100644 --- a/api/audio_codecs/g711/audio_decoder_g711.h +++ b/api/audio_codecs/g711/audio_decoder_g711.h @@ -18,7 +18,7 @@ #include "api/audio_codecs/audio_codec_pair_id.h" #include "api/audio_codecs/audio_decoder.h" #include "api/audio_codecs/audio_format.h" -#include "api/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "rtc_base/system/rtc_export.h" namespace webrtc { @@ -41,7 +41,7 @@ struct RTC_EXPORT AudioDecoderG711 { static std::unique_ptr MakeAudioDecoder( const Config& config, absl::optional codec_pair_id = absl::nullopt, - const WebRtcKeyValueConfig* field_trials = nullptr); + const FieldTrialsView* field_trials = nullptr); }; } // namespace webrtc diff --git a/api/audio_codecs/g711/audio_encoder_g711.cc b/api/audio_codecs/g711/audio_encoder_g711.cc index 8c60304c20..1dca3b80d3 100644 --- a/api/audio_codecs/g711/audio_encoder_g711.cc +++ b/api/audio_codecs/g711/audio_encoder_g711.cc @@ -65,7 +65,7 @@ std::unique_ptr AudioEncoderG711::MakeAudioEncoder( const Config& config, int payload_type, absl::optional /*codec_pair_id*/, - const WebRtcKeyValueConfig* field_trials) { + const FieldTrialsView* field_trials) { if (!config.IsOk()) { RTC_DCHECK_NOTREACHED(); return nullptr; diff --git a/api/audio_codecs/g711/audio_encoder_g711.h b/api/audio_codecs/g711/audio_encoder_g711.h index c2750e26ec..4b3eb845e0 100644 --- a/api/audio_codecs/g711/audio_encoder_g711.h +++ b/api/audio_codecs/g711/audio_encoder_g711.h @@ -18,7 +18,7 @@ #include "api/audio_codecs/audio_codec_pair_id.h" #include "api/audio_codecs/audio_encoder.h" #include "api/audio_codecs/audio_format.h" -#include "api/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "rtc_base/system/rtc_export.h" namespace webrtc { @@ -46,7 +46,7 @@ struct RTC_EXPORT AudioEncoderG711 { const Config& config, int payload_type, absl::optional codec_pair_id = absl::nullopt, - const WebRtcKeyValueConfig* field_trials = nullptr); + const FieldTrialsView* field_trials = nullptr); }; } // namespace webrtc diff --git a/api/audio_codecs/g722/BUILD.gn b/api/audio_codecs/g722/BUILD.gn index fbce2c5e33..1441e6dedf 100644 --- a/api/audio_codecs/g722/BUILD.gn +++ b/api/audio_codecs/g722/BUILD.gn @@ -27,7 +27,7 @@ rtc_library("audio_encoder_g722") { deps = [ ":audio_encoder_g722_config", "..:audio_codecs_api", - "../../../api:webrtc_key_value_config", + "../../../api:field_trials_view", "../../../modules/audio_coding:g722", "../../../rtc_base:rtc_base_approved", "../../../rtc_base:safe_minmax", @@ -48,7 +48,7 @@ rtc_library("audio_decoder_g722") { ] deps = [ "..:audio_codecs_api", - "../../../api:webrtc_key_value_config", + "../../../api:field_trials_view", "../../../modules/audio_coding:g722", "../../../rtc_base:rtc_base_approved", "../../../rtc_base/system:rtc_export", diff --git a/api/audio_codecs/g722/audio_decoder_g722.cc b/api/audio_codecs/g722/audio_decoder_g722.cc index 8f3a5c0d28..ed7163471a 100644 --- a/api/audio_codecs/g722/audio_decoder_g722.cc +++ b/api/audio_codecs/g722/audio_decoder_g722.cc @@ -37,7 +37,7 @@ void AudioDecoderG722::AppendSupportedDecoders( std::unique_ptr AudioDecoderG722::MakeAudioDecoder( Config config, absl::optional /*codec_pair_id*/, - const WebRtcKeyValueConfig* field_trials) { + const FieldTrialsView* field_trials) { if (!config.IsOk()) { RTC_DCHECK_NOTREACHED(); return nullptr; diff --git a/api/audio_codecs/g722/audio_decoder_g722.h b/api/audio_codecs/g722/audio_decoder_g722.h index 05e613055a..6f7b253039 100644 --- a/api/audio_codecs/g722/audio_decoder_g722.h +++ b/api/audio_codecs/g722/audio_decoder_g722.h @@ -18,7 +18,7 @@ #include "api/audio_codecs/audio_codec_pair_id.h" #include "api/audio_codecs/audio_decoder.h" #include "api/audio_codecs/audio_format.h" -#include "api/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "rtc_base/system/rtc_export.h" namespace webrtc { @@ -35,7 +35,7 @@ struct RTC_EXPORT AudioDecoderG722 { static std::unique_ptr MakeAudioDecoder( Config config, absl::optional codec_pair_id = absl::nullopt, - const WebRtcKeyValueConfig* field_trials = nullptr); + const FieldTrialsView* field_trials = nullptr); }; } // namespace webrtc diff --git a/api/audio_codecs/g722/audio_encoder_g722.cc b/api/audio_codecs/g722/audio_encoder_g722.cc index 812d66ffc9..56a6c4da6a 100644 --- a/api/audio_codecs/g722/audio_encoder_g722.cc +++ b/api/audio_codecs/g722/audio_encoder_g722.cc @@ -63,7 +63,7 @@ std::unique_ptr AudioEncoderG722::MakeAudioEncoder( const AudioEncoderG722Config& config, int payload_type, absl::optional /*codec_pair_id*/, - const WebRtcKeyValueConfig* field_trials) { + const FieldTrialsView* field_trials) { if (!config.IsOk()) { RTC_DCHECK_NOTREACHED(); return nullptr; diff --git a/api/audio_codecs/g722/audio_encoder_g722.h b/api/audio_codecs/g722/audio_encoder_g722.h index 14ddff72bd..78ceddd1e9 100644 --- a/api/audio_codecs/g722/audio_encoder_g722.h +++ b/api/audio_codecs/g722/audio_encoder_g722.h @@ -19,7 +19,7 @@ #include "api/audio_codecs/audio_encoder.h" #include "api/audio_codecs/audio_format.h" #include "api/audio_codecs/g722/audio_encoder_g722_config.h" -#include "api/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "rtc_base/system/rtc_export.h" namespace webrtc { @@ -36,7 +36,7 @@ struct RTC_EXPORT AudioEncoderG722 { const AudioEncoderG722Config& config, int payload_type, absl::optional codec_pair_id = absl::nullopt, - const WebRtcKeyValueConfig* field_trials = nullptr); + const FieldTrialsView* field_trials = nullptr); }; } // namespace webrtc diff --git a/api/audio_codecs/ilbc/BUILD.gn b/api/audio_codecs/ilbc/BUILD.gn index 1cac7ed7b9..8dab307e99 100644 --- a/api/audio_codecs/ilbc/BUILD.gn +++ b/api/audio_codecs/ilbc/BUILD.gn @@ -27,7 +27,7 @@ rtc_library("audio_encoder_ilbc") { deps = [ ":audio_encoder_ilbc_config", "..:audio_codecs_api", - "../../../api:webrtc_key_value_config", + "../../../api:field_trials_view", "../../../modules/audio_coding:ilbc", "../../../rtc_base:rtc_base_approved", "../../../rtc_base:safe_minmax", @@ -47,7 +47,7 @@ rtc_library("audio_decoder_ilbc") { ] deps = [ "..:audio_codecs_api", - "../../../api:webrtc_key_value_config", + "../../../api:field_trials_view", "../../../modules/audio_coding:ilbc", "../../../rtc_base:rtc_base_approved", ] diff --git a/api/audio_codecs/ilbc/audio_decoder_ilbc.cc b/api/audio_codecs/ilbc/audio_decoder_ilbc.cc index 9a291ee41d..c58316903a 100644 --- a/api/audio_codecs/ilbc/audio_decoder_ilbc.cc +++ b/api/audio_codecs/ilbc/audio_decoder_ilbc.cc @@ -35,7 +35,7 @@ void AudioDecoderIlbc::AppendSupportedDecoders( std::unique_ptr AudioDecoderIlbc::MakeAudioDecoder( Config config, absl::optional /*codec_pair_id*/, - const WebRtcKeyValueConfig* field_trials) { + const FieldTrialsView* field_trials) { return std::make_unique(); } diff --git a/api/audio_codecs/ilbc/audio_decoder_ilbc.h b/api/audio_codecs/ilbc/audio_decoder_ilbc.h index 4d9a4b7d6a..60566c88df 100644 --- a/api/audio_codecs/ilbc/audio_decoder_ilbc.h +++ b/api/audio_codecs/ilbc/audio_decoder_ilbc.h @@ -18,7 +18,7 @@ #include "api/audio_codecs/audio_codec_pair_id.h" #include "api/audio_codecs/audio_decoder.h" #include "api/audio_codecs/audio_format.h" -#include "api/webrtc_key_value_config.h" +#include "api/field_trials_view.h" namespace webrtc { @@ -31,7 +31,7 @@ struct AudioDecoderIlbc { static std::unique_ptr MakeAudioDecoder( Config config, absl::optional codec_pair_id = absl::nullopt, - const WebRtcKeyValueConfig* field_trials = nullptr); + const FieldTrialsView* field_trials = nullptr); }; } // namespace webrtc diff --git a/api/audio_codecs/ilbc/audio_encoder_ilbc.cc b/api/audio_codecs/ilbc/audio_encoder_ilbc.cc index 6525887eab..b497948491 100644 --- a/api/audio_codecs/ilbc/audio_encoder_ilbc.cc +++ b/api/audio_codecs/ilbc/audio_encoder_ilbc.cc @@ -77,7 +77,7 @@ std::unique_ptr AudioEncoderIlbc::MakeAudioEncoder( const AudioEncoderIlbcConfig& config, int payload_type, absl::optional /*codec_pair_id*/, - const WebRtcKeyValueConfig* field_trials) { + const FieldTrialsView* field_trials) { if (!config.IsOk()) { RTC_DCHECK_NOTREACHED(); return nullptr; diff --git a/api/audio_codecs/ilbc/audio_encoder_ilbc.h b/api/audio_codecs/ilbc/audio_encoder_ilbc.h index 8dd4928558..a5306841ce 100644 --- a/api/audio_codecs/ilbc/audio_encoder_ilbc.h +++ b/api/audio_codecs/ilbc/audio_encoder_ilbc.h @@ -19,7 +19,7 @@ #include "api/audio_codecs/audio_encoder.h" #include "api/audio_codecs/audio_format.h" #include "api/audio_codecs/ilbc/audio_encoder_ilbc_config.h" -#include "api/webrtc_key_value_config.h" +#include "api/field_trials_view.h" namespace webrtc { @@ -35,7 +35,7 @@ struct AudioEncoderIlbc { const AudioEncoderIlbcConfig& config, int payload_type, absl::optional codec_pair_id = absl::nullopt, - const WebRtcKeyValueConfig* field_trials = nullptr); + const FieldTrialsView* field_trials = nullptr); }; } // namespace webrtc diff --git a/api/audio_codecs/isac/BUILD.gn b/api/audio_codecs/isac/BUILD.gn index b6aa810fb5..2231371813 100644 --- a/api/audio_codecs/isac/BUILD.gn +++ b/api/audio_codecs/isac/BUILD.gn @@ -65,7 +65,7 @@ rtc_library("audio_encoder_isac_fix") { ] deps = [ "..:audio_codecs_api", - "../../../api:webrtc_key_value_config", + "../../../api:field_trials_view", "../../../modules/audio_coding:isac_fix", "../../../rtc_base:rtc_base_approved", "../../../rtc_base/system:rtc_export", @@ -85,7 +85,7 @@ rtc_library("audio_decoder_isac_fix") { ] deps = [ "..:audio_codecs_api", - "../../../api:webrtc_key_value_config", + "../../../api:field_trials_view", "../../../modules/audio_coding:isac_fix", "../../../rtc_base:rtc_base_approved", "../../../rtc_base/system:rtc_export", @@ -105,7 +105,7 @@ rtc_library("audio_encoder_isac_float") { ] deps = [ "..:audio_codecs_api", - "../../../api:webrtc_key_value_config", + "../../../api:field_trials_view", "../../../modules/audio_coding:isac", "../../../rtc_base:rtc_base_approved", "../../../rtc_base/system:rtc_export", @@ -125,7 +125,7 @@ rtc_library("audio_decoder_isac_float") { ] deps = [ "..:audio_codecs_api", - "../../../api:webrtc_key_value_config", + "../../../api:field_trials_view", "../../../modules/audio_coding:isac", "../../../rtc_base:rtc_base_approved", "../../../rtc_base/system:rtc_export", diff --git a/api/audio_codecs/isac/audio_decoder_isac_fix.cc b/api/audio_codecs/isac/audio_decoder_isac_fix.cc index 8927a164b0..b3ab91da47 100644 --- a/api/audio_codecs/isac/audio_decoder_isac_fix.cc +++ b/api/audio_codecs/isac/audio_decoder_isac_fix.cc @@ -34,7 +34,7 @@ void AudioDecoderIsacFix::AppendSupportedDecoders( std::unique_ptr AudioDecoderIsacFix::MakeAudioDecoder( Config config, absl::optional /*codec_pair_id*/, - const WebRtcKeyValueConfig* field_trials) { + const FieldTrialsView* field_trials) { AudioDecoderIsacFixImpl::Config c; c.sample_rate_hz = 16000; return std::make_unique(c); diff --git a/api/audio_codecs/isac/audio_decoder_isac_fix.h b/api/audio_codecs/isac/audio_decoder_isac_fix.h index 11b87669c9..8f61d9ab0e 100644 --- a/api/audio_codecs/isac/audio_decoder_isac_fix.h +++ b/api/audio_codecs/isac/audio_decoder_isac_fix.h @@ -18,7 +18,7 @@ #include "api/audio_codecs/audio_codec_pair_id.h" #include "api/audio_codecs/audio_decoder.h" #include "api/audio_codecs/audio_format.h" -#include "api/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "rtc_base/system/rtc_export.h" namespace webrtc { @@ -32,7 +32,7 @@ struct RTC_EXPORT AudioDecoderIsacFix { static std::unique_ptr MakeAudioDecoder( Config config, absl::optional codec_pair_id = absl::nullopt, - const WebRtcKeyValueConfig* field_trials = nullptr); + const FieldTrialsView* field_trials = nullptr); }; } // namespace webrtc diff --git a/api/audio_codecs/isac/audio_decoder_isac_float.cc b/api/audio_codecs/isac/audio_decoder_isac_float.cc index ef27293117..98f672b468 100644 --- a/api/audio_codecs/isac/audio_decoder_isac_float.cc +++ b/api/audio_codecs/isac/audio_decoder_isac_float.cc @@ -43,7 +43,7 @@ void AudioDecoderIsacFloat::AppendSupportedDecoders( std::unique_ptr AudioDecoderIsacFloat::MakeAudioDecoder( Config config, absl::optional /*codec_pair_id*/, - const WebRtcKeyValueConfig* field_trials) { + const FieldTrialsView* field_trials) { AudioDecoderIsacFloatImpl::Config c; c.sample_rate_hz = config.sample_rate_hz; if (!config.IsOk()) { diff --git a/api/audio_codecs/isac/audio_decoder_isac_float.h b/api/audio_codecs/isac/audio_decoder_isac_float.h index 501edfcab9..864c6b999f 100644 --- a/api/audio_codecs/isac/audio_decoder_isac_float.h +++ b/api/audio_codecs/isac/audio_decoder_isac_float.h @@ -18,7 +18,7 @@ #include "api/audio_codecs/audio_codec_pair_id.h" #include "api/audio_codecs/audio_decoder.h" #include "api/audio_codecs/audio_format.h" -#include "api/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "rtc_base/system/rtc_export.h" namespace webrtc { @@ -37,7 +37,7 @@ struct RTC_EXPORT AudioDecoderIsacFloat { static std::unique_ptr MakeAudioDecoder( Config config, absl::optional codec_pair_id = absl::nullopt, - const WebRtcKeyValueConfig* field_trials = nullptr); + const FieldTrialsView* field_trials = nullptr); }; } // namespace webrtc diff --git a/api/audio_codecs/isac/audio_encoder_isac_fix.cc b/api/audio_codecs/isac/audio_encoder_isac_fix.cc index 65a2d8f391..39603775a4 100644 --- a/api/audio_codecs/isac/audio_encoder_isac_fix.cc +++ b/api/audio_codecs/isac/audio_encoder_isac_fix.cc @@ -57,7 +57,7 @@ std::unique_ptr AudioEncoderIsacFix::MakeAudioEncoder( AudioEncoderIsacFix::Config config, int payload_type, absl::optional /*codec_pair_id*/, - const WebRtcKeyValueConfig* field_trials) { + const FieldTrialsView* field_trials) { AudioEncoderIsacFixImpl::Config c; c.frame_size_ms = config.frame_size_ms; c.bit_rate = config.bit_rate; diff --git a/api/audio_codecs/isac/audio_encoder_isac_fix.h b/api/audio_codecs/isac/audio_encoder_isac_fix.h index e8ff0fc57b..de0f1d1308 100644 --- a/api/audio_codecs/isac/audio_encoder_isac_fix.h +++ b/api/audio_codecs/isac/audio_encoder_isac_fix.h @@ -18,7 +18,7 @@ #include "api/audio_codecs/audio_codec_pair_id.h" #include "api/audio_codecs/audio_encoder.h" #include "api/audio_codecs/audio_format.h" -#include "api/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "rtc_base/system/rtc_export.h" namespace webrtc { @@ -46,7 +46,7 @@ struct RTC_EXPORT AudioEncoderIsacFix { Config config, int payload_type, absl::optional codec_pair_id = absl::nullopt, - const WebRtcKeyValueConfig* field_trials = nullptr); + const FieldTrialsView* field_trials = nullptr); }; } // namespace webrtc diff --git a/api/audio_codecs/isac/audio_encoder_isac_float.cc b/api/audio_codecs/isac/audio_encoder_isac_float.cc index 852cb69c9d..e3e50080fa 100644 --- a/api/audio_codecs/isac/audio_encoder_isac_float.cc +++ b/api/audio_codecs/isac/audio_encoder_isac_float.cc @@ -69,7 +69,7 @@ std::unique_ptr AudioEncoderIsacFloat::MakeAudioEncoder( const AudioEncoderIsacFloat::Config& config, int payload_type, absl::optional /*codec_pair_id*/, - const WebRtcKeyValueConfig* field_trials) { + const FieldTrialsView* field_trials) { AudioEncoderIsacFloatImpl::Config c; c.payload_type = payload_type; c.sample_rate_hz = config.sample_rate_hz; diff --git a/api/audio_codecs/isac/audio_encoder_isac_float.h b/api/audio_codecs/isac/audio_encoder_isac_float.h index 8e1d505c31..d031d76db1 100644 --- a/api/audio_codecs/isac/audio_encoder_isac_float.h +++ b/api/audio_codecs/isac/audio_encoder_isac_float.h @@ -18,7 +18,7 @@ #include "api/audio_codecs/audio_codec_pair_id.h" #include "api/audio_codecs/audio_encoder.h" #include "api/audio_codecs/audio_format.h" -#include "api/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "rtc_base/system/rtc_export.h" namespace webrtc { @@ -60,7 +60,7 @@ struct RTC_EXPORT AudioEncoderIsacFloat { const Config& config, int payload_type, absl::optional codec_pair_id = absl::nullopt, - const WebRtcKeyValueConfig* field_trials = nullptr); + const FieldTrialsView* field_trials = nullptr); }; } // namespace webrtc diff --git a/api/audio_codecs/opus/BUILD.gn b/api/audio_codecs/opus/BUILD.gn index fbb116b88a..94d4d1b4f5 100644 --- a/api/audio_codecs/opus/BUILD.gn +++ b/api/audio_codecs/opus/BUILD.gn @@ -46,7 +46,7 @@ rtc_library("audio_encoder_opus") { deps = [ ":audio_encoder_opus_config", "..:audio_codecs_api", - "../../../api:webrtc_key_value_config", + "../../../api:field_trials_view", "../../../modules/audio_coding:webrtc_opus", "../../../rtc_base:rtc_base_approved", "../../../rtc_base/system:rtc_export", @@ -66,7 +66,7 @@ rtc_library("audio_decoder_opus") { ] deps = [ "..:audio_codecs_api", - "../../../api:webrtc_key_value_config", + "../../../api:field_trials_view", "../../../modules/audio_coding:webrtc_opus", "../../../rtc_base:rtc_base_approved", "../../../rtc_base/system:rtc_export", @@ -84,7 +84,7 @@ rtc_library("audio_encoder_multiopus") { sources = [ "audio_encoder_multi_channel_opus.cc" ] deps = [ "..:audio_codecs_api", - "../../../api:webrtc_key_value_config", + "../../../api:field_trials_view", "../../../modules/audio_coding:webrtc_multiopus", "../../../rtc_base:rtc_base_approved", "../../../rtc_base/system:rtc_export", @@ -103,7 +103,7 @@ rtc_library("audio_decoder_multiopus") { deps = [ ":audio_decoder_opus_config", "..:audio_codecs_api", - "../../../api:webrtc_key_value_config", + "../../../api:field_trials_view", "../../../modules/audio_coding:webrtc_multiopus", "../../../rtc_base:rtc_base_approved", "../../../rtc_base/system:rtc_export", diff --git a/api/audio_codecs/opus/audio_decoder_multi_channel_opus.cc b/api/audio_codecs/opus/audio_decoder_multi_channel_opus.cc index 5a0b794430..0fb4e05511 100644 --- a/api/audio_codecs/opus/audio_decoder_multi_channel_opus.cc +++ b/api/audio_codecs/opus/audio_decoder_multi_channel_opus.cc @@ -65,7 +65,7 @@ void AudioDecoderMultiChannelOpus::AppendSupportedDecoders( std::unique_ptr AudioDecoderMultiChannelOpus::MakeAudioDecoder( AudioDecoderMultiChannelOpusConfig config, absl::optional /*codec_pair_id*/, - const WebRtcKeyValueConfig* field_trials) { + const FieldTrialsView* field_trials) { return AudioDecoderMultiChannelOpusImpl::MakeAudioDecoder(config); } } // namespace webrtc diff --git a/api/audio_codecs/opus/audio_decoder_multi_channel_opus.h b/api/audio_codecs/opus/audio_decoder_multi_channel_opus.h index 2dcd26b102..eafd6c6939 100644 --- a/api/audio_codecs/opus/audio_decoder_multi_channel_opus.h +++ b/api/audio_codecs/opus/audio_decoder_multi_channel_opus.h @@ -19,7 +19,7 @@ #include "api/audio_codecs/audio_decoder.h" #include "api/audio_codecs/audio_format.h" #include "api/audio_codecs/opus/audio_decoder_multi_channel_opus_config.h" -#include "api/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "rtc_base/system/rtc_export.h" namespace webrtc { @@ -34,7 +34,7 @@ struct RTC_EXPORT AudioDecoderMultiChannelOpus { static std::unique_ptr MakeAudioDecoder( AudioDecoderMultiChannelOpusConfig config, absl::optional codec_pair_id = absl::nullopt, - const WebRtcKeyValueConfig* field_trials = nullptr); + const FieldTrialsView* field_trials = nullptr); }; } // namespace webrtc diff --git a/api/audio_codecs/opus/audio_decoder_opus.cc b/api/audio_codecs/opus/audio_decoder_opus.cc index 0fe3367a64..efc9a73546 100644 --- a/api/audio_codecs/opus/audio_decoder_opus.cc +++ b/api/audio_codecs/opus/audio_decoder_opus.cc @@ -74,7 +74,7 @@ void AudioDecoderOpus::AppendSupportedDecoders( std::unique_ptr AudioDecoderOpus::MakeAudioDecoder( Config config, absl::optional /*codec_pair_id*/, - const WebRtcKeyValueConfig* field_trials) { + const FieldTrialsView* field_trials) { if (!config.IsOk()) { RTC_DCHECK_NOTREACHED(); return nullptr; diff --git a/api/audio_codecs/opus/audio_decoder_opus.h b/api/audio_codecs/opus/audio_decoder_opus.h index 4e44309c24..138c0377df 100644 --- a/api/audio_codecs/opus/audio_decoder_opus.h +++ b/api/audio_codecs/opus/audio_decoder_opus.h @@ -18,7 +18,7 @@ #include "api/audio_codecs/audio_codec_pair_id.h" #include "api/audio_codecs/audio_decoder.h" #include "api/audio_codecs/audio_format.h" -#include "api/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "rtc_base/system/rtc_export.h" namespace webrtc { @@ -36,7 +36,7 @@ struct RTC_EXPORT AudioDecoderOpus { static std::unique_ptr MakeAudioDecoder( Config config, absl::optional codec_pair_id = absl::nullopt, - const WebRtcKeyValueConfig* field_trials = nullptr); + const FieldTrialsView* field_trials = nullptr); }; } // namespace webrtc diff --git a/api/audio_codecs/opus/audio_encoder_multi_channel_opus.cc b/api/audio_codecs/opus/audio_encoder_multi_channel_opus.cc index b71a0003fd..14f480b1ec 100644 --- a/api/audio_codecs/opus/audio_encoder_multi_channel_opus.cc +++ b/api/audio_codecs/opus/audio_encoder_multi_channel_opus.cc @@ -67,7 +67,7 @@ std::unique_ptr AudioEncoderMultiChannelOpus::MakeAudioEncoder( const AudioEncoderMultiChannelOpusConfig& config, int payload_type, absl::optional /*codec_pair_id*/, - const WebRtcKeyValueConfig* field_trials) { + const FieldTrialsView* field_trials) { return AudioEncoderMultiChannelOpusImpl::MakeAudioEncoder(config, payload_type); } diff --git a/api/audio_codecs/opus/audio_encoder_multi_channel_opus.h b/api/audio_codecs/opus/audio_encoder_multi_channel_opus.h index 58b959a9b8..c1c4db3577 100644 --- a/api/audio_codecs/opus/audio_encoder_multi_channel_opus.h +++ b/api/audio_codecs/opus/audio_encoder_multi_channel_opus.h @@ -19,7 +19,7 @@ #include "api/audio_codecs/audio_encoder.h" #include "api/audio_codecs/audio_format.h" #include "api/audio_codecs/opus/audio_encoder_multi_channel_opus_config.h" -#include "api/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "rtc_base/system/rtc_export.h" namespace webrtc { @@ -35,7 +35,7 @@ struct RTC_EXPORT AudioEncoderMultiChannelOpus { const Config& config, int payload_type, absl::optional codec_pair_id = absl::nullopt, - const WebRtcKeyValueConfig* field_trials = nullptr); + const FieldTrialsView* field_trials = nullptr); }; } // namespace webrtc diff --git a/api/audio_codecs/opus/audio_encoder_opus.cc b/api/audio_codecs/opus/audio_encoder_opus.cc index 26fe8cc786..5b6322da4c 100644 --- a/api/audio_codecs/opus/audio_encoder_opus.cc +++ b/api/audio_codecs/opus/audio_encoder_opus.cc @@ -33,7 +33,7 @@ std::unique_ptr AudioEncoderOpus::MakeAudioEncoder( const AudioEncoderOpusConfig& config, int payload_type, absl::optional /*codec_pair_id*/, - const WebRtcKeyValueConfig* field_trials) { + const FieldTrialsView* field_trials) { if (!config.IsOk()) { RTC_DCHECK_NOTREACHED(); return nullptr; diff --git a/api/audio_codecs/opus/audio_encoder_opus.h b/api/audio_codecs/opus/audio_encoder_opus.h index 4fb0337490..df93ae5303 100644 --- a/api/audio_codecs/opus/audio_encoder_opus.h +++ b/api/audio_codecs/opus/audio_encoder_opus.h @@ -19,7 +19,7 @@ #include "api/audio_codecs/audio_encoder.h" #include "api/audio_codecs/audio_format.h" #include "api/audio_codecs/opus/audio_encoder_opus_config.h" -#include "api/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "rtc_base/system/rtc_export.h" namespace webrtc { @@ -36,7 +36,7 @@ struct RTC_EXPORT AudioEncoderOpus { const AudioEncoderOpusConfig& config, int payload_type, absl::optional codec_pair_id = absl::nullopt, - const WebRtcKeyValueConfig* field_trials = nullptr); + const FieldTrialsView* field_trials = nullptr); }; } // namespace webrtc diff --git a/api/audio_codecs/opus_audio_encoder_factory.cc b/api/audio_codecs/opus_audio_encoder_factory.cc index 867d200e5f..8c286f21e1 100644 --- a/api/audio_codecs/opus_audio_encoder_factory.cc +++ b/api/audio_codecs/opus_audio_encoder_factory.cc @@ -38,7 +38,7 @@ struct NotAdvertised { const Config& config, int payload_type, absl::optional codec_pair_id = absl::nullopt, - const WebRtcKeyValueConfig* field_trials = nullptr) { + const FieldTrialsView* field_trials = nullptr) { return T::MakeAudioEncoder(config, payload_type, codec_pair_id, field_trials); } diff --git a/api/field_trials_view.h b/api/field_trials_view.h new file mode 100644 index 0000000000..299205d1d3 --- /dev/null +++ b/api/field_trials_view.h @@ -0,0 +1,46 @@ +/* + * Copyright 2019 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 API_FIELD_TRIALS_VIEW_H_ +#define API_FIELD_TRIALS_VIEW_H_ + +#include + +#include "absl/strings/string_view.h" +#include "rtc_base/system/rtc_export.h" + +namespace webrtc { + +// An interface that provides a key-value mapping for configuring internal +// details of WebRTC. Note that there's no guarantess that the meaning of a +// particular key value mapping will be preserved over time and no announcements +// will be made if they are changed. It's up to the library user to ensure that +// the behavior does not break. +class RTC_EXPORT FieldTrialsView { + public: + virtual ~FieldTrialsView() = default; + // The configured value for the given key. Defaults to an empty string. + virtual std::string Lookup(absl::string_view key) const = 0; + + bool IsEnabled(absl::string_view key) const { + return Lookup(key).find("Enabled") == 0; + } + + bool IsDisabled(absl::string_view key) const { + return Lookup(key).find("Disabled") == 0; + } +}; + +// TODO(bugs.webrtc.org/10335): Remove once all migrated to +// api/field_trials_view.h +typedef FieldTrialsView WebRtcKeyValueConfig; + +} // namespace webrtc + +#endif // API_FIELD_TRIALS_VIEW_H_ diff --git a/api/ice_transport_interface.h b/api/ice_transport_interface.h index c82027a427..9d8bd5abe3 100644 --- a/api/ice_transport_interface.h +++ b/api/ice_transport_interface.h @@ -27,7 +27,7 @@ class IceControllerFactoryInterface; } // namespace cricket namespace webrtc { -class WebRtcKeyValueConfig; +class FieldTrialsView; // An ICE transport, as represented to the outside world. // This object is refcounted, and is therefore alive until the @@ -84,8 +84,8 @@ struct IceTransportInit final { return ice_controller_factory_; } - const WebRtcKeyValueConfig* field_trials() { return field_trials_; } - void set_field_trials(const WebRtcKeyValueConfig* field_trials) { + const FieldTrialsView* field_trials() { return field_trials_; } + void set_field_trials(const FieldTrialsView* field_trials) { field_trials_ = field_trials; } @@ -96,7 +96,7 @@ struct IceTransportInit final { AsyncResolverFactory* async_resolver_factory_ = nullptr; RtcEventLog* event_log_ = nullptr; cricket::IceControllerFactoryInterface* ice_controller_factory_ = nullptr; - const WebRtcKeyValueConfig* field_trials_ = nullptr; + const FieldTrialsView* field_trials_ = nullptr; // TODO(https://crbug.com/webrtc/12657): Redesign to have const members. }; diff --git a/api/peer_connection_interface.h b/api/peer_connection_interface.h index 4c4a638ad5..2f8e401572 100644 --- a/api/peer_connection_interface.h +++ b/api/peer_connection_interface.h @@ -91,6 +91,7 @@ #include "api/data_channel_interface.h" #include "api/dtls_transport_interface.h" #include "api/fec_controller.h" +#include "api/field_trials_view.h" #include "api/ice_transport_interface.h" #include "api/jsep.h" #include "api/media_stream_interface.h" @@ -117,7 +118,6 @@ #include "api/transport/enums.h" #include "api/transport/network_control.h" #include "api/transport/sctp_transport_factory_interface.h" -#include "api/transport/webrtc_key_value_config.h" #include "api/turn_customizer.h" #include "api/video/video_bitrate_allocator_factory.h" #include "call/rtp_transport_controller_send_factory_interface.h" @@ -1435,7 +1435,7 @@ struct RTC_EXPORT PeerConnectionFactoryDependencies final { std::unique_ptr network_monitor_factory; std::unique_ptr neteq_factory; std::unique_ptr sctp_factory; - std::unique_ptr trials; + std::unique_ptr trials; std::unique_ptr transport_controller_send_factory; std::unique_ptr metronome; diff --git a/api/transport/BUILD.gn b/api/transport/BUILD.gn index fb0fcf7a64..39157b0a72 100644 --- a/api/transport/BUILD.gn +++ b/api/transport/BUILD.gn @@ -32,7 +32,7 @@ rtc_library("network_control") { ] deps = [ - ":webrtc_key_value_config", + "../../api:field_trials_view", "../rtc_event_log", "../units:data_rate", "../units:data_size", @@ -45,16 +45,6 @@ rtc_library("network_control") { ] } -rtc_source_set("webrtc_key_value_config") { - visibility = [ "*" ] - sources = [ "webrtc_key_value_config.h" ] - deps = [ - "../../api:webrtc_key_value_config", - "../../rtc_base/system:rtc_export", - ] - absl_deps = [ "//third_party/abseil-cpp/absl/strings" ] -} - rtc_library("field_trial_based_config") { visibility = [ "*" ] sources = [ @@ -62,7 +52,7 @@ rtc_library("field_trial_based_config") { "field_trial_based_config.h", ] deps = [ - ":webrtc_key_value_config", + "../../api:field_trials_view", "../../system_wrappers:field_trial", ] absl_deps = [ "//third_party/abseil-cpp/absl/strings" ] @@ -88,8 +78,8 @@ rtc_library("goog_cc") { ] deps = [ ":network_control", - ":webrtc_key_value_config", "..:network_state_predictor_api", + "../../api:field_trials_view", "../../modules/congestion_controller/goog_cc", ] absl_deps = [ "//third_party/abseil-cpp/absl/base:core_headers" ] diff --git a/api/transport/field_trial_based_config.h b/api/transport/field_trial_based_config.h index 0754570fde..f0063ff95e 100644 --- a/api/transport/field_trial_based_config.h +++ b/api/transport/field_trial_based_config.h @@ -13,11 +13,11 @@ #include #include "absl/strings/string_view.h" -#include "api/transport/webrtc_key_value_config.h" +#include "api/field_trials_view.h" namespace webrtc { // Implementation using the field trial API fo the key value lookup. -class FieldTrialBasedConfig : public WebRtcKeyValueConfig { +class FieldTrialBasedConfig : public FieldTrialsView { public: std::string Lookup(absl::string_view key) const override; }; diff --git a/api/transport/network_control.h b/api/transport/network_control.h index c2b005e713..862322443d 100644 --- a/api/transport/network_control.h +++ b/api/transport/network_control.h @@ -15,9 +15,9 @@ #include #include "absl/base/attributes.h" +#include "api/field_trials_view.h" #include "api/rtc_event_log/rtc_event_log.h" #include "api/transport/network_types.h" -#include "api/transport/webrtc_key_value_config.h" namespace webrtc { @@ -46,7 +46,7 @@ struct NetworkControllerConfig { // Optional override of configuration of WebRTC internals. Using nullptr here // indicates that the field trial API will be used. - const WebRtcKeyValueConfig* key_value_config = nullptr; + const FieldTrialsView* key_value_config = nullptr; // Optional override of event log. RtcEventLog* event_log = nullptr; }; @@ -132,7 +132,7 @@ class NetworkStateEstimator { class NetworkStateEstimatorFactory { public: virtual std::unique_ptr Create( - const WebRtcKeyValueConfig* key_value_config) = 0; + const FieldTrialsView* key_value_config) = 0; virtual ~NetworkStateEstimatorFactory() = default; }; } // namespace webrtc diff --git a/api/transport/webrtc_key_value_config.h b/api/transport/webrtc_key_value_config.h deleted file mode 100644 index f666873cfe..0000000000 --- a/api/transport/webrtc_key_value_config.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright 2019 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 API_TRANSPORT_WEBRTC_KEY_VALUE_CONFIG_H_ -#define API_TRANSPORT_WEBRTC_KEY_VALUE_CONFIG_H_ - -// TODO(bugs.webrtc.org/10335): Remove once all migrated to -// "api/webrtc_key_value_config.h". -#include "api/webrtc_key_value_config.h" - -#endif // API_TRANSPORT_WEBRTC_KEY_VALUE_CONFIG_H_ diff --git a/api/video/BUILD.gn b/api/video/BUILD.gn index c096be8931..dd78cac942 100644 --- a/api/video/BUILD.gn +++ b/api/video/BUILD.gn @@ -269,7 +269,7 @@ rtc_library("video_stream_decoder_create") { deps = [ ":video_stream_decoder", - "../../api:webrtc_key_value_config", + "../../api:field_trials_view", "../../rtc_base:rtc_base_approved", "../../video:video_stream_decoder_impl", "../task_queue", diff --git a/api/video/video_stream_decoder_create.cc b/api/video/video_stream_decoder_create.cc index c64a2d8d18..e14c3bc851 100644 --- a/api/video/video_stream_decoder_create.cc +++ b/api/video/video_stream_decoder_create.cc @@ -23,7 +23,7 @@ std::unique_ptr CreateVideoStreamDecoder( std::map> decoder_settings, // TODO(jonaso, webrtc:10335): Consider what to do with factories // vs. field trials. - const WebRtcKeyValueConfig* field_trials) { + const FieldTrialsView* field_trials) { return std::make_unique( callbacks, decoder_factory, task_queue_factory, std::move(decoder_settings), field_trials); diff --git a/api/video/video_stream_decoder_create.h b/api/video/video_stream_decoder_create.h index 9591412293..974fd804ce 100644 --- a/api/video/video_stream_decoder_create.h +++ b/api/video/video_stream_decoder_create.h @@ -15,10 +15,10 @@ #include #include +#include "api/field_trials_view.h" #include "api/task_queue/task_queue_factory.h" #include "api/video/video_stream_decoder.h" #include "api/video_codecs/sdp_video_format.h" -#include "api/webrtc_key_value_config.h" namespace webrtc { // The `decoder_settings` parameter is a map between: @@ -30,7 +30,7 @@ std::unique_ptr CreateVideoStreamDecoder( VideoDecoderFactory* decoder_factory, TaskQueueFactory* task_queue_factory, std::map> decoder_settings, - const WebRtcKeyValueConfig* field_trials = nullptr); + const FieldTrialsView* field_trials = nullptr); } // namespace webrtc diff --git a/api/webrtc_key_value_config.h b/api/webrtc_key_value_config.h index 32a2e47eed..e3cac59698 100644 --- a/api/webrtc_key_value_config.h +++ b/api/webrtc_key_value_config.h @@ -10,32 +10,8 @@ #ifndef API_WEBRTC_KEY_VALUE_CONFIG_H_ #define API_WEBRTC_KEY_VALUE_CONFIG_H_ -#include - -#include "absl/strings/string_view.h" -#include "rtc_base/system/rtc_export.h" - -namespace webrtc { - -// An interface that provides a key-value mapping for configuring internal -// details of WebRTC. Note that there's no guarantess that the meaning of a -// particular key value mapping will be preserved over time and no announcements -// will be made if they are changed. It's up to the library user to ensure that -// the behavior does not break. -class RTC_EXPORT WebRtcKeyValueConfig { - public: - virtual ~WebRtcKeyValueConfig() = default; - // The configured value for the given key. Defaults to an empty string. - virtual std::string Lookup(absl::string_view key) const = 0; - - bool IsEnabled(absl::string_view key) const { - return Lookup(key).find("Enabled") == 0; - } - - bool IsDisabled(absl::string_view key) const { - return Lookup(key).find("Disabled") == 0; - } -}; -} // namespace webrtc +// TODO(bugs.webrtc.org/10335): Remove once all migrated to +// api/field_trials_view.h +#include "api/field_trials_view.h" #endif // API_WEBRTC_KEY_VALUE_CONFIG_H_ diff --git a/audio/BUILD.gn b/audio/BUILD.gn index 5e51699d6e..6ff297597f 100644 --- a/audio/BUILD.gn +++ b/audio/BUILD.gn @@ -42,6 +42,7 @@ rtc_library("audio") { deps = [ "../api:array_view", "../api:call_api", + "../api:field_trials_view", "../api:frame_transformer_interface", "../api:function_view", "../api:rtp_headers", @@ -49,7 +50,6 @@ rtc_library("audio") { "../api:scoped_refptr", "../api:sequence_checker", "../api:transport_api", - "../api:webrtc_key_value_config", "../api/audio:aec3_factory", "../api/audio:audio_frame_api", "../api/audio:audio_frame_processor", diff --git a/audio/audio_send_stream.cc b/audio/audio_send_stream.cc index c291534b4d..cc1320cef4 100644 --- a/audio/audio_send_stream.cc +++ b/audio/audio_send_stream.cc @@ -88,7 +88,7 @@ std::unique_ptr AudioAllocationConfig::Parser() { } AudioAllocationConfig::AudioAllocationConfig( - const WebRtcKeyValueConfig& field_trials) { + const FieldTrialsView& field_trials) { Parser()->Parse(field_trials.Lookup(kKey)); if (priority_bitrate_raw && !priority_bitrate.IsZero()) { RTC_LOG(LS_WARNING) << "'priority_bitrate' and '_raw' are mutually " @@ -107,7 +107,7 @@ AudioSendStream::AudioSendStream( RtcEventLog* event_log, RtcpRttStats* rtcp_rtt_stats, const absl::optional& suspended_rtp_state, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : AudioSendStream( clock, config, @@ -142,7 +142,7 @@ AudioSendStream::AudioSendStream( RtcEventLog* event_log, const absl::optional& suspended_rtp_state, std::unique_ptr channel_send, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : clock_(clock), field_trials_(field_trials), rtp_transport_queue_(rtp_transport->GetWorkerQueue()), diff --git a/audio/audio_send_stream.h b/audio/audio_send_stream.h index ad40a8939b..23c7213847 100644 --- a/audio/audio_send_stream.h +++ b/audio/audio_send_stream.h @@ -15,8 +15,8 @@ #include #include +#include "api/field_trials_view.h" #include "api/sequence_checker.h" -#include "api/webrtc_key_value_config.h" #include "audio/audio_level.h" #include "audio/channel_send.h" #include "call/audio_send_stream.h" @@ -47,7 +47,7 @@ struct AudioAllocationConfig { absl::optional bitrate_priority; std::unique_ptr Parser(); - explicit AudioAllocationConfig(const WebRtcKeyValueConfig& field_trials); + explicit AudioAllocationConfig(const FieldTrialsView& field_trials); }; namespace internal { class AudioState; @@ -64,7 +64,7 @@ class AudioSendStream final : public webrtc::AudioSendStream, RtcEventLog* event_log, RtcpRttStats* rtcp_rtt_stats, const absl::optional& suspended_rtp_state, - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); // For unit tests, which need to supply a mock ChannelSend. AudioSendStream(Clock* clock, const webrtc::AudioSendStream::Config& config, @@ -75,7 +75,7 @@ class AudioSendStream final : public webrtc::AudioSendStream, RtcEventLog* event_log, const absl::optional& suspended_rtp_state, std::unique_ptr channel_send, - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); AudioSendStream() = delete; AudioSendStream(const AudioSendStream&) = delete; @@ -163,7 +163,7 @@ class AudioSendStream final : public webrtc::AudioSendStream, RTC_RUN_ON(worker_thread_checker_); Clock* clock_; - const WebRtcKeyValueConfig& field_trials_; + const FieldTrialsView& field_trials_; SequenceChecker worker_thread_checker_; SequenceChecker pacer_thread_checker_; diff --git a/audio/channel_send.cc b/audio/channel_send.cc index d6b5823f3e..3f2f13c015 100644 --- a/audio/channel_send.cc +++ b/audio/channel_send.cc @@ -78,7 +78,7 @@ class ChannelSend : public ChannelSendInterface, uint32_t ssrc, rtc::scoped_refptr frame_transformer, TransportFeedbackObserver* feedback_observer, - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); ~ChannelSend() override; @@ -459,7 +459,7 @@ ChannelSend::ChannelSend( uint32_t ssrc, rtc::scoped_refptr frame_transformer, TransportFeedbackObserver* feedback_observer, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : ssrc_(ssrc), event_log_(rtc_event_log), _timeStamp(0), // This is just an offset, RTP module will add it's own @@ -950,7 +950,7 @@ std::unique_ptr CreateChannelSend( uint32_t ssrc, rtc::scoped_refptr frame_transformer, TransportFeedbackObserver* feedback_observer, - const WebRtcKeyValueConfig& field_trials) { + const FieldTrialsView& field_trials) { return std::make_unique( clock, task_queue_factory, rtp_transport, rtcp_rtt_stats, rtc_event_log, frame_encryptor, crypto_options, extmap_allow_mixed, diff --git a/audio/channel_send.h b/audio/channel_send.h index bfbfbeedfa..a555b89171 100644 --- a/audio/channel_send.h +++ b/audio/channel_send.h @@ -18,10 +18,10 @@ #include "api/audio/audio_frame.h" #include "api/audio_codecs/audio_encoder.h" #include "api/crypto/crypto_options.h" +#include "api/field_trials_view.h" #include "api/frame_transformer_interface.h" #include "api/function_view.h" #include "api/task_queue/task_queue_factory.h" -#include "api/webrtc_key_value_config.h" #include "modules/rtp_rtcp/include/report_block_data.h" #include "modules/rtp_rtcp/source/rtp_rtcp_interface.h" #include "modules/rtp_rtcp/source/rtp_sender_audio.h" @@ -137,7 +137,7 @@ std::unique_ptr CreateChannelSend( uint32_t ssrc, rtc::scoped_refptr frame_transformer, TransportFeedbackObserver* feedback_observer, - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); } // namespace voe } // namespace webrtc diff --git a/call/BUILD.gn b/call/BUILD.gn index cb85febcaf..7bbb44d5db 100644 --- a/call/BUILD.gn +++ b/call/BUILD.gn @@ -42,6 +42,7 @@ rtc_library("call_interfaces") { ":rtp_interfaces", ":video_stream_api", "../api:fec_controller_api", + "../api:field_trials_view", "../api:frame_transformer_interface", "../api:network_state_predictor_api", "../api:rtc_error", @@ -60,7 +61,6 @@ rtc_library("call_interfaces") { "../api/task_queue", "../api/transport:bitrate_settings", "../api/transport:network_control", - "../api/transport:webrtc_key_value_config", "../modules/async_audio_processing", "../modules/audio_device", "../modules/audio_processing", @@ -106,6 +106,7 @@ rtc_library("rtp_interfaces") { deps = [ "../api:array_view", "../api:fec_controller_api", + "../api:field_trials_view", "../api:frame_transformer_interface", "../api:network_state_predictor_api", "../api:rtp_headers", @@ -114,7 +115,6 @@ rtc_library("rtp_interfaces") { "../api/rtc_event_log", "../api/transport:bitrate_settings", "../api/transport:network_control", - "../api/transport:webrtc_key_value_config", "../api/units:timestamp", "../common_video:frame_counts", "../modules/rtp_rtcp:rtp_rtcp_format", @@ -174,11 +174,11 @@ rtc_library("rtp_sender") { "../api:array_view", "../api:bitrate_allocation", "../api:fec_controller_api", + "../api:field_trials_view", "../api:network_state_predictor_api", "../api:rtp_parameters", "../api:sequence_checker", "../api:transport_api", - "../api:webrtc_key_value_config", "../api/rtc_event_log", "../api/transport:field_trial_based_config", "../api/transport:goog_cc", @@ -286,12 +286,12 @@ rtc_library("call") { "../api:array_view", "../api:callfactory_api", "../api:fec_controller_api", + "../api:field_trials_view", "../api:rtp_headers", "../api:rtp_parameters", "../api:sequence_checker", "../api:simulated_network_api", "../api:transport_api", - "../api:webrtc_key_value_config", "../api/rtc_event_log", "../api/transport:network_control", "../api/units:time_delta", diff --git a/call/adaptation/BUILD.gn b/call/adaptation/BUILD.gn index 4661c3e2f6..9ce8ccdf9d 100644 --- a/call/adaptation/BUILD.gn +++ b/call/adaptation/BUILD.gn @@ -32,10 +32,10 @@ rtc_library("resource_adaptation") { "video_stream_input_state_provider.h", ] deps = [ + "../../api:field_trials_view", "../../api:rtp_parameters", "../../api:scoped_refptr", "../../api:sequence_checker", - "../../api:webrtc_key_value_config", "../../api/adaptation:resource_adaptation_api", "../../api/task_queue:task_queue", "../../api/video:video_adaptation", diff --git a/call/adaptation/video_stream_adapter.cc b/call/adaptation/video_stream_adapter.cc index 313bcc33de..f30a4d7abb 100644 --- a/call/adaptation/video_stream_adapter.cc +++ b/call/adaptation/video_stream_adapter.cc @@ -204,7 +204,7 @@ const VideoAdaptationCounters& Adaptation::counters() const { VideoStreamAdapter::VideoStreamAdapter( VideoStreamInputStateProvider* input_state_provider, VideoStreamEncoderObserver* encoder_stats_observer, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : input_state_provider_(input_state_provider), encoder_stats_observer_(encoder_stats_observer), balanced_settings_(field_trials), diff --git a/call/adaptation/video_stream_adapter.h b/call/adaptation/video_stream_adapter.h index a4a52f400a..92a5aec058 100644 --- a/call/adaptation/video_stream_adapter.h +++ b/call/adaptation/video_stream_adapter.h @@ -18,10 +18,10 @@ #include "absl/types/optional.h" #include "absl/types/variant.h" #include "api/adaptation/resource.h" +#include "api/field_trials_view.h" #include "api/rtp_parameters.h" #include "api/video/video_adaptation_counters.h" #include "api/video/video_stream_encoder_observer.h" -#include "api/webrtc_key_value_config.h" #include "call/adaptation/adaptation_constraint.h" #include "call/adaptation/degradation_preference_provider.h" #include "call/adaptation/video_source_restrictions.h" @@ -125,7 +125,7 @@ class VideoStreamAdapter { public: VideoStreamAdapter(VideoStreamInputStateProvider* input_state_provider, VideoStreamEncoderObserver* encoder_stats_observer, - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); ~VideoStreamAdapter(); VideoSourceRestrictions source_restrictions() const; diff --git a/call/call.cc b/call/call.cc index 22907b9298..5b306610ea 100644 --- a/call/call.cc +++ b/call/call.cc @@ -247,7 +247,7 @@ class Call final : public webrtc::Call, Stats GetStats() const override; - const WebRtcKeyValueConfig& trials() const override; + const FieldTrialsView& trials() const override; TaskQueueBase* network_thread() const override; TaskQueueBase* worker_thread() const override; @@ -379,7 +379,7 @@ class Call final : public webrtc::Call, const std::unique_ptr bitrate_allocator_; const Call::Config config_ RTC_GUARDED_BY(worker_thread_); // Maps to config_.trials, can be used from any thread via `trials()`. - const WebRtcKeyValueConfig& trials_; + const FieldTrialsView& trials_; NetworkState audio_network_state_ RTC_GUARDED_BY(worker_thread_); NetworkState video_network_state_ RTC_GUARDED_BY(worker_thread_); @@ -1295,7 +1295,7 @@ Call::Stats Call::GetStats() const { return stats; } -const WebRtcKeyValueConfig& Call::trials() const { +const FieldTrialsView& Call::trials() const { return trials_; } diff --git a/call/call.h b/call/call.h index 11451c5c82..e4652d259a 100644 --- a/call/call.h +++ b/call/call.h @@ -174,7 +174,7 @@ class Call { virtual void SetClientBitratePreferences( const BitrateSettings& preferences) = 0; - virtual const WebRtcKeyValueConfig& trials() const = 0; + virtual const FieldTrialsView& trials() const = 0; virtual TaskQueueBase* network_thread() const = 0; virtual TaskQueueBase* worker_thread() const = 0; diff --git a/call/call_config.h b/call/call_config.h index ef505a4b0a..3072fa452f 100644 --- a/call/call_config.h +++ b/call/call_config.h @@ -11,6 +11,7 @@ #define CALL_CALL_CONFIG_H_ #include "api/fec_controller.h" +#include "api/field_trials_view.h" #include "api/metronome/metronome.h" #include "api/neteq/neteq_factory.h" #include "api/network_state_predictor.h" @@ -18,7 +19,6 @@ #include "api/task_queue/task_queue_factory.h" #include "api/transport/bitrate_settings.h" #include "api/transport/network_control.h" -#include "api/transport/webrtc_key_value_config.h" #include "call/audio_state.h" #include "call/rtp_transport_config.h" #include "call/rtp_transport_controller_send_factory_interface.h" @@ -70,7 +70,7 @@ struct CallConfig { // Key-value mapping of internal configurations to apply, // e.g. field trials. - const WebRtcKeyValueConfig* trials = nullptr; + const FieldTrialsView* trials = nullptr; TaskQueueBase* const network_task_queue_ = nullptr; // RtpTransportControllerSend to use for this call. diff --git a/call/call_factory.cc b/call/call_factory.cc index 40357850a1..6d4b2aa211 100644 --- a/call/call_factory.cc +++ b/call/call_factory.cc @@ -31,7 +31,7 @@ namespace webrtc { namespace { using TimeScopedNetworkConfig = DegradedCall::TimeScopedNetworkConfig; -bool ParseConfigParam(const WebRtcKeyValueConfig& trials, +bool ParseConfigParam(const FieldTrialsView& trials, absl::string_view exp_name, int* field) { std::string group = trials.Lookup(exp_name); @@ -42,7 +42,7 @@ bool ParseConfigParam(const WebRtcKeyValueConfig& trials, } absl::optional ParseDegradationConfig( - const WebRtcKeyValueConfig& trials, + const FieldTrialsView& trials, bool send) { std::string exp_prefix = "WebRTCFakeNetwork"; if (send) { @@ -80,7 +80,7 @@ absl::optional ParseDegradationConfig( } std::vector GetNetworkConfigs( - const WebRtcKeyValueConfig& trials, + const FieldTrialsView& trials, bool send) { FieldTrialStructList trials_list( {FieldTrialStructMember("queue_length_packets", diff --git a/call/degraded_call.cc b/call/degraded_call.cc index 0d01e8696d..ef53851d46 100644 --- a/call/degraded_call.cc +++ b/call/degraded_call.cc @@ -277,7 +277,7 @@ Call::Stats DegradedCall::GetStats() const { return call_->GetStats(); } -const WebRtcKeyValueConfig& DegradedCall::trials() const { +const FieldTrialsView& DegradedCall::trials() const { return call_->trials(); } diff --git a/call/degraded_call.h b/call/degraded_call.h index dd80a0c5dd..dfd041a1c5 100644 --- a/call/degraded_call.h +++ b/call/degraded_call.h @@ -90,7 +90,7 @@ class DegradedCall : public Call, private PacketReceiver { Stats GetStats() const override; - const WebRtcKeyValueConfig& trials() const override; + const FieldTrialsView& trials() const override; TaskQueueBase* network_thread() const override; TaskQueueBase* worker_thread() const override; diff --git a/call/receive_time_calculator.cc b/call/receive_time_calculator.cc index d6ffd39d6d..417168b15d 100644 --- a/call/receive_time_calculator.cc +++ b/call/receive_time_calculator.cc @@ -24,7 +24,7 @@ const char kBweReceiveTimeCorrection[] = "WebRTC-Bwe-ReceiveTimeFix"; } // namespace ReceiveTimeCalculatorConfig::ReceiveTimeCalculatorConfig( - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : max_packet_time_repair("maxrep", TimeDelta::Millis(2000)), stall_threshold("stall", TimeDelta::Millis(5)), tolerance("tol", TimeDelta::Millis(1)), @@ -39,12 +39,12 @@ ReceiveTimeCalculatorConfig::ReceiveTimeCalculatorConfig( ReceiveTimeCalculatorConfig::~ReceiveTimeCalculatorConfig() = default; ReceiveTimeCalculator::ReceiveTimeCalculator( - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : config_(field_trials) {} std::unique_ptr ReceiveTimeCalculator::CreateFromFieldTrial( - const WebRtcKeyValueConfig& field_trials) { + const FieldTrialsView& field_trials) { if (!field_trials.IsEnabled(kBweReceiveTimeCorrection)) return nullptr; return std::make_unique(field_trials); diff --git a/call/receive_time_calculator.h b/call/receive_time_calculator.h index 276ddda720..57ba331844 100644 --- a/call/receive_time_calculator.h +++ b/call/receive_time_calculator.h @@ -14,15 +14,14 @@ #include +#include "api/field_trials_view.h" #include "api/units/time_delta.h" -#include "api/webrtc_key_value_config.h" #include "rtc_base/experiments/field_trial_parser.h" namespace webrtc { struct ReceiveTimeCalculatorConfig { - explicit ReceiveTimeCalculatorConfig( - const WebRtcKeyValueConfig& field_trials); + explicit ReceiveTimeCalculatorConfig(const FieldTrialsView& field_trials); ReceiveTimeCalculatorConfig(const ReceiveTimeCalculatorConfig&); ReceiveTimeCalculatorConfig& operator=(const ReceiveTimeCalculatorConfig&) = default; @@ -44,8 +43,8 @@ struct ReceiveTimeCalculatorConfig { class ReceiveTimeCalculator { public: static std::unique_ptr CreateFromFieldTrial( - const WebRtcKeyValueConfig& field_trials); - explicit ReceiveTimeCalculator(const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); + explicit ReceiveTimeCalculator(const FieldTrialsView& field_trials); int64_t ReconcileReceiveTimes(int64_t packet_time_us_, int64_t system_time_us_, int64_t safe_time_us_); diff --git a/call/rtp_payload_params.cc b/call/rtp_payload_params.cc index 5eff91fa5c..ddd44709e5 100644 --- a/call/rtp_payload_params.cc +++ b/call/rtp_payload_params.cc @@ -127,7 +127,7 @@ void SetVideoTiming(const EncodedImage& image, VideoSendTiming* timing) { RtpPayloadParams::RtpPayloadParams(const uint32_t ssrc, const RtpPayloadState* state, - const WebRtcKeyValueConfig& trials) + const FieldTrialsView& trials) : ssrc_(ssrc), generic_picture_id_experiment_( absl::StartsWith(trials.Lookup("WebRTC-GenericPictureId"), diff --git a/call/rtp_payload_params.h b/call/rtp_payload_params.h index b1680a9ac0..ff2de731e7 100644 --- a/call/rtp_payload_params.h +++ b/call/rtp_payload_params.h @@ -15,8 +15,8 @@ #include #include "absl/types/optional.h" +#include "api/field_trials_view.h" #include "api/video_codecs/video_encoder.h" -#include "api/webrtc_key_value_config.h" #include "call/rtp_config.h" #include "modules/rtp_rtcp/source/rtp_generic_frame_descriptor.h" #include "modules/rtp_rtcp/source/rtp_video_header.h" @@ -34,7 +34,7 @@ class RtpPayloadParams final { public: RtpPayloadParams(uint32_t ssrc, const RtpPayloadState* state, - const WebRtcKeyValueConfig& trials); + const FieldTrialsView& trials); RtpPayloadParams(const RtpPayloadParams& other); ~RtpPayloadParams(); diff --git a/call/rtp_transport_config.h b/call/rtp_transport_config.h index 3a2c76b3d7..f2030b3672 100644 --- a/call/rtp_transport_config.h +++ b/call/rtp_transport_config.h @@ -13,11 +13,11 @@ #include +#include "api/field_trials_view.h" #include "api/network_state_predictor.h" #include "api/rtc_event_log/rtc_event_log.h" #include "api/transport/bitrate_settings.h" #include "api/transport/network_control.h" -#include "api/transport/webrtc_key_value_config.h" #include "rtc_base/task_queue.h" namespace webrtc { @@ -43,7 +43,7 @@ struct RtpTransportConfig { // Key-value mapping of internal configurations to apply, // e.g. field trials. - const WebRtcKeyValueConfig* trials = nullptr; + const FieldTrialsView* trials = nullptr; }; } // namespace webrtc diff --git a/call/rtp_transport_controller_send.cc b/call/rtp_transport_controller_send.cc index f3663246ac..e9a860256d 100644 --- a/call/rtp_transport_controller_send.cc +++ b/call/rtp_transport_controller_send.cc @@ -59,11 +59,11 @@ TargetRateConstraints ConvertConstraints(const BitrateConstraints& contraints, contraints.start_bitrate_bps, clock); } -bool IsEnabled(const WebRtcKeyValueConfig& trials, absl::string_view key) { +bool IsEnabled(const FieldTrialsView& trials, absl::string_view key) { return absl::StartsWith(trials.Lookup(key), "Enabled"); } -bool IsDisabled(const WebRtcKeyValueConfig& trials, absl::string_view key) { +bool IsDisabled(const FieldTrialsView& trials, absl::string_view key) { return absl::StartsWith(trials.Lookup(key), "Disabled"); } @@ -74,7 +74,7 @@ bool IsRelayed(const rtc::NetworkRoute& route) { } // namespace RtpTransportControllerSend::PacerSettings::PacerSettings( - const WebRtcKeyValueConfig& trials) + const FieldTrialsView& trials) : tq_disabled("Disabled"), holdback_window("holdback_window", PacingController::kMinSleepTime), holdback_packets("holdback_packets", @@ -91,7 +91,7 @@ RtpTransportControllerSend::RtpTransportControllerSend( const BitrateConstraints& bitrate_config, std::unique_ptr process_thread, TaskQueueFactory* task_queue_factory, - const WebRtcKeyValueConfig& trials) + const FieldTrialsView& trials) : clock_(clock), event_log_(event_log), bitrate_configurator_(bitrate_config), diff --git a/call/rtp_transport_controller_send.h b/call/rtp_transport_controller_send.h index ba14fdd24f..d9461db98a 100644 --- a/call/rtp_transport_controller_send.h +++ b/call/rtp_transport_controller_send.h @@ -59,7 +59,7 @@ class RtpTransportControllerSend final const BitrateConstraints& bitrate_config, std::unique_ptr process_thread, TaskQueueFactory* task_queue_factory, - const WebRtcKeyValueConfig& trials); + const FieldTrialsView& trials); ~RtpTransportControllerSend() override; RtpTransportControllerSend(const RtpTransportControllerSend&) = delete; @@ -132,7 +132,7 @@ class RtpTransportControllerSend final private: struct PacerSettings { - explicit PacerSettings(const WebRtcKeyValueConfig& trials); + explicit PacerSettings(const FieldTrialsView& trials); bool use_task_queue_pacer() const { return !tq_disabled.Get(); } @@ -223,7 +223,7 @@ class RtpTransportControllerSend final // and deleted before any other members. rtc::TaskQueue task_queue_; - const WebRtcKeyValueConfig& field_trials_; + const FieldTrialsView& field_trials_; }; } // namespace webrtc diff --git a/call/rtp_video_sender.cc b/call/rtp_video_sender.cc index c5de3a72d9..116c878559 100644 --- a/call/rtp_video_sender.cc +++ b/call/rtp_video_sender.cc @@ -56,7 +56,7 @@ static const size_t kPathMTU = 1500; using webrtc_internal_rtp_video_sender::RtpStreamSender; bool PayloadTypeSupportsSkippingFecPackets(const std::string& payload_name, - const WebRtcKeyValueConfig& trials) { + const FieldTrialsView& trials) { const VideoCodecType codecType = PayloadStringToCodecType(payload_name); if (codecType == kVideoCodecVP8 || codecType == kVideoCodecVP9) { return true; @@ -70,7 +70,7 @@ bool PayloadTypeSupportsSkippingFecPackets(const std::string& payload_name, bool ShouldDisableRedAndUlpfec(bool flexfec_enabled, const RtpConfig& rtp_config, - const WebRtcKeyValueConfig& trials) { + const FieldTrialsView& trials) { // Consistency of NACK and RED+ULPFEC parameters is checked in this function. const bool nack_enabled = rtp_config.nack.rtp_history_ms > 0; @@ -126,7 +126,7 @@ std::unique_ptr MaybeCreateFecGenerator( const RtpConfig& rtp, const std::map& suspended_ssrcs, int simulcast_index, - const WebRtcKeyValueConfig& trials) { + const FieldTrialsView& trials) { // If flexfec is configured that takes priority. if (rtp.flexfec.payload_type >= 0) { RTC_DCHECK_GE(rtp.flexfec.payload_type, 0); @@ -197,7 +197,7 @@ std::vector CreateRtpStreamSenders( FrameEncryptorInterface* frame_encryptor, const CryptoOptions& crypto_options, rtc::scoped_refptr frame_transformer, - const WebRtcKeyValueConfig& trials) { + const FieldTrialsView& trials) { RTC_DCHECK_GT(rtp_config.ssrcs.size(), 0); RtpRtcpInterface::Configuration configuration; @@ -359,7 +359,7 @@ RtpVideoSender::RtpVideoSender( FrameEncryptorInterface* frame_encryptor, const CryptoOptions& crypto_options, rtc::scoped_refptr frame_transformer, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : field_trials_(field_trials), send_side_bwe_with_overhead_(!absl::StartsWith( field_trials_.Lookup("WebRTC-SendSideBwe-WithOverhead"), diff --git a/call/rtp_video_sender.h b/call/rtp_video_sender.h index 1fa9a8bd1e..c4a2b92011 100644 --- a/call/rtp_video_sender.h +++ b/call/rtp_video_sender.h @@ -21,10 +21,10 @@ #include "api/call/transport.h" #include "api/fec_controller.h" #include "api/fec_controller_override.h" +#include "api/field_trials_view.h" #include "api/rtc_event_log/rtc_event_log.h" #include "api/sequence_checker.h" #include "api/video_codecs/video_encoder.h" -#include "api/webrtc_key_value_config.h" #include "call/rtp_config.h" #include "call/rtp_payload_params.h" #include "call/rtp_transport_controller_send_interface.h" @@ -86,7 +86,7 @@ class RtpVideoSender : public RtpVideoSenderInterface, FrameEncryptorInterface* frame_encryptor, const CryptoOptions& crypto_options, // move inside RtpTransport rtc::scoped_refptr frame_transformer, - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); ~RtpVideoSender() override; RtpVideoSender(const RtpVideoSender&) = delete; @@ -167,7 +167,7 @@ class RtpVideoSender : public RtpVideoSenderInterface, DataSize overhead_per_packet, Frequency framerate) const; - const WebRtcKeyValueConfig& field_trials_; + const FieldTrialsView& field_trials_; const bool send_side_bwe_with_overhead_; const bool use_frame_rate_for_overhead_; const bool has_packet_feedback_; diff --git a/call/rtp_video_sender_unittest.cc b/call/rtp_video_sender_unittest.cc index 7962ce29c9..b482b7fbe2 100644 --- a/call/rtp_video_sender_unittest.cc +++ b/call/rtp_video_sender_unittest.cc @@ -119,7 +119,7 @@ class RtpVideoSenderTestFixture { const std::map& suspended_payload_states, FrameCountObserver* frame_count_observer, rtc::scoped_refptr frame_transformer, - const WebRtcKeyValueConfig* field_trials = nullptr) + const FieldTrialsView* field_trials = nullptr) : time_controller_(Timestamp::Millis(1000000)), config_(CreateVideoSendStreamConfig(&transport_, ssrcs, @@ -162,7 +162,7 @@ class RtpVideoSenderTestFixture { int payload_type, const std::map& suspended_payload_states, FrameCountObserver* frame_count_observer, - const WebRtcKeyValueConfig* field_trials = nullptr) + const FieldTrialsView* field_trials = nullptr) : RtpVideoSenderTestFixture(ssrcs, rtx_ssrcs, payload_type, @@ -176,7 +176,7 @@ class RtpVideoSenderTestFixture { const std::vector& rtx_ssrcs, int payload_type, const std::map& suspended_payload_states, - const WebRtcKeyValueConfig* field_trials = nullptr) + const FieldTrialsView* field_trials = nullptr) : RtpVideoSenderTestFixture(ssrcs, rtx_ssrcs, payload_type, diff --git a/media/BUILD.gn b/media/BUILD.gn index b9d92089af..eb29077696 100644 --- a/media/BUILD.gn +++ b/media/BUILD.gn @@ -51,13 +51,13 @@ rtc_library("rtc_media_base") { ":rtc_media_config", "../api:array_view", "../api:audio_options_api", + "../api:field_trials_view", "../api:frame_transformer_interface", "../api:media_stream_interface", "../api:rtc_error", "../api:rtp_parameters", "../api:scoped_refptr", "../api:sequence_checker", - "../api:webrtc_key_value_config", "../api/audio:audio_frame_processor", "../api/audio_codecs:audio_codecs_api", "../api/crypto:frame_decryptor_interface", @@ -249,6 +249,7 @@ rtc_library("rtc_audio_video") { deps = [ ":rtc_media_base", "../api:call_api", + "../api:field_trials_view", "../api:libjingle_peerconnection_api", "../api:media_stream_interface", "../api:rtp_parameters", @@ -261,7 +262,6 @@ rtc_library("rtc_audio_video") { "../api/task_queue", "../api/transport:bitrate_settings", "../api/transport:field_trial_based_config", - "../api/transport:webrtc_key_value_config", "../api/transport/rtp:rtp_source", "../api/units:data_rate", "../api/video:video_bitrate_allocation", @@ -453,7 +453,7 @@ rtc_library("rtc_data_sctp_transport_factory") { ] deps = [ ":rtc_data_sctp_transport_internal", - "../api:webrtc_key_value_config", + "../api:field_trials_view", "../api/transport:sctp_transport_factory_interface", "../rtc_base:threading", "../rtc_base/experiments:field_trial_parser", diff --git a/media/base/codec.cc b/media/base/codec.cc index a01914dff5..4935e94b25 100644 --- a/media/base/codec.cc +++ b/media/base/codec.cc @@ -129,7 +129,7 @@ bool Codec::operator==(const Codec& c) const { } bool Codec::Matches(const Codec& codec, - const webrtc::WebRtcKeyValueConfig* field_trials) const { + const webrtc::FieldTrialsView* field_trials) const { // Match the codec id/name based on the typical static/dynamic name rules. // Matching is case-insensitive. @@ -238,9 +238,8 @@ bool AudioCodec::operator==(const AudioCodec& c) const { return bitrate == c.bitrate && channels == c.channels && Codec::operator==(c); } -bool AudioCodec::Matches( - const AudioCodec& codec, - const webrtc::WebRtcKeyValueConfig* field_trials) const { +bool AudioCodec::Matches(const AudioCodec& codec, + const webrtc::FieldTrialsView* field_trials) const { // If a nonzero clockrate is specified, it must match the actual clockrate. // If a nonzero bitrate is specified, it must match the actual bitrate, // unless the codec is VBR (0), where we just force the supplied value. @@ -326,9 +325,8 @@ bool VideoCodec::operator==(const VideoCodec& c) const { return Codec::operator==(c) && packetization == c.packetization; } -bool VideoCodec::Matches( - const VideoCodec& other, - const webrtc::WebRtcKeyValueConfig* field_trials) const { +bool VideoCodec::Matches(const VideoCodec& other, + const webrtc::FieldTrialsView* field_trials) const { return Codec::Matches(other, field_trials) && IsSameCodecSpecific(name, params, other.name, other.params); } diff --git a/media/base/codec.h b/media/base/codec.h index 70ecfd326d..c07cf60025 100644 --- a/media/base/codec.h +++ b/media/base/codec.h @@ -17,9 +17,9 @@ #include #include "absl/types/optional.h" +#include "api/field_trials_view.h" #include "api/rtp_parameters.h" #include "api/video_codecs/sdp_video_format.h" -#include "api/webrtc_key_value_config.h" #include "media/base/media_constants.h" #include "rtc_base/system/rtc_export.h" @@ -76,9 +76,8 @@ struct RTC_EXPORT Codec { virtual ~Codec(); // Indicates if this codec is compatible with the specified codec. - bool Matches( - const Codec& codec, - const webrtc::WebRtcKeyValueConfig* field_trials = nullptr) const; + bool Matches(const Codec& codec, + const webrtc::FieldTrialsView* field_trials = nullptr) const; bool MatchesCapability(const webrtc::RtpCodecCapability& capability) const; // Find the parameter for `name` and write the value to `out`. @@ -135,9 +134,8 @@ struct AudioCodec : public Codec { ~AudioCodec() override = default; // Indicates if this codec is compatible with the specified codec. - bool Matches( - const AudioCodec& codec, - const webrtc::WebRtcKeyValueConfig* field_trials = nullptr) const; + bool Matches(const AudioCodec& codec, + const webrtc::FieldTrialsView* field_trials = nullptr) const; std::string ToString() const; @@ -168,9 +166,8 @@ struct RTC_EXPORT VideoCodec : public Codec { // Indicates if this video codec is the same as the other video codec, e.g. if // they are both VP8 or VP9, or if they are both H264 with the same H264 // profile. H264 levels however are not compared. - bool Matches( - const VideoCodec& codec, - const webrtc::WebRtcKeyValueConfig* field_trials = nullptr) const; + bool Matches(const VideoCodec& codec, + const webrtc::FieldTrialsView* field_trials = nullptr) const; std::string ToString() const; diff --git a/media/base/media_engine.cc b/media/base/media_engine.cc index 21c3787382..813657eb00 100644 --- a/media/base/media_engine.cc +++ b/media/base/media_engine.cc @@ -152,7 +152,7 @@ webrtc::RTCError CheckRtpParametersInvalidModificationAndValues( } CompositeMediaEngine::CompositeMediaEngine( - std::unique_ptr trials, + std::unique_ptr trials, std::unique_ptr audio_engine, std::unique_ptr video_engine) : trials_(std::move(trials)), diff --git a/media/base/media_engine.h b/media/base/media_engine.h index 7b4dbe4364..5a6a8c29a0 100644 --- a/media/base/media_engine.h +++ b/media/base/media_engine.h @@ -18,9 +18,9 @@ #include "api/audio_codecs/audio_decoder_factory.h" #include "api/audio_codecs/audio_encoder_factory.h" #include "api/crypto/crypto_options.h" +#include "api/field_trials_view.h" #include "api/rtp_parameters.h" #include "api/video/video_bitrate_allocator_factory.h" -#include "api/webrtc_key_value_config.h" #include "call/audio_state.h" #include "media/base/codec.h" #include "media/base/media_channel.h" @@ -137,10 +137,10 @@ class MediaEngineInterface { // CompositeMediaEngine constructs a MediaEngine from separate // voice and video engine classes. -// Optionally owns a WebRtcKeyValueConfig trials map. +// Optionally owns a FieldTrialsView trials map. class CompositeMediaEngine : public MediaEngineInterface { public: - CompositeMediaEngine(std::unique_ptr trials, + CompositeMediaEngine(std::unique_ptr trials, std::unique_ptr audio_engine, std::unique_ptr video_engine); CompositeMediaEngine(std::unique_ptr audio_engine, @@ -156,7 +156,7 @@ class CompositeMediaEngine : public MediaEngineInterface { const VideoEngineInterface& video() const override; private: - const std::unique_ptr trials_; + const std::unique_ptr trials_; const std::unique_ptr voice_engine_; const std::unique_ptr video_engine_; }; diff --git a/media/base/test_utils.h b/media/base/test_utils.h index fbd9f35184..fb18485d32 100644 --- a/media/base/test_utils.h +++ b/media/base/test_utils.h @@ -39,7 +39,7 @@ inline std::vector MakeVector(const T a[], size_t s) { template bool ContainsMatchingCodec(const std::vector& codecs, const C& codec, - const webrtc::WebRtcKeyValueConfig* field_trials) { + const webrtc::FieldTrialsView* field_trials) { typename std::vector::const_iterator it; for (it = codecs.begin(); it != codecs.end(); ++it) { if (it->Matches(codec, field_trials)) { diff --git a/media/engine/fake_webrtc_call.h b/media/engine/fake_webrtc_call.h index 498efcfb6d..d2a867fde0 100644 --- a/media/engine/fake_webrtc_call.h +++ b/media/engine/fake_webrtc_call.h @@ -360,9 +360,7 @@ class FakeCall final : public webrtc::Call, public webrtc::PacketReceiver { *trials_, field_trial_string); } - const webrtc::WebRtcKeyValueConfig& trials() const override { - return *trials_; - } + const webrtc::FieldTrialsView& trials() const override { return *trials_; } private: webrtc::AudioSendStream* CreateAudioSendStream( diff --git a/media/engine/simulcast.cc b/media/engine/simulcast.cc index 3909685995..93607e8c18 100644 --- a/media/engine/simulcast.cc +++ b/media/engine/simulcast.cc @@ -45,8 +45,7 @@ constexpr char kUseLegacySimulcastLayerLimitFieldTrial[] = constexpr double kDefaultMaxRoundupRate = 0.1; // TODO(webrtc:12415): Flip this to a kill switch when this feature launches. -bool EnableLowresBitrateInterpolation( - const webrtc::WebRtcKeyValueConfig& trials) { +bool EnableLowresBitrateInterpolation(const webrtc::FieldTrialsView& trials) { return absl::StartsWith( trials.Lookup("WebRTC-LowresSimulcastBitrateInterpolation"), "Enabled"); } @@ -134,7 +133,7 @@ const int kMaxScreenshareSimulcastLayers = 2; // Multiway: Number of temporal layers for each simulcast stream. int DefaultNumberOfTemporalLayers(int simulcast_id, bool screenshare, - const webrtc::WebRtcKeyValueConfig& trials) { + const webrtc::FieldTrialsView& trials) { RTC_CHECK_GE(simulcast_id, 0); RTC_CHECK_LT(simulcast_id, webrtc::kMaxSimulcastStreams); @@ -291,7 +290,7 @@ size_t LimitSimulcastLayerCount(int width, int height, size_t need_layers, size_t layer_count, - const webrtc::WebRtcKeyValueConfig& trials) { + const webrtc::FieldTrialsView& trials) { if (!absl::StartsWith(trials.Lookup(kUseLegacySimulcastLayerLimitFieldTrial), "Disabled")) { // Max layers from one higher resolution in kSimulcastFormats will be used @@ -327,7 +326,7 @@ std::vector GetSimulcastConfig( int max_qp, bool is_screenshare_with_conference_mode, bool temporal_layers_supported, - const webrtc::WebRtcKeyValueConfig& trials) { + const webrtc::FieldTrialsView& trials) { RTC_DCHECK_LE(min_layers, max_layers); RTC_DCHECK(max_layers > 1 || is_screenshare_with_conference_mode); @@ -359,7 +358,7 @@ std::vector GetNormalSimulcastLayers( int max_qp, bool temporal_layers_supported, bool base_heavy_tl3_rate_alloc, - const webrtc::WebRtcKeyValueConfig& trials) { + const webrtc::FieldTrialsView& trials) { std::vector layers(layer_count); const bool enable_lowres_bitrate_interpolation = @@ -451,7 +450,7 @@ std::vector GetScreenshareLayers( int max_qp, bool temporal_layers_supported, bool base_heavy_tl3_rate_alloc, - const webrtc::WebRtcKeyValueConfig& trials) { + const webrtc::FieldTrialsView& trials) { auto max_screenshare_layers = kMaxScreenshareSimulcastLayers; size_t num_simulcast_layers = std::min(max_layers, max_screenshare_layers); diff --git a/media/engine/simulcast.h b/media/engine/simulcast.h index aa8c394816..e367830889 100644 --- a/media/engine/simulcast.h +++ b/media/engine/simulcast.h @@ -15,7 +15,7 @@ #include -#include "api/transport/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "api/units/data_rate.h" #include "api/video_codecs/video_encoder_config.h" @@ -43,7 +43,7 @@ std::vector GetSimulcastConfig( int max_qp, bool is_screenshare_with_conference_mode, bool temporal_layers_supported, - const webrtc::WebRtcKeyValueConfig& trials); + const webrtc::FieldTrialsView& trials); // Gets the simulcast config layers for a non-screensharing case. std::vector GetNormalSimulcastLayers( @@ -54,7 +54,7 @@ std::vector GetNormalSimulcastLayers( int max_qp, bool temporal_layers_supported, bool base_heavy_tl3_rate_alloc, - const webrtc::WebRtcKeyValueConfig& trials); + const webrtc::FieldTrialsView& trials); // Gets simulcast config layers for screenshare settings. std::vector GetScreenshareLayers( @@ -65,7 +65,7 @@ std::vector GetScreenshareLayers( int max_qp, bool temporal_layers_supported, bool base_heavy_tl3_rate_alloc, - const webrtc::WebRtcKeyValueConfig& trials); + const webrtc::FieldTrialsView& trials); } // namespace cricket diff --git a/media/engine/webrtc_media_engine.cc b/media/engine/webrtc_media_engine.cc index f083b9c9ca..3c28febdbd 100644 --- a/media/engine/webrtc_media_engine.cc +++ b/media/engine/webrtc_media_engine.cc @@ -30,9 +30,9 @@ std::unique_ptr CreateMediaEngine( MediaEngineDependencies dependencies) { // TODO(sprang): Make populating `dependencies.trials` mandatory and remove // these fallbacks. - std::unique_ptr fallback_trials( + std::unique_ptr fallback_trials( dependencies.trials ? nullptr : new webrtc::FieldTrialBasedConfig()); - const webrtc::WebRtcKeyValueConfig& trials = + const webrtc::FieldTrialsView& trials = dependencies.trials ? *dependencies.trials : *fallback_trials; auto audio_engine = std::make_unique( dependencies.task_queue_factory, std::move(dependencies.adm), @@ -137,7 +137,7 @@ std::vector FilterRtpExtensions( const std::vector& extensions, bool (*supported)(absl::string_view), bool filter_redundant_extensions, - const webrtc::WebRtcKeyValueConfig& trials) { + const webrtc::FieldTrialsView& trials) { // Don't check against old parameters; this should have been done earlier. RTC_DCHECK(ValidateRtpExtensions(extensions, {})); RTC_DCHECK(supported); diff --git a/media/engine/webrtc_media_engine.h b/media/engine/webrtc_media_engine.h index ff977609b2..27d6f34c2f 100644 --- a/media/engine/webrtc_media_engine.h +++ b/media/engine/webrtc_media_engine.h @@ -19,11 +19,11 @@ #include "api/audio/audio_mixer.h" #include "api/audio_codecs/audio_decoder_factory.h" #include "api/audio_codecs/audio_encoder_factory.h" +#include "api/field_trials_view.h" #include "api/rtp_parameters.h" #include "api/task_queue/task_queue_factory.h" #include "api/transport/bitrate_settings.h" #include "api/transport/field_trial_based_config.h" -#include "api/transport/webrtc_key_value_config.h" #include "api/video_codecs/video_decoder_factory.h" #include "api/video_codecs/video_encoder_factory.h" #include "media/base/codec.h" @@ -53,7 +53,7 @@ struct MediaEngineDependencies { std::unique_ptr video_encoder_factory; std::unique_ptr video_decoder_factory; - const webrtc::WebRtcKeyValueConfig* trials = nullptr; + const webrtc::FieldTrialsView* trials = nullptr; }; // CreateMediaEngine may be called on any thread, though the engine is @@ -76,7 +76,7 @@ std::vector FilterRtpExtensions( const std::vector& extensions, bool (*supported)(absl::string_view), bool filter_redundant_extensions, - const webrtc::WebRtcKeyValueConfig& trials); + const webrtc::FieldTrialsView& trials); webrtc::BitrateConstraints GetBitrateConfigForCodec(const Codec& codec); diff --git a/media/engine/webrtc_video_engine.cc b/media/engine/webrtc_video_engine.cc index 58ae4995d7..0e2cfa2983 100644 --- a/media/engine/webrtc_video_engine.cc +++ b/media/engine/webrtc_video_engine.cc @@ -82,13 +82,11 @@ const char* StreamTypeToString( return nullptr; } -bool IsEnabled(const webrtc::WebRtcKeyValueConfig& trials, - absl::string_view name) { +bool IsEnabled(const webrtc::FieldTrialsView& trials, absl::string_view name) { return absl::StartsWith(trials.Lookup(name), "Enabled"); } -bool IsDisabled(const webrtc::WebRtcKeyValueConfig& trials, - absl::string_view name) { +bool IsDisabled(const webrtc::FieldTrialsView& trials, absl::string_view name) { return absl::StartsWith(trials.Lookup(name), "Disabled"); } @@ -107,7 +105,7 @@ bool IsScaleFactorsPowerOfTwo(const webrtc::VideoEncoderConfig& config) { } void AddDefaultFeedbackParams(VideoCodec* codec, - const webrtc::WebRtcKeyValueConfig& trials) { + const webrtc::FieldTrialsView& trials) { // Don't add any feedback params for RED and ULPFEC. if (codec->name == kRedCodecName || codec->name == kUlpfecCodecName) return; @@ -164,7 +162,7 @@ template std::vector GetPayloadTypesAndDefaultCodecs( const T* factory, bool is_decoder_factory, - const webrtc::WebRtcKeyValueConfig& trials) { + const webrtc::FieldTrialsView& trials) { if (!factory) { return {}; } @@ -331,7 +329,7 @@ static bool ValidateStreamParams(const StreamParams& sp) { // Returns true if the given codec is disallowed from doing simulcast. bool IsCodecDisabledForSimulcast(const std::string& codec_name, - const webrtc::WebRtcKeyValueConfig& trials) { + const webrtc::FieldTrialsView& trials) { if (absl::EqualsIgnoreCase(codec_name, kVp9CodecName) || absl::EqualsIgnoreCase(codec_name, kAv1CodecName)) { return true; @@ -612,7 +610,7 @@ void DefaultUnsignalledSsrcHandler::SetDefaultSink( WebRtcVideoEngine::WebRtcVideoEngine( std::unique_ptr video_encoder_factory, std::unique_ptr video_decoder_factory, - const webrtc::WebRtcKeyValueConfig& trials) + const webrtc::FieldTrialsView& trials) : decoder_factory_(std::move(video_decoder_factory)), encoder_factory_(std::move(video_encoder_factory)), trials_(trials) { @@ -3498,7 +3496,7 @@ EncoderStreamFactory::EncoderStreamFactory( int max_qp, bool is_screenshare, bool conference_mode, - const webrtc::WebRtcKeyValueConfig* trials) + const webrtc::FieldTrialsView* trials) : codec_name_(codec_name), max_qp_(max_qp), diff --git a/media/engine/webrtc_video_engine.h b/media/engine/webrtc_video_engine.h index 940985d9f8..f70ebca334 100644 --- a/media/engine/webrtc_video_engine.h +++ b/media/engine/webrtc_video_engine.h @@ -94,7 +94,7 @@ class WebRtcVideoEngine : public VideoEngineInterface { WebRtcVideoEngine( std::unique_ptr video_encoder_factory, std::unique_ptr video_decoder_factory, - const webrtc::WebRtcKeyValueConfig& trials); + const webrtc::FieldTrialsView& trials); ~WebRtcVideoEngine() override; @@ -116,7 +116,7 @@ class WebRtcVideoEngine : public VideoEngineInterface { const std::unique_ptr encoder_factory_; const std::unique_ptr bitrate_allocator_factory_; - const webrtc::WebRtcKeyValueConfig& trials_; + const webrtc::FieldTrialsView& trials_; }; class WebRtcVideoChannel : public VideoMediaChannel, @@ -658,7 +658,7 @@ class EncoderStreamFactory int max_qp, bool is_screenshare, bool conference_mode, - const webrtc::WebRtcKeyValueConfig* trials); + const webrtc::FieldTrialsView* trials); private: std::vector CreateEncoderStreams( @@ -686,7 +686,7 @@ class EncoderStreamFactory // layering and various settings. const bool conference_mode_; const webrtc::FieldTrialBasedConfig fallback_trials_; - const webrtc::WebRtcKeyValueConfig& trials_; + const webrtc::FieldTrialsView& trials_; }; } // namespace cricket diff --git a/media/engine/webrtc_voice_engine.cc b/media/engine/webrtc_voice_engine.cc index 54d1963775..be4dab9e36 100644 --- a/media/engine/webrtc_voice_engine.cc +++ b/media/engine/webrtc_voice_engine.cc @@ -23,7 +23,7 @@ #include "api/audio/audio_frame_processor.h" #include "api/audio_codecs/audio_codec_pair_id.h" #include "api/call/audio_sink.h" -#include "api/transport/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "media/base/audio_source.h" #include "media/base/media_constants.h" #include "media/base/stream_params.h" @@ -126,7 +126,7 @@ bool IsCodec(const AudioCodec& codec, const char* ref_name) { bool FindCodec(const std::vector& codecs, const AudioCodec& codec, AudioCodec* found_codec, - const webrtc::WebRtcKeyValueConfig* field_trials) { + const webrtc::FieldTrialsView* field_trials) { for (const AudioCodec& c : codecs) { if (c.Matches(codec, field_trials)) { if (found_codec != NULL) { @@ -206,8 +206,7 @@ absl::optional ComputeSendBitrate(int max_send_bitrate_bps, } } -bool IsEnabled(const webrtc::WebRtcKeyValueConfig& config, - absl::string_view trial) { +bool IsEnabled(const webrtc::FieldTrialsView& config, absl::string_view trial) { return absl::StartsWith(config.Lookup(trial), "Enabled"); } @@ -229,7 +228,7 @@ struct AdaptivePtimeConfig { "use_slow_adaptation", &use_slow_adaptation); } - explicit AdaptivePtimeConfig(const webrtc::WebRtcKeyValueConfig& trials) { + explicit AdaptivePtimeConfig(const webrtc::FieldTrialsView& trials) { Parser()->Parse(trials.Lookup("WebRTC-Audio-AdaptivePtime")); #if WEBRTC_ENABLE_PROTOBUF webrtc::audio_network_adaptor::config::ControllerManager config; @@ -299,7 +298,7 @@ WebRtcVoiceEngine::WebRtcVoiceEngine( rtc::scoped_refptr audio_mixer, rtc::scoped_refptr audio_processing, webrtc::AudioFrameProcessor* audio_frame_processor, - const webrtc::WebRtcKeyValueConfig& trials) + const webrtc::FieldTrialsView& trials) : task_queue_factory_(task_queue_factory), adm_(adm), encoder_factory_(encoder_factory), diff --git a/media/engine/webrtc_voice_engine.h b/media/engine/webrtc_voice_engine.h index 1a0b54472e..f15b9f5882 100644 --- a/media/engine/webrtc_voice_engine.h +++ b/media/engine/webrtc_voice_engine.h @@ -17,11 +17,11 @@ #include #include "api/audio_codecs/audio_encoder_factory.h" +#include "api/field_trials_view.h" #include "api/scoped_refptr.h" #include "api/sequence_checker.h" #include "api/task_queue/task_queue_factory.h" #include "api/transport/rtp/rtp_source.h" -#include "api/transport/webrtc_key_value_config.h" #include "call/audio_state.h" #include "call/call.h" #include "media/base/media_engine.h" @@ -55,7 +55,7 @@ class WebRtcVoiceEngine final : public VoiceEngineInterface { rtc::scoped_refptr audio_mixer, rtc::scoped_refptr audio_processing, webrtc::AudioFrameProcessor* audio_frame_processor, - const webrtc::WebRtcKeyValueConfig& trials); + const webrtc::FieldTrialsView& trials); WebRtcVoiceEngine() = delete; WebRtcVoiceEngine(const WebRtcVoiceEngine&) = delete; diff --git a/media/sctp/sctp_transport_factory.cc b/media/sctp/sctp_transport_factory.cc index 21b5b026eb..51ce372d74 100644 --- a/media/sctp/sctp_transport_factory.cc +++ b/media/sctp/sctp_transport_factory.cc @@ -10,7 +10,7 @@ #include "media/sctp/sctp_transport_factory.h" -#include "api/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "rtc_base/system/unused.h" #ifdef WEBRTC_HAVE_DCSCTP @@ -26,7 +26,7 @@ namespace cricket { SctpTransportFactory::SctpTransportFactory( rtc::Thread* network_thread, - const webrtc::WebRtcKeyValueConfig& field_trials) + const webrtc::FieldTrialsView& field_trials) : network_thread_(network_thread), use_usrsctp_("Disabled", false) { RTC_UNUSED(network_thread_); #ifdef WEBRTC_HAVE_DCSCTP diff --git a/media/sctp/sctp_transport_factory.h b/media/sctp/sctp_transport_factory.h index 4fcec8e0e0..d117fdef5c 100644 --- a/media/sctp/sctp_transport_factory.h +++ b/media/sctp/sctp_transport_factory.h @@ -13,8 +13,8 @@ #include +#include "api/field_trials_view.h" #include "api/transport/sctp_transport_factory_interface.h" -#include "api/webrtc_key_value_config.h" #include "media/sctp/sctp_transport_internal.h" #include "rtc_base/experiments/field_trial_parser.h" #include "rtc_base/thread.h" @@ -23,9 +23,8 @@ namespace cricket { class SctpTransportFactory : public webrtc::SctpTransportFactoryInterface { public: - explicit SctpTransportFactory( - rtc::Thread* network_thread, - const webrtc::WebRtcKeyValueConfig& field_trials); + explicit SctpTransportFactory(rtc::Thread* network_thread, + const webrtc::FieldTrialsView& field_trials); std::unique_ptr CreateSctpTransport( rtc::PacketTransportInternal* transport) override; diff --git a/modules/audio_coding/BUILD.gn b/modules/audio_coding/BUILD.gn index af76a11eae..8866b47f4b 100644 --- a/modules/audio_coding/BUILD.gn +++ b/modules/audio_coding/BUILD.gn @@ -118,7 +118,7 @@ rtc_library("red") { deps = [ "../../api:array_view", - "../../api:webrtc_key_value_config", + "../../api:field_trials_view", "../../api/audio_codecs:audio_codecs_api", "../../api/units:time_delta", "../../common_audio", diff --git a/modules/audio_coding/codecs/red/audio_encoder_copy_red.cc b/modules/audio_coding/codecs/red/audio_encoder_copy_red.cc index c8a26e8c61..a9208debdf 100644 --- a/modules/audio_coding/codecs/red/audio_encoder_copy_red.cc +++ b/modules/audio_coding/codecs/red/audio_encoder_copy_red.cc @@ -39,8 +39,7 @@ AudioEncoderCopyRed::Config::Config() = default; AudioEncoderCopyRed::Config::Config(Config&&) = default; AudioEncoderCopyRed::Config::~Config() = default; -size_t GetMaxRedundancyFromFieldTrial( - const WebRtcKeyValueConfig& field_trials) { +size_t GetMaxRedundancyFromFieldTrial(const FieldTrialsView& field_trials) { const std::string red_trial = field_trials.Lookup("WebRTC-Audio-Red-For-Opus"); size_t redundancy = 0; @@ -51,9 +50,8 @@ size_t GetMaxRedundancyFromFieldTrial( return redundancy; } -AudioEncoderCopyRed::AudioEncoderCopyRed( - Config&& config, - const WebRtcKeyValueConfig& field_trials) +AudioEncoderCopyRed::AudioEncoderCopyRed(Config&& config, + const FieldTrialsView& field_trials) : speech_encoder_(std::move(config.speech_encoder)), primary_encoded_(0, kAudioMaxRtpPacketLen), max_packet_length_(kAudioMaxRtpPacketLen), diff --git a/modules/audio_coding/codecs/red/audio_encoder_copy_red.h b/modules/audio_coding/codecs/red/audio_encoder_copy_red.h index e7471b3e12..359b5eaa17 100644 --- a/modules/audio_coding/codecs/red/audio_encoder_copy_red.h +++ b/modules/audio_coding/codecs/red/audio_encoder_copy_red.h @@ -21,8 +21,8 @@ #include "absl/types/optional.h" #include "api/array_view.h" #include "api/audio_codecs/audio_encoder.h" +#include "api/field_trials_view.h" #include "api/units/time_delta.h" -#include "api/webrtc_key_value_config.h" #include "rtc_base/buffer.h" namespace webrtc { @@ -43,8 +43,7 @@ class AudioEncoderCopyRed final : public AudioEncoder { std::unique_ptr speech_encoder; }; - AudioEncoderCopyRed(Config&& config, - const WebRtcKeyValueConfig& field_trials); + AudioEncoderCopyRed(Config&& config, const FieldTrialsView& field_trials); ~AudioEncoderCopyRed() override; diff --git a/modules/congestion_controller/goog_cc/BUILD.gn b/modules/congestion_controller/goog_cc/BUILD.gn index 2c50c32759..9daedc6430 100644 --- a/modules/congestion_controller/goog_cc/BUILD.gn +++ b/modules/congestion_controller/goog_cc/BUILD.gn @@ -31,11 +31,11 @@ rtc_library("goog_cc") { ":pushback_controller", ":send_side_bwe", "../..:module_api", + "../../../api:field_trials_view", "../../../api:network_state_predictor_api", "../../../api/rtc_event_log", "../../../api/transport:field_trial_based_config", "../../../api/transport:network_control", - "../../../api/transport:webrtc_key_value_config", "../../../api/units:data_rate", "../../../api/units:data_size", "../../../api/units:time_delta", @@ -74,8 +74,8 @@ rtc_library("pushback_controller") { "congestion_window_pushback_controller.h", ] deps = [ + "../../../api:field_trials_view", "../../../api/transport:network_control", - "../../../api/transport:webrtc_key_value_config", "../../../api/units:data_size", "../../../rtc_base:checks", "../../../rtc_base/experiments:rate_control_settings", @@ -92,9 +92,9 @@ rtc_library("alr_detector") { "alr_detector.h", ] deps = [ + "../../../api:field_trials_view", "../../../api/rtc_event_log", "../../../api/transport:field_trial_based_config", - "../../../api/transport:webrtc_key_value_config", "../../../logging:rtc_event_pacing", "../../../rtc_base:checks", "../../../rtc_base:safe_conversions", @@ -124,10 +124,10 @@ rtc_library("estimators") { ] deps = [ + "../../../api:field_trials_view", "../../../api:network_state_predictor_api", "../../../api/rtc_event_log", "../../../api/transport:network_control", - "../../../api/transport:webrtc_key_value_config", "../../../api/units:data_rate", "../../../api/units:timestamp", "../../../logging:rtc_event_bwe", @@ -153,9 +153,9 @@ rtc_library("loss_based_bwe_v2") { ] deps = [ "../../../api:array_view", + "../../../api:field_trials_view", "../../../api:network_state_predictor_api", "../../../api/transport:network_control", - "../../../api/transport:webrtc_key_value_config", "../../../api/units:data_rate", "../../../api/units:data_size", "../../../api/units:time_delta", @@ -176,8 +176,8 @@ rtc_library("loss_based_bwe_v1") { "loss_based_bandwidth_estimation.h", ] deps = [ + "../../../api:field_trials_view", "../../../api/transport:network_control", - "../../../api/transport:webrtc_key_value_config", "../../../api/units:data_rate", "../../../api/units:time_delta", "../../../api/units:timestamp", @@ -196,10 +196,10 @@ rtc_library("send_side_bwe") { deps = [ ":loss_based_bwe_v1", ":loss_based_bwe_v2", + "../../../api:field_trials_view", "../../../api:network_state_predictor_api", "../../../api/rtc_event_log", "../../../api/transport:network_control", - "../../../api/transport:webrtc_key_value_config", "../../../api/units:data_rate", "../../../api/units:time_delta", "../../../api/units:timestamp", @@ -228,10 +228,10 @@ rtc_library("delay_based_bwe") { deps = [ ":estimators", + "../../../api:field_trials_view", "../../../api:network_state_predictor_api", "../../../api/rtc_event_log", "../../../api/transport:network_control", - "../../../api/transport:webrtc_key_value_config", "../../../api/units:time_delta", "../../../api/units:timestamp", "../../../logging:rtc_event_bwe", @@ -255,9 +255,9 @@ rtc_library("probe_controller") { ] deps = [ + "../../../api:field_trials_view", "../../../api/rtc_event_log", "../../../api/transport:network_control", - "../../../api/transport:webrtc_key_value_config", "../../../api/units:data_rate", "../../../api/units:time_delta", "../../../api/units:timestamp", @@ -327,6 +327,7 @@ if (rtc_include_tests) { ":probe_controller", ":pushback_controller", ":send_side_bwe", + "../../../api:field_trials_view", "../../../api:network_state_predictor_api", "../../../api/rtc_event_log", "../../../api/test/network_emulation", @@ -334,7 +335,6 @@ if (rtc_include_tests) { "../../../api/transport:field_trial_based_config", "../../../api/transport:goog_cc", "../../../api/transport:network_control", - "../../../api/transport:webrtc_key_value_config", "../../../api/units:data_rate", "../../../api/units:data_size", "../../../api/units:time_delta", diff --git a/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator.cc b/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator.cc index f3c992f571..08b42a8168 100644 --- a/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator.cc +++ b/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator.cc @@ -22,7 +22,7 @@ namespace webrtc { AcknowledgedBitrateEstimator::AcknowledgedBitrateEstimator( - const WebRtcKeyValueConfig* key_value_config) + const FieldTrialsView* key_value_config) : AcknowledgedBitrateEstimator( key_value_config, std::make_unique(key_value_config)) {} @@ -30,7 +30,7 @@ AcknowledgedBitrateEstimator::AcknowledgedBitrateEstimator( AcknowledgedBitrateEstimator::~AcknowledgedBitrateEstimator() {} AcknowledgedBitrateEstimator::AcknowledgedBitrateEstimator( - const WebRtcKeyValueConfig* key_value_config, + const FieldTrialsView* key_value_config, std::unique_ptr bitrate_estimator) : in_alr_(false), bitrate_estimator_(std::move(bitrate_estimator)) {} diff --git a/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator.h b/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator.h index 97dd965fa4..d10846ab3a 100644 --- a/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator.h +++ b/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator.h @@ -15,8 +15,8 @@ #include #include "absl/types/optional.h" +#include "api/field_trials_view.h" #include "api/transport/network_types.h" -#include "api/transport/webrtc_key_value_config.h" #include "api/units/data_rate.h" #include "modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator_interface.h" #include "modules/congestion_controller/goog_cc/bitrate_estimator.h" @@ -27,11 +27,11 @@ class AcknowledgedBitrateEstimator : public AcknowledgedBitrateEstimatorInterface { public: AcknowledgedBitrateEstimator( - const WebRtcKeyValueConfig* key_value_config, + const FieldTrialsView* key_value_config, std::unique_ptr bitrate_estimator); explicit AcknowledgedBitrateEstimator( - const WebRtcKeyValueConfig* key_value_config); + const FieldTrialsView* key_value_config); ~AcknowledgedBitrateEstimator() override; void IncomingPacketFeedbackVector( diff --git a/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator_interface.cc b/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator_interface.cc index d5b1a13fcc..283c9a8a41 100644 --- a/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator_interface.cc +++ b/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator_interface.cc @@ -21,7 +21,7 @@ namespace webrtc { constexpr char RobustThroughputEstimatorSettings::kKey[]; RobustThroughputEstimatorSettings::RobustThroughputEstimatorSettings( - const WebRtcKeyValueConfig* key_value_config) { + const FieldTrialsView* key_value_config) { Parser()->Parse( key_value_config->Lookup(RobustThroughputEstimatorSettings::kKey)); if (min_packets < 10 || kMaxPackets < min_packets) { @@ -64,7 +64,7 @@ AcknowledgedBitrateEstimatorInterface:: std::unique_ptr AcknowledgedBitrateEstimatorInterface::Create( - const WebRtcKeyValueConfig* key_value_config) { + const FieldTrialsView* key_value_config) { RobustThroughputEstimatorSettings simplified_estimator_settings( key_value_config); if (simplified_estimator_settings.enabled) { diff --git a/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator_interface.h b/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator_interface.h index b6cee43125..6dce69b72b 100644 --- a/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator_interface.h +++ b/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator_interface.h @@ -15,8 +15,8 @@ #include #include "absl/types/optional.h" +#include "api/field_trials_view.h" #include "api/transport/network_types.h" -#include "api/transport/webrtc_key_value_config.h" #include "api/units/data_rate.h" #include "rtc_base/experiments/struct_parameters_parser.h" @@ -28,7 +28,7 @@ struct RobustThroughputEstimatorSettings { RobustThroughputEstimatorSettings() = delete; explicit RobustThroughputEstimatorSettings( - const WebRtcKeyValueConfig* key_value_config); + const FieldTrialsView* key_value_config); bool enabled = false; // Set to true to use RobustThroughputEstimator. @@ -64,7 +64,7 @@ struct RobustThroughputEstimatorSettings { class AcknowledgedBitrateEstimatorInterface { public: static std::unique_ptr Create( - const WebRtcKeyValueConfig* key_value_config); + const FieldTrialsView* key_value_config); virtual ~AcknowledgedBitrateEstimatorInterface(); virtual void IncomingPacketFeedbackVector( diff --git a/modules/congestion_controller/goog_cc/alr_detector.cc b/modules/congestion_controller/goog_cc/alr_detector.cc index 6a62954c36..f1e649b7cd 100644 --- a/modules/congestion_controller/goog_cc/alr_detector.cc +++ b/modules/congestion_controller/goog_cc/alr_detector.cc @@ -24,8 +24,7 @@ namespace webrtc { namespace { -AlrDetectorConfig GetConfigFromTrials( - const WebRtcKeyValueConfig* key_value_config) { +AlrDetectorConfig GetConfigFromTrials(const FieldTrialsView* key_value_config) { RTC_CHECK(AlrExperimentSettings::MaxOneFieldTrialEnabled(*key_value_config)); absl::optional experiment_settings = AlrExperimentSettings::CreateFromFieldTrial( @@ -61,10 +60,10 @@ std::unique_ptr AlrDetectorConfig::Parser() { AlrDetector::AlrDetector(AlrDetectorConfig config, RtcEventLog* event_log) : conf_(config), alr_budget_(0, true), event_log_(event_log) {} -AlrDetector::AlrDetector(const WebRtcKeyValueConfig* key_value_config) +AlrDetector::AlrDetector(const FieldTrialsView* key_value_config) : AlrDetector(GetConfigFromTrials(key_value_config), nullptr) {} -AlrDetector::AlrDetector(const WebRtcKeyValueConfig* key_value_config, +AlrDetector::AlrDetector(const FieldTrialsView* key_value_config, RtcEventLog* event_log) : AlrDetector(GetConfigFromTrials(key_value_config), event_log) {} AlrDetector::~AlrDetector() {} diff --git a/modules/congestion_controller/goog_cc/alr_detector.h b/modules/congestion_controller/goog_cc/alr_detector.h index ee3fe92845..5e7a3e1075 100644 --- a/modules/congestion_controller/goog_cc/alr_detector.h +++ b/modules/congestion_controller/goog_cc/alr_detector.h @@ -13,10 +13,11 @@ #include #include + #include #include "absl/types/optional.h" -#include "api/transport/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "modules/pacing/interval_budget.h" #include "rtc_base/experiments/alr_experiment.h" #include "rtc_base/experiments/struct_parameters_parser.h" @@ -46,9 +47,8 @@ struct AlrDetectorConfig { class AlrDetector { public: AlrDetector(AlrDetectorConfig config, RtcEventLog* event_log); - explicit AlrDetector(const WebRtcKeyValueConfig* key_value_config); - AlrDetector(const WebRtcKeyValueConfig* key_value_config, - RtcEventLog* event_log); + explicit AlrDetector(const FieldTrialsView* key_value_config); + AlrDetector(const FieldTrialsView* key_value_config, RtcEventLog* event_log); ~AlrDetector(); void OnBytesSent(size_t bytes_sent, int64_t send_time_ms); diff --git a/modules/congestion_controller/goog_cc/bitrate_estimator.cc b/modules/congestion_controller/goog_cc/bitrate_estimator.cc index 09b214a798..9c68e48886 100644 --- a/modules/congestion_controller/goog_cc/bitrate_estimator.cc +++ b/modules/congestion_controller/goog_cc/bitrate_estimator.cc @@ -32,7 +32,7 @@ const char kBweThroughputWindowConfig[] = "WebRTC-BweThroughputWindowConfig"; } // namespace -BitrateEstimator::BitrateEstimator(const WebRtcKeyValueConfig* key_value_config) +BitrateEstimator::BitrateEstimator(const FieldTrialsView* key_value_config) : sum_(0), initial_window_ms_("initial_window_ms", kInitialRateWindowMs, diff --git a/modules/congestion_controller/goog_cc/bitrate_estimator.h b/modules/congestion_controller/goog_cc/bitrate_estimator.h index 34114f017c..a6f985800e 100644 --- a/modules/congestion_controller/goog_cc/bitrate_estimator.h +++ b/modules/congestion_controller/goog_cc/bitrate_estimator.h @@ -14,7 +14,7 @@ #include #include "absl/types/optional.h" -#include "api/transport/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "api/units/data_rate.h" #include "api/units/timestamp.h" #include "rtc_base/experiments/field_trial_parser.h" @@ -28,7 +28,7 @@ namespace webrtc { // unrelated to congestion. class BitrateEstimator { public: - explicit BitrateEstimator(const WebRtcKeyValueConfig* key_value_config); + explicit BitrateEstimator(const FieldTrialsView* key_value_config); virtual ~BitrateEstimator(); virtual void Update(Timestamp at_time, DataSize amount, bool in_alr); diff --git a/modules/congestion_controller/goog_cc/congestion_window_pushback_controller.cc b/modules/congestion_controller/goog_cc/congestion_window_pushback_controller.cc index ec642823df..2f188f30ca 100644 --- a/modules/congestion_controller/goog_cc/congestion_window_pushback_controller.cc +++ b/modules/congestion_controller/goog_cc/congestion_window_pushback_controller.cc @@ -23,7 +23,7 @@ namespace webrtc { CongestionWindowPushbackController::CongestionWindowPushbackController( - const WebRtcKeyValueConfig* key_value_config) + const FieldTrialsView* key_value_config) : add_pacing_( absl::StartsWith(key_value_config->Lookup( "WebRTC-AddPacingToCongestionWindowPushback"), diff --git a/modules/congestion_controller/goog_cc/congestion_window_pushback_controller.h b/modules/congestion_controller/goog_cc/congestion_window_pushback_controller.h index 7a49a83d5b..ea9ed97c3d 100644 --- a/modules/congestion_controller/goog_cc/congestion_window_pushback_controller.h +++ b/modules/congestion_controller/goog_cc/congestion_window_pushback_controller.h @@ -15,7 +15,7 @@ #include #include "absl/types/optional.h" -#include "api/transport/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "api/units/data_size.h" namespace webrtc { @@ -28,7 +28,7 @@ namespace webrtc { class CongestionWindowPushbackController { public: explicit CongestionWindowPushbackController( - const WebRtcKeyValueConfig* key_value_config); + const FieldTrialsView* key_value_config); void UpdateOutstandingData(int64_t outstanding_bytes); void UpdatePacingQueue(int64_t pacing_bytes); uint32_t UpdateTargetBitrate(uint32_t bitrate_bps); diff --git a/modules/congestion_controller/goog_cc/delay_based_bwe.cc b/modules/congestion_controller/goog_cc/delay_based_bwe.cc index 95d98b2675..fddeca3135 100644 --- a/modules/congestion_controller/goog_cc/delay_based_bwe.cc +++ b/modules/congestion_controller/goog_cc/delay_based_bwe.cc @@ -42,7 +42,7 @@ constexpr uint32_t kFixedSsrc = 0; constexpr char BweSeparateAudioPacketsSettings::kKey[]; BweSeparateAudioPacketsSettings::BweSeparateAudioPacketsSettings( - const WebRtcKeyValueConfig* key_value_config) { + const FieldTrialsView* key_value_config) { Parser()->Parse( key_value_config->Lookup(BweSeparateAudioPacketsSettings::kKey)); } @@ -62,7 +62,7 @@ DelayBasedBwe::Result::Result() recovered_from_overuse(false), backoff_in_alr(false) {} -DelayBasedBwe::DelayBasedBwe(const WebRtcKeyValueConfig* key_value_config, +DelayBasedBwe::DelayBasedBwe(const FieldTrialsView* key_value_config, RtcEventLog* event_log, NetworkStatePredictor* network_state_predictor) : event_log_(event_log), diff --git a/modules/congestion_controller/goog_cc/delay_based_bwe.h b/modules/congestion_controller/goog_cc/delay_based_bwe.h index d37e05f8dd..dd4f7d84a4 100644 --- a/modules/congestion_controller/goog_cc/delay_based_bwe.h +++ b/modules/congestion_controller/goog_cc/delay_based_bwe.h @@ -18,9 +18,9 @@ #include #include "absl/types/optional.h" +#include "api/field_trials_view.h" #include "api/network_state_predictor.h" #include "api/transport/network_types.h" -#include "api/transport/webrtc_key_value_config.h" #include "modules/congestion_controller/goog_cc/delay_increase_detector_interface.h" #include "modules/congestion_controller/goog_cc/inter_arrival_delta.h" #include "modules/congestion_controller/goog_cc/probe_bitrate_estimator.h" @@ -37,7 +37,7 @@ struct BweSeparateAudioPacketsSettings { BweSeparateAudioPacketsSettings() = default; explicit BweSeparateAudioPacketsSettings( - const WebRtcKeyValueConfig* key_value_config); + const FieldTrialsView* key_value_config); bool enabled = false; int packet_threshold = 10; @@ -59,7 +59,7 @@ class DelayBasedBwe { BandwidthUsage delay_detector_state; }; - explicit DelayBasedBwe(const WebRtcKeyValueConfig* key_value_config, + explicit DelayBasedBwe(const FieldTrialsView* key_value_config, RtcEventLog* event_log, NetworkStatePredictor* network_state_predictor); @@ -104,7 +104,7 @@ class DelayBasedBwe { rtc::RaceChecker network_race_; RtcEventLog* const event_log_; - const WebRtcKeyValueConfig* const key_value_config_; + const FieldTrialsView* const key_value_config_; // Alternatively, run two separate overuse detectors for audio and video, // and fall back to the audio one if we haven't seen a video packet in a diff --git a/modules/congestion_controller/goog_cc/goog_cc_network_control.cc b/modules/congestion_controller/goog_cc/goog_cc_network_control.cc index 167203256c..5e85c9fe7a 100644 --- a/modules/congestion_controller/goog_cc/goog_cc_network_control.cc +++ b/modules/congestion_controller/goog_cc/goog_cc_network_control.cc @@ -60,11 +60,11 @@ int64_t GetBpsOrDefault(const absl::optional& rate, } } -bool IsEnabled(const WebRtcKeyValueConfig* config, absl::string_view key) { +bool IsEnabled(const FieldTrialsView* config, absl::string_view key) { return absl::StartsWith(config->Lookup(key), "Enabled"); } -bool IsNotDisabled(const WebRtcKeyValueConfig* config, absl::string_view key) { +bool IsNotDisabled(const FieldTrialsView* config, absl::string_view key) { return !absl::StartsWith(config->Lookup(key), "Disabled"); } } // namespace diff --git a/modules/congestion_controller/goog_cc/goog_cc_network_control.h b/modules/congestion_controller/goog_cc/goog_cc_network_control.h index 048279fa56..884b572740 100644 --- a/modules/congestion_controller/goog_cc/goog_cc_network_control.h +++ b/modules/congestion_controller/goog_cc/goog_cc_network_control.h @@ -18,12 +18,12 @@ #include #include "absl/types/optional.h" +#include "api/field_trials_view.h" #include "api/network_state_predictor.h" #include "api/rtc_event_log/rtc_event_log.h" #include "api/transport/field_trial_based_config.h" #include "api/transport/network_control.h" #include "api/transport/network_types.h" -#include "api/transport/webrtc_key_value_config.h" #include "api/units/data_rate.h" #include "api/units/data_size.h" #include "api/units/timestamp.h" @@ -84,7 +84,7 @@ class GoogCcNetworkController : public NetworkControllerInterface { PacerConfig GetPacingRates(Timestamp at_time) const; const FieldTrialBasedConfig trial_based_config_; - const WebRtcKeyValueConfig* const key_value_config_; + const FieldTrialsView* const key_value_config_; RtcEventLog* const event_log_; const bool packet_feedback_only_; FieldTrialFlag safe_reset_on_route_change_; diff --git a/modules/congestion_controller/goog_cc/loss_based_bandwidth_estimation.cc b/modules/congestion_controller/goog_cc/loss_based_bandwidth_estimation.cc index 33974dc900..7524c84d92 100644 --- a/modules/congestion_controller/goog_cc/loss_based_bandwidth_estimation.cc +++ b/modules/congestion_controller/goog_cc/loss_based_bandwidth_estimation.cc @@ -75,7 +75,7 @@ double ExponentialUpdate(TimeDelta window, TimeDelta interval) { return 1.0f - exp(interval / window * -1.0); } -bool IsEnabled(const webrtc::WebRtcKeyValueConfig& key_value_config, +bool IsEnabled(const webrtc::FieldTrialsView& key_value_config, absl::string_view name) { return absl::StartsWith(key_value_config.Lookup(name), "Enabled"); } @@ -83,7 +83,7 @@ bool IsEnabled(const webrtc::WebRtcKeyValueConfig& key_value_config, } // namespace LossBasedControlConfig::LossBasedControlConfig( - const WebRtcKeyValueConfig* key_value_config) + const FieldTrialsView* key_value_config) : enabled(IsEnabled(*key_value_config, kBweLossBasedControl)), min_increase_factor("min_incr", 1.02), max_increase_factor("max_incr", 1.08), @@ -118,7 +118,7 @@ LossBasedControlConfig::LossBasedControlConfig(const LossBasedControlConfig&) = LossBasedControlConfig::~LossBasedControlConfig() = default; LossBasedBandwidthEstimation::LossBasedBandwidthEstimation( - const WebRtcKeyValueConfig* key_value_config) + const FieldTrialsView* key_value_config) : config_(key_value_config), average_loss_(0), average_loss_max_(0), diff --git a/modules/congestion_controller/goog_cc/loss_based_bandwidth_estimation.h b/modules/congestion_controller/goog_cc/loss_based_bandwidth_estimation.h index 20ff092e6f..9f69caba89 100644 --- a/modules/congestion_controller/goog_cc/loss_based_bandwidth_estimation.h +++ b/modules/congestion_controller/goog_cc/loss_based_bandwidth_estimation.h @@ -13,8 +13,8 @@ #include +#include "api/field_trials_view.h" #include "api/transport/network_types.h" -#include "api/transport/webrtc_key_value_config.h" #include "api/units/data_rate.h" #include "api/units/time_delta.h" #include "api/units/timestamp.h" @@ -23,7 +23,7 @@ namespace webrtc { struct LossBasedControlConfig { - explicit LossBasedControlConfig(const WebRtcKeyValueConfig* key_value_config); + explicit LossBasedControlConfig(const FieldTrialsView* key_value_config); LossBasedControlConfig(const LossBasedControlConfig&); LossBasedControlConfig& operator=(const LossBasedControlConfig&) = default; ~LossBasedControlConfig(); @@ -52,7 +52,7 @@ struct LossBasedControlConfig { class LossBasedBandwidthEstimation { public: explicit LossBasedBandwidthEstimation( - const WebRtcKeyValueConfig* key_value_config); + const FieldTrialsView* key_value_config); // Returns the new estimate. DataRate Update(Timestamp at_time, DataRate min_bitrate, diff --git a/modules/congestion_controller/goog_cc/loss_based_bwe_v2.cc b/modules/congestion_controller/goog_cc/loss_based_bwe_v2.cc index 7c72b99bda..616fe710c8 100644 --- a/modules/congestion_controller/goog_cc/loss_based_bwe_v2.cc +++ b/modules/congestion_controller/goog_cc/loss_based_bwe_v2.cc @@ -21,9 +21,9 @@ #include "absl/algorithm/container.h" #include "absl/types/optional.h" #include "api/array_view.h" +#include "api/field_trials_view.h" #include "api/network_state_predictor.h" #include "api/transport/network_types.h" -#include "api/transport/webrtc_key_value_config.h" #include "api/units/data_rate.h" #include "api/units/data_size.h" #include "api/units/time_delta.h" @@ -101,7 +101,7 @@ double GetLossProbability(double inherent_loss, } // namespace -LossBasedBweV2::LossBasedBweV2(const WebRtcKeyValueConfig* key_value_config) +LossBasedBweV2::LossBasedBweV2(const FieldTrialsView* key_value_config) : config_(CreateConfig(key_value_config)) { if (!config_.has_value()) { RTC_LOG(LS_VERBOSE) << "The configuration does not specify that the " @@ -225,7 +225,7 @@ void LossBasedBweV2::UpdateBandwidthEstimate( // Returns a `LossBasedBweV2::Config` iff the `key_value_config` specifies a // configuration for the `LossBasedBweV2` which is explicitly enabled. absl::optional LossBasedBweV2::CreateConfig( - const WebRtcKeyValueConfig* key_value_config) { + const FieldTrialsView* key_value_config) { FieldTrialParameter enabled("Enabled", false); FieldTrialParameter bandwidth_rampup_upper_bound_factor( "BwRampupUpperBoundFactor", 1.1); diff --git a/modules/congestion_controller/goog_cc/loss_based_bwe_v2.h b/modules/congestion_controller/goog_cc/loss_based_bwe_v2.h index cc33387c9e..0c496c86bb 100644 --- a/modules/congestion_controller/goog_cc/loss_based_bwe_v2.h +++ b/modules/congestion_controller/goog_cc/loss_based_bwe_v2.h @@ -17,9 +17,9 @@ #include "absl/types/optional.h" #include "api/array_view.h" +#include "api/field_trials_view.h" #include "api/network_state_predictor.h" #include "api/transport/network_types.h" -#include "api/transport/webrtc_key_value_config.h" #include "api/units/data_rate.h" #include "api/units/data_size.h" #include "api/units/time_delta.h" @@ -31,7 +31,7 @@ class LossBasedBweV2 { public: // Creates a disabled `LossBasedBweV2` if the // `key_value_config` is not valid. - explicit LossBasedBweV2(const WebRtcKeyValueConfig* key_value_config); + explicit LossBasedBweV2(const FieldTrialsView* key_value_config); LossBasedBweV2(const LossBasedBweV2&) = delete; LossBasedBweV2& operator=(const LossBasedBweV2&) = delete; @@ -112,7 +112,7 @@ class LossBasedBweV2 { }; static absl::optional CreateConfig( - const WebRtcKeyValueConfig* key_value_config); + const FieldTrialsView* key_value_config); bool IsConfigValid() const; // Returns `0.0` if not enough loss statistics have been received. diff --git a/modules/congestion_controller/goog_cc/probe_controller.cc b/modules/congestion_controller/goog_cc/probe_controller.cc index df753ed0c9..9c263ebe52 100644 --- a/modules/congestion_controller/goog_cc/probe_controller.cc +++ b/modules/congestion_controller/goog_cc/probe_controller.cc @@ -91,7 +91,7 @@ void MaybeLogProbeClusterCreated(RtcEventLog* event_log, } // namespace ProbeControllerConfig::ProbeControllerConfig( - const WebRtcKeyValueConfig* key_value_config) + const FieldTrialsView* key_value_config) : first_exponential_probe_scale("p1", 3.0), second_exponential_probe_scale("p2", 6.0), further_exponential_probe_scale("step_size", 2), @@ -127,7 +127,7 @@ ProbeControllerConfig::ProbeControllerConfig(const ProbeControllerConfig&) = default; ProbeControllerConfig::~ProbeControllerConfig() = default; -ProbeController::ProbeController(const WebRtcKeyValueConfig* key_value_config, +ProbeController::ProbeController(const FieldTrialsView* key_value_config, RtcEventLog* event_log) : enable_periodic_alr_probing_(false), in_rapid_recovery_experiment_(absl::StartsWith( diff --git a/modules/congestion_controller/goog_cc/probe_controller.h b/modules/congestion_controller/goog_cc/probe_controller.h index d0f1458ece..86931ee8b1 100644 --- a/modules/congestion_controller/goog_cc/probe_controller.h +++ b/modules/congestion_controller/goog_cc/probe_controller.h @@ -18,16 +18,16 @@ #include "absl/base/attributes.h" #include "absl/types/optional.h" +#include "api/field_trials_view.h" #include "api/rtc_event_log/rtc_event_log.h" #include "api/transport/network_control.h" -#include "api/transport/webrtc_key_value_config.h" #include "api/units/data_rate.h" #include "rtc_base/experiments/field_trial_parser.h" namespace webrtc { struct ProbeControllerConfig { - explicit ProbeControllerConfig(const WebRtcKeyValueConfig* key_value_config); + explicit ProbeControllerConfig(const FieldTrialsView* key_value_config); ProbeControllerConfig(const ProbeControllerConfig&); ProbeControllerConfig& operator=(const ProbeControllerConfig&) = default; ~ProbeControllerConfig(); @@ -58,7 +58,7 @@ struct ProbeControllerConfig { // bitrate is adjusted by an application. class ProbeController { public: - explicit ProbeController(const WebRtcKeyValueConfig* key_value_config, + explicit ProbeController(const FieldTrialsView* key_value_config, RtcEventLog* event_log); ~ProbeController(); diff --git a/modules/congestion_controller/goog_cc/robust_throughput_estimator.h b/modules/congestion_controller/goog_cc/robust_throughput_estimator.h index de48a9b599..b67b49fcfb 100644 --- a/modules/congestion_controller/goog_cc/robust_throughput_estimator.h +++ b/modules/congestion_controller/goog_cc/robust_throughput_estimator.h @@ -16,8 +16,8 @@ #include #include "absl/types/optional.h" +#include "api/field_trials_view.h" #include "api/transport/network_types.h" -#include "api/transport/webrtc_key_value_config.h" #include "api/units/data_rate.h" #include "modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator_interface.h" diff --git a/modules/congestion_controller/goog_cc/send_side_bandwidth_estimation.cc b/modules/congestion_controller/goog_cc/send_side_bandwidth_estimation.cc index 631ef86c65..d0d7b83ae6 100644 --- a/modules/congestion_controller/goog_cc/send_side_bandwidth_estimation.cc +++ b/modules/congestion_controller/goog_cc/send_side_bandwidth_estimation.cc @@ -17,10 +17,10 @@ #include #include "absl/strings/match.h" +#include "api/field_trials_view.h" #include "api/network_state_predictor.h" #include "api/rtc_event_log/rtc_event.h" #include "api/rtc_event_log/rtc_event_log.h" -#include "api/transport/webrtc_key_value_config.h" #include "api/units/data_rate.h" #include "api/units/time_delta.h" #include "logging/rtc_event_log/events/rtc_event_bwe_update_loss_based.h" @@ -158,7 +158,7 @@ DataRate LinkCapacityTracker::estimate() const { return DataRate::BitsPerSec(capacity_estimate_bps_); } -RttBasedBackoff::RttBasedBackoff(const WebRtcKeyValueConfig* key_value_config) +RttBasedBackoff::RttBasedBackoff(const FieldTrialsView* key_value_config) : disabled_("Disabled"), configured_limit_("limit", TimeDelta::Seconds(3)), drop_fraction_("fraction", 0.8), @@ -197,7 +197,7 @@ TimeDelta RttBasedBackoff::CorrectedRtt(Timestamp at_time) const { RttBasedBackoff::~RttBasedBackoff() = default; SendSideBandwidthEstimation::SendSideBandwidthEstimation( - const WebRtcKeyValueConfig* key_value_config, + const FieldTrialsView* key_value_config, RtcEventLog* event_log) : rtt_backoff_(key_value_config), lost_packets_since_last_loss_update_(0), diff --git a/modules/congestion_controller/goog_cc/send_side_bandwidth_estimation.h b/modules/congestion_controller/goog_cc/send_side_bandwidth_estimation.h index bb53be873b..cbcad86df4 100644 --- a/modules/congestion_controller/goog_cc/send_side_bandwidth_estimation.h +++ b/modules/congestion_controller/goog_cc/send_side_bandwidth_estimation.h @@ -20,9 +20,9 @@ #include #include "absl/types/optional.h" +#include "api/field_trials_view.h" #include "api/network_state_predictor.h" #include "api/transport/network_types.h" -#include "api/transport/webrtc_key_value_config.h" #include "api/units/data_rate.h" #include "api/units/time_delta.h" #include "api/units/timestamp.h" @@ -57,7 +57,7 @@ class LinkCapacityTracker { class RttBasedBackoff { public: - explicit RttBasedBackoff(const WebRtcKeyValueConfig* key_value_config); + explicit RttBasedBackoff(const FieldTrialsView* key_value_config); ~RttBasedBackoff(); void UpdatePropagationRtt(Timestamp at_time, TimeDelta propagation_rtt); TimeDelta CorrectedRtt(Timestamp at_time) const; @@ -78,7 +78,7 @@ class RttBasedBackoff { class SendSideBandwidthEstimation { public: SendSideBandwidthEstimation() = delete; - SendSideBandwidthEstimation(const WebRtcKeyValueConfig* key_value_config, + SendSideBandwidthEstimation(const FieldTrialsView* key_value_config, RtcEventLog* event_log); ~SendSideBandwidthEstimation(); diff --git a/modules/congestion_controller/goog_cc/trendline_estimator.cc b/modules/congestion_controller/goog_cc/trendline_estimator.cc index 7fdf66c518..88182d4f80 100644 --- a/modules/congestion_controller/goog_cc/trendline_estimator.cc +++ b/modules/congestion_controller/goog_cc/trendline_estimator.cc @@ -34,8 +34,7 @@ constexpr double kDefaultTrendlineThresholdGain = 4.0; const char kBweWindowSizeInPacketsExperiment[] = "WebRTC-BweWindowSizeInPackets"; -size_t ReadTrendlineFilterWindowSize( - const WebRtcKeyValueConfig* key_value_config) { +size_t ReadTrendlineFilterWindowSize(const FieldTrialsView* key_value_config) { std::string experiment_string = key_value_config->Lookup(kBweWindowSizeInPacketsExperiment); size_t window_size; @@ -115,7 +114,7 @@ constexpr int kDeltaCounterMax = 1000; constexpr char TrendlineEstimatorSettings::kKey[]; TrendlineEstimatorSettings::TrendlineEstimatorSettings( - const WebRtcKeyValueConfig* key_value_config) { + const FieldTrialsView* key_value_config) { if (absl::StartsWith( key_value_config->Lookup(kBweWindowSizeInPacketsExperiment), "Enabled")) { @@ -160,7 +159,7 @@ std::unique_ptr TrendlineEstimatorSettings::Parser() { } TrendlineEstimator::TrendlineEstimator( - const WebRtcKeyValueConfig* key_value_config, + const FieldTrialsView* key_value_config, NetworkStatePredictor* network_state_predictor) : settings_(key_value_config), smoothing_coef_(kDefaultTrendlineSmoothingCoeff), diff --git a/modules/congestion_controller/goog_cc/trendline_estimator.h b/modules/congestion_controller/goog_cc/trendline_estimator.h index 6fd442498b..ffda25df74 100644 --- a/modules/congestion_controller/goog_cc/trendline_estimator.h +++ b/modules/congestion_controller/goog_cc/trendline_estimator.h @@ -17,8 +17,8 @@ #include #include +#include "api/field_trials_view.h" #include "api/network_state_predictor.h" -#include "api/transport/webrtc_key_value_config.h" #include "modules/congestion_controller/goog_cc/delay_increase_detector_interface.h" #include "rtc_base/experiments/struct_parameters_parser.h" @@ -29,8 +29,7 @@ struct TrendlineEstimatorSettings { static constexpr unsigned kDefaultTrendlineWindowSize = 20; TrendlineEstimatorSettings() = delete; - explicit TrendlineEstimatorSettings( - const WebRtcKeyValueConfig* key_value_config); + explicit TrendlineEstimatorSettings(const FieldTrialsView* key_value_config); // Sort the packets in the window. Should be redundant, // but then almost no cost. @@ -51,7 +50,7 @@ struct TrendlineEstimatorSettings { class TrendlineEstimator : public DelayIncreaseDetectorInterface { public: - TrendlineEstimator(const WebRtcKeyValueConfig* key_value_config, + TrendlineEstimator(const FieldTrialsView* key_value_config, NetworkStatePredictor* network_state_predictor); ~TrendlineEstimator() override; diff --git a/modules/pacing/BUILD.gn b/modules/pacing/BUILD.gn index 90e0eb7134..97b3a7bb7f 100644 --- a/modules/pacing/BUILD.gn +++ b/modules/pacing/BUILD.gn @@ -33,14 +33,14 @@ rtc_library("pacing") { deps = [ ":interval_budget", "..:module_api", + "../../api:field_trials_view", + "../../api:field_trials_view", "../../api:function_view", "../../api:sequence_checker", - "../../api:webrtc_key_value_config", "../../api/rtc_event_log", "../../api/task_queue:task_queue", "../../api/transport:field_trial_based_config", "../../api/transport:network_control", - "../../api/transport:webrtc_key_value_config", "../../api/units:data_rate", "../../api/units:data_size", "../../api/units:time_delta", diff --git a/modules/pacing/DEPS b/modules/pacing/DEPS index 1b2e6dcf45..42f3dfcb14 100644 --- a/modules/pacing/DEPS +++ b/modules/pacing/DEPS @@ -1,6 +1,6 @@ include_rules = [ "+system_wrappers", - # Avoid directly using field_trial. Instead use WebRtcKeyValueConfig. + # Avoid directly using field_trial. Instead use FieldTrialsView. "-system_wrappers/include/field_trial.h", "+logging/rtc_event_log" ] diff --git a/modules/pacing/bitrate_prober.cc b/modules/pacing/bitrate_prober.cc index ed4b7760c7..d2b93dabd0 100644 --- a/modules/pacing/bitrate_prober.cc +++ b/modules/pacing/bitrate_prober.cc @@ -33,7 +33,7 @@ constexpr TimeDelta kProbeClusterTimeout = TimeDelta::Seconds(5); } // namespace BitrateProberConfig::BitrateProberConfig( - const WebRtcKeyValueConfig* key_value_config) + const FieldTrialsView* key_value_config) : min_probe_packets_sent("min_probe_packets_sent", 5), min_probe_delta("min_probe_delta", TimeDelta::Millis(1)), min_probe_duration("min_probe_duration", TimeDelta::Millis(15)), @@ -56,7 +56,7 @@ BitrateProber::~BitrateProber() { total_failed_probe_count_); } -BitrateProber::BitrateProber(const WebRtcKeyValueConfig& field_trials) +BitrateProber::BitrateProber(const FieldTrialsView& field_trials) : probing_state_(ProbingState::kDisabled), next_probe_time_(Timestamp::PlusInfinity()), total_probe_count_(0), diff --git a/modules/pacing/bitrate_prober.h b/modules/pacing/bitrate_prober.h index 3ac431cee3..94016d5250 100644 --- a/modules/pacing/bitrate_prober.h +++ b/modules/pacing/bitrate_prober.h @@ -24,7 +24,7 @@ namespace webrtc { class RtcEventLog; struct BitrateProberConfig { - explicit BitrateProberConfig(const WebRtcKeyValueConfig* key_value_config); + explicit BitrateProberConfig(const FieldTrialsView* key_value_config); BitrateProberConfig(const BitrateProberConfig&) = default; BitrateProberConfig& operator=(const BitrateProberConfig&) = default; ~BitrateProberConfig() = default; @@ -46,7 +46,7 @@ struct BitrateProberConfig { // on being protected by the caller. class BitrateProber { public: - explicit BitrateProber(const WebRtcKeyValueConfig& field_trials); + explicit BitrateProber(const FieldTrialsView& field_trials); ~BitrateProber(); void SetEnabled(bool enable); diff --git a/modules/pacing/paced_sender.cc b/modules/pacing/paced_sender.cc index 56a14105f7..22c86f7fbd 100644 --- a/modules/pacing/paced_sender.cc +++ b/modules/pacing/paced_sender.cc @@ -30,7 +30,7 @@ const float PacedSender::kDefaultPaceMultiplier = 2.5f; PacedSender::PacedSender(Clock* clock, PacketRouter* packet_router, - const WebRtcKeyValueConfig& field_trials, + const FieldTrialsView& field_trials, ProcessThread* process_thread) : process_mode_( absl::StartsWith(field_trials.Lookup("WebRTC-Pacer-DynamicProcess"), diff --git a/modules/pacing/paced_sender.h b/modules/pacing/paced_sender.h index e938a1e9e3..47fdaf3e41 100644 --- a/modules/pacing/paced_sender.h +++ b/modules/pacing/paced_sender.h @@ -19,10 +19,10 @@ #include #include "absl/types/optional.h" +#include "api/field_trials_view.h" #include "api/function_view.h" #include "api/transport/field_trial_based_config.h" #include "api/transport/network_types.h" -#include "api/transport/webrtc_key_value_config.h" #include "modules/include/module.h" #include "modules/pacing/bitrate_prober.h" #include "modules/pacing/interval_budget.h" @@ -56,7 +56,7 @@ class PacedSender : public RtpPacketPacer, public RtpPacketSender { // optional once all callers have been updated. PacedSender(Clock* clock, PacketRouter* packet_router, - const WebRtcKeyValueConfig& field_trials, + const FieldTrialsView& field_trials, ProcessThread* process_thread = nullptr); ~PacedSender() override; diff --git a/modules/pacing/paced_sender_unittest.cc b/modules/pacing/paced_sender_unittest.cc index 6f2728b72b..e833f34f0c 100644 --- a/modules/pacing/paced_sender_unittest.cc +++ b/modules/pacing/paced_sender_unittest.cc @@ -48,7 +48,7 @@ class MockCallback : public PacketRouter { (override)); }; -class ProcessModeTrials : public WebRtcKeyValueConfig { +class ProcessModeTrials : public FieldTrialsView { public: explicit ProcessModeTrials(bool dynamic_process) : mode_(dynamic_process) {} diff --git a/modules/pacing/pacing_controller.cc b/modules/pacing/pacing_controller.cc index 7430adf027..d580c2c349 100644 --- a/modules/pacing/pacing_controller.cc +++ b/modules/pacing/pacing_controller.cc @@ -40,17 +40,15 @@ constexpr TimeDelta kMaxProcessingInterval = TimeDelta::Millis(30); constexpr int kFirstPriority = 0; -bool IsDisabled(const WebRtcKeyValueConfig& field_trials, - absl::string_view key) { +bool IsDisabled(const FieldTrialsView& field_trials, absl::string_view key) { return absl::StartsWith(field_trials.Lookup(key), "Disabled"); } -bool IsEnabled(const WebRtcKeyValueConfig& field_trials, - absl::string_view key) { +bool IsEnabled(const FieldTrialsView& field_trials, absl::string_view key) { return absl::StartsWith(field_trials.Lookup(key), "Enabled"); } -TimeDelta GetDynamicPaddingTarget(const WebRtcKeyValueConfig& field_trials) { +TimeDelta GetDynamicPaddingTarget(const FieldTrialsView& field_trials) { FieldTrialParameter padding_target("timedelta", TimeDelta::Millis(5)); ParseFieldTrial({&padding_target}, @@ -94,7 +92,7 @@ const TimeDelta PacingController::kMaxEarlyProbeProcessing = PacingController::PacingController(Clock* clock, PacketSender* packet_sender, - const WebRtcKeyValueConfig& field_trials, + const FieldTrialsView& field_trials, ProcessMode mode) : mode_(mode), clock_(clock), diff --git a/modules/pacing/pacing_controller.h b/modules/pacing/pacing_controller.h index 3947f03579..c3e1dde2fb 100644 --- a/modules/pacing/pacing_controller.h +++ b/modules/pacing/pacing_controller.h @@ -19,10 +19,10 @@ #include #include "absl/types/optional.h" +#include "api/field_trials_view.h" #include "api/function_view.h" #include "api/transport/field_trial_based_config.h" #include "api/transport/network_types.h" -#include "api/transport/webrtc_key_value_config.h" #include "modules/pacing/bitrate_prober.h" #include "modules/pacing/interval_budget.h" #include "modules/pacing/round_robin_packet_queue.h" @@ -85,7 +85,7 @@ class PacingController { PacingController(Clock* clock, PacketSender* packet_sender, - const WebRtcKeyValueConfig& field_trials, + const FieldTrialsView& field_trials, ProcessMode mode); ~PacingController(); @@ -176,7 +176,7 @@ class PacingController { const ProcessMode mode_; Clock* const clock_; PacketSender* const packet_sender_; - const WebRtcKeyValueConfig& field_trials_; + const FieldTrialsView& field_trials_; const bool drain_large_queues_; const bool send_padding_if_silent_; diff --git a/modules/pacing/task_queue_paced_sender.cc b/modules/pacing/task_queue_paced_sender.cc index 4849daf1af..1ae182c670 100644 --- a/modules/pacing/task_queue_paced_sender.cc +++ b/modules/pacing/task_queue_paced_sender.cc @@ -31,7 +31,7 @@ const int TaskQueuePacedSender::kNoPacketHoldback = -1; TaskQueuePacedSender::TaskQueuePacedSender( Clock* clock, PacingController::PacketSender* packet_sender, - const WebRtcKeyValueConfig& field_trials, + const FieldTrialsView& field_trials, TaskQueueFactory* task_queue_factory, TimeDelta max_hold_back_window, int max_hold_back_window_in_packets) diff --git a/modules/pacing/task_queue_paced_sender.h b/modules/pacing/task_queue_paced_sender.h index 10fdfd7763..d72982f71e 100644 --- a/modules/pacing/task_queue_paced_sender.h +++ b/modules/pacing/task_queue_paced_sender.h @@ -19,12 +19,12 @@ #include "absl/base/attributes.h" #include "absl/types/optional.h" +#include "api/field_trials_view.h" #include "api/sequence_checker.h" #include "api/task_queue/task_queue_factory.h" #include "api/units/data_size.h" #include "api/units/time_delta.h" #include "api/units/timestamp.h" -#include "api/webrtc_key_value_config.h" #include "modules/pacing/pacing_controller.h" #include "modules/pacing/rtp_packet_pacer.h" #include "modules/rtp_rtcp/source/rtp_packet_to_send.h" @@ -45,7 +45,7 @@ class TaskQueuePacedSender : public RtpPacketPacer, public RtpPacketSender { // latency. TaskQueuePacedSender(Clock* clock, PacingController::PacketSender* packet_sender, - const WebRtcKeyValueConfig& field_trials, + const FieldTrialsView& field_trials, TaskQueueFactory* task_queue_factory, TimeDelta max_hold_back_window, int max_hold_back_window_in_packets); diff --git a/modules/remote_bitrate_estimator/BUILD.gn b/modules/remote_bitrate_estimator/BUILD.gn index fd52b2dcb9..b49e028f54 100644 --- a/modules/remote_bitrate_estimator/BUILD.gn +++ b/modules/remote_bitrate_estimator/BUILD.gn @@ -41,11 +41,11 @@ rtc_library("remote_bitrate_estimator") { } deps = [ + "../../api:field_trials_view", "../../api:network_state_predictor_api", "../../api:rtp_headers", "../../api/transport:field_trial_based_config", "../../api/transport:network_control", - "../../api/transport:webrtc_key_value_config", "../../api/units:data_rate", "../../api/units:data_size", "../../api/units:time_delta", diff --git a/modules/remote_bitrate_estimator/DEPS b/modules/remote_bitrate_estimator/DEPS index 66a3201bd0..35a62119e5 100644 --- a/modules/remote_bitrate_estimator/DEPS +++ b/modules/remote_bitrate_estimator/DEPS @@ -1,6 +1,6 @@ include_rules = [ "+logging/rtc_event_log", "+system_wrappers", - # Avoid directly using field_trial. Instead use WebRtcKeyValueConfig. + # Avoid directly using field_trial. Instead use FieldTrialsView. "-system_wrappers/include/field_trial.h", ] diff --git a/modules/remote_bitrate_estimator/aimd_rate_control.cc b/modules/remote_bitrate_estimator/aimd_rate_control.cc index 3297df9c83..e77336d808 100644 --- a/modules/remote_bitrate_estimator/aimd_rate_control.cc +++ b/modules/remote_bitrate_estimator/aimd_rate_control.cc @@ -35,17 +35,15 @@ constexpr double kDefaultBackoffFactor = 0.85; constexpr char kBweBackOffFactorExperiment[] = "WebRTC-BweBackOffFactor"; -bool IsEnabled(const WebRtcKeyValueConfig& field_trials, - absl::string_view key) { +bool IsEnabled(const FieldTrialsView& field_trials, absl::string_view key) { return absl::StartsWith(field_trials.Lookup(key), "Enabled"); } -bool IsNotDisabled(const WebRtcKeyValueConfig& field_trials, - absl::string_view key) { +bool IsNotDisabled(const FieldTrialsView& field_trials, absl::string_view key) { return !absl::StartsWith(field_trials.Lookup(key), "Disabled"); } -double ReadBackoffFactor(const WebRtcKeyValueConfig& key_value_config) { +double ReadBackoffFactor(const FieldTrialsView& key_value_config) { std::string experiment_string = key_value_config.Lookup(kBweBackOffFactorExperiment); double backoff_factor; @@ -67,10 +65,10 @@ double ReadBackoffFactor(const WebRtcKeyValueConfig& key_value_config) { } // namespace -AimdRateControl::AimdRateControl(const WebRtcKeyValueConfig* key_value_config) +AimdRateControl::AimdRateControl(const FieldTrialsView* key_value_config) : AimdRateControl(key_value_config, /* send_side =*/false) {} -AimdRateControl::AimdRateControl(const WebRtcKeyValueConfig* key_value_config, +AimdRateControl::AimdRateControl(const FieldTrialsView* key_value_config, bool send_side) : min_configured_bitrate_(congestion_controller::GetMinBitrate()), max_configured_bitrate_(DataRate::KilobitsPerSec(30000)), diff --git a/modules/remote_bitrate_estimator/aimd_rate_control.h b/modules/remote_bitrate_estimator/aimd_rate_control.h index 699b185c2d..30e9710a85 100644 --- a/modules/remote_bitrate_estimator/aimd_rate_control.h +++ b/modules/remote_bitrate_estimator/aimd_rate_control.h @@ -14,8 +14,8 @@ #include #include "absl/types/optional.h" +#include "api/field_trials_view.h" #include "api/transport/network_types.h" -#include "api/transport/webrtc_key_value_config.h" #include "api/units/data_rate.h" #include "api/units/timestamp.h" #include "modules/congestion_controller/goog_cc/link_capacity_estimator.h" @@ -30,8 +30,8 @@ namespace webrtc { // multiplicatively. class AimdRateControl { public: - explicit AimdRateControl(const WebRtcKeyValueConfig* key_value_config); - AimdRateControl(const WebRtcKeyValueConfig* key_value_config, bool send_side); + explicit AimdRateControl(const FieldTrialsView* key_value_config); + AimdRateControl(const FieldTrialsView* key_value_config, bool send_side); ~AimdRateControl(); // Returns true if the target bitrate has been initialized. This happens diff --git a/modules/remote_bitrate_estimator/overuse_detector.cc b/modules/remote_bitrate_estimator/overuse_detector.cc index 710b3b21d3..672822bbcd 100644 --- a/modules/remote_bitrate_estimator/overuse_detector.cc +++ b/modules/remote_bitrate_estimator/overuse_detector.cc @@ -33,7 +33,7 @@ const double kOverUsingTimeThreshold = 10; const int kMaxNumDeltas = 60; bool AdaptiveThresholdExperimentIsDisabled( - const WebRtcKeyValueConfig& key_value_config) { + const FieldTrialsView& key_value_config) { std::string experiment_string = key_value_config.Lookup(kAdaptiveThresholdExperiment); const size_t kMinExperimentLength = kDisabledPrefixLength; @@ -44,7 +44,7 @@ bool AdaptiveThresholdExperimentIsDisabled( // Gets thresholds from the experiment name following the format // "WebRTC-AdaptiveBweThreshold/Enabled-0.5,0.002/". -bool ReadExperimentConstants(const WebRtcKeyValueConfig& key_value_config, +bool ReadExperimentConstants(const FieldTrialsView& key_value_config, double* k_up, double* k_down) { std::string experiment_string = @@ -57,7 +57,7 @@ bool ReadExperimentConstants(const WebRtcKeyValueConfig& key_value_config, "%lf,%lf", k_up, k_down) == 2; } -OveruseDetector::OveruseDetector(const WebRtcKeyValueConfig* key_value_config) +OveruseDetector::OveruseDetector(const FieldTrialsView* key_value_config) // Experiment is on by default, but can be disabled with finch by setting // the field trial string to "WebRTC-AdaptiveBweThreshold/Disabled/". : in_experiment_(!AdaptiveThresholdExperimentIsDisabled(*key_value_config)), @@ -147,7 +147,7 @@ void OveruseDetector::UpdateThreshold(double modified_offset, int64_t now_ms) { } void OveruseDetector::InitializeExperiment( - const WebRtcKeyValueConfig& key_value_config) { + const FieldTrialsView& key_value_config) { RTC_DCHECK(in_experiment_); double k_up = 0.0; double k_down = 0.0; diff --git a/modules/remote_bitrate_estimator/overuse_detector.h b/modules/remote_bitrate_estimator/overuse_detector.h index 179e290c21..dfaea9187a 100644 --- a/modules/remote_bitrate_estimator/overuse_detector.h +++ b/modules/remote_bitrate_estimator/overuse_detector.h @@ -12,17 +12,17 @@ #include +#include "api/field_trials_view.h" #include "api/network_state_predictor.h" -#include "api/transport/webrtc_key_value_config.h" namespace webrtc { bool AdaptiveThresholdExperimentIsDisabled( - const WebRtcKeyValueConfig& key_value_config); + const FieldTrialsView& key_value_config); class OveruseDetector { public: - explicit OveruseDetector(const WebRtcKeyValueConfig* key_value_config); + explicit OveruseDetector(const FieldTrialsView* key_value_config); virtual ~OveruseDetector(); OveruseDetector(const OveruseDetector&) = delete; @@ -44,7 +44,7 @@ class OveruseDetector { private: void UpdateThreshold(double modified_offset, int64_t now_ms); - void InitializeExperiment(const WebRtcKeyValueConfig& key_value_config); + void InitializeExperiment(const FieldTrialsView& key_value_config); bool in_experiment_; double k_up_; diff --git a/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.cc b/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.cc index c1c56977cc..028d0db46e 100644 --- a/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.cc +++ b/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.cc @@ -44,7 +44,7 @@ struct RemoteBitrateEstimatorSingleStream::Detector { explicit Detector(int64_t last_packet_time_ms, const OverUseDetectorOptions& options, bool enable_burst_grouping, - const WebRtcKeyValueConfig* key_value_config) + const FieldTrialsView* key_value_config) : last_packet_time_ms(last_packet_time_ms), inter_arrival(90 * kTimestampGroupLengthMs, kTimestampToMs, diff --git a/modules/remote_bitrate_estimator/remote_estimator_proxy.cc b/modules/remote_bitrate_estimator/remote_estimator_proxy.cc index 710736876e..fd5f629235 100644 --- a/modules/remote_bitrate_estimator/remote_estimator_proxy.cc +++ b/modules/remote_bitrate_estimator/remote_estimator_proxy.cc @@ -31,7 +31,7 @@ static constexpr int64_t kMaxTimeMs = RemoteEstimatorProxy::RemoteEstimatorProxy( Clock* clock, TransportFeedbackSender feedback_sender, - const WebRtcKeyValueConfig* key_value_config, + const FieldTrialsView* key_value_config, NetworkStateEstimator* network_state_estimator) : clock_(clock), feedback_sender_(std::move(feedback_sender)), diff --git a/modules/remote_bitrate_estimator/remote_estimator_proxy.h b/modules/remote_bitrate_estimator/remote_estimator_proxy.h index 4e9b2b5631..438aa94dc5 100644 --- a/modules/remote_bitrate_estimator/remote_estimator_proxy.h +++ b/modules/remote_bitrate_estimator/remote_estimator_proxy.h @@ -16,8 +16,8 @@ #include #include +#include "api/field_trials_view.h" #include "api/transport/network_control.h" -#include "api/transport/webrtc_key_value_config.h" #include "modules/remote_bitrate_estimator/include/remote_bitrate_estimator.h" #include "modules/remote_bitrate_estimator/packet_arrival_map.h" #include "rtc_base/experiments/field_trial_parser.h" @@ -42,7 +42,7 @@ class RemoteEstimatorProxy : public RemoteBitrateEstimator { std::vector> packets)>; RemoteEstimatorProxy(Clock* clock, TransportFeedbackSender feedback_sender, - const WebRtcKeyValueConfig* key_value_config, + const FieldTrialsView* key_value_config, NetworkStateEstimator* network_state_estimator); ~RemoteEstimatorProxy() override; @@ -68,7 +68,7 @@ class RemoteEstimatorProxy : public RemoteBitrateEstimator { TimeDelta::Millis(100)}; FieldTrialParameter bandwidth_fraction{"frac", 0.05}; explicit TransportWideFeedbackConfig( - const WebRtcKeyValueConfig* key_value_config) { + const FieldTrialsView* key_value_config) { ParseFieldTrial({&back_window, &min_interval, &max_interval, &default_interval, &bandwidth_fraction}, key_value_config->Lookup( diff --git a/modules/rtp_rtcp/BUILD.gn b/modules/rtp_rtcp/BUILD.gn index 9922484647..e6640fe194 100644 --- a/modules/rtp_rtcp/BUILD.gn +++ b/modules/rtp_rtcp/BUILD.gn @@ -253,6 +253,7 @@ rtc_library("rtp_rtcp") { "..:module_api_public", "..:module_fec_api", "../../api:array_view", + "../../api:field_trials_view", "../../api:frame_transformer_interface", "../../api:function_view", "../../api:libjingle_peerconnection_api", @@ -267,7 +268,6 @@ rtc_library("rtp_rtcp") { "../../api/rtc_event_log", "../../api/task_queue:task_queue", "../../api/transport:field_trial_based_config", - "../../api/transport:webrtc_key_value_config", "../../api/transport/rtp:dependency_descriptor", "../../api/transport/rtp:rtp_source", "../../api/units:data_rate", diff --git a/modules/rtp_rtcp/DEPS b/modules/rtp_rtcp/DEPS index dac95dd23a..3eec1ca90d 100644 --- a/modules/rtp_rtcp/DEPS +++ b/modules/rtp_rtcp/DEPS @@ -3,6 +3,6 @@ include_rules = [ "+common_video", "+logging/rtc_event_log", "+system_wrappers", - # Avoid directly using field_trial. Instead use WebRtcKeyValueConfig. + # Avoid directly using field_trial. Instead use FieldTrialsView. "-system_wrappers/include/field_trial.h", ] diff --git a/modules/rtp_rtcp/source/deprecated/deprecated_rtp_sender_egress.cc b/modules/rtp_rtcp/source/deprecated/deprecated_rtp_sender_egress.cc index db6b50a449..35936c41ee 100644 --- a/modules/rtp_rtcp/source/deprecated/deprecated_rtp_sender_egress.cc +++ b/modules/rtp_rtcp/source/deprecated/deprecated_rtp_sender_egress.cc @@ -27,8 +27,7 @@ constexpr int kSendSideDelayWindowMs = 1000; constexpr int kBitrateStatisticsWindowMs = 1000; constexpr size_t kRtpSequenceNumberMapMaxEntries = 1 << 13; -bool IsDisabled(absl::string_view name, - const WebRtcKeyValueConfig* field_trials) { +bool IsDisabled(absl::string_view name, const FieldTrialsView* field_trials) { FieldTrialBasedConfig default_trials; auto& trials = field_trials ? *field_trials : default_trials; return absl::StartsWith(trials.Lookup(name), "Disabled"); diff --git a/modules/rtp_rtcp/source/rtp_rtcp_impl2_unittest.cc b/modules/rtp_rtcp/source/rtp_rtcp_impl2_unittest.cc index 8592e42173..48b0aac037 100644 --- a/modules/rtp_rtcp/source/rtp_rtcp_impl2_unittest.cc +++ b/modules/rtp_rtcp/source/rtp_rtcp_impl2_unittest.cc @@ -157,7 +157,7 @@ struct TestConfig { bool with_overhead = false; }; -class FieldTrialConfig : public WebRtcKeyValueConfig { +class FieldTrialConfig : public FieldTrialsView { public: static FieldTrialConfig GetFromTestConfig(const TestConfig& config) { FieldTrialConfig trials; diff --git a/modules/rtp_rtcp/source/rtp_rtcp_interface.h b/modules/rtp_rtcp/source/rtp_rtcp_interface.h index a411b237a0..48c6071d81 100644 --- a/modules/rtp_rtcp/source/rtp_rtcp_interface.h +++ b/modules/rtp_rtcp/source/rtp_rtcp_interface.h @@ -16,9 +16,9 @@ #include #include "absl/types/optional.h" +#include "api/field_trials_view.h" #include "api/frame_transformer_interface.h" #include "api/scoped_refptr.h" -#include "api/transport/webrtc_key_value_config.h" #include "api/video/video_bitrate_allocation.h" #include "modules/rtp_rtcp/include/receive_statistics.h" #include "modules/rtp_rtcp/include/report_block_data.h" @@ -128,7 +128,7 @@ class RtpRtcpInterface : public RtcpFeedbackSenderInterface { // If set, field trials are read from `field_trials`, otherwise // defaults to webrtc::FieldTrialBasedConfig. - const WebRtcKeyValueConfig* field_trials = nullptr; + const FieldTrialsView* field_trials = nullptr; // SSRCs for media and retransmission, respectively. // FlexFec SSRC is fetched from `flexfec_sender`. diff --git a/modules/rtp_rtcp/source/rtp_sender.cc b/modules/rtp_rtcp/source/rtp_sender.cc index d5c6c16978..6989efca5d 100644 --- a/modules/rtp_rtcp/source/rtp_sender.cc +++ b/modules/rtp_rtcp/source/rtp_sender.cc @@ -138,7 +138,7 @@ bool HasBweExtension(const RtpHeaderExtensionMap& extensions_map) { extensions_map.IsRegistered(kRtpExtensionTransmissionTimeOffset); } -double GetMaxPaddingSizeFactor(const WebRtcKeyValueConfig* field_trials) { +double GetMaxPaddingSizeFactor(const FieldTrialsView* field_trials) { // Too low factor means RTX payload padding is rarely used and ineffective. // Too high means we risk interrupting regular media packets. // In practice, 3x seems to yield reasonable results. diff --git a/modules/rtp_rtcp/source/rtp_sender.h b/modules/rtp_rtcp/source/rtp_sender.h index d892970542..0a80836624 100644 --- a/modules/rtp_rtcp/source/rtp_sender.h +++ b/modules/rtp_rtcp/source/rtp_sender.h @@ -21,7 +21,7 @@ #include "absl/types/optional.h" #include "api/array_view.h" #include "api/call/transport.h" -#include "api/transport/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "modules/rtp_rtcp/include/flexfec_sender.h" #include "modules/rtp_rtcp/include/rtp_header_extension_map.h" #include "modules/rtp_rtcp/include/rtp_packet_sender.h" diff --git a/modules/rtp_rtcp/source/rtp_sender_egress.cc b/modules/rtp_rtcp/source/rtp_sender_egress.cc index e5c2e536f6..4a72059beb 100644 --- a/modules/rtp_rtcp/source/rtp_sender_egress.cc +++ b/modules/rtp_rtcp/source/rtp_sender_egress.cc @@ -30,7 +30,7 @@ constexpr size_t kRtpSequenceNumberMapMaxEntries = 1 << 13; constexpr TimeDelta kUpdateInterval = TimeDelta::Millis(kBitrateStatisticsWindowMs); -bool IsTrialSetTo(const WebRtcKeyValueConfig* field_trials, +bool IsTrialSetTo(const FieldTrialsView* field_trials, absl::string_view name, absl::string_view value) { FieldTrialBasedConfig default_trials; diff --git a/modules/rtp_rtcp/source/rtp_sender_egress_unittest.cc b/modules/rtp_rtcp/source/rtp_sender_egress_unittest.cc index ee7123b112..33c06c4493 100644 --- a/modules/rtp_rtcp/source/rtp_sender_egress_unittest.cc +++ b/modules/rtp_rtcp/source/rtp_sender_egress_unittest.cc @@ -87,7 +87,7 @@ class MockSendSideDelayObserver : public SendSideDelayObserver { (override)); }; -class FieldTrialConfig : public WebRtcKeyValueConfig { +class FieldTrialConfig : public FieldTrialsView { public: FieldTrialConfig() : overhead_enabled_(false) {} ~FieldTrialConfig() override {} diff --git a/modules/rtp_rtcp/source/rtp_sender_unittest.cc b/modules/rtp_rtcp/source/rtp_sender_unittest.cc index d77d566c17..c28dd684db 100644 --- a/modules/rtp_rtcp/source/rtp_sender_unittest.cc +++ b/modules/rtp_rtcp/source/rtp_sender_unittest.cc @@ -100,7 +100,7 @@ class MockRtpPacketPacer : public RtpPacketSender { (override)); }; -class FieldTrialConfig : public WebRtcKeyValueConfig { +class FieldTrialConfig : public FieldTrialsView { public: FieldTrialConfig() : max_padding_factor_(1200) {} ~FieldTrialConfig() override {} diff --git a/modules/rtp_rtcp/source/rtp_sender_video.cc b/modules/rtp_rtcp/source/rtp_sender_video.cc index 6d6ba33600..614a3862b0 100644 --- a/modules/rtp_rtcp/source/rtp_sender_video.cc +++ b/modules/rtp_rtcp/source/rtp_sender_video.cc @@ -118,7 +118,7 @@ bool IsNoopDelay(const VideoPlayoutDelay& delay) { } absl::optional LoadVideoPlayoutDelayOverride( - const WebRtcKeyValueConfig* key_value_config) { + const FieldTrialsView* key_value_config) { RTC_DCHECK(key_value_config); FieldTrialOptional playout_delay_min_ms("min_ms", absl::nullopt); FieldTrialOptional playout_delay_max_ms("max_ms", absl::nullopt); diff --git a/modules/rtp_rtcp/source/rtp_sender_video.h b/modules/rtp_rtcp/source/rtp_sender_video.h index 5164969489..206fcab14f 100644 --- a/modules/rtp_rtcp/source/rtp_sender_video.h +++ b/modules/rtp_rtcp/source/rtp_sender_video.h @@ -79,7 +79,7 @@ class RTPSenderVideo { bool require_frame_encryption = false; bool enable_retransmit_all_layers = false; absl::optional red_payload_type; - const WebRtcKeyValueConfig* field_trials = nullptr; + const FieldTrialsView* field_trials = nullptr; rtc::scoped_refptr frame_transformer; TaskQueueBase* send_transport_queue = nullptr; }; diff --git a/modules/rtp_rtcp/source/rtp_sender_video_unittest.cc b/modules/rtp_rtcp/source/rtp_sender_video_unittest.cc index dc845e4d24..fc4fefe42d 100644 --- a/modules/rtp_rtcp/source/rtp_sender_video_unittest.cc +++ b/modules/rtp_rtcp/source/rtp_sender_video_unittest.cc @@ -127,7 +127,7 @@ class TestRtpSenderVideo : public RTPSenderVideo { public: TestRtpSenderVideo(Clock* clock, RTPSender* rtp_sender, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : RTPSenderVideo([&] { Config config; config.clock = clock; @@ -146,7 +146,7 @@ class TestRtpSenderVideo : public RTPSenderVideo { } }; -class FieldTrials : public WebRtcKeyValueConfig { +class FieldTrials : public FieldTrialsView { public: explicit FieldTrials(bool use_send_side_bwe_with_overhead) : use_send_side_bwe_with_overhead_(use_send_side_bwe_with_overhead), diff --git a/modules/video_coding/BUILD.gn b/modules/video_coding/BUILD.gn index a328d91ad7..ebc83035e7 100644 --- a/modules/video_coding/BUILD.gn +++ b/modules/video_coding/BUILD.gn @@ -81,8 +81,8 @@ rtc_library("nack_requester") { deps = [ "..:module_api", + "../../api:field_trials_view", "../../api:sequence_checker", - "../../api:webrtc_key_value_config", "../../api/task_queue", "../../api/units:time_delta", "../../api/units:timestamp", @@ -167,7 +167,7 @@ rtc_library("frame_buffer") { ] deps = [ ":video_coding_utility", - "../../api:webrtc_key_value_config", + "../../api:field_trials_view", "../../api/units:timestamp", "../../api/video:encoded_frame", "../../rtc_base:logging", @@ -188,7 +188,7 @@ rtc_library("timing") { "timing.h", ] deps = [ - "../../api:webrtc_key_value_config", + "../../api:field_trials_view", "../../api/units:time_delta", "../../api/video:video_rtp_headers", "../../rtc_base:logging", @@ -221,7 +221,7 @@ rtc_library("jitter_estimator") { ] deps = [ ":rtt_filter", - "../../api:webrtc_key_value_config", + "../../api:field_trials_view", "../../api/units:data_size", "../../api/units:frequency", "../../api/units:time_delta", @@ -310,11 +310,11 @@ rtc_library("video_coding") { "..:module_fec_api", "../../api:array_view", "../../api:fec_controller_api", + "../../api:field_trials_view", "../../api:rtp_headers", "../../api:rtp_packet_info", "../../api:scoped_refptr", "../../api:sequence_checker", - "../../api:webrtc_key_value_config", "../../api/task_queue", "../../api/units:data_rate", "../../api/units:data_size", @@ -422,10 +422,10 @@ rtc_library("video_coding_legacy") { ":video_coding", "..:module_api", "..:module_api_public", + "../../api:field_trials_view", "../../api:rtp_headers", "../../api:rtp_packet_info", "../../api:sequence_checker", - "../../api:webrtc_key_value_config", "../../api/transport:field_trial_based_config", "../../api/units:timestamp", "../../api/video:encoded_image", @@ -499,9 +499,9 @@ rtc_library("video_coding_utility") { deps = [ ":video_codec_interface", "../../api:array_view", + "../../api:field_trials_view", "../../api:scoped_refptr", "../../api:sequence_checker", - "../../api:webrtc_key_value_config", "../../api/video:encoded_frame", "../../api/video:encoded_image", "../../api/video:video_adaptation", @@ -755,10 +755,10 @@ rtc_library("webrtc_vp9") { ":webrtc_libvpx_interface", ":webrtc_vp9_helpers", "../../api:fec_controller_api", + "../../api:field_trials_view", "../../api:refcountedbase", "../../api:scoped_refptr", "../../api/transport:field_trial_based_config", - "../../api/transport:webrtc_key_value_config", "../../api/video:video_frame", "../../api/video:video_frame_i010", "../../api/video:video_rtp_headers", diff --git a/modules/video_coding/codecs/vp9/libvpx_vp9_decoder.cc b/modules/video_coding/codecs/vp9/libvpx_vp9_decoder.cc index 669dc55a4b..ffb4705e4f 100644 --- a/modules/video_coding/codecs/vp9/libvpx_vp9_decoder.cc +++ b/modules/video_coding/codecs/vp9/libvpx_vp9_decoder.cc @@ -96,7 +96,7 @@ ColorSpace ExtractVP9ColorSpace(vpx_color_space_t space_t, LibvpxVp9Decoder::LibvpxVp9Decoder() : LibvpxVp9Decoder(FieldTrialBasedConfig()) {} -LibvpxVp9Decoder::LibvpxVp9Decoder(const WebRtcKeyValueConfig& trials) +LibvpxVp9Decoder::LibvpxVp9Decoder(const FieldTrialsView& trials) : decode_complete_callback_(nullptr), inited_(false), decoder_(nullptr), diff --git a/modules/video_coding/codecs/vp9/libvpx_vp9_decoder.h b/modules/video_coding/codecs/vp9/libvpx_vp9_decoder.h index e5636d848a..a680441f73 100644 --- a/modules/video_coding/codecs/vp9/libvpx_vp9_decoder.h +++ b/modules/video_coding/codecs/vp9/libvpx_vp9_decoder.h @@ -14,7 +14,7 @@ #ifdef RTC_ENABLE_VP9 -#include "api/transport/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "api/video_codecs/video_decoder.h" #include "common_video/include/video_frame_buffer_pool.h" #include "modules/video_coding/codecs/vp9/include/vp9.h" @@ -26,7 +26,7 @@ namespace webrtc { class LibvpxVp9Decoder : public VP9Decoder { public: LibvpxVp9Decoder(); - explicit LibvpxVp9Decoder(const WebRtcKeyValueConfig& trials); + explicit LibvpxVp9Decoder(const FieldTrialsView& trials); virtual ~LibvpxVp9Decoder(); diff --git a/modules/video_coding/codecs/vp9/libvpx_vp9_encoder.cc b/modules/video_coding/codecs/vp9/libvpx_vp9_encoder.cc index 99680cbe79..c56905319d 100644 --- a/modules/video_coding/codecs/vp9/libvpx_vp9_encoder.cc +++ b/modules/video_coding/codecs/vp9/libvpx_vp9_encoder.cc @@ -194,7 +194,7 @@ void LibvpxVp9Encoder::EncoderOutputCodedPacketCallback(vpx_codec_cx_pkt* pkt, LibvpxVp9Encoder::LibvpxVp9Encoder(const cricket::VideoCodec& codec, std::unique_ptr interface, - const WebRtcKeyValueConfig& trials) + const FieldTrialsView& trials) : libvpx_(std::move(interface)), encoded_image_(), encoded_complete_callback_(nullptr), @@ -1811,8 +1811,7 @@ size_t LibvpxVp9Encoder::SteadyStateSize(int sid, int tid) { // static LibvpxVp9Encoder::VariableFramerateExperiment -LibvpxVp9Encoder::ParseVariableFramerateConfig( - const WebRtcKeyValueConfig& trials) { +LibvpxVp9Encoder::ParseVariableFramerateConfig(const FieldTrialsView& trials) { FieldTrialFlag enabled = FieldTrialFlag("Enabled"); FieldTrialParameter framerate_limit("min_fps", 5.0); FieldTrialParameter qp("min_qp", 32); @@ -1834,7 +1833,7 @@ LibvpxVp9Encoder::ParseVariableFramerateConfig( // static LibvpxVp9Encoder::QualityScalerExperiment -LibvpxVp9Encoder::ParseQualityScalerConfig(const WebRtcKeyValueConfig& trials) { +LibvpxVp9Encoder::ParseQualityScalerConfig(const FieldTrialsView& trials) { FieldTrialFlag disabled = FieldTrialFlag("Disabled"); FieldTrialParameter low_qp("low_qp", kLowVp9QpThreshold); FieldTrialParameter high_qp("hihg_qp", kHighVp9QpThreshold); @@ -1873,7 +1872,7 @@ void LibvpxVp9Encoder::UpdatePerformanceFlags() { // static LibvpxVp9Encoder::PerformanceFlags LibvpxVp9Encoder::ParsePerformanceFlagsFromTrials( - const WebRtcKeyValueConfig& trials) { + const FieldTrialsView& trials) { struct Params : public PerformanceFlags::ParameterSet { int min_pixel_count = 0; }; diff --git a/modules/video_coding/codecs/vp9/libvpx_vp9_encoder.h b/modules/video_coding/codecs/vp9/libvpx_vp9_encoder.h index b5e9cc6d4b..8685464c62 100644 --- a/modules/video_coding/codecs/vp9/libvpx_vp9_encoder.h +++ b/modules/video_coding/codecs/vp9/libvpx_vp9_encoder.h @@ -19,7 +19,7 @@ #include #include "api/fec_controller_override.h" -#include "api/transport/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "api/video_codecs/video_encoder.h" #include "api/video_codecs/vp9_profile.h" #include "common_video/include/video_frame_buffer_pool.h" @@ -37,7 +37,7 @@ class LibvpxVp9Encoder : public VP9Encoder { public: LibvpxVp9Encoder(const cricket::VideoCodec& codec, std::unique_ptr interface, - const WebRtcKeyValueConfig& trials); + const FieldTrialsView& trials); ~LibvpxVp9Encoder() override; @@ -190,7 +190,7 @@ class LibvpxVp9Encoder : public VP9Encoder { int frames_before_steady_state; } variable_framerate_experiment_; static VariableFramerateExperiment ParseVariableFramerateConfig( - const WebRtcKeyValueConfig& trials); + const FieldTrialsView& trials); FramerateControllerDeprecated variable_framerate_controller_; const struct QualityScalerExperiment { @@ -199,7 +199,7 @@ class LibvpxVp9Encoder : public VP9Encoder { bool enabled; } quality_scaler_experiment_; static QualityScalerExperiment ParseQualityScalerConfig( - const WebRtcKeyValueConfig& trials); + const FieldTrialsView& trials); const bool external_ref_ctrl_; // Flags that can affect speed vs quality tradeoff, and are configureable per @@ -234,7 +234,7 @@ class LibvpxVp9Encoder : public VP9Encoder { performance_flags_by_spatial_index_; void UpdatePerformanceFlags(); static PerformanceFlags ParsePerformanceFlagsFromTrials( - const WebRtcKeyValueConfig& trials); + const FieldTrialsView& trials); static PerformanceFlags GetDefaultPerformanceFlags(); int num_steady_state_frames_; diff --git a/modules/video_coding/deprecated/BUILD.gn b/modules/video_coding/deprecated/BUILD.gn index 9e4b65fede..0155fc42d7 100644 --- a/modules/video_coding/deprecated/BUILD.gn +++ b/modules/video_coding/deprecated/BUILD.gn @@ -17,7 +17,7 @@ rtc_library("nack_module") { deps = [ "..:nack_requester", "../..:module_api", - "../../../api:webrtc_key_value_config", + "../../../api:field_trials_view", "../../../api/units:time_delta", "../../../api/units:timestamp", "../../../rtc_base:checks", diff --git a/modules/video_coding/deprecated/nack_module.cc b/modules/video_coding/deprecated/nack_module.cc index 4a6ae09f54..0768bc48f8 100644 --- a/modules/video_coding/deprecated/nack_module.cc +++ b/modules/video_coding/deprecated/nack_module.cc @@ -32,7 +32,7 @@ const int kMaxReorderedPackets = 128; const int kNumReorderingBuckets = 10; const int kDefaultSendNackDelayMs = 0; -int64_t GetSendNackDelay(const WebRtcKeyValueConfig& field_trials) { +int64_t GetSendNackDelay(const FieldTrialsView& field_trials) { int64_t delay_ms = strtol( field_trials.Lookup("WebRTC-SendNackDelayMs").c_str(), nullptr, 10); if (delay_ms > 0 && delay_ms <= 20) { @@ -62,7 +62,7 @@ DEPRECATED_NackModule::BackoffSettings::BackoffSettings(TimeDelta min_retry, absl::optional DEPRECATED_NackModule::BackoffSettings::ParseFromFieldTrials( - const WebRtcKeyValueConfig& field_trials) { + const FieldTrialsView& field_trials) { // Matches magic number in RTPSender::OnReceivedNack(). const TimeDelta kDefaultMinRetryInterval = TimeDelta::Millis(5); // Upper bound on link-delay considered for exponential backoff. @@ -91,7 +91,7 @@ DEPRECATED_NackModule::DEPRECATED_NackModule( Clock* clock, NackSender* nack_sender, KeyFrameRequestSender* keyframe_request_sender, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : clock_(clock), nack_sender_(nack_sender), keyframe_request_sender_(keyframe_request_sender), diff --git a/modules/video_coding/deprecated/nack_module.h b/modules/video_coding/deprecated/nack_module.h index 8d17fff754..3b49bd1e5a 100644 --- a/modules/video_coding/deprecated/nack_module.h +++ b/modules/video_coding/deprecated/nack_module.h @@ -18,8 +18,8 @@ #include #include "absl/base/attributes.h" +#include "api/field_trials_view.h" #include "api/units/time_delta.h" -#include "api/webrtc_key_value_config.h" #include "modules/include/module.h" #include "modules/include/module_common_types.h" #include "modules/video_coding/histogram.h" @@ -35,7 +35,7 @@ class DEPRECATED_NackModule : public Module { DEPRECATED_NackModule(Clock* clock, NackSender* nack_sender, KeyFrameRequestSender* keyframe_request_sender, - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); int OnReceivedPacket(uint16_t seq_num, bool is_keyframe); int OnReceivedPacket(uint16_t seq_num, bool is_keyframe, bool is_recovered); @@ -72,7 +72,7 @@ class DEPRECATED_NackModule : public Module { struct BackoffSettings { BackoffSettings(TimeDelta min_retry, TimeDelta max_rtt, double base); static absl::optional ParseFromFieldTrials( - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); // Min time between nacks. const TimeDelta min_retry_interval; diff --git a/modules/video_coding/frame_buffer2.cc b/modules/video_coding/frame_buffer2.cc index bfa3b36c98..421da753b8 100644 --- a/modules/video_coding/frame_buffer2.cc +++ b/modules/video_coding/frame_buffer2.cc @@ -58,7 +58,7 @@ constexpr int64_t kLogNonDecodedIntervalMs = 5000; FrameBuffer::FrameBuffer(Clock* clock, VCMTiming* timing, VCMReceiveStatisticsCallback* stats_callback, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : decoded_frames_history_(kMaxFramesHistory), clock_(clock), callback_queue_(nullptr), diff --git a/modules/video_coding/frame_buffer2.h b/modules/video_coding/frame_buffer2.h index cd4cbcd1c1..48aceab8db 100644 --- a/modules/video_coding/frame_buffer2.h +++ b/modules/video_coding/frame_buffer2.h @@ -18,9 +18,9 @@ #include #include "absl/container/inlined_vector.h" +#include "api/field_trials_view.h" #include "api/sequence_checker.h" #include "api/video/encoded_frame.h" -#include "api/webrtc_key_value_config.h" #include "modules/video_coding/include/video_coding_defines.h" #include "modules/video_coding/inter_frame_delay.h" #include "modules/video_coding/jitter_estimator.h" @@ -49,7 +49,7 @@ class FrameBuffer { FrameBuffer(Clock* clock, VCMTiming* timing, VCMReceiveStatisticsCallback* stats_callback, - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); FrameBuffer() = delete; FrameBuffer(const FrameBuffer&) = delete; diff --git a/modules/video_coding/frame_buffer2_unittest.cc b/modules/video_coding/frame_buffer2_unittest.cc index b0e3f1deb7..def2e2219e 100644 --- a/modules/video_coding/frame_buffer2_unittest.cc +++ b/modules/video_coding/frame_buffer2_unittest.cc @@ -41,7 +41,7 @@ namespace video_coding { class VCMTimingFake : public VCMTiming { public: - explicit VCMTimingFake(Clock* clock, const WebRtcKeyValueConfig& field_trials) + explicit VCMTimingFake(Clock* clock, const FieldTrialsView& field_trials) : VCMTiming(clock, field_trials) {} Timestamp RenderTime(uint32_t frame_timestamp, Timestamp now) const override { diff --git a/modules/video_coding/frame_buffer3.cc b/modules/video_coding/frame_buffer3.cc index 7be5ffa521..fab4ca7909 100644 --- a/modules/video_coding/frame_buffer3.cc +++ b/modules/video_coding/frame_buffer3.cc @@ -64,7 +64,7 @@ bool IsLastFrameInTemporalUnit(const FrameIteratorT& it) { FrameBuffer::FrameBuffer(int max_size, int max_decode_history, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : legacy_frame_id_jump_behavior_( !field_trials.IsDisabled("WebRTC-LegacyFrameIdJumpBehavior")), max_size_(max_size), diff --git a/modules/video_coding/frame_buffer3.h b/modules/video_coding/frame_buffer3.h index 9683195ba7..5bcfbd21b7 100644 --- a/modules/video_coding/frame_buffer3.h +++ b/modules/video_coding/frame_buffer3.h @@ -17,9 +17,9 @@ #include "absl/container/inlined_vector.h" #include "absl/types/optional.h" +#include "api/field_trials_view.h" #include "api/units/timestamp.h" #include "api/video/encoded_frame.h" -#include "api/webrtc_key_value_config.h" #include "modules/video_coding/utility/decoded_frames_history.h" namespace webrtc { @@ -37,7 +37,7 @@ class FrameBuffer { FrameBuffer(int max_size, int max_decode_history, // TODO(hta): remove field trials! - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); FrameBuffer(const FrameBuffer&) = delete; FrameBuffer& operator=(const FrameBuffer&) = delete; ~FrameBuffer() = default; diff --git a/modules/video_coding/generic_decoder.cc b/modules/video_coding/generic_decoder.cc index 78d77d3552..2a87198381 100644 --- a/modules/video_coding/generic_decoder.cc +++ b/modules/video_coding/generic_decoder.cc @@ -29,7 +29,7 @@ namespace webrtc { VCMDecodedFrameCallback::VCMDecodedFrameCallback( VCMTiming* timing, Clock* clock, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : _clock(clock), _timing(timing), _timestampMap(kDecoderFrameMemoryLength), diff --git a/modules/video_coding/generic_decoder.h b/modules/video_coding/generic_decoder.h index 34f22c4488..a674858726 100644 --- a/modules/video_coding/generic_decoder.h +++ b/modules/video_coding/generic_decoder.h @@ -13,10 +13,10 @@ #include +#include "api/field_trials_view.h" #include "api/sequence_checker.h" #include "api/units/time_delta.h" #include "api/video_codecs/video_decoder.h" -#include "api/webrtc_key_value_config.h" #include "modules/video_coding/encoded_frame.h" #include "modules/video_coding/include/video_codec_interface.h" #include "modules/video_coding/timestamp_map.h" @@ -34,7 +34,7 @@ class VCMDecodedFrameCallback : public DecodedImageCallback { public: VCMDecodedFrameCallback(VCMTiming* timing, Clock* clock, - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); ~VCMDecodedFrameCallback() override; void SetUserReceiveCallback(VCMReceiveCallback* receiveCallback); VCMReceiveCallback* UserReceiveCallback(); diff --git a/modules/video_coding/include/video_coding.h b/modules/video_coding/include/video_coding.h index 8cedc4a9be..80398fc2c1 100644 --- a/modules/video_coding/include/video_coding.h +++ b/modules/video_coding/include/video_coding.h @@ -11,9 +11,9 @@ #ifndef MODULES_VIDEO_CODING_INCLUDE_VIDEO_CODING_H_ #define MODULES_VIDEO_CODING_INCLUDE_VIDEO_CODING_H_ +#include "api/field_trials_view.h" #include "api/video/video_frame.h" #include "api/video_codecs/video_decoder.h" -#include "api/webrtc_key_value_config.h" #include "modules/include/module.h" #include "modules/rtp_rtcp/source/rtp_video_header.h" #include "modules/video_coding/include/video_coding_defines.h" @@ -31,7 +31,7 @@ class VideoCodingModule : public Module { // DEPRECATED. static VideoCodingModule* Create( Clock* clock, - const WebRtcKeyValueConfig* field_trials = nullptr); + const FieldTrialsView* field_trials = nullptr); /* * Receiver diff --git a/modules/video_coding/jitter_buffer.cc b/modules/video_coding/jitter_buffer.cc index 5983bc1d40..6464b8c47b 100644 --- a/modules/video_coding/jitter_buffer.cc +++ b/modules/video_coding/jitter_buffer.cc @@ -110,7 +110,7 @@ void FrameList::Reset(UnorderedFrameList* free_frames) { VCMJitterBuffer::VCMJitterBuffer(Clock* clock, std::unique_ptr event, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : clock_(clock), running_(false), frame_event_(std::move(event)), diff --git a/modules/video_coding/jitter_buffer.h b/modules/video_coding/jitter_buffer.h index 70e65beb7e..72feffdcd4 100644 --- a/modules/video_coding/jitter_buffer.h +++ b/modules/video_coding/jitter_buffer.h @@ -17,7 +17,7 @@ #include #include -#include "api/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "modules/include/module_common_types.h" #include "modules/include/module_common_types_public.h" #include "modules/video_coding/decoding_state.h" @@ -72,7 +72,7 @@ class VCMJitterBuffer { public: VCMJitterBuffer(Clock* clock, std::unique_ptr event, - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); ~VCMJitterBuffer(); diff --git a/modules/video_coding/jitter_estimator.cc b/modules/video_coding/jitter_estimator.cc index e38dfaad1a..acc36a94dd 100644 --- a/modules/video_coding/jitter_estimator.cc +++ b/modules/video_coding/jitter_estimator.cc @@ -17,11 +17,11 @@ #include #include "absl/types/optional.h" +#include "api/field_trials_view.h" #include "api/units/data_size.h" #include "api/units/frequency.h" #include "api/units/time_delta.h" #include "api/units/timestamp.h" -#include "api/webrtc_key_value_config.h" #include "modules/video_coding/rtt_filter.h" #include "rtc_base/experiments/jitter_upper_bound_experiment.h" #include "rtc_base/numerics/safe_conversions.h" @@ -50,7 +50,7 @@ constexpr double kNoiseStdDevOffset = 30.0; } // namespace VCMJitterEstimator::VCMJitterEstimator(Clock* clock, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : fps_counter_(30), // TODO(sprang): Use an estimator with limit based on // time, rather than number of samples. time_deviation_upper_bound_( diff --git a/modules/video_coding/jitter_estimator.h b/modules/video_coding/jitter_estimator.h index 9672d8827c..20d318a534 100644 --- a/modules/video_coding/jitter_estimator.h +++ b/modules/video_coding/jitter_estimator.h @@ -12,11 +12,11 @@ #define MODULES_VIDEO_CODING_JITTER_ESTIMATOR_H_ #include "absl/types/optional.h" +#include "api/field_trials_view.h" #include "api/units/data_size.h" #include "api/units/frequency.h" #include "api/units/time_delta.h" #include "api/units/timestamp.h" -#include "api/webrtc_key_value_config.h" #include "modules/video_coding/rtt_filter.h" #include "rtc_base/rolling_accumulator.h" @@ -27,7 +27,7 @@ class Clock; class VCMJitterEstimator { public: explicit VCMJitterEstimator(Clock* clock, - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); virtual ~VCMJitterEstimator(); VCMJitterEstimator(const VCMJitterEstimator&) = delete; VCMJitterEstimator& operator=(const VCMJitterEstimator&) = delete; diff --git a/modules/video_coding/nack_requester.cc b/modules/video_coding/nack_requester.cc index 7cd824e54d..1db716b3ea 100644 --- a/modules/video_coding/nack_requester.cc +++ b/modules/video_coding/nack_requester.cc @@ -32,7 +32,7 @@ const int kMaxReorderedPackets = 128; const int kNumReorderingBuckets = 10; const int kDefaultSendNackDelayMs = 0; -int64_t GetSendNackDelay(const WebRtcKeyValueConfig& field_trials) { +int64_t GetSendNackDelay(const FieldTrialsView& field_trials) { int64_t delay_ms = strtol( field_trials.Lookup("WebRTC-SendNackDelayMs").c_str(), nullptr, 10); if (delay_ms > 0 && delay_ms <= 20) { @@ -109,7 +109,7 @@ NackRequester::BackoffSettings::BackoffSettings(TimeDelta min_retry, absl::optional NackRequester::BackoffSettings::ParseFromFieldTrials( - const WebRtcKeyValueConfig& field_trials) { + const FieldTrialsView& field_trials) { // Matches magic number in RTPSender::OnReceivedNack(). const TimeDelta kDefaultMinRetryInterval = TimeDelta::Millis(5); // Upper bound on link-delay considered for exponential backoff. @@ -139,7 +139,7 @@ NackRequester::NackRequester(TaskQueueBase* current_queue, Clock* clock, NackSender* nack_sender, KeyFrameRequestSender* keyframe_request_sender, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : worker_thread_(current_queue), clock_(clock), nack_sender_(nack_sender), diff --git a/modules/video_coding/nack_requester.h b/modules/video_coding/nack_requester.h index a01fb7cd64..fc44a59419 100644 --- a/modules/video_coding/nack_requester.h +++ b/modules/video_coding/nack_requester.h @@ -17,9 +17,9 @@ #include #include +#include "api/field_trials_view.h" #include "api/sequence_checker.h" #include "api/units/time_delta.h" -#include "api/webrtc_key_value_config.h" #include "modules/include/module_common_types.h" #include "modules/video_coding/histogram.h" #include "rtc_base/numerics/sequence_number_util.h" @@ -72,7 +72,7 @@ class NackRequester final : public NackRequesterBase { Clock* clock, NackSender* nack_sender, KeyFrameRequestSender* keyframe_request_sender, - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); ~NackRequester(); void ProcessNacks() override; @@ -107,7 +107,7 @@ class NackRequester final : public NackRequesterBase { struct BackoffSettings { BackoffSettings(TimeDelta min_retry, TimeDelta max_rtt, double base); static absl::optional ParseFromFieldTrials( - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); // Min time between nacks. const TimeDelta min_retry_interval; diff --git a/modules/video_coding/receiver.cc b/modules/video_coding/receiver.cc index 150373109e..3f954ec9bf 100644 --- a/modules/video_coding/receiver.cc +++ b/modules/video_coding/receiver.cc @@ -32,7 +32,7 @@ enum { kMaxReceiverDelayMs = 10000 }; VCMReceiver::VCMReceiver(VCMTiming* timing, Clock* clock, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : VCMReceiver::VCMReceiver(timing, clock, absl::WrapUnique(EventWrapper::Create()), @@ -43,7 +43,7 @@ VCMReceiver::VCMReceiver(VCMTiming* timing, Clock* clock, std::unique_ptr receiver_event, std::unique_ptr jitter_buffer_event, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : clock_(clock), jitter_buffer_(clock_, std::move(jitter_buffer_event), field_trials), timing_(timing), diff --git a/modules/video_coding/receiver.h b/modules/video_coding/receiver.h index c82ec2d35a..0bf756cdd8 100644 --- a/modules/video_coding/receiver.h +++ b/modules/video_coding/receiver.h @@ -14,7 +14,7 @@ #include #include -#include "api/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "modules/video_coding/event_wrapper.h" #include "modules/video_coding/include/video_coding.h" #include "modules/video_coding/include/video_coding_defines.h" @@ -31,7 +31,7 @@ class VCMReceiver { public: VCMReceiver(VCMTiming* timing, Clock* clock, - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); // Using this constructor, you can specify a different event implemetation for // the jitter buffer. Useful for unit tests when you want to simulate incoming @@ -41,7 +41,7 @@ class VCMReceiver { Clock* clock, std::unique_ptr receiver_event, std::unique_ptr jitter_buffer_event, - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); ~VCMReceiver(); diff --git a/modules/video_coding/timing.cc b/modules/video_coding/timing.cc index da71279648..f3d5cb45d3 100644 --- a/modules/video_coding/timing.cc +++ b/modules/video_coding/timing.cc @@ -24,7 +24,7 @@ namespace { constexpr TimeDelta kZeroPlayoutDelayDefaultMinPacing = TimeDelta::Millis(8); } // namespace -VCMTiming::VCMTiming(Clock* clock, const WebRtcKeyValueConfig& field_trials) +VCMTiming::VCMTiming(Clock* clock, const FieldTrialsView& field_trials) : clock_(clock), ts_extrapolator_( std::make_unique(clock_->CurrentTime())), diff --git a/modules/video_coding/timing.h b/modules/video_coding/timing.h index 7471740909..5868178bc4 100644 --- a/modules/video_coding/timing.h +++ b/modules/video_coding/timing.h @@ -14,9 +14,9 @@ #include #include "absl/types/optional.h" +#include "api/field_trials_view.h" #include "api/units/time_delta.h" #include "api/video/video_timing.h" -#include "api/webrtc_key_value_config.h" #include "modules/video_coding/codec_timer.h" #include "rtc_base/experiments/field_trial_parser.h" #include "rtc_base/synchronization/mutex.h" @@ -33,7 +33,7 @@ class VCMTiming { static constexpr auto kDefaultRenderDelay = TimeDelta::Millis(10); static constexpr auto kDelayMaxChangeMsPerS = 100; - VCMTiming(Clock* clock, const WebRtcKeyValueConfig& field_trials); + VCMTiming(Clock* clock, const FieldTrialsView& field_trials); virtual ~VCMTiming() = default; // Resets the timing to the initial state. diff --git a/modules/video_coding/video_coding_impl.cc b/modules/video_coding/video_coding_impl.cc index f3187d95f6..3e105a6b01 100644 --- a/modules/video_coding/video_coding_impl.cc +++ b/modules/video_coding/video_coding_impl.cc @@ -13,10 +13,10 @@ #include #include +#include "api/field_trials_view.h" #include "api/sequence_checker.h" #include "api/transport/field_trial_based_config.h" #include "api/video/encoded_image.h" -#include "api/webrtc_key_value_config.h" #include "modules/video_coding/include/video_codec_interface.h" #include "modules/video_coding/timing.h" #include "rtc_base/memory/always_valid_pointer.h" @@ -45,7 +45,7 @@ namespace { class VideoCodingModuleImpl : public VideoCodingModule { public: explicit VideoCodingModuleImpl(Clock* clock, - const WebRtcKeyValueConfig* field_trials) + const FieldTrialsView* field_trials) : VideoCodingModule(), field_trials_(field_trials), timing_(new VCMTiming(clock, *field_trials_)), @@ -109,7 +109,7 @@ class VideoCodingModuleImpl : public VideoCodingModule { } private: - AlwaysValidPointer + AlwaysValidPointer field_trials_; SequenceChecker construction_thread_; const std::unique_ptr timing_; @@ -121,7 +121,7 @@ class VideoCodingModuleImpl : public VideoCodingModule { // new jitter buffer is in place. VideoCodingModule* VideoCodingModule::Create( Clock* clock, - const WebRtcKeyValueConfig* field_trials) { + const FieldTrialsView* field_trials) { RTC_DCHECK(clock); return new VideoCodingModuleImpl(clock, field_trials); } diff --git a/modules/video_coding/video_coding_impl.h b/modules/video_coding/video_coding_impl.h index 10adf5583e..3010b2fa76 100644 --- a/modules/video_coding/video_coding_impl.h +++ b/modules/video_coding/video_coding_impl.h @@ -16,8 +16,8 @@ #include #include "absl/types/optional.h" +#include "api/field_trials_view.h" #include "api/sequence_checker.h" -#include "api/webrtc_key_value_config.h" #include "modules/video_coding/decoder_database.h" #include "modules/video_coding/frame_buffer.h" #include "modules/video_coding/generic_decoder.h" @@ -59,7 +59,7 @@ class VideoReceiver : public Module { public: VideoReceiver(Clock* clock, VCMTiming* timing, - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); ~VideoReceiver() override; void RegisterReceiveCodec(uint8_t payload_type, diff --git a/modules/video_coding/video_receiver.cc b/modules/video_coding/video_receiver.cc index ebfdd1b377..6db27c4817 100644 --- a/modules/video_coding/video_receiver.cc +++ b/modules/video_coding/video_receiver.cc @@ -42,7 +42,7 @@ namespace vcm { VideoReceiver::VideoReceiver(Clock* clock, VCMTiming* timing, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : clock_(clock), _timing(timing), _receiver(_timing, clock_, field_trials), diff --git a/modules/video_coding/video_receiver2.cc b/modules/video_coding/video_receiver2.cc index e0df761d48..8557d6884c 100644 --- a/modules/video_coding/video_receiver2.cc +++ b/modules/video_coding/video_receiver2.cc @@ -30,7 +30,7 @@ namespace webrtc { VideoReceiver2::VideoReceiver2(Clock* clock, VCMTiming* timing, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : clock_(clock), timing_(timing), decodedFrameCallback_(timing_, clock_, field_trials), diff --git a/modules/video_coding/video_receiver2.h b/modules/video_coding/video_receiver2.h index 45d774b1ba..a634e0ef8f 100644 --- a/modules/video_coding/video_receiver2.h +++ b/modules/video_coding/video_receiver2.h @@ -11,9 +11,9 @@ #ifndef MODULES_VIDEO_CODING_VIDEO_RECEIVER2_H_ #define MODULES_VIDEO_CODING_VIDEO_RECEIVER2_H_ +#include "api/field_trials_view.h" #include "api/sequence_checker.h" #include "api/video_codecs/video_decoder.h" -#include "api/webrtc_key_value_config.h" #include "modules/video_coding/decoder_database.h" #include "modules/video_coding/encoded_frame.h" #include "modules/video_coding/generic_decoder.h" @@ -31,7 +31,7 @@ class VideoReceiver2 { public: VideoReceiver2(Clock* clock, VCMTiming* timing, - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); ~VideoReceiver2(); void RegisterReceiveCodec(uint8_t payload_type, diff --git a/p2p/BUILD.gn b/p2p/BUILD.gn index 0524b56adb..9c2d839296 100644 --- a/p2p/BUILD.gn +++ b/p2p/BUILD.gn @@ -86,12 +86,12 @@ rtc_library("rtc_p2p") { deps = [ "../api:array_view", "../api:async_dns_resolver", + "../api:field_trials_view", "../api:libjingle_peerconnection_api", "../api:packet_socket_factory", "../api:rtc_error", "../api:scoped_refptr", "../api:sequence_checker", - "../api:webrtc_key_value_config", "../api:wrapping_async_dns_resolver", "../api/crypto:options", "../api/rtc_event_log", @@ -239,11 +239,11 @@ if (rtc_include_tests) { ":p2p_server_utils", ":p2p_test_utils", ":rtc_p2p", + "../api:field_trials_view", "../api:libjingle_peerconnection_api", "../api:mock_async_dns_resolver", "../api:packet_socket_factory", "../api:scoped_refptr", - "../api:webrtc_key_value_config", "../api/transport:stun_types", "../api/units:time_delta", "../rtc_base", diff --git a/p2p/base/fake_port_allocator.h b/p2p/base/fake_port_allocator.h index 3d93b07662..59533faab0 100644 --- a/p2p/base/fake_port_allocator.h +++ b/p2p/base/fake_port_allocator.h @@ -38,7 +38,7 @@ class TestUDPPort : public UDPPort { const std::string& username, const std::string& password, bool emit_localhost_for_anyaddress, - const webrtc::WebRtcKeyValueConfig* field_trials) { + const webrtc::FieldTrialsView* field_trials) { TestUDPPort* port = new TestUDPPort(thread, factory, network, min_port, max_port, username, password, emit_localhost_for_anyaddress, field_trials); @@ -58,7 +58,7 @@ class TestUDPPort : public UDPPort { const std::string& username, const std::string& password, bool emit_localhost_for_anyaddress, - const webrtc::WebRtcKeyValueConfig* field_trials) + const webrtc::FieldTrialsView* field_trials) : UDPPort(thread, factory, network, @@ -82,7 +82,7 @@ class FakePortAllocatorSession : public PortAllocatorSession { int component, const std::string& ice_ufrag, const std::string& ice_pwd, - const webrtc::WebRtcKeyValueConfig& field_trials) + const webrtc::FieldTrialsView& field_trials) : PortAllocatorSession(content_name, component, ice_ufrag, @@ -207,7 +207,7 @@ class FakePortAllocatorSession : public PortAllocatorSession { uint32_t candidate_filter_ = CF_ALL; int transport_info_update_count_ = 0; bool running_ = false; - const webrtc::WebRtcKeyValueConfig& field_trials_; + const webrtc::FieldTrialsView& field_trials_; }; class FakePortAllocator : public cricket::PortAllocator { diff --git a/p2p/base/p2p_transport_channel.cc b/p2p/base/p2p_transport_channel.cc index a8d84b987d..1daec120d9 100644 --- a/p2p/base/p2p_transport_channel.cc +++ b/p2p/base/p2p_transport_channel.cc @@ -24,8 +24,8 @@ #include "absl/strings/match.h" #include "api/async_dns_resolver.h" #include "api/candidate.h" +#include "api/field_trials_view.h" #include "api/task_queue/queued_task.h" -#include "api/webrtc_key_value_config.h" #include "logging/rtc_event_log/ice_logger.h" #include "p2p/base/basic_async_resolver_factory.h" #include "p2p/base/basic_ice_controller.h" @@ -61,7 +61,7 @@ cricket::PortInterface::CandidateOrigin GetOrigin( } uint32_t GetWeakPingIntervalInFieldTrial( - const webrtc::WebRtcKeyValueConfig* field_trials) { + const webrtc::FieldTrialsView* field_trials) { if (field_trials != nullptr) { uint32_t weak_ping_interval = ::strtoul(field_trials->Lookup("WebRTC-StunInterPacketDelay").c_str(), @@ -134,7 +134,7 @@ P2PTransportChannel::P2PTransportChannel( const std::string& transport_name, int component, PortAllocator* allocator, - const webrtc::WebRtcKeyValueConfig* field_trials) + const webrtc::FieldTrialsView* field_trials) : P2PTransportChannel(transport_name, component, allocator, @@ -154,7 +154,7 @@ P2PTransportChannel::P2PTransportChannel( owned_dns_resolver_factory, webrtc::RtcEventLog* event_log, IceControllerFactoryInterface* ice_controller_factory, - const webrtc::WebRtcKeyValueConfig* field_trials) + const webrtc::FieldTrialsView* field_trials) : transport_name_(transport_name), component_(component), allocator_(allocator), @@ -709,7 +709,7 @@ void P2PTransportChannel::SetIceConfig(const IceConfig& config) { } void P2PTransportChannel::ParseFieldTrials( - const webrtc::WebRtcKeyValueConfig* field_trials) { + const webrtc::FieldTrialsView* field_trials) { if (field_trials == nullptr) { return; } diff --git a/p2p/base/p2p_transport_channel.h b/p2p/base/p2p_transport_channel.h index 24c4b85b8c..4f0ac02a2b 100644 --- a/p2p/base/p2p_transport_channel.h +++ b/p2p/base/p2p_transport_channel.h @@ -111,11 +111,10 @@ class RTC_EXPORT P2PTransportChannel : public IceTransportInternal { // For testing only. // TODO(zstein): Remove once AsyncDnsResolverFactory is required. - P2PTransportChannel( - const std::string& transport_name, - int component, - PortAllocator* allocator, - const webrtc::WebRtcKeyValueConfig* field_trials = nullptr); + P2PTransportChannel(const std::string& transport_name, + int component, + PortAllocator* allocator, + const webrtc::FieldTrialsView* field_trials = nullptr); ~P2PTransportChannel() override; @@ -248,7 +247,7 @@ class RTC_EXPORT P2PTransportChannel : public IceTransportInternal { owned_dns_resolver_factory, webrtc::RtcEventLog* event_log, IceControllerFactoryInterface* ice_controller_factory, - const webrtc::WebRtcKeyValueConfig* field_trials); + const webrtc::FieldTrialsView* field_trials); bool IsGettingPorts() { RTC_DCHECK_RUN_ON(network_thread_); return allocator_session()->IsGettingPorts(); @@ -400,7 +399,7 @@ class RTC_EXPORT P2PTransportChannel : public IceTransportInternal { int64_t ComputeEstimatedDisconnectedTimeMs(int64_t now, Connection* old_connection); - void ParseFieldTrials(const webrtc::WebRtcKeyValueConfig* field_trials); + void ParseFieldTrials(const webrtc::FieldTrialsView* field_trials); webrtc::ScopedTaskSafety task_safety_; std::string transport_name_ RTC_GUARDED_BY(network_thread_); diff --git a/p2p/base/p2p_transport_channel_unittest.cc b/p2p/base/p2p_transport_channel_unittest.cc index c69530b0ef..04d4850b1e 100644 --- a/p2p/base/p2p_transport_channel_unittest.cc +++ b/p2p/base/p2p_transport_channel_unittest.cc @@ -4929,7 +4929,7 @@ class P2PTransportChannelMostLikelyToWorkFirstTest P2PTransportChannel& StartTransportChannel( bool prioritize_most_likely_to_work, int stable_writable_connection_ping_interval, - const webrtc::WebRtcKeyValueConfig* field_trials = nullptr) { + const webrtc::FieldTrialsView* field_trials = nullptr) { channel_.reset( new P2PTransportChannel("checks", 1, allocator(), field_trials)); IceConfig config = channel_->config(); diff --git a/p2p/base/port.cc b/p2p/base/port.cc index 72f4efb0d9..74db59de9d 100644 --- a/p2p/base/port.cc +++ b/p2p/base/port.cc @@ -111,7 +111,7 @@ Port::Port(rtc::Thread* thread, const rtc::Network* network, const std::string& username_fragment, const std::string& password, - const webrtc::WebRtcKeyValueConfig* field_trials) + const webrtc::FieldTrialsView* field_trials) : thread_(thread), factory_(factory), type_(type), @@ -142,7 +142,7 @@ Port::Port(rtc::Thread* thread, uint16_t max_port, const std::string& username_fragment, const std::string& password, - const webrtc::WebRtcKeyValueConfig* field_trials) + const webrtc::FieldTrialsView* field_trials) : thread_(thread), factory_(factory), type_(type), diff --git a/p2p/base/port.h b/p2p/base/port.h index 343170f3a6..747700cffb 100644 --- a/p2p/base/port.h +++ b/p2p/base/port.h @@ -20,11 +20,11 @@ #include "absl/types/optional.h" #include "api/candidate.h" +#include "api/field_trials_view.h" #include "api/packet_socket_factory.h" #include "api/rtc_error.h" #include "api/transport/field_trial_based_config.h" #include "api/transport/stun.h" -#include "api/webrtc_key_value_config.h" #include "logging/rtc_event_log/events/rtc_event_ice_candidate_pair.h" #include "logging/rtc_event_log/events/rtc_event_ice_candidate_pair_config.h" #include "logging/rtc_event_log/ice_logger.h" @@ -189,7 +189,7 @@ class Port : public PortInterface, const rtc::Network* network, const std::string& username_fragment, const std::string& password, - const webrtc::WebRtcKeyValueConfig* field_trials = nullptr); + const webrtc::FieldTrialsView* field_trials = nullptr); Port(rtc::Thread* thread, const std::string& type, rtc::PacketSocketFactory* factory, @@ -198,7 +198,7 @@ class Port : public PortInterface, uint16_t max_port, const std::string& username_fragment, const std::string& password, - const webrtc::WebRtcKeyValueConfig* field_trials = nullptr); + const webrtc::FieldTrialsView* field_trials = nullptr); ~Port() override; // Note that the port type does NOT uniquely identify different subclasses of @@ -499,7 +499,7 @@ class Port : public PortInterface, MdnsNameRegistrationStatus::kNotStarted; rtc::WeakPtrFactory weak_factory_; - webrtc::AlwaysValidPointer field_trials_; diff --git a/p2p/base/stun_port.cc b/p2p/base/stun_port.cc index 46052a0ae8..1dfab8f229 100644 --- a/p2p/base/stun_port.cc +++ b/p2p/base/stun_port.cc @@ -158,7 +158,7 @@ UDPPort::UDPPort(rtc::Thread* thread, const std::string& username, const std::string& password, bool emit_local_for_anyaddress, - const webrtc::WebRtcKeyValueConfig* field_trials) + const webrtc::FieldTrialsView* field_trials) : Port(thread, LOCAL_PORT_TYPE, factory, @@ -182,7 +182,7 @@ UDPPort::UDPPort(rtc::Thread* thread, const std::string& username, const std::string& password, bool emit_local_for_anyaddress, - const webrtc::WebRtcKeyValueConfig* field_trials) + const webrtc::FieldTrialsView* field_trials) : Port(thread, LOCAL_PORT_TYPE, factory, @@ -615,7 +615,7 @@ std::unique_ptr StunPort::Create( const std::string& password, const ServerAddresses& servers, absl::optional stun_keepalive_interval, - const webrtc::WebRtcKeyValueConfig* field_trials) { + const webrtc::FieldTrialsView* field_trials) { // Using `new` to access a non-public constructor. auto port = absl::WrapUnique(new StunPort(thread, factory, network, min_port, max_port, username, password, @@ -635,7 +635,7 @@ StunPort::StunPort(rtc::Thread* thread, const std::string& username, const std::string& password, const ServerAddresses& servers, - const webrtc::WebRtcKeyValueConfig* field_trials) + const webrtc::FieldTrialsView* field_trials) : UDPPort(thread, factory, network, diff --git a/p2p/base/stun_port.h b/p2p/base/stun_port.h index 485fca8b27..de40745c3f 100644 --- a/p2p/base/stun_port.h +++ b/p2p/base/stun_port.h @@ -41,7 +41,7 @@ class UDPPort : public Port { const std::string& password, bool emit_local_for_anyaddress, absl::optional stun_keepalive_interval, - const webrtc::WebRtcKeyValueConfig* field_trials = nullptr) { + const webrtc::FieldTrialsView* field_trials = nullptr) { // Using `new` to access a non-public constructor. auto port = absl::WrapUnique( new UDPPort(thread, factory, network, socket, username, password, @@ -63,7 +63,7 @@ class UDPPort : public Port { const std::string& password, bool emit_local_for_anyaddress, absl::optional stun_keepalive_interval, - const webrtc::WebRtcKeyValueConfig* field_trials = nullptr) { + const webrtc::FieldTrialsView* field_trials = nullptr) { // Using `new` to access a non-public constructor. auto port = absl::WrapUnique( new UDPPort(thread, factory, network, min_port, max_port, username, @@ -127,7 +127,7 @@ class UDPPort : public Port { const std::string& username, const std::string& password, bool emit_local_for_anyaddress, - const webrtc::WebRtcKeyValueConfig* field_trials); + const webrtc::FieldTrialsView* field_trials); UDPPort(rtc::Thread* thread, rtc::PacketSocketFactory* factory, @@ -136,7 +136,7 @@ class UDPPort : public Port { const std::string& username, const std::string& password, bool emit_local_for_anyaddress, - const webrtc::WebRtcKeyValueConfig* field_trials); + const webrtc::FieldTrialsView* field_trials); bool Init(); @@ -275,7 +275,7 @@ class StunPort : public UDPPort { const std::string& password, const ServerAddresses& servers, absl::optional stun_keepalive_interval, - const webrtc::WebRtcKeyValueConfig* field_trials); + const webrtc::FieldTrialsView* field_trials); void PrepareAddress() override; @@ -288,7 +288,7 @@ class StunPort : public UDPPort { const std::string& username, const std::string& password, const ServerAddresses& servers, - const webrtc::WebRtcKeyValueConfig* field_trials); + const webrtc::FieldTrialsView* field_trials); }; } // namespace cricket diff --git a/p2p/base/tcp_port.cc b/p2p/base/tcp_port.cc index 8278ef05e0..1bbc9e93c0 100644 --- a/p2p/base/tcp_port.cc +++ b/p2p/base/tcp_port.cc @@ -92,7 +92,7 @@ TCPPort::TCPPort(rtc::Thread* thread, const std::string& username, const std::string& password, bool allow_listen, - const webrtc::WebRtcKeyValueConfig* field_trials) + const webrtc::FieldTrialsView* field_trials) : Port(thread, LOCAL_PORT_TYPE, factory, diff --git a/p2p/base/tcp_port.h b/p2p/base/tcp_port.h index 80e9a8374f..969d43cb80 100644 --- a/p2p/base/tcp_port.h +++ b/p2p/base/tcp_port.h @@ -43,7 +43,7 @@ class TCPPort : public Port { const std::string& username, const std::string& password, bool allow_listen, - const webrtc::WebRtcKeyValueConfig* field_trials = nullptr) { + const webrtc::FieldTrialsView* field_trials = nullptr) { // Using `new` to access a non-public constructor. return absl::WrapUnique(new TCPPort(thread, factory, network, min_port, max_port, username, password, @@ -74,7 +74,7 @@ class TCPPort : public Port { const std::string& username, const std::string& password, bool allow_listen, - const webrtc::WebRtcKeyValueConfig* field_trials); + const webrtc::FieldTrialsView* field_trials); // Handles sending using the local TCP socket. int SendTo(const void* data, diff --git a/p2p/base/transport_description_factory.cc b/p2p/base/transport_description_factory.cc index 18c4a28c2b..7eb21da166 100644 --- a/p2p/base/transport_description_factory.cc +++ b/p2p/base/transport_description_factory.cc @@ -22,7 +22,7 @@ namespace cricket { TransportDescriptionFactory::TransportDescriptionFactory( - const webrtc::WebRtcKeyValueConfig& field_trials) + const webrtc::FieldTrialsView& field_trials) : secure_(SEC_DISABLED), field_trials_(field_trials) {} TransportDescriptionFactory::~TransportDescriptionFactory() = default; diff --git a/p2p/base/transport_description_factory.h b/p2p/base/transport_description_factory.h index 46f1c2f9fa..b4d8822cd2 100644 --- a/p2p/base/transport_description_factory.h +++ b/p2p/base/transport_description_factory.h @@ -13,7 +13,7 @@ #include -#include "api/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "p2p/base/ice_credentials_iterator.h" #include "p2p/base/transport_description.h" #include "rtc_base/rtc_certificate.h" @@ -39,7 +39,7 @@ class TransportDescriptionFactory { public: // Default ctor; use methods below to set configuration. explicit TransportDescriptionFactory( - const webrtc::WebRtcKeyValueConfig& field_trials); + const webrtc::FieldTrialsView& field_trials); ~TransportDescriptionFactory(); SecurePolicy secure() const { return secure_; } @@ -75,7 +75,7 @@ class TransportDescriptionFactory { const TransportDescription* current_description, IceCredentialsIterator* ice_credentials) const; - const webrtc::WebRtcKeyValueConfig& trials() const { return field_trials_; } + const webrtc::FieldTrialsView& trials() const { return field_trials_; } private: bool SetSecurityInfo(TransportDescription* description, @@ -83,7 +83,7 @@ class TransportDescriptionFactory { SecurePolicy secure_; rtc::scoped_refptr certificate_; - const webrtc::WebRtcKeyValueConfig& field_trials_; + const webrtc::FieldTrialsView& field_trials_; }; } // namespace cricket diff --git a/p2p/base/turn_port.cc b/p2p/base/turn_port.cc index d984b6cf59..ddf63faab2 100644 --- a/p2p/base/turn_port.cc +++ b/p2p/base/turn_port.cc @@ -226,7 +226,7 @@ TurnPort::TurnPort(rtc::Thread* thread, const std::vector& tls_elliptic_curves, webrtc::TurnCustomizer* customizer, rtc::SSLCertificateVerifier* tls_cert_verifier, - const webrtc::WebRtcKeyValueConfig* field_trials) + const webrtc::FieldTrialsView* field_trials) : Port(thread, RELAY_PORT_TYPE, factory, @@ -266,7 +266,7 @@ TurnPort::TurnPort(rtc::Thread* thread, const std::vector& tls_elliptic_curves, webrtc::TurnCustomizer* customizer, rtc::SSLCertificateVerifier* tls_cert_verifier, - const webrtc::WebRtcKeyValueConfig* field_trials) + const webrtc::FieldTrialsView* field_trials) : Port(thread, RELAY_PORT_TYPE, factory, @@ -945,9 +945,8 @@ rtc::DiffServCodePoint TurnPort::StunDscpValue() const { } // static -bool TurnPort::AllowedTurnPort( - int port, - const webrtc::WebRtcKeyValueConfig* field_trials) { +bool TurnPort::AllowedTurnPort(int port, + const webrtc::FieldTrialsView* field_trials) { // Port 53, 80 and 443 are used for existing deployments. // Ports above 1024 are assumed to be OK to use. if (port == 53 || port == 80 || port == 443 || port >= 1024) { diff --git a/p2p/base/turn_port.h b/p2p/base/turn_port.h index 89e6bd64b3..fa76695087 100644 --- a/p2p/base/turn_port.h +++ b/p2p/base/turn_port.h @@ -216,7 +216,7 @@ class TurnPort : public Port { const std::vector& tls_elliptic_curves, webrtc::TurnCustomizer* customizer, rtc::SSLCertificateVerifier* tls_cert_verifier = nullptr, - const webrtc::WebRtcKeyValueConfig* field_trials = nullptr); + const webrtc::FieldTrialsView* field_trials = nullptr); TurnPort(rtc::Thread* thread, rtc::PacketSocketFactory* factory, @@ -232,7 +232,7 @@ class TurnPort : public Port { const std::vector& tls_elliptic_curves, webrtc::TurnCustomizer* customizer, rtc::SSLCertificateVerifier* tls_cert_verifier = nullptr, - const webrtc::WebRtcKeyValueConfig* field_trials = nullptr); + const webrtc::FieldTrialsView* field_trials = nullptr); // NOTE: This method needs to be accessible for StunPort // return true if entry was created (i.e channel_number consumed). @@ -258,7 +258,7 @@ class TurnPort : public Port { typedef std::set AttemptedServerSet; static bool AllowedTurnPort(int port, - const webrtc::WebRtcKeyValueConfig* field_trials); + const webrtc::FieldTrialsView* field_trials); void OnMessage(rtc::Message* pmsg) override; bool CreateTurnClientSocket(); @@ -364,7 +364,7 @@ class TurnPort : public Port { // must outlive the TurnPort's lifetime. webrtc::TurnCustomizer* turn_customizer_ = nullptr; - const webrtc::WebRtcKeyValueConfig* field_trials_; + const webrtc::FieldTrialsView* field_trials_; // Optional TurnLoggingId. // An identifier set by application that is added to TURN_ALLOCATE_REQUEST diff --git a/p2p/client/basic_port_allocator.cc b/p2p/client/basic_port_allocator.cc index 10d855cdc7..8b4bf57ee7 100644 --- a/p2p/client/basic_port_allocator.cc +++ b/p2p/client/basic_port_allocator.cc @@ -253,9 +253,8 @@ void BasicPortAllocator::AddTurnServer(const RelayServerConfig& turn_server) { turn_port_prune_policy(), turn_customizer()); } -void BasicPortAllocator::Init( - RelayPortFactoryInterface* relay_port_factory, - const webrtc::WebRtcKeyValueConfig* field_trials) { +void BasicPortAllocator::Init(RelayPortFactoryInterface* relay_port_factory, + const webrtc::FieldTrialsView* field_trials) { if (relay_port_factory != nullptr) { relay_port_factory_ = relay_port_factory; } else { @@ -1686,7 +1685,7 @@ PortConfiguration::PortConfiguration( const ServerAddresses& stun_servers, const std::string& username, const std::string& password, - const webrtc::WebRtcKeyValueConfig* field_trials) + const webrtc::FieldTrialsView* field_trials) : stun_servers(stun_servers), username(username), password(password) { if (!stun_servers.empty()) stun_address = *(stun_servers.begin()); diff --git a/p2p/client/basic_port_allocator.h b/p2p/client/basic_port_allocator.h index 6d650f5c53..01d07e76b3 100644 --- a/p2p/client/basic_port_allocator.h +++ b/p2p/client/basic_port_allocator.h @@ -15,8 +15,8 @@ #include #include +#include "api/field_trials_view.h" #include "api/turn_customizer.h" -#include "api/webrtc_key_value_config.h" #include "p2p/base/port_allocator.h" #include "p2p/client/relay_port_factory_interface.h" #include "p2p/client/turn_port_factory.h" @@ -81,9 +81,7 @@ class RTC_EXPORT BasicPortAllocator : public PortAllocator { void SetVpnList(const std::vector& vpn_list) override; - const webrtc::WebRtcKeyValueConfig* field_trials() const { - return field_trials_; - } + const webrtc::FieldTrialsView* field_trials() const { return field_trials_; } private: void OnIceRegathering(PortAllocatorSession* session, @@ -92,12 +90,12 @@ class RTC_EXPORT BasicPortAllocator : public PortAllocator { // This function makes sure that relay_port_factory_ and field_trials_ is set // properly. void Init(RelayPortFactoryInterface* relay_port_factory, - const webrtc::WebRtcKeyValueConfig* field_trials); + const webrtc::FieldTrialsView* field_trials); bool MdnsObfuscationEnabled() const override; - const webrtc::WebRtcKeyValueConfig* field_trials_; - std::unique_ptr owned_field_trials_; + const webrtc::FieldTrialsView* field_trials_; + std::unique_ptr owned_field_trials_; rtc::NetworkManager* network_manager_; rtc::PacketSocketFactory* socket_factory_; int network_ignore_mask_ = rtc::kDefaultNetworkIgnoreMask; @@ -310,7 +308,7 @@ struct RTC_EXPORT PortConfiguration { PortConfiguration(const ServerAddresses& stun_servers, const std::string& username, const std::string& password, - const webrtc::WebRtcKeyValueConfig* field_trials = nullptr); + const webrtc::FieldTrialsView* field_trials = nullptr); // Returns addresses of both the explicitly configured STUN servers, // and TURN servers that should be used as STUN servers. diff --git a/p2p/client/relay_port_factory_interface.h b/p2p/client/relay_port_factory_interface.h index 7d63facc06..4eec5dbf28 100644 --- a/p2p/client/relay_port_factory_interface.h +++ b/p2p/client/relay_port_factory_interface.h @@ -26,7 +26,7 @@ class Thread; namespace webrtc { class TurnCustomizer; -class WebRtcKeyValueConfig; +class FieldTrialsView; } // namespace webrtc namespace cricket { @@ -44,7 +44,7 @@ struct CreateRelayPortArgs { std::string username; std::string password; webrtc::TurnCustomizer* turn_customizer = nullptr; - const webrtc::WebRtcKeyValueConfig* field_trials = nullptr; + const webrtc::FieldTrialsView* field_trials = nullptr; }; // A factory for creating RelayPort's. diff --git a/pc/BUILD.gn b/pc/BUILD.gn index 0ba0c685ef..792f0d35bb 100644 --- a/pc/BUILD.gn +++ b/pc/BUILD.gn @@ -379,10 +379,10 @@ rtc_source_set("media_session") { ":session_description", ":simulcast_description", ":used_ids", + "../api:field_trials_view", "../api:libjingle_peerconnection_api", "../api:rtp_parameters", "../api:rtp_transceiver_direction", - "../api:webrtc_key_value_config", "../api/crypto:options", "../media:rtc_data_sctp_transport_internal", "../media:rtc_media_base", @@ -610,9 +610,9 @@ rtc_source_set("srtp_session") { deps = [ ":external_hmac", "../api:array_view", + "../api:field_trials_view", "../api:scoped_refptr", "../api:sequence_checker", - "../api:webrtc_key_value_config", "../modules/rtp_rtcp:rtp_rtcp_format", "../rtc_base", "../rtc_base:checks", @@ -635,9 +635,9 @@ rtc_source_set("srtp_transport") { deps = [ ":rtp_transport", ":srtp_session", + "../api:field_trials_view", "../api:libjingle_peerconnection_api", "../api:rtc_error", - "../api:webrtc_key_value_config", "../media:rtc_media_base", "../modules/rtp_rtcp:rtp_rtcp_format", "../p2p:rtc_p2p", @@ -812,6 +812,7 @@ rtc_source_set("peerconnection") { "../api:call_api", "../api:callfactory_api", "../api:fec_controller_api", + "../api:field_trials_view", "../api:frame_transformer_interface", "../api:ice_transport_factory", "../api:libjingle_logging_api", @@ -840,7 +841,6 @@ rtc_source_set("peerconnection") { "../api/transport:field_trial_based_config", "../api/transport:network_control", "../api/transport:sctp_transport_factory_interface", - "../api/transport:webrtc_key_value_config", "../api/units:data_rate", "../api/video:builtin_video_bitrate_allocator_factory", "../api/video:video_bitrate_allocator_factory", @@ -952,6 +952,7 @@ rtc_library("connection_context") { ":channel_manager", ":rtc_pc_base", "../api:callfactory_api", + "../api:field_trials_view", "../api:libjingle_peerconnection_api", "../api:media_stream_interface", "../api:refcountedbase", @@ -960,7 +961,6 @@ rtc_library("connection_context") { "../api/neteq:neteq_api", "../api/transport:field_trial_based_config", "../api/transport:sctp_transport_factory_interface", - "../api/transport:webrtc_key_value_config", "../media:rtc_data_sctp_transport_factory", "../media:rtc_media_base", "../p2p:rtc_p2p", @@ -1228,6 +1228,8 @@ rtc_source_set("peer_connection") { ":usage_pattern", ":webrtc_session_description_factory", "../api:async_dns_resolver", + "../api:field_trials_view", + "../api:field_trials_view", "../api:libjingle_logging_api", "../api:libjingle_peerconnection_api", "../api:media_stream_interface", @@ -1238,14 +1240,12 @@ rtc_source_set("peer_connection") { "../api:rtp_transceiver_direction", "../api:scoped_refptr", "../api:sequence_checker", - "../api:webrtc_key_value_config", "../api/adaptation:resource_adaptation_api", "../api/crypto:options", "../api/rtc_event_log:rtc_event_log", "../api/transport:bitrate_settings", "../api/transport:datagram_transport_interface", "../api/transport:enums", - "../api/transport:webrtc_key_value_config", "../api/video:video_bitrate_allocator_factory", "../api/video:video_codec_constants", "../call:call_interfaces", @@ -1330,12 +1330,12 @@ rtc_source_set("stats_collector") { ":rtp_transceiver", ":stats_collector_interface", ":transport_stats", + "../api:field_trials_view", "../api:libjingle_peerconnection_api", "../api:media_stream_interface", "../api:rtp_parameters", "../api:scoped_refptr", "../api:sequence_checker", - "../api:webrtc_key_value_config", "../api/audio_codecs:audio_codecs_api", "../api/video:video_rtp_headers", "../call:call_interfaces", @@ -1505,6 +1505,7 @@ rtc_source_set("peer_connection_factory") { "../api:audio_options_api", "../api:callfactory_api", "../api:fec_controller_api", + "../api:field_trials_view", "../api:libjingle_peerconnection_api", "../api:media_stream_interface", "../api:network_state_predictor_api", @@ -1520,7 +1521,6 @@ rtc_source_set("peer_connection_factory") { "../api/transport:bitrate_settings", "../api/transport:network_control", "../api/transport:sctp_transport_factory_interface", - "../api/transport:webrtc_key_value_config", "../api/units:data_rate", "../call:call_interfaces", "../call:rtp_interfaces", @@ -2333,6 +2333,8 @@ if (rtc_include_tests && !build_with_chromium) { "../api:create_peerconnection_factory", "../api:fake_frame_decryptor", "../api:fake_frame_encryptor", + "../api:field_trials_view", + "../api:field_trials_view", "../api:function_view", "../api:libjingle_logging_api", "../api:libjingle_peerconnection_api", @@ -2344,7 +2346,6 @@ if (rtc_include_tests && !build_with_chromium) { "../api:rtc_error", "../api:rtp_transceiver_direction", "../api:scoped_refptr", - "../api:webrtc_key_value_config", "../api/adaptation:resource_adaptation_api", "../api/audio:audio_mixer_api", "../api/crypto:frame_decryptor_interface", @@ -2357,7 +2358,6 @@ if (rtc_include_tests && !build_with_chromium) { "../api/transport:datagram_transport_interface", "../api/transport:field_trial_based_config", "../api/transport:sctp_transport_factory_interface", - "../api/transport:webrtc_key_value_config", "../api/transport/rtp:rtp_source", "../api/units:time_delta", "../api/units:timestamp", @@ -2516,6 +2516,7 @@ if (rtc_include_tests && !build_with_chromium) { "../api:create_peerconnection_factory", "../api:fake_frame_decryptor", "../api:fake_frame_encryptor", + "../api:field_trials_view", "../api:function_view", "../api:libjingle_logging_api", "../api:libjingle_peerconnection_api", @@ -2536,7 +2537,6 @@ if (rtc_include_tests && !build_with_chromium) { "../api/task_queue", "../api/task_queue:default_task_queue_factory", "../api/transport:field_trial_based_config", - "../api/transport:webrtc_key_value_config", "../api/transport/rtp:rtp_source", "../api/units:time_delta", "../api/video:builtin_video_bitrate_allocator_factory", @@ -2632,18 +2632,18 @@ if (rtc_include_tests && !build_with_chromium) { "../api:audio_options_api", "../api:create_frame_generator", "../api:create_peerconnection_factory", + "../api:field_trials_view", + "../api:field_trials_view", "../api:libjingle_peerconnection_api", "../api:media_stream_interface", "../api:rtc_error", "../api:rtc_stats_api", "../api:scoped_refptr", "../api:sequence_checker", - "../api:webrtc_key_value_config", "../api/audio:audio_mixer_api", "../api/audio_codecs:audio_codecs_api", "../api/task_queue", "../api/task_queue:default_task_queue_factory", - "../api/transport:webrtc_key_value_config", "../api/video:builtin_video_bitrate_allocator_factory", "../api/video:video_frame", "../api/video:video_rtp_headers", diff --git a/pc/connection_context.cc b/pc/connection_context.cc index 84a0dd321c..ae0226165f 100644 --- a/pc/connection_context.cc +++ b/pc/connection_context.cc @@ -74,7 +74,7 @@ rtc::Thread* MaybeWrapThread(rtc::Thread* signaling_thread, std::unique_ptr MaybeCreateSctpFactory( std::unique_ptr factory, rtc::Thread* network_thread, - const WebRtcKeyValueConfig& field_trials) { + const FieldTrialsView& field_trials) { if (factory) { return factory; } diff --git a/pc/connection_context.h b/pc/connection_context.h index 05f838fac4..3b8ac07fc9 100644 --- a/pc/connection_context.h +++ b/pc/connection_context.h @@ -15,13 +15,13 @@ #include #include "api/call/call_factory_interface.h" +#include "api/field_trials_view.h" #include "api/media_stream_interface.h" #include "api/peer_connection_interface.h" #include "api/ref_counted_base.h" #include "api/scoped_refptr.h" #include "api/sequence_checker.h" #include "api/transport/sctp_transport_factory_interface.h" -#include "api/transport/webrtc_key_value_config.h" #include "media/base/media_engine.h" #include "p2p/base/basic_packet_socket_factory.h" #include "pc/channel_manager.h" @@ -75,7 +75,7 @@ class ConnectionContext final rtc::Thread* network_thread() { return network_thread_; } const rtc::Thread* network_thread() const { return network_thread_; } - const WebRtcKeyValueConfig& trials() const { return *trials_.get(); } + const FieldTrialsView& trials() const { return *trials_.get(); } // Accessors only used from the PeerConnectionFactory class rtc::BasicNetworkManager* default_network_manager() { @@ -114,7 +114,7 @@ class ConnectionContext final rtc::Thread* const signaling_thread_; // Accessed both on signaling thread and worker thread. - std::unique_ptr const trials_; + std::unique_ptr const trials_; // channel_manager is accessed both on signaling thread and worker thread. std::unique_ptr channel_manager_; diff --git a/pc/dtls_srtp_transport.cc b/pc/dtls_srtp_transport.cc index 9ec14f530b..28de50b2ae 100644 --- a/pc/dtls_srtp_transport.cc +++ b/pc/dtls_srtp_transport.cc @@ -28,7 +28,7 @@ static const char kDtlsSrtpExporterLabel[] = "EXTRACTOR-dtls_srtp"; namespace webrtc { DtlsSrtpTransport::DtlsSrtpTransport(bool rtcp_mux_enabled, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : SrtpTransport(rtcp_mux_enabled, field_trials) {} void DtlsSrtpTransport::SetDtlsTransports( diff --git a/pc/dtls_srtp_transport.h b/pc/dtls_srtp_transport.h index 2ee6e02e30..7958210c99 100644 --- a/pc/dtls_srtp_transport.h +++ b/pc/dtls_srtp_transport.h @@ -32,8 +32,7 @@ namespace webrtc { // configures the SrtpSessions in the base class. class DtlsSrtpTransport : public SrtpTransport { public: - DtlsSrtpTransport(bool rtcp_mux_enabled, - const WebRtcKeyValueConfig& field_trials); + DtlsSrtpTransport(bool rtcp_mux_enabled, const FieldTrialsView& field_trials); // Set P2P layer RTP/RTCP DtlsTransports. When using RTCP-muxing, // `rtcp_dtls_transport` is null. diff --git a/pc/jsep_transport_controller.h b/pc/jsep_transport_controller.h index 44d5981684..e79ab0533c 100644 --- a/pc/jsep_transport_controller.h +++ b/pc/jsep_transport_controller.h @@ -139,7 +139,7 @@ class JsepTransportController : public sigslot::has_slots<> { std::function on_dtls_handshake_error_; // Field trials. - const webrtc::WebRtcKeyValueConfig* field_trials; + const webrtc::FieldTrialsView* field_trials; }; // The ICE related events are fired on the `network_thread`. diff --git a/pc/media_session.cc b/pc/media_session.cc index 2ab661cd69..71a6d0a19c 100644 --- a/pc/media_session.cc +++ b/pc/media_session.cc @@ -301,7 +301,7 @@ static StreamParams CreateStreamParamsForNewSenderWithSsrcs( bool include_rtx_streams, bool include_flexfec_stream, UniqueRandomIdGenerator* ssrc_generator, - const webrtc::WebRtcKeyValueConfig& field_trials) { + const webrtc::FieldTrialsView& field_trials) { StreamParams result; result.id = sender.track_id; @@ -400,7 +400,7 @@ static bool AddStreamParams(const std::vector& sender_options, UniqueRandomIdGenerator* ssrc_generator, StreamParamsVec* current_streams, MediaContentDescriptionImpl* content_description, - const webrtc::WebRtcKeyValueConfig& field_trials) { + const webrtc::FieldTrialsView& field_trials) { // SCTP streams are not negotiated using SDP/ContentDescriptions. if (IsSctpProtocol(content_description->protocol())) { return true; @@ -711,7 +711,7 @@ static bool CreateMediaContentOffer( UniqueRandomIdGenerator* ssrc_generator, StreamParamsVec* current_streams, MediaContentDescriptionImpl* offer, - const webrtc::WebRtcKeyValueConfig& field_trials) { + const webrtc::FieldTrialsView& field_trials) { offer->AddCodecs(codecs); if (!AddStreamParams(media_description_options.sender_options, session_options.rtcp_cname, ssrc_generator, @@ -726,12 +726,11 @@ static bool CreateMediaContentOffer( } template -static bool ReferencedCodecsMatch( - const std::vector& codecs1, - const int codec1_id, - const std::vector& codecs2, - const int codec2_id, - const webrtc::WebRtcKeyValueConfig* field_trials) { +static bool ReferencedCodecsMatch(const std::vector& codecs1, + const int codec1_id, + const std::vector& codecs2, + const int codec2_id, + const webrtc::FieldTrialsView* field_trials) { const C* codec1 = FindCodecById(codecs1, codec1_id); const C* codec2 = FindCodecById(codecs2, codec2_id); return codec1 != nullptr && codec2 != nullptr && @@ -756,7 +755,7 @@ static void NegotiateCodecs(const std::vector& local_codecs, const std::vector& offered_codecs, std::vector* negotiated_codecs, bool keep_offer_order, - const webrtc::WebRtcKeyValueConfig* field_trials) { + const webrtc::FieldTrialsView* field_trials) { for (const C& ours : local_codecs) { C theirs; // Note that we intentionally only find one matching codec for each of our @@ -815,12 +814,11 @@ static void NegotiateCodecs(const std::vector& local_codecs, // a member of `codecs1`. If `codec_to_match` is an RED or RTX codec, both // the codecs themselves and their associated codecs must match. template -static bool FindMatchingCodec( - const std::vector& codecs1, - const std::vector& codecs2, - const C& codec_to_match, - C* found_codec, - const webrtc::WebRtcKeyValueConfig* field_trials) { +static bool FindMatchingCodec(const std::vector& codecs1, + const std::vector& codecs2, + const C& codec_to_match, + C* found_codec, + const webrtc::FieldTrialsView* field_trials) { // `codec_to_match` should be a member of `codecs1`, in order to look up // RED/RTX codecs' associated codecs correctly. If not, that's a programming // error. @@ -975,7 +973,7 @@ template static void MergeCodecs(const std::vector& reference_codecs, std::vector* offered_codecs, UsedPayloadTypes* used_pltypes, - const webrtc::WebRtcKeyValueConfig* field_trials) { + const webrtc::FieldTrialsView* field_trials) { // Add all new codecs that are not RTX/RED codecs. // The two-pass splitting of the loops means preferring payload types // of actual codecs with respect to collisions. @@ -1050,7 +1048,7 @@ static Codecs MatchCodecPreference( const std::vector& codec_preferences, const Codecs& codecs, const Codecs& supported_codecs, - const webrtc::WebRtcKeyValueConfig* field_trials) { + const webrtc::FieldTrialsView* field_trials) { Codecs filtered_codecs; bool want_rtx = false; bool want_red = false; @@ -1122,10 +1120,9 @@ static Codecs MatchCodecPreference( // Compute the union of `codecs1` and `codecs2`. template -std::vector ComputeCodecsUnion( - const std::vector& codecs1, - const std::vector& codecs2, - const webrtc::WebRtcKeyValueConfig* field_trials) { +std::vector ComputeCodecsUnion(const std::vector& codecs1, + const std::vector& codecs2, + const webrtc::FieldTrialsView* field_trials) { std::vector all_codecs; UsedPayloadTypes used_payload_types; for (const C& codec : codecs1) { @@ -1365,7 +1362,7 @@ static bool SetCodecsInAnswer( UniqueRandomIdGenerator* ssrc_generator, StreamParamsVec* current_streams, MediaContentDescriptionImpl* answer, - const webrtc::WebRtcKeyValueConfig& field_trials) { + const webrtc::FieldTrialsView& field_trials) { std::vector negotiated_codecs; NegotiateCodecs(local_codecs, offer->codecs(), &negotiated_codecs, media_description_options.codec_preferences.empty(), @@ -2054,7 +2051,7 @@ void MergeCodecsFromDescription( AudioCodecs* audio_codecs, VideoCodecs* video_codecs, UsedPayloadTypes* used_pltypes, - const webrtc::WebRtcKeyValueConfig* field_trials) { + const webrtc::FieldTrialsView* field_trials) { for (const ContentInfo* content : current_active_contents) { if (IsMediaContentOfType(content, MEDIA_TYPE_AUDIO)) { const AudioContentDescription* audio = @@ -2080,7 +2077,7 @@ void MediaSessionDescriptionFactory::GetCodecsForOffer( const std::vector& current_active_contents, AudioCodecs* audio_codecs, VideoCodecs* video_codecs) const { - const webrtc::WebRtcKeyValueConfig* field_trials = + const webrtc::FieldTrialsView* field_trials = &transport_desc_factory_->trials(); // First - get all codecs from the current description if the media type // is used. Add them to `used_pltypes` so the payload type is not reused if a @@ -2108,7 +2105,7 @@ void MediaSessionDescriptionFactory::GetCodecsForAnswer( const SessionDescription& remote_offer, AudioCodecs* audio_codecs, VideoCodecs* video_codecs) const { - const webrtc::WebRtcKeyValueConfig* field_trials = + const webrtc::FieldTrialsView* field_trials = &transport_desc_factory_->trials(); // First - get all codecs from the current description if the media type // is used. Add them to `used_pltypes` so the payload type is not reused if a @@ -2297,7 +2294,7 @@ bool MediaSessionDescriptionFactory::AddAudioContentForOffer( StreamParamsVec* current_streams, SessionDescription* desc, IceCredentialsIterator* ice_credentials) const { - const webrtc::WebRtcKeyValueConfig* field_trials = + const webrtc::FieldTrialsView* field_trials = &transport_desc_factory_->trials(); // Filter audio_codecs (which includes all codecs, with correctly remapped // payload types) based on transceiver direction. @@ -2390,7 +2387,7 @@ bool MediaSessionDescriptionFactory::AddVideoContentForOffer( StreamParamsVec* current_streams, SessionDescription* desc, IceCredentialsIterator* ice_credentials) const { - const webrtc::WebRtcKeyValueConfig* field_trials = + const webrtc::FieldTrialsView* field_trials = &transport_desc_factory_->trials(); // Filter video_codecs (which includes all codecs, with correctly remapped // payload types) based on transceiver direction. @@ -2587,7 +2584,7 @@ bool MediaSessionDescriptionFactory::AddAudioContentForAnswer( StreamParamsVec* current_streams, SessionDescription* answer, IceCredentialsIterator* ice_credentials) const { - const webrtc::WebRtcKeyValueConfig* field_trials = + const webrtc::FieldTrialsView* field_trials = &transport_desc_factory_->trials(); RTC_CHECK(IsMediaContentOfType(offer_content, MEDIA_TYPE_AUDIO)); const AudioContentDescription* offer_audio_description = @@ -2706,7 +2703,7 @@ bool MediaSessionDescriptionFactory::AddVideoContentForAnswer( StreamParamsVec* current_streams, SessionDescription* answer, IceCredentialsIterator* ice_credentials) const { - const webrtc::WebRtcKeyValueConfig* field_trials = + const webrtc::FieldTrialsView* field_trials = &transport_desc_factory_->trials(); RTC_CHECK(IsMediaContentOfType(offer_content, MEDIA_TYPE_VIDEO)); const VideoContentDescription* offer_video_description = @@ -2932,7 +2929,7 @@ bool MediaSessionDescriptionFactory::AddUnsupportedContentForAnswer( } void MediaSessionDescriptionFactory::ComputeAudioCodecsIntersectionAndUnion() { - const webrtc::WebRtcKeyValueConfig* field_trials = + const webrtc::FieldTrialsView* field_trials = &transport_desc_factory_->trials(); audio_sendrecv_codecs_.clear(); all_audio_codecs_.clear(); @@ -2962,7 +2959,7 @@ void MediaSessionDescriptionFactory::ComputeAudioCodecsIntersectionAndUnion() { } void MediaSessionDescriptionFactory::ComputeVideoCodecsIntersectionAndUnion() { - const webrtc::WebRtcKeyValueConfig* field_trials = + const webrtc::FieldTrialsView* field_trials = &transport_desc_factory_->trials(); video_sendrecv_codecs_.clear(); diff --git a/pc/media_session.h b/pc/media_session.h index d6c7474fe6..9a67ad1e3c 100644 --- a/pc/media_session.h +++ b/pc/media_session.h @@ -19,10 +19,10 @@ #include #include "api/crypto/crypto_options.h" +#include "api/field_trials_view.h" #include "api/media_types.h" #include "api/rtp_parameters.h" #include "api/rtp_transceiver_direction.h" -#include "api/webrtc_key_value_config.h" #include "media/base/media_constants.h" #include "media/base/rid_description.h" #include "media/base/stream_params.h" diff --git a/pc/media_session_unittest.cc b/pc/media_session_unittest.cc index 9d01e0772f..3ca6c8580f 100644 --- a/pc/media_session_unittest.cc +++ b/pc/media_session_unittest.cc @@ -4455,7 +4455,7 @@ namespace { template bool CodecsMatch(const std::vector& codecs1, const std::vector& codecs2, - const webrtc::WebRtcKeyValueConfig* field_trials) { + const webrtc::FieldTrialsView* field_trials) { if (codecs1.size() != codecs2.size()) { return false; } diff --git a/pc/peer_connection.h b/pc/peer_connection.h index 95bdfba3b7..6ada0c0683 100644 --- a/pc/peer_connection.h +++ b/pc/peer_connection.h @@ -27,6 +27,7 @@ #include "api/crypto/crypto_options.h" #include "api/data_channel_interface.h" #include "api/dtls_transport_interface.h" +#include "api/field_trials_view.h" #include "api/ice_transport_interface.h" #include "api/jsep.h" #include "api/media_stream_interface.h" @@ -48,7 +49,6 @@ #include "api/transport/data_channel_transport_interface.h" #include "api/transport/enums.h" #include "api/turn_customizer.h" -#include "api/webrtc_key_value_config.h" #include "call/call.h" #include "p2p/base/ice_transport_internal.h" #include "p2p/base/port.h" @@ -437,7 +437,7 @@ class PeerConnection : public PeerConnectionInternal, } void RequestUsagePatternReportForTesting(); - const WebRtcKeyValueConfig& trials() override { return context_->trials(); } + const FieldTrialsView& trials() override { return context_->trials(); } protected: // Available for rtc::scoped_refptr creation diff --git a/pc/peer_connection_factory.h b/pc/peer_connection_factory.h index f09ca66e6e..4ee102a2fb 100644 --- a/pc/peer_connection_factory.h +++ b/pc/peer_connection_factory.h @@ -21,6 +21,7 @@ #include "absl/strings/string_view.h" #include "api/audio_options.h" #include "api/fec_controller.h" +#include "api/field_trials_view.h" #include "api/media_stream_interface.h" #include "api/media_types.h" #include "api/metronome/metronome.h" @@ -36,7 +37,6 @@ #include "api/task_queue/task_queue_factory.h" #include "api/transport/network_control.h" #include "api/transport/sctp_transport_factory_interface.h" -#include "api/transport/webrtc_key_value_config.h" #include "call/call.h" #include "call/rtp_transport_controller_send_factory_interface.h" #include "p2p/base/port_allocator.h" @@ -115,7 +115,7 @@ class PeerConnectionFactory : public PeerConnectionFactoryInterface { return options_; } - const WebRtcKeyValueConfig& trials() const { return context_->trials(); } + const FieldTrialsView& trials() const { return context_->trials(); } protected: // Constructor used by the static Create() method. Modifies the dependencies. diff --git a/pc/peer_connection_internal.h b/pc/peer_connection_internal.h index eaff20a0d3..66897ee758 100644 --- a/pc/peer_connection_internal.h +++ b/pc/peer_connection_internal.h @@ -179,7 +179,7 @@ class PeerConnectionInternal : public PeerConnectionInterface, // Handler for the "channel closed" signal virtual void OnSctpDataChannelClosed(DataChannelInterface* channel) {} - virtual const WebRtcKeyValueConfig& trials() = 0; + virtual const FieldTrialsView& trials() = 0; }; } // namespace webrtc diff --git a/pc/peer_connection_jsep_unittest.cc b/pc/peer_connection_jsep_unittest.cc index 590fa90102..ac355d5c24 100644 --- a/pc/peer_connection_jsep_unittest.cc +++ b/pc/peer_connection_jsep_unittest.cc @@ -21,6 +21,7 @@ #include "absl/strings/string_view.h" #include "absl/types/optional.h" #include "api/call/call_factory_interface.h" +#include "api/field_trials_view.h" #include "api/jsep.h" #include "api/media_stream_interface.h" #include "api/media_types.h" @@ -36,7 +37,6 @@ #include "api/task_queue/task_queue_factory.h" #include "api/transport/field_trial_based_config.h" #include "api/transport/sctp_transport_factory_interface.h" -#include "api/transport/webrtc_key_value_config.h" #include "media/base/media_engine.h" #include "media/base/stream_params.h" #include "media/engine/webrtc_media_engine.h" diff --git a/pc/srtp_session.cc b/pc/srtp_session.cc index b5b244265c..41c9b46e45 100644 --- a/pc/srtp_session.cc +++ b/pc/srtp_session.cc @@ -18,7 +18,7 @@ #include "absl/base/attributes.h" #include "absl/base/const_init.h" #include "api/array_view.h" -#include "api/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "modules/rtp_rtcp/source/rtp_util.h" #include "pc/external_hmac.h" #include "rtc_base/byte_order.h" @@ -42,7 +42,7 @@ constexpr int kSrtpErrorCodeBoundary = 28; SrtpSession::SrtpSession() {} -SrtpSession::SrtpSession(const webrtc::WebRtcKeyValueConfig& field_trials) { +SrtpSession::SrtpSession(const webrtc::FieldTrialsView& field_trials) { dump_plain_rtp_ = field_trials.IsEnabled("WebRTC-Debugging-RtpDump"); } diff --git a/pc/srtp_session.h b/pc/srtp_session.h index c3979aae7a..1c61156fb1 100644 --- a/pc/srtp_session.h +++ b/pc/srtp_session.h @@ -16,9 +16,9 @@ #include +#include "api/field_trials_view.h" #include "api/scoped_refptr.h" #include "api/sequence_checker.h" -#include "api/webrtc_key_value_config.h" #include "rtc_base/synchronization/mutex.h" // Forward declaration to avoid pulling in libsrtp headers here @@ -36,7 +36,7 @@ void ProhibitLibsrtpInitialization(); class SrtpSession { public: SrtpSession(); - explicit SrtpSession(const webrtc::WebRtcKeyValueConfig& field_trials); + explicit SrtpSession(const webrtc::FieldTrialsView& field_trials); ~SrtpSession(); SrtpSession(const SrtpSession&) = delete; diff --git a/pc/srtp_transport.cc b/pc/srtp_transport.cc index b59fc1d1d2..0991a25fb5 100644 --- a/pc/srtp_transport.cc +++ b/pc/srtp_transport.cc @@ -35,7 +35,7 @@ namespace webrtc { SrtpTransport::SrtpTransport(bool rtcp_mux_enabled, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : RtpTransport(rtcp_mux_enabled), field_trials_(field_trials) {} RTCError SrtpTransport::SetSrtpSendKey(const cricket::CryptoParams& params) { diff --git a/pc/srtp_transport.h b/pc/srtp_transport.h index 2fec29eb01..e4b0d9fff6 100644 --- a/pc/srtp_transport.h +++ b/pc/srtp_transport.h @@ -20,8 +20,8 @@ #include "absl/types/optional.h" #include "api/crypto_params.h" +#include "api/field_trials_view.h" #include "api/rtc_error.h" -#include "api/webrtc_key_value_config.h" #include "p2p/base/packet_transport_internal.h" #include "pc/rtp_transport.h" #include "pc/srtp_session.h" @@ -37,8 +37,7 @@ namespace webrtc { // parameters for the SrtpSession underneath. class SrtpTransport : public RtpTransport { public: - SrtpTransport(bool rtcp_mux_enabled, - const WebRtcKeyValueConfig& field_trials); + SrtpTransport(bool rtcp_mux_enabled, const FieldTrialsView& field_trials); virtual ~SrtpTransport() = default; @@ -170,7 +169,7 @@ class SrtpTransport : public RtpTransport { int decryption_failure_count_ = 0; - const WebRtcKeyValueConfig& field_trials_; + const FieldTrialsView& field_trials_; }; } // namespace webrtc diff --git a/pc/stats_collector.cc b/pc/stats_collector.cc index 44873faf29..679a690837 100644 --- a/pc/stats_collector.cc +++ b/pc/stats_collector.cc @@ -25,13 +25,13 @@ #include "api/audio_codecs/audio_encoder.h" #include "api/candidate.h" #include "api/data_channel_interface.h" +#include "api/field_trials_view.h" #include "api/media_types.h" #include "api/rtp_sender_interface.h" #include "api/scoped_refptr.h" #include "api/sequence_checker.h" #include "api/video/video_content_type.h" #include "api/video/video_timing.h" -#include "api/webrtc_key_value_config.h" #include "call/call.h" #include "media/base/media_channel.h" #include "modules/audio_processing/include/audio_processing_statistics.h" diff --git a/pc/stats_collector.h b/pc/stats_collector.h index 794437e9eb..ea719c69a5 100644 --- a/pc/stats_collector.h +++ b/pc/stats_collector.h @@ -26,11 +26,11 @@ #include #include "absl/types/optional.h" +#include "api/field_trials_view.h" #include "api/media_stream_interface.h" #include "api/peer_connection_interface.h" #include "api/scoped_refptr.h" #include "api/stats_types.h" -#include "api/webrtc_key_value_config.h" #include "p2p/base/connection_info.h" #include "p2p/base/port.h" #include "pc/peer_connection_internal.h" diff --git a/pc/test/fake_peer_connection_base.h b/pc/test/fake_peer_connection_base.h index 2b4dd73913..c8863059db 100644 --- a/pc/test/fake_peer_connection_base.h +++ b/pc/test/fake_peer_connection_base.h @@ -17,8 +17,8 @@ #include #include +#include "api/field_trials_view.h" #include "api/sctp_transport_interface.h" -#include "api/webrtc_key_value_config.h" #include "pc/peer_connection_internal.h" #include "test/scoped_key_value_config.h" @@ -360,7 +360,7 @@ class FakePeerConnectionBase : public PeerConnectionInternal { void SetSctpDataMid(const std::string& mid) override {} void ResetSctpDataMid() override {} - const WebRtcKeyValueConfig& trials() override { return field_trials_; } + const FieldTrialsView& trials() override { return field_trials_; } protected: webrtc::test::ScopedKeyValueConfig field_trials_; diff --git a/pc/test/integration_test_helpers.h b/pc/test/integration_test_helpers.h index 00417d96a5..78c91afd17 100644 --- a/pc/test/integration_test_helpers.h +++ b/pc/test/integration_test_helpers.h @@ -33,6 +33,7 @@ #include "api/candidate.h" #include "api/crypto/crypto_options.h" #include "api/data_channel_interface.h" +#include "api/field_trials_view.h" #include "api/ice_transport_interface.h" #include "api/jsep.h" #include "api/media_stream_interface.h" @@ -52,7 +53,6 @@ #include "api/task_queue/default_task_queue_factory.h" #include "api/task_queue/task_queue_factory.h" #include "api/transport/field_trial_based_config.h" -#include "api/transport/webrtc_key_value_config.h" #include "api/uma_metrics.h" #include "api/video/video_rotation.h" #include "api/video_codecs/sdp_video_format.h" @@ -1855,7 +1855,7 @@ class PeerConnectionIntegrationBaseTest : public ::testing::Test { expected_cipher_suite); } - const WebRtcKeyValueConfig& trials() const { return *field_trials_.get(); } + const FieldTrialsView& trials() const { return *field_trials_.get(); } protected: SdpSemantics sdp_semantics_; @@ -1876,7 +1876,7 @@ class PeerConnectionIntegrationBaseTest : public ::testing::Test { std::vector> turn_customizers_; std::unique_ptr caller_; std::unique_ptr callee_; - std::unique_ptr field_trials_; + std::unique_ptr field_trials_; }; } // namespace webrtc diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn index 4015fc9a65..c762b9f1d0 100644 --- a/rtc_base/BUILD.gn +++ b/rtc_base/BUILD.gn @@ -943,11 +943,11 @@ rtc_library("rtc_base") { ":stringutils", ":threading", "../api:array_view", + "../api:field_trials_view", "../api:function_view", "../api:refcountedbase", "../api:scoped_refptr", "../api:sequence_checker", - "../api:webrtc_key_value_config", "../api/numerics", "../api/task_queue", "../api/transport:field_trial_based_config", diff --git a/rtc_base/experiments/BUILD.gn b/rtc_base/experiments/BUILD.gn index 5788484025..2836352fca 100644 --- a/rtc_base/experiments/BUILD.gn +++ b/rtc_base/experiments/BUILD.gn @@ -15,8 +15,8 @@ rtc_library("alr_experiment") { ] deps = [ "../:rtc_base_approved", + "../../api:field_trials_view", "../../api/transport:field_trial_based_config", - "../../api/transport:webrtc_key_value_config", ] absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] } @@ -56,8 +56,8 @@ rtc_library("quality_rampup_experiment") { deps = [ ":field_trial_parser", "../:rtc_base_approved", + "../../api:field_trials_view", "../../api/transport:field_trial_based_config", - "../../api/transport:webrtc_key_value_config", "../../system_wrappers:field_trial", ] absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] @@ -71,8 +71,8 @@ rtc_library("quality_scaler_settings") { deps = [ ":field_trial_parser", "../:rtc_base_approved", + "../../api:field_trials_view", "../../api/transport:field_trial_based_config", - "../../api/transport:webrtc_key_value_config", "../../system_wrappers:field_trial", ] absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] @@ -86,8 +86,8 @@ rtc_library("bandwidth_quality_scaler_settings") { deps = [ ":field_trial_parser", "../:rtc_base_approved", + "../../api:field_trials_view", "../../api/transport:field_trial_based_config", - "../../api/transport:webrtc_key_value_config", "../../system_wrappers:field_trial", ] absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] @@ -126,7 +126,7 @@ rtc_library("balanced_degradation_settings") { deps = [ ":field_trial_parser", "../:rtc_base_approved", - "../../api:webrtc_key_value_config", + "../../api:field_trials_view", "../../api/video_codecs:video_codecs_api", "../../system_wrappers:field_trial", ] @@ -195,8 +195,8 @@ rtc_library("rate_control_settings") { deps = [ ":field_trial_parser", "../:rtc_base_approved", + "../../api:field_trials_view", "../../api/transport:field_trial_based_config", - "../../api/transport:webrtc_key_value_config", "../../api/units:data_size", "../../api/video_codecs:video_codecs_api", "../../system_wrappers:field_trial", @@ -214,8 +214,8 @@ rtc_library("keyframe_interval_settings_experiment") { ] deps = [ ":field_trial_parser", + "../../api:field_trials_view", "../../api/transport:field_trial_based_config", - "../../api/transport:webrtc_key_value_config", ] absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] } @@ -228,8 +228,8 @@ rtc_library("stable_target_rate_experiment") { deps = [ ":field_trial_parser", ":rate_control_settings", + "../../api:field_trials_view", "../../api/transport:field_trial_based_config", - "../../api/transport:webrtc_key_value_config", ] absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] } diff --git a/rtc_base/experiments/alr_experiment.cc b/rtc_base/experiments/alr_experiment.cc index 119a4011e1..36bf67d71d 100644 --- a/rtc_base/experiments/alr_experiment.cc +++ b/rtc_base/experiments/alr_experiment.cc @@ -32,7 +32,7 @@ bool AlrExperimentSettings::MaxOneFieldTrialEnabled() { } bool AlrExperimentSettings::MaxOneFieldTrialEnabled( - const WebRtcKeyValueConfig& key_value_config) { + const FieldTrialsView& key_value_config) { return key_value_config.Lookup(kStrictPacingAndProbingExperimentName) .empty() || key_value_config.Lookup(kScreenshareProbingBweExperimentName).empty(); @@ -46,7 +46,7 @@ AlrExperimentSettings::CreateFromFieldTrial(const char* experiment_name) { absl::optional AlrExperimentSettings::CreateFromFieldTrial( - const WebRtcKeyValueConfig& key_value_config, + const FieldTrialsView& key_value_config, const char* experiment_name) { absl::optional ret; std::string group_name = key_value_config.Lookup(experiment_name); diff --git a/rtc_base/experiments/alr_experiment.h b/rtc_base/experiments/alr_experiment.h index 5b0661c5b4..bf6aa34062 100644 --- a/rtc_base/experiments/alr_experiment.h +++ b/rtc_base/experiments/alr_experiment.h @@ -14,7 +14,7 @@ #include #include "absl/types/optional.h" -#include "api/transport/webrtc_key_value_config.h" +#include "api/field_trials_view.h" namespace webrtc { struct AlrExperimentSettings { @@ -34,11 +34,10 @@ struct AlrExperimentSettings { static absl::optional CreateFromFieldTrial( const char* experiment_name); static absl::optional CreateFromFieldTrial( - const WebRtcKeyValueConfig& key_value_config, + const FieldTrialsView& key_value_config, const char* experiment_name); static bool MaxOneFieldTrialEnabled(); - static bool MaxOneFieldTrialEnabled( - const WebRtcKeyValueConfig& key_value_config); + static bool MaxOneFieldTrialEnabled(const FieldTrialsView& key_value_config); private: AlrExperimentSettings() = default; diff --git a/rtc_base/experiments/balanced_degradation_settings.cc b/rtc_base/experiments/balanced_degradation_settings.cc index 7cd1a675d4..1652e31704 100644 --- a/rtc_base/experiments/balanced_degradation_settings.cc +++ b/rtc_base/experiments/balanced_degradation_settings.cc @@ -332,7 +332,7 @@ BalancedDegradationSettings::Config::Config(int pixels, generic(generic) {} BalancedDegradationSettings::BalancedDegradationSettings( - const WebRtcKeyValueConfig& field_trials) { + const FieldTrialsView& field_trials) { FieldTrialStructList configs( {FieldTrialStructMember("pixels", [](Config* c) { return &c->pixels; }), FieldTrialStructMember("fps", [](Config* c) { return &c->fps; }), diff --git a/rtc_base/experiments/balanced_degradation_settings.h b/rtc_base/experiments/balanced_degradation_settings.h index 8255547cd0..0b5e03df3b 100644 --- a/rtc_base/experiments/balanced_degradation_settings.h +++ b/rtc_base/experiments/balanced_degradation_settings.h @@ -14,8 +14,8 @@ #include #include "absl/types/optional.h" +#include "api/field_trials_view.h" #include "api/video_codecs/video_encoder.h" -#include "api/webrtc_key_value_config.h" namespace webrtc { @@ -23,7 +23,7 @@ class BalancedDegradationSettings { public: static constexpr int kNoFpsDiff = -100; - BalancedDegradationSettings(const WebRtcKeyValueConfig& field_trials); + BalancedDegradationSettings(const FieldTrialsView& field_trials); ~BalancedDegradationSettings(); struct CodecTypeSpecific { diff --git a/rtc_base/experiments/bandwidth_quality_scaler_settings.cc b/rtc_base/experiments/bandwidth_quality_scaler_settings.cc index 332ab6be4b..0a9df493ed 100644 --- a/rtc_base/experiments/bandwidth_quality_scaler_settings.cc +++ b/rtc_base/experiments/bandwidth_quality_scaler_settings.cc @@ -16,7 +16,7 @@ namespace webrtc { BandwidthQualityScalerSettings::BandwidthQualityScalerSettings( - const WebRtcKeyValueConfig* const key_value_config) + const FieldTrialsView* const key_value_config) : bitrate_state_update_interval_s_("bitrate_state_update_interval_s_") { ParseFieldTrial( {&bitrate_state_update_interval_s_}, diff --git a/rtc_base/experiments/bandwidth_quality_scaler_settings.h b/rtc_base/experiments/bandwidth_quality_scaler_settings.h index 959aea5bd3..21e115df01 100644 --- a/rtc_base/experiments/bandwidth_quality_scaler_settings.h +++ b/rtc_base/experiments/bandwidth_quality_scaler_settings.h @@ -12,7 +12,7 @@ #define RTC_BASE_EXPERIMENTS_BANDWIDTH_QUALITY_SCALER_SETTINGS_H_ #include "absl/types/optional.h" -#include "api/transport/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "rtc_base/experiments/field_trial_parser.h" namespace webrtc { @@ -25,7 +25,7 @@ class BandwidthQualityScalerSettings final { private: explicit BandwidthQualityScalerSettings( - const WebRtcKeyValueConfig* const key_value_config); + const FieldTrialsView* const key_value_config); FieldTrialOptional bitrate_state_update_interval_s_; }; diff --git a/rtc_base/experiments/keyframe_interval_settings.cc b/rtc_base/experiments/keyframe_interval_settings.cc index 76c85cbbad..413e2a91d5 100644 --- a/rtc_base/experiments/keyframe_interval_settings.cc +++ b/rtc_base/experiments/keyframe_interval_settings.cc @@ -21,7 +21,7 @@ constexpr char kFieldTrialName[] = "WebRTC-KeyframeInterval"; } // namespace KeyframeIntervalSettings::KeyframeIntervalSettings( - const WebRtcKeyValueConfig* const key_value_config) + const FieldTrialsView* const key_value_config) : min_keyframe_send_interval_ms_("min_keyframe_send_interval_ms") { ParseFieldTrial({&min_keyframe_send_interval_ms_}, key_value_config->Lookup(kFieldTrialName)); diff --git a/rtc_base/experiments/keyframe_interval_settings.h b/rtc_base/experiments/keyframe_interval_settings.h index 3f253f0022..aff7854516 100644 --- a/rtc_base/experiments/keyframe_interval_settings.h +++ b/rtc_base/experiments/keyframe_interval_settings.h @@ -12,7 +12,7 @@ #define RTC_BASE_EXPERIMENTS_KEYFRAME_INTERVAL_SETTINGS_H_ #include "absl/types/optional.h" -#include "api/transport/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "rtc_base/experiments/field_trial_parser.h" namespace webrtc { @@ -29,8 +29,7 @@ class KeyframeIntervalSettings final { absl::optional MinKeyframeSendIntervalMs() const; private: - explicit KeyframeIntervalSettings( - const WebRtcKeyValueConfig* key_value_config); + explicit KeyframeIntervalSettings(const FieldTrialsView* key_value_config); FieldTrialOptional min_keyframe_send_interval_ms_; }; diff --git a/rtc_base/experiments/quality_rampup_experiment.cc b/rtc_base/experiments/quality_rampup_experiment.cc index 35c83f7011..509ba91dc3 100644 --- a/rtc_base/experiments/quality_rampup_experiment.cc +++ b/rtc_base/experiments/quality_rampup_experiment.cc @@ -18,7 +18,7 @@ namespace webrtc { QualityRampupExperiment::QualityRampupExperiment( - const WebRtcKeyValueConfig* const key_value_config) + const FieldTrialsView* const key_value_config) : min_pixels_("min_pixels"), min_duration_ms_("min_duration_ms"), max_bitrate_factor_("max_bitrate_factor") { diff --git a/rtc_base/experiments/quality_rampup_experiment.h b/rtc_base/experiments/quality_rampup_experiment.h index 719b1893f6..e8048a3c1c 100644 --- a/rtc_base/experiments/quality_rampup_experiment.h +++ b/rtc_base/experiments/quality_rampup_experiment.h @@ -12,7 +12,7 @@ #define RTC_BASE_EXPERIMENTS_QUALITY_RAMPUP_EXPERIMENT_H_ #include "absl/types/optional.h" -#include "api/transport/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "rtc_base/experiments/field_trial_parser.h" namespace webrtc { @@ -38,7 +38,7 @@ class QualityRampupExperiment final { private: explicit QualityRampupExperiment( - const WebRtcKeyValueConfig* const key_value_config); + const FieldTrialsView* const key_value_config); FieldTrialOptional min_pixels_; FieldTrialOptional min_duration_ms_; diff --git a/rtc_base/experiments/quality_scaler_settings.cc b/rtc_base/experiments/quality_scaler_settings.cc index d2443b05ce..85c99255ab 100644 --- a/rtc_base/experiments/quality_scaler_settings.cc +++ b/rtc_base/experiments/quality_scaler_settings.cc @@ -20,7 +20,7 @@ const double kMinScaleFactor = 0.01; } // namespace QualityScalerSettings::QualityScalerSettings( - const WebRtcKeyValueConfig* const key_value_config) + const FieldTrialsView* const key_value_config) : sampling_period_ms_("sampling_period_ms"), average_qp_window_("average_qp_window"), min_frames_("min_frames"), diff --git a/rtc_base/experiments/quality_scaler_settings.h b/rtc_base/experiments/quality_scaler_settings.h index b4b6a427a0..99827aac6b 100644 --- a/rtc_base/experiments/quality_scaler_settings.h +++ b/rtc_base/experiments/quality_scaler_settings.h @@ -12,7 +12,7 @@ #define RTC_BASE_EXPERIMENTS_QUALITY_SCALER_SETTINGS_H_ #include "absl/types/optional.h" -#include "api/transport/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "rtc_base/experiments/field_trial_parser.h" namespace webrtc { @@ -30,8 +30,7 @@ class QualityScalerSettings final { absl::optional InitialBitrateFactor() const; private: - explicit QualityScalerSettings( - const WebRtcKeyValueConfig* const key_value_config); + explicit QualityScalerSettings(const FieldTrialsView* const key_value_config); FieldTrialOptional sampling_period_ms_; FieldTrialOptional average_qp_window_; diff --git a/rtc_base/experiments/rate_control_settings.cc b/rtc_base/experiments/rate_control_settings.cc index bed194e683..91b475a04a 100644 --- a/rtc_base/experiments/rate_control_settings.cc +++ b/rtc_base/experiments/rate_control_settings.cc @@ -39,12 +39,12 @@ const char* kVideoHysteresisFieldTrialname = const char* kScreenshareHysteresisFieldTrialname = "WebRTC-SimulcastScreenshareUpswitchHysteresisPercent"; -bool IsEnabled(const WebRtcKeyValueConfig* const key_value_config, +bool IsEnabled(const FieldTrialsView* const key_value_config, absl::string_view key) { return absl::StartsWith(key_value_config->Lookup(key), "Enabled"); } -void ParseHysteresisFactor(const WebRtcKeyValueConfig* const key_value_config, +void ParseHysteresisFactor(const FieldTrialsView* const key_value_config, absl::string_view key, double* output_value) { std::string group_name = key_value_config->Lookup(key); @@ -94,7 +94,7 @@ std::unique_ptr VideoRateControlConfig::Parser() { } RateControlSettings::RateControlSettings( - const WebRtcKeyValueConfig* const key_value_config) { + const FieldTrialsView* const key_value_config) { std::string congestion_window_config = key_value_config->Lookup(CongestionWindowConfig::kKey).empty() ? kCongestionWindowDefaultFieldTrialString @@ -120,7 +120,7 @@ RateControlSettings RateControlSettings::ParseFromFieldTrials() { } RateControlSettings RateControlSettings::ParseFromKeyValueConfig( - const WebRtcKeyValueConfig* const key_value_config) { + const FieldTrialsView* const key_value_config) { FieldTrialBasedConfig field_trial_config; return RateControlSettings(key_value_config ? key_value_config : &field_trial_config); diff --git a/rtc_base/experiments/rate_control_settings.h b/rtc_base/experiments/rate_control_settings.h index 1c38e927dc..bad16d2eee 100644 --- a/rtc_base/experiments/rate_control_settings.h +++ b/rtc_base/experiments/rate_control_settings.h @@ -12,7 +12,7 @@ #define RTC_BASE_EXPERIMENTS_RATE_CONTROL_SETTINGS_H_ #include "absl/types/optional.h" -#include "api/transport/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "api/units/data_size.h" #include "api/video_codecs/video_codec.h" #include "api/video_codecs/video_encoder_config.h" @@ -57,7 +57,7 @@ class RateControlSettings final { static RateControlSettings ParseFromFieldTrials(); static RateControlSettings ParseFromKeyValueConfig( - const WebRtcKeyValueConfig* const key_value_config); + const FieldTrialsView* const key_value_config); // When CongestionWindowPushback is enabled, the pacer is oblivious to // the congestion window. The relation between outstanding data and @@ -93,8 +93,7 @@ class RateControlSettings final { bool BitrateAdjusterCanUseNetworkHeadroom() const; private: - explicit RateControlSettings( - const WebRtcKeyValueConfig* const key_value_config); + explicit RateControlSettings(const FieldTrialsView* const key_value_config); CongestionWindowConfig congestion_window_config_; VideoRateControlConfig video_config_; diff --git a/rtc_base/experiments/stable_target_rate_experiment.cc b/rtc_base/experiments/stable_target_rate_experiment.cc index fa7a97b51f..b7246d4a12 100644 --- a/rtc_base/experiments/stable_target_rate_experiment.cc +++ b/rtc_base/experiments/stable_target_rate_experiment.cc @@ -19,7 +19,7 @@ constexpr char kFieldTrialName[] = "WebRTC-StableTargetRate"; } // namespace StableTargetRateExperiment::StableTargetRateExperiment( - const WebRtcKeyValueConfig* const key_value_config, + const FieldTrialsView* const key_value_config, double default_video_hysteresis, double default_screenshare_hysteresis) : enabled_("enabled", false), @@ -43,7 +43,7 @@ StableTargetRateExperiment StableTargetRateExperiment::ParseFromFieldTrials() { } StableTargetRateExperiment StableTargetRateExperiment::ParseFromKeyValueConfig( - const WebRtcKeyValueConfig* const key_value_config) { + const FieldTrialsView* const key_value_config) { RateControlSettings rate_control = RateControlSettings::ParseFromKeyValueConfig(key_value_config); return StableTargetRateExperiment( diff --git a/rtc_base/experiments/stable_target_rate_experiment.h b/rtc_base/experiments/stable_target_rate_experiment.h index 299299ce87..be0f9da129 100644 --- a/rtc_base/experiments/stable_target_rate_experiment.h +++ b/rtc_base/experiments/stable_target_rate_experiment.h @@ -11,7 +11,7 @@ #ifndef RTC_BASE_EXPERIMENTS_STABLE_TARGET_RATE_EXPERIMENT_H_ #define RTC_BASE_EXPERIMENTS_STABLE_TARGET_RATE_EXPERIMENT_H_ -#include "api/transport/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "rtc_base/experiments/field_trial_parser.h" namespace webrtc { @@ -22,7 +22,7 @@ class StableTargetRateExperiment { StableTargetRateExperiment(StableTargetRateExperiment&&); static StableTargetRateExperiment ParseFromFieldTrials(); static StableTargetRateExperiment ParseFromKeyValueConfig( - const WebRtcKeyValueConfig* const key_value_config); + const FieldTrialsView* const key_value_config); bool IsEnabled() const; double GetVideoHysteresisFactor() const; @@ -30,7 +30,7 @@ class StableTargetRateExperiment { private: explicit StableTargetRateExperiment( - const WebRtcKeyValueConfig* const key_value_config, + const FieldTrialsView* const key_value_config, double default_video_hysteresis, double default_screenshare_hysteresis); diff --git a/rtc_base/network.cc b/rtc_base/network.cc index b2bce37714..b422b284e7 100644 --- a/rtc_base/network.cc +++ b/rtc_base/network.cc @@ -282,7 +282,7 @@ webrtc::MdnsResponderInterface* NetworkManager::GetMdnsResponder() const { } NetworkManagerBase::NetworkManagerBase( - const webrtc::WebRtcKeyValueConfig* field_trials) + const webrtc::FieldTrialsView* field_trials) : enumeration_permission_(NetworkManager::ENUMERATION_ALLOWED), signal_network_preference_change_( field_trials @@ -515,7 +515,7 @@ bool NetworkManagerBase::IsVpnMacAddress( BasicNetworkManager::BasicNetworkManager( NetworkMonitorFactory* network_monitor_factory, SocketFactory* socket_factory, - const webrtc::WebRtcKeyValueConfig* field_trials) + const webrtc::FieldTrialsView* field_trials) : field_trials_(field_trials), network_monitor_factory_(network_monitor_factory), socket_factory_(socket_factory), @@ -1137,15 +1137,13 @@ webrtc::MdnsResponderInterface* Network::GetMdnsResponder() const { return mdns_responder_provider_->GetMdnsResponder(); } -uint16_t Network::GetCost( - const webrtc::WebRtcKeyValueConfig* field_trials) const { +uint16_t Network::GetCost(const webrtc::FieldTrialsView* field_trials) const { return GetCost( - *webrtc::AlwaysValidPointer(field_trials)); } -uint16_t Network::GetCost( - const webrtc::WebRtcKeyValueConfig& field_trials) const { +uint16_t Network::GetCost(const webrtc::FieldTrialsView& field_trials) const { AdapterType type = IsVpn() ? underlying_type_for_vpn_ : type_; const bool use_differentiated_cellular_costs = field_trials.IsEnabled("WebRTC-UseDifferentiatedCellularCosts"); diff --git a/rtc_base/network.h b/rtc_base/network.h index d01a418860..067ecb4f27 100644 --- a/rtc_base/network.h +++ b/rtc_base/network.h @@ -21,9 +21,9 @@ #include "absl/strings/string_view.h" #include "api/array_view.h" +#include "api/field_trials_view.h" #include "api/sequence_checker.h" #include "api/transport/field_trial_based_config.h" -#include "api/webrtc_key_value_config.h" #include "rtc_base/ip_address.h" #include "rtc_base/mdns_responder_interface.h" #include "rtc_base/memory/always_valid_pointer.h" @@ -208,8 +208,7 @@ class RTC_EXPORT NetworkManager : public DefaultLocalAddressProvider, // Base class for NetworkManager implementations. class RTC_EXPORT NetworkManagerBase : public NetworkManager { public: - NetworkManagerBase( - const webrtc::WebRtcKeyValueConfig* field_trials = nullptr); + NetworkManagerBase(const webrtc::FieldTrialsView* field_trials = nullptr); ~NetworkManagerBase() override; void GetNetworks(NetworkList* networks) const override; @@ -281,24 +280,22 @@ class RTC_EXPORT BasicNetworkManager : public NetworkManagerBase, ABSL_DEPRECATED( "Use the version with socket_factory, see bugs.webrtc.org/13145") explicit BasicNetworkManager( - const webrtc::WebRtcKeyValueConfig* field_trials = nullptr) + const webrtc::FieldTrialsView* field_trials = nullptr) : BasicNetworkManager( /* network_monitor_factory= */ nullptr, /* socket_factory= */ nullptr, field_trials) {} // This is used by lots of downstream code. - BasicNetworkManager( - SocketFactory* socket_factory, - const webrtc::WebRtcKeyValueConfig* field_trials = nullptr) + BasicNetworkManager(SocketFactory* socket_factory, + const webrtc::FieldTrialsView* field_trials = nullptr) : BasicNetworkManager(/* network_monitor_factory= */ nullptr, socket_factory, field_trials) {} - BasicNetworkManager( - NetworkMonitorFactory* network_monitor_factory, - SocketFactory* socket_factory, - const webrtc::WebRtcKeyValueConfig* field_trials = nullptr); + BasicNetworkManager(NetworkMonitorFactory* network_monitor_factory, + SocketFactory* socket_factory, + const webrtc::FieldTrialsView* field_trials = nullptr); ~BasicNetworkManager() override; void StartUpdating() override; @@ -372,7 +369,7 @@ class RTC_EXPORT BasicNetworkManager : public NetworkManagerBase, bool sent_first_update_ = true; int start_count_ = 0; // Chromium create BasicNetworkManager() w/o field trials. - webrtc::AlwaysValidPointer field_trials_; std::vector network_ignore_list_; @@ -548,9 +545,8 @@ class RTC_EXPORT Network { // Port::OnNetworkTypeChanged is called). ABSL_DEPRECATED( "Use the version with field trials, see bugs.webrtc.org/webrtc:10335") - uint16_t GetCost( - const webrtc::WebRtcKeyValueConfig* field_trials = nullptr) const; - uint16_t GetCost(const webrtc::WebRtcKeyValueConfig& field_trials) const; + uint16_t GetCost(const webrtc::FieldTrialsView* field_trials = nullptr) const; + uint16_t GetCost(const webrtc::FieldTrialsView& field_trials) const; // A unique id assigned by the network manager, which may be signaled // to the remote side in the candidate. diff --git a/rtc_base/network_monitor_factory.h b/rtc_base/network_monitor_factory.h index b261ace897..c76ed97d8c 100644 --- a/rtc_base/network_monitor_factory.h +++ b/rtc_base/network_monitor_factory.h @@ -12,7 +12,7 @@ #define RTC_BASE_NETWORK_MONITOR_FACTORY_H_ namespace webrtc { -class WebRtcKeyValueConfig; +class FieldTrialsView; } // namespace webrtc namespace rtc { @@ -29,7 +29,7 @@ class NetworkMonitorInterface; class NetworkMonitorFactory { public: virtual NetworkMonitorInterface* CreateNetworkMonitor( - const webrtc::WebRtcKeyValueConfig& field_trials) = 0; + const webrtc::FieldTrialsView& field_trials) = 0; virtual ~NetworkMonitorFactory(); diff --git a/rtc_base/network_unittest.cc b/rtc_base/network_unittest.cc index 58307930e7..ed02d8c755 100644 --- a/rtc_base/network_unittest.cc +++ b/rtc_base/network_unittest.cc @@ -123,7 +123,7 @@ class FakeNetworkMonitorFactory : public NetworkMonitorFactory { public: FakeNetworkMonitorFactory() {} NetworkMonitorInterface* CreateNetworkMonitor( - const webrtc::WebRtcKeyValueConfig& field_trials) override { + const webrtc::FieldTrialsView& field_trials) override { return new FakeNetworkMonitor(); } }; @@ -319,7 +319,7 @@ class TestBasicNetworkManager : public BasicNetworkManager { public: TestBasicNetworkManager(NetworkMonitorFactory* network_monitor_factory, SocketFactory* socket_factory, - const webrtc::WebRtcKeyValueConfig& field_trials) + const webrtc::FieldTrialsView& field_trials) : BasicNetworkManager(network_monitor_factory, socket_factory, &field_trials) {} diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn index eb191ef6cf..5b817372f4 100644 --- a/sdk/BUILD.gn +++ b/sdk/BUILD.gn @@ -1583,8 +1583,8 @@ if (is_ios || is_mac) { deps = [ ":network_monitor_objc", ":network_monitor_observer", + "../api:field_trials_view", "../api:sequence_checker", - "../api:webrtc_key_value_config", "../rtc_base", "../rtc_base:threading", "../rtc_base/task_utils:pending_task_safety_flag", diff --git a/sdk/android/BUILD.gn b/sdk/android/BUILD.gn index 34264c23e2..4c42fa78d8 100644 --- a/sdk/android/BUILD.gn +++ b/sdk/android/BUILD.gn @@ -579,10 +579,10 @@ if (current_os == "linux" || is_android) { ":generated_base_jni", ":internal_jni", ":native_api_jni", + "../../api:field_trials_view", "../../api:libjingle_peerconnection_api", "../../api:scoped_refptr", "../../api:sequence_checker", - "../../api:webrtc_key_value_config", "../../rtc_base", "../../rtc_base:checks", "../../rtc_base:ip_address", diff --git a/sdk/android/src/jni/android_network_monitor.cc b/sdk/android/src/jni/android_network_monitor.cc index ecf0adf74f..754267da83 100644 --- a/sdk/android/src/jni/android_network_monitor.cc +++ b/sdk/android/src/jni/android_network_monitor.cc @@ -578,7 +578,7 @@ AndroidNetworkMonitorFactory::~AndroidNetworkMonitorFactory() = default; rtc::NetworkMonitorInterface* AndroidNetworkMonitorFactory::CreateNetworkMonitor( - const WebRtcKeyValueConfig& field_trials) { + const FieldTrialsView& field_trials) { return new AndroidNetworkMonitor(AttachCurrentThreadIfNeeded(), j_application_context_); } diff --git a/sdk/android/src/jni/android_network_monitor.h b/sdk/android/src/jni/android_network_monitor.h index dfdb18ff19..60615bb360 100644 --- a/sdk/android/src/jni/android_network_monitor.h +++ b/sdk/android/src/jni/android_network_monitor.h @@ -19,7 +19,7 @@ #include "absl/strings/string_view.h" #include "absl/types/optional.h" -#include "api/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "rtc_base/network_monitor.h" #include "rtc_base/network_monitor_factory.h" #include "rtc_base/string_utils.h" @@ -167,7 +167,7 @@ class AndroidNetworkMonitorFactory : public rtc::NetworkMonitorFactory { ~AndroidNetworkMonitorFactory() override; rtc::NetworkMonitorInterface* CreateNetworkMonitor( - const WebRtcKeyValueConfig& field_trials) override; + const FieldTrialsView& field_trials) override; private: ScopedJavaGlobalRef j_application_context_; diff --git a/sdk/objc/native/src/objc_network_monitor.h b/sdk/objc/native/src/objc_network_monitor.h index 7375bbbce7..04566d20e5 100644 --- a/sdk/objc/native/src/objc_network_monitor.h +++ b/sdk/objc/native/src/objc_network_monitor.h @@ -14,8 +14,8 @@ #include #include "absl/strings/string_view.h" +#include "api/field_trials_view.h" #include "api/sequence_checker.h" -#include "api/webrtc_key_value_config.h" #include "rtc_base/network_monitor.h" #include "rtc_base/network_monitor_factory.h" #include "rtc_base/string_utils.h" @@ -33,7 +33,7 @@ class ObjCNetworkMonitorFactory : public rtc::NetworkMonitorFactory { ~ObjCNetworkMonitorFactory() override = default; rtc::NetworkMonitorInterface* CreateNetworkMonitor( - const WebRtcKeyValueConfig& field_trials) override; + const FieldTrialsView& field_trials) override; }; class ObjCNetworkMonitor : public rtc::NetworkMonitorInterface, diff --git a/sdk/objc/native/src/objc_network_monitor.mm b/sdk/objc/native/src/objc_network_monitor.mm index 798d7ff173..6a43b57421 100644 --- a/sdk/objc/native/src/objc_network_monitor.mm +++ b/sdk/objc/native/src/objc_network_monitor.mm @@ -21,7 +21,7 @@ namespace webrtc { rtc::NetworkMonitorInterface* ObjCNetworkMonitorFactory::CreateNetworkMonitor( - const WebRtcKeyValueConfig& field_trials) { + const FieldTrialsView& field_trials) { return new ObjCNetworkMonitor(); } diff --git a/test/BUILD.gn b/test/BUILD.gn index b3c53bf776..6b9524e1aa 100644 --- a/test/BUILD.gn +++ b/test/BUILD.gn @@ -235,7 +235,7 @@ rtc_library("explicit_key_value_config") { deps = [ ":field_trial", - "../api:webrtc_key_value_config", + "../api:field_trials_view", "../rtc_base:checks", ] absl_deps = [ "//third_party/abseil-cpp/absl/strings:strings" ] @@ -249,7 +249,7 @@ rtc_library("scoped_key_value_config") { deps = [ ":field_trial", - "../api:webrtc_key_value_config", + "../api:field_trials_view", "../rtc_base:checks", "../system_wrappers:field_trial", ] diff --git a/test/explicit_key_value_config.cc b/test/explicit_key_value_config.cc index 6a561fa209..a080a0c592 100644 --- a/test/explicit_key_value_config.cc +++ b/test/explicit_key_value_config.cc @@ -10,7 +10,7 @@ #include "test/explicit_key_value_config.h" -#include "api/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "rtc_base/checks.h" namespace webrtc { diff --git a/test/explicit_key_value_config.h b/test/explicit_key_value_config.h index 0a728ab536..355f01d48f 100644 --- a/test/explicit_key_value_config.h +++ b/test/explicit_key_value_config.h @@ -15,12 +15,12 @@ #include #include "absl/strings/string_view.h" -#include "api/webrtc_key_value_config.h" +#include "api/field_trials_view.h" namespace webrtc { namespace test { -class ExplicitKeyValueConfig : public WebRtcKeyValueConfig { +class ExplicitKeyValueConfig : public FieldTrialsView { public: explicit ExplicitKeyValueConfig(const std::string& s); std::string Lookup(absl::string_view key) const override; diff --git a/test/fuzzers/BUILD.gn b/test/fuzzers/BUILD.gn index 6f96b0c49c..60aa5d69a2 100644 --- a/test/fuzzers/BUILD.gn +++ b/test/fuzzers/BUILD.gn @@ -687,7 +687,7 @@ if (rtc_build_libvpx) { deps = [ "..:test_support", "../../api:array_view", - "../../api/transport:webrtc_key_value_config", + "../../api:field_trials_view", "../../api/video:video_frame", "../../api/video_codecs:video_codecs_api", "../../modules/video_coding:frame_dependencies_calculator", diff --git a/test/fuzzers/vp9_encoder_references_fuzzer.cc b/test/fuzzers/vp9_encoder_references_fuzzer.cc index a26dc8771d..14eb845804 100644 --- a/test/fuzzers/vp9_encoder_references_fuzzer.cc +++ b/test/fuzzers/vp9_encoder_references_fuzzer.cc @@ -14,7 +14,7 @@ #include "absl/base/macros.h" #include "absl/container/inlined_vector.h" #include "api/array_view.h" -#include "api/transport/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "api/video/video_frame.h" #include "api/video_codecs/video_codec.h" #include "api/video_codecs/video_encoder.h" @@ -168,7 +168,7 @@ class FrameValidator : public EncodedImageCallback { LayerFrame frames_[kMaxFrameHistorySize]; }; -class FieldTrials : public WebRtcKeyValueConfig { +class FieldTrials : public FieldTrialsView { public: explicit FieldTrials(FuzzDataHelper& config) : flags_(config.ReadOrDefaultValue(0)) {} diff --git a/test/network/BUILD.gn b/test/network/BUILD.gn index 6b5331588d..30cfb18645 100644 --- a/test/network/BUILD.gn +++ b/test/network/BUILD.gn @@ -39,13 +39,13 @@ rtc_library("emulated_network") { ] deps = [ "../../api:array_view", + "../../api:field_trials_view", "../../api:network_emulation_manager_api", "../../api:packet_socket_factory", "../../api:scoped_refptr", "../../api:sequence_checker", "../../api:simulated_network_api", "../../api:time_controller", - "../../api:webrtc_key_value_config", "../../api/numerics", "../../api/test/network_emulation", "../../api/transport:stun_types", diff --git a/test/pc/e2e/BUILD.gn b/test/pc/e2e/BUILD.gn index 8496a20760..471ac3cdb3 100644 --- a/test/pc/e2e/BUILD.gn +++ b/test/pc/e2e/BUILD.gn @@ -52,6 +52,7 @@ if (!build_with_chromium) { deps = [ "../../../api:callfactory_api", "../../../api:fec_controller_api", + "../../../api:field_trials_view", "../../../api:libjingle_peerconnection_api", "../../../api:packet_socket_factory", "../../../api:peer_connection_quality_test_fixture_api", @@ -59,7 +60,6 @@ if (!build_with_chromium) { "../../../api/rtc_event_log", "../../../api/task_queue", "../../../api/transport:network_control", - "../../../api/transport:webrtc_key_value_config", "../../../api/video_codecs:video_codecs_api", "../../../modules/audio_processing:api", "../../../p2p:rtc_p2p", diff --git a/test/pc/e2e/peer_connection_quality_test_params.h b/test/pc/e2e/peer_connection_quality_test_params.h index fae231c653..d9108267ab 100644 --- a/test/pc/e2e/peer_connection_quality_test_params.h +++ b/test/pc/e2e/peer_connection_quality_test_params.h @@ -18,11 +18,11 @@ #include "api/audio/audio_mixer.h" #include "api/call/call_factory_interface.h" #include "api/fec_controller.h" +#include "api/field_trials_view.h" #include "api/rtc_event_log/rtc_event_log_factory_interface.h" #include "api/task_queue/task_queue_factory.h" #include "api/test/peerconnection_quality_test_fixture.h" #include "api/transport/network_control.h" -#include "api/transport/webrtc_key_value_config.h" #include "api/video_codecs/video_decoder_factory.h" #include "api/video_codecs/video_encoder_factory.h" #include "modules/audio_processing/include/audio_processing.h" @@ -57,7 +57,7 @@ struct PeerConnectionFactoryComponents { std::unique_ptr video_encoder_factory; std::unique_ptr video_decoder_factory; - std::unique_ptr trials; + std::unique_ptr trials; rtc::scoped_refptr audio_processing; rtc::scoped_refptr audio_mixer; diff --git a/test/scenario/scenario_config.h b/test/scenario/scenario_config.h index c7320e9dc3..c0dcd65e0c 100644 --- a/test/scenario/scenario_config.h +++ b/test/scenario/scenario_config.h @@ -52,7 +52,7 @@ struct TransportControllerConfig { struct CallClientConfig { TransportControllerConfig transport; - const WebRtcKeyValueConfig* field_trials = nullptr; + const FieldTrialsView* field_trials = nullptr; }; struct PacketStreamConfig { diff --git a/test/scoped_key_value_config.cc b/test/scoped_key_value_config.cc index d6090b7f31..3b35c3d92b 100644 --- a/test/scoped_key_value_config.cc +++ b/test/scoped_key_value_config.cc @@ -10,7 +10,7 @@ #include "test/scoped_key_value_config.h" -#include "api/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "rtc_base/checks.h" #include "system_wrappers/include/field_trial.h" #include "test/field_trial.h" diff --git a/test/scoped_key_value_config.h b/test/scoped_key_value_config.h index a00f61ac60..0ecbddcfbf 100644 --- a/test/scoped_key_value_config.h +++ b/test/scoped_key_value_config.h @@ -16,13 +16,13 @@ #include #include "absl/strings/string_view.h" -#include "api/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "test/field_trial.h" namespace webrtc { namespace test { -class ScopedKeyValueConfig : public WebRtcKeyValueConfig { +class ScopedKeyValueConfig : public FieldTrialsView { public: virtual ~ScopedKeyValueConfig(); ScopedKeyValueConfig(); diff --git a/video/BUILD.gn b/video/BUILD.gn index b57aa26eab..74f09b2df7 100644 --- a/video/BUILD.gn +++ b/video/BUILD.gn @@ -61,13 +61,13 @@ rtc_library("video") { ":video_stream_encoder_impl", "../api:array_view", "../api:fec_controller_api", + "../api:field_trials_view", "../api:frame_transformer_interface", "../api:libjingle_peerconnection_api", "../api:rtp_parameters", "../api:scoped_refptr", "../api:sequence_checker", "../api:transport_api", - "../api:webrtc_key_value_config", "../api/crypto:frame_decryptor_interface", "../api/crypto:options", "../api/rtc_event_log", @@ -169,9 +169,9 @@ rtc_source_set("video_legacy") { ":frame_dumping_decoder", ":video", "../api:array_view", + "../api:field_trials_view", "../api:scoped_refptr", "../api:sequence_checker", - "../api:webrtc_key_value_config", "../api/crypto:frame_decryptor_interface", "../api/task_queue", "../api/transport:field_trial_based_config", @@ -231,8 +231,8 @@ rtc_library("video_stream_decoder_impl") { ] deps = [ + "../api:field_trials_view", "../api:sequence_checker", - "../api:webrtc_key_value_config", "../api/task_queue", "../api/transport:field_trial_based_config", "../api/video:encoded_frame", @@ -279,8 +279,8 @@ rtc_library("frame_cadence_adapter") { ] deps = [ + "../api:field_trials_view", "../api:sequence_checker", - "../api:webrtc_key_value_config", "../api/task_queue", "../api/units:time_delta", "../api/video:video_frame", @@ -312,8 +312,8 @@ rtc_library("frame_buffer_proxy") { ":frame_decode_timing", ":task_queue_frame_decode_scheduler", ":video_receive_stream_timeout_tracker", + "../api:field_trials_view", "../api:sequence_checker", - "../api:webrtc_key_value_config", "../api/metronome", "../api/task_queue", "../api/units:data_size", @@ -435,9 +435,9 @@ rtc_library("video_stream_encoder_impl") { deps = [ ":frame_cadence_adapter", + "../api:field_trials_view", "../api:rtp_parameters", "../api:sequence_checker", - "../api:webrtc_key_value_config", "../api/adaptation:resource_adaptation_api", "../api/task_queue:task_queue", "../api/units:data_rate", diff --git a/video/adaptation/BUILD.gn b/video/adaptation/BUILD.gn index 84e6a3250f..9e946eb4a8 100644 --- a/video/adaptation/BUILD.gn +++ b/video/adaptation/BUILD.gn @@ -33,10 +33,10 @@ rtc_library("video_adaptation") { ] deps = [ + "../../api:field_trials_view", "../../api:rtp_parameters", "../../api:scoped_refptr", "../../api:sequence_checker", - "../../api:webrtc_key_value_config", "../../api/adaptation:resource_adaptation_api", "../../api/task_queue:task_queue", "../../api/units:data_rate", diff --git a/video/adaptation/balanced_constraint.cc b/video/adaptation/balanced_constraint.cc index 2a5484084e..623b696d6e 100644 --- a/video/adaptation/balanced_constraint.cc +++ b/video/adaptation/balanced_constraint.cc @@ -20,7 +20,7 @@ namespace webrtc { BalancedConstraint::BalancedConstraint( DegradationPreferenceProvider* degradation_preference_provider, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : encoder_target_bitrate_bps_(absl::nullopt), balanced_settings_(field_trials), degradation_preference_provider_(degradation_preference_provider) { diff --git a/video/adaptation/balanced_constraint.h b/video/adaptation/balanced_constraint.h index ba465ab699..22c7d2923c 100644 --- a/video/adaptation/balanced_constraint.h +++ b/video/adaptation/balanced_constraint.h @@ -14,8 +14,8 @@ #include #include "absl/types/optional.h" +#include "api/field_trials_view.h" #include "api/sequence_checker.h" -#include "api/webrtc_key_value_config.h" #include "call/adaptation/adaptation_constraint.h" #include "call/adaptation/degradation_preference_provider.h" #include "rtc_base/experiments/balanced_degradation_settings.h" @@ -27,7 +27,7 @@ class BalancedConstraint : public AdaptationConstraint { public: BalancedConstraint( DegradationPreferenceProvider* degradation_preference_provider, - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); ~BalancedConstraint() override = default; void OnEncoderTargetBitrateUpdated( diff --git a/video/adaptation/video_stream_encoder_resource_manager.cc b/video/adaptation/video_stream_encoder_resource_manager.cc index 3b88ce5b1e..24bcd2c322 100644 --- a/video/adaptation/video_stream_encoder_resource_manager.cc +++ b/video/adaptation/video_stream_encoder_resource_manager.cc @@ -266,7 +266,7 @@ VideoStreamEncoderResourceManager::VideoStreamEncoderResourceManager( bool experiment_cpu_load_estimator, std::unique_ptr overuse_detector, DegradationPreferenceProvider* degradation_preference_provider, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : field_trials_(field_trials), degradation_preference_provider_(degradation_preference_provider), bitrate_constraint_(std::make_unique()), diff --git a/video/adaptation/video_stream_encoder_resource_manager.h b/video/adaptation/video_stream_encoder_resource_manager.h index c01be84472..9e4b27140b 100644 --- a/video/adaptation/video_stream_encoder_resource_manager.h +++ b/video/adaptation/video_stream_encoder_resource_manager.h @@ -21,6 +21,7 @@ #include "absl/types/optional.h" #include "api/adaptation/resource.h" +#include "api/field_trials_view.h" #include "api/rtp_parameters.h" #include "api/scoped_refptr.h" #include "api/task_queue/task_queue_base.h" @@ -32,7 +33,6 @@ #include "api/video_codecs/video_codec.h" #include "api/video_codecs/video_encoder.h" #include "api/video_codecs/video_encoder_config.h" -#include "api/webrtc_key_value_config.h" #include "call/adaptation/resource_adaptation_processor_interface.h" #include "call/adaptation/video_stream_adapter.h" #include "call/adaptation/video_stream_input_state_provider.h" @@ -81,7 +81,7 @@ class VideoStreamEncoderResourceManager bool experiment_cpu_load_estimator, std::unique_ptr overuse_detector, DegradationPreferenceProvider* degradation_preference_provider, - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); ~VideoStreamEncoderResourceManager() override; void Initialize(rtc::TaskQueue* encoder_queue); @@ -183,7 +183,7 @@ class VideoStreamEncoderResourceManager const std::map& active_counts); - const WebRtcKeyValueConfig& field_trials_; + const FieldTrialsView& field_trials_; DegradationPreferenceProvider* const degradation_preference_provider_; std::unique_ptr bitrate_constraint_ RTC_GUARDED_BY(encoder_queue_); diff --git a/video/buffered_frame_decryptor.cc b/video/buffered_frame_decryptor.cc index fb4ea76ce0..24cbaf8265 100644 --- a/video/buffered_frame_decryptor.cc +++ b/video/buffered_frame_decryptor.cc @@ -23,7 +23,7 @@ namespace webrtc { BufferedFrameDecryptor::BufferedFrameDecryptor( OnDecryptedFrameCallback* decrypted_frame_callback, OnDecryptionStatusChangeCallback* decryption_status_change_callback, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : generic_descriptor_auth_experiment_( !field_trials.IsDisabled("WebRTC-GenericDescriptorAuth")), decrypted_frame_callback_(decrypted_frame_callback), diff --git a/video/buffered_frame_decryptor.h b/video/buffered_frame_decryptor.h index a12fc5d03a..681f89a7f4 100644 --- a/video/buffered_frame_decryptor.h +++ b/video/buffered_frame_decryptor.h @@ -16,7 +16,7 @@ #include "api/crypto/crypto_options.h" #include "api/crypto/frame_decryptor_interface.h" -#include "api/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "modules/video_coding/frame_object.h" namespace webrtc { @@ -59,7 +59,7 @@ class BufferedFrameDecryptor final { explicit BufferedFrameDecryptor( OnDecryptedFrameCallback* decrypted_frame_callback, OnDecryptionStatusChangeCallback* decryption_status_change_callback, - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); ~BufferedFrameDecryptor(); // This object cannot be copied. diff --git a/video/frame_buffer_proxy.cc b/video/frame_buffer_proxy.cc index c09c56ae00..d4da0da2c4 100644 --- a/video/frame_buffer_proxy.cc +++ b/video/frame_buffer_proxy.cc @@ -43,7 +43,7 @@ class FrameBuffer2Proxy : public FrameBufferProxy { FrameSchedulingReceiver* receiver, TimeDelta max_wait_for_keyframe, TimeDelta max_wait_for_frame, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : max_wait_for_keyframe_(max_wait_for_keyframe), max_wait_for_frame_(max_wait_for_frame), frame_buffer_(clock, timing, stats_proxy, field_trials), @@ -182,7 +182,7 @@ class FrameBuffer3Proxy : public FrameBufferProxy { TimeDelta max_wait_for_keyframe, TimeDelta max_wait_for_frame, std::unique_ptr frame_decode_scheduler, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : field_trials_(field_trials), max_wait_for_keyframe_(max_wait_for_keyframe), max_wait_for_frame_(max_wait_for_frame), @@ -488,7 +488,7 @@ class FrameBuffer3Proxy : public FrameBufferProxy { } RTC_NO_UNIQUE_ADDRESS SequenceChecker worker_sequence_checker_; - const WebRtcKeyValueConfig& field_trials_; + const FieldTrialsView& field_trials_; const TimeDelta max_wait_for_keyframe_; const TimeDelta max_wait_for_frame_; const absl::optional rtt_mult_settings_ = @@ -544,8 +544,7 @@ enum class FrameBufferArm { constexpr const char* kFrameBufferFieldTrial = "WebRTC-FrameBuffer3"; -FrameBufferArm ParseFrameBufferFieldTrial( - const WebRtcKeyValueConfig& field_trials) { +FrameBufferArm ParseFrameBufferFieldTrial(const FieldTrialsView& field_trials) { webrtc::FieldTrialEnum arm( "arm", FrameBufferArm::kFrameBuffer2, { @@ -569,7 +568,7 @@ std::unique_ptr FrameBufferProxy::CreateFromFieldTrial( TimeDelta max_wait_for_keyframe, TimeDelta max_wait_for_frame, DecodeSynchronizer* decode_sync, - const WebRtcKeyValueConfig& field_trials) { + const FieldTrialsView& field_trials) { switch (ParseFrameBufferFieldTrial(field_trials)) { case FrameBufferArm::kFrameBuffer3: { auto scheduler = diff --git a/video/frame_buffer_proxy.h b/video/frame_buffer_proxy.h index 1a61f9991c..e01b28cab8 100644 --- a/video/frame_buffer_proxy.h +++ b/video/frame_buffer_proxy.h @@ -13,10 +13,10 @@ #include +#include "api/field_trials_view.h" #include "api/metronome/metronome.h" #include "api/task_queue/task_queue_base.h" #include "api/video/encoded_frame.h" -#include "api/webrtc_key_value_config.h" #include "modules/video_coding/include/video_coding_defines.h" #include "modules/video_coding/timing.h" #include "rtc_base/task_queue.h" @@ -49,7 +49,7 @@ class FrameBufferProxy { TimeDelta max_wait_for_keyframe, TimeDelta max_wait_for_frame, DecodeSynchronizer* decode_sync, - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); virtual ~FrameBufferProxy() = default; // Run on the worker thread. diff --git a/video/frame_buffer_proxy_unittest.cc b/video/frame_buffer_proxy_unittest.cc index b133a94bff..d6f97dbb85 100644 --- a/video/frame_buffer_proxy_unittest.cc +++ b/video/frame_buffer_proxy_unittest.cc @@ -198,7 +198,7 @@ class VCMReceiveStatisticsCallbackMock : public VCMReceiveStatisticsCallback { (override)); }; -bool IsFrameBuffer2Enabled(const WebRtcKeyValueConfig& field_trials) { +bool IsFrameBuffer2Enabled(const FieldTrialsView& field_trials) { return field_trials.Lookup("WebRTC-FrameBuffer3").find("arm:FrameBuffer2") != std::string::npos; } diff --git a/video/frame_cadence_adapter.cc b/video/frame_cadence_adapter.cc index 10cabb3129..7fc7939fdf 100644 --- a/video/frame_cadence_adapter.cc +++ b/video/frame_cadence_adapter.cc @@ -210,7 +210,7 @@ class FrameCadenceAdapterImpl : public FrameCadenceAdapterInterface { public: FrameCadenceAdapterImpl(Clock* clock, TaskQueueBase* queue, - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); ~FrameCadenceAdapterImpl(); // FrameCadenceAdapterInterface overrides. @@ -546,7 +546,7 @@ TimeDelta ZeroHertzAdapterMode::RepeatDuration(bool idle_repeat) const { FrameCadenceAdapterImpl::FrameCadenceAdapterImpl( Clock* clock, TaskQueueBase* queue, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : clock_(clock), queue_(queue), zero_hertz_screenshare_enabled_( @@ -742,7 +742,7 @@ void FrameCadenceAdapterImpl::MaybeReportFrameRateConstraintUmas() { std::unique_ptr FrameCadenceAdapterInterface::Create(Clock* clock, TaskQueueBase* queue, - const WebRtcKeyValueConfig& field_trials) { + const FieldTrialsView& field_trials) { return std::make_unique(clock, queue, field_trials); } diff --git a/video/frame_cadence_adapter.h b/video/frame_cadence_adapter.h index 843d8ebd15..40e98059c0 100644 --- a/video/frame_cadence_adapter.h +++ b/video/frame_cadence_adapter.h @@ -14,11 +14,11 @@ #include #include "absl/base/attributes.h" +#include "api/field_trials_view.h" #include "api/task_queue/task_queue_base.h" #include "api/units/time_delta.h" #include "api/video/video_frame.h" #include "api/video/video_sink_interface.h" -#include "api/webrtc_key_value_config.h" #include "rtc_base/synchronization/mutex.h" #include "rtc_base/thread_annotations.h" #include "system_wrappers/include/clock.h" @@ -81,7 +81,7 @@ class FrameCadenceAdapterInterface static std::unique_ptr Create( Clock* clock, TaskQueueBase* queue, - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); // Call before using the rest of the API. virtual void Initialize(Callback* callback) = 0; diff --git a/video/frame_cadence_adapter_unittest.cc b/video/frame_cadence_adapter_unittest.cc index edc6caea32..4770f051b7 100644 --- a/video/frame_cadence_adapter_unittest.cc +++ b/video/frame_cadence_adapter_unittest.cc @@ -60,7 +60,7 @@ VideoFrame CreateFrameWithTimestamps( } std::unique_ptr CreateAdapter( - const WebRtcKeyValueConfig& field_trials, + const FieldTrialsView& field_trials, Clock* clock) { return FrameCadenceAdapterInterface::Create(clock, TaskQueueBase::Current(), field_trials); diff --git a/video/frame_decode_timing_unittest.cc b/video/frame_decode_timing_unittest.cc index 743e722ed9..0066afee01 100644 --- a/video/frame_decode_timing_unittest.cc +++ b/video/frame_decode_timing_unittest.cc @@ -31,7 +31,7 @@ namespace { class FakeVCMTiming : public webrtc::VCMTiming { public: - explicit FakeVCMTiming(Clock* clock, const WebRtcKeyValueConfig& field_trials) + explicit FakeVCMTiming(Clock* clock, const FieldTrialsView& field_trials) : webrtc::VCMTiming(clock, field_trials) {} Timestamp RenderTime(uint32_t frame_timestamp, Timestamp now) const override { diff --git a/video/receive_statistics_proxy.cc b/video/receive_statistics_proxy.cc index 0a854ce068..e42a559c24 100644 --- a/video/receive_statistics_proxy.cc +++ b/video/receive_statistics_proxy.cc @@ -77,7 +77,7 @@ std::string UmaSuffixForContentType(VideoContentType content_type) { return ss.str(); } -bool EnableDecodeTimeHistogram(const WebRtcKeyValueConfig* field_trials) { +bool EnableDecodeTimeHistogram(const FieldTrialsView* field_trials) { if (field_trials == nullptr) { return true; } @@ -89,7 +89,7 @@ bool EnableDecodeTimeHistogram(const WebRtcKeyValueConfig* field_trials) { ReceiveStatisticsProxy::ReceiveStatisticsProxy( uint32_t remote_ssrc, Clock* clock, - const WebRtcKeyValueConfig* field_trials) + const FieldTrialsView* field_trials) : clock_(clock), start_ms_(clock->TimeInMilliseconds()), enable_decode_time_histograms_(EnableDecodeTimeHistogram(field_trials)), diff --git a/video/receive_statistics_proxy.h b/video/receive_statistics_proxy.h index 8dab89716e..584b3c163a 100644 --- a/video/receive_statistics_proxy.h +++ b/video/receive_statistics_proxy.h @@ -17,8 +17,8 @@ #include #include "absl/types/optional.h" +#include "api/field_trials_view.h" #include "api/sequence_checker.h" -#include "api/webrtc_key_value_config.h" #include "call/video_receive_stream.h" #include "modules/include/module_common_types.h" #include "modules/video_coding/include/video_coding_defines.h" @@ -45,7 +45,7 @@ class ReceiveStatisticsProxy : public VCMReceiveStatisticsCallback, public: ReceiveStatisticsProxy(uint32_t remote_ssrc, Clock* clock, - const WebRtcKeyValueConfig* field_trials = nullptr); + const FieldTrialsView* field_trials = nullptr); ~ReceiveStatisticsProxy() = default; VideoReceiveStream::Stats GetStats() const; diff --git a/video/receive_statistics_proxy2.cc b/video/receive_statistics_proxy2.cc index 5d49d36c43..5f12026158 100644 --- a/video/receive_statistics_proxy2.cc +++ b/video/receive_statistics_proxy2.cc @@ -101,7 +101,7 @@ ReceiveStatisticsProxy::ReceiveStatisticsProxy( uint32_t remote_ssrc, Clock* clock, TaskQueueBase* worker_thread, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : clock_(clock), start_ms_(clock->TimeInMilliseconds()), enable_decode_time_histograms_( diff --git a/video/receive_statistics_proxy2.h b/video/receive_statistics_proxy2.h index afe7458c41..328c92c011 100644 --- a/video/receive_statistics_proxy2.h +++ b/video/receive_statistics_proxy2.h @@ -17,10 +17,10 @@ #include #include "absl/types/optional.h" +#include "api/field_trials_view.h" #include "api/sequence_checker.h" #include "api/task_queue/task_queue_base.h" #include "api/units/timestamp.h" -#include "api/webrtc_key_value_config.h" #include "call/video_receive_stream.h" #include "modules/include/module_common_types.h" #include "modules/video_coding/include/video_coding_defines.h" @@ -52,7 +52,7 @@ class ReceiveStatisticsProxy : public VCMReceiveStatisticsCallback, ReceiveStatisticsProxy(uint32_t remote_ssrc, Clock* clock, TaskQueueBase* worker_thread, - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); ~ReceiveStatisticsProxy() override; VideoReceiveStream::Stats GetStats() const; diff --git a/video/rtp_video_stream_receiver.cc b/video/rtp_video_stream_receiver.cc index 1788823edf..04484b91cc 100644 --- a/video/rtp_video_stream_receiver.cc +++ b/video/rtp_video_stream_receiver.cc @@ -19,7 +19,7 @@ #include "absl/algorithm/container.h" #include "absl/memory/memory.h" #include "absl/types/optional.h" -#include "api/webrtc_key_value_config.h" +#include "api/field_trials_view.h" #include "media/base/media_constants.h" #include "modules/pacing/packet_router.h" #include "modules/remote_bitrate_estimator/include/remote_bitrate_estimator.h" @@ -59,7 +59,7 @@ namespace { constexpr int kPacketBufferStartSize = 512; constexpr int kPacketBufferMaxSize = 2048; -int PacketBufferMaxSize(const WebRtcKeyValueConfig& field_trials) { +int PacketBufferMaxSize(const FieldTrialsView& field_trials) { // The group here must be a positive power of 2, in which case that is used as // size. All other values shall result in the default value being used. const std::string group_name = @@ -212,7 +212,7 @@ RtpVideoStreamReceiver::RtpVideoStreamReceiver( OnCompleteFrameCallback* complete_frame_callback, rtc::scoped_refptr frame_decryptor, rtc::scoped_refptr frame_transformer, - const WebRtcKeyValueConfig* field_trials) + const FieldTrialsView* field_trials) : RtpVideoStreamReceiver(clock, transport, rtt_stats, @@ -244,7 +244,7 @@ RtpVideoStreamReceiver::RtpVideoStreamReceiver( OnCompleteFrameCallback* complete_frame_callback, rtc::scoped_refptr frame_decryptor, rtc::scoped_refptr frame_transformer, - const WebRtcKeyValueConfig* field_trials) + const FieldTrialsView* field_trials) : field_trials_(field_trials ? *field_trials : owned_field_trials_), clock_(clock), config_(*config), diff --git a/video/rtp_video_stream_receiver.h b/video/rtp_video_stream_receiver.h index 1e0f7bcf3a..f46f257da5 100644 --- a/video/rtp_video_stream_receiver.h +++ b/video/rtp_video_stream_receiver.h @@ -103,7 +103,7 @@ class RtpVideoStreamReceiver : public LossNotificationSender, OnCompleteFrameCallback* complete_frame_callback, rtc::scoped_refptr frame_decryptor, rtc::scoped_refptr frame_transformer, - const WebRtcKeyValueConfig* field_trials = nullptr); + const FieldTrialsView* field_trials = nullptr); RtpVideoStreamReceiver( Clock* clock, @@ -125,7 +125,7 @@ class RtpVideoStreamReceiver : public LossNotificationSender, OnCompleteFrameCallback* complete_frame_callback, rtc::scoped_refptr frame_decryptor, rtc::scoped_refptr frame_transformer, - const WebRtcKeyValueConfig* field_trials = nullptr); + const FieldTrialsView* field_trials = nullptr); ~RtpVideoStreamReceiver() override; void AddReceiveCodec(uint8_t payload_type, @@ -329,7 +329,7 @@ class RtpVideoStreamReceiver : public LossNotificationSender, bool is_keyframe) RTC_RUN_ON(worker_task_checker_); - const WebRtcKeyValueConfig& field_trials_; + const FieldTrialsView& field_trials_; FieldTrialBasedConfig owned_field_trials_; Clock* const clock_; diff --git a/video/rtp_video_stream_receiver2.cc b/video/rtp_video_stream_receiver2.cc index 25687b3cbc..9956760c3b 100644 --- a/video/rtp_video_stream_receiver2.cc +++ b/video/rtp_video_stream_receiver2.cc @@ -56,7 +56,7 @@ namespace { constexpr int kPacketBufferStartSize = 512; constexpr int kPacketBufferMaxSize = 2048; -int PacketBufferMaxSize(const WebRtcKeyValueConfig& field_trials) { +int PacketBufferMaxSize(const FieldTrialsView& field_trials) { // The group here must be a positive power of 2, in which case that is used as // size. All other values shall result in the default value being used. const std::string group_name = @@ -109,7 +109,7 @@ std::unique_ptr MaybeConstructNackModule( Clock* clock, NackSender* nack_sender, KeyFrameRequestSender* keyframe_request_sender, - const WebRtcKeyValueConfig& field_trials) { + const FieldTrialsView& field_trials) { if (config.rtp.nack.rtp_history_ms == 0) return nullptr; @@ -218,7 +218,7 @@ RtpVideoStreamReceiver2::RtpVideoStreamReceiver2( OnCompleteFrameCallback* complete_frame_callback, rtc::scoped_refptr frame_decryptor, rtc::scoped_refptr frame_transformer, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : field_trials_(field_trials), clock_(clock), config_(*config), diff --git a/video/rtp_video_stream_receiver2.h b/video/rtp_video_stream_receiver2.h index 88b012d63c..d9072277cc 100644 --- a/video/rtp_video_stream_receiver2.h +++ b/video/rtp_video_stream_receiver2.h @@ -97,7 +97,7 @@ class RtpVideoStreamReceiver2 : public LossNotificationSender, OnCompleteFrameCallback* complete_frame_callback, rtc::scoped_refptr frame_decryptor, rtc::scoped_refptr frame_transformer, - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); ~RtpVideoStreamReceiver2() override; void AddReceiveCodec(uint8_t payload_type, @@ -287,7 +287,7 @@ class RtpVideoStreamReceiver2 : public LossNotificationSender, bool is_keyframe) RTC_RUN_ON(packet_sequence_checker_); - const WebRtcKeyValueConfig& field_trials_; + const FieldTrialsView& field_trials_; Clock* const clock_; // Ownership of this object lies with VideoReceiveStream, which owns `this`. const VideoReceiveStream::Config& config_; diff --git a/video/send_statistics_proxy.cc b/video/send_statistics_proxy.cc index aa8a0781a9..bc4ff5d279 100644 --- a/video/send_statistics_proxy.cc +++ b/video/send_statistics_proxy.cc @@ -110,7 +110,7 @@ absl::optional GetFallbackMaxPixels(const std::string& group) { } absl::optional GetFallbackMaxPixelsIfFieldTrialEnabled( - const webrtc::WebRtcKeyValueConfig& field_trials) { + const webrtc::FieldTrialsView& field_trials) { std::string group = field_trials.Lookup(kVp8ForcedFallbackEncoderFieldTrial); return (absl::StartsWith(group, "Enabled")) ? GetFallbackMaxPixels(group.substr(7)) @@ -118,7 +118,7 @@ absl::optional GetFallbackMaxPixelsIfFieldTrialEnabled( } absl::optional GetFallbackMaxPixelsIfFieldTrialDisabled( - const webrtc::WebRtcKeyValueConfig& field_trials) { + const webrtc::FieldTrialsView& field_trials) { std::string group = field_trials.Lookup(kVp8ForcedFallbackEncoderFieldTrial); return (absl::StartsWith(group, "Disabled")) ? GetFallbackMaxPixels(group.substr(8)) @@ -132,7 +132,7 @@ SendStatisticsProxy::SendStatisticsProxy( Clock* clock, const VideoSendStream::Config& config, VideoEncoderConfig::ContentType content_type, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : clock_(clock), payload_name_(config.rtp.payload_name), rtp_config_(config.rtp), diff --git a/video/send_statistics_proxy.h b/video/send_statistics_proxy.h index f5d17ea276..a1319d8c7a 100644 --- a/video/send_statistics_proxy.h +++ b/video/send_statistics_proxy.h @@ -17,10 +17,10 @@ #include #include +#include "api/field_trials_view.h" #include "api/video/video_codec_constants.h" #include "api/video/video_stream_encoder_observer.h" #include "api/video_codecs/video_encoder_config.h" -#include "api/webrtc_key_value_config.h" #include "call/video_send_stream.h" #include "modules/include/module_common_types_public.h" #include "modules/rtp_rtcp/include/report_block_data.h" @@ -53,7 +53,7 @@ class SendStatisticsProxy : public VideoStreamEncoderObserver, SendStatisticsProxy(Clock* clock, const VideoSendStream::Config& config, VideoEncoderConfig::ContentType content_type, - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); ~SendStatisticsProxy() override; virtual VideoSendStream::Stats GetStats(); diff --git a/video/video_receive_stream2.cc b/video/video_receive_stream2.cc index df99866407..45415c3db1 100644 --- a/video/video_receive_stream2.cc +++ b/video/video_receive_stream2.cc @@ -130,8 +130,7 @@ class WebRtcRecordableEncodedFrame : public RecordableEncodedFrame { absl::optional color_space_; }; -RenderResolution InitialDecoderResolution( - const WebRtcKeyValueConfig& field_trials) { +RenderResolution InitialDecoderResolution(const FieldTrialsView& field_trials) { FieldTrialOptional width("w"); FieldTrialOptional height("h"); ParseFieldTrial({&width, &height}, diff --git a/video/video_send_stream.cc b/video/video_send_stream.cc index ea51fb8f00..e3f04c8004 100644 --- a/video/video_send_stream.cc +++ b/video/video_send_stream.cc @@ -63,7 +63,7 @@ size_t CalculateMaxHeaderSize(const RtpConfig& config) { VideoStreamEncoder::BitrateAllocationCallbackType GetBitrateAllocationCallbackType(const VideoSendStream::Config& config, - const WebRtcKeyValueConfig& field_trials) { + const FieldTrialsView& field_trials) { if (webrtc::RtpExtension::FindHeaderExtensionByUri( config.rtp.extensions, webrtc::RtpExtension::kVideoLayersAllocationUri, @@ -115,7 +115,7 @@ std::unique_ptr CreateVideoStreamEncoder( const VideoStreamEncoderSettings& encoder_settings, VideoStreamEncoder::BitrateAllocationCallbackType bitrate_allocation_callback_type, - const WebRtcKeyValueConfig& field_trials) { + const FieldTrialsView& field_trials) { std::unique_ptr encoder_queue = task_queue_factory->CreateTaskQueue("EncoderQueue", TaskQueueFactory::Priority::NORMAL); @@ -147,7 +147,7 @@ VideoSendStream::VideoSendStream( const std::map& suspended_ssrcs, const std::map& suspended_payload_states, std::unique_ptr fec_controller, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : rtp_transport_queue_(transport->GetWorkerQueue()), transport_(transport), stats_proxy_(clock, config, encoder_config.content_type, field_trials), diff --git a/video/video_send_stream.h b/video/video_send_stream.h index 048de3d108..19123071bd 100644 --- a/video/video_send_stream.h +++ b/video/video_send_stream.h @@ -16,9 +16,9 @@ #include #include "api/fec_controller.h" +#include "api/field_trials_view.h" #include "api/sequence_checker.h" #include "api/video/video_stream_encoder_interface.h" -#include "api/webrtc_key_value_config.h" #include "call/bitrate_allocator.h" #include "call/video_receive_stream.h" #include "call/video_send_stream.h" @@ -70,7 +70,7 @@ class VideoSendStream : public webrtc::VideoSendStream { const std::map& suspended_ssrcs, const std::map& suspended_payload_states, std::unique_ptr fec_controller, - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); ~VideoSendStream() override; diff --git a/video/video_send_stream_impl.cc b/video/video_send_stream_impl.cc index 27e5541d92..c151374811 100644 --- a/video/video_send_stream_impl.cc +++ b/video/video_send_stream_impl.cc @@ -192,7 +192,7 @@ uint32_t GetInitialEncoderMaxBitrate(int initial_encoder_max_bitrate) { } // namespace -PacingConfig::PacingConfig(const WebRtcKeyValueConfig& field_trials) +PacingConfig::PacingConfig(const FieldTrialsView& field_trials) : pacing_factor("factor", kStrictPacingMultiplier), max_pacing_delay("max_delay", TimeDelta::Millis(PacedSender::kMaxQueueLengthMs)) { @@ -214,7 +214,7 @@ VideoSendStreamImpl::VideoSendStreamImpl( double initial_encoder_bitrate_priority, VideoEncoderConfig::ContentType content_type, RtpVideoSenderInterface* rtp_video_sender, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : clock_(clock), has_alr_probing_(config->periodic_alr_bandwidth_probing || GetAlrSettings(content_type)), diff --git a/video/video_send_stream_impl.h b/video/video_send_stream_impl.h index a2c3dfe430..076b25d2e2 100644 --- a/video/video_send_stream_impl.h +++ b/video/video_send_stream_impl.h @@ -19,13 +19,13 @@ #include #include "absl/types/optional.h" +#include "api/field_trials_view.h" #include "api/video/encoded_image.h" #include "api/video/video_bitrate_allocation.h" #include "api/video/video_bitrate_allocator.h" #include "api/video/video_stream_encoder_interface.h" #include "api/video_codecs/video_encoder.h" #include "api/video_codecs/video_encoder_config.h" -#include "api/webrtc_key_value_config.h" #include "call/bitrate_allocator.h" #include "call/rtp_config.h" #include "call/rtp_transport_controller_send_interface.h" @@ -46,7 +46,7 @@ namespace internal { // Pacing buffer config; overridden by ALR config if provided. struct PacingConfig { - explicit PacingConfig(const WebRtcKeyValueConfig& field_trials); + explicit PacingConfig(const FieldTrialsView& field_trials); PacingConfig(const PacingConfig&); PacingConfig& operator=(const PacingConfig&) = default; ~PacingConfig(); @@ -75,7 +75,7 @@ class VideoSendStreamImpl : public webrtc::BitrateAllocatorObserver, double initial_encoder_bitrate_priority, VideoEncoderConfig::ContentType content_type, RtpVideoSenderInterface* rtp_video_sender, - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); ~VideoSendStreamImpl() override; void DeliverRtcp(const uint8_t* packet, size_t length); diff --git a/video/video_stream_decoder_impl.cc b/video/video_stream_decoder_impl.cc index 8704a6ef1a..5f275ff63d 100644 --- a/video/video_stream_decoder_impl.cc +++ b/video/video_stream_decoder_impl.cc @@ -24,7 +24,7 @@ VideoStreamDecoderImpl::VideoStreamDecoderImpl( VideoDecoderFactory* decoder_factory, TaskQueueFactory* task_queue_factory, std::map> decoder_settings, - const WebRtcKeyValueConfig* field_trials) + const FieldTrialsView* field_trials) : field_trials_(field_trials), timing_(Clock::GetRealTimeClock(), *field_trials_), decode_callbacks_(this), diff --git a/video/video_stream_decoder_impl.h b/video/video_stream_decoder_impl.h index d4fe1f7b9f..f76506f018 100644 --- a/video/video_stream_decoder_impl.h +++ b/video/video_stream_decoder_impl.h @@ -16,10 +16,10 @@ #include #include "absl/types/optional.h" +#include "api/field_trials_view.h" #include "api/sequence_checker.h" #include "api/transport/field_trial_based_config.h" #include "api/video/video_stream_decoder.h" -#include "api/webrtc_key_value_config.h" #include "modules/video_coding/frame_buffer2.h" #include "modules/video_coding/timing.h" #include "rtc_base/memory/always_valid_pointer.h" @@ -37,7 +37,7 @@ class VideoStreamDecoderImpl : public VideoStreamDecoderInterface { VideoDecoderFactory* decoder_factory, TaskQueueFactory* task_queue_factory, std::map> decoder_settings, - const WebRtcKeyValueConfig* field_trials); + const FieldTrialsView* field_trials); ~VideoStreamDecoderImpl() override; @@ -86,7 +86,7 @@ class VideoStreamDecoderImpl : public VideoStreamDecoderInterface { VideoStreamDecoderImpl::DecodeResult DecodeFrame( std::unique_ptr frame) RTC_RUN_ON(decode_queue_); - AlwaysValidPointer + AlwaysValidPointer field_trials_; VCMTiming timing_; DecodeCallbacks decode_callbacks_; diff --git a/video/video_stream_encoder.cc b/video/video_stream_encoder.cc index 58a262040b..c8bba6b678 100644 --- a/video/video_stream_encoder.cc +++ b/video/video_stream_encoder.cc @@ -19,6 +19,7 @@ #include "absl/algorithm/container.h" #include "absl/types/optional.h" +#include "api/field_trials_view.h" #include "api/sequence_checker.h" #include "api/task_queue/queued_task.h" #include "api/task_queue/task_queue_base.h" @@ -30,7 +31,6 @@ #include "api/video/video_layers_allocation.h" #include "api/video_codecs/sdp_video_format.h" #include "api/video_codecs/video_encoder.h" -#include "api/webrtc_key_value_config.h" #include "call/adaptation/resource_adaptation_processor.h" #include "call/adaptation/video_stream_adapter.h" #include "modules/video_coding/include/video_codec_initializer.h" @@ -598,7 +598,7 @@ VideoStreamEncoder::VideoStreamEncoder( std::unique_ptr encoder_queue, BitrateAllocationCallbackType allocation_cb_type, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : field_trials_(field_trials), worker_queue_(TaskQueueBase::Current()), number_of_cores_(number_of_cores), diff --git a/video/video_stream_encoder.h b/video/video_stream_encoder.h index 679598694a..f3dbd48484 100644 --- a/video/video_stream_encoder.h +++ b/video/video_stream_encoder.h @@ -18,6 +18,7 @@ #include #include "api/adaptation/resource.h" +#include "api/field_trials_view.h" #include "api/sequence_checker.h" #include "api/units/data_rate.h" #include "api/video/video_bitrate_allocator.h" @@ -28,7 +29,6 @@ #include "api/video/video_stream_encoder_settings.h" #include "api/video_codecs/video_codec.h" #include "api/video_codecs/video_encoder.h" -#include "api/webrtc_key_value_config.h" #include "call/adaptation/adaptation_constraint.h" #include "call/adaptation/resource_adaptation_processor.h" #include "call/adaptation/resource_adaptation_processor_interface.h" @@ -81,7 +81,7 @@ class VideoStreamEncoder : public VideoStreamEncoderInterface, std::unique_ptr encoder_queue, BitrateAllocationCallbackType allocation_cb_type, - const WebRtcKeyValueConfig& field_trials); + const FieldTrialsView& field_trials); ~VideoStreamEncoder() override; VideoStreamEncoder(const VideoStreamEncoder&) = delete; @@ -252,7 +252,7 @@ class VideoStreamEncoder : public VideoStreamEncoderInterface, void RequestEncoderSwitch() RTC_RUN_ON(&encoder_queue_); - const WebRtcKeyValueConfig& field_trials_; + const FieldTrialsView& field_trials_; TaskQueueBase* const worker_queue_; const uint32_t number_of_cores_; diff --git a/video/video_stream_encoder_unittest.cc b/video/video_stream_encoder_unittest.cc index 09ca0b679d..5999ab457b 100644 --- a/video/video_stream_encoder_unittest.cc +++ b/video/video_stream_encoder_unittest.cc @@ -375,7 +375,7 @@ class VideoStreamEncoderUnderTest : public VideoStreamEncoder { const VideoStreamEncoderSettings& settings, VideoStreamEncoder::BitrateAllocationCallbackType allocation_callback_type, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : VideoStreamEncoder(time_controller->GetClock(), 1 /* number_of_cores */, stats_proxy, @@ -612,7 +612,7 @@ class MockableSendStatisticsProxy : public SendStatisticsProxy { MockableSendStatisticsProxy(Clock* clock, const VideoSendStream::Config& config, VideoEncoderConfig::ContentType content_type, - const WebRtcKeyValueConfig& field_trials) + const FieldTrialsView& field_trials) : SendStatisticsProxy(clock, config, content_type, field_trials) {} VideoSendStream::Stats GetStats() override { @@ -681,7 +681,7 @@ class SimpleVideoStreamEncoderFactory { std::unique_ptr CreateWithEncoderQueue( std::unique_ptr zero_hertz_adapter, std::unique_ptr encoder_queue, - const WebRtcKeyValueConfig* field_trials = nullptr) { + const FieldTrialsView* field_trials = nullptr) { auto result = std::make_unique( time_controller_.GetClock(), /*number_of_cores=*/1,