# Video APIs Use the video APIs to configure the video buffers and video converter. ## GstImageBufferPool APIs - Configure it to add [GstVideoMeta](https://gstreamer.freedesktop.org/documentation/video/gstvideometa.html#GstVideoMeta) to the buffers. - Configure video-specific requirements: - Stride alignments or pixel padding - Type of memory management (GBM/ION). GstImageBufferPool - parent: GstBufferPool- priv: GstImageBufferPoolPrivate * GstBufferPool - object: GstObject- flushing: gint- priv: GstBufferPoolPrivate *- started: gboolean- _gst_reserved: gpointer[GST_PADDING] GstBuffer - mini_object: GstMiniObject- pool: GstBufferPool *- pts: GstClockTime- dts: GstClockTime- duration: GstClockTime- offset: guint64- offset_end: guint64 GstImageBufferPoolPrivate - info: GstVideoInfo- addmeta: gboolean- isubwc: gboolean- keepmapped: gboolean- memtype: GQuark- allocator: GstAllocator- params: GstAllocationParams- devid: gint- gbmhandle: gpointer- gbmdevice: struct gbm_device- datamap: GHash Table- lock: GMutex GstBufferPoolPrivate - queue: GstAtomicQueue- poll: GstPoll *- rec_lock: GRecMutex- maxsize: gsize- started: gboolean- active: gboolean- outstanding: gint- configured: gboolean- min_buffers: guint- max_buffers: guint- cur_buffers: guint- allocator: GstAllocator *- params: GstAllocationParams GstMemory - mini_object: GstMiniObject- allocator: GstAllocator *- parent: GstMemory *- maxsize: gsize- align: gsize- offset: gsize- size: gsize **Figure : GstImageBufferPool workflow** The following list provides the GstImageBufferPool API description: - **Prototype** Creates a buffer pool that can assign the video frame buffers to memory. GstBufferPool * gst_image_buffer_pool_new (const gchar * type) Copy to clipboard - **Parameters** | [in] | `type` | The memory that the pool uses to assign buffers. | | --- | --- | --- | - **Returns** - A new [GstBufferPool](https://gstreamer.freedesktop.org/documentation/gstreamer/gstbufferpool.html?gi-language=c) that allocates the video frames. - Free with [gst_object_unref](https://gstreamer.freedesktop.org/documentation/gstreamer/gstobject.html#gst_object_unref). - **Arguments** | Argument | Description | Usage | | --- | --- | --- | | GST\_IMAGE\_BUFFER\_POOL\_TYPE\_ION | Assigns buffers through the ION memory manager. | #define GST_IMAGE_BUFFER_POOL_TYPE_ION "GstBufferPoolTypeIonMemory"
Copy to clipboard | | GST\_IMAGE\_BUFFER\_POOL\_TYPE\_GBM | Assigns buffers through the generic buffer management (GBM). | #define GST_IMAGE_BUFFER_POOL_TYPE_GBM "GstBufferPoolTypeGbmMemory"
Copy to clipboard | | GST\_IMAGE\_BUFFER\_POOL\_OPTION\_UBWC\_MODE | Indicates that the allocated buffer must be in Qualcomm^®^ Universal Bandwidth Compression mode. | #define GST_IMAGE_BUFFER_POOL_OPTION_UBWC_MODE "GstBufferPoolOptionUBWCMode"
Copy to clipboard | | GST\_IMAGE\_BUFFER\_POOL\_OPTION\_KEEP\_MAPPED | Indicates if the mapped buffer memory is mapped until the memory is destroyed. | #define GST_IMAGE_BUFFER_POOL_OPTION_KEEP_MAPPED "GstBufferPoolOptionKeepMapped"
Copy to clipboard | ## GstGlesVideoConverter APIs gst_gles_converter_new dlopen libIB2C.so GstGlesConverter * gst_gles_converter_set_input_ops gst_gles_converter_set_input_ops gboolean Plugin GLES engine IB2C Opt gst_gles_converter_submit_request ::ib2c::IEngine surface_id request_id request ID ::ib2c::IEngine::CreateSurface ::ib2c::IEngine::Compose ::ib2c::IEngine::Finish Fetch surface associated with frame Cash input ops in GstStructure Cash output ops in GstStructure delete ::ib2c::IEngine dlclose libIB2C.so dlsym libIB2C.so NewEngine symbol Initialize interval variables NewEngine [For each incoming buffer or group of buffers] ::ib2c::IEngine::DestroySurface gboolean gst_gles_converter_wait_request gboolean gst_gles_converter_free loop [for each frame] alt [else] loop [for each chased surface] [surface create for frame] **Figure : Hardware-accelerated image manipulation, transformation, and color conversion** The following list provides information on each of the GstGlesVideoConverter APIs: - **gst\_gles\_video\_converter\_new** Creates a GstGlesVideoConverter. **Prototype** GstGlesVideoConverter * gst_gles_video_converter_new (void) Copy to clipboard **Returns** A new GstGlesVideoConverter, free with gst\_gles\_video\_converter\_free(). - gst\_gles\_video\_converter\_free: Releases all resources held by the converter and frees the memory associated with it. **Prototype** void gst_gles_video_converter_free (GstGlesVideoConverter * convert) Copy to clipboard **Parameters** | [in] | `convert` | A GstGlesVideoConverter | | --- | --- | --- | **Returns** > > > None - **gst\_gles\_video\_converter\_submit\_request** Submits a number of video compositions that are executed together. **Prototype** gpointer gst_gles_video_converter_submit_request (GstGlesVideoConverter *convert, GstGlesComposition * compositions, guint n_compositions) Copy to clipboard **Parameters** | [in] | `convert` | A GstGlesVideoConverter | | --- | --- | --- | | [in] | `compositions` | An array of composition frames | | [in] | `n_compositions` | Number of compositions | **Returns** A unique pointer request ID if the operation was successful. - **gst\_gles\_video\_converter\_wait\_request** Waits for the requests that have been submitted to GPU compositions to finish. **Prototype** gboolean gst_gles_video_converter_wait_request (GstGlesVideoConverter *convert, gpointer request_id) Copy to clipboard **Parameters** | [in] | `convert` | A GstGlesVideoConverter | | --- | --- | --- | | [in] | `request_id` | Specifies the request ID | **Returns** > > > TRUE if the operation was successful. - **gst\_gles\_video\_converter\_flush** Waits for the compositions that have been submitted to GPU to finish and flush the data. **Prototype** void gst_gles_video_converter_flush (GstGlesVideoConverter *convert) Copy to clipboard **Parameters** | [in] | `convert` | A GstGlesVideoConverter | | --- | --- | --- | **Returns** > > > None Last Published: Mar 26, 2026 [Previous Topic GSt APIs](https://docs.qualcomm.com/bundle/publicresource/80-80021-50/topics/gst-apis.md) [Next Topic Machine learning APIs](https://docs.qualcomm.com/bundle/publicresource/80-80021-50/topics/machine-learning-apis.md)