From:http://focus.ti.com.cn/cn/general/docs/gencontent.tsp?contentId=34908
作者:Jeremiah Golston,TI 首席技术官 [email protected]
Ajit Rao 博士,TI 技术应用工程师 [email protected]
2006 年 4 月加州旧金山嵌入式系统会资料
1. 前言
数字视频产品需求近些年出现猛增。主流应用包括视频通信、安全监控与工业自动化,而最热门的要算娱乐应用,如 DVD、HDTV、卫星电视、高清 (HD) 机顶盒、因特网视频流、数码相机与 HD 摄像机、视频光盘库 (video jukebox)、高端显示器(LCD、等离子显示器、DLP)以及个人摄像机等。众多精彩的新应用目前也处于设计或前期部署中,例如针对家庭与手持设备及地面/卫星标准(DVB-T、DVB-H、DMB)的高清 DVD(蓝光/HD-DVD)和数字视频广播、高清视频电话、数码相机以及 IP 机顶盒。由于手持终端计算能力的提高以及电池技术与高速无线连接的发展,最终产品的移动性与集成性也在不断提高。
视频压缩是所有令人振奋的、新型视频产品的重要动力。压缩-解压(编解码)算法可以实现数字视频的存储与传输。典型的编解码器要么采用行业标准,如 MPEG2、MPEG4、H.264/AVC 与 AVS,要么采用专有算法,如 On2、Real Video、Nancy与Windows Media Video (WMV) 等。WMV 是个例外——它最初是微软公司的专有算法,而现在则以 VC-1 的新名称在业界实现了标准化。编解码技术在过去十年中不断改进。最新的编解码技术(H.264/AVC 与 VC-1)代表着第三代视频压缩技术。这两种编解码技术利用如可编程 DSP 与ASIC 等低成本 IC 的处理能力,都能够达到极高的压缩比。不过,为具体应用选择正确的编解码器并优化其实时处理仍然是一项巨大的挑战。最佳的设计必须权衡压缩效率及可用的计算能力。此外,如何在计算能力有限的情况下获得最佳压缩效率也是一门大学问。
在本文中,我们首先概述视频编码的主要概念,同时介绍传统压缩标准。然后我们重点介绍其中包括 H.264/AVC、WMV9/VC-1与AVS 等在内的最新编解码技术的功能,此外,还将深入探讨压缩能力与复杂性之间的权衡。最后,讨论市场中可能会影响主流视频编解码器未来的实时处理与主要趋势。
2. 视频压缩挑战
数字视频的主要挑战在于原始或未压缩的视频需要存储或传输大量数据。例如,标准清晰度的 NTSC 视频的数字化一般是每秒 30 帧速率,采用 4:2:2 YcrCb 及 720´480,其要求超过 165Mbps 的数据速率。保存 90 分钟的视频需要 110GB 空间,或者说超过标准 DVD-R 存储容量的 25 倍。即使是视频流应用中常用的低分辨率视频(如:CIF:352x288 4:2:0、30 帧/秒)也需要超过 36.5Mbps 的数据速率,这是 ADSL 或 3G 无线等宽带网络速度的许多倍。目前的宽带网可提供 1~10Mbps 的持续传输能力。显然数字视频的存储或传输需要采用压缩技术。
视频压缩的目的是对数字视频进行编码——在保持视频质量的同时占用尽可能少的空间。编解码技术理论依据为信息理论的数学原理。不过,开发实用的编解码技术需要艺术性的精心考虑。
3. 压缩权衡
在选择数字视频系统的编解码技术时需要考虑诸多因素。主要因素包括应用的视频质量要求、传输通道或存储介质所处的环境(速度、时延、错误特征)以及源内容的格式。同样重要的还有预期分辨率、目标比特率、色彩深度、每秒帧数以及内容和显示是逐行扫描还是隔行扫描。压缩通常需要在应用的视频质量要求与其他需求之间做出取舍。首先,用途是存储还是单播、多播、双向通信或广播?对于存储应用,到底有多少可用的存储容量以及存储时间需要多久?对于存储之外的应用,最高比特率是多少?对于双向视频通信,时延容差或容许的端到端系统延迟是多少?如果不是双向通信,内容需要在脱机状态提前完成编码还是需要实时编码?网络或存储介质的容错能力如何?根据基本目标应用,不同压缩标准以不同方式处理这些问题的权衡。
如 H.264/AVC 或 WMV9/VC-1等能够实现较高压缩比的新算法需要更高的处理能力,这会影响编解码器件的成本、系统功耗以及系统内存。
4. 标准化机构
在视频编解码技术定义方面有两大标准机构。国际电信联盟 (ITU) 致力于电信应用,已经开发了用于低比特率视频电话的 H.26x 标准,其中包括 H.261、H.262、H.263 与 H.264;国际标准化组织 (ISO) 主要针对消费类应用,已经针对运动图像压缩定义了 MPEG 标准。MPEG 标准包括 MPEG1、MPEG2 与 MPEG4。图 1 说明了视频编解码标准的发展历程。
MPEG 与 ISO 根据基本目标应用往往做出稍有不同的取舍。有时它们也会开展合作,如:联合视频小组 (JVT),该小组定义了 H.264 编解码技术,这种技术在 MPEG 系列中又被称为 MPEG4-Part 10 或 MPEG4 高级视频编解码 (AVC)。我们在本文中将这种联合标准称为 H.264/AVC。同样,H.262 对应 MPEG2,而 H.263 基本规范类 (Baseline Profile) 技术在原理方面与 MPEG4 简单类 (Simple Profile) 编解码技术存在较多重复。
标准对编解码技术的普及至关重要。出于规模经济原因,用户根据可承受的标准寻找相应产品。由于能够保障厂商之间的互操作性,业界乐意在标准方面进行投资。而由于自己的内容可以获得较长的生命周期及广泛的需求,内容提供商也对标准青睐有加。尽管几乎所有视频标准都是针对少数特定应用的,但是在能够适用的情况下,它们在其他应用中也能发挥优势。
为了实现更好的压缩及获得新的市场机遇,ITU 与 MPEG 一直在不断发展压缩技术和开发新标准。中国最近开发了一种称为 AVS 的国家视频编码标准,我们在后面也会做一介绍。目前正在开发的标准包括 ITU/MPEG 联合可扩展视频编码 (Joint Scalable Video Coding)(对 H264/ AVC 的修订)和MPEG 多视角视频编码 (Multi-view Video Coding)。另外,为了满足新的应用需求,现有标准也在不断发展。例如,H.264 最近定义了一种称为高精度拓展 (Fidelity Range Extensions) 的新模式,以满足新的市场需求,如专业数字编辑、HD-DVD 与无损编码等。
除了 ITU 与 ISO 开发的行业标准以外,还出现了几种专用于因特网流媒体应用、广受欢迎的专有解决方案,其中包括 Real Networks Real Video (RV10)、Microsoft Windows Media Video 9 (WMV9) 系列、ON2 VP6 以及 Nancy。由于这些格式在内容中得到了广泛应用,因此专有编解码技术可以成为业界标准。2003 年 9 月,微软公司向电影与电视工程师学会 (SMPTE) 提议在该机构的支持下实现 WMV9 位流与语法的标准化。该提议得到了采纳,现在 WMV9 已经被 SMPTE 作为 VC-1 实现标准化。
5. 视频编码原理
我们感兴趣的所有视频标准都采用基于模块的处理方式。每个宏模块一般包含 4 个 8´8 的光度块和 2 个 8´8 的色度块(4:2:0 色度格式)。视频编码基于运动补偿预测(MC) 原理,变换与量化及熵编码。图 2 说明的是一种典型的、基于运动补偿的视频编解码技术。在运动补偿中,通过预测与最新编码的(“参考”)视频帧处于同一区域的视频帧中各宏模块的像素来实现压缩。例如,背景区域通常在各帧之间保持不变,因此不需要在每个帧中重新传输。运动估计 (ME) 是确定当前帧——即与它最相似的参考帧的 16´16 区域中每个 MB 的过程。ME 通常是视频压缩中最消耗性能的功能。有关当前帧中各模块最相似区域相对位置的信息(“运动矢量”)被发送至解码器。
MC 之后的残差部分分为 8´8 的模块,各模块综合利用变换编码、量化编码与可变长度编码技术进行编码。变换编码(如:离散余弦变换或 DCT)利用残差信号中的空间冗余。量化编码可以消除感知冗余 (perceptual redundancy) 并且降低编码残差信号所需要的数据量。可变长度编码利用残差系数的统计性质。通过 MC 进行的冗余消除过程在解码器中以相反过程进行,来自参考帧的预测数据与编码后的残差数据结合在一起产生对原始视频帧的再现 。
图2:标准运动补偿视频编码
在视频编解码器中,单个帧可以采用三个模式中的一个进行编码 —— 即 I、P 或 B 帧模式(见图 3)。几个称为 Intra (I) 的帧单独编码,无需参考任何其他帧(无运动补偿)。某些帧可以利用 MC 编码,以前一个帧为参考(前向预测)。这些帧称为预测帧 (P)。
B 帧或双向预测帧通过之前的帧以及当前帧的后续帧进行预测。B 帧的优势是能够匹配堵塞在采用前向预测的上一帧中的背景区域。双向预测通过平衡前向及后向预测可以降低噪声。在编码器中采用这种功能会要求更多处理量,因为必须同时针对前向及后向预测执行 ME,而这会明显使运动估计计算需求加倍。为了保存两个参考帧,编码器与解码器都需要更多内存。B 帧工具需要更复杂的数据流,因为相对采集及显示顺序而言,帧不按顺序解码。这个特点会增加时延,因此不适合实时性较高的应用。B 帧不用于预测,因此可以针对某些应用进行取舍。例如,在低帧速应用中可以跳过它们而不会影响随后 I 与 P 帧的解码。
6. 传统视频编码标准
H.261
ITU 编制的 H.261[2] 标准是第一个主流视频压缩标准。它主要针对双工视频会议应用,是为支持 40kpbs~2Mbps 的 ISDN 网络而设计的。H.261 支持 352´288 (CIF) 及 176´144 (QCIF) 分辨率,色度分辨率二次采样为 4:2:0。由于可视电话需要同步实时编解码,因此复杂性设计得较低。由于主要用于对延迟敏感的双向视频,因此 H.261 仅允许采用 I 与 P 帧,而不允许 B 帧。
H.261 采用基于块的 DCT 进行残差信号的变换编码。DCT 把像素的每个 8´8 块映射到频域,产生 64 个频率成分(第一个系数称为 DC,其他的称为 AC)。为了量化 DCT 系数,H.261 在所有 AC 系数中采用固定的线性量化。量化后的系数进行行程编码,其可以按非零系数描述量化的频率,后面跟随一串零系数,在最后一个非零值之后以块代码结束。最后,可变长度编码 (Huffman) 将运行级别对 (run-level pair) 转换成可变长度编码 (VLC),其比特长度已针对典型概率分布进行过优化。
基于标准块的编码最终产生模块化视频。H.261 标准利用环路滤波避免这种现象。在模块边缘采用的简单 2D FIR 滤波器用于平滑参考帧中的量化效应。必须同时在编码器及解码器中精确地对每个比特应用上述滤波。
MPEG-1
MPEG-1[3] 是 ISO 开发的第一个视频压缩算法。主要应用是数字媒体上动态图像与音频的存储与检索,如速率为 1.15Mbps、采用 SIF 分辨率(352´240 – 29.97fps 或者 352´288 – 25 fps)的VCD。MPEG-1 与 H.261 相似,不过编码器一般需要更高的性能,以便支持电影内容的较高运动性而不是典型的可视电话功能。
与 H.261 相比,MPEG1 允许采用 B 帧。另外它还采用自适应感知量化,也就是说,对每个频段采用单独的量化比例因子(或等步长),以便优化人们的视觉感受。MPEG-1 仅支持逐行视频,因此新标准——MPEG2 已经开始做出努力,同时支持分辨率及比特率更高的逐行与隔行视频。
MPEG-2/H.262
MPEG-2[4] 专门针对数字电视而开发,很快成为了迄今最成功的视频压缩标准。MPEG-2 既能够满足标准逐行视频的需求(其中视频序列由一系列按一定时间间隔采集的帧构成),又能够满足电视领域常用的隔行视频的需求。隔行视频交替采集及显示图像中两组交替的像素(每组称为一个场)。这种方式尤其适合电视显示器的物理特性。MPEG2 支持标准的电视分辨率,其中包括:针对美国和日本采用的 NTSC 制式隔行 720´480 分辨率,每秒 60 场,以及欧洲和其他国家采用的PAL 制式的 720´576 分辨率,每秒 50 场。
MPEG-2 建立在 MPEG-1 基础之上,并具备扩展功能,能支持隔行视频及更宽的运动补偿范围。由于高分辨率视频是非常重要的应用,因此 MPEG-2 支持的搜索范围远远大于 MPEG-1。与之前的标准相比,它显著提高了运动估计的性能要求,并充分利用更宽搜索范围与更高分辨率优势的编码器需要比 H.261 和 MPEG-1 高得多的处理能力。MPEG2 中的隔行编码工具包含优化运动补偿的能力,同时支持基于场和基于帧的预测,而且同时支持基于场和基于帧的 DCT/IDCT。MPEG-2 在 30:1 左右的压缩比时运行良好。MPEG-2 在 4-8Mbps 时达到的质量适合消费类视频应用,因此它很快在许多应用中得到普及,如:数字卫星电视、数字有线电视、DVD 以及后来的高清电视等。
另外,MPEG-2 增加了分级视频编码工具,以支持多层视频编码,即:时域分级、空域分级、SNR 分级以及数据分割。尽管 MPEG-2 中针对分级视频应用定义了相关类别 (profile),不过支持单层编码的主类 (Main Profile) 是当今大众市场中得到广泛应用的唯一 MPEG-2 类。MPEG-2 通常称为 MPEG-2 主类。
MPEG-2 解码最初对于通用处理器及 DSP 具有很高的处理要求。优化的固定功能 MPEG-2 解码器开发已问世,由于使用量较高,成本已逐渐降低。MPEG2 证明低成本芯片解决方案的供应是视频编解码标准成功和普及的关键。
H.263
H.263[5] 在 H.261 之后得到开发,主要是为了以更低的比特率实现更高的质量。其主要目标之一是基于普通 28.8Kbps 电话调制解调器的视频。目标分辨率是 SQCIF (128´96)~CIF (352´288)。其基本原理与 H.261 大同小异。
H.263 的运动矢量在两个方向上允许是 ½ 的倍数(“半像素”),参考图像以数字方式内插到更高的分辨率。这种方法可以提高 MC 精度及压缩比。MV 可采用更大的范围。为不同方案提供许多新的选项,包括:
尽管存在这些功能,但是仍然很难在普通电话线上实现理想的视频质量,而且目前基于标准调制解调器的可视电话仍然是一个难题。不过,由于 H.263 一般情况下可提供优于 H.261 的效率,它成为了电视会议首选的算法,但是,为了兼容旧系统,仍然需要支持 H.261。H.263 逐渐发展成为了 H.263+,其增加了可选的附件,为提高压缩并实现分组网的鲁棒性提供支持。H.263 及其附件构成了 MPEG-4 中许多编码工具的核心。
MPEG-4
MPEG-4[6] 由 ISO 提出,以延续 MPEG-2 的成功。一些早期的目标包括:提高容错能力以支持无线网、对低比特率应用进行更好的支持、实现各种新工具以支持图形对象及视频之间的融合。大部分图形功能并未在产品中受到重视,相关实施主要集中在改善低比特率压缩及提高容错性上。.
MPEG-4 简化类 (SP) 以H.263为基础,为改善压缩增加了新的工具,包括:
增加了容错功能,以支持丢包情况下的恢复,包括:
MPEG-4 高级简化类 (ASP) 以简化类为基础,增加了与 MPEG-2 类似的 B 帧及隔行工具(用于Level 4 及以上级别)。另外它还增加了四分之一像素运动补偿及用于全局运动补偿的选项。MPEG-4 高级简化类比简化类的处理性能要求更高,而且复杂性与编码效率都高于 MPEG-2。
MPEG-4 最初用于因特网数据流,例如,已经被 Apple 的 QuickTime 播放器采用。MPEG-4 简化类目前在移动数据流中得到广泛应用。MPEG-4 ASP 是已经流行的专有 DivX 编解码器的基石。
工具与压缩增益
当我们查看 H.261、MPEG1、MPEG2 与 H.263 视频编解码技术中引入的功能时,明显可以发现几种基本技巧提供了大部分压缩增益。图 4 说明这些技巧及其相关效果。与 4 个运动矢量以及四分之一像素运动补偿等工具相比,运动补偿(整数像素与半像素)的效果显然更为突出。
图4:基本技巧的效果:1) 无MC;2) 增加 Skip 模式构成 CR 编码器;3) 仅允许零 MV;4) 允许整数像素MC;5) 允许半像素 MC;6) 允许4-MV;7) 允许四分之一像素MC。如欲了解有关详细说明,敬请参见[7]。
7. H.264/ MPEG4-AVC
视频编码技术在过去几年最重要的发展之一是由 ITU 和 ISO/IEC 的联合视频小组 (JVT) 开发了 H.264/MPEG-4 AVC[8] 标准。在发展过程中,业界为这种新标准取了许多不同的名称。ITU 在 1997 年开始利用重要的新编码工具处理 H.26L(长期),结果令人鼓舞,于是 ISO 决定联手 ITU 组建 JVT 并采用一个通用的标准。因此,大家有时会听到有人将这项标准称为 JVT,尽管它并非正式名称。ITU 在 2003 年 5 月批准了新的 H.264 标准。ISO 在 2003 年 10 月以 MPEG-4 Part 10、高级视频编码或 AVC 的名称批准了该标准。
H.264/AVC 在压缩效率方面取得了巨大突破,一般情况下达到 MPEG-2 及 MPEG-4 简化类压缩效率的大约 2 倍。在 JVT 进行的正式测试中 [9],H.264 在 85 个测试案例中有 78% 的案例实现 1.5 倍以上的编码效率提高,77% 的案例中达到 2 倍以上,部分案例甚至高达 4 倍。H.264 实现的改进创造了新的市场机遇,如:
H.264 标准化时支持三个类别:基本类、主类及扩展类。后来一项称为高保真范围扩展 (FRExt) 的修订引入了称为高级类的 4 个附加类。在初期主要是基本类和主类引起了大家的兴趣。基本类降低了计算及系统内存需求,而且针对低时延进行了优化。由于 B 帧的内在时延以及 CABAC 的计算复杂性,因此它不包括这两者。基本类非常适合可视电话应用以及其他需要低成本实时编码的应用。
主类提供的压缩效率最高,但其要求的处理能力也比基本类高许多,因此使其难以用于低成本实时编码和低时延应用。广播与内容存储应用对主类最感兴趣,它们是为了尽可能以最低的比特率获得最高的视频质量。
尽管 H.264 采用与旧标准相同的主要编码功能,不过它还具有许多与旧标准不同的新功能,它们一起实现了编码效率的提高。图 5 的编码器框图总结了其主要差别,概述如下:
帧内预测与编码: H.264 采用空域帧内预测技术来预测相邻块邻近像素的 Intra-MB 中的像素。它对预测残差信号和预测模式进行编码,而不是编码块中的实际像素。这样可以显著提高帧内编码效率。
帧间预测与编码: H.264 中的帧间编码采用了旧标准的主要功能,同时也增加了灵活性及可操作性,包括适用于多种功能的几种块大小选项,如:运动补偿、四分之一像素运动补偿、多参考帧、通用 (generalized) 双向预测和自适应环路去块。
可变矢量块大小: 允许采用不同块大小执行运动补偿。可以为小至 4´4 的块传输单个运动矢量,因此在双向预测情况下可以为单个 MB 传输多达 32 个运动矢量。另外还支持 16´8、8´16、8´8、8´4 和 4´8 的块大小。降低块大小可以提高运动细节的处理能力,因而提高主观质量感受,包括消除较大的块化失真。
图5:H.264 框图与功能[10]
四分之一像素运动估计: 通过允许半像素和四分之一像素运动矢量分辨率可以改善运动补偿。
多参考帧预测 :16 个不同的参考帧可以用于帧间编码,从而可以改善视频质量的主观感受并提高编码效率。提供多个参考帧还有助于提高 H.264 位流的容错能力。值得注意的是,这种特性会增加编码器与解码器的内存需求,因为必须在内存中保存多个参考帧。
自适应环路去块滤波器 :H.264 采用一种自适应解块滤波器,它会在预测回路内对水平和垂直区块边缘进行处理,用于消除块预测误差造成的失真。这种滤波通常是基于 4´4 块边界为运算基础,其中边界各边的 3 个像素可通过 4 级滤波器进行更新。
整数变换: 采用 DCT 的早期标准必须为逆变换的固点实施来定义舍入误差的容差范围。编码器与解码器之间的 IDCT 精度失配造成的漂移是质量损失的根源。H.264 利用整数 4´4 空域变换解决了这一问题——这种变换是 DCT 的近似值。4´4 的小区块还有助于减少阻塞与振铃失真。
量化与变换系数扫描: 变换系数通过标量量化方式得到量化,不产生加大的死区。与之前的标准类似,每个 MB 都可选择不同的量化步长,不过步长以大约 12.5% 的复合速率增加,而不是固定递增。同时,更精细的量化步长还可以用于色度成分,尤其是在粗劣量化光度系数的情况下。
熵编码: 与根据所涉及的数据类型提供多个静态 VLC 表的先前标准不同,H.264 针对变换系数采用上下文自适应 VLC,同时针对所有其他符号采用统一的 VLC (Universal VLC) 方法。主类还支持新的上下文自适应二进制算术编码器 (CABAC)。CAVLC 优于以前的 VLC 实施,不过成本却比VLC高。
CABAC 利用编码器和译码器的机率模型来处理所有语法元素 (syntax elements),包括:变换系数和运动矢量。为了提高算术编码的编码效率,基本概率模型通过一种称为上下文建模的方法对视频帧内不断变换的统计进行适应。上下文建模分析提供编码符号的条件概率估计值。只要利用适当的上下文模型,就能根据待编码符号周围的已编码符号,在不同的概率模型间进行切换,进而充份利用符号间的冗余性。每个语法元素都可以保持不同的模型(例如,运动矢量和变换系数具有不同的模型)。相较于 VLC 熵编码方法 (UVLC/CAVLC),CABAC 能多节省 10 % bit速率。
加权预测: 它利用前向和后向预测的加权总和建立对双向内插宏模块的预测,这样可以提高场景变化时的编码效率,尤其是在衰落情况下。
保真度 范围扩展
2004 年 7 月,H.264 标准增加了称为保真度范围扩展 (FRExt) [11]的新修订。这次扩展在H.264 中添加了一整套工具,而且允许采用附加的色域、视频格式和位深度。另外还增加了对无损帧间编码与立体显示视频的支持。FRExt 修订版在 H.264 中引入了 4 种新类,即:
在新的应用领域中,H.264 HP 对广播与 DVD 尤为有利。某些试验显示出 H.264 HP 的性能比MPEG2 提高了 3 倍。下面介绍 H.264 HP 中引入的主要附加工具。
自适应残差块大小与整数 8´8 变换: 用于变换编码的残差块可以在 8´8 与 4´4 之间切换。引入了用于 8´8 块的新 16 位整数变换。较小的块仍然可以采用以前的 4´4 变换。
8´8 亮度帧内预测: 增加了 8 种模式,除之前的 16´16 和 4´4 块以外,使亮度内部宏模块还能够对 8´8 块进行帧内预测。
量化加权: 用于量化 8´8 变换系数的新量化加权矩阵。
单色: 支持黑/白视频编码。
8. Windows Media Video 9 / VC-1
Windows Media 是提供网上音乐与视频预订服务与视频流的主要格式。微软公司于 2002 年推出了 Windows Media Video 9 系列编解码器,实现了视频压缩效率的显著提高。WMV9 另外还作为 VC-1 在 SMPTE 中实现了标准化[12]。
与 H.264 类似,它包含许多高级编码工具,不过种类有所不同。除了支持半象素双线性插值之外,WMV9 的 ME 还允许 ¼ 象素双立方插值(采用 4 抽头近似双立方滤波器)。另外它还包含与 H.264 类似的环内去块滤波器,不过滤波器和决策细节不同。其他部分功能包括:
多个VLC 表: WMV9 主类包含多套针对不同类型内容进行优化的 VLC 表。这些表可以在帧级切换,以适应输入视频的特征。
DCT/IDCT 变换切换: WMV9 支持多种 DCT 块大小,包括:8´8、8´4、4´8 和 4´4。其采用专用的 16 位整数变换与逆变换。
量化: 采用一般基于步长的量化和死区量化。死区量化可以在低比特率时实现显著节省。
另一个有趣的功能是能够在涉及衰落的情况下采用明确的衰落补偿。它可以提高这些情况下运动补偿的质量。
WMV9/VC-1 在性能方面与 MPEG-2 和 MPEG-4 简化类相比有显著提高,相对于 H.264,其知觉质量感受也非常优秀[13]。不过,在提供相似压缩效率情况下,WMV9/VC-1 与 H.264 主类相比复杂性要求较低。WMV9 广泛应用于个人电脑环境,而且已经成为互联网消费设备中的重要技术。WMV9/VC-1 在好莱坞和独立制片业正日益受宠,多部电影的发行开始采用WMV9/VC-1 进行编码,以实现 PC DVD 上的高清晰播放。此外,WMV9 已经作为新兴的 HD-DVD 格式压缩选项实现了标准化。
9. AVS
2002 年,中国信息产业部成立的音视频技术标准 (AVS) 工作组宣布准备针对移动多媒体、广播、DVD等应用编写一份国家标准。该视频标准称为 AVS [14],由两个相关部分组成 — 针对移动视频应用的 AVS-M 和针对广播与 DVD 的 AVS1.0。AVS 标准与 H.264 相似。
AVS1.0 同时支持隔行和逐行扫描模式。AVS 中 P 帧可以利用 2 帧的前向参考帧,同时允许 B 帧采用前后各一个帧。在隔行模式下,4 个场可以用作参考。可以仅在帧级执行隔行模式中的帧/场编码,这一点与 H.264 不同,其中允许此选项的 MB 级自适应。AVS 具有与 H.264相似的环路滤波器,可以在帧级关闭。另外,B 帧还无需环路滤波器。帧内预测是以 8´8 块为单位进行。MC 允许对亮度块进行 1/4 象素补偿。ME 的块大小可以是 16´16、16´8、8´16 或 8´8。变换方式是基于 16 位的 8´8 整数变换(与 WMV9 相似)。VLC 是基于上下文自适应 2D 运行/级别编码。采用 4 个不同的 Exp-Golomb 编码。用于每个已量化系数的编码自适应到相同 8´8 块中前面的符号。由于 Exp-Golomb 表是参数化的表,因此表较小。用于逐行视频序列的 AVS 1.0 的视频质量在相同比特率时稍逊于 H.264 主类。
AVS-M 主要针对移动视频应用,与 H.264 基本规范存在交叉。它仅支持逐行视频、I 与 P 帧,不支持 B 帧。主要 AVS-M 编码工具包括基于 4´4 块的帧内预测、1/4象素运动补偿、整数变换与量化、上下文自适应 VLC 以及高度简化的环路滤波器。与 H.264 基本规范相似,AVS-M 中的运动矢量块大小降至 4´4,因此 MB 可拥有多达 16 个运动矢量。采用多帧预测,但仅支持 2 个参考帧。此外,AVS-M 中还定义了 H.264 HRD/SEI 消息的子集。AVS-M的编码频率约为 0.3dB,在相同设置下稍逊于 H.264 基本规范,而解码器的复杂性却降低了大约
20%。
10. 各编解码器的功能与工具对比
表1概述我们介绍的视频标准采用的主要压缩功能与工具。
功能
H.261
MPEG1
MPEG2
H.263
MPEG4
H.264
WMV9/ VC-1
AVS
图像编码类型
I、P
I、P、B
I、P、B
I、P、B
I、P、B
I、P、B
I、P、B
I、P、B
熵编码
VLC
VLC
VLC
VLC、SAC
VLC
UVLC、CAVLC、CABAC
多表 VLC
自适应 VLC
MV 分辨率
整数象素
半象素
半象素
半象素
¼ 象素
¼ 象素
¼ 象素
¼ 象素
变换
8´8 DCT
8´8 DCT
8´8 DCT
8´8 DCT
8´8 DCT
4´4 与 8´8 整数
8´8、8´4、 4´8、 4´4 整数 DCT
8x8 整数
矢量块大小
16´16
16´16
16´16、16´8
8´8或16´16
8´8、16´16
16´16、16´8、 8´16、 8´8、8´4、4´8、4´4
16´16、16´8、8´8, 4´4(色度)
16´16、16´8、8´16、8´8、8´4、4´8、4´4
空域帧内预测
无
无
无
无
无
有
无
有
支持的格式
逐行
逐行
逐行/隔行
逐行
逐行/隔行
逐行/隔行
逐行/隔行
逐行/隔行
预测模式
帧
帧
场/帧
帧
场/帧
场/帧
场/帧
场/帧
去块滤波器
环内
无
后期
附件 J 环内
后期
环内
环内
环内
表1:标准编解码器中的主要压缩功能
11. 市场趋势与应用
视频压缩正在市场中催生数量日益增长的数字视频产品。采用数字视频压缩技术的终端设备范围广泛,从电池驱动的便携设备到高性能基础设备。表 2 概述部分应用、主要需求、采用的典型视频编解码器及其在这些应用中的发展趋势。
应用
需求
采用的编解码器
发展趋势
安全/监控
多路编码
Motion JPEG、H.263
MPEG4-SP、H.264
可视电话、视频会议
低延迟、低比特率
H.261、H.263
H.264-BP
因特网数据流
低速率、多种格式的解码器、权限管理
WMV、Real Video、 MPEG-4 (QuickTime, DivX)
DVD
高质量、随机访问、低成本
MPEG2-MP
H.264、WMV9、AVS
数字地面电视
高质量
MPEG2
MPEG2、H.264、AVS
卫星电视
高质量
MPEG2
H.264-HP
手持终端数字视频
低功耗、低比特率、容错性
WMV9、H,264
个人视频记录器
高质量、低压缩、随机访问
MPEG2
WMV9、H.264
数码摄像机
低功率、高质量、低比特率
传统 DV 标准
MPEG2、MPEG4
移动数据流
低复杂性解码、容错性
MPEG4-SP
RV、H,.264-BP、WMV9、AVS-M
表2:标准应用采用的典型编解码器与发展趋势
12. 实时实现
数字视频的最佳处理器解决方案取决于具体的目标应用。TI 拥有可支持多种标准并满足主要设计及系统约束需求的各种 DSP。TI 的解决方案范围广泛,其中包括低功耗 c5000 DSP 与移动OMAP 应用处理器、高性能 c6000 DSP 与视频优化的高性能 DM64x 和 DM644x 数字媒体处理器。目前倍受关注的处理器之一是未面世的 DM6446,我们将在本节中进行介绍。
德州仪器 (TI) 的 DM 系列处理器专门针对高端视频系统的需求而设计。该系列的最新处理器是功能强大的 DM6446[15],其采用了 TI 的达芬奇 (DaVinci) 技术[16]。DM6446 的双内核架构兼具 DSP 和 RISC 技术优势,集成了时钟频率达 594MHz 的 c64x+ DSP 内核与 ARM926EJ-S内核。新一代 c64x+ DSP 是 TMS320C6000™ DSP 平台中性能最高的定点 DSP,并建立在 TI 开发的第二代高性能高级 VLIW 架构的增强版之上。c64x+ 与前代 C6000 DSP 平台代码兼容。DM644x 等可编程数字媒体处理器可以支持所有的现有业界标准以及采用单个可编程数字媒体处理器的专有视频格式。DM6446 还具有片上内存,包括一个 2 级高速缓存和众多具有视频专用功能的外设。DM6446 还包含一种视频/影像协处理器 (VICP),用于减轻相关算法(如:JPEG、H.264、MPEG4 与 VC-1)的 DSP 内核繁重的视频与影像处理负担,从而使更多的 DSP MIPS 能够用于视频后处理或者其他并行运行等功能。
表 3说明 DM6446 在各种标准下保持 D1 (720´480) 分辨率大约所需要的频率。
视频编解码标准
编码器
解码器
H.263 / MPEG4-SP
250MHz
100MHz
H.264 — 基本类
410MHz
300MHz
H.264 — 主类
590MHz
450MHz
WMV9/VC-1
360MHz
360MHz
表3:单片TI DM6446 平台处理 D 1 30fps(720´480)、YUV 4:2:0 性能所需要频率典型值。解码器性能数据是针对最差情况下的比特流。解码器性能随所采用功能组合的变化而变化。上述例子中假定为高品质的编码。DM6446 上的c64x+ 可达到594MHz 的时钟频率。
请注意:所显示的编码频率数据是根据现有/计划实施而得出的典型测试数据。另外,编码器负载随目标应用不同而存在显著差异。压缩标准规定需要的语法与可用的工具,不过许多算法结果取决于具体实施情况。主要变量包括:比特率控制算法、单通道与多通道编码、I/B/P 帧比率、运动搜索范围、运动搜索算法、以及选用的个别工具与模式。这种灵活性允许我们在计算负载和改进质量之间做出不同取舍。显然所有编码器都可以采用或高或低的频率实现不同的视频质量水平。
13. 结论
越来越多的视频压缩标准可以针对具体最终应用提供越来越高的压缩效率和越来越丰富的工具。另外,向网络化连接发展的趋势意味着许多产品越来越需要支持多种标准。多种标准和专有算法的流行也使我们难以选择单个标准,尤其是在硬件决策经常超前于产品部署的情况下。不仅如此,每个视频编码算法都提供丰富的工具与功能选择,以平衡压缩效率的复杂性。工具和功能的选择是与特定应用和用例息息相关的重复过程。由于必须支持的编解码器数量的增多以及针对具体解决方案和应用而对编解码器进行优化的选择范围更为广泛,因此在数字视频系统中采用灵活的媒体处理器是大势所趋。DM6446 等数字媒体处理器可充分满足性能处理需求同时架构灵活,从而能够快速把新标准实施推向市场,其中包括:H.264、AVS 与 WMV9。我们可以在标准定义阶段实施算法并且保持软件算法与工具的更新,从而紧随标准大大小小的修改并且满足应用不断变化的质量需求。
14. 参考文献