摘 要:H.264協(xié)議是最先進(jìn)的視頻編碼標(biāo)準(zhǔn),但其算法復(fù)雜度也是超常的。為了解決這個(gè)問題,提出一種采用TI公司的最新多媒體處理器Davinci DM6446為核心的硬件平臺(tái),而在算法上提出了新的基于拉各朗日(Lagrange)的快速算法,充分利用中間結(jié)果,預(yù)先排除一些可能性小的預(yù)測(cè)模式,然后快速完成對(duì)運(yùn)動(dòng)估計(jì)的判決和模式選擇的優(yōu)化處理。實(shí)驗(yàn)結(jié)果表明:該方法可以有效地解決實(shí)時(shí)性差的問題,實(shí)現(xiàn)具有參考價(jià)值的H.264編碼器。
關(guān)鍵詞:DM6446;編碼器;率失真優(yōu)化;視頻壓縮;拉各朗日
中圖分類號(hào):TN919.8 文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1004373X(2008)0311903
Design of Fast H.264 Coding Arithmetic Based on DSP Platform
ZHOU Dongyue,XIAO Wanneng,SU Chengyue,LIANG Li
(Guangdong University of Technology,Guangzhou,510006,China)
Abstract:Although H.264 is the most advanced video encoding standard,realizing of the video encoder arithmetic is very complex.In order to solve this problem,based on the DSP chip of TI′S TMS320DM6446,it designs an arithmetic ofH.264 encoder based on Lagrange fast arithmetic.Intermediate computing results are used to reduce the predicting modes.And the optimal mode is selected.Experimental results show that the paper can solve the problem and realize video encoder of H.264.
Keywords:DM6446;encoder;RDO;video compress;Lagrange
視頻壓縮編碼標(biāo)準(zhǔn)H.264/AVC是由ISO/IEC和ITU—T組成的聯(lián)合視頻專家組(JVT)制定的,他引進(jìn)了一系列先進(jìn)的視頻編碼技術(shù),如4×4整數(shù)變換、空域內(nèi)的幀內(nèi)預(yù)測(cè),多參考幀與多種大小塊的幀間預(yù)測(cè)技術(shù)等,標(biāo)準(zhǔn)一經(jīng)推出,就以其高效的壓縮性能和友好的網(wǎng)絡(luò)特性受到業(yè)界的廣泛推崇。特別是在2004年7月JVT組織做了重要的保真度范圍擴(kuò)展的補(bǔ)充后,更加擴(kuò)大了標(biāo)準(zhǔn)的應(yīng)用范圍,但同時(shí)巨大的運(yùn)算量卻成為其廣泛應(yīng)用的瓶頸??紤]到H.264協(xié)議實(shí)現(xiàn)的復(fù)雜度,本文的思路是:一方面提高硬件處理速度和能力,采用TI公司最新的數(shù)字媒體處理器Davinci TMS320DM6446 DSP芯片作為H.264編碼器實(shí)現(xiàn)的硬件平臺(tái),另一方面提高算法效率。最后提出一個(gè)基于這個(gè)芯片的嵌入式H.264編碼器的設(shè)計(jì)方案。
1 硬件平臺(tái)
1.1 Davinci DM6446芯片介紹
DM6446采用DSP+ARM的雙內(nèi)核結(jié)構(gòu)(內(nèi)核圖見圖1),其中的DSP芯片的CPU時(shí)鐘頻率可達(dá)594 MHz[1],ARM的引入可以釋放DSP在控制方面的部分功能,使DSP專門進(jìn)行數(shù)據(jù)處理的工作。芯片采用增強(qiáng)型的哈佛結(jié)構(gòu)總線,其CPU內(nèi)部有2個(gè)數(shù)據(jù)通道,8個(gè)32 b的功能單元,2個(gè)通用寄存器組(A和B),可同時(shí)執(zhí)行8條32 b長(zhǎng)指令。如果能充分利用這8個(gè)功能單元,總字長(zhǎng)為256 b的指令包同時(shí)分配到8個(gè)并行處理單元,在完全流水的情況下,該芯片的指令吞吐量將達(dá)到594×8=4 752 MIPS。處理器具有雙16 b擴(kuò)充功能,芯片能在一個(gè)周期內(nèi)完成雙16 b的乘法、加減法、比較、移位等操作。該芯片內(nèi)部支持兩級(jí)Cache,其中第一級(jí)32 kB的程序緩存器L1P,80 kB的數(shù)據(jù)緩存器L1D,而第二級(jí)的Cache大小是可配置的64 kB,芯片自動(dòng)完成這兩級(jí)Cache之間數(shù)據(jù)一致性的維護(hù)。有了這兩級(jí)Cache的支持將使CPU的執(zhí)行速度大大加快。
Davinci DM6446具有專用的視頻圖像處理子系統(tǒng)。視頻處理子系統(tǒng)包括1個(gè)視頻前端和1個(gè)視頻末端,視頻前端的輸入接口用于接受外部傳感器或視頻譯碼器輸出的BT.656等圖像輸入信息;視頻末端輸出接口輸出圖像,實(shí)現(xiàn)圖像本地重現(xiàn)。
視頻前端輸入(VPFE)接口由1個(gè)CCD控制器(CCDC),1個(gè)預(yù)處理器,柱狀模塊,自動(dòng)曝光/白平衡/聚焦模塊(H3A)和寄存器組成。CCD控制器可以與視頻解碼器 CMOS傳感器或電荷耦合裝置連接。預(yù)處理器是一個(gè)實(shí)時(shí)的圖形處理器。
1.2 H.264編碼器硬件平臺(tái)
本系統(tǒng)的平臺(tái)核心處理芯片為Davinci DM6446,如圖2所示,片外RAM選取兩片DDR并聯(lián)成32位的數(shù)據(jù)寬度,空間為256 MB。模擬視頻信號(hào)在“VIDEO IN”引入后經(jīng)過解碼芯片TVP5146變換為數(shù)字信號(hào)后輸入TMS320DM6446芯片中進(jìn)行處理,H.264編碼處理后的碼流可以通過視頻末端輸出保存在本地硬盤上,以方便調(diào)試檢查?;蛘呖梢酝ㄟ^10/100 M 以太網(wǎng)物理層接口輸出,進(jìn)行網(wǎng)絡(luò)傳輸。同時(shí),本地的重構(gòu)圖像可以通過TMS320DM6446芯片內(nèi)部OSD模塊和編碼模塊D/A變換后直接顯示輸出。
圖1 DM6446內(nèi)核功能框圖
圖2 H.264編碼器硬件平臺(tái)
2 H.264編碼器結(jié)構(gòu)與編碼流程
2.1 H.264編碼器結(jié)構(gòu)
如圖3所示輸入的圖像以宏塊為單位進(jìn)入編碼器中,根據(jù)圖像變化的快慢選擇幀內(nèi)或幀間預(yù)測(cè)編碼。如果選擇幀內(nèi)預(yù)測(cè)編碼,首先判斷當(dāng)前待編碼塊中是否包含很多的細(xì)節(jié),再?zèng)Q定是否要把幀進(jìn)行再分割。接著以重建幀μF′n中的塊為參考,結(jié)合當(dāng)前塊周圍塊的預(yù)測(cè)模式,選擇當(dāng)前塊的最佳預(yù)測(cè)模式。最后由重建幀μF′n中相應(yīng)塊和當(dāng)前塊選定的預(yù)測(cè)模式得到當(dāng)前塊的預(yù)測(cè)值。按照上述方法,對(duì)圖像中的每一宏塊作出幀內(nèi)預(yù)測(cè),進(jìn)而得到一幀圖像的預(yù)測(cè)值P。如果選擇幀間預(yù)測(cè)編碼,當(dāng)前輸入幀F(xiàn)n和前一幀(參考幀)Fn-1被送到運(yùn)動(dòng)估計(jì)器(ME),通過塊搜索,匹配可以得到當(dāng)前幀中的各宏塊相對(duì)于參考幀中對(duì)應(yīng)宏塊的偏移量,也就是常說的運(yùn)動(dòng)矢量。
圖3 H.264編碼器結(jié)構(gòu)框圖
接著,參考幀F(xiàn)n-1和剛得到的運(yùn)動(dòng)矢量MV[WTBZ]被送到運(yùn)動(dòng)補(bǔ)償器(MC),通過計(jì)算得到幀間預(yù)測(cè)值P;當(dāng)前幀F(xiàn)n和幀預(yù)測(cè)值P相減,得到殘差Dn,經(jīng)過變換,量化后產(chǎn)生一組量化后的變換系數(shù)X,再經(jīng)過熵編碼,與解碼所需的一些邊信息(如預(yù)測(cè)模式量化參數(shù),運(yùn)動(dòng)矢量等)一起組成一個(gè)壓縮后的碼流,經(jīng)NAL(網(wǎng)絡(luò)自適應(yīng)層)供傳輸和存儲(chǔ)[2]。
2.2 編碼器編碼流程
如圖4所示為H.264編碼器主流程。對(duì)輸入的一幀圖像首先進(jìn)行單元?jiǎng)澐郑阂院陦K為基本單元進(jìn)行劃分,再由若干宏塊在組合成Slice,由Slice再組合成Slice Group,這樣每個(gè)宏塊所屬的Slice和Slice Group也就確定了。再判斷輸入的一幀圖像是I—Frame還是P—Frame。在以上工作完成后,也就可以對(duì)每個(gè)宏塊進(jìn)行編碼了。在對(duì)每個(gè)宏塊都編碼完成后,還需要對(duì)重構(gòu)圖像進(jìn)行1/4象素精度插值處理、參考幀緩沖區(qū)插入處理等工作。至此,編碼一幀的工作才算完成。
3 運(yùn)動(dòng)估計(jì)模式快速率失真決策
為了減少圖像序列的時(shí)間冗余,達(dá)到更好壓縮效果的目的,H.264/AVC編碼方案采用運(yùn)動(dòng)補(bǔ)償技術(shù)和預(yù)測(cè)。即由先前已編碼的一個(gè)或多個(gè)幀產(chǎn)生當(dāng)前編碼幀的一種預(yù)測(cè)模式,然后再進(jìn)行預(yù)測(cè)編碼。且采用了一種可變塊尺寸的運(yùn)動(dòng)預(yù)測(cè)模式[3],亮度塊尺寸的范圍從16×16變化到4×4,其中包含很多可選模式,形成了一種樹形結(jié)構(gòu)的運(yùn)動(dòng)預(yù)測(cè)。對(duì)于I幀(包含幀內(nèi)4×4、幀內(nèi)16×16),對(duì)P幀(包含幀內(nèi)4×4、幀內(nèi)16×16、SKIP模式、幀間16×16、幀間16×8、幀間8×16、幀間8×8、幀間8×4、幀間4×8) 同時(shí)還為P幀和B幀提供了特殊的SKIP模式,總共11種模式。這些可選模式的存在使得編碼方式更加靈活,編碼精度相對(duì)于固定尺寸塊預(yù)測(cè)要高很多。然而,可選的幀問預(yù)測(cè)模式增加了,必然會(huì)使得運(yùn)算復(fù)雜度增加,因此有必要采用一種高效的決策方法來選取塊尺寸組合方式,使得編碼效率和編碼質(zhì)量均佳。
圖4 H.264編碼流程框圖
3.1 拉各朗日代價(jià)函數(shù)
引入拉各朗日代價(jià)函數(shù)如下:
其中D表示重構(gòu)恢復(fù)圖像相對(duì)于原始圖像間的失真;R(si,m)表示對(duì)宏塊編碼后數(shù)據(jù)及相關(guān)參數(shù)在碼流中所占用的比特?cái)?shù),一般由編碼統(tǒng)計(jì)得到,但對(duì)于SKIP模式,比特?cái)?shù)默認(rèn)為1比特;λ表示模式選擇時(shí)所使用的拉各朗日乘積因子。
對(duì)于運(yùn)動(dòng)估計(jì),可使用拉各朗日代價(jià)函數(shù)作為選擇運(yùn)動(dòng)矢量的判決標(biāo)準(zhǔn)。根據(jù)式(1)得到對(duì)一個(gè)采樣塊si進(jìn)行ME判決的代價(jià)函數(shù)為下:
該式返回產(chǎn)生最小代價(jià)值的最佳匹配運(yùn)動(dòng)矢量mi,其中M指各種可能編碼模式的集合,m為當(dāng)前選定模式,式(2)中R(si,m)是運(yùn)動(dòng)矢量(mx,my)所要傳輸(按熵編碼)的比特?cái)?shù)。D(si,m)表示對(duì)圖像宏塊的預(yù)測(cè)誤差,對(duì)于該預(yù)測(cè)誤差的計(jì)算有兩種方案:當(dāng)預(yù)測(cè)誤差選擇是絕對(duì)誤差時(shí)用(SAD)表示,如式(3);當(dāng)預(yù)測(cè)誤差選擇是平方差時(shí),則用SSD表示,如式(4)中:
其中A為當(dāng)前編碼宏塊。在使用多參考幀進(jìn)行運(yùn)動(dòng)估計(jì)時(shí),mt表示所選用的最佳參考幀。在進(jìn)行運(yùn)動(dòng)搜索時(shí),對(duì)塊si先是進(jìn)行整象素精度的運(yùn)動(dòng)搜索,以取式(1)最小值為匹配標(biāo)準(zhǔn),得到整象素精度最佳匹配點(diǎn)后,以同樣的方法進(jìn)行1/2,1/4象素精度的匹配搜索。同時(shí)在多個(gè)參考幀內(nèi)作同樣的操作,將所得的函數(shù)代價(jià)進(jìn)行比較得到最小值,也就找到了s,塊的最佳匹配的運(yùn)動(dòng)矢量mi。
3.2 快速預(yù)測(cè)模式判斷算法
快速算法相對(duì)于拉各朗日代價(jià)函數(shù)算法,可分以下兩步實(shí)現(xiàn):
(1)以基于預(yù)測(cè)模式的方式計(jì)算代價(jià)函數(shù)J,但是這里采用簡(jiǎn)化的計(jì)算方法,對(duì)每一種采樣模式進(jìn)行分行交錯(cuò)隔點(diǎn)采樣,如對(duì)8×8塊內(nèi)象素進(jìn)行下采樣,采樣如圖5所示。
圖5 8×8塊內(nèi)象素采樣
然后對(duì)采樣點(diǎn)計(jì)算SAD,記做SADi。僅對(duì)采樣點(diǎn)計(jì)算的拉各朗日代價(jià)函數(shù)如下:
先對(duì)上述各種模式分別計(jì)算代價(jià)函數(shù)J,然后選擇代價(jià)最小的3種模式構(gòu)成候選模式集。
(2) 對(duì)步驟(1)所得到的候選模式集中每個(gè)模式,按照式(1),通過計(jì)算基于率失真的代價(jià)來實(shí)現(xiàn)基于RDO的模式選擇,也即C值最小的模式作為最終預(yù)測(cè)模式。
4 測(cè)試結(jié)果與結(jié)論
目前,基于DM6446平臺(tái)上設(shè)計(jì)的以上H.264編碼器系統(tǒng)己基本完成,我們選擇了幾個(gè)常見的視頻對(duì)該編碼器進(jìn)行了性能測(cè)試,測(cè)試數(shù)據(jù)如表1所示。數(shù)據(jù)表明本H.264 編碼器能夠正常工作,且表現(xiàn)出較好的壓縮性能。當(dāng)然該編碼器只實(shí)現(xiàn)了H.264協(xié)議的基本檔次[4]的部分,而且尚未進(jìn)行更專門的優(yōu)化過程,而協(xié)議的其他部分,由于其復(fù)雜性,則需要進(jìn)行進(jìn)一步研究,沿著這個(gè)方向,視頻還可以進(jìn)一步壓縮。
表1 H.264編碼器的參數(shù)測(cè)試
參考文獻(xiàn)
[1]TMS320DM6446 Digital Media System on Chip Data Manual[M].Texas Instruments,2006.
[2]JVT—100,Study of Final Committee Draft of Joint Video Specification ITU Rec.H.264/ISO/IEC 14496—10 AVC).
[3]Yao Wang,Jorn Dstermann,Ya Qin Zhang.Video Processing and Communications [M].Beijing:Tsinghua University Press,2003.
[4]JM9.3—2005.JVT Reference Software Version.http://bs.hhi.de/~suehring/tml/download.
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文。