# Video encode and decode

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

The camera and video encode use cases show various scenarios for encoding and
        processing the live 4K and 1080p camera streams.

### Prerequisites

- 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).
- Install the VLC media player on the host computer for the RTSP stream.
Note: 24 end-to-end concurrent video sessions aren't
                        supported for QCS6490.

## One stream–1080p AVC RTSP from live source

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

The use case uses a 1080p stream from the camera for encoding. The encoded stream is
        sent over the network using the RTSP streaming.

The following figure shows the flow of the pipeline execution:

Figure : Pipeline for encoding 1080p RTSP stream
            
            <?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="940" height="139.037885665893555" viewbox="0 0 940 139.037885665893555">
  <g id="Layer_1" data-name="Layer 1">
    <g>
      <rect x=".5" y=".499876022338867" width="939" height="138.0380859375" rx="7.5" ry="7.5" style="fill: #fafafa;"></rect>
      <path d="M932,1c3.8597412109375,0,7,3.140237808227539,7,7.000001907348633v123.037883758544922c0,3.859756469726562-3.1402587890625,7-7,7H8c-3.859771728515625,0-7-3.140243530273438-7-7V8.000001907348633c0-3.859764099121094,3.140228271484375-7.000001907348633,7-7.000001907348633h924M932,0H8C3.581771850585938,0,0,3.581647872924805,0,8.000001907348633v123.037883758544922c0,4.418228149414062,3.581771850585938,8,8,8h924c4.4183349609375,0,8-3.581771850585938,8-8V8.000001907348633c0-4.418354034423828-3.5816650390625-8.000001907348633-8-8.000001907348633h0Z" style="fill: #d2d7e1;"></path>
    </g>
  </g>
  <g id="Layer_2" data-name="Layer 2">
    <text transform="translate(439.60546875 32.657371520996094)" style="font-family: Roboto-Bold, Roboto; font-size: 16px; font-weight: 700;"><tspan x="0" y="0">GST BIN</tspan></text>
    <g>
      <g>
        <rect x="20" y="50.877172470092773" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
        <text transform="translate(73.429718017578125 79.383882522583008)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">camsrc</tspan></text>
      </g>
      <g>
        <line x1="180" y1="75.877172470092773" x2="199.976654052734375" y2="75.877172470092773" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="198.955352783203125 79.367605209350586 205 75.877172470092773 198.955352783203125 72.386739730834961 198.955352783203125 79.367605209350586"></polygon>
      </g>
      <g>
        <rect x="205" y="50.877172470092773" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
        <text transform="translate(239.476604461669922 79.383882522583008)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2h264enc</tspan></text>
      </g>
      <g>
        <line x1="365" y1="75.877172470092773" x2="384.97662353515625" y2="75.877172470092773" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="383.955322265625 79.367605209350586 390 75.877172470092773 383.955322265625 72.386739730834961 383.955322265625 79.367605209350586"></polygon>
      </g>
      <g>
        <rect x="390" y="50.877172470092773" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
        <text transform="translate(432.207061767578125 79.383882522583008)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
      </g>
      <g>
        <line x1="550" y1="75.877172470092773" x2="569.97662353515625" y2="75.877172470092773" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="568.955322265625 79.367605209350586 575 75.877172470092773 568.955322265625 72.386739730834961 568.955322265625 79.367605209350586"></polygon>
      </g>
      <g>
        <rect x="575" y="50.877172470092773" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
        <text transform="translate(614.683624267578125 79.383882522583008)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">rtph264pay</tspan></text>
      </g>
      <g>
        <line x1="735" y1="75.877172470092773" x2="754.97662353515625" y2="75.877172470092773" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="753.955322265625 79.367605209350586 760 75.877172470092773 753.955322265625 72.386739730834961 753.955322265625 79.367605209350586"></polygon>
      </g>
      <g>
        <rect x="760" y="50.877172470092773" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
        <text transform="translate(812.05474853515625 79.383882522583008)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">udpsink</tspan></text>
      </g>
    </g>
    <g>
      <text transform="translate(840.8314208984375 124.968656539916992)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Open source</tspan></text>
      <rect x="820.580394990331115" y="112.877164840698242" width="16" height="16" rx="2" ry="2" style="fill: #007884;"></rect>
    </g>
  </g>
</svg>

- Run the RTSP server on the target device with udpsrc (You can run it in the
                background as a
                    service):

        gst-rtsp-server -a "< IP_address of the device >" -p 8900 -m /live "( udpsrc name=pay0 port=8554 caps=\"application/x-rtp,media=video,clock-rate=90000,encoding-name=H264,payload=96\" )"Copy to clipboard

If
                    the IP address of the device is 127.0.0.1, run the following
                    command:

        adb forward tcp:8900 tcp:8900Copy to clipboard
- Run the pipeline in another console on the target
                device:

        gst-launch-1.0 -e qtiqmmfsrc name=camsrc video_0::type=preview ! video/x-raw,format=NV12_Q08C,width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! queue ! h264parse ! mp4mux ! queue ! filesink location="/opt/mux.mp4" camsrc. ! video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! queue ! h264parse config-interval=-1 ! rtph264pay pt=96 ! udpsink host=<IP address of device> port=8554 camsrc. ! video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1 ! waylandsink fullscreen=trueCopy to clipboard

The streamed video is displayed as an RTSP stream on a host.

To stop the use case,  use CTRL + C.

### RTSP stream on host computer

Note: Ensure that you've installed VLC media player on the Linux
                host computer.

To view the RTSP stream on the host computer, do one of the following:

- vlc -vvv rtsp://&lt;IP\_address of the device&gt;:8900/live
                    [Ubuntu 18.04 with VLC version 3.0.8]
- ffplay -rtsp\_transport tcp rtsp://&lt;IP\_address of the
                        device&gt;:8900/live

To view the RTSP stream on the Windows host, do the following:

1. Open the VLC media player.
2. Go to Media <abbr title="and then"> &gt; </abbr>Open Network Stream, or  use CTRL +
                    N.
3. Enter rtsp://&lt;IP\_address of the device&gt;:8900/live.
4. Select Play.

## Two streams–4K AVC and 480p AVC from live source

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

The use cases implement one 4k stream and one 1080p stream from the camera for
        encoding. Each encoded stream is multiplexed into a different file.

Run the use case on the target device:

    gst-launch-1.0 -e qtiqmmfsrc name=camsrc video_0::type=preview ! video/x-raw,format=NV12_Q08C,width=3840,height=2160,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! queue ! h264parse ! mp4mux ! queue ! filesink location="/opt/mux1.mp4" camsrc. ! video/x-raw,format=NV12_Q08C,width=640,height=480,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! queue ! h264parse ! mp4mux ! queue ! filesink location="/opt/mux2.mp4"Copy to clipboard

To
            stop the use case, use CTRL + C. Pull the
            recorded content from the target device and then play the content on the host
            computer.

In the terminal of the host computer run the following commands:

scp -r root@[DEVICE IP-ADDR]:/opt/mux1.mp4 user1@[HOST IP-ADDR]:/workspace/Copy to clipboard

    scp -r root@[DEVICE IP-ADDR]:/opt/mux2.mp4 user1@[HOST IP-ADDR]:/workspace/Copy to clipboard

You can play the MP4 file on a media player.

The following figure shows the flow of the pipeline execution:

Figure : Pipeline for encoding two (4k and 1080p) camera streams 
            
            <?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="952.166610717773438" height="189.663992881774902" viewbox="0 0 952.166610717773438 189.663992881774902">
  <g id="Layer_1" data-name="Layer 1">
    <g>
      <rect x=".500106811523438" y=".499930381774902" width="951.16650390625" height="188.6640625" rx="7.499999999999944" ry="7.499999999999944" style="fill: #fafafa;"></rect>
      <path d="M944.166610717773438,1c3.8597412109375,0,7,3.14023494720459,7,7v173.663992881774902c0,3.859771728515625-3.1402587890625,7-7,7H7.999893188476562c-3.859771728515625,0-6.999893188476562-3.140228271484375-6.999893188476562-7V8C1,4.14023494720459,4.140121459960938,1,7.999893188476562,1h936.166717529296875M944.166610717773438,0H7.999893188476562C3.581649780273438,0,0,3.581764221191406,0,8v173.663992881774902c0,4.418243408203125,3.581649780273438,8,7.999893188476562,8h936.166717529296875c4.4183349609375,0,8-3.581756591796875,8-8V8c0-4.418235778808594-3.5816650390625-8-8-8h0Z" style="fill: #d2d7e1;"></path>
    </g>
  </g>
  <g id="Layer_2" data-name="Layer 2">
    <g>
      <g>
        <rect x="21.166610717773438" y="60.00003719329834" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
        <text transform="translate(74.596328735351562 88.506747245788574)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">camsrc</tspan></text>
      </g>
      <line x1="181.166610717773438" y1="85.00003719329834" x2="199.166610717773438" y2="85.00003719329834" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <g>
        <g>
          <g>
            <rect x="217.166610717773438" y="20.00003719329834" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(251.643211364746094 48.506748199462891)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2h264enc</tspan></text>
          </g>
          <g>
            <line x1="377.166610717773438" y1="45.00003719329834" x2="396.425643920898438" y2="45.00003719329834" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="395.258407592773438 48.989100456237793 402.166610717773438 45.00003719329834 395.258407592773438 41.010973930358887 395.258407592773438 48.989100456237793"></polygon>
          </g>
          <g>
            <rect x="402.166610717773438" y="20.00003719329834" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(444.373672485351562 48.506748199462891)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
          </g>
          <g>
            <line x1="562.166610717773438" y1="45.00003719329834" x2="581.425643920898438" y2="45.00003719329834" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="580.258407592773438 48.989100456237793 587.166610717773438 45.00003719329834 580.258407592773438 41.010973930358887 580.258407592773438 48.989100456237793"></polygon>
          </g>
          <g>
            <rect x="587.166610717773438" y="20.00003719329834" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(635.787734985351562 48.506748199462891)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">mp4mux</tspan></text>
          </g>
          <g>
            <line x1="747.166610717773438" y1="45.00003719329834" x2="766.425643920898438" y2="45.00003719329834" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="765.258407592773438 48.989100456237793 772.166610717773438 45.00003719329834 765.258407592773438 41.010973930358887 765.258407592773438 48.989100456237793"></polygon>
          </g>
          <g>
            <rect x="772.166610717773438" y="20.00003719329834" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(826.733078002929688 48.506748199462891)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesink</tspan></text>
          </g>
        </g>
        <g>
          <g>
            <rect x="217.166610717773438" y="100.00003719329834" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(251.643211364746094 128.50675106048584)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2h264enc</tspan></text>
          </g>
          <g>
            <line x1="377.166610717773438" y1="125.00003719329834" x2="396.425643920898438" y2="125.00003719329834" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="395.258407592773438 128.989096641540527 402.166610717773438 125.00003719329834 395.258407592773438 121.010970115661621 395.258407592773438 128.989096641540527"></polygon>
          </g>
          <g>
            <rect x="402.166610717773438" y="100.00003719329834" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(444.373672485351562 128.50675106048584)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
          </g>
          <g>
            <line x1="562.166610717773438" y1="125.00003719329834" x2="581.425643920898438" y2="125.00003719329834" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="580.258407592773438 128.989096641540527 587.166610717773438 125.00003719329834 580.258407592773438 121.010970115661621 580.258407592773438 128.989096641540527"></polygon>
          </g>
          <g>
            <rect x="587.166610717773438" y="100.00003719329834" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(635.787734985351562 128.50675106048584)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">mp4mux</tspan></text>
          </g>
          <g>
            <line x1="747.166610717773438" y1="125.00003719329834" x2="766.425643920898438" y2="125.00003719329834" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="765.258407592773438 128.989096641540527 772.166610717773438 125.00003719329834 765.258407592773438 121.010970115661621 765.258407592773438 128.989096641540527"></polygon>
          </g>
          <g>
            <rect x="772.166610717773438" y="100.00003719329834" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(826.733078002929688 128.50675106048584)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesink</tspan></text>
          </g>
        </g>
      </g>
      <g>
        <polyline points="211.425613403320312 45.00003719329834 199.166610717773438 45.00003719329834 199.166610717773438 128.66690731048584 211.425613403320312 128.66690731048584" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
        <polygon points="210.258438110351562 41.010973930358887 217.166610717773438 45.00003719329834 210.258438110351562 48.989100456237793 210.258438110351562 41.010973930358887"></polygon>
        <polygon points="210.258438110351562 132.655966758728027 217.166610717773438 128.66690731048584 210.258438110351562 124.677847862243652 210.258438110351562 132.655966758728027"></polygon>
      </g>
    </g>
    <g>
      <text transform="translate(838.077590942382812 176.542227745056152)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Open source</tspan></text>
      <rect x="817.826581075907598" y="164.450762697848404" width="16" height="16" rx="2" ry="2" style="fill: #007884;"></rect>
    </g>
  </g>
</svg>

## Three 1080p AVC streams from live source

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

The use case uses three 1080p streams from the camera for encoding. Each encoded
        stream is multiplexed into a different file.

