mirror of
https://github.com/sipeed/LicheeRV-Nano-Build.git
synced 2026-11-09 18:04:55 -06:00
fix missing file
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -177,5 +177,4 @@ buildroot/board/cvitek/SG200X/overlay/mnt/system/usr/bin/ive_stress
|
||||
buildroot/board/cvitek/SG200X/overlay/mnt/system/usr/bin/sample_cannyhysedge
|
||||
buildroot/board/cvitek/SG200X/overlay/mnt/system/sdk-release
|
||||
buildroot/board/cvitek/SG200X/overlay/mnt/system/auto.sh
|
||||
middleware/v2/modules/*
|
||||
middleware/v2/mod_tmp/*
|
||||
|
||||
1
middleware/v2/modules/isp/include/cv180x
Symbolic link
1
middleware/v2/modules/isp/include/cv180x
Symbolic link
@@ -0,0 +1 @@
|
||||
cv181x
|
||||
1
middleware/v2/modules/isp/include/cv181x
Symbolic link
1
middleware/v2/modules/isp/include/cv181x
Symbolic link
@@ -0,0 +1 @@
|
||||
sg200x
|
||||
100
middleware/v2/modules/isp/include/sg200x/cvi_ae.h
Normal file
100
middleware/v2/modules/isp/include/sg200x/cvi_ae.h
Normal file
@@ -0,0 +1,100 @@
|
||||
/*
|
||||
* Copyright (C) Cvitek Co., Ltd. 2019-2021. All rights reserved.
|
||||
*
|
||||
* File Name: include/cvi_ae.h
|
||||
* Description:
|
||||
*/
|
||||
|
||||
#ifndef __CVI_AE_H__
|
||||
#define __CVI_AE_H__
|
||||
|
||||
#include "cvi_comm_isp.h"
|
||||
#include "cvi_comm_3a.h"
|
||||
#include "cvi_ae_comm.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#endif /* End of #ifdef __cplusplus */
|
||||
|
||||
typedef enum _AE_EXPOSURE_PROGRAM {
|
||||
MANUAL_PROGRAM = 1,
|
||||
NORMAL_PROGRAM,
|
||||
APERATURE_PRIORITY_PROGRAM,
|
||||
SHUTTER_PRIORITY_PROGRAM,
|
||||
SLOW_SHUTTER_PROGRAM,
|
||||
FAST_SHUTTER_PROGRAM,
|
||||
PORTRAIT_PROGRAM,
|
||||
LANDSCAPE_PROGRAM,
|
||||
} AE_EXPOSURE_PROGRAM;
|
||||
|
||||
typedef enum _AE_EXPOSURE_MODE {
|
||||
AUTO_MODE,
|
||||
MANUAL_MODE,
|
||||
} AE_EXPOSURE_MODE;
|
||||
|
||||
/* The interface of ae lib register to isp. */
|
||||
CVI_S32 CVI_AE_Register(VI_PIPE ViPipe, ALG_LIB_S *pstAeLib);
|
||||
CVI_S32 CVI_AE_UnRegister(VI_PIPE ViPipe, ALG_LIB_S *pstAeLib);
|
||||
|
||||
/* The callback function of sensor register to ae lib. */
|
||||
CVI_S32 CVI_AE_SensorRegCallBack(VI_PIPE ViPipe, ALG_LIB_S *pstAeLib, ISP_SNS_ATTR_INFO_S *pstSnsAttrInfo,
|
||||
AE_SENSOR_REGISTER_S *pstRegister);
|
||||
CVI_S32 CVI_AE_SensorUnRegCallBack(VI_PIPE ViPipe, ALG_LIB_S *pstAeLib, SENSOR_ID SensorId);
|
||||
|
||||
CVI_S32 CVI_ISP_SetExposureAttr(VI_PIPE ViPipe, const ISP_EXPOSURE_ATTR_S *pstExpAttr);
|
||||
CVI_S32 CVI_ISP_GetExposureAttr(VI_PIPE ViPipe, ISP_EXPOSURE_ATTR_S *pstExpAttr);
|
||||
|
||||
CVI_S32 CVI_ISP_QueryExposureInfo(VI_PIPE ViPipe, ISP_EXP_INFO_S *pstExpInfo);
|
||||
|
||||
CVI_S32 CVI_ISP_SetWDRExposureAttr(VI_PIPE ViPipe, const ISP_WDR_EXPOSURE_ATTR_S *pstWDRExpAttr);
|
||||
CVI_S32 CVI_ISP_GetWDRExposureAttr(VI_PIPE ViPipe, ISP_WDR_EXPOSURE_ATTR_S *pstWDRExpAttr);
|
||||
|
||||
CVI_S32 CVI_ISP_SetAERouteAttr(VI_PIPE ViPipe, const ISP_AE_ROUTE_S *pstAERouteAttr);
|
||||
CVI_S32 CVI_ISP_GetAERouteAttr(VI_PIPE ViPipe, ISP_AE_ROUTE_S *pstAERouteAttr);
|
||||
|
||||
CVI_S32 CVI_ISP_SetAERouteAttrEx(VI_PIPE ViPipe, const ISP_AE_ROUTE_EX_S *pstAERouteAttrEx);
|
||||
CVI_S32 CVI_ISP_GetAERouteAttrEx(VI_PIPE ViPipe, ISP_AE_ROUTE_EX_S *pstAERouteAttrEx);
|
||||
|
||||
CVI_S32 CVI_ISP_SetSmartExposureAttr(VI_PIPE ViPipe, const ISP_SMART_EXPOSURE_ATTR_S *pstSmartExpAttr);
|
||||
CVI_S32 CVI_ISP_GetSmartExposureAttr(VI_PIPE ViPipe, ISP_SMART_EXPOSURE_ATTR_S *pstSmartExpAttr);
|
||||
|
||||
CVI_S32 CVI_ISP_SetAEStatisticsConfig(VI_PIPE ViPipe, const ISP_AE_STATISTICS_CFG_S *pstAeStatCfg);
|
||||
CVI_S32 CVI_ISP_GetAEStatisticsConfig(VI_PIPE ViPipe, ISP_AE_STATISTICS_CFG_S *pstAeStatCfg);
|
||||
|
||||
CVI_S32 CVI_ISP_SetAERouteSFAttr(VI_PIPE ViPipe, const ISP_AE_ROUTE_S *pstAERouteSFAttr);
|
||||
CVI_S32 CVI_ISP_GetAERouteSFAttr(VI_PIPE ViPipe, ISP_AE_ROUTE_S *pstAERouteSFAttr);
|
||||
|
||||
CVI_S32 CVI_ISP_SetAERouteSFAttrEx(VI_PIPE ViPipe, const ISP_AE_ROUTE_EX_S *pstAERouteSFAttrEx);
|
||||
CVI_S32 CVI_ISP_GetAERouteSFAttrEx(VI_PIPE ViPipe, ISP_AE_ROUTE_EX_S *pstAERouteSFAttrEx);
|
||||
|
||||
CVI_S32 CVI_ISP_SetAntiFlicker(VI_PIPE ViPipe, CVI_BOOL enable, CVI_U8 frequency);
|
||||
CVI_S32 CVI_ISP_GetAntiFlicker(VI_PIPE ViPipe, CVI_BOOL *pEnable, CVI_U8 *pFrequency);
|
||||
|
||||
CVI_S32 CVI_ISP_SetWDRLEOnly(VI_PIPE ViPipe, CVI_BOOL wdrLEOnly);
|
||||
CVI_S32 CVI_ISP_GetFrameID(VI_PIPE ViPipe, CVI_U32 *frameID);
|
||||
CVI_S32 CVI_ISP_QueryFps(VI_PIPE ViPipe, CVI_FLOAT *pFps);
|
||||
|
||||
|
||||
CVI_S32 CVI_ISP_GetCurrentLvX100(VI_PIPE ViPipe, CVI_S16 *ps16Lv);
|
||||
|
||||
CVI_S32 CVI_ISP_SetFastBootExposure(VI_PIPE ViPipe, CVI_U32 expLine, CVI_U32 again, CVI_U32 dgain, CVI_U32 ispdgain);
|
||||
|
||||
CVI_S32 CVI_ISP_SetIrisAttr(VI_PIPE ViPipe, const ISP_IRIS_ATTR_S *pstIrisAttr);
|
||||
CVI_S32 CVI_ISP_GetIrisAttr(VI_PIPE ViPipe, ISP_IRIS_ATTR_S *pstIrisAttr);
|
||||
CVI_S32 CVI_ISP_SetDcirisAttr(VI_PIPE ViPipe, const ISP_DCIRIS_ATTR_S *pstDcirisAttr);
|
||||
CVI_S32 CVI_ISP_GetDcirisAttr(VI_PIPE ViPipe, ISP_DCIRIS_ATTR_S *pstDcirisAttr);
|
||||
|
||||
CVI_S32 CVI_ISP_SetAELogPath(const char *szPath);
|
||||
CVI_S32 CVI_ISP_GetAELogPath(char *szPath, CVI_U32 pathSize);
|
||||
CVI_S32 CVI_ISP_SetAELogName(const char *szName);
|
||||
CVI_S32 CVI_ISP_GetAELogName(char *szName, CVI_U32 nameSize);
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* End of #ifdef __cplusplus */
|
||||
|
||||
#endif /* __CVI_AE_H__ */
|
||||
152
middleware/v2/modules/isp/include/sg200x/cvi_ae_comm.h
Normal file
152
middleware/v2/modules/isp/include/sg200x/cvi_ae_comm.h
Normal file
@@ -0,0 +1,152 @@
|
||||
/*
|
||||
* Copyright (C) Cvitek Co., Ltd. 2019-2021. All rights reserved.
|
||||
*
|
||||
* File Name: include/cvi_ae_comm.h
|
||||
* Description:
|
||||
*/
|
||||
|
||||
#ifndef __CVI_AE_COMM_H__
|
||||
#define __CVI_AE_COMM_H__
|
||||
|
||||
#include "cvi_comm_inc.h"
|
||||
#include "cvi_comm_3a.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#endif /* End of #ifdef __cplusplus */
|
||||
|
||||
#define CVI_AE_LIB_NAME "cvi_ae_lib"
|
||||
|
||||
typedef enum _AE_ACCURACY_E {
|
||||
AE_ACCURACY_DB = 0,
|
||||
AE_ACCURACY_LINEAR,
|
||||
AE_ACCURACY_TABLE,
|
||||
|
||||
AE_ACCURACY_BUTT,
|
||||
} AE_ACCURACY_E;
|
||||
|
||||
typedef enum _AE_BLC_TYPE_E {
|
||||
AE_BLC_TYPE_LINEAR = 0,
|
||||
AE_BLC_TYPE_LADDER,
|
||||
|
||||
AE_BLC_TYPE_BUTT,
|
||||
} AE_BLC_TYPE_E;
|
||||
|
||||
typedef enum _ISP_SNS_GAIN_MODE_E {
|
||||
SNS_GAIN_MODE_SHARE = 0, /* gain setting for all wdr frames*/
|
||||
SNS_GAIN_MODE_WDR_2F, /* separate gain for 2-frame wdr mode*/
|
||||
SNS_GAIN_MODE_WDR_3F, /* separate gain for 3-frame wdr mode*/
|
||||
SNS_GAIN_MODE_ONLY_LEF /* gain setting only apply to lef and sef is fixed to 1x */
|
||||
} ISP_SNS_GAIN_MODE_E;
|
||||
|
||||
|
||||
typedef struct _AE_ACCURACY_S {
|
||||
AE_ACCURACY_E enAccuType;
|
||||
float f32Accuracy;
|
||||
float f32Offset;
|
||||
} AE_ACCURACY_S;
|
||||
|
||||
typedef struct _AE_SENSOR_DEFAULT_S {
|
||||
CVI_U8 au8HistThresh[HIST_THRESH_NUM];
|
||||
CVI_U8 u8AeCompensation;
|
||||
|
||||
CVI_U32 u32LinesPer500ms;
|
||||
CVI_U32 u32FlickerFreq;
|
||||
CVI_U32 u32HmaxTimes; /* unit is ns */
|
||||
CVI_U32 u32InitExposure;
|
||||
CVI_U32 u32InitAESpeed;
|
||||
CVI_U32 u32InitAETolerance;
|
||||
|
||||
CVI_U32 u32FullLinesStd;
|
||||
CVI_U32 u32FullLinesMax;
|
||||
CVI_U32 u32FullLines;
|
||||
CVI_U32 u32MaxIntTime; /* RW;unit is line */
|
||||
CVI_U32 u32MinIntTime;
|
||||
CVI_U32 u32MaxIntTimeTarget;
|
||||
CVI_U32 u32MinIntTimeTarget;
|
||||
AE_ACCURACY_S stIntTimeAccu;
|
||||
|
||||
CVI_U32 u32MaxAgain;
|
||||
CVI_U32 u32MinAgain;
|
||||
CVI_U32 u32MaxAgainTarget;
|
||||
CVI_U32 u32MinAgainTarget;
|
||||
AE_ACCURACY_S stAgainAccu;
|
||||
|
||||
CVI_U32 u32MaxDgain;
|
||||
CVI_U32 u32MinDgain;
|
||||
CVI_U32 u32MaxDgainTarget;
|
||||
CVI_U32 u32MinDgainTarget;
|
||||
AE_ACCURACY_S stDgainAccu;
|
||||
|
||||
CVI_U32 u32MaxISPDgainTarget;
|
||||
CVI_U32 u32MinISPDgainTarget;
|
||||
CVI_U32 u32ISPDgainShift;
|
||||
|
||||
CVI_U32 u32MaxIntTimeStep;
|
||||
CVI_U32 u32LFMaxShortTime;
|
||||
CVI_U32 u32LFMinExposure;
|
||||
#if 0
|
||||
ISP_AE_ROUTE_S stAERouteAttr;
|
||||
CVI_BOOL bAERouteExValid;
|
||||
ISP_AE_ROUTE_EX_S stAERouteAttrEx;
|
||||
|
||||
CVI_U16 u16ManRatioEnable;
|
||||
CVI_U32 au32Ratio[EXP_RATIO_NUM];
|
||||
|
||||
ISP_IRIS_TYPE_E enIrisType;
|
||||
ISP_PIRIS_ATTR_S stPirisAttr;
|
||||
ISP_IRIS_F_NO_E enMaxIrisFNO;
|
||||
ISP_IRIS_F_NO_E enMinIrisFNO;
|
||||
#endif
|
||||
ISP_AE_STRATEGY_E enAeExpMode;
|
||||
|
||||
CVI_U16 u16ISOCalCoef;
|
||||
CVI_U8 u8AERunInterval;
|
||||
CVI_FLOAT f32Fps;
|
||||
CVI_FLOAT f32MinFps;
|
||||
CVI_U32 denom;
|
||||
CVI_U32 u32AEResponseFrame;
|
||||
CVI_U32 u32SnsStableFrame; /* delay for stable statistic after sensor init. (unit: frame) */
|
||||
AE_BLC_TYPE_E enBlcType;
|
||||
ISP_SNS_GAIN_MODE_E enWDRGainMode;
|
||||
} AE_SENSOR_DEFAULT_S;
|
||||
|
||||
typedef struct _AE_FSWDR_ATTR_S {
|
||||
ISP_FSWDR_MODE_E enFSWDRMode;
|
||||
} AE_FSWDR_ATTR_S;
|
||||
|
||||
typedef struct _AE_SENSOR_EXP_FUNC_S {
|
||||
CVI_S32 (*pfn_cmos_get_ae_default)(VI_PIPE ViPipe, AE_SENSOR_DEFAULT_S *pstAeSnsDft);
|
||||
|
||||
/* the function of sensor set fps */
|
||||
CVI_S32 (*pfn_cmos_fps_set)(VI_PIPE ViPipe, CVI_FLOAT f32Fps, AE_SENSOR_DEFAULT_S *pstAeSnsDft);
|
||||
CVI_S32 (*pfn_cmos_slow_framerate_set)(VI_PIPE ViPipe, CVI_U32 u32FullLines, AE_SENSOR_DEFAULT_S *pstAeSnsDft);
|
||||
|
||||
/* while isp notify ae to update sensor regs, ae call these funcs. */
|
||||
CVI_S32 (*pfn_cmos_inttime_update)(VI_PIPE ViPipe, CVI_U32 *u32IntTime);
|
||||
CVI_S32 (*pfn_cmos_gains_update)(VI_PIPE ViPipe, CVI_U32 *u32Again, CVI_U32 *u32Dgain);
|
||||
|
||||
CVI_S32 (*pfn_cmos_again_calc_table)(VI_PIPE ViPipe, CVI_U32 *pu32AgainLin, CVI_U32 *pu32AgainDb);
|
||||
CVI_S32 (*pfn_cmos_dgain_calc_table)(VI_PIPE ViPipe, CVI_U32 *pu32DgainLin, CVI_U32 *pu32DgainDb);
|
||||
|
||||
CVI_S32 (*pfn_cmos_get_inttime_max)
|
||||
(VI_PIPE ViPipe, CVI_U16 u16ManRatioEnable, CVI_U32 *au32Ratio, CVI_U32 *au32IntTimeMax,
|
||||
CVI_U32 *au32IntTimeMin, CVI_U32 *pu32LFMaxIntTime);
|
||||
|
||||
/* long frame mode set */
|
||||
CVI_S32 (*pfn_cmos_ae_fswdr_attr_set)(VI_PIPE ViPipe, AE_FSWDR_ATTR_S *pstAeFSWDRAttr);
|
||||
} AE_SENSOR_EXP_FUNC_S;
|
||||
|
||||
typedef struct _AE_SENSOR_REGISTER_S {
|
||||
AE_SENSOR_EXP_FUNC_S stAeExp;
|
||||
} AE_SENSOR_REGISTER_S;
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* End of #ifdef __cplusplus */
|
||||
|
||||
#endif /* __CVI_AE_COMM_H__ */
|
||||
31
middleware/v2/modules/isp/include/sg200x/cvi_af.h
Normal file
31
middleware/v2/modules/isp/include/sg200x/cvi_af.h
Normal file
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Copyright (C) Cvitek Co., Ltd. 2019-2021. All rights reserved.
|
||||
*
|
||||
* File Name: include/cvi_af.h
|
||||
* Description:
|
||||
*/
|
||||
|
||||
#ifndef __CVI_AF_H__
|
||||
#define __CVI_AF_H__
|
||||
|
||||
#include "cvi_comm_isp.h"
|
||||
#include "cvi_comm_3a.h"
|
||||
#include "cvi_af_comm.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#endif /* End of #ifdef __cplusplus */
|
||||
|
||||
CVI_S32 CVI_AF_Register(VI_PIPE ViPipe, ALG_LIB_S *pstAfLib);
|
||||
CVI_S32 CVI_AF_UnRegister(VI_PIPE ViPipe, ALG_LIB_S *pstAfLib);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* End of #ifdef __cplusplus */
|
||||
|
||||
#endif /* __CVI_AF_H__ */
|
||||
29
middleware/v2/modules/isp/include/sg200x/cvi_af_comm.h
Normal file
29
middleware/v2/modules/isp/include/sg200x/cvi_af_comm.h
Normal file
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* Copyright (C) Cvitek Co., Ltd. 2019-2021. All rights reserved.
|
||||
*
|
||||
* File Name: include/cvi_af_comm.h
|
||||
* Description:
|
||||
*/
|
||||
|
||||
#ifndef __CVI_AF_COMM_H__
|
||||
#define __CVI_AF_COMM_H__
|
||||
|
||||
#include "cvi_comm_inc.h"
|
||||
#include "cvi_comm_3a.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#endif /* End of #ifdef __cplusplus */
|
||||
|
||||
#define CVI_AF_LIB_NAME "cvi_af_lib"
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* End of #ifdef __cplusplus */
|
||||
|
||||
#endif /* __CVI_AF_COMM_H__ */
|
||||
54
middleware/v2/modules/isp/include/sg200x/cvi_awb.h
Normal file
54
middleware/v2/modules/isp/include/sg200x/cvi_awb.h
Normal file
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
* Copyright (C) Cvitek Co., Ltd. 2019-2021. All rights reserved.
|
||||
*
|
||||
* File Name: include/cvi_awb.h
|
||||
* Description:
|
||||
*/
|
||||
|
||||
#ifndef __CVI_AWB_H__
|
||||
#define __CVI_AWB_H__
|
||||
|
||||
#include "cvi_comm_isp.h"
|
||||
#include "cvi_comm_3a.h"
|
||||
#include "cvi_awb_comm.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#endif /* End of #ifdef __cplusplus */
|
||||
|
||||
#define AWB_LOG_BUFF_SIZE (48*1024)
|
||||
#define AWB_SNAP_LOG_BUFF_SIZE (AWB_LOG_BUFF_SIZE)
|
||||
|
||||
/* The interface of awb lib register to isp. */
|
||||
CVI_S32 CVI_AWB_Register(VI_PIPE ViPipe, ALG_LIB_S *pstAwbLib);
|
||||
CVI_S32 CVI_AWB_UnRegister(VI_PIPE ViPipe, ALG_LIB_S *pstAwbLib);
|
||||
|
||||
/* The callback function of sensor register to awb lib. */
|
||||
CVI_S32 CVI_AWB_SensorRegCallBack(VI_PIPE ViPipe, ALG_LIB_S *pstAwbLib, ISP_SNS_ATTR_INFO_S *pstSnsAttrInfo,
|
||||
AWB_SENSOR_REGISTER_S *pstRegister);
|
||||
CVI_S32 CVI_AWB_SensorUnRegCallBack(VI_PIPE ViPipe, ALG_LIB_S *pstAwbLib, SENSOR_ID SensorId);
|
||||
|
||||
CVI_S32 CVI_AWB_QueryInfo(VI_PIPE ViPipe, ISP_WB_Q_INFO_S *pstWB_Q_Info);
|
||||
|
||||
CVI_S32 CVI_ISP_SetWBAttr(VI_PIPE ViPipe, const ISP_WB_ATTR_S *pstWBAttr);
|
||||
CVI_S32 CVI_ISP_GetWBAttr(VI_PIPE ViPipe, ISP_WB_ATTR_S *pstWBAttr);
|
||||
CVI_S32 CVI_ISP_SetAWBAttrEx(VI_PIPE ViPipe, const ISP_AWB_ATTR_EX_S *pstAWBAttrEx);
|
||||
CVI_S32 CVI_ISP_GetAWBAttrEx(VI_PIPE ViPipe, ISP_AWB_ATTR_EX_S *pstAWBAttrEx);
|
||||
|
||||
CVI_S32 CVI_ISP_QueryWBInfo(VI_PIPE ViPipe, ISP_WB_INFO_S *pstWBInfo);
|
||||
|
||||
CVI_S32 CVI_ISP_GetGrayWorldAwbInfo(VI_PIPE ViPipe, CVI_U16 *pRgain, CVI_U16 *pBgain);
|
||||
|
||||
CVI_S32 CVI_ISP_SetAWBLogPath(const char *szPath);
|
||||
CVI_S32 CVI_ISP_SetAWBLogName(const char *szName);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* End of #ifdef __cplusplus */
|
||||
|
||||
#endif /* __CVI_AWB_H__ */
|
||||
82
middleware/v2/modules/isp/include/sg200x/cvi_awb_comm.h
Normal file
82
middleware/v2/modules/isp/include/sg200x/cvi_awb_comm.h
Normal file
@@ -0,0 +1,82 @@
|
||||
/*
|
||||
* Copyright (C) Cvitek Co., Ltd. 2019-2021. All rights reserved.
|
||||
*
|
||||
* File Name: include/cvi_awb_comm.h
|
||||
* Description:
|
||||
*/
|
||||
|
||||
#ifndef __CVI_AWB_COMM_H__
|
||||
#define __CVI_AWB_COMM_H__
|
||||
|
||||
#include "cvi_comm_inc.h"
|
||||
#include "cvi_comm_3a.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#endif /* End of #ifdef __cplusplus */
|
||||
|
||||
#define CVI_AWB_LIB_NAME "cvi_awb_lib"
|
||||
|
||||
typedef struct cviAWB_SENSOR_DEFAULT_S {
|
||||
CVI_U16 u16WbRefTemp;
|
||||
CVI_U16 au16GainOffset[ISP_BAYER_CHN_NUM];
|
||||
// CVI_S32 as32WbPara[AWB_CURVE_PARA_NUM];
|
||||
|
||||
CVI_U16 u16GoldenRgain;
|
||||
CVI_U16 u16GoldenBgain;
|
||||
CVI_U16 u16SampleRgain;
|
||||
CVI_U16 u16SampleBgain;
|
||||
// AWB_AGC_TABLE_S stAgcTbl;
|
||||
// AWB_CCM_S stCcm;
|
||||
CVI_U16 u16InitRgain;
|
||||
CVI_U16 u16InitGgain;
|
||||
CVI_U16 u16InitBgain;
|
||||
CVI_U8 u8AWBRunInterval;
|
||||
} AWB_SENSOR_DEFAULT_S;
|
||||
|
||||
typedef struct cviAWB_SENSOR_EXP_FUNC_S {
|
||||
CVI_S32 (*pfn_cmos_get_awb_default)(VI_PIPE ViPipe, AWB_SENSOR_DEFAULT_S *pstAwbSnsDft);
|
||||
// CVI_S32(*pfn_cmos_get_awb_spec_default)(VI_PIPE ViPipe, AWB_SPEC_SENSOR_DEFAULT_S *pstAwbSpecSnsDft);
|
||||
} AWB_SENSOR_EXP_FUNC_S;
|
||||
|
||||
typedef struct cviAWB_SENSOR_REGISTER_S {
|
||||
AWB_SENSOR_EXP_FUNC_S stAwbExp;
|
||||
} AWB_SENSOR_REGISTER_S;
|
||||
|
||||
typedef struct _ISP_WB_CURVE_S {
|
||||
CVI_U16 u16CurveSize;
|
||||
CVI_U16 *u16RGain;
|
||||
CVI_U16 *u16BGain;
|
||||
CVI_U16 *u16BGainTop;
|
||||
CVI_U16 *u16BGainBottom;
|
||||
} ISP_WB_CURVE_S;
|
||||
|
||||
typedef struct _ISP_WB_Q_INFO_S {
|
||||
CVI_U16 u16Rgain;
|
||||
CVI_U16 u16Grgain;
|
||||
CVI_U16 u16Gbgain;
|
||||
CVI_U16 u16Bgain;
|
||||
CVI_U16 u16Saturation;
|
||||
CVI_U16 u16ColorTemp;
|
||||
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;
|
||||
CVI_U16 u16GrayWorldRgain;
|
||||
CVI_U16 u16GrayWorldBgain;
|
||||
} ISP_WB_Q_INFO_S;
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* End of #ifdef __cplusplus */
|
||||
|
||||
#endif /* __CVI_AWB_COMM_H__ */
|
||||
483
middleware/v2/modules/isp/include/sg200x/cvi_comm_3a.h
Normal file
483
middleware/v2/modules/isp/include/sg200x/cvi_comm_3a.h
Normal file
@@ -0,0 +1,483 @@
|
||||
/*
|
||||
* Copyright (C) Cvitek Co., Ltd. 2019-2021. All rights reserved.
|
||||
*
|
||||
* File Name: include/cvi_common_3a.h
|
||||
* Description:
|
||||
*/
|
||||
|
||||
#ifndef __CVI_COMM_3A_H__
|
||||
#define __CVI_COMM_3A_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#endif /* End of #ifdef __cplusplus */
|
||||
|
||||
#include <stdbool.h>
|
||||
#include "cvi_comm_isp.h"
|
||||
#include "cvi_comm_sns.h"
|
||||
|
||||
#define ALG_LIB_NAME_SIZE_MAX (20)
|
||||
#define MAX_REGISTER_ALG_LIB_NUM 4
|
||||
|
||||
#define HIST_THRESH_NUM (4)
|
||||
|
||||
#define MAX_AE_W (32)
|
||||
#define MAX_AE_H (24)
|
||||
#define MAX_AE_SIZE (MAX_AE_W * MAX_AE_H)
|
||||
#define MAX_AE_WIN (2)
|
||||
|
||||
#define ENABLE_AF_LIB (0)
|
||||
|
||||
typedef enum _ISP_FSWDR_MODE_E {
|
||||
ISP_FSWDR_NORMAL_MODE = 0x0,
|
||||
ISP_FSWDR_LONG_FRAME_MODE = 0x1,
|
||||
ISP_FSWDR_AUTO_LONG_FRAME_MODE = 0x2,
|
||||
ISP_FSWDR_MODE_BUTT
|
||||
} ISP_FSWDR_MODE_E;
|
||||
|
||||
typedef struct _ISP_AE_RANGE_S {
|
||||
CVI_U32 u32Max; /*RW; Range:[0x0, 0x7FFFFFFF]*/
|
||||
CVI_U32 u32Min; /*RW; Range:[0x0, 0x7FFFFFFF]*/
|
||||
} ISP_AE_RANGE_S;
|
||||
|
||||
typedef enum _ISP_AE_STRATEGY_E {
|
||||
AE_EXP_HIGHLIGHT_PRIOR = 0,
|
||||
AE_EXP_LOWLIGHT_PRIOR = 1,
|
||||
AE_STRATEGY_MODE_BUTT
|
||||
} ISP_AE_STRATEGY_E;
|
||||
|
||||
typedef enum _ISP_AE_MODE_E {
|
||||
AE_MODE_SLOW_SHUTTER = 0,
|
||||
AE_MODE_FIX_FRAME_RATE = 1,
|
||||
AE_MODE_BUTT
|
||||
} ISP_AE_MODE_E;
|
||||
|
||||
typedef enum _ISP_ANTIFLICKER_MODE_E {
|
||||
ISP_ANTIFLICKER_NORMAL_MODE = 0,
|
||||
ISP_ANTIFLICKER_AUTO_MODE = 1,
|
||||
ISP_ANTIFLICKER_MODE_BUTT
|
||||
} ISP_ANTIFLICKER_MODE_E;
|
||||
|
||||
|
||||
typedef struct _ISP_ANTIFLICKER_S {
|
||||
CVI_BOOL bEnable;
|
||||
ISP_AE_ANTIFLICKER_FREQUENCE_E enFrequency;
|
||||
ISP_ANTIFLICKER_MODE_E enMode;
|
||||
} ISP_ANTIFLICKER_S;
|
||||
|
||||
typedef struct _ISP_SUBFLICKER_S {
|
||||
CVI_BOOL bEnable;
|
||||
CVI_U8 u8LumaDiff; /*RW; Range:[0x0, 0x64]*/
|
||||
} ISP_SUBFLICKER_S;
|
||||
|
||||
typedef struct _ISP_AE_DELAY_S {
|
||||
CVI_U16 u16BlackDelayFrame;
|
||||
CVI_U16 u16WhiteDelayFrame;
|
||||
} ISP_AE_DELAY_S;
|
||||
|
||||
typedef struct _ISP_ME_ATTR_S {
|
||||
ISP_OP_TYPE_E enExpTimeOpType;
|
||||
ISP_OP_TYPE_E enAGainOpType;
|
||||
ISP_OP_TYPE_E enDGainOpType;
|
||||
ISP_OP_TYPE_E enISPDGainOpType;
|
||||
CVI_U32 u32ExpTime; /*RW; Range:[0x0, 0x7FFFFFFF]*/
|
||||
CVI_U32 u32AGain; /*RW; Range:[0x400, 0x7FFFFFFF]*/
|
||||
CVI_U32 u32DGain; /*RW; Range:[0x400, 0x7FFFFFFF]*/
|
||||
CVI_U32 u32ISPDGain; /*RW; Range:[0x400, 0x40000]*/
|
||||
ISP_OP_TYPE_E enISONumOpType;
|
||||
ISP_AE_GAIN_TYPE_E enGainType;
|
||||
CVI_U32 u32ISONum; /*RW; Range:[0x64, 0x7FFFFFFF]*/
|
||||
} ISP_ME_ATTR_S;
|
||||
|
||||
#define RESERVE_SIZE 10
|
||||
typedef struct _ISP_AE_ATTR_S {
|
||||
ISP_AE_RANGE_S stExpTimeRange;
|
||||
ISP_AE_RANGE_S stAGainRange; /*RW; Range:[0x400, 0x7FFFFFFF]*/
|
||||
ISP_AE_RANGE_S stDGainRange; /*RW; Range:[0x400, 0x7FFFFFFF]*/
|
||||
ISP_AE_RANGE_S stISPDGainRange; /*RW; Range:[0x400, 0x40000]*/
|
||||
ISP_AE_RANGE_S stSysGainRange; /*RW; Range:[0x400, 0x7FFFFFFF]*/
|
||||
CVI_U32 u32GainThreshold; /*RW; Range:[0x400, 0x7FFFFFFF]*/
|
||||
CVI_U8 u8Speed; // 1 means 0.1 ev
|
||||
CVI_U16 u16BlackSpeedBias;
|
||||
CVI_U8 u8Tolerance;
|
||||
CVI_U8 u8Compensation;
|
||||
CVI_U16 u16EVBias;
|
||||
ISP_AE_STRATEGY_E enAEStrategyMode;
|
||||
CVI_U16 u16HistRatioSlope;
|
||||
CVI_U8 u8MaxHistOffset;
|
||||
ISP_AE_MODE_E enAEMode;
|
||||
ISP_ANTIFLICKER_S stAntiflicker;
|
||||
ISP_SUBFLICKER_S stSubflicker;
|
||||
ISP_AE_DELAY_S stAEDelayAttr;
|
||||
CVI_BOOL bManualExpValue;
|
||||
CVI_U32 u32ExpValue; /*RW; Range:[0x0, 0x7FFFFFFF]*/
|
||||
ISP_FSWDR_MODE_E enFSWDRMode;
|
||||
CVI_BOOL bWDRQuick;
|
||||
CVI_U16 u16ISOCalCoef;
|
||||
ISP_AE_GAIN_TYPE_E enGainType;
|
||||
ISP_AE_RANGE_S stISONumRange; /*RW; Range:[0x64, 0x7FFFFFFF]*/
|
||||
CVI_S16 s16IRCutOnLv;
|
||||
CVI_S16 s16IRCutOffLv;
|
||||
ISP_AE_IR_CUT_FORCE_STATUS enIRCutStatus;
|
||||
CVI_U8 au8AdjustTargetMin[LV_TOTAL_NUM];
|
||||
CVI_U8 au8AdjustTargetMax[LV_TOTAL_NUM];
|
||||
CVI_U16 u16LowBinThr; /*RW; Range:[0x0, 0x100]*/
|
||||
CVI_U16 u16HighBinThr; /*RW; Range:[0x0, 0x100]*/
|
||||
CVI_BOOL bEnableFaceAE;
|
||||
CVI_U8 u8FaceTargetLuma; /*RW; Range:[0x1, 0xFF]*/
|
||||
CVI_U8 u8FaceWeight; /*RW; Range:[0x0, 0x64]*/
|
||||
CVI_U8 u8GridBvWeight; /*RW; Range:[0x0, 0x64]*/
|
||||
CVI_U32 au32Reserve[RESERVE_SIZE]; /*RW; Range:[0x0, 0x7FFFFFFF]*/
|
||||
CVI_U8 u8HighLightLumaThr;
|
||||
CVI_U8 u8HighLightBufLumaThr;
|
||||
CVI_U8 u8LowLightLumaThr;
|
||||
CVI_U8 u8LowLightBufLumaThr;
|
||||
CVI_BOOL bHistogramAssist;
|
||||
} ISP_AE_ATTR_S;
|
||||
|
||||
|
||||
typedef struct _ISP_EXPOSURE_ATTR_S {
|
||||
CVI_BOOL bByPass;
|
||||
ISP_OP_TYPE_E enOpType;
|
||||
CVI_U8 u8AERunInterval; /*RW; Range:[0x1, 0xFF]*/
|
||||
CVI_BOOL bHistStatAdjust;
|
||||
CVI_BOOL bAERouteExValid;
|
||||
ISP_ME_ATTR_S stManual;
|
||||
ISP_AE_ATTR_S stAuto;
|
||||
CVI_U8 u8DebugMode;
|
||||
ISP_AE_METER_MODE_E enMeterMode;
|
||||
CVI_BOOL bAEGainSepCfg;
|
||||
} ISP_EXPOSURE_ATTR_S;
|
||||
|
||||
typedef struct ISP_STITCH_ATTR_T {
|
||||
CVI_BOOL enable;
|
||||
} ISP_STITCH_ATTR_S;
|
||||
|
||||
typedef struct _ALG_LIB_S {
|
||||
CVI_S32 s32Id;
|
||||
CVI_CHAR acLibName[ALG_LIB_NAME_SIZE_MAX];
|
||||
} ALG_LIB_S;
|
||||
|
||||
/* the init param of awb alg */
|
||||
typedef struct _ISP_AE_PARAM_S {
|
||||
SENSOR_ID SensorId;
|
||||
CVI_U8 u8WDRMode;
|
||||
CVI_U8 u8HDRMode;
|
||||
CVI_U16 u16BlackLevel;
|
||||
CVI_FLOAT f32Fps;
|
||||
ISP_BAYER_FORMAT_E enBayer;
|
||||
ISP_STITCH_ATTR_S stStitchAttr;
|
||||
CVI_S32 s32Rsv;
|
||||
ISP_3AWIN_CONFIG_S aeLEWinConfig[AE_MAX_NUM];
|
||||
ISP_3AWIN_CONFIG_S aeSEWinConfig;
|
||||
} ISP_AE_PARAM_S;
|
||||
|
||||
typedef struct _ISP_FE_AE_STAT_1_S {
|
||||
CVI_U32 u32PixelCount[ISP_CHANNEL_MAX_NUM];
|
||||
CVI_U32 u32PixelWeight[ISP_CHANNEL_MAX_NUM];
|
||||
CVI_U32 au32HistogramMemArray[ISP_CHANNEL_MAX_NUM][MAX_HIST_BINS];
|
||||
} ISP_FE_AE_STAT_1_S;
|
||||
|
||||
typedef struct _ISP_FE_AE_STAT_2_S {
|
||||
CVI_U16 u16GlobalAvgR[ISP_CHANNEL_MAX_NUM];
|
||||
CVI_U16 u16GlobalAvgGr[ISP_CHANNEL_MAX_NUM];
|
||||
CVI_U16 u16GlobalAvgGb[ISP_CHANNEL_MAX_NUM];
|
||||
CVI_U16 u16GlobalAvgB[ISP_CHANNEL_MAX_NUM];
|
||||
} ISP_FE_AE_STAT_2_S;
|
||||
|
||||
typedef struct _ISP_FE_AE_STAT_3_S {
|
||||
CVI_U16 au16ZoneAvg[ISP_CHANNEL_MAX_NUM][AE_ZONE_ROW][AE_ZONE_COLUMN][4];
|
||||
} ISP_FE_AE_STAT_3_S;
|
||||
|
||||
typedef struct _ISP_FE_AE_STITCH_STAT_3_S {
|
||||
CVI_U16 au16ZoneAvg[ISP_CHANNEL_MAX_NUM][ISP_CHANNEL_MAX_NUM][AE_ZONE_ROW][AE_ZONE_COLUMN][4];
|
||||
} ISP_FE_AE_STITCH_STAT_3_S;
|
||||
|
||||
typedef struct _ISP_AE_STAT_ATTR_S {
|
||||
CVI_BOOL bChange;
|
||||
|
||||
CVI_BOOL bHistAdjust;
|
||||
CVI_U8 u8AEBESel;
|
||||
CVI_U8 u8FourPlaneMode;
|
||||
CVI_U8 u8HistOffsetX;
|
||||
CVI_U8 u8HistOffsetY;
|
||||
CVI_U8 u8HistSkipX;
|
||||
CVI_U8 u8HistSkipY;
|
||||
|
||||
CVI_BOOL bModeUpdate;
|
||||
CVI_U8 u8HistMode;
|
||||
CVI_U8 u8AverMode;
|
||||
CVI_U8 u8MaxGainMode;
|
||||
|
||||
CVI_BOOL bWightTableUpdate;
|
||||
CVI_U8 au8WeightTable[VI_MAX_PIPE_NUM][AE_WEIGHT_ZONE_ROW][AE_WEIGHT_ZONE_COLUMN];
|
||||
} ISP_AE_STAT_ATTR_S;
|
||||
|
||||
typedef struct _ISP_AE_STAT_RESULT_S {
|
||||
CVI_U32 u32IntTime[VI_MAX_PIPE_NUM];
|
||||
CVI_U32 u32IspDgain;
|
||||
CVI_U32 u32Again;
|
||||
CVI_U32 u32Dgain;
|
||||
CVI_U32 u32Iso;
|
||||
CVI_U8 u8AERunInterval;
|
||||
|
||||
CVI_BOOL bPirisValid;
|
||||
CVI_S32 s32PirisPos;
|
||||
CVI_U32 u32PirisGain;
|
||||
|
||||
ISP_FSWDR_MODE_E enFSWDRMode;
|
||||
CVI_U32 au32WDRGain[4];
|
||||
CVI_U32 u32HmaxTimes; /* unit is ns */
|
||||
|
||||
ISP_AE_STAT_ATTR_S stStatAttr;
|
||||
ISP_DCF_UPDATE_INFO_S stUpdateInfo;
|
||||
CVI_U32 u32ExpRatio;
|
||||
CVI_S16 s16CurrentLV;
|
||||
CVI_U32 u32AvgLuma;
|
||||
CVI_U8 u8MeterFramePeriod;
|
||||
CVI_BOOL bStable;
|
||||
CVI_FLOAT fBvStep;
|
||||
CVI_U32 u32BlcIso;
|
||||
|
||||
CVI_U32 u32IspDgainSF;
|
||||
CVI_U32 u32AgainSF;
|
||||
CVI_U32 u32DgainSF;
|
||||
CVI_U32 u32IsoSF;
|
||||
CVI_U32 u32BlcIsoSF;
|
||||
CVI_FLOAT fEvRatio[2];
|
||||
} ISP_AE_RESULT_S;
|
||||
|
||||
typedef struct _ISP_BE_AE_STAT_1_S {
|
||||
CVI_BOOL bStable;
|
||||
} ISP_BE_AE_STAT_1_S;
|
||||
|
||||
typedef struct _ISP_BE_AE_STAT_2_S {
|
||||
CVI_BOOL bStable;
|
||||
} ISP_BE_AE_STAT_2_S;
|
||||
|
||||
typedef struct _ISP_BE_AE_STAT_3_S {
|
||||
CVI_BOOL bStable;
|
||||
} ISP_BE_AE_STAT_3_S;
|
||||
|
||||
typedef struct _ISP_BE_AE_STITCH_STAT_3_S {
|
||||
CVI_BOOL bStable;
|
||||
} ISP_BE_AE_STITCH_STAT_3_S;
|
||||
|
||||
typedef struct _ISP_AE_INFO_S {
|
||||
CVI_U32 u32FrameCnt; /* the counting of frame */
|
||||
ISP_SMART_ROI_S stSmartInfo;
|
||||
ISP_FE_AE_STAT_1_S * pstFEAeStat1[AE_MAX_NUM];
|
||||
ISP_FE_AE_STAT_2_S * pstFEAeStat2[AE_MAX_NUM];
|
||||
ISP_FE_AE_STAT_3_S * pstFEAeStat3[AE_MAX_NUM];
|
||||
ISP_FE_AE_STITCH_STAT_3_S *pstFEAeStiStat;
|
||||
ISP_BE_AE_STAT_1_S *pstBEAeStat1;
|
||||
ISP_BE_AE_STAT_2_S *pstBEAeStat2;
|
||||
ISP_BE_AE_STAT_3_S *pstBEAeStat3;
|
||||
ISP_BE_AE_STITCH_STAT_3_S *pstBEAeStiStat;
|
||||
ISP_3AWIN_CONFIG_S aeLEWinConfig[AE_MAX_NUM];
|
||||
ISP_3AWIN_CONFIG_S aeSEWinConfig;
|
||||
} ISP_AE_INFO_S;
|
||||
|
||||
typedef struct bmISP_DCI_INFO_S {
|
||||
CVI_U32 u32FrameCnt; /* the counting of frame */
|
||||
|
||||
CVI_U16 pStat[DCI_BINS_NUM];
|
||||
} ISP_DCI_INFO_S;
|
||||
|
||||
|
||||
/* the init param of awb alg */
|
||||
typedef struct _ISP_AWB_PARAM_S {
|
||||
SENSOR_ID SensorId;
|
||||
CVI_U8 u8WDRMode;
|
||||
CVI_U8 u8AWBZoneRow;
|
||||
CVI_U8 u8AWBZoneCol;
|
||||
CVI_U8 u8AWBZoneBin;
|
||||
ISP_STITCH_ATTR_S stStitchAttr;
|
||||
CVI_U16 u16AWBWidth;
|
||||
CVI_U16 u16AWBHeight;
|
||||
CVI_S8 s8Rsv;
|
||||
} ISP_AWB_PARAM_S;
|
||||
|
||||
typedef struct _ISP_AWB_RAW_STAT_ATTR_S {
|
||||
bool bStatCfgUpdate;
|
||||
|
||||
CVI_U16 u16MeteringWhiteLevelAwb;
|
||||
CVI_U16 u16MeteringBlackLevelAwb;
|
||||
CVI_U16 u16MeteringCrRefMaxAwb;
|
||||
CVI_U16 u16MeteringCbRefMaxAwb;
|
||||
CVI_U16 u16MeteringCrRefMinAwb;
|
||||
CVI_U16 u16MeteringCbRefMinAwb;
|
||||
} ISP_AWB_RAW_STAT_ATTR_S;
|
||||
|
||||
typedef struct _ISP_AWB_RESULT_S {
|
||||
CVI_U32 au32WhiteBalanceGain[ISP_BAYER_CHN_NUM];
|
||||
CVI_U16 au16ColorMatrix[CCM_MATRIX_SIZE];
|
||||
CVI_U32 u32ColorTemp;
|
||||
CVI_U8 u8Saturation[4];
|
||||
ISP_AWB_RAW_STAT_ATTR_S stRawStatAttr;
|
||||
CVI_BOOL bStable;
|
||||
CVI_U8 u8AdjCASaturation;
|
||||
CVI_U8 u8AdjCASatLuma;
|
||||
} ISP_AWB_RESULT_S;
|
||||
|
||||
typedef struct _ISP_AWB_STAT_1_S {
|
||||
CVI_U16 u16MeteringAwbAvgR;
|
||||
CVI_U16 u16MeteringAwbAvgG;
|
||||
CVI_U16 u16MeteringAwbAvgB;
|
||||
CVI_U16 u16MeteringAwbCountAll;
|
||||
} ISP_AWB_STAT_1_S;
|
||||
|
||||
typedef struct _ISP_AWB_STAT_RESULT_S {
|
||||
CVI_U16 *pau16ZoneAvgR;
|
||||
CVI_U16 *pau16ZoneAvgG;
|
||||
CVI_U16 *pau16ZoneAvgB;
|
||||
CVI_U16 *pau16ZoneCount;
|
||||
} ISP_AWB_STAT_RESULT_S;
|
||||
|
||||
typedef struct _ISP_AWB_INFO_S {
|
||||
CVI_U32 u32FrameCnt;
|
||||
ISP_SMART_ROI_S stSmartInfo;
|
||||
ISP_AWB_STAT_1_S * pstAwbStat1[ISP_CHANNEL_MAX_NUM];
|
||||
ISP_AWB_STAT_RESULT_S stAwbStat2[ISP_CHANNEL_MAX_NUM];
|
||||
CVI_U8 u8AwbGainSwitch;
|
||||
CVI_U32 au32WDRWBGain[ISP_BAYER_CHN_NUM];
|
||||
CVI_U32 u32IsoNum;
|
||||
CVI_S16 s16LVx100;
|
||||
CVI_FLOAT fBVstep;
|
||||
} ISP_AWB_INFO_S;
|
||||
|
||||
// AF related structure
|
||||
typedef struct _ISP_AF_PARAM_S {
|
||||
SENSOR_ID SensorId;
|
||||
CVI_U8 u8WDRMode;
|
||||
CVI_S32 s32Rsv;
|
||||
} ISP_AF_PARAM_S;
|
||||
|
||||
typedef struct _ISP_AF_INFO_S {
|
||||
CVI_U32 u32FrameCnt;
|
||||
ISP_AF_STATISTICS_S *pstAfStat;
|
||||
} ISP_AF_INFO_S;
|
||||
|
||||
typedef struct _ISP_AF_RESULT_S {
|
||||
CVI_S32 s32Rsv;
|
||||
} ISP_AF_RESULT_S;
|
||||
|
||||
typedef struct _ISP_AE_STITCH_STATISTICS_S {
|
||||
CVI_U32 enable;
|
||||
} ISP_AE_STITCH_STATISTICS_S;
|
||||
|
||||
typedef struct _ISP_BIND_ATTR_S {
|
||||
SENSOR_ID sensorId;
|
||||
ALG_LIB_S stAeLib;
|
||||
ALG_LIB_S stAfLib;
|
||||
ALG_LIB_S stAwbLib;
|
||||
} ISP_BIND_ATTR_S;
|
||||
|
||||
typedef struct _ISP_AE_EXP_FUNC_S {
|
||||
CVI_S32 (*pfn_ae_init)(VI_PIPE ViPipe, const ISP_AE_PARAM_S *pstAeParam);
|
||||
CVI_S32 (*pfn_ae_run)(VI_PIPE ViPipe, const ISP_AE_INFO_S *pstAeInfo,
|
||||
ISP_AE_RESULT_S *pstAeResult, CVI_S32 s32Rsv);
|
||||
CVI_S32 (*pfn_ae_ctrl)(VI_PIPE ViPipe, CVI_U32 u32Cmd, void *pValue);
|
||||
CVI_S32 (*pfn_ae_exit)(VI_PIPE ViPipe);
|
||||
} ISP_AE_EXP_FUNC_S;
|
||||
|
||||
typedef struct _ISP_AWB_EXP_FUNC_S {
|
||||
CVI_S32 (*pfn_awb_init)(VI_PIPE ViPipe, const ISP_AWB_PARAM_S *pstAwbParam);
|
||||
CVI_S32 (*pfn_awb_run)(VI_PIPE ViPipe, const ISP_AWB_INFO_S *pstAwbInfo, ISP_AWB_RESULT_S *pstAwbResult,
|
||||
CVI_S32 s32Rsv);
|
||||
CVI_S32 (*pfn_awb_ctrl)(VI_PIPE ViPipe, CVI_U32 u32Cmd, CVI_VOID *pValue);
|
||||
CVI_S32 (*pfn_awb_exit)(VI_PIPE ViPipe);
|
||||
} ISP_AWB_EXP_FUNC_S;
|
||||
|
||||
typedef struct _ISP_AF_EXP_FUNC_S {
|
||||
CVI_S32 (*pfn_af_init)(VI_PIPE ViPipe, const ISP_AF_PARAM_S *pstAfParam);
|
||||
CVI_S32 (*pfn_af_run)(VI_PIPE ViPipe, const ISP_AF_INFO_S *pstAfInfo, ISP_AF_RESULT_S *pstAfResult,
|
||||
CVI_S32 s32Rsv);
|
||||
CVI_S32 (*pfn_af_ctrl)(VI_PIPE ViPipe, CVI_U32 u32Cmd, CVI_VOID *pValue);
|
||||
CVI_S32 (*pfn_af_exit)(VI_PIPE ViPipe);
|
||||
} ISP_AF_EXP_FUNC_S;
|
||||
|
||||
typedef struct _ISP_AE_REGISTER_S {
|
||||
ISP_AE_EXP_FUNC_S stAeExpFunc;
|
||||
} ISP_AE_REGISTER_S;
|
||||
|
||||
typedef struct _ISP_AWB_REGISTER_S {
|
||||
ISP_AWB_EXP_FUNC_S stAwbExpFunc;
|
||||
} ISP_AWB_REGISTER_S;
|
||||
|
||||
typedef struct _ISP_AF_REGISTER_S {
|
||||
ISP_AF_EXP_FUNC_S stAfExpFunc;
|
||||
} ISP_AF_REGISTER_S;
|
||||
|
||||
typedef enum _ISP_CTRL_CMD_E {
|
||||
ISP_WDR_MODE_SET = 0,
|
||||
|
||||
ISP_CTRL_CMD_BUTT_MAX,
|
||||
} ISP_CTRL_CMD_E;
|
||||
|
||||
|
||||
#define AWB_DBG_VER (11)
|
||||
#define AWB_SENSOR_NUM (2)
|
||||
#define AWB_DBG_W (64)
|
||||
#define AWB_DBG_H (32)
|
||||
#define AWB_SHIFT_REGION_NUM (4)
|
||||
typedef struct _AWB_DBG_S {
|
||||
//Don't modify ==>
|
||||
CVI_U32 u32Date;
|
||||
CVI_U16 u16AlgoVer;
|
||||
CVI_U16 u16DbgVer;
|
||||
CVI_U16 u16MaxFrameNum;
|
||||
CVI_U16 u16SensorId;
|
||||
CVI_U32 u32BinSize;
|
||||
CVI_U16 u16WinWnum;
|
||||
CVI_U16 u16WinHnum;
|
||||
CVI_U16 u16WinOffX;
|
||||
CVI_U16 u16WinOffY;
|
||||
CVI_U16 u16WinWsize;
|
||||
CVI_U16 u16WinHsize;
|
||||
CVI_U16 u16P_R[2][AWB_DBG_W*AWB_DBG_H];//keep Max Size
|
||||
CVI_U16 u16P_G[2][AWB_DBG_W*AWB_DBG_H];//keep Max Size
|
||||
CVI_U16 u16P_B[2][AWB_DBG_W*AWB_DBG_H];//keep Max Size
|
||||
CVI_U16 u16P_type[2][AWB_DBG_W*AWB_DBG_H];//keep Max Size
|
||||
CVI_U16 u16GrayCnt;
|
||||
CVI_U16 u16BalanceR;
|
||||
CVI_U16 u16BalanceB;
|
||||
CVI_U16 u16FinalR;
|
||||
CVI_U16 u16FinalB;
|
||||
CVI_U16 u16CurrentR;
|
||||
CVI_U16 u16CurrentB;
|
||||
CVI_U16 u16IdealR;
|
||||
CVI_U16 u16IdealB;
|
||||
CVI_U16 CalibRgain[AWB_CALIB_PTS_NUM];
|
||||
CVI_U16 CalibBgain[AWB_CALIB_PTS_NUM];
|
||||
CVI_U16 CalibTemp[AWB_CALIB_PTS_NUM];
|
||||
CVI_U16 u16CurveR[256];//4096/16
|
||||
CVI_U16 u16CurveB[256];
|
||||
CVI_U16 u16CurveB_Top[256];
|
||||
CVI_U16 u16CurveB_Bot[256];
|
||||
CVI_S16 s16LvX100;
|
||||
CVI_U32 u32ISONum;
|
||||
ISP_WB_ATTR_S dbgMPIAttr[AWB_SENSOR_NUM];
|
||||
ISP_WB_ATTR_S dbgInfoAttr[AWB_SENSOR_NUM];
|
||||
ISP_AWB_ATTR_EX_S dbgMPIAttrEx[AWB_SENSOR_NUM];
|
||||
ISP_AWB_ATTR_EX_S dbgInfoAttrEx[AWB_SENSOR_NUM];
|
||||
//Don't modify <==
|
||||
CVI_U8 calib_sts;
|
||||
ISP_AWB_Calibration_Gain_S_EX calib_ex;
|
||||
ISP_SMART_ROI_S stFace;
|
||||
|
||||
// fix size to 128 byte from here
|
||||
CVI_U16 u16Region_R[AWB_SHIFT_REGION_NUM];
|
||||
CVI_U8 u8Reserve[120];
|
||||
} s_AWB_DBG_S;
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* End of #ifdef __cplusplus */
|
||||
|
||||
#endif /* __CVI_COMM_3A_H__ */
|
||||
47
middleware/v2/modules/isp/include/sg200x/cvi_comm_inc.h
Normal file
47
middleware/v2/modules/isp/include/sg200x/cvi_comm_inc.h
Normal file
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright (C) Cvitek Co., Ltd. 2019-2021. All rights reserved.
|
||||
*
|
||||
* File Name: include/cvi_common_inc.h
|
||||
* Description:
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __CVI_COMM_INC_H__
|
||||
#define __CVI_COMM_INC_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#endif /* End of #ifdef __cplusplus */
|
||||
|
||||
#include "stddef.h"
|
||||
#include "stdint.h"
|
||||
#include <sys/time.h>
|
||||
|
||||
#if defined(ARCH_CV183X) || defined(ARCH_CV182X)
|
||||
#include <cvi_common.h>
|
||||
#include <cvi_comm_vi.h>
|
||||
#include <cvi_comm_video.h>
|
||||
#include <cvi_defines.h>
|
||||
#elif defined(ARCH_RTOS_CV181X)
|
||||
#include <cvi_common.h>
|
||||
#include <cvi_comm_vi.h>
|
||||
#include <cvi_comm_video.h>
|
||||
#include <cvi_defines.h>
|
||||
#elif defined(ARCH_CV181X) || defined(ARCH_CV180X) || defined(__SOC_MARS__) || defined(__SOC_PHOBOS__)
|
||||
#include <linux/cvi_common.h>
|
||||
#include <linux/cvi_comm_vi.h>
|
||||
#include <linux/cvi_comm_video.h>
|
||||
#include <linux/cvi_defines.h>
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* End of #ifdef __cplusplus */
|
||||
|
||||
#endif /* __CVI_COMM_INC_H__ */
|
||||
2667
middleware/v2/modules/isp/include/sg200x/cvi_comm_isp.h
Normal file
2667
middleware/v2/modules/isp/include/sg200x/cvi_comm_isp.h
Normal file
File diff suppressed because it is too large
Load Diff
324
middleware/v2/modules/isp/include/sg200x/cvi_isp.h
Normal file
324
middleware/v2/modules/isp/include/sg200x/cvi_isp.h
Normal file
@@ -0,0 +1,324 @@
|
||||
/*
|
||||
* Copyright (C) Cvitek Co., Ltd. 2019-2022. All rights reserved.
|
||||
*
|
||||
* File Name: include/cvi_isp.h
|
||||
* Description:
|
||||
*/
|
||||
|
||||
#ifndef __CVI_ISP_H__
|
||||
#define __CVI_ISP_H__
|
||||
|
||||
#include "stdio.h"
|
||||
|
||||
#include "cvi_comm_isp.h"
|
||||
#include "cvi_comm_3a.h"
|
||||
#include "cvi_comm_sns.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#endif /* End of #ifdef __cplusplus */
|
||||
|
||||
/* Firmware Main Operation */
|
||||
CVI_S32 CVI_ISP_Init(VI_PIPE ViPipe);
|
||||
CVI_S32 CVI_ISP_MemInit(VI_PIPE ViPipe);
|
||||
CVI_S32 CVI_ISP_Run(VI_PIPE ViPipe);
|
||||
CVI_S32 CVI_ISP_RunOnce(VI_PIPE ViPipe);
|
||||
CVI_S32 CVI_ISP_Exit(VI_PIPE ViPipe);
|
||||
|
||||
/* Each Param set / get Operation */
|
||||
CVI_S32 CVI_ISP_SetPubAttr(VI_PIPE ViPipe, const ISP_PUB_ATTR_S *pstPubAttr);
|
||||
CVI_S32 CVI_ISP_GetPubAttr(VI_PIPE ViPipe, ISP_PUB_ATTR_S *pstPubAttr);
|
||||
CVI_S32 CVI_ISP_SetModParam(const ISP_MOD_PARAM_S *pstModParam);
|
||||
CVI_S32 CVI_ISP_GetModParam(ISP_MOD_PARAM_S *pstModParam);
|
||||
CVI_S32 CVI_ISP_SetCtrlParam(VI_PIPE ViPipe,
|
||||
const ISP_CTRL_PARAM_S *pstIspCtrlParam);
|
||||
CVI_S32 CVI_ISP_GetCtrlParam(VI_PIPE ViPipe, ISP_CTRL_PARAM_S *pstIspCtrlParam);
|
||||
CVI_S32 CVI_ISP_SetFMWState(VI_PIPE ViPipe, const ISP_FMW_STATE_E enState);
|
||||
CVI_S32 CVI_ISP_GetFMWState(VI_PIPE ViPipe, ISP_FMW_STATE_E *penState);
|
||||
/* sensor related register */
|
||||
CVI_S32 CVI_ISP_SensorRegCallBack(VI_PIPE ViPipe,
|
||||
ISP_SNS_ATTR_INFO_S *pstSnsAttrInfo, ISP_SENSOR_REGISTER_S *pstRegister);
|
||||
CVI_S32 CVI_ISP_SensorUnRegCallBack(VI_PIPE ViPipe, SENSOR_ID SensorId);
|
||||
|
||||
/* 3a algo &static related function. */
|
||||
CVI_S32 CVI_AWB_Register(VI_PIPE ViPipe, ALG_LIB_S *pstAeLib);
|
||||
CVI_S32 CVI_AWB_UnRegister(VI_PIPE ViPipe, ALG_LIB_S *pstAeLib);
|
||||
|
||||
CVI_S32 CVI_ISP_AELibRegCallBack(VI_PIPE ViPipe, ALG_LIB_S *pstAeLib,
|
||||
ISP_AE_REGISTER_S *pstRegister);
|
||||
CVI_S32 CVI_ISP_AELibUnRegCallBack(VI_PIPE ViPipe, ALG_LIB_S *pstAeLib);
|
||||
|
||||
CVI_S32 CVI_ISP_AWBLibRegCallBack(VI_PIPE ViPipe, ALG_LIB_S *pstAwbLib,
|
||||
ISP_AWB_REGISTER_S *pstRegister);
|
||||
CVI_S32 CVI_ISP_AWBLibUnRegCallBack(VI_PIPE ViPipe, ALG_LIB_S *pstAwbLib);
|
||||
|
||||
CVI_S32 CVI_ISP_AFLibRegCallBack(VI_PIPE ViPipe, ALG_LIB_S *pstAfLib,
|
||||
ISP_AF_REGISTER_S *pstRegister);
|
||||
CVI_S32 CVI_ISP_AFLibUnRegCallBack(VI_PIPE ViPipe, ALG_LIB_S *pstAwbLib);
|
||||
|
||||
CVI_S32 CVI_ISP_SetBindAttr(VI_PIPE ViPipe, const ISP_BIND_ATTR_S *pstBindAttr);
|
||||
CVI_S32 CVI_ISP_GetBindAttr(VI_PIPE ViPipe, ISP_BIND_ATTR_S *pstBindAttr);
|
||||
|
||||
CVI_S32 CVI_ISP_SetModuleControl(VI_PIPE ViPipe, const ISP_MODULE_CTRL_U *punModCtrl);
|
||||
CVI_S32 CVI_ISP_GetModuleControl(VI_PIPE ViPipe, ISP_MODULE_CTRL_U *punModCtrl);
|
||||
CVI_S32 CVI_ISP_SetRegister(VI_PIPE ViPipe, CVI_U32 u32Addr, CVI_U32 u32Value);
|
||||
CVI_S32 CVI_ISP_GetRegister(VI_PIPE ViPipe, CVI_U32 u32Addr, CVI_U32 *pu32Value);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Black Level Correction(BLC)
|
||||
//-----------------------------------------------------------------------------
|
||||
CVI_S32 CVI_ISP_SetBlackLevelAttr(VI_PIPE ViPipe, const ISP_BLACK_LEVEL_ATTR_S *pstBlackLevelAttr);
|
||||
CVI_S32 CVI_ISP_GetBlackLevelAttr(VI_PIPE ViPipe, ISP_BLACK_LEVEL_ATTR_S *pstBlackLevelAttr);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Dead pixel correction(DPC)
|
||||
//-----------------------------------------------------------------------------
|
||||
CVI_S32 CVI_ISP_SetDPDynamicAttr(VI_PIPE ViPipe, const ISP_DP_DYNAMIC_ATTR_S *pstDPCDynamicAttr);
|
||||
CVI_S32 CVI_ISP_GetDPDynamicAttr(VI_PIPE ViPipe, ISP_DP_DYNAMIC_ATTR_S *pstDPCDynamicAttr);
|
||||
CVI_S32 CVI_ISP_SetDPStaticAttr(VI_PIPE ViPipe, const ISP_DP_STATIC_ATTR_S *pstDPStaticAttr);
|
||||
CVI_S32 CVI_ISP_GetDPStaticAttr(VI_PIPE ViPipe, ISP_DP_STATIC_ATTR_S *pstDPStaticAttr);
|
||||
CVI_S32 CVI_ISP_SetDPCalibrate(VI_PIPE ViPipe, const ISP_DP_CALIB_ATTR_S *pstDPCalibAttr);
|
||||
CVI_S32 CVI_ISP_GetDPCalibrate(VI_PIPE ViPipe, ISP_DP_CALIB_ATTR_S *pstDPCalibAttr);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Crosstalk
|
||||
//-----------------------------------------------------------------------------
|
||||
CVI_S32 CVI_ISP_SetCrosstalkAttr(VI_PIPE ViPipe, const ISP_CROSSTALK_ATTR_S *pstCrosstalkAttr);
|
||||
CVI_S32 CVI_ISP_GetCrosstalkAttr(VI_PIPE ViPipe, ISP_CROSSTALK_ATTR_S *pstCrosstalkAttr);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Bayer domain noise reduction (BNR)
|
||||
//-----------------------------------------------------------------------------
|
||||
CVI_S32 CVI_ISP_SetNRAttr(VI_PIPE ViPipe, const ISP_NR_ATTR_S *pstNRAttr);
|
||||
CVI_S32 CVI_ISP_GetNRAttr(VI_PIPE ViPipe, ISP_NR_ATTR_S *pstNRAttr);
|
||||
CVI_S32 CVI_ISP_SetNRFilterAttr(VI_PIPE ViPipe, const ISP_NR_FILTER_ATTR_S *pstNRFilterAttr);
|
||||
CVI_S32 CVI_ISP_GetNRFilterAttr(VI_PIPE ViPipe, ISP_NR_FILTER_ATTR_S *pstNRFilterAttr);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Demosaic
|
||||
//-----------------------------------------------------------------------------
|
||||
CVI_S32 CVI_ISP_SetDemosaicAttr(VI_PIPE ViPipe, const ISP_DEMOSAIC_ATTR_S *pstDemosaicAttr);
|
||||
CVI_S32 CVI_ISP_GetDemosaicAttr(VI_PIPE ViPipe, ISP_DEMOSAIC_ATTR_S *pstDemosaicAttr);
|
||||
CVI_S32 CVI_ISP_SetDemosaicDemoireAttr(VI_PIPE ViPipe, const ISP_DEMOSAIC_DEMOIRE_ATTR_S *pstDemosaicDemoireAttr);
|
||||
CVI_S32 CVI_ISP_GetDemosaicDemoireAttr(VI_PIPE ViPipe, ISP_DEMOSAIC_DEMOIRE_ATTR_S *pstDemosaicDemoireAttr);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// RGBCAC
|
||||
//-----------------------------------------------------------------------------
|
||||
CVI_S32 CVI_ISP_SetRGBCACAttr(VI_PIPE ViPipe, const ISP_RGBCAC_ATTR_S *pstRGBCACAttr);
|
||||
CVI_S32 CVI_ISP_GetRGBCACAttr(VI_PIPE ViPipe, ISP_RGBCAC_ATTR_S *pstRGBCACAttr);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// LCAC
|
||||
//-----------------------------------------------------------------------------
|
||||
CVI_S32 CVI_ISP_SetLCACAttr(VI_PIPE ViPipe, const ISP_LCAC_ATTR_S *pstLCACAttr);
|
||||
CVI_S32 CVI_ISP_GetLCACAttr(VI_PIPE ViPipe, ISP_LCAC_ATTR_S *pstLCACAttr);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Mesh lens shading correction (MLSC)
|
||||
//-----------------------------------------------------------------------------
|
||||
CVI_S32 CVI_ISP_SetMeshShadingAttr(VI_PIPE ViPipe, const ISP_MESH_SHADING_ATTR_S *pstMeshShadingAttr);
|
||||
CVI_S32 CVI_ISP_GetMeshShadingAttr(VI_PIPE ViPipe, ISP_MESH_SHADING_ATTR_S *pstMeshShadingAttr);
|
||||
CVI_S32 CVI_ISP_SetMeshShadingGainLutAttr(VI_PIPE ViPipe,
|
||||
const ISP_MESH_SHADING_GAIN_LUT_ATTR_S *pstMeshShadingGainLutAttr);
|
||||
CVI_S32 CVI_ISP_GetMeshShadingGainLutAttr(VI_PIPE ViPipe,
|
||||
ISP_MESH_SHADING_GAIN_LUT_ATTR_S *pstMeshShadingGainLutAttr);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// CCM
|
||||
//-----------------------------------------------------------------------------
|
||||
CVI_S32 CVI_ISP_SetSaturationAttr(VI_PIPE ViPipe, const ISP_SATURATION_ATTR_S *pstSaturationAttr);
|
||||
CVI_S32 CVI_ISP_GetSaturationAttr(VI_PIPE ViPipe, ISP_SATURATION_ATTR_S *pstSaturationAttr);
|
||||
CVI_S32 CVI_ISP_SetCCMSaturationAttr(VI_PIPE ViPipe, const ISP_CCM_SATURATION_ATTR_S *pstCCMSaturationAttr);
|
||||
CVI_S32 CVI_ISP_GetCCMSaturationAttr(VI_PIPE ViPipe, ISP_CCM_SATURATION_ATTR_S *pstCCMSaturationAttr);
|
||||
CVI_S32 CVI_ISP_SetCCMAttr(VI_PIPE ViPipe, const ISP_CCM_ATTR_S *pstCCMAttr);
|
||||
CVI_S32 CVI_ISP_GetCCMAttr(VI_PIPE ViPipe, ISP_CCM_ATTR_S *pstCCMAttr);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// CSC
|
||||
//-----------------------------------------------------------------------------
|
||||
CVI_S32 CVI_ISP_SetCSCAttr(VI_PIPE ViPipe, const ISP_CSC_ATTR_S *pstCSCAttr);
|
||||
CVI_S32 CVI_ISP_GetCSCAttr(VI_PIPE ViPipe, ISP_CSC_ATTR_S *pstCSCAttr);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Color tone
|
||||
//-----------------------------------------------------------------------------
|
||||
CVI_S32 CVI_ISP_SetColorToneAttr(VI_PIPE ViPipe,
|
||||
const ISP_COLOR_TONE_ATTR_S *pstColorToneAttr);
|
||||
CVI_S32 CVI_ISP_GetColorToneAttr(VI_PIPE ViPipe, ISP_COLOR_TONE_ATTR_S *pstColorToneAttr);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// FSWDR
|
||||
//-----------------------------------------------------------------------------
|
||||
CVI_S32 CVI_ISP_SetFSWDRAttr(VI_PIPE ViPipe, const ISP_FSWDR_ATTR_S *pstFSWDRAttr);
|
||||
CVI_S32 CVI_ISP_GetFSWDRAttr(VI_PIPE ViPipe, ISP_FSWDR_ATTR_S *pstFSWDRAttr);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// DRC
|
||||
//-----------------------------------------------------------------------------
|
||||
CVI_S32 CVI_ISP_SetDRCAttr(VI_PIPE ViPipe, const ISP_DRC_ATTR_S *pstDRCAttr);
|
||||
CVI_S32 CVI_ISP_GetDRCAttr(VI_PIPE ViPipe, ISP_DRC_ATTR_S *pstDRCAttr);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Gamma
|
||||
//-----------------------------------------------------------------------------
|
||||
CVI_S32 CVI_ISP_SetGammaAttr(VI_PIPE ViPipe, const ISP_GAMMA_ATTR_S *pstGammaAttr);
|
||||
CVI_S32 CVI_ISP_GetGammaAttr(VI_PIPE ViPipe, ISP_GAMMA_ATTR_S *pstGammaAttr);
|
||||
CVI_S32 CVI_ISP_GetGammaCurveByType(VI_PIPE ViPipe, ISP_GAMMA_ATTR_S *pstGammaAttr,
|
||||
const ISP_GAMMA_CURVE_TYPE_E curveType);
|
||||
CVI_S32 CVI_ISP_SetAutoGammaAttr(VI_PIPE ViPipe, const ISP_AUTO_GAMMA_ATTR_S *pstGammaAttr);
|
||||
CVI_S32 CVI_ISP_GetAutoGammaAttr(VI_PIPE ViPipe, ISP_AUTO_GAMMA_ATTR_S *pstGammaAttr);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Dehaze
|
||||
//-----------------------------------------------------------------------------
|
||||
CVI_S32 CVI_ISP_SetDehazeAttr(VI_PIPE ViPipe,
|
||||
const ISP_DEHAZE_ATTR_S *pstDehazeAttr);
|
||||
CVI_S32 CVI_ISP_GetDehazeAttr(VI_PIPE ViPipe, ISP_DEHAZE_ATTR_S *pstDehazeAttr);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// CLUT
|
||||
//-----------------------------------------------------------------------------
|
||||
CVI_S32 CVI_ISP_SetClutAttr(VI_PIPE ViPipe, const ISP_CLUT_ATTR_S *pstClutAttr);
|
||||
CVI_S32 CVI_ISP_GetClutAttr(VI_PIPE ViPipe, ISP_CLUT_ATTR_S *pstClutAttr);
|
||||
CVI_S32 CVI_ISP_SetClutSaturationAttr(VI_PIPE ViPipe, const ISP_CLUT_SATURATION_ATTR_S *pstClutSaturationAttr);
|
||||
CVI_S32 CVI_ISP_GetClutSaturationAttr(VI_PIPE ViPipe, ISP_CLUT_SATURATION_ATTR_S *pstClutSaturationAttr);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// DCI
|
||||
//-----------------------------------------------------------------------------
|
||||
CVI_S32 CVI_ISP_SetDCIAttr(VI_PIPE ViPipe, const ISP_DCI_ATTR_S *pstDCIAttr);
|
||||
CVI_S32 CVI_ISP_GetDCIAttr(VI_PIPE ViPipe, ISP_DCI_ATTR_S *pstDCIAttr);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// LDCI
|
||||
//-----------------------------------------------------------------------------
|
||||
CVI_S32 CVI_ISP_SetLDCIAttr(VI_PIPE ViPipe, const ISP_LDCI_ATTR_S *pstLDCIAttr);
|
||||
CVI_S32 CVI_ISP_GetLDCIAttr(VI_PIPE ViPipe, ISP_LDCI_ATTR_S *pstLDCIAttr);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// CA (CA/CP)
|
||||
//-----------------------------------------------------------------------------
|
||||
CVI_S32 CVI_ISP_SetCAAttr(VI_PIPE ViPipe, const ISP_CA_ATTR_S *pstCAAttr);
|
||||
CVI_S32 CVI_ISP_GetCAAttr(VI_PIPE ViPipe, ISP_CA_ATTR_S *pstCAAttr);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// CA2
|
||||
//-----------------------------------------------------------------------------
|
||||
CVI_S32 CVI_ISP_SetCA2Attr(VI_PIPE ViPipe, const ISP_CA2_ATTR_S *pstCA2Attr);
|
||||
CVI_S32 CVI_ISP_GetCA2Attr(VI_PIPE ViPipe, ISP_CA2_ATTR_S *pstCA2Attr);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// PreSharpen
|
||||
//-----------------------------------------------------------------------------
|
||||
CVI_S32 CVI_ISP_SetPreSharpenAttr(VI_PIPE ViPipe, const ISP_PRESHARPEN_ATTR_S *pstPreSharpenAttr);
|
||||
CVI_S32 CVI_ISP_GetPreSharpenAttr(VI_PIPE ViPipe, ISP_PRESHARPEN_ATTR_S *pstPreSharpenAttr);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Time-domain noise reduction (TNR)
|
||||
//-----------------------------------------------------------------------------
|
||||
CVI_S32 CVI_ISP_SetTNRAttr(VI_PIPE ViPipe, const ISP_TNR_ATTR_S *pstTNRAttr);
|
||||
CVI_S32 CVI_ISP_GetTNRAttr(VI_PIPE ViPipe, ISP_TNR_ATTR_S *pstTNRAttr);
|
||||
CVI_S32 CVI_ISP_SetTNRNoiseModelAttr(VI_PIPE ViPipe, const ISP_TNR_NOISE_MODEL_ATTR_S *pstTNRNoiseModelAttr);
|
||||
CVI_S32 CVI_ISP_GetTNRNoiseModelAttr(VI_PIPE ViPipe, ISP_TNR_NOISE_MODEL_ATTR_S *pstTNRNoiseModelAttr);
|
||||
CVI_S32 CVI_ISP_SetTNRLumaMotionAttr(VI_PIPE ViPipe, const ISP_TNR_LUMA_MOTION_ATTR_S *pstTNRLumaMotionAttr);
|
||||
CVI_S32 CVI_ISP_GetTNRLumaMotionAttr(VI_PIPE ViPipe, ISP_TNR_LUMA_MOTION_ATTR_S *pstTNRLumaMotionAttr);
|
||||
CVI_S32 CVI_ISP_SetTNRGhostAttr(VI_PIPE ViPipe, const ISP_TNR_GHOST_ATTR_S *pstTNRGhostAttr);
|
||||
CVI_S32 CVI_ISP_GetTNRGhostAttr(VI_PIPE ViPipe, ISP_TNR_GHOST_ATTR_S *pstTNRGhostAttr);
|
||||
CVI_S32 CVI_ISP_SetTNRMtPrtAttr(VI_PIPE ViPipe, const ISP_TNR_MT_PRT_ATTR_S *pstTNRMtPrtAttr);
|
||||
CVI_S32 CVI_ISP_GetTNRMtPrtAttr(VI_PIPE ViPipe, ISP_TNR_MT_PRT_ATTR_S *pstTNRMtPrtAttr);
|
||||
CVI_S32 CVI_ISP_SetTNRMotionAdaptAttr(VI_PIPE ViPipe, const ISP_TNR_MOTION_ADAPT_ATTR_S *pstTNRMotionAdaptAttr);
|
||||
CVI_S32 CVI_ISP_GetTNRMotionAdaptAttr(VI_PIPE ViPipe, ISP_TNR_MOTION_ADAPT_ATTR_S *pstTNRMotionAdaptAttr);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Y domain noise reduction (YNR)
|
||||
//-----------------------------------------------------------------------------
|
||||
CVI_S32 CVI_ISP_SetYNRAttr(VI_PIPE ViPipe, const ISP_YNR_ATTR_S *pstYNRAttr);
|
||||
CVI_S32 CVI_ISP_GetYNRAttr(VI_PIPE ViPipe, ISP_YNR_ATTR_S *pstYNRAttr);
|
||||
CVI_S32 CVI_ISP_SetYNRMotionNRAttr(VI_PIPE ViPipe, const ISP_YNR_MOTION_NR_ATTR_S *pstYNRMotionNRAttr);
|
||||
CVI_S32 CVI_ISP_GetYNRMotionNRAttr(VI_PIPE ViPipe, ISP_YNR_MOTION_NR_ATTR_S *pstYNRMotionNRAttr);
|
||||
CVI_S32 CVI_ISP_SetYNRFilterAttr(VI_PIPE ViPipe, const ISP_YNR_FILTER_ATTR_S *pstYNRFilterAttr);
|
||||
CVI_S32 CVI_ISP_GetYNRFilterAttr(VI_PIPE ViPipe, ISP_YNR_FILTER_ATTR_S *pstYNRFilterAttr);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// UV domain noise reduction (CNR)
|
||||
//-----------------------------------------------------------------------------
|
||||
CVI_S32 CVI_ISP_SetCNRAttr(VI_PIPE ViPipe, const ISP_CNR_ATTR_S *pstCNRAttr);
|
||||
CVI_S32 CVI_ISP_GetCNRAttr(VI_PIPE ViPipe, ISP_CNR_ATTR_S *pstCNRAttr);
|
||||
CVI_S32 CVI_ISP_SetCNRMotionNRAttr(VI_PIPE ViPipe, const ISP_CNR_MOTION_NR_ATTR_S *pstCNRMotionNRAttr);
|
||||
CVI_S32 CVI_ISP_GetCNRMotionNRAttr(VI_PIPE ViPipe, ISP_CNR_MOTION_NR_ATTR_S *pstCNRMotionNRAttr);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// CAC
|
||||
//-----------------------------------------------------------------------------
|
||||
CVI_S32 CVI_ISP_SetCACAttr(VI_PIPE ViPipe, const ISP_CAC_ATTR_S *pstCACAttr);
|
||||
CVI_S32 CVI_ISP_GetCACAttr(VI_PIPE ViPipe, ISP_CAC_ATTR_S *pstCACAttr);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Sharpen
|
||||
//-----------------------------------------------------------------------------
|
||||
CVI_S32 CVI_ISP_SetSharpenAttr(VI_PIPE ViPipe, const ISP_SHARPEN_ATTR_S *pstSharpenAttr);
|
||||
CVI_S32 CVI_ISP_GetSharpenAttr(VI_PIPE ViPipe, ISP_SHARPEN_ATTR_S *pstSharpenAttr);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Y Contrast
|
||||
//-----------------------------------------------------------------------------
|
||||
CVI_S32 CVI_ISP_SetYContrastAttr(VI_PIPE ViPipe, const ISP_YCONTRAST_ATTR_S *pstYContrastAttr);
|
||||
CVI_S32 CVI_ISP_GetYContrastAttr(VI_PIPE ViPipe, ISP_YCONTRAST_ATTR_S *pstYContrastAttr);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Mono
|
||||
//-----------------------------------------------------------------------------
|
||||
CVI_S32 CVI_ISP_SetMonoAttr(VI_PIPE ViPipe, const ISP_MONO_ATTR_S *pstMonoAttr);
|
||||
CVI_S32 CVI_ISP_GetMonoAttr(VI_PIPE ViPipe, ISP_MONO_ATTR_S *pstMonoAttr);
|
||||
|
||||
|
||||
CVI_S32 CVI_ISP_SetStatisticsConfig(VI_PIPE ViPipe, const ISP_STATISTICS_CFG_S *pstStatCfg);
|
||||
CVI_S32 CVI_ISP_GetStatisticsConfig(VI_PIPE ViPipe, ISP_STATISTICS_CFG_S *pstStatCfg);
|
||||
CVI_S32 CVI_ISP_GetAEStatistics(VI_PIPE ViPipe, ISP_AE_STATISTICS_S *pstAeStat);
|
||||
CVI_S32 CVI_ISP_GetWBStatistics(VI_PIPE ViPipe, ISP_WB_STATISTICS_S *pstWBStat);
|
||||
CVI_S32 CVI_ISP_GetFocusStatistics(VI_PIPE ViPipe, ISP_AF_STATISTICS_S *pstAfStat);
|
||||
CVI_S32 CVI_ISP_GetLightboxGain(VI_PIPE ViPipe, ISP_AWB_LightBox_Gain_S *pstAWBLightBoxGain);
|
||||
|
||||
CVI_S32 CVI_ISP_SetNoiseProfileAttr(VI_PIPE ViPipe, const ISP_CMOS_NOISE_CALIBRATION_S *pstNoiseProfileAttr);
|
||||
CVI_S32 CVI_ISP_GetNoiseProfileAttr(VI_PIPE ViPipe, ISP_CMOS_NOISE_CALIBRATION_S *pstNoiseProfileAttr);
|
||||
|
||||
/* MIPI related function. */
|
||||
CVI_S32 CVI_MIPI_SetMipiReset(CVI_S32 devno, CVI_U32 reset);
|
||||
CVI_S32 CVI_MIPI_SetSensorClock(CVI_S32 devno, CVI_U32 enable);
|
||||
CVI_S32 CVI_MIPI_SetSensorReset(CVI_S32 devno, CVI_U32 reset);
|
||||
CVI_S32 CVI_MIPI_SetMipiAttr(CVI_S32 ViPipe, const CVI_VOID *devAttr);
|
||||
CVI_S32 CVI_MIPI_SetClkEdge(CVI_S32 devno, CVI_U32 is_up);
|
||||
CVI_S32 CVI_MIPI_SetSnsMclk(SNS_MCLK_S *mclk);
|
||||
|
||||
CVI_S32 CVI_ISP_QueryInnerStateInfo(VI_PIPE ViPipe, ISP_INNER_STATE_INFO_S *pstInnerStateInfo);
|
||||
CVI_S32 CVI_ISP_GetVDTimeOut(VI_PIPE ViPipe, ISP_VD_TYPE_E enIspVDType, CVI_U32 u32MilliSec);
|
||||
//CVI_S32 CVI_ISP_GetAEStitchStatistics(VI_PIPE ViPipe, ISP_AE_STITCH_STATISTICS_S *pstStitchStat);
|
||||
//CVI_S32 CVI_ISP_GetMGStatistics(VI_PIPE ViPipe, ISP_MG_STATISTICS_S *pstMgStat);
|
||||
//CVI_S32 CVI_ISP_GetWBStitchStatistics(VI_PIPE ViPipe, ISP_WB_STITCH_STATISTICS_S *pstStitchWBStat);
|
||||
|
||||
CVI_S32 CVI_ISP_SetDisAttr(VI_PIPE ViPipe, const ISP_DIS_ATTR_S *pstDisAttr);
|
||||
CVI_S32 CVI_ISP_GetDisAttr(VI_PIPE ViPipe, ISP_DIS_ATTR_S *pstDisAttr);
|
||||
CVI_S32 CVI_ISP_SetDisConfig(VI_PIPE ViPipe, const ISP_DIS_CONFIG_S *pstDisConfig);
|
||||
CVI_S32 CVI_ISP_GetDisConfig(VI_PIPE ViPipe, ISP_DIS_CONFIG_S *pstDisConfig);
|
||||
|
||||
CVI_S32 CVI_ISP_SetVCAttr(VI_PIPE ViPipe, const ISP_VC_ATTR_S *pstVCAttr);
|
||||
CVI_S32 CVI_ISP_GetVCAttr(VI_PIPE ViPipe, ISP_VC_ATTR_S *pstVCAttr);
|
||||
|
||||
CVI_S32 CVI_ISP_DumpHwRegisterToFile(VI_PIPE ViPipe, FILE *fp);
|
||||
CVI_S32 CVI_ISP_DumpFrameRawInfoToFile(VI_PIPE ViPipe, FILE *fp);
|
||||
|
||||
CVI_S32 CVI_ISP_IrAutoRunOnce(ISP_DEV IspDev, ISP_IR_AUTO_ATTR_S *pstIrAttr);
|
||||
|
||||
CVI_S32 CVI_ISP_SetSmartInfo(VI_PIPE ViPipe, const ISP_SMART_INFO_S *pstSmartInfo, CVI_U8 TimeOut);
|
||||
CVI_S32 CVI_ISP_GetSmartInfo(VI_PIPE ViPipe, ISP_SMART_INFO_S *pstSmartInfo);
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* End of #ifdef __cplusplus */
|
||||
|
||||
#endif /*__CVI_ISP_H__ */
|
||||
28
middleware/v2/modules/isp/include/sg200x/cvi_ispd2.h
Normal file
28
middleware/v2/modules/isp/include/sg200x/cvi_ispd2.h
Normal file
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Copyright (C) Cvitek Co., Ltd. 2019-2022. All rights reserved.
|
||||
*
|
||||
* File Name: cvi_ispd2.h
|
||||
* Description:
|
||||
*/
|
||||
|
||||
#ifndef _CVI_ISPD2_H_
|
||||
#define _CVI_ISPD2_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#endif /* End of #ifdef __cplusplus */
|
||||
|
||||
void isp_daemon2_init(unsigned int port);
|
||||
void isp_daemon2_uninit(void);
|
||||
|
||||
void isp_daemon2_enable_device_bind_control(int enable);
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* End of #ifdef __cplusplus */
|
||||
|
||||
#endif // _CVI_ISPD2_H_
|
||||
249
middleware/v2/modules/isp/include/sg200x/cvi_json_struct_comm.h
Normal file
249
middleware/v2/modules/isp/include/sg200x/cvi_json_struct_comm.h
Normal file
@@ -0,0 +1,249 @@
|
||||
/*
|
||||
* Copyright (C) Cvitek Co., Ltd. 2019-2021. All rights reserved.
|
||||
*
|
||||
* File Name: cvi_json_struct_common.h
|
||||
* Description:
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _CVI_JSON_STRUCT_COMM_H
|
||||
#define _CVI_JSON_STRUCT_COMM_H
|
||||
|
||||
#include <stdio.h>
|
||||
#include <float.h>
|
||||
#include <linux/cvi_common.h>
|
||||
|
||||
#include "cvi_json.h"
|
||||
#include "cvi_bin.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#endif /* End of #ifdef __cplusplus */
|
||||
|
||||
// json utils
|
||||
typedef struct cvi_json_object JSON;
|
||||
extern char param_point[150];
|
||||
#define CVI_U8_MAX 0xff
|
||||
#define CVI_S8_MIN -128
|
||||
#define CVI_S8_MAX 127
|
||||
#define CVI_U16_MAX 0xffff
|
||||
#define CVI_S16_MIN -32768
|
||||
#define CVI_S16_MAX 0x7fff
|
||||
#define CVI_U32_MAX 0xffffffff
|
||||
#define CVI_S32_MIN -2147483648
|
||||
#define CVI_S32_MAX 0x7fffffff
|
||||
#define CVI_U64_MAX 0xffffffffffffffff
|
||||
#define CVI_FLOAT_MIN -FLT_MAX
|
||||
#define CVI_FLOAT_MAX FLT_MAX
|
||||
#define R_FLAG 1
|
||||
#define W_FLAG 0
|
||||
|
||||
cvi_json_bool cvi_json_object_object_get_ex2(struct cvi_json_object *obj, const char *key,
|
||||
struct cvi_json_object **value);
|
||||
#define CVI_TRACE_JSON(level, ...) \
|
||||
do { \
|
||||
printf(__VA_ARGS__); \
|
||||
printf("\n"); \
|
||||
} while (0)
|
||||
#define JSON_(r_w_flag, base, type, key, value) type##_JSON(r_w_flag, base, key, (value))
|
||||
#define JSON(r_w_flag, type, value) JSON_(r_w_flag, obj, type, #value, &data->value)
|
||||
#define JSON_A_(r_w_flag, base, type, key, value, length) \
|
||||
do { \
|
||||
JSON *array; \
|
||||
if (r_w_flag == R_FLAG) { \
|
||||
if (cvi_json_object_object_get_ex(base, key, &array)) { \
|
||||
cvi_json_type cvi_type = cvi_json_object_get_type(array); \
|
||||
if (cvi_type != cvi_json_type_array) { \
|
||||
JSON_PRINT_ERR_DATA_TYPE(key); \
|
||||
break; \
|
||||
} \
|
||||
int size = cvi_json_object_array_length(array); \
|
||||
size = size > length ? length : size; \
|
||||
for (int i = 0; i < size; i++) { \
|
||||
char buffer_temp[50] = { 0 }; \
|
||||
snprintf(buffer_temp, sizeof(buffer_temp) - 1, "%s[%d]", key, i); \
|
||||
type##_JSON(r_w_flag, array, buffer_temp, (type *)(value) + i); \
|
||||
} \
|
||||
} else { \
|
||||
JSON_PRINT_ERR_NOT_EXIST(key); \
|
||||
} \
|
||||
} else { \
|
||||
array = cvi_json_object_new_array(); \
|
||||
for (int i = 0; i < length; i++) { \
|
||||
type##_JSON(r_w_flag, array, #value, ((type *)(value) + i)); \
|
||||
} \
|
||||
cvi_json_object_object_add(base, key, array); \
|
||||
} \
|
||||
} while (0)
|
||||
#define JSON_A(r_w_flag, type, value, length) JSON_A_(r_w_flag, obj, type, #value, data->value, (length))
|
||||
#define JSON_SB(r_w_flag, type, value) \
|
||||
{ \
|
||||
JSON *obj_temp = 0; \
|
||||
if (r_w_flag == R_FLAG) { \
|
||||
if (cvi_json_object_object_get_ex2(obj, #value, &obj_temp)) { \
|
||||
if (strcmp(#type, "CVI_U64") == 0) { \
|
||||
unsigned long long temp; \
|
||||
temp = cvi_json_object_get_uint64(obj_temp); \
|
||||
data->value = temp; \
|
||||
} \
|
||||
} else { \
|
||||
JSON_PRINT_ERR_NOT_EXIST(#value); \
|
||||
} \
|
||||
} else { \
|
||||
if (strcmp(#type, "CVI_U64") == 0) { \
|
||||
obj_temp = cvi_json_object_new_uint64(data->value); \
|
||||
} \
|
||||
if (cvi_json_object_is_type(obj, cvi_json_type_array)) { \
|
||||
cvi_json_object_array_add(obj, obj_temp); \
|
||||
} else { \
|
||||
cvi_json_object_object_add(obj, #value, obj_temp); \
|
||||
} \
|
||||
} \
|
||||
}
|
||||
#define JSON_START(r_w_flag) \
|
||||
JSON *obj = NULL; \
|
||||
{ \
|
||||
if (r_w_flag == R_FLAG) { \
|
||||
if (cvi_json_object_object_get_ex2(j, key, &obj) == 0) { \
|
||||
goto NotExit; \
|
||||
} \
|
||||
if (strlen(param_point) + strlen(key) + 1 <= sizeof(param_point) - 1) { \
|
||||
strcat(param_point, key); \
|
||||
strcat(param_point, "."); \
|
||||
} else { \
|
||||
printf("param_point overflow key =%s \n",key); \
|
||||
} \
|
||||
} else { \
|
||||
obj = cvi_json_object_new_object(); \
|
||||
} \
|
||||
}
|
||||
#define JSON_END(r_w_flag) \
|
||||
{ \
|
||||
if (r_w_flag == R_FLAG) { \
|
||||
param_point[strlen(param_point) - 1] = 0; \
|
||||
char *str = strrchr(param_point, '.'); \
|
||||
if (str == NULL) { \
|
||||
str = param_point; \
|
||||
} else { \
|
||||
str++; \
|
||||
} \
|
||||
if (strstr(key, "ISP_MESH_SHADING_GAIN_LUT_ATTR_S") || strstr(key, "ISP_CLUT_ATTR_S")) {\
|
||||
memset(param_point, 0, sizeof(param_point)); \
|
||||
} else { \
|
||||
memset(str, 0, sizeof(param_point) - (str - param_point)); \
|
||||
} \
|
||||
return; \
|
||||
NotExit: \
|
||||
JSON_PRINT_ERR_NOT_EXIST(key); \
|
||||
} else { \
|
||||
if (cvi_json_object_is_type(j, cvi_json_type_array)) { \
|
||||
cvi_json_object_array_add(j, obj); \
|
||||
} else { \
|
||||
cvi_json_object_object_add(j, key, obj); \
|
||||
} \
|
||||
} \
|
||||
}
|
||||
|
||||
#define JSON_START_ENTRANCE(r_w_flag) \
|
||||
{ \
|
||||
if (r_w_flag == R_FLAG) { \
|
||||
if (cvi_json_object_object_get_ex2(j, key, &obj) == 0) { \
|
||||
idx = 0; \
|
||||
JSON_PRINT_ERR_NOT_EXIST(key); \
|
||||
} \
|
||||
} else { \
|
||||
obj = cvi_json_object_new_object(); \
|
||||
} \
|
||||
}
|
||||
#define JSON_END_ENTRANCE(r_w_flag) \
|
||||
{ \
|
||||
if (r_w_flag != R_FLAG) { \
|
||||
if (cvi_json_object_is_type(j, cvi_json_type_array)) { \
|
||||
cvi_json_object_array_add(j, obj); \
|
||||
} else { \
|
||||
cvi_json_object_object_add(j, key, obj); \
|
||||
} \
|
||||
} \
|
||||
}
|
||||
|
||||
#define GET_ARRAY_STRING_SIZE(key, size, max_byte) (strlen(key) + size*(max_byte + 2) + 10)
|
||||
#define GET_OBJECT_STRING_SIZE(key, max_byte) (strlen(key) + max_byte + 10)
|
||||
|
||||
#define JSON_EX_START(str) strcat(str, "{ ")
|
||||
#define JSON_EX_END(str) strcat(str, " }")
|
||||
|
||||
#define PARSE_INT_ARRAY_TO_JSON_STR(key, data, size, str) { \
|
||||
char tmpstr[64] = {0}; \
|
||||
snprintf(tmpstr, sizeof(tmpstr),"\"%s\": [ %d", key, data[0]); \
|
||||
strcat(str, tmpstr); \
|
||||
int curPos = strlen(str); \
|
||||
for(int i = 1; i < size; i++){ \
|
||||
snprintf(tmpstr, sizeof(tmpstr), ", %d", data[i]); \
|
||||
strcat(str + curPos, tmpstr); \
|
||||
curPos += strlen(tmpstr); \
|
||||
} \
|
||||
strcat(str, " ]"); \
|
||||
}
|
||||
|
||||
#define PARSE_JSON_STR_TO_INT_VALUE(key, json_str, data) do{ \
|
||||
unsigned int tmpVal; \
|
||||
char *tmp_str = strstr(json_str, #key); \
|
||||
tmp_str = strstr(tmp_str, ":"); \
|
||||
sscanf(tmp_str + 1, "%u", &tmpVal); \
|
||||
data->key = tmpVal; \
|
||||
} while(0);
|
||||
|
||||
#define PARSE_JSON_STR_TO_INT_ARRAY(key, json_str, data, size) do { \
|
||||
unsigned int tmpVal; \
|
||||
char *tmp_str = json_str; \
|
||||
char *keyPos = strstr(tmp_str, #key); \
|
||||
char *endPos = strstr(keyPos, "]"); \
|
||||
if(keyPos && keyPos < endPos) { \
|
||||
tmp_str = strstr(keyPos, "["); \
|
||||
valPos = tmp_str + 1; \
|
||||
for (int i = 0; i < size; i++) { \
|
||||
sscanf(valPos, "%u", &tmpVal); \
|
||||
data->key[i] = tmpVal; \
|
||||
if(strstr(valPos, ",") && strstr(valPos, ",") < endPos) { \
|
||||
valPos = strstr(valPos, ",") + 1; \
|
||||
} else { \
|
||||
break; \
|
||||
} \
|
||||
} \
|
||||
} else { \
|
||||
printf("not found keyword %s \n", #key); \
|
||||
} \
|
||||
} while(0);
|
||||
|
||||
|
||||
void JSON_CHECK_RANGE(char *name, int *value, int min, int max);
|
||||
void JSON_CHECK_RANGE_OF_32(char *name, long long *value, long long min, long long max);
|
||||
void JSON_CHECK_RANGE_OF_U64(char *name, unsigned long long *value, unsigned long long min, unsigned long long max);
|
||||
void JSON_CHECK_RANGE_OF_DOUBLE(char *name, double *value, double min, double max);
|
||||
void JSON_PRINT_ERR_NOT_EXIST(char *name);
|
||||
void JSON_PRINT_ERR_DATA_TYPE(char *name);
|
||||
void CVI_BOOL_JSON(int r_w_flag, JSON *j, char *key, CVI_BOOL *value);
|
||||
void CVI_U8_JSON(int r_w_flag, JSON *j, char *key, CVI_U8 *value);
|
||||
void CVI_S8_JSON(int r_w_flag, JSON *j, char *key, CVI_S8 *value);
|
||||
void CVI_U16_JSON(int r_w_flag, JSON *j, char *key, CVI_U16 *value);
|
||||
void CVI_S16_JSON(int r_w_flag, JSON *j, char *key, CVI_S16 *value);
|
||||
void CVI_U32_JSON(int r_w_flag, JSON *j, char *key, CVI_U32 *value);
|
||||
void CVI_S32_JSON(int r_w_flag, JSON *j, char *key, CVI_S32 *value);
|
||||
void CVI_U64_JSON(int r_w_flag, JSON *j, char *key, CVI_U64 *value);
|
||||
void CVI_FLOAT_JSON(int r_w_flag, JSON *j, char *key, CVI_FLOAT *value);
|
||||
|
||||
JSON *JSON_GetNewObject(void);
|
||||
JSON *JSON_TokenerParse(const char *buffer);
|
||||
CVI_S32 JSON_GetJsonStrLen(JSON *json_object);
|
||||
CVI_S32 JSON_ObjectPut(JSON *json_object);
|
||||
const char *JSON_GetJsonStrContent(JSON *json_object);
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* End of #ifdef __cplusplus */
|
||||
|
||||
#endif // _CVI_JSON_STRUCT_COMM_H
|
||||
52
middleware/v2/modules/isp/include/sg200x/isp_bin.h
Normal file
52
middleware/v2/modules/isp/include/sg200x/isp_bin.h
Normal file
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
* Copyright (C) Cvitek Co., Ltd. 2019-2021. All rights reserved.
|
||||
*
|
||||
* File Name: isp_bin.h
|
||||
* Description:
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _ISP_BIN_H
|
||||
#define _ISP_BIN_H
|
||||
|
||||
#include <linux/cvi_common.h>
|
||||
#include "cvi_bin.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#endif /* End of #ifdef __cplusplus */
|
||||
|
||||
CVI_S32 isp_json_getParamFromJsonbuffer(const char *buffer, enum CVI_BIN_SECTION_ID id);
|
||||
CVI_S32 isp_json_setParamToJsonbuffer(CVI_S8 **buffer, enum CVI_BIN_SECTION_ID id, CVI_S32 *len);
|
||||
CVI_S32 header_bin_getBinSize(CVI_U32 *binSize);
|
||||
CVI_S32 header_bin_getBinParam(CVI_U8 *addr, CVI_U32 binSize);
|
||||
CVI_S32 header_bin_GetHeaderDescInfo(CVI_CHAR *pOutDesc, enum CVI_BIN_CREATMODE inCreatMode);
|
||||
|
||||
CVI_S32 isp_bin_getBinSize_p0(CVI_U32 *binSize);
|
||||
CVI_S32 isp_bin_getBinSize_p1(CVI_U32 *binSize);
|
||||
CVI_S32 isp_bin_getBinSize_p2(CVI_U32 *binSize);
|
||||
CVI_S32 isp_bin_getBinSize_p3(CVI_U32 *binSize);
|
||||
CVI_S32 isp_bin_getBinParam_p0(CVI_U8 *addr, CVI_U32 binSize);
|
||||
CVI_S32 isp_bin_getBinParam_p1(CVI_U8 *addr, CVI_U32 binSize);
|
||||
CVI_S32 isp_bin_getBinParam_p2(CVI_U8 *addr, CVI_U32 binSize);
|
||||
CVI_S32 isp_bin_getBinParam_p3(CVI_U8 *addr, CVI_U32 binSize);
|
||||
CVI_S32 header_bin_setBinParam(FILE *fp);
|
||||
CVI_S32 isp_bin_setBinParam_p0(FILE *fp);
|
||||
CVI_S32 isp_bin_setBinParam_p1(FILE *fp);
|
||||
CVI_S32 isp_bin_setBinParam_p2(FILE *fp);
|
||||
CVI_S32 isp_bin_setBinParam_p3(FILE *fp);
|
||||
CVI_S32 header_bin_setBinParambuf(CVI_U8 *buffer);
|
||||
CVI_S32 isp_bin_setBinParambuf_p0(CVI_U8 *buffer);
|
||||
CVI_S32 isp_bin_setBinParambuf_p1(CVI_U8 *buffer);
|
||||
CVI_S32 isp_bin_setBinParambuf_p2(CVI_U8 *buffer);
|
||||
CVI_S32 isp_bin_setBinParambuf_p3(CVI_U8 *buffer);
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* End of #ifdef __cplusplus */
|
||||
|
||||
#endif // _ISP_BIN_H
|
||||
Reference in New Issue
Block a user