H.264的句法和语义
时间:2009-04-13 来源:zhengwenwei_123
|
在图7.3 的描述中,参数集与参数集外部的句法元素处于不同信道中,这是H.264 的一个建议, 我们可以使用更安全但成本更昂贵的通道来传输参数集,而使用成本低但不够可靠的信道传输其他 句法元素,只需要保证片层中的某个句法元素需要引用某个参数集时,那个参数集已经到达解码器, 也就是参数集在时间上必须先被传送。当然,在条件不允许的情况下,我们也可以采用妥协的办法: 在同一个物理信道中传输所有的句法元素,但专门为参数集采用安全可靠的通信协议,如TCP。当 然,H.264 也允许我们为包括参数集在内的所有句法元素指定同样的通信协议,但这时所有参数集 必须被多次重发,以保证解码器最终至少能接收到一个。在参数集和片使用同个物理信道的情况下, 图7.3 中的信道1 和信道2 应该被理解为逻辑上的信道,因为从逻辑上看,参数集与其它句法元素 还是处于各自彼此独立的信道中。 H.264 在片层增加了新的句法元素指明所引用的参数集的编号,同时因为取消了图像层,片成 为了信道2 中最上层的独立的数据单位,每个片必须自己携带关于所属图像的编号、大小等基本信 息,这些信息在同一图像的每个片中都必须是一致的。在编码时,H.264 的规范要求将参数集、片 这些独立的数据单位尽可能各自完整地放入一个分组中被传送。 从表面上看来,H.264 关于参数集和片层的结构增加了编码后数据的冗余度(比如参数集必须 多次重发,又如每个片都必须携带一部分相同的关于整个图像的信息,而这些数据完全是重复的), 降低了编码效率,但这些技术的采用使得通信的鲁棒性大大增强,当数据传输中出现丢包,能够将 使错误限制在最小范围,防止错误的扩散,解码后对错误的掩藏和恢复也能起到很好的作用。 一个 片的丢失将不会影响其它片的解码,还可以通过该片前后的片来恢复该片的数据。 H.264 片层以下的句法元素的结构大体上和以往标准类似,但在相当多的细节上有所改进,所 有的改进的目的不外乎两个:在错误发生时防止错误扩散、减少冗余信息提高编码效率。这两者往 往是矛盾的,H.264 在这两者上的取舍显得颇具匠心。 图7.3 所示的码流的结构是一种简化的模型,这个模型已经能够正确工作,但还不够完善,不 适合复杂的场合。在复杂的通信环境中,除了片和参数集外还需要其他的数据单位来提供额外的信 息。图7.4 描述了在复杂通信中的码流中可能出现的数据单位。如前文所述,参数集可以被抽取出 来使用其它信道。
|
(更正:看来一个片不适合作为一个分组,可能太小了。应该是以这里的数据单元为一个分组的?) 在图7.4 中我们看到,一个序列的第一个图像叫做IDR 图像(立即刷新图像),IDR 图像都是I 图像。H.264 引入IDR 图像是为了解码的重同步,当解码器解码到IDR 图像时,立即将参考帧队列 清空,将已解码的数据全部输出或抛弃,重新查找参数集,开始一个新的序列。这样,如果在前一 个序列的传输中发生重大错误,如严重的丢包,或其他原因引起数据错位,在这里可以获得重新同 步。IDR 图像之后的图像永远不会引用IDR 图像之前的图像的数据来解码。 要注意IDR 图像和I 图像的区别,IDR 图像一定是I 图像,但I 图像不一定是IDR 图像。一个 序列中可以有很多的I 图像,I 图像之后的图像可以引用I 图像之间的图像做运动参考。 在图7.4 中,除了参数集与片外还有其它的数据单位,这些数据单位可以提供额外的数据或同 步信息,这些数据单位也是一系列句法元素的集合。它们在解码过程中不是必需的,但却可以适当 提高同步性能或定义图像的复杂特征。 插入:关于I,P片的概念
宏块、片 一个编码图像通常划分成若干宏块组成,一个宏块由一个16×16 亮度像素和附加的一个8×8 Cb和一个8×8 Cr 彩色像素块组成。每个图象中,若干宏块被排列成片的形式。 I 片只包含I 宏块,P 片可包含P 和I 宏块,而B 片可包含B 和I 宏块。 I 宏块利用从当前片中已解码的像素作为参考进行帧内预测(不能取其它片中的已解码像素作为参考进行帧内预测)。 P 宏块利用前面已编码图象作为参考图象进行帧内预测,一个帧内编码的宏块可进一步作宏块的分割:即16×16、16×8、8×16 或8×8 亮度像素块(以及附带的彩色像素);如果选了8×8 的子宏块,则可再分成各种子宏块的分割,其尺寸为8×8、8×4、4×8 或4×4 亮度像素块(以及附带的彩色像素)。 B 宏块则利用双向的参考图象(当前和未来的已编码图象帧)进行帧内预测。 档次和级 H.264 规定了三种档次,每个档次支持一组特定的编码功能,并支持一类特定的应用。 1)基本档次:利用I 片和P 片支持帧内和帧间编码,支持利用基于上下文的自适应的变长编码 进行的熵编码(CAVLC)。主要用于可视电话、会议电视、无线通信等实时视频通信; 2)主要档次:支持隔行视频,采用B 片的帧间编码和采用加权预测的帧内编码;支持利用基于 上下文的自适应的算术编码(CABAC)。主要用于数字广播电视与数字视频存储; 3)扩展档次:支持码流之间有效的切换(SP 和SI 片)、改进误码性能(数据分割),但不支持 隔行视频和CABAC。 |
以下是解码时的知识,现在先不用考虑。
句法的表示方法 句法元素与变量 编码器将数据编码为句法元素然后依次发送。在解码器端,通常要将句法元素作求值计算,得 出一些中间数据,这些中间数据就是H.264 定义的变量。如图7.5:
500)this.width=500;" width="500"> |