吳曉光,李國平,王國中,滕國偉,趙海武
(上海大學 通信與信息工程學院,上海 200072)
基于視頻并行編碼的碼率控制算法研究
吳曉光,李國平,王國中,滕國偉,趙海武
(上海大學 通信與信息工程學院,上海 200072)
基于并行編碼的特點,現(xiàn)有的基于串行編碼的碼率控制算法有其局限性,不能直接應用于并行編碼。提出一種新的碼率控制算法,在編碼前將原始幀作為參考幀計算出各幀的SAD,然后利用已計算的SAD進行幀級比特分配和動態(tài)預測并行編碼幀的比特,實現(xiàn)了并行編碼的碼率控制。通過測試基于串行編碼的碼率控制和提出的碼率控制方案下PSNR和VBV情況,說明所提算法的可行性。
并行編碼;碼率控制;比特預測;比特分配
高清、超高清編碼技術的出現(xiàn),極大地提高了人們的視覺體驗,因此得到了廣泛應用。與此同時編碼復雜度的增加和對實時性的要求為編碼器的實現(xiàn)提出了極大的挑戰(zhàn)。并行編碼技術是解決高復雜度、實時編碼的有效方法,因此成為國內(nèi)外學者的研究熱點。目前并行編碼還處于研究階段,沒有一個公認的并行編碼框架。針對圖像的不同結構層次(GOP,F(xiàn)rame,Slice,Macroblock)有其對應的并行編碼模式[1],但這些方法的并行化程度不夠高。WPP[2]和Tiles[3]并行技術是HEVC針對并行編碼所提出的,但此方法只適用于HEVC標準,同時存在碼率分配難以處理的問題。文獻[4]提出了一種視頻并行編碼框架,極大地提高了并行化程度,在PSNR下降0.01~0.12 dB的前提下,加速比可達到12[5]。因此,本文基于該編碼框架實現(xiàn)并行編碼的碼率控制,其算法思想也可應用于其他的并行編碼框架。
為確保編碼產(chǎn)生的可變碼流能夠在有限帶寬的信道順利傳輸,需根據(jù)緩沖區(qū)情況對碼率進行控制。傳統(tǒng)經(jīng)典的碼率控制算法包括TM5,TMN8以及VM8等,還有一些基于上述碼率控制的優(yōu)化算法,以滿足視頻傳輸應用中的碼率要求。上述各種碼率控制方法針對不同的應用環(huán)境往往能有比較理想的效果,但這些碼率控制算法都是基于串行編碼框架。在視頻并行編碼中,由于并行編碼有多幀數(shù)據(jù)同時進行編碼,在編碼當前幀時,其之前的多幀未能產(chǎn)生實際編碼比特數(shù),無法確定當前幀的緩沖區(qū)情況,因此需要對這些并行編碼幀的比特開銷進行預測。如果采用傳統(tǒng)的碼率控制方法,利用之前幀的信息來預測當前幀的比特,當并行編碼幀數(shù)較多時,對并行編碼幀比特開銷的預測將會產(chǎn)生很大誤差。基于這個特點,限制了傳統(tǒng)碼率控制算法的使用,因此并行編碼的碼率控制一直是困擾并行編碼發(fā)展的難題。本文提出了一種新的碼率控制算法以解決這個問題。
此外,H.264/AVC引入了率失真優(yōu)化(RDO)技術,對宏塊執(zhí)行RDO,需要由碼率控制才能確定的QP作為輸入;對宏塊執(zhí)行碼率控制,需要MAD作為輸入,然而MAD只有在RDO運行后才能獲得,形成了“蛋雞悖論”問題。為解決這個問題, JVT-F086[6]提案采用兩次編碼的方式,但大大增加了編碼的復雜度。JVT-G012[7]提案利用前一幀中相同位置基本單元的MAD值線性預測當前基本單元的MAD ,如果并行編碼的碼率控制也采取該方法,編碼圖像失真將會加大。本文提出的方法,在編碼前將原始幀作為參考幀計算出各幀的絕對差值和(SAD),在碼率控制過程中利用已計算的SAD作為輸入確定QP,解決了悖論問題。同時由于SAD不是由預測得到,對并行編碼幀比特開銷的預測不會產(chǎn)生很大誤差,因此使得提出的碼率控制算法更加準確。實驗結果表明,該算法在保證圖像質(zhì)量的基礎上解決了并行編碼碼率控制的難題。
1.1 傳統(tǒng)編碼框架
如圖1所示,傳統(tǒng)的視頻編碼框架在編碼當前幀時需要將重建幀作為參考幀進行運動估計和運動補償,它所構成的反饋回路極大地限制了編碼的并行化程度。

