hi_mpi_vi_set_dev_attr
基本概念
-
VI设备/PIPE/通道
-
视频输入设备VI DEV
视频输入设备支持若干种时序输入,负责对时序进行解析。
-
视频输入处理VI PIPE
-
视频输入处理物理PIPE
视频输入处理PIPE绑定在视频输入设备后端,负责设备解析后的图像算法处理的ISP FE和ISP BE部分,对图像数据进行流水线处理,输出YUV图像格式给通道。
-
视频输入处理虚拟PIPE
视频输入处理虚拟PIPE不绑定设备,负责其他模块或用户发送过来的数据再处理,不支持PIPE中的ISP_FE,直接从PIPE中的ISP_BE开始。
-
-
视频通道VI CHN
-
视频物理通道PHY_CHN
物理通道负责通过不同的硬件加速单元,实现DIS、LDC等算法处理,并将最终处理后的数据输出到内存中。通道功能框图如下:
:::note 说明 开启DIS、LDC等功能后,需要在调用接口hi_mpi_vi_set_chn_attr时,每个功能额外分配1块VB资源,即chn属性的depth要额外+1。 :::
-
视频扩展通道EXT_CHN
当前版本不支持。
-
-
-
绑定关系
为了将前端的Camera模组视频流通过MIPI接口接入到VI中处理,在芯片板级连线上,首先要满足DEV设备和MIPI 设备之间的绑定约束关系,其次为了软件侧的灵活调度编排,用户可自行配置调整DEV设备和PIPE之间的绑定关系。
-
DEV和MIPI设备的绑定关系
VI DEV与MIPI RX/SLVS-EC设备的绑定关系固定,不可配置。对应关系如下:
表1 VI DEV与MIPI RX/SLVS-EC接口的绑定关系
VI DEV MIPI RX SLVS-EC 0 0 0 1 1 1 2 2 X 3 3 X -
DEV和PIPE的绑定关系
- 每个PIPE都可以与任意Dev通过接口hi_mpi_vi_set_dev_bind_pipe设置绑定关系,且必须在调用接口hi_mpi_vi_create_pipe创建PIPE前绑定,不能动态修改绑定关系。
- 线性模式(非WDR模式)下只需要将一个物理PIPE绑定一个Dev;WDR模式下需要多个物理PIPE绑定同一个Dev,且只有绑定到Dev的第1条物理PIPE的通道有数据输出,其他绑定的物理PIPE的通道没有图像数据输出。例如2合1WDR模式,我们需要将PIPE0、PIPE1绑定到同一个Dev0设备上,只有PIPE0上的通道有数据输出,PIPE1上的通道无数据输出。
-
-
镜头畸变校正(LDC)
镜头畸变校正,一些低端镜头容易产生图像畸变,需要根据畸变程度对其图像进行校正。
-
视频防抖(DIS)
DIS模块通过比较当前图像与前两帧图像采用不同自由度的防抖算法计算出当前图像在各个轴方向上的抖动偏移向量,然后根据抖动偏移向量对当前图像进行校正,从而起到防抖的效果。
-
低延时
低延时指图像写出指定的行数到DDR后,VI上报一个中断,把图像发给后端模块处理,可以减少延时,且硬件会有机制保证图像是先写后读,不会出现读图像错误。ISP_BE后接3DNR、DIS、LDC支持低延时功能。
-
从模式
部分SENSOR需要工作在从模式,此时需要由外部提供行场曝光同步信息,需要使用VI的从模式模块。用户需要根据SENSOR管脚的连线和下表确定使用哪个从模式模块,然后选择对应的物理PIPE号创建物理PIPE,否则会没有数据。
表2 从模式与PIPE的对应关系表
从模式编号 可连接Sensor数目 管脚名称 建议使用PIPE的编号 0 2 SENSOR_VS0 SENSOR_HS0 0、1 1 2 SENSOR_VS1 SENSOR_HS1 2、3 -
VI功能涉及的缩略语如下:
表3 缩略语列表
缩略语 全称 含义 VI Video Input 视频输入 WDR Wide Dynamic Range 宽动态 BE Backend ISP pipeline中FPN及之后的部分 FE Frontend ISP pipeline中FPN算法之前的部分 DIS Digital Image Stabilization 数字防抖 GME Global Motion Estimation 全局运动估计 GYRO Gyroscope 陀螺仪 LDC Lens Distortion Correction 镜头畸变矫正 MIPI Mobile Industry Processor Interface 移动行业处理器界面 LVDS Low-Voltage Differential Signal 低压差分信号 HISPI High-Speed Serial Pixel Interface 高速串行像素接口 SLVS-EC Scalable Low-Voltage Signaling interface with an Embedded Clock 可伸缩的、含嵌入式时钟的低电压信号接口 IPC IP camera 网络摄像机 DV Digital Visual 数字摄像 PMF Perspective Mapping Function 投影变换映射函数 MPP Media Processing Platform 媒体处理平台 ISP Image Signal Processor 图像信号处理器 Gyro DIS Gyroscope Digital Image Stabilization 陀螺仪数字防抖
父主题: VI视频输入功能
hi_mpi_vi_set_dev_bind_pipe
函数功能
一对多设置VI设备与物理PIPE的绑定关系。
约束说明
- 必须在调用hi_mpi_vi_enable_dev接口使用VI设备后、调用hi_mpi_vi_create_pipe接口创建PIPE之前才能调用本接口绑定物理PIPE。
- 不支持绑定已经创建的PIPE。
- 建议将带宽高的VI设备绑定到pipe0或pipe1上。
函数原型
hi_s32 hi_mpi_vi_set_dev_bind_pipe(****hi_vi_dev vi_dev, const hi_vi_dev_bind_pipe *dev_bind_pipe)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| vi_dev | 输入 | VI设备号。 取值范围:[0, 4)。 |
| dev_bind_pipe | 输入 | VI物理PIPE号。 取值范围:[0, 4)。 WDR模式下,设置绑定关系时,必须pipe0和pipe1一组,pipe2和pipe3一组,即将hi_vi_dev_bind_pipe结构体内的num参数设置为2,将hi_vi_dev_bind_pipe结构体内的pipe_id数组内的元素设置为0、1两个值,或者2、3两个值。 |
返回值说明
- 0:成功
- 非0:失败,参见VI视频输入返回码。
参考资源
接口调用流程,参见视频数据获取功能。
父主题: VI视频输入功能
hi_mpi_vi_get_dev_bind_pipe
函数功能
获取VI设备与物理PIPE的绑定关系。
函数原型
hi_s32 hi_mpi_vi_get_dev_bind_pipe(****hi_vi_dev vi_dev, hi_vi_dev_bind_pipe *dev_bind_pipe)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| vi_dev | 输入 | VI设备号。 取值范围:[0, 4)。 |
| dev_bind_pipe | 输出 | VI 物理PIPE号。 取值范围:[0, 4)。 |
返回值说明
- 0:成功
- 非0:失败,参见VI视频输入返回码。
父主题: VI视频输入功能
hi_mpi_vi_set_dev_attr
函数功能
设置VI设备属性。
约束说明
在调用前要保证VI设备处于禁用状态。如果VI设备已处于开启状态,可以使用hi_mpi_vi_disable_dev来禁用设备。
函数原型
hi_s32 hi_mpi_vi_set_dev_attr(hi_vi_dev vi_dev, const hi_vi_dev_attr *dev_attr)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| vi_dev | 输入 | VI设备号。 取值范围:[0, 4)。 |
| dev_attr | 输入 | VI设备属性指针。静态属性。 参数dev_attr主要用来配置指定VI设备的视频接口模式、数据类型、图像宽高等属性,用于与外围sensor对接。 |
返回值说明
- 0:成功
- 非0:失败,参见VI视频输入返回码。
参考资源
接口调用流程,参见视频数据获取功能。
父主题: VI视频输入功能
hi_mpi_vi_get_dev_attr
函数功能
获取VI设备属性。
约束说明
如果未设置VI设备属性,该接口将返回失败。
函数原型
hi_s32 hi_mpi_vi_get_dev_attr(****hi_vi_dev vi_dev, hi_vi_dev_attr *dev_attr)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| vi_dev | 输入 | VI设备号。 取值范围:[0, 4)。 |
| dev_attr | 输出 | VI设备属性指针。 |
返回值说明
- 0:成功
- 非0:失败,参见VI视频输入返回码。
父主题: VI视频输入功能
hi_mpi_vi_enable_dev
函数功能
启用VI设备。
约束说明
- 启用VI设备前,必须先调用hi_mpi_vi_set_dev_attr接口设置设备属性,否则返回失败。
- 可重复启用VI设备,不返回失败。
函数原型
hi_s32 hi_mpi_vi_enable_dev(****hi_vi_dev vi_dev)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| vi_dev | 输入 | VI设备号。 取值范围:[0, 4)。 |
返回值说明
- 0:成功
- 非0:失败,参见VI视频输入返回码。
参考资源
接口调用流程,参见视频数据获取功能。
父主题: VI视频输入功能
hi_mpi_vi_disable_dev
函数功能
禁用VI设备。
约束说明
- 需先调用hi_mpi_vi_destroy_pipe接口销毁所有与该VI设备绑定的物理PIPE后,再禁用VI设备。
- 可重复禁用,不返回失败。
- 禁用VI设备后,VI设备处理完全关闭的状态,在下次调用hi_mpi_vi_enable_dev接口启用VI设备前,需要重新调用hi_mpi_vi_set_dev_attr接口设置该设备的属性。
函数原型
hi_s32 hi_mpi_vi_disable_dev(****hi_vi_dev vi_dev)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| vi_dev | 输入 | VI设备号。 取值范围:[0, 4)。 |
返回值说明
- 0:成功
- 非0:失败,参见VI视频输入返回码。
参考资源
接口调用流程,参见视频数据获取功能。
父主题: VI视频输入功能
在线提单