114 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			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
 | 
						|
 |