Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(33)

Unified Diff: webrtc/api/objc/RTCNSGLVideoView.m

Issue 1542473003: Move Objective-C video renderers to webrtc/api/objc. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@updateI420Frame
Patch Set: Merge master Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/api/objc/RTCNSGLVideoView.h ('k') | webrtc/api/objc/RTCOpenGLVideoRenderer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/api/objc/RTCNSGLVideoView.m
diff --git a/talk/app/webrtc/objc/RTCNSGLVideoView.m b/webrtc/api/objc/RTCNSGLVideoView.m
similarity index 53%
copy from talk/app/webrtc/objc/RTCNSGLVideoView.m
copy to webrtc/api/objc/RTCNSGLVideoView.m
index 34a866bd06c986e6b4e8ff80b3b782c9fa236475..063e6f1330ed246e829378b33150201988831bf2 100644
--- a/talk/app/webrtc/objc/RTCNSGLVideoView.m
+++ b/webrtc/api/objc/RTCNSGLVideoView.m
@@ -1,56 +1,35 @@
/*
- * libjingle
- * Copyright 2014 Google Inc.
+ * Copyright 2015 The WebRTC project authors. All Rights Reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
*/
-#if !defined(__has_feature) || !__has_feature(objc_arc)
-#error "This file requires ARC support."
-#endif
-
#import "RTCNSGLVideoView.h"
#import <CoreVideo/CVDisplayLink.h>
#import <OpenGL/gl3.h>
-#import "RTCI420Frame.h"
+#import "RTCVideoFrame.h"
#import "RTCOpenGLVideoRenderer.h"
@interface RTCNSGLVideoView ()
-// |i420Frame| is set when we receive a frame from a worker thread and is read
+// |videoFrame| is set when we receive a frame from a worker thread and is read
// from the display link callback so atomicity is required.
-@property(atomic, strong) RTCI420Frame* i420Frame;
-@property(atomic, strong) RTCOpenGLVideoRenderer* glRenderer;
+@property(atomic, strong) RTCVideoFrame *videoFrame;
+@property(atomic, strong) RTCOpenGLVideoRenderer *glRenderer;
- (void)drawFrame;
@end
static CVReturn OnDisplayLinkFired(CVDisplayLinkRef displayLink,
- const CVTimeStamp* now,
- const CVTimeStamp* outputTime,
+ const CVTimeStamp *now,
+ const CVTimeStamp *outputTime,
CVOptionFlags flagsIn,
- CVOptionFlags* flagsOut,
- void* displayLinkContext) {
- RTCNSGLVideoView* view = (__bridge RTCNSGLVideoView*)displayLinkContext;
+ CVOptionFlags *flagsOut,
+ void *displayLinkContext) {
+ RTCNSGLVideoView *view = (__bridge RTCNSGLVideoView *)displayLinkContext;
[view drawFrame];
return kCVReturnSuccess;
}
@@ -59,6 +38,10 @@ static CVReturn OnDisplayLinkFired(CVDisplayLinkRef displayLink,
CVDisplayLinkRef _displayLink;
}
+@synthesize delegate = _delegate;
+@synthesize videoFrame = _videoFrame;
+@synthesize glRenderer = _glRenderer;
+
- (void)dealloc {
[self teardownDisplayLink];
}
@@ -76,7 +59,7 @@ static CVReturn OnDisplayLinkFired(CVDisplayLinkRef displayLink,
}
- (void)lockFocus {
- NSOpenGLContext* context = [self openGLContext];
+ NSOpenGLContext *context = [self openGLContext];
[super lockFocus];
if ([context view] != self) {
[context setView:self];
@@ -109,19 +92,19 @@ static CVReturn OnDisplayLinkFired(CVDisplayLinkRef displayLink,
});
}
-- (void)renderFrame:(RTCI420Frame*)frame {
- self.i420Frame = frame;
+- (void)renderFrame:(RTCVideoFrame *)frame {
+ self.videoFrame = frame;
}
#pragma mark - Private
- (void)drawFrame {
- RTCI420Frame* i420Frame = self.i420Frame;
- if (self.glRenderer.lastDrawnFrame != i420Frame) {
+ RTCVideoFrame *videoFrame = self.videoFrame;
+ if (self.glRenderer.lastDrawnFrame != videoFrame) {
// This method may be called from CVDisplayLink callback which isn't on the
// main thread so we have to lock the GL context before drawing.
CGLLockContext([[self openGLContext] CGLContextObj]);
- [self.glRenderer drawFrame:i420Frame];
+ [self.glRenderer drawFrame:videoFrame];
CGLUnlockContext([[self openGLContext] CGLContextObj]);
}
}
@@ -138,7 +121,7 @@ static CVReturn OnDisplayLinkFired(CVDisplayLinkRef displayLink,
CVDisplayLinkCreateWithActiveCGDisplays(&_displayLink);
CVDisplayLinkSetOutputCallback(_displayLink,
&OnDisplayLinkFired,
- (__bridge void*)self);
+ (__bridge void *)self);
// Set the display link for the current renderer.
CGLContextObj cglContext = [[self openGLContext] CGLContextObj];
CGLPixelFormatObj cglPixelFormat = [[self pixelFormat] CGLPixelFormatObj];
« no previous file with comments | « webrtc/api/objc/RTCNSGLVideoView.h ('k') | webrtc/api/objc/RTCOpenGLVideoRenderer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698