一、SPS与PPS主要信息
1.序列参数集SPS(Sequence parameter set): 说明的是某一段视频序列的编码特性。profile_idc,level_idc两个语法元素说明该段视频序列遵循的是H.264/AVC标准的哪一种配置,以指导解码端调用合适的解码器进行解码。pic_order_cnt_type等语法元素说明该段视频序列中每帧图像的记数方法,pic_ widthes_in_mbs_minus1和pic_ height_in_map_units_minus1这两个语法元素说明该段视频序列中图像帧的长度和宽度。各段视频序列的编码特性可能不同,因此序列参数集的内容也就不会相同,seq_parameter_set_id语法元素用来区分不同的序列参数集,以方便解码端进行参考。
2.图像参数集PPS(Picture parameter set): 说明的是某个图像帧的编码特性。 包括编码该图像帧所采用的熵编码模式(CAVLC或者CABAC),所使用的参考帧的数目,以及对该图像帧的亮度和色度残差进行量化时所采用的量化参数值等。图像参数集中最主要的部分是该图像帧的Slice Group划分方式的表示(用于FMO),其中num_slice_groups_minus1语法元素说明了该图像帧中Slice Group的数目。同序列参数集的情况一样,每个图像帧的编码特性可能各不相同,也就需要一个pic_parameter_set_id来区分不同的图像参数集。
seq_parameter_set_id表示当前的序列参数集的id。通过该id值,图像参数集pps可以引用其代表的sps中的参数。图像的实际宽度为:frame_width = 16 × (pic_width_in_mbs_minus1 + 1);(54+1)*16=880;
二、实验内容
将上面实验中的两个视频序列编码为.264文件。
1.编码要求:
① 固定码率,以不同的GOP长度及形状编码
GOP=15,2B帧;GOP=12,2B帧,GOP=9,2B帧
GOP=4,1B帧;GOP=12,无B帧;GOP=1,全I帧
② 相同的GOP长度及形状,不同的码率
例:1000kb/s, 800kb/s,400kb/s
2.码率控制:
H.264的码率控制算法建立在如下假设上:即编码图像有一个预先定义好的顺序,也即预先定义好了GOP的组成。该算法可以用来产生适合可用带宽的码流,同时考虑了HRD模型。
该算法主要包括以下三个部分:
① GOP级别的码率控制
② 图像级别的码率控制
③ 可选的基本单元级别的码率控制(基本单元被定义为同一帧图像中连续的一组宏块,如果使用了基本单元,则其中的宏块个数最小为1,最大为该帧图像的宏块总数)
3.实验结果
用码流分析软件检查所生成的码流中各种编码模式和运动矢量等信息
视频流的第一帧一定是I帧,具体宏块类型(MB Type)有I_4x4,I_8x8,I_16x16。即I帧内只含有其中只含有I型宏块,不含有P帧。
率失真曲线
记录码流的Y-PSNR:
由图像可得出结论:
对于这种统计特性的视频序列,
在低码率的情况下,生成码流的客观质量15/2B>12/2B>12/0B>9/2B>4/1B>全I帧;
在中高码率的情况下,生成码流的客观质量、12/0B>15/2B>12/2B>9/2B>4/1B>全I帧。