GstGLMemory

GstGLMemory — memory subclass for GL textures

Functions

Types and Values

Object Hierarchy

    GBoxed
    ╰── GstGLVideoAllocationParams
    GObject
    ╰── GInitiallyUnowned
        ╰── GstObject
            ╰── GstAllocator
                ╰── GstGLBaseMemoryAllocator
                    ╰── GstGLMemoryAllocator
                        ╰── GstGLMemoryPBOAllocator

Includes

#include <gst/gl/gl.h>

Description

GstGLMemory is a GstGLBaseMemory subclass providing support for the mapping of OpenGL textures.

GstGLMemory is created or wrapped through gst_gl_base_memory_alloc() with GstGLVideoAllocationParams.

Data is uploaded or downloaded from the GPU as is necessary.

Functions

gst_gl_video_allocation_params_copy_data ()

void
gst_gl_video_allocation_params_copy_data
                               (GstGLVideoAllocationParams *src_vid,
                                GstGLVideoAllocationParams *dest_vid);

Copy and set any dynamically allocated resources in dest_vid . Intended for subclass usage only to chain up at the end of a subclass copy function.

Parameters

src_vid

source GstGLVideoAllocationParams to copy from

 

dest_vid

destination GstGLVideoAllocationParams to copy into

 

Since: 1.8


gst_gl_video_allocation_params_free_data ()

void
gst_gl_video_allocation_params_free_data
                               (GstGLVideoAllocationParams *params);

Unset and free any dynamically allocated resources. Intended for subclass usage only to chain up at the end of a subclass free function.

Parameters

Since: 1.8


gst_gl_video_allocation_params_init_full ()

gboolean
gst_gl_video_allocation_params_init_full
                               (GstGLVideoAllocationParams *params,
                                gsize struct_size,
                                guint alloc_flags,
                                GstGLAllocationParamsCopyFunc copy,
                                GstGLAllocationParamsFreeFunc free,
                                GstGLContext *context,
                                GstAllocationParams *alloc_params,
                                GstVideoInfo *v_info,
                                guint plane,
                                GstVideoAlignment *valign,
                                GstGLTextureTarget target,
                                GstGLFormat tex_format,
                                gpointer wrapped_data,
                                gpointer gl_handle,
                                gpointer user_data,
                                GDestroyNotify notify);

Intended for subclass usage

[skip]

Parameters

params

a GstGLVideoAllocationParams to initialize

 

struct_size

the size of the struct in params

 

alloc_flags

some allocation flags

 

copy

a copy function

 

free

a free function

 

context

a GstGLContext

 

alloc_params

the GstAllocationParams for wrapped_data .

[allow-none]

v_info

the GstVideoInfo for wrapped_data

 

plane

the video plane wrapped_data represents

 

valign

any GstVideoAlignment applied to symem mappings of wrapped_data .

[allow-none]

target

the GstGLTextureTarget

 

tex_format

the GstGLFormat

 

wrapped_data

the optional data pointer to wrap.

[allow-none]

gl_handle

the optional OpenGL handle to wrap or 0

 

user_data

user data to call notify with.

[allow-none]

notify

a GDestroyNotify.

[allow-none]

Returns

initializes params with the parameters specified

Since: 1.8


gst_gl_video_allocation_params_new ()

GstGLVideoAllocationParams *
gst_gl_video_allocation_params_new (GstGLContext *context,
                                    GstAllocationParams *alloc_params,
                                    GstVideoInfo *v_info,
                                    guint plane,
                                    GstVideoAlignment *valign,
                                    GstGLTextureTarget target,
                                    GstGLFormat tex_format);

Parameters

context

a GstGLContext

 

alloc_params

the GstAllocationParams for sysmem mappings of the texture.

[allow-none]

v_info

the GstVideoInfo for the texture

 

plane

the video plane of v_info to allocate

 

valign

any GstVideoAlignment applied to symem mappings of the texture.

[allow-none]

target

the GstGLTextureTarget for the created textures

 

tex_format

the GstGLFormat for the created textures

 

Returns

a new GstGLVideoAllocationParams for allocating GstGLMemory's

Since: 1.8


gst_gl_video_allocation_params_new_wrapped_data ()

