diff options
author | Gwenole Beauchesne <gwenole.beauchesne@intel.com> | 2015-02-20 15:27:53 +0100 |
---|---|---|
committer | Gwenole Beauchesne <gwenole.beauchesne@intel.com> | 2015-02-24 15:20:03 +0100 |
commit | 1e7c4db5a740df7b68547c091148dc27f80388d7 (patch) | |
tree | 1e7519e291f43e607349308d209039a3e8686dbe /gst-libs/gst/vaapi/gstvaapidisplay_egl_priv.h | |
parent | 91c5d948be120c256245724fbd7e54fd38e2e49e (diff) |
Add initial support for EGL.
Add initial support for EGL to libgstvaapi core library. The target
display server and the desired OpenGL API can be programmatically
selected at run-time.
A comprehensive set of EGL utilities are provided to support those
dynamic selection needs, but also most importantly to ensure that
the GL command stream is executed from within a single thread.
https://bugzilla.gnome.org/show_bug.cgi?id=743846
Diffstat (limited to 'gst-libs/gst/vaapi/gstvaapidisplay_egl_priv.h')
-rw-r--r-- | gst-libs/gst/vaapi/gstvaapidisplay_egl_priv.h | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/gst-libs/gst/vaapi/gstvaapidisplay_egl_priv.h b/gst-libs/gst/vaapi/gstvaapidisplay_egl_priv.h new file mode 100644 index 00000000..3db5ad89 --- /dev/null +++ b/gst-libs/gst/vaapi/gstvaapidisplay_egl_priv.h @@ -0,0 +1,101 @@ +/* + * gstvaapidisplay_egl_priv.h - Internal VA/EGL interface + * + * Copyright (C) 2014 Splitted-Desktop Systems + * Author: Gwenole Beauchesne <gwenole.beauchesne@intel.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA + */ + +#ifndef GST_VAAPI_DISPLAY_EGL_PRIV_H +#define GST_VAAPI_DISPLAY_EGL_PRIV_H + +#include <gst/vaapi/gstvaapiwindow.h> +#include "gstvaapidisplay_egl.h" +#include "gstvaapidisplay_priv.h" +#include "gstvaapiutils_egl.h" + +G_BEGIN_DECLS + +#define GST_VAAPI_IS_DISPLAY_EGL(display) \ + ((display) != NULL && \ + GST_VAAPI_DISPLAY_GET_CLASS_TYPE (display) == GST_VAAPI_DISPLAY_TYPE_EGL) + +#define GST_VAAPI_DISPLAY_EGL_CLASS(klass) \ + ((GstVaapiDisplayEGLClass *)(klass)) + +#define GST_VAAPI_DISPLAY_EGL_GET_CLASS(obj) \ + GST_VAAPI_DISPLAY_EGL_CLASS (GST_VAAPI_DISPLAY_GET_CLASS (obj)) + +/** + * GST_VAAPI_DISPLAY_EGL_DISPLAY: + * @display: a #GstVaapiDisplay + * + * Macro that evaluates to #EglDisplay wrapper for @display. + * This is an internal macro that does not do any run-time type check. + */ +#undef GST_VAAPI_DISPLAY_EGL_DISPLAY +#define GST_VAAPI_DISPLAY_EGL_DISPLAY(display) \ + (GST_VAAPI_DISPLAY_EGL (display)->egl_display) + +/** + * GST_VAAPI_DISPLAY_EGL_CONTEXT: + * @display: a #GstVaapiDisplay + * + * Macro that evaluates to #EglContext wrapper for @display. + * This is an internal macro that does not do any run-time type check. + */ +#undef GST_VAAPI_DISPLAY_EGL_CONTEXT +#define GST_VAAPI_DISPLAY_EGL_CONTEXT(display) \ + gst_vaapi_display_egl_get_context (GST_VAAPI_DISPLAY_EGL (display)) + +typedef struct _GstVaapiDisplayEGLClass GstVaapiDisplayEGLClass; + +/** + * GstVaapiDisplayEGL: + * + * VA/EGL display wrapper. + */ +struct _GstVaapiDisplayEGL +{ + /*< private >*/ + GstVaapiDisplay parent_instance; + + gpointer loader; + GstVaapiDisplay *display; + EglDisplay *egl_display; + EglContext *egl_context; + guint gles_version; +}; + +/** + * GstVaapiDisplayEGLClass: + * + * VA/EGL display wrapper clas. + */ +struct _GstVaapiDisplayEGLClass +{ + /*< private >*/ + GstVaapiDisplayClass parent_class; +}; + +G_GNUC_INTERNAL +EglContext * +gst_vaapi_display_egl_get_context (GstVaapiDisplayEGL * display); + +G_END_DECLS + +#endif /* GST_VAAPI_DISPLAY_EGL_PRIV_H */ |