diff --git a/call/call.cc b/call/call.cc index 3f7ef5ff22..e458c48391 100644 --- a/call/call.cc +++ b/call/call.cc @@ -424,16 +424,20 @@ std::string Call::Stats::ToString(int64_t time_ms) const { } Call* Call::Create(const Call::Config& config) { - return Create( - config, Clock::GetRealTimeClock(), ProcessThread::Create("PacerThread"), - ProcessThread::Create("ModuleProcessThread"), &GlobalTaskQueueFactory()); + return Create(config, Clock::GetRealTimeClock(), + ProcessThread::Create("PacerThread"), + ProcessThread::Create("ModuleProcessThread")); } Call* Call::Create(const Call::Config& config, Clock* clock, std::unique_ptr call_thread, - std::unique_ptr pacer_thread, - TaskQueueFactory* task_queue_factory) { + std::unique_ptr pacer_thread) { + // TODO(bugs.webrtc.org/10284): DCHECK task_queue_factory dependency is + // always provided in the config. + TaskQueueFactory* task_queue_factory = config.task_queue_factory + ? config.task_queue_factory + : &GlobalTaskQueueFactory(); return new internal::Call( clock, config, absl::make_unique( diff --git a/call/call.h b/call/call.h index 90977dab2c..1c29feec0f 100644 --- a/call/call.h +++ b/call/call.h @@ -16,7 +16,6 @@ #include #include "api/media_types.h" -#include "api/task_queue/task_queue_factory.h" #include "call/audio_receive_stream.h" #include "call/audio_send_stream.h" #include "call/call_config.h" @@ -54,8 +53,7 @@ class Call { static Call* Create(const Call::Config& config, Clock* clock, std::unique_ptr call_thread, - std::unique_ptr pacer_thread, - TaskQueueFactory* task_queue_factory); + std::unique_ptr pacer_thread); virtual AudioSendStream* CreateAudioSendStream( const AudioSendStream::Config& config) = 0; diff --git a/call/call_config.h b/call/call_config.h index 260a3accdd..eaac16b317 100644 --- a/call/call_config.h +++ b/call/call_config.h @@ -13,6 +13,7 @@ #include "api/bitrate_constraints.h" #include "api/fec_controller.h" #include "api/rtc_error.h" +#include "api/task_queue/task_queue_factory.h" #include "api/transport/network_control.h" #include "call/audio_state.h" @@ -45,6 +46,9 @@ struct CallConfig { // FecController to use for this call. FecControllerFactoryInterface* fec_controller_factory = nullptr; + // Task Queue Factory to be used in this call. + TaskQueueFactory* task_queue_factory = nullptr; + // Network controller factory to use for this call. NetworkControllerFactoryInterface* network_controller_factory = nullptr; }; diff --git a/test/scenario/call_client.cc b/test/scenario/call_client.cc index 7df4e030de..47da762069 100644 --- a/test/scenario/call_client.cc +++ b/test/scenario/call_client.cc @@ -60,12 +60,12 @@ Call* CreateCall(TimeController* time_controller, config.transport.rates.min_rate.bps(); call_config.bitrate_config.start_bitrate_bps = config.transport.rates.start_rate.bps(); + call_config.task_queue_factory = time_controller->GetTaskQueueFactory(); call_config.network_controller_factory = network_controller_factory; call_config.audio_state = audio_state; return Call::Create(call_config, time_controller->GetClock(), time_controller->CreateProcessThread("CallModules"), - time_controller->CreateProcessThread("Pacer"), - time_controller->GetTaskQueueFactory()); + time_controller->CreateProcessThread("Pacer")); } }