5.6. 视频接入 - VIN

5.6.1. 模块描述

  • VIN 模块属于 HBN 框架一部分, 包含 4 个 MIPI RX 和 4 个 SIF。

  • VIN 模块作为 HBN 框架一个 Vnode,可以其他 Vnode 连接起来形成 Vflow。

  • VIN 支持参数规格,请参考 MIPI 基础规格 章节。

5.6.1.1. VIN 使用场景

VIN 支持 Offline 和 Online 连接到 ISP 模块, ISP 模块的 Pipeline 是时分复用的。

  • Offline 模式:Camera 通过 VIN Offline 连接到 ISP。

image-20250113-204225.png

  • Online 模式: Camera 通过 VIN Online 连接到 ISP。

image-20250113-204335.png

5.6.1.2. 场景推荐

  • 单路 Camera Sensor 场景下, VIN 到 ISP 的连接方式:优先选用 Online 模式,支持 Offline 模式。

  • 多路 Camera Sensor 场景下, VIN 到 ISP 的连接方式:只能选用 Offline 模式。

  • 注意:当接入 HDR Sensor 时,VIN 和 ISP 的连接方式只能选择 online,由于 online 模式独占 ISP 资源,所以支持 1 路。

5.6.2. 参考示例

  • VIN 接入部分示例代码可以参考 sample_vin 章节

5.6.3. API 参考

API 接口 接口功能
hbn_vnode_open 打开 vnode
hbn_vnode_close 关闭 vnode
hbn_vnode_set_attr 设置 vnode 属性
hbn_vnode_set_ochn_attr 设置 VIN vnode 输出通道属性
hbn_vnode_get_ochn_attr 获取 VIN vnode 输出通道属性
hbn_vnode_set_ichn_attr 设置 VIN vnode 输入通道属性
hbn_vnode_get_ichn_attr 获取 VIN vnode 输入通道属性
hbn_vnode_set_ochn_buf_attr 设置 VIN vnode 输出 buffer 属性
hbn_vnode_start 启动 vnode
hbn_vnode_stop 停止 vnode
hbn_vnode_getframe 从 vnode 获取数据
hbn_vnode_sendframe 数据传入 vnode
hbn_vnode_releaseframe 释放数据

5.6.4. 接口说明

5.6.4.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);

【功能描述】

初始化 vnode,打开 vnode 设备节点,并返回模块的 vnode handle

【参数描述】

  • [IN] hb_vnode_type vnode_type : vnode 类型,对于 VIN,取值为 HB_VIN

  • [IN] uint32_t hw_id : 模块硬件 id,对于 VIN,hw_id 取值为0

  • [IN] int32_t ctx_id : 模块的 context id,软件概念,可指定 context id 值,也设置为 AUTO_ALLOC_ID,由 HBN 框架自动分配 context id

  • [OUT] hbn_vnode_handle_t *vnode_fd : 返回模块的 vnode handle

【返回值】

  • 成功,返回 HBN_STATUS_SUCESS 0

  • 失败:异常负值错误码,参考返回值说明

【注意事项】

【兼容性】

硬件: X5

5.6.4.2. hbn_vnode_close

【函数声明】

void hbn_vnode_close(hbn_vnode_handle_t vnode_fd);

【功能描述】

关闭模块设备节点。

【参数描述】

  • [IN] hbn_vnode_handle_t vnode_fd:模块的 vnode handle;

【返回值】

【注意事项】

需要和 hbn_vnode_open 成使用。

【兼容性】

硬件: X5

5.6.4.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,其属性结构体为 vin_attr_t

【返回值】

  • 成功,返回 HBN_STATUS_SUCESS 0

  • 失败:异常负值错误码,参考返回值说明

【注意事项】

【兼容性】

硬件: X5

5.6.4.4. 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;

  • [IN] void *attr:模块输出通道属性结构指针。对于 VIN,输出通道属性结构体为 vin_ochn_attr_t

【返回值】

  • 成功,返回 HBN_STATUS_SUCESS 0

  • 失败:异常负值错误码,参考返回值说明

【注意事项】

【兼容性】

硬件: X5

5.6.4.5. 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;

  • [OUT] void *attr:模块输出通道属性结构指针。对于 VIN,输出通道属性结构体为 vin_ochn_attr_t

