《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 業界動態 > 基于TMS320C64x DSPs的MPEG-4實時編碼器設計與實現

基于TMS320C64x DSPs的MPEG-4實時編碼器設計與實現

2008-08-26
作者:李群迎, 張曉林, 劉榮科,

  摘 要: 設計并實現了一種基于TMS320C64x系列高性能通用DSPs 的MPEG-4 Simple Profile編碼器。詳細介紹了系統的硬件結構和工作流程。為解決高分辨率視頻編碼的實時性問題, 采用預測技術的運動估計" title="運動估計">運動估計算法以及基于C64x CPU的軟件優化技術。實驗結果表明編碼器對D1分辨率(720×576)視頻的編碼速率達到25幀/秒以上,且具有較低的碼率和較好的圖像質量。
  關鍵詞: MPEG-4 TMS320C64x? 軟件優化? 運動估計


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


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


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


  (2)確定篩選候選值的依據——SAD(絕對誤差和)的門限值ThreshSAD。
  SAD是確定最佳匹配塊的準則。門限值ThreshSAD是指這樣一個值:如果參考幀內某一宏塊和當前宏塊的SAD小于ThreshSAD,則當前宏塊的MV值就可取作二者之間的位移。因此,ThreshSAD就可作為篩選7個候選值的依據。
  由于SAD在空間上的相關性,ThreshSAD由相鄰宏塊的SAD值來確定:
  ThreshSAD=Min{SADleft,SADtop,SADtop_left}
  其中,SADleft、SADtop、SADtop-right分別為MBleft、MBtop、MBtop-right和其對應匹配塊的SAD值,ThreshSAD取三者的最小值。
  (3)從7個候選值中選出當前宏塊的MV值。
  按照PreMV1~7的順序,依次計算當前宏塊和7個匹配塊的SAD值。如果有SAD值小于ThreshSAD,即停止計算,選用對應的PreMV作為當前宏塊的MV值;如果7個SAD值均大于ThreshSAD,則采用運動搜索來確定當前宏塊的MV值。該運動搜索并不以MV=(0,0)為中心,而是以對應SAD值最小的PreMV為中心,搜索采用簡化的菱形算法。
  對標準視頻序列" title="視頻序列">視頻序列foreman.cif(352×288)進行編碼(碼率300kbps),測得表1所示數據。采用預測的運動估計算法利用視頻序列在時間和空間上的相關性,無需對每個宏塊都進行運動搜索,而且其搜索中心點也同樣利用了相關信息,搜索算法也可進一步簡化,因此大大減少了運動估計的計算量;同時,預測有助于提高圖像質量,直接進行快速運動搜索通常會帶來局部最小的問題,從而影響圖像質量,而PreMV1~7取自位于當前宏塊周圍各個方向的宏塊的MV值,避免陷入局部最小。


3 基于C64x CPU的軟件優化技術
  為了提高代碼的執行效率,必須充分利用C64x CPU的VLIW和流水線結構對其進行優化,使程序無沖突地并行執行。MPEG-4編碼程序中包含大量的循環體,例如計算SAD值、量化、DCT、半像素插值、運動補償和構建重建幀等。這些循環體代碼并不復雜,但執行次數頻繁,占據了編碼的絕大部分時間,因此循環體的優化是重點。本文所采取的代碼優化分為C語言優化和編寫線性匯編兩個步驟,主要從消除數據相關性、數據打包和循環體的軟件流水三個方面進行優化。
3.1 針對C語言的優化
  C代碼的優化主要依靠開發環境CCS的編譯器完成,編程者需要合理選擇編譯選項,并利用特定的關鍵字和指令向編譯器提供優化信息。例如關鍵字restrict用來消除數據間的相關性,編譯器從而可以安排語句的并行執行;內聯函數_nassert有助于數據的打包處理;宏指令#pragma MUST_ITERATE告訴編譯器有關循環迭代次數的信息,編譯器會根據這一信息進行軟件流水。
3.2? 用線性匯編改寫關鍵代碼
  線性匯編是TMS320C6000特有的一種編程語言,介于高級語言和匯編語言之間。它可以指定指令用到的寄存器和功能單元,更易于對數據的打包處理。
  線性匯編代碼的并行處理和軟件流水由匯編優化器完成,編程者需要熟悉C64x DSP的CPU結構和指令集,認真設計代碼并充分利用編譯器的反饋信息合理修改代碼,才能寫出高質量的線性匯編。本設計中程序主框架采用C語言編寫,其它各關鍵部分的代碼采用線性匯編實現。表2是代碼優化前后的效率對比,表2中所列各代碼段均針對8×8宏塊進行處理。


