一段視頻包含一個或多個編碼視頻序列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