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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于SoC的MPEG-4視頻解碼加速器

          基于SoC的MPEG-4視頻解碼加速器

          作者: 時(shí)間:2012-12-13 來源:網(wǎng)絡(luò) 收藏

          1.3 算法的優(yōu)化

          1.3.1 長(zhǎng)乘法的處理

          在圖1的虛線中, 前一級(jí)乘加運(yùn)算的結(jié)果要與C4相乘, 如果輸入數(shù)據(jù)F(k ) 和系數(shù)Ci都是16位數(shù)據(jù), 為了保證精度就要使用32 位乘16 位的乘法器,這必然成為整個(gè)電路中的關(guān)鍵路徑, 影響其性能。若用下面的式(4) 對(duì)虛線內(nèi)的條路徑做變換, 雖然增加了乘法數(shù)目, 但是不僅去除掉32 位乘16 位的乘法器, 而且有利于下文將要提及的OnlyDC 和Halfzero情況的加速。

          變換后的虛線內(nèi)的算法流程如圖2 所示。

          圖2 chen 算法變換Ci= cos( iπ/16)

          1.31. OnlyDC 和Halfzero

          本文將F(k )分為三種情況:

          (1) F(k )只有F(0)為非零數(shù)據(jù), 我們稱這種情況為OnlyDC;

          (2) F(k )中F(0) , F(1) , F(2) 和F(3) 為非零數(shù)據(jù), 其他四個(gè)數(shù)據(jù)都為零, 這種情況稱為Halfzero;

          (3) 其它情況都?xì)w入普通情況。我們用軟件直接的方法對(duì)典型素材作了統(tǒng)計(jì)(見表1) , 發(fā)現(xiàn)OnlyDC 和Halfzero的情況占了很大比例, 加速這兩種情況的計(jì)算對(duì)加速整個(gè)的IDCT 運(yùn)算有重要意義。

          由一維IDCT 式(5) 可以看出, 對(duì)于OnlyDC 情況, f ( i) 就是F (0)/1.414 。

          其中c (0) =1/1.414 ,c ( i) = 1, i= 1, 2....N - 1。如果我們把每次行和列的一維IDCT 結(jié)果放大2 倍得到f ′( i) , 對(duì)于 OnlyDC, F(0) 就是f ′( i) , 不需任何計(jì)算。這樣兩次一維IDCT 運(yùn)算后得到的結(jié)果f ′(x , y ) 將為f (x , y ) 的2 倍, 故只要將f ′(x , y ) 右移一位就可以得到正確的f (x , y )。由圖1 和圖2 可以看出, 在所有的F (k ) 到f ( i) 的計(jì)算路徑上, 都出現(xiàn)了且僅出現(xiàn)一次F (k ) 乘Ci, 這樣我們對(duì)常數(shù)Ci 取值時(shí)直接取2cos( iπ/16), 就達(dá)到了將一維IDCT結(jié)果放大1.414倍的目的。



          關(guān)鍵詞: 解碼 加速器 視頻 MPEG-4 SoC 基于

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();