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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于SOPC的MPEG4視頻播放器

          基于SOPC的MPEG4視頻播放器

          作者: 時(shí)間:2011-09-12 來源:網(wǎng)絡(luò) 收藏
          反量化
          系數(shù)的二維數(shù)組QF[ v][ u]被反量化,產(chǎn)生重構(gòu)的DCT系數(shù)。該過程的實(shí)質(zhì)是以量化步長為倍數(shù)的乘法運(yùn)算。

          本文引用地址:http://www.ex-cimer.com/article/150225.htm

          內(nèi)部編碼塊DC 系數(shù)的反量化過程不同于其他的AC系數(shù)。DC 反量化系數(shù)由一個(gè)常數(shù)因子intra_dc 與QF[ 0 ][0]相乘而得到。intra_dc 與編碼精度有關(guān),表1 顯示的即為兩者對(duì)應(yīng)關(guān)系。


          AC 系數(shù)的反量化要用到兩個(gè)加權(quán)矩陣,分別用于內(nèi)部子塊和非內(nèi)部子塊。用戶也可以使用自定義的量化矩陣。


          如果用QDCT 表示輸入已量化的AC 系數(shù),用DCT 表示反量化后的AC 系數(shù),那么AC 系數(shù)的IQ 變換公式如下:

          式中,quantiser_scale 為0~112 之間的兩組數(shù)值,分別對(duì)應(yīng)不同的比特流控制狀態(tài)。但是在本系統(tǒng)采用的XviDCodec 版本中,比特流控制功能并沒有得到實(shí)現(xiàn),所以這里quantiser_scale 的取值固定。


          反量化得到的結(jié)果通過飽和化,使其限制在[ - 2048 ,+ 2047 ]之間。


          IQ 在FPGA 上按照?qǐng)D3 的框圖進(jìn)行硬件實(shí)現(xiàn)。

          反離散余弦變換
          IDCT 是DCT 的逆過程,用于還原DCT 系數(shù)矩陣。


          IDCT 過程可由下面的公式描述:

          上式可視為一個(gè)2 個(gè)8 元向量的點(diǎn)積:


          圖4  反離散余弦變換的硬件實(shí)現(xiàn)結(jié)構(gòu)

          將8 元的輸入向量[ X0 , X1 , X2 , X3 , X4 , X5 , X6 ,X7 ]分成奇元素[ X1 , X3 , X5 , X7 ]和偶元素[ X0 , X2 , X4 ,X6 ] ,8 ×8 矩陣則用2 個(gè)4 ×4 矩陣來代替,奇元素和偶元素分別與這2 個(gè)矩陣v 和u 相乘,生成2 個(gè)4 ×4 向量p 和q,通過加減向量p 和q ,可得到輸出向量x。


          算法可以表示成下面的公式:

          8 ×8 矩陣的IDCT 算法,在FPGA 上按照?qǐng)D4所示的結(jié)構(gòu)加以硬件實(shí)現(xiàn)。


           



          關(guān)鍵詞: 播放器 視頻 MPEG4 SOPC 基于

          評(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); })();