976 lines
31 KiB
C
976 lines
31 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"
|
||
#include "aml_common.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
|
||
|
||
/* Crop */
|
||
typedef struct {
|
||
AML_BOOL_E enCrop; /*Crop enable*/
|
||
AML_U16 u16X; /*Crop xstart*/
|
||
AML_U16 u16Y; /*Crop ystart*/
|
||
AML_U16 u16Width; /*Crop xsize*/
|
||
AML_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_BUTT
|
||
} CVE_DMA_MODE_E;
|
||
|
||
/* control parameter of the DMA */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_DMA_MODE_E enMode;
|
||
AML_U64 u64Val; /* memset mode parameter */
|
||
AML_U8 u8HorSegSize; /* interval-copy,u8HorSegSize divides bytes of each
|
||
row,The limit values are 2,3,4,8,16 */
|
||
|
||
AML_U8 u8ElemSize; /* interval-copy,copy to the valid bytes before each
|
||
segment in the valid row,0<u8ElemSize<u8HorSegSize */
|
||
|
||
AML_U8 u8VerSegRows; /* interval-copy,make a row copy from each
|
||
u8VerSegRows */
|
||
} 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;
|
||
AML_U8 u8MaxLumaRect; /* 0 <= u8MaxLumaRect <= 63 */
|
||
} CVE_LUMA_STAT_ARRAY_CTRL_T;
|
||
|
||
/*
|
||
* 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;
|
||
AML_S8 as8Mask[25]; /* Template parameter filter factor */
|
||
AML_U8 u8Norm; /* standardized parameter,shift right >> */
|
||
} 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 */
|
||
AML_S8 as8Mask[25]; /* Template parameter filter factor */
|
||
AML_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 */
|
||
AML_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;
|
||
AML_U16 u16Thr;
|
||
AML_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;
|
||
AML_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;
|
||
AML_U8 au8Mask[25]; /* template parameter must be 0 or 255 */
|
||
} CVE_ERODE_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;
|
||
AML_U8 u8LowThr; /* Threshold value,usr-defined,0 <= LowThr <= 255 */
|
||
AML_U8 u8HighThr; /* Threshold value,usr-defined;
|
||
if (enMode < CVE_THRESH_MODE_MIN_MID_MAX) U8HighThr is not
|
||
used; else 0 <= u8LowThr <= u8HighThr <= 255 */
|
||
AML_U8 u8MinVal; /* tri level threshold minimum */
|
||
AML_U8 u8MidVal; /* tri level threshold middle;
|
||
if (enMode < 2) U8MidVal is not used */
|
||
AML_U8 u8MaxVal; /* tri level threshold maximum */
|
||
} CVE_THRESH_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;
|
||
AML_U16 u16ThreshRatio; /* Threshold ratio of the difference */
|
||
} CVE_SUB_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 {
|
||
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;
|
||
AML_S16 s16LowThr; /* threshold value ,usr-defined */
|
||
AML_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;
|
||
AML_U16 u16LowThr; /* threshold value ,usr-defined */
|
||
AML_U16 u16HighThr; /* threshold value ,usr-defined */
|
||
AML_U8 u8MinVal; /* tri level threshold minimum */
|
||
AML_U8 u8MidVal; /* tri level threshold midimum */
|
||
AML_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;
|
||
AML_U16 u8LineCoefThr;
|
||
AML_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 {
|
||
AML_U8 au8Map[CVE_MAP_NUM];
|
||
} CVE_MAP_U8BIT_LUT_MEM_T;
|
||
|
||
/* unsigned 16bit LUT memory of the Map */
|
||
typedef struct {
|
||
AML_U16 au16Map[CVE_MAP_NUM];
|
||
} CVE_MAP_U16BIT_LUT_MEM_T;
|
||
|
||
/* 16bit LUT memory of the Map */
|
||
typedef struct {
|
||
AML_S16 as16Map[CVE_MAP_NUM];
|
||
} CVE_MAP_S16BIT_LUT_MEM_T;
|
||
|
||
/* Control member of the Equalizehist */
|
||
typedef struct {
|
||
AML_U32 au32Hist[CVE_HIST_NUM];
|
||
AML_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;
|
||
|
||
/* Control parameters of the Add */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
AML_U0Q16 u0q16X;
|
||
AML_U0Q16 u0q16Y;
|
||
} CVE_ADD_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;
|
||
|
||
/* NCC dst memory */
|
||
typedef struct {
|
||
AML_U64 u64Numerator;
|
||
AML_U64 u64QuadSum1;
|
||
AML_U64 u64QuadSum2;
|
||
AML_U8 u8Reserved[8];
|
||
} CVE_NCC_DST_MEM_T;
|
||
|
||
/* Region factors */
|
||
typedef struct {
|
||
AML_U32 u32Area; /* expressed by the number of pixel */
|
||
AML_U16 u16Left; /* The left boundary of the rectangle */
|
||
AML_U16 u16Right; /* The right boundary of the rectangle */
|
||
AML_U16 u16Top; /* The top boundary of the rectangle */
|
||
AML_U16 u16Bottom; /* The bottom boundary of the rectangle */
|
||
AML_U16 u16label;
|
||
} CVE_REGION_T;
|
||
|
||
/* CCBLOB factors */
|
||
typedef struct {
|
||
CVE_REGION_T astRegion[CVE_MAX_REGION_NUM]; /* u32Areae > 0, label = Arrayindex+1 */
|
||
AML_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;
|
||
AML_U8 u8Src1Offset;
|
||
AML_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 */
|
||
AML_U10Q6 u10q6NoiseVar; /* Initial noise Variance */
|
||
AML_U10Q6 u10q6MaxVar; /* Max Variance */
|
||
AML_U10Q6 u10q6MinVar; /* Min Variance */
|
||
AML_U0Q16 u0q16LearnRate; /* Learn rate */
|
||
AML_U0Q16 u0q16InitWeight; /* Initial weight */
|
||
AML_U0Q16 u0q16WeightThr; /* Weight threshold */
|
||
AML_U8 u8ModelNum; /* [1,5] */
|
||
AML_U3Q7 u3q7SigmaScale; /* Variance scale */
|
||
AML_BOOL_E enFastLearn; /* Fast learn switch */
|
||
} CVE_GMM_CTRL_T;
|
||
|
||
/* CannyHysEdge control factor */
|
||
typedef struct {
|
||
CVE_CROP_T stCrop;
|
||
CVE_MEM_INFO_T stMem;
|
||
AML_BOOL_E bGauss;
|
||
AML_U16 u16LowThr;
|
||
AML_U16 u16HighThr;
|
||
AML_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;
|
||
AML_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;
|
||
AML_S8 as8Mask[25];
|
||
AML_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;
|
||
AML_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 */
|
||
AML_BOOL_E bUseInitFlow; /* Use initial flow or not */
|
||
AML_U16 u16PtsNum; /* Feature points number (range: [1,500]; default : 100) */
|
||
AML_U8 u8MaxLevel; /* Sub 1 from the number of levels in the pyramid,
|
||
corresponding to pyramid layers [1,4],
|
||
(range: [0,3]; default:3) */
|
||
AML_U8 u8IterCnt; /* Max iteration times (range: [1,20]; default: 10) */
|
||
AML_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;
|
||
} CVE_ST_CANDI_CORNER_CTRL_T;
|
||
|
||
/* ST Corner struct */
|
||
typedef struct {
|
||
CVE_POINT_U16_T astCorner[CVE_ST_MAX_CORNER_NUM];
|
||
AML_U16 u16CornerNum;
|
||
} CVE_ST_CORNER_INFO_T;
|
||
|
||
/* Control parameters of the STCorner */
|
||
typedef struct {
|
||
AML_U32 u32CornerNum;
|
||
AML_U16 u32MaxCornerNum;
|
||
AML_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) */
|
||
AML_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 {
|
||
AML_U8Q4F4 u8q4f4Mean; /* Candidate background grays value */
|
||
AML_U16 u16StartTime; /* Candidate background start time */
|
||
AML_U16 u16SumAccessTime; /* Candidate background Cumulative access time */
|
||
AML_U16 u16ShortKeepTime; /* Candidate background hold time */
|
||
AML_U8 u8ChgCond; /* The time condition is that candidate background
|
||
enter a state of change */
|
||
AML_U8 u8PotenBgLife; /* Potential background cumulative access time */
|
||
} CVE_CANDI_BG_PIX_T;
|
||
|
||
/* WorkBg pixels parameters */
|
||
typedef struct {
|
||
AML_U8Q4F4 u8q4f4Mean; /* Background grays value 0# */
|
||
AML_U16 u16AccTime; /* Background Cumulative access time */
|
||
AML_U8 u8PreGray; /* The ray value of the last pixel */
|
||
AML_U5Q3 u5q3DiffThr; /* Differential threshold */
|
||
AML_U8 u8AccFlag; /* Background access flag */
|
||
AML_U8 u8BgGray[3]; /* Background grays value 1# to 3# */
|
||
} CVE_WORK_BG_PIX_T;
|
||
|
||
/* BgLife parameters */
|
||
typedef struct {
|
||
AML_U8 u8WorkBgLife[3]; /* background vitality 1# to 3# */
|
||
AML_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 {
|
||
AML_U32 u32PixNum;
|
||
AML_U32 u32SumLum;
|
||
} CVE_FG_STAT_DATA_T;
|
||
|
||
/* BgStat data */
|
||
typedef struct {
|
||
AML_U32 u32PixNum;
|
||
AML_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) */
|
||
AML_U8Q4 u8q4DistThr; /* Variance threshold (range:[0,4095]; default: 400) */
|
||
AML_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) */
|
||
AML_U16 u16DelThr; /* Delete threshold(range: [0,65535];default: 1000) */
|
||
AML_U16 u16FrqThr; /* Frequency threshold(range: [0,65535];default: 200) */
|
||
AML_U16 u16IntervalThr; /* Interval threshold(range: [0,65535];default: 40) */
|
||
AML_U0Q16 u0q16LearnRate; /* Learn rate(range: [0,65535];default:1310) */
|
||
|
||
} CVE_UPDATE_BG_MODEL_CTRL_T;
|
||
|
||
typedef enum {
|
||
CVE_ANN_MLP_ACTIV_FUNC_IDENTITY = 0x0,
|
||
CVE_ANN_MLP_ACTIV_FUNC_SIGMOID_SYM = 0x1,
|
||
CVE_ANN_MLP_ACTIV_FUNC_GAUSSIAN = 0x2,
|
||
|
||
CVE_ANN_MLP_ACTIV_FUNC_BUTT
|
||
} CVE_ANN_MLP_ACTIV_FUNC_E;
|
||
|
||
typedef enum {
|
||
CVE_ANN_MLP_ACCURATE_SRC16_WGT16 = 0x0, /* Input decimal's accurate 16 bit,weight 16bit */
|
||
CVE_ANN_MLP_ACCURATE_SRC14_WGT20 = 0x1, /* Input decimal's accurate 14 bit,weight 20bit */
|
||
|
||
CVE_ANN_MLP_ACCURATE_BUTT
|
||
} CVE_ANN_MLP_ACCURATE_E;
|
||
|
||
typedef struct {
|
||
CVE_ANN_MLP_ACTIV_FUNC_E enActivFunc;
|
||
CVE_ANN_MLP_ACCURATE_E enAccurate;
|
||
CVE_MEM_INFO_T stWeight;
|
||
AML_U32 u32TotalWeightSize;
|
||
|
||
AML_U16 au16LayerCount[8]; /* There are 8 layers including output and output layers */
|
||
AML_U16 u16MaxCount; /* MaxCount <= 24 */
|
||
AML_U8 u8LayerNum; /* 2 < layerNum <= 8 */
|
||
AML_U8 u8Reserved;
|
||
} CVE_ANN_MLP_MODEL_T;
|
||
|
||
typedef enum {
|
||
CVE_SVM_TYPE_C_SVC = 0x0,
|
||
CVE_SVM_TYPE_NU_SVC = 0x1,
|
||
|
||
CVE_SVM_TYPE_BUTT
|
||
} CVE_SVM_TYPE_E;
|
||
|
||
typedef enum {
|
||
CVE_SVM_KERNEL_TYPE_LINEAR = 0x0,
|
||
CVE_SVM_KERNEL_TYPE_POLY = 0x1,
|
||
CVE_SVM_KERNEL_TYPE_RBF = 0x2,
|
||
CVE_SVM_KERNEL_TYPE_SIGMOID = 0x3,
|
||
|
||
CVE_SVM_KERNEL_TYPE_BUTT
|
||
} CVE_SVM_KERNEL_TYPE_E;
|
||
|
||
typedef struct {
|
||
CVE_SVM_TYPE_E enType;
|
||
CVE_SVM_KERNEL_TYPE_E enKernelType;
|
||
|
||
CVE_MEM_INFO_T stSv; /* SV memory */
|
||
CVE_MEM_INFO_T stDf; /* DF memory */
|
||
AML_U32 u32TotalDfSize; /* functions coef size in byte */
|
||
|
||
AML_U16 u16FeatureDim;
|
||
AML_U16 u16SvTotal;
|
||
AML_U8 u8ClassCount;
|
||
} CVE_SVM_MODEL_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;
|
||
AML_U16 u16Thr; /* output threshold = minVal, srcVal <= u16Thr;
|
||
output threshold = maxVal, srcVal > u16Thr */
|
||
AML_U8 u8MinVal; /* Min value */
|
||
AML_U8 u8MaxVal; /* Max value */
|
||
} CVE_SAD_CTRL_T;
|
||
|
||
/* Resize mode */
|
||
typedef enum {
|
||
CVE_RESIZE_MODE_LINEAR = 0x0, /* Bilinear interpolation */
|
||
|
||
CVE_RESIZE_MODE_BUTT
|
||
} CVE_RESIZE_MODE_E;
|
||
|
||
/* Control parameter of the Resize */
|
||
typedef struct {
|
||
CVE_RESIZE_MODE_E enMode;
|
||
CVE_MEM_INFO_T stMem;
|
||
AML_U16 u16Num;
|
||
} CVE_RESIZE_CTRL_T;
|
||
|
||
/* CNN active function mode */
|
||
typedef enum {
|
||
CVE_CNN_ACTIV_FUNC_NONE = 0x0, /* not activation,f(x) = x */
|
||
CVE_CNN_ACTIV_FUNC_RELU = 0x1, /* f(x) = max(0,x) */
|
||
CVE_CNN_ACTIV_FUNC_SIGMOID = 0x2, /* not support,f(x) = 1/(1+exp(-x)) */
|
||
|
||
CVE_CNN_ACTIV_FUNC_BUTT
|
||
} CVE_CNN_ACTIV_FUNC_E;
|
||
|
||
/* CNN poolint mode */
|
||
typedef enum {
|
||
CVE_CNN_POOLING_NONE = 0x0, /* not pooling activation */
|
||
CVE_CNN_POOLING_MAX = 0x1, /* Use the max value of the area in each pooling */
|
||
CVE_CNN_POOLING_AVG = 0x2, /* Use the average of each pooling area */
|
||
CVE_CNN_POOLING_BUTT
|
||
} CVE_CNN_POOLING_E;
|
||
|
||
/* Control parameters of the CNN conv ReLU pooling layer */
|
||
typedef struct {
|
||
CVE_CNN_ACTIV_FUNC_E enActivFunc; /* Activation function type */
|
||
CVE_CNN_POOLING_E enPooling; /* Pooling method mode */
|
||
|
||
AML_U8 u8FeatureMapNum; /* Feature maps num */
|
||
AML_U8 u8KernelSize; /* only support 3 currently */
|
||
AML_U8 u8ConvStep; /* only support 1 currently */
|
||
|
||
AML_U8 u8PoolSize; /* only support 2 currently */
|
||
AML_U8 u8PoolStep; /* only support 2 currently */
|
||
AML_U8 u8Reserved[3];
|
||
|
||
} CVE_CNN_CONV_POOLING_T;
|
||
|
||
/* Control parameters of the CNN fully connect */
|
||
typedef struct {
|
||
AML_U16 au16LayerCnt[8]; /* Number of neurons each fully connect layers */
|
||
AML_U16 u16MaxCnt; /* Max neuron number */
|
||
AML_U8 u8LayerNum; /* Fully connect layer num */
|
||
AML_U8 u8Reserved;
|
||
} CVE_CNN_FULL_CONNECT_T;
|
||
|
||
/* CNN model */
|
||
typedef struct {
|
||
CVE_CNN_CONV_POOLING_T astConvPool[8]; /* Conv ReLU pooling layers */
|
||
CVE_CNN_FULL_CONNECT_T stFullConnect; /* Fully connected layers */
|
||
|
||
CVE_MEM_INFO_T stConvKernelBias; /* Conv ReLU pooling kernels and bias */
|
||
AML_U32 u32ConvKernelBiasSize; /* Conv ReLU pooling kernels and bias size */
|
||
|
||
CVE_MEM_INFO_T stFCLWgtBias; /* Fully connected layers weight and bias */
|
||
AML_U32 u32FCLWgtBiasSize; /* Fully connected layers weight and bias size */
|
||
|
||
AML_U32 u32TotalMemSize; /* Total size of all memory(kernel,weight,bias) */
|
||
|
||
CVE_IMAGE_TYPE_E enType; /* The image type of the CNN model */
|
||
AML_U32 u32Width; /* Image width for the model */
|
||
AML_U32 u32Height; /* Image height for the model */
|
||
|
||
AML_U16 u16ClassCount; /* Classes num */
|
||
AML_U8 u8ConvPoolLayerNum; /* Conv ReLU pooling layers num */
|
||
AML_U8 u8Reserved;
|
||
} CVE_CNN_MODEL_T;
|
||
|
||
/* Control parameter of the CNN */
|
||
typedef struct {
|
||
CVE_MEM_INFO_T stMem; /* Assist memory */
|
||
AML_U32 u32Num; /* Input image num */
|
||
} CVE_CNN_CTRL_T;
|
||
|
||
/* CNN result */
|
||
typedef struct {
|
||
AML_S32 s32ClassIdx; /* possible Index of the classification */
|
||
AML_S32 s32Confidence; /* confidence of classification */
|
||
} CVE_CNN_RESULT_T;
|
||
|
||
/* Perspective transform algorithm mode */
|
||
typedef enum {
|
||
CVE_PERSP_TRANS_ALG_MODE_NR_SIM = 0x0, /* Non reflective similar transformation mode */
|
||
CVE_PERSP_TRANS_ALG_MODE_SIM = 0x1, /* Reflective similar transformation mode */
|
||
CVE_PERSP_TRANS_ALG_MODE_AFFINE = 0x2, /* Affine transformation mode */
|
||
|
||
CVE_PERSP_TRANS_ALG_MODE_BUTT
|
||
} CVE_PERSP_TRANS_ALG_MODE_E;
|
||
|
||
/* Perspective transform point pair */
|
||
typedef struct {
|
||
CVE_POINT_U14Q2_T stSrcPoint; /* Src point */
|
||
CVE_POINT_U14Q2_T stDstPoint; /* dst point */
|
||
} CVE_PERSP_TRANS_POINT_PAIR_T;
|
||
|
||
/* Perspective transform CSC mode */
|
||
typedef enum {
|
||
CVE_PERSP_TRANS_CSC_MODE_NONE = 0x0, /* Not use csc */
|
||
CVE_PERSP_TRANS_CSC_MODE_VIDEO_BT601_YUV2RGB = 0x1, /* CSC:YUV2RGB,video transfer mode,
|
||
RGB value range[16,235] */
|
||
CVE_PERSP_TRANS_CSC_MODE_VIDEO_BT709_YUV2RGB = 0x2, /* CSC:YUV2RGB,video transfer mode,
|
||
RGB value range[16,235] */
|
||
CVE_PERSP_TRANS_CSC_MODE_PIC_BT601_YUV2RGB = 0x3, /* CSC:YUV2RGB,picture transfer mode,
|
||
RGB value range[0,255] */
|
||
CVE_PERSP_TRANS_CSC_MODE_PIC_BT709_YUV2RGB = 0x4, /* CSC:YUV2RGB,picture transfer mode,
|
||
RGB value range[0,255] */
|
||
|
||
CVE_PERSP_TRANS_CSC_MODE_BUTT
|
||
} CVE_PERSP_TRANS_CSC_MODE_E;
|
||
|
||
/* Perspective transform ctrl */
|
||
typedef struct {
|
||
CVE_PERSP_TRANS_ALG_MODE_E enAlgMode; /* ALG mode */
|
||
CVE_PERSP_TRANS_CSC_MODE_E enCscMode; /* CSC mode */
|
||
AML_U16 u16RoiNum; /* Roi num */
|
||
AML_U16 u16PointPairNum; /* Point pair num */
|
||
} CVE_PERSP_TRANS_CTRL_T;
|
||
|
||
/* ROI info */
|
||
typedef struct {
|
||
CVE_RECT_S24Q8_T stRoi;
|
||
AML_U32 u32RoiId;
|
||
} CVE_ROI_INFO_T;
|
||
|
||
/* Tof fpn mode */
|
||
typedef enum {
|
||
CVE_TOF_FPN_MODE_BYPASS = 0x0,
|
||
CVE_TOF_FPN_MODE_FPN = 0x1,
|
||
CVE_TOF_FPN_MODE_FD = 0x2,
|
||
|
||
CVE_TOF_FPN_MODE_BUTT
|
||
} CVE_TOF_FPN_MODE_E;
|
||
|
||
/* Control parameter of the Tof */
|
||
typedef struct {
|
||
CVE_RAW_MODE_E enRawMode;
|
||
CVE_TOF_FPN_MODE_E enFpnMode;
|
||
AML_BOOL_E bRawShift;
|
||
AML_BOOL_E bBypass;
|
||
AML_BOOL_E bSpa1En;
|
||
AML_BOOL_E bSpa2En;
|
||
AML_S21Q3 as32PCoef[5];
|
||
AML_S16 as16TCoef1[4];
|
||
AML_U16 u16HistXstart;
|
||
AML_U16 u16HistYstart;
|
||
AML_U16 u16HistXend;
|
||
AML_U16 u16HistYend;
|
||
AML_U16 u16Q1HighThr;
|
||
AML_U16 u16Q23HighThr;
|
||
AML_U16 u16IRHighThr;
|
||
AML_U16 u16IRLowThr;
|
||
AML_U16 u16DepthMax;
|
||
AML_U16 u16DepthMin;
|
||
AML_U8 u8SpaNorm;
|
||
AML_U8 u8BadPointNum;
|
||
AML_S8 s8IntTemp;
|
||
AML_S8 s8ExtTemp;
|
||
} CVE_TOF_CTRL_T;
|
||
|
||
#endif /* __AML_CVE_H__ */
|