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 <steveanton@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28324}
diff --git a/api/BUILD.gn b/api/BUILD.gn
index 8829cc5..8e9767d 100644
--- a/api/BUILD.gn
+++ b/api/BUILD.gn
@@ -35,33 +35,32 @@
]
}
-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 0d15e8c..ff08ec8 100644
--- a/api/create_peerconnection_factory.cc
+++ b/api/create_peerconnection_factory.cc
@@ -10,21 +10,14 @@
#include "api/create_peerconnection_factory.h"
-#include <memory>
#include <utility>
-#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 @@
std::unique_ptr<VideoDecoderFactory> video_decoder_factory,
rtc::scoped_refptr<AudioMixer> audio_mixer,
rtc::scoped_refptr<AudioProcessing> audio_processing) {
- if (!audio_processing)
- audio_processing = AudioProcessingBuilder().Create();
-
- std::unique_ptr<cricket::MediaEngineInterface> 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<CallFactoryInterface> call_factory = CreateCallFactory();
-
- std::unique_ptr<RtcEventLogFactoryInterface> 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<RtcEventLogFactory>(
+ 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 40f1276..ac50736 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 b4573d9..1a48e91 100644
--- a/pc/BUILD.gn
+++ b/pc/BUILD.gn
@@ -249,7 +249,6 @@
visibility = [ "*" ]
deps = [
":peerconnection",
- "../api:create_peerconnection_factory",
"../api:libjingle_peerconnection_api",
]
}