徐 寧 孟凡榮 孫 洋
(海軍七〇四工廠 青島 266109)
近年來,多媒體技術(shù)迅猛發(fā)展,視頻編解碼技術(shù)越來越多的應用到網(wǎng)絡傳輸中,如電視電話會議,遠程監(jiān)控等。但由于受信道傳輸帶寬的限制,多媒體技術(shù)的各項應用都離不開高效視頻圖像壓縮算法。以往采用的H.261標準的視頻編解碼器,壓縮率較低,支持的圖像成像質(zhì)量不高,特別是當圖像放大到后方指揮所作戰(zhàn)大廳的大屏幕,圖像較模糊,視覺效果不是很好,影響了指揮機關(guān)對現(xiàn)場態(tài)勢的判斷。新一代標準H.264視頻壓縮標準在同等視頻質(zhì)量的條件下,它的壓縮率比更為先進的 H.263(Baseline)或MPEG-4(SP)高50%左右,也就是說在同樣的碼率下,信噪比大幅提高,同時還具有良好的網(wǎng)絡親和性(適應性)。這就使得該標準在視頻領(lǐng)域諸如實時視頻通信和網(wǎng)絡流媒體具有很大的應用潛力。但是由于H.264中引入了多種新的編碼技術(shù),使得編碼器的計算量急劇增加,因此,硬件選型上,采用以TMS320DM6467T作為主處理器,實現(xiàn)視頻的多路H.264的編碼及解碼。DM6467T由于具備兩個獨立的VICP視頻編碼協(xié)處理單元,能很大程度上提高編碼實現(xiàn)的效率,使之能適應高清圖像或多路標清圖像的處理。
H.264標準是ITU-T的VCEG(視頻編碼專家組)和ISO/IEC(國際標準化組織/國際電工委員會)的 MPEG(活動圖像專家組)聯(lián)合開發(fā)的一種高效的視頻編碼壓縮標準。它既是ITU-T的H.264,又是ISO/IEC的MPEG-4高級視頻編碼(Advanced Video Coding,AVC),為 MPEG-4標準的第10部分。H.264集中了以往標準的優(yōu)點,并吸收了標準制定中積累的經(jīng)驗[1]。
H.264的提出是為了滿足各種應用(如:視頻會議、數(shù)字存儲媒體、視頻點播)中對視頻壓縮的需要。H.264能使編碼的視頻以靈活的方式應用于多樣化的網(wǎng)絡環(huán)境中,并且極大地降低發(fā)送視頻所需的帶寬。該標準的主要目標如下[2]:
1)提高壓縮編碼效率。在相同視頻圖像質(zhì)量下,H.264比H.263節(jié)省50%左右的碼率,也就是僅用一半的編碼量就能得到同樣質(zhì)量的畫面。它采用了“回歸基本”的簡潔設計,不用眾多的選項,就能獲得比H.263好得多的性能。
2)增強網(wǎng)絡適應能力。標準中引入了網(wǎng)絡適應層NAL(Network Abstraction Layer),使得 H.264文件易于在不同網(wǎng)絡上傳輸(例如互聯(lián)網(wǎng)、CDMA、GPRS、WCDMA等)。其碼流結(jié)構(gòu)增強了差錯恢復能力,能很好地適應IP和無線網(wǎng)絡的應用,具有更好的網(wǎng)絡友好性。H.264也加強了對誤碼和丟包的處理,提高了抗誤碼能力。
H.264標準有三個框架(profile),分別是Baseline profile、Main profile和Extend profile,每個profile有相應的算法組成和語法結(jié)構(gòu)[3]。
1)基本層次(Baseline Profile):該層次使用了 H.264的除了B-Slices,CABAC以及交織編碼模式外所有的特性。該層次主要使用于低時延的實時應用場合。
2)主要層次(Main Profile):包含Baseline profile的所有特性,并包括了B-slices,CABAC以及交織編碼模式。它主要針對時延要求不高,但壓縮率和質(zhì)量要求較高的場合。
3)擴展層次(Profile X):支持所有Baseline profile的特性,但不支持CABAC以及基于宏塊的自適應幀場編碼。該層次主要針對的是各種網(wǎng)絡視頻流傳輸方面的應用。
H.264在算法上分為兩層:視頻編碼層(VCL:Video Coding Layer)和網(wǎng)絡提取層(NAL:Network Abstraction Layer),如圖1所示。視頻編碼層負責高效的視頻內(nèi)容處理;網(wǎng)絡提取層負責網(wǎng)絡的分段格式封裝數(shù)據(jù),包括組幀、邏輯信道的指令、定時信息的利用或序列結(jié)束信號等。其碼流結(jié)構(gòu)的網(wǎng)絡適應性強,容錯性好,對誤碼和丟包處理能力強。VCL和NAL之間定義了基于分組方式的接口,高效編碼和良好的網(wǎng)絡適應性分別由VCL和NAL完成[4]。

