#ifndef _MOTION_DETECT_H #define _MOTION_DETECT_H #ifndef WIN32 #include "arm_neon.h" #else #include "NEON_2_SSE.h" #endif //#include #include #include #include #include //#include "common.h" #define SIGN(a) (((a) > 0) ? (1) : (-(1))) //#define MIN(a,b) ((a) <= (b) ? (a):(b)) //#define MAX(a,b) ((a) >= (b) ? (a):(b)) #define CLIP(a, min_v, max_v) (((a) < (min_v)) ? (min_v) : (((a) > (max_v)) ? (max_v) : (a))) #define ABS(a) (((a) > 0) ? (a) : (-(a))) //#define ROUND_F(x) (int32_t)(((float)x)+(((x) > 0) ? 0.5 : (-0.5))) #define ROUND_INT(x, shf_bit) (int)((((x) > 0) ? 1 : -1) * ((ABS(x) + (1<<((shf_bit)-1)))>>(shf_bit))) #define ROUND_UINT16(x, shf_bit) ((uint16_t) (MIN(x, (1 << (uint32_t)16) - 1) + (1<<(shf_bit - 1))) >> (shf_bit)) #define IMG_DOWN_SCALE_X_BIT 2 #define IMG_DOWN_SCALE_Y_BIT 3 #define IMG_DOWN_SCALE_X (1 << IMG_DOWN_SCALE_X_BIT) #define IMG_DOWN_SCALE_Y (1 << IMG_DOWN_SCALE_Y_BIT) #define LDIFF_DOWN_SCALE_X_BIT 3 #define LDIFF_DOWN_SCALE_Y_BIT 3 #define LDIFF_DOWN_SCALE_X (1 << LDIFF_DOWN_SCALE_X_BIT) #define LDIFF_DOWN_SCALE_Y (1 << LDIFF_DOWN_SCALE_Y_BIT) #define GAUS_FILTER_RADIUS_X 1 #define GAUS_FILTER_RADIUS_Y 1 #define SIGMA_FILTER_RADIUS_X 4 #define SIGMA_FILTER_RADIUS_Y 4 #define ALPHA_FIX_BITS 7 #define UV_RATIO_FIX_BITS 7 #define ALPHA_DIV_FIX_BITS (7 + 7) #define RATIO_BITS_NUM 7 #define RATIO_BITS_R_NUM 5 #define MT_VERSION 1 #define ENABLE_NEON void motion_detect( uint8_t *pCurIn, uint8_t *pPreIn, int16_t *pTmpBuf, uint8_t *pAlpha, uint8_t *pPreAlpha, uint8_t *gain_table_u8, int imgHeight, int imgWidth, int proHeight, int proWidth, int gainStride, float sigmaHScale, float sigmaLScale, float uv_ratio, float light_clip, int static_ratio_r_bit); #endif