| Top |
| void | gst_gl_memory_init () |
| GstMemory * | gst_gl_memory_alloc () |
| GstGLMemory * | gst_gl_memory_wrapped () |
| GstGLMemory * | gst_gl_memory_wrapped_texture () |
| gboolean | gst_gl_memory_copy_into_texture () |
| gboolean | gst_gl_memory_setup_buffer () |
| gboolean | gst_gl_memory_setup_wrapped () |
| GstVideoGLTextureType | gst_gl_texture_type_from_format () |
| gboolean | gst_is_gl_memory () |
GObject
╰── GInitiallyUnowned
╰── GstObject
╰── GstAllocator
╰── GstGLBaseBufferAllocator
╰── GstGLAllocator
GstGLMemory is a GstGLBaseBuffer subclass providing support for the mapping of GL textures.
GstGLMemory is created through gst_gl_memory_alloc() or system memory can
be wrapped through gst_gl_memory_wrapped().
Data is uploaded or downloaded from the GPU as is necessary.
void
gst_gl_memory_init (void);
Initializes the GL Memory allocator. It is safe to call this function multiple times. This must be called before any other GstGLMemory operation.
GstMemory * gst_gl_memory_alloc (GstGLContext *context,GstAllocationParams *params,GstVideoInfo *info,guint plane,GstVideoAlignment *valign);
Allocated a new GstGlMemory.
context |
||
params |
||
info |
the GstVideoInfo of the memory |
|
plane |
the plane this memory will represent |
|
valign |
the GstVideoAlignment applied to |
GstGLMemory * gst_gl_memory_wrapped (GstGLContext *context,GstVideoInfo *info,guint plane,GstVideoAlignment *valign,gpointer data,gpointer user_data,GDestroyNotify notify);
Wrapped data
into a GstGLMemory. This version will account for padding
added to the allocation and expressed through valign
.
context |
||
info |
the GstVideoInfo of the memory and data |
|
plane |
the plane this memory will represent |
|
valign |
the GstVideoAlignment applied to |
|
data |
the data to wrap |
|
user_data |
data called with for |
|
notify |
function called with |
a GstGLMemory object with a GL texture specified by v_info
from context
and contents specified by data
GstGLMemory * gst_gl_memory_wrapped_texture (GstGLContext *context,guint texture_id,guint texture_target,GstVideoInfo *info,guint plane,GstVideoAlignment *valign,gpointer user_data,GDestroyNotify notify);
Wraps a texture handle into a GstGLMemory.
context |
||
texture_id |
the GL texture handle |
|
texture_target |
the GL texture target |
|
info |
the GstVideoInfo of the memory |
|
plane |
The plane this memory will represent |
|
user_data |
user data |
|
notify |
Destroy callback for the user data |
gboolean gst_gl_memory_copy_into_texture (GstGLMemory *gl_mem,guint tex_id,GstVideoGLTextureType tex_type,gint width,gint height,gint stride,gboolean respecify);
Copies gl_mem
into the texture specfified by tex_id
. The format of tex_id
is specified by tex_type
, 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.
gboolean gst_gl_memory_setup_buffer (GstGLContext *context,GstAllocationParams *params,GstVideoInfo *info,GstVideoAlignment *valign,GstBuffer *buffer);
Adds the required GstGLMemorys with the correct configuration to
buffer
based on info
. This version handles padding through valign
.
gboolean gst_gl_memory_setup_wrapped (GstGLContext *context,GstVideoInfo *info,GstVideoAlignment *valign,gpointer data[GST_VIDEO_MAX_PLANES],GstGLMemory *textures[GST_VIDEO_MAX_PLANES],gpointer user_data,GDestroyNotify notify);
Wraps per plane data pointer in data
into the corresponding entry in
textures
based on info
and padding from valign
. Note that the notify
will be called as many time as there is planes.
context |
||
info |
||
valign |
||
data |
a list of per plane data pointers |
|
textures |
a list of GstGLMemory. |
[transfer out] |
user_data |
user data for the destroy function |
|
notify |
A function called each time a memory is freed |
GstVideoGLTextureType gst_gl_texture_type_from_format (GstGLContext *context,GstVideoFormat v_format,guint plane);
typedef struct {
GstGLBaseBufferAllocatorClass parent_class;
} GstGLAllocatorClass;
The GstGLAllocatorClass only contains private data
#define GST_GL_MEMORY_ALLOCATOR "GLMemory"
The name of the GL memory allocator
typedef struct {
GstGLBaseBuffer mem;
guint tex_id;
guint tex_target;
GstVideoGLTextureType tex_type;
GstVideoInfo info;
GstVideoAlignment valign;
guint plane;
gfloat tex_scaling[2];
} GstGLMemory;
Represents information about a GL texture
the parent object |
||
the GL texture id for this memory |
||
the GL texture target for this memory |
||
the texture type |
||
GstVideoInfo |
the texture's GstVideoInfo |
|
GstVideoAlignment |
data alignment for system memory mapping |
|
data plane in |
||
GL shader scaling parameters for |