VPSS视频处理

VPSS必须配合VI模块一起使用,接口调用流程说明如下:

图1 VPSS调用流程

接口调用流程说明如下:

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