《電子技術應用》
您所在的位置:首頁 > 通信与网络 > 业界动态 > 基于Blackfin533的H.264编码

基于Blackfin533的H.264编码

2008-08-20
作者:黄晓伟, 张 莹, 陈 峰

  摘 要: 針對H.264編碼運算量大的特點,采用快速模式選擇、快速運動搜索、匯編優化等方法,在保證圖像質量的前提下,在Blackfin533上實現了H.264的CIF圖像的準實時編碼。實驗表明對于高、中、低各種運動復雜度的圖像,均實現了較高的壓縮比。
  關鍵詞: H.264/AVC 數字信號處理器(DSP) 視頻編碼


  隨著計算機網絡和多媒體技術的發展,數字視頻的應用越來越廣泛,如DVD、網絡會議服務、數字電視等。在這些視頻處理與通信中,有效的視頻編碼是其關鍵技術。
  H.264/AVC是ITU-T" title="ITU-T">ITU-T視頻編碼專家組和ISO/IEC運動圖像專家組聯合提出的最新一代的視頻編碼標準。H.264具有許多優良的性能[1]:壓縮比更高,與現有編碼標準(H.263、MPEG-4 Simple Profile)相比,在相同視頻質量下,能節省大約50%的碼流,圖像質量更好,適應性更廣,能較好地滿足實時(視頻會議)及非實時(存儲、廣播等)等各種應用。在DSP上實現H.264的實時編碼具有較大的工程意義及經濟價值。
1 H.264標準簡介及DSP平臺
1.1 H.264標準簡介
  H.264是ITU-T和ISO/IEC聯合制定的最新的視頻編碼標準,于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) 增加了參考幀的數目,使預測更為準確。
  (5) 將去塊效應" title="去塊效應">去塊效應濾波放在編碼環內,提高圖像的主觀質量。
  (6) B幀可以作為參考幀,同時將圖像的解碼順序與顯示順序分離。
  (7) 采用整系數變換,提高變換速度。
  (8) 采用CAVLC、CABAC等新的熵編碼方法以提高編碼效果。
  (9) 提高了碼流的抗誤碼能力,如對編碼數據進行分割,一幀圖像可以靈活地分為幾個slice等。
1.2 基于Blackfin533的DSP平臺
  Blackfin533是ADI公司Blackfin系列中的一款高性能視頻處理芯片。其主頻最高能達600MHz,每秒可處理1200M次乘加運算。具有大量針對視頻的專用指令,可以并行處理多條指令。
  從總體上看,Blackfin533分為內核和系統接口兩大部分。內核指處理器、L1存儲器、事件控制器、內核定時器等;系統接口指SPORT接口、PPI接口、SPI接口、外部存儲控制器、DMA控制器及與它們接口的外部資源等。
  Blackfin533開發平臺原理圖如圖1所示。攝像頭輸出的模擬視頻信號經7113視頻芯片轉化為數字信號,此信號從Blackfin533的PPI接口進入Blackfin533,壓縮后的碼流由PCI橋傳給PC機。此系統通過Flash啟動,編碼過程中的原始圖像、參考幀及其他變量存儲在SDRAM中。
  圖2為H.264編碼系統的視頻輸入模塊。7113芯片從視頻端子讀入攝像頭輸出的模擬信號,通過并口將數字信號輸出給Blackfin533。Blackfin533通過I2C總線對7113進行配置,使其輸出YUV模式、ITU656模式及增強ITU656模式等。


