diff --git a/webrtc/examples/objc/AppRTCMobile/ios/ARDVideoCallView.h b/webrtc/examples/objc/AppRTCMobile/ios/ARDVideoCallView.h index dec1bfcba0..d76805f104 100644 --- a/webrtc/examples/objc/AppRTCMobile/ios/ARDVideoCallView.h +++ b/webrtc/examples/objc/AppRTCMobile/ios/ARDVideoCallView.h @@ -10,8 +10,8 @@ #import -#import "WebRTC/RTCCameraPreviewView.h" -#import "WebRTC/RTCEAGLVideoView.h" +#import +#import #import "ARDStatsView.h" @@ -38,7 +38,7 @@ @property(nonatomic, readonly) UILabel *statusLabel; @property(nonatomic, readonly) RTCCameraPreviewView *localVideoView; -@property(nonatomic, readonly) RTCEAGLVideoView *remoteVideoView; +@property(nonatomic, readonly) __kindof UIView *remoteVideoView; @property(nonatomic, readonly) ARDStatsView *statsView; @property(nonatomic, weak) id delegate; diff --git a/webrtc/examples/objc/AppRTCMobile/ios/ARDVideoCallView.m b/webrtc/examples/objc/AppRTCMobile/ios/ARDVideoCallView.m index 6e5fc597e9..869d29cb6c 100644 --- a/webrtc/examples/objc/AppRTCMobile/ios/ARDVideoCallView.m +++ b/webrtc/examples/objc/AppRTCMobile/ios/ARDVideoCallView.m @@ -11,6 +11,10 @@ #import "ARDVideoCallView.h" #import + +#import +#import + #import "UIImage+ARDUtilities.h" static CGFloat const kButtonPadding = 16; @@ -38,8 +42,15 @@ static CGFloat const kStatusBarHeight = 20; - (instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { - _remoteVideoView = [[RTCEAGLVideoView alloc] initWithFrame:CGRectZero]; - _remoteVideoView.delegate = self; + +#if defined(RTC_SUPPORTS_METAL) + _remoteVideoView = [[RTCMTLVideoView alloc] initWithFrame:CGRectZero]; +#else + RTCEAGLVideoView *remoteView = [[RTCEAGLVideoView alloc] initWithFrame:CGRectZero]; + remoteView.delegate = self; + _remoteVideoView = remoteView; +#endif + [self addSubview:_remoteVideoView]; _localVideoView = [[RTCCameraPreviewView alloc] initWithFrame:CGRectZero]; diff --git a/webrtc/sdk/objc/Framework/Classes/Metal/RTCMTLVideoView.m b/webrtc/sdk/objc/Framework/Classes/Metal/RTCMTLVideoView.m index 2a18736b25..63ef23ad49 100644 --- a/webrtc/sdk/objc/Framework/Classes/Metal/RTCMTLVideoView.m +++ b/webrtc/sdk/objc/Framework/Classes/Metal/RTCMTLVideoView.m @@ -51,9 +51,9 @@ #pragma mark - Private + (BOOL)isMetalAvailable { -#if defined(__OBJC__) && COREVIDEO_SUPPORTS_METAL +#if defined(RTC_SUPPORTS_METAL) return YES; -#elif +#else return NO; #endif } diff --git a/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCMTLVideoView.h b/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCMTLVideoView.h index 681c457516..49e5963fd8 100644 --- a/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCMTLVideoView.h +++ b/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCMTLVideoView.h @@ -12,8 +12,13 @@ #import "WebRTC/RTCVideoRenderer.h" +// Check if metal is supported in WebRTC. +// NOTE: Currently arm64 == Metal. +#if defined(__aarch64__) +#define RTC_SUPPORTS_METAL +#endif + NS_ASSUME_NONNULL_BEGIN -RTC_EXPORT /** * RTCMTLVideoView is thin wrapper around MTKView. @@ -22,6 +27,8 @@ RTC_EXPORT * bounds using Metal. */ NS_CLASS_AVAILABLE_IOS(9) + +RTC_EXPORT @interface RTCMTLVideoView : UIView @end