張 平
(株洲中車時代電氣股份有限公司,湖南 株洲 412001)
在進(jìn)行復(fù)雜視頻監(jiān)控系統(tǒng)的設(shè)計、構(gòu)建和維護(hù)過程中,經(jīng)常面臨部件的兼容性問題。復(fù)雜視頻監(jiān)控系統(tǒng)往往需要兼容不同類型的底層非自研部件,以實現(xiàn)良 好的互換性[1]。但是,由于不同供應(yīng)商對于同一部件的設(shè)計思路存在差異,而且將其內(nèi)部的實現(xiàn)原理作為商 業(yè)機密進(jìn)行保密,這就不可避免地造成視頻編碼板在 應(yīng)用層與不同供應(yīng)商所提供的底層軟、硬件不兼容。
成熟的產(chǎn)品一般通過起草產(chǎn)品標(biāo)準(zhǔn)的方式來實現(xiàn)接口和協(xié)議的統(tǒng)型,但在產(chǎn)品的實際應(yīng)用過程中,難以達(dá)到部件級的統(tǒng)型和互換[2-3]。而直接對上層軟、硬件 設(shè)計進(jìn)行改動,可能會降低整個產(chǎn)品的穩(wěn)定性,大大增加技術(shù)風(fēng)險,尤其是在檢修過程中,無法進(jìn)行部件級替換,整體替換則會帶來高昂的檢修成本[4]。因此,盡可能利用軟件方式來處理底層軟、硬件設(shè)計差異,是最有優(yōu)勢的方案。為此,針對機車車載安全防護(hù)系統(tǒng)機車自動視頻監(jiān)控及記錄子系統(tǒng)(簡稱“6A 視頻子系統(tǒng)”)編碼板的兼容性問題,本文提出基于軟件中間件的多類型視頻編碼板兼容性設(shè)計方案,從板卡識別、視頻碼流獲取、關(guān)系解耦、差異注冊以及動態(tài)庫加載等方面分析研究,設(shè)計了一個獨立的軟件中間件,在上層軟、硬件無改動的情況下,實現(xiàn)多個類型視頻編碼板的兼容。
6A 視頻子系統(tǒng)主要實現(xiàn)機車各個監(jiān)控區(qū)域的視 頻數(shù)據(jù)采集、傳輸、存儲和顯示等功能。該系統(tǒng)通過記 錄司機室、機械間等位置及前方路況的視頻信息,并關(guān)聯(lián)機車運行狀態(tài)數(shù)據(jù),為機車運用過程中的故障和事故分析提供重要依據(jù)。
6A視頻子系統(tǒng)主要由視頻采集模塊、視頻編碼模塊、視頻處理模塊和視頻顯示終端組成[5-6]。視頻采集模塊通過同軸模擬信號與視頻編碼模塊連接,視頻編碼模塊、視頻處理模塊和視頻顯示終端通過以太網(wǎng)交換機建立局域網(wǎng)鏈路。6A 視頻子系統(tǒng)的架構(gòu)如圖1所示。
圖1 6A 視頻子系統(tǒng)架構(gòu)Fig.1 Architecture of 6A video subsystem
視頻采集模塊包括前端攝像機系統(tǒng)及接口,為視 頻編碼模塊提供實時視頻信號。為了覆蓋機車各個關(guān)鍵監(jiān)測部位,視頻采集模塊支持14路攝像機和2路音頻。攝像機采用同軸電纜與視頻編碼模塊連接。
視頻編碼模塊由一塊或者多塊視頻編碼板組成,接收來自視頻采 集模塊獲取的視頻信號,并對其按指定格式(如 H.264、MPEG等)進(jìn)行編碼,同時將信息疊加和編碼壓縮后的碼流通過以太網(wǎng)發(fā)送至視頻處理設(shè)備,如視頻處理模塊和視頻顯示終端。
視頻處理模塊由板載計算機系統(tǒng)和大容量存儲單元構(gòu)成,主要完成視頻碼流的處理和記錄存儲,并為視頻系統(tǒng)的控制和參數(shù)設(shè)置提供相應(yīng)的服務(wù);視頻顯示終端通過以太網(wǎng)接收來自視頻編碼模塊的視頻碼流,對視頻碼流進(jìn)行解碼后,將實時的視頻圖像顯示在視頻顯示終端上[7]。
在設(shè)計視頻編碼模塊時,各廠商通常會對視頻采集端攝像頭進(jìn)行兼容性設(shè)計,確保輸出 PAL 或 NTSC 制 式的標(biāo)準(zhǔn)信號,兼容常規(guī)的視頻編碼格式(如H.264、MPEG),實現(xiàn)攝像頭的互換性[8]。但不同品牌的視頻編碼模塊、視頻處理模塊和視頻顯示終端往往根據(jù)自定義私有協(xié)議進(jìn)行通信,形成了各模塊間的交叉依賴和綁定關(guān)系。當(dāng)需要替換其中一部分模塊時,必須采購?fù)黄放频漠a(chǎn)品才能進(jìn)行替換。解耦這種綁定關(guān)系并實現(xiàn)各個部件之間的完全兼容替代,是視頻監(jiān)控系統(tǒng)持續(xù)走向標(biāo)準(zhǔn)化和互聯(lián)互通的關(guān)鍵[9-10]。
完全的兼容意味著可以實現(xiàn)任意部件的動態(tài)更換,這就要求視頻編碼板在系統(tǒng)運行過程中,可以通過熱拔 插的方式進(jìn)行更換,并確保系統(tǒng)的功能得到立即的恢 復(fù)[11]。通過分析6A視頻子系統(tǒng)的架構(gòu)和關(guān)聯(lián)關(guān)系可以發(fā)現(xiàn),要實現(xiàn)部件級的替代,主要的困難就是在如何實現(xiàn)視頻處理模塊與不同類型的編碼板之間的兼容。
由于設(shè)計思路和理念的不同,不同類型的視頻編 碼板在硬件上和軟件的實現(xiàn)原理上通常都有著較大的差異。為了保證6A視頻子系統(tǒng)在多塊不同類型視頻編碼板的情況下能正常工作,首先需要對不同類型的編碼板進(jìn)行識別;其次,需要對這些視頻編碼板分別進(jìn)行資源加載、初始化以及視頻碼流獲取,以實現(xiàn)不同視頻編碼板關(guān)系上的解耦。
為了達(dá)到視頻編碼板的兼容,在視頻系統(tǒng)設(shè)計時 可以從電氣接口、通信協(xié)議和軟件調(diào)用接口等方面直 接進(jìn)行嚴(yán)格約定來實現(xiàn);但實際操作上,受限于市場中各個互相競爭廠家可以接受的開放程度及項目已經(jīng)大量投入使用并進(jìn)入維護(hù)檢修周期的現(xiàn)狀,這些方案難 以被推動。而另一種方式,就是在軟件層面上構(gòu)建一個中間件,將已經(jīng)定型和應(yīng)用的軟硬件、接口和協(xié)議上的差異進(jìn)行屏蔽,提供統(tǒng)一的操作接口。為此,本文所設(shè)計的方案中開發(fā)了一個名為Midware.dll 的軟件中間件動態(tài)庫。
6A 視頻子系統(tǒng)中,視頻編碼板通過以太網(wǎng)交換機與視頻處理模塊連接,使用用戶數(shù)據(jù)報協(xié)議(user datagram protocol,UDP)建立通信鏈路,模塊間的通信機制如圖2所示。
圖2 編碼板與視頻處理模塊/視頻顯示終端間的通信機制Fig.2 Communication mechanism between encoding boards and video processing module/display
首先,視頻處理模塊或者視頻顯示終端程序通過 socket 與視頻編碼板建立UDP 連接,并向視頻編碼板 發(fā)送請求報文;然后,視頻編碼板周期性地向視頻處理模塊或者視頻顯示終端發(fā)送編碼板類型信息報文;最后視頻編碼板收到應(yīng)答報文后停止發(fā)送編碼板類型信息報文。若視頻編碼板無法收到應(yīng)答報文,則會在連續(xù)發(fā)送10個周期(每個周期1 s)后,停止發(fā)送編碼板類型報文,并將故障指示燈點亮,提示需要重新拔插板卡以恢復(fù)正常功能。
經(jīng)過一個完整的通信流程,視頻處理模塊或視頻顯示終端可以獲取當(dāng)前接入系統(tǒng)的視頻編碼板的類型信息,為后續(xù)對板卡進(jìn)行視頻通道初始化和動態(tài)庫的調(diào)用提供依據(jù)。
通過視頻編碼板與視頻處理模塊和視頻顯示終端的通信,6A視頻子系統(tǒng)可以獲取到當(dāng)前接入系統(tǒng)的視頻編碼板類型信息。當(dāng)視頻編碼模塊只由一種類型編碼板組成時,為便于對多塊視頻編碼板在軟件上進(jìn)行統(tǒng)一的管理,通常視頻處理軟件對多塊板卡的操作是同時進(jìn)行的,比如,對視頻編碼板進(jìn)行視頻通道初始化和視頻碼流獲取等操作。但隨著6A視頻子系統(tǒng)的長期應(yīng)用和維護(hù),可能會存在多種類型編碼板混用的需求,在這種情況下,需要對不同類型的視頻編碼板進(jìn)行獨立的操作,以避免出現(xiàn)沖突。
從系統(tǒng)集成的需求層面,各編碼板提供的基本功 能是沒有差別的,在硬件接口上也容易保持一致。在既要保證當(dāng)前系統(tǒng)能夠同時兼容多個類型的編碼板,又要盡可能減少軟、硬件修改工作量的情況下,可以在 程序中涉及針對不同板卡需要獨立進(jìn)行操作的函數(shù)中引入enc變量。其中,enc=1,代表編碼板1;enc=2,代表編碼板2;多塊編碼板存在時,可以依次類推。將此值保存在各不同類型編碼板中,建立一一對應(yīng)的規(guī)則,以后在每次對編碼板進(jìn)行操作時,均需提前判斷該變量的值。如此,在進(jìn)行故障替換和檢修維護(hù)時,可以做到6A視頻子系統(tǒng)中不同類型編碼板混插的完全解耦,解耦前后差異如圖3所示。
圖3 不同類型編碼板關(guān)系解耦前后對比Fig.3 Comparison of different types of encoding boards before and after relationship decoupling
圖4 動態(tài)庫調(diào)用機制Fig.4 Dynamic library call mechanism
6A 視頻子系統(tǒng)中只有唯一的編碼板類型時,對相應(yīng)類型編碼板提供的動態(tài)庫av_codec.dll 加載只需直接進(jìn)行即可,甚至可以將動態(tài)庫av_codec.dll在編譯時進(jìn)行無需指定的隱式加載,接口函數(shù)通過av_codec.h頭文件進(jìn)行聲明引入視頻處理程序中。當(dāng)存在多種類型的板卡時,就需要按照不同類型的板卡來加載對應(yīng)的動態(tài)庫。為滿足各編碼板為不同類型的板卡時的情況,還需要對所有視頻編碼板的動態(tài)庫進(jìn)行分別加載,這個加載的過程都由Midware.dll中間件來完成。
類型數(shù)量的增加也意味著動態(tài)庫數(shù)量的增加,為 了便于維護(hù)并保持程序調(diào)用結(jié)構(gòu)的清晰,只將 Midware.dll.存放于程序當(dāng)前目錄。如:將針對3種類型的動態(tài)庫分別存放在程序當(dāng)前目錄下的01、02和03目錄,動態(tài)庫分別命名為av_codec1.dll、av_codec2.dll 和 av_codec3.dll。Midware.dll 根據(jù)對板卡類型信息的識別結(jié)果,決定調(diào)用哪一類型視頻編碼板所對應(yīng)的動態(tài)庫,動態(tài)庫的調(diào)用機制如圖 4 所示。
經(jīng)過類型識別和編碼板關(guān)聯(lián)關(guān)系的解耦,再對視 頻編碼板分別按照對應(yīng)類型編碼板的接口動態(tài)庫進(jìn)行加載,調(diào)用對應(yīng)的視頻通道初始化函數(shù),最終通過不同的函數(shù)接口,實現(xiàn)不同類型編碼板的視頻碼流獲取。在實際運用中,為了保證數(shù)據(jù)記錄的連續(xù)性,通常不允許對系統(tǒng)進(jìn)行斷電,只有支持直接對視頻編碼板進(jìn)行 帶電拔插和替換,才能達(dá)到上層應(yīng)用與底層軟、硬件的完全兼容。
在視頻編碼板上電之后,需要對視頻通道進(jìn)行初始化,準(zhǔn)備好系統(tǒng)緩存和操作句柄資源,以及對視頻通道號、分辨率、碼率、幀率等關(guān)鍵初始的設(shè)置參數(shù)進(jìn)行賦值,最后才可以調(diào)用匹配的動態(tài)庫函數(shù)獲取視頻碼流。不同類型的視頻編碼板,其視頻通道初始化操作可能會不一樣,因此,需要進(jìn)行不同的視頻通道初始化處理。以A、B兩種類型的視頻編碼板為例,在進(jìn)行6A視頻子系統(tǒng)統(tǒng)型的過程中,A 類型的視頻編碼板采用一次調(diào)用同時對所有編碼板初始化的方式,而另B 類型則采用分別初始化的方式。此前的系統(tǒng)是對所有編碼板一次性初始化,新增B類型編碼板之后,如果系統(tǒng)中編碼板1 和2 分別是A、B 不同類型的編碼板,系統(tǒng)還是認(rèn)為只初始化一次即可,不再對編碼板2 進(jìn)行初始化,這就將導(dǎo)致編碼板2 未初始化,無法正常工作;為了適配新增類型編碼板,系統(tǒng)增加對B 類型編碼板的初始化支持,但新的問題是:如果編碼板1是B類型的板卡,編碼板2是A類型的板卡,正常運行過程中重新拔插編碼板1(B類型),系統(tǒng)在完成編碼板1初始化后將編碼板2 再次初始化,這就會出現(xiàn)兩次初始化編碼板2的問題,導(dǎo)致視頻信號中斷。
為了解決以上所述問題,在初始化板卡視頻通道時,利用獲取到各個板卡的類型信息,為每個類型板卡增加一個表示初始化狀態(tài)的靜態(tài)變量標(biāo)識。初始化狀態(tài)初始值設(shè)置為0,首先對編碼板1視頻通道進(jìn)行初始化操作,完成編碼板1的視頻通道初始化后,將該靜態(tài)變量自增1。編碼板2的視頻通道初始化在進(jìn)行視頻處理模塊或視頻顯示終端與編碼板2 的UDP 通信之后,系統(tǒng)獲取到編碼板2 的類型信息,如果該板卡與編碼板1相同類型,靜態(tài)變量保持為1,不再進(jìn)行初始化;如果該板塊與編碼板1不同類型,則使用新的靜態(tài)變量,其值為0,系統(tǒng)對編碼板2 進(jìn)行單獨的視頻通道初始化;每塊編碼板根據(jù)靜態(tài)變量的狀態(tài)單獨初始化,并進(jìn)行狀態(tài)保持,避免多次實現(xiàn)不同類型的編碼板導(dǎo)致的重復(fù)初始化問題,達(dá)到完全的初始化操作解耦目的。其流程圖如圖5所示。
圖5 改進(jìn)后的視頻通道初始化流程Fig.5 Flowchart of improved video channel initialization
完成視頻通道的初始化之后,直接調(diào)用加載后的 視頻碼流獲取函數(shù),此時加載的函數(shù)均可以與不同類 型編碼板實現(xiàn)一一對應(yīng),視頻碼流可以被正確獲取。后續(xù)對視頻碼流的存儲和處理均只在視頻處理模塊內(nèi)進(jìn)行,不再因視頻編碼板類型的不同而出現(xiàn)兼容性問題。
對于6A視頻子系統(tǒng)所使用的各品牌的編碼板,當(dāng)新的板卡被插入機箱接入系統(tǒng)時,視頻處理模塊上運 行的視頻處理軟件會檢測到該動作,并調(diào)用相關(guān)函數(shù)進(jìn)行板卡識別,然后對視頻通道進(jìn)行初始化,加載對應(yīng)類型的動態(tài)庫。
在對編碼板進(jìn)行動態(tài)混插替換時可以發(fā)現(xiàn),當(dāng)視 頻編碼板被帶電拔出、換成另一塊視頻編碼板時,視頻處理模塊和視頻顯示終端都無法獲取那塊新插入的視頻編碼板的數(shù)據(jù)流。對該板卡進(jìn)行ping操作,可以發(fā)現(xiàn)網(wǎng)絡(luò)也是不通的;但實際上,網(wǎng)絡(luò)硬件鏈路上沒有任何問題。如果此時對整個系統(tǒng)斷電重啟,所有不同類 型的編碼板都可以正常運行,且網(wǎng)絡(luò)沒有異常的情況。進(jìn)一步進(jìn)行測試可以發(fā)現(xiàn),此現(xiàn)象與所采用的視頻編 碼板的廠家無關(guān),因此懷疑為網(wǎng)絡(luò)協(xié)議上的問題。
經(jīng)過反復(fù)重現(xiàn)該問題,發(fā)現(xiàn)在換掉視頻編碼板時,接入網(wǎng)絡(luò)的視頻處理模塊和視頻顯示終端對視頻編碼板的IP 和介質(zhì)訪問控制(media access control address,MAC)地址進(jìn)行了緩存,地址解析協(xié)議(address resolution protocol,ARP)將有限數(shù)量的IP 地址映射到了它們的物理適配器地址的計算機內(nèi)存的表中。即當(dāng)編碼板進(jìn)行動態(tài)移除,新板卡又在帶電狀態(tài)下接入系統(tǒng)時,由于新板卡的IP地址與被替換的板卡的IP地址相同,而MAC地址卻是不同的,這就會導(dǎo)致在進(jìn)行網(wǎng)絡(luò)通信時地址綁定不成功,出現(xiàn)無法接入網(wǎng)絡(luò)的現(xiàn)象。文獻(xiàn)[12]對該問題進(jìn)行了討論,并提供了多種清理ARP緩存的方法。
鑒于此,解決該問題的思路就是要在檢測到編碼 板進(jìn)行動態(tài)替換動作時,清除視頻處理模塊和視頻顯 示終端中的ARP緩存,使得新接入的板卡能夠被正確 地識別。ARP緩存清理的流程如圖6所示。
圖6 ARP 緩存清理流程Fig.6 Flowchart of ARP cache cleanup
以本文所述6A視頻子系統(tǒng)為例,視頻處理模塊和視頻顯示終端均采用XPE嵌入式操作系統(tǒng),XPE 操作系統(tǒng)自帶了一個arp.exe 的命令行工具,可以在檢測到新板卡接入系統(tǒng)時在視頻處理程序和視頻顯示終端插件程序中調(diào)用命令“arp-d IP地址”,清除系統(tǒng)中對應(yīng)IP地址的ARP 緩存。但是直接調(diào)用命令行程序時,會出現(xiàn)命令行界面彈窗,這在視頻顯示終端中是絕對不允許的。為此,采用了文獻(xiàn)[13]中所述的靜默調(diào)用方法,以后臺運行的方式避免命令行界面的彈出,通過系統(tǒng)函數(shù)CreateProcess 創(chuàng)建新的進(jìn)程,以無窗口顯示的方式執(zhí)行命令行指令,可實現(xiàn)板卡動態(tài)替換時,在板卡識別通信之前進(jìn)行一次ARP緩存的清理,解決了更換板卡后因網(wǎng)絡(luò)連接失敗而無法獲取碼流的問題。
視頻編碼板的兼容性在產(chǎn)品上主要體現(xiàn)在兩個方面:其一是不同編碼板與視頻處理模塊和顯示終端之間混合運行的兼容,其二是視頻編碼模塊之間動態(tài)替換的兼容。為驗證所提技術(shù)方案的可行性,本文設(shè)計了兩項不同的驗證試驗,以確認(rèn)該方案的實際效果,并選取在業(yè)內(nèi)最具備代表性的3 個品牌(海康HK、大華DH、宇視YS)的視頻編碼板和2套不同品牌的視頻處理模塊、顯示終端進(jìn)行試驗。
本文對3 個品牌的視頻編碼板進(jìn)行交叉分組,以確保不同組合形式的視頻系統(tǒng)均可以得到驗證測試;同時,設(shè)置只含一個品牌編碼板的對照組。試驗時,根據(jù)各個不同組合的順序,按照圖1 的架構(gòu)搭建視頻系統(tǒng),并使所有模塊同時上電運行。
通過視頻處理模塊和顯示終端對系統(tǒng)中各個編碼板的視頻取流、存儲顯示、板卡啟動時長差異(重復(fù)10 次取平均值)進(jìn)行測試,各測試組合的測試結(jié)果如表1所示??梢钥闯?,只含1 個品牌編碼板的對照組,由于兩塊編碼板一次初始化就可以完成啟動,幾乎不存在啟動時長的差異,各視頻通道可以同時開始記錄和顯示;混合運行情況下,各不同組合的混合編碼板均能夠被正確識別,并正常實現(xiàn)取流和存儲顯示功能,但交叉混合的視頻編碼板測試組各板卡在加載時間上略有增加,其中,不同視頻編碼板混合運行時,加載時間有較為明顯的增加,造成了一定的啟動延遲,啟動時差達(dá)到了2 s,部分視頻通道會表現(xiàn)出稍晚開始記錄和顯示的現(xiàn)象。
表1 混合運行兼容測試結(jié)果Table 1 Compatibility test results in mixed operation
試驗分別測試了視頻編碼板在只含一個品牌編碼板的對照組以及混插模式下的動態(tài)替換效果。通過對上電狀態(tài)下動態(tài)替換板卡后視頻處理模塊和顯示終端對系統(tǒng)中各個編碼板的系統(tǒng)恢復(fù)所需時長(重復(fù)10次取平均值)進(jìn)行測試,并設(shè)置同品牌兩個視頻編碼板的對照測試組,各個測試組合 的測試結(jié)果見表2。
表2 動態(tài)替換測試結(jié)果Table 2 Dynamic replacement test results
動態(tài)替換測試的結(jié)果顯示,只含1 個品牌編碼板的對照組進(jìn)行動態(tài)替換時,其恢復(fù)時長與動態(tài)檢測板卡插入的周期(每秒檢測)接近;而在混插模式下,在上電狀態(tài)下的各種動態(tài)混插操作,不同品牌的視頻編碼板重新加載所需時間有所不同,但均可以在3 s內(nèi)實現(xiàn)對新替換的視頻編碼板的識別、視頻取流和顯示存儲,滿足現(xiàn)場在不斷電狀態(tài)下的視頻編碼板動態(tài)更換要求。
當(dāng)前6A 視頻子系統(tǒng)在國內(nèi)“和諧號”機車上裝車超過8 000 套,超過6 家供應(yīng)商提供不同類型的6A 視頻子系統(tǒng),往往在同一個鐵路局就存在多種類型6A視頻子系統(tǒng)。在沒有實現(xiàn)編碼板部件級兼容替換時,因混插使用導(dǎo)致的故障十分常見,現(xiàn)場維護(hù)工作量大[14]。實際上,最好的情況仍然是在產(chǎn)品設(shè)計的前期,從統(tǒng)一技術(shù)規(guī)范的角度限定方案的設(shè)計思路,并在板卡替換的層面上實現(xiàn)統(tǒng)型。對于已經(jīng)裝車應(yīng)用的產(chǎn)品,采用本文所述的技術(shù)方案,則是當(dāng)前情況下一種相對較好的應(yīng)對方式。
通過采用本文所提出的多類型視頻編碼板兼容性設(shè)計,可以完全消除混插帶來的不利影響,且為各鐵路局在應(yīng)用過程中備品的采購提供更多的選擇。
由于采用了完全獨立的編碼動態(tài)接口函數(shù)加載機制,所有編碼板在運行過程中處于獨立的狀態(tài),即使個別編碼板出現(xiàn)故障,其故障范圍可只局限于所轄范圍內(nèi)少數(shù)的視頻通道,這就大幅提升了系統(tǒng)的可用性和穩(wěn)定性。此外,得益于本文所設(shè)計的動態(tài)熱拔插加載技術(shù),在檢修過程中,對故障板卡的更換可以在不斷電的情況下進(jìn)行,保證了數(shù)據(jù)記錄的完整性。
統(tǒng)計蘭州鐵路局所有6A 視頻子系統(tǒng)應(yīng)用視頻編碼板兼容性設(shè)計前后1年時間周期的故障率和平均單臺車故障處理時長,結(jié)果如表3 所示??梢钥闯觯收下食霈F(xiàn)了較大幅度的下降,單臺車故障處理時間由3 h縮減為1 h。
表3 視頻編碼板兼容性設(shè)計的應(yīng)用效果Table 3 The application effect of compatibility design for video encoding board
視頻編碼板的兼容性設(shè)計,可為機車C5/C6 修程 下的6A 視頻子系統(tǒng)部件檢修更換節(jié)省大量成本[15]。視頻編碼板成本約占據(jù)整個6A 視頻子系統(tǒng)的四分之一,在未采用部件級替換的兼容性設(shè)計前,為了適配視頻編碼板和視頻處理模塊,不得不大量成套更換6A視頻子系統(tǒng)的插件板卡;而采用視頻編碼板兼容性設(shè)計后,視頻編碼板將可以匹配全部的視頻處理模塊,且可以混合使用,這就實現(xiàn)了檢修成本的大幅下降。
本文以視頻系統(tǒng)的部件級兼容替換難題為切入 點,針對機車6A視頻子系統(tǒng),從板卡識別、視頻碼流獲取、關(guān)系解耦和差異注冊以及動態(tài)庫加載等方面,設(shè)計了一種獨立的軟件中間件,其在上層軟、硬件無須進(jìn)行任何改動的情況下,可實現(xiàn)多個類型視頻編碼板產(chǎn)品的便捷互換。本文所提出的技術(shù)在國內(nèi)“和諧號”機車6A 視頻子系統(tǒng)中的應(yīng)用,大幅地提升了維護(hù)的便捷性,避免了混插應(yīng)用帶來的兼容性問題,并在檢修維保中達(dá)到了降本增效的目標(biāo)。
根據(jù)試驗得到的結(jié)果和實際應(yīng)用經(jīng)驗,混合運行兼容場景下板卡的加載所需時長仍有進(jìn)一步壓縮的空間,通過并行多線程的方式來處理加載過程,這是后續(xù)優(yōu)化完善的方向。本文所提出的基于軟件中間件的編 碼板兼容性思路,可以應(yīng)用于同類其他軟、硬件部件級替代的兼容性設(shè)計中。