# qtiqmmfsrc
Source: [https://docs.qualcomm.com/doc/80-70014-50/topic/qtiqmmfsrc.html](https://docs.qualcomm.com/doc/80-70014-50/topic/qtiqmmfsrc.html)
The qtiqmmfsrc plugin captures the video frames through Qualcomm Camera
Service.
The plugin consists of the main class called GstQtiQmmfSrc 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, the camera device ID, which is used for this instance of
the plugin can be set through the *camera* property (by default this ID is
0).
The following are the transition states of the plugin:
- During transition between NULL and READY state, the plugin opens and initializes the
camera device with the given ID.
- When transitioning to PAUSED state from READY, the plugin translates the set pad
parameters and makes calls to the QMMF service in order to create the source streams
for each pad.
- The session streams are started when transition is done to PLAYING state.
When 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 allocates buffers. The plugin returns the buffers to the service when they are 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, a
single buffer is sent from the QMMF service.
## 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-70014-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 is not 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 additional 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 | Camera device ID to be used by video/image pads
- flags: readable, writable
- Unsigned Integer. Range: 0 - 10 Default: 0
|
| slave | Set camera as slave 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 is not 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 wholly 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 hand shake)
- (12): fireworks - Optimized for nighttime photos of
fireworks
- (13): sports - Optimized for photos of quickly
moving people
- (14): party - Optimized for dim, indoor settings
with multiple 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 does not 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 will be used set via 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 device's exposure
metering is calculated as average from the whole
frame
- (1): center-weighted - The camera device's exposure
metering is calculated from the center region of the
frame
- (2): spot - The camera device's exposure metering
is calculated from a chosen spot
- (6): custom - The camera device's exposure metering
is calculated from a custom metering table
|
| exposure-compensation | Adjust (Compensate) camera images target brightness. 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 desired 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 via 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 via 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 currently enabled, and the mode
it is in
- 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 very close to
the camera
- (3): continuous - In this mode, the AF algorithm
modifies the lens position continually to attempt to
provide a constantly-in-focus image stream
- (4): edof - The camera device will produce images
with an extended depth of field automatically; no
special focusing operations need to 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 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 i.e. infrared light is blocked
- (1): on - The infrared LED is ON and cut filter is
removed i.e. 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 i.e. 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 i.e.,
disabling only the cut filter
|
| active-sensor-size | The active pixel array of the camera sensor ('<X, Y, WIDTH,
HEIGHT >') and it is filled only when the plug-in 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 which is used for camera control.
If property get 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. 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:** [Qualcomm GST plugins](https://docs.qualcomm.com/doc/80-70014-50/topic/qim-sdk-plugins.html)
Last Published: Oct 27, 2025
[Previous Topic
Qualcomm GST plugins](https://docs.qualcomm.com/bundle/publicresource/80-70014-50/topics/qim-sdk-plugins.md) [Next Topic
v4l2h264dec](https://docs.qualcomm.com/bundle/publicresource/80-70014-50/topics/v4l2h264dec.md)