解析H.264視頻編解碼DSP實(shí)現(xiàn)與優(yōu)化
引言
基于互聯(lián)網(wǎng)的數(shù)字視頻產(chǎn)業(yè)前景看好,而3G的規(guī)模部署,也會(huì)推動(dòng)移動(dòng)視頻通信成為現(xiàn)實(shí)。但數(shù)字化后的視頻圖像具有數(shù)據(jù)海量性,給圖像的存儲(chǔ)和傳輸造成較大的困難。數(shù)字視頻產(chǎn)業(yè),是指數(shù)字內(nèi)容中以數(shù)字視頻形態(tài)為主的文化創(chuàng)意和傳播產(chǎn)業(yè),及其必需依賴的多學(xué)科高科技技術(shù)支撐和保障服務(wù)產(chǎn)業(yè)。為此,該專家組基于幀內(nèi)圖像相鄰像素間及相鄰行間的空間相關(guān)性和相鄰幀間運(yùn)動(dòng)圖像的時(shí)間相關(guān)性,采用壓縮編碼技術(shù),將那些對(duì)人眼視覺圖像和人耳聽覺聲音不太重要的東西及冗余成分拋棄,從而縮減了存儲(chǔ)、傳輸和處理的數(shù)據(jù)量,提高了頻譜資源利用率,使數(shù)字化正在變?yōu)楝F(xiàn)實(shí)。數(shù)字視頻壓縮編碼技術(shù)是解決這一問題的關(guān)鍵技術(shù)。H.264以其良好的網(wǎng)絡(luò)適應(yīng)性和高編碼壓縮效率,靈活的語法配置,在視頻處理領(lǐng)域比以往的視頻編碼標(biāo)準(zhǔn)更加適合視頻處理的發(fā)展方向,更加適合不同應(yīng)用環(huán)境的對(duì)象。進(jìn)一步提高了編碼算法的壓縮效率和圖像回放質(zhì)量。在肉眼主觀感受相同的情況下,H.264較之H.263的編碼效率提高了50%左右。
利用高性能數(shù)字信號(hào)處理器(DSP)來實(shí)現(xiàn)H.264實(shí)時(shí)編碼器是一種快速有效的方法,有助于H.264視頻標(biāo)準(zhǔn)的迅速推廣和應(yīng)用,也指明了視頻圖像壓縮領(lǐng)域最新的研究方向。數(shù)字信號(hào)處理(Digital Signal Processing,簡稱DSP)是一門涉及許多學(xué)科而又廣泛應(yīng)用于許多領(lǐng)域的新興學(xué)科。20世紀(jì)60年代以來,隨著計(jì)算機(jī)和信息技術(shù)的飛速發(fā)展,數(shù)字信號(hào)處理技術(shù)應(yīng)運(yùn)而生并得到迅速的發(fā)展。數(shù)字信號(hào)處理是一種通過使用數(shù)學(xué)技巧執(zhí)行轉(zhuǎn)換或提取信息,來處理現(xiàn)實(shí)信號(hào)的方法,這些信號(hào)由數(shù)字序列表示。在過去的二十多年時(shí)間里,數(shù)字信號(hào)處理已經(jīng)在通信等領(lǐng)域得到極為廣泛的應(yīng)用。DSP(digital signal processor)是一種獨(dú)特的微處理器,是以數(shù)字信號(hào)來處理大量信息的器件。其工作原理是接收模擬信號(hào),轉(zhuǎn)換為0或1的數(shù)字信號(hào)。再對(duì)數(shù)字信號(hào)進(jìn)行修改、刪除、強(qiáng)化,并在其他系統(tǒng)芯片中把數(shù)字?jǐn)?shù)據(jù)解譯回模擬數(shù)據(jù)或?qū)嶋H環(huán)境格式。
1 H.264編碼的關(guān)鍵技術(shù)
1.1 基于靈活分割宏塊(MB)的運(yùn)動(dòng)矢量估計(jì)和補(bǔ)償以及增加變換的壓縮效果
H.264根據(jù)宏塊的編碼特性采用亮度塊直流變換,色度塊直流變換與普通差值變換相結(jié)合的方法。在運(yùn)動(dòng)估計(jì)時(shí),H.264信源編碼采用基于4×4塊的整數(shù)變換,可以靈活地選擇塊的大小。而其他標(biāo)準(zhǔn)處理的像素塊大小均為16×16或者8x8.H.264以可變大小的塊來適應(yīng)不同應(yīng)用環(huán)境和要求,采用16×16,16×8,8×16,8×8四種模式;當(dāng)劃分為8×8模式時(shí),又可進(jìn)一步采用8×4,4×8,4×4三種子宏塊劃分模式進(jìn)一步劃分,如圖1所示。根據(jù)需要由不同尺寸的宏塊來執(zhí)行,采用整數(shù)變換既可以使運(yùn)動(dòng)物體的劃分更加精確,不可以減小運(yùn)動(dòng)物體邊緣的銜接誤差,處理好需要更多運(yùn)動(dòng)細(xì)節(jié)的場合,即以引入更小運(yùn)動(dòng)補(bǔ)償塊可以提高一般和特殊情況下的預(yù)測質(zhì)量,它可以提高主觀視覺效果,同時(shí)又減小了變換過程中的計(jì)算量。實(shí)驗(yàn)表明,應(yīng)用7種不同大小和形狀的塊可以比單一利用16×16塊進(jìn)行的編碼提高15%以上的壓縮率。
1.2 支持l/4像素或l/8像素精度的運(yùn)動(dòng)估值
運(yùn)動(dòng)估計(jì)與補(bǔ)償算法是目前視頻壓縮技術(shù)中最為關(guān)鍵的部分,影響著編碼的速度、質(zhì)量和碼率,其編碼的復(fù)雜度也是整個(gè)編碼系統(tǒng)中最高的。
在H.264中通過6階FIR濾波器的內(nèi)插獲得1/2像素位置的預(yù)測值。FIR(Finite Impulse Response)濾波器:有限長單位沖激響應(yīng)濾波器,是數(shù)字信號(hào)處理系統(tǒng)中最基本的元件,它可以在保證任意幅頻特性的同時(shí)具有嚴(yán)格的線性相頻特性,同時(shí)其單位抽樣響應(yīng)是有限長的,因而濾波器是穩(wěn)定的系統(tǒng)。因此,F(xiàn)IR濾波器在通信、圖像處理、模式識(shí)別等領(lǐng)域都有著廣泛的應(yīng)用。當(dāng)獲得1/2像素值后,通過取整數(shù)像素位置和1/2像素位置像素值均值的方式獲得l/4像素位置的值。在高碼率情況下,提供1/8像素精度的運(yùn)動(dòng)估計(jì)。采用高精度運(yùn)動(dòng)估計(jì)會(huì)進(jìn)一步減小幀間預(yù)測誤差,減少經(jīng)變換和量化后的非0比特?cái)?shù),提高了編碼效率。利用1/4像素空間精度可以比原有的一個(gè)像素精度(整數(shù)精度)預(yù)測提高20%的編碼效率。
1.3 多參考幀預(yù)測
參考幀是幀間預(yù)測編碼,也就是運(yùn)動(dòng)補(bǔ)償?shù)幕A(chǔ),根據(jù)它與待預(yù)測幀之間的位置關(guān)系,可分為前向參考幀和后向參考幀。
以往的編解碼技術(shù)在對(duì)P幀圖像進(jìn)行幀間預(yù)測時(shí),只允許以參考前一幀圖像進(jìn)行編碼,即以前一個(gè)I圖像或P圖像為參考幀,在對(duì)B圖像進(jìn)行預(yù)測時(shí),只允許參考前后幀圖像進(jìn)行編碼,即以前后兩個(gè)I圖像或P圖像為參考圖像。H.264則打破了這些限制,允許在從當(dāng)前幀的前幾幀中選擇一幀作為參考幀圖像,對(duì)宏塊進(jìn)行運(yùn)動(dòng)預(yù)測,當(dāng)選用多參考幀模式時(shí)。編碼器從幾個(gè)參考幀中選擇一個(gè)效果最好的參考幀,編碼器(encoder)是將信號(hào)(如比特流)或數(shù)據(jù)進(jìn)行編制、轉(zhuǎn)換為可用以通訊、傳輸和存儲(chǔ)的信號(hào)形式的設(shè)備。 編碼器把角位移或直線位移轉(zhuǎn)換成電信號(hào),前者成為碼盤,后者稱碼尺。按照讀出方式編碼器可以分為接觸式和非接觸式兩種。接觸式采用電刷輸出,一電刷接觸導(dǎo)電區(qū)或絕緣區(qū)來表示代碼的狀態(tài)是"1"還是"0";非接觸式的接受敏感元件是光敏元件或磁敏元件,采用光敏元件時(shí)以透光區(qū)和不透光區(qū)來表示代碼的狀態(tài)是"1"還是"0",通過"1"和"0"的二進(jìn)制編碼來將采集來的物理信號(hào)轉(zhuǎn)換為機(jī)器碼可讀取的電信號(hào)用以通訊、傳輸和儲(chǔ)存。達(dá)到最佳的預(yù)測效果,參考幀圖像甚至可以是采用雙向預(yù)測編碼方式的圖像,大幅度降低了預(yù)測誤差。另
因此,多參考幀預(yù)測對(duì)周期性運(yùn)動(dòng)和背景切換能夠提供更好的預(yù)測效果。
1.4 消除塊效厘適應(yīng)性濾波器
基于分塊處理的變換編碼算法,忽略了物體邊緣的連續(xù)性,在低碼率情況下,容易出現(xiàn)方塊效應(yīng)。為消除在預(yù)測和變換過程中引入的塊效應(yīng),H.264對(duì)此采用了消除塊效應(yīng)適應(yīng)性濾波器,對(duì)宏塊邊緣進(jìn)行平滑,有效改進(jìn)圖像的主觀質(zhì)量。但與以往標(biāo)準(zhǔn)不同的是,H.264的消除塊效應(yīng)濾波器位于運(yùn)動(dòng)估計(jì)循環(huán)內(nèi)部,可以利用消除塊效應(yīng)以后的圖像去預(yù)測其他圖像的運(yùn)動(dòng),即濾波后宏塊用于運(yùn)動(dòng)估計(jì),以產(chǎn)生更小的幀差進(jìn)行編碼,進(jìn)一步提高預(yù)測精度。
1.5 增強(qiáng)的熵編碼
以往標(biāo)準(zhǔn)的熵編碼采用變長的哈夫曼編碼,碼表統(tǒng)一,不能適應(yīng)變換多端的視頻內(nèi)容,影響編碼效率。根據(jù)視頻內(nèi)容的不同,H.264利用較短的碼字來代表出現(xiàn),高頻率的符號(hào),可進(jìn)一步去除碼流中的冗余,提供兩種熵編碼,即上下文自適應(yīng)二進(jìn)制算術(shù)編碼(CABAC)和基于內(nèi)容的自適應(yīng)可變長編碼(CAVLC),CABAC的編碼效率更高,也更復(fù)雜,在相同圖像質(zhì)量下,使用CABAC編碼電視信號(hào)可降低10%左右(10%~15%)的碼率,后者具有較強(qiáng)抗誤碼能力。
2 H.264的視頻編解碼的DSP平臺(tái)實(shí)現(xiàn)
在數(shù)字圖像處理中,要完成大量的數(shù)字信號(hào)處理工作,特別是對(duì)于H.264這樣的新一代視頻壓縮編碼標(biāo)準(zhǔn)。就其Baseline而言,其解碼復(fù)雜度是同等情況下H.263的2倍,而編碼復(fù)雜度更是H.263的3倍,解決這種高運(yùn)算量問題,很大程度上依賴于高速DSP技術(shù),而且采用半導(dǎo)體制造工藝生產(chǎn)的DSP處理器可以有更低的功耗。
TI公司生產(chǎn)的DM64X系列芯片具有超高主頻、很強(qiáng)的并行處理能力和信號(hào)處理功能,是實(shí)現(xiàn)H.264編解碼的理想平臺(tái)。
TI公司生產(chǎn)的642系列是一款專門面向多媒體應(yīng)用的專用DSP,該DSP時(shí)鐘頻率高達(dá)600 MHz,8個(gè)并行運(yùn)算單元,處理能力達(dá)4 800 MIPS.它是在C64X的基礎(chǔ)上,增加了很多外圍設(shè)備和接口??梢?,DM642是一個(gè)強(qiáng)大的多媒體處理器,是構(gòu)成多媒體通信系統(tǒng)的良好平臺(tái)。
該系統(tǒng)主要是為了對(duì)模擬視頻圖像(PAL制式)進(jìn)行采集,之后對(duì)其進(jìn)行壓縮,然后把壓縮后的數(shù)據(jù)通過擴(kuò)頻的方式發(fā)送到接收端,在接收端接收碼流后由DSP進(jìn)行解壓縮,之后再由DSP負(fù)責(zé)圖像的顯示,存儲(chǔ)等。所以總體設(shè)計(jì)方案必須包括視頻的輸入/輸出、網(wǎng)絡(luò)等接口。設(shè)計(jì)圖如圖2所示。
在發(fā)送端,視頻輸出由視頻A/D芯片先轉(zhuǎn)換為數(shù)字視頻信號(hào),然后輸入到DM642的視頻端口2,由DM642進(jìn)行圖像采集,并把圖像數(shù)據(jù)送入SDRAM中,同時(shí)DM642對(duì)視頻圖像進(jìn)行實(shí)時(shí)壓縮,并把壓縮后的數(shù)據(jù)通過McBSP發(fā)送到信道編碼部分,完成發(fā)送端的工作。在接收端,接收由信道譯碼部分送來的壓縮圖像數(shù)據(jù),然后由DM642完成圖像的實(shí)時(shí)解壓,并把解壓后的數(shù)據(jù)送到SDRAM中,然后把解壓后的圖像數(shù)據(jù)送人視頻端口0,再由視頻端口0把數(shù)據(jù)送入視頻D/A,完成視頻的實(shí)時(shí)顯示。圖2中音頻/視頻接口作為擴(kuò)展,10/100Mb/s的以太網(wǎng)卡以及USB控制器外設(shè)主要是為了方便接收端直接把數(shù)字視頻信號(hào)傳送到計(jì)算機(jī)或者終端各處,供電及復(fù)位電路完成對(duì)電路板的供電及復(fù)位功能。
3 H.264的視頻編解碼的DSP優(yōu)化
將H.264編碼器移植到DM642圖像處理平臺(tái)上,由于H.264的核心算法不僅在代碼結(jié)構(gòu)上需要改進(jìn),而且在具體的核心算法上也需要做較大的改動(dòng),因此整個(gè)系統(tǒng)的編碼速度非常令人不滿意,達(dá)不到實(shí)時(shí)應(yīng)用的要求,因此需要從各個(gè)方面對(duì)該系統(tǒng)進(jìn)行優(yōu)化,將編碼的時(shí)間減少下去。首先去除了編碼器中的冗余代碼,然后優(yōu)化工作分三步:在PC機(jī)上實(shí)現(xiàn)H.264算法并進(jìn)行優(yōu)化;PC機(jī)H.264代碼的DSP化,可以在DSP上實(shí)現(xiàn)H.264的編解碼算法,但是,這樣實(shí)現(xiàn)的算法運(yùn)行效率很低,因?yàn)樗械拇a都是由C語言編寫,并沒有完全利用DSP的各種性能,所以必須結(jié)合DSP本身的特點(diǎn),對(duì)其進(jìn)一步優(yōu)化,才能實(shí)現(xiàn)H.264視頻解碼器算法對(duì)視頻圖像的實(shí)時(shí)處理,即要H.264的DSP算法優(yōu)化。對(duì)于DSP代碼的優(yōu)化共分為三個(gè)層次:項(xiàng)目級(jí)優(yōu)化、C程序級(jí)優(yōu)化、匯編程序級(jí)優(yōu)化。
4 結(jié)語
在上述環(huán)境下,解碼器算法對(duì)QCIF測試序列已經(jīng)能夠達(dá)到45~60 f/s的解碼速度,達(dá)到了實(shí)時(shí)性解碼的目的。測試結(jié)果表明,圖像主觀質(zhì)量較好,無明顯方塊效應(yīng),碼率也比較低。另外,圖像編碼的實(shí)時(shí)性能與圖像的內(nèi)容、運(yùn)動(dòng)的劇烈程度等都有一定的關(guān)系。在DM642板卡上實(shí)現(xiàn)的H.264視頻編解碼器具有功能強(qiáng),使用靈活等特點(diǎn),有廣泛的應(yīng)用前景。RADVISION策略的關(guān)鍵是在SCOPIA架構(gòu)中支持H.264-SVC技術(shù),這樣RADVISION的支持SVC的SCOPIA桌面系統(tǒng)就可以與諸如H.263和H.264等其它標(biāo)準(zhǔn)視頻編解碼技術(shù)互通??梢韵蛲粋€(gè)會(huì)議室接入不同的設(shè)備,每臺(tái)設(shè)備根據(jù)其性能均可獲得最佳的視頻編解碼質(zhì)量。不支持H.264-SVC的設(shè)備仍可通過H.263或H.264方式進(jìn)行連接,相信在不久的將來,基于H.264算法和DSP處理器的可視電話、視頻會(huì)議、有線電視、無線流媒體通信等產(chǎn)品會(huì)逐漸地走進(jìn)千家萬戶,視頻編解碼器在嵌入式處理終端上的應(yīng)用會(huì)漸漸地成為應(yīng)用的主流。
評(píng)論