diff --git a/call/BUILD.gn b/call/BUILD.gn index 4cc42fd99f..39ae7692fb 100644 --- a/call/BUILD.gn +++ b/call/BUILD.gn @@ -57,6 +57,7 @@ rtc_library("call_interfaces") { "../api/audio_codecs:audio_codecs_api", "../api/crypto:frame_encryptor_interface", "../api/crypto:options", + "../api/environment", "../api/metronome", "../api/neteq:neteq_api", "../api/task_queue", @@ -486,8 +487,8 @@ if (rtc_include_tests) { "../api:rtp_parameters", "../api:transport_api", "../api/audio_codecs:builtin_audio_decoder_factory", - "../api/rtc_event_log", - "../api/task_queue:default_task_queue_factory", + "../api/environment", + "../api/environment:environment_factory", "../api/test/video:function_video_factory", "../api/transport:field_trial_based_config", "../api/units:timestamp", diff --git a/call/call.cc b/call/call.cc index 071b34e009..42b3b988ea 100644 --- a/call/call.cc +++ b/call/call.cc @@ -474,7 +474,8 @@ std::string Call::Stats::ToString(int64_t time_ms) const { } std::unique_ptr Call::Create(const CallConfig& config) { - Clock* clock = Clock::GetRealTimeClock(); + Clock* clock = + config.env.has_value() ? &config.env->clock() : Clock::GetRealTimeClock(); return Create(config, clock, RtpTransportControllerSendFactory().Create( config.ExtractTransportConfig(), clock)); diff --git a/call/call_config.cc b/call/call_config.cc index 23b60ce436..5832969b9c 100644 --- a/call/call_config.cc +++ b/call/call_config.cc @@ -14,6 +14,14 @@ namespace webrtc { +CallConfig::CallConfig(const Environment& env, + TaskQueueBase* network_task_queue) + : env(env), + event_log(&env.event_log()), + task_queue_factory(&env.task_queue_factory()), + trials(&env.field_trials()), + network_task_queue_(network_task_queue) {} + CallConfig::CallConfig(RtcEventLog* event_log, TaskQueueBase* network_task_queue /* = nullptr*/) : event_log(event_log), network_task_queue_(network_task_queue) { diff --git a/call/call_config.h b/call/call_config.h index 6b1c1927d6..1b1f696fee 100644 --- a/call/call_config.h +++ b/call/call_config.h @@ -10,6 +10,8 @@ #ifndef CALL_CALL_CONFIG_H_ #define CALL_CALL_CONFIG_H_ +#include "absl/types/optional.h" +#include "api/environment/environment.h" #include "api/fec_controller.h" #include "api/field_trials_view.h" #include "api/metronome/metronome.h" @@ -32,12 +34,23 @@ struct CallConfig { // If `network_task_queue` is set to nullptr, Call will assume that network // related callbacks will be made on the same TQ as the Call instance was // constructed on. + explicit CallConfig(const Environment& env, + TaskQueueBase* network_task_queue = nullptr); + + // TODO(bugs.webrtc.org/15656): Deprecate and delete constructor below. explicit CallConfig(RtcEventLog* event_log, TaskQueueBase* network_task_queue = nullptr); + CallConfig(const CallConfig&); - RtpTransportConfig ExtractTransportConfig() const; + ~CallConfig(); + RtpTransportConfig ExtractTransportConfig() const; + + // TODO(bugs.webrtc.org/15656): Make non-optional when constructor that + // doesn't pass Environment is removed. + absl::optional env; + // Bitrate config used until valid bitrate estimates are calculated. Also // used to cap total bitrate used. This comes from the remote connection. BitrateConstraints bitrate_config; diff --git a/call/call_unittest.cc b/call/call_unittest.cc index 886a15aaf0..41394b9689 100644 --- a/call/call_unittest.cc +++ b/call/call_unittest.cc @@ -17,12 +17,11 @@ #include "absl/strings/string_view.h" #include "api/audio_codecs/builtin_audio_decoder_factory.h" +#include "api/environment/environment.h" +#include "api/environment/environment_factory.h" #include "api/media_types.h" -#include "api/rtc_event_log/rtc_event_log.h" -#include "api/task_queue/default_task_queue_factory.h" #include "api/test/mock_audio_mixer.h" #include "api/test/video/function_video_encoder_factory.h" -#include "api/transport/field_trial_based_config.h" #include "api/units/timestamp.h" #include "api/video/builtin_video_bitrate_allocator_factory.h" #include "audio/audio_receive_stream.h" @@ -54,7 +53,6 @@ using ::webrtc::test::RunLoop; struct CallHelper { explicit CallHelper(bool use_null_audio_processing) { - task_queue_factory_ = CreateDefaultTaskQueueFactory(); AudioState::Config audio_state_config; audio_state_config.audio_mixer = rtc::make_ref_counted(); audio_state_config.audio_processing = @@ -63,10 +61,8 @@ struct CallHelper { : rtc::make_ref_counted>(); audio_state_config.audio_device_module = rtc::make_ref_counted(); - CallConfig config(&event_log_); + CallConfig config(CreateEnvironment()); config.audio_state = AudioState::Create(audio_state_config); - config.task_queue_factory = task_queue_factory_.get(); - config.trials = &field_trials_; call_ = Call::Create(config); } @@ -74,9 +70,6 @@ struct CallHelper { private: RunLoop loop_; - RtcEventLogNull event_log_; - FieldTrialBasedConfig field_trials_; - std::unique_ptr task_queue_factory_; std::unique_ptr call_; };