VLC
2.1.0-git
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
vlc_opengl.h
Go to the documentation of this file.
1
/*****************************************************************************
2
* vlc_opengl.h: VLC GL API
3
*****************************************************************************
4
* Copyright (C) 2009 Laurent Aimar
5
* Copyright (C) 2011 Rémi Denis-Courmont
6
*
7
* Authors: Laurent Aimar <fenrir _AT_ videolan _DOT_ org>
8
*
9
* This program is free software; you can redistribute it and/or modify it
10
* under the terms of the GNU Lesser General Public License as published by
11
* the Free Software Foundation; either version 2.1 of the License, or
12
* (at your option) any later version.
13
*
14
* This program is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
* GNU Lesser General Public License for more details.
18
*
19
* You should have received a copy of the GNU Lesser General Public License
20
* along with this program; if not, write to the Free Software Foundation,
21
* Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
22
*****************************************************************************/
23
24
#ifndef VLC_GL_H
25
#define VLC_GL_H 1
26
27
/**
28
* \file
29
* This file defines GL structures and functions.
30
*/
31
32
struct
vout_window_t
;
33
34
/**
35
* A VLC GL context (and its underlying surface)
36
*/
37
typedef
struct
vlc_gl_t
vlc_gl_t
;
38
39
struct
vlc_gl_t
40
{
41
VLC_COMMON_MEMBERS
42
43
struct
vout_window_t
*
surface
;
44
module_t
*
module
;
45
void
*
sys
;
46
47
int (*
makeCurrent
)(
vlc_gl_t
*);
48
void (*
swap
)(
vlc_gl_t
*);
49
int (*
lock
)(
vlc_gl_t
*);
50
void (*
unlock
)(
vlc_gl_t
*);
51
void
*(*getProcAddress)(
vlc_gl_t
*,
const
char
*);
52
};
53
54
enum
{
55
VLC_OPENGL
,
56
VLC_OPENGL_ES
,
57
VLC_OPENGL_ES2
,
58
};
59
60
VLC_API
vlc_gl_t
*
vlc_gl_Create
(
struct
vout_window_t
*,
unsigned
,
const
char
*)
VLC_USED
;
61
VLC_API
void
vlc_gl_Destroy
(
vlc_gl_t
*);
62
63
static inline
int
vlc_gl_MakeCurrent
(vlc_gl_t *gl)
64
{
65
return
gl->makeCurrent(gl);
66
}
67
68
static
inline
int
vlc_gl_Lock
(
vlc_gl_t
*gl)
69
{
70
return
(gl->
lock
!= NULL) ? gl->
lock
(gl) :
VLC_SUCCESS
;
71
}
72
73
static
inline
void
vlc_gl_Unlock
(
vlc_gl_t
*gl)
74
{
75
if
(gl->
unlock
!= NULL)
76
gl->
unlock
(gl);
77
}
78
79
static
inline
void
vlc_gl_Swap
(
vlc_gl_t
*gl)
80
{
81
gl->
swap
(gl);
82
}
83
84
static
inline
void
*
vlc_gl_GetProcAddress
(
vlc_gl_t
*gl,
const
char
*
name
)
85
{
86
return
(gl->
getProcAddress
!= NULL) ? gl->
getProcAddress
(gl, name) : NULL;
87
}
88
89
#endif
/* VLC_GL_H */
Generated by
1.8.1.2