# GstGLMemoryPBO

GstGLMemoryPBO is created or wrapped through gst_gl_base_memory_alloc with GstGLVideoAllocationParams.

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

## GstGLMemoryPBO

Private instance

## GstGL.GLMemoryPBO

Private instance

## GstGL.GLMemoryPBO

Private instance

### Methods

#### gst_gl_memory_pbo_copy_into_texture

    gboolean
    gst_gl_memory_pbo_copy_into_texture (GstGLMemoryPBO * gl_mem,
                                         guint tex_id,
                                         GstGLTextureTarget target,
                                         GstGLFormat tex_format,
                                         gint width,
                                         gint height,
                                         gint stride,
                                         gboolean respecify)

Copies gl_mem into the texture specified by tex_id. The format of tex_id is specified by tex_format, 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.

Parameters:

`gl_mem` –

a GstGLMemoryPBO

`tex_id` –

the destination texture id

`target` –

the destination GstGLTextureTarget

`tex_format` –

the destination GstGLFormat

`width` –

width of tex_id

`height` –

height of tex_id

`stride` –

stride of the backing texture data

`respecify` –

whether to copy the data or copy per texel

Returns –

Whether the copy succeeded

Since : 1.8

#### GstGL.GLMemoryPBO.prototype.copy_into_texture

    function GstGL.GLMemoryPBO.prototype.copy_into_texture(tex_id: Number, target: GstGL.GLTextureTarget, tex_format: GstGL.GLFormat, width: Number, height: Number, stride: Number, respecify: Number): {
        // javascript wrapper for 'gst_gl_memory_pbo_copy_into_texture'
    }

Copies gl_mem into the texture specified by tex_id. The format of tex_id is specified by tex_format, 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.

Parameters:

`gl_mem` (GstGL.GLMemoryPBO) –

a GstGL.GLMemoryPBO

`tex_id` (Number) –

the destination texture id

`target` (GstGL.GLTextureTarget) –

the destination GstGL.GLTextureTarget

`tex_format` (GstGL.GLFormat) –

the destination GstGL.GLFormat

`width` (Number) –

width of tex_id

`height` (Number) –

height of tex_id

`stride` (Number) –

stride of the backing texture data

`respecify` (Number) –

whether to copy the data or copy per texel

Returns (Number) –

Whether the copy succeeded

Since : 1.8

#### GstGL.GLMemoryPBO.copy_into_texture

    def GstGL.GLMemoryPBO.copy_into_texture (self, tex_id, target, tex_format, width, height, stride, respecify):
        #python wrapper for 'gst_gl_memory_pbo_copy_into_texture'

Copies gl_mem into the texture specified by tex_id. The format of tex_id is specified by tex_format, 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.

Parameters:

`gl_mem` (GstGL.GLMemoryPBO) –

a GstGL.GLMemoryPBO

`tex_id` (int) –

the destination texture id

`target` (GstGL.GLTextureTarget) –

the destination GstGL.GLTextureTarget

`tex_format` (GstGL.GLFormat) –

the destination GstGL.GLFormat

`width` (int) –

width of tex_id

`height` (int) –

height of tex_id

`stride` (int) –

stride of the backing texture data

`respecify` (bool) –

whether to copy the data or copy per texel

Returns (bool) –

Whether the copy succeeded

Since : 1.8

#### gst_gl_memory_pbo_download_transfer

    gst_gl_memory_pbo_download_transfer (GstGLMemoryPBO * gl_mem)

Transfer the texture data from the texture into the PBO if necessary.

Parameters:

`gl_mem` –

a GstGLMemoryPBO

Since : 1.8

#### GstGL.GLMemoryPBO.prototype.download_transfer

    function GstGL.GLMemoryPBO.prototype.download_transfer(): {
        // javascript wrapper for 'gst_gl_memory_pbo_download_transfer'
    }

Transfer the texture data from the texture into the PBO if necessary.

Parameters:

`gl_mem` (GstGL.GLMemoryPBO) –

a GstGL.GLMemoryPBO

Since : 1.8

#### GstGL.GLMemoryPBO.download_transfer

    def GstGL.GLMemoryPBO.download_transfer (self):
        #python wrapper for 'gst_gl_memory_pbo_download_transfer'

Transfer the texture data from the texture into the PBO if necessary.

Parameters:

`gl_mem` (GstGL.GLMemoryPBO) –

a GstGL.GLMemoryPBO

Since : 1.8

#### gst_gl_memory_pbo_upload_transfer

    gst_gl_memory_pbo_upload_transfer (GstGLMemoryPBO * gl_mem)

Transfer the texture data from the PBO into the texture if necessary.

Parameters:

`gl_mem` –

a GstGLMemoryPBO

Since : 1.8

#### GstGL.GLMemoryPBO.prototype.upload_transfer

    function GstGL.GLMemoryPBO.prototype.upload_transfer(): {
        // javascript wrapper for 'gst_gl_memory_pbo_upload_transfer'
    }

