# Camera burst capture

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

The **gst-camera-burst-capture-example** application allows you to capture
        snapshots in the Burst mode. It captures five burst snapshots delayed by a 10-second timer
        and displays the snapshots on a screen.

Note: This sample application isn't supported on Dragonwing
                IQ-8275 and Dragonwing IQ-9075.

The following figure shows the pipeline, which captures the snapshots and processes them
            in using one of the following three branches:

- They're displayed on the screen.
- They're encoded and saved to a file.
- They're saved to a buffer and based on the capture format (BAYER/RAW/JPEG), saved to
                the device storage.

For more information about the plugins used in the pipeline, see [Pipeline flow](https://docs.qualcomm.com/doc/80-70022-50/topic/camera-burst-capture.html#camera-burst-capture__section_cjm_kcb_pbc).

Figure : gst-camera-burst-capture-example pipeline
            
            <?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="920.000000000005457" height="260" viewbox="0 0 920.000000000005457 260">
  <g>
    <rect x=".500244140625" y=".50042724609375" width="918.99951171875" height="259" rx="7.5" ry="7.5" style="fill: #fafafa;"></rect>
    <path d="M912.000000000005457,1c3.859741210930224,0,7,3.140228271484375,7,7v244c0,3.8597412109375-3.140258789069776,7-7,7H8c-3.859771728515625,0-7-3.1402587890625-7-7V8c0-3.859771728515625,3.140228271484375-7,7-7h904.000000000005457M912.000000000005457,0H8C3.581771850585938,0,0,3.581634521484375,0,8v244c0,4.418212890625,3.581771850585938,8,8,8h904.000000000005457c4.418334960930224,0,8-3.581787109375,8-8V8c0-4.418365478515625-3.581665039069776-8-8-8h0Z" style="fill: #d2d7e1;"></path>
  </g>
  <g>
    <g>
      <rect x="96.641639772648887" y="85.610476556459616" width="120" height="56.666700000001583" rx="4" ry="4" style="fill: #2a2aea;"></rect>
      <text transform="translate(115.173004150390625 118.619136810302734)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">qtiqmmfsrc</tspan></text>
      <g>
        <polyline points="257.97344970703125 187.03289794921875 240.381103515625 187.03289794921875 240.381103515625 44.481201171875 257.97344970703125 44.481201171875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
        <polygon points="256.806274414063409 183.0438232421875 263.714447021484375 187.03289794921875 256.806274414063409 191.02197265625 256.806274414063409 183.0438232421875"></polygon>
        <polygon points="256.806274414063409 48.470245361328125 263.714447021484375 44.481201171875 256.806274414063409 40.49212646484375 256.806274414063409 48.470245361328125"></polygon>
      </g>
      <g>
        <line x1="217.047760009765625" y1="112.94384765625" x2="258.691070556640625" y2="112.94384765625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="257.669799804688409 116.43426513671875 263.714447021484375 112.94384765625 257.669799804688409 109.453369140625 257.669799804688409 116.43426513671875"></polygon>
      </g>
      <g>
        <line x1="405.589599609375" y1="44.481201171875" x2="753.07568359375" y2="44.481201171875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="752.05438232421875 47.97161865234375 758.09906005859375 44.481201171875 752.05438232421875 40.990753173828125 752.05438232421875 47.97161865234375"></polygon>
      </g>
      <rect x="430.274310083637829" y="84.610493223124649" width="140" height="56.666666666667879" rx="4" ry="4" style="fill: #007884;"></rect>
      <rect x="264.652030083349928" y="84.610493223124649" width="140.000000000000909" height="56.666666666667879" rx="4" ry="4" style="fill: #007884;"></rect>
      <rect x="264.651988906881343" y="16.14783825694758" width="140.000082352936261" height="56.666700000001583" rx="4.000002352939191" ry="4.000002352939191" style="fill: #007884;"></rect>
      <g>
        <line x1="405.589599609375" y1="112.94384765625" x2="423.89959716796875" y2="112.94384765625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="422.8782958984375 116.43426513671875 428.9229736328125 112.94384765625 422.8782958984375 109.453369140625 422.8782958984375 116.43426513671875"></polygon>
      </g>
      <text transform="translate(471.414909362792969 118.410118103027344)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">encoder</tspan></text>
      <rect x="594.959001627179532" y="84.610493223124649" width="140" height="56.666666666667879" rx="4" ry="4" style="fill: #007884;"></rect>
      <g>
        <line x1="570.2742919921875" y1="112.94384765625" x2="588.58428955078125" y2="112.94384765625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="587.56298828125 116.43426513671875 593.607666015625 112.94384765625 587.56298828125 109.453369140625 587.56298828125 116.43426513671875"></polygon>
      </g>
      <text transform="translate(627.165985107421875 118.410118103027344)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">h264parse</tspan></text>
      <rect x="759.643693170721235" y="84.610493223124649" width="140.000000000003638" height="56.666666666667879" rx="4" ry="4" style="fill: #007884;"></rect>
      <g>
        <line x1="734.958984375" y1="112.94384765625" x2="753.26898193359375" y2="112.94384765625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="752.2476806640625 116.43426513671875 758.2923583984375 112.94384765625 752.2476806640625 109.453369140625 752.2476806640625 116.43426513671875"></polygon>
      </g>
      <text transform="translate(798.264739990234375 118.410118103027344)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">mp4mux</tspan></text>
      <rect x="759.643693170717597" y="16.147854923612613" width="140.000000000007276" height="56.666666666667879" rx="4" ry="4" style="fill: #007884;"></rect>
      <text transform="translate(785.741302490234375 49.947486877441406)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">waylandsink</tspan></text>
      <text transform="translate(301.280914306640625 49.156810760498047)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">capsfilter</tspan></text>
      <text transform="translate(301.280914306640625 117.619968414306641)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">capsfilter</tspan></text>
      <rect x="430.274310083637829" y="153.073131522636686" width="140" height="56.666666666667879" rx="4" ry="4" style="fill: #007884;"></rect>
      <rect x="264.652030083349928" y="153.073131522636686" width="140.000000000000909" height="56.666666666667879" rx="4" ry="4" style="fill: #007884;"></rect>
      <g>
        <line x1="405.589599609375" y1="181.406494140625" x2="423.89959716796875" y2="181.406494140625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="422.8782958984375 184.89691162109375 428.9229736328125 181.406494140625 422.8782958984375 177.916015625 422.8782958984375 184.89691162109375"></polygon>
      </g>
      <text transform="translate(472.411003112792969 186.872749328613281)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">appsink</tspan></text>
      <rect x="594.959001627179532" y="153.073131522636686" width="140" height="56.666666666667879" rx="4" ry="4" style="fill: #007884;"></rect>
      <g>
        <line x1="570.2742919921875" y1="181.406494140625" x2="588.58428955078125" y2="181.406494140625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="587.56298828125 184.89691162109375 593.607666015625 181.406494140625 587.56298828125 177.916015625 587.56298828125 184.89691162109375"></polygon>
      </g>
      <text transform="translate(636.943328857421875 176.482307434082031)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">Capture</tspan><tspan x="-1.48828125" y="19.2001953125">callback</tspan></text>
      <rect x="759.643693170721235" y="153.073131522636686" width="140.000000000003638" height="56.666666666667879" rx="4" ry="4" style="fill: #007884;"></rect>
      <g>
        <line x1="734.958984375" y1="181.406494140625" x2="753.26898193359375" y2="181.406494140625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="752.2476806640625 184.89691162109375 758.2923583984375 181.406494140625 752.2476806640625 177.916015625 752.2476806640625 184.89691162109375"></polygon>
      </g>
      <text transform="translate(808.487396240234375 186.872749328613281)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">Dump</tspan></text>
      <text transform="translate(301.280914306640625 186.082603454589844)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0">capsfilter</tspan></text>
    </g>
    <g>
      <g>
        <text transform="translate(722.571807861328125 239.943599700927734)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Qualcomm </tspan></text>
        <rect x="702.32081182586262" y="227.852103486056876" width="16" height="16" rx="2" ry="2" style="fill: #2a2aea;"></rect>
      </g>
      <g>
        <text transform="translate(821.153594970703125 239.943599700927734)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Open source</tspan></text>
        <rect x="800.902593238715781" y="227.852103486056876" width="16" height="16" rx="2" ry="2" style="fill: #007884;"></rect>
      </g>
    </g>
    <line x1="75.280526855681273" y1="112.943826556460408" x2="96.641639772648887" y2="112.943826556460408" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <g>
      <path d="M54.683878430602817,90.974068236373569h-13.731098950054729l-6.865549475027365,8.23865937003211h-8.23865937003211c-3.033390442167729,0-5.492439580022619,2.45904913785489-5.492439580022619,5.492439580018981v24.71597811009633c0,3.033393061163224,2.45904913785489,5.492439580026257,5.492439580022619,5.492439580026257h43.939516640173679c3.033393061166862,0,5.492439580018981-2.459046518863033,5.492439580018981-5.492439580026257v-24.71597811009633c0-3.033390442164091-2.459046518852119-5.492439580018981-5.492439580018981-5.492439580018981h-8.23865937003211l-6.865549475027365-8.23865937003211Z" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></path>
      <circle cx="47.818328955574316" cy="112.94382655645768" r="8.238659370034497" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></circle>
    </g>
  </g>
</svg>

## Run the application

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, run the respective command for any of the
                    following use cases:
    - Display stream and JPEG
                            capture:

            gst-camera-burst-capture-example -w 1280 -h 720 -p 1 -c 0Copy to clipboard
    - Encode stream and JPEG
                            capture:

            gst-camera-burst-capture-example -w 1280 -h 720 -p 0 -c 0Copy 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-camera-burst-capture-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

- If you choose to display the stream, the snapshots are displayed on the
                    screen.
- If you choose to encode the stream, the encoded stream is saved at
                        /etc/media/video\_%d.mp4.

## Pipeline flow

The following table lists the plugins used in the camera burst capture
                    pipeline:| Pipeline | Description |
| --- | --- |
| Display preview | <ol class="ol" id="camera-burst-capture__ol_njk_nls_nbc"><br>                                    <li class="li"><a href="https://docs.qualcomm.com/doc/80-70022-50/topic/qtiqmmfsrc.html">qtiqmmfsrc</a> captures the camera live<br>                                        stream and uses capsfilter to create a branch for<br>                                        preview.</li><br><br>                                    <li class="li">The data is sent to the Wayland display sink (<a href="https://docs.qualcomm.com/doc/80-70022-50/topic/waylandsink.html">Waylandsink</a>) for preview.</li><br><br>                                </ol> |
| Encode and save to a file | <ol class="ol" id="camera-burst-capture__ol_fhg_wls_nbc"><br>                                    <li class="li"><a href="https://docs.qualcomm.com/doc/80-70022-50/topic/qtiqmmfsrc.html">qtiqmmfsrc</a> captures the camera live<br>                                        stream and uses capsfilter to create a branch for<br>                                        encoding.</li><br><br>                                    <li class="li">The snapshots are encoded.</li><br><br>                                    <li class="li">H264parse is used to parse the captured data.</li><br><br>                                    <li class="li">Mp4mux is used to multiplex the data.</li><br><br>                                </ol> |
| BAYER/RAW/JPEG dump | <ol class="ol" id="camera-burst-capture__ol_jps_chb_pbc"><br>                                    <li class="li"><a href="https://docs.qualcomm.com/doc/80-70022-50/topic/qtiqmmfsrc.html">qtiqmmfsrc</a> captures the camera live<br>                                        stream and uses capsfilter to create a branch for<br>                                        preview.</li><br><br>                                    <li class="li">Appsink is used to capture callback and save the snapshots<br>                                        in the storage dump.</li><br><br>                                </ol> |

## Known issue

The test cases for 144p and 240p resolutions are failing.

**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
Camera stream configuration](https://docs.qualcomm.com/bundle/publicresource/80-70022-50/topics/camera-stream-configuration.md) [Next Topic
Camera switch](https://docs.qualcomm.com/bundle/publicresource/80-70022-50/topics/camera-switch.md)