Remove HAVE_NO_MEDIA from Obj-C API.
This build configuration is not really supported/tested.
Bug: b/36882554
Change-Id: I8b5b2c93b1cf5e4d6627183c5449437e4589a5ea
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/266741
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#37322}
diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn
index 95221ca..649320a 100644
--- a/sdk/BUILD.gn
+++ b/sdk/BUILD.gn
@@ -758,34 +758,6 @@
}
}
- # Build the PeerConnectionFactory without audio/video support.
- # This target depends on the objc_peeerconnectionfactory_base which still
- # includes some audio/video related objects such as RTCAudioSource because
- # these objects are just thin wrappers of native C++ interfaces required
- # when implementing webrtc::PeerConnectionFactoryInterface and
- # webrtc::PeerConnectionInterface.
- # The applications which only use WebRTC DataChannel can depend on this.
- rtc_library("peerconnectionfactory_no_media_objc") {
- visibility = [ "*" ]
- allow_poison = [
- "audio_codecs", # TODO(bugs.webrtc.org/8396): Remove.
- "default_task_queue",
- ]
- defines = [ "HAVE_NO_MEDIA" ]
-
- sources = [ "objc/helpers/noop.mm" ]
-
- public_configs = [ ":common_config_objc" ]
-
- deps = [
- ":native_api",
- ":native_video",
- ":peerconnectionfactory_base_objc",
- "../api:libjingle_peerconnection_api",
- "../rtc_base",
- ]
- }
-
rtc_library("mediaconstraints_objc") {
configs += [ "..:no_global_constructors" ]
sources = [
@@ -1030,6 +1002,7 @@
"../api/video:video_rtp_headers",
"../api/video_codecs:video_codecs_api",
"../common_video",
+ "../media:rtc_audio_video",
"../media:rtc_media_base",
"../modules/audio_device:audio_device_api",
"../modules/audio_processing",
diff --git a/sdk/objc/api/peerconnection/RTCPeerConnectionFactory.mm b/sdk/objc/api/peerconnection/RTCPeerConnectionFactory.mm
index 99b9363..84c5f02 100644
--- a/sdk/objc/api/peerconnection/RTCPeerConnectionFactory.mm
+++ b/sdk/objc/api/peerconnection/RTCPeerConnectionFactory.mm
@@ -30,36 +30,26 @@
#include "sdk/objc/native/api/ssl_certificate_verifier.h"
#include "system_wrappers/include/field_trial.h"
-#ifndef HAVE_NO_MEDIA
-#import "components/video_codec/RTCVideoDecoderFactoryH264.h"
-#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 "api/audio_codecs/builtin_audio_decoder_factory.h" // nogncheck
-#include "api/audio_codecs/builtin_audio_encoder_factory.h" // nogncheck
+#include "api/audio_codecs/builtin_audio_decoder_factory.h"
+#include "api/audio_codecs/builtin_audio_encoder_factory.h"
#include "api/rtc_event_log/rtc_event_log_factory.h"
#include "api/task_queue/default_task_queue_factory.h"
#include "api/transport/field_trial_based_config.h"
-#include "modules/audio_device/include/audio_device.h" // nogncheck
-#include "modules/audio_processing/include/audio_processing.h" // nogncheck
+#import "components/video_codec/RTCVideoDecoderFactoryH264.h"
+#import "components/video_codec/RTCVideoEncoderFactoryH264.h"
+#include "media/engine/webrtc_media_engine.h"
+#include "modules/audio_device/include/audio_device.h"
+#include "modules/audio_processing/include/audio_processing.h"
#include "sdk/objc/native/api/video_decoder_factory.h"
#include "sdk/objc/native/api/video_encoder_factory.h"
#include "sdk/objc/native/src/objc_video_decoder_factory.h"
#include "sdk/objc/native/src/objc_video_encoder_factory.h"
-#endif
#if defined(WEBRTC_IOS)
#import "sdk/objc/native/api/audio_device_module.h"
#endif
-// Adding the nogncheck to disable the including header check.
-// The no-media version PeerConnectionFactory doesn't depend on media related
-// C++ target.
-// TODO(zhihuang): Remove nogncheck once MediaEngineInterface is moved to C++
-// API layer.
-#include "media/engine/webrtc_media_engine.h" // nogncheck
-
@implementation RTC_OBJC_TYPE (RTCPeerConnectionFactory) {
std::unique_ptr<rtc::Thread> _networkThread;
std::unique_ptr<rtc::Thread> _workerThread;
@@ -78,9 +68,6 @@
}
- (instancetype)init {
-#ifdef HAVE_NO_MEDIA
- return [self initWithNoMedia];
-#else
return [self
initWithNativeAudioEncoderFactory:webrtc::CreateBuiltinAudioEncoderFactory()
nativeAudioDecoderFactory:webrtc::CreateBuiltinAudioDecoderFactory()
@@ -90,15 +77,11 @@
RTCVideoDecoderFactoryH264) alloc] init])
audioDeviceModule:[self audioDeviceModule].get()
audioProcessingModule:nullptr];
-#endif
}
- (instancetype)
initWithEncoderFactory:(nullable id<RTC_OBJC_TYPE(RTCVideoEncoderFactory)>)encoderFactory
decoderFactory:(nullable id<RTC_OBJC_TYPE(RTCVideoDecoderFactory)>)decoderFactory {
-#ifdef HAVE_NO_MEDIA
- return [self initWithNoMedia];
-#else
std::unique_ptr<webrtc::VideoEncoderFactory> native_encoder_factory;
std::unique_ptr<webrtc::VideoDecoderFactory> native_decoder_factory;
if (encoderFactory) {
@@ -113,7 +96,6 @@
nativeVideoDecoderFactory:std::move(native_decoder_factory)
audioDeviceModule:[self audioDeviceModule].get()
audioProcessingModule:nullptr];
-#endif
}
- (instancetype)initNative {
if (self = [super init]) {
@@ -191,7 +173,6 @@
if (webrtc::field_trial::IsEnabled("WebRTC-Network-UseNWPathMonitor")) {
dependencies.network_monitor_factory = webrtc::CreateNetworkMonitorFactory();
}
-#ifndef HAVE_NO_MEDIA
dependencies.task_queue_factory = webrtc::CreateDefaultTaskQueueFactory();
dependencies.trials = std::make_unique<webrtc::FieldTrialBasedConfig>();
cricket::MediaEngineDependencies media_deps;
@@ -212,7 +193,6 @@
dependencies.event_log_factory =
std::make_unique<webrtc::RtcEventLogFactory>(dependencies.task_queue_factory.get());
dependencies.network_controller_factory = std::move(networkControllerFactory);
-#endif
_nativeFactory = webrtc::CreateModularPeerConnectionFactory(std::move(dependencies));
NSAssert(_nativeFactory, @"Failed to initialize PeerConnectionFactory!");
}
diff --git a/sdk/objc/unittests/RTCPeerConnectionFactoryBuilderTest.mm b/sdk/objc/unittests/RTCPeerConnectionFactoryBuilderTest.mm
index 1ec004b..5ba5a52 100644
--- a/sdk/objc/unittests/RTCPeerConnectionFactoryBuilderTest.mm
+++ b/sdk/objc/unittests/RTCPeerConnectionFactoryBuilderTest.mm
@@ -39,9 +39,6 @@
- (void)testBuilder {
id factoryMock = OCMStrictClassMock([RTC_OBJC_TYPE(RTCPeerConnectionFactory) class]);
OCMExpect([factoryMock alloc]).andReturn(factoryMock);
-#ifdef HAVE_NO_MEDIA
- RTC_UNUSED([[[factoryMock expect] andReturn:factoryMock] initWithNoMedia]);
-#else
RTC_UNUSED([[[[factoryMock expect] andReturn:factoryMock] ignoringNonObjectArgs]
initWithNativeAudioEncoderFactory:nullptr
nativeAudioDecoderFactory:nullptr
@@ -49,7 +46,6 @@
nativeVideoDecoderFactory:nullptr
audioDeviceModule:nullptr
audioProcessingModule:nullptr]);
-#endif
RTCPeerConnectionFactoryBuilder* builder = [[RTCPeerConnectionFactoryBuilder alloc] init];
RTC_OBJC_TYPE(RTCPeerConnectionFactory)* peerConnectionFactory =
[builder createPeerConnectionFactory];
@@ -60,9 +56,6 @@
- (void)testDefaultComponentsBuilder {
id factoryMock = OCMStrictClassMock([RTC_OBJC_TYPE(RTCPeerConnectionFactory) class]);
OCMExpect([factoryMock alloc]).andReturn(factoryMock);
-#ifdef HAVE_NO_MEDIA
- RTC_UNUSED([[[factoryMock expect] andReturn:factoryMock] initWithNoMedia]);
-#else
RTC_UNUSED([[[[factoryMock expect] andReturn:factoryMock] ignoringNonObjectArgs]
initWithNativeAudioEncoderFactory:nullptr
nativeAudioDecoderFactory:nullptr
@@ -70,7 +63,6 @@
nativeVideoDecoderFactory:nullptr
audioDeviceModule:nullptr
audioProcessingModule:nullptr]);
-#endif
RTCPeerConnectionFactoryBuilder* builder = [RTCPeerConnectionFactoryBuilder defaultBuilder];
RTC_OBJC_TYPE(RTCPeerConnectionFactory)* peerConnectionFactory =
[builder createPeerConnectionFactory];