隨著寬帶Internet的快速發(fā)展和電子設(shè)備計(jì)算能力的迅速提高,在Internet上實(shí)時(shí)傳輸高清晰度視頻信息成為可能,以Internet為傳輸媒介的視頻會(huì)議、視頻監(jiān)控、Internet電視臺(tái)等視頻應(yīng)用方興未艾。這些應(yīng)用的一個(gè)共同特點(diǎn)是,都需要一個(gè)高性能的實(shí)時(shí)視頻編碼器,特別是高分辨率的視頻應(yīng)用給視頻編碼器的計(jì)算能力提出了很高的要求。例如,一幅720×576的4∶2∶2視頻格式的畫面,包含有3240個(gè)16×16的YUV宏塊(MacroBlock,即MB)。如果該視頻幀按照P幀或者B幀進(jìn)行壓縮,那么每一個(gè)YUV宏塊都要進(jìn)行運(yùn)動(dòng)估計(jì)、運(yùn)動(dòng)補(bǔ)償、DCT(Discrete Cosine Transform)/反DCT變換、量化/反量化和VLC(Variable Length Coding)等環(huán)節(jié)的運(yùn)算。如果進(jìn)行實(shí)時(shí)壓縮(每秒鐘壓縮25幀)的話,大致需要316~5GIPS(Instruction persecond)的計(jì)算能力。
目前,單一的CPU/DSP一般還不具備這樣的計(jì)算能力。為了解決高清晰畫面的實(shí)時(shí)視頻壓縮問題,本文提出了DSP和FPGA(Field Pro-grammable Gate Array)協(xié)同設(shè)計(jì)方案。使用FPGA完成視頻采集、YUV(視頻亮度Y、色度分量
UV)分離、數(shù)據(jù)I/O(Input/Output)等所有周邊功能,使用高性能的DSP進(jìn)行視頻壓縮編碼,因而在視頻編碼器內(nèi)DSP和FPGA能夠進(jìn)行流水操作,有效地提高了編碼器的性能。
為了降低算法的計(jì)算復(fù)雜度,本文提出了基于宏塊空間復(fù)雜度的宏塊編碼類型判別算法(MTJBSC)。在標(biāo)準(zhǔn)MPEG24視頻運(yùn)動(dòng)估計(jì)算法中,判別宏塊的編碼類型是通過(guò)計(jì)算當(dāng)前宏塊內(nèi)像素值方差和參考宏塊與當(dāng)前宏塊之間的方差來(lái)實(shí)現(xiàn)的,因此計(jì)算量很大。MTJBSC算法首先計(jì)算出當(dāng)前宏塊的空間負(fù)責(zé)度(MBC),然后通過(guò)比較當(dāng)前宏塊的MBC與SAD(Sum of Absolute Difference)值來(lái)判斷當(dāng)前宏塊的編碼類型,大大降低了算法的計(jì)算復(fù)雜度。
1 硬件設(shè)計(jì)方案
基于TI公司的圖像開發(fā)工具包(Imaging Developer Kit,即IDK)[2]架構(gòu),設(shè)計(jì)了視頻編碼器的硬件平臺(tái)。從整體上來(lái)講,視頻編碼器的硬件實(shí)現(xiàn)由DSP和FPGA兩個(gè)模塊組成,其邏輯框圖如圖1所示。由于視頻壓縮編碼計(jì)算量很大,為了盡可能提高視頻壓縮幀率,由DSP專門負(fù)責(zé)視頻壓縮編碼,而視頻采集、YUV轉(zhuǎn)換和編碼器I/O接口等其它功能則交由FPGA模塊來(lái)實(shí)現(xiàn)。如圖1所示,用戶控制命令(例如視頻壓縮模式)由FPGA模塊首先截獲,然后FPGA模塊向DSP模塊產(chǎn)生外部中斷,DSP在響應(yīng)中斷時(shí)讀取存儲(chǔ)在FPGA中的用戶控制命令字,然后DSP解析命令字,并根據(jù)用戶要求的視頻格式、幀圖像分辨率和視頻壓縮碼流速率進(jìn)行視頻壓縮編碼。