K230 DPU API参考
1. 概述
1.1 概述
DPU 主要负责 3D 结构光的深度计算,为 3D 人脸识别提供深度信息。
1.2 功能描述
1.2.1 绑定模式调用流程
1.2.2 非绑定模式调用流程
2. API 参考
2.1 DPU 使用
该功能模块提供以下API:
- kd_mpi_dpu_init
- kd_mpi_dpu_delete
- kd_mpi_dpu_parse_file
- kd_mpi_dpu_set_dev_attr
- kd_mpi_dpu_get_dev_attr
- kd_mpi_dpu_set_ref_image
- kd_mpi_dpu_set_processed_ref_image
- kd_mpi_dpu_set_template_image
- kd_mpi_dpu_start_dev
- kd_mpi_dpu_set_chn_attr
- kd_mpi_dpu_get_chn_attr
- kd_mpi_dpu_start_chn
- kd_mpi_dpu_stop_chn
- kd_mpi_dpu_send_frame
- kd_mpi_dpu_get_frame
- kd_mpi_dpu_release_frame
2.1.1 kd_mpi_dpu_init
【描述】
初始化 dpu 设备
【语法】
k_s32 kd_mpi_dpu_init(k_dpu_init_t *init);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
init | 初始化 dpu 设备的结构体指针。 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功 |
非0 | 失败,其值参见错误码 |
【芯片差异】
无。
【需求】
- 头文件:mpi_dpu_api.h
- 库文件:libdpu.a
【注意】
无
【举例】
无
【相关主题】
2.1.2 kd_mpi_dpu_delete
【描述】
删除已经初始化的 dpu 设备。
【语法】
k_s32 kd_mpi_dpu_delete();
【 参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
无 | 无 | 无 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功 |
非0 | 失败,其值参见错误码 |
【芯片差异】
无
【需求】
- 头文件:mpi_dpu_api.h
- 库文件:libdpu.a
【注意】
需要在对 dpu 设备初始化以后才可以调用此函数 delete dpu。
【举例】
无
【相关主题】
无
2.1.3 kd_mpi_dpu_parse_file
【描述】
从 dpu 配置文件中解析 dpu 配置参数。
【语法】
k_s32 kd_mpi_dpu_parse_file(const k_char *param_path, k_dpu_dev_param_t *param, k_dpu_lcn_param_t *lcn_param, k_dpu_ir_param_t *ir_param, k_dpu_user_space_t *g_temp_space);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
param_path | 配置文件的路径 | 输入 |
param | dpu 设备参数的结构体指针,从配置文件中解析出来的设备参数保存在此结构体中 | 输出 |
lcn_param | lcn 通道参数的结构体指针,从配置文件中解析出来的通道参数保存在此结构体中。 | 输出 |
ir_param | ir 通道参数的结构体指针,从配置文件中解析出来的通道参数保存在此结构体中。 | 输出 |
g_temp_space | 模板图结构体指针,从配置文件中解析出来的模板图首地址保存在此结构体中。 | 输 出 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功 |
非0 | 失败,其值参见错误码 |
【芯片差异】
无
【需求】
- 头文件:mpi_dpu_api.h
- 库文件:libdpu.a
【注意】
- dpu 设备参数包括长周期参数和短周期参数。
- lcn_param 和 ir_param 这两个通道参数是 dpu 设备参数的子集,如果已经配置了 dpu 设备参数,可以忽略这两个通道参数。如果需要更改这两个通道参数结构体中的参数,既可以更改通道参数以后调用 kd_mpi_dpu_set_chn_attr 来使更改生效,也可以更改设备参数以后调用 kd_mpi_dpu_set_dev_attr 来使更改生效。如果只更改了通道参数,那么调用 kd_mpi_dpu_set_chn_attr 效率更高。
- 模板图结构体中包含了从配置文件中解析出来的模板图的虚拟地址和物理地址,以及模板图的大小。
【举例】
无
【相关主题】
2.1.4 kd_mpi_dpu_set_dev_attr
【描述】
配置 dpu 设备属性。
【语法】
k_s32 kd_mpi_dpu_set_dev_attr(k_dpu_dev_attr_t *attr);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
attr | dpu 设备属性 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功 |
非0 | 失败,其值参见错误码 |
【芯 片差异】
无
【需求】
- 头文件:mpi_dpu_api.h
- 库文件:libdpu.a
【注意】
- 只有对 dpu 设备初始化以后才可以调用此函数配置 dpu 设备属性。
- 在首次配置 dpu 设备属性时,应该将 attr 中的 tytz_temp_recfg 和 align_depth_recfg 配置为 K_TRUE,以使 dpu 加载对应参数。后续更改 dpu 设备属性时,如果对应的长周期参数没有改变,将这两个成员配置为 K_FALSE,可以节省 dpu 再次加载长周期参数的时间。
【举例】
无
【相关主题】
2.1.5 kd_mpi_dpu_get_dev_attr
【描述】
获取 dpu 设备属性。
【语法】
k_s32 kd_mpi_dpu_set_dev_attr(k_dpu_dev_attr_t *attr);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
attr | dpu 设备属性 | 输出 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功 |
非0 | 失败,其值参见错误码 |
【芯片差异】
无
【需求】
- 头文件:mpi_dpu_api.h
- 库文件:libdpu.a
【注意】
无
【举例】
无
【相关主题】
2.1.6 kd_mpi_dpu_set_ref_image
【描述】
配置 dpu 参考图。
【语法】
k_s32 kd_mpi_dpu_set_ref_image(const k_char *ref_path);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
ref_path | 参考图路径 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功 |
非0 | 失败,其值参见错误码 |
【芯片差异】
无
【需求】
- 头文件:mpi_dpu_api.h
- 库文件:libdpu.a
【注意】
- 需要在配置 dpu 设备属性以后再调用此函数配置参考图。
【举例】
无
【相关主题】
无
2.1.7 kd_mpi_dpu_set_processed_ref_image
【描述】
配置离线处理后的 dpu 参考图。
【语法】
k_s32 kd_mpi_dpu_set_processed_ref_image(const k_char *ref_path);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
ref_path | 处理后的参考图路径 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功 |
非0 | 失败,其值参见错误码 |
【芯片差异】
无
【需求】
- 头文件:mpi_dpu_api.h
- 库文件:libdpu.a
【注意】
- 需要在配置 dpu 设备属性以后再调用此函 数配置参考图,配置的参考图需要离线处理好,调用此函数可以比 kd_mpi_dpu_set_ref_image 节省约 70ms 时间。
【举例】
无
【相关主题】
无
2.1.8 kd_mpi_dpu_set_template_image
【描述】
配置 dpu 模板图
【语法】
k_s32 kd_mpi_dpu_set_template_image(k_dpu_user_space_t *temp_space);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
temp_space | 模板图结构体。 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功 |
非0 | 失败,其值参见错误码 |
【芯片差异】
无
【需求】
- 头文件:mpi_dpu_api.h
- 库文件:libdpu.a
【注意】
- 需要在配置 dpu 设备属性以后再调用此函数配置参考图。
- temp_space 需要在 kd_mpi_dpu_parse_file 时作为参数传入,以从配置文件中获取模板图信息。
【举例】
无
【相关主题】
k_dpu_user_space_t kd_mpi_dpu_parse_file
2.1.9 kd_mpi_dpu_start_dev
【描述】
启动 dpu 设备
【语法】
k_s32 kd_mpi_dpu_start_dev();
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
无 | 无 | 无 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功 |
非0 | 失败,其值参见错误码 |
【芯片差异】
无
【需求】
- 头文件:mpi_dpu_api.h
- 库文件:libdpu.a
【注意】
无
【举例】
无
【相关主题】
无
2.1.10 kd_mpi_dpu_set_chn_attr
【描述】
配置 dpu 通道属性
【语法】
k_s32 kd_mpi_dpu_set_chn_attr(k_dpu_chn_lcn_attr_t *lcn_attr, k_dpu_chn_ir_attr_t *ir_attr);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
lcn_attr | 散斑图通道属性。 | 输入 |
ir_attr | 红外图通道属性。 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功 |
非0 | 失败,其值参见错误码 |
【芯片差异】
无
【需求】
- 头文件:mpi_dpu_api.h
- 库文件:libdpu.a
【注意】
- 当前 dpu 设备一共有两个通道:0 和 1。通过配置 lcn_attr->chn_num 和 ir_attr->chn_num(如果开启了红外图通道) 来指明散斑图和红外图各自的输入输出通道。
- 在首次启动 dpu 设备 kd_mpi_dpu_start_dev 以后,应该调用此函数来配置通道属性,其中散斑图通道必须配置,红外图通道如果没有开启可以不配置(配置为 NULL)。
- 在运行过程中如果只需要更改某个通道的属性,可以只传入该通道的结构体参数,另一个通道的参数可以为 NULL。也可以同时传入两个通道的参数。如果两个通道的参数都为 NULL,则该次配置是不会生效的。
【举例】
无
【相关主题】
k_dpu_chn_lcn_attr_t k_dpu_chn_ir_attr_t
2.1.11 kd_mpi_dpu_get_chn_attr
【描述】
获取 dpu 通道属性。
【语法】
k_s32 kd_mpi_dpu_get_chn_attr(k_dpu_chn_lcn_attr_t *lcn_attr, k_dpu_chn_ir_attr_t *ir_attr);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
lcn_attr | 散斑图通道属性。 | 输出 |
ir_attr | 红外图通道属性。 | 输出 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功 |
非0 | 失败,其值参见错误码 |
【芯片差异】
无
【需求】
- 头文件:mpi_dpu_api.h
- 库文件:libdpu.a
【注意】
无
【举例】
无
【相关主题】
k_dpu_chn_lcn_attr_t k_dpu_chn_ir_attr_t
2.1.12 kd_mpi_dpu_start_chn
【描述】
启动 dpu 通道
【语法】
k_s32 kd_mpi_dpu_start_chn(k_u32 chn_num);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
chn_num | 通道号 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功 |
非0 | 失败,其值参见错误码 |
【芯片差异】
无
【需求】
- 头文件:mpi_dpu_api.h
- 库文件:libdpu.a
【注意】
- 通道号应该为 0 或 1。
【举例】
无
【相关主题】
无
2.1.13 kd_mpi_dpu_stop_chn
【描述】
停止 dpu 通道
【语法】
k_s32 kd_mpi_dpu_stop_chn(k_u32 chn_num);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
chn_num | 通道号 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功 |
非0 | 失败,其值参见错误码 |
【芯片差异】
无
【需求】
- 头文件:mpi_dpu_api.h
- 库文件:libdpu.a
【注意】
- 通道号应为 0 或 1。
【举例】
无
【相关主题】
无
2.1.14 kd_mpi_dpu_send_frame
【描述】
在非绑定模式下,向 dpu 发送一帧数据。
【语法】
k_s32 kd_mpi_dpu_send_frame(k_u32 chn_num, k_u64 addr, k_s32 s32_millisec);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
chn_num | 通道号 | 输入 |
addr | 发送数据的物理地址 | 输入 |
s32_millisec | 等待时间。 当此参数设置为 -1 时,阻塞模式,直到发送成功才会返回; 当此参数设置为 0 时,非阻塞模式,发送成功立即返回零,发送失败立即返回其他值,具体失败信息参考 dpu 错误码; | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功 |
非0 | 失败,其值参见错误码 |
【芯片差异】
无
【需求】
- 头文件:mpi_dpu_api.h
- 库文件:libdpu.a
【注意】
- 如果同时开启了散斑图和红外图通路,需要红外图和散斑图严格交叉输入。
【举例】
无
【相关主题】
无
2.1.15 kd_mpi_dpu_get_frame
【描述】
从 dpu 获取一帧数据。
【语法】
k_s32 kd_mpi_dpu_get_frame(k_u32 chn_num, k_dpu_chn_result_u *result, k_s32 s32_millisec);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
chn_num | 通道号 | 输入 |
result | dpu 输出结果联合体,其成员变量分别是 k_dpu_chn_lcn_result_t 和 k_dpu_chn_ir_result_t 。选择哪个成员作为该通道的输出结果由用户根据 kd_mpi_dpu_set_chn_attr 的配置来自行决定。 | 输出 |
s32_millisec | 等待时间。 当此参数设置为 -1 时,阻塞模式,直到获取成功才会返回; 当此参数设置为 0 时,非阻塞模式,获取成功立即返回零,获取失败立即返回其他值,具体失败信息参考 dpu 错误码; | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功 |
非0 | 失败,其值参见错误码 |
【芯片差异】
无
【需求】
- 头文件:mpi_dpu_api.h
- 库文件:libdpu.a
【注意】
- 如果同时开启了红外图和散斑图,注意及时取走两个通道的输出结果,否则 buffer 中的结果会溢出造成无法继续输入的情况。
【举例】
无
【相关主题】
k_dpu_chn_result_u k_dpu_chn_lcn_result_t k_dpu_chn_ir_result_t k_dpu_disp_out_t k_dpu_depth_out_t k_dpu_ir_out_t k_dpu_qlt_out_t
2.1.16 kd_mpi_dpu_release_frame
【描述】
在非绑定模式下,释放已经获取的结果。
【语法】
k_s32 kd_mpi_dpu_release_frame();
【参数】
无
【返回值】
返回值 | 描述 |
---|---|
0 | 成功 |
非0 | 失败,其值参见错误码 |
【芯片差异】
无
【需求】
- 头文件:mpi_dpu_api.h
- 库文件:libdpu.a
【注意】
- 此函数会依次释放 buffer 中的数据,先生成的结果先释放。目前 dpu buffer 为 3,使用完 kd_mpi_dpu_get_frame 获取的结果以后请尽快释放。
【举例】
无
【相关主题】
无
3. 数据类型
3.1 公共数据类型
本模块有如下数据类型:
- k_dpu_init_t
- k_dpu_dev_param_t
- k_dpu_lcn_param_t
- k_dpu_ir_param_t
- k_dpu_user_space_t
- k_dpu_dev_attr_t
- k_dpu_chn_lcn_attr_t
- k_dpu_chn_ir_attr_t
- k_dpu_chn_result_u
- k_dpu_chn_lcn_result_t
- k_dpu_chn_ir_result_t
- k_dpu_disp_out_t
- k_dpu_depth_out_t
- k_dpu_ir_out_t
- k_dpu_qlt_out_t
3.1.1 k_dpu_init_t
【说明】
dpu 设备初始化结构体
【定义】
typedef struct {
k_u32 start_num;
k_u32 buffer_num;
} k_dpu_init_t;
【成员】
成员名称 | 描述 |
---|---|
start_num | dpu 设备起始帧号(即 dpu 计算出来的第一帧的帧号)。 |
buffer_num | dpu 缓存 buffer 的数量,至少为 1 |
【注意事项】
无
【相关数据类型及接口】
3.1.2 k_dpu_dev_param_t
【说明】
dpu 设备参数结构体。
【定义】
typedef struct
{
k_dpu_long_parameter_t lpp;
k_dpu_short_parameter_t spp;
} k_dpu_dev_param_t;
【成员】
成员名称 | 描述 |
---|---|
lpp | dpu 长周期参数结构体 |
spp | dpu 短周期参数结构体 |
【注意事项】
- 用户需要对长周期参数中的值进行改变时,应该使用虚拟地址成员变量。
【相关数据类型及接口】
k_dpu_long_parameter_t kd_mpi_dpu_parse_file
3.1.3 k_dpu_lcn_param_t
【说明】
散斑图通道参数结构体。
【定义】
typedef struct {
k_u8 matching_length_left_p0;
k_u8 matching_length_right_p0;
float image_check_match_threshold;
float depth_p1;
float depth_p2;
float depth_precision;
} k_dpu_lcn_param_t;
【成员】
成员名称 | 描述 |
---|---|
matching_length_left_p0 | 粗搜索:视差计算向左搜索范围,取值:0~256,整型 |
matching_length_right_p0 | 粗搜索:视差计算向右搜索范围,取值:0~256,整型 |
image_check_match_threshold | 散斑图质量评定:模板匹配阈值,取值范围:0.0~1.0,浮点型:0.01精度 |
depth_p1 | 视差转深度:深度数值计算系数p1,取值范围:0.0~50000.0,浮点型:0.01精度 |
depth_p2 | 视差转深度:深度数值计算系数p2,取值范围:-5.0~100.0,浮点型:0.01精度 |
depth_precision | 视差转深度:深度数值精度(倍数),取值范围:0.0~100.0,浮点型:0.1精度 |
【注意事项】
- 此通道结构体参数是设备结构体参数的子集,如果已经配置了设备参数,且通道参数和设备参数相同,可以不配置通道参数。
【相关数据类型及接口】
3.1.4 k_dpu_ir_param_t
【说明】
红外图通道参数结构体。
【定义】
typedef struct {
float depth_k1;
float depth_k2;
float tz;
} k_dpu_ir_param_t;
【成员】
成员名称 | 描述 |
---|---|
depth_k1 | 直接完全对应一个寄存器。三图对齐:深度数值计算系数k1,取值范围:2e-4~1e-2,浮点型:1e-5精度 |
depth_k2 | 直接完全对应一个寄存器。三图对齐:深度数值计算系数k2,取值范围:0.5~1.5,浮点型:0.001精度 |
tz | 直接完全对应一个寄存器。三图对齐:投射器z方向偏移量(毫米),取值范围:-5.0~5.0,浮点型:0.001精度 |
【注意事项】
- 此通道结构体参数是设备结构体参数的子集,如果已经配置了设备参数,且通道参数和设备参数相同,可以不配置通道参数。
【相关数据类型及接口】
3.1.5 k_dpu_user_space_t
【说明】
用户获取模板图结构体参数。
【定义】
typedef struct {
k_bool used;
k_u32 size;
k_u64 phys_addr;
void *virt_addr;
} k_dpu_user_space_t;
【成员】
成员名称 | 描述 |
---|---|
used | 用户不需要关注 |
size | 用户获取的模板图的大小 |
phys_addr | 模板图的物理地址 |
virt_addr | 模板图的虚拟地址 |
【注意事项】
无
【相关数据类型及接口】
3.1.6 k_dpu_dev_attr_t
【说明】
配置 dpu 设备属性结构体。
【定义】
typedef struct {
k_dpu_mode_e mode;
k_bool tytz_temp_recfg;
k_bool align_depth_recfg;
k_bool ir_never_open;
k_u32 param_valid;
k_dpu_dev_param_t dev_param;
} k_dpu_dev_attr_t;
【成员】
成员名称 | 描述 |
---|---|
mode | dpu 运行模式,包括绑定模式和非绑定模式。 |
tytz_temp_recfg | 是否更新加载 SAD 温度补偿参数和 TyTz 行补偿计算算数。当此标志位为 K_FALSE 时表明不更新,当此标志位为 K_TRUE 时表明更新。 |
align_depth_recfg | 是否更新加载三图对齐/转深度计算参数。当此标志位为 K_FALSE 时表明不更新,当此标志位为 K_TRUE 时表明更新。 |
ir_never_open | vb 池是在启动 dpu 设备时配置的,直到暂停 dpu 设备时释放。其大小在启动设备时进行初始化,因此在启动设备时就预留了深度/视差图、红外输出、质量检测、粗细列视差、初始行列式差共五部分的空间。用户可以 在使用周期内通过 dev_param.spp.flag_align 来选择是否开启三图对齐。 如果在整个使用周期内都不会有红外图的输出,就不需要为红外图预留空间。配置为 K_TRUE 表明不需要为红外图输出预留空间,配置为 K_FALSE 表明需要为红外图输出预留空间。 |
param_valid | 用户配置 dpu 设备属性时,将此成员设置为一个任意的非零值,当设备属性生效时,会在对应生效的帧的输出结果中返回该任意值。 |
dev_param | dpu 设备参数结构体。 |
【注意事项】
- 在首次配置 dpu 设备属性时,应该将 tytz_temp_recfg 和 align_depth_recfg 配置为 K_TRUE,以使 dpu 加载对应参数。
【相关数据类型及接口】
k_dpu_dev_param_t kd_mpi_dpu_set_dev_attr
3.1.7 k_dpu_chn_lcn_attr_t
【说明】
配置散斑图通道属性结构体
【定义】
typedef struct {
k_u8 param_valid;
k_s32 chn_num;
k_dpu_lcn_param_t lcn_param;
} k_dpu_chn_lcn_attr_t;
【成员】
成员名称 | 描述 |
---|---|
param_valid | 用户配置散斑图通道属性时,将此成员设置为一个任意的非零值,当设备属性生效时,会在对应生效的帧的输出结果中返回该任意值。 |
chn_num | 通道号。当前 dpu 设备一共有两个通道,用户可以将此通道号设为 0 或 1,散斑图通道将在对应通道中输入输出。如果开启了红外图通道,此通道号应该与红外图通道号不同。 |
lcn_param | 散斑图通道参数。 |
【注意事项】
无
【相关数据类型及接口】
3.1.8 k_dpu_chn_ir_attr_t
【说明】
配置红外图通道属性结构体
【定义】
typedef struct {
k_u8 param_valid;
k_s32 chn_num;
k_dpu_ir_param_t ir_param;
} k_dpu_chn_ir_attr_t;
【成员】
成员名称 | 描述 |
---|---|
param_valid | 用户配置散斑图通道属性时,将此成员设置为一个任意的非零值,当设备属性生效时,会在对应生效的帧的输出结果中返回该任意值。 |
chn_num | 通道号。当前 dpu 设备一共有两个通道,用户可以将此通道号设为 0 或 1,红外图通道将在对应通道中输入输出。此通道号应该与散斑图通道号不同。 |
ir_param | 红外图通道参数。 |
【注意事项】
无
【相关数据类型及接口】
3.1.9 k_dpu_chn_result_u
【说明】
获取 dpu 输出结果的联合体
【定义】
typedef union {
k_dpu_chn_lcn_result_t lcn_result;
k_dpu_chn_ir_result_t ir_result;
} k_dpu_chn_result_u;
【成员】
成员名称 | 描述 |
---|---|
lcn_result | 散斑图通道输出结果结构体。k_dpu_chn_lcn_result_t |
ir_result | 红外图通道输出结果结构体。k_dpu_chn_ir_result_t |
【注意事项】
- 用户选择哪个成员作为输出结果需要根据用户自己的配置来选择。在 kd_mpi_dpu_set_chn_attr 中用户配置了通道号和通道类型的对应关系。
【相关数据类型及接口】
k_dpu_chn_lcn_result_t k_dpu_chn_ir_result_t kd_mpi_dpu_get_frame
3.1.10 k_dpu_chn_lcn_result_t
【说明】
dpu 散斑图通道输出结果的结构体
【定义】
typedef struct {
k_u32 time_ref;
k_u64 pts;
k_dpu_disp_out_t disp_out;
k_dpu_depth_out_t depth_out;
k_dpu_qlt_out_t qlt_out;
k_dpu_param_flag_t flag;
} k_dpu_chn_lcn_result_t;
【成员】
成员名称 | 描述 |
---|---|
pts | 时间戳,绑定模式下有效。 |
disp_out | 视差图输出结果结构体。 |
depth_out | 深度图输出结果结构体。 |
qlt_out | 质量检测输出结果结构体。包括质量检测结果、粗细_列视差(初始分辨率)结果、初始行列式差结果。 |
flag | 此结构体用来标记用户配置的参数在哪一帧生效了。结构体中包含了 k_dpu_dev_attr_t、k_dpu_chn_lcn_attr_t、k_dpu_chn_ir_attr_t 中的 param_valid 变量。 |
【注意事项】
无
【相关数据类型及接口】
k_dpu_disp_out_t k_dpu_depth_out_t k_dpu_qlt_out_t kd_mpi_dpu_get_frame
3.1.11 k_dpu_chn_ir_result_t
【说明】
dpu 红外图通道输出结果的结构体
【定义】
typedef struct {
k_u32 time_ref;
k_u64 pts;
k_dpu_ir_out_t ir_out;
k_dpu_param_flag_t flag;
} k_dpu_chn_ir_result_t;
【成员】
成员名称 | 描述 |
---|---|
pts | 时间戳,绑定模式下有效。 |
ir_out | 红外图输出结果结构体。 |
flag | 此结构体用来标记用户配置的参数在哪一帧生效了。结构体中包含了 k_dpu_dev_attr_t、k_dpu_chn_lcn_attr_t、k_dpu_chn_ir_attr_t 中的 param_valid 变量。 |
【注意事项】
无
【相关数据类型及接口】
k_dpu_ir_out_t kd_mpi_dpu_get_frame
3.1.12 k_dpu_disp_out_t
【说明】
视差图输出结果的结构体
【定义】
typedef struct {
k_bool valid;
k_u32 length;
k_u64 disp_phys_addr;
k_u64 disp_virt_addr;
} k_dpu_disp_out_t;
【成员】
成员名称 | 描述 |
---|---|
valid | K_TRUE:表明输出结果有效; K_FALSE:表明输出结果无效。 |
length | 输出结果长度。 |
disp_phys_addr | 视差图输出结果物理地址。 |
disp_virt_addr | 视差图输出结果虚拟地址。 |
【注意事项】
无
【相关数据类型及接口】
k_dpu_chn_lcn_result_t kd_mpi_dpu_get_frame
3.1.13 k_dpu_depth_out_t
【说明】
深度图输出结果的结构体
【定义】
typedef struct {
k_bool valid;
k_u32 length;
k_u64 depth_phys_addr;
k_u64 depth_virt_addr;
} k_dpu_depth_out_t;
【成员】
成员名称 | 描述 |
---|---|
valid | K_TRUE:表明输出结果有效; K_FALSE:表明输出结果无效。 |
length | 输出结果长度。 |
depth_phys_addr | 深度图输出结果物理地址。 |
depth_virt_addr | 深度图输出结果虚拟地址。 |
【注意事项】
无
【相关数据类型及接口】
k_dpu_chn_lcn_result_t kd_mpi_dpu_get_frame
3.1.14 k_dpu_ir_out_t
【说明】
红外图输出结果的结构体
【 定义】
typedef struct {
k_bool valid;
k_u32 length;
k_u64 ir_phys_addr;
k_u64 ir_virt_addr;
} k_dpu_ir_out_t;
【成员】
成员名称 | 描述 |
---|---|
valid | K_TRUE:表明输出结果有效; K_FALSE:表明输出结果无效。 |
length | 输出结果长度。 |
ir_phys_addr | 红外图输出结果物理地址。 |
ir_virt_addr | 红外图输出结果虚拟地址。 |
【注意事项】
无
【相关数据类型及接口】
k_dpu_chn_ir_result_t kd_mpi_dpu_get_frame
3.1.15 k_dpu_qlt_out_t
【说明】
质量检测输出结果的结构体
【定义】
typedef struct {
k_bool valid;
k_u32 qlt_length;
k_u32 sad_disp_length;
k_u32 init_sad_disp_length;
k_u64 qlt_phys_addr;
k_u64 qlt_virt_addr;
k_u64 sad_disp_phys_addr;
k_u64 sad_disp_virt_addr;
k_u64 init_sad_disp_phys_addr;
k_u64 init_sad_disp_virt_addr;
} k_dpu_qlt_out_t;
【成员】
成员名称 | 描述 |
---|---|
valid | K_TRUE:表明输出结果有效; K_FALSE:表明输出结果无效。 |
qlt_length | 质量检测输出结果长度。 |
sad_disp_length | 粗细列视差(初始分辨率)输出结果长度。 |
init_sad_disp_length | 初始行列式差输出结果长度。 |
qlt_phys_addr | 质量检测输出结果物理地址。 |
qlt_virt_addr | 质量检测输出结果虚拟地址。 |
sad_disp_phys_addr | 粗细列视差(初始分辨率)输出结果物理地址。 |
sad_disp_virt_addr | 粗细列视差(初始分辨率)输出结果虚拟地址。 |
init_sad_disp_phys_addr | 初始行列式差输出结果物理地址。 |
init_sad_disp_virt_addr | 初始行列式差输出结果虚拟地址。 |
【注意事项】
无
【相关数据类型及 接口】
k_dpu_chn_lcn_result_t kd_mpi_dpu_get_frame
3.2 长短周期参数类型
本模块有如下数据类型:
3.2.1 k_dpu_long_parameter_t
【说明】
dpu 长周期参数结构体
【定义】
typedef struct
{
/* virtual address */
float* row_start_p0; /**< 粗搜索:TyTz行偏差补偿后起始行序号指针,数组最大长度:1920,取值范围:0.0-1920.0,浮点型:0.02精度 */
float* row_end_p0; /**< 粗搜索:TyTz行偏差补偿后末尾行序号指针,数组最大长度:1920,取值范围:0.0-1920.0,浮点型:0.02精度 */
float* row_start_p1; /**< 细搜索:TyTz行偏差补偿后起始行序号指针,数组最大长度:1920,取值范围:0.0-1920.0,浮点型:0.02精度 */
float* row_end_p1; /**< 细搜索:TyTz行偏差补偿后末尾行序号指针,数组最大长度:1920,取值范围:0.0-1920.0,浮点型:0.02精度 */
k_u8 *row_start; /**< TyTz行偏差补偿后起始行序号指针,数组最大长度:1920,取值范围:0-1920,整型 */
k_u8 *row_end; /**< TyTz行偏差补偿后末尾行序号指针,数组最大长度:1920,取值范围:0-1920,整型 */
float *row_offset; /**< 温度行偏差补偿量指针,数组最大长度:1920,取值范围:-32.0~32.0,浮点型:0.02精度 */
float *col_offset; /**< 温度列偏差补偿量指针,数组最大长度:1280,取值范围:-32.0~32.0,浮点型:0.02精度 */
k_u8 *row_start_disp; /**< 视差图对齐计算时,每一切块起始行序号指针,数组最大长度:1920,取值范围:0-1920,整型 */
k_u8 *row_end_disp; /**< 视差图对齐计算时,每一切块末尾行序号指针,数组最大长度:1920,取值范围:0-1920,整型 */
k_u8 *row_start_ir; /**< 红外图对齐计算时,每一切块起始行序号指针,数组最大长度:1920,取值范围:0-1920,整型 */
k_u8 *row_end_ir; /**< 红外图对齐计算时,每一切块末尾行序号指针,数组最大长度:1920,取值范围:0-1920,整型 */
float *depth_K; /**< 深度数值计算参数K指针,数组最大长度:1280,取值范围:500.0~1500000.0,浮点型:0.1精度 */
float *align_A; /**< 视差对齐参数A指针,数组最大长度:1280,取值范围:-10.0~10.0,浮点型:0.001精度 */
float *align_B; /**< 视差对齐参数B指针,数组最大长度:1280,取值范围:-10.0~10.0,浮点型:0.001精度 */
float *align_C; /**< 视差对齐参数C指针,数组最大长度:1280,取值范围:-10.0~10.0,浮点型:0.001精度 */
float *align_D; /**< 视差对齐参数D指针,数组最大长度:1280,取值范围:-10.0~10.0,浮点型:0.001精度 */
float *align_E; /**< 视差对齐参数E指针,数组最大长度:1280,取值范围:-10.0~10.0,浮点型:0.001精度 */
float *align_F; /**< 视差对齐参数F指针,数组最大长度:1280,取值范围:-10.0~10.0,浮点型:0.001精度 */
float *depth_P; /**< 深度数值计算参数P指针,数组最大长度:1280,取值范围:5e-7~2e-3,浮点型:1e-8精度 */
k_u16* block_row_start_ir; /**< 三图对齐:红外图对齐时,每一分块起始行序号指针,数组最大长度:1920,取值范围:0-1920,整型 */
k_u16* block_row_end_ir; /**< 三图对齐:红外图对齐时,每一分块末尾行序号指针,数组最大长度:1920,取值范围:0-1920,整型 */
k_u16* block_row_start_disp; /**< 三图对齐:视差图对齐时,每一分块起始行序号指针,数组最大长度:1920,取值范围:0-1920,整型 */
k_u16* block_row_end_disp; /**< 三图对齐:视差图对齐时,每一分块末尾行序号指针,数组最大长度:1920,取值范 围:0-1920,整型 */
float mat_R[3]; /**< 三图对齐:红外相机相对彩色相机旋转矩阵,3*1数组,值域范围:-1.0~1.0,浮点型:0.01精度 */
float mat_T[3]; /**< 三图对齐:红外相机相对彩色相机平移矩阵,3*1数组,值域范围:-250.0~250.0,浮点型:0.01精度 */
/* physical address */
k_u64 row_start_p0_phys; /**< 粗搜索:TyTz行偏差补偿后起始行序号指针,数组最大长度:1920,取值范围:0.0-1920.0,浮点型:0.02精度 */
k_u64 row_end_p0_phys; /**< 粗搜索:TyTz行偏差补偿后末尾行序号指针,数组最大长度:1920,取值范围:0.0-1920.0,浮点型:0.02精度 */
k_u64 row_start_p1_phys; /**< 细搜索:TyTz行偏差补偿后起始行序号指针,数组最大长度:1920,取值范围:0.0-1920.0,浮点型:0.02精度 */
k_u64 row_end_p1_phys; /**< 细搜索:TyTz行偏差补偿后末尾行序号指针,数组最大长度:1920,取值范围:0.0-1920.0,浮点型:0.02精度 */
k_u64 row_start_phys; /**< TyTz行偏 差补偿后起始行序号指针,数组最大长度:1920,取值范围:0-1920,整型 */
k_u64 row_end_phys; /**< TyTz行偏差补偿后末尾行序号指针,数组最大长度:1920,取值范围:0-1920,整型 */
k_u64 row_offset_phys; /**< 温度行偏差补偿量指针,数组最大长度:1920,取值范围:-32.0~32.0,浮点型:0.02精度 */
k_u64 col_offset_phys; /**< 温度列偏差补偿量指针,数组最大长度:1280,取值范围:-32.0~32.0,浮点型:0.02精度 */
k_u64 row_start_disp_phys; /**< 视差图对齐计算时,每一切块起始行序号指针,数组最大长度:1920,取值范围:0-1920,整型 */
k_u64 row_end_disp_phys; /**< 视差图对齐计算时,每一切块末尾行序号指针,数组最大长度:1920,取值范围:0-1920,整型 */
k_u64 row_start_ir_phys; /**< 红外图对齐计算时,每一切块起始行序号指针,数组最大长度:1920,取值范围:0-1920,整型 */
k_u64 row_end_ir_phys; /**< 红外图对齐计算时,每一切块末尾行序号指针,数组最大长度:1920,取值范围:0-1920,整型 */
k_u64 depth_K_phys; /**< 深度数值计算参数K指针,数组最大长度:1280,取值范围:500.0~1500000.0,浮点型:0.1精度 */
k_u64 align_A_phys; /**< 视差对齐参数A指针,数组最大长度:1280,取值范围:-10.0~10.0,浮点型:0.001精度 */
k_u64 align_B_phys; /**< 视差对齐参数B指针,数组最大长度:1280,取值范围:-10.0~10.0,浮点型:0.001精度 */
k_u64 align_C_phys; /**< 视差对齐参数C指针,数组最大长度:1280,取值范围:-10.0~10.0,浮点型:0.001精度 */
k_u64 align_D_phys; /**< 视差对齐参数D指针,数组最大长度:1280,取值范围:-10.0~10.0,浮点型:0.001精度 */
k_u64 align_E_phys; /**< 视差对齐参数E指针,数组最大长度:1280,取值范围:-10.0~10.0,浮点型:0.001精度 */
k_u64 align_F_phys; /**< 视差对齐参数F指针,数组最大长度:1280,取值范围:-10.0~10.0,浮点型:0.001精度 */
k_u64 depth_P_phys; /**< 深度数值计算参数P指针,数组最大长度:1280,取值范围:5e-7~2e-3,浮点型:1e-8精度 */
k_u64 block_row_start_ir_phys; /**< 三图对齐:红外图对齐时,每一分块起始行序号指针,数组最大长度:1920,取值范围:0-1920,整型 */
k_u64 block_row_end_ir_phys; /**< 三图对齐:红外图对齐时,每一分块末尾行序号指针,数组最大长度:1920,取值范围:0-1920,整型 */
k_u64 block_row_start_disp_phys;/**< 三图对齐:视差图对齐时,每一分块起始行序号指针,数组最大长度:1920,取值范围:0-1920,整型 */
k_u64 block_row_end_disp_phys; /**< 三图对齐:视差图对齐时,每一分块末尾行序号指针,数组最大长度:1920,取值范围:0-1920,整型 */
k_u64 mat_R_phys; /**< 三图对齐:红外相机相对彩色相机旋转矩阵,3*1数组,值域范围:-1.0~1.0,浮点型:0.01精度 */
k_u64 mat_T_phys; /**< 三图对齐:红外相机相对彩色相机平移矩阵,3*1数组,值域范围:-250.0~250.0,浮点型:0.01精度 */
} k_dpu_long_parameter_t;
【注意事项】
- 用户需要对长周期参数中的值进行改变时,应该使用虚拟地址成员变量。
【相关数据类型及接口】
k_dpu_dev_param_t kd_mpi_dpu_parse_file kd_mpi_dpu_set_dev_attr
3.2.2 k_dpu_short_parameter_t
【说明】
dpu 短周期参数结构体
【定义】
短周期参数成员过多,不在此展示,可以参见 K230_SDK 中 k_dpu_comm.h 中的结构体 k_dpu_short_parameter_t。
【注意事项】
无
【相关数据类型及接口】
k_dpu_dev_param_t kd_mpi_dpu_set_dev_attr kd_mpi_dpu_get_dev_attr