【返回值】

  • 成功,返回 HBN_STATUS_SUCESS 0

  • 失败:异常负值错误码,参考返回值说明

【注意事项】

【兼容性】

硬件: X5

5.6.4.6. 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;

  • [IN] void *attr:模块输入通道属性结构指针。对于 VIN,输入通道属性结构体为 vin_ichn_attr_t

【返回值】

  • 成功,返回 HBN_STATUS_SUCESS 0

  • 失败:异常负值错误码,参考返回值说明

【注意事项】

【兼容性】

硬件: X5

5.6.4.7. 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,对于 VIN,输入通道为0;

  • [OUT] void *attr:模块输入通道属性结构指针。对于 VIN,输入通道属性结构体为 vin_ichn_attr_t

【返回值】

  • 成功,返回 HBN_STATUS_SUCESS 0

  • 失败:异常负值错误码,参考返回值说明

【注意事项】

【兼容性】

硬件: X5

5.6.4.8. 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);

【功能描述】

设置输出通道 buffer 属性,包括 buffer 的数量以及 buffer 地址是否连续。

【参数描述】

  • [IN] hbn_vnode_handle_t vnode_fd:模块的 vnode handle;

  • [IN] uint32_t ochn_id:模块输出通道 id;

  • [IN] hbn_buf_alloc_attr_t *alloc_attr:buffer 分配属性;

【返回值】

  • 成功,返回 HBN_STATUS_SUCESS 0

  • 失败:异常负值错误码,参考返回值说明

【注意事项】

【兼容性】

硬件: X5

5.6.4.9. 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

  • 失败:异常负值错误码,参考返回值说明

【注意事项】

启动需要打开模块。

【兼容性】

硬件: X5

5.6.4.10. 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

  • 失败:异常负值错误码,参考返回值说明

【注意事项】

【兼容性】

硬件: X5

5.6.4.11. 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;

  • [IN] uint32_t millisecondTimeout:超时等待时间;

  • [OUT] hbn_vnode_image_t *out_img:输出图像 buffer 结构地址;

【返回值】

  • 成功,返回 HBN_STATUS_SUCESS 0

  • 失败:异常负值错误码,参考返回值说明

【注意事项】

【兼容性】

硬件: X5

5.6.4.12. hbn_vnode_sendframe

【函数声明】

hobot_status hbn_vnode_sendframe(hbn_vnode_handle_t vnode_fd, uint32_t ichn_id,
                 hbn_vnode_image_t *img);

【功能描述】

发送图像模块输入通道,会触发模块进行处理。阻塞接口,等待硬件处理完再返回,默认超时时间为1秒

【参数描述】

  • [IN] hbn_vnode_handle_t vnode_fd:模块的 vnode handle;

  • [IN] uint32_t ichn_id:模块输入通道 id,对于 VIN,输入通道为0;

  • [IN] hbn_vnode_image_t *img:输入图像 buffer 地址;

【返回值】

  • 成功,返回 HBN_STATUS_SUCESS 0

  • 失败:异常负值错误码,参考返回值说明

【注意事项】

【兼容性】

硬件: X5

5.6.4.13. hbn_vnode_releaseframe

【函数声明】

hobot_status hbn_vnode_releaseframe(hbn_vnode_handle_t vnode_fd, uint32_t ochn_id, hbn_vnode_image_t *img);

【功能描述】

释放图像 buffer,buffer 会归还指定输出通道。

【参数描述】

  • [IN] hbn_vnode_handle_t vnode_fd:模块的 vnode handle;

  • [IN] uint32_t ochn_id:模块输出通道 id;

  • [IN] hbn_vnode_image_t *img:图像 buffer 结构地址;

【返回值】

  • 成功,返回 HBN_STATUS_SUCESS 0

  • 失败:异常负值错误码,参考返回值说明

【注意事项】

【兼容性】

硬件: X5

5.6.5. 数据结构

5.6.5.1. 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 属性描述

5.6.5.2. vin_node_attr_t

名称 类型 最小值 最大值 默认值 含义 必选
cim_attr cim_attr_t - - - cim/sif 属性描述
lpwm_attr lpwm_attr_t - - - lpwm 属性描述,用于多 sensor 同步
vcon_attr vcon_attr_t - - - vcon 属性描述
flow_id uint32_t 0 - - pipeline id,可以不用设置

