目录
(7)log2_max_pic_order_cnt_lsb_minus4
(10)pic_height_in_map_units_minus1
(6)num_ref_idx_l0_default_active_minus1、num_ref_idx_l0_default_active_minus1
(9)pic_init_qp_minus26和pic_init_qs_minus26
(11)deblocking_filter_control_present_flag
(12)constrained_intra_pred_flag
(13)redundant_pic_cnt_present_flag
一、实验原理
1. 概述
几乎所有视频编码标准的编码结构都是基于树状的分层结构,如图像组层,图像层,片层,宏块层和块层。在以往的标准中,每一层都有头部信息描述该层中的重要信息,数据部分包含该层的数据。一旦头部信息丢失,就会导致该层及以下各层的所有数据不可用。
将片层以上很少变化的系统级信息放在序列参数集(Sequence parameter set, SPS)和图像参数集(Picture parameter set,PPS)中传送。
由于参数集中的信息大多是系统级信息,与图像具体内容不相关,因此需要在编解码端建立会话连接时进行传送或者在会话过程中以可靠的异步传送方式进行参数集更新。
2. 序列参数集SPS
语法结构说明的是某一段视频序列的编码特性
- 首先需要使用profile idc,level_idc两个语法元素说明该段视频序列遵循的是H.264/AVC标准的哪一种配置,以指导解码端调用合适的解码器进行解码。
- 其次需要使用pic order_cnt type等语法元素说明该段视频序列中每帧图像的记数方法,也需要使用 pic_ widthes in- mbs- minusl和height in- mbs minusl 这两个语法元素说明该段视频序列中图像帧的长度和宽度。
- 各段视频序列的编码特性可能不同,因此序列参数集的内容也就不会相同,也就需要一个 Sequence_parameter_set_id语法元素来区分不同的序列参数集,以方便解码端进行参考。
3. 图形参数集PPS
说明的是某个图像帧的编码特性
➢ 包括编码该图像帧所采用的熵编码模式(CAVLC或 者CABAC),所使用的参考帧的数目,以及对该图像帧的亮度和色度残差进行量化时所采用的量化参数值等。
➢ 图像参数集中最主要的部分是该图像帧的Slice Group划分方式的表示(用于FMO)
◼ 其中num_ slice_groupes minusl语法元素说明了该图像帧中Slice Group的数目
◼ num_ slice_group- map type语法元素说明了Slice Group 的划分方式
➢ 同序列参数集的情况一样,每个图像帧的编码特性 可能各不相同,也就需要一个 pic_parameter_set_id来区分不同的图像参数集。
4. GOP
GOP(Group of Pictures,图像组)是将一个图像序列中连续的几个图像组成的一个小组,是对编码后的视频码流进行编辑、存取和压缩编码的基本单元,包含不同种类编码的帧。增大GOP或提高GOP中P/B帧的占比,可以提高压缩比,降低码率。因此一般而言,在码率一定的条件下,GOP越大,图像质量越好(P/B帧的比重更大);在图像质量一定的条件下,GOP越大,码率越低。
5. QP
量化参数QP是量化步长Qstep的序号。
- 对于亮度(Luma)编码而言,量化步长Qstep共有52个值,QP取值0-51
- 对于色度(Chroma)编码,QP的取值0-39。
- QP取最小值0时,表示量化最精细,相反,QP取最大值时,表示量化是最粗糙的。
- QP和Qstep具有线性相关性,Qstep随着QP的增加而增加,每当QP值增加6,Qstep便增加一倍。
二、实验步骤
1、选择一个.mp4或者.264文件。
2、在码流分析仪软件中打开该文件,从几个层次进行分析:
(1)分析SPS和PPS里都包含哪些主要的信息,给出参数值。(例如分辨率、帧率、GOP结构等等)
(2)以一个GOP为例,分析如下信息:
- 每个图像帧的类型及所用的编码比特数、QP值;并以图像帧号为横坐标、每帧所用比特数为纵坐标画出曲线图;以图像帧号为横坐标、每帧所用QP为纵坐标画出曲线图。
- 以第一个I帧作为分析对象,基于该帧图像的空间特性,分析每个宏块所采用的编码类型及其比例。
- 以第一个P帧作为分析对象,基于该帧图像的空间和时间特性,分析每个宏块所采用的编码类型及其比例。
- 以某一个B帧作为分析对象,基于该帧图像的空间和时间特性,分析每个宏块所采用的编码类型及其比例。
三、实验结果
1. 在码流分析仪软件中打开一个mp4文件
用eseye_u.exe打开测试序列文件夹中的DialRotation.mp4
2. 分析SPS
(1)profile_idc
标识当前H.264码流的profile。
标识当前H.264码流的profile。H.264中定义了三种常用的档次profile:
基准档次:baseline profile;
主要档次:main profile;
扩展档次:extended profile;
在新版的标准中,还包括了High、High 10、High 4:2:2、High 4:4:4、High 10 Intra、High
4:2:2 Intra、High 4:4:4 Intra、CAVLC 4:4:4 Intra等,每一种都由不同的profile_idc表示。
- 当前文件profile_idc = High
(2)level_idc
标识当前码流的Level。编码的Level定义了某种条件下的最大视频分辨率、最大视频帧率等参数,码流所遵从的level由level_idc指定。
- 当前文件level_idc = 13,查表可知,码流级别为1.3。
(3)seq_parameter_set_id
表示当前的序列参数集的id。通过该id值,图像参数集pps可以引用其代表的sps中的参数。
- 当前文件seq_parameter_set_id=0