# Video transformation

Source: [https://docs.qualcomm.com/doc/80-70022-50/topic/gst-transform-example.html](https://docs.qualcomm.com/doc/80-70022-50/topic/gst-transform-example.html)

The **gst-transform-example** application supports rotation, flipping, and scaling
        operations.

You can use this application for a security camera. Adjust the orientation of the
            displayed image using the flip and mirror operations on the CCTV camera. For more
            information about the transformation properties, see [qtivtransform](https://docs.qualcomm.com/doc/80-70022-50/topic/qtivtransform.html).

The following figure shows the pipeline, which takes the captured video stream,
            transforms it, and either displays it or saves it to a file. For information about the
            plugins used in the pipeline, see [Pipeline flow](https://docs.qualcomm.com/doc/80-70022-50/topic/gst-transform-example.html#gst-transform-example__section_m3h_vz5_4bc).

Figure : gst-transform-example pipeline
            
            <?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" width="1050" height="220" viewbox="0 0 1050 220">
  <g>
    <rect x=".5" y=".499847412109375" width="1049" height="219" rx="7.500000000000002" ry="7.500000000000002" style="fill: #fafafa;"></rect>
    <path d="M1042,1c3.85986328125,0,7,3.14013671875,7,7v204c0,3.85986328125-3.14013671875,7-7,7H8c-3.85986328125,0-7-3.14013671875-7-7V8c0-3.85986328125,3.14013671875-7,7-7h1034M1042,0H8C3.581733703613281,0,0,3.58172607421875,0,8v204c0,4.41827392578125,3.581733703613281,8,8,8h1034c4.41845703125,0,8-3.58172607421875,8-8V8c0-4.41827392578125-3.58154296875-8-8-8h0Z" style="fill: #d2d7e1;"></path>
  </g>
  <g>
    <g>
      <line x1="72.484446674444371" y1="47.187851188500645" x2="91.586907949523265" y2="47.187851188500645" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <g>
        <path d="M54.534995293362044,28.285454200740787h-11.813998117349911l-5.906999058670408,7.088398870400852h-7.088398870409947c-2.609876245396663,0-4.725599246930869,2.115723001552396-4.725599246930869,4.725599246939964v21.265196611220745c0,2.609878498733451,2.115723001534207,4.725599246939964,4.725599246930869,4.725599246939964h37.80479397551062c2.609878498742546,0,4.725599246939964-2.115720748206513,4.725599246939964-4.725599246939964v-21.265196611220745c0-2.609876245387568-2.115720748197418-4.725599246939964-4.725599246939964-4.725599246939964h-7.088398870410856l-5.906999058669498-7.088398870400852Z" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></path>
        <circle cx="48.627996234691636" cy="47.187851188496097" r="7.088398870407672" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></circle>
      </g>
      <rect x="91.58690788012882" y="24.607115022809445" width="135.484417024431423" height="45.161472292501962" rx="2.258071355192455" ry="2.258071355192455" style="fill: #2a2aea;"></rect>
      <rect x="251.141183052019187" y="24.607115022809467" width="135.484416882331971" height="45.161472292501912" rx="2.258071350312989" ry="2.258071350312989" style="fill: #007884;"></rect>
      <rect x="411.421454805555186" y="24.607115022809445" width="135.484416882318328" height="45.161472292501962" rx="2.258071351683234" ry="2.258071351683234" style="fill: #2a2aea;"></rect>
      <text transform="translate(117.859375 51.706649780273438)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtiqmmfsrc</tspan></text>
      <text transform="translate(264.21875 51.144149780273438)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">Main_capsfilter</tspan></text>
      <text transform="translate(430.91796875 51.144149780273438)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtivtransform</tspan></text>
      <rect x="571.29077956497531" y="24.60711502280946" width="135.484416740222514" height="45.161472292501919" rx="2.258071346907889" ry="2.258071346907889" style="fill: #007884;"></rect>
      <text transform="translate(582.5859375 51.144149780273438)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">Scale_capsfilter</tspan></text>
      <rect x="731.073471786221489" y="24.607115022809467" width="135.484416740218876" height="45.161472292502822" rx="2.258071344423105" ry="2.258071344423105" style="fill: #007884;"></rect>
      <text transform="translate(787.73046875 51.144149780273438)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">tee</tspan></text>
      <g>
        <line x1="227.071319580078125" y1="47.187850952148438" x2="246.117828369140625" y2="47.187850952148438" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="245.096527099609375 50.67828369140625 251.14117431640625 47.187850952148438 245.096527099609375 43.697418212890625 245.096527099609375 50.67828369140625"></polygon>
      </g>
      <g>
        <line x1="386.625610351563409" y1="47.187850952148438" x2="406.398101806640625" y2="47.187850952148438" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="405.376800537109375 50.67828369140625 411.42144775390625 47.187850952148438 405.376800537109375 43.697418212890625 405.376800537109375 50.67828369140625"></polygon>
      </g>
      <g>
        <line x1="546.9058837890625" y1="47.187850952148438" x2="566.26739501953125" y2="47.187850952148438" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="565.24615478515625 50.67828369140625 571.290771484375 47.187850952148438 565.24615478515625 43.697418212890625 565.24615478515625 50.67828369140625"></polygon>
      </g>
      <g>
        <line x1="706.77520751953125" y1="47.187850952148438" x2="725.87353515625" y2="47.187850952148438" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="724.85223388671875 50.67828369140625 730.89691162109375 47.187850952148438 724.85223388671875 43.697418212890625 724.85223388671875 50.67828369140625"></polygon>
      </g>
      <rect x="889.51558297554584" y="24.60711502280946" width="135.484417024439608" height="45.161472292501919" rx="2.258071356916156" ry="2.258071356916156" style="fill: #007884;"></rect>
      <text transform="translate(913.35546875 51.144149780273438)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">waylandsink</tspan></text>
      <g>
        <line x1="866.557861328125" y1="47.187850952148438" x2="884.71575927734375" y2="47.187850952148438" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="883.6944580078125 50.67828369140625 889.73907470703125 47.187850952148438 883.6944580078125 43.697418212890625 883.6944580078125 50.67828369140625"></polygon>
      </g>
      <g>
        <polyline points="798.815673828125 69.768585205078125 798.815673828125 93.5360107421875 612.56463623046875 93.5360107421875 612.56463623046875 107.888031005859375" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
        <polygon points="608.5755615234375 106.720855712890625 612.56463623046875 113.6290283203125 616.5537109375 106.720855712890625 608.5755615234375 106.720855712890625"></polygon>
      </g>
      <rect x="564.177340969454235" y="113.629021177484901" width="96.774583507676653" height="45.161472292493272" rx="2.258071344589353" ry="2.258071344589353" style="fill: #007884;"></rect>
      <rect x="685.468152314233521" y="113.629021177484901" width="96.774583791884652" height="45.161472292493272" rx="2.258071368952892" ry="2.258071368952892" style="fill: #007884;"></rect>
      <text transform="translate(583.7109375 140.167587280273438)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">encoder</tspan></text>
      <text transform="translate(696.06640625 140.167587280273438)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
      <rect x="806.709545884750696" y="113.629021177484887" width="96.774583507687566" height="45.161472292493286" rx="2.258071350999497" ry="2.258071350999497" style="fill: #007884;"></rect>
      <text transform="translate(823.71484375 140.167587280273438)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">mp4mux</tspan></text>
      <rect x="928.225416492305158" y="113.629021177484915" width="96.77458350768029" height="45.161472292493258" rx="2.258071355680121" ry="2.258071355680121" style="fill: #007884;"></rect>
      <text transform="translate(951.17578125 140.167587280273438)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesink</tspan></text>
      <g>
        <line x1="660.951904296875" y1="136.209747314453125" x2="680.44476318359375" y2="136.209747314453125" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="679.42352294921875 139.7001953125 685.4681396484375 136.209747314453125 679.42352294921875 132.719329833984375 679.42352294921875 139.7001953125"></polygon>
      </g>
      <g>
        <line x1="782.24273681640625" y1="136.209747314453125" x2="801.6861572265625" y2="136.209747314453125" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="800.6649169921875 139.7001953125 806.70953369140625 136.209747314453125 800.6649169921875 132.719329833984375 800.6649169921875 139.7001953125"></polygon>
      </g>
      <g>
        <line x1="903.484130859375" y1="136.209747314453125" x2="922.95330810546875" y2="136.209747314453125" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="921.9320068359375 139.7001953125 927.97662353515625 136.209747314453125 921.9320068359375 132.719329833984375 921.9320068359375 139.7001953125"></polygon>
      </g>
    </g>
    <g>
      <g>
        <text transform="translate(847.928253173828125 191.484390258789062)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Qualcomm </tspan></text>
        <rect x="827.677275784441008" y="179.392893634298161" width="16" height="16" rx="2" ry="2" style="fill: #2a2aea;"></rect>
      </g>
      <g>
        <text transform="translate(946.510040283203125 191.484390258789062)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Open source</tspan></text>
        <rect x="926.259057197294169" y="179.392893634298161" width="15.999999999996362" height="16" rx="1.999999999999545" ry="1.999999999999545" style="fill: #007884;"></rect>
      </g>
    </g>
  </g>
</svg>

## Run the application

1. Ensure that you complete the [Prerequisites](https://docs.qualcomm.com/doc/80-70022-50/topic/mm_sample_apps_prerequisites.html).
2. In the terminal of the target device, run the following use cases to rotate,
                    downscale, or flip the video:
    - Use camera source and save output to a file.
        - Perform operations such as rotate, flip, upscale/downscale
                                        simultaneously:

                gst-transform-example -r 90 -f 2 --output_width 1920 --output_height 1080  -o /etc/media/video_transform.mp4 -i <inputfile>.mp4Copy to clipboard
        - Rotate:

                gst-transform-example -r 90 --input_width 3840 --input_height 2160 -o <output_file>.mp4Copy to clipboard
        - Downscale/upscale:

                gst-transform-example --input_width 3840 --input_height 2160 --output_width 1920 --output_height 1080 -o <output_file>.mp4Copy to clipboard
        - Flip:

                gst-transform-example -f 2 --input_width 3840 --input_height 2160 -o <output_file>.mp4Copy to clipboard
    - Use file source and save output to a file.
        - Perform operations such as rotate, flip, upscale/downscale
                                    simultaneously:

                gst-transform-example -r 90 -f 2 –i <inputfileh264>.mp4 --output_width 1920 --output_height 1080 -o <output_file>.mp4Copy to clipboard
        - Rotate:

                gst-transform-example -r 90 -i <inputfileh264>.mp4 -o <output_file>.mp4Copy to clipboard
        - Downscale/upscale:

                gst-transform-example -i <inputfileh264>.mp4 --output_width 1920 --output_height 1080 -o <output_file>.mp4Copy to clipboard
        - Flip:

                gst-transform-example -f 2 -i <inputfileh264>.mp4 -o <output_file>.mp4Copy to clipboard
3. To stop the use case, use CTRL +
                    C.
4. In the terminal of the target device, run the following command in the SSH shell
                    to display the available help
                    options:

        gst-transform-example --helpCopy to clipboard
5. In the terminal of the host computer, run the following command to pull the
                    files from the target
                    device:

        scp root@<IP address of target device>:/etc/media/<destination directory>Copy to clipboard

The following table provides a description of the command-line
                    parameters:| Command-line parameter | Description |
| --- | --- |
| `-h, --help` | Help |
| `--output_width` | Downscale/upscale width.<ul class="ul" id="gst-transform-example__ul_g3k_r1v_4bc"><br>                                    <li class="li">The default value is 1920.</li><br><br>                                    <li class="li">You can scale from 1080 to 720 or from 720 to 1080.</li><br><br>                                </ul> |
| `--output_height` | Downscale/upscale height. The default value is 1080. |
| `-o` | Absolute path to generate the file. |
| `-r` | Image rotate. The values are 0, 90, 180, 270. |
| `--input_width` | Camera width. The default value is 1920. |
| `--input_height` | Camera height. The default value is 1080. |
| `-f` | Flip the image. The values are:<ul class="ul" id="gst-transform-example__ul_eqv_v1v_4bc"><br>                                    <li class="li"><code class="ph codeph">0</code>: Don't flip (Default).</li><br><br>                                    <li class="li"><code class="ph codeph">1</code>: Flip horizontally.</li><br><br>                                    <li class="li"><code class="ph codeph">2</code>: Flip vertically.</li><br><br>                                    <li class="li"><code class="ph codeph">3</code>: Flip both horizontally and vertically. </li><br><br>                                </ul> |
| `-I`, `--input_file` | Absolute path of the input file.<br>For example, `-I<br>                                        /etc/media/inputfileh264.mp4` |
| `-o`,`--output_file` | Absolute path to generate the output file.<br>For example,<br>                                        `-o<br>                                /etc/media/video_transform.mp4` |

## Expected output

This pipeline supports simultaneous live preview and recording of the transformed
                video stream.

It provides two outputs:

- A video recording that's stored as an MP4 file in the specified path.
- A preview on a display device.

Figure : Expected output for gst-transform-example application–Preview
                
                ![](data:image/png;base64,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)

## Pipeline flow

The following table lists the plugins used to run the video transforming
                    pipeline:| Plugin | Description |
| --- | --- |
| [qtiqmmfsrc](https://docs.qualcomm.com/doc/80-70022-50/topic/qtiqmmfsrc.html) and filesrc | Captures the video data. |
| capsfilter | Enforces constraints on the raw video data. |
| [qtivtransform](https://docs.qualcomm.com/doc/80-70022-50/topic/qtivtransform.html) | Transforms the video data. <br>After transformation, capsfilter is<br>                                    applied again. |
| tee | Splits the transformed video data in two output paths:<ul class="ul" id="gst-transform-example__ul_h31_kbv_4bc"><br>                                    <li class="li">Live preview</li><br><br>                                    <li class="li">Save to file</li><br><br>                                </ul> |
| [Waylandsink](https://docs.qualcomm.com/doc/80-70022-50/topic/waylandsink.html) | Displays the video in live preview. |
| h264parse | Parses the encoded H.264 video stream. |
| mp4mux | Multiplexes the stream into an MP4 container. |
| filesink | Writes the video data to a file. |

## Related information

[Transform and Transcode use cases](https://docs.qualcomm.com/doc/80-70022-50/topic/transform-and-transcode-use-cases.html)

**Parent Topic:** [Run sample applications for video and audio](https://docs.qualcomm.com/doc/80-70022-50/topic/audio-sample-applications.html)

Last Published: Feb 20, 2026

[Previous Topic
Audio recording](https://docs.qualcomm.com/bundle/publicresource/80-70022-50/topics/gst-audio-encode-example-without-flac.md) [Next Topic
Video composition](https://docs.qualcomm.com/bundle/publicresource/80-70022-50/topics/gst-weston-composition-example.md)