Transfer the texture data from the PBO into the texture if necessary.

Parameters:

`gl_mem` (GstGL.GLMemoryPBO) –

a GstGL.GLMemoryPBO

Since : 1.8

#### GstGL.GLMemoryPBO.upload_transfer

    def GstGL.GLMemoryPBO.upload_transfer (self):
        #python wrapper for 'gst_gl_memory_pbo_upload_transfer'

Transfer the texture data from the PBO into the texture if necessary.

Parameters:

`gl_mem` (GstGL.GLMemoryPBO) –

a GstGL.GLMemoryPBO

Since : 1.8

### Functions

#### gst_gl_memory_pbo_init_once

    gst_gl_memory_pbo_init_once ()

#### GstGL.prototype.gl_memory_pbo_init_once

    function GstGL.prototype.gl_memory_pbo_init_once(): {
        // javascript wrapper for 'gst_gl_memory_pbo_init_once'
    }

#### GstGL.gl_memory_pbo_init_once

    def GstGL.gl_memory_pbo_init_once ():
        #python wrapper for 'gst_gl_memory_pbo_init_once'

## GstGLMemoryPBOAllocator

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

Opaque GstGLMemoryPBOAllocator struct

### Members

`parent` (GstGLMemoryAllocator) –
No description available

### Class structure

#### GstGLMemoryPBOAllocatorClass

Only contains private data

##### Fields

`parent_class` (GstGLMemoryAllocatorClass) –
No description available

### GstGL.GLMemoryPBOAllocatorClass

Only contains private data

##### Attributes

`parent_class` (GstGL.GLMemoryAllocatorClass) –
No description available

### GstGL.GLMemoryPBOAllocatorClass

Only contains private data

##### Attributes

`parent_class` (GstGL.GLMemoryAllocatorClass) –
No description available

## GstGL.GLMemoryPBOAllocator

    GObject.Object
        ╰──GObject.InitiallyUnowned
            ╰──Gst.Object
                ╰──Gst.Allocator
                    ╰──GstGL.GLBaseMemoryAllocator
                        ╰──GstGL.GLMemoryAllocator
                            ╰──GstGL.GLMemoryPBOAllocator

Opaque GstGL.GLMemoryPBOAllocator struct

### Members

`parent` (GstGL.GLMemoryAllocator) –
No description available

## GstGL.GLMemoryPBOAllocator

    GObject.Object
        ╰──GObject.InitiallyUnowned
            ╰──Gst.Object
                ╰──Gst.Allocator
                    ╰──GstGL.GLBaseMemoryAllocator
                        ╰──GstGL.GLMemoryAllocator
                            ╰──GstGL.GLMemoryPBOAllocator

Opaque GstGL.GLMemoryPBOAllocator struct

### Members

`parent` (GstGL.GLMemoryAllocator) –
No description available

## Functions

### gst_is_gl_memory_pbo

    gboolean
    gst_is_gl_memory_pbo (GstMemory * mem)

Parameters:

`mem` –

a GstMemory

Returns –

whether the memory at mem is a GstGLMemoryPBO

Since : 1.8

### GstGL.prototype.is_gl_memory_pbo

    function GstGL.prototype.is_gl_memory_pbo(mem: Gst.Memory): {
        // javascript wrapper for 'gst_is_gl_memory_pbo'
    }

Parameters:

`mem` (Gst.Memory) –

a Gst.Memory

Returns (Number) –

whether the memory at mem is a GstGL.GLMemoryPBO

Since : 1.8

### GstGL.is_gl_memory_pbo

    def GstGL.is_gl_memory_pbo (mem):
        #python wrapper for 'gst_is_gl_memory_pbo'

Parameters:

`mem` (Gst.Memory) –

a Gst.Memory

Returns (bool) –

whether the memory at mem is a GstGL.GLMemoryPBO

Since : 1.8

## Function Macros

### GST_GL_MEMORY_PBO_ALLOCATOR_CAST

    #define GST_GL_MEMORY_PBO_ALLOCATOR_CAST(obj)            ((GstGLMemoryPBOAllocator *)(obj))

## Constants

### GST_GL_MEMORY_PBO_ALLOCATOR_NAME

    #define GST_GL_MEMORY_PBO_ALLOCATOR_NAME   "GLMemoryPBO"

The name of the GL Memory PBO allocator

### GstGL.GL_MEMORY_PBO_ALLOCATOR_NAME

The name of the GL Memory PBO allocator

### GstGL.GL_MEMORY_PBO_ALLOCATOR_NAME

The name of the GL Memory PBO allocator

### GST_TYPE_GL_MEMORY_PBO

    #define GST_TYPE_GL_MEMORY_PBO (gst_gl_memory_pbo_get_type())

The results of the search are