GstGLVideoAllocationParams *
gst_gl_video_allocation_params_new_wrapped_data
                               (GstGLContext *context,
                                GstAllocationParams *alloc_params,
                                GstVideoInfo *v_info,
                                guint plane,
                                GstVideoAlignment *valign,
                                GstGLTextureTarget target,
                                GstGLFormat tex_format,
                                gpointer wrapped_data,
                                gpointer user_data,
                                GDestroyNotify notify);

Parameters

context

a GstGLContext

 

alloc_params

the GstAllocationParams for wrapped_data .

[allow-none]

v_info

the GstVideoInfo for wrapped_data

 

plane

the video plane wrapped_data represents

 

valign

any GstVideoAlignment applied to symem mappings of wrapped_data .

[allow-none]

target

the GstGLTextureTarget for wrapped_data

 

tex_format

the GstGLFormat for wrapped_data

 

wrapped_data

the data pointer to wrap

 

user_data

user data to call notify with.

[allow-none]

notify

a GDestroyNotify.

[allow-none]

Returns

a new GstGLVideoAllocationParams for wrapping wrapped_data

Since: 1.8


gst_gl_video_allocation_params_new_wrapped_gl_handle ()

GstGLVideoAllocationParams *
gst_gl_video_allocation_params_new_wrapped_gl_handle
                               (GstGLContext *context,
                                GstAllocationParams *alloc_params,
                                GstVideoInfo *v_info,
                                guint plane,
                                GstVideoAlignment *valign,
                                GstGLTextureTarget target,
                                GstGLFormat tex_format,
                                gpointer gl_handle,
                                gpointer user_data,
                                GDestroyNotify notify);

gl_handle is defined by the specific OpenGL handle being wrapped For GstGLMemory and GstGLMemoryPBO it is an OpenGL texture id. Other memory types may define it to require a different type of parameter.

Parameters

context

a GstGLContext

 

alloc_params

the GstAllocationParams for tex_id .

[allow-none]

v_info

the GstVideoInfo for tex_id

 

plane

the video plane tex_id represents

 

valign

any GstVideoAlignment applied to symem mappings of tex_id .

[allow-none]

target

the GstGLTextureTarget for tex_id

 

tex_format

the GstGLFormat for tex_id

 

gl_handle

the GL handle to wrap

 

user_data

user data to call notify with.

[allow-none]

notify

a GDestroyNotify.

[allow-none]

Returns

a new GstGLVideoAllocationParams for wrapping gl_handle

Since: 1.8


gst_gl_video_allocation_params_new_wrapped_texture ()

GstGLVideoAllocationParams *
gst_gl_video_allocation_params_new_wrapped_texture
                               (GstGLContext *context,
                                GstAllocationParams *alloc_params,
                                GstVideoInfo *v_info,
                                guint plane,
                                GstVideoAlignment *valign,
                                GstGLTextureTarget target,
                                GstGLFormat tex_format,
                                guint tex_id,
                                gpointer user_data,
                                GDestroyNotify notify);

Parameters

context

a GstGLContext

 

alloc_params

the GstAllocationParams for tex_id .

[allow-none]

v_info

the GstVideoInfo for tex_id

 

plane

the video plane tex_id represents

 

valign

any GstVideoAlignment applied to symem mappings of tex_id .

[allow-none]

target

the GstGLTextureTarget for tex_id

 

tex_format

the GstGLFormat for tex_id

 

tex_id

the GL texture to wrap

 

user_data

user data to call notify with.

[allow-none]

notify

a GDestroyNotify.

[allow-none]

Returns

a new GstGLVideoAllocationParams for wrapping tex_id

Since: 1.8


gst_gl_memory_allocator_get_default ()

GstGLMemoryAllocator *
gst_gl_memory_allocator_get_default (GstGLContext *context);

Parameters

context

a GstGLContext

 

Returns

the default GstGLMemoryAllocator supported by context .

[transfer full]

Since: 1.8


gst_gl_memory_init_once ()

void
gst_gl_memory_init_once (void);

Initializes the GL Base Texture allocator. It is safe to call this function multiple times. This must be called before any other GstGLMemory operation.

Since: 1.4


gst_gl_memory_init ()

void
gst_gl_memory_init (GstGLMemory *mem,
                    GstAllocator *allocator,
                    GstMemory *parent,
                    GstGLContext *context,
                    GstGLTextureTarget target,
                    GstGLFormat tex_format,
                    GstAllocationParams *params,
                    GstVideoInfo *info,
                    guint plane,
                    GstVideoAlignment *valign,
                    gpointer user_data,
                    GDestroyNotify notify);

