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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于C6000系列DSP的MPEG-4編碼器實(shí)現(xiàn)

          基于C6000系列DSP的MPEG-4編碼器實(shí)現(xiàn)

          作者: 時(shí)間:2008-11-27 來源:網(wǎng)絡(luò) 收藏

          基于C6000系列DSP的MPEG-4編碼器實(shí)現(xiàn)

            2 編碼卡的硬件設(shè)計(jì)

            編碼卡包括幾部分:視頻采集、視頻的編碼、整個(gè)系統(tǒng)的CPLD控制、PC機(jī)與的通信等模塊,其結(jié)構(gòu)框圖如圖2所示。

            基于C6000系列DSP的MPEG-4編碼器實(shí)現(xiàn)

            2.1 視頻采集

            視頻采集部分主要完成模擬視頻到數(shù)字視頻的轉(zhuǎn)換,包括一片視頻采集芯片和一片小的CPLD。CPLD的作用是控制視頻采集芯片,將采得的數(shù)據(jù)從8位或16位轉(zhuǎn)化為32位,并且使數(shù)據(jù)按照Y、U、V分開的方式排列。這樣相當(dāng)于對(duì)采集到的數(shù)據(jù)進(jìn)行了一次預(yù)處理,以便于使用。另外,CPLD將32位寬的數(shù)據(jù)輸出給32位的FIFO。用32位的FIFO以及將視頻數(shù)據(jù)轉(zhuǎn)換為32位,可以使讀取視頻數(shù)據(jù)時(shí)32位的數(shù)據(jù)總線沒有空閑,從而提高讀取視頻數(shù)據(jù)的效率;這里使用FIFO是為了減少DSP讀取數(shù)據(jù)的時(shí)間、降低高速設(shè)備和低速設(shè)備的不匹配。每次FIFO半滿時(shí),CPLD會(huì)給DSP發(fā)送中斷信號(hào),并且在中斷處理程序中使用DMA方式讀取視頻數(shù)據(jù);如果不使用FIFO,DSP會(huì)頻繁中斷,從而花費(fèi)大量時(shí)間在入棧、出棧以及寄存器的設(shè)置上。

            2.2

            DSP讀入視頻數(shù)據(jù)后進(jìn)行先期處理,如將YUV格式轉(zhuǎn)為RGB格式等;然后進(jìn)行MPEG-4。在這一過程中,數(shù)據(jù)訪問通常要占用50%的時(shí)間,算術(shù)運(yùn)算要占用30%的時(shí)間,控制要占用20%的時(shí)間。因?yàn)樾枰M(jìn)行運(yùn)動(dòng)估計(jì)和運(yùn)動(dòng)補(bǔ)償,在數(shù)據(jù)存儲(chǔ)器中通常保存一幀I(原始幀)幀圖像和至少一幀P(預(yù)測(cè)幀)幀圖像,這些圖像占用的空間都比較大,因此一般都放在外部存儲(chǔ)器SDRAM里。在編碼過程中還要存儲(chǔ)DCT系數(shù)、運(yùn)動(dòng)向量、量化矩陣、可變長(zhǎng)編碼表、Z形編碼表等,由于占用較小的存儲(chǔ)空間而且會(huì)反復(fù)用到,因此把它們放在片內(nèi)存儲(chǔ)器中。



          關(guān)鍵詞: DSP MPEG-4 視頻編碼

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