亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于dsp流水結(jié)構(gòu)的快速子像素插值計算方法

文檔序號:7685381閱讀:259來源:國知局
專利名稱:基于dsp流水結(jié)構(gòu)的快速子像素插值計算方法
技術領域
本發(fā)明涉及一種數(shù)字視頻編碼技術,尤其涉及一種基于DSP流水結(jié)構(gòu)的快 速子像素插值計算方法。
背景技術
現(xiàn)有數(shù)字視頻編碼技術通常采用運動估計來實現(xiàn)幀間壓縮編碼,在編碼的 運動估計中,很多像素塊其當前點偏離1/2像素點的位置得到的匹配點比整數(shù)像 素的位置得到的匹配點有更小的殘差,由此可知,在一個內(nèi)插到半像素精度的 區(qū)域進行搜索可以得到更好的匹配,從而減小碼率。進一步地,1/4像素點的插 值可以進一步減小碼率。事實上,MPEG2編解碼標準就有1/2像素插值,到了 H,264和AVS,又增加了 1/4^f象素插值。圖1給出了參考圖像整數(shù)樣本、1/2像素樣本和1/4像素樣本的位置關系, 其中大寫字母標記的為整數(shù)樣本位置,灰底色和白底色小寫字母分別標記為1/2 像素樣本和1/4像素樣本位置。1/2像素樣本位置的預測值通過4抽頭濾波器 Fl[-1,5,5,-1]計算得到。以l/2像素樣本b為例,其計算過程如下首先用Fl對水平方向上最近的4個整數(shù)樣本C、 D、 E和F濾波,得到中 間值b'-(-C + 5D + 5E-F);經(jīng)過飽和運算,最終的預測值b = Clip((b'+ 4) 3) (Clip表示計算結(jié)果飽和在(0, 255 )內(nèi),">>"表示移位)。1/4像素樣本位置的預測值通過4抽頭濾波器F2[1,7,7, l]計算得到,以1/4 像素樣本a為例,其計算過程如下首先用F2在水平方向上對四個樣本ee, D, b和E濾波,得到中間值a' = (ee + 7D + 7b + E);經(jīng)過飽和運算,最終的預測值a = Clip((a'+ 64) 7)。其中ee和 b是相應位置1/2像素樣本中間值,D和E是相應位置整數(shù)樣本i文大8倍的值。1/4像素精度估值相對于整像素估值雖然可以節(jié)省20%的碼率,但是也帶來 了運算復雜度增加的新問題。由于子像素插值運算量較大,現(xiàn)在有VLSI結(jié)構(gòu)已可以解決這個問題,但是在DSP平臺上,依然沒有有效的方法來解決這一問題; 用于VLSI結(jié)構(gòu)的方法通常并不能適應DSP的軟件流水,甚至會導致DSP平臺 更差的性能。發(fā)明內(nèi)容本發(fā)明的目的是提供一種基于DSP流水結(jié)構(gòu)的快速子像素插值計算方法, 通過相關性圖設計高效的軟件流水,并優(yōu)化內(nèi)存空間的使用方法和直接內(nèi)存存 取(DMA)方法,將數(shù)據(jù)盡量打包處理,實現(xiàn)高效的軟件流水。為了解決上述技術問題,本發(fā)明采用了一種基于DSP流水結(jié)構(gòu)的快速子像 素插值計算方法,所述方法涉及一個DSP芯片的內(nèi)部寄存器和一個兩級存儲器, 內(nèi)部寄存器分為A、 B兩組,存儲器包括一級內(nèi)存L1和二級內(nèi)存L2;所述插值 計算方法包含以下步驟步驟l、首先由DMA從外存?zhèn)鬏敂?shù)據(jù)到L2中,內(nèi)部寄存器使用無邊界調(diào) 整雙字讀取指令LDNDW和邊界調(diào)整雙字讀取指令LDDW向LI讀取數(shù)據(jù),LI 接收指令后搜索L2的原始數(shù)據(jù),讀取數(shù)據(jù)到內(nèi)部寄存器;步驟2、通過低高半字打包指令PACKLH、右移拼接指令SHRMB、低位打 包指令PACK2和高低半字打包指令PACKHL調(diào)整數(shù)據(jù)在寄存器中的位置,確 保數(shù)據(jù)在合適的位置中;步驟3、使用無符號8位點積指令DOTPU4在一個時鐘周期內(nèi)實現(xiàn)或執(zhí)行 兩個16位點積指令DOTP2,并將結(jié)果求和,在一到兩個時鐘周期內(nèi)完成四抽頭 濾波器的濾波,產(chǎn)生的中間值以32位的形式存儲在目的寄存器中;步驟4、使用低位打包指令PACK2將兩個32位的中間值的低16位打包為 一個32位的值,并將高低16位分別存儲,在打包的同時完成濾波系數(shù)的交換;步驟5、使用加法指令ADD2和移位指令SHR2對寄存器的高低16位進行 加法和移位的操作,得到插值的最終值;步驟6、使用無符號數(shù)據(jù)飽和打包指令SPACKPU4將4個16位有符號數(shù)據(jù) 飽和為4個8位無符號數(shù)據(jù)進行存儲。進一步的,所述的二級內(nèi)存L2使用雙緩沖的兵乓結(jié)構(gòu)分配空間,并配置 DMA。所述的雙緩沖Buffer A和BufferB的大小為11520字節(jié)。進一步的,所述的從外存?zhèn)鬏敂?shù)據(jù)的實現(xiàn)過程如下首先由DMA從外存?zhèn)?輸數(shù)據(jù)到L2中的Buffer A中處理;處理數(shù)據(jù)的同時,啟動另一個DMA,傳輸 數(shù)據(jù)到L2中的Buffer B;處理Buffer B的同時,再傳輸數(shù)據(jù)到Buffer A,循環(huán) 反復,直到指定的數(shù)據(jù)處理完成。由于采用了以上的基于DSP流水結(jié)構(gòu)的快速子像素插值計算方法,與現(xiàn)有 技術相比可以降低運算復雜度,提高運算速度。


