許起明,余 翔,徐宇明
(重慶郵電大學,重慶400065)
隨著無線通信技術的飛速發展以及無線帶寬的不斷提高,特別是第三代(3G)以及后三代/第四代(B3G/4G)通信系統的出現,移動帶寬顯著增加,使得在無線信道中提供各種視頻業務成為可能。如:無線信道WCDMA可在5 MHz的帶寬內,提供最高384 kbit/s的用戶數據傳輸速率;TD-LTE能夠在20 MHz的頻譜帶寬下,提供下行100 Mbit/s、上行50 Mbit/s的峰值傳輸速率[1]。無線寬帶技術的飛速發展為高質量、動態視頻業務提供了無線傳輸的強力支撐。
在視頻編碼方面,國際標準化組織ITU-T(國際電信聯盟)、ISO/IEC(國際標注化組織/國際電工委員會)以及中國自主知識產權的AVS(音視頻編碼標準)標準組織在最近十多年的時間里頒布了一系列視頻編碼標準,極大地推動了視頻應用不斷向前發展。由ITU-T和ISO/IEC聯合制定的H.264(MPEG-4 Part10)是國際上目前最前沿的視頻編碼標準之一,它具有高壓縮率和網絡親和性的顯著特點,被廣泛應用到相關視頻領域中[2]。
伴隨著無線通信技術和視頻編碼標準的發展,人們對實時無線視頻傳輸需求日益增長。而傳統的基于專業集成電路的方案顯然已經不適合用來實現不斷升級的編碼算法。目前隨著DSP芯片的高速發展,TI公司推出了達芬奇技術,它將固定功能器件的高效性和可編程器件的靈活性結合在一起,支持各種數字視頻的終端設備,為實現實時、高要求的音視頻信號處理提供了可能性,再加上高效的低碼率視頻編碼標準H.264的成熟應用與算法的不斷改進,為實時視頻的高質量傳輸提供了數字視頻信號處理平臺和算法指導[3]。
無線設備的功耗和資源的有限性與視頻編解碼技術復雜度的不斷增加之間的矛盾,再加上復雜多變的無線信道的高誤碼率和帶寬的有限性,使得通過無線信道傳輸高質量的視頻數據仍面臨著巨大的挑戰[4]。本文在這樣的背景下,根據TI公司最近推出的TMS320DM3730處理器(以下簡稱DM3730)提出基于無線信道質量變化的自適應視頻質量保證技術研究方案,并在WCDMA信道(以下簡稱W信道)完成了測試驗證。
本文根據無線信道的質量變化設計出了一種基于達芬奇平臺DM3730上H.264視頻編碼庫的動態參數優化配置方案。在DM3730中,有一些自帶的算法庫,在使用DM3730平臺時,可以直接編寫應用端(App)程序,調用自帶算法庫中的相關函數。本文調用DM3730自帶的H.264算法庫實現視頻的編解碼。
系統總體框架如圖1所示,主要由終端設備、W基站、監控中心三部分組成。終端設備達芬奇技術平臺DM3730調用H.264算法庫將攝像頭采集的圖像數據壓縮成H.264格式,再經過W信道傳輸至遠端的監控中心。傳輸過程中實時地根據監控中心反饋的無線信道的質量情況動態調節H.264編碼庫的可變參數,實時地更新編碼參數以保障視頻質量。

圖1 系統總體框架圖
系統硬件組成結構圖如圖2所示。