圖1 H.264標準的整體框架
1)幀內(nèi)預測編碼
為了提高H.264幀內(nèi)編碼的效率,在給定幀中充分利用相鄰宏塊的空間相關(guān)性,相鄰的宏塊通常含有相似的屬性。因此,在對一給定宏塊編碼時,首先可以根據(jù)周圍的宏塊預測(典型的是根據(jù)左上角的宏塊,因為此宏塊已經(jīng)被編碼處理),然后對預測值與實際值的差值進行編碼,這樣,相對于直接對該幀編碼而言,可以大大減小碼率。
H.264提供6種模式進行4×4像素宏塊預測,包括1種直流預測和5種方向預測,相鄰塊的A~I共9個像素均已經(jīng)被編碼,可以被用以預測,如果我們選擇模式4,那么,a、b、c、d4個像素被預測為與E相等的值,e、f、g、h4個像素被預測為與F相等的值,對于圖像中含有很少空間信息的平坦區(qū),H.264也支持16×16的幀內(nèi)編碼。
2)幀間預測編碼
幀間預測編碼利用連續(xù)幀中的時間冗余來進行運動估計和補償。H.264的運動補償支持以往的視頻編碼標準中的大部分關(guān)鍵特性,而且靈活地添加了更多的功能,除了支持P幀、B幀外,H.264還支持一種新的流間傳送幀—SP幀。碼流中包含SP幀后,能在有類似內(nèi)容但有不同碼率的碼流之間快速切換,同時支持隨機接入和快速回放模式。
3)整數(shù)變換
在變換方面,H.264使用了基于4×4像素塊的類似于DCT的變換,但使用的是以整數(shù)為基礎(chǔ)的空間變換,不存在反變換,因為取舍而存在誤差的問題。與浮點運算相比,整數(shù)DCT變換會引起一些額外的誤差,但因為DCT變換后的量化也存在量化誤差,與之相比,整數(shù)DCT變換引起的量化誤差影響并不大。此外,整數(shù)DCT變換還具有減少運算量和復雜度,有利于向定點DSP移植的優(yōu)點。
4)量化
H.264中可選32種不同的量化步長,這與H.263中有31個量化步長很相似,但是在H.264中,步長是以12.5%的復合率遞進的,而不是一個固定常數(shù)。
在H.264中,變換系數(shù)的讀出方式也有兩種:之字形(Zigzag)掃描和雙掃描。大多數(shù)情況下使用簡單的之字形掃描;雙掃描僅用于使用較小量化級的塊內(nèi),有助于提高編碼效率。
5)熵編碼
視頻編碼處理的最后一步就是熵編碼,在H.264中采用了兩種不同的熵編碼方法:通用可變長編碼(UVLC)和基于文本的自適應二進制算術(shù)編碼(CABAC)。
因此,H.264中還提供了可選的CABAC方法。算術(shù)編碼使編碼和解碼兩邊都能使用所有句法元素(變換系數(shù)、運動矢量)的概率模型。為了提高算術(shù)編碼的效率,通過內(nèi)容建模的過程,使基本概率模型能適應隨視頻幀而改變的統(tǒng)計特性。內(nèi)容建模提供了編碼符號的條件概率估計,利用合適的內(nèi)容模型,存在于符號間的相關(guān)性可以通過選擇目前要編碼符號鄰近的已編碼符號的相應概率模型來去除,不同的句法元素通常保持不同的模型。
達芬奇(DaVinci)技術(shù)是TI推出的最新的針對數(shù)字多媒體應用而定制的基于DSP的系統(tǒng)解決方案組件的集合,為多媒體設備提供商簡化設計并加速產(chǎn)品創(chuàng)新提供集成的處理器、軟件與工具。
達芬奇技術(shù)提供的開放式開發(fā)平臺同時也擴展了應用程序。達芬奇軟件初始支持Linux,Linux支持下的內(nèi)容包括外設驅(qū)動器、實時應用管理、應用級API以及隨時投產(chǎn)的代碼。針對視頻而精心優(yōu)化的、基于集成的DSP、專用型開發(fā)工具、調(diào)諧驅(qū)動器、CODEC以及系統(tǒng)級應用代碼的整體組合使開發(fā)人員能夠?qū)崿F(xiàn)完整而復雜的數(shù)字視頻系統(tǒng),僅需少量函數(shù)調(diào)用即可提供編解碼功能[5]。
TMS320DM6467是基于Davinci技術(shù)的最先進的媒體處理器,內(nèi)部集成了297MHz的 ARM926EJ-S內(nèi)核與594MHz的C64x+DSP內(nèi)核,并采用高清視頻/影像協(xié)處理器(HD-VICP,Video Image Co-Processor)和視頻數(shù)據(jù)轉(zhuǎn)換引擎(VDCE),在執(zhí)行 H.264HP@L4(1080i60fps、720p 60fps)的同步多格式高清編碼、解碼與轉(zhuǎn)碼方面,比前代處理器性能大大提高,堪稱DaVinci處理器中性能最高者。
無線視頻傳輸中,尤其是遠距離的傳輸,衛(wèi)星分配的帶寬有限,上行帶寬一般不超過2Mbit/s,即通常采用E1接口來傳輸。下文詳細描述了TMS320DM6467在低于2Mbit/s的帶寬下能夠傳輸D1格式圖像的設計與實現(xiàn)。
TI的達芬奇(Davinci)數(shù)字媒體技術(shù)平臺包括四大部分:芯片(處理器)、開發(fā)工具或開發(fā)套件、軟件及技術(shù)支持。其中軟件開發(fā)涉及到操作系統(tǒng)、音視頻解碼算法及ARM和DSP之間的分工協(xié)作,相對比較復雜。
為此TI推出了一系列軟件模塊和工具來建立DaVinci軟件開發(fā)的框架,方便在此基礎(chǔ)上快速地開發(fā)自己的產(chǎn)品。這些軟件模塊和工具包含在TI的基于達芬奇技術(shù)的DM6467的軟件開發(fā)包中。在視頻應用系統(tǒng)中,DaVinci的ARM負責操作系統(tǒng)應用,DSP負責運行音視頻編解碼算法處理,ARM通過TI的CodecEngine機制調(diào)用DSP側(cè)的編解碼codec。
由DaVinci系統(tǒng)的軟件框架可知,應用層通過Codec Engine提供的VISA(Video Image Speech Audio)API來調(diào)用DSP側(cè)的算法,并通過EPSI(Easy Peripheral Software Interface)API來訪問和操作外設,這兩個部分的存在大大簡化了集成工作的復雜程度[6]。
如圖2所示,DaVinci的軟件開發(fā)通常需要四個步驟:

