Wrap WebRTC OBJC API types with RTC_OBJC_TYPE.
This CL introduced 2 new macros that affect the WebRTC OBJC API symbols:
- RTC_OBJC_TYPE_PREFIX:
Macro used to prepend a prefix to the API types that are exported with
RTC_OBJC_EXPORT.
Clients can patch the definition of this macro locally and build
WebRTC.framework with their own prefix in case symbol clashing is a
problem.
This macro must only be defined by changing the value in
sdk/objc/base/RTCMacros.h and not on via compiler flag to ensure
it has a unique value.
- RCT_OBJC_TYPE:
Macro used internally to reference API types. Declaring an API type
without using this macro will not include the declared type in the
set of types that will be affected by the configurable
RTC_OBJC_TYPE_PREFIX.
Manual changes:
https://webrtc-review.googlesource.com/c/src/+/173781/5..10
The auto-generated changes in PS#5 have been done with:
https://webrtc-review.googlesource.com/c/src/+/174061.
Bug: None
Change-Id: I0d54ca94db764fb3b6cb4365873f79e14cd879b8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/173781
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31153}
diff --git a/examples/objcnativeapi/objc/NADViewController.mm b/examples/objcnativeapi/objc/NADViewController.mm
index d96f649..7f6ffbb 100644
--- a/examples/objcnativeapi/objc/NADViewController.mm
+++ b/examples/objcnativeapi/objc/NADViewController.mm
@@ -24,9 +24,9 @@
@interface NADViewController ()
-@property(nonatomic) RTCCameraVideoCapturer *capturer;
-@property(nonatomic) RTCCameraPreviewView *localVideoView;
-@property(nonatomic) __kindof UIView<RTCVideoRenderer> *remoteVideoView;
+@property(nonatomic) RTC_OBJC_TYPE(RTCCameraVideoCapturer) * capturer;
+@property(nonatomic) RTC_OBJC_TYPE(RTCCameraPreviewView) * localVideoView;
+@property(nonatomic) __kindof UIView<RTC_OBJC_TYPE(RTCVideoRenderer)> *remoteVideoView;
@property(nonatomic) UIButton *callButton;
@property(nonatomic) UIButton *hangUpButton;
@@ -50,14 +50,14 @@
_view = [[UIView alloc] initWithFrame:CGRectZero];
#if defined(RTC_SUPPORTS_METAL)
- _remoteVideoView = [[RTCMTLVideoView alloc] initWithFrame:CGRectZero];
+ _remoteVideoView = [[RTC_OBJC_TYPE(RTCMTLVideoView) alloc] initWithFrame:CGRectZero];
#else
- _remoteVideoView = [[RTCEAGLVideoView alloc] initWithFrame:CGRectZero];
+ _remoteVideoView = [[RTC_OBJC_TYPE(RTCEAGLVideoView) alloc] initWithFrame:CGRectZero];
#endif
_remoteVideoView.translatesAutoresizingMaskIntoConstraints = NO;
[_view addSubview:_remoteVideoView];
- _localVideoView = [[RTCCameraPreviewView alloc] initWithFrame:CGRectZero];
+ _localVideoView = [[RTC_OBJC_TYPE(RTCCameraPreviewView) alloc] initWithFrame:CGRectZero];
_localVideoView.translatesAutoresizingMaskIntoConstraints = NO;
[_view addSubview:_localVideoView];
@@ -106,14 +106,15 @@
- (void)viewDidLoad {
[super viewDidLoad];
- self.capturer = [[RTCCameraVideoCapturer alloc] init];
+ self.capturer = [[RTC_OBJC_TYPE(RTCCameraVideoCapturer) alloc] init];
self.localVideoView.captureSession = self.capturer.captureSession;
_call_client.reset(new webrtc_examples::ObjCCallClient());
// Start capturer.
AVCaptureDevice *selectedDevice = nil;
- NSArray<AVCaptureDevice *> *captureDevices = [RTCCameraVideoCapturer captureDevices];
+ NSArray<AVCaptureDevice *> *captureDevices =
+ [RTC_OBJC_TYPE(RTCCameraVideoCapturer) captureDevices];
for (AVCaptureDevice *device in captureDevices) {
if (device.position == AVCaptureDevicePositionFront) {
selectedDevice = device;
@@ -126,7 +127,7 @@
int targetHeight = 480;
int currentDiff = INT_MAX;
NSArray<AVCaptureDeviceFormat *> *formats =
- [RTCCameraVideoCapturer supportedFormatsForDevice:selectedDevice];
+ [RTC_OBJC_TYPE(RTCCameraVideoCapturer) supportedFormatsForDevice:selectedDevice];
for (AVCaptureDeviceFormat *format in formats) {
CMVideoDimensions dimension = CMVideoFormatDescriptionGetDimensions(format.formatDescription);
FourCharCode pixelFormat = CMFormatDescriptionGetMediaSubType(format.formatDescription);
diff --git a/examples/objcnativeapi/objc/objc_call_client.h b/examples/objcnativeapi/objc/objc_call_client.h
index de7e5fd..90ac20a 100644
--- a/examples/objcnativeapi/objc/objc_call_client.h
+++ b/examples/objcnativeapi/objc/objc_call_client.h
@@ -14,13 +14,16 @@
#include <memory>
#include <string>
+#import "sdk/objc/base/RTCMacros.h"
+
#include "api/peer_connection_interface.h"
#include "api/scoped_refptr.h"
#include "rtc_base/critical_section.h"
#include "rtc_base/thread_checker.h"
-@class RTCVideoCapturer;
-@protocol RTCVideoRenderer;
+@class RTC_OBJC_TYPE(RTCVideoCapturer);
+@protocol RTC_OBJC_TYPE
+(RTCVideoRenderer);
namespace webrtc_examples {
@@ -28,7 +31,8 @@
public:
ObjCCallClient();
- void Call(RTCVideoCapturer* capturer, id<RTCVideoRenderer> remote_renderer);
+ void Call(RTC_OBJC_TYPE(RTCVideoCapturer) * capturer,
+ id<RTC_OBJC_TYPE(RTCVideoRenderer)> remote_renderer);
void Hangup();
private:
diff --git a/examples/objcnativeapi/objc/objc_call_client.mm b/examples/objcnativeapi/objc/objc_call_client.mm
index 4be30bb..52ee2b5 100644
--- a/examples/objcnativeapi/objc/objc_call_client.mm
+++ b/examples/objcnativeapi/objc/objc_call_client.mm
@@ -64,7 +64,8 @@
CreatePeerConnectionFactory();
}
-void ObjCCallClient::Call(RTCVideoCapturer* capturer, id<RTCVideoRenderer> remote_renderer) {
+void ObjCCallClient::Call(RTC_OBJC_TYPE(RTCVideoCapturer) * capturer,
+ id<RTC_OBJC_TYPE(RTCVideoRenderer)> remote_renderer) {
RTC_DCHECK_RUN_ON(&thread_checker_);
rtc::CritScope lock(&pc_mutex_);
@@ -122,10 +123,10 @@
media_deps.task_queue_factory = dependencies.task_queue_factory.get();
media_deps.audio_encoder_factory = webrtc::CreateBuiltinAudioEncoderFactory();
media_deps.audio_decoder_factory = webrtc::CreateBuiltinAudioDecoderFactory();
- media_deps.video_encoder_factory =
- webrtc::ObjCToNativeVideoEncoderFactory([[RTCDefaultVideoEncoderFactory alloc] init]);
- media_deps.video_decoder_factory =
- webrtc::ObjCToNativeVideoDecoderFactory([[RTCDefaultVideoDecoderFactory alloc] init]);
+ media_deps.video_encoder_factory = webrtc::ObjCToNativeVideoEncoderFactory(
+ [[RTC_OBJC_TYPE(RTCDefaultVideoEncoderFactory) alloc] init]);
+ media_deps.video_decoder_factory = webrtc::ObjCToNativeVideoDecoderFactory(
+ [[RTC_OBJC_TYPE(RTCDefaultVideoDecoderFactory) alloc] init]);
media_deps.audio_processing = webrtc::AudioProcessingBuilder().Create();
dependencies.media_engine = cricket::CreateMediaEngine(std::move(media_deps));
RTC_LOG(LS_INFO) << "Media engine created: " << dependencies.media_engine.get();