圖2 系統硬件結構圖
功能模塊定義和說明:
1)CPU處理器模塊。本文選用德州儀器(TI)最近推出的達芬奇系列TMS320DM3730處理器。該處理器集成了1 GHz的ARM Cortex-A8內核及800 MHz的高級數字信號處理的DSP核[5]。達芬奇技術平臺的ARM+DSP的雙核結構擁有DSP對數據信號的高速處理能力,又具有ARM對外圍設備的強大的管理能力。
2)視頻數據采集模塊。攝像頭選用奧尼國際推出的酷睿高清版HD 1 080P攝像頭。該攝像頭采用頂尖的制作工藝、聲像同步技術,業內首創30 f/s(幀/秒)的速率;內置采用弱光增益技術,IP遠程安全監控方案,具有最佳的傳感效果;可支持多種分辨率,該模塊通過高速USB2.0接口連接到板卡,實現預覽等功能。
3)電源管理模塊。選用與CPU處理器配套的TPS65930電源管理芯片。它與CPU之間使用I2C協議通信。TPS65930主要的作用是將1.2 V、1.8 V電壓提供給CPU,便CPU正常運作。
4)無線傳輸模塊。選用天漠公司推出的3G無線通信模塊—WCDMA8000-U,基于高通最新的MSM6280平臺UMTS標準開發。通用的USB接口和強大的軟件支撐平臺,使該模塊具備友好的二次開發軟硬件平臺,可以支持多種外圍設備。該模塊通過高速USB2.0接口經過USB-HUB連接到板卡。
本節介紹了終端設備編碼器端軟件整體架構及各個主要子模塊的設計與實現,包括視頻圖像的采集、圖像數據的編碼、圖像數據的存儲、圖像數據的傳輸、監控中心的交互以及圖形界面的交互,如圖3所示。

圖3 系統軟件功能模塊圖
本文采用基于嵌入式Linux的達芬奇和Qt軟件架構相結合的方式,其中應用層涉及Qt界面設計與達芬奇架構整合和文件IO等操作;內核層涉及到視頻數據的采集,通過使用ioctl()系統調用來控制視頻設備;信號處理層包括達芬奇平臺下H.264算法的調用與可變參數的優化配置。
3.1.1 視頻圖像的采集
視頻的采集是基于Video4Linux2(V4L2)設備驅動實現的,整個流程如圖4所示。首先打開設備文件,利用命令標志符VIDIOC_QUERYCAP來獲取設備的屬性;利用VIDIOC_S_FMT來設置視頻采集的格式;接著利用VIDIOC_REQBUFS來向內核空間申請視頻幀緩沖;然后使用內存映射函數(即mmap()函數)將申請到的緩存地址轉換成應用程序中的絕對地址并利用VIDIOC_QBUF把這段緩存放入緩存隊列,用VIDIOC_STREAMON開始視頻的采集;利用VIDIOC_DQBUF把已采集的一幀視頻數據出隊列并利用FifoUtil_put()函數將采集的數據通過寫管道傳入圖像數據壓縮的緩沖區,以便視頻數據的編碼;最后通過VIDIOC_QBUF將幀緩沖重新入隊列,實現循環采集。

圖4 視頻圖像的采集流程圖
3.1.2 圖像數據的編碼
在ARM+DSP雙核架構的達芬奇平臺上,DSP端用DSP/BIOS來支持音視頻算法的運行,ARM端用Monta-Vista Linux(MV)來支持其對外設的管理。對于ARM與DSP之間的數據交互,則用編解碼引擎(Codec Engine)和服務器(Codec Server)來加以管理。視頻編解碼是通過調用Codec Engine來實現的。通過這種機制,ARM端的程序就可以通過調用Codec Engine提供的VISA(Video,Image,Speech,Audio)API接口,在 DSP端執行編解碼算法。DSP端專門負責各種算法的執行,并通過VISA API接口將算法執行的結果返回給ARM端的程序[6]。
圖像數據的編碼流程如圖5所示。首先通過調用Engine_open()函數打開編碼器引擎;再創建編碼器Venc1_create(hEngine,H264ENC_NAME,&params,&dynParams);其中params結構體為編碼器的基本參數配置,dynParams結構體為算法調用時可以動態改變的參數(在創建編碼器前需要配置好這些參數);通過調用FifoUtil_get()讀管道將已采集的視頻數據讀入緩沖區并調用Venc1_process()函數進行一幀數據的編碼同時將編碼之后的數據通過FifoUtil_put()傳入存儲線程中;最后將幀緩沖返回給編碼線程實現循環編碼。

圖5 圖像數據的編碼流程圖
3.1.3 圖像數據的存儲
圖像數據的存儲如圖6所示。首先打開存儲文件并調用Rendezvous_meet()函數同步等待其他線程(其他的線程也會同步等待);然后對每幀數據進行拆包、加幀頭信息并存入循環鏈表中以便網絡發送;編碼之后的數據同時存入本地文件中;最后當線程結束時要清理所有的緩存,釋放資源其他線程也是這樣。