圖2 Davinci的軟件開發(fā)流程
第一步,工程師需要基于DSP利用CCS開發(fā)自己的音視頻編解碼算法,編譯生成一個編解碼算法的庫文件木.1ib(等同于Linux環(huán)境下的宰.a64P,直接在Linux環(huán)境下修改文件后綴名即可)。
第二步,生成一個在DSP上運行的可執(zhí)行程序..x64P(P-,P.out文件),也就是DSP Server。
第三步,根據(jù)DSP Server的名字及其中包含的具體的音視頻編解碼算法創(chuàng)建Codec Engine的配置文件*.cfg。這個文件定義Engine的不同配置,包括Engine的名字、每個Engine里包括的codecs及每個codec運行在ARM還是DSP側(cè)等等。
第四步,應用工程師收到不同的codec包、DSP Server和Engine配置文件*.cfg,把自己的應用程序通過編譯、鏈接,最終生成ARM側(cè)可執(zhí)行文件。
DM6467視頻接口可以顯示和捕獲數(shù)字視頻碼流,其特點是:兩個輸入捕獲通道(Channel 0和Channel 1):其中Channel0和Channell具有相同的結(jié)構(gòu),Chmtnel2和Channel3具有相同的結(jié)構(gòu)。視頻接口框圖如圖3所示。

