| Index: webrtc/modules/video_render/ios/video_render_ios_view.mm
|
| diff --git a/webrtc/modules/video_render/ios/video_render_ios_view.mm b/webrtc/modules/video_render/ios/video_render_ios_view.mm
|
| deleted file mode 100644
|
| index b106ffa5c4f925a8f59999394e8b5e1b4fd68107..0000000000000000000000000000000000000000
|
| --- a/webrtc/modules/video_render/ios/video_render_ios_view.mm
|
| +++ /dev/null
|
| @@ -1,163 +0,0 @@
|
| -/*
|
| - * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
|
| - *
|
| - * 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
|
| -
|
| -#include <memory>
|
| -
|
| -#include "webrtc/modules/video_render/ios/video_render_ios_view.h"
|
| -#include "webrtc/system_wrappers/include/trace.h"
|
| -
|
| -using namespace webrtc;
|
| -
|
| -@implementation VideoRenderIosView {
|
| - EAGLContext* _context;
|
| - std::unique_ptr<webrtc::OpenGles20> _gles_renderer20;
|
| - int _frameBufferWidth;
|
| - int _frameBufferHeight;
|
| - unsigned int _defaultFrameBuffer;
|
| - unsigned int _colorRenderBuffer;
|
| -}
|
| -
|
| -@synthesize context = context_;
|
| -
|
| -+ (Class)layerClass {
|
| - return [CAEAGLLayer class];
|
| -}
|
| -
|
| -- (id)initWithCoder:(NSCoder*)coder {
|
| - // init super class
|
| - self = [super initWithCoder:coder];
|
| - if (self) {
|
| - _gles_renderer20.reset(new OpenGles20());
|
| - }
|
| - return self;
|
| -}
|
| -
|
| -- (id)init {
|
| - // init super class
|
| - self = [super init];
|
| - if (self) {
|
| - _gles_renderer20.reset(new OpenGles20());
|
| - }
|
| - return self;
|
| -}
|
| -
|
| -- (id)initWithFrame:(CGRect)frame {
|
| - // init super class
|
| - self = [super initWithFrame:frame];
|
| - if (self) {
|
| - _gles_renderer20.reset(new OpenGles20());
|
| - }
|
| - return self;
|
| -}
|
| -
|
| -- (void)dealloc {
|
| - if (_defaultFrameBuffer) {
|
| - glDeleteFramebuffers(1, &_defaultFrameBuffer);
|
| - _defaultFrameBuffer = 0;
|
| - }
|
| -
|
| - if (_colorRenderBuffer) {
|
| - glDeleteRenderbuffers(1, &_colorRenderBuffer);
|
| - _colorRenderBuffer = 0;
|
| - }
|
| -
|
| - [EAGLContext setCurrentContext:nil];
|
| -}
|
| -
|
| -- (NSString*)description {
|
| - return [NSString stringWithFormat:
|
| - @"A WebRTC implemented subclass of UIView."
|
| - "+Class method is overwritten, along with custom methods"];
|
| -}
|
| -
|
| -- (BOOL)createContext {
|
| - // create OpenGLES context from self layer class
|
| - CAEAGLLayer* eagl_layer = (CAEAGLLayer*)self.layer;
|
| - eagl_layer.opaque = YES;
|
| - eagl_layer.drawableProperties =
|
| - [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:NO],
|
| - kEAGLDrawablePropertyRetainedBacking,
|
| - kEAGLColorFormatRGBA8,
|
| - kEAGLDrawablePropertyColorFormat,
|
| - nil];
|
| - _context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
|
| -
|
| - if (!_context) {
|
| - return NO;
|
| - }
|
| -
|
| - if (![EAGLContext setCurrentContext:_context]) {
|
| - return NO;
|
| - }
|
| -
|
| - // generates and binds the OpenGLES buffers
|
| - glGenFramebuffers(1, &_defaultFrameBuffer);
|
| - glBindFramebuffer(GL_FRAMEBUFFER, _defaultFrameBuffer);
|
| -
|
| - // Create color render buffer and allocate backing store.
|
| - glGenRenderbuffers(1, &_colorRenderBuffer);
|
| - glBindRenderbuffer(GL_RENDERBUFFER, _colorRenderBuffer);
|
| - [_context renderbufferStorage:GL_RENDERBUFFER
|
| - fromDrawable:(CAEAGLLayer*)self.layer];
|
| - glGetRenderbufferParameteriv(
|
| - GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &_frameBufferWidth);
|
| - glGetRenderbufferParameteriv(
|
| - GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &_frameBufferHeight);
|
| - glFramebufferRenderbuffer(GL_FRAMEBUFFER,
|
| - GL_COLOR_ATTACHMENT0,
|
| - GL_RENDERBUFFER,
|
| - _colorRenderBuffer);
|
| -
|
| - if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) {
|
| - return NO;
|
| - }
|
| -
|
| - // set the frame buffer
|
| - glBindFramebuffer(GL_FRAMEBUFFER, _defaultFrameBuffer);
|
| - glViewport(0, 0, self.frame.size.width, self.frame.size.height);
|
| -
|
| - return _gles_renderer20->Setup([self bounds].size.width,
|
| - [self bounds].size.height);
|
| -}
|
| -
|
| -- (BOOL)presentFramebuffer {
|
| - if (![_context presentRenderbuffer:GL_RENDERBUFFER]) {
|
| - WEBRTC_TRACE(kTraceWarning,
|
| - kTraceVideoRenderer,
|
| - 0,
|
| - "%s:%d [context present_renderbuffer] "
|
| - "returned false",
|
| - __FUNCTION__,
|
| - __LINE__);
|
| - }
|
| - return YES;
|
| -}
|
| -
|
| -- (BOOL)renderFrame:(VideoFrame*)frameToRender {
|
| - if (![EAGLContext setCurrentContext:_context]) {
|
| - return NO;
|
| - }
|
| -
|
| - return _gles_renderer20->Render(*frameToRender);
|
| -}
|
| -
|
| -- (BOOL)setCoordinatesForZOrder:(const float)zOrder
|
| - Left:(const float)left
|
| - Top:(const float)top
|
| - Right:(const float)right
|
| - Bottom:(const float)bottom {
|
| - return _gles_renderer20->SetCoordinates(zOrder, left, top, right, bottom);
|
| -}
|
| -
|
| -@end
|
|
|