【H264/AVC 句法和语义详解】(一):句法元素分层结构

本文详细介绍了H264/AVC比特码流的句法和语义,重点关注H264的句法元素层次结构。与以往标准不同,H264取消了图像层和序列层,采用序列参数集和图像参数集,减少了码流浪费。文章阐述了H264的分层结构,包括序列、图像、片、宏块和子宏块,以及各层次的主要功能和数据元素。H264中,宏块是编码的基本单位,片是携带图像像素数据的最上层数据单位。
摘要由CSDN通过智能技术生成

参考:http://blog.csdn.net/ivy_reny/article/details/47144121
   http://blog.sina.com.cn/s/blog_4ad7c2540101me90.html

从这一篇开始,我们详细的讲解H.264/AVC 比特码流的句法和语义,可以说,能够学习并掌握H.264的句法和语义,是能彻底掌握并应用H.264的关键。在前面几篇文章中,我们只是从理论层面,介绍了H.264、片、宏块、帧内预测、帧间预测。而在句法和语义中,我们就可以拿到H.264编码之后的裸流,用理论加实践的方式,一步步探索H.264的编解码实现过程。

而在这篇文章里呢,我们就先从宏观的角度,来看看使用H.264编码之后,得到的裸流的分层结构是什么样的。

1. H264句法元素层次结构

1.1 以往标准句法元素的分层结构

在H.264以往标准句法中,句法元素被组织成六个层次:序列(sequence)层、图像组(gop)层、图像(frame/field-picture)层、片/条带(slice)层、宏块(macroblock)层、子块(sub-block)层。

这里写图片描述

上图就是在之前标准中的分层结构,可以看到句法元素同画面的划分一样,被组织成了有层次的结构,这种结构有助于更高效的节省码流。但是这样的结构,有几个很大的缺点:

(1)在这样的结构中,每一层的头部和它的数据部分形成管理与被管理的强依赖关系,头部的句法元素是该层数据的核心,而一旦头部丢失,数据部分的信息几乎不可能再被正确解码出来,尤其在序列层及图像层。

(2)在序列层及图像层,因为数据量过大,不可能将所有的句法元素一次传输,这时假如头部所在的分组丢失,那么该层其他的数据,即使能正确接收也无法解码。

(3)图像层内的各个片之间,经常会携带相同的数据,造成码流的浪费。

所以在此基础上,H.264取消了图像层和序列层,取而代之的,将原本属于图像层和序列层的大部分句法元素,抽取出来形成图像参数集和序列参数集,其余的部分,则放入片层。

1.2 H.264的句法元素的分层结构

下图为H.264图像参数集和序列参数集,与片中句法元素的关系:

在这里插入图片描述
H.264参数集与片中句法元素的关系

从图中可以看到,同一个序列参数集可以被多个序列中的图像参数集引用,同一个图像参数集也可以被多个图像引用。所以我们在打开H.264码流文件时会看到,序列参数集和图像参数集位于码流的最前面。如果编码器认为需要更新参数集时,会发送新的参数集。

在这

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值