基于TMS320DM3730的H.264編碼器移植與優(yōu)化方法研究
3)使用最小循環(huán)次數(shù)指令MUST_ITERATE
最小循環(huán)次數(shù)指令的完整語法是:
#pragma MUST_ITERATE(min,max,multiple)
其中min和max分別代表了循環(huán)的最小和最大迭代次數(shù),multiple表明了循環(huán)次數(shù)是其倍數(shù)。使用最小循環(huán)次數(shù)程序指令可以通過通知編譯器至少進行多少次循環(huán),那樣編譯器可以將min次循環(huán)進行展開進行軟件流水,進行循環(huán)之間并行處理,提高程序運行速度。
3.4 匯編代碼的優(yōu)化
C語言編譯器通常只能完成大部分的工作,這個階段的C語言代碼在DSP端運行的效率并不是很高,為了進一步改善性能,對那些算法簡單但計算量大且使用很頻繁的函數(shù)使用匯編語言進行編寫實現(xiàn),可以大大提高程序運行速度。例如快速DCT變換、SAD、量化等算法過程可以考慮用匯編語言來編寫。
線性匯編是TI公司簡化C6000系列DSP的匯編語言而開發(fā)設計的,介于高級語言和機器語言之間。線性匯編語言的指令系統(tǒng)和普通的匯編語言的指令系統(tǒng)基本相同。在編寫線性匯編語言的時候是不需要考慮到指令的延時、寄存器的使用和功能單元的分配,C6000編譯器提供了匯編優(yōu)化器進行匯編優(yōu)化,會綜合指令的延時、寄存器的使用和功能單元的分配進行優(yōu)化,讓線性匯編語言盡量的進行軟件流水和指令的并行處理,提高匯編的運行速度。DM3730的DSP核為C64x+系列,線性匯編在上面是可以完美運行的。
表2所示為使用CCS中的profile工具測量的一些函數(shù)的C語言函數(shù)和線性匯編函數(shù)在DM3730上運行時鐘周期對比。
4 實驗結果分析
x264編碼器移植成功后,使用標準CIF格式視頻序列對移植和優(yōu)化后的x264編碼器在DM3730上進行測試,測試結果如下表3所示。
從表3可以看出,x264程序經過優(yōu)化后,峰值信噪比有略微的下降,但該下降不影響整體視頻效果,而編碼速度得到了大大的提高。
5 結束語
文中基于DM3730平臺,描述了進行x264編碼器移植應該注意的主要問題,然后通過編譯選項優(yōu)化、內存優(yōu)化、C語言代碼的優(yōu)化和匯編代碼的優(yōu)化等優(yōu)化方法對x264編碼器進行了優(yōu)化。最后視頻編碼測試表明,優(yōu)化的效果顯著,且均值信噪比下降不多。
評論