下载
中文
注册

视频数据获取+VPSS视频处理功能

VPSS必须配合VI模块一起使用,本节介绍其接口调用流程及注意事项。

图1 VPSS调用流程

接口调用流程说明如下:

  1. 初始化
    1. 调用hi_mpi_sys_init接口完成媒体系统初始化。
    2. 调用hi_mpi_rgn_create创建区域。
    3. VPSS模块只能作为被绑定方,被动接收视频流数据并处理,所以需要调用hi_mpi_sys_bind接口,将规划好的VI通道绑定到VPSS组上。
    4. 调用hi_mpi_vpss_create_grp接口创建VPSS组,作为hi_mpi_sys_bind接口的被绑定方。
    5. 按需开启VPSS上功能:
    6. 调用hi_mpi_vpss_start_grp接口启用VPSS组。
    7. 调用hi_mpi_vpss_set_chn_attr接口设置通道属性,通道输出分辨率可以与输入源分辨率不一致,当不一致时,自动开启缩放,不同通道的缩放能力不一样。
    8. 如果需要开启鱼眼畸变矫正,则还需要调用hi_mpi_vi_set_chn_fisheye接口,设置鱼眼矫正参数。
    9. 调用hi_mpi_vpss_enable_chn接口启动VPSS通道。
    10. 调用hi_mpi_rgn_attach_to_chn接口将区域叠加到VPSS通道上。
  2. 采集并处理数据
    1. 使用MIPI Rx ioctl命令字初始化MIPI/Sensor硬件对接信息,接口调用流程请参见初始化MIPI/Sensor硬件对接信息
    2. 使用VI(Video Input)功能接口初始化VI模块,接口调用流程请参见初始化VI视频输入模块
    3. 使用ISP(Image Signal Processing)系统控制接口初始化并运行ISP模块,接口调用流程请参见初始化并运行ISP图像信号处理模块
    4. 根据hi_mpi_sys_bind接口设置的绑定策略,系统内部自动将VI处理后的图像自动传递给VPSS;
    5. 根据VPSS设置的参数,系统内部自动执行裁剪/3dnr/鱼眼矫正/缩放处理。
    6. 按需更新修改区域信息:
  3. 获取处理结果数据

    此时,用户可调用hi_mpi_vpss_get_chn_fd接口获取VPSS指定通道的句柄,并通过select/epoll接口等待VPSS处理结果。VPSS处理完后,会自动唤醒select/epoll等待,此时可调用hi_mpi_vpss_get_chn_frame接口获取VPSS处理后的图像数据,做后续处理,最后调用hi_mpi_vpss_release_chn_frame释放一帧通道图像。

  4. 释放VI和VPSS初始化资源
    1. 使用ISP功能接口释放ISP模块资源,接口调用流程请参见释放ISP图像信号处理模块资源
    2. 使用VI功能接口释放VI模块资源,接口调用流程请参见释放VI视频输入模块资源
    3. 使用MIPI Rx ioctl命令字退出MIPI/Sensor硬件,接口调用流程请参见退出MIPI/Sensor硬件
    4. 调用hi_mpi_rgn_detach_from_chn接口将指定区域从通道中删除。
    5. 调用hi_mpi_vpss_disable_chn接口关闭VPSS通道。
    6. 调用hi_mpi_vpss_stop_grp接口停止VPSS组。
    7. 调用hi_mpi_vpss_destroy_grp接口销毁VPSS组。
    8. 调用hi_mpi_sys_unbind接口取消VI和VPSS的绑定。
    9. 调用hi_mpi_rgn_destroy接口销毁区域。
    10. 最后调用hi_mpi_sys_exit接口完成后媒体系统的退出。