Add renderer-agnostic delegate protocol.
The MTL renderer should also have a way to notify it's delegate
that it's content size changed.
The plan is to introduce this new protocol, move existing clients over
to implementing it in favour of RTCEAGLVideoViewDelegate, and then finally
removing the old protocol.
Bug: b/73147161
Change-Id: I908d7b2667e44e02a58066d701a48efec0e98d14
Reviewed-on: https://webrtc-review.googlesource.com/70243
Commit-Queue: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Anders Carlsson <andersc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22944}
diff --git a/sdk/objc/Framework/Headers/WebRTC/RTCEAGLVideoView.h b/sdk/objc/Framework/Headers/WebRTC/RTCEAGLVideoView.h
index 60c624e..dba1d7a 100644
--- a/sdk/objc/Framework/Headers/WebRTC/RTCEAGLVideoView.h
+++ b/sdk/objc/Framework/Headers/WebRTC/RTCEAGLVideoView.h
@@ -18,11 +18,9 @@
NS_ASSUME_NONNULL_BEGIN
@class RTCEAGLVideoView;
+
RTC_EXPORT
-@protocol RTCEAGLVideoViewDelegate
-
-- (void)videoView:(RTCEAGLVideoView *)videoView didChangeVideoSize:(CGSize)size;
-
+@protocol RTCEAGLVideoViewDelegate<RTCVideoViewDelegate>
@end
/**
@@ -32,7 +30,7 @@
RTC_EXPORT
@interface RTCEAGLVideoView : UIView <RTCVideoRenderer>
-@property(nonatomic, weak) id<RTCEAGLVideoViewDelegate> delegate;
+@property(nonatomic, weak) id<RTCVideoViewDelegate> delegate;
- (instancetype)initWithFrame:(CGRect)frame
shader:(id<RTCVideoViewShading>)shader NS_DESIGNATED_INITIALIZER;
diff --git a/sdk/objc/Framework/Headers/WebRTC/RTCMTLNSVideoView.h b/sdk/objc/Framework/Headers/WebRTC/RTCMTLNSVideoView.h
index 4990e25..f82126c 100644
--- a/sdk/objc/Framework/Headers/WebRTC/RTCMTLNSVideoView.h
+++ b/sdk/objc/Framework/Headers/WebRTC/RTCMTLNSVideoView.h
@@ -13,5 +13,8 @@
NS_AVAILABLE_MAC(10.11)
@interface RTCMTLNSVideoView : NSView<RTCVideoRenderer>
+
+@property(nonatomic, weak) id<RTCVideoViewDelegate> delegate;
+
+ (BOOL)isMetalAvailable;
@end
diff --git a/sdk/objc/Framework/Headers/WebRTC/RTCMTLVideoView.h b/sdk/objc/Framework/Headers/WebRTC/RTCMTLVideoView.h
index 226c62a..802e0ff 100644
--- a/sdk/objc/Framework/Headers/WebRTC/RTCMTLVideoView.h
+++ b/sdk/objc/Framework/Headers/WebRTC/RTCMTLVideoView.h
@@ -32,6 +32,7 @@
RTC_EXPORT
@interface RTCMTLVideoView : UIView <RTCVideoRenderer>
-
+@property(nonatomic, weak) id<RTCVideoViewDelegate> delegate;
@end
+
NS_ASSUME_NONNULL_END
diff --git a/sdk/objc/Framework/Headers/WebRTC/RTCNSGLVideoView.h b/sdk/objc/Framework/Headers/WebRTC/RTCNSGLVideoView.h
index 9e6a9ce..62c7968 100644
--- a/sdk/objc/Framework/Headers/WebRTC/RTCNSGLVideoView.h
+++ b/sdk/objc/Framework/Headers/WebRTC/RTCNSGLVideoView.h
@@ -20,15 +20,13 @@
NS_ASSUME_NONNULL_BEGIN
@class RTCNSGLVideoView;
-@protocol RTCNSGLVideoViewDelegate
-- (void)videoView:(RTCNSGLVideoView *)videoView didChangeVideoSize:(CGSize)size;
-
+@protocol RTCNSGLVideoViewDelegate<RTCVideoViewDelegate>
@end
@interface RTCNSGLVideoView : NSOpenGLView <RTCVideoRenderer>
-@property(nonatomic, weak) id<RTCNSGLVideoViewDelegate> delegate;
+@property(nonatomic, weak) id<RTCVideoViewDelegate> delegate;
- (instancetype)initWithFrame:(NSRect)frameRect
pixelFormat:(NSOpenGLPixelFormat *)format
diff --git a/sdk/objc/Framework/Headers/WebRTC/RTCVideoRenderer.h b/sdk/objc/Framework/Headers/WebRTC/RTCVideoRenderer.h
index 5e2e820..7d91f2f 100644
--- a/sdk/objc/Framework/Headers/WebRTC/RTCVideoRenderer.h
+++ b/sdk/objc/Framework/Headers/WebRTC/RTCVideoRenderer.h
@@ -30,4 +30,11 @@
@end
+RTC_EXPORT
+@protocol RTCVideoViewDelegate
+
+- (void)videoView:(id<RTCVideoRenderer>)videoView didChangeVideoSize:(CGSize)size;
+
+@end
+
NS_ASSUME_NONNULL_END