HEVC 參考幀管理(RPS)
分析HM參考幀的管理:
HEVC採用了參考幀集(RPS)的技術來管理已解碼的幀,用作後續影象的參考。與之前的視訊編碼標準中參考偵管理策略不同的是,HEVC中的RPS技術,通過直接在每一幀開始的片頭碼流中傳輸DPB中各個幀的狀態變化,而H.264/AVC中的滑動窗和MMCO (Memory ManagementControl Operation)這兩種參考幀管理技術,是通過傳輸每一個片的DPB的相對變化來實現,一但發生資料丟失,將會有持續的影響。
1、參考幀管理基本知識
H.263, H.264/AVC和HEVC中都採用了多幀參考技術,來提高幀間預測的準確性。解碼已經完成的影象,被快取在DPB中,供後續的幀用作參考影象,因此,標準需要對DPB中的影象進行管理。DPB中的每一個影象,有三種狀態“Unused for reference”、“Used for short-termreference"和”Used for long-term reference",這三種狀態之間的轉換,是通過解碼影象標記過程進行控制的。H。264/AVC中採用了滑動窗和MMCO兩種方式。滑動窗管理方式,顧名思義,是以DPB可以存放的幀數為視窗,隨著當前解碼的影象,以先入先出的方式,將新的解碼影象移入,將超出視窗的解碼影象移出,因此,DPB中儲存的是最近解碼的多個影象。MMCO是通過在碼流中傳輸控制命令,完成對DPB中影象的狀態標記的,它可以將一個“Used for reference“ (short-term or long-term)標記為“Unused for reference也可以將當前幀或者“Used for short-termreference“的幀,標記為“ Used for long-term reference ”等。
2、HEVC 參考幀集技術(RPS)
為了增強參考幀管理的抗差錯能力,HEVC採用了參考偵集技術,它通過直接在每一幀開始的片頭碼流中傳輸DPB中各個幀的狀態變化,將當前幀以及後續幀可能用到的參考幀在DPB中都進行描述,描述以POC作為一幀貞的身份標識。因此,它不需要依賴於前面幀的DPB狀態,從而增強了抗差錯的效能。簡言之,每幀的第一個片中包含一個RPS,它是由一組“ΔPOC”(當前幀POC與其POC的差)和“是否用作當前幀/後續偵的參考”這些標識資訊組成,DPB根據片頭中RPS的描述,對參考幀進行標記。例如,POC=4的B幀,只能參考POC=0的I幀,其 RPS 為{(ΔPOC =3,UsedByCurPic)}; POC=3 的 b 幀,可以參考 P0C=4和 P0C=2 的兩個B幀,其 RPS 為{(ΔPOC = -1,UsedByCurPic), (ΔPOC=1,UsedByCurPic)};若POC=0的I幀,不再出現在RPS中,則它被標記為“Unused for reference",然後從DPB中移除。
參考幀RPS更新:
a) 在解碼P0C=1的幀前,DPB中有三個參考幀,分別是POC=0,4,2的幀;
b) 當接收到P0C=1的片頭中傳輸的RPS資訊(描述瞭解碼P0C=1的幀時,DPB的狀態,即POC=0和2的幀用作當前幀的short-term參考,P0C=4的幀用作後續幀的參考)後,對DPB中的幀進行狀態的標記,將POC=0和2的幀標記為“Used for short-termreference”,並且保留POC=0的幀,以用作後續參考;然後解碼P0C=1的幀,解碼完成,將P0C=1的幀放入DPB中。此時,DPB中有POC=0, 4,2, 1四幀;
c) 當接收到P0C=3的片頭中傳輸的RPS資訊(描述瞭解碼P0C=3的幀時,DPB中,P0C=2和4的幀用作當前幀的short-term參考,POC=0的幀用作後續幀的參考,POC=1的幀不再用作參考)後,對DPB中的幀進行狀態的標記,將 P0C=2 和 4 的楨標記為 “Used for short-termreference將 P0C=1的幀移出DPB,然後解碼P0C=3的幀,解碼完成,將其放入DPB中。此時,DPB中有POC=0,4, 2,3四幀。
3 、RPS預測
從上述描述中可以看出,在用POC值對參考幀進行身份描述時,不同幀的RPS中的多個ΔPOC值的差值是相同的,例如上例中,POC為1的幀的RPS描述中,ΔPOC值分別是{1, -3,-1}, POC為3的幀的RPS描述中,ΔPOC值分別{3,-1,1}為ΔPOC之間的差值為2。因此,不同幀的RPS描述中,ΔPOC值仍然可以進行預測,即DeltaRPS = ΔPOC(RPScurr)- ΔPOC(RPSref),以進一步減少傳輸代價。
4、HM中的多參考幀配置
參考軟體HM在Random Access配置中採用了 Hierachical-B的GOP結構,參考幀數目為4 (或者3),如圖3-3所示,但在編碼配置中,活動的參考幀數目為2,即只對最近的兩個參考幀進行運動估計和運動補償。與此類似,在LowDelay配置下,參考幀數目為4,活動的參考幀數目為4。
5、HM多參考幀優化選擇
從前文的分析中,HEVC及其參考軟體HM都支援多參考幀技術,HM中可以配置4或者2個活動參考幀,這使得每個PU的運動估計的複雜度成倍增加。HEVC參考軟體中仍然採用傳統的塊匹配技術進行運動向量的搜尋,並選擇最佳的預測方向和參考幀索引。其過程可以簡單總結為以下流程:
(1) 從ListX=0開始(即前向預測),將參考索引iReflndex設定為0;
(2) 在當前iReflndex下,生成高階運動向量預測(AMVP: Advanced MotionVector Prediction)候選列表,並進行AMVP索引的選擇;
(3) 以(2)中選中的AMVP為起始點,在當前iReflndex幀內,以SA(T)D+λpred*Bits為代價進行運動估計,得到最佳的運動向量和最小代價;
(4)設定 iRefIndex=iRefIndex+l,重複步驟(2)和(3),得到當前 iReflndex下的最佳運動向量和最小代價;直到參考幀佇列ListX中的所有標記為“Used for Reference“的參考幀都完成最佳運動向量和最小代價的計算,並從中挑選代價最小的iReflndex作為當前預測方向下,最佳的參考索引;
(5) 將ListX=1 (即後向預測),重複(2)到(4)步驟,並挑選代價最小的iReflndex作為當前預測方向下的最佳的參考索引;
(6) 固定以List0 (或者List1)中最佳的參考索引和運動向量為雙向預測中的其中之一,對List1(或者list0)中所有參考索引進行(2)到(4)步驟,並找到最佳的雙向預測參考索引和運動向量。
(7) 比較前向預測、後向預測以及雙向預測的最小代價,選擇出最佳的預測方向。