欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

低復(fù)雜性的遠(yuǎn)程呈現(xiàn)會話編碼器的制作方法

文檔序號:7860927閱讀:169來源:國知局
專利名稱:低復(fù)雜性的遠(yuǎn)程呈現(xiàn)會話編碼器的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及圖像處理技術(shù),尤其遠(yuǎn)程呈現(xiàn)會話中的編解碼技術(shù)。
背景技術(shù)
在遠(yuǎn)程呈現(xiàn)會話中,客戶機(jī)計(jì)算機(jī)和服務(wù)器計(jì)算機(jī)跨通信網(wǎng)絡(luò)進(jìn)行通信??蛻魴C(jī)發(fā)送服務(wù)器本地接收的輸入,諸如鼠標(biāo)光標(biāo)移動和鍵盤按壓。進(jìn)而,服務(wù)器接收這一輸入并執(zhí)行與其相關(guān)聯(lián)的處理,諸如執(zhí)行用戶會話中的應(yīng)用。當(dāng)服務(wù)器執(zhí)行導(dǎo)致輸出(諸如圖形輸出或聲音)的處理時,服務(wù)器將這一輸出發(fā)送到客戶機(jī)以供呈現(xiàn)。以此方式,當(dāng)應(yīng)用實(shí)際上在服務(wù)器上執(zhí)行時,應(yīng)用對客戶機(jī)的用戶表現(xiàn)為在客戶機(jī)上本地執(zhí)行。服務(wù)器通常在遠(yuǎn)程呈現(xiàn)會話中生成的圖形數(shù)據(jù)的量可能超出服務(wù)器和客戶機(jī)之 間可用的通信網(wǎng)絡(luò)帶寬的量。鑒于這一帶寬限制,服務(wù)器通常在將圖形數(shù)據(jù)發(fā)送到客戶機(jī)之前壓縮圖形數(shù)據(jù)。在某些實(shí)施例中,服務(wù)器在將圖形數(shù)據(jù)發(fā)送到客戶機(jī)之前也將圖形數(shù)據(jù)編碼成視頻流。用于在遠(yuǎn)程呈現(xiàn)會話中將圖形數(shù)據(jù)壓縮和編碼成視頻流的已知技術(shù)存在許多問題,其中的某些問題是眾所周知的。

發(fā)明內(nèi)容
用于在遠(yuǎn)程呈現(xiàn)會話中壓縮和編碼圖形數(shù)據(jù)的已知技術(shù)的一個問題是,使用已知技術(shù)會以對用戶體驗(yàn)產(chǎn)生負(fù)面影響的方式使圖像保真度降級。例如,某些編碼器(諸如H. 264編碼器)用子采樣技術(shù)來編碼圖形數(shù)據(jù),子采樣技術(shù)不對每一像素的每一值進(jìn)行采樣(例如,某些編碼器在以下方案中進(jìn)行子采樣其中并不是每一色度值都是從由一個亮度和兩個色度值(諸如4:2:2、4:2:1、和4:2:0方案)所表示的像素中被單獨(dú)采樣的)。如此處所使用的,對4:2:0或其他非4:4:4子采樣方案的引用一般可適用于非4:4:4子采樣方案。在這些編碼器以此方式對數(shù)據(jù)進(jìn)行子采樣時,數(shù)據(jù)中某些被丟失,這降低了圖像的保真度。當(dāng)這一保真度的降低發(fā)生在圖像的高對比度/高頻部分(諸如淺色背景上的深色文本)時,它一般能被人們察覺。在這些圖像中一般能察覺這一保真度的損失,因?yàn)轭伾浅2煌膬蓚€或更多相鄰像素(例如,白色背景的像素和黑色文本的像素)可能使它們的值平均、或以其他方式組合在一起,以便創(chuàng)建共享的子采樣值。對值進(jìn)行平均或組合降低了高對比度區(qū)域之間邊界的清晰度。通過將被配置成執(zhí)行4:2:0子采樣的編碼器重新配置成也執(zhí)行4:4:4子采樣來解決4:2:0編碼中這一保真度的降低可能是不利的。以此方式來重新配置這樣的編碼器可能是不利的,因?yàn)檫@樣做會不利地增加編碼器的復(fù)雜性。另外,存在許多當(dāng)前部署的、不被配置成以4:4:4方案子采樣對幀進(jìn)行解碼的解碼器,并且將解碼器重新配置成支持4:4:4還可能需要將對應(yīng)的解碼器重新配置并重新部署到許多計(jì)算機(jī)。鑒于重新配置編碼器的這一問題,本發(fā)明的各實(shí)施例可用于使用被配置成以4:2:0方案(而不是4:4:4方案)進(jìn)行編碼的編碼器來以4:4:4方案對圖像進(jìn)行編碼。本發(fā)明的各實(shí)施例還可用于使用被配置成以4:2:0方案(而不是4:4:4方案)進(jìn)行解碼的解碼器來對使用上述編碼器編碼的圖像進(jìn)行解碼,以便以4:4:4方案來產(chǎn)生圖像。本發(fā)明的各實(shí)施例在遠(yuǎn)程呈現(xiàn)服務(wù)器中實(shí)現(xiàn)。在各實(shí)施例中,服務(wù)器在RGB色彩空間(其中像素由紅、綠和藍(lán)值三元組來表示)中接收圖形數(shù)據(jù)的幀。服務(wù)器將幀轉(zhuǎn)換到Y(jié)UV色彩空間(其中像素由一個亮度一Y以及兩個色度值一U和V的三元組來表示),并且以4:0:0子采樣方案從YUV幀中創(chuàng)建三個分量巾貞——Y、U和V分量各自一個巾貞。服務(wù)器隨后用編碼器將分量幀中的每一個編碼成視頻,該編碼器不被配置成以4:4:4子采樣方案來編碼幀,而是被配置成以4:0:0子采樣方案來編碼幀。服務(wù)器隨后將每一分量幀聚集成比特流,并且經(jīng)由遠(yuǎn)程呈現(xiàn)會話協(xié)議將該比特流發(fā)送到客戶機(jī)。本發(fā)明的各實(shí)施例也在遠(yuǎn)程呈現(xiàn)會話客戶機(jī)中實(shí)現(xiàn)。在各實(shí)施例中,客戶機(jī)從服務(wù)器接收遠(yuǎn)程桌面協(xié)議(RDP)比特流數(shù)據(jù)(其中該數(shù)據(jù)包括分開的Y、U和V分量幀)。客戶機(jī)用解碼器來解碼該比特流,該解碼器被配置成以4:0:0子采樣方案而不是以4:4:4子采樣方案來解碼幀,以便以4:0:0子采樣方案來產(chǎn)生三個分量幀——Y、U和V??蛻魴C(jī)隨后 以4:0:0子采樣方案來聚集這三個分量幀,以便以4:4:4子采樣方案來產(chǎn)生YUV幀??蛻魴C(jī)將YUV幀轉(zhuǎn)換到RGB色彩空間,并且將RGB幀顯示在顯示設(shè)備上。本發(fā)明的各實(shí)施例允許使用不被配置成支持4:4:4子采樣方案的編碼器和解碼器以4:4:4子采樣方案來編碼和發(fā)送數(shù)據(jù)。通過將幀分隔成各分量幀,幀被劃分成以4:0:0格式(編碼器和解碼器被配置成支持該格式)的三個幀。將幀分隔成分量幀允許以4:4:4子采樣方案來發(fā)送數(shù)據(jù),而無需重新配置編碼器或解碼器。此外,存在以下場景其中服務(wù)器將向客戶機(jī)發(fā)送4:4:4的幀和4:2:0幀兩者。本發(fā)明使得能使用不被額外配置成也支持4:4:4子采樣方案的較不復(fù)雜的編碼器來編碼和解碼這兩種格式。


