# 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-70029-50/topic/camera.html).

## Pad configuration

| Pad Name | Capabilities | Capabilities | Capabilities |
| --- | --- | --- | --- |
| <br>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><br><br>height:<br><br><br>framerate: | [ 16, 4096 ]<br><br><br>[ 16, 4096 ]<br><br><br>[ 0/1, 30/1 ] |
| <br>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 ] |
| <br>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(memory:GBM) | 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 ] |
| <br>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 ] |
| <br>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 ] |
| <br>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 ] |
| <br>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(memory:GBM) | format:<br><br><br>width:<br><br><br>height:<br><br><br>framerate: | { (string)NV12, (string)YUY2 }<br><br><br>[ 16, 4096 ]<br><br><br>[ 16, 4096 ]<br><br><br>[ 0/1, 120/1 ] |
| <br>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' | mode | Different image mode.<br><br><br><br>> <br>> <br>> <ul><br>> <li><p>flags: readable, writable, changeable only in NULL or READY state</p></li><br>> <li><p>Enum "GstImageMode" Default: 0, "video"</p><br>> <blockquote><br>> <div><ul class="simple"><br>> <li><p>(0): video - Video snapshot is captured with video settings. Video recording isn't interrupted in this mode</p></li><br>> <li><p>(1): continuous - Continuously capture images at the set frame rate in the capabilities.</p></li><br>> </ul><br>> </div></blockquote><br>> </li><br>> </ul> |
| 'video\_%u' | source-index | Index of the source video pad to which this pad is linked.<br><br><br><br>> <br>> <br>> <ul class="simple"><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>> </ul> |
| 'video\_%u' | framerate | Target framerate in frames per second for display.<br><br><br><br>> <br>> <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><br><br><br>> <br>> <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><br><br><br>> <br>> <br>> <ul><br>> <li><p>flags: readable, writable, changeable only in NULL or READY state</p></li><br>> <li><p>Unsigned Integer.</p><br>> <p>Range: 0 - 4294967295; default: 0</p><br>> </li><br>> </ul> |
| 'video\_%u' | type | The type of the stream.<br><br><br><br>> <br>> <br>> <ul><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><br>> <blockquote><br>> <div><ul class="simple"><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>> </div></blockquote><br>> </li><br>> </ul> |
|  |  |  |
|  |  |  |
|  |  |  |
|  |  |  |

## Element configuration

Table : Element properties of qtiqmmfsrc

| Property | Description |
| --- | --- |
| name | The name of the object.<br><br><br><br>> <br>> <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><br><br><br>> <br>> <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><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>flags: readable, writable</p></li><br>> <li><p>Unsigned Integer. Range: 0 - 10 Default: 0</p></li><br>> </ul> |
| slave | Set the camera as the secondary device.<br><br><br><br>> <br>> <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><br><br><br>> <br>> <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><br><br><br>> <br>> <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><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>flags: readable, writable</p></li><br>> <li><p>Boolean. Default: false</p></li><br>> </ul> |
| shdr | Super high dynamic range imaging.<br><br><br><br>> <br>> <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><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>flags: readable, writable</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><br><br><br>> <br>> <br>> <ul><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><br>> <blockquote><br>> <div><ul class="simple"><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>> </div></blockquote><br>> </li><br>> </ul> |
| effect | Effect applied on the camera frames.<br><br><br><br>> <br>> <br>> <ul><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><br>> <blockquote><br>> <div><ul class="simple"><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>> </div></blockquote><br>> </li><br>> </ul> |
| scene | Camera optimizations depending on the scene.<br><br><br><br>> <br>> <br>> <ul><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><br>> <blockquote><br>> <div><ul class="simple"><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>> </div></blockquote><br>> </li><br>> </ul> |
| antibanding | Camera antibanding routine for the current illumination condition.<br><br><br><br>> <br>> <br>> <ul><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><br>> <blockquote><br>> <div><ul class="simple"><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>> </div></blockquote><br>> </li><br>> </ul> |
| sharpness | Image sharpness strength.<br><br><br><br>> <br>> <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><br><br><br>> <br>> <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><br><br><br>> <br>> <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><br><br><br>> <br>> <br>> <ul><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><br>> <blockquote><br>> <div><ul class="simple"><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>> </div></blockquote><br>> </li><br>> </ul> |
| manual-iso-value | Manual exposure ISO value. Used when the ISO mode is set to 'manual'.<br><br><br><br>> <br>> <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><br><br><br>> <br>> <br>> <ul><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><br>> <blockquote><br>> <div><ul class="simple"><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>> </div></blockquote><br>> </li><br>> </ul> |
| exposure-lock | Locks current camera exposure routine values from changing.<br><br><br><br>> <br>> <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><br><br><br>> <br>> <br>> <ul><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><br>> <blockquote><br>> <div><ul class="simple"><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>> </div></blockquote><br>> </li><br>> </ul> |
| exposure-compensation | Adjust (Compensate) camera images target brightness. The adjustment is measured as a count of steps.<br><br><br><br>> <br>> <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><br><br><br>> <br>> <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><br><br><br>> <br>> <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><br><br><br>> <br>> <br>> <ul><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><br>> <blockquote><br>> <div><ul class="simple"><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>> </div></blockquote><br>> </li><br>> </ul> |
| white-balance-lock | Locks current White Balance values from changing. Affects only non-manual white balance modes.<br><br><br><br>> <br>> <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><br><br><br>> <br>> <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><br><br><br>> <br>> <br>> <ul><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><br>> <blockquote><br>> <div><ul class="simple"><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>> </div></blockquote><br>> </li><br>> </ul> |
| noise-reduction | Noise reduction filter mode.<br><br><br><br>> <br>> <br>> <ul><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><br>> <blockquote><br>> <div><ul class="simple"><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>> </div></blockquote><br>> </li><br>> </ul> |
| noise-reduction-tuning | A GstStructure describing the noise reduction tuning.<br><br><br><br>> <br>> <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.<br><br><br><br>> <br>> <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> |
| defog-table | A GstStructure describing defog table.<br><br><br><br>> <br>> <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><br><br><br>> <br>> <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><br><br><br>> <br>> <br>> <ul><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><br>> <blockquote><br>> <div><ul class="simple"><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>> </div></blockquote><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><br><br><br>> <br>> <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"</p></li><br>> </ul> |
| sensor-mode | Force set Sensor Mode index (0-15). -1 for Auto selection.<br><br><br><br>> <br>> <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> |
| capture-metadata | Expose camera metadata object that's used for camera control. If the get property is used, caller must release metadata object.<br><br><br><br>> <br>> <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> |
| camera-characteristics | Returns supported values for camera parameters as camera metadata object. The caller should take ownership and release the metadata object.<br><br><br><br>> <br>> <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);` |

Last Published: Jun 03, 2026

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

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