分类: WINDOWS
2006-03-13 17:41:11
1. 介绍
数字电视及DVD视频的到来使得广播电视业与家庭娱乐业发生了一场革命. 视频压缩技术的标准化更使得这些及更多的应用成为可能. 用于视频压缩的ITU-T H.263 标准现正在视频会议系统中广泛使用,与此同时,MPEG系列标准中的下一个标准, MPEG4, 正在促成新一代的基于Internet的视频应用的兴起。
MPEG4 (可视化) 及 H.263 的标准为基于视频压缩(“视频编码”)的技术.1995年,负责制订这些标准的群体--运动图像专家组(the Motion Picture Experts Group, MPEG) 及视频编码专家组(the Video Coding Experts Group, VCEG) 正处于一种新标准发展的最后阶段, 这种新标准性能有了相当大的提高。MPEG4 与 H.263 提供更好的视频图像压缩与支持高质量,低比特率流媒体视频的大量特性. 该新标准,“Advanced Video Coding” (AVC),的历史持续了至少七年.
1995年用于视频电话的H.263 标准最终完成后, ITU-T 的视频编码专家组(Video Coding Experts Group , VCEG) 在两个领域开始了进一步的发展工作, 其中一个为 “短期的” 工作, 向 H.263 添加额外的特性(产生了该标准的第二版), 另一个为“长期的” 工作,为低比特率可视化通信发展一套新标准. 该项长期工作产生了“H.26L”标准草案, 该草案提供比以前的 ITU-T 标准好得多的视频压缩效率. 2001年, 国际标准化组织运动图像专家组(the ISO Motion Picture Experts Group, MPEG) 认识到了H.26L潜在的益处.而且于当年形成了联合视频组(the Joint Video Team, JVT) , 该组织包括了来自MPEG 和 VCEG 的专家. JVT的主要任务就是将 H.26L “模型”的草案发展成为一套完整的国际标准.实际上, 其结果将成为两个相同的标准: ISO MPEG4 Part 10 MPEG4 以及 ITU-T H.264. 新标准的“官方”名称为 Advanced Video Coding (AVC);然而, 该标准因其工作用名称H.26L 和 其 ITU 文档编号, H.264 [1] 而广为人知.
2. H.264 CODEC
与早期标准(诸如MPEG1, MPEG2 and MPEG4)相同的是, the H.264 标准草案并没有显式地定义一个CODEC (enCOder / DECoder pair). 而是定义了编码视频比特流的语义 以及对该比特流的解码方法. 然而在实践中, 符合标准的编码器与解码器可能会包含图Figure 2-1 and Figure 2-2中所显示的功能元素. 在图中所显示的功能模块可能是服从标准所需要的, 而对CODEC结构的多种不同形式又应该有回旋的余地. 以前的标准 (MPEG1, MPEG2, MPEG4, H.261, H.263)中的基本的功能模块 (预测, 变换, 量化, 最终编码) 都大致相同,H.264中的重要变化体现在每个功能模块的细节.
编码器 (图Figure 2-1) 含两个数据流路径, 一个“前行” 路经 (从左向右, 蓝色)以及一个“重建” 路径 (从右向左, magenta). 由右向左所示的解码器的数据流路径(图Figure 2-2) 显示出编码器与解码器之间的相似之处.
(图)
2.1 编码器 (前行路径 forward path)
Fn 表示要编码的输入帧. 该帧是以macroblock (对应于原始图像的 16x16 像素)为单位处理的. 每个macroblock 以 intra 模式或 inter 模式编码. 无论哪种模式, 预测 macroblock P 都是基于一个重建帧而形成的. 在 Intra 模式下, P 是由当前帧n中的样本形成的,该当前帧是前面所编码,解码,重建的 (图中的uF’n ; 注意P是由未经滤波的样本形成的). 在 Inter 模式下,P 是由对一个或多个参考帧的动态补偿预测形成的. 图中,参考帧显示为前一已编码帧 F’n-1 ;然而,对每一macroblock的预测可能是由已经编码并重建的一帧或多帧过去的或是以后的帧(以时间顺序) 形成的.
Macroblock Dn是由当前macroblock减去预测 P 而形成的余块或差块. 进行此变换(使用块变换)和量化 是为了给X一组已量化的变换系数. 这些系数都是重新排序并经entropy编码的. 已entropy 编码的系数, 以及解码该 macroblock 所需的其它信息(诸如macroblock 预测模式, quantizer 步长大小, 描述macroblock动态补偿方式的运动向量信息等)一同形成了压缩的比特流. 该比特流将被送入网络抽象层(Network Abstraction Layer, NAL) 传输或存储.
2.2 编码器 (重建路径)
解码已量化的macroblock 系数 X 是为了解码后续的macroblock以重建该帧. 系数 X 都经过了 re-scaled (Q-1) 和逆变换 (T-1) 来生成一个macroblock差块Dn’. 该差块并不同于原始的差块Dn ; 量化过程造成了信息的丢失,因此 Dn’是个残缺版的Dn.为创建一个重建的 macroblock uF’n (原 macroblock的残缺版),要将预测 macroblock P 加到 Dn’上. 为减小残缺导致的不良效果, 这里用到了滤波器. 之后从一系列的macroblocks F’n重建出参考帧.
2.3 解码器
解码器从NAL接收一串压缩比特流. 为生成一组量化的系数 X, 数据元素都是经entropy编码和重新排序的. 再经rescaled 和逆变换来给出Dn’ (这与编码器中所示的Dn’相同). 使用从比特流中解码出的头信息, 解码器创建一个预测 macroblock P, 这个预测P与编码器中形成的预测 P 相同. 再将P 加到 Dn’上生成 uF’n ,uF’n 再经滤波器生成解码的 F’n.
从图和前面的讨论可以清楚地得出编码器中的重建路径保证了编码器与解码器使用相同的参考帧来创建预测 P. 否则, 编码器中的预测 P与解码器中的预测 P 会有所不同,导致增量出错或编解码器间的“漂移”.