# qtiqmmfsrc

The qtiqmmfsrc plugin captures the video frames through Qualcomm Camera Service.

The plugin has the GstQtiQmmfSrc main class that acts as a wrapper on top of the Qualcomm multimedia framework (QMMF) recorder client with separate pads for video and image streams.

- The pads store the creation time parameters (passed as GstCaps during pipeline creation) for the particular stream.
- The GstQtiQmmfSrc takes that information, translates it to the QMMF recorder client parameters, and calls the necessary APIs on each state transition of the element.
- For video and image pads, set the camera device ID through the `camera` property. By default, this ID is 0.

The following are the transition states of the plugin:

- During the transition between the NULL and READY states, the plugin opens and initializes the camera device with the specified ID.
- When transitioning to PAUSED state from READY, the plugin translates the set pad parameters and makes calls to the QMMF service to create the source streams for each pad.
- The session streams are started when transition is done to the PLAYING state.

While the plugin receives a frame in the main class, it creates a GstBuffer and sends it to the relevant pad buffer queue. The pad pushes the buffer to its linked sink pad from the next plugin.

The QMMF service does the following:

- It assigns the buffers. The plugin returns the buffers to the service when they’re no longer in use.
- For video, the QMMF service sends the buffers when the plugin state is PLAYING.
- For image pad, a *capture-image* signal must be sent. For each capture-image, the QMMF service sends a single buffer.

## Inheritance chain

