《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 顯示光電 > 設(shè)計應(yīng)用 > H.264高清視頻編碼器的設(shè)計與實現(xiàn)
H.264高清視頻編碼器的設(shè)計與實現(xiàn)
2015年微型機與應(yīng)用第6期
李 飛,卿粼波,滕奇志,何小海
(四川大學(xué) 電子信息學(xué)院,四川 成都 610065)
摘要: 針對高清視頻龐大的數(shù)據(jù)量以及H.264編碼器復(fù)雜的編碼結(jié)構(gòu)引起的低編碼速率的問題,對影響算法編碼速率的原因進行了深入分析,并設(shè)計了高效的多核并行方案,進而充分利用TMS320C6678的多核性能,并結(jié)合TMS320C6678的運算存儲特性,對H.264編碼器進行了多方面的優(yōu)化,最終使H.264編碼器對720P高清視頻序列編碼速率從1.2 fps增加到27.2 fps,更加貼近于實際應(yīng)用。
Abstract:
Key words :

  摘  要: 針對高清視頻龐大的數(shù)據(jù)量以及H.264編碼器復(fù)雜的編碼結(jié)構(gòu)引起的低編碼速率的問題,對影響算法編碼速率的原因進行了深入分析,并設(shè)計了高效的多核并行方案,進而充分利用TMS320C6678的多核性能,并結(jié)合TMS320C6678的運算存儲特性,對H.264編碼器進行了多方面的優(yōu)化,最終使H.264編碼器對720P高清視頻序列編碼速率從1.2 fps增加到27.2 fps,更加貼近于實際應(yīng)用。

  關(guān)鍵詞: H.264編碼器;TMS320C6678;高清視頻

0 引言

  H.264標準吸取以往標準中的優(yōu)點,編碼效率與H.263+以及MPEG-4 SP相比最多可節(jié)省50%的碼率,存儲需求大大降低。正是由于H.264強大的功能及其巨大的市場潛力,國內(nèi)外不少公司開始對H.264的編解碼應(yīng)用進行研究并有產(chǎn)品紛紛面世。目前國內(nèi)也紛紛對   H.264標準進行研究,使用專用H.264編解碼芯片推出了許多產(chǎn)品。編碼芯片速度很快,但是性能固定,無法根據(jù)需求進行性能的改進,另一方面新一代的HEVC編碼算法性能更為優(yōu)越,但是由于其技術(shù)應(yīng)用尚不成熟,H.264仍然擁有巨大的應(yīng)用潛力,因而在DSP上實現(xiàn)H.264編碼器具有重大意義。

1 H.264復(fù)雜度分析

  H.264標準相比于以往壓縮標準有以下主要優(yōu)點[1]:

  (1)在相同重建圖像質(zhì)量下,H.264相比H.263+和MPEG-4節(jié)約50%的碼率;

 ?。?)H.264具有較強的抗誤碼能力,可以在惡劣的無線環(huán)境中運用;

 ?。?)H.264采用簡潔的分層模式,具有更友好的特性。

  本文采用H.264編碼器的可靠性能測試結(jié)果如表1所示。

004.jpg

  為了對編碼器進行更具針對性的優(yōu)化,本文對編碼器內(nèi)部主要算法部分進行了時間統(tǒng)計,結(jié)果如圖1所示。

001.jpg

2 編碼器在DSP上的實現(xiàn)

  2.1 DSP的多核并行處理方案

  為了充分發(fā)揮TMS320C6678的性能,需要設(shè)計一個高效的多核并行處理方案[2]。核間通信(IPC)的方式一般有兩種:MessageQ消息機制和Notify中斷機制。其中中斷機制是一種不可屏蔽的中斷通信機制,通信快速便捷,因而本文采用Notify中斷方式進行核間通信。多核之間實現(xiàn)可靠通信后,就需要為8個核的并行運算設(shè)計一種高效的拓撲結(jié)構(gòu),通常有Data-Flow模式和Master-Slave模式兩種常用的核間通信拓撲結(jié)構(gòu)。

  (1)Data-Flow模式:通信控制邏輯簡單,適合單向通信,多核利用率不穩(wěn)定,取決于各個核流水工作量均衡度,適用于能將算法分成多個獨立的相等工作量任務(wù)的情況。

 ?。?)Master-Slave模式:通信控制邏輯相對復(fù)雜,多核利用率較高,程序開發(fā)相對簡單[3]。

  根據(jù)圖1中時間測試可知,H.264編碼器中各任務(wù)工作時間很不均衡,因此本文采用Master-Slave模式。

