GK SDK 源码库: XMIPCLinuxV100R005C00SPC030 (kernel/tools/open_source excluded)

This commit is contained in:
lai
2026-09-06 03:52:57 +08:00
commit b1928b41c0
21813 changed files with 4413081 additions and 0 deletions
@@ -0,0 +1,74 @@
#ifndef __SVP_CORE_H__
#define __SVP_CORE_H__
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include "xmedia_cl.h"
#include "xmedia_svp_std.h"
#include "xmedia_sys.h"
#include "xmedia_tde.h"
#include "xmedia_ive.h"
#ifdef __cplusplus
extern "C" {
#endif
#define INPUT_MODEL_NUM_RGB888 1
#define INPUT_MODEL_NUM_YUV420 2
#define SVP_ALIGN_BYTE 16
#define SVP_ALIGN_UP(A, ALIGN) \
((((A) % (ALIGN)) == 0) ? (A) : ((A) + (ALIGN) - ((A) % (ALIGN))))
#define ALIGN_BYTE 8
#define DEFAULT_INOUT_NUM 16
#define ALIGN_FUNC(A, ALIGN) \
((((A) % (ALIGN)) == 0) ? (A) : ((A) + (ALIGN) - ((A) % (ALIGN))))
typedef struct _xmedia_npu_model {
xmedia_cl_graph graph;
xmedia_cl_device_id *devices;
xmedia_cl_context context;
xmedia_s32 *output_size;
xmedia_cl_tensor_info_inout output; // 模型输出相关数据信息
xmedia_cl_tensor_info_inout input; // 模型输入相关数据信息
xmedia_u64 weight_u64phyaddr;
xmedia_void* weight_viraddr;
xmedia_s32 *user_count;
xmedia_void *rgb_viraddr;
xmedia_u64 rgb_phyaddr;
xmedia_u64 output_u64phyaddr;
xmedia_void* output_viraddr;
xmedia_cl_memory_reuse_type mem_reuse_type;
} xmedia_npu_model;
typedef struct {
xmedia_u32 size;
xmedia_bool reuse_flag;
xmedia_u64 phyaddr;
xmedia_void *viraddr;
} svp_mem_config;
typedef struct {
xmedia_svp_mem_reuse_type reuse_type;
svp_mem_config workbuf_cfg;
svp_mem_config inputbuf_cfg;
svp_mem_config outputbuf_cfg;
} svp_config;
xmedia_s32 npu_init_context();
xmedia_s32 svp_set_cfg(xmedia_svp_cfg *cfg);
xmedia_s32 svp_get_cfg(xmedia_svp_cfg *cfg);
xmedia_s32 npu_load_model(const xmedia_svp_modules *model, xmedia_npu_model *xmd_npu_model);
xmedia_s32 npu_run_model(xmedia_npu_model *xmd_npu_model, xmedia_u64 img_src_phy, xmedia_video_pixel_format pixel_fmt);
xmedia_s32 npu_unload_model(xmedia_npu_model *xmd_npu_model);
xmedia_s32 npu_release_context();
extern xmedia_s32 check_chip_otp();
#ifdef __cplusplus
}
#endif
#endif
@@ -0,0 +1,54 @@
#ifndef __SVP_PROC_H__
#define __SVP_PROC_H__
#include "xmedia_svp.h"
#include "svp_comm.h"
#include "task_common.h"
#ifdef __cplusplus
extern "C" {
#endif
#define SVP_PROC_SIZE (4096 * 4)
#define SVP_PROC_NAME_SIZE (16)
typedef struct {
xmedia_svp_alg_type alg_type; // 算法类型
xmedia_float detect_threshold; // 置信度阈值,建议值0.55f
xmedia_float classifier_threshold; // 分类器阈值,建议值0.01f
xmedia_float iou_threshold; // iou相交比阈值,建议值0.5f
xmedia_u32 max_target_num; // 最大目标数,最大值10
svp_movement movement; // 静止过滤相关参数
xmedia_bool track_enable; // 追踪相关参数
} proc_detect_info;
typedef struct {
xmedia_u8 framerate; // 帧率
xmedia_u64 cost_time; // 消耗的时间
xmedia_u8 fps_count; // 一秒内运行的次数
struct timeval last_time; // 上次统计时间
} svp_dbg_info;
typedef struct {
xmedia_u32 buff_len_total;
xmedia_u32 remain_buf;
xmedia_char *vir_addr;
} svp_proc_info;
typedef struct {
svp_proc_info proc_info;
svp_dbg_info dbg_info[XMEDIA_SVP_MAX_TASK_NUM];
svp_task_handle *handle[XMEDIA_SVP_MAX_TASK_NUM];
} svp_proc_context;
xmedia_s32 svp_update_proc_time(svp_proc_context* proc, xmedia_s32 handle, xmedia_u64 cost_time);
xmedia_s32 svp_update_proc_framerate(svp_proc_context* proc, xmedia_s32 handle);
xmedia_s32 svp_update_proc_info(svp_proc_context* proc, xmedia_s32 handle);
xmedia_s32 svp_init_proc(xmedia_svp_context* context);
xmedia_s32 svp_deinit_proc(xmedia_svp_context* context);
#ifdef __cplusplus
}
#endif
#endif