H264/AVC 句法

news/2024/8/26 17:34:26

在编码器输出的码流中,数据的基本单位是句法元素,每个句法元素由若干比特构成,它表示某个特定的物理意义,例如:宏块类型、量化参数等。句法表示句法元素的组织结构。


句法元素的分层结构

码流是由一个个句法元素依次衔接组成的,码流中除了句法元素并不存在专门用于控制或同步的内容。264中,句法元素被组织成有层次地结构,分别描述各个层次的信息,如下所示:

264中,句法元素共被组织成序列、图像、片、宏块、子宏块五个层次。句法元素的分层结构有助于节省码流(例如将不同片的公共信息抽取出来,形成图像一级的句法元素,在片级仅携带该片自身独有的句法元素。)

264的分层结构相比于之前的标准有所改进,主要是优化了传输中的错误掩藏,在有误码发生时可以提高图像重建的性能。在以往的标准中,分层的组织结构如下所示,他们类似TCP/IP协议的结构,每一层都有头部,然后在每层的数据部分包含该层的数据。

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

264中,分层结构最大的不同是取消了序列层和图像层,将原本属于序列和图像头部的大部分句法元素游离出来形成序列和图像两级参数集,其余的部分则放入片层。参数集是一个独立的数据单位,不依赖于参数集外的其他句法元素。此外,同一个序列参数集可以被多个序列中的图像参数集引用;同一个图像参数集可以被多个图像引用。在参数集内容需要更新时,才会发送新的参数集。这样依赖,参数集可以被多次重发或者采用特殊技术加以保护。

264还建议,使用不同的信道传输参数集和参数集外部的句法元素。即使用更安全的、成本更高的通道来传输参数集,使用成本低的信息传输其他句法元素,只需要保证片层中的某个句法元素需要引用某个参数集时,那个参数集已经到达解码器,也就是参数集在时间上必须先被传送。

由于取消了图像层,对于传输的每个片,都要指明需要引用的参数集的编号、图像的编号等基本信息。这虽然降低了编码效率,但能使得通信的鲁棒性大大增强。

总体来看,264句法的分层结构是这样子的:

网络抽象层(NAL)由一系列NAL单元组成;序列参数集(SPS)和图像参数集(PPS)是NAL单元,它们向解码器发送某些公共控制参数的信号;编码视频数据在视频编码层(VCL) NAL单元中进行传输,称为编码片;在片层,每个片由一个片头和片数据组成;片数据是一系列被编码的宏块(MB)和跳过宏块指示符(Skip indication),表示某些宏块位置不包含数据;宏块又包含类型、预测信息、已编码块图案CBP(指明哪些亮度和色度块包含非零残差系数)、量化参数、残差数据。


句法的表示方法

264中,句法元素的名称是由小写字母和一系列的下划线组成,而变量名称是大小写字母组成,中间没有下划线。例如:pic_width_in_mbs_minus1是句法元素,表征图像的宽度,以宏块为单位。PicWidthInSamplesL表示图像的亮度分量的宽,以像素为单位。

264中定义了以下几种描述子,用于从比特流中提取句法元素:

264中使用的句法表如下所示(以宏块层句法为例),C字段表示该句法元素的分类(这为片分区服务);Descriptor指定对应句法元素的描述子。


http://www.niftyadmin.cn/n/1895472.html

相关文章

H264/AVC 解码器原理

264包括VCL(视频编码层)和NAL(网络提取层),VCL包括核心压缩引擎和块、宏块和片的语法级别定义,它的设计目标是尽可能地独立于网络进行高效编码;NAL则负责将VCL产生的比特字符串适配到各种各样地…

H264/AVC NAL单元和解码

在264中,NAL是以NALU(NAL unit)为单元来支持编码数据在基于包交换技术网络中的传输的;它定义了符合传输层或存储介质需求的数据格式,同时提供头信息,从而提供了视频编码与外部世界的接口。网络层和传输层的…

第一周 机器学习(ML)策略(1):1.6 开发集与测试集的大小

目录 第一章、简介 第二章、开发集与测试集的大小 2.1、 数据集较小时 训练集/开发集/测试集 的划分规则。 2.2、数据集较大时 训练集/开发集/测试集 的划分规则。 2.3、 用置信度评估测试集的性能。 2.4、数据集较大情况下可考虑省略 测试集 2.5、小结 第一章、简介 本…

服务器端跟踪和收集

SQL Server性能分析器只是少量系统存储过程中相当轻量的封装,这些系统存储过程显示了SQL跟踪的真正功能。 下列系统存储过程用来定义和管理跟踪: Sp_trace_create 用来定义一个跟踪,并和接下来将要讲的其他选项一样指定一个输出文件位置。这个…

74. 进程管理 - sar 收集、报告,或存储系统行为信息

开篇词 sar 是一个用于收集、报告,或存储系统活动信息的工具。 统计 页面 这里是页面字段的一些描述: 字段描述pgpgin/s在磁盘里每秒分页的总字节数。pgpgout/s从磁盘里每秒分页的总字节数。fault/s由系统产生的每秒页丢失故障(主要及…

第一周 机器学习(ML)策略(1):1.7 什么时候该改变开发集、测试集和指标

目录第一章、简介 第二章、什么时候该改变开发集、测试集的指标 2.1、什么情况下需要改变指标? 2.2、如何修改评估指标(增加权重) 2.3、增加权重后,归一化评估指标 2.4、设定指标是第一步,优化指标是第二步 2.5、 举例,两个猫分类…

Baeldung Java 周评 | 第七十三弹(关键词:Spring Data JPA 教程、Java 的二十年、了解垃圾收集日志、Hibernate 事物缓存并发策略工作原理、JVM 的反应式流)

开篇词 尤金的第 73 篇 Java 周评,诞生了! Spring 以及 Java 相关 Spring Data JPA 教程:查询方法简介 Petri 的 Spring Data JPA 系列的坚实部分 - 介绍查询方法。Spring 4 及 Java 8 的采用情况 我上周进行的调查对 Spring 4、Spring …

H264/AVC 解码时POC的计算

POC用于标识图像的播放顺序,同时还用于在对帧间预测片解码时,标记参考图像的初始图象序号,表明下列情况下帧或场之间的图像序号差别:使用直接预测模式的运动矢量推算时;B片中使用固有模式加权预测时;解码器…