天天看點

煩人的GOP structure

本文主要講的是HEVC中GOP structure的建立:

GOP structure主要成員:

  • Type: slice類型,在HEVC中有I, P, B;
  • POC:(picture order count)指的是在GOP中幀的序列,範圍是從1到GOPSize.此序列與解碼序列是不同的;
  • QPOffset:QP offset是添加到QP參數集中最終用到幀編碼的值;
  • QPFactor:在率失真優化中使用的權值,值越大意味着低品質視訊和較少的碼率。通常範圍是0.3~1;
  • tcOffsetDiv2,betaOffsetDiv2,temporal_id:這三個值目前還沒有用到;
  • num_ref_pics_active:參考圖像清單L0和L1大小,指定的是在編碼期間每個方向可以使用的參考圖檔;
  • num_ref_pics:指的是實際參考數, 即reference_idcs中“1”的個數;
  • reference_pictures:目前幀相對于其參考幀的POC偏移,求reference POC - current POC;
  • predict:為0和1表示是否使用下面三個值;
  • deltaRPS:求法上一個POC-current POC;
  • num_ref_idcs:是reference_idcs個數,或者說是num_ref_pic+1;
  • reference_idcs:用來表示參考圖檔,下面詳解。

    #解釋不太全,可以參考HEVC的software-manual.pdf

下面我将以執行個體給大家講解GOP structure parameter 設定

GOPSize=16的GOP結構體

tcOffsetDiv2, betaOffsetDiv2, temporal_id全為0。

fra me Ty pe POC QP offset QP factor ref _pics _active num _ref _pics referen ce_pict ures pr e di ct delta RPS Ref_ idcs Referen ce_idcs
F1 P 16 1 0.442 1 1 -16
F2 B 8 2 0.3536 2 2 -8 8 1 8 2 1 1
F3 B 4 3 0.3536 2 3 -4 4 12 1 4 3 1 1 1
F4 B 2 4 0.3536 2 4 -2 2 6 14 1 2 4 1 1 1 1
F5 B 1 5 0.68 2 5 -1 1 3 7 15 1 1 5 1 1 1 1 1
F6 B 3 5 0.68 2 5 -1 -3 1 5 13 1 -2 6 1 1 1 1 1 0
F7 B 6 4 0.3536 2 4 -2 -6 2 10 1 -3 6 0 1 1 1 1 0
F8 B 5 5 0.68 2 5 -1 -5 1 3 11 1 1 5 1 1 1 1 1
F9 B 7 5 0.68 2 5 -1 -3 -7 1 9 1 -2 6 1 1 1 1 1 0
F10 B 12 3 0.3536 2 3 -4 -12 4 1 -5 6 0 0 1 1 1 0
F11 B 10 4 0.3536 2 4 -2 -10 2 6 1 2 4 1 1 1 1
F12 B 9 5 0.68 2 5 -1 -9 1 3 7 1 1 5 1 1 1 1 1
F13 B 11 5 0.3536 2 5 -1 -3 -11 1 5 1 -2 6 1 1 1 1 1 0
F14 B 14 4 0.3536 2 4 -2 -6 -14 2 1 -3 6 0 1 1 1 1 0
F15 B 13 5 0.68 2 5 -1 -5 -13 1 3 1 1 5 1 1 1 1 1
F16 B 15 5 0.68 2 5 -1 -3 -7 -15 1 1 -2 6

–**在這中間其實最難了解的是Reference_idcs

1、F2參考的圖檔是POC=0, 16,是以其reference_idcs 是1 1

2、F3首先要參考F2 的reference_pictures -8 8,由圖可以知道-8和8 是F3的參考圖像,是以reference_idcs:1 1,接着F2是F3的參考圖像,最終reference_idcs:1 1 1。這裡所說的-8 8,其實就是F2參考圖像,即:POC=0和16這兩個幀。

3、F4,參照F3 reference_pictures:-4 4 12, -4 4和12都為F4的參考圖像且F3也為F4的參考圖像,reference_idcs:1 1 1 1 。-4 4和12即是POC=0 8 16這三個幀。

說到這裡大家明白了吧,當遇到不是目前幀的參考圖像時,reference_idcs:0。比如F6在參考F5時,F5的參考幀也是F6的參考幀,但是F5不是F6的參考幀,是以F6的reference_idcs為1 1 1 1 1 0。

–**關于reference_pictures

在HEVC中官網文檔給出的其實隻是一部分解釋,在實際參考圖檔設定中POC=6将會參考POC=2。因為他會根據IntraPeriod這個參數不同而改變。下面我們設定為CDR幀。所謂的CDR是指GOP結構是開放的形式。

此時如果你的IntraPeriod:32

煩人的GOP structure