《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于DLNA數(shù)字媒體適配器的設計
基于DLNA數(shù)字媒體適配器的設計
電子設計工程
李 欣,,李軼婷
摘要: 為了能夠?qū)崿F(xiàn)傳統(tǒng)的家電影音設備與網(wǎng)絡媒體服務的互連互通,,滿足人們對數(shù)字媒體資源家庭網(wǎng)絡共享的要求,提出了一種基于DLNA標準的數(shù)字媒體適配器的系統(tǒng)設計方案,并完成了系統(tǒng)的軟硬件架構(gòu)設計,、以及基于UP-NP協(xié)議棧中間層的軟件設計。
Abstract:
Key words :
</a>DLNA" title="DLNA">DLNA" title="DLNA">DLNA的出現(xiàn),,旨在連接有線和無線網(wǎng)絡,,實現(xiàn)電腦、移動設備之間的媒體資源相互連通,,實現(xiàn)任何時間,,任何地點,無限制的分享音樂,、照片以及視頻等,。DLNA并不是創(chuàng)造了一種新的技術,而是制定了一種解決問題的辦法,,一種大家都需要遵守的規(guī)則,。

數(shù)字媒體適配器的主要價值是可以連接計算機或手機中的音頻、視頻文件,經(jīng)過數(shù)字媒體適配器的解碼,,輸出到其他的展示設備,。然而關鍵問題是各種設備之間如何使用一種公共的標準協(xié)議來實現(xiàn)互相連接,從而共享家庭網(wǎng)絡中的媒體資源,。另一方面,,如何在低成本的前提下,實現(xiàn)高速率低功耗,。隨著數(shù)字媒體內(nèi)容種類及數(shù)量的增多,,人們迫切的等待著更加成熟的數(shù)字家庭技術方案,以更好地服務數(shù)字生活,。

1 系統(tǒng)整體設計
本系統(tǒng)整體上采用了ARM-Linux嵌入式體系,,被廣泛的應用于數(shù)字媒體設備中。圖1表明系統(tǒng)整體整體框架,,包含了系統(tǒng)軟,、硬件兩大部分的層次結(jié)構(gòu)。其中UPNP協(xié)議以及UPNP AV架構(gòu)作為整個系統(tǒng)最重要的構(gòu)成,,實現(xiàn)了設備之間互通互控的主體功能,,也是文中重要的研究部分。

a.JPG

2 數(shù)字媒體適配器的硬件設計
數(shù)字媒體適配器實現(xiàn)的主要功能是網(wǎng)絡流媒體數(shù)據(jù)接收,、流媒體解碼,、音視頻流格式轉(zhuǎn)換以及對流媒體服務的控制(如媒體內(nèi)容選擇、播放,、暫停等),。硬件設計上,文中選用了Amlogic公司的AML 8726-M作為主控芯片,,專為移動網(wǎng)絡互聯(lián)設備,、平板電腦、機頂盒以及電視應用設備而設計,。

系統(tǒng)采用ARM Cortex-A9單核架構(gòu),,主頻800 MHz,大容量緩存提高了系統(tǒng)性能,。另外配有MedioCPU完成音頻解碼,,雙DSP硬件解碼器可以解碼所有的視頻格式,包括H.264,,MVC,,MPEG-1/2/4,VC-1/WMV,,AVS,,RealVideo以及MJPEG,。

系統(tǒng)在主控芯片的基礎上,還配有豐富的輸出接口和外圍設備模塊,。外圍存儲包括64 M字節(jié)的SDRAM,,用來處理數(shù)據(jù)的外部緩存;通過NAND FLASH接口外接512 M大容量存儲芯片,,用來存儲啟動引導程序,、U-boot、內(nèi)核以及文件系統(tǒng),;配有Mini SD接口,,為媒體資源提供更大的存儲空間。網(wǎng)絡連接方面,,總線連接網(wǎng)絡接口芯片,,作為讀取接收流媒體的入口,;WIFI無線網(wǎng)卡,,實現(xiàn)無線上網(wǎng)功能;配有4個USB接口,,讀入移動存儲設備中的媒體內(nèi)容,。此外,系統(tǒng)配有3.5-mm標準音頻輸出接口和HDMI高清接口,,支持多格式的音視頻媒體輸出,。

b.JPG


