針對H.264編碼運算量大的特點(diǎn),采用快速模式選擇、快速運動(dòng)搜索、匯編優(yōu)化等方法,在保證圖像質(zhì)量的前提下,在Blackfin533上實(shí)現了H.264的CIF圖像的準實(shí)時(shí)編碼。實(shí)驗表明對于高、中、低各種運動(dòng)復雜度的圖像,均實(shí)現了較高的壓縮比。
隨著(zhù)計算機網(wǎng)絡(luò )和多媒體技術(shù)的發(fā)展,數字視頻的應用越來(lái)越廣泛,如DVD、網(wǎng)絡(luò )會(huì )議服務(wù)、數字電視等。在這些視頻處理與通信中,有效的視頻編碼是其關(guān)鍵技術(shù)。
H.264/AVC是ITU-T視頻編碼專(zhuān)家組和ISO/IEC運動(dòng)圖像專(zhuān)家組聯(lián)合提出的最新一代的視頻編碼標準。H.264具有許多優(yōu)良的性能[1]:壓縮比更高,與現有編碼標準(H.263、MPEG-4 SimpleProfile)相比,在相同視頻質(zhì)量下,能節省大約50%的碼流,圖像質(zhì)量更好,適應性更廣,能較好地滿(mǎn)足實(shí)時(shí)(視頻會(huì )議)及非實(shí)時(shí)(存儲、廣播等)等各種應用。在DSP上實(shí)現H.264的實(shí)時(shí)編碼具有較大的工程意義及經(jīng)濟價(jià)值。
1 H.264標準簡(jiǎn)介及DSP平臺
1.1 H.264標準簡(jiǎn)介
H.264是ITU-T和ISO/IEC聯(lián)合制定的最新的視頻編碼標準,于1997年由ITU-T提出,2003年3月形成最終標準草案。它包含了視頻壓縮領(lǐng)域的許多最新研究成果,主要采用了下面的技術(shù)[1]:
(1) 將編碼分為編碼層VCL(Video Coding Layer)和傳輸層NAL(Network Abstraction Layer)。將編碼層和傳輸層分離,有利于H.264的擴展。
(2) H.264采用了空域內的幀內預測,共兩種預測模式:intra16×16和intra4×4。其中intra16×16有四種預測方式,intra4×4有九種預測方式。
(3) 對于幀間預測,增加了預測模式,共七種預測模式。預測塊從16×16可以最小細分為4×4。
(4) 增加了參考幀的數目,使預測更為準確。
(5) 將去塊效應濾波放在編碼環(huán)內,提高圖像的主觀(guān)質(zhì)量。
(6) B幀可以作為參考幀,同時(shí)將圖像的解碼順序與顯示順序分離。
(7) 采用整系數變換,提高變換速度。
(8) 采用CAVLC、CABAC等新的熵編碼方法以提高編碼效果。
(9) 提高了碼流的抗誤碼能力,如對編碼數據進(jìn)行分割,一幀圖像可以靈活地分為幾個(gè)slice等。
1.2 基于Blackfin533的DSP平臺
Blackfin533是ADI公司Blackfin系列中的一款高性能視頻處理芯片。其主頻最高能達600MHz,每秒可處理1200M次乘加運算。具有大量針對視頻的專(zhuān)用指令,可以并行處理多條指令。
從總體上看,Blackfin533分為內核和系統接口兩大部分。內核指處理器、L1存儲器、事件控制器、內核定時(shí)器等;系統接口指SPORT接口、PPI接口、SPI接口、外部存儲控制器、DMA控制器及與它們接口的外部資源等。
Blackfin533開(kāi)發(fā)平臺原理圖如圖1所示。攝像頭輸出的模擬視頻信號經(jīng)7113視頻芯片轉化為數字信號,此信號從Blackfin533的PPI接口進(jìn)入Blackfin533,壓縮后的碼流由PCI橋傳給PC機。此系統通過(guò)Flash啟動(dòng),編碼過(guò)程中的原始圖像、參考幀及其他變量存儲在SDRAM中。
圖2為H.264編碼系統的視頻輸入模塊。7113芯片從視頻端子讀入攝像頭輸出的模擬信號,通過(guò)并口將數字信號輸出給Blackfin533。Blackfin533通過(guò)I2C總線(xiàn)對7113進(jìn)行配置,使其輸出YUV模式、ITU656模式及增強ITU656模式等。
圖1 Blackfin533平臺總體框架圖
圖2 視頻輸入模塊
圖3 H.264編碼模塊圖
2 H.264編碼器的優(yōu)化
2.1 總體優(yōu)化
總體優(yōu)化主要包括兩部分內容:程序模塊化的設計及數據結構的設計。
程序模塊化設計時(shí),既要考慮模塊的獨立性,又要考慮模塊的完整性。筆者的H.264的模塊關(guān)系圖如圖3所示。視頻輸入模塊負責圖像序列的讀取,從PPI口進(jìn)入的圖像首先保存到外部存儲器,再進(jìn)行編碼。讀入的圖像經(jīng)幀間模式選擇和幀內模式選擇模塊,得到每個(gè)宏塊的預測模式。整系數變換、量化模塊對預測后的殘差進(jìn)行整系數變換及量化處理。量化后的系數經(jīng)過(guò)掃描后,在編碼模塊中進(jìn)行UVLC編碼。最后由寫(xiě)碼流模塊輸出。其中,去塊效應濾波模塊對反量化、整系數逆變換后的重建圖像進(jìn)行濾波;圖像緩存管理模塊負責管理對參考圖像的存取。從圖3中可以看出,整系數變換與量化結合在一起作為一個(gè)模塊。主要因為:一方面H.264中,量化和整系數變換本身就部分結合在一起;另一方面這樣可以在寄存器中一起完成變換、量化,有助于減少數據的存儲次數和讀取時(shí)間。對于反量化、整系數逆變換,采用相似的設計思路。
數據結構的設計是H.264編碼的重要組成部分。合理的數據結構既有利于提高數據訪(fǎng)問(wèn)的速度又有利于程序的不同平臺的移植。主要有以下原則:盡可能連續存放數據,這樣有利于用DMA方式對數據進(jìn)行讀取;每種數據結構完成相對簡(jiǎn)單的功能,這樣便于對不同數據結構的數據進(jìn)行管理。如表示幀間模式的InterMode、幀內模式的IntraMode需要放在片內存儲器中以加快讀取速度,而參考幀的數據ImgData由于數據太大則需要放在片外存儲器中;盡可能使用短的數據類(lèi)型,節省DSP的存儲空間。
2.2 各程序模塊的優(yōu)化
各程序模塊的優(yōu)化主要指各模塊的C代碼優(yōu)化及部分代碼的匯編優(yōu)化。
C代碼的優(yōu)化對H.264編碼器有著(zhù)重要意義,它既有利于提高編碼的速度,又有利于編碼器的跨平臺移植。C代碼優(yōu)化有下面的原則:
(1) 使編碼器代碼線(xiàn)性化,這樣有利于DSP的流水線(xiàn)滿(mǎn)負荷運行,更充分地發(fā)揮DSP的數據處理能力。
(2)取消循環(huán)中的數據依賴(lài)。數據依賴(lài)是指后面指令的輸入數據依賴(lài)于前面指令的輸出數據。許多DSP芯片都提供了硬件循環(huán)指令,Blackfin533有兩個(gè)硬件循環(huán)器,可提供兩層的硬件循環(huán)。硬件循環(huán)實(shí)現了零開(kāi)銷(xiāo)的循環(huán)判斷,能大大提高循環(huán)指令的執行速度,然而數據依賴(lài)的存在會(huì )阻止硬件循環(huán)的使用。所以要盡可能消除循環(huán)中的數據依賴(lài)。
(3) 將除法轉化為乘法或查表方式。Blackfin533提供了硬件乘法器,但沒(méi)有硬件除法器。執行除法指令會(huì )花費幾十或上百個(gè)指令周期。將除法轉化為乘法或查表,能大大減少這種開(kāi)銷(xiāo)。
(4) 減少對片外存儲器的訪(fǎng)問(wèn)次數。片外存儲器相對于片內存儲器是低速設備,片外存儲器的讀取時(shí)間是片內存儲器的幾倍至十幾倍。對于片外存儲器的數據要做到一次讀取,完成多次計算。
Blackfin芯片的開(kāi)發(fā)環(huán)境VisualDSP本身已經(jīng)帶有匯編器,但由于種種原因,對于某些運算量大、調用頻繁的函數仍需要進(jìn)行手動(dòng)匯編優(yōu)化。進(jìn)行匯編優(yōu)化時(shí),應注意以下幾點(diǎn):
(1)節省寄存器資源。Blackfin533提供了8個(gè)32位數據寄存器以及一系列的地址寄存器。對于這些寄存器,應盡可能做到一個(gè)寄存器多次使用;同時(shí)在能用較短的數據類(lèi)型的情況下用短的數據類(lèi)型,如能用short則不用int,這樣每個(gè)32位寄存器可以作為兩個(gè)16位寄存器使用,相當于增加了寄存器的數量。
(2) 使用專(zhuān)用指令。Blackfin533提供了求最大值、最小值、絕對值、CLIP及大量視頻專(zhuān)用指令,通過(guò)使用這些指令,能大大提高代碼的執行速度。
(3) 使用并行指令。對于大多數指令都存在相對應的并行指令,如一條運算指令可以并行兩條數據讀取指令。并行指令的使用能成倍提高代碼的執行速度。
(4) 將內層循環(huán)展開(kāi)等。
對于不同的圖像幀(I、P),各模塊所占的比例各不相同。對于I幀,幀內模式選擇和去塊效應濾波占較大的比例;對于P幀,幀間模式選擇則占較大的比例??傊?模式選擇及去塊效應濾波是H.264編碼的瓶頸,需要對這兩部分進(jìn)行優(yōu)化。
進(jìn)行模式選擇時(shí)會(huì )調用絕對差值求和函數(SAD)及hadamard變換后再絕對值求和函數(SATD)。這兩個(gè)函數雖然較簡(jiǎn)單,但調用較頻繁,對這兩個(gè)函數進(jìn)行匯編優(yōu)化,能較大提高模式選擇的速度。對于絕對差值求和函數(SAD),通過(guò)使用Blackfin的專(zhuān)用視頻指令SAA,可以大大提高運算速度,具體見(jiàn)匯編優(yōu)化統計表1和表2。 表1 優(yōu)化前后函數所占時(shí)鐘周期數對比表 優(yōu)化函數 優(yōu)化前(時(shí)鐘周期數) 優(yōu)化后(時(shí)鐘周期數) 提高倍數
SAD 1385 55 25
SATD 1964 84 23
GetStrength 50214 4983 10
EdgeLoopY 61227 5032 12
EdgeLoopUV 52110 4173 12
表2 優(yōu)化后的H.264各模塊性能 占用時(shí)間(時(shí)鐘周期數M) 所占比例
模式選擇(包含插值) 11.26 53.6%
變換、量化 1.87 8.9%
反量化、反變換 1.93 9.2%
編碼(UVLC) 0.90 4.3%
去塊效應濾波 2.73 13%
其他 2.31 11%
表3 壓縮后的CIF圖像的質(zhì)量 H.264編碼器
視頻序列
(100幀) 平均峰值信噪比PSNR(dB) 碼率(kbit/s)
亮度Y 色度U 色度V
Foreman 36.57 41.23 43.39 503
Shanlin 34.00 39.95 41.30 1035
tempete 30.47 35.81 37.60 1059
mobile 30.58 34.48 34.24 1587
去塊效應濾波在編碼中占有較大的比重。主要包括:計算濾波強度和行列濾波兩部分,需要針對這兩個(gè)子模塊進(jìn)行優(yōu)化。去塊效應濾波中有較多的判斷語(yǔ)句,判斷語(yǔ)句會(huì )打斷DSP的流水線(xiàn),使DSP不能充分發(fā)揮其性能,優(yōu)化時(shí)應盡可能將判斷轉移到循環(huán)外面去,以提高執行效率。同時(shí)去塊效應濾波需要頻繁地訪(fǎng)問(wèn)待濾波數據,減少對這些數據的訪(fǎng)問(wèn)次數也能較大地提高去塊效應濾波的速度。
SAD()的函數原型及其匯編代碼[2]:
for(i=0;i<16*16;i++)
result +=abs( *pSrc++ - *pRef++);
LSETUP(row_start,row_end) LC0=P1; //利用Blackfin的硬件循環(huán)實(shí)現SAD的循環(huán)
row_start:
R3 = [I1++]; //讀取數據
SAA(R1:0,R3:2) || R1= [I0++] || R2= [I1++]; //計算R1:0和R3:2的SAD
SAA(R1:0,R3:2)(R) || R0= [I0++] || R3= [I1++]; //執行SAA的同時(shí),讀取數據
SAA(R1:0,R3:2) || R1= [I0++] || R2= [I1++];
row_end:SAA(R1:0,R3:2)(R) || R0=[I0++] || R2= [I1++];
3 實(shí)驗結果
筆者使用600MHz時(shí)鐘的Blackfin533,對于低、中運動(dòng)復雜度的圖像序列,能夠實(shí)現25幀/秒的實(shí)時(shí)編碼;對于高運動(dòng)復雜度的圖像序列,能實(shí)現20幀/秒左右的準實(shí)時(shí)編碼。其各模塊所占時(shí)間比例見(jiàn)表2。
編碼器的性能指標如下:1個(gè)參考幀;幀間模式采用16×16、16×8、8×16、8×8模式;幀內模式對16×16采用4種預測模式,對于4×4采用9種預測模式;1/4像素的運動(dòng)估計;熵編碼采用CAVLC編碼方式。
表3為不同圖像序列壓縮效果的比較。每種序列壓縮100幀圖像,采用IPPPP....的編碼模式。 綜上所述,在Blkfin533平臺上實(shí)現了H.264的CIF圖像的準實(shí)時(shí)編碼。該系統具有碼流低、延時(shí)小、圖像質(zhì)量高等優(yōu)點(diǎn)。
參考文獻
1 Draft ITU-T recommendation and final draft international stan- dard of joint
video specification (ITU-T Rec. H.264/ISO/IEC 14 496-10 AVC. in Joint Video Team (JVT)
of ISO/IEC MPEG and ITU-T VCEG, JVTG050, 2003
2 AD Inc. Blackfin processor instruction set reference.Rev 3.0,June 2004:417~421,487~492
摘 要:針對H.264編碼運算量大的特點(diǎn),采用快速模式選擇、快速運動(dòng)搜索、匯編優(yōu)化等方法,在保證圖像質(zhì)量的前提下,在Blackfin533上實(shí)現了H.264的CIF圖像的準實(shí)時(shí)編碼。實(shí)驗表明對于高、中、低各種運動(dòng)復雜度的圖像,均實(shí)現了較高的壓縮比。
關(guān)鍵詞:H.264/AVC 數字信號處理器(DSP) 視頻編碼
黃曉偉,張 瑩,陳 峰 (清華大學(xué) 自動(dòng)化系, 北京 100084)
作者:黃曉偉 張瑩 陳峰 更新日期:2006-11-21
來(lái)源:aetnet.cn(電子技術(shù)應用) 瀏覽次數:445