# qtivtransform

Source: [https://docs.qualcomm.com/doc/80-70015-50/topic/qtivtransform.html](https://docs.qualcomm.com/doc/80-70015-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 table lists some of the common properties of qtivtransform. For more
                    information, see [Table : Elements properties of qtivtransform](https://docs.qualcomm.com/doc/80-70015-50/topic/qtivtransform.html#qtivtransform__table_vmx_1bn_myb).

| Property | Usage |
| --- | --- |
| Destination | Sets the X and Y axes placement with upscale/downscale dimensions for<br>                            each input frame within the output. |
| Crop | Sets the optional crop for the source. |
| Rotate | Rotates the frames at right angles. |
| <ul class="ul" id="qtivtransform__ul_vyb_2dp_tbc"><br>                                <li class="li">Flip-horizontal</li><br><br>                                <li class="li">Flip-vertical</li><br><br>                            </ul> | Flips the frames horizontally and vertically. |

If the [GstCaps](https://gstreamer.freedesktop.org/documentation/gstreamer/gstcaps.html) source pad transformation property is
            not 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-70015-50/topic/transform-and-transcode-use-cases.html).

## Pad configuration

| Pad Name | Capabilities | Capabilities | Capabilities |
| --- | --- | --- | --- |
| SINK template: 'sink'<br><ul class="ul" id="qtivtransform__ul_y22_1qz_q1c"><br>                                    <li class="li"><em class="ph i">Availability:</em> Always</li><br><br>                                    <li class="li"><em class="ph i">Direction:</em> sink</li><br><br>                                </ul> | video/x-raw | format: | { (string)NV12, (string)NV21, (string)YUY2, (string)P010\_10LE,<br>                                (string)NV12\_10LE32, (string)RGBA, (string)BGRA, (string)ARGB,<br>                                (string)ABGR, (string)RGBx, (string)BGRx, (string)xRGB,<br>                                (string)xBGR, (string)RGB, (string)BGR, (string)GRAY8 } |
| SINK template: 'sink'<br><ul class="ul" id="qtivtransform__ul_y22_1qz_q1c"><br>                                    <li class="li"><em class="ph i">Availability:</em> Always</li><br><br>                                    <li class="li"><em class="ph i">Direction:</em> sink</li><br><br>                                </ul> | video/x-raw | width: | [ 1, 32767 ] |
| SINK template: 'sink'<br><ul class="ul" id="qtivtransform__ul_y22_1qz_q1c"><br>                                    <li class="li"><em class="ph i">Availability:</em> Always</li><br><br>                                    <li class="li"><em class="ph i">Direction:</em> sink</li><br><br>                                </ul> | video/x-raw | height: | [ 1, 32767 ] |
| SINK template: 'sink'<br><ul class="ul" id="qtivtransform__ul_y22_1qz_q1c"><br>                                    <li class="li"><em class="ph i">Availability:</em> Always</li><br><br>                                    <li class="li"><em class="ph i">Direction:</em> sink</li><br><br>                                </ul> | video/x-raw | framerate: | [ 0/1, 255/1 ] |
| SINK template: 'sink'<br><ul class="ul" id="qtivtransform__ul_y22_1qz_q1c"><br>                                    <li class="li"><em class="ph i">Availability:</em> Always</li><br><br>                                    <li class="li"><em class="ph i">Direction:</em> sink</li><br><br>                                </ul> | video/x-raw(memory:GBM) | format: | { (string)NV12, (string)NV21, (string)YUY2, (string)P010\_10LE,<br>                                (string)NV12\_10LE32, (string)RGBA, (string)BGRA, (string)ARGB,<br>                                (string)ABGR, (string)RGBx, (string)BGRx, (string)xRGB,<br>                                (string)xBGR, (string)RGB, (string)BGR, (string)GRAY8 } |
| SINK template: 'sink'<br><ul class="ul" id="qtivtransform__ul_y22_1qz_q1c"><br>                                    <li class="li"><em class="ph i">Availability:</em> Always</li><br><br>                                    <li class="li"><em class="ph i">Direction:</em> sink</li><br><br>                                </ul> | video/x-raw(memory:GBM) | width: | [ 1, 32767 ] |
| SINK template: 'sink'<br><ul class="ul" id="qtivtransform__ul_y22_1qz_q1c"><br>                                    <li class="li"><em class="ph i">Availability:</em> Always</li><br><br>                                    <li class="li"><em class="ph i">Direction:</em> sink</li><br><br>                                </ul> | video/x-raw(memory:GBM) | height: | [ 1, 32767 ] |
| SINK template: 'sink'<br><ul class="ul" id="qtivtransform__ul_y22_1qz_q1c"><br>                                    <li class="li"><em class="ph i">Availability:</em> Always</li><br><br>                                    <li class="li"><em class="ph i">Direction:</em> sink</li><br><br>                                </ul> | video/x-raw(memory:GBM) | framerate: | [ 0/1, 255/1 ] |
| SRC template: 'src'<br><ul class="ul" id="qtivtransform__ul_ztk_1qz_q1c"><br>                                    <li class="li"><em class="ph i">Availability:</em> Always</li><br><br>                                    <li class="li"><em class="ph i">Direction:</em> source</li><br><br>                                </ul> | video/x-raw | format: | { (string)NV12, (string)NV21, (string)YUY2, (string)P010\_10LE,<br>                                (string)RGBA, (string)BGRA, (string)ARGB, (string)ABGR,<br>                                (string)RGBx, (string)BGRx, (string)xRGB, (string)xBGR, (string)RGB,<br>                                (string)BGR, (string)GRAY8 } |
| SRC template: 'src'<br><ul class="ul" id="qtivtransform__ul_ztk_1qz_q1c"><br>                                    <li class="li"><em class="ph i">Availability:</em> Always</li><br><br>                                    <li class="li"><em class="ph i">Direction:</em> source</li><br><br>                                </ul> | video/x-raw | width: | [ 1, 32767 ] |
| SRC template: 'src'<br><ul class="ul" id="qtivtransform__ul_ztk_1qz_q1c"><br>                                    <li class="li"><em class="ph i">Availability:</em> Always</li><br><br>                                    <li class="li"><em class="ph i">Direction:</em> source</li><br><br>                                </ul> | video/x-raw | height: | [ 1, 32767 ] |
| SRC template: 'src'<br><ul class="ul" id="qtivtransform__ul_ztk_1qz_q1c"><br>                                    <li class="li"><em class="ph i">Availability:</em> Always</li><br><br>                                    <li class="li"><em class="ph i">Direction:</em> source</li><br><br>                                </ul> | video/x-raw | framerate: | [ 0/1, 255/1 ] |
| SRC template: 'src'<br><ul class="ul" id="qtivtransform__ul_ztk_1qz_q1c"><br>                                    <li class="li"><em class="ph i">Availability:</em> Always</li><br><br>                                    <li class="li"><em class="ph i">Direction:</em> source</li><br><br>                                </ul> | video/x-raw(memory:GBM) | format: | { (string)NV12, (string)NV21, (string)YUY2, (string)P010\_10LE,<br>                                (string)RGBA, (string)BGRA, (string)ARGB, (string)ABGR,<br>                                (string)RGBx, (string)BGRx, (string)xRGB, (string)xBGR, (string)RGB,<br>                                (string)BGR, (string)GRAY8 } |
| SRC template: 'src'<br><ul class="ul" id="qtivtransform__ul_ztk_1qz_q1c"><br>                                    <li class="li"><em class="ph i">Availability:</em> Always</li><br><br>                                    <li class="li"><em class="ph i">Direction:</em> source</li><br><br>                                </ul> | video/x-raw(memory:GBM) | width: | [ 1, 32767 ] |
| SRC template: 'src'<br><ul class="ul" id="qtivtransform__ul_ztk_1qz_q1c"><br>                                    <li class="li"><em class="ph i">Availability:</em> Always</li><br><br>                                    <li class="li"><em class="ph i">Direction:</em> source</li><br><br>                                </ul> | video/x-raw(memory:GBM) | height: | [ 1, 32767 ] |
| SRC template: 'src'<br><ul class="ul" id="qtivtransform__ul_ztk_1qz_q1c"><br>                                    <li class="li"><em class="ph i">Availability:</em> Always</li><br><br>                                    <li class="li"><em class="ph i">Direction:</em> source</li><br><br>                                </ul> | 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.<ul class="ul" id="qtivtransform__ul_wmx_1bn_myb"><br>                                    <li class="li">flags: readable, writable</li><br><br>                                    <li class="li">String. Default: "videotransform0"</li><br><br>                                </ul> |
| parent | The parent of the object.<ul class="ul" id="qtivtransform__ul_xmx_1bn_myb"><br>                                    <li class="li">flags: readable, writable</li><br><br>                                    <li class="li">Object of type "GstObject"</li><br><br>                                </ul> |
| engine | Engine backend used for the conversion operations.<ul class="ul" id="qtivtransform__ul_hbm_dqz_q1c"><br>                                    <li class="li">flags: readable, writable</li><br><br>                                    <li class="li">Enum "GstVideoConverterBackend" Default: 1, "gles"<ul class="ul" id="qtivtransform__ul_vm1_2qz_q1c"><br>                                            <li class="li"> (1): gles - Use OpenGLES based video converter </li><br><br>                                            <li class="li">(2): fcv - Use Qualcomm Computer Vision SDK based<br>                                                video converter</li><br><br>                                        </ul><br></li><br><br>                                </ul> |
| flip-horizontal | Flip the video image horizontally.<ul class="ul" id="qtivtransform__ul_ymx_1bn_myb"><br>                                    <li class="li">flags: readable, writable, changeable in NULL, READY,<br>                                        PAUSED, or PLAYING state</li><br><br>                                    <li class="li">Boolean. Default: false</li><br><br>                                </ul> |
| flip-vertical | Flip the video image vertically.<ul class="ul" id="qtivtransform__ul_zmx_1bn_myb"><br>                                    <li class="li">flags: readable, writable, changeable in NULL, READY,<br>                                        PAUSED, or PLAYING state</li><br><br>                                    <li class="li">Boolean. Default: false</li><br><br>                                </ul> |
| rotate | Rotate video image.<ul class="ul" id="qtivtransform__ul_anx_1bn_myb"><br>                                    <li class="li">flags: readable, writable, changeable in NULL, READY,<br>                                        PAUSED, or PLAYING state</li><br><br>                                    <li class="li">Enum "GstVideoTransformRotate" Default: 0, "none"<ul class="ul" id="qtivtransform__ul_ugy_ghq_pyb"><br>                                            <li class="li"> (0): none - No rotation</li><br><br>                                            <li class="li"> (1): 90CW - Rotate 90 degrees clockwise</li><br><br>                                            <li class="li"> (2): 90CCW - Rotate 90 degrees<br>                                                counter-clockwise</li><br><br>                                            <li class="li"> (3): 180 - Rotate 180 degrees</li><br><br>                                        </ul><br></li><br><br>                                </ul> |
| crop | The crop rectangle inside the input ('&lt;X, Y, WIDTH, HEIGHT<br>                                    &gt;').<br>Note: This property cannot be time<br>                                    synchronized.<br><ul class="ul" id="qtivtransform__ul_bnx_1bn_myb"><br>                                    <li class="li">flags: readable, writable, changeable in NULL, READY, PAUSED<br>                                        or PLAYING state</li><br><br>                                    <li class="li">GstValueArray of GValues of type "gint"</li><br><br>                                </ul> |
| destination | Destination rectangle inside the output ('&lt;X, Y, WIDTH, HEIGHT<br>                                    &gt;').<ul class="ul" id="qtivtransform__ul_cnx_1bn_myb"><br>                                    <li class="li">flags: readable, writable, changeable in NULL, READY, PAUSED<br>                                        or PLAYING state</li><br><br>                                    <li class="li">GstValueArray of GValues of type "gint"</li><br><br>                                </ul> |
| background | Background color.<ul class="ul" id="qtivtransform__ul_dnx_1bn_myb"><br>                                    <li class="li">flags: readable, writable, changeable in NULL, READY, PAUSED<br>                                        or PLAYING state</li><br><br>                                    <li class="li">Unsigned Integer. Range: 0 - 4294967295 Default:<br>                                        4286611584</li><br><br>                                </ul> |

**Parent Topic:** [Display, camera, encode and decode plugins](https://docs.qualcomm.com/doc/80-70015-50/topic/display-plugins.html)

Last Published: Oct 27, 2025

[Previous Topic
qtivsplit](https://docs.qualcomm.com/bundle/publicresource/80-70015-50/topics/qtivsplit.md) [Next Topic
qtisocketsink](https://docs.qualcomm.com/bundle/publicresource/80-70015-50/topics/qtisocketsink.md)