From 5bf58064f2970420129b7bf24121755772d0b159 Mon Sep 17 00:00:00 2001 From: Danil Chapovalov Date: Tue, 18 Jun 2019 16:43:37 +0200 Subject: [PATCH] Force DefaultTaskQueueFactory in legacy CreatePeerConnectionFactory Users that would like custom TaskQueueFactory (e.g. chromium) should use CreateModularPeerConnectionFactory directly Bug: webrtc:10284 Change-Id: I7ba55a0f21560d4beb71a7f93f6fa70b0fe74931 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/142234 Reviewed-by: Steve Anton Commit-Queue: Danil Chapovalov Cr-Commit-Position: refs/heads/master@{#28324} --- api/BUILD.gn | 53 ++++++++++++++-------------- api/create_peerconnection_factory.cc | 50 +++++++++++++------------- api/create_peerconnection_factory.h | 5 ++- pc/BUILD.gn | 1 - 4 files changed, 52 insertions(+), 57 deletions(-) diff --git a/api/BUILD.gn b/api/BUILD.gn index 8829cc5c06..8e9767d40f 100644 --- a/api/BUILD.gn +++ b/api/BUILD.gn @@ -35,33 +35,32 @@ rtc_source_set("callfactory_api") { ] } -rtc_static_library("create_peerconnection_factory") { - visibility = [ "*" ] - sources = [ - "create_peerconnection_factory.cc", - "create_peerconnection_factory.h", - ] - deps = [ - ":callfactory_api", - ":fec_controller_api", - ":libjingle_peerconnection_api", - ":network_state_predictor_api", - ":scoped_refptr", - "../logging:rtc_event_log_api", - "../logging:rtc_event_log_impl_base", - "../media:rtc_audio_video", - "../media:rtc_media_base", - "../modules/audio_device:audio_device_api", - "../modules/audio_processing:api", - "../pc:peerconnection", - "../rtc_base", - "../rtc_base:deprecation", - "../rtc_base:rtc_base_approved", - "audio:audio_mixer_api", - "audio_codecs:audio_codecs_api", - "transport:network_control", - "video_codecs:video_codecs_api", - ] +if (!build_with_chromium) { + rtc_static_library("create_peerconnection_factory") { + visibility = [ "*" ] + sources = [ + "create_peerconnection_factory.cc", + "create_peerconnection_factory.h", + ] + deps = [ + ":callfactory_api", + ":libjingle_peerconnection_api", + ":scoped_refptr", + "../api/rtc_event_log:rtc_event_log_factory", + "../media:rtc_audio_video", + "../media:rtc_media_base", + "../modules/audio_device:audio_device_api", + "../modules/audio_processing:api", + "../pc:peerconnection", + "../rtc_base", + "../rtc_base:rtc_base_approved", + "audio:audio_mixer_api", + "audio_codecs:audio_codecs_api", + "task_queue:default_task_queue_factory", + "video_codecs:video_codecs_api", + "//third_party/abseil-cpp/absl/memory", + ] + } } rtc_source_set("rtp_headers") { diff --git a/api/create_peerconnection_factory.cc b/api/create_peerconnection_factory.cc index 0d15e8cadf..ff08ec8fe8 100644 --- a/api/create_peerconnection_factory.cc +++ b/api/create_peerconnection_factory.cc @@ -10,21 +10,14 @@ #include "api/create_peerconnection_factory.h" -#include #include -#include "api/audio/audio_mixer.h" -#include "api/audio_codecs/audio_decoder_factory.h" -#include "api/audio_codecs/audio_encoder_factory.h" +#include "absl/memory/memory.h" #include "api/call/call_factory_interface.h" -#include "api/fec_controller.h" #include "api/peer_connection_interface.h" +#include "api/rtc_event_log/rtc_event_log_factory.h" #include "api/scoped_refptr.h" -#include "api/transport/network_control.h" -#include "api/video_codecs/video_decoder_factory.h" -#include "api/video_codecs/video_encoder_factory.h" -#include "logging/rtc_event_log/rtc_event_log_factory.h" -#include "logging/rtc_event_log/rtc_event_log_factory_interface.h" +#include "api/task_queue/default_task_queue_factory.h" #include "media/base/media_engine.h" #include "media/engine/webrtc_media_engine.h" #include "modules/audio_device/include/audio_device.h" @@ -44,26 +37,31 @@ rtc::scoped_refptr CreatePeerConnectionFactory( std::unique_ptr video_decoder_factory, rtc::scoped_refptr audio_mixer, rtc::scoped_refptr audio_processing) { - if (!audio_processing) - audio_processing = AudioProcessingBuilder().Create(); - - std::unique_ptr media_engine = - cricket::WebRtcMediaEngineFactory::Create( - default_adm, audio_encoder_factory, audio_decoder_factory, - std::move(video_encoder_factory), std::move(video_decoder_factory), - audio_mixer, audio_processing); - - std::unique_ptr call_factory = CreateCallFactory(); - - std::unique_ptr event_log_factory = - CreateRtcEventLogFactory(); PeerConnectionFactoryDependencies dependencies; dependencies.network_thread = network_thread; dependencies.worker_thread = worker_thread; dependencies.signaling_thread = signaling_thread; - dependencies.media_engine = std::move(media_engine); - dependencies.call_factory = std::move(call_factory); - dependencies.event_log_factory = std::move(event_log_factory); + dependencies.task_queue_factory = CreateDefaultTaskQueueFactory(); + dependencies.call_factory = CreateCallFactory(); + dependencies.event_log_factory = absl::make_unique( + dependencies.task_queue_factory.get()); + + cricket::MediaEngineDependencies media_dependencies; + media_dependencies.task_queue_factory = dependencies.task_queue_factory.get(); + media_dependencies.adm = std::move(default_adm); + media_dependencies.audio_encoder_factory = std::move(audio_encoder_factory); + media_dependencies.audio_decoder_factory = std::move(audio_decoder_factory); + if (audio_processing) { + media_dependencies.audio_processing = std::move(audio_processing); + } else { + media_dependencies.audio_processing = AudioProcessingBuilder().Create(); + } + media_dependencies.audio_mixer = std::move(audio_mixer); + media_dependencies.video_encoder_factory = std::move(video_encoder_factory); + media_dependencies.video_decoder_factory = std::move(video_decoder_factory); + dependencies.media_engine = + cricket::CreateMediaEngine(std::move(media_dependencies)); + return CreateModularPeerConnectionFactory(std::move(dependencies)); } diff --git a/api/create_peerconnection_factory.h b/api/create_peerconnection_factory.h index 40f1276242..ac50736b80 100644 --- a/api/create_peerconnection_factory.h +++ b/api/create_peerconnection_factory.h @@ -16,11 +16,10 @@ #include "api/audio/audio_mixer.h" #include "api/audio_codecs/audio_decoder_factory.h" #include "api/audio_codecs/audio_encoder_factory.h" -#include "api/fec_controller.h" #include "api/peer_connection_interface.h" #include "api/scoped_refptr.h" -#include "api/transport/network_control.h" -#include "rtc_base/deprecation.h" +#include "api/video_codecs/video_decoder_factory.h" +#include "api/video_codecs/video_encoder_factory.h" namespace rtc { // TODO(bugs.webrtc.org/9987): Move rtc::Thread to api/ or expose a better diff --git a/pc/BUILD.gn b/pc/BUILD.gn index b4573d9a39..1a48e91888 100644 --- a/pc/BUILD.gn +++ b/pc/BUILD.gn @@ -249,7 +249,6 @@ rtc_source_set("libjingle_peerconnection") { visibility = [ "*" ] deps = [ ":peerconnection", - "../api:create_peerconnection_factory", "../api:libjingle_peerconnection_api", ] }