GLContext

#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.

Environment variables:

  • GST_GL_API: select which OpenGL API to create and OpenGL context for. Depending on the platform, the available values are 'opengl', 'opengl3' (core profile), and 'gles2'. See the the #GstGLAPI enumeration for more details.
  • GST_GL_PLATFORM: select which OpenGL platform to create an OpenGL context with. Depending on the platform and the dependencies available build-time, the available values are, 'glx', 'egl', 'cgl', 'wgl', and 'eagl'
  • GST_GL_CONFIG: select the configuration used for creating the OpenGL context and OpenGL surface. Written out as a GstStructure that has been serialized to string. e.g. GST_GL_CONFIG="gst-gl-context-config,red-size=8,green-size=8,blue-size=8,alpha-size=8,depth-size=16". Not all platforms will support the same level of functionality.
class GLContext : ObjectGst {}

Constructors

this
this(gstgl.gldisplay.GLDisplay display)

Create a new #GstGLContext with the specified display

Members

Functions

activate
bool activate(bool activate)

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

canShare
bool canShare(gstgl.glcontext.GLContext otherContext)

Note: This will always fail for two wrapped #GstGLContext's

checkFeature
bool checkFeature(string feature)

Check for an OpenGL feature being supported.

checkFramebufferStatus
bool checkFramebufferStatus(uint fboTarget)

Must be called with context current.

checkGlVersion
bool checkGlVersion(gstgl.types.GLAPI api, int maj, int min)
clearFramebuffer
void clearFramebuffer()

Unbind the current framebuffer

clearShader
void clearShader()

Clear's the currently set shader from the GL state machine.

create
bool create(gstgl.glcontext.GLContext otherContext)

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

destroy
void destroy()

Destroys an OpenGL context.

fillInfo
bool fillInfo()

Fills context's info (version, extensions, vtable, etc) from the GL context in the current thread. Typically used with wrapped contexts to allow wrapped contexts to be used as regular #GstGLContext's.

getConfig
gst.structure.Structure getConfig()

Retrieve the OpenGL configuration for this context. The context must have been successfully created for this function to return a valid value.

getDisplay
gstgl.gldisplay.GLDisplay getDisplay()
getGlApi
gstgl.types.GLAPI getGlApi()

Get the currently enabled OpenGL api.

getGlContext
size_t getGlContext()

Gets the backing OpenGL context used by context.

getGlPlatform
gstgl.types.GLPlatform getGlPlatform()

Gets the OpenGL platform that used by context.

getGlPlatformVersion
void getGlPlatformVersion(int major, int minor)

Get the version of the OpenGL platform (GLX, EGL, etc) used. Only valid after a call to gstgl.glcontext.GLContext.create.

getGlVersion
void getGlVersion(int maj, int min)

Returns the OpenGL version implemented by context. See gstgl.glcontext.GLContext.getGlApi for retrieving the OpenGL api implemented by context.

getProcAddress
void* getProcAddress(string name)

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

getThread
glib.thread.Thread getThread()
getWindow
gstgl.glwindow.GLWindow getWindow()
isShared
bool isShared()
requestConfig
bool requestConfig(gst.structure.Structure glConfig)

Set the OpenGL configuration for this context. The context must not have been created for this function to succeed. Setting a null config has the affect of removing any specific configuration request.

setSharedWith
void setSharedWith(gstgl.glcontext.GLContext share)

Will internally set context as shared with share

setWindow
bool setWindow(gstgl.glwindow.GLWindow window)

Set's the current window on context to window. The window can only be changed before gstgl.glcontext.GLContext.create has been called and the window is not already running.

supportsGlslProfileVersion
bool supportsGlslProfileVersion(gstgl.types.GLSLVersion version_, gstgl.types.GLSLProfile profile)
supportsPrecision
bool supportsPrecision(gstgl.types.GLSLVersion version_, gstgl.types.GLSLProfile profile)
supportsPrecisionHighp
bool supportsPrecisionHighp(gstgl.types.GLSLVersion version_, gstgl.types.GLSLProfile profile)
swapBuffers
void swapBuffers()

Swap the front and back buffers on the window attached to context. This will display the frame on the next refresh cycle.

threadAdd
void threadAdd(gstgl.types.GLContextThreadFunc func)

Execute func in the OpenGL thread of context with data

Static functions

defaultGetProcAddress
void* defaultGetProcAddress(gstgl.types.GLAPI glApi, string name)

A default implementation of the various GetProcAddress functions that looks for name in the OpenGL shared libraries or in the current process.

getCurrent
gstgl.glcontext.GLContext getCurrent()

See also gstgl.glcontext.GLContext.activate.

getCurrentGlApi
gstgl.types.GLAPI getCurrentGlApi(gstgl.types.GLPlatform platform, uint major, uint minor)

If an error occurs, major and minor are not modified and gstgl.types.GLAPI.None is returned.

getCurrentGlContext
size_t getCurrentGlContext(gstgl.types.GLPlatform contextType)
getProcAddressWithPlatform
void* getProcAddressWithPlatform(gstgl.types.GLPlatform contextType, gstgl.types.GLAPI glApi, string name)

Attempts to use the context_type specific GetProcAddress implementations to retrieve name.

