基于DLNA標(biāo)準(zhǔn)的數(shù)字媒體適配器的系統(tǒng)設(shè)計(jì)方案
掃描二維碼
隨時(shí)隨地手機(jī)看文章
為了能夠?qū)崿F(xiàn)傳統(tǒng)的家電影音設(shè)備與網(wǎng)絡(luò)媒體服務(wù)的互連互通,滿足人們對(duì)數(shù)字媒體資源家庭網(wǎng)絡(luò)共享的要求,提出了一種基于DLNA標(biāo)準(zhǔn)的數(shù)字媒體適配器的系統(tǒng)設(shè)計(jì)方案,并完成了系統(tǒng)的軟硬件架構(gòu)設(shè)計(jì)、以及基于UP-NP協(xié)議棧中間層的軟件設(shè)計(jì)。該系統(tǒng)的硬件部分采用AmlogIC公司的AML 8726-M芯片,構(gòu)成可組合的模塊化硬件平臺(tái),軟件部分完成對(duì)內(nèi)核的裁剪以及硬件驅(qū)動(dòng),中間層基于UPNP協(xié)議棧及UPNP AV架構(gòu),以嵌入式linux為操作系統(tǒng)進(jìn)行編程,能夠?qū)崿F(xiàn)DLNA設(shè)備間的零配置連接,實(shí)現(xiàn)媒體資源的輸出播放。
隨著數(shù)字媒體的流行,大量的媒體資源已出現(xiàn)在家庭之中。然而,它們并不能相互合作,更困難的是不能將電腦中的資源應(yīng)用于其他設(shè)備。DLNA的出現(xiàn),旨在連接有線和無線網(wǎng)絡(luò),實(shí)現(xiàn)電腦、移動(dòng)設(shè)備之間的媒體資源相互連通,實(shí)現(xiàn)任何時(shí)間,任何地點(diǎn),無限制的分享音樂、照片以及視頻等。DLNA并不是創(chuàng)造了一種新的技術(shù),而是制定了一種解決問題的辦法,一種大家都需要遵守的規(guī)則。
數(shù)字媒體適配器的主要價(jià)值是可以連接計(jì)算機(jī)或手機(jī)中的音頻、視頻文件,經(jīng)過數(shù)字媒體適配器的解碼,輸出到其他的展示設(shè)備。然而關(guān)鍵問題是各種設(shè)備之間如何使用一種公共的標(biāo)準(zhǔn)協(xié)議來實(shí)現(xiàn)互相連接,從而共享家庭網(wǎng)絡(luò)中的媒體資源。另一方面,如何在低成本的前提下,實(shí)現(xiàn)高速率低功耗。隨著數(shù)字媒體內(nèi)容種類及數(shù)量的增多,人們迫切的等待著更加成熟的數(shù)字家庭技術(shù)方案,以更好地服務(wù)數(shù)字生活。
1 系統(tǒng)整體設(shè)計(jì)
本系統(tǒng)整體上采用了ARM-Linux嵌入式體系,被廣泛的應(yīng)用于數(shù)字媒體設(shè)備中。圖1表明系統(tǒng)整體整體框架,包含了系統(tǒng)軟、硬件兩大部分的層次結(jié)構(gòu)。其中UPNP協(xié)議以及UPNP AV架構(gòu)作為整個(gè)系統(tǒng)最重要的構(gòu)成,實(shí)現(xiàn)了設(shè)備之間互通互控的主體功能,也是文中重要的研究部分。
2 數(shù)字媒體適配器的硬件設(shè)計(jì)
數(shù)字媒體適配器實(shí)現(xiàn)的主要功能是網(wǎng)絡(luò)流媒體數(shù)據(jù)接收、流媒體解碼、音視頻流格式轉(zhuǎn)換以及對(duì)流媒體服務(wù)的控制(如媒體內(nèi)容選擇、播放、暫停等)。硬件設(shè)計(jì)上,文中選用了Amlogic公司的AML 8726-M作為主控芯片,專為移動(dòng)網(wǎng)絡(luò)互聯(lián)設(shè)備、平板電腦、機(jī)頂盒以及電視應(yīng)用設(shè)備而設(shè)計(jì)。
系統(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è)備模塊。外圍存儲(chǔ)包括64 M字節(jié)的SDRAM,用來處理數(shù)據(jù)的外部緩存;通過NAND FLASH接口外接512 M大容量存儲(chǔ)芯片,用來存儲(chǔ)啟動(dòng)引導(dǎo)程序、U-boot、內(nèi)核以及文件系統(tǒng);配有Mini SD接口,為媒體資源提供更大的存儲(chǔ)空間。網(wǎng)絡(luò)連接方面,總線連接網(wǎng)絡(luò)接口芯片,作為讀取接收流媒體的入口;WIFI無線網(wǎng)卡,實(shí)現(xiàn)無線上網(wǎng)功能;配有4個(gè)USB接口,讀入移動(dòng)存儲(chǔ)設(shè)備中的媒體內(nèi)容。此外,系統(tǒng)配有3.5-mm標(biāo)準(zhǔn)音頻輸出接口和HDMI高清接口,支持多格式的音視頻媒體輸出。
系統(tǒng)通過有線或無線連接網(wǎng)絡(luò),與手機(jī)或電腦互聯(lián)提供控制端;通過HDMI高清接口連接電視,作為顯示端。外存中的多媒體文件通過SDRAM緩沖后,將視頻流和音頻流進(jìn)行分解,在主控芯片解碼完成后,由音/視頻接口輸出。
3 數(shù)字媒體適配器軟件設(shè)計(jì)
本系統(tǒng)作為DLNA產(chǎn)品,符合其開發(fā)標(biāo)準(zhǔn)。表1中列出了DLNA互操作架構(gòu)下的關(guān)鍵技術(shù),系統(tǒng)功能實(shí)現(xiàn)所需技術(shù)也如表1所列。軟件程序采用C語言編寫,利用Intel SDKfor UPNPDevICes的庫文件代碼一起進(jìn)行交叉編譯成ARM平臺(tái)Linux動(dòng)態(tài)連接庫文件,供上層應(yīng)用調(diào)用。開發(fā)主機(jī)采取在VMWare中安裝Linux虛擬機(jī)(Ubuntu11.10),以及arm-linux-gCC4.3.2編譯器作為開發(fā)工具鏈。
3.1 控制點(diǎn)軟件模塊設(shè)計(jì)
數(shù)字媒體適配器作為數(shù)字家庭中的重要設(shè)備,能夠根據(jù)用戶提供的某項(xiàng)服務(wù),在設(shè)備間實(shí)現(xiàn)互操作,包括設(shè)備間的通信能力以及交換有效信息的能力??刂泣c(diǎn)(Control Point)作為UPNP AV網(wǎng)絡(luò)中最重要的節(jié)點(diǎn),負(fù)責(zé)在網(wǎng)絡(luò)中搜索媒體服務(wù)器和媒體渲染器,發(fā)現(xiàn)用戶所需要的媒體信息,協(xié)調(diào)兩者之間的交互操作。軟件采用模塊化設(shè)計(jì)思想,全局分為4個(gè)模塊;設(shè)備列表模塊、主控管理模塊、交互通信模塊以及UPNP協(xié)議模塊。圖3為控制點(diǎn)軟件模塊結(jié)構(gòu)圖。
1)設(shè)備列表模塊
設(shè)備列表模塊用來在網(wǎng)絡(luò)中實(shí)時(shí)監(jiān)聽、查找UPNP設(shè)備,對(duì)設(shè)備進(jìn)行添加和刪除,對(duì)設(shè)備表述的XML文件進(jìn)行解析,列表與設(shè)備之間一一對(duì)應(yīng)。此模塊的設(shè)計(jì)實(shí)現(xiàn)了設(shè)備信息的緩存處理。在設(shè)備列表中,包含所有控制點(diǎn)需要的設(shè)備信息和設(shè)置參數(shù);設(shè)備唯一的識(shí)別名稱、XML文件描述的網(wǎng)絡(luò)地址、基礎(chǔ)URL以及設(shè)備超時(shí)時(shí)間等。
2)主控管理模式
作為軟件模塊中的中樞部分,主控模塊基于UPNP協(xié)議模塊,與設(shè)備列表模塊與交互通信模塊均相連,完成的主要功能包括:管理設(shè)備緩存、處理客戶端命令、響應(yīng)設(shè)備請(qǐng)求、解析設(shè)備回應(yīng)。定義CTRlPoiNTCallbackEventHandlel()函數(shù)注冊(cè)UPNP消息回調(diào)函數(shù);接收到SSDP發(fā)現(xiàn)消息后,管理列表中的UPNP設(shè)備,如使用CtrtPointAddDevice()添加設(shè)備;調(diào)用CtrlPointHandleEvent()函數(shù)接收客戶端的消息,對(duì)消息進(jìn)行處理;使用CtrlPointHandleSubscribeUpdate()和StateUpdate()更新訂閱和狀態(tài)列表;調(diào)用CtrlPointSenDACtion()和CtrlPointSendActi onNumeiicArg()給網(wǎng)絡(luò)中的UPNP設(shè)備發(fā)送消息。
3)交互通信模塊
交互通信模塊連接了主控模塊與UPNP客戶端,實(shí)現(xiàn)設(shè)備與控制點(diǎn)之間的交互控制,負(fù)責(zé)與客戶端的通訊流程,完成服務(wù)端、渲染器以及控制點(diǎn)之間的交互操作。模塊首先確定了與UPNP客戶端的通信方式,定義Upnp Get ServerIpAddress()設(shè)定IP地址、UpnpGetServerProt()設(shè)定端口,使用CtrlPoinHandleGetVar()處理主控模塊發(fā)送過來的數(shù)據(jù)包,完成對(duì)命令的解析,調(diào)用CtrlPointCommandLoop()函數(shù)連續(xù)發(fā)送指令,使用CtrlPointProcessCommand()函數(shù)將指令傳送給主控模塊,完成對(duì)命令的解析和處理。
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)實(shí)現(xiàn)的重要功能,軟件開發(fā)基于UPNP協(xié)議與UPNP AV協(xié)議架構(gòu)。下文分別說明了兩主要功能的具體實(shí)現(xiàn)。
3.2.1 設(shè)備發(fā)現(xiàn)與控制工作流程
設(shè)備在發(fā)現(xiàn)與控制技術(shù)部分,采用了UPNP協(xié)議棧架構(gòu)。設(shè)備在此部分主要完成初始化以及異步操作處理兩大主要功能。其軟件工作流程如圖4所示。
初始化操作包括初始化UPNP協(xié)議棧、注冊(cè)根設(shè)備以及初始化設(shè)備。系統(tǒng)調(diào)用函數(shù)UpnPINit()初始化協(xié)議棧,制定模塊根目錄,通過注冊(cè)根設(shè)備,實(shí)現(xiàn)設(shè)備與UPNP庫的關(guān)聯(lián)。設(shè)備以多播方式發(fā)布存在消息,進(jìn)入事件循環(huán)過程。當(dāng)監(jiān)聽器接收到設(shè)備發(fā)出的事件請(qǐng)求后,創(chuàng)建時(shí)間處理線程,回調(diào)UPNP事件處理函數(shù)進(jìn)行處理,隨后開始異步操作處理過程。
設(shè)備運(yùn)行期間,控制點(diǎn)會(huì)發(fā)送各種請(qǐng)求指令,處理這些異步請(qǐng)求就是設(shè)備最主要的工作。這些異步請(qǐng)求包含訂閱請(qǐng)求、取值請(qǐng)求和操作請(qǐng)求。訂閱請(qǐng)求訂閱了UPNP設(shè)備中服務(wù)狀態(tài)改變事件,訂閱成功后,一旦控制點(diǎn)的訂閱信息發(fā)生改變,系統(tǒng)都會(huì)得到及時(shí)的通知。取值請(qǐng)求用于返回服務(wù)狀態(tài)變量的當(dāng)前值,設(shè)備監(jiān)聽到控制點(diǎn)的取值請(qǐng)求后,會(huì)激活事件處理回調(diào)函數(shù),將返回的當(dāng)前值提供給接口發(fā)送給控制點(diǎn)。操作請(qǐng)求用于改變服務(wù)狀態(tài)變量值,設(shè)備從請(qǐng)求文檔中得到操作所需的相關(guān)參數(shù),建立響應(yīng)文檔后通知控制點(diǎn)設(shè)備。
3.2.2 媒體管理工作流程
系統(tǒng)媒體管理部分基于UPNP AV架構(gòu),設(shè)備用來連接一個(gè)或多個(gè)媒體服務(wù)器,允許控制點(diǎn)在家庭網(wǎng)絡(luò)內(nèi)對(duì)媒體資源(例如音頻、視頻、圖片等)進(jìn)行控制。
圖5為媒體管理工作流程。系統(tǒng)進(jìn)程開始于控制點(diǎn)對(duì)媒體服務(wù)器的發(fā)現(xiàn),當(dāng)選擇好媒體內(nèi)容進(jìn)行播放控制時(shí),首先要對(duì)媒體資源進(jìn)行數(shù)據(jù)分析,控制點(diǎn)確定以何種傳輸協(xié)議以及數(shù)據(jù)格式進(jìn)行數(shù)據(jù)傳輸,所有傳輸參數(shù)建立后,控制點(diǎn)通過調(diào)用Connection Manager::PrepareFor Conection()發(fā)布通知,控制媒體流。隨后服務(wù)器或渲染器將向控制點(diǎn)返回一個(gè)AVTransport InstanclID,用來控制媒體內(nèi)容的傳輸,例如播放、暫停等。同樣,當(dāng)媒體渲染器返回一個(gè)渲染控制ID,就可以用來對(duì)媒體進(jìn)行控制,例如音量調(diào)節(jié)、亮度調(diào)節(jié)等。實(shí)際上,媒體內(nèi)容的傳輸是媒體服務(wù)器和渲染器之間的操作UPNP本身并不參與??刂泣c(diǎn)利用UPNP協(xié)議建立設(shè)備間的連接,而媒體傳輸采用的則是具體的傳輸協(xié)議。
4 結(jié)束語
系統(tǒng)作為DLNA產(chǎn)品的開發(fā),完成了數(shù)字媒體適配器軟、硬件的設(shè)計(jì)與實(shí)現(xiàn)。通過測(cè)試,系統(tǒng)實(shí)現(xiàn)了媒體資源共享及設(shè)備間的互控,能夠?qū)γ襟w內(nèi)容進(jìn)行傳輸控制和渲染控制。系統(tǒng)作為數(shù)字家庭媒體的中心產(chǎn)品之一,很好的實(shí)現(xiàn)了DLNA家庭網(wǎng)絡(luò)的娛樂功能,也預(yù)示了電腦與家電產(chǎn)品互聯(lián)互通的美好前景。