184 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			184 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| #ifndef _AF_ALG_H_
 | |
| #define _AF_ALG_H_
 | |
| 
 | |
| #if defined(__KERNEL__) || defined(__FREERTOS)
 | |
| #include "kwrap/type.h"
 | |
| #endif
 | |
| 
 | |
| //=============================================================================
 | |
| // struct & definition
 | |
| //=============================================================================
 | |
| #define AFALG_MIN(A, B)       (((A) <= (B)) ? (A) : (B))
 | |
| #define AFALG_MAX(A, B)       (((A) >= (B)) ? (A) : (B))
 | |
| #define AFALG_ABS(X)          (((X) < 0) ? -(X) : (X))
 | |
| #define AFALG_DIFF(A, B)      (((A) >= (B)) ? ((A)-(B)) : ((B)-(A)))
 | |
| #define AFALG_CLAMP(X, L, H)  (((X) >= (H)) ? (H) : (((X) <= (L)) ? (L) : (X)))
 | |
| 
 | |
| #define AF_WIN_HW_X        8
 | |
| #define AF_WIN_HW_Y        8
 | |
| 
 | |
| #define AF_WIN_ALG_X       8
 | |
| #define AF_WIN_ALG_Y       8
 | |
| 
 | |
| #define AF_2ND_ID_PARAM    1    // AF_ID_MAX_NUM == 2
 | |
| 
 | |
| 
 | |
| /**
 | |
| 	AF id
 | |
| */
 | |
| typedef enum _AF_ID {
 | |
| 	AF_ID_1 = 0,       ///< af id 1
 | |
| 	AF_ID_2,           ///< af id 2
 | |
| 	AF_ID_MAX_NUM,
 | |
| 	ENUM_DUMMY4WORD(AF_ID)
 | |
| } AF_ID;
 | |
| 
 | |
| /**
 | |
| 	AF shot mode
 | |
| */
 | |
| typedef enum _AFALG_MODE {
 | |
| 	AFALG_MODE_SINGLE = 0,
 | |
| 	AFALG_MODE_CONTINUOUS,
 | |
| 	AFALG_MODE_UNKNOWN,
 | |
| 	ENUM_DUMMY4WORD(AFALG_MODE)
 | |
| } AFALG_MODE;
 | |
| 
 | |
| /**
 | |
| 	AF execute command
 | |
| */
 | |
| typedef enum _AFALG_CMD {
 | |
| 	AFALG_CMD_STOP = 0,    ///< AF process cmd: stop - initial state
 | |
| 	AFALG_CMD_RUN,         ///< AF process cmd: run  - AF is running
 | |
| 	AFALG_CMD_END,         ///< AF process cmd: end  - AF is finished
 | |
| 	AFALG_CMD_QUIT,        ///< AF process cmd: quit by UI
 | |
| 	ENUM_DUMMY4WORD(AFALG_CMD)
 | |
| } AFALG_CMD;
 | |
| 
 | |
| typedef enum _AFALG_STATUS_RESULT {
 | |
| 	AFALG_STS_INIT         = 0x00,    ///< AF result: initialize
 | |
| 	AFALG_STS_SUCCESS      = 0x01,    ///< AF result: success
 | |
| 	AFALG_STS_MULTI_TARGET = 0x02,    ///< AF result: multi target
 | |
| 	AFALG_STS_NO_TARGET    = 0x04,    ///< AF result: no target
 | |
| 	AFALG_STS_LOW_VA       = 0x08,    ///< AF result: low VA
 | |
| 	AFALG_STS_FLAT_CURVE   = 0x10,    ///< AF result: too flat
 | |
| 	AFALG_STS_TIME_OUT     = 0x20,    ///< AF result: time out
 | |
| 	AFALG_STS_NO_MOTOR     = 0x40,    ///< AF result: no motor driver exist
 | |
| 	AFALG_STS_FAILURE      = 0x80,    ///< AF result: failure
 | |
| 	ENUM_DUMMY4WORD(AFALG_STATUS_RESULT)
 | |
| } AFALG_STATUS_RESULT;
 | |
| 
 | |
| typedef enum _AF_ALG_METHOD {
 | |
| 	AF_ALG_HILL_CLIMB = 0,
 | |
| 	AF_ALG_2ND_POLY_FIT,
 | |
| 	AF_ALG_HYBRID,
 | |
| 	AF_ALG_FULL_SEARCH,
 | |
| 	AF_ALG_BACK_FORWARD,
 | |
| 	ENUM_DUMMY4WORD(AF_ALG_METHOD)
 | |
| } AF_ALG_METHOD;
 | |
| 
 | |
| typedef enum _AF_SHOT_MODE {
 | |
| 	AF_MODE_SINGLE = 0,
 | |
| 	AF_MODE_CONTINUOUS,
 | |
| 	ENUM_DUMMY4WORD(AF_SHOT_MODE)
 | |
| } AF_SHOT_MODE;
 | |
| 
 | |
| typedef enum _AF_SEARCH_DIR {
 | |
| 	AF_DIR_2TELE = 0,
 | |
| 	AF_DIR_2WIDE,
 | |
| 	ENUM_DUMMY4WORD(AF_SEARCH_DIR)
 | |
| } AF_SEARCH_DIR;
 | |
