# Video composition use cases

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

The video composition GStreamer use cases show how to read the video streams from the
        source, compose them, and then display them either side by side or picture-in-picture on a
        display device.

Before you run the use cases, ensure that you complete the preconditions mentioned in
                [GStreamer command-line use cases](https://docs.qualcomm.com/doc/80-70022-50/topic/gstreamer-application-use-cases.html).

## 16 480p offline stream side by side composition

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

The use case shows how to read 16 480p video streams from file sources and composing
        them side by side. These streams are then displayed as a single frame on a local display
        device.

Run the use case on the target
            device:

    ulimit -n 4096 && gst-launch-1.0 qtivcomposer name=mix sink_0::position="<0, 0>" sink_0::dimensions="<480, 270>" sink_1::position="<480, 0>" sink_1::dimensions="<480, 270>" sink_2::position="<960, 0>" sink_2::dimensions="<480, 270>" sink_3::position="<1440, 0>" sink_3::dimensions="<480, 270>" sink_4::position="<0, 270>" sink_4::dimensions="<480, 270>" sink_5::position="<480, 270>" sink_5::dimensions="<480, 270>" sink_6::position="<960, 270>" sink_6::dimensions="<480, 270>" sink_7::position="<1440, 270>" sink_7::dimensions="<480, 270>" sink_8::position="<0, 540>" sink_8::dimensions="<480, 270>" sink_9::position="<480, 540>" sink_9::dimensions="<480, 270>" sink_10::position="<960, 540>" sink_10::dimensions="<480, 270>" sink_11::position="<1440, 540>" sink_11::dimensions="<480, 270>" sink_12::position="<0, 810>" sink_12::dimensions="<480, 270>" sink_13::position="<480, 810>" sink_13::dimensions="<480, 270>" sink_14::position="<960, 810>" sink_14::dimensions="<480, 270>" sink_15::position="<1440, 810>" sink_15::dimensions="<480, 270>" mix. ! queue ! waylandsink sync=true fullscreen=true filesrc location=/tmp/Animals_000_720p_180s_30FPS.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! queue ! mix. filesrc location=/tmp/Animals_000_720p_180s_30FPS.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! queue ! mix. filesrc location=/tmp/Animals_000_720p_180s_30FPS.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! queue ! mix. filesrc location=/tmp/Animals_000_720p_180s_30FPS.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! queue ! mix. filesrc location=/tmp/Animals_000_720p_180s_30FPS.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! queue ! mix. filesrc location=/tmp/Animals_000_720p_180s_30FPS.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! queue ! mix. filesrc location=/tmp/Animals_000_720p_180s_30FPS.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! queue ! mix. filesrc location=/tmp/Animals_000_720p_180s_30FPS.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! queue ! mix. filesrc location=/tmp/Animals_000_720p_180s_30FPS.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! queue ! mix. filesrc location=/tmp/Animals_000_720p_180s_30FPS.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! queue ! mix. filesrc location=/tmp/Animals_000_720p_180s_30FPS.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! queue ! mix. filesrc location=/tmp/Animals_000_720p_180s_30FPS.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! queue ! mix. filesrc location=/tmp/Animals_000_720p_180s_30FPS.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! queue ! mix. filesrc location=/tmp/Animals_000_720p_180s_30FPS.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! queue ! mix. filesrc location=/tmp/Animals_000_720p_180s_30FPS.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! queue ! mix. filesrc location=/tmp/Animals_000_720p_180s_30FPS.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! queue ! mix.Copy to clipboard

To stop the use case,  use CTRL + C.

Figure : Pipeline for side by side display of 16 480p video streams–file sources
            
            <?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="981.974517822265625" height="697.982395172119141" viewbox="0 0 981.974517822265625 697.982395172119141">
  <g id="Layer_2" data-name="Layer 2">
    <g>
      <rect x=".499786376953125" y=".499912261962891" width="980.974609375" height="696.982421875" rx="7.499999999999888" ry="7.499999999999888" style="fill: #fafafa;"></rect>
      <path d="M973.974517822265625,1c3.85986328125,0,7,3.140121459960938,7,7v681.982395172119141c0,3.85986328125-3.14013671875,7-7,7H8c-3.859893798828125,0-7-3.14013671875-7-7V8c0-3.859878540039062,3.140106201171875-7,7-7h965.974517822265625M973.974517822265625,0H8C3.581756591796875,0,0,3.581623077392578,0,8v681.982395172119141c0,4.418212890625,3.581756591796875,8,8,8h965.974517822265625c4.418212890625,0,8-3.581787109375,8-8V8c0-4.418376922607422-3.581787109375-8-8-8h0Z" style="fill: #d2d7e1;"></path>
    </g>
    <g>
      <g>
        <text transform="translate(781.418792724609375 674.073856353759766)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Qualcomm </tspan></text>
        <rect x="761.167782205222466" y="661.982395172119141" width="16" height="16" rx="2" ry="2" style="fill: #2a2aea;"></rect>
      </g>
      <g>
        <text transform="translate(880.000579833984375 674.073856353759766)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Open source</tspan></text>
        <rect x="859.749563618081083" y="661.982395172119141" width="16" height="16" rx="2" ry="2" style="fill: #007884;"></rect>
      </g>
    </g>
  </g>
  <g id="Layer_3" data-name="Layer 3">
    <g>
      <line x1="139.999954223632812" y1="40.622295379638672" x2="154.25897216796875" y2="40.622295379638672" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="153.091781616210938 44.611362457275391 159.999954223632812 40.622295379638672 153.091781616210938 36.633235931396484 153.091781616210938 44.611362457275391"></polygon>
    </g>
    <rect x="19.999959784836392" y="20.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(58.082000732421875 45.297916412353516)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesrc</tspan></text>
    <g>
      <line x1="279.999959945678711" y1="40.622295379638672" x2="294.258975982666016" y2="40.622295379638672" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="293.09178352355957 44.611362457275391 299.999959945678711 40.622295379638672 293.09178352355957 36.633235931396484 293.09178352355957 44.611362457275391"></polygon>
    </g>
    <rect x="159.999959784836392" y="20.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(188.703155517578125 45.297916412353516)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtdemux</tspan></text>
    <g>
      <line x1="419.999961853027344" y1="40.622295379638672" x2="434.25897216796875" y2="40.622295379638672" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="433.091781616210938 44.611362457275391 439.999954223632812 40.622295379638672 433.091781616210938 36.633235931396484 433.091781616210938 44.611362457275391"></polygon>
    </g>
    <rect x="299.999959784836392" y="20.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(322.20703125 45.297916412353516)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
    <line x1="559.974513493136328" y1="40.622297056561365" x2="601.974513493136328" y2="40.622297056561365" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <rect x="439.999959784836392" y="20.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(453.1640625 45.297916412353516)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">V4l2h264dec</tspan></text>
    <g>
      <line x1="139.999954223632812" y1="90.622295379638672" x2="154.25897216796875" y2="90.622295379638672" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="153.091781616210938 94.6113624572763 159.999954223632812 90.622295379638672 153.091781616210938 86.633235931396484 153.091781616210938 94.6113624572763"></polygon>
    </g>
    <rect x="19.999959784836392" y="70.622297056560456" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(58.082000732421875 95.297916412353516)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesrc</tspan></text>
    <g>
      <line x1="279.999959945678711" y1="90.622295379638672" x2="294.258975982666016" y2="90.622295379638672" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="293.09178352355957 94.6113624572763 299.999959945678711 90.622295379638672 293.09178352355957 86.633235931396484 293.09178352355957 94.6113624572763"></polygon>
    </g>
    <rect x="159.999959784836392" y="70.622297056560456" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(188.703155517578125 95.297916412353516)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtdemux</tspan></text>
    <g>
      <line x1="419.999961853027344" y1="90.622295379638672" x2="434.25897216796875" y2="90.622295379638672" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="433.091781616210938 94.6113624572763 439.999954223632812 90.622295379638672 433.091781616210938 86.633235931396484 433.091781616210938 94.6113624572763"></polygon>
    </g>
    <rect x="299.999959784836392" y="70.622297056560456" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(322.20703125 95.297916412353516)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
    <line x1="559.974513493136328" y1="90.622297056560456" x2="601.974513493136328" y2="90.622297056560456" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <rect x="439.999959784836392" y="70.622297056560456" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(453.1640625 95.297916412353516)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">V4l2h264dec</tspan></text>
    <g>
      <line x1="139.999954223632812" y1="140.622303009033203" x2="154.25897216796875" y2="140.622303009033203" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="153.091781616210938 144.611362457275391 159.999954223632812 140.622303009033203 153.091781616210938 136.633228302001953 153.091781616210938 144.611362457275391"></polygon>
    </g>
    <rect x="19.999959784836392" y="120.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(58.082000732421875 145.297916412353516)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesrc</tspan></text>
    <g>
      <line x1="279.999959945678711" y1="140.622303009033203" x2="294.258975982666016" y2="140.622303009033203" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="293.09178352355957 144.611362457275391 299.999959945678711 140.622303009033203 293.09178352355957 136.633228302001953 293.09178352355957 144.611362457275391"></polygon>
    </g>
    <rect x="159.999959784836392" y="120.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(188.703155517578125 145.297916412353516)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtdemux</tspan></text>
    <g>
      <line x1="419.999961853027344" y1="140.622303009033203" x2="434.25897216796875" y2="140.622303009033203" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="433.091781616210938 144.611362457275391 439.999954223632812 140.622303009033203 433.091781616210938 136.633228302001953 433.091781616210938 144.611362457275391"></polygon>
    </g>
    <rect x="299.999959784836392" y="120.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(322.20703125 145.297916412353516)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
    <line x1="559.974513493136328" y1="140.622297056561365" x2="601.974513493136328" y2="140.622297056561365" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <rect x="439.999959784836392" y="120.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(453.1640625 145.297916412353516)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">V4l2h264dec</tspan></text>
    <g>
      <line x1="139.999954223632812" y1="190.622303009033203" x2="154.25897216796875" y2="190.622303009033203" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="153.091781616210938 194.611362457275391 159.999954223632812 190.622303009033203 153.091781616210938 186.633228302001953 153.091781616210938 194.611362457275391"></polygon>
    </g>
    <rect x="19.999959784836392" y="170.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(58.082000732421875 195.297946929931641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesrc</tspan></text>
    <g>
      <line x1="279.999959945678711" y1="190.622303009033203" x2="294.258975982666016" y2="190.622303009033203" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="293.09178352355957 194.611362457275391 299.999959945678711 190.622303009033203 293.09178352355957 186.633228302001953 293.09178352355957 194.611362457275391"></polygon>
    </g>
    <rect x="159.999959784836392" y="170.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(188.703155517578125 195.297946929931641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtdemux</tspan></text>
    <g>
      <line x1="419.999961853027344" y1="190.622303009033203" x2="434.25897216796875" y2="190.622303009033203" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="433.091781616210938 194.611362457275391 439.999954223632812 190.622303009033203 433.091781616210938 186.633228302001953 433.091781616210938 194.611362457275391"></polygon>
    </g>
    <rect x="299.999959784836392" y="170.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(322.20703125 195.297946929931641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
    <line x1="559.974513493136328" y1="190.622297056561365" x2="601.974513493136328" y2="190.622297056561365" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <rect x="439.999959784836392" y="170.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(453.1640625 195.297946929931641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">V4l2h264dec</tspan></text>
    <g>
      <line x1="139.999954223632812" y1="240.622287750244141" x2="154.25897216796875" y2="240.622287750244141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="153.091781616210938 244.611362457275391 159.999954223632812 240.622287750244141 153.091781616210938 236.633243560791016 153.091781616210938 244.611362457275391"></polygon>
    </g>
    <rect x="19.999959784836392" y="220.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(58.082000732421875 245.297946929931641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesrc</tspan></text>
    <g>
      <line x1="279.999959945678711" y1="240.622287750244141" x2="294.258975982666016" y2="240.622287750244141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="293.09178352355957 244.611362457275391 299.999959945678711 240.622287750244141 293.09178352355957 236.633243560791016 293.09178352355957 244.611362457275391"></polygon>
    </g>
    <rect x="159.999959784836392" y="220.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(188.703155517578125 245.297946929931641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtdemux</tspan></text>
    <g>
      <line x1="419.999961853027344" y1="240.622287750244141" x2="434.25897216796875" y2="240.622287750244141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="433.091781616210938 244.611362457275391 439.999954223632812 240.622287750244141 433.091781616210938 236.633243560791016 433.091781616210938 244.611362457275391"></polygon>
    </g>
    <rect x="299.999959784836392" y="220.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(322.20703125 245.297946929931641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
    <line x1="559.974513493136328" y1="240.622297056561365" x2="601.974513493136328" y2="240.622297056561365" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <rect x="439.999959784836392" y="220.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(453.1640625 245.297946929931641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">V4l2h264dec</tspan></text>
    <g>
      <line x1="139.999954223632812" y1="290.622287750244141" x2="154.25897216796875" y2="290.622287750244141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="153.091781616210938 294.611362457275391 159.999954223632812 290.622287750244141 153.091781616210938 286.633243560791016 153.091781616210938 294.611362457275391"></polygon>
    </g>
    <rect x="19.999959784836392" y="270.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(58.082000732421875 295.297946929931641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesrc</tspan></text>
    <g>
      <line x1="279.999959945678711" y1="290.622287750244141" x2="294.258975982666016" y2="290.622287750244141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="293.09178352355957 294.611362457275391 299.999959945678711 290.622287750244141 293.09178352355957 286.633243560791016 293.09178352355957 294.611362457275391"></polygon>
    </g>
    <rect x="159.999959784836392" y="270.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(188.703155517578125 295.297946929931641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtdemux</tspan></text>
    <g>
      <line x1="419.999961853027344" y1="290.622287750244141" x2="434.25897216796875" y2="290.622287750244141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="433.091781616210938 294.611362457275391 439.999954223632812 290.622287750244141 433.091781616210938 286.633243560791016 433.091781616210938 294.611362457275391"></polygon>
    </g>
    <rect x="299.999959784836392" y="270.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(322.20703125 295.297946929931641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
    <line x1="559.974513493136328" y1="290.622297056561365" x2="601.974513493136328" y2="290.622297056561365" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <rect x="439.999959784836392" y="270.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(453.1640625 295.297946929931641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">V4l2h264dec</tspan></text>
    <g>
      <line x1="139.999954223632812" y1="340.622287750244141" x2="154.25897216796875" y2="340.622287750244141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="153.091781616210938 344.611362457275391 159.999954223632812 340.622287750244141 153.091781616210938 336.633243560791016 153.091781616210938 344.611362457275391"></polygon>
    </g>
    <rect x="19.999959784836392" y="320.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(58.082000732421875 345.297946929931641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesrc</tspan></text>
    <g>
      <line x1="279.999959945678711" y1="340.622287750244141" x2="294.258975982666016" y2="340.622287750244141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="293.09178352355957 344.611362457275391 299.999959945678711 340.622287750244141 293.09178352355957 336.633243560791016 293.09178352355957 344.611362457275391"></polygon>
    </g>
    <rect x="159.999959784836392" y="320.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(188.703155517578125 345.297946929931641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtdemux</tspan></text>
    <g>
      <line x1="419.999961853027344" y1="340.622287750244141" x2="434.25897216796875" y2="340.622287750244141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="433.091781616210938 344.611362457275391 439.999954223632812 340.622287750244141 433.091781616210938 336.633243560791016 433.091781616210938 344.611362457275391"></polygon>
    </g>
    <rect x="299.999959784836392" y="320.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(322.20703125 345.297946929931641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
    <line x1="559.974513493136328" y1="340.622297056561365" x2="601.974513493136328" y2="340.622297056561365" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <rect x="439.999959784836392" y="320.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(453.1640625 345.297946929931641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">V4l2h264dec</tspan></text>
    <g>
      <line x1="139.999954223632812" y1="390.622287750244141" x2="154.25897216796875" y2="390.622287750244141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="153.091781616210938 394.611362457275391 159.999954223632812 390.622287750244141 153.091781616210938 386.633243560791016 153.091781616210938 394.611362457275391"></polygon>
    </g>
    <rect x="19.999959784836392" y="370.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(58.082000732421875 395.297946929931641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesrc</tspan></text>
    <g>
      <line x1="279.999959945678711" y1="390.622287750244141" x2="294.258975982666016" y2="390.622287750244141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="293.09178352355957 394.611362457275391 299.999959945678711 390.622287750244141 293.09178352355957 386.633243560791016 293.09178352355957 394.611362457275391"></polygon>
    </g>
    <rect x="159.999959784836392" y="370.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(188.703155517578125 395.297946929931641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtdemux</tspan></text>
    <g>
      <line x1="419.999961853027344" y1="390.622287750244141" x2="434.25897216796875" y2="390.622287750244141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="433.091781616210938 394.611362457275391 439.999954223632812 390.622287750244141 433.091781616210938 386.633243560791016 433.091781616210938 394.611362457275391"></polygon>
    </g>
    <rect x="299.999959784836392" y="370.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(322.20703125 395.297946929931641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
    <line x1="559.974513493136328" y1="390.622297056561365" x2="601.974513493136328" y2="390.622297056561365" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <rect x="439.999959784836392" y="370.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(453.1640625 395.297946929931641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">V4l2h264dec</tspan></text>
    <g>
      <line x1="139.999954223632812" y1="440.622287750244141" x2="154.25897216796875" y2="440.622287750244141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="153.091781616210938 444.611362457275391 159.999954223632812 440.622287750244141 153.091781616210938 436.633243560791016 153.091781616210938 444.611362457275391"></polygon>
    </g>
    <rect x="19.999959784836392" y="420.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(58.082000732421875 445.297946929931641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesrc</tspan></text>
    <g>
      <line x1="279.999959945678711" y1="440.622287750244141" x2="294.258975982666016" y2="440.622287750244141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="293.09178352355957 444.611362457275391 299.999959945678711 440.622287750244141 293.09178352355957 436.633243560791016 293.09178352355957 444.611362457275391"></polygon>
    </g>
    <rect x="159.999959784836392" y="420.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(188.703155517578125 445.297946929931641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtdemux</tspan></text>
    <g>
      <line x1="419.999961853027344" y1="440.622287750244141" x2="434.25897216796875" y2="440.622287750244141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="433.091781616210938 444.611362457275391 439.999954223632812 440.622287750244141 433.091781616210938 436.633243560791016 433.091781616210938 444.611362457275391"></polygon>
    </g>
    <g>
      <line x1="601.974517822265625" y1="331.117893218994141" x2="626.2335205078125" y2="331.117893218994141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="625.06634521484375 335.106967926025391 631.974517822265625 331.117893218994141 625.06634521484375 327.128818511962891 625.06634521484375 335.106967926025391"></polygon>
    </g>
    <rect x="299.999959784836392" y="420.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(322.20703125 445.297946929931641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
    <line x1="559.974513493136328" y1="440.622297056561365" x2="601.974513493136328" y2="440.622297056561365" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <rect x="439.999959784836392" y="420.622297056561365" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(453.1640625 445.297946929931641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">V4l2h264dec</tspan></text>
    <g>
      <line x1="139.999954223632812" y1="521.613498687744141" x2="154.25897216796875" y2="521.613498687744141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="153.091781616210938 525.602573394775391 159.999954223632812 521.613498687744141 153.091781616210938 517.624423980712891 153.091781616210938 525.602573394775391"></polygon>
    </g>
    <rect x="19.999959784836392" y="501.613494772347622" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(58.081832885742188 526.289157867431641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesrc</tspan></text>
    <g>
      <line x1="279.999959945678711" y1="521.613498687744141" x2="294.258975982666016" y2="521.613498687744141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="293.09178352355957 525.602573394775391 299.999959945678711 521.613498687744141 293.09178352355957 517.624423980712891 293.09178352355957 525.602573394775391"></polygon>
    </g>
    <rect x="159.999959784836392" y="501.613494772347622" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(188.703155517578125 526.289157867431641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtdemux</tspan></text>
    <g>
      <line x1="419.999961853027344" y1="521.613498687744141" x2="434.25897216796875" y2="521.613498687744141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="433.091781616210938 525.602573394775391 439.999954223632812 521.613498687744141 433.091781616210938 517.624423980712891 433.091781616210938 525.602573394775391"></polygon>
    </g>
    <rect x="299.999959784836392" y="501.613494772347622" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(322.20703125 526.289157867431641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
    <line x1="559.974513493136328" y1="521.613494772347622" x2="601.974513493136328" y2="521.613494772347622" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <rect x="439.999959784836392" y="501.613494772347622" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(453.1640625 526.289157867431641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">V4l2h264dec</tspan></text>
    <g>
      <line x1="139.999954223632812" y1="571.613498687744141" x2="154.25897216796875" y2="571.613498687744141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="153.091781616210938 575.602573394775391 159.999954223632812 571.613498687744141 153.091781616210938 567.624423980712891 153.091781616210938 575.602573394775391"></polygon>
    </g>
    <rect x="19.999959784836392" y="551.613494772347622" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(58.081832885742188 576.289157867431641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesrc</tspan></text>
    <g>
      <line x1="279.999959945678711" y1="571.613498687744141" x2="294.258975982666016" y2="571.613498687744141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="293.09178352355957 575.602573394775391 299.999959945678711 571.613498687744141 293.09178352355957 567.624423980712891 293.09178352355957 575.602573394775391"></polygon>
    </g>
    <rect x="159.999959784836392" y="551.613494772347622" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(188.703155517578125 576.289157867431641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtdemux</tspan></text>
    <g>
      <line x1="419.999961853027344" y1="571.613498687744141" x2="434.25897216796875" y2="571.613498687744141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="433.091781616210938 575.602573394775391 439.999954223632812 571.613498687744141 433.091781616210938 567.624423980712891 433.091781616210938 575.602573394775391"></polygon>
    </g>
    <rect x="299.999959784836392" y="551.613494772347622" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(322.20703125 576.289157867431641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
    <line x1="559.974513493136328" y1="571.613494772347622" x2="601.974513493136328" y2="571.613494772347622" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <rect x="439.999959784836392" y="551.613494772347622" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(453.1640625 576.289157867431641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">V4l2h264dec</tspan></text>
    <g>
      <line x1="139.999954223632812" y1="621.613498687744141" x2="154.25897216796875" y2="621.613498687744141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="153.091781616210938 625.602573394775391 159.999954223632812 621.613498687744141 153.091781616210938 617.624423980712891 153.091781616210938 625.602573394775391"></polygon>
    </g>
    <rect x="19.999959784836392" y="601.613494772347622" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(58.081832885742188 626.289157867431641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesrc</tspan></text>
    <g>
      <line x1="279.999959945678711" y1="621.613498687744141" x2="294.258975982666016" y2="621.613498687744141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="293.09178352355957 625.602573394775391 299.999959945678711 621.613498687744141 293.09178352355957 617.624423980712891 293.09178352355957 625.602573394775391"></polygon>
    </g>
    <rect x="159.999959784836392" y="601.613494772347622" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(188.703155517578125 626.289157867431641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtdemux</tspan></text>
    <g>
      <line x1="419.999961853027344" y1="621.613498687744141" x2="434.25897216796875" y2="621.613498687744141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="433.091781616210938 625.602573394775391 439.999954223632812 621.613498687744141 433.091781616210938 617.624423980712891 433.091781616210938 625.602573394775391"></polygon>
    </g>
    <rect x="299.999959784836392" y="601.613494772347622" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(322.20703125 626.289157867431641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
    <polyline points="559.974513493136328 621.613494772347622 601.974513493136328 621.613494772347622 601.974513493136328 40.622297056561365" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
    <rect x="439.999959784836392" y="601.613494772347622" width="120" height="40" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(453.1640625 626.289157867431641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">V4l2h264dec</tspan></text>
    <rect x="631.974513493136328" y="306.117895914454493" width="150" height="50" rx="4" ry="4" style="fill: #2a2aea;"></rect>
    <text transform="translate(658.11505126953125 335.793430328369141)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtivcomposer</tspan></text>
    <g>
      <line x1="781.974517822265625" y1="331.117893218994141" x2="806.2335205078125" y2="331.117893218994141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="805.06634521484375 335.106967926025391 811.974517822265625 331.117893218994141 805.06634521484375 327.128818511962891 805.06634521484375 335.106967926025391"></polygon>
    </g>
    <rect x="811.974513493136328" y="306.117895914454493" width="150" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(841.986602783203125 335.793735504150391)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">Waylandsink</tspan></text>
    <g>
      <line x1="79.999954223632812" y1="461.244663238525391" x2="79.999954223632812" y2="464.244663238525391" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <line x1="79.999954223632812" y1="467.644657135009766" x2="79.999954223632812" y2="496.544651031494141" style="fill: none; stroke: #000; stroke-dasharray: 6.800000190734863 3.400000095367432; stroke-miterlimit: 10;"></line>
      <line x1="79.999954223632812" y1="498.244663238525391" x2="79.999954223632812" y2="501.244663238525391" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    </g>
    <g>
      <line x1="219.999961853027344" y1="461.244663238525391" x2="219.999961853027344" y2="464.244663238525391" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <line x1="219.999961853027344" y1="467.644657135009766" x2="219.999961853027344" y2="496.544651031494141" style="fill: none; stroke: #000; stroke-dasharray: 6.800000190734863 3.400000095367432; stroke-miterlimit: 10;"></line>
      <line x1="219.999961853027344" y1="498.244663238525391" x2="219.999961853027344" y2="501.244663238525391" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    </g>
    <g>
      <line x1="359.999958038330078" y1="461.244663238525391" x2="359.999958038330078" y2="464.244663238525391" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <line x1="359.999958038330078" y1="467.644657135009766" x2="359.999958038330078" y2="496.544651031494141" style="fill: none; stroke: #000; stroke-dasharray: 6.800000190734863 3.400000095367432; stroke-miterlimit: 10;"></line>
      <line x1="359.999958038330078" y1="498.244663238525391" x2="359.999958038330078" y2="501.244663238525391" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    </g>
    <g>
      <line x1="499.999954223632812" y1="461.244663238525391" x2="499.999954223632812" y2="464.244663238525391" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <line x1="499.999954223632812" y1="467.644657135009766" x2="499.999954223632812" y2="496.544651031494141" style="fill: none; stroke: #000; stroke-dasharray: 6.800000190734863 3.400000095367432; stroke-miterlimit: 10;"></line>
      <line x1="499.999954223632812" y1="498.244663238525391" x2="499.999954223632812" y2="501.244663238525391" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    </g>
  </g>
</svg>

## 1080p + 1080p offline picture-in-picture composition

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

This use case shows the composition of two 1080p streams to get a picture-in-picture
        display. The two 1080p streams are read from two file sources.

Run the use case on the target
            device:

    gst-launch-1.0 -e qtivcomposer name=mixer sink_0::position="<0, 0>" sink_0::dimensions="<1280, 720>" sink_1::position="<590, 310>" sink_1::dimensions="<640, 360>" mixer. ! queue ! waylandsink fullscreen=true filesrc location=/tmp/Animals_000_720p_180s_30FPS.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mixer. filesrc location=/tmp/Animals_000_720p_180s_30FPS.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mixer. Copy to clipboard

To stop the use case, use CTRL + C.

Figure : Pipeline for picture-in-picture display of 1080p streams–file source
            
            <?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="1057" height="206" viewbox="0 0 1057 206">
  <g id="Layer_1" data-name="Layer 1">
    <g>
      <rect x=".5" y=".500213623046875" width="1056" height="205" rx="7.499999999999999" ry="7.499999999999999" style="fill: #fafafa;"></rect>
      <path d="M1049,1c3.85986328125,0,7,3.140133380889893,7,7v190c0,3.85986328125-3.14013671875,7-7,7H8c-3.85986328125,0-7-3.14013671875-7-7V8c0-3.859866619110107,3.14013671875-7,7-7h1041M1049,0H8C3.581733703613281,0,0,3.581733226776123,0,8v190c0,4.41827392578125,3.581733703613281,8,8,8h1041c4.41845703125,0,8-3.58172607421875,8-8V8c0-4.418266773223877-3.58154296875-8-8-8h0Z" style="fill: #d2d7e1;"></path>
    </g>
    <g>
      <g>
        <text transform="translate(855.492462158203125 182.09149169921875)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Qualcomm </tspan></text>
        <rect x="835.241453846350851" y="170" width="16" height="16" rx="2" ry="2" style="fill: #2a2aea;"></rect>
      </g>
      <g>
        <text transform="translate(954.074249267578125 182.09149169921875)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Open source</tspan></text>
        <rect x="933.823235259209468" y="170" width="16" height="16" rx="2" ry="2" style="fill: #007884;"></rect>
      </g>
    </g>
  </g>
  <g id="Layer_2" data-name="Layer 2">
    <g>
      <g>
        <line x1="170" y1="45" x2="189.259002685546875" y2="45" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="188.091827392578125 48.989063262939453 195 45 188.091827392578125 41.010934829711914 188.091827392578125 48.989063262939453"></polygon>
      </g>
      <g>
        <rect x="195" y="19.999999046325684" width="150" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
        <text transform="translate(238.703156471252441 48.506711959838867)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtdemux</tspan></text>
      </g>
      <g>
        <line x1="345" y1="45" x2="364.259002685546875" y2="45" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="363.091827392578125 48.989063262939453 370 45 363.091827392578125 41.010934829711914 363.091827392578125 48.989063262939453"></polygon>
      </g>
      <g>
        <rect x="370" y="19.999999046325684" width="150" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
        <text transform="translate(407.20703125 48.506711959838867)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
      </g>
      <g>
        <g>
          <rect x="20" y="19.999999046325684" width="150" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
          <text transform="translate(73.08203125 48.506711959838867)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesrc</tspan></text>
        </g>
        <g>
          <rect x="20" y="99.999999046325684" width="150" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
          <text transform="translate(73.08203125 128.506710052490234)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesrc</tspan></text>
        </g>
      </g>
      <g>
        <line x1="170" y1="125" x2="189.259002685546875" y2="125" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="188.091827392578125 128.989059448242188 195 125 188.091827392578125 121.010932922363281 188.091827392578125 128.989059448242188"></polygon>
      </g>
      <g>
        <rect x="195" y="99.999999046325684" width="150" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
        <text transform="translate(238.703156471252441 128.506710052490234)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtdemux</tspan></text>
      </g>
      <g>
        <line x1="345" y1="125" x2="364.259002685546875" y2="125" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="363.091827392578125 128.989059448242188 370 125 363.091827392578125 121.010932922363281 363.091827392578125 128.989059448242188"></polygon>
      </g>
      <g>
        <rect x="370" y="99.999999046325684" width="150" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
        <text transform="translate(407.20703125 128.506710052490234)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
      </g>
      <g>
        <line x1="520" y1="125" x2="539.259033203125" y2="125" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="538.091796875 128.989059448242188 545 125 538.091796875 121.010932922363281 538.091796875 128.989059448242188"></polygon>
      </g>
      <g>
        <line x1="520" y1="45" x2="539.259033203125" y2="45" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="538.091796875 48.989063262939453 545 45 538.091796875 41.010934829711914 538.091796875 48.989063262939453"></polygon>
      </g>
      <g>
        <rect x="545" y="99.999999046325684" width="150" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
        <text transform="translate(574.3790283203125 128.506710052490234)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2h264dec</tspan></text>
      </g>
      <g>
        <rect x="732" y="59.999999046325684" width="140" height="50" rx="4" ry="4" style="fill: #2a2aea;"></rect>
        <text transform="translate(753.14068603515625 88.506711006164551)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtivcomposer</tspan></text>
      </g>
      <g>
        <line x1="872" y1="85" x2="891.259033203125" y2="85" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="890.091796875 88.989059448242188 897 85 890.091796875 81.010932922363281 890.091796875 88.989059448242188"></polygon>
      </g>
      <g>
        <rect x="897" y="59.999999046325684" width="140" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
        <text transform="translate(923.09771728515625 88.506711006164551)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">waylandsink</tspan></text>
      </g>
      <g>
        <polyline points="694.99896240234375 45 713 45 713 77.840164184570312 725.259033203125 77.840164184570312" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
        <polygon points="724.091796875 81.8292236328125 731 77.840164184570312 724.091796875 73.851097106933594 724.091796875 81.8292236328125"></polygon>
      </g>
      <g>
        <polyline points="725.259033203125 95.407463073730469 713 95.407463073730469 713 125 695 125" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
        <polygon points="724.091796875 91.418403625488281 731 95.407463073730469 724.091796875 99.396530151367188 724.091796875 91.418403625488281"></polygon>
      </g>
      <g>
        <rect x="545" y="19.999999046325684" width="150" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
        <text transform="translate(574.3790283203125 48.506711959838867)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2h264dec</tspan></text>
      </g>
    </g>
  </g>
</svg>

## 1080p live camera and 1080p offline picture-in-picture composition

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

The use case shows the composition of two 1080p streams to get a picture-in-picture
        display. The first 1080p stream is read from a file source. The second stream is collected
        from a camera.

Run the use case on the target device:

    gst-launch-1.0 -e qtivcomposer name=mixer sink_0::position="<0, 0>" sink_0::dimensions="<1280, 720>" sink_1::position="<590, 310>" sink_1::dimensions="<640, 360>" mixer. ! queue ! waylandsink fullscreen=true qtiqmmfsrc name=camsrc video_0::type=video video_1::type=preview ! video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1 ! mixer. filesrc location=/opt/<1080p_H264/AVC_file>.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mixer.Copy to clipboard

To stop the use case, use CTRL + C.

Figure : Pipeline for picture-in-picture display of 1080p streams–file source and camera
                source
            
            <?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="1057" height="206" viewbox="0 0 1057 206">
  <g id="Layer_1" data-name="Layer 1">
    <g>
      <rect x=".5" y=".500213623046875" width="1056" height="205" rx="7.499999999999999" ry="7.499999999999999" style="fill: #fafafa;"></rect>
      <path d="M1049,1c3.85986328125,0,7,3.140133380889893,7,7v190c0,3.85986328125-3.14013671875,7-7,7H8c-3.85986328125,0-7-3.14013671875-7-7V8c0-3.859866619110107,3.14013671875-7,7-7h1041M1049,0H8C3.581733703613281,0,0,3.581733226776123,0,8v190c0,4.41827392578125,3.581733703613281,8,8,8h1041c4.41845703125,0,8-3.58172607421875,8-8V8c0-4.418266773223877-3.58154296875-8-8-8h0Z" style="fill: #d2d7e1;"></path>
    </g>
    <g>
      <g>
        <text transform="translate(856.346038818359375 182.09149169921875)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Qualcomm </tspan></text>
        <rect x="836.095023152904105" y="170" width="16" height="16" rx="2" ry="2" style="fill: #2a2aea;"></rect>
      </g>
      <g>
        <text transform="translate(954.9278564453125 182.09149169921875)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Open source</tspan></text>
        <rect x="934.676804565762723" y="170" width="16" height="16" rx="2" ry="2" style="fill: #007884;"></rect>
      </g>
    </g>
  </g>
  <g id="Layer_2" data-name="Layer 2">
    <g>
      <g>
        <rect x="20" y="99.999999046325684" width="150" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
        <text transform="translate(73.08203125 128.506710052490234)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesrc</tspan></text>
      </g>
      <g>
        <line x1="170" y1="125" x2="189.259002685546875" y2="125" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="188.091827392578125 128.989059448242188 195 125 188.091827392578125 121.010932922363281 188.091827392578125 128.989059448242188"></polygon>
      </g>
      <g>
        <rect x="195" y="99.999999046325684" width="150" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
        <text transform="translate(238.703156471252441 128.506710052490234)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtdemux</tspan></text>
      </g>
      <g>
        <line x1="345" y1="125" x2="364.259002685546875" y2="125" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="363.091827392578125 128.989059448242188 370 125 363.091827392578125 121.010932922363281 363.091827392578125 128.989059448242188"></polygon>
      </g>
      <g>
        <rect x="370" y="99.999999046325684" width="150" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
        <text transform="translate(407.20703125 128.506710052490234)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
      </g>
      <g>
        <line x1="520" y1="125" x2="539.259033203125" y2="125" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="538.091796875 128.989059448242188 545 125 538.091796875 121.010932922363281 538.091796875 128.989059448242188"></polygon>
      </g>
      <g>
        <rect x="545" y="99.999999046325684" width="150" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
        <text transform="translate(574.3790283203125 128.506710052490234)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2h264dec</tspan></text>
      </g>
      <g>
        <rect x="732" y="59.999999046325684" width="140" height="50" rx="4" ry="4" style="fill: #2a2aea;"></rect>
        <text transform="translate(753.14068603515625 88.506711006164551)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtivcomposer</tspan></text>
      </g>
      <g>
        <line x1="872" y1="85" x2="891.259033203125" y2="85" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="890.091796875 88.989059448242188 897 85 890.091796875 81.010932922363281 890.091796875 88.989059448242188"></polygon>
      </g>
      <g>
        <rect x="897" y="59.999999046325684" width="140" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
        <text transform="translate(923.09771728515625 88.506711006164551)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">waylandsink</tspan></text>
      </g>
      <g>
        <polyline points="694.99896240234375 45 713 45 713 77.840164184570312 725.259033203125 77.840164184570312" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
        <polygon points="724.091796875 81.8292236328125 731 77.840164184570312 724.091796875 73.851097106933594 724.091796875 81.8292236328125"></polygon>
      </g>
      <g>
        <polyline points="725.259033203125 95.407463073730469 713 95.407463073730469 713 125 695 125" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
        <polygon points="724.091796875 91.418403625488281 731 95.407463073730469 724.091796875 99.396530151367188 724.091796875 91.418403625488281"></polygon>
      </g>
      <g>
        <rect x="545" y="19.999999046325684" width="150" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
        <text transform="translate(593.4298095703125 48.506711959838867)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">camsrc</tspan></text>
      </g>
    </g>
  </g>
</svg>

### Related information

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

Last Published: Feb 20, 2026

[Previous Topic
Audio-video use cases](https://docs.qualcomm.com/bundle/publicresource/80-70022-50/topics/audio-video-use-cases.md) [Next Topic
Video overlay use cases](https://docs.qualcomm.com/bundle/publicresource/80-70022-50/topics/overlay-use-cases.md)