GstGLContext

GstGLContext — OpenGL context abstraction

Synopsis

#define             GST_GL_CONTEXT_ERROR
GQuark              gst_gl_context_error_quark          (void);
enum                GstGLContextError;
void                (*GstGLContextThreadFunc)           (GstGLContext *context,
                                                         gpointer data);
                    GstGLContext;
GstGLContext *      gst_gl_context_new                  (GstGLDisplay *display);
GstGLContext *      gst_gl_context_new_wrapped          (GstGLDisplay *display,
                                                         guintptr handle,
                                                         GstGLPlatform context_type,
                                                         GstGLAPI available_apis);
gboolean            gst_gl_context_create               (GstGLContext *context,
                                                         GstGLContext *other_context,
                                                         GError **error);
gboolean            gst_gl_context_activate             (GstGLContext *context,
                                                         gboolean activate);
gpointer            gst_gl_context_default_get_proc_address
                                                        (GstGLContext *context,
                                                         const gchar *name);
gpointer            gst_gl_context_get_proc_address     (GstGLContext *context,
                                                         const gchar *name);
GstGLWindow *       gst_gl_context_get_window           (GstGLContext *context);
gboolean            gst_gl_context_set_window           (GstGLContext *context,
                                                         GstGLWindow *window);
void                gst_gl_context_thread_add           (GstGLContext *context,
                                                         GstGLContextThreadFunc func,
                                                         gpointer data);
GstGLDisplay *      gst_gl_context_get_display          (GstGLContext *context);
GstGLAPI            gst_gl_context_get_gl_api           (GstGLContext *context);
guintptr            gst_gl_context_get_gl_context       (GstGLContext *context);
GstGLPlatform       gst_gl_context_get_gl_platform      (GstGLContext *context);
GThread *           gst_gl_context_get_thread           (GstGLContext *context);
gboolean            gst_gl_context_can_share            (GstGLContext *context,
                                                         GstGLContext *other_context);
gboolean            gst_gl_context_check_feature        (GstGLContext *context,
                                                         const gchar *feature);
gboolean            gst_gl_context_check_gl_version     (GstGLContext *context,
                                                         GstGLAPI api,
                                                         gint maj,
                                                         gint min);
void                gst_gl_context_get_gl_version       (GstGLContext *context,
                                                         gint *maj,
                                                         gint *min);

Object Hierarchy

  GObject
   +----GInitiallyUnowned
         +----GstObject
               +----GstGLContext

Description

GstGLContext wraps an OpenGL context object in a uniform API. As a result of the limitation on OpenGL context, this object is not thread safe unless specified and must only be activated in a single thread.

Details

GST_GL_CONTEXT_ERROR

#define GST_GL_CONTEXT_ERROR (gst_gl_context_error_quark ())

gst_gl_context_error_quark ()

GQuark              gst_gl_context_error_quark          (void);

enum GstGLContextError

typedef enum {
  GST_GL_CONTEXT_ERROR_FAILED,
  GST_GL_CONTEXT_ERROR_WRONG_CONFIG,
  GST_GL_CONTEXT_ERROR_WRONG_API,
  GST_GL_CONTEXT_ERROR_OLD_LIBS,
  GST_GL_CONTEXT_ERROR_CREATE_CONTEXT,
  GST_GL_CONTEXT_ERROR_RESOURCE_UNAVAILABLE,
} GstGLContextError;

GST_GL_CONTEXT_ERROR_FAILED

GST_GL_CONTEXT_ERROR_WRONG_CONFIG

GST_GL_CONTEXT_ERROR_WRONG_API

GST_GL_CONTEXT_ERROR_OLD_LIBS

GST_GL_CONTEXT_ERROR_CREATE_CONTEXT

GST_GL_CONTEXT_ERROR_RESOURCE_UNAVAILABLE


GstGLContextThreadFunc ()

void                (*GstGLContextThreadFunc)           (GstGLContext *context,
                                                         gpointer data);

Represents a function to run in the GL thread with context and data

context :

a GstGLContext

data :

user data

GstGLContext

typedef struct _GstGLContext GstGLContext;

Opaque GstGLContext object


gst_gl_context_new ()

GstGLContext *      gst_gl_context_new                  (GstGLDisplay *display);

Create a new GstGLContext with the specified display

display :

a GstGLDisplay

Returns :

a new GstGLContext

Since 1.4


gst_gl_context_new_wrapped ()

GstGLContext *      gst_gl_context_new_wrapped          (GstGLDisplay *display,
                                                         guintptr handle,
                                                         GstGLPlatform context_type,
                                                         GstGLAPI available_apis);

Wraps an existing OpenGL context into a GstGLContext.

display :

a GstGLDisplay

handle :

the OpenGL context to wrap

context_type :

a GstGLPlatform specifying the type of context in handle

available_apis :

a GstGLAPI containing the available OpenGL apis in handle

Returns :

a GstGLContext wrapping handle

Since 1.4


gst_gl_context_create ()

gboolean            gst_gl_context_create               (GstGLContext *context,
                                                         GstGLContext *other_context,
                                                         GError **error);

