<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

作者: 時(shí)間:2012-09-01 來(lái)源:網(wǎng)絡(luò ) 收藏
畢后,乒乓區域交換。

需要通過(guò)EDMA搬移的數據有待編碼的宏塊,前后幀對應的參考宏塊,和編碼后的重構宏塊(B幀不需要),這些宏塊都包括亮度塊和色度塊。EDMA在搬大量數據時(shí)才能將它的性能發(fā)揮到極致,如果每編完一個(gè)宏塊就進(jìn)行一次乒乓緩存交換,那么在頻繁的配置EDMA通道參數上就耗費了過(guò)多的CPU周期。有限的片內存儲空間,制約著(zhù)不能一次搬太多的宏塊,一般一次搬7--9個(gè)宏塊為宜。由于EDMA的同步信息是由CPU發(fā)出的,我們自然想到QDMA,但QDMA適用于單個(gè)的,獨立的快速搬移數據,對于這種周期性的,重復性的搬移并沒(méi)有優(yōu)勢。

為了提高EDMA的效率,可以采用EDMA鏈,最多開(kāi)辟12個(gè)EDMA通道,讓其首尾相連,這樣只需觸發(fā)一次CPU,可將待編碼的亮度塊色度塊,參考幀的亮度塊和色度塊……一次搬完,如圖2所示。在配置EDMA通道時(shí),我們注意到頻繁更換的只是EDMA的源地址和目的地址,而其它參量是不變的。由于EDMA控制器是基于RAM結構的,每個(gè)通道是通過(guò)參數表來(lái)配置的,每一個(gè)通道的參數都可以在0x01A0000h~0x01A07ffh的2KB的配置表中找到自己固定的位置,所以在更新某一通道的源地址和目的地址時(shí),直接往配置表寫(xiě)上新地址就行了,而不必調用CSL庫中的相應的cache函數來(lái)修改源地址和目的地址。

基于DM642DSP的視頻編碼優(yōu)化方法
圖2 EDMA鏈示意圖

基于DM642DSP的視頻編碼優(yōu)化方法
圖3 六邊形搜索算法

快速運動(dòng)算法的優(yōu)化

包括MPEG2,MPEG4和H.261、H.263、H264在內的標準都是采取基于塊的運動(dòng)估計模型。當然不同的標準塊的大小也不一樣,在H.264標準中,支持七種塊大小(16x16、16x8、8x16、8x8、8x4、4x8、4x4)。眾所周知:運動(dòng)估計對減少時(shí)間域的冗余起了很大的作用,從而能大大提高編碼效率,但同時(shí)它的計算量特別大,占用了大概整個(gè)編碼系統的70%~80%的資源。一個(gè)好的編碼算法就是要在計算量和編碼效率兩者之間取得一個(gè)很好的平衡。

全搜索(FS)能夠保證在全局范圍內搜到一個(gè)最佳的位置,但是其計算量是驚人的。對于在嵌入式系統中應用是不現實(shí)的。一般在實(shí)際應用中都是把幾種算法結合起來(lái),在本系統中采取的是:六邊形搜索法,如圖3所示,先以預測點(diǎn)為中心進(jìn)行大模式搜索,如果最優(yōu)點(diǎn)不在六邊形中心,則將六邊形的中心移至改點(diǎn),重復大模式搜索,直到最優(yōu)點(diǎn)在六邊形中點(diǎn),然后在這點(diǎn)切換到小模式搜索,此搜索法相對于經(jīng)典的三步法,四步法搜索的點(diǎn)更少。

由于是在DSP平臺上,對監控系統實(shí)時(shí)性要求比較高,提出幾種基于DSP平臺的:為了提高L1D的cache的命中率,根據cache不命中流水的原理,一次將參考幀全部灌入L1D內,然后在做運動(dòng)估計時(shí)將七個(gè)宏塊一齊做,然后再做七個(gè)宏塊的運動(dòng)補償,DCT,量化,反DCT,反量化,編碼,寫(xiě)碼流。而不是像一般的步驟,對每一個(gè)宏塊先做運動(dòng)估計,然后運動(dòng)補償,然后DCT,映射到L1D一次,如果每個(gè)宏塊單獨做,在做第一個(gè)宏塊運動(dòng)估計時(shí)參考幀會(huì )由L2映射到L1D,做第二次運動(dòng)估計時(shí),因為之前程序做過(guò)DCT,量化等運算,映射到L1D里的參考幀數據已經(jīng)被沖走,還得從L2中重新載入。同樣的對于程序段一級緩存L1P來(lái)說(shuō),DCT、量化、反DCT、反量化、編碼、寫(xiě)碼流等函數都只需映射一次到L1P,而不必被反復地映射,沖掉,再次映射。

在JVT的提案中有很多運動(dòng)矢量預測算法,如利用運動(dòng)矢量在時(shí)間域有很強的相關(guān)性這一特性,我們能夠得到比較精確的起始搜索位置。但他不太適合DSP平臺,因為這樣我們就要保留整個(gè)一幀的運動(dòng)矢量,以CIF圖像格式為例,需要12kB的空間,保存在資源緊張的片內顯然是不合適的。保存在片外存儲空間,調用的時(shí)候,先從片外先映射到L2cache,再從L2映射到L1D,其間流水不命中等待的cycle數,還不如從開(kāi)始不太精確的初始位置多搜幾個(gè)點(diǎn)。

整數DCT的優(yōu)化詳解

DCT,量化,反DCT,反量化在整個(gè)編碼程序中占用了大概20%~25%的時(shí)間,所以有必要對他們的優(yōu)化花一番功夫,本文舉整數DCT為例說(shuō)明如何對程序進(jìn)行匯編級的優(yōu)化。H.264采用的整數DCT,不僅滿(mǎn)足一般DCT的特性,將圖像的能量集中到左上角位置,直流系數和低頻系數中,還有它特有的幾個(gè)優(yōu)點(diǎn):

-它是整數變換,所有的運算都是整數算法,變換矩陣系數十分簡(jiǎn)單,核心變換部分可以?xún)H僅用加法



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>