001.jpg

  2.2 多核算法流程

  在Master-Slave模式下,核0充當邏輯控制器及數(shù)據(jù)流收發(fā)器,其他核則專于壓縮算法處理。當核0接收到視頻幀時,將720P視頻幀盡可能均勻地分成7個視頻片分配到各核的接收緩沖區(qū)中,核1~5的視頻片為106×1 280,核6~7的視頻片為90×1 280,各核在編碼完后將數(shù)據(jù)流存放在發(fā)送緩沖區(qū)中。為充分利用、提高多核并行效率,本文為每個運算核提供了兩組數(shù)據(jù)緩沖區(qū),形成一個乒乓緩沖存儲結(jié)構(gòu),用以節(jié)約運算核對核0的等待時間,使各個核運算基本保持全速運行狀態(tài),從而充分地利用多核并行處理能力。

3 H.264編碼器的DSP優(yōu)化

  編碼器在DSP上的優(yōu)化依據(jù)是基于DSP硬件結(jié)構(gòu)上的特有操作,分為傳輸與運算兩種操作。傳輸優(yōu)化是DSP核、EDMA控制器等主動模塊對不同存儲類型訪問性能優(yōu)化配置過程。本文采用的傳輸方面優(yōu)化有緩存優(yōu)化、EDMA優(yōu)化、數(shù)據(jù)存儲優(yōu)化;在運算方面主要是針對C66x核的單指令多數(shù)據(jù)操作(SIMD)以及并行操作特性,在編譯器、C語言以及匯編語言層面上對編碼器進行優(yōu)化。

  3.1 緩存(Cache)優(yōu)化

  C6678擁有兩級緩存結(jié)構(gòu),SYS/BIOS默認將一級數(shù)據(jù)存儲(L1D)32 KB、一級程序存儲(L1P)32 KB全部設(shè)置為緩存,而本地二級存儲(LL2)則默認全部為普通存儲,可用于存放一些關(guān)鍵數(shù)據(jù)。圖2是在一級緩存為32 KB大小的情況下通過測試得到二級存儲不同緩存化程度與平均編碼時間的關(guān)系圖[4]。

002.jpg

  由圖2可以看出,當二級緩存大小超過1/8Cache程度時,編碼時間基本保持不變??紤]到資源寶貴,LL2用來存放一些高速運行的算法數(shù)據(jù)會表現(xiàn)出更好的性能,本文將二級緩存設(shè)置為1/8Cache模式。

  3.2 數(shù)據(jù)存儲優(yōu)化

  數(shù)據(jù)存儲優(yōu)化是根據(jù)C6678對不同存儲資源訪問的不同速度而確定數(shù)據(jù)分配,表2是DSP多核共享訪問DDR3和SL2的實驗統(tǒng)計對比。

005.jpg

  編碼過程中,全局變量所在的數(shù)據(jù)段為bss,動態(tài)開辟的空間、臨時變量以及中間保存結(jié)果所在的數(shù)據(jù)段為stack,還有全局數(shù)組所在的段為far,這部分訪問頻繁的數(shù)據(jù)則放在LL2上;其他訪問較少的段,如text、sysmem、cio則統(tǒng)一放在DDR3上。

  3.3 EDMA優(yōu)化

  TMS320C6678共有3個EDMA管理器,10個通道。本文待壓縮視頻序列為720P,YUV420格式,一幅圖像的大小為1.32 MB,在任務(wù)分配過程中需要對圖像進行拷貝。對于這種大數(shù)據(jù)量的復(fù)制過程,EDMA比通過DSP核進行復(fù)制具有相當大的優(yōu)勢,并且EDMA還可以完成非連續(xù)數(shù)據(jù)段的復(fù)制[5]。EDMA和DSP核的復(fù)制性能與復(fù)制數(shù)據(jù)量的關(guān)系測試對比如圖3所示。

003.jpg

  3.4 匯編優(yōu)化

  匯編優(yōu)化是一種運算型的優(yōu)化,通過充分利用C66x核的SIMD特性以及運算單元并行特性,從而減少運算過程中所消耗的時間[6]。

  根據(jù)圖1中所示,編碼時間主要集中在預(yù)測、運動估計、DCT、量化等部分,選擇各部分算法中的關(guān)鍵函數(shù)進行匯編優(yōu)化[7],優(yōu)化結(jié)果如表3所示。

