新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于TMS320C64x的MPEG-4實時編碼器設(shè)計與實現(xiàn)

        基于TMS320C64x的MPEG-4實時編碼器設(shè)計與實現(xiàn)

        作者: 時間:2012-10-12 來源:網(wǎng)絡(luò) 收藏
          信息時代對于視頻通訊的需求越來越廣,從較低碼率的可視電話、視頻會議、實時監(jiān)控到高碼率的空中偵察、數(shù)字電視等,迫切要求將高效率、高質(zhì)量的視頻壓縮算法實用化。于2000年正式成為國際標準并不斷地擴展。它不僅支持碼率低于64kbps的多媒體通信,還能支持廣播級的視頻應(yīng)用。與以前的視頻標準相比,可以提供更高的壓縮效率、更好的交互性以及更強的抗誤碼能力。目前,已經(jīng)成為視頻壓縮標準的主流。
          MPEG-4算法非常復(fù)雜,其編解碼的實時性難以保證,通常只能實現(xiàn)對中低分辯率視頻的實時編碼。本文基于TI公司的C64x系列DSPs設(shè)計并實現(xiàn)了一種MPEG-4,實現(xiàn)了對D1分辨率(720×576)視頻的實時編碼,且在保證輸出碼率低于1Mbps的同時,解碼圖像具有較高的峰值信噪比和較好的視覺效果。
        1 編碼系統(tǒng)的硬件結(jié)構(gòu)
          編碼系統(tǒng)以TMS320DM642高性能通用DSP芯片為核心。圖1為系統(tǒng)框圖。

        圖1 系統(tǒng)框圖

        1.1 TMS320DM642芯片的特點
          DM642屬于TI公司的C64x系列DSPs。Veloci TI結(jié)構(gòu)使C6000 DSPs在視頻和圖像處理中得到廣泛應(yīng)用。CPU的VLIW結(jié)構(gòu)由多個并行運行的執(zhí)行單元組成,這些單元在單個周期內(nèi)可執(zhí)行多條指令。并行是C6000獲得高性能的關(guān)鍵。C64x在C6000的基礎(chǔ)上有一些重要的改進。除了有更高的時鐘頻率外,C64x從以前的Veloci TI結(jié)構(gòu)擴展到Veloci TI.2結(jié)構(gòu),包含了許多新的指令,增加了額外的數(shù)據(jù)通道,寄存器的數(shù)量也增加了一倍。這些擴展使得CPU可以在一個時鐘周期內(nèi)處理更多的數(shù)據(jù),從而獲得更高的運算性能。
          DM642芯片集成了各種片內(nèi)外設(shè),使得開發(fā)視頻和圖像領(lǐng)域的應(yīng)用更為方便。它帶有三個可配置的視頻端口,提供與視頻輸入、視頻輸出以及碼流輸入的無縫接口。這些視頻端口支持許多格式的視頻輸入/輸出,包括BT.656、HDTV Y/C、RGB以及MPEG-2碼流的輸入。利用DM642開發(fā)視頻,其視頻輸入部分只需要一塊視頻采集芯片即可,如Phillips的SAA7113,無需外加邏輯控制電路和FIFO緩存,使硬件系統(tǒng)更為簡單和穩(wěn)定。DM642的其它外設(shè)包括:10Mbps/100Mbps的以太網(wǎng)口(EMAC)、多通道音頻串口(McASP)、外部存儲器接口(EMIF)、主機接口(HPI)、多通道緩沖串口(McBSP)以及PCI接口等。
        1.2 系統(tǒng)工作流程
          該編碼系統(tǒng)可分為圖像壓縮卡和主機兩部分。其工作流程如圖2所示。

        圖2 系統(tǒng)工作流程圖

          首先主機通過PCI初始化DSP并對其加載程序;DSP開始運行MPEG-4編碼程序,從視頻端口獲取實時采集的視頻,如圖1所示。SAA7113輸出BT.656格式的數(shù)字視頻,作為DM642 VPORT的輸入,VPORT輸出YUV(4:2:0)格式的圖像,作為編碼程序的輸入;DSP完成一幀圖像的編碼,通過PCI向主機發(fā)出中斷;主機響應(yīng)中斷,從DSP的存儲空間讀取原始圖像數(shù)據(jù)和壓縮后的碼流。主機程序在VC++環(huán)境下編寫,提供與用戶交互的界面,可對數(shù)據(jù)進行各種處理,包括原始視頻的實時播放、保存,壓縮碼流的實時解壓播放、保存、回放、網(wǎng)絡(luò)傳輸,從網(wǎng)絡(luò)接收壓縮碼流實時解壓回放等。
          需要注意的是原始圖像和壓縮碼流在DSP中的存儲。視頻端口、編碼程序和主機都要訪問原始圖像,例如在某一時刻,編碼程序訪問當(dāng)前幀圖像,主機讀取上一幀圖像,而視頻端口正在輸入下一幀圖像,為了避免訪問沖突,原始圖像在DSP中采用三緩沖區(qū)進行管理。壓縮碼流由編碼程序?qū)懭?主機讀取,所以采用乒乓制進行存儲。
        1.3 內(nèi)存分配
          DM642片內(nèi)只有256KB的存儲空間,因此當(dāng)前幀、參考幀和當(dāng)前幀的重建幀都必須放至片外存儲器,壓縮碼流若被主機讀取,也放至片外。其它數(shù)據(jù)如程序代碼、全局變量、VLC碼表、各編碼模塊產(chǎn)生的中間數(shù)據(jù)等均可放至片內(nèi)。
          由于CPU訪問片外的速度通常要比訪問片內(nèi)慢幾十倍,片外數(shù)據(jù)的傳輸通常成為程序運行時的瓶頸,即使代碼效率很高,流水線也會因為等待數(shù)據(jù)而被嚴重阻塞。解決這一問題的有效方法是用EDMA傳送數(shù)據(jù)。程序是逐個宏塊進行編碼的,在編碼當(dāng)前宏塊的同時,EDMA將下一個宏塊的數(shù)據(jù)、用到的參考幀數(shù)據(jù)由片外傳送至片內(nèi);當(dāng)前宏塊做完運動補償后,EDMA將重建后的宏塊由片內(nèi)傳送至片外。這樣CPU只對片內(nèi)數(shù)據(jù)進行操作,使得流水線可以順利進行,而壓縮碼流按逐個碼字有時間間隔地寫入,可由CPU直接寫至片外。
        2 采用預(yù)測技術(shù)的運動估計算法
          運動估計是MPEG-4編碼中計算量最大的一部分,占據(jù)整個編碼時間的50%以上。各種快速運動估計算法也成為近年來研究的熱點。本文通過實驗證明,采用預(yù)測技術(shù)的運動估計不但可以大大縮短計算時間,而且也有助于提高圖像的質(zhì)量。
          宏塊(Macro Block)的運動矢量(Motion Vector)在時間和空間都具有相關(guān)性,預(yù)測的原理就是利用當(dāng)前幀和參考幀內(nèi)相鄰位置宏塊的MV來預(yù)測當(dāng)前宏塊的MV。下面詳述本文所采用的預(yù)測算法。
          (1)確定當(dāng)前宏塊MV的7個候選值PreMV1~7。
          如圖3所示。PreMV1=(0,0);PreMV4取當(dāng)前宏塊左邊相鄰宏塊的MV值;PreMV5取上邊相鄰宏塊的MV值;PreMV6取右上方相鄰宏塊的MV值;PreMV2=mid{PreMV4, PreMV5, PreMV6},即取三者的中值;PreMV3取參考幀相同位置宏塊的MV值;PreMV7取參考幀右下方相鄰宏塊的MV值。

        上一頁 1 2 下一頁

        關(guān)鍵詞: TMS320C64x MPEG-4 編碼器

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 合川市| 桂东县| 巴林右旗| 岳阳市| 徐州市| 黔南| 广昌县| 手机| 旺苍县| 卓尼县| 台东县| 达拉特旗| 巴彦县| 额尔古纳市| 东丰县| 交城县| 靖宇县| 兴隆县| 北辰区| 兰坪| 大方县| 长垣县| 南皮县| 楚雄市| 长岛县| 东丽区| 西华县| 桃园县| 濮阳县| 和田市| 溧阳市| 长顺县| 额尔古纳市| 阳山县| 成安县| 大余县| 永州市| 京山县| 息烽县| 巫溪县| 习水县|