亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

支持降低的網(wǎng)絡(luò)帶寬使用的跨幀漸進損壞的制作方法

文檔序號:7859416閱讀:134來源:國知局
專利名稱:支持降低的網(wǎng)絡(luò)帶寬使用的跨幀漸進損壞的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)處理,尤其涉及處理和傳送圖形數(shù)據(jù)的技術(shù)。
背景技術(shù)
遠程計算系統(tǒng)可使用戶能夠遠程地訪問托管資源。遠程計算系統(tǒng)上的服務(wù)器可執(zhí)行程序并將指示用戶界面的信號發(fā)送到可通過經(jīng)由符合諸如TCP/IP協(xié)議等通信協(xié)議的網(wǎng)絡(luò)發(fā)送信號來連接的客戶機。可向每個連接客戶機提供遠程呈現(xiàn)會話,即,包括一組資源的執(zhí)行環(huán)境??蛻魴C可使用諸如遠程桌面協(xié)議(RDP)等遠程呈現(xiàn)協(xié)議來連接到服務(wù)器資源。在遠程呈現(xiàn)會話中,客戶機發(fā)送服務(wù)器本地接收的輸入,諸如鼠標光標移動和鍵盤按壓。進而,服務(wù)器接收這一輸入并執(zhí)行與其相關(guān)聯(lián)的處理,諸如執(zhí)行用戶會話中的應(yīng)用。當服務(wù)器執(zhí)行導致輸出(諸如圖形輸出)的處理時,服務(wù)器將這一輸出發(fā)送到客戶機以供呈現(xiàn)。以此方式,當應(yīng)用實際上在服務(wù)器上執(zhí)行時,應(yīng)用對客戶機的用戶表現(xiàn)為在客戶機上本地執(zhí)行。此外,在遠程呈現(xiàn)會話中,表示將要傳送給客戶機的圖形的數(shù)據(jù)通常由服務(wù)器壓縮,通過網(wǎng)絡(luò)從服務(wù)器傳送到客戶機,并由客戶機解壓縮并且顯示在本地用戶顯示器上。盡管對于服務(wù)器存在用來壓縮圖形數(shù)據(jù)并通過網(wǎng)絡(luò)傳送到客戶機的已知技術(shù),但也存在許多未解決的問題。例如,當網(wǎng)絡(luò)帶寬限制可向客戶機傳送的圖形數(shù)據(jù)的大小時引發(fā)問題,導致網(wǎng)絡(luò)等待時間以及負面的遠程用戶體驗。各種方案可用來在遠程呈現(xiàn)會話中最小化需要被編碼和發(fā)送到遠程計算設(shè)備的圖形數(shù)據(jù)的大小。這樣的方案可包括將圖形數(shù)據(jù)分成各部分,并且僅編碼和傳送自先前傳輸以來已改變的各部分。然而,這樣的方案不考慮可用網(wǎng)絡(luò)帶寬和要處理的數(shù)據(jù)量,并且獨立于可用網(wǎng)絡(luò)帶寬和要處理的數(shù)據(jù)量而被應(yīng)用。由此,這樣的方案沒有最優(yōu)地解決網(wǎng)絡(luò)等待時間及其對遠程用戶體驗的負面影響的問題。