006.jpg

  3.5 其他優(yōu)化

  除上述4種基于TMS320C6678特性的獨特優(yōu)化,還可以進行一些DSP中常用的普適優(yōu)化,這里只做簡單描述。

 ?。?)-O優(yōu)化:-O優(yōu)化是編譯器對代碼優(yōu)化的級別,其中-O2深度優(yōu)化速度和減少代碼體積,一般為推薦等級,故本文選擇-O2優(yōu)化級別。

 ?。?)去雙重循環(huán)優(yōu)化:在文件級優(yōu)化的過程中,編譯器對于單重循環(huán)可以進行Pipeline優(yōu)化,當遇到雙重循環(huán)時,通過解開一層循環(huán),優(yōu)化效率會得到很大提升[8]。

 ?。?)內(nèi)聯(lián)函數(shù)優(yōu)化:內(nèi)聯(lián)函數(shù)在調(diào)用處直接插入,而不是調(diào)用,因而可以省略掉函數(shù)的調(diào)用開銷,適合對頻繁調(diào)用的簡單函數(shù)如T264_sad_u_c()等進行優(yōu)化。

4 測試結(jié)果

  4.1 測試環(huán)境

  本文編碼器測試環(huán)境如下:調(diào)試軟件環(huán)境CCS5.2.1,測試用到的DSP硬件平臺為TMS320C6678,編碼算法為H.264,量化參數(shù)Qp=30,編碼結(jié)構(gòu)GOP為I幀:P幀=1:5,測試視頻序列為官方KristenAndSara.yuv、shields_ter.yuv兩個序列,分辨率為720P,為更方便準確地計算平均編碼速率,測試幀數(shù)設(shè)定為300幀。

  4.2 測試結(jié)果

  以KristenAndSara.yuv的測試為記錄,編碼器在優(yōu)化過程中的各項指標整體記錄如表4所示。

007.jpg

  由表4可以看出,表中一系列優(yōu)化以后,編碼圖像質(zhì)量并沒有什么影響,編碼速度得到了極大的提升,其中多核優(yōu)化的作用非常明顯,說明本文的多核結(jié)構(gòu)效率是很高的。

5 結(jié)論

  H.264具有相當優(yōu)越的壓縮性能,面對其運算復(fù)雜性與龐大運算量的難題,本文結(jié)合硬件特點,對編碼器進行一系列優(yōu)化,從而使編碼器實現(xiàn)對高清視頻序列實時編碼。目前對DSP編碼器的研究很熱,本文提供的C6678多核方案、基于C6678硬件特點的優(yōu)化以及720P實時高清視頻H.264編碼器都是很有意義的。

參考文獻

  [1] 梁佩珊.H.264編碼器算法優(yōu)化與設(shè)計[D].杭州:浙江大學(xué),2006.

  [2] 曹折波,李青.多核處理器并行編程模型的研究與設(shè)計[J].計算機工程與設(shè)計,2010,31(13):2999-3002.

  [3] 吳灝,肖吉陽,范紅旗,等.TMS320C6678多核DSP的核間通信方法[J].電子技術(shù)應(yīng)用,2012,38(9):2-3.

  [4] 王熹微,唐昆,崔慧娟.基于DM642的視頻編碼Cache優(yōu)化策略[J].微計算機信息,2005,21(09Z):84-86.

  [5] PESCADOR F, MATURANA G, GARRIDO M J, et al. An H. 264 video decoder based on a latest generation DSP[J].  IEEE Transactions on Consumer Electronics, 2009,55(1):205-212.

  [6] 鄭回青,林嘉宇,張鑌.基于TMS320C64xDSP的匯編優(yōu)化方法[J].微處理機,2010,31(1):105-108.

  [7] 黃國玉,廖湘柏.基于DM642的x264源代碼的匯編優(yōu)化[J].南華大學(xué)學(xué)報(自然科學(xué)版),2014,28(1):74-76.

  [8] Su Bogong, Wang Jian, ESGUERRA A. Source-level loop optimization for DSP code generation[C]. 1999 IEEE International Conference on Acoustics, Speech, and Signal Processing, 1999. Proceedings. 1999,4:2155-2158.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。