本發(fā)明的基于DSP流水結(jié)構(gòu)的快速子像素插值計算方法由以下的實施例及 附圖詳細給出。圖l為本發(fā)明的整數(shù)樣本、1/2像素樣本和1/4像素樣本的位置示意圖;圖2為本發(fā)明的1/2子像素插值計算方法實現(xiàn)過程示意圖;圖3為本發(fā)明的子像素插值計算方法與其他計算方法的實現(xiàn)效果比較示意圖。
具體實施方式
以下將對本發(fā)明的基于DSP流水結(jié)構(gòu)的快速子像素插值計算方法作進一步 的詳細描述。所述方法涉及一個DSP芯片的內(nèi)部寄存器和一個兩級存儲器,內(nèi) 部寄存器分為A、 B兩組,存儲器包括一級內(nèi)存L1和二級內(nèi)存L2;以點b和點 a為例分別說明1/2像素點和1/4像素點的具體實施過程,其中1/2像素點插值 計算方法如圖2所示,實現(xiàn)步驟如下Sal 、首先由直接內(nèi)存存取(DMA)從外存?zhèn)鬏敂?shù)據(jù)d0-dl0到L2中,內(nèi)部 寄存器使用無邊界調(diào)整雙字讀取指令LDNDW或邊界調(diào)整雙字讀取指令LDDW 向Ll讀取數(shù)據(jù),Ll接收指令后搜索L2的原始數(shù)據(jù),讀取數(shù)據(jù)到內(nèi)部寄存器的 A組和B組;Sa2、在A組和B組分別使用低高半字打包指令PACKLH和右移拼接指令 SHRMB來調(diào)整數(shù)據(jù)在寄存器中的位置,確保數(shù)據(jù)在合適的位置;Sa3、使用無符號8位點積指令DOTPU4在一個時鐘周期內(nèi)完成四抽頭濾波 器Fl[-1,5,5,-1]的濾波,該濾波系數(shù)為k3 k0, k3k2klk0的值為0x節(jié)505ff,濾波后得到的中間值m0 m7以32位的形式存儲在目的寄存器中;Sa4、使用低位打包指令PACK2將兩個32位的中間值打包為一個32位的 值,高低16位分別存儲兩個中間值,使用打包指令的同時完成數(shù)據(jù)m3和m4 在A、 B兩邊的交換;Sa5、使用加法指令ADD2和移位指令SHR2同時對寄存器的高低16位進 行加法和3位移位操作,得到插值的最終值m'O- m'7;Sa6、使用無符號數(shù)據(jù)飽和打包指令SPACKPU4來將4個16位有符號數(shù)據(jù) 飽和為4個8位無符號數(shù)據(jù)進行存儲。其中1/4像素點插值計算方法實現(xiàn)步驟如下Sbl、首先由DMA從外存?zhèn)鬏敂?shù)據(jù)dO-dlO到L2中,內(nèi)部寄存器使用無邊 界調(diào)整雙字讀取指令LDNDW和邊界調(diào)整雙字讀取指令LDDW向Ll讀取數(shù)據(jù), Ll接收指令后搜索L2的原始數(shù)據(jù),讀取數(shù)據(jù)到內(nèi)部寄存器的A組和B組;Sb2、使用低高半字打包指令PACKLH、低位打包指令PACK2、高低半字 打包指令PACKHL來調(diào)整數(shù)據(jù)在寄存器中的位置,確保數(shù)據(jù)在合適的位置;Sb3、使用無符號16位點積指令DOTP2在兩個時鐘周期內(nèi)完成四抽頭濾波 器F2[l,7,7,l]的濾波,該濾波系數(shù)為k3 k0, k3k2klk0的值為0xffD505ff,濾波 后得到的中間值m0 m7以32位的形式存儲在目的寄存器中;Sb4、使用〗氐位打包指令PACK2將兩個32位的中間值打包為一個32位的 值,高低16位分別存儲兩個中間值,使用打包指令的同時完成數(shù)據(jù)m3和m4 在A、 B兩邊的交換;Sb5、使用加法指令ADD2和移位指令SHR2同時對寄存器的高低16位進 行加法和移位7位的操作,得到插值的最終值m'0~ m'7;Sb6、使用無符號數(shù)據(jù)飽和打包指令SPACKPU4來將4個16位有符號數(shù)據(jù) 飽和為4個8位無符號數(shù)據(jù)進行存儲。以上所述的二級內(nèi)存L2使用雙緩沖的兵乓(ping-pong)結(jié)構(gòu)分配空間并配 置DMA,完成數(shù)據(jù)傳輸,雙緩沖為Buffer A和Buffer B,所述的Buffer大小為 11520字節(jié)。所述的數(shù)據(jù)傳輸實現(xiàn)過程如下首先由DMA從外存?zhèn)鬏敂?shù)據(jù)到L2中的 Buffer A中處理;處理數(shù)據(jù)的同時,啟動另 一個DMA,傳輸數(shù)據(jù)到L2中的BufferB;處理BufferB的同時,再傳輸數(shù)據(jù)到BufferA,循環(huán)反復,直到指定的數(shù)據(jù) 處理完成。本發(fā)明對SD格式(720x576)的測試序列Mobile進行子j象素插值處理,在7 個DSP的時鐘周期內(nèi)完成了一個像素點的1/2像素插值,在9個DSP的時鐘周 期內(nèi)完成了一個像素點的1/4像素插值。在編譯條件為非調(diào)試模式,打開三級優(yōu) 化選項時,所需的處理的時間約為18.2ms;通過其它方法得到子像素插值的時 間如圖3所示,如初始的C代碼處理方式,在非調(diào)試模式下需要1720ms,在打 開三級優(yōu)化選項,對應外存打開緩存后,所需時間為530ms。這意味著只^使用編 譯器優(yōu)化可以達到3.2倍的加速比;設計有效的軟件流水,使用了DMA和組織 內(nèi)存來代替L2的緩存后,比起傳統(tǒng)的單純使用編譯器優(yōu)化的方法獲得了 29.1 倍的加速比,達到了較好的DSP性能。
權利要求
1、一種基于DSP流水結(jié)構(gòu)的快速子像素插值計算方法,其特征在于,所述方法涉及一個DSP芯片的內(nèi)部寄存器和一個兩級存儲器,內(nèi)部寄存器分為A、B兩組,存儲器包括一級內(nèi)存L1和二級內(nèi)存L2;所述插值計算方法包含以下步驟步驟1、首先由直接內(nèi)存存取DMA從一外存?zhèn)鬏敂?shù)據(jù)到L2中,內(nèi)部寄存器使用無邊界調(diào)整雙字讀取指令LDNDW和邊界調(diào)整雙字讀取指令LDDW向L1讀取數(shù)據(jù),L1接收指令后搜索L2的原始數(shù)據(jù),讀取數(shù)據(jù)到內(nèi)部寄存器;步驟2、通過低高半字打包指令PACKLH、右移拼接指令SHRMB、低位打包指令PACK2和高低半字打包指令PACKHL調(diào)整數(shù)據(jù)在寄存器中的位置,確保數(shù)據(jù)在合適的位置中;步驟3、使用無符號8位點積指令DOTPU4在一個時鐘周期內(nèi)實現(xiàn)或執(zhí)行兩個16位點積指令DOTP2,并將結(jié)果求和,在一到兩個時鐘周期內(nèi)完成四抽頭濾波器的濾波,產(chǎn)生的中間值以32位的形式存儲在寄存器中;步驟4、使用低位打包指令PACK2將兩個32位的中間值的低16位打包為一個32位的值,并將高低16位分別存儲,在打包的同時完成濾波系數(shù)的交換;步驟5、使用加法指令ADD2和移位指令SHR2對寄存器的高低16位進行加法和移位的操作,得到插值的最終值;步驟6、使用無符號數(shù)據(jù)飽和打包指令SPACKPU4將4個16位的值飽和為4個8位的值進行存儲。
2、 如權利要求1所述的基于DSP流水結(jié)構(gòu)的快速子像素插值計算方法,其 特征在于,所述的二級內(nèi)存L2使用雙緩沖的乒乓結(jié)構(gòu)分配空間,并配置直接內(nèi) 存存取DMA。
3、 如權利要求2所述的基于DSP流水結(jié)構(gòu)的快速子像素插值計算方法,其 特征在于,所述的雙緩沖記為Buffer A和Buffer B,其大小分別為11520字節(jié)。
4、 如權利要求3所述的基于DSP流水結(jié)構(gòu)的快速子像素插值計算方法,其 特征在于,所述的從外存?zhèn)鬏敂?shù)據(jù)的實現(xiàn)過程如下首先由DMA從外存?zhèn)鬏敂?shù) 據(jù)到L2中的Buffer A中處理;處理數(shù)據(jù)的同時,啟動另一個DMA,傳輸數(shù)據(jù)到L2中的Buffer B;處理Buffer B的同時,再傳輸數(shù)據(jù)到Buffer A,循環(huán)反復, 直到指定的數(shù)據(jù)處理完成。
全文摘要
本發(fā)明針對數(shù)字視頻編碼的運動估計中插值計算問題,提出了一種基于DSP流水結(jié)構(gòu)的快速子像素插值計算方法,所述方法通過相關性圖設計高效的軟件流水,并優(yōu)化內(nèi)存空間的使用方法和直接內(nèi)存存取(DMA)方法,將數(shù)據(jù)盡量打包處理,實現(xiàn)高效的軟件流水。利用本發(fā)明可以加快子像素插值運算的處理速度。
文檔編號H04N7/26GK101252688SQ20081003512
公開日2008年8月27日 申請日期2008年3月25日 優(yōu)先權日2008年3月25日
發(fā)明者書 胡 申請人:上海廣電(集團)有限公司中央研究院
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1