From 24da37b0bf46b00f06b882809e9c595a1d0ed596 Mon Sep 17 00:00:00 2001 From: magjed Date: Tue, 11 Apr 2017 04:50:15 -0700 Subject: [PATCH] ObjC: RTCVideoSource cleanup RTCVideoSource was recently added in https://codereview.webrtc.org/2745193002/. This CL addresses some post commit feedback. BUG=webrtc:7177 Review-Url: https://codereview.webrtc.org/2812533003 Cr-Commit-Position: refs/heads/master@{#17649} --- .../Framework/Classes/RTCPeerConnectionFactory.mm | 4 ++-- webrtc/sdk/objc/Framework/Classes/RTCVideoCapturer.m | 11 ++++------- .../sdk/objc/Framework/Classes/objcvideotracksource.h | 5 +++-- .../Headers/WebRTC/RTCPeerConnectionFactory.h | 3 +++ .../objc/Framework/Headers/WebRTC/RTCVideoCapturer.h | 9 ++++++--- .../objc/Framework/Headers/WebRTC/RTCVideoSource.h | 5 +---- 6 files changed, 19 insertions(+), 18 deletions(-) diff --git a/webrtc/sdk/objc/Framework/Classes/RTCPeerConnectionFactory.mm b/webrtc/sdk/objc/Framework/Classes/RTCPeerConnectionFactory.mm index 9759269357..18a707cf4c 100644 --- a/webrtc/sdk/objc/Framework/Classes/RTCPeerConnectionFactory.mm +++ b/webrtc/sdk/objc/Framework/Classes/RTCPeerConnectionFactory.mm @@ -89,9 +89,9 @@ } - (RTCVideoSource *)videoSource { - rtc::scoped_refptr objc_video_track_source( + rtc::scoped_refptr objcVideoTrackSource( new rtc::RefCountedObject()); - return [[RTCVideoSource alloc] initWithNativeVideoSource:objc_video_track_source]; + return [[RTCVideoSource alloc] initWithNativeVideoSource:objcVideoTrackSource]; } - (RTCVideoTrack *)videoTrackWithSource:(RTCVideoSource *)source diff --git a/webrtc/sdk/objc/Framework/Classes/RTCVideoCapturer.m b/webrtc/sdk/objc/Framework/Classes/RTCVideoCapturer.m index e0a307b19e..9d4d99dd7c 100644 --- a/webrtc/sdk/objc/Framework/Classes/RTCVideoCapturer.m +++ b/webrtc/sdk/objc/Framework/Classes/RTCVideoCapturer.m @@ -10,19 +10,16 @@ #import "WebRTC/RTCVideoCapturer.h" -@implementation RTCVideoCapturer { - __weak id _delegate; -} +@implementation RTCVideoCapturer + +@synthesize delegate = _delegate; - (instancetype)initWithDelegate:(id)delegate { + NSAssert(delegate != nil, @"delegate cannot be nil"); if (self = [super init]) { _delegate = delegate; } return self; } -- (id)delegate { - return _delegate; -} - @end diff --git a/webrtc/sdk/objc/Framework/Classes/objcvideotracksource.h b/webrtc/sdk/objc/Framework/Classes/objcvideotracksource.h index 0b1e4bafdf..9bde63fcff 100644 --- a/webrtc/sdk/objc/Framework/Classes/objcvideotracksource.h +++ b/webrtc/sdk/objc/Framework/Classes/objcvideotracksource.h @@ -11,11 +11,12 @@ #ifndef WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_OBJCVIDEOTRACKSOURCE_H_ #define WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_OBJCVIDEOTRACKSOURCE_H_ -#import - +#include "WebRTC/RTCMacros.h" #include "webrtc/base/timestampaligner.h" #include "webrtc/media/base/adaptedvideotracksource.h" +RTC_FWD_DECL_OBJC_CLASS(RTCVideoFrame); + namespace webrtc { class ObjcVideoTrackSource : public rtc::AdaptedVideoTrackSource { diff --git a/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCPeerConnectionFactory.h b/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCPeerConnectionFactory.h index 8b19dd679a..3924cdd053 100644 --- a/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCPeerConnectionFactory.h +++ b/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCPeerConnectionFactory.h @@ -46,6 +46,9 @@ RTC_EXPORT - (RTCAVFoundationVideoSource *)avFoundationVideoSourceWithConstraints: (nullable RTCMediaConstraints *)constraints; +/** Initialize a generic RTCVideoSource. The RTCVideoSource should be passed to a RTCVideoCapturer + * implementation, e.g. RTCCameraVideoCapturer, in order to produce frames. + */ - (RTCVideoSource *)videoSource; /** Initialize an RTCVideoTrack with a source and an id. */ diff --git a/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCVideoCapturer.h b/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCVideoCapturer.h index 47d5a47acf..3addec83b1 100644 --- a/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCVideoCapturer.h +++ b/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCVideoCapturer.h @@ -15,14 +15,17 @@ NS_ASSUME_NONNULL_BEGIN @class RTCVideoCapturer; RTC_EXPORT - -@protocol RTCVideoCapturerDelegate +@protocol RTCVideoCapturerDelegate - (void)capturer:(RTCVideoCapturer *)capturer didCaptureVideoFrame:(RTCVideoFrame *)frame; @end +RTC_EXPORT @interface RTCVideoCapturer : NSObject -- (instancetype)initWithDelegate:(id)delegate; + @property(nonatomic, readonly, weak) id delegate; + +- (instancetype)initWithDelegate:(id)delegate; + @end NS_ASSUME_NONNULL_END diff --git a/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCVideoSource.h b/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCVideoSource.h index b5be132bcb..a9ebc06c88 100644 --- a/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCVideoSource.h +++ b/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCVideoSource.h @@ -18,13 +18,10 @@ NS_ASSUME_NONNULL_BEGIN RTC_EXPORT -@interface RTCVideoSource : RTCMediaSource +@interface RTCVideoSource : RTCMediaSource - (instancetype)init NS_UNAVAILABLE; -// RTCVideoCapturerDelegate protocol implementation. -- (void)capturer:(RTCVideoCapturer*)capturer didCaptureVideoFrame:(RTCVideoFrame*)frame; - /** * Calling this function will cause frames to be scaled down to the * requested resolution. Also, frames will be cropped to match the