1861 lines
54 KiB
C
1861 lines
54 KiB
C
/*
|
|
* Copyright (C) Cvitek Co., Ltd. 2019-2020. All rights reserved.
|
|
*
|
|
* File Name: include/cvi_common_isp.h
|
|
* Description:
|
|
*/
|
|
|
|
#ifndef __CVI_COMM_ISP_H__
|
|
#define __CVI_COMM_ISP_H__
|
|
|
|
#include "cvi_common.h"
|
|
#include "cvi_comm_video.h"
|
|
#include "cvi_defines.h"
|
|
#include "cvi_debug.h"
|
|
|
|
#ifdef __cplusplus
|
|
#if __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
#endif /* End of #ifdef __cplusplus */
|
|
|
|
#define ISP_CHECK_POINTER(addr) \
|
|
do { \
|
|
if (addr == NULL) \
|
|
return CVI_FAILURE; \
|
|
} while (0)
|
|
|
|
#define CVI_TRACE_ISP(level, fmt, ...) \
|
|
CVI_TRACE(level, CVI_ID_ISP, "%s:%d:%s(): " fmt, __FILENAME__, __LINE__, __func__, ##__VA_ARGS__)
|
|
|
|
#define CCM_MATRIX_SIZE (9)
|
|
#define AE_MAX_ZONE_ROW (24)
|
|
#define AE_MAX_ZONE_COLUMN (32)
|
|
#define AE_ZONE_ROW (15)
|
|
#define AE_ZONE_COLUMN (17)
|
|
#define AE_MAX_NUM (2)
|
|
#define ISP_SENSOR_MAX_DELAY_NUM (5)
|
|
#define AWB_ZONE_ORIG_ROW (48)
|
|
#define AWB_ZONE_ORIG_COLUMN (64)
|
|
#define AWB_ZONE_NUM (AWB_ZONE_ORIG_ROW * AWB_ZONE_ORIG_COLUMN)
|
|
#define AWB_MAX_NUM (1)
|
|
#define HIST_BIN_DEPTH (8)
|
|
#define MAX_HIST_BINS (1 << HIST_BIN_DEPTH)
|
|
#define MAX_EXPOSURE_RATIO 256
|
|
#define MAX_DRC_HIST_BINS (MAX_HIST_BINS * MAX_EXPOSURE_RATIO)
|
|
#define DCF_DRSCRIPTION_LENGTH 32
|
|
#define DCF_CAPTURE_TIME_LENGTH 20
|
|
#define ISP_AUTO_ISO_STRENGTH_NUM 16
|
|
#define ISP_AUTO_EXP_RATIO_NUM 16
|
|
#define ISP_AUTO_COLORTEMP_NUM 7
|
|
#define ISP_AUTO_LV_NUM ISP_AUTO_ISO_STRENGTH_NUM
|
|
#define CVI_ISP_LSC_GRID_COL (37)
|
|
#define CVI_ISP_LSC_GRID_ROW (37)
|
|
#define CVI_ISP_LSC_GRID_POINTS (CVI_ISP_LSC_GRID_COL * CVI_ISP_LSC_GRID_ROW)
|
|
#define DCI_BINS_NUM (256)
|
|
#define ISP_MAX_SNS_REGS 32
|
|
#define ISP_MAX_WDR_FRAME_NUM 2
|
|
#define BAYER_PATTERN_NUM 4
|
|
#define MG_ZONE_ROW (15)
|
|
#define MG_ZONE_COLUMN (17)
|
|
#define AF_ZONE_ROW (15)
|
|
#define AF_ZONE_COLUMN (17)
|
|
#define AF_XOFFSET_MIN (8)
|
|
#define AF_YOFFSET_MIN (2)
|
|
#define MAX_AWB_LIB_NUM (VI_MAX_PIPE_NUM)
|
|
#define MAX_AE_LIB_NUM (VI_MAX_PIPE_NUM)
|
|
#define LTM_DARK_CURVE_NODE_NUM (257)
|
|
#define LTM_BRIGHT_CURVE_NODE_NUM (513)
|
|
#define ISP_3ALIB_FIND_FAIL (-1)
|
|
|
|
#define HIST_NUM 256
|
|
|
|
|
|
|
|
/*Defines the format of the input Bayer image*/
|
|
typedef enum _ISP_BAYER_FORMAT_E {
|
|
BAYER_BGGR,
|
|
BAYER_GBRG,
|
|
BAYER_GRBG,
|
|
BAYER_RGGB,
|
|
BAYER_BUTT
|
|
} ISP_BAYER_FORMAT_E;
|
|
|
|
typedef enum bmISP_OP_TYPE_E {
|
|
OP_TYPE_AUTO,
|
|
OP_TYPE_MANUAL,
|
|
OP_TYPE_BUTT
|
|
} ISP_OP_TYPE_E;
|
|
|
|
typedef enum _ISP_FMW_STATE_E {
|
|
ISP_FMW_STATE_RUN,
|
|
ISP_FMW_STATE_FREEZE,
|
|
ISP_FMW_STATE_BUTT
|
|
} ISP_FMW_STATE_E;
|
|
|
|
typedef enum _ISP_CHANNEL_LIST_E {
|
|
ISP_CHANNEL_LE,
|
|
ISP_CHANNEL_SE,
|
|
ISP_CHANNEL_MAX_NUM,
|
|
} ISP_CHANNEL_LIST_E;
|
|
|
|
typedef enum _ISP_BAYER_CHANNEL_E {
|
|
ISP_BAYER_CHN_R,
|
|
ISP_BAYER_CHN_GR,
|
|
ISP_BAYER_CHN_GB,
|
|
ISP_BAYER_CHN_B,
|
|
ISP_BAYER_CHN_NUM,
|
|
} ISP_BAYER_CHANNEL_E;
|
|
|
|
typedef enum _ISP_SNS_TYPE_E {
|
|
SNS_I2C_TYPE,
|
|
SNS_SSP_TYPE,
|
|
SNS_TYPE_BUTT,
|
|
} ISP_SNS_TYPE_E;
|
|
|
|
typedef union _ISP_SNS_COMMBUS_U {
|
|
CVI_S8 s8I2cDev;
|
|
struct {
|
|
CVI_S8 bit4SspDev : 4;
|
|
CVI_S8 bit4SspCs : 4;
|
|
} s8SspDev;
|
|
} ISP_SNS_COMMBUS_U;
|
|
|
|
typedef struct _ISP_I2C_DATA_S {
|
|
CVI_BOOL bUpdate;
|
|
CVI_U8 u8DelayFrmNum; /*RW; Number of delayed frames for the sensor register*/
|
|
CVI_U8 u8IntPos; /*RW;Position where the configuration of the sensor register takes effect */
|
|
CVI_U8 u8DevAddr; /*RW;Sensor device address*/
|
|
CVI_U32 u32RegAddr; /*RW;Sensor register address*/
|
|
CVI_U32 u32AddrByteNum; /*RW;Bit width of the sensor register address*/
|
|
CVI_U32 u32Data; /*RW;Sensor register data*/
|
|
CVI_U32 u32DataByteNum; /*RW;Bit width of sensor register data*/
|
|
} ISP_I2C_DATA_S;
|
|
|
|
typedef struct _ISP_SSP_DATA_S {
|
|
CVI_BOOL bUpdate;
|
|
CVI_U8 u8DelayFrmNum; /*RW; Number of delayed frames for the sensor register*/
|
|
CVI_U8 u8IntPos; /*RW;Position where the configuration of the sensor register takes effect */
|
|
CVI_U32 u32DevAddr; /*RW;Sensor device address*/
|
|
CVI_U32 u32DevAddrByteNum; /*RW;Bit width of the sensor device address*/
|
|
CVI_U32 u32RegAddr; /*RW;Sensor register address*/
|
|
CVI_U32 u32RegAddrByteNum; /*RW;Bit width of the sensor register address*/
|
|
CVI_U32 u32Data; /*RW;Sensor register data*/
|
|
CVI_U32 u32DataByteNum; /*RW;Bit width of sensor register data*/
|
|
} ISP_SSP_DATA_S;
|
|
|
|
typedef struct _ISP_SNS_REGS_INFO_S {
|
|
ISP_SNS_TYPE_E enSnsType;
|
|
CVI_U32 u32RegNum;
|
|
CVI_U8 u8Cfg2ValidDelayMax;
|
|
ISP_SNS_COMMBUS_U unComBus;
|
|
union {
|
|
ISP_I2C_DATA_S astI2cData[ISP_MAX_SNS_REGS];
|
|
ISP_SSP_DATA_S astSspData[ISP_MAX_SNS_REGS];
|
|
};
|
|
|
|
struct {
|
|
CVI_BOOL bUpdate;
|
|
CVI_U8 u8DelayFrmNum;
|
|
CVI_U32 u32SlaveVsTime; /* RW;time of vsync. Unit: inck clock cycle */
|
|
CVI_U32 u32SlaveBindDev;
|
|
} stSlvSync;
|
|
|
|
CVI_BOOL bConfig;
|
|
|
|
CVI_U8 use_snsr_sram;
|
|
CVI_U8 need_update;
|
|
} ISP_SNS_REGS_INFO_S;
|
|
|
|
typedef struct _ISP_MANUAL_WDR_ATTR_S {
|
|
CVI_S32 devno;
|
|
CVI_S32 manual_en;
|
|
CVI_S16 l2s_distance;
|
|
CVI_S16 lsef_length;
|
|
CVI_S32 discard_padding_lines;
|
|
CVI_S32 update;
|
|
} ISP_MANUAL_WDR_ATTR_S;
|
|
|
|
typedef struct _ISP_SNS_CIF_INFO_S {
|
|
ISP_MANUAL_WDR_ATTR_S wdr_manual;
|
|
CVI_U8 u8DelayFrmNum; /*RW; Number of delayed frames for the cif setting */
|
|
CVI_U8 need_update;
|
|
} ISP_SNS_CIF_INFO_S;
|
|
|
|
typedef struct _ISP_WDR_SIZE_S {
|
|
RECT_S stWndRect;
|
|
SIZE_S stSnsSize;
|
|
SIZE_S stMaxSize;
|
|
} ISP_WDR_SIZE_S;
|
|
|
|
typedef struct _ISP_SNS_ISP_INFO_S {
|
|
CVI_U32 frm_num;
|
|
ISP_WDR_SIZE_S img_size[ISP_MAX_WDR_FRAME_NUM];
|
|
CVI_U8 u8DelayFrmNum; /*RW; Number of delayed frames for the isp setting */
|
|
CVI_U8 need_update;
|
|
} ISP_SNS_ISP_INFO_S;
|
|
|
|
typedef struct _ISP_SNS_SYNC_INFO_S {
|
|
ISP_SNS_REGS_INFO_S snsCfg;
|
|
ISP_SNS_ISP_INFO_S ispCfg;
|
|
ISP_SNS_CIF_INFO_S cifCfg;
|
|
} ISP_SNS_SYNC_INFO_S;
|
|
|
|
typedef struct _ISP_PUB_ATTR_S {
|
|
RECT_S stWndRect;
|
|
SIZE_S stSnsSize;
|
|
CVI_FLOAT f32FrameRate;
|
|
ISP_BAYER_FORMAT_E enBayer;
|
|
WDR_MODE_E enWDRMode;
|
|
CVI_U8 u8SnsMode;
|
|
} ISP_PUB_ATTR_S;
|
|
|
|
typedef struct _ISP_CTRL_PARAM_S {
|
|
CVI_U32 u32StatIntvl;
|
|
CVI_U32 u32ProcParam;
|
|
CVI_U32 u32UpdatePos;
|
|
CVI_U32 u32IntTimeOut;
|
|
CVI_U32 u32PwmNumber;
|
|
CVI_U32 u32PortIntDelay;
|
|
} ISP_CTRL_PARAM_S;
|
|
|
|
typedef union _ISP_MODULE_CTRL_U {
|
|
CVI_U64 u64Key;
|
|
struct {
|
|
CVI_U64 bitBypassISPDGain : 1; /* RW;[0] */
|
|
CVI_U64 bitBypassAntiFC : 1; /* RW;[1] */
|
|
CVI_U64 bitBypassCrosstalkR : 1; /* RW;[2] */
|
|
CVI_U64 bitBypassDPC : 1; /* RW;[3] */
|
|
CVI_U64 bitBypassNR : 1; /* RW;[4] */
|
|
CVI_U64 bitBypassDehaze : 1; /* RW;[5] */
|
|
CVI_U64 bitBypassWBGain : 1; /* RW;[6] */
|
|
CVI_U64 bitBypassMeshShading : 1; /* RW;[7] */
|
|
CVI_U64 bitBypassDRC : 1; /* RW;[8] */
|
|
CVI_U64 bitBypassDemosaic : 1; /* RW;[9] */
|
|
CVI_U64 bitBypassColorMatrix : 1; /* RW;[10] */
|
|
CVI_U64 bitBypassGamma : 1; /* RW;[11] */
|
|
CVI_U64 bitBypassFSWDR : 1; /* RW;[12] */
|
|
CVI_U64 bitBypassCA : 1; /* RW;[13] */
|
|
CVI_U64 bitBypassCsConv : 1; /* RW;[14] */
|
|
CVI_U64 bitBypassRadialCrop : 1; /* RW;[15] */
|
|
CVI_U64 bitBypassSharpen : 1; /* RW;[16] */
|
|
CVI_U64 bitBypassLCAC : 1; /* RW;[17] */
|
|
CVI_U64 bitBypassGCAC : 1; /* RW;[18] */
|
|
CVI_U64 bit2ChnSelect : 2; /* RW;[19:20] */
|
|
CVI_U64 bitBypassLdci : 1; /* RW;[21] */
|
|
CVI_U64 bitBypassPreGamma : 1; /* RW;[22] */
|
|
CVI_U64 bitBypassRadialShading : 1; /* RW;[23] */
|
|
CVI_U64 bitBypassAEStatFE : 1; /* RW;[24] */
|
|
CVI_U64 bitBypassAEStatBE : 1; /* RW;[25] */
|
|
CVI_U64 bitBypassMGStat : 1; /* RW;[26] */
|
|
CVI_U64 bitBypassDE : 1; /* RW;[27] */
|
|
CVI_U64 bitBypassAFStatFE : 1; /* RW;[28] */
|
|
CVI_U64 bitBypassAFStatBE : 1; /* RW;[29] */
|
|
CVI_U64 bitBypassAWBStat : 1; /* RW;[30] */
|
|
CVI_U64 bitBypassCLUT : 1; /* RW;[31] */
|
|
CVI_U64 bitBypassHLC : 1; /* RW;[32] */
|
|
CVI_U64 bitBypassEdgeMark : 1; /* RW;[33] */
|
|
CVI_U64 bitBypassRGBIR : 1; /* RW;[34] */
|
|
CVI_U64 bitBypassHSV : 1; /* RW;[35] */
|
|
CVI_U64 bitBypassRgbDither : 1; /* RW;[36] */
|
|
CVI_U64 bitBypassYuvDither : 1; /* RW;[37] */
|
|
CVI_U64 bitBypassYnr : 1; /* RW;[38] */
|
|
CVI_U64 bitBypassCnr : 1; /* RW;[39] */
|
|
CVI_U64 bitBypassRgbEE : 1; /* RW;[40] */
|
|
CVI_U64 bitBypass3DNR : 1; /* RW;[41] */
|
|
CVI_U64 bitRsv21 : 21; /* H ; [42:63] */
|
|
};
|
|
} ISP_MODULE_CTRL_U;
|
|
|
|
typedef union _ISP_STATISTICS_CTRL_U {
|
|
CVI_U64 u64Key;
|
|
struct {
|
|
CVI_U64 bit1FEAeGloStat : 1; /* [0] */
|
|
CVI_U64 bit1FEAeLocStat : 1; /* [1] */
|
|
CVI_U64 bit1AwbStat1 : 1; /* [2] Awb Stat1 means global awb data. */
|
|
CVI_U64 bit1AwbStat2 : 1; /* [3] Awb Stat2 means local awb data. */
|
|
CVI_U64 bit1FEAfStat : 1; /* [4] */
|
|
CVI_U64 bit14Rsv : 59; /* [5:63] */
|
|
};
|
|
} ISP_STATISTICS_CTRL_U;
|
|
|
|
typedef enum _ISP_AE_STAT_MODE_E {
|
|
ISP_AE_MODE_BUTT,
|
|
} ISP_AE_STAT_MODE_E;
|
|
|
|
typedef enum _ISP_AE_SWITCH_E {
|
|
ISP_AE_SWITCH_BUTT,
|
|
} ISP_AE_SWITCH_E;
|
|
|
|
typedef enum _ISP_AE_FOUR_PLANE_MODE_E {
|
|
ISP_AE_FOUR_PLANE_MODE_BUTT,
|
|
} ISP_AE_FOUR_PLANE_MODE_E;
|
|
|
|
typedef enum _ISP_AE_HIST_SKIP_E {
|
|
ISP_AE_HIST_SKIP_BUTT,
|
|
} ISP_AE_HIST_SKIP_E;
|
|
|
|
typedef enum _ISP_AE_HIST_OFFSET_X_E {
|
|
ISP_AE_HIST_OFFSET_X_BUTT,
|
|
} ISP_AE_HIST_OFFSET_X_E;
|
|
|
|
typedef enum _ISP_AE_HIST_OFFSET_Y_E {
|
|
ISP_AE_HIST_OFFSET_Y_BUTT,
|
|
} ISP_AE_HIST_OFFSET_Y_E;
|
|
|
|
typedef enum _ISP_AE_ANTIFLICKER_FREQUENCE_E {
|
|
AE_FREQUENCE_60HZ = 0,
|
|
AE_FREQUENCE_50HZ,
|
|
} ISP_AE_ANTIFLICKER_FREQUENCE_E;
|
|
|
|
typedef enum _ISP_AE_METER_MODE_E {
|
|
AE_METER_MULTI = 0,
|
|
AE_METER_AVERAGE,
|
|
AE_METER_FISHEYE,
|
|
} ISP_AE_METER_MODE_E;
|
|
|
|
typedef enum _ISP_AE_IR_CUT_FORCE_STATUS {
|
|
AE_IR_CUT_FORCE_AUTO = 0,
|
|
AE_IR_CUT_FORCE_ON,
|
|
AE_IR_CUT_FORCE_OFF,
|
|
} ISP_AE_IR_CUT_FORCE_STATUS;
|
|
|
|
typedef struct _ISP_AE_HIST_CONFIG_S {
|
|
ISP_AE_HIST_SKIP_E enHistSkipX;
|
|
ISP_AE_HIST_SKIP_E enHistSkipY;
|
|
ISP_AE_HIST_OFFSET_X_E enHistOffsetX;
|
|
ISP_AE_HIST_OFFSET_Y_E enHistOffsetY;
|
|
} ISP_AE_HIST_CONFIG_S;
|
|
|
|
typedef struct _ISP_3AWIN_CONFIG_S {
|
|
CVI_U16 winWidth;
|
|
CVI_U16 winHeight;
|
|
CVI_U16 winXOffset;
|
|
CVI_U16 winYOffset;
|
|
CVI_U8 winXNum;
|
|
CVI_U8 winYNum;
|
|
} ISP_3AWIN_CONFIG_S;
|
|
|
|
typedef struct _ISP_AE_CROP_S {
|
|
CVI_BOOL bEnable;
|
|
CVI_U16 u16X;
|
|
CVI_U16 u16Y;
|
|
CVI_U16 u16W;
|
|
CVI_U16 u16H;
|
|
} ISP_AE_CROP_S;
|
|
|
|
typedef struct _ISP_AE_STATISTICS_CFG_S {
|
|
ISP_AE_SWITCH_E enAESwitch; /*RW; Range:[0,2]; */
|
|
ISP_AE_HIST_CONFIG_S stHistConfig;
|
|
ISP_AE_FOUR_PLANE_MODE_E enFourPlaneMode; /*RW; Range:[0,1]; */
|
|
ISP_AE_STAT_MODE_E enHistMode; /*RW; Range:[0,1]; */
|
|
ISP_AE_STAT_MODE_E enAverMode; /*RW; Range:[0,1]; */
|
|
ISP_AE_STAT_MODE_E enMaxGainMode; /*RW; Range:[0,1]; */
|
|
ISP_AE_CROP_S stCrop[AE_MAX_NUM];
|
|
CVI_U8 au8Weight[AE_ZONE_ROW][AE_ZONE_COLUMN]; /*RW; Range:[0x0, 0xF]; */
|
|
} ISP_AE_STATISTICS_CFG_S;
|
|
|
|
typedef struct _ISP_AE_WIN_STATISTICS_CFG_S {
|
|
CVI_BOOL bHisStatisticsEnable;
|
|
CVI_BOOL bCropEnable;
|
|
CVI_U16 ZoneOffsetX;
|
|
CVI_U16 ZoneOffsetY;
|
|
CVI_U16 ZoneWidth;
|
|
CVI_U16 ZoneHeight;
|
|
CVI_U8 StatisticsShiftBits;
|
|
CVI_U16 RGain;
|
|
CVI_U16 GGain;
|
|
CVI_U16 BGain;
|
|
CVI_U8 au8WinWeight[AE_ZONE_ROW][AE_ZONE_COLUMN];
|
|
} ISP_AE_WIN_STATISTICS_CFG_S;
|
|
|
|
typedef enum _ISP_IRIS_TYPE_E {
|
|
ISP_IRIS_DC_TYPE = 0,
|
|
ISP_IRIS_P_TYPE,
|
|
ISP_IRIS_TYPE_BUTT,
|
|
} ISP_IRIS_TYPE_E;
|
|
|
|
//Defines the F value of the ISP iris
|
|
typedef enum _ISP_IRIS_F_NO_E {
|
|
ISP_IRIS_F_NO_32_0 = 0,
|
|
ISP_IRIS_F_NO_22_0,
|
|
ISP_IRIS_F_NO_16_0,
|
|
ISP_IRIS_F_NO_11_0,
|
|
ISP_IRIS_F_NO_8_0,
|
|
ISP_IRIS_F_NO_5_6,
|
|
ISP_IRIS_F_NO_4_0,
|
|
ISP_IRIS_F_NO_2_8,
|
|
ISP_IRIS_F_NO_2_0,
|
|
ISP_IRIS_F_NO_1_4,
|
|
ISP_IRIS_F_NO_1_0,
|
|
|
|
ISP_IRIS_F_NO_BUTT,
|
|
} ISP_IRIS_F_NO_E;
|
|
|
|
#define ISP_AE_ROUTE_MAX_NODES (16)
|
|
typedef struct _ISP_AE_ROUTE_NODE_S {
|
|
CVI_U32 u32IntTime;
|
|
CVI_U32 u32SysGain;
|
|
ISP_IRIS_F_NO_E enIrisFNO;
|
|
CVI_U32 u32IrisFNOLin;
|
|
} ISP_AE_ROUTE_NODE_S;
|
|
|
|
typedef struct _ISP_AE_ROUTE_S {
|
|
CVI_U32 u32TotalNum;
|
|
ISP_AE_ROUTE_NODE_S astRouteNode[ISP_AE_ROUTE_MAX_NODES];
|
|
} ISP_AE_ROUTE_S;
|
|
|
|
#define ISP_AE_ROUTE_EX_MAX_NODES (16)
|
|
typedef struct _ISP_AE_ROUTE_EX_NODE_S {
|
|
CVI_U32 u32IntTime;
|
|
CVI_U32 u32Again;
|
|
CVI_U32 u32Dgain;
|
|
CVI_U32 u32IspDgain;
|
|
ISP_IRIS_F_NO_E enIrisFNO;
|
|
CVI_U32 u32IrisFNOLin;
|
|
} ISP_AE_ROUTE_EX_NODE_S;
|
|
|
|
typedef struct _ISP_AE_ROUTE_EX_S {
|
|
CVI_U32 u32TotalNum;
|
|
ISP_AE_ROUTE_EX_NODE_S astRouteExNode[ISP_AE_ROUTE_EX_MAX_NODES];
|
|
} ISP_AE_ROUTE_EX_S;
|
|
|
|
typedef struct _ISP_EXP_INFO_S {
|
|
CVI_U32 u32ExpTime;
|
|
CVI_U32 u32ShortExpTime;
|
|
CVI_U32 u32MedianExpTime;
|
|
CVI_U32 u32LongExpTime;
|
|
CVI_U32 u32AGain;
|
|
CVI_U32 u32DGain;
|
|
CVI_U32 u32ISPDGain;
|
|
CVI_U32 u32Exposure;
|
|
CVI_BOOL bExposureIsMAX;
|
|
CVI_S16 s16HistError;
|
|
CVI_U32 au32AE_Hist1024Value[HIST_NUM];
|
|
|
|
CVI_U8 u8AveLum;
|
|
CVI_U32 u32LinesPer500ms;
|
|
CVI_U32 u32PirisFNO;
|
|
CVI_U32 u32Fps;
|
|
CVI_U32 u32ISO;
|
|
CVI_U32 u32ISOCalibrate;
|
|
CVI_U32 u32RefExpRatio;
|
|
CVI_U32 u32FirstStableTime;
|
|
ISP_AE_ROUTE_S stAERoute;
|
|
ISP_AE_ROUTE_EX_S stAERouteEx;
|
|
CVI_U8 u8WDRShortAveLuma;
|
|
CVI_U32 u32WDRExpRatio;
|
|
CVI_U8 u8LEFrameAvgLuma;
|
|
CVI_U8 u8SEFrameAvgLuma;
|
|
CVI_FLOAT fLightValue;
|
|
} ISP_EXP_INFO_S;
|
|
|
|
#define WDR_EXP_RATIO_NUM (3)
|
|
#define WDR_LV_TARGET_NUM (16)
|
|
typedef struct _ISP_WDR_EXPOSURE_ATTR_S {
|
|
ISP_OP_TYPE_E enExpRatioType;
|
|
CVI_U32 au32ExpRatio[WDR_EXP_RATIO_NUM];
|
|
CVI_U32 u32ExpRatioMax;
|
|
CVI_U32 u32ExpRatioMin;
|
|
CVI_U16 u16Tolerance;
|
|
CVI_U16 u16Speed;
|
|
CVI_U16 u16RatioBias;
|
|
CVI_U8 u8SECompensation;
|
|
CVI_U16 u16SEHisThr;
|
|
CVI_U16 u16SEHisCntRatio1;
|
|
CVI_U16 u16SEHisCntRatio2;
|
|
CVI_U32 u16SEHis255CntThr1;
|
|
CVI_U32 u16SEHis255CntThr2;
|
|
CVI_U8 au8LEAdjustTargetMin[WDR_LV_TARGET_NUM];
|
|
CVI_U8 au8LEAdjustTargetMax[WDR_LV_TARGET_NUM];
|
|
CVI_U8 au8SEAdjustTargetMin[WDR_LV_TARGET_NUM];
|
|
CVI_U8 au8SEAdjustTargetMax[WDR_LV_TARGET_NUM];
|
|
CVI_U8 u8AdjustTargetDetectFrmNum;
|
|
CVI_U32 u32DiffPixelNum;
|
|
CVI_U16 u16LELowBinThr;
|
|
CVI_U16 u16LEHighBinThr;
|
|
CVI_U16 u16SELowBinThr;
|
|
CVI_U16 u16SEHighBinThr;
|
|
CVI_U8 au8FrameAvgLumaMin[WDR_LV_TARGET_NUM];
|
|
CVI_U8 au8FrameAvgLumaMax[WDR_LV_TARGET_NUM];
|
|
} ISP_WDR_EXPOSURE_ATTR_S;
|
|
|
|
typedef struct _ISP_AWB_CROP_S {
|
|
CVI_BOOL bEnable;
|
|
CVI_U16 u16X;
|
|
CVI_U16 u16Y;
|
|
CVI_U16 u16W;
|
|
CVI_U16 u16H;
|
|
} ISP_AWB_CROP_S;
|
|
|
|
typedef enum _ISP_AWB_SWITCH_E {
|
|
ISP_AWB_AFTER_DG,
|
|
ISP_AWB_AFTER_DRC,
|
|
ISP_AWB_SWITCH_BUTT,
|
|
} ISP_AWB_SWITCH_E;
|
|
|
|
typedef enum _ISP_AWB_ALG_TYPE_E {
|
|
AWB_ALG_LOWCOST,
|
|
AWB_ALG_ADVANCE,
|
|
AWB_ALG_BUTT
|
|
} ISP_AWB_ALG_TYPE_E;
|
|
|
|
typedef enum _ISP_AWB_MULTI_LS_TYPE_E {
|
|
AWB_MULTI_LS_SAT,
|
|
AWB_MULTI_LS_CCM,
|
|
AWB_MULTI_LS_BUTT
|
|
} ISP_AWB_MULTI_LS_TYPE_E;
|
|
|
|
typedef enum _ISP_AWB_INDOOR_OUTDOOR_STATUS_E {
|
|
AWB_INDOOR_MODE,
|
|
AWB_OUTDOOR_MODE,
|
|
AWB_INDOOR_OUTDOOR_BUTT
|
|
} ISP_AWB_INDOOR_OUTDOOR_STATUS_E;
|
|
|
|
typedef struct _ISP_WB_STATISTICS_CFG_S {
|
|
ISP_AWB_SWITCH_E enAWBSwitch;
|
|
CVI_U16 u16ZoneRow;
|
|
CVI_U16 u16ZoneCol;
|
|
CVI_U16 u16ZoneBin;
|
|
CVI_U16 au16HistBinThresh[4];
|
|
CVI_U16 u16WhiteLevel;
|
|
CVI_U16 u16BlackLevel;
|
|
CVI_U16 u16CbMax;
|
|
CVI_U16 u16CbMin;
|
|
CVI_U16 u16CrMax;
|
|
CVI_U16 u16CrMin;
|
|
ISP_AWB_CROP_S stCrop;
|
|
} ISP_WB_STATISTICS_CFG_S;
|
|
|
|
typedef struct _ISP_WB_WIN_STATISTICS_CFG_S {
|
|
CVI_BOOL bStatisticsEnable;
|
|
ISP_AWB_SWITCH_E enAWBSwitch;
|
|
CVI_BOOL bCropEnable;
|
|
CVI_U16 ZoneOffsetX;
|
|
CVI_U16 ZoneOffsetY;
|
|
CVI_U16 ZoneWidth;
|
|
CVI_U16 ZoneHeight;
|
|
CVI_U16 u16BlackLevel;
|
|
CVI_U16 u16WhiteLevel;
|
|
CVI_U8 u8ZoneRow;
|
|
CVI_U8 u8ZoneColumn;
|
|
CVI_BOOL CornerAvgEnable;
|
|
CVI_U8 CornerSize;
|
|
CVI_U8 StatisticsShiftBits;
|
|
} ISP_WB_WIN_STATISTICS_CFG_S;
|
|
|
|
#define FIR_H_GAIN_NUM 5
|
|
#define FIR_V_GAIN_NUM 3
|
|
#define AF_GAMMA_NUM 256
|
|
// AF window X region must between [0x8 ~ image xsize - 8].
|
|
// Y region must between [0x2 ~ image ysize - 2].
|
|
typedef struct _ISP_AF_CROP_S {
|
|
CVI_BOOL bEnable;
|
|
CVI_U16 u16X; // Range: must more than 8.
|
|
CVI_U16 u16Y; // Range: must more than 2.
|
|
CVI_U16 u16W;
|
|
CVI_U16 u16H;
|
|
} ISP_AF_CROP_S;
|
|
|
|
typedef struct _ISP_AF_RAW_CFG_S {
|
|
CVI_U8 PreGammaEn;
|
|
CVI_U8 PreGammaTable[AF_GAMMA_NUM];
|
|
} ISP_AF_RAW_CFG_S;
|
|
|
|
typedef struct _ISP_AF_PRE_FILTER_CFG_S {
|
|
CVI_BOOL PreFltEn;
|
|
} ISP_AF_PRE_FILTER_CFG_S;
|
|
|
|
typedef struct _ISP_AF_CFG_S {
|
|
CVI_BOOL bEnable;
|
|
CVI_U16 u16Hwnd;
|
|
CVI_U16 u16Vwnd;
|
|
CVI_U8 u8HFltShift;
|
|
CVI_S8 s8HVFltLpCoeff[FIR_H_GAIN_NUM];
|
|
ISP_AF_RAW_CFG_S stRawCfg;
|
|
ISP_AF_PRE_FILTER_CFG_S stPreFltCfg;
|
|
ISP_AF_CROP_S stCrop;
|
|
CVI_U16 u16HighLumaTh;
|
|
} ISP_AF_CFG_S;
|
|
|
|
typedef struct _ISP_AF_H_PARAM_S {
|
|
CVI_S8 s8HFltHpCoeff[FIR_H_GAIN_NUM];
|
|
} ISP_AF_H_PARAM_S;
|
|
|
|
typedef struct _ISP_AF_V_PARAM_S {
|
|
CVI_S8 s8VFltHpCoeff[FIR_V_GAIN_NUM];
|
|
} ISP_AF_V_PARAM_S;
|
|
|
|
typedef struct _ISP_FOCUS_STATISTICS_CFG_S {
|
|
ISP_AF_CFG_S stConfig;
|
|
ISP_AF_H_PARAM_S stHParam_FIR0;
|
|
ISP_AF_H_PARAM_S stHParam_FIR1;
|
|
ISP_AF_V_PARAM_S stVParam_FIR;
|
|
} ISP_FOCUS_STATISTICS_CFG_S;
|
|
|
|
typedef struct _ISP_STATISTICS_CFG_S {
|
|
ISP_STATISTICS_CTRL_U unKey;
|
|
ISP_AE_STATISTICS_CFG_S stAECfg;
|
|
ISP_WB_STATISTICS_CFG_S stWBCfg;
|
|
ISP_FOCUS_STATISTICS_CFG_S stFocusCfg;
|
|
} ISP_STATISTICS_CFG_S;
|
|
|
|
typedef struct _ISP_AE_GRID_INFO_S {
|
|
CVI_U16 au16GridYPos[AE_ZONE_ROW + 1];
|
|
CVI_U16 au16GridXPos[AE_ZONE_COLUMN + 1];
|
|
CVI_U8 u8Status;
|
|
} ISP_AE_GRID_INFO_S;
|
|
|
|
typedef struct _ISP_AE_STATISTICS_S {
|
|
CVI_U32 au32FEHist1024Value[ISP_CHANNEL_MAX_NUM][AE_MAX_NUM][MAX_HIST_BINS];
|
|
CVI_U16 au16FEGlobalAvg[ISP_CHANNEL_MAX_NUM][AE_MAX_NUM][BAYER_PATTERN_NUM];
|
|
CVI_U16 au16FEZoneAvg[ISP_CHANNEL_MAX_NUM][AE_MAX_NUM][AE_ZONE_ROW][AE_ZONE_COLUMN][BAYER_PATTERN_NUM];
|
|
CVI_U32 au32BEHist1024Value[MAX_HIST_BINS];
|
|
CVI_U16 au16BEGlobalAvg[BAYER_PATTERN_NUM];
|
|
CVI_U16 au16BEZoneAvg[AE_ZONE_ROW][AE_ZONE_COLUMN][BAYER_PATTERN_NUM];
|
|
ISP_AE_GRID_INFO_S stFEGridInfo;
|
|
} ISP_AE_STATISTICS_S;
|
|
|
|
typedef struct _ISP_AWB_GRID_INFO_S {
|
|
CVI_U16 au16GridYPos[AWB_ZONE_ORIG_ROW + 1];
|
|
CVI_U16 au16GridXPos[AWB_ZONE_ORIG_COLUMN + 1];
|
|
CVI_U8 u8Status;
|
|
} ISP_AWB_GRID_INFO_S;
|
|
|
|
typedef struct _ISP_WB_STATISTICS_S {
|
|
CVI_U16 u16GlobalR;
|
|
CVI_U16 u16GlobalG;
|
|
CVI_U16 u16GlobalB;
|
|
CVI_U16 u16CountAll;
|
|
CVI_U16 au16ZoneAvgR[AWB_ZONE_NUM];
|
|
CVI_U16 au16ZoneAvgG[AWB_ZONE_NUM];
|
|
CVI_U16 au16ZoneAvgB[AWB_ZONE_NUM];
|
|
CVI_U16 au16ZoneCountAll[AWB_ZONE_NUM];
|
|
ISP_AWB_GRID_INFO_S stGridInfo;
|
|
} ISP_WB_STATISTICS_S;
|
|
|
|
typedef struct _ISP_FOCUS_ZONE_S {
|
|
CVI_U16 u16HlCnt;
|
|
CVI_U64 u64h0;
|
|
CVI_U64 u64h1;
|
|
CVI_U32 u32v0;
|
|
} ISP_FOCUS_ZONE_S;
|
|
|
|
typedef struct _ISP_FE_FOCUS_STATISTICS_S {
|
|
ISP_FOCUS_ZONE_S stZoneMetrics[AF_ZONE_ROW][AF_ZONE_COLUMN]; /*R; The zoned measure of contrast*/
|
|
} ISP_FE_FOCUS_STATISTICS_S;
|
|
|
|
typedef struct _ISP_AF_STATISTICS_S {
|
|
ISP_FE_FOCUS_STATISTICS_S stFEAFStat;
|
|
} ISP_AF_STATISTICS_S;
|
|
|
|
typedef struct _ISP_MG_STATISTICS_S {
|
|
CVI_U16 au16ZoneAvg[MG_ZONE_ROW][MG_ZONE_COLUMN][BAYER_PATTERN_NUM];
|
|
} ISP_MG_STATISTICS_S;
|
|
|
|
#define AWB_CALIB_PTS_NUM (3)
|
|
typedef struct _ISP_AWB_Calibration_Gain_S {
|
|
CVI_U16 u16AvgRgain[AWB_CALIB_PTS_NUM];
|
|
CVI_U16 u16AvgBgain[AWB_CALIB_PTS_NUM];
|
|
CVI_U16 u16ColorTemperature[AWB_CALIB_PTS_NUM];
|
|
} ISP_AWB_Calibration_Gain_S;
|
|
|
|
#define AWB_LUM_HIST_NUM (6)
|
|
typedef struct _ISP_AWB_LUM_HISTGRAM_ATTR_S {
|
|
CVI_BOOL bEnable;
|
|
ISP_OP_TYPE_E enOpType;
|
|
CVI_U8 au8HistThresh[AWB_LUM_HIST_NUM];
|
|
CVI_U16 au16HistWt[AWB_LUM_HIST_NUM];
|
|
} ISP_AWB_LUM_HISTGRAM_ATTR_S;
|
|
|
|
typedef struct _ISP_AWB_CT_LIMIT_ATTR_S {
|
|
CVI_BOOL bEnable;
|
|
ISP_OP_TYPE_E enOpType;
|
|
CVI_U16 u16HighRgLimit;
|
|
CVI_U16 u16HighBgLimit;
|
|
CVI_U16 u16LowRgLimit;
|
|
CVI_U16 u16LowBgLimit;
|
|
} ISP_AWB_CT_LIMIT_ATTR_S;
|
|
|
|
typedef struct _ISP_AWB_CBCR_TRACK_ATTR_S {
|
|
CVI_BOOL bEnable;
|
|
CVI_U16 au16CrMax[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 au16CrMin[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 au16CbMax[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 au16CbMin[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
} ISP_AWB_CBCR_TRACK_ATTR_S;
|
|
|
|
#define AWB_CURVE_PARA_NUM (6)
|
|
#define AWB_CURVE_BOUND_NUM (8)
|
|
typedef struct _ISP_AWB_ATTR_S {
|
|
CVI_BOOL bEnable;
|
|
|
|
CVI_U16 u16RefColorTemp;
|
|
CVI_U16 au16StaticWB[ISP_BAYER_CHN_NUM];
|
|
CVI_S32 as32CurvePara[AWB_CURVE_PARA_NUM];
|
|
|
|
ISP_AWB_ALG_TYPE_E enAlgType;
|
|
|
|
CVI_U8 u8RGStrength;
|
|
CVI_U8 u8BGStrength;
|
|
CVI_U16 u16Speed;
|
|
CVI_U16 u16ZoneSel;
|
|
CVI_U16 u16HighColorTemp;
|
|
CVI_U16 u16LowColorTemp;
|
|
ISP_AWB_CT_LIMIT_ATTR_S stCTLimit;
|
|
CVI_BOOL bShiftLimitEn;
|
|
CVI_U8 u8ShiftLimit;
|
|
CVI_BOOL bGainNormEn;
|
|
CVI_BOOL bNaturalCastEn;
|
|
CVI_U8 u8RGainBias;
|
|
CVI_U8 u8BGainBias;
|
|
|
|
ISP_AWB_CBCR_TRACK_ATTR_S stCbCrTrack;
|
|
ISP_AWB_LUM_HISTGRAM_ATTR_S stLumaHist;
|
|
CVI_BOOL bAWBZoneWtEn;
|
|
CVI_U8 au8ZoneWt[AWB_ZONE_ORIG_ROW * AWB_ZONE_ORIG_COLUMN];
|
|
CVI_U16 u16ShiftLimit[AWB_CURVE_BOUND_NUM];
|
|
} ISP_AWB_ATTR_S;
|
|
|
|
typedef struct _ISP_MWB_ATTR_S {
|
|
CVI_U16 u16Rgain;
|
|
CVI_U16 u16Grgain;
|
|
CVI_U16 u16Gbgain;
|
|
CVI_U16 u16Bgain;
|
|
} ISP_MWB_ATTR_S;
|
|
|
|
typedef enum _ISP_AWB_ALG_E {
|
|
ALG_AWB,
|
|
ALG_AWB_SPEC,
|
|
ALG_BUTT
|
|
} ISP_AWB_ALG_E;
|
|
|
|
typedef struct _ISP_WB_ATTR_S {
|
|
CVI_BOOL bByPass;
|
|
CVI_U8 u8AWBRunInterval;
|
|
ISP_OP_TYPE_E enOpType;
|
|
ISP_MWB_ATTR_S stManual;
|
|
ISP_AWB_ATTR_S stAuto;
|
|
ISP_AWB_ALG_E enAlgType;
|
|
CVI_U8 u8DebugMode;
|
|
} ISP_WB_ATTR_S;
|
|
|
|
typedef struct _ISP_WB_INFO_S {
|
|
CVI_U16 u16Rgain;
|
|
CVI_U16 u16Grgain;
|
|
CVI_U16 u16Gbgain;
|
|
CVI_U16 u16Bgain;
|
|
CVI_U16 u16Saturation;
|
|
CVI_U16 u16ColorTemp;
|
|
CVI_U16 au16CCM[CCM_MATRIX_SIZE];
|
|
CVI_U16 u16LS0CT;
|
|
CVI_U16 u16LS1CT;
|
|
CVI_U16 u16LS0Area;
|
|
CVI_U16 u16LS1Area;
|
|
CVI_U8 u8MultiDegree;
|
|
CVI_U16 u16ActiveShift;
|
|
CVI_U32 u32FirstStableTime;
|
|
ISP_AWB_INDOOR_OUTDOOR_STATUS_E enInOutStatus;
|
|
CVI_S16 s16Bv;
|
|
} ISP_WB_INFO_S;
|
|
|
|
typedef struct _ISP_DCF_CONST_INFO_S {
|
|
CVI_U8 au8ImageDescription[DCF_DRSCRIPTION_LENGTH]; /*Describes image*/
|
|
CVI_U8 au8Make[DCF_DRSCRIPTION_LENGTH]; /*Shows manufacturer of digital cameras*/
|
|
CVI_U8 au8Model[DCF_DRSCRIPTION_LENGTH]; /*Shows model number of digital cameras*/
|
|
CVI_U8 au8Software[DCF_DRSCRIPTION_LENGTH];
|
|
/*Shows firmware (internal software of digital cameras) version number*/
|
|
|
|
CVI_U8 u8LightSource;
|
|
CVI_U32 u32FocalLength; /*Focal length of lens used to take image. Unit is millimeter*/
|
|
CVI_U8 u8SceneType;
|
|
/*Indicates the type of scene. Value '0x01' means that the image was directly photographed.*/
|
|
CVI_U8 u8CustomRendered;
|
|
CVI_U8 u8FocalLengthIn35mmFilm; /*Indicates the equivalent focal length assuming a 35mm film camera, in mm*/
|
|
CVI_U8 u8SceneCaptureType;
|
|
CVI_U8 u8GainControl;
|
|
CVI_U8 u8Contrast;
|
|
CVI_U8 u8Saturation;
|
|
CVI_U8 u8Sharpness;
|
|
CVI_U8 u8MeteringMode;
|
|
} ISP_DCF_CONST_INFO_S;
|
|
|
|
typedef struct _ISP_DCF_UPDATE_INFO_S {
|
|
CVI_U32 u32ISOSpeedRatings; /*CCD sensitivity equivalent to Ag-Hr film speedrate*/
|
|
CVI_U32 u32ExposureTime; /*Exposure time (reciprocal of shutter speed).*/
|
|
CVI_U32 u32ExposureBiasValue; /*Exposure bias (compensation) value of taking picture*/
|
|
CVI_U8 u8ExposureProgram;
|
|
CVI_U32 u32FNumber; /*The actual F-number (F-stop) of lens when the image was taken*/
|
|
CVI_U32 u32MaxApertureValue; /*Maximum aperture value of lens.*/
|
|
CVI_U8 u8ExposureMode;
|
|
CVI_U8 u8WhiteBalance;
|
|
} ISP_DCF_UPDATE_INFO_S;
|
|
|
|
typedef struct _ISP_DCF_INFO_S {
|
|
ISP_DCF_CONST_INFO_S stIspDCFConstInfo;
|
|
ISP_DCF_UPDATE_INFO_S stIspDCFUpdateInfo;
|
|
} ISP_DCF_INFO_S;
|
|
|
|
typedef struct _ISP_MOD_PARAM_S {
|
|
CVI_U32 u32IntBotHalf;
|
|
} ISP_MOD_PARAM_S;
|
|
|
|
typedef struct _ISP_MESHSHADING_MANUAL_ATTR_S {
|
|
CVI_U16 lsc_strength;
|
|
CVI_U16 lscr_strnth;
|
|
CVI_U16 lscr_gain_lut[32];
|
|
} ISP_MESHSHADING_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_MESHSHADING_AUTO_ATTR_S {
|
|
CVI_U16 lsc_strength[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 lscr_strnth[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 lscr_gain_lut[ISP_AUTO_ISO_STRENGTH_NUM][32];
|
|
} ISP_MESHSHADING_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_MESHSHADING_ATTR_S {
|
|
CVI_U8 lsc_enable;
|
|
CVI_U8 lsc_debug;
|
|
CVI_U8 lsc_xblknumm1;
|
|
CVI_U8 reg_lsc_yblknumm1;
|
|
CVI_U16 reg_lsc_xstep;
|
|
CVI_U16 reg_lsc_ystep;
|
|
CVI_U32 reg_lsc_imgx0;
|
|
CVI_U32 reg_lsc_imgy0;
|
|
CVI_U8 reg_lsc_gain_base;
|
|
CVI_U16 reg_lsc_scaler[256];
|
|
CVI_U8 lscr_enable;
|
|
CVI_U16 lscr_centerx;
|
|
CVI_U16 lscr_centery;
|
|
CVI_U16 lscr_norm;
|
|
ISP_OP_TYPE_E enOpType;
|
|
ISP_MESHSHADING_MANUAL_ATTR_S stManual;
|
|
ISP_MESHSHADING_AUTO_ATTR_S stAuto;
|
|
} ISP_MESHSHADING_ATTR_S;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// YNR
|
|
//-----------------------------------------------------------------------------
|
|
#define YNR_CORING_NUM 6
|
|
typedef struct _ISP_YNR_MANUAL_ATTR_S {
|
|
CVI_U8 WindowType;
|
|
CVI_U8 DetailSmoothMode;
|
|
CVI_U8 NoiseSuppressStr;
|
|
CVI_U8 FilterType;
|
|
CVI_U8 NoiseSuppressStrMode;
|
|
CVI_U8 NoiseCoringBaseLuma[YNR_CORING_NUM];
|
|
CVI_U8 NoiseCoringBaseOffset[YNR_CORING_NUM];
|
|
CVI_U8 NoiseCoringAdvLuma[YNR_CORING_NUM];
|
|
CVI_U8 NoiseCoringAdvOffset[YNR_CORING_NUM];
|
|
} ISP_YNR_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_YNR_AUTO_ATTR_S {
|
|
CVI_U8 WindowType[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 DetailSmoothMode[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 NoiseSuppressStr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 FilterType[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 NoiseSuppressStrMode[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 NoiseCoringBaseLuma[YNR_CORING_NUM][ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 NoiseCoringBaseOffset[YNR_CORING_NUM][ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 NoiseCoringAdvLuma[YNR_CORING_NUM][ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 NoiseCoringAdvOffset[YNR_CORING_NUM][ISP_AUTO_ISO_STRENGTH_NUM];
|
|
} ISP_YNR_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_YNR_ATTR_S {
|
|
CVI_BOOL Enable;
|
|
CVI_BOOL CoringParamEnable;
|
|
CVI_U8 TuningMode;
|
|
ISP_OP_TYPE_E enOpType;
|
|
ISP_YNR_MANUAL_ATTR_S stManual;
|
|
ISP_YNR_AUTO_ATTR_S stAuto;
|
|
} ISP_YNR_ATTR_S;
|
|
|
|
typedef struct _ISP_YNR_MOTION_NR_MANUAL_ATTR_S {
|
|
CVI_U8 MotionThr;
|
|
CVI_U8 MotionNrPosGain;
|
|
CVI_U8 MotionNrNegGain;
|
|
} ISP_YNR_MOTION_NR_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_YNR_MOTION_NR_AUTO_ATTR_S {
|
|
CVI_U8 MotionThr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 MotionNrPosGain[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 MotionNrNegGain[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
} ISP_YNR_MOTION_NR_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_YNR_MOTION_NR_ATTR_S {
|
|
ISP_OP_TYPE_E enOpType;
|
|
ISP_YNR_MOTION_NR_MANUAL_ATTR_S stManual;
|
|
ISP_YNR_MOTION_NR_AUTO_ATTR_S stAuto;
|
|
} ISP_YNR_MOTION_NR_ATTR_S;
|
|
|
|
typedef struct _ISP_YNR_FILTER_MANUAL_ATTR_S {
|
|
CVI_U8 LumaStr[8];
|
|
CVI_U8 VarThr;
|
|
CVI_U16 CoringWgtLF;
|
|
CVI_U16 CoringWgtHF;
|
|
CVI_U8 NonDirFiltStr;
|
|
CVI_U8 VhDirFiltStr;
|
|
CVI_U8 AaDirFiltStr;
|
|
CVI_U16 FilterMode;
|
|
} ISP_YNR_FILTER_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_YNR_FILTER_AUTO_ATTR_S {
|
|
CVI_U8 LumaStr[8][ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 VarThr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 CoringWgtLF[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 CoringWgtHF[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 NonDirFiltStr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 VhDirFiltStr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 AaDirFiltStr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 FilterMode[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
} ISP_YNR_FILTER_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_YNR_FILTER_ATTR_S {
|
|
ISP_OP_TYPE_E enOpType;
|
|
ISP_YNR_FILTER_MANUAL_ATTR_S stManual;
|
|
ISP_YNR_FILTER_AUTO_ATTR_S stAuto;
|
|
} ISP_YNR_FILTER_ATTR_S;
|
|
|
|
typedef struct _ISP_DEHAZE_MANUAL_ATTR_S {
|
|
CVI_U8 Strength;
|
|
} ISP_DEHAZE_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_DEHAZE_AUTO_ATTR_S {
|
|
CVI_U8 Strength[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
} ISP_DEHAZE_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_DEHAZE_ATTR_S {
|
|
CVI_BOOL Enable;
|
|
ISP_OP_TYPE_E enOpType;
|
|
CVI_U16 CumulativeThr;
|
|
CVI_U16 MinTransMapValue;
|
|
ISP_DEHAZE_MANUAL_ATTR_S stManual;
|
|
ISP_DEHAZE_AUTO_ATTR_S stAuto;
|
|
} ISP_DEHAZE_ATTR_S;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// CNR
|
|
//-----------------------------------------------------------------------------
|
|
typedef struct _ISP_CNR_MANUAL_ATTR_S {
|
|
CVI_U8 CnrStr;
|
|
CVI_U8 NoiseSuppressStr;
|
|
CVI_U8 NoiseSuppressGain;
|
|
CVI_U8 FilterType;
|
|
CVI_U8 MotionNrStr;
|
|
CVI_U8 LumaWgt;
|
|
CVI_U8 DetailSmoothMode;
|
|
} ISP_CNR_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_CNR_AUTO_ATTR_S {
|
|
CVI_U8 CnrStr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 NoiseSuppressStr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 NoiseSuppressGain[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 FilterType[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 MotionNrStr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 LumaWgt[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 DetailSmoothMode[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
} ISP_CNR_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_CNR_ATTR_S {
|
|
CVI_BOOL Enable;
|
|
ISP_OP_TYPE_E enOpType;
|
|
ISP_CNR_MANUAL_ATTR_S stManual;
|
|
ISP_CNR_AUTO_ATTR_S stAuto;
|
|
} ISP_CNR_ATTR_S;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// CAC
|
|
//-----------------------------------------------------------------------------
|
|
typedef struct _ISP_CAC_MANUAL_ATTR_S {
|
|
CVI_U8 DePurpleStr;
|
|
} ISP_CAC_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_CAC_AUTO_ATTR_S {
|
|
CVI_U8 DePurpleStr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
} ISP_CAC_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_CAC_ATTR_S {
|
|
CVI_BOOL Enable;
|
|
ISP_OP_TYPE_E enOpType;
|
|
CVI_U16 VarThr;
|
|
CVI_U8 PurpleDetRange;
|
|
CVI_U8 PurpleCb;
|
|
CVI_U8 PurpleCr;
|
|
CVI_U8 GreenCb;
|
|
CVI_U8 GreenCr;
|
|
CVI_U8 TuningMode;
|
|
ISP_CAC_MANUAL_ATTR_S stManual;
|
|
ISP_CAC_AUTO_ATTR_S stAuto;
|
|
} ISP_CAC_ATTR_S;
|
|
|
|
#define GAMMA_NODE_NUM 256
|
|
#define GAMMA_MAX_INTERPOLATION_NUM 5
|
|
typedef enum _ISP_GAMMA_CURVE_TYPE_E {
|
|
ISP_GAMMA_CURVE_DEFAULT,
|
|
ISP_GAMMA_CURVE_SRGB,
|
|
ISP_GAMMA_CURVE_USER_DEFINE,
|
|
ISP_GAMMA_CURVE_MAX
|
|
} ISP_GAMMA_CURVE_TYPE_E;
|
|
|
|
typedef struct _ISP_GAMMA_ATTR_S {
|
|
CVI_BOOL Enable;
|
|
CVI_U16 Table[GAMMA_NODE_NUM];
|
|
|
|
ISP_GAMMA_CURVE_TYPE_E enCurveType;
|
|
} ISP_GAMMA_ATTR_S;
|
|
|
|
typedef struct _ISP_GAMMA_CURVE_ATTR_S {
|
|
CVI_S16 Lv;
|
|
CVI_U16 Tbl[GAMMA_NODE_NUM];
|
|
} ISP_GAMMA_CURVE_ATTR_S;
|
|
|
|
typedef struct _ISP_AUTO_GAMMA_ATTR_S {
|
|
CVI_BOOL Enable;
|
|
CVI_U8 GammaTabNum;
|
|
ISP_GAMMA_CURVE_ATTR_S GammaTab[GAMMA_MAX_INTERPOLATION_NUM];
|
|
} ISP_AUTO_GAMMA_ATTR_S;
|
|
|
|
typedef struct _ISP_NR_MANUAL_ATTR_S {
|
|
CVI_U8 WindowType;
|
|
CVI_U8 DetailSmoothMode;
|
|
CVI_U8 NoiseSuppressStr;
|
|
CVI_U8 FilterType;
|
|
CVI_U8 NoiseSuppressStrMode;
|
|
} ISP_NR_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_NR_AUTO_ATTR_S {
|
|
CVI_U8 WindowType[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 DetailSmoothMode[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 NoiseSuppressStr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 FilterType[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 NoiseSuppressStrMode[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
} ISP_NR_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_NR_ATTR_S {
|
|
CVI_BOOL Enable;
|
|
ISP_OP_TYPE_E enOpType;
|
|
ISP_NR_MANUAL_ATTR_S stManual;
|
|
ISP_NR_AUTO_ATTR_S stAuto;
|
|
} ISP_NR_ATTR_S;
|
|
|
|
typedef struct _ISP_NR_FILTER_MANUAL_ATTR_S {
|
|
CVI_U8 NrLscRatio;
|
|
CVI_U8 LumaStr[8];
|
|
CVI_U16 VarThr;
|
|
CVI_U16 CoringWgtLF;
|
|
CVI_U16 CoringWgtHF;
|
|
CVI_U8 NonDirFiltStr;
|
|
CVI_U8 VhDirFiltStr;
|
|
CVI_U8 AaDirFiltStr;
|
|
} ISP_NR_FILTER_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_NR_FILTER_AUTO_ATTR_S {
|
|
CVI_U8 NrLscRatio[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 LumaStr[8][ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 VarThr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 CoringWgtLF[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 CoringWgtHF[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 NonDirFiltStr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 VhDirFiltStr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 AaDirFiltStr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
} ISP_NR_FILTER_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_NR_FILTER_ATTR_S {
|
|
ISP_OP_TYPE_E enOpType;
|
|
CVI_U8 TuningMode;
|
|
ISP_NR_FILTER_MANUAL_ATTR_S stManual;
|
|
ISP_NR_FILTER_AUTO_ATTR_S stAuto;
|
|
} ISP_NR_FILTER_ATTR_S;
|
|
|
|
typedef struct _ISP_RLSC_MANUAL_ATTR_S {
|
|
CVI_U16 RadialStr;
|
|
} ISP_RLSC_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_RLSC_AUTO_ATTR_S {
|
|
CVI_U16 RadialStr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
} ISP_RLSC_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_RLSC_ATTR_S {
|
|
CVI_BOOL RlscEnable;
|
|
CVI_U16 RlscCenterX;
|
|
CVI_U16 RlscCenterY;
|
|
ISP_OP_TYPE_E enOpType;
|
|
ISP_RLSC_MANUAL_ATTR_S stManual;
|
|
ISP_RLSC_AUTO_ATTR_S stAuto;
|
|
} ISP_RLSC_ATTR_S;
|
|
|
|
typedef struct _ISP_DPC_MANUAL_ATTR_S {
|
|
CVI_BOOL dpc_enable;
|
|
CVI_U8 dpc_staticdpc_enable;
|
|
CVI_U8 dpc_cluster_size;
|
|
CVI_U16 dpc_r_bright_pixel_ratio;
|
|
CVI_U16 dpc_g_bright_pixel_ratio;
|
|
CVI_U16 dpc_b_bright_pixel_ratio;
|
|
CVI_U16 dpc_r_dark_pixel_ratio;
|
|
CVI_U16 dpc_g_dark_pixel_ratio;
|
|
CVI_U16 dpc_b_dark_pixel_ratio;
|
|
CVI_U8 dpc_r_dark_pixel_mindiff;
|
|
CVI_U8 dpc_g_dark_pixel_mindiff;
|
|
CVI_U8 dpc_b_dark_pixel_mindiff;
|
|
CVI_U8 dpc_flat_thre_r;
|
|
CVI_U8 dpc_flat_thre_g;
|
|
CVI_U8 dpc_flat_thre_b;
|
|
CVI_U8 dpc_flat_thre_min_g;
|
|
CVI_U8 dpc_flat_thre_min_rb;
|
|
} ISP_DPC_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_DPC_AUTO_ATTR_S {
|
|
CVI_U8 dpc_enable[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 dpc_staticdpc_enable[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 dpc_cluster_size[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 dpc_r_bright_pixel_ratio[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 dpc_g_bright_pixel_ratio[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 dpc_b_bright_pixel_ratio[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 dpc_r_dark_pixel_ratio[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 dpc_g_dark_pixel_ratio[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 dpc_b_dark_pixel_ratio[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 dpc_r_dark_pixel_mindiff[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 dpc_g_dark_pixel_mindiff[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 dpc_b_dark_pixel_mindiff[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 dpc_flat_thre_r[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 dpc_flat_thre_g[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 dpc_flat_thre_b[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 dpc_flat_thre_min_g[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 dpc_flat_thre_min_rb[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
} ISP_DPC_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_DPC_ATTR_S {
|
|
ISP_OP_TYPE_E enOpType;
|
|
ISP_DPC_MANUAL_ATTR_S stManual;
|
|
ISP_DPC_AUTO_ATTR_S stAuto;
|
|
} ISP_DPC_ATTR_S;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Sharpen
|
|
//-----------------------------------------------------------------------------
|
|
#define SHARPEN_LUT_NUM 33
|
|
typedef struct _ISP_SHARPEN_MANUAL_ATTR_S {
|
|
CVI_U8 EdgeFreq;
|
|
CVI_U8 TextureFreq;
|
|
CVI_U8 LumaAdpGain[SHARPEN_LUT_NUM];
|
|
CVI_U8 GlobalGain;
|
|
CVI_U8 OverShootThr;
|
|
CVI_U8 UnderShootThr;
|
|
CVI_U8 YNoiseLevel;
|
|
CVI_U16 LumaAdpCoring[SHARPEN_LUT_NUM];
|
|
} ISP_SHARPEN_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_SHARPEN_AUTO_ATTR_S {
|
|
CVI_U8 EdgeFreq[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 TextureFreq[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 LumaAdpGain[SHARPEN_LUT_NUM][ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 GlobalGain[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 OverShootThr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 UnderShootThr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 YNoiseLevel[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 LumaAdpCoring[SHARPEN_LUT_NUM][ISP_AUTO_ISO_STRENGTH_NUM];
|
|
} ISP_SHARPEN_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_SHARPEN_ATTR_S {
|
|
CVI_BOOL Enable;
|
|
ISP_OP_TYPE_E enOpType;
|
|
|
|
CVI_U8 TuningMode;
|
|
CVI_U8 TuningModeLevelShift;
|
|
CVI_U8 EdgeGain;
|
|
CVI_U16 TextureGain;
|
|
CVI_U8 EdgeThr;
|
|
CVI_U8 TextureThr;
|
|
CVI_BOOL LumaAdpCoringEn;
|
|
CVI_BOOL LumaAdpGainEn;
|
|
CVI_BOOL DeltaAdpGainEn;
|
|
CVI_U8 DeltaAdpGain[SHARPEN_LUT_NUM];
|
|
CVI_BOOL WdrCoringCompensationEn;
|
|
CVI_U8 WdrCoringCompensationMode;
|
|
CVI_U16 WdrCoringToleranceLevel;
|
|
CVI_U8 WdrCoringHighThr;
|
|
CVI_U8 WdrCoringLowThr;
|
|
|
|
ISP_SHARPEN_MANUAL_ATTR_S stManual;
|
|
ISP_SHARPEN_AUTO_ATTR_S stAuto;
|
|
} ISP_SHARPEN_ATTR_S;
|
|
|
|
typedef struct _ISP_TNR_MANUAL_ATTR_S {
|
|
CVI_U8 MergeMode;
|
|
CVI_U8 MergeModeAlpha;
|
|
CVI_U8 TnrStrength0;
|
|
CVI_U8 MapThdLow0;
|
|
CVI_U8 MapThdHigh0;
|
|
CVI_U8 TnrStrength1;
|
|
CVI_U8 MapThdLow1;
|
|
CVI_U8 MapThdHigh1;
|
|
CVI_S16 BrightnessNoiseLevelLE;
|
|
CVI_S16 BrightnessNoiseLevelSE;
|
|
} ISP_TNR_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_TNR_AUTO_ATTR_S {
|
|
CVI_U8 MergeMode[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 MergeModeAlpha[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 TnrStrength0[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 MapThdLow0[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 MapThdHigh0[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 TnrStrength1[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 MapThdLow1[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 MapThdHigh1[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_S16 BrightnessNoiseLevelLE[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_S16 BrightnessNoiseLevelSE[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
} ISP_TNR_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_TNR_ATTR_S {
|
|
CVI_BOOL Enable;
|
|
ISP_OP_TYPE_E enOpType;
|
|
CVI_BOOL TuningMode;
|
|
CVI_U8 DeflickerMode;
|
|
CVI_U16 DeflickerToleranceLevel;
|
|
ISP_TNR_MANUAL_ATTR_S stManual;
|
|
ISP_TNR_AUTO_ATTR_S stAuto;
|
|
} ISP_TNR_ATTR_S;
|
|
|
|
typedef struct _ISP_TNR_NOISE_MODEL_MANUAL_ATTR_S {
|
|
CVI_U8 RNoiseLevel0;
|
|
CVI_U8 GNoiseLevel0;
|
|
CVI_U8 BNoiseLevel0;
|
|
CVI_U8 RNoiseLevel1;
|
|
CVI_U8 GNoiseLevel1;
|
|
CVI_U8 BNoiseLevel1;
|
|
CVI_U8 RNoiseHiLevel0;
|
|
CVI_U8 GNoiseHiLevel0;
|
|
CVI_U8 BNoiseHiLevel0;
|
|
CVI_U8 RNoiseHiLevel1;
|
|
CVI_U8 GNoiseHiLevel1;
|
|
CVI_U8 BNoiseHiLevel1;
|
|
} ISP_TNR_NOISE_MODEL_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_TNR_NOISE_MODEL_AUTO_ATTR_S {
|
|
CVI_U8 RNoiseLevel0[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 GNoiseLevel0[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 BNoiseLevel0[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 RNoiseLevel1[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 GNoiseLevel1[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 BNoiseLevel1[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 RNoiseHiLevel0[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 GNoiseHiLevel0[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 BNoiseHiLevel0[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 RNoiseHiLevel1[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 GNoiseHiLevel1[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 BNoiseHiLevel1[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
} ISP_TNR_NOISE_MODEL_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_TNR_NOISE_MODEL_ATTR_S {
|
|
ISP_OP_TYPE_E enOpType;
|
|
ISP_TNR_NOISE_MODEL_MANUAL_ATTR_S stManual;
|
|
ISP_TNR_NOISE_MODEL_AUTO_ATTR_S stAuto;
|
|
} ISP_TNR_NOISE_MODEL_ATTR_S;
|
|
|
|
typedef struct _ISP_TNR_LUMA_MOTION_MANUAL_ATTR_S {
|
|
CVI_U16 L2mIn0[4];
|
|
CVI_U8 L2mOut0[4];
|
|
CVI_U16 L2mIn1[4];
|
|
CVI_U8 L2mOut1[4];
|
|
} ISP_TNR_LUMA_MOTION_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_TNR_LUMA_MOTION_AUTO_ATTR_S {
|
|
CVI_U16 L2mIn0[4][ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 L2mOut0[4][ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 L2mIn1[4][ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 L2mOut1[4][ISP_AUTO_ISO_STRENGTH_NUM];
|
|
} ISP_TNR_LUMA_MOTION_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_TNR_LUMA_MOTION_ATTR_S {
|
|
ISP_OP_TYPE_E enOpType;
|
|
ISP_TNR_LUMA_MOTION_MANUAL_ATTR_S stManual;
|
|
ISP_TNR_LUMA_MOTION_AUTO_ATTR_S stAuto;
|
|
} ISP_TNR_LUMA_MOTION_ATTR_S;
|
|
|
|
typedef struct _ISP_TNR_GHOST_MANUAL_ATTR_S {
|
|
CVI_U8 PrtctIn0[4];
|
|
CVI_U8 PrtctOut0[4];
|
|
CVI_U8 PrtctIn1[4];
|
|
CVI_U8 PrtctOut1[4];
|
|
} ISP_TNR_GHOST_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_TNR_GHOST_AUTO_ATTR_S {
|
|
CVI_U8 PrtctIn0[4][ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 PrtctOut0[4][ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 PrtctIn1[4][ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 PrtctOut1[4][ISP_AUTO_ISO_STRENGTH_NUM];
|
|
} ISP_TNR_GHOST_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_TNR_GHOST_ATTR_S {
|
|
ISP_OP_TYPE_E enOpType;
|
|
ISP_TNR_GHOST_MANUAL_ATTR_S stManual;
|
|
ISP_TNR_GHOST_AUTO_ATTR_S stAuto;
|
|
} ISP_TNR_GHOST_ATTR_S;
|
|
|
|
typedef struct _ISP_TNR_MT_PRT_MANUAL_ATTR_S {
|
|
CVI_U8 LowMtPrtLevel;
|
|
CVI_U8 LowMtPrtIn[4];
|
|
CVI_U8 LowMtPrtOut[4];
|
|
CVI_S16 LowMtPrtSlope0[3];
|
|
} ISP_TNR_MT_PRT_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_TNR_MT_PRT_AUTO_ATTR_S {
|
|
CVI_U8 LowMtPrtLevel[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 LowMtPrtIn[4][ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 LowMtPrtOut[4][ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_S16 LowMtPrtSlope0[3][ISP_AUTO_ISO_STRENGTH_NUM];
|
|
} ISP_TNR_MT_PRT_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_TNR_MT_PRT_ATTR_S {
|
|
CVI_U8 LowMtPrtEn;
|
|
ISP_TNR_MT_PRT_MANUAL_ATTR_S stManual;
|
|
ISP_TNR_MT_PRT_AUTO_ATTR_S stAuto;
|
|
} ISP_TNR_MT_PRT_ATTR_S;
|
|
|
|
typedef struct _ISP_CLUT_MANUAL_ATTR_S {
|
|
} ISP_CLUT_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_CLUT_AUTO_ATTR_S {
|
|
} ISP_CLUT_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_CLUT_ATTR_S {
|
|
CVI_U8 hsv3dlut_enable;
|
|
CVI_U8 hsv3dlut_h_clamp_wrap_opt;
|
|
} ISP_CLUT_ATTR_S;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// BlackLevel
|
|
//-----------------------------------------------------------------------------
|
|
typedef struct _ISP_BLACK_LEVEL_MANUAL_ATTR_S {
|
|
CVI_U16 OffsetR;
|
|
CVI_U16 OffsetGr;
|
|
CVI_U16 OffsetGb;
|
|
CVI_U16 OffsetB;
|
|
CVI_U16 GainR;
|
|
CVI_U16 GainGr;
|
|
CVI_U16 GainGb;
|
|
CVI_U16 GainB;
|
|
} ISP_BLACK_LEVEL_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_BLACK_LEVEL_AUTO_ATTR_S {
|
|
CVI_U16 OffsetR[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 OffsetGr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 OffsetGb[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 OffsetB[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 GainR[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 GainGr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 GainGb[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 GainB[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
} ISP_BLACK_LEVEL_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_BLACK_LEVEL_ATTR_S {
|
|
CVI_U8 Enable;
|
|
ISP_OP_TYPE_E enOpType;
|
|
ISP_BLACK_LEVEL_MANUAL_ATTR_S stManual;
|
|
ISP_BLACK_LEVEL_AUTO_ATTR_S stAuto;
|
|
} ISP_BLACK_LEVEL_ATTR_S;
|
|
|
|
typedef struct _ISP_COLOR_TONE_MANUAL_ATTR_S {
|
|
} ISP_COLOR_TONE_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_COLOR_TONE_AUTO_ATTR_S {
|
|
} ISP_COLOR_TONE_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_COLOR_TONE_ATTR_S {
|
|
CVI_BOOL wbg_enable; // TODO@Kidd remove this
|
|
CVI_U16 u16RedCastGain;
|
|
CVI_U16 u16GreenCastGain;
|
|
CVI_U16 u16BlueCastGain;
|
|
} ISP_COLOR_TONE_ATTR_S;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// DCI
|
|
//-----------------------------------------------------------------------------
|
|
typedef struct _ISP_DCI_MANUAL_ATTR_S {
|
|
CVI_U16 ContrastGain;
|
|
CVI_U8 BlcThr;
|
|
CVI_U8 WhtThr;
|
|
CVI_U16 BlcCtrl;
|
|
CVI_U16 WhtCtrl;
|
|
} ISP_DCI_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_DCI_AUTO_ATTR_S {
|
|
CVI_U16 ContrastGain[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 BlcThr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 WhtThr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 BlcCtrl[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 WhtCtrl[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
} ISP_DCI_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_DCI_ATTR_S {
|
|
CVI_BOOL Enable;
|
|
CVI_BOOL TuningMode;
|
|
ISP_OP_TYPE_E enOpType;
|
|
CVI_U8 Method;
|
|
CVI_U32 Speed;
|
|
CVI_U16 DciStrength;
|
|
ISP_DCI_MANUAL_ATTR_S stManual;
|
|
ISP_DCI_AUTO_ATTR_S stAuto;
|
|
} ISP_DCI_ATTR_S;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// MeshShading
|
|
//-----------------------------------------------------------------------------
|
|
typedef enum _ISP_MLSC_COLOR_TEMPERATURE {
|
|
ISP_MLSC_COLOR_TEMPERATURE_0,
|
|
ISP_MLSC_COLOR_TEMPERATURE_1,
|
|
ISP_MLSC_COLOR_TEMPERATURE_2,
|
|
ISP_MLSC_COLOR_TEMPERATURE_3,
|
|
ISP_MLSC_COLOR_TEMPERATURE_4,
|
|
ISP_MLSC_COLOR_TEMPERATURE_5,
|
|
ISP_MLSC_COLOR_TEMPERATURE_6,
|
|
ISP_MLSC_COLOR_TEMPERATURE_SIZE,
|
|
} ISP_MLSC_COLOR_TEMPERATURE;
|
|
|
|
typedef struct _ISP_MESH_SHADING_MANUAL_ATTR_S {
|
|
CVI_U16 MeshStr;
|
|
} ISP_MESH_SHADING_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_MESH_SHADING_AUTO_ATTR_S {
|
|
CVI_U16 MeshStr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
} ISP_MESH_SHADING_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_MESH_SHADING_ATTR_S {
|
|
CVI_BOOL Enable;
|
|
ISP_OP_TYPE_E enOpType;
|
|
ISP_MESH_SHADING_MANUAL_ATTR_S stManual;
|
|
ISP_MESH_SHADING_AUTO_ATTR_S stAuto;
|
|
} ISP_MESH_SHADING_ATTR_S;
|
|
|
|
typedef struct _ISP_MESH_SHADING_GAIN_LUT_S {
|
|
CVI_U16 RGain[CVI_ISP_LSC_GRID_POINTS];
|
|
CVI_U16 GGain[CVI_ISP_LSC_GRID_POINTS];
|
|
CVI_U16 BGain[CVI_ISP_LSC_GRID_POINTS];
|
|
} ISP_MESH_SHADING_GAIN_LUT_S;
|
|
|
|
typedef struct _ISP_MESH_SHADING_GAIN_LUT_ATTR_S {
|
|
CVI_U8 Size;
|
|
CVI_U16 ColorTemperature[ISP_MLSC_COLOR_TEMPERATURE_SIZE];
|
|
ISP_MESH_SHADING_GAIN_LUT_S LscGainLut[ISP_MLSC_COLOR_TEMPERATURE_SIZE];
|
|
} ISP_MESH_SHADING_GAIN_LUT_ATTR_S;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// RadialShading
|
|
//-----------------------------------------------------------------------------
|
|
typedef enum _ISP_RLSC_COLOR_TEMPERATURE {
|
|
ISP_RLSC_COLOR_TEMPERATURE_LOW,
|
|
ISP_RLSC_COLOR_TEMPERATURE_HIGH,
|
|
ISP_RLSC_COLOR_TEMPERATURE_SIZE,
|
|
} ISP_RLSC_COLOR_TEMPERATURE;
|
|
|
|
#define ISP_RLSC_WINDOW_SIZE 32
|
|
typedef struct _ISP_RADIAL_SHADING_ATTR_S {
|
|
CVI_BOOL Enable;
|
|
CVI_U16 CenterX;
|
|
CVI_U16 CenterY;
|
|
} ISP_RADIAL_SHADING_ATTR_S;
|
|
|
|
typedef struct _ISP_RADIAL_SHADING_GAIN_LUT_ATTR_S {
|
|
CVI_U16 RLscGainLut[ISP_RLSC_COLOR_TEMPERATURE_SIZE][ISP_RLSC_WINDOW_SIZE];
|
|
} ISP_RADIAL_SHADING_GAIN_LUT_ATTR_S;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Demosaic
|
|
//-----------------------------------------------------------------------------
|
|
typedef struct _ISP_DEMOSAIC_MANUAL_ATTR_S {
|
|
CVI_U16 CoarseEdgeThr;
|
|
CVI_U16 CoarseStr;
|
|
CVI_U16 FineEdgeThr;
|
|
CVI_U16 FineStr;
|
|
} ISP_DEMOSAIC_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_DEMOSAIC_AUTO_ATTR_S {
|
|
CVI_U16 CoarseEdgeThr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 CoarseStr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 FineEdgeThr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 FineStr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
} ISP_DEMOSAIC_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_DEMOSAIC_ATTR_S {
|
|
CVI_BOOL Enable;
|
|
CVI_BOOL TuningMode;
|
|
ISP_OP_TYPE_E enOpType;
|
|
ISP_DEMOSAIC_MANUAL_ATTR_S stManual;
|
|
ISP_DEMOSAIC_AUTO_ATTR_S stAuto;
|
|
} ISP_DEMOSAIC_ATTR_S;
|
|
|
|
typedef struct _ISP_DEMOSAIC_DEMOIRE_MANUAL_ATTR_S {
|
|
CVI_BOOL DetailSmoothEnable;
|
|
CVI_U8 DetailSmoothStr;
|
|
CVI_U8 EdgeWgtStr;
|
|
} ISP_DEMOSAIC_DEMOIRE_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_DEMOSAIC_DEMOIRE_AUTO_ATTR_S {
|
|
CVI_BOOL DetailSmoothEnable[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 DetailSmoothStr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 EdgeWgtStr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
} ISP_DEMOSAIC_DEMOIRE_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_DEMOSAIC_DEMOIRE_ATTR_S {
|
|
ISP_OP_TYPE_E enOpType;
|
|
ISP_DEMOSAIC_DEMOIRE_MANUAL_ATTR_S stManual;
|
|
ISP_DEMOSAIC_DEMOIRE_AUTO_ATTR_S stAuto;
|
|
} ISP_DEMOSAIC_DEMOIRE_ATTR_S;
|
|
|
|
typedef struct _ISP_DEMOSAIC_FILTER_MANUAL_ATTR_S {
|
|
CVI_U16 DetailWgtThr;
|
|
CVI_U8 DetailWgtSlope;
|
|
CVI_U8 DetailWgtMin;
|
|
CVI_U8 DetailWgtMax;
|
|
CVI_U16 LumaWgtThr;
|
|
CVI_U8 LumaWgtSlope;
|
|
CVI_U8 LumaWgtMin;
|
|
CVI_U8 LumaWgtMax;
|
|
} ISP_DEMOSAIC_FILTER_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_DEMOSAIC_FILTER_AUTO_ATTR_S {
|
|
CVI_U16 DetailWgtThr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 DetailWgtSlope[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 DetailWgtMin[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 DetailWgtMax[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 LumaWgtThr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 LumaWgtSlope[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 LumaWgtMin[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 LumaWgtMax[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
} ISP_DEMOSAIC_FILTER_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_DEMOSAIC_FILTER_ATTR_S {
|
|
ISP_OP_TYPE_E enOpType;
|
|
ISP_DEMOSAIC_FILTER_MANUAL_ATTR_S stManual;
|
|
ISP_DEMOSAIC_FILTER_AUTO_ATTR_S stAuto;
|
|
} ISP_DEMOSAIC_FILTER_ATTR_S;
|
|
|
|
typedef struct _ISP_DEMOSAIC_EE_MANUAL_ATTR_S {
|
|
CVI_BOOL EdgeEnhanceEnable;
|
|
CVI_U16 OverShtGain;
|
|
CVI_U16 UnderShtGain;
|
|
CVI_U8 HFGainTable[33];
|
|
CVI_U8 GainTable[33];
|
|
CVI_U8 NoiseSuppressStr;
|
|
} ISP_DEMOSAIC_EE_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_DEMOSAIC_EE_AUTO_ATTR_S {
|
|
CVI_BOOL EdgeEnhanceEnable[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 OverShtGain[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 UnderShtGain[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 HFGainTable[33][ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 GainTable[33][ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 NoiseSuppressStr[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
} ISP_DEMOSAIC_EE_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_DEMOSAIC_EE_ATTR_S {
|
|
ISP_OP_TYPE_E enOpType;
|
|
ISP_DEMOSAIC_EE_MANUAL_ATTR_S stManual;
|
|
ISP_DEMOSAIC_EE_AUTO_ATTR_S stAuto;
|
|
} ISP_DEMOSAIC_EE_ATTR_S;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// CCM
|
|
//-----------------------------------------------------------------------------
|
|
// Saturation
|
|
typedef struct _ISP_SATURATION_MANUAL_ATTR_S {
|
|
CVI_U8 Saturation;
|
|
} ISP_SATURATION_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_SATURATION_AUTO_ATTR_S {
|
|
CVI_U8 Saturation[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
} ISP_SATURATION_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_SATURATION_ATTR_SS {
|
|
ISP_OP_TYPE_E enOpType;
|
|
ISP_SATURATION_AUTO_ATTR_S stAuto;
|
|
ISP_SATURATION_MANUAL_ATTR_S stManual;
|
|
} ISP_SATURATION_ATTR_S;
|
|
|
|
// CCM
|
|
typedef struct _ISP_COLORMATRIX_ATTR_S {
|
|
CVI_U16 ColorTemp;
|
|
CVI_S16 CCM[9];
|
|
} ISP_COLORMATRIX_ATTR_S;
|
|
|
|
typedef struct _ISP_CCM_MANUAL_ATTR_S {
|
|
CVI_U8 SatEnable;
|
|
CVI_S16 CCM[9];
|
|
} ISP_CCM_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_CCM_AUTO_ATTR_S {
|
|
CVI_U8 ISOActEnable;
|
|
CVI_U8 TempActEnable;
|
|
CVI_U8 CCMTabNum;
|
|
ISP_COLORMATRIX_ATTR_S CCMTab[7];
|
|
} ISP_CCM_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_CCM_ATTR_S {
|
|
CVI_BOOL Enable;
|
|
ISP_OP_TYPE_E enOpType;
|
|
ISP_CCM_AUTO_ATTR_S stAuto;
|
|
ISP_CCM_MANUAL_ATTR_S stManual;
|
|
} ISP_CCM_ATTR_S;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// HSV
|
|
//-----------------------------------------------------------------------------
|
|
typedef struct _ISP_HSV_MANUAL_ATTR_S {
|
|
CVI_U8 AllSatStrength;
|
|
CVI_U16 AllSatCoring;
|
|
CVI_U16 SatCoringLinearTh;
|
|
CVI_U16 SatCoringLinearLmt;
|
|
} ISP_HSV_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_HSV_AUTO_ATTR_S {
|
|
CVI_U8 AllSatStrength[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 AllSatCoring[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 SatCoringLinearTh[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 SatCoringLinearLmt[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
} ISP_HSV_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_HSV_ATTR_S {
|
|
CVI_BOOL Enable;
|
|
ISP_OP_TYPE_E enOpType;
|
|
ISP_HSV_AUTO_ATTR_S stAuto;
|
|
ISP_HSV_MANUAL_ATTR_S stManual;
|
|
} ISP_HSV_ATTR_S;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// DPC
|
|
//-----------------------------------------------------------------------------
|
|
typedef struct _ISP_DP_DYNAMIC_MANUAL_ATTR_S {
|
|
CVI_U8 ClusterSize;
|
|
CVI_U8 BrightDefectToNormalPixRatio;
|
|
CVI_U8 DarkDefectToNormalPixRatio;
|
|
CVI_U8 FlatThreR;
|
|
CVI_U8 FlatThreG;
|
|
CVI_U8 FlatThreB;
|
|
CVI_U8 FlatThreMinG;
|
|
CVI_U8 FlatThreMinRB;
|
|
} ISP_DP_DYNAMIC_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_DP_DYNAMIC_AUTO_ATTR_S {
|
|
CVI_U8 ClusterSize[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 BrightDefectToNormalPixRatio[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 DarkDefectToNormalPixRatio[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 FlatThreR[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 FlatThreG[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 FlatThreB[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 FlatThreMinG[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 FlatThreMinRB[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
} ISP_DP_DYNAMIC_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_DP_DYNAMIC_ATTR_S {
|
|
CVI_BOOL Enable;
|
|
// CVI_U32 StaticDpcEnable;
|
|
ISP_OP_TYPE_E enOpType;
|
|
ISP_DP_DYNAMIC_MANUAL_ATTR_S stManual;
|
|
ISP_DP_DYNAMIC_AUTO_ATTR_S stAuto;
|
|
} ISP_DP_DYNAMIC_ATTR_S;
|
|
|
|
#define STATIC_DP_COUNT_MAX 4096
|
|
typedef struct _ISP_DP_STATIC_ATTR_S {
|
|
CVI_BOOL Enable;
|
|
CVI_U16 BrightCount;
|
|
CVI_U16 DarkCount;
|
|
CVI_U32 BrightTable[STATIC_DP_COUNT_MAX];
|
|
CVI_U32 DarkTable[STATIC_DP_COUNT_MAX];
|
|
CVI_BOOL Show; // not support yet
|
|
} ISP_DP_STATIC_ATTR_S;
|
|
|
|
typedef enum _CVI_STATIC_DP_TYPE_E {
|
|
ISP_STATIC_DP_BRIGHT,
|
|
ISP_STATIC_DP_DARK,
|
|
} CVI_STATIC_DP_TYPE_E;
|
|
|
|
typedef enum _ISP_STATUS_E {
|
|
ISP_STATUS_INIT,
|
|
ISP_STATUS_SUCCESS,
|
|
ISP_STATUS_TIMEOUT,
|
|
ISP_STATUS_SIZE,
|
|
} ISP_STATUS_E;
|
|
|
|
typedef struct _ISP_DP_CALIB_ATTR_S {
|
|
CVI_BOOL EnableDetect;
|
|
CVI_STATIC_DP_TYPE_E StaticDPType;
|
|
CVI_U8 StartThresh;
|
|
CVI_U16 CountMax;
|
|
CVI_U16 CountMin;
|
|
CVI_U16 TimeLimit;
|
|
CVI_BOOL saveFileEn;
|
|
|
|
// read only
|
|
CVI_U32 Table[STATIC_DP_COUNT_MAX];
|
|
CVI_U8 FinishThresh;
|
|
CVI_U16 Count;
|
|
ISP_STATUS_E Status;
|
|
} ISP_DP_CALIB_ATTR_S;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Crosstalk
|
|
//-----------------------------------------------------------------------------
|
|
typedef struct _ISP_CROSSTALK_MANUAL_ATTR_S {
|
|
CVI_U16 Strength;
|
|
} ISP_CROSSTALK_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_CROSSTALK_AUTO_ATTR_S {
|
|
CVI_U16 Strength[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
} ISP_CROSSTALK_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_CROSSTALK_ATTR_S {
|
|
CVI_BOOL Enable;
|
|
CVI_U16 GrGbDiffThreSec[4];
|
|
CVI_U16 FlatThre[4];
|
|
ISP_OP_TYPE_E enOpType;
|
|
ISP_CROSSTALK_MANUAL_ATTR_S stManual;
|
|
ISP_CROSSTALK_AUTO_ATTR_S stAuto;
|
|
} ISP_CROSSTALK_ATTR_S;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// FSWDR
|
|
//-----------------------------------------------------------------------------
|
|
typedef struct _ISP_FSWDR_MANUAL_ATTR_S {
|
|
CVI_U8 MergeMode;
|
|
CVI_U8 MergeModeAlpha;
|
|
CVI_U16 WDRCombineShortThr;
|
|
CVI_U16 WDRCombineLongThr;
|
|
CVI_U8 WDRCombineMinWeight;
|
|
CVI_U8 WDRCombineMaxWeight;
|
|
} ISP_FSWDR_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_FSWDR_AUTO_ATTR_S {
|
|
CVI_U8 MergeMode[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U8 MergeModeAlpha[ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 WDRCombineShortThr[ISP_AUTO_LV_NUM];
|
|
CVI_U16 WDRCombineLongThr[ISP_AUTO_LV_NUM];
|
|
CVI_U8 WDRCombineMinWeight[ISP_AUTO_LV_NUM];
|
|
CVI_U8 WDRCombineMaxWeight[ISP_AUTO_LV_NUM];
|
|
} ISP_FSWDR_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_FSWDR_ATTR_S {
|
|
CVI_BOOL Enable;
|
|
CVI_BOOL MotionCompEnable;
|
|
CVI_BOOL WDRCombineSNRAwareEn;
|
|
CVI_U16 WDRCombineSNRAwareSmoothLevel;
|
|
CVI_U16 WDRCombineSNRAwareLowThr;
|
|
CVI_U16 WDRCombineSNRAwareHighThr;
|
|
CVI_U8 WDRCombineSNRAwareToleranceLevel;
|
|
CVI_U8 TuningMode;
|
|
ISP_OP_TYPE_E enOpType;
|
|
ISP_FSWDR_MANUAL_ATTR_S stManual;
|
|
ISP_FSWDR_AUTO_ATTR_S stAuto;
|
|
} ISP_FSWDR_ATTR_S;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// DRC
|
|
//-----------------------------------------------------------------------------
|
|
typedef struct _ISP_DRC_MANUAL_ATTR_S {
|
|
CVI_U16 NLDetailDarkGain[4];
|
|
CVI_S32 NLDetailDarkAmplitude[4];
|
|
CVI_U16 NLDetailBrightGain[4];
|
|
CVI_S32 NLDetailBrightAmplitude[4];
|
|
CVI_U32 TargetYScale;
|
|
CVI_U32 SETargetYScale;
|
|
CVI_U32 LETargetYScale;
|
|
CVI_U16 ContrastDarkMinThrd;
|
|
CVI_U16 ContrastDarkMaxThrd;
|
|
CVI_U8 ContrastDarkMinWeight;
|
|
CVI_U8 ContrastDarkMaxWeight;
|
|
CVI_U16 ContrastBrightMinThrd;
|
|
CVI_U16 ContrastBrightMaxThrd;
|
|
CVI_U8 ContrastBrightMinWeight;
|
|
CVI_U8 ContrastBrightMaxWeight;
|
|
} ISP_DRC_MANUAL_ATTR_S;
|
|
|
|
typedef struct _ISP_DRC_AUTO_ATTR_S {
|
|
CVI_U16 NLDetailDarkGain[4][ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_S32 NLDetailDarkAmplitude[4][ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U16 NLDetailBrightGain[4][ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_S32 NLDetailBrightAmplitude[4][ISP_AUTO_ISO_STRENGTH_NUM];
|
|
CVI_U32 TargetYScale[ISP_AUTO_LV_NUM];
|
|
CVI_U32 SETargetYScale[ISP_AUTO_LV_NUM];
|
|
CVI_U32 LETargetYScale[ISP_AUTO_LV_NUM];
|
|
CVI_U16 ContrastDarkMinThrd[ISP_AUTO_LV_NUM];
|
|
CVI_U16 ContrastDarkMaxThrd[ISP_AUTO_LV_NUM];
|
|
CVI_U8 ContrastDarkMinWeight[ISP_AUTO_LV_NUM];
|
|
CVI_U8 ContrastDarkMaxWeight[ISP_AUTO_LV_NUM];
|
|
CVI_U16 ContrastBrightMinThrd[ISP_AUTO_LV_NUM];
|
|
CVI_U16 ContrastBrightMaxThrd[ISP_AUTO_LV_NUM];
|
|
CVI_U8 ContrastBrightMinWeight[ISP_AUTO_LV_NUM];
|
|
CVI_U8 ContrastBrightMaxWeight[ISP_AUTO_LV_NUM];
|
|
} ISP_DRC_AUTO_ATTR_S;
|
|
|
|
typedef struct _ISP_DRC_ATTR_S {
|
|
CVI_BOOL Enable;
|
|
CVI_BOOL NLDetailEnhanceEn;
|
|
CVI_U8 TuningMode;
|
|
CVI_U8 ToneCurveSelect;
|
|
CVI_U8 CoarseFltScale;
|
|
CVI_U16 CurveUserDefine[769];
|
|
CVI_U16 BrightUserDefine[513];
|
|
CVI_U16 DarkUserDefine[257];
|
|
CVI_U32 DRCMu[32];
|
|
CVI_U8 DRangeFltScale;
|
|
CVI_U8 DRangeFltCoef;
|
|
CVI_U8 SpatialFltScale;
|
|
CVI_U8 SpatialFltCoef;
|
|
CVI_U32 TargetYLowBound;
|
|
CVI_U32 TargetYHighBound;
|
|
CVI_U32 SETargetYLowBound;
|
|
CVI_U32 SETargetYHighBound;
|
|
CVI_U32 LETargetYLowBound;
|
|
CVI_U32 LETargetYHighBound;
|
|
CVI_U32 LocalToneEn;
|
|
CVI_U32 ToneCurveSmooth;
|
|
CVI_U16 HdrStrength;
|
|
CVI_U8 PwlEn;
|
|
CVI_U16 LinearStart;
|
|
CVI_U16 LinearEnd;
|
|
CVI_U16 DarkOffset;
|
|
ISP_OP_TYPE_E enOpType;
|
|
ISP_DRC_MANUAL_ATTR_S stManual;
|
|
ISP_DRC_AUTO_ATTR_S stAuto;
|
|
} ISP_DRC_ATTR_S;
|
|
|
|
typedef struct _ISP_MONO_ATTR_S {
|
|
CVI_BOOL Enable;
|
|
} ISP_MONO_ATTR_S;
|
|
|
|
#define MAX_VPSS_ADJUSTMENT_GRP 4
|
|
typedef struct _VPSS_ATTR_S {
|
|
CVI_S32 brightness[MAX_VPSS_ADJUSTMENT_GRP];
|
|
CVI_S32 contrast[MAX_VPSS_ADJUSTMENT_GRP];
|
|
CVI_S32 saturation[MAX_VPSS_ADJUSTMENT_GRP];
|
|
CVI_S32 hue[MAX_VPSS_ADJUSTMENT_GRP];
|
|
} VPSS_ADJUSTMENT_ATTR_S;
|
|
|
|
typedef struct _ISP_INNER_STATE_INFO_S {
|
|
CVI_U32 wdrHistBinNum;
|
|
CVI_U32 blcOffsetR;
|
|
CVI_U32 blcOffsetGr;
|
|
CVI_U32 blcOffsetGb;
|
|
CVI_U32 blcOffsetB;
|
|
CVI_U32 blcGainR;
|
|
CVI_U32 blcGainGr;
|
|
CVI_U32 blcGainGb;
|
|
CVI_U32 blcGainB;
|
|
CVI_S32 ccm[9];
|
|
CVI_U32 wdrHistogramBefore[MAX_HIST_BINS * MAX_HIST_BINS];
|
|
CVI_U32 wdrHistogramAfter[MAX_HIST_BINS * MAX_HIST_BINS];
|
|
CVI_U32 *pWdrHistogram;
|
|
CVI_U32 *pWdrHistogramResult;
|
|
CVI_U32 drcDarkTone[LTM_DARK_CURVE_NODE_NUM];
|
|
CVI_U32 drcBrightTone[LTM_BRIGHT_CURVE_NODE_NUM];
|
|
} ISP_INNER_STATE_INFO_S;
|
|
|
|
// Backward Compatible
|
|
#include "cvi_isp_backwardcompatible.h"
|
|
|
|
#ifdef __cplusplus
|
|
#if __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* End of #ifdef __cplusplus */
|
|
|
|
#endif /* __CVI_COMM_ISP_H__ */
|