]> git.sesse.net Git - vlc/blob - modules/video_output/opengl.h
Qt: adv settings: Optimize synchronization panel
[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 #if !defined (__APPLE__)
38 # if USE_OPENGL_ES == 2
39 #  include <GLES2/gl2.h>
40 # elif USE_OPENGL_ES == 1
41 #  include <GLES/gl.h>
42 # else
43 #  ifdef WIN32
44 #   include <GL/glew.h>
45 #  endif
46 #  include <GL/gl.h>
47 # endif
48 #else
49 # if USE_OPENGL_ES == 2
50 #  include <OpenGLES/ES2/gl.h>
51 # elif USE_OPENGL_ES == 1
52 #  include <OpenGLES/ES1/gl.h>
53 # else
54 #  define MACOS_OPENGL
55 #  include <OpenGL/gl.h>
56 # endif
57 #endif
58
59 static inline bool HasExtension(const char *apis, const char *api)
60 {
61     size_t apilen = strlen(api);
62     while (apis) {
63         while (*apis == ' ')
64             apis++;
65         if (!strncmp(apis, api, apilen) && memchr(" ", apis[apilen], 2))
66             return true;
67         apis = strchr(apis, ' ');
68     }
69     return false;
70 }
71
72 typedef struct vout_display_opengl_t vout_display_opengl_t;
73
74 vout_display_opengl_t *vout_display_opengl_New(video_format_t *fmt,
75                                                const vlc_fourcc_t **subpicture_chromas,
76                                                vlc_gl_t *gl);
77 void vout_display_opengl_Delete(vout_display_opengl_t *vgl);
78
79 picture_pool_t *vout_display_opengl_GetPool(vout_display_opengl_t *vgl, unsigned);
80
81 int vout_display_opengl_Prepare(vout_display_opengl_t *vgl,
82                                 picture_t *picture, subpicture_t *subpicture);
83 int vout_display_opengl_Display(vout_display_opengl_t *vgl,
84                                 const video_format_t *source);