VPS參數集

HEVC在H.264/AVC的基礎上引入了視頻參數集(Video Parameter Set,VPS)。這樣HEVC共定義了3類參數集:視頻參數集(Video Parameter Set,VPS)、序列參數集(SequenceParameter Set,SPS)、圖像參數集(Picture Parameter Set,SPS)。

在一個HEVC碼流中,前三個NALU分別是VPS NALU、SPS NALU、PPS NALU。這三類參數集的NALU可以獨立解碼而不需要參考碼流中其他NALU。每一類參數集都包含擴展機制,允許在將來的HEVC版本中擴展這個參數集而不會破壞向後兼容性。

VPS用於傳送應用於多層和子層視頻編碼所需的信息,提供了整個視頻序列的全局性信息。一個給定的視頻序列的每一層都參考同一個VPS,無論它們SPS是否相同。

VPS語法元素

HEVC中定義了VPS的各個語法元素及描述子,如下表所示。描述子即語法元素的熵解碼算法,描述子定義如下:

ae(v):CABAC編碼。

b(8):讀進連續的8比特。

f(n):讀進連續的n比特。

se(v):有符號指數哥倫布編碼。

u(n):讀進連續的n比特,且它們解碼後爲無符號整數。

ue(n):無符號指數哥倫布編碼。

上面描述子括號中參數爲n時,表示該語法元素是定長編碼,參數爲v時表示該語法元素是變長編碼。

 

上表定義了VPS的語法元素,前7條語法元素採用定長編碼,共4個字節,方便解碼器讀取,這7條語法元素包括VPS識別符,相關可用層及可用時域子層的信息。

跟隨前4個字節後的語法元素包括:比特流中解碼器工作的可用操作點信息。一個操作點的特性由使用的Profile、tier和level刻畫。它定義瞭解碼比特流所需的編碼工具,以及對比特流尺寸或緩存容量的限制。跟在整個比特流操作點指標後的是比特流時域子層的操作點指標。

vps_video_parameter_set_id:當前VPS標識符,供PPS引用。

vps_base_layer_internal_flagvps_base_layer_available_flag:

  • 如果vps_base_layer_internal_flag=1且vps_base_layer_available_flag=1,碼流中存在base layer。

  • 否則,如果vps_base_layer_internal_flag=0且vps_base_layer_available_flag=1,base layer由本規範未規定的外部手段提供。

  • 否則,如果vps_base_layer_internal_flag=1且vps_base_layer_available_flag=0,不存在base layer,但是VPS中包含base layer的信息就像其存在於碼流中一樣。

  • 否則,如果vps_base_layer_internal_flag=0且vps_base_layer_available_flag=0,不存在base layer,但是VPS中包含base layer的信息就像其由本規範未規定的外部手段提供一樣。

vps_max_layers_minus1:該值加1表示參考這個VPS的CVS(Coded Video Sequence)的最多允許的層數。爲了保持碼流的一致性,當vps_base_layer_internal_flag=0時vps_max_layers_minus1應該大於0。在本規範中vps_max_layers_minus1應該小於63。vps_max_layers_minus1=63留給將來擴展使用。

vps_max_sub_layers_minus1:該值加1表示參考這個VPS的CVS的最多允許的時域子層數。vps_max_sub_layers_minus1 值應該在0~6間,即最多支持7個時域子層。

vps_temporal_id_nesting_flag:當vps_max_sub_layers_minus1=0時,該參數爲1;當vps_max_sub_layers_minus1大於0時,這個參數用於指定是否對幀間預測進行額外限定。該參數用於指定時域子層升檔,即從低子層切換到高子層。

vps_reserved_0xffff_16bits:兩字節保留位,其值等於0xFFFF。

vps_sub_layer_ordering_info_present_flag:vps_sub_layer_ordering_info_present_flag=1表示vps_max_dec_pic_buffering_minus1[ i ],vps_max_num_reorder_pics[ i ] 和vps_max_latency _increase_plus1[ i ]作用於vps_max_sub_layers_minus1 + 1 子層。

