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

          新聞中心

          EEPW首頁 > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > 嵌入式視頻圖像系統(tǒng)壓縮算法的實(shí)現(xiàn)和優(yōu)化

          嵌入式視頻圖像系統(tǒng)壓縮算法的實(shí)現(xiàn)和優(yōu)化

          作者:張春光 吉林市人民廣播電臺 劉化彤 長春光學(xué)科技發(fā)展有限責(zé)任公司 時間:2009-03-17 來源: 收藏

            為避免發(fā)生的Cache大量缺失,采取 3種方法[6] 。

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

            1.整個編碼算法應(yīng)該分成 3個模塊: 宏塊編碼、運(yùn)動估計(jì)、運(yùn)動重建 , 這樣使每個模塊代碼都適合 L1P。每次循環(huán)以宏塊組為單位 , 宏塊組的大小由 L1D大小決定。在宏塊編碼模塊中, 當(dāng)宏塊組被傳送到片內(nèi),他們一起經(jīng)過 DCT Direct Cosine Transform 、量化、熵編碼 , 直到宏塊組編碼模塊結(jié)束為止,L1D才刷新這組宏塊。同時對應(yīng)的程序包括 DCT、量化、熵編碼也被保存到 L1P。

            2.盡量減少數(shù)據(jù)類型的大小??梢杂?8位數(shù)據(jù)就不用 16位數(shù)據(jù) , 這樣不但節(jié)省空間 ,而且能提高L1D的使用效率。因?yàn)?L1D行的大小是固定的, 在一行內(nèi)如果采用 8位數(shù)據(jù) 比 16位數(shù)據(jù)可多放一倍 , 從而減少程序中 Cache缺失情況的發(fā)生。

            3.采用乒乓緩存結(jié)構(gòu), 提高 Cache命中率 , 減少 CPU等待時間。

            在視頻編碼模塊中,當(dāng)前幀和參考幀數(shù)據(jù)放在片外存儲器,在編碼過程中需要依次對圖像幀中的每個宏塊進(jìn)行操作。但宏塊直接從片外內(nèi)存讀取,這就會發(fā)生CPU等待??梢栽O(shè)置兩對片上緩存,一對存放當(dāng)前幀宏塊,一對存放參考幀宏塊,它們以乒乓方式工作。乒乓緩沖工作模式如圖1所示。編碼前E DMA將片外的當(dāng)前幀中編碼宏塊數(shù)據(jù)和在搜索范圍內(nèi)的參考幀宏塊數(shù)據(jù)搬移到片上內(nèi)存。在用EDMA搬移數(shù)據(jù)到其中一塊片內(nèi)緩存的同時,,處理器可以對另一塊緩存中的數(shù)據(jù)進(jìn)行處理。經(jīng)過這樣的修改,CPU一直從片上讀取存儲器數(shù)據(jù)大大減少了CPU阻塞情況的發(fā)生,提高了編碼速度。

           

            圖2 乒乓緩沖存儲器結(jié)構(gòu)

            SAD和像素插值的

            SAD(Sum ofAbsolute Difference)是運(yùn)動估計(jì)模塊[7]關(guān)鍵模塊 , 而 DM642提供了一套豐富的視頻和圖像專用指令可以高效實(shí)現(xiàn)運(yùn)動估計(jì)算法。

            LDNDW (Load Non2alignedDoubleWord)指令,可以一次讀取 64位無邊界數(shù)據(jù)。這個指令可以從當(dāng)前幀中和參考幀一次讀取8個 8位像素數(shù)據(jù)。因此可以提高當(dāng)前幀和參考幀宏塊數(shù)據(jù)的搬移速度。

            SUBABS4(Subtractwith Absolute)指令,計(jì)算在兩組 8位數(shù)據(jù)包之間的 4個絕對值之差。



          評論


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