下面给出基于Hi3559AV100的视频采集整体设计,具体设计将在后续给出:
图形采集端整体设计
Hi3559AV100软件程序按结构划分可分为4层,第一层是硬件驱动层,第二层是操作系统层,第三层是媒体软件处理平台(MPP,MediaProcessPlatform)。第四层是应用层,其系统层次结构如图1所示:
图1 Hi35xx典型系统层次结构
硬件驱动层指Hi3559AV100的相关硬件处理单元的驱动程序,负责为操作系统以及上层软件提供设备的操作接口。在嵌入式处理器Hi3559中,海思对Hi3559芯片内部的硬件处理单元提供了相应的驱动,包括GMAC、I2C、USB、串口等硬件驱动,能够大大缩短开发时间,降低开发难度。
操作系统层采用裁剪的Linux内核HiLinux。操作系统层提供了媒体处理平台的所需的基础函数,以支持媒体处理平台在操作系统上正常运行。
媒体软件处理平台(MPP,Media Process Platform)是海思半导体有限公司提供的软件处理系统,主要分为视频输入(VI)、视频处理子系统(VPSS Video processing subsystem)、视频编码(VENC)、视频解码(VDEC)、视频输出(VO)、区域管理(REGION)等模块。MPP对应用层屏蔽了芯片相关的底层处理,应用软件可以直接使用MPP提供MPI(MPPProgrameInterface)接口完成相应功能。
在之后的图像视频开发中,主要使用了MPP中的VDEC、VPSS、VO模块来实现视频解码传输、视频图像处理、以及视频输出的功能。
Hi3559中的软件程序设计包括视频采集、视频图像处理、区域管理、视频压缩以及视频传输程序。其中,视频解码传输、视频图像处理、视频压缩、视频输出分别通过MPP中的VDEC、VPSS、VO模块实现。
Hi3559程序设计流程如图2所示,从SD card将.h264、.h265等视频流送入到VDEC,然后VDEC绑定VPSS,利用VPSS模块对视频流做压缩等操作,之后VPSS绑定VO,VPSS数据输入至VO,最后通过HDMI输出。
图2 Hi3559程序设计流程
系统控制根据 Hi35xx 芯片特性,完成硬件各个部件的复位、基本初始化工作,同时负责完成 MPP(Media Process Platform 媒体处理平台)系统各个业务模块的初始化、去初始化以及管理 MPP 系统各个业务模块的工作状态、提供当前 MPP 系统的版本信息、提供大块物理内存管理等功能。应用程序启动 MPP 业务前,必须完成 MPP 系统初始化工作。同理,应用程序退出MPP 业务后,也要完成 MPP 系统去初始化工作,释放资源。视频缓存池主要向媒体业务提供大块物理内存管理功能,负责内存的分配和回收,充分发挥内存缓存池的作用,让物理内存资源在各个媒体处理模块中合理使用。一组大小相同、物理地址连续的缓存块组成一个视频缓存池。必须在系统初始化之前配置公共视频缓存池。根据业务的不同,公共缓存池的数量、缓存块的大小和数量不同。
所的视频输入通道都可以从公共视频缓存池中获取视频缓存块用于保存采集的图像,如图3中所示 VI 从公共视频缓存池 B 中获取视频缓存块 Bm,缓存块 Bm 经 VI发送给 VPSS,输入缓存块 Bm 经过 VPSS 处理之后被释放回公共视频缓存池。假设VPSS 通道的工作模式是 USER,则 VP.........