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