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