newWrapped
gstgl.glcontext.GLContext newWrapped(gstgl.gldisplay.GLDisplay display, size_t handle, gstgl.types.GLPlatform contextType, gstgl.types.GLAPI availableApis)

Wraps an existing OpenGL context into a #GstGLContext.

Inherited Members

From ObjectGst

checkUniqueness
bool checkUniqueness(gst.object.ObjectGst[] list, string name)

Checks to see if there is any object named name in list. This function does not do any locking of any kind. You might want to protect the provided list with the lock of the owner of the list. This function will lock each #GstObject in the list to compare the name, so be careful when passing a list with a locked object.

defaultDeepNotify
void defaultDeepNotify(gobject.object.ObjectG object, gst.object.ObjectGst orig, gobject.param_spec.ParamSpec pspec, string[] excludedProps)

A default deep_notify signal callback for an object. The user data should contain a pointer to an array of strings that should be excluded from the notify. The default handler will print the new value of the property using g_print.

replace
bool replace(gst.object.ObjectGst oldobj, gst.object.ObjectGst newobj)

Atomically modifies a pointer to point to a new object. The reference count of oldobj is decreased and the reference count of newobj is increased.

addControlBinding
bool addControlBinding(gst.control_binding.ControlBinding binding)

Attach the #GstControlBinding to the object. If there already was a #GstControlBinding for this property it will be replaced.

defaultError
void defaultError(glib.error.ErrorG error, string debug_)

A default error function that uses glib.global.printerr to display the error message and the optional debug string..

getControlBinding
gst.control_binding.ControlBinding getControlBinding(string propertyName)

Gets the corresponding #GstControlBinding for the property. This should be unreferenced again after use.

getControlRate
gst.types.ClockTime getControlRate()

Obtain the control-rate for this object. Audio processing #GstElement objects will use this rate to sub-divide their processing loop and call gst.object.ObjectGst.syncValues in between. The length of the processing segment should be up to control-rate nanoseconds.

getGValueArray
bool getGValueArray(string propertyName, gst.types.ClockTime timestamp, gst.types.ClockTime interval, gobject.value.Value[] values)

Gets a number of #GValues for the given controlled property starting at the requested time. The array values need to hold enough space for n_values of #GValue.

getName
string getName()

Returns a copy of the name of object. Caller should glib.global.gfree the return value after usage. For a nameless object, this returns null, which you can safely glib.global.gfree as well.

getParent
gst.object.ObjectGst getParent()

Returns the parent of object. This function increases the refcount of the parent object so you should gst.object.ObjectGst.unref it after usage.

getPathString
string getPathString()

Generates a string describing the path of object in the object hierarchy. Only useful (or used) for debugging.

getValue
gobject.value.Value getValue(string propertyName, gst.types.ClockTime timestamp)

Gets the value for the given controlled property at the requested time.

hasActiveControlBindings
bool hasActiveControlBindings()

Check if the object has active controlled properties.

hasAncestor
bool hasAncestor(gst.object.ObjectGst ancestor)

Check if object has an ancestor ancestor somewhere up in the hierarchy. One can e.g. check if a #GstElement is inside a #GstPipeline.

hasAsAncestor
bool hasAsAncestor(gst.object.ObjectGst ancestor)

Check if object has an ancestor ancestor somewhere up in the hierarchy. One can e.g. check if a #GstElement is inside a #GstPipeline.

hasAsParent
bool hasAsParent(gst.object.ObjectGst parent)

Check if parent is the parent of object. E.g. a #GstElement can check if it owns a given #GstPad.

removeControlBinding
bool removeControlBinding(gst.control_binding.ControlBinding binding)

Removes the corresponding #GstControlBinding. If it was the last ref of the binding, it will be disposed.

setControlBindingDisabled
void setControlBindingDisabled(string propertyName, bool disabled)

This function is used to disable the control bindings on a property for some time, i.e. gst.object.ObjectGst.syncValues will do nothing for the property.

setControlBindingsDisabled
void setControlBindingsDisabled(bool disabled)

This function is used to disable all controlled properties of the object for some time, i.e. gst.object.ObjectGst.syncValues will do nothing.

setControlRate
void setControlRate(gst.types.ClockTime controlRate)

Change the control-rate for this object. Audio processing #GstElement objects will use this rate to sub-divide their processing loop and call gst.object.ObjectGst.syncValues in between. The length of the processing segment should be up to control-rate nanoseconds.

setName
bool setName(string name)

Sets the name of object, or gives object a guaranteed unique name (if name is null). This function makes a copy of the provided name, so the caller retains ownership of the name it sent.

setParent
bool setParent(gst.object.ObjectGst parent)

Sets the parent of object to parent. The object's reference count will be incremented, and any floating reference will be removed (see gst.object.ObjectGst.refSink).

suggestNextSync
gst.types.ClockTime suggestNextSync()

Returns a suggestion for timestamps where buffers should be split to get best controller results.

syncValues
bool syncValues(gst.types.ClockTime timestamp)

Sets the properties of the object, according to the #GstControlSources that (maybe) handle them and for the given timestamp.

unparent
void unparent()

Clear the parent of object, removing the associated reference. This function decreases the refcount of object.

connectDeepNotify
ulong connectDeepNotify(string detail, T callback, Flag!"After" after)

Connect to DeepNotify signal.