基于 TMS320DM6446 的 H.264 編碼器的設計與優(yōu)化
2 DSP端的內存配置
由于視頻編碼的數據存取量較大,而 DAVINCI_EVM提供了256MB的外部存儲器DDR2,因此通過對DSP/BIOS的設置將外部存儲器設置為DDR2,并將可執(zhí)行的C代碼及C代碼的堆存入外部存儲器中。本文引用地址:http://m.butianyuan.cn/article/151137.htm
3 對DSP端的BOOT的設置
由于TM320DM6446采用雙核的設計,ARM端只負責對整個工程的控制而不參與編碼算法的具體實現。為了保證編碼算法能在DSP端無中斷的全速運行,需要對ARM端進行屏蔽,并通過對DAVINCI_EVM跳線的設置使DSP端自BOOT。
通過以上步驟編碼器效率雖然有所提高,但仍無法滿足實時性的要求,因此必須結合DM6446本身的特點對編碼器算法進行進一步的優(yōu)化。
編碼器的優(yōu)化
本文對H.264算法的優(yōu)化主要有兩個方面:1)對算法中耗時較多的運動估計模塊進行優(yōu)化。2)對DSP的數據搬移進行優(yōu)化。
1 對編碼器算法運動估計模塊的優(yōu)化
由于DSP硬件資源有限,因此有必要對H.264編碼器中所耗時間較多的模塊進行優(yōu)化,表1為H.264各模塊復雜度比較。
由表1可見運動估計占了一半左右的時間,運動估計復雜度高的主要原因是采用了全搜索算法,雖然精度非常高,但帶來了大量的計算量。針對這一問題,本文在已有的快速算法菱形搜索算法基礎上進行進一步的優(yōu)化。
為了減少靜止宏塊被編碼以及大模板搜索所帶來的運算量,首先在用菱形算法進行運動搜索之前以待編碼宏塊周圍已編碼宏塊的運動矢量信息及SKIP狀況為依據預測當前宏塊是否使用SKIP模式編碼。當待編碼宏塊為非靜止宏塊時,再根據周圍已編碼宏塊的SAD值預測當前宏塊的運動劇烈程度,若是運動平緩的宏塊則直接使用小模板進行搜索。只有當待編碼宏塊被判定為劇烈運動的宏塊時才進行大模板搜索。由于多次的大模板搜索循環(huán)帶來較大的計算量,因此在進行大模板搜索之前首先根據周圍宏塊的信息對最大搜索次數MaxNum進行預估值,當大模板的搜索次數大于MaxNum時直接跳轉至小模板搜索。此流程設計可使靜止宏塊和運動平緩的宏塊不進入運算量大的大模板搜索環(huán)節(jié)。優(yōu)化后的菱形算法的流程如圖3所示。
圖3 優(yōu)化算法流程圖
評論