summaryrefslogtreecommitdiffstats
path: root/media/tools/player_x11/gles_video_renderer.h
diff options
context:
space:
mode:
Diffstat (limited to 'media/tools/player_x11/gles_video_renderer.h')
-rw-r--r--media/tools/player_x11/gles_video_renderer.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/media/tools/player_x11/gles_video_renderer.h b/media/tools/player_x11/gles_video_renderer.h
index 39478ac..075bdbc 100644
--- a/media/tools/player_x11/gles_video_renderer.h
+++ b/media/tools/player_x11/gles_video_renderer.h
@@ -6,12 +6,14 @@
#define MEDIA_TOOLS_PLAYER_X11_GL_VIDEO_RENDERER_H_
#include <EGL/egl.h>
+#include <EGL/eglext.h>
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
#include "base/lock.h"
#include "base/scoped_ptr.h"
#include "media/base/factory.h"
+#include "media/base/video_frame.h"
#include "media/filters/video_renderer_base.h"
class GlesVideoRenderer : public media::VideoRendererBase {
@@ -44,7 +46,16 @@ class GlesVideoRenderer : public media::VideoRendererBase {
friend class scoped_refptr<GlesVideoRenderer>;
virtual ~GlesVideoRenderer();
+ GLuint FindTexture(scoped_refptr<media::VideoFrame> video_frame);
bool InitializeGles();
+ void CreateShader(GLuint program, GLenum type,
+ const char* vs_source, int vs_size);
+ void LinkProgram(GLuint program);
+ void CreateTextureAndProgramEgl();
+ void CreateTextureAndProgramYuv2Rgb();
+
+ PFNEGLCREATEIMAGEKHRPROC egl_create_image_khr_;
+ PFNEGLDESTROYIMAGEKHRPROC egl_destroy_image_khr_;
int width_;
int height_;
@@ -62,6 +73,10 @@ class GlesVideoRenderer : public media::VideoRendererBase {
EGLSurface egl_surface_;
EGLContext egl_context_;
+ // textures for EGL image
+ typedef std::pair<scoped_refptr<media::VideoFrame>, GLuint> EglFrame;
+ std::vector<EglFrame> egl_frames_;
+
// 3 textures, one for each plane.
GLuint textures_[3];