视频(4)--->视频编码的硬件平台HiSI3516

海思压缩板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平台架构

  1. VI(视频输入)
  2. VPSS(视频处理)
  3. VDEC(视频解码)
  4. VENC(视频编码)
  5. REGION(区块管理)
  6. VO(视频输出)
  7. VDA(视频侦测分析)
  8. AI(音频输入)
  9. AO(音频输出)
  10. AENC(音频编码)
  11. 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 物理通道支持的典型分辨率如720p@30、1080p@30、1080p@60、2048*1536@30、2592*1944@30 等。

  • 视频扩展通道 , 扩展通道是物理通道的扩展,主要实现缩放功能,其数据来源于物理通道。
    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编码通道


编码通道作为基本容器,保存编码通道的多种用户设置和管理编码通道的多种内部资
源。编码通道完成图像转化为码流的功能,具体由码率控制器和编码器协同完成。这
里的编码器指的是狭义上的编码器,只完成编码功能。码率控制器提供了对编码参数
的控制和调整,从而对输出码率进行控制。

你可能感兴趣的:(arm)