产品文档10.3. DSP运行时API手册

10.3. DSP运行时API手册

2026-02-07 00:17:15

10.3.1. ARM运行时API

10.3.1.1. 通用API说明¶

10.3.1.1.1. 数据类型与数据结构

10.3.1.1.1.1. HB_DSP_VERSION_MAJOR¶

DSP主版本号信息。

10.3.1.1.1.2. HB_DSP_VERSION_MINOR

DSP次版本号信息。

10.3.1.1.1.3. HB_DSP_VERSION_PATCH

DSP补丁版本号信息。

10.3.1.1.1.4. HB_DSP_INITIALIZE_RPC_CTRL_PARAM¶

初始化控制参数。

10.3.1.1.1.5. hbDSPRpcCmd¶

DSP RPC命令。

  • 成员

    成员名称

    描述

    HB_DSP_RPC_CMD_R_B

    DSP保留命令起始编码。

    HB_DSP_RPC_CMD_PING

    DSP Ping命令。

    HB_DSP_RPC_CMD_R_E

    DSP保留命令结束编码。

    HB_DSP_RPC_CMD_NN_B

    DSP NN命令起始编码。

    HB_DSP_RPC_CMD_NN_SOFTMAX

    DSP SoftMax命令。

    HB_DSP_RPC_CMD_NN_E

    DSP NN命令结束编码。

    HB_DSP_RPC_CMD_CV_B

    DSP CV命令起始编码。

    HB_DSP_RPC_CMD_CV_E

    DSP CV命令结束编码。

    HB_DSP_RPC_CMD_BUTT

    DSP 最大命令编码,获取注册命令信息。

10.3.1.1.1.6. hbDspRpcPriority

DSP RPC任务优先级。

  • 成员

    成员名称

    描述

    HB_DSP_RPC_PRIORITY_LOWEST

    DSP RPC最低优先级。

    HB_DSP_RPC_PRIORITY_HIGHEST

    DSP RPC最高优先级。

    HB_DSP_RPC_PRIORITY_PREEMP

    DSP RPC抢占型任务。

10.3.1.1.1.7. hbDSPRpcCtrlParam

DSP RPC控制参数。

  • 成员

    成员名称

    描述

    dspCoreId

    DSP核ID;0为任意核,1为核0,2为核1。

    rpcCmd

    DSP任务命令。

    priority

    任务优先级,第一优先级。

    customId

    自定义ID,值越小,优先级越高,第二优先级。

    reserved1

    保留字段1。

    Reserved2

    保留字段2。

10.3.1.1.1.8. hbDSPTask_t¶

DSP任务指针。

10.3.1.1.2. API接口¶

10.3.1.1.2.1. hbDSPGetVersion¶

获取DSP的版本信息。

  • 返回值

    • 返回DSP的版本相关信息。

10.3.1.1.2.2. hbDSPRpc¶

向DSP提交一个rpc任务。

  • 参数

    • [out] task 任务句柄,用 hbDSPWaitTaskDone 等待指定任务结束。

    • [in/out] input 表示任务的输入内存。

    • [in/out] output 表示任务的输出内存。

    • [in] rpcCtrlParam 任务控制参数,可以为任务指定运行核和任务优先级。

  • 返回值

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

10.3.1.1.2.3. hbDSPWaitTaskDone¶

等待任务运行结束。

  • 参数

    • [in] task 任务句柄。

    • [in] timeout 任务超时时间, 单位是ms。

  • 返回值

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

注解

  1. timeout > 0 表示等待时间;

  2. timeout = 0 表示一直等待,直到任务完成。

10.3.1.1.2.4. hbDSPReleaseTask¶

释放task handle,需要在 hbDSPWaitTaskDone 之后调用。

  • 参数

    • [in] task task handle。

  • 返回值

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

 

10.3.1.2. 错误码¶

 

10.3.1.3. 配置信息

环境变量:

注解

DSP侧日志可以通过如下步骤获取:

  • 配置环境变量,使能DSP日志输出

  • 启动日志监听服务

 

10.3.1.4. RPC模式

RPC包含两种模式:直连模式与中继模式。

  • 直连模式:不支持多进程,通信开销约200us。

  • 中继模式支持多进程,通信开销约300us。

直连模式配置方法如下:

  1. 直连模式与中继模式冲突,确保后台没有 dsp_relay_server 进程(如有,可kill dsp_relay_server && rm /var/run/vdsp_relay_*);

  2. export HB_DSP_ENABLE_DIRECT_MODE=true。

中继模式配置方法如下:

  1. unset HB_DSP_ENABLE_DIRECT_MODE;

  2. export PATH=$PATH:{path of dsp_relay_server},dsp_relay_server进程启动后常驻。

在使用中继模式运行可执行程序时,请先确保 PATH 路径下存在 dsp_relay_server 文件。若在运行代码时仍出现 异常情况,则意味着 dsp_relay_server 文件没有执行权限,修改权限的示例命令如下:

 

10.3.1.5. CV侧API说明¶

10.3.1.5.1. 内置约束

此小结用来描述内置的参数和属性约束,辅助用户了解接口的隐含属性,减少试错成本。