系統(tǒng)通過有線或無線連接網(wǎng)絡,與手機或電腦互聯(lián)提供控制端,;通過HDMI高清接口連接電視,,作為顯示端。外存中的多媒體文件通過SDRAM緩沖后,,將視頻流和音頻流進行分解,,在主控芯片解碼完成后,由音/視頻接口輸出,。

3 數(shù)字媒體適配器軟件設計
本系統(tǒng)作為DLNA產(chǎn)品,,符合其開發(fā)標準。表1中列出了DLNA互操作架構(gòu)下的關鍵技術,,系統(tǒng)功能實現(xiàn)所需技術也如表1所列,。軟件程序采用C語言編寫,利用Intel SDKfor UPNP Devices的庫文件代碼一起進行交叉編譯成ARM平臺Linux動態(tài)連接庫文件,,供上層應用調(diào)用,。開發(fā)主機采取在VMWare中安裝Linux虛擬機(Ubuntu11.10),以及arm-linux-gcc 4.3.2編譯器作為開發(fā)工具鏈,。

d.JPG


3.1 控制點軟件模塊設計
數(shù)字媒體適配器作為數(shù)字家庭中的重要設備,,能夠根據(jù)用戶提供的某項服務,在設備間實現(xiàn)互操作,包括設備間的通信能力以及交換有效信息的能力,??刂泣c(Control Point)作為UPNP AV網(wǎng)絡中最重要的節(jié)點,負責在網(wǎng)絡中搜索媒體服務器和媒體渲染器,,發(fā)現(xiàn)用戶所需要的媒體信息,,協(xié)調(diào)兩者之間的交互操作。軟件采用模塊化設計思想,,全局分為4個模塊,;設備列表模塊、主控管理模塊,、交互通信模塊以及UPNP協(xié)議模塊,。圖3為控制點軟件模塊結(jié)構(gòu)圖。

c.JPG


1)設備列表模塊
設備列表模塊用來在網(wǎng)絡中實時監(jiān)聽,、查找UPNP設備,,對設備進行添加和刪除,對設備表述的XML文件進行解析,,列表與設備之間一一對應,。此模塊的設計實現(xiàn)了設備信息的緩存處理。在設備列表中,,包含所有控制點需要的設備信息和設置參數(shù),;設備唯一的識別名稱、XML文件描述的網(wǎng)絡地址,、基礎URL以及設備超時時間等,。

2)主控管理模式
作為軟件模塊中的中樞部分,主控模塊基于UPNP協(xié)議模塊,,與設備列表模塊與交互通信模塊均相連,,完成的主要功能包括:管理設備緩存、處理客戶端命令,、響應設備請求,、解析設備回應。定義CtrlPointCallbackEventHandlel()函數(shù)注冊UPNP消息回調(diào)函數(shù),;接收到SSDP發(fā)現(xiàn)消息后,,管理列表中的UPNP設備,如使用CtrtPointAddDevice()添加設備,;調(diào)用CtrlPointHandleEvent()函數(shù)接收客戶端的消息,,對消息進行處理;使用CtrlPointHandleSubscribeUpdate()和StateUpdate()更新訂閱和狀態(tài)列表,;調(diào)用CtrlPointSendAction()和CtrlPointSendActi onNumeiicArg()給網(wǎng)絡中的UPNP設備發(fā)送消息,。

3)交互通信模塊
交互通信模塊連接了主控模塊與UPNP客戶端,,實現(xiàn)設備與控制點之間的交互控制,負責與客戶端的通訊流程,,完成服務端,、渲染器以及控制點之間的交互操作。模塊首先確定了與UPNP客戶端的通信方式,,定義Upnp Get ServerIpAddress()設定IP地址,、UpnpGetServerProt()設定端口,使用CtrlPoinHandleGetVar()處理主控模塊發(fā)送過來的數(shù)據(jù)包,,完成對命令的解析,,調(diào)用CtrlPointCommandLoop()函數(shù)連續(xù)發(fā)送指令,使用CtrlPointProcessCommand()函數(shù)將指令傳送給主控模塊,,完成對命令的解析和處理,。

4)UPNP協(xié)議模塊
負責所有與UPNP協(xié)議有關的內(nèi)容。系統(tǒng)采用libupnp開發(fā)包,、以UPNP庫作為底層協(xié)議,,涵蓋UPNP協(xié)議所需要的API接口及庫函數(shù)。