2 H.264編碼器的優化
2.1 總體優化

  總體優化主要包括兩部分內容:程序模塊化的設計及數據結構" title="數據結構">數據結構的設計。
  程序模塊化設計時,既要考慮模塊的獨立性,又要考慮模塊的完整性。筆者的H.264的模塊關系圖如圖3所示。視頻輸入模塊負責圖像序列的讀取,從PPI口進入的圖像首先保存到外部存儲器,再進行編碼。讀入的圖像經幀間模式" title="幀間模式">幀間模式選擇和幀內模式選擇模塊,得到每個宏塊的預測模式。整系數變換、量化模塊對預測后的殘差進行整系數變換及量化處理。量化后的系數經過掃描后,在編碼模塊中進行UVLC編碼。最后由寫碼流模塊輸出。其中,去塊效應濾波模塊對反量化、整系數逆變換后的重建圖像進行濾波;圖像緩存管理模塊負責管理對參考圖像的存取。從圖3中可以看出,整系數變換與量化結合在一起作為一個模塊。主要因為:一方面H.264中,量化和整系數變換本身就部分結合在一起;另一方面這樣可以在寄存器中一起完成變換、量化,有助于減少數據的存儲次數和讀取時間。對于反量化、整系數逆變換,采用相似的設計思路。


  數據結構的設計是H.264編碼的重要組成部分。合理的數據結構既有利于提高數據訪問的速度又有利于程序的不同平臺的移植。主要有以下原則:盡可能連續存放數據,這樣有利于用DMA方式對數據進行讀取;每種數據結構完成相對簡單的功能,這樣便于對不同數據結構的數據進行管理。如表示幀間模式的InterMode、幀內模式的IntraMode需要放在片內存儲器中以加快讀取速度,而參考幀的數據ImgData由于數據太大則需要放在片外存儲器" title="片外存儲器">片外存儲器中;盡可能使用短的數據類型,節省DSP的存儲空間。
2.2 各程序模塊的優化
  各程序模塊的優化主要指各模塊的C代碼優化及部分代碼的匯編優化。
  C代碼的優化對H.264編碼器有著重要意義,它既有利于提高編碼的速度,又有利于編碼器的跨平臺移植。C代碼優化有下面的原則:
  (1) 使編碼器代碼線性化,這樣有利于DSP的流水線滿負荷運行,更充分地發揮DSP的數據處理能力。
  (2) 取消循環中的數據依賴。數據依賴是指后面指令的輸入數據依賴于前面指令的輸出數據。許多DSP芯片都提供了硬件循環指令,Blackfin533有兩個硬件循環器,可提供兩層的硬件循環。硬件循環實現了零開銷的循環判斷,能大大提高循環指令的執行速度,然而數據依賴的存在會阻止硬件循環的使用。所以要盡可能消除循環中的數據依賴。
  (3) 將除法轉化為乘法或查表方式。Blackfin533提供了硬件乘法器,但沒有硬件除法器。執行除法指令會花費幾十或上百個指令周期。將除法轉化為乘法或查表,能大大減少這種開銷。
  (4) 減少對片外存儲器的訪問次數。片外存儲器相對于片內存儲器是低速設備,片外存儲器的讀取時間是片內存儲器的幾倍至十幾倍。對于片外存儲器的數據要做到一次讀取,完成多次計算。
  Blackfin芯片的開發環境VisualDSP本身已經帶有匯編器,但由于種種原因,對于某些運算量大、調用頻繁的函數仍需要進行手動匯編優化。進行匯編優化時,應注意以下幾點:
  (1) 節省寄存器資源。Blackfin533提供了8個32位數據寄存器以及一系列的地址寄存器。對于這些寄存器,應盡可能做到一個寄存器多次使用;同時在能用較短的數據類型的情況下用短的數據類型,如能用short則不用int,這樣每個32位寄存器可以作為兩個16位寄存器使用,相當于增加了寄存器的數量。
  (2) 使用專用指令。Blackfin533提供了求最大值、最小值、絕對值、CLIP及大量視頻專用指令,通過使用這些指令,能大大提高代碼的執行速度。
  (3) 使用并行指令。對于大多數指令都存在相對應的并行指令,如一條運算指令可以并行兩條數據讀取指令。并行指令的使用能成倍提高代碼的執行速度。
  (4) 將內層循環展開等。
  對于不同的圖像幀(I、P),各模塊所占的比例各不相同。對于I幀,幀內模式選擇和去塊效應濾波占較大的比例;對于P幀,幀間模式選擇則占較大的比例。總之,模式選擇及去塊效應濾波是H.264編碼的瓶頸,需要對這兩部分進行優化。
  進行模式選擇時會調用絕對差值求和函數(SAD)及hadamard變換后再絕對值求和函數(SATD)。這兩個函數雖然較簡單,但調用較頻繁,對這兩個函數進行匯編優化,能較大提高模式選擇的速度。對于絕對差值求和函數(SAD),通過使用Blackfin的專用視頻指令SAA,可以大大提高運算速度,具體見匯編優化統計表1和表2。


  去塊效應濾波在編碼中占有較大的比重。主要包括:計算濾波強度和行列濾波兩部分,需要針對這兩個子模塊進行優化。去塊效應濾波中有較多的判斷語句,判斷語句會打斷DSP的流水線,使DSP不能充分發揮其性能,優化時應盡可能將判斷轉移到循環外面去,以提高執行效率。同時去塊效應濾波需要頻繁地訪問待濾波數據,減少對這些數據的訪問次數也能較大地提高去塊效應濾波的速度。
  SAD()的函數原型及其匯編代碼[2]
  for(i=0;i<16*16;i++)
  result +=abs( *pSrc++ - *pRef++);
  LSETUP(row_start,row_end) LC0=P1;       //利用Blackfin的硬件循環實現SAD的循環
  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的同時,讀取數據
  SAA(R1:0,R3:2) || R1= [I0++] || R2= [I1++];
  row_end:SAA(R1:0,R3:2)(R) || R0=[I0++] || R2= [I1++];