10.3.1.5.1.1. 输入输出图片的尺寸约束¶

部分算子的输入输出有对应的比例关系,优先遵从算子内的约束。

约束名称

图片宽度最小值

32

图片高度最小值

16

图片宽度最大值

4096

图片高度最大值

2160

10.3.1.5.1.2. 对NV12图片格式的约束

当前部分算子提供了对NV12格式的支持,具体有哪些算子可以查看算子中的参数约束。其中NV12格式的图片需要保证遵循以下约束:

  1. 图片的宽和高均需为偶数;

  2. 图片使用的两个指针需分别指向Y区域数据和UV区域数据;

  3. UV区域的高在像素单位和字节单位上均需等于Y区域高的一半;

  4. UV区域的宽在像素单位上需等于Y区域宽的一半,在字节单位上需等于Y区域的宽。

若NV12图片没有遵循上述约束,则将会被认为是非法的NV12格式,虽然算子已经在内部对以上约束进行了错误检查,但仍可能会导致在算子执行过程中出现预期之外的情况, 请在使用NV12格式时充分保证输入输出的有效性。

10.3.1.5.2. 数据类型与数据结构

10.3.1.5.2.1. hbDSPImageFormat

图片的格式枚举。

  • 成员

    成员名称

    描述

    HB_DSP_IMAGE_FORMAT_Y

    灰度格式。

    HB_DSP_IMAGE_FORMAT_NV12

    NV12格式,通道排布为YYYYYYYY… UVUV…。

    HB_DSP_IMAGE_FORMAT_RGB_P

    RGB_P格式,通道排布为RRRR…GGGG…BBBB…。

    HB_DSP_IMAGE_FORMAT_RGB

    RGB格式,通道排布为RGBRGBRGB…(C3) or RGB*RGB*RGB*…(C4)。

    HB_DSP_IMAGE_FORMAT_BGR_P

    BGR_P格式,通道排布为BBBB…GGGG…RRRR。

    HB_DSP_IMAGE_FORMAT_BGR

    BGR格式,通道排布为BGRBGRBGR…(C3) or BGR*BGR*BGR*…(C4)。

    HB_DSP_IMAGE_FORMAT_YUV444

    YUV_P格式,通道排布为YUVYUVYUV… or YUV*YUV*YUV*…。

    HB_DSP_IMAGE_FORMAT_YUV444_P

    YUV格式,通道排布为YYYY…UUUU…VVVV…。

    HB_DSP_IMAGE_FORMAT_YUV420

    YUV格式,通道排布为YYYY…U…V…。

10.3.1.5.2.2. hbDSPImageType¶

图片的类型枚举,图片的类型包括图片的深度和通道数。

  • 成员

    成员名称

    描述

    HB_DSP_IMAGE_TYPE_U8C1

    单通道uint_8类型。

    HB_DSP_IMAGE_TYPE_U8C3

    三通道uint_8类型。

    HB_DSP_IMAGE_TYPE_U8C4

    四通道uint_8类型。

    HB_DSP_IMAGE_TYPE_S16C1

    单通道int_16类型。

    HB_DSP_IMAGE_TYPE_S16C2

    双通道int_16类型。

    HB_DSP_IMAGE_TYPE_S32C1

    单通道int_32类型。

    HB_DSP_IMAGE_TYPE_F32C1

    单通道float_32类型。

10.3.1.5.2.3. hbDSPImage¶

图片结构体。只支持BPU内存使用。

  • 成员

    成员名称

    描述

    imageFormat

    图片格式。

    imageType

    图片类型。

    width

    图片的像素宽度。

    height

    图片的像素高度。

    stride

    图片的像素偏移量,以字节数量表示。

    dataVirAddr

    图片在arm侧的逻辑地址。

    dataPhyAddr

    图片的物理地址。

    uvVirAddr

    图片格式为NV12时,uv数据逻辑地址。

    uvPhyAddr

    图片格式为NV12时,uv数据物理地址。

    uvStride

    图片格式为NV12时,uv数据的偏移量,以字节数量表示。

10.3.1.5.2.4. hbDSPRoi

图片ROI区域结构体,参数为ROI区域的四条边下标,编号从0开始。ROI区域的width等于right - left + 1,height = bottom - top + 1。

  • 成员

    成员名称

    描述

    left

    ROI区域的左边下标。

    top

    ROI区域的上边下标。

    right

    ROI区域的右边下标。

    bottom

    ROI区域的下边下标。

10.3.1.5.2.5. hbDSPRpcCmd¶