圖1 傳統(tǒng)的視頻編碼框架
1.2 并行編碼框架
本文所采用的并行編碼框架如圖2所示[4],針對原始序列,并行預處理模塊在進行去平滑濾波、噪濾波等預處理的基礎上,通過相關性參數(shù)的計算對序列進行場景檢測和判斷幀類型[4]。由于各幀之間相互獨立,可以并行處理。

圖2 并行視頻編碼框架
并行運動估計模塊利用預處理模塊中已經(jīng)獲得的各幀的幀類型,將原始幀作為參考幀通過整像素運動估計計算整像素運動矢量MV′,每幀運動估計結束后進入編碼模塊。這種并行運動估計極大地提高了整個編碼框架的并行性,將編碼最耗時的整像素運動估計并行處理,提高了編碼效率。
并行編碼模塊中采用隔行編碼的方式,每個場作為一個slice,各個場之間獨立進行具有參考依賴性的幀間編碼[8]。進行宏塊模式選擇后將MV′作為起點進行亞像素搜索,最終得到運動矢量MV。然后再經(jīng)過運動補償,變換量化以及熵編碼得到碼流。
傳統(tǒng)的串行視頻編碼碼率控制在編碼當前幀之前, 需要更新當前緩存區(qū)內(nèi)的比特數(shù)
(1)

(2)

在整像素并行運動估計模塊計算當前并行編碼各幀的SAD。在進行碼率控制時,利用已計算的SAD作為輸入來確定QP,再由確定的QP進行編碼,解決了“蛋雞悖論”;同時利用已計算的SAD對并行編碼各幀的比特進行動態(tài)預測,解決了傳統(tǒng)碼率控制的局限性。
其中SAD的計算如式(3)所示
(3)
式中:A代表像素區(qū)域;Sk[x,y]為視頻圖像在[x,y]位置的像素值;Pk[x,y]為根據(jù)事先設定方法及參考圖像對Sk[x,y]的預測值。
3.1 幀級比特分配
我們可以根據(jù)在并行運動估計中得到的當前幀的SAD來進行幀級目標比特分配。如式(4)所示
(4)
式中:Ti為第i幀分配的目標比特數(shù);SADi為第i幀的SAD值;SADgroup為一組幀數(shù)固定的圖像的總SAD值,它是一個不斷更新的數(shù)值,每編完一幀就從SADgroup中減去該幀的SAD值,開始編碼下一幀時加上該幀的SAD,從而保持這組圖像的幀數(shù)恒定;bitgroup為對應這組圖像的剩余目標比特數(shù)。
3.2 動態(tài)預測幀比特數(shù)模型
對并行編碼各幀的編碼比特數(shù)的動態(tài)更新,創(chuàng)建模型如式(5)所示
(5)
式中:Bits為當前單元的預測比特數(shù);SAD和QP分別表示當前單元的SAD值(已在并行運動估計模塊計算得出)和QP值。coeff為一個復雜度系數(shù),其值如式(6)所示
(6)
式中:QP′和SAD′分別表示前一宏塊行的平均QP值和SAD值;bits表示前一宏塊行實際的編碼比特數(shù);count為更新次數(shù)。count和coeff使用衰減系數(shù)進行更新。如式(7)和式(8)所示
count″=count′×decay+1
(7)
coeff″=coeff′×decay+coeff
(8)
式中:count″和coeff″表示更新后的值;count′和coeff′表示更新前的值;decay為衰減因子。coeff如式(6)計算。
3.3 動態(tài)更新緩沖區(qū)參數(shù)
并行編碼的各幀編碼結束后都將進入同一緩沖區(qū),為及時了解緩沖區(qū)情況,避免緩沖區(qū)上溢或者下溢,需動態(tài)更新并行編碼各幀的緩沖區(qū)參數(shù),如圖3所示。
1)每幀編完一行宏塊都將根據(jù)式(6)更新其coeff,然后根據(jù)coeff以及剩余宏塊行的SAD和QP按式(5)計算并預測當前幀剩余部分的比特。
2)并行編碼的各幀每編碼一行宏塊都將執(zhí)行上述步驟1),由當前幀已編碼的比特數(shù)和步驟1)預測的剩余比特數(shù),作為當前幀的預測比特數(shù),然后根據(jù)式(2)更新當前幀的緩沖區(qū)參數(shù)。并行編碼幀緩沖區(qū)參數(shù)的動態(tài)更新如圖3所示。