3 實驗結果
  筆者使用600MHz時鐘的Blackfin533,對于低、中運動復雜度的圖像序列,能夠實現25幀/秒的實時編碼;對于高運動復雜度的圖像序列,能實現20幀/秒左右的準實時編碼。其各模塊所占時間比例見表2。
  編碼器的性能指標如下:1個參考幀;幀間模式采用16×16、16×8、8×16、8×8模式;幀內模式對16×16采用4種預測模式,對于4×4采用9種預測模式;1/4像素的運動估計;熵編碼采用CAVLC編碼方式。
  表3為不同圖像序列壓縮效果的比較。每種序列壓縮100幀圖像,采用IPPPP....的編碼模式。


  綜上所述,在Blkfin533平臺上實現了H.264的CIF圖像的準實時編碼。該系統具有碼流低、延時小、圖像質量高等優點。
參考文獻
1 Draft ITU-T recommendation and final draft international standard 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

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 国产精品视频自拍| 国产美女在线精品免费观看| 日韩啊v在线| 国产精品成av人在线视午夜片| 中文字幕欧美日韩一区二区| 久久免费国产视频| 国产精品久久久久久久久免费 | 欧美二区在线看| 国产在线观看91精品一区| 国产美女在线精品免费观看| 国产日韩第一页v| 欧美在线不卡区| 久久另类ts人妖一区二区| 91久久精品www人人做人人爽| 久久精品国产91精品亚洲| 欧美日韩精品免费看| 国产欧美久久久久| 国产精品com| 欧美另类69精品久久久久9999| 国产欧美日韩最新| 欧美精品卡一卡二| 久久久久久久久久久视频| 欧美在线亚洲在线| 久久精品99久久久香蕉| 国产日产欧美精品| 日本精品一区二区三区在线| 色综合久久天天综线观看| 日韩中文字幕免费视频| 日韩av不卡播放| 久久久免费视频网站| 国产在线一区二区三区四区| 欧美激情第6页V| 久久久久久亚洲精品| 国产精品流白浆视频| 精品一区久久久| 久久精品国产精品亚洲| 日本亚洲精品在线观看| 欧美乱妇高清无乱码| 日本中文不卡| 国产日韩在线亚洲字幕中文| 国产精品美女久久久久av超清|