5)UPNP客戶端
UPNP客戶端即系統(tǒng)輸出展示設備,,包括電視,、音響等,。

3.2 系統(tǒng)軟件工作流程
根據(jù)DLNA產(chǎn)品開發(fā)標準中的關鍵技術,,其中“設備發(fā)現(xiàn)與控制”和“媒體管理”是系統(tǒng)實現(xiàn)的重要功能,軟件開發(fā)基于UPNP協(xié)議與UPNP AV協(xié)議架構(gòu),。下文分別說明了兩主要功能的具體實現(xiàn),。
3.2.1 設備發(fā)現(xiàn)與控制工作流程
設備在發(fā)現(xiàn)與控制技術部分,采用了UPNP協(xié)議棧架構(gòu),。設備在此部分主要完成初始化以及異步操作處理兩大主要功能,。其軟件工作流程如圖4所示。

e.JPG


初始化操作包括初始化UPNP協(xié)議棧,、注冊根設備以及初始化設備,。系統(tǒng)調(diào)用函數(shù)UpnpInit()初始化協(xié)議棧,制定模塊根目錄,,通過注冊根設備,,實現(xiàn)設備與UPNP庫的關聯(lián)。設備以多播方式發(fā)布存在消息,,進入事件循環(huán)過程,。當監(jiān)聽器接收到設備發(fā)出的事件請求后,創(chuàng)建時間處理線程,,回調(diào)UPNP事件處理函數(shù)進行處理,,隨后開始異步操作處理過程,。
設備運行期間,控制點會發(fā)送各種請求指令,,處理這些異步請求就是設備最主要的工作,。這些異步請求包含訂閱請求、取值請求和操作請求,。訂閱請求訂閱了UPNP設備中服務狀態(tài)改變事件,,訂閱成功后,一旦控制點的訂閱信息發(fā)生改變,,系統(tǒng)都會得到及時的通知,。取值請求用于返回服務狀態(tài)變量的當前值,設備監(jiān)聽到控制點的取值請求后,,會激活事件處理回調(diào)函數(shù),,將返回的當前值提供給接口發(fā)送給控制點。操作請求用于改變服務狀態(tài)變量值,,設備從請求文檔中得到操作所需的相關參數(shù),,建立響應文檔后通知控制點設備。
3.2.2 媒體管理工作流程
系統(tǒng)媒體管理部分基于UPNP AV架構(gòu),,設備用來連接一個或多個媒體服務器,,允許控制點在家庭網(wǎng)絡內(nèi)對媒體資源(例如音頻、視頻,、圖片等)進行控制,。

f.JPG


圖5為媒體管理工作流程。系統(tǒng)進程開始于控制點對媒體服務器的發(fā)現(xiàn),,當選擇好媒體內(nèi)容進行播放控制時,,首先要對媒體資源進行數(shù)據(jù)分析,控制點確定以何種傳輸協(xié)議以及數(shù)據(jù)格式進行數(shù)據(jù)傳輸,,所有傳輸參數(shù)建立后,,控制點通過調(diào)用Connection Manager::PrepareFor Conection()發(fā)布通知,控制媒體流,。隨后服務器或渲染器將向控制點返回一個AVTransport InstanclID,,用來控制媒體內(nèi)容的傳輸,例如播放,、暫停等,。同樣,當媒體渲染器返回一個渲染控制ID,,就可以用來對媒體進行控制,,例如音量調(diào)節(jié)、亮度調(diào)節(jié)等,。實際上,,媒體內(nèi)容的傳輸是媒體服務器和渲染器之間的操作UPNP本身并不參與,。控制點利用UPNP協(xié)議建立設備間的連接,,而媒體傳輸采用的則是具體的傳輸協(xié)議,。

4 結(jié)束語
系統(tǒng)作為DLNA產(chǎn)品的開發(fā),完成了數(shù)字媒體適配器軟,、硬件的設計與實現(xiàn),。通過測試,系統(tǒng)實現(xiàn)了媒體資源共享及設備間的互控,,能夠?qū)γ襟w內(nèi)容進行傳輸控制和渲染控制,。系統(tǒng)作為數(shù)字家庭媒體的中心產(chǎn)品之一,很好的實現(xiàn)了DLNA家庭網(wǎng)絡的娛樂功能,,也預示了電腦與家電產(chǎn)品互聯(lián)互通的美好前景,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。