圖3 并行編碼幀緩沖區(qū)參數(shù)動態(tài)更新示意圖
3.4 并行碼率控制算法流程
并行碼率控制算法具體步驟如下:
1)根據(jù)獲得的整幀目標比特數(shù)Ti,以及當前幀的SAD,由式(5)可以得到當前幀的初始QP值。
2)在并行編碼的各幀,每編碼一行宏塊之后,按照式(6)~(8)進行coeff更新,然后根據(jù)coeff以及SAD和QP按式(5)計算并預測當前幀剩余部分的比特。
3)由當前幀已編碼的比特數(shù)和步驟2)預測的剩余比特數(shù),作為當前幀的預測比特,根據(jù)當前幀預測值與目標分配比特的差,同時考慮當前幀的緩沖區(qū)情況調(diào)整QP值,得到下一行的QP值。
4)根據(jù)當前幀更新后的coeff和調(diào)整后的QP值,重新預測當前幀的比特數(shù),按照式(2)更新所有正在并行編碼幀的緩沖區(qū)。
5)對于并行編碼的各幀,循環(huán)計算步驟2)~4)。
為了驗證所提出的碼率控制算法可行性,本文采用廣電總局廣播科學規(guī)劃院6個1 920×1 080的高清序列作為測試序列:volleyball,dial,parterre,basketball,leaf,birdcage。并行編碼的多線程條件為:總線程數(shù)24,幀間線程數(shù)12。本文算法在加速比可達到12的前提下,通過測試基于串行編碼的碼率控制和本文提出的基于并行編碼的碼率控制兩種條件下PSNR和VBV緩沖區(qū)情況,證明所提出算法的可行性。在下面試驗中,串行條件是基于串行編碼的碼率控制方法,并行條件是本文提出的基于并行編碼的碼率控制方法。
4.1PSNR對比
本文對6個高清序列進行測試,設置運動估計參數(shù)為ME2,亞像素搜索參數(shù)為2,比特率為12 000 kbit/s。首先給出6個序列在串行和并行碼率控制下的平均PSNR數(shù)值,如表1所示。
表1 串行和并行條件下測試序列的平均PSNR
dB

條件parterredialvolleyballbasketballleafbirdcage串行248891624799933240697324019424908443243006并行248906424799123240461324002124827293242139
從表1可以看出,并行條件下的平均PSNR與串行條件下的比較,性能下降在0.01~0.12 dB,屬于可以接受的范圍,說明本文算法在并行編碼多幀時沒有擴大誤差,圖像質(zhì)量仍在理想范圍內(nèi)。
為了能更直觀地分析每個序列在串行碼率控制和并行碼率控制條件下的率失真情況,筆者繪制在并行和串行碼率控制方案下各個序列250幀的亮度分量編碼率失真對比曲線圖,如圖4所示。

