收者沒有所需OS或應(yīng)用程序時(shí),他/她能夠通過捕捉到的圖像重播該對象。呈現(xiàn)共享對象的星系內(nèi)容將在下面進(jìn)行進(jìn)一步解釋。
[0072]需注意,給出的顯示屬性和內(nèi)容是以“在哪里”方面中指定的背景下進(jìn)行捕捉的。因此,它們不可能被具有不同上下文的參與者直接使用。為解決這一問題,屏幕內(nèi)容共享控制服務(wù)器提供轉(zhuǎn)化和修剪共享屏幕描述的服務(wù),從而具有不同上下文的接收者能夠在其顯示器上恰當(dāng)?shù)仫@示共享屏幕。呈現(xiàn)和重播屏幕的詳細(xì)內(nèi)容將在下面的部分進(jìn)行說明。
[0073]圖3描述了圖2中屏幕的完整描述300的例子,而圖4A、4B、4C、4D和4E為屏幕對象更新的描述的例子特別地,具有特權(quán)的接收者能夠改變對象(圖4A至4D)的控制信息或改變對象(圖4E)中播放或顯示的真實(shí)內(nèi)容。在這些例子中,屏幕描述以明文給出。但在實(shí)際中,可擴(kuò)展標(biāo)記語言(簡稱XML)能夠用于指定這些屬性。屏幕描述可以為屏幕的完整抽象或已發(fā)布屏幕內(nèi)容的更新。
[0074]例如,Alice發(fā)布了其屏幕(圖2左側(cè))的完整描述(圖3中)。如圖3所示,這是多對多會話。此外,共享屏幕上有四個(gè)屏幕對象,包括:一個(gè)桌面,其為圖2中的屏幕描述樹的根,記事本窗口,IE窗口以及包含在IE窗口中的菜單。記事本窗口設(shè)置為組2可編輯,而除創(chuàng)建者以外的其他參與者只能觀看其他對象。由于這四個(gè)對象均不包含多媒體信息,所有同步屬性均為空白。
[0075]在共享屏幕中,Bob打開新窗口并發(fā)布這一變化,如圖4A中的描述400A中所描述。所發(fā)布的對象為文字文件且放在屏幕的頂端。該對象的內(nèi)容位于(U R L:) /HelloGroupl.docx。Bob還捕捉該對象的像素圖并存儲到(URL: )/001305E4_l.jpg。這一變化被設(shè)置為該會話中的每個(gè)人均可見。之后,Bob想改變新對象的特權(quán),使其只能被組I查看。他發(fā)布如圖4B中所示的描述400B,指示特權(quán)的變化。Bob還改變了窗口的大小并向下滾動(dòng)。這些變化通過圖4C和4D中的描述400C和400D進(jìn)行公開。需注意,當(dāng)對象的視圖變化時(shí),例如,調(diào)整窗口的大小,為具有有限能力的接收者捕捉并記錄新像素圖。
[0076]系統(tǒng)模型
[0077]屏幕內(nèi)容共享框架由四個(gè)組件構(gòu)成:具有各種能力(應(yīng)用程序側(cè))的端主機(jī);控制面,處理更新發(fā)布相關(guān)事情;業(yè)務(wù)面,提供一組服務(wù)器以使屏幕共享更加靈活且適應(yīng)不同上下文;
[0078]數(shù)據(jù)面,協(xié)助傳輸對象內(nèi)容。所述業(yè)務(wù)面提供的服務(wù)包括維持會話視圖描述、自適應(yīng)地修剪會話視圖描述以基于所述端主機(jī)的計(jì)算上下文和網(wǎng)絡(luò)上下文對所述視圖描述進(jìn)行分組。此外,對于零客戶端,所述業(yè)務(wù)面基于組視圖描述生成像素圖,并將壓縮的視頻發(fā)送給所述零客戶端。
[0079]圖5呈現(xiàn)了屏幕內(nèi)容共享框架的結(jié)構(gòu)和四個(gè)組件間的通信情況。需注意,圖5描述了胖客戶端、瘦客戶端和零客戶端三種客戶端來解釋框架如何自適應(yīng)地服務(wù)具有不同能力和上下文的客戶端。不同客戶端的對應(yīng)上下文和能力概括如下:
[0080]胖客戶端:常規(guī)OS JnMS Windows,Mac 0S、Linux等;處理文本、圖像、視頻和其他常規(guī)格式文件的常見應(yīng)用程序,如MS word、MAC iWork、Ubuntu vim等。
[0081 ]瘦客戶端:修剪后的OS,如1S、Android等;具有一定圖形處理能力的媒體播放器。
[0082]零客戶端:B1s和具有有限圖形處理能力的媒體播放器。
[0083]控制面501、業(yè)務(wù)面503和數(shù)據(jù)面502可在數(shù)據(jù)中心的同一個(gè)端主機(jī)上實(shí)現(xiàn)。但這三個(gè)面在邏輯上可分開,以避免網(wǎng)絡(luò)僵化并提高傳輸效率。下面對在信息為中心的網(wǎng)絡(luò)(簡稱ICN)中建立這三個(gè)面的方法進(jìn)行討論,但所述構(gòu)架的實(shí)現(xiàn)并不限于ICN。
[0084]圖5描述了根據(jù)一實(shí)施例的四個(gè)示例性組件的功能和其間通信。如圖5所述,胖客戶端504發(fā)布了描述,其為完整屏幕描述或現(xiàn)有共享屏幕的變化。
[0085](I)他/她發(fā)送消息通知所述控制面501他/她具有更新。該消息可以為摘要,包括描述的哈希以及用在命名的數(shù)據(jù)組網(wǎng)[4]中的發(fā)布者ID和時(shí)間戳。
[0086](2)所述控制面501通知其他參與者,即該例中的瘦客戶端505和零客戶端506,關(guān)于該更新的情況以及所述發(fā)布者ID。
[0087](3)這兩個(gè)參與者(如所述客戶端505和506)將對該更新的興趣發(fā)送給所述業(yè)務(wù)面中的屏幕內(nèi)容共享處理服務(wù)器。
[0088](4)屏幕內(nèi)容共享服務(wù)器503請求并接收來自發(fā)布者(如所述客戶端504)的有關(guān)該更新的具體描述。
[0089](5)基于端主機(jī)的計(jì)算上下文,所述屏幕內(nèi)容共享服務(wù)器503可基于所述瘦客戶端的特權(quán)修剪接收到的描述,并將處理后的描述發(fā)送給所述瘦客戶端505。
[0090](6)所述瘦客戶端505能夠從其角度通過接收的屏幕描述和來自業(yè)務(wù)路由器的必要內(nèi)容組裝共享屏幕。
[0091](7)另一方面,對于不能組裝共享屏幕的所述零客戶端506,所述屏幕內(nèi)容共享控制服務(wù)器組裝屏幕、以一定采樣率捕捉所述屏幕的像素圖,并將所述像素圖作為流式視頻發(fā)送給所述零客戶端506。
[0092](8)此外,可通過獨(dú)立的數(shù)據(jù)包收集和更新鼠標(biāo)移動(dòng),并在呈現(xiàn)階段將其集成到共享屏幕中。
[0093]從圖5所示例子可知,自適應(yīng)共享屏幕的主要流程概括為三個(gè)步驟:信息收集和屏幕描述生成、描述和內(nèi)容的發(fā)布及傳輸、屏幕呈現(xiàn)和參與者的同步。每一階段完成的任務(wù)及涉及到的組件概括如下:
[0094]信息收集和屏幕描述生成:
[0095]-收集屏幕上所有對象的屬性以識別現(xiàn)有對象的變化;
[0096]-使用收集到的屬性生成標(biāo)準(zhǔn)格式的屏幕描述;
[0097]-對于胖客戶端,這些任務(wù)可由其本身完成,而對于瘦客戶端和零客戶端,這些任務(wù)由屏幕內(nèi)容共享控制服務(wù)器遠(yuǎn)程完成。
[0098]描述和內(nèi)容的發(fā)布及傳輸:
[0099]-發(fā)布者通過發(fā)送摘要通知所述控制面501關(guān)于更新的情況;
[0100]-所述控制面501將所述摘要分發(fā)給會話的所有參與者;
[0101]-所述參與者發(fā)送興趣到所述業(yè)務(wù)面503中的屏幕內(nèi)容共享控制服務(wù)器;
[0102]-屏幕內(nèi)容共享控制服務(wù)器(如,控制服務(wù)器503)檢查所請求的更新是否在本地復(fù)制;若還未在本地復(fù)制,則聯(lián)系這些更新的發(fā)布者并檢索所述更新;
[0103]-所述屏幕內(nèi)容共享控制服務(wù)器503隨后修剪接收到的會話視圖描述以基于端主機(jī)的上下文將所述視圖描述進(jìn)行分組,并將修剪后的描述發(fā)送給客戶端;
[0104]-特別地,若端主機(jī)為零客戶端,則所述屏幕內(nèi)容共享控制服務(wù)器503將屏幕作為像素圖視頻進(jìn)行捕捉并記錄,最后將所述像素圖以流式視頻形式發(fā)送給零客戶端。
[0105]屏幕呈現(xiàn)和參與者的同步:
[0106]-胖客戶端和瘦客戶端在接收到組視圖描述后可能需要請求來自數(shù)據(jù)面的一定內(nèi)容;當(dāng)它們得到所有必要內(nèi)容時(shí),即準(zhǔn)備通過相應(yīng)應(yīng)用程序或屏幕內(nèi)容共享描述播放器在其桌面上呈現(xiàn)屏幕;
[0107]-可將PST或其他時(shí)間戳嵌入描述中以協(xié)助多個(gè)端主機(jī)間的同步。
[0108]現(xiàn)轉(zhuǎn)向圖6,其描述了為示例性屏幕內(nèi)容共享控制服務(wù)器的具體結(jié)構(gòu),包括胖/瘦/零客戶端。具有屏幕內(nèi)容共享消息處理器605的屏幕內(nèi)容共享控制服務(wù)器612接收四種消息:控制消息、屏幕描述、鼠標(biāo)移動(dòng)消息和內(nèi)容數(shù)據(jù)包。所述屏幕內(nèi)容共享消息處理器處理這些消息,將屬性傳給其他模塊,并將
[0109]合適響應(yīng)發(fā)送給胖客戶端604和瘦客戶端603、將視頻流發(fā)送給零客戶端602。當(dāng)接收到來自客戶端的對屏幕描述的請求時(shí),所述屏幕內(nèi)容共享消息處理器檢查該描述是否在本地存儲器復(fù)制。若否,則所述屏幕內(nèi)容共享消息處理器將該請求轉(zhuǎn)發(fā)到合適的網(wǎng)絡(luò)位置并保留發(fā)送該請求的客戶端的上下文信息。之后將該信息傳到會話屏幕描述生成器。
[0110]當(dāng)接收到所請求描述的響應(yīng)時(shí),所述消息處理器將其傳給屏幕更新器609。所述消息處理器還負(fù)責(zé)將鼠標(biāo)移動(dòng)信息傳給鼠標(biāo)移動(dòng)消息處理器612。
[0111]另外,所述消息處理器協(xié)助所述零客戶端602請求屏幕內(nèi)容,接收到的屏幕內(nèi)容將傳到虛擬OS 608。此外,所述屏幕內(nèi)容共享消息處理器將壓縮的像素圖視頻流式傳給請求屏幕內(nèi)容的所述零客戶端602。
[0112]所述鼠標(biāo)移動(dòng)處理器612從鼠標(biāo)移動(dòng)消息中提取鼠標(biāo)位置,并將這些屬性傳到所述屏幕更新器609。
[0113]所述屏幕更新器609基于接收到的屏幕描述、更新消息和鼠標(biāo)屬性更新會話視圖屏幕描述611。更新的會話視圖屏幕描述連同鼠標(biāo)位置一起用于生成組視圖屏幕描述。此夕卜,所述會話視圖屏幕描述611將在本地存儲器中緩存一定時(shí)間以節(jié)省重復(fù)的下載工作和離線網(wǎng)絡(luò)開銷。
[0114]組視圖描述生成器610基于客戶端的組ID以及為所述會話視圖屏幕描述611中的每個(gè)屏幕對象設(shè)置的特權(quán)來修剪會話視圖屏幕描述。若請求描述的客戶端為所述胖客戶端604或所述瘦客戶端603,則通過所述屏幕內(nèi)容共享消息處理器605將修剪后的組視圖描述發(fā)送給所述請求客戶端?;蛘?,若請求客戶端為所述零客戶端602,則將修剪后的組視圖描述傳給所述虛擬OS以生成像素圖視頻。
[0115]所述虛擬OS608、屏幕像素圖生成器607和屏幕像素圖壓縮模塊606基于組視圖描述和所述屏幕內(nèi)容共享消息處理器605檢索出的內(nèi)容恢復(fù)屏幕,
[0116]將所述屏幕作為像素圖進(jìn)行捕捉,