调用CV算子的RPC命令。

  • 成员

    成员名称

    描述

    HB_DSP_RPC_CMD_CV_RESIZE

    DSP CV Resize命令。

    HB_DSP_RPC_CMD_CV_CVT_COLOR

    DSP CV CvtColor命令。

    HB_DSP_RPC_CMD_CV_THRESHOLD

    DSP CV Threshold命令。

    HB_DSP_RPC_CMD_CV_BILATERAL_FILTER

    DSP CV BilateralFilter命令。

    HB_DSP_RPC_CMD_CV_BOX_FILTER

    DSP CV Box Filter命令。

    HB_DSP_RPC_CMD_CV_GAUSSIAN_BLUR

    DSP CV GaussianBlur命令。

    HB_DSP_RPC_CMD_CV_MEDIAN_BLUR

    DSP CV MedianBlur命令。

    HB_DSP_RPC_CMD_CV_SOBEL

    DSP CV Sobel命令。

    HB_DSP_RPC_CMD_CV_ERODE

    DSP CV Erode命令。

    HB_DSP_RPC_CMD_CV_PYR_UP

    DSP CV PyrUp命令。

    HB_DSP_RPC_CMD_CV_EQUALIZE_HIST

    DSP CV Equalize命令。

    HB_DSP_RPC_CMD_CV_FILTER2D

    DSP CV Filter2D命令。

    HB_DSP_RPC_CMD_CV_SEP_FILTER2D

    DSP CV SepFilter2D命令。

    HB_DSP_RPC_CMD_CV_TRANSPOSE

    DSP CV Transpose命令。

    HB_DSP_RPC_CMD_CV_PYR_DOWN

    DSP CV PyrDown命令。

    HB_DSP_RPC_CMD_CV_WARP_AFFINE

    DSP CV WarpAffine命令。

    HB_DSP_RPC_CMD_CV_WARP_PERSPECTIVE

    DSP CV WarpPerspective命令。

    HB_DSP_RPC_CMD_CV_FLIP

    DSP CV Flip命令。

    HB_DSP_RPC_CMD_CV_DILATE

    DSP CV Dilate命令。

    HB_DSP_RPC_CMD_CV_INTEGRAL

    DSP CV Intergral命令。

    HB_DSP_RPC_CMD_CV_CANNY

    DSP CV Canny命令。

    HB_DSP_RPC_CMD_CV_ROTATE

    DSP CV Rotate命令。

    HB_DSP_RPC_CMD_CV_CORNER_HARRIS

    DSP CV CornerHarris命令。

    HB_DSP_RPC_CMD_CV_ROI_RESIZE

    DSP CV RoiResize命令。

    HB_DSP_RPC_CMD_CV_REMAP

    DSP CV Remap命令。

10.3.1.5.2.6. hbDSPCVInterpolationFlags¶

插值方式。

  • 成员

    成员名称

    描述

    HB_CV_INTER_NEAREST

    最邻近插值。

    HB_CV_INTER_LINEAR

    双线性插值。

10.3.1.5.2.7. hbDSPCVBorderTypes¶

填充类型。

  • 成员

    成员名称

    描述

    HB_CV_BORDER_CONSTANT

    值填充,iiiiii|abcdefgh|iiiiiii。

    HB_CV_BORDER_REPLICATE

    边界复制填充,aaaaaa|abcdefgh|hhhhhhh。

10.3.1.5.2.8. hbDSPCVThresholdType

Threshold类型。

  • 成员

    成员名称

    描述

    HB_CV_THRESH_TOZERO

    阈值类型,if(src > thresh) dst = src else dst = 0。

10.3.1.5.2.9. hbDSPCVCannyNorm

Canny norm参数。

  • 成员

    成员名称

    描述

    HB_CV_NORM_L1

    Canny参数,NORM_L1。

10.3.1.5.2.10. hbDSPRotateDegree¶

Rotate degree参数。

  • 成员

    成员名称

    描述

    HB_CV_ROTATE_90_CLOCKWISE

    Rotate参数,顺时针旋转90度。

    HB_CV_ROTATE_180_CLOCKWISE

    Rotate参数,顺时针旋转180度。

    HB_CV_ROTATE_90_COUNTERCLOCKWISE

    Rotate参数,逆时针旋转90度。

10.3.1.5.2.11. hbDSPResizeParam¶

Resize算子参数。

  • 成员

    成员名称

    描述

    interpolation

    Resize 中的插值类型,只支持hbDSPCVInterpolationFlags中的类型。

10.3.1.5.2.12. hbDSPWarpAffineParam¶

WarpAffine算子参数。

  • 成员

    成员名称

    描述

    transformMatrix[6]

    WarpAffine 逆转换矩阵(dst->src),2X3矩阵。

    interpolation

    WarpAffine 中的插值类型,只支持 hbDSPCVInterpolationFlags 中的类型。

    borderType

    保留参数。

    borderValue

    保留参数。

10.3.1.5.2.13. hbDSPWarpPerspectiveParam

WarpPerspective算子参数。

  • 成员

    成员名称

    描述

    transformMatrix[9]

    WarpPerspective 转换矩阵,3X3矩阵。

    interpolation

    WarpPerspective 中的插值类型,支持 hbDSPCVInterpolationFlags 中的类型。

    borderType

    保留参数。

    borderValue

    保留参数。

10.3.1.5.2.14. hbDSPFlipParam

Flip算子参数。

  • 成员

    成员名称

    描述

    flipMode

    翻转参数,0为绕 X 轴翻转,大于0的正整数为绕 Y 轴翻转。

10.3.1.5.2.15. hbDSPThresholdParam¶

Threshold算子参数。

  • 成员

    成员名称

    描述

    thresh

    阈值,值小于等于255。

    maxVal

    保留参数。

    type

    阈值类型,保留参数。

10.3.1.5.2.16. hbDSPBilateralFilterParam¶

