/* Copyright (c), 2001-2022, Shenshu Tech. Co., Ltd. */ #ifndef LIBAPI_COMMON_IVE_H #define LIBAPI_COMMON_IVE_H #include "ot_common_svp.h" #include "ot_common_ive.h" #include "ss_mpi_ive.h" #include "sample_comm.h" #include "libapi_common_svp.h" #include #include #include #include #include #include #include #include #include #include #define OT_VIDEO_WIDTH 352 #define OT_VIDEO_HEIGHT 288 #define OT_IVE_ALIGN 16 #define OT_IVE_CHAR_CALW 8 #define OT_IVE_CHAR_CALH 8 #define OT_IVE_CHAR_NUM (OT_IVE_CHAR_CALW * OT_IVE_CHAR_CALH) #define OT_IVE_FILE_NAME_LEN 256 #define OT_VPSS_CHN_NUM 2 #define OT_MAX_LOOP_IMG_H 3 #define OT_MACRO_IVE_IMAGE_CHN_ONE 1 #define OT_MACRO_IVE_IMAGE_CHN_TWO 2 #define OT_MACRO_IVE_IMAGE_CHN_THREE 3 #define OT_MACRO_IVE_IMAGE_CHN_FOUR 4 #define OT_MACRO_IVE_MAX_CCL_REGION_NUM 254 #define OT_MACRO_IVE_DIV_TWO 2 #define OT_MACRO_POINT_IDX_ZERO 0 #define OT_MACRO_POINT_IDX_ONE 1 #define OT_MACRO_POINT_IDX_TWO 2 #define OT_MACRO_POINT_IDX_THREE 3 #define OT_MACRO_ADDR_IDX_ZERO 0 #define OT_MACRO_ADDR_IDX_ONE 1 #define OT_MACRO_ADDR_IDX_TWO 2 #define OT_MACRO_IVE_MAX_POOL_CNT 128 #define OT_MACRO_IVE_DRAW_THICK 2 #define OT_MACRO_IVE_PIPE_IDX_ZERO 0 #define OT_MACRO_IVE_PIPE_IDX_ONE 1 #define OT_MACRO_IVE_PIPE_IDX_TWO 2 #define OT_MACRO_IVE_PIPE_IDX_THREE 3 #define OT_MACRO_IVE_1080P_WIDTH 1920 #define OT_MACRO_IVE_1080P_HEIGHT 1080 #define OT_MACRO_IVE_MASK_NUM 25 #define OT_MACRO_IDX_ZERO 0 #define OT_MACRO_IDX_ONE 1 #define OT_MACRO_IDX_TWO 2 #define OT_MACRO_IDX_THREE 3 #define OT_MACRO_IDX_FOUR 4 #define OT_MACRO_IDX_FIVE 5 #define OT_MACRO_NUM_ZERO 0 #define OT_MACRO_NUM_ONE 1 #define OT_MACRO_NUM_TWO 2 #define OT_MACRO_NUM_THREE 3 #define OT_MACRO_NUM_FOUR 4 #define OT_MACRO_NUM_FIVE 5 #define OT_MACRO_NUM_SEVEN 7 #define OT_MACRO_QUARTER_OF_1M 256 #define OT_MACRO_1M 1024 #define OT_MACRO_4M (4 * 1024) #define OT_MACRO_MAX_SRC_FRAME_RATE 30 #define OT_MACRO_MAX_DST_FRAME_RATE 30 #define ot_macro_align_back(x, a) ((a) * (((x) / (a)))) #define ot_macro_ive_max(a, b) (((a) > (b)) ? (a) : (b)) #define ot_macro_ive_min(a, b) (((a) < (b)) ? (a) : (b)) typedef struct { td_s32 linear_num; td_s32 thresh_num; ot_point *linear_point; } ot_struct_ive_linear_data; typedef struct { td_u32 ele_size; /* element size */ td_u32 loop_c; /* loop times of c dimension */ td_u32 loop_h[OT_SVP_IMG_ADDR_NUM]; /* loop times of h dimension */ } ot_struct_rw_image_loop_info; typedef struct { ot_size src; ot_size dst; } ot_struct_src_dst_size; /* * function : Mpi check init */ td_s32 libapi_common_ive_check_mpi_init(td_void); /* * function : Mpi init */ td_s32 libapi_common_ive_mpi_init(td_void); /* * function : Mpi exit */ td_void libapi_common_ive_mpi_exit(td_void); /* * function :Read file */ td_s32 libapi_common_ive_read_file(ot_svp_img *img, FILE *fp); /* * function :Write file */ td_s32 libapi_common_ive_write_file(ot_svp_img *img, FILE *fp); /* * function :Read os_mem */ td_s32 libapi_common_ive_read_os_mem(ot_svp_img *img, td_void *src, td_u32 whidh, td_u32 height, td_u32 img_type); /* * function :Write os_mem */ td_s32 libapi_common_ive_write_os_mem(ot_svp_img *img, td_void *tar); /* * function :Calc stride */ td_u32 libapi_common_ive_calc_stride(td_u32 width, td_u8 align); /* * function : Copy blob to rect */ td_s32 libapi_common_ive_blob_to_rect(ot_ive_ccblob *blob, ot_struct_svp_rect_info *rect, td_u16 rect_max_num, td_u16 area_thr_step, ot_struct_src_dst_size src_dst_size); /* * function : Create ive image */ td_s32 libapi_common_ive_create_image(ot_svp_img *img, ot_svp_img_type type, td_u32 width, td_u32 height); /* * function : Destroy ive image */ td_s32 libapi_common_ive_destroy_image(ot_svp_img *img); /* * function : Create memory info */ td_s32 libapi_common_ive_create_mem_info(ot_svp_mem_info *mem_info, td_u32 size); /* * function : Destroy memory info */ td_s32 libapi_common_ive_destroy_mem_info(ot_svp_mem_info *mem_info); /* * function : Create ive image by cached */ td_s32 libapi_common_ive_create_image_by_cached(ot_svp_img *img, ot_svp_img_type type, td_u32 width, td_u32 height); /* * function : Dma frame info to ive image */ td_s32 libapi_common_ive_dma_image(ot_video_frame_info *frame_info, ot_svp_dst_img *dst, td_bool is_instant); #endif