Run the use case on the target
            device:

    gst-launch-1.0 -e qtiqmmfsrc name=camsrc video_0::type=preview ! video/x-raw,format=NV12_Q08C,width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! queue ! h264parse ! mp4mux ! queue ! filesink location="/opt/mux1.mp4" camsrc. ! video/x-raw,format=NV12_Q08C,width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! queue ! h264parse ! mp4mux ! queue ! filesink location="/opt/mux2.mp4" camsrc. ! video/x-raw,format=NV12_Q08C,width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! queue ! h264parse ! mp4mux ! queue ! filesink location="/opt/mux3.mp4"Copy to clipboard

To
            stop the use case, use CTRL + C. Pull the
            recorded content out from the target device and then play the content on the host
            computer.

You can play the MP4 files on a media player.

In the terminal of the host computer, run one of the following
            commands:

    scp -r root@[DEVICE IP-ADDR]:/opt/mux1.mp4 user1@[HOST IP-ADDR]:/workspaceCopy to clipboard

    scp -r root@[DEVICE IP-ADDR]:/opt/mux2.mp4 user1@[HOST IP-ADDR]:/workspaceCopy to clipboard

    scp -r root@[DEVICE IP-ADDR]:/opt/mux3.mp4 user1@[HOST IP-ADDR]:/workspaceCopy to clipboard

The following figure shows the flow of the pipeline execution:

Figure : Pipeline for encoding three 1080p camera streams
            
            <?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="951" height="272.541172027587891" viewbox="0 0 951 272.541172027587891">
  <g id="Layer_1" data-name="Layer 1">
    <g>
      <rect x=".5" y=".499897003173828" width="950" height="271.54150390625" rx="7.5" ry="7.5" style="fill: #fafafa;"></rect>
      <path d="M943,1c3.8597412109375,0,7,3.140235900878906,7,7v256.541172027587891c0,3.859771728515625-3.1402587890625,7-7,7H8c-3.859771728515625,0-7-3.140228271484375-7-7V8c0-3.859764099121094,3.140228271484375-7,7-7h935M943,0H8C3.581771850585938,0,0,3.581645965576172,0,8v256.541172027587891c0,4.418350219726562,3.581771850585938,8,8,8h935c4.4183349609375,0,8-3.581649780273438,8-8V8c0-4.418354034423828-3.5816650390625-8-8-8h0Z" style="fill: #d2d7e1;"></path>
    </g>
    <g>
      <text transform="translate(852.510009765625 256.091480255126953)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Open source</tspan></text>
      <rect x="832.258985207527076" y="243.999973297119141" width="16" height="16" rx="2" ry="2" style="fill: #007884;"></rect>
    </g>
  </g>
  <g id="Layer_2" data-name="Layer 2">
    <g>
      <g>
        <rect x="20" y="100.000003814697266" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
        <text transform="translate(73.429718017578125 128.5067138671875)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">camsrc</tspan></text>
      </g>
      <g>
        <line x1="180" y1="125.000003814697266" x2="210.976654052734375" y2="125.000003814697266" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="209.955352783203125 128.490436553955078 216 125.000003814697266 209.955352783203125 121.509571075439453 209.955352783203125 128.490436553955078"></polygon>
      </g>
      <g>
        <g>
          <g>
            <rect x="216" y="100.000003814697266" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(250.476600646972656 128.5067138671875)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2h264enc</tspan></text>
          </g>
          <g>
            <line x1="376" y1="125.000003814697266" x2="395.97662353515625" y2="125.000003814697266" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="394.955322265625 128.490436553955078 401 125.000003814697266 394.955322265625 121.509571075439453 394.955322265625 128.490436553955078"></polygon>
          </g>
          <g>
            <rect x="401" y="100.000003814697266" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(443.207061767578125 128.5067138671875)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
          </g>
          <g>
            <line x1="561" y1="125.000003814697266" x2="580.97662353515625" y2="125.000003814697266" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="579.955322265625 128.490436553955078 586 125.000003814697266 579.955322265625 121.509571075439453 579.955322265625 128.490436553955078"></polygon>
          </g>
          <g>
            <rect x="586" y="100.000003814697266" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(623.648468017578125 128.5067138671875)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">mpegtsmux</tspan></text>
          </g>
          <g>
            <line x1="746" y1="125.000003814697266" x2="765.97662353515625" y2="125.000003814697266" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="764.955322265625 128.490436553955078 771 125.000003814697266 764.955322265625 121.509571075439453 764.955322265625 128.490436553955078"></polygon>
          </g>
          <g>
            <rect x="771" y="100.000003814697266" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(825.56646728515625 128.5067138671875)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesink</tspan></text>
          </g>
        </g>
        <g>
          <g>
            <rect x="216" y="20.000003814697266" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(250.476600646972656 48.5067138671875)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2h264enc</tspan></text>
          </g>
          <g>
            <line x1="376" y1="45.000003814697266" x2="395.97662353515625" y2="45.000003814697266" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="394.955322265625 48.490434646606445 401 45.000003814697266 394.955322265625 41.509572982788086 394.955322265625 48.490434646606445"></polygon>
          </g>
          <g>
            <rect x="401" y="20.000003814697266" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(443.207061767578125 48.5067138671875)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
          </g>
          <g>
            <line x1="561" y1="45.000003814697266" x2="580.97662353515625" y2="45.000003814697266" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="579.955322265625 48.490434646606445 586 45.000003814697266 579.955322265625 41.509572982788086 579.955322265625 48.490434646606445"></polygon>
          </g>
          <g>
            <rect x="586" y="20.000003814697266" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(634.621124267578125 48.5067138671875)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">mp4mux</tspan></text>
          </g>
          <g>
            <line x1="746" y1="45.000003814697266" x2="765.97662353515625" y2="45.000003814697266" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="764.955322265625 48.490434646606445 771 45.000003814697266 764.955322265625 41.509572982788086 764.955322265625 48.490434646606445"></polygon>
          </g>
          <g>
            <rect x="771" y="20.000003814697266" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(825.56646728515625 48.5067138671875)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesink</tspan></text>
          </g>
        </g>
        <g>
          <g>
            <rect x="216" y="180.000003814697266" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(250.476600646972656 208.506717681884766)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2h264enc</tspan></text>
          </g>
          <g>
            <line x1="376" y1="205.000003814697266" x2="395.97662353515625" y2="205.000003814697266" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="394.955322265625 208.490436553955078 401 205.000003814697266 394.955322265625 201.509571075439453 394.955322265625 208.490436553955078"></polygon>
          </g>
          <g>
            <rect x="401" y="180.000003814697266" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(443.207061767578125 208.506717681884766)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
          </g>
          <g>
            <line x1="561" y1="205.000003814697266" x2="580.97662353515625" y2="205.000003814697266" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="579.955322265625 208.490436553955078 586 205.000003814697266 579.955322265625 201.509571075439453 579.955322265625 208.490436553955078"></polygon>
          </g>
          <g>
            <rect x="586" y="180.000003814697266" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(634.621124267578125 208.506717681884766)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">mp4mux</tspan></text>
          </g>
          <g>
            <line x1="746" y1="205.000003814697266" x2="765.97662353515625" y2="205.000003814697266" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="764.955322265625 208.490436553955078 771 205.000003814697266 764.955322265625 201.509571075439453 764.955322265625 208.490436553955078"></polygon>
          </g>
          <g>
            <rect x="771" y="180.000003814697266" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(825.56646728515625 208.506717681884766)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesink</tspan></text>
          </g>
        </g>
      </g>
      <g>
        <polyline points="210.259002685546875 45.000003814697266 198 45.000003814697266 198 208.666873931884766 210.259002685546875 208.666873931884766" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
        <polygon points="209.091827392578125 41.010939598083496 216 45.000003814697266 209.091827392578125 48.989068031311035 209.091827392578125 41.010939598083496"></polygon>
        <polygon points="209.091827392578125 212.655933380126953 216 208.666873931884766 209.091827392578125 204.677814483642578 209.091827392578125 212.655933380126953"></polygon>
      </g>
    </g>
  </g>
</svg>

## Three streams–720p AVC, 720p HEVC, and 720p YUV from live source

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

The use case uses three 720p streams from the camera. Two of these streams are
        encoded—one stream encoded as H.264 and the other as HEVC. These streams are multiplexed
        into different files. The third stream is displayed.

Note: This use case isn't applicable to Dragonwing IQ-8275 and
            Dragonwing IQ-9075.

Run the use case on the target
            device:

    gst-launch-1.0 -e qtiqmmfsrc name=camsrc video_0::type=preview video_1::type=video ! video/x-raw,format=NV12_Q08C,width=1280,height=720,framerate=30/1 ! queue ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! queue ! h264parse ! mp4mux ! queue ! filesink location="/opt/mux1.mp4" camsrc. ! video/x-raw,format=NV12_Q08C,width=1280,height=720,framerate=30/1 ! queue ! v4l2h265enc capture-io-mode=4 output-io-mode=5 ! queue ! h265parse ! mp4mux ! queue ! filesink location="/opt/mux_hevc.mp4" camsrc. ! video/x-raw,format=NV12_Q08C,width=1280,height=720,framerate=30/1 ! waylandsink fullscreen=trueCopy to clipboard

To stop the use case, use CTRL + C. Pull the
            recorded content from the target device and then play the content on the host
            computer.

The camera stream is displayed. You can play the MP4 file on a media player.

In the terminal of the host computer, run the following commands:

    scp -r root@[DEVICE IP-ADDR]:/opt/mux1.mp4 user1@[HOST IP-ADDR]:/workspace/Copy to clipboard

    scp -r root@[DEVICE IP-ADDR]:/opt/mux_hevc.mp4 user1@[HOST IP-ADDR]:/workspace/Copy to clipboard

The following figure shows the flow of the pipeline execution:

Figure : Pipeline for encoding 720p AVC, 720p HEVC, and 720p YUV camera streams
            
            <?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="951" height="272.541172027587891" viewbox="0 0 951 272.541172027587891">
  <g id="Layer_1" data-name="Layer 1">
    <g>
      <rect x=".5" y=".499866485595703" width="950" height="271.54150390625" rx="7.5" ry="7.5" style="fill: #fafafa;"></rect>
      <path d="M943,1c3.8597412109375,0,7,3.140235900878906,7,7v256.541172027587891c0,3.859771728515625-3.1402587890625,7-7,7H8c-3.859771728515625,0-7-3.140228271484375-7-7V8c0-3.859764099121094,3.140228271484375-7,7-7h935M943,0H8C3.581771850585938,0,0,3.581645965576172,0,8v256.541172027587891c0,4.418350219726562,3.581771850585938,8,8,8h935c4.4183349609375,0,8-3.581649780273438,8-8V8c0-4.418354034423828-3.5816650390625-8-8-8h0Z" style="fill: #d2d7e1;"></path>
    </g>
  </g>
  <g id="Layer_2" data-name="Layer 2">
    <g>
      <g>
        <rect x="20" y="99.999973297119141" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
        <text transform="translate(73.429718017578125 128.506683349609375)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">camsrc</tspan></text>
      </g>
      <g>
        <line x1="180" y1="124.999973297119141" x2="210.976654052734375" y2="124.999973297119141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="209.955352783203125 128.490406036376953 216 124.999973297119141 209.955352783203125 121.509540557861328 209.955352783203125 128.490406036376953"></polygon>
      </g>
      <g>
        <g>
          <g>
            <rect x="216" y="99.999973297119141" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(250.476600646972656 128.506683349609375)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2h265enc</tspan></text>
          </g>
          <g>
            <line x1="376" y1="124.999973297119141" x2="395.97662353515625" y2="124.999973297119141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="394.955322265625 128.490406036376953 401 124.999973297119141 394.955322265625 121.509540557861328 394.955322265625 128.490406036376953"></polygon>
          </g>
          <g>
            <rect x="401" y="99.999973297119141" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(443.207061767578125 128.506683349609375)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h265parse</tspan></text>
          </g>
          <g>
            <line x1="561" y1="124.999973297119141" x2="580.97662353515625" y2="124.999973297119141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="579.955322265625 128.490406036376953 586 124.999973297119141 579.955322265625 121.509540557861328 579.955322265625 128.490406036376953"></polygon>
          </g>
          <g>
            <rect x="586" y="99.999973297119141" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(634.621124267578125 128.506683349609375)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">mp4mux</tspan></text>
          </g>
          <g>
            <line x1="746" y1="124.999973297119141" x2="765.97662353515625" y2="124.999973297119141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="764.955322265625 128.490406036376953 771 124.999973297119141 764.955322265625 121.509540557861328 764.955322265625 128.490406036376953"></polygon>
          </g>
          <g>
            <rect x="771" y="99.999973297119141" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(825.56646728515625 128.506683349609375)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesink</tspan></text>
          </g>
        </g>
        <g>
          <g>
            <rect x="216" y="19.999973297119141" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(250.476600646972656 48.506683349609375)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2h264enc</tspan></text>
          </g>
          <g>
            <line x1="376" y1="44.999973297119141" x2="395.97662353515625" y2="44.999973297119141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="394.955322265625 48.49040412902832 401 44.999973297119141 394.955322265625 41.509542465209961 394.955322265625 48.49040412902832"></polygon>
          </g>
          <g>
            <rect x="401" y="19.999973297119141" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(443.207061767578125 48.506683349609375)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
          </g>
          <g>
            <line x1="561" y1="44.999973297119141" x2="580.97662353515625" y2="44.999973297119141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="579.955322265625 48.49040412902832 586 44.999973297119141 579.955322265625 41.509542465209961 579.955322265625 48.49040412902832"></polygon>
          </g>
          <g>
            <rect x="586" y="19.999973297119141" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(634.621124267578125 48.506683349609375)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">mp4mux</tspan></text>
          </g>
          <g>
            <line x1="746" y1="44.999973297119141" x2="765.97662353515625" y2="44.999973297119141" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="764.955322265625 48.49040412902832 771 44.999973297119141 764.955322265625 41.509542465209961 764.955322265625 48.49040412902832"></polygon>
          </g>
          <g>
            <rect x="771" y="19.999973297119141" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(825.56646728515625 48.506683349609375)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesink</tspan></text>
          </g>
        </g>
        <g>
          <rect x="216" y="179.999973297119141" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
          <text transform="translate(252.097694396972656 208.506687164306641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">waylandsink</tspan></text>
        </g>
      </g>
      <g>
        <polyline points="210.259002685546875 44.999973297119141 198 44.999973297119141 198 208.666843414306641 210.259002685546875 208.666843414306641" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
        <polygon points="209.091827392578125 41.010909080505371 216 44.999973297119141 209.091827392578125 48.98903751373291 209.091827392578125 41.010909080505371"></polygon>
        <polygon points="209.091827392578125 212.655902862548828 216 208.666843414306641 209.091827392578125 204.677783966064453 209.091827392578125 212.655902862548828"></polygon>
      </g>
    </g>
    <g>
      <text transform="translate(852.510009765625 253.091480255126953)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Open source</tspan></text>
      <rect x="832.258985207527076" y="240.999973297119141" width="16" height="16" rx="2" ry="2" style="fill: #007884;"></rect>
    </g>
  </g>
