(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-17
(45)【発行日】2024-05-27
(54)【発明の名称】3Dゲームストリーミングシナリオでの推測航法及び遅延の改善
(51)【国際特許分類】
H04N 21/4402 20110101AFI20240520BHJP
H04N 21/442 20110101ALI20240520BHJP
G06T 19/00 20110101ALI20240520BHJP
A63F 13/358 20140101ALI20240520BHJP
A63F 13/52 20140101ALI20240520BHJP
【FI】
H04N21/4402
H04N21/442
G06T19/00 A
A63F13/358
A63F13/52
(21)【出願番号】P 2020564883
(86)(22)【出願日】2019-05-13
(86)【国際出願番号】 US2019031920
(87)【国際公開番号】W WO2019226374
(87)【国際公開日】2019-11-28
【審査請求日】2022-04-05
(32)【優先日】2018-05-24
(33)【優先権主張国・地域又は機関】US
【前置審査】
(73)【特許権者】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ブロンダー,マシュー ローレンス
(72)【発明者】
【氏名】ネブラエフ,イヴァン
【審査官】大西 宏
(56)【参考文献】
【文献】国際公開第2008/139515(WO,A1)
【文献】国際公開第2016/191136(WO,A1)
【文献】William R.Mark et al.,Post Rendering Image Warping for Latency Compensation,UNC-CH Computer Science Technical Report,米国,UNC-CH,1996年11月25日,#96-020,1-6
【文献】Sudheendra Vijayanarasimhan et al.,SfM-Net:Leaning of Structure and Motion from Video,ARXIV.ORG,CORNELLL UNIVERSITY LIBRARY,米国,CORNELLL UNIVERSITY,2017年04月25日,1-9
【文献】Shu Shi et al.,Real-Time Remote Rendering of 3D Video for Mobile Devices,PROCEEDINGS OF THE 17TH ACM INTERNATIONAL CONFERENCE ON MULTIMEDIA,米国,ACM,2009年10月19日,MM '09,391-400
【文献】Daniel Evangelakos et al.,Extended TimeWarp Latency Compensation for Virtual Reality,INTERACTIVE 3D GRAPHICS AND GAMES ACM,米国,ACM,2016年02月27日,193-194
(58)【調査した分野】(Int.Cl.,DB名)
H04N 21/00 -21/858
G06T 19/00 -19/20
A63F 13/00 -13/98
(57)【特許請求の範囲】
【請求項1】
コンピュータ装置であって、当該コンピュータ装置は、
データ及び命令を格納するメモリと、
該メモリと通信する中央処理装置と、
通信ネットワークと通信可能に結合されたネットワークインターフェイスと、
前記メモリ、前記中央処理装置、及び前記ネットワークインターフェイスと通信するクライアントアプリケーション及びディスプレイ制御コンポーネントと、を含み、
該クライアントアプリケーション及びディスプレイ制御コンポーネントは、
前記ネットワークインターフェイスを介してビデオゲーム制御をストリーミングサーバに送信
すること、
前記ネットワークインターフェイスを介した前記ストリーミングサーバからの前記ビデオゲーム制御に応答して生成されたビデオ画像を符号化するビデオストリームを受信
することであって、該ビデオストリームの符号化には動きベクトルが含まれる、こと、
前記ビデオ画像に対する仮想カメラの位置を示すカメラマトリックスを前記メモリに保持すること、
1つ又は複数の以前のフレームに対応する前記ビデオストリームの1つ又は複数のビデオ画
像、前記ビデオストリームの
前記動きベクトル
、及び前記カメラマトリックスに基づいて、画像変換を決定
すること、
前記ビデオストリームの後続のフレームが到着するとスケジューリングされるときの指定時間前に、前記画像変換を、1つ又は複数の以前のフレームに対応する1つ又は複数の画像の少なくとも一部に適用して、変換された以前に表示された画像の少なくとも一部を含む代替ビデオ画像を生成
すること、
前記後続のフレームに表示する前記ビデオストリームのビデオ画像が、前記指定時間に完全に受信されていないと判定
すること、
及び
前記後続のフレームに表示する前記ビデオ画像が前記指定時間に完全に受信されなかった
と判定
された場合に、前記ビデオストリームの前記ビデオ画像の代わりに、前記変換された以前に表示された画像の少なくとも一部を含む前記代替ビデオ画像を前記後続のフレームに表示する
こと、を行うように動作可能である、
コンピュータ装置。
【請求項2】
前記ディスプレイ制御コンポーネントは、前記ビデオストリームの前記符号化から前記動きベクトルを抽出するように構成される、請求項1に記載のコンピュータ装置。
【請求項3】
前記画像変換は、前記1つ又は複数の以前のフレームに対応する前記1つ又は複数の画像の前記一部の再投影であり、前記ディスプレイ制御コンポーネントは、前記1つ又は複数の以前のフレームに対応する前記1つ又は複数の画像のポイントの深度値を決定するように構成され、前記再投影は前記深度値に基づく、請求項1に記載のコンピュータ装置。
【請求項4】
前記ディスプレイ制御コンポーネントは、ビデオゲームのために訓練された機械学習モデルを、前記1つ又は複数の以前のフレームに対応する前記1つ又は複数の画像に適用して、前記深度値を決定するように構成される、請求項3に記載のコンピュータ装置。
【請求項5】
前記ディスプレイ制御コンポーネントは、機械学習モデルを適用して、前記1つ又は複数の以前のフレームに対応する前記1つ又は複数の画像に対してセグメント化を実行し、且つ前記動きベクトルを識別された画像セグメントに適用するように構成される、請求項1に記載のコンピュータ装置。
【請求項6】
前記クライアントアプリケーションは、前記ストリーミングサーバから深度情報を受信するように構成される、請求項1に記載のコンピュータ装置。
【請求項7】
前記クライアントアプリケーションは、前記ストリーミングサーバから更新されたカメラマトリックスを定期的に受信するように構成される、請求項1に記載のコンピュータ装置。
【請求項8】
前記クライアントアプリケーションは、前記ストリーミングサーバから前記ビデオ画像に対応する幾何学的表現を受信するように構成される、請求項1に記載のコンピュータ装置。
【請求項9】
コンピュータ装置上でストリーミングビデオゲームをプレイするための方法であって、当該方法は、
ビデオゲーム制御コマンドをストリーミングサーバに送信するステップと、
前記ビデオゲーム制御コマンドに応答して生成されたビデオ画像を符号化するビデオストリームを前記ストリーミングサーバから受信するステップ
であって、前記ビデオストリームの符号化には動きベクトルが含まれる、ステップと、
1つ又は複数の以前のフレームに対応する前記ビデオストリームの1つ又は複数のビデオ画
像及び前記ビデオストリームの動きベクトルに基づいて、画像変換を決定するステップ
であって、画像変換を決定するステップには、前記ビデオ画像に対する仮想カメラの位置を示すカメラマトリックスを保持するステップが含まれ、前記画像変換は前記カメラマトリックスに基づく、ステップと、
前記ビデオストリームの後続のフレームが到着するとスケジューリングされるときの指定時間前に、前記画像変換を、1つ又は複数の以前のフレームに対応する1つ又は複数の画像の少なくとも一部に適用して、変換した以前の表示画像の少なくとも一部を含む代替ビデオ画像を生成するステップと、
前記後続のフレームに表示する前記ビデオストリームのビデオ画像が、前記指定時間に完全に受信されていないと判定するステップと、
前記後続のフレームに表示する前記ビデオ画像が前記指定時間に完全に受信されなかった
と判定
された場合に、前記ビデオストリームの前記ビデオ画像の代わりに、前記変換された以前に表示された画像の少なくとも一部を含む前記代替ビデオ画像を前記後続のフレームに表示するステップと、を含む、
方法。
【請求項10】
前記画像変換を決定するステップは、前記ビデオストリームの前記符号化から前記動きベクトルを抽出するステップを含む、請求項9に記載の方法。
【請求項11】
前記画像変換を決定するステップは、前記1つ又は複数の以前のフレームに対応する前記1つ又は複数の画像のポイントの深度値を決定するステップを含み、前記画像変換は、前記深度値に基づいて、前記1つ又は複数の以前のフレームに対応する前記1つ又は複数の画像の一部の再投影である、請求項9に記載の方法。
【請求項12】
前記深度値を決定するステップは、ビデオゲームのために訓練された機械学習モデルを、前記1つ又は複数の以前のフレームに対応する前記1つ又は複数の画像に適用して、前記深度値を決定するステップを含む、請求項11に記載の方法。
【請求項13】
前記ストリーミングサーバから更新されたカメラマトリックスを定期的に受信するステップをさらに含む、請求項11に記載の方法。
【請求項14】
前記画像変換を決定するステップは、
前記ストリーミングサーバから前記ビデオ画像に対応する幾何学的表現を受信するステップと、
深度値を決定するために前記幾何学的表現をレンダリングするステップと、を含む、請求項11に記載の方法。
【請求項15】
コンピューティング装置上でストリーミングビデオゲームをプレイするための、1つ又は複数のプロセッサによって実行可能なコードを
記憶する非一時的なコンピュータ可読媒体であって、前記コードには、
ビデオゲーム制御をストリーミングサーバに送信すること、
前記ビデオゲーム制御に応答して生成されたビデオ画像を符号化するビデオストリームを前記ストリーミングサーバから受信すること
であって、前記ビデオストリームの符号化には動きベクトルが含まれる、こと、
1つ又は複数の以前のフレームに対応する前記ビデオストリームの1つ又は複数の画像、及び前記1つ又は複数の以前のフレームのカメラ変換行列に基づいて選択された動きベクトルに基づいて画像再投影を決定すること、
前記ビデオストリームの後続のフレームが到着するとスケジューリングされるときの指定時間前に、
前記画像再投影を、1つ又は複数の以前のフレームに対応する前記ビデオストリームの前記1つ又は複数の画像の少なくとも一部に適用して、再投影された画像の少なくとも一部を含む代替ビデオ画像を生成すること、
前記後続のフレームに表示する前記ビデオストリームのビデオ画像が、前記指定時間に完全に受信されていないと判定すること、及び
前記後続のフレームに表示する前記ビデオ画像が前記指定時間に完全に受信されなかった
と判定
された場合に、前記ビデオストリームの前記ビデオ画像の代わりに、前記再投影された画像の少なくとも一部を含む前記代替ビデオ画像を前記後続のフレームに表示すること、を行うためのコードが含まれる、
非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ストリーミングビデオゲーム、より具体的には、ストリーミングビデオゲームにおける遅延の軽減に関する。
【背景技術】
【0002】
ストリーミングビデオゲームは、クライアント装置がネットワークを介してゲームを実行しているサーバに制御コマンドを提供し、サーバが制御コマンドに反応してビデオストリームを生成し、このビデオストリームがネットワークを介してクライアント装置に送信され、クライアント装置の画面に表示されるビデオゲームとして規定され得る。ストリーミングビデオゲームは、サーバが何らかの処理を実行している場合でも、クライアント装置がユーザに提示されるビデオ画像をレンダリングする従来の多くのビデオゲームとは異なり得る。例えば、マルチプレーヤーゲームでは、サーバはプレーヤー同士の間の相互作用を計算できるが、サーバは、典型的に、ビデオ画像をレンダリングするために、シーン情報をクライアント装置に送信する。ストリーミングビデオゲームは、ゲーム処理を一元化し、クライアント装置でゲームを実行する場合と比較して、より薄く、より複雑でないクライアント装置とより複雑でないクライアントソフトウェアとを可能にするという利点を提供し得る。例えば、ストリーミングビデオゲームは、専用のグラフィック処理カードがないモバイル装置に適している場合がある。
【0003】
ストリーミングビデオゲームは、ビデオをストリーミングするために使用される通信ネットワークの遅延及び遅延変動(ジッター)に関して困難に直面する可能性がある。つまり、クライアント装置は、ネットワーク遅延のために、意図した時間にビデオパケットを受信できない可能性がある。ビデオパケットを受信する実際の時間は、ジッターのために予測が難しい場合がある。特に、ワイヤレスネットワークは、ビデオをストリーミングするのに十分な帯域幅を提供しているが、同様の帯域幅を有する有線ネットワークと比較して、遅延及びジッターの影響を大きく受ける可能性がある。
【0004】
従来のストリーミングビデオ(例えば、映画)とは異なり、ビデオはユーザ入力に基づいているため、ストリーミングビデオゲームにはバッファリングが向いていない可能性があり、そのため、将来のフレームで提示するビデオ画像は事前に利用できない。さらに、クライアント装置が並列ゲームエンジンを実行する従来のマルチプレーヤーゲームとは異なり、ストリーミングゲームのためのクライアント装置には、現在のゲーム状態に関する情報がない場合がある。従って、表示するための新しいビデオ画像が受信されていない場合に、クライアント装置はフリーズする可能性がある。
【0005】
こうして、当技術分野では、コンピュータ装置上でのビデオゲームストリーミングのためのグラフィック処理を改善する必要がある。
【発明の概要】
【0006】
以下は、そのような実施態様の基本的な理解を与えるために、本開示の1つ又は複数の実施態様の簡略化された概要を提示する。この概要は、想定される全ての実施多様の広範な概要ではなく、全ての実施態様の基本的な要素又は重要な要素を特定したり、一部又は全ての実施態様の範囲を説明したりすることを目的とするものではない。その唯一の目的は、後で提示するより詳細な説明の前置きとして、本開示の1つ又は複数の実施態様のいくつかの概念を簡略化された形で提示することである。
【0007】
1つ例示的な実施態様は、ストリーミングビデオゲームをプレイするためのコンピュータ装置に関する。コンピュータ装置は、データ及び命令を格納するメモリ、メモリと通信する中央処理装置、通信ネットワークと通信可能に結合されたネットワークインターフェイス、クライアントアプリケーション、及びディスプレイ制御コンポーネントを含み得る。コンピュータ装置は、ネットワークインターフェイスを介してビデオゲーム制御をストリーミングサーバに送信するように動作可能であり得る。コンピュータ装置は、ネットワークインターフェイスを介したストリーミングサーバからのビデオゲーム制御に応答して生成されたビデオ画像を符号化するビデオストリームを受信するように動作可能であり得る。コンピュータ装置は、フレームに表示するビデオストリームのビデオ画像が、フレームに表示する前の指定時間に完全に受信されていないと判定するように動作可能であり得る。コンピュータ装置は、少なくともビデオ画像の履歴及びビデオストリームの動きベクトルに基づいて画像変換を決定するように動作可能であり得る。コンピュータ装置は、画像変換を、1つ又は複数の以前のフレームに対応する1つ又は複数の画像の少なくとも一部に適用して、代替ビデオ画像を生成するように動作可能であり得る。コンピュータ装置は、フレームに表示するビデオ画像が指定時間に完全に受信されなかったとの判定に応じて、変換された画像の少なくとも一部を含む代替ビデオ画像をフレームに表示するように動作可能であり得る。
【0008】
別の例示的な実施態様は、コンピュータ装置上でストリーミングビデオゲームをプレイするための方法に関する。この方法は、ビデオゲーム制御コマンドをストリーミングサーバに送信するステップを含み得る。この方法は、ビデオゲーム制御に応答して生成されたビデオ画像を符号化するビデオストリームをストリーミングサーバから受信するステップを含み得る。この方法は、フレームに表示するビデオストリームのビデオ画像が、フレームに表示する前の指定時間に完全に受信されていないと判定するステップを含み得る。この方法は、少なくともビデオ画像の履歴及びビデオストリームの動きベクトルに基づいて画像変換を決定するステップを含み得る。この方法は、画像変換を、1つ又は複数の以前のフレームに対応する1つ又は複数の画像の少なくとも一部に適用して、代替ビデオ画像を生成するステップを含み得る。この方法は、フレームに表示するビデオ画像が指定時間に完全に受信されなかったとの判定に応じて、変換された以前に表示された画像の少なくとも一部を含む代替ビデオ画像をフレームに表示するステップを含み得る。
【0009】
別の例示的な実施態様は、コンピューティング装置上でストリーミングビデオゲームをプレイするための、1つ又は複数のプロセッサによって実行可能なコードを含むコンピュータ可読媒体に関する。コンピュータ可読媒体は、ビデオゲーム制御をストリーミングサーバに送信するためのコードを含み得る。コンピュータ可読媒体は、ビデオゲーム制御に応答して生成されたビデオ画像を符号化するビデオストリームをストリーミングサーバから受信するためのコードを含み得る。コンピュータ可読媒体は、フレームに表示するビデオストリームのビデオ画像が、フレームに表示する前の指定時間に完全に受信されていないと判定するためのコードを含み得る。コンピュータ可読媒体は、少なくとも以前のフレームに対応するビデオストリームの画像、及び以前のフレームのカメラ変換行列に基づいて選択する動きベクトルに基づいて画像再投影を決定するためのコードを含み得る。コンピュータ可読媒体は、画像再投影を、1つ又は複数の以前のフレームに対応するビデオストリームの1つ又は複数の画像の少なくとも一部に適用して、代替ビデオ画像を生成するためのコードを含み得る。コンピュータ可読媒体は、フレームに表示するビデオ画像が指定時間に完全に受信されなかったとの判定に応じて、再投影された画像の少なくとも一部を含む代替ビデオ画像をフレームに表示するためのコードを含み得る。
【0010】
本開示の実施態様に関連する追加の利点及び新規な特徴は、部分的には以下の説明に記載され、部分的には、以下の説明を検討するか、又は実践によって学習することにより当業者に明らかになるであろう。
【図面の簡単な説明】
【0011】
【
図1】本開示の実施態様による、ストリーミングビデオゲームをプレイするための例示的なシステムの概略ブロック図である。
【
図2】本開示の実施態様による、ストリーミングビデオゲームをプレイするためのプロセス及び通信を示す図である。
【
図3】本開示の実施態様による、代替ビデオフレームを含むストリーミングビデオゲームのビデオストリームの例である。
【
図4】本開示の実施態様による、ストリーミングビデオゲームをプレイするための方法のフローチャートである。
【
図5】本開示の実施態様による例示的なコンピュータ装置の概略ブロック図である。
【発明を実施するための形態】
【0012】
本開示は、ビデオゲームをストリーミングするためのシステム及び方法を提供する。本明細書で使用される場合に、ストリーミングビデオゲームという用語は、ストリーミングサーバが、ビデオゲームを実行し、画像を生成し、画像を符号化(encoding)するビデオストリームをストリーミングクライアント装置に送信する構成を指す。ストリーミングサーバは、ストリーミングクライアント装置のレンダリングプロセスを実行することによって画像を生成することができる。ただし、ストリーミングサーバは、生成された画像を実際には画面又はモニタに表示しない場合がある。代わりに、ストリーミングサーバは画像をビデオストリームとして符号化する場合がある。ビデオストリームは、ビデオフレームに対応する画像を符号化することができる。フレームは、画像を表示するための連続した期間であり得る。符号化は、各フレームに対応する画像を示す画像及び/又は変更情報(例えば、動きベクトル)を含み得る。ネットワーク通信の場合に、符号化されたビデオストリームは複数のビデオパケットに分割され、各ビデオパケットにはビデオストリームの一部が含まれる。ビデオパケットは、転送中に失われたり、順序が狂って到着したり、又はビデオパケットが到着したときに対応するフレームを表示する時間が徒過するように遅延したりする可能性がある。
【0013】
実施態様では、例えば、本開示は、ストリーミングクライアント装置でのユーザの体験に対するネットワーク遅延の影響を低減するためのシステム及び方法を提供する。特に、本開示は、ストリーミングクライアント装置が、フレームに対応する画像をストリーミングクライアント装置のディスプレイに提示するのに間に合うようにビデオパケットを受信していないという問題に対処する。本開示は、1つ又は複数のビデオパケットが時間内に受信されない場合に、生成された画像の履歴及びビデオストリームの動きベクトルに基づいて代替画像が生成される推測航法(dead reckoning)アプローチを提供する。
【0014】
ストリーミングクライアント装置は、ビデオフレームを表示するためのビデオデータの少なくとも一部(例えば、1つ又は複数のビデオパケット)が、ビデオフレームを表示する前の時点で受信されていないと判定することができる。ストリーミングクライアント装置は、ビデオフレームの履歴及びビデオストリームの動きベクトルに基づいて画像変換を決定することができる。ストリーミングクライアントは、画像変換を、1つ又は複数の以前のフレームの少なくとも一部に適用して、代替ビデオフレームを生成することができる。ビデオデータが表示時間に到着していない場合に、ストリーミングクライアントは、受信していないビデオフレームの代わりに代替ビデオフレームを表示することができる。従って、新しいビデオフレームが利用できないときにディスプレイ上の画像をフリーズする代わりに、ストリーミングクライアントは、欠落しているビデオフレームが代替画像としてどのように見えるかを予測することができる。予測した代替画像が欠落している画像の正確な複製である可能性は低いが、代替画像はビデオフレームを埋めて動きを滑らかにすることにより、ユーザ体験を向上させることができる。ストリーミングクライアントが現在のビデオパケットを受信すると、ストリーミングクライアントは、現在のビデオパケットに基づいて、サーバからのビデオストリームを正しいフレームで表示することができる。
【0015】
画像変換の決定は、ビデオゲームクライアントアプリケーションの支援の有無にかかわらず、ストリーミング装置のオペレーティングシステムによって実行され得る。ビデオゲームクライアントアプリケーションの支援なしに、オペレーティングシステムは、ビデオストリームを解析して画像変換を決定することができる。例えば、ビデオストリームは、画像、及び/又は、画像同士の間の特定のピクセルの変換を示す動きベクトルを含むように符号化され得る。オペレーティングシステムは、画像を解析してオブジェクトを識別し、オブジェクトの深度を推定することができる。次に、オペレーティングシステムは、以前のフレームの画像からの動きベクトルを、未受信の画像に対応する現在のフレームに外挿して、画像変換を決定することができる。
【0016】
ビデオゲームクライアントアプリケーション及び/又はストリーミングサーバの支援により、オペレーティングシステムは、画像に関する既知の情報を使用して画像変換を改善することができる。例えば、ビデオゲームは、仮想カメラの姿勢(pose)及びこの姿勢の変化を示すカメラマトリックスを提供し得る。カメラ姿勢がビデオフレーム同士の間の主要な動きの原因となる可能性があるため、カメラマトリックスを使用して画像変換をより正確に予測することができる。別の例として、ビデオゲームは、ビデオゲーム画像の幾何学的形状に関するいくつかの情報を提供し得る。例えば、ビデオゲームはオブジェクトの位置を特定することができる。オペレーティングシステムは、オブジェクトテクスチャをキャッシュし、画像変換後にキャッシュされたテクスチャをオブジェクトに適用することができる。
【0017】
ここで
図1を参照すると、例示的なコンピュータシステム100は、ディスプレイ116上に提示するためのビデオ画像を対応するビデオフレームに提供するコンピュータ装置110と、ビデオゲームをコンピュータ装置110にストリーミングするストリーミングサーバ160とを含み得る。ストリーミングサーバ160は、1人又は複数のユーザからの様々な入力(例えば、制御コマンド158)を処理し、ゲーム状態を更新するゲームエンジン162を含み得る。ゲーム状態は、環境、キャラクター、オブジェクト、又はそれらのプロパティ等、ビデオゲームの任意の特徴の状態を指し得る。ストリーミングサーバ160は、コンピュータ装置110のためにビデオストリーム166を生成及び符号化するビデオエンコーダ164も含み得る。ビデオストリーム166は、例えば、ユーザのキャラクター視点に基づく、又はユーザのゲーム状態の該当する要素を伝える情報を含む、特定のユーザのために生成された画像を符号化し得る。ストリーミングサーバ160は、例えば、1つ又は複数のハードウェアコンピュータサーバとして、又はクラウドサービスによって提供される1つ又は複数の仮想サーバとして実装することができる。
【0018】
コンピュータ装置110は、ビデオゲームをストリーミングするためにネットワークに接続可能であり得る任意のモバイル装置又は固定コンピュータ装置を含み得る。コンピュータ装置110は、例えば、デスクトップ又はラップトップ又はタブレットコンピュータ、携帯電話、ゲームコンソール/装置、混合現実又は仮想現実装置、音楽装置、テレビ、ナビゲーションシステム、カメラ、携帯情報端末(PDA)、又はハンドヘルド装置等のコンピュータ装置であり得、或いは1つ又は複数の他の装置との有線及び/又は無線接続機能を有する他のコンピュータ装置であり得る。
【0019】
コンピュータ装置110は、メモリ112と、コンピュータ装置110の動作を制御するように構成されたCPU114とを含み得る。メモリ112は、オペレーティングシステム140及び/又はクライアントアプリケーション150を規定及び/又は関連付けるデータ及び/又はコンピュータ実行可能命令を格納するように構成され得る。CPU114は、オペレーティングシステム140及び/又はクライアントアプリケーション150を実行することができ、これは、ストリーミングゲームクライアントアプリケーションであり得る。メモリ112の例は、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、テープ、磁気ディスク、光ディスク、揮発性メモリ、不揮発性メモリ、及びそれらの任意の組合せ等の、コンピュータによって使用可能なメモリのタイプを含むことができるが、これらに限定されない。メモリ112は、CPU114によって実行されているアプリケーションのローカルバージョンを格納することができる。
【0020】
CPU114は、命令を実行するための1つ又は複数のプロセッサを含み得る。CPU114の例は、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、システムオンチップ(SOC)を含む、本明細書に記載されるように特別にプログラムされた任意のプロセッサ、又は他のプログラマブルロジック、又はステートマシンを含むことができるが、これらに限定されない。CPU114は、算術論理演算装置(ALU)、レジスタ、及び制御ユニット等の他の処理コンポーネントを含み得る。
【0021】
ディスプレイ116は、コンピュータ装置110のCPU114及びグラフィック処理装置ト(GPU)120と通信するビデオポート122に接続され得る。画像処理は、CPU114とGPU120との間で、画像変換の決定及び適用を提供する方法で分割され得る。例えば、CPU114は、画像変換をいつ適用するかを決定することができ、GPU120は、画像変換を、1つ又は複数の以前の画像の各ピクセルに適用することができる。
【0022】
コンピュータ装置110は、ユーザからの入力を受け取るための入力装置118も含み得る。入力装置118は、例えば、マウス、キーボード、タッチスクリーン、タッチパッド、ボタン、ゲームコントローラ、デジタルペン、ヘッドマウントディスプレイ、ウェアラブル装置、又は入力を提供する他の装置を含み得る。
【0023】
コンピュータ装置110は、CPU114及び/又はGPU120と統合されたビデオポート122も含み得る。ビデオポート122は、例えば、VGA、DVI、HDMI(登録商標)、又はディスプレイポート出力であり得る。ビデオポート122は、ディスプレイ116によって利用され得るビデオ信号を提供することができ、このディスプレイ116は、モニタ又は仮想現実ヘッドマウントディスプレイ(HMD)を含み得る。例えば、ビデオポート122は、GPUメモリ126内のビデオバッファを定期的にスキャンアウト(scan out)することができる。CPU114、GPU120、及びビデオポート122は、コンピュータ装置110のための汎用グラフィック処理操作を実行することができる。
【0024】
コンピュータ装置110は、任意の有線又は無線ネットワークインターフェイス(例えば、イーサネット又はWi-Fi(登録商標))を含み得るネットワークインターフェイス124も含み得る。別の例として、コンピュータ装置110は、オプションで、ユニバーサルシリアルバス(USB)インターフェイスを含み得る。コンピュータ装置110のネットワークインターフェイス124は、ネットワーク170を介してストリーミングサーバ160の対応するネットワークインターフェイスに接続され得る。ネットワーク170は、パケットを送信する通信ネットワークであり得る。例えば、ネットワーク170は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、又はインターネットであり得る。ネットワーク170は、インターネットプロトコル(IP)を含む様々なプロトコルを利用することができる。従って、コンピュータ装置110は、ネットワーク170を介してストリーミングサーバ160との間でデータ(例えば、データパケット)を送受信することができる。
【0025】
ネットワーク170は、通信の遅延に寄与する可能性がある。ストリーミングビデオゲームの文脈における遅延は、ユーザが入力を行ってからユーザが画面(例えば、ディスプレイ116)上で更新された画像を見るまでの期間を指し得る。遅延が長いと、ゲームがプレイできなくなる可能性がある。ストリーミング状況での遅延には、ネットワーク遅延、レンダリング時間、画像符号化時間等を含む多くの要素が含まれ、100ミリ秒以上になる場合がある。ネットワーク通信の別の特性は、ジッターである。ジッターは、遅延の変動性を測定する。ストリーミングビデオゲームのプレーヤーの観点からは、ジッターは、入力に対する不均一な反応として現れ、不快なゲーム体験をもたらす可能性がある。一般に、Wi-Fi(登録商標)及びモバイルネットワーク等の無線ネットワークは、有線ネットワークと比較してジッターが高くなる。帯域幅は、クライアント(例えば、コンピュータ装置110)とサーバ(例えば、ストリーミングサーバ160)との間で平均して1秒あたりにどれ位のデータの量を送信できるかを指し得る。帯域幅は非対称であり得、通常、クライアントからサーバへの帯域幅は反対方向よりもはるかに低くなる。ネットワークストリーミングには、通常、ユーザデータグラムプロトコル(UDP)等の不可逆(lossy)ネットワークプロトコルが使用される。これは、トランスポート制御プロトコル(TCP)等のエラーチェック及び修正を伴うプロトコルでは、遅延の保証が劣るためである。UDPのようなプロトコルを使用すると、送信中にいくつかのパケットが失われる可能性がある。
【0026】
オペレーティングシステム140は、メモリ112に格納され、且つCPU114によって実行される命令(クライアントアプリケーション150等)を含み得る。オペレーティングシステム140は、GPU120を制御するためのディスプレイコントローラ142を含み得る。例えば、ディスプレイコントローラ142は、ソース画像のレンダリング又は調整の実行等の1つ又は複数の特定のグラフィック処理操作を実行するために、制御コマンドをGPU120に提供することができる。ディスプレイコントローラ142は、ビデオストリーム166を受信及び復号化(decoding)するためのストリーミングエンジン144、ビデオストリーム166の遅延を検出するための遅延モジュール146、及び現在のビデオフレームを受信していない場合に、1つ又は複数の以前のビデオフレームの1つ又は複数の画像に適用される画像調整を生成するための再投影モジュール148を含み得る。
【0027】
コンピュータ装置110は、メモリ112に格納され、且つCPU114によって実行される命令を含むクライアントアプリケーション150も含み得る。アプリケーション150は、例えば、ストリーミングサーバ160と通信するストリーミングビデオゲームクライアントアプリケーションであり得る。例えば、アプリケーション150は、ユーザからのユーザ入力を受け取り、且つ制御コマンド158をストリーミングサーバ160に送信する制御コンポーネント152を含み得る。実施態様では、アプリケーション150は、ビデオゲームに関するいくつかの状態情報も維持し得る。例えば、アプリケーション150は、カメラの姿勢を示すカメラマトリックス154を維持することができる。アプリケーション150は、ストリーミングサーバ160から受信したサーバカメラマトリックスに基づいてカメラマトリックス154を更新することができる。さらに、実施態様では、アプリケーション150は、ビデオフレームでレンダリングされ得る1つ又は複数のオブジェクトの幾何学的形状を示すジオメトリ(geometry)156を含み得る。いくつかの実施態様では、アプリケーション150は、画像変換を決定するために、カメラマトリックス154及び/又はジオメトリ156を再投影モジュール148に提供することができる。
【0028】
ここで
図2を参照すると、
図200は、コンピュータ装置110及びストリーミングサーバ160での処理及び通信のタイミングの例を示している。202において、コンピュータ装置110(例えば、GPU120及びディスプレイ116)は、以前の画像を表示することができる。以前の画像は、ビデオストリームの以前のフレームに対応し得る。以前の画像は、例えば、ストリーミングサーバから受信したビデオ情報に基づき得る。以下でさらに詳細に説明するように、以前の画像は、別のビデオフレームに適用された画像変換に基づくこともできる。いずれの場合も、以前の画像は、例えば、以前のフレームでディスプレイ116に表示された画像を指し得る。さらに、フレームに表示される画像のビデオパケットが遅れて到着する場合がある。画像の到着が遅過ぎて正しいフレームに表示できない場合でも、画像は画像変換に使用され、以前のフレームに対応する画像と呼ばれることがある。
【0029】
204において、コンピュータ装置110(例えば、制御コンポーネント152)は、ユーザからビデオゲームを制御するためのユーザ入力を受け取ることができる。例えば、入力は、入力装置118(例えば、マウス、キーボード、タッチスクリーン、コントローラ、又はユーザの相互作用を可能にする他の装置)を介して提供され得る。206において、制御コンポーネント152は、ユーザ入力を制御コマンド158としてストリーミングサーバ160に渡すことができる。制御コマンド158は、生の入力(例えば、マウスの動き及びボタンの押下)であり得、又は制御コンポーネント152は、入力のいくつかの処理を実行し得る。例えば、制御コンポーネント152は、マウスの動き又はボタンの押下をゲームコマンドに変換することができる。すなわち、生の入力データを送信する代わりに、制御コンポーネント152は、キャラクターを前進させるか、又は能力をアクティブにするコマンド等のゲームコマンドを送信することができる。従って、制御コマンド158は、生の入力コマンド及びゲームコマンドの一方又は両方を含み得る。
【0030】
208において、ストリーミングサーバ160は、ゲーム状態の更新を実行することができる。ゲーム状態の更新は、ゲームエンジン162によって実行される任意のコマンドを含み得る。例えば、ゲーム状態の更新は、1人又は複数のユーザ、環境、及びオブジェクトの間の相互作用を含み得る。ゲーム状態の更新は、制御コマンド158に基づき得る。
【0031】
210において、ストリーミングサーバ160は、各ユーザのためにビデオレンダリングを実行することができる。ストリーミングサーバ160は、ユーザのカメラビューに基づいて画像を生成することができる。例えば、カメラビューには、環境と、ユーザのキャラクターが表示できるオブジェクトが含まれる場合がある。ストリーミングサーバ160は、必ずしもストリーミングサーバ160で生成された画像を表示することができるとは限らない。ストリーミングサーバ160は、メモリ内に画像を生成することができる。
【0032】
212において、ストリーミングサーバ160は、レンダリングされたビデオ画像のビデオ符号化を実行することができる。送信するビデオのサイズを縮小するための様々なビデオ符号化技術が当技術分野で知られている。このようなビデオ符号化は、ゲームで使用されるネットワーク帯域幅を削減するようにビデオゲームをストリーミングするために重要である。ビデオ符号化技術は、符号化された画像を再生成するために復号化され得る様々な記述的データを生成し得る。例えば、ビデオ符号化は、ピクセル又はオブジェクトのグループに関する動きベクトルを含み得る。
【0033】
214において、コンピュータ装置110は、1つ又は複数の以前の画像に適用される画像調整を決定することができる。コンピュータ装置110は、ストリーミングサーバ160での処理と同時に画像調整を決定することができる。従って、コンピュータ装置110は、次のビデオフレームのパケットが216において到着することを意図しているそのときに利用可能な画像調整を有することができる。
【0034】
218において、コンピュータ装置110は、次のビデオフレームのビデオパケットが受信されたかどうかを判定することができる。動作218は、次のビデオフレームを表示する前の指定時間に発生し得る。例えば、指定時間は、ビデオパケットの復号化及び/又は画像調整の実行を可能にする時間であり得る。全てのビデオパケットが指定時間に受信された場合に、コンピュータ装置110は、222において、受信したビデオパケットに基づいて画像を復号化することができる。ビデオパケットが指定時間までにタイムリーに受信されなかった場合に、220において、コンピュータ装置110は、決定された画像調整を、1つ又は複数の以前のフレームに関連付けられた1つ又は複数の画像に適用して、代替画像を生成することができる。実施態様では、動作218での決定は、動作220で画像を調整するか、又は動作222で画像を復号化する前に行うことができる。両方の動作220及び222が同じリソース(例えば、GPU120及びメモリ126)を利用できるため、どの動作を実行するかを決定することにより、リソースを節約できる。代替実施態様では、動作220及び222の両方を実行して、2つの画像を生成することを試みることができる。復号化プロセスが不成功になった場合に(例えば、ビデオパケットがタイムリーに受信されなかったため)、代替画像が選択され得る。
【0035】
224において、コンピュータ装置110は、ビデオパケットが指定時間までにタイムリーに受信されなかった場合には代替画像を表示し、又はビデオパケットがタイムリーに受信された場合には受信画像を表示することができる。従って、コンピュータ装置110は、ビデオパケットがタイムリーに受信されたかどうかに応じて、ストリーミングサーバによって生成された画像又は代替画像のいずれかを表示することができる。例えば、遅延が長い状況では、コンピュータ装置110は、代替画像を表示し得る。
【0036】
ここで
図3を参照すると、例示的なビデオストリーム300は、ビデオフレーム310、330、及び350を含む。ビデオフレーム310及び330は、ストリーミングサーバ160によって生成されたストリーミングフレームであり得る。ビデオフレーム350は、対応するビデオフレームがストリーミングサーバ160から表示に間に合うように到着しない場合に、コンピュータ装置110によって生成された代替フレームであり得る。
【0037】
一例として、ビデオフレーム310は、垂直な廊下と交差し、壁314-aで終わる廊下312-aの画像を含み得る。例えば、ビデオゲームは、ユーザが、廊下312-aに沿って歩くキャラクターを制御することを可能にし得る。廊下312-aは、左壁及び右壁によって規定され得る。右壁は窓316-aを含み得、左壁は出入り口318-aを含み得る。
【0038】
ビデオフレーム330は、ビデオフレーム310に続く次のビデオフレームであり得る。例えば、ビデオフレーム330は、制御コマンド158によってキャラクターを前方に移動させる場合に生成され得る。ビデオフレーム330では、各オブジェクトの(例えば、ビデオフレーム310内の)以前の位置が破線で示されている。動きベクトル332、334、336は、動きの方向及び大きさを示す矢印として示されている。例えば、壁314-bは、動きベクトル332によって示されるようにビデオフレーム330内で下向きに移動し得、一方、窓316-bは、動きベクトル334によって示されるように下向き且つ右に移動し得、出入り口318-bは、動きベクトル336によって示されるように下向き且つ左に移動し得る。ビデオフレーム330内の壁314b、窓316b、及び出入り口318bのサイズもまた、カメラが各オブジェクトに近づくにつれて増大し得る。サイズ情報は、ビデオ符号化に含まれ得る。
【0039】
ビデオフレーム330のビデオ符号化は、壁314-b、窓316-b、及び出入り口318-bのそれぞれをピクセルのグループとして識別し、対応する動きベクトル332を示すことができる。ビデオフレーム310及びビデオフレーム330において殆どのピクセルが同じであるので、ピクセルの移動グループ及び動きベクトルを提供することは、ビデオ符号化に有意な圧縮を提供し得る。
【0040】
ビデオ符号化の動きベクトル332はまた、代替画像を生成するための画像変換を決定するために使用され得、ビデオパケットがストリーミングサーバ160からタイムリーに受信されない場合に、代替画像は、ビデオフレーム350として表示され得る。ビデオフレーム350は、動きベクトル332、334、336に基づく例示的な代替画像を示す。例えば、1つの実施態様では、画像変換は、動きベクトル332、334、336を、以前のフレーム内の同じオブジェクト又はピクセルのグループに適用することを含み得る。図示のように、ビデオフレーム350において、壁314-cはさらに下に移動され得、窓316-cはさらに下及び右に移動され得、出入り口318-cはさらに下及び左に移動され得る。画像変換後に画面スペースを超えて広がるピクセルは描画されない場合がある。例えば、下端を越えて延びる出入り口318の一部は表示されない場合がある。以前のビデオフレーム330からの動きベクトルを適用すると、領域352内の全てのピクセルが移動され、且つ新しい情報が受信されていないため、色情報のない領域352が生じる可能性もある。コンピュータ装置110は、隣接するピクセルのグループ(例えば、壁314-c及び廊下312-cの左右の壁)に基づいて、領域352にどの色を使用するかを推測するために最善の努力を使用することができる。
【0041】
図3は、ビデオフレームの履歴に基づく画像変換の一例を示しているが、他の技術を使用して、画像変換を決定することができる。例えば、カメラ変換及びピクセル毎の深度値が与えられると、ワールド空間のポイントを計算できる。各ポイントには、現在のカラーフレームから色を割り当てることができる。別のカメラ変換を指定すると、これらの色付きのポイントを画面スペースに投影できる。このタイプの画像変換は、再投影と呼ばれることがある。再投影は、例えば、位置情報又はカメラの姿勢の変化に従って画像を歪める(skewing)か、又は他に調整することを含み得る。例えば、コンピュータ装置110は、ピクセル毎の深度及び色、並びに以前のフレームからのカメラ変換行列を有し得、ビデオストリーム166内のパケットは失われる場合がある。失われたパケットは、コンピュータ装置110が現在データを有さない画面上のある領域に対応し得る。現在のフレームを変換させると、コンピュータ装置110は、再投影を使用して、欠落している領域を1つ又は複数の以前のフレームからの色で埋めることができる。カメラ変換を管理し、再投影を採用する利点の1つは、再投影により、カメラの動きに起因するフレーム内の全ての画像モーションを除外(factored out)し、姿勢モーションの単一の変化として表現できるため、符号化のみに依存しない場合に、シーン内の独立したモーションソースのみを管理、送信、処理等できることである。例えば、再投影では、動きベクトル332、334、336が、シーンの残りの部分が静的であるプレーヤー/カメラの動きに由来するので、エンコーダに関する
図3に関して上記の動きベクトルは省略され得る。従って、他のシーン要素がプレーヤーとは無関係に廊下312内を移動していない限り、再投影はカメラ変換のみを使用することができる。再投影モジュール148は、カメラ変換及びピクセル毎の深度値をいくつかの方法で決定することができる。
【0042】
深度再構成は、平坦な2D画像(例えば、ビデオフレーム330)から深度情報を再構成するプロセスである。単一の画像、画像とカメラの変換、ステレオ画像、一連の画像等から深度情報を再構築できるいくつかのアルゴリズムが、当技術分野で知られている。これは、画像処理及びロボット工学の研究で活発な分野であり、及び深度再構成に対する新しい人工知能ベースのアプローチが使用され得る。シーンの深度情報をキャッシュして、後続のフレームで再利用できる。深度情報はまた、再投影モジュール148が3Dシーンにおける深度の表現を維持するように、相互作用的に改良及び更新することができる。深度情報は、ボクセルとして表すことも、又はパラメトリック記述を使用することもできる。実施態様では、完全なフレームのカメラ変換行列は、複数のカラー画像フレームに亘る特徴観察の対応関係から推定及び改良され得る。さらに、フレーム全体に亘るカメラ変換行列の動きベクトルが決定され、後続のフレームのために外挿され得る。
【0043】
いくつかの実施態様では、ストリーミングサーバ160は、クライアントアプリケーション150を介して画像変換を決定するための追加情報を提供することができる。例えば、ストリーミングサーバ160のゲームエンジン162は、カメラマトリックス154をアプリケーション150に報告し、それによってストリーミングサーバ160及びコンピュータ装置110は、カメラ変換についての最新の理解を有する。実施態様では、カメラマトリックス154は、4×4の浮動小数点行列であり得るが、帯域幅消費を大幅に増加させない場合がある。実施態様では、カメラマトリックス154を送信するための帯域幅が小さいので、ストリーミングサーバ160は、カメラマトリックス154の冗長送信をフレームの複数のパケットで行うことができる。従って、マトリックスを含むパケットのうちの1つが時間内に到着しない場合に、カメラマトリックス154は、フレーム内の別のパケットから回復され得る。実施態様では、アプリケーション150は、ゲームエンジン162と並行してカメラマトリックス154を更新することができる。例えば、いくつかのゲームでは、制御コマンド158は、カメラマトリックス154を直接制御することができる(例えば、制御コマンド158によって、仮想カメラを動かす。)。アプリケーション150は、ストリーミングサーバ160によって実行されるより複雑なゲーム状態の更新及びレンダリング操作を実行することなく、カメラマトリックス154を更新することができる。
【0044】
カメラマトリックス154は、利用可能である場合に、ストリーミングエンジン144が良好な動きベクトルを選択するのを支援し得、また、ストリーミングサーバ160とコンピュータ装置110との両方においてより高い粒度で動きベクトルを生成するのに役立ち得る。カメラ変換を知っていると、また、背景シーンを移動するオブジェクトから分離するのに役立ち得る。すなわち、カメラマトリックス154を知ることにより、コンピュータ装置110上での深度バッファ再構成をよりロバストにすることができる。
【0045】
ストリーミングサーバ160によって提供され得る追加情報の別の例は、深度情報である。再投影モジュール149は、深度再構成に依存する代わりに、ストリーミングサーバ160からの深度情報を使用することができ、又は深度情報を使用して、深度再構成を増強することができる。コンピュータ装置110でグラウンドトゥルース(ground truth:正解)深度情報を有することは、深度再構成の複雑さを軽減し得る。ただし、深度バッファ情報は、ピクセル毎の深度が送信される場合に、帯域幅の消費を大幅に増加させる可能性がある。深度バッファ情報の帯域幅を削減するための1つの手法は、カメラ位置の変更を考慮した後に、深度情報の変更のみを送信することである。上記のように、再投影はカメラの動きを除外するために使用できる。
【0046】
ストリーミングサーバ160によって提供され得る追加情報の別の例は、ジオメトリ156である。オブジェクトのジオメトリは急速に変化する可能性が低いので、ジオメトリ156の送信はまれにしか実行されず、情報は圧縮又はパックされ得る。例えば、ジオメトリ156は、変化が殆どないビデオフレームとともに送信され得、その結果、パケットがより少なく及び/又はより小さくなる。クライアントアプリケーション150は、コンピュータ装置110に格納されたジオメトリ156も含み得る。例えば、クライアントアプリケーション150は、頻繁に使用されるオブジェクトに関するジオメトリ156を含み得る。
【0047】
ストリーミングサーバ160によって提供され得る追加情報の別の例は、ビデオ符号化に含まれる動きベクトルを超える追加の動きベクトルを含む。例えば、動きベクトルは、粗い領域からピクセル毎又はサブサンプルの粒度までの様々なレベルの粒度で、フレームの空間画面スペース領域に提供され得る。ジオメトリ156が使用される別の実施態様では、シーンジオメトリの動きベクトルは、ストリーミングサーバ160によって提供され得る。
【0048】
機械学習は、画像セグメント化のために再投影モジュール148によって使用されて、粗い動きベクトル情報の範囲を改善された範囲帰属を用いてさらに改良し、及び/又は深度再構成を改善し得る。例えば、深層畳み込みニューラルネットワーク等の機械学習モデルが画像分類を実行する場合がある。例えば、ニューラルネットワークは、ビデオストリームの画像に対してクラスタリングを実行して、同じ動きベクトルを経験するピクセルのグループを識別することができる。ピクセルのグループは、ピクセルの間の固定された深深度関係を有するオブジェクトを表すことができる。別の例では、機械学習分類器は、ゲームエンジン162によって生成されるセグメントの例を使用して訓練され得、そこでオブジェクトが識別される。再投影モジュール148は、粗い粒度(coarse-grained)の動きベクトル(例えば、ビデオエンコーダ164又はゲームエンジン162によって生成され、送信のためのネットワーク帯域幅バジェット(budget)によって制約され得る)を、クライアントコンピュータ装置110上で実行される細粒度(fine-grained)の画像セグメントと組み合わせることができる。
【0049】
ここで
図4を参照すると、例示的な方法400は、ストリーミングビデオゲームを実行するためのコンピュータ装置110を提供し、そこで、ストリーミングサーバ160がビデオ画像を生成し、ビデオ画像をコンピュータ装置110にストリーミングする。例えば、方法400は、ストリーミングされるビデオ画像を含むパケットがコンピュータ装置110での表示に間に合うように到着しない場合に、ストリーミングビデオゲームに対する遅延の影響を低減するために使用され得る。方法400に示される動作は、時間的に重複する可能性がある。例えば、ある瞬間に、2つの動作が異なるコンポーネントによって実行される場合がある。動作の実行は、コンポーネントでインターリーブすることもできる。さらに、方法400に示される動作は、
図4に示される以外の順序で実行され得る。
【0050】
410において、方法400は、ビデオゲーム制御コマンドをストリーミングサーバに送信することを含み得る。例えば、コンピュータ装置110上で実行されているクライアントアプリケーション150は、制御コンポーネント152を実行して、ネットワークインターフェイス124を介して制御コマンド158をストリーミングサーバ160に送信することができる。
【0051】
420において、方法400は、ビデオゲーム制御に応答して生成されたビデオ画像を符号化するビデオストリームを受信することを含み得る。例えば、ディスプレイコントローラ142は、ストリーミングエンジン144を実行して、制御コマンド158に応答して生成されたビデオ画像を符号化するビデオストリーム166を受信することができる。ストリーミングエンジン144は、ネットワークインターフェイス124を介してストリーミングサーバ160からビデオストリーム166を受信することができる。
【0052】
430において、方法400は、フレームに表示するビデオストリームのビデオ画像が、フレームに表示する前の指定時間に完全に受信されていないと判定することを含み得る。例えば、ディスプレイコントローラ142は、遅延モジュール146を実行して、フレームに表示するビデオストリーム166のビデオ画像が、フレームに表示する前の指定時間に完全に受信されていないと判定することができる。例えば、指定時間に、遅延モジュール146は、フレームの全てのパケットが受信されたかどうかを判定し、パケットが欠落しているときにビデオ画像が完全に受信されなかったと判定することができる。
【0053】
440において、方法400は、少なくともビデオ画像の履歴及びビデオストリームの動きベクトルに基づいて画像変換を決定することを含み得る。例えば、再投影モジュール148は、少なくとも以前のフレームの履歴及びビデオストリームの動きベクトルに基づいて画像変換を決定することができる。実施態様では、画像変換は再投影であり得る。442において、動作440は、ビデオストリームのビデオ符号化から動きベクトルを抽出することを含み得る。例えば、再投影モジュール148は、ビデオストリーム166のビデオ符号化から動きベクトルを抽出することができる。444において、動作440は、1つ又は複数の以前のビデオフレームに対応する画像のポイントの深度値を決定することを含み得る。例えば、再投影モジュール148は、以前に表示した画像又は以前のフレームにおいて表示するには遅過ぎた、受信した画像のポイントの深度値を決定することができる。実施態様では、再投影モジュール148は、深度再構成アルゴリズムを実行することができる。別の実施態様では、448において、再投影モジュール148は、アプリケーション150を介してストリーミングサーバ160から深度情報を受信することができる。別の実施態様では、再投影モジュール148は、ビデオゲームのために訓練された機械学習モデルを画像に適用して、深度値を決定することができる。449において、動作440は、ビデオ画像に関して仮想カメラの位置を示すカメラマトリックスを維持することを含み得る。例えば、クライアントアプリケーション150は、ビデオ画像に対する仮想カメラの位置を示すカメラマトリックス154を維持することができる。
【0054】
450において、方法400は、画像変換を、1つ又は複数の以前のフレームに対応する画像の少なくとも一部に適用して、代替画像を生成することを含み得る。例えば、再投影モジュール148は、GPU120を制御して、画像変換を、1つ又は複数の以前のフレームに対応する1つ又は複数の画像の少なくとも一部に適用することができる。再投影モジュール148は、画像変換と、画像変換が適用される1つ又は複数の以前に表示された画像の一部を含むコマンドをGPU120に送信することができる。GPU120は、画像変換を、1つ又は複数の以前に表示された画像に対して実行することによって代替画像を生成することができる。452において、動作450は、以前のビデオフレームの深度値及びカメラ変換に基づいて、以前のビデオフレームの少なくとも一部を再投影することを含み得る。例えば、GPU120は、以前のビデオフレームの深度値及びカメラマトリックス154に基づいて、以前のビデオフレーム330に対応する画像の少なくとも一部を再投影することができる。
【0055】
460において、方法400は、代替ビデオ画像をフレームに表示することを含み得、代替ビデオ画像は、変換された画像の少なくとも一部を含む。例えば、ディスプレイ116は、ビデオフレーム330の変換された画像の少なくとも一部を含むビデオフレーム350を表示することができる。ディスプレイ116は、ビデオポート122を介してGPU120からビデオ画像をスキャンアウトすることができる。
【0056】
ここで
図5を参照すると、
図1と比較して追加の構成要素の詳細を含む、実施態様による例示的なコンピュータ装置110が示されている。一例では、コンピュータ装置110は、本明細書に記載の1つ又は複数の構成要素及び機能に関連する処理機能を実行するためのプロセッサ48を含み得る。プロセッサ48は、単一又は複数のプロセッサのセット又はマルチコアプロセッサを含むことができる。さらに、プロセッサ48は、統合型処理システム及び/又は分散型処理システムとして実装することができる。実施態様では、例えば、プロセッサ48は、CPU114、及びGPU120を含み得る。一例では、コンピュータ装置110は、本明細書に記載の機能を実行するために、プロセッサ48によって実行可能な命令を格納するメモリ50を含み得る。実施態様では、例えば、メモリ50は、メモリ112及び/又はメモリ126を含み得る。
【0057】
さらに、コンピュータ装置110は、本明細書に記載されるように、ハードウェア、ソフトウェア、及びサービスを利用する1つ又は複数の当事者との通信を確立及び維持することを提供する通信コンポーネント52を含み得る。通信コンポーネント52は、コンピュータ装置110上のコンポーネント同士の間、並びにコンピュータ装置110と、通信ネットワークに亘って配置された装置及び/又はコンピュータ装置110にシリアル又はローカルに接続された装置等の外部装置との間の通信を搬送することができる。例えば、通信コンポーネント52は、1つ又は複数のバスを含み得、さらに、外部装置とインターフェイスするように動作可能な、送信機及び受信機にそれぞれ関連する送信チェーンコンポーネント及び受信チェーンコンポーネントを含み得る。実施態様では、例えば、通信コンポーネント52は、ネットワークインターフェイス124を含み得る。
【0058】
さらに、コンピュータ装置110は、本明細書に記載の実施態様に関連して使用される情報、データベース、及びプログラムの大容量記憶を提供する、ハードウェア及び/又はソフトウェアの任意の適切な組合せであり得るデータストア54を含み得る。例えば、データストア54は、オペレーティングシステム140(
図1)及び/又はアプリケーション150(
図1)のためのデータリポジトリであり得る。
【0059】
コンピュータ装置110は、コンピュータ装置110のユーザからの入力を受け取るように動作可能であり、さらにユーザに提示するための出力を生成するように動作可能なユーザインターフェイスコンポーネント56も含み得る。ユーザインターフェイスコンポーネント56は、キーボード、テンキー、マウス、タッチ感知ディスプレイ、ナビゲーションキー、ファンクションキー、マイク、音声認識コンポーネント、ユーザからの入力を受け取ることができる他の機構、又はそれらの任意の組合せを含むが、これらに限定されない1つ又は複数の入力装置を含み得る。さらに、ユーザインターフェイスコンポーネント56は、ディスプレイ、スピーカ、触覚フィードバック機構、プリンタ、ユーザに出力を提示することができる任意の他の機構、又はそれらの任意の組合せを含むが、これらに限定されない1つ又は複数の出力装置を含み得る。
【0060】
実施態様では、ユーザインターフェイスコンポーネント56は、オペレーティングシステム140及び/又はアプリケーション150の動作に対応するメッセージを送信及び/又は受信することができる。さらに、プロセッサ48は、オペレーティングシステム140及び/又はアプリケーション150を実行し、メモリ50又はデータストア54はそれらオペレーティングシステム140及び/又はアプリケーション150を格納することができる。
【0061】
本願で使用される場合に、「コンポーネント」、「システム」等の用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、又は実行中のソフトウェア等のコンピュータ関連エンティティを含むことを意図しているが、これらに限定されない。例えば、コンポーネントは、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、プログラム、及び/又はコンピュータであり得るが、これらに限定されない。例として、コンピュータ装置上で実行されているアプリケーションとコンピュータ装置との両方をコンポーネントにすることができる。1つ又は複数のコンポーネントは、プロセス及び/又は実行スレッド内に存在することができ、コンポーネントは、1つのコンピュータにローカライズされ、及び/又は2つ以上のコンピュータに分散され得る。さらに、これらのコンポーネントは、様々なデータ構造が格納されている様々なコンピュータ可読媒体から実行できる。コンポーネントは、ローカルシステム、分散システム内の別のコンポーネントと相互作用する、及び/又は信号を介して他のシステムとインターネット等のネットワークを介して相互作用する1つのコンポーネントからのデータ等の、1つ又は複数のデータパケットを有する信号に従って等、ローカル及び/又はリモートプロセスを介して通信することができる。
【0062】
さらに、「又は」という用語は、排他的な「又は」ではなく、包括的な「又は」を意味することを意図している。つまり、特に明記されていない限り、又は文脈から明らかでない限り、「XはA又はBを使用する」という句は、自然な包括的順列のいずれかを意味することを意図している。つまり、「XはA又はBを使用する」という句は、XはAを使用する、XはBを使用する、又はXはAとBとの両方を使用する、のいずれの場合も満たす。さらに、本願及び添付の特許請求の範囲で使用される冠詞「1つの(a, an)」は、特に明記しない限り、又は文脈から単数形を対象としたことが明らかでない限り、一般に「1つ又は複数」を意味すると解釈すべきである。
【0063】
いくつかの装置、コンポーネント、モジュール等を含み得るシステムに関して、様々な実施態様又は特徴を提示してきた。様々なシステムは、追加の装置、コンポーネント、モジュール等を含み得、及び/又は図に関して説明した装置、コンポーネント、モジュール等の全てを含まない場合があることを理解及び認識されたい。これらのアプローチの組合せも使用できる。
【0064】
本明細書に開示される実施形態に関連して説明する方法の様々な例示的な論理、論理ブロック、及び動作は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)又は他のプログラマブル論理装置、ディスクリートゲート又はトランジスタロジック、ディスクリートハードウェアコンポーネント、又は本書に記載される機能を実行するように設計されたそれらの任意の組合せのうちの特別にプログラムされたもので実装又は実行され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、又はステートマシンであり得る。プロセッサはまた、コンピュータ装置の組合せ、例えば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと組み合わせた1つ又は複数のマイクロプロセッサ、又は任意の他のそのような構成として実装され得る。さらに、少なくとも1つのプロセッサは、上記のステップ及び/又は動作のうちの1つ又は複数を実行するように動作可能な1つ又は複数のコンポーネントを含み得る。
【0065】
さらに、本明細書に開示される実施態様に関連して説明される方法又はアルゴリズムのステップ及び/又は動作は、ハードウェア、プロセッサによって実行されるソフトウェアモジュール、又はこれら2つの組合せで直接具体化され得る。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、又は当技術分野で知られている他の形式の記憶媒体に存在することができる。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合することができる。あるいは、記憶媒体はプロセッサに一体化され得る。さらに、いくつかの実施態様では、プロセッサ及び記憶媒体は、ASICに存在し得る。さらに、ASICはユーザ端末に存在する場合がある。あるいは、プロセッサ及び記憶媒体は、ユーザ端末内の個別のコンポーネントとして存在し得る。さらに、いくつかの実施態様では、方法又はアルゴリズムのステップ及び/又は動作は、コード及び/又は命令の1つ又は任意の組合せ又はセットとして、機械可読媒体及び/又はコンピュータ可読媒体上に存在し得、これらは、コンピュータプログラム製品に組み込まれ得る。
【0066】
1つ又は複数の実施態様では、説明する機能は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合に、機能は、1つ又は複数の命令又はコードとしてコンピュータ可読媒体上に格納又は送信され得る。コンピュータ可読媒体は、コンピュータ記憶媒体と、コンピュータプログラムのある場所から別の場所への転送を容易にする任意の媒体を含む通信媒体との両方を含む。記憶媒体は、コンピュータがアクセスできる任意の利用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROM又は他の光ディスク記憶装置、磁気ディスク記憶装置又は他の磁気記憶装置、又は所望のプログラムコードを命令又はデータ構造の形式で搬送又は格納するように使用でき、コンピュータによってアクセスできる他の任意の媒体を含むことができる。本明細書で使用されるディスク(disk)及びディスク(disc)には、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル多用途ディスク(DVD)、フロッピーディスク及びBlu-ray(登録商標)ディスクが含まれ、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は通常、レーザーを使用してデータを光学的に再生する。上記の組み合わせも、コンピュータ可読媒体の範囲に含める必要がある。
【0067】
本開示の実施態様は、その例に関連して説明してきたが、本明細書の範囲から逸脱することなく、上記の実施態様の変形及び修正を行うことができることが当業者によって理解されよう。他の実施態様は、本明細書に開示された例による仕様の検討又は実践から当業者には明らかになろう。