GstGLDisplay

GstGLDisplay — window system display connection abstraction

Synopsis

#define             GST_GL_DISPLAY_CONTEXT_TYPE
enum                GstGLDisplayType;
                    GstGLDisplay;
GstGLDisplay *      gst_gl_display_new                  (void);
GstGLDisplayType    gst_gl_display_get_handle_type      (GstGLDisplay *display);
void                gst_gl_display_filter_gl_api        (GstGLDisplay *display,
                                                         GstGLAPI gl_api);
GstGLAPI            gst_gl_display_get_gl_api           (GstGLDisplay *display);
gboolean            gst_gl_display_add_context          (GstGLDisplay *display,
                                                         GstGLContext *context);
GstGLContext *      gst_gl_display_get_gl_context_for_thread
                                                        (GstGLDisplay *display,
                                                         GThread *thread);
guintptr            gst_gl_display_get_handle           (GstGLDisplay *display);
gboolean            gst_gl_display_create_context       (GstGLDisplay *display,
                                                         GstGLContext *other_context,
                                                         GstGLContext **p_context,
                                                         GError **error);
gboolean            gst_context_get_gl_display          (GstContext *context,
                                                         GstGLDisplay **display);
void                gst_context_set_gl_display          (GstContext *context,
                                                         GstGLDisplay *display);

Object Hierarchy

  GObject
   +----GInitiallyUnowned
         +----GstObject
               +----GstGLDisplay

Signals

  "create-context"                                 : Run Last

Description

GstGLDisplay represents a connection to the underlying windowing system. Elements are required to make use of GstContext to share and propogate a GstGLDisplay.

There are a number of environment variables that influence the choice of platform and window system specific functionality.

  • GST_GL_WINDOW influences the window system to use. Common values are 'x11', 'wayland', 'win32' or 'cocoa'.

  • GST_GL_PLATFORM influences the OpenGL platform to use. Common values are 'egl', 'glx', 'wgl' or 'cgl'.

  • GST_GL_API influences the OpenGL API requested by the OpenGL platform. Common values are 'opengl' and 'gles2'.

Note

Certain window systems require a special function to be called to initialize threading support. As this GStreamer GL library does not preclude concurrent access to the windowing system, it is strongly advised that applications ensure that threading support has been initialized before any other toolkit/library functionality is accessed. Failure to do so could result in sudden application abortion during execution. The most notably example of such a function is X11's XInitThreads().

Details

GST_GL_DISPLAY_CONTEXT_TYPE

#define GST_GL_DISPLAY_CONTEXT_TYPE "gst.gl.GLDisplay"

enum GstGLDisplayType

typedef enum {
  GST_GL_DISPLAY_TYPE_NONE = 0,
  GST_GL_DISPLAY_TYPE_X11 = (1 << 0),
  GST_GL_DISPLAY_TYPE_WAYLAND = (1 << 1),
  GST_GL_DISPLAY_TYPE_COCOA = (1 << 2),
  GST_GL_DISPLAY_TYPE_WIN32 = (1 << 3),
  GST_GL_DISPLAY_TYPE_DISPMANX = (1 << 4),
  GST_GL_DISPLAY_TYPE_EGL = (1 << 5),

  GST_GL_DISPLAY_TYPE_ANY = G_MAXUINT32
} GstGLDisplayType;

GST_GL_DISPLAY_TYPE_NONE

no display type

GST_GL_DISPLAY_TYPE_X11

X11 display

GST_GL_DISPLAY_TYPE_WAYLAND

Wayland display

GST_GL_DISPLAY_TYPE_COCOA

Cocoa display

GST_GL_DISPLAY_TYPE_WIN32

Win32 display

GST_GL_DISPLAY_TYPE_DISPMANX

Dispmanx display

GST_GL_DISPLAY_TYPE_EGL

EGL display

GST_GL_DISPLAY_TYPE_ANY

any display type

GstGLDisplay

typedef struct _GstGLDisplay GstGLDisplay;

The contents of a GstGLDisplay are private and should only be accessed through the provided API


gst_gl_display_new ()

GstGLDisplay *      gst_gl_display_new                  (void);

Returns :

a new GstGLDisplay. [transfer full]

Since 1.4


gst_gl_display_get_handle_type ()

GstGLDisplayType    gst_gl_display_get_handle_type      (GstGLDisplay *display);

display :

a GstGLDisplay

Returns :

the GstGLDisplayType of display

Since 1.4


gst_gl_display_filter_gl_api ()

void                gst_gl_display_filter_gl_api        (GstGLDisplay *display,
                                                         GstGLAPI gl_api);

limit the use of OpenGL to the requested gl_api. This is intended to allow application and elements to request a specific set of OpenGL API's based on what they support. See gst_gl_context_get_gl_api() for the retreiving the API supported by a GstGLContext.

display :

a GstGLDisplay

gl_api :

a GstGLAPI to filter with

gst_gl_display_get_gl_api ()

GstGLAPI            gst_gl_display_get_gl_api           (GstGLDisplay *display);

see gst_gl_display_filter_gl_api() for what the returned value represents

display :

a GstGLDisplay

Returns :

the GstGLAPI configured for display

gst_gl_display_add_context ()

gboolean            gst_gl_display_add_context          (GstGLDisplay *display,
                                                         GstGLContext *context);

display :

a GstGLDisplay

context :

a GstGLContext. [transfer none]

Returns :

whether context was successfully added. FALSE may be returned if there already exists another context for context's active thread. Must be called with the object lock held.

Since 1.6


gst_gl_display_get_gl_context_for_thread ()

GstGLContext *      gst_gl_display_get_gl_context_for_thread
                                                        (GstGLDisplay *display,
                                                         GThread *thread);

display :

a GstGLDisplay

thread :

a GThread

Returns :

the GstGLContext current on thread or NULL Must be called with the object lock held. [transfer full]

Since 1.6


gst_gl_display_get_handle ()

guintptr            gst_gl_display_get_handle           (GstGLDisplay *display);

gst_gl_display_create_context ()

gboolean            gst_gl_display_create_context       (GstGLDisplay *display,
                                                         GstGLContext *other_context,
                                                         GstGLContext **p_context,
                                                         GError **error);

It requires the display's object lock to be held.

display :

a GstGLDisplay

other_context :

other GstGLContext to share resources with.

p_context :

resulting GstGLContext

error :

resulting GError

Returns :

whether a new context could be created.

Since 1.6


gst_context_get_gl_display ()

gboolean            gst_context_get_gl_display          (GstContext *context,
                                                         GstGLDisplay **display);

context :

a GstContext

display :

resulting GstGLDisplay

Returns :

Whether display was in context

Since 1.4


gst_context_set_gl_display ()

void                gst_context_set_gl_display          (GstContext *context,
                                                         GstGLDisplay *display);

Sets display on context

context :

a GstContext

display :

resulting GstGLDisplay

Since 1.4

Signal Details

The "create-context" signal

GstGLContext*       user_function                      (GstGLDisplay *object,
                                                        GstGLContext *context,
                                                        gpointer      user_data)      : Run Last

Overrides the GstGLContext creation mechanism. It can be called in any thread and it is emitted with display's object lock held.

object :

the GstGLDisplay

context :

other context to share resources with.

user_data :

user data set when the signal handler was connected.

Returns :

the new context.

See Also

GstContext, GstGLContext, GstGLWindow