Use single argument PeerConnectionFactory factory in objc code
Bug: webrtc:10284
Change-Id: If656af94636731d1caa208db78e460740edbf83c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/137422
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28002}
diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn
index 4cd3783..784101e 100644
--- a/sdk/BUILD.gn
+++ b/sdk/BUILD.gn
@@ -912,6 +912,7 @@
"../api/audio_codecs:audio_codecs_api",
"../api/audio_codecs:builtin_audio_decoder_factory",
"../api/audio_codecs:builtin_audio_encoder_factory",
+ "../api/task_queue:default_task_queue_factory",
"../api/video:video_frame",
"../api/video_codecs:video_codecs_api",
"../common_video",
diff --git a/sdk/objc/api/peerconnection/RTCPeerConnectionFactory.mm b/sdk/objc/api/peerconnection/RTCPeerConnectionFactory.mm
index 18d211f..7fcd3c5 100644
--- a/sdk/objc/api/peerconnection/RTCPeerConnectionFactory.mm
+++ b/sdk/objc/api/peerconnection/RTCPeerConnectionFactory.mm
@@ -28,8 +28,10 @@
#import "components/video_codec/RTCVideoEncoderFactoryH264.h"
// The no-media version PeerConnectionFactory doesn't depend on these files, but the gn check tool
// is not smart enough to take the #ifdef into account.
+#include "absl/memory/memory.h"
#include "api/audio_codecs/builtin_audio_decoder_factory.h" // nogncheck
#include "api/audio_codecs/builtin_audio_encoder_factory.h" // nogncheck
+#include "api/task_queue/default_task_queue_factory.h"
#include "logging/rtc_event_log/rtc_event_log_factory.h"
#include "modules/audio_device/include/audio_device.h" // nogncheck
#include "modules/audio_processing/include/audio_processing.h" // nogncheck
@@ -139,13 +141,11 @@
- (instancetype)initWithNoMedia {
if (self = [self initNative]) {
- _nativeFactory = webrtc::CreateModularPeerConnectionFactory(
- _networkThread.get(),
- _workerThread.get(),
- _signalingThread.get(),
- std::unique_ptr<cricket::MediaEngineInterface>(),
- std::unique_ptr<webrtc::CallFactoryInterface>(),
- std::unique_ptr<webrtc::RtcEventLogFactoryInterface>());
+ webrtc::PeerConnectionFactoryDependencies dependencies;
+ dependencies.network_thread = _networkThread.get();
+ dependencies.worker_thread = _workerThread.get();
+ dependencies.signaling_thread = _signalingThread.get();
+ _nativeFactory = webrtc::CreateModularPeerConnectionFactory(std::move(dependencies));
NSAssert(_nativeFactory, @"Failed to initialize PeerConnectionFactory!");
}
return self;
@@ -209,39 +209,36 @@
networkControllerFactory
mediaTransportFactory:(std::unique_ptr<webrtc::MediaTransportFactory>)
mediaTransportFactory {
-#ifdef HAVE_NO_MEDIA
- return [self initWithNoMedia];
-#else
if (self = [self initNative]) {
- if (!audioProcessingModule) audioProcessingModule = webrtc::AudioProcessingBuilder().Create();
-
- std::unique_ptr<cricket::MediaEngineInterface> media_engine =
- cricket::WebRtcMediaEngineFactory::Create(audioDeviceModule,
- audioEncoderFactory,
- audioDecoderFactory,
- std::move(videoEncoderFactory),
- std::move(videoDecoderFactory),
- nullptr, // audio mixer
- audioProcessingModule);
-
- std::unique_ptr<webrtc::CallFactoryInterface> call_factory = webrtc::CreateCallFactory();
-
- std::unique_ptr<webrtc::RtcEventLogFactoryInterface> event_log_factory =
- webrtc::CreateRtcEventLogFactory();
webrtc::PeerConnectionFactoryDependencies dependencies;
dependencies.network_thread = _networkThread.get();
dependencies.worker_thread = _workerThread.get();
dependencies.signaling_thread = _signalingThread.get();
- dependencies.media_engine = std::move(media_engine);
- dependencies.call_factory = std::move(call_factory);
- dependencies.event_log_factory = std::move(event_log_factory);
+#ifndef HAVE_NO_MEDIA
+ dependencies.task_queue_factory = webrtc::CreateDefaultTaskQueueFactory();
+ cricket::MediaEngineDependencies media_deps;
+ media_deps.adm = std::move(audioDeviceModule);
+ media_deps.task_queue_factory = dependencies.task_queue_factory.get();
+ media_deps.audio_encoder_factory = std::move(audioEncoderFactory);
+ media_deps.audio_decoder_factory = std::move(audioDecoderFactory);
+ media_deps.video_encoder_factory = std::move(videoEncoderFactory);
+ media_deps.video_decoder_factory = std::move(videoDecoderFactory);
+ if (audioProcessingModule) {
+ media_deps.audio_processing = std::move(audioProcessingModule);
+ } else {
+ media_deps.audio_processing = webrtc::AudioProcessingBuilder().Create();
+ }
+ dependencies.media_engine = cricket::CreateMediaEngine(std::move(media_deps));
+ dependencies.call_factory = webrtc::CreateCallFactory();
+ dependencies.event_log_factory =
+ absl::make_unique<webrtc::RtcEventLogFactory>(dependencies.task_queue_factory.get());
dependencies.network_controller_factory = std::move(networkControllerFactory);
dependencies.media_transport_factory = std::move(mediaTransportFactory);
+#endif
_nativeFactory = webrtc::CreateModularPeerConnectionFactory(std::move(dependencies));
NSAssert(_nativeFactory, @"Failed to initialize PeerConnectionFactory!");
}
return self;
-#endif
}
- (RTCAudioSource *)audioSourceWithConstraints:(nullable RTCMediaConstraints *)constraints {