實(shí)現(xiàn)離屏視頻幀合成與分解的可移植可擴(kuò)展解決方案
3.0 實(shí)現(xiàn)
離屏幀合成器/分解器功能可以有多種實(shí)現(xiàn)方式:
3.1 使用獨(dú)立于平臺(tái)的算法
這種方法采用可以在CPU上運(yùn)行的通用算法。雖然這種實(shí)現(xiàn)具有很好的可移植性,但會(huì)導(dǎo)致CPU負(fù)擔(dān)過(guò)重。這是因?yàn)閹暮铣?分解過(guò)程通常包含以下一些操作:
●縮放或重新調(diào)整視頻幀尺寸(放大或縮小)
●輸入視頻幀在輸出幀中的定位
●輸入幀的剪切
●輸出幀的剪切
●輸入通道的Alpha混合
●輸入/輸出幀的旋轉(zhuǎn)
在幀速率為30fps的視頻流情況下,這些操作必須以1/30s即33.33ms的幀周期執(zhí)行。如果幀的像素分辨率更高,比如720p、1080p,那么處理這些幀將成為CPU很重的負(fù)擔(dān)。CPU負(fù)擔(dān)的加重將導(dǎo)致不良的用戶界面,因?yàn)镮/O互動(dòng)少了。如果處理器不能在如此短的幀周期內(nèi)處理完一幀,那么在幀合成過(guò)程中有可能發(fā)生丟幀現(xiàn)象。
3.2 使用特殊平臺(tái)縮放器
一些嵌入式處理器提供特殊平臺(tái)縮放器的硬件實(shí)現(xiàn),它們實(shí)際上是用硬件方式實(shí)現(xiàn)的多相過(guò)濾器,可以針對(duì)不同縮放比例提供可編程的過(guò)濾系數(shù)。
為了在應(yīng)用程序中發(fā)揮這種特殊平臺(tái)功能,CPU芯片供應(yīng)商將提供定制的設(shè)備驅(qū)動(dòng)程序。我們可以通過(guò)縮放器設(shè)備驅(qū)動(dòng)程序使用這種縮放器來(lái)實(shí)現(xiàn)合成功能。應(yīng)用程序可以利用不同的輸入/輸出剪切參數(shù)一次調(diào)整一個(gè)輸入幀并合成到輸出幀中。一旦縮放器調(diào)整好了一個(gè)輸入幀的大小并將它放到輸入幀中,它就會(huì)向CPU內(nèi)核發(fā)出中斷信號(hào)。
針對(duì)將N個(gè)輸入幀合成到一個(gè)輸出幀的應(yīng)用而言,它必須在一個(gè)幀周期內(nèi)完成N次尺寸調(diào)整操作。這些縮放器非常高效,可以在可接受的時(shí)間限制內(nèi)完成縮放處理。合成幀的輸出幀速率取決于單次縮放操作所占用的時(shí)間。
如果是N到1的合成、并且輸入/輸出幀具有相同的像素分辨率,那么
N代表輸入數(shù)量
T代表一次縮放操作所花的時(shí)間
如果合成中的輸入/輸出幀具有不同的像素分辨率,那么:
Tn代表將第n個(gè)輸入通道的幀縮放后放到輸出通道所花的時(shí)間。其中n:0->N
上述公式同樣可以應(yīng)用于具有一個(gè)輸入和N個(gè)輸出通道的分解器。
雖然使用這種方法可以提供高效的解決方案,但它不具有可移植性。這些硬件功能對(duì)嵌入式處理器來(lái)說(shuō)是特定的。要么不同的嵌入式處理器不一定有這些功能,要么是以不同的方式實(shí)現(xiàn),具有不同的功能清單。
控制這些定制硬件的設(shè)備驅(qū)動(dòng)程序提供的接口和功能在每種嵌入式處理器上是不同的。而且一般來(lái)說(shuō),像旋轉(zhuǎn)、Alpha混合等功能無(wú)法用這種縮放器硬件來(lái)實(shí)現(xiàn)。
評(píng)論