海思压缩板Hi3516中mpp(Media Process Platform)
mpp是海思提供的媒体软件处理平台,可支持应用软件快速开发,该软件屏蔽了芯片相关的复杂底层处理,直接对应用程序提供了MPI接口完成相应的功能。该平台支持的的功能有:输入视频捕获、H.265/H.264/MJPEG/JPEG/MPEG4 编码、H.264/MPEG4/MPEG2解码、视频输出显示、视频图像前处理(包括去噪、增强、锐化、Deinterlace)、编码码流叠加OSD、视频侦测分析、智能分析、音频捕获及输出、音频编解码等功能。
在学习Hi3516mppSDK的过程中,从使用手册中记录一些感觉比较重要的感念,学习硬压缩系统的框架
1.系统概述
1.1、系统架构
硬件层 , 硬件层由Hi35xx芯片加上外围器件构成,外围器件包括Flash,DDR,视频Sensor或者视频AD,音频AD等
操作系统层 , 基于linux3.4的OS
mpp(媒体处理平台) , 基于OS,控制芯片完成了相应的媒体处理功能
其他驱动 , Hi35xx芯片的其他硬件驱动
应用层 , 用户开发的软件系统
1.2mpp平台架构
- VI(视频输入)
- VPSS(视频处理)
- VDEC(视频解码)
- VENC(视频编码)
- REGION(区块管理)
- VO(视频输出)
- VDA(视频侦测分析)
- AI(音频输入)
- AO(音频输出)
- AENC(音频编码)
- ADEC(视频解码)
下面的内容就是如何使用海思提供的SDK进行编写应用程序,仅仅记录一下比较重要的概念
2.mpp系统控制
在启动mpp应用程序之前,必须完成mpp系统的一些初始化工作,初始化工作包括初始化以及管理MPP系统各个业务模块的工作状态,提供MPP系统的版本信息,提供大块物理内存管理功能。在应用程序退出MPP业务后也应该完成MPP系统去初始化工作,释放资源
2.1视频缓存池
一个视频缓冲池就是一组大小相同,物理地址连续的缓存块组成
作用: 向媒体业务提供大块物理内存管理功能,负责内存的分配和回收,充分发挥内存缓存池的作用,让物理内存资源在各个媒体处理中合理使用
视频输入通道需要使用公共视频缓存池。所有的视频输入通道都可以从公共视频缓存
池中获取视频缓存块用于保存采集的图像(如图2-1 中所示从公共视频缓存池A 中获
取视频缓存块Bm)。由于视频输入通道不提供创建和销毁公共视频缓存池功能,因
此,在系统初始化之前,必须为视频输入通道配置公共视频缓存池。根据业务的不
同,公共缓存池的数量、缓存块的大小和数量不同。图2-1 中所示缓存块的生存期是
指经过VPSS 通道传给后续模块的情形(图2-1 实线路径)。如果该缓存块完全没有经
过VPSS 通道传给其他模块,则将在VPSS 模块处理后被放回公共缓存池(图2-1 虚线
路径)。
3.视频输入(VI)
视频输入(VI)模块实现的功能:通过ITU-R BT656/601/1120 接口或Digital Camera
接口、MIPI Rx(含MIPI 接口、LVDS 接口和HISPI 接口)接收视频数据。当工作在离线
模式时,将接收到的数据存入到指定的内存区域;当工作在在线模式时,VI 会将数据
直接送给VPSS。在此过程中,VI 可以对接收到的原始视频图像数据进行裁剪
(Crop)等处理,并实现一路原始视频图像输入,输出一路视频图像功能。
重要感念:
视频输入设备 ,视频输入设备支持若干种时序输入,负责对时序进行解析,Hi3516a只有一个VI设备,Dev0,Dev0支持BT.656、BT.601、DC、MIPI Rx(MIPI、LVDS、HISPI 接口)输入。
在线模式与离线模式 , 1.离线模式:是指 VI 写出数据到DDR,然后与之绑定的模块从DDR 读取数据;2.在线是指 VI 与VPSS 之间的在线数据流传输,在此模式下VI 不会写出到DDR,而是直接把数据流送给VPSS。
视频物理通道,视频物理通道负责将输入设备解析后得到的视频数据输出到DDR。在真正将数据
输出到DDR 之前,它可以实现裁剪等功能。HI3516a仅仅支持一个VI视频物理通道,不存在次通道,但是可以支持扩展通道;Hi3516A 物理通道支持的典型分辨率如[email protected]、[email protected]、[email protected]、2048*[email protected]、2592*[email protected] 等。视频扩展通道 , 扩展通道是物理通道的扩展,主要实现缩放功能,其数据来源于物理通道。
Hi3516A/Hi3518EV200/Hi3519V100 最多支持16 个扩展通
Hi3516只有一个视频输入设备Dev0,仅仅支持一个VI视频物理通道Chn0,但是可以扩展通道
4.视频处理子系统VPSS
VPSS(Video Process Sub-System)支持对一幅输入图像进行统一预处理,如去噪、去
隔行等,然后再对各通道分别进行缩放、锐化等处理,最后输出多种不同分辨率的图像。
VPSS的图像处理功能包括:
- FRC ,Frame Rate Control , 帧率控制
- Crop , 裁剪
- DEL ,De-interlace , 去隔行,把交错的隔行视频源还原成逐行视频源
- NR ,Noise Reduce ,去燥 ,把图像的高斯噪声去除,使图像变得平滑,有助于降低编码率
- LDC ,Lens Distortion ,镜头畸变校正
- Rotate , 旋转
- Sacle , 对图像缩小放大
5.视频编码
5.1VENC的输入源:
用户读取的图像文件向编码模块发送数据
视频输入(VIU)模块采集的图像经视频处理子系统(VPSS)发送到编码模块
视频输入(VIU)模块采集的图像直接发送到编码模块
5.2支持的编码格式
H.264有四种画质级别,分别是BP、EP、MP、HP:
BP-Baseline Profile:基本画质。支持I/P 帧,只支持无交错(Progressive)和CAVLC;
EP-Extended profile:进阶画质。支持I/P/B/SP/SI 帧,只支持无交错(Progressive)和CAVLC;
MP-Main profile:主流画质。提供I/P/B 帧,支持无交错(Progressive)和交错(Interlaced),也支持CAVLC 和CABAC 的支持;
- HP-High profile:高级画质。在main Profile 的基础上增加了8x8内部预测、自定义量化、无损视频编码和更多的YUV 格式;
5.3数据编码流程图
在图6-1中,VENC模块由编码通道子模块VENC和编码协议子模块(H.264/H.265/JPEG/MJPEG)组成,通道支持接收YUV 格式图像输入,支持格式为Semi-planar YUV 4:2:0 或Semi-planar
YUV 4:2:2,其中H.264/H.265 只支持Semi-planar YUV 4:2:0,JPEG/MJPEG 支持SemiplanarYUV 4:2:0 或Semi-planar YUV 4:2:2
注意
通道接收到图像之后,比较图像尺寸和编码通道尺寸:
如果输入图像比编码通道尺寸大,VENC 将按照编码通道尺寸大小,调用VGS 对
源图像进行缩小,然后对缩小之后的图像进行编码。如果输入图像比编码通道尺寸小,VENC 丢弃源图像。VENC 不支持放大输入图
像编码。如果输入图像与编码通道尺寸相当,VENC 直接接受源图像,进行编码。
5.4编码通道
编码通道作为基本容器,保存编码通道的多种用户设置和管理编码通道的多种内部资
源。编码通道完成图像转化为码流的功能,具体由码率控制器和编码器协同完成。这
里的编码器指的是狭义上的编码器,只完成编码功能。码率控制器提供了对编码参数
的控制和调整,从而对输出码率进行控制。