圖6 圖像數據的存儲流程圖
3.1.4 圖像數據的傳輸
圖像數據的網絡傳輸是基于UDP協議進行傳輸的,整個流程如圖7所示。首先創建一個UDPSocket,并調用setsockopt()函數和bind()函數進行相關的配置和地址綁定;然后讀取存儲的循環鏈表進行發送,緩沖發送至監控中心;最后在參考幀的位置進行檢測,如果沒收到監控中心的回復信息則阻塞重發。這里有一個H.264編碼的可變參數,代表編碼I幀間隔的參數intraFrameInterval,編碼之后的數據每隔這個參數的值就會出現一個I幀,在監控中心設定當出現I幀就會向傳輸線程回傳一個信息,這樣可以保證傳輸的可靠性。

圖7 圖像數據的傳輸流程圖
3.1.5 監控中心的交互
為確保終端設備與監控中心的交互的可靠性,選擇TCP協議進行傳輸,整個流程如圖8所示。首先創建一個TCPSocket,并調用setsockopt()函數和bind()函數進行相關的配置和地址綁定;調用connect()函數連接監控中心,連接成功后判斷是否需要重新綁定;一切就緒后,不斷地讀取監控中心發過來的包并判斷其類型,如果是心跳包則直接回應已收到,如果是命令包則解析命令,再相應地給予回應。監控中心每隔幾秒會向終端設備發送命令包以確保連接的正常。最會線程結束時先關閉創建的Socket,再釋放緩存。

圖8 監控中心交互流程圖
3.1.6 圖形界面的設計
本文是基于Qt在終端設備的應用程序中設計一個可視化的界面。終端設備要移植tslib和QtE,以保證終端設備具有觸摸屏功能并支持Qt編譯環境,從而在終端設備實現基于QT圖形界面程序[7-9]。終端設備的用戶界面如圖9所示,先進行PPP撥號獲取本地WCDMA網絡的IP,再將監控中心的IP寫入Ser IP中,最后點擊Run按鈕執行以上線程從而實現W信道中視頻數據的采集、編碼與傳輸。

