H.264轉碼器在C6416 DSP上的實現與最佳化

來源:互聯網
上載者:User

我們選取ITU-T公布的JM6.1e參考軟體作為我們的最佳化對象,目標是實現一個base-line profile的即時編解碼演算法。但是JM6.1e代碼複雜,冗餘度很大,需要在PC機端對其進行較大調整,涉及工作有:去除冗餘代碼、規範程式結構、全域和局部變數的調整和重新定義、結構體的調整等。  
 
  1. 代碼移植

      代碼移植,就是將在PC端跑通的程式,移植到DSP端,使其能夠初步運行。需要考慮的問題主要是一些記憶體配置,文法規則等問題。     2. DSP端代碼的最佳化       通過把PC機H.264代碼DSP化,可以在DSP上實現H.264的編解碼演算法,但是,這樣實現的演算法運行效率很低,因為所有的代碼都是由C語言編寫,並沒有完全利用DSP的各種效能。所以必須結合DSP本身的特點,對其進一步最佳化,才能實現H.264視頻解碼器演算法對視頻映像的即時處理。
      代碼的最佳化分為三個層次:項目級最佳化,演算法級最佳化,指令級最佳化。     *項目級最佳化       是對項目的整體最佳化,主要手段有以下幾點:      首先是利用CCS編譯器提供的最佳化功能,對最佳化選項進行選擇和配置,如開啟O-3選項等。      其次對程式結構進行調整,對不適合DSP執行的語句進行改寫,以提高代碼的並行性。      最後是對記憶體進行合理分配,因為DSP資源有限,我們把一些常用資料,如全域變數,程式等資料分配到訪問速度高的片內記憶體,把佔用空間較大的資料分配在片外,如幀存等。     * 演算法級最佳化       是利用H.264的自身特點,提出快速高效演算法,從演算法上挖掘潛力,提高運行速度,達到最佳化目的。這部分工作主要集中在編碼器最佳化方面。       視頻編碼中,運動估計部分是運算量最大的一塊,研究顯示,對於H.264,單幀參考,運動估計佔總運算量的70%,5幀參考,這個比例能達到90%,因此,提出有效快速的運動估計演算法非常有必要,我們通過研究提出了基於預測和早停止技術的運動估計演算法,主要方法是利用周邊鄰塊對當前塊運動向量進行預測,並設定自適應閾值,使搜尋提前停止。   我們提出的演算法,在搜尋窗32時,每塊平均搜尋點數3-4個左右,和全搜尋演算法的4225餘個點相比,提高速度1000多倍。和一些經典快速演算法相比,優勢也很明顯, H.264演算法中,亞象素運動估計採用全搜尋,1/4精度下,需要搜尋16個點。我們提出了自己的亞象素快速搜尋演算法,平均搜尋點數7個,節省運算量60%以上。我們提出的新演算法提高編碼速度很明顯,而且品質也較好,PSNR損失不到0.06dB,碼率增大2%左右。這對於運動估計演算法基本可以忽略不計。       此外,我們針對幀間編碼7中塊大小匹配模式,以及幀內預測13中模式太過複雜,運算量太大的問題,提出了我們自適應模式選擇演算法,不需要將所有模式全部計算,就能找到一種相對最優的模式。這些演算法,都大大提高了代碼的運行速度,在速度與品質上達到較好的折中。     *指令級最佳化       如果上述最佳化方法無法達到即時要求,就需要進行指令級最佳化了,主要手段有。    ·迴圈拆解:將C語言中的for迴圈開啟,排流水線,提高並行性    ·調用系統提供的豐富的內嵌函式    ·調整資料結構:將需要大規模訪問的資料,在記憶體中將它們放置在一起,方便DMA機制的訪問,或並行指令的處理,如插值函數模組。    ·將耗時函數抽取出來       用線性彙編改寫,充分利用豐富的ApsaraVideo for Media Processing指令[5],最大限度的利用DSP的並行性。例如,運動估計中頻繁調用的SAD計算,是對相應象素點做差,並對殘差場求絕對值和的計算。原始演算法是對每一對象素點分別求差,再對其絕對值累加。   我們對其進行了線性彙編的改寫,使用了SUBABS4(一次對兩對4位元組資料做差並求絕對值),DOTPU4(一次對兩對4位元組資料做內積),LDW/LDNW(一次讀取4位元組資料)等指令,使代碼並行性有了很大提高。對16×16的塊來說,最佳化前需要指令1000餘條,最佳化後,200條就足夠了。 我們充分利用系統並行性,對耗時函數進行組合語言改寫,涉及函數有DCT變換,反DCT變換,整象素運動估計,亞象素搜尋,幀內編碼函數,插值函數等,效果明顯。     演算法效能的評測及前景展望       在NVDK C6416環境下,測試了轉碼器演算法,對QCIF測試序列,編碼器40_50幀/秒的編碼碼速度,解碼器達到50_60幀/秒的解碼速度,遠遠達到了即時性解碼的目的。       因為代碼的相容性和可移植性,我們可以把在C6416上實現的編解碼演算法移植到TI公司推出的ApsaraVideo for Media Processing專用晶片TMS320DM642上,利用其豐富的ApsaraVideo for Media Processing介面和副處理器,實現更好的效能。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.