圖I描繪其中可實(shí)現(xiàn)本發(fā)明的各實(shí)施例的示例通用計(jì)算環(huán)境。圖2描繪其中可實(shí)現(xiàn)本發(fā)明的各實(shí)施例的示例遠(yuǎn)程呈現(xiàn)會話服務(wù)器。圖3描繪以4:4:4格式采樣的示例圖像。圖4描繪以4:2:0格式采樣的圖3的示例圖像。圖5描繪以4:0:0格式采的樣圖3的示例圖像。圖6描繪實(shí)現(xiàn)本發(fā)明的各實(shí)施例的編碼器的示例體系結(jié)構(gòu)。圖7描繪實(shí)現(xiàn)本發(fā)明的各實(shí)施例的解碼器的示例體系結(jié)構(gòu)。圖8描繪實(shí)現(xiàn)本發(fā)明的各實(shí)施例的編碼器的示例操作過程。圖9描繪實(shí)現(xiàn)本發(fā)明的各實(shí)施例的編碼器的附加示例操作過程。圖10描繪實(shí)現(xiàn)本發(fā)明的各實(shí)施例的解碼器的示例操作過程。圖11描繪實(shí)現(xiàn)本發(fā)明的各實(shí)施例的編碼器的附加示例操作過程。
具體實(shí)施例方式在以下描述和附圖中闡明了某些具體細(xì)節(jié),以提供對本公開的各個實(shí)施例的全面理解。通常與計(jì)算和軟件技術(shù)相關(guān)聯(lián)的某些公知細(xì)節(jié)不在以下公開中描述,以避免不必要地使本公開的各實(shí)施例晦澀難懂。此外,相關(guān)領(lǐng)域的普通技術(shù)人員會理解,他們可以無需以下描述的細(xì)節(jié)中的一個或多個而實(shí)現(xiàn)本公開的其它實(shí)施例。最后,盡管在以下公開中參考了步驟和序列來描述各個方法,但是如此的描述是為了提供本公開的實(shí)施例的清楚實(shí)現(xiàn),且步驟以及步驟序列不應(yīng)被認(rèn)為是實(shí)現(xiàn)本公開所必需的。應(yīng)該理解,此處描述的各種技術(shù)可以結(jié)合硬件或軟件,或在適當(dāng)時結(jié)合兩者的組合來實(shí)現(xiàn)。因此,本公開的方法和裝置或其某些方面或部分,可以采用包含在諸如軟盤、CD-ROM、硬盤驅(qū)動器或任何其它機(jī)器可讀存儲介質(zhì)等有形介質(zhì)中的程序代碼(S卩,指令)的形式,其中,當(dāng)程序代碼被加載至諸如計(jì)算機(jī)等機(jī)器并由其運(yùn)行時,該機(jī)器成為用于實(shí)現(xiàn)本公開的裝置。在程序代碼在可編程計(jì)算機(jī)上執(zhí)行的情況下,計(jì)算設(shè)備通常包括處理器、該處理器可讀的存儲介質(zhì)(包括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入設(shè)備、以及至少一個輸出設(shè)備。一個或多個程序可以例如,通過使用應(yīng)用編程接口(API)、可重用控件等來實(shí)現(xiàn)或利用結(jié)合本公開所描述的過程。這樣的程序優(yōu)選地用高級過程語言或面向?qū)ο缶幊陶Z言來實(shí)現(xiàn),以與計(jì)算機(jī)系統(tǒng)通信。然而,如果需要,該程序可以用匯編語言或機(jī)器語言來實(shí)現(xiàn)。在任何情形中,語言可以是編譯語言或解釋語言,且與硬件實(shí)現(xiàn)相結(jié)合。
貫穿本公開使用的術(shù)語電路可包括諸如硬件中斷控制器、硬盤驅(qū)動器、網(wǎng)絡(luò)適配器、圖形處理器、基于硬件的視頻/音頻編解碼器等硬件組件,以及用于操作這些硬件的固件/軟件。術(shù)語電路還可包括被配置成通過固件或通過開關(guān)集來以特定方式執(zhí)行功能的微處理器,或一個或多個邏輯處理器,例如,多核通用處理單元的一個或多個核。此示例中的邏輯處理器可以通過從存儲器,例如,RAM、ROM、固件和/或虛擬存儲器中加載的體現(xiàn)可操作以執(zhí)行功能的邏輯的軟件指令來配置。在其中電路可包括硬件和軟件的組合的示例實(shí)施例中,實(shí)現(xiàn)者可以編寫具體化邏輯的源代碼,該源代碼隨后被編譯成可由邏輯處理器執(zhí)行的機(jī)器可讀代碼。因?yàn)楸绢I(lǐng)域技術(shù)人員可以明白,現(xiàn)有技術(shù)已經(jīng)進(jìn)化到硬件、軟件或硬件/軟件的組合之間幾乎沒有差別的地步,因而選擇硬件還是軟件來實(shí)現(xiàn)功能只是一個設(shè)計(jì)選擇。因此,由于本領(lǐng)域的技術(shù)人員可以理解軟件進(jìn)程可被變換成等效的硬件結(jié)構(gòu),且硬件結(jié)構(gòu)本身可被變換成等效的軟件進(jìn)程,因此選擇硬件實(shí)現(xiàn)或是軟件實(shí)現(xiàn)留給了實(shí)現(xiàn)者。本發(fā)明的各實(shí)施例可以在一個或多個計(jì)算機(jī)系統(tǒng)上執(zhí)行。圖I及以下討論旨在提供可在其中實(shí)現(xiàn)本發(fā)明的各實(shí)施例的合適計(jì)算環(huán)境的簡要概括描述。圖I描述了示例計(jì)算系統(tǒng)。計(jì)算系統(tǒng)可包括計(jì)算機(jī)20等,計(jì)算機(jī)20包括處理單元21。處理單元21可包括一個或多個處理器,它們中的每一個可具有一個或多個處理核。多核處理器(作為通常被稱為具有不止一個處理核的處理器)包括單個芯片封裝內(nèi)所包含的多個處理器。計(jì)算機(jī)20還可包括圖形處理單元(GPU) 90。GPU 90是被優(yōu)化以操縱計(jì)算機(jī)圖形的微處理器。處理單元21可將工作卸載到GPU 90。GPU 90可以具有其自己的圖形存儲器,和/或可以訪問系統(tǒng)存儲器22的一部分。如處理單元21那樣,GPU 90可包括一個或多個處理單兀,每一個都具有一個或多個核。計(jì)算機(jī)20還可包括系統(tǒng)存儲器22和系統(tǒng)總線23,系統(tǒng)總線23在系統(tǒng)處于操作狀態(tài)時將包括系統(tǒng)存儲器22的各個系統(tǒng)組件通信地耦合至處理單元21。系統(tǒng)存儲器22可包括只讀存儲器(ROM) 24和隨機(jī)存取存儲器(RAM) 25?;据斎?輸出系統(tǒng)26 (BIOS)被存儲在ROM 24中,該基本輸入/輸出系統(tǒng)26包含了諸如在啟動期間幫助在計(jì)算機(jī)20內(nèi)的元件之間傳輸信息的基本例程。系統(tǒng)總線23可以是若干類型的總線結(jié)構(gòu)中的任一種,包括實(shí)現(xiàn)各種總線體系結(jié)構(gòu)中的任一種的存儲器總線或存儲器控制器、外圍總線、以及局部總線。耦合到系統(tǒng)總線23的可以是直接存儲器存取(DMA)控制器80,該DMA控制器80被配置成獨(dú)立于處理單元21從存儲器讀取和/或?qū)懭氪鎯ζ鳌A硗?,連接到系統(tǒng)總線23 (諸如存儲驅(qū)動器接口 32或磁盤驅(qū)動器接口 33)的設(shè)備可被配置成也是獨(dú)立于處理單元21從存儲器讀取和/或?qū)懭氪鎯ζ?,而無需使用DMA控制器80。計(jì)算機(jī)20還包括用于讀寫硬盤(未示出)或固態(tài)盤(SSD)(未示出)的存儲驅(qū)動器27、用于讀寫可移動磁盤29的磁盤驅(qū)動器28,以及用于讀寫諸如⑶ROM或其他光學(xué)介質(zhì)之類的可移動光盤31的光盤驅(qū)動器30。硬盤驅(qū)動器27、磁盤驅(qū)動器28和光盤驅(qū)動器30被示為分別通過硬盤驅(qū)動器接口 32、磁盤驅(qū)動器接口 33和光盤驅(qū)動器接口 34來連接到系統(tǒng)總線23。驅(qū)動器及其相關(guān)聯(lián)的計(jì)算機(jī)可讀存儲介質(zhì)為計(jì)算機(jī)20提供了對計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊,及其他數(shù)據(jù)的非易失性存儲。雖然這里描述的示例環(huán)境采用硬盤、可移動磁盤29和可移動光盤31,但本領(lǐng)域技術(shù)人員應(yīng)理解,在該示例操作環(huán)境中也能使用可存儲能由計(jì)算機(jī)訪問的數(shù)據(jù)的其它類型的計(jì)算機(jī)可讀介質(zhì),如閃存卡、數(shù)字視頻盤、數(shù)字多功能盤((DVD)、隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)等。通常,這些計(jì)算機(jī)可讀存儲介質(zhì)能夠被用于一些實(shí)施例中來存儲實(shí)現(xiàn)本公開的各方面的處理器可執(zhí)行指令。計(jì)算機(jī)20也可包括主適配器55,其通過小型計(jì)算機(jī)系統(tǒng)接口(SCSI)總線56連接到存儲設(shè)備62。包括計(jì)算機(jī)可讀指令的若干程序模塊可存儲在諸如硬盤、磁盤29、光盤31、ROM24或RAM 25之類的計(jì)算機(jī)可讀介質(zhì)上,包括操作系統(tǒng)35、一個或多個應(yīng)用程序36、其他程序模塊37、以及程序數(shù)據(jù)38。一旦由處理單元執(zhí)行,計(jì)算機(jī)可讀指令使得下文中更詳細(xì)描述的動作被執(zhí)行或使得各種程序模塊被實(shí)例化。用戶可以通過諸如鍵盤40和定點(diǎn)設(shè)備42之類的輸入設(shè)備向計(jì)算機(jī)20中輸入命令和信息。其他輸入設(shè)備(未示出)可包括話筒、游戲桿、游戲手柄、圓盤式衛(wèi)星天線、掃描儀等等。這些及其他輸入設(shè)備常常通過耦合到系統(tǒng)總線的串行端口接口 46連接到處理單元21,但是,也可以通過諸如并行端口、游戲端口、通用串行總線(USB)之類的其他接口來連接。顯示器47或其他類型的顯示設(shè)備也可以通過諸如視頻適配器48之類的接口連接到系統(tǒng)總線23。除了顯示器47之外,計(jì)算機(jī)通常包括其他外圍輸出設(shè)備(未不出),如揚(yáng)聲器和打印機(jī)。計(jì)算機(jī)20可使用到一個或多個遠(yuǎn)程計(jì)算機(jī)(諸如,遠(yuǎn)程計(jì)算機(jī)49)的邏輯連接而在聯(lián)網(wǎng)環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)49可以是另一個計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等設(shè)備或其它公共網(wǎng)絡(luò)節(jié)點(diǎn),并通常可包括以上相對于計(jì)算機(jī)20描述的許多或所有元件,但是在圖I中只示出存儲器存儲設(shè)備50。圖I中所描繪的邏輯連接可包括局域網(wǎng)(LAN) 51和廣域網(wǎng)(WAN)52。這樣的聯(lián)網(wǎng)環(huán)境在辦公室、企業(yè)范圍的計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中是普遍的。當(dāng)用于LAN聯(lián)網(wǎng)環(huán)境中時,計(jì)算機(jī)20可通過網(wǎng)絡(luò)接口或適配器53連接到LAN 51。當(dāng)用于WAN聯(lián)網(wǎng)環(huán)境中時,計(jì)算機(jī)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)境中,相對于計(jì)算機(jī)20所示的程序模塊或其部分可被存儲在遠(yuǎn)程存儲器存儲設(shè)備中。應(yīng)當(dāng)理解,所示的網(wǎng)絡(luò)連接是示例性的,并且可使用在計(jì)算機(jī)之間建立通信鏈路的其他手段。在其中計(jì)算機(jī)20被配置成在聯(lián)網(wǎng)環(huán)境中操作的實(shí)施例中,OS 35被遠(yuǎn)程存儲在網(wǎng)絡(luò)上,而計(jì)算機(jī)20可通過網(wǎng)絡(luò)啟動這一遠(yuǎn)程存儲的OS,而不是從本地存儲的OS中啟動。在一實(shí)施例中,計(jì)算機(jī)20包括瘦客戶機(jī),其中OS 35少于完整的OS,而是被配置成處理聯(lián)網(wǎng)以及諸如在監(jiān)視器47上顯示輸出的內(nèi)核。圖2概括地示出了其中可實(shí)現(xiàn)本發(fā)明的各方面的示例環(huán)境。例如,服務(wù)器204可實(shí)現(xiàn)圖8-9的操作過程,而客戶機(jī)201可實(shí)現(xiàn)圖10-11的操作過程。本領(lǐng)域技術(shù)人員可理解,示出圖2所描繪的示例元素是為了提供用于描述本發(fā)明的操作框架。因此,在一些實(shí)施例中,每個環(huán)境的物理布局可取決于不同的實(shí)現(xiàn)方案而有所不同。因此,該示例操作框架將僅被視為說明性的且不以任何方式限制權(quán)利要求的范圍。圖2中所描繪的是服務(wù)器204,服務(wù)器204可包括被配置成實(shí)現(xiàn)遠(yuǎn)程呈現(xiàn)會話服務(wù)器的電路,或者在某些實(shí)施例中,服務(wù)器204可包括被配置成支持遠(yuǎn)程桌面連接的電路。在所描繪的示例中,服務(wù)器204可被配置成生成用于連接客戶機(jī)的一個或多個會話,諸如會話I到N(其中N是大于2的整數(shù))。簡言之,在本發(fā)明的示例實(shí)施例中,會話一般可包括
由被配置成與服務(wù)器204的內(nèi)核214交互的多個子系統(tǒng)(例如,軟件代碼)實(shí)現(xiàn)的操作環(huán)境。例如,會話可包括實(shí)例化諸如桌面窗口之類的用戶界面的進(jìn)程、跟蹤該窗口內(nèi)的鼠標(biāo)移動的子系統(tǒng)、將圖標(biāo)上的鼠標(biāo)點(diǎn)擊轉(zhuǎn)換成實(shí)現(xiàn)程序?qū)嵗拿畹淖酉到y(tǒng)等。會話可由服務(wù)器204在逐用戶基礎(chǔ)上生成,例如在服務(wù)器204在網(wǎng)絡(luò)連接上接收到來自客戶機(jī)201的連接請求時由服務(wù)器204生成。一般而言,連接請求首先可由傳輸邏輯210處理,傳輸邏輯210例如可由服務(wù)器204的電路實(shí)現(xiàn)。在一些實(shí)施例中,傳輸邏輯210可包括網(wǎng)絡(luò)適配器、可被配置成接收連接消息并將其轉(zhuǎn)發(fā)給引擎212的固件和軟件。如圖2所示,在一些實(shí)施例中,傳輸邏輯210可包括每個會話的協(xié)議棧實(shí)例。一般而言,每個協(xié)議棧實(shí)例可被配置成將用戶接口輸出路由到客戶機(jī),以及將從客戶機(jī)接收到的用戶輸入路由到與其會話相關(guān)聯(lián)的會話核心244。繼續(xù)圖2的一般性描述,在本發(fā)明的一些示例實(shí)施例中,引擎212可被配置成處理對會話的請求;確定每個會話的功能;通過為會話分配一組物理資源來生成會話;以及實(shí)例化會話的協(xié)議棧實(shí)例。在一些實(shí)施例中,引擎212可由能實(shí)現(xiàn)上述操作過程中的一部分的專門電路組件來實(shí)現(xiàn)。例如,一些示例實(shí)施例中,該電路在可包括存儲器以及配置成執(zhí)行實(shí)現(xiàn)引擎212的代碼的處理器。如圖2所描繪地,在一些情況下,引擎212可接收連接請求并確定例如許可證可用,并且可為該請求生成會話。在服務(wù)器204是包括遠(yuǎn)程桌面能力的遠(yuǎn)程計(jì)算機(jī)的情形中,引擎212可被配置成響應(yīng)于連接請求生成會話而不檢查許可。如圖2所示,會話管理器216可被配置成接收來自引擎212的消息,并且響應(yīng)于該消息,會話管理器216可將會話標(biāo)識符添加到表中;向該會話標(biāo)識符指派存儲器;以及在指派給該會話標(biāo)識符的存儲器中生成系統(tǒng)環(huán)境變量和子系統(tǒng)進(jìn)程的實(shí)例。如圖2所示,會話管理器216可實(shí)例化諸如運(yùn)行時子系統(tǒng)240之類的環(huán)境子系統(tǒng),該子系統(tǒng)可包括諸如會話核心244之類的內(nèi)核模式部分。例如,在一實(shí)施例中,環(huán)境子系統(tǒng)被配置成將一些服務(wù)子集展示給應(yīng)用程序并向操作系統(tǒng)214的內(nèi)核提供接入點(diǎn)。在示例實(shí)施例中,運(yùn)行時子系統(tǒng)240可控制進(jìn)程和線程的執(zhí)行,并且會話核心244可向內(nèi)核214的執(zhí)行程序發(fā)送請求以向線程分配存儲器并調(diào)度執(zhí)行它們的時間。在一實(shí)施例中,會話核心244可包括圖形顯示界面246 (⑶I)、安全子系統(tǒng)250和輸入子系統(tǒng)252。在這些實(shí)施例中,輸入子系統(tǒng)252可被配置成經(jīng)由與該會話相關(guān)聯(lián)的協(xié)議棧實(shí)例接收來自客戶機(jī)201的用戶輸入并將該輸入傳送給合適會話的會話核心244。在一些實(shí)施例中,用戶輸入可包括指示絕對和/或相對鼠標(biāo)移動命令、鼠標(biāo)坐標(biāo)、鼠標(biāo)點(diǎn)擊、鍵盤信號、操縱桿移動信號等的信號。例如圖標(biāo)上的鼠標(biāo)雙擊的用戶輸入可被會話核心244接收,并且輸入子系統(tǒng)252可被配置成確定圖標(biāo)位于與該雙擊相關(guān)聯(lián)的坐標(biāo)處。輸入子系統(tǒng)252隨后可被配置成向可執(zhí)行與該圖標(biāo)相關(guān)聯(lián)的應(yīng)用的進(jìn)程的運(yùn)行時子系統(tǒng)240發(fā)送通知。
除了接收來自客戶機(jī)201的輸入之外,還可從應(yīng)用和/或桌面接收繪制命令并由 ⑶I 246來處理。⑶I 246 —般可包括能生成圖形對象繪制命令的進(jìn)程。⑶I 246在該示例實(shí)施例中可被配置成將其輸出傳遞給遠(yuǎn)程顯示子系統(tǒng)254,在此命令針對附連到該會話的顯示驅(qū)動器被格式化。在某些示例實(shí)施例中,一個或多個物理顯示器可被附連到服務(wù)器 204,例如在遠(yuǎn)程桌面情形中。在這些示例實(shí)施例中,遠(yuǎn)程顯示子系統(tǒng)254可被配置成鏡像由遠(yuǎn)程計(jì)算機(jī)系統(tǒng)的顯示驅(qū)動器呈現(xiàn)的繪制命令、并經(jīng)由與該會話相關(guān)聯(lián)的棧實(shí)例將鏡像信息傳送給客戶機(jī)201。在服務(wù)器204是遠(yuǎn)程呈現(xiàn)會話服務(wù)器的另一示例實(shí)施例中,遠(yuǎn)程顯示子系統(tǒng)254可被配置成包括可不與物理上附連到服務(wù)器204的顯示器相關(guān)聯(lián)的虛擬顯示驅(qū)動器,例如服務(wù)器204可無頭地(headless)運(yùn)行。遠(yuǎn)程顯示子系統(tǒng)254在該實(shí)施例中可被配置成接收針對一個或多個虛擬顯示器的繪制命令并將它們經(jīng)由與該會話相關(guān)聯(lián)的棧實(shí)例傳送給客戶機(jī)201。在本發(fā)明的實(shí)施例中,遠(yuǎn)程顯示子系統(tǒng)254可被配置成確定每個顯示驅(qū)動器的顯示分辨率,例如確定與虛擬顯示器相關(guān)聯(lián)的虛擬顯示驅(qū)動器的顯示分辨率或與物理顯示器相關(guān)聯(lián)的顯示驅(qū)動器的顯示分辨率;以及經(jīng)由相關(guān)聯(lián)的協(xié)議棧實(shí)例將分組路由到客戶機(jī)201。
在一些示例實(shí)施例中,會話管理器216可附加地實(shí)例化與該會話的會話標(biāo)識符相關(guān)聯(lián)的可被配置成處理該會話的登入和登出的登錄進(jìn)程的實(shí)例。在這些示例實(shí)施例中,指示與登錄進(jìn)程相關(guān)聯(lián)的圖形用戶界面的繪制命令可被傳送給客戶機(jī)201,在那里,客戶機(jī) 201的用戶可向登錄屏幕輸入帳戶標(biāo)識符(例如用戶名/ 口令組合)、智能卡標(biāo)識符、和/或生物測定信息。該信息可被傳送給服務(wù)器204并被路由至引擎212以及會話核心244的安全子系統(tǒng)250。例如,在某些示例實(shí)施例中,引擎212可被配置成確定用戶帳戶是否與許可證相關(guān)聯(lián);并且安全子系統(tǒng)250可被配置成生成該會話的安全令牌。
圖3描繪以4:4:4方案子采樣的示例圖像。4:4:4 (以及其他子采樣方案)中的每一數(shù)字是指對源圖像執(zhí)行的子采樣的量。子采樣通常可被表達(dá)成J: a: b子采樣,其中,J是指一行采樣區(qū)域中的像素數(shù)量以及所取的亮度樣本數(shù)量(YUV色彩空間中的Y),a是指在J 像素的第一行所取的色度樣本數(shù)量(YUV色彩空間中的U和V),而b是指除數(shù)量a以外在J 像素的第二行中所取的色度樣本數(shù)量(b色度樣本也可以是YUV色彩空間中的U和V)。
圖像300是從中產(chǎn)生子采樣圖像302的示例圖像。圖像300具有4像素的寬/行, 以及2像素的高/列。像素數(shù)量在圖像300和采樣圖像302之間保持相同——4像素的寬和2像素的高。針對圖像302中的亮度,圖像300的每一像素已經(jīng)被分開采樣——用“X” 標(biāo)記像素表示該像素是針對亮度來采樣的。另外,針對圖像302中的色度,圖像300的每一像素已經(jīng)被分開采樣——用“ο”標(biāo)記像素表示該像素是針對色度來采樣的。
經(jīng)采樣的圖像302表示圖像300的4:4:4樣本,因?yàn)镴、a和b各自都等于4。J為 4,因?yàn)樗懻摰牟蓸訁^(qū)域?yàn)樗南袼貙?。a為4,因?yàn)獒槍ι葘斝蟹珠_采樣4次——每次一個像素。b也為4,因?yàn)獒槍ι葘Φ仔杏址珠_采樣4次(相對于對頂行抽取的4個色度樣本又分開進(jìn)行4次)。
圖4描繪以4:2:0格式采樣的圖3的示例圖像300。4:2:0子采樣不同于圖3的圖像302中所描繪的4:4:4子采樣,因?yàn)閷D像300抽取更少的色度樣本。這里,針對集體 8個像素僅抽取兩個色度樣本,如經(jīng)4:2:0子采樣的圖像402中描繪的。在4:2:0子采樣方案中,a為2,因此在頂行中有兩個色度樣本被抽取。另外,b為0,因此在底行中沒有附加的色度樣本被抽取。即,對于左邊的四像素組404有一個色度樣本被抽取,而對于右邊的四像素組406有一個色度樣本被抽取。在4:4:4子采樣的圖像302與4:2:0子采樣的圖像402 之間比較可以看到,4:2:0子采樣方案一般可允許以較小數(shù)據(jù)量來存儲圖像,而伴隨有保真度損失。4:4:4子采樣的圖像302包含16個樣本——亮度8個以及色度8個。4:2:0子采樣的圖像402包含10個樣本——亮度8個以及色度2個。
圖5描繪以4:0:0方案子采樣的圖3的示例圖像300。如所描繪的,4:0:0采樣的圖像502中8個像素中的每一個都是針對亮度來采樣的,而這些像素都不是針對色度來采樣的。4:0:0 —般可被認(rèn)為是單色的,因?yàn)樗鼘α炼冗M(jìn)行采樣而不對色度進(jìn)行采樣。盡管 4:0:0由于通常用于僅對亮度值進(jìn)行子采樣而一般可被認(rèn)為是灰度級,但在本發(fā)明的各實(shí)施例中4:0:0可用于僅對某些色度值進(jìn)行采樣。即,如參考附圖來描述的,色度數(shù)據(jù)(即,U 或V而不是Y)可以以4:0:0方案來采樣,使得該色度數(shù)據(jù)被采樣,但其他色度數(shù)據(jù)(即,U或 V的其他色度數(shù)據(jù))和亮度數(shù)據(jù)兩者都不被采樣。
圖6描繪實(shí)現(xiàn)本發(fā)明的各實(shí)施例的編碼器的示例體系結(jié)構(gòu)。圖6的編碼器體系結(jié)構(gòu)可例如在圖2的服務(wù)器204中實(shí)現(xiàn),該服務(wù)器與圖2的客戶機(jī)201進(jìn)行遠(yuǎn)程呈現(xiàn)會話,并且可實(shí)現(xiàn)圖7中描述的解碼器的示例體系結(jié)構(gòu)。在本發(fā)明實(shí)現(xiàn)期間的各個時間,圖6的示例體系結(jié)構(gòu)可取諸如圖3的圖像300之類的圖像,并且從中產(chǎn)生4:4:4采樣的圖3的圖像 302、4:2:0采樣的圖4的圖像402、和/或4:0:0采樣的圖5的圖像502。
最初,數(shù)據(jù)的幀以RGB格式來捕捉,并且用作到編碼器的輸入600。這一數(shù)據(jù)的幀可例如在圖2的⑶I 246將其輸出傳遞給圖2的遠(yuǎn)程顯示子系統(tǒng)254時被捕捉,其中圖6 的體系結(jié)構(gòu)在遠(yuǎn)程顯示子系統(tǒng)254中實(shí)現(xiàn)。
色彩轉(zhuǎn)換組件602取輸入幀600并將其從RGB色彩空間變換到Y(jié)UV色彩空間(有時被稱為Y’ UV、YCbCr、或YPbPr),并且從中創(chuàng)建三個分量巾貞——Y分量幀、U分量幀和V分量幀。這三個分量幀然后由一個或多個編碼器進(jìn)程分開地進(jìn)行編碼。Y、U和V值可使用以下它們之間的關(guān)系和RGB值來確定
Y=O. 299*R+0. 114*G+0. 587*B
U=O. 436 (B - Y/0. 886)
V=O. 615 (R-Y/0. 701)
在各實(shí)施例中,色彩轉(zhuǎn)換組件602將輸入幀600從RGB色彩空間變換到Y(jié)UV色彩空間。色彩轉(zhuǎn)換組件602然后將YUV幀平面化為三個分開的分量巾貞——各自對應(yīng)于Y、U和 V分量。這可諸如通過用位掩碼處理YUV幀來完成。例如,其中YUV幀的每一像素使用24 位(Y、U和V值各8位)來表達(dá),Y分量幀可通過用OxFFOOOO位掩碼對每一像素進(jìn)行邏輯與來確定(用OxOOFFOO和OxOOOOFF位掩碼分別確定U和Y幀)。在本發(fā)明的各實(shí)施例中,像素可以用數(shù)量不同于24的位來表達(dá),諸如32位,其中阿爾法值使用8位來表示。
在各實(shí)施例匯總,可以更改U和V值的相應(yīng)分組幀內(nèi)存儲U和V值的位置,使得它們的值被存儲在每一像素的值的開頭。即,U和Y分量幀中的每一像素分別按位左移8和 16位(使用上面的24位值的示例)。例如,包含值為OxOOFFOO的像素的U分量幀可按位左移8位,以產(chǎn)生值為OxFFOOOO的像素。丟棄值的最左邊8位,將值的最右邊16位向左移8 位,并且將8個零附加到該值。
由于編碼器608和610被配置成執(zhí)行4:0:0子采樣,其中僅對亮度值通常位于的那些位進(jìn)行子采樣,所以本發(fā)明的各實(shí)施例可對U和V分量幀執(zhí)行按位移動。通過按位移動U和Y分量幀,使得它們的U和V值存儲在每一像素值的最左邊部分,并且被配置成執(zhí)行 4:0:0子采樣的編碼器可用于對這些U和V分量幀進(jìn)行子采樣,其中U和V值通常不存儲在像素值的最左邊的各位中。
本發(fā)明的各實(shí)施例可不必將輸入幀600從RGB色彩空間轉(zhuǎn)換到Y(jié)UV色彩空間,而是更一般地從第一色彩空間轉(zhuǎn)換到第二色彩空間。此外,在本發(fā)明的各實(shí)施例中,可能根本不將幀從第一色彩空間轉(zhuǎn)換到第二色彩空間。在其中輸入幀在幀編碼器606-610對其進(jìn)行編碼的同一色彩空間中被生成的本發(fā)明的實(shí)施例中,可能不將輸入幀600從第一色彩空間轉(zhuǎn)換到第二色彩空間。
將由色彩轉(zhuǎn)換組件602生成的Y、U和V分量幀分別發(fā)送到幀編碼器606-610。編碼組件在這里被描繪成Y幀編碼器606、u幀編碼器608、和V幀編碼器610。這一描繪是邏輯描繪,且在本發(fā)明的各實(shí)施例中,編碼器606、608和610可以是或可以不是分開的編碼器進(jìn)程或組件。例如,在圖6的編碼器被實(shí)現(xiàn)成多處理器或多核計(jì)算機(jī)系統(tǒng)上的進(jìn)程的情況下,編碼器606、608和610可以是分開的編碼器進(jìn)程。在圖6的編碼器在單處理器或單核計(jì)算機(jī)系統(tǒng)上被實(shí)現(xiàn)、或只能訪問一個處理器或核的情況下,編碼器606、608和610可以是串行處理Y、U和V幀的一個編碼器進(jìn)程。
除來自色彩轉(zhuǎn)換組件602的Y、U和V分量幀以外,編碼器606、608和610還可取輸入604作為輸入,該輸入表不巾貞內(nèi)預(yù)測編碼和/或量化的模式。輸入604可表不巾貞內(nèi)預(yù)測4x4像素亮度塊或16x16像素亮度塊的模式。在各實(shí)施例中,對4x4像素塊的預(yù)測可通過以下輸入604來指示垂直、水平、對角線向左下、對角線向右下、垂直向右、水平向下、垂直向左、水平向上、或DC。在各實(shí)施例中,對16x16像素塊的預(yù)測可由以下輸入604來指示 垂直、水平、平面、或DC。
在量化中,值的一個或多個最低有效位可被丟棄,以降低其中可存儲該值的空間量。在各實(shí)施例中,量化可通過將值邏輯地右移指定數(shù)量的位來實(shí)現(xiàn)。在本發(fā)明的各實(shí)施例中,輸入604可指示要執(zhí)行的量化量,且可基于要發(fā)送給客戶機(jī)的比特流614的目標(biāo)比特率。在各實(shí)施例中,可以對U和V值比Y值進(jìn)行更多量的量化。這可能由于與缺少亮度信息相比人類一般更不能察覺缺少色度信息,因此色度數(shù)據(jù)比亮度信息更容易被丟棄,而不會造成可察覺的圖像保真度損失。
Y巾貞編碼器606以4:0:0格式輸出Y分量巾貞的編碼的版本。Y分量巾貞可以取圖3的圖像300,并從中產(chǎn)生圖5的以4:0:0子采樣的圖像502。Y幀編碼器606可首先以4:0:0 方案對Y分量幀進(jìn)行采樣,然后對它進(jìn)行編碼,諸如H. 264視頻的I幀。I幀是這樣一種幀 它表達(dá)視頻的幀,而無需使用來自在先幀或在后幀的信息。作為對比,P幀引用來自先前幀的數(shù)據(jù),而B幀引用來自先前幀和/或后續(xù)幀的數(shù)據(jù)。
類似于Y幀編碼器606所執(zhí)行的操作,U幀編碼器608以4:0:0格式輸出U分量幀的編碼的版本,而V幀編碼器610以4:0:0格式輸出V分量幀的編碼的格式。編碼器606、 608和610中的每一個將它們的編碼的幀發(fā)送給比特流聚集器612。
比特流聚集器612將編碼的幀編碼成比特流。在H. 264視頻被流傳輸?shù)娇蛻魴C(jī)的情況下,這一比特流可包括H. 264視頻流。比特流聚集器612 —般可以取編碼的幀,并將它們匯編成數(shù)據(jù)流,該數(shù)據(jù)流跨計(jì)算機(jī)網(wǎng)絡(luò)被流傳輸?shù)搅硪挥?jì)算機(jī)以供該另一計(jì)算機(jī)顯示。
比特流聚集器612還可在向客戶機(jī)發(fā)送比特流之前封裝該比特流。如所描繪的, 幀先前可能已經(jīng)通過編碼器608-610被壓縮,并且還可能進(jìn)一步由比特流聚集器612來壓縮。這可包括批量壓縮技術(shù),諸如Lempel-Ziv壓縮(例如,LZ77壓縮)。在聚集編碼的分量幀之后,比特流聚集器612將編碼的比特流614發(fā)送給RDP組件(未描繪),RDP組件然后將特比流傳送給客戶機(jī)(諸如圖2的客戶機(jī)201)以供解碼和顯示。
圖7描繪實(shí)現(xiàn)本發(fā)明的各實(shí)施例的解碼器的示例體系結(jié)構(gòu)。圖7的解碼器器體系結(jié)構(gòu)可例如在圖2的客戶機(jī)201中實(shí)現(xiàn),該客戶機(jī)與圖2的服務(wù)器204進(jìn)行遠(yuǎn)程呈現(xiàn)會話, 并且可實(shí)現(xiàn)圖6中描述的編碼器的示例體系結(jié)構(gòu)??缤ㄐ啪W(wǎng)絡(luò)接收網(wǎng)絡(luò)數(shù)據(jù)700。在各實(shí)施例中,網(wǎng)絡(luò)數(shù)據(jù)700是對圖6的編碼的比特流614的表示。
網(wǎng)絡(luò)數(shù)據(jù)700用解碼器702來解碼,以便為每一幀產(chǎn)生三個分量巾貞——Y分量幀、 U分量真、和V分量幀。網(wǎng)絡(luò)數(shù)據(jù)700被編碼成H. 264視頻并且以遠(yuǎn)程呈現(xiàn)協(xié)議來封裝,解碼器702可對網(wǎng)絡(luò)數(shù)據(jù)700進(jìn)行去封裝和解碼。解碼器700可將網(wǎng)絡(luò)數(shù)據(jù)700解碼成對單個幀的Y、U和V分量幀的表示,4:0:0子采樣方案中的Y、U和V分量。網(wǎng)絡(luò)數(shù)據(jù)702可被解碼成分量幀的表示而不是分量幀的副本,其中在分量幀作為網(wǎng)絡(luò)數(shù)據(jù)被發(fā)送之前已經(jīng)對分量幀執(zhí)行了某種有損編碼。例如,分量幀在作為網(wǎng)絡(luò)數(shù)據(jù)700被發(fā)送之前可能已經(jīng)被量化。在其中分量幀已被量化的這種情況下,解碼器702可能無法重新創(chuàng)建分量幀的重復(fù),而只是量化的分量幀的重復(fù)。
然后將用解碼器702所產(chǎn)生的這三個分量幀發(fā)送到幀聚集器704,幀聚集器704將分量幀聚集成包含每一分量值的單個幀。在各實(shí)施例中,幀聚集器704可通過以下操作將分量幀組合成單個幀首先將U和V分量幀分別按位右移8和16位,并且對這三個分量幀進(jìn)行邏輯或。
在用幀數(shù)量的指示來標(biāo)記分量幀(例如,單個幀被分成三個分量幀,那些幀中的每一個都用對同一幀的指示來標(biāo)記)的實(shí)施例中,幀聚集器704確定對每一分量幀的幀數(shù)量的指示,并且聚集那些共享同一指示的分量幀。
幀聚集器704然后將聚集的幀發(fā)送給色彩轉(zhuǎn)換組件706。色彩轉(zhuǎn)換組件被配置成將幀從第一色彩空間轉(zhuǎn)換到第二色彩空間。這里,在YUV色彩空間中從幀聚集器704接收幀并且要在RGB色彩空間中將幀顯示在顯示設(shè)備上的情況下,色彩轉(zhuǎn)換組件706可將幀從 YUV色彩空間轉(zhuǎn)換到RGB色彩空間。色彩轉(zhuǎn)換組件706然后可將RGB色彩空間708的幀輸出到這一顯示設(shè)備以供顯示。
圖8描繪實(shí)現(xiàn)本發(fā)明的各實(shí)施例的編碼器的示例操作過程。在各實(shí)施例中,圖8 的操作過程可在圖2的遠(yuǎn)程呈現(xiàn)服務(wù)器204中實(shí)現(xiàn)。在本發(fā)明的各實(shí)施例中,并非圖8的所有操作過程都被實(shí)現(xiàn),和/或圖8的操作過程可以按不同于所描繪的順序來實(shí)現(xiàn)。對于下文圖9-11的操作過程也同樣適用。
操作802描繪接收RGB格式的幀。可以按與圖6的色彩轉(zhuǎn)換組件602接收圖6的RDP輸入600的類似方式來接收RGB格式的幀。
操作804描繪了諸如通過將幀轉(zhuǎn)換成Y分量幀、U分量幀和V分量幀,來將幀轉(zhuǎn)換成YUV并且對幀進(jìn)行平面化??梢园磁c如何實(shí)現(xiàn)圖6的色彩轉(zhuǎn)換組件602類似的方式來實(shí)現(xiàn)操作804。在各實(shí)施例中,可響應(yīng)于確定幀是屏幕數(shù)據(jù)來執(zhí)行操作804。在各實(shí)施例中, 操作804包括用共享指示來標(biāo)記幀的每一分量幀,使得三個分量幀可被標(biāo)識成屬于或源自同一幀。在這樣的實(shí)施例中,操作804可包括用對幀的引用來標(biāo)記編碼的Y、U和V分量幀中的每一個。
操作806描繪了以4:0:0子采樣格式來編碼Y、U和V分量幀中的每一個。4:0:0 子采樣格式一般可包括對圖像數(shù)據(jù)的像素值進(jìn)行子采樣??墒褂镁幋a器來執(zhí)行操作806,該編碼器不被配置成以4:0:0子采樣方案(在這一方案中,每一像素的每一值被單獨(dú)采樣—— 例如,每一像素的每一 Y、U和V值都被單獨(dú)采樣)對幀進(jìn)行編碼,而是被配置成以并非分開采樣每一色度值的子采樣方案(諸如4:2:0)來對幀進(jìn)行編碼。操作806可在圖6的Y幀編碼器606、U幀編碼器608和V幀編碼器610中實(shí)現(xiàn)。在各實(shí)施例中,操作806包括用H. 264 幀內(nèi)編碼器以4:0:0子采樣方案來編碼Y、U和V分量幀中的每一個。
在各實(shí)施例中,編碼操作806基于以下預(yù)測的類型來執(zhí)行。在這樣的實(shí)施例中,操作806可包括確定編碼器用來對Y、U和V分量幀中的每一個進(jìn)行編碼的幀內(nèi)預(yù)測級別,以及基于該幀內(nèi)預(yù)測級別使用編碼器來對Y、U和V分量幀中的每一個進(jìn)行幀內(nèi)預(yù)測編碼。這一幀內(nèi)預(yù)測編碼可基于確定實(shí)現(xiàn)圖8的操作過程的計(jì)算機(jī)可用的可用計(jì)算資源量來執(zhí)行。
在各實(shí)施例中,編碼操作806包括執(zhí)行量化。在這樣的實(shí)施例中,操作806可包括確定量化該編碼的Y、U和V分量幀的量化量,以及在將編碼的Y、U和V分量幀編碼成遠(yuǎn)程呈現(xiàn)會話協(xié)議比特流之前量化該編碼的Y、U和V分量幀的量化量。在各實(shí)施例中,確定量化該編碼的Y、u和V分量幀的量化量包括確定量化Y分量幀的第一量化量,以及量化U和 V分量幀的第二量化量,該第一量化量比第二量化量少。在各實(shí)施例中,確定量化該編碼的 Y、U和V分量幀的量化量是基于比特流的目標(biāo)比特率。
操作808描繪了將編碼的Y、U和V分量幀編碼成遠(yuǎn)程呈現(xiàn)會話協(xié)議比特流。操作 808可在圖6的比特流聚集器612中實(shí)現(xiàn)。
操作810描繪了經(jīng)由遠(yuǎn)程呈現(xiàn)會話將比特流發(fā)送給計(jì)算機(jī),計(jì)算機(jī)對比特流進(jìn)行解碼,以便產(chǎn)生對4:0:0格式的Y、U和V分量幀中的每一個的表示,并且將Y、U和V分量幀中的每一個的表示組合成計(jì)算機(jī)在顯示設(shè)備上顯示的4:4:4格式的YUV巾貞。比特流發(fā)往的計(jì)算機(jī)可以是圖2的客戶機(jī)201。
圖9描繪實(shí)現(xiàn)本發(fā)明的各實(shí)施例的編碼器的附加示例操作過程。圖9的操作過程可在實(shí)現(xiàn)圖8的操作過程的同一計(jì)算機(jī)(諸如圖2的服務(wù)器204)上被實(shí)現(xiàn)。圖8描繪了其中圖形數(shù)據(jù)被解碼并作為視頻發(fā)送到客戶機(jī)計(jì)算機(jī)的操作過程,其中客戶機(jī)可重新創(chuàng)建接收到的4:4:4方案的視頻的幀,而圖9描繪了其中圖形數(shù)據(jù)被解碼并作為涉及較少的次采樣的方案的視頻(諸如4:2:0方案的視頻)發(fā)送到客戶機(jī)計(jì)算機(jī)的操作過程。圖8和9的操作過程都可在同一計(jì)算機(jī)上實(shí)現(xiàn),且用于單個遠(yuǎn)程呈現(xiàn)會話內(nèi)以便對所生成的不同類型的圖形數(shù)據(jù)進(jìn)行編碼。即,在計(jì)算機(jī)正在編碼一種類型的數(shù)據(jù)(諸如屏幕數(shù)據(jù)——計(jì)算機(jī)桌面的圖形輸出——其中可能存在文本)的情況下,計(jì)算機(jī)可使用圖8的操作過程,而在計(jì)算機(jī)正在編碼另一類型的數(shù)據(jù)(諸如視頻)的情況下,計(jì)算機(jī)可使用圖9的操作過程。
操作902描繪了接收RGB格式的第二幀。在各實(shí)施例中,操作902可按與圖6的色彩轉(zhuǎn)換組件602接收RGB輸入600相似的方式來實(shí)現(xiàn)。
操作904描繪了基于第二幀為視頻數(shù)據(jù)來確定不對第二幀進(jìn)行平面化。在各實(shí)施例中,操作902可包括基于第二幀為視頻數(shù)據(jù)來確定不將幀轉(zhuǎn)換成第二 Y分量幀、第二 Y分量幀和第二 V分量幀。在幀是有可能包含文本的屏幕數(shù)據(jù)、因此其攜帶的保真度要比其他類型的數(shù)據(jù)攜帶的保真度重要性更高的情況下,可能要將幀平面化成分量幀并且隨后對其進(jìn)行編碼(使得4:4:4子采樣方案的幀可由客戶機(jī)接收)。這里,第二幀被確定為視頻數(shù)據(jù), 因此,作為結(jié)果,幀可能不被轉(zhuǎn)換成其分量幀。
操作906描繪了將第二幀轉(zhuǎn)換成YUV格式。在各實(shí)施例中,操作906可在圖6的色彩轉(zhuǎn)換組件602中實(shí)現(xiàn),盡管在這一情況下,色彩轉(zhuǎn)換組件602可能不將第二幀平面化成分量中貞。
操作908描繪了用編碼器來編碼經(jīng)轉(zhuǎn)換的第二幀。在各實(shí)施例中,第二幀可由編碼器以少于4:4:4的子采樣方案(諸如4:2:2或4:2:0的子采樣方案)來編碼。無論如何, 圖8中用于以4:0:0子采樣方案來編碼分量幀(且這些分量幀之后可被重新匯編成對4:4:4 子采樣方案的幀的表示)的同一編碼器在操作908中可用于以4:2:0子采樣方案編碼第二幀。在本發(fā)明的各實(shí)施例中,對第二幀進(jìn)行編碼可包括將第二幀編碼成H. 264視頻的幀。
操作910描繪了將編碼的第二幀編碼成遠(yuǎn)程呈現(xiàn)會話協(xié)議比特流。操作910可按與如何實(shí)現(xiàn)圖8的操作808類似的方式來實(shí)現(xiàn)。
操作910描繪了經(jīng)由遠(yuǎn)程呈現(xiàn)會話將比特流發(fā)送給計(jì)算機(jī)。計(jì)算機(jī)然后可基于比特流將對第二幀的表示顯示在顯示設(shè)備上。操作912可按與如何實(shí)現(xiàn)圖8的操作810類似的方式來實(shí)現(xiàn)。
圖10描繪實(shí)現(xiàn)本發(fā)明的各實(shí)施例的解碼器的示例操作過程。在各實(shí)施例中,圖10 的操作過程可用于實(shí)現(xiàn)圖7的界面區(qū),并且用于解碼由圖6的編碼器所生成的比特流。
操作1002描繪了經(jīng)由遠(yuǎn)程呈現(xiàn)會話接收比特流,比特流包括幀的第一、第二、第三分量幀,第一、第二和第三分量幀中的每一個為4:0:0子采樣格式。這可以是在圖8的操作810中所生成的比特流。第一、第二、和第三分量幀可以分別是YUV幀的Y、U和V分量幀。在其中用遠(yuǎn)程呈現(xiàn)協(xié)議來封裝經(jīng)由遠(yuǎn)程呈現(xiàn)會話接收到的比特流的實(shí)施例中,操作 1002可包括對比特流去封裝。
操作1004描繪了諸如使用解碼器來解碼第一、第二、和第三分量幀中的每一個。 在各實(shí)施例中,操作1002可在圖7的解碼器702中實(shí)現(xiàn)。在各實(shí)施例中,解碼器不被配置成以4:0:0子采樣方案對幀進(jìn)行解碼,解碼器而是被配置成以4:2:0子采樣方案對幀進(jìn)行解碼。
操作1006描繪了將第一、第二和第三分量幀相組合以便產(chǎn)生4:4:4格式的幀。在各實(shí)施例中,操作1006可在圖7的幀聚集器704中實(shí)現(xiàn)。在各實(shí)施例中,操作1006可包括通過邏輯或操作將第一、第二、第三分量幀相組合。在各實(shí)施例中,操作1006包括基于各自具有第二幀的標(biāo)識符的第一、第二、和第三分量幀,將第一、第二、和第三分量幀相組合。
操作1008描繪了將幀從第一色彩空間轉(zhuǎn)換成第二色彩空間。在各實(shí)施例中,操作 1008可在圖7的色彩轉(zhuǎn)換組件706中實(shí)現(xiàn)。在各實(shí)施例中,操作1008可包括在顯示設(shè)備上顯示幀之前,將幀從YUV色彩空間轉(zhuǎn)換到RGB色彩空間。
操作1010描繪了在顯示設(shè)備上顯示幀。在圖10的操作圖在圖I的計(jì)算機(jī)20中實(shí)現(xiàn)的情況下,在顯示設(shè)備上顯示幀可包括在圖I的顯示器47上顯示幀。
圖11描繪實(shí)現(xiàn)本發(fā)明的各實(shí)施例的編碼器的附加示例操作過程。圖11的操作過程可在實(shí)現(xiàn)圖10的操作過程的同一計(jì)算機(jī)(諸如圖2的客戶機(jī)201)上被實(shí)現(xiàn)。圖10描繪了可用于解碼和聚集分量幀(諸如那些通過實(shí)現(xiàn)圖8的操作過程所產(chǎn)生的幀)的操作過程。 作為對比,圖11描繪了可用于對未作為分量幀來編碼和傳送的幀(諸如那些通過實(shí)現(xiàn)圖9 的操作過程所產(chǎn)生的那些幀)進(jìn)行解碼的操作過程。
操作1102描繪了在比特流中接收第二幀。在各實(shí)施例中,第二幀不是以4:0:0子采樣方案,而是以4:2:0子采樣方案。操作1102可按與實(shí)現(xiàn)圖10的操作1002類似的方式來實(shí)現(xiàn)。
操作1104描繪了用解碼器來解碼第二幀。在圖8中,解碼器用于以4:0:0子采樣方案來解碼三個分量幀。這里,還可以用該解碼器來解碼第二幀,即使第二幀是以不同于分量幀的子采樣方案——例如,4:2:0子采樣方案或4:2:2子采樣方案。
操作1106描繪了基于第二幀不是分量幀來確定不將第二幀與另一幀相組合。在分量幀被接收的情況下,諸如圖10,可聚集分量幀以便產(chǎn)生對其原始幀的表示。第二幀不是分量幀一它將其全部分量包含在單個幀內(nèi)。由于第二幀不是分量幀,因此在本發(fā)明的實(shí)施例中,第二幀不與任何其他幀聚集。確定第二幀不是分量幀可例如通過確定第二幀不是以4:0:0的子采樣方案來執(zhí)行。在其中用幀指示或引用來對幀加標(biāo)簽或標(biāo)記的本發(fā)明的實(shí)施例中,確定第二幀不是分量幀可通過確定第二幀沒有被加上或標(biāo)記有指示它不是分量幀的引用來執(zhí)行。
操作1108描繪了在顯示設(shè)備上顯示解碼的第二幀。操作1108可按與實(shí)現(xiàn)圖10 的操作1010類似的方式來實(shí)現(xiàn)。
盡管已經(jīng)結(jié)合各附圖所示的較佳方面描述了本發(fā)明,但要理解,可使用其他相似方面或者可對所述方面進(jìn)行修改或添加來執(zhí)行本發(fā)明的相同功能而不脫離本發(fā)明。因此, 本發(fā)明不應(yīng)該僅限于任何單個方面,而是應(yīng)該在根據(jù)所附權(quán)利要求書的廣度和范圍內(nèi)解釋。例如,本文描述的各種過程可用硬件或軟件、或兩者的組合來實(shí)現(xiàn)。由此,所公開的各實(shí)施例的方法和裝置或其某些方面或部分可采用包含在諸如軟盤、CD-ROM、硬盤驅(qū)動器或任何其他機(jī)器可讀存儲介質(zhì)等有形介質(zhì)中的程序代碼(即,指令)的形式。當(dāng)程序代碼被加載到諸如計(jì)算機(jī)等機(jī)器并由其執(zhí)行時,該機(jī)器變?yōu)楸慌渲贸蓪?shí)施所公開的各實(shí)施例的裝置。除了此處明確闡述的具體實(shí)現(xiàn)之外,考慮此處所公開的說明書,其它方面和實(shí)現(xiàn)將對本領(lǐng)域的技術(shù)人員是顯而易見的。說明書和所示實(shí)現(xiàn)旨在僅被認(rèn)為是示例。
權(quán)利要求
1.一種用于以第一子采樣方案來編碼遠(yuǎn)程呈現(xiàn)會話數(shù)據(jù)的方法,以所述第一子采樣方案來采樣數(shù)據(jù)包括使用被配置成以第二子采樣方案來對幀進(jìn)行編碼、但不被配置成以所述第一采樣方案來對幀進(jìn)行編碼的編碼器,對圖像數(shù)據(jù)的每一像素單獨(dú)采樣,以所述第二子采樣方案來采樣數(shù)據(jù)包括對圖像數(shù)據(jù)的像素值進(jìn)行子采樣,所述方法包括 將RGB格式的幀轉(zhuǎn)換成Y分量幀、U分量幀、和V分量幀; 使用所述編碼器以所述第二子采樣方案對所述Y、U和V分量幀中的每一個進(jìn)行編碼; 將編碼的Y、U和V分量幀編碼成遠(yuǎn)程呈現(xiàn)會話協(xié)議比特流;以及 經(jīng)由遠(yuǎn)程呈現(xiàn)會話將所述比特流發(fā)送到計(jì)算機(jī),所述計(jì)算機(jī)對所述比特流進(jìn)行解碼,以便以所述第二子采樣方案來產(chǎn)生所述Y、U和V分量幀中的每一個的表示,并且以所述第一采樣方案將所述Y、U和V分量幀中的每一個的表示組合成所述計(jì)算機(jī)在顯示設(shè)備上顯示的YUV幀。
2.如權(quán)利要求I所述的方法,其特征在于,使用所述編碼器以所述第二子采樣方案對所述Y、U和V分量幀中的每一個進(jìn)行編碼包括 用H. 264幀內(nèi)編碼器以4:0:0子采樣方案來對Y、U和V分量幀中的每一個進(jìn)行編碼。
3.如權(quán)利要求I所述的方法,其特征在于,使用所述編碼器以所述第二子采樣方案對所述Y、U和V分量幀中的每一個進(jìn)行編碼包括 確定用于對所述Y、U和V分量幀中的每一個進(jìn)行編碼的幀內(nèi)預(yù)測級別;以及 基于所述幀內(nèi)預(yù)測級別使用編碼器來對所述Y、U和V分量幀中的每一個進(jìn)行幀內(nèi)預(yù)測編碼。
4.如權(quán)利要求3所述的方法,其特征在于,確定所述幀內(nèi)預(yù)測級別包括 基于可用計(jì)算資源量來確定所述幀內(nèi)預(yù)測級別。
5.如權(quán)利要求I所述的方法,其特征在于,還包括 確定用于量化所述編碼的Y、U和V分量幀的量化量;以及 在將所述編碼的Y、U和V分量幀編碼成所述遠(yuǎn)程呈現(xiàn)會話協(xié)議比特流之前,量化所述編碼的Y、U和V分量幀。
6.如權(quán)利要求5所述的方法,其特征在于,確定用于量化所述編碼的Y、U和V分量幀的量化量包括 確定用于量化所述Y分量幀的第一量化量,以及用于量化所述U和V分量幀的第二量化量,所述第一量化量比所述第二量化量少。
7.如權(quán)利要求5所述的方法,其特征在于,確定用于量化所述編碼的Y、U和V分量幀的量化量包括 基于所述比特流的目標(biāo)比特率來確定用于量化所述編碼的Y、U和V分量幀的量化量。
8.如權(quán)利要求I所述的方法,其特征在于,還包括 基于確定所述幀為屏幕數(shù)據(jù),來將所述幀轉(zhuǎn)換成所述Y分量幀、U分量幀、和V分量幀。
9.如權(quán)利要求8所述的方法,其特征在于,還包括 接收以RGB格式的第二幀; 基于所述第二幀為視頻數(shù)據(jù),來確定不將所述幀轉(zhuǎn)換成第二 Y分量幀、第二 U分量幀和第二 V分量中貞; 將所述第二幀轉(zhuǎn)換成YUV格式;用所述編碼器來對經(jīng)轉(zhuǎn)換的第二幀進(jìn)行編碼; 將所述編碼的第二幀編碼成所述遠(yuǎn)程呈現(xiàn)會話協(xié)議比特流;以及經(jīng)由所述遠(yuǎn)程呈現(xiàn)會話將所述比特流發(fā)送到所述計(jì)算機(jī),所述計(jì)算機(jī)基于所述比特流在所述顯示設(shè)備上顯示對所述第二巾貞的表示。
10.如權(quán)利要求I所述的方法,其特征在于,所述第一子采樣方案包括4:4:4子采樣方案,而所述第二子采樣方案包括4:2:2、4:2:0或4:0:0子采樣方案。
全文摘要
本發(fā)明公開了低復(fù)雜性的遠(yuǎn)程呈現(xiàn)會話編碼器。本發(fā)明公開了使用不被配置成以4:4:4編碼或解碼數(shù)據(jù)的編碼器/解碼器,以4:4:4子采樣方案來編碼和解碼數(shù)據(jù)。在各實(shí)施例中,編碼器以4:0:0方案將輸入幀平面化成三個分量幀。編碼器然后以4:0:0方案編碼每一分量幀,并且將編碼的分量幀聚集成比特流。解碼器接收這一比特流,并且使用不被配置成以4:4:4對數(shù)據(jù)進(jìn)行解碼的組件來對該比特流進(jìn)行解碼。解碼器對該比特流進(jìn)行解碼,以便以4:0:0產(chǎn)生三個分量幀的表示,然后以4:4:4將三個分量幀聚集成原始幀的表示。
文檔編號H04N7/26GK102984512SQ20121035232
公開日2013年3月20日 申請日期2012年9月19日 優(yōu)先權(quán)日2011年9月20日
發(fā)明者K·M·馬拉迪, B·A·庫馬, N·Y·阿布多, S·桑庫拉特里 申請人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
吴桥县| 仙桃市| 武宁县| 青阳县| 泰兴市| 民乐县| 广灵县| 灌南县| 汉川市| 汨罗市| 方城县| 西乌珠穆沁旗| 洛川县| 社会| 达拉特旗| 简阳市| 武定县| 炎陵县| 防城港市| 九龙县| 长治县| 蒲城县| 始兴县| 肃南| 肇庆市| 休宁县| 益阳市| 屏东县| 阳高县| 大名县| 湟中县| 九江市| 阜新市| 万载县| 枝江市| 和龙市| 绥阳县| 抚松县| 勃利县| 六枝特区| 南部县|