BilateralFilter算子参数。

  • 成员

    成员名称

    描述

    sigmaColor

    颜色空间中的sigma滤波参数。

    sigmaSpace

    坐标空间中的sigma滤波参数。

    kernelSize

    滤波核大小,支持大小为 5 或者 9 。

    borderType

    填充类型,支持 hbDSPCVBorderTypes 中的类型。

10.3.1.5.2.17. hbDSPBoxFilterParam¶

BoxFilter算子参数。

  • 成员

    成员名称

    描述

    kernelHeight

    滤波核的高度,值为[3,31)间的奇数,核高和宽相等。

    kernelWidth

    滤波核的宽度,值为[3,31)间的奇数,核宽和高相等。

    pointLocX

    保留参数。

    pointLocY

    保留参数。

    normalize

    保留参数。

    borderType

    填充类型,支持 hbDSPCVBorderTypes 中的类型。

10.3.1.5.2.18. hbDSPGaussianBlurParam¶

GaussianBlur算子参数。

  • 成员

    成员名称

    描述

    sigmaX

    保留参数。

    sigmaY

    保留参数。

    kernelSize

    滤波核的尺寸,支持 3X3 和 5X5 的尺寸。

    borderType

    填充类型,支持 hbDSPCVBorderTypes 中的类型。

10.3.1.5.2.19. hbDSPMedianBlurParam¶

MedianBlur算子参数。

  • 成员

    成员名称

    描述

    maskWidth

    滤波核大小,需要为大于 1 小于 9 的奇数。

10.3.1.5.2.20. hbDSPSobelParam¶

Sobel算子参数。

  • 成员

    成员名称

    描述

    scale

    保留参数。

    delta

    保留参数。

    dx

    导数 X 的阶。

    dy

    导数 Y 的阶。

    kernelSize

    sobel扩展核大小,支持 3 和 5 。

    borderType

    填充类型,支持 hbDSPCVBorderTypes 中的类型。

10.3.1.5.2.21. hbDSPErodeParam¶

Erode算子参数。

  • 成员

    成员名称

    描述

    pointLocX

    保留参数 。

    pointLocY

    保留参数 。

    iterations

    保留参数 。

    borderType

    填充类型,支持 hbDSPCVBorderTypes 中的类型。

    borderValue

    保留参数。

10.3.1.5.2.22. hbDSPDilateParam¶

Dilate算子参数。

  • 成员

    成员名称

    描述

    pointLocX

    保留参数。

    pointLocY

    保留参数。

    iterations

    保留参数。

    borderType

    填充类型,支持 hbDSPCVBorderTypes 中的类型。

    borderValue

    保留参数。

10.3.1.5.2.23. hbDSPFilter2DParam¶

Filter2D算子参数。

  • 成员

    成员名称

    描述

    delta

    保留参数。

    pointLocX

    保留参数。

    pointLocY

    保留参数。

    borderType

    填充类型,支持 hbDSPCVBorderTypes 中的类型。

10.3.1.5.2.24. hbDSPSepFilter2DParam

SepFilter2D算子参数。

  • 成员

    成员名称

    描述

    delta

    保留参数。

    pointLocX

    保留参数。

    pointLocY

    保留参数。

    borderType

    填充类型,支持 hbDSPCVBorderTypes 中的类型。

10.3.1.5.2.25. hbDSPCannyParam¶

Canny算子参数。

  • 成员

    成员名称

    描述

    threshold1

    低位阈值。

    threshold2

    高位阈值。

    kernelSize

    核尺寸,支持 3X3, 5X5 和 7x7。

    norm

    支持 hbDSPCVCannyNorm 中的类型。

    overlap

    保留参数。

    borderType

    填充类型,支持 hbDSPCVBorderTypes 中的类型。

10.3.1.5.2.26. hbDSPRotateParam¶

Rotate算子参数。

  • 成员

    成员名称

    描述

    rotateCode

    旋转角度,支持 hbDSPRotateDegree 中的类型。

10.3.1.5.2.27. hbDSPCornerHarrisParam

CornerHarris算子参数。

  • 成员

    成员名称

    描述

    borderType

    填充类型,支持 hbDSPCVBorderTypes 中的类型。

    kernelSize

    核尺寸,支持 3X3, 5X5 和 7x7。

    blockSize

    邻域尺寸,取值为[3, 27]内的奇数

    sensitivity

    检测器自由参数,推荐取值范围为[0.04, 0.06]

10.3.1.5.2.28. hbDSPRoiResizeParam¶

RoiResize算子参数。

  • 成员

    成员名称

    描述

    interpolation

    插值类型,支持 hbDSPCVInterpolationFlags 中的类型。

    paddingValue[4]

    Padding 值,每个通道对应一个值,NV12使用三个通道。

10.3.1.5.2.29. hbDSPRemapParam¶

Remap算子参数。

  • 成员

    成员名称

    描述

    interpolation

    Remap 中的插值类型,支持 hbDSPCVInterpolationFlags 中的类型。

    borderType

    保留参数。

    borderValue

    保留参数。

10.3.1.5.3. CV API接口¶

10.3.1.5.3.1. hbDSPResize¶

