/****************************************************************************** Copyright (C), 2001-2011, Hisilicon Tech. Co., Ltd. ****************************************************************************** File Name : hi_ae_comm.h Version : Initial Draft Author : Hisilicon multimedia software group Created : 2012/12/18 Description : History : 1.Date : 2012/12/18 Author : n00168968 Modification: Created file ******************************************************************************/ #ifndef __HI_AE_COMM_H__ #define __HI_AE_COMM_H__ #include "hi_type.h" #ifdef __cplusplus #if __cplusplus extern "C"{ #endif #endif /* End of #ifdef __cplusplus */ #define HI_AE_LIB_NAME "hisi_ae_lib" /************************** ae ctrl cmd **************************************/ typedef enum hiAE_CTRL_CMD_E { AE_DEBUG_ATTR_SET, AE_DEBUG_ATTR_GET, AE_CTRL_BUTT, } AE_CTRL_CMD_E; typedef struct hiAE_DBG_ATTR_S { HI_U32 u32MaxIntTime; HI_U32 u32MinIntTime; HI_U32 u32MaxAgain; HI_U32 u32MinAgain; HI_U32 u32MaxDgain; HI_U32 u32MinDgain; HI_U32 u32MaxIspDgain; HI_U32 u32MinIspDgain; HI_U32 u32MaxSysGain; HI_U32 u32MinSysGain; HI_U32 u32Compensation; HI_U32 u32EVBias; HI_BOOL bManualExposureEn; HI_BOOL bManualTimeEn; HI_BOOL bManualAgainEn; HI_BOOL bManualDgainEn; HI_BOOL bManualIspDgainEn; HI_U32 u32ManualExposureLines; HI_U32 u32ManualAgain; HI_U32 u32ManualDgain; HI_U32 u32ManualIspDgain; HI_U32 au32AeWeights[255]; }AE_DBG_ATTR_S; typedef struct hiAE_DBG_STATUS_S { HI_U32 u32FrmNumBgn; HI_U32 u32FullLines; HI_U32 u32IntTime; HI_U32 u32Again; HI_U32 u32Dgain; HI_U32 u32IspDgain; HI_U32 u32IrisFNOLin; HI_U64 u64Exposure; HI_U32 u32Increment; HI_S32 s32HistError; HI_S32 s32HistOriAverage; HI_S32 s32LumaOffset; HI_U32 u32Iso; }AE_DBG_STATUS_S; /************************** sensor's interface to ae *********************/ /* eg: 0.35db, enAccuType=AE_ACCURACY_DB, f32Accuracy=0.35 * and the multiply of 0.35db is power(10, (0.35/20)) * eg: 1/16, 2/16, 3/16 multiplies, enAccuType=AE_ACCURACY_LINEAR, f32Accuracy=0.0625 * eg: 1,2,4,8,16 multiplies, enAccuType=AE_ACCURACY_DB, f32Accuracy=6 */ typedef enum hiAE_ACCURACY_E { AE_ACCURACY_DB = 0, AE_ACCURACY_LINEAR, AE_ACCURACY_TABLE, AE_ACCURACY_BUTT, } AE_ACCURACY_E; typedef struct hiAE_ACCURACY_S { AE_ACCURACY_E enAccuType; float f32Accuracy; float f32Offset; } AE_ACCURACY_S; typedef struct hiAE_SENSOR_DEFAULT_S { HI_U8 au8HistThresh[4]; HI_U8 u8AeCompensation; HI_U32 u32LinesPer500ms; HI_U32 u32FlickerFreq; HI_FLOAT f32Fps; HI_U32 u32InitExposure; HI_U32 u32FullLinesStd; HI_U32 u32MaxIntTime; /* unit is line */ HI_U32 u32MinIntTime; HI_U32 u32MaxIntTimeTarget; HI_U32 u32MinIntTimeTarget; AE_ACCURACY_S stIntTimeAccu; HI_U32 u32MaxAgain; HI_U32 u32MinAgain; HI_U32 u32MaxAgainTarget; HI_U32 u32MinAgainTarget; AE_ACCURACY_S stAgainAccu; HI_U32 u32MaxDgain; HI_U32 u32MinDgain; HI_U32 u32MaxDgainTarget; HI_U32 u32MinDgainTarget; AE_ACCURACY_S stDgainAccu; HI_U32 u32MaxISPDgainTarget; HI_U32 u32MinISPDgainTarget; HI_U32 u32ISPDgainShift; ISP_AE_ROUTE_S stAERouteAttr; HI_BOOL bAERouteExValid; ISP_AE_ROUTE_EX_S stAERouteAttrEx; HI_U8 u16ManRatioEnable; HI_U32 u32Ratio; ISP_IRIS_TYPE_E enIrisType; ISP_PIRIS_ATTR_S stPirisAttr; } AE_SENSOR_DEFAULT_S; typedef struct hiAE_SENSOR_EXP_FUNC_S { HI_S32(*pfn_cmos_get_ae_default)(AE_SENSOR_DEFAULT_S *pstAeSnsDft); /* the function of sensor set fps */ HI_VOID(*pfn_cmos_fps_set)(HI_FLOAT f32Fps, AE_SENSOR_DEFAULT_S *pstAeSnsDft); HI_VOID(*pfn_cmos_slow_framerate_set)(HI_U32 u32FullLines, AE_SENSOR_DEFAULT_S *pstAeSnsDft); /* while isp notify ae to update sensor regs, ae call these funcs. */ HI_VOID(*pfn_cmos_inttime_update)(HI_U32 u32IntTime); HI_VOID(*pfn_cmos_gains_update)(HI_U32 u32Again, HI_U32 u32Dgain); HI_VOID (*pfn_cmos_again_calc_table)(HI_U32 *pu32AgainLin, HI_U32 *pu32AgainDb); HI_VOID (*pfn_cmos_dgain_calc_table)(HI_U32 *pu32DgainLin, HI_U32 *pu32DgainDb); HI_VOID (*pfn_cmos_get_inttime_max)(HI_U32 u32Ratio, HI_U32 *pu32IntTimeMax); } AE_SENSOR_EXP_FUNC_S; typedef struct hiAE_SENSOR_REGISTER_S { AE_SENSOR_EXP_FUNC_S stSnsExp; } AE_SENSOR_REGISTER_S; #ifdef __cplusplus #if __cplusplus } #endif #endif /* End of #ifdef __cplusplus */ #endif