(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-02-06
(45)【発行日】2023-02-14
(54)【発明の名称】ビデオエンコーダレンダリング向けのゲームエンジンアプリケーション
(51)【国際特許分類】
H04N 19/503 20140101AFI20230207BHJP
H04N 19/85 20140101ALI20230207BHJP
【FI】
H04N19/503
H04N19/85
(21)【出願番号】P 2020526583
(86)(22)【出願日】2018-09-27
(86)【国際出願番号】 IB2018057511
(87)【国際公開番号】W WO2019097319
(87)【国際公開日】2019-05-23
【審査請求日】2021-09-24
(32)【優先日】2017-11-17
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ガボール シネス
(72)【発明者】
【氏名】カイル プルマドール
(72)【発明者】
【氏名】ヤン リウ
(72)【発明者】
【氏名】イハブ アメール
(72)【発明者】
【氏名】ボリス イバノビッチ
【審査官】鉢呂 健
(56)【参考文献】
【文献】特表2017-517921(JP,A)
【文献】特表2016-505291(JP,A)
【文献】SHI, Shu et al.,Using Graphics Rendering Contexts to Enhance the Real-Time Video Coding for Mobile Cloud Gaming,MM’11, Proceedings of the 19th ACM international conference on Multimedia,2011年11月,pp. 103-112,<URL:https://doi.org/10.1145/2072298.2072313>
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00-19/98
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
表示用の画像をレンダリングするように構成されたレンダリングユニットを含むゲームエンジンと、
第1色空間でレンダリングされたレンダリング画像を符号化するように構成されたビデオエンコーダと、を備え、
前記レンダリングユニットは、
所定のモードで動作することに応じて、
前記第1色空間
と第2色空間との両方で
所定の画像をレンダリングすることと、
前記第1色空間でレンダリングされた前記所定の画像を、対応する生成された属性とともに前記ビデオエンコーダに伝達することと、
前記第2色空間でレンダリングされた前記所定の画像をディスプレイデバイスに伝達することと、
を行うように構成されており、
前記ビデオエンコーダは、前記レンダリングユニットによって提供され
た属性に基づいて、各レンダリング画像を符号化するように構成されている、
システム。
【請求項2】
前記システムは、前
記属性を、第1フォーマットから、前記ビデオエンコーダと互換性のある第2フォーマットに変換するように構成された変換ユニットをさらに備える、
請求項1のシステム。
【請求項3】
前記第1色空間でレンダリングされた画像の各々は、それぞれ対応する画像に関連付けられた生成された属性とは別に記憶される、
請求項1のシステム。
【請求項4】
前
記属性は、カメラビュー速度バッファ、オブジェクト毎のモーション情報、テクスチャデータヒント、関心領域、深度情報、時間統計情報、レンダリングフレームレート、シーン変更データ、追加のビットを必要とする領域、スキップ又は静的フレームデータ、及び、後処理データを含む、
請求項1のシステム。
【請求項5】
前記ゲームエンジンは、現在レンダリングされているフレームの属性を収集し、以前にレンダリングされた画像に対する時間的変化を提供するように構成されている、
請求項1のシステム。
【請求項6】
前記ゲームエンジンは、現在レンダリングされている画像と、以前にレンダリングされた1つ以上の画像との比較に基づいて、前
記属性のうち1つ以上の属性を生成するように構成されており、
前記1つ以上の属性は、シーン変更データ、関心領域、又は、モーションベクトルデータを含む、
請求項
5のシステム。
【請求項7】
ゲームエンジンのレンダリングユニット
が、
所定のモードで動作することに応じて、
第1色空間と、前記第1色空間と異なる第2色空間と、の両方で所定の画像をレンダリングすることと、
前記第1色空間でレンダリングされた前記所定の画像を、対応する生成された属性とともにエンコーダに伝達することと、
前記第2色空間でレンダリングされた前記所定の画像をディスプレイデバイスに伝達することと、
前記エンコーダ
が、前
記属性に基づいて、
各レンダリング画像を符号化することと、を含む、
方法。
【請求項8】
変換ユニット
が、前
記属性を、第1フォーマットから、前記エンコーダと互換性のある第2フォーマットに変換することを含む、
請求項
7の方法。
【請求項9】
前記第1色空間でレンダリングされた画像の各々を、それぞれ対応する画像に関連付けられた生成された属性とは別に記憶することを含む、
請求項
7の方法。
【請求項10】
前
記属性は、カメラビュー速度バッファ、オブジェクト毎のモーション情報、テクスチャデータヒント、関心領域、深度情報、時間統計情報、レンダリングフレームレート、シーン変更データ、追加のビットを必要とする領域、スキップ又は静的フレームデータ、及び、後処理データを含む、
請求項
7の方法。
【請求項11】
前記ゲームエンジン
が、現在レンダリングされているフレームの属性を収集することと、
以前にレンダリングされた画像に対する時間的変化を提供することと、を含む、
請求項
7の方法。
【請求項12】
前記ゲームエンジン
が、現在レンダリングされている画像と、以前にレンダリングされた1つ以上の画像との比較に基づいて、前
記属性のうち1つ以上の属性を生成することを含み、
前記1つ以上の属性は、シーン変更データ、関心領域、又は、モーションベクトルデータを含む、
請求項
11の方法。
【請求項13】
表示用の画像をレンダリングするように構成されたレンダリングユニットを含むゲームエンジンと、
レンダリングされた画像を符号化するように構成されたエンコーダと、
前記ゲームエンジンと前記エンコーダとに接続された変換ユニットと、を備え、
前記レンダリングユニットは、
所定のモードで動作することに応じて、
第1色空間と第2色空間との両方で所定の画像をレンダリングすることと、
前記第1色空間でレンダリングされた前記所定の画像を、対応する生成された属性とともに前記エンコーダに伝達することと、
前記第2色空間でレンダリングされた前記所定の画像をディスプレイデバイスに伝達することと、
を行うように構成されており、
前記エンコーダは、前
記属性に基づいて、レンダリング画像の各々を符号化するように構成されている、
装置。
【請求項14】
前記変換ユニットは、前
記属性を、第1フォーマットから、前記エンコーダと互換性のある第2フォーマットに変換するように構成されている、
請求項
13の装置。
【請求項15】
前記第1色空間でレンダリングされた画像の各々は、それぞれ対応する画像に関連付けられた生成された属性とは別に記憶される、
請求項
13の装置。
【請求項16】
前
記属性は、カメラビュー速度バッファ、オブジェクト毎のモーション情報、テクスチャデータヒント、関心領域、深度情報、時間統計情報、レンダリングフレームレート、シーン変更データ、追加のビットを必要とする領域、スキップ又は静的フレームデータ、及び、後処理データを含む、
請求項
13の装置。
【請求項17】
前記ゲームエンジンは、現在レンダリングされているフレームの属性を収集し、以前にレンダリングされた画像に対する時間的変化を提供するように構成されている、
請求項
13の装置。
【発明の詳細な説明】
【背景技術】
【0001】
(関連技術の説明)
様々なアプリケーションは、画像又はビデオコンテンツのリアルタイム符号化及び復号化を実行する。例えば、クラウドゲーム及びゲーム観戦は、コンテンツのリアルタイム符号化及び復号化のサポートを含むアプリケーションの例である。レイテンシ、品質、ビットレート、パワー及びパフォーマンスの課題は、通常、このようなワークロードをリアルタイムで提供する間に発生する。多くのシナリオでは、グラフィックス処理ユニット(GPU)で実行されるゲームエンジンベースのアプリケーションは、RGB色空間において、システムに接続されたディスプレイを介して画像を提示するようにレンダリングしている。また、レンダリング画像がネットワークを介してリモートシステムに送信されることを意図している場合、レンダリング画像は、コーデック(通常はYUV)によって使用される色空間に変換され、ビデオエンコーダによってビデオビットストリームに符号化される。ビデオエンコーダにとって、低い符号化レイテンシを維持し、符号化ビデオビットストリームにおけるアーチファクトを減少させながら、ビデオの品質を最適化することは困難である場合がある。上記を考慮して、画像をレンダリングし、レンダリング画像を符号化ビットストリームに符号化するための新規且つ改良された方法が望まれている。
【0002】
添付図面と共に以下の説明を参照することによって、本明細書で説明する方法及びメカニズムの利点をより良く理解することができる。
【図面の簡単な説明】
【0003】
【
図1】レンダリング画像を、ネットワークを介して送信されるビデオビットストリームに符号化するシステムの一実施形態のブロック図である。
【
図2】サーバのソフトウェアコンポーネントの一実施形態のブロック図である。
【
図3】コンピューティングシステムの一実施形態のブロック図である。
【
図4】コンピューティングシステムの別の実施形態のブロック図である。
【
図5】ゲームエンジンがビデオエンコーダに直接レンダリングする方法の一実施形態を示す一般化されたフロー図である。
【
図6】マルチモードゲームエンジンを動作させる方法の一実施形態を示す一般化されたフロー図である。
【発明を実施するための形態】
【0004】
以下の説明では、本明細書で提示される方法及びメカニズムの十分な理解を提供するために、多くの特定の詳細が示されている。しかしながら、当業者は、これらの特定の詳細なしに様々な実施形態を実施することができることを認識するはずである。いくつかの例では、本明細書で説明するアプローチを曖昧にすることを避けるために、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術を詳細に示していない。例示を単純且つ明瞭にするために、図に示される要素は、必ずしも縮尺通りに描かれていないことが認識されよう。例えば、いくつかの要素の寸法は、他の要素に比べて誇張されている場合がある。
【0005】
ビデオエンコーダに直接レンダリングするゲームエンジンのシステム、装置及び方法を本明細書で開示する。一実施形態では、システムは、デコーダを有するクライアントにネットワークを介して接続されたサーバ内のゲームエンジンと、ビデオエンコーダと、を含む。ゲームエンジンは、表示するために第1色空間で画像をレンダリングするように構成された組み込みレンダリングユニットを含む。また、レンダリングユニットは、第2色空間の画像をビデオエンコーダに直接レンダリングするように構成されている。一実施形態では、第1色空間はRGBであり、第2色空間はYUVである。また、ゲームエンジンは、レンダリング画像の各々に関連する複数の属性を生成し、複数の属性をビデオエンコーダに伝達する。複数の属性は、画像をレンダリングするレンダリングユニットによって使用される様々なタイプのデータを含む。ビデオエンコーダは、レンダリング画像に関連する複数の属性に基づいて、レンダリング画像の各々を符号化ビットストリームに符号化する。
【0006】
一実施形態では、レンダリングユニットは、クラウド内のサーバに配置されており、レンダリングされたコンテンツがネットワークを介してクライアントに伝達される。例えば、ゲームアプリケーションフレームをクラウドでレンダリングしながら、クラウドゲームアプリケーションを実行することができる。このシナリオでは、レンダリングユニットは、レンダリングされたフレームをエンコーダに伝達する。様々なタイプの処理ユニットのうち何れかを使用してレンダリングユニットを実装することができる。一実施形態では、レンダリングユニットは、グラフィックスプロセッサ又はグラフィックスサブシステム上に実装される。別の実施形態では、レンダリングユニットは、汎用中央処理装置(CPU)上に実装される。他の実施形態では、レンダリングユニットは、他のタイプの処理ユニット(例えば、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP))上に実装されてもよい。
【0007】
図1を参照すると、レンダリング画像を、ネットワークを介して送信されるビデオビットストリームに符号化するシステム100の一実施形態のブロック図が示されている。システム100は、サーバ105と、ネットワーク110と、クライアント115と、ディスプレイ120と、を含む。他の実施形態では、システム100は、ネットワーク110を介してサーバ105に接続された複数のクライアントを含むことができ、複数のクライアントは、サーバ105によって生成された同じビットストリーム又は異なるビットストリームを受信する。また、システム100は、複数のクライアントのために複数のビットストリームを生成する複数のサーバ105を含むことができる。一実施形態では、システム100は、クラウドゲームアプリケーションの一部としてゲームコンテンツのリアルタイムレンダリング及び符号化を実行するように構成されている。レイテンシ、品質、ビットレート、パワー及びパフォーマンスの課題は、通常、このようなワークロードをリアルタイムで提供する間に発生する。他の実施形態では、システム100は、他のタイプのアプリケーションを実行するように構成されている。
【0008】
一実施形態では、サーバ105は、ビデオ又は画像フレームをレンダリングし、フレームをビットストリームに符号化した後に、符号化ビットストリームを、ネットワーク110を介してクライアント115に伝達するように構成されている。クライアント115は、符号化ビットストリームを復号化し、ビデオフレーム又は画像を生成してディスプレイ120又はディスプレイコンポジタに送るように構成されている。一実施形態では、サーバ105は、ユーザに対して表示される画像をレンダリングするためのゲームエンジンを含む。本明細書で使用される「ゲームエンジン」という用語は、画像をレンダリングするためのリアルタイムレンダリングアプリケーションとして定義される。ゲームエンジンは、画像をレンダリングするための様々なシェーダ(例えば、頂点シェーダ、ジオメトリシェーダ等)を含むことができる。ゲームエンジンは、通常、サーバ105に接続されたディスプレイ上に直ちに表示されるレンダリング画像を生成するために利用される。ただし、いくつかのアプリケーションは、レンダリングされたコンテンツを遠隔位置に表示するクライアントサーバモデルを使用して実行することができる。これらのアプリケーションでは、レンダリング画像は、ビデオエンコーダによってビデオビットストリームに符号化される。次に、ビデオビットストリームは、ネットワーク110を介してクライアント115に送信され、ディスプレイ120上に表示される。様々な実施形態では、ビデオビットストリーム235は、様々な適切な通信プロトコル(例えば、TCP/IP等)の何れかに従って、ネットワークインタフェース(図示省略)を介してネットワーク240に伝達される。
【0009】
ネットワーク110は、無線接続、直接ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、ワイドエリアネットワーク(WAN)、イントラネット、インターネット、ケーブルネットワーク、パケット交換ネットワーク、光ファイバネットワーク、ルータ、ストレージエリアネットワーク、若しくは、他のタイプのネットワークを含む、あらゆるタイプのネットワーク又はネットワークの組み合わせを表す。LANの例は、イーサネット(登録商標)ネットワーク、ファイバ分散データインタフェース(FDDI)ネットワーク、トークンリングネットワークを含む。ネットワーク110は、リモートダイレクトメモリアクセス(RDMA)ハードウェア及び/若しくはソフトウェア、伝送制御プロトコル/インターネットプロトコル(TCP/IP)ハードウェア及び/若しくはソフトウェア、ルータ、リピータ、スイッチ、グリッド、並びに/又は、他のコンポーネントをさらに含むことができる。
【0010】
サーバ105は、ビデオ/画像フレームをレンダリングし、フレームをビットストリームに符号化するためのソフトウェア及び/又はハードウェアの任意の組み合わせを含む。一実施形態では、サーバ105は、1つ以上のサーバのうち1つ以上のプロセッサ上で実行される1つ以上のソフトウェアアプリケーションを含む。また、サーバ105は、ネットワーク通信機能、1つ以上の入出力デバイス、及び/又は、他のコンポーネントを含む。サーバ105の1つ以上のプロセッサは、任意の数及びタイプのプロセッサ(例えば、グラフィックス処理ユニット(GPU)、CPU、DSP、FPGA、ASIC)を含むことができる。プロセッサは、プロセッサによって実行可能なプログラム命令を記憶する1つ以上のメモリデバイスに接続されてもよい。同様に、クライアント115は、ビットストリームを復号化し、フレームをディスプレイ120に送るためのソフトウェア及び/又はハードウェアの任意の組み合わせを含む。一実施形態では、クライアント115は、1つ以上のコンピューティングデバイスのうち1つ以上のプロセッサ上で実行される1つ以上のソフトウェアアプリケーションを含む。クライアント115は、コンピューティングデバイス、ゲームコンソール、モバイルデバイス、ストリーミングメディアプレーヤー、又は、他のタイプのデバイスであってもよい。
【0011】
図2を参照すると、サーバ205のソフトウェアコンポーネントの一実施形態のブロック図が示されている。一実施形態では、サーバ205は、サーバ205の処理ユニット上で実行するように構成されたアプリケーション210を含む。一実施形態では、アプリケーション210は、ビデオゲームアプリケーションである。例えば、アプリケーション210は、ゲームプレイのビデオを伝達及び/又は受信するように構成されたクラウドゲームアプリケーションであってもよい。別の実施形態では、アプリケーション210は、ゲームプレイのビデオを表示するように構成されたゲーム観戦アプリケーションである。様々な実施形態では、サーバ205は、1つ以上のプロセッサと、1つ以上のメモリデバイスと、サーバ又は他のコンピューティングデバイスを示す追加のコンポーネントと、を含む。
図2に示す様々なソフトウェアコンポーネントは、サーバ205の処理ユニット上で実行するように構成されている。一実施形態では、サーバ205は、クラウドコンピューティングアーキテクチャの一部である。
【0012】
一実施形態では、アプリケーション210は、ユーザがアプリケーション210によって生成されたビデオストリームを表示して対話するクライアントデバイス上でキャプチャされたユーザの動き/アクションを指定する入力(例えば、ゲームコマンド)を受信するように構成されている。アプリケーション210は、表示用のフレームをレンダリングするためにゲームエンジン215に提供されるグラフィックス情報を含む。ゲームエンジン215は、アプリケーション210のゲーム状態に基づいて、画像フレームをレンダリングするように構成されている。次に、レンダリングされた画像フレームは、ディスプレイエンジンに提供され、ディスプレイに送られることが意図される。しかしながら、一実施形態では、レンダリングされた画像フレームは、リモートクライアントデバイスのディスプレイに表示される。本実施形態では、レンダリングされた画像フレームは、ビデオビットストリームに符号化され、ビデオビットストリームは、リモートクライアントデバイスに送信される。
【0013】
一実施形態では、ゲームエンジン215は、レンダリング画像からのビデオビットストリームの符号化において使用するために、レンダリング画像227の各々に関連する複数の属性228をエンコーダ230に提供するように構成されている。複数の属性228は、レンダリングユニット220がレンダリング画像を構築するために使用する様々なデータを含む。したがって、これらの属性228は既に存在し、レンダリングユニット220は、これらの属性228をエンコーダ230に提供して、符号化プロセスを強化することができる。エンコーダ230は、これらの属性228を受信することによって、レンダリング画像227の各々に対して通常実行される様々な処理及び分析タスクを省くことができる。様々な実施形態では、複数の属性228は、属性(例えば、カメラビュー速度バッファ、オブジェクト毎のモーション情報、テクスチャデータヒント、関心領域(ROI)、深度情報(例えば、立体映像エンコード)、時間統計情報、レンダリングフレームレート、シーン変更データ、追加のビットを必要とする領域(例えば、矩形)、スキップ又は静的フレーム指標、及び、後処理データ等)を含むことができるが、これらに限定されない。他の実施形態では、他の情報を収集することができ、及び/又は、これらの属性のうち1つ以上を、ビデオエンコーダ230に提供される属性228から省略することができる。
【0014】
一実施形態では、カメラビュー速度情報を利用して、モーション推定器を支援することができる。一実施形態では、ROI情報は、ダーティな矩形データ、重要なコンテンツ依存オブジェクト、ゲーム/アプリケーション統計情報等を含むことができる。ゲーム/アプリケーション統計情報は、不透明、透明、又は、半透明のオーバーレイで示すことができる。シーン変更データは、エンコーダのリフレッシュロジックを支援することができる。追加のビットを必要とする領域は、オーバーレイされたゲームの統計情報又はメニューを含む。
【0015】
実施形態に応じて、様々なレンダリング画像の属性を利用して、異なるエンコーダ設定を制御又は調整することができる。例えば、2つの連続する画像(画像N-1及び画像N)が類似している場合(例えば、画像N-画像N-1<閾値)、レンダリングユニット220は、フレームをスキップする信号をエンコーダ230に送信することができる。また、マークされた画像が、2つの連続する画像を比較する(画像Nを画像N-1と比較する)ときに変化しない場合、エンコーダ230は、画像Nから画像N-1までの領域に対する直接参照を構築することができる。また、レンダリングユニット220は、(多かれ少なかれ圧縮を実現するために)マークされたROI量子化パラメータ値を交互にすることができる。さらに、速度バッファからのモーション情報(画像Nを画像N-1と比較する)を利用することができる。例えば、モーションデータを使用して、符号化プロセスで使用されるマクロブロック毎の量子化パラメータを変更することができる。これは、速度に基づいて、特定のコンテンツに多くの符号化ビットを割り当てることを意味する。さらに、深度情報を用いて、立体画像を符号化することができる。
【0016】
一実施形態では、ゲームエンジン215は、画像を、赤/緑/青(RGB)色空間でレンダリングするように構成されている。しかしながら、一実施形態では、エンコーダ230は、輝度/クロミナンス(YUV)色空間の画像をビデオストリームに符号化するように構成されている。したがって、このような場合、レンダリングされたRGB画像は、YUV色空間で画像をレンダリングするように構成されたエンコーダ230と互換性がない。この不一致に対処するために、様々な実施形態では、レンダリングユニット220は、RGB及びYUV色空間の何れか又は両方で画像をレンダリングするように構成されている。なお、YUV色空間は、YCbCr又はY’CbCr色空間とも呼ばれることに留意されたい。
【0017】
一実施形態では、ゲームエンジン215のレンダリングユニット220は、レンダリング画像227をバッファ225の第1部分に書き込み、レンダリング画像227に関連する属性228をバッファ225の第2部分に書き込む。一実施形態では、ビデオエンコーダ230は、レンダリング画像227及び関連する属性228をバッファ225から取得するように構成されている。ビデオエンコーダ230は、レンダリング画像227を符号化ビデオビットストリーム235に符号化する場合に属性228を利用するように構成されている。ビデオエンコーダ230は、後にレンダリングされる画像及び関連する属性をバッファ225から取得し(又は、受信し)、後にレンダリングされた画像から符号化ビデオビットストリーム235を生成し続けるように構成されている。様々な実施形態では、ゲームエンジン215のレンダリングユニット220によって生成されるフレームの符号化は、必要に応じて、様々なビデオフォーマット及び規格(例えば、「HD」、「4K」、「4Kウルトラ」、H.262、H.264、H.265等)の何れかに従う。
【0018】
一実施形態では、エンコーダ230は、所定のビットバジェットで符号化ビットストリーム235を生成するように構成されている。例えば、エンコーダ230は、ビットストリーム235について利用可能な又は所定のネットワーク帯域幅(例えば、2メガビット/秒(Mbps))に基づいて特定のビットバジェットを有することができ、この特定のビットバジェットを満たすようにフレームを符号化する。符号化ビットストリーム235がエンコーダ230によって生成されると、符号化ビットストリーム235は、サーバ205からクライアント(図示省略)に伝達される。クライアントは、符号化ビットストリーム235を受信し、ビットストリーム235を個々のフレームに復号化し、フレームをディスプレイ又はディスプレイコンポジタに送る。
【0019】
図3を参照すると、コンピューティングシステム305の一実施形態のブロック図が示されている。コンピューティングシステム305は、プレーヤの動き又はアクションを受信するアプリケーション310を含む。また、コンピューティングシステム305は、統合されたレンダリングユニット320を含むゲームエンジン315を備える。
図3に示す実施形態では、コンピューティングシステム305は、ディスプレイデバイス324に表示するためのレンダリング画像322と、ビデオエンコーダ330用に特別にレンダリングされたレンダリング画像327と、を生成するように構成されている。また、レンダリングユニット320は、属性328をバッファ325内のビデオエンコーダ330に提供して、符号化プロセスを支援する。ビデオエンコーダ330は、ゲームエンジン315のレンダリングユニット320によって生成された画像毎に、レンダリング画像327及び属性328をバッファ325から取得し、レンダリング画像327及び属性328から符号化ビデオビットストリーム335を生成する。一実施形態では、レンダリング画像322は第1色空間で生成され、レンダリング画像327は第2色空間で生成される。一実施形態では、第1色空間はRGBであり、第2色空間はYUVである。実施形態に応じて、符号化ビデオビットストリーム335を、ネットワーク340を介してリモートシステムに伝達してもよいし、メモリ345に記録し、記憶することができる。
【0020】
図4を参照すると、コンピューティングシステム405の別の実施形態のブロック図が示されている。システム405は、統合されたレンダリングユニット420を含むゲームエンジン415を備える。一実施形態では、ゲームエンジン415は、実行されている特定のソフトウェアアプリケーションに応じて、及び/又は、システム405の動作条件によって、異なるモードで動作することができる。テーブル416は、ゲームエンジン415が一実施形態によって実施することができる異なる動作モードのリストを含む。例えば、モード417Aでは、ゲームエンジン415は、ビデオエンコーダ450のみにレンダリングするように構成されている。モード417Aでは、レンダリングユニット420は、画像をYUV色空間でレンダリングし、レンダリング画像430の各々をビデオビットストリームに符号化する場合にビデオエンコーダ450によって利用される属性435を生成する。レンダリングユニット420は、画像属性部435に記憶されるデータを収集する。レンダリングユニット420が画像を生成するためにネイティブに使用するデータ(深度、モーション、テクスチャ)に加えて、レンダリングユニット420は、ROI及び以前の画像に対する時間的変化を示唆することができる。例えば、現在のレンダリング画像430の小さな部分のみが以前のレンダリング画像と比較して変化した場合、レンダリングユニット420は、現在のレンダリング画像430を符号化する場合に、以前のレンダリング画像から変化していない部分を再使用するために、ビデオエンコーダ450に対する指標(属性435に含まれる)を生成する。
【0021】
ゲームエンジン415は、モード417Bで動作する場合に、ディスプレイ424のみにレンダリングするように構成されている。モード417Bでは、レンダリングユニット420は、レンダリング画像422の各々をRGB色空間で生成し、レンダリングRGB画像422は、ディスプレイ424又はディスプレイコンポジタに送られる。ゲームエンジン415は、モード417Cで動作する場合に、ビデオエンコーダ450及びディスプレイ424にレンダリングするように構成されている。モード417Cでは、レンダリングユニット420は、ホストゲームアプリケーションのフレーム毎に、ディスプレイ424のためにRGB色空間のレンダリング画像422を生成し、ビデオエンコーダ450のためにYUV色空間のレンダリング画像430及び属性435を生成する。他の実施形態では、ゲームエンジン415は、他のタイプのモードで動作することができ、及び/又は、テーブル416で示されるモードのうち1つを省略することができる。
【0022】
一実施形態では、ゲームエンジン415が、ビデオエンコーダ450によって直接使用される画像をレンダリングする場合、ゲームエンジン415は、ビデオエンコーダ450による取得のために、レンダリング画像430及び属性435をバッファ425に記憶する。一実施形態では、変換ユニット440は、属性435を、ビデオエンコーダ450がレンダリング画像430を符号化ビデオビットストリームに符号化する場合に使用することができるフォーマットに変換する。変換ユニット440は、ゲームエンジン415によってバッファ425に記憶されたメタデータ(すなわち、属性435)を取得することができ、システム405によって実装され得る様々な異なるタイプのビデオエンコーダによってメタデータが使用されるのを可能にするように、メタデータを変換することができる。例えば、このデータは、エンコーダが時間差、テクスチャ、ROIを理解し、画像解析を完全又は部分的にスキップするのに役立つ。これにより、エンコーダは、画像を圧縮する時間を節約し、時間制約(低レイテンシ)を考慮したより良い画質を提供する。いくつかの実施形態では、変換ユニット440は、ビデオエンコーダ450のための追加のパラメータ(例えば、ROIマップ、圧縮パラメータマップ、及び、スキップフレームをビットストリームに挿入するかどうかの決定等)を提供する。
【0023】
例えば、ビデオエンコーダ450がH.264ビデオ規格に従ってビデオビットストリームを符号化している場合、変換ユニット440は、属性435を、H.264規格と互換性のあるフォーマットに変換することができる。或いは、ビデオエンコーダ450がH.265ビデオ規格(すなわち、高効率映像符号化(HEVC))に従ってビデオビットストリームを符号化している場合、変換ユニット440は、属性435を、H.265規格と互換性のあるフォーマットに変換することができる。さらに、ビデオエンコーダ450がVP9コーデックに従ってビデオビットストリームを符号化している場合、変換ユニット440は、属性435を、VP9コーデックと互換性のあるフォーマットに変換することができる。また、変換ユニット440は、ビデオエンコーダ450がサポートする規格に応じて、属性435を、他のビデオ圧縮規格と互換性のある他のフォーマットに変換することができる。
【0024】
一実施形態では、ビデオエンコーダ450は、フィードバックを、ゲームエンジン415のレンダリングユニット420及び/又は変換ユニット440に提供するように構成されている。例えば、ビデオエンコーダ450がビデオビットストリームを送信しているネットワーク接続上で利用可能な帯域幅が減少する場合、ビデオエンコーダ450は、レンダリング画像430の解像度を低下させるようにゲームエンジン415のレンダリングユニット420に通知することができる。また、いくつかの実施形態では、ビデオエンコーダ450は、複数のクライアントのためにビデオビットストリームを生成することができ、ビデオエンコーダ450がビデオビットストリームを符号化するための計算リソースが少ない場合、ビデオエンコーダ450は、レンダリング画像430を生成する場合にフレームレートを低下させること、解像度を低下させること、及び/又は、1つ以上の他のアクションを実行することを、ゲームエンジン415のレンダリングユニット420に通知することができる。別の実施形態では、ビデオエンコーダ450は、属性435に追加される1つ以上の追加属性を要求することもできる。また、さらなる実施形態では、ビデオエンコーダ450は、ビデオエンコーダ450に提供される様々な属性435をフォーマットする方法を指定するために、フィードバックを変換ユニット440に提供する。
【0025】
図5を参照すると、ゲームエンジンがビデオエンコーダに直接レンダリングする方法500の1つの実施形態が示されている。説明のために、本実施形態のステップ及び
図6のステップを順番に示す。しかしながら、説明する方法の様々な実施形態では、説明する要素のうち1つ以上が、同時に実行され、図示した順序と異なる順序で実行され、又は、完全に省略されることに留意されたい。必要に応じて、他の追加の要素も実行される。本明細書で説明する様々なシステム又は装置の何れも、方法500を実施するように構成されている。
【0026】
組み込みレンダリングユニットを含むゲームエンジンは、画像をレンダリングするための入力を受信する(ブロック505)。ゲームエンジンは、ビデオエンコーダと直接互換性のあるフォーマットで画像をレンダリングする(ブロック510)。例えば、ゲームエンジンは、ビデオエンコーダが符号化プロセスを実行する場合に利用するカラーフォーマット(例えば、YUV)で画像をレンダリングする。また、ゲームエンジンは、レンダリング画像の複数の属性をビデオエンコーダに提供する(ブロック515)。次に、ビデオエンコーダは、複数の属性に基づいて、レンダリング画像を符号化ビットストリームに符号化する(ブロック520)。次いで、ビデオエンコーダは、符号化ビットストリームをクライアントに送信するか、符号化ビットストリームを記憶する(ブロック525)。ブロック525の後に、方法500はブロック505に戻り、ゲームエンジンがレンダリングする次の画像についての入力を受信する。
【0027】
図6を参照すると、マルチモードゲームエンジンを動作させる方法600の一実施形態が示されている。組み込みレンダリングユニットを含むマルチモードゲームエンジンを、コンピューティングシステム上で実行する(ブロック605)。システムは、ゲームエンジンの動作モードを決定する(ブロック610)。ゲームエンジンが第1モードで動作している場合(条件付きブロック615:Yes)、レンダリングユニットは、各画像を、ビデオエンコーダだけのために第1色空間(すなわち、YUV色空間)に直接レンダリングする(ブロック620)。また、ゲームエンジンは、レンダリング画像毎に、複数の属性をビデオエンコーダに提供する(ブロック625)。一実施形態では、レンダリングユニットの属性データは、YUVレンダリング画像と共にパックされる。ブロック625の後に、方法600は終了する。
【0028】
ゲームエンジンが第2モードで動作している場合(条件付きブロック630:Yes)、レンダリングユニットは、各画像を、ローカルに接続されたディスプレイだけのために第2色空間(すなわち、RGB色空間)にレンダリングする(ブロック635)。ブロック635の後に、方法600は終了する。ゲームエンジンが第3モードで動作している場合(条件付きブロック630:No)、レンダリングユニットは、各画像を、ビデオエンコーダのための第1色空間(すなわち、YUV色空間)に直接レンダリングし、ローカルに接続されたディスプレイのための第2色空間(すなわち、RGB色空間)にレンダリングする(ブロック640)。ブロック640の後に、方法600は終了する。他の実施形態では、ゲームエンジンが他の動作モードを有することができることに留意されたい。これらの実施形態では、方法600は、これらの他の動作モードを利用するように適合されてもよい。
【0029】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、本明細書で説明する方法及び/又はメカニズムを実施する。例えば、汎用プロセッサ又は専用プロセッサによって実行可能なプログラム命令が考えられる。様々な実施形態では、このようなプログラム命令を、高レベルプログラミング言語として表すことができる。他の実施形態では、プログラム命令を、高レベルプログラミング言語からバイナリ、中間又は他の形式にコンパイルすることができる。或いは、ハードウェアの動作又は設計を記述するプログラム命令を書き込むことができる。このようなプログラム命令は、C/C++等の高レベルプログラミング言語によって表すことができる。或いは、Verilog等のハードウェア設計言語(HDL)を使用することもできる。様々な実施形態では、プログラム命令は、様々な非一時的なコンピュータ可読記憶媒体の何れかに記憶される。記憶媒体は、使用中にコンピューティングシステムによってアクセス可能であり、プログラム実行のためにプログラム命令をコンピューティングシステムに提供する。一般に、このようなコンピューティングシステムは、少なくとも1つ以上のメモリと、プログラム命令を実行するように構成された1つ以上のプロセッサと、を含む。
【0030】
上述した実施形態は、実装の非限定的な例に過ぎないことを強調しておきたい。上記の開示が十分に理解されれば、当業者には多くの変形及び修正が明らかになるであろう。以下の特許請求の範囲は、かかる変形及び修正の全てを包含すると解釈されることを意図している。