h.264**優化
2007-05-24 2:20
h.264的dsp實現流程分為三個階段:
第乙個階段產生和評估c**,第二個階段優化和評估c**,第三個階段編寫和評估線性彙編。
每個階段完成任務如下:
第一階段:首先,產生c**並進行時間評估。一般情況下,這個階段的**效能很低。如果經過評估後,仍然滿足不了實時要求的話,需要進入第二個階段以進一步改進**效能。
第二階段:利用優化選項、內聯函式以及其它優化方法改進c**。如果**仍不能達到所期望的效率,則進入第三階段。
第三階段:從c**中抽出對效能影響大的**段,用線性彙編重新寫這段**,然後利用彙編優化器優化該**,直到**滿足要求為止。
優化和評估c**
**分析結果顯示dct、idct變換、運動估計運算量佔程式總運算量的比重很大,因此這部分函式是程式優化的重點。為此,我們通過下述方法對c**進行了優化:
(1) 對於複雜的運算語句,可以用查詢表的方法來實現,以節省耗時。比如:在運算表示式中出現了「/」以及「%」等符號時,可以先按照所有可能的輸入計算出所有可能的輸出,以後的運算就可以省略而只需要查表得到數值。該方法的本質在於用空間換時間。同樣,對於if-else關係到資料運算的選擇語句,也可根據具體的情況,採用查詢表的方法來實現。
(2) 對於通過查詢表編碼部分個,可以將相關的碼表進行合理的編排,以便運用一條指令可以一次查到需要的資料。同時,盡可能用多位的指令來訪問少位的資料。比如:使用int型(32位)訪問2個short(16位)型資料,將其分別放在32位暫存器的高16位和低16位欄位。這樣,可以提高一倍的資料讀取效率。同樣,像使用int型可一次訪問兩個short型一樣,使用double型訪問可一次讀2個float型資料(4個int型資料),從而減少對記憶體的訪問次數,從而減少運算耗時。
(3) 在c**中,使用內聯函式替代複雜的c**。內聯函式是可直接對映為c6000指令的特殊函式,使用時同呼叫其它函式一樣呼叫,同時不會破壞系統環境。內聯函式用前下劃線(如:函式_add2 (int src1,int src2)表示src1,src2的高低半字分別做有符號加法,返回結果)表示,使用內聯函式可快速優化c**。
(4) **中迴圈越多,執行的效率越低。 因此,我們考慮採用迴圈展開的方法,將多迴圈變為少迴圈,甚至是單迴圈。即運用消除冗餘迴圈的方法來提高指令並行執行的程度,從而提高**的執行效率。
(5) 為了進一步提高**效能,經過評估,找出影響速度的關鍵 c**段 (dct/idct變換和運動估計)用線性彙編重新編寫。線性彙編是c6000系列dsp所特有的類彙編工具。只需按照c**的自然順序,寫出線性彙編語句,同時不必考慮功能單元的分配,以及指令的並行性。從而,它比編寫純彙編語句耗時要少,又具有較高的執行效率。如果編寫線性彙編仍不能達到指標要求的話,在運用純彙編編寫相關的**,充分利用c6000 dsp結構以及指令集的特點,盡可能並行其中的非相關語句。從而進一步減少**的執行時間和提高程式的效能。
儲存器的優化
採取以下方法對儲存器進行優化:分析**,把被反覆呼叫的程式段(如dct變換和dct反變換)放在片內程式儲存區中,把頻繁用到的資料段(如編碼表)放在片內資料儲存器中,把不常用到的程式和資料段放在片外儲存器中,以避免對程式或資料進行不必要的反覆搬移。
在h.264程式執行過程中,由於一幀影象的資料量很大,故而將參考幀資料放到片外,需要用到當前塊和參考窗資料時,再將它們從外存搬運到記憶體中,以便提高效率。
h 264優化筆記
目前 h.264編解碼器的實現可以採用以下幾種方式 採用奔騰 pentium 四代機實現 h.264 編譯碼最早就是在 pc 平台上實現 的 由於簡單易開發 基於該平台的研究得到最多 jvt 的 jm 參考 是就是基於 pc 平台的 此方案的優點是利用當前最新的 pc 資源 以及較強的軟體工具 in...
h 264 率失真優化
搜尋時,乙個不可避免的問題就是如何對mv進行比較,從而得到最優 對於同一壓縮演算法來說,位元速率越高表示影象質量越好 失真越小,但是位元速率越高要求更大的儲存空間,也會增加網路傳輸的壓力。因此在位元速率與失真中找出平衡點,使壓縮效果最優,這種方法叫做r d optimization 位元速率失真優化...
h 264 率失真優化
搜尋時,乙個不可避免的問題就是如何對mv進行比較,從而得到最優 對於同一壓縮演算法來說,位元速率越高表示影象質量越好 失真越小,但是位元速率越高要求更大的儲存空間,也會增加網路傳輸的壓力。因此在位元速率與失真中找出平衡點,使壓縮效果最優,這種方法叫做r d optimization 位元速率失真優化...