# Camera

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

The Qualcomm IM SDK camera plugin, camsrc, acts as a client to the Qualcomm camera
        service. The camera use cases show the execution and display of the 1080p YUV streams from a
        live source.

For more information on the camera plugin, see [camera
                architecture](https://docs.qualcomm.com/doc/80-70015-50/topic/architecture.html#camera).

## Prerequisites

- Complete the preconditions mentioned in [Multimedia use cases](https://docs.qualcomm.com/doc/80-70015-50/topic/multimedia-use-cases.html).
- Configure the
                    display:

        mount -o remount,rw /Copy to clipboard

        export XDG_RUNTIME_DIR=/dev/socket/westonCopy to clipboard

        export WAYLAND_DISPLAY=wayland-1Copy to clipboard

## Single 1080p YUV stream from live source

Run the use case:

    gst-launch-1.0 qtiqmmfsrc name=camsrc video_0::type=preview ! video/x-raw\(memory:GBM\),format=NV12,width=1920,height=1080,framerate=30/1,compression=ubwc ! waylandsink fullscreen=true async=true sync=false
    Copy to clipboard

The content from the camera stream is displayed.

To stop the use case, press CTRL + C.

The pipeline shows a single 1080p stream taken from the camera and sent to
                display.

![](data:image/png;base64,UklGRhwEAABXRUJQVlA4TBAEAAAvLwIuAN+gKJIUxwEowP+XwhJ/uJyDDcWRJCUhHPIm/yDIxt31h6JIkppZA6cgoAM7aD8D8I3zH///823rYF/sK+tgPeyDuTCPzIHe0RpqlhIQrAQFE8K0QTDEHIAx3okdVJbYJxUl9QUUbNtu21Y+KAQhEiROepn/SEnRUhIz+ZUR/Z+Al8v/l/8v/1/+v/z/D9B3J/3te3fOfxWe8jPgGb/8d/nv8t/lv8t/Z6HBD9HgNZX8qkz9V4lH/kvQLUGsfXPLQJ42mdoSlG5LhNI3bQDyTW3QC6jzAKGsvyUrNLXDonZoestAntRM3anke0uJEMuqNrBGQumbXiOhTDu9RohlUStZG1gjofQDS2A6MT2xm7pm9sedxDZPbLM6sV92EpvCblhO1pdvP4SJqk5Q1Zmgmf1RJ+JOZLrT2A/rTmKb1J64qz2xG5YjiW26twQmT0whTN2WqM6EqdtH2GFYnYBhdYJFI7XrDXZisztBXV0H8sn6+u7Dtx/hRlYHSOpIcSZM3T6C9sCiLoR+JzEs2iJ1h9ptMGshNPsUNxNx0TVRj1C7Dea9JTB5Yjo01ZloZXQLbTOoJgbVRFOY3e2bVTVRVTusZ+vduw/fnreAGkJk1cRsZXQLTQujOlK8A121knea6kC1Q1Ntm0pytx9pqgN1Zwlh8cw0ove76tranbrJ1E3mpolQ5u62gVtYNz/xm/bu3YdvzzLSbAwjkx20q66t7TSiGml3utvWyh23lWojeWCGdFvcvee27g2ByVNTyQfsY2L3IVWXDJBu/UADf+5P7976j5+fNFIdmRqDM4Pax8RuUyOLC9E7Og+B7asq+Yg1AKG0hwGxn6YlACnnx+lSM5D6r8N3L2/015333z+/PGkmG+kGHJl0CUDKea8yOlIPFCDkHJ9ln0oEpkeFJTOemkY8kBkW1WeofQrc7gnreXv//fPLy7MMrCQtzIlVM8OiurcSjaz3GmHqan3dTDq2XQbCo6ortDPToW1motD8ATRTDyTqpsN6tt5///yyfVZhoOpEIanQPGJmInuvkt0+YIV1cztig8dZif3EWAhTtyWqgbLa5/ywhTCrc2A+MEFdXQey5+rL988v+8+agEU7UNVAWe1zvjMB04EbYdalhteZSc11ZDNQVl0L6QkmxjPTE7upO3H/QWb2iwcs7IblZB19VoeommFRJ+7v9EDoB3ri7uvWwDZsGvtheUaDdmL0liDWrs4JYlke5y0DafKQ8wChrP6mmCmbG9HtnCCW5Y6F4gF7CZBv9QGuJRDrvHEpEUJZfYYjsZ+Zt/38PHtk3nlz/8KJwb9XNMrfKvoaaX+rALJ/s8j97xVv+eW/y3+X/y7/XQo76SfgnP8iLv9f/r/8f/n/8v/l///RCQ==)

## Three 1080p YUV streams from live source

Run the use case:

    gst-launch-1.0 -e qtiqmmfsrc name=camsrc video_0::type=preview ! video/x-raw\(memory:GBM\),format=NV12,width=1920,height=1080,framerate=30/1,compression=ubwc ! waylandsink x=0 y=0 width=500 height=400 async=true sync=false camsrc. ! video/x-raw\(memory:GBM\),format=NV12,width=1920,height=1080,framerate=30/1,compression=ubwc ! waylandsink x=510 y=0 width=500 height=400 async=true sync=false camsrc. ! video/x-raw\(memory:GBM\),format=NV12,width=1920,height=1080,framerate=30/1,compression=ubwc ! waylandsink x=0 y=410 width=500 height=400 async=true sync=falseCopy to clipboard

The content from camera streams is displayed.

To stop the use case, press CTRL + C.

The pipeline shows three 1080p streams taken from the camera and sent to display with
                each stream displayed at different positions on the screen.

![](data:image/png;base64,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)

## Request multiple streams with different fps from camera

- Two streams with capture request mode at 30 fps/15
                    fps:

        gst-launch-1.0 -e --gst-debug=fpsdisplaysink:6 qtiqmmfsrc name=qmmf frc-mode=capture-request video_0::type=preview ! video/x-raw\(memory:GBM\),format=NV12,width=1920,height=1080,framerate=30/1,compression=ubwc ! fpsdisplaysink name=disp1 signal-fps-measurements=true text-overlay=false video-sink="fakesink" qmmf. ! video/x-raw\(memory:GBM\),format=NV12,width=1920,height=1080,framerate=15/1,compression=ubwc ! fpsdisplaysink name=disp2 signal-fps-measurements=true text-overlay=false video-sink="fakesink"Copy to clipboard
- Two streams with capture request mode at 17 fps/10
                    fps:

        gst-launch-1.0 -e --gst-debug=fpsdisplaysink:6 qtiqmmfsrc name=qmmf frc-mode=capture-request video_0::type=preview qmmf.video_0 ! video/x-raw\(memory:GBM\),format=NV12,width=1920,height=1080,framerate=17/1,compression=ubwc ! fpsdisplaysink name=disp1 signal-fps-measurements=true text-overlay=false video-sink="fakesink" qmmf.video_1 ! video/x-raw\(memory:GBM\),format=NV12,width=1920,height=1080,framerate=10/1,compression=ubwc ! fpsdisplaysink name=disp2 signal-fps-measurements=true text-overlay=false video-sink="fakesink"Copy to clipboard
- Two streams with capture request mode at 5 fps/25 fps:
The smaller frame rate
                        is processed first and the camera updates the frame rate on the second
                        stream.

        gst-launch-1.0 -e --gst-debug=fpsdisplaysink:6 qtiqmmfsrc name=qmmf frc-mode=capture-request video_0::type=preview qmmf.video_0 ! video/x-raw\(memory:GBM\),format=NV12,width=1920,height=1080,framerate=5/1,compression=ubwc ! fpsdisplaysink name=disp1 signal-fps-measurements=true text-overlay=false video-sink="fakesink" qmmf.video_1 ! video/x-raw\(memory:GBM\),format=NV12,width=1920,height=1080,framerate=25/1,compression=ubwc ! fpsdisplaysink name=disp2 signal-fps-measurements=true text-overlay=false video-sink="fakesink"Copy to clipboard

## Set sensor mode

Set the sensor mode in the camsrc plugin:

    export GST_PLUGIN_PATH=/usr/lib/gstreamer-1.0 && gst-launch-1.0 qtiqmmfsrc camera=0 name=camsrc sensor-mode=<option> ! video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1 ! multifilesink enable-last-sample=false location="/opt/frame%d.yuv" max-files=5Copy to clipboard

For `sensor-mode=<option>`, add the appropriate number for the
                sensor mode.

For example, for
                    imx766\_preview\_1080p30fps\_streaming\_sensor\_mode\_1 use case,
                run the following command to set sensor mode as
                0:

    export GST_PLUGIN_PATH=/usr/lib/gstreamer-1.0 && gst-launch-1.0 qtiqmmfsrc camera=0 name=camsrc sensor-mode=0 ! video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1 ! multifilesink enable-last-sample=false location="/opt/frame%d.yuv" max-files=5Copy to clipboard

- **[Enable WebRTC](https://docs.qualcomm.com/doc/80-70015-50/topic/enable-webrtc.html)**  

WebRTC allows video communication, and streaming to work inside web pages without the         need to download plugins or native applications.
- **[QBC HDR](https://docs.qualcomm.com/doc/80-70015-50/topic/qbc-hdr.html)**  

Quad Bayer coding high dynamic range (QBC HDR) is an image sensor technology that         captures multiple exposures simultaneously and merges them to create a wider dynamic         range.

**Parent Topic:** [Multimedia use cases](https://docs.qualcomm.com/doc/80-70015-50/topic/multimedia-use-cases.html)

Last Published: Oct 27, 2025

[Previous Topic
Multimedia use cases](https://docs.qualcomm.com/bundle/publicresource/80-70015-50/topics/multimedia-use-cases.md) [Next Topic
Enable WebRTC](https://docs.qualcomm.com/bundle/publicresource/80-70015-50/topics/enable-webrtc.md)