# Video composition use cases

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-80022-50/topic/gstreamer-application-use-cases.html).

## 16 480p offline stream side by side composition

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**.

<?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" aria-label="../../_images/pipeline_sidebyside_display_480p_video_streams.svg">
  <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>

**Figure : Pipeline for side by side display of 16 480p video streams–file sources**

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

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**.

<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="1057" height="206" viewbox="0 0 1057 206" aria-label="../../_images/pipeline_pictureinpicture_display_1080p_streams_filesource.svg">
  <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>

**Figure : Pipeline for picture-in-picture display of 1080p streams–file source**

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

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**.

<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="1057" height="206" viewbox="0 0 1057 206" aria-label="../../_images/pipeline_pictureinpicture_display_1080p_streams_file_camsource.svg">
  <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>

**Figure : Pipeline for picture-in-picture display of 1080p streams–file source and camera source**

### Related information

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

Last Published: May 14, 2026

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