VI模块的主要工作应该包括视频输入捕获、预处理(如裁剪、缩放)、模式切换(在线和离线)、通道管理(物理和扩展通道)以及内存管理。这部分需要结合多个搜索结果,确保覆盖所有提到的功能。
关于接口调用流程,可能需要参考具体的步骤,VI软件结构分为输入设备、输入PIPE、物理通道和扩展通道,还有初始化的流程。VI在在线模式下直接传输数据给VPSS,离线模式则存入内存,这可能影响接口调用的流程。
海思方案中 VI 模块的核心功能与接口调用流程
一、VI 模块的核心功能
视频输入捕获
支持多种接口(如 MIPI、BT.1120、LVDS、HISPI 等),接收来自传感器(Sensor)的原始视频数据。
通过时序解析器处理输入信号,确保数据格式和时序正确。
图像预处理
裁剪(Crop):截取有效图像区域,去除无效像素14。
缩放与畸变校正:部分芯片支持镜头畸变校正(如广角摄像头),并支持输出不同分辨率的图像。
模式管理
在线模式:数据直接传输至 VPSS 模块进行后续处理,减少内存占用。
离线模式:数据存入视频缓存池(VB),供其他模块(如 VDEC、VDA)异步读取。
通道管理
物理通道(Physical Channel):直接连接传感器的硬件通道,每个 VI 设备独立运行。
扩展通道(Extended Channel):基于物理通道生成多路输出,支持不同分辨率或格式(如主码流、子码流)。
内存管理
通过视频缓存池(VB)分配内存块,避免数据拷贝,提升传输效率。
二、VI 模块的接口调用流程
初始化与配置
创建输入设备(DEV):通过 HI_MPI_VI_CreateDev 初始化 VI 设备,指定传感器类型和接口参数。
设置输入 PIPE:配置 ISP(图像信号处理)流水线,包括去噪、白平衡等算法。
通道配置
物理通道参数:通过 HI_MPI_VI_SetChnAttr 设置分辨率、帧率、裁剪区域等。
扩展通道生成:使用 HI_MPI_VI_EnableExtChn 开启扩展通道,输出多路差异化数据流。
数据流绑定
在线模式绑定 VPSS:调用 HI_MPI_SYS_Bind 将 VI 物理通道与 VPSS 组直接绑定,实现数据实时传输。
离线模式绑定 VB:配置 VI 输出到指定缓存池,供其他模块异步获取。
启动与运行
启用设备:通过 HI_MPI_VI_StartDev 启动视频输入设备。
启用通道:调用 HI_MPI_VI_StartChn 激活物理/扩展通道,开始数据采集。
资源释放
停止通道与设备:依次调用 HI_MPI_VI_StopChn 和 HI_MPI_VI_StopDev 停止数据流。
销毁设备:通过 HI_MPI_VI_DestroyDev 释放 VI 设备资源
三、典型应用场景示例
多分辨率输出
Sensor → VI物理通道
├→ 扩展通道1(主码流:4K@30fps) → VPSS → VENC
└→ 扩展通道2(子码流:1080P@60fps) → VO(显示输出)
离线存储与分析
Sensor → VI物理通道(离线模式) → VB → VDA(移动侦测) + VDEC(解码回放)
四、关键设计要点
硬件依赖:不同芯片的物理通道数量不同(如 Hi3559AV100 仅支持单物理通道,但可扩展 8 路输出)。
性能优化:在线模式适用于低延迟场景,离线模式适合异步处理或多任务分发。
错误处理:需监控 VI 设备状态(如帧丢失、时序错误),并通过回调机制实现异常恢复。
具体接口函数名称及参数需参考海思 SDK 文档,不同芯片型号可能存在差异。