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

          新聞中心

          EEPW首頁 > 消費電子 > 設(shè)計應(yīng)用 > H.264在ADSP-BF561上的實現(xiàn)與優(yōu)化

          H.264在ADSP-BF561上的實現(xiàn)與優(yōu)化

          作者: 時間:2009-05-25 來源:網(wǎng)絡(luò) 收藏

          2.1.2 ADSP-561 EZkite
            視頻編碼器平臺采用ADI公司的 EZ-kit Lite評估板。此評估板包括1塊處理器、32 MB SDRAM和4 MB Flash,板中的AD-V1836編解碼器可外接4輸入/6輸出接口;而ADV7183視頻解碼器和ADV7171視頻編碼器則可外接3輸入/3輸出視頻接口。此外,該評估板還包括1個UART接口、1個USB調(diào)試接口和1個JTAG調(diào)試接口。攝像頭輸入的模擬視頻信號經(jīng)視頻芯片ADV7183A轉(zhuǎn)化為數(shù)字信號,此信號從ADSP-BF561的PPI1(并行外部接口)進入ADSP-BF561芯片進行壓縮,壓縮后的碼流則經(jīng)ADV7179轉(zhuǎn)換后從ADSP-BF561的PPI2口輸出。此系統(tǒng)可通過Flash加載程序,并支持串口及網(wǎng)絡(luò)傳輸。編碼過程中的原始圖像、參考幀等數(shù)據(jù)可存儲在SDRAM中。
          2.2 算法選取與方案
          2.2.1 算法選取
            的源代碼不止一種,其中最常見的有JM、X264和T264。對比這三種源代碼,X264比T264具有更高的效率。而且相比廣泛采用的JM編碼模型,X264在兼顧編碼質(zhì)量的同時大幅度地提升了編碼速度,所以選取X264作為算法原型。
          2.2.2 方案
            該方案從三個層次對算法進行優(yōu)化:算法層次、代碼層次、平臺層次。下面介紹具體優(yōu)化方法。
          2.2.2.1 編碼器具體參數(shù)的選擇
            該編碼器使用main檔次,I、B、P幀量化值分別為26、31、29,流控參數(shù)選為CBR。IDR幀間隔設(shè)為50,B幀間隔為2幀。這樣的選擇是為了在速度和運算量上取折中。選用B幀并將其量化值加大,可比baseline檔次、IPPP結(jié)構(gòu)提高約10%的壓縮率。而B幀的計算量,因其不用做參考幀,故無需進行去塊濾波和插值計算,在31的qp下,很多塊會被判做skip模式編碼,因而多數(shù)時B幀總運算量候反而較P幀低。
          2.2.2.2 算法層次的優(yōu)化
            算法層次的優(yōu)化主要是指在參數(shù)選定的情況下,對部分算法所作的替換或優(yōu)化。和參數(shù)的選擇一樣,算法層次優(yōu)化也主要受優(yōu)化策略的指導(dǎo)。如運動匹配準則是選用SSD、SAD或SATD。如果只看中準確程度,則選擇SSD最佳;如果只看中運行速度,則選擇SAD最佳;如果要兼顧二者,則選用SATD是比較好的一個方案。在進行算法優(yōu)化時還應(yīng)該注意一個問題,即要考慮實際運行平臺的支持情況。如在追求速度的策略下,匹配準則選用SAD,如果只計算一半的點則會大大降低運算速度。但是如果考慮ADSP-BF561匯編指令的設(shè)計情況,就會發(fā)現(xiàn)這樣做反而會增加指令數(shù),會使速度更低。算法層次優(yōu)化包括如下幾個部分:
            (1)除法求余。改進策略是浮點型算法盡量改為整型,64位盡量改為32位,32位盡量改為16位。而對于某些計算比較多的,則改為查表計算。在ADSP-BF561平臺上,一次32位整形除法需耗時300個CYCLE,而查表僅需幾個CYCLE,這樣的改進能顯著提高速度。
            (2)飽和函數(shù)。在視頻的計算中,幾乎每次像素的計算都會調(diào)用飽和函數(shù),X264代碼的中已將這部分代碼改為查表函數(shù),在其他的編解碼器實現(xiàn)中也有將這部分改為一個判斷和幾個邏輯運算的形式。對大部分DSP平臺,采用判斷跳轉(zhuǎn)會打斷流水線,即使平臺有比較好的跳轉(zhuǎn)預(yù)測功能,打斷流水仍然會造成stall。所以查表方法是一種高效方法。而在ADSP-BF561匯編指令中,可以通過設(shè)置指令后綴或使用某些特殊指令來進行飽和工作。甚至不用查表,在不同的場合使用不同的飽和算法能大大提高代碼的執(zhí)行效率。
            (3)MC部分函數(shù)。實測中發(fā)現(xiàn)MC部分函數(shù)運行效率不如ffmpeg解碼器中MC部分效率高,所以將這部分代碼用ffmpeg中的相應(yīng)部分替換。此外qpel16_hv函數(shù)中計算有冗余,減少這些冗余能提高代碼運行效率。
            (4)算法替代和改進。幀間預(yù)測的改進:關(guān)于算法的改進主要集中在對me(motion estimation)的改進上,流程如圖2所示。costmin1=min(cost16,cost8,cost16×8,cost8×16),costmin2=min(costmin1,costsub),依次在16×16、8×8、16×8和8×16大小宏塊的整像素位置做預(yù)測,再做次像素估計和幀內(nèi)預(yù)測,選用匹配準則函數(shù)(采用sad作為匹配準則函數(shù))取得最小值的模式進行編碼。每計算一種模式,都將sad值與一個經(jīng)驗閥值做比較。當sad值小于這個閥值時,立即結(jié)束運動估計,從而減少運算量。

          本文引用地址:http://www.ex-cimer.com/article/166951.htm


            幀內(nèi)預(yù)測的改進:標準所采用的幀內(nèi)預(yù)測模式除了DC模式都具有方向性,相鄰4×4塊都具有相關(guān)性。根據(jù)這樣的相關(guān)性,只將當前4×4塊上邊和左邊選用預(yù)測模式及其相鄰的兩種預(yù)測模式作為當前4×4塊的預(yù)測模式,當其閥值都大于一個經(jīng)驗閥值時,才采用DC模式。這樣的方案不用一一計算9種預(yù)測模式,在復(fù)雜度、編碼效率、質(zhì)量和速度上取了一個折中。流程如圖3所示。



          評論


          相關(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); })();