本文主要講的是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