一段视频包含一个或多个编码视频序列CVS,每个CVS都有一个SPS,这些SPS都引用同一个VPS。序列参数集SPS包含了一个CVS中所有编码图像的共享编码参数,一个CVS里的所有PPS都必须引用同一个SPS。当一个SPS被引用时,该SPS处于激活状态直到整个CVS结束。
SPS所包含的语法元素大致分为以下几个方面:
-
图像格式信息。包括采样格式、图像分辨率、量化深度、解码图像是否需要裁剪输出以及相关裁剪参数。
-
编码参数信息。包括编码块、变换块的最小和最大尺寸,帧内帧间预测时变换块最大划分深度,对4:4:4采样格式的三个通道是否单独编码,是否需要帧内强滤波,帧间预测过程的某些限制条件(如非对称模式AMP的使用,时域MV预测的使用),是否使用量化矩阵,是否需要样点自适应补偿SAO,是否采用PCM模式及在该模式下的相关编码参数。
-
与参考图像相关的信息。包括短期参考图像的设置,长期参考图像的使用和数目,长期参考图像的POC和其能否作为当前图像的参考图像。
-
profile,tier和level相关参数。
-
时域分级信息。包括时域子层最大数目,控制传输POC进位的参数,时域子层顺序标识开关,与子层相关的参数(如DPB的最大需求)。
-
可视化可用信息(Video Usability Information,VUI),用于表征视频格式等额外信息。
-
其他信息。包括当前SPS引用的VPS编号、SPS标识号和SPS扩展信息。
下表是SPS的语法结构:
下表是SPS扩展部分语法结构:
下表是SPS在SCC扩展部分语法结构:
sps_video_parameter_set_id:指定当前激活的VPS的ID号。
sps_max_sub_layers_minus1:指定参考当前SPS的CVS的时域子层的最大数目。sps_max_sub_layers_minus1取值在0~6间。
sps_temporal_id_nesting_flag:当sps_max_sub_layers_minus1大于0时,其规定了是否对CVS的帧间预测进行额外限制。当vps_temporal_id_nesting_flag=1时,该语法元素取值为1。当sps_max_sub_layers_minus1=0时,该语法元素取值为1。该参数用于指定时域子层升档,即从低子层切换到高子层。
sps_seq_parameter_set_id:表示SPS的标识号,取值0~15间。
chroma_format_idc:表示色度采样格式,取值0~3间。例如取1时表示采用4:2:0格式。
separate_colour_plane_flag:该语法元素取1时,表示对4:4:4格式的三个通道单独编码;该语法元素取0时,表示不进行单独编码。当该语法元素没给出时可推测为0。
pic_width_in_luma_samples:表示解码图像中亮度样点的宽度。
pic_height_in_luma_samples:表示解码图像中亮度样点的高度。
conformance_window_flag:表示解码器是否要对解码后的图像裁剪输出。
conf_win_left_offset、conf_win_right_offset、 conf_win_top_offset 和conf_win_bottom_offset:当conformance_window_flag=1时,这4个参数指定左、右、上、下的裁剪宽度。
bit_depth_luma_minus8:表示亮度像素的比特深度。
bit_depth_chroma_minus8:表示色度像素的比特深度。
log2_max_pic_order_cnt_lsb_minus4:该语法元素取值为0~12,用于计算变量MaxPicOrderCntLsb的值。MaxPicOrderCntLsb用于控制进位,比特流中只传一个低位的POC,不用传高位的POC。利用前参考图像的高、低位POC和MaxPicOrderCntLsb得到当前图像的高位POC,再结合当前图像的低位POC得到当前图像实际POC。
MaxPicOrderCntLsb=2^(log2_max_pic_order_cnt_lsb_minus4+4)
sps_sub_layer_ordering_info_present_flag:时域子层顺序标识开关。该值等于1,表示sps_max_dec_pic_buffering_minus1[i]、sps_max_num_reorder_pics[i]、sps_max_latency_increase_plus1[i]适用于sps_max_sub_layers_minus1+1子层;该值等于0,表示这些参数适用于所有子层。
sps_max_dec_pic_buffering_minus1[ i ]:当HighestTid=i时,该语法元素规定了DPB的最大需求。
sps_max_num_reorder_pics[ i ]:当HighestTid=i时,表示解码顺序在某一图像之前,而显示顺序在该图像之后的最大图像数量。取值范围为[0,sps_max_dec_pic_buffering_minus1[i]]。
sps_max_latency_increase_plus1[ i ]:该值不为0时,用于计算SpsMaxLatencyPictures[i]的值。
SpsMaxLatencyPictures[ i ] = sps_max_num_reorder_pics[ i ] + sps_max_latency_increase_plus1[ i ] − 1
log2_min_luma_coding_block_size_minus3:指定亮度编码块最小尺寸。
log2_diff_max_min_luma_coding_block_size:指定亮度编码块最大尺寸和最小尺寸的差值。
log2_min_luma_transform_block_size_minus2:指定亮度变换块的最小尺寸。
log2_diff_max_min_luma_transform_block_size:指定亮度变换块的最大尺寸和最小尺寸的差值。
max_transform_hierarchy_depth_inter:表示帧间预测时变换块的最大划分深度。取值范围为[0,CtbLog2SizeY-Log2MinTrafoSize]。
max_transform_hierarchy_depth_intra:表示帧内预测时变换块的最大划分深度。取值范围为[0,CtbLog2SizeY-Log2MinTrafoSize]。
scaling_list_enabled_flag:表示量化过程中是否使用量化矩阵。
sps_scaling_list_data_present_flag:表示是否存在量化矩阵数据。
amp_enabled_flag:表示是否使用非对称划分模式。
sample_adaptive_offset_enabled_flag:表示去方块滤波后是否使用SAO。
pcm_enabled_flag:表示是否使用PCM模式。
pcm_sample_bit_depth_luma_minus1:表示亮度分量中PCM样点的比特深度。
pcm_sample_bit_depth_chroma_minus1:表示色度分量中PCM样点的比特深度。
log2_min_pcm_luma_coding_block_size_minus3:表示PCM模式下编码块的最小尺寸。
log2_diff_max_min_pcm_luma_coding_block_size:表示PCM模式下编码块的最大尺寸与最小尺寸的差值。
pcm_loop_filter_disabled_flag:表示在PCM模式下,编码单元的重建像素是否使用环路滤波。
num_short_term_ref_pic_sets:指明在SPS中short_term_ref_pic_set()的数目。取值0~64。
long_term_ref_pics_present_flag:表示帧间预测是否使用长期参考图像。
num_long_term_ref_pics_sps:指定长期参考图像的数目,范围0~32。
lt_ref_pic_poc_lsb_sps[ i ]:表示POC与SPS中第i个长期参考图像的MaxPicOrderCntLsb取模后的值。
used_by_curr_pic_lt_sps_flag[ i ]:表示第i个长期参考图像能否作为当前图像的参考图像。
sps_temporal_mvp_enabled_flag:指定非IDR图像的片头中是否存在句法元素slice_temporal_mvp_enable_flag(表示帧间预测过程能否使用时域MV预测)。
strong_intra_smoothing_enabled_flag:表示滤波过程是否使用双向线性插值。
vui_parameters_present_flag:表示是否含有语法结构体vui_parameters()。
sps_extension_present_flag:其值为0,表示语法元素sps_extension_data_flag不存在;其值为1,sps_extension_data_flag被留给将来使用。
sps_range_extension_flag:可以为任意值,当前版本解码器忽略该元素。
sps_multilayer_extension_flag:其值为1表示语法结构体sps_multilayer_extension( )存在。
sps_3d_extension_flag:其值为1表示语法结构体 sps_3d_extension( )存在。
sps_scc_extension_flag:其值为1表示语法结构体 sps_scc_extension( )存在。
sps_extension_4bits:其值为0。
sps_extension_data_flag:可以为任意值,当前版本解码器忽略该元素。
感兴趣的请关注微信公众号Video Coding