</svg>

## Three streams–720p AVC MP4, 720p AVC MPEGTS, and 720p AVC MP4 from live source

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

The use case uses three 720p streams from the camera for encoding. Each stream is
        encoded as H.264 and multiplexed into different files–two as MP4 and one as
        MPEGTS.

Run the use case on the target
            device:

    gst-launch-1.0 -e qtiqmmfsrc name=camsrc video_0::type=preview video_1::type=video ! video/x-raw,format=NV12_Q08C,width=1280,height=720,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! queue ! h264parse ! mp4mux ! queue ! filesink location="/opt/mux1.mp4" camsrc. ! video/x-raw,format=NV12_Q08C,width=1280,height=720,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! queue ! h264parse ! mpegtsmux name=muxer ! queue ! filesink location="/opt/mux_mpegts.mp4" camsrc. ! video/x-raw,format=NV12_Q08C,width=1280,height=720,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h265enc capture-io-mode=4 output-io-mode=5 ! queue ! h265parse ! mp4mux ! queue ! filesink location="/opt/mux3.mp4"Copy to clipboard

To stop the use case,  use CTRL + C.

Pull recorded content from the target device and play content on the host computer using
            a media player.

In the terminal of the host computer, run the following commands:

    scp -r root@[DEVICE IP-ADDR]:/opt/mux1.mp4 user1@[HOST IP-ADDR]:/workspaceCopy to clipboard

    scp -r root@[DEVICE IP-ADDR]:/opt/mux_mpegts.mp4 user1@[HOST IP-ADDR]:/workspaceCopy to clipboard

    scp -r root@[DEVICE IP-ADDR]:/opt/mux3.mp4 user1@[HOST IP-ADDR]:/workspaceCopy to clipboard

The following figure shows the flow of the pipeline execution:

Figure : Pipeline for encoding 720p AVC MP4, 720p AVC MPEGTS, and 720p AVC MP4 camera
                streams
            
            <?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="951" height="272.541179656982422" viewbox="0 0 951 272.541179656982422">
  <g id="Layer_1" data-name="Layer 1">
    <g>
      <rect x=".5" y=".499889373779297" width="950" height="271.54150390625" rx="7.5" ry="7.5" style="fill: #fafafa;"></rect>
      <path d="M943,1c3.8597412109375,0,7,3.140235900878906,7,7v256.541179656982422c0,3.859756469726562-3.1402587890625,7-7,7H8c-3.859771728515625,0-7-3.140243530273438-7-7V8c0-3.859764099121094,3.140228271484375-7,7-7h935M943,0H8C3.581771850585938,0,0,3.581645965576172,0,8v256.541179656982422c0,4.418350219726562,3.581771850585938,8,8,8h935c4.4183349609375,0,8-3.581649780273438,8-8V8c0-4.418354034423828-3.5816650390625-8-8-8h0Z" style="fill: #d2d7e1;"></path>
    </g>
    <g>
      <text transform="translate(852.510009765625 256.091472625732422)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Open source</tspan></text>
      <rect x="832.258985207527076" y="243.999969482421875" width="16" height="16" rx="2" ry="2" style="fill: #007884;"></rect>
    </g>
  </g>
  <g id="Layer_2" data-name="Layer 2">
    <g>
      <g>
        <rect x="20" y="99.999996185302734" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
        <text transform="translate(73.429718017578125 128.506706237792969)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">camsrc</tspan></text>
      </g>
      <g>
        <line x1="180" y1="124.999996185302734" x2="210.976654052734375" y2="124.999996185302734" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="209.955352783203125 128.490428924560547 216 124.999996185302734 209.955352783203125 121.509563446044922 209.955352783203125 128.490428924560547"></polygon>
      </g>
      <g>
        <g>
          <g>
            <rect x="216" y="99.999996185302734" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(250.476600646972656 128.506706237792969)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2h264enc</tspan></text>
          </g>
          <g>
            <line x1="376" y1="124.999996185302734" x2="395.97662353515625" y2="124.999996185302734" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="394.955322265625 128.490428924560547 401 124.999996185302734 394.955322265625 121.509563446044922 394.955322265625 128.490428924560547"></polygon>
          </g>
          <g>
            <rect x="401" y="99.999996185302734" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(443.207061767578125 128.506706237792969)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
          </g>
          <g>
            <line x1="561" y1="124.999996185302734" x2="580.97662353515625" y2="124.999996185302734" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="579.955322265625 128.490428924560547 586 124.999996185302734 579.955322265625 121.509563446044922 579.955322265625 128.490428924560547"></polygon>
          </g>
          <g>
            <rect x="586" y="99.999996185302734" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(623.648468017578125 128.506706237792969)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">mpegtsmux</tspan></text>
          </g>
          <g>
            <line x1="746" y1="124.999996185302734" x2="765.97662353515625" y2="124.999996185302734" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="764.955322265625 128.490428924560547 771 124.999996185302734 764.955322265625 121.509563446044922 764.955322265625 128.490428924560547"></polygon>
          </g>
          <g>
            <rect x="771" y="99.999996185302734" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(825.56646728515625 128.506706237792969)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesink</tspan></text>
          </g>
        </g>
        <g>
          <g>
            <rect x="216" y="19.999996185302734" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(250.476600646972656 48.506706237792969)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2h264enc</tspan></text>
          </g>
          <g>
            <line x1="376" y1="44.999996185302734" x2="395.97662353515625" y2="44.999996185302734" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="394.955322265625 48.490427017211914 401 44.999996185302734 394.955322265625 41.509565353393555 394.955322265625 48.490427017211914"></polygon>
          </g>
          <g>
            <rect x="401" y="19.999996185302734" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(443.207061767578125 48.506706237792969)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
          </g>
          <g>
            <line x1="561" y1="44.999996185302734" x2="580.97662353515625" y2="44.999996185302734" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="579.955322265625 48.490427017211914 586 44.999996185302734 579.955322265625 41.509565353393555 579.955322265625 48.490427017211914"></polygon>
          </g>
          <g>
            <rect x="586" y="19.999996185302734" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(634.621124267578125 48.506706237792969)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">mp4mux</tspan></text>
          </g>
          <g>
            <line x1="746" y1="44.999996185302734" x2="765.97662353515625" y2="44.999996185302734" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="764.955322265625 48.490427017211914 771 44.999996185302734 764.955322265625 41.509565353393555 764.955322265625 48.490427017211914"></polygon>
          </g>
          <g>
            <rect x="771" y="19.999996185302734" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(825.56646728515625 48.506706237792969)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesink</tspan></text>
          </g>
        </g>
        <g>
          <g>
            <rect x="216" y="179.999996185302734" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(250.476600646972656 208.506710052490234)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2h264enc</tspan></text>
          </g>
          <g>
            <line x1="376" y1="204.999996185302734" x2="395.97662353515625" y2="204.999996185302734" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="394.955322265625 208.490428924560547 401 204.999996185302734 394.955322265625 201.509563446044922 394.955322265625 208.490428924560547"></polygon>
          </g>
          <g>
            <rect x="401" y="179.999996185302734" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(443.207061767578125 208.506710052490234)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
          </g>
          <g>
            <line x1="561" y1="204.999996185302734" x2="580.97662353515625" y2="204.999996185302734" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="579.955322265625 208.490428924560547 586 204.999996185302734 579.955322265625 201.509563446044922 579.955322265625 208.490428924560547"></polygon>
          </g>
          <g>
            <rect x="586" y="179.999996185302734" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(634.621124267578125 208.506710052490234)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">mp4mux</tspan></text>
          </g>
          <g>
            <line x1="746" y1="204.999996185302734" x2="765.97662353515625" y2="204.999996185302734" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="764.955322265625 208.490428924560547 771 204.999996185302734 764.955322265625 201.509563446044922 764.955322265625 208.490428924560547"></polygon>
          </g>
          <g>
            <rect x="771" y="179.999996185302734" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(825.56646728515625 208.506710052490234)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesink</tspan></text>
          </g>
        </g>
      </g>
      <g>
        <polyline points="210.259002685546875 44.999996185302734 198 44.999996185302734 198 208.666866302490234 210.259002685546875 208.666866302490234" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
        <polygon points="209.091827392578125 41.010931968688965 216 44.999996185302734 209.091827392578125 48.989060401916504 209.091827392578125 41.010931968688965"></polygon>
        <polygon points="209.091827392578125 212.655925750732422 216 208.666866302490234 209.091827392578125 204.677806854248047 209.091827392578125 212.655925750732422"></polygon>
      </g>
    </g>
  </g>
</svg>

## Three streams–1080p AVC file save, 1080p AVC RTSP, and 1080p YUV from live source

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

The use case uses three 1080p streams from the camera. Two are encoded as H.264. The
        first stream is multiplexed and saved to a file. The second stream is sent over the network
        through RTSP streaming. The third stream is sent to the display.

Run the use case on the target device as follows:

Run RTSP server in a separate console on the target device with `udpsrc`
            (can be run in background as service):

    gst-rtsp-server -p 8900 -a <IP address of device>  -m /live "( udpsrc name=pay0 port=8554 caps=\"application/x-rtp,media=video,clock-rate=90000,encoding-name=H264,payload=96\" )"Copy to clipboard

Run the pipeline in the same console or another console on the target device:

**1080P use case:**

    gst-launch-1.0 -e qtiqmmfsrc name=camsrc video_0::type=preview ! video/x-raw,format=NV12_Q08C,width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! queue ! h264parse ! mp4mux ! queue ! filesink location="/opt/mux.mp4" camsrc. ! video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! queue ! h264parse config-interval=-1 ! rtph264pay pt=96 ! udpsink host=<IP address of device> port=8554 camsrc. ! video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1 ! waylandsink fullscreen=trueCopy to clipboard

**720P use            case:**

    gst-launch-1.0 -e qtiqmmfsrc name=camsrc video_0::type=preview ! video/x-raw,format=NV12_Q08C,width=1280,height=720,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! queue ! h264parse ! mp4mux ! queue ! filesink location="/opt/mux.mp4" camsrc. ! video/x-raw,format=NV12,width=1280,height=720,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! queue ! h264parse config-interval=-1 ! rtph264pay pt=96 ! udpsink host=<IP address of device> port=8554 camsrc. ! video/x-raw,format=NV12,width=1280,height=720,framerate=30/1 ! waylandsink fullscreen=trueCopy to clipboard

To stop the use case,  use CTRL + C.

Pull recorded content from the target device and play content on host computer.

In the terminal of the host computer, run the following command:

    scp -r root@[DEVICE IP-ADDR]:/opt/mux.mp4 user1@[HOST IP-ADDR]:/workspace/Copy to clipboard

You can play the MP4 file on any media player. The streamed video is played as an RTSP
            stream on a host. The third stream from the camera is displayed.

The following figure shows the flow of the pipeline execution:

Figure : Pipeline for encoding three 1080p camera streams
            
            <?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" width="951" height="272.541179656982422" viewbox="0 0 951 272.541179656982422">
  <g>
    <rect x=".5" y=".499889373779297" width="950" height="271.54150390625" rx="7.5" ry="7.5" style="fill: #fafafa;"></rect>
    <path d="M943,1c3.8597412109375,0,7,3.140235900878906,7,7v256.541179656982422c0,3.859756469726562-3.1402587890625,7-7,7H8c-3.859771728515625,0-7-3.140243530273438-7-7V8c0-3.859764099121094,3.140228271484375-7,7-7h935M943,0H8C3.581771850585938,0,0,3.581645965576172,0,8v256.541179656982422c0,4.418350219726562,3.581771850585938,8,8,8h935c4.4183349609375,0,8-3.581649780273438,8-8V8c0-4.418354034423828-3.5816650390625-8-8-8h0Z" style="fill: #d2d7e1;"></path>
  </g>
  <g>
    <text transform="translate(852.510009765625 256.091472625732422)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Open source</tspan></text>
    <rect x="832.258985207527076" y="243.999969482421875" width="16" height="16" rx="2" ry="2" style="fill: #007884;"></rect>
  </g>
  <g>
    <g>
      <rect x="20" y="99.999996185302734" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
      <text transform="translate(73.429718017578125 128.506706237792969)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">camsrc</tspan></text>
    </g>
    <g>
      <line x1="180" y1="124.999996185302734" x2="210.976654052734375" y2="124.999996185302734" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="209.955352783203125 128.490428924560547 216 124.999996185302734 209.955352783203125 121.509563446044922 209.955352783203125 128.490428924560547"></polygon>
    </g>
    <g>
      <g>
        <g>
          <rect x="216" y="99.999996185302734" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
          <text transform="translate(250.476600646972656 128.506706237792969)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2h264enc</tspan></text>
        </g>
        <g>
          <line x1="376" y1="124.999996185302734" x2="395.97662353515625" y2="124.999996185302734" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
          <polygon points="394.955322265625 128.490428924560547 401 124.999996185302734 394.955322265625 121.509563446044922 394.955322265625 128.490428924560547"></polygon>
        </g>
        <g>
          <rect x="401" y="99.999996185302734" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
          <text transform="translate(443.207061767578125 128.506706237792969)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
        </g>
        <g>
          <line x1="561" y1="124.999996185302734" x2="580.97662353515625" y2="124.999996185302734" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
          <polygon points="579.955322265625 128.490428924560547 586 124.999996185302734 579.955322265625 121.509563446044922 579.955322265625 128.490428924560547"></polygon>
        </g>
        <g>
          <rect x="586" y="99.999996185302734" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
          <text transform="translate(625.683624267578125 128.506706237792969)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">rtph264pay</tspan></text>
        </g>
        <g>
          <line x1="746" y1="124.999996185302734" x2="765.97662353515625" y2="124.999996185302734" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
          <polygon points="764.955322265625 128.490428924560547 771 124.999996185302734 764.955322265625 121.509563446044922 764.955322265625 128.490428924560547"></polygon>
        </g>
        <g>
          <rect x="771" y="99.999996185302734" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
          <text transform="translate(823.05474853515625 128.506706237792969)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">udpsink</tspan></text>
        </g>
      </g>
      <g>
        <g>
          <rect x="216" y="19.999996185302734" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
          <text transform="translate(250.476600646972656 48.506706237792969)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2h264enc</tspan></text>
        </g>
        <g>
          <line x1="376" y1="44.999996185302734" x2="395.97662353515625" y2="44.999996185302734" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
          <polygon points="394.955322265625 48.490427017211914 401 44.999996185302734 394.955322265625 41.509565353393555 394.955322265625 48.490427017211914"></polygon>
        </g>
        <g>
          <rect x="401" y="19.999996185302734" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
          <text transform="translate(443.207061767578125 48.506706237792969)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
        </g>
        <g>
          <line x1="561" y1="44.999996185302734" x2="580.97662353515625" y2="44.999996185302734" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
          <polygon points="579.955322265625 48.490427017211914 586 44.999996185302734 579.955322265625 41.509565353393555 579.955322265625 48.490427017211914"></polygon>
        </g>
        <g>
          <rect x="586" y="19.999996185302734" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
          <text transform="translate(634.621124267578125 48.506706237792969)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">mp4mux</tspan></text>
        </g>
        <g>
          <line x1="746" y1="44.999996185302734" x2="765.97662353515625" y2="44.999996185302734" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
          <polygon points="764.955322265625 48.490427017211914 771 44.999996185302734 764.955322265625 41.509565353393555 764.955322265625 48.490427017211914"></polygon>
        </g>
        <g>
          <rect x="771" y="19.999996185302734" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
          <text transform="translate(825.56646728515625 48.506706237792969)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesink</tspan></text>
        </g>
      </g>
      <g>
        <rect x="216" y="179.999996185302734" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
        <text transform="translate(252.097694396972656 208.506710052490234)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">waylandsink</tspan></text>
      </g>
    </g>
    <g>
      <polyline points="210.259002685546875 44.999996185302734 198 44.999996185302734 198 208.666866302490234 210.259002685546875 208.666866302490234" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
      <polygon points="209.091827392578125 41.010931968688965 216 44.999996185302734 209.091827392578125 48.989060401916504 209.091827392578125 41.010931968688965"></polygon>
      <polygon points="209.091827392578125 212.655925750732422 216 208.666866302490234 209.091827392578125 204.677806854248047 209.091827392578125 212.655925750732422"></polygon>
    </g>
  </g>
</svg>

### Related information