5.6.5.3. 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 高阶功能

5.6.5.4. 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 时,锁存的 tv 值。
0x02:触发 sensor 曝光时,锁存的 trigger_tv 值。
0x03: 锁存 tv + trigger_tv 值,推荐选项。
其他:预留
ts_src uint32_t 0 12 0 触发 sif 锁存时间
0 :trig_tv 和 tv 的时间使
1 :LPWM0_CHN0 触发高电平时刻 sif 锁存 tv 和 trig_tv
2 :LPWM0_CHN1 触发高电平时刻 sif 锁存 tv 和 trig_tv
3 :LPWM0_CHN2 触发高电平时刻 sif 锁存 tv 和 trig_tv
4 :LPWM0_CHN3 触发高电平时刻 sif 锁存 tv 和 trig_tv
5 :LPWM1_CHN0 触发高电平时刻 sif 锁存 tv 和 trig_tv
6 :LPWM1_CHN1 触发高电平时刻 sif 锁存 tv 和 trig_tv
7 :LPWM1_CHN2 触发高电平时刻 sif 锁存 tv 和 trig_tv
8 :LPWM1_CHN3 触发高电平时刻 sif 锁存 tv 和 trig_tv
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 软件跳帧模式,pipeline 初始化生效
0 (CIM_DISABLE_SKIP):关闭跳帧
1 (CIM_IN_RATIO_SKIP):按比例跳帧,需配合 input_fpsoutput_fps
2 (CIM_FIRST_FRAMES_SKIP):丢弃前 N 帧
3 (CIM_HW_SKIP):硬件跳帧
input_fps uint32_t 1 - 0 输入率,即 sensor 实际率。skip_frame = 1 时必填
output_fps uint32_t 1 - 0 期望输出率,需小于 input_fpsskip_frame = 1 时必填
使用 Bresenham 算法在 SIF DONE 中断比例均匀
例:input_fps=30, output_fps=1 表示 30fps 中保留 1 帧
skip_nums uint32_t - - - 预留值,无需使用
hw_extract_m uint32_t - - - 预留值,无需使用
hw_extract_n uint32_t - - - 预留值,无需使用
hdr_mode enum hdr_mode 0 2 0 设置值为 enum hdr_mode:
0: 无需 SoC ISP 做合成
1: 需要 SoC 侧合成
2: 需要 SoC 侧合成(预留, X5 不支持)

5.6.5.5. 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 初始化属性掩码,bit 位对应 ex_attr_type 枚举

5.6.5.6. dynamic_fps_t

运行时帧控制结构体,通过 hbn_vnode_set_attr_ex 配合 ex_attr_type = VIN_DYNAMIC_FPS_CTRL 使用,可在 pipeline 运行随时修改率,下一帧立即生效。

名称 类型 最小值 最大值 默认值 含义 必选
skip_mode cim_skip_type_e 0 4 0 跳帧模式
0 (CIM_DISABLE_SKIP):关闭跳帧,恢复 sensor 原始
1 (CIM_IN_RATIO_SKIP):按比例跳帧
in_fps uint32_t 1 - 0 输入率(sensor 实际率),skip_mode = 1 时必填
out_fps uint32_t 1 - 0 期望输出率,需小于 in_fpsskip_mode = 1 时必填
使用 Bresenham 算法在 SIF DONE 中断比例均匀
例:in_fps=30, out_fps=10 表示输出 10fps

使用示例(静态配置 - pipeline 初始化时):

vin_node_attr_t vin_node_attr;
vin_node_attr.cim_attr.func.skip_frame = CIM_IN_RATIO_SKIP;  // 1
vin_node_attr.cim_attr.func.input_fps  = 30;   // sensor 实际帧率
vin_node_attr.cim_attr.func.output_fps = 10;   // 期望输出 10fps
hbn_vnode_set_attr(vin_node_handle, &vin_node_attr);

使用示例(动态修改 - pipeline 运行中):

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);

5.6.5.7. vin_ochn_attr_t

