视频编解码·学习笔记12. 图像参数集(PPS)介绍

Posted Simon_Ace

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了视频编解码·学习笔记12. 图像参数集(PPS)介绍相关的知识,希望对你有一定的参考价值。

一、PPS相关概念:

  • 除了序列参数集SPS之外,H.264中另一重要的参数集合为图像参数集Picture Paramater Set(PPS)。
  • 通常情况下,PPS类似于SPS,在H.264的裸码流中单独保存在一个NAL Unit中,
  • PPS NAL Unit的nal_unit_type值为8
  • 在封装格式中,PPS通常与SPS一起,保存在视频文件的文件头中。

二、1. PPS的结构:

在H.264的协议文档中,PPS的结构定义在7.3.2.2节中,如下表所示:
技术分享图片
技术分享图片

其中部分语法元素含义如下:

(1). pic_parameter_set_id

表示当前PPS的id。某个PPS在码流中会被相应的slice引用,slice引用PPS的方式就是在Slice header中保存PPS的id值。该值的取值范围为[0,255]。

(2). seq_parameter_set_id

表示当前PPS所引用的激活的SPS的id。通过这种方式,PPS中也可以取到对应SPS中的参数。该值的取值范围为[0,31]。

(3). entropy_coding_mode_flag

熵编码模式标识,该标识位表示码流中熵编码/解码选择的算法。对于部分语法元素,在不同的编码配置下,选择的熵编码方式不同。例如在一个宏块语法元素中,宏块类型mb_type的语法元素描述符为“ue(v) | ae(v)”,在baseline profile等设置下采用指数哥伦布编码,在main profile等设置下采用CABAC编码。

标识位entropy_coding_mode_flag的作用就是控制这种算法选择。当该值为0时,选择左边的算法,通常为指数哥伦布编码或者CAVLC;当该值为1时,选择右边的算法,通常为CABAC。

(4). bottom_field_pic_order_in_frame_present_flag

标识位,用于表示另外条带头中的两个语法元素delta_pic_order_cnt_bottom和delta_pic_order_cn是否存在的标识。这两个语法元素表示了某一帧的底场的POC的计算方法。

(5). num_slice_groups_minus1

表示某一帧中slice group的个数。当该值为0时,一帧中所有的slice都属于一个slice group。slice group是一帧中宏块的组合方式,定义在协议文档的3.141部分。(主要用在FMO灵活宏块模式编码时才会用到)

(6). num_ref_idx_l0_default_active_minus1、num_ref_idx_l0_default_active_minus1

表示当Slice Header中的num_ref_idx_active_override_flag标识位为0时,P/SP/B slice的语法元素num_ref_idx_l0_active_minus1和num_ref_idx_l1_active_minus1的默认值。

(7). weighted_pred_flag

标识位,表示在P/SP slice中是否开启加权预测。

(8). weighted_bipred_idc

表示在B Slice中加权预测的方法,取值范围为[0,2]。0表示默认加权预测,1表示显式加权预测,2表示隐式加权预测(都应用于B slices)。

(9). pic_init_qp_minus26 和 pic_init_qs_minus26

表示初始的量化参数。实际的量化参数由该参数、slice header中的slice_qp_delta/slice_qs_delta计算得到。

(10). chroma_qp_index_offset

用于计算色度分量的量化参数,取值范围为[-12,12]。

(11). deblocking_filter_control_present_flag

标识位,用于表示Slice header中是否存在用于去块滤波器控制的信息。当该标志位为1时,slice header中包含去块滤波相应的信息;当该标识位为0时,slice header中没有相应的信息。

(12). constrained_intra_pred_flag

若该标识为1,表示\(I\)宏块在进行帧内预测时只能使用来自\(I\)\(SI\)类型宏块的信息;若该标识位0,表示I宏块可以使用来自Inter类型宏块的信息。

(13). redundant_pic_cnt_present_flag

标识位,用于表示Slice header中是否存在redundant_pic_cnt语法元素。当该标志位为1时,slice header中包含redundant_pic_cnt;当该标识位为0时,slice header中没有相应的信息。



以上是关于视频编解码·学习笔记12. 图像参数集(PPS)介绍的主要内容,如果未能解决你的问题,请参考以下文章

视频编解码·学习笔记6. H.264码流分析工程创建

视频编解码·学习笔记8. 熵编码算法:基本算法列举 & 指数哥伦布编码

视频编解码·学习笔记3. H.264视频编解码工程JM的下载与编解码

视频编解码·学习笔记11. 提取SPS信息程序

视频编解码·学习笔记2. H.264简介

视频编解码·学习笔记5. NAL Unit 结构分析