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 parent #GstVideoAggregator the currently configured #GstGLDisplay the currently configured #GstGLContext the parent #GstVideoAggregatorClass the logical-OR of #GstGLAPI's supported by this element whether the start was successful parent #GstVideoAggregatorPad parent #GstVideoAggregatorPadClass #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 a shader string that can be used to swizzle vec components in a GLSL shader. a #GstGLContext 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 The returned glsl function has declaration: `vec3 yuv_to_rgb (vec3 rgb, vec3 offset, vec3 ycoeff, vec3 ucoeff, vec3 vcoeff);` The Y component is placed in the 0th index of the returned value, The U component in the 1st, and the V component in the 2nd. offset, ycoeff, ucoeff, and vcoeff are the specific coefficients and offset used for the conversion. a glsl function that can be used to convert from yuv to rgb a #GstGLContext 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', 'surfaceless', '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 EGLDevice display. EAGL display. WinRT display. Android display. Mesa3D surfaceless display using the EGL_PLATFORM_SURFACELESS_MESA extension. 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 the number of components in a #GstGLFormat the #GstGLFormat 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 the configured output #GstCaps 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 parent #GstGLBaseMixerPad the current input texture for this pad parent #GstGLBaseMixerPadClass 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 Fixate the @othercaps based on the information of the @caps. the fixated caps a #GstGLUpload the pad #GstPadDirection a #GstCaps as the reference a #GstCaps to fixate 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 See gst_buffer_pool_config_set_gl_min_free_queue_size(). then number of buffers configured the free queue a buffer pool config Sets @params on @config a buffer pool config a #GstGLAllocationParams Instructs the #GstGLBufferPool to keep @queue_size amount of buffers around before allowing them for reuse. This is helpful to allow GPU processing to complete before the CPU operations on the same buffer could start. Particularly useful when uploading or downloading data to/from the GPU. A value of 0 disabled this functionality. This value must be less than the configured maximum amount of buffers for this @config. a buffer pool config the number of buffers 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 the number of components in a #GstGLFormat the #GstGLFormat 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 Given @swizzle, produce @inversion such that: @swizzle[@inversion[i]] == identity[i] where: - identity = {0, 1, 2,...} - unset fields are marked by -1 input swizzle resulting inversion 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 Calculates the swizzle indices for @video_format and @gl_format in order to access a texture such that accessing a texel from a texture through the swizzle index produces values in the order (R, G, B, A) or (Y, U, V, A). For multi-planer formats, the swizzle index uses the same component order (RGBA/YUVA) and should be applied after combining multiple planes into a single rgba/yuva value. e.g. sampling from a NV12 format would have Y from one texture and UV from another texture into a (Y, U, V) value. Add an Aplha component and then perform swizzling. Sampling from NV21 would produce (Y, V, U) which is then swizzled to (Y, U, V). whether valid swizzle indices could be found the #GstVideoFormat in use the returned swizzle indices 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 Provides some helper API for dealing with OpenGL API's and platforms A common list of well-known values for what a config retrievable from or set on a `GstGLContext` may contain. Some useful utilities for converting between various formats and OpenGL formats. 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