發(fā)明內(nèi)容
在各實施例中,公開了用于通過執(zhí)行各種漸進編碼和損壞方案來優(yōu)化圖形數(shù)據(jù)的處理和傳輸?shù)姆椒ê拖到y(tǒng)。當網(wǎng)絡(luò)帶寬有限和/或要處理的數(shù)據(jù)量大時,漸進編碼和損壞減少了網(wǎng)絡(luò)帶寬使用和幀等待時間。例如,當使用漸進編碼和損壞方案時,圖形數(shù)據(jù)幀被分成數(shù)據(jù)區(qū)域,并且每一數(shù)據(jù)區(qū)域以特定質(zhì)量來編碼并傳送到客戶機。數(shù)據(jù)區(qū)域可在包含自然圖形的區(qū)域和包含文本圖像的區(qū)域之間被進一步劃分。圖形數(shù)據(jù)幀中每一數(shù)據(jù)區(qū)域的質(zhì)量可隨著圖形數(shù)據(jù)幀被更新而漸進地被改進。質(zhì)量也可取決于可用網(wǎng)絡(luò)帶寬和要處理的數(shù)據(jù)量而被動態(tài)地調(diào)整。此外,為確保圖形數(shù)據(jù)的一致性,僅在達到當前圖形數(shù)據(jù)幀的特定質(zhì)量之后,才處理未來圖形數(shù)據(jù)幀。然而,當圖形數(shù)據(jù)幀被更新、并且當呈現(xiàn)在用戶顯示器上時圖形數(shù)據(jù)幀內(nèi)的一部分數(shù)據(jù)區(qū)域?qū)⒉辉賹h程用戶可見時,優(yōu)選地損壞該部分并且不對其進行編碼或傳送。此外,當數(shù)據(jù)區(qū)域的質(zhì)量達到100%時,數(shù)據(jù)區(qū)域可被標記成具有全保真并且可由客戶機計算機來高速緩存。最終,為確保圖形數(shù)據(jù)區(qū)域中所包含的文本圖像的可讀性,漸進編碼和損壞方案可僅應(yīng)用于包含自然圖像而非文本圖像的數(shù)據(jù)區(qū)域。作為漸進和損壞方案的結(jié)果,用戶體驗到自然圖像質(zhì)量隨著包含與圖像有關(guān)的信息的每一幀而逐漸改進,同時能夠閱讀和理解文本圖像。各種漸進編碼和損壞方案提供各種益處(取決于系統(tǒng)),包括減少網(wǎng)絡(luò)帶寬使用,而對用戶體驗影響最?。辉趯Σ煌聊徊糠诌M行無縫編碼中支持多個漸進和非漸進的編解碼器;支持按多個質(zhì)量級來對具有自然圖像的屏幕區(qū)域進行漸進編碼;通過不把不必要的數(shù)據(jù)部分編碼成高質(zhì)量來支持數(shù)據(jù)損壞;以及基于可用網(wǎng)絡(luò)帶寬和要編碼的數(shù)據(jù)量來對漸進編碼和損壞進行動態(tài)調(diào)整。除了上述方面,構(gòu)成本公開的一部分的權(quán)利要求、附圖
、以及文本還描述了其他方面。本領(lǐng)域技術(shù)人員之一可理解,本公開的一個或更多個方面可包括但不限于用于實現(xiàn)本公開的本文所提及的各方面的電路和/或編程;該電路和/或編程實質(zhì)上可以是配置成實現(xiàn)本文所提及的方面的硬件、軟件和/或固件的任何組合,這取決于系統(tǒng)設(shè)計者的設(shè)計選擇。提供本發(fā)明內(nèi)容以便以簡化形式介紹將在以下詳細描述中進一步描述的一些概念。本發(fā)明內(nèi)容并不旨在標識所要求保護主題的關(guān)鍵特征或必要特征,也不旨在用于限制所要求保護主題的范圍。此外,所要求保護的主題不限于解決在本公開的任一部分中所提及的任何或所有缺點的實現(xiàn)。附圖簡述圖I描繪其中可實現(xiàn)本發(fā)明的各方面的示例計算機系統(tǒng)。圖2描繪其中可實現(xiàn)本發(fā)明的各實施例的遠程呈現(xiàn)會話客戶機和服務(wù)器的輸入系統(tǒng)的示例體系結(jié)構(gòu)。圖3描繪了用于實施本公開的各方面的操作環(huán)境。圖4描繪其中可實現(xiàn)本發(fā)明的各實施例的示例遠程呈現(xiàn)會話服務(wù)器。圖5示出了此處公開的過程中的某一些的概覽。圖6和7示出了被分成各數(shù)據(jù)區(qū)域和部分以供壓縮的遠程用戶屏幕。圖8示出了用于處理要傳送到客戶計算機的圖形數(shù)據(jù)的操作過程的示例。圖9示出了用于處理要傳送到客戶計算機的圖形數(shù)據(jù)的示例系統(tǒng)和計算機可讀介質(zhì)。
具體實施例方式在以下描述和附圖中闡明了某些具體細節(jié),以提供對本公開的各個實施例的全面理解。通常與計算和軟件技術(shù)相關(guān)聯(lián)的某些公知細節(jié)不在以下公開中描述,以避免不必要地使本公開的各實施例晦澀難懂。此外,相關(guān)領(lǐng)域的普通技術(shù)人員會理解,他們可以無需以下描述的細節(jié)中的一個或多個而實現(xiàn)本公開的其它實施例。最后,盡管在以下公開中參考了步驟和序列來描述各個方法,但是如此的描述是為了提供本公開的實施例的清楚實現(xiàn),且步驟以及步驟序列不應(yīng)被認為是實現(xiàn)本公開所必需的。應(yīng)該理解,此處描述的各種技術(shù)可以結(jié)合硬件或軟件,或在適當時結(jié)合兩者的組合來實現(xiàn)。因此,本公開的方法和裝置或其某些方面或部分,可以采用包含在諸如軟盤、CD-ROM、硬盤驅(qū)動器或任何其它機器可讀存儲介質(zhì)等有形介質(zhì)中的程序代碼(S卩,指令)的形式,其中,當程序代碼被加載至諸如計算機等機器并由其運行時,該機器成為用于實現(xiàn)本公開的裝置。在程序代碼在可編程計算機上執(zhí)行的情況下,計算設(shè)備通常包括處理器、該處理器可讀的存儲介質(zhì)(包括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入設(shè)備、以及至少一個輸出設(shè)備。一個或多個程序可以例如,通過使用API、可重用控件等來實現(xiàn)或利用結(jié)合本發(fā)明描述的過程。這樣的程序優(yōu)選地用高級過程語言或面向?qū)ο缶幊陶Z言來實現(xiàn),以與計算機系統(tǒng)通信。然而,如果需要,該程序可以用匯編語言或機器語言來實現(xiàn)。在任何情形中,語言可以是編譯語言或解釋語言,且與硬件實現(xiàn)相結(jié)合。貫穿本公開使用的術(shù)語電路可包括諸如硬件中斷控制器、硬盤驅(qū)動器、網(wǎng)絡(luò)適配器、圖形處理器、基于硬件的視頻/音頻編解碼器等硬件組件,以及用于操作這些硬件的固件/軟件。術(shù)語電路還可包括被配置成通過固件或通過開關(guān)集來以特定方式執(zhí)行功能的微處理器,或一個或多個邏輯處理器,例如,多核通用處理單元的一個或多個核。此示例中的邏輯處理器可以通過從存儲器,例如,RAM、ROM、固件和/或虛擬存儲器中加載的體現(xiàn)可操作以執(zhí)行功能的邏輯的軟件指令來配置。在其中電路包括硬件和軟件的組合的示例實施例中,實現(xiàn)者可以編寫具體化邏輯的源代碼,該源代碼隨后被編譯成可由邏輯處理器執(zhí)行的機器可讀代碼。因為本領(lǐng)域技術(shù)人員可以明白現(xiàn)有技術(shù)已經(jīng)進化到硬件、軟件或硬件/軟件的組合之間幾乎沒有差別的地步,因而選擇硬件還是軟件來實現(xiàn)功能只是一個設(shè)計選擇。因此,由于本領(lǐng)域的技術(shù)人員可以理解軟件進程可被變換成等效的硬件結(jié)構(gòu),且硬件結(jié)構(gòu)本身可被變換成等效的軟件進程,因此選擇硬件實現(xiàn)或是軟件實現(xiàn)留給了實現(xiàn)者。本發(fā)明的各實施例可以在一臺或多臺計算機上執(zhí)行。圖I以及下面的討論旨在提供其中可以實現(xiàn)本發(fā)明的合適的計算環(huán)境的簡要的一般說明。本領(lǐng)域技術(shù)人員可以理解,計算機系統(tǒng)可具有本文在下面所描述的組件的某些或全部。圖I描繪了示例通用計算系統(tǒng)。通用計算系統(tǒng)可包括常規(guī)計算機20等,計算機20包括處理單元21。處理單元21可包括一個或多個處理器,它們中的每一個可具有一個或多個處理核。多核處理器(作為通常被稱為具有不止一個處理核的處理器)包括單個芯片封裝內(nèi)所包含的多個處理器。計算機20還可包括圖形處理單元(GPU) 90。GPU 90是被優(yōu)化以操縱計算機圖形的專用微處理器。處理單元21可將工作卸載到GPU 90。GPU 90可以具有其自己的圖形存儲器,和/或可以訪問系統(tǒng)存儲器22的一部分。如處理單元21那樣,GPU 90可包括一個或多個處理單兀,每一個都具有一個或多個核。計算機20還可包括系統(tǒng)存儲器22和系統(tǒng)總線23,其中在系統(tǒng)存儲器22中存儲用于實現(xiàn)本發(fā)明各方面的至少一部分編程,系統(tǒng)總線23在系統(tǒng)處于操作狀態(tài)時將包括系統(tǒng)存儲器22在內(nèi)的各個系統(tǒng)組件在通信上耦合到處理單元21。系統(tǒng)存儲器22可包括只讀存儲器(ROM) 24和隨機存取存儲器(RM) 25?;据斎?輸出系統(tǒng)26 (BIOS)被存儲在ROM 24中,該基本輸入/輸出系統(tǒng)26包含了諸如在啟動期間幫助在計算機20內(nèi)的元件之間傳輸信息的基本例程。系統(tǒng)總線23可以是若干類型的總線結(jié)構(gòu)中的任一種,包括實現(xiàn)各種總線體系結(jié)構(gòu)中的任一種的存儲器總線或存儲器控制器、外圍總線、以及局部總線。耦合到系統(tǒng)總線23的可以是直接存儲器存取(DMA)控制器80,該DMA控制器80被配置成獨立于處理單元21從存儲器讀取和/或?qū)懭氪鎯ζ?。另外,連接到系統(tǒng)總線23 (諸如存儲驅(qū)動器接口 32或磁盤驅(qū)動器接口 33)的設(shè)備可被配置成也是獨立于處理單元21從存儲器讀取和/或?qū)懭氪鎯ζ?,而無需使用DMA控制器80。計算機20還包括用于讀寫硬盤(未示出)或固態(tài)盤(SSD)(未示出)的存儲驅(qū)動器27、用于讀寫可移動磁盤29的磁盤驅(qū)動器28,以及用于讀寫諸如⑶ROM或其他光學介質(zhì)之類的可移動光盤31的光盤驅(qū)動器30。存儲驅(qū)動器27、磁盤驅(qū)動器28和光盤驅(qū)動器30被示為分別通過硬盤驅(qū)動器接口 32、磁盤驅(qū)動器接口 33和光盤驅(qū)動器接口 34來連接到系統(tǒng)總線23。驅(qū)動器及其相關(guān)聯(lián)的計算機可讀存儲介質(zhì)為計算機20提供了對計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊,及其他數(shù)據(jù)的非易失性存儲。雖然這里描述的示例環(huán)境采用硬盤、可移動磁盤29和可移動光盤31,但本領(lǐng)域技術(shù)人員應(yīng)理解,在該示例操作環(huán)境中也能使用可存儲能由計算機訪問的數(shù)據(jù)的其它類型的計算機可讀介質(zhì),如閃存卡、數(shù)字視頻盤、數(shù)字多功能盤((DVD)、隨機存取存儲器(RAM)、只讀存儲器(ROM)等。一般而言,在某些實施例中可使用這樣的計算機可讀存儲介質(zhì)來存儲實現(xiàn)本公開的各方面且可用于將計算機20轉(zhuǎn)換成專用計算設(shè)備的處理器可執(zhí)行指令。計算機20也可包括主適配器55,其通過小型計算機系統(tǒng)接口(SCSI)總線56連接到存儲設(shè)備62。包括計算機可讀指令的若干程序模塊可存儲在諸如硬盤、磁盤29、光盤31、R0M24或RAM 25之類的計算機可讀介質(zhì)上,包括操作系統(tǒng)35、一個或多個應(yīng)用程序36、其他程序模塊37、以及程序數(shù)據(jù)38。一旦由處理單元執(zhí)行,計算機可讀指令使得下文中更詳細描述的動作被執(zhí)行或使得各種程序模塊被實例化。用戶可以通過諸如鍵盤40和定點設(shè)備42之類的輸入設(shè)備向計算機20中輸入命令和信息。其他輸入設(shè)備(未示出)可包括話筒、游戲桿、游戲手柄、圓盤式衛(wèi)星天線、掃描儀等等。這些及其他輸入設(shè)備常常通過耦合到系統(tǒng)總線的串行端口接口 46連接到處理單元21,但是,也可以通過諸如并行端口、游戲端口、通用串行總線(USB)之類的其他接口來連接。顯示器47或其他類型的顯示設(shè)備也可以通過諸如視頻適配器48之類的接口連接到系統(tǒng)總線23。在各實施例中,顯示器47可包括對其進行多觸摸輸入的觸敏表面。除了顯示器47之外,計算機通常包括其他外圍輸出設(shè)備(未示出),如揚聲器和打印機。計算機20可使用到一個或多個遠程計算機(諸如,遠程計算機49)的邏輯連接而在聯(lián)網(wǎng)環(huán)境中操作。遠程計算機49可以是另一個計算機、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等設(shè)備或其它公共網(wǎng)絡(luò)節(jié)點,并通??砂ㄒ陨舷鄬τ谟嬎銠C20描述的許多或所有元件,但是在圖I中只示出存儲器存儲設(shè)備50。圖I中所描繪的邏輯連接可包括局域網(wǎng)(LAN) 51和廣域網(wǎng)(WAN)52。這樣的聯(lián)網(wǎng)環(huán)境在辦公室、企業(yè)范圍的計算機網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中是普遍的。當用于LAN聯(lián)網(wǎng)環(huán)境中時,計算機20可通過網(wǎng)絡(luò)接口或適配器53連接到LAN 51。當用于WAN聯(lián)網(wǎng)環(huán)境中時,計算機20可通常包括調(diào)制解調(diào)器54,或用于通過諸如因特網(wǎng)之類的廣域網(wǎng)52建立通信的其他手段??梢允莾?nèi)置的或外置的調(diào)制解調(diào)器54可通過串行端口接口 46連接到系統(tǒng)總線23。在聯(lián)網(wǎng)環(huán)境中,相對于計算機20所示的程序模塊或其部分可被存儲在遠程存儲器存儲設(shè)備中。應(yīng)當理解,所示的網(wǎng)絡(luò)連接是示例性的,并且可使用在計算機之間建立通信鏈路的其他手段。在其中計算機20被配置成在聯(lián)網(wǎng)環(huán)境中操作的實施例中,OS 35被遠程存儲在網(wǎng)絡(luò)上,而計算機20可通過網(wǎng)絡(luò)啟動這一遠程存儲的OS,而不是從本地存儲的OS中啟動。在一實施例中,計算機20包括瘦客戶機,其中OS 35少于完整的OS,而是被配置成處理聯(lián)網(wǎng)以及諸如在監(jiān)視器47上顯示輸出的內(nèi)核。遠程桌面系統(tǒng)的各實施例可執(zhí)行一個或多個計算機,或者可具有參考圖I的計算機20來描述的組件中的一些或全部。遠程桌面系統(tǒng)是維護可由客戶機計算機系統(tǒng)在遠程呈現(xiàn)會話中遠程地執(zhí)行并可顯示在客戶機計算機系統(tǒng)上的應(yīng)用的計算機系統(tǒng)。圖2描繪了遠程桌面系統(tǒng)的示例體系結(jié)構(gòu)。遠程桌面系統(tǒng)可包括遠程客戶機計算機200和遠程服務(wù)器計算機220。遠程客戶機計算機200和遠程服務(wù)器計算機220被配置成彼此進行遠程呈現(xiàn)會話。如所描繪的,遠程服務(wù)器計算機220將遠程呈現(xiàn)會話提供給遠程客戶機計算機200,其中,遠程服務(wù)器計算機220將來自執(zhí)行用戶的客戶機圖形輸出發(fā)送到遠程客戶機會話222。遠程用戶輸入是在遠程客戶機計算機200處輸入的。輸入管理器202可處理遠程用戶輸入并通過網(wǎng)絡(luò)(例如,使用基于國際電信聯(lián)盟(ITU)T. 120協(xié)議家族等協(xié)議,如遠程桌面協(xié)議(RDP))將其傳送到遠程服務(wù)器計算機220上的遠程用戶應(yīng)用224。遠程用戶應(yīng)用224可在遠程服務(wù)器計算機220上主存的遠程客戶機會話222中被執(zhí)行。遠程用戶應(yīng)用224如同該輸入是在遠程服務(wù)器計算機220處輸入的那樣來處理該輸入。遠程用戶應(yīng)用224響應(yīng)于接收到的輸入生成遠程服務(wù)器輸出,并且該輸出通過網(wǎng)絡(luò)傳送到遠程客戶機計算機200。遠程客戶機計算機200向遠程用戶呈現(xiàn)輸出數(shù)據(jù)。由此,在遠程客戶機計算機200處接收輸入并呈現(xiàn)輸出,而處理實際上是在遠程服務(wù)器計算機220處發(fā)生的。除了遠程用戶應(yīng)用224之外,遠程客戶機會話222可包括命令行界面(shell)和諸如桌面之類的用戶界面、跟蹤該桌面內(nèi)的鼠標移動的子系統(tǒng)、將圖標上的鼠標點擊轉(zhuǎn)換成實現(xiàn)程序?qū)嵗拿畹淖酉到y(tǒng)、其他應(yīng)用等。應(yīng)當理解,前述討論是示例性的,且當前公開的主題可以在各種客戶機/服務(wù)器環(huán)境中實現(xiàn)且不限于特定遠程呈現(xiàn)產(chǎn)品。在大多數(shù)(如果不是全部的話)遠程桌面環(huán)境中,(在遠程客戶機計算機200處輸入的)遠程用戶輸入數(shù)據(jù)通常包括表示對應(yīng)用的命令的鼠標和鍵盤數(shù)據(jù)。(遠程用戶應(yīng)用在遠程服務(wù)器計算機220處生成的)輸出數(shù)據(jù)通常包括供在遠程客戶機計算機200處顯示的圖形數(shù)據(jù)。許多遠程桌面環(huán)境也包括擴展到傳輸其他類型的數(shù)據(jù)的功能。在一示例實施例中,可將來自用戶應(yīng)用224的圖形數(shù)據(jù)輸出發(fā)送到遠程服務(wù)器計算機220上主存的圖形管理器226。圖形管理器226可壓縮圖形數(shù)據(jù)并經(jīng)由網(wǎng)絡(luò)將其傳送到遠程客戶機計算機200上的遠程用戶顯示器204。遠程用戶顯示器204可向遠程用戶呈現(xiàn)圖形輸出數(shù)據(jù)??墒褂猛ㄐ判诺纴硗ㄟ^允許插件經(jīng)由RDP連接傳輸數(shù)據(jù)來擴展RDP協(xié)議。存在許多這樣的擴展。諸如打印機重定向、剪貼板重定向、端口重定向等特征使用通信信道技術(shù)。由此,除了輸入和輸出數(shù)據(jù)之外,可以有許多需要傳輸數(shù)據(jù)的通信信道。因此,可能有傳輸輸出數(shù)據(jù)的偶然請求和傳輸其他數(shù)據(jù)的一個或多個信道請求爭用可用的網(wǎng)絡(luò)帶寬。由此,可用網(wǎng)絡(luò)帶寬可約束在遠程服務(wù)器計算機220和遠程客戶機計算機200之間可傳送的數(shù)據(jù),并且可導致影響遠程用戶體驗的網(wǎng)絡(luò)等待時間??蓪⑦h程服務(wù)提供給諸如遠程客戶機計算機200之類的至少一個客戶機。遠程客戶機計算機200可包括由被配置成將用戶輸入定向到遠程客戶機會話(諸如會話222)并顯示該會話生成的用戶界面信息的硬件來實現(xiàn)的計算機終端。在另一實施例中,遠程客戶機計算機200可以由包括與圖I中計算機20的元件類似的元件的計算機來實現(xiàn)。每一連接客戶機可具有允許該客戶機訪問存儲在遠程服務(wù)器計算機220上的數(shù)據(jù)和應(yīng)用的遠程客戶機會話。在各個實施例中,遠程服務(wù)器計算機220可以是物理硬件。在其他實施例中,遠程服務(wù)器計算機220的組件的一些或全部可被實例化成虛擬機(VM),諸如圖3中描繪的VM。在VM環(huán)境中,遠程客戶機計算機200可遠程地訪問VM并且運行遠程呈現(xiàn)會話。現(xiàn)在參考圖3,所描繪的是被配置成實現(xiàn)虛擬機的計算機系統(tǒng)的高級框圖。如圖所示,計算機系統(tǒng)300可包括圖I中所描述的元件、以及可用于實現(xiàn)虛擬機的組件。一個這樣的組件是在本領(lǐng)域中也可被稱為虛擬機監(jiān)控程序的系統(tǒng)管理程序(hypervisor)302。所描繪的實施例中的系統(tǒng)管理程序302可被配置成控制并仲裁對計算機系統(tǒng)300的硬件的訪問。廣泛而言,系統(tǒng)管理程序302可以生成稱為分區(qū)的執(zhí)行環(huán)境,如子分區(qū)I到子分區(qū)N(其中N是大于或等于I的整數(shù))。在各實施例中,子分區(qū)可被認為是系統(tǒng)管理程序302所支持的基本隔離單位,即,每一子分區(qū)可被映射到在系統(tǒng)管理程序302的控制下的一組硬件資源,例如存儲器、設(shè)備、邏輯處理器周期等,和/或父分區(qū),并且系統(tǒng)管理程序302可以隔離一個分區(qū)使其無法訪問另一分區(qū)的資源。在各實施例中,系統(tǒng)管理程序302可以是獨立軟件產(chǎn)品,操作系統(tǒng)的一部分、被嵌入在主板的固件內(nèi)、專門的集成電路,或其組合。在以上示例中,計算機系統(tǒng)300包括父分區(qū)304,父分區(qū)在開源社區(qū)中也可被認為是域O。父分區(qū)304可被配置成通過使用虛擬化服務(wù)提供者328(VSP)來向在子分區(qū)I-N中執(zhí)行的客操作系統(tǒng)提供資源,虛擬化服務(wù)提供者在開源社區(qū)中也被稱為后端驅(qū)動程序。在此示例體系結(jié)構(gòu)中,父分區(qū)304可以選通對底層硬件的訪問。VSP 328可用于通過虛擬化服務(wù)客戶機(VCS)來復用到硬件資源的接口,虛擬化服務(wù)客戶機在開源社區(qū)中也被稱為前端驅(qū)動程序。每一子分區(qū)可包括一個或多個虛擬處理器,例如客操作系統(tǒng)320到322可管理并調(diào)度線程在其上執(zhí)行的虛擬處理器330到332。一般而言,虛擬處理器330到332是提供帶有特定體系結(jié)構(gòu)的物理處理器的表示的可執(zhí)行指令和相關(guān)聯(lián)狀態(tài)信息。例如,一個虛擬機可具有帶有英特爾x86處理器特性的虛擬處理器,而另一虛擬處理器可具有PowerPC處理器的特性。本示例中的虛擬處理器可被映射到計算機系統(tǒng)的邏輯處理器,使得實現(xiàn)虛擬處理器的指令將受到邏輯處理器的支持。如此,在這些示例實施例中,多個虛擬處理器可以同時執(zhí)行,而同時例如另一邏輯處理器正執(zhí)行系統(tǒng)管理程序指令。一般而言,且如圖所示,分區(qū)中的虛擬處理器、各種VCS以及存儲器的組合可被認為是虛擬機,如虛擬機340或342。一般而言,客操作系統(tǒng)320到322可包括諸如,例如,來自Microsoft 、Apple 、幵放源代碼社區(qū)等等的操作系統(tǒng)之類的任何操作系統(tǒng)??筒僮飨到y(tǒng)可包括用戶/內(nèi)核操作模式,并且可具有包括調(diào)度器、存儲器管理器等的內(nèi)核。內(nèi)核模式可包括邏輯處理器中的執(zhí)行模式,該執(zhí)行模式授予對至少特權(quán)處理器指令的訪問。每一客操作系統(tǒng)320到322可具有相關(guān)聯(lián)的文件系統(tǒng),該文件系統(tǒng)上存儲有諸如終端服務(wù)器、電子商務(wù)服務(wù)器、電子郵件服務(wù)器等應(yīng)用以及客操作系統(tǒng)本身??筒僮飨到y(tǒng)320-322可以調(diào)度線程來在虛擬處理器330-332上執(zhí)行,并可以實現(xiàn)這樣的應(yīng)用程序的實例。在各個實施例中,諸如圖2中描繪的遠程服務(wù)器計算機220之類的遠程服務(wù)器計算機可執(zhí)行多個遠程客戶機會話。諸如遠程客戶機會話220之類的每一遠程客戶機會話可表示連接客戶機的應(yīng)用環(huán)境。在這一示例實施例中,遠程服務(wù)器計算機可為圖4中所示的連接客戶機中的每一個生成至少一個遠程客戶機會話。此外,如上文注意到的,遠程服務(wù)器計算機220可以是虛擬機,該虛擬機進而執(zhí)行多個遠程客戶機會話。
圖4中所描繪的是計算機系統(tǒng)400,計算機系統(tǒng)400可包括被配置成實現(xiàn)遠程服務(wù)器計算機的電路,或者在某些實施例中,計算機系統(tǒng)400可包括被配置成支持遠程桌面連接的電路。在所描繪的示例中,計算機系統(tǒng)400可被配置成生成用于連接客戶機的一個或多個遠程客戶機會話,諸如會話I到N (其中N是大于2的整數(shù))。簡言之,在本發(fā)明的示例實施例中,會話一般可包括由被配置成與計算機系統(tǒng)400的內(nèi)核414交互的多個子系統(tǒng)(例如,軟件代碼)實現(xiàn)的操作環(huán)境。例如,會話可包括實例化諸如桌面窗口之類的用戶界面的進程、跟蹤該窗口內(nèi)的鼠標移動的子系統(tǒng)、將圖標上的鼠標點擊轉(zhuǎn)換成實現(xiàn)程序?qū)嵗拿畹淖酉到y(tǒng)等。會話可由計算機系統(tǒng)400在逐個用戶的基礎(chǔ)上生成,例如在計算機系統(tǒng)400通過網(wǎng)絡(luò)連接接收來自客戶機(諸如遠程客戶機計算機200)的連接請求時由計算機系統(tǒng)400生成。一般而言,連接請求首先可由傳輸邏輯410處理,傳輸邏輯410例如可由計算機系統(tǒng)400的電路實現(xiàn)。在一些實施例中,傳輸邏輯410可包括網(wǎng)絡(luò)適配器、可被配置成接收連接消息并將其轉(zhuǎn)發(fā)給引擎412的固件和軟件。如圖4所示,在一些實施例中,傳輸邏輯410可包括每個會話的協(xié)議棧實例。一般而言,每個協(xié)議棧實例可被配置成將用戶接口輸出路由到客戶機,以及將從客戶機接收到的用戶輸入路由到與其會話相關(guān)聯(lián)的會話核心444。繼續(xù)圖4的一般性描述,在本發(fā)明的一些示例實施例中,引擎212可被配置成處理對會話的請求;確定每個會話的功能;通過為會話分配一組物理資源來生成會話;以及實例化會話的協(xié)議棧實例。在一些實施例中,引擎412可由能實現(xiàn)上述操作過程中的一部分的專門電路組件來實現(xiàn)。例如,一些示例實施例中,該電路在可包括存儲器以及配置成執(zhí)行實現(xiàn)引擎412的代碼的處理器。如圖4所描繪地,在一些情況下,引擎412可接收連接請求并確定例如許可證可用,并且可為該請求生成會話。在計算機系統(tǒng)400是包括遠程桌面能力的遠程計算機的情形中,引擎412可被配置成響應(yīng)于連接請求生成會話而不檢查許可。如圖4所示,會話管理器416可被配置成接收來自引擎412的消息,并且響應(yīng)于該消息,會話管理器416可將會話標識符添加到表中;向該會話標識符指派存儲器;以及在指派給該會話標識符的存儲器中生成系統(tǒng)環(huán)境變量和子系統(tǒng)進程的實例。如圖4所示,會話管理器416可實例化諸如運行時子系統(tǒng)440之類的環(huán)境子系統(tǒng),該子系統(tǒng)可包括諸如會話核心444之類的內(nèi)核模式部分。例如,在一實施例中,環(huán)境子系統(tǒng)被配置成將一些服務(wù)子集展示給應(yīng)用程序并向計算機操作系統(tǒng)402的內(nèi)核提供接入點。在示例實施例中,運行時子系統(tǒng)440可控制進程和線程的執(zhí)行,并且會話核心444可向內(nèi)核414的執(zhí)行程序發(fā)送請求以向線程分配存儲器并調(diào)度執(zhí)行它們的時間。在一實施例中,會話核心444可包括圖形顯示界面446 (⑶I)、安全子系統(tǒng)450和輸入子系統(tǒng)452。在這些實施例中,輸入子系統(tǒng)452可被配置成經(jīng)由與該會話相關(guān)聯(lián)的協(xié)議棧實例接收來自客戶機401的用戶輸入并將該輸入傳送給合適會話的會話核心444。在一些實施例中,用戶輸入可包括指示絕對和/或相對鼠標移動命令、鼠標坐標、鼠標點擊、鍵盤信號、操縱桿移動信號等的信號。例如圖標上的鼠標雙擊的用戶輸入可被會話核心444接收,并且輸入子系統(tǒng)452可被配置成確定圖標位于與該雙擊相關(guān)聯(lián)的坐標處。輸入子系統(tǒng)452隨后可被配置成向可執(zhí)行與該圖標相關(guān)聯(lián)的應(yīng)用的進程的運行時子系統(tǒng)440發(fā)送通知。除了接收來自客戶機401的輸入之外,還可從應(yīng)用和/或桌面接收繪制命令并由⑶1446來處理。⑶I 446 —般可包括能生成圖形對象繪制命令的進程。⑶I 446在該示例實施例中可被配置成將其輸出傳遞給遠程顯示子系統(tǒng)454,在此命令針對附連到該會話的顯示驅(qū)動器被格式化。在某些示例實施例中,一個或多個物理顯示器可被附連到計算機系統(tǒng)400,例如在遠程桌面情形中。在這些示例實施例中,遠程顯示子系統(tǒng)454可被配置成鏡像由遠程計算機系統(tǒng)的顯示驅(qū)動器呈現(xiàn)的繪制命令、并經(jīng)由與該會話相關(guān)聯(lián)的棧實例將鏡像信息傳送給客戶機401。在計算機系統(tǒng)400是遠程呈現(xiàn)會話服務(wù)器的另一示例實施例中,遠程顯示子系統(tǒng)454可被配置成包括可不與物理上附連到計算機系統(tǒng)400的顯示器相關(guān)聯(lián)的虛擬顯示驅(qū)動器,例如計算機系統(tǒng)400可無頭地(headless)運行。遠程顯示子系統(tǒng)454在該實施例中可被配置成接收針對一個或多個虛擬顯示器的繪制命令并將它們經(jīng)由與該會話相關(guān)聯(lián)的棧實例傳送給客戶機401。在本發(fā)明的實施例中,遠程顯示子系統(tǒng)454可被配置成確定每個顯示驅(qū)動器的顯示分辨率,例如確定與虛擬顯示器相關(guān)聯(lián)的虛擬顯示驅(qū)動器的顯示分辨率或與物理顯示器相關(guān)聯(lián)的顯示驅(qū)動器的顯示分辨率;以及經(jīng)由相關(guān)聯(lián)的協(xié)議棧實例將分組路由到客戶機401。在一些示例實施例中,會話管理器416可附加地實例化與該會話的會話標識符相關(guān)聯(lián)的可被配置成處理該會話的登入和登出的登錄進程的實例。在這些示例實施例中,指示與登錄進程相關(guān)聯(lián)的圖形用戶界面的繪制命令可被傳送給客戶機401,在那里,客戶機401的用戶可向登錄屏幕輸入帳戶標識符(例如用戶名/ 口令組合)、智能卡標識符、和/或生物測定信息。該信息可被傳送給計算機系統(tǒng)400并被路由至引擎412以及會話核心444的安全子系統(tǒng)450。例如,在某些示例實施例中,引擎412可被配置成確定用戶帳戶是否與許可證相關(guān)聯(lián);并且安全子系統(tǒng)450可被配置成生成該會話的安全令牌。在遠程桌面環(huán)境中,可在服務(wù)器處為每一用戶呈現(xiàn)用戶圖形。用戶圖形可包括文本圖像和自然圖像。然后將所得圖形發(fā)送給客戶機以供顯示和交互。為了降低網(wǎng)絡(luò)上的帶寬要求,可在傳輸?shù)娇蛻魴C之前對圖形進行壓縮。期望壓縮技術(shù)是高效的并且等待時間短。如將在此描述的,對漸進編碼和損壞方案的使用支持對帶寬使用的降低。存在用于編碼和解碼電子信息(包括圖形數(shù)據(jù))的各種系統(tǒng)和方法。在示例性實施例中,編碼和解碼系統(tǒng)可包括最初將源圖像分成數(shù)據(jù)區(qū)域的劃分模塊。幀差分模塊隨后可在數(shù)據(jù)區(qū)域跨幀更新時比較每一數(shù)據(jù)區(qū)域,并且確定該區(qū)域是否已被更新,如果是,則確定該區(qū)域的什么部分已被更新。幀差分模塊隨后可將已更新和未更新的區(qū)域發(fā)送到各個處理模塊,各個處理模塊將這些區(qū)域轉(zhuǎn)換成對應(yīng)的已更新和未更新的數(shù)據(jù)部分。在一實施例中,量化器可根據(jù)可調(diào)量化參數(shù)來對數(shù)據(jù)部分執(zhí)行壓縮過程以生成已壓縮的數(shù)據(jù)。然后,自適應(yīng)熵選擇器可選擇多個可用熵編碼器中的一個來執(zhí)行熵編碼過程,由此產(chǎn)生已編碼的數(shù)據(jù)。熵編碼器也可利用反饋回路來根據(jù)當前傳輸帶寬特性來調(diào)整量化參數(shù)。在此處所公開的各個方法和系統(tǒng)中,可使用對于諸如上文所描述的各個過程的處理和操作的方面來提供更高效的處理,并且由此提供更為及時和豐富的用戶體驗。這些方法和系統(tǒng)還在網(wǎng)絡(luò)和/或系統(tǒng)資源變得擁塞或以其他方式更不可用時,提供這樣的圖形支持。此處所公開的用于編碼并傳送圖形數(shù)據(jù)的實施例可使用硬件和軟件進程的各種組合來實現(xiàn)。在某些實施例中,各功能可完全用硬件來執(zhí)行。在其他實施例中,各功能可完全用軟件來執(zhí)行。在還有一些實施例中,各功能可使用硬件和軟件進程的組合來實現(xiàn)。這些進程還可使用一個或多個CPU和/或諸如圖形處理單元(GPU)或其他專用圖形渲染設(shè)備的一個或多個專用處理器來實現(xiàn)。參考圖5,所示出的是與此處討論的編碼和傳送過程相關(guān)聯(lián)的各種功能的概覽??尚薷乃具^程的各個方面以改進過程的吞吐量和效率。過程500示出對客戶機幀進行捕捉和緩沖。過程510示出將所捕捉并緩沖的客戶機幀劃分成各數(shù)據(jù)區(qū)域。過程520示出將這些區(qū)域與先前所捕捉并緩沖的客戶機幀中的區(qū)域作比較。過程530示出對數(shù)據(jù)區(qū)域進行漸進編碼和損壞的過程。過程540示出對已編碼且未損壞的數(shù)據(jù)區(qū)域進行傳送的過程。一旦被傳送,過程550則示出可以解碼接收到的幀。過程560示出可管理接收緩沖器以跟蹤幀中已改變的區(qū)域和部分。過程570示出顯示幀緩沖器可用于以高效方式驅(qū)動顯示控制器。各個實施例可包括由服務(wù)器用來編碼并向客戶機傳送屏幕的一部分的漸進編碼和損壞方案。圖6和7提供服務(wù)器需要編碼并向客戶機傳送的屏幕區(qū)域的示例。諸如遠程桌面協(xié)議(RDP)中的屏幕抓取功能之類的各種手段可用于允許服務(wù)器讀取表示屏幕上的特定區(qū)域或其部分的圖形數(shù)據(jù)、并且確定哪些區(qū)域或部分正在改變。無論何時區(qū)域或區(qū)域的一部分改變,RDP驅(qū)動器可提供正在改變的區(qū)域或其部分的坐標。圖6描繪了具有第一幀601和第二幀602的屏幕的示例,第二幀602是第一幀601的附近更新。在這一示例中,第一幀601包含區(qū)域610和區(qū)域620。區(qū)域610包含文本圖像內(nèi)容,而區(qū)域620包含自然圖像內(nèi)容。服務(wù)器編碼第一幀601并將其傳送到客戶機以供顯示和交互。之后,服務(wù)器編碼第二幀602并將其傳送到客戶機以供顯示和交互。在該第二編碼和傳送步驟中,第一幀610中的區(qū)域610不應(yīng)被處理第二次,因為在第二幀602中不再呈現(xiàn)區(qū)域610。作為對比,區(qū)域630和區(qū)域640是第二幀602中的新區(qū)域,并且第一次需要被編碼并傳送到客戶機。此外,區(qū)域620是在第一幀601中編碼并傳送的相同區(qū)域620,并且需要被第二次處理,因為在第二幀602中也呈現(xiàn)區(qū)域620。然而,第二幀602中的區(qū)域620包含被區(qū)域630和區(qū)域640遮擋的部分以及未被任何其他圖形對象遮擋的部分。圖7還例示了圖6中描繪的區(qū)域620的被遮擋和未被遮擋的部分。部分702、部分704、部分706、和部分708是區(qū)域620的未被遮擋的部分,因為它們沒有被其他圖形對象(例如區(qū)域630和區(qū)域640)阻擋。由此,當在顯示器上呈現(xiàn)未被遮擋的部分(例如,部分702、部分704、部分706、和部分708)時,它們將對用戶可見。另一方面,部分710在第二幀602中被區(qū)域630遮擋。類似地,部分712在第二幀602中被區(qū)域640遮擋。在顯示器上呈現(xiàn)時,被遮擋的部分(例如部分710和712)將由于其他阻擋圖形對象(例如區(qū)域630和640)而對用戶不可見。為降低帶寬使用和要處理的數(shù)據(jù)量,服務(wù)器僅需要編碼和傳送表示第二幀602中區(qū)域620的未遮擋部分(例如部分702、704、706和708)的數(shù)據(jù)。被遮擋的部分(例如部分710和712)可被稱為損壞的。不需要對表示損壞的區(qū)域或部分的數(shù)據(jù)進行編碼、傳送或由用戶進一步處理。由于要編碼和傳送的數(shù)據(jù)量降低,因此損壞被遮擋的部分將導致網(wǎng)絡(luò)帶寬使用的降低,這將進而導致網(wǎng)絡(luò)等待時間的降低并且將改進遠程用戶體驗。為進一步優(yōu)化帶寬使用和要處理的數(shù)據(jù)量,各個實施例可包括漸進編碼和傳送方案。服務(wù)器可確定遠程呈現(xiàn)會話的總體質(zhì)量。服務(wù)器內(nèi)的編碼器可使用該質(zhì)量來編碼到客戶機的數(shù)據(jù)。例如,100%質(zhì)量可表示編碼器可對數(shù)據(jù)進行編碼的最大質(zhì)量,并且可等于遠程呈現(xiàn)會話的總體質(zhì)量。在一個實施例中,服務(wù)器可以以第一質(zhì)量來編碼并傳送表示第一幀中的區(qū)域的數(shù)據(jù)。例如,服務(wù)器可以按比如說50%的質(zhì)量來編碼和傳送第一幀601中的區(qū)域620。服務(wù)器隨后可以以第二質(zhì)量來編碼和傳送表示第二幀中的相同區(qū)域的數(shù)據(jù)。例如,服務(wù)器可以按比如說75%的質(zhì)量來編碼和傳送第二幀602中的區(qū)域620。在一個實施例中,服務(wù)器可漸進地改進用于對圖形數(shù)據(jù)進行編碼和向客戶機傳送的質(zhì)量。例如,服務(wù)器正在對數(shù)據(jù)進行編碼和傳送的第二質(zhì)量可以高于服務(wù)器已經(jīng)對數(shù)據(jù)進行編碼和傳送的第一質(zhì)量。遠程用戶將體驗隨著包含與圖像有關(guān)的信息的每一新幀而逐漸改進的圖形圖像顯示。在又一實施例中,可將服務(wù)器對數(shù)據(jù)進行編碼和傳送的第二質(zhì)量設(shè)置成在第一質(zhì)量上的增量。在第一質(zhì)量上的增量可以是預先確定的百分比,或者可基于諸如可用網(wǎng)絡(luò)帶寬和要處理的數(shù)據(jù)量等各種因素來動態(tài)地調(diào)整。例如并且參考圖6,可以以第一質(zhì)量50%來對第一幀601中的區(qū)域620進行編碼和傳送。隨后服務(wù)器可確定在對第二幀602中的區(qū)域620進行編碼和傳送時需要25%的增量。因此,服務(wù)器可以以第二質(zhì)量75%來編碼和傳送第二幀602中的區(qū)域620。同時,由于第二幀602中的區(qū)域640先前未經(jīng)處理,因此服務(wù)器可以以第一質(zhì)量50%來對區(qū)域640進行編碼和傳送。由此,相同圖形幀中的不同區(qū)域和部分可按不同質(zhì)量級來編碼和傳送。在一個實施例中,服務(wù)器用來對圖形數(shù)據(jù)進行編碼和傳送的質(zhì)量可根據(jù)可用網(wǎng)絡(luò)帶寬和/或要處理的數(shù)據(jù)量來動態(tài)地調(diào)整。例如,在服務(wù)器對第一幀進行編碼和傳送之后,服務(wù)器可檢測可用網(wǎng)絡(luò)帶寬和要處理的數(shù)據(jù)量。隨后服務(wù)器可確定在處理第二幀時要使用的目標質(zhì)量。這一動態(tài)質(zhì)量調(diào)整確保隨著可用網(wǎng)絡(luò)帶寬和要處理的數(shù)據(jù)量而使用高質(zhì)量。例如,當服務(wù)器確定存在足夠的網(wǎng)絡(luò)帶寬時,服務(wù)器可以按100%質(zhì)量來對圖形數(shù)據(jù)進行編碼和傳送。在一個實施例中,為確保區(qū)域中或區(qū)域的一部分中的文本內(nèi)容的可讀性,服務(wù)器可以不把漸進編碼和損壞方案應(yīng)用到包括該區(qū)域或該區(qū)域的一部分中所包含的文本圖像的圖形數(shù)據(jù)。或者,服務(wù)器可按100%質(zhì)量對文本圖像區(qū)域或部分應(yīng)用漸進編碼和損壞方案,而可對自然圖像區(qū)域和部分應(yīng)用不同的質(zhì)量。例如,圖6中描繪的第一幀601中的區(qū)域610具有文本圖像內(nèi)容,而區(qū)域620具有自然圖像內(nèi)容。對第一幀601進行編碼和傳送的服務(wù)器可按100%質(zhì)量對區(qū)域610進行編碼和傳送,而按不同的質(zhì)量(例如50%)對區(qū)域620進行編碼和傳送。類似地,服務(wù)器可按100%質(zhì)量對第二幀602中的文本圖像區(qū)域630進行編碼和傳送,而按不同的質(zhì)量級(例如,對于區(qū)域620為75%,而對于區(qū)域640為50%)對自然圖像區(qū)域620和640進行編碼和傳送。在一實施例中,當已編碼和傳送的區(qū)域的質(zhì)量為100%時,該區(qū)域可被標記成具有全保真。隨后該區(qū)域可由RDP中的其他組件(諸如與數(shù)據(jù)高速緩存、增量檢測、和運動檢測相關(guān)聯(lián)的組件)使用。由此,在全保真區(qū)域重新出現(xiàn)在未來的幀的情況下,全保真區(qū)域不需再次被編碼和傳送。由此,實現(xiàn)全保真標記通過降低要處理的數(shù)據(jù)量來進一步降低帶寬使用。為了在可用網(wǎng)絡(luò)帶寬和/要處理的數(shù)據(jù)對編碼和傳送方案施加約束時降低網(wǎng)絡(luò)等待時間并且改進遠程用戶體驗,一實施例可使用漸進編碼和損壞技術(shù)的組合。為了漸進編碼,該實施例對于第一次被編碼和傳送的文本圖像區(qū)域使用較高質(zhì)量(例如100%)、對于自然圖像區(qū)域使用較低質(zhì)量(例如50%),并且對于隨后對自然圖像區(qū)域的編碼和傳送使用超過上次質(zhì)量的質(zhì)量增量(例如25%)。另外,不對損壞的區(qū)域或其部分進行編碼和傳送。作為示例并且參考圖6和7,應(yīng)用以下質(zhì)量級·對于第一幀601中的文本圖像區(qū)域610以及第二幀602中的文本圖像區(qū)域630為100%。由于100%的質(zhì)量,區(qū)域610和區(qū)域630被標記成全保真區(qū)域。
對于第一幀601中的區(qū)域620以及對于第二幀602中的區(qū)域640為50%,因為這
兩個區(qū)域包含自然圖像內(nèi)容并且在相應(yīng)的幀中被第一次處理。 對于第二幀602中的區(qū)域620為75%,因為自然區(qū)域620先前在第一幀601中被處理過。另外,區(qū)域620包含被遮擋和未被遮擋的部分。僅對未被遮擋的部分702、704、706和708按75%的質(zhì)量進行編碼并傳送到客戶機,而對被遮擋的部分710和712進行損壞而不進行編碼和傳送。與非漸進編碼和傳送方案相比,降低了與按增量的質(zhì)量對區(qū)域進行編碼以及在需要時對其部分進行損壞相關(guān)聯(lián)的處理量、以及與傳送這一區(qū)域相關(guān)聯(lián)的網(wǎng)絡(luò)帶寬使用。換言之,與對區(qū)域進行編碼相關(guān)聯(lián)的數(shù)據(jù)量可隨著其中該區(qū)域重新出現(xiàn)的每一幀而降低,因為該區(qū)域是按跨幀的增量質(zhì)量來編碼的,并且該區(qū)域的部分是在必要時被損壞的。在各個實施例中,可對幀中第一次出現(xiàn)的數(shù)據(jù)區(qū)域創(chuàng)建編碼上下文。在這一編碼上下文中,第一質(zhì)量被設(shè)置成目標質(zhì)量。隨后,當該區(qū)域出現(xiàn)在第二幀時、和/或當不再需要對該區(qū)域的被遮擋的部分進行編碼和傳送時,更新編碼上下文。編碼上下文中的目標質(zhì)量也被更新,并且被設(shè)置成第一質(zhì)量上的增量。參考圖6和7中的區(qū)域和部分,可以對自然圖像區(qū)域的編碼上下文使用以下偽代碼 第一幀601中的自然圖像區(qū)域620 :pContextI=CreateEncodingContext(Region 620)pEncoder->Encode (pContext I, {Region 620} , nTargetQuality (e.g. 50% ), &pbBufferl, cbBufefrl)·第二幀602中的自然區(qū)域620和自然圖像區(qū)域640 pContext2=CreateEncodingContext(Region640)pEncoder->Encode (pContext2, {Region 640} , nTargetQuality (e.g. 50% ), &pbBuffer2, cbBuffer2)pEncoder->Encode(pContextl, {portion 702,portion 704,portion 706,portion 708}, nTargetQuality (e. g. 75% ), &pbBufer3, cbBuffer3)在一實施例中,為了確??蛻魴C向遠程用戶所顯示的幀的一致性,客戶機可以直到第一圖形幀中的所有區(qū)域都被解碼并且按與第一幀的漸進編碼和損壞相關(guān)聯(lián)的質(zhì)量級被顯示之后才顯示第二已解碼的圖形幀。在一實施例中,熵編碼器功能可執(zhí)行熵編碼過程來生成已編碼的圖形數(shù)據(jù)。在某些實施例中,熵編碼過程還通過用適當?shù)拇a來替換已編碼的圖形數(shù)據(jù)中的相應(yīng)的位模式,來降低已編碼的圖形數(shù)據(jù)的比特率。在一個實施例中,可以向GPU提供具有需要編碼的數(shù)據(jù)區(qū)域和/或未被遮擋的數(shù)據(jù)部分的圖形數(shù)據(jù)。以此方式,該過程與維護并顯示所得已解碼的圖形數(shù)據(jù)的客戶機協(xié)同作用,而有效地實現(xiàn)了漸進編碼和損壞方案。由此,服務(wù)器可以按特定質(zhì)量對最需要的數(shù)據(jù)部分執(zhí)行熵編碼,并且由此降低來自編碼過程的等待時間。圖8描繪了用于處理要傳送到客戶機的圖形數(shù)據(jù)的示例性操作過程,該過程包括操作800、802、804、806、808和810。操作800開始該操作過程,并且操作802示出了接收表示與遠程呈現(xiàn)相關(guān)聯(lián)的客戶機屏幕的圖形數(shù)據(jù)。操作804示出了檢測客戶機屏幕的哪些區(qū)域需要用漸進編碼和損壞方案來處理。操作806示出了為要用漸進編碼和損壞方案來處理的區(qū)域中的每一個創(chuàng)建漸進編碼上下文。操作808示出了對于所創(chuàng)建的編碼上下文中的每一個,跨多個圖形幀對區(qū)域執(zhí)行漸進編碼上下文和損壞。操作810示出了向客戶機傳送經(jīng)漸進編碼并且未經(jīng)損壞的區(qū)域。圖9描繪了如上所述用于處理傳送到客戶機計算機的圖形數(shù)據(jù)的示例性系統(tǒng)。系統(tǒng)900包括處理器910和存儲器920。在一實施例中,處理器910可被實現(xiàn)成圖I中的處理單元21,而存儲器920可被實現(xiàn)成圖I中的系統(tǒng)存儲器22的組件中的某些或全部。存儲器920進一步包括被配置成使系統(tǒng)處理要傳送到多個客戶機計算機的圖形數(shù)據(jù)的計算機指令???22示出了接收表示與遠程呈現(xiàn)相關(guān)聯(lián)的客戶機屏幕的圖形數(shù)據(jù)???24示出了檢測客戶機屏幕的哪些區(qū)域需要用漸進編碼和損壞方案來處理???26示出了為要用漸進編碼和損壞方案來處理的區(qū)域中的每一個創(chuàng)建漸進編碼上下文???28示出了對于所創(chuàng)建的編碼上下文中的每一個,跨多個圖形幀對區(qū)域執(zhí)行漸進編碼上下文和損壞。框930示出了向客戶機傳送經(jīng)漸進編碼并且未經(jīng)損壞的區(qū)域。上文所提及的方面中的任何一個方面都可以以方法、系統(tǒng)、計算機可讀介質(zhì)或任何類型的產(chǎn)品來實現(xiàn)。上述詳細描述通過示例和/或操作圖闡明了系統(tǒng)和/或過程的各種實施例。就這些框圖和/或示例包含一個或多個功能和/或操作而言,本領(lǐng)域技術(shù)人員將理解,這些框圖或示例中的每一功能和/或操作都可由各種各樣的硬件、軟件、固件、或?qū)嶋H上其任意組合來單獨地和/或共同地實現(xiàn)。應(yīng)該理解,此處描述的各種技術(shù)可以結(jié)合硬件或軟件,或在適當時結(jié)合兩者的組合來實現(xiàn)。因此,本公開的方法和裝置或其某些方面或部分,可以采用包含在諸如軟盤、CD-ROM、硬盤驅(qū)動器或任何其它機器可讀存儲介質(zhì)等有形介質(zhì)中的程序代碼(S卩,指令)的形式,其中,當程序代碼被加載至諸如計算機等機器并由其運行時,該機器成為用于實現(xiàn)本公開的裝置。在程序代碼在可編程計算機上執(zhí)行的情況下,計算設(shè)備通常包括處理器、該處理器可讀的存儲介質(zhì)(包括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入設(shè)備、以及至少一個輸出設(shè)備。一個或多個程序可以例如,通過使用API、可重用控件等來實現(xiàn)或利用結(jié)合本發(fā)明描述的過程。這樣的程序優(yōu)選地用高級過程語言或面向?qū)ο缶幊陶Z言來實現(xiàn),以與計算機系統(tǒng)通信。然而,如果需要,該程序可以用匯編語言或機器語言來實現(xiàn)。在任何情形中,語言可以是編譯語言或解釋語言,且與硬件實現(xiàn)相結(jié)合。盡管具體地參考其優(yōu)選實施例來示出并描述了本發(fā)明,但本領(lǐng)域的技術(shù)人員可以理解,可以作出形式和細節(jié)上的各種改變而不脫離所附權(quán)利要求書中所述的本發(fā)明的范圍。此外,盡管本發(fā)明的各元素可以用單數(shù)來描述或要求保護,但構(gòu)想了復數(shù),除非明確地規(guī)定了限于單數(shù)。
權(quán)利要求
1.一種用于在遠程桌面環(huán)境中編碼和傳送圖形數(shù)據(jù)的系統(tǒng),包括 處理器;以及 當所述系統(tǒng)可操作時通信地耦合到所述處理器的存儲器,所述存儲器承載指令,當所述指令在所述處理器上執(zhí)行時使得所述系統(tǒng)至少執(zhí)行以下操作 第一次處理用戶遠程桌面的區(qū)域; 確定表示所述區(qū)域的一部分的第一數(shù)據(jù)集; 以第一質(zhì)量將所述第一數(shù)據(jù)集傳送到遠程桌面客戶機計算機; 第二次處理所述用戶遠程桌面的區(qū)域; 確定表示所述區(qū)域的未被遮擋的部分的第二數(shù)據(jù)集,所述未被遮擋的部分是當呈現(xiàn)在顯示器上時所述區(qū)域的將對用戶可見的部分;以及 以第二質(zhì)量將所述第二數(shù)據(jù)集傳送到所述遠程桌面客戶機計算機。
2.如權(quán)利要求I所述的系統(tǒng),其特征在于,所述第二質(zhì)量是所述第一質(zhì)量上的固定最小增量。
3.如權(quán)利要求I所述的系統(tǒng),其特征在于,所述第二質(zhì)量是將所述遠程桌面服務(wù)器計算機與所述遠程桌面客戶機計算機和其他計算設(shè)備相連接的網(wǎng)絡(luò)帶寬的函數(shù)。
4.如權(quán)利要求I所述的系統(tǒng),其特征在于,所述第二質(zhì)量是要處理的數(shù)據(jù)量的函數(shù)。
5.如權(quán)利要求I所述的系統(tǒng),其特征在于,所述第二質(zhì)量接近或處于對于表示作為文本圖像的區(qū)域的一部分的數(shù)據(jù)集的最大質(zhì)量。
6.如權(quán)利要求I所述的系統(tǒng),其特征在于,不向所述遠程桌面客戶機計算機發(fā)送表示區(qū)域的被遮擋的部分的數(shù)據(jù)集,所述被遮擋的部分是當呈現(xiàn)在顯示器上時所述區(qū)域的將對用戶不可見的一部分。
7.如權(quán)利要求I所述的系統(tǒng),其特征在于,表示未被遮擋的部分的數(shù)據(jù)集在所述數(shù)據(jù)集的第一質(zhì)量或第二質(zhì)量為100%時被高速緩存。
8.一種用于在遠程桌面環(huán)境中編碼和傳送圖形數(shù)據(jù)的方法,包括 第一次處理用戶遠程桌面的區(qū)域; 確定表示所述區(qū)域的一部分的第一數(shù)據(jù)集; 以第一質(zhì)量將所述第一數(shù)據(jù)集傳送到遠程桌面客戶機計算機; 第二次處理所述用戶遠程桌面的區(qū)域; 確定表示所述區(qū)域的未被遮擋的部分的第二數(shù)據(jù)集,所述未被遮擋的部分是當呈現(xiàn)在顯示器上時所述區(qū)域的將對用戶可見的部分;以及 以第二質(zhì)量將所述第二數(shù)據(jù)集傳送到所述遠程桌面客戶機計算機。
9.如權(quán)利要求8所述的方法,其特征在于,所述第二質(zhì)量高于所述第一質(zhì)量。
10.一種用于在遠程桌面環(huán)境中編碼和傳送圖形數(shù)據(jù)的計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)承載計算機可讀指令,所述計算機可讀指令在計算機上執(zhí)行時使得所述計算機執(zhí)行以下操作,包括 第一次處理用戶遠程桌面的區(qū)域; 確定表示所述區(qū)域的一部分的第一數(shù)據(jù)集; 以第一質(zhì)量將所述第一數(shù)據(jù)集傳送到遠程桌面客戶機計算機; 第二次處理所述用戶遠程桌面的區(qū)域;確定表示所述 區(qū)域的未被遮擋的部分的第二數(shù)據(jù)集,所述未被遮擋的部分是當呈現(xiàn)在顯示器上時所述區(qū)域的將對用戶可見的部分;以及 以第二質(zhì)量將所述第二數(shù)據(jù)集傳送到所述遠程桌面客戶機計算機。
全文摘要
本發(fā)明公開了支持降低的網(wǎng)絡(luò)帶寬使用的跨幀漸進損壞。公開了用于在遠程桌面環(huán)境中高效地處理和傳送圖形數(shù)據(jù)的發(fā)明。在本發(fā)明的各實施例中,在遠程桌面服務(wù)器計算機和遠程桌面客戶機計算機之間建立連接。遠程桌面服務(wù)器計算機可處理表示遠程用戶桌面的圖形數(shù)據(jù)。遠程桌面服務(wù)器計算機可將遠程桌面屏幕劃分成數(shù)據(jù)區(qū)域和部分。遠程桌面服務(wù)器計算機隨后可以以可跨屏幕幀而漸進地調(diào)節(jié)的特定質(zhì)量來對每一區(qū)域進行編碼并將其傳送到遠程桌面客戶機計算機。遠程桌面服務(wù)器計算機還可停止對于當呈現(xiàn)在顯示器上時數(shù)據(jù)區(qū)域的將對用戶不可見的部分進行編碼和傳送。遠程桌面用戶體驗了圖像質(zhì)量隨著包含與該圖像有關(guān)的信息的每一幀而逐漸地改進。
文檔編號H04L29/08GK102932324SQ20121031960
公開日2013年2月13日 申請日期2012年8月31日 優(yōu)先權(quán)日2011年9月2日
發(fā)明者T·L·懷恩, V·斯托亞諾夫, S·桑庫拉特里, D·S·麥卡利, V·A·阿爾布, C·哈古 申請人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1