10.3.2. DSP运行时API

10.3.2.1. 数据类型与数据结构

10.3.2.1.1. handle_fn

typedef int (*handle_fn)(void *input, void *output, void *tm);

函数指针,指向处理DSP任务的函数。

10.3.2.1.2. DSPLogLevel

enum DSPLogLevel {
  HB_DSP_LOG_NONE = 0,
  HB_DSP_LOG_DEBUG,
  HB_DSP_LOG_INFO,
  HB_DSP_LOG_WARNING,
  HB_DSP_LOG_ERROR,
  HB_DSP_LOG_ALWAYS
};

DSP中打印日志的级别。

10.3.2.2. API接口

10.3.2.2.1. hb_dsp_set_log_level

#define hb_dsp_set_log_level(level);

DSP日志级别初始化。

10.3.2.2.2. hb_dsp_env_init

int hb_dsp_env_init();

DSP环境初始化。

  • 返回值

    • 返回 0 则表示API成功执行,否则执行失败。

10.3.2.2.3. hb_dsp_start

void hb_dsp_start();

启动DSP开始执行命令,实际上它从不返回。

10.3.2.2.4. hb_dsp_mem_map

void *hb_dsp_mem_map(uint64_t ddr_address, uint64_t size);

将ARM端传入的物理内存地址映射为DSP端可读写虚拟地址。

  • 参数

    • [in] ddr_address 内存物理地址。

    • [in] size 内存大小。

  • 返回值

    • 返回映射后可读写的虚拟地址。

10.3.2.2.5. hb_dsp_mem_unmap

void hb_dsp_mem_unmap(uint32_t ddr_address);

与hb_dsp_mem_map成对使用,取消虚拟地址映射。

  • 参数

    • [in] ddr_address 虚拟映射地址。

10.3.2.2.6. hb_dsp_register_fn

int hb_dsp_register_fn(int cmd, handle_fn handle, int latency);

注册DSP op,应该在 hb_dsp_start 之前调用。

  • 参数

    • [in] cmd DSP op编号。

    • [in] handle DSP op函数指针。

    • [in] latency DSP op运行时间,如果没有运行时间信息,则设置为0。

  • 返回值

    • 返回 0 则表示API成功执行,否则执行失败。

10.3.2.2.7. hb_dsp_unregister_fn

int hb_dsp_unregister_fn(int cmd);

注销DSP op。

  • 参数

    • [in] cmd DSP op编号。

  • 返回值

    • 返回 0 则表示API成功执行,否则执行失败。

10.3.2.3. CV可注册算子

NO.

CMD

Handle_fn

1

HB_DSP_RPC_CMD_CV_BILATERAL_FILTER

hb_dsp_bilateral_filter

2

HB_DSP_RPC_CMD_CV_BOX_FILTER

hb_dsp_box_filter

3

HB_DSP_RPC_CMD_CV_CANNY

hb_dsp_canny

4

HB_DSP_RPC_CMD_CV_CVT_COLOR

hb_dsp_cvt_color

5

HB_DSP_RPC_CMD_CV_CORNER_HARRIS

hb_dsp_cornerharris

6

HB_DSP_RPC_CMD_CV_DILATE

hb_dsp_dilate

7

HB_DSP_RPC_CMD_CV_EQUALIZE_HIST

hb_dsp_equalize_hist

8

HB_DSP_RPC_CMD_CV_ERODE

hb_dsp_erode

9

HB_DSP_RPC_CMD_CV_FILTER2D

hb_dsp_filter_2d

10

HB_DSP_RPC_CMD_CV_FLIP

hb_dsp_flip

11

HB_DSP_RPC_CMD_CV_GAUSSIAN_BLUR

hb_dsp_gaussian_blur

12

HB_DSP_RPC_CMD_CV_INTEGRAL

hb_dsp_integral

13

HB_DSP_RPC_CMD_CV_MEDIAN_BLUR

hb_dsp_median_blur

14

HB_DSP_RPC_CMD_CV_PYR_DOWN

hb_dsp_pyr_down

15

HB_DSP_RPC_CMD_CV_PYR_UP

hb_dsp_pyr_up

16

HB_DSP_RPC_CMD_CV_REMAP

hb_dsp_remap

17

HB_DSP_RPC_CMD_CV_RESIZE

hb_dsp_resize

18

HB_DSP_RPC_CMD_CV_ROI_RESIZE

hb_dsp_roi_resize

19

HB_DSP_RPC_CMD_CV_ROTATE

hb_dsp_rotate

20

HB_DSP_RPC_CMD_CV_SEP_FILTER2D

hb_dsp_sep_filter_2d

21

HB_DSP_RPC_CMD_CV_SOBEL

hb_dsp_sobel

22

HB_DSP_RPC_CMD_CV_THRESHOLD

hb_dsp_threshold

23

HB_DSP_RPC_CMD_CV_TRANSPOSE

hb_dsp_transpose

24

HB_DSP_RPC_CMD_CV_WARP_AFFINE

hb_dsp_warp_affine

25

HB_DSP_RPC_CMD_CV_WARP_PERSPECTIVE

hb_dsp_warp_perspective

10.3.2.4. NN可注册算子

NO.

CMD

Handle_fn

1

HB_DSP_RPC_CMD_NN_DEQUANTIZE

hb_dsp_dequantize

2

HB_DSP_RPC_CMD_NN_QUANTIZE

hb_dsp_quantize

3

HB_DSP_RPC_CMD_NN_SOFTMAX

hb_dsp_softmax