專利名稱:使用預(yù)編碼宏塊的視頻游戲系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明 一般地涉及交互式視頻游戲系統(tǒng),并且更為特別地涉及使用 預(yù)編碼宏塊的交互式視頻游戲系統(tǒng)。
背景技術(shù):
視頻游戲是一種流行的娛樂形式。特別是隨著越來越多的用戶能夠
通過使用諸如也稱為因特網(wǎng)的萬維網(wǎng)(WWW)之類的網(wǎng)絡(luò)彼此間進(jìn)行
交互,兩個或多個人同時在公共的仿真環(huán)境中參加游戲的多玩家游戲正 變得日益普及。在網(wǎng)絡(luò)化環(huán)境中實(shí)現(xiàn)視頻游戲提出了若干難題。
特別地,視頻游戲,尤其是提供高質(zhì)量圖形的那些視頻游戲,可產(chǎn) 生具有極大數(shù)據(jù)速率的數(shù)據(jù)流,該數(shù)據(jù)速率占網(wǎng)絡(luò)中可用數(shù)據(jù)速率通信 容量的相當(dāng)大的部分。該數(shù)據(jù)速率還可根據(jù)取決于相應(yīng)的游戲的游戲狀 態(tài)被修改或更新的頻率的時間而發(fā)生相當(dāng)大的變化。這種高數(shù)據(jù)速率和 時變數(shù)據(jù)速率的組合在諸如衛(wèi)星系統(tǒng)、有線電視系統(tǒng)或因特網(wǎng)之類的網(wǎng) 絡(luò)化環(huán)境中可以造成成本效率和高效的資源分配方面的難題。在這種網(wǎng) 絡(luò)環(huán)境中的視頻游戲系統(tǒng)可能需要額外帶寬開銷以及硬件和軟件冗余 的形式的額外余量,從而確保性能不降低。對于多玩家游戲,這些系統(tǒng) 難題復(fù)合在一起。
使用諸如運(yùn)動圖片專家組(MPEG)所開發(fā)的壓縮標(biāo)準(zhǔn)之一之類的 現(xiàn)有編碼方法在視頻游戲系統(tǒng)中對數(shù)據(jù)流進(jìn)行編碼,最多也僅可能提供 部分解決這些問題的方案并且還可能造成另外的難題。例如,MPEG2 是靈活的壓縮標(biāo)準(zhǔn),其利用了數(shù)字視頻中的大量內(nèi)容(多至95% )可能 是冗余信息的這一事實(shí)。對內(nèi)容中的這些部分進(jìn)行編碼可極大地降低對 應(yīng)的數(shù)據(jù)速率。然而,內(nèi)容中的其他部分的冗余性要小得多。在常規(guī)MPEG2編碼中,對于越復(fù)雜的圖像,可能導(dǎo)致產(chǎn)生越高的數(shù)據(jù)速率。 結(jié)果,MPEG2編碼的數(shù)據(jù)流可能仍然具有根據(jù)時間發(fā)生極大變化的數(shù) 據(jù)速率。另外,使用諸如MPEG2之類的現(xiàn)有編碼方法對多個數(shù)據(jù)流進(jìn) 行實(shí)時或即時編碼可能增加視頻游戲系統(tǒng)的復(fù)雜度、成本和/或功耗。 因此,需要一種在網(wǎng)絡(luò)化環(huán)境中實(shí)現(xiàn)視頻游戲的改進(jìn)的系統(tǒng)。
發(fā)明內(nèi)容
公開了一種生成視頻幀的方法和相關(guān)的系統(tǒng)。在該方法中,接收到 請求。使用多個預(yù)編碼宏塊來生成視頻幀。該視頻幀與MPEG壓縮標(biāo)準(zhǔn) 兼容。這多個預(yù)編碼宏塊在該請求之前被預(yù)編碼。在某些實(shí)施例中,該 請求啟動視頻游戲。
相應(yīng)的預(yù)編碼宏塊對應(yīng)于一組像素。對相應(yīng)的預(yù)編碼宏塊的預(yù)編碼 包括執(zhí)行離散余弦變換、量化和游程編碼操作。預(yù)編碼還可包括計算一 個或多個運(yùn)動矢量和/或校正數(shù)據(jù)。生成視頻幀包括使所述視頻幀中的相 鄰的預(yù)編碼宏塊互相關(guān)。該互相關(guān)可包括確定針對包括亮度信息的第一 塊的第一DC系數(shù)值、針對包括色度信息的第二塊的第二DC系數(shù)值以 及針對包括色度信息的第三塊的第三DC系數(shù)值。確定相應(yīng)的DC系數(shù) 值可包括確定相對該視頻幀中的另 一預(yù)編碼宏塊的差異。
編碼宏塊的量化因子的差異。這可包括確定相對該-觀頻幀中的另 一預(yù)編 碼宏塊的運(yùn)動矢量和/或補(bǔ)償數(shù)據(jù)的差異,并且它還可包括選擇該視頻幀 中的另一預(yù)編碼宏塊的預(yù)定的運(yùn)動矢量和/或補(bǔ)償數(shù)據(jù)。
在某些實(shí)施例中,多個預(yù)編碼宏塊存儲在可單獨(dú)訪問的預(yù)編碼宏塊 的庫中。相應(yīng)的預(yù)編碼宏塊可包括元數(shù)據(jù),該數(shù)據(jù)可包括量化因子、預(yù) 定的運(yùn)動矢量和/或校正數(shù)據(jù)。在某些實(shí)施例中,在兩個或多個視頻游戲 之間、在兩個或多個—見頻幀之間以及/或者在一見頻游戲的兩個或多個實(shí)例 之間共享多個預(yù)編碼宏塊的第一子集。在某些實(shí)施例中,已存儲的多個
預(yù)編碼宏塊的第二子集包括未壓縮的像素信息。
在某些實(shí)施例中,該方法還包括動態(tài)地生成多個宏塊。動態(tài)生成的
10多個宏塊包括包含未壓縮的像素信息的預(yù)編碼宏塊和對應(yīng)于對象的圖 像信息的組合。形成這種組合可包括混合該預(yù)編碼宏塊的未壓縮的像素 信息和對應(yīng)于對象的圖像信息。這種組合可包括將對應(yīng)于對象的圖像信 息疊加到視頻幀區(qū)域上。
在替代性的實(shí)施例中,接收到請求(例如,用于啟動對視頻游戲的 執(zhí)行)并且在該請求之后的時間接收到命令(例如,用于在視頻游戲的 上下文中執(zhí)行動作的用戶命令)。通過使用在該請求之前^皮預(yù)編碼的多 個預(yù)編碼宏塊和在請求之后并在命令之前一皮編碼的多個請求后編碼的 宏塊來生成視頻幀。作為替代,通過使用在請求之前被預(yù)編碼的多個預(yù) 編碼宏塊、在請求之后并在命令之前被編碼的多個請求后編碼的宏塊以 及在命令之后被編碼的多個動態(tài)編碼的宏塊來生成一見頻幀。
在某些實(shí)施例中,多個預(yù)編碼宏塊與MPEG壓縮標(biāo)準(zhǔn)兼容。多個預(yù) 編碼宏塊存儲在可單獨(dú)訪問的預(yù)編碼宏塊的庫中,供生成多個不同視頻 幀時使用。
這種生成視頻幀的方法和相關(guān)的系統(tǒng)克服了上述的與在網(wǎng)絡(luò)化環(huán) 境中實(shí)現(xiàn)單玩家視頻游戲和/或多玩家視頻游戲相關(guān)聯(lián)的難題中的至少 某些難題。
為了更好地理解本發(fā)明,應(yīng)當(dāng)結(jié)合附圖參考以下詳細(xì)描述,其中
圖1是說明有線電視系統(tǒng)的實(shí)施例的框圖。
圖2是說明生成至少一個視頻幀的過程的實(shí)施例的流程圖。
圖3是說明生成至少一個視頻幀的過程的實(shí)施例的流程圖。
圖4是說明生成至少 一個視頻幀的過程的實(shí)施例的流程圖。
圖5是說明生成至少一個視頻幀的過程的實(shí)施例的流程圖。
圖6是說明一個或多個預(yù)編碼宏塊庫和參考柵格的實(shí)施例的框圖。
圖7是說明生成至少 一 個視頻幀的過程的實(shí)施例的流程圖。
圖8是說明宏塊中的色度塊和亮度塊的實(shí)施例的框圖。
圖9是說明互相關(guān)相鄰宏塊的實(shí)施例的框圖。圖IO是說明比較視頻幀的實(shí)施例的框圖。
圖11是說明對視頻幀中的預(yù)編碼宏塊和對象進(jìn)行組合的實(shí)施例的 框圖。
圖12說明生成對應(yīng)于至少一個視頻幀的數(shù)據(jù)流的過程的實(shí)施例的
流程圖。
圖13是說明生成對應(yīng)于至少一個視頻幀的數(shù)據(jù)流的過程的實(shí)施例 的流程圖。
圖14是說明生成對應(yīng)于視頻幀序列的數(shù)據(jù)流的實(shí)施例的框圖。 圖15是說明視頻幀中的有效游戲區(qū)域的實(shí)施例的框圖。 圖16是說明數(shù)據(jù)流的實(shí)施例的框圖。
圖17是說明生成對應(yīng)于至少一個視頻幀的數(shù)據(jù)流的過程的實(shí)施例 的流程圖。
圖18是說明視頻游戲系統(tǒng)的實(shí)施例的框圖。 圖19是說明機(jī)頂盒的實(shí)施例的框圖。
圖20是說明預(yù)編碼宏塊的庫中的數(shù)據(jù)結(jié)構(gòu)的實(shí)施例的框圖。 貫穿各圖,相同的參考標(biāo)號指示對應(yīng)的部分。
具體實(shí)施例方式
現(xiàn)在將詳細(xì)參考各實(shí)施例,在附圖中說明了實(shí)施例的例子。在以下 詳細(xì)的描述中,闡述了許多具體細(xì)節(jié)以提供對本發(fā)明的徹底理解。然而, 本領(lǐng)域的普通技術(shù)人員顯然清楚,可以在不用這些具體細(xì)節(jié)的情況下實(shí) 現(xiàn)本發(fā)明。在其他例子中,為了不對實(shí)施例的各方面造成不必要地混淆, 沒有詳細(xì)描述公知的方法、過程、部件和電路。
描述了一種用于提供使用網(wǎng)絡(luò)(諸如衛(wèi)星系統(tǒng)、有線電視系統(tǒng) (CATV)、因特網(wǎng)、廣域網(wǎng)、局域網(wǎng)和/或電話系統(tǒng)中的那些網(wǎng)絡(luò))的 交互式一見頻游戲的改進(jìn)的方法和相關(guān)的系統(tǒng)。如下面所描述,該方法和 系統(tǒng)利用對對應(yīng)于幀和/或視頻游戲圖像區(qū)域的視頻游戲內(nèi)容的高效數(shù) 字化來減少通信帶寬,并且由此增加可支持的用戶或玩家(此處稱為用 戶)的數(shù)目。術(shù)語視頻游戲包括視頻游戲、其他形式的計算機(jī)實(shí)現(xiàn)的娛樂性應(yīng)用程序、以及諸如新聞、天氣和/或體育之類的非娛樂性應(yīng)用程序。 玩家或用戶是指參與一個或多個視頻游戲的一個或多個人。
特別地,對應(yīng)于一個或多個^L頻游戲(包4舌單玩家—見頻游戲和/或多 玩家視頻游戲)的視頻圖像幀或?qū)σ粋€或多個視頻幀的更新是通過使用 多個預(yù)編碼片(tile)或宏塊來生成的,該預(yù)編碼片或宏塊在用于啟動一 個或多個視頻游戲的請求之前被編碼。宏塊包括一組像素,例如16 x 16 的像素陣列。生成視頻幀可包括使相鄰宏塊中的dc系數(shù)相互關(guān)聯(lián)、選 擇針對相鄰宏塊的預(yù)定運(yùn)動矢量和補(bǔ)償數(shù)據(jù)、計算針對相鄰宏塊的預(yù)定
運(yùn)動矢量和補(bǔ)償數(shù)據(jù)以及/或者針對相鄰宏塊的量化因子。對預(yù)編碼宏塊 的使用利用了視頻游戲中的某些或所有內(nèi)容在多個連續(xù)的視頻幀中可 能保持不變的這一事實(shí)(例如,用戶動作可能使某些或所有內(nèi)容保持不 變)。作為結(jié)果,某些或所有內(nèi)容可被預(yù)編碼。通過例如簡化架構(gòu)以及/ 或者減少生成視頻圖像幀所需的計算資源,可以降低與在網(wǎng)絡(luò)化環(huán)境中 實(shí)現(xiàn)視頻游戲系統(tǒng)相關(guān)聯(lián)的復(fù)雜度和/或成本。另外,對內(nèi)容進(jìn)行編碼(壓 縮)還可降低對應(yīng)于視頻幀的數(shù)據(jù)流中的數(shù)據(jù)速率。
中。這可允許例如在兩個或多個^L頻游戲中、在兩個或多個一見頻幀中以 及/或者在兩個或多個視頻游戲?qū)嵗泄蚕磉@多個預(yù)編碼宏塊的子集。這 種共享還可降低在網(wǎng)絡(luò)化環(huán)境中實(shí)現(xiàn)視頻游戲系統(tǒng)的成本和/或復(fù)雜度。 它還允許視頻游戲系統(tǒng)支持利用較小的架構(gòu)支持多玩家視頻游戲。
在某些實(shí)施例中,通過使用多個預(yù)編碼宏塊的子集和參考柵格來生 成相應(yīng)的視頻幀。參考柵格包括宏塊的索引和/或指針,其中參考柵格中 的每個格子(box)或項對應(yīng)于相應(yīng)的視頻幀中的一個位置。通過將先 前的視頻幀與相應(yīng)的視頻幀進(jìn)行比較,允許通過在對應(yīng)于參考柵格的恰 當(dāng)索引和/或指針處定位恰當(dāng)?shù)念A(yù)編碼宏塊來生成相應(yīng)的視頻幀。這種比 較可包括在先前幀的片柵格的對應(yīng)的和/或相鄰的位置處的片索引。因 此,這種比較涉及宏塊的索引而不是視頻幀中的整個像素組。這可導(dǎo)致
計算量的顯著減小。
在某些實(shí)施例中,還可在一個或多個^L頻游戲期間生成多個宏塊。在接收到視頻游戲請求之后,這些宏塊中的某些可以一次性地生成,并 且接著在多個視頻游戲中使用。這可包括例如針對直到視頻游戲被請求 時才可用的信息的宏塊,諸如對應(yīng)于文本(用戶名字)或簡單動畫的那 些宏塊。如下面更詳細(xì)地解釋的那樣,對應(yīng)于動畫的運(yùn)動矢量和/或補(bǔ)償 數(shù)據(jù)也可被預(yù)編碼??梢皂憫?yīng)于視頻游戲期間的 一個或多個用戶命令來 動態(tài)地生成其他宏塊。 一個或多個用戶命令可確定視頻游戲的游戲狀態(tài)
些變化。這種動態(tài)生成的宏塊可對應(yīng)于一見頻游戲中的對象,諸如一個或
多個"sprite"(精靈)(也即,可編程的、可移動的、高分辨率的圖形圖 像,其也稱為可移動對象塊)。
在某些實(shí)施例中,多個預(yù)編碼宏塊的子集可包括未壓縮像素信息以 及壓縮的預(yù)編碼的像素數(shù)據(jù)。在生成一個或多個視頻幀期間,動態(tài)生成 的宏塊可包括針對多個預(yù)編碼宏塊的未壓縮像素信息和對應(yīng)于一個或 多個對象的圖像信息的組合。該組合可包括將對應(yīng)于一個或多個對象的 圖像信息與未壓縮像素信息進(jìn)行混合和/或疊加。
該方法和系統(tǒng)將生成的視頻游戲內(nèi)容發(fā)送給用戶設(shè)備以供顯示。所 生成的視頻游戲內(nèi)容可對應(yīng)于相對于先前發(fā)送給用戶設(shè)備的視頻游戲 內(nèi)容的差異信息。該系統(tǒng)允許多組用戶同時且獨(dú)立地參加^f見頻游戲的單 個可執(zhí)行拷貝。各組用戶可包括一個或多個用戶。每組用戶可具有各自 的視頻游戲的游戲狀態(tài)。通過這種方式,系統(tǒng)改善了資源利用效率和總 的成本效率。
在示例性實(shí)施例中,該方法和系統(tǒng)與包括MPEG2的MPEG壓縮標(biāo) 準(zhǔn)兼容。這種兼容性允許通過使用商業(yè)可用的芯片組來顯示通過使用該 方法和系統(tǒng)來生成的一個或多個視頻幀。
-f見頻游戲系統(tǒng)
圖1是說明用于接收對諸如一個或多個視頻游戲之類的內(nèi)容的訂單 以及將該內(nèi)容提供給一個或多個用戶(包括多用戶視頻游戲)的有線電 視系統(tǒng)100的實(shí)施例的框圖。若干內(nèi)容數(shù)據(jù)流可被發(fā)送給各訂戶,而各
14訂戶接著可以訂購服務(wù)或在視頻游戲中發(fā)送用戶動作。通過使用衛(wèi)星天
線144可以接收諸如模擬電視信號之類的衛(wèi)星信號。模擬信號可在模擬 頭端(headend) 146中進(jìn)行處理、耦合到射頻(RF )合路器134以及 經(jīng)由網(wǎng)絡(luò)136發(fā)送給機(jī)頂盒(STB) 140。另外,信號可在衛(wèi)星接收器 148中進(jìn)行處理、耦合到復(fù)用器(MUX) 150、通過使用正交幅度調(diào)制 器(QAM) 132-2 (諸如256級QAM)轉(zhuǎn)換成數(shù)字格式、耦合到射頻 (RF)合路器134以及經(jīng)由網(wǎng)絡(luò)136發(fā)送給STB 140。視頻點(diǎn)播(VOD) 服務(wù)器118可提供對應(yīng)于訂購的電影的信號給交換機(jī)126-2,交換機(jī) 126-2將該信號耦合到QAM 132-1用于轉(zhuǎn)換成數(shù)字格式。這些數(shù)字 信號被耦合到射頻(RF)合路器134以及經(jīng)由網(wǎng)絡(luò)136發(fā)送給STB 140。 STB 140可以在電視或其他顯示設(shè)備138上顯示一個或多個信號,包括 對應(yīng)于下面所討論的視頻游戲內(nèi)容的那些信號。盡管圖l說明了一個訂 戶STB 140和電視或其他顯示設(shè)備138,但是在其他實(shí)施例中可以存在 每個均有一個或多個STB和/或電視或其他顯示設(shè)備的另外的訂戶。
有線電視系統(tǒng)100還可包括應(yīng)用服務(wù)器114和多個游戲服務(wù)器116。 應(yīng)用服務(wù)器114和多個游戲服務(wù)器116可位于有線電視系統(tǒng)的頭端。盡 管圖1中說明了單個實(shí)例或成組的應(yīng)用服務(wù)器114以及多個游戲服務(wù)器 116,但是其他實(shí)施例可在一個或多個頭端中包括另外的實(shí)例。在一個 或多個頭端處的服務(wù)器和/或其他計算機(jī)可運(yùn)行諸如Windows、 Linux或 Solaris之類的才喿作系統(tǒng)。
應(yīng)用服務(wù)器114和一個或多個游戲服務(wù)器116可提供對應(yīng)于由一個 或多個用戶訂購的一個或多個視頻游戲的視頻游戲內(nèi)容。在有線電視系 統(tǒng)100中,在各用戶與視頻游戲之一的執(zhí)行拷貝之間可以存在多對一的 對應(yīng)關(guān)系。應(yīng)用服務(wù)器114可訪問數(shù)據(jù)庫中的游戲相關(guān)的信息以及/或者 在數(shù)據(jù)庫中記錄游戲相關(guān)的信息。應(yīng)用服務(wù)器114還可用于進(jìn)行報告和
定價。游戲服務(wù)器116中的一個或多個游戲引擎(也稱為游戲引擎模塊)
在示例性實(shí)施例中,游戲服務(wù)器116使用與MPEG壓縮標(biāo)準(zhǔn)兼容的編碼。 視頻游戲內(nèi)容被耦合到交換機(jī)126-2、在QAM 132-1中被轉(zhuǎn)換成模擬格式。在具有256級QAM的示例性實(shí)施例中,窄播(narrowcast) 子信道(具有大約6MHz帶寬,其對應(yīng)于大約38Mbps的數(shù)字?jǐn)?shù)據(jù))可 用于發(fā)送使用1Mbps到4Mbps的視頻游戲的10到30個一見頻游戲數(shù)據(jù)流。
這些數(shù)字信號耦合到射頻(RF)合路器134并經(jīng)由網(wǎng)絡(luò)136發(fā)送給 STB 140。應(yīng)用服務(wù)器114還可經(jīng)由因特網(wǎng)110訪問在多玩家服務(wù)器112 中存儲的數(shù)據(jù)庫中的持久性的玩家或用戶數(shù)據(jù)。下面參考圖18進(jìn)一步 描述了應(yīng)用服務(wù)器114和多個游戲服務(wù)器116。
STB 140可包括諸如游戲142之類的客戶端應(yīng)用,其接收對應(yīng)于一 個或多個用戶動作的信息并將該信息發(fā)送給一個或多個游戲服務(wù)器 116。游戲應(yīng)用142也可以在更新電視138上的視頻幀之前存儲視頻游 戲內(nèi)容。電視138可與NTSC格式或諸如PAL或SECAM之類的不同格 式兼容。下面參考圖18進(jìn)一步描述了 STB 140。
有線電視系統(tǒng)100還可包括STB控制120、操作支持系統(tǒng)122和計 費(fèi)系統(tǒng)124。 STB控制120可處理一個或多個用戶動作(諸如與相應(yīng)的 視頻游戲相關(guān)聯(lián)的那些動作),這些用戶動作是通過帶外(OOB)子信 道使用返回(return)脈沖幅度(PAM)解調(diào)器130和交換機(jī)126-1接 收到的??梢源嬖诔^一個OOB子信道。盡管從一個實(shí)施例到另一實(shí) 施例OOB子信道的帶寬可發(fā)生變化,但是在一個實(shí)施例中每個OOB子 信道的帶寬對應(yīng)于大約1Mbps的比特速率或數(shù)據(jù)速率。操作支持系統(tǒng) 122可處理訂戶的針對諸如相應(yīng)的視頻游戲之類的相應(yīng)服務(wù)的訂單并更 新計費(fèi)系統(tǒng)124。 STB控制120、操:作支持系統(tǒng)122和/或計費(fèi)系統(tǒng)124 還可使用OOB子信道經(jīng)由交換機(jī)126 - 1和OOB模塊128與訂戶進(jìn)行 通信,OOB模塊128將信號轉(zhuǎn)換成適于OOB子信道的格式。作為替代, 操作支持系統(tǒng)122和/或計費(fèi)系統(tǒng)124可經(jīng)由諸如因特網(wǎng)連接或電話系統(tǒng) 提供的通信鏈路之類的另外的通信鏈路與訂戶進(jìn)行通信。
有線電視系統(tǒng)100中發(fā)送和接收的各種信號可通過使用基于分組的 數(shù)據(jù)流來進(jìn)行傳輸。在示例性實(shí)施例中,某些分組可利用網(wǎng)際協(xié)議,諸 如用戶報協(xié)議(UDP)。在某些實(shí)施例中,諸如網(wǎng)絡(luò)136之類的網(wǎng)絡(luò)以及有線電視系統(tǒng)100中的各部件之間的耦合可包括無線局域網(wǎng)、局域網(wǎng)、
傳輸線路(諸如同軸電纜)、陸地線路和/或光纖的一個或多個實(shí)例。某
些信號可通過使用普通老式電話服務(wù)(POTS)和/或諸如綜合業(yè)務(wù)數(shù)字 網(wǎng)(ISDN)之類的數(shù)字電話網(wǎng)絡(luò)來進(jìn)行傳輸。無線通信可包括使用高 級移動電話系統(tǒng)(AMPS)、全^t移動通信系統(tǒng)(GSM)、碼分多址 (CDMA)和/或時分多址(TDMA)的蜂窩電話網(wǎng)絡(luò)以及使用也稱為 WiFi的IEEE 802.11通信協(xié)議和/或藍(lán)牙通信協(xié)議的網(wǎng)絡(luò)。
盡管圖l說明了有線電視系統(tǒng),但是還可在基于衛(wèi)星的系統(tǒng)、因特 網(wǎng)、電話系統(tǒng)和/或地面電視廣播系統(tǒng)中實(shí)現(xiàn)所描述的系統(tǒng)和方法。有線 電視系統(tǒng)100可包括另外的組件以及/或者移除一個或多個組件。另外,
中的 一個或多個組件的位置。
現(xiàn)在,將注意力集中到使用預(yù)編碼宏塊來生成一個或多個視頻幀的 操作方法的若干實(shí)施例上。這些方法可在有線電視系統(tǒng)100中實(shí)現(xiàn)以將 包括一個或多個視頻游戲的內(nèi)容提供給一個或多個用戶。如上所述,宏 塊對應(yīng)于一組像素。在使用諸如MPEG2之類的與MPEG兼容的壓縮標(biāo) 準(zhǔn)來對宏塊進(jìn)行編碼的示例性實(shí)施例中,塊可對應(yīng)于8x8的像素陣列 而宏塊可對應(yīng)于16x 16的像素陣列。
生成一個或多個一見頻幀 圖2是說明生成視頻幀的過程200的實(shí)施例的流程圖。接收到請求 (210)。該請求可啟動視頻游戲。使用多個預(yù)編碼宏塊(也即在該請求 之前被預(yù)編碼的宏塊)來生成視頻幀(212)。過程200可包括更少的操 作或附加的操作。另外,兩個或多個操作可進(jìn)行合并以及/或者各操作的 順序可改變。
圖3是說明生成視頻幀的過程300的實(shí)施例的流程圖。如在上述過 程200中那樣,接收到請求(210)。 一次性地或者動態(tài)地生成多個預(yù)編 碼宏塊(310)。使用多個預(yù)編碼宏塊(其在該請求之前被預(yù)編碼)和多 個已生成的宏塊來生成視頻幀(312)。過程300可包括更少的操作或附加的操作。另外,兩個或多個操作可進(jìn)行合并以及/或者各操作的順序可 改變。
圖4是說明生成視頻幀的過程400的實(shí)施例的流程圖。再次,過程 400包括接收請求(210)。另外,接收到命令(410)。該命令可對應(yīng)于 視頻游戲中的用戶動作或一組用戶的動作。在接收到該命令后,并且響 應(yīng)于該命令,使用多個預(yù)編碼宏塊(其在接收到該請求之前被預(yù)編碼)、 多個后編碼宏塊(其在接收到該請求之后并在接收到該命令之前被編 碼)和多個已動態(tài)生成的宏塊(其在接收到該命令之后被編碼)來生成 視頻幀(412)。過程400可包括更少的操作或附加的操作。另外,兩個 或多個操作可進(jìn)行合并以及/或者各操作的順序可改變。
圖5是說明生成視頻幀的過程500的實(shí)施例的流程圖。多個預(yù)編碼 宏塊被生成(510)。這多個預(yù)編碼宏塊被存儲在預(yù)編碼宏塊的庫中 (512)。使用至少這多個預(yù)編碼宏塊的子集來生成視頻幀(514)。過程 500可包括更少的操作或附加的操作。另外,兩個或多個操作可進(jìn)行合 并以及/或者各操作的順序可改變。
實(shí)施例500中的預(yù)編碼宏塊可以是可被單獨(dú)訪問的,這允許這多個 預(yù)編碼宏塊的子集能夠在兩個或多個視頻游戲之間進(jìn)行共享、在兩個或 多個視頻幀之間進(jìn)行共享、以及/或者在視頻游戲的兩個或多個實(shí)例之間 進(jìn)行共享。已存儲的多個預(yù)編碼宏塊的子集可包括未壓縮的像素信息。 如下面參考圖io所描述的那樣,提供也包括未壓縮像素信息的預(yù)編碼 宏塊允許生成動態(tài)宏塊,其將對應(yīng)于對象的圖像信息與來自 一個或多個 預(yù)編碼宏塊的未壓縮像素信息合并。
現(xiàn)在,將注意力集中到預(yù)編碼并且一次性地和/或動態(tài)地生成宏塊以 供生成視頻幀時使用的若干實(shí)施例上。圖6是說明預(yù)編碼宏塊612的一 個或多個庫610和2維的片、陣列或參考柵格614的實(shí)施例600的框圖。 庫610中所包括的預(yù)編碼宏塊612的數(shù)目可取決于將使用預(yù)編碼宏塊的
具有簡單動畫的簡單游戲與具有更多場景、人物和可預(yù)測動畫的復(fù)雜游 戲相比具有較少預(yù)編碼宏塊。在示例性實(shí)施例中,存在大約16000、50000、 60000或100000個預(yù)編碼宏塊612。參考柵格614被安置在將 參考柵格614細(xì)分成多個格子的多個行616和列618中。每個行616對 應(yīng)于視頻幀中的片段620。柵格614的每個格子(柵格中的每項)存儲 在生成視頻幀時用于識別和定位宏塊的索引或指針。多個柵格項可指向 預(yù)編碼宏塊,而柵格614中的其他柵格項指向動態(tài)生成的宏塊(也即, 在啟動游戲執(zhí)行之后生成的宏塊,諸如響應(yīng)于游戲用戶的最新或最近的 命令所生成的宏塊)。換言之,柵格614中的每個格子存儲指向相應(yīng)的 宏塊(其中至少一些是預(yù)編碼宏塊)的指針或參考,而柵格614中的格 子的位置標(biāo)識所識別的宏塊在視頻幀中的位置。在示例性實(shí)施例中,宏 塊(包括預(yù)編碼宏塊612 )每個都表示16 x 16的像素陣列,并且存在對 應(yīng)于VGA視頻幀的30行616和40列618的宏塊或柵格項。在其他實(shí) 施例中,存在對應(yīng)于NTSC的數(shù)字實(shí)施例的30行和45列的宏塊或柵格 項。
在許多視頻游戲中,至少相應(yīng)的視頻幀中的內(nèi)容的子集相對于先前 的或后續(xù)的視頻幀可能基本上不變。這種情況可出現(xiàn)在視頻游戲中,因 為用戶還沒有輸入命令(諸如使用用戶接口設(shè)備提供指令),也即還不 存在用戶動作。作為替代,取決于相應(yīng)的視頻游戲,可能存在用戶不可 訪問也即即使用戶輸入命令但仍不受影響的內(nèi)容子集(例如,視頻幀的 背景中的圖像)。這種信息對于游戲開發(fā)者是可訪問的并且可用于選擇 對哪些宏塊進(jìn)行預(yù)編碼和壓縮、以及選擇對哪些宏塊既進(jìn)行預(yù)編碼又存 儲未壓縮的像素信息??筛鶕?jù)相應(yīng)的視頻游戲的游戲狀態(tài)也即根據(jù)用戶 命令來修改由參考柵格614所標(biāo)識的宏塊。相應(yīng)的游戲引擎1848 (圖 18)中的合成器模塊1852 (圖18)可使用參考柵格614的當(dāng)前狀態(tài)來
預(yù)編碼宏塊612的恰當(dāng)子集,以生成視頻幀。除了允許游戲資源被共享 之外,這種方法還可減小架構(gòu)和/或與生成對應(yīng)于一個或多個^見頻游戲的 視頻幀相關(guān)聯(lián)的成本。特別地,生成視頻幀可能涉及對對應(yīng)于參考柵格 614的先前狀態(tài)和參考柵格614的當(dāng)前狀態(tài)的兩個索引或指針(指向宏 塊)的比較,而不是對對應(yīng)的宏塊中的所有像素的比較。圖7是說明生成至少一個視頻幀的過程的實(shí)施例700的流程圖。實(shí) 施例700中的操作可歸到預(yù)編碼操作710和視頻幀生成操作720中。預(yù) 編碼操作710可以在一個或多個游戲服務(wù)器116 (圖1 )中執(zhí)行并且/或 者預(yù)編碼操作710可以由游戲開發(fā)者或游戲發(fā)布者在將游戲的固定裝備 (assets)裝載到有線電視系統(tǒng)100 (圖1 )之前執(zhí)行。預(yù)編碼操作710 包括對一個或多個宏塊(諸如圖6中的預(yù)編碼宏塊612)以及/或者對相 應(yīng)的宏塊中的一個或多個塊執(zhí)行二維離散余弦變換(DCT) (712)、量 化(714)和游程編碼(716)。如下面參考圖8所進(jìn)行的進(jìn)一步討論那 樣,DCT (712)產(chǎn)生對應(yīng)于宏塊的圖像信息的若干DC系數(shù)和若干組 AC系數(shù)。量化(714)包括確定相應(yīng)的宏塊的量化因子。游程編碼(716) 可包括霍夫曼編碼操作。
預(yù)編碼操作710可以可選地包括計算一個或多個運(yùn)動矢量(指向最 近的半像素)和/或校正數(shù)據(jù)(718 ),其被添加到進(jìn)行了對應(yīng)于運(yùn)動矢量 之一的位移之后的宏塊以獲得視頻幀的最終宏塊。當(dāng)視頻游戲包括在視 頻游戲的執(zhí)行期間重復(fù)的已知動畫序列時,預(yù)編碼宏塊的運(yùn)動矢量尤其 有用。當(dāng)視頻游戲中的對象在不同動畫序列期間在不同方向移動時,對 除宏塊的運(yùn)動矢量之外的內(nèi)容也進(jìn)行預(yù)編碼可能是有用的。所產(chǎn)生的一 個或多個運(yùn)動矢量和/或校正數(shù)據(jù)可存儲在一個或多個庫610 (圖6)中 的對應(yīng)的宏塊612 (圖6)中。注意,預(yù)編碼運(yùn)動矢量(也即,計算一 個或多個運(yùn)動矢量和/或校正數(shù)據(jù)718)不同于在諸如MPEG2之類的 MPEG兼容的壓縮中實(shí)現(xiàn)的動態(tài)運(yùn)動估計(也即,即時的運(yùn)動估計)。
在生成視頻幀(720)期間,相鄰宏塊被互相關(guān)(722)?;ハ嚓P(guān)操 作(722)可包括確定一個或多個DC系數(shù)、完成對一個或多個運(yùn)動矢 量和/或校正數(shù)據(jù)以及/或者相應(yīng)宏塊的量化因子的計算。所產(chǎn)生的宏塊 的數(shù)據(jù)流可與MPEG壓縮標(biāo)準(zhǔn)兼容。在示例性實(shí)施例中,預(yù)編碼710 可基本上完成生成MPEG兼容的視頻幀所需編碼的90% 。最后10%包 括確定取決于先前的或隨后的宏塊中的信息的相關(guān)信息,并且是通過對 相鄰宏塊進(jìn)行空間和/或時間上的互相關(guān)(722)來完成的。下文參考圖 8和圖9進(jìn)一步討論確定一個或多個DC系數(shù),下文參考圖9進(jìn)一步討
20論對量化因子的確定,并且下文還參考圖10進(jìn)一步討論完成對一個或
多個運(yùn)動矢量和/或校正數(shù)據(jù)的計算。
流程圖700可包括更少的操作或另外的操作。另外,兩個或多個操作可進(jìn)行合并并且/或者各操作的次序可以改變。
圖8是說明宏塊中的色度塊和亮度塊的實(shí)施例800的框圖。宏塊包括四個亮度(Y)塊810和兩個色度(U和V)塊812。塊810和812包括與圖7中所說明的預(yù)編碼710相關(guān)聯(lián)的AC和DC系數(shù)。在示例性實(shí)施例中,亮度塊810對應(yīng)于8x8的像素陣列, 一個色度塊(諸如色度塊812 - 1 )對應(yīng)于宏塊的U信息而一個色度塊(諸如色度塊812 - 2 )對應(yīng)于宏塊的V信息。在其他實(shí)施例中,宏塊可基于諸如RGB之類的合成視頻信息來生成,而且實(shí)施例800中的各塊因此可被修改。
圖8中的每個亮度塊810具有DC系數(shù)814,而每個色度塊812具有DC系數(shù)816 。 DC系數(shù)814和816分別指定宏塊的平均亮度和色度(紅或藍(lán))。DC系數(shù)814和816在宏塊800中被表示為相對于相鄰塊的DC系數(shù)的值。因此,DC系數(shù)814—2是由亮度塊810—2的DC系數(shù)與亮度塊810一1的DC系數(shù)之間的差值來表示;DC系數(shù)814—3是由亮度塊810—3的DC系數(shù)與亮度塊810—2的DC系數(shù)之間的差值來表示;DC系數(shù)814一4是由亮度塊810_4的DC系數(shù)與亮度塊810—3的DC系數(shù)之間的差值來表示;也即,這些DC系數(shù)是在宏塊內(nèi)部確定的。DC系數(shù)814—1、 DC系數(shù)816_1和DC系數(shù)816—2是相對于相鄰宏塊來確定的。這在圖9中進(jìn)行了說明,圖9是說明互相關(guān)相鄰宏塊的實(shí)施例900的框圖。特別地,宏塊912的至少3個DC系數(shù)可以通過使用^L頻幀910中的一個或多個相鄰宏塊914來確定。在示例性實(shí)施例中,當(dāng)計算宏塊912的DC系數(shù)的表示時,宏塊914—3 ^L用作相鄰宏塊。
如果宏塊912的量化因子不同于相鄰宏塊(諸如宏塊914一3)的量化因子,則圖7中的互相關(guān)操作(722)可包括將量化因子添加到對應(yīng)于視頻幀910的數(shù)據(jù)流中的宏塊912的頭字段。
如前面所討論的,因?yàn)橐跃€性或循環(huán)的形式來重復(fù)預(yù)定的宏塊序列的動畫序列對于游戲開發(fā)者是已知的,所以這些宏塊可以被預(yù)編碼并與一個或多個運(yùn)動矢量和/或校正數(shù)據(jù)一起進(jìn)行存儲(例如,在圖6中的一個或多個庫610中)。在預(yù)編碼(710)(圖7)期間計算出的運(yùn)動矢量和/或校正數(shù)據(jù)(718)包含相關(guān)信息。因此,當(dāng)生成—見頻幀(720)(圖7)時,可完成這種計算(也即,相鄰宏塊可被互相關(guān),并且運(yùn)動矢量和/或校正數(shù)據(jù)可最終確定下來)。在MPEG兼容的實(shí)施例中,當(dāng)包含這些動畫序列之一的視頻幀被發(fā)送時,可發(fā)送包括運(yùn)動矢量和相對于先前視頻幀區(qū)域的增量或差值信息的預(yù)測宏塊,而不發(fā)送完全內(nèi)編碼的宏塊。預(yù)測宏塊中的運(yùn)動矢量指示了將被用作構(gòu)建當(dāng)前視頻幀的片的開始點(diǎn)的像素陣列(例如,16x 16的像素陣列)的位置。運(yùn)動矢量指示了相對于片的位置,諸如Tx + X像素和Ty + Y,其中Tx、 Ty是片位置而X、Y是運(yùn)動矢量所指定的相對位置。運(yùn)動矢量可指向重疊了先前視頻幀的兩個或四個片的陣列。當(dāng)運(yùn)動矢量具有零(null)值時,片的開始點(diǎn)是先前視頻幀中的片的像素陣列。增量和差值信息指定如何修改開始點(diǎn)像素陣列以產(chǎn)生當(dāng)前視頻幀中的片的像素陣列。注意,諸如MPEG2之類的MPEG兼容的壓縮具有若干種類型的宏塊。內(nèi)編碼的宏塊是自包含的,也即它包含限定視頻幀中的一組對應(yīng)像素的圖像信息所需要的所有信息。預(yù)測宏塊包含從空宏塊(只有頭字段被發(fā)送)到同時包含著運(yùn)動矢量和增量或差值信息(也即相關(guān)信息)的宏塊的范圍內(nèi)的信息。下面參考圖12-14,進(jìn)一步討論MPEG2壓縮和各種類型的宏塊。
預(yù)編碼(710)(圖7)可包括對相鄰宏塊的運(yùn)動搜索以計算運(yùn)動矢量和/或校正數(shù)據(jù)(718 )(圖7 )。在生成視頻幀(720)(圖7 )期間,在相應(yīng)的游戲引擎1848 (圖18)中的合成器模塊1852 (圖18)可核實(shí)在預(yù)編碼(710 )(圖7 )期間計算出的運(yùn)動估計(運(yùn)動矢量和/或校正數(shù)據(jù))對于當(dāng)前游戲狀態(tài)是正確的(例如,對話框沒有覆蓋動畫序列中的宏塊)。這可以通過檢查參考柵格614 (圖6)中的對應(yīng)的宏塊索引在先前視頻幀中的一個或多個預(yù)期位置處的存在性來實(shí)現(xiàn)。在示例性實(shí)施例中,跟蹤相應(yīng)的動畫序列中的一個已知的對象。對于具有半像素精度的運(yùn)動矢量,可以執(zhí)行與多至四個被16x16的源像素陣列覆蓋的先前宏塊相比專交。圖IO是說明比較視頻幀的實(shí)施例1000的框圖。將當(dāng)前視頻幀1012 與先前視頻幀1010進(jìn)行比較以識別對象1016。該比較產(chǎn)生包括對象 1016和對應(yīng)的修改區(qū)域1018的增量1014地圖(map)的差值。如上所 述,這種比較可用在對預(yù)編碼的動畫序列的運(yùn)動估計中。如下所述,它 還可用于通過使用如在圖3和圖4中描述的動態(tài)生成的或編碼的宏塊來 生成包含對象或"sprite"的視頻幀,將在下面進(jìn)一步描述。
盡管已經(jīng)描述了使用預(yù)編碼宏塊和動態(tài)生成的宏塊二者的系統(tǒng)和 方法的各種實(shí)施例,但是還可能存在使用預(yù)編碼宏塊和動態(tài)生成的宏塊 的各種組合的許多另外的實(shí)施例。取決于視頻游戲系統(tǒng)(例如,圖18 中所示出的系統(tǒng))中的處理器的數(shù)目和速度,在一個或多個視頻幀中的 圖像信息或多或少可以被預(yù)編碼。然而,通常在相應(yīng)的視頻游戲中存在 這樣的對象子集,其對用戶命令作出響應(yīng)。因?yàn)檫@些對象的行為事先是 未知的,所以這些對象可纟皮動態(tài)地編碼。
假設(shè)在預(yù)編碼操作(710)(圖7)期間存在編碼器可用的另外的時 間,則編碼器可使用針對諸如DCT ( 712 )(圖7 )之類的操作的浮點(diǎn)算 法。另外,量化操作(714)(圖7)可從多至比方說30個可能值中選擇 用于相應(yīng)宏塊的最優(yōu)量化因子。盡管這種實(shí)現(xiàn)可提供較高的壓縮和/或圖 像質(zhì)量,但是它們可能比較費(fèi)時。因此,對對象或"sprite"的動態(tài)編碼 可使用快速編碼??焖倬幋a可包括在DCT操作(712)(圖7)過程中的 定點(diǎn)(整數(shù))乘法。另外,相應(yīng)宏塊的量化因子可選自較小的集合。例 如,用于相應(yīng)的(16x 16)宏塊的量化因子可以是用于該宏塊中的四個 8x8的塊的最大量化因子。如果所產(chǎn)生的數(shù)據(jù)速率超過期望的上限,則 可以直接計算實(shí)現(xiàn)期望的上限的量化因子。盡管該量化因子可能是次優(yōu) 的(可能使用也可能未使用所有的可用比特),但是這種計算可能比在 預(yù)編碼(710)(圖7)過程中所使用的計算更快。因此,對于動態(tài)編碼, 在圖像質(zhì)量和整個編碼時間之間可能存在折衷。
對應(yīng)于一個或多個對象或"sprite"的一個或多個動態(tài)生成的宏塊可 與一個或多個預(yù)編碼宏塊的至少一部分進(jìn)行組合。組合宏塊和"sprite" 可包括混合(blending)或摻合( mix )以或者疊力口 。 1"列^!口,〉'昆^"可
23包括oc混合,其中對象或"sprite"的有效透明度在像素范圍上發(fā)生變化。 疊加可使用色度鍵,其可指示預(yù)編碼宏塊的哪部分是背景圖像信息。除 了預(yù)編碼的像素信息之外,某些預(yù)編碼宏塊612 (圖6)還可包括未壓 縮的像素信息以促進(jìn)這種組合。在示例性實(shí)施例中,針對mxn尺寸的 宏塊中的對象或"sprite"的動態(tài)生成的宏塊可能對應(yīng)于已修改的區(qū)域 1018 (圖10),并且由于像素精確對準(zhǔn)的原因可包括(m+l ) x (n+l) 的宏塊陣列。在組合過程中,對象或"sprite"可與(n+l) x (m+i) 的預(yù)編碼宏塊陣列進(jìn)行組合。圖11是說明對視頻幀1110中的預(yù)編碼宏 塊1112和對象1114進(jìn)行組合的實(shí)施例1100的框圖。對象1114_1被疊 加到宏塊1112—1上。對象1114—2與宏塊1112—2混合。
按照前面的描述,在—見頻游戲期間,當(dāng)前一見頻幀可根據(jù)當(dāng)前游戲狀 態(tài)通過使用參考柵格614(圖6)來生成。恰當(dāng)?shù)念A(yù)編碼宏塊612(圖6) 可基于參考柵格614 (圖6)中的對應(yīng)索引來組裝。在開始視頻游戲之 前和/或在開始視頻游戲時可能已經(jīng)編碼了恰當(dāng)?shù)念A(yù)編碼宏塊(例如,對 應(yīng)于用戶名的宏塊)。這些恰當(dāng)?shù)念A(yù)編碼宏塊可被互相關(guān)(722)(圖7)。 一個或多個動畫序列可被包括在當(dāng)前—見頻幀中。在一個或多個動畫序列 中的一個或多個宏塊的位置或索引可基于與先前視頻幀的比較以及/或 者通過使用預(yù)編碼的運(yùn)動估計(包括一個或多個運(yùn)動矢量和/或校正數(shù) 據(jù))來確定。當(dāng)生成當(dāng)前一見頻幀時,預(yù)編碼的運(yùn)動估計也可#1互相關(guān)
于對象或"sprite"的宏塊可即時地或?qū)崟r地生成并組合到當(dāng)前視頻幀中。
合和/或疊加。為了促進(jìn)組合,某些預(yù)編碼宏塊可與未壓縮的像素信息一 起存儲。
數(shù)據(jù)流
現(xiàn)在,將注意力集中到圖像組(GOP)和對應(yīng)于視頻游戲的一個或 多個視頻幀的相關(guān)數(shù)據(jù)流的實(shí)施例。在諸如MPEG2之類的MPEG壓縮 中,存在若干種類型的幀,包括內(nèi)部(I)幀和預(yù)測(P)幀。I幀包括多個片段,每個片段均包含內(nèi)部編碼的宏塊(前面對其進(jìn)行了討論)。I 幀中的所有宏塊必須存在。P幀包含多個片段。這些片段可包括內(nèi)部編 碼的宏塊和預(yù)測宏塊(前面對其進(jìn)行了討論)。每個片段必須具有至少 兩個宏塊(片段中的第一宏塊和最后的宏塊)。預(yù)測宏塊可以是空的(也 即,只有頭字段被發(fā)送)。作為替代,片段中的一個或多個預(yù)測宏塊可 被跳過。在后續(xù)的宏塊中的地址增量指示了存在多少個被跳過的宏塊。
在具有40列和30行的視頻幀的示例性實(shí)施例中,將存在30個片段。 對于P幀,每個片段將具有至少第一宏塊和最后的宏塊。因此,在該實(shí) 施例中預(yù)測宏塊中的地址增量范圍是從1到39。
在某些實(shí)施例中,當(dāng)視頻游戲開始時I幀被發(fā)送。I幀可對應(yīng)于全 黑圖像以將所產(chǎn)生的數(shù)據(jù)速率保持為低于上限。當(dāng)I幀^皮發(fā)送之后,數(shù) 據(jù)流中的剩余部分在視頻游戲期間可使用P幀。P幀可包含從一個視頻 幀到下一個視頻幀的相對或差分信息,也即P幀可包含更新信息(注意, 可能不需要針對P幀中的預(yù)編碼宏塊對DC系數(shù)進(jìn)行互相關(guān))。注意, 使用一組公共的預(yù)編碼宏塊(如在前面的章節(jié)中所描述那樣)的視頻幀 可具有基本上不變的AC系數(shù)(對應(yīng)于圖7中的DCT操作(712)圖7) 以及/或者基本上不變的量化因子(對應(yīng)于圖7中的量化操作(714))。
當(dāng)前視頻幀中的相對于先前視頻幀沒有改變的圖像信息可以不被 發(fā)送。這可通過發(fā)送一個或多個空的或被跳過的預(yù)測宏塊來實(shí)現(xiàn)。如果 整個視頻幀保持不變,則可發(fā)送包含被跳過的和空的預(yù)測宏塊的P幀。 在示例性實(shí)施例中,空的P幀將具有30個片段,其中每個都包含兩個 空的預(yù)測宏塊。發(fā)送空的P幀還可用于防止STB 1900 (圖19)中的解 碼器1914 (圖19)下溢出。P幀可以作為片段序列在一段時間上進(jìn)行 發(fā)送。這也可以幫助保持?jǐn)?shù)據(jù)速率低于上限。這種有界的數(shù)據(jù)速率可 減小與在諸如有線電視系統(tǒng)100 (圖1)之類的網(wǎng)絡(luò)化環(huán)境中將一個或 多個視頻游戲提供給一個或多個用戶相關(guān)聯(lián)的架構(gòu)以及成本。例如,有 界的數(shù)據(jù)速率可防止一個或多個用戶的相應(yīng)的數(shù)據(jù)速率臨時使用系統(tǒng) 或網(wǎng)絡(luò)(諸如網(wǎng)絡(luò)136 (圖1 ))中的可用資源中的相當(dāng)大部分。在示例 性實(shí)施例中,這種上界可以是包含I幀的對應(yīng)MPEG數(shù)據(jù)流的0.03、0.1、0.16、 0.25或0.33。數(shù)據(jù)流可包括30個P幀/每秒。在某些實(shí)施例中, 通過使用這些技術(shù)所獲得的對發(fā)送帶寬的保持可以使每個游戲引擎 1848 (圖18)中的用戶或用戶組的數(shù)目相對于現(xiàn)有;f見頻游戲系統(tǒng)實(shí)現(xiàn) 20倍的增長。
如上所述,針對一個或多個視頻幀中的預(yù)編碼的動畫序列,可以使 用其中每個都至少包含運(yùn)動矢量和/或校正數(shù)據(jù)的內(nèi)編碼的宏塊或預(yù)測 宏塊。宏塊選擇可取決于待發(fā)送的信息量。繼而,這可取決于一個或多 個視頻幀的復(fù)雜度以及/或者從一個視頻幀到下 一個視頻幀的差異或增 量。在某些實(shí)施例中,這種選擇是基于數(shù)據(jù)速率的。注意,每當(dāng)序列運(yùn) 行時,也即每當(dāng)序列被包括在數(shù)據(jù)流中時,對應(yīng)于動畫序列的預(yù)編碼宏 塊將具有基本不變的AC系數(shù)(對應(yīng)于圖7中的DCT操作(712))和/ 或量化值(對應(yīng)于量化操作(714)。
在發(fā)送和/或解碼過程中出現(xiàn)了錯誤的條件下,對P幀尤其是預(yù)測 宏塊的使用可能會造成困難。這種錯誤可從一個視頻幀傳播到下一個視 頻幀。為了阻止無限地傳播,可以使用滾動更新。包含內(nèi)編碼的宏塊的 一個或多個片段(即, 一個或多個I幀片段)在某時間間隔后可被包括 在P幀中。經(jīng)過某個包括若干P幀的時間段,完整的一組內(nèi)編碼的宏塊 (針對視頻幀中的每個片,包括至少一個宏塊)可被發(fā)送,由此將當(dāng)前 視頻幀"恢復(fù),,到已知狀況。例如,在P幀速率是30幀/秒以及每幀包 括30個片段的系統(tǒng)中,每個P幀可包括一個相應(yīng)的I幀片段。結(jié)果, 視頻幀的所有片段至少每秒恢復(fù)一次。在另一例子中,每兩個P幀包括 一個相應(yīng)的I幀片段,由此,每兩秒恢復(fù)一次視頻幀的所有片段。實(shí)質(zhì) 上,這種滾動更新可以用作一種形式的錯誤糾正。因此,即使在視頻幀 保持基本不變的條件下(例如,游戲狀態(tài)基本不變),仍可發(fā)送內(nèi)編碼 宏塊的一個或多個片段。
圖12是說明生成對應(yīng)于至少一個視頻幀的數(shù)據(jù)流的過程1200的實(shí) 施例的流程圖。接收到請求(1210)。例如,該請求可以是對正在執(zhí)行 的視頻游戲的請求。包括I幀的多個宏塊(在該請求之前已被編碼)被 發(fā)送(1212)。過程1200可包括更少的操作或另外的操作。另外,兩個操作的次序可以改變。
圖13是說明生成對應(yīng)于至少一個視頻幀的數(shù)據(jù)流的過程1300的實(shí) 施例的流程圖。接收到請求(1210)。包括I幀的多個宏塊(在該請求 之前已被編碼)被發(fā)送(1212 )。包括在該請求之前被編碼了的子集的P 幀序列被發(fā)送(1310),其中每個P幀都包括附加的多個宏塊。如上所 述,某些P幀包括一個或多個幀內(nèi)片段。某些P幀包括一個或多個空的 或被跳過的宏塊。過程1300可包括更少的操作或另外的操作。另外, 兩個或多個操作可被合并以及/或者各操作的次序可以改變。
圖14是說明包括視頻幀序列的數(shù)據(jù)流1400的實(shí)施例的框圖。I幀 1410和多個P幀1414^皮發(fā)送。I幀1410包括多個內(nèi)編碼的宏塊1412。 某些P幀1414,諸如P幀1414-2,包含預(yù)測宏塊1416、 一個或多個空 的預(yù)測宏塊1418以及一個或多個^^皮跳過的預(yù)測宏塊。預(yù)測宏塊中的大 于1的地址增量1422指示了在預(yù)測宏塊前面的一個或多個被跳過的預(yù) 測宏塊,諸如預(yù)測宏塊1416-2。某些P幀1414,諸如P幀1414-4,還 包含一個或多個片段,諸如片段1420。片段1420包括內(nèi)編碼的宏塊 1412。
無界的游戲區(qū)域
許多現(xiàn)有視頻游戲包括一幅對應(yīng)于游戲區(qū)域的大地圖。 一個或多個 用戶根據(jù)用戶命令在地圖內(nèi)滾動。然而, 一個或多個用戶在任何時刻只 感受或看見(例如,在顯示器上)一小部分地圖。如果游戲區(qū)域較大(在 兩個維度上具有數(shù)千個像素),則即使任何時刻只有一小部分被需要, 也可能有相當(dāng)大的信息量被傳送到STB 140 (圖1 )。
某些現(xiàn)有視頻游戲通過使用寄存器和游戲狀態(tài)來限定當(dāng)前游戲區(qū) 域并從而減少了在任何時刻可能被傳送給STB 140 (圖1)的信息量, 從而解決這個難題。對諸如數(shù)據(jù)流1400 (圖14)之類的MPEG兼容的 數(shù)據(jù)流的使用可以提供一種替代性的方法,以實(shí)現(xiàn)實(shí)際具有無限范圍的 游戲區(qū)域,同時減少了任何時刻可能被傳送給STB 140 (圖1)的信息 量。特別地,MPEG2限定了兩個顯示擴(kuò)展頭字段,其可以包括在對應(yīng) 于視頻幀的已打包的基本流1614 (圖16)中。序列顯示擴(kuò)展(SDE) 限定顯示多少已編碼信息,也即顯示大小或放大率,而圖片顯示擴(kuò)展 (PDE)限定每個視頻幀的偏移量。
在一個實(shí)施例中,SDE被用于限定宏塊的可視部分,其小于被編碼 的信息。結(jié)果,有效的游戲區(qū)域相對于發(fā)送給STB 140的全部視頻幀被 減小了。這在圖15中進(jìn)行了說明,圖15是示出視頻幀1500中的有效 游戲區(qū)域的實(shí)施例的框圖。盡管—見頻幀1500具有多個行616和列618, 但是由SDE和PDE限定的顯示的圖像1514在視頻幀1500的每個維度 上具有保護(hù)帶1510和1512。在示例性實(shí)施例中,存在30個宏塊行616 和40個宏塊列618以及每個都是1宏塊寬的保護(hù)帶1510、 1512,也即 每次實(shí)際顯示的有效游戲區(qū)域具有對應(yīng)于29個宏塊x39個宏塊的尺 寸。
例如,如果用戶發(fā)出將顯示的圖像1514往右移動的命令,則PDE 的水平分量增加1。如果PDE的水平分量超過15,則可以重新發(fā)送視 頻幀,其中所有宏塊往右移位1個宏塊(32個半像素的運(yùn)動矢量),并 且PDE被重置成O。隨后,如果用戶發(fā)出命令將顯示的圖像1514繼續(xù) 往右移動,則在PDE的水平分量超過15時,可以重新發(fā)送視頻幀。在 這個例子中,重新發(fā)送視頻幀將包括發(fā)送P幀中的一系列片段,并且這 些片段中的每個將包含兩個帶有運(yùn)動矢量的預(yù)測宏塊和一個對應(yīng)于顯 示的圖像1514中現(xiàn)在所包括的新圖像信息(在右邊)的內(nèi)編碼宏塊。 通過這種方法,對數(shù)據(jù)流1400 (圖14)的MPEG兼容的編碼減少了發(fā) 送給STB 140 (圖1)的信息量并允許游戲區(qū)域具有實(shí)際上無限的有效 擴(kuò)展。
等待時間
對數(shù)據(jù)流1400 (圖14)進(jìn)行編碼總是表示在復(fù)雜度(數(shù)據(jù)速率) 和所產(chǎn)生的圖像質(zhì)量之間的折衷。另外,可發(fā)送的信息量還是從一個視 頻幀到后續(xù)視頻幀的改變量以及解碼器1914 (圖19)中的數(shù)據(jù)緩存器的大小的函數(shù)。數(shù)據(jù)緩存器大小設(shè)置了 STB 140中的一見頻幀的解碼等待 時間的上限。
因?yàn)樵诮獯a器1914 (圖19)處的數(shù)據(jù)到達(dá)時間與對數(shù)據(jù)進(jìn)行解碼 的開始時間之間常存在差異,所以等待時間出現(xiàn)了。通常,最大等待時 間是用于發(fā)送與數(shù)據(jù)緩存器大小相等的視頻幀的持續(xù)時間(因?yàn)樵诮獯a 開始時相應(yīng)的視頻幀的發(fā)送必須完成)。在使用MPEG2壓縮的現(xiàn)有系統(tǒng) 中,最大等待時間通常是大約300ms。這些現(xiàn)有系統(tǒng)常使用該時間延遲 來發(fā)送所需的不同量的信息(I幀和/或P幀),也即對一個或多個視頻 幀的發(fā)送可以散布在該時間間隔期間。通過這種方式,現(xiàn)有系統(tǒng)可以保 持?jǐn)?shù)據(jù)速率有界。
視頻游戲在這方面造成了若干另外的難題。與現(xiàn)有MPEG編碼器不 同,因?yàn)轭A(yù)先不知道用戶命令(動作)也即視頻游戲編碼器不可能預(yù)測 未來,所以沒有預(yù)先分配數(shù)據(jù)速率。結(jié)果,最大的等待時間非常低,例 如一個幀周期。在示例性實(shí)施例中,編碼器處的等待時間可能小于50ms (例如,30或40ms),并且往返行路等待時間(包括與游戲控制器1924 (圖19)中的遠(yuǎn)程控制相關(guān)聯(lián)的任何延遲)可能小于100ms。低的等待 時間意味著,為了用于保持?jǐn)?shù)據(jù)速率有界,發(fā)送視頻幀(在解碼開始之 前)的時間有限,以及因此時間窗口有限,其中在該時間窗口中展開數(shù) 據(jù)流1400 (圖14)中的信息。
在這點(diǎn)上,前述編碼方法提供了若干優(yōu)點(diǎn)。值得注意的是,對P幀 的使用使得信息可以按需展開以保持?jǐn)?shù)據(jù)速率有界并適應(yīng)低的等待時 間。在某些實(shí)施例中,如果游戲引擎1848(圖18)中的合成器模塊1852 (圖18)確定在對視頻幀的更新中的比特數(shù)超過一個幀周期的發(fā)送時 間,則可以在短的時間期間(例如,近似33.33毫秒幀周期中的大約1 毫秒)發(fā)送一個或多個只包含空的和/或被跳過的預(yù)測宏塊(或者作為替 代,包含多個空的和/或被跳過的預(yù)測宏塊)的P幀,由此防止解碼器 1914 (圖19)下溢出。接著,可以在超過一個幀周期的時間期間并且在 某些情況下是兩個或多個幀周期期間在P幀中發(fā)送更新信息。例如,可 以發(fā)送三個幾乎為空的P幀(對應(yīng)于先前的視頻幀)并且接著可以在近似3到3.9個幀周期上發(fā)送包含更新信息(也即,對應(yīng)于當(dāng)前的視頻幀) 的P幀,從而保持?jǐn)?shù)據(jù)速率有界。當(dāng)使用該方法時,STB 140(圖1) 可以用減少圖像改變和/或不連續(xù)性的方式來更新電視138(圖1 )。例如, 可以遞增地(在接收更新信息的時候)更新視頻幀,或者在接收所有的 更新信息之后更新視頻幀。MPEG數(shù)據(jù)流包括允許編碼器與解碼器1914 (圖19)進(jìn)行自同步 (也即限定等待時間)的頭字段,并且這些頭字段可用于實(shí)現(xiàn)上述方法 以保持?jǐn)?shù)據(jù)速率有界。這在圖16中進(jìn)行了說明,圖16示出說明數(shù)據(jù)流 的實(shí)施例1600的框圖。包括帶有程序時鐘參考(PCR)時間的頭字段 1612的傳送分組1610被周期性地(例如,每200ms)發(fā)送。針對視頻 幀分組的打包的基本流1614包括帶有呈現(xiàn)時間戳(PTS)的幀頭字段 1616和一個或多個片段1618。每個片段1618包含兩個或多個宏塊1620。 PCR時間限定解碼器1914 (圖19)處的數(shù)據(jù)到達(dá)時間。PTS在PCR的 時間的時基中,也即它是時間差值或增量。PTS限定在解碼器中何時開 始解碼和呈現(xiàn)視頻幀。通常,傳送分組1610包括大約188字節(jié)并且打 包的基本流1614包括大約10-200kB。圖17是說明生成對應(yīng)于至少一個視頻幀的數(shù)據(jù)流的過程1700的實(shí) 施例的流程圖。對應(yīng)于視頻幀的比特數(shù)被確定(1710)。發(fā)送這些比特 數(shù)所需的時間長度(發(fā)送時間)被確定(1712)。還確定發(fā)送時間是否 超過對應(yīng)于一個幀周期的時間長度(1714)。如果發(fā)送時間超過對應(yīng)于 一個幀周期的時間長度,則發(fā)送一個或多個包括多個空的或被跳過的宏 塊的P幀(1716)。過程1700可包括更少的操作或另外的操作。另夕卜, 兩個或多個操作可被合并以及/或者各操作的次序可改變。預(yù)編碼的纟見頻和音頻 在某些實(shí)施例中, 一個或多個預(yù)編碼視頻序列可以與包括合成的視 頻游戲圖像信息的視頻幀進(jìn)行組合。例如,視頻游戲可包括電視或其上 顯示視頻序列的其他顯示設(shè)備的圖像。如果在對應(yīng)于視頻游戲圖像信息 的圖像區(qū)域中的一個或多個子集中包含了 一個或多個預(yù)編碼視頻序列,30也即視頻幀對應(yīng)于視頻游戲圖像信息并且包括帶有預(yù)編碼的視頻序列 的區(qū)域,則這種組合可能較少出現(xiàn)問題。合成的視頻游戲圖像信息可被 排除在視頻序列發(fā)生的一個或多個矩形區(qū)域之外。然而,如果在對應(yīng)于 預(yù)編碼的視頻序列的圖像區(qū)域中的 一個或多個子集中包含了視頻游戲信息的區(qū)域,則這種組合可能更具挑戰(zhàn)性。在這種情況下,預(yù)編碼的視 頻序列可以通過使用與用于編碼視頻游戲圖像信息的方法相兼容的方 法來進(jìn)行編碼。因此,預(yù)編碼的視頻序列可以被編碼從而使它具有相同 的GOP,并且因此具有與視頻游戲信息相同的數(shù)據(jù)流格式。這可以允許 視頻序列中的視頻幀的一個或多個子集被排除從而不被用作在運(yùn)動估 計計算中的運(yùn)動源。因此,兩個數(shù)據(jù)流可以在編碼域中進(jìn)行組合,并同時防止了視頻游戲圖像信息破壞預(yù)編碼的視頻序列。所產(chǎn)生的針對相應(yīng) 的視頻幀的數(shù)據(jù)流將具有宏塊的組合,這些宏塊包括用于視頻序列的那 些宏塊和用于視頻游戲圖像信息的那些宏塊。預(yù)編碼的視頻游戲宏塊相 比視頻游戲圖像信息(其對于多個視頻幀可以基本上相同)可以具有較 寬的AC系數(shù)和量化值范圍。另外,在帶有預(yù)編碼的視頻序列的一個或 多個區(qū)域內(nèi)的運(yùn)動矢量可以不指向帶有視頻游戲圖像信息的區(qū)域,并且 反之亦然。相應(yīng)的視頻游戲中的一個或多個視頻幀還可以包括音頻信息。音頻 信息可以使用預(yù)壓縮塊來生成。每個預(yù)壓縮的音頻塊可以對應(yīng)于相應(yīng)的 視頻幀,即它們可以在幀的基礎(chǔ)上生成。在示例性實(shí)施例中,可以使用Dolby音頻編碼格式,諸如Dolby音頻編碼3 ( AC3 )。在某些實(shí)施例中,可以通過臨時替換背景聲音來實(shí)現(xiàn)瞬時音響效 果。諸如音樂之類的背景聲音可以在延長的時間段上在多個視頻幀期間 存在。瞬時音響效果可以存在于一個或多個視頻幀期間,但是是在比背 景聲音更小的時間間隔上。為了從瞬時音響效果平滑地回到背景聲音, 背景聲音可以被衰減而且音量在過渡期間經(jīng)過若干^L頻幀緩慢地增強(qiáng)。然而,在某些實(shí)施例中,背景聲音和瞬時音響效果可以混合起來(也 即,二者可以基本上同時存在)。實(shí)現(xiàn)這種混合的一種方法將是解碼預(yù)編碼的音頻塊,執(zhí)行混合,并接著重新編碼音頻塊。在替代性的實(shí)施例中,可以使用經(jīng)修改的AC3編碼格式?,F(xiàn)有的AC3編碼將對應(yīng)于五點(diǎn) 一 (five point one)環(huán)繞聲道(左前、右前、中前、左后、右后和低頻 效果)的音頻互相關(guān)并且相互混合。在替代性的實(shí)施例中,包括一個或 多個環(huán)繞聲道的第一聲道子集可對應(yīng)于背景聲音,而包括一個或多個環(huán) 繞聲道的第二聲道子集可對應(yīng)于瞬時音響效果。該第一和第二聲道子集 可分別進(jìn)行編碼。這可以有利于即時地混合或摻合對應(yīng)于背景聲音和瞬 時音響效果的預(yù)編碼塊,也即無需進(jìn)行解碼、混合并接著重新編碼。硬件和數(shù)據(jù)結(jié)構(gòu)現(xiàn)在,將注意力集中到通過使用預(yù)編碼宏塊來生成對應(yīng)于一個或多 個視頻游戲的一個或多個視頻幀的若干硬件實(shí)施例。圖18是說明視頻 游戲系統(tǒng)1800的實(shí)施例的框圖。視頻游戲系統(tǒng)1800可包括至少一個數(shù) 據(jù)處理器、-現(xiàn)頻處理器和/或中央處理單元(CPU) 1810、 一個或多個可 選用戶接口 1814、與其他計算機(jī)進(jìn)行通信的通信或網(wǎng)絡(luò)接口 1820、月良 務(wù)器和/或一個或多個STB(諸如圖1中的STB140)、存儲器1822以及 使這些部件彼此相互耦合的一個或多個信號線路1812。至少一個數(shù)據(jù)處 理器、視頻處理器和/或中央處理單元(CPU) 1810可以被配置為多線 程的或并行處理的,或者是可配置的。用戶接口 1814可以具有一個或 多個#:盤1816和/或顯示器1818。 一個或多個信號線路1812可組成一 個或多個通信總線。存儲器1822可包括高速隨機(jī)存取存儲器和/或非易失性存儲器,包 括ROM、 RAM、 EPROM、 EEPROM、 一個或多個閃存盤驅(qū)動器、一 個或多個光盤驅(qū)動器和/或一個或多個》茲盤存儲設(shè)備。存儲器1822可存 儲諸如LINUX、 UNIX或WINDOWS之類的操作系統(tǒng)1824,其包括用 于處理基本的系統(tǒng)服務(wù)和用于執(zhí)行硬件相關(guān)的任務(wù)的過程(procedure) (或一組指令)。存儲器1822還可在網(wǎng)絡(luò)通信模塊1826中存儲通信程 序(或一組指令)。通信過程被用于與使用諸如STB 140 (圖1 )的STB 的一個或多個用戶進(jìn)行通信,以及與視頻游戲系統(tǒng)1800中的其他服務(wù)器和計算機(jī)進(jìn)行通信。存儲器1822還包括以下組件或這些組件的子集或超集,這些組件包括應(yīng)用服務(wù)器模塊1828 (或一組指令)、游戲固定裝備管理系統(tǒng)模塊 1830 (或一組指令)、會話資源管理模塊1834 (或一組指令)、玩家管理 系統(tǒng)模塊1836 (或一組指令)、會話網(wǎng)關(guān)模塊1842 (或一組指令)、多 玩家服務(wù)器模塊1844 (或一組指令)、 一個或多個游戲服務(wù)器模塊1846 (或一組指令)、以及存儲宏塊的庫1856。游戲固定裝備管理系統(tǒng)模塊 1830可包括游戲數(shù)據(jù)庫1832,其包括對應(yīng)于一個或多個一見頻游戲的預(yù) 編碼塊和可執(zhí)行的代碼。玩家管理系統(tǒng)模塊1836可包括玩家信息數(shù)據(jù) 庫1840,其包括諸如用戶姓名、賬號信息、交易信息、STB140(圖1) 上的視頻游戲的定制顯示的偏好、所玩的視頻游戲的高分、所玩的視頻 游戲的等級和其他技巧水平信息、以及/或者針對已暫停并稍后可能再繼 續(xù)進(jìn)行的視頻游戲的持久保存的游戲狀態(tài)之類的信息。游戲服務(wù)器模塊 1846的每個實(shí)例可以包括一個或多個游戲引擎模塊1848、合成器模塊 1852和一個或多個壓縮引擎模塊1854。游戲引擎模塊1848還可包括對 應(yīng)于參與一個或多個;f見頻游戲的一組或多組用戶的游戲狀態(tài)1850。庫1856可包括對應(yīng)于一個或多個一見頻游戲的預(yù)編碼宏塊1858、對應(yīng)于一 個或多個視頻游戲的帶有像素信息的預(yù)編碼宏塊1860、以及/或者對應(yīng) 于一個或多個^L頻游戲的動態(tài)生成或編碼的宏塊1862。游戲服務(wù)器才莫塊1846可運(yùn)行諸如Windows Explorer、 Netscape Navigator或FireFox的Mozilla之類的瀏覽器應(yīng)用,以執(zhí)行對應(yīng)于相應(yīng) 的視頻游戲的指令。然而,瀏覽器應(yīng)用可以配置成不呈遞游戲服務(wù)器模 塊1846中的視頻游戲內(nèi)容。呈遞視頻游戲內(nèi)容可能不是必要的,因?yàn)?游戲服務(wù)器不顯示該內(nèi)容,并且避免這種呈遞使每個游戲服務(wù)器能夠維 持比其他方式可能維持的游戲狀態(tài)更多的游戲狀態(tài)。游戲服務(wù)器模塊 1846可具有一個或多個處理器。 一見頻游戲可以由多個處理器并行地執(zhí) 行。游戲還可以在多線程*燥作系統(tǒng)中實(shí)現(xiàn)。雖然圖18將視頻游戲系統(tǒng)1800示出成許多分立項,但是圖18更 多地是旨在作為對視頻游戲系統(tǒng)中可能存在的各種特征的功能性描述而不是作為對此處所描述的實(shí)施例的結(jié)構(gòu)性示意圖。實(shí)際上,如本領(lǐng)域的普通技術(shù)人員所認(rèn)識到那樣,視頻游戲系統(tǒng)1800的功能可分布于大量的服務(wù)器或計算機(jī)上,其中各組服務(wù)器執(zhí)行那些功能的特定子集。在圖18中單獨(dú)示出的項可以組合并且某些項可以被分開。例如,圖18中 單獨(dú)示出的某些項可以在單個服務(wù)器上實(shí)現(xiàn)并且單個項可以由一個或 多個服務(wù)器來實(shí)現(xiàn)。從一種實(shí)現(xiàn)到另一種實(shí)現(xiàn),視頻游戲系統(tǒng)中的服務(wù) 器的實(shí)際數(shù)量以及諸如游戲服務(wù)器模塊1846和游戲引擎模塊1848之類 的特征在它們之間進(jìn)行分配的方式會發(fā)生變化,并且可能部分取決于系 統(tǒng)中所存儲的信息量和/或者系統(tǒng)在峰值使用率期間和在平均使用率期 間必須處理的數(shù)據(jù)流量。圖19是說明諸如STB 140 (圖1 )之類的機(jī)頂盒(STB ) 1900的實(shí) 施例的框圖。STB 1900發(fā)送訂購信息和對應(yīng)于用戶動作的信息,并通 過使用網(wǎng)絡(luò)136接收視頻游戲內(nèi)容。使用網(wǎng)絡(luò)接口 1910來處理接收到 的信號,以移除包含^L頻游戲內(nèi)容的數(shù)據(jù)流中的頭字段和其他信息。所 產(chǎn)生的信號在調(diào)諧器1912中進(jìn)行處理,以選擇對應(yīng)于一個或多個子信 道的頻率,并且在解碼器1914中進(jìn)行處理。在示例性實(shí)施例中,解碼 器1914是MPEG2解碼器。在其他實(shí)施例中,解碼器1914可以是MPEG 兼容的解碼器或針對另一視頻壓縮標(biāo)準(zhǔn)的解碼器。來自解碼器1914的 視頻游戲內(nèi)容輸出被轉(zhuǎn)換成恰當(dāng)?shù)母袷接糜谕ㄟ^使用顯示驅(qū)動器1916 來驅(qū)動顯示器1922。輸入到游戲控制器1924的用戶命令或動作是通過 設(shè)備接口 1918接收到的并被轉(zhuǎn)換到網(wǎng)絡(luò)接口 1910以供發(fā)送。STB1900 可以可選地包括用戶接口 1920,諸如鍵盤、按鈕、和/或液晶或其他顯 5哭'J、 S口 o游戲控制器1924可以是諸如由Sony Playstation 、 Nintendo 、 Sega⑧和Microsoft Xbox⑧提供的那些控制臺之類的專用視頻游戲控制 臺或者個人計算機(jī)。游戲控制器1924可以從游戲墊、鍵盤、游戲操縱 桿、麥克風(fēng)、鼠標(biāo)、 一個或多個遠(yuǎn)程控制、 一個或多個附加游戲控制器 或諸如包括語音識別技術(shù)的用戶接口之類的其他用戶接口接收對應(yīng)于 一個或多個用戶動作的信息。顯示器1922可以是陰極射線管或電視機(jī)、計算機(jī)或諸如視頻游戲控制器1924或蜂窩電話之類的便攜式設(shè)備中的液晶顯示器。
STB 1900可以具有適于在工業(yè)或商用設(shè)備上4吏用的諸如Linux、OS9或Windows之類的嵌入式操作系統(tǒng)或者實(shí)時操作系統(tǒng)(例如,WindRiver Systems有限公司的VxWorks )。
在某些實(shí)施例中,STB 1900可以在顯示視頻游戲內(nèi)容之前對接收到的視頻游戲內(nèi)容執(zhí)行平滑操作。在某些實(shí)施例中,接收到的視頻游戲內(nèi)容在它被接收到時被實(shí)時解碼并顯示在顯示器1922上。在其他實(shí)施例中,STB 1900存儲接收到的視頻游戲內(nèi)容直到接收到完整的視頻幀。接著,完整的視頻幀被解碼并顯示在顯示器1922上。
現(xiàn)在,將注意力集中到針對預(yù)編碼宏塊的數(shù)據(jù)結(jié)構(gòu)(諸如庫610(圖6)的數(shù)據(jù)結(jié)構(gòu))的實(shí)施例。圖20是說明預(yù)編碼宏塊的庫2000中的數(shù)據(jù)結(jié)構(gòu)的實(shí)施例的框圖。庫2000包括用于預(yù)編碼宏塊2012 (內(nèi)部和預(yù)測塊的已壓縮的ac系數(shù)以及內(nèi)宏塊的第二、第三和第四亮度塊的dc系數(shù)增量)、元數(shù)據(jù)2014、以及可選的未壓縮的像素信息2016的多個項2010。元數(shù)據(jù)2014可包括量化因子、 一個或多個DC系數(shù)以及/或者對應(yīng)于宏塊可與其進(jìn)行比較的多至四個其他宏塊的信息(針對使用運(yùn)動估計的預(yù)編碼的動畫序列,包括一個或多個運(yùn)動矢量和/或校正值)。
所描述的系統(tǒng)和方法可以用硬件和/或軟件來實(shí)現(xiàn)。指令可以用高級過程語言、面向?qū)ο缶幊陶Z言或匯編或4幾器語言來實(shí)現(xiàn)。編程語言可以被編譯或解釋。另夕卜,可以使用通用或?qū)S梦⑻幚砥饕约皩S眉呻娐贰?br>
出于說明和描述的目的給出了對本發(fā)明的特定實(shí)施例的上述描述。它們不是旨在進(jìn)行窮舉或?qū)⒈景l(fā)明限制到所公開的精確形式。相反,應(yīng)當(dāng)意識到,根據(jù)上面的教導(dǎo),許多修改和變型是可能的。選擇和描述這些實(shí)施例是為了最佳地解釋本發(fā)明的原理和它的實(shí)際應(yīng)用,從而使本領(lǐng)域的普通技術(shù)人員能夠最佳地使用本發(fā)明和具有適于預(yù)期的特定用途的各種修改的各種實(shí)施例。
權(quán)利要求
1.一種方法,包括接收請求;以及使用多個預(yù)編碼宏塊來生成視頻幀,其中,所述視頻幀與MPEG壓縮標(biāo)準(zhǔn)兼容,并且其中所述多個預(yù)編碼宏塊在所述請求之前被預(yù)編碼。
2. 根據(jù)權(quán)利要求1所述的方法,其中相應(yīng)的預(yù)編碼宏塊對應(yīng)于一 組像素,對所述相應(yīng)的預(yù)編碼宏塊的預(yù)編碼包括執(zhí)行離散余弦變換、量 化和游程編碼操作,并且所述生成包括使所述視頻幀中的相鄰的預(yù)編碼 宏塊互相關(guān)。
3. 根據(jù)權(quán)利要求2所述的方法,其中所述預(yù)編碼包括計算運(yùn)動矢 量和校正數(shù)據(jù)。
4. 根據(jù)權(quán)利要求2所述的方法,其中所述互相關(guān)包括確定針對包 括亮度信息的第一塊的第一DC系數(shù)值、針對包括色度信息的第二塊的 第二DC系數(shù)值以及針對包括色度信息的第三塊的第三DC系數(shù)值。
5. 根據(jù)權(quán)利要求1所述的方法,其中所述多個預(yù)編碼宏塊被存儲 在可單獨(dú)訪問的預(yù)編碼宏塊的庫中,并且在兩個或多個視頻游戲之間共 享所述多個預(yù)編碼宏塊的子集。
6. 根據(jù)權(quán)利要求1所述的方法,其中所述多個預(yù)編碼宏塊被存儲 在預(yù)編碼宏塊的庫中,并且在兩個或多個視頻幀之間共享所述多個預(yù)編 碼宏塊的子集。
7. 根據(jù)權(quán)利要求1所述的方法,其中在視頻游戲的兩個或多個實(shí) 例之間共享所述多個預(yù)編碼宏塊。
8. 根據(jù)權(quán)利要求1所述的方法,其中所述請求啟動視頻游戲。
9. 根據(jù)權(quán)利要求1所述的方法,其中已存儲的多個預(yù)編碼宏塊的 子集包括未壓縮的像素信息。
10. 根據(jù)權(quán)利要求9所述的方法,還包括動態(tài)地生成多個宏塊,其中所述動態(tài)生成的多個宏塊包括已存儲的多個包括未壓縮的像素信息 的預(yù)編碼宏塊的子集與對應(yīng)于對象的圖像信息的組合。
11. 一種用于生成^f見頻的設(shè)備,包括存儲器; 處理器;以及程序,其中所述程序存儲在所述存儲器中并且被配置成由所述處理 器執(zhí)行,所述程序包括用于接收請求的指令;以及 用于使用多個預(yù)編碼宏塊來生成視頻幀的指令, 其中,所述視頻幀與MPEG壓縮標(biāo)準(zhǔn)兼容,并且其中所述 多個預(yù)編碼宏塊在所述請求之前被預(yù)編碼。
12, 一種方法,包括 接收請求; 接收命令;以及使用在所述請求之前被預(yù)編碼的多個預(yù)編碼宏塊、在所述請求之后 且在所述命令之前被編碼的多個請求后編碼的宏塊、以及在所述命令之 后被編碼的多個動態(tài)地編碼的宏塊來生成視頻幀。
13. —種用于生成視頻的設(shè)備,包括 存儲器;處理器;以及程序,其中所述程序存儲在所述存儲器中并且被配置成由所述處理 器來執(zhí)行,所述程序包括用于接收請求的指令; 用于接收命令的指令;以及用于使用在所述請求之前被預(yù)編碼的多個預(yù)編碼宏塊、在 所述請求之后且在所述命令之前被編碼的多個請求后編碼的宏塊、以及 在所述命令之后被編碼的多個動態(tài)地編碼的宏塊來生成視頻幀的指令。
14. 一種方法,包4舌 接收請求;接收命令;以及使用在所述請求之前被預(yù)編碼的多個預(yù)編碼宏塊以及在所述請求 之后且在所述命令之前^皮編碼的多個請求后編碼的宏塊來生成視頻幀。
15. —種用于生成視頻的設(shè)備,包括 存儲器;處理器;以及程序,其中所述程序存儲在所述存儲器中并且被配置成由所述處理 器來執(zhí)行,所述程序包括用于接收請求的指令; 用于接收命令的指令;以及 用于使用在所述請求之前被預(yù)編碼的多個預(yù)編碼宏塊和在 所述請求之后且在所述命令之前被編碼的多個請求后編碼的宏塊來生 成視頻幀的指令。
16. —種方法,包4舌生成與MPEG壓縮標(biāo)準(zhǔn)兼容的多個預(yù)編碼宏塊;以及在生成多個不同的視頻幀時使用。
17. 根據(jù)權(quán)利要求16所述的方法,還包括使用所述存儲在所述庫 中的多個預(yù)編碼宏塊的子集來生成視頻幀。
18. —種設(shè)備,包括 存儲器;處理器;以及程序,其中所述程序存儲在所述存儲器中并且被配置成由所述處理 器來執(zhí)行,所述程序包括用于生成對應(yīng)于視頻幀的多個預(yù)編碼宏塊的指令,其中所 述視頻幀與MPEG壓縮標(biāo)準(zhǔn)兼容;以及令'
19. 一種設(shè)備,包括存儲器裝置; 處理器裝置;以及程序機(jī)制,其中所述程序機(jī)制被存儲在所述存儲器裝置中并且被配 置成由所述處理器裝置來執(zhí)行,所述程序機(jī)制包括用于生成對應(yīng)于視頻幀的多個預(yù)編碼宏塊的指令,其中所 述視頻幀與MPEG壓縮標(biāo)準(zhǔn)兼容;以及用于將所述多個預(yù)編碼宏塊存儲在預(yù)編碼宏塊的庫中的指令。
20. —種方法,包括 接收請求;以及使用多個預(yù)編碼宏塊來生成視頻幀,包括將所述多個預(yù)編碼宏塊分 配給柵格中的相應(yīng)的位置,其中,所述視頻幀與MPEG壓縮標(biāo)準(zhǔn)兼容,并且其中所述多個預(yù)編 碼宏塊在所述請求之前被預(yù)編碼。
21. 根據(jù)權(quán)利要求20所述的方法,其中所述柵格包括2維陣列, 當(dāng)生成視頻幀時所述柵才各中的每個位置被分配一對應(yīng)的宏塊,并且其中 所述柵格中的至少多個位置^^皮分配給對應(yīng)的預(yù)編碼宏塊。
22. 根據(jù)權(quán)利要求20所述的方法,其中所述生成包括將所述柵格 的先前狀態(tài)與所述柵格的當(dāng)前狀態(tài)進(jìn)行比較,并且根據(jù)所述比較選擇性 地在對應(yīng)于所述視頻幀的數(shù)據(jù)流中包括內(nèi)宏塊和預(yù)測宏塊。
23. 根據(jù)權(quán)利要求22所述的方法,其中所述柵格的相應(yīng)的狀態(tài)與 視頻游戲中的游戲狀態(tài)相一致。
24. 根據(jù)權(quán)利要求22所述的方法,還包括選擇性地在對應(yīng)于所述 視頻幀的數(shù)據(jù)流中包括對應(yīng)于相對先前的視頻幀基本上未改變的視頻 幀區(qū)域的一個或多個被跳過的預(yù)測宏塊。
25. 根據(jù)權(quán)利要求22所述的方法,還包括選擇性地在對應(yīng)于所述 視頻幀的數(shù)據(jù)流中包括對應(yīng)于相對先前的視頻幀基本上未改變的視頻 幀區(qū)域的一個或多個空預(yù)測宏塊。
26. 根據(jù)權(quán)利要求20所述的方法,其中相應(yīng)的預(yù)編碼宏塊包括元數(shù)據(jù),并且其中所述元數(shù)據(jù)包括量化因子。
27. 根據(jù)權(quán)利要求20所述的方法,其中所述多個預(yù)編碼宏塊的子 集包括未壓縮的像素信息。
28. 根據(jù)權(quán)利要求27所述的方法,還包括動態(tài)地生成多個宏塊, 其中所述動態(tài)生成的多個宏塊包括已存儲的多個包括未壓縮的像素信 息的預(yù)編碼宏塊的子集與對應(yīng)于對象的圖像信息的組合。
29. 根據(jù)權(quán)利要求28所述的方法,其中所述組合包括將所述已存 儲的多個包括未壓縮的像素信息的預(yù)編碼宏塊的子集的至少 一部分和 所述對應(yīng)于對象的圖像信息相混合。
30. 根據(jù)權(quán)利要求28所述的方法,其中所述組合包括將所述對應(yīng) 于對象的圖像信息疊加到與所述已存儲的多個包括未壓縮的像素信息 的預(yù)編碼宏塊的子集的至少 一 部分相對應(yīng)的— 見頻幀區(qū)域上。
31. 根據(jù)權(quán)利要求20所述的方法,其中所述請求啟動-見頻游戲。
32. —種設(shè)備,包括 存儲器;處理器;以及程序,其中所述程序存儲在所述存儲器中并且—皮配置成由所述處理 器來執(zhí)行,所述程序包括用于接收請求的指令;以及用于使用多個預(yù)編碼宏塊來生成視頻幀的指令,包括將所 述多個預(yù)編碼宏塊分配給柵格中的相應(yīng)的位置,其中,所述^f見頻幀與MPEG壓縮標(biāo)準(zhǔn)兼容,并且其中所述 多個預(yù)編碼宏塊在所述請求之前被預(yù)編碼。
33. —種方法,包括 接收請求;以及 發(fā)送第一組多個宏塊,其中所述第一組多個宏塊對應(yīng)于第一^L頻幀并構(gòu)成I幀并且與 MPEG壓縮標(biāo)準(zhǔn)兼容,以及其中至少所述第一組多個宏塊的子集在所述 請求之前一皮預(yù)編碼。
34. 根據(jù)權(quán)利要求33所述的方法,還包括發(fā)送對應(yīng)于第二視頻幀 的第二組多個宏塊,其中所述第二組多個宏塊的子集中的ac系數(shù)相對 所迷第一組多個宏塊中的對應(yīng)預(yù)編碼宏塊子集中的ac系數(shù)基本上未改變
35. 根據(jù)權(quán)利要求33所述的方法,還包括發(fā)送對應(yīng)于第二一見頻幀 的第二組多個宏塊,其中所述第二組多個宏塊的子集的量化因子相對所 述第 一組多個宏塊中的對應(yīng)預(yù)編碼宏塊子集中的量化因子基本上未改變。
36. 根據(jù)權(quán)利要求33所述的方法,還包括 接收命令,發(fā)送對應(yīng)于第二視頻幀的第二組多個宏塊,所述第二組多個宏塊包 括在所述命令之后被編碼的多個動態(tài)地編碼的宏塊和在所述請求之后 且在所述命令之前被編碼的多個請求后編碼的宏塊。
37. 根據(jù)權(quán)利要求33所述的方法,其中所述請求啟動視頻游戲。
38. 根據(jù)權(quán)利要求33所述的方法,還包括重復(fù)地發(fā)送另外的多個 宏塊,其中在所述另外的多個宏塊中的每組宏塊對應(yīng)于對視頻幀的更新 并且構(gòu)成與MPEG壓縮標(biāo)準(zhǔn)兼容的P幀,并且其中至少所述另外的多 個宏塊中的宏塊的子集在所述請求之前被預(yù)編碼。
39. 根據(jù)權(quán)利要求38所述的方法,其中在所述另外的多個宏塊中 的宏塊的子集對應(yīng)于片段,并且其中至少所述片段的子集包括與基本上 保持不變的視頻幀區(qū)域相對應(yīng)的 一 個或多個被跳過的預(yù)測宏塊。
40. 根據(jù)權(quán)利要求38所述的方法,其中在所述另外的多個宏塊中 的宏塊的子集對應(yīng)于片段,并且其中至少所述片段的子集包括與基本上 保持不變的視頻幀區(qū)域相對應(yīng)的一個或多個空預(yù)測宏塊。
41. 根據(jù)權(quán)利要求38所述的方法,還包括在一段時間間隔之后發(fā) 送在所述另外的多個宏塊中的一組相應(yīng)的宏塊中的一個或多個幀內(nèi)片 段,其中相應(yīng)的幀內(nèi)片段包括多個內(nèi)宏塊。
42. 根據(jù)權(quán)利要求41所述的方法,其中即使所述視頻幀基本上保 持不變,對所述一個或多個幀內(nèi)片段的發(fā)送仍然發(fā)生。
43. —種設(shè)備,包括 存儲器裝置; 處理器裝置;以及程序機(jī)制,其中所述程序機(jī)制被存儲在所述存儲器裝置中并且被配 置成由所述處理器裝置來執(zhí)行,所述程序機(jī)制包括 用于接收請求的指令;以及 用于發(fā)送第一組多個宏塊的指令,其中,所述第一組多個宏塊對應(yīng)于^L頻幀并構(gòu)成I幀并且 與MPEG壓縮標(biāo)準(zhǔn)兼容,以及其中至少所述第 一組多個宏塊的子集在所 述請求之前被預(yù)編碼。
44. 一種方法,包括 發(fā)送請求;以及 接收第一組多個宏塊,其中,所述第一組多個宏塊對應(yīng)于一見頻幀并構(gòu)成I幀并且與MPEG 壓縮標(biāo)準(zhǔn)兼容,以及其中至少所述第 一組多個宏塊的子集在所述請求之 前被預(yù)編碼。
45. —種設(shè)備,包括 存儲器裝置; 處理器裝置;以及程序機(jī)制,其中所述程序機(jī)制被存儲在所述存儲器裝置中并且被配 置成由所述處理器裝置來執(zhí)行,所述程序機(jī)制包括 用于發(fā)送請求的指令;以及 用于接收第一組多個宏塊的指令,其中,所述第一組多個宏塊對應(yīng)于^L頻幀并構(gòu)成I幀并且 與MPEG壓縮標(biāo)準(zhǔn)兼容,以及其中至少所述第一組多個宏塊的子集在所 述請求之前^皮預(yù)編碼。
全文摘要
公開了一種使用預(yù)編碼宏塊的視頻游戲系統(tǒng)和一種生成視頻幀的方法。在該方法中,接收請求。使用多個預(yù)編碼宏塊來生成視頻幀。該視頻幀與MPEG壓縮標(biāo)準(zhǔn)兼容。這多個預(yù)編碼宏塊在該請求之前被預(yù)編碼。在某些實(shí)施例中,該請求啟動視頻游戲。
文檔編號H04N7/26GK101637023SQ200680032049
公開日2010年1月27日 申請日期2006年6月19日 優(yōu)先權(quán)日2005年7月8日
發(fā)明者C·W·默瑟, R·克雷格, U·西格蒙德 申請人:坦格網(wǎng)絡(luò)公司