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

        ?

        基于Linux的開源智能終端軟件棧研究

        2010-06-11 06:29:50林瑋平陳宇華潘軍彪
        電信科學(xué) 2010年3期
        關(guān)鍵詞:開源桌面子系統(tǒng)

        羅 喧,林瑋平,陳宇華,潘軍彪

        (中國電信股份有限公司廣東研究院 廣州 510630)

        1 前言

        隨著 3G、WAPI(wireless LAN authentication and privacy infrastructure,無線局域網(wǎng)鑒別和保密基礎(chǔ)結(jié)構(gòu))/Wi-Fi等相關(guān)網(wǎng)絡(luò)的逐漸成熟,移動(dòng)互聯(lián)網(wǎng)上新的業(yè)務(wù)模式、新的應(yīng)用、新的服務(wù)體系逐步建立,基于移動(dòng)互聯(lián)網(wǎng)的新變革正在改變?nèi)藗兊纳?,這其中孕育著龐大的市場,是通信、IT、內(nèi)容和媒體、電子設(shè)備制造業(yè)等傳統(tǒng)產(chǎn)業(yè)未來的方向。

        在移動(dòng)互聯(lián)網(wǎng)的業(yè)務(wù)提供中,最大的瓶頸不是網(wǎng)絡(luò)側(cè)的各種服務(wù),而是用戶手中的終端。此處的終端除了包括傳統(tǒng)的移動(dòng)手機(jī)、掌上電腦之外,還包括新型的移動(dòng)互聯(lián)網(wǎng)設(shè)備(MID)、上網(wǎng)本、多媒體終端,例如游戲機(jī)、閱讀器等,本文統(tǒng)稱為智能終端。用戶使用什么終端,終端上能支持什么服務(wù),決定了移動(dòng)互聯(lián)網(wǎng)能提供什么服務(wù)。終端是移動(dòng)互聯(lián)網(wǎng)業(yè)務(wù)的短板環(huán)節(jié),主要的限制體現(xiàn)在硬件以及軟件兩個(gè)方面。在芯片硬件層面,尚需要技術(shù)上進(jìn)一步的突破,以形成大屏幕、小尺寸、計(jì)算能力強(qiáng)、待電時(shí)間長、使用簡單的設(shè)備。在軟件層面,操作系統(tǒng)及軟件平臺(tái)是另一個(gè)主要的限制。首先,終端操作系統(tǒng)及軟件平臺(tái)不統(tǒng)一。目前的終端上多種嵌入式操作系統(tǒng)和軟件平臺(tái)并存,應(yīng)用開發(fā)在終端兼容性上消耗了巨大的時(shí)間和人力成本,由于不夠開放,開發(fā)門檻高,應(yīng)用缺乏。其次,3G及WAPI/Wi-Fi等網(wǎng)絡(luò)技術(shù)推進(jìn)寬帶移動(dòng)互聯(lián)網(wǎng)的發(fā)展,業(yè)務(wù)從原有的以簡單文字為主的WAP網(wǎng)頁應(yīng)用拓寬到面向多媒體的娛樂生活和商務(wù)應(yīng)用。智能終端隨之從以前的小屏幕、架構(gòu)簡單的硬件計(jì)算平臺(tái)向大屏幕、強(qiáng)計(jì)算能力方向發(fā)展。原有功能簡單的智能終端操作系統(tǒng)漸漸不適合越發(fā)復(fù)雜的業(yè)務(wù)需求。

        在上述的背景下,新興的移動(dòng)互聯(lián)網(wǎng)龍頭廠商紛紛和開源社區(qū)合作,面向大屏幕高性能的移動(dòng)智能終端推出基于Linux開源操作系統(tǒng)的軟件棧,此處的智能終端軟件棧是指包括操作系統(tǒng)、系統(tǒng)服務(wù)以及關(guān)鍵的上層應(yīng)用在內(nèi)的完整的智能終端軟件組合。

        這類基于Linux的終端軟件棧應(yīng)用在特定規(guī)格的硬件設(shè)備上,形成獨(dú)立的軟件開發(fā)平臺(tái),并以軟件平臺(tái)為核心,聚集了產(chǎn)業(yè)鏈上的設(shè)備制造、應(yīng)用軟件開發(fā)、服務(wù)和內(nèi)容提供等方面的廠商,組成產(chǎn)業(yè)聯(lián)盟,利用Linux開源社區(qū)的技術(shù)實(shí)力和開源社區(qū)對全球開發(fā)人員的號(hào)召能力,打破原來傳統(tǒng)封閉手機(jī)操作系統(tǒng)的格局,逐步在移動(dòng)互聯(lián)網(wǎng)業(yè)務(wù)開發(fā)領(lǐng)域占據(jù)舉足輕重的地位。

        下面為幾個(gè)主要的基于Linux的開源智能終端軟件棧以及其背后的產(chǎn)業(yè)聯(lián)盟。

        (1)Maemo(http://maemo.org/)

        Maemo是諾基亞支持的一個(gè)基于開源軟件的移動(dòng)設(shè)備軟件平臺(tái),應(yīng)用在諾基亞N770、N800、N810和N900系列高端設(shè)備上。

        (2)Android(http://www.openhandsetalliance.com/)

        Android是Google于2007年11月5日公布的基于Linux內(nèi)核的軟件平臺(tái),目前由開放手機(jī)聯(lián)盟(Open Handset Alliance)維護(hù),開放手機(jī)聯(lián)盟為Google主導(dǎo)的手機(jī)產(chǎn)業(yè)聯(lián)盟,其加盟者囊括了世界上主要的運(yùn)營商以及手機(jī)廠商,例如:Sprint Nextel、T-Mobile、Vodafone、華為技術(shù)、中國移動(dòng)等。

        (3)LiMo(http://www.limofoundation.org/)

        LiMo是由LiMo基金會(huì)開發(fā)維護(hù)的Linux操作系統(tǒng)的軟件平臺(tái),其加盟者主要有 Samsung、Vodafone、LG、Orange、DoCoMo等。

        (4)Moblin(http://moblin.org/)

        Moblin是一個(gè)開源的、基于Linux的軟件平臺(tái),主要應(yīng)用于英特爾的移動(dòng)互聯(lián)網(wǎng)設(shè)備和其他手持設(shè)備。英特爾在2007年7月推出了Moblin.org的網(wǎng)站,2009年4月,英特爾將Moblin移交給Linux基金會(huì),旨在加強(qiáng)開源社區(qū)對Moblin的支持。

        (5)OpenMoko(http://wiki.openmoko.org/wiki/Main_Page)

        OpenMoko不僅定位為移動(dòng)手機(jī)的開源Linux軟件棧,同時(shí)提供OpenMoko的硬件,第一款OpenMoko硬件是Neo1973,第二款OpenMoko硬件是Neo FreeRunner。

        (6)GPEPhone(http://gpe.linuxtogo.org/)

        GPEPhone為 LiPS(Linux phone standard)Forum 制定的手機(jī)Linux標(biāo)準(zhǔn)的開源實(shí)現(xiàn)。2008年6月,LiPS宣布加入LiMo基金會(huì),在合并過程中,原有的GPEPhone網(wǎng)站的技術(shù)資料發(fā)生了變化,文中研究的GPEPhone源碼及文檔資料均來自舊版的網(wǎng)站。

        開源Linux智能終端軟件棧從結(jié)構(gòu)上看可以分成以下幾層:第一層為Linux操作系統(tǒng)內(nèi)核及硬件驅(qū)動(dòng),第二層為中間服務(wù)層,第三層為應(yīng)用開發(fā)框架,第四層為具體的應(yīng)用。上述的開源Linux智能終端的軟件棧都包含了一個(gè)經(jīng)過梳理和優(yōu)化的Linux內(nèi)核,在架構(gòu)的第二層與第三層,包含了終端關(guān)鍵服務(wù)子系統(tǒng):2D/3D的圖形子系統(tǒng)、窗口子系統(tǒng)、窗口應(yīng)用開發(fā)框架、多媒體子系統(tǒng)、窗口程序的進(jìn)程間通信服務(wù)、電話通信服務(wù)模塊等。下面將重點(diǎn)研究軟件棧中間層中重要的子系統(tǒng),對各種開源Linux智能終端軟件棧使用的典型技術(shù)進(jìn)行分析和總結(jié)。

        2 2D/3D圖形子系統(tǒng)與窗口子系統(tǒng)

        2.1 智能終端對圖形子系統(tǒng)的新需求

        目前移動(dòng)終端設(shè)備的圖形顯示能力得到了長足的發(fā)展,色彩絢麗的大顯示屏幕在高端的移動(dòng)終端設(shè)備上得到了廣泛的應(yīng)用,圖形處理器(graphic processing unit,GPU)作為獨(dú)立的運(yùn)算芯片集成在高端移動(dòng)設(shè)備上,使移動(dòng)設(shè)備能夠在不占用CPU資源的情況下實(shí)現(xiàn)高質(zhì)量的2D和3D圖形效果。

        從業(yè)務(wù)需求上看,一方面,游戲、GPS地圖導(dǎo)航、視頻共享等要求高質(zhì)量圖形顯示的業(yè)務(wù)成為高端智能終端上的主要應(yīng)用;另一方面,3D用戶操作界面在高端智能終端上逐步開始廣泛使用,相比PC上的3D桌面,智能終端上的物理屏幕小,單個(gè)屏幕上所容納的內(nèi)容少,由多個(gè)虛擬屏幕組成的3D的操作界面符合用戶的3D空間邏輯想象,不僅具有時(shí)尚的操作風(fēng)格,更具有實(shí)用的操作意義。例如:目前新上市的高端智能手機(jī)中有一種時(shí)尚的立方體桌面,立方體的每一個(gè)面都是一個(gè)虛擬屏幕,存放一類的應(yīng)用快捷入口。

        目前的智能終端上比較新穎的屏幕效果主要有:

        ·透明窗口和透明圖像;

        ·3D桌面;

        ·高清晰的2D矢量圖形;

        ·2D圖形在3D空間的運(yùn)動(dòng),即某種動(dòng)畫效果。

        上文提及的部分Linux開源智能終端軟件棧能夠支持上述的圖形效果,在具體實(shí)現(xiàn)時(shí)軟硬件平臺(tái)使用了不同程度的硬件圖形加速。

        2.2 智能終端上的窗口子系統(tǒng)

        智能終端的窗口子系統(tǒng)是智能終端操作系統(tǒng)上的最核心模塊,窗口子系統(tǒng)決定了智能終端用戶的整個(gè)操作界面——“用戶桌面”的實(shí)現(xiàn)方式。

        智能終端的窗口子系統(tǒng)分成兩類:第一類是整個(gè)窗口子系統(tǒng)在同一個(gè)進(jìn)程實(shí)現(xiàn),應(yīng)用窗口通常采用線程結(jié)構(gòu),共享同一個(gè)內(nèi)存地址空間。此類用戶圖形操作界面響應(yīng)速度快,資源消耗相對小,但是當(dāng)某個(gè)線程出現(xiàn)錯(cuò)誤時(shí)容易造成整個(gè)進(jìn)程的癱瘓,因此通常應(yīng)用在某些實(shí)時(shí)響應(yīng)要求高,終端界面交互簡單的終端上。第二類窗口子系統(tǒng)是多進(jìn)程的客戶端/服務(wù)器結(jié)構(gòu),能夠?qū)崿F(xiàn)復(fù)雜的用戶界面,具有更佳的穩(wěn)定性。Linux的X Window是其中最普遍應(yīng)用的代表,應(yīng)用場合包括:Linux PC、移動(dòng)互聯(lián)網(wǎng)設(shè)備、上網(wǎng)本、高端智能手機(jī)等。上文提及的大多數(shù)的開源Linux智能終端軟件棧都沿用了X Window,只有一個(gè)引人注目的例外:Android,Android的窗口系統(tǒng)不能和X Window兼容。可以說,在未來的很長一段時(shí)間內(nèi),X Window都將是大多數(shù)Linux終端最重要的圖形窗口系統(tǒng)。

        X Window(常稱為X11或X)是一種以位圖方式顯示的軟件窗口系統(tǒng),1984年在麻省理工學(xué)院研究成功,之后發(fā)展成UNIX、類UNIX等操作系統(tǒng)所一致適用的標(biāo)準(zhǔn)化軟件工具包及顯示架構(gòu)的運(yùn)作協(xié)議。X Window有2個(gè)具體的實(shí)現(xiàn):X.Org和XFree86。

        X Window系統(tǒng)是一種同時(shí)支持多任務(wù)進(jìn)程的客戶端/服務(wù)器結(jié)構(gòu)。惟一的服務(wù)器X Server控制了用戶交互的主要輸入輸出的設(shè)備,例如,顯示屏幕、觸摸屏、鍵盤、鼠標(biāo)。其他的應(yīng)用作為客戶端X Client以獨(dú)立進(jìn)程的方式存在,通過X Server與輸入輸出設(shè)備以及其他的客戶端X Client通信,其通信協(xié)議稱為X。其基本架構(gòu)如圖1所示。

        圖1中有兩種特別客戶端X Client,第一種是運(yùn)行在其他遠(yuǎn)程機(jī)器上的客戶端應(yīng)用,X Window支持遠(yuǎn)程的客戶端X Client;第二種是本機(jī)上運(yùn)行的特殊的客戶端窗口管理器Window Manager,窗口管理器Window Manager負(fù)責(zé)每個(gè)窗口的外觀裝飾、位置以及窗口的打開、關(guān)閉、最小化、最大化、重置大小等通用管理功能。

        2.3 X Window與OpenGL的技術(shù)融合

        2.3.1 OpenGL

        在圖形軟硬件行業(yè),應(yīng)用最廣泛的跨平臺(tái)的硬件加速標(biāo)準(zhǔn)程序接口規(guī)范是OpenGL(open graphics library),其官方網(wǎng)站是http://www.opengl.org/。OpenGL由數(shù)百個(gè)函數(shù)組成,用于以簡單的圖元繪制復(fù)雜的3D景象。OpenGL ES(OpenGL for embedded systems)是OpenGL開發(fā)接口的子集,應(yīng)用在手機(jī)、掌上電腦和游戲主機(jī)等嵌入式設(shè)備上。智能終端如果支持圖形硬件加速一般都支持某種版本的OpenGL接口,例如:蘋果公司的iPhone 3G S設(shè)備硬件支持OpenGL ES 2.0;英特爾公司的新型MID硬件平臺(tái)Moorestown中代號(hào)為“Lincroft”的核心處理芯片集成了圖形核心、顯示單元,其中圖形核心可以直接支持OpenGL ES 2.0。下面著重討論一下OpenGL。

        OpenGL函數(shù)只提供3D圖形渲染輸出功能,其功能完全獨(dú)立于宿主操作系統(tǒng),此設(shè)計(jì)使OpenGL更容易實(shí)現(xiàn)跨平臺(tái)的開發(fā)接口,然而,由于OpenGL核心API沒有涉及窗口系統(tǒng)、鍵盤/鼠標(biāo)或其他輸入設(shè)備,OpenGL必須與宿主操作系統(tǒng)的窗口系統(tǒng)進(jìn)行集成。與OpenGL集成的窗口系統(tǒng)有下面幾類。

        · GLUT(OpenGL utility toolkit),只提供基本的跨平臺(tái)的窗口實(shí)現(xiàn)和系統(tǒng)I/O事件抓取。

        ·X Window,具體實(shí)現(xiàn)為GLX,該實(shí)現(xiàn)在下文中有介紹。

        · Microsoft Windows,具體實(shí)現(xiàn)為WGL,本文不涉及。

        2.3.2 GLX與OpenGL的直接/間接圖形渲染

        為了使X Window應(yīng)用能夠支持 OpenGL,X Window核心協(xié)議上擴(kuò)展了GLX接口,GLX可以分成以下三個(gè)部分。

        ·X Window的應(yīng)用程序能夠調(diào)用OpenGL功能的一系列函數(shù)調(diào)用接口。

        ·X Window的核心X協(xié)議的擴(kuò)展,使X Window的應(yīng)用程序能夠向X Server發(fā)送3D渲染命令。

        ·X Server的擴(kuò)展模塊,接收3D渲染命令,轉(zhuǎn)發(fā)給硬件加速實(shí)現(xiàn)的OpenGL接口或者M(jìn)ESA類庫(當(dāng)系統(tǒng)硬件不支持硬件加速實(shí)現(xiàn)的OpenGL時(shí),使用純軟件實(shí)現(xiàn)OpenGL圖形渲染,此時(shí)使用了一個(gè)開源的、純軟件實(shí)現(xiàn)的OpenGL類庫:MESA)。

        GLX實(shí)現(xiàn)的OpenGL 3D圖形渲染一般稱作“OpenGL的間接渲染”(OpenGL indirect rendering),其特點(diǎn)是:X Window應(yīng)用程序不直接與OpenGL的接口交互,3D圖形渲染通過X Server實(shí)現(xiàn)。與此對比,還有一種OpenGL的直接圖形渲染,應(yīng)用程序不通過X Server,直接使用OpenGL進(jìn)行圖形渲染操作。

        根據(jù)筆者的了解,目前智能終端軟件棧上一般使用GLX實(shí)現(xiàn)OpenGL的間接圖形渲染。其中比較典型的是Moblin 2,其主要的3D應(yīng)用開發(fā)框架Clutter是以GLX為后端實(shí)現(xiàn)的。關(guān)于Clutter,下文中有描述。

        OpenGL直接渲染的方案,存在復(fù)雜的技術(shù)難點(diǎn),主要是X Server及其他OpenGL直接渲染的應(yīng)用進(jìn)程共享屏幕窗口管理的相關(guān)問題。這些問題在近年X Server以及圖形系統(tǒng)的變革中逐步得到解決,并將為移動(dòng)互聯(lián)網(wǎng)終端提供更高的顯示性能。

        2.3.3 2D/3D復(fù)合桌面效果的實(shí)現(xiàn)

        介紹使用GLX和OpenGL實(shí)現(xiàn)復(fù)雜的用戶操作界面效果之前,必須先引入X Server的Render、Composite系列擴(kuò)展以及介紹Composite Manager。

        X Render擴(kuò)展用于在X Server實(shí)現(xiàn) Porter-Duff圖像合成。Porter-Duff圖像合成又稱為Alpha圖像合成(Alpha compositing)。Alpha圖像合成將前景圖像與背景圖像進(jìn)行復(fù)合計(jì)算,以獲得前景圖像部分透明的效果。X Render擴(kuò)展將透明屏幕圖像合成的功能放在了X Server端(甚至可以放到圖形硬件上直接生成),避免屏幕圖像的大量數(shù)據(jù)頻繁從X Server跨進(jìn)程傳送到客戶端,提高了處理的性能。

        Composite擴(kuò)展用于將X窗口以及其窗口子系統(tǒng)整個(gè)重定向到一塊內(nèi)存中,由于渲染不是輸出到屏幕,該輸出的緩存又稱作“off-screen buffer”。

        Composite Manager(見圖2)是一個(gè)獨(dú)立的程序或者與X的Window Manager為同一進(jìn)程,Composite Manager可以利用X Render和Composite等X協(xié)議擴(kuò)展提供不同的桌面窗口合成效果。例如,某個(gè)Composite Manager可以實(shí)現(xiàn)透明窗口,其大致的工作過程如下:

        (1)使用Composite擴(kuò)展將某個(gè)窗口及子窗口重定向到一個(gè)off-screen buffer;

        (2)使用X Render擴(kuò)展將off-screen buffer中的圖像以Alpha圖像合成的方式合并到可視的桌面;

        (3)當(dāng)窗口被移動(dòng)或者遮擋需要重畫,X Server通過Damage擴(kuò)展通知到CompositeManager,重新執(zhí)行第二步操作。

        對X Window來說,實(shí)現(xiàn)一個(gè)3D的立方體桌面,立方體的每個(gè)面放置不同的應(yīng)用入口以及啟動(dòng)的2D應(yīng)用窗口,并不需要對原有的大量2D程序進(jìn)行改動(dòng),只需要替換Composite Manager。

        為了加快3D圖形渲染的速度,還需要X Server做更進(jìn)一步的結(jié)構(gòu)優(yōu)化。對此,業(yè)界正在醞釀在OpenGL基礎(chǔ)上構(gòu)建X Server的變革,這就是XGL。

        2.3.4 XGL:在OpenGL基礎(chǔ)上構(gòu)建X Server

        XGL的定義為:一種在OpenGL基礎(chǔ)上構(gòu)建X Server的架構(gòu)。X Server的主體部分如下:2D的圖形渲染使用原來的傳統(tǒng)架構(gòu),由DDX(device-dependent X)載入特定的圖形硬件驅(qū)動(dòng),在XGL架構(gòu)定義中,X Server不載入特定的硬件設(shè)備驅(qū)動(dòng),而是直接利用“OpenGL驅(qū)動(dòng)”。XGL架構(gòu)如圖3所示。

        圖3中,DDX是通過glitz的類庫與OpenGL的接口交互。圖4提供了一個(gè)XGL與2D/3D混合渲染的Composite Manager的組合架構(gòu)。在該架構(gòu)中,2D圖像通過glitz使用OpenGL進(jìn)行圖形渲染,而3D的桌面圖像、Composite Manager通過GLX進(jìn)行圖像渲染。

        3 窗口應(yīng)用開發(fā)框架

        一般說來,上層應(yīng)用開發(fā)者并不需要對X Window體系架構(gòu)進(jìn)行了解即可進(jìn)行應(yīng)用開發(fā),原因是系統(tǒng)的底層實(shí)現(xiàn),例如與X Window的X協(xié)議交互的細(xì)節(jié)都被封裝和屏蔽到某種窗口應(yīng)用開發(fā)框架中,窗口應(yīng)用開發(fā)框架為應(yīng)用開發(fā)提供了豐富的可以開箱即用的各種功能組件,使上層的應(yīng)用開發(fā)者可以專注于窗口應(yīng)用邏輯,降低了應(yīng)用開發(fā)的技術(shù)難度。

        在Linux智能終端開發(fā)領(lǐng)域,窗口應(yīng)用開發(fā)框架與圖形及窗口子系統(tǒng)緊密相關(guān),窗口應(yīng)用開發(fā)旗幟鮮明地分成兩類:一類是不使用X Window,自定義圖形子系統(tǒng)和窗口應(yīng)用開發(fā)框架,例如Android。另一類是使用X Window,大多使用Linux桌面系統(tǒng)傳統(tǒng)的一些窗口應(yīng)用開發(fā)工具,例如GTK+和Qt。Linux的開源終端軟件棧中,Maemo主要使用 Hildon窗口應(yīng)用開發(fā)框架,同時(shí)兼容 GTK+;LiMo、OpenMoko、GPEPhone主要使用GTK+;Moblin其窗口應(yīng)用開發(fā)框架主要使用GTK+和Clutter。

        在Linux嵌入式UI開發(fā)領(lǐng)域,Gtk+和Qt經(jīng)過多年的發(fā)展已經(jīng)比較成熟,在以硬件加速的圖形顯示為基礎(chǔ)的3D窗口應(yīng)用領(lǐng)域,Clutter代表了新的技術(shù)開發(fā)趨勢。Clutter是一個(gè)直接架構(gòu)在OpenGL之上的窗口應(yīng)用工具包,它使開發(fā)者能夠以一種簡單的方式開發(fā)OpenGL的應(yīng)用,不需要涉及復(fù)雜的OpenGL API。在開源社區(qū)有人斷言:“Gtk+之于 XLib/X,有如 Clutter之于 OpenGL/GLX”。

        如果說Gtk+是一個(gè)面向靜態(tài)窗口組件布局的開發(fā)工具包,那Clutter則是面向動(dòng)態(tài)窗口的組件,其重點(diǎn)是描述平面的窗口組件在空間的運(yùn)動(dòng)。Clutter的技術(shù)特性如下。

        ①Clutter與Gtk+一脈相承,以GLib/GObject為基礎(chǔ)。

        ·使用GLib作為通用性工具函數(shù)庫,提供基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)操作支持。

        · 使用GObject的類型描述。GObject的類型描述主要有兩大作用:第一個(gè)作用是提供了一種在C語言下實(shí)現(xiàn)面向?qū)ο罄砟畹牟僮鞣椒?;第二個(gè)作用是為實(shí)現(xiàn)開發(fā)綁定多種語言提供支持,例如,C、Python、VALA等。

        ②使用新型的對象概念描述動(dòng)態(tài)運(yùn)動(dòng)的窗體控件。窗體定義為舞臺(tái)(Stage),控件定義為演員(Actor),而時(shí)間線(TimeLines)與演員(Actor)綁定用以定義演員(Actor)的行為(Behaviour)。通過時(shí)間線的各種事件回調(diào)函數(shù)控制行為。

        ③Clutter上使用了OpenGL的封裝類庫COGL,COGL封裝和簡化了OpenGL的API,并且能夠在不同版本的OpenGL中保持兼容。Clutter應(yīng)用可以選擇直接使用COGL進(jìn)行OpenGL的編程。

        ④Clutter缺省編譯參數(shù)中,以GLX作為與本地窗口的后端支持(作為研究的 Clutter版本為:1.1.3),此時(shí)Clutter與X Server的關(guān)系可以描述如圖5所示。

        ⑤Clutter能與其他X Client的窗口進(jìn)行集成。根據(jù)對Clutter1.1.3版本的測試結(jié)果,Clutter的Stage可以集成到GTK的某些子窗口容器構(gòu)件上。而其他的X Client類型的窗口也可以集成到Clutter的Stage窗口上。

        4 多媒體子系統(tǒng)

        4.1 智能終端對多媒體子系統(tǒng)的新需求

        為了迎合移動(dòng)互聯(lián)網(wǎng)時(shí)代的多媒體娛樂需求,支持音樂、電影、網(wǎng)絡(luò)視頻共享、視頻電話、社交游戲等多媒體業(yè)務(wù),移動(dòng)智能終端從硬件平臺(tái)上強(qiáng)化了對語音和視頻等媒體功能的支持。由于移動(dòng)終端是一種資源受限硬件平臺(tái),其主要是ARM硬件平臺(tái)或者新型的經(jīng)過低功耗改良的X86硬件平臺(tái)。為了提高對多媒體數(shù)據(jù)的處理能力,目前移動(dòng)終端主流的處理方法是:采用某種硬件加速的媒體編解碼芯片。上文提到的英特爾公司Moorestown硬件平臺(tái),其主處理芯片Lincroft上集成了硬件實(shí)現(xiàn)的視頻編碼和解碼的功能,支持 MPEG4、H.264格式的編碼及 MPEG2、MPEG4、H.264等格式的解碼,另一顆主要芯片Langwell則集成了音頻引擎,實(shí)現(xiàn)硬件音頻播放的功能。再說說Maemo,Maemo使用ARM的硬件架構(gòu),使用ARM DSP硬件加速解碼,OpenMAX IL作為其硬件加速解碼的抽象層。

        與此對應(yīng),移動(dòng)互聯(lián)網(wǎng)終端的多媒體子系統(tǒng)一般可以分成兩部分:一部分是上層的多媒體處理框架,另一部分是系統(tǒng)與聲音、顯示系統(tǒng)以及硬件實(shí)現(xiàn)的編解碼的交互接口。下面分別針對這兩部分進(jìn)行闡述。

        4.2 GStreamer的簡介

        多媒體處理框架在Linux系統(tǒng)一般使用GStreamer類庫或者Helix類庫,前文在開源的Linux智能終端軟件棧中,如 Maemo、LiMo、Openmoko、GPEPhone 都不約而同地采用了GStreamer作為其上層多媒體框架,而Moblin則同時(shí)支持GStreamer和Helix。Gstreamer是Linux多媒體處理的主流典型技術(shù)。

        GStreamer是一種鏈接管道式的多媒體處理框架,將多媒體數(shù)據(jù)流處理劃分成各種能夠自由組合重用的節(jié)點(diǎn),然后將節(jié)點(diǎn)組合成串行處理的媒體處理鏈。這是GStreamer用于播放MP3媒體文件的一種命令行:

        gst-launch-0.10 filesrc location="concept.mp3" !decodebin!alsasink

        其中的 filesrc、decodebin、alsasink都是一種 GStreamer的節(jié)點(diǎn)(Element)。Element的輸入和輸出稱為 Pads,上游節(jié)點(diǎn)的輸出可以掛接到下游節(jié)點(diǎn)的輸入上,以此方式多個(gè)節(jié)點(diǎn)可以掛接組成媒體處理鏈。BIN用于將一組Element掛接組成鏈狀邏輯單元。PipeLine是一種特定的最上層的BIN,PipeLine啟動(dòng)后,在單獨(dú)的線程中運(yùn)行,PipeLine線程和宿主的程序之間通過一個(gè)GStreamer提供的消息總線進(jìn)行通信。圖6是一個(gè)典型的 PipelLine示例,多媒體數(shù)據(jù)流經(jīng)過ogg-demuxer的Element之后分流成聲音和視頻兩路媒體流。

        GStreamer將媒體處理過程中的各個(gè)環(huán)節(jié)包括輸入、解包/組包、編碼/解碼、輸出都封裝成節(jié)點(diǎn)(Element),其中輸入包括:從文件、網(wǎng)絡(luò)、攝像頭、麥克風(fēng)輸入等,輸出包括:輸出到屏幕、耳機(jī)、網(wǎng)絡(luò)、文件等。一組Element則可以打包GStreamer的一個(gè)插件庫,輸入輸出設(shè)備以及硬件編解碼設(shè)備的程序接口都封裝成GStreamer的插件庫。

        4.3 多媒體子系統(tǒng)的底層接口

        下面以Maemo的多媒體子系統(tǒng)(如圖7所示)為例,介紹多媒體子系統(tǒng)主要的底層接口。

        圖7中左邊ALSA為 “高級Linux聲音體系(advanced linux sound architecture)”,是聲卡Linux內(nèi)核驅(qū)動(dòng)組件,是目前Linux主流的聲音處理架構(gòu)。

        攝像頭的視頻捕獲程序接口:V4L2。Video4Linux是一種與Linux內(nèi)核集成的通用攝像頭驅(qū)動(dòng),V4L2是Video4Linux的第二個(gè)版本。

        OpenMAX IL作為Maemo硬件加速解碼的抽象層。

        XVideo是X Window核心協(xié)議的擴(kuò)展,用于支持視頻播放,下面對視頻播放技術(shù)播放過程中存在的性能瓶頸及XVideo解決方案進(jìn)行分析。

        · 在顯示過程中,視頻流原始支持的顯示大小和窗口大小很可能不一致(例如,全屏模式播放時(shí)),此時(shí)需要對每一幀圖像進(jìn)行縮放,該操作將消耗大量的CPU資源。XVideo實(shí)現(xiàn)了由X Server端實(shí)現(xiàn)視頻顯示大小轉(zhuǎn)換的功能,方便利用硬件直接實(shí)現(xiàn)每一幀圖像的縮放。

        · XClient與X Server是操作系統(tǒng)上獨(dú)立的進(jìn)程,在進(jìn)程間大量的媒體數(shù)據(jù)傳送是另一個(gè)造成性能低下的原因,XVideo可以選擇使用共享內(nèi)存的方式在這兩個(gè)進(jìn)程之間傳遞視頻數(shù)據(jù)流。共享內(nèi)存是同一塊物理內(nèi)存被映射到多個(gè)進(jìn)程各自的進(jìn)程地址空間的技術(shù),避免在內(nèi)核空間和用戶空間進(jìn)行多次數(shù)據(jù)拷貝。

        5 桌面數(shù)據(jù)總線與應(yīng)用管理

        上面提到的Linux開源智能終端軟件棧中的主用戶操作界面(根據(jù)PC上的習(xí)慣,稱之為“桌面”)由多應(yīng)用進(jìn)程構(gòu)成,依賴于桌面數(shù)據(jù)總線在各個(gè)應(yīng)用之間、應(yīng)用與操作系統(tǒng)之間傳遞業(yè)務(wù)消息,以協(xié)調(diào)同步各個(gè)窗口應(yīng)用的關(guān)系,結(jié)合應(yīng)用管理模塊形成一個(gè)整體的、協(xié)調(diào)一致的桌面會(huì)話。系統(tǒng)的各個(gè)應(yīng)用和服務(wù)以桌面數(shù)據(jù)總線為中心連接在一起,桌面數(shù)據(jù)總線是其中的中心子系統(tǒng),在上文提到的各大Linux開源智能終端,如Maemo、Moblin、OpenMoko、LiMo、GpePhone使用的都是一個(gè)主流開源的桌面數(shù)據(jù)總線:D-Bus。D-Bus不僅在上述的開源軟件棧中應(yīng)用,更是作為關(guān)鍵的子系統(tǒng)應(yīng)用在桌面Linux上,為Linux上此方面最成熟的技術(shù)。

        D-Bus分成兩類進(jìn)程:一類是系統(tǒng)總線,在系統(tǒng)中是安全級別高的單實(shí)例系統(tǒng)進(jìn)程,用于通知系統(tǒng)內(nèi)核和設(shè)備的消息;另一類是是每用戶一個(gè)的會(huì)話總線,用于傳遞應(yīng)用間業(yè)務(wù)消息。

        D-Bus架構(gòu)中,每個(gè)應(yīng)用將其業(yè)務(wù)對象以及接口注冊到D-Bus守護(hù)進(jìn)程上,D-Bus守護(hù)進(jìn)程提供業(yè)務(wù)消息的尋址、路由和可靠傳送工作。

        D-Bus有兩種開發(fā)接口:低級開發(fā)接口和高級開發(fā)接口。前者只涉及D-Bus的基本操作,不涉及與具體語言定義的對象綁定,僅可使用C語言進(jìn)行開發(fā)。后者將D-Bus的對象、接口綁定到 GLib、Python、Qt、Java等具體語言或者類庫定義的本地對象中,該綁定機(jī)制屏蔽了D-Bus操作的復(fù)雜性,開發(fā)者通過直接操作這些特定的本地對象進(jìn)行D-Bus消息的收發(fā)。

        通常,桌面數(shù)據(jù)總線與應(yīng)用管理的實(shí)現(xiàn)結(jié)合在一起,形成完整的桌面會(huì)話,應(yīng)用管理是指應(yīng)用實(shí)例進(jìn)程生命期管理、實(shí)現(xiàn)應(yīng)用進(jìn)程單實(shí)例等。實(shí)例進(jìn)程生命期管理主要指啟動(dòng)、運(yùn)行和結(jié)束等狀態(tài)管理。在資源緊張的智能終端中,一般依照某種策略對已經(jīng)運(yùn)行但是不被使用的應(yīng)用進(jìn)程進(jìn)行強(qiáng)制休眠或者退出。

        在GPEPhone中,libiac模塊提供了D-Bus底層開發(fā)接口的封裝,應(yīng)用使用libiac進(jìn)行應(yīng)用進(jìn)程間通信,圖8是libiac與Gpe應(yīng)用管理器的典型交互圖,圖中保證了應(yīng)用A與一個(gè)存活的應(yīng)用B進(jìn)行通信。

        6 電話通信模塊

        對于智能終端而言,電信網(wǎng)上的語音及增值業(yè)務(wù)是基礎(chǔ)業(yè)務(wù),移動(dòng)互聯(lián)網(wǎng)上的各種數(shù)據(jù)業(yè)務(wù)是重點(diǎn)業(yè)務(wù),為了支持這兩類業(yè)務(wù),智能終端通常都必須集成某種通信模塊,目前集成的多數(shù)是電信運(yùn)營商3G的電話通信模塊。通信模塊一方面連接電信運(yùn)營商的網(wǎng)絡(luò),支持傳統(tǒng)語音業(yè)務(wù)以及3G移動(dòng)通信下的新型多媒體業(yè)務(wù),另一方面可以作為無線調(diào)制解調(diào)器,使用戶通過通信模塊連接到電信運(yùn)營商互聯(lián)網(wǎng)接入點(diǎn),隨時(shí)隨地使用互聯(lián)網(wǎng)業(yè)務(wù)。

        從硬件結(jié)構(gòu)上看,通信模塊與具體的運(yùn)營商網(wǎng)絡(luò)制式相關(guān),相對獨(dú)立于智能終端的主處理器,兩者由不同的廠商提供,通過SPI接口或者USB接口相連,共用麥克風(fēng)、揚(yáng)聲器等外圍設(shè)備,形成一種“雙核心”的結(jié)構(gòu)。

        從軟件結(jié)構(gòu)上看,電話通信模塊驅(qū)動(dòng)、電話通信核心服務(wù)以及上層電話應(yīng)用通常稱為電話應(yīng)用軟件棧。圖9為電話應(yīng)用軟件棧的一種典型結(jié)構(gòu)。

        通常,電話通信模塊作為串口設(shè)備接入到Linux的操作系統(tǒng)中,通過3GPP TS 27.010規(guī)范定義的多路復(fù)用協(xié)議,虛擬出多個(gè)通道。下面介紹兩種主要的串口通道。

        最主要的串口通道用來發(fā)送和接收AT命令控制通信模塊,AT命令是一種在串口上應(yīng)用的文本命令,主要用于控制電話通信模塊與電信運(yùn)營商的網(wǎng)絡(luò)進(jìn)行通信,實(shí)現(xiàn)電話、視頻電話、短信等功能,獲取網(wǎng)絡(luò)的狀態(tài),讀取存儲(chǔ)在通信模塊中的SIM卡身份標(biāo)識(shí)、號(hào)碼本等各種信息。AT命令格式在3GPP 27.007文檔中有規(guī)范的定義,不同的運(yùn)營商不同的網(wǎng)絡(luò)制式下有些擴(kuò)展和差異。

        另一個(gè)串口通道通常用于PPP撥號(hào)上網(wǎng)業(yè)務(wù),PPPD系統(tǒng)服務(wù)通過PPP驅(qū)動(dòng)進(jìn)行撥號(hào)上網(wǎng),建立PPP會(huì)話,上層網(wǎng)絡(luò)應(yīng)用在PPP會(huì)話基礎(chǔ)上建立IP連接。

        7 結(jié)束語

        移動(dòng)互聯(lián)網(wǎng)的飛速發(fā)展中,業(yè)界逐步認(rèn)識(shí)到移動(dòng)互聯(lián)網(wǎng)發(fā)展中終端的瓶頸限制,終端的限制使其不足以支撐豐富的多媒體業(yè)務(wù)和快速的業(yè)務(wù)部署。Linux開源移動(dòng)終端軟件棧作為新興的終端關(guān)鍵技術(shù),吸引了各大廠家聚集并組合成產(chǎn)業(yè)聯(lián)盟,嘗試打開移動(dòng)互聯(lián)網(wǎng)的新局面,對此值得詳細(xì)的學(xué)習(xí)分析和長期的跟蹤研究。

        1 Matthieu Herrb,MatthiasHopf.New evolutionsin theX Window system, http://www.openbsd.org/papers/eurobsd2005/herrb-hopf.pdf,October 2005

        2 Porter T,Duff T.Compositing digitalimages.Computer Graphics,July 1984

        3 X Window system protocols and architecture,http://en.wikipedia.org/wiki/X_Window_System_protocols_and_architecture

        4 X Window system core protocol,http://en.wikipedia.org/wiki/X_Window_System_core_protocol

        5 Andy Ritger.Using the existing driver framework to achieve a composited X desktop.XdevConf,2006

        6 OpenGL,http://en.wikipedia.org/wiki/OpenGL

        7 GDK Basics,http://developer.gnome.org/doc/GGAD/cha-gdk.html

        8 GTK+reference manual,http://library.gnome.org/devel/gtk/stable/

        9 Clutter reference manual,http://clutter-project.org/docs/clutter/stable/

        10 GStreamer application development manual (0.10.25.1),http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/index.html

        11 Documentation/Maemo 5 developer guide/architecture/multimedia domain,http://wiki.maemo.org/Documentation/Maemo_5_Developer_Guide/Architecture/Multimedia_Domain

        12 Havoc Pennington.D-Bus Specification,http://dbus.freedesktop.org/doc/dbus-specification.html

        猜你喜歡
        開源桌面子系統(tǒng)
        桌面舞龍
        不對中轉(zhuǎn)子系統(tǒng)耦合動(dòng)力學(xué)特性研究
        GSM-R基站子系統(tǒng)同步方案研究
        基于APP在線控制雙擠出頭FDM桌面3D打印機(jī)的研制
        五毛錢能買多少頭牛
        駝峰測長設(shè)備在線監(jiān)測子系統(tǒng)的設(shè)計(jì)與應(yīng)用
        大家說:開源、人工智能及創(chuàng)新
        開源中國開源世界高峰論壇圓桌會(huì)議縱論開源與互聯(lián)網(wǎng)+創(chuàng)新2.0
        開源計(jì)算機(jī)輔助翻譯工具研究
        車載ATP子系統(tǒng)緊急制動(dòng)限制速度計(jì)算
        中文亚洲一区二区三区| 免费做爰猛烈吃奶摸视频在线观看| 久久88综合| 日本免费一区精品推荐| 国产精品亚洲二区在线看| 欧美老熟妇喷水| 成人午夜毛片| av免费网站在线免费观看| 精品女同一区二区三区免费战| 日本一区二区三区在线视频播放| 国产一区二区av免费观看| 人人人妻人人澡人人爽欧美一区| 97一区二区国产好的精华液| 1234.com麻豆性爰爱影| 粉嫩的极品女神尤物在线| 手机福利视频| 在线看片无码永久免费aⅴ| 扒下语文老师的丝袜美腿| 女人天堂av人禽交在线观看| 久久久受www免费人成| 久久精品无码一区二区三区蜜费| 中文字幕被公侵犯的丰满人妻| 人妻夜夜爽天天爽三区丁香花| 深夜福利小视频在线观看| 岛国熟女一区二区三区| 激情亚洲不卡一区二区| 一边做一边喷17p亚洲乱妇50p | 精品人妻少妇一区二区三区不卡| 久久中文字幕久久久久| 亚洲av无一区二区三区综合| 亚洲av日韩综合一区久热| 麻豆av传媒蜜桃天美传媒| 久久一二三四区中文字幕| 国产亚洲成人av一区| 丰满人妻av无码一区二区三区| 91日本在线精品高清观看| 国产白色视频在线观看| 国产精品第一国产精品| 国产一级在线现免费观看| 精品婷婷国产综合久久| 久久综合亚洲色hezyo国产|