Initializes mem with the required parameters. info is assumed to have already have been modified with gst_video_info_align().

Parameters

mem

the GstGLBaseMemory to initialize

 

allocator

the GstAllocator to initialize with

 

parent

the parent GstMemory to initialize with.

[allow-none]

context

the GstGLContext to initialize with

 

target

the GstGLTextureTarget for this GstGLMemory

 

tex_format

the GstGLFormat for this GstGLMemory

 

params

the GstAllocationParams to initialize with.

[allow-none]

info

the GstVideoInfo for this GstGLMemory

 

plane

the plane number (starting from 0) for this GstGLMemory

 

valign

optional GstVideoAlignment parameters.

[allow-none]

notify

a GDestroyNotify.

[allow-none]

user_data

user data to call notify with.

[allow-none]

Since: 1.8


gst_is_gl_memory ()

gboolean
gst_is_gl_memory (GstMemory *mem);

Parameters

mem

a GstMemory

 

Returns

whether the memory at mem is a GstGLMemory

Since: 1.4


gst_gl_memory_copy_into ()

gboolean
gst_gl_memory_copy_into (GstGLMemory *gl_mem,
                         guint tex_id,
                         GstGLTextureTarget target,
                         GstGLFormat tex_format,
                         gint width,
                         gint height);

Copies gl_mem into the texture specfified by tex_id . The format of tex_id is specified by tex_format , width and height .

Parameters

gl_mem

a GstGLMemory

 

tex_id

OpenGL texture id

 

target

the GstGLTextureTarget

 

tex_format

the GstGLFormat

 

width

width of tex_id

 

height

height of tex_id

 

Returns

Whether the copy suceeded

Since: 1.8


gst_gl_memory_copy_teximage ()

gboolean
gst_gl_memory_copy_teximage (GstGLMemory *src,
                             guint tex_id,
                             GstGLTextureTarget out_target,
                             GstGLFormat out_tex_format,
                             gint out_width,
                             gint out_height);

Copies the texture in GstGLMemory into the texture specified by tex_id , out_target , out_tex_format , out_width and out_height .

Parameters

src

the source GstGLMemory

 

tex_id

the destination texture id

 

out_target

the destination GstGLTextureTarget

 

out_tex_format

the destination GstGLFormat

 

out_width

the destination width

 

out_height

the destination height

 

Returns

whether the copy succeeded.

Since: 1.8


gst_gl_memory_read_pixels ()

gboolean
gst_gl_memory_read_pixels (GstGLMemory *gl_mem,
                           gpointer read_pointer);

Reads the texture in GstGLMemory into read_pointer if no buffer is bound to GL_PIXEL_PACK_BUFFER. Otherwise read_pointer is the byte offset into the currently bound GL_PIXEL_PACK_BUFFER buffer to store the result of glReadPixels. See the OpenGL specification for glReadPixels for more details.

Parameters

gl_mem

a GstGLMemory

 

read_pointer

the data pointer to pass to glReadPixels

 

Returns

whether theread operation succeeded

Since: 1.8


gst_gl_memory_texsubimage ()

void
gst_gl_memory_texsubimage (GstGLMemory *gl_mem,
                           gpointer read_pointer);

See gst_gl_memory_read_pixels() for what read_pointer signifies.

Parameters

gl_mem

a GstGLMemory

 

read_pointer

the data pointer to pass to glTexSubImage

 

Since: 1.8


gst_gl_memory_get_texture_height ()

gint
gst_gl_memory_get_texture_height (GstGLMemory *gl_mem);

Parameters

gl_mem

a GstGLMemory

 

Returns

the texture height of gl_mem

Since: 1.8


gst_gl_memory_get_texture_id ()

guint
gst_gl_memory_get_texture_id (GstGLMemory *gl_mem);

Parameters

gl_mem

a GstGLMemory

 

Returns

the OpenGL texture handle of gl_mem

Since: 1.8


gst_gl_memory_get_texture_target ()

GstGLTextureTarget
gst_gl_memory_get_texture_target (GstGLMemory *gl_mem);

Parameters

gl_mem

a GstGLMemory

 

Returns

the GstGLTextureTarget of gl_mem

Since: 1.8


gst_gl_memory_get_texture_format ()

GstGLFormat
gst_gl_memory_get_texture_format (GstGLMemory *gl_mem);

Parameters

gl_mem

a GstGLMemory

 

Returns

the GstGLFormat of gl_mem

