nt9856x/code/hdal/vendor/isp/include/nnsc_lib.h
2023-03-28 15:07:53 +08:00

114 lines
3.9 KiB
C
Executable File

#ifndef _NNSC_LIB_
#define _NNSC_LIB_
#include "hd_type.h"
//=============================================================================
// define
//=============================================================================
#define NNSC_PARAM_SENSITIVE_BASE 5
#define NNSC_PARAM_SENSITIVE_MAX 10
#define NNSC_PARAM_STRENGTH_BASE 100
#define NNSC_PARAM_STRENGTH_MAX 200
#define NNSC_CA_MAX_WINNUM (32 * 32)
#define NNSC_CA_MAX_NUM ((1 << 12) -1)
#define NNSC_DBG_TYPE_NULL 0x00000000
#define NNSC_DBG_TYPE_MAIN 0x00000001
#define NNSC_DBG_TYPE_SCD 0x00000002
#define NNSC_DBG_TYPE_AE 0x00000010
#define NNSC_DBG_TYPE_AWB 0x00000020
#define NNSC_DBG_TYPE_IQ 0x00000040
#define NNSC_DBG_TYPE_PARAM 0x00000100
#define NNSC_DBG_TYPE_ALL 0xFFFFFFFF
//=============================================================================
// struct & enum definition
//=============================================================================
typedef enum _NNSC_SCORE_ITEM {
NNSC_SCORE_BACKLIGHT_HUMAN,
NNSC_SCORE_BACKLIGHT,
NNSC_SCORE_FOGGY,
NNSC_SCORE_GRASS_A,
NNSC_SCORE_GRASS_B,
NNSC_SCORE_HAND_COLOR,
NNSC_SCORE_NORMAL,
NNSC_SCORE_SNOWFIELD,
NNSC_SCORE_MAX_NUM,
ENUM_DUMMY4WORD(NNSC_SCORE_ITEM)
} NNSC_SCORE_ITEM;
typedef enum _NNSC_TYPE {
NNSC_TYPE_BACKLIGHT,
NNSC_TYPE_FOGGY,
NNSC_TYPE_GRASS,
NNSC_TYPE_SKIN_COLOR,
NNSC_TYPE_SNOWFIELD,
NNSC_TYPE_MAX_NUM,
ENUM_DUMMY4WORD(NNSC_TYPE)
} NNSC_TYPE;
typedef struct _NNSC_TUNE_PARAM {
UINT32 sensitive; ///< range : 0~10, 0 donot detect, 5 normal, 10 sensitive
UINT32 adj_strength; ///< range : 0~200, 0 = max sun tanning, 100 = no adjust, 200 = max whitening for SKIN_COLOR
///< 0 = no adjust, 100 = 1x adjust, 200 = max adjust for others
} NNSC_TUNE_PARAM;
typedef struct _NNSC_SCORE {
UINT32 score[NNSC_SCORE_MAX_NUM];
} NNSC_SCORE;
typedef struct _NNSC_PARAM {
NNSC_TUNE_PARAM param[NNSC_TYPE_MAX_NUM];
} NNSC_PARAM;
typedef struct _NNSC_ADJ {
UINT32 exp_ratio; // range : 0~100, AE implement
BOOL green_remove; // range : 0~1, AWB implement
BOOL skin_remove; // range : 0~1, AWB implement
UINT32 dark_enh_ratio; // range : 0~100, IQ implement
UINT32 contrast_enh_ratio; // range : 0~100, IQ implement
UINT32 green_enh_ratio; // range : 0~100, IQ implement
UINT32 skin_enh_ratio; // range : 0~100, IQ implement
} NNSC_ADJ;
typedef struct _NNSC_TEST {
BOOL enable;
NNSC_TYPE mode_type;
} NNSC_TEST;
typedef struct _SCD_CONTROL {
BOOL enable;
BOOL auto_enable;
BOOL manual_stable;
} SCD_CONTROL;
typedef struct _SCD_PARAM {
UINT32 stable_sensitive; // range : 0~10, tolerance count number threshold for stable status
UINT32 change_sensitive; // range : 0~10, tolerance count number threshold for changing status
UINT32 g_diff_num_th; // range : 0~1024, block number threshold of cnhaging block
} SCD_PARAM;
typedef struct _SCD_STATISTICS {
UINT16 ca_r[NNSC_CA_MAX_WINNUM];
UINT16 ca_g[NNSC_CA_MAX_WINNUM];
UINT16 ca_b[NNSC_CA_MAX_WINNUM];
} SCD_STATISTICS;
//=============================================================================
// extern functions
//=============================================================================
extern HD_RESULT nnsc_adj_cal(NNSC_ADJ *adj_ratio);
extern UINT32 nnsc_get_version(void);
extern HD_RESULT nnsc_set_score(NNSC_SCORE *score);
extern HD_RESULT nnsc_set_param(NNSC_PARAM *param);
extern HD_RESULT nnsc_set_test_mode(NNSC_TEST *test);
extern HD_RESULT nnsc_set_dbg_out(UINT32 type);
extern HD_RESULT nnsc_set_scd_control(SCD_CONTROL *control);
extern HD_RESULT nnsc_set_scd_param(SCD_PARAM *param);
extern HD_RESULT nnsc_set_scd_statistic(SCD_STATISTICS *statis);
#endif