一種處理器的視頻編碼器平臺的探討
1 硬件平臺
1.1 ADSP-BF561處理器
ADSP-BF561 的推出使Analog Devices公司的Blackfin處理器系列得到了進(jìn)一步的擴充,這款器件具有由兩個(gè)Blackfin處理器內核構成的對稱(chēng)多處理結構。相比ADSP-BF533,ADSP-BF561可提供兩倍的信號處理性能、兩倍的片上處理器以及顯著(zhù)提高的數據帶寬能力。ADSP-BF561 與ADSP-BF533完全代碼兼容,并利用架構的動(dòng)態(tài)電源管理能力而繼續保持了非常低的功耗。
Blackfin561是Blackfin系列中的一款高性能定點(diǎn)DSP視頻處理芯片。ADSP-BF561 集成了兩個(gè)工作頻率均高達756MHz的Blackfin處理器內核(ADI公司還提供了低成本的500MHz和600MHz版本)和2.6Mbytes的片上SRAM存儲器。ADSP-BF561 片上存儲器被分配于每個(gè)內核的專(zhuān)用、高速L1存儲器和一個(gè)128KBytes大容量共享L2存儲器之間。32位外部端口和雙16通道DMA控制器提供了極高的數據帶寬。ADSP-BF561 片上外設包括兩個(gè)并行外設接口(均支持ITU-R 656視頻格式化)和支持I2S格式的高速串行端口。ADSP-BF561 專(zhuān)門(mén)針對各種消費類(lèi)多媒體應用進(jìn)行了優(yōu)化。
1.2 基于A(yíng)DSP-BF561的視頻編碼器平臺
此評估板包括1塊ADSP-BF561處理器、32MBSDRAM和4MBFlash,板中的AD-V1836音頻編解碼器可外接4輸入/6輸出音頻接口,而ADV7183視頻解碼器和ADV7171視頻編碼器則可外接3輸入/3輸出視頻接口此外,該評估板還包括1個(gè)UART接口、1個(gè)USB調試接口和1個(gè)JTAG調試接口。攝像頭輸入的模擬視頻信號經(jīng)視頻芯片ADV7183A轉化為數字信號,此信號從Blackfin561的PPI1(并行外部接口)進(jìn)入Blackfin561芯片進(jìn)行壓縮,壓縮后的碼流則經(jīng)ADV7179轉換后從ADSP-BF561的PPI2口輸出。此系統可通過(guò)Flash加載程序,并支持串口及網(wǎng)絡(luò )傳輸。編碼過(guò)程中的原始圖像、參考幀等數據可存儲在SDRAM中。
2 H.264視頻壓縮編碼算法的主要特點(diǎn)
H.264壓縮算法和以太網(wǎng)(IP)接口,可實(shí)現1路單向數字視頻、2路雙向高保真音頻、1~2路雙向異步數據在以太網(wǎng)上高質(zhì)量傳輸。視頻編解碼標準主要包括兩個(gè)系列:一個(gè)是MPEG系列,一個(gè)是H.26X系列。其中MPEG系列標準由ISO/IEC組織制定,H.26X系列標準由ITU-T制定。
H.264視頻壓縮算法采用與H.263和MPEG-4類(lèi)似的、基于塊的混和編碼方法,它采用幀內編碼(Intra)和幀間編碼(Inter)兩種編碼模式。與以往的編碼標準相比,為了提高編碼效率、壓縮比和圖像質(zhì)量,H.264采用了以下全新的編碼技術(shù):
?。?)H.264按功能將視頻編碼系統分為視頻編碼層(VCL,VideoCodingLayer)和網(wǎng)絡(luò )抽象層(NAL,NetworkAbstractionLayer)兩個(gè)層次。其中VCL用于完成對視頻序列的高效壓縮,NAL則用于規范視頻數據的格式,主要提供頭部信息以適合各種媒體的傳輸和存儲。
?。?)先進(jìn)的幀內預測,它對含有較多空域細節信息的宏塊采用4×4預測,而對于較平坦的區域則采用16×16的預測模式,前者有9種預測方法,后者有4種預測方法。
?。?)幀間預測采用更多的塊劃分種類(lèi),標準中定義了7種不同尺寸和形狀的宏塊分割和子宏塊分割。由于采用更小的塊和自適應編碼方式,故可使得預測殘差的數據量減少,從而進(jìn)一步降低了碼率。
?。?)1/4 采樣精度運動(dòng)補償:以前的標準最多 1/2 精度運動(dòng)補償,首次 1/4 采樣精度運動(dòng) 補償出現在 MPEG-4 第二部分高級類(lèi)部分,但 H.264/AVC 大大減少了內插處理的復雜度。
?。?) 改善“跳過(guò)”和“直接”運動(dòng)推測:在以前的標準中,預測編碼圖像的“跳過(guò)”區 不能有運動(dòng)。當編碼有全局運動(dòng)的圖像時(shí),該限制有害。H.264/AVC 對“跳過(guò)”區的 運動(dòng)采用推測方法。對雙預測的 B 幀圖像,采用高級運動(dòng)預測方法,稱(chēng)為“直接”運動(dòng)補 償,進(jìn)一步改善編碼效率。
?。?)整數變換(DCT/IDCT)。對殘差圖像的4×4整數變換技術(shù),采用定點(diǎn)運算來(lái)代替以往DCT變換中的浮點(diǎn)運算。以降低編碼時(shí)間,同時(shí)也更適合到硬件平臺的移植。
?。?)H.264/AVC支持兩種熵編碼方法,即CAVLC(基于上下文的自適應可變長(cháng)編碼)和CABAC(基于上下文的自適應算術(shù)編碼)。其中CAVLC的抗差錯能力比較高,但編碼效率比CABAC低;而CABAC的編碼效率高,但需要的計算量和存儲容量更大。
?。?)多參考圖像運動(dòng)補償:在 MPEG-4及以前的標準中,P 幀只使用一幀,B 幀只使用 兩幀圖像進(jìn)行預測。H.264/AVC 使用高級圖像選擇技術(shù),可以用以前已編碼過(guò)且保留在緩 沖區的大量的圖像進(jìn)行預測,大大提高了編碼效率。
H.264的這些新技術(shù)使運動(dòng)圖像壓縮技術(shù)向前邁進(jìn)了一大步,它具有優(yōu)于MPEG-4和H.263的壓縮性能,可應用于因特網(wǎng)、數字視頻、DVD及電視廣播等高性能視頻壓縮領(lǐng)域。
3 H.264視頻編碼算法的實(shí)現
將H.264在DSP進(jìn)行改進(jìn)要經(jīng)過(guò)以下3個(gè)步驟:PC機上的C算法優(yōu)化、從PC機到DSP的程序移植、在DSP平臺上的代碼優(yōu)化。
3.1 PC機上的C算法優(yōu)化
根據系統要求,本設計選擇了ITU的Jm8.5版本baselineprofile作為標準算法軟件。ITU的參考軟件JM是基于PC機設計的,故可取得較高的編碼效果。將視頻編解碼軟件移植到DSP時(shí),應考慮到DSP系統資源,主要應考慮的因素是系統空間,需要對原始的C代碼進(jìn)行評估,這就需要對所移植的代碼有所了解。
了解了算法結構以后,還需要確定在編碼算法的實(shí)現過(guò)程中,運算量較大且耗時(shí)較長(cháng)的部分。VC6自帶的profile分析工具顯示:幀內與幀間編碼部分占用了整體運行時(shí)間的60%以上。其中ME(MoveEstimation,運動(dòng)估計)又占用了其中較多的時(shí)間。
?。?)大幅刪減不必要的文件和函數
由于選用了baseline和單一參考幀,因此,很多文件和函數都可以刪減,包括有關(guān)B幀、SI片、SP片和數據分割、分層編碼、權值預測模式、CABAC編碼模式等不支持特性的冗余程序代碼,此外,還可以刪除top_pic、bottom_pic等與場(chǎng)有關(guān)的全局變量與局部變量、分層編碼、多slice分割以及FMO、與場(chǎng)編碼/幀場(chǎng)自適應編碼/宏塊自適應編碼有關(guān)的預測、參考幀排序、輸入輸出以及解碼器緩存操作等;也可以刪除隨機幀內宏塊刷新模式和權值預測模式等相關(guān)的冗余代碼,同時(shí)刪除rtp.c;sei.c中包含一些輔助編碼信息(并不編入碼流中),如果不用,也可以刪除leaky_bucket.c用于計算泄漏緩存器的參數。
?。?)配置函數的改寫(xiě)
由于JM的系統參數配置是通過(guò)讀取encoder.cfg文件來(lái)實(shí)現的,故可將參數配置由讀取文件改為通過(guò)初始化集中賦值函數來(lái)實(shí)現,這樣既減少了代碼量,又減少了對有限內存空間的占用和讀取時(shí)間,提高了編碼器整體的編碼速度。
?。?)去除冗余的打印信息
為了調試與算法改進(jìn)的方便,JM保留了大量的打印信息。為了提高編碼速度,減少存儲空間消耗,這些信息完全可以刪掉。如果lor.dat和stat.dat僅需在PC機上調試時(shí)使用,也沒(méi)必要移植到DSP平臺上,跟這部分相關(guān)的代碼完全可以去除。但是,調試時(shí)所需的基本信息(如碼率、信噪比、編碼序列等)則應保留參考。
通過(guò)調整可使得代碼的結構、容量更加精簡(jiǎn),從而為接下來(lái)在DSP上的移植做好準備。
3.2 從PC機到DSP的程序移植
要將PC端精簡(jiǎn)的程序移植到ADSP-BF561的開(kāi)發(fā)環(huán)境VisualDSP下,以使其能夠初步運行,所需考慮的主要是語(yǔ)法規則和內存分配等問(wèn)題。
?。?)除去所有編譯環(huán)境不支持的函數
?。?)添加與硬件相關(guān)的代碼
?。?)配置LDF文件
?。?)Malloc問(wèn)題的解決
4 DSP平臺上的代碼優(yōu)化
在VisualDSP開(kāi)發(fā)環(huán)境下對代碼進(jìn)行優(yōu)化的主要方法有C語(yǔ)言級優(yōu)化和匯編級優(yōu)化。
4.1 C語(yǔ)言級優(yōu)化
通過(guò)VC6的profile分析工具發(fā)現:移植與優(yōu)化的重點(diǎn)應在運動(dòng)估計部分。DS算法可采用兩種搜索模板,分別是有9個(gè)檢索點(diǎn)的大模板LD-SP和有5個(gè)檢索點(diǎn)的小模板SDSP(SmallDiamondSearchPattern)。搜索時(shí),先用大模板計算,當最小塊誤差SAD點(diǎn)出現在中心點(diǎn)處時(shí),再將大模板LDSP換為SDSP進(jìn)行匹配運算,這時(shí),5個(gè)點(diǎn)中具有最小SAD者若為中心點(diǎn),則該點(diǎn)即為最優(yōu)匹配點(diǎn),然后結束
評論