4 結果分析
  對各標準視頻序列進行編碼,測得表3所示數據。實時采集D1(720×576)分辨率的視頻進行編碼,測得碼率為850kbps時,編碼速率達25fps以上,峰值信噪比(PSNR)高于31dB,實現了高分辨率的實時MPEG-4編碼。


  表3中各視頻序列的編碼均采用了8×8半像素精度的運動估計,解碼圖像的視覺效果較好。對于較低分辨率的視頻(QCIF、CIF),其編碼速率已遠遠高于實時的要求,因此可以考慮添加新的算法以提高壓縮效率并增強碼流的抗差錯性能。
  本文以DM642芯片為例詳述了基于C64x DSPs的MPEG-4實時編碼器設計。編碼器采用MPEG-4 Simple Profile算法,在算法和代碼優化方面還有一定的研究空間。本文給出的設計方法可以進一步推廣到H.264或者其他視頻編碼系統。

參考文獻
1 Prasad RSV, Ramkishor korada. Efficient implementation of MPEG-4 video encoder on RISC core[J].IEEE Transactions on Consumer Electronics, 2003;47(1):1~6
2 A. Dasu, S. Panchanathan. A Survey of Media Processing? Approaches[J]. IEEE Trans.on Circuit and System for Video Technology, 2002;12(8):1~13
3 Tihao Chiang, Hung_Ju Lee, Huifang Sun. An overview of the encoding tools in the MPEG-4 reference software[J].In-ternational Symposium on Circuits and Systems, 2000; May 28-31:1~4
4 鐘玉琢,王 琪,賀玉文. 基于對象的多媒體數據壓縮編碼國際標準——MPEG-4及其校驗模型[M]. 北京:科學出版社,2000
5 李方慧,王 飛,何佩琨. TMS320C6000系列DSPs的原理與應用[M].北京:電子工業出版社,2003

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
久久综合久久综合久久综合| 国产精品私房写真福利视频| 亚洲欧美韩国| 亚洲激情在线观看视频免费| 午夜精品久久久久久久久久久久久| 亚洲精品一区在线观看| 亚洲电影视频在线| 亚洲高清在线观看| 依依成人综合视频| 影音先锋久久| 亚洲福利一区| 亚洲高清二区| 亚洲欧洲午夜| 亚洲精品久久久久久久久久久久久| 亚洲成人在线| 亚洲国内在线| 亚洲精品欧美极品| 99国内精品久久| 中文在线资源观看网站视频免费不卡 | 国产精品综合久久久| 欧美日韩亚洲不卡| 国产精品二区在线| 国产精品美女久久久| 国产精品一区二区在线| 国产亚洲一级高清| 国内精品久久久久久久97牛牛| 国内精品亚洲| 亚洲国产老妈| 一本色道久久88综合亚洲精品ⅰ| 一区二区三区精品国产| 亚洲一级片在线看| 香港成人在线视频| 亚洲国产欧美另类丝袜| 99re66热这里只有精品3直播 | 亚洲午夜一区二区三区| 午夜久久久久久久久久一区二区| 性色一区二区三区| 久久精品综合网| 欧美成人精品激情在线观看| 欧美伦理视频网站| 国产精品免费电影| 国内精品视频在线观看| 亚洲精品久久久久| 亚洲在线一区二区三区| 久久精品国产精品亚洲综合| 亚洲巨乳在线| 欧美一区2区三区4区公司二百| 久久久久中文| 欧美老女人xx| 国产欧美一区二区色老头| 在线成人激情黄色| 中文久久精品| 久久精品道一区二区三区| 99riav国产精品| 欧美与黑人午夜性猛交久久久| 免费高清在线一区| 国产精品乱人伦中文| 在线成人性视频| 一区二区三区 在线观看视| 欧美一区2区视频在线观看| 亚洲精品在线观看视频| 性欧美大战久久久久久久免费观看 | 国产精品入口夜色视频大尺度| 激情伊人五月天久久综合| 亚洲欧洲一区二区三区在线观看| 亚洲曰本av电影| 亚洲精品久久久蜜桃| 午夜精品久久久久久99热| 暖暖成人免费视频| 国产精品视频免费在线观看| 亚洲高清av| 欧美一二三区精品| 国产精品99久久久久久白浆小说 | 国产精品激情| 在线视频观看日韩| 亚洲欧美经典视频| 一区二区三区精品| 嫩模写真一区二区三区三州| 国产精品一区在线观看你懂的| 亚洲人成高清| 久久国产成人| 午夜精品久久久99热福利| 欧美激情综合| 一区在线播放| 性18欧美另类| 亚洲欧美日韩在线高清直播| 欧美激情一区二区三区在线| 国产综合色产| 先锋影音网一区二区| 亚洲制服欧美中文字幕中文字幕| 欧美国产国产综合| 精品福利免费观看| 欧美一进一出视频| 午夜日韩电影| 欧美日韩综合视频| 91久久亚洲| 亚洲激情另类| 亚洲日本成人| 国产在线拍偷自揄拍精品| 亚洲美洲欧洲综合国产一区| 久久精品夜色噜噜亚洲aⅴ| 亚洲欧美综合一区| 欧美日韩国产在线一区| 亚洲国产成人tv| 亚洲东热激情| 久久蜜桃香蕉精品一区二区三区| 国产欧美日韩精品一区| 亚洲一本大道在线| 亚洲伊人伊色伊影伊综合网| 欧美理论电影在线播放| 91久久国产综合久久| 亚洲高清免费在线| 久久人人爽爽爽人久久久| 国产亚洲一区二区三区在线播放| 亚洲一区二区黄| 午夜国产精品视频| 国产精品萝li| 亚洲一区一卡| 欧美一区二区视频观看视频| 国产精品乱人伦一区二区| 亚洲影视综合| 欧美在线观看一区| 国产女优一区| 欧美一级淫片播放口| 久久精品视频免费播放| 国产一区二区精品丝袜| 久久不射电影网| 久久午夜国产精品| 伊大人香蕉综合8在线视| 91久久久久| 欧美成人综合在线| 亚洲人妖在线| 亚洲一区三区电影在线观看| 国产精品乱子久久久久| 亚洲欧美日韩综合aⅴ视频| 欧美在线www| 国内精品一区二区| 亚洲精品欧美极品| 欧美日韩精品久久久| 一区二区三区日韩在线观看| 亚洲综合精品一区二区| 国产精品一区二区欧美| 欧美中文在线免费| 欧美高潮视频| 日韩亚洲综合在线| 亚洲综合导航| 国产亚洲欧洲| 日韩亚洲精品在线| 欧美午夜不卡视频| 性xx色xx综合久久久xx| 欧美成年网站| 在线亚洲免费视频| 久久久久国产成人精品亚洲午夜| 在线观看日韩av先锋影音电影院| 日韩亚洲在线观看| 国产精品视频xxxx| 亚洲国产精品传媒在线观看| 欧美黄色影院| 亚洲欧美日韩久久精品| 欧美1区视频| 一区二区三区日韩| 久久免费国产精品1| 亚洲精品视频一区| 狠狠色丁香婷婷综合久久片| 久久精彩免费视频| 欧美—级在线免费片| 亚洲私拍自拍| 美女久久一区| 亚洲午夜一区| 欧美成人精品三级在线观看| 亚洲亚洲精品在线观看 | 欧美一区二区视频在线观看2020| 蜜臀av性久久久久蜜臀aⅴ| 一本大道久久a久久综合婷婷| 欧美在线视频全部完| 亚洲国产激情| 新狼窝色av性久久久久久| 1024成人| 欧美在线看片| 亚洲免费观看高清完整版在线观看熊| 欧美资源在线观看| 亚洲人成欧美中文字幕| 久久福利影视| 99re66热这里只有精品3直播| 久久深夜福利| 一区二区三区.www| 蜜桃精品一区二区三区| 亚洲字幕一区二区| 欧美精品日韩| 欧美中文在线视频| 国产精品毛片a∨一区二区三区|国 | 麻豆成人精品| 亚洲永久网站| 欧美日韩在线精品| 亚洲激情一区| 国产一区二区日韩精品欧美精品| 亚洲图片在线观看| 亚洲观看高清完整版在线观看| 久久精品亚洲乱码伦伦中文 | 亚洲已满18点击进入久久|