海思HI35xx平台软件开发快速入门之背景知识
前言:
安防领域最近几年可谓暗流涌动,作为安防业的双寡头,大华股份与海康威视凭借行业的东风,两家公司的成长速度异常强劲,在国际市场上已经和应用厂家进行厮杀。 2015年两家公司双双晋升“全球安放50强”,海康排名第二,大华排名第五。以华为海思为代表国产芯片解决方案不断走强,在国际竞争中优势凸显,在后端NVR高端产品线先后推出了海思3531、海思3535、海思3536,同时针对低端的产品线也不断丰富和完善,比如优化后的海思3515A、3520D等,而在前端IPC领域则推出了诸如海思3516C、海思3518E等芯片,产品系列涵盖不同的应用场景,在出货量方面领先于老牌厂商TI、安霸。海思之所以能够在短时间内一跃成为安防领域芯片最大的供应商,取决于海思非常注重芯片应用层面的支持以及低成本优势,它提供的音视频软件HIMPP API使得下游厂商能够快速开发出自己个性化的产品。去年音视频编解码芯片国内出货占比图如下所示:
在音视频处理领域,海思芯片占有全球市场的很大份额,我们很有必要了解如何在海思HI35xx平台进行音视频编解码编程快速入门。在使用海思芯片开发时,程序开发模型主要是围绕HIMPP(Hisi Media Process Platform)提供的API进行。这里围绕主角HIMPP详细介绍与它相关的专业词汇与背景知识,对HIMPP有充分了解之后,我们就可以利用它实现音视频编解码等业务逻辑。
HIMPP平台架构简介:
海思提供的媒体处理软件平台(Hisi Media Process Platform,简称HIMPP),可支持软件快速开发。该平台对应用软件屏蔽了芯片相关复杂的底层原理,并对应用软件直接提供MPI(MPPProgram Interface)接口完成相应功能。该平台支持应用软件快速开发以下功能:输入视频捕获、H.264/MJPEG/JPEG/MPEG4编码、H.264/MJPEG/JPEG/MPEG4解码、视频输出显示、视频图像前处理(包括去燥、增强、锐化、Deinterlace)、编码码流叠加OSD、视频侦测分析、智能分析、音频捕获及输出、音频编解码等功能。HIMPP平台主要是衔接了操作系统层与应用层,典型软件架构体系示意图如下:
HIMPP平台典型架构主要分以下几个层次:
1、硬件层
硬件层由Hi35xx芯片加上必要的外围器件构成。外围器件包括Flash、DDR(Double Data-Rate)、视频Sensor或AD、音频AD等。
2、操作系统层
基于Linux3.10.y的操作系统。
3、媒体处理平台层
基于操作系统层,控制芯片完成相应的媒体处理功能。它对应用层屏蔽了硬件处理希捷,并为应用层提供API接口完成相应功能。
4、其他驱动层
除了媒体处理平台外,海思为HI35xx芯片的其他硬件处理单元提供了相应的驱动,包括GMAC、SDIO、I2C、USB、SSP等驱动。
5、应用层
基于海思媒体处理平台及其他驱动,由用户开发的应用软件系统。
小结一下,从这个HIMPP平台典型架构中可以看出,在海思HI35xx平台音视频编解码编程我们只需要关心应用层逻辑和媒体软件处理平台就好了。关于应用层如何实现在后续博文详解,或者点击此下载demo,本文主要讲述HIMPP平台处理流程,以快速入门海思HI35xx平台音视频编解码编程。
HIMPP平台业务逻辑处理流程:
为了方便描述,直接上图,海思媒体处理平台主要流程图如下:
这里还有必要了解一下与HIMPP内容相关的专业名词,主要部分分为视频输入(VI)、视频处理(VPSS)、视频编码(VENC)、视频解码(VDEC)、视频输出(VO)、视频侦测分析(VDA)、音视频输入(AI)、音视频输出(AO)、音频编码(AENC)、音视频解码(ADEC)、区域管理(REGION)等模块。
海思媒体处理平台主要流程分为视频处理及音频处理两条路线,视频处理路线起点包括AD和HARD DISK两种,这很容易理解,AD即前端对COMS或CDD传感器进行AD采集得到最原始的图像数据,至于如何采集并编码为H264或H265数据,HIMPP已经帮我们做好了,直接调用API就好,接着将H264或H265数据推至VI,这个模型适合实时预览应用场景开发;而HARD DISK则源于我们已经保存在硬盘的录好视频文件,我们需要的操作是读取文件然后将数据推至VDEC进行解码,这个模型则适合监控回放场景开发。VPSS作为编解码的中转站,可以实现对图像数据进行处理,其中最重要的就是不同分辨率的裁剪以及抓拍,调用VPSS相关的API可以实现对图像视频进行操控,经过VPSS可以输出到REGION、VDA、VO处理,这里重点讲述VO,VO作为联系视频流与显示的纽带,它接收VPSS的数据然后推送至HDMI或VGA进行显示。VO是多图层设备,基于此可以时间用户GUI操作与视频层分离,也可以实现画中画等功能,VO的配置还包括图像输出刷新频率、图像颜色效果等。