機電之家資源網
單片機首頁|單片機基礎|單片機應用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
基于DSP TMS320DM642的H.264視頻編碼的實現和優(yōu)化
基于DSP TMS320DM642的H.264視頻編碼的實現和優(yōu)化
 更新時間:2009-6-5 9:17:37  點擊數:2
【字體: 字體顏色

1.引言 

視頻編碼的建議從H.261到H.262/3、MPEG-1/2和MPEG-4都有一個共同的目標:在盡可能低的碼率下獲得盡可能好的圖像質量。然而,隨著圖像通信的發(fā)展,如何適應不同信道傳輸的需求,如何適應用戶對視頻自由選擇編碼的需求等問題相繼出現,必須要有一個新的視頻編碼標準來解決這些問題,這就是新一代圖像編碼標準H.264。H.264的視頻編碼標準在系統(tǒng)結構、運動估計和運動補償、變換、量化、熵編碼等方面都進行了很大改進,大大提高了壓縮效率,節(jié)省了碼率。H.264編碼的重建圖像的主觀質量比H.263要好得多。

TMS320DM642數字媒體處理器是TI公司新近推出的一款基于C64X核的DSP。本文主要介紹H.264編碼在TI公司的TMS320DM642評估板上的代碼實現及優(yōu)化方法。

    2. H.264視頻編碼技術

H.264是ITU-T的VCEG (Video Coding Experts Group)和ISO/IEC的MPEG(Motion Picture Experts Group)聯(lián)合成立的“聯(lián)合視頻組”(JVT:Joint Video Team)共同制定的新建議,它等同于ISO的 MPEG-4的 Part10。JVT于1998年2月正式開始提案征集,次年8月完成第1版草案和測試模型,2001年9月,在JVT的第1次會議上H.264的WD2(Work Draft 2)版,并推出測試模型TML-9 (Test Model Long Term Number 9)。此后,于2002年7月的JVT第4次會議上推出了H.264的CD (Committee Draft)版。

H.264的主要功能目標如下:

  • 高壓縮率:在所有的速率上,比H.263節(jié)省50%的比特率,在高比特率時質量優(yōu)良;
  • 采用簡潔的設計方式,簡單的語法描述,避免過多的選項和配置,盡量利用現有的編碼模塊;
  • 低時延,對不同的業(yè)務靈活地采用相應的時延限制;
  • 加強對誤碼和丟包的處理,增強解碼器的差錯恢復能力;
  • 在編碼器中采用復雜度可分級設計,在圖像質量和編碼處理之間可分級,以適應高和低復雜性的應用;
  • 提高網絡適應性,采用“網絡友好(Network Friendliness)”的結構和語法,以適應IP網絡、移動網絡的應用;
  • H.264編碼基本檔次(Baseline Profile)的使用無須版權。

3.基于DSP TMS320DM642的硬件實現平臺

在TI公司新近推出的600MHz TMS320DM642評估板(EVM)上實現符合H.264標準的編碼器。(由SDI生產,最新的評估板為720MHz TMS320DM642 EVM - 摘編者注。) DM642 EVM是一塊PCI卡,采用600 MHz的數字媒體處理器DM642,具有32MB外部SDRAM、4MB閃存、組合視頻輸入/輸出、S-視頻輸入/輸出、VGA輸出端口以及支持媒體流的以太網端口。

TMS320DM642數字媒體處理器是TI公司新近推出的一款基于C64X核的DSP。DM642集成了一系列的外設以適應視頻和影像技術的發(fā)展,其中包括三個能夠進行無延滯視頻輸入、視頻輸出或傳輸流輸入的可配置視頻端口。這些端口可以支持BT.656視頻I/O, HDTV Y/C I/O, RGB I/O, MPEG-2傳輸流輸入。DM642還包含一個10/100MBPS的以太網MAC(EMAC),一個多通道的串行口(McASP),一個66MHz 的32位PCI總線,以及一些其它外設。C64X核內有8個并行的處理單元,分為相同的兩組,具有64個32bit的通用寄存器的專用存取結構,同時內置高效率的協(xié)處理器,他的體系結構采用VLIW(甚長指令集)結構,單指令字長為32bit,8個指令組成一個指令包,總字長為8x32=256bit。芯片內部設置了專門的指令分配模塊,可以將256bit的指令包同時分配到8個處理單元,并由8個單元同時運行。當片內的8個處理單元同時運行時,處理能力可以達到最大。在C6000公共指令集的基礎上擴展了88條指令,這些指令使C64X能夠更方便地執(zhí)行圖象處理中的算法。

4.H.264的DSP DM642實現和優(yōu)化

4.1 H.264代碼優(yōu)化

H.264的DSP實現流程分為三個階段:

第一個階段產生和評估C代碼,第二個階段優(yōu)化和評估C代碼,第三個階段編寫和評估線性匯編。

每個階段完成任務如下:

第一階段:首先,產生C代碼并進行時間評估。一般情況下,這個階段的代碼性能很低。如果經過評估后,仍然滿足不了實時要求的話,需要進入第二個階段以進一步改進代碼性能。

第二階段:利用優(yōu)化選項、內聯(lián)函數以及其它優(yōu)化方法改進C代碼。如果代碼仍不能達到所期望的效率,則進入第三階段。

第三階段:從C代碼中抽出對性能影響大的代碼段,用線性匯編重新寫這段代碼,然后利用匯編優(yōu)化器優(yōu)化該代碼,直到代碼滿足要求為止。