[RTSP stream on host computer](https://docs.qualcomm.com/doc/80-70022-50/topic/camera-and-video-encode.html#one_stream_1080p_avc_rtsp_from_live_source__section_ayq_2nh_pyb)

## Three stream–4K JPEG snapshot, 1080p AVC MP4, 1080p YUV from live source

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

The use case uses three streams from the camera. The first stream is a 4k stream for
        JPEG snapshot. The second stream, a 1080p stream, is encoded as H.264 and then multiplexed.
        The third 1080p stream is displayed.

Note: For Dragonwing IQ-9075 and Dragonwing IQ-8275, JPEG video
            encoding is currently not supported.

Run the use case on the target
            device:

    gst-pipeline-app -e qtiqmmfsrc name=camsrc video_0::type=preview ! video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! queue ! h264parse ! mp4mux ! queue ! filesink location="/opt/mux.mp4" camsrc.image_1 ! "image/jpeg,width=3840,height=2160,framerate=30/1" ! multifilesink location=/opt/frame%d.jpg sync=true async=false camsrc. ! video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1 ! waylandsink fullscreen=trueCopy to clipboard

A menu is displayed on the `cmd`line terminal.
1. Select Playing mode. The pipeline starts the
                    streaming.
2. Select Enter.
3. Select the Plugin mode and select
                    `camsrc`.
4. Select the Capture image option.
5. Select either video or still
                        capture.
6. Enter the number of snapshots that you want to capture.

To stop the use case, select Back and then
                Quit the options from the menu.

You can play the MP4 file and snapshots on a media player. The stream from camera is
            displayed.

Pull recorded content out from the target device and play content on the host
            computer.

    scp -r root@[DEVICE IP-ADDR]:/opt/mux.mp4 user1@[HOST IP-ADDR]:/workspaceCopy to clipboard

    scp -r root@[DEVICE IP-ADDR]:/opt/frame*.jpg user1@[HOST IP-ADDR]:/workspaceCopy to clipboard

The following figure shows the flow of the pipeline execution:

Figure : Pipeline for three camera streams–4k to JPEG snapshot, 1080p to encoding, 1080 to
                display
            
            <?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="951" height="305.541172027587891" viewbox="0 0 951 305.541172027587891">
  <g id="Layer_1" data-name="Layer 1">
    <g>
      <rect x=".5" y=".500080108642578" width="950" height="304.541015625" rx="7.5" ry="7.5" style="fill: #fafafa;"></rect>
      <path d="M943,1c3.8597412109375,0,7,3.140235900878906,7,7v289.541172027587891c0,3.859771728515625-3.1402587890625,7-7,7H8c-3.859771728515625,0-7-3.140228271484375-7-7V8c0-3.859764099121094,3.140228271484375-7,7-7h935M943,0H8C3.581771850585938,0,0,3.581645965576172,0,8v289.541172027587891c0,4.418350219726562,3.581771850585938,8,8,8h935c4.4183349609375,0,8-3.581649780273438,8-8V8c0-4.418354034423828-3.5816650390625-8-8-8h0Z" style="fill: #d2d7e1;"></path>
    </g>
    <g>
      <text transform="translate(852.510009765625 289.091480255126953)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Open source</tspan></text>
      <rect x="832.258985207527076" y="276.999973297119141" width="16" height="16" rx="2" ry="2" style="fill: #007884;"></rect>
    </g>
  </g>
  <g id="Layer_2" data-name="Layer 2">
    <g>
      <g>
        <rect x="20" y="128.028018951416016" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
        <text transform="translate(73.429718017578125 156.53472900390625)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">camsrc</tspan></text>
      </g>
      <g>
        <line x1="180" y1="153.028018951416016" x2="210.976654052734375" y2="153.028018951416016" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="209.955352783203125 156.518451690673828 216 153.028018951416016 209.955352783203125 149.537586212158203 209.955352783203125 156.518451690673828"></polygon>
      </g>
      <g>
        <g>
          <rect x="216" y="128.028018951416016" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
          <text transform="translate(252.648475646972656 156.53472900390625)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">multifilesink</tspan></text>
        </g>
        <g>
          <g>
            <rect x="216" y="48.028018951416016" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(250.476600646972656 76.53472900390625)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2h264enc</tspan></text>
          </g>
          <g>
            <line x1="376" y1="73.028018951416016" x2="395.97662353515625" y2="73.028018951416016" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="394.955322265625 76.518449783325195 401 73.028018951416016 394.955322265625 69.537588119506836 394.955322265625 76.518449783325195"></polygon>
          </g>
          <g>
            <rect x="401" y="48.028018951416016" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(443.207061767578125 76.53472900390625)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
            <text transform="translate(450.605499267578125 31.536121368408203)" style="font-family: Roboto-Bold, Roboto; font-size: 16px; font-weight: 700;"><tspan x="0" y="0">GST BIN</tspan></text>
          </g>
          <g>
            <line x1="561" y1="73.028018951416016" x2="580.97662353515625" y2="73.028018951416016" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="579.955322265625 76.518449783325195 586 73.028018951416016 579.955322265625 69.537588119506836 579.955322265625 76.518449783325195"></polygon>
          </g>
          <g>
            <rect x="586" y="48.028018951416016" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(634.621124267578125 76.53472900390625)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">mp4mux</tspan></text>
          </g>
          <g>
            <line x1="746" y1="73.028018951416016" x2="765.97662353515625" y2="73.028018951416016" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
            <polygon points="764.955322265625 76.518449783325195 771 73.028018951416016 764.955322265625 69.537588119506836 764.955322265625 76.518449783325195"></polygon>
          </g>
          <g>
            <rect x="771" y="48.028018951416016" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
            <text transform="translate(825.56646728515625 76.53472900390625)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesink</tspan></text>
          </g>
        </g>
        <g>
          <rect x="216" y="208.028018951416016" width="160" height="50" rx="4" ry="4" style="fill: #007884;"></rect>
          <text transform="translate(252.097694396972656 236.534732818603516)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">waylandsink</tspan></text>
        </g>
      </g>
      <g>
        <polyline points="210.259002685546875 73.028018951416016 198 73.028018951416016 198 236.694889068603516 210.259002685546875 236.694889068603516" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
        <polygon points="209.091827392578125 69.038954734802246 216 73.028018951416016 209.091827392578125 77.017083168029785 209.091827392578125 69.038954734802246"></polygon>
        <polygon points="209.091827392578125 240.683948516845703 216 236.694889068603516 209.091827392578125 232.705829620361328 209.091827392578125 240.683948516845703"></polygon>
      </g>
    </g>
  </g>
</svg>

## Two stream–1080p MJPEG encoder

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

The MJPEG encoder encodes and writes the captured video stream in an MJPEG format.
        Run the use cases for encoding, saving to file, and previewing on display.

Note: For Dragonwing IQ-9075 and Dragonwing IQ-8275, the MJPEG
                video encoding is currently not supported.

Run the following use cases for this encoder on the target device. Before running the use
            cases, type <var class="keyword varname">3</var> in the terminal to enter Playing state.

- H.264 encode and MJPEG dump to a
                    file:

        gst-pipeline-app -e qtiqmmfsrc name=camsrc video_0::type=preview ! video/x-raw,format=NV12_Q08C,width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! queue ! h264parse ! mp4mux ! queue ! filesink location="/opt/mux.mp4" camsrc. ! "image/jpeg,width=3840,height=2160,framerate=30/1" ! queue ! avimux ! filesink location=/opt/4k_mjpeg.avi sync=true async=falseCopy to clipboard

    The
                        mux.mp4 and 4k\_mjpeg.avi files are
                    stored at /opt/.
- H.265 encode and MJPEG dump to a
                    file:

        gst-pipeline-app -e qtiqmmfsrc name=camsrc video_0::type=preview ! video/x-raw,format=NV12_Q08C,width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h265enc capture-io-mode=4 output-io-mode=5 ! queue ! h265parse ! mp4mux ! queue ! filesink location="/opt/mux.mp4" camsrc. ! "image/jpeg,width=3840,height=2160,framerate=30/1" ! queue ! avimux ! filesink location=/opt/4k_mjpeg.avi sync=true async=falseCopy to clipboard

    The
                        mux.mp4 and 4k\_mjpeg.avi files are
                    stored at /opt/.
- Preview on display with MJPEG encoding in a file:

        gst-pipeline-app -e qtiqmmfsrc name=camsrc video_0::type=preview ! video/x-raw,format=NV12_Q08C,width=1280,height=720,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! waylandsink fullscreen=true camsrc.video_1 ! "image/jpeg,width=1280,height=720,framerate=30/1" ! queue ! avimux ! filesink location=/opt/mjpeg.avi sync=true async=falseCopy to clipboard

    The
                    video is previewed on a screen and the mjpeg.avi file is
                    stored at /opt/.
- Preview on display with MJPEG and H.264 encoding in a file:

        gst-pipeline-app -e qtiqmmfsrc name=camsrc video_0::type=preview ! video/x-raw,format=NV12_Q08C,width=1280,height=720,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! waylandsink fullscreen=true camsrc.video_1 ! "image/jpeg,width=1280,height=720,framerate=30/1" ! queue ! avimux ! filesink location=/opt/mjpeg_2.avi sync=true async=false camsrc.video_2 ! video/x-raw,format=NV12,width=1280,height=720,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! queue ! h264parse ! mp4mux ! queue ! filesink location="/opt/mux.mp4"Copy to clipboard

    The
                    video is previewed on a screen and the mux.mp4 and
                        mjpeg.avi files are stored at
                        /opt/.

## Slice-based encoding

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

With slice support for video encoding, the video stream is divided or sliced into
        several sections so that you can encode them in parallel.

You can use slice-based encoding for video playback, teleconferencing, and security
            camera use cases.

These use cases enable you to implement slice-based encoding on a camera stream. The
            output video file is stored at /opt/.

Run the following use cases on the target device:

### H.264

- 1280 × 720, maximum slices per frame =
                    10:

        gst-launch-1.0 -e qtiqmmfsrc ! video/x-raw,format=NV12,width=1280,height=720,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h264enc capture-io-mode=4 output-io-mode=4 extra-controls="controls,h264_profile=4,h264_level=14,video_bitrate=4800000,video_bitrate_mode=1,frame_level_rate_control_enable=1,video_gop_size=299,h264_entropy_mode=1,slice_partitioning_method=1,numbe_of_mbs_in_a_slice=1200,video_peak_bitrate=32000000;" ! filesink location="/opt/spincalender1280X760_1200_MB_720p_live1800.h264"Copy to clipboard
- 1280 × 720, slices per frame =
                    8:

        gst-launch-1.0 -ev videotestsrc is-live=true pattern=ball ! video/x-raw,format="NV12",width=1280,height=720,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h264enc capture-io-mode=4 output-io-mode=4 extra-controls="controls,h264_profile=4,h264_level=14,video_bitrate=4800000,video_bitrate_mode=1,frame_level_rate_control_enable=1,video_gop_size=299,h264_entropy_mode=1,slice_partitioning_method=1,number_of_mbs_in_a_slice=450,video_peak_bitrate=32000000;" ! filesink location="/opt/slice_8_MB_720p_live.h264"Copy to clipboard
- 1920 × 1080, slices per frame
                    =3:

        gst-launch-1.0 -ev videotestsrc is-live=true pattern=ball ! video/x-raw,format="NV12",width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h264enc capture-io-mode=4 output-io-mode=4 extra-controls="controls,h264_profile=4,h264_level=14,video_bitrate=4800000,video_bitrate_mode=1,frame_level_rate_control_enable=1,video_gop_size=299,h264_entropy_mode=1,slice_partitioning_method=1,number_of_mbs_in_a_slice=2700,video_peak_bitrate=32000000;" ! filesink location="/opt/slice_3_MB_1080p.h264"Copy to clipboard
- 1280 × 720, Max Bytes
                    mode:

        gst-launch-1.0 -e qtiqmmfsrc ! video/x-raw,format=NV12,width=1280,height=720,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h264enc capture-io-mode=4 output-io-mode=5 extra-controls="controls,slice_partitioning_method=2;" ! filesink location="/opt/encoded.h264"Copy to clipboard

### H.265

- 1280 × 720, maximum slices per frame =
                    10:

        gst-launch-1.0 -e qtiqmmfsrc ! video/x-raw,format=NV12,width=1280,height=720,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h265enc capture-io-mode=4 output-io-mode=5 extra-controls="controls,slice_partitioning_method=1;" ! filesink location="/opt/encoded.h265"Copy to clipboard
- 1280 × 720, slices per frame =
                    8:

        gst-launch-1.0 -ev videotestsrc is-live=true pattern=ball ! video/x-raw,format="NV12",width=1280,height=720,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h265enc capture-io-mode=4 output-io-mode=4 extra-controls="controls,h265_profile=4,h265_level=14,video_bitrate=4800000,video_bitrate_mode=1,frame_level_rate_control_enable=1,video_gop_size=299,h265_entropy_mode=1,slice_partitioning_method=1,number_of_mbs_in_a_slice=450,video_peak_bitrate=32000000;" ! filesink location="/opt/slice_8_MB_720p_live.h265"Copy to clipboard
- 1920 × 1080, slices per frame =
                    3:

        gst-launch-1.0 -ev videotestsrc is-live=true pattern=ball ! video/x-raw,format="NV12",width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h265enc capture-io-mode=4 output-io-mode=4 extra-controls="controls,h265_profile=4,h265_level=14,video_bitrate=4800000,video_bitrate_mode=1,frame_level_rate_control_enable=1,video_gop_size=299,h265_entropy_mode=1,slice_partitioning_method=1,number_of_mbs_in_a_slice=2700,video_peak_bitrate=32000000;" ! filesink location="/opt/slice_3_MB_1080p.h265"Copy to clipboard
- 1280 × 720, Max Bytes
                    mode:

        gst-launch-1.0 -ev videotestsrc is-live=true pattern=ball ! video/x-raw,format="NV12",width=1280,height=720,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h264enc capture-io-mode=4 output-io-mode=4 extra-controls="controls,h264_profile=4,h265_level=14,video_bitrate=4800000,video_bitrate_mode=1,frame_level_rate_control_enable=1,video_gop_size=299,h264_entropy_mode=1,slice_partitioning_method=1,numbe_of_mbs_in_a_slice=360,video_peak_bitrate=32000000;" ! filesink location="/opt/spincalender1280X760_1200_MB_720p_live.h265"Copy to clipboard

## Intra-frame smart codec (H.264 and H.265)

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

Intra-frame (I frame) is a data compression technique that allows smaller file sizes
        and lower bitrates. Run the use cases for the 720p@30 HEVC streams with smart codec and
        noise reduction.

For these use cases, the output video.mp4 file is stored at
                /opt/.

Run the following use cases on the target device:

### 720p@30 HEVC stream with smart bitrate, smart framerate, and smart GOP–noise
                reduction enabled

Note: The following use cases aren't supported on the Ubuntu
                Server.

- H.264

        gst-launch-1.0 -ev qtiqmmfsrc noise-reduction=2 video_0::extra-buffers=20 video_0::type=preview name=camsrc ! video/x-raw,format=NV12_Q08C,width=1280,height=720,framerate=30/1 ! queue ! scb.sink qtismartvencbin default-gop=30 max-gop=600 smart-framerate=false smart-gop=false encoder="v4l2h264enc" max-bitrate=4200000 name=scb ! queue ! h264parse ! queue ! mp4mux ! queue ! filesink location=/opt/video.mp4 camsrc. ! video/x-raw,format=NV12_Q08C,width=640,height=480,framerate=15/1 ! queue ! scb.sink_ctrlCopy to clipboard
- H.265

        gst-launch-1.0 -ev qtiqmmfsrc noise-reduction=2 video_0::extra-buffers=20 video_0::type=preview name=camsrc ! video/x-raw,format=NV12_Q08C,width=1280,height=720,framerate=30/1 ! queue ! scb.sink qtismartvencbin default-gop=30 max-gop=600 smart-framerate=false smart-gop=false encoder="v4l2h265enc" max-bitrate=4200000 name=scb ! queue ! h265parse ! queue ! mp4mux ! queue ! filesink location=/opt/video.mp4 camsrc. ! video/x-raw,format=NV12_Q08C,width=640,height=480,framerate=15/1 ! queue ! scb.sink_ctrlCopy to clipboard

### 720p@30 HEVC stream with smart bitrate only–noise reduction enabled

- H.264

        gst-launch-1.0 -ev qtiqmmfsrc noise-reduction=2 video_0::extra-buffers=20 video_0::type=preview name=camsrc ! video/x-raw,format=NV12_Q08C,width=1280,height=720,framerate=30/1 ! queue ! scb.sink qtismartvencbin default-gop=30 max-gop=600 smart-framerate=false smart-gop=false encoder="v4l2h264enc" max-bitrate=4200000 name=scb ! queue ! h264parse ! queue ! mp4mux ! queue ! filesink location=/opt/video.mp4 camsrc. ! video/x-raw,format=NV12_Q08C,width=640,height=480,framerate=15/1 ! queue ! scb.sink_ctrlCopy to clipboard
- H.265

        gst-launch-1.0 -ev qtiqmmfsrc noise-reduction=2 video_0::extra-buffers=20 video_0::type=preview name=camsrc ! video/x-raw,format=NV12_Q08C,width=1280,height=720,framerate=30/1 ! queue ! scb.sink qtismartvencbin default-gop=30 max-gop=600 smart-framerate=false smart-gop=false encoder="v4l2h265enc" max-bitrate=4200000 name=scb ! queue ! h265parse ! queue ! mp4mux ! queue ! filesink location=/opt/video.mp4 camsrc. ! video/x-raw,format=NV12_Q08C,width=640,height=480,framerate=15/1 ! queue ! scb.sink_ctrlCopy to clipboard

### 720p@30 HEVC stream with smart bitrate, smart framerate, and smart GOP–noise
                reduction disabled

- H.264

        gst-launch-1.0 -ev qtiqmmfsrc video_0::extra-buffers=20 video_0::type=preview name=camsrc ! video/x-raw,format=NV12_Q08C,width=1280,height=720,framerate=30/1 ! queue ! scb.sink qtismartvencbin default-gop=30 max-gop=600 encoder="v4l2h264enc" max-bitrate=4200000 name=scb ! queue ! h264parse ! queue ! mp4mux ! queue ! filesink location=/opt/video.mp4 camsrc. ! video/x-raw,format=NV12_Q08C,width=640,height=480,framerate=15/1 ! queue ! scb.sink_ctrlCopy to clipboard
- H.265

        gst-launch-1.0 -ev qtiqmmfsrc video_0::extra-buffers=20 video_0::type=preview name=camsrc ! video/x-raw,format=NV12_Q08C,width=1280,height=720,framerate=30/1 ! queue ! scb.sink qtismartvencbin default-gop=30 max-gop=600 encoder="v4l2h265enc" max-bitrate=4200000 name=scb ! queue ! h265parse ! queue ! mp4mux ! queue ! filesink location=/opt/video.mp4 camsrc. ! video/x-raw,format=NV12_Q08C,width=640,height=480,framerate=15/1 ! queue ! scb.sink_ctrlCopy to clipboard

### 720p@30 HEVC streamed over TCP with smart bitrate, smart framerate, and smart
                GOP–noise reduction enabled

- H.264

        gst-launch-1.0 -ev qtiqmmfsrc noise-reduction=2 video_0::extra-buffers=20 video_0::type=preview name=camsrc ! video/x-raw,format=NV12_Q08C,width=1280,height=720,framerate=30/1 ! queue ! scb.sink qtismartvencbin default-gop=30 max-gop=600 encoder="v4l2h264enc" max-bitrate=4200000 name=scb ! queue ! h264parse config-interval=1 ! mpegtsmux name=muxer ! queue ! tcpserversink port=8900 host=<ip_address> camsrc. ! video/x-raw,format=NV12_Q08C,width=640,height=480,framerate=15/1 ! queue ! scb.sink_ctrlCopy to clipboard
- H.265

        gst-launch-1.0 -ev qtiqmmfsrc noise-reduction=2 video_0::extra-buffers=20 video_0::type=preview name=camsrc ! video/x-raw,format=NV12_Q08C,width=1280,height=720,framerate=30/1 ! queue ! scb.sink qtismartvencbin default-gop=30 max-gop=600 encoder="v4l2h265enc" max-bitrate=4200000 name=scb ! queue ! h265parse config-interval=1 ! mpegtsmux name=muxer ! queue ! tcpserversink port=8900 host=<ip_address> camsrc. ! video/x-raw,format=NV12_Q08C,width=640,height=480,framerate=15/1 ! queue ! scb.sink_ctrlCopy to clipboard

To play the stream over TCP, do the following on the Windows host:

1. Open the VLC media player.
2. Select Media &gt; Open Network Stream
                    or  use CTRL + N).
3. Enter tcp://&lt;ip\_address&gt;:8900/live.
4. Select Play.

### 720p@30 HEVC stream with smart bitrate, smart framerate, and smart GOP–noise
                reduction enabled

- H.264

        gst-launch-1.0 -ev qtiqmmfsrc noise-reduction=2 video_0::extra-buffers=20 video_0::type=preview name=camsrc ! video/x-raw,format=NV12_Q08C,width=1280,height=720,framerate=30/1 ! queue ! scb.sink qtismartvencbin default-gop=30 max-gop=600 encoder="v4l2h264enc" max-bitrate=1000000 name=scb ! queue ! h264parse ! queue ! mp4mux ! queue ! filesink location=/opt/video.mp4 camsrc. ! video/x-raw,format=NV12_Q08C,width=640,height=480,framerate=15/1 ! queue ! tee name=split ! queue ! scb.sink_ctrl split. ! queue ! qtimlvconverter ! queue ! qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so external-delegate-options="QNNExternalDelegate,backend_type=htp;" model=<model-path> ! queue ! qtimlvdetection threshold=50.0 results=5 module=yolov8 labels=<labels-path> constants="YOLOv8,q-offsets=<-107.0, -128.0, 0.0>,q-scales=<3.093529462814331, 0.00390625, 1.0>;" ! text/x-raw ! queue ! scb.sink_mlCopy to clipboard
