5.6. Video Input - VIN
5.6.1. Module Description
The VIN module is part of the HBN framework, containing 4 MIPI RX and 4 SIF interfaces.
As a Vnode within the HBN framework, the VIN module can be connected with other Vnodes to form a Vflow.
For supported parameter specifications of VIN, please refer to the MIPI Basic Specifications section.
5.6.1.1. VIN Use Cases
VIN supports both Offline and Online connections to the ISP module, where the ISP module’s Pipeline is time-division multiplexed.
Offline Mode: Camera connects to ISP via VIN in Offline mode.

Online Mode: Camera connects to ISP via VIN in Online mode.

5.6.1.2. Scenario Recommendations
For single Camera Sensor scenarios: prefer Online mode for the connection from VIN to ISP; Offline mode is also supported.
For multi-camera Sensor scenarios: only Offline mode is supported for the connection from VIN to ISP.
Note: When an HDR sensor is connected, the VIN-ISP connection must use online mode. Since online mode exclusively occupies the ISP resource, only 1 stream is supported.
5.6.2. Reference Examples
Example code for VIN integration can be found in the sample_vin section.
5.6.3. API Reference
| API Interface | Interface Functionality |
|---|---|
| hbn_vnode_open | Open vnode |
| hbn_vnode_close | Close vnode |
| hbn_vnode_set_attr | Set vnode attributes |
| hbn_vnode_set_ochn_attr | Set output channel attributes of VIN vnode |
| hbn_vnode_get_ochn_attr | Get output channel attributes of VIN vnode |
| hbn_vnode_set_ichn_attr | Set input channel attributes of VIN vnode |
| hbn_vnode_get_ichn_attr | Get input channel attributes of VIN vnode |
| hbn_vnode_set_ochn_buf_attr | Set output buffer attributes of VIN vnode |
| hbn_vnode_start | Start vnode |
| hbn_vnode_stop | Stop vnode |
| hbn_vnode_getframe | Retrieve frame data from vnode |
| hbn_vnode_sendframe | Send frame data into vnode |
| hbn_vnode_releaseframe | Release frame data |
5.6.4. Interface Descriptions
5.6.4.1. hbn_vnode_open
【Function Declaration】
hobot_status hbn_vnode_open(hb_vnode_type vnode_type, uint32_t hw_id, int32_t ctx_id, hbn_vnode_handle_t *vnode_fd);
【Function Description】
Initialize the vnode, open the vnode device node, and return the vnode handle for this module.
【Parameter Description】
[IN] hb_vnode_type vnode_type: Type of vnode; for VIN, use HB_VIN
[IN] uint32_t hw_id: Hardware ID of the module; for VIN, hw_id is 0
[IN] int32_t ctx_id: Context ID of the module, a software concept. Can be specified explicitly or set to AUTO_ALLOC_ID, allowing the HBN framework to assign automatically
[OUT] hbn_vnode_handle_t *vnode_fd: Returns the vnode handle of the module
【Return Value】
Success: returns HBN_STATUS_SUCCESS (0)
Failure: negative error code; refer to Return Value Description
【Notes】
None
【Compatibility】
Hardware: X5
5.6.4.2. hbn_vnode_close
【Function Declaration】
void hbn_vnode_close(hbn_vnode_handle_t vnode_fd);
【Function Description】
Close the device node of the module.
【Parameter Description】
[IN] hbn_vnode_handle_t vnode_fd: The vnode handle of the module
【Return Value】
None
【Notes】
Must be used in pair with hbn_vnode_open.
【Compatibility】
Hardware: X5
5.6.4.3. hbn_vnode_set_attr
【Function Declaration】
hobot_status hbn_vnode_set_attr(hbn_vnode_handle_t vnode_fd, void *attr);
【Function Description】
Set basic attributes of the module.
【Parameter Description】
[IN] hbn_vnode_handle_t vnode_fd: The vnode handle of the module
[IN] void *attr: Pointer to the attribute structure of the module; for VIN, the structure is vin_attr_t
【Return Value】
Success: returns HBN_STATUS_SUCCESS (0)
Failure: negative error code; refer to Return Value Description
【Notes】
None
【Compatibility】
Hardware: X5
5.6.4.4. hbn_vnode_set_ochn_attr
【Function Declaration】
hobot_status hbn_vnode_set_ochn_attr(hbn_vnode_handle_t vnode_fd, uint32_t ochn_id, void *attr);
【Function Description】
Set output channel attributes of the module.
【Parameter Description】
[IN] hbn_vnode_handle_t vnode_fd: The vnode handle of the module
[IN] uint32_t ochn_id: Output channel ID of the module
[IN] void *attr: Pointer to the output channel attribute structure; for VIN, the structure is vin_ochn_attr_t
【Return Value】
Success: returns HBN_STATUS_SUCCESS (0)
Failure: negative error code; refer to Return Value Description
【Notes】
None
【Compatibility】
Hardware: X5
5.6.4.5. hbn_vnode_get_ochn_attr
【Function Declaration】
hobot_status hbn_vnode_get_ochn_attr(hbn_vnode_handle_t vnode_fd, uint32_t ochn_id, void *attr);
【Function Description】
Get output channel attributes of the module.
【Parameter Description】
[IN] hbn_vnode_handle_t vnode_fd: The vnode handle of the module
[IN] uint32_t ochn_id: Output channel ID of the module
[OUT] void *attr: Pointer to the output channel attribute structure; for VIN, the structure is vin_ochn_attr_t
【Return Value】
Success: returns HBN_STATUS_SUCCESS (0)
Failure: negative error code; refer to Return Value Description
【Notes】
None
【Compatibility】
Hardware: X5
5.6.4.6. hbn_vnode_set_ichn_attr
【Function Declaration】
hobot_status hbn_vnode_set_ichn_attr(hbn_vnode_handle_t vnode_fd, uint32_t ichn_id, void *attr);
【Function Description】
Set input channel attributes of the module.
【Parameter Description】
[IN] hbn_vnode_handle_t vnode_fd: The vnode handle of the module
[IN] uint32_t ichn_id: Input channel ID of the module
[IN] void *attr: Pointer to the input channel attribute structure; for VIN, the structure is vin_ichn_attr_t
【Return Value】
Success: returns HBN_STATUS_SUCCESS (0)
Failure: negative error code; refer to Return Value Description
【Notes】
None
【Compatibility】
Hardware: X5
5.6.4.7. hbn_vnode_get_ichn_attr
【Function Declaration】
hobot_status hbn_vnode_get_ichn_attr(hbn_vnode_handle_t vnode_fd, uint32_t ichn_id, void *attr);
【Function Description】
Get input channel attributes of the module.
【Parameter Description】
[IN] hbn_vnode_handle_t vnode_fd: The vnode handle of the module
[IN] uint32_t ichn_id: Input channel ID of the module; for VIN, the input channel is 0
[OUT] void *attr: Pointer to the input channel attribute structure; for VIN, the structure is vin_ichn_attr_t
【Return Value】
Success: returns HBN_STATUS_SUCCESS (0)
Failure: negative error code; refer to Return Value Description
【Notes】
None
【Compatibility】
Hardware: X5
5.6.4.8. hbn_vnode_set_ochn_buf_attr
【Function Declaration】
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);
【Function Description】
Set output channel buffer attributes, including the number of buffers and whether buffer addresses are contiguous.
【Parameter Description】
[IN] hbn_vnode_handle_t vnode_fd: The vnode handle of the module
[IN] uint32_t ochn_id: Output channel ID of the module
[IN] hbn_buf_alloc_attr_t *alloc_attr: Buffer allocation attributes
【Return Value】
Success: returns HBN_STATUS_SUCCESS (0)
Failure: negative error code; refer to Return Value Description
【Notes】
None
【Compatibility】
Hardware: X5
5.6.4.9. hbn_vnode_start
【Function Declaration】
hobot_status hbn_vnode_start(hbn_vnode_handle_t vnode_fd);
【Function Description】
Start the module.
【Parameter Description】
[IN] hbn_vnode_handle_t vnode_fd: The vnode handle of the module
【Return Value】
Success: returns HBN_STATUS_SUCCESS (0)
Failure: negative error code; refer to Return Value Description
【Notes】
The module must be opened before starting.
【Compatibility】
Hardware: X5
5.6.4.10. hbn_vnode_stop
【Function Declaration】
hobot_status hbn_vnode_stop(hbn_vnode_handle_t vnode_fd);
【Function Description】
Stop the module.
【Parameter Description】
[IN] hbn_vnode_handle_t vnode_fd: The vnode handle of the module
【Return Value】
Success: returns HBN_STATUS_SUCCESS (0)
Failure: negative error code; refer to Return Value Description
【Notes】
None
【Compatibility】
Hardware: X5
5.6.4.11. hbn_vnode_getframe
【Function Declaration】
hobot_status hbn_vnode_getframe(hbn_vnode_handle_t vnode_fd, uint32_t ochn_id, uint32_t millisecondTimeout,
hbn_vnode_image_t *out_img);
【Function Description】
Retrieve image from the module’s output channel; this is a blocking interface.
【Parameter Description】
[IN] hbn_vnode_handle_t vnode_fd: The vnode handle of the module
[IN] uint32_t ochn_id: Output channel ID of the module
[IN] uint32_t millisecondTimeout: Timeout duration in milliseconds
[OUT] hbn_vnode_image_t *out_img: Pointer to the output image buffer structure
【Return Value】
Success: returns HBN_STATUS_SUCCESS (0)
Failure: negative error code; refer to Return Value Description
【Notes】
None
【Compatibility】
Hardware: X5
5.6.4.12. hbn_vnode_sendframe
【Function Declaration】
hobot_status hbn_vnode_sendframe(hbn_vnode_handle_t vnode_fd, uint32_t ichn_id,
hbn_vnode_image_t *img);
【Function Description】
Send an image to the module’s input channel, triggering the module to process it. This is a blocking interface that waits for hardware processing to complete before returning, with a default timeout of 1 second.
【Parameter Description】
[IN] hbn_vnode_handle_t vnode_fd: The vnode handle of the module
[IN] uint32_t ichn_id: Input channel ID of the module; for VIN, the input channel is 0
[IN] hbn_vnode_image_t *img: Pointer to the input image buffer
【Return Value】
Success: returns HBN_STATUS_SUCCESS (0)
Failure: negative error code; refer to Return Value Description
【Notes】
None
【Compatibility】
Hardware: X5
5.6.4.13. hbn_vnode_releaseframe
【Function Declaration】
hobot_status hbn_vnode_releaseframe(hbn_vnode_handle_t vnode_fd, uint32_t ochn_id, hbn_vnode_image_t *img);
【Function Description】
Release the image buffer, returning it to the specified output channel.
【Parameter Description】
[IN] hbn_vnode_handle_t vnode_fd: The vnode handle of the module
[IN] uint32_t ochn_id: Output channel ID of the module
[IN] hbn_vnode_image_t *img: Pointer to the image buffer structure
【Return Value】
Success: returns HBN_STATUS_SUCCESS (0)
Failure: negative error code; refer to Return Value Description
【Notes】
None
【Compatibility】
Hardware: X5
5.6.5. Data Structures
5.6.5.1. vin_attr_t
| Name | Type | Min | Max | Default | Meaning | Required |
|---|---|---|---|---|---|---|
vin_node_attr |
vin_node_attr_t |
- | - | - | VIN node attribute description | Yes |
vin_attr_ex |
vin_attr_ex_t |
- | - | - | Enhanced VIN node attribute description | Yes |
vin_ochn_attr[] |
vin_ochn_attr_t |
- | - | - | Output channel attribute description of VIN node | Yes |
vin_ichn_attr |
vin_ichn_attr_t |
- | - | - | Input channel attribute description of VIN node | Yes |
vin_ochn_buff_attr[] |
vin_ochn_buff_attr_t |
- | - | - | Output buffer attribute description of VIN node | Yes |
5.6.5.2. vin_node_attr_t
| Name | Type | Min | Max | Default | Meaning | Required |
|---|---|---|---|---|---|---|
cim_attr |
cim_attr_t |
- | - | - | CIM/SIF attribute description | Yes |
lpwm_attr |
lpwm_attr_t |
- | - | - | LPWM attribute description, used for multi-sensor synchronization | No |
vcon_attr |
vcon_attr_t |
- | - | - | VCON attribute description | No |
flow_id |
uint32_t |
0 | - | - | Pipeline ID, optional | No |
5.6.5.3. cim_attr_t
| Name | Type | Min | Max | Default | Meaning | Required |
|---|---|---|---|---|---|---|
mipi_en |
uint32_t |
0 | 1 | 0 | Enable MIPI; reserved field, currently not required to configure | No |
mipi_rx |
uint32_t |
0 | 4 | 0 | mipi rx port number | Yes |
vc_index |
uint32_t |
0 | 4 | 0 | mipi virtual index | Yes |
ipi_channel |
uint32_t |
1 | 2 | 0 | ipi channel number, | Yes |
| linear mode is 1, | ||||||
| hdr dol2 mode is 2 | ||||||
tpg_input |
cim_input_tpg_t |
- | - | - | Reserved for future use | No |
func |
cim_func_desc_t |
- | - | - | Advanced functions of cim/sif | Yes |
5.6.5.4. cim_func_desc_t
| Name | Type | Min | Max | Default | Description | Required |
|---|---|---|---|---|---|---|
enable_frame_id |
uint32_t |
0 | 1 | 0 | Enable frame id | No |
set_init_frame_id |
uint32_t |
0 | - | 0 | Initial value assignment for frame id | No |
time_stamp_en |
uint32_t |
- | - | - | Enable timestamp | No |
time_stamp_mode |
uint32_t |
1 | 8 | - | sif/cim timestamp latching type, select one of the following: | No |
| 0x01: latch tv at frame start | ||||||
| 0x02: latch trig_tv at sensor exposure trigger | ||||||
| 0x03: latch both tv and trig_tv, recommended | ||||||
| Others: reserved | ||||||
ts_src |
uint32_t |
0 | 12 | 0 | Source that triggers sif to latch the timestamp | No |
| 0: trig_tv and tv timestamps disabled | ||||||
| 1: LPWM0_CHN0 rising edge latches tv and trig_tv | ||||||
| 2: LPWM0_CHN1 rising edge latches tv and trig_tv | ||||||
| 3: LPWM0_CHN2 rising edge latches tv and trig_tv | ||||||
| 4: LPWM0_CHN3 rising edge latches tv and trig_tv | ||||||
| 5: LPWM1_CHN0 rising edge latches tv and trig_tv | ||||||
| 6: LPWM1_CHN1 rising edge latches tv and trig_tv | ||||||
| 7: LPWM1_CHN2 rising edge latches tv and trig_tv | ||||||
| 8: LPWM1_CHN3 rising edge latches tv and trig_tv | ||||||
| 9: ENET_PTP reserved, not to be used | ||||||
| 10: SW reserved, not to be used | ||||||
| 11: MCU reserved, not to be used | ||||||
| 12: GPS reserved, not to be used | ||||||
pps_src |
uint32_t |
- | - | - | Reserved, not to be used | No |
enable_pattern |
uint32_t |
- | - | - | Reserved, not to be used | No |
skip_frame |
cim_skip_type_e |
0 | 4 | 0 | Software skip frame mode, takes effect during pipeline initialization | No |
0 (CIM_DISABLE_SKIP): skip frame disabled |
||||||
1 (CIM_IN_RATIO_SKIP): ratio-based skip frame, requires input_fps and output_fps |
||||||
2 (CIM_FIRST_FRAMES_SKIP): discard the first N frames |
||||||
3 (CIM_HW_SKIP): hardware skip frame |
||||||
input_fps |
uint32_t |
1 | - | 0 | Input frame rate, i.e. actual sensor frame rate. Required when skip_frame = 1 |
No |
output_fps |
uint32_t |
1 | - | 0 | Desired output frame rate, must be less than input_fps. Required when skip_frame = 1 |
No |
| Uses Bresenham algorithm to drop frames evenly in SIF DONE interrupt | ||||||
Example: input_fps=30, output_fps=1 means keeping only 1 frame out of 30fps |
||||||
skip_nums |
uint32_t |
- | - | - | Reserved, not to be used | No |
hw_extract_m |
uint32_t |
- | - | - | Reserved, not to be used | No |
hw_extract_n |
uint32_t |
- | - | - | Reserved, not to be used | No |
hdr_mode |
enum hdr_mode |
0 | 2 | 0 | Set value as enum hdr_mode: | Yes |
| 0: No multi-frame synthesis required by SoC ISP | ||||||
| 1: Two-frame synthesis required on SoC side | ||||||
| 2: Three-frame synthesis required on SoC side (reserved, not supported by X5) |
5.6.5.5. vin_attr_ex_t
Set VIN extended attributes via hbn_vnode_set_attr_ex, supporting both static configuration and runtime dynamic modification. Each call requires setting ex_attr_type to specify the operation type.
| Name | Type | Min | Max | Default | Description | Required |
|---|---|---|---|---|---|---|
ex_attr_type |
vin_attr_ex_type_e |
- | - | - | extended attribute type, determines which field takes effect | Yes |
VIN_STATIC_CIM_ATTR (0): CIM static attributes |
||||||
VIN_DYNAMIC_FPS_CTRL (2): runtime dynamic frame rate control |
||||||
VIN_STATIC_MCLK_ATTR (7): MCLK frequency configuration |
||||||
cim_static_attr |
cim_static_attr_t |
- | - | - | CIM static attributes, effective when ex_attr_type = 0 |
No |
fps_ctrl |
dynamic_fps_t |
- | - | - | dynamic frame rate control, effective when ex_attr_type = 2 |
No |
mclk_ex_attr |
mclk_attr_ex_t |
- | - | - | MCLK extended attributes, effective when ex_attr_type = 7 |
No |
vin_attr_ex_mask |
uint64_t |
- | - | 0 | attribute mask during initialization, bit positions correspond to ex_attr_type enum values |
No |
5.6.5.6. dynamic_fps_t
Runtime frame rate control structure, used with hbn_vnode_set_attr_ex and ex_attr_type = VIN_DYNAMIC_FPS_CTRL. Frame rate can be modified at any time while the pipeline is running, taking effect on the next frame immediately.
| Name | Type | Min | Max | Default | Description | Required |
|---|---|---|---|---|---|---|
skip_mode |
cim_skip_type_e |
0 | 4 | 0 | skip frame mode | Yes |
0 (CIM_DISABLE_SKIP): skip frame disabled, restore original sensor frame rate |
||||||
1 (CIM_IN_RATIO_SKIP): ratio-based skip frame |
||||||
in_fps |
uint32_t |
1 | - | 0 | input frame rate (actual sensor frame rate), required when skip_mode = 1 |
Yes |
out_fps |
uint32_t |
1 | - | 0 | desired output frame rate, must be less than in_fps, required when skip_mode = 1 |
Yes |
| Uses Bresenham algorithm to drop frames evenly in SIF DONE interrupt | ||||||
Example: in_fps=30, out_fps=10 means output 10fps |
Usage example (static configuration - during pipeline initialization):
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; // actual sensor frame rate
vin_node_attr.cim_attr.func.output_fps = 10; // desired output 10fps
hbn_vnode_set_attr(vin_node_handle, &vin_node_attr);
Usage example (dynamic modification - while pipeline is running):
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; // ratio-based skip frame
vin_attr_ex.fps_ctrl.in_fps = 30; // actual sensor frame rate
vin_attr_ex.fps_ctrl.out_fps = 10; // desired output 10fps
hbn_vnode_set_attr_ex(vin_node_handle, &vin_attr_ex);
// disable skip frame, restore original frame rate
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
| Name | Type | Min | Max | Default | Description | Required |
|---|---|---|---|---|---|---|
ddr_en |
uint32_t |
0 | 1 | 0 | Whether data is written to DDR | Yes |
roi_en |
uint32_t |
- | - | - | Reserved | No |
emb_en |
uint32_t |
- | - | - | Reserved, whether sensor embedded data is written to DDR | No |
ochn_attr_type |
vin_ochn_attr_type_e |
- | - | - | vin ochn attribute VIN_BASIC_ATTR, // Default, basic vin attribute VIN_EMB_ATTR, // sensor with emb output |
Yes |
vin_basic_attr |
vin_basic_attr_t |
- | - | - | vin basic attribute, required for writing to DDR | Yes |
rawds_attr |
vin_rawds_attr_t |
- | - | - | Reserved | No |
roi_attr |
vpm_commn_roi_data_desc |
- | - | - | Reserved | No |
emb_attr |
vin_emb_attr_t |
- | - | - | Reserved, required if emb is used | No |
5.6.5.8. vin_basic_attr_t
| Name | Type | Min | Max | Default | Description | Required |
|---|---|---|---|---|---|---|
pack_mode |
uint32_t |
- | - | - | Reserved | No |
wstride |
uint32_t |
0 | - | - | Wide stride for cim/sif writing to DDR, aligned to 16 bytes. | Yes |
| For sensor raw8: width, for raw10~raw16: 2*width | ||||||
vstride |
uint32_t |
- | - | - | Reserved | No |
format |
uint32_t |
- | - | - | Must be set when writing to DDR | Yes |
5.6.5.9. vin_ichn_attr_t
| Name | Type | Min | Max | Default | Description | Required |
|---|---|---|---|---|---|---|
format |
uint32_t |
- | - | - | vin format, sensor output format | Yes |
width |
uint32_t |
0 | 8192 | 0 | Sensor output resolution width in pixels | Yes |
height |
uint32_t |
0 | 4096 | 0 | Sensor output resolution height in pixels | Yes |
5.6.5.10. vin_ochn_buff_attr_t
| Name | Type | Min | Max | Default | Description | Required |
|---|---|---|---|---|---|---|
buffers_num |
uint32_t |
0 | - | 0 | Number of buffers for cim/sif writing to DDR, typically set to 6 | Yes |
flags |
int64_t |
- | - | - | Typically set in code: hbn_buf_alloc_attr_t.flags = HB_MEM_USAGE_CPU_READ_OFTEN OR HB_MEM_USAGE_CPU_WRITE_OFTEN OR HB_MEM_USAGE_CACHED |
No |
5.6.5.11. lpwm_attr_t
| Name | Type | Min | Max | Default | Description | Required |
|---|---|---|---|---|---|---|
enable |
uint32_t |
0 | - | 0 | Whether to enable LPWM | No |
lpwm_chn_attr_t lpwm_chn_attr[LPWM_CHN_NUM] |
- | - | - | - | LPWM channel attribute configuration LPWM_CHN_NUM value is 4 |
No |
5.6.5.12. lpwm_chn_attr_t
| Name | Type | Min | Max | Default | Description | Required | Output 30Hz, high level 10us parameters |
|---|---|---|---|---|---|---|---|
trigger_source |
uint32_t |
0 | 10 | 0 | Trigger source selection 0-3: pad_trigger_in, hardware IO input PPS 4: enet_ptp_pps, reserved 5: sw_trigger_in, software trigger 6: gps_trigger_in (TIME_SYNC2), hardware IO input PPS 7: mcu_trigger_in (TIME_SYNC1), hardware IO input PPS 8: time_sync2_in (TIME_SYNC3), hardware IO input PPS 9: time_sync3_in (TIME_SYNC4), hardware IO input PPS 10: camera_1sec_pulse_out, reserved Note: Refer to pinlist document for corresponding hardware IO pins. |
No | |
trigger_mode |
uint32_t |
0 | 1 | 0 | Trigger mechanism (1 - external hardware trigger, 0 - internal software trigger) | No | |
| When trigger_mode is set to 0, it automatically uses software trigger and trigger_source can be left unselected | |||||||
period |
uint32_t |
2 us | 1000000 us | 0 | Period, actual effective period is (period + 1)us | No | 33332 |
offset |
uint32_t |
0 | (1000000/period) us | 0 | After source triggers LPWM, LPWM outputs square wave after offset(us). | No | 11 |
| Effective time: floor((1/24) * (offset * 24 + 3)) us | |||||||
duty_time |
uint32_t |
0 | (4096/period) us | 0 | High-level active duration, actual effective time is (duty_time + 1)us | No | 9 |
threshold |
uint32_t |
0 | 65535 us | 0 | Threshold for slow synchronization function | No | 0 |
adjust_step |
uint32_t |
0 | 15 | 0 | Adjustment step per iteration: adjust_time = 2 ^ adjust_step | No | 0 |
5.6.6. Return Value Description
| Error Code | Macro Definition | Description | Common Causes and Solutions |
|---|---|---|---|
| 0 | HBN_STATUS_SUCESS | Success | |
| 1 | HBN_STATUS_INVALID_NODE | Invalid vnode, corresponding vnode not found | |
| 2 | HBN_STATUS_INVALID_NODETYPE | Invalid vnode type, corresponding vnode not found | For VIN, vnode type should be HB_VIN |
| 3 | HBN_STATUS_INVALID_HWID | Invalid hardware module ID | For VIN, hw_id value is 0 |
| 4 | HBN_STATUS_INVALID_CTXID | Invalid context ID | Can be set to AUTO_ALLOC_ID, automatically assigned by HBN framework |
| 5 | HBN_STATUS_INVALID_OCHNID | Invalid output channel ID | VIN output channel is 0 |
| 6 | HBN_STATUS_INVALID_ICHNID | Invalid input channel ID | VIN supports only one input channel |
| 7 | HBN_STATUS_INVALID_FORMAT | Invalid format | |
| 8 | HBN_STATUS_INVALID_NULL_PTR | Null pointer | |
| 9 | HBN_STATUS_INVALID_PARAMETER | Invalid parameter, version check failed | |
| 10 | HBN_STATUS_ILLEGAL_ATTR | Invalid parameter | |
| 11 | HBN_STATUS_INVALID_FLOW | Invalid flow, corresponding flow not found | |
| 12 | HBN_STATUS_FLOW_EXIST | Flow already exists | |
| 13 | HBN_STATUS_FLOW_UNEXIST | Flow does not exist | |
| 14 | HBN_STATUS_NODE_EXIST | Node already exists | |
| 15 | HBN_STATUS_NODE_UNEXIST | Node does not exist | |
| 16 | HBN_STATUS_NOT_CONFIG | Reserved | |
| 17 | HBN_STATUS_CHN_NOT_ENABLED | Channel not enabled | |
| 18 | HBN_STATUS_CHN_ALREADY_ENABLED | Channel already enabled | |
| 19 | HBN_STATUS_ALREADY_BINDED | Node already bound | |
| 20 | HBN_STATUS_NOT_BINDED | Node not bound | |
| 21 | HBN_STATUS_TIMEOUT | Timeout | |
| 22 | HBN_STATUS_NOT_INITIALIZED | Not initialized | |
| 23 | HBN_STATUS_NOT_SUPPORT | Channel not supported or not activated | |
| 24 | HBN_STATUS_NOT_PERM | Operation not allowed | |
| 25 | HBN_STATUS_NOMEM | Insufficient memory | |
| 26 | HBN_STATUS_INVALID_VNODE_FD | Invalid node file descriptor | |
| 27 | HBN_STATUS_INVALID_ICHNID_FD | Invalid input channel file descriptor | |
| 28 | HBN_STATUS_INVALID_OCHNID_FD | Invalid output channel file descriptor | |
| 29 | HBN_STATUS_OPEN_OCHN_FAIL | Failed to open output channel | |
| 30 | HBN_STATUS_OPEN_ICHN_FAIL | Failed to open input channel | |
| 31 | HBN_STATUS_JSON_PARSE_FAIL | JSON parsing failed | |
| 32 | HBN_STATUS_REQ_BUF_FAIL | Failed to request buffer | |
| 33 | HBN_STATUS_QUERY_BUF_FAIL | Failed to query buffer information | |
| 34 | HBN_STATUS_SET_CONTROL_FAIL | Failed to set module control or adjustment parameters (e.g., ISP effect parameters) | |
| 35 | HBN_STATUS_GET_CONTROL_FAIL | Failed to get module control or adjustment parameters (e.g., ISP effect parameters) | |
| 36 | HBN_STATUS_NODE_START_FAIL | Failed to start node | |
| 37 | HBN_STATUS_NODE_STOP_FAIL | Failed to stop node | |
| 38 | HBN_STATUS_NODE_POLL_ERROR | Node channel poll error | |
| 39 | HBN_STATUS_NODE_POLL_TIMEOUT | Node channel poll timeout | |
| 40 | HBN_STATUS_NODE_POLL_FRAME_DROP | Frame drop occurred during node channel poll | |
| 41 | HBN_STATUS_NODE_POLL_HUP | Descriptor hang-up during node channel poll | |
| 42 | HBN_STATUS_NODE_ILLEGAL_EVENT | Illegal event during node channel poll | |
| 43 | HBN_STATUS_NODE_DEQUE_ERROR | Error in dequeueing buffer from node channel | |
| 44 | HBN_STATUS_ILLEGAL_BUF_INDEX | Invalid buffer index | |
| 45 | HBN_STATUS_NODE_QUE_ERROR | Error in queueing buffer to node channel | |
| 46 | HBN_STATUS_FLUSH_FRAME_ERROR | Error in flushing frames from node channel | |
| 47 | HBN_STATUS_INIT_BIND_ERROR | Error occurred during JSON parsing and binding | |
| 48 | HBN_STATUS_ADD_NODE_FAIL | Failed to add node to flow | |
| 49 | HBN_STATUS_WRONG_CONFIG_ID | System does not support the node ID | |
| 50 | HBN_STATUS_BIND_NODE_FAIL | Error occurred when binding node to flow | |
| 51 | HBN_STATUS_INVALID_VERSION | Mismatch between underlying driver module and upper-layer library version numbers | |
| 52 | HBN_STATUS_GET_VERSION_ERROR | Error in getting underlying driver module version number | |
| 53 | HBN_STATUS_MEM_INIT_FAIL | hbmem memory initialization failed | |
| 54 | HBN_STATUS_MEM_IMPORT_FAIL | hbmem memory import failed | |
| 55 | HBN_STATUS_MEM_FREE_FAIL | hbmem memory release failed | |
| 56 | HBN_STATUS_SYSFS_OPEN_FAIL | System file open failed | |
| 57 | HBN_STATUS_STRUCT_SIZE_NOT_MATCH | HAL layer structure size does not match kernel layer | |
| 58 | HBN_STATUS_RGN_UNEXIST | Unable to retrieve corresponding rgn data | |
| 59 | HBN_STATUS_RGN_INVALID_OPERATION | Invalid rgn operation | |
| 60 | HBN_STATUS_RGN_OPEN_FILE_FAIL | Failed to open file in rgn module | |
| 128 | HBN_STATUS_ERR_UNKNOW | Unknown error |