薛煒澎,肖鐵軍,喻金華
(江蘇大學(xué) 計算機科學(xué)與通信工程學(xué)院,江蘇 鎮(zhèn)江 212013)
DNxHD視頻編碼的碼率控制算法及其FPGA實現(xiàn)
薛煒澎,肖鐵軍,喻金華
(江蘇大學(xué) 計算機科學(xué)與通信工程學(xué)院,江蘇 鎮(zhèn)江 212013)
碼率控制是視頻編碼中的關(guān)鍵問題,而碼率控制實質(zhì)上是對給定碼率要求下的率失真進行優(yōu)化的問題。為了滿足高速場合實時性需求,采用流水線結(jié)構(gòu),以及運算器時分復(fù)用策略,改進了DNxHD編碼的碼率控制算法,以使其適合在FPGA上實現(xiàn)。實驗結(jié)果表明,該算法在FPGA上運行穩(wěn)定,并有較好的碼率控制效果。
DNxHD;FPGA;碼率控制;流水線
Avid DNxHD(Digital Nonlinear Extensible High Definition)是由艾維德公司獨立開發(fā)的高清視頻壓縮編碼算法,主要應(yīng)用于廣電行業(yè)后期制作。2009年4月,國際SMPTE(Society of Motion Picture and Television Engineers)協(xié)會正式將DNxHD編碼確定為VC-3(Video Compression)標(biāo)準(zhǔn)的基礎(chǔ)格式[1],推動了高清后期制作和高清廣播電視發(fā)展的行業(yè)標(biāo)準(zhǔn)化。與攝像機輸出的原始數(shù)據(jù)相比,DNxHD占用的帶寬和存儲資源更少,使得在高清節(jié)目制作中用網(wǎng)絡(luò)化的環(huán)境來取代線性編輯流程成為可能;與其他編碼標(biāo)準(zhǔn)相比,DNxHD擁有解碼后更好的畫質(zhì)。
目前包括中央電視臺在內(nèi)的眾多國內(nèi)外電視臺將DNxHD用于后期高清節(jié)目后期制作。由于高清視頻原始數(shù)據(jù)量大,直接進行記錄是不現(xiàn)實的,因此在大部分情況下攝像機采集后記錄在硬盤或磁帶上的視頻素材是經(jīng)過壓縮的,若攝像機的壓縮格式與后期處理的壓縮格式不同,則在后期處理之前還要經(jīng)過一個解碼再編碼的過程,這個過程無疑會造成數(shù)據(jù)丟失。為制作出圖像更精美的視頻節(jié)目,有必要保持前端與后端碼流的一致性,這就需要一種能夠便攜、實時進行DNxHD編碼的解決方案。由于專業(yè)領(lǐng)域不同于民用領(lǐng)域,目前市場上沒有針對DNxHD編碼的專用芯片。隨著技術(shù)的發(fā)展,圖像傳感器的分辨率越來越高,基于單片機的方案對于高分辨率視頻數(shù)據(jù)無法滿足實時處理的要求。FPGA(Field-Programmable Gate Array)由于其自身的特點適合進行視頻相關(guān)的處理,目前國外有廠商推出了采用FPGA實現(xiàn)DNxHD編碼功能的知識產(chǎn)權(quán)核[2],但其硬件實現(xiàn)處于技術(shù)封鎖狀態(tài);國內(nèi)針對這方面的研究才剛剛起步。因此研究DNxHD編碼的FPGA實現(xiàn)具有一定意義。本文主要對DNxHD編碼算法中的碼率控制算法[3]進行了研究和改進從而適合在FPGA上實現(xiàn)。
在編碼過程中,若連續(xù)多幀圖像的輸出比特數(shù)總大于期望比特數(shù),會導(dǎo)致不必要的跳幀;相反,若連續(xù)多幀圖像的輸出比特數(shù)總小于期望比特數(shù),既浪費信道傳輸帶寬又可能導(dǎo)致緩沖區(qū)下溢[4]。
一幅待壓縮的圖像被分成N個編碼單元,對N個編碼單元中的系數(shù)進行離散余弦變換和量化;使用量化參數(shù)Qi量化之后的數(shù)據(jù)進行編碼得出的碼率為Ri,編碼數(shù)據(jù)在解碼端數(shù)據(jù)重建與原始數(shù)據(jù)之間存在失真Di,假設(shè)一幀中所有的編碼單元的失真Di具有可加性,則整幅圖像的失真可表示為[5]
整幅圖像編碼后的碼率可表示為[6]
給定碼率限制的碼率控制的目的是在滿足碼率要求的前提下達到失真最小,即
minDtotal{Rtotal 針對像這樣受限的優(yōu)化問題有一個解決方法,即拉格朗日算子優(yōu)化法[7],即該問題等同于式(4)最小 J=Rtotal+λDtotal (1) 而對于式(1)的最小化問題可歸結(jié)為每個編碼單元的最小化問題,即對每一個編碼單元找到一個Qi使得式(2)最小 (2) 但拉格朗日算子優(yōu)化法只給出了針對固定的λ的優(yōu)化方法,并未給出λ的產(chǎn)生方式,在DNxHD編碼中通過二分搜索來產(chǎn)生合適的λ[8]。 1.1 基于二分法的率失真截取 根據(jù)信息率失真理論D(R)對R具有非負(fù)性和嚴(yán)格下凸性[9],圖1中標(biāo)注的即為率失真曲線。 圖1 率失真曲線 如圖連接點P1、P2求出直線斜率λ,以λ為算子進行拉格朗日算子優(yōu)化,得到新的點P3(R3,D3),根據(jù)拉格朗日定理可知這一點也在率失真曲線上[10],如圖R3 1.2 壓縮后率失真優(yōu)化 為實現(xiàn)正確的二分搜索,需接近理論值的率失真曲線。在DNxHD編碼算法中,每個編碼單元在不同的編碼參數(shù)下的碼率通過編碼進行準(zhǔn)確計算,失真則是利用如式(3)的失真模型[11]進行估計,其中χ為失真模型參數(shù),Dmin、Rmax為率失真曲線最接近R軸的點的坐標(biāo)值,Dmax、Rmin為率失真曲線最接近D軸的點的坐標(biāo)值 (3) 1.3AvidDNxHD中的碼率控制過程 AvidDNxHD編碼算法中的碼率控制算法步驟如下: 步驟1 使用1~128之間為2的整數(shù)次冪的量化值進行編碼,并計算其對應(yīng)的編碼消耗Rtotal。 步驟2 將得出的編碼消耗與編碼消耗上限Rbudget進行比較,得出編碼消耗與Rbudget最接近的量化值,并計算該量化值與前后量化值的幾何平均值作為新的量化值Qi_new。 步驟3 使用插值計算估計Qi_new的編碼消耗。 步驟4 進行壓縮后率失真優(yōu)化,為每一個編碼單元分配編碼參數(shù)。 步驟5 根據(jù)編碼參數(shù)進行編碼并監(jiān)控緩沖區(qū),若溢出轉(zhuǎn)步驟6,若一幀編碼結(jié)束不溢出則結(jié)束。 步驟6 使用Qi_new進行編碼,計算準(zhǔn)確的編碼消耗,轉(zhuǎn)步驟4。 DNxHD視頻編碼的碼率控制算法中的一些策略不適合FPGA實現(xiàn),本文結(jié)合FPGA特點作出一些改進,使其在不影響編碼效果的前提下適合FPGA實現(xiàn)。 在原算法中的步驟3使用插值計算估計兩個Qi_new的編碼消耗,步驟5中若緩沖區(qū)溢出轉(zhuǎn)至步驟6進行編碼計算準(zhǔn)確的編碼消耗,這樣做的目的是減少計算實際編碼消耗的次數(shù)從而提高算法執(zhí)行速度。但對FPGA而言,這樣的策略不僅無法提高算法執(zhí)行速度,還會導(dǎo)致資源消耗的增多。因此,在計算二的整數(shù)次冪的編碼消耗的同時計算非二的整數(shù)次冪的編碼消耗,作為輸入進行率失真優(yōu)化,若編碼過程中緩沖區(qū)溢出則棄幀從而避免了不必要的系統(tǒng)延遲。改進后的算法不進行編碼消耗估計值的計算,節(jié)約了FPGA資源,由于使用的是編碼消耗的準(zhǔn)確值,與使用估計值相比率失真曲線的準(zhǔn)確度更高,從而率失真優(yōu)化能得到更好的結(jié)果。 算法中涉及大量的乘法和除法運算,乘法器和除法器會消耗大量的FPGA資源,由于一些運算在進行時間上沒有重疊,對乘法器和除法器進行時分復(fù)用節(jié)約FPGA資源。 設(shè)計在Xilinx公司的ISE14.4軟件環(huán)境下,使用VerilogHDL對碼率控制電路進行描述,并以Xilinx公司XC7K160T-1FFG676為核心芯片的Kintex7FPGA開發(fā)板對其進行了硬件實現(xiàn)及功能驗證,其中虛線框內(nèi)為碼率控制部分。 圖2 驗證系統(tǒng)框圖 SDI(Serial Digital Interface)信號經(jīng)過解串解擾得到Y(jié)CbCr4∶2∶2的視頻數(shù)據(jù),視頻數(shù)據(jù)經(jīng)過宏塊劃分模塊、離散余弦變換模塊、量化模塊、Zigzag掃描模塊和碼率計算模塊的處理后得到各量化等級下的碼率,作為碼率控制模塊的輸入進行計算得出最優(yōu)的編碼參數(shù),控制編碼模塊進行編碼,經(jīng)過碼流打包模塊實現(xiàn)視頻編碼輸出。 整個碼率控制部分可分為4個模塊:次值計算模塊、拉格朗日優(yōu)化模塊和控制模塊。 為了加快算法的執(zhí)行速度,在拉格朗日優(yōu)化模塊中采用流水線結(jié)構(gòu)。流水線各級間相互獨立,處理完數(shù)據(jù)后可立即接受下一個數(shù)據(jù)進行處理,由此提高系統(tǒng)處理數(shù)據(jù)的速度。 (1)次值計算模塊。次值計算模塊以前一次拉格朗日優(yōu)化計算的得出的碼率和失真作為輸入,計算出的結(jié)果作為下一次拉格朗日優(yōu)化計算的參數(shù),通過不斷的迭代實現(xiàn)碼率和失真的優(yōu)化。其中乘法器和除法器分別采用Xilinx公司的IP(Intellectual Property)核來實現(xiàn),其中乘法器與除法器與其他模塊時分復(fù)用。次值計算模塊的結(jié)構(gòu)如圖3所示。 圖3 次值計算模塊結(jié)構(gòu)圖 (2)拉格朗日優(yōu)化模塊。拉格朗日優(yōu)化模塊由拉格朗日算子計算模塊和十輸入最小值濾波兩部分組成。 在原算法中涉及平方運算,在FPGA中實現(xiàn)時通過預(yù)先計算出平方值來減少不必要的資源消耗。拉格朗日計算模塊結(jié)構(gòu)如圖4所示。 圖4 拉格朗日計算模塊結(jié)構(gòu)圖 在完成拉格朗日計算后對其計算結(jié)果進行最小值濾波,模塊中的十輸入最小值濾波有兩個五輸入最小值濾波和一個二輸入最小值濾波組成,經(jīng)兩個時鐘可得出結(jié)果,十輸入最小值濾波結(jié)構(gòu)如圖。最小值所對應(yīng)的編碼參數(shù)就是使得這個宏塊失真最小的編碼方案。 模塊采用5級流水線,需5個時鐘,能得到源源不斷的編碼參數(shù)。流水線結(jié)構(gòu)如圖5所示。 圖5 十輸入最小值濾波模塊結(jié)構(gòu)圖 圖6 流水線結(jié)構(gòu)圖 (3)控制模塊??刂颇K實現(xiàn)對碼率控制算法執(zhí)行流程的控制,使用狀態(tài)機實現(xiàn)。狀態(tài)機接收到模塊外部送來的碼率控制起始信號后開始狀態(tài)機的運轉(zhuǎn),首先進入次值計算狀態(tài),通過次值計算模塊計算出一個拉格朗日算子,狀態(tài)機判斷到計算完成信號后跳轉(zhuǎn)到拉格朗日優(yōu)化狀態(tài),通過拉格朗日優(yōu)化模塊進行拉格朗日優(yōu)化,計算完成后跳轉(zhuǎn)至二分比較狀態(tài),比較拉格朗日優(yōu)化后與期望的碼率和失真值實現(xiàn),若與期望值足夠接近則碼率控制完成,否則進入次值計算開始新一次的優(yōu)化。 實驗使用視頻播放盒輸出1080i50制式的HDMI視頻信號,視頻信號轉(zhuǎn)換器轉(zhuǎn)換成SDI信號,通過SDI接口輸入給搭載一片Xilinx公司XC7K160T-1FFG676 FPGA芯片的開發(fā)板進行編碼,通過Chipscope捕捉數(shù)據(jù),整個實驗平臺如圖。 針對1080i50制式的視頻,設(shè)置編碼器輸出碼率為17 269 kbit·s-1,通過FPGA對每一幀的碼率進行統(tǒng)計,使用Chipscope捕捉連續(xù)400幀的碼率,結(jié)果如圖7和圖8所示。 圖7 試驗平臺 圖8 試驗平臺連接示意圖 通過使用細(xì)節(jié)較豐富的視頻數(shù)據(jù)如電影《Chinese Zodiac》中森林片段和細(xì)節(jié)信息相對較少的視頻數(shù)據(jù)如《Life of Pi》中大海片段進行測試,如圖9和圖10所示,無論圖像細(xì)節(jié)是否豐富,每幀碼率在2 500 000 bit/frame附近波動,通過使用電影片段、演唱會視頻、紀(jì)錄片片段和運動會視頻等大量視頻數(shù)據(jù)進行測試,壓縮后碼率在14 648~18 310 kbit·s-1范圍輸出,證明該設(shè)計可有效控制碼率。 圖9 視頻Life of Pi碼率輸出情況 圖10 視頻Chinese Zodiac碼率輸出情況 DNxHD編碼算法廣泛應(yīng)用于廣電行業(yè)后期制作中,但由于其算法復(fù)雜性,絕大部分應(yīng)用集中在PC機上,而由于前端拍攝與后期處理所使用的編碼不一致會導(dǎo)致數(shù)據(jù)丟失。本文研究了基于FPGA的DNxHD編碼算法,不但能夠滿足高速場景下的實時性要求而且保持從前端到后端編碼的一致性,避免了數(shù)據(jù)損失。對結(jié)合FPGA特點算法進行了改進,軟件算法中先使用插值計算出編碼消耗的估計值,若估計值不能達到良好控制效果再通過編碼計算出編碼消耗的實際值,這種策略對FPGA來說不僅無法加快算法的執(zhí)行速度還會造成資源的浪費,因此本設(shè)計結(jié)合FPGA的特點,在碼率控制之前就計算出編碼消耗的實際值,在保證算法正確的同時加快算法執(zhí)行速度;采用了流水線結(jié)構(gòu)提高系統(tǒng)運行效率;同時采用了運算器時分復(fù)用的策略,節(jié)省資源。實驗結(jié)果表明碼率得到了控制并運行穩(wěn)定。 [1] The Society of Motion Picture and Television Engineer.SMPTE 2019-1-2008,VC-3 Picture Compression and Data Stream Format [S].America:SMPTE,2008. [2] Antonio Ortega,Kannan Ramchan dran.Rate-distortion methods for image and video compression[J].IEEE Signal Processing,1998,11(8):23-50. [3] LI Xiang.Laplace distribution based lagrangian rate distortion optimization for hybrid video coding[J].IEEE Signal Processing,2009,11(3):118-143. [4] Yang Enhui.Distortion program-size complexity with respect to a fidelity criterion and rate distortion function[J].IEEE Transactions on Information Theory,1997,7(13):688-703. [5] Taubman D.High performance scalable image compre ssion with EBCOT[J].IEEE Transactions on Image Processing,2000,9(7):344-348. [6] Hu Sudeng,Wang Hanli.Rate control optimization for temporal-layer scalable video coding[J].IEEE Transactions on Circuits and System for Video Technology,2011,21(8):1152-1162. [7] Cho Yongjin,Liu Jiaying,Do-Kyoung Kwon,et al.H.264/SVC temporal bit allocation with depend ent distortion model[C].Teipei,Taiwan:Proceeding of International Conference on Acoustics,Speech and Signal Processing(ICASSP),2009. [8] Santosh Sanjeevannanavar.Efficient design and FPGA Implementation of JPEG Encoder using Verilog HDL[J].IEEE Transactions on Image Processing,2011,2(11):584-588. [9] Pradeepthi T.Pipelined architecture of 2D-DCT,Quantization and zigzag process for jpeg image compression using VHDL[J].International Journal of VLSI Desi gn& Communication Systems,2011,2(3):99-110. [10]Lain E G Richardson.Video codec design[M].England:John Wiley&Sons Ltd,2002. [11]劉慶,陳金強.基于FPGA的高速二維DCT變換的研究與實現(xiàn)[J].計算機工程與科學(xué),2012,34(3):103-107. FPGA Implementation of Rate Control Algorithm for DNxHD Video Codec XUE Weipeng,XIAO Tiejun,YU Jinhua (School of Computer Science and Communication Engineering,Jiangsu University,Zhenjiang 212013,China) Rate control is the key problem in video codec.In essence,it is rate distortion optimization under the constraint of a given rate.In order to meet high-speed applications,the DNxHDcodec rate control algorithm was designed and implemented on the platform of Kintex7 Xilinx FPGA.This design takes the advantage of the pipeline structure and time division multiplexing strategy.The experiment result shows that the design gains good control result and runs stable on FPGA. DNxHD;FPGA;rate control;pipeline 2014- 09- 02 薛煒澎(1990—),男,碩士研究生。研究方向:FPGA圖像處理。E-mail:824478757@qq.com。肖鐵軍(1963—),男,教授,碩士生導(dǎo)師。研究方向:嵌入式。喻金華(1984—),男,碩士。研究方向:FPGA視頻音頻處理。 10.16180/j.cnki.issn1007-7820.2015.04.013 TN919.3+1 A 1007-7820(2015)04-046-052 改進的碼率控制算法
3 碼率控制算法的FPGA實現(xiàn)
4 實驗結(jié)果與分析
5 結(jié)束語