home *** CD-ROM | disk | FTP | other *** search
/ mail.altrad.com / 2015.02.mail.altrad.com.tar / mail.altrad.com / TEST / vlc-2-0-5-win32.exe / sdk / include / vlc / plugins / vlc_opengl.h < prev    next >
C/C++ Source or Header  |  2012-12-12  |  2KB  |  90 lines

  1. /*****************************************************************************
  2.  * vlc_gl.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 */
  90.