(57)【要約】  本明細書で説明する例は、概して、クライアント装置でビデオゲームをストリーミングするためのシステム及び方法に関する。クライアント装置は、ビデオゲーム制御をストリーミングサーバに送信することができる。クライアント装置は、ストリーミングサーバからのビデオゲーム制御に応答して生成されたビデオ画像を符号化するビデオストリームを受信することができる。クライアント装置は、フレームに表示するビデオストリームのビデオ画像が、フレームを表示する前の指定時間に完全に受信されていないと判定する場合がある。クライアント装置は、ビデオ画像の履歴及びビデオストリームの動きベクトルに基づいて画像変換を決定することができる。クライアント装置は、画像変換を、以前のフレームに対応する１つ又は複数の画像の一部に適用することができる。クライアント装置は、変換された画像の一部を含む代替ビデオ画像をフレームに表示することができる。
2021525034.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ装置であって、当該コンピュータ装置は、
データ及び命令を格納するメモリと、
該メモリと通信する中央処理装置と、
通信ネットワークと通信可能に結合されたネットワークインターフェイスと、
前記メモリ、前記中央処理装置、及び前記ネットワークインターフェイスと通信するクライアントアプリケーション及びディスプレイ制御コンポーネントと、を含み、
該クライアントアプリケーション及びディスプレイ制御コンポーネントは、
前記ネットワークインターフェイスを介してビデオゲーム制御をストリーミングサーバに送信し、
前記ネットワークインターフェイスを介した前記ストリーミングサーバからの前記ビデオゲーム制御に応答して生成されたビデオ画像を符号化するビデオストリームを受信し、
前記ビデオ画像に対する仮想カメラの位置を示すカメラマトリックスを維持し、
フレームに表示する前記ビデオストリームのビデオ画像が、前記フレームを表示する前の指定時間に完全に受信されていないと判定し、
少なくとも前記ビデオ画像の履歴、前記ビデオストリームの動きベクトル、及び前記カメラマトリックスに基づいて画像変換を決定し、
前記画像変換を、１つ又は複数の以前のフレームに対応する１つ又は複数の画像の少なくとも一部に適用して、代替ビデオ画像を生成し、及び
前記フレームに表示する前記ビデオ画像が前記指定時間に完全に受信されなかったとの判定に応じて、前記変換された画像の少なくとも一部を含む前記代替ビデオ画像を前記フレームに表示するように動作可能である、
コンピュータ装置。
【請求項２】
前記ディスプレイ制御コンポーネントは、前記ビデオストリームの前記符号化から前記動きベクトルを抽出するように構成される、請求項１に記載のコンピュータ装置。
【請求項３】
前記画像変換は、前記１つ又は複数の以前のフレームに対応する前記１つ又は複数の画像の前記一部の再投影であり、前記ディスプレイ制御コンポーネントは、前記１つ又は複数の以前のフレームに対応する前記１つ又は複数の画像のポイントの深度値を決定するように構成され、前記再投影は前記深度値に基づく、請求項１に記載のコンピュータ装置。
【請求項４】
前記ディスプレイ制御コンポーネントは、ビデオゲームのために訓練された機械学習モデルを、前記１つ又は複数の以前のフレームに対応する前記１つ又は複数の画像に適用して、前記深度値を決定するように構成される、請求項３に記載のコンピュータ装置。
【請求項５】
前記ディスプレイ制御コンポーネントは、機械学習モデルを適用して、前記１つ又は複数の以前のフレームに対応する前記１つ又は複数の画像に対してセグメント化を実行し、且つ前記動きベクトルを識別された画像セグメントに適用するように構成される、請求項１に記載のコンピュータ装置。
【請求項６】
前記クライアントアプリケーションは、前記ストリーミングサーバから深度情報を受信するように構成される、請求項１に記載のコンピュータ装置。
【請求項７】
前記クライアントアプリケーションは、前記ストリーミングサーバから更新されたカメラマトリックスを定期的に受信するように構成される、請求項１に記載のコンピュータ装置。
【請求項８】
前記クライアントアプリケーションは、前記ストリーミングサーバから前記ビデオ画像に対応する幾何学的表現を受信するように構成される、請求項１に記載のコンピュータ装置。
【請求項９】
コンピュータ装置上でストリーミングビデオゲームをプレイするための方法であって、当該方法は、
ビデオゲーム制御コマンドをストリーミングサーバに送信するステップと、
ビデオゲーム制御に応答して生成されたビデオ画像を符号化するビデオストリームを前記ストリーミングサーバから受信するステップと、
フレームに表示する前記ビデオストリームのビデオ画像が、前記フレームを表示する前の指定時間に完全に受信されていないと判定するステップと、
少なくとも前記ビデオ画像の履歴及び前記ビデオストリームの動きベクトルに基づいて画像変換を決定するステップであって、該画像変換を決定するステップは、前記ビデオ画像に対する仮想カメラの位置を示すカメラマトリックスを維持するステップを含み、前記画像変換はカメラマトリックスに基づく、決定するステップと、
前記画像変換を、１つ又は複数の以前のフレームに対応する１つ又は複数の画像の少なくとも一部に適用して、代替ビデオ画像を生成するステップと、
前記フレームに表示する前記ビデオ画像が前記指定時間に完全に受信されなかったとの判定に応じて、前記変換された以前に表示された画像の少なくとも一部を含む前記代替ビデオ画像を前記フレームに表示するステップと、を含む、
方法。
【請求項１０】
前記画像変換を決定するステップは、前記ビデオストリームの前記符号化から前記動きベクトルを抽出するステップを含む、請求項９に記載の方法。
【請求項１１】
前記画像変換を決定するステップは、前記１つ又は複数の以前のフレームに対応する前記１つ又は複数の画像のポイントの深度値を決定するステップを含み、前記画像変換は、前記深度値に基づいて、前記１つ又は複数の以前のフレームに対応する前記１つ又は複数の画像の一部の再投影である、請求項９に記載の方法。
【請求項１２】
前記深度値を決定するステップは、ビデオゲームのために訓練された機械学習モデルを、前記１つ又は複数の以前のフレームに対応する前記１つ又は複数の画像に適用して、前記深度値を決定するステップを含む、請求項１１に記載の方法。
【請求項１３】
前記カメラマトリックスを維持するステップは、前記ストリーミングサーバから更新されたカメラマトリックスを定期的に受信するステップを含む、請求項１１に記載の方法。
【請求項１４】
前記画像変換を決定するステップは、
前記ストリーミングサーバから前記ビデオ画像に対応する幾何学的表現を受信するステップと、
深度値を決定するために前記幾何学的表現をレンダリングするステップと、を含む、請求項１１に記載の方法。
【請求項１５】
コンピューティング装置上でストリーミングビデオゲームをプレイするための、１つ又は複数のプロセッサによって実行可能なコードを含むコンピュータ可読媒体であって、前記コードには、
ビデオゲーム制御をストリーミングサーバに送信すること、
前記ビデオゲーム制御に応答して生成されたビデオ画像を符号化するビデオストリームを前記ストリーミングサーバから受信すること、
フレームに表示する前記ビデオストリームのビデオ画像が、前記フレームを表示する前の指定時間に完全に受信されていないと判定すること、
１つ又は複数の以前のフレームに対応する前記ビデオストリームの１つ又は複数の画像、及び前記１つ又は複数の以前のフレームのカメラ変換行列に基づいて選択された動きベクトルに基づいて画像再投影を決定すること、
該画像再投影を、１つ又は複数の以前のフレームに対応する前記ビデオストリームの前記１つ又は複数の画像の少なくとも一部に適用して、代替ビデオ画像を生成すること、及び
前記フレームに表示する前記ビデオ画像が前記指定時間に完全に受信されなかったとの判定に応じて、前記再投影された画像の少なくとも一部を含む前記代替ビデオ画像を前記フレームに表示すること、を行うためのコードが含まれる、
コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ストリーミングビデオゲーム、より具体的には、ストリーミングビデオゲームにおける遅延の軽減に関する。
【背景技術】
【０００２】
ストリーミングビデオゲームは、クライアント装置がネットワークを介してゲームを実行しているサーバに制御コマンドを提供し、サーバが制御コマンドに反応してビデオストリームを生成し、このビデオストリームがネットワークを介してクライアント装置に送信され、クライアント装置の画面に表示されるビデオゲームとして規定され得る。ストリーミングビデオゲームは、サーバが何らかの処理を実行している場合でも、クライアント装置がユーザに提示されるビデオ画像をレンダリングする従来の多くのビデオゲームとは異なり得る。例えば、マルチプレーヤーゲームでは、サーバはプレーヤー同士の間の相互作用を計算できるが、サーバは、典型的に、ビデオ画像をレンダリングするために、シーン情報をクライアント装置に送信する。ストリーミングビデオゲームは、ゲーム処理を一元化し、クライアント装置でゲームを実行する場合と比較して、より薄く、より複雑でないクライアント装置とより複雑でないクライアントソフトウェアとを可能にするという利点を提供し得る。例えば、ストリーミングビデオゲームは、専用のグラフィック処理カードがないモバイル装置に適している場合がある。
【０００３】
ストリーミングビデオゲームは、ビデオをストリーミングするために使用される通信ネットワークの遅延及び遅延変動（ジッター）に関して困難に直面する可能性がある。つまり、クライアント装置は、ネットワーク遅延のために、意図した時間にビデオパケットを受信できない可能性がある。ビデオパケットを受信する実際の時間は、ジッターのために予測が難しい場合がある。特に、ワイヤレスネットワークは、ビデオをストリーミングするのに十分な帯域幅を提供しているが、同様の帯域幅を有する有線ネットワークと比較して、遅延及びジッターの影響を大きく受ける可能性がある。
【０００４】
従来のストリーミングビデオ（例えば、映画）とは異なり、ビデオはユーザ入力に基づいているため、ストリーミングビデオゲームにはバッファリングが向いていない可能性があり、そのため、将来のフレームで提示するビデオ画像は事前に利用できない。さらに、クライアント装置が並列ゲームエンジンを実行する従来のマルチプレーヤーゲームとは異なり、ストリーミングゲームのためのクライアント装置には、現在のゲーム状態に関する情報がない場合がある。従って、表示するための新しいビデオ画像が受信されていない場合に、クライアント装置はフリーズする可能性がある。
【０００５】
こうして、当技術分野では、コンピュータ装置上でのビデオゲームストリーミングのためのグラフィック処理を改善する必要がある。
【発明の概要】
【０００６】
以下は、そのような実施態様の基本的な理解を与えるために、本開示の１つ又は複数の実施態様の簡略化された概要を提示する。この概要は、想定される全ての実施多様の広範な概要ではなく、全ての実施態様の基本的な要素又は重要な要素を特定したり、一部又は全ての実施態様の範囲を説明したりすることを目的とするものではない。その唯一の目的は、後で提示するより詳細な説明の前置きとして、本開示の１つ又は複数の実施態様のいくつかの概念を簡略化された形で提示することである。
【０００７】
１つ例示的な実施態様は、ストリーミングビデオゲームをプレイするためのコンピュータ装置に関する。コンピュータ装置は、データ及び命令を格納するメモリ、メモリと通信する中央処理装置、通信ネットワークと通信可能に結合されたネットワークインターフェイス、クライアントアプリケーション、及びディスプレイ制御コンポーネントを含み得る。コンピュータ装置は、ネットワークインターフェイスを介してビデオゲーム制御をストリーミングサーバに送信するように動作可能であり得る。コンピュータ装置は、ネットワークインターフェイスを介したストリーミングサーバからのビデオゲーム制御に応答して生成されたビデオ画像を符号化するビデオストリームを受信するように動作可能であり得る。コンピュータ装置は、フレームに表示するビデオストリームのビデオ画像が、フレームに表示する前の指定時間に完全に受信されていないと判定するように動作可能であり得る。コンピュータ装置は、少なくともビデオ画像の履歴及びビデオストリームの動きベクトルに基づいて画像変換を決定するように動作可能であり得る。コンピュータ装置は、画像変換を、１つ又は複数の以前のフレームに対応する１つ又は複数の画像の少なくとも一部に適用して、代替ビデオ画像を生成するように動作可能であり得る。コンピュータ装置は、フレームに表示するビデオ画像が指定時間に完全に受信されなかったとの判定に応じて、変換された画像の少なくとも一部を含む代替ビデオ画像をフレームに表示するように動作可能であり得る。
【０００８】
別の例示的な実施態様は、コンピュータ装置上でストリーミングビデオゲームをプレイするための方法に関する。この方法は、ビデオゲーム制御コマンドをストリーミングサーバに送信するステップを含み得る。この方法は、ビデオゲーム制御に応答して生成されたビデオ画像を符号化するビデオストリームをストリーミングサーバから受信するステップを含み得る。この方法は、フレームに表示するビデオストリームのビデオ画像が、フレームに表示する前の指定時間に完全に受信されていないと判定するステップを含み得る。この方法は、少なくともビデオ画像の履歴及びビデオストリームの動きベクトルに基づいて画像変換を決定するステップを含み得る。この方法は、画像変換を、１つ又は複数の以前のフレームに対応する１つ又は複数の画像の少なくとも一部に適用して、代替ビデオ画像を生成するステップを含み得る。この方法は、フレームに表示するビデオ画像が指定時間に完全に受信されなかったとの判定に応じて、変換された以前に表示された画像の少なくとも一部を含む代替ビデオ画像をフレームに表示するステップを含み得る。
【０００９】
別の例示的な実施態様は、コンピューティング装置上でストリーミングビデオゲームをプレイするための、１つ又は複数のプロセッサによって実行可能なコードを含むコンピュータ可読媒体に関する。コンピュータ可読媒体は、ビデオゲーム制御をストリーミングサーバに送信するためのコードを含み得る。コンピュータ可読媒体は、ビデオゲーム制御に応答して生成されたビデオ画像を符号化するビデオストリームをストリーミングサーバから受信するためのコードを含み得る。コンピュータ可読媒体は、フレームに表示するビデオストリームのビデオ画像が、フレームに表示する前の指定時間に完全に受信されていないと判定するためのコードを含み得る。コンピュータ可読媒体は、少なくとも以前のフレームに対応するビデオストリームの画像、及び以前のフレームのカメラ変換行列に基づいて選択する動きベクトルに基づいて画像再投影を決定するためのコードを含み得る。コンピュータ可読媒体は、画像再投影を、１つ又は複数の以前のフレームに対応するビデオストリームの１つ又は複数の画像の少なくとも一部に適用して、代替ビデオ画像を生成するためのコードを含み得る。コンピュータ可読媒体は、フレームに表示するビデオ画像が指定時間に完全に受信されなかったとの判定に応じて、再投影された画像の少なくとも一部を含む代替ビデオ画像をフレームに表示するためのコードを含み得る。
【００１０】
本開示の実施態様に関連する追加の利点及び新規な特徴は、部分的には以下の説明に記載され、部分的には、以下の説明を検討するか、又は実践によって学習することにより当業者に明らかになるであろう。
【図面の簡単な説明】
【００１１】
【図１】本開示の実施態様による、ストリーミングビデオゲームをプレイするための例示的なシステムの概略ブロック図である。
【図２】本開示の実施態様による、ストリーミングビデオゲームをプレイするためのプロセス及び通信を示す図である。
【図３】本開示の実施態様による、代替ビデオフレームを含むストリーミングビデオゲームのビデオストリームの例である。
【図４】本開示の実施態様による、ストリーミングビデオゲームをプレイするための方法のフローチャートである。
【図５】本開示の実施態様による例示的なコンピュータ装置の概略ブロック図である。
【発明を実施するための形態】
【００１２】
本開示は、ビデオゲームをストリーミングするためのシステム及び方法を提供する。本明細書で使用される場合に、ストリーミングビデオゲームという用語は、ストリーミングサーバが、ビデオゲームを実行し、画像を生成し、画像を符号化（encoding）するビデオストリームをストリーミングクライアント装置に送信する構成を指す。ストリーミングサーバは、ストリーミングクライアント装置のレンダリングプロセスを実行することによって画像を生成することができる。ただし、ストリーミングサーバは、生成された画像を実際には画面又はモニタに表示しない場合がある。代わりに、ストリーミングサーバは画像をビデオストリームとして符号化する場合がある。ビデオストリームは、ビデオフレームに対応する画像を符号化することができる。フレームは、画像を表示するための連続した期間であり得る。符号化は、各フレームに対応する画像を示す画像及び／又は変更情報（例えば、動きベクトル）を含み得る。ネットワーク通信の場合に、符号化されたビデオストリームは複数のビデオパケットに分割され、各ビデオパケットにはビデオストリームの一部が含まれる。ビデオパケットは、転送中に失われたり、順序が狂って到着したり、又はビデオパケットが到着したときに対応するフレームを表示する時間が徒過するように遅延したりする可能性がある。
【００１３】
実施態様では、例えば、本開示は、ストリーミングクライアント装置でのユーザの体験に対するネットワーク遅延の影響を低減するためのシステム及び方法を提供する。特に、本開示は、ストリーミングクライアント装置が、フレームに対応する画像をストリーミングクライアント装置のディスプレイに提示するのに間に合うようにビデオパケットを受信していないという問題に対処する。本開示は、１つ又は複数のビデオパケットが時間内に受信されない場合に、生成された画像の履歴及びビデオストリームの動きベクトルに基づいて代替画像が生成される推測航法（dead reckoning）アプローチを提供する。
【００１４】
ストリーミングクライアント装置は、ビデオフレームを表示するためのビデオデータの少なくとも一部（例えば、１つ又は複数のビデオパケット）が、ビデオフレームを表示する前の時点で受信されていないと判定することができる。ストリーミングクライアント装置は、ビデオフレームの履歴及びビデオストリームの動きベクトルに基づいて画像変換を決定することができる。ストリーミングクライアントは、画像変換を、１つ又は複数の以前のフレームの少なくとも一部に適用して、代替ビデオフレームを生成することができる。ビデオデータが表示時間に到着していない場合に、ストリーミングクライアントは、受信していないビデオフレームの代わりに代替ビデオフレームを表示することができる。従って、新しいビデオフレームが利用できないときにディスプレイ上の画像をフリーズする代わりに、ストリーミングクライアントは、欠落しているビデオフレームが代替画像としてどのように見えるかを予測することができる。予測した代替画像が欠落している画像の正確な複製である可能性は低いが、代替画像はビデオフレームを埋めて動きを滑らかにすることにより、ユーザ体験を向上させることができる。ストリーミングクライアントが現在のビデオパケットを受信すると、ストリーミングクライアントは、現在のビデオパケットに基づいて、サーバからのビデオストリームを正しいフレームで表示することができる。
【００１５】
画像変換の決定は、ビデオゲームクライアントアプリケーションの支援の有無にかかわらず、ストリーミング装置のオペレーティングシステムによって実行され得る。ビデオゲームクライアントアプリケーションの支援なしに、オペレーティングシステムは、ビデオストリームを解析して画像変換を決定することができる。例えば、ビデオストリームは、画像、及び／又は、画像同士の間の特定のピクセルの変換を示す動きベクトルを含むように符号化され得る。オペレーティングシステムは、画像を解析してオブジェクトを識別し、オブジェクトの深度を推定することができる。次に、オペレーティングシステムは、以前のフレームの画像からの動きベクトルを、未受信の画像に対応する現在のフレームに外挿して、画像変換を決定することができる。
【００１６】
ビデオゲームクライアントアプリケーション及び／又はストリーミングサーバの支援により、オペレーティングシステムは、画像に関する既知の情報を使用して画像変換を改善することができる。例えば、ビデオゲームは、仮想カメラの姿勢（pose）及びこの姿勢の変化を示すカメラマトリックスを提供し得る。カメラ姿勢がビデオフレーム同士の間の主要な動きの原因となる可能性があるため、カメラマトリックスを使用して画像変換をより正確に予測することができる。別の例として、ビデオゲームは、ビデオゲーム画像の幾何学的形状に関するいくつかの情報を提供し得る。例えば、ビデオゲームはオブジェクトの位置を特定することができる。オペレーティングシステムは、オブジェクトテクスチャをキャッシュし、画像変換後にキャッシュされたテクスチャをオブジェクトに適用することができる。
【００１７】
ここで図１を参照すると、例示的なコンピュータシステム１００は、ディスプレイ１１６上に提示するためのビデオ画像を対応するビデオフレームに提供するコンピュータ装置１１０と、ビデオゲームをコンピュータ装置１１０にストリーミングするストリーミングサーバ１６０とを含み得る。ストリーミングサーバ１６０は、１人又は複数のユーザからの様々な入力（例えば、制御コマンド１５８）を処理し、ゲーム状態を更新するゲームエンジン１６２を含み得る。ゲーム状態は、環境、キャラクター、オブジェクト、又はそれらのプロパティ等、ビデオゲームの任意の特徴の状態を指し得る。ストリーミングサーバ１６０は、コンピュータ装置１１０のためにビデオストリーム１６６を生成及び符号化するビデオエンコーダ１６４も含み得る。ビデオストリーム１６６は、例えば、ユーザのキャラクター視点に基づく、又はユーザのゲーム状態の該当する要素を伝える情報を含む、特定のユーザのために生成された画像を符号化し得る。ストリーミングサーバ１６０は、例えば、１つ又は複数のハードウェアコンピュータサーバとして、又はクラウドサービスによって提供される１つ又は複数の仮想サーバとして実装することができる。
【００１８】
コンピュータ装置１１０は、ビデオゲームをストリーミングするためにネットワークに接続可能であり得る任意のモバイル装置又は固定コンピュータ装置を含み得る。コンピュータ装置１１０は、例えば、デスクトップ又はラップトップ又はタブレットコンピュータ、携帯電話、ゲームコンソール／装置、混合現実又は仮想現実装置、音楽装置、テレビ、ナビゲーションシステム、カメラ、携帯情報端末（ＰＤＡ）、又はハンドヘルド装置等のコンピュータ装置であり得、或いは１つ又は複数の他の装置との有線及び／又は無線接続機能を有する他のコンピュータ装置であり得る。
【００１９】
コンピュータ装置１１０は、メモリ１１２と、コンピュータ装置１１０の動作を制御するように構成されたＣＰＵ１１４とを含み得る。メモリ１１２は、オペレーティングシステム１４０及び／又はクライアントアプリケーション１５０を規定及び／又は関連付けるデータ及び／又はコンピュータ実行可能命令を格納するように構成され得る。ＣＰＵ１１４は、オペレーティングシステム１４０及び／又はクライアントアプリケーション１５０を実行することができ、これは、ストリーミングゲームクライアントアプリケーションであり得る。メモリ１１２の例は、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、テープ、磁気ディスク、光ディスク、揮発性メモリ、不揮発性メモリ、及びそれらの任意の組合せ等の、コンピュータによって使用可能なメモリのタイプを含むことができるが、これらに限定されない。メモリ１１２は、ＣＰＵ１１４によって実行されているアプリケーションのローカルバージョンを格納することができる。
【００２０】
ＣＰＵ１１４は、命令を実行するための１つ又は複数のプロセッサを含み得る。ＣＰＵ１１４の例は、コントローラ、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、システムオンチップ（ＳＯＣ）を含む、本明細書に記載されるように特別にプログラムされた任意のプロセッサ、又は他のプログラマブルロジック、又はステートマシンを含むことができるが、これらに限定されない。ＣＰＵ１１４は、算術論理演算装置（ＡＬＵ）、レジスタ、及び制御ユニット等の他の処理コンポーネントを含み得る。
【００２１】
ディスプレイ１１６は、コンピュータ装置１１０のＣＰＵ１１４及びグラフィック処理装置ト（ＧＰＵ）１２０と通信するビデオポート１２２に接続され得る。画像処理は、ＣＰＵ１１４とＧＰＵ１２０との間で、画像変換の決定及び適用を提供する方法で分割され得る。例えば、ＣＰＵ１１４は、画像変換をいつ適用するかを決定することができ、ＧＰＵ１２０は、画像変換を、１つ又は複数の以前の画像の各ピクセルに適用することができる。
【００２２】
コンピュータ装置１１０は、ユーザからの入力を受け取るための入力装置１１８も含み得る。入力装置１１８は、例えば、マウス、キーボード、タッチスクリーン、タッチパッド、ボタン、ゲームコントローラ、デジタルペン、ヘッドマウントディスプレイ、ウェアラブル装置、又は入力を提供する他の装置を含み得る。
【００２３】
コンピュータ装置１１０は、ＣＰＵ１１４及び／又はＧＰＵ１２０と統合されたビデオポート１２２も含み得る。ビデオポート１２２は、例えば、ＶＧＡ、ＤＶＩ、ＨＤＭＩ（登録商標）、又はディスプレイポート出力であり得る。ビデオポート１２２は、ディスプレイ１１６によって利用され得るビデオ信号を提供することができ、このディスプレイ１１６は、モニタ又は仮想現実ヘッドマウントディスプレイ（ＨＭＤ）を含み得る。例えば、ビデオポート１２２は、ＧＰＵメモリ１２６内のビデオバッファを定期的にスキャンアウト（scan out）することができる。ＣＰＵ１１４、ＧＰＵ１２０、及びビデオポート１２２は、コンピュータ装置１１０のための汎用グラフィック処理操作を実行することができる。
【００２４】
コンピュータ装置１１０は、任意の有線又は無線ネットワークインターフェイス（例えば、イーサネット又はＷｉ−Ｆｉ（登録商標））を含み得るネットワークインターフェイス１２４も含み得る。別の例として、コンピュータ装置１１０は、オプションで、ユニバーサルシリアルバス（ＵＳＢ）インターフェイスを含み得る。コンピュータ装置１１０のネットワークインターフェイス１２４は、ネットワーク１７０を介してストリーミングサーバ１６０の対応するネットワークインターフェイスに接続され得る。ネットワーク１７０は、パケットを送信する通信ネットワークであり得る。例えば、ネットワーク１７０は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、又はインターネットであり得る。ネットワーク１７０は、インターネットプロトコル（ＩＰ）を含む様々なプロトコルを利用することができる。従って、コンピュータ装置１１０は、ネットワーク１７０を介してストリーミングサーバ１６０との間でデータ（例えば、データパケット）を送受信することができる。
【００２５】
ネットワーク１７０は、通信の遅延に寄与する可能性がある。ストリーミングビデオゲームの文脈における遅延は、ユーザが入力を行ってからユーザが画面（例えば、ディスプレイ１１６）上で更新された画像を見るまでの期間を指し得る。遅延が長いと、ゲームがプレイできなくなる可能性がある。ストリーミング状況での遅延には、ネットワーク遅延、レンダリング時間、画像符号化時間等を含む多くの要素が含まれ、１００ミリ秒以上になる場合がある。ネットワーク通信の別の特性は、ジッターである。ジッターは、遅延の変動性を測定する。ストリーミングビデオゲームのプレーヤーの観点からは、ジッターは、入力に対する不均一な反応として現れ、不快なゲーム体験をもたらす可能性がある。一般に、Ｗｉ−Ｆｉ（登録商標）及びモバイルネットワーク等の無線ネットワークは、有線ネットワークと比較してジッターが高くなる。帯域幅は、クライアント（例えば、コンピュータ装置１１０）とサーバ（例えば、ストリーミングサーバ１６０）との間で平均して１秒あたりにどれ位のデータの量を送信できるかを指し得る。帯域幅は非対称であり得、通常、クライアントからサーバへの帯域幅は反対方向よりもはるかに低くなる。ネットワークストリーミングには、通常、ユーザデータグラムプロトコル（ＵＤＰ）等の不可逆（lossy）ネットワークプロトコルが使用される。これは、トランスポート制御プロトコル（ＴＣＰ）等のエラーチェック及び修正を伴うプロトコルでは、遅延の保証が劣るためである。ＵＤＰのようなプロトコルを使用すると、送信中にいくつかのパケットが失われる可能性がある。
【００２６】
オペレーティングシステム１４０は、メモリ１１２に格納され、且つＣＰＵ１１４によって実行される命令（クライアントアプリケーション１５０等）を含み得る。オペレーティングシステム１４０は、ＧＰＵ１２０を制御するためのディスプレイコントローラ１４２を含み得る。例えば、ディスプレイコントローラ１４２は、ソース画像のレンダリング又は調整の実行等の１つ又は複数の特定のグラフィック処理操作を実行するために、制御コマンドをＧＰＵ１２０に提供することができる。ディスプレイコントローラ１４２は、ビデオストリーム１６６を受信及び復号化（decoding）するためのストリーミングエンジン１４４、ビデオストリーム１６６の遅延を検出するための遅延モジュール１４６、及び現在のビデオフレームを受信していない場合に、１つ又は複数の以前のビデオフレームの１つ又は複数の画像に適用される画像調整を生成するための再投影モジュール１４８を含み得る。
【００２７】
コンピュータ装置１１０は、メモリ１１２に格納され、且つＣＰＵ１１４によって実行される命令を含むクライアントアプリケーション１５０も含み得る。アプリケーション１５０は、例えば、ストリーミングサーバ１６０と通信するストリーミングビデオゲームクライアントアプリケーションであり得る。例えば、アプリケーション１５０は、ユーザからのユーザ入力を受け取り、且つ制御コマンド１５８をストリーミングサーバ１６０に送信する制御コンポーネント１５２を含み得る。実施態様では、アプリケーション１５０は、ビデオゲームに関するいくつかの状態情報も維持し得る。例えば、アプリケーション１５０は、カメラの姿勢を示すカメラマトリックス１５４を維持することができる。アプリケーション１５０は、ストリーミングサーバ１６０から受信したサーバカメラマトリックスに基づいてカメラマトリックス１５４を更新することができる。さらに、実施態様では、アプリケーション１５０は、ビデオフレームでレンダリングされ得る１つ又は複数のオブジェクトの幾何学的形状を示すジオメトリ（geometry）１５６を含み得る。いくつかの実施態様では、アプリケーション１５０は、画像変換を決定するために、カメラマトリックス１５４及び／又はジオメトリ１５６を再投影モジュール１４８に提供することができる。
【００２８】
ここで図２を参照すると、図２００は、コンピュータ装置１１０及びストリーミングサーバ１６０での処理及び通信のタイミングの例を示している。２０２において、コンピュータ装置１１０（例えば、ＧＰＵ１２０及びディスプレイ１１６）は、以前の画像を表示することができる。以前の画像は、ビデオストリームの以前のフレームに対応し得る。以前の画像は、例えば、ストリーミングサーバから受信したビデオ情報に基づき得る。以下でさらに詳細に説明するように、以前の画像は、別のビデオフレームに適用された画像変換に基づくこともできる。いずれの場合も、以前の画像は、例えば、以前のフレームでディスプレイ１１６に表示された画像を指し得る。さらに、フレームに表示される画像のビデオパケットが遅れて到着する場合がある。画像の到着が遅過ぎて正しいフレームに表示できない場合でも、画像は画像変換に使用され、以前のフレームに対応する画像と呼ばれることがある。
【００２９】
２０４において、コンピュータ装置１１０（例えば、制御コンポーネント１５２）は、ユーザからビデオゲームを制御するためのユーザ入力を受け取ることができる。例えば、入力は、入力装置１１８（例えば、マウス、キーボード、タッチスクリーン、コントローラ、又はユーザの相互作用を可能にする他の装置）を介して提供され得る。２０６において、制御コンポーネント１５２は、ユーザ入力を制御コマンド１５８としてストリーミングサーバ１６０に渡すことができる。制御コマンド１５８は、生の入力（例えば、マウスの動き及びボタンの押下）であり得、又は制御コンポーネント１５２は、入力のいくつかの処理を実行し得る。例えば、制御コンポーネント１５２は、マウスの動き又はボタンの押下をゲームコマンドに変換することができる。すなわち、生の入力データを送信する代わりに、制御コンポーネント１５２は、キャラクターを前進させるか、又は能力をアクティブにするコマンド等のゲームコマンドを送信することができる。従って、制御コマンド１５８は、生の入力コマンド及びゲームコマンドの一方又は両方を含み得る。
【００３０】
２０８において、ストリーミングサーバ１６０は、ゲーム状態の更新を実行することができる。ゲーム状態の更新は、ゲームエンジン１６２によって実行される任意のコマンドを含み得る。例えば、ゲーム状態の更新は、１人又は複数のユーザ、環境、及びオブジェクトの間の相互作用を含み得る。ゲーム状態の更新は、制御コマンド１５８に基づき得る。
【００３１】
２１０において、ストリーミングサーバ１６０は、各ユーザのためにビデオレンダリングを実行することができる。ストリーミングサーバ１６０は、ユーザのカメラビューに基づいて画像を生成することができる。例えば、カメラビューには、環境と、ユーザのキャラクターが表示できるオブジェクトが含まれる場合がある。ストリーミングサーバ１６０は、必ずしもストリーミングサーバ１６０で生成された画像を表示することができるとは限らない。ストリーミングサーバ１６０は、メモリ内に画像を生成することができる。
【００３２】
２１２において、ストリーミングサーバ１６０は、レンダリングされたビデオ画像のビデオ符号化を実行することができる。送信するビデオのサイズを縮小するための様々なビデオ符号化技術が当技術分野で知られている。このようなビデオ符号化は、ゲームで使用されるネットワーク帯域幅を削減するようにビデオゲームをストリーミングするために重要である。ビデオ符号化技術は、符号化された画像を再生成するために復号化され得る様々な記述的データを生成し得る。例えば、ビデオ符号化は、ピクセル又はオブジェクトのグループに関する動きベクトルを含み得る。
【００３３】
２１４において、コンピュータ装置１１０は、１つ又は複数の以前の画像に適用される画像調整を決定することができる。コンピュータ装置１１０は、ストリーミングサーバ１６０での処理と同時に画像調整を決定することができる。従って、コンピュータ装置１１０は、次のビデオフレームのパケットが２１６において到着することを意図しているそのときに利用可能な画像調整を有することができる。
【００３４】
２１８において、コンピュータ装置１１０は、次のビデオフレームのビデオパケットが受信されたかどうかを判定することができる。動作２１８は、次のビデオフレームを表示する前の指定時間に発生し得る。例えば、指定時間は、ビデオパケットの復号化及び／又は画像調整の実行を可能にする時間であり得る。全てのビデオパケットが指定時間に受信された場合に、コンピュータ装置１１０は、２２２において、受信したビデオパケットに基づいて画像を復号化することができる。ビデオパケットが指定時間までにタイムリーに受信されなかった場合に、２２０において、コンピュータ装置１１０は、決定された画像調整を、１つ又は複数の以前のフレームに関連付けられた１つ又は複数の画像に適用して、代替画像を生成することができる。実施態様では、動作２１８での決定は、動作２２０で画像を調整するか、又は動作２２２で画像を復号化する前に行うことができる。両方の動作２２０及び２２２が同じリソース（例えば、ＧＰＵ１２０及びメモリ１２６）を利用できるため、どの動作を実行するかを決定することにより、リソースを節約できる。代替実施態様では、動作２２０及び２２２の両方を実行して、２つの画像を生成することを試みることができる。復号化プロセスが不成功になった場合に（例えば、ビデオパケットがタイムリーに受信されなかったため）、代替画像が選択され得る。
【００３５】
２２４において、コンピュータ装置１１０は、ビデオパケットが指定時間までにタイムリーに受信されなかった場合には代替画像を表示し、又はビデオパケットがタイムリーに受信された場合には受信画像を表示することができる。従って、コンピュータ装置１１０は、ビデオパケットがタイムリーに受信されたかどうかに応じて、ストリーミングサーバによって生成された画像又は代替画像のいずれかを表示することができる。例えば、遅延が長い状況では、コンピュータ装置１１０は、代替画像を表示し得る。
【００３６】
ここで図３を参照すると、例示的なビデオストリーム３００は、ビデオフレーム３１０、３３０、及び３５０を含む。ビデオフレーム３１０及び３３０は、ストリーミングサーバ１６０によって生成されたストリーミングフレームであり得る。ビデオフレーム３５０は、対応するビデオフレームがストリーミングサーバ１６０から表示に間に合うように到着しない場合に、コンピュータ装置１１０によって生成された代替フレームであり得る。
【００３７】
一例として、ビデオフレーム３１０は、垂直な廊下と交差し、壁３１４−ａで終わる廊下３１２−ａの画像を含み得る。例えば、ビデオゲームは、ユーザが、廊下３１２−ａに沿って歩くキャラクターを制御することを可能にし得る。廊下３１２−ａは、左壁及び右壁によって規定され得る。右壁は窓３１６−ａを含み得、左壁は出入り口３１８−ａを含み得る。
【００３８】
ビデオフレーム３３０は、ビデオフレーム３１０に続く次のビデオフレームであり得る。例えば、ビデオフレーム３３０は、制御コマンド１５８によってキャラクターを前方に移動させる場合に生成され得る。ビデオフレーム３３０では、各オブジェクトの（例えば、ビデオフレーム３１０内の）以前の位置が破線で示されている。動きベクトル３３２、３３４、３３６は、動きの方向及び大きさを示す矢印として示されている。例えば、壁３１４−ｂは、動きベクトル３３２によって示されるようにビデオフレーム３３０内で下向きに移動し得、一方、窓３１６−ｂは、動きベクトル３３４によって示されるように下向き且つ右に移動し得、出入り口３１８−ｂは、動きベクトル３３６によって示されるように下向き且つ左に移動し得る。ビデオフレーム３３０内の壁３１４ｂ、窓３１６ｂ、及び出入り口３１８ｂのサイズもまた、カメラが各オブジェクトに近づくにつれて増大し得る。サイズ情報は、ビデオ符号化に含まれ得る。
【００３９】
ビデオフレーム３３０のビデオ符号化は、壁３１４−ｂ、窓３１６−ｂ、及び出入り口３１８−ｂのそれぞれをピクセルのグループとして識別し、対応する動きベクトル３３２を示すことができる。ビデオフレーム３１０及びビデオフレーム３３０において殆どのピクセルが同じであるので、ピクセルの移動グループ及び動きベクトルを提供することは、ビデオ符号化に有意な圧縮を提供し得る。
【００４０】
ビデオ符号化の動きベクトル３３２はまた、代替画像を生成するための画像変換を決定するために使用され得、ビデオパケットがストリーミングサーバ１６０からタイムリーに受信されない場合に、代替画像は、ビデオフレーム３５０として表示され得る。ビデオフレーム３５０は、動きベクトル３３２、３３４、３３６に基づく例示的な代替画像を示す。例えば、１つの実施態様では、画像変換は、動きベクトル３３２、３３４、３３６を、以前のフレーム内の同じオブジェクト又はピクセルのグループに適用することを含み得る。図示のように、ビデオフレーム３５０において、壁３１４−ｃはさらに下に移動され得、窓３１６−ｃはさらに下及び右に移動され得、出入り口３１８−ｃはさらに下及び左に移動され得る。画像変換後に画面スペースを超えて広がるピクセルは描画されない場合がある。例えば、下端を越えて延びる出入り口３１８の一部は表示されない場合がある。以前のビデオフレーム３３０からの動きベクトルを適用すると、領域３５２内の全てのピクセルが移動され、且つ新しい情報が受信されていないため、色情報のない領域３５２が生じる可能性もある。コンピュータ装置１１０は、隣接するピクセルのグループ（例えば、壁３１４−ｃ及び廊下３１２−ｃの左右の壁）に基づいて、領域３５２にどの色を使用するかを推測するために最善の努力を使用することができる。
【００４１】
図３は、ビデオフレームの履歴に基づく画像変換の一例を示しているが、他の技術を使用して、画像変換を決定することができる。例えば、カメラ変換及びピクセル毎の深度値が与えられると、ワールド空間のポイントを計算できる。各ポイントには、現在のカラーフレームから色を割り当てることができる。別のカメラ変換を指定すると、これらの色付きのポイントを画面スペースに投影できる。このタイプの画像変換は、再投影と呼ばれることがある。再投影は、例えば、位置情報又はカメラの姿勢の変化に従って画像を歪める（skewing）か、又は他に調整することを含み得る。例えば、コンピュータ装置１１０は、ピクセル毎の深度及び色、並びに以前のフレームからのカメラ変換行列を有し得、ビデオストリーム１６６内のパケットは失われる場合がある。失われたパケットは、コンピュータ装置１１０が現在データを有さない画面上のある領域に対応し得る。現在のフレームを変換させると、コンピュータ装置１１０は、再投影を使用して、欠落している領域を１つ又は複数の以前のフレームからの色で埋めることができる。カメラ変換を管理し、再投影を採用する利点の１つは、再投影により、カメラの動きに起因するフレーム内の全ての画像モーションを除外（factored out）し、姿勢モーションの単一の変化として表現できるため、符号化のみに依存しない場合に、シーン内の独立したモーションソースのみを管理、送信、処理等できることである。例えば、再投影では、動きベクトル３３２、３３４、３３６が、シーンの残りの部分が静的であるプレーヤー／カメラの動きに由来するので、エンコーダに関する図３に関して上記の動きベクトルは省略され得る。従って、他のシーン要素がプレーヤーとは無関係に廊下３１２内を移動していない限り、再投影はカメラ変換のみを使用することができる。再投影モジュール１４８は、カメラ変換及びピクセル毎の深度値をいくつかの方法で決定することができる。
【００４２】
深度再構成は、平坦な２Ｄ画像（例えば、ビデオフレーム３３０）から深度情報を再構成するプロセスである。単一の画像、画像とカメラの変換、ステレオ画像、一連の画像等から深度情報を再構築できるいくつかのアルゴリズムが、当技術分野で知られている。これは、画像処理及びロボット工学の研究で活発な分野であり、及び深度再構成に対する新しい人工知能ベースのアプローチが使用され得る。シーンの深度情報をキャッシュして、後続のフレームで再利用できる。深度情報はまた、再投影モジュール１４８が３Ｄシーンにおける深度の表現を維持するように、相互作用的に改良及び更新することができる。深度情報は、ボクセルとして表すことも、又はパラメトリック記述を使用することもできる。実施態様では、完全なフレームのカメラ変換行列は、複数のカラー画像フレームに亘る特徴観察の対応関係から推定及び改良され得る。さらに、フレーム全体に亘るカメラ変換行列の動きベクトルが決定され、後続のフレームのために外挿され得る。
【００４３】
いくつかの実施態様では、ストリーミングサーバ１６０は、クライアントアプリケーション１５０を介して画像変換を決定するための追加情報を提供することができる。例えば、ストリーミングサーバ１６０のゲームエンジン１６２は、カメラマトリックス１５４をアプリケーション１５０に報告し、それによってストリーミングサーバ１６０及びコンピュータ装置１１０は、カメラ変換についての最新の理解を有する。実施態様では、カメラマトリックス１５４は、４×４の浮動小数点行列であり得るが、帯域幅消費を大幅に増加させない場合がある。実施態様では、カメラマトリックス１５４を送信するための帯域幅が小さいので、ストリーミングサーバ１６０は、カメラマトリックス１５４の冗長送信をフレームの複数のパケットで行うことができる。従って、マトリックスを含むパケットのうちの１つが時間内に到着しない場合に、カメラマトリックス１５４は、フレーム内の別のパケットから回復され得る。実施態様では、アプリケーション１５０は、ゲームエンジン１６２と並行してカメラマトリックス１５４を更新することができる。例えば、いくつかのゲームでは、制御コマンド１５８は、カメラマトリックス１５４を直接制御することができる（例えば、制御コマンド１５８によって、仮想カメラを動かす。）。アプリケーション１５０は、ストリーミングサーバ１６０によって実行されるより複雑なゲーム状態の更新及びレンダリング操作を実行することなく、カメラマトリックス１５４を更新することができる。
【００４４】
カメラマトリックス１５４は、利用可能である場合に、ストリーミングエンジン１４４が良好な動きベクトルを選択するのを支援し得、また、ストリーミングサーバ１６０とコンピュータ装置１１０との両方においてより高い粒度で動きベクトルを生成するのに役立ち得る。カメラ変換を知っていると、また、背景シーンを移動するオブジェクトから分離するのに役立ち得る。すなわち、カメラマトリックス１５４を知ることにより、コンピュータ装置１１０上での深度バッファ再構成をよりロバストにすることができる。
【００４５】
ストリーミングサーバ１６０によって提供され得る追加情報の別の例は、深度情報である。再投影モジュール１４９は、深度再構成に依存する代わりに、ストリーミングサーバ１６０からの深度情報を使用することができ、又は深度情報を使用して、深度再構成を増強することができる。コンピュータ装置１１０でグラウンドトゥルース（ground truth：正解）深度情報を有することは、深度再構成の複雑さを軽減し得る。ただし、深度バッファ情報は、ピクセル毎の深度が送信される場合に、帯域幅の消費を大幅に増加させる可能性がある。深度バッファ情報の帯域幅を削減するための１つの手法は、カメラ位置の変更を考慮した後に、深度情報の変更のみを送信することである。上記のように、再投影はカメラの動きを除外するために使用できる。
【００４６】
ストリーミングサーバ１６０によって提供され得る追加情報の別の例は、ジオメトリ１５６である。オブジェクトのジオメトリは急速に変化する可能性が低いので、ジオメトリ１５６の送信はまれにしか実行されず、情報は圧縮又はパックされ得る。例えば、ジオメトリ１５６は、変化が殆どないビデオフレームとともに送信され得、その結果、パケットがより少なく及び／又はより小さくなる。クライアントアプリケーション１５０は、コンピュータ装置１１０に格納されたジオメトリ１５６も含み得る。例えば、クライアントアプリケーション１５０は、頻繁に使用されるオブジェクトに関するジオメトリ１５６を含み得る。
【００４７】
ストリーミングサーバ１６０によって提供され得る追加情報の別の例は、ビデオ符号化に含まれる動きベクトルを超える追加の動きベクトルを含む。例えば、動きベクトルは、粗い領域からピクセル毎又はサブサンプルの粒度までの様々なレベルの粒度で、フレームの空間画面スペース領域に提供され得る。ジオメトリ１５６が使用される別の実施態様では、シーンジオメトリの動きベクトルは、ストリーミングサーバ１６０によって提供され得る。
【００４８】
機械学習は、画像セグメント化のために再投影モジュール１４８によって使用されて、粗い動きベクトル情報の範囲を改善された範囲帰属を用いてさらに改良し、及び／又は深度再構成を改善し得る。例えば、深層畳み込みニューラルネットワーク等の機械学習モデルが画像分類を実行する場合がある。例えば、ニューラルネットワークは、ビデオストリームの画像に対してクラスタリングを実行して、同じ動きベクトルを経験するピクセルのグループを識別することができる。ピクセルのグループは、ピクセルの間の固定された深深度関係を有するオブジェクトを表すことができる。別の例では、機械学習分類器は、ゲームエンジン１６２によって生成されるセグメントの例を使用して訓練され得、そこでオブジェクトが識別される。再投影モジュール１４８は、粗い粒度（coarse-grained）の動きベクトル（例えば、ビデオエンコーダ１６４又はゲームエンジン１６２によって生成され、送信のためのネットワーク帯域幅バジェット（budget）によって制約され得る）を、クライアントコンピュータ装置１１０上で実行される細粒度（fine-grained）の画像セグメントと組み合わせることができる。
【００４９】
ここで図４を参照すると、例示的な方法４００は、ストリーミングビデオゲームを実行するためのコンピュータ装置１１０を提供し、そこで、ストリーミングサーバ１６０がビデオ画像を生成し、ビデオ画像をコンピュータ装置１１０にストリーミングする。例えば、方法４００は、ストリーミングされるビデオ画像を含むパケットがコンピュータ装置１１０での表示に間に合うように到着しない場合に、ストリーミングビデオゲームに対する遅延の影響を低減するために使用され得る。方法４００に示される動作は、時間的に重複する可能性がある。例えば、ある瞬間に、２つの動作が異なるコンポーネントによって実行される場合がある。動作の実行は、コンポーネントでインターリーブすることもできる。さらに、方法４００に示される動作は、図４に示される以外の順序で実行され得る。
【００５０】
４１０において、方法４００は、ビデオゲーム制御コマンドをストリーミングサーバに送信することを含み得る。例えば、コンピュータ装置１１０上で実行されているクライアントアプリケーション１５０は、制御コンポーネント１５２を実行して、ネットワークインターフェイス１２４を介して制御コマンド１５８をストリーミングサーバ１６０に送信することができる。
【００５１】
４２０において、方法４００は、ビデオゲーム制御に応答して生成されたビデオ画像を符号化するビデオストリームを受信することを含み得る。例えば、ディスプレイコントローラ１４２は、ストリーミングエンジン１４４を実行して、制御コマンド１５８に応答して生成されたビデオ画像を符号化するビデオストリーム１６６を受信することができる。ストリーミングエンジン１４４は、ネットワークインターフェイス１２４を介してストリーミングサーバ１６０からビデオストリーム１６６を受信することができる。
【００５２】
４３０において、方法４００は、フレームに表示するビデオストリームのビデオ画像が、フレームに表示する前の指定時間に完全に受信されていないと判定することを含み得る。例えば、ディスプレイコントローラ１４２は、遅延モジュール１４６を実行して、フレームに表示するビデオストリーム１６６のビデオ画像が、フレームに表示する前の指定時間に完全に受信されていないと判定することができる。例えば、指定時間に、遅延モジュール１４６は、フレームの全てのパケットが受信されたかどうかを判定し、パケットが欠落しているときにビデオ画像が完全に受信されなかったと判定することができる。
【００５３】
４４０において、方法４００は、少なくともビデオ画像の履歴及びビデオストリームの動きベクトルに基づいて画像変換を決定することを含み得る。例えば、再投影モジュール１４８は、少なくとも以前のフレームの履歴及びビデオストリームの動きベクトルに基づいて画像変換を決定することができる。実施態様では、画像変換は再投影であり得る。４４２において、動作４４０は、ビデオストリームのビデオ符号化から動きベクトルを抽出することを含み得る。例えば、再投影モジュール１４８は、ビデオストリーム１６６のビデオ符号化から動きベクトルを抽出することができる。４４４において、動作４４０は、１つ又は複数の以前のビデオフレームに対応する画像のポイントの深度値を決定することを含み得る。例えば、再投影モジュール１４８は、以前に表示した画像又は以前のフレームにおいて表示するには遅過ぎた、受信した画像のポイントの深度値を決定することができる。実施態様では、再投影モジュール１４８は、深度再構成アルゴリズムを実行することができる。別の実施態様では、４４８において、再投影モジュール１４８は、アプリケーション１５０を介してストリーミングサーバ１６０から深度情報を受信することができる。別の実施態様では、再投影モジュール１４８は、ビデオゲームのために訓練された機械学習モデルを画像に適用して、深度値を決定することができる。４４９において、動作４４０は、ビデオ画像に関して仮想カメラの位置を示すカメラマトリックスを維持することを含み得る。例えば、クライアントアプリケーション１５０は、ビデオ画像に対する仮想カメラの位置を示すカメラマトリックス１５４を維持することができる。
【００５４】
４５０において、方法４００は、画像変換を、１つ又は複数の以前のフレームに対応する画像の少なくとも一部に適用して、代替画像を生成することを含み得る。例えば、再投影モジュール１４８は、ＧＰＵ１２０を制御して、画像変換を、１つ又は複数の以前のフレームに対応する１つ又は複数の画像の少なくとも一部に適用することができる。再投影モジュール１４８は、画像変換と、画像変換が適用される１つ又は複数の以前に表示された画像の一部を含むコマンドをＧＰＵ１２０に送信することができる。ＧＰＵ１２０は、画像変換を、１つ又は複数の以前に表示された画像に対して実行することによって代替画像を生成することができる。４５２において、動作４５０は、以前のビデオフレームの深度値及びカメラ変換に基づいて、以前のビデオフレームの少なくとも一部を再投影することを含み得る。例えば、ＧＰＵ１２０は、以前のビデオフレームの深度値及びカメラマトリックス１５４に基づいて、以前のビデオフレーム３３０に対応する画像の少なくとも一部を再投影することができる。
【００５５】
４６０において、方法４００は、代替ビデオ画像をフレームに表示することを含み得、代替ビデオ画像は、変換された画像の少なくとも一部を含む。例えば、ディスプレイ１１６は、ビデオフレーム３３０の変換された画像の少なくとも一部を含むビデオフレーム３５０を表示することができる。ディスプレイ１１６は、ビデオポート１２２を介してＧＰＵ１２０からビデオ画像をスキャンアウトすることができる。
【００５６】
ここで図５を参照すると、図１と比較して追加の構成要素の詳細を含む、実施態様による例示的なコンピュータ装置１１０が示されている。一例では、コンピュータ装置１１０は、本明細書に記載の１つ又は複数の構成要素及び機能に関連する処理機能を実行するためのプロセッサ４８を含み得る。プロセッサ４８は、単一又は複数のプロセッサのセット又はマルチコアプロセッサを含むことができる。さらに、プロセッサ４８は、統合型処理システム及び／又は分散型処理システムとして実装することができる。実施態様では、例えば、プロセッサ４８は、ＣＰＵ１１４、及びＧＰＵ１２０を含み得る。一例では、コンピュータ装置１１０は、本明細書に記載の機能を実行するために、プロセッサ４８によって実行可能な命令を格納するメモリ５０を含み得る。実施態様では、例えば、メモリ５０は、メモリ１１２及び／又はメモリ１２６を含み得る。
【００５７】
さらに、コンピュータ装置１１０は、本明細書に記載されるように、ハードウェア、ソフトウェア、及びサービスを利用する１つ又は複数の当事者との通信を確立及び維持することを提供する通信コンポーネント５２を含み得る。通信コンポーネント５２は、コンピュータ装置１１０上のコンポーネント同士の間、並びにコンピュータ装置１１０と、通信ネットワークに亘って配置された装置及び／又はコンピュータ装置１１０にシリアル又はローカルに接続された装置等の外部装置との間の通信を搬送することができる。例えば、通信コンポーネント５２は、１つ又は複数のバスを含み得、さらに、外部装置とインターフェイスするように動作可能な、送信機及び受信機にそれぞれ関連する送信チェーンコンポーネント及び受信チェーンコンポーネントを含み得る。実施態様では、例えば、通信コンポーネント５２は、ネットワークインターフェイス１２４を含み得る。
【００５８】
さらに、コンピュータ装置１１０は、本明細書に記載の実施態様に関連して使用される情報、データベース、及びプログラムの大容量記憶を提供する、ハードウェア及び／又はソフトウェアの任意の適切な組合せであり得るデータストア５４を含み得る。例えば、データストア５４は、オペレーティングシステム１４０（図１）及び／又はアプリケーション１５０（図１）のためのデータリポジトリであり得る。
【００５９】
コンピュータ装置１１０は、コンピュータ装置１１０のユーザからの入力を受け取るように動作可能であり、さらにユーザに提示するための出力を生成するように動作可能なユーザインターフェイスコンポーネント５６も含み得る。ユーザインターフェイスコンポーネント５６は、キーボード、テンキー、マウス、タッチ感知ディスプレイ、ナビゲーションキー、ファンクションキー、マイク、音声認識コンポーネント、ユーザからの入力を受け取ることができる他の機構、又はそれらの任意の組合せを含むが、これらに限定されない１つ又は複数の入力装置を含み得る。さらに、ユーザインターフェイスコンポーネント５６は、ディスプレイ、スピーカ、触覚フィードバック機構、プリンタ、ユーザに出力を提示することができる任意の他の機構、又はそれらの任意の組合せを含むが、これらに限定されない１つ又は複数の出力装置を含み得る。
【００６０】
実施態様では、ユーザインターフェイスコンポーネント５６は、オペレーティングシステム１４０及び／又はアプリケーション１５０の動作に対応するメッセージを送信及び／又は受信することができる。さらに、プロセッサ４８は、オペレーティングシステム１４０及び／又はアプリケーション１５０を実行し、メモリ５０又はデータストア５４はそれらオペレーティングシステム１４０及び／又はアプリケーション１５０を格納することができる。
【００６１】
本願で使用される場合に、「コンポーネント」、「システム」等の用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、又は実行中のソフトウェア等のコンピュータ関連エンティティを含むことを意図しているが、これらに限定されない。例えば、コンポーネントは、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、プログラム、及び／又はコンピュータであり得るが、これらに限定されない。例として、コンピュータ装置上で実行されているアプリケーションとコンピュータ装置との両方をコンポーネントにすることができる。１つ又は複数のコンポーネントは、プロセス及び／又は実行スレッド内に存在することができ、コンポーネントは、１つのコンピュータにローカライズされ、及び／又は２つ以上のコンピュータに分散され得る。さらに、これらのコンポーネントは、様々なデータ構造が格納されている様々なコンピュータ可読媒体から実行できる。コンポーネントは、ローカルシステム、分散システム内の別のコンポーネントと相互作用する、及び／又は信号を介して他のシステムとインターネット等のネットワークを介して相互作用する１つのコンポーネントからのデータ等の、１つ又は複数のデータパケットを有する信号に従って等、ローカル及び／又はリモートプロセスを介して通信することができる。
【００６２】
さらに、「又は」という用語は、排他的な「又は」ではなく、包括的な「又は」を意味することを意図している。つまり、特に明記されていない限り、又は文脈から明らかでない限り、「ＸはＡ又はＢを使用する」という句は、自然な包括的順列のいずれかを意味することを意図している。つまり、「ＸはＡ又はＢを使用する」という句は、ＸはＡを使用する、ＸはＢを使用する、又はＸはＡとＢとの両方を使用する、のいずれの場合も満たす。さらに、本願及び添付の特許請求の範囲で使用される冠詞「１つの（a, an）」は、特に明記しない限り、又は文脈から単数形を対象としたことが明らかでない限り、一般に「１つ又は複数」を意味すると解釈すべきである。
【００６３】
いくつかの装置、コンポーネント、モジュール等を含み得るシステムに関して、様々な実施態様又は特徴を提示してきた。様々なシステムは、追加の装置、コンポーネント、モジュール等を含み得、及び／又は図に関して説明した装置、コンポーネント、モジュール等の全てを含まない場合があることを理解及び認識されたい。これらのアプローチの組合せも使用できる。
【００６４】
本明細書に開示される実施形態に関連して説明する方法の様々な例示的な論理、論理ブロック、及び動作は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）又は他のプログラマブル論理装置、ディスクリートゲート又はトランジスタロジック、ディスクリートハードウェアコンポーネント、又は本書に記載される機能を実行するように設計されたそれらの任意の組合せのうちの特別にプログラムされたもので実装又は実行され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、又はステートマシンであり得る。プロセッサはまた、コンピュータ装置の組合せ、例えば、ＤＳＰとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、ＤＳＰコアと組み合わせた１つ又は複数のマイクロプロセッサ、又は任意の他のそのような構成として実装され得る。さらに、少なくとも１つのプロセッサは、上記のステップ及び／又は動作のうちの１つ又は複数を実行するように動作可能な１つ又は複数のコンポーネントを含み得る。
【００６５】
さらに、本明細書に開示される実施態様に関連して説明される方法又はアルゴリズムのステップ及び／又は動作は、ハードウェア、プロセッサによって実行されるソフトウェアモジュール、又はこれら２つの組合せで直接具体化され得る。ソフトウェアモジュールは、ＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、リムーバブルディスク、ＣＤ−ＲＯＭ、又は当技術分野で知られている他の形式の記憶媒体に存在することができる。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合することができる。あるいは、記憶媒体はプロセッサに一体化され得る。さらに、いくつかの実施態様では、プロセッサ及び記憶媒体は、ＡＳＩＣに存在し得る。さらに、ＡＳＩＣはユーザ端末に存在する場合がある。あるいは、プロセッサ及び記憶媒体は、ユーザ端末内の個別のコンポーネントとして存在し得る。さらに、いくつかの実施態様では、方法又はアルゴリズムのステップ及び／又は動作は、コード及び／又は命令の１つ又は任意の組合せ又はセットとして、機械可読媒体及び／又はコンピュータ可読媒体上に存在し得、これらは、コンピュータプログラム製品に組み込まれ得る。
【００６６】
１つ又は複数の実施態様では、説明する機能は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合に、機能は、１つ又は複数の命令又はコードとしてコンピュータ可読媒体上に格納又は送信され得る。コンピュータ可読媒体は、コンピュータ記憶媒体と、コンピュータプログラムのある場所から別の場所への転送を容易にする任意の媒体を含む通信媒体との両方を含む。記憶媒体は、コンピュータがアクセスできる任意の利用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ又は他の光ディスク記憶装置、磁気ディスク記憶装置又は他の磁気記憶装置、又は所望のプログラムコードを命令又はデータ構造の形式で搬送又は格納するように使用でき、コンピュータによってアクセスできる他の任意の媒体を含むことができる。本明細書で使用されるディスク（ｄｉｓｋ）及びディスク（ｄｉｓｃ）には、コンパクトディスク（ＣＤ）、レーザーディスク（登録商標）、光ディスク、デジタル多用途ディスク（ＤＶＤ）、フロッピーディスク及びＢｌｕ−ｒａｙ（登録商標）ディスクが含まれ、ディスク（ｄｉｓｋ）は通常、データを磁気的に再生し、ディスク（ｄｉｓｃ）は通常、レーザーを使用してデータを光学的に再生する。上記の組み合わせも、コンピュータ可読媒体の範囲に含める必要がある。
【００６７】
本開示の実施態様は、その例に関連して説明してきたが、本明細書の範囲から逸脱することなく、上記の実施態様の変形及び修正を行うことができることが当業者によって理解されよう。他の実施態様は、本明細書に開示された例による仕様の検討又は実践から当業者には明らかになろう。
【図１】
2021525034.tif 000003
【図２】
2021525034.tif 000004
【図３】
2021525034.tif 000005
【図４】
2021525034.tif 000006
【図５】
2021525034.tif 000007
【国際調査報告】
2021525034.tif 000008
2021525034.tif 000009
2021525034.tif 000010
2021525034.tif 000011