王博,王凱
(中國航空無線電電子研究所,上海 200232)
摘要:為解決在航空機載環境下,需要同時壓縮記錄多路和多制式視頻信號的問題,設計實現了一個以TMS320DM8168為核心的,能夠對多路高清視頻進行采集、處理和壓縮的高清視頻編碼系統,采用H.264算法對高清視頻進行實時壓縮編碼。整個系統充分利用ARM核和DSP核的強大處理能力,經過對H.264視頻編碼算法的優化,整個系統能夠同時處理1路分辨率1 600×1 200、4路分辨率720×576的視頻和1路音頻,視頻壓縮幀率最大能夠達到60幀/s,滿足了實時處理的要求,整個系統設計簡單,擴展性好,處理能力強。
關鍵詞:TMS320DM8168; H.264; DSP; 高清視頻
中圖分類號:TP752文獻標識碼:ADOI: 10.19358/j.issn.1674-7720.2017.05.015
引用格式:王博,王凱.基于DM8168的機載高清視頻編碼系統的設計與實現[J].微型機與應用,2017,36(5):46-49,53.
0引言
在航空機載領域,視頻壓縮記錄已被廣泛應用,尤其在飛機試飛過程中,視頻壓縮記錄為記錄飛機飛行狀態、飛行員操作和飛行事后分析等提供了重要手段。但隨著飛機的換代升級,傳統的機載視頻壓縮記錄也面臨著諸多挑戰,首先機載視頻信號種類越來越多,在同一架飛機上,可能同時存在著多種制式的視頻信號,除了比較常見的PAL制視頻,更有VGA、XGA等信號;其次視頻圖像分辨率也越來越大,如1 024×768、1 600×1 200等,這就要求機載視頻壓縮記錄設備能夠具備同時處理多路多制式視頻信號的能力和較高的算法實時性。結合以上特點,本文搭建了一種嵌入式平臺,以TI公司最新推出的數字多媒體處理器TMS320DM8168芯片為開發平臺,實現了同時對1路分辨率1 600×1 200、4路分辨率720×576的視頻和1路音頻的實時采集及H.264壓縮編碼,能夠滿足機載環境下對多路高清視頻壓縮編碼的實時性要求。
1DM8168結構
TMS320DM8168是TI公司最新推出的數字多媒體處理器,采用了達芬奇技術架構。DM8168處理器內部集成了1個1.2 GHz ARM CortexA8核,1個1 GHz DSP C674x核和3個高清視頻協處理器(HDVICP2)[1],能夠快速高效地完成對高清視頻的處理和壓縮。通過將這些高清視頻處理功能集成在單片系統中,在高速、高效、移植性強的Linux系統中實現,不僅能夠滿足系統性能的要求,而且降低了開發成本和設計復雜度。
2H.264視頻編碼標準介紹
H.264是國際電信聯盟(ITU)發布的一個視頻壓縮標準,其目的是在比以往低的位速率下,提供高質量的視頻壓縮技術。該標準具有高度的靈活性,可以實現各種位速率,以及各種不同的分辨率。圖1所示為H.264視頻編碼標準的編碼框架,編碼以宏塊為單位進行[2]。
H.264具有如下特性:圖1H.264編碼框架(1)用戶可以配置運動估計的設置,以便控制編碼速度和壓縮質量之間的平衡;
(2)多種宏塊劃分方式,如16×16、16×8、8×16、8×8、8×4、4×8、4×4,可以更好地匹配運動信息,減少塊效應;
(3)運動估計最深支持1/4像素的內插運算;
(4)H.264使用基于4×4像素的類DCT(離散余弦變換)變換,不存在反變換時因取舍而存在的誤差問題,有利于向定點DSP進行移植;
(5)可以在視頻輸入格式YUV平面與YUV422隔行掃描之間選擇。
正是由于采用了這些最新技術,使得H.264成為目前性能最好的視頻壓縮編碼器,并在諸多領域得到了廣泛應用。
3系統的實現
3.1系統組成
該系統主要由兩部分構成:視頻壓縮處理模塊和視頻壓縮控制模塊。前端視頻源由視頻信號發生器產生,可為整個系統提供符合要求的多種制式和分辨率的視頻信號;視頻壓縮處理模塊由前后端兩個功能塊組成,前端主要采集接收4路標清(分辨率720×576)視頻信號,然后通過FPGA實現圖像拼接,將4路標清視頻拼接成1路高清(分辨率1 920×1 080)視頻,后端采用了TI公司的TMS320DM8168達芬奇視頻SoC(System on Chip),對上述1路合成高清視頻和1路分辨率為1 600×1 200高清視頻信號做H.264壓縮編碼,對1路音頻信號做ACC壓縮編碼,然后將壓縮后的音視頻數據通過PCIE總線傳輸給視頻壓縮控制模塊;視頻壓縮控制模塊通過SATA接口將數據最終存儲到電子盤并實現目錄化的管理。整個系統組成框圖如圖2所示。
3.2系統硬件設計
(1) 視頻壓縮處理模塊
視頻壓縮處理模塊的主要功能是對前端輸入的4路標清模擬視頻信號、1路高清視頻信號和1路音頻信號進行采集、處理、編碼和傳輸。其組成框圖如圖3所示。
A/D芯片采用TVP5158芯片,主要功能有兩點:對采集到的4路PAL制式模擬視頻做A/D轉換;采用時
分復用技術,將輸入的4路視頻數據流交織成1路,通過8位數據線輸出YUV數據。而對于模塊上的FPGA芯片,則主要對上述TVP5158處理后輸出的4路標清視頻流進行拼接,得到1路高清視頻流,傳輸到DM8168。模塊上還采用了SIL9135芯片,其可將另外1路輸入的HDMI信號轉變為YUV數據格式,輸出到DM8168,同時音頻信號采用TLV320AIC23芯片轉換后也傳輸到DM8168。這樣,DM8168最終收到了1路拼接的高清視頻數據、1路原始的高清視頻數據和1路音頻信號。
(2)視頻壓縮控制模塊
視頻壓縮控制模塊的主要功能是通過PCI-E總線接收視頻壓縮處理模塊發送過來的音視頻編碼數據,并通過同步方式控制視頻壓縮處理模塊對數據的壓縮,最后將接收到的音視頻編碼數據通過SATA接口存儲到電子盤中。其組成框圖如圖4所示。
控制芯片選用了PowerPC,芯片型號為MPC8377,主頻為400 MHz。
3.3系統軟件設計
3.3.1DM8168平臺軟件實現
在本系統開發初期,使用的是TI公司的官方軟件開發包EZSDK[3],但經過驗證,目前的EZSDK版本不能支持兩路高清視頻的同時采集和編碼,無法滿足設計要求,經過調查研究,TI公司第三方合作伙伴UDWorks公司研發出了另外一種架構的軟件開發包—DVRRDK。其最新版本DVRRDK3.0可以滿足設計要求。因此最終采用DVRRDK3.0來開發DM8168的平臺軟件。從音視頻數據的采集到壓縮編碼再到輸出均在DVRRDK的架構下完成,極大地減輕了研發的難度。DVRRDK開發包沒有采用OpenMax架構,而是設計了一種新的軟件結構,DM8168中有多個核,比如做主控制器的ARM CortexA8,控制VPSS(Video Processing SubSystem)的ARM CortexM3,控制Video的ARM CortexM3,還有一個高速DSP核[4]。DVRRDK軟件架構不但把每個核上的軟件分層處理,而且還設計了不同核之間的通信機制。整個軟件架構如圖5所示。
DM8168的核間通信通過Syslink/IPC進行,任意兩個核之間都可以直接通信。Link是其中的基本單元模塊[5],每個Link中包含了一個基于BIOS6/Linux[6]的任務、線程、消息盒(使用操作系統的信號量實現)。對于視頻流數據、原始視頻數據的傳遞Link采用專門的接口來實現,只傳遞指針,而不是數據。基于這種Link結構,視頻處理的流程中,所有工作量都可以比較均衡地分配到每個處理器內核上去執行。
3.3.2H.264編碼算法在DM8168下的優化
DM8168內部集成了HDVICP2協處理器[7],針對H.264視頻編碼算法提供了硬件加速器。HDVICP2中的算法模塊如表1所示。
表中各模塊完成的功能如下:
(1)IPE模塊完成H.264算法中的幀內預測模式;
(2)CALC、ECD、BS、LPF各模塊完成H.264算法中的離散余弦變換、量化、變長編碼、濾波等功能;
(3)ME、MC完成H.264算法中的運動預測和運動補償功能,既支持精度較高的全搜索運動估計算法也支持各種快速運動估計算法。
根據HDVICP2內部各運算模塊的特點,整個H.264算法流程可以根據HDVICP2的模塊特點進行分解,配合DSP核強大的運算能力,整個H.264編碼過程可以由DSP與HDVICP2的算法子模塊共同完成。在DM8168平臺下優化了H.264基本檔次(BaseLine)的視頻編碼器,在不影響算法實時性的前提下,采用全搜索運動估計算法,搜索范圍限定于32×32像素范圍內,整個編碼過程如圖6所示。
首先通過幀內預測(IPE)模塊獲得最佳幀內預測模式,再通過幀間運動估計(ME)模塊獲得最佳運動矢量。由于不規則宏塊如16×8、8×16的分割以及較大的運動搜索范圍會使ME的執行時間大大加長,影響算法的實時性,筆者在實際設計中采用了如下的特性:宏塊僅支持16×16分割方式,運動估計的搜索范圍被限制在正負32整像素以內,采用全搜索方式;1/2像素搜索圍繞整像素最佳運動矢量進行,取全部取樣點中SAD值的最小點。DSP核負責SAD(絕對差值和)值的計算,并根據SAD值進行幀內幀間的模式判決;預測幀與參考幀相減、正向離散余弦變換(DCT)、量化(Q)、反量化(IQ)、反向離散余弦變換(IDCT)等全部由計算模塊(CALC)完成,最后由熵編碼(ECD)模塊對殘差數據進行編碼。
同時為進一步提高算法效率,設計每個算法模塊一次只處理2個宏塊數據量,這樣可以保證各算法模塊之間按流水線并行操作,一個典型的并行流水操作如圖7所示。
從上圖可以看出,從第6個時鐘節拍開始,所有算法子模塊都已處在并行操作的模式下,大大提高了編碼速度。
3.3.3系統控制算法
視頻壓縮處理模塊與視頻壓縮控制模塊之間采用同步位的方式進行交互控制。視頻壓縮處理模塊在壓縮好一幀視頻數據后,將同步位置1,視頻壓縮控制模塊周期查詢同步位,當同步位為1時,從兩個模塊的共享內存中以DMA的方式將音視頻編碼數據取走,同時將同步位置0,視頻壓縮處理模塊在檢測到同步位為0時開始下一幀數據的壓縮處理。整個系統控制算法流程如圖8所示。
4實驗結果
本編碼系統對1路分辨率為1 600×1 200的高清視頻和4路分辨率為720×576的標清視頻進行了編碼測試,其中4路標清視頻被FPGA合成為1路分辨率為1 920×1 080的逐行信號,根據航空機載視頻畫面的特點,本文選擇了相應的視頻測試序列。H.264算法采用的主要參數為:編碼量化步長25,I幀(關鍵幀)間隔50,前向單幀預測,不支持B幀。實驗結果如表2所示。
實驗結果表明,本系統已經達到了對多路高清視頻實時編碼的要求。
5結論
本文在充分分析機載航空視頻壓縮記錄特點的基礎上,以TI達芬奇DM8168多核處理器為開發平臺,實現了實時多路高清編碼系統,同時結合DM8168的平臺特點,對H.264編碼算法進行了相應優化。實驗結果證明,整個系統性能優異,較好地滿足了機載航空視頻壓縮記錄的發展需求。
參考文獻
[1] Texas Instruments.TMS320DM816x DaVinci Digital Media Processors SPRS614F[Z]. Texas: Texas Instruments Incorporated, 2011.
[2] 沈蘭蓀,卓立. 小波編碼與網絡視頻傳輸[M]. 北京:科學出版社, 2005.
[3] Texas Instruments.Using the C6EZRun DSP development tool for DSP+ARM SoCs.sprabg1a[Z].Texas: Texas Instruments Incorporated, 2011.
[4] Texas Instruments.TMS320DM816x DaVinci Digital Media Processors Technical Reference Manual[Z].sprugx8c Texas: Texas Instruments Incorporated, 2015.
[5] 王行行.基于TMS320DM8168的視頻編碼系統研究與實現[J]. 紅外與激光工程,2014,43(S): 213 .