Files

233 lines
6.9 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef __DEMO_NPU_H
#define __DEMO_NPU_H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <signal.h>
#include <pthread.h>
#include <math.h>
#include <dirent.h>
#include "sample_comm.h"
#include "sample_comm_sys.h"
#include "sample_comm_vi.h"
#include "sample_comm_vpss.h"
#include "sample_comm_venc.h"
#include "sample_comm_isp.h"
#include "sample_comm_livestream.h"
#include "xmedia_svp.h"
#include "xmedia_mmz.h"
#include "xmedia_vgs.h"
#include "xmedia_tde.h"
#include "xmedia_ive_common.h"
#include "xmedia_ive.h"
#include "common.h"
#include "data_base.h"
#include "canvas.h"
#include "canvas_font.h"
#ifdef DMS_OPENCV
#include "svp_opencv.h"
#endif
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
#define SCORE_LEN (128)
#define CONVERT_TO_32BIT_ADDR(Addr) (void*)(xmedia_ulong)(Addr)
#define CONVERT_TO_64BIT_ADDR(Addr) (xmedia_u64)(xmedia_ulong)(Addr)
#define MAX_FILES_NUM 8192
#define MAX_STR_NAME_LEN 256
#define GESTURE_KEYPOINT_LEN 2
#define PEOPLE_KEYPOINT_LEN 17
typedef xmedia_s32 VGS_HANDLE;
typedef struct {
xmedia_bool distract; // 分心状态
xmedia_u8 distract_frame; // 分心帧数
xmedia_s32 tracker_id; // 追踪id
xmedia_u8 warn_frame; // 警告帧数
xmedia_float pitch; // 俯仰角
xmedia_float yaw; // 偏航角
xmedia_float roll; // 翻滚角
} sample_dms_state;
typedef struct{
xmedia_u32 width;
xmedia_u32 height;
} rect_size;
typedef enum PIXEL_FORMAT_E
{
PIXEL_FORMAT_RGB_444 = 0,
PIXEL_FORMAT_RGB_555,
PIXEL_FORMAT_RGB_565,
PIXEL_FORMAT_RGB_888,
PIXEL_FORMAT_BGR_444,
PIXEL_FORMAT_BGR_555,
PIXEL_FORMAT_BGR_565,
PIXEL_FORMAT_BGR_888,
PIXEL_FORMAT_ARGB_1555,
PIXEL_FORMAT_ARGB_4444,
PIXEL_FORMAT_ARGB_8565,
PIXEL_FORMAT_ARGB_8888,
PIXEL_FORMAT_ARGB_2BPP,
PIXEL_FORMAT_ABGR_1555,
PIXEL_FORMAT_ABGR_4444,
PIXEL_FORMAT_ABGR_8565,
PIXEL_FORMAT_ABGR_8888,
PIXEL_FORMAT_RGB_BAYER_8BPP,
PIXEL_FORMAT_RGB_BAYER_10BPP,
PIXEL_FORMAT_RGB_BAYER_12BPP,
PIXEL_FORMAT_RGB_BAYER_14BPP,
PIXEL_FORMAT_RGB_BAYER_16BPP,
PIXEL_FORMAT_YVU_PLANAR_422,
PIXEL_FORMAT_YVU_PLANAR_420,
PIXEL_FORMAT_YVU_PLANAR_444,
PIXEL_FORMAT_YVU_SEMIPLANAR_422,
PIXEL_FORMAT_YVU_SEMIPLANAR_420,
PIXEL_FORMAT_YVU_SEMIPLANAR_444,
PIXEL_FORMAT_YUV_SEMIPLANAR_422,
PIXEL_FORMAT_YUV_SEMIPLANAR_420,
PIXEL_FORMAT_YUV_SEMIPLANAR_444,
PIXEL_FORMAT_YUYV_PACKAGE_422,
PIXEL_FORMAT_YVYU_PACKAGE_422,
PIXEL_FORMAT_UYVY_PACKAGE_422,
PIXEL_FORMAT_VYUY_PACKAGE_422,
PIXEL_FORMAT_YYUV_PACKAGE_422,
PIXEL_FORMAT_YYVU_PACKAGE_422,
PIXEL_FORMAT_UVYY_PACKAGE_422,
PIXEL_FORMAT_VUYY_PACKAGE_422,
PIXEL_FORMAT_VY1UY0_PACKAGE_422,
PIXEL_FORMAT_YUV_400,
PIXEL_FORMAT_UV_420,
PIXEL_FORMAT_BGR_888_PLANAR,
PIXEL_FORMAT_HSV_888_PACKAGE,
PIXEL_FORMAT_HSV_888_PLANAR,
PIXEL_FORMAT_LAB_888_PACKAGE,
PIXEL_FORMAT_LAB_888_PLANAR,
PIXEL_FORMAT_S8C1,
PIXEL_FORMAT_S8C2_PACKAGE,
PIXEL_FORMAT_S8C2_PLANAR,
PIXEL_FORMAT_S8C3_PLANAR,
PIXEL_FORMAT_S16C1,
PIXEL_FORMAT_U8C1,
PIXEL_FORMAT_U16C1,
PIXEL_FORMAT_S32C1,
PIXEL_FORMAT_U32C1,
PIXEL_FORMAT_U64C1,
PIXEL_FORMAT_S64C1,
PIXEL_FORMAT_BUTT
} PIXEL_FORMAT_E;
typedef struct BITMAP_S
{
PIXEL_FORMAT_E enPixelFormat;
xmedia_u32 u32Width;
xmedia_u32 u32Height;
xmedia_void* ATTRIBUTE pData;
} BITMAP_S;
typedef enum {
SAMPLE_SVP_ALG_TYPE_PERSON = 0, // 人形检测
SAMPLE_SVP_ALG_TYPE_PERSON_KEYPOINT, // 人体关键点检测
SAMPLE_SVP_ALG_TYPE_FACE, // 人脸检测
SAMPLE_SVP_ALG_TYPE_PET, // 宠物检测
SAMPLE_SVP_ALG_TYPE_CAR, // 车形检测
SAMPLE_SVP_ALG_TYPE_NON_MOTORIZED_VEHICLE, // 非机动车检测
SAMPLE_SVP_ALG_TYPE_HEAD, // 人头检测
SAMPLE_SVP_ALG_TYPE_FIREWORKS, // 烟火检测
SAMPLE_SVP_ALG_TYPE_PACKAGE, // 包裹检测
SAMPLE_SVP_ALG_TYPE_AOV_PERSON, // AOV人形检测
SAMPLE_SVP_ALG_TYPE_ADAS, // 高级驾驶辅助系统
SAMPLE_SVP_ALG_TYPE_FIRESMOKE, // 烟火检测(YOLOV8
SAMPLE_SVP_ALG_TYPE_GESTURE_RECOGNITION, // 手势识别
SAMPLE_SVP_ALG_TYPE_FACE_EMOTION, // 表情分类
SAMPLE_SVP_ALG_TYPE_FACE_RECOGNITION, // 人脸识别
SAMPLE_SVP_ALG_TYPE_PERSON_RCNN, // 人形检测二阶段
SAMPLE_SVP_ALG_TYPE_CAR_RCNN, // 车形检测二阶段
SAMPLE_SVP_ALG_TYPE_PET_RCNN, // 宠物检测二阶段
SAMPLE_SVP_ALG_TYPE_COMPANION_ROBOT, // 陪伴机器人
SAMPLE_SVP_ALG_TYPE_PERSON_RCNN_720P, // 人形检测720P
SAMPLE_SVP_ALG_TYPE_CAR_RCNN_720P, // 车形检测720P
SAMPLE_SVP_ALG_TYPE_PET_RCNN_720P, // 宠物检测720P
SAMPLE_SVP_ALG_TYPE_MULTI_DETECT, // 多类型检测
SAMPLE_SVP_ALG_TYPE_PERSON_CAR, // 人车检测
SAMPLE_SVP_ALG_TYPE_DMS, // DMS检测
SAMPLE_SVP_ALG_TYPE_PLATE_RECOGNITION, // 车牌识别
SAMPLE_SVP_ALG_TYPE_VEHICLE_RECOGNITION, // 车辆识别
SAMPLE_SVP_ALG_TYPE_PLATE_VEHICLE_RECO, // 车牌车辆识别
SAMPLE_SVP_ALG_TYPE_PET_V8, // 宠物检测(YOLOV8
SAMPLE_SVP_ALG_TYPE_PERSON_CAR_NMV_FIRE, //人车非火
// SAMPLE_SVP_ALG_TYPE_FACE_AGE, // 年龄分类
// SAMPLE_SVP_ALG_TYPE_FACE_MASK, // 口罩分类
// SAMPLE_SVP_ALG_TYPE_FACE_GLASSES, // 眼镜分类
// SAMPLE_SVP_ALG_TYPE_FACE_GENDER, // 性别分类
// SAMPLE_SVP_ALG_TYPE_FACE_ATTRIBUTE, // 人脸属性
// SAMPLE_SVP_ALG_TYPE_PASSENGER_FLOW_STATISTICS, // 客流量统计
// SAMPLE_SVP_ALG_TYPE_OFF_DUTY, // 离岗检测
// SAMPLE_SVP_ALG_TYPE_BOUNDARY, // 周界检测
SAMPLE_SVP_ALG_TYPE_MAX,
} sample_svp_alg_type;
typedef struct {
sample_svp_alg_type detect_type;
xmedia_s32 vpss_ochn[3];
xmedia_s32 venc_chn[3];
xmedia_s32 vpss_pipe;
xmedia_s32 venc_chnl;
xmedia_s32 svp_handle;
xmedia_bool big_stream;
// 数据库
db_attr *g_db_handle;
xmedia_bool add_flag;
xmedia_char delete_name[VENC_MAX_NAME_LEN];
xmedia_char add_name[VENC_MAX_NAME_LEN];
xmedia_bool delete_flag;
} sample_svp_info;
typedef struct {
xmedia_u32 work;
xmedia_u32 input;
xmedia_u32 output;
} sample_svp_mem_size;
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
#endif // __DEMO_NPU_H