182 lines
4.6 KiB
C
182 lines
4.6 KiB
C
/******************************************************************************
|
|
|
|
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
|