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