圖4 測試序列在不同碼率控制條件下的每幀PSNR
由上述測試序列每幀PSNR對比圖可以看出,并行條件下每幀PSNR性能基本與串行條件下接近,符合實際應用的需求,解決了并行編碼的碼率控制的難題。
4.2VBV緩沖區(qū)占有度對比
對于并行編碼系統(tǒng)下的碼率控制方案,除了測試PSNR性能,還需要從VBV緩沖區(qū)的充溢程度來考察其性能。對6個不同高清序列每幀的VBV情況分別在串行和并行條件下進行測試,得到如圖5所示6組對比曲線圖。
由每幀VBV緩沖情況對比圖可以看出,并行條件下VBV沒有上溢和下溢,每幀VBV情況基本與串行條件下接近,說明對并行編碼幀的比特預測相對準確,保證了碼率控制的精確性。
本文首先分析傳統(tǒng)碼率控制方案應用于并行編碼框架的局限性,然后研究了基于并行編碼的碼率控制方案,根據(jù)并行編碼的特性,通過幀級比特分配和動態(tài)預測幀比特來進行并行碼率控制。最后通過測試串行和并行條件下PSNR和VBV緩沖區(qū)來說明本文提出的算法解決了并行編碼碼率控制的難題。

圖5 測試序列在不同碼率控制條件下的每幀VBV緩沖情況
[1] GE S,TIAN X,CHEN Y K.Efficient multithreading implementation of H.264 encoder on Intel hyper-threading architectures[C]//Proc. 2003 Joint Conference of the Fourth International Conference.Singapore:IEEE Press,2003:469-473.
[2] CHING C, ALVAREZ-MESA M,JUURLINK B.Parallel scalability and efficiency of HEVC parallelization approaches[J]. IEEE Trans. Circuit and System for Video Technology,2012,22(12):1827-1838.
[3] FULDSETH A,HOROWITZ M,XU S L.Titles for managing computational complexity of video encoding and decoding[C]//Proc. Picture Coding Symposium(PCS).Krakow:IEEE Press,2012:382-392.
[4] JIANG Xiaochen,LI Guoping.A novel parallel video coding framework for AVS+ real time encoder[C]//Proc.Pacific-Rim Conference on Multimedia.Nanjing:Springer International Publishing,2013:170-179.
[5] 蔣驍辰,李國平.基于AVS+實時編碼的多核并行視頻編碼算法[J].電子與信息學報,2014,36(4):810-816.
[6] MA Siwei,GAO Wen,LU Yan,et al.Proposed draft description of rate control on JVT standard[EB/OL].[2015-05-02]. http://ftp3.itu.ch/av-arch/jvt-site/2002_12_Awaji.
[7] LI Zhengguo,PAN Feng,LIM K P,et al.Adaptive basic unit layer rate control for JVT[EB/OL].[2015-04-14].http://wftp3.itu.int/av-arch/jvt-site/2003_03_Pattaya/JVT-G12r1.zip.
[8] 于俊清,李江,魏海濤.基于同構多核處理器的H264多粒度并行編碼器[J].計算機學報,2009,32(6):1100-1109.
吳曉光(1990— ),碩士生,主研視頻編解碼技術;
李國平(1974— ),博士,碩士生導師,主要研究方向為數(shù)字音視頻編解碼技術、復用技術、網(wǎng)絡傳輸技術等;
王國中(1962— ),博士,教授,博士生導師,研究領域為視頻編解碼與多媒體通信、數(shù)字電視、視頻云計算等。
責任編輯:時 雯
Research of Rate Control Algorithm Based on Parallel Video Coding
WU Xiaoguang,LI Guoping,WANG Guozhong,TENG Guowei,ZHAO Haiwu
(CollegeofCommunicationandInformationEngineering,ShanghaiUniversity,Shanghai200072,China)
Based on the characteristics of parallel video coding, traditional rate control algorithm can not be applied to parallel coding framework directly due to its limitation.In this paper, a rate control algorithm is proposed, in which theSADis calculated before video coding and the original frame is used as reference frame. Then the rate control algorithm is accomplished by using theSADto allocate frame-level bits and predict those frame bits which be coded simultaneously.Experimental results demonstrate the feasibility of the scheme by testingPSNRandVBVunder condition of serial and parallel rate control.
parallel coding;rate control;bit prediction;bit allocation
國家自然科學基金項目(61271212);上海市科委重點項目資助項目(12511502502)
TN919.8
A
10.16280/j.videoe.2015.16.021
2015-06-24
【本文獻信息】吳曉光,李國平,王國中,等.基于視頻并行編碼的碼率控制算法研究[J].電視技術,2015,39(16).