/****************************************************************************** Copyright (C), 2015-2020, XM. Co., Ltd. ****************************************************************************** File Name : xm_comm_sns.h Version : Initial Draft Author : XM Isp software group Created : 2015/7/6 Description : The common data type defination Function List : History : 1.Date : 2015/7/6 Author : Lycai Modification : creat ******************************************************************************/ #ifndef __XM_COMM_SNS_H__ #define __XM_COMM_SNS_H__ #include "xm_type.h" #include "xm_comm_isp.h" typedef struct xm_ISP_CMOS_AGC_TABLE_S { XM_BOOL bValid; XM_U8 au8SharpenAltD[ISP_AUTO_STENGTH_NUM]; /* adjust image edge,different iso with different sharp strength */ XM_U8 au8SharpenAltUd[ISP_AUTO_STENGTH_NUM]; /* adjust image texture, different iso with different strength */ XM_U8 au8SharpenKd[ISP_AUTO_STENGTH_NUM]; XM_U8 au8SnrThresh[ISP_AUTO_STENGTH_NUM]; /* adjust 2Ddenoise strength, different iso with different strength */ XM_U8 au83DTfStrength[ISP_AUTO_STENGTH_NUM]; /* adjust 3Ddenoise strength, different iso with different strength */ XM_U8 au83DSfStrength[ISP_AUTO_STENGTH_NUM]; XM_U8 au8DyDpc[ISP_AUTO_STENGTH_NUM]; /* adjust DynamicDpc strength, different iso with different strength */ XM_U8 au8Saturation[ISP_AUTO_STENGTH_NUM]; XM_U16 au16Blc[ISP_AUTO_STENGTH_NUM]; /* adjust blackLevel,different iso with different sharp strength */ XM_U16 au16Ytrangamma[ISP_AUTO_STENGTH_NUM]; /*adjust Y_Tran gamma,iso with different sharp strength*/ } ISP_CMOS_AGC_TABLE_S; typedef struct xm_ISP_CMOS_NOISE_TABLE_S { XM_BOOL bValid; XM_U8 au8NoiseProfileWeightLut[128]; XM_U8 au8DemosaicWeightLut[128]; } ISP_CMOS_NOISE_TABLE_S; typedef struct xm_ISP_CMOS_DEMOSAIC_S { XM_BOOL bValid; XM_U8 u8VhSlope; XM_U8 u8AaSlope; XM_U8 u8VaSlope; XM_U8 u8UuSlope; XM_U8 u8SatSlope; XM_U8 u8AcSlope; XM_U16 u16VhThresh; XM_U16 u16AaThresh; XM_U16 u16VaThresh; XM_U16 u16UuThresh; XM_U16 u16SatThresh; XM_U16 u16AcThresh; } ISP_CMOS_DEMOSAIC_S; typedef struct xm_ISP_CMOS_DRC_S { XM_U8 u8DrcBlack; XM_U8 u8DrcVs; /* variance space */ XM_U8 u8DrcVi; /* variance intensity */ XM_U8 u8DrcSm; /* slope max */ XM_U16 u16DrcWl; /* white level */ } ISP_CMOS_DRC_S; #define LUT_FACTOR (8) #define GAMMA_FE_LUT_SIZE ((1<<LUT_FACTOR)+1) typedef struct xm_ISP_CMOS_GAMMAFE_S { XM_BOOL bValid; /* wdr sensor should set */ XM_U16 au16Gammafe[GAMMA_FE_LUT_SIZE]; } ISP_CMOS_GAMMAFE_S; typedef struct xm_ISP_CMOS_DENOISE_S { XM_U8 u8SinterThresh; /* sinter threshold */ XM_U8 u8NoiseProfile; /* two different noise profile */ XM_U16 u16Nr0; /* nr0 for noise profile 2 */ XM_U16 u16Nr1; /* nr1 for noise profile 2 */ } ISP_CMOS_DENOISE_S; typedef struct xm_ISP_CMOS_COMM_S { XM_U8 u8Rggb; /* rggb start sequence */ XM_U8 u8BalanceFe; } ISP_CMOS_COMM_S; #define CMOS_SHADING_TABLE_NODE_NUMBER_MAX (129) typedef struct xm_ISP_CMOS_SHADING_S { XM_BOOL bValid; XM_U16 u16RCenterX; XM_U16 u16RCenterY; XM_U16 u16GCenterX; XM_U16 u16GCenterY; XM_U16 u16BCenterX; XM_U16 u16BCenterY; XM_U16 au16RShadingTbl[CMOS_SHADING_TABLE_NODE_NUMBER_MAX]; XM_U16 au16GShadingTbl[CMOS_SHADING_TABLE_NODE_NUMBER_MAX]; XM_U16 au16BShadingTbl[CMOS_SHADING_TABLE_NODE_NUMBER_MAX]; XM_U16 u16ROffCenter; XM_U16 u16GOffCenter; XM_U16 u16BOffCenter; XM_U16 u16TblNodeNum; } ISP_CMOS_SHADING_S; #if (defined CHIPID_XM530)||(defined CHIPID_XM350) #define GAMMA_NODE_NUMBER 97 #else #define GAMMA_NODE_NUMBER 61 #endif typedef struct xm_ISP_CMOS_GAMMA_S { XM_BOOL bValid; XM_U16 au16Gamma[GAMMA_NODE_NUMBER]; } ISP_CMOS_GAMMA_S; typedef struct xm_ISP_CMOS_DEFAULT_S { ISP_CMOS_COMM_S stComm; ISP_CMOS_DENOISE_S stDenoise; ISP_CMOS_DRC_S stDrc; ISP_CMOS_AGC_TABLE_S stAgcTbl; ISP_CMOS_NOISE_TABLE_S stNoiseTbl; ISP_CMOS_DEMOSAIC_S stDemosaic; ISP_CMOS_GAMMAFE_S stGammafe; ISP_CMOS_GAMMA_S stGamma; ISP_CMOS_SHADING_S stShading; } ISP_CMOS_DEFAULT_S; typedef enum xm_ISP_CMOS_MODE_E { ISP_CMOS_MODE_PIXEL_DETECT = 0, ISP_CMOS_MODE_WDR, ISP_CMOS_MODE_RESOLUTION, ISP_CMOS_MODE_BUTT, } ISP_CMOS_MODE_E; typedef struct xm_ISP_CMOS_SENSOR_MAX_RESOLUTION_S { XM_U32 u32MaxWidth; XM_U32 u32MaxHeight; }ISP_CMOS_SENSOR_MAX_RESOLUTION; typedef struct xm_ISP_CMOS_SENSOR_IMAGE_MODE_S { XM_U16 u16Width; XM_U16 u16Height; XM_U16 u16Fps; }ISP_CMOS_SENSOR_IMAGE_MODE; typedef struct xm_ISP_SENSOR_EXP_FUNC_S { XM_VOID(*pfn_cmos_sensor_init)(XM_VOID); XM_VOID(*pfn_cmos_sensor_global_init)(XM_VOID); XM_S32(*pfn_cmos_get_isp_default)(ISP_CMOS_DEFAULT_S *pstDef); XM_S32(*pfn_cmos_get_sensor_max_resolution)(ISP_CMOS_SENSOR_MAX_RESOLUTION *pstSensorMaxResolution); /* the function of sensor set pixel detect */ XM_VOID(*pfn_cmos_set_pixel_detect)(XM_BOOL bEnable); XM_VOID(*pfn_cmos_set_wdr_mode)(XM_U8 u8Mode); XM_VOID(*pfn_cmos_set_resolution)(XM_U32 u32ResolutionMode); XM_S32(*pfn_cmos_set_image_mode)(ISP_CMOS_SENSOR_IMAGE_MODE *pstSensorImageMode); XM_S32(*pfn_cmos_set_mirror_flip)(XM_U8 u8Mirror,XM_U8 u8Flip); } ISP_SENSOR_EXP_FUNC_S; typedef struct xm_ISP_SENSOR_REGISTER_S { ISP_SENSOR_EXP_FUNC_S stSnsExp; } ISP_SENSOR_REGISTER_S; /****** ERR_shift Noise_level*********/ #define SHIFTLEVEL_NUMBER 34 typedef struct xm_ISP_SENSOR_SHIFTLEVEL_S { XM_U8 u8Shift; XM_U8 u8Level; } ISP_SENSOR_SHIFTLEVEL_S; typedef struct xm_ISP_CMOS_SNS_ATTR_S { XM_U8 u8InputMode; // 0:DVP 1:MIPI XM_U8 u8Rsv[7]; XM_U32 u32Rsv[14]; } ISP_CMOS_SNS_ATTR_S; #endif /*__XM_COMM_SNS_H__ */