| 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,GstVideoGLTextureType tex_type,gint width,gint height,gint stride);
GstGLMemory * gst_gl_memory_wrapped (GstGLContext *context,GstVideoGLTextureType tex_type,gint width,gint height,gint stride,gpointer data,gpointer user_data,GDestroyNotify notify);
context |
||
v_info |
the GstVideoInfo of the memory and data |
|
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,GstVideoGLTextureType tex_type,gint width,gint height,gpointer user_data,GDestroyNotify notify);
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,GstVideoInfo *info,GstBuffer *buffer);
Adds the required GstGLMemorys with the correct configuration to
buffer
based on info
.
gboolean gst_gl_memory_setup_wrapped (GstGLContext *context,GstVideoInfo *info,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
.
context |
||
info |
||
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;
GstVideoGLTextureType tex_type;
gint width;
gint height;
gint stride;
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 |
|
gint |
width of the texture |
|
gint |
height of the texture |
|
gint |
||
gfloat |