基于OMAP3的視頻解碼器的通用解碼方案
?、艹绦蚪Y(jié)構(gòu)的考慮。DSP的片內(nèi)內(nèi)存速度最快,但是非常有限,所以必須將片外的數(shù)據(jù)倒入內(nèi)存。由于目前的編碼方式全都是采用基于宏塊的,每個宏塊至多16×16,所以比較通用的辦法是采用,DMA方式將要用到的數(shù)據(jù)提前倒入片內(nèi)。DMA傳送速度很快,所以可以并行也可以串行傳送。
⑤軟件加速的考慮??梢苑抡誌MGLIB的編寫規(guī)則用匯編語言對耗時最多的部分進行重寫,同時結(jié)合TI公司的數(shù)據(jù)手冊進行C語言級以及匯編級的程序優(yōu)化。由于TI公司編譯器的編譯效率一直在提高,從通用及可讀性的角度上講,推薦采用C語言。
在OMAP上開發(fā)程序通常分為兩部分:ARM端負責控制、顯示等;DSP端負責數(shù)據(jù)處理。采用TI公司提供的DSP開發(fā)工具CCS在這兩端分別開發(fā),視頻解碼流程如圖2所示。
ARM端:初始化整個OMAP3530芯片,包括ARM、DSP、TC等的時鐘設(shè)置,DSP的開啟關(guān)閉以及復位,LCD、定時器等各個外設(shè)的初始化。在啟動完成后,ARM內(nèi)核就一直查詢共享內(nèi)存中的某一標志位,當查詢到一幀解碼結(jié)束時,就啟動LCD專用DMA,在LCD上進行顯示。
DSP端:負責壓縮的解碼。將壓縮碼流放置在SDRAM中。與基于PC的解碼程序的主要區(qū)別在于,由于DSP的片內(nèi)內(nèi)存有限,所以不可能將當前幀以及參考幀都放在片內(nèi),所以以宏塊為單位在SDRAM與片內(nèi)內(nèi)存之間進行數(shù)據(jù)傳遞。另外,由于在液晶屏上顯示時需要轉(zhuǎn)換成RGB圖像,所以,在每一幀結(jié)束后都要通過YUV轉(zhuǎn)RGB來實現(xiàn)實時顯示。
4 實驗結(jié)果
在0MAP3530平臺上實現(xiàn)了AVS解碼,表4給出了OMAP3530上的實驗數(shù)據(jù)。
結(jié)語
TI公司提出的0MAP體系結(jié)構(gòu)開放性好,在這種體系結(jié)構(gòu)下編寫的程序移植方便,適合于多媒體平臺的應(yīng)用。越來越多的廠商選用OMAP芯片作為移動多媒體視頻的載體,OMAP與流行的視頻標準的結(jié)合在移動通信與多媒體信號處理方面也將有良好的應(yīng)用前景。
評論