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]
);
Wraps per plane data pointer in data
into the corresponding entry in
textures
based on info
and padding from valign
.
context |
||
info |
||
valign |
||
data |
a list of per plane data pointers |
|
textures |
a list of GstGLMemory. |
[transfer out] |
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 |
||
guint |
the GL texture id for this memory |
|
guint |
the GL texture target for this memory |
|
the texture type |
||
GstVideoInfo |
the texture's GstVideoInfo |
|
GstVideoAlignment |
data alignment for system memory mapping |
|
guint |
data plane in |
|
gfloat |
GL shader scaling parameters for |