乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      基于Blackfin533的H.264編碼

       Archangel 2007-07-25

      基于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

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多