4.2 優(yōu)化和評估C代碼

代碼分析結果顯示DCT、IDCT變換、運動估計運算量占程序總運算量的比重很大,因此這部分函數是程序優(yōu)化的重點。為此,我們通過下述方法對C代碼進行了優(yōu)化:

(1)對于復雜的運算語句,可以用查找表的方法來實現,以節(jié)省耗時。比如:在運算表達式中出現了“/”以及“%”等符號時,可以先按照所有可能的輸入計算出所有可能的輸出,以后的運算就可以省略而只需要查表得到數值。該方法的本質在于用空間換時間。同樣,對于if-else關系到數據運算的選擇語句,也可根據具體的情況,采用查找表的方法來實現。

(2)對于通過查找表編碼部分個,可以將相關的碼表進行合理的編排,以便運用一條指令可以一次查到需要的數據。同時,盡可能用多位的指令來訪問少位的數據。比如:使用int型(32位)訪問2個short(16位)型數據,將其分別放在32位寄存器的高16位和低16位字段。這樣,可以提高一倍的數據讀取效率。同樣,像使用int型可一次訪問兩個short型一樣,使用double型訪問可一次讀2個float型數據(4個int型數據),從而減少對內存的訪問次數,從而減少運算耗時。

(3)在C代碼中,使用內聯(lián)函數替代復雜的C代碼。內聯(lián)函數是可直接映射為C6000指令的特殊函數,使用時同調用其它函數一樣調用,同時不會破壞系統(tǒng)環(huán)境。內聯(lián)函數用前下劃線(如:函數_add2 (int src1,int src2)表示src1,src2的高低半字分別做有符號加法,返回結果)表示,使用內聯(lián)函數可快速優(yōu)化C代碼。

(4)代碼中循環(huán)越多,執(zhí)行的效率越低。 因此,我們考慮采用循環(huán)展開的方法,將多循環(huán)變?yōu)樯傺h(huán),甚至是單循環(huán)。即運用消除冗余循環(huán)的方法來提高指令并行執(zhí)行的程度,從而提高代碼的執(zhí)行效率。

(5)為了進一步提高代碼性能,經過評估,找出影響速度的關鍵 C代碼段 (DCT/IDCT變換和運動估計)用線性匯編重新編寫。線性匯編是C6000系列DSP所特有的類匯編工具。只需按照C代碼的自然順序,寫出線性匯編語句,同時不必考慮功能單元的分配,以及指令的并行性。從而,它比編寫純匯編語句耗時要少,又具有較高的執(zhí)行效率。如果編寫線性匯編仍不能達到指標要求的話,在運用純匯編編寫相關的代碼,充分利用C6000 DSP結構以及指令集的特點,盡可能并行其中的非相關語句。從而進一步減少代碼的執(zhí)行時間和提高程序的性能。

4.3 存儲器的優(yōu)化

與PC機相比,DSP的程序數據存儲空間非常有限。因此,對于視頻編解碼這種需要處理大量數據的程序而言,必須合理安排數據和程序的存儲方式,實現對存儲器的優(yōu)化,以便提高程序執(zhí)行的效率。否則,大量數據的反復搬移會阻礙程序運行效率的提高。

采取以下方法對存儲器進行優(yōu)化:分析代碼,把被反復調用的程序段(如DCT變換和DCT反變換)放在片內程序存儲區(qū)中,把頻繁用到的數據段(如編碼表)放在片內數據存儲器中,把不常用到的程序和數據段放在片外存儲器中,以避免對程序或數據進行不必要的反復搬移。

在H.264程序運行過程中,由于一幀圖像的數據量很大,故而將參考幀數據放到片外,需要用到當前塊和參考窗數據時,再將它們從外存搬運到內存中,以便提高效率。

4.4 C代碼和存儲器優(yōu)化前后性能分析

我們對代碼優(yōu)化前后的性能進行分析比較,下表是幾個關鍵函數在優(yōu)化的各個不同階段所占用的時鐘周期數的統(tǒng)計。

可以看出,優(yōu)化后的效果是明顯的。

5.結束語

本文重點探討了在DSP TMS320DM642平臺上對H.264視頻編碼進行相關優(yōu)化的方法。我們應該考慮如何充分利用DSP DM642的硬件資源及開發(fā)工具,使代碼達到所期望的性能。針對TMS320DM642芯片的結構和H.264視頻編碼程序自身的特點,我們從代碼和存儲器兩方面對程序進行了優(yōu)化,仿真結果證明,優(yōu)化效果明顯,經過優(yōu)化后的編解碼器完全能夠滿足實時性要求。

<!--插入廣告JS代碼-->
被優(yōu)化函數優(yōu)化前優(yōu)化后
DCT(4x4)324cycles(未-03)30cycles(線性匯編-03)
IDCT(4x4)350cycles(未-03)35cycles(線性匯編-03)
運動估計(1frame)412Mcycles(未-03)30Mcycles(線性匯編-03)
量化(4x4)9255cycles(未-03)704cycles(線性匯編-03)
  • 上一篇: 基于DSP的低功耗高速數據采集系統(tǒng)
  • 下一篇: TMS320C2XX開發(fā)設計中應注意的問題
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網友評論:(只顯示最新5條。)
    關于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務100強網站

    網站經營許可證:浙B2-20080178-1