]> git.sesse.net Git - vlc/blob - modules/video_output/opengl.h
Replace vout_opengl_t with vlc_gl_t
[vlc] / modules / video_output / opengl.h
1 /*****************************************************************************
2  * opengl.h: OpenGL vout_display helpers
3  *****************************************************************************
4  * Copyright (C) 2004 the VideoLAN team
5  * Copyright (C) 2009 Laurent Aimar
6  *
7  * Authors: Cyril Deguet <asmax@videolan.org>
8  *          Gildas Bazin <gbazin@videolan.org>
9  *          Eric Petit <titer@m0k.org>
10  *          Cedric Cocquebert <cedric.cocquebert@supelec.fr>
11  *          Laurent Aimar <fenrir _AT_ videolan _DOT_ org>
12  *
13  * This program is free software; you can redistribute it and/or modify
14  * it under the terms of the GNU General Public License as published by
15  * the Free Software Foundation; either version 2 of the License, or
16  * (at your option) any later version.
17  *
18  * This program is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21  * GNU General Public License for more details.
22  *
23  * You should have received a copy of the GNU General Public License
24  * along with this program; if not, write to the Free Software
25  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
26  *****************************************************************************/
27
28 #include <vlc_common.h>
29 #include <vlc_picture_pool.h>
30 #include <vlc_opengl.h>
31
32 // Define USE_OPENGL_ES to the GL ES Version you want to select
33 #ifndef USE_OPENGL_ES
34 # define USE_OPENGL_ES 0
35 #endif
36
37 #define VLCGL_TEXTURE_COUNT 1
38
39 #if USE_OPENGL_ES == 1
40 # include <OpenGLES/ES1/gl.h>
41 #elif USE_OPENGL_ES == 2
42 # include <OpenGLES/ES2/gl.h>
43 #elif defined(__APPLE__)
44 # define MACOS_OPENGL
45 # include <OpenGL/gl.h>
46 # undef VLCGL_TEXTURE_COUNT
47 # define VLCGL_TEXTURE_COUNT 2
48 #else
49 # include <GL/gl.h>
50 #endif
51
52 typedef struct {
53     vlc_gl_t   *gl;
54
55     video_format_t fmt;
56
57     int        tex_pixel_size;
58     int        tex_width;
59     int        tex_height;
60
61     GLuint     texture[VLCGL_TEXTURE_COUNT];
62     uint8_t    *buffer[VLCGL_TEXTURE_COUNT];
63
64     picture_pool_t *pool;
65 } vout_display_opengl_t;
66
67 int vout_display_opengl_Init(vout_display_opengl_t *vgl,
68                              video_format_t *fmt, vlc_gl_t *gl);
69 void vout_display_opengl_Clean(vout_display_opengl_t *vgl);
70
71 int vout_display_opengl_ResetTextures(vout_display_opengl_t *vgl);
72 picture_pool_t *vout_display_opengl_GetPool(vout_display_opengl_t *vgl);
73
74 int vout_display_opengl_Prepare(vout_display_opengl_t *vgl,
75                                 picture_t *picture);
76 int vout_display_opengl_Display(vout_display_opengl_t *vgl,
77                                 const video_format_t *source);