调用Resize API。

  • 参数

    • [out] task 任务句柄,用 hbDSPWaitTaskDone 等待指定任务结束。

    • [in/out] dstImg 输出图像,type和format与输入图像一致,图像尺寸可由输入图像和缩放比例计算得出。

    • [in] srcImg 输入图像,type支持U8C1,format支持Y和nv12。

    • [in] resizeParam 算子参数。

    • [in] ctrlParam 任务控制参数,可以为任务指定运行核和任务优先级。

  • 返回值

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

10.3.1.5.3.2. hbDSPCvtColor¶

调用 CvtColor API,支持RGB转换为GRAY,RGB与BGR转换为NV12。

  • 参数

    • [out] task 任务句柄,用 hbDSPWaitTaskDone 等待指定任务结束。

    • [in/out] dstImg 输出图像,大小与输入图像一致,type支持U8C1,format支持Y和nv12。

    • [in] srcImg 输入图像,type支持U8C3,format支持RGB和BGR。

    • [in] ctrlParam 任务控制参数,可以为任务指定运行核和任务优先级。

  • 返回值

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

  • 转换支持表

    srcFmtdstFmt

    gray

    nv12

    rgb_p

    rgb

    bgr_p

    bgr

    yuv_p

    yuv

    gray

    N

    N

    N

    N

    N

    N

    N

    N

    nv12

    N

    N

    N

    N

    N

    N

    N

    N

    rgb_p

    N

    N

    N

    N

    N

    N

    N

    N

    rgb

    Y

    Y

    N

    N

    N

    N

    N

    N

    bgr_p

    N

    N

    N

    N

    N

    N

    N

    N

    bgr

    N

    Y

    N

    N

    N

    N

    N

    N

    yuv_p

    N

    N

    N

    N

    N

    N

    N

    N

    yuv

    N

    N

    N

    N

    N

    N

    N

    N

10.3.1.5.3.3. hbDSPWarpAffine¶

调用 WarpAffine API。

  • 参数

    • [out] task 任务句柄,用 hbDSPWaitTaskDone 等待指定任务结束。

    • [in/out] dstImg 输出图像,type和format与输入图像一致,尺寸大小由转换矩阵计算得出。

    • [in] srcImg 输入图像,type支持U8C1,format支持Y和nv12。

    • [in] warpAffineParam 算子参数。

    • [in] ctrlParam 任务控制参数,可以为任务指定运行核和任务优先级。

  • 返回值

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

10.3.1.5.3.4. hbDSPWarpPerspective¶

调用 WarpPerspective API。

  • 参数

    • [out] task 任务句柄,用 hbDSPWaitTaskDone 等待指定任务结束。

    • [in/out] dstImg 输出图像,type、format和size与输入图像一致。

    • [in] srcImg 输入图像,type支持U8C1,format支持Y和nv12。

    • [in] warpPerspectiveParam 算子参数。

    • [in] ctrlParam 任务控制参数,可以为任务指定运行核和任务优先级。

  • 返回值

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

10.3.1.5.3.5. hbDSPThreshold¶

调用 Threshold API。

  • 参数

    • [out] task 任务句柄,用 hbDSPWaitTaskDone 等待指定任务结束。

    • [in/out] dstImg 输出图像,支持U8C1,format Y,大小和输入图像一致。

    • [in] srcImg 输入图像,type支持U8C1,format支持Y。

    • [in] thresholdParam 算子参数。

    • [in] ctrlParam 任务控制参数,可以为任务指定运行核和任务优先级。

  • 返回值

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

10.3.1.5.3.6. hbDSPBilateralFilter¶

调用 bilateralFilter API。

  • 参数

    • [out] task 任务句柄,用 hbDSPWaitTaskDone 等待指定任务结束。

    • [in/out] dstImg 输出图像,type、format和大小与输入图像一致。

    • [in] srcImg 输入图像,type支持U8C1,format支持Y。

    • [in] bilateralParam 算子参数。

    • [in] ctrlParam 任务控制参数,可以为任务指定运行核和任务优先级。

  • 返回值

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

10.3.1.5.3.7. hbDSPBoxFilter¶

调用 boxFilter API。

  • 参数

    • [out] task 任务句柄,用 hbDSPWaitTaskDone 等待指定任务结束。

    • [in/out] dstImg 输出图像,type、format和大小与输入图像一致。

    • [in] srcImg 输入图像,type支持U8C1,format支持Y。

    • [in] boxParam 算子参数。

    • [in] ctrlParam 任务控制参数,可以为任务指定运行核和任务优先级。

  • 返回值

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

10.3.1.5.3.8. hbDSPGaussianBlur¶

调用 gaussianBlur API。

  • 参数

    • [out] task 任务句柄,用 hbDSPWaitTaskDone 等待指定任务结束。

    • [in/out] dstImg 输出图像,type、format和大小与输入图像一致。

    • [in] srcImg 输入图像,type支持U8C1,format支持Y。

    • [in] gaussianParam 算子参数。

    • [in] ctrlParam 任务控制参数,可以为任务指定运行核和任务优先级。

  • 返回值

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

10.3.1.5.3.9. hbDSPMedianBlur¶