名称 类型 最小值 最大值 默认值 含义 必选
ddr_en uint32_t 0 1 0 数据是否到 DDR
roi_en uint32_t - - - 预留
emb_en uint32_t - - - 预留, sensor embedded data 是否到 DDR
ochn_attr_type vin_ochn_attr_type_e - - - vin ochn 属性
VIN_BASIC_ATTR, // 默认,最基础的 vin 属性
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 需要设置

5.6.5.8. 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 时需要设置

5.6.5.9. vin_ichn_attr_t

名称 类型 最小值 最大值 默认值 含义 必选
format uint32_t - - - vin format, sensor 输出 format
width uint32_t 0 8192 0 sensor 输出分辨率 宽度 pixel
height uint32_t 0 4096 0 sensor 输出分辨率 高度 pixel

5.6.5.10. vin_ochn_buff_attr_t

名称 类型 最小值 最大值 默认值 含义 必选
buffers_num uint32_t 0 - 0 cim/sif 下 ddr 的 buffer number,一般设置为 6
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

5.6.5.11. lpwm_attr_t

名称 类型 最小值 最大值 默认值 含义 必选
enable uint32_t 0 - 0 是否使能 LPWM
lpwm_chn_attr_t lpwm_chn_attr[LPWM_CHN_NUM] - - - - LPWM channel 属性配置
LPWM_CHN_NUM 值为 4

5.6.5.12. 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 对应的 pin 请在 pinlist 资料查找。
trigger_mode uint32_t 0 1 0 触发机制 (1- 外界硬件触发, 0- 内部软件触发 )
trigger_mode 设置为 0 时,自动设置软件触发,可以选择 trigger_source
period uint32_t 2 us 1000000 us 0 周期,实际生效周期时间为 (period + 1)us 33332
offset uint32_t 0 (1000000/period) us 0 触发 LPWM 后, LPWM 经过 offset(us) 再输出方波。 11
时间生效时间为: (1/24) * (offset * 24 + 3) us 向下取整。
duty_time uint32_t 0 (4096/period) us 0 有效高电平时间,实际生效时间为 (duty_time + 1)us 9
threshold uint32_t 0 65535 us 0 缓慢同步功能阈值 0
adjust_step uint32_t 0 15 0 每次调整时间 adjust_time = 2 ^ adjust_step 0

5.6.6. 返回值说明

错误码 定义 描述 常见原因解决方法
0 HBN_STATUS_SUCESS 成功
1 HBN_STATUS_INVALID_NODE vnode 无效,找不到对应的 vnode
2 HBN_STATUS_INVALID_NODETYPE vnode 类型无效,找不到对应的 vnode 对于 VIN,vnode 类型为 HB_VIN
3 HBN_STATUS_INVALID_HWID 无效硬件模块 id 对于 VIN,hw_id 取值为 0
4 HBN_STATUS_INVALID_CTXID 无效的 context id 设置为 AUTO_ALLOC_ID,由 HBN 框架自动分配
5 HBN_STATUS_INVALID_OCHNID 无效输出通道 id VIN 输出通道为 0
6 HBN_STATUS_INVALID_ICHNID 无效输入通道 id VIN 仅支持1个输入通道
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 无效的 flow,找不到对应的 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 无效的 node 文件描述符
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 模块控制、调节参数(如 ISP 效果参数)设置失败
35 HBN_STATUS_GET_CONTROL_FAIL 模块控制、调节参数(如 ISP 效果参数)获取失败
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 无效的 buffer 索引
45 HBN_STATUS_NODE_QUE_ERROR node 通道 queue buffer 错误
46 HBN_STATUS_FLUSH_FRAME_ERROR node 通道帧 flush 错误
47 HBN_STATUS_INIT_BIND_ERROR 用 json 解析绑定发生错误
48 HBN_STATUS_ADD_NODE_FAIL 向 flow 中添加 node 失败
49 HBN_STATUS_WRONG_CONFIG_ID 系统支持的 node 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 层结构大小与 kernel 层匹配
58 HBN_STATUS_RGN_UNEXIST 获取不到对应的 rgn 数据
59 HBN_STATUS_RGN_INVALID_OPERATION rgn 操作无效
60 HBN_STATUS_RGN_OPEN_FILE_FAIL rgn 模块打开文件失败
128 HBN_STATUS_ERR_UNKNOW 未知错误