圖9 終端設備的用戶界面(截圖)
3.2.1 圖像數據編碼的可變變數分析
本節將對達芬奇平臺下H.264編碼算法的可變參數逐一比較分析。這些參數位于3.1.2小節中介紹的創建編碼器函數Venc1_create()的dynParams結構體中。主要包括最大比特率maxBitRate、最大幀率maxFrameRate、視頻的分辨率maxWidth和maxHeight、編碼類型encodingPreset、I幀間距 intraFrameInterval。
1)maxBitRate:該參數為編/解碼支持的最大比特率,是指視頻文件在單位時間內使用的最大數據流量,也稱碼率,單位為比特每秒(bit/s),是視頻編碼中畫面質量控制最重要的部分。該參數影響圖像的體積與質量:同樣分辨率下,視頻文件的碼流越大,壓縮比就越小,畫面質量就越高,但文件的體積就會越大,傳輸的數據就會增多。
2)maxFrameRate:該參數為編/解碼支持的最大幀率,它的值等于最大幀率的1 000倍,單位為幀每秒(f/s)。幀是組成視頻的基本單位,幀率就是1 s時間里傳輸圖片的幀數,可以理解為圖片處理器每秒能夠刷新幾次。該參數影響畫面流暢度:幀率越大,畫面越流暢;幀率越小,畫面越有跳動感。當然幀率越高,每秒鐘經過的畫面越多,需要的碼率也越高,體積也越大。
3)maxWidth,maxHeight:表示編/解碼所支持的視頻的高度和寬度,即視頻的分辨率。這兩個參數影響圖像大小,與圖像大小成正比:分辨率越高,圖像越大;分辨率越低,圖像越小。在碼率一定的情況下,分辨率與清晰度成反比關系:分辨率越高,圖像越不清晰,分辨率越低,圖像越清晰。在分辨率一定的情況下,碼率與清晰度成正比關系,碼率越高,圖像越清晰;碼率越低,圖像越不清晰。
4)encodingPreset:此參數用來選擇全功能高質量、標準功能或者高速的視頻編/解碼方式。當選擇高質量模式時,編/解碼器將會在高質量和高速之間進行折中。
5)intraFrameInterval:此參數表示兩個I幀之間的距離。假設沒有B幀,該值設為2則編碼過后的碼流為“IPIPIP……”序列。該參數影響圖像畫面的質量和體積:I幀間距越小,視頻畫面越好,但編碼文件體積就會越大。其中I幀、B幀和P幀都是H.264編碼算法的圖像編碼類型。下面對這3種類型一一介紹。
I幀是幀內編碼幀,也就是關鍵幀或獨立幀,代表一幀畫面的完整保留,解碼時只需要本幀數據就可以完成相應圖像的還原。I幀圖像是周期性出現在圖像序列中的,出現頻率可由編碼器設定。I幀圖像的壓縮倍數相對較低。
P幀是前向預測編碼幀。表示一幀數據與前一個關鍵幀(或P幀)的差別,解碼時需要用之前緩存的畫面數據疊加上本幀定義的差值,生成最終畫面,也就是差別幀。P幀沒有完整的畫面數據,只有與前一幀畫面得到差值。由于是差值傳送,P幀的壓縮比較高。
B幀是雙向預測差別幀,即B幀記錄的是本幀與前后幀的差別。要解碼B幀,不僅要取得之前的緩存畫面,還要獲取解碼之后的畫面,通過前后畫面數據與本幀數據的疊加獲得最終的畫面,B幀壓縮率是最高的。主要用于H.264主要檔次中,本文采用H.264基本檔次,所以編碼圖像沒有B幀。
3.2.2 動態參數優化配置方案的目標
由于信號衰減和多徑、陰影以及多普勒效應的存在,無線信道誤碼率較高,而視頻數據是經過高度壓縮的數據流,其比特之間的數據相關性很小,對錯誤十分敏感,一旦發生錯誤將會劇烈影響后續視頻幀的解碼。另外,無線信道還存在隨機波動性和帶寬有限性,所以在無線信道中實現高質量的視頻傳輸仍然面臨著巨大挑戰。
本文在總結前人的基礎上,根據無線信道的質量變化提出了一種基于達芬奇技術平臺H.264算法編碼庫的動態參數優化配置方案。該方案可以有效利用有限的無線資源,最大化地進行視頻數據無線傳輸,同時,在一定程度上也減少無線網絡的擁塞,使視頻圖像質量與網絡擁塞達到了很好的平衡。
3.2.3 動態參數優化配置方案的基本原理
監控中心實時地統計接收到的視頻數據的丟包率,并以此為依據來判斷無線信道的質量,丟包率比較大時判定信道質量較差,丟包率比較小時判定信道質量較好,根據丟包率的具體情況可把無線信道劃分為幾個等級。在終端設備與監控中心的交互過程中,監控中心將當前無線信道的等級作為交互參數傳遞給終端設備。丟包率的計算公式如式(1)所示式中:m.frame_seq代表當前監控中心收到的視頻數據的幀 號;package.num代 表 當 前 幀 的 分 包 數;m.ulRecvPackage代表當前監控中心接收到的全部視頻的幀數;m.percentage代表丟包率。

終端設備在接收到信道的等級參數后,動態地改變達芬奇平臺H.264編碼算法的可變參數。具體調節如下:在信道質量較好的情況下,將maxBitRate和maxFrameRate值設為較大的值600 000、20 000,分辨率的2個參數max-Width,maxHeight可設為較大的分辨率DCIF格式528×384,encodingPreset模式可設為高質量模式,intraFrameInterval可設為較小的數值如10以下的某個值。在信道質量較差的情況下,maxBitRate和maxFrameRate值調小至400 000、12 000,分辨率調小至QCIF 格式176×144,encodingPreset模式可設為高速模式,intraFrameInterval在盡量保證圖像質量的情況下調大至30~100。參數的設定要根據實際的無線信道質量動態的劃分好范圍,本文給出了實際測試時動態參數的參考范圍。
通過動態參數優化配置可以實現在無線信道質量較好時,傳輸體積比較大的圖像數據以得到畫面質量高的圖像;在無線信道質量較差時,在盡量保證圖像質量的情況下傳輸較小的圖像數據以減小網絡的堵塞,從而實現視頻圖像的質量與網絡擁塞的合理平衡。
3.2.4 動態參數優化配置方案的實現
在動態改變達芬奇平臺H.264編碼算法可變參數的過程中,當接收到的信道的等級參數與當前信道的等級參數不一致時,用中斷信號跳出當前的圖像編碼線程,然后根據接收到的信道的等級參數重新配置H.264編碼算法可變參數,繼續執行圖像編碼線程。如果等級參數一致則繼續原來的編碼線程。具體方案流程如圖10所示。

