# Video composition

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

The **gst-weston-composition-example** application allows you to arrange live
        camera input or offline files on the screen using the picture-in-picture (PiP) or side by
        side display formats. A few use cases of this application are video conferencing and online
        educational courses.

The `gst-weston-composition-example` application involves several
            pipelines and elements. For more information, see [Pipeline flow](https://docs.qualcomm.com/doc/80-70022-50/topic/gst-weston-composition-example.html#gst-weston-composition-example__section_wng_xcv_4bc).

Figure : gst-weston-composition-example pipeline 
            
            <?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="1070.067741394048426" height="569.729606628417969" viewbox="0 0 1070.067741394048426 569.729606628417969">
  <g>
    <rect x=".500114440917969" y=".50006103515625" width="1069.0673828125" height="568.7294921875" rx="7.499999999999887" ry="7.499999999999887" style="fill: #fafafa;"></rect>
    <path d="M1062.067741394048426,1c3.85986328125,0,7,3.14013671875,7,7v553.729606628417969c0,3.859870910644531-3.14013671875,7-7,7H8c-3.859867095947266,0-7-3.140129089355469-7-7V8c0-3.85986328125,3.140132904052734-7,7-7h1054.067741394048426M1062.067741394048426,0H8C3.581733703613281,0,0,3.58172607421875,0,8v553.729606628417969c0,4.418266296386719,3.581733703613281,8,8,8h1054.067741394048426c4.418212890619543,0,8-3.581733703613281,8-8V8c0-4.41827392578125-3.581787109380457-8-8-8h0Z" style="fill: #d2d7e1;"></path>
  </g>
  <rect x="20.000009842755389" y="40.280529907651726" width="137.158565600000657" height="55.516594923468801" rx="3.999999999999999" ry="3.999999999999999" style="fill: #2a2aea;"></rect>
  <text transform="translate(43.040660619735718 72.620666027069092)" style="fill: #fff; font-size: 16px;"><tspan x="0" y="0">Data capture</tspan></text>
  <text transform="translate(47.110973119735718 32.160218119621277)" style="font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtiqmmfsrc</tspan></text>
  <rect x="182.134666591691712" y="40.280546236052032" width="137.158565599998838" height="55.516562266668188" rx="4" ry="4" style="fill: #007884;"></rect>
  <g>
    <line x1="320.211784362792969" y1="68.038818359375" x2="660.015068054199219" y2="68.038818359375" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="658.847892761230469 72.02789306640625 665.756095886230469 68.038818359375 658.847892761230469 64.04974365234375 658.847892761230469 72.02789306640625"></polygon>
  </g>
  <rect x="667.079998684706879" y="40.280546236052032" width="137.158565599998838" height="161.288419810993219" rx="4" ry="4" style="fill: #2a2aea;"></rect>
  <rect x="828.422256316071071" y="40.280546236052032" width="137.158565599998838" height="161.288419810993219" rx="4" ry="4" style="fill: #007884;"></rect>
  <text transform="translate(690.229625463485718 125.505919933319092)" style="fill: #fff; font-size: 16px;"><tspan x="0" y="0">Composition</tspan></text>
  <g>
    <line x1="804.238578796386719" y1="68.038818359375" x2="821.357353210449219" y2="68.038818359375" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="820.190177917480469 72.02789306640625 827.098320007324219 68.038818359375 820.190177917480469 64.04974365234375 820.190177917480469 72.02789306640625"></polygon>
  </g>
  <text transform="translate(878.405406713485718 125.505919933319092)" style="fill: #fff; font-size: 16px;"><tspan x="0" y="0">Write</tspan></text>
  <text transform="translate(232.850719213485718 72.621154308319092)" style="fill: #fff; font-size: 16px;"><tspan x="0" y="0">Filter</tspan></text>
  <text transform="translate(217.342906713485718 32.160216808319092)" style="font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">capsfilter</tspan></text>
  <text transform="translate(686.799937963485718 32.160216808319092)" style="font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtivcomposer</tspan></text>
  <text transform="translate(719.962047338485718 224.307189464569092)" style="font-family: Roboto-Medium, Roboto; font-size: 16px; font-weight: 500;"><tspan x="0" y="0">qtivcomposer composition</tspan></text>
  <text transform="translate(853.099742650985718 32.160216808319092)" style="font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">waylandsink</tspan></text>
  <g>
    <line x1="158.138282775878906" y1="68.038818359375" x2="175.257057189941406" y2="68.038818359375" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="174.089866638183594 72.02789306640625 180.998039245606378 68.038818359375 174.089866638183594 64.04974365234375 174.089866638183594 72.02789306640625"></polygon>
  </g>
  <rect x="20.000009842755389" y="146.052387451976756" width="137.158565600000657" height="55.516594923468801" rx="3.999999999999999" ry="3.999999999999999" style="fill: #007884;"></rect>
  <text transform="translate(70.552379369735718 178.392150402069092)" style="fill: #fff; font-size: 16px;"><tspan x="0" y="0">Read</tspan></text>
  <text transform="translate(66.661754369735718 138.088439464569092)" style="font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesrc</tspan></text>
  <rect x="344.395483421985773" y="146.052403780377063" width="137.158565599998838" height="55.516562266668188" rx="4" ry="4" style="fill: #007884;"></rect>
  <rect x="182.134666591691712" y="146.052403780377063" width="137.158565599998838" height="55.516562266668188" rx="4" ry="4" style="fill: #007884;"></rect>
  <g>
    <line x1="320.211784362792969" y1="173.8106689453125" x2="337.330558776856378" y2="173.8106689453125" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="336.163383483886719 177.799743652342841 343.071556091308594 173.8106689453125 336.163383483886719 169.82159423828125 336.163383483886719 177.799743652342841"></polygon>
  </g>
  <text transform="translate(392.506969213485718 179.166564464569092)" style="fill: #fff; font-size: 16px;"><tspan x="0" y="0">Parse</tspan></text>
  <rect x="505.737741053344507" y="146.052403780377063" width="137.158565599998838" height="55.516562266668188" rx="4" ry="4" style="fill: #007884;"></rect>
  <g>
    <line x1="481.554039001464844" y1="173.8106689453125" x2="498.672813415527344" y2="173.8106689453125" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="497.505638122558594 177.799743652342841 504.413810729981378 173.8106689453125 497.505638122558594 169.82159423828125 497.505638122558594 177.799743652342841"></polygon>
  </g>
  <text transform="translate(547.333141088485718 179.166564464569092)" style="fill: #fff; font-size: 16px;"><tspan x="0" y="0">Decode</tspan></text>
  <g>
    <line x1="642.896293640136719" y1="173.8106689453125" x2="660.015068054199219" y2="173.8106689453125" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="658.847892761230469 177.799743652342841 665.756095886230469 173.8106689453125 658.847892761230469 169.82159423828125 658.847892761230469 177.799743652342841"></polygon>
  </g>
  <text transform="translate(208.678844213485718 178.392150402069092)" style="fill: #fff; font-size: 16px;"><tspan x="0" y="0">Demultiplex</tspan></text>
  <text transform="translate(219.417125463485718 137.932189464569092)" style="font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtdemux</tspan></text>
  <text transform="translate(375.182262182235718 137.932189464569092)" style="font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
  <text transform="translate(528.696422338485718 137.932189464569092)" style="font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2h264dec</tspan></text>
  <g>
    <line x1="158.138282775878906" y1="173.8106689453125" x2="175.257057189941406" y2="173.8106689453125" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="174.089866638183594 177.799743652342841 180.998039245606378 173.8106689453125 174.089866638183594 169.82159423828125 174.089866638183594 177.799743652342841"></polygon>
  </g>
  <rect x="20.000009842755389" y="326.376274115897104" width="137.158565600000657" height="55.51659492347062" rx="4" ry="4" style="fill: #2a2aea;"></rect>
  <text transform="translate(43.040660619735718 358.715880870819092)" style="fill: #fff; font-size: 16px;"><tspan x="0" y="0">Data capture</tspan></text>
  <text transform="translate(47.110973119735718 315.073302745819092)" style="font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtiqmmfsrc</tspan></text>
  <rect x="182.134666591691712" y="326.376290444301048" width="137.158565599998838" height="55.516562266670007" rx="4" ry="4" style="fill: #007884;"></rect>
  <g>
    <line x1="320.211784362792969" y1="354.13458251953125" x2="821.357353210449219" y2="354.13458251953125" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="820.190177917480469 358.123626708984375 827.098320007324219 354.13458251953125 820.190177917480469 350.1455078125 820.190177917480469 358.123626708984375"></polygon>
  </g>
  <rect x="828.422256316071071" y="326.376290444301048" width="137.158565599998838" height="161.288419810993219" rx="4" ry="4" style="fill: #007884;"></rect>
  <text transform="translate(878.405406713485718 411.601623058319092)" style="fill: #fff; font-size: 16px;"><tspan x="0" y="0">Write</tspan></text>
  <text transform="translate(232.850719213485718 358.716857433319092)" style="fill: #fff; font-size: 16px;"><tspan x="0" y="0">Filter</tspan></text>
  <text transform="translate(217.342906713485718 318.255919933319092)" style="font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">capsfilter</tspan></text>
  <text transform="translate(724.848766088485718 510.401427745819092)" style="font-family: Roboto-Medium, Roboto; font-size: 16px; font-weight: 500;"><tspan x="0" y="0">waylandsink composition</tspan></text>
  <text transform="translate(853.099742650985718 318.255919933319092)" style="font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">waylandsink</tspan></text>
  <g>
    <line x1="158.138282775878906" y1="354.13458251953125" x2="175.257057189941406" y2="354.13458251953125" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="174.089866638183594 358.123626708984375 180.998039245606378 354.13458251953125 174.089866638183594 350.1455078125 174.089866638183594 358.123626708984375"></polygon>
  </g>
  <rect x="20.000009842755389" y="432.148131660225772" width="137.158565600000657" height="55.516594923468801" rx="3.999999999999999" ry="3.999999999999999" style="fill: #007884;"></rect>
  <text transform="translate(70.552379369735718 464.486388683319092)" style="fill: #fff; font-size: 16px;"><tspan x="0" y="0">Read</tspan></text>
  <text transform="translate(66.661754369735718 424.027404308319092)" style="font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesrc</tspan></text>
  <rect x="344.395483421985773" y="432.14814798862426" width="137.158565599998838" height="55.516562266670007" rx="4" ry="4" style="fill: #007884;"></rect>
  <rect x="182.134666591691712" y="432.14814798862426" width="137.158565599998838" height="55.516562266670007" rx="4" ry="4" style="fill: #007884;"></rect>
  <g>
    <line x1="320.211784362792969" y1="459.90643310546875" x2="337.330558776856378" y2="459.90643310546875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="336.163383483886719 463.895492553710938 343.071556091308594 459.90643310546875 336.163383483886719 455.9173583984375 336.163383483886719 463.895492553710938"></polygon>
  </g>
  <text transform="translate(392.506969213485718 465.261779308319092)" style="fill: #fff; font-size: 16px;"><tspan x="0" y="0">Parse</tspan></text>
  <rect x="505.737741053344507" y="432.14814798862426" width="137.158565599998838" height="55.516562266670007" rx="4" ry="4" style="fill: #007884;"></rect>
  <g>
    <line x1="481.554039001464844" y1="459.90643310546875" x2="498.672813415527344" y2="459.90643310546875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="497.505638122558594 463.895492553710938 504.413810729981378 459.90643310546875 497.505638122558594 455.9173583984375 497.505638122558594 463.895492553710938"></polygon>
  </g>
  <text transform="translate(547.333141088485718 465.261779308319092)" style="fill: #fff; font-size: 16px;"><tspan x="0" y="0">Decode</tspan></text>
  <g>
    <line x1="642.896293640136719" y1="459.90643310546875" x2="821.357353210449219" y2="459.90643310546875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="820.190177917480469 463.895492553710938 827.098320007324219 459.90643310546875 820.190177917480469 455.9173583984375 820.190177917480469 463.895492553710938"></polygon>
  </g>
  <text transform="translate(208.678844213485718 464.487365245819092)" style="fill: #fff; font-size: 16px;"><tspan x="0" y="0">Demultiplex</tspan></text>
  <text transform="translate(219.417125463485718 424.027404308319092)" style="font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtdemux</tspan></text>
  <text transform="translate(375.182262182235718 424.027404308319092)" style="font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
  <text transform="translate(528.696422338485718 424.027404308319092)" style="font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2h264dec</tspan></text>
  <g>
    <line x1="158.138282775878906" y1="459.90643310546875" x2="175.257057189941406" y2="459.90643310546875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="174.089866638183594 463.895492553710938 180.998039245606378 459.90643310546875 174.089866638183594 455.9173583984375 174.089866638183594 463.895492553710938"></polygon>
  </g>
  <polyline points="965.580821916069908 120.924756141546823 989.786125559621723 120.924756141546823 989.786125559621723 405.723314924418446 965.580821916069908 405.723314924418446" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
  <g>
    <line x1="989.786125183105469" y1="263.32403564453125" x2="1006.904899597167969" y2="263.32403564453125" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="1005.737724304199219 267.3131103515625 1012.645866394042969 263.32403564453125 1005.737724304199219 259.3349609375 1005.737724304199219 267.3131103515625"></polygon>
  </g>
  <rect x="1013.822670474079132" y="251.34636551533913" width="35.269345439999597" height="24.688541808000082" rx="4" ry="4" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></rect>
  <line x1="1024.403474106078647" y1="283.088776411339495" x2="1038.511212282077395" y2="283.088776411339495" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></line>
  <line x1="1031.457343194077112" y1="276.034907323339212" x2="1031.457343194077112" y2="283.088776411339495" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></line>
  <g>
    <g>
      <text transform="translate(872.019798278808594 545.821113586425781)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Qualcomm </tspan></text>
      <rect x="851.768804697800078" y="533.729606628417969" width="16" height="16" rx="2" ry="2" style="fill: #2a2aea;"></rect>
    </g>
    <g>
      <text transform="translate(970.601585388183594 545.821113586425781)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Open source</tspan></text>
      <rect x="950.350586110653239" y="533.729606628417969" width="16" height="16" rx="2" ry="2" style="fill: #007884;"></rect>
    </g>
  </g>
</svg>

## Run the application

The following table lists the use cases that supported through the
                    gst-weston-composition-example application:| Use case | Description |
| --- | --- |
| Video conferencing | <ul class="ul" id="gst-weston-composition-example__ul_wrw_5tf_4bc"><br>                                    <li class="li">Simultaneously displays several video streams from many<br>                                        participants. </li><br><br>                                    <li class="li">Videos are displayed in either PiP or side by side format. </li><br><br>                                    <li class="li">Useful in a multi-party video conference scenario where the<br>                                        application manages several video streams.</li><br><br>                                </ul> |
| Online education | Enhances the learning experience by enabling the PiP or side by<br>                                side display of the instructional video |

For PiP and side by side display formats, you can use [qtivcomposer](https://docs.qualcomm.com/doc/80-70022-50/topic/qtivcomposer.html) plugin. Do the following to run the use case with either of the plugins:

1. Ensure that you complete the [Prerequisites](https://docs.qualcomm.com/doc/80-70022-50/topic/mm_sample_apps_prerequisites.html).
2. Input a `<h264_file>.mp4` video file on the target
                    device.
3. In the terminal of the target device, run any of the following use cases:
    - Compose
                            PiP:

            gst-weston-composition-example -t 0 -i /etc/media/<h264_file>.mp4Copy to clipboard

Compose
                            side by
                            side:

            gst-weston-composition-example -t 1 -i /etc/media/<h264_file>.mp4Copy to clipboard
4. To stop the use case, use CTRL +
                    C.
5. In the terminal of the target device, run the following command in the SSH shell
                    to display the available help
                    options:

        gst-weston-composition-example --helpCopy to clipboard

The following table provides a description of the command-line
                    parameters:| Command-line parameter | Description |
| --- | --- |
| `-t` | Specifies the type of composition:<ul class="ul" id="gst-weston-composition-example__ul_ssv_bgv_4bc"><br>                                    <li class="li"><code class="ph codeph">0</code> = Picture-in-picture</li><br><br>                                    <li class="li"><code class="ph codeph">1</code> = Side by side</li><br><br>                                </ul> |
| `-i` | Specifies the absolute path to the input video file. |

## Expected output

The video is rendered as PiP and side by side display on the screen.

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

## Pipeline flow

The following table lists the plugins used to run the video composition
                    pipeline:| Plugin | Description |
| --- | --- |
| [qtiqmmfsrc](https://docs.qualcomm.com/doc/80-70022-50/topic/qtiqmmfsrc.html) | Captures the video from a source. |
| capsfilter | Filters the video file. |
| filesrc | Reads the video data. |
| qtdemux | Demultiplexes the video data. |
| h264parse | Parses the H.264 video. |
| [v4l2h264dec](https://docs.qualcomm.com/doc/80-70022-50/topic/v4l2h264dec.html) | Decodes H.264 video from a file. |
| [qtivcomposer](https://docs.qualcomm.com/doc/80-70022-50/topic/qtivcomposer.html) | Composes the decoded video. |
| [Waylandsink](https://docs.qualcomm.com/doc/80-70022-50/topic/waylandsink.html) | Composes and renders the video on the Wayland display. |

## Related information

[Video composition use cases](https://docs.qualcomm.com/doc/80-70022-50/topic/video-composition.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
Video transformation](https://docs.qualcomm.com/bundle/publicresource/80-70022-50/topics/gst-transform-example.md) [Next Topic
Run Python-based applications](https://docs.qualcomm.com/bundle/publicresource/80-70022-50/topics/python-sample-applications.md)