基于H.264解碼器的軟件優化

3.2 軟件流水新型算法
很多設計中,解碼參數準備、解碼和DMA的數據輸出等過程按順序串行執行的,該設計有條理安排這3個過程并行執行,充分利用DSP-BF533的指令并行執行特點,減少各軟件模塊之間的等待時間。
下面以4×4的宏塊矩陣為例,首先給4×4矩陣標上4行4列的坐標,然后把程序處理分成5個階段.其狀態分別按順序對應1、2、4、8、16,以便狀態機運算,如表1所列。CAVLC為解析讀入的數據并為后續的圖像整合重建提供參數和參考圖像等數據的過程,hl_decode是高級解碼過程,即根據準備好的條件綜合重建圖像的過程。DMA是對已解碼數據的傳送過程。對照表1和表2分析:當新的一幀圖像到來時,當前狀態標號為1,此時只有CAVLC執行;當運行到坐標為x=1,y=0時,進入第2個狀態,當前狀態標號為2,CAVLC和hl_decode并行執行;當運行到坐標x=1,y=1時,進入第3個狀態,標號為4,3個模塊同時并行執行;到坐標y>4時,進入第4個狀態,標號為8,只有hl_decode和DMA兩個并行執行,CAVLC已經完成對所有宏塊的解碼前準備工作;再判斷x>0,進入第5個狀態。標號為16,此時只運行DMA模塊。

因此,解碼第1個宏塊時處在狀態1,之后連續4個宏塊是狀態2,再連續11個宏塊進入狀態3,隨后1個宏塊是狀態4,最后3個宏塊進入狀態5。
如果假設CAVLC的執行時間A,hl_decode的執行時間B,DMA的執行時間C,普通算法的執行總時間T=16A+16B+16C;本文提出的方法時間T2=A+16B+3C,因此,明顯縮短了程序執行時間。
4 測試結果
在DSP-BF533測試平臺上測試Claire.cif和Pairs.cif,從測試分析的結果看來:優化后的結果提高解碼速率,達到實時應用要求。結果如表3所列。

5 結束語
針對移動視頻終端應用,根據DSP的特點,提出一個新型的軟件流水算法,使得模塊問的協作更緊密,更好利用程序運行的空余時間,減少程序等待時間,提高解碼速率。實驗測試該程序已達到對CIF圖像的實時解碼要求,以后進一步優化,以達到更高更可靠的解碼效率,使得基于DSP-BF533的設計完全可擴展到從無線3G網絡、數字電視,到IP網絡,媒體的存儲格式等不同領域。








評論