小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

基于Blackfin533的H.264編碼

 Archangel 2007-07-25

基于Blackfin533的H.264編碼

針對H.264編碼運算量大的特點,采用快速模式選擇、快速運動搜索、匯編優(yōu)化等方法,在保證圖像質(zhì)量的前提下,在Blackfin533上實現(xiàn)了H.264的CIF圖像的準(zhǔn)實時編碼。實驗表明對于高、中、低各種運動復(fù)雜度的圖像,均實現(xiàn)了較高的壓縮比。

隨著計算機網(wǎng)絡(luò)和多媒體技術(shù)的發(fā)展,數(shù)字視頻的應(yīng)用越來越廣泛,如DVD、網(wǎng)絡(luò)會議服務(wù)、數(shù)字電視等。在這些視頻處理與通信中,有效的視頻編碼是其關(guān)鍵技術(shù)。
H.264/AVC是ITU-T視頻編碼專家組和ISO/IEC運動圖像專家組聯(lián)合提出的最新一代的視頻編碼標(biāo)準(zhǔn)。H.264具有許多優(yōu)良的 性能[1]:壓縮比更高,與現(xiàn)有編碼標(biāo)準(zhǔn)(H.263、MPEG-4 Simple Profile)相比,在相同視頻質(zhì)量下,能節(jié)省大約50%的碼流,圖像質(zhì)量更好,適應(yīng)性更廣,能較好地滿足實時(視頻會議)及非實時(存儲、廣播等)等 各種應(yīng)用。在DSP上實現(xiàn)H.264的實時編碼具有較大的工程意義及經(jīng)濟價值。
1 H.264標(biāo)準(zhǔn)簡介及DSP平臺
1.1 H.264標(biāo)準(zhǔn)簡介

  H.264是ITU-T和ISO/IEC聯(lián)合制定的最新的視頻編碼標(biāo)準(zhǔn),于1997年由ITU-T提出,2003年3月形成最終標(biāo)準(zhǔn)草案。它包含了視頻壓縮領(lǐng)域的許多最新研究成果,主要采用了下面的技術(shù)[1]:
  (1) 將編碼分為編碼層VCL(Video Coding Layer)和傳輸層NAL(Network Abstraction Layer)。將編碼層和傳輸層分離,有利于H.264的擴展。
  (2) H.264采用了空域內(nèi)的幀內(nèi)預(yù)測,共兩種預(yù)測模式:intra16×16和intra4×4。其中intra16×16有四種預(yù)測方式,intra4×4有九種預(yù)測方式。
  (3) 對于幀間預(yù)測,增加了預(yù)測模式,共七種預(yù)測模式。預(yù)測塊從16×16可以最小細分為4×4。
  (4) 增加了參考幀的數(shù)目,使預(yù)測更為準(zhǔn)確。
  (5) 將去塊效應(yīng)濾波放在編碼環(huán)內(nèi),提高圖像的主觀質(zhì)量。
  (6) B幀可以作為參考幀,同時將圖像的解碼順序與顯示順序分離。
  (7) 采用整系數(shù)變換,提高變換速度。
  (8) 采用CAVLC、CABAC等新的熵編碼方法以提高編碼效果。
  (9) 提高了碼流的抗誤碼能力,如對編碼數(shù)據(jù)進行分割,一幀圖像可以靈活地分為幾個slice等。
1.2 基于Blackfin533的DSP平臺
  Blackfin533是ADI公司Blackfin系列中的一款高性能視頻處理芯片。其主頻最高能達600MHz,每秒可處理1200M次乘加運算。具有大量針對視頻的專用指令,可以并行處理多條指令。
  從總體上看,Blackfin533分為內(nèi)核和系統(tǒng)接口兩大部分。內(nèi)核指處理器、L1存儲器、事件控制器、內(nèi)核定時器等;系統(tǒng)接口指SPORT接口、PPI接口、SPI接口、外部存儲控制器、DMA控制器及與它們接口的外部資源等。
Blackfin533開發(fā)平臺原理圖如圖1所示。攝像頭輸出的模擬視頻信號經(jīng)7113視頻芯片轉(zhuǎn)化為數(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)化主要包括兩部分內(nèi)容:程序模塊化的設(shè)計及數(shù)據(jù)結(jié)構(gòu)的設(shè)計。
程序模塊化設(shè)計時,既要考慮模塊的獨立性,又要考慮模塊的完整性。筆者的H.264的模塊關(guān)系圖如圖3所示。視頻輸入模塊負責(zé)圖像序列的讀 取,從PPI口進入的圖像首先保存到外部存儲器,再進行編碼。讀入的圖像經(jīng)幀間模式選擇和幀內(nèi)模式選擇模塊,得到每個宏塊的預(yù)測模式。整系數(shù)變換、量化模 塊對預(yù)測后的殘差進行整系數(shù)變換及量化處理。量化后的系數(shù)經(jīng)過掃描后,在編碼模塊中進行UVLC編碼。最后由寫碼流模塊輸出。其中,去塊效應(yīng)濾波模塊對反 量化、整系數(shù)逆變換后的重建圖像進行濾波;圖像緩存管理模塊負責(zé)管理對參考圖像的存取。從圖3中可以看出,整系數(shù)變換與量化結(jié)合在一起作為一個模塊。主要 因為:一方面H.264中,量化和整系數(shù)變換本身就部分結(jié)合在一起;另一方面這樣可以在寄存器中一起完成變換、量化,有助于減少數(shù)據(jù)的存儲次數(shù)和讀取時 間。對于反量化、整系數(shù)逆變換,采用相似的設(shè)計思路。
  數(shù)據(jù)結(jié)構(gòu)的設(shè)計是H.264編碼的重要組成部分。合理的數(shù)據(jù)結(jié)構(gòu)既有利于提高數(shù)據(jù)訪 問的速度又有利于程序的不同平臺的移植。主要有以下原 則:盡可能連續(xù)存放數(shù)據(jù),這樣有利于用DMA方式對數(shù)據(jù)進行讀取;每種數(shù)據(jù)結(jié)構(gòu)完成相對簡單的功能,這樣便于對不同數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)進行管理。如表示幀間模 式的InterMode、幀內(nèi)模式的IntraMode需要放在片內(nèi)存儲器中以加快讀取速度,而參考幀的數(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) 將除法轉(zhuǎn)化為乘法或查表方式。Blackfin533提供了硬件乘法器,但沒有硬件除法器。執(zhí)行除法指令會花費幾十或上百個指令周期。將除法轉(zhuǎn)化為乘法或查表,能大大減少這種開銷。
  (4) 減少對片外存儲器的訪問次數(shù)。片外存儲器相對于片內(nèi)存儲器是低速設(shè)備,片外存儲器的讀取時間是片內(nèi)存儲器的幾倍至十幾倍。對于片外存儲器的數(shù)據(jù)要做到一次讀取,完成多次計算。
  Blackfin芯片的開發(fā)環(huán)境VisualDSP本身已經(jīng)帶有匯編器,但由于種種原因,對于某些運算量大、調(diào)用頻繁的函數(shù)仍需要進行手動匯編優(yōu)化。進行匯編優(yōu)化時,應(yīng)注意以下幾點:
