112的特定內(nèi)容可具有不同特征,以2D/3D動(dòng)畫1114為例,該內(nèi)容可從所述第一可視化組件中獲取,再壓縮并從所述第一可視化組件傳送至所述遠(yuǎn)程計(jì)算設(shè)備120。為了方便說明,該內(nèi)容被稱為“第三可視化組件”,也是由所述處理器生成且保存在所述幀緩沖存儲(chǔ)器112中,但可能會(huì)有不同特征,如所述2D/3D動(dòng)畫1114。
[0021]在當(dāng)今的大多數(shù)桌面/屏幕共享應(yīng)用中,所述本地計(jì)算設(shè)備110通過壓縮所述幀緩沖存儲(chǔ)器112中保存的像素?cái)?shù)據(jù),并將壓縮的所述像素?cái)?shù)據(jù)發(fā)送給遠(yuǎn)程計(jì)算設(shè)備120來實(shí)現(xiàn)與所述遠(yuǎn)程計(jì)算設(shè)備120共享可視化組件。根據(jù)GPU的設(shè)計(jì),所述幀緩沖存儲(chǔ)器112不可以保存上述視頻組件或圖像組件,因此,可能會(huì)在所述遠(yuǎn)程計(jì)算設(shè)備上看到黑色/白色區(qū)域。然而,由于這些黑色/白色區(qū)域會(huì)被視頻和/或圖像等實(shí)際的解壓數(shù)據(jù)填滿,所以它們不會(huì)出現(xiàn)在所述本地計(jì)算設(shè)備的顯示器上。因此,這類屏幕/桌面共享方案不夠令人滿意而且從商品角度來說在多數(shù)情況下不被認(rèn)可。然而,可能有程序能夠獲得所述第一可視化組件和所述第二可視化組件實(shí)現(xiàn)屏幕共享?;旧希@類解決方案會(huì)首先將先前壓縮的視頻文件和/或圖像文件進(jìn)行解壓,在將它們壓縮成視頻流提供給所述遠(yuǎn)程計(jì)算設(shè)備120之前,將它們和所述第一可視化組件1112(文本/圖形/動(dòng)畫)的像素?cái)?shù)據(jù)添加在一起。根據(jù)第二種方法,先前壓縮的視頻文件和圖像文件會(huì)作為屏幕內(nèi)容的一部分被解壓然后進(jìn)行再壓縮。因此,這讓屏幕內(nèi)容壓縮變得尤為復(fù)雜而且通常會(huì)導(dǎo)致壓縮性能不佳。這主要是因?yàn)槠聊还蚕響?yīng)用通常需要實(shí)時(shí)的處理和壓縮。既然這些視頻和圖像在到達(dá)所述本地計(jì)算設(shè)備110之前已經(jīng)被壓縮,為實(shí)現(xiàn)屏幕共享對(duì)其進(jìn)行再壓縮并不是一個(gè)良好的工程解決方案。
[0022]如圖4所示,所述本地計(jì)算設(shè)備110上顯示的可視化組件包括所述第一可視化組件1112、所述視頻可視化組件1111、所述圖像組件1113以及從第一可視化組件1112中獲取的所述第三可視化組件1114??蓪?duì)每個(gè)可視化組件分別進(jìn)行不同處理,而不是將所有可視化組件壓縮成視頻流然后與所述遠(yuǎn)程計(jì)算設(shè)備共享該視頻流。例如,由所述處理器生成的保存在所述幀緩沖存儲(chǔ)器112中的所述第一可視化組件1112可以被壓縮為分別來自其他可視化組件的數(shù)據(jù)的視頻流。先前被壓縮的所述第二可視化組件,如所述視頻可視化組件1111的壓縮視頻文件或所述圖像可視化組件1113的壓縮圖像文件,可以通過給所述遠(yuǎn)程計(jì)算設(shè)備120發(fā)送所述壓縮視頻文件或所述壓縮圖像文件等壓縮文件,從而為所述遠(yuǎn)程計(jì)算設(shè)備120所共享,而無需經(jīng)過解壓/再壓縮的過程。再比如,從所述第一可視化組件中獲取的第三可視化組件可以與背景組件分開進(jìn)行壓縮。對(duì)不同可視化內(nèi)容進(jìn)行不同處理的主要原因有:(I)它們的特征可能完全不同,因此單個(gè)視頻編解碼器可能會(huì)導(dǎo)致壓縮性能不佳;(2)其中一些可視化內(nèi)容在到達(dá)電腦時(shí)已經(jīng)被壓縮過,例如,壓縮為MPEG1/MPEG2/VC8/JPEG/JPEG2k等的視頻和圖像,因此對(duì)它們進(jìn)行重新編碼造成了計(jì)算資源浪費(fèi),而且重新編碼意味著降低視覺質(zhì)量。這樣,上述實(shí)施例有助于提升編碼效率,提高編碼質(zhì)量,并降低比特率。
[0023]參見圖5,所述本地計(jì)算設(shè)備110的存儲(chǔ)器111 (圖5中未顯示所述存儲(chǔ)器)存儲(chǔ)有操作系統(tǒng)1167,壓縮文件1166,如視頻文件和/或圖像文件,以及屏幕共享應(yīng)用1164。所述屏幕共享應(yīng)用1164包括像素?cái)?shù)據(jù)獲得模塊1161、元數(shù)據(jù)獲取模塊1169、檢測(cè)模塊1170、壓縮模塊1162、壓縮數(shù)據(jù)獲取模塊1165和發(fā)送模塊1163。
[0024]參見圖5、圖6A和圖6B,這些圖描述了一個(gè)實(shí)現(xiàn)屏幕共享的實(shí)施例。
[0025]所述像素?cái)?shù)據(jù)獲得模塊1161從所述幀緩沖存儲(chǔ)器112處獲得第一可視化組件的像素?cái)?shù)據(jù)(步驟601)。所述像素?cái)?shù)據(jù)獲得模塊1161可以以合適的速率和分辨率(例如,符合MPEG的幀速率和分辨率)對(duì)可視化組件的像素?cái)?shù)據(jù)進(jìn)行采樣。
[0026]所述壓縮模塊1162對(duì)獲得到的所述像素?cái)?shù)據(jù)進(jìn)行壓縮以創(chuàng)建能夠適應(yīng)網(wǎng)絡(luò)的帶寬限制和遠(yuǎn)程計(jì)算設(shè)備允許的最大數(shù)據(jù)速率的視頻流,而不是直接發(fā)送獲得到的所述像素?cái)?shù)據(jù)(步驟602)。壓縮格式可以為MPEG (運(yùn)動(dòng)圖像專家組)格式,或任何所述遠(yuǎn)程計(jì)算設(shè)備支持的壓縮格式和/或媒體流格式。具體地,如圖7所示,所述壓縮模塊1162可包括第一編碼器1131,用于對(duì)第一可視化組件1112進(jìn)行壓縮,以及第二編碼器1132,用于對(duì)從所述第一可視化組件1112中獲取的第三可視化組件進(jìn)行壓縮。所述第一編碼器壓縮的第一可視化組件的像素?cái)?shù)據(jù)形成視頻流,所述第二編碼器壓縮的第三可視化組件的像素?cái)?shù)據(jù)形成與所述第一可視化組件的視頻流分離的其它視頻流。當(dāng)所述壓縮模塊1162壓縮所述第一可視化組件時(shí),將被區(qū)別處理的屏幕上的其它可視化組件占用的區(qū)域可以由表示任何紋理(如線條)、平場(chǎng)或文本的任意顏色的像素填充,只要它們有助于降低整個(gè)第一可視化組件的總比特率。類似地,若第三可視化組件與所述第一可視化組件被分開壓縮和發(fā)送,屏幕上所述第三可視化組件占用的區(qū)域也可以由表示任何紋理(如線條)、平場(chǎng)或文本的任意顏色的像素填充,只要它們有助于降低整個(gè)第一可視化組件的總比特率。
[0027]所述檢測(cè)模塊1170確定所述本地計(jì)算設(shè)備110的屏幕將會(huì)顯示所述第二可視化組件,例如視頻可視化組件或圖像可視化組件(步驟603)。所述視頻可視化組件和所述圖像可視化組件都是由壓縮數(shù)據(jù)解壓而得到的。有許多方法可以用來進(jìn)行所述確定。例如,當(dāng)檢測(cè)到用戶發(fā)出指令以打開壓縮文件。又例如,所述檢測(cè)模塊可基于所述壓縮數(shù)據(jù)被GPU114或者專用解碼器113解壓或者所述壓縮數(shù)據(jù)被解壓并保存在所述幀緩沖存儲(chǔ)器112中來進(jìn)行判定。
[0028]所述壓縮數(shù)據(jù)獲取模塊1165從所述本地計(jì)算設(shè)備的存儲(chǔ)器中獲取所述壓縮數(shù)據(jù)(步驟604)。一旦步驟603進(jìn)行了所述確定,所述本地計(jì)算設(shè)備110會(huì)獲取所述壓縮數(shù)據(jù)并且準(zhǔn)備將其發(fā)送至所述遠(yuǎn)程計(jì)算設(shè)備120。
[0029]為了以與不同的可視化組件在所述本地計(jì)算設(shè)備110上顯示的顯示方式相同的方式在所述遠(yuǎn)程計(jì)算設(shè)備120上顯示這些不同的可視化組件,所述元數(shù)據(jù)獲取模塊1169可獲取包括時(shí)間信息和/或位置信息的元數(shù)據(jù)1120 (步驟605和606)。所述時(shí)間信息可包括時(shí)間戳、開始、結(jié)束、時(shí)長(zhǎng)等信息,用于同步不同的可視化組件,所述位置信息,例如x_y坐標(biāo),指示可視化組件的顯示位置。更具體地說,所述位置信息可指示所述第一可視化組件、所述第二可視化組件(所述視頻可視化組件和/或所述圖像可視化組件)以及所述第三可視化組件的顯示位置。所述位置信息還可包括每個(gè)可視化組件的透明度信息以及有關(guān)這些可視化組件的排列的其他信息,這些關(guān)于排列的信息構(gòu)成了所述遠(yuǎn)程計(jì)算設(shè)備120的顯示器上顯示的最終組成。例如,所述元數(shù)據(jù)還可包括一個(gè)或多個(gè)可視化組件的許可信息。每個(gè)可視化組件均可攜帶所述許可信息;因此,所述本地計(jì)算設(shè)備110的擁有者能夠控制將哪個(gè)可視化組件共享給所述遠(yuǎn)程計(jì)算設(shè)備120 ο這一特征非常實(shí)用,可以在屏幕共享應(yīng)用中將一些可視化組件隱藏起來以保護(hù)隱私。所述元數(shù)據(jù)包括位置信息、時(shí)間信息以及其它構(gòu)成最終組成的要素,可來自于提供作為部分或者全部屏幕顯示內(nèi)容的單獨(dú)的軟件應(yīng)用,也可以由所述操作系統(tǒng)自身提供。
[0030]所述發(fā)送模塊1163向所述遠(yuǎn)程計(jì)算設(shè)備120發(fā)送所述第一可視化組件的視頻流、所述視頻可視化組件的視頻文件的視頻流、所述圖像可視化組件的圖像文件的視頻流、所述第三可視化組件的視頻流以及所述元數(shù)據(jù)1200 (步驟607)。如圖7所示,所述本地計(jì)算設(shè)備110可以將所述第一可視化組件的視頻流、所述視頻可視化組件的視頻文件的視頻流、所述圖像可視化組件的圖像文件的視頻流、所述第三可視化組件的視頻流以及所述元數(shù)據(jù)1200復(fù)用為一個(gè)數(shù)據(jù)流(也可稱之為視頻流),然后再將所述數(shù)據(jù)流發(fā)送到所述遠(yuǎn)程計(jì)算設(shè)備120??梢酝ㄟ^復(fù)用流或獨(dú)立的通道將所述元數(shù)據(jù)1200和所述可視化組件的編碼/壓縮數(shù)據(jù)共享給所述遠(yuǎn)程計(jì)算設(shè)備120,從而實(shí)現(xiàn)各組件的最佳傳送。例如,所述背景組件的視頻流只可以被共享一次,而其他組件、所述視頻文件的視頻流、或視頻組件的視頻流或所述分離組件的視頻流可以以流傳輸?shù)姆绞蕉ㄆ诘厣踔吝B續(xù)地傳送。
[0031]參見圖6B和圖8,所述遠(yuǎn)程計(jì)算設(shè)備120接收包含有所述第一可視化組件的視頻流、所述視頻可視化組件的視頻文件的視頻流、所述圖像可視化組件的圖像文件的視頻流以及所述元數(shù)據(jù)1200的數(shù)據(jù)流(步驟608)。此時(shí),所述第三可視化組件是從