diff options
Diffstat (limited to 'webrtc/modules/video_render/ios/open_gles20.h')
-rw-r--r-- | webrtc/modules/video_render/ios/open_gles20.h | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/webrtc/modules/video_render/ios/open_gles20.h b/webrtc/modules/video_render/ios/open_gles20.h new file mode 100644 index 0000000000..f74955fee4 --- /dev/null +++ b/webrtc/modules/video_render/ios/open_gles20.h @@ -0,0 +1,64 @@ +/* + * 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. + */ + +#ifndef WEBRTC_MODULES_VIDEO_RENDER_IOS_OPEN_GLES20_H_ +#define WEBRTC_MODULES_VIDEO_RENDER_IOS_OPEN_GLES20_H_ + +#include <OpenGLES/ES2/glext.h> + +#include "webrtc/modules/video_render/include/video_render_defines.h" + +/* + * This OpenGles20 is the class of renderer for VideoFrame into a GLES 2.0 + * windows used in the VideoRenderIosView class. + */ +namespace webrtc { +class OpenGles20 { + public: + OpenGles20(); + ~OpenGles20(); + + bool Setup(int32_t width, int32_t height); + bool Render(const VideoFrame& frame); + + // SetCoordinates + // Sets the coordinates where the stream shall be rendered. + // Values must be between 0 and 1. + bool SetCoordinates(const float z_order, + const float left, + const float top, + const float right, + const float bottom); + + private: + // Compile and load the vertex and fragment shaders defined at the top of + // open_gles20.mm + GLuint LoadShader(GLenum shader_type, const char* shader_source); + + GLuint CreateProgram(const char* vertex_source, const char* fragment_source); + + // Initialize the textures by the frame width and height + void SetupTextures(const VideoFrame& frame); + + // Update the textures by the YUV data from the frame + void UpdateTextures(const VideoFrame& frame); + + GLuint texture_ids_[3]; // Texture id of Y,U and V texture. + GLuint program_; + GLsizei texture_width_; + GLsizei texture_height_; + + GLfloat vertices_[20]; + static const char indices_[]; + static const char vertext_shader_[]; + static const char fragment_shader_[]; +}; +} // namespace webrtc +#endif // WEBRTC_MODULES_VIDEO_RENDER_IOS_OPEN_GLES20_H_ |