999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

DirectFB圖形庫網絡透明層的分析與開發

2012-09-25 02:59:48王昆李眾立
單片機與嵌入式系統應用 2012年3期
關鍵詞:嵌入式

王昆,李眾立

(西南科技大學 計算機科學與技術學院,綿陽 621010)

引 言

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

1 DirectFB圖形庫簡介

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

2 Voodoo的分析與設計

2.1 Voodoo模塊簡介

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

2.2 Voodoo原理分析

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

圖1 DirectFB應用程序正常執行與通過Voodoo執行對比圖

2.3 Voodoo中消息的編碼與解碼

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

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

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

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

響應消息的編碼和請求消息的編碼方式一樣,通過Voodoo_manager_respond()實現。

3 增加Voodoo對IDirectFBVideoProvider的支持

目前,Voodoo模塊已經支持大多數DirectFB標準接口,但還不支持IDirectFBVideoProvider接口,而此接口是實現播放器程序的唯一接口。典型的播放器程序包含如下代碼:

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

3.1 增加IDirectFB_Requestor對IDirectFBVideoProvider的支持

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

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

3.2 增加IDirectFBDataBuffer_Dispatcher對IDirectFBVideoProvider的支持

IDirectFBDataBuffer是DirectFB中數據緩沖區的接口。通過該接口可以以統一的方式操作本地文件流或網絡流等,包括獲取緩沖區大小和當前指針位置、移動當前指針、預取數據、讀取數據、等待數據、刷新數據等操作,還可以根據緩沖區數據創建字體、圖像、音視頻提供者等功能。

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

3.3 IDirectFBVideoProvider_Requestor和IDirectFBVideoProvider_Dispatcher設計

IDirectFBVideoProvider接口用于支持音視頻播放控制及相關信息提取,主要提供播放、暫停、快進、快退、播放速度控制、音量控制等操作。按照Voodoo的要求,為IDirectFBVideoProvider接口添加IDirectFBVideoProvider_Requestor和IDirectFBVideoProvider_Dispatcher兩個接口,分別用于客戶端和服務器端。添加源文件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,用于實現上面兩個接口。

4 實驗結果

4.1 重新生成庫

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

4.2 測試程序

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

即可將視頻a.mp4播放到網絡電視上,由于在局域網內,視頻播放很流暢。

結 語

Voodoo的理念很簡單,但是非常有用。作為Direct-FB的網絡透明層,Voodoo可以在不修改、不復制應用程序的情況下,讓應用程序運行于另一平臺,為實現多屏互動提供了一個簡單通用的解決方案。但Voodoo也有一些不足,例如暫不支持回調函數和指針,默認緩沖區大小為16K,這需要根據具體應用環境選擇最佳緩沖區大小。

[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圖形加速在嵌入式系統中的應用[J].單片機與嵌入式系統應用,2009(3):65-66.

[4]劉海燕,邵立嵩,荊濤.Linux系統應用與開發教程[M].北京:機械工業出版社,2005.

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

猜你喜歡
嵌入式
Focal&Naim同框發布1000系列嵌入式揚聲器及全新Uniti Atmos流媒體一體機
TS系列紅外傳感器在嵌入式控制系統中的應用
電子制作(2019年7期)2019-04-25 13:17:14
基于嵌入式Linux內核的自恢復設計
嵌入式系統通信技術的應用
電子制作(2018年18期)2018-11-14 01:48:16
嵌入式PLC的設計與研究
電子制作(2018年16期)2018-09-26 03:27:18
搭建基于Qt的嵌入式開發平臺
基于嵌入式系統Windows CE的應用程序開發
嵌入式單片機在電機控制系統中的應用探討
電子制作(2017年8期)2017-06-05 09:36:15
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
Altera加入嵌入式視覺聯盟
主站蜘蛛池模板: 国内精品视频| 老司国产精品视频91| 日韩午夜福利在线观看| 久久网综合| 亚洲日韩精品无码专区| 日韩在线影院| 精品偷拍一区二区| 国产美女一级毛片| 91久久青青草原精品国产| 香蕉伊思人视频| 国产精品福利社| 又爽又大又光又色的午夜视频| 亚洲成人一区二区| 香蕉国产精品视频| 国产男人天堂| 久久超级碰| 国产最新无码专区在线| 中文精品久久久久国产网址 | 久久青草免费91线频观看不卡| 无码专区在线观看| 国产精品久久自在自线观看| 国产精品视频白浆免费视频| 精品伊人久久久香线蕉 | 国产精品视频公开费视频| 亚洲精品在线91| 国产va免费精品观看| 怡红院美国分院一区二区| 亚洲va欧美ⅴa国产va影院| 欧美曰批视频免费播放免费| 欧洲亚洲一区| 91高清在线视频| 青青久久91| 国产在线自在拍91精品黑人| 色亚洲激情综合精品无码视频 | 亚洲综合激情另类专区| 日韩免费毛片视频| 19国产精品麻豆免费观看| 国产精品微拍| 波多野结衣二区| 四虎成人免费毛片| 在线观看国产黄色| 精品一区二区无码av| 丝袜国产一区| 国产菊爆视频在线观看| 中国美女**毛片录像在线 | 国产乱子伦手机在线| 成人夜夜嗨| 欧美精品v日韩精品v国产精品| 国产一区免费在线观看| 国产精品大尺度尺度视频| 亚洲不卡av中文在线| 最新精品久久精品| 国产成人精品优优av| 91区国产福利在线观看午夜| 久久五月视频| 五月婷婷亚洲综合| 精品人妻无码中字系列| 久久人人妻人人爽人人卡片av| 日本高清在线看免费观看| 夜夜操狠狠操| 久久国产精品麻豆系列| 国产95在线 | 亚洲资源站av无码网址| 久久久精品国产SM调教网站| 99视频国产精品| 一本综合久久| 激情综合网址| 一级片一区| 亚洲综合第一区| 亚洲精品自产拍在线观看APP| 日韩高清欧美| 青青操国产视频| 四虎影视无码永久免费观看| 国产精品粉嫩| 国产精品手机在线观看你懂的| 国产免费看久久久| 97人妻精品专区久久久久| 久久精品一品道久久精品| 91日本在线观看亚洲精品| 综合社区亚洲熟妇p| 99久视频| 五月天在线网站|