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

          新聞中心

          EEPW首頁 > 模擬技術(shù) > 設(shè)計應(yīng)用 > 基于DM642DSP的視頻編碼優(yōu)化方法

          基于DM642DSP的視頻編碼優(yōu)化方法

          作者: 時間:2012-09-01 來源:網(wǎng)絡(luò) 收藏
          法和移位來實現(xiàn)。非常有利于在DSP實現(xiàn)。

          -可以保證編碼端的變換和解碼端的反變換完全匹配,沒有誤差。

          首先我們對變換矩陣做必要的調(diào)整,如表達式(1),(2)所示,這樣做的好處是行變換和列變換的操作完全一樣,簡化了運算。接下來就是用線性匯編或純匯編來實現(xiàn)兩個矩陣的相乘。

          基于DM642DSP的視頻編碼優(yōu)化方法

          因為DM642CPU有兩個類似的可進行數(shù)據(jù)處理的通路A和B,每個通路有4個完全相同的運算單元(.L,.S,.M,.D)我們可將矩陣的一四兩行的運算放在A側(cè)進行,二三兩行在B側(cè)進行運算,這樣可以保證A,B兩側(cè)可同時并行計算。由于整數(shù)DCT變換是在16比特精度下完成的,矩陣相乘我們自然會想到匯編指令DOTP2,但是不能全部用DOTP2來完成運算,否則一個周期內(nèi)就只有.M單元在工作,而其他運算單元都閑著。由于整數(shù)DCT矩陣系數(shù)的特殊性,我們完全可以用加法指令和移位指令來代替乘法指令。表1是一個16x16宏塊進行DCT變換,匯編優(yōu)化前后的cycle數(shù)的對比。

          基于DM642DSP的視頻編碼優(yōu)化方法
          表一 16x16宏塊DCT所需的周期數(shù)

          在寫匯編指令時我們要盡量做到在同一個周期內(nèi),讓位于A,B兩側(cè)的8個運算單元能夠同時工作,在做DCT時我們發(fā)現(xiàn)M單元不夠用,而有時在其他情況下,M單元根本就沒用上,這時就要想辦法用M去代替其他運算單元。如求殘差時要把8位數(shù)擴展成16位數(shù),一般用UNPKLU4和UNPKHU4指令來完成,也可以用DOTPU4乘以0x01010101,同樣也可以完成擴展要求。

          基于DM642DSP的視頻編碼優(yōu)化方法
          表二 H.264編碼器性能測試

          實驗結(jié)果與總結(jié)

          由于此編碼器是針對監(jiān)控系統(tǒng)的應(yīng)用,在追求編碼速度的時候,對圖像質(zhì)量做了一定的犧牲。下面是編碼器的一些參數(shù)配置:圖像皆為CIF大小,參考幀用了一幀,搜索范圍是[-16,16],相鄰兩個P幀間插入兩個B幀,即IBBPBBP……的編碼方式,P幀和B幀做運動估計時最小塊到8x8塊,即只在16x16、16x8、8x16、8x8幾種模式間做選擇,量化步長設(shè)為30.。采用CAVLC編碼方式。

          本文針對實時視頻監(jiān)控的應(yīng)用要求,結(jié)合DM642嵌入式系統(tǒng)的硬件特性,從程序的總體架構(gòu),數(shù)據(jù)的存放位置,數(shù)據(jù)的搬移進行了分析,給出了切實有效的。對占用系統(tǒng)資源較多的運動搜索給出了適合在DSP平臺下的算法,對整數(shù)DCT進行了在匯編層面的優(yōu)化,并總結(jié)了一下優(yōu)化技巧。經(jīng)測試基本達到視頻監(jiān)控的實時要求,并且有較好的圖像質(zhì)量和碼率。


          上一頁 1 2 3 下一頁

          評論


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