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 # Returns a copy of the `GLAllocationParams` specified by `self` or `None` on failure Copies the dynamically allocated data from `self` to `dest`. Direct subclasses should call this function in their own overridden copy function. ## `dest` the destination `GLAllocationParams` Frees the `GLAllocationParams` and all associated data. Frees the dynamically allocated data in `self`. Direct subclasses should call this function in their own overridden free function. `notify` will be called once for each allocated memory using these `self` when freeing the memory. ## `struct_size` the struct size of the implementation ## `alloc_flags` some alloc flags ## `copy` a copy function ## `free` a free function ## `context` a `GLContext` ## `alloc_size` the number of bytes to allocate. ## `alloc_params` a `gst::AllocationParams` to apply ## `wrapped_data` a sysmem data pointer to initialize the allocation with ## `gl_handle` a GL handle to initialize the allocation with ## `user_data` user data to call `notify` with ## `notify` a `GDestroyNotify` # Returns whether the parameters could be initialized `GLBaseFilter` handles the nitty gritty details of retrieving an OpenGL context. It also provided some wrappers around `gst_base::BaseTransform`'s `start()`, `stop()` and `set_caps()` virtual methods that ensure an OpenGL context is available and current in the calling thread. # Implements [`GLBaseFilterExt`](trait@crate::GLBaseFilterExt), [`trait@gst_base::BaseTransformExt`], [`trait@gst::ElementExt`], [`trait@gst::ObjectExt`], [`trait@glib::object::ObjectExt`] Trait containing all `GLBaseFilter` methods. # Implementors [`GLBaseFilter`](struct@crate::GLBaseFilter), [`GLFilter`](struct@crate::GLFilter) Feature: `v1_16` # Returns Whether an OpenGL context could be retrieved or created successfully Feature: `v1_18` # Returns the `GLContext` found by `self` GstGLBaseMemory is a `gst::Memory` subclass providing the basis of support for the mapping of GL buffers. Data is uploaded or downloaded from the GPU as is necessary. Note: only intended for subclass usage to allocate the system memory buffer on demand. If there is already a non-NULL data pointer in `self`->data, then this function imply returns TRUE. # Returns whether the system memory could be allocated Initializes `self` with the required parameters ## `allocator` the `gst::Allocator` to initialize with ## `parent` the parent `gst::Memory` to initialize with ## `context` the `GLContext` to initialize with ## `params` the [`crate::gst::AllocationParams`] (XXX: @-reference does not belong to GLBaseMemory!) to initialize with ## `size` the number of bytes to be allocated ## `user_data` user data to call `notify` with ## `notify` a `GDestroyNotify` ## `dest` the destination `GLBaseMemory` ## `offset` the offset to start at ## `size` the number of bytes to copy # Returns whether the copy succeeded. ## `allocator` a `GLBaseMemoryAllocator` ## `params` the `GLAllocationParams` to allocate the memory with # Returns a new `GLBaseMemory` from `allocator` with the requested `params`. 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 `GLBaseMemoryAllocator` struct This is an Abstract Base Class, you cannot instantiate it. # Implements [`trait@gst::AllocatorExt`], [`trait@gst::ObjectExt`], [`trait@glib::object::ObjectExt`] GstGLBuffer is a `gst::Memory` subclass providing support for the mapping of GL buffers. Data is uploaded or downloaded from the GPU as is necessary. Initializes the GL Buffer allocator. It is safe to call this function multiple times. This must be called before any other `GLBuffer` operation. `GLColorConvert` is an object that converts between color spaces and/or formats using OpenGL Shaders. A `GLColorConvert` can be created with `GLColorConvert::new`, the configuration negotiated with `GLColorConvert::transform_caps` and the conversion performed with `GLColorConvert::perform`. The glcolorconvertelement provides a GStreamer element that uses `GLColorConvert` to convert between video formats and color spaces. # Implements [`trait@gst::ObjectExt`], [`trait@glib::object::ObjectExt`] ## `context` a `GLContext` # Returns a new `GLColorConvert` object Provides an implementation of `gst_base::BaseTransformClass.fixate_caps`() ## `context` a `GLContext` to use for transforming `caps` ## `direction` a `gst::PadDirection` ## `caps` the `gst::Caps` of `direction` ## `other` the `gst::Caps` to fixate # Returns the fixated `gst::Caps` Provides an implementation of `gst_base::BaseTransformClass.transform_caps`() ## `context` a `GLContext` to use for transforming `caps` ## `direction` a `gst::PadDirection` ## `caps` the `gst::Caps` to transform ## `filter` a set of filter `gst::Caps` # Returns the converted `gst::Caps` Provides an implementation of `gst_base::BaseTransformClass.decide_allocation`() ## `query` a completed ALLOCATION `gst::Query` # Returns whether the allocation parameters were successfully chosen Converts the data contained by `inbuf` using the formats specified by the `gst::Caps` passed to `GLColorConvert::set_caps` ## `inbuf` the `GLMemory` filled `gst::Buffer` to convert # Returns a converted `gst::Buffer` or `None` Initializes `self` with the information required for conversion. ## `in_caps` input `gst::Caps` ## `out_caps` output `gst::Caps` `GLContext` 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. This is an Abstract Base Class, you cannot instantiate it. # Implements [`GLContextExt`](trait@crate::GLContextExt), [`trait@gst::ObjectExt`], [`trait@glib::object::ObjectExt`], [`GLContextExtManual`](trait@crate::GLContextExtManual) Trait containing all `GLContext` methods. # Implementors [`GLContext`](struct@crate::GLContext) Create a new `GLContext` with the specified `display` ## `display` a `GLDisplay` # Returns a new `GLContext` Wraps an existing OpenGL context into a `GLContext`. Note: The caller is responsible for ensuring that the OpenGL context represented by `handle` stays alive while the returned `GLContext` is active. `context_type` must not be `GLPlatform::None` or `GLPlatform::Any` `available_apis` must not be `GLAPI::None` or `GLAPI::Any` ## `display` a `GLDisplay` ## `handle` the OpenGL context to wrap ## `context_type` a `GLPlatform` specifying the type of context in `handle` ## `available_apis` a `GLAPI` containing the available OpenGL apis in `handle` # Returns a `GLContext` wrapping `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: `GLContext::get_proc_address` ## `gl_api` a `GLAPI` ## `name` then function to get the address of # Returns an address pointing to `name` or `None` See also `GLContextExt::activate`. # Returns the `GLContext` active in the current thread or `None` If an error occurs, `major` and `minor` are not modified and `GLAPI::None` is returned. ## `platform` the `GLPlatform` to retrieve the API for ## `major` the major version ## `minor` the minor version # Returns The version supported by the OpenGL context current in the calling thread or `GLAPI::None` ## `context_type` a `GLPlatform` specifying the type of context to retrieve # Returns The OpenGL context handle current in the calling thread or `None` Attempts to use the `context_type` specific GetProcAddress implementations to retrieve `name`. See also `GLContext::get_proc_address`. ## `context_type` a `GLPlatform` ## `gl_api` a `GLAPI` ## `name` the name of the function to retrieve # Returns a function pointer for `name`, or `None` (De)activate the OpenGL context represented by this `self`. In OpenGL terms, calls eglMakeCurrent or similar with this context and the currently set window. See `GLContextExt::set_window` for details. ## `activate` `true` to activate, `false` to deactivate # Returns Whether the activation succeeded Note: This will always fail for two wrapped `GLContext`'s ## `other_context` another `GLContext` # Returns whether `self` and `other_context` are able to share OpenGL resources. 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. ## `feature` a platform specific feature # Returns Whether `feature` is supported by `self` ## `fbo_target` the GL value of the framebuffer target, GL_FRAMEBUFFER, GL_READ_FRAMEBUFFER, GL_DRAW_FRAMEBUFFER # Returns whether whether the current framebuffer is complete ## `api` api type required ## `maj` major version required ## `min` minor version required # Returns whether OpenGL context implements the required api and specified version. Unbind the current framebuffer Clear's the currently set shader from the GL state machine. Note: must be called in the GL thread. 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. If an error occurs, and `error` is not `None`, then error will contain details of the error and `false` will be returned. Should only be called once. ## `other_context` a `GLContext` to share OpenGL objects with # Returns whether the context could successfully be created Destroys an OpenGL context. Should only be called after `GLContextExt::create` has been successfully called for this context. Fills `self`'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 `GLContext`'s. # Returns the `GLDisplay` associated with this `self` Get the currently enabled OpenGL api. The currently available API may be limited by the `GLDisplay` in use and/or the `GLWindow` chosen. # Returns the available OpenGL api Gets the backing OpenGL context used by `self`. # Returns The platform specific backing OpenGL context Gets the OpenGL platform that used by `self`. # Returns The platform specific backing OpenGL context Get the version of the OpenGL platform (GLX, EGL, etc) used. Only valid after a call to `GLContextExt::create`. ## `major` return for the major version ## `minor` return for the minor version Returns the OpenGL version implemented by `self`. See `GLContextExt::get_gl_api` for retrieving the OpenGL api implemented by `self`. ## `maj` resulting major version ## `min` 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 `self`. The caller is responsible for ensuring that the returned function is a valid function to call in `self` 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. ```C void (GSTGLAPI *PFN_glGetIntegerv) (GLenum name, GLint * ret) ``` ## `name` an opengl function name # Returns a function pointer or `None` # Returns The `glib::Thread`, `self` is current in or NULL # Returns the currently set window # Returns Whether the `GLContext` has been shared with another `GLContext` Will internally set `self` as shared with `share` ## `share` another `GLContext` Set's the current window on `self` to `window`. The window can only be changed before `GLContextExt::create` has been called and the `window` is not already running. ## `window` a `GLWindow` # Returns Whether the window was successfully updated ## `version` a `GLSLVersion` ## `profile` a `GLSLProfile` # Returns Whether `self` supports the combination of `version` with `profile` Feature: `v1_16` ## `version` a `GLSLVersion` ## `profile` a `GLSLProfile` # Returns whether `self` supports the 'precision' specifier in GLSL shaders Feature: `v1_16` ## `version` a `GLSLVersion` ## `profile` a `GLSLProfile` # Returns whether `self` supports the 'precision highp' specifier in GLSL shaders Swap the front and back buffers on the window attached to `self`. This will display the frame on the next refresh cycle. Execute `func` in the OpenGL thread of `self` with `data` MT-safe ## `func` a `GstGLContextThreadFunc` ## `data` user data to call `func` with 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 `GLDisplay` represents a connection to the underlying windowing system. Elements are required to make use of `gst::Context` to share and propagate a `GLDisplay`. 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\(). # Implements [`GLDisplayExt`](trait@crate::GLDisplayExt), [`trait@gst::ObjectExt`], [`trait@glib::object::ObjectExt`] Trait containing all `GLDisplay` methods. # Implementors [`GLDisplay`](struct@crate::GLDisplay) # Returns a new `GLDisplay` ## `context` a `GLContext` # Returns whether `context` was successfully added. `false` may be returned if there already exists another context for `context`'s active thread. Must be called with the object lock held. It requires the display's object lock to be held. ## `other_context` other `GLContext` to share resources with. ## `p_context` resulting `GLContext` # Returns whether a new context could be created. # Returns a new `GLWindow` for `self` or `None`. 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 `GLContextExt::get_gl_api` for the retrieving the API supported by a `GLContext`. ## `gl_api` a `GLAPI` to filter with Deprecated for `GLDisplayExt::retrieve_window`. Execute `compare_func` over the list of windows stored by `self`. The first argument to `compare_func` is the `GLWindow` being checked and the second argument is `data`. ## `data` some data to pass to `compare_func` ## `compare_func` a comparison function to run # Returns The first `GLWindow` that causes a match from `compare_func` see `GLDisplayExt::filter_gl_api` for what the returned value represents # Returns the `GLAPI` configured for `self` ## `thread` a `glib::Thread` # Returns the `GLContext` current on `thread` or `None` Must be called with the object lock held. # Returns the native handle for the display # Returns the `GLDisplayType` of `self` Must be called with the object lock held. Feature: `v1_18` ## `context` the `GLContext` to remove ## `window` a `GLWindow` to remove # Returns if `window` could be removed from `self` Execute `compare_func` over the list of windows stored by `self`. The first argument to `compare_func` is the `GLWindow` being checked and the second argument is `data`. Feature: `v1_18` ## `data` some data to pass to `compare_func` ## `compare_func` a comparison function to run # Returns The first `GLWindow` that causes a match from `compare_func` Overrides the [`crate::GLContext`] (XXX: @-reference does not belong to GLDisplayExt!) creation mechanism. It can be called in any thread and it is emitted with display's object lock held. ## `context` other context to share resources with. # Returns the new context. no display type X11 display Wayland display Cocoa display Win32 display Dispmanx display EGL display Vivante Framebuffer display Mesa3D GBM display EGLDevice display (Since: 1.18) any display type `GLFilter` helps to implement simple OpenGL filter elements taking a single input and producing a single output with a `GLFramebuffer` # Implements [`GLFilterExt`](trait@crate::GLFilterExt), [`GLBaseFilterExt`](trait@crate::GLBaseFilterExt), [`trait@gst_base::BaseTransformExt`], [`trait@gst::ElementExt`], [`trait@gst::ObjectExt`], [`trait@glib::object::ObjectExt`] Trait containing all `GLFilter` methods. # Implementors [`GLFilter`](struct@crate::GLFilter) 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. Calls filter_texture vfunc with correctly mapped `GstGLMemorys` ## `input` an input buffer ## `output` an output buffer # Returns whether the transformation succeeded Transforms `input` into `output` using `func` on through FBO. ## `input` the input texture ## `output` the output texture ## `func` the function to transform `input` into `output`. called with `data` ## `data` the data associated with `func` # Returns the return value of `func` Transforms `input` into `output` using `shader` with a FBO. See also: `GLFilterExt::render_to_target` ## `input` the input texture ## `output` the output texture ## `shader` the shader to use. Single component replicated across R, G, and B textures components Single component stored in the A texture component Combination of `GLFormat::Luminance` and `GLFormat::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 A `GLFramebuffer` represents and holds an OpenGL framebuffer object with it's associated attachments. A `GLFramebuffer` can be created with `GLFramebuffer::new` or `GLFramebuffer::new_with_default_depth` and bound with `GLFramebufferExt::bind`. Other resources can be bound with `GLFramebufferExt::attach` Note: OpenGL framebuffers are not shareable resources so cannot be used between multiple OpenGL contexts. # Implements [`GLFramebufferExt`](trait@crate::GLFramebufferExt), [`trait@gst::ObjectExt`], [`trait@glib::object::ObjectExt`] Trait containing all `GLFramebuffer` methods. # Implementors [`GLFramebuffer`](struct@crate::GLFramebuffer) ## `context` a `GLContext` # Returns a new `GLFramebuffer` ## `context` a `GLContext` ## `width` width for the depth buffer ## `height` for the depth buffer # Returns a new `GLFramebuffer` with a depth buffer of `width` and `height` attach `mem` to `attachment_point` ## `attachment_point` the OpenGL attachment point to bind `mem` to ## `mem` the memory object to bind to `attachment_point` Bind `self` into the current thread Perform the steps necessary to have the output of a glDraw* command in `func` update the contents of `mem`. ## `mem` the `GLMemory` to draw to ## `func` the function to run ## `user_data` data to pass to `func` # Returns the result of executing `func` Retrieve the effective dimensions from the current attachments attached to `self`. ## `width` output width ## `height` output height # Returns the OpenGL id for `self` GstGLMemory is a `GLBaseMemory` subclass providing support for the mapping of OpenGL textures. `GLMemory` is created or wrapped through `GLBaseMemory::alloc` with `GLVideoAllocationParams`. Data is uploaded or downloaded from the GPU as is necessary. The `gst::Caps` that is used for `GLMemory` based buffers should contain the `GST_CAPS_FEATURE_MEMORY_GL_MEMORY` as a `gst::CapsFeatures` and should contain a 'texture-target' field with one of the `GLTextureTarget` values as a string, i.e. some combination of 'texture-target=(string){2D, rectangle, external-oes}'. Copies `self` into the texture specified by `tex_id`. The format of `tex_id` is specified by `tex_format`, `width` and `height`. ## `tex_id` OpenGL texture id ## `target` the `GLTextureTarget` ## `tex_format` the `GLFormat` ## `width` width of `tex_id` ## `height` height of `tex_id` # Returns Whether the copy succeeded Copies the texture in `GLMemory` into the texture specified by `tex_id`, `out_target`, `out_tex_format`, `out_width` and `out_height`. ## `tex_id` the destination texture id ## `out_target` the destination `GLTextureTarget` ## `out_tex_format` the destination `GLFormat` ## `out_width` the destination width ## `out_height` the destination height # Returns whether the copy succeeded. # Returns the `GLFormat` of `self` # Returns the texture height of `self` # Returns the OpenGL texture handle of `self` # Returns the `GLTextureTarget` of `self` # Returns the texture width of `self` Initializes `self` with the required parameters. `info` is assumed to have already have been modified with `gst_video::VideoInfo::align`. ## `allocator` the `gst::Allocator` to initialize with ## `parent` the parent `gst::Memory` to initialize with ## `context` the `GLContext` to initialize with ## `target` the `GLTextureTarget` for this `GLMemory` ## `tex_format` the `GLFormat` for this `GLMemory` ## `params` the [`crate::gst::AllocationParams`] (XXX: @-reference does not belong to GLMemory!) to initialize with ## `info` the `gst_video::VideoInfo` for this `GLMemory` ## `plane` the plane number (starting from 0) for this `GLMemory` ## `valign` optional `gst_video::VideoAlignment` parameters ## `user_data` user data to call `notify` with ## `notify` a `GDestroyNotify` Reads the texture in `GLMemory` 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. ## `write_pointer` the data pointer to pass to glReadPixels # Returns whether theread operation succeeded Reads the texture in `read_pointer` into `self`. See `GLMemory::read_pixels` for what `read_pointer` signifies. ## `read_pointer` 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. ## `allocator` the [`crate::GLMemoryAllocator`] (XXX: @-reference does not belong to GLMemory!) to allocate from ## `buffer` a `gst::Buffer` to setup ## `params` the `GLVideoAllocationParams` to allocate with ## `tex_formats` a list of `GLFormat`'s to allocate with. ## `wrapped_data` a list of wrapped data pointers ## `n_wrapped_pointers` the number of elements in `tex_formats` and `wrapped_data` # Returns whether the buffer was correctly setup Opaque `GLMemoryAllocator` struct # Implements [`GLBaseMemoryAllocatorExt`](trait@crate::GLBaseMemoryAllocatorExt), [`trait@gst::AllocatorExt`], [`trait@gst::ObjectExt`], [`trait@glib::object::ObjectExt`] ## `context` a `GLContext` # Returns the default `GLMemoryAllocator` supported by `context` Opaque `GLOverlayCompositor` object # Implements [`trait@gst::ObjectExt`], [`trait@glib::object::ObjectExt`] 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 A `GLQuery` represents and holds an OpenGL query object. Various types of queries can be run or counters retrieved. Record the result of a counter End counting the query Frees a `GLQuery` ## `context` a `GLContext` ## `query_type` the `GLQueryType` # Returns the result of the query Start counting the query Free any dynamically allocated resources 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. ## `element` a `gst::Element` to query from ## `direction` the `gst::PadDirection` to query ## `context_ptr` location containing the current and/or resulting `GLContext` # Returns whether `context_ptr` contains a `GLContext` Free with `GLQuery::free` ## `context` a `GLContext` ## `query_type` the `GLQueryType` to create # Returns a new `GLQuery` no query query the time elapsed query the current time Compilation stage that caused an error Compilation error occurred Link error occurred General program error occurred GLSL profiles no profile supported/available OpenGL|ES profile OpenGL core profile OpenGL compatibility profile any OpenGL/OpenGL|ES profile `GLSLStage` holds and represents a single OpenGL shader stage. # Implements [`trait@gst::ObjectExt`], [`trait@glib::object::ObjectExt`] ## `context` a `GLContext` ## `type_` the GL enum shader stage type # Returns a new `GLSLStage` of the specified `type_` ## `context` a `GLContext` ## `type_` the GL enum shader stage type ## `version` the `GLSLVersion` ## `profile` the `GLSLProfile` ## `str` a shader string # Returns a new `GLSLStage` of the specified `type_` ## `context` a `GLContext` ## `type_` the GL enum shader stage type ## `version` the `GLSLVersion` ## `profile` the `GLSLProfile` ## `n_strings` the number of strings in `str` ## `str` an array of strings concatted together to produce a shader # Returns a new `GLSLStage` of the specified `type_` # Returns whether the compilation succeeded # Returns The GL handle for this shader stage # Returns The GLSL profile for the current shader stage # Returns The GL shader type for this shader stage # Returns The GLSL version for the current shader stage Replaces the current shader string with `str`. ## `version` a `GLSLVersion` ## `profile` a `GLSLProfile` ## `n_strings` number of strings in `str` ## `str` a GLSL shader string 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) # Implements [`trait@gst::ObjectExt`], [`trait@glib::object::ObjectExt`] Note: must be called in the GL thread ## `context` a `GLContext` # Returns a new empty `shader` Note: must be called in the GL thread ## `context` a `GLContext` # Returns a default `shader` or `None` on failure Each stage will attempt to be compiled and attached to `shader`. Then the shader will be linked. On error, `None` will be returned and `error` will contain the details of the error. Note: must be called in the GL thread ## `context` a `GLContext` ## `error` a `glib::Error` # Returns a new `shader` with the specified stages. Each stage will attempt to be compiled and attached to `shader`. On error, `None` will be returned and `error` will contain the details of the error. Note: must be called in the GL thread ## `context` a `GLContext` ## `error` a `glib::Error` # Returns a new `shader` with the specified stages. Feature: `v1_16` ## `context` a `GLContext` ## `version` a `GLSLVersion` ## `profile` a `GLSLProfile` # Returns a passthrough shader string for copying an input external-oes texture to the output Feature: `v1_16` ## `context` a `GLContext` ## `version` a `GLSLVersion` ## `profile` a `GLSLProfile` # Returns a passthrough shader string for copying an input texture to the output 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. Feature: `v1_16` ## `context` a `GLContext` ## `version` a `GLSLVersion` ## `profile` a `GLSLProfile` # Returns a shader string defining the precision of float types based on `context`, `version` and `profile` Attaches `stage` to `self`. `stage` must have been successfully compiled with `GLSLStage::compile`. Note: must be called in the GL thread ## `stage` a `GLSLStage` to attach # Returns whether `stage` could be attached to `self` Attaches `stage` to `self`. `stage` must have been successfully compiled with `GLSLStage::compile`. Note: must be called in the GL thread ## `stage` a `GLSLStage` to attach # Returns whether `stage` could be attached to `self` Bind attribute `name` to the specified location `index` using `glBindAttributeLocation()`. ## `index` attribute index to set ## `name` name of the attribute Bind attribute `name` to the specified location `index` using `glBindFragDataLocation()`. ## `index` attribute index to set ## `name` name of the attribute Compiles `stage` and attaches it to `self`. Note: must be called in the GL thread ## `stage` a `GLSLStage` to attach # Returns whether `stage` could be compiled and attached to `self` Detaches `stage` from `self`. `stage` must have been successfully attached to `self` with `GLShader::attach` or `GLShader::attach_unlocked`. Note: must be called in the GL thread ## `stage` a `GLSLStage` to attach Detaches `stage` from `self`. `stage` must have been successfully attached to `self` with `GLShader::attach` or `GLShader::attach_unlocked`. Note: must be called in the GL thread ## `stage` a `GLSLStage` to attach ## `name` name of the attribute # Returns the attribute index for `name` in `self` or -1 on failure # Returns the GL program handle for this shader Note: must be called in the GL thread # Returns whether `self` has been successfully linked Links the current list of `GLSLStage`'s in `self`. Note: must be called in the GL thread # Returns whether `self` could be linked together. Releases the shader and stages. Note: must be called in the GL thread Releases the shader and stages. Note: must be called in the GL thread Perform `glUniform1f()` for `name` on `self` ## `name` name of the uniform ## `value` value to set Perform `glUniform1fv()` for `name` on `self` ## `name` name of the uniform ## `count` number of values to set ## `value` values to set Perform `glUniform1i()` for `name` on `self` ## `name` name of the uniform ## `value` value to set Perform `glUniform1iv()` for `name` on `self` ## `name` name of the uniform ## `count` number of values to set ## `value` values to set Perform `glUniform2f()` for `name` on `self` ## `name` name of the uniform ## `v0` first value to set ## `v1` second value to set Perform `glUniform2fv()` for `name` on `self` ## `name` name of the uniform ## `count` number of values to set ## `value` values to set Perform `glUniform2i()` for `name` on `self` ## `name` name of the uniform ## `v0` first value to set ## `v1` second value to set Perform `glUniform2iv()` for `name` on `self` ## `name` name of the uniform ## `count` number of values to set ## `value` values to set Perform `glUniform3f()` for `name` on `self` ## `name` name of the uniform ## `v0` first value to set ## `v1` second value to set ## `v2` third value to set Perform `glUniform3fv()` for `name` on `self` ## `name` name of the uniform ## `count` number of values to set ## `value` values to set Perform `glUniform3i()` for `name` on `self` ## `name` name of the uniform ## `v0` first value to set ## `v1` second value to set ## `v2` third value to set Perform `glUniform3iv()` for `name` on `self` ## `name` name of the uniform ## `count` number of values to set ## `value` values to set Perform `glUniform4f()` for `name` on `self` ## `name` name of the uniform ## `v0` first value to set ## `v1` second value to set ## `v2` third value to set ## `v3` fourth value to set Perform `glUniform4fv()` for `name` on `self` ## `name` name of the uniform ## `count` number of values to set ## `value` values to set Perform `glUniform4i()` for `name` on `self` ## `name` name of the uniform ## `v0` first value to set ## `v1` second value to set ## `v2` third value to set ## `v3` fourth value to set Perform `glUniform4iv()` for `name` on `self` ## `name` name of the uniform ## `count` number of values to set ## `value` values to set Perform `glUniformMatrix2fv()` for `name` on `self` ## `name` name of the uniform ## `count` number of 2x2 matrices to set ## `transpose` transpose the matrix ## `value` matrix to set Perform `glUniformMatrix2x3fv()` for `name` on `self` ## `name` name of the uniform ## `count` number of 2x3 matrices to set ## `transpose` transpose the matrix ## `value` values to set Perform `glUniformMatrix2x4fv()` for `name` on `self` ## `name` name of the uniform ## `count` number of 2x4 matrices to set ## `transpose` transpose the matrix ## `value` values to set Perform `glUniformMatrix3fv()` for `name` on `self` ## `name` name of the uniform ## `count` number of 3x3 matrices to set ## `transpose` transpose the matrix ## `value` values to set Perform `glUniformMatrix3x2fv()` for `name` on `self` ## `name` name of the uniform ## `count` number of 3x2 matrices to set ## `transpose` transpose the matrix ## `value` values to set Perform `glUniformMatrix3x4fv()` for `name` on `self` ## `name` name of the uniform ## `count` number of 3x4 matrices to set ## `transpose` transpose the matrix ## `value` values to set Perform `glUniformMatrix4fv()` for `name` on `self` ## `name` name of the uniform ## `count` number of 4x4 matrices to set ## `transpose` transpose the matrix ## `value` values to set Perform `glUniformMatrix4x2fv()` for `name` on `self` ## `name` name of the uniform ## `count` number of 4x2 matrices to set ## `transpose` transpose the matrix ## `value` values to set Perform `glUniformMatrix4x3fv()` for `name` on `self` ## `name` name of the uniform ## `count` number of 4x3 matrices to set ## `transpose` transpose the matrix ## `value` values to set Mark's `self` as being used for the next GL draw command. Note: must be called in the GL thread and `self` must have been linked. Output anaglyph type to generate when downmixing to mono Dubois optimised Green-Magenta anaglyph Dubois optimised Red-Cyan anaglyph Dubois optimised Amber-Blue anaglyph 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 `glib::object::Value`'s when e.g. dealing with `gst::Caps`. no texture target 2D texture target (`GL_TEXTURE_2D`) rectangle texture target (`GL_TEXTURE_RECTANGLE`) external oes texture target (`GL_TEXTURE_EXTERNAL_OES`) `GLUpload` is an object that uploads data from system memory into GL textures. A `GLUpload` can be created with `GLUpload::new` # Implements [`trait@gst::ObjectExt`], [`trait@glib::object::ObjectExt`] ## `context` a `GLContext` # Returns a new `GLUpload` object ## `in_caps` the input `gst::Caps` ## `out_caps` the output `gst::Caps` Uploads `buffer` using the transformation specified by `GLUpload::set_caps` creating a new `gst::Buffer` in `outbuf_ptr`. ## `buffer` input `gst::Buffer` ## `outbuf_ptr` resulting `gst::Buffer` # Returns whether the upload was successful Adds the required allocation parameters to support uploading. ## `decide_query` a `gst::Query` from a decide allocation ## `query` the proposed allocation query Initializes `self` with the information required for upload. ## `in_caps` input `gst::Caps` ## `out_caps` output `gst::Caps` # Returns whether `in_caps` and `out_caps` could be set on `self` No further processing required An unspecified error occurred The configuration is unsupported. This element requires a reconfiguration. private return value. ## `context` a `GLContext` ## `alloc_params` the `gst::AllocationParams` for sysmem mappings of the texture ## `v_info` the `gst_video::VideoInfo` for the texture ## `plane` the video plane of `v_info` to allocate ## `valign` any `gst_video::VideoAlignment` applied to symem mappings of the texture ## `target` the `GLTextureTarget` for the created textures ## `tex_format` the `GLFormat` for the created textures # Returns a new `GLVideoAllocationParams` for allocating `GLMemory`'s ## `context` a `GLContext` ## `alloc_params` the `gst::AllocationParams` for `wrapped_data` ## `v_info` the `gst_video::VideoInfo` for `wrapped_data` ## `plane` the video plane `wrapped_data` represents ## `valign` any `gst_video::VideoAlignment` applied to symem mappings of `wrapped_data` ## `target` the `GLTextureTarget` for `wrapped_data` ## `tex_format` the `GLFormat` for `wrapped_data` ## `wrapped_data` the data pointer to wrap ## `user_data` user data to call `notify` with ## `notify` a `GDestroyNotify` # Returns a new `GLVideoAllocationParams` for wrapping `wrapped_data` `gl_handle` is defined by the specific OpenGL handle being wrapped For `GLMemory` and `GLMemoryPBO` it is an OpenGL texture id. Other memory types may define it to require a different type of parameter. ## `context` a `GLContext` ## `alloc_params` the `gst::AllocationParams` for `tex_id` ## `v_info` the `gst_video::VideoInfo` for `tex_id` ## `plane` the video plane `tex_id` represents ## `valign` any `gst_video::VideoAlignment` applied to symem mappings of `tex_id` ## `target` the `GLTextureTarget` for `tex_id` ## `tex_format` the `GLFormat` for `tex_id` ## `gl_handle` the GL handle to wrap ## `user_data` user data to call `notify` with ## `notify` a `GDestroyNotify` # Returns a new `GLVideoAllocationParams` for wrapping `gl_handle` ## `context` a `GLContext` ## `alloc_params` the `gst::AllocationParams` for `tex_id` ## `v_info` the `gst_video::VideoInfo` for `tex_id` ## `plane` the video plane `tex_id` represents ## `valign` any `gst_video::VideoAlignment` applied to symem mappings of `tex_id` ## `target` the `GLTextureTarget` for `tex_id` ## `tex_format` the `GLFormat` for `tex_id` ## `tex_id` the GL texture to wrap ## `user_data` user data to call `notify` with ## `notify` a `GDestroyNotify` # Returns a new `GLVideoAllocationParams` for wrapping `tex_id` 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. ## `dest_vid` destination `GLVideoAllocationParams` 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. Intended for subclass usage ## `struct_size` the size of the struct in `self` ## `alloc_flags` some allocation flags ## `copy` a copy function ## `free` a free function ## `context` a `GLContext` ## `alloc_params` the `gst::AllocationParams` for `wrapped_data` ## `v_info` the `gst_video::VideoInfo` for `wrapped_data` ## `plane` the video plane `wrapped_data` represents ## `valign` any `gst_video::VideoAlignment` applied to symem mappings of `wrapped_data` ## `target` the `GLTextureTarget` ## `tex_format` the `GLFormat` ## `wrapped_data` the optional data pointer to wrap ## `gl_handle` the optional OpenGL handle to wrap or 0 ## `user_data` user data to call `notify` with ## `notify` a `GDestroyNotify` # Returns initializes `self` with the parameters specified Convert stereoscopic/multiview video using fragment shaders. # Implements [`trait@gst::ObjectExt`], [`trait@glib::object::ObjectExt`] # Returns a new `GLViewConvert` Provides an implementation of `gst_base::BaseTransformClass.fixate_caps`() ## `direction` a `gst::PadDirection` ## `caps` the `gst::Caps` of `direction` ## `othercaps` the `gst::Caps` to fixate # Returns the fixated `gst::Caps` Retrieve the processed output buffer placing the output in `outbuf_ptr`. ## `outbuf_ptr` a `gst::Buffer` # Returns a `gst::FlowReturn` Converts the data contained by `inbuf` using the formats specified by the `gst::Caps` passed to `GLViewConvert::set_caps` ## `inbuf` the `GLMemory` filled `gst::Buffer` to convert # Returns a converted `gst::Buffer` or `None` Reset `self` to the default state. Further operation will require setting the caps with `GLViewConvert::set_caps`. Initializes `self` with the information required for conversion. ## `in_caps` input `gst::Caps` ## `out_caps` output `gst::Caps` Set `context` on `self` ## `context` the `GLContext` to set Submit `input` to be processed by `self` ## `is_discont` true if we have a discontinuity ## `input` a `gst::Buffer` # Returns a `gst::FlowReturn` Provides an implementation of `gst_base::BaseTransformClass.transform_caps`() ## `direction` a `gst::PadDirection` ## `caps` the `gst::Caps` to transform ## `filter` a set of filter `gst::Caps` # Returns the converted `gst::Caps` GstGLWindow represents a window that elements can render into. A window can either be a user visible window (onscreen) or hidden (offscreen). This is an Abstract Base Class, you cannot instantiate it. # Implements [`GLWindowExt`](trait@crate::GLWindowExt), [`trait@gst::ObjectExt`], [`trait@glib::object::ObjectExt`] Trait containing all `GLWindow` methods. # Implementors [`GLWindow`](struct@crate::GLWindow) ## `display` a `GLDisplay` # Returns a new `GLWindow` using `display`'s connection Checks if `self` controls the GL viewport. Feature: `v1_16` # Returns `true` if `self` controls the GL viewport, otherwise `false` Redraw the window contents. Implementations should invoke the draw callback. # Returns the `GLContext` associated with this `self` # Returns the windowing system display handle for this `self` ## `width` resulting surface width ## `height` resulting surface height # Returns the window handle we are currently rendering into Tell a `self` 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 `self`. ## `handle_events` a `gboolean` indicating if events should be handled or not. Query whether `self` has output surface or not Feature: `v1_18` # Returns `true` if `self` has useable output surface Queue resizing of `self`. Quit the runloop's execution. Resize `self` to the given `width` and `height`. ## `width` new width ## `height` new height Start the execution of the runloop. Invoke `callback` with data on the window thread. `callback` is guaranteed to have executed when this function returns. ## `callback` function to invoke ## `data` data to invoke `callback` with Invoke `callback` with `data` on the window thread. The callback may not have been executed when this function returns. ## `callback` function to invoke ## `data` data to invoke `callback` with ## `destroy` called when `data` is not needed anymore Notify a `self` about a scroll event. A scroll signal holding the event coordinates will be emitted. Feature: `v1_18` ## `posx` x position of the mouse cursor ## `posy` y position of the mouse cursor ## `delta_x` the x offset of the scroll event ## `delta_y` the y offset of the scroll event Sets the callback called when the window is about to close. ## `callback` function to invoke ## `data` data to invoke `callback` with ## `destroy_notify` called when `data` is not needed any more Sets the draw callback called every time `GLWindowExt::draw` is called ## `callback` function to invoke ## `data` data to invoke `callback` with ## `destroy_notify` called when `data` is not needed any more Set the preferred width and height of the window. Implementations are free to ignore this information. ## `width` new preferred width ## `height` new preferred height Tell a `self` that it should render into a specific region of the window according to the `gst_video::VideoOverlay` interface. ## `x` x position ## `y` y position ## `width` width ## `height` height # Returns whether the specified region could be set Sets the resize callback called every time a resize of the window occurs. ## `callback` function to invoke ## `data` data to invoke `callback` with ## `destroy_notify` called when `data` is not needed any more Sets the window that this `self` should render into. Some implementations require this to be called with a valid handle before drawing can commence. ## `handle` handle to the window Present the window to the screen. Will be emitted when a key event is received by the GstGLwindow. ## `id` the name of the event ## `key` the id of the key pressed Will be emitted when a mouse event is received by the GstGLwindow. ## `id` the name of the event ## `button` the id of the button ## `x` the x coordinate of the mouse event ## `y` the y coordinate of the mouse event Will be emitted when a mouse scroll event is received by the GstGLwindow. Feature: `v1_18` ## `x` the x coordinate of the mouse event ## `y` the y coordinate of the mouse event ## `delta_x` the x offset of the scroll event ## `delta_y` the y offset of the scroll event failed for a unspecified reason the implementation is too old no such resource was found