硬件视频编解码基本知识

  • 时间:
  • 浏览:
  • 来源:互联网

所有的平板手机电视应用处理器芯片,介绍性能都是关注cpu,gpu的性能,但是除了这些之外,芯片里边还有很多其他模块,对整体性能的影响也很大,任何一处成为瓶颈,都会让整机应用卡壳。
这里就讲一下一个整机性能里边基本不会提到,但是对视频流播放非常重要,且复杂度很高的硬件模块,就是硬件视频流编解码器,一般简称VPU (video processing unit).


上图左上第3个 full 4k video 代表其中的视频处理系统,其中的最大头,就是编解码器。
如果需要播放视频压缩文件,则需要调用解码器。录制视频压缩文件,使用编码器。这个任务看起来很单一明确,但是具体执行,却不太简单。
先看看这个解码过程的输入都有啥。视频压缩格式经过这么多年的发展,不同国家不同组织分别发布了不同的压缩标准


以上是各个标准的产生消亡时间。
一个播放器,要做到兼容以上这些标准,复杂程度堪比一个兼容2/3/4/5G的基带了,而且解压后图像的数据量,要远大于基带通信中的数据量。这就造成这个视频硬件解码器,会是一个逻辑量很大的电路,事实也是这样,一个支持h265 4k解析度的多规格解码器电路,大概要500-1000万门逻辑量。并且需要运行在500Mhz左右。所以手机播放视频,是一个很耗电的操作。
当然一个视频文件解码过程,并不是只有硬件的编码器单独负责,还需要cpu,总线,存储器,显示接口等个部件协同工作,才能把视频信息显示到屏幕上。如果是网络流媒体视频,还需要网络相关的部件参与。当然解码了视频,还要同时解码音频然后同步播出。


以上图大致表示了一个流媒体或者一个视频文件是如何被播放出来的。
假设我们直接解码一个mp4视频文件,则cpu来负责解析文件头,把视频bitstream放入存储器指定区域,启动硬件解码器,硬件解码器解码出每副图像的yuv数据放入存储器另外一段地址,并进行图像后处理。再由显示接口电路把内存中后处理过的数据读出在屏幕上显示。以上操作不断循环,直到文件播放完毕。音频流也同步进行解压播放形成伴音。
现在的Android系统中,都有openmax视频相关库,直接修改可以完成上述操作。
硬件视频解码器的内部操作,则更为复杂。下图为h265解码过程,细节可以看有关文章。


鉴于这个视频解码器的复杂程度和要求的多变,真正能把它做到稳定可用的团队,全地球也没有几个。即使国内那些号称多年技术积累的公司,大部分也是使用专门的模块提供商的产品。现在大致介绍下那几个能用的硬件视频解码器。
1 verisilicon 的 hantro G1 G2 H1 H2
这个应该算个国内公司,已经运营了超过15年,专门搞设计服务。 但是他的视频编解码器,也是接收的鬼子的遗产,先是一个芬兰公司卖给美国公司on2,然后卖给google,然后又卖给了芯原,现在应该是自己在继续开发。对于他们来说,最大优势,就是vp8 vp9这些协议都是google制定的,所以对于这些的编解码,应该没有其他公司比他们做的更好。
2 ARM的mali V76
ARM现在干cpu有钱了也是啥都干,这个视频编解码器,就像当年MTK给手机的turnkey方案一样,给国内做芯片集成的也提供了一个不用烦心的一站式多媒体解决方案。一揽子全用他的,不用担心集成时候出大篓子了。
3 chipsnmedia 的wave5
这是个韩国公司,现在干手机电视,除了中国,也就剩韩国了。他们的视频处理做了15年以上,算是很有积累的。比起其他公司,他们只做视频相关的玩意,所以即便看着公司不大,但是专业度高。
4 amphion的 malone
这个是英国一公司,曾经是科胜讯 飞利浦NXP 泰鼎的多媒体团队的那些人,也具备很长时间的技术积累,做出的模块面积很小。
除了以上几个提供者,还有一些厂家,能够提供有限的几种格式的编解码器。但是对于手机平板电视的处理器,哪怕少支持了一种的硬件解码,做成产品就得靠软件解码,那就得等着用户骂了。所以多格式解码器对各种格式的兼容,非常重要,小的团队做的玩意,基本就是大坑。另外也可以看出,这些做编解码器的公司,总是被卖了又卖,可见干这个玩意性价比是多么的低,多么的不挣钱。所以专门做标准化协议的电路实现,最后必然拼杀的皮毛不剩。

本文链接http://element-ui.cn/article/show-155722.aspx