H264標準中的基本概念和常識:
1、I幀、B幀、P幀、IDR幀
I幀(關鍵幀),I幀僅僅進行幀內編碼,因此I幀可以無需其他參考幀就可以解碼出來。視訊序列中第一幀都是I幀。I幀用來作為P幀和B幀的參考幀,因此I幀碼流出現問題,可以造成一個GOP組的P幀和B幀解碼出錯。I幀可以用來快進快退以及其他的隨機訪問操作,I幀另外一個作用就是幫助場景切換時,重置畫面質量,當場景進行切換時,可以切換I幀從而更加高效的壓縮P幀和B幀(當然這要求編碼器要有場景切換檢測功能)。由於I幀僅僅進行幀內預測,沒有進行運動估計等幀間預測,因此編碼I幀位元速率比較高。
P幀(預測幀),P幀需要以前面的I幀或者P幀作為參考進行幀間預測,注意P幀僅僅參考它前面的最靠近它的I
B幀(雙向預測幀)需要參考前面和後面的I幀或者P幀進行幀間預測編碼(如下圖所示);
IDR幀實質也是I幀,在H.264中規定了兩種型別的I幀:normal I frames和IDR frames。對於IDR幀,所有位於IDR幀後的B幀和P幀都不能參考IDR幀以前的幀。而普通I幀,I幀後的B幀和P幀仍然可以參考I幀之前的其他幀。I幀的隨機訪問功能是由IDR幀來承擔,一個新的IDR幀開始,可以算是一個新的視訊序列開始(IDR
2、H.264中量化引數QP和量化步長QStep的關係
對於亮度編碼而言,量化步長QStep總共有52個值,而量化引數QP就是QStep的序號(0-51)。
3、I幀、B幀、P幀的編碼流程:
摘自網路(http://www.cppblog.com/elva/archive/2010/03/19/110082.html),正確性有待考證。
I 幀編碼的基本流程為:
(1) 進行幀內預測,決定所採用的幀內預測模式。
(2) 畫素值減去預測值,得到殘差。
(3) 對殘差進行變換和量化。
(4) 變長編碼和算術編碼。
(5) 重構影象並濾波,得到的影象作為其它幀的參考幀。
P 幀和 B 幀編碼的基本流程為:
(1) 進行運動估計,計算採用幀間編碼流程編碼模式的率失真函式(節)值。P 幀
只參考前面的幀,B 幀可參考後面的幀。
*(2) 進行幀內預測,選取率失真函式值最小的幀內模式與幀間模式比較,確定
採用哪種編碼模式。
(3) 計算實際值和預測值的差值。
(4) 對殘差進行變換和量化。
(5) 熵編碼,如果是幀間編碼模式,編碼運動向量