李 飛,卿粼波,滕奇志,何小海(四川大學(xué) 電子信息學(xué)院,四川 成都 610065)
H.264高清視頻編碼器的設(shè)計(jì)與實(shí)現(xiàn)*
李飛,卿粼波,滕奇志,何小海
(四川大學(xué) 電子信息學(xué)院,四川 成都 610065)
針對(duì)高清視頻龐大的數(shù)據(jù)量以及H.264編碼器復(fù)雜的編碼結(jié)構(gòu)引起的低編碼速率的問題,對(duì)影響算法編碼速率的原因進(jìn)行了深入分析,并設(shè)計(jì)了高效的多核并行方案,進(jìn)而充分利用TMS320C6678的多核性能,并結(jié)合TMS320C6678的運(yùn)算存儲(chǔ)特性,對(duì)H.264編碼器進(jìn)行了多方面的優(yōu)化,最終使H.264編碼器對(duì)720P高清視頻序列編碼速率從1.2 fps增加到27.2 fps,更加貼近于實(shí)際應(yīng)用。
H.264編碼器;TMS320C6678;高清視頻
H.264標(biāo)準(zhǔn)吸取以往標(biāo)準(zhǔn)中的優(yōu)點(diǎn),編碼效率與 H.263+以及MPEG-4 SP相比最多可節(jié)省50%的碼率,存儲(chǔ)需求大大降低。正是由于H.264強(qiáng)大的功能及其巨大的市場(chǎng)潛力,國內(nèi)外不少公司開始對(duì)H.264的編解碼應(yīng)用進(jìn)行研究并有產(chǎn)品紛紛面世。目前國內(nèi)也紛紛對(duì)H.264標(biāo)準(zhǔn)進(jìn)行研究,使用專用H.264編解碼芯片推出了許多產(chǎn)品。編碼芯片速度很快,但是性能固定,無法根據(jù)需求進(jìn)行性能的改進(jìn),另一方面新一代的HEVC編碼算法性能更為優(yōu)越,但是由于其技術(shù)應(yīng)用尚不成熟,H.264仍然擁有巨大的應(yīng)用潛力,因而在DSP上實(shí)現(xiàn)H.264編碼器具有重大意義。
H.264標(biāo)準(zhǔn)相比于以往壓縮標(biāo)準(zhǔn)有以下主要優(yōu)點(diǎn)[1]:
(1)在相同重建圖像質(zhì)量下,H.264相比H.263+和 MPEG-4節(jié)約50%的碼率;
(2)H.264具有較強(qiáng)的抗誤碼能力,可以在惡劣的無線環(huán)境中運(yùn)用;
(3)H.264采用簡潔的分層模式,具有更友好的特性。
本文采用H.264編碼器的可靠性能測(cè)試結(jié)果如表1所示。
表1 編碼工程性能測(cè)試結(jié)果
為了對(duì)編碼器進(jìn)行更具針對(duì)性的優(yōu)化,本文對(duì)編碼器內(nèi)部主要算法部分進(jìn)行了時(shí)間統(tǒng)計(jì),結(jié)果如圖1所示。
2.1DSP的多核并行處理方案
為了充分發(fā)揮TMS320C6678的性能,需要設(shè)計(jì)一個(gè)高效的多核并行處理方案[2]。核間通信(IPC)的方式一般有兩種:MessageQ消息機(jī)制和Notify中斷機(jī)制。其中中斷機(jī)制是一種不可屏蔽的中斷通信機(jī)制,通信快速便捷,因而本文采用Notify中斷方式進(jìn)行核間通信。多核之間實(shí)現(xiàn)可靠通信后,就需要為8個(gè)核的并行運(yùn)算設(shè)計(jì)一種高效的拓?fù)浣Y(jié)構(gòu),通常有Data-Flow模式和 Master-Slave模式兩種常用的核間通信拓?fù)浣Y(jié)構(gòu)。
圖1 幀內(nèi)、幀間編碼時(shí)間比例
(1)Data-Flow模式:通信控制邏輯簡單,適合單向通信,多核利用率不穩(wěn)定,取決于各個(gè)核流水工作量均衡度,適用于能將算法分成多個(gè)獨(dú)立的相等工作量任務(wù)的情況。
(2)Master-Slave模式:通信控制邏輯相對(duì)復(fù)雜,多核利用率較高,程序開發(fā)相對(duì)簡單[3]。
根據(jù)圖 1中時(shí)間測(cè)試可知,H.264編碼器中各任務(wù)工作時(shí)間很不均衡,因此本文采用Master-Slave模式。
2.2多核算法流程
在Master-Slave模式下,核 0充當(dāng)邏輯控制器及數(shù)據(jù)流收發(fā)器,其他核則專于壓縮算法處理。當(dāng)核0接收到視頻幀時(shí),將720P視頻幀盡可能均勻地分成7個(gè)視頻片分配到各核的接收緩沖區(qū)中,核1~5的視頻片為106×1 280,核6~7的視頻片為90×1 280,各核在編碼完后將數(shù)據(jù)流存放在發(fā)送緩沖區(qū)中。為充分利用、提高多核并行效率,本文為每個(gè)運(yùn)算核提供了兩組數(shù)據(jù)緩沖區(qū),形成一個(gè)乒乓緩沖存儲(chǔ)結(jié)構(gòu),用以節(jié)約運(yùn)算核對(duì)核0的等待時(shí)間,使各個(gè)核運(yùn)算基本保持全速運(yùn)行狀態(tài),從而充分地利用多核并行處理能力。
編碼器在DSP上的優(yōu)化依據(jù)是基于 DSP硬件結(jié)構(gòu)上的特有操作,分為傳輸與運(yùn)算兩種操作。傳輸優(yōu)化是DSP核、EDMA控制器等主動(dòng)模塊對(duì)不同存儲(chǔ)類型訪問性能優(yōu)化配置過程。本文采用的傳輸方面優(yōu)化有緩存優(yōu)化、EDMA優(yōu)化、數(shù)據(jù)存儲(chǔ)優(yōu)化;在運(yùn)算方面主要是針對(duì)C66x核的單指令多數(shù)據(jù)操作(SIMD)以及并行操作特性,在編譯器、C語言以及匯編語言層面上對(duì)編碼器進(jìn)行優(yōu)化。
3.1緩存(Cache)優(yōu)化
C6678擁有兩級(jí)緩存結(jié)構(gòu),SYS/BIOS默認(rèn)將一級(jí)數(shù)據(jù)存儲(chǔ)(L1D)32 KB、一級(jí)程序存儲(chǔ)(L1P)32 KB全部設(shè)置為緩存,而本地二級(jí)存儲(chǔ)(LL2)則默認(rèn)全部為普通存儲(chǔ),可用于存放一些關(guān)鍵數(shù)據(jù)。圖2是在一級(jí)緩存為 32 KB大小的情況下通過測(cè)試得到二級(jí)存儲(chǔ)不同緩存化程度與平均編碼時(shí)間的關(guān)系圖[4]。
圖2 二級(jí)緩存配置與編碼時(shí)間優(yōu)化關(guān)系圖
由圖2可以看出,當(dāng)二級(jí)緩存大小超過 1/8Cache程度時(shí),編碼時(shí)間基本保持不變??紤]到資源寶貴,LL2用來存放一些高速運(yùn)行的算法數(shù)據(jù)會(huì)表現(xiàn)出更好的性能,本文將二級(jí)緩存設(shè)置為1/8Cache模式。
3.2數(shù)據(jù)存儲(chǔ)優(yōu)化
數(shù)據(jù)存儲(chǔ)優(yōu)化是根據(jù) C6678對(duì)不同存儲(chǔ)資源訪問的不同速度而確定數(shù)據(jù)分配,表2是DSP多核共享訪問DDR3和SL2的實(shí)驗(yàn)統(tǒng)計(jì)對(duì)比。
表2 DSP共享訪問SL2SRAM、DDR3(單位:MB/s)
編碼過程中,全局變量所在的數(shù)據(jù)段為 bss,動(dòng)態(tài)開辟的空間、臨時(shí)變量以及中間保存結(jié)果所在的數(shù)據(jù)段為stack,還有全局?jǐn)?shù)組所在的段為 far,這部分訪問頻繁的數(shù)據(jù)則放在LL2上;其他訪問較少的段,如text、sysmem、cio則統(tǒng)一放在DDR3上。
3.3EDMA優(yōu)化
TMS320C6678共有 3個(gè) EDMA管理器,10個(gè)通道。本文待壓縮視頻序列為 720P,YUV420格式,一幅圖像的大小為 1.32 MB,在任務(wù)分配過程中需要對(duì)圖像進(jìn)行拷貝。對(duì)于這種大數(shù)據(jù)量的復(fù)制過程,EDMA比通過DSP核進(jìn)行復(fù)制具有相當(dāng)大的優(yōu)勢(shì),并且 EDMA還可以完成非連續(xù)數(shù)據(jù)段的復(fù)制[5]。EDMA和 DSP核的復(fù)制性能與復(fù)制數(shù)據(jù)量的關(guān)系測(cè)試對(duì)比如圖3所示。
圖3 DSP、EDMA傳輸對(duì)比
3.4匯編優(yōu)化
匯編優(yōu)化是一種運(yùn)算型的優(yōu)化,通過充分利用C66x核的SIMD特性以及運(yùn)算單元并行特性,從而減少運(yùn)算過程中所消耗的時(shí)間[6]。
根據(jù)圖1中所示,編碼時(shí)間主要集中在預(yù)測(cè)、運(yùn)動(dòng)估計(jì)、DCT、量化等部分,選擇各部分算法中的關(guān)鍵函數(shù)進(jìn)行匯編優(yōu)化[7],優(yōu)化結(jié)果如表 3所示。
表3 核心運(yùn)算函數(shù)匯編優(yōu)化表
3.5其他優(yōu)化
除上述 4種基于 TMS320C6678特性的獨(dú)特優(yōu)化,還可以進(jìn)行一些DSP中常用的普適優(yōu)化,這里只做簡單描述。
(1)-O優(yōu)化:-O優(yōu)化是編譯器對(duì)代碼優(yōu)化的級(jí)別,其中-O2深度優(yōu)化速度和減少代碼體積,一般為推薦等級(jí),故本文選擇-O2優(yōu)化級(jí)別。
(2)去雙重循環(huán)優(yōu)化:在文件級(jí)優(yōu)化的過程中,編譯器對(duì)于單重循環(huán)可以進(jìn)行 Pipeline優(yōu)化,當(dāng)遇到雙重循環(huán)時(shí),通過解開一層循環(huán),優(yōu)化效率會(huì)得到很大提升[8]。
(3)內(nèi)聯(lián)函數(shù)優(yōu)化:內(nèi)聯(lián)函數(shù)在調(diào)用處直接插入,而不是調(diào)用,因而可以省略掉函數(shù)的調(diào)用開銷,適合對(duì)頻繁調(diào)用的簡單函數(shù)如T264_sad_u_c()等進(jìn)行優(yōu)化。
4.1測(cè)試環(huán)境
本文編碼器測(cè)試環(huán)境如下:調(diào)試軟件環(huán)境CCS5.2.1,測(cè)試用到的DSP硬件平臺(tái)為TMS320C6678,編碼算法為 H.264,量化參數(shù) Qp=30,編碼結(jié)構(gòu)GOP為I幀:P幀=1:5,測(cè)試視頻序列為官方 KristenAndSara.yuv、shields_ter.yuv兩個(gè)序列,分辨率為720P,為更方便準(zhǔn)確地計(jì)算平均編碼速率,測(cè)試幀數(shù)設(shè)定為300幀。
4.2測(cè)試結(jié)果
以 KristenAndSara.yuv的測(cè)試為記錄,編碼器在優(yōu)化過程中的各項(xiàng)指標(biāo)整體記錄如表4所示。
由表4可以看出,表中一系列優(yōu)化以后,編碼圖像質(zhì)量并沒有什么影響,編碼速度得到了極大的提升,其中多核優(yōu)化的作用非常明顯,說明本文的多核結(jié)構(gòu)效率是很高的。
表4 整體優(yōu)化效果表
H.264具有相當(dāng)優(yōu)越的壓縮性能,面對(duì)其運(yùn)算復(fù)雜性與龐大運(yùn)算量的難題,本文結(jié)合硬件特點(diǎn),對(duì)編碼器進(jìn)行一系列優(yōu)化,從而使編碼器實(shí)現(xiàn)對(duì)高清視頻序列實(shí)時(shí)編碼。目前對(duì)DSP編碼器的研究很熱,本文提供的C6678多核方案、基于 C6678硬件特點(diǎn)的優(yōu)化以及720P實(shí)時(shí)高清視頻H.264編碼器都是很有意義的。
[1]梁佩珊.H.264編碼器算法優(yōu)化與設(shè)計(jì)[D].杭州:浙江大學(xué),2006.
[2]曹折波,李青.多核處理器并行編程模型的研究與設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31(13):2999-3002.
[3]吳灝,肖吉陽,范紅旗,等.TMS320C6678多核 DSP的核間通信方法[J].電子技術(shù)應(yīng)用,2012,38(9):2-3.
[4]王熹微,唐昆,崔慧娟.基于DM642的視頻編碼 Cache優(yōu)化策略[J].微計(jì)算機(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].微處理機(jī),2010,31(1):105-108.
[7]黃國玉,廖湘柏.基于DM642的x264源代碼的匯編優(yōu)化[J].南華大學(xué)學(xué)報(bào)(自然科學(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.
Designation and im plementation of H.264 encoder for HD video
Li Fei,Qing Linbo,Teng Qizhi,He Xiaohai
(College of Electronics and Information Engineering,Sichuan University,Chengdu 610065,China)
For the problem of low coding speed caused by HD video huge amount of data,as well as the H.264 encoder′s complex coding structure,in-depth analysis of the causes which influenced the speed of coding algorithms was put into realization in this article.On one hand,an efficient multi-core parallel solution was designed to take full advantage of the multi-core performance of TMS320C6678.On the other hand,according to the TMS320C6678′s computing and storage characteristics,many methods were made to optimize the H.264 encoder′s coding efficiency in many aspects.Eventually the 720P HD videos H.264 encoder′s coding speed was improved from 1.2 fps to 27.2 fps,which was more suitable for practical applications.
H.264 encoder;TMS320C6678;HD video
TP37
A
1674-7720(2015)06-0042-03
2014-10-28)
李飛(1990-),通信作者,男,碩士,主要研究方向:DSP、多媒體處理。E-mail:910002483@qq.com。
卿粼波(1982-),男,博士,副教授,主要研究方向:圖像處理、數(shù)字通信。
滕奇志(1961-),女,博士,教授,主要研究方向:圖像處理與模式識(shí)別。
國家自然基金項(xiàng)目( 61471248 )