[GObject](https://docs.gtk.org/gobject/) → [GstObject](https://gstreamer.freedesktop.org/documentation/gstreamer/gstobject.html?gi-language=c) → [GstElement](https://gstreamer.freedesktop.org/documentation/gstreamer/gstelement.html?gi-language=c) → GstQmmfSrc

The following tables provide information on pad templates and element properties of qtiqmmfsrc. For use cases, see [Camera](https://docs.qualcomm.com/doc/80-80022-50/topic/camera.html).

## Pad configuration

| Pad Name | Capabilities | Capabilities | Capabilities |
| --- | --- | --- | --- |
| SRC template: 'image\_%u'<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><em>Availability:</em>  On request</p></li><br>> <li><p><em>Direction:</em>  source</p></li><br>> </ul> | image/jpeg | width:<br>height:<br>framerate: | [ 16, 4096 ]<br><br><br>[ 16, 4096 ]<br><br><br>[ 0/1, 30/1 ] |
| SRC template: 'image\_%u'<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><em>Availability:</em>  On request</p></li><br>> <li><p><em>Direction:</em>  source</p></li><br>> </ul> | video/x-raw | format:<br><br><br>width:<br><br><br>height:<br><br><br>framerate: | { (string)NV12, (string)NV21 }<br><br><br>[ 16, 4096 ]<br><br><br>[ 16, 4096 ]<br><br><br>[ 0/1, 30/1 ] |
| SRC template: 'image\_%u'<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><em>Availability:</em>  On request</p></li><br>> <li><p><em>Direction:</em>  source</p></li><br>> </ul> | video/x-bayer | format:<br><br><br>bpp:<br><br><br>width:<br><br><br>height:<br><br><br>framerate: | { (string)bggr, (string)rggb, (string)gbrg, (string)grbg, (string)mono }<br><br><br>{ (string)8, (string)10, (string)12, (string)16 }<br><br><br>[ 16, 4096 ]<br><br><br>[ 16, 4096 ]<br><br><br>[ 0/1, 30/1 ] |
| SRC template: 'video\_%u'<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><em>Availability:</em>  On request</p></li><br>> <li><p><em>Direction:</em>  source</p></li><br>> </ul> | image/jpeg | width:<br><br><br>height:<br><br><br>framerate: | [ 16, 4096 ]<br><br><br>[ 16, 4096 ]<br><br><br>[ 0/1, 120/1 ] |
| SRC template: 'video\_%u'<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><em>Availability:</em>  On request</p></li><br>> <li><p><em>Direction:</em>  source</p></li><br>> </ul> | video/x-raw | format:<br><br><br>width:<br><br><br>height:<br><br><br>framerate: | { (string)NV12, (string)NV16, (string)YUY2 }<br><br><br>[ 16, 4096 ]<br><br><br>[ 16, 4096 ]<br><br><br>[ 0/1, 120/1 ] |
| SRC template: 'video\_%u'<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><em>Availability:</em>  On request</p></li><br>> <li><p><em>Direction:</em>  source</p></li><br>> </ul> | video/x-bayer | format:<br><br><br>bpp:<br><br><br>width:<br><br><br>height:<br><br><br>framerate: | (string)bggr, (string)rggb, (string)gbrg, (string)grbg, (string)mono }<br><br><br>{ (string)8, (string)10, (string)12, (string)16 }<br><br><br>[ 16, 4096 ]<br><br><br>[ 16, 4096 ]<br><br><br>[ 0/1, 120/1 ] |
|  |  |  |  |
|  |  |  |  |

| Pad | Property | Description |
| --- | --- | --- |
| 'image\_%u' | rotate | Set orientation angle for image stream<br><ul class="simple"><br><li><p>flags: readable, writable</p></li><br><li><p>Enum "GstRotate" Default: 0, "none"</p><ul><br><li><p>(0): none - No rotation</p></li><br><li><p>(1): 90CCW - Rotate 90 degrees counter-clockwise</p></li><br><li><p>(2): 180CCW - Rotate 180 degrees counter-clockwise</p></li><br><li><p>(3): 270CCW - Rotate 270 degrees counter-clockwise</p></li><br></ul><br></li><br></ul> |
| 'video\_%u' | source-index | Index of the source video pad to which this pad links.<br><ul><br><li><p>flags: readable, writable, changeable only in NULL or READY state</p></li><br><li><p>Integer. Range: -1 - 2147483647 Default: -1</p></li><br><li><div class="admonition note"><br><p class="admonition-title">Note</p><br><p>source-index is deprecated and is no longer in use.</p><br></div><br></li><br></ul> |
| 'video\_%u' | framerate | Target framerate in frames per second for displaying.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED, or PLAYING state</p></li><br><li><p>Double. Range: 0 - 30 Default: 30</p></li><br></ul> |
| 'video\_%u' | crop | Crop rectangle ('&lt;X, Y, WIDTH, HEIGHT&gt;'). Applicable only for JPEG and YUY2 formats.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED, or PLAYING state</p></li><br><li><p>GstValueArray of GValues of type "gint"</p></li><br></ul> |
| 'video\_%u' | extra-buffers | Number of extra buffers that are allocated.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable only in NULL or READY state</p></li><br><li><p>Unsigned Integer.</p></li><br><li><p>Range: 0 - 4294967295 Default: 0</p></li><br></ul> |
| 'video\_%u' | type | The type of the stream.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED, or PLAYING state</p></li><br><li><p>Enum "GstQmmfSrcStreamType" Default: 0, "video"</p><ul><br><li><p>(0): video - The stream is configured with tunings and settings most fitted for directly encoding the buffers.</p></li><br><li><p>(1): preview - The stream is configured with tunings and settings most fitted for directly visualizing the buffers.</p></li><br></ul><br></li><br></ul> |
| 'video\_%u' | attach-cam-meta | When this parameter is TRUE, the camera attaches metadata to the GstBuffer.<br><ul class="simple"><br><li><p>flags: readable, writable</p></li><br><li><p>Boolean. Default: false</p></li><br></ul> |
| 'video\_%u' | reprocess-enable | When set to TRUE, uses the real-time video pad as the input.<br><ul class="simple"><br><li><p>flags: readable, writable</p></li><br><li><p>Boolean. Default: false</p></li><br></ul> |
| .. | rotate | Sets orientation angle for video stream.<br><ul class="simple"><br><li><p>flags: readable, writable</p></li><br><li><p>Enum "GstRotate" Default: 0, "none"</p><ul><br><li><p>(0): none - No Rotation</p></li><br><li><p>(1): 90CCW - Rotate 90 degrees counter-clockwise</p></li><br><li><p>(2): 180CCW - Rotate 180 degrees counter-clockwise</p></li><br><li><p>(3): 270CCW - Rotate 270 degrees counter-clockwise</p></li><br></ul><br></li><br></ul> |
| .. | super-buffer-mode | When set to TRUE, enables Super Buffer mode for HFR use cases. In this mode, each video pad operates in Super Buffer mode, where a single buffer can contain multiple video frames. The number of frames per Super Buffer is determined by the ratio of the frame rate to the super‑frame rate. The default super‑frame rate is 60 fps.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable only in NULL or READY state</p></li><br><li><p>Boolean. Default: false</p></li><br></ul> |
|  |  |  |
|  |  |  |
|  |  |  |
|  |  |  |
|  |  |  |
|  |  |  |

## Element configuration

Table : Element properties of qtiqmmfsrc

| Property | Description |
| --- | --- |
| name | The name of the object.<br><ul class="simple"><br><li><p>flags: readable, writable</p></li><br><li><p>String. Default: "qmmfsrc0"</p></li><br></ul> |
| parent | The parent of the object.<br><ul class="simple"><br><li><p>flags: readable, writable</p></li><br><li><p>Object of type "GstObject"</p></li><br></ul> |
| camera | The camera device ID to be used by video/image pads.<br><ul class="simple"><br><li><p>flags: readable, writable</p></li><br><li><p>Unsigned Integer. Range: 0 - 32 Default: 0</p></li><br></ul> |
| slave | Set the camera as the secondary device.<br><ul class="simple"><br><li><p>flags: readable, writable</p></li><br><li><p>Boolean. Default: false</p></li><br></ul> |
| ldc | Lens distortion correction.<br><ul class="simple"><br><li><p>flags: readable, writable</p></li><br><li><p>Boolean. Default: false</p></li><br></ul> |
| lcac | Lateral chromatic aberration correction.<br><ul class="simple"><br><li><p>flags: readable, writable</p></li><br><li><p>Boolean. Default: false</p></li><br></ul> |
| eis | Electronic image stabilization to reduce the effects of camera shake.<br><ul class="simple"><br><li><p>flags: readable, writable</p></li><br><li><p>Boolean. Default: false</p></li><br></ul> |
| adrc | Automatic dynamic range compression.<br><ul class="simple"><br><li><p>flags: readable, writable; changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>Boolean. Default: false</p></li><br></ul> |
| control-mode | Overall mode of auto-exposure, auto-white-balance, auto-focus (also known as 3A) control routines.<br><br><br>This is a top-level 3A control switch. When set to OFF, 3A controlled by the camera device is disabled.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>Enum "GstCameraControlMode" Default: 1, "auto"</p><ul><br><li><p>(0): off - Full application control of pipeline</p></li><br><li><p>(1): auto - Manual control of capture parameters is disabled</p></li><br><li><p>(2): use-scene-mode - Use a specific scene mode</p></li><br><li><p>(3): off-keep-state - Same as OFF mode, except that this capture isn't used by camera device background 3A to update their statistics.</p></li><br></ul><br></li><br></ul> |
| effect | Effect applied on the camera frames.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>Enum "GstCameraEffectMode" Default: 0, "off"</p><ul><br><li><p>(0): off - No color effect is applied.</p></li><br><li><p>(1): mono - A 'monocolor' effect where the image is mapped into a single color.</p></li><br><li><p>(2): negative - A 'photo-negative' effect where the image colors are inverted.</p></li><br><li><p>(3): solarize - A 'solarisation' effect (Sabattier effect) where the image is completely or partially reversed in tone.</p></li><br><li><p>(4): sepia - A 'sepia' effect where the image is mapped into warm gray, red, and brown tones.</p></li><br><li><p>(5): posterize - A 'posterization' effect where the image uses discrete regions of tone rather than a continuous gradient of tones.</p></li><br><li><p>(6): whiteboard - A 'whiteboard' effect where the image is typically displayed as regions of white, with black, or grey details.</p></li><br><li><p>(7): blackboard - A 'blackboard' effect where the image is typically displayed as regions of black, with white, or grey details.</p></li><br><li><p>(8): aqua - An 'aqua' effect where a blue hue is added to the image.</p></li><br></ul><br></li><br></ul> |
| scene | Camera optimizations depending on the scene.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>Enum "GstCameraSceneMode" Default: 1, "face-priority"</p><ul><br><li><p>(0): disabled - Indicates that no scene modes are set</p></li><br><li><p>(1): face-priority - Optimized for photos of with priority of people faces</p></li><br><li><p>(2): action - Optimized for photos of quickly moving objects.</p></li><br><li><p>(3): portrait - Optimized for still photos of people</p></li><br><li><p>(4): landscape - Optimized for photos of distant macroscopic objects</p></li><br><li><p>(5): night - Optimized for low-light settings</p></li><br><li><p>(6): night-portrait - Optimized for still photos of people in low-light settings</p></li><br><li><p>(7): theatre - Optimized for dim, indoor settings where flash must remain off</p></li><br><li><p>(8): beach - Optimized for bright, outdoor beach settings</p></li><br><li><p>(9): snow - Optimized for bright, outdoor settings containing snow</p></li><br><li><p>(10): sunset - Optimized for scenes of the setting sun</p></li><br><li><p>(11): steady-photo - Optimized to avoid blurry photos due to small amounts of device motion (for example: due to handshake)</p></li><br><li><p>(12): fireworks - Optimized for nighttime photos of fireworks</p></li><br><li><p>(13): sports - Optimized for photos of fast moving people</p></li><br><li><p>(14): party - Optimized for dim, indoor settings with several moving people</p></li><br><li><p>(15): candlelight - Optimized for dim settings where the main light source is a candle</p></li><br><li><p>(16): hdr - Turn on a device-specific high dynamic range (HDR) mode</p></li><br></ul><br></li><br></ul> |
| antibanding | Camera antibanding routine for the current illumination condition.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>Enum "GstAntibandingMode" Default: 3, "auto"</p><ul><br><li><p>(0): off - The camera device doesn't adjust exposure duration to avoid banding problems</p></li><br><li><p>(1): 50 Hz - The camera device adjusts exposure duration to avoid banding problems with 50 Hz illumination sources</p></li><br><li><p>(2): 60 Hz - The camera device adjusts exposure duration to avoid banding problems with 60 Hz illumination sources</p></li><br><li><p>(3): auto - The camera device automatically adapts its antibanding routine to the current illumination condition</p></li><br></ul><br></li><br></ul> |
| sharpness | Image sharpness strength.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>Integer. Range: 0 - 6 Default: 2</p></li><br></ul> |
| contrast | Image contrast strength.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>Integer. Range: 1 - 10 Default: 5</p></li><br></ul> |
| saturation | Image saturation strength.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>Integer. Range: 0 - 10 Default: 5</p></li><br></ul> |
| iso-mode | ISO exposure mode.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>Enum "GstCameraISOMode" Default: 0, "auto"</p><ul><br><li><p>(0): auto - The chosen ISO exposure mode depending on the scene</p></li><br><li><p>(1): deblur - The ISO exposure sensitivity set to prioritize motion deblur</p></li><br><li><p>(2): 100 - The ISO exposure sensitivity set to prioritize level 100</p></li><br><li><p>(3): 200 - The ISO exposure sensitivity set to prioritize level 200</p></li><br><li><p>(4): 400 - The ISO exposure sensitivity set to prioritize level 400</p></li><br><li><p>(5): 800 - The ISO exposure sensitivity set to prioritize level 800</p></li><br><li><p>(6): 1600 - The ISO exposure sensitivity set to prioritize level 1600</p></li><br><li><p>(7): 3200 - The ISO exposure sensitivity set to prioritize level 3200</p></li><br><li><p>(8): manual - The ISO exposure value provided by manual-iso-value is used</p></li><br></ul><br></li><br></ul> |
| manual-iso-value | Manual exposure ISO value. Used when the ISO mode is set to 'manual'.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>Integer. Range: 100 - 3200 Default: 800</p></li><br></ul> |
| exposure-mode | The required mode for the camera exposure routine.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>Enum "GstCameraExposureMode" Default: 1, "auto"</p><ul><br><li><p>(0): off - The auto exposure routine is disabled. Manual exposure time is used to set the 'exposure-time' property</p></li><br><li><p>(1): auto - The auto exposure routine is active</p></li><br></ul><br></li><br></ul> |
| exposure-lock | Locks current camera exposure routine values from changing.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>Boolean. Default: false</p></li><br></ul> |
| exposure-metering | The required mode for the camera exposure metering routine.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>Enum "GstCameraExposureMetering" Default: 0, "average"</p><ul><br><li><p>(0): average - The camera exposure metering is calculated as average from the whole frame.</p></li><br><li><p>(1): center-weighted - The camera exposure metering is calculated from the center region of the frame.</p></li><br><li><p>(2): spot - The camera exposure metering is calculated from a chosen spot.</p></li><br><li><p>(6): custom - The camera exposure metering is calculated from a custom metering table.</p></li><br></ul><br></li><br></ul> |
| exposure-compensation | Adjust (Compensate) camera images target brightness. The adjustment is measured as a count of steps.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>Integer. Range: -12 - 12 Default: 0</p></li><br></ul> |
| manual-exposure-time | Manual exposure time in nanoseconds. Used when the Exposure mode is set to 'off'.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>Integer64. Range: 0 - 9223372036854775807 Default: 33333333</p></li><br></ul> |
| custom-exposure-table | A GstStructure describing custom exposure table.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>String. Default: "org.codeaurora.qcamera3.exposuretable;"</p></li><br></ul> |
| white-balance-mode | The mode for the camera's white balance routine.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>Enum "GstCameraWiteBalanceMode" Default: 3, "auto"</p><ul><br><li><p>(0): off - Both auto and manual white balance routines are disabled</p></li><br><li><p>(1): manual-cc-temp - The auto-white balance routine is inactive and manual color correction temperature is used, which is set through the 'manual-wb-settings' property</p></li><br><li><p>(2): manual-rgb-gains - The auto-white balance routine is inactive and manual R/G/B gains are used, which are set through the 'manual-wb-settings' property</p></li><br><li><p>(3): auto - The auto-white balance routine is active</p></li><br><li><p>(4): shade - The camera device uses shade light as the assumed scene illumination for white balance correction</p></li><br><li><p>(5): incandescent - The camera device uses incandescent light as the assumed scene illumination for white balance correction</p></li><br><li><p>(6): fluorescent - The camera device uses fluorescent light as the assumed scene illumination for white balance correction</p></li><br><li><p>(7): warm-fluorescent - The camera device uses warm fluorescent light as the assumed scene illumination for white balance correction</p></li><br><li><p>(8): daylight - The camera device uses daylight light as the assumed scene illumination for white balance correction</p></li><br><li><p>(9): cloudy-daylight - The camera device uses cloudy daylight light as the assumed scene illumination for white balance correction</p></li><br><li><p>(10): twilight - The camera device uses twilight light as the assumed scene illumination for white balance correction</p></li><br></ul><br></li><br></ul> |
| white-balance-lock | Locks current White Balance values from changing. Affects only non-manual white balance modes.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>Boolean. Default: false</p></li><br></ul> |
| manual-wb-settings | Manual White Balance settings such as color correction temperature and R/G/B gains. Used in manual white balance modes.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>String. Default: "org.codeaurora.qcamera3.manualWB;"</p></li><br></ul> |
| focus-mode | Indicates whether auto-focus is enabled along with its mode.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>Enum "GstCameraFocusMode" Default: 0, "off"</p><ul><br><li><p>(0): off - The auto focus routine is disabled</p></li><br><li><p>(1): auto - The auto focus routine is active</p></li><br><li><p>(2): macro - In this mode, the auto focus algorithm is optimized for focusing on objects close to the camera</p></li><br><li><p>(3): continuous - In this mode, the AF algorithm modifies the lens position continually to try to provide a constantly-in-focus image stream</p></li><br><li><p>(4): edof - The camera device produces images with an extended depth of field automatically; no special focusing operations must be done before taking a picture</p></li><br></ul><br></li><br></ul> |
| noise-reduction | Noise reduction filter mode.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>Enum "GstCameraNoiseReduction" Default: 1, "fast"</p><ul><br><li><p>(0): off - No noise reduction filter is applied.</p></li><br><li><p>(1): fast - TNR (Temporal Noise Reduction) Fast Mode</p></li><br><li><p>(2): hq - TNR (Temporal Noise Reduction) High Quality Mode</p></li><br></ul><br></li><br></ul> |
| noise-reduction-tuning | A GstStructure describing the noise reduction tuning.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>String. Default: "org.quic.camera.anr_tuning;"</p></li><br></ul> |
| zoom | Camera zoom rectangle ('&lt;X, Y, WIDTH, HEIGHT&gt;') in sensor active pixel array coordinates. Uses the active sensor size by default when the zoom level is 1× or not applied.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>GstValueArray of GValues of type "gint". Default: "&lt; (int)0, (int)0, (int)0, (int)0 &gt;".</p></li><br></ul> |
| defog-table | A GstStructure describing defog table.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>String. Default: "org.quic.camera.defog;"</p></li><br></ul> |
| ltm-data | A GstStructure describing local tone mapping data.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>String. Default: "org.quic.camera.ltmDynamicContrast;"</p></li><br></ul> |
| infrared-mode | Infrared mode.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>Enum "GstCameraIRMode" Default: 0, "off"</p><ul><br><li><p>(0): off - The infrared LED is OFF and cut filter is applied, that is, infrared light is blocked.</p></li><br><li><p>(1): on - The infrared LED is ON and cut filter is removed, that is, infrared light is allowed.</p></li><br><li><p>(2): auto - The infrared LED and cut filter are turned ON or OFF depending on the conditions.</p></li><br><li><p>(3): cut-filter-only - The infrared LED is turned OFF and cut filter is applied, that is, IR light is blocked.</p></li><br><li><p>(4): cut-filter-disable - Infrared cut filter is removed allowing IR light to pass. This mode is used for transitioning from 'cut-filter-only' mode, that is, disabling only the cut filter.</p></li><br></ul><br></li><br></ul> |
| active-sensor-size | The active pixel array of the camera sensor ('&lt;X, Y, WIDTH, HEIGHT&gt;') and it's filled only when the plugin is in READY or above state.<br><ul class="simple"><br><li><p>flags: readable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>GstValueArray of GValues of type "gint". Default: "&lt; (int)0, (int)0, (int)0, (int)0 &gt;".</p></li><br></ul> |
| sensor-mode | Force set Sensor Mode index (0-15). -1 for Auto selection.<br><ul class="simple"><br><li><p>flags: readable, writable</p></li><br><li><p>Integer. Range: -1 - 15 Default: -1</p></li><br></ul> |
| frc-mode | Controls the stream frame rate.<br><ul class="simple"><br><li><p>flags: readable, writable</p></li><br><li><p>Enum "GstFrcMode" Default: 0, "frame-skip"</p><ul><br><li><p>(0): frame-skip - Controls stream frame rate by frame skip.</p></li><br><li><p>(1): capture-request - Controls stream frame rate by camera capture request</p></li><br></ul><br></li><br></ul> |
| op-mode | Specifies the camera operation mode used to enable supported camera functions, including frameselection and fastswitch. The default camera operation mode is none.<br><ul class="simple"><br><li><p>flags: readable, writable</p></li><br><li><p>Flags "GstFrameSelection" Default: 0x00000001, "none"</p><ul><br><li><p>(0x00000001): none - Enables normal camera operation mode</p></li><br><li><p>(0x00000002): frameselection - Enables frameselection camera operation mode</p></li><br><li><p>(0x00000004): fastswitch - Enables fastswitch camera operation mode</p></li><br></ul><br></li><br></ul> |
| vhdr | Specifies video high dynamic range (VHDR) imaging modes.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>Enum "GstSHDRMode" Default: 0, "off"</p><ul><br><li><p>(0): off - VHDR is disabled.</p></li><br><li><p>(1): shdr-raw - Raw SHDR line interleaved mode with 2 frame. Use this mode for better performance on supporting sensor.</p></li><br><li><p>(2): shdr-yuv - YUV SHDR virtual channel mode with 2 frames. Use this mode for better quality on supporting sensor. This mode may result in reduced framerate.</p></li><br><li><p>(3): raw-shdr-switch - Enable Raw SHDR switch. Use this mode for enabling shdr switch in camera backend based on lux value. The switch is between linear and Raw SHDR based on support in camera.</p></li><br><li><p>(4): yuv-shdr-switch - Enable YUV SHDR switch. Use this mode for enabling shdr switch in camera backend based on lux value. The switch is between linear and YUV SHDR based on support in camera.</p></li><br><li><p>(5): qbc-hdr-video - Enable in-sensor HDR for video stream. This mode is applicable for sensor that support this feature only.</p></li><br><li><p>(6): qbc-hdr-snapshot - Enable in-sensor HDR for snapshot. When enabled camera backend decides to enable in-sensor hdr for snapshot based on the scene. This mode is applicable for sensor that support this feature only.</p></li><br></ul><br></li><br></ul> |
| sw-tnr | Enables software-based temporal noise reduction (TNR).<br><ul class="simple"><br><li><p>flags: readable, writable</p></li><br><li><p>Boolean. Default: false</p></li><br></ul> |
| input-roi-enable | When set to TRUE, selects the input ROI reprocessing use case.<br><ul class="simple"><br><li><p>flags: readable, writable</p></li><br><li><p>Boolean. Default: false</p></li><br></ul> |
| input-roi-info | Specifies one or more input ROI coordinates when input ROI reprocessing is enabled. Provides the ROI values in the format &lt;X1, Y1, WIDTH1, HEIGHT1 X2, Y2, WIDTH2, HEIGHT2, ...&gt; for each input ROI while in the PLAYING state.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state.</p></li><br><li><p>GstValueArray of GValues of type "gint".</p></li><br></ul> |
| ife-direct-stream | Specifies the video pad activation mode. By default, pads activate automatically. When set to signal, video pad activation is controlled through the video-pads-activation signal in conjunction with gst\_pad\_set\_active().<br><ul class="simple"><br><li><p>flags: readable, writable</p></li><br><li><p>Boolean. Default: false</p></li><br></ul> |
| video-pads-activation-mode | Specifies the video pad activation mode. By default, pads activate automatically. When set to signal, video pad activation is controlled through the video-pads-activation signal in conjunction with gst\_pad\_set\_active().<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state.</p></li><br><li><p>Enum " GstPadActivationMode" Default: 0, "normal"</p></li><br></ul> |
| static-metadata | Returns the supported camera capabilities as a CameraMetadata object. The caller must release the object.<br><ul class="simple"><br><li><p>flags: readable, changeable in NULL, READY, PAUSED or PLAYING state.</p></li><br><li><p>Pointer</p></li><br></ul> |
| static-metas | Contains the map of each connected camera and its metadata<br><ul class="simple"><br><li><p>flags: readable</p></li><br><li><p>Boxed pointer of type "GHashTable"</p></li><br></ul> |
| session-metadata | Provides stream configuration parameters as a CameraMetadata object. The caller must release the object.<br><ul class="simple"><br><li><p>flags: writable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>Pointer. Write-only.</p></li><br></ul> |
| video-metadata | Provides settings and parameters for submitting video stream capture requests as a CameraMetadata object. The caller must release the object.<br><ul class="simple"><br><li><p>flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>Pointer</p></li><br></ul> |
| image-metadata | Provides settings and parameters for submitting high‑quality image capture requests through the capture-image signal as a CameraMetadata object. The caller must release the object.<br><ul class="simple"><br><li><p>flags: readable, changeable in NULL, READY, PAUSED or PLAYING state</p></li><br><li><p>Pointer</p></li><br></ul> |

Table: Element signals for qtiqmmfsrc

| Signal | Function |
| --- | --- |
| result-metadata | `void user_function (GstElement* object, gpointer arg0, gpointer user_data);` |
| urgent-metadata | `void user_function (GstElement* object, gpointer arg0, gpointer user_data);` |
| device-status-change | `void user_function (GstElement * object, guint arg0, gboolean arg1, gpointer user_data);` |

Table: Element actions for qtiqmmfsrc

| Signal | Function |
| --- | --- |
| capture-image | `gboolean  :  g_signal_emit_by_name (element, "capture-image", GstImageCaptureMode arg0, guint arg1, GPtrArray * arg2, gboolean * p_return_value);` |
| cancel-capture | `gboolean  :  g_signal_emit_by_name (element, "cancel-capture", gboolean * p_return_value);` |
| video-pads-activation | `gboolean  :  g_signal_emit_by_name (element, "video-pads-activation", gboolean arg0, GPtrArray * arg1, gboolean * p_return_value);` |

Last Published: May 14, 2026

[Previous Topic
Configure display, camera, encode and decode plugins](https://docs.qualcomm.com/bundle/publicresource/80-80022-50/topics/display-plugins.md) [Next Topic
qtivcomposer](https://docs.qualcomm.com/bundle/publicresource/80-80022-50/topics/qtivcomposer.md)

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