| 
 | |
| /**
 | |
| 	AF threshold
 | |
| */
 | |
| typedef struct _AF_THRES {
 | |
| 	INT32 thres_rough;
 | |
| 	INT32 thres_fine;
 | |
| 	INT32 thres_final;
 | |
| 	INT32 thres_restart;
 | |
| } AF_THRES;
 | |
| 
 | |
| /**
 | |
| 	AF step size
 | |
| */
 | |
| typedef struct _AF_STEP_SIZE {
 | |
| 	INT32 step_rough;
 | |
| 	INT32 step_fine;
 | |
| 	INT32 step_final;
 | |
| } AF_STEP_SIZE;
 | |
| 
 | |
| /**
 | |
| 	AF window weighting
 | |
| */
 | |
| typedef struct _AF_WIN_WEIGHT {
 | |
| 	UINT8 wei[AF_WIN_ALG_Y][AF_WIN_ALG_X];
 | |
| } AF_WIN_WEIGHT;
 | |
| 
 | |
| /**
 | |
| 	AF VA statistics
 | |
| */
 | |
| typedef struct _AF_VA_STA {
 | |
| 	UINT32 acc[AF_WIN_HW_Y][AF_WIN_HW_X];
 | |
| } AF_VA_STA;
 | |
| 
 | |
| typedef enum _AF_DBG_MSG {
 | |
| 	AF_DBG_NONE         = 0x00000000,
 | |
| 	AF_DBG_INFO         = 0x00000001,
 | |
| 	AF_DBG_VA           = 0x00000002,
 | |
| 	AF_DBG_PERF_MEASURE = 0x00000004,
 | |
| 	AF_DBG_DUMP_PROC    = 0x00010000,
 | |
| 	AF_DBG_DUMP_IOCTL   = 0x00020000,
 | |
| 	ENUM_DUMMY4WORD(AF_DBG_MSG)
 | |
| } AF_DBG_MSG;
 | |
| 
 | |
| /**
 | |
| 	AF parameter
 | |
| */
 | |
| typedef struct _AF_PARAM {
 | |
| 	BOOL          *func_en;
 | |
| 	AF_ALG_METHOD *alg_method;
 | |
| 	AF_SHOT_MODE  *shot_mode;
 | |
| 	AF_SEARCH_DIR *search_dir;
 | |
| 	UINT32        *skip_frame;
 | |
| 	AF_THRES      *thres;
 | |
| 	AF_STEP_SIZE  *step_size;
 | |
| 	UINT32        *max_count;
 | |
| 	AF_WIN_WEIGHT *win_weight;
 | |
| 	BOOL          *retrigger;
 | |
| 	AF_DBG_MSG    *dbg_msg;
 | |
| } AF_PARAM;
 | |
| 
 | |
| typedef struct _AF_CTRL_OBJ {
 | |
| 	INT32 focus_pos;
 | |
| 	INT32 zoom_pos;
 | |
| 	UINT32 aperture_pos;
 | |
| 	UINT32 shutter_ste;
 | |
| 	BOOL ircut_ste;
 | |
| } AF_CTRL_OBJ;
 | |
| 
 | |
| typedef enum _AF_VA_OPT {
 | |
| 	AF_VA_G1G2_SUM = 0,
 | |
| 	AF_VA_G1_ONLY,
 | |
| 	AF_VA_G2_ONLY,
 | |
| 	AF_VA_TYPE_MAX,
 | |
| 	ENUM_DUMMY4WORD(AF_VA_OPT)
 | |
| } AF_VA_OPT;
 | |
| 
 | |
| typedef enum _LENS_STATE {
 | |
| 	LENS_STATE_IDLE            = 0x00,    // lens is in IDLE state
 | |
| 	LENS_STATE_ZOOM_INIT       = 0x01,    // lens is in ZOOM INIT state
 | |
| 	LENS_STATE_FOCUS_INIT      = 0x02,    // lens is in FOCUS INIT state
 | |
| 	LENS_STATE_ZOOM_MOVING     = 0x04,    // lens is in ZOOM moving state
 | |
| 	LENS_STATE_FOCUS_MOVING    = 0x08,    // lens is in FOCUS moving state
 | |
| 	LENS_STATE_APERTURE_MOVING = 0x10,    // lens is in APERTURE moving state
 | |
| 	LENS_STATE_SHUTTER_MOVING  = 0x20,    // lens is in SHUTTER moving state
 | |
| 	LENS_STATE_IRCUT_MOVING    = 0x40,    // lens is in IRCUT moving state
 | |
| 	LENS_STATE_RESET           = 0x80,    // lens is in RESET state
 | |
| 	LENS_STATE_POWER_OFF       = 0x100,   // lens is in POWER_OFF state
 | |
| 	LENS_STATE_ALL             = 0x1FF,
 | |
| 	ENUM_DUMMY4WORD(LENS_STATE)
 | |
| } LENS_STATE;
 | |
| 
 | |
| #endif
 | |
| 
 | 
