數字媒體適配器的主要價值是可以連接計算機或手機中的音頻、視頻文件,經過數字媒體適配器的解碼,輸出到其他的展示設備。然而關鍵問題是各種設備之間如何使用一種公共的標準協議來實現互相連接,從而共享家庭網絡中的媒體資源。另一方面,如何在低成本的前提下,實現高速率低功耗。隨著數字媒體內容種類及數量的增多,人們迫切的等待著更加成熟的數字家庭技術方案,以更好地服務數字生活。
1 系統整體設計
本系統整體上采用了ARM-Linux嵌入式體系,被廣泛的應用于數字媒體設備中。圖1表明系統整體整體框架,包含了系統軟、硬件兩大部分的層次結構。其中UPNP協議以及UPNP AV架構作為整個系統最重要的構成,實現了設備之間互通互控的主體功能,也是文中重要的研究部分。
2 數字媒體適配器的硬件設計
數字媒體適配器實現的主要功能是網絡流媒體數據接收、流媒體解碼、音視頻流格式轉換以及對流媒體服務的控制(如媒體內容選擇、播放、暫停等)。硬件設計上,文中選用了Amlogic公司的AML 8726-M作為主控芯片,專為移動網絡互聯設備、平板電腦、機頂盒以及電視應用設備而設計。
系統采用ARM Cortex-A9單核架構,主頻800 MHz,大容量緩存提高了系統性能。另外配有MedioCPU完成音頻解碼,雙DSP硬件解碼器可以解碼所有的視頻格式,包括H.264,MVC,MPEG-1/2/4,VC-1/WMV,AVS,RealVideo以及MJPEG。
系統在主控芯片的基礎上,還配有豐富的輸出接口和外圍設備模塊。外圍存儲包括64 M字節的SDRAM,用來處理數據的外部緩存;通過NAND FLASH接口外接512 M大容量存儲芯片,用來存儲啟動引導程序、U-boot、內核以及文件系統;配有Mini SD接口,為媒體資源提供更大的存儲空間。網絡連接方面,總線連接網絡接口芯片,作為讀取接收流媒體的入口;WIFI無線網卡,實現無線上網功能;配有4個USB接口,讀入移動存儲設備中的媒體內容。此外,系統配有3.5-mm標準音頻輸出接口和HDMI高清接口,支持多格式的音視頻媒體輸出。
系統通過有線或無線連接網絡,與手機或電腦互聯提供控制端;通過HDMI高清接口連接電視,作為顯示端。外存中的多媒體文件通過SDRAM緩沖后,將視頻流和音頻流進行分解,在主控芯片解碼完成后,由音/視頻接口輸出。
3 數字媒體適配器軟件設計
本系統作為DLNA產品,符合其開發標準。表1中列出了DLNA互操作架構下的關鍵技術,系統功能實現所需技術也如表1所列。軟件程序采用C語言編寫,利用Intel SDKfor UPNP Devices的庫文件代碼一起進行交叉編譯成ARM平臺Linux動態連接庫文件,供上層應用調用。開發主機采取在VMWare中安裝Linux虛擬機(Ubuntu11.10),以及arm-linux-gcc 4.3.2編譯器作為開發工具鏈。
3.1 控制點軟件模塊設計
數字媒體適配器作為數字家庭中的重要設備,能夠根據用戶提供的某項服務,在設備間實現互操作,包括設備間的通信能力以及交換有效信息的能力。控制點(Control Point)作為UPNP AV網絡中最重要的節點,負責在網絡中搜索媒體服務器和媒體渲染器,發現用戶所需要的媒體信息,協調兩者之間的交互操作。軟件采用模塊化設計思想,全局分為4個模塊;設備列表模塊、主控管理模塊、交互通信模塊以及UPNP協議模塊。圖3為控制點軟件模塊結構圖。
1)設備列表模塊
設備列表模塊用來在網絡中實時監聽、查找UPNP設備,對設備進行添加和刪除,對設備表述的XML文件進行解析,列表與設備之間一一對應。此模塊的設計實現了設備信息的緩存處理。在設備列表中,包含所有控制點需要的設備信息和設置參數;設備唯一的識別名稱、XML文件描述的網絡地址、基礎URL以及設備超時時間等。
2)主控管理模式
作為軟件模塊中的中樞部分,主控模塊基于UPNP協議模塊,與設備列表模塊與交互通信模塊均相連,完成的主要功能包括:管理設備緩存、處理客戶端命令、響應設備請求、解析設備回應。定義CtrlPointCallbackEventHandlel()函數注冊UPNP消息回調函數;接收到SSDP發現消息后,管理列表中的UPNP設備,如使用CtrtPointAddDevice()添加設備;調用CtrlPointHandleEvent()函數接收客戶端的消息,對消息進行處理;使用CtrlPointHandleSubscribeUpdate()和StateUpdate()更新訂閱和狀態列表;調用CtrlPointSendAction()和CtrlPointSendActi onNumeiicArg()給網絡中的UPNP設備發送消息。
3)交互通信模塊
交互通信模塊連接了主控模塊與UPNP客戶端,實現設備與控制點之間的交互控制,負責與客戶端的通訊流程,完成服務端、渲染器以及控制點之間的交互操作。模塊首先確定了與UPNP客戶端的通信方式,定義Upnp Get ServerIpAddress()設定IP地址、UpnpGetServerProt()設定端口,使用CtrlPoinHandleGetVar()處理主控模塊發送過來的數據包,完成對命令的解析,調用CtrlPointCommandLoop()函數連續發送指令,使用CtrlPointProcessCommand()函數將指令傳送給主控模塊,完成對命令的解析和處理。
4)UPNP協議模塊
負責所有與UPNP協議有關的內容。系統采用libupnp開發包、以UPNP庫作為底層協議,涵蓋UPNP協議所需要的API接口及庫函數。
5)UPNP客戶端
UPNP客戶端即系統輸出展示設備,包括電視、音響等。
3.2 系統軟件工作流程
根據DLNA產品開發標準中的關鍵技術,其中“設備發現與控制”和“媒體管理”是系統實現的重要功能,軟件開發基于UPNP協議與UPNP AV協議架構。下文分別說明了兩主要功能的具體實現。
3.2.1 設備發現與控制工作流程
設備在發現與控制技術部分,采用了UPNP協議棧架構。設備在此部分主要完成初始化以及異步操作處理兩大主要功能。其軟件工作流程如圖4所示。
初始化操作包括初始化UPNP協議棧、注冊根設備以及初始化設備。系統調用函數UpnpInit()初始化協議棧,制定模塊根目錄,通過注冊根設備,實現設備與UPNP庫的關聯。設備以多播方式發布存在消息,進入事件循環過程。當監聽器接收到設備發出的事件請求后,創建時間處理線程,回調UPNP事件處理函數進行處理,隨后開始異步操作處理過程。
設備運行期間,控制點會發送各種請求指令,處理這些異步請求就是設備最主要的工作。這些異步請求包含訂閱請求、取值請求和操作請求。訂閱請求訂閱了UPNP設備中服務狀態改變事件,訂閱成功后,一旦控制點的訂閱信息發生改變,系統都會得到及時的通知。取值請求用于返回服務狀態變量的當前值,設備監聽到控制點的取值請求后,會激活事件處理回調函數,將返回的當前值提供給接口發送給控制點。操作請求用于改變服務狀態變量值,設備從請求文檔中得到操作所需的相關參數,建立響應文檔后通知控制點設備。
3.2.2 媒體管理工作流程
系統媒體管理部分基于UPNP AV架構,設備用來連接一個或多個媒體服務器,允許控制點在家庭網絡內對媒體資源(例如音頻、視頻、圖片等)進行控制。
圖5為媒體管理工作流程。系統進程開始于控制點對媒體服務器的發現,當選擇好媒體內容進行播放控制時,首先要對媒體資源進行數據分析,控制點確定以何種傳輸協議以及數據格式進行數據傳輸,所有傳輸參數建立后,控制點通過調用Connection Manager::PrepareFor Conection()發布通知,控制媒體流。隨后服務器或渲染器將向控制點返回一個AVTransport InstanclID,用來控制媒體內容的傳輸,例如播放、暫停等。同樣,當媒體渲染器返回一個渲染控制ID,就可以用來對媒體進行控制,例如音量調節、亮度調節等。實際上,媒體內容的傳輸是媒體服務器和渲染器之間的操作UPNP本身并不參與。控制點利用UPNP協議建立設備間的連接,而媒體傳輸采用的則是具體的傳輸協議。
4 結束語
系統作為DLNA產品的開發,完成了數字媒體適配器軟、硬件的設計與實現。通過測試,系統實現了媒體資源共享及設備間的互控,能夠對媒體內容進行傳輸控制和渲染控制。系統作為數字家庭媒體的中心產品之一,很好的實現了DLNA家庭網絡的娛樂功能,也預示了電腦與家電產品互聯互通的美好前景。