SPS解析
一段HEVC码流可能包含一个或者多个编码视频序列CVS,每个CVS由一个随机接入点开始,即IDR/BLA/CRA。在H.264和HEVC中,序列参数集SPS包含该CVS中所有slice需要的信息。SPS的内容大致可以分为几个部分:1、自引ID;2、解码相关信息,如档次级别、分辨率、子层数等;3、某档次中的功能开关标识及该功能的参数;4、对结构和变换系数编码灵活性的限制信息;5、时域可分级信息;6、VUI。
以下是对每一个语法元素的讨论解释:
1、
sps_video_parameter_set_id
:指定了当前活动的VPS的ID号,当前例子的取值为0,这也与前文的VPS解析的结果一直;
2、sps_max_sub_layers_minus1 :该值+1表示引用该SPS的CVS所包含的最大时域子层数,取值范围0-6;本例取值为0,即只有1个时域子层;
3、sps_temporal_id_nesting_flag :标识时域可分级中的帧间预测参考帧的限制信息;此处该值取0【好像与标准文档里写的有点矛盾啊……】;
4、
sps_seq_parameter_set_id :【其实在这个参数之前码流中还有很多数据没有解释清楚,留到以后看吧】本SPS的ID值,此处取0;
5、
chroma_format_idc:色度采样格式,此处取值为1,代表采用4:2:0格式;
6、separate_colour_plane_flag :这个参数是4:4:4格式专用的,在本例中不存在;
7、pic_width_in_luma_samples和pic_height_in_luma_samples :图像的分辨率信息,用指数哥伦布编码,本例取176*144;
8、conformance_window_flag :指示一致窗口裁剪偏移参数conformance cropping window offset parameters的信息;此处取值为1,表示后续几位为conf_win_left_offset、conf_win_right_offset、conf_win_top_offset、conf_win_bottom_offset等参数;
9、bit_depth_luma_minus8 :指定了亮度矩阵的比特深度以及亮度量化参数范围偏移量;此处取0,表示每个亮度像素用8为表示,QpBdOffset参数为0;
10、bit_depth_chroma_minus8 :与bit_depth_luma_minus8类似,只不过是针对色度的;
11、log2_max_pic_order_cnt_lsb_minus4 :负责计算变量MaxPicOrderCntLsb的值【这个值是干嘛的……】;
12、sps_sub_layer_ordering_info_present_flag :时域子层顺序标识开关,该值取1,表示后续几位分别是sps_max_dec_pic_buffering、sps_num_reorder_pics、sps_max_latency_increase等参数;
13、log2_min_coding_block_size_minus3 :用于计算最小亮度CB的尺寸,此处取0;
14、log2_diff_max_min_coding_block_size :用于计算最大最小亮度CB尺寸的差值,此处取3;
15、log2_min_transform_block_size_minus2:用于计算最小TB尺寸,此处取0;
16、log2_diff_max_min_transform_block_size :用于计算最大最小TB尺寸的差值,此处取3;
17、max_transform_hierarchy_depth_inter :帧间模式CB中TB的最大层级深度,此处为2;
18、max_transform_hierarchy_depth_intra ::帧内模式CB中TB的最大层级深度,此处为2;
19、scaling_list_enabled_flag:标识是否在变换系数量化中使用量化列表,此处取0;
20、amp_enabled_flag :标识是否使用不对称运动划分,此处为1;
21、sample_adaptive_offset_enabled_flag :标识是否使用SAO,此处为1;
22、pcm_enabled_flag :标识是否使用PCM,此处为0,即不实用PCM数据;
23、num_short_term_ref_pic_sets :指示SPS中short_term_ref_pic_set( )这个结构的数目,此处为1;
24、long_term_ref_pics_present_flag :指示帧间预测中是否使用长期参考帧,此处为1,即使用长期参考帧;
25、sps_temporal_mvp_enable_flag :标识CVS中非IDR帧的条带头中是否包含slice_temporal_mvp_enabled_flag标识,此处为1,即含有;
26、sps_strong_intra_smoothing_enable_flag :标识平滑滤波过程中是否使用双线性差值方法,此处为1,即使用;
27、vui_parameters_present_flag :标识是否有vui_parameters()结构体,此处为0,即没有;
28、sps_extension_flag:sps扩展信息,取0,没有扩展。