- H.265

        gst-launch-1.0 -ev qtiqmmfsrc noise-reduction=2 video_0::extra-buffers=20 video_0::type=preview name=camsrc ! video/x-raw,format=NV12_Q08C,width=1280,height=720,framerate=30/1 ! queue ! scb.sink qtismartvencbin default-gop=30 max-gop=600 encoder="v4l2h265enc" max-bitrate=1000000 name=scb ! queue ! h265parse ! queue ! mp4mux ! queue ! filesink location=/opt/video.mp4 camsrc. ! video/x-raw,format=NV12_Q08C,width=640,height=480,framerate=15/1 ! queue ! tee name=split ! queue ! scb.sink_ctrl split. ! queue ! qtimlvconverter ! queue ! qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so external-delegate-options="QNNExternalDelegate,backend_type=htp;" model=<model-path> ! queue ! qtimlvdetection threshold=50.0 results=5 module=yolov8 labels=<labels-path> constants="YOLOv8,q-offsets=<-107.0, -128.0, 0.0>,q-scales=<3.093529462814331, 0.00390625, 1.0>;" ! text/x-raw ! queue ! scb.sink_mlCopy to clipboard

### Concurrent two 720p@30 HEVC streams with smart bitrate, smart framerate, and smart GOP–noise reduction enabled

- H.264

        gst-launch-1.0 -ev qtiqmmfsrc noise-reduction=2 video_0::extra-buffers=20 video_0::type=preview video_1::extra-buffers=20 name=camsrc ! video/x-raw,format=NV12_Q08C,width=1280,height=720,framerate=30/1 ! queue ! scb1.sink qtismartvencbin default-gop=30 max-gop=600 encoder="v4l2h264enc" max-bitrate=4200000 name=scb1 ! queue ! h264parse ! queue ! mp4mux ! queue ! filesink location=/opt/video_scb1.mp4 camsrc. ! video/x-raw,format=NV12_Q08C,width=1280,height=720,framerate=30/1 ! queue ! scb2.sink qtismartvencbin default-gop=30 max-gop=600 encoder="v4l2h264enc" max-bitrate=4200000 name=scb2 ! queue ! h264parse ! queue ! mp4mux ! queue ! filesink location=/opt/video_scb2.mp4 camsrc. ! video/x-raw,format=NV12_Q08C,width=640,height=480,framerate=15/1 ! queue ! tee name=ctrl_t ! queue ! scb1.sink_ctrl ctrl_t. ! queue ! scb2.sink_ctrlCopy to clipboard
- H.265

        gst-launch-1.0 -ev qtiqmmfsrc noise-reduction=2 video_0::extra-buffers=20 video_0::type=preview video_1::extra-buffers=20 name=camsrc ! video/x-raw,format=NV12_Q08C,width=1280,height=720,framerate=30/1 ! queue ! scb1.sink qtismartvencbin default-gop=30 max-gop=600 encoder="v4l2h265enc" max-bitrate=4200000 name=scb1 ! queue ! h265parse ! queue ! mp4mux ! queue ! filesink location=/opt/video_scb1.mp4 camsrc. ! video/x-raw,format=NV12_Q08C,width=1280,height=720,framerate=30/1 ! queue ! scb2.sink qtismartvencbin default-gop=30 max-gop=600 encoder="v4l2h265enc" max-bitrate=4200000 name=scb2 ! queue ! h265parse ! queue ! mp4mux ! queue ! filesink location=/opt/video_scb2.mp4 camsrc. ! video/x-raw,format=NV12_Q08C,width=640,height=480,framerate=15/1 ! queue ! tee name=ctrl_t ! queue ! scb1.sink_ctrl ctrl_t. ! queue ! scb2.sink_ctrlCopy to clipboard

## MJPEG video encode in CPU and GPU

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

For MJPEG encoding, if the hardware isn't available, support is required for CPU and
        GPU. The use cases include the capabilities to encode a 16-channel 1080p@2fps
        video.

Note: For Dragonwing IQ-9075 and Dragonwing IQ-8275, the MJPEG
                video encoding is currently not supported.

### Prerequisites
For MJPEG encoding, support
            for 1080p@2fps in CPU/GPU is required.
In the terminal of the Linux host computer, set
                the following environment variables before running the use
                cases:

    export XDG_RUNTIME_DIR=/dev/socket/westonCopy to clipboard

    export WAYLAND_DISPLAY=wayland-1Copy to clipboard

Run
                the following use cases on the target device.

### YUV file 1920 × 1080@30 → 16 × JPEG-ENC → AVI file

    	
    gst-launch-1.0 -e filesrc location=/opt/1920_1080.yuv ! videoparse width=1920 height=1080 format=nv12 framerate=2/1 ! jpegenc ! avimux ! filesink location=/opt/mjpeg1.avi &
    gst-launch-1.0 -e filesrc location=/opt/1920_1080.yuv ! videoparse width=1920 height=1080 format=nv12 framerate=2/1 ! jpegenc ! avimux ! filesink location=/opt/mjpeg2.avi &
    gst-launch-1.0 -e filesrc location=/opt/1920_1080.yuv ! videoparse width=1920 height=1080 format=nv12 framerate=2/1 ! jpegenc ! avimux ! filesink location=/opt/mjpeg3.avi &
    gst-launch-1.0 -e filesrc location=/opt/1920_1080.yuv ! videoparse width=1920 height=1080 format=nv12 framerate=2/1 ! jpegenc ! avimux ! filesink location=/opt/mjpeg4.avi &
    gst-launch-1.0 -e filesrc location=/opt/1920_1080.yuv ! videoparse width=1920 height=1080 format=nv12 framerate=2/1 ! jpegenc ! avimux ! filesink location=/opt/mjpeg5.avi &
    gst-launch-1.0 -e filesrc location=/opt/1920_1080.yuv ! videoparse width=1920 height=1080 format=nv12 framerate=2/1 ! jpegenc ! avimux ! filesink location=/opt/mjpeg6.avi &
    gst-launch-1.0 -e filesrc location=/opt/1920_1080.yuv ! videoparse width=1920 height=1080 format=nv12 framerate=2/1 ! jpegenc ! avimux ! filesink location=/opt/mjpeg7.avi &
    gst-launch-1.0 -e filesrc location=/opt/1920_1080.yuv ! videoparse width=1920 height=1080 format=nv12 framerate=2/1 ! jpegenc ! avimux ! filesink location=/opt/mjpeg8.avi &
    gst-launch-1.0 -e filesrc location=/opt/1920_1080.yuv ! videoparse width=1920 height=1080 format=nv12 framerate=2/1 ! jpegenc ! avimux ! filesink location=/opt/mjpeg9.avi &
    gst-launch-1.0 -e filesrc location=/opt/1920_1080.yuv ! videoparse width=1920 height=1080 format=nv12 framerate=2/1 ! jpegenc ! avimux ! filesink location=/opt/mjpeg10.avi &
    gst-launch-1.0 -e filesrc location=/opt/1920_1080.yuv ! videoparse width=1920 height=1080 format=nv12 framerate=2/1 ! jpegenc ! avimux ! filesink location=/opt/mjpeg11.avi &
    gst-launch-1.0 -e filesrc location=/opt/1920_1080.yuv ! videoparse width=1920 height=1080 format=nv12 framerate=2/1 ! jpegenc ! avimux ! filesink location=/opt/mjpeg12.avi &
    gst-launch-1.0 -e filesrc location=/opt/1920_1080.yuv ! videoparse width=1920 height=1080 format=nv12 framerate=2/1 ! jpegenc ! avimux ! filesink location=/opt/mjpeg13.avi &
    gst-launch-1.0 -e filesrc location=/opt/1920_1080.yuv ! videoparse width=1920 height=1080 format=nv12 framerate=2/1 ! jpegenc ! avimux ! filesink location=/opt/mjpeg14.avi &
    gst-launch-1.0 -e filesrc location=/opt/1920_1080.yuv ! videoparse width=1920 height=1080 format=nv12 framerate=2/1 ! jpegenc ! avimux ! filesink location=/opt/mjpeg15.avi &
    gst-launch-1.0 -e filesrc location=/opt/1920_1080.yuv ! videoparse width=1920 height=1080 format=nv12 framerate=2/1 ! jpegenc ! avimux ! filesink location=/opt/mjpeg16.aviCopy to clipboard

### YUV file 1920 × 1080@30 → 12 × JPEG-ENC → AVI file and 1920 × 1080@30 AVI → 12 ×
                JPEG-DEC &gt; JPEG

    gst-launch-1.0 -e filesrc location=/opt/mjpeg.avi ! avidemux !  queue ! jpegdec ! multifilesink location=/opt/mjpeg1_%d.jpeg max-files=1 &
    gst-launch-1.0 -e filesrc location=/opt/mjpeg.avi ! avidemux !  queue ! jpegdec ! multifilesink location=/opt/mjpeg2_%d.jpeg max-files=1 &
    gst-launch-1.0 -e filesrc location=/opt/mjpeg.avi ! avidemux !  queue ! jpegdec ! multifilesink location=/opt/mjpeg3_%d.jpeg max-files=1 &
    gst-launch-1.0 -e filesrc location=/opt/mjpeg.avi ! avidemux !  queue ! jpegdec ! multifilesink location=/opt/mjpeg4_%d.jpeg max-files=1 &
    gst-launch-1.0 -e filesrc location=/opt/mjpeg.avi ! avidemux !  queue ! jpegdec ! multifilesink location=/opt/mjpeg5_%d.jpeg max-files=1 &
    gst-launch-1.0 -e filesrc location=/opt/mjpeg.avi ! avidemux !  queue ! jpegdec ! multifilesink location=/opt/mjpeg6_%d.jpeg max-files=1 &
    gst-launch-1.0 -e filesrc location=/opt/mjpeg.avi ! avidemux !  queue ! jpegdec ! multifilesink location=/opt/mjpeg7_%d.jpeg max-files=1 &
    gst-launch-1.0 -e filesrc location=/opt/mjpeg.avi ! avidemux !  queue ! jpegdec ! multifilesink location=/opt/mjpeg8_%d.jpeg max-files=1 &
    gst-launch-1.0 -e filesrc location=/opt/mjpeg.avi ! avidemux !  queue ! jpegdec ! multifilesink location=/opt/mjpeg9_%d.jpeg max-files=1 &
    gst-launch-1.0 -e filesrc location=/opt/mjpeg.avi ! avidemux !  queue ! jpegdec ! multifilesink location=/opt/mjpeg10_%d.jpeg max-files=1 &
    gst-launch-1.0 -e filesrc location=/opt/mjpeg.avi ! avidemux !  queue ! jpegdec ! multifilesink location=/opt/mjpeg11_%d.jpeg max-files=1 &
    gst-launch-1.0 -e filesrc location=/opt/mjpeg.avi ! avidemux !  queue ! jpegdec ! multifilesink location=/opt/mjpeg12_%d.jpeg max-files=1 &
    gst-launch-1.0 -e filesrc location=/opt/1920_1080.yuv ! videoparse width=1920 height=1080 format=nv12 framerate=2/1 ! jpegenc ! avimux ! filesink location=/opt/mjpeg1.avi &
    gst-launch-1.0 -e filesrc location=/opt/1920_1080.yuv ! videoparse width=1920 height=1080 format=nv12 framerate=2/1 ! jpegenc ! avimux ! filesink location=/opt/mjpeg2.avi &
    gst-launch-1.0 -e filesrc location=/opt/1920_1080.yuv ! videoparse width=1920 height=1080 format=nv12 framerate=2/1 ! jpegenc ! avimux ! filesink location=/opt/mjpeg3.avi &
    gst-launch-1.0 -e filesrc location=/opt/1920_1080.yuv ! videoparse width=1920 height=1080 format=nv12 framerate=2/1 ! jpegenc ! avimux ! filesink location=/opt/mjpeg4.avi &
    gst-launch-1.0 -e filesrc location=/opt/1920_1080.yuv ! videoparse width=1920 height=1080 format=nv12 framerate=2/1 ! jpegenc ! avimux ! filesink location=/opt/mjpeg5.avi &
    gst-launch-1.0 -e filesrc location=/opt/1920_1080.yuv ! videoparse width=1920 height=1080 format=nv12 framerate=2/1 ! jpegenc ! avimux ! filesink location=/opt/mjpeg6.avi &
    gst-launch-1.0 -e filesrc location=/opt/1920_1080.yuv ! videoparse width=1920 height=1080 format=nv12 framerate=2/1 ! jpegenc ! avimux ! filesink location=/opt/mjpeg7.avi &
    gst-launch-1.0 -e filesrc location=/opt/1920_1080.yuv ! videoparse width=1920 height=1080 format=nv12 framerate=2/1 ! jpegenc ! avimux ! filesink location=/opt/mjpeg8.avi &
    gst-launch-1.0 -e filesrc location=/opt/1920_1080.yuv ! videoparse width=1920 height=1080 format=nv12 framerate=2/1 ! jpegenc ! avimux ! filesink location=/opt/mjpeg9.avi &
    gst-launch-1.0 -e filesrc location=/opt/1920_1080.yuv ! videoparse width=1920 height=1080 format=nv12 framerate=2/1 ! jpegenc ! avimux ! filesink location=/opt/mjpeg10.avi &
    gst-launch-1.0 -e filesrc location=/opt/1920_1080.yuv ! videoparse width=1920 height=1080 format=nv12 framerate=2/1 ! jpegenc ! avimux ! filesink location=/opt/mjpeg11.avi &
    gst-launch-1.0 -e filesrc location=/opt/1920_1080.yuv ! videoparse width=1920 height=1080 format=nv12 framerate=2/1 ! jpegenc ! avimux ! filesink location=/opt/mjpeg12.aviCopy to clipboard