vps_sub_layer_ordering_info _present_flag=0表示vps_max_dec_pic_buffering_minus1[ vps_max_sub_layers_minus1 ],vps_max_num_reorder_pics[ vps_max_sub_layers_minus1 ]和vps_max_latency_increase_plus1[ vps_max_sub_layers_minus1 ] 作用於所有子層。

當vps_base_layer_internal_flag=0時,vps_sub_layer_ordering_info _present_flag=0且解碼器應該忽略該字段。

vps_max_dec_pic_buffering_minus1[ i ]:規定了HighestTid=i時,CVS的圖像存儲單元中解碼圖像所需的最大緩存。

vps_max_num_reorder_pics[ i ] :規定了HighestTid=i時,在CVS中解碼順序在某一幅圖像之後,而顯示順序在該圖像前的圖像最大數量。

vps_max_latency_increase_plus1[ i ] :當HighestTid=i時,該語法元素用於計算VpsMaxLatency Pictures[i]的值。

當vps_max_latency_increase_plus1[ i ]不等於0時,VpsMaxLatencyPictures[ i ] =vps_max_num_reorder_pics[i]+vps_max_latency_increase_plus1[ i ]-1。

vps_max_layer_id:指定參考該VPS的所有CVS中的NALU的nuh_layer_id的最大值。

vps_num_layer_sets_minus1:指定VPS中層集(layer set)的數量,該值在0~1023間。

layer_id_included_flag[ i [ j] :該語法元素爲1時,表示圖層標識列表 LayerSetLayerIdList[ i ]中包含nuh_layer_id=j的情況;該語法元素爲0時,表示圖層標識列表 LayerSetLayerIdList[ i ]中不包含nuh_layer_id=j的情況;

NumLayersInIdList[ 0 ]=1且LayerSetLayerIdList[0][0]=0,NumLayersInIdList[i]和 LayerSetLayerIdList[ i ]由下面方式生成。

n=0
for(m=0;m<=vps_max_layer_id;m++)
    if(layer_id_included_flag[i][m])
        LayerSetLayerIdList[i][n++]=m
NumLayersInIdList[i]=n

vps_timing_info_present_flag :該語法元素爲1時,表示在VPS中語法元素vps_num_units_in_tick、vps_time_scale、vps_poc_proportional_to_timing_flag和vps_num_hrd_parameters存在;該語法元素爲0時VPS中不存在這4個語法元素。

vps_num_units_in_tick:該語法元素規定當時鐘頻率爲vps_time_scale Hz時所花的時間單位個數。以秒爲單位時,一個時鐘週期等於vps_num_units_in_tick除以vps_time_scale 。例如,當一個視頻的幀率爲25Hz時,vps_time_scale 等於27000000Hz,vps_num_units_in_tick就等於1080000,因此一個時鐘週期就是0.04秒。

vps_time_scale:一秒內時間單位的個數。

vps_poc_proportional_to_timing_flag:該語法元素爲1時,表示CVS在每幅圖像(不包括第一幅圖像)的POC與它的顯示時間和第一幅圖像的顯示時間的比值成正比;否則,不成比例。

vps_num_ticks_poc_diff_one_minus1:表示POC之間差值爲1時,時鐘週期的數目。

vps_num_hrd_parameters:指定VPS RBSP中語法結構體hrd_parameters()的數目。

hrd_layer_set_idx[ i ]:指定第i個語法結構體hrd_parameters()使用的圖層集的索引。

cprms_present_flag[ i ] :表示第i個hrd_parameters()中是否存在所有子層公用的HRD參數。

vps_extension_flag:該語法元素取0時,表示在VPS RBSP中沒有語法元素vps_extension_data_flag。

vps_extension_data_flag:可以爲任意值。在該版本中,解碼器忽略該語法元素。

感興趣的請關注微信公衆號Video Coding

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章