# qtivtransform
Source: [https://docs.qualcomm.com/doc/80-70022-50/topic/qtivtransform.html](https://docs.qualcomm.com/doc/80-70022-50/topic/qtivtransform.html)
The qtivtransform plugin uses GPU hardware to upscale/downscale, flip, rotate, crop,
and color covert the incoming YUV or RGB video frames determined by the element
properties.
The following table lists some of the common properties of qtivtransform. For
more information, see [Table : Elements properties of qtivtransform](https://docs.qualcomm.com/doc/80-70022-50/topic/qtivtransform.html#qtivtransform__table_vmx_1bn_myb).
| Property | Usage |
| --- | --- |
| Destination | Sets the X and Y axes placement with upscale/downscale dimensions for
each input frame within the output. |
| Crop | Sets the optional crop for the source. |
| Rotate | Rotates the frames at right angles. |
|
| Flips the frames horizontally and vertically. |
If the [GstCaps](https://gstreamer.freedesktop.org/documentation/gstreamer/gstcaps.html) source pad transformation property
isn't specified, the plugin negotiates the same capabilities as provided in the input.
In this case, the plugin operates in Passthrough mode until a parameter changes.
The plugin uses the Qualcomm IB2C library exposed by the Qualcomm^®^Adreno™ GPU
for all the transformation operations. This library is wrapped inside the custom
GstC2dVideoConverter abstraction layer with APIs to create, configure, and process the
incoming and outgoing buffers.
The GstImageBufferPool custom buffer pool class can allocate either GBM or ION output
buffers depending on the negotiated capabilities between GstImageBufferPool and the
downstream plugins.
- The GBM allocation is done through the Qualcomm libgbm.
- The ION allocation is done through IOCTL commands to the kernel.
## Inheritance chain
[GObject](https://docs.gtk.org/gobject/) → [GstObject](https://gstreamer.freedesktop.org/documentation/gstreamer/gstobject.html?gi-language=c) → [GstElement](https://gstreamer.freedesktop.org/documentation/gstreamer/gstelement.html?gi-language=c) → [GstBaseTransform](https://gstreamer.freedesktop.org/documentation/base/gstbasetransform.html?gi-language=c) → GstVideoTransform
The following tables provide information on pad templates and element properties of
qtivtransform. For use cases, see [Transform and Transcode use cases](https://docs.qualcomm.com/doc/80-70022-50/topic/transform-and-transcode-use-cases.html).
## Pad configuration
| Pad Name | Capabilities | Capabilities | Capabilities |
| --- | --- | --- | --- |
| SINK template: 'sink'
| video/x-raw | format: | { (string)NV12, (string)NV21, (string)YUY2, (string)P010\_10LE,
(string)NV12\_10LE32, (string)RGBA, (string)BGRA, (string)ARGB,
(string)ABGR, (string)RGBx, (string)BGRx, (string)xRGB,
(string)xBGR, (string)RGB, (string)BGR, (string)GRAY8 } |
| SINK template: 'sink'
| video/x-raw | width: | [ 1, 32767 ] |
| SINK template: 'sink'
| video/x-raw | height: | [ 1, 32767 ] |
| SINK template: 'sink'
| video/x-raw | framerate: | [ 0/1, 255/1 ] |
| SINK template: 'sink'
| video/x-raw(memory:GBM) | format: | { (string)NV12, (string)NV21, (string)YUY2, (string)P010\_10LE,
(string)NV12\_10LE32, (string)RGBA, (string)BGRA, (string)ARGB,
(string)ABGR, (string)RGBx, (string)BGRx, (string)xRGB,
(string)xBGR, (string)RGB, (string)BGR, (string)GRAY8 } |
| SINK template: 'sink'
| video/x-raw(memory:GBM) | width: | [ 1, 32767 ] |
| SINK template: 'sink'
| video/x-raw(memory:GBM) | height: | [ 1, 32767 ] |
| SINK template: 'sink'
| video/x-raw(memory:GBM) | framerate: | [ 0/1, 255/1 ] |
| SRC template: 'src'
| video/x-raw | format: | { (string)NV12, (string)NV21, (string)YUY2, (string)P010\_10LE,
(string)RGBA, (string)BGRA, (string)ARGB, (string)ABGR,
(string)RGBx, (string)BGRx, (string)xRGB, (string)xBGR, (string)RGB,
(string)BGR, (string)GRAY8 } |
| SRC template: 'src'
| video/x-raw | width: | [ 1, 32767 ] |
| SRC template: 'src'
| video/x-raw | height: | [ 1, 32767 ] |
| SRC template: 'src'
| video/x-raw | framerate: | [ 0/1, 255/1 ] |
| SRC template: 'src'
| video/x-raw(memory:GBM) | format: | { (string)NV12, (string)NV21, (string)YUY2, (string)P010\_10LE,
(string)RGBA, (string)BGRA, (string)ARGB, (string)ABGR,
(string)RGBx, (string)BGRx, (string)xRGB, (string)xBGR, (string)RGB,
(string)BGR, (string)GRAY8 } |
| SRC template: 'src'
| video/x-raw(memory:GBM) | width: | [ 1, 32767 ] |
| SRC template: 'src'
| video/x-raw(memory:GBM) | height: | [ 1, 32767 ] |
| SRC template: 'src'
| video/x-raw(memory:GBM) | framerate: | [ 0/1, 255/1 ] |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
## Element configuration
Table : Elements properties of qtivtransform
| Property | Description |
| --- | --- |
| name | The name of the object. |
| parent | The parent of the object. |
| engine | Engine backend used for the conversion operations.
Note: The Qualcomm Computer Vision SDK (fcv) engine is currently
not supported. |
| flip-horizontal | Flip the video image horizontally. |
| flip-vertical | Flip the video image vertically. |
| rotate | Rotate video image. |
| crop | The crop rectangle inside the input ('<X, Y, WIDTH, HEIGHT
>').
Note: This property can't be time
synchronized.
|
| destination | Destination rectangle inside the output ('<X, Y, WIDTH, HEIGHT
>'). |
| background | Background color. |
**Parent Topic:** [Configure display, camera, encode and decode plugins](https://docs.qualcomm.com/doc/80-70022-50/topic/display-plugins.html)
Last Published: Feb 20, 2026
[Previous Topic
qtivsplit](https://docs.qualcomm.com/bundle/publicresource/80-70022-50/topics/qtivsplit.md) [Next Topic
qtisocketsink](https://docs.qualcomm.com/bundle/publicresource/80-70022-50/topics/qtisocketsink.md)