專利名稱:一種基于h.264分層b幀編碼結構的碼率控制方法
技術領域:
本發明涉及視頻壓縮技術,特別涉及視頻壓縮技術中的一種基于H. 264分層B幀 編碼結構的碼率控制方法。
背景技術:
碼率控制在視頻壓縮技術中起著至關重要的作用,其最終目的是在給定的目標比 特率及緩存容量的條件下,使得傳輸的視頻質量最優化。H. 264是由聯合視頻組(JVT)推出的最新視頻編碼標準,在對其進行碼率控制的 時候,由于壓縮過程中產生的量化參數(QP)既用于碼率控制過程,又用于率失真優化過 程,因此會產生“蛋雞悖論”的問題一方面,為了計算當前宏塊的率失真優化(RDO),需要 利用當前宏塊的QP作為輸入;另一方面,當前宏塊的QP的計算則需要利用該宏塊的平均絕 對差(MAD)來揭示其編碼復雜度,然而,每個當前宏塊的MAD只有在得知其RDO后才能計算 出。因此,如何解決“蛋雞悖論”成了 H. 264碼率控制過程中的難題。目前,應用較為廣泛的H. 264碼率控制算法是JVT-G012,其要點是為保證碼率控 制精度,分為圖像組(GOP)級別、幀級別、基本單元(BU)級別的比特數分配,并通過流量模 型計算某個時刻的緩沖器占用量以輔助調整分配的比特數大小;通過線性MAD預測模型來 預測當前編碼單元的MAD值,以解決“蛋雞悖論”;使用MPEG-2中經典的二次碼率-量化步 長(R-Q)模型來計算量化步長(Q),從而得到最后的QP。雖然JVT-G012碼率控制算法解決 了“蛋雞悖論”的問題并在多數情況下取得較好的編碼效果,但是該算法并不能很好地支持 分層B幀這種特殊的編碼結構。在分層B幀編碼結構中,關鍵幀直接或者間接地作為二個連續的GOP之間的分層 B幀的參考幀;較低層的B幀作為較高層的B幀的參考幀。換句話說,越低層的編碼幀對整 體的編碼效率貢獻越大。在這種編碼結構中,應當給低層編碼幀分配較多的編碼比特數,以 保證整體的編碼效率。但是,在JVT-G012中,B幀的QP值是對兩個相鄰P幀的QP值進行 插值計算得到,沒有考慮屬于不同時域編碼層的編碼幀的重要性。因此,若仍沿用JVT-G012 中的算法,就會由于沒有很好地利用分層B幀的編碼特性而導致最終碼率控制不準確以及 編碼視頻質量下降。為了提高JVT-G012算法在分層B幀編碼結構下的碼率控制性能,可以采用如下的 改進的算法1、采用層疊量化(Cascading QP)的方法首先利用相鄰P幀的QP插值得到低層 B幀的QP值,其次對其上層B幀逐層加大QP值,以此保證低層編碼幀分配到較多比特數。 這種方法存在的問題是控制結果較為粗糙,并且不同編碼幀之間的峰值信噪比(PSNR)波 動很大。2、通過預先定義不同層B幀與P幀編碼比特數的目標比例來分配編碼比特數,并 伸縮(Scale)由P幀的統計結果得到的二次R-Q模型用于不同時域層的B幀。該方法雖然 可以獲得較為精確的碼率控制結果,但是,由于不同層B幀與P幀編碼比特數的目標比例、二次R-Q模型的伸縮比例都需要預先設定,并不能自適應于不同的編碼序列。 綜上所述,針對分層B幀編碼結構的碼率控制,目前的JVT-G012算法及其改進算
法在性能上都存在缺陷。
發明內容
本發明的目的在于克服現有技術的不足,提供一種基于H. 264分層B幀編碼結構 的碼率控制方法,能夠克服JVT-G012碼率控制算法及其改進算法在性能上存在的缺陷,實 現對分層B幀編碼結構最有效的碼率控制。本發明解決其技術問題是采取以下技術方案實現的一種基于H. 264分層B幀編碼結構的碼率控制方法,用于依次對當前GOP中的每 個編碼幀進行碼率控制,包括如下步驟(1)在編碼第i個GOP的初始階段,利用可用信道帶寬、第i_l個GOP的目標比特 數和實際編碼比特數之差計算為每個GOP分配的目標比特數;(2)在為第i個GOP分配目標比特數之后,進行時域層級比特分配,利用第i-Ι個 GOP的編碼結果計算第i個GOP的所有時域層的權重系數,并以此計算為每個時域層分配的 目標比特數;(3)在完成第k個時域層編碼之后根據其編碼結果對剩余未編碼時域層分配的目 標比特數進行調整;(4)在編碼當前時域層第1個編碼幀的初始階段,通過利用目標緩沖器水平、實際 的緩沖器占用量、可用信道帶寬、幀率和當前時域層剩余比特數計算給當前編碼幀分配的 比特數;(5)在計算出為當前編碼幀分配的比特數之后,采用多MAD預測模型來預測當前 編碼幀MAD,采用多二次R-Q模型計算當前編碼幀量化步長并轉換為QP,最后將QP值經過 調整得到碼率控制模塊的輸出。而且,在步驟⑵中,第i個(i = 2,3...)G0P第k個時域層的權重系數按如下公 式計算
n(k)r(k) . --U 1 = 2 a(i, k)=
^ n(m)/(m)
m=0
0.5 χ T x^dlelse
lTL
Z Xfl (/-1, w)
m=0其中,Xtl(i-1, k)是第i-1個GOP中第k層的編碼復雜度,n(k)是第k層的編碼 幀數目,&代表GOP中最高的時域層號,Y (k)是第k層編碼幀的初始權重系數。而且,所述的第k層編碼幀的初始權重系數Y (k)是通過實驗得到的,其取值如 下Il
Q
21 2
Oo ___
'1 if k = 0 0.5 if k = \ 0.4 if k = 2 0.3 if k 二 3 0.2 if k 而且,在步驟(3)中,在完成第k個時域層編碼之后根據其編碼結果對剩余未編碼 時域層分配的比特數進行調整的方法為對時域層為第k+j層(j = 1. . . LTL-k)按如下公式 計算
T(i,k + j): 二(“ + ■/)_χ_s、i,h) + T(i,k + j) ^ a(i, k + m)
m=\其中,ABits(i,k)是第k層的目標編碼比特數與實際編碼比特數之差。而且,在步驟(4)中,在計算給當前編碼幀分配的比特數過程中所涉及的第i 1 GOP第k個時域層的目標緩沖區水平下降幅度按如下公式計算
k) χ (^tbl (/ -1) - ^tbl (0) ABTBL(i,k) =
n(k) 其中BTBL(i)表示第i個GOP的目標緩沖器水平,其計算如下
ζ/ / = 2
else
「BL(Z.)“
buffer (2, 0,0)
N -\其中Np是二個I幀之間的P中貞總數,BBuffer (i,k,1)是在完成第i個GOP第k層中 的第,1幀編碼后的緩沖器占用量。而且,在步驟(5)中,對于當前編碼幀是關鍵幀的QP值按如下公式進行調整QP(i, 0,0) 二 mm{QP{i — 1,0,0) + v1 xmx{QP{i — 1,0,0)-v QP(i, 0,0)}}其中QP (i,k,1)和分別是調整前及調整后的QP值,V1取值如下 V,= <對于當前編碼幀是B幀的QP值按如下公式進行調整QP{u k,l) = min{QPR (i, k, /) + V2,max{QPR (/, k, /), QP(i, k,l)}}其中 =3力 1^,^1)是QP(i,k,l)的參考值,其定義如下QPk (i,k, 1) = max (QP1, QP2I其中,QP1和QP2分別是當前編碼幀的二個最鄰近參考幀的QP值。
6ifLTL =5ifLtl ~4if^TL =3ifLTL =
6
本發明的優點和積極效果是本發明碼在對當前編碼幀進行碼率控制時,首先計算為GOP分配的編碼比特數, 然后計算為當前時域層分配的編碼比特數,再計算幀級別編碼比特數,最后計算出QP。相對 于現有的碼率控制算法,本發明充分地利用分層B幀編碼結構的特點,可以更精確合理地 控制屬于不同時域層的編碼幀比特數,克服了 JVT-G012碼率控制算法及其改進算法在性 能上存在的缺陷,提高了碼率控制的準確性和編碼制質量,避免了不同編碼幀之間的峰值 信噪比(PSNR)的波動,能夠自適應不同的編碼序列,實現了對分層B幀編碼結構更有效的 碼率控制。
圖1為本發明所采用的碼率控制方法的流程圖;圖2為對QCIF的“Container”序列采用本實施例方法與JVT-G012算法及其它改 進算法仿真后的編碼性能比較示意圖;圖3為對QCIF的“Foreman”序列采用本實施例方法與JVT-G012算法及其它改進 算法仿真后的編碼性能比較示意圖;圖4為對CIF的“Bus”序列采用本實施例方法與JVT-G012算法及其它改進算法 仿真后的編碼性能比較示意圖;圖5為對CIF的“Football”序列采用本實施例方法與JVT-G012算法及其它改進 算法仿真后的編碼性能比較示意圖;圖6為對QCIF的“Foreman”序列在196kbps下采用本實施例方法與JVT-G012改 進算法仿真后的逐幀PSNR比較示意圖;圖7為對CIF的“Bus”序列在1500kbps下采用本實施例方法與JVT-G012改進算 法仿真后的逐幀PSNR比較示意圖。
具體實施例方式以下結合實例對本發明做進一步描述。為解決現有技術中存在的問題,本發明提出一種全新的基于H. 264分層B幀編碼 結構的碼率控制方法。由于低層編碼幀對整體編碼效率有相對更高的貢獻,所以應該給低 層的編碼幀分配更多的比特數,以提高高層編碼幀在進行運動估計時的效率;相反,應該給 高層編碼幀分配較少的比特數,因為高層編碼幀影響到的編碼幀相對低層而言要少。本發 明提出的方法充分利用了這些編碼結構特性,針對每個G0P,根據信道帶寬、幀率和緩沖器 狀態計算分配的目標比特數;采用了時域層級的比特數分配,保證不同的時域層分配到合 理的目標比特數;在此之后,在幀級別給關鍵幀以及分層B幀分配相應的目標比特數;最 后,根據目標比特數計算相應的QP并進行調整。相對于現有JVT-G012算法及其改進算法, 本控制方法對分層B幀編碼結構下的碼率控制更加有效。基于上述介紹,本發明所述方案的具體實現包括以下步驟(1)在編碼第i個GOP的初始階段,利用可用信道帶寬、第i_l個GOP的目標比特 數和實際編碼比特數之差計算為每個GOP分配的目標比特數;(2)在為第i個GOP分配目標比特數之后,進行時域層級比特分配,利用第i-Ι個GOP的編碼結果計算第i個GOP的所有時域層的權重系數,并以此計算為每個時域層分配的 目標比特數;(3)在完成第k個時域層編碼之后根據其編碼結果對剩余未編碼時域層分配的目 標比特數進行調整;(4)在編碼當前時域層第1個編碼幀的初始階段,通過利用目標緩沖器水平、實際 的緩沖器占用量、可用信道帶寬、幀率和當前時域層剩余比特數計算給當前編碼幀分配的 比特數;(5)在計算出為當前編碼幀分配的比特數之后,采用多MAD預測模型來預測當前 編碼幀MAD,采用多二次R-Q模型計算當前編碼幀量化步長并轉換為QP,最后將QP值經過 調整得到碼率控制模塊的輸出。為使本發明的目的、技術方案及優點更加清楚明白,以下舉實施例,對本發明進一 步詳細說明。如圖1所示,本發明所采用的碼率控制方法包括以下步驟步驟101 序列的第1幀為立即刷新幀(IDR),該幀獨立構成第1個G0P,采用 JVT-GO12中的方法分配初始QP,直接編碼該幀。步驟102 在編碼第i個GOP的初始階段,計算給整個GOP分配的目標比特數。考 慮了可用信道帶寬、幀率以及緩沖器狀態,其計算如下^gop (/) =X TVoop + Δ5 (/ -1)(1)其中TroP(i)表示分配給第i個GOP的比特數,u(i,0,0)是第i個GOP初始時刻可 用信道帶寬,F是幀率,Ntop是一個GOP里總的幀數,ΔΒ( -Ι)是第i_l個GOP的目標比特數 與實際編碼比特數之差。從該公式可以看到,后續GOP的編碼結果取決于之前的GOP——如 果上一個GOP目標編碼比特數大于實際值,那么當前GOP就可以多分配一些比特數,反之少 分配一些。換句話說,如果上一個GOP的實際編碼比特數超支,那么為本GOP分配的比特數 就要“承受”這種超支;如果上一個GOP的實際編碼比特數比目標值少,那么剩余的比特數 就可以留給本GOP使用,這樣就可以保證總體碼率控制的精度。需要注意的是,若當前GOP 是第二個G0P,由于第1個GOP只包含一個IDR幀,故公式(1)中的后半部分不考慮,采用下 式計算rG0P (2) =χ TVgop(2)步驟103 在為第i個GOP分配目標比特數之后,進行時域層級比特分配,利用第 i-Ι個GOP的編碼結果計算第i個GOP的所有時域層的權重系數。一方面,屬于不同層的編 碼幀有不同的R-D特性,另一方面,不同層包含的編碼幀數目也各不相同。考慮以上兩點因 素,第k個時域層的目標比特數計算如下T(i, k) = α (i, k) XTgop(i) (3)其中α (i,k)是第i個GOP (第1個GOP只含一個IDR幀,不予以計算)中第k層 的權重系數,在本發明中,其計算如下
8
其中Q(i,k,1)是第i個GOP第k層第1幀的QP值,B(i,k,1)是編碼該幀產生 的實際比特數。公式(3)和(6)中的n(k)是第k層的編碼幀數。采用公式(3)進行計算的原因是首先,若當前GOP為編碼序列中的第二個GOP中 (i = 2),通過實驗設定合適的權重系數初始值,使前幾個GOP的編碼性能有所保證;其次, 若當前GOP非編碼序列中的第二個G0P,其權重系數計算依賴于為之前一個GOP分配的權重 系數及該權重系數下的編碼結果(編碼復雜度),使得當前GOP的權重系數計算更為準確。步驟104 在完成第k個時域層編碼后,進行時域層級比特調整。與GOP級比特分 配相似,假如某層有剩余比特,余下的比特將被按比例分配給未編碼的時域層,以保證編碼 質量的最大化;假如該層實際的編碼比特數比預期多,那么余下的未編碼層將共同承受該 層比特數超支的影響。根據以上分析,在完成第k個時域層編碼之后,本發明采用如下公式 來對高于其的剩余未編碼時域層分配比特數進行更新
m-\
其中,ABits(i,k)是第k層的目標編碼比特數與實際編碼比特數之差,j = 1, 步驟105 在編碼第i個GOP的第k層的第1幀初始階段,進行幀級比特分配。與 JVT-G012相似,通過預先為每個編碼幀定義目標緩沖器占用量來實現比特分配。分配給i 個GOP第k層的第1幀的比特數通過目標緩沖器水平、幀率、可用信道帶寬以及實際的緩沖器占用量計算如下
(8)其中Y是常數,其典型值為0.25。F是幀率,u(i,k,l)是編碼第i個GOP第k層 的第1幀時的信道帶寬,Beuffer(i, k,1)是在完成第i個GOP第k層中的第1幀編碼后的緩 沖器占用量,Bm(i,k,1)表示目標緩沖器水平,其更新如下
(9)不同于JVT-G012,本發明中,目標緩沖區水平下降幅度ABm(i,k)計算如下
10)其中BTBL(i)表示第i個GOP的目標緩沖器水平,其計算如下 其中Np是二個I幀之間的P幀總數。從公式(10)可以看到,與JVT-G012不同,由于不同時域層的B幀編碼產生出的比 特數各不相同,因此本發明中的緩沖器控制方法并不是控制整個緩沖器占用量在完成每幀 編碼后以相同的幅度下降。不同層的緩沖器下降幅度根據各層權重系數決定,在相同層內 的下降幅度相同。同時,分配給每幀的比特數必須考慮時域層的目標比特數 其中尹和分別代表編碼第i個GOP第k層中第1幀前的剩余比特數 及剩余未編碼幀數目。最終分配給每幀的目標比特數是PFrame(i·,、/)和fFrame(/,A;,/)的一個加權和
(13)其中β是常數且典型值為0. 9,該值的選取與JVT-G012 —致。步驟106 在第i個GOP的第k層的第1個編碼幀比特數分配完成之后,進行QP計 算。采用經典的二次R-Q模型計算量化參數
(14)其中R'是分配給當前編碼幀的總比特數,H代表頭信息,Mf是當前幀MAD的預測 值,X1和X2是兩個模型參數。計算得到的量化步長Q經過轉化得到QP。
因為不同時域層內的編碼幀具有不同的R-D特性,因此針對不同層,采用不同的 R-Q模型。也就是說,模型參數是將與當前編碼幀相同層內的已編碼幀的實際編碼比特數及 量化步長作為歷史數據,使用線性回歸方法更新得到。頭信息采用相同層內前一個編碼幀的實際頭信息值作為預測值。MAD預測方法采 用的是JVT-G012中提出的線性預測模型。為了獲得準確的預測結果,編碼幀在各自層上使 用各自的線性預測模型進行更新。為獲得較為平滑的編碼質量,通過R-Q模型計算得到的QP還要進行調整。如果當
前編碼幀是關鍵幀,調整過程如下
QPiU 0,0) = mm{QP{i — 1,0,0) + v max {QP(i -1,0,0)-v,, QP(i, 0,0)}} (15)其中QP(i,k,1)和分別是調整前及調整后的QP值。在JVT-G012中,
V1設置為2。對于分層B幀編碼結構,在兩個關鍵幀之間插入的B幀數越多,意味著兩個關 鍵幀之間的距離就越遠,兩者間的相關度就越低,故V1的值就應該越大。本發明通過實驗 得到以下經驗值 V1 = <
ifLfl = 4if厶 TL = 3ifLpl = 2(16)ifLjl = 1
5 4 3
ν如果當前編碼幀是B幀,其調整流程如下
QP(i, k, /) = min {QPR (ζ, k,l) + v2, max {QPR (i, kj), QP(i, k,l)}} (17)其中 為經驗值,在本發明中取值為3;QPK(i,k,l)是QP(i,k,l)的參考值,其定 義如下QPk (i,k, 1) = max (QP1, QP2I (18)其中QP1和QP2是當前編碼幀的二個最鄰近參考幀的QP值。由公式(17)及(18) 可以看到,處于上層的B幀分配到的QP值必須大于或者等于較低的時域層,這是因為越上 層的B幀對整個序列的編碼效率貢獻越小,所以應該給它們分配更大的QP。步驟107 采用分配到的QP值編碼當前幀。步驟108 判斷序列是否結束,是則結束碼率控制流程,否則進入步驟109。步驟109 判斷當前GOP是否編碼完畢,是則轉入步驟102,否則進入步驟110。步驟110 判斷當前時域層是否編碼完畢,是則轉入步驟104,否則轉入步驟105。至此,即完成了本發明所述的分層B幀碼率控制方法的過程。以H. 264參考軟件JM14. 2作為平臺,仿真了所提出的碼率控制算法。為了驗證該 算法的性能,本發明還與碼率控制算法JVT-G012、針對分層B幀編碼結構的碼率控制改進 算法JVT-W042中的模式3以及JVT-P014中所提出的Cascading QP算法性能進行比較。實驗的編碼幀率為30fps,兩個關鍵幀之間插入的B幀數目為7 ;運動估計的精度 設置為1/4,搜索范圍為16,參考幀的個數為1。開啟CABAC編碼模式以及RD0。實驗選擇
11的測試序列為 QCIF 序列 “Container” 和 “Foreman” 以及 CIF 序列 “Bus” 和 “Football”。圖2 圖5展示了 4個測試序列的R-D性能曲線。其中,JVT-GO12, JVT-PO14中 的Cascading QP的方法、JVT-W042中的模式3以及本發明所提出的碼率控制算法在圖中 分別標識為“6012”,叩014”,“1042”以及“本發明算法”。從圖中可以看出,針對分層B幀 編碼結構,與傳統碼率控制JVT-G012相比,本發明所提出的碼率控制算法可以獲得相當可 觀的編碼增益,例如2000kbps下的“Football”序列PSNR增益達到1. 4dB。與Cascading QP的方法以及JVT-W042里的模式3比較,本發明提出的算法也獲得了更高的編碼質量。圖6及圖7分別展示了“Foreman”序列在目標碼率為196kbps下以及“Bus”序列 在1500kbps下前16個GOP的逐幀亮度PSNR比較圖。圖中給出了 W042模式3、Cascading QP的算法以及本發明算法的測試結果。從圖中可以看出,絕大部分情況下,本發明算法的 PSNR都要高于另外兩種算法。同時可以觀察到,在同一個GOP內,Cascading QP算法PSNR 波動很大,W042次之,而本發明算法獲得的結果相對穩定。表1 表4分別列出了 4個序列的具體編碼結果,從中可以看到,本發明所提出的 碼率控制方法可以得到比其它方法更精確的控制結果,目標碼率與實際碼率之間的誤差在 2%以內;同時,針對不同序列的不同目標碼率值,本發明算法都可以獲得比另外3種算法 更高的亮度PSNR值。表1 “Container”序列編碼結果 表2 “Foreman”序列編碼結果
表3 “Bus”序列編碼結果 總之,本發明碼率控制方法在對分層B幀編碼結構進行碼率控制時,首先,利用緩 沖器狀態、信道帶寬、幀率計算為每個GOP分配的比特數;其次,利用之前一個GOP的編碼信 息計算為當前GOP中的每個時域層分配的比特數,并在完成每個時域層編碼之后根據該時 域層的編碼結果對剩余未編碼時域層分配的比特數進行調整;接著,根據目標緩沖器水平 以及實際緩沖器充溢狀態、信道帶寬、幀率,對每個編碼幀分配編碼比特數;最后,采用線性 MAD預測模型及二次R-Q模型計算當前編碼幀量化步長,在將該量化步長轉換成QP之后,做 進一步的調整。采用本發明所述的方法,相對于現有的碼率控制方法,可以更有效地利用分 層B幀編碼結構特點,克服了 JVT-G012碼率控制算法應用于分層B幀編碼結構時存在的缺 陷,實現最有效的碼率控制。需要強調的是,本發明所述的實施例是說明性的,而不是限定性的,因此本發明并 不限于具體實施方式
中所述的實施例,凡是由本領域技術人員根據本發明的技術方案得出 的其他實施方式,同樣屬于本發明保護的范圍。
1權利要求
一種基于H.264分層B幀編碼結構的碼率控制方法,其特征在于用于依次對當前GOP中的每個編碼幀進行碼率控制,包括如下步驟(1)在編碼第i個GOP的初始階段,利用可用信道帶寬、第i 1個GOP的目標比特數和實際編碼比特數之差計算為每個GOP分配的目標比特數;(2)在為第i個GOP分配目標比特數之后,進行時域層級比特分配,利用第i 1個GOP的編碼結果計算第i個GOP的所有時域層的權重系數,并以此計算為每個時域層分配的目標比特數;(3)在完成第k個時域層編碼之后根據其編碼結果對剩余未編碼時域層分配的目標比特數進行調整;(4)在編碼當前時域層第l個編碼幀的初始階段,通過利用目標緩沖器水平、實際的緩沖器占用量、可用信道帶寬、幀率和當前時域層剩余比特數計算給當前編碼幀分配的比特數;(5)在計算出為當前編碼幀分配的比特數之后,采用多MAD預測模型來預測當前編碼幀MAD,采用多二次R Q模型計算當前編碼幀量化步長并轉換為QP,最后將QP值經過調整得到碼率控制模塊的輸出。
2.根據權利要求1所述的一種基于H.264分層B幀編碼結構的碼率控制方法,其特征 在于在步驟(2)中,第i個(i = 2,3...)G0P第k個時域層的權重系數按如下公式計算 其中,Xtl(i-l, k)是第i-1個GOP中第k層的編碼復雜度,n(k)是第k層的編碼幀數 目,&代表GOP中最高的時域層號,Y (k)是第k層編碼幀的初始權重系數。
3.根據權利要求2所述的一種基于H. 264分層B幀編碼結構的碼率控制方法,其特征 在于所述的第k層編碼幀的初始權重系數γ (k)是通過實驗得到的,其取值如下
4.根據權利要求1所述的-種基于H. 264分層B幀編碼結構的碼率控制方法,其特征 在于在步驟(3)中,在完成第k個時域層編碼之后根據其編碼結果對剩余未編碼時域層分 配的比特數進行調整的方法為對時域層為第k+j層(j = 1. . . LTL-k)按如下公式計算 其中,ABits(i,k)是第k層的目標編碼比特數與實際編碼比特數之差。
5.根據權利要求1所述的一種基于H.264分層B幀編碼結構的碼率控制方法,其特征 在于在步驟(4)中,在計算給當前編碼幀分配的比特數過程中所涉及的第i個GOP第k個 時域層的目標緩沖區水平下降幅度按如下公式計算 其中Bm(i)表示第i個GOP的目標緩沖器水平,其計算如下 召孤⑴召孤⑵-W2’0’0)x(/-1) else 其中Np是二個I幀之間的P幀總數,BBuffCT(i,k,1)是在完成第i個GOP第k層中的第 1幀編碼后的緩沖器占用量。
6.根據權利要求1所述的一種基于H.264分層B幀編碼結構的碼率控制方法,其特征 在于在步驟(5)中,對于當前編碼幀是關鍵幀的QP值按如下公式進行調整 其中QP (i,k,1)和A:,/)分別是調整前及調整后的QP值,V1取值如下 對于當前編碼幀是B幀的QP值按如下公式進行調整QPiUKI) = min{QPr(i,k,l) + v2,max{QPK(i,k,I),QP{i,k,l)}}其中V2 = 3 ;QPE(i,k, 1)是QP(i,k,1)的參考值,其定義如下 QPk (i,k,D=HiaxiQP1, QP2I其中,QP1和QP2分別是當前編碼幀的二個最鄰近參考幀的QP值。
全文摘要
本發明公開了一種基于H.264分層B幀編碼結構的碼率控制方法,用于依次對當前GOP中的每個編碼幀進行碼率控制,包括步驟(1)根據信道帶寬、幀率和之前一個GOP的目標比特數和實際編碼比特數之差計算為每個GOP分配的比特數;(2)利用之前一個GOP的時域層編碼信息計算為當前GOP中的時域層分配的比特數;(3)在對時域層完成編碼之后根據其編碼結果對剩余未編碼時域層分配的比特數進行調整;(4)對每個編碼幀分配編碼比特數;(5)計算當前編碼幀量化步長,在將該量化步長轉換成QP之后,做進一步的調整得到碼率控制模塊的輸出。本發明充分利用了分層B幀編碼結構的特點,克服了JVT-G012碼率控制算法及其改進算法在性能上的缺陷,實現對分層B幀編碼結構更有效的碼率控制。
文檔編號H04N7/50GK101917614SQ201010190719
公開日2010年12月15日 申請日期2010年6月3日 優先權日2010年6月3日
發明者葉鋒, 宗曉飛, 常侃, 張文豪, 楊波, 邸金紅, 門愛東, 韓鈺 申請人:北京郵電大學