调用 medianBlur API。

  • 参数

    • [out] task 任务句柄,用 hbDSPWaitTaskDone 等待指定任务结束。

    • [in/out] dstImg 输出图像,type、format和大小与输入图像一致。

    • [in] srcImg 输入图像,type支持U8C1,format支持Y。

    • [in] medianParam 算子参数。

    • [in] ctrlParam 任务控制参数,可以为任务指定运行核和任务优先级。

  • 返回值

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

10.3.1.5.3.10. hbDSPSobel¶

调用 Sobel API。

  • 参数

    • [out] task 任务句柄,用 hbDSPWaitTaskDone 等待指定任务结束。

    • [in/out] dstImg 输出图像,format和大小与输入图像一致,type支持S16C1。

    • [in] srcImg 输入图像,type支持U8C1,format支持Y。

    • [in] sobelParam 算子参数。

    • [in] ctrlParam 任务控制参数,可以为任务指定运行核和任务优先级。

  • 返回值

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

10.3.1.5.3.11. hbDSPErode¶

调用 Erode API。

  • 参数

    • [out] task 任务句柄,用 hbDSPWaitTaskDone 等待指定任务结束。

    • [in/out] dstImg 输出图像,type、format和大小与输入图像一致。

    • [in] srcImg 输入图像,type支持U8C1,format支持Y。

    • [in] krnImg 算子处理核,type支持U8C1,format支持Y,宽和高为小于等于9的奇数。

    • [in] erodeParam 算子参数。

    • [in] ctrlParam 任务控制参数,可以为任务指定运行核和任务优先级。

  • 返回值

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

10.3.1.5.3.12. hbDSPDilate¶

调用 Dilate API。

  • 参数

    • [out] task 任务句柄,用 hbDSPWaitTaskDone 等待指定任务结束。

    • [in/out] dstImg 输出图像,type、format和大小与输入图像一致。

    • [in] srcImg 输入图像,type支持U8C1,format支持Y。

    • [in] krnImg 算子处理核,type支持U8C1,format支持Y,宽和高为小于等于9的奇数。

    • [in] dilateParam 算子参数。

    • [in] ctrlParam 任务控制参数,可以为任务指定运行核和任务优先级。

  • 返回值

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

10.3.1.5.3.13. hbDSPPyrUp¶

调用 PyrUp API。

  • 参数

    • [out] task 任务句柄,用 hbDSPWaitTaskDone 等待指定任务结束。

    • [in/out] dstImg 输出图像,type和format与输入图像一致,其长和宽均为输入图像的两倍。

    • [in] srcImg 输入图像,type支持U8C1,format支持Y和nv12。

    • [in] ctrlParam 任务控制参数,可以为任务指定运行核和任务优先级。

  • 返回值

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

10.3.1.5.3.14. hbDSPEqualizeHist¶

调用 EqualizeHist API。

  • 参数

    • [out] task 任务句柄,用 hbDSPWaitTaskDone 等待指定任务结束。

    • [in/out] dstImg 输出图像,type、format和大小与输入图像一致。

    • [in] srcImg 输入图像,type支持U8C1,format支持Y。

    • [in] ctrlParam 任务控制参数,可以为任务指定运行核和任务优先级。

  • 返回值

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

10.3.1.5.3.15. hbDSPFilter2D

调用 Filter2D API。

  • 参数

    • [out] task 任务句柄,用 hbDSPWaitTaskDone 等待指定任务结束。

    • [in/out] dstImg 输出图像,type、format和大小与输入图像一致。

    • [in] srcImg 输入图像,type支持U8C1,format支持Y。

    • [in] krnImg 算子处理核,type支持F32C1,format支持Y,尺寸为小于等于9的正奇数。

    • [in] filter2DParam 算子参数。

    • [in] ctrlParam 任务控制参数,可以为任务指定运行核和任务优先级。

  • 返回值

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

10.3.1.5.3.16. hbDSPSepFilter2D

调用 SepFilter2D API。

  • 参数

    • [out] task 任务句柄,用 hbDSPWaitTaskDone 等待指定任务结束。

    • [in/out] dstImg 输出图像,type、format和大小与输入图像一致。

    • [in] srcImg 输入图像,type支持U8C1,format支持Y。

    • [in] krnXImg 算子每行滤波系数,type支持F32C1,format支持Y,大小为1xN,N为小于等于9的正奇数。

    • [in] krnYImg 算子每列滤波系数,type支持F32C1,format支持Y,大小为Nx1,N为小于等于9的正奇数。

    • [in] sepFilter2DParam 算子参数。

    • [in] ctrlParam 任务控制参数,可以为任务指定运行核和任务优先级。

  • 返回值

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

10.3.1.5.3.17. hbDSPTranspose

调用 Transpose API。

  • 参数

    • [out] task 任务句柄,用 hbDSPWaitTaskDone 等待指定任务结束。

    • [in/out] dstImg 输出图像,type与format与输入图像一致,其width等于输入图像的height,height等于输入图像的width。

    • [in] srcImg 输入图像,type支持U8C1,format支持Y和nv12。

    • [in] ctrlParam 任务控制参数,可以为任务指定运行核和任务优先级。

  • 返回值

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

