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 |