Chromium Code Reviews| Index: webrtc/api/objc/RTCOpenGLVideoRenderer.mm |
| diff --git a/talk/app/webrtc/objc/RTCOpenGLVideoRenderer.mm b/webrtc/api/objc/RTCOpenGLVideoRenderer.mm |
| similarity index 85% |
| copy from talk/app/webrtc/objc/RTCOpenGLVideoRenderer.mm |
| copy to webrtc/api/objc/RTCOpenGLVideoRenderer.mm |
| index cfead91bcafd0eee7261af8750473649ef46e16d..daf83eedfd44a3965b8116840e57f6ac3e6c7a8e 100644 |
| --- a/talk/app/webrtc/objc/RTCOpenGLVideoRenderer.mm |
| +++ b/webrtc/api/objc/RTCOpenGLVideoRenderer.mm |
| @@ -1,34 +1,13 @@ |
| /* |
| - * 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 "RTCOpenGLVideoRenderer.h" |
| #include <string.h> |
| @@ -102,7 +81,7 @@ static const char kFragmentShaderSource[] = |
| // Compiles a shader of the given |type| with GLSL source |source| and returns |
| // the shader handle or 0 on error. |
| -GLuint CreateShader(GLenum type, const GLchar* source) { |
| +GLuint CreateShader(GLenum type, const GLchar *source) { |
| GLuint shader = glCreateShader(type); |
| if (!shader) { |
| return 0; |
| @@ -164,9 +143,9 @@ static const GLsizei kNumTextures = 3 * kNumTextureSets; |
| @implementation RTCOpenGLVideoRenderer { |
| #if TARGET_OS_IPHONE |
| - EAGLContext* _context; |
| + EAGLContext *_context; |
| #else |
| - NSOpenGLContext* _context; |
| + NSOpenGLContext *_context; |
| #endif |
| BOOL _isInitialized; |
| NSUInteger _currentTextureSet; |
| @@ -187,15 +166,17 @@ static const GLsizei kNumTextures = 3 * kNumTextureSets; |
| rtc::scoped_ptr<uint8_t[]> _planeBuffer; |
| } |
| +@synthesize lastDrawnFrame = _lastDrawnFrame; |
| + |
| + (void)initialize { |
| // Disable dithering for performance. |
| glDisable(GL_DITHER); |
| } |
| #if TARGET_OS_IPHONE |
| -- (instancetype)initWithContext:(EAGLContext*)context { |
| +- (instancetype)initWithContext:(EAGLContext *)context { |
| #else |
| -- (instancetype)initWithContext:(NSOpenGLContext*)context { |
| +- (instancetype)initWithContext:(NSOpenGLContext *)context { |
| #endif |
| NSAssert(context != nil, @"context cannot be nil"); |
| if (self = [super init]) { |
| @@ -204,7 +185,7 @@ static const GLsizei kNumTextures = 3 * kNumTextureSets; |
| return self; |
| } |
| -- (BOOL)drawFrame:(RTCI420Frame*)frame { |
| +- (BOOL)drawFrame:(RTCI420Frame *)frame { |
| if (!_isInitialized) { |
| return NO; |
| } |
| @@ -325,7 +306,7 @@ static const GLsizei kNumTextures = 3 * kNumTextureSets; |
| return YES; |
| } |
| -- (BOOL)updateTextureSizesForFrame:(RTCI420Frame*)frame { |
| +- (BOOL)updateTextureSizesForFrame:(RTCI420Frame *)frame { |
| if (frame.height == _lastDrawnFrame.height && |
| frame.width == _lastDrawnFrame.width && |
| frame.chromaWidth == _lastDrawnFrame.chromaWidth && |
| @@ -368,8 +349,9 @@ static const GLsizei kNumTextures = 3 * kNumTextureSets; |
| GL_UNSIGNED_BYTE, |
| 0); |
| } |
| - if (frame.yPitch != frame.width || frame.uPitch != frame.chromaWidth || |
| - frame.vPitch != frame.chromaWidth) { |
| + if ((NSUInteger)frame.yPitch != frame.width || |
| + (NSUInteger)frame.uPitch != frame.chromaWidth || |
| + (NSUInteger)frame.vPitch != frame.chromaWidth) { |
|
hjon
2015/12/21 20:01:44
Due to compiler warnings, I cast these to NSUInteg
tkchin_webrtc
2016/01/05 17:19:08
Should be fine.
hjon
2016/01/06 00:07:17
Due to the changes to RTCVideoFrame, I've now upda
|
| _planeBuffer.reset(new uint8_t[frame.width * frame.height]); |
| } else { |
| _planeBuffer.reset(); |
| @@ -377,7 +359,7 @@ static const GLsizei kNumTextures = 3 * kNumTextureSets; |
| return YES; |
| } |
| -- (void)uploadPlane:(const uint8_t*)plane |
| +- (void)uploadPlane:(const uint8_t *)plane |
| sampler:(GLint)sampler |
| offset:(NSUInteger)offset |
| width:(NSUInteger)width |
| @@ -392,8 +374,8 @@ static const GLsizei kNumTextures = 3 * kNumTextureSets; |
| #else |
| BOOL hasUnpackRowLength = YES; |
| #endif |
| - const uint8_t* uploadPlane = plane; |
| - if (stride != width) { |
| + const uint8_t *uploadPlane = plane; |
| + if ((NSUInteger)stride != width) { |
|
hjon
2015/12/21 20:01:44
Due to compiler warnings, I cast this to NSUIntege
|
| if (hasUnpackRowLength) { |
| // GLES3 allows us to specify stride. |
| glPixelStorei(GL_UNPACK_ROW_LENGTH, stride); |
| @@ -411,7 +393,7 @@ static const GLsizei kNumTextures = 3 * kNumTextureSets; |
| } else { |
| // Make an unpadded copy and upload that instead. Quick profiling showed |
| // that this is faster than uploading row by row using glTexSubImage2D. |
| - uint8_t* unpaddedPlane = _planeBuffer.get(); |
| + uint8_t *unpaddedPlane = _planeBuffer.get(); |
| for (NSUInteger y = 0; y < height; ++y) { |
| memcpy(unpaddedPlane + y * width, plane + y * stride, width); |
| } |
| @@ -429,7 +411,7 @@ static const GLsizei kNumTextures = 3 * kNumTextureSets; |
| uploadPlane); |
| } |
| -- (BOOL)updateTextureDataForFrame:(RTCI420Frame*)frame { |
| +- (BOOL)updateTextureDataForFrame:(RTCI420Frame *)frame { |
| NSUInteger textureOffset = _currentTextureSet * 3; |
| NSAssert(textureOffset + 3 <= kNumTextures, @"invalid offset"); |
| @@ -483,7 +465,7 @@ static const GLsizei kNumTextures = 3 * kNumTextureSets; |
| // beginning at the start of the array. The last argument indicates offset |
| // of data within |gVertices| as supplied to the vertex buffer. |
| glVertexAttribPointer( |
| - _position, 2, GL_FLOAT, GL_FALSE, 4 * sizeof(GLfloat), (void*)0); |
| + _position, 2, GL_FLOAT, GL_FALSE, 4 * sizeof(GLfloat), (void *)0); |
| glEnableVertexAttribArray(_position); |
| // Read texcoord attribute from |gVertices| with size of 2 and stride of 4 |
| @@ -494,7 +476,7 @@ static const GLsizei kNumTextures = 3 * kNumTextureSets; |
| GL_FLOAT, |
| GL_FALSE, |
| 4 * sizeof(GLfloat), |
| - (void*)(2 * sizeof(GLfloat))); |
| + (void *)(2 * sizeof(GLfloat))); |
| glEnableVertexAttribArray(_texcoord); |
| return YES; |