IL Camera: Add manual analog and digital gain controls.
authorDave Stevenson <dave.stevenson@raspberrypi.org>
Tue, 15 Aug 2017 16:53:26 +0000 (17:53 +0100)
committerpopcornmix <popcornmix@gmail.com>
Fri, 6 Oct 2017 17:44:47 +0000 (18:44 +0100)
With MMAL_PARAMETER_ANALOG_GAIN and MMAL_PARAMETER_DIGITAL_GAIN
setting either numerator or denominator to 0 will retain auto
operation, otherwise the tuner will adopt the specified gain
where the hardware will allow.
The AGC algorithm does NOT include a fixed digital gain,
so a fixed digital gain with auto exposure and analog gain
will typically result in over exposed images.

interface/mmal/mmal_parameters_camera.h
interface/vmcs_host/khronos/IL/OMX_Broadcom.h
interface/vmcs_host/khronos/IL/OMX_Index.h

index 9d8b7aec7959905b495d1d841e8fdc9bd9622df2..8a8857107935a9dcd285b4b58f0a4b33405f803f 100644 (file)
@@ -147,6 +147,8 @@ enum {
    MMAL_PARAMETER_OUTPUT_SHIFT,              /**< Takes a @ref MMAL_PARAMETER_INT32_T */
    MMAL_PARAMETER_CCM_SHIFT,                 /**< Takes a @ref MMAL_PARAMETER_INT32_T */
    MMAL_PARAMETER_CUSTOM_CCM,                /**< Takes a @ref MMAL_PARAMETER_CUSTOM_CCM_T */
+   MMAL_PARAMETER_ANALOG_GAIN,               /**< Takes a @ref MMAL_PARAMETER_RATIONAL_T */
+   MMAL_PARAMETER_DIGITAL_GAIN,              /**< Takes a @ref MMAL_PARAMETER_RATIONAL_T */
 };
 
 /** Thumbnail configuration parameter type */
index 970d2a4e7b4b00a17390f0298d71c572d81f6be4..bdb46268b396e0df9c8db18b74d6fe34a54c3c04 100644 (file)
@@ -2651,5 +2651,14 @@ typedef struct OMX_PARAM_CUSTOMCCMTYPE {
    OMX_S32 nColorOffset[3];    /**<  */
 } OMX_PARAM_CUSTOMCCMTYPE;
 
+typedef struct OMX_CONFIG_CAMERAGAINTYPE {
+   OMX_U32 nSize;
+   OMX_VERSIONTYPE nVersion;
+   OMX_U32 nPortIndex;
+
+   OMX_U32 xGain;             /**< Gain to be applied, stored as Q16 format */
+   OMX_BOOL bAutoGain;        /**< Whether gain is set automatically */
+} OMX_CONFIG_CAMERAGAINTYPE;
+
 #endif
 /* File EOF */
index 0127887bac3bccc5078bd77b5e6028deec1a629b..3ad2941f6157771b909e6239eeea0f7b35411b65 100644 (file)
@@ -535,6 +535,8 @@ typedef enum OMX_INDEXTYPE {
     OMX_IndexParamOutputShift,                                /**< reference: OMX_PARAM_S32TYPE */
     OMX_IndexParamCcmShift,                                   /**< reference: OMX_PARAM_S32TYPE */
     OMX_IndexParamCustomCcm,                                  /**< reference: OMX_PARAM_CUSTOMCCMTYPE */
+    OMX_IndexConfigCameraAnalogGain,                          /**< reference: OMX_CONFIG_CAMERAGAINTYPE */
+    OMX_IndexConfigCameraDigitalGain,                         /**< reference: OMX_CONFIG_CAMERAGAINTYPE */
     OMX_IndexMax = 0x7FFFFFFF
 } OMX_INDEXTYPE;