(1) 節(jié)省寄存器資源。Blackfin533提供了8個32位數(shù)據(jù)寄存器以及一系列的地址寄存器。對于這些寄存器,應(yīng)盡可能做到一個寄存器多次使用;同時在能 用較短的數(shù)據(jù)類型的情況下用短的數(shù)據(jù)類型,如能用short則不用int,這樣每個32位寄存器可以作為兩個16位寄存器使用,相當(dāng)于增加了寄存器的數(shù) 量。
  (2) 使用專用指令。Blackfin533提供了求最大值、最小值、絕對值、CLIP及大量視頻專用指令,通過使用這些指令,能大大提高代碼的執(zhí)行速度。
  (3) 使用并行指令。對于大多數(shù)指令都存在相對應(yīng)的并行指令,如一條運算指令可以并行兩條數(shù)據(jù)讀取指令。并行指令的使用能成倍提高代碼的執(zhí)行速度。
  (4) 將內(nèi)層循環(huán)展開等。
  對于不同的圖像幀(I、P),各模塊所占的比例各不相同。對于I幀,幀內(nèi)模式選擇和去塊效應(yīng)濾波占較大的比例;對于P幀,幀間模式選擇則占較大的比例??傊?模式選擇及去塊效應(yīng)濾波是H.264編碼的瓶頸,需要對這兩部分進行優(yōu)化。
進行模式選擇時會調(diào)用絕對差值求和函數(shù)(SAD)及hadamard變換后再絕對值求和函數(shù)(SATD)。這兩個函數(shù)雖然較簡單,但調(diào)用較頻 繁,對這兩個函數(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%
去塊效應(yīng)濾波 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

  去塊效應(yīng)濾波在編碼中占有較大的比重。主要包括:計算濾波強度和行列濾波兩部分,需要針對這兩個子模塊進行優(yōu)化。去塊效應(yīng)濾波中有較多的判斷 語句,判斷語句會打斷DSP的流水線,使DSP不能充分發(fā)揮其性能,優(yōu)化時應(yīng)盡可能將判斷轉(zhuǎn)移到循環(huán)外面去,以提高執(zhí)行效率。同時去塊效應(yīng)濾波需要頻繁地 訪問待濾波數(shù)據(jù),減少對這些數(shù)據(jù)的訪問次數(shù)也能較大地提高去塊效應(yīng)濾波的速度。
  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 實驗結(jié)果
  筆者使用600MHz時鐘的Blackfin533,對于低、中運動復(fù)雜度的圖像序列,能夠?qū)崿F(xiàn)25幀/秒的實時編碼;對于高運動復(fù)雜度的圖像序列,能實現(xiàn)20幀/秒左右的準(zhǔn)實時編碼。其各模塊所占時間比例見表2。
  編碼器的性能指標(biāo)如下:1個參考幀;幀間模式采用16×16、16×8、8×16、8×8模式;幀內(nèi)模式對16×16采用4種預(yù)測模式,對于4×4采用9種預(yù)測模式;1/4像素的運動估計;熵編碼采用CAVLC編碼方式。
  表3為不同圖像序列壓縮效果的比較。每種序列壓縮100幀圖像,采用IPPPP....的編碼模式。 綜上所述,在Blkfin533平臺上實現(xiàn)了H.264的CIF圖像的準(zhǔn)實時編碼。該系統(tǒng)具有碼流低、延時小、圖像質(zhì)量高等優(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)化等方法,在保證圖像質(zhì)量的前提下,在Blackfin533上實現(xiàn)了H.264的CIF圖像的準(zhǔn)實時編碼。實驗表明對于高、中、低各種運動復(fù)雜度的圖像,均實現(xiàn)了較高的壓縮比。
   關(guān)鍵詞:H.264/AVC 數(shù)字信號處理器(DSP) 視頻編碼
黃曉偉,張 瑩,陳 峰 (清華大學(xué) 自動化系, 北京 100084)

作者:黃曉偉 張瑩 陳峰   更新日期:2006-11-21
來源:aetnet.cn(電子技術(shù)應(yīng)用)   瀏覽次數(shù): 445

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多