新聞中心

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

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

        作者: 時間:2009-05-25 來源:網絡 收藏

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

        本文引用地址:http://www.104case.com/article/166951.htm


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



        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 莒南县| 清涧县| 永安市| 阳山县| 嘉黎县| 阳原县| 卫辉市| 班戈县| 吉木萨尔县| 泾阳县| 乌兰浩特市| 达州市| 大宁县| 本溪市| 当涂县| 莆田市| 涡阳县| 会宁县| 柳河县| 临沂市| 九江县| 南通市| 怀柔区| 玉树县| 罗城| 刚察县| 嵩明县| 泗水县| 伊春市| 泾源县| 万年县| 疏勒县| 洛宁县| 朝阳区| 太康县| 河源市| 会东县| 开封县| 施秉县| 建水县| 米脂县|