## Enable 24 end-to-end concurrent video sessions

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

Run the use cases for 24 parallel 1080p streams taken from files and sent to a
        display. Each stream is displayed at different positions on the screen.

Note: These use cases aren't supported on QCS6490 and IQ-8275.

Run the following use cases on the target device.

### H.264–24 session decode

    ulimit -n 4096 && gst-launch-1.0 -e qtivcomposer name=mix sink_0::position="<0, 0>" sink_0::dimensions="<240, 270>" \
    sink_1::position="<240, 0>" sink_1::dimensions="<240, 270>" \
    sink_2::position="<480, 0>" sink_2::dimensions="<240, 270>" \
    sink_3::position="<720, 0>" sink_3::dimensions="<240, 270>" \
    sink_4::position="<960, 0>" sink_4::dimensions="<240, 270>" \
    sink_5::position="<1200, 0>" sink_5::dimensions="<240, 270>" \
    sink_6::position="<1440, 0>" sink_6::dimensions="<240, 270>" \
    sink_7::position="<1680, 0>" sink_7::dimensions="<240, 270>" \
    sink_8::position="<0, 270>" sink_8::dimensions="<240, 270>" \
    sink_9::position="<240, 270>" sink_9::dimensions="<240, 270>" \
    sink_10::position="<480, 270>" sink_10::dimensions="<240, 270>" \
    sink_11::position="<720, 270>" sink_11::dimensions="<240, 270>" \
    sink_12::position="<960, 270>" sink_12::dimensions="<240, 270>" \
    sink_13::position="<1200, 270>" sink_13::dimensions="<240, 270>" \
    sink_14::position="<1440, 270>" sink_14::dimensions="<240, 270>" \
    sink_15::position="<1680, 270>" sink_15::dimensions="<240, 270>" \
    sink_16::position="<0, 540>" sink_16::dimensions="<240, 270>" \
    sink_17::position="<240, 540>" sink_17::dimensions="<240, 270>" \
    sink_18::position="<480, 540>" sink_18::dimensions="<240, 270>" \
    sink_19::position="<720, 540>" sink_19::dimensions="<240, 270>" \
    sink_20::position="<960, 540>" sink_20::dimensions="<240, 270>" \
    sink_21::position="<1200, 540>" sink_21::dimensions="<240, 270>" \
    sink_22::position="<1440, 540>" sink_22::dimensions="<240, 270>" \
    sink_23::position="<1680, 540>" sink_23::dimensions="<240, 270>" \
    mix. ! fpsdisplaysink text-overlay=true video-sink="waylandsink fullscreen=true" -v \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix.Copy to clipboard

### H.265–24 session decode

    ulimit -n 4096 && gst-launch-1.0 -e qtivcomposer name=mix sink_0::position="<0, 0>" sink_0::dimensions="<240, 270>" \
    sink_1::position="<240, 0>" sink_1::dimensions="<240, 270>" \
    sink_2::position="<480, 0>" sink_2::dimensions="<240, 270>" \
    sink_3::position="<720, 0>" sink_3::dimensions="<240, 270>" \
    sink_4::position="<960, 0>" sink_4::dimensions="<240, 270>" \
    sink_5::position="<1200, 0>" sink_5::dimensions="<240, 270>" \
    sink_6::position="<1440, 0>" sink_6::dimensions="<240, 270>" \
    sink_7::position="<1680, 0>" sink_7::dimensions="<240, 270>" \
    sink_8::position="<0, 270>" sink_8::dimensions="<240, 270>" \
    sink_9::position="<240, 270>" sink_9::dimensions="<240, 270>" \
    sink_10::position="<480, 270>" sink_10::dimensions="<240, 270>" \
    sink_11::position="<720, 270>" sink_11::dimensions="<240, 270>" \
    sink_12::position="<960, 270>" sink_12::dimensions="<240, 270>" \
    sink_13::position="<1200, 270>" sink_13::dimensions="<240, 270>" \
    sink_14::position="<1440, 270>" sink_14::dimensions="<240, 270>" \
    sink_15::position="<1680, 270>" sink_15::dimensions="<240, 270>" \
    sink_16::position="<0, 540>" sink_16::dimensions="<240, 270>" \
    sink_17::position="<240, 540>" sink_17::dimensions="<240, 270>" \
    sink_18::position="<480, 540>" sink_18::dimensions="<240, 270>" \
    sink_19::position="<720, 540>" sink_19::dimensions="<240, 270>" \
    sink_20::position="<960, 540>" sink_20::dimensions="<240, 270>" \
    sink_21::position="<1200, 540>" sink_21::dimensions="<240, 270>" \
    sink_22::position="<1440, 540>" sink_22::dimensions="<240, 270>" \
    sink_23::position="<1680, 540>" sink_23::dimensions="<240, 270>" \
    mix. ! fpsdisplaysink text-overlay=false video-sink="waylandsink fullscreen=true" -v \
    filesrc location=/opt/FlyingBirdFlock_1920x1080_30fps_HEVC_7862Kbps_withAudio.mp4 ! qtdemux ! h265parse ! v4l2h265dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/FlyingBirdFlock_1920x1080_30fps_HEVC_7862Kbps_withAudio.mp4 ! qtdemux ! h265parse ! v4l2h265dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/FlyingBirdFlock_1920x1080_30fps_HEVC_7862Kbps_withAudio.mp4 ! qtdemux ! h265parse ! v4l2h265dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/FlyingBirdFlock_1920x1080_30fps_HEVC_7862Kbps_withAudio.mp4 ! qtdemux ! h265parse ! v4l2h265dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/FlyingBirdFlock_1920x1080_30fps_HEVC_7862Kbps_withAudio.mp4 ! qtdemux ! h265parse ! v4l2h265dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/FlyingBirdFlock_1920x1080_30fps_HEVC_7862Kbps_withAudio.mp4 ! qtdemux ! h265parse ! v4l2h265dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/FlyingBirdFlock_1920x1080_30fps_HEVC_7862Kbps_withAudio.mp4 ! qtdemux ! h265parse ! v4l2h265dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/FlyingBirdFlock_1920x1080_30fps_HEVC_7862Kbps_withAudio.mp4 ! qtdemux ! h265parse ! v4l2h265dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/FlyingBirdFlock_1920x1080_30fps_HEVC_7862Kbps_withAudio.mp4 ! qtdemux ! h265parse ! v4l2h265dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/FlyingBirdFlock_1920x1080_30fps_HEVC_7862Kbps_withAudio.mp4 ! qtdemux ! h265parse ! v4l2h265dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/FlyingBirdFlock_1920x1080_30fps_HEVC_7862Kbps_withAudio.mp4 ! qtdemux ! h265parse ! v4l2h265dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/FlyingBirdFlock_1920x1080_30fps_HEVC_7862Kbps_withAudio.mp4 ! qtdemux ! h265parse ! v4l2h265dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/FlyingBirdFlock_1920x1080_30fps_HEVC_7862Kbps_withAudio.mp4 ! qtdemux ! h265parse ! v4l2h265dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/FlyingBirdFlock_1920x1080_30fps_HEVC_7862Kbps_withAudio.mp4 ! qtdemux ! h265parse ! v4l2h265dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/FlyingBirdFlock_1920x1080_30fps_HEVC_7862Kbps_withAudio.mp4 ! qtdemux ! h265parse ! v4l2h265dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/FlyingBirdFlock_1920x1080_30fps_HEVC_7862Kbps_withAudio.mp4 ! qtdemux ! h265parse ! v4l2h265dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/FlyingBirdFlock_1920x1080_30fps_HEVC_7862Kbps_withAudio.mp4 ! qtdemux ! h265parse ! v4l2h265dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/FlyingBirdFlock_1920x1080_30fps_HEVC_7862Kbps_withAudio.mp4 ! qtdemux ! h265parse ! v4l2h265dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/FlyingBirdFlock_1920x1080_30fps_HEVC_7862Kbps_withAudio.mp4 ! qtdemux ! h265parse ! v4l2h265dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/FlyingBirdFlock_1920x1080_30fps_HEVC_7862Kbps_withAudio.mp4 ! qtdemux ! h265parse ! v4l2h265dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/FlyingBirdFlock_1920x1080_30fps_HEVC_7862Kbps_withAudio.mp4 ! qtdemux ! h265parse ! v4l2h265dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/FlyingBirdFlock_1920x1080_30fps_HEVC_7862Kbps_withAudio.mp4 ! qtdemux ! h265parse ! v4l2h265dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/FlyingBirdFlock_1920x1080_30fps_HEVC_7862Kbps_withAudio.mp4 ! qtdemux ! h265parse ! v4l2h265dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix. \
    filesrc location=/opt/FlyingBirdFlock_1920x1080_30fps_HEVC_7862Kbps_withAudio.mp4 ! qtdemux ! h265parse ! v4l2h265dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mix.Copy to clipboard

### AV1–24 session decode

