# Multi-camera streaming

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

The **gst-multi-camera-example** application allows you to stream from two camera
        sensors simultaneously. The application composes the camera feeds side by side to display on
        a screen or encodes and stores the video streams to files.

A few use cases that need many camera inputs are dash camera or stereo camera. You can
            use this application as a reference and build your use case. For example, a security
            system where the goal is to capture a video from several cameras. You can either view it
            or archive it for a future review.

The following figure shows the pipeline for several camera streams. For more information
            about the elements used in this pipeline, see [Pipeline flow](https://docs.qualcomm.com/doc/80-70022-50/topic/gst-multi-camera-stream-example.html#gst-multi-camera-stream-example__section_jrn_bps_nbc).

Figure : gst-multi-camera-example pipeline
            
            <?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" width="1080" height="420" viewbox="0 0 1080 420">
  <g>
    <rect x=".5" y=".49993896484375" width="1079" height="419" rx="7.5" ry="7.5" style="fill: #fafafa;"></rect>
    <path d="M1072,1c3.85986328125,0,7,3.14013671875,7,7v404c0,3.85986328125-3.14013671875,7-7,7H8c-3.85986328125,0-7-3.14013671875-7-7V8c0-3.85986328125,3.14013671875-7,7-7h1064M1072,0H8C3.581733703613281,0,0,3.58172607421875,0,8v404c0,4.41827392578125,3.581733703613281,8,8,8h1064c4.41845703125,0,8-3.58172607421875,8-8V8c0-4.41827392578125-3.58154296875-8-8-8h0Z" style="fill: #d2d7e1;"></path>
  </g>
  <g>
    <rect x="95.422480877478847" y="52.716680732102759" width="140" height="56.666666666667879" rx="4" ry="4" style="fill: #2a2aea;"></rect>
    <rect x="260.294567351127625" y="52.716680732102759" width="140" height="56.666666666667879" rx="4" ry="4" style="fill: #007884;"></rect>
    <rect x="425.916847351414617" y="52.716680732102759" width="140.000000000001819" height="125.129304966179916" rx="4" ry="4" style="fill: #2a2aea;"></rect>
    <text transform="translate(120.656871795654297 78.125839233398438)" style="fill: #fff; font-size: 16px;"><tspan x="0" y="0">qtiqmmfsrc/</tspan><tspan x="11.4453125" y="19.2001953125">camera 0</tspan></text>
    <text transform="translate(296.922985076904297 85.725936889648438)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">capsfilter</tspan></text>
    <text transform="translate(447.057750701904297 119.957077026367188)" style="fill: #fff; font-size: 16px;"><tspan x="0" y="0">qtivcomposer</tspan></text>
    <rect x="591.114483752444357" y="52.716680732102759" width="140" height="124.971199272760714" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(617.211559295654297 119.878021240234375)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">waylandsink</tspan></text>
    <g>
      <line x1="236.023651123046875" y1="81.050018310546875" x2="254.333618164063409" y2="81.050018310546875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="253.31231689453125 84.540451049804688 259.356964111328125 81.050018310546875 253.31231689453125 77.559585571289062 253.31231689453125 84.540451049804688"></polygon>
    </g>
    <line x1="64.742327395266329" y1="81.050014065436699" x2="94.821316193912025" y2="81.050014065436699" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <g>
      <line x1="401.232147216796875" y1="81.050018310546875" x2="419.542114257813409" y2="81.050018310546875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="418.520843505859375 84.540451049804688 424.56549072265625 81.050018310546875 418.520843505859375 77.559585571289062 418.520843505859375 84.540451049804688"></polygon>
    </g>
    <g>
      <line x1="566.8603515625" y1="115.281326293945312" x2="585.17034912109375" y2="115.281326293945312" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="584.1490478515625 118.771759033203125 590.1937255859375 115.281326293945312 584.1490478515625 111.790908813476562 584.1490478515625 118.771759033203125"></polygon>
    </g>
    <rect x="95.422480877478847" y="121.179319031614796" width="140" height="56.666666666667879" rx="4" ry="4" style="fill: #2a2aea;"></rect>
    <rect x="260.294567351127625" y="121.179319031614796" width="140" height="56.666666666667879" rx="4" ry="4" style="fill: #007884;"></rect>
    <text transform="translate(120.656871795654297 146.588478088378906)" style="fill: #fff; font-size: 16px;"><tspan x="0" y="0">qtiqmmfsrc/</tspan><tspan x="11.4453125" y="19.2001953125">camera 1</tspan></text>
    <text transform="translate(296.922985076904297 154.188583374023438)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">capsfilter</tspan></text>
    <g>
      <line x1="236.023651123046875" y1="149.512664794921875" x2="254.333618164063409" y2="149.512664794921875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="253.31231689453125 153.003082275390625 259.356964111328125 149.512664794921875 253.31231689453125 146.022216796875 253.31231689453125 153.003082275390625"></polygon>
    </g>
    <g>
      <line x1="401.232147216796875" y1="149.512664794921875" x2="419.542114257813409" y2="149.512664794921875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="418.520843505859375 153.003082275390625 424.56549072265625 149.512664794921875 418.520843505859375 146.022216796875 418.520843505859375 153.003082275390625"></polygon>
    </g>
    <g>
      <rect x="95.422480877478847" y="235.928427071163242" width="140" height="56.666699999999764" rx="4" ry="4" style="fill: #2a2aea;"></rect>
      <rect x="260.294567351127625" y="235.928427071163242" width="140" height="56.666699999999764" rx="4" ry="4" style="fill: #007884;"></rect>
      <rect x="425.916847351414617" y="235.928427071163242" width="140.000000000001819" height="56.666699999999764" rx="4" ry="4" style="fill: #007884;"></rect>
      <rect x="921.408841474045403" y="235.928427071163242" width="139.999999999994543" height="56.666699999999764" rx="3.999999999989086" ry="3.999999999989086" style="fill: #007884;"></rect>
      <text transform="translate(120.656871795654297 259.337554931640625)" style="fill: #fff; font-size: 16px;"><tspan x="0" y="0">qtiqmmfsrc/</tspan><tspan x="11.4453125" y="19.2001953125">camera 0</tspan></text>
      <text transform="translate(296.922985076904297 268.937652587890625)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">capsfilter</tspan></text>
      <text transform="translate(450.393688201904297 268.937652587890625)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2h264enc</tspan></text>
      <rect x="591.114483752444357" y="235.928427071163242" width="140" height="56.666699999999764" rx="4" ry="4" style="fill: #007884;"></rect>
      <text transform="translate(623.320934295654297 268.937652587890625)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
      <rect x="756.22260034797182" y="235.928427071163242" width="140" height="56.666699999999764" rx="4" ry="4" style="fill: #007884;"></rect>
      <text transform="translate(794.843395233154297 268.937652587890625)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">mp4mux</tspan></text>
      <text transform="translate(965.975231170654297 268.937652587890625)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesink</tspan></text>
      <g>
        <line x1="236.023651123046875" y1="264.26177978515625" x2="254.333618164063409" y2="264.26177978515625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="253.31231689453125 267.752197265625 259.356964111328125 264.26177978515625 253.31231689453125 260.771331787109375 253.31231689453125 267.752197265625"></polygon>
      </g>
      <g>
        <line x1="401.232147216796875" y1="264.26177978515625" x2="419.542114257813409" y2="264.26177978515625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="418.520843505859375 267.752197265625 424.56549072265625 264.26177978515625 418.520843505859375 260.771331787109375 418.520843505859375 267.752197265625"></polygon>
      </g>
      <g>
        <line x1="566.8603515625" y1="264.26177978515625" x2="585.17034912109375" y2="264.26177978515625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="584.1490478515625 267.752197265625 590.1937255859375 264.26177978515625 584.1490478515625 260.771331787109375 584.1490478515625 267.752197265625"></polygon>
      </g>
      <g>
        <line x1="731.9609375" y1="264.26177978515625" x2="750.27093505859375" y2="264.26177978515625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="749.2496337890625 267.752197265625 755.29425048828125 264.26177978515625 749.2496337890625 260.771331787109375 749.2496337890625 267.752197265625"></polygon>
      </g>
      <g>
        <line x1="897.1783447265625" y1="264.26177978515625" x2="915.48828125" y2="264.26177978515625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="914.467041015625 267.752197265625 920.51165771484375 264.26177978515625 914.467041015625 260.771331787109375 914.467041015625 267.752197265625"></polygon>
      </g>
    </g>
    <g>
      <rect x="95.422480877478847" y="305.441754270312231" width="140" height="56.666699999999764" rx="4" ry="4" style="fill: #2a2aea;"></rect>
      <rect x="260.294567351127625" y="305.441754270312231" width="140" height="56.666699999999764" rx="4" ry="4" style="fill: #007884;"></rect>
      <rect x="425.916847351414617" y="305.441754270312231" width="140.000000000001819" height="56.666699999999764" rx="4" ry="4" style="fill: #007884;"></rect>
      <rect x="921.408841474045403" y="305.441754270312231" width="139.999999999994543" height="56.666699999999764" rx="3.999999999989086" ry="3.999999999989086" style="fill: #007884;"></rect>
      <text transform="translate(120.656871795654297 328.850883483886719)" style="fill: #fff; font-size: 16px;"><tspan x="0" y="0">qtiqmmfsrc/</tspan><tspan x="11.4453125" y="19.2001953125">camera 1</tspan></text>
      <text transform="translate(296.922985076904297 338.450996398925781)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">capsfilter</tspan></text>
      <text transform="translate(450.393688201904297 338.450996398925781)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">v4l2h264enc</tspan></text>
      <rect x="591.114483752444357" y="305.441754270312231" width="140" height="56.666699999999764" rx="4" ry="4" style="fill: #007884;"></rect>
      <text transform="translate(623.320934295654297 338.450996398925781)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
      <rect x="756.22260034797182" y="305.441754270312231" width="140" height="56.666699999999764" rx="4" ry="4" style="fill: #007884;"></rect>
      <text transform="translate(794.843395233154297 338.450996398925781)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">mp4mux</tspan></text>
      <text transform="translate(965.975231170654297 338.450996398925781)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">filesink</tspan></text>
      <g>
        <line x1="236.023651123046875" y1="333.775115966796875" x2="254.333618164063409" y2="333.775115966796875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="253.31231689453125 337.265533447265625 259.356964111328125 333.775115966796875 253.31231689453125 330.28466796875 253.31231689453125 337.265533447265625"></polygon>
      </g>
      <g>
        <line x1="401.232147216796875" y1="333.775115966796875" x2="419.542114257813409" y2="333.775115966796875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="418.520843505859375 337.265533447265625 424.56549072265625 333.775115966796875 418.520843505859375 330.28466796875 418.520843505859375 337.265533447265625"></polygon>
      </g>
      <g>
        <line x1="566.8603515625" y1="333.775115966796875" x2="585.17034912109375" y2="333.775115966796875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="584.1490478515625 337.265533447265625 590.1937255859375 333.775115966796875 584.1490478515625 330.28466796875 584.1490478515625 337.265533447265625"></polygon>
      </g>
      <g>
        <line x1="731.9609375" y1="333.775115966796875" x2="750.27093505859375" y2="333.775115966796875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="749.2496337890625 337.265533447265625 755.29425048828125 333.775115966796875 749.2496337890625 330.28466796875 749.2496337890625 337.265533447265625"></polygon>
      </g>
      <g>
        <line x1="897.1783447265625" y1="333.775115966796875" x2="915.48828125" y2="333.775115966796875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="914.467041015625 337.265533447265625 920.51165771484375 333.775115966796875 914.467041015625 330.28466796875 914.467041015625 337.265533447265625"></polygon>
      </g>
    </g>
    <text transform="translate(18.591232299804688 38.859390258789062)" style="font-family: Roboto-Medium, Roboto; font-size: 16px; font-weight: 500;"><tspan x="0" y="0">qtivcomposer composition</tspan></text>
    <text transform="translate(18.591232299804688 221.58526611328125)" style="font-family: Roboto-Medium, Roboto; font-size: 16px; font-weight: 500;"><tspan x="0" y="0">Video encoding</tspan></text>
    <g>
      <path d="M47.435636574624368,62.589543856749515h-11.53779388042858l-5.76889694021429,6.922676328258603h-6.922676328256784c-2.548858893807846,0-4.615117552170886,2.06625865836304-4.615117552170886,4.615117552169977v20.768028984770353c0,2.548861094466702,2.06625865836304,4.615117552175434,4.615117552170886,4.615117552175434h36.920940417372549c2.548861094464883,0,4.615117552169067-2.066256457708732,4.615117552169067-4.615117552175434v-20.768028984770353c0-2.548858893806937-2.066256457704185-4.615117552169977-4.615117552169067-4.615117552169977h-6.922676328258603l-5.76889694021429-6.922676328258603Z" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></path>
      <circle cx="41.666739634410078" cy="81.050014065436699" r="6.922676328258603" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></circle>
    </g>
    <line x1="64.742327395266329" y1="149.512652364948735" x2="94.821316193912025" y2="149.512652364948735" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <g>
      <path d="M47.435636574624368,131.052182156261551h-11.53779388042858l-5.76889694021429,6.922676328258603h-6.922676328256784c-2.548858893807846,0-4.615117552170886,2.066258658362131-4.615117552170886,4.615117552169977v20.768028984770353c0,2.548861094466702,2.06625865836304,4.615117552175434,4.615117552170886,4.615117552175434h36.920940417372549c2.548861094464883,0,4.615117552169067-2.066256457708732,4.615117552169067-4.615117552175434v-20.768028984770353c0-2.548858893807846-2.066256457704185-4.615117552169977-4.615117552169067-4.615117552169977h-6.922676328258603l-5.76889694021429-6.922676328258603Z" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></path>
      <circle cx="41.666739634410078" cy="149.512652364948735" r="6.922676328258603" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></circle>
    </g>
    <line x1="64.742327395266329" y1="264.261777071162214" x2="94.821316193912025" y2="264.261777071162214" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <g>
      <path d="M47.435636574624368,245.80130686247503h-11.53779388042858l-5.76889694021429,6.922676328260422h-6.922676328256784c-2.548858893807846,0-4.615117552170886,2.066258658360312-4.615117552170886,4.615117552169977v20.768028984770353c0,2.548861094466702,2.06625865836304,4.615117552173615,4.615117552170886,4.615117552173615h36.920940417372549c2.548861094464883,0,4.615117552169067-2.066256457706913,4.615117552169067-4.615117552173615v-20.768028984770353c0-2.548858893809665-2.066256457704185-4.615117552169977-4.615117552169067-4.615117552169977h-6.922676328258603l-5.76889694021429-6.922676328260422Z" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></path>
      <circle cx="41.666739634410078" cy="264.261777071163124" r="6.922676328259057" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></circle>
    </g>
    <line x1="64.742327395266329" y1="333.775104270313022" x2="94.821316193912025" y2="333.775104270313022" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <g>
      <path d="M47.435636574624368,315.314634061625839h-11.53779388042858l-5.76889694021429,6.922676328260422h-6.922676328256784c-2.548858893807846,0-4.615117552170886,2.066258658360312-4.615117552170886,4.615117552169977v20.768028984770353c0,2.548861094466702,2.06625865836304,4.615117552173615,4.615117552170886,4.615117552173615h36.920940417372549c2.548861094464883,0,4.615117552169067-2.066256457706913,4.615117552169067-4.615117552173615v-20.768028984770353c0-2.548858893809665-2.066256457704185-4.615117552169977-4.615117552169067-4.615117552169977h-6.922676328258603l-5.76889694021429-6.922676328260422Z" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></path>
      <circle cx="41.666739634410078" cy="333.775104270313932" r="6.922676328259057" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></circle>
    </g>
    <g>
      <g>
        <text transform="translate(884.336334228515625 396.919460296630859)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Qualcomm </tspan></text>
        <rect x="864.085329563720734" y="384.827961260776647" width="16" height="16" rx="2" ry="2" style="fill: #2a2aea;"></rect>
      </g>
      <g>
        <text transform="translate(982.918121337890625 396.919460296630859)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Open source</tspan></text>
        <rect x="962.667110976570257" y="384.827961260776647" width="16" height="16" rx="2" ry="2" style="fill: #007884;"></rect>
      </g>
    </g>
  </g>
</svg>

## Run the application

Note: In the following commands, provide the necessary parameters,
                such as width, height, and output type. The width and height changes are applicable
                to the primary camera only.

1. Ensure that you complete the [Prerequisites](https://docs.qualcomm.com/doc/80-70022-50/topic/mm_sample_apps_prerequisites.html).
2. In the terminal of the target device, select any of the following use cases and
                    run the respective command:
    - **Waylandsink use case:** View the Waylandsink
                            output:

            gst-multi-camera-example -o 0 -w 1920 -h 1080Copy to clipboard
    - **Encoder use case:** View the encoder
                            output:

            gst-multi-camera-example -o 1 -w 1920 -h 1080Copy to clipboard
3. To stop the use case, use CTRL +
                    C.
4. In the terminal of the target device, run the following command in the SSH shell
                    to display the available help
                    options:

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

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

## Expected output

The output is displayed on the screen and saved to a file.

- If the output type is display, you can preview the stream on the display.
- If the output type is video encoding, then the encoded files are saved at
                        /etc/media/cam1\_vid.mp4 and
                        /etc/media/cam2\_vid.mp4 for camera 1 and camera 2
                    respectively.

Figure : Expected output for gst-multi-camera-example application–Preview
                
                ![](data:image/png;base64,UklGRlIsAABXRUJQVlA4IEYsAABQhgGdASrPA5ABPwF6tFWrJz+2opM7U/AgCWluzEoMyYJcD48oeElUWi0H++akI+b9h3VkUJMaf3Xd97MfFXfDeRTKw5oFhcvj7EZ1fu3oW+kL/7cm4RZcuUycvfeGxb55DJS5cpjLLvf13jvkpcuUycvfeGxb55DJS5cpk5e+8Ni3zyGSly5TJy8g+gy33hsW+eQyUuXKZOXvvDYt88hkpcuUycvfeGxb55Con4d8lLlymTl77w2LfPIZKUnaSn+LkL3ttD5N2CI3Nsh2bLXpl6TibTuoh6auiNjJetrrGmb9O3mWIRf2RHp6wOtkQxmCKLOxTTYqQuASojZHMs8FQjOhHhJk+WHfe0w3JAXBgETYqQ0zfr1M+Br9L3QWAHGA/9OA2P+szGxKjDTmHoX4L38SKgc4DnnXtcGUZJfLQ0GHLQfue/sbDfRajl8n+us8P1YdwBwJaPLWygwStjGJyimJPE+su56piTXdSueo5jAuHFnhotBMwPoicR0hHaib6f9jcUb9Z9Q4fM5eW2HvcQtQavv6JExfZBBvubeMUfzsk+fZFGiJDfhDbuSLKVri9mr5xkEyeIJ7XXmE9/PNbcYVweIui7pv/9W9AnEVja83696EPM6ZhlKaPA4nK8svYJkLcsLXBRQVIPeYjq9jF3/m1vqqD4bkQ264YmYc367BR/dUEnRV6/Pf+zf6IHBbBBgEpnN8GyYnf8v9bUJOqvG5IAtQnCRRxUpDR0LHwxgZTxB+GAfsgQfivzy69g/OB937D+DQ3l3iJkqVUjhlOWlb65M2c8SRvvA+3auH90UuTd1sk2gFzmMNcK2Ar6A0FiBwSD/+7kRCAP6Map36nO9wBDZG8xeP/6jO24pNn+eqUjXOVdVHUZlsbQP6LBdM58nXMdqul3lgJufOqIBHT+wjTmcCIrQXLBmuFT9XpGuCsZJ8YZYUbSb0OJHVEKp22Lqpo+JlArVPQkzOoLCz7hRwercs6uB1HhsGOJO9pCFJo2smLDLinNnteivm6b1nq0GjoZWIR9HhSEbOgk/mSaVgBc6y6G8fFToEaWWct7ezTBYIaPZcCebRh/IFPSr87+D59xfO9MCfkHjZm3LqHvtyPwn473VxtX2+///IJTzuNJpDLjefivqVzOckQu4Hf103M7NT00wq1MP5TFV2DbWKYzjJk1L3dvuYezxtCtJnBSkhTM6TVl99LKFxiSUQ9z0lKmcQk0UeYvjnSOY7bObTjAg0vkYwG5lDxPYmY3KqPLlsVKpUimFZFvcrix7OJ2CtO8mPULm6tEoVF5rqTIaG3n4j85SHPLsLSDR6rK3m/grx8CdhDC9qLrfyDBFEP+Qyjkr6LPw4JqOz0pRN4w53UIOR/4aJemS64VfhFGgiRprUSPgaGe8g2Bt6A56BSY+ey9okhCfsXZY6qdjyLdiUxniiZPyBeAJf7K35RxahFWhk/8fY/kShus/BAmP0aYoWiWdOJrBuyYiQp6SMjC2IR3EOsYC1b+IRDny0iJCEzfY2GOXtnkXR0T2119wLJBVh7vfwnOTsUSCc5CtL3XQq2B4UcS2MYtTNQoaJ07tu8yt6vF/nxlrreBO3r9HTTuJ6BEIqkpfi/RRLoKhslkeUfCr1ILWVe2MoOTFooe55nfpVhE3nYRHekN/TJ2eU6oTAO+DTnFUWTRg/qO2WrQFUMJILGQx4hXEoMlCyP6P2QpQU6yYZYgMAoUD+CBUUEC5flv+m2Bq7UafAH8X05Xm6VaBLoBK1EK9aq+udvVlNtkZ3SmPnKutFgeLjYaTA/n6ynAseikTJ5vGiSiIeym4WDxwbLtsyeZZsCFEuTPCbyvVn7rCbtpk687y0224ZtMxATraGS3ygA/H7jY+M6xV7IjfRX9GExDqapFeQ4q4TJv5E3Rhm8zJ5+AJQKQ+Hytvxa+Ra5iJac8kkXLr4leSJmRdYj5v4kvzpM5XcMdstN96PykFJD5lAEFG8E6s586B0aNxmGHnEzqLIQp4DCgcIl4DkcgBmSOif1JFGatq/t6Qj8L2MixhsjesUpU0sTQbmQDv0H7WRV53HVZcV0JbBJq1NcrmCfdO+iq3Qy9kWvv9N02cGv9apgX0w6na3KvIdoFdldUon/UwQ8WocQO93+br0KUr+PhqzeamOTQArImvLF0MlGuaVNcqzIkRvFa6ZS7ttIogQ2eRCX0188AfQ0pDcF3trI14cY7qag2kBFxk8iHaYLV7IbthwM9a6BcLR1ZH2HJChqLv+VigYdrsa993IsfyczcahZPfaF+yt7dU6GXAB6riNmT8DioZSsdP8M3VJokj4TWsgAuCcrQS7+o9XxcjZrpc9kaWSsLDucnzOqBlk/p+ynG+pOSMxm8Mnke3omnfB+7TwsKiv4HSN7HqkaVOa2sOsBv1ETKtOOhct9e8QJ4M5l3D5yp5kCbmcx9OWnoZtKNs9i/TomsW2vPqPWCoIj+M7Byavibxutczzpi+HX/KBlJNxqcy9VaaDP7AV61/NEFlEZPFQZQa1B3nQNXQ0l7wnc/eGbtRk07STtgelvdaYFtYOD4FC0xvJW/qRlQja3E9V2//mTOYad8H6htsQgrCliaNHGvqsWgaByEtTt1qGDAAsaUnmYR5T7V9z7PclqZ8RwFafF23tEJ50xacDKlB2s4YpMlc/6+OKI+E9y5UUqkezZ9Wvd5xE9yo4MgK7P0nI9a9XUv/KWoOLDX18Rvz63c+sMghmtPXQystTySKB9GugY6Eyf1G/OYh4f+NiDabkOfPKDH03L8j3kyBJgwI8II2MUkyUZrPZuPOL39NUZgNdEBAXaYJwO0NBV61Xy1ZZdsVyLazSM1ht81xHxZ3G9V2DRbLF5kqtqJNNCKFL2z2Y3sG6hIOG41E7Gv/IDkxg/T5Pax/qZLOdNOjOnow5c3EaT2vNtdxizp1Th/Ws8/rx07SP+EpQRmTXD/iNHtZ05ikWENNziakL8zKbqI0/JlJjX198ARFgaYOjeN3Zx1xbQyEZ66H2MxTQrkyfm1D5GzXU5iCLqqYNsUWVX8tHdeDS8o3wdLpddbmnXcGft4On3byTgqJAGl6KN77OiS/WjC3jgZGQrabGeaKdmP+sfFDyoQyp2zMqcX5fDHcHSW7BJBqR8NxTR9JUBrYVRQBa/mpwSFiXSyeFGjyKOiHULQCSOQSPZllbNV2gWgQEYbUjNZ2XzK06J5WsLlrj+HDyH8zA0daZcAD2StKdfbadKVpJyhAwEmqkai5f518epmhg9UJVqf8RdBfqgMIyyC4IjjaGNtxqlfpkVPcArKAuRVN51/rF6ZlnEVVf+rJUdECTBL+axcnUIlQ5HjYzDADGSqH/vuclJjFEsepVoTLUEuufbWXt9oM6eKjFM2ROdO1uX6dF8hIEUtn9/oh2dvbKawJEXwyGwgqnyt5jDxsRLe1NoBEphYMLG6shLCyXFb9ESwmaEl6zKJLrAJ2IWN2J4sO6nj/f37YUai1SlSuRU6nL11ssBwIVUWZwocOweOkxtmBg5/+RkcW8DlIeJG9zmKUKsdLu0xnFgxl7Dj2sFe2KWmUjSk2FdtFL9bk4qo7B1utdrpv+e+qR7kD3UXEC0hPvMfgEdPR+60TG8tg8IKhccQpVzCu9ZO9m1L6YVEQXp2HPqw8kC6tXiPznjzssaSCR1tqwkY0LBNfssuyuum+egAAr3rJIMfUNmX27Kp1CbT1mjaMkY7qPbHzGgDBK9Eihh7nhKbKW6p+Wt5ov45dtCmiA6C+XGVPtcDuiIc7CQRskWSSdFrH/znM6mnuiUM7FPyVKkpyL1qxWywNmoOY1PLi3QIVZsMx+YtcnhuEatT2vesMHi1PU1Wa0eHwVTyUS8HyO0d1QBogwWVVT/WEZ3OKTRRAlgZDoVkIG+69vXyonH2wyMe9KIuhPdTwpAzO5n0DZmSCOYf41hvEYx6dhWkNdFMuevA6M1LYtTm/6Q+mr0x0w5D6uiT501PEI/2HzXa1I77blJwuKAc8wQ4LhZ2KjqUbKNUwp3hvMfvy15Ecvf0HywhkpsiIGW+8Ni3zyGSly5SRr9LlymTl77w2LfPIZKXLlMnL33naTs8WIFP/y5dy50xMUyS198xAiBlvvDYt88hkpcuUycvfeGxb55DJS5cpk5e+8MU3vyjTl77w2LfPIZKXLlMnIgAD+/GBgAABs1wFw3pUaEAAAAAAAAAAAAAAAAAAAAGZ9ef6u4OzaTwx517mLeSaP/9eHOcj8UaCFVC+R1YwvcJel6MYFBdGwgHW+pus3CIDhMuPeMG0ukHAc4tm7IVeCkKKxmIzSM/oBgZwcTbfMZ473b7xrlLNnyZpCGu7odCiPk+4zQqu4KOHp3C5DevZtuDx4mZInaCapGaa3vz9kJ3JpOjbhjRkbQ0Qw+oJXHXU0IEWLYKsq8JyEZXU7tYGWOyziebNynfj85WRHjUH9sR29EInt2hsnixU2GkuD4SplFdhQZulwJoeQ2d7lXZXVgsqXZbheDaRoeZQ3kD5HxJFyP1gHwzLQyOHuEfnoCGIbLiRuQHxx5LDX7TTbMJxzWlKgspPksKeXFO4lRXkDm+/KYTxbW1lYKMlBrAlG0IMmt2Jg2OnLVnWERxXjIC3uiiSSO5/LmkUCuIdWpJKn/VdbcQ9Xqc6Roz+X1ox98mKcdpTbhoU/9uK+VA4i9cLKjpAKoJot51zwadq4iyEHzB3OBcFlOJMDqkDPjUVS8tlbO+7+XrQrwRRovhCA3a5MZK2VqouF9z7OwGxVuZCrgOI0QvnxwbSyTBIHJgy71MiwjO4aS3VAtzAgY0PzVanxWyWKUYkWVYBsDznN+OR2SdzyVO5byBnIP9d7jSiIPEtK914/BZ/bdWKbQcCoZWxPTiDsNkqlnwMN8cpgQuAo5dv+df1bppXr9CV3Kg8/dpMbmJ1KZ3h2V+2QbEYXOhxpf9i/BC6CHXSRFvD7FxjhQPyDXzA/vzxQ+fbKLDiRMR/PXnLmKp8g48DU++RNBh6m02lR+B+z1wP93rzy89wIPHoVRdYqQLY+RhWK4y4hQm45MU3/AY8ljjnU3j/ehG6j+68u/g8bZj98FIgo70Xtr5m8DSRl0LgjpuX6IrzbIQZZhWBNfSaS9sH2YsODi5wCnBKFtMhwuobEzJFUrqB6F6hjd0TIukdR+TZczb67vSBFr11W8l7kdK/G8GovNSEyfIBxt/TBINU566qDfwMo4bzhsuUCEA6OLFxEBxxID0ew1PStUbYY+MBrt84k4c6BLL+yl7IIZEAFMtKrHxpsuvrRJjAwtqedZuB4vkxoVjO0dDAQo/gokpoLRKfeoZ6CYE3NA/nnfsXcarBU+xa292YmlIpw9iIrczUDBnFb2xv5atFm3nGYr211iE+M2rDVqT7GhFs66ogznx/551ntzhOkZHxmVtvgcvCB23FaAlQeFknicM5zBjcGLBq+b8dCT5k11OGSkGV4NJijOKlkqU2OdkjNCIV2PHw0juXWso6NxwWFRfpfMYJ0/1LUFUwB4NFVuOqudqhpmBf2GOInyVbLzyKFkQfHD3eKjTksegzYEvpzVhCXwqCj4NTSh7tD8OFGZuLSrH9D+xgf/dMjm8C/eyi+2jEKFffn42G+KlZXIAMTm65+JOed0tLmgkaERgGwZ+y/YzukFj88abAdknKh6GOKtHsujxwyZAjkqXGmdyJjXGtr7sakNIdjdM4UnKFCaCzXJpKEwd/q2Rhm5nR+aoudJOzKJVwKKLFEN7bY44DmgNG/tMwN2oXHCa2YWF4F/RbeBW1HvpLzLAb0GSA2kC3y6gZu6/ZO1QcH6u0YCZtWWHECDN2HucE7YV7blSzdNMWiK+4g2kHPhbGhuH9bxiTRevxDyTK02eh4wJD34fBoArbK7jecs/YeRhK1xPE7lFTg/CeiRc1hNm8cCsSCIBcvouI1g/Nm2NW8D8IserMPsGdy5J/LbZtZZrC3hCRdmI/RqMJyhFiEyhypnfd8NCFmiPdzeGwxRqHj5v6JX6C666Xj3aKKHe2EXh4JP072PoW7keTmsBKt+SaKDAZ0A6Dw/WB1vZ8grzZ1cw+EaxZhaP91iA7Y5bKbY1skubE198sE+26Zohfe5l438IzFO77HXiLzmzKDmt9pN3iD5gCp+3XfSHq7HdUH3GCcZueENR0DvwvFGIYifGXBsVQBSjSZjO0xJAxJWESkxjvc6BqmTwcxHpigo84hMEX+bwp6SlQ/dKnDhKfiwwYAqyxvEamowvljOSQJZX+Hg2Zi0ddd1sIWjqu75nKtfKGYPtuoTj1a0uAnxdYUUuK8yjoH59HVXwYCdYV0NFZv9HdGqRnycExtZqJLMyenhqmpO/WJJhsmGNVuW+2trX+r/bZkyo3F5SbwMKrXA6LiHyhsLcrPefTeyyBNqAj/RRkH8KiHAYDY8d5HIdovUM+Fj1vA3jsxW/m4yQ+XwY35glmyNz6jfgdUBi1+8QuasOQGteMwcr4egIwGnOiVH40em/Wfh1wFEJcQVd8htwNGATfIZY5SwIkvHvK0dQnmmnKnvBkA7nwCIhFA7dC8J3IBV1Bh/l+0G5oZRIDEODTFo+R09geQznmFAAwJXaNPtZwaXQDoSy27l7+d2YSNrzOFWS4wcWKwT7j8SLcQowA6DEpfdTnsia4F3SSs8wfLt9wWs508hjRSlZQiVi70IhHnJNdNbmfPwtmr9gPBsppr+mf1AqWKRMU/zYHFYS+aFi96QtPvws2GfUXiW23t600UPhOiM7DwnNehLflv5SVLo6lo171G6Bl720r8RkMgxSoAy/aCKWleNftC6QdaAt1ho80wjTvyb2ph3gyioIGcDHfjazpAKcIirS1fww1r0/bMUfTON6v3HcFIORg9ezZHl73fDeHyJ9KibY1XNLuQFbyGMO1AOVPtcpgJpwCcro7icrUXyjV2lQ4MXybJ1IClTsR46PGZMgeHF1ozSnBKQ47sU4zDCZaq08NXids8bTQgGuZ84JD0DF+eqPzAkuu/s70AByjhgsU4jypWv1WCw+arTGIKHn+VVaLHzIOrS0qhleaPSCXgVz5A6sN5kTiW2RU06uNGVQIbXkj8pLBqfAXceTNrVkT/E8LmLhP5J3DZrgmFxKFlE6RhjMVHXL33E/hE2jfiPoKs4kWw69iyOIimkouk+4kJiDT5n8RjRTAhm155XImNxk/QJxjfUnPDU4q4hABVcAB9q+6GlKV7jLor27CLz65qTOYl2Ap3BTjidubo5dOimqx/l7vhhszNdsLEefOCbK8FZCwzIjs4bcTGJ3z1FgOKpa9q4PGzilbz1D4jzFg11GTOa1t/cvBCY4NwURnmuQRsg7M0IKQoD3swW1/pPk1Hv6kZYIbSkdVnXRNDmIEVifAx0mJ72FUREqzCF8/7Z+ar6DoJ5fEIiSS1FWwrWqKuKwmwUI4gw3NWOXt5bdr8lMrWNPJLbvzdDzEoiInA7vekfcBj8A66upEa1pAXXtGOSoXYac4+uJI7WhkLhiVkZEtpvCtu4zIBJb+wTsq3wb/12NkDbTzMsmBSKDoN6cxawHU5GC4SnhdemadSZxXGIpwgSq8ICSeQlDLV1/Mf3VSDicvfl3rdCFgMTScrtClKJTpG19dsngkgB2GmyyqSVyU7Me1jEaOn+hOckNjfJmZ7QrKL4d6AaYyPl4CnGkgXHNFbp3CWfHYk3aeehV5wVgpiCB1CdgEQ3mwm8iw4hraAAA4nSAInuei0l6oj5+ZERI5TjBEbTLAn8NRVR0pm617oDhs9lvrJeq37skzea7FByxftQU9DmsToy8w+WMfI3ttwbyrinuHh7rIq9KVaLxpHvp2CtCII53bM56PwsTcf42CEsvb19MsMbfZDmJckJtuK2Br+CNFftVmCpbRrWrAmbGR2DCYJNQ0RzjhnBqEiri9/HWTO2FhtaoGT6i9sZQ9P3iuKbYhUY1WKUBzMIhW9OTq3RSpJu1/jwNdRhWZZYA2gqcyuXiRXvfQsZIvj8SfXXmaRDZhOxYfqdixdcNm1YZfmNm2C53NAQMRB5+4LhXOHNuIAle5GyX0cE0CpWEsB0yTAhAcFiQkXKrEyu0jLIKNjMMe8/p+g+uGmo/N0gb9sMfC0t0Dn3l/8I0nVxzzGO+Xc/BDF7lA4rVTpMNUQ4i4DGN1zs/38pm2SV/gsLmW/EQyO4Ik68isYTKSRq0WJMrqGAplPLUGNQkwqeLP1GvGv2VEf3CNIO3Yui9rqWyO3o3LWe6DD6/z57fcdhHGf+2ttYr0nGk/C2zTeWr7VtAVFey8ccvxDEWrXjdE/ocWwYnSHCwQcYXEFkF2EhPeGk8wPvj3zIkijQqFnLaVAAzPx1dsI7fU4Kvd+DX11jmQzJ85pIRF72N4FjiWWEirGDBtt1HoTL5H8ou1yCtsTolgAn1OMmVeJAotbWEYjDKCIe/7e/9miBzgPvv6B5plg7l/fCWrtw4T9LhctrSQmG0xM+EAOcn9F0VnfoLiwf7Rh6bJEnAXiGCBVaZUbhkqx46rdJmn14dbj75mf5Scvy31jXDKZ2q1yxctwlUoOiFHwoNkeaqFztP5QX72WLQKG+Uh6A1sHE1wSedxZSlX2Hz4N/4c/AsB3E1t9kBitDRA/IHgGKk1jcrBjtKEk7VPYywnQFHkMyJUKU+FHUDXQL/5tPYGZLSGiw+FucYHCk/QHhtnhZQIbaJ42UxmCaYhJIp3tMHj6erurpctdX13uyolPBNn1yjHxWSNYP2jaTD81vCZD61sygbAQVI4fXOkctUvWbvh9TwK7WK3h9yxI3atojrPUizgbtVyqgVXWo84YwZCukKVtmOsxBDB4uF3nMimKOWiQuOD/zDRx7zVlCsaWRDxtDMNlkI+Rt5QcqhYT9Egjvh+Cwt3JveWeyGwMf0jT01wRg4SfF8MTpf6HYLi8/0maLwoETQ2FR6bwTNVhHcmIxT2QK/z8LxUgguTvOkx5Sfp1r4hEVTvz+QwwEuOnK9nPF4PGHLd3h6Werm23xWrMxascOwb5/ownD/Tbvc7xBkkLhHxuNu+TlmbpA14GXJBLhstxoNILedM8sje0VNd03+Ooor6eTk2y55evWoaMmLh6MEkssCOapJhFR07VnupGLUV8bhiBnU5l+kE/GxyNsqzxFZKR59jJEmJO8VACiP3Rh/kvjim4XzvM8AfGUwtIFG0JE6pmgiGefHN0CXNRExZAXKlUTiFAKcMQnEO5a1iHdTVHX33GOKXMk88YITE0ZOLwfep25WpM8voi5JY57IbQeUd/+GQEedXs6DY9+Q5F5bfilajZmaKab34eEM8bgn0yQMiJxnDVRBespocBXr+Voq9xuEbcib65Pguqf2gMMfQiKABUzUvhEhgnKkjh03QznUR93HuV3/NFREGUFoMF08ubyY3Mm6ZDzccBdNFcDGILqpSUuRLwE5dPHEHjzq/w+jURvLBDmIAVKREI7QxUXmWOBiipXqnCe1Rybjq2b8h29pa8SN+tfW9d+CHXoO8NIz5w9Z6Y+f7Bz+nLZzwGjcZNHkLiWKNBJiiuiGKod7yXam8uOjiClocAojtIrMSGgyT/uaTT/vFVfYpw6b8Rn9QfAy6OUXBM91c+xw/71wZyQXcFcDLez3p5wJ4glZWrXBaPZDTsuHNmPZkuB3/IEzqbVZsuoctkOaNw9j3qlps1E5pb0neyzqHN2u5vFSuwUbaXtHLmptAU7vgnGFQWPA6MFQVeI+R8GrxQgMIsamxvfElffTEp05kajjxJvWdEgrjOP5F/rKamsUY6WrZHEDEMl85izprCNM6IDobs0TIUciKjtNfikpDdcnyxatZNsPtm9Cy2ZK4VozjSklgSIPimfOy87eRdF7O6GIPPs/aOF5zq2FDOiM2uisS2t4Y6+Vygnni6fB15Uo8K+RLNSEp+7bsP3qepkSMjeef49VoD4u57qtounnrN8pSeVUihl5rAX1qcf5CtvLdN3g9Ji6DJrfDroXdsmF7wHxad303f88MkkZ3WV04cJLGu7GbsdM3rwzTSnAymNJvVgaZg2wZpSKBH8V5ETH/tJkI1jfJy3wmE8BYEqT6WN+cyENKpKvSQxnjqzB14mxr/gbwmqvSiod0mDdT4leEOwb/hXXlRIquB8nAWuDrXl40WyLowofwlJ4ZdzdgZoeAD6o8KRlys3StWxNQSCL14JxGAU6H5FcKHCrvd7TAt+s+3FKqJhR5kq1EmtcnODly70dkRSC17sQkVt5tKIDvqJQ6UV6K1g3fVO7PeZXEBkepdclrpqD7cLYn5SkPiGk5o/dqd7gfmHq5pK1raAAFzOnaKWjVc7LvQZ8+8gQaA8YY1UOoox/XufKJ072+DpLPKFWACsTEoKsSEzq0iLUN6O/FEJ4iT4MiBaCZyecjc0KJzxkjdGR38rCg0PmsPq2U744e2oUZcb/ZsA+E14GL/QuWd2LImXce0dYlpG/RcYIZB6Zvg1f/NvE8bWkJFtFR+5EuQO0+kGk25RY6Lsg514GqMuknGP/Q/AOvzWahSOEBUNSBCi3ftgZqUHbn80Gow8SVwh1Y8+wLiuRiINp030gcqfr8CkQBFarHqrVXHczpRm/YPHFo7GIL5FfnOeSC4PUmeiDwmwsw+V4tX0NwwaW3NbcNFU984uxJVEszwsO0jVdyFd/vsTH/ZmhZMNhFRwU3b/UQC+uqs0+RLp2thoNhhB6hJl+O6DNVmFROqqRcmWSg/+fQiJi0iw9foLxTXpWbsKC17BNU03yq27Md659CQiLXGKkurITd+gEBWIAfAsGFe1pDDKCajLq3r3BLUK33FGZIw4sNqGhjgrYouJEH/hoGL7/buiMacGiruRFe7RGy6fZyu6mn6SrP0XBIGugJZjoM5IxrNt7JZxGYpK9lRiPgSOopXH/8dmOkCEqGZOGgwcGMysK6syMd8ftoip94jIGf355bOPAFDxxkLZXhfyuRSbk5AsitdAisJOS91WEVB3D1choD/PcDlGnTqGi9jZ0jNubH/nX9sKVUqiy7R3AOnYZygP54hrpgX/FHJVF+sUL7clh2zxN5rPcWuN6rhMPfo3MwhnGwMdujIyj450RRbwU1CObkl7oMHrUt1BEZ3vE1z8oF/SL06o+RJFgjU/aglsgd1gKlWGVOitCKm7FwGIazKHQ4UjzBgpBTzYLyGnQ7HvoWufipt6Cln1XZ2XoOH+YXwK8zmbMNfPdkfJ/vrw3mHCesk1KUNepL4K79VuYgOcZXhp9onzJyaPD7J2yYP3ulIecSca6uaNfohhyPJbmHP/ZWaaZCY/v2kQSIwRfCryfWw52vDOOFzOoS2V9QOFg2fAPqMkiN40HTgqa3A4ImiVPrUzumtcLsczIw1ZBONQJAVCgQn5Wm+1qAEnvXrJsfsMZpr+MDKICaTnsNU8Leuna4DhSNGjBnXZVb0eVWhIMCc4RYL0hiQXcCLnFwDTEXZ+TpcVAHkeQVu030moTog45W/UnMZx12a13nRwtWvCAsws7ttoR3hAuw8xGtoRG3ZZbC/GnjMW2uKiHCoo6R9RKUGS7J5+hc9ndK4wVASg8PwJw+I58AD7T5+n1QAlxvuNZiqZ1nRFgzx9JaX7m4bL/JLdVLyWUVCvk1acrRDItYElC2HxlRTy80YiPdHBoD1fvRTjKRAoY+l0kh/XTMfzJlevYVRSpvPPiWV/a2Cs0tA8jBz9KSDtU9dz15WU/BYJGeyBB1EDrtd8KzIZehX3zodqdRojqxsaXA0rHJsqwDBsickzz3V0J3lABzbYj5ZB4RCEkTNhJpZDvW4gWV2q6y3i1A0AZkmOFNP2upwhANAWY/BBLP5aFFAWA0sPDlMMY74DwQSW8iUjGbiVxjHuo6Xx8h3/1+co71e7b/rAArMFcwGUvv+2GiZJiEgTMUqIIWTVneQEPIMaG0ZLNeHnT4Xm21pcwXeGTGZyMuVMM4cax5lWt5WhsZQL/0WbMGfHGV+YmGrWSUesvWS2zK0RzDhIqA+jPKNQb43NxAfgRh9FWflfuxC9H2Ci55dEs7h76cXXTwymPTmy2Ost3UuBVmcvkqYPi7mAvJVEfyynx7yQ+d4FsURe/pfy4XXZe0p4ByJHHD/1wCjw0bY/9WYig3cnMLPl7I6cdk1+i5ifXLB0AFzddTut5PaB611kBSiPNdKfsx7fuXofaG96CnytZIMtn/zxdHvK6bEGKkEPL/a/Xp2ERf9nhIkJKQKgQCen0Xzq2hRTom+d/cYuAww3Jy88LSb10mTfNsdFIXQakMth6Te7EZfkNEMK8Ej9+LoItX8iCXAlWXFayqQy4FSe2LL4U7J5Yi97FLAFqZSzUIx8b+ZTQZ5zK6brW1g1iymvcRU8D2iEORtsopxnjGDe0xJ+LzeAyxiqaudsNhZVzx4wSI4EyGOMrRgFkUDA8Q3bhcIh3VO77/uUTE2fEzFo+lc/qRZMTSNhmKoGEUOx6BLUS4dy3rqSxKlX332d4MRzz8d4w6SZiRkAypXzczmV4WSfx2WAgEF8KDI4oa6sOKd9b4Y6ZEohCtxA0Lm+XGE0DlTOG+YZnfpD/VeZIbmUQKpXL+5FPdlXM5ir9BzCXbwQnN/bmHsPzgjMGZ3v3StP8QJhWopCzAQVFHEo8m7zNOCmTazfNNvRGccTz7Z/8HIYDhuwuX8RfVVDX3SY2+sfj64EFQCIKFPH7jgqHlDHw4rXac+pXS7ninII7SWTYBXZMwrkwwgbJ1gp72Uzor4tfHwdh51QE5/LDM67T30M0lD3E2r4xND8zOaaoU0O+6JdowpQ0AuCJLINucRYDrwc3Z1tY+utIbWlkfcMJsmHRqqaIigeh/q3hoa44OK5tTMJP8AH3dIyhbbljkT4Oqz45ytJZwEUtWyFWMCBGBU81RW312eNTJMWObRUumfdzcFLwh1M90Dw8Mk971z/Nv6QfRqLzc1Y6w0G4CHxT77zH04+SkU3Fd9RBrhKVI/2Cxxp8FOFU1sQGpka61vr+oGRuqaUiFINCMyM6nxiywpYrwNJ3pqVCsq/UkxbqW/7y0u6hMi+c0emlHbUAu/PtNgC58HuoD60C2U2Sy+U3apeZ5Mk/ZVPLtliEdEh3DbtvhoscYwrF8kSmFyxudUBbZ9OIHT4EUAYxOHEwers4TJs2XmNw4zXZghp5f4w1PB5Ss7VXL+m441U3vgKmNMu9Q6ttyPwMANpN655VqruxiZUqYuCn+QW6emocExRO/2K3Rj8tmdS8LS9u4L82cwjHerl13VqifR/VqVvFkdooCKR1aZd2I1O7iBSy8h50N0Qao82hpe2HWNZljHeo9v11IxUJQCOyMnOYQknE2r38GTC0jM64uXn6QBFrhBGwc7zzJjzULOurFlOc3UHhi+wXx1Wat22ZTZIL8O294fEmeuaKoVh/BJAP/FITD1u4da3Miv5S7INDiWKar69ZO7xsdmn9U1QBwuUj3K/Ln1zmPkOTfzGzyybzxOI4Cr838Gnd34vO7EOj5GRbRNoqlM8I5H5wWE58dAkwRl4XCULNgnPhNlzZtnzSBKHjP2WramiCTMVQo+DscnJY7Qryb7EK2fvIauiddptRHZKAqadPlle0R5xGhXNnjKR2Lab66zihP+eoEY+rmmRDy51b1UH5rAz91hXX3tgeEiioqQXiGn63/M/bPhPmoqJ2cZJ/L930Y82N0cgiUXIRxdf6/cOlL35z20fTWB/L1D+8ox/6/JSj/pgesQRD9ge3equtEdJRhHTdfZdvFDJBDMRYKQjGIVxq+rD7C+MeCHPIvb7qBluZicvsWSvwrteowpDTxyVS5CLhmwg4TVWrMtJdoXJ9rtEqDTgIg1uNX6MELE9mAA7GtL2LR5LPaWD0hxs7Tu9FQq1L9mDVvHzM557u7ikXAGNfC1IxPzkPDOvUupHh0B6tEloCeYPcptFdFQEZELykrlswb6lCn2bwlpgqylvEsQBXgyx6tAa3P9lzmzDFosJod8QN4XdVBy1IJ8zxLkjBoULPiA91XkTN2jmGNGdk0lOP3wroztIi4boQSNxBwCNRLWf/l/JqwOmRKxdDNhThc2VgdS15BKciyQEmwmrasjkwZLPgNAbUF3d3Ibq6yMFJAQDk69fnTJtIJON2pflr/V8BjQQe5odlS1AuvgfQj+SX+/lPCJDyiiZs8JdodTELGdobTW7EL1zavgKdC4xp4QPmxbOuKghhF/vGnwxG5Jfy3I9fvNgMAWQdYJge5UklTtLb2UmrfuWXCoAvc5/5arn+H4yDnpPDp61GwCOnlTsG2DHBj76hHBNEo2puOV0Wd6lxmF4yGzLrg/Ii+3edvYoXeBE870e6uZnVAriKxf7ncGAdP2oGOULGB2XjCz2JPaNm7xr4QH/fPQb0Dz20HNFpeyvnN0TU1FdjR+Ul67IiAnJNU2+gxciwgo8kmpJJzWO6KFySYvFAlzfUm/lFMz9EGn0gDtLOryv/Tn//CuNHdRLisLIZQJGwV8s36pZkYeHPcz0rz+r9IfTg8DwNgzB5TX8t0fT8Eka/DgABbDReOsbszdrtBkYqCkaX8ppvozx6bHhH4BwV9GFobCupd9iiUUI4UgDFRwBQCMLwtEtgaiOyoB3TYCVKN8hnX8JJEaj3+Sf2rYjLcZNkRhFoo1kmwYBjcauvprdnXp24/Z9nH5mvdQspGNbwY8SW9t/DlDxxViMBviQcjAvcTvms8MZb6pSZ9romXZtHmQzUQOTMhjGuneJzkxpqwSGyZe85k15BdvuNt/tuZ0qvLBTnaMBD96xA/BSXoR/ydCGYUSYnhSJ8RjC0lCV6UdomBH86WGNJIGc0ud0PHBTMxKEimgRK1Pwoi3d8TR8ei8oFA6SCVctZn3co1MnxRwvkifohERkXrBZS73TQi8RlNHfL9Jn90kvQjTpw+jhVlzW044uvZn/uBnvTPMKJqTiY7UlmrlNKQWPGDNboZilnaouo7XmV9Fv2niHgqG7Hs4VuGadWT5gTAlb1NtcGmhHC6iQ/VS1sBo+6dTLQUuIqstMb4gDgrNYm6VyeSbucXx0CBSRNNMMgA0A7KhdRdyE1qVnwgAAAAAAAZ6gDcZSAX0XsuYgAAAAjxsAHawAAAAAAAxIgAAAAA=)

## Pipeline flow

The following table lists the plugins used in the multi camera streaming
                    pipeline:| Pipeline | Description |
| --- | --- |
| Preview on display | <ol class="ol" id="gst-multi-camera-stream-example__ol_xmx_cwx_nbc"><br>                                    <li class="li"><a href="https://docs.qualcomm.com/doc/80-70022-50/topic/qtiqmmfsrc.html">qtiqmmfsrc</a> captures video from both<br>                                        camera0 and camera1.</li><br><br>                                    <li class="li">Capsfilter is applied to enforce constraints on the raw<br>                                        video data.</li><br><br>                                    <li class="li"><a href="https://docs.qualcomm.com/doc/80-70022-50/topic/qtivcomposer.html">qtivcomposer</a> composites the video<br>                                        streams and sends the composited video data to Wayland<br>                                        display sink.</li><br><br>                                    <li class="li"><a href="https://docs.qualcomm.com/doc/80-70022-50/topic/waylandsink.html">Waylandsink</a> shows the live preview.</li><br><br>                                </ol> |
| Encoder dump on the device | <ol class="ol" id="gst-multi-camera-stream-example__ol_amf_5wx_nbc"><br>                                    <li class="li"><a href="https://docs.qualcomm.com/doc/80-70022-50/topic/qtiqmmfsrc.html">qtiqmmfsrc</a> captures video from both<br>                                        camera0 and camera1.</li><br><br>                                    <li class="li">Capsfilter is applied to enforce constraints on the raw<br>                                        video data.</li><br><br>                                    <li class="li"><a href="https://docs.qualcomm.com/doc/80-70022-50/topic/v4l2h264enc.html">v4l2h264enc</a> is used to encode the video<br>                                        using the H.264 format.</li><br><br>                                    <li class="li">H264parse is used to parse the video.</li><br><br>                                    <li class="li">Mp4mux is used to multiplex the video into an MP4<br>                                        container.</li><br><br>                                    <li class="li">Filesink is used to write the video to a file.</li><br><br>                                </ol> |

## Related information

- [Multi-camera streaming using Python](https://docs.qualcomm.com/doc/80-70022-50/topic/multi-camera-streaming-python-sample-app.html)
- [Multi-camera/Multi-client use cases](https://docs.qualcomm.com/doc/80-70022-50/topic/multi-camera-multi-client-use-cases.html)

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

Last Published: Feb 20, 2026

[Previous Topic
USB camera](https://docs.qualcomm.com/bundle/publicresource/80-70022-50/topics/usb-camera.md) [Next Topic
Multistream](https://docs.qualcomm.com/bundle/publicresource/80-70022-50/topics/gst-multi-stream-example.md)