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]; |