1.概念
从数字视频诞生以来,硬解码和软解码的说法一直伴随着它的发展。数字视频的软解码是指在通用CPU上通过专门的播放软件解码并播放视频;而硬解码则是指在专用的硬件解码模块解码视频,然后将解码数据送至显示屏播放。严格来说,并不存在纯粹的硬解码,因为即使有硬件协处理模块存在,整个解码过程也需要软件来控制。所以本文所讨论的是约定俗称的软解码和硬解码。
2.历史
早在20世纪80年代,数字视频商业化应用(Sony的D1格式,http://en.wikipedia.org/wiki/Digital_video#History)已经出现。那时的数字视频是未经压缩地存储在磁带上,所占空间非常大,其相关产品极其昂贵,普通消费者难以承担,因此数字视频的概念没有普及。1992年数字视频压缩标准MPEG-1的发布,尤其后来的基于该标准的VCD标准发布以及相关产品的问世,极大地推动了数字视频在消费领域的发展,同时也使数字视频的概念在消费者中得到了普及。后来的MPEG-2和基于其上的DVD和数字电视的普及,让消费者欣赏到更高品质的视频节目。新世纪的H264标准和其它私有视频标准如RM,WMV,VP8格式等,极大促进了网络视频的快速发展。去年新一代标准H.265的推出,标志着数字视频技术和产业达到了一个新的高度。
在数字压缩标准(技术)不断进步的同时,它的编解码技术、手段也有不断的创新。数字视频压缩标准刚刚诞生的上世纪90年代初,通用CPU计算能力远远无法满足解码需求,所以那时的解码方式全部采用专门硬件解码芯片来解码,如VCD播放机、MPEG-1解压卡(可以插到386或者486电脑上用来播放VCD电影)。到了2000年左右,计算机的性能已经可以播放DVD节目,这时涌现出不少优秀的DVD播放软件,可以在个人计算机上流畅地软解码DVD数据。这一时期软解码和硬解码都非常流行。此后随着网络的发展,网络视频发展迅猛。网络视频的压缩格式多种多样,如RM、VP8、MPEG4、H.264、WMV、MPEG2。由于格式的多样,对于硬件实现来说,实现起来相对复杂,另外这一时期的网络终端是个人电脑,其运算能力也足以解码这些视频内容,所以软解码的优势比较明显。当下, ARM架构的通用CPU在移动设备领域取得了X86架构在个人电脑领域那样的地位。ARM架构的CPU主频也可以达到1.5GHZ以上,同时双核,四核甚至八核的CPU也得到了广泛的应用,其运算能力早已达到或者超过了以前的PC。视频软解方案也大量出现在移动设备中。
3.解码流程以及软硬解码的区别
数字视频软解码, 是指视频流数据完全通过通用CPU来实现播放。其大致流程如下:首先视频播放软件把视频流文件从存储介质中读取到内存中,然后通过一个封装格式解析模块,把文件中的视频数据和音频数据分开;接下来播放软件负责把视频数据传送到视频解码模块,音频数据传送到视频解码模块;视频解码模块也是一个运行在通用CPU上的纯粹的软件模块,它利用复杂的算法,实现对视频数据的解压缩;解压缩之后的数据被送到视频显示模块,由显示模块驱动硬件来显示视频内容。音频数据的处理方式类似。
数字视频的硬解码,则是在专用的解码硬件模块协助之下,CPU完成视频流数据的播放。它的流程是:首先通用CPU负责把视频流数据读到内存中,有运行在通用CPU上的数据封装格式解析模块把数据中视频和音频分开,其中音频数据被送到专用的硬件解码模块中去,由硬件解码模块负责把视频数据解压缩,把解压缩出来的数据又送回通用CPU,由后者用解压后的数据驱动硬件实现视频的显示。而音频可能是由通用CPU软解码,也可能有专门的硬件模块来进行音频解码。
从上述描述中可以看出,不管是硬件解码或者软件解码,通用CPU的参与必不可少,通用CPU负责视频流的播放流程。不同之处是极大运算量的解码算法是在通过CPU中完成,还是在专用硬件解码模块中完成。
4.软解码和硬解码的应用
目前压缩视频的软解码和硬解码均广泛存在,然而二者的应用领域和范围有一定差别。
软解码主要在下列设备广泛应用:
(1)个人计算机。目前个人计算机上的视频全部是通过软解码的形式实现播放的,这个和个人应用以及网络应用中,存在大量的压缩格式有关,同时也和目前个人计算机超强的计算能力密不可分。
(2)智能手机。现在的智能手机芯片都具有很强的计算能力,同时也都有视频硬件解码模块,但是硬件解码模块支持的视频格式有限,同时受限于与之适配的专用播放软件,所以智能手机在播放网络视频时,大部分采用是软解码方式。
(3)平板电脑。平板电脑普遍采用与智能手机同样的芯片组,同时使用方式也与智能手机类似,所以在播放网络视频也主要采用软解码。
硬解码主要应用于下列设备:
(1)智能手机和平板电脑,如前所述,这些设备存在视频加速模块,在播放本地高清文件时,采用硬解码的情形还是比较多的。
(2)机顶盒。早期的机顶盒基本上是一个MIPS架构的CPU+硬件解码模块。所以在这种设备上只存在硬解码一种情形。不过最近比较新的机顶盒采用与智能手机相同档次的芯片,但是基于成本考虑,大部分机顶盒还是采用硬解码方案。不过随着芯片性能提升和价格的降低,机顶盒采用软解码的比例会慢慢提升。
(3)家用相机(摄像和回放功能)。具有摄像功能的相机,都具有回放功能,这些设备的视频解码都是应用硬解码实现。
(4)视频会议。视频会议强调实时性,同时视频编码格式唯一,解码一般是硬解码
5.趋势与展望
硬件解码的存在是为了弥补通用CPU的运算能力的不足。随着通用CPU的运算能力的提升,原来在通用CPU上无法完成的解码任务,也逐渐可以完成,这时硬件解码方案就显得不太重要了。目前的智能手机芯片软解码MPEG-1,MPEG-2视频数据非常流畅,部分手机软解码H.264视频数据也很流畅,所以在智能手机领域用软解码方式也越来越普遍。但是这并不是说明硬解码方式会慢慢淡出,因为人们的视频压缩比,视频解析度的需求也在不断提升,这就要求设备有更强大的计算能力,在通用CPU无法满足的情况下,硬件解码模块也是必不可少的。
去年H.265标准的推出带来了硬件解码与软件解码之间的一些争论,争论的焦点是在智能手机上到底H.265硬件解码会占主流地位,还是软件解码占主流地位。硬件解码支持者认为,智能手机芯片计算能力支持H.265高清播放还比较勉强,只有用硬件解码才能实现流畅的播放,从成本考虑不必仅仅为了支持H.265而对主芯片要求更高的性能。软解码支持者则从标准成熟度以及通用CPU的性能发展考虑,认为H.265作为一个比较新的标准,会经过不断的修订,如果用硬件解码方案,可能硬件无法随着修订案不断地更改,导致硬件无法解码有关视频,另外通用CPU的性能提升大致符合摩尔定律,性能提升很快。原来认为在ARM架构下软解码H.265视频是不太可能的事情,现在看来是可以实现的。用红米手机(小米公司出品的一款低价的智能手机,采用MTK6589芯片,四核cotrtex-A7 1.5G)播放H.265压缩格式的1080p的视频,已经非常流畅(播放软件采用的是北京瑞普图视科技有限公司开发的H.265播放apk,视频播放能到30fps以上)。目前高端手机普遍采用的是运算能力更强的高通骁龙800四核处理器,播放H.265视频更是没有问题。
本文摘自:http://blog.163.com/yzf918@126/blog/static/62265699201402655322797/