Since: 1.12


gst_gl_memory_get_texture_width ()

gint
gst_gl_memory_get_texture_width (GstGLMemory *gl_mem);

Parameters

gl_mem

a GstGLMemory

 

Returns

the texture width of gl_mem

Since: 1.8


gst_gl_memory_setup_buffer ()

gboolean
gst_gl_memory_setup_buffer (GstGLMemoryAllocator *allocator,
                            GstBuffer *buffer,
                            GstGLVideoAllocationParams *params,
                            GstGLFormat *tex_formats,
                            gpointer *wrapped_data,
                            gsize n_wrapped_pointers);

Parameters

allocator

the GstGLMemoryAllocator to allocate from

 

buffer

a GstBuffer to setup

 

params

the GstGLVideoAllocationParams to allocate with

 

tex_formats

a list of GstGLFormat's to allocate with.

[allow-none][array length=n_wrapped_pointers]

wrapped_data

a list of wrapped data pointers.

[array length=n_wrapped_pointers][element-type gpointer]

n_wrapped_pointers

the number of elements in tex_formats and wrapped_data

 

Returns

whether the buffer was correctly setup

Since: 1.8

Types and Values

GST_GL_MEMORY_VIDEO_FORMATS_STR

#define             GST_GL_MEMORY_VIDEO_FORMATS_STR

List of video formats that are supported by GstGLMemory


GST_CAPS_FEATURE_MEMORY_GL_MEMORY

#define GST_CAPS_FEATURE_MEMORY_GL_MEMORY "memory:GLMemory"

Name of the caps feature for indicating the use of GstGLMemory


struct GstGLVideoAllocationParams

struct GstGLVideoAllocationParams {
  GstGLAllocationParams  parent;

  GstVideoInfo          *v_info;
  guint                  plane;
  GstVideoAlignment     *valign;
  GstGLTextureTarget     target;
  GstGLFormat            tex_format;
};

Members

GstGLAllocationParams parent;

the parent GstGLAllocationParams structure

 

GstVideoInfo *v_info;

the GstVideoInfo to allocate

 

guint plane;

the video plane index to allocate

 

GstVideoAlignment *valign;

the GstVideoAlignment to align the system representation to (may be NULL for the default)

 

GstGLTextureTarget target;

the GstGLTextureTarget to allocate

 

GstGLFormat tex_format;

the GstGLFormat to allocate

 

GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_VIDEO

#define GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_VIDEO (1 << 3)

GL allocation flag indicating the allocation of 2D video frames


GstGLMemoryAllocator

typedef struct _GstGLMemoryAllocator GstGLMemoryAllocator;

Opaque GstGLMemoryAllocator struct


GstGLMemoryAllocatorClass

typedef struct {
  GstGLBaseMemoryAllocatorMapFunction       map;
  GstGLBaseMemoryAllocatorCopyFunction      copy;
  GstGLBaseMemoryAllocatorUnmapFunction     unmap;
} GstGLMemoryAllocatorClass;

Members

GstGLBaseMemoryAllocatorMapFunction map;

provide a custom map implementation

 

GstGLBaseMemoryAllocatorCopyFunction copy;

provide a custom copy implementation

 

GstGLBaseMemoryAllocatorUnmapFunction unmap;

provide a custom unmap implementation

 

GstGLMemory

typedef struct {
  GstGLBaseMemory           mem;

  guint                     tex_id;
  GstGLTextureTarget        tex_target;
  GstGLFormat               tex_format;
  GstVideoInfo              info;
  GstVideoAlignment         valign;
  guint                     plane;
  gfloat                    tex_scaling[2];
} GstGLMemory;

Represents information about a GL texture

Members

GstGLBaseMemory mem;

the parent GstGLBaseMemory object

 

guint tex_id;

the GL texture id for this memory

 

GstGLTextureTarget tex_target;

the GL texture target for this memory

 

GstGLFormat tex_format;

   

GstVideoInfo info;

the texture's GstVideoInfo

 

GstVideoAlignment valign;

data alignment for system memory mapping

 

guint plane;

data plane in info

 

gfloat tex_scaling[2];

GL shader scaling parameters for valign and/or width/height

 

GST_GL_MEMORY_ALLOCATOR_NAME

#define GST_GL_MEMORY_ALLOCATOR_NAME   "GLMemory"

The name of the GL memory allocator

See Also

GstMemory, GstAllocator, GstGLBufferPool