<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 實現(xiàn)離屏視頻幀合成與分解的可移植可擴展解決方案

          實現(xiàn)離屏視頻幀合成與分解的可移植可擴展解決方案

          作者: 時間:2014-03-18 來源:網(wǎng)絡 收藏

          3.0 實現(xiàn)

          離屏幀合成器/分解器功能可以有多種實現(xiàn)方式:

          3.1 使用獨立于平臺的算法

          這種方法采用可以在CPU上運行的通用算法。雖然這種實現(xiàn)具有很好的可移植性,但會導致CPU負擔過重。這是因為幀的合成/分解過程通常包含以下一些操作:

          ●縮放或重新調整視頻幀尺寸(放大或縮小)

          ●輸入視頻幀在輸出幀中的定位

          ●輸入幀的剪切

          ●輸出幀的剪切

          ●輸入通道的Alpha混合

          ●輸入/輸出幀的旋轉

          在幀速率為30fps的視頻流情況下,這些操作必須以1/30s即33.33ms的幀周期執(zhí)行。如果幀的像素分辨率更高,比如720p、1080p,那么處理這些幀將成為CPU很重的負擔。CPU負擔的加重將導致不良的用戶界面,因為I/O互動少了。如果處理器不能在如此短的幀周期內處理完一幀,那么在幀合成過程中有可能發(fā)生丟幀現(xiàn)象。

          3.2 使用特殊平臺

          一些嵌入式處理器提供特殊平臺的硬件實現(xiàn),它們實際上是用硬件方式實現(xiàn)的多相過濾器,可以針對不同縮放比例提供可編程的過濾系數(shù)。

          為了在應用程序中發(fā)揮這種特殊平臺功能,CPU芯片供應商將提供定制的設備驅動程序。我們可以通過設備驅動程序使用這種縮放器來實現(xiàn)合成功能。應用程序可以利用不同的輸入/輸出剪切參數(shù)一次調整一個輸入幀并合成到輸出幀中。一旦縮放器調整好了一個輸入幀的大小并將它放到輸入幀中,它就會向CPU內核發(fā)出中斷信號。

          針對將N個輸入幀合成到一個輸出幀的應用而言,它必須在一個幀周期內完成N次尺寸調整操作。這些縮放器非常高效,可以在可接受的時間限制內完成縮放處理。合成幀的輸出幀速率取決于單次縮放操作所占用的時間。

          如果是N到1的合成、并且輸入/輸出幀具有相同的像素分辨率,那么

          N代表輸入數(shù)量

          T代表一次縮放操作所花的時間

          如果合成中的輸入/輸出幀具有不同的像素分辨率,那么:

          Tn代表將第n個輸入通道的幀縮放后放到輸出通道所花的時間。其中n:0->N

          上述公式同樣可以應用于具有一個輸入和N個輸出通道的分解器。

          雖然使用這種方法可以提供高效的解決方案,但它不具有可移植性。這些硬件功能對嵌入式處理器來說是特定的。要么不同的嵌入式處理器不一定有這些功能,要么是以不同的方式實現(xiàn),具有不同的功能清單。

          控制這些定制硬件的設備驅動程序提供的接口和功能在每種嵌入式處理器上是不同的。而且一般來說,像旋轉、Alpha混合等功能無法用這種縮放器硬件來實現(xiàn)。


          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();