圖3 VPIF結(jié)構(gòu)框圖
VPIF采集/顯示模塊驅(qū)動是基于 V4L2(video for Linux-2)驅(qū)動開發(fā)的,V4L2驅(qū)動可以實現(xiàn)視頻的采集和輸出,其對流水線有很好的支持,并支持多種緩沖區(qū)格式,此外還擁有相應的緩沖區(qū)管理機制。V4L2驅(qū)動是Video for Linux的第二版,其解決了V4L中存在的一些問題,并且提高了硬件性能。V4L2驅(qū)動是被插入到“videodev”這一核心模塊中的,為Linux下的視頻設備提供了一套API和相關(guān)的標準,按照V4L2規(guī)定的接口訪問方式控制和讀寫設備,即可完成視頻的采集和輸出。V4L2驅(qū)動利用統(tǒng)一的接口注冊了一個主設備號為81的字符設備,次設備號可以是0-255,次設備號主要是解決同類設備之間可能的沖突。同時注冊了一個設備文件操作結(jié)構(gòu),這個統(tǒng)一的設備操作結(jié)構(gòu)里的驅(qū)動接口函數(shù)根據(jù)被打開特殊設備文件的次設備號,來定位該設備文件對應的struct video device,從而實現(xiàn)對特定設備的控制。為了實現(xiàn)這種定位,V4L2定義了一個靜態(tài)數(shù)組static struct video device*video_device[256],每個特定的設備都在該數(shù)組里占據(jù)一項。設計具體驅(qū)動程序時,需通過V4L2提供的設備注冊函數(shù)video_register_device將每個所要控制的硬件設備數(shù)據(jù)結(jié)構(gòu)填充到該靜態(tài)數(shù)組中。
VPIF顯示驅(qū)動主要是對VPIF接口和編碼器進行配置。其中VPIF Display Driver與具體硬件相關(guān),主要實現(xiàn)的是video device結(jié)構(gòu)體,Encoder Manager負責管理系統(tǒng)中的編碼器驅(qū)動,與具體的硬件無關(guān),向上層的應用屏蔽了具體的硬件操作,而與編碼器相關(guān)的硬件操作是通過Encoder實現(xiàn)的。
VPIF顯示驅(qū)動模塊初始化時首先為兩個顯示通道分配顯示內(nèi)存,然后通過video_registerdeviceO V4L2驅(qū)動模塊注冊相應的struct video—device結(jié)構(gòu),從設備號為2和3,并 創(chuàng) 建 相 應 的 顯 示 設 備 節(jié) 點 “/dev/video2”和 “/dev/video3”,這兩個節(jié)點分別對應channel2和channel3。VPIF輸出顯示的所有功能都是由struct video_device實現(xiàn)的,其結(jié)構(gòu)如下所示。


視頻顯示/采集的基本流程如圖4所示。

