1138 lines
33 KiB
C
1138 lines
33 KiB
C
// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
|
||
/*
|
||
* Copyright (C) 2025 Amlogic, Inc. All rights reserved
|
||
*/
|
||
#ifndef __AML_CVE_H__
|
||
#define __AML_CVE_H__
|
||
|
||
#include "aml_comm_cve.h"
|
||
|
||
#define CVE_LUMA_RECT_MAX 64
|
||
#define CVE_HIST_NUM 256
|
||
#define CVE_MAP_NUM 256
|
||
#define CVE_MAX_REGION_NUM 384
|
||
#define CVE_ST_MAX_CORNER_NUM 500
|
||
#define CVE_FILTER_CLARITY_MAX 64
|
||
|
||
/* Crop */
|
||
typedef struct {
|
||
bool enCrop; /*Crop enable*/
|
||
U16 u16X; /*Crop xstart*/
|
||
U16 u16Y; /*Crop ystart*/
|
||
U16 u16Width; /*Crop xsize*/
|
||
U16 u16Height; /*Crop ysize*/
|
||
} CVE_CROP_T;
|
||
|
||
/* mode of the DMA */
|
||
typedef enum {
|
||
CVE_DMA_MODE_DIRECT_COPY = 0x0, /* direct copy */
|
||
CVE_DMA_MODE_INTERVAL_COPY = 0x1, /* interval copy */
|
||
CVE_DMA_MODE_SET_3BYTE = 0x2, /* 3-byte filling mode */
|
||
CVE_DMA_MODE_SET_8BYTE = 0x3, /* 8-byte filling mode */
|
||
CVE_DMA_MODE_NOT = 0x4, /* u8data is reversed */
|
||
CVE_DMA_MODE_DIRECT_COPY_TO_LINE = 0x6, /* direct copy to line mode */
|
||
CVE_DMA_MODE_COL2IM = 0x7, /* channel to image copy mode */
|
||
CVE_DMA_MODE_BUTT
|
||
} CVE_DMA_MODE_E;
|
||
|
||
/* control parameter of the DMA */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_DMA_MODE_E enMode;
|
||
U64 u64Val; /* memset mode parameter */
|
||
U8 u8HorSegSize; /* interval-copy,u8HorSegSize divides bytes of each
|
||
row,The limit values are 2,3,4,8,16 */
|
||
U8 u8ElemSize; /* interval-copy,copy to the valid bytes before each
|
||
segment in the valid row,0<u8ElemSize<u8HorSegSize */
|
||
U8 u8VerSegRows; /* interval-copy,make a row copy from each
|
||
u8VerSegRows */
|
||
U8 u8DmaNumChannel; /*channel to image, num of channel*/
|
||
} CVE_DMA_CTRL_T;
|
||
|
||
/* mode of the LumaStat */
|
||
typedef enum {
|
||
CVE_LUMA_STAT_MODE_STEP_0 = 0x0,
|
||
CVE_LUMA_STAT_MODE_STEP_1 = 0x1,
|
||
CVE_LUMA_STAT_MODE_STEP_2 = 0x2,
|
||
CVE_LUMA_STAT_MODE_STEP_3 = 0x3,
|
||
|
||
CVE_LUMA_STAT_MODE_BUTT
|
||
} CVE_LUMA_STAT_MODE_E;
|
||
|
||
/* control parameter of the LumaStat */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_LUMA_STAT_MODE_E enMode;
|
||
U8 u8MaxLumaRect; /* 0 <= u8MaxLumaRect <= 63 */
|
||
} CVE_LUMA_STAT_ARRAY_CTRL_T;
|
||
|
||
typedef enum {
|
||
CVE_FILTER_NORMAL = 0,
|
||
CVE_FILTER_CLARITY = 1,
|
||
CVE_FILTER_BUTT
|
||
} CVE_FILTER_MODE_E;
|
||
|
||
typedef enum {
|
||
CVE_FILTER_CLARITY_DETECT_ABS = 0,
|
||
CVE_FILTER_CLARITY_DETECT_POW2 = 1,
|
||
CVE_FILTER_CLARITY_MODE_BUTT
|
||
} CVE_FILTER_CLARITY_MODE_E;
|
||
/*
|
||
* These parameters need to be set when using the filter operator
|
||
* Change the template filter from 3x3 to 5x5
|
||
*/
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
S8 as8Mask[25]; /* Template parameter filter factor */
|
||
U8 u8Norm; /* standardized parameter,shift right >> */
|
||
CVE_FILTER_MODE_E filter_mode; /* 0:filter normal 1:filter clarity*/
|
||
CVE_FILTER_CLARITY_MODE_E filter_clarity_mode; /* 0:clarity detect abs 1: clarity detect pow2*/
|
||
U8 filter_clarity_idx; /* clarity idx < clarity num*/
|
||
U8 filter_clarity_num; /* clarity num = dst2 width*/
|
||
} CVE_FILTER_CTRL_T;
|
||
|
||
/* mode of the CSC */
|
||
typedef enum {
|
||
CVE_CSC_MODE_PIC_BT601_YUV2RGB = 0x0,
|
||
CVE_CSC_MODE_PIC_BT601_YUV2BGR = 0x1,
|
||
CVE_CSC_MODE_PIC_BT601_YUV2HSV = 0x2,
|
||
CVE_CSC_MODE_PIC_BT601_YUV2LAB = 0x3,
|
||
CVE_CSC_MODE_PIC_BT601_RGB2YUV = 0x4,
|
||
CVE_CSC_MODE_PIC_BT601_BGR2YUV = 0x5,
|
||
CVE_CSC_MODE_PIC_BT601_RGB2HSV = 0x6,
|
||
CVE_CSC_MODE_PIC_BT601_RGB2LAB = 0x7,
|
||
CVE_CSC_MODE_PIC_BT601_RGB2BGR = 0x8,
|
||
CVE_CSC_MODE_PIC_BT601_BGR2RGB = 0x9,
|
||
CVE_CSC_MODE_PIC_BT601_YVU2RGB = 0xa,
|
||
CVE_CSC_MODE_PIC_BT601_YVU2BGR = 0xb,
|
||
CVE_CSC_MODE_PIC_BT601_YVU2HSV = 0xc,
|
||
CVE_CSC_MODE_PIC_BT601_YVU2LAB = 0xd,
|
||
CVE_CSC_MODE_PIC_BT601_RGB2YVU = 0xe,
|
||
CVE_CSC_MODE_PIC_BT601_BGR2YVU = 0xf,
|
||
CVE_CSC_MODE_PIC_BT601_BGR2HSV = 0x10,
|
||
CVE_CSC_MODE_PIC_BT601_BGR2LAB = 0x11,
|
||
CVE_CSC_MODE_BUTT
|
||
} CVE_CSC_MODE_E;
|
||
|
||
/*
|
||
* These parameters need to be set when using the CSC operator
|
||
* The CSC output format is removed and replaced with output image type
|
||
*/
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_CSC_MODE_E enMode; /* CSC mode */
|
||
} CVE_CSC_CTRL_T;
|
||
|
||
/*
|
||
* These parameters need to be set when using the filter+CSC operator
|
||
* Control message about the filter and CSC needs to be set
|
||
* Change the template filter from 3x3 to 5x5
|
||
*/
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_CSC_MODE_E enMode; /* CSC mode */
|
||
S8 as8Mask[25]; /* Template parameter filter factor */
|
||
U8 u8Norm; /* standardized parameter,shift right >> */
|
||
} CVE_FILTER_AND_CSC_CTRL_T;
|
||
|
||
/* output ctrl of the SOBEL */
|
||
typedef enum {
|
||
CVE_SOBEL_OUT_CTRL_BOTH = 0x0, /* horizontal and vertical output */
|
||
CVE_SOBEL_OUT_CTRL_HOR = 0x1, /* horizontal output */
|
||
CVE_SOBEL_OUT_CTRL_VER = 0x2, /* vertical output */
|
||
CVE_SOBEL_OUT_CTRL_BUTT
|
||
} CVE_SOBEL_OUT_CTRL_E;
|
||
|
||
/* control parameter of the SOBEL */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_SOBEL_OUT_CTRL_E enOutCtrl; /* The output format */
|
||
S8 as8Mask[25]; /* Template parameter SOBEL factor */
|
||
} CVE_SOBEL_CTRL_T;
|
||
|
||
/* magnitude and angle output type */
|
||
typedef enum {
|
||
CVE_MAG_AND_ANG_OUT_CTRL_MAG = 0x0, /* magnitude output */
|
||
CVE_MAG_AND_ANG_OUT_CTRL_MAG_AND_ANG = 0x1, /* output both magnitude and angle */
|
||
CVE_MAG_AND_ANG_OUT_CTRL_HOG = 0x2, /* output both magnitude and angle in HOG mode */
|
||
CVE_MAG_AND_ANG_OUT_CTRL_BUTT
|
||
} CVE_MAG_AND_ANG_OUT_CTRL_E;
|
||
|
||
/* control parameter of the magnitude and angle */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_MAG_AND_ANG_OUT_CTRL_E enOutCtrl;
|
||
U16 u16Thr;
|
||
S8 as8Mask[25]; /* Template parameter magnitude and angle factor */
|
||
} CVE_MAG_AND_ANG_CTRL_T;
|
||
|
||
/* Control parameter of the Dilate */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
U8 au8Mask[25]; /* template parameter must be 0 or 255 */
|
||
} CVE_DILATE_CTRL_T;
|
||
|
||
/* Control parameter of the Erode */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
U8 au8Mask[25]; /* template parameter must be 0 or 255 */
|
||
} CVE_ERODE_CTRL_T;
|
||
|
||
typedef enum {
|
||
CVE_BERNSNS_3x3 = 0,
|
||
CVE_BERNSNS_5x5 = 1,
|
||
CVE_BERNSNS_BUTT,
|
||
} CVE_BERNSNS_WIN_SIZE_E;
|
||
|
||
/* Control parameter of the Bernsen */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
U8 au8Mask[25]; /* template parameter must be 0 or 255 */
|
||
CVE_BERNSNS_WIN_SIZE_E winSize; /* 3x3 or 5x5 */
|
||
U8 judgethresh; /* the threshold of uniform judge */
|
||
U8 thresh;
|
||
U16 alpha; /* coefficient alpha */
|
||
U16 beta; /* coefficient beta */
|
||
} CVE_BERNSEN_CTRL_T;
|
||
|
||
/* Thresh mode type */
|
||
typedef enum {
|
||
CVE_THRESH_MODE_BINARY = 0x0,
|
||
/* outVal = minVal,srcVal <= lowThr;
|
||
outVal = maxVal,srcVal > lowThr */
|
||
CVE_THRESH_MODE_TRUNC = 0x1,
|
||
/* outVal = srcVal,srcVal <= lowThr;
|
||
outVal = maxVal,srcVal > lowThr */
|
||
CVE_THRESH_MODE_TO_MINVAL = 0x2,
|
||
/* outVal = minVal,srcVal <= lowThr;
|
||
outVal = srcVal,srcVal > lowThr */
|
||
CVE_THRESH_MODE_MIN_MID_MAX = 0x3,
|
||
/* outVal = minVal,srcVal <= lowThr;
|
||
outVal = midVal,lowThr < srcVal <= highThr;
|
||
outVal = maxVal,srcVal > highThr */
|
||
CVE_THRESH_MODE_ORI_MID_MAX = 0x4,
|
||
/* outVal = srcVal,srcVal <= lowThr;
|
||
outVal = midVal,lowThr < srcVal <= highThr;
|
||
outVal = maxVal,srcVal > highThr */
|
||
CVE_THRESH_MODE_MIN_MID_ORI = 0x5,
|
||
/* outVal = minVal,srcVal <= lowThr;
|
||
outVal = midVal,lowThr < srcVal <= highThr;
|
||
outVal = srcVal,srcVal > highThr */
|
||
CVE_THRESH_MODE_MIN_ORI_MAX = 0x6,
|
||
/* outVal = minVal,srcVal <= lowThr;
|
||
outVal = srcVal,lowThr < srcVal <= highThr;
|
||
outVal = maxVal,srcVal > highThr */
|
||
CVE_THRESH_MODE_ORI_MID_ORI = 0x7,
|
||
/* outVal = srcVal,srcVal <= lowThr;
|
||
outVal = midVal,lowThr < srcVal <= highThr;
|
||
outVal = srcVal,srcVal > highThr */
|
||
|
||
CVE_THRESH_MODE_BUTT
|
||
} CVE_THRESH_MODE_E;
|
||
|
||
/* Control parameters of the Thresh */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_THRESH_MODE_E enMode;
|
||
U8 u8LowThr; /* Threshold value,usr-defined,0 <= LowThr <= 255 */
|
||
U8 u8HighThr; /* Threshold value,usr-defined;
|
||
if (enMode < CVE_THRESH_MODE_MIN_MID_MAX) U8HighThr is not
|
||
used; else 0 <= u8LowThr <= u8HighThr <= 255 */
|
||
U8 u8MinVal; /* tri level threshold minimum */
|
||
U8 u8MidVal; /* tri level threshold middle;
|
||
if (enMode < 2) U8MidVal is not used */
|
||
U8 u8MaxVal; /* tri level threshold maximum */
|
||
} CVE_THRESH_CTRL_T;
|
||
|
||
/* Integ output results type */
|
||
typedef enum {
|
||
CVE_INTEG_OUT_CTRL_COMBINE = 0x0,
|
||
CVE_INTEG_OUT_CTRL_TUM = 0x1,
|
||
CVE_INTEG_OUT_CTRL_TQSUM = 0x2,
|
||
CVE_INTEG_OUT_CTRL_BUTT
|
||
} CVE_INTEG_OUT_CTRL_E;
|
||
|
||
/* Control parameter of the integ */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_INTEG_OUT_CTRL_E enOutCtrl;
|
||
} CVE_INTEG_CTRL_T;
|
||
|
||
/* Control parameter of the hist */
|
||
typedef struct {
|
||
bool eqhist_curv_mode;
|
||
CVE_CROP_T stCrop;
|
||
} CVE_HIST_CTRL_T;
|
||
|
||
/* Thresh_s16 mode type */
|
||
typedef enum {
|
||
CVE_THRESH_S16_MODE_S16_TO_S8_MIN_MID_MAX = 0x0,
|
||
CVE_THRESH_S16_MODE_S16_TO_S8_MIN_ORI_MAX = 0x1,
|
||
CVE_THRESH_S16_MODE_S16_TO_U8_MIN_MID_MAX = 0x2,
|
||
CVE_THRESH_S16_MODE_S16_TO_U8_MIN_ORI_MAX = 0x3,
|
||
|
||
CVE_THRESH_S16_MODE_BUTT
|
||
} CVE_THRESH_S16_MODE_E;
|
||
|
||
/* Control parameters of the Thresh_s16 */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_THRESH_S16_MODE_E enMode;
|
||
S16 s16LowThr; /* threshold value ,usr-defined */
|
||
S16 s16HighThr; /* threshold value ,usr-defined */
|
||
CVE_8BIT_U un8MinVal; /* tri level threshold minimum */
|
||
CVE_8BIT_U un8MidVal; /* tri level threshold midimum */
|
||
CVE_8BIT_U un8MaxVal; /* tri level threshold maximum */
|
||
} CVE_THRESH_S16_CTRL_T;
|
||
|
||
/* Thresh_u16 mode type */
|
||
typedef enum {
|
||
CVE_THRESH_U16_MODE_U16_TO_U8_MIN_MID_MAX = 0x0,
|
||
CVE_THRESH_U16_MODE_U16_TO_U8_MIN_ORI_MAX = 0x1,
|
||
|
||
CVE_THRESH_U16_MODE_BUTT
|
||
} CVE_THRESH_U16_MODE_E;
|
||
|
||
/* Control parameters of the Thresh_u16 */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_THRESH_U16_MODE_E enMode;
|
||
U16 u16LowThr; /* threshold value ,usr-defined */
|
||
U16 u16HighThr; /* threshold value ,usr-defined */
|
||
U8 u8MinVal; /* tri level threshold minimum */
|
||
U8 u8MidVal; /* tri level threshold midimum */
|
||
U8 u8MaxVal; /* tri level threshold maximum */
|
||
} CVE_THRESH_U16_CTRL_T;
|
||
|
||
/* 16bit to 8bit mode */
|
||
typedef enum {
|
||
CVE_16BIT_TO_8BIT_MODE_S16_TO_S8 = 0x0,
|
||
CVE_16BIT_TO_8BIT_MODE_S16_TO_U8_ABS = 0x1,
|
||
CVE_16BIT_TO_8BIT_MODE_S16_TO_U8_BIAS = 0x2,
|
||
CVE_16BIT_TO_8BIT_MODE_U16_TO_U8 = 0x3,
|
||
|
||
CVE_16BIT_TO_8BIT_MODE_BUTT
|
||
} CVE_16BIT_TO_8BIT_MODE_E;
|
||
|
||
/* Control parameters of the 16bit to 8bit */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_16BIT_TO_8BIT_MODE_E enMode;
|
||
U16 u8LineCoefThr;
|
||
S8 s8Bias;
|
||
} CVE_16BIT_TO_8BIT_CTRL_T;
|
||
|
||
/* OrdstaFilter type */
|
||
typedef enum {
|
||
CVE_ORD_STAT_FILTER_MODE_MIN = 0x0,
|
||
CVE_ORD_STAT_FILTER_MODE_MEDIAN = 0x1,
|
||
CVE_ORD_STAT_FILTER_MODE_MAX = 0x2,
|
||
|
||
CVE_ORD_STAT_FILTER_MODE_BUTT
|
||
} CVE_ORD_STAT_FILTER_MODE_E;
|
||
|
||
/* Control parameters of the OrdstaFilter */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_ORD_STAT_FILTER_MODE_E enMode;
|
||
|
||
} CVE_ORD_STAT_FILTER_CTRL_T;
|
||
|
||
/* Map type */
|
||
typedef enum {
|
||
CVE_MAP_MODE_U8 = 0x0,
|
||
CVE_MAP_MODE_S16 = 0x1,
|
||
CVE_MAP_MODE_U16 = 0x2,
|
||
|
||
CVE_MAP_MODE_BUTT
|
||
} CVE_MAP_MODE_E;
|
||
|
||
/* Control parameter of the Map */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_MAP_MODE_E enMode;
|
||
} CVE_MAP_CTRL_T;
|
||
|
||
/* unsigned 8bit LUT memory of the Map */
|
||
typedef struct {
|
||
U8 au8Map[CVE_MAP_NUM];
|
||
} CVE_MAP_U8BIT_LUT_MEM_T;
|
||
|
||
/* unsigned 16bit LUT memory of the Map */
|
||
typedef struct {
|
||
U16 au16Map[CVE_MAP_NUM];
|
||
} CVE_MAP_U16BIT_LUT_MEM_T;
|
||
|
||
/* 16bit LUT memory of the Map */
|
||
typedef struct {
|
||
S16 as16Map[CVE_MAP_NUM];
|
||
} CVE_MAP_S16BIT_LUT_MEM_T;
|
||
|
||
/* Control member of the Equalizehist */
|
||
typedef struct {
|
||
U32 au32Hist[CVE_HIST_NUM];
|
||
U8 au8Map[CVE_MAP_NUM];
|
||
} CVE_EQUALIZE_HIST_CTRL_MEM_T;
|
||
|
||
/* Control parameter of the Equalizehist */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_MEM_INFO_T stMem;
|
||
} CVE_EQUALIZE_HIST_CTRL_T;
|
||
|
||
/* Sub output type */
|
||
typedef enum {
|
||
CVE_SUB_MODE_ABS = 0x0, /* Absolute value of the srcVal difference */
|
||
CVE_SUB_MODE_SHIFT = 0x1, /* Result right shift 1bit to reserve the signed bit
|
||
,get the output */
|
||
CVE_SUB_MODE_THRESH = 0x2,
|
||
CVE_SUB_MODE_BUTT
|
||
} CVE_SUB_MODE_E;
|
||
|
||
/* Control parameter of the SUB */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_SUB_MODE_E enMode;
|
||
U16 u16ThreshRatio; /* Threshold ratio of the difference */
|
||
} CVE_SUB_CTRL_T;
|
||
|
||
/* Control parameters of the Add */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
U0Q16 u0q16X;
|
||
U0Q16 u0q16Y;
|
||
} CVE_ADD_CTRL_T;
|
||
|
||
/* Control parameters of the Add and & 0x01*/
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
U0Q16 u0q16X;
|
||
U0Q16 u0q16Y;
|
||
} CVE_ADD_MAP_255_TO_1_CTRL_T;
|
||
|
||
/* Control parameters of the And */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
} CVE_AND_CTRL_T;
|
||
|
||
/* Control parameters of the Or */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
} CVE_OR_CTRL_T;
|
||
|
||
/* Control parameters of the Xor */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
} CVE_XOR_CTRL_T;
|
||
|
||
/* Control parameters of the Dot */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
} CVE_DOT_CTRL_T;
|
||
|
||
/* NCC dst memory */
|
||
typedef struct {
|
||
U64 u64Numerator;
|
||
U64 u64QuadSum1;
|
||
U64 u64QuadSum2;
|
||
U8 u8Reserved[8];
|
||
} CVE_NCC_DST_MEM_T;
|
||
|
||
/* Region factors */
|
||
typedef struct {
|
||
U32 u32Area; /* expressed by the number of pixel */
|
||
U16 u16Left; /* The left boundary of the rectangle */
|
||
U16 u16Right; /* The right boundary of the rectangle */
|
||
U16 u16Top; /* The top boundary of the rectangle */
|
||
U16 u16Bottom; /* The bottom boundary of the rectangle */
|
||
U16 u16label;
|
||
} CVE_REGION_T;
|
||
|
||
/* CCBLOB factors */
|
||
typedef struct {
|
||
CVE_REGION_T astRegion[CVE_MAX_REGION_NUM]; /* u32Areae > 0, label = Arrayindex+1 */
|
||
U16 u16RegionNum; /* CCL connected component */
|
||
} CVE_CCBLOB_T;
|
||
|
||
/* NCC mode */
|
||
typedef enum {
|
||
CVE_NCC_MODE_COM = 0x0,
|
||
CVE_NCC_MODE_SIMILAR = 0x1,
|
||
|
||
CVE_NCC_MODE_BUTT
|
||
} CVE_NCC_MODE_E;
|
||
|
||
/* NCC control factors */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_NCC_MODE_E enMode;
|
||
U8 u8Src1Offset;
|
||
U8 u8Src0Offset;
|
||
} CVE_NCC_CTRL_T;
|
||
|
||
/* CCL input mode */
|
||
typedef enum {
|
||
CVE_CCL_INPUT_DATA_MODE_U8 = 0x0, /* [0,255] */
|
||
CVE_CCL_INPUT_DATA_MODE_U1 = 0x1, /* {0,1} */
|
||
|
||
CVE_CCL_INPUT_DATA_MODE_BUTT
|
||
} CVE_CCL_INPUT_DATA_MODE_E;
|
||
|
||
/* CCL control factor */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_CCL_INPUT_DATA_MODE_E enInputDataMode;
|
||
} CVE_CCL_CTRL_T;
|
||
|
||
/* GMM output mode */
|
||
typedef enum {
|
||
CVE_GMM_OUTPUT_MODE_FG = 0x0, /* output FG */
|
||
CVE_GMM_OUTPUT_MODE_FG_AND_BG = 0x1, /* output FG and BG */
|
||
|
||
CVE_GMM_OUTPUT_MODE_BUTT
|
||
} CVE_GMM_OUTPUT_MODE_E;
|
||
|
||
/* GMM sensitivity mode */
|
||
typedef enum {
|
||
CVE_GMM_SNS_FACTOR_MODE_GLB = 0x0, /* Global mode */
|
||
CVE_GMM_SNS_FACTOR_MODE_PIX = 0x1, /* Pixel mode */
|
||
|
||
CVE_GMM_SNS_FACTOR_MODE_BUTT
|
||
} CVE_GMM_SNS_FACTOR_MODE_E;
|
||
|
||
/* GMM duration update factor mode */
|
||
typedef enum {
|
||
CVE_GMM_DURATION_UPDATE_FACTOR_MODE_GLB = 0x0, /* Global mode */
|
||
CVE_GMM_DURATION_UPDATE_FACTOR_MODE_PIX = 0x1, /* Pixel mode */
|
||
|
||
CVE_GMM_DURATION_UPDATE_FACTOR_MODE_BUTT
|
||
} CVE_GMM_DURATION_UPDATE_FACTOR_MODE_E;
|
||
|
||
/* GMMM down scale factor mode */
|
||
typedef enum {
|
||
CVE_GMM_DOWN_SCALE_MODE_DISABLE = 0x0,
|
||
CVE_GMM_DOWN_SCALE_MODE_2X2 = 0x1,
|
||
CVE_GMM_DOWN_SCALE_MODE_4X4 = 0x2,
|
||
|
||
CVE_GMM_DOWN_SCALE_MODE_BUTT
|
||
} CVE_GMM_DOWN_SCALE_MODE_E;
|
||
|
||
typedef enum {
|
||
CVE_GMM_OUTPUT_DATA_MODE_U8 = 0x0, /* [0,255] */
|
||
CVE_GMM_OUTPUT_DATA_MODE_U1 = 0x1, /* {0,1} */
|
||
|
||
CVE_GMM_OUTPUT_DATA_MODE_BUTT
|
||
} CVE_GMM_OUTPUT_DATA_MODE_E;
|
||
|
||
/* GMM control factor */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_GMM_OUTPUT_MODE_E enOutputMode;
|
||
CVE_GMM_SNS_FACTOR_MODE_E enSnsFactorMode; /* sensitivity factor mode */
|
||
CVE_GMM_DURATION_UPDATE_FACTOR_MODE_E
|
||
enDurationUpdateFactorMode; /* Duration update factor mode */
|
||
CVE_GMM_DOWN_SCALE_MODE_E enDownScaleMode; /* Down scale mode */
|
||
CVE_GMM_OUTPUT_DATA_MODE_E enOutputDataMode; /* output data mode */
|
||
U10Q6 u10q6NoiseVar; /* Initial noise Variance */
|
||
U10Q6 u10q6MaxVar; /* Max Variance */
|
||
U10Q6 u10q6MinVar; /* Min Variance */
|
||
U0Q16 u0q16LearnRate; /* Learn rate */
|
||
U0Q16 u0q16InitWeight; /* Initial weight */
|
||
U0Q16 u0q16WeightThr; /* Weight threshold */
|
||
U8 u8ModelNum; /* [1,5] */
|
||
U3Q7 u3q7SigmaScale; /* Variance scale */
|
||
bool enFastLearn; /* Fast learn switch */
|
||
} CVE_GMM_CTRL_T;
|
||
|
||
/* CannyHysEdge control factor */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_MEM_INFO_T stMem;
|
||
bool bGauss;
|
||
U16 u16LowThr;
|
||
U16 u16HighThr;
|
||
U32 *u32CannyCount;
|
||
S8 as8Mask[25];
|
||
} CVE_CANNY_HYS_EDGE_CTRL_T;
|
||
|
||
/* CannyEdge output data mode */
|
||
typedef enum {
|
||
CVE_CANNY_EDGE_OUTPUT_DATA_MODE_U8 = 0x0, /* [0,255] */
|
||
CVE_CANNY_EDGE_OUTPUT_DATA_MODE_U1 = 0x1, /* {0,1} */
|
||
|
||
CVE_CANNY_EDGE_OUTPUT_DATA_MODE_BUTT
|
||
} CVE_CANNY_EDGE_OUTPUT_DATA_MODE_E;
|
||
|
||
/* control parameter of the CannyEdge */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_CANNY_EDGE_OUTPUT_DATA_MODE_E enOutputDataMode;
|
||
U32 u32CannyCount;
|
||
} CVE_CANNY_EDGE_CTRL_T;
|
||
|
||
/* LBP compare mode */
|
||
typedef enum {
|
||
CVE_LBP_CMP_MODE_NORMAL = 0x0, /* P(x)-P(center)>= un8BitThr.s8Val, s(x)=1; else s(x)=0 */
|
||
CVE_LBP_CMP_MODE_ABS = 0x1, /* Abs(P(x)-P(center))>=un8BitThr.u8Val, s(x)=1; else s(x)=0 */
|
||
|
||
CVE_LBP_CMP_MODE_BUTT
|
||
} CVE_LBP_CMP_MODE_E;
|
||
|
||
/* LBP control factor */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_LBP_CMP_MODE_E enMode;
|
||
CVE_8BIT_U un8BitThr;
|
||
} CVE_LBP_CTRL_T;
|
||
|
||
/* GradientFilter output format type */
|
||
typedef enum {
|
||
CVE_NORM_GRAD_OUT_CTRL_HOR_AND_VER = 0x0,
|
||
CVE_NORM_GRAD_OUT_CTRL_HOR = 0x1,
|
||
CVE_NORM_GRAD_OUT_CTRL_VER = 0x2,
|
||
CVE_NORM_GRAD_OUT_CTRL_COMBINE = 0x3,
|
||
|
||
CVE_NORM_GRAD_OUT_CTRL_BUTT
|
||
} CVE_NORM_GRAD_OUT_CTRL_E;
|
||
|
||
/* Control parameters of the GradientFilter */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_NORM_GRAD_OUT_CTRL_E enOutCtrl;
|
||
S8 as8Mask[25];
|
||
U8 u8Norm;
|
||
} CVE_NORM_GRAD_CTRL_T;
|
||
|
||
/* LK Optical flow output mode */
|
||
typedef enum {
|
||
CVE_LK_OPTICAL_FLOW_PYR_OUT_MODE_NONE = 0, /* none */
|
||
CVE_LK_OPTICAL_FLOW_PYR_OUT_MODE_ERR = 1, /* error */
|
||
CVE_LK_OPTICAL_FLOW_PYR_OUT_MODE_BOTH = 2, /* error */
|
||
|
||
CVE_LK_OPTICAL_FLOW_PYR_OUT_MODE_BUTT
|
||
} CVE_LK_OPTICAL_FLOW_PYR_OUT_MODE_E;
|
||
|
||
/* Control parameter of the LK Optical flow */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
U8 u8MaxLevel; /* Sub 1 from the number of levels in the pyramid,
|
||
corresponding to pyramid layers [1,4],
|
||
(range: [0,3]; default:3) */
|
||
} CVE_BUILD_LK_OPTICAL_FLOW_PYR_CTRL_T;
|
||
|
||
/* Control parameter of the Build LK Optical flow */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_LK_OPTICAL_FLOW_PYR_OUT_MODE_E enOutMode; /* out mode */
|
||
bool bUseInitFlow; /* Use initial flow or not */
|
||
U16 u16PtsNum; /* Feature points number (range: [1,500]; default : 100) */
|
||
U8 u8MaxLevel; /* Sub 1 from the number of levels in the pyramid,
|
||
corresponding to pyramid layers [1,4],
|
||
(range: [0,3]; default:3) */
|
||
U8 u8IterCnt; /* Max iteration times (range: [1,20]; default: 10) */
|
||
U0Q8 u0q8Eps; /* exit criteria:(range: [1,255]; default :10) */
|
||
} CVE_LK_OPTICAL_FLOW_PYR_CTRL_T;
|
||
|
||
/* STCandiCorner output data mode */
|
||
typedef enum {
|
||
CVE_ST_CANDI_CORNER_OUTPUT_DATA_MODE_U8 = 0x0, /* [0,255] */
|
||
CVE_ST_CANDI_CORNER_OUTPUT_DATA_MODE_U1 = 0x1, /* {0,1} */
|
||
|
||
CVE_ST_CANDI_CORNER_OUTPUT_DATA_MODE_BUTT
|
||
} CVE_ST_CANDI_CORNER_OUTPUT_DATA_MODE_E;
|
||
|
||
/* Control parameter of the STCandiCorner */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_ST_CANDI_CORNER_OUTPUT_DATA_MODE_E enOutputDataMode;
|
||
CVE_MEM_INFO_T stMem;
|
||
U32 *u32PointNum;
|
||
} CVE_ST_CANDI_CORNER_CTRL_T;
|
||
|
||
/* ST Corner struct */
|
||
typedef struct {
|
||
CVE_POINT_U16_T astCorner[CVE_ST_MAX_CORNER_NUM];
|
||
U16 u16CornerNum;
|
||
} CVE_ST_CORNER_INFO_T;
|
||
|
||
/* Control parameters of the STCorner */
|
||
typedef struct {
|
||
U32 u32CornerNum;
|
||
U16 u32MaxCornerNum;
|
||
U16 u32MinDist;
|
||
} CVE_ST_CORNER_CTRL_T;
|
||
|
||
/* Gradfg mode */
|
||
typedef enum {
|
||
CVE_GRAD_FG_MODE_DIRECT = 0x0, /* output = diff = current gradient - background gradient */
|
||
CVE_GRAD_FG_MODE_THR = 0x1, /* if(diff < threshold) output = 0;
|
||
else output = diff */
|
||
CVE_GRAD_FG_MODE_THR_FG = 0x2, /* if(foreground != O && diff < threshold) output = diff;
|
||
else output = 0 */
|
||
CVE_GRAD_FG_MODE_FG = 0x3, /* if(foreground != 0) output = diff;
|
||
else output = 0 */
|
||
CVE_GRAD_FG_MODE_BUTT
|
||
} CVE_GRAD_FG_MODE_E;
|
||
|
||
/* Gradfg ctrl factor */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_GRAD_FG_MODE_E enMode; /* ctrl mode (range: [0,3]; default: 0) */
|
||
U8 u8MinMagDiff; /* Max gradient and min gradient difference threshold(range : [0,255]; default:
|
||
100) */
|
||
} CVE_GRAD_FG_CTRL_T;
|
||
|
||
/* Candi background pixels parameters */
|
||
typedef struct {
|
||
U8Q4F4 u8q4f4Mean; /* Candidate background grays value */
|
||
U16 u16StartTime; /* Candidate background start time */
|
||
U16 u16SumAccessTime; /* Candidate background Cumulative access time */
|
||
U16 u16ShortKeepTime; /* Candidate background hold time */
|
||
U8 u8ChgCond; /* The time condition is that candidate background
|
||
enter a state of change */
|
||
U8 u8PotenBgLife; /* Potential background cumulative access time */
|
||
} CVE_CANDI_BG_PIX_T;
|
||
|
||
/* WorkBg pixels parameters */
|
||
typedef struct {
|
||
U8Q4F4 u8q4f4Mean; /* Background grays value 0# */
|
||
U16 u16AccTime; /* Background Cumulative access time */
|
||
U8 u8PreGray; /* The ray value of the last pixel */
|
||
U5Q3 u5q3DiffThr; /* Differential threshold */
|
||
U8 u8AccFlag; /* Background access flag */
|
||
U8 u8BgGray[3]; /* Background grays value 1# to 3# */
|
||
} CVE_WORK_BG_PIX_T;
|
||
|
||
/* BgLife parameters */
|
||
typedef struct {
|
||
U8 u8WorkBgLife[3]; /* background vitality 1# to 3# */
|
||
U8 u8CandiBgLife; /* Candidate background vitality */
|
||
} CVE_BG_LIFE_T;
|
||
|
||
/* BgModel Pixel parameters */
|
||
typedef struct {
|
||
CVE_WORK_BG_PIX_T stWorkBgPixel; /* Working background */
|
||
CVE_CANDI_BG_PIX_T stCandiPixel; /* Candidate background */
|
||
CVE_BG_LIFE_T stBgLife; /* Background vitality */
|
||
} CVE_BG_MODEL_PIX_T;
|
||
|
||
/* FgStat data */
|
||
typedef struct {
|
||
U32 u32PixNum;
|
||
U32 u32SumLum;
|
||
} CVE_FG_STAT_DATA_T;
|
||
|
||
/* BgStat data */
|
||
typedef struct {
|
||
U32 u32PixNum;
|
||
U32 u32SumLum;
|
||
} CVE_BG_STAT_DATA_T;
|
||
|
||
/* MatchBgModel output mode */
|
||
typedef enum {
|
||
CVE_MATCH_BG_MODEL_OUTPUT_MODE_FG = 0x0, /* Fg output */
|
||
CVE_MATCH_BG_MODEL_OUTPUT_MODE_FG_AND_BG = 0x1, /* Fg and Bg output */
|
||
CVE_MATCH_BG_MODEL_OUTPUT_MODE_FG_AND_BG_AND_CURDIFFBG = 0x2, /* Fg ,Bg and curDiffbg output */
|
||
CVE_MATCH_BG_MODEL_OUTPUT_MODE_ALL = 0x3, /* all output (Fg,Bg,curDiffbg,frmDiff) */
|
||
CVE_MATCH_BG_MODEL_OUTPUT_MODE_BUTT
|
||
} CVE_MATCH_BG_MODEL_OUTPUT_MODE_E;
|
||
|
||
/* MatchBgModel down scale mode */
|
||
typedef enum {
|
||
CVE_MATCH_BG_MODEL_DOWN_SCALE_MODE_DISABLE = 0x0,
|
||
CVE_MATCH_BG_MODEL_DOWN_SCALE_MODE_2X2 = 0x1,
|
||
CVE_MATCH_BG_MODEL_DOWN_SCALE_MODE_4X4 = 0x2,
|
||
|
||
CVE_MATCH_BG_MODEL_DOWN_SCALE_MODE_BUTT
|
||
} CVE_MATCH_BG_MODEL_DOWN_SCALE_MODE_E;
|
||
|
||
/* Control parameters of the MatchBgModel */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_MATCH_BG_MODEL_OUTPUT_MODE_E enOutputMode; /* output mode (range: [0,2]; default: 0) */
|
||
CVE_MATCH_BG_MODEL_DOWN_SCALE_MODE_E
|
||
enDownScaleMode; /* Down scale mdoe (range: [0,2]; default: 2) */
|
||
U8Q4 u8q4DistThr; /* Variance threshold (range:[0,4095]; default: 400) */
|
||
U8 u8GrayThr; /* current frame sub background (range [0,255]; default: 20) */
|
||
} CVE_MATCH_BG_MODEL_CTRL_T;
|
||
|
||
/* updateBgModel down scale mode */
|
||
typedef enum {
|
||
CVE_UPDATE_BG_MODEL_DOWN_SCALE_MODE_DISABLE = 0x0,
|
||
CVE_UPDATE_BG_MODEL_DOWN_SCALE_MODE_2X2 = 0x1,
|
||
CVE_UPDATE_BG_MODEL_DOWN_SCALE_MODE_4X4 = 0x2,
|
||
|
||
CVE_UPDATE_BG_MODEL_DOWN_SCALE_MODE_BUTT
|
||
} CVE_UPDATE_BG_MODEL_DOWN_SCALE_MODE_E;
|
||
|
||
/* Control parameters of the updateBgModel */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_UPDATE_BG_MODEL_DOWN_SCALE_MODE_E
|
||
enDownScaleMode; /* Down scale mode(range: [0,2];default: 0) */
|
||
U16 u16DelThr; /* Delete threshold(range: [0,65535];default: 1000) */
|
||
U16 u16FrqThr; /* Frequency threshold(range: [0,65535];default: 200) */
|
||
U16 u16IntervalThr; /* Interval threshold(range: [0,65535];default: 40) */
|
||
U0Q16 u0q16LearnRate; /* Learn rate(range: [0,65535];default:1310) */
|
||
|
||
} CVE_UPDATE_BG_MODEL_CTRL_T;
|
||
|
||
/* SAD mode */
|
||
typedef enum {
|
||
CVE_SAD_MODE_MB_4X4 = 0x0, /* 4 x 4 */
|
||
CVE_SAD_MODE_MB_8X8 = 0x1, /* 8 x 8 */
|
||
CVE_SAD_MODE_MB_16X16 = 0x2, /* 16 x 16 */
|
||
|
||
CVE_SAD_MODE_BUTT
|
||
} CVE_SAD_MODE_E;
|
||
|
||
/* Control parameters of the SAD */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_SAD_MODE_E enMode;
|
||
U16 u16Thr; /* output threshold = minVal, srcVal <= u16Thr;
|
||
output threshold = maxVal, srcVal > u16Thr */
|
||
U8 u8MinVal; /* Min value */
|
||
U8 u8MaxVal; /* Max value */
|
||
} CVE_SAD_CTRL_T;
|
||
|
||
/* ROI info */
|
||
typedef struct {
|
||
CVE_RECT_S24Q8_T stRoi;
|
||
U32 u32RoiId;
|
||
} CVE_ROI_INFO_T;
|
||
|
||
typedef enum {
|
||
CVE_KCF_FHOG_WH_SEL_8 = 0x0,
|
||
CVE_KCF_FHOG_WH_SEL_16 = 0x1,
|
||
CVE_KCF_FHOG_WH_SEL_32 = 0x2,
|
||
CVE_KCF_FHOG_WH_SEL_BUTT
|
||
} CVE_KCF_FHOG_WH_SEL_E;
|
||
|
||
/* KCF GET YF Contrl params*/
|
||
typedef struct {
|
||
CVE_KCF_FHOG_WH_SEL_E u8FhogWidthSel;
|
||
CVE_KCF_FHOG_WH_SEL_E u8FhogHeightSel;
|
||
} CVE_KCF_GET_YF_CTRL_T;
|
||
|
||
typedef enum {
|
||
CVE_KCF_FHOG_MODE_WIDTH_FIRST = 0x0,
|
||
CVE_KCF_FHOG_MODE_CHANNEL_FIRST = 0x1,
|
||
CVE_KCF_FHOG_MODE_BUTT
|
||
} CVE_KCF_FHOG_MODE_E;
|
||
|
||
/* KCF GET FEATURE Contrl params*/
|
||
typedef struct {
|
||
S16 s16CropXstart;
|
||
S16 s16CropYstart;
|
||
S16 s16CropXSize;
|
||
S16 s16CropYSize;
|
||
CVE_KCF_FHOG_MODE_E enFhogMode;
|
||
CVE_KCF_FHOG_WH_SEL_E u8FhogWidthSel;
|
||
CVE_KCF_FHOG_WH_SEL_E u8FhogHeightSel;
|
||
// CVE_KCF_FHOG_RESIZE_SEL_E u8FhogIxSizeSel;
|
||
// CVE_KCF_FHOG_RESIZE_SEL_E u8FhogIySizeSel;
|
||
U16 u16TrancAlpha; /* 0~4095 */
|
||
U8 u8LowCostEn; /*0: no, standard of FHOG, 1:yes, lowcost version */
|
||
U8 u8HanningEn;
|
||
U8 u8TranMode;
|
||
// U16 u16RatioX; /* 1~1023 */
|
||
// U16 u16RatioY; /* 1~1023 */
|
||
} CVE_KCF_GET_FEATURE_CTRL_T;
|
||
|
||
typedef enum {
|
||
CVE_KCF_TRAIN_MODE = 0x0,
|
||
CVE_KCF_TRACK_MODE = 0x1,
|
||
CVE_KCF_TRAIN_OR_TRACK_BUTT
|
||
} CVE_KCF_TRAIN_OR_TRACK_MODE_E;
|
||
|
||
/* KCF TRAIN AND TRACK Contrl params*/
|
||
typedef struct {
|
||
// S16 s16CropXstart;
|
||
// S16 s16CropYstart;
|
||
S16 s16CropXSize;
|
||
S16 s16CropYSize;
|
||
CVE_KCF_FHOG_WH_SEL_E u8FhogWidthSel;
|
||
CVE_KCF_FHOG_WH_SEL_E u8FhogHeightSel;
|
||
CVE_KCF_TRAIN_OR_TRACK_MODE_E u8Mode;
|
||
U8 u8ObjIdx;
|
||
U8 u8ObjNum;
|
||
U16 u16BldCoef;
|
||
U8 u8HanningEn;
|
||
U8 u8LowCostEn;
|
||
} CVE_KCF_TRAIN_AND_TRACK_CTRL_T;
|
||
|
||
typedef enum {
|
||
CVE_LINE_FILTER_HOR_FIRST = 0,
|
||
CVE_LINE_FILTER_HOR_SECOND = 1,
|
||
CVE_LINE_FILTER_VER = 2,
|
||
CVE_LINE_FILTER_BUTT
|
||
} CVE_LINE_FILTER_MODE_E;
|
||
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_LINE_FILTER_MODE_E LineFilterMode;
|
||
U8 u8Thresh[4];
|
||
} CVE_LINE_FILTER_CTRL_T;
|
||
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
U8 u8Thresh;
|
||
U8 u8MaxThresh;
|
||
} CVE_NOISE_REMOVE_CTRL_T;
|
||
|
||
typedef enum {
|
||
CVE_ADP_THRESH_BINARY = 0,
|
||
CVE_ADP_THRESH_BINARY_INV = 1,
|
||
CVE_ADP_THRESH_BUTT
|
||
} CVE_ADP_THRESH_MODE_E;
|
||
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
U8 u8HalfMaskX;
|
||
U8 u8HalfMaskY;
|
||
U8 u8RateThr;
|
||
U8 u8ValueThr;
|
||
S8 s8Offset;
|
||
U8 u8MaxValue;
|
||
CVE_ADP_THRESH_MODE_E u8Mode;
|
||
} CVE_ADP_THRESH_CTRL_T;
|
||
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
} CVE_REDUCE_CTRL_T;
|
||
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
int s32TransferMatrix[6];
|
||
// U8 u8SrcImgType; /* 0:U8C1 2:YUV420SP, 3 YUV422SP */
|
||
// U8 u8YuvImgType; /* 0:NV21 1:NV12*/
|
||
bool UvEn; /*0:only Y or U8C1 1:only UV channel*/
|
||
U8 u8OobUv;
|
||
U8 u8OobY;
|
||
} CVE_PERSP_TRANS_CTRL_T;
|
||
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
U16 u16Filter_Eps;
|
||
U8 u8FilterWinSize; /* 3 or 5*/
|
||
// U16 u16FilterNorm;
|
||
} CVE_FAST_GUIDE_FILTER_CTRL_T;
|
||
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
bool u8HogGamma;
|
||
U8 u8HogCellSize; /* 4 or 8 */
|
||
// U16 u16HogBlockSumW;
|
||
U8 u8HogOShift; /* [0,31]*/
|
||
} CVE_HOG_CTRL_T;
|
||
|
||
typedef struct {
|
||
U32 u32InvScaleX;
|
||
U32 u32InvScaleY;
|
||
U32 u32ScaleX;
|
||
U32 u32ScaleY;
|
||
CVE_CROP_T stCrop;
|
||
} CVE_RESIZE_CTRL_T;
|
||
|
||
typedef enum {
|
||
CVE_SVM_KERNEL_TYPE_LINEAR = 0,
|
||
CVE_SVM_KERNEL_TYPE_POLY,
|
||
CVE_SVM_KERNEL_TYPE_RBF,
|
||
CVE_SVM_KERNEL_TYPE_SIGMOID,
|
||
CVE_SVM_KERNEL_TYPE_BUTT,
|
||
} CVE_SVM_ENKERNEL_TYPE_E;
|
||
|
||
typedef struct {
|
||
CVE_SVM_ENKERNEL_TYPE_E u8EnKernelType;
|
||
U16 u16SvNum;
|
||
U16 u16FeatureDim;
|
||
U16 u16FeatureNum;
|
||
} CVE_SVM_KERNEL_CTRL_T;
|
||
|
||
typedef struct {
|
||
U16 u16SvNum;
|
||
U8 u8Class_count;
|
||
int s32PredictThr;
|
||
U16 u16FeatureNum;
|
||
} CVE_SVM_PREDICT_CTRL_T;
|
||
|
||
typedef enum {
|
||
CVE_RESHAPE_TRANSPOSE,
|
||
CVE_RESHAPE_ROTATE_90,
|
||
CVE_RESHAPE_ROTATE_180,
|
||
CVE_RESHAPE_BUTT
|
||
} CVE_RESHAPE_MODE_E;
|
||
|
||
typedef struct {
|
||
CVE_RESHAPE_MODE_E enReshapMode;
|
||
U16 u16BlockWidth;
|
||
U16 u16BlockHeight;
|
||
} CVE_RESHAPE_CTRL_T;
|
||
|
||
typedef enum {
|
||
CVE_IM2COL_MODE_FC,
|
||
CVE_IM2COL_MODE_FC_TRANS,
|
||
CVE_IM2COL_MODE_CONV,
|
||
CVE_IM2COL_MODE_BUTT
|
||
} CVE_IM2COL_MODE_E;
|
||
|
||
typedef struct {
|
||
CVE_IM2COL_MODE_E enMode;
|
||
U8 u8KSize;
|
||
U8 u8Stride;
|
||
S8 s8Zp;
|
||
U8 u8OHeight;
|
||
U8 u8OWidth;
|
||
U8 u8PaddingTop;
|
||
U8 u8PaddingLeft;
|
||
U32 u32OWidthDivCoef;
|
||
} CVE_IM2COL_CTRL_T;
|
||
|
||
typedef enum {
|
||
CVE_GEMM_ACT_NONE,
|
||
CVE_GEMM_ACT_RELU,
|
||
CVE_GEMM_ACT_BUTT,
|
||
} CVE_GEMM_ACT_MODE_E;
|
||
|
||
typedef struct {
|
||
U8 u8Src0RemainLen;
|
||
U8 u8Src1RemainLen;
|
||
CVE_GEMM_ACT_MODE_E ActMode;
|
||
S8 s8ZpA;
|
||
S8 s8ZpB;
|
||
S8 s8ZpOut;
|
||
U32 u32ScaleSlope;
|
||
U32 u32ReluSlope;
|
||
} CVE_GEMM_CTRL_T;
|
||
|
||
typedef enum {
|
||
CVE_POOLING_AVG = 0,
|
||
CVE_POOLING_MAX,
|
||
CVE_POOLING_BUTT
|
||
} CVE_POOLING_MODE_E;
|
||
|
||
typedef struct {
|
||
CVE_POOLING_MODE_E enMode;
|
||
U8 u8NChannel;
|
||
U8 u8Stride;
|
||
U8 u8KSize;
|
||
S8 s8Zp;
|
||
U8 u8PaddingTop;
|
||
U8 u8PaddingLeft;
|
||
} CVE_POOLING_CTRL_T;
|
||
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
U16 u16ImgW;
|
||
U16 u16ImgH;
|
||
U16 u16ImgShuffleW;
|
||
U16 u16ImgShuffleH;
|
||
U8 u8Channel;
|
||
U16 u16ImgPadW;
|
||
U16 u16ImgPadH;
|
||
CVE_RAW_AIISP_MODE_E u8MipiBit; /* 8, 10, 12, 14, 16 */
|
||
bool MipiCompactEn;
|
||
U0Q16 u0q16DiffScale;
|
||
U8 u8DiffOffset;
|
||
U8 u8IdxLut16[16]; /* u4x16 */
|
||
} CVE_AIISP_TNR_PRE_PROCESS_CTRL_T;
|
||
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
U16 u16ImgW;
|
||
U16 u16ImgH;
|
||
U16 u16ImgShuffleW;
|
||
U16 u16ImgShuffleH;
|
||
U8 u8Channel;
|
||
U16 u16ImgPadW;
|
||
U16 u16ImgPadH;
|
||
CVE_RAW_AIISP_MODE_E u8MipiBit; /* 8, 10, 12, 14, 16 */
|
||
bool MipiCompactEn;
|
||
U8 u8MaskChannel;
|
||
U8 u8MaskThr;
|
||
U8 u8MinCounter;
|
||
U16 u16BlcSnrIn[4]; /* u12x4*/
|
||
U8 u8TnrBldLut1[33];
|
||
U8 u8TnrBltNum1;
|
||
U8 u8TnrBltStep1;
|
||
U8 u8TnrBldLut2[33];
|
||
U8 u8TnrBltNum2[3];
|
||
U8 u8TnrBltStep2[3];
|
||
} CVE_AIISP_TNR_POST_PROCESS_CTRL_T;
|
||
|
||
typedef struct {
|
||
U16 u16ImgW;
|
||
U16 u16ImgH;
|
||
U16 u16ImgShuffleW;
|
||
U16 u16ImgShuffleH;
|
||
U8 u8Channel;
|
||
// U16 u16TnrImgPadW;
|
||
U16 u16ImgPadW;
|
||
U16 u16ImgPadH;
|
||
CVE_RAW_AIISP_MODE_E u8MipiBit; /* 8, 10, 12, 14, 16 */
|
||
bool MipiCompactEn;
|
||
// U8 u8MaskChannel;
|
||
U8 u8SnrDequantScale;
|
||
U16 u16SnrDequantOffset;
|
||
U16 u16BlcSnrOut[4]; /* u12x4*/
|
||
U8 u8NcEn;
|
||
U8 u8NoiseLut[16];
|
||
U8 u8NoiseBins;
|
||
U8 u8NoiseStep;
|
||
} CVE_AIISP_SNR_POST_PROCESS_CTRL_T;
|
||
|
||
typedef enum {
|
||
CVE_AIISP_MFNR_OUT_16BIT_BIT_MODE = 0,
|
||
CVE_AIISP_MFNR_OUT_12BIT_BIT_RIGHT_SHIFT_4BIT_MODE, /* >> 4 */
|
||
CVE_AIISP_MFNR_OUT_12BIT_BIT_MODE, /* &0xFFF*/
|
||
} CVE_AIISP_MFNR_OUT_MODE_T;
|
||
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
U16 u16ImgW;
|
||
U16 u16ImgH;
|
||
U16 u16ImgShuffleW;
|
||
U16 u16ImgShuffleH;
|
||
U8 u8Channel;
|
||
U16 u16ImgPadW;
|
||
U16 u16ImgPadH;
|
||
CVE_RAW_AIISP_MODE_E u8MipiBit; /* 8, 10, 12, 14, 16 */
|
||
bool MipiCompactEn;
|
||
U0Q16 u0q16DiffScale;
|
||
U8 u8DiffOffset;
|
||
U8 u8IdxLut16[16]; /* u4x16 */
|
||
U16 u8MfnrBlcIn0[8]; /* u16x4 */
|
||
U16 u8MfnrBlcIn1[8]; /* u16x4 */
|
||
CVE_AIISP_MFNR_OUT_MODE_T u8DataBitMode;
|
||
bool DgainEn;
|
||
U4Q6 u6q6Dgain;
|
||
bool IsShortFrame;
|
||
U4Q6 u4q6ExpRatio;
|
||
} CVE_AIISP_TNR_MFNR_PROCESS_CTRL_T;
|
||
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
U16 u16ImgW;
|
||
U16 u16ImgH;
|
||
U16 u16ImgShuffleW;
|
||
U16 u16ImgShuffleH;
|
||
U8 u8Channel;
|
||
// MBP_U16 u16TnrImgPadW;
|
||
U16 u16ImgPadW;
|
||
U16 u16ImgPadH;
|
||
CVE_RAW_AIISP_MODE_E u8MipiBit; /* 8, 10, 12, 14, 16 */
|
||
bool MipiCompactEn;
|
||
// MBP_U8 u8MaskChannel;
|
||
U8 u8SnrDequantScale;
|
||
U16 u16SnrDequantOffset;
|
||
U16 u16BlcSnrOut[4]; /* u12x4*/
|
||
U8 u8NcEn;
|
||
U8 u8NoiseLut[16];
|
||
U8 u8NoiseBins;
|
||
U8 u8NoiseStep;
|
||
CVE_AIISP_MFNR_OUT_MODE_T u8DataBitMode;
|
||
U16 u16MfnrBlcOut[4];
|
||
} CVE_AIISP_SNR_MFNR_PROCESS_CTRL_T;
|
||
#endif /* __AML_CVE_H__ */
|