Note: This use case isn't supported on the Ubuntu Server.

    ulimit -n 4096 && gst-launch-1.0 -e qtivcomposer name=mix sink_0::position="<0, 0>" sink_0::dimensions="<240, 270>" \
    sink_1::position="<240, 0>" sink_1::dimensions="<240, 270>" \
    sink_2::position="<480, 0>" sink_2::dimensions="<240, 270>" \
    sink_3::position="<720, 0>" sink_3::dimensions="<240, 270>" \
    sink_4::position="<960, 0>" sink_4::dimensions="<240, 270>" \
    sink_5::position="<1200, 0>" sink_5::dimensions="<240, 270>" \
    sink_6::position="<1440, 0>" sink_6::dimensions="<240, 270>" \
    sink_7::position="<1680, 0>" sink_7::dimensions="<240, 270>" \
    sink_8::position="<0, 270>" sink_8::dimensions="<240, 270>" \
    sink_9::position="<240, 270>" sink_9::dimensions="<240, 270>" \
    sink_10::position="<480, 270>" sink_10::dimensions="<240, 270>" \
    sink_11::position="<720, 270>" sink_11::dimensions="<240, 270>" \
    sink_12::position="<960, 270>" sink_12::dimensions="<240, 270>" \
    sink_13::position="<1200, 270>" sink_13::dimensions="<240, 270>" \
    sink_14::position="<1440, 270>" sink_14::dimensions="<240, 270>" \
    sink_15::position="<1680, 270>" sink_15::dimensions="<240, 270>" \
    sink_16::position="<0, 540>" sink_16::dimensions="<240, 270>" \
    sink_17::position="<240, 540>" sink_17::dimensions="<240, 270>" \
    sink_18::position="<480, 540>" sink_18::dimensions="<240, 270>" \
    sink_19::position="<720, 540>" sink_19::dimensions="<240, 270>" \
    sink_20::position="<960, 540>" sink_20::dimensions="<240, 270>" \
    sink_21::position="<1200, 540>" sink_21::dimensions="<240, 270>" \
    sink_22::position="<1440, 540>" sink_22::dimensions="<240, 270>" \
    sink_23::position="<1680, 540>" sink_23::dimensions="<240, 270>" \
    mix. ! fpsdisplaysink text-overlay=false video-sink="waylandsink fullscreen=true" -v \
    filesrc location=/opt/sjxbqm_1080p30fps_25_4882Kbps.mp4 ! qtdemux ! av1parse ! v4l2av1dec capture-io-mode=4 output-io-mode=4 ! mix. \
    filesrc location=/opt/sjxbqm_1080p30fps_25_4882Kbps.mp4 ! qtdemux ! av1parse ! v4l2av1dec capture-io-mode=4 output-io-mode=4 ! mix. \
    filesrc location=/opt/sjxbqm_1080p30fps_25_4882Kbps.mp4 ! qtdemux ! av1parse ! v4l2av1dec capture-io-mode=4 output-io-mode=4 ! mix. \
    filesrc location=/opt/sjxbqm_1080p30fps_25_4882Kbps.mp4 ! qtdemux ! av1parse ! v4l2av1dec capture-io-mode=4 output-io-mode=4 ! mix. \
    filesrc location=/opt/sjxbqm_1080p30fps_25_4882Kbps.mp4 ! qtdemux ! av1parse ! v4l2av1dec capture-io-mode=4 output-io-mode=4 ! mix. \
    filesrc location=/opt/sjxbqm_1080p30fps_25_4882Kbps.mp4 ! qtdemux ! av1parse ! v4l2av1dec capture-io-mode=4 output-io-mode=4 ! mix. \
    filesrc location=/opt/sjxbqm_1080p30fps_25_4882Kbps.mp4 ! qtdemux ! av1parse ! v4l2av1dec capture-io-mode=4 output-io-mode=4 ! mix. \
    filesrc location=/opt/sjxbqm_1080p30fps_25_4882Kbps.mp4 ! qtdemux ! av1parse ! v4l2av1dec capture-io-mode=4 output-io-mode=4 ! mix. \
    filesrc location=/opt/sjxbqm_1080p30fps_25_4882Kbps.mp4 ! qtdemux ! av1parse ! v4l2av1dec capture-io-mode=4 output-io-mode=4 ! mix. \
    filesrc location=/opt/sjxbqm_1080p30fps_25_4882Kbps.mp4 ! qtdemux ! av1parse ! v4l2av1dec capture-io-mode=4 output-io-mode=4 ! mix. \
    filesrc location=/opt/sjxbqm_1080p30fps_25_4882Kbps.mp4 ! qtdemux ! av1parse ! v4l2av1dec capture-io-mode=4 output-io-mode=4 ! mix. \
    filesrc location=/opt/sjxbqm_1080p30fps_25_4882Kbps.mp4 ! qtdemux ! av1parse ! v4l2av1dec capture-io-mode=4 output-io-mode=4 ! mix. \
    filesrc location=/opt/sjxbqm_1080p30fps_25_4882Kbps.mp4 ! qtdemux ! av1parse ! v4l2av1dec capture-io-mode=4 output-io-mode=4 ! mix. \
    filesrc location=/opt/sjxbqm_1080p30fps_25_4882Kbps.mp4 ! qtdemux ! av1parse ! v4l2av1dec capture-io-mode=4 output-io-mode=4 ! mix. \
    filesrc location=/opt/sjxbqm_1080p30fps_25_4882Kbps.mp4 ! qtdemux ! av1parse ! v4l2av1dec capture-io-mode=4 output-io-mode=4 ! mix. \
    filesrc location=/opt/sjxbqm_1080p30fps_25_4882Kbps.mp4 ! qtdemux ! av1parse ! v4l2av1dec capture-io-mode=4 output-io-mode=4 ! mix. \
    filesrc location=/opt/sjxbqm_1080p30fps_25_4882Kbps.mp4 ! qtdemux ! av1parse ! v4l2av1dec capture-io-mode=4 output-io-mode=4 ! mix. \
    filesrc location=/opt/sjxbqm_1080p30fps_25_4882Kbps.mp4 ! qtdemux ! av1parse ! v4l2av1dec capture-io-mode=4 output-io-mode=4 ! mix. \
    filesrc location=/opt/sjxbqm_1080p30fps_25_4882Kbps.mp4 ! qtdemux ! av1parse ! v4l2av1dec capture-io-mode=4 output-io-mode=4 ! mix. \
    filesrc location=/opt/sjxbqm_1080p30fps_25_4882Kbps.mp4 ! qtdemux ! av1parse ! v4l2av1dec capture-io-mode=4 output-io-mode=4 ! mix. \
    filesrc location=/opt/sjxbqm_1080p30fps_25_4882Kbps.mp4 ! qtdemux ! av1parse ! v4l2av1dec capture-io-mode=4 output-io-mode=4 ! mix. \
    filesrc location=/opt/sjxbqm_1080p30fps_25_4882Kbps.mp4 ! qtdemux ! av1parse ! v4l2av1dec capture-io-mode=4 output-io-mode=4 ! mix. \
    filesrc location=/opt/sjxbqm_1080p30fps_25_4882Kbps.mp4 ! qtdemux ! av1parse ! v4l2av1dec capture-io-mode=4 output-io-mode=4 ! mix. \
    filesrc location=/opt/sjxbqm_1080p30fps_25_4882Kbps.mp4 ! qtdemux ! av1parse ! v4l2av1dec capture-io-mode=4 output-io-mode=4 ! mix.Copy to clipboard

### H.264–12 sessions decode and encode

    ulimit -n 4096 && gst-launch-1.0 -e filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! h264parse ! mp4mux ! filesink location=/opt/enc_1.mp4 \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! h264parse ! mp4mux ! filesink location=/opt/enc_2.mp4 \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! h264parse ! mp4mux ! filesink location=/opt/enc_3.mp4 \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! h264parse ! mp4mux ! filesink location=/opt/enc_4.mp4 \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! h264parse ! mp4mux ! filesink location=/opt/enc_5.mp4 \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! h264parse ! mp4mux ! filesink location=/opt/enc_6.mp4 \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! h264parse ! mp4mux ! filesink location=/opt/enc_7.mp4 \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! h264parse ! mp4mux ! filesink location=/opt/enc_8.mp4 \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! h264parse ! mp4mux ! filesink location=/opt/enc_9.mp4 \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! h264parse ! mp4mux ! filesink location=/opt/enc_10.mp4 \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! h264parse ! mp4mux ! filesink location=/opt/enc_11.mp4 \
    filesrc location=/opt/1920_1080_h264_30fps_1min.mp4 ! qtdemux ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! h264parse ! mp4mux ! filesink location=/opt/enc_12.mp4Copy to clipboard

### H264–24 sessions encode

Note: Qualcomm Dragonwing^™^ RB3 Gen 2 supports up to 16
                sessions encode.

    gst-launch-1.0 -e filesrc blocksize=3133440 location=/tmp/dump_1080.yuv ! video/x-raw,format="NV12",width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_0.h264 \
    filesrc blocksize=3133440 location=/opt/dump_1080.yuv ! video/x-raw,format="NV12",width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_1.h264 \
    filesrc blocksize=3133440 location=/opt/dump_1080.yuv ! video/x-raw,format="NV12",width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_2.h264 \
    filesrc blocksize=3133440 location=/opt/dump_1080.yuv ! video/x-raw,format="NV12",width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_3.h264 \
    filesrc blocksize=3133440 location=/opt/dump_1080.yuv ! video/x-raw,format="NV12",width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_4.h264 \
    filesrc blocksize=3133440 location=/opt/dump_1080.yuv ! video/x-raw,format="NV12",width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_5.h264 \
    filesrc blocksize=3133440 location=/opt/dump_1080.yuv ! video/x-raw,format="NV12",width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_6.h264 \
    filesrc blocksize=3133440 location=/opt/dump_1080.yuv ! video/x-raw,format="NV12",width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_7.h264 \
    filesrc blocksize=3133440 location=/opt/dump_1080.yuv ! video/x-raw,format="NV12",width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_8.h264 \
    filesrc blocksize=3133440 location=/opt/dump_1080.yuv ! video/x-raw,format="NV12",width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_9.h264 \
    filesrc blocksize=3133440 location=/opt/dump_1080.yuv ! video/x-raw,format="NV12",width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_10.h264 \
    filesrc blocksize=3133440 location=/opt/dump_1080.yuv ! video/x-raw,format="NV12",width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_11.h264 \
    filesrc blocksize=3133440 location=/opt/dump_1080.yuv ! video/x-raw,format="NV12",width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_12.h264 \
    filesrc blocksize=3133440 location=/opt/dump_1080.yuv ! video/x-raw,format="NV12",width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_13.h264 \
    filesrc blocksize=3133440 location=/opt/dump_1080.yuv ! video/x-raw,format="NV12",width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_14.h264 \
    filesrc blocksize=3133440 location=/opt/dump_1080.yuv ! video/x-raw,format="NV12",width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_15.h264 \
    filesrc blocksize=3133440 location=/opt/dump_1080.yuv ! video/x-raw,format="NV12",width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_16.h264 \
    filesrc blocksize=3133440 location=/opt/dump_1080.yuv ! video/x-raw,format="NV12",width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_17.h264 \
    filesrc blocksize=3133440 location=/opt/dump_1080.yuv ! video/x-raw,format="NV12",width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_18.h264 \
    filesrc blocksize=3133440 location=/opt/dump_1080.yuv ! video/x-raw,format="NV12",width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_19.h264 \
    filesrc blocksize=3133440 location=/opt/dump_1080.yuv ! video/x-raw,format="NV12",width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_20.h264 \
    filesrc blocksize=3133440 location=/opt/dump_1080.yuv ! video/x-raw,format="NV12",width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_21.h264 \
    filesrc blocksize=3133440 location=/opt/dump_1080.yuv ! video/x-raw,format="NV12",width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_22.h264 \
    filesrc blocksize=3133440 location=/opt/dump_1080.yuv ! video/x-raw,format="NV12",width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_23.h264Copy to clipboard

Qualcomm Dragonwing^™^ RB3 Gen 2 supports up to 16 sessions encode:

    ulimit -n 4096 && gst-launch-1.0 -e filesrc blocksize=460800 location=/opt/dump_640_480.yuv ! video/x-raw,format="NV12",width=640,height=480,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_0.h264 \
    filesrc blocksize=460800 location=/opt/dump_640_480.yuv ! video/x-raw,format="NV12",width=640,height=480,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_1.h264 \
    filesrc blocksize=460800 location=/opt/dump_640_480.yuv ! video/x-raw,format="NV12",width=640,height=480,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_2.h264 \
    filesrc blocksize=460800 location=/opt/dump_640_480.yuv ! video/x-raw,format="NV12",width=640,height=480,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_3.h264 \
    filesrc blocksize=460800 location=/opt/dump_640_480.yuv ! video/x-raw,format="NV12",width=640,height=480,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_4.h264 \
    filesrc blocksize=460800 location=/opt/dump_640_480.yuv ! video/x-raw,format="NV12",width=640,height=480,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_5.h264 \
    filesrc blocksize=460800 location=/opt/dump_640_480.yuv ! video/x-raw,format="NV12",width=640,height=480,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_6.h264 \
    filesrc blocksize=460800 location=/opt/dump_640_480.yuv ! video/x-raw,format="NV12",width=640,height=480,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_7.h264 \
    filesrc blocksize=460800 location=/opt/dump_640_480.yuv ! video/x-raw,format="NV12",width=640,height=480,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_8.h264 \
    filesrc blocksize=460800 location=/opt/dump_640_480.yuv ! video/x-raw,format="NV12",width=640,height=480,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_9.h264 \
    filesrc blocksize=460800 location=/opt/dump_640_480.yuv ! video/x-raw,format="NV12",width=640,height=480,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_10.h264 \
    filesrc blocksize=460800 location=/opt/dump_640_480.yuv ! video/x-raw,format="NV12",width=640,height=480,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_11.h264 \
    filesrc blocksize=460800 location=/opt/dump_640_480.yuv ! video/x-raw,format="NV12",width=640,height=480,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_12.h264 \
    filesrc blocksize=460800 location=/opt/dump_640_480.yuv ! video/x-raw,format="NV12",width=640,height=480,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_13.h264 \
    filesrc blocksize=460800 location=/opt/dump_640_480.yuv ! video/x-raw,format="NV12",width=640,height=480,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_14.h264 \
    filesrc blocksize=460800 location=/opt/dump_640_480.yuv ! video/x-raw,format="NV12",width=640,height=480,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink location=/opt/enc_15.h264Copy to clipboard

## AV1 decoder and 4K VP9 decoder with 240 fps playback

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

Run the decoding use cases with the AV1 and VP9 decoders. These use cases are only
        applicable to Dragonwing IQ-9075.

Run the following use cases on the target device.

### AV1 use cases

Note: The following use cases aren't supported on the Ubuntu
                Server.

- 3840 ×
                    2160

        gst-launch-1.0 -e filesrc location=/opt/SeaOtters_AV1_3840x2160_30_25.0Mbps_Main_no_audio_30.0.mp4 ! qtdemux ! av1parse ! v4l2av1dec capture-io-mode=4 output-io-mode=4 ! fpsdisplaysink video-sink="waylandsink fullscreen=true" -vCopy to clipboard
- 1920 ×
                    1080

        gst-launch-1.0 -e filesrc location=/opt/CaribouHerd_AV1_1920x1080_30_39.38Mbps_Main_AAC_34.472.mp4 ! qtdemux ! av1parse ! v4l2av1dec capture-io-mode=4 output-io-mode=4 ! fpsdisplaysink video-sink="waylandsink fullscreen=true" -vCopy to clipboard
- 1280 ×
                    720

        gst-launch-1.0 -e filesrc location=/opt/av1.mp4 ! qtdemux ! av1parse ! v4l2av1dec capture-io-mode=4 output-io-mode=4 ! fpsdisplaysink video-sink="waylandsink fullscreen=true" -vCopy to clipboard

### VP9 use cases

3840 × 2160 with 240
                fps

    gst-launch-1.0 -e filesrc location=/opt/test_UHD_240FPS.ivf ! ivfparse ! queue ! v4l2vp9dec capture-io-mode=4 output-io-mode=4 ! video/x-raw,format=NV12 ! queue ! fpsdisplaysink text-overlay=false video-sink="fakesink" -vCopy to clipboard

Last Published: Feb 20, 2026

[Previous Topic
Camera](https://docs.qualcomm.com/bundle/publicresource/80-70022-50/topics/camera.md) [Next Topic
Multi-camera/Multi-client use cases](https://docs.qualcomm.com/bundle/publicresource/80-70022-50/topics/multi-camera-multi-client-use-cases.md)