/* * Copyright (c) XMEDIA. All rights reserved. */ #ifndef _COMM_IVE_H_ #define _COMM_IVE_H_ #include "common.h" #include "xmedia_type.h" #include "xmedia_errcode.h" #ifdef __cplusplus #if __cplusplus extern "C" { #endif #endif #define XMEDIA_IVE_HIST_NUM 256 #define XMEDIA_IVE_MAP_NUM 256 #define XMEDIA_IVE_MAX_REGION_NUM 254 #define XMEDIA_IVE_ST_MAX_CORNER_NUM 500 #define XMEDIA_IVE_INVALID_HANDLE (-1) typedef xmedia_s32 xmedia_ive_handle; /* -----------------------------------------------* * The fixed-point data type, will be used to * * represent float data in hardware calculations. linux code style.* * ----------------------------------------------- */ /* --u8bit---------------------------------------- */ typedef xmedia_u8 xmedia_u0q8; typedef xmedia_u8 xmedia_u1q7; typedef xmedia_u8 xmedia_u5q3; typedef xmedia_u8 xmedia_u3q5; /* --u16bit--------------------------------------- */ typedef xmedia_u16 xmedia_u0q16; typedef xmedia_u16 xmedia_u4q12; typedef xmedia_u16 xmedia_u6q10; typedef xmedia_u16 xmedia_u8q8; typedef xmedia_u16 xmedia_u9q7; typedef xmedia_u16 xmedia_u12q4; typedef xmedia_u16 xmedia_u14q2; typedef xmedia_u16 xmedia_u5q11; typedef xmedia_u16 xmedia_u1q15; typedef xmedia_u16 xmedia_u2q14; typedef xmedia_u16 xmedia_ufp16; /* 8bits unsigned integer,4bits decimal fraction,4bits flag_bits */ typedef xmedia_u16 xmedia_u8q4f4; /* --s16bit--------------------------------------- */ typedef xmedia_s16 xmedia_s9q7; typedef xmedia_s16 xmedia_s14q2; typedef xmedia_s16 xmedia_s1q15; /* --u32bit--------------------------------------- */ typedef xmedia_u32 xmedia_u22q10; typedef xmedia_u32 xmedia_u25q7; typedef xmedia_u32 xmedia_u21q11; typedef xmedia_u32 xmedia_u14q18; typedef xmedia_u32 xmedia_u8q24; typedef xmedia_u32 xmedia_u4q28; /* --s32bit--------------------------------------- */ typedef xmedia_s32 xmedia_s25q7; typedef xmedia_s32 xmedia_s16q16; typedef xmedia_s32 xmedia_s14q18; typedef xmedia_s32 xmedia_s20q12; typedef xmedia_s32 xmedia_s24q8; typedef enum xmedia_ive_image_type_e { XMEDIA_IVE_IMAGE_TYPE_U8C1 = 0x0, XMEDIA_IVE_IMAGE_TYPE_S8C1 = 0x1, XMEDIA_IVE_IMAGE_TYPE_YUV420SP = 0x2, XMEDIA_IVE_IMAGE_TYPE_YUV422SP = 0x3, XMEDIA_IVE_IMAGE_TYPE_YUV420P = 0x4, XMEDIA_IVE_IMAGE_TYPE_YUV422P = 0x5, XMEDIA_IVE_IMAGE_TYPE_S8C2_PACKAGE = 0x6, XMEDIA_IVE_IMAGE_TYPE_S8C2_PLANAR = 0x7, XMEDIA_IVE_IMAGE_TYPE_S16C1 = 0x8, XMEDIA_IVE_IMAGE_TYPE_U16C1 = 0x9, XMEDIA_IVE_IMAGE_TYPE_U8C3_PACKAGE = 0xa, XMEDIA_IVE_IMAGE_TYPE_U8C3_PLANAR = 0xb, XMEDIA_IVE_IMAGE_TYPE_S32C1 = 0xc, XMEDIA_IVE_IMAGE_TYPE_U32C1 = 0xd, XMEDIA_IVE_IMAGE_TYPE_S64C1 = 0xe, XMEDIA_IVE_IMAGE_TYPE_U64C1 = 0xf, XMEDIA_IVE_IMAGE_TYPE_BUTT } xmedia_ive_image_type_e; typedef struct xmedia_ive_image_s { xmedia_u64 au64phyaddr[3]; xmedia_u64 au64viraddr[3]; xmedia_u32 au32stride[3]; xmedia_u32 u32width; xmedia_u32 u32height; xmedia_ive_image_type_e en_type; } xmedia_ive_image_s; typedef xmedia_ive_image_s xmedia_ive_src_image_s; typedef xmedia_ive_image_s xmedia_ive_dst_image_s; typedef struct xmedia_ive_mem_info_s { xmedia_u64 u64phyaddr; xmedia_u64 u64viraddr; xmedia_u32 u32size; } xmedia_ive_mem_info_s; typedef xmedia_ive_mem_info_s xmedia_ive_src_mem_info_s; typedef xmedia_ive_mem_info_s xmedia_ive_dst_mem_info_s; typedef struct xmedia_ive_data_s { xmedia_u64 u64phyaddr; xmedia_u64 u64viraddr; xmedia_u32 u32stride; xmedia_u32 u32width; xmedia_u32 u32height; xmedia_u32 u32reserved; } xmedia_ive_data_s; typedef xmedia_ive_data_s xmedia_ive_src_data_s; typedef xmedia_ive_data_s xmedia_ive_dst_data_s; typedef union xmedia_ive_8bit_u { xmedia_s8 s8val; xmedia_u8 u8val; } xmedia_ive_8bit_u; typedef struct xmedia_ive_point_u16_s { xmedia_u16 u16x; xmedia_u16 u16y; } xmedia_ive_point_u16_s; typedef struct xmedia_ive_point_s16_s { xmedia_u16 s16x; xmedia_u16 s16y; } xmedia_ive_point_s16_s; typedef struct xmedia_ive_point_s25q7_s { xmedia_s25q7 s25q7x; xmedia_s25q7 s25q7y; } xmedia_ive_point_s25q7_s; typedef struct xmedia_ive_point_u14q2_s { xmedia_u14q2 u14q2x; xmedia_u14q2 u14q2y; } xmedia_ive_point_u14q2_s; typedef struct xmedia_ive_rect_u16_s { xmedia_u16 u16x; xmedia_u16 u16y; xmedia_u16 u16width; xmedia_u16 u16height; } xmedia_ive_rect_u16_s; typedef struct xmedia_ive_rect_u32_s { xmedia_u32 u32x; xmedia_u32 u32y; xmedia_u32 u32width; xmedia_u32 u32height; } xmedia_ive_rect_u32_s; typedef struct xmedia_ive_rect_s24q8_s { xmedia_s24q8 s24q8X; xmedia_s24q8 s24q8Y; xmedia_u32 u32width; xmedia_u32 u32height; } xmedia_ive_rect_s24q8_s; typedef struct xmedia_ive_look_up_table_s { xmedia_ive_mem_info_s sttable; xmedia_u16 u16elemnum; xmedia_u8 u8tabinpreci; xmedia_u8 u8taboutnorm; xmedia_s32 s32tabinlower; xmedia_s32 s32tabinupper; } xmedia_ive_look_up_table_s; typedef enum xmedia_ive_blob_type_e { XMEDIA_IVE_BLOB_TYPE_S32 = 0x0, XMEDIA_IVE_BLOB_TYPE_U8 = 0x1, XMEDIA_IVE_BLOB_TYPE_YVU420SP = 0x2, XMEDIA_IVE_BLOB_TYPE_YVU422SP = 0x3, XMEDIA_IVE_BLOB_TYPE_VEC_S32 = 0x4, XMEDIA_IVE_BLOB_TYPE_SEQ_S32 = 0x5, XMEDIA_IVE_BLOB_TYPE_U16 = 0x6, XMEDIA_IVE_BLOB_TYPE_S8 = 0x7, XMEDIA_IVE_BLOB_TYPE_F32 = 0x8, XMEDIA_IVE_BLOB_TYPE_BUTT } xmedia_ive_blob_type_e; typedef struct xmedia_ive_blob_s { xmedia_ive_blob_type_e en_type; xmedia_u32 u32stride; xmedia_u64 u64viraddr; xmedia_u64 u64phyaddr; xmedia_u32 u32_num; union { struct { xmedia_u32 u32width; xmedia_u32 u32height; xmedia_u32 u32chn; } stWhc; struct { xmedia_u32 u32dim; xmedia_u64 u64viraddrstep; } stseq; } unshape; } xmedia_ive_blob_s; typedef xmedia_ive_blob_s xmedia_ive_src_blob_s; typedef xmedia_ive_blob_s xmedia_ive_dst_blob_s; typedef enum xmedia_en_ive_err_code_e { XMEDIA_IVE_ERR_SYS_TIMEOUT = 0x40, XMEDIA_IVE_ERR_QUERY_TIMEOUT = 0x41, XMEDIA_IVE_ERR_OPEN_FILE = 0x42, XMEDIA_IVE_ERR_READ_FILE = 0x43, XMEDIA_IVE_ERR_WRITE_FILE = 0x44, XMEDIA_IVE_ERR_BUS_ERR = 0x45, XMEDIA_IVE_ERR_BUTT } xmedia_en_ive_err_code_e; typedef enum xmedia_en_fd_err_code_e { XMEDIA_IVE_ERR_FD_SYS_TIMEOUT = 0x40, XMEDIA_IVE_ERR_FD_CFG = 0x41, XMEDIA_IVE_ERR_FD_FACE_NUM_OVER = 0x42, XMEDIA_IVE_ERR_FD_OPEN_FILE = 0x43, XMEDIA_IVE_ERR_FD_READ_FILE = 0x44, XMEDIA_IVE_ERR_FD_WRITE_FILE = 0x45, XMEDIA_IVE_ERR_FD_BUTT } xmedia_en_fd_err_code_e; /************************************************IVE error code ***********************************/ /* Invalid device ID */ #define ERR_CODE_IVE_INVALID_DEVID XMEDIA_ERRCODE_INVALID_DEV_ID /* Invalid channel ID */ #define ERR_CODE_IVE_INVALID_CHNID XMEDIA_ERRCODE_INVALID_CHN_ID /* At least one parameter is illegal. For example, an illegal enumeration value exists. */ #define ERR_CODE_IVE_ILLEGAL_PARAM XMEDIA_ERRCODE_INVALID_PARAM /* The channel exists. */ #define ERR_CODE_IVE_EXIST XMEDIA_ERRCODE_EXIST /* The UN exists. */ #define ERR_CODE_IVE_UNEXIST XMEDIA_ERRCODE_NOT_EXIST /* A null point is used. */ #define ERR_CODE_IVE_NULL_PTR XMEDIA_ERRCODE_NULL_PTR /* Try to enable or initialize the system, device, or channel before configuring attributes. */ #define ERR_CODE_IVE_NOT_CONFIG XMEDIA_ERRCODE_NOT_CONFIG /* The operation is not supported currently. */ #define ERR_CODE_IVE_NOT_SURPPORT XMEDIA_ERRCODE_NOT_SUPPORT /* The operation, changing static attributes for example, is not permitted. */ #define ERR_CODE_IVE_NOT_PERM XMEDIA_ERRCODE_NOT_PERMITTED /* A failure caused by the malloc memory occurs. */ #define ERR_CODE_IVE_NOMEM XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY /* A failure caused by the malloc buffer occurs. */ #define ERR_CODE_IVE_NOBUF XMEDIA_ERRCODE_NO_BUFFER_FREE /* The buffer is empty. */ #define ERR_CODE_IVE_BUF_EMPTY XMEDIA_ERRCODE_BUFFER_EMPTY /* No buffer is provided for storing new data. */ #define ERR_CODE_IVE_BUF_FULL XMEDIA_ERRCODE_BUFFER_FULL /* The system is not ready because it may be not initialized or loaded. * The error code is returned when a device file fails to be opened. */ #define ERR_CODE_IVE_NOTREADY XMEDIA_ERRCODE_NOT_READY /* The source address or target address is incorrect during the operations such as calling copy_from_user or copy_to_user. */ #define ERR_CODE_IVE_BADADDR XMEDIA_ERRCODE_BAD_ADDRESS /* The resource is busy during the operations such as destroying a VENC channel without deregistering it. */ #define ERR_CODE_IVE_BUSY XMEDIA_ERRCODE_BUSY /* IVE process timeout: 0xA01D8040 */ #define ERR_CODE_IVE_SYS_TIMEOUT XMEDIA_ERRCODE_TIMEOUT /* IVE query timeout: 0xA01D8041 */ #define ERR_CODE_IVE_QUERY_TIMEOUT XMEDIA_ERRCODE_TIMEOUT /* IVE open file error: 0xA01D8042 */ #define ERR_CODE_IVE_OPEN_FILE XMEDIA_ERRCODE_OPEN_FAILED /* IVE read file error: 0xA01D8043 */ #define ERR_CODE_IVE_READ_FILE XMEDIA_ERRCODE_COPY_DATA_ERROR /* IVE read file error: 0xA01D8044 */ #define ERR_CODE_IVE_WRITE_FILE XMEDIA_ERRCODE_COPY_DATA_ERROR /* IVE Bus error: 0xA01D8045 */ #define ERR_CODE_IVE_BUS_ERR XMEDIA_ERRCODE_NOT_READY /************************************************FD error code ***********************************/ /* Invalid device ID */ #define ERR_CODE_FD_INVALID_DEVID XMEDIA_ERRCODE_INVALID_DEV_ID /* Invalid channel ID */ #define ERR_CODE_FD_INVALID_CHNID XMEDIA_ERRCODE_INVALID_CHN_ID /* At least one parameter is illegal. For example, an illegal enumeration value exists. */ #define ERR_CODE_FD_ILLEGAL_PARAM XMEDIA_ERRCODE_INVALID_PARAM /* The channel exists. */ #define ERR_CODE_FD_EXIST XMEDIA_ERRCODE_EXIST /* The UN exists. */ #define ERR_CODE_FD_UNEXIST XMEDIA_ERRCODE_NOT_EXIST /* A null point is used. */ #define ERR_CODE_FD_NULL_PTR XMEDIA_ERRCODE_NULL_PTR /* Try to enable or initialize the system, device, or channel before configuring attributes. */ #define ERR_CODE_FD_NOT_CONFIG XMEDIA_ERRCODE_NOT_CONFIG /* The operation is not supported currently. */ #define ERR_CODE_FD_NOT_SURPPORT XMEDIA_ERRCODE_NOT_SUPPORT /* The operation, changing static attributes for example, is not permitted. */ #define ERR_CODE_FD_NOT_PERM XMEDIA_ERRCODE_NOT_PERMITTED /* A failure caused by the malloc memory occurs. */ #define ERR_CODE_FD_NOMEM XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY /* A failure caused by the malloc buffer occurs. */ #define ERR_CODE_FD_NOBUF XMEDIA_ERRCODE_NO_BUFFER_FREE /* The buffer is empty. */ #define ERR_CODE_FD_BUF_EMPTY XMEDIA_ERRCODE_BUFFER_EMPTY /* No buffer is provided for storing new data. */ #define ERR_CODE_FD_BUF_FULL XMEDIA_ERRCODE_BUFFER_FULL /* The system is not ready because it may be not initialized or loaded. * The error code is returned when a device file fails to be opened. */ #define ERR_CODE_FD_NOTREADY XMEDIA_ERRCODE_NOT_READY /* The source address or target address is incorrect during the operations such as calling copy_from_user or copy_to_user. */ #define ERR_CODE_FD_BADADDR XMEDIA_ERRCODE_BAD_ADDRESS /* The resource is busy during the operations such as destroying a VENC channel without deregistering it. */ #define ERR_CODE_FD_BUSY XMEDIA_ERRCODE_BUSY /* FD process timeout*/ #define ERR_CODE_FD_SYS_TIMEOUT XMEDIA_ERRCODE_TIMEOUT /* FD configuration error*/ #define ERR_CODE_FD_CFG XMEDIA_ERRCODE_INVALID_PARAM /* FD candidate face number over*/ #define ERR_CODE_FD_FACE_NUM_OVER XMEDIA_ERRCODE_INVALID_PARAM /* FD open file error*/ #define ERR_CODE_FD_OPEN_FILE XMEDIA_ERRCODE_OPEN_FAILED /* FD read file error*/ #define ERR_CODE_FD_READ_FILE XMEDIA_ERRCODE_COPY_DATA_ERROR /* FD read file error*/ #define ERR_CODE_FD_WRITE_FILE XMEDIA_ERRCODE_COPY_DATA_ERROR /************************************************ODT error code ***********************************/ /* ODT Invalid channel ID*/ #define ERR_CODE_ODT_INVALID_CHNID XMEDIA_ERRCODE_INVALID_CHN_ID /* ODT exist*/ #define ERR_CODE_ODT_EXIST XMEDIA_ERRCODE_EXIST /* ODT unexist*/ #define ERR_CODE_ODT_UNEXIST XMEDIA_ERRCODE_NOT_EXIST /* ODT The operation, changing static attributes for example, is not permitted*/ #define ERR_CODE_ODT_NOT_PERM XMEDIA_ERRCODE_NOT_PERMITTED /* ODT the system is not ready because it may be not initialized*/ #define ERR_CODE_ODT_NOTREADY XMEDIA_ERRCODE_NOT_READY /* ODT busy*/ #define ERR_CODE_ODT_BUSY XMEDIA_ERRCODE_BUSY typedef enum xmedia_ive_resize_csc_letterbox_op_mode_e { XMEDIA_IVE_RCL_OP_MODE_CSC_ONLY = 0, XMEDIA_IVE_RCL_OP_MODE_RESIZE_LETTERBOX_ONLY = 1, XMEDIA_IVE_RCL_OP_MODE_RESIZE_CSC_LETTERBOX = 2, } xmedia_ive_resize_csc_letterbox_op_mode_e; typedef enum xmedia_ive_resize_csc_letterbox_csc_mode_e { XMEDIA_IVE_RCL_CSC_MODE_VIDEO_BT601_YUV2RGB = 0x0, /* CSC: YUV2RGB, video transfer mode, RGB value range [16, 235] */ XMEDIA_IVE_RCL_CSC_MODE_VIDEO_BT709_YUV2RGB = 0x1, /* CSC: YUV2RGB, video transfer mode, RGB value range [16, 235] */ XMEDIA_IVE_RCL_CSC_MODE_PIC_BT601_YUV2RGB = 0x2, /* CSC: YUV2RGB, picture transfer mode, RGB value range [0, 255] */ XMEDIA_IVE_RCL_CSC_MODE_PIC_BT709_YUV2RGB = 0x3, /* CSC: YUV2RGB, picture transfer mode, RGB value range [0, 255] */ } xmedia_ive_resize_csc_letterbox_csc_mode_e; typedef struct xmedia_ive_resize_csc_letterbox_ctrl_s { xmedia_ive_resize_csc_letterbox_op_mode_e op_mode; xmedia_ive_resize_csc_letterbox_csc_mode_e csc_mode; xmedia_u16 u16_top_padding_len; xmedia_u16 u16_bottom_padding_len; xmedia_u16 u16_left_padding_len; xmedia_u16 u16_right_padding_len; xmedia_u8 u8_letterbox_value; } xmedia_ive_resize_csc_letterbox_ctrl_s; typedef enum xmedia_ive_dma_mode_e { XMEDIA_IVE_DMA_MODE_DIRECT_COPY = 0x0, XMEDIA_IVE_DMA_MODE_INTERVAL_COPY = 0x1, XMEDIA_IVE_DMA_MODE_SET_3BYTE = 0x2, XMEDIA_IVE_DMA_MODE_SET_8BYTE = 0x3, XMEDIA_IVE_DMA_MODE_BUTT } xmedia_ive_dma_mode_e; typedef struct xmedia_ive_dma_ctrl_s { xmedia_ive_dma_mode_e en_mode; xmedia_u64 u64_val; xmedia_u8 u8_hor_seg_size; xmedia_u8 u8_elem_size; xmedia_u16 u16_ver_seg_rows; } xmedia_ive_dma_ctrl_s; typedef struct xmedia_ive_filter_ctrl_s { xmedia_s8 as8_mask[25]; xmedia_u8 u8_norm; } xmedia_ive_filter_ctrl_s; typedef enum xmedia_ive_csc_mode_e { XMEDIA_IVE_CSC_MODE_VIDEO_BT601_YUV2RGB = 0x0, XMEDIA_IVE_CSC_MODE_VIDEO_BT709_YUV2RGB = 0x1, XMEDIA_IVE_CSC_MODE_PIC_BT601_YUV2RGB = 0x2, XMEDIA_IVE_CSC_MODE_PIC_BT709_YUV2RGB = 0x3, XMEDIA_IVE_CSC_MODE_PIC_BT601_YUV2HSV = 0x4, XMEDIA_IVE_CSC_MODE_PIC_BT709_YUV2HSV = 0x5, XMEDIA_IVE_CSC_MODE_PIC_BT601_YUV2LAB = 0x6, XMEDIA_IVE_CSC_MODE_PIC_BT709_YUV2LAB = 0x7, XMEDIA_IVE_CSC_MODE_VIDEO_BT601_RGB2YUV = 0x8, XMEDIA_IVE_CSC_MODE_VIDEO_BT709_RGB2YUV = 0x9, XMEDIA_IVE_CSC_MODE_PIC_BT601_RGB2YUV = 0xa, XMEDIA_IVE_CSC_MODE_PIC_BT709_RGB2YUV = 0xb, XMEDIA_IVE_CSC_MODE_BUTT } xmedia_ive_csc_mode_e; typedef struct xmedia_ive_csc_ctrl_s { xmedia_ive_csc_mode_e en_mode; } xmedia_ive_csc_ctrl_s; typedef struct xmedia_ive_filter_and_csc_ctrl_s { xmedia_ive_csc_mode_e en_mode; xmedia_s8 as8_mask[25]; xmedia_u8 u8_norm; } xmedia_ive_filter_and_csc_ctrl_s; typedef enum xmedia_ive_sobel_out_ctrl_e { XMEDIA_IVE_SOBEL_OUT_CTRL_BOTH = 0x0, XMEDIA_IVE_SOBEL_OUT_CTRL_HOR = 0x1, XMEDIA_IVE_SOBEL_OUT_CTRL_VER = 0x2, XMEDIA_IVE_SOBEL_OUT_CTRL_BUTT } xmedia_ive_sobel_out_ctrl_e; typedef struct xmedia_ive_sobel_ctrl_s { xmedia_ive_sobel_out_ctrl_e en_out_ctrl; xmedia_s8 as8_mask[25]; } xmedia_ive_sobel_ctrl_s; typedef enum xmedia_ive_mag_and_ang_out_ctrl_e { XMEDIA_IVE_MAG_AND_ANG_OUT_CTRL_MAG = 0x0, XMEDIA_IVE_MAG_AND_ANG_OUT_CTRL_MAG_AND_ANG = 0x1, XMEDIA_IVE_MAG_AND_ANG_OUT_CTRL_BUTT } xmedia_ive_mag_and_ang_out_ctrl_e; typedef struct xmedia_ive_mag_and_ang_ctrl_s { xmedia_ive_mag_and_ang_out_ctrl_e en_out_ctrl; xmedia_u16 u16_thr; xmedia_s8 as8_mask[25]; } xmedia_ive_mag_and_ang_ctrl_s; typedef struct xmedia_ive_dilate_ctrl_s { xmedia_u8 au8_mask[25]; } xmedia_ive_dilate_ctrl_s; typedef struct xmedia_ive_erode_ctrl_s { xmedia_u8 au8_mask[25]; } xmedia_ive_erode_ctrl_s; typedef enum xmedia_ive_thresh_mode_e { XMEDIA_IVE_THRESH_MODE_BINARY = 0x0, XMEDIA_IVE_THRESH_MODE_TRUNC = 0x1, XMEDIA_IVE_THRESH_MODE_TO_MINVAL = 0x2, XMEDIA_IVE_THRESH_MODE_MIN_MID_MAX = 0x3, XMEDIA_IVE_THRESH_MODE_ORI_MID_MAX = 0x4, XMEDIA_IVE_THRESH_MODE_MIN_MID_ORI = 0x5, XMEDIA_IVE_THRESH_MODE_MIN_ORI_MAX = 0x6, XMEDIA_IVE_THRESH_MODE_ORI_MID_ORI = 0x7, XMEDIA_IVE_THRESH_MODE_BUTT } xmedia_ive_thresh_mode_e; typedef struct xmedia_ive_thresh_ctrl_s { xmedia_ive_thresh_mode_e en_mode; xmedia_u8 u8_low_thr; xmedia_u8 u8_high_thr; xmedia_u8 u8_min_val; xmedia_u8 u8_mid_val; xmedia_u8 u8_max_val; } xmedia_ive_thresh_ctrl_s; typedef enum xmedia_ive_sub_mode_e { XMEDIA_IVE_SUB_MODE_ABS = 0x0, XMEDIA_IVE_SUB_MODE_SHIFT = 0x1, XMEDIA_IVE_SUB_MODE_BUTT } xmedia_ive_sub_mode_e; typedef struct xmedia_ive_sub_ctrl_s { xmedia_ive_sub_mode_e en_mode; } xmedia_ive_sub_ctrl_s; typedef enum xmedia_ive_integ_out_ctrl_e { XMEDIA_IVE_INTEG_OUT_CTRL_COMBINE = 0x0, XMEDIA_IVE_INTEG_OUT_CTRL_SUM = 0x1, XMEDIA_IVE_INTEG_OUT_CTRL_SQSUM = 0x2, XMEDIA_IVE_INTEG_OUT_CTRL_BUTT } xmedia_ive_integ_out_ctrl_e; typedef struct xmedia_ive_integ_ctrl_s { xmedia_ive_integ_out_ctrl_e en_out_ctrl; } xmedia_ive_integ_ctrl_s; typedef enum xmedia_ive_thresh_s16_mode_e { XMEDIA_IVE_THRESH_S16_MODE_S16_TO_S8_MIN_MID_MAX = 0x0, XMEDIA_IVE_THRESH_S16_MODE_S16_TO_S8_MIN_ORI_MAX = 0x1, XMEDIA_IVE_THRESH_S16_MODE_S16_TO_U8_MIN_MID_MAX = 0x2, XMEDIA_IVE_THRESH_S16_MODE_S16_TO_U8_MIN_ORI_MAX = 0x3, XMEDIA_IVE_THRESH_S16_MODE_BUTT } xmedia_ive_thresh_s16_mode_e; typedef struct xmedia_ive_thresh_s16_ctrl_s { xmedia_ive_thresh_s16_mode_e en_mode; xmedia_s16 s16_low_thr; xmedia_s16 s16_high_thr; xmedia_ive_8bit_u un8_min_val; xmedia_ive_8bit_u un8_mid_val; xmedia_ive_8bit_u un8_max_val; } xmedia_ive_thresh_s16_ctrl_s; typedef enum xmedia_ive_thresh_u16_mode_e { XMEDIA_IVE_THRESH_U16_MODE_U16_TO_U8_MIN_MID_MAX = 0x0, XMEDIA_IVE_THRESH_U16_MODE_U16_TO_U8_MIN_ORI_MAX = 0x1, XMEDIA_IVE_THRESH_U16_MODE_BUTT } xmedia_ive_thresh_u16_mode_e; typedef struct xmedia_ive_thresh_u16_ctrl_s { xmedia_ive_thresh_u16_mode_e en_mode; xmedia_u16 u16_low_thr; xmedia_u16 u16_high_thr; xmedia_u8 u8_min_val; xmedia_u8 u8_mid_val; xmedia_u8 u8_max_val; } xmedia_ive_thresh_u16_ctrl_s; typedef enum xmedia_ive_16bit_to_8bit_mode_e { XMEDIA_IVE_16BIT_TO_8BIT_MODE_S16_TO_S8 = 0x0, XMEDIA_IVE_16BIT_TO_8BIT_MODE_S16_TO_U8_ABS = 0x1, XMEDIA_IVE_16BIT_TO_8BIT_MODE_S16_TO_U8_BIAS = 0x2, XMEDIA_IVE_16BIT_TO_8BIT_MODE_U16_TO_U8 = 0x3, XMEDIA_IVE_16BIT_TO_8BIT_MODE_BUTT } xmedia_ive_16bit_to_8bit_mode_e; typedef struct xmedia_ive_16bit_to_8bit_ctrl_s { xmedia_ive_16bit_to_8bit_mode_e en_mode; xmedia_u16 u16_denominator; xmedia_u8 u8_numerator; xmedia_s8 s8_bias; } xmedia_ive_16bit_to_8bit_ctrl_s; typedef enum xmedia_ive_ord_stat_filter_mode_e { XMEDIA_IVE_ORD_STAT_FILTER_MODE_MEDIAN = 0x0, XMEDIA_IVE_ORD_STAT_FILTER_MODE_MAX = 0x1, XMEDIA_IVE_ORD_STAT_FILTER_MODE_MIN = 0x2, XMEDIA_IVE_ORD_STAT_FILTER_MODE_BUTT } xmedia_ive_ord_stat_filter_mode_e; typedef struct xmedia_ive_ord_stat_filter_ctrl_s { xmedia_ive_ord_stat_filter_mode_e en_mode; } xmedia_ive_ord_stat_filter_ctrl_s; typedef enum xmedia_ive_map_mode_e { XMEDIA_IVE_MAP_MODE_U8 = 0x0, XMEDIA_IVE_MAP_MODE_S16 = 0x1, XMEDIA_IVE_MAP_MODE_U16 = 0x2, XMEDIA_IVE_MAP_MODE_BUTT } xmedia_ive_map_mode_e; typedef struct xmedia_ive_map_ctrl_s { xmedia_ive_map_mode_e en_mode; } xmedia_ive_map_ctrl_s; typedef struct xmedia_ive_map_u8bit_lut_mem_s { xmedia_u8 au8_map[XMEDIA_IVE_MAP_NUM]; } xmedia_ive_map_u8bit_lut_mem_s; typedef struct xmedia_ive_map_u16bit_lut_mem_s { xmedia_u16 au16_map[XMEDIA_IVE_MAP_NUM]; } xmedia_ive_map_u16bit_lut_mem_s; typedef struct xmedia_ive_map_s16bit_lut_mem_s { xmedia_s16 as16_map[XMEDIA_IVE_MAP_NUM]; } xmedia_ive_map_s16bit_lut_mem_s; typedef struct xmedia_ive_equalize_hist_ctrl_mem_s { xmedia_u32 au32_hist[XMEDIA_IVE_HIST_NUM]; xmedia_u8 au8_map[XMEDIA_IVE_MAP_NUM]; } xmedia_ive_equalize_hist_ctrl_mem_s; typedef struct xmedia_ive_equalize_hist_ctrl_s { xmedia_ive_mem_info_s stmem; } xmedia_ive_equalize_hist_ctrl_s; typedef struct xmedia_ive_add_ctrl_s { xmedia_u0q16 u0q16x; xmedia_u0q16 u0q16y; } xmedia_ive_add_ctrl_s; typedef enum xmedia_ive_acc_mode_e { XMEDIA_IVE_ACC_MODE_NO_USE_MASK = 0x0, XMEDIA_IVE_ACC_MODE_USE_MASK = 0x1, XMEDIA_IVE_ACC_MODE_BUTT } xmedia_ive_acc_mode_e; typedef struct xmedia_ive_acc_ctrl_s { xmedia_ive_acc_mode_e mode; xmedia_u16 mask[4]; } xmedia_ive_acc_ctrl_s; typedef struct xmedia_ive_ncc_dst_mem_s { xmedia_u64 u64_numerator; xmedia_u64 u64_quad_sum1; xmedia_u64 u64_quad_sum2; xmedia_u8 u8_reserved[8]; } xmedia_ive_ncc_dst_mem_s; typedef struct xmedia_ive_region_s { xmedia_u32 u32_area; xmedia_u16 u16_left; xmedia_u16 u16_right; xmedia_u16 u16_top; xmedia_u16 u16_bottom; } xmedia_ive_region_s; typedef struct xmedia_ive_ccblob_s { xmedia_u16 u16_cur_area_thr; xmedia_s8 s8_label_status; xmedia_u8 u8_region_num; xmedia_ive_region_s ast_region[XMEDIA_IVE_MAX_REGION_NUM]; } xmedia_ive_ccblob_s; typedef enum xmedia_ive_ccl_mode_e { XMEDIA_IVE_CCL_MODE_4C = 0x0, XMEDIA_IVE_CCL_MODE_8C = 0x1, XMEDIA_IVE_CCL_MODE_BUTT } xmedia_ive_ccl_mode_e; typedef struct xmedia_ive_ccl_ctrl_s { xmedia_ive_ccl_mode_e en_mode; xmedia_u16 u16_init_area_thr; xmedia_u16 u16_step; } xmedia_ive_ccl_ctrl_s; typedef struct xmedia_ive_gmm_ctrl_s { xmedia_u22q10 u22q10_noise_var; xmedia_u22q10 u22q10_max_var; xmedia_u22q10 u22q10_min_var; xmedia_u0q16 u0q16_learn_rate; xmedia_u0q16 u0q16_bg_ratio; xmedia_u8q8 u8q8_var_thr; xmedia_u0q16 u0q16_init_weight; xmedia_u8 u8_model_num; } xmedia_ive_gmm_ctrl_s; typedef enum xmedia_ive_gmm2_sns_factor_mode_e { XMEDIA_IVE_GMM2_SNS_FACTOR_MODE_GLB = 0x0, XMEDIA_IVE_GMM2_SNS_FACTOR_MODE_PIX = 0x1, XMEDIA_IVE_GMM2_SNS_FACTOR_MODE_BUTT } xmedia_ive_gmm2_sns_factor_mode_e; typedef enum xmedia_ive_gmm2_life_update_factor_mode_e { XMEDIA_IVE_GMM2_LIFE_UPDATE_FACTOR_MODE_GLB = 0x0, XMEDIA_IVE_GMM2_LIFE_UPDATE_FACTOR_MODE_PIX = 0x1, XMEDIA_IVE_GMM2_LIFE_UPDATE_FACTOR_MODE_BUTT } xmedia_ive_gmm2_life_update_factor_mode_e; typedef struct xmedia_ive_gmm2_ctrl_s { xmedia_ive_gmm2_sns_factor_mode_e en_sns_factor_mode; xmedia_ive_gmm2_life_update_factor_mode_e en_life_update_factor_mode; xmedia_u16 u16_glb_life_update_factor; xmedia_u16 u16_life_thr; xmedia_u16 u16_freq_init_val; xmedia_u16 u16_freq_redu_factor; xmedia_u16 u16_freq_add_factor; xmedia_u16 u16_freq_thr; xmedia_u16 u16_var_rate; xmedia_u9q7 u9q7_max_var; xmedia_u9q7 u9q7_min_var; xmedia_u8 u8_glb_sns_factor; xmedia_u8 u8_model_num; } xmedia_ive_gmm2_ctrl_s; typedef struct xmedia_ive_canny_hys_edge_ctrl_s { xmedia_ive_mem_info_s stmem; xmedia_u16 u16_low_thr; xmedia_u16 u16_high_thr; xmedia_s8 as8_mask[25]; } xmedia_ive_canny_hys_edge_ctrl_s; typedef struct xmedia_ive_canny_stack_size_s { xmedia_u32 u32StackSize; xmedia_u8 u8_reserved[12]; } xmedia_ive_canny_stack_size_s; typedef enum xmedia_ive_lbp_cmp_mode_e { XMEDIA_IVE_LBP_CMP_MODE_NORMAL = 0x0, XMEDIA_IVE_LBP_CMP_MODE_ABS = 0x1, XMEDIA_IVE_LBP_CMP_MODE_BUTT } xmedia_ive_lbp_cmp_mode_e; typedef struct xmedia_ive_lbp_ctrl_s { xmedia_ive_lbp_cmp_mode_e en_mode; xmedia_ive_8bit_u un8_bit_thr; } xmedia_ive_lbp_ctrl_s; typedef enum xmedia_ive_norm_grad_out_ctrl_e { XMEDIA_IVE_NORM_GRAD_OUT_CTRL_HOR_AND_VER = 0x0, XMEDIA_IVE_NORM_GRAD_OUT_CTRL_HOR = 0x1, XMEDIA_IVE_NORM_GRAD_OUT_CTRL_VER = 0x2, XMEDIA_IVE_NORM_GRAD_OUT_CTRL_COMBINE = 0x3, XMEDIA_IVE_NORM_GRAD_OUT_CTRL_BUTT } xmedia_ive_norm_grad_out_ctrl_e; typedef struct xmedia_ive_norm_grad_ctrl_s { xmedia_ive_norm_grad_out_ctrl_e en_out_ctrl; xmedia_s8 as8_mask[25]; xmedia_u8 u8_norm; } xmedia_ive_norm_grad_ctrl_s; typedef enum xmedia_ive_lk_optical_flow_pyr_out_mode_e { XMEDIA_IVE_LK_OPTICAL_FLOW_PYR_OUT_MODE_NONE = 0, XMEDIA_IVE_LK_OPTICAL_FLOW_PYR_OUT_MODE_STATUS = 1, XMEDIA_IVE_LK_OPTICAL_FLOW_PYR_OUT_MODE_BOTH = 2, XMEDIA_IVE_LK_OPTICAL_FLOW_PYR_OUT_MODE_BUTT } xmedia_ive_lk_optical_flow_pyr_out_mode_e; typedef struct xmedia_ive_lk_optical_flow_pyr_ctrl_s { xmedia_ive_lk_optical_flow_pyr_out_mode_e en_out_mode; xmedia_bool b_use_init_flow; xmedia_u16 u16_pts_num; xmedia_u8 u8_max_level; xmedia_u0q8 u0q8_min_eigthr; xmedia_u8 u8_iter_cnt; xmedia_u0q8 u0q8_eps; } xmedia_ive_lk_optical_flow_pyr_ctrl_s; typedef struct xmedia_ive_st_max_eig_s { xmedia_u16 u16_max_eig; xmedia_u8 u8_reserved[14]; } xmedia_ive_st_max_eig_s; typedef struct xmedia_ive_st_candi_corner_ctrl_s { xmedia_ive_mem_info_s stmem; xmedia_u0q8 u0q8_quality_level; } xmedia_ive_st_candi_corner_ctrl_s; typedef struct xmedia_ive_st_corner_info_s { xmedia_u16 u16_corner_num; xmedia_ive_point_u16_s ast_corner[XMEDIA_IVE_ST_MAX_CORNER_NUM]; } xmedia_ive_st_corner_info_s; typedef struct xmedia_ive_st_corner_ctrl_s { xmedia_u16 u16_max_corner_num; xmedia_u16 u16_min_dist; } xmedia_ive_st_corner_ctrl_s; typedef enum xmedia_ive_grad_fg_mode_e { XMEDIA_IVE_GRAD_FG_MODE_USE_CUR_GRAD = 0x0, XMEDIA_IVE_GRAD_FG_MODE_FIND_MIN_GRAD = 0x1, XMEDIA_IVE_GRAD_FG_MODE_BUTT } xmedia_ive_grad_fg_mode_e; typedef struct xmedia_ive_grad_fg_ctrl_s { xmedia_ive_grad_fg_mode_e en_mode; xmedia_u16 u16_ed_w_factor; xmedia_u8 u8_crl_coef_thr; xmedia_u8 u8_mag_crl_thr; xmedia_u8 u8_min_mag_diff; xmedia_u8 u8_noise_val; xmedia_u8 u8_ed_w_dark; } xmedia_ive_grad_fg_ctrl_s; typedef struct xmedia_ive_candi_bg_pix_s { xmedia_u8q4f4 u8q4f4_mean; xmedia_u16 u16_start_time; xmedia_u16 u16_sum_access_time; xmedia_u16 u16_short_keep_time; xmedia_u8 u8_chg_cond; xmedia_u8 u8_poten_bg_life; } xmedia_ive_candi_bg_pix_s; typedef struct xmedia_ive_work_bg_pix_s { xmedia_u8q4f4 u8q4f4_mean; xmedia_u16 u16_acc_time; xmedia_u8 u8_pre_gray; xmedia_u5q3 u5q3_diff_thr; xmedia_u8 u8_acc_flag; xmedia_u8 u8_bg_gray[3]; } xmedia_ive_work_bg_pix_s; typedef struct xmedia_ive_bg_life_s { xmedia_u8 u8_work_bg_life[3]; xmedia_u8 u8_candi_bg_life; } xmedia_ive_bg_life_s; typedef struct xmedia_ive_bg_model_pix_s { xmedia_ive_work_bg_pix_s st_work_bg_pixel; xmedia_ive_candi_bg_pix_s st_candi_pixel; xmedia_ive_bg_life_s st_bg_life; } xmedia_ive_bg_model_pix_s; typedef struct xmedia_ive_fg_stat_data_s { xmedia_u32 u32_pix_num; xmedia_u32 u32_sum_lum; xmedia_u8 u8_reserved[8]; } xmedia_ive_fg_stat_data_s; typedef struct xmedia_ive_bg_stat_data_s { xmedia_u32 u32_pix_num; xmedia_u32 u32_sum_lum; xmedia_u8 u8_reserved[8]; } xmedia_ive_bg_stat_data_s; typedef struct xmedia_ive_match_bg_model_ctrl_s { xmedia_u32 u32_cur_frm_num; xmedia_u32 u32_pre_frm_num; xmedia_u16 u16_time_thr; xmedia_u8 u8_diff_thr_crl_coef; xmedia_u8 u8_diff_max_thr; xmedia_u8 u8_diff_min_thr; xmedia_u8 u8_diff_thr_inc; xmedia_u8 u8_fast_learn_rate; xmedia_u8 u8_det_chg_region; } xmedia_ive_match_bg_model_ctrl_s; typedef struct xmedia_ive_update_bg_model_ctrl_s { xmedia_u32 u32_cur_frm_num; xmedia_u32 u32_pre_chk_time; xmedia_u32 u32_frm_chk_period; xmedia_u32 u32_init_min_time; xmedia_u32 u32_sty_bg_min_blend_time; xmedia_u32 u32_sty_bg_max_blend_time; xmedia_u32 u32_dyn_bg_min_blend_time; xmedia_u32 u32_static_det_min_time; xmedia_u16 u16_fg_max_fade_time; xmedia_u16 u16_bg_max_fade_time; xmedia_u8 u8_sty_bg_acc_time_rate_thr; xmedia_u8 u8_chg_bg_acc_time_rate_thr; xmedia_u8 u8_dyn_bg_acc_time_thr; xmedia_u8 u8_dyn_bg_depth; xmedia_u8 u8_bg_eff_sta_rate_thr; xmedia_u8 u8_acce_bg_learn; xmedia_u8 u8_det_chg_region; } xmedia_ive_update_bg_model_ctrl_s; typedef enum xmedia_ive_ann_mlp_activ_func_e { XMEDIA_IVE_ANN_MLP_ACTIV_FUNC_IDENTITY = 0x0, XMEDIA_IVE_ANN_MLP_ACTIV_FUNC_SIGMOID_SYM = 0x1, XMEDIA_IVE_ANN_MLP_ACTIV_FUNC_GAUSSIAN = 0x2, XMEDIA_IVE_ANN_MLP_ACTIV_FUNC_BUTT } xmedia_ive_ann_mlp_activ_func_e; typedef enum xmedia_ive_ann_mlp_accurate_e { XMEDIA_IVE_ANN_MLP_ACCURATE_SRC16_WGT16 = 0x0, XMEDIA_IVE_ANN_MLP_ACCURATE_SRC14_WGT20 = 0x1, XMEDIA_IVE_ANN_MLP_ACCURATE_BUTT } xmedia_ive_ann_mlp_accurate_e; typedef struct xmedia_ive_ann_mlp_model_s { xmedia_ive_ann_mlp_activ_func_e en_activ_func; xmedia_ive_ann_mlp_accurate_e en_accurate; xmedia_ive_mem_info_s st_weight; xmedia_u32 u32_total_weight_size; xmedia_u16 au16_layer_count[8]; xmedia_u16 u16_max_count; xmedia_u8 u8_layer_num; xmedia_u8 u8_reserved; } xmedia_ive_ann_mlp_model_s; typedef enum xmedia_ive_svm_type_e { XMEDIA_IVE_SVM_TYPE_C_SVC = 0x0, XMEDIA_IVE_SVM_TYPE_NU_SVC = 0x1, XMEDIA_IVE_SVM_TYPE_BUTT } xmedia_ive_svm_type_e; typedef enum xmedia_ive_svm_kernel_type_e { XMEDIA_IVE_SVM_KERNEL_TYPE_LINEAR = 0x0, XMEDIA_IVE_SVM_KERNEL_TYPE_POLY = 0x1, XMEDIA_IVE_SVM_KERNEL_TYPE_RBF = 0x2, XMEDIA_IVE_SVM_KERNEL_TYPE_SIGMOID = 0x3, XMEDIA_IVE_SVM_KERNEL_TYPE_BUTT } xmedia_ive_svm_kernel_type_e; typedef struct xmedia_ive_svm_model_s { xmedia_ive_svm_type_e en_type; xmedia_ive_svm_kernel_type_e en_kernel_type; xmedia_ive_mem_info_s st_sv; xmedia_ive_mem_info_s st_df; xmedia_u32 u32_total_df_size; xmedia_u16 u16_feature_dim; xmedia_u16 u16_sv_total; xmedia_u8 u8_class_count; } xmedia_ive_svm_model_s; typedef enum xmedia_ive_sad_mode_e { XMEDIA_IVE_SAD_MODE_MB_4X4 = 0x0, XMEDIA_IVE_SAD_MODE_MB_8X8 = 0x1, XMEDIA_IVE_SAD_MODE_MB_16X16 = 0x2, XMEDIA_IVE_SAD_MODE_BUTT } xmedia_ive_sad_mode_e; typedef enum xmedia_ive_sad_out_ctrl_e { XMEDIA_IVE_SAD_OUT_CTRL_16BIT_BOTH = 0x0, XMEDIA_IVE_SAD_OUT_CTRL_8BIT_BOTH = 0x1, XMEDIA_IVE_SAD_OUT_CTRL_16BIT_SAD = 0x2, XMEDIA_IVE_SAD_OUT_CTRL_8BIT_SAD = 0x3, XMEDIA_IVE_SAD_OUT_CTRL_THRESH = 0x4, XMEDIA_IVE_SAD_OUT_CTRL_BUTT } xmedia_ive_sad_out_ctrl_e; typedef struct xmedia_ive_sad_ctrl_s { xmedia_ive_sad_mode_e en_mode; xmedia_ive_sad_out_ctrl_e en_out_ctrl; xmedia_u16 u16_thr; xmedia_u8 u8_min_val; xmedia_u8 u8_max_val; } xmedia_ive_sad_ctrl_s; typedef enum xmedia_ive_resize_mode_e { XMEDIA_IVE_RESIZE_MODE_LINEAR = 0x0, XMEDIA_IVE_RESIZE_MODE_AREA = 0x1, XMEDIA_IVE_RESIZE_MODE_BUTT } xmedia_ive_resize_mode_e; typedef struct xmedia_ive_resize_ctrl_s { xmedia_ive_resize_mode_e en_mode; xmedia_ive_mem_info_s stmem; xmedia_u16 u16_num; } xmedia_ive_resize_ctrl_s; typedef enum xmedia_ive_cnn_activ_func_e { XMEDIA_IVE_CNN_ACTIV_FUNC_NONE = 0x0, XMEDIA_IVE_CNN_ACTIV_FUNC_RELU = 0x1, XMEDIA_IVE_CNN_ACTIV_FUNC_SIGMOID = 0x2, XMEDIA_IVE_CNN_ACTIV_FUNC_BUTT } xmedia_ive_cnn_activ_func_e; typedef enum xmedia_ive_cnn_pooling_e { XMEDIA_IVE_CNN_POOLING_NONE = 0x0, XMEDIA_IVE_CNN_POOLING_MAX = 0x1, XMEDIA_IVE_CNN_POOLING_AVG = 0x2, XMEDIA_IVE_CNN_POOLING_BUTT } xmedia_ive_cnn_pooling_e; typedef struct xmedia_ive_cnn_conv_pooling_s { xmedia_ive_cnn_activ_func_e en_activ_func; xmedia_ive_cnn_pooling_e en_pooling; xmedia_u8 u8_feature_map_num; xmedia_u8 u8_kernel_size; xmedia_u8 u8_conv_step; xmedia_u8 u8_pool_size; xmedia_u8 u8_pool_step; xmedia_u8 u8_reserved[3]; } xmedia_ive_cnn_conv_pooling_s; typedef struct xmedia_ive_cnn_full_connect_s { xmedia_u16 au16_layer_cnt[8]; xmedia_u16 u16_max_cnt; xmedia_u8 u8_layer_num; xmedia_u8 u8_reserved; } xmedia_ive_cnn_full_connect_s; typedef struct xmedia_ive_cnn_model_s { xmedia_ive_cnn_conv_pooling_s ast_conv_pool[8]; xmedia_ive_cnn_full_connect_s st_full_connect; xmedia_ive_mem_info_s st_conv_kernel_bias; xmedia_u32 u32_conv_kernel_bias_size; xmedia_ive_mem_info_s st_fcl_wgt_bias; xmedia_u32 u32_fcl_wgt_bias_size; xmedia_u32 u32_total_mem_size; xmedia_ive_image_type_e en_type; xmedia_u32 u32width; xmedia_u32 u32height; xmedia_u16 u16_class_count; xmedia_u8 u8_conv_pool_layer_num; xmedia_u8 u8_reserved; } xmedia_ive_cnn_model_s; typedef struct xmedia_ive_cnn_ctrl_s { xmedia_ive_mem_info_s stmem; xmedia_u32 u32_num; } xmedia_ive_cnn_ctrl_s; typedef struct xmedia_ive_cnn_result_s { xmedia_s32 s32_class_idx; xmedia_s32 s32_confidence; } xmedia_ive_cnn_result_s; typedef enum xmedia_ive_persp_trans_alg_mode_e { XMEDIA_IVE_PERSP_TRANS_ALG_MODE_NR_SIM = 0x0, XMEDIA_IVE_PERSP_TRANS_ALG_MODE_SIM = 0x1, XMEDIA_IVE_PERSP_TRANS_ALG_MODE_AFFINE = 0x2, XMEDIA_IVE_PERSP_TRANS_ALG_MODE_BUTT } xmedia_ive_persp_trans_alg_mode_e; typedef struct xmedia_ive_persp_trans_point_pair_s { xmedia_ive_point_u14q2_s st_src_point; xmedia_ive_point_u14q2_s st_dst_point; } xmedia_ive_persp_trans_point_pair_s; typedef enum xmedia_ive_persp_trans_csc_mode_e { XMEDIA_IVE_PERSP_TRANS_CSC_MODE_NONE = 0x0, XMEDIA_IVE_PERSP_TRANS_CSC_MODE_VIDEO_BT601_YUV2RGB = 0x1, XMEDIA_IVE_PERSP_TRANS_CSC_MODE_VIDEO_BT709_YUV2RGB = 0x2, XMEDIA_IVE_PERSP_TRANS_CSC_MODE_PIC_BT601_YUV2RGB = 0x3, XMEDIA_IVE_PERSP_TRANS_CSC_MODE_PIC_BT709_YUV2RGB = 0x4, XMEDIA_IVE_PERSP_TRANS_CSC_MODE_BUTT } xmedia_ive_persp_trans_csc_mode_e; typedef struct xmedia_ive_persp_trans_ctrl_s { xmedia_ive_persp_trans_alg_mode_e en_alg_mode; xmedia_ive_persp_trans_csc_mode_e en_csc_mode; xmedia_u16 u16_roi_num; xmedia_u16 u16_point_pair_num; } xmedia_ive_persp_trans_ctrl_s; typedef struct xmedia_ive_roi_info_s { xmedia_ive_rect_s24q8_s st_roi; xmedia_u32 u32_roi_id; } xmedia_ive_roi_info_s; typedef struct xmedia_ive_kcf_pro_ctrl_s { xmedia_ive_csc_mode_e en_csc_mode; xmedia_ive_mem_info_s st_tmp_buf; xmedia_u1q15 u1q15_inter_factor; xmedia_u0q16 u0q16_lamda; xmedia_u4q12 u4q12_trancalfa; xmedia_u0q8 u0q8_sigma; xmedia_u8 u8_resp_thr; } xmedia_ive_kcf_pro_ctrl_s; typedef struct xmedia_ive_kcf_obj_s { xmedia_ive_roi_info_s st_roi_info; xmedia_ive_mem_info_s st_cos_win_x; xmedia_ive_mem_info_s st_cos_win_y; xmedia_ive_mem_info_s st_gauss_peak; xmedia_ive_mem_info_s st_hog_feature; xmedia_ive_mem_info_s st_alpha; xmedia_ive_mem_info_s st_dst; xmedia_u3q5 u3q5_padding; xmedia_u8 au8_reserved[3]; } xmedia_ive_kcf_obj_s; typedef struct xmedia_ive_list_head_s { struct xmedia_ive_list_head_s *pst_next, *pst_prev; } xmedia_ive_list_head_s; typedef struct xmedia_ive_kcf_obj_node_s { xmedia_ive_list_head_s st_list; xmedia_ive_kcf_obj_s st_kcf_obj; } xmedia_ive_kcf_obj_node_s; typedef enum xmedia_ive_kcf_list_state_e { IVE_KCF_LIST_STATE_CREATE = 0x1, IVE_KCF_LIST_STATE_DESTORY = 0x2, IVE_KCF_LIST_STATE_BUTT } xmedia_ive_kcf_list_state_e; typedef struct xmedia_ive_kcf_obj_list_s { xmedia_ive_kcf_obj_node_s *pst_obj_node_buf; xmedia_ive_list_head_s st_free_obj_list; xmedia_ive_list_head_s st_train_obj_list; xmedia_ive_list_head_s st_track_obj_list; xmedia_u32 u32_free_obj_num; xmedia_u32 u32_train_obj_num; xmedia_u32 u32_track_obj_num; xmedia_u32 u32_max_obj_num; xmedia_ive_kcf_list_state_e en_list_state; xmedia_u8 *pu8_tmp_buf; } xmedia_ive_kcf_obj_list_s; typedef struct xmedia_ive_kcf_bbox_s { xmedia_ive_kcf_obj_node_s *pst_node; xmedia_s32 s32_response; xmedia_ive_roi_info_s st_roi_info; xmedia_bool b_track_ok; xmedia_bool b_roi_refresh; } xmedia_ive_kcf_bbox_s; typedef struct xmedia_ive_kcf_bbox_ctrl_s { xmedia_u32 u32_max_bbox_num; xmedia_s32 s32_resp_thr; } xmedia_ive_kcf_bbox_ctrl_s; typedef enum xmedia_ive_hog_mode_e { XMEDIA_IVE_HOG_MODE_VERTICAL_TANGENT_PLANE = 0x1, XMEDIA_IVE_HOG_MODE_HORIZONTAL_TANGENT_PLANE = 0x2, XMEDIA_IVE_HOG_MODE_BUTT } xmedia_ive_hog_mode_e; typedef struct xmedia_ive_hog_ctrl_s { xmedia_ive_csc_mode_e en_csc_mode; xmedia_ive_hog_mode_e en_hog_mode; xmedia_u32 u32_roi_num; xmedia_u4q12 u4q12_trancalfa; xmedia_u8 au8_rsv[2]; } xmedia_ive_hog_ctrl_s; #ifdef __cplusplus #if __cplusplus } #endif #endif #endif