10.3.1.5.3.18. hbDSPPyrDown¶

调用 PyrDown API。

  • 参数

    • [out] task 任务句柄,用 hbDSPWaitTaskDone 等待指定任务结束。

    • [in/out] dstImg 输出图像,type与format与输入图像一致,其width为输入图像width的一半(上取整),其height为输入图像height的一半(上取整)。

    • [in] srcImg 输入图像,type支持U8C1,format支持Y和nv12。

    • [in] ctrlParam 任务控制参数,可以为任务指定运行核和任务优先级。

  • 返回值

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

10.3.1.5.3.19. hbDSPFlip¶

调用 Flip API。

  • 参数

    • [out] task 任务句柄,用 hbDSPWaitTaskDone 等待指定任务结束。

    • [in/out] dstImg 输出图像,type、format和大小与输入图像一致。

    • [in] srcImg 输入图像,type支持U8C1,format支持Y和nv12。

    • [in] flipParam 算子参数,参数中值为0表示沿x轴翻转,值为正整数表示沿y轴翻转。

    • [in] ctrlParam 任务控制参数,可以为任务指定运行核和任务优先级。

  • 返回值

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

10.3.1.5.3.20. hbDSPIntegral¶

调用 Integral API。

  • 参数

    • [out] task 任务句柄,用 hbDSPWaitTaskDone 等待指定任务结束。

    • [in/out] dstImg 输出图像,format与输入图像一致,type支持S32C1,其width为输入图像的width加一,其height为输入图像的height加一。

    • [in] srcImg 输入图像,type支持U8C1,format支持Y。

    • [in] ctrlParam 任务控制参数,可以为任务指定运行核和任务优先级。

  • 返回值

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

10.3.1.5.3.21. hbDSPCanny¶

调用 Canny API。

  • 参数

    • [out] task 任务句柄,用 hbDSPWaitTaskDone 等待指定任务结束。

    • [in/out] dstImg 输出图像,type、format和大小与输入图像一致。

    • [in] srcImg 输入图像,type支持U8C1,format支持Y。

    • [in] cannyParam 算子参数。

    • [in] ctrlParam 任务控制参数,可以为任务指定运行核和任务优先级。

  • 返回值

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

10.3.1.5.3.22. hbDSPRotate¶

调用 Rotate API。

  • 参数

    • [out] task 任务句柄,用 hbDSPWaitTaskDone 等待指定任务结束。

    • [in/out] dstImg 输出图像,type和format与输入图像一致,其大小根据旋转角度与输入图像的大小决定。

    • [in] srcImg 输入图像,type支持U8C1,format支持Y和nv12。

    • [in] rotateParam 算子参数。

    • [in] ctrlParam 任务控制参数,可以为任务指定运行核和任务优先级。

  • 返回值

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

10.3.1.5.3.23. hbDSPCornerHarris¶

调用 CornerHarris API。

  • 参数

    • [out] task 任务句柄,用 hbDSPWaitTaskDone 等待指定任务结束。

    • [in/out] dstImg 输出图像,format与输入图像一致,type支持S32C1,大小与输入一致。

    • [in] srcImg 输入图像,type支持U8C1,format支持Y。

    • [in] cornerHarrisParam 算子参数。

    • [in] ctrlParam 任务控制参数,可以为任务指定运行核和任务优先级。

  • 返回值

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

10.3.1.5.3.24. hbDSPRoiResize¶

调用 RoiResize API。

  • 参数

    • [out] task 任务句柄,用 hbDSPWaitTaskDone 等待指定任务结束。

    • [in/out] dstImg 输出图像,format和type与输入图像一致。

    • [in] srcImg 输入图像,type支持U8C1,format支持Y和nv12。

    • [in] roi ROI区域,有效范围取ROI区域与srcImg的交集,且有效范围需要符合图片的内置约束。

    • [in] roiResizeParam 算子参数。

    • [in] ctrlParam 任务控制参数,可以为任务指定运行核和任务优先级。

  • 返回值

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

10.3.1.5.3.25. hbDSPRemap

调用 Remap API。

  • 参数

    • [out] task 任务句柄,用 hbDSPWaitTaskDone 等待指定任务结束。

    • [in/out] dstImg 输出图像,format和type与输入图像一致。

    • [in] srcImg 输入图像,type支持U8C1,format支持Y和nv12。

    • [in] map1 map1映射坐标(x,y),type支持S16C2,大小与输出图像一致,坐标交错排列xyxy。

    • [in] map2 map2映射坐标(x,y),type支持S16C2,大小与输出图像一致,坐标交错排列xyxy。当插值类型为HB_CV_INTER_NEAREST时,只用到map1,当插值类型为HB_CV_INTER_LINEAR时,存储坐标权重,可自定义或者由opencv接口convertMaps转换得到。

    • [in] remapParam 算子参数。

    • [in] ctrlParam 任务控制参数,可以为任务指定运行核和任务优先级。

  • 返回值

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

