| Top |
| #define | GST_GL_MEMORY_FLAGS() |
| #define | GST_GL_MEMORY_FLAG_IS_SET() |
| #define | GST_GL_MEMORY_FLAG_SET() |
| #define | GST_GL_MEMORY_FLAG_UNSET() |
| 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 () |
| GstGLAllocator | |
| GstGLAllocatorClass | |
| #define | GST_MAP_GL |
| #define | GST_GL_MEMORY_ALLOCATOR |
| enum | GstGLMemoryFlags |
| GstGLMemory |
GstGLMemory is a GstMemory 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.
#define GST_GL_MEMORY_FLAGS(mem) GST_MEMORY_FLAGS(mem)
Get the currently set flags on mem
#define GST_GL_MEMORY_FLAG_IS_SET(mem,flag) GST_MEMORY_FLAG_IS_SET(mem,flag)
Whether flag
is set on mem
#define GST_GL_MEMORY_FLAG_SET(mem,flag) GST_MINI_OBJECT_FLAG_SET(mem,flag)
Set flag
on mem
#define GST_GL_MEMORY_FLAG_UNSET(mem,flag) GST_MEMORY_FLAG_UNSET(mem,flag)
Unset flag
on mem
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 {
GstAllocatorClass parent_class;
} GstGLAllocatorClass;
The GstGLAllocatorClass only contains private data
#define GST_MAP_GL GST_MAP_FLAG_LAST << 1
Flag indicating that we should map the GL object instead of to system memory.
Combining GST_MAP_GL with GST_MAP_WRITE has the same semantics as though you are writing to OpenGL. Conversely, combining GST_MAP_GL with GST_MAP_READ has the same semantics as though you are reading from OpenGL.
#define GST_GL_MEMORY_ALLOCATOR "GLMemory"
The name of the GL memore allocator
typedef struct {
GstMemory mem;
GstGLContext *context;
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
GstMemory |
the parent object |
|
GstGLContext * |
the GstGLContext to use for GL operations |
|
guint |
the texture id for this memory |
|
guint |
||
GstVideoInfo |
||
GstVideoAlignment |
||
guint |
||
gfloat |