60 KiB
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@gst_base::BaseTransformExt
], [trait@gst::ElementExt
], [trait@gst::ObjectExt
], [trait@glib::object::ObjectExt
]
Trait containing all GLBaseFilter
methods.
Implementors
GLBaseFilter
, 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@gst::ObjectExt
], [trait@glib::object::ObjectExt
], GLContextExtManual
Trait containing all GLContext
methods.
Implementors
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.
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@gst::ObjectExt
], [trait@glib::object::ObjectExt
]
Trait containing all GLDisplay
methods.
Implementors
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
, GLBaseFilterExt
, [trait@gst_base::BaseTransformExt
], [trait@gst::ElementExt
], [trait@gst::ObjectExt
], [trait@glib::object::ObjectExt
]
Trait containing all GLFilter
methods.
Implementors
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@gst::ObjectExt
], [trait@glib::object::ObjectExt
]
Trait containing all GLFramebuffer
methods.
Implementors
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@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@gst::ObjectExt
], [trait@glib::object::ObjectExt
]
Trait containing all GLWindow
methods.
Implementors
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