注解

  1. 由于DSP 实现分 tile 计算,且 TCM 大小限制 J5 2 x 128 KB,所以 tile 也有大小限制。分 tile 计算需要根据输出 tile 的大小映射到输入 tile 大小,所以当前缩小变换时,输入 tile 会比输出 tile 大(当前 remap 实现缩小比例限制 >= 0.25);

  2. 如果输出 tile 需要的输入 tile 过大,会走到内部未优化的分支,性能会特别慢,此时可以检查 map 数据是否存在上述情况。

../../../_images/remap_restrict.png

 

10.3.1.6. NN侧API说明¶

10.3.1.6.1. 数据类型与数据结构

10.3.1.6.1.1. hbDSPDataLayout¶

DSP NN数据排布类型枚举。

  • 成员

    成员名称

    描述

    HB_DSP_LAYOUT_NONE

    DSP NN 无排布,使用默认参数。

    HB_DSP_LAYOUT_NCHW

    DSP NN 数据 NCHW 顺序排布。

    HB_DSP_LAYOUT_NHWC

    DSP NN 数据 NHWC 顺序排布。

10.3.1.6.1.2. hbDSPDataType

DSP NN数据类型枚举。

  • 成员

    成员名称

    描述

    HB_DSP_TENSOR_TYPE_S8

    DSP NN 8位int类型。

    HB_DSP_TENSOR_TYPE_S16

    DSP NN 16位int类型。

    HB_DSP_TENSOR_TYPE_S32

    DSP NN 32位int类型。

    HB_DSP_TENSOR_TYPE_F32

    DSP NN float类型。

10.3.1.6.1.3. hbDSPTensor¶

  • 成员

    成员名称

    描述

    hbDSPTensorShape

    张量尺寸。

    dataLayout

    张量布局。

    dataType

    数据类型。

    dataPhyAddr

    张量数据物理地址

10.3.1.6.1.4. hbDSPNNCmd¶

DSP调用NN API的RPC命令。

  • 成员

    成员名称

    描述

    HB_DSP_RPC_CMD_NN_QUANTIZE

    DSP NN Quantize命令。

    HB_DSP_RPC_CMD_NN_DEQUANTIZE

    DSP NN Dequantize命令。

10.3.1.6.1.5. hbDSPQuantizeParam¶

量化算子参数。

  • 成员

    成员名称

    描述

    scaleChannel

    scale通道数。

    zeroPointChannel

    zeroPoint通道数。

    scalePhyAddr

    scale物理地址,其中的数据必须是float32_t类型。

    zeroPointPhyAddr

    zeroPoint物理地址,其中的数据必须是float32_t类型。

    min

    量化最小值。

    max

    量化最大值。

10.3.1.6.1.6. hbDSPDequantizeParam¶

反量化算子参数。

  • 成员

    成员名称

    描述

    scaleChannel

    scale通道数。

    zeroPointChannel

    zeroPoint通道数。

    scalePhyAddr

    scale物理地址,其中的数据必须是float32_t类型。

    zeroPointPhyAddr

    zeroPoint物理地址,其中的数据类型必须与输入数据类型一致。

注解

  1. scaleChannel取值为1或者与输入通道数一致;

  2. zeroPointChannel取值为 0、1或者scaleChannel,且zeroPointChannel <= scaleChannel。

10.3.1.6.2. NN API接口

10.3.1.6.2.1. hbDSPQuantize¶

调用Quantize API。

  • 参数

    • [out] task 任务句柄,用 hbDSPWaitTaskDone 等待指定任务结束。

    • [in/out] dstTs 输出张量。

    • [in] srcTs 输入张量。

    • [in] quantizeParam 算子参数。

    • [in] rpcCtrlParam 任务控制参数,可以为任务指定运行核和任务优先级。

  • 返回值

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

10.3.1.6.2.2. hbDSPDequantize¶

  • 参数

    • [out] task 任务句柄,用 hbDSPWaitTaskDone 等待指定任务结束。

    • [in/out] dstTs 输出张量。

    • [in] srcTs 输入张量。

    • [in] dequantizeParam 算子参数。

    • [in] rpcCtrlParam 任务控制参数,可以为任务指定运行核和任务优先级。

  • 返回值

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

10.3.1.6.3. NN PLUGIN¶

NN PLUGIN作为libdnn的plugin被调用,在使用libdnn进行模型推理时,派发到ARM上的quantize或dequantize算子可使用如下环境变量控制ARM是否将计算卸载到DSP上执行。

 

 

10.3.2. DSP运行时API¶

10.3.2.1. 数据类型与数据结构¶

10.3.2.1.1. handle_fn¶

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

10.3.2.1.2. DSPLogLevel

DSP中打印日志的级别。

 

10.3.2.2. API接口¶

10.3.2.2.1. hb_dsp_set_log_level¶

DSP日志级别初始化。

10.3.2.2.2. hb_dsp_env_init¶

DSP环境初始化。

  • 返回值

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

10.3.2.2.3. hb_dsp_start¶

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

10.3.2.2.4. hb_dsp_mem_map¶

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

  • 参数

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

    • [in] size 内存大小。

  • 返回值

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

10.3.2.2.5. hb_dsp_mem_unmap¶

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

  • 参数

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

10.3.2.2.6. hb_dsp_register_fn¶

注册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¶

注销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

 

文档内容对你是否有帮助?