| /* |
| * Copyright 2015 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. |
| */ |
| |
| #import <Foundation/Foundation.h> |
| #if TARGET_OS_IPHONE |
| #import <GLKit/GLKit.h> |
| #else |
| #import <AppKit/NSOpenGL.h> |
| #endif |
| |
| #import "WebRTC/RTCMacros.h" |
| |
| NS_ASSUME_NONNULL_BEGIN |
| |
| @class RTCVideoFrame; |
| |
| // RTCOpenGLVideoRenderer issues appropriate OpenGL commands to draw a frame to |
| // the currently bound framebuffer. Supports OpenGL 3.2 and OpenGLES 2.0. OpenGL |
| // framebuffer creation and management should be handled elsewhere using the |
| // same context used to initialize this class. |
| RTC_EXPORT |
| @interface RTCOpenGLVideoRenderer : NSObject |
| |
| // The last successfully drawn frame. Used to avoid drawing frames unnecessarily |
| // hence saving battery life by reducing load. |
| @property(nonatomic, readonly) RTCVideoFrame *lastDrawnFrame; |
| |
| #if TARGET_OS_IPHONE |
| - (instancetype)initWithContext:(EAGLContext *)context |
| NS_DESIGNATED_INITIALIZER; |
| #else |
| - (instancetype)initWithContext:(NSOpenGLContext *)context |
| NS_DESIGNATED_INITIALIZER; |
| #endif |
| |
| // Draws |frame| onto the currently bound OpenGL framebuffer. |setupGL| must be |
| // called before this function will succeed. |
| - (BOOL)drawFrame:(RTCVideoFrame *)frame; |
| |
| // The following methods are used to manage OpenGL resources. On iOS |
| // applications should release resources when placed in background for use in |
| // the foreground application. In fact, attempting to call OpenGLES commands |
| // while in background will result in application termination. |
| |
| // Sets up the OpenGL state needed for rendering. |
| - (void)setupGL; |
| // Tears down the OpenGL state created by |setupGL|. |
| - (void)teardownGL; |
| |
| - (instancetype)init NS_UNAVAILABLE; |
| |
| @end |
| |
| NS_ASSUME_NONNULL_END |