An option that can be activated on bufferpools to request OpenGL
synchronization metadata on buffers from the pool.
String used for %GST_GL_TEXTURE_TARGET_2D as a #GstBufferPool pool option
String used for %GST_GL_TEXTURE_TARGET_EXTERNAL_OES as a #GstBufferPool pool option
String used for %GST_GL_TEXTURE_TARGET_RECTANGLE as a #GstBufferPool pool option
Name of the caps feature indicating the use of GL buffers
Name of the caps feature for indicating the use of #GstGLMemory
no API
Desktop OpenGL up to and including 3.1. The
compatibility profile when the OpenGL version is >= 3.2
Desktop OpenGL >= 3.2 core profile
OpenGL ES 1.x
OpenGL ES 2.x and 3.x
Any OpenGL API
The #GstGLAPI represented by @api_s
a space separated string of OpenGL apis
A space separated string of the OpenGL api's enabled in @api
a #GstGLAPI to stringify
the size of the struct (including and subclass data)
a #GstGLAllocationParamsCopyFunc
a #GstGLAllocationParamsFreeFunc
allocation flags
the allocation size
the #GstAllocationParams
a #GstGLContext
a #GDestroyNotify
argument to call @notify with
the wrapped data pointer
the wrapped OpenGL handle
a copy of the #GstGLAllocationParams specified by
@src
the #GstGLAllocationParams to initialize
Copies the dynamically allocated data from @src to @dest. Direct subclasses
should call this function in their own overridden copy function.
the source #GstGLAllocationParams
the destination #GstGLAllocationParams
Frees the #GstGLAllocationParams and all associated data.
the #GstGLAllocationParams to initialize
Frees the dynamically allocated data in @params. Direct subclasses
should call this function in their own overridden free function.
the source #GstGLAllocationParams
@notify will be called once for each allocated memory using these @params
when freeing the memory.
whether the parameters could be initialized
the #GstGLAllocationParams to initialize
the struct size of the implementation
some alloc flags
a copy function
a free function
a #GstGLContext
the number of bytes to allocate.
a #GstAllocationParams to apply
a sysmem data pointer to initialize the allocation with
a GL handle to initialize the allocation with
user data to call @notify with
a #GDestroyNotify
Copies the parameters from @src into @dest. The subclass must compose copy
functions from the superclass.
the source #GstGLAllocationParams to copy from
the source #GstGLAllocationParams to copy
Free any dynamically allocated data. The subclass must call the superclass'
free.
a #GstGLAllocationParams
#GstGLAsyncDebug an opaque structure and should only be accessed through the
provided API.
Frees @ad
a #GstGLAsyncDebug
freeze the debug output. While frozen, any call to
gst_gl_async_debug_output_log_msg() will not output any messages but
subsequent calls to gst_gl_async_debug_store_log_msg() will overwrite previous
messages.
a #GstGLAsyncDebug
Initialize @ad. Intended for use with #GstGLAsyncDebug's that are embedded
in other structs.
a #GstGLAsyncDebug
Outputs a previously stored debug message.
the #GstGLAsyncDebug to store the message in
Stores a debug message for later output by gst_gl_async_debug_output_log_msg()
the #GstGLAsyncDebug to store the message in
the #GstDebugCategory to output the message in
the #GstDebugLevel
the file where the debug message originates from
the function where the debug message originates from
the line in @file where the debug message originates from
a #GObject to associate with the debug message
a printf style format string
the list of arguments for @format
Stores a debug message for later output by gst_gl_async_debug_output_log_msg()
the #GstGLAsyncDebug to store the message in
the #GstDebugCategory to output the message in
the #GstDebugLevel
the file where the debug message originates from
the function where the debug message originates from
the line in @file where the debug message originates from
a #GObject to associate with the debug message
a printf style format string
the list of arguments for @format
unfreeze the debug output. See gst_gl_async_debug_freeze() for what freezing means
a #GstGLAsyncDebug
Unset any dynamically allocated data. Intended for use with
#GstGLAsyncDebug's that are embedded in other structs.
a #GstGLAsyncDebug
Free with gst_gl_async_debug_free()
a new #GstGLAsyncDebug
#GstGLBaseFilter handles the nitty gritty details of retrieving an OpenGL
context. It also provided some wrappers around #GstBaseTransform's
`start()`, `stop()` and `set_caps()` virtual methods that ensure an OpenGL
context is available and current in the calling thread.
Whether an OpenGL context could be retrieved or created successfully
a #GstGLBaseFilter
the #GstGLContext found by @filter
a #GstGLBaseFilter
the currently configured #GstGLDisplay
the currently configured #GstGLContext
the currently configured input #GstCaps
the currently configured output #GstCaps
The base class for GStreamer GL Filter.
the logical-OR of #GstGLAPI's supported by this element
GstGLBaseMemory is a #GstMemory subclass providing the basis of support
for the mapping of GL buffers.
Data is uploaded or downloaded from the GPU as is necessary.
the parent object
the #GstGLContext to use for GL operations
Note: only intended for subclass usage to allocate the system memory buffer
on demand. If there is already a non-NULL data pointer in @gl_mem->data,
then this function imply returns TRUE.
whether the system memory could be allocated
a #GstGLBaseMemory
Initializes @mem with the required parameters
the #GstGLBaseMemory to initialize
the #GstAllocator to initialize with
the parent #GstMemory to initialize with
the #GstGLContext to initialize with
the @GstAllocationParams to initialize with
the number of bytes to be allocated
user data to call @notify with
a #GDestroyNotify
whether the copy succeeded.
the source #GstGLBaseMemory
the destination #GstGLBaseMemory
the offset to start at
the number of bytes to copy
a new #GstGLBaseMemory from @allocator with the requested @params.
a #GstGLBaseMemoryAllocator
the #GstGLAllocationParams to allocate the memory with
Initializes the GL Base Memory allocator. It is safe to call this function
multiple times. This must be called before any other GstGLBaseMemory operation.
Opaque #GstGLBaseMemoryAllocator struct
a newly allocated #GstGLBaseMemory from @allocator and @params
a #GstGLBaseMemoryAllocator
the #GstGLAllocationParams to allocate the memory with
Note: not called with a GL context current
a newly allocated #GstGLBaseMemory from @allocator and @params
a #GstGLBaseMemoryAllocator
the #GstGLAllocationParams to allocate the memory with
the parent class
a #GstGLBaseMemoryAllocatorAllocFunction
a #GstGLBaseMemoryAllocatorCreateFunction
a #GstGLBaseMemoryAllocatorMapFunction
a #GstGLBaseMemoryAllocatorUnmapFunction
a #GstGLBaseMemoryAllocatorCopyFunction
a #GstGLBaseMemoryAllocatorDestroyFunction
Also see gst_memory_copy();
the newly copied #GstGLMemory or %NULL
a #GstGLBaseMemory
the offset to copy from
the number of bytes to copy
As this virtual method is called with an OpenGL context current, use this
function to allocate and OpenGL resources needed for your application
whether the creation succeeded
a #GstGLBaseMemory
Destroy any resources allocated throughout the lifetime of @mem
a #GstGLBaseMemory
Also see gst_memory_map();
the mapped pointer
a #GstGLBaseMemory
a #GstMapInfo to map with
the size to map
Also see gst_memory_unmap();
a #GstGLBaseMemory
a #GstMapInfo to map with
generic failure
the implementation is too old and doesn't
implement enough features
a resource could not be found
the quark used for #GstGLBaseMemory in #GError's
the texture needs downloading
to the data pointer
the data pointer needs uploading
to the texture
#GstGLBaseMixer handles the nitty gritty details of retrieving an OpenGL
context. It provides some virtual methods to know when the OpenGL context
is available and is not available within this element.
called in the GL thread to setup the element GL state.
whether the start was successful
called in the GL thread to setup the element GL state.
the #GstGLContext found by @mix
a #GstGLBaseMixer
The #GstGLContext in use by this #GstGLBaseMixer
whether the start was successful
#GstGLBaseSrc handles the nitty gritty details of retrieving an OpenGL
context. It also provided some wrappers around #GstBaseSrc's `start()` and
`stop()` virtual methods that ensure an OpenGL context is available and
current in the calling thread.
the currently configured #GstGLDisplay
the currently configured #GstGLContext
the currently configured output #GstVideoInfo
the currently configured output #GstCaps
the total running time
The base class for GStreamer GL Video sources.
the logical-OR of #GstGLAPI's supported by this element
GstGLBuffer is a #GstMemory subclass providing support for the mapping of
GL buffers.
Data is uploaded or downloaded from the GPU as is necessary.
the parent object
the buffer id for this memory
the OpenGL target of this texture for binding purposes
the OpenGL usage hints this buffer was created with
Initializes the GL Buffer allocator. It is safe to call this function
multiple times. This must be called before any other #GstGLBuffer operation.
parent object
the OpenGL target to bind the buffer to
the OpenGL usage hint to create the buffer with
a new #GstGLBufferAllocationParams for allocating OpenGL buffer
objects
a #GstGLContext
the size in bytes to allocate
the #GstAllocationParams for @tex_id
the OpenGL target to allocate
the OpenGL usage hint to allocate with
Opaque #GstGLBufferAllocator struct
The #GstGLBufferAllocatorClass only contains private data
a #GstGLBufferPool is an object that allocates buffers with #GstGLBaseMemory
A #GstGLBufferPool is created with gst_gl_buffer_pool_new()
#GstGLBufferPool implements the VideoMeta buffer pool option
%GST_BUFFER_POOL_OPTION_VIDEO_META, the VideoAligment buffer pool option
%GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT as well as the OpenGL specific
%GST_BUFFER_POOL_OPTION_GL_SYNC_META buffer pool option.
a #GstBufferPool that allocates buffers with #GstGLMemory
the #GstGLContext to use
The returned #GstGLAllocationParams will by %NULL before the first successful
call to gst_buffer_pool_set_config(). Subsequent successful calls to
gst_buffer_pool_set_config() will cause this function to return a new
#GstGLAllocationParams which may or may not contain the same information.
a copy of the #GstGLAllocationParams being used by the @pool
the #GstGLBufferPool
The #GstGLBufferPoolClass structure contains only private data
#GstGLColorConvert is an object that converts between color spaces and/or
formats using OpenGL Shaders.
A #GstGLColorConvert can be created with gst_gl_color_convert_new(), the
configuration negotiated with gst_gl_color_convert_transform_caps() and the
conversion performed with gst_gl_color_convert_perform().
The glcolorconvertelement provides a GStreamer element that uses
#GstGLColorConvert to convert between video formats and color spaces.
a new #GstGLColorConvert object
a #GstGLContext
Provides an implementation of #GstBaseTransformClass.fixate_caps()
the fixated #GstCaps
a #GstGLContext to use for transforming @caps
a #GstPadDirection
the #GstCaps of @direction
the #GstCaps to fixate
Provides an implementation of #GstBaseTransformClass.transform_caps()
the converted #GstCaps
a #GstGLContext to use for transforming @caps
a #GstPadDirection
the #GstCaps to transform
a set of filter #GstCaps
Provides an implementation of #GstBaseTransformClass.decide_allocation()
whether the allocation parameters were successfully chosen
a #GstGLColorConvert
a completed ALLOCATION #GstQuery
Converts the data contained by @inbuf using the formats specified by the
#GstCaps passed to gst_gl_color_convert_set_caps()
a converted #GstBuffer or %NULL
a #GstGLColorConvert
the #GstGLMemory filled #GstBuffer to convert
Initializes @convert with the information required for conversion.
a #GstGLColorConvert
input #GstCaps
output #GstCaps
The #GstGLColorConvertClass struct only contains private data
none
slow
non-conformant
a string version of @caveat or %NULL if @caveat does not
exist.
the #GstGLConfigCaveat
none
window
pbuffer
pixmap
a string version of @caveat or %NULL if @surface_type does not
exist.
the #GstGLConfigSurfaceType
#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.
Create a new #GstGLContext with the specified @display
a new #GstGLContext
a #GstGLDisplay
Wraps an existing OpenGL context into a #GstGLContext.
Note: The caller is responsible for ensuring that the OpenGL context
represented by @handle stays alive while the returned #GstGLContext is
active.
@context_type must not be %GST_GL_PLATFORM_NONE or %GST_GL_PLATFORM_ANY
@available_apis must not be %GST_GL_API_NONE or %GST_GL_API_ANY
a #GstGLContext wrapping @handle
a #GstGLDisplay
the OpenGL context to wrap
a #GstGLPlatform specifying the type of context in @handle
a #GstGLAPI containing the available OpenGL apis in @handle
A default implementation of the various GetProcAddress functions that looks
for @name in the OpenGL shared libraries or in the current process.
See also: gst_gl_context_get_proc_address()
an address pointing to @name or %NULL
a #GstGLAPI
then function to get the address of
See also gst_gl_context_activate().
the #GstGLContext active in the current thread or %NULL
If an error occurs, @major and @minor are not modified and %GST_GL_API_NONE is
returned.
The version supported by the OpenGL context current in the calling
thread or %GST_GL_API_NONE
the #GstGLPlatform to retrieve the API for
the major version
the minor version
The OpenGL context handle current in the calling thread or %NULL
a #GstGLPlatform specifying the type of context to retrieve
Attempts to use the @context_type specific GetProcAddress implementations
to retrieve @name.
See also gst_gl_context_get_proc_address().
a function pointer for @name, or %NULL
a #GstGLPlatform
a #GstGLAPI
the name of the function to retrieve
(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.
Whether the activation succeeded
a #GstGLContext
%TRUE to activate, %FALSE to deactivate
Check for an OpenGL @feature being supported.
Note: Most 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.
Whether @feature is supported by @context
a #GstGLContext
a platform specific feature
Retrieve the OpenGL configuration for this context. The context must
have been successfully created for this function to return a valid value.
Not all implementations currently support retrieving the config and will
return %NULL when not supported.
the configuration chosen for this OpenGL context.
the #GstGLContext
Get the currently enabled OpenGL api.
The currently available API may be limited by the #GstGLDisplay in use and/or
the #GstGLWindow chosen.
the available OpenGL api
a #GstGLContext
Gets the backing OpenGL context used by @context.
The platform specific backing OpenGL context
a #GstGLContext:
Gets the OpenGL platform that used by @context.
The platform specific backing OpenGL context
a #GstGLContext:
Get the version of the OpenGL platform (GLX, EGL, etc) used. Only valid
after a call to gst_gl_context_create().
a #GstGLContext
return for the major version
return for the minor version
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.
Not all implementations currently support retrieving the config and this
function will return FALSE when not supported.
Note that calling this function may cause a subsequent
gst_gl_context_create() to fail if @config could not be matched with
the platform-specific configuration.
Note that the actual config used may be differ from the requested values.
whether @gl_config could be successfully set on @context
the #GstGLContext
a configuration structure for
configuring the OpenGL context
Swap the front and back buffers on the window attached to @context.
This will display the frame on the next refresh cycle.
a #GstGLContext
(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.
Whether the activation succeeded
a #GstGLContext
%TRUE to activate, %FALSE to deactivate
Note: This will always fail for two wrapped #GstGLContext's
whether @context and @other_context are able to share OpenGL
resources.
a #GstGLContext
another #GstGLContext
Check for an OpenGL @feature being supported.
Note: Most 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.
Whether @feature is supported by @context
a #GstGLContext
a platform specific feature
Must be called with @context current.
whether whether the current framebuffer is complete
a #GstGLContext
the GL value of the framebuffer target, GL_FRAMEBUFFER,
GL_READ_FRAMEBUFFER, GL_DRAW_FRAMEBUFFER
whether OpenGL context implements the required api and specified
version.
a #GstGLContext
api type required
major version required
minor version required
Unbind the current framebuffer
a #GstGLContext
Clear's the currently set shader from the GL state machine.
Note: must be called in the GL thread.
a #GstGLContext
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.
Since 1.20, the configuration can be overriden with the environment variable
`GST_GL_CONFIG` which is a stringified #GstStructure as would be returned
from gst_gl_context_get_config(). If `GST_GL_CONFIG` is not set, then the
config will be chosen from @other_context by calling
gst_gl_context_get_config() on @other_context. Otherwise, a default
configuration is used.
Calling gst_gl_context_request_config()) before calling
gst_gl_context_create() will override the config from @other_context but
will not override the `GST_GL_CONFIG` environment variable.
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.
whether the context could successfully be created
a #GstGLContext:
a #GstGLContext to share OpenGL objects with
Destroys an OpenGL context.
Should only be called after gst_gl_context_create() has been successfully
called for this context.
a #GstGLContext:
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.
a #GstGLContext:
Retrieve the OpenGL configuration for this context. The context must
have been successfully created for this function to return a valid value.
Not all implementations currently support retrieving the config and will
return %NULL when not supported.
the configuration chosen for this OpenGL context.
the #GstGLContext
the #GstGLDisplay associated with this @context
a #GstGLContext:
Get the currently enabled OpenGL api.
The currently available API may be limited by the #GstGLDisplay in use and/or
the #GstGLWindow chosen.
the available OpenGL api
a #GstGLContext
Gets the backing OpenGL context used by @context.
The platform specific backing OpenGL context
a #GstGLContext:
Gets the OpenGL platform that used by @context.
The platform specific backing OpenGL context
a #GstGLContext:
Get the version of the OpenGL platform (GLX, EGL, etc) used. Only valid
after a call to gst_gl_context_create().
a #GstGLContext
return for the major version
return for the minor version
Returns the OpenGL version implemented by @context. See
gst_gl_context_get_gl_api() for retrieving the OpenGL api implemented by
@context.
a #GstGLContext
resulting major version
resulting minor version
Get a function pointer to a specified opengl function, @name. If the the
specific function does not exist, NULL is returned instead.
Platform specific functions (names starting 'egl', 'glX', 'wgl', etc) can also
be retrieved using this method.
Note: This function may return valid function pointers that may not be valid
to call in @context. The caller is responsible for ensuring that the
returned function is a valid function to call in @context by either checking
the OpenGL API and version or for an appropriate OpenGL extension.
Note: On success, you need to cast the returned function pointer to the
correct type to be able to call it correctly. On 32-bit Windows, this will
include the `GSTGLAPI` identifier to use the correct calling convention.
e.g.
|[<!-- language="C" -->
void (GSTGLAPI *PFN_glGetIntegerv) (GLenum name, GLint * ret)
]|
a function pointer or %NULL
a #GstGLContext
an opengl function name
The #GThread, @context is current in or NULL
a #GstGLContext
the currently set window
a #GstGLContext
Whether the #GstGLContext has been shared with another #GstGLContext
a #GstGLContext
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.
Not all implementations currently support retrieving the config and this
function will return FALSE when not supported.
Note that calling this function may cause a subsequent
gst_gl_context_create() to fail if @config could not be matched with
the platform-specific configuration.
Note that the actual config used may be differ from the requested values.
whether @gl_config could be successfully set on @context
the #GstGLContext
a configuration structure for
configuring the OpenGL context
Will internally set @context as shared with @share
a wrapped #GstGLContext
another #GstGLContext
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.
Whether the window was successfully updated
a #GstGLContext
a #GstGLWindow
Whether @context supports the combination of @version with @profile
a #GstGLContext
a #GstGLSLVersion
a #GstGLSLProfile
whether @context supports the 'precision' specifier in GLSL shaders
a #GstGLContext
a #GstGLSLVersion
a #GstGLSLProfile
whether @context supports the 'precision highp' specifier in GLSL shaders
a #GstGLContext
a #GstGLSLVersion
a #GstGLSLProfile
Swap the front and back buffers on the window attached to @context.
This will display the frame on the next refresh cycle.
a #GstGLContext
Execute @func in the OpenGL thread of @context with @data
MT-safe
a #GstGLContext
a #GstGLContextThreadFunc
user data to call @func with
a list of OpenGL function pointers
The platform specific backing OpenGL context
a #GstGLContext:
the available OpenGL api
a #GstGLContext
The platform specific backing OpenGL context
a #GstGLContext:
Whether the activation succeeded
a #GstGLContext
%TRUE to activate, %FALSE to deactivate
a #GstGLContext
Whether @feature is supported by @context
a #GstGLContext
a platform specific feature
a #GstGLContext
return for the major version
return for the minor version
the configuration chosen for this OpenGL context.
the #GstGLContext
whether @gl_config could be successfully set on @context
the #GstGLContext
a configuration structure for
configuring the OpenGL context
OpenGL context errors.
Failed for an unspecified reason
The configuration requested is not correct
The OpenGL API requested is not correct
The OpenGL libraries are too old
glXCreateContext (or similar) failed
A resource is not available
the quark used for #GstGLContext in #GError's
Represents a function to run in the GL thread with @context and @data
a #GstGLContext
user data
#GstGLDisplay represents a connection to the underlying windowing system.
Elements are required to make use of #GstContext to share and propagate
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', 'opengl3' and 'gles2'.
> 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\().
a new #GstGLDisplay
Will always return a #GstGLDisplay of a single type. This differs from
gst_gl_display_new() and the seemingly equivalent call
gst_gl_display_new_with_type (GST_GL_DISPLAY_TYPE_ANY) in that the latter
may return NULL.
a new #GstGLDisplay or %NULL if @type is
not supported
#GstGLDisplayType
a new #GstGLWindow for @display or %NULL.
a #GstGLDisplay
the native handle for the display
a #GstGLDisplay
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.
a #GstGLDisplay
a #GstGLContext
It requires the display's object lock to be held.
whether a new context could be created.
a #GstGLDisplay
other #GstGLContext to share resources with.
resulting #GstGLContext
a new #GstGLWindow for @display or %NULL.
a #GstGLDisplay
Ensures that the display has a valid GL context for the current thread. If
@context already contains a valid context, this does nothing.
wether @context contains a valid context.
a #GstGLDisplay
other #GstGLContext to share resources with.
the resulting #GstGLContext
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 retrieving the
API supported by a #GstGLContext.
a #GstGLDisplay
a #GstGLAPI to filter with
Execute @compare_func over the list of windows stored by @display. The
first argument to @compare_func is the #GstGLWindow being checked and the
second argument is @data.
Use gst_gl_display_retrieve_window() instead.
The first #GstGLWindow that causes a match
from @compare_func
a #GstGLDisplay
some data to pass to @compare_func
a comparison function to run
see gst_gl_display_filter_gl_api() for what the returned value represents
the #GstGLAPI configured for @display
a #GstGLDisplay
the #GstGLContext current on @thread or %NULL
Must be called with the object lock held.
a #GstGLDisplay
a #GThread
the native handle for the display
a #GstGLDisplay
the #GstGLDisplayType of @display
a #GstGLDisplay
Must be called with the object lock held.
a #GstGLDisplay
the #GstGLContext to remove
if @window could be removed from @display
a #GstGLDisplay
a #GstGLWindow to remove
Execute @compare_func over the list of windows stored by @display. The
first argument to @compare_func is the #GstGLWindow being checked and the
second argument is @data.
The first #GstGLWindow that causes a match
from @compare_func
a #GstGLDisplay
some data to pass to @compare_func
a comparison function to run
Overrides the @GstGLContext creation mechanism.
It can be called in any thread and it is emitted with
display's object lock held.
the new context.
other context to share resources with.
the native handle for the display
a #GstGLDisplay
a new #GstGLWindow for @display or %NULL.
a #GstGLDisplay
no display type
X11 display
Wayland display
Cocoa display
Win32 display
Dispmanx display
EGL display
Vivante Framebuffer display
Mesa3D GBM display
any display type
#GstGLFilter helps to implement simple OpenGL filter elements taking a
single input and producing a single output with a #GstGLFramebuffer
Calls filter_texture vfunc with correctly mapped #GstGLMemorys
whether the transformation succeeded
a #GstGLFilter
an input buffer
an output buffer
Render a fullscreen quad using the current GL state. The only GL state this
modifies is the necessary vertex/index buffers and, if necessary, a
Vertex Array Object for drawing a fullscreen quad. Framebuffer state,
any shaders, viewport state, etc must be setup by the caller.
a #GstGLFilter
Calls filter_texture vfunc with correctly mapped #GstGLMemorys
whether the transformation succeeded
a #GstGLFilter
an input buffer
an output buffer
Transforms @input into @output using @func on through FBO.
the return value of @func
a #GstGLFilter
the input texture
the output texture
the function to transform @input into @output. called with @data
the data associated with @func
Transforms @input into @output using @shader with a FBO.
See also: gst_gl_filter_render_to_target()
a #GstGLFilter
the input texture
the output texture
the shader to use.
the video info for input buffers
the video info for output buffers
The texture target of the input buffers (usually 2D)
The texture target of the output buffers (usually 2D)
the output #GstCaps
#GstGLFramebuffer object used for transformations (only for subclass usage)
whether the transformation succeeded
a #GstGLFilter
an input buffer
an output buffer
whether the render succeeded
the #GstGLFilter
the input #GstGLMemory to render
user data
Single component replicated across R, G, and B textures
components
Single component stored in the A texture component
Combination of #GST_GL_LUMINANCE and #GST_GL_ALPHA
Single component stored in the R texture component
Single 8-bit component stored in the R texture component
Two components stored in the R and G texture components
Two 8-bit components stored in the R and G texture components
Three components stored in the R, G, and B texture components
Three 8-bit components stored in the R, G, and B
texture components
Three components of bit depth 5, 6 and 5 stored in the R, G,
and B texture components respectively.
Three 16-bit components stored in the R, G, and B
texture components
Four components stored in the R, G, B, and A texture
components respectively.
Four 8-bit components stored in the R, G, B, and A texture
components respectively.
Four 16-bit components stored in the R, G, B, and A texture
components respectively.
A single 16-bit component for depth information.
A 24-bit component for depth information and
a 8-bit component for stencil informat.
Single 16-bit component stored in the R texture component
Two 16-bit components stored in the R and G texture components
the #GstGLFormat necessary for holding the data in @plane of @vinfo
a #GstGLContext
a #GstVideoInfo
the plane number in @vinfo
Whether @format is supported by @context based on the OpenGL API,
version, or available OpenGL extension/s.
a #GstGLContext
the #GstGLFormat to check is supported by @context
Get the unsized format and type from @format for usage in glReadPixels,
glTex{Sub}Image*, glTexImage* and similar functions.
the sized internal #GstGLFormat
location for the resulting unsized #GstGLFormat
location for the resulting GL type
the number of bytes the specified @format, @type combination takes
per pixel
the OpenGL format, `GL_RGBA`, `GL_LUMINANCE`, etc
the OpenGL type, `GL_UNSIGNED_BYTE`, `GL_FLOAT`, etc
A #GstGLFramebuffer represents and holds an OpenGL framebuffer object with
it's associated attachments.
A #GstGLFramebuffer can be created with gst_gl_framebuffer_new() or
gst_gl_framebuffer_new_with_default_depth() and bound with
gst_gl_framebuffer_bind(). Other resources can be bound with
gst_gl_framebuffer_attach()
Note: OpenGL framebuffers are not shareable resources so cannot be used
between multiple OpenGL contexts.
This function will internally create an OpenGL framebuffer object and must
be called on @context's OpenGL thread.
a new #GstGLFramebuffer
a #GstGLContext
This function will internally create an OpenGL framebuffer object and must
be called on @context's OpenGL thread.
a new #GstGLFramebuffer with a depth buffer of @width and @height
a #GstGLContext
width for the depth buffer
for the depth buffer
attach @mem to @attachment_point
Must be called with the same OpenGL context current that @fb was created
with.
a #GstGLFramebuffer
the OpenGL attachment point to bind @mem to
the memory object to bind to @attachment_point
Bind @fb into the current thread
Must be called with the same OpenGL context current that @fb was created
with.
a #GstGLFramebuffer
Perform the steps necessary to have the output of a glDraw* command in
@func update the contents of @mem.
Note: this function does not map @mem for writing with OpenGL and that must
be done manually by the caller using any of the mapping functions such as
gst_memory_map() with the map flags %GST_MAP_WRITE | %GST_MAP_GL.
Must be called with the same OpenGL context current that @fb was created
with.
the result of executing @func
a #GstGLFramebuffer
the #GstGLMemory to draw to
the function to run
data to pass to @func
Retrieve the effective dimensions from the current attachments attached to
@fb.
a #GstGLFramebuffer
output width
output height
the OpenGL id for @fb
a #GstGLFramebuffer
Opaque #GstGLFramebufferClass struct
callback definition for operating through a #GstGLFramebuffer object
user data
Structure containing function pointers to OpenGL functions.
Each field is named exactly the same as the OpenGL function without the
`gl` prefix.
GstGLMemory is a #GstGLBaseMemory subclass providing support for the mapping of
OpenGL textures.
#GstGLMemory is created or wrapped through gst_gl_base_memory_alloc()
with #GstGLVideoAllocationParams.
Data is uploaded or downloaded from the GPU as is necessary.
The #GstCaps that is used for #GstGLMemory based buffers should contain
the %GST_CAPS_FEATURE_MEMORY_GL_MEMORY as a #GstCapsFeatures and should
contain a 'texture-target' field with one of the #GstGLTextureTarget values
as a string, i.e. some combination of 'texture-target=(string){2D,
rectangle, external-oes}'.
the parent #GstGLBaseMemory object
the GL texture id for this memory
the GL texture target for this memory
the texture type
the texture's #GstVideoInfo
data alignment for system memory mapping
data plane in @info
GL shader scaling parameters for @valign and/or width/height
Copies @gl_mem into the texture specified by @tex_id. The format of @tex_id
is specified by @tex_format, @width and @height.
Whether the copy succeeded
a #GstGLMemory
OpenGL texture id
the #GstGLTextureTarget
the #GstGLFormat
width of @tex_id
height of @tex_id
Copies the texture in #GstGLMemory into the texture specified by @tex_id,
@out_target, @out_tex_format, @out_width and @out_height.
whether the copy succeeded.
the source #GstGLMemory
the destination texture id
the destination #GstGLTextureTarget
the destination #GstGLFormat
the destination width
the destination height
the #GstGLFormat of @gl_mem
a #GstGLMemory
the texture height of @gl_mem
a #GstGLMemory
the OpenGL texture handle of @gl_mem
a #GstGLMemory
the #GstGLTextureTarget of @gl_mem
a #GstGLMemory
the texture width of @gl_mem
a #GstGLMemory
Initializes @mem with the required parameters. @info is assumed to have
already have been modified with gst_video_info_align().
the #GstGLBaseMemory to initialize
the #GstAllocator to initialize with
the parent #GstMemory to initialize with
the #GstGLContext to initialize with
the #GstGLTextureTarget for this #GstGLMemory
the #GstGLFormat for this #GstGLMemory
the @GstAllocationParams to initialize with
the #GstVideoInfo for this #GstGLMemory
the plane number (starting from 0) for this #GstGLMemory
optional #GstVideoAlignment parameters
user data to call @notify with
a #GDestroyNotify
Reads the texture in #GstGLMemory into @write_pointer if no buffer is bound
to `GL_PIXEL_PACK_BUFFER`. Otherwise @write_pointer is the byte offset into
the currently bound `GL_PIXEL_PACK_BUFFER` buffer to store the result of
glReadPixels. See the OpenGL specification for glReadPixels for more
details.
whether theread operation succeeded
a #GstGLMemory
the data pointer to pass to glReadPixels
Reads the texture in @read_pointer into @gl_mem.
See gst_gl_memory_read_pixels() for what @read_pointer signifies.
a #GstGLMemory
the data pointer to pass to glTexSubImage
Initializes the GL Base Texture allocator. It is safe to call this function
multiple times. This must be called before any other GstGLMemory operation.
whether the buffer was correctly setup
the @GstGLMemoryAllocator to allocate from
a #GstBuffer to setup
the #GstGLVideoAllocationParams to allocate with
a list of #GstGLFormat's to allocate with.
a list of wrapped data pointers
the number of elements in @tex_formats and @wrapped_data
Opaque #GstGLMemoryAllocator struct
the default #GstGLMemoryAllocator supported by
@context
a #GstGLContext
provide a custom map implementation
provide a custom copy implementation
provide a custom unmap implementation
#GstGLMemoryPBO is created or wrapped through gst_gl_base_memory_alloc()
with #GstGLVideoAllocationParams.
Data is uploaded or downloaded from the GPU as is necessary.
Copies @gl_mem into the texture specified by @tex_id. The format of @tex_id
is specified by @tex_format, @width and @height.
If @respecify is %TRUE, then the copy is performed in terms of the texture
data. This is useful for splitting RGBA textures into RG or R textures or
vice versa. The requirement for this to succeed is that the backing texture
data must be the same size, i.e. say a RGBA8 texture is converted into a RG8
texture, then the RG texture must have twice as many pixels available for
output as the RGBA texture.
Otherwise, if @respecify is %FALSE, then the copy is performed per texel
using glCopyTexImage. See the OpenGL specification for details on the
mappings between texture formats.
Whether the copy succeeded
a #GstGLMemoryPBO
the destination texture id
the destination #GstGLTextureTarget
the destination #GstGLFormat
width of @tex_id
height of @tex_id
stride of the backing texture data
whether to copy the data or copy per texel
Transfer the texture data from the texture into the PBO if necessary.
a #GstGLMemoryPBO
Transfer the texture data from the PBO into the texture if necessary.
a #GstGLMemoryPBO
Opaque #GstGLMemoryPBOAllocator struct
Only contains private data
#GstGLMixer helps implement an element that operates on RGBA textures.
Perform operations on the input buffers to produce an
output buffer.
Perform processing required and call #GstGLMixerClass::process_textures().
Intended for use within implementations of
#GstGLMixerClass::process_buffers().
whether processing of textures succeeded
the #GstGLMixer
(nullable): The #GstGLFramebuffer in use by this @mix
the #GstGLMixer
Perform processing required and call #GstGLMixerClass::process_textures().
Intended for use within implementations of
#GstGLMixerClass::process_buffers().
whether processing of textures succeeded
the #GstGLMixer
output @GstBuffer
whether processing of textures succeeded
the #GstGLMixer
Adds the default RGBA pad templates to this class. If you have any special
template requirements like a different pad subclass or different supported
caps, you should not call this function and add the pad templates yourself
manually.
the #GstGLMixerClass
Opaque #GstGLOverlayCompositor object
no platform
the EGL platform used primarily with the X11, wayland
and android window systems as well as on embedded Linux
the GLX platform used primarily with the X11 window system
the WGL platform used primarily on Windows
the CGL platform used primarily on OS X
the EAGL platform used primarily on iOS
any OpenGL platform
The #GstGLPlatform represented by @platform_s
a space separated string of OpenGL platformss
A space separated string of the OpenGL platforms enabled in @platform
a #GstGLPlatform to stringify
A #GstGLQuery represents and holds an OpenGL query object. Various types of
queries can be run or counters retrieved.
Record the result of a counter
a #GstGLQuery
End counting the query
a #GstGLQuery
Frees a #GstGLQuery
a #GstGLQuery
a #GstGLQuery
a #GstGLContext
the #GstGLQueryType
the result of the query
a #GstGLQuery
Start counting the query
a #GstGLQuery
Free any dynamically allocated resources
a #GstGLQuery
Performs a GST_QUERY_CONTEXT query of type "gst.gl.local_context" on all
#GstPads in @element of @direction for the local OpenGL context used by
GStreamer elements.
whether @context_ptr contains a #GstGLContext
a #GstElement to query from
the #GstPadDirection to query
location containing the current and/or resulting
#GstGLContext
Free with gst_gl_query_free()
a new #GstGLQuery
a #GstGLContext
the #GstGLQueryType to create
no query
query the time elapsed
query the current time
GstGLRenderbuffer is a #GstGLBaseMemory subclass providing support for
OpenGL renderbuffers.
#GstGLRenderbuffer is created or wrapped through gst_gl_base_memory_alloc()
with #GstGLRenderbufferAllocationParams.
the GL texture id for this memory
the texture type
the width
the height
the #GstGLFormat of @gl_mem
a #GstGLRenderbuffer
the configured height of @gl_mem
a #GstGLRenderbuffer
the OpenGL renderbuffer handle of @gl_mem
a #GstGLRenderbuffer
the configured width of @gl_mem
a #GstGLRenderbuffer
Initializes the GL Base Texture allocator. It is safe to call this function
multiple times. This must be called before any other GstGLRenderbuffer operation.
Allocation parameters
the #GstGLFormat
the width
the height
a new #GstGLRenderbufferAllocationParams for allocating #GstGLRenderbuffer's
a #GstGLContext
the #GstAllocationParams for sysmem mappings of the texture
the #GstGLFormat for the created textures
the width of the renderbuffer
the height of the renderbuffer
a new #GstGLRenderbufferAllocationParams for wrapping @gl_handle as a
renderbuffer
a #GstGLContext
the #GstAllocationParams for @tex_id
the #GstGLFormat for @tex_id
the width of the renderbuffer
the height of the renderbuffer
the GL handle to wrap
user data to call @notify with
a #GDestroyNotify
Opaque #GstGLRenderbufferAllocator struct
The #GstGLRenderbufferAllocatorClass only contains private data
Compilation stage that caused an error
Compilation error occurred
Link error occurred
General program error occurred
the quark used for GstGLSL in #GError's
GLSL profiles
no profile supported/available
OpenGL|ES profile
OpenGL core profile
OpenGL compatibility profile
any OpenGL/OpenGL|ES profile
the #GstGLSLProfile of @string or %GST_GLSL_PROFILE_NONE on error
a GLSL version string
the name for @profile or %NULL on error
a #GstGLSLProfile
#GstGLSLStage holds and represents a single OpenGL shader stage.
a new #GstGLSLStage of the specified @type
a #GstGLContext
the GL enum shader stage type
a new #GstGLSLStage with the default fragment shader
a #GstGLContext
a new #GstGLSLStage with the default vertex shader
a #GstGLContext
a new #GstGLSLStage of the specified @type
a #GstGLContext
the GL enum shader stage type
the #GstGLSLVersion
the #GstGLSLProfile
a shader string
a new #GstGLSLStage of the specified @type
a #GstGLContext
the GL enum shader stage type
the #GstGLSLVersion
the #GstGLSLProfile
the number of strings in @str
an array of strings concatted together to produce a shader
whether the compilation succeeded
a #GstGLSLStage
The GL handle for this shader stage
a #GstGLSLStage
The GLSL profile for the current shader stage
a #GstGLSLStage
The GL shader type for this shader stage
a #GstGLSLStage
The GLSL version for the current shader stage
a #GstGLSLStage
Replaces the current shader string with @str.
a #GstGLSLStage
a #GstGLSLVersion
a #GstGLSLProfile
number of strings in @str
a GLSL shader string
Opaque #GstGLSLStageClass struct
GLSL version list
no version
version 100 (only valid for ES)
version 110 (only valid for compatibility desktop GL)
version 120 (only valid for compatibility desktop GL)
version 130 (only valid for compatibility desktop GL)
version 140 (only valid for compatibility desktop GL)
version 150 (valid for compatibility/core desktop GL)
version 300 (only valid for ES)
version 310 (only valid for ES)
version 320 (only valid for ES)
version 330 (valid for compatibility/core desktop GL)
version 400 (valid for compatibility/core desktop GL)
version 410 (valid for compatibility/core desktop GL)
version 420 (valid for compatibility/core desktop GL)
version 430 (valid for compatibility/core desktop GL)
version 440 (valid for compatibility/core desktop GL)
version 450 (valid for compatibility/core desktop GL)
the #GstGLSLVersion of @string or %GST_GLSL_VERSION_NONE on error
a GLSL version string
Note: this function expects either a `#version` GLSL preprocesser directive
or a valid GLSL version and/or profile.
TRUE if a valid `#version` string was found, FALSE otherwise
a valid GLSL `#version` string
resulting #GstGLSLVersion
resulting #GstGLSLVersion
the combined GLSL `#version` string for @version and @profile
a #GstGLSLVersion
a #GstGLSLVersion
the name of @version or %NULL on error
a #GstGLSLVersion
Note: must be called in the GL thread
a new empty @shader
a #GstGLContext
Note: must be called in the GL thread
a default @shader or %NULL on failure
a #GstGLContext
Each stage will attempt to be compiled and attached to @shader. Then
the shader will be linked. On error, %NULL will be returned and @error will
contain the details of the error.
Note: must be called in the GL thread
a new @shader with the specified stages.
a #GstGLContext
a #GError
a NULL terminated list of #GstGLSLStage's
Each stage will attempt to be compiled and attached to @shader. On error,
%NULL will be returned and @error will contain the details of the error.
Note: must be called in the GL thread
a new @shader with the specified stages.
a #GstGLContext
a #GError
a NULL terminated list of #GstGLSLStage's
a passthrough shader string for copying an input external-oes
texture to the output
a #GstGLContext
a #GstGLSLVersion
a #GstGLSLProfile
a passthrough shader string for copying an input texture to
the output
a #GstGLContext
a #GstGLSLVersion
a #GstGLSLProfile
Generates a shader string that defines the precision of float types in
GLSL shaders. This is particularly needed for fragment shaders in a
GLSL ES context where there is no default precision specified.
Practically, this will return the string 'precision mediump float'
or 'precision highp float' depending on if high precision floats are
determined to be supported.
a shader string defining the precision of float types based on
@context, @version and @profile
a #GstGLContext
a #GstGLSLVersion
a #GstGLSLProfile
Attaches @stage to @shader. @stage must have been successfully compiled
with gst_glsl_stage_compile().
Note: must be called in the GL thread
whether @stage could be attached to @shader
a #GstGLShader
a #GstGLSLStage to attach
Attaches @stage to @shader. @stage must have been successfully compiled
with gst_glsl_stage_compile().
Note: must be called in the GL thread
whether @stage could be attached to @shader
a #GstGLShader
a #GstGLSLStage to attach
Bind attribute @name to the specified location @index using
`glBindAttributeLocation()`.
a #GstGLShader
attribute index to set
name of the attribute
Bind attribute @name to the specified location @index using
`glBindFragDataLocation()`.
a #GstGLShader
attribute index to set
name of the attribute
Compiles @stage and attaches it to @shader.
Note: must be called in the GL thread
whether @stage could be compiled and attached to @shader
a #GstGLShader
a #GstGLSLStage to attach
Detaches @stage from @shader. @stage must have been successfully attached
to @shader with gst_gl_shader_attach() or gst_gl_shader_attach_unlocked().
Note: must be called in the GL thread
a #GstGLShader
a #GstGLSLStage to attach
Detaches @stage from @shader. @stage must have been successfully attached
to @shader with gst_gl_shader_attach() or gst_gl_shader_attach_unlocked().
Note: must be called in the GL thread
a #GstGLShader
a #GstGLSLStage to attach
the attribute index for @name in @shader or -1 on failure
a #GstGLShader
name of the attribute
the GL program handle for this shader
a #GstGLShader
Note: must be called in the GL thread
whether @shader has been successfully linked
a #GstGLShader
Links the current list of #GstGLSLStage's in @shader.
Note: must be called in the GL thread
whether @shader could be linked together.
a #GstGLShader
Releases the shader and stages.
Note: must be called in the GL thread
a #GstGLShader
Releases the shader and stages.
Note: must be called in the GL thread
a #GstGLShader
Perform `glUniform1f()` for @name on @shader
a #GstGLShader
name of the uniform
value to set
Perform `glUniform1fv()` for @name on @shader
a #GstGLShader
name of the uniform
number of values to set
values to set
Perform `glUniform1i()` for @name on @shader
a #GstGLShader
name of the uniform
value to set
Perform `glUniform1iv()` for @name on @shader
a #GstGLShader
name of the uniform
number of values to set
values to set
Perform `glUniform2f()` for @name on @shader
a #GstGLShader
name of the uniform
first value to set
second value to set
Perform `glUniform2fv()` for @name on @shader
a #GstGLShader
name of the uniform
number of values to set
values to set
Perform `glUniform2i()` for @name on @shader
a #GstGLShader
name of the uniform
first value to set
second value to set
Perform `glUniform2iv()` for @name on @shader
a #GstGLShader
name of the uniform
number of values to set
values to set
Perform `glUniform3f()` for @name on @shader
a #GstGLShader
name of the uniform
first value to set
second value to set
third value to set
Perform `glUniform3fv()` for @name on @shader
a #GstGLShader
name of the uniform
number of values to set
values to set
Perform `glUniform3i()` for @name on @shader
a #GstGLShader
name of the uniform
first value to set
second value to set
third value to set
Perform `glUniform3iv()` for @name on @shader
a #GstGLShader
name of the uniform
number of values to set
values to set
Perform `glUniform4f()` for @name on @shader
a #GstGLShader
name of the uniform
first value to set
second value to set
third value to set
fourth value to set
Perform `glUniform4fv()` for @name on @shader
a #GstGLShader
name of the uniform
number of values to set
values to set
Perform `glUniform4i()` for @name on @shader
a #GstGLShader
name of the uniform
first value to set
second value to set
third value to set
fourth value to set
Perform `glUniform4iv()` for @name on @shader
a #GstGLShader
name of the uniform
number of values to set
values to set
Perform `glUniformMatrix2fv()` for @name on @shader
a #GstGLShader
name of the uniform
number of 2x2 matrices to set
transpose the matrix
matrix to set
Perform `glUniformMatrix2x3fv()` for @name on @shader
a #GstGLShader
name of the uniform
number of 2x3 matrices to set
transpose the matrix
values to set
Perform `glUniformMatrix2x4fv()` for @name on @shader
a #GstGLShader
name of the uniform
number of 2x4 matrices to set
transpose the matrix
values to set
Perform `glUniformMatrix3fv()` for @name on @shader
a #GstGLShader
name of the uniform
number of 3x3 matrices to set
transpose the matrix
values to set
Perform `glUniformMatrix3x2fv()` for @name on @shader
a #GstGLShader
name of the uniform
number of 3x2 matrices to set
transpose the matrix
values to set
Perform `glUniformMatrix3x4fv()` for @name on @shader
a #GstGLShader
name of the uniform
number of 3x4 matrices to set
transpose the matrix
values to set
Perform `glUniformMatrix4fv()` for @name on @shader
a #GstGLShader
name of the uniform
number of 4x4 matrices to set
transpose the matrix
values to set
Perform `glUniformMatrix4x2fv()` for @name on @shader
a #GstGLShader
name of the uniform
number of 4x2 matrices to set
transpose the matrix
values to set
Perform `glUniformMatrix4x3fv()` for @name on @shader
a #GstGLShader
name of the uniform
number of 4x3 matrices to set
transpose the matrix
values to set
Mark's @shader as being used for the next GL draw command.
Note: must be called in the GL thread and @shader must have been linked.
a #GstGLShader
Output anaglyph type to generate when downmixing to mono
Dubois optimised Green-Magenta anaglyph
Dubois optimised Red-Cyan anaglyph
Dubois optimised Amber-Blue anaglyph
#GstGLSyncMeta provides the ability to synchronize the OpenGL command stream
with the CPU or with other OpenGL contexts.
the parent #GstMeta
the #GstGLContext used to allocate the meta
a custom data pointer for the implementation
Set a sync point to possibly wait on at a later time.
a #GstGLSyncMeta
a #GstGLContext
Insert a wait into @context's command stream ensuring all previous OpenGL
commands before @sync_meta have completed.
a #GstGLSyncMeta
a #GstGLContext
Perform a wait so that the sync point has passed from the CPU's perspective
What that means, is that all GL operations changing CPU-visible data before
the sync point are now visible.
a #GstGLSyncMeta
a #GstGLContext
The OpenGL texture target that an OpenGL texture can be bound to. The
gst_gl_value_set_texture_target_from_mask(),
gst_gl_value_get_texture_target_mask(), and
gst_gl_value_set_texture_target() functions can be used for handling texture
targets with #GValue's when e.g. dealing with #GstCaps.
no texture target
2D texture target (`GL_TEXTURE_2D`)
rectangle texture target
(`GL_TEXTURE_RECTANGLE`)
external oes texture target
(`GL_TEXTURE_EXTERNAL_OES`)
the #GstGLTextureTarget that's equiavalant to @target or
%GST_GL_TEXTURE_TARGET_NONE
an OpenGL texture binding target
the #GstGLTextureTarget represented by @str or
%GST_GL_TEXTURE_TARGET_NONE
a string equivalent to one of the GST_GL_TEXTURE_TARGET_*_STR values
a string representing the @GstBufferPoolOption specified by @target
a #GstGLTextureTarget
the OpenGL value for binding the @target with glBindTexture() and
similar functions or 0
a #GstGLTextureTarget
the stringified version of @target or %NULL
a #GstGLTextureTarget
#GstGLUpload is an object that uploads data from system memory into GL textures.
A #GstGLUpload can be created with gst_gl_upload_new()
a new #GstGLUpload object
a #GstGLContext
a #GstGLUpload
the input #GstCaps
the output #GstCaps
Uploads @buffer using the transformation specified by
gst_gl_upload_set_caps() creating a new #GstBuffer in @outbuf_ptr.
whether the upload was successful
a #GstGLUpload
input #GstBuffer
resulting #GstBuffer
Adds the required allocation parameters to support uploading.
a #GstGLUpload
a #GstQuery from a decide allocation
the proposed allocation query
Initializes @upload with the information required for upload.
whether @in_caps and @out_caps could be set on @upload
a #GstGLUpload
input #GstCaps
output #GstCaps
The #GstGLUploadClass struct only contains private data
No further processing required
An unspecified error occurred
The configuration is unsupported.
This element requires a reconfiguration.
private return value.
the parent #GstGLAllocationParams structure
the #GstVideoInfo to allocate
the video plane index to allocate
the #GstVideoAlignment to align the system representation to (may be %NULL for the default)
the #GstGLTextureTarget to allocate
the #GstGLFormat to allocate
a new #GstGLVideoAllocationParams for allocating #GstGLMemory's
a #GstGLContext
the #GstAllocationParams for sysmem mappings of the texture
the #GstVideoInfo for the texture
the video plane of @v_info to allocate
any #GstVideoAlignment applied to symem mappings of the texture
the #GstGLTextureTarget for the created textures
the #GstGLFormat for the created textures
a new #GstGLVideoAllocationParams for wrapping @wrapped_data
a #GstGLContext
the #GstAllocationParams for @wrapped_data
the #GstVideoInfo for @wrapped_data
the video plane @wrapped_data represents
any #GstVideoAlignment applied to symem mappings of @wrapped_data
the #GstGLTextureTarget for @wrapped_data
the #GstGLFormat for @wrapped_data
the data pointer to wrap
user data to call @notify with
a #GDestroyNotify
@gl_handle is defined by the specific OpenGL handle being wrapped
For #GstGLMemory and #GstGLMemoryPBO it is an OpenGL texture id.
Other memory types may define it to require a different type of parameter.
a new #GstGLVideoAllocationParams for wrapping @gl_handle
a #GstGLContext
the #GstAllocationParams for @tex_id
the #GstVideoInfo for @tex_id
the video plane @tex_id represents
any #GstVideoAlignment applied to symem mappings of @tex_id
the #GstGLTextureTarget for @tex_id
the #GstGLFormat for @tex_id
the GL handle to wrap
user data to call @notify with
a #GDestroyNotify
a new #GstGLVideoAllocationParams for wrapping @tex_id
a #GstGLContext
the #GstAllocationParams for @tex_id
the #GstVideoInfo for @tex_id
the video plane @tex_id represents
any #GstVideoAlignment applied to symem mappings of @tex_id
the #GstGLTextureTarget for @tex_id
the #GstGLFormat for @tex_id
the GL texture to wrap
user data to call @notify with
a #GDestroyNotify
Copy and set any dynamically allocated resources in @dest_vid. Intended
for subclass usage only to chain up at the end of a subclass copy function.
source #GstGLVideoAllocationParams to copy from
destination #GstGLVideoAllocationParams to copy into
Unset and free any dynamically allocated resources. Intended for subclass
usage only to chain up at the end of a subclass free function.
a #GstGLVideoAllocationParams
Intended for subclass usage
initializes @params with the parameters specified
a #GstGLVideoAllocationParams to initialize
the size of the struct in @params
some allocation flags
a copy function
a free function
a #GstGLContext
the #GstAllocationParams for @wrapped_data
the #GstVideoInfo for @wrapped_data
the video plane @wrapped_data represents
any #GstVideoAlignment applied to symem mappings of @wrapped_data
the #GstGLTextureTarget
the #GstGLFormat
the optional data pointer to wrap
the optional OpenGL handle to wrap or 0
user data to call @notify with
a #GDestroyNotify
Convert stereoscopic/multiview video using fragment shaders.
a new #GstGLViewConvert
Provides an implementation of #GstBaseTransformClass.fixate_caps()
the fixated #GstCaps
a #GstGLViewConvert
a #GstPadDirection
the #GstCaps of @direction
the #GstCaps to fixate
Retrieve the processed output buffer placing the output in @outbuf_ptr.
a #GstFlowReturn
a #GstGLViewConvert
a #GstBuffer
Converts the data contained by @inbuf using the formats specified by the
#GstCaps passed to gst_gl_view_convert_set_caps()
a converted #GstBuffer or %NULL
a #GstGLViewConvert
the #GstGLMemory filled #GstBuffer to convert
Reset @viewconvert to the default state. Further operation will require
setting the caps with gst_gl_view_convert_set_caps().
a #GstGLViewConvert
Initializes @viewconvert with the information required for conversion.
a #GstGLViewConvert
input #GstCaps
output #GstCaps
Set @context on @viewconvert
a #GstGLViewConvert
the #GstGLContext to set
Submit @input to be processed by @viewconvert
a #GstFlowReturn
a #GstGLViewConvert
true if we have a discontinuity
a #GstBuffer
Provides an implementation of #GstBaseTransformClass.transform_caps()
the converted #GstCaps
a #GstGLViewConvert
a #GstPadDirection
the #GstCaps to transform
a set of filter #GstCaps
Opaque #GstGLViewConvertClass struct
GstGLWindow represents a window that elements can render into. A window can
either be a user visible window (onscreen) or hidden (offscreen).
a new #GstGLWindow using @display's connection
a #GstGLDisplay
Checks if @window controls the GL viewport.
%TRUE if @window controls the GL viewport, otherwise %FALSE
a #GstGLWindow
Redraw the window contents. Implementations should invoke the draw callback.
a #GstGLWindow
the windowing system display handle for this @window
a #GstGLWindow
the window handle we are currently rendering into
a #GstGLWindow
Tell a @window that it should handle events from the window system. These
events are forwarded upstream as navigation events. In some window systems
events are not propagated in the window hierarchy if a client is listening
for them. This method allows you to disable events handling completely
from the @window.
a #GstGLWindow
a #gboolean indicating if events should be handled or not.
Query whether @window has output surface or not
%TRUE if @window has useable output surface
a #GstGLWindow
Queue resizing of @window.
a #GstGLWindow
Quit the runloop's execution.
a #GstGLWindow
Start the execution of the runloop.
a #GstGLWindow
Invoke @callback with data on the window thread. @callback is guaranteed to
have executed when this function returns.
a #GstGLWindow
function to invoke
data to invoke @callback with
Invoke @callback with @data on the window thread. The callback may not
have been executed when this function returns.
a #GstGLWindow
function to invoke
data to invoke @callback with
called when @data is not needed anymore
Set the preferred width and height of the window. Implementations are free
to ignore this information.
a #GstGLWindow
new preferred width
new preferred height
Tell a @window that it should render into a specific region of the window
according to the #GstVideoOverlay interface.
whether the specified region could be set
a #GstGLWindow
x position
y position
width
height
Sets the window that this @window should render into. Some implementations
require this to be called with a valid handle before drawing can commence.
a #GstGLWindow
handle to the window
Present the window to the screen.
a #GstGLWindow
Checks if @window controls the GL viewport.
%TRUE if @window controls the GL viewport, otherwise %FALSE
a #GstGLWindow
Redraw the window contents. Implementations should invoke the draw callback.
a #GstGLWindow
the #GstGLContext associated with this @window
a #GstGLWindow
the windowing system display handle for this @window
a #GstGLWindow
a #GstGLWindow
resulting surface width
resulting surface height
the window handle we are currently rendering into
a #GstGLWindow
Tell a @window that it should handle events from the window system. These
events are forwarded upstream as navigation events. In some window systems
events are not propagated in the window hierarchy if a client is listening
for them. This method allows you to disable events handling completely
from the @window.
a #GstGLWindow
a #gboolean indicating if events should be handled or not.
Query whether @window has output surface or not
%TRUE if @window has useable output surface
a #GstGLWindow
Queue resizing of @window.
a #GstGLWindow
Quit the runloop's execution.
a #GstGLWindow
Resize @window to the given @width and @height.
a #GstGLWindow
new width
new height
Start the execution of the runloop.
a #GstGLWindow
Invoke @callback with data on the window thread. @callback is guaranteed to
have executed when this function returns.
a #GstGLWindow
function to invoke
data to invoke @callback with
Invoke @callback with @data on the window thread. The callback may not
have been executed when this function returns.
a #GstGLWindow
function to invoke
data to invoke @callback with
called when @data is not needed anymore
Notify a @window about a scroll event. A scroll signal holding the event
coordinates will be emitted.
a #GstGLWindow
x position of the mouse cursor
y position of the mouse cursor
the x offset of the scroll event
the y offset of the scroll event
Sets the callback called when the window is about to close.
a #GstGLWindow
function to invoke
data to invoke @callback with
called when @data is not needed any more
Sets the draw callback called every time gst_gl_window_draw() is called
a #GstGLWindow
function to invoke
data to invoke @callback with
called when @data is not needed any more
Set the preferred width and height of the window. Implementations are free
to ignore this information.
a #GstGLWindow
new preferred width
new preferred height
Tell a @window that it should render into a specific region of the window
according to the #GstVideoOverlay interface.
whether the specified region could be set
a #GstGLWindow
x position
y position
width
height
Sets the resize callback called every time a resize of the window occurs.
a #GstGLWindow
function to invoke
data to invoke @callback with
called when @data is not needed any more
Sets the window that this @window should render into. Some implementations
require this to be called with a valid handle before drawing can commence.
a #GstGLWindow
handle to the window
Present the window to the screen.
a #GstGLWindow
Will be emitted when a key event is received by the GstGLwindow.
the name of the event
the id of the key pressed
Will be emitted when a mouse event is received by the GstGLwindow.
the name of the event
the id of the button
the x coordinate of the mouse event
the y coordinate of the mouse event
Will be emitted when a mouse scroll event is received by the GstGLwindow.
the x coordinate of the mouse event
the y coordinate of the mouse event
the x offset of the scroll event
the y offset of the scroll event
Will be emitted when the window handle has been set into the native
implementation, but before the context is re-activated. By using this
signal, elements can refresh associated resource without relying on
direct handle comparision.
Parent class
the windowing system display handle for this @window
a #GstGLWindow
a #GstGLWindow
handle to the window
the window handle we are currently rendering into
a #GstGLWindow
a #GstGLWindow
a #GstGLWindow
a #GstGLWindow
a #GstGLWindow
function to invoke
data to invoke @callback with
a #GstGLWindow
function to invoke
data to invoke @callback with
called when @data is not needed anymore
a #GstGLWindow
a #gboolean indicating if events should be handled or not.
a #GstGLWindow
new preferred width
new preferred height
a #GstGLWindow
whether the specified region could be set
a #GstGLWindow
x position
y position
width
height
a #GstGLWindow
%TRUE if @window controls the GL viewport, otherwise %FALSE
a #GstGLWindow
%TRUE if @window has useable output surface
a #GstGLWindow
failed for a unspecified reason
the implementation is too old
no such resource was found
the quark used for #GstGLWindow in #GError's
GL Allocation flag indicating that the implementation should allocate the
necessary resources.
GL allocation flag indicating the allocation of a GL buffer.
Values >= than #GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_USER can be used for
user-defined purposes.
GL allocation flag indicating the allocation of 2D video frames
GL Allocation flag for using the provided GPU handle as storage.
GL Allocation flag for using the provided system memory data as storage.
The name for %GST_GL_API_GLES1 used in various places
The name for %GST_GL_API_GLES2 used in various places
The name for %GST_GL_API_OPENGL3 used in various places
The name for %GST_GL_API_OPENGL used in various places
Stores a debug message in @ad for later output
the #GstGLAsyncDebug to store the message in
the #GstDebugCategory to output the message in
the #GstDebugLevel
a #GObject to associate with the debug message
a printf style format string
the list of arguments for @format
The name of the GL buffer allocator
The name of the GL buffer allocator
The currently supported formats that can be converted
The currently supported #GstCaps that can be converted
Get a reference to the #GType of a particular configuration field.
e.g. for `CONFIG_ID`: `GST_GL_CONFIG_ATTRIB_GTYPE (CONFIG_ID)`
Get a reference to the variable name of a particular configuration field.
e.g. for `CONFIG_ID`: `GST_GL_CONFIG_ATTRIB_NAME (CONFIG_ID)`
The canonical name of a #GstStructure that contains a configuration for a
#GstGLContext.
The name used in #GstContext queries for requesting a #GstGLDisplay
The name of the GL memory allocator
The name of the GL Memory PBO allocator
List of video formats that are supported by #GstGLMemory
The name of the GL renderbuffer allocator
String used for %GST_GL_TEXTURE_TARGET_2D in things like caps values
String used for %GST_GL_TEXTURE_TARGET_EXTERNAL_OES in things like caps values
String used for %GST_GL_TEXTURE_TARGET_RECTANGLE in things like caps values
Cast to the current function type for generic window callbacks
the function to cast
Cast to the current function type for window resize callbacks
the function to cast
Flag indicating that we should map the GL object instead of to system memory.
Combining #GST_MAP_GL with #GST_MAP_WRITE has the same semantics as though
you are writing to OpenGL. Conversely, combining #GST_MAP_GL with
#GST_MAP_READ has the same semantics as though you are reading from OpenGL.
the #GstGLSyncMeta added to #GstBuffer
a #GstGLContext
a #GstBuffer
the #GstGLSyncMeta added to #GstBuffer
a #GstGLContext
a #GstBuffer
sync data to hold
the currently set #GstGLAllocationParams or %NULL
a buffer pool config
Sets @params on @config
a buffer pool config
a #GstGLAllocationParams
Whether @display was in @context
a #GstContext
resulting #GstGLDisplay
Sets @display on @context
a #GstContext
resulting #GstGLDisplay
The #GstGLAPI represented by @api_s
a space separated string of OpenGL apis
A space separated string of the OpenGL api's enabled in @api
a #GstGLAPI to stringify
Free with gst_gl_async_debug_free()
a new #GstGLAsyncDebug
a new #GstGLBaseMemory from @allocator with the requested @params.
a #GstGLBaseMemoryAllocator
the #GstGLAllocationParams to allocate the memory with
the quark used for #GstGLBaseMemory in #GError's
Initializes the GL Base Memory allocator. It is safe to call this function
multiple times. This must be called before any other GstGLBaseMemory operation.
Initializes the GL Buffer allocator. It is safe to call this function
multiple times. This must be called before any other #GstGLBuffer operation.
whether @name is in the space separated list of @ext
the extension to search for
the list of possible extensions
a string version of @caveat or %NULL if @caveat does not
exist.
the #GstGLConfigCaveat
a string version of @caveat or %NULL if @surface_type does not
exist.
the #GstGLConfigSurfaceType
the quark used for #GstGLContext in #GError's
Perform the steps necessary for retrieving a #GstGLDisplay and (optionally)
an application provided #GstGLContext from the surrounding elements or from
the application using the #GstContext mechanism.
If the contents of @display_ptr or @other_context_ptr are not %NULL, then no
#GstContext query is necessary for #GstGLDisplay or #GstGLContext retrieval
or is performed.
This performs #GstContext queries (if necessary) for a winsys display
connection with %GST_GL_DISPLAY_CONTEXT_TYPE, "gst.x11.display.handle", and
"GstWaylandDisplayHandleContextType" stopping after the first successful
retrieval.
This also performs a #GstContext query (if necessary) for an optional
application provided #GstGLContext using the name "gst.gl.app_context".
The returned #GstGLContext will be shared with a GStreamer created OpenGL context.
whether a #GstGLDisplay exists in @display_ptr
the #GstElement running the query
the resulting #GstGLDisplay
the resulting #GstGLContext
the #GstGLFormat necessary for holding the data in @plane of @vinfo
a #GstGLContext
a #GstVideoInfo
the plane number in @vinfo
Whether @format is supported by @context based on the OpenGL API,
version, or available OpenGL extension/s.
a #GstGLContext
the #GstGLFormat to check is supported by @context
Get the unsized format and type from @format for usage in glReadPixels,
glTex{Sub}Image*, glTexImage* and similar functions.
the sized internal #GstGLFormat
location for the resulting unsized #GstGLFormat
location for the resulting GL type
the number of bytes the specified @format, @type combination takes
per pixel
the OpenGL format, `GL_RGBA`, `GL_LUMINANCE`, etc
the OpenGL type, `GL_UNSIGNED_BYTE`, `GL_FLOAT`, etc
Retrieves the stored 4x4 affine transformation matrix stored in @meta in
NDC coordinates. if @meta is NULL, an identity matrix is returned.
NDC is a left-handed coordinate system
- x - [-1, 1] - +ve X moves right
- y - [-1, 1] - +ve Y moves up
- z - [-1, 1] - +ve Z moves into
a #GstVideoAffineTransformationMeta
result of the 4x4 matrix
Retrieve the size in bytes of a video plane of data with a certain alignment
a #GstVideoInfo
a #GstVideoAlignment or %NULL
plane number in @info to retrieve the data size of
difference between the supposed start of the plane from the @info
and where the data from the previous plane ends.
a #GstVideoInfo
a #GstVideoAlignment or %NULL
plane number in @info to retrieve the data size of
Whether the @query was successfully responded to from the passed
@display, @context, and @other_context.
a #GstElement
a #GstQuery of type %GST_QUERY_CONTEXT
a #GstGLDisplay
a #GstGLContext
application provided #GstGLContext
Helper function for implementing #GstElementClass.set_context() in
OpenGL capable elements.
Retrieve's the #GstGLDisplay or #GstGLContext in @context and places the
result in @display or @other_context respectively.
whether the @display or @other_context could be set successfully
a #GstElement
a #GstContext
location of a #GstGLDisplay
location of a #GstGLContext
Inserts a marker into a GL debug stream. Requires the 'gldebugmarker'
debug category to be at least %GST_LEVEL_FIXME.
a #GstGLContext
a printf-style format string
arguments form @format
Initializes the GL Base Texture allocator. It is safe to call this function
multiple times. This must be called before any other GstGLMemory operation.
whether the buffer was correctly setup
the @GstGLMemoryAllocator to allocate from
a #GstBuffer to setup
the #GstGLVideoAllocationParams to allocate with
a list of #GstGLFormat's to allocate with.
a list of wrapped data pointers
the number of elements in @tex_formats and @wrapped_data
Multiplies two 4x4 matrices, @a and @b, and stores the result, a
2-dimensional array of #gfloat, in @result.
a 2-dimensional 4x4 array of #gfloat
another 2-dimensional 4x4 array of #gfloat
the result of the multiplication
The #GstGLPlatform represented by @platform_s
a space separated string of OpenGL platformss
A space separated string of the OpenGL platforms enabled in @platform
a #GstGLPlatform to stringify
Performs a GST_QUERY_CONTEXT query of type "gst.gl.local_context" on all
#GstPads in @element of @direction for the local OpenGL context used by
GStreamer elements.
whether @context_ptr contains a #GstGLContext
a #GstElement to query from
the #GstPadDirection to query
location containing the current and/or resulting
#GstGLContext
Free with gst_gl_query_free()
a new #GstGLQuery
a #GstGLContext
the #GstGLQueryType to create
Initializes the GL Base Texture allocator. It is safe to call this function
multiple times. This must be called before any other GstGLRenderbuffer operation.
Set the 4x4 affine transformation matrix stored in @meta from the
NDC coordinates in @matrix.
a #GstVideoAffineTransformationMeta
a 4x4 matrix
the sized internal format specified by @format and @type that can
be used in @context
a #GstGLContext
an OpenGL format, `GL_RGBA`, `GL_LUMINANCE`, etc
an OpenGL type, `GL_UNSIGNED_BYTE`, `GL_FLOAT`, etc
the #GstGLTextureTarget that's equiavalant to @target or
%GST_GL_TEXTURE_TARGET_NONE
an OpenGL texture binding target
the #GstGLTextureTarget represented by @str or
%GST_GL_TEXTURE_TARGET_NONE
a string equivalent to one of the GST_GL_TEXTURE_TARGET_*_STR values
a string representing the @GstBufferPoolOption specified by @target
a #GstGLTextureTarget
the OpenGL value for binding the @target with glBindTexture() and
similar functions or 0
a #GstGLTextureTarget
the stringified version of @target or %NULL
a #GstGLTextureTarget
See gst_gl_value_set_texture_target_from_mask() for what entails a mask
the mask of #GstGLTextureTarget's in @value or
%GST_GL_TEXTURE_TARGET_NONE on failure
an initialized #GValue of type G_TYPE_STRING
whether the @target could be set on @value
an initialized #GValue of type G_TYPE_STRING
a #GstGLTextureTarget's
A mask is a bitwise OR of (1 << target) where target is a valid
#GstGLTextureTarget
whether the @target_mask could be set on @value
an uninitialized #GValue
a bitwise mask of #GstGLTextureTarget's
The minimum supported #GstGLSLVersion available for @gl_api, @maj and @min
the #GstGLAPI
the major GL version
the minor GL version
the quark used for #GstGLWindow in #GError's
the quark used for GstGLSL in #GError's
the #GstGLSLProfile of @string or %GST_GLSL_PROFILE_NONE on error
a GLSL version string
the name for @profile or %NULL on error
a #GstGLSLProfile
Note: this function first searches the first 1 kilobytes for a `#version`
preprocessor directive and then executes gst_glsl_version_profile_from_string().
TRUE if a valid `#version` string was found, FALSE otherwise
string to search for a valid `#version` string
resulting #GstGLSLVersion
resulting #GstGLSLProfile
the #GstGLSLVersion of @string or %GST_GLSL_VERSION_NONE on error
a GLSL version string
Note: this function expects either a `#version` GLSL preprocesser directive
or a valid GLSL version and/or profile.
TRUE if a valid `#version` string was found, FALSE otherwise
a valid GLSL `#version` string
resulting #GstGLSLVersion
resulting #GstGLSLVersion
the combined GLSL `#version` string for @version and @profile
a #GstGLSLVersion
a #GstGLSLVersion
the name of @version or %NULL on error
a #GstGLSLVersion
whether the memory at @mem is a #GstGLBaseMemory
a #GstMemory
whether the memory at @mem is a #GstGLBuffer
a #GstMemory
whether the memory at @mem is a #GstGLMemory
a #GstMemory
whether the memory at @mem is a #GstGLMemoryPBO
a #GstMemory
whether the memory at @mem is a #GstGLRenderbuffer
a #GstMemory