5.2. HBN 框架说明
5.2.1. 概述
HBN 框架
其中 Camera API 和 OSD API ( 图中 绿色 部分 ) 没有attach 函数
总的来说, HBN 框架

5.2.2. 软件抽象
HBN 框架vnode 连接成vflow (类似
由于 Camera 和 OSD 使用
vnode 是
对 硬件加速 单元 的 抽象,在 HBN 框架 中 VIN、 ISP、 VSE、 GDC、 N2D ,都 会 抽象 成 vnode 的 概念, vnode 包含 如下 属性 : 硬件加速
单元 本身 的 属性, 比如 isp_attr_t 硬件加速
单元 输入 通道 的 属性, 比如 isp_ichn_attr_t 硬件加速
单元 输出 通道 的 属性, 比如 isp_ochn_attr_t
多个 vnode 连接起来
形成 1 个 vflow, 支持 同时 创建 多条 vflow, 不同 vflow 之间 是 完全 独立 的 , 连接 vnode 的 流程 如下: 创建 vflow 的
接口:hbn_vflow_create vflow 中
添加 vnode 节点 的 接口:hbn_vflow_add_vnode 在 vflow 中
绑定 两个 vnode 的 接口:hbn_vflow_bind_vnode 启动 vflow 的
接口:hbn_vflow_start
对于
HBN API中非HBN Framework API的模块,比如 Camera 和 OSD,支持 使用 attach 接口 绑定 到 vflow 中 对于
非 HBN API中的 模块, 比如 BPU 和 Display 等,通过 接口 hbn_vnode_get_output_frame从 vflow 中获取 视频 帧
下图

场景 1 :单路 vflow( 回灌 )
场景
描述:视频 帧 来自 DDR ( 比如 读取 视频文件 到 DDR),使用 VSE 对 视频 帧 进行 缩放 数据源:数据源
没有 包含 在 vflow 中,需要 在线 程中 主动 将 DDR 中 的 视频 帧 送入 到 vflow 中 vflow 中
至少 有 1 个 vnode,可以 有 多个,只有 1 个 节点 时 可以 不 绑定 到 vflow 中,多个 vnode 节点 并且 需要 连接起来 时,必须 绑定 到 vflow VSE、 GDC、 ISP、 N2D 都
支持 回灌 的 方式
场景 2 :单路 vflow
场景
描述:接入 1 路 Camera, 分别 经过 VIN、 ISP、 GDC、 VSE,在 VSE 中 输出 3 个 通道,分别 进行 如下 处理, 通道 0 :交给 CODEC 进行
编码 通道 1 :交给 Display 进行
显示 通道 2 :交给 BPU 进行
推理
数据源:通过 mipi 接口
接入 的 Camera Sensor vflow 中
包含 数据源, vflow 启动 后, HBN 框架 会 自动 调度 完成 数据流 的 传递,不 需要 开发者 介入 vflow 启动
后,可以 从 末尾 节点 持续 获取 视频 帧,并 传递 到 非 HBN API 中 的 加速 单元,比如 图中 虚 线框 中 的 设备 (Codec、 Display、 BPU)
场景 3 :多路 vflow
场景
描述:接入 2 路 Camera, 分别 经过 不同 的 处理 链路 数据源:每个 vflow 中
各 接入 1 个 Camera 使用
两个 vflow 完成 两路 视频 链路 的 采集 两个 vflow 之间
是 完全 独立
5.2.3. vnode 连接方式
vnode 之间
每个 vnode 节点,有
一个 输入 通道 和 多个 输出 通道 上游 vnode 的
输出 通道 和 下游 vnode 的 输入 通道 连接 , 多个 vnode 连接成 一个 vflow 上游 vnode 节点
的 输出 通道 决定 了 vnode 的 连接 方式
下面
5.2.3.1. 输出通道
输出
通道 决定 了 vnode 的 连接 方式,支持 online 模式 和 offline 模式,详细 见 系统 概述 只有 VIN 到 ISP 和 ISP 到 VSE 支持 online 通道,其他
模块 之间 只 支持 offline 通道
| 模块 | 输出 |
通道 |
|---|---|---|
| VIN | 0 | offline 通道,输出 camera 帧 |
| 1 | online 通道,连接 |
|
| 3 | offline 通道,只 |
|
| ISP | 0 | offline 通道,输出 isp 处理 |
| 1 | online 通道,连接 |
|
| VSE | 0 | offline 通道, 4K Downscale |
| 1 | offline 通道, 1080P0 Downscale | |
| 2 | offline 通道, 1080P1 Downscale | |
| 3 | offline 通道, 720P0 Downscale | |
| 4 | offline 通道, 720P1 Downscale | |
| 5 | offline 通道, 4K Upscale | |
| GDC | 0 | offline 通道,输出 gdc 处理 |
5.2.3.2. 连接方式
只有 VIN 到 ISP 和 ISP 到 VSE 支持 online 通道,其他
注意:当
| 模块 |
连接 |
说明 |
|---|---|---|
| VIN - ISP | VIN online ISP, ISP 工作 |
VIN 和 ISP 间 |
| VIN online ISP, ISP 工作 |
最 |
|
| VIN offline ISP, ISP 工作 |
中间 |
|
| VIN - VSE | VIN offline VSE | Camera Sensor 不 |
| ISP - VSE | ISP online VSE | ISP 和 VSE 间 |
| ISP offline VSE | 中间 |
5.2.3.3. 参数配置
函数 hbn_vflow_bind_vnode 绑定
| 模块 |
连接 |
hbn_vflow_bind_vnode 函数 | vin_node_attr 结构 |
isp_node_attr 结构 |
|---|---|---|---|---|
| VIN - ISP | online (ISP 是 PASSTHROUGH_MODE 模式 ) | 1. src_out_channel =1 2. dst_input_channel =0 |
cim_isp_flyby =1 | input_mode = 0 |
| VIN - ISP | online (ISP 是 MCM_MODE 模式。此 |
1. src_out_channel =1 2. dst_input_channel =0 |
cim_isp_flyby =1 | input_mode = 1 |
| VIN - ISP | offline (ISP 是 DDR_MODE) | 1. src_out_channel =0 2. dst_input_channel =0 |
1. ddr_en =1 2. cim_isp_flyby =0 |
input_mode = 2 |
| VIN - VSE | offline | 1. src_out_channel =0 2. dst_input_channel =0 |
- | - |
| ISP - VSE | online | 1. src_out_channel =1 2. dst_input_channel =0 |
- | - |
| ISP - VSE | offline | 1. src_out_channel =0 2. dst_input_channel =0 |
ddr_en =1 | - |
5.2.4. API 列表
| API 接口 | 接口 |
|---|---|
| hbn_vnode_open | 打开 vonde |
| hbn_vnode_close | 关闭 vonde |
| hbn_vnode_set_attr | 设置 vnode 属性 |
| hbn_vnode_get_attr | 获取 vnode 属性 |
| hbn_vnode_set_attr_ex | 设置 vnode 扩展 |
| hbn_vnode_get_attr_ex | 获取 vnode 扩展 |
| hbn_vnode_set_ochn_attr | 设置 |
| hbn_vnode_get_ochn_attr | 获取 |
| hbn_vnode_set_ochn_attr_ex | 设置 |
| hbn_vnode_set_ichn_attr | 设置 |
| hbn_vnode_get_ichn_attr | 获取 |
| hbn_vnode_set_ichn_attr_ex | 设置 |
| hbn_vnode_set_ochn_buf_attr | 设置 |
| hbn_vnode_start | 启动 vnode,启动 |
| hbn_vnode_stop | 停止 vonde |
| hbn_vnode_getframe | 获取 |
| hbn_vnode_releaseframe | 释放 |
| hbn_vnode_sendframe | 发送 |
| hbn_vnode_sendframe_async | 发送 |
| hbn_vnode_set_output_frame | 设置 |
| hbn_vnode_get_output_frame | 获取 |
| hbn_vflow_create | 创建 |
| hbn_vflow_destroy | 根据 vflow handle,销毁 |
| hbn_vflow_add_vnode | 把 |
| hbn_vflow_bind_vnode | 把 |
| hbn_vflow_unbind_vnode | 解绑 src_vnode_fd 和 dst_vnode_fd 模块 |
| hbn_vflow_start | 启动 |
| hbn_vflow_stop | 停止 |
| hbn_vflow_get_vnode_handle | 通过 |
| hbn_vflow_create_cfg | 通过 |
| hbn_vflow_get_version | 获取 hbn api 的 |
5.2.5. API 调用流程
5.2.5.1. 创建流程

5.2.5.2. 销毁流程
销毁
调用
了 hbn_vflow_destroy 就 不 需要 再 调用 hbn_vnode_close 和 hbn_vflow_unbind_vnode 调用
了 hbn_camera_destroy就不 需要 再 调用 hbn_camera_detach_from_vin

5.2.6. API 接口说明
5.2.6.1. hbn_vnode_open
【函数声明】
hobot_status hbn_vnode_open(hb_vnode_type vnode_type, uint32_t hw_id, int32_t ctx_id, hbn_vnode_handle_t *vnode_fd)
【参数描述】
[IN] hb_vnode_type vnode_type: vnode 类型,每个
硬件 模块 对应 一个 vnode 类型。取值 为 HB_VIN、 HB_ISP、 HB_VSE、 HB_GDC、 HB_N2D; [IN] uint32_t hw_id:模块
的 硬件 id。对于 VIN 模块, hw_id 取值 为 [0, 3],依次 对应 SIF0~SIF3 ,其他 模块 只取 0 ; [IN] uint32_t ctx_id:模块
的 context id,软件 上 的 概念,可 指定 context id 值,也 可 设置 为 AUTO_ALLOC_ID,由 HNB 框架 自动 分配 context id; [OUT] hbn_vnode_handle_t *vnode_fd:返回
模块 的 vnode handle;
【返回值】
成功: HBN_STATUS_SUCESS 0
失败:异常
为 负值 错误码,参考 返回值 说明
【功能描述】
初始化hbn_vnode_handle_t。
使用
某个 模块 前,必须 先 调用 hbn_vnode_open函数hbn_vnode_open函数打开 该 模块 设备 节点 ( 比如 /dev/vin0_cap)hbn_vnode_open函数返回 一个 指向 hbn_vnode_handle_t类型的 指针( vnode_fd),用于 标识 模块 的 特定 软件 实例。
例如,在函数 hbn_vflow_bind_vnode 中,其 两个 参数 src_vnode_fd 和 dst_vnode_fd 均 为 hbn_vnode_open函数返回 的 hbn_vnode_handle_t指针hbn_vnode_handle_t的本质 是 int64_t类型,hbn_vnode_open函数产生 一个 系统 唯一 的 整型 值 通过 *vnode_fd返回
【注意事项】
5.2.6.2. hbn_vnode_close
【函数声明】
void hbn_vnode_close(hbn_vnode_handle_t vnode_fd)
【参数描述】
[IN] hbn_vnode_handle_t vnode_fd:模块
的 vnode handle;
【返回值】
无
【功能描述】
关闭
【注意事项】
调用
了 hbn_vflow_destroy 就 无须再 调用 hbn_vnode_close。 模块
绑定 在 vflow 的 情况:需要 调用 hbn_vflow_destroy,不 需要 调用 hbn_vnode_close。 模块
单独 使用 的 情况(例如 只是 ISP、 VSE、 GDC 回灌, 不 绑定 到 vflow):需要 调用 hbn_vnode_close
5.2.6.3. hbn_vnode_set_attr
【函数声明】
hobot_status hbn_vnode_set_attr(hbn_vnode_handle_t vnode_fd, void *attr)
【参数描述】
[IN] hbn_vnode_handle_t vnode_fd:模块
的 vnode handle; [IN] void *attr:模块
的 基本 属性 结构 体 指针。基本 属性 结构 体 可以 是 vin_attr_t、isp_attr_t、vse_attr_t 等,以 模块 名 +_attr_t 结尾 的 属性;
【返回值】
成功: HBN_STATUS_SUCESS 0
失败:异常
为 负值 错误码,参考 返回值 说明
【功能描述】
设置
【注意事项】
无
5.2.6.4. hbn_vnode_get_attr
【函数声明】
hobot_status hbn_vnode_get_attr(hbn_vnode_handle_t vnode_fd, void *attr)
【参数描述】
[IN] hbn_vnode_handle_t vnode_fd:模块
的 vnode handle; [OUT] void *attr:模块
的 基本 属性 结构 体 指针。基本 属性 结构 体 可以 是 vin_attr_t、isp_attr_t、vse_attr_t 等,以 模块 名 +_attr_t 结尾 的 属性;
【返回值】
成功: HBN_STATUS_SUCESS 0
失败:异常
为 负值 错误码,参考 返回值 说明
【功能描述】
获取
【注意事项】
无
5.2.6.5. hbn_vnode_set_attr_ex
【函数声明】
hobot_status hbn_vnode_set_attr_ex(hbn_vnode_handle_t vnode_fd, void *attr)
【参数描述】
[IN] hbn_vnode_handle_t vnode_fd:模块
的 vnode handle; [IN] void *attr:模块
的 扩展 属性 结构 体 指针。扩展 属性 结构 体 可以 是 vin_attr_ex_t等,以模块 名 +_attr_ex_t 结尾 的 属性;
【返回值】
成功: HBN_STATUS_SUCESS 0
失败:异常
为 负值 错误码,参考 返回值 说明
【功能描述】
设置
【注意事项】
无
5.2.6.6. hbn_vnode_get_attr_ex
【函数声明】
hobot_status hbn_vnode_get_attr_ex(hbn_vnode_handle_t vnode_fd, void *attr)
【参数描述】
[IN] hbn_vnode_handle_t vnode_fd:模块
的 vnode handle; [OUT] void *attr:模块
的 扩展 属性 结构 体 指针。扩展 属性 结构 体 可以 是 vin_attr_ex_t等,以模块 名 +_attr_ex_t 结尾 的 属性;
【返回值】
成功: HBN_STATUS_SUCESS 0
失败:异常
为 负值 错误码,参考 返回值 说明
【功能描述】
获取
【注意事项】
无
5.2.6.7. hbn_vnode_set_ochn_attr
【函数声明】
hobot_status hbn_vnode_set_ochn_attr(hbn_vnode_handle_t vnode_fd, uint32_t ochn_id, void *attr)
【参数描述】
[IN] hbn_vnode_handle_t vnode_fd:模块
的 vnode handle; [IN] uint32_t ochn_id:模块
的 输出 通道 id,通道 id 见 : 模块 通道 ;说明 [IN] void *attr:模块
的 输出 通道 属性 结构 体 指针。输出 通道 属性 可以 是 vin_ochn_attr_t、isp_ochn_attr_t 等,以 模块 名 +_ochn_attr_t 结尾 的 属性;
【返回值】
成功: HBN_STATUS_SUCESS 0
失败:异常
为 负值 错误码,参考 返回值 说明
【功能描述】
设置
【注意事项】
无
5.2.6.8. hbn_vnode_get_ochn_attr
【函数声明】
hobot_status hbn_vnode_get_ochn_attr(hbn_vnode_handle_t vnode_fd, uint32_t ochn_id, void *attr)
【参数描述】
[IN] hbn_vnode_handle_t vnode_fd:模块
的 vnode handle; [IN] uint32_t ochn_id:模块
的 输出 通道 id,通道 id 见 : 模块 通道 说明 [OUT] void *attr:模块
输出 通道 属性 结构 体 指针。输出 通道 属性 可以 是 vin_ochn_attr_t、isp_ochn_attr_t 等,以 模块 名 +_ochn_attr_t 结尾 的 属性;
【返回值】
成功: HBN_STATUS_SUCESS 0
失败:异常
为 负值 错误码,参考 返回值 说明
【功能描述】
获取
【注意事项】
无
5.2.6.9. hbn_vnode_set_ochn_attr_ex
【函数声明】
hobot_status hbn_vnode_set_ochn_attr_ex(hbn_vnode_handle_t vnode_fd, uint32_t ochn_id, void *attr)
【参数描述】
[IN] hbn_vnode_handle_t vnode_fd:模块
的 vnode handle; [IN] uint32_t ochn_id:模块
的 输出 通道 id,通道 id 见 : 模块 通道 说明 [IN] void *attr:模块
的 输出 通道 扩展 属性 结构 体 指针。输出 通道 扩展 属性 可以 是 vse_ochn_attr_ex_t等,以模块 名 +_ochn_attr_ex_t 结尾 的 属性;
【返回值】
成功: HBN_STATUS_SUCESS 0
失败:异常
为 负值 错误码,参考 返回值 说明
【功能描述】
设置
【注意事项】
无
5.2.6.10. hbn_vnode_set_ichn_attr
【函数声明】
hobot_status hbn_vnode_set_ichn_attr(hbn_vnode_handle_t vnode_fd, uint32_t ichn_id, void *attr)
【参数描述】
[IN] hbn_vnode_handle_t vnode_fd:模块
的 vnode handle; [IN] uint32_t ichn_id:模块
的 输入 通道 id,通道 id 见 : 模块 通道 说明 [IN] void *attr:模块
的 输入 通道 属性 结构 体 指针。输入 通道 属性 可以 是 vin_ichn_attr_t、isp_ichn_attr_t 等,以 模块 名 +_ichn_attr_t 结尾 的 属性;
【返回值】
成功: HBN_STATUS_SUCESS 0
失败:异常
为 负值 错误码,参考 返回值 说明
【功能描述】
设置
【注意事项】
无
5.2.6.11. hbn_vnode_get_ichn_attr
【函数声明】
hobot_status hbn_vnode_get_ichn_attr(hbn_vnode_handle_t vnode_fd, uint32_t ichn_id, void *attr)
【参数描述】
[IN] hbn_vnode_handle_t vnode_fd:模块
的 vnode handle; [IN] uint32_t ichn_id:模块
的 输入 通道 id,通道 id 见 : 模块 通道 说明 [OUT] void *attr:模块
的 输入 通道 属性 结构 体 指针。输入 通道 属性 可以 是 vin_ichn_attr_t、isp_ichn_attr_t 等,以 模块 名 +_ichn_attr_t 结尾 的 属性;
【返回值】
成功: HBN_STATUS_SUCESS 0
失败:异常
为 负值 错误码,参考 返回值 说明
【功能描述】
获取
【注意事项】
无
5.2.6.12. hbn_vnode_set_ichn_attr_ex
【函数声明】
hobot_status hbn_vnode_set_ichn_attr_ex(hbn_vnode_handle_t vnode_fd, uint32_t ichn_id, void *attr)
【参数描述】
[IN] hbn_vnode_handle_t vnode_fd:模块
的 vnode handle; [IN] uint32_t ichn_id:模块
的 输入 通道 id,通道 id 见 : 模块 通道 说明 [IN] void *attr:模块
的 输入 通道 扩展 属性 结构 体 指针。输入 通道 扩展 属性 指以 模块 名 +_ichn_attr_ex_t 结尾 的 属性;
【返回值】
成功: HBN_STATUS_SUCESS 0
失败:异常
为 负值 错误码,参考 返回值 说明
【功能描述】
设置
【注意事项】
无
5.2.6.13. hbn_vnode_set_ochn_buf_attr
【函数声明】
hobot_status hbn_vnode_set_ochn_buf_attr(hbn_vnode_handle_t vnode_fd, uint32_t ochn_id, hbn_buf_alloc_attr_t *alloc_attr)
【参数描述】
[IN] hbn_vnode_handle_t vnode_fd:模块
的 vnode handle; [IN] uint32_t ochn_id:模块
的 输出 通道 id,通道 id 见 : 模块 通道 说明 [IN] hbn_buf_alloc_attr_t *alloc_attr: buffer 分配
属性;
【返回值】
成功: HBN_STATUS_SUCESS 0
失败:异常
为 负值 错误码,参考 返回值 说明
【功能描述】
设置
【注意事项】
5.2.6.14. hbn_vnode_start
【函数声明】
hobot_status hbn_vnode_start(hbn_vnode_handle_t vnode_fd)
【参数描述】
[IN] hbn_vnode_handle_t vnode_fd:模块
的 vnode handle;
【返回值】
成功: HBN_STATUS_SUCESS 0
失败:异常
为 负值 错误码,参考 返回值 说明
【功能描述】
模块
【注意事项】
启动
5.2.6.15. hbn_vnode_stop
【函数声明】
hobot_status hbn_vnode_stop(hbn_vnode_handle_t vnode_fd)
【参数描述】
[IN] hbn_vnode_handle_t vnode_fd:模块
的 vnode handle;
【返回值】
成功: HBN_STATUS_SUCESS 0
失败:异常
为 负值 错误码,参考 返回值 说明
【功能描述】
模块
【注意事项】
无
5.2.6.16. hbn_vnode_getframe
【函数声明】
hobot_status hbn_vnode_getframe(hbn_vnode_handle_t vnode_fd, uint32_t ochn_id, uint32_t millisecondTimeout, hbn_vnode_image_t *out_img)
【参数描述】
[IN] hbn_vnode_handle_t vnode_fd:模块
的 vnode handle; [IN] uint32_t ochn_id:模块
的 输出 通道 id,通道 id 见 : 模块 通道 说明 [IN] uint32_t millisecondTimeout:超时
等待时间; [OUT] hbn_vnode_image_t *out_img:输出
图像 buffer 结构 体 地址;
【返回值】
成功: HBN_STATUS_SUCESS 0
失败:异常
为 负值 错误码,参考 返回值 说明
【功能描述】
获取
【注意事项】
无
5.2.6.17. hbn_vnode_releaseframe
【函数声明】
hobot_status hbn_vnode_releaseframe(hbn_vnode_handle_t vnode_fd, uint32_t ochn_id, hbn_vnode_image_t *img)
【参数描述】
[IN] hbn_vnode_handle_t vnode_fd:模块
的 vnode handle; [IN] uint32_t ochn_id:模块
的 输出 通道 id,通道 id 见 : 模块 通道 说明 [IN] hbn_vnode_image_t *img:图像 buffer 结构
体 地址;
【返回值】
成功: HBN_STATUS_SUCESS 0
失败:异常
为 负值 错误码,参考 返回值 说明
【功能描述】
释放
【注意事项】
无
5.2.6.18. hbn_vnode_sendframe
【函数声明】
hobot_status hbn_vnode_sendframe(hbn_vnode_handle_t vnode_fd, uint32_t ichn_id, hbn_vnode_image_t *img)
【参数描述】
[IN] hbn_vnode_handle_t vnode_fd:模块
的 vnode handle; [IN] uint32_t ichn_id:模块
的 输入 通道 id,通道 id 见 : 模块 通道 说明 [IN] hbn_vnode_image_t *img:输入
图像 buffer 地址;
【返回值】
成功: HBN_STATUS_SUCESS 0
失败:异常
为 负值 错误码,参考 返回值 说明
【功能描述】
发送
【注意事项】
无
5.2.6.19. hbn_vnode_sendframe_async
【函数声明】
hobot_status hbn_vnode_sendframe_async(hbn_vnode_handle_t vnode_fd, uint32_t ichn_id, hbn_vnode_image_t *img)
【参数描述】
[IN] hbn_vnode_handle_t vnode_fd:模块
的 vnode handle; [IN] uint32_t ichn_id:模块
的 输入 通道 id,通道 id 见 : 模块 通道 说明 [IN] hbn_vnode_image_t *img:输入
图像 buffer 地址;
【返回值】
成功: HBN_STATUS_SUCESS 0
失败:异常
为 负值 错误码,参考 返回值 说明
【功能描述】
发送
【注意事项】
无
5.2.6.20. hbn_vnode_set_output_frame
【函数声明】
hobot_status hbn_vnode_set_output_frame(hbn_vnode_handle_t vnode_fd, uint32_t ochn_id, hbn_vnode_image_t *img)
【参数描述】
[IN] hbn_vnode_handle_t vnode_fd:模块
的 vnode handle; [IN] uint32_t ochn_id:模块
的 输出 通道 id,通道 id 见 : 模块 通道 说明 [IN] hbn_vnode_image_t *img:输出
图像 buffer 地址;
【返回值】
成功: HBN_STATUS_SUCESS 0
失败:异常
为 负值 错误码,参考 返回值 说明
【功能描述】
设置
【注意事项】
只
支持 VSE, GDC 和 GDC 绑定 VSE,三种 场景 回灌 模式 使用 需
控制 输出 buffer 的 申请 和 释放 以及 cache 管理 输出 buf 需
满足: Y 和 UV 地址 空间 要 连续,使用 ION 空间,填充 必要 bufferindex 和 share_id 不
支持 同时 有 内部 buffer 控制 操作,即 通过 hbn_vnode_set_ochn_buf_attr 下发 申请 内部 buffer
5.2.6.21. hbn_vnode_get_output_frame
【函数声明】
hobot_status hbn_vnode_get_output_frame(hbn_vnode_handle_t vnode_fd, uint32_t ochn_id, hbn_vnode_image_t *img)
【参数描述】
[IN] hbn_vnode_handle_t vnode_fd:模块
的 vnode handle; [IN] uint32_t ochn_id:模块
的 输出 通道 id,通道 id 见 : 模块 通道 说明 [IN] hbn_vnode_image_t *img:输出
图像 buffer 地址;
【返回值】
成功: HBN_STATUS_SUCESS 0
失败:异常
为 负值 错误码,参考 返回值 说明
【功能描述】
获取
【注意事项】
只
支持 VSE, GDC 和 GDC 绑定 VSE,三种 场景 回灌 模式 使用 需
控制 输出 buffer 的 申请 和 释放 以及 cache 管理 输出 buf 需
满足: Y 和 UV 地址 空间 要 连续,使用 ION 空间,填充 必要 bufferindex 和 share_id 不
支持 同时 有 内部 buffer 控制 操作,即 通过 hbn_vnode_set_ochn_buf_attr 下发 申请 内部 buffer
5.2.6.22. hbn_vflow_create
【函数声明】
hobot_status hbn_vflow_create(hbn_vflow_handle_t *vflow_fd)
【参数描述】
[OUT] hbn_vflow_handle_t *vflow_fd: vflow handle;
【返回值】
成功: HBN_STATUS_SUCESS 0
失败:异常
为 负值 错误码,参考 返回值 说明
【功能描述】
创建
【注意事项】
无
5.2.6.23. hbn_vflow_destroy
【函数声明】
void hbn_vflow_destroy(hbn_vflow_handle_t vflow_fd)
【参数描述】
[IN] hbn_vflow_handle_t *vflow_fd: vflow handle;
【返回值】
无
【功能描述】
根据 vflow handle,销毁
【注意事项】
无
5.2.6.24. hbn_vflow_add_vnode
【函数声明】
hobot_status hbn_vflow_add_vnode(hbn_vflow_handle_t vflow_fd, hbn_vnode_handle_t vnode_fd)
【参数描述】
[IN] hbn_vflow_handle_t *vflow_fd: vflow handle;
[IN] hbn_vnode_handle_t vnode_fd:模块
的 vnode handle;
【返回值】
成功: HBN_STATUS_SUCESS 0
失败:异常
为 负值 错误码,参考 返回值 说明
【功能描述】
把
【注意事项】
无
5.2.6.25. hbn_vflow_bind_vnode
【函数声明】
hobot_status hbn_vflow_bind_vnode(hbn_vflow_handle_t vflow_fd, hbn_vnode_handle_t src_vnode_fd, uint32_t out_chn, hbn_vnode_handle_t dst```_vnode_fd, uint32_t in_chn)
【参数描述】
【返回值】
成功: HBN_STATUS_SUCESS 0
失败:异常
为 负值 错误码,参考 返回值 说明
【功能描述】
把
【注意事项】
flow 需要
5.2.6.26. hbn_vflow_unbind_vnode
【函数声明】
hobot_status hbn_vflow_unbind_vnode(hbn_vflow_handle_t vflow_fd, hbn_vnode_handle_t src_vnode_fd, uint32_t out_chn, hbn_vnode_handle_t dst_vnode_fd, uint32_t in_chn)
【参数描述】
【返回值】
成功: HBN_STATUS_SUCESS 0
失败:异常
为 负值 错误码,参考 返回值 说明
【功能描述】
解绑 src_vnode_fd 和 dst_vnode_fd 模块。
【注意事项】
调用
了 hbn_vflow_destroy 就 无须再 调用 hbn_vflow_unbind_vnode
5.2.6.27. hbn_vflow_start
【函数声明】
hobot_status hbn_vflow_start(hbn_vflow_handle_t vflow_fd)
【参数描述】
[IN] hbn_vflow_handle_t vflow_fd: vflow handle;
【返回值】
成功: HBN_STATUS_SUCESS 0
失败:异常
为 负值 错误码,参考 返回值 说明
【功能描述】
启动
【注意事项】
模块 vnode 需要
5.2.6.28. hbn_vflow_stop
【函数声明】
hobot_status hbn_vflow_stop(hbn_vflow_handle_t vflow_fd)
【参数描述】
[IN] hbn_vflow_handle_t vflow_fd: vflow handle;
【返回值】
成功: HBN_STATUS_SUCESS 0
失败:异常
为 负值 错误码,参考 返回值 说明
【功能描述】
停止
【注意事项】
和 hbn_vflow_start 成
5.2.6.29. hbn_vflow_get_vnode_handle
【函数声明】
hbn_vnode_handle_t hbn_vflow_get_vnode_handle(hbn_vflow_handle_t vflow_fd, hb_vnode_type vnode_type, uint32_t index)
【参数描述】
[IN] hbn_vflow_handle_t vflow_fd: vflow handle;
[IN] hb_vnode_type vnode_type:模块 id;
[IN] uint32_t index: context id,范围
为 [0, 7]
【返回值】
成功: HBN_STATUS_SUCESS 0
失败:异常
为 负值 错误码,参考 返回值 说明
【功能描述】
通过
【注意事项】
模块
5.2.6.30. hbn_vflow_create_cfg
【函数声明】
hobot_status hbn_vflow_create_cfg(const char *cfg_file, hbn_vflow_handle_t *vflow_fd)
【参数描述】
[IN] const char *cfg_file:配置文件
路径; [OUT] hbn_vflow_handle_t *vflow_fd:指向 vflow handle 数组
的 指针,可 包含 多个 vflow;
【返回值】
成功: HBN_STATUS_SUCESS 0
失败:异常
为 负值 错误码,参考 返回值 说明
【功能描述】
通过
【注意事项】
无
5.2.6.31. hbn_vflow_get_version
【函数声明】
hobot_status hbn_vflow_get_version(hbn_version_t *version)
【参数描述】
[OUT] hbn_version_t *version:版本信息
结构 体 指针
【返回值】
成功: HBN_STATUS_SUCESS 0
失败:异常
为 负值 错误码,参考 返回值 说明
【功能描述】
获取 hbn api 的
【注意事项】
暂
5.2.7. 数据结构
5.2.7.1. 通用参数
hbn_buf_alloc_attr_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
flags |
int64_t |
- | - | - | buffer flag,具体 |
是 |
buffers_num |
uint32_t |
- | - | - | 申请 buffer 数量 | 是 |
is_contig |
uint32_t |
- | - | - | 多 |
是 |
hbn_frame_info_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
frame_id |
uint32_t |
- | - | - | frame id | - |
timestamps |
uint64_t |
- | - | - | sif framestart 时,内核 |
- |
sys_timestamps |
uint64_t |
- | - | - | sif framestart 时,内核 |
- |
tv |
struct timeval |
- | - | - | sif framestart 时,获取 |
- |
trig_tv |
struct timeval |
- | - | - | 触发 |
- |
frame_done |
uint32_t |
- | - | - | 暂时 |
- |
bufferindex |
int32_t |
- | - | - | 对应 buffer 的 index |
hbn_vnode_image_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
info |
hbn_frame_info_t |
- | - | - | frame 信息 | - |
buffer |
hb_mem_graphic_buf_t |
- | - | - | buffer 信息 | - |
*metadata |
void |
- | - | - | metadata 数据 | - |
hbn_version_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
major |
uint32_t |
- | - | - | 版本 major 号 | - |
minor |
uint32_t |
- | - | - | 版本 minor 号 | - |
5.2.7.2. MIPI 参数
mipi_config_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
rx_enable |
uint32_t |
0 | 1 | 0 | RX 设备 |
是 |
rx_attr |
mipi_host_cfg_t |
- | - | - | RX 设备 |
是 |
rx_ex_mask |
uint64_t |
- | - | - | RX 高级 |
否 |
rx_attr_ex |
mipi_host_param_t |
- | - | - | RX 高级 |
否 |
*bypass |
mipi_bypass_t |
- | - | - | MIPI RX -> TX bypass 使能, MIPI RX 接收 |
否 |
mipi_host_cfg_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
phy |
uint16_t |
0 | 1 | 0 | 0: 代表 dphy, X5 只 |
否 |
lane |
uint16_t |
1 | 4 | - | mipi lane 数,目前 |
是 |
datatype |
uint16_t |
- | - | - | mipi 输入 |
是 |
fps |
uint16_t |
0 | 120 | 0 | 帧 |
是 |
mclk |
uint16_t |
0 | 65535 | 0 | sensor mclk 配置: | 是 |
| 0 :使用 |
||||||
| 1 :使用 |
||||||
| 2~24: invalid and drop | ||||||
| 25~636: invalid and error | ||||||
| 637~ : 配置 |
||||||
mipiclk |
uint16_t |
0 | - | 0 | mipi 总 |
是 |
width |
uint16_t |
0 | 8192 | - | 输入 |
是 |
height |
uint16_t |
0 | 4096 | - | 输入 |
是 |
linelenth |
uint16_t |
0 | - | - | 带 hblank 的 |
是 |
framelenth |
uint16_t |
0 | - | - | 带 hblank 的 |
是 |
settle |
uint16_t |
0 | - | - | mipi settle, phy 的 settle 时间 |
是 |
ppi_pg |
uint16_t |
0 | - | - | mipi 输出 test pattern,不 |
否 |
hsaTime |
uint16_t |
0 | - | - | ipi 配置, time of horizontal synchronism active | 否 |
hbpTime |
uint16_t |
0 | - | - | ipi 配置, time of horizontal back period | 否 |
hsdTime |
uint16_t |
0 | - | - | ipi 配置, time of horizontal sync porch delay period | 否 |
channel_num |
uint16_t |
0 | 4 | 0 | mipi 虚拟 |
是 |
channel_sel[MIPIHOST_CHANNEL_NUM] |
uint16_t |
0 | 1 | 0 | mipi 虚拟 |
是 |
| `` |
5.2.7.3. SIF 参数
vin_attr_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
vin_node_attr |
vin_node_attr_t |
- | - | - | vin node 属性 |
是 |
vin_attr_ex |
vin_attr_ex_t |
- | - | - | vin node 增强 |
是 |
vin_ochn_attr[] |
vin_ochn_attr_t |
- | - | - | vin node 输出 |
是 |
vin_ichn_attr |
vin_ichn_attr_t |
- | - | - | vin node 输入 |
是 |
vin_ochn_buff_attr[] |
vin_ochn_buff_attr_t |
- | - | - | vin node 输出 buffer 属性 |
是 |
vin_node_attr_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
cim_attr |
cim_attr_t |
- | - | - | cim/sif 属性 |
是 |
lpwm_attr |
lpwm_attr_t |
- | - | - | lpwm 属性 |
否 |
vcon_attr |
vcon_attr_t |
- | - | - | vcon 属性 |
否 |
flow_id |
uint32_t |
0 | - | - | pipeline id,可以 |
否 |
cim_attr_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
mipi_en |
uint32_t |
0 | 1 | 0 | 使能 mipi,预留 |
否 |
mipi_rx |
uint32_t |
0 | 4 | 0 | mipi rx 端口号 | 是 |
vc_index |
uint32_t |
0 | 4 | 0 | mipi virtual index | 是 |
ipi_channel |
uint32_t |
1 | 2 | 0 | ipi channel number, | 是 |
| linear mode 为 1 , | ||||||
| hdr dol2 mode 为 2 | ||||||
tpg_input |
cim_input_tpg_t |
- | - | - | 预留 |
否 |
func |
cim_func_desc_t |
- | - | - | cim/sif 高阶 |
是 |
cim_func_desc_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
enable_frame_id |
uint32_t |
0 | 1 | 0 | 使能 frame id | 否 |
set_init_frame_id |
uint32_t |
0 | - | 0 | frame id 初始 |
否 |
time_stamp_en |
uint32_t |
- | - | - | 使能 |
否 |
time_stamp_mode |
uint32_t |
1 | 8 | - | sif/cim 锁存 |
否 |
| 0x01: frame start 时,锁存 |
||||||
| 0x02:触发 sensor 曝光 |
||||||
| 0x03: 锁存 tv + trigger_tv 值,推荐 |
||||||
| 其他:预留 |
||||||
ts_src |
uint32_t |
0 | 12 | 0 | 触发 sif 锁存 |
否 |
| 0 :trig_tv 和 tv 的 |
||||||
| 1 :LPWM0_CHN0 触发 |
||||||
| 2 :LPWM0_CHN1 触发 |
||||||
| 3 :LPWM0_CHN2 触发 |
||||||
| 4 :LPWM0_CHN3 触发 |
||||||
| 5 :LPWM1_CHN0 触发 |
||||||
| 6 :LPWM1_CHN1 触发 |
||||||
| 7 :LPWM1_CHN2 触发 |
||||||
| 8 :LPWM1_CHN3 触发 |
||||||
| 9 : ENET_PTP 预留 |
||||||
| 10 :SW 预留 |
||||||
| 11 :MCU 预留 |
||||||
| 12 :GPS 预留 |
||||||
pps_src |
uint32_t |
- | - | - | 预留 |
否 |
enable_pattern |
uint32_t |
- | - | - | 预留 |
否 |
skip_frame |
cim_skip_type_e |
0 | 4 | 0 | 软件 |
否 |
0 (CIM_DISABLE_SKIP):关闭 |
||||||
1 (CIM_IN_RATIO_SKIP):按input_fps 和 output_fps |
||||||
2 (CIM_FIRST_FRAMES_SKIP):丢弃 |
||||||
3 (CIM_HW_SKIP):硬件 |
||||||
input_fps |
uint32_t |
1 | - | 0 | 输入skip_frame = 1 时 |
否 |
output_fps |
uint32_t |
1 | - | 0 | 期望input_fps。skip_frame = 1 时 |
否 |
| 使用 Bresenham 算法 |
||||||
例:input_fps=30, output_fps=1 表示 30fps 中 |
||||||
skip_nums |
uint32_t |
- | - | - | 预留 |
否 |
hw_extract_m |
uint32_t |
- | - | - | 预留 |
否 |
hw_extract_n |
uint32_t |
- | - | - | 预留 |
否 |
hdr_mode |
enum hdr_mode |
0 | 2 | 0 | 设置 |
是 |
| 0: 无需 SoC ISP 做 |
||||||
| 1: 需要 SoC 侧 |
||||||
| 2: 需要 SoC 侧 |
vin_attr_ex_t
通过 hbn_vnode_set_attr_ex 设置 VIN 扩展ex_attr_type 指定
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
ex_attr_type |
vin_attr_ex_type_e |
- | - | - | 扩展 |
是 |
VIN_STATIC_CIM_ATTR (0):CIM 静态 |
||||||
VIN_DYNAMIC_FPS_CTRL (2):运行 |
||||||
VIN_STATIC_MCLK_ATTR (7):MCLK 频率 |
||||||
cim_static_attr |
cim_static_attr_t |
- | - | - | CIM 静态ex_attr_type = 0 时 |
否 |
fps_ctrl |
dynamic_fps_t |
- | - | - | 动态ex_attr_type = 2 时 |
否 |
mclk_ex_attr |
mclk_attr_ex_t |
- | - | - | MCLK 扩展ex_attr_type = 7 时 |
否 |
vin_attr_ex_mask |
uint64_t |
- | - | 0 | 初始化ex_attr_type 枚举 |
否 |
dynamic_fps_t
运行hbn_vnode_set_attr_ex 配合 ex_attr_type = VIN_DYNAMIC_FPS_CTRL 使用,可
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
skip_mode |
cim_skip_type_e |
0 | 4 | 0 | 跳帧 |
是 |
0 (CIM_DISABLE_SKIP):关闭 |
||||||
1 (CIM_IN_RATIO_SKIP):按 |
||||||
in_fps |
uint32_t |
1 | - | 0 | 输入skip_mode = 1 时 |
是 |
out_fps |
uint32_t |
1 | - | 0 | 期望in_fps,skip_mode = 1 时 |
是 |
| 使用 Bresenham 算法 |
||||||
例:in_fps=30, out_fps=10 表示 |
使用
vin_attr_ex_t vin_attr_ex = {0};
vin_attr_ex.ex_attr_type = VIN_DYNAMIC_FPS_CTRL;
vin_attr_ex.fps_ctrl.skip_mode = CIM_IN_RATIO_SKIP; // 按比例跳帧
vin_attr_ex.fps_ctrl.in_fps = 30; // sensor 实际帧率
vin_attr_ex.fps_ctrl.out_fps = 10; // 期望输出 10fps
hbn_vnode_set_attr_ex(vin_node_handle, &vin_attr_ex);
// 关闭跳帧,恢复原始帧率
vin_attr_ex.fps_ctrl.skip_mode = CIM_DISABLE_SKIP;
vin_attr_ex.fps_ctrl.in_fps = 0;
vin_attr_ex.fps_ctrl.out_fps = 0;
hbn_vnode_set_attr_ex(vin_node_handle, &vin_attr_ex);
vin_ochn_attr_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
ddr_en |
uint32_t |
0 | 1 | 0 | 数据 |
是 |
roi_en |
uint32_t |
- | - | - | 预留 | 否 |
emb_en |
uint32_t |
- | - | - | 预留, sensor embedded data 是否 |
否 |
ochn_attr_type |
vin_ochn_attr_type_e |
- | - | - | vin ochn 属性 VIN_BASIC_ATTR, // 默认,最 VIN_EMB_ATTR,// sensor 带有 emb 输出 |
是 |
vin_basic_attr |
vin_basic_attr_t |
- | - | - | vin basic 属性,下 ddr 需要 |
是 |
rawds_attr |
vin_rawds_attr_t |
- | - | - | 预留 | 否 |
roi_attr |
vpm_commn_roi_data_desc |
- | - | - | 预留 | 否 |
emb_attr |
vin_emb_attr_t |
- | - | - | 预留, emb 需要 |
否 |
vin_basic_attr_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
pack_mode |
uint32_t |
- | - | - | 预留 | 否 |
wstride |
uint32_t |
0 | - | - | cim/sif 下 ddr 的 wide stride, 16 字节 |
是 |
| sensor raw8 为 width, raw10~raw16 为 2*width | ||||||
vstride |
uint32_t |
- | - | - | 预留 | 否 |
format |
uint32_t |
- | - | - | 下 ddr 时 |
是 |
vin_pdaf_attr_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
| pdaf_en | uint32_t | - | - | 0 | PD 信息 |
是 |
| pd_ipi_channel | uint32_t | 0 | 3 | - | 指定 PD 信息 RAW 数据 |
是 |
| pd_width | uint32_t | - | - | PD 信息 |
是 | |
| pd_height | uint32_t | - | - | - | PD 信息 |
是 |
| pd_format | uint32_t | - | - | - | PD 信息 |
是 |
vin_ichn_attr_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
format |
uint32_t |
- | - | - | vin format, sensor 输出 format | 是 |
width |
uint32_t |
0 | 8192 | 0 | sensor 输出 |
是 |
height |
uint32_t |
0 | 4096 | 0 | sensor 输出 |
是 |
vin_ochn_buff_attr_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
buffers_num |
uint32_t |
0 | - | 0 | cim/sif 下 ddr 的 buffer number,一般 |
是 |
flags |
int64_t |
- | - | - | 一般 |
否 |
| hbn_buf_alloc_attr_t.flags = HB_MEM_USAGE_CPU_READ_OFTEN 逻辑 |
||||||
| HB_MEM_USAGE_CPU_WRITE_OFTEN 逻辑 |
||||||
| HB_MEM_USAGE_CACHED |
lpwm_attr_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
enable |
uint32_t |
0 | - | 0 | 是否 |
否 |
lpwm_chn_attr_t lpwm_chn_attr[LPWM_CHN_NUM] |
- | - | - | - | LPWM channel 属性 |
否 |
| LPWM_CHN_NUM 值为 4 |
lpwm_chn_attr_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 | 输出 30hz,高电平 10us 参数 |
|---|---|---|---|---|---|---|---|
trigger_source |
uint32_t |
0 | 10 | 0 | 触发 |
否 | |
| 0-3: pad_trigger_in,硬件 IO 输入 PPS | |||||||
| 4: enet_ptp_pps,预留 | |||||||
| 5: sw_trigger_in,软件 |
|||||||
| 6: gps_trigger_in (TIME_SYNC2),硬件 IO 输入 PPS | |||||||
| 7: mcu_trigger_in (TIME_SYNC1), 硬件 IO 输入 PPS | |||||||
| 8: time_sync2_in (TIME_SYNC3),硬件 IO 输入 PPS | |||||||
| 9: time_sync3_in (TIME_SYNC4),硬件 IO 输入 PPS | |||||||
| 10: camera_1sec_pulse_out,预留 | |||||||
| 注:硬件 IO 对应 |
|||||||
trigger_mode |
uint32_t |
0 | 1 | 0 | 触发 |
否 | |
| trigger_mode 设置 |
|||||||
period |
uint32_t |
2 us | 1000000 us | 0 | 周期,实际 |
否 | 33332 |
offset |
uint32_t |
0 | (1000000/period) us | 0 | 源 |
否 | 11 |
| 时间 |
|||||||
duty_time |
uint32_t |
0 | (4096/period) us | 0 | 有效 |
否 | 9 |
threshold |
uint32_t |
0 | 65535 us | 0 | 缓慢 |
否 | 0 |
adjust_step |
uint32_t |
0 | 15 | 0 | 每次 |
否 | 0 |
5.2.7.4. ISP 参数
isp_cfg_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
isp_attr |
isp_attr_t |
· | · | · | ISP 基本 |
是 |
ochn_attr |
isp_ochn_attr_t |
· | · | · | ISP 输出 |
是 |
ichn_attr |
isp_ichn_attr_t |
· | · | · | ISP 输入 |
是 |
isp_attr_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
input_mode |
uint32_t |
0 | 2 | 0 | 前 0 - PASSTHROUGH_MODE 1 - MCM_MODE 2 - DDR_MODE 需要 input_mode 为 0 或者 1 时, sif 绑定 input_mode 为 2 时, sif 下 drr 的 sif 绑定 PASSTHROUGH_MODE 仅 MCM_MODE 最大 |
是 |
sched_mode |
uint32_t |
0 | 2 | 0 | 图像处理 0 - ROUND_ROBIN 1 - FIXED_SEQUENCE 2 - FIFO |
否 |
tile_mode |
uint32_t |
0 | 1 | 0 | 是否 |
否 |
sensor_mode |
isp_sensor_mode_e |
0 | 2 | 0 | 对应 0 - ISP_NORMAL_M 1 - ISP_DOL2_M 2 - ISP_PWL_M |
是 |
crop |
common_rect_t |
· | · | · | 指对 |
否 |
isp_ichn_attr_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
tpg_en |
cam_bool_e |
0 | 1 | 0 | 开启 tpg 功能,暂时 |
否 |
width |
uint32_t |
0 | 5472 | 0 | 输入 |
是 |
height |
uint32_t |
0 | 3076 | 0 | 输入 |
是 |
fmt |
frame_format_e |
FRM_FMT_RAW | FRM_FMT_RAW | 0 | FRM_FMT_NULL - 无效 |
是 |
bit_width |
uint32_t |
8 | 12 | 0 | 输入 |
是 |
isp_ochn_attr_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
ddr_en |
cam_bool_e |
0 | 1 | 0 | 图像 |
是 |
out |
common_rect_t |
· | · | · | 输出 |
否 |
fmt |
frame_format_e |
FRM_FMT_NV12 | FRM_FMT_NV12 | 0 | FRM_FMT_NULL - 无效 |
是 |
bit_width |
uint32_t |
8 | 8 | 8 | 输出 |
是 |
5.2.7.5. VSE 参数
vse_ochn_type_e
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
VSE_DOWN_SCALE_4K |
- | - | - | - | downscale 输出 |
- |
VSE_DOWN_SCALE_1080P0 |
- | - | - | - | downscale 输出 |
- |
VSE_DOWN_SCALE_1080P1 |
- | - | - | - | downscale 输出 |
- |
VSE_DOWN_SCALE_720P0 |
- | - | - | - | downscale 输出 |
- |
VSE_DOWN_SCALE_720P1 |
- | - | - | - | downscale 输出 |
- |
VSE_UP_SCALE_4K |
- | - | - | - | upscale 输出 |
- |
| 注意 |
||||||
VSE_OCHN_MAX |
vse_cfg_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
vse_attr |
vse_attr_t |
- | - | - | vse 基本 |
是 |
ochn_attr[VSE_OCHN_MAX] |
vse_ochn_attr_t |
- | - | - | vse 输出 |
是 |
ichn_attr |
vse_ichn_attr_t |
- | - | - | vse 输入 |
是 |
vse_attr_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
fps |
frame_fps_ctrl_t |
- | - | 0 | 配置 |
否 |
vse_ichn_attr_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
tpg_en |
cam_bool_e |
0 | 1 | 0 | 使能 tpg 功能,暂时 |
否 |
width |
uint32_t |
0 | 5432 | 0 | 输入 |
是 |
height |
uint32_t |
0 | 3076 | 0 | 输入 |
是 |
fmt |
frame_format_e |
FRM_FMT_NV12 |
FRM_FMT_NV12 |
0 | 图像格式,目前 |
是 |
bit_width |
uint32_t |
8 | 8 | 0 | 输入 |
是 |
vse_ochn_attr_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
chn_en |
cam_bool_e |
0 | 1 | 0 | 使能 |
是 |
roi |
common_rect_t |
- | - | - | 对 |
否 |
target_w |
uint32_t |
0 | 受 |
0 | 输出 |
是 |
target_h |
uint32_t |
0 | 受 |
0 | 输出 |
是 |
y_stride |
uint32_t |
0 | - | 0 | 输出 |
否 |
uv_stride |
uint32_t |
0 | - | 0 | 输出 |
否 |
fmt |
frame_format_e |
FRM_FMT_NV12 |
FRM_FMT_NV12 |
0 | 输出 |
是 |
bit_width |
uint32_t |
8 | 8 | 0 | 输出 |
是 |
fps |
frame_fps_ctrl_t |
- | - | 0 | 配置 |
否 |
注意事项:
宽度、高度、格式
等 字 段 需 符合 硬件 能力 限制。 默认值
为 0 时,可能 会 禁用 相关 功能。
5.2.7.6. GDC 参数
gdc_attr_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
config_addr |
uint64_t |
- | - | - | gdc 配置文件 |
是 |
config_size |
uint32_t |
- | - | - | gdc 配置文件 |
是 |
div_width |
uint8_t |
8 | - | 0 | 暂时 |
是 |
div_height |
uint8_t |
0 | - | 0 | 暂时 |
否 |
total_planes |
uint32_t |
0 | - | 0 | yuv 图层 |
是 |
binary_ion_id |
int32_t |
0 | - | 0 | 配置文件 |
是 |
binary_offset |
uint64_t |
0 | - | 0 | 配置文件 |
是 |
gdc_ichn_attr_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
input_width |
uint32_t |
0 | 4096 | 0 | 输入 |
是 |
input_height |
uint32_t |
0 | 2160 | 0 | 输入 |
是 |
input_stride |
uint32_t |
0 | - | 0 | 输入 |
是 |
n_in_one |
uint32_t |
0 | - | 0 | 回灌 n 帧 |
是 |
gdc_ochn_attr_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
output_width |
uint32_t |
0 | - | 0 | 输出 |
是 |
output_height |
uint32_t |
0 | - | 0 | 输出 |
是 |
output_stride |
uint32_t |
0 | - | 0 | 输出 |
是 |
注意事项
GDC 输入输出
宽高 必须 是 偶数。 输入输出 stride 必须
为 16 的 倍数。
5.2.7.7. N2D 参数
n2d_command_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
| scale | - | - | - | - | 表示 |
是 |
| overlay | - | - | - | - | 表示 |
是 |
| stitch | - | - | - | - | 表示 |
是 |
| csc | - | - | - | - | 表示 |
是 |
n2d_config_t
| 名称 | 类型 | 最小值 | 最大值 | 默认值 | 含义 | 必选 |
|---|---|---|---|---|---|---|
| ninputs | uint32_t | 0 | 4 | - | 输入 |
是 |
| input_width[N2D_IN_MAX] | uint32_t | 0 | 4096 | - | n2d 输入 |
是 |
| input_height[N2D_IN_MAX] | uint32_t | 0 | 2160 | - | n2d 输入 |
是 |
| input_stride[N2D_IN_MAX] | uint32_t | - | - | - | n2d 输入 |
是 |
| output_width | uint32_t | 0 | 4096 | - | n2d 输出 |
是 |
| output_height | uint32_t | 0 | 2160 | - | n2d 输出 |
是 |
| output_stride | uint32_t | - | - | - | n2d 输出 |
是 |
| output_format | uint32_t | - | - | - | n2d 输出 |
是 |
| in_buffer_addr[N2D_IN_MAX][HBN_VIO_BUFFER_MAX_PLANES] | uint64_t | - | - | - | n2d 输入 |
是 |
| out_buffer_addr[HBN_VIO_BUFFER_MAX_PLANES] | uint64_t | - | - | - | n2d 输出 |
是 |
| command | n2d_command_t | - | - | - | 该 |
是 |
5.2.8. 返回值说明
| 错误码 | 宏 |
描述 | 常见 |
|---|---|---|---|
| 0 | HBN_STATUS_SUCESS | 成功 | |
| 1 | HBN_STATUS_INVALID_NODE | vnode 无效,找 |
|
| 2 | HBN_STATUS_INVALID_NODETYPE | vnode 类型 |
对于 VSE, vnode 类型 |
| 3 | HBN_STATUS_INVALID_HWID | 无效 |
对于 VSE, hw_id 取值 |
| 4 | HBN_STATUS_INVALID_CTXID | 无效 |
可 |
| 5 | HBN_STATUS_INVALID_OCHNID | 无效 |
VSE 输出 |
| 6 | HBN_STATUS_INVALID_ICHNID | 无效 |
VSE 仅 |
| 7 | HBN_STATUS_INVALID_FORMAT | 无效 |
|
| 8 | HBN_STATUS_INVALID_NULL_PTR | 空 |
|
| 9 | HBN_STATUS_INVALID_PARAMETER | 无效 |
|
| 10 | HBN_STATUS_ILLEGAL_ATTR | 无效 |
|
| 11 | HBN_STATUS_INVALID_FLOW | 无效 |
|
| 12 | HBN_STATUS_FLOW_EXIST | flow 已经 |
|
| 13 | HBN_STATUS_FLOW_UNEXIST | flow 不 |
|
| 14 | HBN_STATUS_NODE_EXIST | node 已经 |
|
| 15 | HBN_STATUS_NODE_UNEXIST | node 不 |
|
| 16 | HBN_STATUS_NOT_CONFIG | 预留 | |
| 17 | HBN_STATUS_CHN_NOT_ENABLED | 通道 |
|
| 18 | HBN_STATUS_CHN_ALREADY_ENABLED | 通道 |
|
| 19 | HBN_STATUS_ALREADY_BINDED | node 已经 |
|
| 20 | HBN_STATUS_NOT_BINDED | node 未 |
|
| 21 | HBN_STATUS_TIMEOUT | 超时 | |
| 22 | HBN_STATUS_NOT_INITIALIZED | 未 |
|
| 23 | HBN_STATUS_NOT_SUPPORT | 通道 |
|
| 24 | HBN_STATUS_NOT_PERM | 操作 |
|
| 25 | HBN_STATUS_NOMEM | 内存不足 | |
| 26 | HBN_STATUS_INVALID_VNODE_FD | 无效 |
|
| 27 | HBN_STATUS_INVALID_ICHNID_FD | 无效 |
|
| 28 | HBN_STATUS_INVALID_OCHNID_FD | 无效 |
|
| 29 | HBN_STATUS_OPEN_OCHN_FAIL | 打开 |
|
| 30 | HBN_STATUS_OPEN_ICHN_FAIL | 打开 |
|
| 31 | HBN_STATUS_JSON_PARSE_FAIL | json 解析 |
|
| 32 | HBN_STATUS_REQ_BUF_FAIL | 请求 buffer 失败 | |
| 33 | HBN_STATUS_QUERY_BUF_FAIL | 查询 buffer 信息 |
|
| 34 | HBN_STATUS_SET_CONTROL_FAIL | 模块 |
|
| 35 | HBN_STATUS_GET_CONTROL_FAIL | 模块 |
|
| 36 | HBN_STATUS_NODE_START_FAIL | node 开启 |
|
| 37 | HBN_STATUS_NODE_STOP_FAIL | node 停止 |
|
| 38 | HBN_STATUS_NODE_POLL_ERROR | node 通道 poll 错误 | |
| 39 | HBN_STATUS_NODE_POLL_TIMEOUT | node 通道 poll 超时 | |
| 40 | HBN_STATUS_NODE_POLL_FRAME_DROP | node 通道 poll 时 |
|
| 41 | HBN_STATUS_NODE_POLL_HUP | node 通道 poll 时 |
|
| 42 | HBN_STATUS_NODE_ILLEGAL_EVENT | node 通道 poll 时 |
|
| 43 | HBN_STATUS_NODE_DEQUE_ERROR | node 通道 dequeue buffer 错误 | |
| 44 | HBN_STATUS_ILLEGAL_BUF_INDEX | 无效 |
|
| 45 | HBN_STATUS_NODE_QUE_ERROR | node 通道 queue buffer 错误 | |
| 46 | HBN_STATUS_FLUSH_FRAME_ERROR | node 通道 |
|
| 47 | HBN_STATUS_INIT_BIND_ERROR | 用 json 解析 |
|
| 48 | HBN_STATUS_ADD_NODE_FAIL | 向 flow 中 |
|
| 49 | HBN_STATUS_WRONG_CONFIG_ID | 系统 |
|
| 50 | HBN_STATUS_BIND_NODE_FAIL | flow 绑定 node 时 |
|
| 51 | HBN_STATUS_INVALID_VERSION | 底层 |
|
| 52 | HBN_STATUS_GET_VERSION_ERROR | 获取 |
|
| 53 | HBN_STATUS_MEM_INIT_FAIL | hbmem 内存 |
|
| 54 | HBN_STATUS_MEM_IMPORT_FAIL | hbmem 内存 |
|
| 55 | HBN_STATUS_MEM_FREE_FAIL | hbmem 内存 |
|
| 56 | HBN_STATUS_SYSFS_OPEN_FAIL | 系统文件 |
|
| 57 | HBN_STATUS_STRUCT_SIZE_NOT_MATCH | hal 层 |
|
| 58 | HBN_STATUS_RGN_UNEXIST | 获取 |
|
| 59 | HBN_STATUS_RGN_INVALID_OPERATION | rgn 操作 |
|
| 60 | HBN_STATUS_RGN_OPEN_FILE_FAIL | rgn 模块 |
|
| 128 | HBN_STATUS_ERR_UNKNOW | 未知 |