# qtiqmmfsrc
Source: [https://docs.qualcomm.com/doc/80-70023-50/topic/qtiqmmfsrc.html](https://docs.qualcomm.com/doc/80-70023-50/topic/qtiqmmfsrc.html)
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-70023-50/topic/camera.html).
## Pad configuration
| Pad Name | Capabilities | Capabilities | Capabilities |
| --- | --- | --- | --- |
| SRC template: 'image\_%u'
- Availability: On request
- Direction: source
| image/jpeg |
- width:
- height:
- framerate:
| [ 16, 4096 ]
[ 16, 4096 ]
[ 0/1, 30/1 ] |
| SRC template: 'image\_%u'
- Availability: On request
- Direction: source
| video/x-raw | format:
width:
height:
framerate: | { (string)NV12, (string)NV21 }
[ 16, 4096 ]
[ 16, 4096 ]
[ 0/1, 30/1 ] |
| SRC template: 'image\_%u'
- Availability: On request
- Direction: source
| video/x-raw(memory:GBM) | format:
width:
height:
framerate: | { (string)NV12, (string)NV21 }
[ 16, 4096 ]
[ 16, 4096 ]
[ 0/1, 30/1 ] |
| SRC template: 'image\_%u'
- Availability: On request
- Direction: source
| video/x-bayer | format:
bpp:
width:
height:
framerate: | { (string)bggr, (string)rggb, (string)gbrg, (string)grbg,
(string)mono }
{ (string)8, (string)10, (string)12, (string)16 }
[ 16, 4096 ]
[ 16, 4096 ]
[ 0/1, 30/1 ] |
| SRC template: 'video\_%u'
- Availability: On request
- Direction: source
| image/jpeg | width:
height:
framerate: | [ 16, 4096 ]
[ 16, 4096 ]
[ 0/1, 120/1 ] |
| SRC template: 'video\_%u'
- Availability: On request
- Direction: source
| video/x-raw | format:
width:
height:
framerate: | { (string)NV12, (string)NV16, (string)YUY2 }
[ 16, 4096 ]
[ 16, 4096 ]
[ 0/1, 120/1 ] |
| SRC template: 'video\_%u'
- Availability: On request
- Direction: source
| video/x-raw(memory:GBM) | format:
width:
height:
framerate: | { (string)NV12, (string)YUY2 }
[ 16, 4096 ]
[ 16, 4096 ]
[ 0/1, 120/1 ] |
| SRC template: 'video\_%u'
- Availability: On request
- Direction: source
| video/x-bayer | format:
bpp:
width:
height:
framerate: | (string)bggr, (string)rggb, (string)gbrg, (string)grbg,
(string)mono }
{ (string)8, (string)10, (string)12, (string)16 }
[ 16, 4096 ]
[ 16, 4096 ]
[ 0/1, 120/1 ] |
| | | | |
| | | | |
| | | | |
| Pad | Property | Description |
| --- | --- | --- |
| 'image\_%u' | mode | Different image mode.
- flags: readable, writable, changeable only in NULL or READY
state
- Enum "GstImageMode" Default: 0, "video"
- (0): video - Video snapshot is captured with video
settings. Video recording isn't interrupted in this
mode
- (1): continuous - Continuously capture images at the
set frame rate in the capabilities.
|
| 'video\_%u' | source-index | Index of the source video pad to which this pad is linked.
- flags: readable, writable, changeable only in NULL or READY
state
- Integer. Range: -1 - 2147483647 Default: -1
|
| 'video\_%u' | framerate | Target framerate in frames per second for display.
- flags: readable, writable, changeable in NULL, READY,
PAUSED, or PLAYING state
- Double. Range: 0 - 30; default: 30
|
| 'video\_%u' | crop | Crop rectangle ('<X, Y, WIDTH, HEIGHT>'). Applicable only for
JPEG and YUY2 formats.
- flags: readable, writable, changeable in NULL, READY,
PAUSED, or PLAYING state
- GstValueArray of GValues of type "gint"
|
| 'video\_%u' | extra-buffers | Number of extra buffers that are allocated. |
| 'video\_%u' | type | The type of the stream.
- flags: readable, writable, changeable in NULL, READY,
PAUSED, or PLAYING state
- Enum "GstQmmfSrcStreamType" Default: 0, "video"
- (0): video - The stream is configured with tunings
and settings most fitted for directly encoding the
buffers.
- (1): preview - The stream is configured with tunings
and settings most fitted for directly visualizing
the buffers.
|
| | | |
| | | |
| | | |
| | | |
## Element configuration
Table : Element properties of qtiqmmfsrc
| Property | Description |
| --- | --- |
| name | The name of the object.
- flags: readable, writable
- String. Default: "qmmfsrc0"
|
| parent | The parent of the object.
- flags: readable, writable
- Object of type "GstObject"
|
| camera | The camera device ID to be used by video/image pads.
- flags: readable, writable
- Unsigned Integer. Range: 0 - 10 Default: 0
|
| slave | Set the camera as the secondary device.
- flags: readable, writable
- Boolean. Default: false
|
| ldc | Lens distortion correction.
- flags: readable, writable
- Boolean. Default: false
|
| lcac | Lateral chromatic aberration correction.
- flags: readable, writable
- Boolean. Default: false
|
| eis | Electronic image stabilization to reduce the effects of camera
shake.
- flags: readable, writable
- Boolean. Default: false
|
| shdr | Super high dynamic range imaging.
- flags: readable, writable
- Boolean. Default: false
|
| adrc | Automatic dynamic range compression.
- flags: readable, writable
- Boolean. Default: false
|
| control-mode | Overall mode of auto-exposure, auto-white-balance, auto-focus
(also known as 3A) control routines.
This is a top-level 3A
control switch. When set to OFF, 3A controlled by the camera
device is disabled.
- flags: readable, writable, changeable in NULL, READY, PAUSED
or PLAYING state
- Enum "GstCameraControlMode" Default: 1, "auto"
- (0): off - Full application control of
pipeline
- (1): auto - Manual control of capture parameters is
disabled
- (2): use-scene-mode - Use a specific scene
mode
- (3): off-keep-state - Same as OFF mode, except that
this capture isn't used by camera device background
3A to update their statistics.
|
| effect | Effect applied on the camera frames.
- flags: readable, writable, changeable in NULL, READY, PAUSED
or PLAYING state
- Enum "GstCameraEffectMode" Default: 0, "off"
- (0): off - No color effect is applied.
- (1): mono - A 'monocolor' effect where the image is
mapped into a single color.
- (2): negative - A 'photo-negative' effect where the
image colors are inverted.
- (3): solarize - A 'solarisation' effect (Sabattier
effect) where the image is completely or partially
reversed in tone.
- (4): sepia - A 'sepia' effect where the image is
mapped into warm gray, red, and brown tones.
- (5): posterize - A 'posterization' effect where the
image uses discrete regions of tone rather than a
continuous gradient of tones.
- (6): whiteboard - A 'whiteboard' effect where the
image is typically displayed as regions of white,
with black, or grey details.
- (7): blackboard - A 'blackboard' effect where the
image is typically displayed as regions of black,
with white, or grey details.
- (8): aqua - An 'aqua' effect where a blue hue is
added to the image.
|
| scene | Camera optimizations depending on the scene.
- flags: readable, writable, changeable in NULL, READY, PAUSED
or PLAYING state
- Enum "GstCameraSceneMode" Default: 1, "face-priority"
- (0): disabled - Indicates that no scene modes are
set
- (1): face-priority - Optimized for photos of with
priority of people faces
- (2): action - Optimized for photos of quickly
moving objects.
- (3): portrait - Optimized for still photos of
people
- (4): landscape - Optimized for photos of distant
macroscopic objects
- (5): night - Optimized for low-light settings
- (6): night-portrait - Optimized for still photos of
people in low-light settings
- (7): theatre - Optimized for dim, indoor settings
where flash must remain off
- (8): beach - Optimized for bright, outdoor beach
settings
- (9): snow - Optimized for bright, outdoor settings
containing snow
- (10): sunset - Optimized for scenes of the setting
sun
- (11): steady-photo - Optimized to avoid blurry
photos due to small amounts of device motion (for
example: due to handshake)
- (12): fireworks - Optimized for nighttime photos of
fireworks
- (13): sports - Optimized for photos of fast moving
people
- (14): party - Optimized for dim, indoor settings
with several moving people
- (15): candlelight - Optimized for dim settings
where the main light source is a candle
- (16): hdr - Turn on a device-specific high dynamic
range (HDR) mode
|
| antibanding | Camera antibanding routine for the current illumination
condition.
- flags: readable, writable, changeable in NULL, READY, PAUSED
or PLAYING state
- Enum "GstAntibandingMode" Default: 3, "auto"
- (0): off - The camera device doesn't adjust
exposure duration to avoid banding problems
- (1): 50 Hz - The camera device adjusts exposure
duration to avoid banding problems with 50 Hz
illumination sources
- (2): 60 Hz - The camera device adjusts exposure
duration to avoid banding problems with 60 Hz
illumination sources
- (3): auto - The camera device automatically adapts
its antibanding routine to the current illumination
condition
|
| sharpness | Image sharpness strength.
- flags: readable, writable, changeable in NULL, READY, PAUSED
or PLAYING state
- Integer. Range: 0 - 6; default: 2
|
| contrast | Image contrast strength.
- flags: readable, writable, changeable in NULL, READY, PAUSED
or PLAYING state
- Integer. Range: 1 - 10; default: 5
|
| saturation | Image saturation strength.
- flags: readable, writable, changeable in NULL, READY, PAUSED
or PLAYING state
- Integer. Range: 0 - 10 Default: 5
|
| iso-mode | ISO exposure mode.
- flags: readable, writable, changeable in NULL, READY, PAUSED
or PLAYING state
- Enum "GstCameraISOMode" Default: 0, "auto"
- (0): auto - The chosen ISO exposure mode depending
on the scene
- (1): deblur - The ISO exposure sensitivity set to
prioritize motion deblur
- (2): 100 - The ISO exposure sensitivity set to
prioritize level 100
- (3): 200 - The ISO exposure sensitivity set to
prioritize level 200
- (4): 400 - The ISO exposure sensitivity set to
prioritize level 400
- (5): 800 - The ISO exposure sensitivity set to
prioritize level 800
- (6): 1600 - The ISO exposure sensitivity set to
prioritize level 1600
- (7): 3200 - The ISO exposure sensitivity set to
prioritize level 3200
- (8): manual - The ISO exposure value provided by
manual-iso-value is used
|
| manual-iso-value | Manual exposure ISO value. Used when the ISO mode is set to
'manual'.
- flags: readable, writable, changeable in NULL, READY, PAUSED
or PLAYING state
- Integer. Range: 100 - 3200 Default: 800
|
| exposure-mode | The required mode for the camera exposure routine.
- flags: readable, writable, changeable in NULL, READY, PAUSED
or PLAYING state
- Enum "GstCameraExposureMode" Default: 1, "auto"
- (0): off - The auto exposure routine is disabled.
Manual exposure time is used to set the
'exposure-time' property
- (1): auto - The auto exposure routine is
active
|
| exposure-lock | Locks current camera exposure routine values from changing.
- flags: readable, writable, changeable in NULL, READY, PAUSED
or PLAYING state
- Boolean. Default: false
|
| exposure-metering | The required mode for the camera exposure metering routine.
- flags: readable, writable, changeable in NULL, READY, PAUSED
or PLAYING state
- Enum "GstCameraExposureMetering" Default: 0, "average"
- (0): average - The camera exposure metering is
calculated as average from the whole frame.
- (1): center-weighted - The camera exposure metering
is calculated from the center region of the
frame.
- (2): spot - The camera exposure metering is
calculated from a chosen spot.
- (6): custom - The camera exposure metering is
calculated from a custom metering table.
|
| exposure-compensation | Adjust (Compensate) camera images target brightness. The
adjustment is measured as a count of steps.
- flags: readable, writable, changeable in NULL, READY, PAUSED
or PLAYING state
- Integer. Range: -12 - 12 Default: 0
|
| manual-exposure-time | Manual exposure time in nanoseconds. Used when the Exposure mode
is set to 'off'.
- flags: readable, writable, changeable in NULL, READY, PAUSED
or PLAYING state
- Integer64. Range: 0 - 9223372036854775807 Default:
33333333
|
| custom-exposure-table | A GstStructure describing custom exposure table.
- flags: readable, writable, changeable in NULL, READY, PAUSED
or PLAYING state
- String. Default:
"org.codeaurora.qcamera3.exposuretable;"
|
| white-balance-mode | The mode for the camera's white balance routine.
- flags: readable, writable, changeable in NULL, READY, PAUSED
or PLAYING state
- Enum "GstCameraWiteBalanceMode" Default: 3, "auto"
- (0): off - Both auto and manual white balance
routines are disabled
- (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
- (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
- (3): auto - The auto-white balance routine is
active
- (4): shade - The camera device uses shade light as
the assumed scene illumination for white balance
correction
- (5): incandescent - The camera device uses
incandescent light as the assumed scene illumination
for white balance correction
- (6): fluorescent - The camera device uses
fluorescent light as the assumed scene illumination
for white balance correction
- (7): warm-fluorescent - The camera device uses warm
fluorescent light as the assumed scene illumination
for white balance correction
- (8): daylight - The camera device uses daylight
light as the assumed scene illumination for white
balance correction
- (9): cloudy-daylight - The camera device uses
cloudy daylight light as the assumed scene
illumination for white balance correction
- (10): twilight - The camera device uses twilight
light as the assumed scene illumination for white
balance correction
|
| white-balance-lock | Locks current White Balance values from changing. Affects only
non-manual white balance modes.
- flags: readable, writable, changeable in NULL, READY, PAUSED
or PLAYING state
- Boolean. Default: false
|
| manual-wb-settings | Manual White Balance settings such as color correction
temperature and R/G/B gains. Used in manual white balance modes.
- flags: readable, writable, changeable in NULL, READY, PAUSED
or PLAYING state
- String. Default: "org.codeaurora.qcamera3.manualWB;"
|
| focus-mode | Indicates whether auto-focus is enabled along with its mode.
- flags: readable, writable, changeable in NULL, READY, PAUSED
or PLAYING state
- Enum "GstCameraFocusMode" Default: 0, "off"
- (0): off - The auto focus routine is disabled
- (1): auto - The auto focus routine is active
- (2): macro - In this mode, the auto focus algorithm
is optimized for focusing on objects close to the
camera
- (3): continuous - In this mode, the AF algorithm
modifies the lens position continually to try to
provide a constantly-in-focus image stream
- (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
|
| noise-reduction | Noise reduction filter mode.
- flags: readable, writable, changeable in NULL, READY, PAUSED
or PLAYING state
- Enum "GstCameraNoiseReduction" Default: 1, "fast"
- (0): off - No noise reduction filter is
applied.
- (1): fast - TNR (Temporal Noise Reduction) Fast
Mode
- (2): hq - TNR (Temporal Noise Reduction) High
Quality Mode
|
| noise-reduction-tuning | A GstStructure describing the noise reduction tuning.
- flags: readable, writable, changeable in NULL, READY, PAUSED
or PLAYING state
- String. Default: "org.quic.camera.anr_tuning;"
|
| zoom | Camera zoom rectangle ('<X, Y, WIDTH, HEIGHT >') in sensor
active pixel array coordinates.
- flags: readable, writable, changeable in NULL, READY, PAUSED
or PLAYING state
- GstValueArray of GValues of type "gint"
|
| defog-table | A GstStructure describing defog table.
- flags: readable, writable, changeable in NULL, READY, PAUSED
or PLAYING state
- String. Default: "org.quic.camera.defog;"
|
| ltm-data | A GstStructure describing local tone mapping data.
- flags: readable, writable, changeable in NULL, READY, PAUSED
or PLAYING state
- String. Default: "org.quic.camera.ltmDynamicContrast;"
|
| infrared-mode | Infrared mode.
- flags: readable, writable, changeable in NULL, READY, PAUSED
or PLAYING state
- Enum "GstCameraIRMode" Default: 0, "off"
- (0): off - The infrared LED is OFF and cut filter
is applied, that is, infrared light is blocked.
- (1): on - The infrared LED is ON and cut filter is
removed, that is, infrared light is allowed.
- (2): auto - The infrared LED and cut filter are
turned ON or OFF depending on the conditions.
- (3): cut-filter-only - The infrared LED is turned
OFF and cut filter is applied, that is, IR light is
blocked.
- (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.
|
| active-sensor-size | The active pixel array of the camera sensor ('<X, Y, WIDTH,
HEIGHT >') and it's filled only when the plugin is in READY or above
state.
- flags: readable, changeable in NULL, READY, PAUSED or
PLAYING state
- GstValueArray of GValues of type "gint"
|
| sensor-mode | Force set Sensor Mode index (0-15). -1 for Auto selection.
- flags: readable, writable
- Integer. Range: -1 - 15 Default: -1
|
| capture-metadata | Expose camera metadata object that's used for camera control. If
the get property is used, caller must release metadata object.
- flags: readable, writable, changeable in NULL, READY, PAUSED
or PLAYING state
- Pointer
|
| camera-characteristics | Returns supported values for camera parameters as camera metadata
object. The caller should take ownership and release the
metadata object.
- flags: readable, changeable in NULL, READY, PAUSED or
PLAYING state
- Pointer
|
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);` |
**Parent Topic:** [Configure display, camera, encode and decode plugins](https://docs.qualcomm.com/doc/80-70023-50/topic/display-plugins.html)
Last Published: Mar 27, 2026
[Previous Topic
Configure display, camera, encode and decode plugins](https://docs.qualcomm.com/bundle/publicresource/80-70023-50/topics/display-plugins.md) [Next Topic
qtivcomposer](https://docs.qualcomm.com/bundle/publicresource/80-70023-50/topics/qtivcomposer.md)