(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-03-25
(45)【発行日】2025-04-02
(54)【発明の名称】共有リファレンスフレームを使用した低遅延マルチパスフレームレベルレート制御
(51)【国際特許分類】
A63F 13/358 20140101AFI20250326BHJP
A63F 13/352 20140101ALI20250326BHJP
A63F 13/50 20140101ALI20250326BHJP
H04N 21/2662 20110101ALI20250326BHJP
H04N 19/14 20140101ALI20250326BHJP
H04N 19/172 20140101ALI20250326BHJP
【FI】
A63F13/358
A63F13/352
A63F13/50
H04N21/2662
H04N19/14
H04N19/172
(21)【出願番号】P 2023574819
(86)(22)【出願日】2022-08-12
(86)【国際出願番号】 US2022040218
(87)【国際公開番号】W WO2023022943
(87)【国際公開日】2023-02-23
【審査請求日】2024-01-10
(32)【優先日】2021-08-16
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ホン,ダニー
(72)【発明者】
【氏名】タハシルダー,ラマチャンドラ
(72)【発明者】
【氏名】スハーノフ,アレックス
【審査官】白形 優依
(56)【参考文献】
【文献】特表2021-509838(JP,A)
【文献】特開2020-078080(JP,A)
【文献】特表2021-516071(JP,A)
【文献】特表2020-520204(JP,A)
【文献】中国特許出願公開第112473133(CN,A)
【文献】特開2007-074451(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
A63F 13/00-13/98
A63F 9/24
H04N 19/00-19/98
H04N 21/00-21/858
(57)【特許請求の範囲】
【請求項1】
1つまたは複数のプロセッサによって実行されるクラウドベースの
ビデオフレームの符号化の方法であって、
マルチパス符号化プロセスの第1のパス符号化の第1のパス解像度と、前記マルチパス符号化プロセスの第2のパス符号化の第2のパス解像度とを比較することと、
前記比較に基づいて、前記第2のパス符号化において使用される第2のパスリファレンスフレームから、共有リファレンスフレームを生成することと、
ビデオフレームのストリームの第1の
ビデオフレームの推定複雑度を決定するために、前記共有リファレンスフレームを使用して、前記第1のパス解像度で、前記第1の
ビデオフレームに対して前記第1のパス符号化を実行することと、
前記第2のパスリファレンスフレームを使用し、および前記推定複雑度にしたがって、前記第2のパス解像度で、前記第1の
ビデオフレームに対して前記第2のパス符号化を実行し、符号化フレームを生成することとを備える、方法。
【請求項2】
前記第2のパス符号化に関連付けられたメモリバッファから、前記第2のパスリファレンスフレームを取得することをさらに備える、請求項1に記載の方法。
【請求項3】
前記共有リファレンスフレームを生成することは、
前記第1のパス解像度が、前記第2のパス解像度よりも低いことに応じて、
前記第2のパスリファレンスフレームを、前記第1のパス解像度にダウンサンプリングし、前記ダウンサンプリングされた第2のパスリファレンスフレームを前記第1のパス符号化に関連付けられたメモリバッファに格納して、前記共有リファレンスフレームを生成することとを備える、請求項2に記載の方法。
【請求項4】
前記第1のパス解像度が、前記第2のパス解像度に等しいことに応じて、
前記第2のパスリファレンスフレームを、前記第1のパス符号化に関連付けられたメモリバッファに格納して、前記共有リファレンスフレームを生成することをさらに備える、請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記第1のパス符号化に関連付けられたメモリバッファに格納されたポインタにしたがって、前記第2のパスリファレンスフレームを取得することをさらに備える、請求項1から3のいずれか一項に記載の方法。
【請求項6】
前記第1のパス符号化に関連付けられた前記メモリバッファは、前記第2のパス符号化に関連付けられた第2のメモリバッファに格納された、それぞれの第2のパスリファレンスフレームに各々関連付けられた複数のポインタを含む、請求項5に記載の方法。
【請求項7】
コンピュータが実行する方法であって、
マルチパス符号化プロセスの第2のパス符号化における使用のための第2のパスリファレンスフレームに基づいて、前記マルチパス符号化プロセスの第1のパス符号化における使用のための共有リファレンスフレームを生成することであって、前記共有リファレンスフレームを生成することは、
前記第1のパス符号化の第1のパス解像度を、前記第2のパス符号化の第2のパス解像度と比較することと、
前記第1のパス解像度と前記第2のパス解像度との前記比較に基づいて、前記第2のパスリファレンスフレームをダウンサンプリングすることとを備え、前記共有リファレンスフレームを生成することは、さらに、
ビデオフレームのストリームの第1の
ビデオフレームの推定複雑度を決定するために、前記共有リファレンスフレームを使用して、前記第1のパス解像度で、前記第1の
ビデオフレームに対して前記第1のパス符号化を実行することと、
前記第1の
ビデオフレームの前記第1のパス符号化に基づいて、前記第1の
ビデオフレームの前記推定複雑度を決定することと、
前記第2のパスリファレンスフレームと前記推定複雑度とを使用して、前記第2のパス解像度で、前記第1の
ビデオフレームに対して前記第2のパス符号化を実行して、符号化フレームを生成することとを備える、方法。
【請求項8】
前記共有リファレンスフレームを生成することは、
前記第1のパス符号化に関連付けられた第2のメモリバッファにおけるポインタにしたがって、前記第2のパス符号化に関連付けられたメモリバッファにアクセスすることをさらに備える、請求項7に記載の方法。
【請求項9】
前記第2のメモリバッファは、前記第2のパス符号化に関連付けられた前記メモリバッファに格納された、それぞれの前記第2のパスリファレンスフレームに各々関連付けられた複数のポインタを含む、請求項8に記載の方法。
【請求項10】
前記共有リファレンスフレームを生成することは、
前記第1のパス解像度が、前記第2のパス解像度よりも低いことに応じて、
前記第2のパスリファレンスフレームを、前記第1のパス解像度にダウンサンプリングし、前記ダウンサンプリングされた第2のパスリファレンスフレームを前記第2のメモリバッファに格納して、前記共有リファレンスフレームを生成することをさらに備える、請求項8または9に記載の方法。
【請求項11】
前記共有リファレンスフレームを生成することは、
前記第1のパス解像度が、前記第2のパス解像度に等しいことに応じて、
前記第1のパス符号化に関連付けられた前記第2のメモリバッファに、前記第2のパスリファレンスフレームを格納して、前記共有リファレンスフレームを生成することをさらに含む、請求項8または9に記載の方法。
【請求項12】
前記第1のパス符号化は、
前記第1の
ビデオフレームを前記第1のパス解像度にダウンサンプリングすることをさらに備える、請求項1から3のいずれか一項に記載の方法。
【請求項13】
前記第1の
ビデオフレームのための量子化パラメータを決定することをさらに備える、請求項1から3のいずれか一項に記載の方法。
【請求項14】
前記第2のパス符号化は、前記量子化パラメータに基づいてさらに実行される、請求項13に記載の方法。
【請求項15】
前記第1のパス符号化を実行することは、あるビットサイズを有する第1のパス符号化フレームを生成し、前記推定複雑度は、前記ビットサイズに基づく、請求項1から3のいずれか一項に記載の方法。
【請求項16】
前記第1の
ビデオフレームは、クライアントシステムに関連付けられたゲームセッションの仮想環境の少なくとも一部を表す、請求項1から3のいずれか一項に記載の方法。
【請求項17】
前記マルチパス符号化プロセスにしたがって、
ビデオフレームの前記ストリームを符号化し、
ビデオフレームの符号化されたストリームを生成することと、
ビデオフレームの前記符号化されたストリームを前記クライアントシステムに送信することとをさらに備える、請求項16に記載の方法。
【請求項18】
ビデオフレームの前記ストリームを復号して、
ビデオフレームの復号されたストリームを生成することと、
ビデオフレームの前記復号されたストリームを表示することとをさらに備える、請求項17に記載の方法。
【請求項19】
前記クライアントシステムに関連付けられたクライアントゲームセッションにしたがって、
ビデオフレームの前記ストリームをレンダリングすることをさらに備える、請求項18に記載の方法。
【請求項20】
前記第1のパス符号化および前記第2のパス符号化が実行される前記第1の
ビデオフレームがレンダリングされる、請求項1から3のいずれか一項に記載の方法。
【請求項21】
前記第2のパス符号化の前記符号化フレームが、所定の目標ビットサイズに適合するよう圧縮されるように、レート制御スキームにしたがって、前記第1の
ビデオフレームを符号化することをさらに備える、請求項1から3のいずれか一項に記載の方法。
【請求項22】
1つまたは複数のクライアントシステムに通信可能に結合され、各々が、
1つまたは複数のプロセッサと、
前記1つまたは複数のプロセッサに結合され、前記1つまたは複数のプロセッサを操作して、請求項1から3のいずれかに記載の方法を実行するように構成された実行可能命令を格納するメモリとを含む、1つまたは複数のクラウドベースのサーバを備える、クラウドベースの
システム。
【請求項23】
クラウドベースの
システムであって、
ネットワークに結合可能なネットワークインターフェースと、
前記ネットワークインターフェースに結合されたエンコーダとを備え、前記クラウドベースのゲームシステムは、請求項1から3のいずれかに記載の方法を実行するように構成される、クラウドベースの
システム。
【発明の詳細な説明】
【背景技術】
【0001】
背景
クラウドベースのゲームプラットフォームは、ビデオゲームアプリケーションの一部または全体をリモートサーバ上で実行して、ローカルクライアントデバイスでのビデオゲームアプリケーションのプレイを容易にすることに関する。リモートサーバは、ビデオゲームアプリケーションの実行からレンダリングされたオーディオおよびビデオを、ネットワークを介して、オーディオストリームおよびビデオストリームとして、ローカルクライアントデバイスに提供する。これらのオーディオストリームおよびビデオストリームを提供する際、リモートサーバは、様々なエンコーダ動作を使用して、ゲームフレームおよびオーディオを、ストリーミングされる前にリアルタイムで圧縮する。低レイテンシのクラウドゲームアプリケーションの場合、エンコーダ動作が、利用可能なネットワークが許可しているよりも多くの帯域幅をストリームに必要とさせるビット数で、ゲームフレームを圧縮しないことを保証することが望ましい。
【0002】
ある程度の遅延が許容される一般的なビデオストリーミングアプリケーションとは異なり、クラウドベースのゲームでは、リアルタイムの対話性が維持されることが必要である。これに対処するために、一部のクラウドベースのゲームプラットフォームでは、現在利用可能なネットワーク帯域幅に一致する目標フレームサイズに非常に近いサイズで、すべてのフレームを符号化する必要がある。目標フレームサイズ以外のサイズでゲームフレームを符号化すると、アンダーシュート(ビット数が許容値より少なくなる)またはオーバーシュート(ビット数が許容値より多くなる)が発生する可能性があり、オーバーシュートによりパケット損失や遅延が発生し、ゲーム体感が低下する可能性がある。
【発明の概要】
【0003】
実施形態の概要
本明細書で説明される技法およびシステムは、共有リファレンスフレームを使用するマルチパス符号化動作を対象とする。例示的な実施形態によれば、コンピュータが実行する方法は、マルチパス(たとえば、2パス)符号化プロセスの第1のパス符号化の第1のパス解像度と、マルチパス符号化プロセスの第2のパス符号化の第2のパス解像度とを比較することを含むことができる。それに加えて、方法は、共有リファレンスフレームを生成するために、比較に基づいて、第2のパス符号化に関連付けられた第2のパスリファレンスフレームを取得することを含むことができる。これは、たとえば、符号化される第1のゲームフレームの第2のパス符号化に使用される第2のパスリファレンスフレームを取得することと、解像度の比較に基づいて、第2のパスリファレンスフレームを、第1のゲームフレームの第1のパス符号化における使用のための第1のパスリファレンスフレームとして使用すること、または、第1のゲームフレームの第1のパス符号化における使用のための第1のパスリファレンスを生成するために、第2のパスリファレンスフレームを適合させることを含む方法を称する。いずれにせよ、第2のパスリファレンスフレームは、第1のパス符号化を実行するときに、第1のパスリファレンスフレームのための基礎として使用されるため、第2のパスリファレンスフレームは、第2のパス符号化におけるのみならず、第1のパス符号化のためにも使用される共有リファレンスフレームを形成する。この方法は、ゲームフレームのストリームの第1のゲームフレームの推定複雑度を決定するために、共有リファレンスフレームを使用して、第1のパス解像度で、第1のゲームフレームに対して第1のパス符号化を実行することを含むことができる。この方法は、それに加えて、第2のパスリファレンスフレームを使用して、および推定複雑度にしたがって、第2のパス解像度で、第1のゲームフレームに対して第2のパス符号化を実行し、符号化フレームを生成することをさらに含むことができる。したがって、提案される方法は、それに加えて、第2のパスリファレンスフレームと推定複雑度とを使用して、第2のパス解像度で、第1のゲームフレームに対して、第2のパス符号化を実行して符号化フレームを生成することを含むことができる。本明細書で使用されるカレントフレームの「複雑度」は、カレントフレームに関連付けられた1つまたは複数のリファレンスフレーム(たとえば、カレントフレームを符号化するために使用されるリファレンスフレーム)とは異なる、カレントフレームにおける情報の量または値を称する。たとえば、カレントフレームの複雑度は、いくつか例を挙げると、カレントフレームと1つまたは複数のリファレンスフレームとの間の信号対雑音比における差、カレントフレームと1つまたは複数のリファレンスフレームとの間のエネルギにおける差、カレントフレームと1つまたは複数のリファレンスフレームとの間のエントロピにおける差、または、それらの任意の組合せを含む。このように、カレントフレームの複雑度が増すほど、符号化に必要な情報が増える。
【0004】
この方法では、第2のパスリファレンスフレームを取得することは、第2のパス符号化に関連付けられたメモリバッファから、第2のパスリファレンスフレームを取得することを含むことができる。それに加えて、第2のパスリファレンスフレームを取得することは、第1のパス解像度が、第2のパス解像度よりも低いことに応じて、第2のパスリファレンスフレームを、第1のパス解像度にダウンサンプリングして、ダウンサンプリングされたリファレンスフレームを生成することと、ダウンサンプリングされたリファレンスフレームを、第1のパス符号化に関連付けられた第2のメモリバッファに格納して、共有リファレンスフレームを生成することとを含むことができる。第2のパスリファレンスフレームを取得することはまた、第1のパス解像度が、第2のパス解像度に等しいことに応じて、第1のパス符号化に関連付けられた第2のメモリバッファに、第2のパスリファレンスフレームを格納して、共有リファレンスフレームを生成することを含み得る。
【0005】
この方法では、第2のパスリファレンスフレームは、第1のパス符号化に関連付けられたメモリバッファに格納されたポインタにしたがって取得することができる。さらに、メモリバッファは、第2のパス符号化に関連付けられた第2のパスメモリバッファに格納された、それぞれの第2のパスリファレンスフレームに各々関連付けられた複数のポインタを含むことができる。
【0006】
別の例示的な実施形態では、コンピュータが実行する方法は、マルチパス符号化プロセスの第2のパス符号化における使用のための第2のパスリファレンスフレームに基づいて、マルチパス符号化プロセスの第1のパス符号化における使用のための共有リファレンスフレームを生成することを含むことができる。共有リファレンスフレームを生成することは、第1のパス符号化の第1のパス解像度を、第2のパス符号化の第2のパス解像度と比較することと、第1のパス解像度と第2のパス解像度との比較に基づいて、第2のパスリファレンスフレームをダウンサンプリングすることとを含むことができる。この方法はまた、共有リファレンスフレームを使用して、ゲームフレームのストリームの第1のゲームフレームに対して、第1のパス解像度で、第1のパス符号化を実行することと、第1のゲームフレームの第1のパス符号化に基づいて、第1のゲームフレームの推定複雑度を決定することとを含むこともできる。それに加えて、方法は、第2のパスリファレンスフレームを使用して、また、推定複雑度に基づいて、第2のパス解像度で、第1のゲームフレームに対して第2のパス符号化を実行して、符号化フレームを生成することを含むことができる。
【0007】
この方法において、共有リファレンスフレームを生成することは、第1のパス符号化に関連付けられた第2のメモリバッファにおけるポインタにしたがって、第2のパス符号化に関連付けられたメモリバッファにアクセスすることも含むことができる。第2のメモリバッファは、第2のパス符号化に関連付けられたメモリバッファに格納された、それぞれの第2のパスリファレンスフレームに各々関連付けられた複数のポインタを含むことができる。共有リファレンスフレームを生成することは、第1のパス解像度が、第2のパス解像度よりも低いことに応じて、第2のパスリファレンスフレームを第1のパス解像度にダウンサンプリングして、ダウンサンプリングされたリファレンスフレームを生成することと、ダウンサンプリングされたリファレンスフレームを、第2のメモリバッファに格納して、共有リファレンスフレームを生成することとをさらに含むことができる。共有リファレンスフレームを生成することは、第1のパス解像度が、第2のパス解像度に等しいことに応じて、第1のパス符号化に関連付けられた第2のメモリバッファに、第2のパスリファレンスフレームを格納して、共有リファレンスフレームを生成することも含むことができる。
【0008】
一般に、第1のパス符号化は、第1のゲームフレームを、第1のパス解像度にダウンサンプリングすることも含むことができる。第1のゲームフレームの第1のパス符号化に基づいて、第1のゲームフレームの推定複雑度を決定することは、第1のゲームフレームの量子化パラメータを決定することも含むことができる。さらに、量子化パラメータに基づいて、第2のパス符号化を実行することができる。第1のパス符号化を実行することで、あるビットサイズを有する第1のパス符号化フレームを生成し得、推定複雑度を決定することは、ビットサイズにさらに基づくことができる。
【0009】
さらに、一般に、第1のゲームフレームは、クライアントシステムに関連付けられたゲームセッションの仮想環境の少なくとも一部を表し得る。本明細書の任意の方法はまた、マルチパス符号化プロセスにしたがってゲームフレームのストリームを符号化して、ゲームフレームの符号化ストリームを生成することと、ゲームフレームの符号化ストリームをクライアントシステムに送信することとを含み得る。本明細書の任意の方法はまた、ゲームフレームのストリームを復号して、ゲームフレームの復号されたストリームを生成することと、ゲームフレームの復号されたストリームを表示することとを含むことができる。さらに、本明細書の任意の方法は、クライアントシステムに関連付けられたクライアントゲームセッションにしたがって、ゲームフレームのストリームをレンダリングすることを含み得る。
【0010】
例示的な実施形態によれば、クラウドベースのゲームシステムは、1つまたは複数のクライアントシステムに通信可能に結合された1つまたは複数のクラウドベースのゲームサーバを含むことができる。各クラウドベースのゲームサーバは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに結合され、1つまたは複数のプロセッサを操作して、本明細書に開示される方法のうちの1つまたは複数を実行するように構成された実行可能命令を格納するメモリと、を含むことができる。
【0011】
それに加えて、例示的な実施形態として、クラウドベースのゲームシステムは、ネットワークに結合可能なネットワークインターフェースと、ネットワークインターフェースに結合された(たとえば、ゲームシステムのゲームサーバの)エンコーダとを含むことができ、システムは、本明細書に開示される任意の方法を実行するように構成される。さらに、追加の例示的な実施形態を提供すると、クラウドベースのゲームシステムは、本明細書に開示される任意の方法にしたがって符号化された(たとえば、ゲームシステムのクライアントシステムのための)符号化フレームを受け取るように構成されたインターフェースと、符号化フレームを復号するように構成された1つまたは複数のデコーダとを含むことができる。
【0012】
本開示は、添付の図面を参照することによって、当業者によりよく理解され、その多くの特徴および利点が明らかになるであろう。異なる図面における同じ参照符号の使用は、類似または同一のアイテムを示す。
【図面の簡単な説明】
【0013】
【
図1】いくつかの実施形態による、1つまたは複数の共有リファレンスフレームを使用するマルチパス符号化技法を適用する、クラウドベースのゲームシステムのブロック図である。
【
図2】いくつかの実施形態による、クラウドベースのゲームシステム内で、フレームを符号化してストリーミングするように構成されたコンピューティングデバイスのブロック図である。
【
図3】いくつかの実施形態による、ゲームフレームのストリームのゲームフレームのマルチパス符号化のための方法を示すフロー図である。
【
図4】いくつかの実施形態による、1つまたは複数の共有リファレンスフレームを使用するマルチパス符号化プロセスの例を示す図である。
【発明を実施するための形態】
【0014】
詳細な説明
本明細書で説明される技法およびシステムは、ビデオ品質を維持しながら、1つまたは複数のクラウドベースのゲームサーバからクライアントデバイスへ、低レイテンシのビデオストリームを提供するという要求に対処する。この目的のために、クラウドベースのゲームサーバは、まず、ゲームアプリケーションのためにゲームフレームのセットをレンダリングし、レンダリングされたゲームフレームを符号化して、ゲームストリームを生成する。ゲームストリームを目標ビットレートに確実に近づけることにより役立てるために、クラウドベースのゲームサーバは、レンダリングされた各ゲームフレームを符号化するときに、マルチパス(たとえば、2パス)符号化動作を実行する。そのようなマルチパス符号化動作は、たとえば、ゲームフレームの複雑度を推定するために、ゲームフレームに対して第1のパス符号化を実行することと、ゲームフレームの推定複雑度に基づいて、ゲームフレームの第2のパス符号化を実行することとを含む。この目的のために、クラウドベースのゲームサーバは、まず、第1のパスリファレンスフレームを使用してゲームフレームを符号化することによって、ゲームフレームの第1のパス符号化を実行する。第1のパス符号化の結果(たとえば、第1のパス符号化フレーム)に基づいて、クラウドベースのゲームサーバは、ゲームフレームの複雑度を推定し、推定された複雑度に基づいて、ゲームフレームの量子化パラメータを決定する。その後、クラウドベースのゲームサーバは、第2のパスリファレンスフレームおよび量子化パラメータを使用して(たとえば、量子化ステップサイズを決定するために、第2のパス符号化において、量子化パラメータを使用して)、ゲームフレームの第2のパス符号化を実行し、(たとえば、第2のパス)符号化されたゲームフレームを生成する。符号化中に、符号化されたゲームフレームに、許容された以上のビットが割り当てられること(すなわち、オーバーシュート)を制限するために、クラウドベースのゲームサーバは、第1のパス符号化のために、1つまたは複数の共有リファレンスフレームを使用する。すなわち、クラウドベースのゲームサーバは、第2のパスリファレンスフレーム(たとえば、第2のパス符号化において使用されるリファレンスフレーム)に基づく、第1のパス符号化のための共有リファレンスフレームを使用する。このようにして、第1のパス符号化から決定される推定複雑度は、ゲームフレームの実際の複雑度をより正確に表す。そのため、システムは、各ゲームフレームを符号化するために、ビット数をより正確に割り当てることができるため、結果として得られるストリームが、ネットワークの帯域幅よりも大きくなるリスクを軽減し、ネットワーク上のパケット損失を最小限に抑える。
【0015】
理解を容易にするために、本開示の技法が、クラウドゲームシステムの例示的なコンテキストで説明される。クラウドベースまたは他のリモートサーバは、そのサーバまたは関連するサーバで実行されているビデオゲームインスタンスのビジュアルコンテンツを表すビデオゲームフレームのストリームをレンダリングし、その後、本明細書で説明されるマルチパス符号化プロセスを使用して各ゲームフレームを符号化し、1つまたは複数のネットワークを介した1つまたは複数のクライアントデバイスへの送信のために、符号化されてレンダリングされたゲームフレームのストリームを表すビットストリームを生成する。しかしながら、本明細書で説明されるシステムおよび技法は、この例示的なコンテキストに限定されず、代わりに、本明細書で提供されるガイドラインを使用して、様々なビデオストリーム符号化/復号システムのいずれかで実施され得ることが認識されるであろう。
【0016】
図1は、いくつかの実施形態による、シングルプレーヤまたはマルチプレーヤ(大規模マルチプレーヤを含む)ゲームのためのクラウドベースのゲームシステム100を示す。クラウドベースのゲームシステム100は、1つまたは複数のサーバ102を含み、各サーバ102は、少なくとも1つのネットワーク110によって1つまたは複数のクライアントシステム112に通信可能に結合される。ネットワーク110は、サーバ102のいずれかと、クライアントシステム112との間のデータの送受信を可能にするように構成され、たとえば、イーサネット、インターネット、Wi-Fi、またはそれらの任意の組合せなどの有線ネットワークおよびワイヤレスネットワークを含む。実施形態では、各サーバ102は、高帯域幅、低レイテンシの、サーバ間メッセージングバスを介して、通信可能に相互接続される。サーバ102は、通常、物理的近接性による送信レイテンシを短縮するために、地理的領域にわたって、1つまたは複数のデータセンタに分散される。例示される実施形態では、4つのクライアントシステム112-1,112-2,112-3および112-4をサポートする3つのサーバ102-1,102-2および102-3が示されているが、他の実施形態では、任意の数のサーバが、任意の数のクライアントデバイスをサポートして実施され得る。典型的な現実世界の実施では、サーバ102の数およびクライアントシステム112の数は、通常、
図1の例に示されているよりもかなり多くなることが認識されるであろう。
【0017】
表される実施形態では、各サーバ102は、たとえば、1つまたは複数のクライアントシステム112において実行される1つまたは複数のクライアントゲームセッションをサポートするように構成されたクラウドサーバ、仮想サーバ、またはそれらの任意の組合せなどのコンピューティングデバイスを含む。本明細書で使用される「クライアントゲームセッション」は、クライアントシステム112においてプレイされている、部分的にシミュレートされている、または完全にシミュレートされている、ゲームアプリケーションを含む。各サーバ102は、クライアントシステム112においてプレイされている、部分的にシミュレートされている、または完全にシミュレートされている、ゲームアプリケーションの少なくとも一部の実行を容易にする、対応するゲームプラットフォームインスタンス104を実行することによって、このクライアントゲームセッションをサポートするように構成されている。そのような容易化は、たとえば、いくつか例を挙げると、ゲームアプリケーションに関連する1つまたは複数のフレームをレンダリングすること、ゲームアプリケーションに関連する計算(たとえば、照明計算、人工知能計算、物理学計算、シェーディング計算、入力計算など)を実行すること、ファイルへのアクセスを提供すること、またはそれらの任意の組合せを含む、ゲームアプリケーションに関連する1つまたは複数の動作を実行することを含むことができる。ゲームプラットフォームインスタンス104は、通信/ネットワーク管理、リソース管理、メディアレンダリング符号化など、そのような容易化を達成するための様々なソフトウェアおよびハードウェアリソースを提供する。このようにして、ゲームプラットフォームインスタンス104は、あたかもそのゲームアプリケーションが、パーソナルコンピュータ(「PC」)、ゲームコンソール、スマートフォン、タブレットコンピュータ、車載エンタティメントシステムなどの、ローカルゲームデバイスでプレイされているかのように、対応するプレーヤのためのゲームアプリケーションの1つまたは複数の動作の実行をシミュレートする。
【0018】
各クライアントシステム112は、少なくとも1人のプレーヤのための1つまたは複数の入力/出力デバイスの操作を通じてプレーヤ入力を受け取るために、また、少なくとも1人のプレーヤのゲームプレイのそれぞれの、視覚的および聴覚的コンテンツを表す、ビデオおよびオーディオコンテンツを提示するために利用されるハードウェアリソースおよびソフトウェアリソースを表す。クライアントシステム112の例は、いくつか例を挙げると、1つまたは複数のデスクトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ、仮想現実システム、拡張現実システム、計算可能セルラ電話(すなわち、「スマートフォン」)、計算可能テレビ(すなわち、「スマートTV」)、またはそれらの組合せを含む。クライアントシステム112-1を参照して例示されるように、各クライアントシステム112は、1つまたは複数のクライアントデバイス116を含む。例示される実施形態では、クライアントシステム112-1は、第1のクライアントデバイス116-1を備え、第1のクライアントデバイス116-1は、ディスプレイ118、少なくとも1つの入力デバイス120(たとえば、ゲームパッド、ジョイスティック、キーボード、マウス、タッチスクリーン)、クライアントシステム112を、対応するサーバ102に接続する、ネットワークに結合するように構成された1つまたは複数のネットワークインターフェース、1つまたは複数のプロセッサ、メモリ、ストレージ、スピーカ、および仮想環境のシーンをレンダリング、処理、および表示するための他のコンピューティングリソースに、通信可能に結合されているか、あるいは関連付けられている。クライアントシステム112-1を参照して例示されるように、各クライアントシステム112は、仮想環境に関連する1つまたは複数のフレームを復号するように構成されたデコーダ114を含むことができる。デコーダ114は、サーバ102から受信した1つまたは複数の符号化ストリーム(たとえば、ゲームストリーム108)を復号して、ゲームフレームの復号されたセットまたは復号されたストリームを生成するように構成されたハードウェアおよびソフトウェアを含むことができる。各デコーダ114は、本明細書に開示される任意の方法またはプロセスによって符号化された任意の符号化フレームを復号するように構成されている。実施形態では、クライアントシステム112-1は、スマートフォンクライアントデバイス116-2と、ウェアラブル仮想現実クライアントデバイス116-3とをさらに備え、これら各々は、入力機能と、出力機能と、表示機能と、クライアントシステム112-1に関して上述したものと同様の通信機能とを有する統合型モバイルコンピューティングデバイスとして動作し得る。特定の実施形態では、クライアントシステム112-1,112-2および112-3は、加速度計、全地球測位システム(GPS)デバイスなどの、クライアントデバイスの動きを表す動きデータのみならず、そのような動きの速度または加速度を取得するために使用される1つまたは複数の機能を含み得る。
【0019】
本明細書で説明される特定の態様は、特にクラウドゲームシナリオを参照して論じられるが、特定の実施形態では、説明される技法は、たとえば、サーバ102およびクライアントシステム112のうちの1つまたは複数が、他のタイプの情報、教育、レクリエーション、および/または芸術コンテンツをレンダリング、処理、および表示するように動作する場合のような、ゲーム以外の様々なシナリオで利用され得ることが認識されるであろう。したがって、本明細書では、クラウドゲームおよびゲームコンテンツに関連する特定の例を利用し得るコンテンツのレンダリングに関する技法が議論されるが、そのような議論および技術は、そのような非ゲームシナリオに適用され得ることがさらに認識されるであろう。本明細書で提供される例は、ゲームコンテンツに関連する特定の帯域幅およびネットワークレイテンシの問題に起因するゲームコンテンツのレンダリング、処理、および表示を伴うシナリオを称する場合があり、説明される技法は、それらのシナリオに限定されることを示すものとして解釈されるべきではない。
【0020】
動作中、各サーバ102は、1つまたは複数のクライアントゲームセッションのために、ゲームプラットフォームインスタンス104を実行する。ゲームプラットフォームインスタンス104を実行することは、1つまたは複数のそれぞれのクライアントシステム112において実行されているゲームアプリケーションに関連付けられた、1つまたは複数のゲームフレームを含むゲームフレームのセットをレンダリングすることを含む。レンダリングされた各ゲームフレームは、クライアントシステム112において実行されるゲームアプリケーションで使用される仮想環境の少なくとも一部を表す。たとえば、レンダリングされた各ゲームフレームは、クライアントゲームセッション中に、クライアントシステム112のディスプレイ118に表示される仮想環境の少なくとも一部を表すことができる。
【0021】
各サーバ102は、エンコーダ106を介してレンダリングされた各ゲームフレームを符号化し、それぞれゲームフレームの符号化されたセット(本明細書では「ゲームストリーム」108とも称される)を生成するように構成されている。各サーバ102は、たとえば、ゲームプラットフォームインスタンス104によってレンダリングされる各フレームの圧縮、再構成、および操作によって、ゲームストリーム108を符号化するように構成されている。実施形態では、サーバ102の各エンコーダ106は、1つまたは複数のコーデックにしたがって、1つまたは複数のレンダリングされたフレームを符号化するために、1つまたは複数のコーデックを実装する。そのようなコーデックは、いくつか例を挙げると、H.264、H.265、VP9、AV1、またはそれらの任意の組合せを含むことができる。実施形態によれば、各サーバ102は、第2のパス符号化において使用される1つまたは複数のそれぞれのリファレンスフレームに基づく第1のパス符号化のための1つまたは複数の共有リファレンスフレームを使用して、ゲームプラットフォームインスタンス104によってレンダリングされる各フレームを符号化するように構成される。
図3を参照して以下に詳細に論じられるように、このマルチパス符号化動作は、第2のパス符号化に関連付けられた1つまたは複数のリファレンスフレームを取得して、1つまたは複数のそれぞれの共有リファレンスフレームを生成すること、共有リファレンスフレームのうちの1つまたは複数を使用して、ゲームフレームに対して第1のパス符号化を実行して、複雑度を推定することと、推定された複雑度にしたがって、ゲームフレームに対して第2の、後続の符号化パスを実行することとを含む。結果として得られる各ゲームストリーム108は、1つまたは複数のクライアントシステム112において実行されているゲームアプリケーションに対応し、ネットワーク110を介して、これら対応するクライアントシステムに提供される。対応するクライアントシステム112は各々、受け取られたゲームストリーム108を、デコーダ114によって復号し、結果として得られるゲームフレームの復号されたセット122を、たとえばディスプレイ118に表示するように構成される。各クライアントシステム112は、無損失コーデックおよび損失コーデックを含む1つまたは複数の様々なビデオコーデックにしたがって、符号化されたストリーム内のゲームフレームの圧縮、再編成、および操作によって、それぞれのゲームストリーム108を復号するように構成される。実施形態によれば、各クライアントシステム112は、1つまたは複数のコーデックにしたがって、受け取られたゲームストリーム108を復号するために、1つまたは複数のコーデックを実装するデコーダを含む。そのようなコーデックは、いくつか例を挙げると、H.264、H.265、VP9、AV1、またはそれら任意の組合せを含むことができる。例示される実施形態では、3つのゲームストリーム108-1,108-2,108-3が表されているが、他の実施形態では、サーバ102は、各々が1つまたは複数のクライアントゲームセッションに対応する、任意の数のゲームストリーム108を生成することができる。
【0022】
次に、
図2を参照して示すように、クラウドベースのゲームシステム内でフレームを符号化してストリーミングするように構成されたコンピューティングシステム200が例示される。実施形態では、コンピューティングシステム200は、
図1において説明されたクラウドベースのゲームシステム100の態様を実施する。たとえば、コンピューティングシステム200は、
図1において説明されたサーバ102と類似または同じであり得る。コンピューティングシステム200は、ゲームストリーム108を生成するなど、ゲームフレームのセット250を符号化するためのコンポーネントを含む、双方向通信のための1つまたは複数のソフトウェアおよびハードウェアコンポーネントを含む。いくつかの実施形態では、コンピューティングシステム200は、いくつか例を挙げると、たとえば、デスクトップコンピュータ、ノートブックコンピュータ、タブレット、サーバ、ゲームコンソールを含む、セットゲームフレーム250の符号化をサポートする電子デバイスの一部である。実施形態では、コンピューティングシステム200は、プロセッサ238、モデム240、およびメモリ242を含む。メモリ242は、たとえばソリッドステートドライブ、ハードディスクドライブ、ランダムアクセスメモリ(「RAM」)、読取専用メモリ(「ROM」)、電子的に消去可能なプログラマブルROM(「EEPROM」)、光学ストレージデバイス、またはそれらの任意の組合せのような電子ストレージデバイスを含む。メモリ242は、たとえば、コーデック、リファレンスフレーム、ゲームエンジン、ゲームアプリケーション、定数などの、ゲームプラットフォームインスタンス204、エンコーダ206、ダウンサンプラ234、およびレート制御ユニット224の動作に関連する命令およびデータを含む。モデム240は、ネットワーク110を介して1つまたは複数のクライアントシステム112に通信可能に結合されるように構成され、さらにゲームストリーム108を1つまたは複数のクライアントシステム112に送信するように構成されている。実施形態によれば、プロセッサ238、モデム240、およびメモリ242は、1つまたは複数のインターフェース(たとえば、バス244)を介して内部的に電子通信する。
【0023】
実施形態によれば、プロセッサ238は、1つまたは複数の制御処理ユニット(「CPU」)、マイクロプロセッサ、フィールドプログラマブルゲートアレイ(「FPGA」)、グラフィックスプロセシングユニット(「GPU」)、特定用途向け集積回路(ASIC)、またはそれらの任意の組合せを含み、クラウドベースのゲームシステム100においてクライアントゲームセッションにおける使用のためのゲームフレームをレンダリングおよび符号化するように構成されている。プロセッサ238は、現在のクライアントゲームセッションに関連付けられ、1つまたは複数のクライアントシステム112において実行されるゲームアプリケーションをサポートするように構成された、ゲームプラットフォームインスタンス104と同じまたは類似のゲームプラットフォームインスタンス204を実行するように動作する。ゲームプラットフォームインスタンス204は、1つまたは複数のクライアントデバイスにおいて実行されるゲームアプリケーションの環境に関連付けられたゲームフレームのセット250をレンダリングするためのグラフィックスハードウェアおよびソフトウェア(明確化のために図示せず)を含む。そのようなグラフィックスハードウェアおよびソフトウェアは、たとえば、グラフィックスコア、プロセシングコア、ピクセルシェーダ、ビデオランダムアクセスメモリ(「VRAM」)、GPU、物理エンジン、照明エンジン、テッセレーションエンジンなどを含む。ゲームフレームのセット250のレンダリングされた各ゲームフレームは、クライアントデバイスにおいて実行されるゲームアプリケーションに関連付けられた仮想環境の少なくとも一部を表す。たとえば、ゲームアプリケーションがレーシングゲームである場合、ゲームフレームのセット250の各ゲームフレームは、レーストラック、車、または周囲のエリアのうちの少なくとも一部を表す。
【0024】
ゲームプラットフォームインスタンス204は、ゲームフレームのセット250のレンダリングされた各ゲームフレームを、ゲームストリーム108に符号化するためにエンコーダ206に提供する。エンコーダ206は、たとえば、フレーム間技法およびフレーム内技法にしたがって、ゲームストリーム108を符号化するように構成された1つまたは複数のソフトウェアエンコーダおよび/またはハードウェアエンコーダを含む。コンピューティングシステム200と、1つまたは複数のクライアントシステム112との間でゲームストリーム108を送信するために必要な帯域幅を低減するために、エンコーダ206は、ゲームフレームのセット250の1つまたは複数のゲームフレームを圧縮することによって、ゲームストリーム108を符号化する。ゲームフレームを圧縮することは、ゲームフレームを、メモリバッファ228に格納されている1つまたは複数のリファレンスフレームと比較することと、ゲームフレームと1つまたは複数のリファレンスフレームとの間の1つまたは複数の差分を、ゲームストリーム108に符号化することとを含む。エンコーダ206は、使用されるリファレンスフレームを、ゲームストリーム108に符号化するようにさらに構成されている。さらに、利用可能な帯域幅と一致させるために、エンコーダ206は、各符号化フレームのサイズが、所定の目標ビットサイズに近づくように圧縮されるように、レート制御スキームにしたがって各フレームを符号化するように構成されている。レート制御スキームは、1つまたは複数のプロセッサ、ハードコードされたロジック、プログラマブルロジック、またはそれらの組合せを含み、ゲームフレームのセット250のカレントフレームを符号化するビットレートおよびそれぞれのビット数(すなわち、圧縮の程度)を制御または調整するように構成された、レート制御ユニット224によって実施される。レート制御ユニット224は、カレントフレームの複雑度の関数として、カレントフレームのための適切な量子化パラメータ(「QP」)を決定することによって、ビットレートおよびそれぞれのビット数を制御または調整する。本明細書で使用されるカレントフレームの「複雑度」は、カレントフレームに関連付けられた1つまたは複数のリファレンスフレーム(たとえば、カレントフレームを符号化するために使用されるリファレンスフレーム)とは異なる、カレントフレームにおける情報の量または値を称する。たとえば、カレントフレームの複雑度は、いくつか例を挙げると、カレントフレームと1つまたは複数のリファレンスフレームとの間の信号対雑音比における差、カレントフレームと1つまたは複数のリファレンスフレームとの間のエネルギにおける差、カレントフレームと1つまたは複数のリファレンスフレームとの間のエントロピにおける差、またはこれらの組合せを含む。このように、カレントフレームの複雑度が高くなるほど、符号化に必要な、ゲームフレームエンコーダ206内の情報が多くなる。そのため、レート制御ユニット224は、結果として得られる符号化フレームが、目標ビットレートに関連する所定の目標サイズよりも大きいビット数を有することを阻止するのに役立つように、十分に高いQPを決定することが重要である。当業者であれば、このように決定されたQPは、高い複雑度を有するカレントフレームに対して、詳細部のより積極的な量子化を引き起こし、その結果、符号化ビット数が減少した符号化フレームが得られることを認識するであろう。同様に、低い複雑度を有するカレントフレームの場合、エンコーダ206は、符号化する新しい情報が少ないため、潜在的なオーバーシュートのリスクを低減しながら、あまり積極的ではない量子化のためにQPを選択することができる。
【0025】
実施形態では、レート制御ユニット224は、次式にしたがって、カレントフレームのQPを決定する。
[式1] t=(a1/QP+a2/QP2)*c
ここで、tは、符号化フレームの所定の所望のフレームサイズ、または圧縮の程度を表し、a1およびa2は、過去の符号化フレームから導出された所定の定数を表し、cは、カレントフレームの複雑度または歪みを表す。たとえば、cは、カレントフレームと1つまたは複数のリファレンスフレームとの間の信号対雑音比における差、カレントフレームと1つまたは複数のリファレンスフレームとの間のエネルギにおける差、カレントフレームと1つまたは複数のリファレンスフレームとの間のエントロピにおける差、またはこれらの任意の組合せを示す複雑度を表す。
【0026】
実施形態によれば、エンコーダ206は、マルチパス符号化動作を実行することによって、カレントフレームの複雑度を決定する。マルチパス符号化動作は、第1のパスメモリバッファ230から取得された1つまたは複数の共有リファレンスフレームを使用して、ゲームフレームのセット250のカレントフレームの第1のパス符号化を実行することを含む。実施形態では、第1のパス符号化は、第1のパス解像度(たとえば、所定の解像度)で実行される。実施形態によれば、第1のパス解像度で第1のパス符号化を実行することは、ダウンサンプラ234が、カレントフレーム、共有リファレンスフレーム、またはその両方の解像度を、第1のパス解像度に下げることを含む。実施形態では、第1のパス符号化は、エンコーダ206によって実施される1つまたは複数のコーデックから決定される、所定の第1のパスQPにしたがって実行される。実施形態によれば、カレントフレームに対して第1のパス符号化を実行すると、あるビットサイズを有する第1のパス符号化フレームが得られる。第1のパス符号化の後、レート制御ユニット224は、第1のパス符号化フレームのビットサイズの関数として、カレントフレームのための推定複雑度226を決定する。マルチパス符号化動作は、第2のパスメモリバッファ232から取得された1つまたは複数の第2のパスリファレンスフレームを使用する、カレントフレームの第2のパス符号化をさらに含む。実施形態によれば、エンコーダ206は、第2のパス解像度で第2のパス符号化を実行する。すなわち、エンコーダ206が、カレントフレームに対して第2のパス符号化を実行するとき、カレントフレームおよび第2のパスリファレンスフレームは、第2のパス解像度である。いくつかの実施形態では、レート制御ユニット224は、推定複雑度226の関数として、カレントフレームの量子化パラメータを計算する。その後、レート制御ユニット224は、量子化パラメータをエンコーダ206に渡し、エンコーダ206は、対応する量子化ステップサイズを決定する。エンコーダ206は、カレントフレームを符号化するときに、この量子化ステップサイズを使用して、出力ビットを制御または調整する。
【0027】
実施形態では、推定複雑度226をより正確に決定するために、エンコーダ206は、第1のパス符号化のために、1つまたは複数の共有リファレンスフレームを使用するように構成される。共有リファレンスフレームは、たとえば、カレントフレームの第2のパス符号化で使用されるそれぞれの第2のパスリファレンスフレームに基づくリファレンスフレームを含む。実施形態によれば、エンコーダ206は、ゲームフレームのセット250のカレントフレームに各々関連付けられた1つまたは複数のポインタを含む、第1のパスメモリバッファ230のための1つまたは複数の共有リファレンスフレームを生成する。カレントフレームの場合、関連ポインタは、第2のパスメモリバッファ232におけるそれぞれの第2のパスリファレンスフレーム(たとえば、カレントフレームの第2のパス符号化において使用される第2のパスリファレンスフレーム)の位置を含む。実施形態では、共有リファレンスフレームを生成するために、エンコーダ206は、第1のパスメモリバッファ230における関連ポインタにしたがって、第2のパスメモリバッファ232から第2のパスリファレンスフレームを取得するように構成される。第2のパスリファレンスフレームを取得することは、第1のパス符号化における使用のための共有リファレンスフレームを生成するために、第2のパスリファレンスフレームを、第1のパスメモリバッファ230に格納することを含む。言い換えれば、第2のパスリファレンスフレームを取得することは、第2のパスリファレンスフレームを、第1のパスメモリバッファ230に格納することと、第2のパス符号化と第1のパス符号化との両方で(たとえばダウンサンプリングによる、適用なし、または適用ありで)使用される共有リファレンスフレームを第2のパスリファレンスフレームが形成できるように、第1のパス符号化においても、第2のパスリファレンスフレームを使用することとを含む。
【0028】
実施形態によれば、エンコーダ206は、カレントフレームのための第1のパス符号化の第1のパス解像度を、カレントフレームのための第2のパス符号化の第2のパス解像度と比較するように構成される。第1のパス解像度が、第2のパス解像度よりも低いことに応じて、ダウンサンプラ234は、カレントフレームに関連付けられた第2のパスリファレンスフレームを、第1のパス解像度にダウンサンプリングして、ダウンサンプリングされたリファレンスフレーム236を生成するように構成される。すなわち、第1のパス解像度が第2のパス解像度よりも低いことに応じて、ダウンサンプラ234は、第1のパスメモリバッファ230に格納された関連ポインタにしたがって取得された第2のパスリファレンスフレームを、第1のパス解像度にダウンサンプリングして、ダウンサンプリングされたリファレンスフレーム236を生成するように構成される。ダウンサンプラ234は、1つまたは複数のレンダリングされたゲームフレーム250、共有リファレンスフレーム、第2のパスリファレンスフレーム、またはそれらの任意の組合せを、ダウンサンプリングおよび圧縮するように構成された、1つまたは複数のプロセッサ、ハードコードされたロジック、プログラマブルロジック、またはそれらの任意の組合せを含む。実施形態では、エンコーダ206は、ダウンサンプリングされたリファレンスフレーム236を、第1のパスメモリバッファ230に格納して、第1のパス符号化における使用のための共有リファレンスフレームを生成するように構成される。
【0029】
次に
図3を参照して示すように、共有リファレンスフレームを使用する例示的なマルチパス(たとえば、2パス)符号化動作300が示されている。説明を容易にするために、マルチパス符号化動作300は、
図1のクラウドベースのゲームシステム100におけるサーバ102として実施される、
図2のコンピューティングシステム200を参照して説明される。動作300において、ゲームプラットフォームインスタンス204は、1つまたは複数のクライアントシステム112において実行されるゲームアプリケーションに関連付けられたクライアントゲームセッションのために、ゲームフレームのセット305をレンダリングする。ゲームフレームのセット305の各フレームは、ゲームアプリケーションに関連する仮想環境の少なくとも一部を表す。ゲームアプリケーションを実行するクライアントデバイスへの、ゲームフレーム305のセットの送信を容易にするために、エンコーダ206は、1つまたは複数の共有リファレンスフレームを使用するマルチパス符号化動作を使用して、ゲームフレームのセット305の各フレームを符号化する。そうすることで、ゲームフレームの符号化されたセットを、クライアントデバイスに送信するために必要な帯域幅の量が、実際に利用可能な帯域幅と、より厳密に一致する。
【0030】
ゲームフレームのセット305の第1のゲームフレーム310のために、エンコーダ206は、共有リファレンスフレーム取得315を実行して、1つまたは複数の共有リファレンスフレームを生成する。共有リファレンスフレーム取得315は、第1のゲームフレーム310に関連付けられた1つまたは複数の第2のパスリファレンスフレーム、すなわち、第1のゲームフレーム310の第2のパス符号化330において使用される第2のパスリファレンスフレームを、第2のパスメモリバッファ232から取得することを含む。実施形態では、共有リファレンスフレーム取得315は、第1のゲームフレーム310に関連付けられた1つまたは複数のポインタを含む、第1のパスメモリバッファ230にアクセスするエンコーダ206を含む。たとえば、ポインタは、第1のゲームフレーム310の第1のパス符号化320に関連していた。第1のパスメモリバッファ230におけるポインタは、第2のパスメモリバッファ232に格納された、それぞれの第2のパスリファレンスフレームの位置を含む。すなわち、第1のパスメモリバッファ230におけるポインタは各々、第1のゲームフレーム310の第2のパス符号化330において使用される、それぞれの第2のパスリファレンスフレームの位置を含む。これらのポインタに基づいて、エンコーダ206は、最初に、単に第1のパスメモリバッファ230にアクセスすることによって、1つまたは複数の取得されたリファレンスフレームを生成するために、第2のパスメモリバッファ232から、それぞれの第2のパスリファレンスフレームを取得するように構成される。実施形態によれば、共有リファレンスフレーム取得315は、エンコーダ206が、第1のゲームフレーム310の第1のパス符号化320のために使用される第1のパス解像度と、第1のゲームフレーム310の第2のパス符号化330のために使用される第2のパス解像度とを比較することをさらに含む。実施形態では、第1のパス解像度が、第2のパス解像度よりも低いことに応じて、ダウンサンプラ234は、取得されたリファレンスフレームを、第1のパス解像度にダウンサンプリングして、1つまたは複数のダウンサンプリングされた(たとえば、第2のパス)リファレンスフレームを生成するように構成される。その後、エンコーダ206は、ダウンサンプリングされた(たとえば、第2のパス)リファレンスフレームを、第1のパスメモリバッファ230に格納して、第1のゲームフレーム310の第1のパス符号化320において、第1のパスリファレンスフレームとして使用するための共有リファレンスフレームを生成する。第1のパス解像度が、第2のパス解像度に等しいことに応じて、エンコーダ206は、取得した(たとえば、第2のパス)リファレンスフレームを、第1のパスメモリバッファ230に格納して、第1のゲームフレーム310の第1のパス符号化320における使用のための共有リファレンスフレームを生成する。このようにして、エンコーダ206は、第1のゲームフレーム310の第1のパス符号化320のために使用される第1のパス解像度と、第1のゲームフレーム310の第2のパス符号化330のために使用される第2のパス解像度との比較に基づいて、共有リファレンスフレームを生成する。すなわち、エンコーダ206は、(たとえば、比較に基づいてダウンサンプリングされたものとして、またはダウンサンプリングされていないものとして)取得された第2のパスリファレンスフレームを、第1のパスメモリバッファに格納することによって、共有リファレンスフレームを生成し、共有リファレンスフレームは、第1のゲームフレーム310の第1のパス符号化320において使用される第1のパスリファレンスフレームとして利用可能とされる。第1のパス符号化320のためにも第2のパスリファレンスフレームを使用することによって、第2のパスリファレンスフレームは、第1のパス符号化と第2のパス符号化との両方において使用される共有リファレンスフレームとなる。これにより、複雑度推定325は、第1のゲームフレーム310の複雑度を、より正確に推定することができる。
【0031】
実施形態では、第1のパス符号化320は、ダウンサンプラ234などによって、第1のゲームフレーム310の解像度を、第1のパス解像度まで下げることによって、第1のゲームフレーム310をダウンサンプリングすることを含む。第1のゲームフレームをダウンサンプリングした後、エンコーダ206は、その結果得られる共有リファレンスフレームを含む第2のパスリファレンスフレームと、所定の(第1の)量子化パラメータとを使用して、第1のゲームフレーム310を符号化し、結果として、第1のパス符号化フレームを得る。第1のパス符号化320の後、レート制御ユニット224は、第1のパス符号化フレームに基づいて、複雑度推定325を決定する。第1のパス符号化320において共有リファレンスフレームを使用することによって、第1のパス符号化フレームのビットサイズは、符号化フレーム335のビットサイズをより正確に反映し、複雑度の推定を改善することができる。実施形態では、レート制御ユニット224は、推定複雑度を、第1のパス符号化フレームのビットサイズのスケールファクタバージョンとして決定する。
【0032】
レート制御ユニット224が、複雑度推定325から、推定複雑度を決定した後、エンコーダ206は、第1のゲームフレーム310の第2のパス符号化330を実行する。第2のパス符号化330は、複雑度推定325からの推定複雑度の関数として、第1のゲームフレーム310のための量子化パラメータ(たとえば、第2の量子化パラメータ)を決定することを含む。第2のパス符号化に基づいて決定された量子化パラメータ(たとえば、第2の量子化パラメータ)から、エンコーダ206は、第1のゲームフレーム310を符号化するために使用される量子化ステップサイズを決定する。その後、エンコーダ206は、第2のパスリファレンスフレームにしたがって、また、決定された(第2の)量子化パラメータで、第1のゲームフレーム310に対して第2のパス符号化330を実行して、符号化フレーム335を生成し、符号化フレーム335は、たとえば、式1におけるtのような、目標ビットサイズに近いサイズを有する。第1のパス符号化320において、共有リファレンスフレームを使用することによって、推定複雑度の精度を向上させることは、符号化フレーム335が、目標ビットサイズよりも大きいビットサイズを有する可能性を排除するのに役立つ。
【0033】
図4を参照して示すように、共有リファレンスフレームを使用するマルチパス符号化のための方法400が例示される。説明を容易にするために、方法400は、
図1のシステム100のサーバ102として実施される、
図2のコンピューティングシステム200を参照して説明される。ブロック405において、エンコーダ206と同じまたは類似のエンコーダが、第1のゲームフレームを受け取る。第1のゲームフレームは、クライアントゲームセッションに関連付けられた仮想環境の少なくとも一部を表す。ブロック410において、エンコーダは、第1のゲームフレームゲームに関連付けられた第2のパスリファレンスフレームを、第2のパスメモリバッファ232から取得し、取得されたリファレンスフレームを生成する。たとえば、エンコーダは、第1のゲームフレームの第2のパス符号化において使用される、第2のパスリファレンスフレームを取得する。実施形態では、第2のパスリファレンスフレームを取得することは、第1のパスメモリバッファ230に格納された1つまたは複数のポインタにしたがって、第2のパスメモリバッファ232にアクセスすることを含む。第1のパスメモリバッファ230に格納されたこれら1つまたは複数のポインタは、第2のパスメモリバッファ232における第1のゲームフレームに関連付けられた第2のパスリファレンスフレームの位置を含む。
【0034】
ブロック415において、エンコーダは、マルチパス符号化の第1のパス符号化に関連付けられた第1のパス解像度が、マルチパス符号化の第2のパス符号化に関連付けられた第2のパス解像度よりも低いか否かを判定する。第1のパス解像度が、第2のパス解像度よりも低いことに応じて、コンピューティングシステム200は、ブロック420に進む。420において、ダウンサンプラ234は、取得されたリファレンスフレームを、第1のパス解像度にダウンサンプリングして、ダウンサンプリングされたリファレンスフレームを生成する。その後、エンコーダ206は、ダウンサンプリングされたリファレンスフレームを、第1のパスメモリバッファ230に格納し、第1のゲームフレームの第1のパス符号化における使用のための共有リファレンスフレームを生成する。再びブロック410を参照して示すように、第1のパス解像度が、第2のパス解像度以上であることに応じて、エンコーダは、取得したリファレンスフレームを、第1のパスメモリバッファ230に格納し、第1のゲームフレームの第1のパス符号化における使用のための共有リファレンスフレームを生成する。その後、コンピューティングシステム200は、ブロック425に進む。
【0035】
ブロック425において、エンコーダは、第1のゲームフレームに対して第1のパス符号化を実行する。実施形態では、第1のパス符号化は、第1のゲームフレームの解像度を、第1のパス解像度まで下げ、共有リファレンスフレームを使用して第1のゲームフレームを符号化することなどによって、第1のゲームフレームを、第1のパス解像度にダウンサンプリングするダウンサンプラ234を含む。第1のパス符号化は、多くのビットを有する第1のパス符号化フレームを生成する。ブロック430において、レート制御ユニット224と同一または同様のレート制御ユニットは、第1のパス符号化フレームにおけるビット数に基づいて、第1のゲームフレームの、推定複雑度を決定する。さらにブロック430において、レート制御ユニットは、推定複雑度にしたがって、第1のゲームフレームの量子化パラメータを決定する。第1のパス符号化において共有リファレンスフレームを使用することによって、推定複雑度は、第1のゲームフレームの実際の複雑度をより正確に表し、符号化フレームが、目標ビット数を超えるリスクを下げる。ブロック435において、エンコーダは、第2のパスリファレンスフレームと、決定された量子化パラメータとを使用して、第1のゲームフレームに対して第2のパス符号化動作を実行する。
【0036】
コンピュータ可読記憶媒体は、命令および/またはデータを、コンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な、任意の記憶媒体、または記憶媒体の組合せを含み得る。そのような記憶媒体は、光学媒体(たとえば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイディスク)、磁気媒体(たとえば、フロッピーディスク、磁気テープ、または磁気ハードドライブ)、揮発性メモリ(たとえば、ランダムアクセスメモリ(RAM)またはキャッシュ)、不揮発性メモリ(たとえば、読取専用メモリ(ROM)またはフラッシュメモリ)、または、微小電気機械システム(MEMS)ベースの記憶媒体を含むことができるが、これらに限定されない。コンピュータ可読記憶媒体は、コンピューティングシステム(たとえば、システムRAMまたはROM)に埋め込まれても、コンピューティングシステム(たとえば、磁気ハードドライブ)に固定的に取り付けられても、コンピューティングシステム(たとえば、光ディスクまたはユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)に取り外し可能に取り付けられても、または有線ネットワークまたはワイヤレスネットワーク(たとえば、ネットワークアクセシブルストレージ(NAS))を介してコンピュータシステムに結合されていてもよい。
【0037】
一般的な説明で上述したアクティビティまたは要素のすべてが必要とされている訳ではないこと、特定のアクティビティまたはデバイスの一部が、必要とされない場合があること、1つまたは複数のさらなるアクティビティが実行されるか、または、記載されているものに加えて要素が含まれる場合があることに留意されたい。さらに、アクティビティがリストされている順序は、必ずしも実行される順序である必要はない。また、これら概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、以下の特許請求の範囲に記載される本開示の範囲から逸脱することなく、様々な修正および変更を行うことができることを認識するであろう。したがって、明細書および図面は、限定的な意味ではなく例示としてみなされるべきであり、そのような修正はすべて、本開示の範囲内に含まれることが意図される。
【0038】
「A、B、またはCのうちの少なくとも1つ」の文脈で使用される前置詞「または」は、本明細書では「包括的なまたは」を意味するために使用される。すなわち、上記および同様の文脈では、またはは、「それらの少なくとも1つまたは任意の組合せ」を意味するために使用される。たとえば、「A、B、およびCの少なくとも1つ」は、「A、B、Cのうちの少なくとも1つ、またはそれらの任意の組合せ」を意味するために使用される。
【0039】
利益、他の利点、および問題の解決策は、特定の実施形態に関して上記で説明された。しかしながら、利益、利点、問題の解決策、および、任意の利益、利点、または解決策を生じさせる、またはより顕著にさせる任意の特徴は、任意またはすべての請求項の重要な、必須の、または本質的な特徴として解釈されるべきではない。さらに、上記で開示された特定の実施形態は、単に例示的であり、開示される主題は、本明細書の教示の利益を有する当業者にとって明白な、異なるが同等の方式で、修正および実施され得る。以下の特許請求の範囲に記載されているものを除き、本明細書に示される構造または設計の詳細に対する限定は意図されない。したがって、上記で開示された特定の実施形態は、変更または修正され得ることは明らかであり、そのような変形はすべて、開示された主題の範囲内にあるとみなされる。したがって、本明細書で求められる保護は、以下の特許請求の範囲に記載されている通りである。