H.264(MPEG 4, class 10 )是目前嵌入式和移动设备中采用最多的视频编解码算法标准。目前超过50家公司提供H.264相关的产品(H.264 hardware/software building blocks )。最近几年谷歌Google开源了
WebM video coder 来构建基于Android的移动和消费视频平台。还有其他开源的视频标准codec如Dirac, FFMpeg and Theora,但市场上应用的很少。一些市场上的主导者如 Allegro, Broadcom, Samsung, 和 ViXS等已经开始H.265High Efficiency Video Coder (HVEC)的开发。
Embedded论坛上有一些论述H.264/H.265编解码器设计的文章博客或者白皮书:
Making mobile video apps more energy efficient
A tutorial on the H.264 scalable video codec
Introduction to video transcoding for consumer electronics
A low power implementation of the H.264 codec for consumer apps
Trade-offs with H.264 and other video codecs
Wireless HDMI with a low latency, lossless H.264 video codec
Zero latency time-critical video encode/decode with H.264
Codec designfor nextgen Internet Video
Using the H.264 spec to do anywhere, anytime placeshifted video,
Apple's continued support for the standards
虽然H.264/H.265仍然是视频codec的首选,但由于专利等问题,Google的WebM开源编解码器也在嵌入式平台得到了很大的应用。Google的chrome处理器也优先集成VP8、VP9的编解码标准。
H.264/MPEG-4第10部分,或称AVC(Advanced Video Coding,高级视频编码),是一种视频压缩标准,一种被广泛使用的高精度视频的录制、压缩和发布格式。第一版标准的最终草案于2003年5月完成。H.264/MPEG-4 AVC是一种面向块的基于运动补偿的编解码器标准。由ITU-T视频编码专家组与ISO/IEC联合工作组——即动态图像专家组(MPEG)——联合组成的联合视频组(JVT,Joint Video Team)开发。因ITU-T H.264标准和 ISO/IEC MPEG-4 AVC标准(正式名称是ISO/IEC 14496-10 — MPEG-4第十部分,高级视频编码)有相同的技术内容,故被共同管理。H.264因其是蓝光盘的一种编解码标准而著名,所有蓝光盘(blue-ray)播放器都必须能解码H.264。它也被广泛用于网络流媒体数据如Vimeo、YouTube、以及Apple的iTunes Store,网络软件如Adobe Flash Player和Microsoft Silverlight,以及各种高清晰度电视陆地广播(ATSC,ISDB-T,DVB-T或DVB-T2),线缆(DVB-C)以及卫星(DVB-S和DVB-S2)。
图1. H.264编码流程图
H.264/AVC包含了一系列新的特征,使得它比起以前的编解码器不但能够更有效的进行编码,还能在各种网络环境下的应用中使用。这些新特性包括:
上述这些技术,与其它技术的结合,使得H.264比起以前的视频编解码能够带来性能上显著的提高,并在各种不同的环境下达成更广泛的应用。H.264在压缩性能上比起MPEG-2有很大的提高,在相同的图像质量下可以,码率可以减少到一半或者更少。和MPEG的其它视频标准一样,H.264/AVC也提供了一个参考软件JM(http://iphome.hhi.de/suehring/tml/)以及开源的快速实现x264(http://www.videolan.org/x264.html),并可以免费下载。它的主要目的是提供一个演示H.264/AVC各种功能的演示平台,而不是作为一个直接的应用平台。目前在MPEG也同时在进行一些硬件参考设计的实现。
苹果公司已经将H.264集成进入Mac OS X版本v10.4(昵称Tiger),并于2005年5月发布了支持H.264的QuickTime版本7.0。
第三代移动通信合作组织(3GPP)已经在第六次发布中批准H.264/AVC作为其移动多媒体电话服务标准的可选技术。
美国国防部下的运动图像标准协会(MISB for The Motion Imagery Standards Board)已经接受H.264/AVC为其核心应用的推荐视频编解码器。
互联网工程工作小组(IETF)已经完成了一个负载打包格式(RFC 3984)作为在其实时传输协议(RTP)上传输H.264/AVC码流的打包办法。
互联网流媒体协会(ISMA for Internet Streaming Media Alliance)已经接受H.264/AVC作为其ISMA 2.0的技术规范。
MPEG组织将H.264/AVC完全的集成进入了它的系统协议(例如MPEG-2和MPEG-4系统)和ISO媒体格式协议。
国际电信联盟ITU-T标准组已经采纳H.264/AVC作为其H.32x系列的多媒体电话系统的系统规范的一部分。ITU-T的采纳,使得H264/AVC已经被广泛的使用在视频会议系统中,并获得了视频电话主要的两家产品提供商(Polycom和Tandberg的支持。实际上所有新的视频会议产品都支持H.264/AVC。
H.264将很可能被各种视频点播服务(Video-On-Demand,VOD)使用,用来在互联网上提供电影和电视节目直接到个人电脑的点播服务。
可伸缩视频编码(Scalable Video Coding, SVC)是传统H.264/MPEG-4 AVC编码的改进,可提升更大的编码弹性,并具有时间可伸缩(Temporal Scalability)、空间可伸缩(Spatial Scalability)及信噪比可伸缩(SNR Scalability)三大特性,使视频传输更能适应在异质的网络带宽。SVC的目标在于标准化已使编码的高品质的视频码流,其中包含一个或多个子位流(subset bitstream)进行解码,可以自己用一个复杂和重建质量达到类似的利用现有的H.264/MPEG- 4 AVC的设计与相同数量的数据码流中的一个子集。
一个子集码流(subset bitstream)可以代表一个较低的空间或时间分辨率较低或质量的视频信号(每个单独或组合)相比。
Scalable Video Coding包含了若干可伸缩的配置: Scalable Baseline, Scalable High, Scalable High Intra, Scalable Constrained Baseline and Scalable Constrained High Profile. 这些配置组合了基准层的H.264/MPEG-4 AVC的配置以及用于可伸缩的扩展工具:
H.265是ITU-T VCEG继H.264之后所制定的高压缩率的视频压缩格式。H.265视频格式标准在2013年1月25日由国际电信联盟(ITU)正式宣布,最高分辨率可达 8192×4320。 NGVC想要将比特率减少了50%,同时主要图像质量和计算复杂性与H.264相比,计算复杂度从提升到3倍。HEVC面向下一代HDTV设计,特性如帧扫描(progressive scanned)、支持采样率到 4320p (8192×4320),增强的动态范围调整和噪声抑制等。
图2. H.265编码流程图
HEVC将之前标准中定义的宏块(macroblocks)用一种最大到64x64像素的并且可以进一步细分成可变大小的块。HEVC把编码树单元(coding tree units (CTUs))变成亮度和色度的编码块(coding tree blocks (CTBs))。一个CTB可以大小为64x64、32x32或者16x16.这样帧内(intra-picture)和帧间(inter-picture)的预测块(prediction units,PU)大小从64x64到4x4大小,只是对于双向预测,只能到8x4到4x8大小。预测残差编码的变换块大小可以是32x32、16x16、8x8、4x4.
内部色深增加(Internal bit depth increase (IBDI))可以让编码器运行在色宽更高的内部状态。IBDI最多可以作用于14-bit位宽。
可以把图像分成独立编解码的矩形块和条带,即条带slice和tile瓷片的概念。条带大部分可以单独解码,只是最终需要同步成一个视频流。条带可以编码成条带间没有预测,互相独立。当然条带间可能还是需要环路滤波的。
HEVC采用基于上下文自适应的熵编码算法(context-adaptive binary arithmetic coding (CABAC)),和H.264类似。只不过HEVC只支持CABAC编码。
HEVC的帧内预测有33个方向模式,而h.264中只有8个,HEVC还指定了planar和DC帧内预测模式。
HEVC采用半像素或者1/4像素的精度运动补偿,以及7抽头或者8抽头的滤波器。H.264使用半像素精度和6抽头的滤波器。对于4:2:0视频的色度分量有1/8像素精度和4抽头的滤波器。HEVC中的加权预测可以是单向也可以是双向的预测。
HEVC定义了16-bit的水平和垂直运动矢量,支持范围到[-32768, 32767],即最多-8192到8191.75个亮度像素点,H.264只支持到-512到511.75个像素点。HEVC的MV模式有高级运动矢量预测(Advanced Motion Vector Prediction (AMVP))和合并模式。合并模式运行从邻近块继承mv向量值,从而有skip和direct模式。
HEVC中预测残差编码的变换块大小可以是32x32、16x16、8x8、4x4.一个CTB可以递归的分成4个或者更多个TU。TU会使用基本的变换DCT(discrete cosine transform),另外4x4的帧内预测亮度块的残差采用从DST( discrete sine transform)中推导的整数变换。这相对于原来的4x4亮度变换有1%的码率降低。色度块采用和亮度块相同的TU大小。
HEVC有两个环路滤波器,解块滤波器(DBF, deblocking filter)与样本自适应偏移量(SAO,sample adaptive offset)滤波器 (DBF)。Deblocking滤波器和H.264/MPEG-4 AVC中的类似,HEVC中的DBF只能用于8x8的块(提高并行处理性能),而H.264适用于4x4的块。HEVC中DBF的强度从0到2.对垂直边界做水平滤波,对水平边界做垂直滤波。SAO滤波器在DBF滤波器之后,为了更好的重建原始图像。每个CTB的SAO滤波器可以使能或者禁止边界偏移模式或者子段偏移模式。
DBF使用H.264/MPEG-4 AVC类似的设计,更好的支持并发处理是类似的。在HEVC的DBF只适??用于一个8×8个采样网格,而与H.264 / MPEG-4 AVC的DBF适用的一个4×4个采样网格。的DBF使用一个8×8个采样网格,因为它会导致没有明显的降解,并显著提高了并发处理,因为的DBF不再导致级联与其他操作的相互作用。另一个变化是HEVC只允许为0?2的三个DBF长处。HEVC也需要的DBF首先应用到画面的垂直边缘的水平滤波和只有在那之后它应用对于水平边缘的垂直滤波的图片,这允许为多个并发线程的DBF。
在DBF之后的使用SAO过滤器,并使用偏移以产生更好地重建原始信号。每C个TB的SAO滤波器可有两个模式:边缘偏移模式??或带偏移模式。边缘偏移量模式中通过比较的取样的值,根据比较两个邻居,将样品分为五类之一:最小,两种边缘,最大值,或两者都不是,对于每个第一四类施加一个偏移量。能带偏移的模式可分类成32个频带,并选择四个连续频带传送偏移量。SAO滤波器设计来以提高图像质量,并减少振荡效应.
图1各种视频标准相同PSNR下的对比 |
||||
视频编码标准 |
平均码率下降 |
|||
H.264/MPEG-4 AVC HP |
MPEG-4 ASP |
H.263 HLP |
H.262/MPEG-2 MP |
|
HEVC MP |
35.4% |
63.7% |
65.1% |
70.8% |
H.264/MPEG-4 AVC HP |
- |
44.5% |
46.6% |
55.4% |
MPEG-4 ASP |
- |
- |
3.9% |
19.7% |
H.263 HLP |
- |
- |
- |
16.2% |
视频编码效率通常用peak signal-to-noise ratio (PSNR)客观评价指标来度量。HEVC受益于更大的Coding Tree Block (CTB)大小。HM-8.0 HEVC视频分辨率为2560×1600,和使用64×64 CTB大小相比,如果采用 32×32 CTB大小,码率增加5.7%,如果使用16×16 CTB大小,码率增加28.2%。而且分辨率越大,CTB大小越大的码率减少越多同时解码时间也减少。上表是HEVC Main Profile (MP)和H.264/MPEG-4 AVC High Profile (HP), MPEG-4 Advanced Simple Profile (ASP), H.263 High Latency Profile (HLP),以及 H.262/MPEG-2 Main Profile (MP)的编码效率比较。测试序列包括了5个HD分辨率和4个WVGA (800×480)分辨率。主观测试的结果表明相同的主观质量下,HEVC MP比H.264/MPEG-4 AVC HP码率平均下降49.3%.
VP8 是一个开放的图像压缩格式,最早由 On2 Technologiesis 开发,随后由 Google 发布。同时 Google 也发布了 VP8编码的实做库:libvpx,以BSD授权条款的方式发布,随后也附加了专利使用权。而在经过一些争论之后,最终 VP8 的授权确认为一个开放源代码授权。VP8编码的开发从2008年9月13日开始,目的是要取代旧有的 VP7 编码格式。Google 在2010年收购了 On2 之后,各界便呼吁 Google发布 VP8的源代码,在2010年3月12日,自由软件基金会发表了一个公开信,希望 Google 能够逐渐的以 HTML5 和开放的 VP8,取代 Youtube 目前使用的 Adobe Flash Player 和 H.264。
2010年5月19日,Google在 Google I/O年会上,以BSD授权条款的发布了 VP8 编码软件,VP8的比特流格式则是以不可撤回的免费专利使用权发布。VP8也成为第二个 On2 Technologies以开放源代码方式发布的编码产品,前一个是捐赠给Xiph.Org基金会 的VP3,随后成为了图像编码格式 Theora。
目前 VP8只能通过 libvpx来进行编码,而 Google聘用了 FFmpeg 的开发者 Ronald Bultje 来开发基于 x264 架构的 VP8 编码器,称为 xvp8,将来发布后会集成在 x264中。而芬兰的 WebM硬件开发团队则是发布了暂存器转换层次结构(Register transfer level)的 VP8硬件编码器,提供给半导体制造商免费使用。
libvpx可以解码 VP8的图像,在2010年7月23日,FFmpeg 的开发者Jason Garrett-Glaser、Ronald Bultje和 David Conrad发布了名为 ffvp8的 VP8解码器,测试结果显示 ffvp8比 Google自己的 libvpx解码器性能更佳。另外 WebM专案的硬件团队也有发布暂存器转换层次结构(Register transfer level)的硬件解码器,同样是免费使用。
WebM专案和 VP8同时在2010年5月19日发表,Mozilla、Opera、Google和其他40多家厂商共同协助发展,目的是让 VP8 成为 HTML5的图像格式。WebM为一个容器格式,图像部份使用 VP8,声音格式则是使用 Vorbis。Internet Explorer 9 可以通过安装解码器支持 WebM图像,行动操作系统 Android 则是在2.3版(Gingerbread)之后支持 WebM Adobe 也宣布会在将来的 Flash Player 中支持 VP8图像的播放。
在2010年9月30日,Google发布了 WebP,是以 VP8编码为基础的图片文件格式,目的是取代现有的 JPEG ,作为网络图片的传输使用,使用的容器格式为Resource Interchange File Format (RIFF)。
H.264是目前使用最多的网络图像编码格式,因此最常拿来和 VP8做比较。
H.264 的编码技术包含专利(由 MPEG-LA 提供授权),而且在硬件上使用需要取得授权,VP8则不需要。即使有Google的背书,但VP8仍然很难避过所有的专利,其下场可能跟VC-1如出一辙。管理H.264专利池的MPEG LA声称有12家公司持有Google VP8的专利。美国MPEG LA表示:"创建VP8专利池的相关准备正在进行"。
根据 MSU Graphics & Media Lab在2011年5月的测试,VP8需要约213%的数据量,才能达到和 H.264相同的图像品质。
x264 的开发者之一:Jason Garrett-Glaser,给了一些针对 VP8的评论,他认为 VP8目前并没有实现真正的比特流规范,而且在一些编码的技术上有所欠缺。
VP8的subblock预测和H.264的4×4模式一致,但VP8不支持 H.264 High profile的8×8模式,会影响对细节的保持。VP8缺少 B frame是另一个大问题。H.264已有大量的硬件支持,但VP8仍需要依靠软件解码。VP8的标准文档过于简陋可能是最让人诟病的问题,大部分是直接贴C language code,而不是文字表述,许多细节没有交待清楚。
VP9 是Google提供的开源的免费视频codec,是VP8的后续版本,初始开发时命名为下一代开源视频或者VP-NEXT. VP9的开发始于2011年Q3,试图降低VP8的50%的码率而保持相同的质量,另外希望VP9比H.265( High Efficiency Video Coding)有更好的编码效率。 2012年底,VP9的解码器被加入Chrome浏览器,2013年2月发布正式版本的chrome浏览器。VP9支持超宏块大小到32x32,也采用了四叉树的宏块分解结构。
http://houh-1984.blog.163.com
http://www.embedded.com/electronics-blogs/cole-bin/4407676/Who-ll-win-the-consumer-video-codec-battles-?cid=Newsletter+-+Embedded.com+Tech+Focus
http://en.wikipedia.org/wiki/High_Efficiency_Video_Coding
http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC
http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC_products_and_implementations
http://en.wikipedia.org/wiki/Scalable_Video_Coding
http://en.wikipedia.org/wiki/VP8
http://en.wikipedia.org/wiki/VP9
本文介绍了目前消费电子市场常用的视频编解码器H.264 AVC, H.265 HEVC以及Google开源的VP8和VP9编解码器,分析了他们的技术特点、编码效率和应用领域。