PPS参数集

一幅图像可以划分为一个或多个SS,同一幅图像中所有SS都用同一个图像参数集(Picture Parameter Set,PPS)。PPS中存在一些和SPS相同的参数,PPS会覆盖SPS中相应的值,即SS会使用PPS中的这些参数进行解码。在解码开始时所有PPS都处于非活动状态,而且在解码的任意时刻最多只有一个PPS处于激活状态。当某幅图像解码过程中引用了某个PPS,该PPS就处于激活状态直到该图像解码结束。

PPS的语法元素可以分为以下几个部分:

  1. 编码工具的可用性标志。指明片头中一些工具是否可用。这些编码工具主要包括符号位隐藏、帧内预测受限、去方块滤波、P/B图像的加权预测、环路滤波跨越片边界或Tile边界、Transform skip模式和transform bypass模式。

  2. 量化过程相关句法元素。包括每个slice中QP初始值及计算每个CU的QP时所需的参数。此外,还有亮度量化参数的偏移量和由它导出的色度量化参数的偏移量等。

  3. Tile相关句法元素。包括Tile划分模式的可用性标志,以及在使用Tile划分模式时的一些参数,例如Tile的划分形式,总行数、总列数及第几行、第几列的标识等。

  4. 去方块滤波相关句法元素。包括去方块滤波的可用性标志以及使用去方块滤波时的一些控制信息和参数,如去方块滤波的默认补偿值beta和tC。

  5. 片头的控制信息。包括当前片是否为依赖片、片头中是否有额外的slice头比特、图像解码顺序与输出顺序的先后关系以及CABAC中确定上下文变量初始化表格时使用的方法等。

  6. 其他编码一幅图像时公用的信息。包括ID标识符、参考图像数目和并行产生merge候选列表的能力等。其中ID标识符用于标识当前活动的参数集,主要是当前活动的PPS的ID和其引用的SPS的ID。此外,PPS中还包括变换矩阵信息是否存在的标志位,这一变换矩阵若存在便会对SPS中的该信息进行覆盖。

pps_pic_parameter_set_id:PPS标识符,取值为0~63。

pps_seq_parameter_set_id:表示当前PPS激活的SPS的ID值sps_seq_parameter_set_id。取值为0~15。

dependent_slice_segments_enabled_flag:表示slice segment headers中是否存在dependent_slice_segment_flag 语法元素。用于判断当前SS(slice segment)是否有依赖片。

output_flag_present_flag:表示slice headers中是否存在pic_output_flag语法元素。影响解码图像的输出和移除过程。

num_extra_slice_header_bits:表示slice头的RBSP中额外slice头比特数,取值为0~2。其他值留将来使用。

sign_data_hiding_enabled_flag:表示是否允许使用符号位隐藏技术。

cabac_init_present_flag:表示slice headers中是否存在cabac_init_flag语法元素。用于判断CABAC中使用何种方法确定上下文变量的初始值。

num_ref_idx_l0_default_active_minus1:当 num_ref_idx_active_override_flag =0时,表示P slice和B slice的num_ref_idx_l0_active_minus1的默认值。取值为0~14。

num_ref_idx_l1_default_active_minus1 :当 num_ref_idx_active_override_flag =0时,表示P slice和B slice的num_ref_idx_l1_active_minus1的默认值。取值为0~14。

init_qp_minus26:指定slice亮度分量的QP的初始值。取值为-(26+QpBdOffsety)~25。

constrained_intra_pred_flag:表示帧内预测是否受限,即是否允许采用帧间预测模式的邻近块的信息进行帧内预测。

transform_skip_enabled_flag:表示在残差编码语法中是否存在transform_skip_flag,transform_skip_flag用于表示残差编码是否是transform skip模式。

cu_qp_delta_enabled_flag:其值为1表示在PPS中存在 diff_cu_qp_delta_depth语法元素,在变换单元和调色板语法中可能存在 cu_qp_delta_abs。其值为0表示两个语法元素都不存在。

diff_cu_qp_delta_depth :表示在传输cu_qp_delta_abs和cu_qp_delta_sign_flag的编码单元中亮度CTB尺寸和最小亮度CB尺寸的差值。取值在0~log2_diff_max_min_luma_coding_block_size间。

