亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        DirectFB圖形庫網(wǎng)絡(luò)透明層的分析與開發(fā)

        2012-09-25 02:59:48王昆李眾立
        關(guān)鍵詞:函數(shù)調(diào)用服務(wù)器端緩沖區(qū)

        王昆,李眾立

        (西南科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,綿陽 621010)

        引 言

        隨著三網(wǎng)融合工程的開展,多頻互動逐漸成為嵌入式廠商討論宣傳的熱點(diǎn)。所謂多屏互動是指:電視可與電腦、智能手機(jī)等設(shè)備實(shí)現(xiàn)多屏互聯(lián)互通,即手機(jī)可以像遙控器一樣控制電視,電視能瀏覽播放手機(jī),電腦上的圖片和音視頻文件等。這些嵌入式設(shè)備一般都通過無線路由器連接在一個(gè)局域網(wǎng)內(nèi),通過IP協(xié)議通信。DirectFB作為優(yōu)秀的嵌入式圖形庫,通過新近開發(fā)的Voodoo模塊作為網(wǎng)絡(luò)透明層,為多屏互動提供了一種簡潔、高效、通用的解決方案。

        1 DirectFB圖形庫簡介

        DirectFB是一個(gè)輕量級的圖形庫,提供圖形處理的硬件加速支持、輸入管理、集成的窗口管理系統(tǒng),支持透明窗口和多層疊加(通過alpha值)顯示。它不僅僅是基于Linux Framebuffer之上的新設(shè)備,還是一個(gè)完整的支持硬件加速的封裝層,對每一個(gè)不被底層硬件加速支持的操作都提供軟件實(shí)現(xiàn)。DirectFB為嵌入式平臺提供圖形系統(tǒng)支持,建立了位于Linux Framebuffer之上的一個(gè)新的圖形庫標(biāo)準(zhǔn)。DirectFB由C語言開發(fā),通過封裝機(jī)制向上層應(yīng)用程序開發(fā)提供接口。DirectFB為應(yīng)用程序提供的主要接口有IDirectFB、IDirectFBSurface、IDirectFBWindow、IDirectFBEventBuffer等十余個(gè),應(yīng)用程序主要就是使用這些接口進(jìn)行開發(fā)。

        2 Voodoo的分析與設(shè)計(jì)

        2.1 Voodoo模塊簡介

        Voodoo是DirectFB的網(wǎng)絡(luò)透明層,它能使一個(gè)平臺上的DirectFB應(yīng)用程序不經(jīng)任何修改通過網(wǎng)絡(luò)在另一個(gè)平臺上運(yùn)行,就好像這個(gè)應(yīng)用程序本身就在這個(gè)平臺上一樣。要通過Voodoo運(yùn)行DirectFB應(yīng)用程序,首先在服務(wù)器端運(yùn)行dfbproxy程序。這是DirectFB里面的一個(gè)新程序,它僅僅等待網(wǎng)絡(luò)連接(Voodoo使用的端口是2323),甚至不調(diào)用最基本的DirectFBCreate()函數(shù),直到客戶端請求調(diào)用此函數(shù)。然后,在客戶端運(yùn)行DirectFB應(yīng)用程序,只需要傳遞參數(shù)“--dfb:remote=<host>”即可。host為運(yùn)行dfbproxy平臺的IP地址。這樣,服務(wù)器端就能代理運(yùn)行客戶端的應(yīng)用程序了。

        2.2 Voodoo原理分析

        由于DirectFB采用模塊化設(shè)計(jì),使得上層應(yīng)用程序僅依賴于其提供的十余個(gè)標(biāo)準(zhǔn)接口,每個(gè)接口都僅包含一組函數(shù)調(diào)用,這為程序的代理運(yùn)行提供了可能。Voodoo的設(shè)計(jì)思想是為每一個(gè)DirectFB接口添加一組對應(yīng)的接口——Requestor和Dispacher。例如,為IDirectFB添加的接口為IDirectFB_Requestor和IDirectFB_Dispatcher。對于IDirectFB的每個(gè)函數(shù)調(diào)用,在IDirectFB_Requestor和IDirectFB_Dispatcher中都有對應(yīng)的函數(shù)調(diào)用,只不過函數(shù)功能發(fā)生了變化。一般而言,Requestor中的函數(shù)負(fù)責(zé)發(fā)送一個(gè)請求消息,消息中指明了Dispatcher方需要執(zhí)行哪個(gè)函數(shù),應(yīng)用程序傳遞的參數(shù)也被封裝到消息中,把請求消息發(fā)送到Dispatcher方;Dispatcher方收到請求消息后,獲取消息中的參數(shù)信息,調(diào)用真正的接口執(zhí)行消息中請求的函數(shù)調(diào)用,并把函數(shù)調(diào)用的返回信息封裝在一個(gè)響應(yīng)消息中,發(fā)送到Requestor端的對應(yīng)函數(shù)。正常執(zhí)行和通過Voodoo執(zhí)行對比如圖1所示。此圖示意了一個(gè)DirectFB應(yīng)用程序的一個(gè)函數(shù)調(diào)用的執(zhí)行過程。

        圖1 DirectFB應(yīng)用程序正常執(zhí)行與通過Voodoo執(zhí)行對比圖

        2.3 Voodoo中消息的編碼與解碼

        Requestor和Dispatcher之間通過消息進(jìn)行通信。一般地,Requestor方的函數(shù)發(fā)送一個(gè)請求消息然后阻塞程序,直到Dispatcher方的相應(yīng)函數(shù)完成工作后返回一個(gè)響應(yīng)消息為止,Requestor方的函數(shù)處理響應(yīng)消息后返回,從而完成一個(gè)函數(shù)的執(zhí)行。但是并不是所有請求消息都需要一個(gè)響應(yīng)消息,有些不需要,例如,所有的與圖像繪制相關(guān)的函數(shù)都在發(fā)送請求消息后立即返回。每個(gè)請求消息至少包含一個(gè)函數(shù)ID和消息類型,指明Dispatcher方應(yīng)該執(zhí)行哪個(gè)函數(shù),以及是否需要阻塞等待Dispatcher方的響應(yīng)消息,更多的數(shù)據(jù)可以附加在請求消息的尾部。每個(gè)響應(yīng)消息至少包含一個(gè)結(jié)果,類型為DFBResult。更多的數(shù)據(jù)附加在響應(yīng)消息的尾部。

        Voodoo提供了一套簡單高效的消息編解機(jī)制,通過編碼把各消息塊組合成一個(gè)消息數(shù)據(jù)包,消息塊類型包括VMBT_ID、VMBT_INT、VMBT_UINT、VMBT_DATA、VMBT_ODATA、VMBT_STRING、VMBT_NONE,可用來添加一個(gè)整數(shù)、數(shù)據(jù)塊、字符串到消息中。其中,VMBT_NONE位于最后,用于結(jié)束消息編碼。消息編碼使用非常方便,例如,可以使用Voodoo_manager_request函數(shù)來組合并發(fā)送請求消息。

        以上函數(shù)是idirectfbimageprovider_requestor.c中RenderTo函數(shù)的主體。其中,前2個(gè)參數(shù)是固定的,第3個(gè)參數(shù)說明需要Dispatcher方調(diào)用對應(yīng)的RenderTo函數(shù),第4和第5個(gè)參數(shù)說明需要阻塞等待響應(yīng)消息,后續(xù)每行在消息中添加一個(gè)消息塊。

        消息解碼主要通過一組宏調(diào)用完成,使用也非常簡單:消息解碼總是以 VOODOO_PARSER_BEGIN(parser,msg)開始,以VOODOO_PARSER_END(parser)結(jié)束,中間根據(jù)消息塊的添加順序解碼每個(gè)消息塊。對應(yīng)于以上編碼的消息包的解碼程序如下:

        響應(yīng)消息的編碼和請求消息的編碼方式一樣,通過Voodoo_manager_respond()實(shí)現(xiàn)。

        3 增加Voodoo對IDirectFBVideoProvider的支持

        目前,Voodoo模塊已經(jīng)支持大多數(shù)DirectFB標(biāo)準(zhǔn)接口,但還不支持IDirectFBVideoProvider接口,而此接口是實(shí)現(xiàn)播放器程序的唯一接口。典型的播放器程序包含如下代碼:

        在CreateVideoProvider()函數(shù)中會用到IDirectFBDataBuffer接口,通過此接口訪問視頻文件內(nèi)容。因此,要讓Voodoo實(shí)現(xiàn)對播放器的支持,首先需要增加IDirectFB_Requestor和IDirectFBDataBuffer_Dispatcher對IDirectFBVideoProvider的支持。

        3.1 增加IDirectFB_Requestor對IDirectFBVideoProvider的支持

        IDirectFB是DirectFB中最基本的接口,也是應(yīng)用程序最先創(chuàng)建的接口,通過DirectFBCreate()創(chuàng)建。其他接口由IDirectFB直接創(chuàng)建或者由IDirectFB創(chuàng)建的接口創(chuàng)建,它是唯一一個(gè)提供全局創(chuàng)建的接口。在多媒體方面,它提供了CreateImageProvider()、CreateVideoProvider()、CreateFont()和CreateDataBuffer()分別用于創(chuàng)建圖像提供者、視頻提供者、字體和緩沖區(qū)。

        IDirectFB_Requestor是IDirectFB用于支持Voodoo的客戶端接口。默認(rèn)該接口不支持創(chuàng)建視頻提供者,參考DirectFB-1.4.10\proxy\dispatcher\idirectfbdatabuffer_dispatcher.c文件中的其他函數(shù),修改IDirectFB_Requestor_CreateVideoProvider()以提供支持。

        3.2 增加IDirectFBDataBuffer_Dispatcher對IDirectFBVideoProvider的支持

        IDirectFBDataBuffer是DirectFB中數(shù)據(jù)緩沖區(qū)的接口。通過該接口可以以統(tǒng)一的方式操作本地文件流或網(wǎng)絡(luò)流等,包括獲取緩沖區(qū)大小和當(dāng)前指針位置、移動當(dāng)前指針、預(yù)取數(shù)據(jù)、讀取數(shù)據(jù)、等待數(shù)據(jù)、刷新數(shù)據(jù)等操作,還可以根據(jù)緩沖區(qū)數(shù)據(jù)創(chuàng)建字體、圖像、音視頻提供者等功能。

        IDirectFBDataBuffer_Dispatcher 是 IDirectFBData-Buffer用于支持Voodoo功能的服務(wù)器端接口。默認(rèn)該接口不支持通過緩沖區(qū)創(chuàng)建視頻提供者,參考DirectFB-1.4.10\proxy\dispatcher\idirectfbdatabuffer_dispatcher.c文件中的其他函數(shù),修改IDirectFBDataBuffer_Dispatcher_CreateVideoProvider()函數(shù)以提供支持。

        3.3 IDirectFBVideoProvider_Requestor和IDirectFBVideoProvider_Dispatcher設(shè)計(jì)

        IDirectFBVideoProvider接口用于支持音視頻播放控制及相關(guān)信息提取,主要提供播放、暫停、快進(jìn)、快退、播放速度控制、音量控制等操作。按照Voodoo的要求,為IDirectFBVideoProvider接口添加IDirectFBVideoProvider_Requestor和IDirectFBVideoProvider_Dispatcher兩個(gè)接口,分別用于客戶端和服務(wù)器端。添加源文件DirectFB-1.4.10\proxy\requestor\idirectfbvideoprovider_requestor.c、DirectFB-1.4.10\proxy\dispatcher\idirectfbvideoprovider_dispatcher.h和 DirectFB-1.4.10\proxy\dispatcher\idirectfbvideoprovider_dispatcher.c,用于實(shí)現(xiàn)上面兩個(gè)接口。

        4 實(shí)驗(yàn)結(jié)果

        4.1 重新生成庫

        由于 DirectFB-1.4.10\proxy\目錄下新添加了源程序文件,所以需要修改此目錄下的Makefile.am,參考此文件其他部分,添加相關(guān)代碼以生成新的庫文件。運(yùn)行“./autogen.sh && ./configure--enable-Voodoo && make&&make install”重新生成新的DirectFB庫文件。新生成的庫文件中對應(yīng)于IDirectFBVideoProvider的庫文件分別為idirectfbvideoprovider_requestor.so和idirectfbvideoprovider_dispatcher.so。

        4.2 測試程序

        由于測試需要涉及兩個(gè)平臺,選用基于嵌入式Linux的IPTV機(jī)頂盒作為服務(wù)器端,Linux主機(jī)作為客戶端。分別編譯安裝以上經(jīng)過修改的DirectFB圖形庫和測試用例庫(包含df_video等很多簡單的DirectFB應(yīng)用程序),設(shè)置IP為192.168.1.10和192.168.1.11。應(yīng)用 Voodoo代理運(yùn)行播放器程序時(shí),在IPTV機(jī)頂盒上運(yùn)行:

        即可將視頻a.mp4播放到網(wǎng)絡(luò)電視上,由于在局域網(wǎng)內(nèi),視頻播放很流暢。

        結(jié) 語

        Voodoo的理念很簡單,但是非常有用。作為Direct-FB的網(wǎng)絡(luò)透明層,Voodoo可以在不修改、不復(fù)制應(yīng)用程序的情況下,讓應(yīng)用程序運(yùn)行于另一平臺,為實(shí)現(xiàn)多屏互動提供了一個(gè)簡單通用的解決方案。但Voodoo也有一些不足,例如暫不支持回調(diào)函數(shù)和指針,默認(rèn)緩沖區(qū)大小為16K,這需要根據(jù)具體應(yīng)用環(huán)境選擇最佳緩沖區(qū)大小。

        [1]The network transparency layer of DirectFB[EB/OL].http://www.directfb.org/index.php?path= Platform%2FVoodoo.

        [2]Andreas Hundt.DirectFB Overview(v0.2for DirectFB 0.9.21)[OL].[2011-10].http://www.directfb/org/docs/DirectFB_overview_V0.2.pdf.2004.

        [3]劉小雙,李建平,鄭志國.DirectFB圖形加速在嵌入式系統(tǒng)中的應(yīng)用[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2009(3):65-66.

        [4]劉海燕,邵立嵩,荊濤.Linux系統(tǒng)應(yīng)用與開發(fā)教程[M].北京:機(jī)械工業(yè)出版社,2005.

        [5]伍鐵晟,盧延云.嵌入式Linux中圖形界面硬件加速的優(yōu)化設(shè)計(jì)[J].計(jì)算機(jī)工程與應(yīng)用,2004(33):112-115.

        猜你喜歡
        函數(shù)調(diào)用服務(wù)器端緩沖區(qū)
        嵌入式系統(tǒng)環(huán)形緩沖區(qū)快速讀寫方法的設(shè)計(jì)與實(shí)現(xiàn)
        基于C語言的數(shù)學(xué)菜單的設(shè)計(jì)與實(shí)現(xiàn)
        基于函數(shù)調(diào)用序列模式和函數(shù)調(diào)用圖的程序缺陷檢測方法*
        淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
        成功(2018年10期)2018-03-26 02:56:14
        探討C++編程中避免代碼冗余的技巧
        Unity3D項(xiàng)目腳本優(yōu)化分析與研究
        中國新通信(2017年1期)2017-03-08 03:12:21
        在Windows中安裝OpenVPN
        關(guān)鍵鏈技術(shù)緩沖區(qū)的確定方法研究
        地理信息系統(tǒng)繪圖緩沖區(qū)技術(shù)設(shè)計(jì)與實(shí)現(xiàn)
        網(wǎng)頁防篡改中分布式文件同步復(fù)制系統(tǒng)
        亚洲一区二区日韩精品| 亚洲av无码国产精品永久一区| 精品视频一区二区三区在线观看| 极品少妇小泬50pthepon| 永久免费av无码网站yy| 亚洲成在人线电影天堂色| 特黄三级一区二区三区| 美女福利视频在线观看网址| 天天射综合网天天插天天干| 肥老熟妇伦子伦456视频| 人妻少妇精品视频无码专区| 97精品伊人久久大香线蕉| 音影先锋中文字幕在线| 青娱乐极品视觉盛宴国产视频| 欧美天欧美天堂aⅴ在线| 久久久一本精品99久久| 国产亚洲精品视频在线| 欧美成年黄网站色视频| 美女自卫慰黄网站| 国产在线高清无码不卡| 在线观看av不卡 一区二区三区| 亚洲色图视频在线免费看| 尤物yw午夜国产精品视频| 亚洲国产成人久久综合| 婷婷丁香社区| 亚洲24小时在线免费视频网站| 日本精品一区二区三区试看| 妺妺窝人体色777777| 亚洲人午夜射精精品日韩| 亚洲无码a∨在线视频| 青青草视全福视频在线| 国产乱人精品视频av麻豆网站| 国产二级一片内射视频播放| 国产香蕉97碰碰视频va碰碰看| 欧美亚洲国产精品久久久久| 亚洲av日韩综合一区尤物| 日本顶级metart裸体全部| 国外亚洲成av人片在线观看| 日日噜噜夜夜狠狠2021| 日本女同视频一区二区三区| 一区二区三区内射美女毛片|