Add Metal video view in AppRTCMobile and Metal availability macro.

- The RTC_SUPPORTS_METAL macro allows consumers to gracefully handle compilation for different archs that are not supporting Metal.

BUG=webrtc:7079

Review-Url: https://codereview.webrtc.org/2722583002
Cr-Commit-Position: refs/heads/master@{#17004}
This commit is contained in:
denicija 2017-03-03 06:11:10 -08:00 committed by Commit bot
parent 3a2c803dc3
commit 154a7bb877
4 changed files with 26 additions and 8 deletions

View File

@ -10,8 +10,8 @@
#import <UIKit/UIKit.h>
#import "WebRTC/RTCCameraPreviewView.h"
#import "WebRTC/RTCEAGLVideoView.h"
#import <WebRTC/RTCCameraPreviewView.h>
#import <WebRTC/RTCVideoRenderer.h>
#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<RTCVideoRenderer> *remoteVideoView;
@property(nonatomic, readonly) ARDStatsView *statsView;
@property(nonatomic, weak) id<ARDVideoCallViewDelegate> delegate;

View File

@ -11,6 +11,10 @@
#import "ARDVideoCallView.h"
#import <AVFoundation/AVFoundation.h>
#import <WebRTC/RTCEAGLVideoView.h>
#import <WebRTC/RTCMTLVideoView.h>
#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];

View File

@ -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
}

View File

@ -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 <RTCVideoRenderer>
@end