基于嵌入式平臺的視頻編碼器的實現
將編碼程序中的較復雜的部分程序段使用arm匯編進行改寫,這樣可以很大程度的提高代碼的運行速度。例如下面就是宏塊預測predict.c中的一段匯編優化的代碼,C代碼如下:
4.3 基于PXA255結構的優化
結合PXA255硬件結構特點,從以下幾個方面對h.264編碼程序進行優化處理:
(1)合理分配變量的存儲位置。根據片內存儲器容量小而存取速度快,片外存儲器容量大但存取速度慢的特點,在分配存儲器的時候對于那些經常使用的變量放在片內,如VLC表、運動矢量、反量化、反DCT的系數以及其它中間變量等,而對于那些執行次數比較少或者比較大的變量如參考幀則放在片外。此外由于編譯和分配空間是以文件為單位的,所以把頻繁使用的函數放在同一文件中,再將這個文件放入片內存儲器以高效地利用有限的片內資源。
(2)PXA255處理器中集成了大量的DSP多媒體操作指令,使用這些指令可以極大的提高程序的運行效率。
(3)指令并行執行是提高程序執行效率的很好的方法,PXA255處理器中引入了Branch Target Buffer技術,以實現指令執行的流水線。
5 實驗結果
為了驗證程序優化的效果,改變每次采集的幀數進行實驗結果分析。結果如表1所示。由表l中的實驗結果可知,經過優化的h.264編碼器每秒能處理20幀左右的QCIF圖像,而圖像的質量沒有什么影響。因此,優化后,h.264壓縮算法能夠對采集到的圖像進行實時壓縮,具有很好的實用性。圖5為采集的視頻經過h.264壓縮后的視頻流。
6 結束語
本文描述了在嵌入式平臺PXA255上實現新一代視頻壓縮標準h.264編碼算法,并結合硬件芯片特點和專有匯編指令對原程序進行相應優化,實現了編碼器實時編碼的要求。研究基于嵌入式平臺的h.264視頻編碼算法有很大的實用價值,它的優異的壓縮性能也將在嵌入式數字電視廣播以及視頻實時通信等各個方面發揮作用。
linux操作系統文章專題:linux操作系統詳解(linux不再難懂)
評論