<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > H.264編解碼器在C6416 DSP上的實(shí)現(xiàn)與優(yōu)化

          H.264編解碼器在C6416 DSP上的實(shí)現(xiàn)與優(yōu)化

          ——
          作者:魏振宇 時(shí)間:2005-09-27 來(lái)源:電子產(chǎn)品世界 收藏

             我們選取ITU-T公布的JM6.1e參考軟件作為我們的優(yōu)化對(duì)象,目標(biāo)是實(shí)現(xiàn)一個(gè)base-line profile的實(shí)時(shí)編解碼算法。但是JM6.1e代碼復(fù)雜,冗余度很大,需要在PC機(jī)端對(duì)其進(jìn)行較大調(diào)整,涉及工作有:去除冗余代碼、規(guī)范程序結(jié)構(gòu)、全局和局部變量的調(diào)整和重新定義、結(jié)構(gòu)體的調(diào)整等。 

                 2. 代碼移植 

                 代碼移植,就是將在PC端跑通的程序,移植到DSP端,使其能夠初步運(yùn)行。需要考慮的問(wèn)題主要是一些內(nèi)存分配,語(yǔ)法規(guī)則等問(wèn)題。 

                 3. DSP端代碼的優(yōu)化 

                 通過(guò)把PC機(jī)H.264代碼DSP化,可以在DSP上實(shí)現(xiàn)H.264的編解碼算法,但是,這樣實(shí)現(xiàn)的算法運(yùn)行效率很低

          ,因?yàn)樗械拇a都是由C語(yǔ)言編寫,并沒有完全利用DSP的各種性能。所以必須結(jié)合DSP本身的特點(diǎn),對(duì)其進(jìn)一步優(yōu)化,才能實(shí)現(xiàn)H.264視頻解碼器算法對(duì)視頻圖像的實(shí)時(shí)處理。 
                 代碼的優(yōu)化分為三個(gè)層次:項(xiàng)目級(jí)優(yōu)化,算法級(jí)優(yōu)化,指令級(jí)優(yōu)化。 

                 * 項(xiàng)目級(jí)優(yōu)化       項(xiàng)目級(jí)優(yōu)化,是對(duì)項(xiàng)目的整體優(yōu)化,主要手段有以下幾點(diǎn):       

                 首先是利用CCS編譯器提供的優(yōu)化功能,對(duì)優(yōu)化選項(xiàng)進(jìn)行選擇和配置,如打開O-3選項(xiàng)等。       

                 其次對(duì)程序結(jié)構(gòu)進(jìn)行調(diào)整,對(duì)不適合DSP執(zhí)行的語(yǔ)句進(jìn)行改寫,以提高代碼的并行性。       

                 最后是對(duì)內(nèi)存進(jìn)行合理分配,因?yàn)镈SP資源有限,我們把一些常用數(shù)據(jù),如全局變量,程序等數(shù)據(jù)分配到訪問(wèn)速度高的片內(nèi)內(nèi)存,把占用空間較大的數(shù)據(jù)分配在片外,如幀存等。  

                 * 算法級(jí)優(yōu)化 

                 是利用H.264的自身特點(diǎn),提出快速高效算法,從算法上挖掘潛力,提高運(yùn)行速度,達(dá)到優(yōu)化目的。這部分工作主要集中在編碼器優(yōu)化方面。 

                 視頻編碼中,運(yùn)動(dòng)估計(jì)部分是運(yùn)算量最大的一塊,研究顯示,對(duì)于H.264,單幀參考,運(yùn)動(dòng)估計(jì)占總運(yùn)算量的70%,5幀參考,這個(gè)比例能達(dá)到90%,因此,提出有效快速的運(yùn)動(dòng)估計(jì)算法非常有必要,我們通過(guò)研究提出了基于預(yù)測(cè)和早停止技術(shù)的運(yùn)動(dòng)估計(jì)算法,主要方法是利用周邊鄰塊對(duì)當(dāng)前塊運(yùn)動(dòng)矢量進(jìn)行預(yù)測(cè),并設(shè)定自適應(yīng)閾值,使搜索提前停止。我們提出的算法,在搜索窗32時(shí),每塊平均搜索點(diǎn)數(shù)3-4個(gè)左右,和全搜索算法的4225余個(gè)點(diǎn)相比,提高速度1000多倍。和一些經(jīng)典快速算法相比,優(yōu)勢(shì)也很明顯, H.264算法中,亞象素運(yùn)動(dòng)估計(jì)采用全搜索,1/4精度下,需要搜索16個(gè)點(diǎn)。我們提出了自己的亞象素快速搜索算法,平均搜索點(diǎn)數(shù)7個(gè),節(jié)省運(yùn)算量60%以上。我們提出的新算法提高編碼速度很明顯,而且質(zhì)量也較好,PSNR損失不到0.06dB,碼率增大2%左右。這對(duì)于運(yùn)動(dòng)估計(jì)算法基本可以忽略不計(jì)。 

                 此外,我們針對(duì)幀間編碼7中塊大小匹配模式,以及幀內(nèi)預(yù)測(cè)13中模式太過(guò)復(fù)雜,運(yùn)算量太大的問(wèn)題,提出了我們自適應(yīng)模式選擇算法,不需要將所有模式全部計(jì)算,就能找到一種相對(duì)最優(yōu)的模式。這些算法,都大大提高了代碼的運(yùn)行速度,在速度與質(zhì)量上達(dá)到較好的折中。 

                 * 指令級(jí)優(yōu)化 

                 如果上述優(yōu)化方法無(wú)法達(dá)到實(shí)時(shí)要求,就需要進(jìn)行指令級(jí)優(yōu)化了,主要手段有。 

                 * 循環(huán)拆解,將C語(yǔ)言中的for循環(huán)打開,排流水線,提高并行性 

                 * 調(diào)用系統(tǒng)提供的豐富的內(nèi)聯(lián)函數(shù) 

                 * 調(diào)整數(shù)據(jù)結(jié)構(gòu),將需要大規(guī)模訪問(wèn)的數(shù)據(jù),在內(nèi)存中將它們放置在一起,方便DMA機(jī)制的訪問(wèn),或并行指令的處理,如插值函數(shù)模塊。 

                 * 將耗時(shí)函數(shù)抽取出來(lái),用線性匯編改寫,充分利用豐富的媒體處理指令【5】,最大限度的利用DSP的并行性。例如,運(yùn)動(dòng)估計(jì)中頻繁調(diào)用的SAD計(jì)算,是對(duì)相應(yīng)象素點(diǎn)做差,并對(duì)殘差場(chǎng)求絕對(duì)值和的計(jì)算。原始算法是對(duì)每一對(duì)象素點(diǎn)分別求差,再對(duì)其絕對(duì)值累加。我們對(duì)其進(jìn)行了線性匯編的改寫,使用了SUBABS4(一次對(duì)兩對(duì)4字節(jié)數(shù)據(jù)做差并求絕對(duì)值),DOTPU4(一次對(duì)兩對(duì)4字節(jié)數(shù)據(jù)做內(nèi)積),LDWLDNW(一次讀取4字節(jié)數(shù)據(jù))等指令,使代碼并行性有了很大提高。對(duì)16



          關(guān)鍵詞:

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();