Creates an OpenGL context in the current thread with the specified other_context as a context to share shareable OpenGL objects with. See the OpenGL specification for what is shared between contexts.

If an error occurs, and error is not NULL, then error will contain details of the error and FALSE will be returned.

Should only be called once.

context :

a GstGLContext:

other_context :

a GstGLContext to share OpenGL objects with. [allow-none]

error :

a GError. [allow-none]

Returns :

whether the context could successfully be created

Since 1.4


gst_gl_context_activate ()

gboolean            gst_gl_context_activate             (GstGLContext *context,
                                                         gboolean activate);

(De)activate the OpenGL context represented by this context.

In OpenGL terms, calls eglMakeCurrent or similar with this context and the currently set window. See gst_gl_context_set_window() for details.

context :

a GstGLContext

activate :

TRUE to activate, FALSE to deactivate

Returns :

Whether the activation succeeded

Since 1.4


gst_gl_context_default_get_proc_address ()

gpointer            gst_gl_context_default_get_proc_address
                                                        (GstGLContext *context,
                                                         const gchar *name);

gst_gl_context_get_proc_address ()

gpointer            gst_gl_context_get_proc_address     (GstGLContext *context,
                                                         const gchar *name);

Get a function pointer to a specified opengl function, name. If the the specific function does not exist, NULL is returned instead.

Platform specfic functions (names starting 'egl', 'glX', 'wgl', etc) can also be retreived using this method.

context :

a GstGLContext

name :

an opengl function name

Returns :

a function pointer or NULL

Since 1.4


gst_gl_context_get_window ()

GstGLWindow *       gst_gl_context_get_window           (GstGLContext *context);

context :

a GstGLContext

Returns :

the currently set window

Since 1.4


gst_gl_context_set_window ()

gboolean            gst_gl_context_set_window           (GstGLContext *context,
                                                         GstGLWindow *window);

Set's the current window on context to window. The window can only be changed before gst_gl_context_create() has been called and the window is not already running.

context :

a GstGLContext

window :

a GstGLWindow. [transfer full]

Returns :

Whether the window was successfully updated

Since 1.4


gst_gl_context_thread_add ()

void                gst_gl_context_thread_add           (GstGLContext *context,
                                                         GstGLContextThreadFunc func,
                                                         gpointer data);

Execute func in the OpenGL thread of context with data

MT-safe

context :

a GstGLContext

func :

a GstGLContextThreadFunc

data :

user data to call func with. [closure]

Since 1.4


gst_gl_context_get_display ()

GstGLDisplay *      gst_gl_context_get_display          (GstGLContext *context);

context :

a GstGLContext:

Returns :

the GstGLDisplay associated with this context

Since 1.4


gst_gl_context_get_gl_api ()

GstGLAPI            gst_gl_context_get_gl_api           (GstGLContext *context);

Get the currently enabled OpenGL api.

The currently available API may be limited by the GstGLDisplay in use and/or the GstGLWindow chosen.

context :

a GstGLContext

Returns :

the available OpenGL api

Since 1.4


gst_gl_context_get_gl_context ()

guintptr            gst_gl_context_get_gl_context       (GstGLContext *context);

Gets the backing OpenGL context used by context.

context :

a GstGLContext:

Returns :

The platform specific backing OpenGL context

Since 1.4


gst_gl_context_get_gl_platform ()

GstGLPlatform       gst_gl_context_get_gl_platform      (GstGLContext *context);

Gets the OpenGL platform that used by context.

context :

a GstGLContext:

Returns :

The platform specific backing OpenGL context

Since 1.4


gst_gl_context_get_thread ()

GThread *           gst_gl_context_get_thread           (GstGLContext *context);

context :

a GstGLContext

Returns :

The GThread, context is current in or NULL. [transfer full]

Since 1.4.5


gst_gl_context_can_share ()

gboolean            gst_gl_context_can_share            (GstGLContext *context,
                                                         GstGLContext *other_context);

context :

a GstGLContext

other_context :

another GstGLContext

Returns :

whether context and other_context are able to share OpenGL resources.

Since 1.6


gst_gl_context_check_feature ()

gboolean            gst_gl_context_check_feature        (GstGLContext *context,
                                                         const gchar *feature);

Some features require that the context be created before it is possible to determine their existence and so will fail if that is not the case.

context :

a GstGLContext

feature :

a platform specific feature

Returns :

Whether feature is supported by context

Since 1.4


gst_gl_context_check_gl_version ()

gboolean            gst_gl_context_check_gl_version     (GstGLContext *context,
                                                         GstGLAPI api,
                                                         gint maj,
                                                         gint min);

context :

a GstGLContext

api :

api type required

maj :

major version required

min :

minor version required

Returns :

whether OpenGL context implements the required api and specified version.

Since 1.4


gst_gl_context_get_gl_version ()

void                gst_gl_context_get_gl_version       (GstGLContext *context,
                                                         gint *maj,
                                                         gint *min);

context :

a GstGLContext

maj :

resulting major version. [out]

min :

resulting minor version. [out]

Returns :

the OpenGL version implemented by context. See gst_gl_context_get_gl_api() for retreiving the OpenGL api implemented by context.

Since 1.4

See Also

GstGLDisplay, GstGLWindow