基于A(yíng)DSP-21535的MPEG-4視頻編解碼實(shí)現方案
數字視頻的大數據量給信息的存儲和傳輸造成了相當大的困難,成為數字視頻應用的瓶頸之一,數字視頻壓縮編碼是解決這一問(wèn)題的有效途徑,但在一些對實(shí)時(shí)性要求較高的場(chǎng)合,要求快速實(shí)現數字視頻的編解碼。采用DSP器件集成的視頻采集壓縮卡能快速實(shí)現視頻壓縮算法,提高處理速度,滿(mǎn)足實(shí)時(shí)性要求。
本文采用Blackfin系列的DSP芯片ADSP-21535來(lái)實(shí)現MPEG-4視頻編解碼,詳細介紹了硬件和軟件的設計方案。
硬件設計
整個(gè)系統包括視頻采集單元、MPEG-4編解碼單元、數據存儲單元、邏輯控制單元和視頻顯示單元等。采用conexant公司的Bt829實(shí)現視頻信號采集,數據存儲采用Cypress公司的SRAM芯片CY7C104133,視頻顯示單元采用ADI公司的ADV7175,邏輯控制部分采用Altera公司的MAX7000芯片。
軟件設計
MPEG-4視頻編碼是根據圖像的內容將其分割成不同的視頻對象VO(Video Object),然后進(jìn)行編碼。其編碼過(guò)程可由3步來(lái)完成,即VO的形成、編碼和復合。它提供了靈活的框架和開(kāi)放的工具集。
基于VOP(VIDEO Object Plane)的編碼,VO是場(chǎng)景中的某個(gè)物體,是由時(shí)間上連續的幀畫(huà)面序列組成的,而VOP是某一時(shí)刻某一幀畫(huà)面的VO,VOP編碼是針對某一時(shí)刻該幀畫(huà)面VO的形狀、運動(dòng)、紋理等三類(lèi)信息進(jìn)行編碼。從類(lèi)型上看包括幀內IVOP(Intra VOP)、幀間前向因果預測PVOP(Inter Prediction VOP)、幀間雙向非因果預測BVOP(Inter Biderctional Prediction VOP)和全息靈影SVOP(Sprite VOP)。從空間上看它由若干個(gè)16×16的宏塊組成,又可分成4個(gè)8×8的亮度塊和2個(gè)8×8的色差塊。它采用位圖法對VOP的形狀進(jìn)行編碼。
在本文設計的編解碼器中,對于352×288的VOP圖像數據編碼采用Y:U:V=4:2:0的格式,即每采樣4個(gè)亮度樣本,對應采樣兩個(gè)色差樣本。然后,分離不同的幀格式,分別對它們進(jìn)行編碼和解碼。
基于ADSP-21535的MPEG-4編碼優(yōu)化
ADSP-21535采用雙MAC的結構,具有正交的類(lèi)似RISC的微處理器集,主頻可達300MHz,有專(zhuān)門(mén)的視頻處理指令、靈活的SRAM和cache結構,是一款在多媒體處理與網(wǎng)絡(luò )傳輸應用中極具特色的芯片。因此,在編碼的過(guò)程中,應充分考慮芯片的結構和指令特點(diǎn),實(shí)現程序的優(yōu)化。
使用硬件結構提高處理速度
ADSP-21535內部有兩塊RAM,即L1RAM和L2RAM。L1RAM是核內的高速RAM,可以按照需要定義為cache或SRAM,或者一部分數據cache,一部分數據SRAM。它可分成16KB指令cache和指令SRAM,也可分成32KB數據cache和數據RAM。相對來(lái)說(shuō)L2RAM離核較遠,如果程序或數據放在L2RAM中直接執行,速度會(huì )比較慢。因此如果程序的數據量較小,可以把程序和數據直接放入L1RAM中執行。但是對于數據量較大的程序來(lái)說(shuō),有時(shí)還有可能把數據放在外部存儲器中,如視頻采集數據,這時(shí)就應該設置好cache允許的數據地址和程序地址,然后啟動(dòng)cache,這樣程序和數據就會(huì )自動(dòng)調入L1RAM中執行。
運動(dòng)估值搜索算法的并行處理
視頻壓縮的關(guān)鍵是去除時(shí)間與空間的冗余,考慮到幀間的時(shí)間相關(guān)性強的特點(diǎn),為了滿(mǎn)足隨機存儲和高壓縮比的要求,一般采用幀間和幀內的編碼技術(shù)。在MPEG-4運動(dòng)搜索算法中是使用條塊匹配算法,需要進(jìn)行VOP范圍內點(diǎn)的搜索。匹配使當前的圖像與預測圖像的絕對差值和,即SAD最小。
SAD的計算是運動(dòng)估值中最重要的一個(gè)環(huán)節,它直接影響整個(gè)運動(dòng)搜索的速度,這也是圖像數據實(shí)時(shí)壓縮的瓶頸。Blackfin提供了一個(gè)極好的硬件指令,可以取出8個(gè)單元數據同時(shí)做4組VIDEO單元的絕對差和。ADSP-21535提供了兩種指令形式來(lái)完成這個(gè)操作,即SAA(R1:0)和SAA(R1:0,R3:2)(R代表寄存器組高低寄存器互換),將結果放在A(yíng)0和A1中(A0和A1為兩個(gè)乘法器和累加器,R1和R0、R2和R3為配對的兩個(gè)寄存器,一般稱(chēng)為寄存器組0和寄存器組1)。
由于作絕對差和是針對字節而言,所以起始字節地址不一定是以4的整數倍開(kāi)始,但是每次運算卻必須要取出4個(gè)字節作運算。對于此,Blackfin巧妙地根據地址的末兩位來(lái)確定運算所取的字節。其地址指針為I0和I1,由I0和R1:0、I1和R3:2來(lái)確定運算的8個(gè)點(diǎn)。
用ADSP-21535計算當前塊與目標宏塊的SAD值的程序在此就不再贅述。
結語(yǔ)
整個(gè)系統使用Visual DSP++3.0進(jìn)行開(kāi)發(fā),通過(guò)JTAG口仿真,在CIF格式下(352×288)進(jìn)行測試。采集的幀率為25fps,對IVOP、PVOP、BVOP同時(shí)編碼,平均壓縮一幀需60ms左右,平均壓縮比為40倍左右。從這些數據可以看出,用Blackfin實(shí)現MPEG-4編解碼方案是可行的,能有效解決傳輸數據的瓶頸問(wèn)題,提高信號的處理速度。同時(shí)該芯片的功耗小,性能穩定,可實(shí)現電源的動(dòng)態(tài)管理,有利于實(shí)現視頻壓縮卡的集成。當然,如果能夠對算法進(jìn)一步優(yōu)化,就更有利于視頻數據的實(shí)時(shí)處理和傳輸。
評論