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

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

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

a.JPG

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

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

b.JPG


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

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

d.JPG


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

c.JPG


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

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

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

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

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

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

e.JPG


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

f.JPG


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

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

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