This conformant component interfaces to platform-specific camera
hardware, and produces raw YUV images. It has a clock input port for
correctly assigning timestamps to frames.
The preview port, 70, will emit video images whenever the component is
in the executing state and the port is not disabled. The video capture port,
71, will emit images only when the capturing configuration parameter
OMX_IndexConfigPortCapturing is set for that port, and either
the clock port is disabled or the connected clock is in the Running state.
Due to limitations in the current underlying layers, it is not
currently possible to emit the same frame at multiple
resolutions. This means that to obtain both preview and video capture images
simultaneously, the two ports must be at the same resolution and of
the same image format. If they are different, the capture port takes
precedence, and no images will be emitted from the preview port.
If port 71 is executing when a connected clock is transitioned to stop
the component will stop recording data at the end of the current
image, and then transmit a packet with no data but with the EOS flag
set.
Port 72 is for still image captures only.
This uses a second instance of Camplus and will grab the Bayer input
image from the primary Camplus instance, and then process it in the
background. The primary Camplus may resume viewfinder operation
dependent on configuration and memory being available in the input pool.
The port will only capture an image when the port is executing and
OMX_IndexConfigPortCapturing is set for the port.
If the bOneShot flag is set, an EOS will be emited from the port
after each complete capture.
In order to optimise loading of relevant drivers, the recommended
initialisation sequence is:
Port | Index | Notes
|
| OMX_IndexParamCommonSensorMode
| Query / set the camera sensor mode. When setting this parameter, only
bOneShot is used. It will return the actual sensor resolution when
queried (as per the OMX specification)
|
OMX_IndexConfigCommonDigitalZoom
| Query / set the digital zoom factor. The zoomed rectangle is always
taken from the centre of the image.
|
OMX_IndexConfigPortCapturing
| Query / set whether images are to be emitted on the specified port or
not. Changing to enabling capture when the component is not executing
will reset the internal counter used for time stamping frames when not
connected to a clock component.
|
OMX_IndexConfigCapturing
| This index is deprecated and should no longer be used.
Use OMX_IndexConfigPortCapturing instead.
|
OMX_IndexAutoPauseAfterCapture
| Query / set option to pause the component after the capture bit has
been cleared (either by the client or due to the bOneShot flag in
OMX_IndexParamCommonSensorMode)
|
OMX_IndexParamCameraCamplusId
| Query / set the identifier to use with the Broadcom Camplus library
used by this component.
|
OMX_IndexParamCameraDeviceNumber
| Camera device number. Query / set the camera number (as defined by the Videocore make system) to be
used by this camera component. When set, the value will be checked to ensure that
the camera number specified is defined for the platform.
Setting this parameter also triggers loading of the relevant drivers to speed up
queries for OMX_IndexConfigCameraSensorModes, which require the drivers to be loaded.
This parameter is supported by OMX_IndexConfigRequestCallback, so the client can be
notified once that driver is loaded, rather than having to poll the settings.
|
OMX_IndexParamCameraDevicesPresent
| Query the camera devices defined for this platform. The result is a bitmask
indicating which cameras ahve been detected.
|
OMX_IndexParamISPTunerName
| ISP tuner name. Allow the client to query / set the name of the camera tuner module to be
used by Camplus. If tuner_name is a null string, the default tuner
for the camera module is loaded.
It is recommended that this parameter is set before OMX_IndexParamCameraDeviceNumber
to avoid reloading the CDI and default tuner.
|
OMX_IndexConfigCommonFrameStabilisation
| Query / set the state of the image stabilisation function of the
camera (NB the image will be automatically zoomed by approx 10% to
allow the stabilisation alogrithm space to operate in)
|
OMX_IndexConfigCommonExposure
| Query / set the exposure mode for the camera.
|
OMX_IndexConfigCommonExposureValue
| Query / set the exposure parameters for the camera
|
OMX_IndexParamCameraImagePool
| Set the image pool parameters for to be used by the components. This
allows a client to specifies the size, type, and number of images in each
pool. By default the sizes are left as 0 so the size is determined by
OMX_IndexParamPortMaxFrameSize. The number of images in each pool is always
determined by the settings in this parameter.
|
OMX_IndexConfigCameraISPOutputPoolHeight
| Set the height of the high-resolution output image in stills capture only.
The component will copy out of this image into OMX buffers as required, or
pass pointers to stripes within the buffer. If the height of this buffer is
less than nFrameHeight for a port, then attempts to use
OMX_IndexParamImagePoolDisplayFunction, or
OMX_IndexParamCameraPoolToEncoderFunction will be rejected as the
complete frame isn't available. A value of 0 is interpreted as
allocate full frames.
The value must be a multiple of 16.
|
OMX_IndexConfigFocusControl
| Query/set the focus mode.
|
OMX_IndexConfigCommonFocusStatus
| Query the focus position, and the state of the auto/manual focus
operations.
|
OMX_IndexParamImagePoolExternal
| Allows pointers to external image pools to be passed in to the
component to be used for image capture. image_pool is used as
the ISP high resolution image pool, image_pool2 as the ISP low
res pool, image_pool3 as the input pool, image_pool3 as the
high res stills pool, and image_pool5 as the stills input pool.
If being used, all five must be valid image pools. If not, all five must
be NULL, the default, which causes the component to allocate pools
when active.
|
OMX_IndexConfigBrcmCameraStats
| Camera frame statistics. Allows the Camplus frame counts for number of frames produced and dropped
to be read by the client. These counts get reset whenever a new mode is
requested from Camplus. Additional knowledge of when this occurs is required
to obtain meaningful results from this config.
|
OMX_IndexParamCameraSwapImagePools
| Swap over image pools. Configures the camera component to swap over the two image pools when
in stills capture mode. The behind this logic being that the viewfinder
high res images and the capture low res images are approximately the same
size, and the viewfinder low res images and the capture high res circular
output buffer are approximately the same size.
DO NOT USE WITH PARALLEL CAPTURE, AS POOL ALLOCATIONS ALREADY TAKE THIS INTO ACCOUNT
|
OMX_IndexParamCameraSingleBufferCaptureInput
| Save memory by using a single input buffer. Configures the camera
component to switch to a single input buffer when capturing, therefore
saving the memory requirement of having two full resolution bayer
input buffers to store the input images.
|
OMX_IndexConfigCommonRedEyeRemoval
| Red eye reduction/removal configuration. Configures the red eye
reduction algorithm in the camera processing pipeline. The stage is
only enabled if the flash mode is not FlashOff. The
OMX_RedEyeRemovalSimple mode requests that the algorithm uses a
reduced complexity algorithm to reduce the processing time.
|
OMX_IndexConfigCameraSensorModes
| Query the image sensor modes supported by the selected CDI. This will
return the number of modes supported, and allow to iteratively query
for them.
If the CDI is not available, then the error OMX_ErrorNotReady will be
returned. It is the responsibility of the client to delay and retry the
request.
|
OMX_IndexConfigCommonSharpness
| Image sharpening. Query / set the sharpening/softening of the output
image. -100 = max softening. 0 = no change. +100 = max sharpening.
|
OMX_IndexConfigCommonContrast
| Query / set the contrast. As per the OMX-IL 1.1.1 spec, the range is
-100 to 100, with 0 indicating no change.
|
OMX_IndexConfigCommonBrightness
| Query / set the brightness. As per the OMX-IL 1.1.1 spec, the range is
+0 to 100, representing 0 to 100%.
|
OMX_IndexConfigCommonSaturation
| Query / set the image saturation. As per the OMX-IL 1.1.1 spec, the range is
-100 to 100, with 0 indicating no change, -100 will result in a completely
black image, and 100 will result in a completely white image.
This setting is ignored if OMX_IndexConfigCommonColorEnhancement is enabled.
|
OMX_IndexConfigCommonColorEnhancement
| Query / set the values with which to fill the U and V planes of the output
image. This feature overrides any saturation settings when enabled. The
change is made within the ISP, so postprocessor software stages will not
have any colour data to work with. Use of functions such as red eye reduction
when colour enhancement is active may produce indeterminate results.
|
OMX_IndexConfigCommonFlickerCancellation
| Query / set the flicker cancellation frequency. Values are defined for Off,
50Hz, 60Hz, or auto. The method for auto detecting the flicker frequency is
not defined, and currently results in the feature being turned off.
|
OMX_IndexConfigInputCropPercentages
| Set crop region seen by ISP. Query / set the region of the input image
that will be cropped before being processed by the ISP. It is
specified as a fraction of the input width and height, expressed as a
16p16 value.
|
OMX_IndexConfigCommonWhiteBalance
| Query / set the auto white balance operating mode.
|
OMX_IndexConfigStillsAntiShakeEnable
| Query / set the state of the antishake function of the camera.
|
OMX_IndexConfigStillColourDenoiseEnable
| Configure still colour denoise. Query / set the state of the still
colour denoise function of the camera. This is only applicable whilst
doing a stills capture in YUV422 or YUV420 planar format.
|
OMX_IndexConfigVideoColourDenoiseEnable
| Configure video colour denoise. Query / set the state of the video
colour denoising function of the camera. This is only applicable
whilst the camera is producing images in the Broadcom-specific format
or YUV420.
|
OMX_IndexConfigTemporalDenoiseEnable
| Configure temporal denoise. Query / set the state of the temporal
denoising function of the camera. This is only applicable
whilst the camera is producing images in the Broadcom-specific format
or YUV420.
|
OMX_IndexConfigCommonFaceDetectionControl
| Face detection. Query / set the state of the face detection algorithm.
Will return OMX_ErrorUnsupportedIndex if the algorithm is not loaded.
|
OMX_IndexConfigDrawBoxAroundFaces
| Draw boxes around faces. Query / set the state of adding boxes around
the faces detected in the viewfinder frames.
|
OMX_IndexConfigDrawBoxLineParams
| Face box style parameters. Query / set the parameters for the box to
be drawn around faces/focus regions.
|
OMX_IndexConfigCommonFaceDetectionRegion
| Face detection output. Query the currently detected face regions
within the viewfinder image. Will return
OMX_ErrorUnsupportedIndex if the algorithm is not loaded.
|
OMX_IndexConfigAFAssistLight
| Query / set the mode for the Auto focus assist light. It is
assumed that the platform supports such a feature.
|
OMX_IndexConfigSmartShakeReductionEnable
| Smart Shake Reduction (SSR). Query / set the state of the Smart Shake
Reduction function. Will return OMX_ErrorUnsupportedIndex if the
algorithm is not loaded.
|
OMX_IndexConfigWaitForFocusBeforeCapture
| Wait for focus before capture. Query / set whether the camera
component will ensure that the camera module has reported the lens
back at the focused position before stopping capturing with the
OneShot flag set. This may lead to multiple complete images being
emitted from the capture port, and any receiving component/client
should be prepared for this.
|
OMX_IndexConfigCommonImageFilter
| Query / select image effects to be applied to the viewfinder and capture images
|
OMX_IndexConfigCommonImageFilterParameters
| Query / set optional parameters for the selected image filter.
|
OMX_IndexConfigPrivacyIndicator
| Query / set whether the privacy indicator light should be switched on
whenever the component is capturing. The indicator used depends on the
capabilities of the flash driver selected.
|
OMX_IndexParamFlashControl
| Query / set the flash control, which controls the basic mode of flash operation.
|
OMX_IndexParamCameraFlashType
| Query / set which type of flash (xenon/LED) to use if flash is requested. Changing
this value requires the drivers to be reloaded, so it is recommended this is set
before setting OMX_IndexParamCameraDeviceNumber.
|
OMX_IndexConfigCameraFlashConfig
| Query / set the flags to use to modify the flash algorithm.
|
OMX_IndexConfigFlashChargeLevel
| Query the charge level of the currently selected flash device. This is updated at the
start of every frame.
|
OMX_IndexConfigCameraEnableStatsPass
| Query / set whether a separate stats pass should be done before each capture.
This will be done automatically if flash is requested.
|
OMX_IndexConfigCaptureRawImageURI
| Configure filename for raw Bayer image. Query / set whether the
filename to which the raw Bayer format image should be written out to
file. Follows the standard URI structure. Can NOT be set when the
capture bit is set and the capture port is executing. Will return
OMX_ErrorUnsupportedIndex if the algorithm is not loaded.
|
OMX_IndexConfigCameraIsoReferenceValue
| Allows the client to obtain the ISO reference for unity analogue gain.
|
OMX_IndexConfigCameraCaptureAbortsAutoFocus
| Starting a capture aborts AF. Query / set whether setting the capture
bit will abort any AF cycle that is in progress, or if the AF cycle
should continue and the capture happen automatically on completion.
|
OMX_IndexParamCameraDisableAlgorithm
| Disabling processing stages. This allows optional processing stages to
be totally disabled, and hence not loaded when the component is taken
from Loaded to Idle.
|
OMX_IndexParamCameraCaptureEventFunction
| Allows a VideoCore callback function to be registered to be used as
an indication of when a capture is being started. This will not work over ILCS.
|
OMX_IndexParamCameraUseCase
| Camera use case. Query / set the use case to be passed into the tuner
module.
|
OMX_IndexConfigCameraInputFrame
| This parameter allows a Videocore component to obtain the pointer
for the camera input frame (typically Bayer). For debug use only,
and will not work over ILCS.
|
OMX_IndexParamDynamicParameterFile
| Specify a dynamic parameter file to use or not. If a file is to be used,
OMX_IndexParamUseDynamicParameterFile must be set.
|
OMX_IndexParamUseDynamicParameterFile
| Specify whether we wish to load the DPF file.
|
OMX_IndexParamDynamicParameterFileFailFatal
| Classify error condition when DFP fails to load. This specifies whether the
failure to load the DPF file should this be treated as a fatal error
Enables loading of a dynamic parameter file. The filename is set with
OMX_IndexParamDynamicParameterFile.
|
OMX_IndexConfigCameraInfo
| Query the camera and lens information for the current camera.
|
OMX_IndexConfigCameraFeatures
| Camera features. Query the capabilities of the current camera (lens and shutter).
Some information is only valid when the component is Idle or Executing.
|
OMX_IndexConfigRequestCallback
| Query / set whether a RIL_CALLBACK_CONFIGCHANGED should be
generated when parameters change state within the component.
Currently supported for
OMX_IndexConfigCommonFocusStatus,
OMX_IndexParamCommonSensorMode,
OMX_IndexConfigCameraSettings,
OMX_IndexParamCameraDeviceNumber,
OMX_IndexConfigCommonSceneDetected,
OMX_IndexConfigCommonFaceDetectionRegion,
OMX_IndexParamCaptureStatus, and
OMX_IndexConfigFieldOfView only.
|
OMX_IndexConfigCommonFocusRegionXY
| Query / set the focus regions to use as a set of x/y/width/height boxes.
|
OMX_IndexConfigUserSettingsId
| Frame identification. Sets an identifier to be set on the start of the
next frame. Gets the identifier seen on the last frame from Camplus.
This allows a client to identify when a group of settings have all
been applied to Camplus (apply settings, change
OMX_IndexConfigUserSettingsId, wait for value read back from
OMX_IndexConfigUserSettingsId to change to match).
|
OMX_IndexConfigCameraSettings
| Get the parameters applied to the last frame from the camera. The
client can also set OMX_IndexConfigRequestCallback for this config.
|
OMX_IndexConfigBurstCapture
| Set the camera into a mode where it is only doing captures. The viewfinder port can
be executing, but will only emit the snapshot images associated to any captures
requested, and not viewfinder frames. This is an optimisation, and not essential.
|
OMX_IndexConfigPowerDown
| Standby/power control. Query /set the power status of the camera
module. Setting this parameter to OMX_TRUE instructs the component to
power down the sensor, but keeping all memory allocated as required by
the component state.
|
OMX_IndexParamBrcmCameraInputAspectRatio
| Sensor aspect ratio selection. Query / set the prefered aspect ratio
of the sensor CDI mode. The CDI will use the nearest value to this.
If both are left as 0, then the aspect ratio of the requested output
mode is used to bias the sensor mode selection.
|
OMX_IndexConfigDynamicRangeExpansion
| Dynamic range expansion. Configures the dynamic range expansion
Camplus software stage.
|
OMX_IndexConfigFaceRecognitionControl
| Face Recognition Control. Enables/disables the face recognition
software stage (if present)
|
OMX_IndexConfigFaceRecognitionSaveFace
| Face Recognition Face Learning. Instructs the face recognition stage
to save the next primary face it sees into the database with the
supplied ID.
|
OMX_IndexConfigFaceRecognitionDatabaseUri
| Face Recognition Database File. Specifies the URI of the database file
to be used by face recognition.
|
OMX_IndexConfigFlashInfo
| Flash Information. Queries for the information on the flash devices
present.
|
OMX_IndexConfigCommonFaceBeautification
| Face Beautification. Enables/disables the face beautification
algorithm, if it is present.
|
OMX_IndexConfigCommonSceneDetectionControl
| Automatic Scene Detection Control. Enables/disables the scene
detection algorithm, if it is present.
|
OMX_IndexConfigCommonSceneDetected
| Automatic Scene Detection Status. Returns the currently detected scene
type, as reported by the scene detection algorithm. This config also
supports OMX_IndexConfigRequestCallback to report changes in value.
|
OMX_IndexParamDisableVllPool
| Controls whether Camplus software stages are loaded into a memory
pool allocated by this component, or loaded without specifying
where to store the VLLs. If a memory pool is not used, then
there is the possibility that a software stage will fail to load
due to insufficient memory - this consideration must be made by the
application/user.
|
OMX_IndexConfigBrcmDrawStaticBox
| Define a static box to be drawn on the viewfinder images.
Allows a client to set a static box to be drawn on the viewfinder
images using the parameters specified for other types of boxes
(face tracking, or focus results). This box will always be drawn when
it is defined, overriding any face tracking or focus cycle results.
|
OMX_IndexParamCameraCaptureMode
| Allow the client to specify the behaviour desired for stills captures.
Options are:
OMX_CameraCaptureModeWaitForCaptureEnd:
Wait for capture to complete before resuming viewfinder.
OMX_CameraCaptureModeWaitForCaptureEndAndUsePreviousInputImage:
Reprocess the same input frame multiple times with different settings.
Currently not implemented in the Camplus levels.
OMX_CameraCaptureModeResumeViewfinderImmediately:
Resume viewfinder/video encode as soon as the input image for the still
has been acquired, and then process the still in a parallel thread. This
requires image_pool_params.eInputPoolMode to be set to
OMX_CAMERAIMAGEPOOLINPUTMODE_TWOPOOLS, and
image_pool_params.nNumHiResStillsFrames
to be non-zero, otherwise the image pools won't split in a manner that
allows viewfinder to be resumed.
|
OMX_IndexConfigBrcmCameraRnDPreprocess
| Test control allowing a software stage to be dropped into the preprocessor
pipeline easily and controlled through OMX. Software stage must be called
rnd_prep_stage, and SW_STAGE_DISABLE_RND_PREPROC must be undefined in
camera_config.h. It is inserted into both video and stills pipelines as
the last software stage.
|
OMX_IndexConfigBrcmCameraRnDPostprocess
| Test control allowing a software stage to be dropped into the postprocessor
pipeline easily and controlled through OMX. Software stage must be called
rnd_prep_stage, and SW_STAGE_DISABLE_RND_POSTPROC must be undefined in
camera_config.h. It is inserted into both video and stills pipelines as
the last software stage.
|
OMX_IndexParamCommonUseStcTimestamps
| This parameter selects how the component timestamps buffers if there is
no clock. The options are:
OMX_TimestampModeZero:
Always timestamp them as time 0.
OMX_TimestampModeRawStc:
Read the STC timestamp of when the frame was captured, and use that
raw value.
OMX_TimestampModeResetStc:
Store the STC of the 1st frame sent on the video port, and subtract
that value from all frames. The offset value will get reset whenever
video capture is started with either the port capturing flag or
enabling the port, so a capture pause function can not be achieved
in this mode.
If passing buffers it also relies on passing the entire frame in one buffer,
as the time information is not available until the whole frame has been
received from Camplus.
|
OMX_IndexParamCaptureStatus
| Returns the actual capture status of the camera component. Set to True when
a stills capture starts, and will be cleared when the capture image has been
passed downstream.
This parameter is supported by OMX_IndexConfigRequestCallback
to allow a client to do stuff on image capture (eg play a shutter sound).
|
OMX_IndexParamBrcmLazyImagePoolDestroy
| The image pool will be deleted lazily, i.e. we will not wait for the images
to be returned from the pool, but instead rely on the image pool tidying itself
up automatically when all references are released.
|
OMX_IndexConfigBrcmHighDynamicRange
| Enable / disable the High Dynamic Range (HDR) software stage.
|
OMX_IndexConfigFieldOfView
| Image field of view.
Returns the field of view provided by the current camera settings.
Read only.
|
OMX_IndexConfigBrcmPoolMemAllocSize
| Returns the amount of memory being used by the component's
image pools. Read only.
|
70 | OMX_IndexParamPortDefinition
| Query / set the preview port resolution. Parts of this value may be
overwritten by the component if Camplus needs to apply additional
conditions on the image format.
|
OMX_IndexConfigVideoFramerate
| Query / set the framerate including when the port is already executing.
|
OMX_IndexParamImagePoolDisplayFunction
| Used to set up proprietary communication with the next component. The
current default when using proprietary communication is to use the
Broadcom-specific image format in place of
OMX_COLOR_FormatYUV420PackedPlanar, provided that the capture
port has not requested YUV420 explicitly. This is to allow a
performance optimisation to be used within the denoising algorithm.
|
OMX_IndexConfigCameraSensorModes
| Query the image sensor mode that would be used for the currently
defined port definition.
|
OMX_IndexConfigCommonRotate
| Query / set the rotation requirements for images emitted from the
viewfinder port. Only rotations of 0, 90, 180, and 270 degrees are
supported.
|
OMX_IndexConfigCommonMirror
| Query / set the mirroring requirements for images emitted from the
viewfinder port. These are always used in combination with the
rotation parameters, so OMX_MirrorBoth and rotate 180 will
result in the image being back at upright.
|
71 | OMX_IndexParamPortDefinition
| Query / set the capture port resolution.
|
OMX_IndexConfigVideoFramerate
| Query / set the framerate including when the port is already executing.
|
OMX_IndexParamImagePoolDisplayFunction
| Used to set up proprietary communication with the next component.
|
OMX_IndexParamCameraPoolToEncoderFunction
| Used to set up proprietary communication with the next component
(video encoder specific)
|
OMX_IndexConfigCameraSensorModes
| Query the image sensor mode that would be used for the currently
defined port definition.
|
OMX_IndexConfigCommonRotate
| Query / set the rotation requirements for images emitted from the
capture port. Only rotations of 0, 90, 180, and 270 degrees
are supported.
|
OMX_IndexConfigCommonMirror
| Query / set the mirroring requirements for images emitted from the
capture port. These are always used in combination with
the rotation parameters, so OMX_MirrorBoth and rotate 180 will result in
the image being back at upright.
|
72 | OMX_IndexParamCameraStripeFunction
| Used to set up proprietary communication with the next component when
passing image stripes (write still specific)
|
OMX_IndexConfigCameraStripeFuncMinLines
| Used to set the minimum number of lines to be passed using the stripe function. The stripe
function itself is set with OMX_IndexParamCameraStripeFunction.
|
OMX_IndexParamImagePortFormat
| Query / set the video port format. This port supports a small range of
uncompressed pixel formats.
|
70 71 | OMX_IndexParamVideoPortFormat
| Query / set the video port format. These ports support a small range of
uncompressed pixel formats.
|
70 71 72 | OMX_IndexParamBrcmDisableProprietaryTunnels
| Tells the component not to use proprietary communication for the selected
output port.
|
OMX_IndexParamPortMaxFrameSize
| Allows the defining of the maximum frame size to be used on the
specified port. Image pools will be sized based on this information
in the absence of any additional configuration from the application
(via OMX_IndexParamCameraImagePool).
The size passed in OMX_IndexParamPortDefinition will be checked
against this setting (potentially tranposed) to ensure that the images
can fit in the pool.
|
73 | OMX_IndexParamOtherPortFormat
| Query / set the format used by this port. This port supports only the clock format type.
|