游戲,且遠(yuǎn)程服務(wù)器將能夠根據(jù)接收自用戶的輸入來(lái)加載游戲、執(zhí)行游戲并將其輸出串流到客戶端裝置且使得所接收的輸入和音頻/視頻輸出之間感知不到延時(shí)。
[0038]在圖1中描繪的實(shí)例中,這可以通過(guò)在相同計(jì)算裝置(例如,數(shù)據(jù)流服務(wù)器102)處執(zhí)行數(shù)據(jù)流服務(wù)器程序I1和游戲代碼108兩者來(lái)完成。數(shù)據(jù)流服務(wù)器可以使用在數(shù)據(jù)流服務(wù)器架構(gòu)內(nèi)實(shí)施的各種組件來(lái)處理應(yīng)用程序的視頻內(nèi)容以通過(guò)網(wǎng)絡(luò)進(jìn)行采集、壓縮和傳輸。對(duì)于云端游戲和其它云端計(jì)算實(shí)施方式,如果客戶端104的在服務(wù)器102處執(zhí)行的軟件應(yīng)用程序108被設(shè)計(jì)來(lái)運(yùn)行個(gè)人計(jì)算機(jī)(PC)架構(gòu)或類似于數(shù)據(jù)流線服務(wù)器102的其它計(jì)算機(jī)架構(gòu),那么這可以輕易實(shí)施。例如且無(wú)限制,對(duì)于PC云端游戲?qū)嵤┓绞剑扇菀资褂玫幕趚86的服務(wù)器不但可以用來(lái)實(shí)施數(shù)據(jù)流服務(wù)器程序110,而且一旦PC游戲程序108被服務(wù)器102訪問(wèn),便立即執(zhí)行PC游戲程序108。
[0039]然而,圖1中描繪的示例性技術(shù)100無(wú)法適用于其中程序108被設(shè)計(jì)來(lái)在嵌入式平臺(tái)和其它專用架構(gòu)上執(zhí)行的某些應(yīng)用程序。例如,如果所需程序是被設(shè)計(jì)用于專用主控臺(tái)平臺(tái)的視頻游戲,那么游戲軟件在沒(méi)有某種類型的仿真器的情況下可能無(wú)法夠在服務(wù)器架構(gòu)上運(yùn)行。不幸的是,仿真器通常難以開發(fā)且其開發(fā)比較昂貴,且合適的仿真器可能不可用。此外,在許多情況下,為期望云端服務(wù)的每個(gè)獨(dú)有架構(gòu)建立專用服務(wù)器將是不切實(shí)際的,且嵌入式平臺(tái)可能沒(méi)有具有足夠多的免費(fèi)計(jì)算資源(例如,CPU、存儲(chǔ)器)來(lái)用于支持視頻壓縮和其它服務(wù)器程序。同樣地,使用具有不同于現(xiàn)有平臺(tái)的性能特性的額外資源可能存在兼容問(wèn)題。
[0040]為了解決這些挑戰(zhàn),可以希望在服務(wù)器端處使用額外計(jì)算裝置來(lái)執(zhí)行程序,因而額外計(jì)算裝置執(zhí)行所需程序,同時(shí)連接到這個(gè)額外計(jì)算裝置的數(shù)據(jù)流服務(wù)器執(zhí)行其常見功能以與客戶端裝置交互。圖2中描繪使用這種技術(shù)的分布式系統(tǒng)200的說(shuō)明實(shí)例,其中“終端機(jī)系統(tǒng)”212連接到數(shù)據(jù)流服務(wù)器202且終端機(jī)系統(tǒng)執(zhí)行所需應(yīng)用程序208。如果終端機(jī)系統(tǒng)無(wú)法以其它方式具有足夠多的免費(fèi)資源用于這些功能,那么數(shù)據(jù)流服務(wù)器可提供資源用于網(wǎng)絡(luò)存儲(chǔ)和視頻壓縮。
[0041]在某些實(shí)施方式中,終端機(jī)系統(tǒng)212可以是嵌入式系統(tǒng)或具有專用架構(gòu)的其它計(jì)算系統(tǒng),諸如視頻游戲機(jī),同時(shí)數(shù)據(jù)流服務(wù)器202可以基于任何計(jì)算架構(gòu),諸如x86指令集架構(gòu),其被調(diào)整來(lái)提供數(shù)據(jù)流服務(wù)且不一定需要具有與終端機(jī)系統(tǒng)212相同的架構(gòu)。數(shù)據(jù)流服務(wù)器202可以被配置來(lái)執(zhí)行數(shù)據(jù)流服務(wù)器程序202且給終端機(jī)系統(tǒng)程序208提供常見的云端服務(wù),且服務(wù)器端處的計(jì)算裝置(例如,數(shù)據(jù)流服務(wù)器202和終端機(jī)系統(tǒng)212)可以共同地操作來(lái)給客戶端裝置204提供視頻游戲數(shù)據(jù)流服務(wù)。
[0042]圖2中描繪的簡(jiǎn)易示意圖中的配置可以提供實(shí)用又靈活的服務(wù)器方案,其可被輕易調(diào)整來(lái)用于被設(shè)計(jì)用于多種不同計(jì)算架構(gòu)的多種不同軟件平臺(tái)。例如,潛在地任何數(shù)據(jù)流服務(wù)器202可被調(diào)整來(lái)通過(guò)局部連接運(yùn)行軟件的終端機(jī)系統(tǒng)來(lái)串流被設(shè)計(jì)用于多種不同計(jì)算架構(gòu)的軟件應(yīng)用程序。
[0043]然而,在服務(wù)器端處的終端機(jī)系統(tǒng)212上執(zhí)行所需軟件在云端計(jì)算框架內(nèi)可能面臨某些挑戰(zhàn),且新的技術(shù)可能有用于從終端機(jī)系統(tǒng)212采集視頻輸出并壓縮所述視頻輸出。常規(guī)的視頻采集卡可用來(lái)通過(guò)終端機(jī)系統(tǒng)的視頻I/O接口(諸如HDMI鏈路)采集應(yīng)用程序的視頻內(nèi)容,但是當(dāng)使用常規(guī)技術(shù)時(shí)采集通過(guò)接口發(fā)送的視頻數(shù)據(jù)的程序可能會(huì)增加明顯的延時(shí)。
[0044]圖3A中描繪了使用視頻采集裝置320的視頻采集技術(shù)的說(shuō)明實(shí)例。在圖3A的示例性采集技術(shù)中,可以使用連接到數(shù)據(jù)流服務(wù)器302的采集裝置320來(lái)采集視頻數(shù)據(jù)和視情況輸出自在終端機(jī)系統(tǒng)312上運(yùn)行的應(yīng)用程序308的音頻數(shù)據(jù)。采集卡320可以通過(guò)與終端機(jī)系統(tǒng)312連接的視頻接口接收視頻數(shù)據(jù)流,且可以連同由數(shù)據(jù)流服務(wù)器310實(shí)施的數(shù)據(jù)流服務(wù)器程序310 —起來(lái)壓縮視頻數(shù)據(jù)且例如如圖2中說(shuō)明般通過(guò)網(wǎng)絡(luò)串流所述視頻數(shù)據(jù)。例如且無(wú)限制,采集裝置320可以被實(shí)施為擴(kuò)展卡,諸如快速PCI附加卡,其可以通過(guò)擴(kuò)展接口連接到數(shù)據(jù)流服務(wù)器302。
[0045]根據(jù)本公開內(nèi)容的各個(gè)方面,圖3A中描繪的示例性視頻采集系統(tǒng)可被優(yōu)化來(lái)通過(guò)將額外像素添加到每個(gè)視頻幀減小采集程序的延時(shí),使得每個(gè)幀內(nèi)的可見圖像以較小的延遲到達(dá)視頻采集裝置320。
[0046]在一些實(shí)施方式中,采集卡320還可以給終端機(jī)系統(tǒng)312提供存儲(chǔ)虛擬化功能以給涉及終端機(jī)系統(tǒng)312的云端計(jì)算應(yīng)用程序提供集成方法。由Roelof RoderickColenbrander 在與本申請(qǐng)同一天提交的名為 “MASS STORAGE VIRTUALIZAT1N FOR CLOUDCOMPUTING”的共同指派同在申請(qǐng)中的美國(guó)申請(qǐng)第號(hào)(代理人案號(hào)第SCEA13031US00號(hào))中描述了可以由采集卡320和數(shù)據(jù)流服務(wù)器302實(shí)施的存儲(chǔ)虛擬化技術(shù)的其它細(xì)節(jié),所述申請(qǐng)的全部?jī)?nèi)容是以引用的方式引入本文。
[0047]為了更好地明白本公開內(nèi)容的各個(gè)方面,首先討論如何通過(guò)諸如HDM1、DV1、VGA、DisplayPort等等的視頻接口從視頻源傳送視頻幀是有益的。轉(zhuǎn)向圖3B,描繪了視頻輸出幀300的說(shuō)明實(shí)例。示例性輸出幀300可以是共同構(gòu)成視頻數(shù)據(jù)流的類似格式幀的序列中的一個(gè)幀。視頻幀序列可以輸出自某個(gè)視頻內(nèi)容源,諸如視頻游戲應(yīng)用程序、視頻文件、直播數(shù)據(jù)流等等。
[0048]如圖3B中說(shuō)明,輸出幀300可以由像素陣列構(gòu)成,像素陣列可由像素?cái)?shù)據(jù)值的對(duì)應(yīng)陣列表示。如下文描述,輸出幀300還可以用像素?cái)?shù)據(jù)值以外的額外信號(hào)來(lái)傳輸。
[0049]取決于所使用的特定彩色模型,陣列中的每個(gè)像素?cái)?shù)據(jù)值可以包括多個(gè)彩色空間成分。例如,如果使用YCrCb (數(shù)字視頻)或YPbPr (模擬視頻),那么陣列中的每個(gè)像素?cái)?shù)據(jù)值可以包括對(duì)應(yīng)像素的兩個(gè)色度(顏色)值和亮度(強(qiáng)度)值。替代地,RGB彩色空間或彩色空間成分的某個(gè)其它集合可以用于每個(gè)像素的像素?cái)?shù)據(jù)。此外,可以由多個(gè)二進(jìn)制位以數(shù)字形式表示每個(gè)像素的每個(gè)彩色空間成分的像素?cái)?shù)據(jù)值。例如,24位顏色深度可以使每個(gè)像素的每個(gè)彩色空間成分使用8位。術(shù)語(yǔ)“像素”在指代對(duì)應(yīng)于像素時(shí)鐘的一次跳動(dòng)的輸出幀的所述部分時(shí)有時(shí)候在本文用作速記。
[0050]除了像素?cái)?shù)據(jù)值以外,輸出幀還可以包括除了像素?cái)?shù)據(jù)值以外的外部信號(hào)。外部信號(hào)可以包括具有指示像素是否可見的信息的信號(hào),例如指示是否將顯示像素且因此是否具有包括在所述像素的像素?cái)?shù)據(jù)值中的可見像素的數(shù)據(jù)啟用信號(hào)。如圖3的示例性輸出幀300中可見,陣列中的全部數(shù)量的像素包括可見像素301 (圖示中說(shuō)明為格子)和不可見像素303(圖示中說(shuō)明為消隱填充區(qū)域)兩者。在圖3B的示例性幀中,可見像素301構(gòu)成輸出幀的活動(dòng)圖像區(qū)域(其可以由高的數(shù)據(jù)啟用值指示),且不可見像素303構(gòu)成輸出幀的同步區(qū)域(其可以由低的數(shù)據(jù)值指示)?;顒?dòng)圖像區(qū)域中的可見像素301可以共同構(gòu)成將要顯示的幀的可見圖像。應(yīng)注意,在圖3B的示例性輸出幀300中,視頻幀圖像的可見像素與所述幀的格式的活動(dòng)區(qū)域重合。
[0051]大部分裝置(例如,主控臺(tái)、PC、電話和其它視頻源)通常以每個(gè)彩色成分至少8位/I字節(jié)向以RGB像素組織的‘幀緩沖器’呈現(xiàn)視頻幀。由視頻傳輸器(其可以是呈現(xiàn)視頻幀的GPU的部分或其可以在GPU外部)產(chǎn)生的視頻信號(hào)可以傳輸RGB中的像素,但是其也可以在其它彩色空間模型(諸如YCrCb (數(shù)字視頻)或YPbPr (模擬視頻))中傳輸RGB中的像素,以防某物(例如,傳輸器)必須從RGB轉(zhuǎn)換成其它格式。
[0052]一旦GPU完成呈現(xiàn),其可以立即‘掃描輸出幀’,這是通過(guò)某個(gè)串行連接(例如,HDM1、DVI等等)逐個(gè)像素地發(fā)送幀的程序。掃描輸出程序可能涉及輸出幀(例如,輸出幀300)的外部信號(hào)的產(chǎn)生,且掃描輸出程序可以部分取決于視頻連接的類型以及‘視頻傳輸器’是在GPU內(nèi)部還是外部。一般來(lái)說(shuō),GPU可以在掃描輸出幀時(shí)產(chǎn)生多個(gè)信號(hào),包括像素?cái)?shù)據(jù)值以外的信號(hào)。當(dāng)掃描輸出幀時(shí),信號(hào)可以包括:
[0053]籲像素時(shí)鐘信號(hào)
[0054]籲數(shù)據(jù)啟用信號(hào)
[0055]?水平同步(hsync)信號(hào)
[0056]?垂直同步(vsync)信號(hào)
[0057]?數(shù)據(jù)總線信號(hào),其攜帶活動(dòng)像素的彩色空間成分(例如,RGB、24位寬,每個(gè)彩色空間成分具有8位)
[0058]在已呈現(xiàn)的幀的掃描輸出期間,GPU可以從保存完整的幀圖像的緩沖器(例如,幀緩沖器)擷取像素。作為實(shí)例,即,GPU目前處于某行的第一像素處。對(duì)于給定行,在像素時(shí)鐘信號(hào)的每次‘跳動(dòng)’時(shí),其將會(huì)將新的像素置于數(shù)據(jù)總線信號(hào)上。其還將在數(shù)據(jù)啟用信號(hào)上輸出對(duì)應(yīng)于所述像素的‘高電平’。
[0059]在所述行的終點(diǎn)處,存在(持續(xù)時(shí)間HTOTAL - HDISPLAY像素或像素時(shí)鐘脈沖的)水平消隱周期。在消隱周期期間,改變多個(gè)信號(hào)。首先,可以在hsync行上產(chǎn)生脈沖以通知轉(zhuǎn)變到下一行?!?dāng)?shù)據(jù)啟用’信號(hào)為低,這意指目前在數(shù)據(jù)總線信號(hào)上的任何數(shù)據(jù)不應(yīng)被解譯為像素(‘所述行的終點(diǎn)處存在不可見像素’)。
[0060]可以逐行繼續(xù)進(jìn)行這個(gè)程序直到幀圖像的終點(diǎn)為止。在幀的終點(diǎn)處,在vsync行上產(chǎn)生脈沖。對(duì)于幀的終點(diǎn)處的‘不可見行’中的任何一個(gè),數(shù)據(jù)啟用行也為低。
[0061]一般來(lái)說(shuō),無(wú)論數(shù)據(jù)啟用信號(hào)何時(shí)為低,像素均‘不可見’,且像素?cái)?shù)據(jù)值不包括對(duì)應(yīng)于圖像的顯示區(qū)域的所需彩色空間值。因?yàn)榭偸谴嬖诨顒?dòng)像素時(shí)鐘,所以數(shù)據(jù)總線上基本上會(huì)產(chǎn)生‘不可見像素’。應(yīng)注意,水平和垂直同步信號(hào)存儲(chǔ)在像素?cái)?shù)據(jù)外部。
[0062]通過(guò)串行接口傳輸例如構(gòu)成輸出幀300的視頻信號(hào)的程序可以取決于視頻技術(shù)。對(duì)于典型的VGA,所描述的信號(hào)實(shí)際上直接由監(jiān)視器消耗,信號(hào)包括像素?cái)?shù)據(jù)信號(hào)和與幀相關(guān)的外部信號(hào)。外部信號(hào)可以包括直接用于VGA的時(shí)序信號(hào)。像素?cái)?shù)據(jù)信號(hào)可以是模擬信號(hào),其中每個(gè)彩色成分具有其自身的通道,例如紅色信號(hào)通道、綠色信號(hào)通道和藍(lán)色信號(hào)通道。數(shù)模轉(zhuǎn)換器(DAC)可以由數(shù)字?jǐn)?shù)據(jù)總線信號(hào)(所描述的24位,其中每個(gè)通道具有8位)產(chǎn)生模擬像素信號(hào)。對(duì)于如DV1、HDMI或DisplayPort的其它技術(shù),傳輸器可以接受上述信號(hào)并將其轉(zhuǎn)換成適用于所述技術(shù)的信號(hào)。在HDMI的情況下,HDMI傳輸器具有3個(gè)TMDS數(shù)據(jù)通道(ΤΧ0至TX2)和TMDS時(shí)鐘,其中HDMI傳輸器嵌入全部信號(hào)(hsync信號(hào)、vsync信號(hào)、像素?cái)?shù)據(jù)信號(hào))且TMDS時(shí)鐘以某種方式包括像素時(shí)鐘信號(hào)?!邮掌鳌瘍?nèi)部的電纜的另一端上的HDMI接收器具有這些信號(hào)作為輸入,但是恢復(fù)hsync、vsync、數(shù)據(jù)和其它信號(hào)。對(duì)于如DVI或DisplayPort的其它視頻標(biāo)準(zhǔn),情況也是這樣。
[0063]如果視頻傳輸器是在GPU內(nèi)部,那么掃描輸出邏輯可以作用于所描述的信號(hào),但是掃描輸出邏輯也可以直接輸出(例如)HDMI,從而省略用于這些其它信號(hào)的中間步驟。
[0064]像素?cái)?shù)據(jù)值和與輸出幀的每個(gè)像素相關(guān)的其它信號(hào)通常逐行輸出,其中每行包括多個(gè)像素且每個(gè)幀包括多行。通常,這些行水平定向,且水平行中的像素可以通過(guò)視頻通信接口按次序從視頻源傳送到顯示裝置或其它視頻接收裝置(例如,從左到右串行傳送)。類似地,水平行可以按次序從頂部輸出到底部直到到達(dá)幀的終點(diǎn)為止。因此,幀300中的全部像素(包括可見像素301和不可見像素303兩者)可以具有定義的傳送序列。
[0065]在圖3B的示例性輸出幀300中,幀的每行是具有總數(shù)為HTOTAL(其可以定義輸出幀的總水平分辨率)的像素的水平行。類似地,示例性輸出幀300具有總數(shù)為VTOTAL的行,其可以定義幀的總垂直分辨率。因此,總水平和垂直分辨率包括可見像素和不可見像素兩者。
[0066]幀的活動(dòng)顯示區(qū)域301可以包括定義幀的垂直顯示分辨率的多個(gè)活動(dòng)行VDISPLAY,且每個(gè)活動(dòng)行可以包括定義幀的水平顯示分辨率的多個(gè)活動(dòng)像素HDISPLAY?;顒?dòng)顯示區(qū)域301可以對(duì)應(yīng)于由GPU呈現(xiàn)且如上所述般輸出到幀緩沖器的幀的所述圖像。
[0067]如上所述,由于幀中存在同步區(qū)域303,輸出幀300的總分辨率(例如,HTOTALXVT0TAL)可以大于輸出幀的顯示分辨率(例如,HDISPLAYXVDISPLAY),同步區(qū)域303可以產(chǎn)生在幀的掃描輸出期間(例如,向幀緩沖器呈現(xiàn)幀的活動(dòng)顯示區(qū)域之后)。具體來(lái)說(shuō),活動(dòng)顯示區(qū)域?qū)?yīng)于擷取自幀緩沖器的像素,而同步區(qū)域則是指由于添加外部像素產(chǎn)生的像素(例如,如上所述掃描輸出幀)。