圖10 動態參數優化配置方案流程圖
終端設備選用深圳市天漠科技有限公司推出的基于德州儀器(TI)DM3730處理器的DevKit8500評估套件。監控中心為PC機Windows XP環境下基于MFC的可視化圖形界面程序,硬件配置為:Inter Core i3-2120 CPU,主頻 3.30 GHz、內存為3.41 Gbyte。
監控中心分別監控兩路WCDMA無線信道中終端設備的實時的視頻采集傳輸畫面,一路采用動態參數優化配置方案,另一路不采用該方案,通過多次測試統計監控中心的顯示狀態與數據信息并作出比較。
1)測試系統能否穩定地在WCDMA無線信道正常工作;
2)測試不作參數優化配置時實時傳輸,監控中心接收的幀率、字節流、丟包率和系統延時;
3)測試采用動態參數優化配置方案下實時傳輸,監控中心接收的幀率、字節流、丟包率和系統延時。
圖11為監控中心實時的監控圖。分別采用動態參數優化配置方案和不采用該方案實時測試,監控中心返回的性能指標如表1所示。

圖11 監控中心實時監控圖(截圖)

表1 統計的性能指標
分析表1可以得出:采用動態參數優化配置方案和不采用該方案實時傳輸時,監控中心在字節流、幀率、丟包率和系統延時都存在一定范圍的波動。采用動態參數優化配置方案實時傳輸時字節流、幀率、丟包率的均值均要大于不采用該方案進行的傳輸,但由于采用動態參數優化配置方案算法增加了算法的復雜度,系統延時的統計均值要略大于不采用該方案進行的傳輸。
從以上統計的數據可以看出,基于動態參數優化配置方案的視頻傳輸系統充分利用了無線信道的實時帶寬資源。在信道質量好的情況下,能傳輸高質量的圖像數據;在信道質量下降時,能動態調節編碼參數使傳輸的圖像更流暢,減少了網路堵塞。該方案使視頻圖像質量與網絡擁塞達到了很好的平衡。
隨著無線網絡技術的高速發展,人們對無線環境下各種多媒體服務的要求越來越高,如何在無線環境下傳輸高質量的數據顯得非常重要。由此本文根據無線信道的質量變化提出一種基于達芬奇技術平臺H.264算法視頻編碼庫的動態參數優化配置方案,實現了無線信道的自適應視頻高質量保障,有效地提高了視頻傳輸畫面的實時性和流暢度。
[1]王映民,孫韶.TD-LTE技術原理與系統設計[M].北京:人民郵電出版社,2011.
[2]畢厚杰 .新一代視頻壓縮編碼標準—H.264/AVC[M].北京:人民郵電出版社,2004.
[3] TIApplication report(SPRS283D),TMS320DM6446 digitalmedia system -on - chip[R].Dallas:Texas Instruments,2005:1-212.
[4]石迎波.無線信道中的視頻編碼與傳輸技術研究[D].西安:西安電子科技大學,2007.
[5]向海波,李波,閆中江.基于TMS320DM3730的H.264編碼器移植與優化方法研究[J].電子設計工程,2012(20):180-183.
[6]陳穎鋒.基于達芬奇平臺的H.264編碼算法優化與實現[D].北京:北京交通大學,2008.
[7]徐海洋.基于達芬奇技術的TD探測終端設計與實現[J].電視技術,2011,35(23):66-70.
[8]何永琪.嵌入式Linux系統實用開發[M].北京:電子工業出版社,2010.
[9]范朋.基于Qt的嵌入式Linux系統GUI的研究與實現[D].北京:北京郵電大學,2011.