From: Dave Stevenson Date: Tue, 15 Aug 2017 16:53:26 +0000 (+0100) Subject: IL Camera: Add manual analog and digital gain controls. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1b87d5696efd9741a3fc1d9edcccc62cb87b49cc;p=platform%2Fadaptation%2Fbroadcom%2Flibomxil-vc4.git IL Camera: Add manual analog and digital gain controls. 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. --- diff --git a/interface/mmal/mmal_parameters_camera.h b/interface/mmal/mmal_parameters_camera.h index 9d8b7ae..8a88571 100644 --- a/interface/mmal/mmal_parameters_camera.h +++ b/interface/mmal/mmal_parameters_camera.h @@ -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 */ diff --git a/interface/vmcs_host/khronos/IL/OMX_Broadcom.h b/interface/vmcs_host/khronos/IL/OMX_Broadcom.h index 970d2a4..bdb4626 100644 --- a/interface/vmcs_host/khronos/IL/OMX_Broadcom.h +++ b/interface/vmcs_host/khronos/IL/OMX_Broadcom.h @@ -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 */ diff --git a/interface/vmcs_host/khronos/IL/OMX_Index.h b/interface/vmcs_host/khronos/IL/OMX_Index.h index 0127887..3ad2941 100644 --- a/interface/vmcs_host/khronos/IL/OMX_Index.h +++ b/interface/vmcs_host/khronos/IL/OMX_Index.h @@ -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;