圖4 視頻顯示/采集的流程圖
在Linux系統(tǒng)下,通過指令終端進入編解碼主程序所在文件夾,然后在終端下編譯(make),然后在下一級Linux文件夾下生成主程序的執(zhí)行文件,并把文件重命名為encode或decode,將開發(fā)平臺掛載到Linux下某一目錄,然后把執(zhí)行文件通過該目錄傳入開發(fā)平臺,并建立一個腳本文件(后綴名為.sh),將對應的子程序與主程序的執(zhí)行文件相鏈接,然后運行腳本文件即可實現(xiàn)編解碼功能。
視頻傳輸降低數(shù)據(jù)量的方式一般有兩種:減少每秒發(fā)送幀數(shù)和降低傳輸比特率。由于算法的封裝,導致接口不透明性,無法修改發(fā)送幀數(shù)。因此,采用降低傳輸比特率的方式,結(jié)果發(fā)現(xiàn),傳輸圖像有明顯的跳線,即數(shù)據(jù)丟失較大,還原不好。具體實現(xiàn)見流程圖5。

圖5 視頻編解碼采集傳輸流程圖
試驗表明:E1線路2M帶寬的模擬衛(wèi)通環(huán)境下,4CIF格式視頻圖像的傳輸,得到了較滿意的效果。較現(xiàn)有的衛(wèi)通CIF(352×288)格式,提高了4倍清晰度D1的效果。傳輸截圖如圖6所示。

圖6 D1格式下的視頻播放
實踐證明,上述基于TMS320DM6467TDSP平臺視頻編解碼器的技術(shù)改進,實現(xiàn)了H.264的編解碼要求,在提高圖像壓縮率的同時大大提高了圖像質(zhì)量,尤其在低碼率2MHzbps以下,所恢復出的圖像質(zhì)量是H.261壓縮標準所無法比擬的。實現(xiàn)了在2M帶寬的模擬衛(wèi)通傳輸環(huán)境下4CIF格式視頻圖像的傳輸,得到了較滿意的視頻效果。較現(xiàn)有的衛(wèi)通CIF(352×288)格式,提高了4倍清晰度,為更高質(zhì)量衛(wèi)通視頻傳輸提供了可能。
[1]ITU-T Rec.H.264|ISO/IEC 11496-10AVC[S].Document JVT-G050,7th Meeting:Pattaya,Thailand,2003-03.
[2]畢厚杰.新一代視頻壓縮編碼標準—H.264/AVC[M].北京:人民郵電出版社,2005.
[3]Iain E.G.Richardson,The Robert Gordon University,Aberdeen,UK.H.264and MPEG-4Video Compression-Video Coding for Next-generation Multimedia[M/OL].http://nmlab.zju.edu.cn/~mm/book/H.264.And.MPEG-4.Video.Compre-ssion.Video.Coding.For.Next.Generation.Multimedia.pdf.
[4]孫同倫.基于H.264標準的視頻編解碼器的實現(xiàn)、性能研究與優(yōu)化[D].合肥:中國科學技術(shù)大學碩士學位論文,2006.
[5]彭啟琮.達芬奇技術(shù)—數(shù)字圖像/視頻信號處理新平臺[M].北京:電子工業(yè)出社,2008.
[6]高平.基于TMS320DM6467的多功能多媒體處理平臺的軟件設計與實現(xiàn)[D].天津:天津大學碩士學位論文,2009.
[7]德州儀器.TMS320PM646XDMSoC Video Port Interface(VPIF)使用向?qū)?版本號:SPRUER90.2009:12-20.
[8]宋磊,方向忠.達芬奇技術(shù)視頻應用分析[J].電視技術(shù),2006:31-33.
[9]Texas Instruments.DVEVM Getting Started Guide,2007:45-58.
[10]文武,吳勇,張杰.基于TM320DM6467的視頻采集系統(tǒng)設計[J].電視技術(shù),2011:62-63.