Log2MinCuQpDeltaSize = CtbLog2SizeY − diff_cu_qp_delta_depth

pps_cb_qp_offsetpps_cr_qp_offset:表示色度分量Cb和Cr的量化参数分别相对于亮度分量量化参数的偏移量,取值为-12~12。

pps_slice_chroma_qp_offsets_present_flag:表示slice header中是否存在slice_cb_qp_offset和 slice_cr_qp_offset语法元素。

weighted_pred_flag:表示P slice是否使用加权预测。

weighted_bipred_flag:表示B slice是否使用加权预测。

transquant_bypass_enabled_flag:表示是否存在cu_transquant_bypass_flag语法元素。cu_transquant_bypass_flag用于判断是否为transquant bypass模式,即是否跳过伸缩变换和环路滤波过程。

tiles_enabled_flag:等于1表示参考该PPS的所有图像都划分为多个tile;等于0表示参考该PPS的图像都只包含1个tile。

为了保持码流一致性同一个CVS内的所有PPS的tiles_enabled_flag值应该相同。

entropy_coding_sync_enabled_flag:表示是否使用熵编码同步机制。

num_tile_columns_minus1:该图像划分的tile总列数,取值0~PicWidthInCtbsY − 1间。

num_tile_rows_minus1:该图像划分的tile总行数,取值0~PicHeightInCtbsY− 1间。

uniform_spacing_flag:表示图像的tile列边界和行边界分布是否一致。

column_width_minus1[ i ]:表示第i个tile列的宽度(以CTB为单位)。

row_height_minus1[ i ]:表示第i个tile行的高度(以CTB为单位)。

loop_filter_across_tiles_enabled_flag:表示是否允许环路滤波操作跨越tile边界。

pps_loop_filter_across_slices_enabled_flag:表示是否允许环路滤波操作跨越slice的左边界和上边界。

deblocking_filter_control_present_flag:表示PPS中是否存在去方块滤波的控制信息。

deblocking_filter_override_enabled_flag:表示slice headers中是否存在deblocking_filter_override_flag语法元素。

pps_deblocking_filter_disabled_flag:表示当PPS在不存在slice_deblocking_filter_disabled_flag语法元素时slice是否使用去方块滤波操作。

pps_beta_offset_div2pps_tc_offset_div2:给出去方块滤波默认参数beta和tC(除以2)的偏移值。取值都在-6~6间。

pps_scaling_list_data_present_flag:表示当前PPS是否存在缩放矩阵的信息,若存在则覆盖SPS中相应信息。

lists_modification_present_flag:表示SS header中是否存在ref_pic_lists_modification( )语法结构。

log2_parallel_merge_level_minus2:给出变量 Log2ParMrgLevel的值。 Log2ParMrgLevel用于merge模式下亮度分量MV的产生。取值为0~ CtbLog2SizeY − 2。

Log2ParMrgLevel = log2_parallel_merge_level_minus2 + 2

slice_segment_header_extension_present_flag:表示SS header扩展语法元素是否存在。

pps_extension_present_flag:表示语法元素pps_range_extension_flag,pps_multilayer_extension_flag, pps_3d_extension_flag, pps_scc_extension_flag和 pps_extension_4bits是否存在。

pps_range_extension_flag:表示在PPS RBSP中是否存在语法结构 pps_range_extension( )。

pps_multilayer_extension_flag:表示在PPS RBSP中是否存在语法结构 pps_multilayer_extension( ) 。

pps_3d_extension_flag:表示在PPS RBSP中是否存在语法结构pps_3d_extension( )。

pps_scc_extension_flag:表示在PPS RBSP中是否存在语法结构 pps_scc_extension( ) 。

pps_extension_4bits:表示在PPS RBSP中是否存在语法元素pps_extension_data_flag。

pps_extension_data_flag:可以是任意值。该语法元素不影响解码器。解码过程忽略该字段。

感兴趣的请关注微信公众号Video Coding

发布了108 篇原创文章 · 获赞 189 · 访问量 30万+

猜你喜欢

转载自blog.csdn.net/Dillon2015/article/details/104204039
PPS