(57)【要約】実施形態は、補足的なエンコード命令に応答してフレームをエンコードすること、フレームについてのエンコード情報を提供することおよびエンコード・ヒントを含むソフトウェア・コードをコンパイルすることに向けられる。ある実施形態では、フレームに関連付けられたフレーム情報にアクセスすることに応答して、コンピュータ・システムはフレーム情報を、フレームの指定された部分をエンコードするための補足的なエンコード命令であるとして解釈する。次いで、コンピュータ・システムは、フレームの指定された部分が補足的なエンコード命令に従ってエンコードされるよう、フレームをエンコードする。
2017517921.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ実行可能な命令を含んでいるメモリを含むコンピューティング・システムの一つまたは複数のプロセッサによって実行されるコンピュータ実装される方法であって、前記命令は実行されたときに前記一つまたは複数のプロセッサに当該コンピュータ実装される方法を実行させるものであり、当該コンピュータ実装される方法は、一つまたは複数のフレームにおける関心領域がより効果的に表示されるようビデオ・データのフレームのエンコードを制御するために使われ、当該コンピュータ実装される方法は：
前記一つまたは複数のプロセッサが、データ・アクセス・モジュールを開始し、ビデオ・データのストリームからの少なくとも一つのフレームに関連付けられたフレーム情報の一つまたは複数の部分にアクセスする段階であって、前記フレーム情報の前記一つまたは複数の部分のうちの少なくとも一つは、前記フレーム情報における関心領域についての補足的なエンコード命令の必要性を示すために使われるヒント情報を含む、段階と；
前記一つまたは複数のプロセッサが、前記ヒント情報を解釈するデータ解釈モジュールを開始する段階と；
前記一つまたは複数のプロセッサが、次いで、前記フレーム情報における前記関心領域が補足的なエンコード命令に従ってエンコードされるよう、解釈されたヒント情報についての補足的なエンコード命令を生成する段階と；
前記一つまたは複数のプロセッサが、前記補足的なエンコード命令に従って前記関心領域をエンコードするエンコード・モジュールを開始する段階と；
前記エンコード・モジュールが前記フレーム情報をエンコードされた形で出力のために表示モジュールに送る段階とを含む、
コンピュータ実装される方法。
【請求項２】
前記フレーム情報は、少なくとも一つのフレームおよびビデオ・データのストリーム中の第一のフレームより後の少なくとも一つのフレームに関するコンテキストを与える、請求項１記載のコンピュータ実装される方法。
【請求項３】
前記フレーム情報は、一つまたは複数の関心領域についてのヒント情報を含む、請求項１記載のコンピュータ実装される方法。
【請求項４】
前記関心領域の少なくとも一つが時間とともに動的に変化する、請求項３記載のコンピュータ実装される方法。
【請求項５】
前記ヒント情報が、現在フレーム上で観覧者が見ている可能性が最も高いところの指示によって与えられる、請求項３記載のコンピュータ実装される方法。
【請求項６】
前記ヒント情報が、ビデオ・ゲームのビデオ・ゲーム・コンテンツに関連する現在カメラ動きの指示によって与えられる、請求項３記載のコンピュータ実装される方法。
【請求項７】
前記ビデオ・ゲームが分割画面モードで動作しており、フレーム情報は分割画面の各レベルについて与えられる、請求項６記載のコンピュータ実装される方法。
【請求項８】
前記フレーム情報が、向上されるべきヘッドアップ・ディスプレイ（HUD）情報の一つまたは複数の部分を示す、請求項６記載のコンピュータ実装される方法。
【請求項９】
一つまたは複数のフレームにおける関心領域がより効果的に表示されるようビデオ・データのフレームのエンコードを制御するために使われるコンピュータ・アーキテクチャを備えたコンピュータ・システムであって、当該コンピュータ・システムは：
コンピュータ実行可能な命令を含んでいるメモリであって、前記命令は実行されたときに前記一つまたは複数のプロセッサに、一つまたは複数のフレームにおける関心領域がより効果的に表示されるようビデオ・データのフレームのエンコードを制御するために使われる前記コンピュータ・アーキテクチャを実装するためのコンピュータ実装される方法を実行させるものであり、前記アーキテクチャによって提供される前記コンピュータ実装される方法は、
前記一つまたは複数のプロセッサが、データ・アクセス・モジュールを開始し、ビデオ・データのストリームからの少なくとも一つのフレームに関連付けられたフレーム情報の一つまたは複数の部分にアクセスする段階であって、前記フレーム情報の前記一つまたは複数の部分のうちの少なくとも一つは、前記フレーム情報における関心領域についての補足的なエンコード命令の必要性を示すために使われるヒント情報を含む、段階と；
前記一つまたは複数のプロセッサが、前記ヒント情報を解釈するデータ解釈モジュールを開始する段階と；
前記一つまたは複数のプロセッサが、次いで、前記フレーム情報における前記関心領域が補足的なエンコード命令に従ってエンコードされるよう、解釈されたヒント情報についての補足的なエンコード命令を生成する段階と；
前記一つまたは複数のプロセッサが、前記補足的なエンコード命令に従って前記関心領域をエンコードするエンコード・モジュールを開始する段階と；
前記エンコード・モジュールが前記フレーム情報をエンコードされた形で出力のために表示モジュールに送る段階とを含む、
コンピュータ・システム。
【請求項１０】
実行されたときにコンピューティング・システムの一つまたは複数のプロセッサにコンピュータ実装される命令を実行させるコンピュータ実行可能な命令を含んでいるコンピュータ可読媒体からなるコンピュータ・プログラム・プロダクトであって、前記コンピュータ実装される方法は、一つまたは複数のフレームにおける関心領域がより効果的に表示されるようビデオ・データのフレームのエンコードを制御するために使われ、前記コンピュータ実装される方法は、
前記一つまたは複数のプロセッサが、アプリケーションの一部として提供されるビデオ・データのストリームからの少なくとも一つのフレームに関連付けられたフレーム情報の一つまたは複数の部分にアクセスする段階であって、前記フレーム情報の前記一つまたは複数の部分のうちの少なくとも一つは、前記フレーム情報における関心領域についての補足的なエンコード命令の必要性を示すために使われるヒント情報を含む、段階と；
前記一つまたは複数のプロセッサが、前記ヒント情報を解釈するデータ解釈モジュールを開始する段階と；
前記一つまたは複数のプロセッサが、次いで、前記フレーム情報における前記関心領域が補足的なエンコード命令に従ってエンコードされるよう、解釈されたヒント情報についての補足的なエンコード命令を生成する段階と；
前記一つまたは複数のプロセッサが、前記補足的なエンコード命令に従って前記関心領域をエンコードするエンコード・モジュールを開始する段階と；
前記エンコード・モジュールが前記フレーム情報をエンコードされた形で、出力のために表示モジュールに送る段階とを含む、
コンピュータ・プログラム・プロダクト。
【発明の詳細な説明】
【背景技術】
【０００１】
ビデオ・データは、インターネットのようなネットワークを通じて、日常的に世界中の消費者に送信されている。ビデオ・データは何らかの型のソフトウェア・アプリケーションによって生成される。次いでビデオ・データは、エンコーダによってエンコードされたのちに、受領システム（すなわちクライアント）に送信される。次いで、受領システムは、エンコードされたフレームをデコードし、ユーザーに対して表示する。ビデオ・エンコーダは典型的には、フレームを、ソフトウェア・アプリケーションから受領されるにつれて逐次的にエンコードする。
【発明の概要】
【発明が解決しようとする課題】
【０００２】
エンコーダは、フレームの実際の内容についていかなる知識もなしに、あるいはフレームにおいて何が実際に起こっているかを何も知らずに、フレームをエンコードする。エンコード・プロセスは典型的には、フレームの視覚的品質を劣化させる。
【課題を解決するための手段】
【０００３】
本稿に記載される実施形態は、補足的なエンコード命令に応答してフレームをエンコードすること、フレームについてのエンコード情報を提供することおよびエンコード・ヒントを含むソフトウェア・コードをコンパイルすることに向けられる。ある実施形態では、フレームに関連付けられたフレーム情報にアクセスすることに応答して、コンピュータ・システムはフレーム情報を、フレームの指定された部分をエンコードするための補足的なエンコード命令であるとして解釈する。次いで、コンピュータ・システムは、フレームの指定された部分が補足的なエンコード命令に従ってエンコードされるよう、フレームをエンコードする。
【０００４】
もう一つの実施形態では、コンピュータ・システムは、フレームに対応するフレーム情報にアクセスする。コンピュータ・システムは、アクセスされたフレーム情報から、そのフレームの少なくとも一部が指定された仕方でエンコードされるべきであることを判別する。次いで、コンピュータ・システムは、該指定された仕方でエンコードされるべきである前記フレームの部分を同定する補足的なエンコード命令を生成し、該補足的なエンコード命令がエンコーダに提供されるようにする。
【０００５】
さらにもう一つの実施形態では、コンピュータ・システムは、アプリケーション・コンテンツの指定された部分が特定の仕方でエンコードされるべきであるとの指示を受領する。コンピュータ・システムは、アプリケーション・コンテンツのそれらの指定された部分がどのようにレンダリングされ、エンコードされるかを示すアプリケーション・コードをそのアプリケーションに加える。次いで、コンピュータ・システムは、アプリケーションをコンパイルするが、それにより、実行されたときにコンパイルされたアプリケーションが、アプリケーション・コンテンツの指定された部分がどのようにエンコードされているかを示す前記情報を、そのアプリケーション・コンテンツをエンコードするよう構成されているプロセッサまたは第二のアプリケーションに提供するようにされる。
【０００６】
この概要は、詳細な説明においてさらに記載される概念のセレクションを簡略化された形で紹介するために与えられている。この概要は、特許請求される主題のキーとなる特徴や本質的な特徴を特定することを意図したものではなく、特許請求される主題の範囲を決定する際の助けとして使われることも意図されていない。
【０００７】
追加的な特徴および利点が以下の記述において記載され、部分的には、該記述から当業者に明白となるであろう。あるいは、本稿における教示の実施により学習されることもありうる。本稿に記載される実施形態の特徴および利点は、付属の請求項において具体的に指摘される機器および組み合わせによって実現され、得られることができる。本稿に記載される実施形態の特徴は、以下の記述および付属の請求項からより十全に明白となるであろう。
【図面の簡単な説明】
【０００８】
本稿に記載される実施形態の上記および他の特徴を一層明確にするために、より具体的な記述が付属の図面を参照して与えられる。これらの図面は、本稿に記載される実施形態の例を描いているだけであり、よってその範囲を限定すると考えられるべきではないことは理解される。実施形態は、付属の図面の使用を通じてさらなる具体性および詳細さをもって記載され、説明される。
【図１】補足的なエンコード命令に応答してフレームをエンコードすることを含む、本稿に記載される実施形態が動作しうるコンピュータ・アーキテクチャを示す図である。
【図２】補足的なエンコード命令に応答してフレームをエンコードするための例示的な方法のフローチャートを示す図である。
【図３】フレームについてのエンコード情報を提供するための例示的な方法のフローチャートである。
【図４】エンコード・ヒントを含むソフトウェア・コードをコンパイルするための例示的な方法のフローチャートである。
【図５】フレームがフレーム情報に従ってエンコードされるコンピューティング・アーキテクチャを示す図である。
【図６】ＡおよびＢは、異なるフレームについて関心領域が示されている実施形態を示す図である。
【図７】ヘッドアップ・ディスプレイについて関心領域が指示される実施形態を示す図である。
【発明を実施するための形態】
【０００９】
本稿に記載される実施形態は、補足的なエンコード命令に応答してフレームをエンコードすること、フレームについてのエンコード情報を提供することおよびエンコード・ヒントを含むソフトウェア・コードをコンパイルすることに向けられる。ある実施形態では、フレームに関連付けられたフレーム情報にアクセスすることに応答して、コンピュータ・システムはフレーム情報を、フレームの指定された部分をエンコードするための補足的なエンコード命令であるとして解釈する。次いで、コンピュータ・システムは、フレームの指定された部分が補足的なエンコード命令に従ってエンコードされるよう、フレームをエンコードする。
【００１０】
もう一つの実施形態では、コンピュータ・システムは、フレームに対応するフレーム情報にアクセスする。コンピュータ・システムは、アクセスされたフレーム情報から、そのフレームの少なくとも一部が指定された仕方でエンコードされるべきであることを判別する。次いで、コンピュータ・システムは、該指定された仕方でエンコードされるべきである前記フレームの部分を同定する補足的なエンコード命令を生成し、該補足的なエンコード命令がエンコーダに提供されるようにする。
【００１１】
さらにもう一つの実施形態では、コンピュータ・システムは、アプリケーション・コンテンツの指定された部分が特定の仕方でエンコードされるべきであるとの指示を受領する。コンピュータ・システムは、アプリケーション・コンテンツのそれらの指定された部分がどのようにエンコードされるかを示すアプリケーション・コードをそのアプリケーションに加える。次いで、コンピュータ・システムは、アプリケーションをコンパイルするが、それにより、実行されたときにコンパイルされたアプリケーションが、アプリケーション・コンテンツの指定された部分がどのようにエンコードされるべきかを示す前記情報を、そのアプリケーション・コンテンツをエンコードするよう構成されているプロセッサまたは第二のアプリケーションに提供するようにされる。
【００１２】
さて、以下の議論は実行されうるいくつかの方法および方法工程に言及する。それらの方法工程はある種の順序で論じられる、あるいは特定の順序で生起するかのようにフローチャートにおいて図示されることがありうるが、明示的に述べられているまたはある工程が、該工程が実行される前に別の工程が完了することに依存しているために必要とされるのでない限り、いかなる特定の順序も必須ではないことを注意しておくべきである。
【００１３】
本稿に記載される実施形態は、さまざまな型のコンピューティング・システムを実装しうる。これらのコンピューティング・システムは今日、ますます幅広い多様な形を取りつつある。コンピューティング・システムはたとえば、ハンドヘルド・デバイス、機器、ラップトップ・コンピュータ、デスクトップ・コンピュータ、メインフレーム、分散コンピューティング・システムまたさらには従来コンピューティング・システムであるとは考えられていなかった装置であってもよい。本稿および請求項において、用語「コンピューティング・システム」は、少なくとも一つの物理的で有体のプロセッサと、該プロセッサによって実行されうるコンピュータ実行可能命令を有することができる物理的で有体のメモリとを含むいかなる装置またはシステム（またはそれらの組み合わせ）をも含むものとして広義に定義される。コンピューティング・システムは、ネットワーク環境上に分散していてもよく、複数の構成コンピューティング・システムを含んでいてもよい。
【００１４】
図１に示されるように、コンピューティング・システム１０１は典型的には少なくとも一つの処理ユニット１０２Ａおよびメモリ１０３Ａを含む。メモリ１０３Ａは物理的なシステム・メモリであってもよく、これは揮発性、不揮発性または両者の何らかの組み合わせであってもよい。用語「メモリ」は、本稿では、物理的記憶媒体のような不揮発性の大容量記憶を指すためにも使用されうる。コンピューティング・システムが分散式である場合には、処理、メモリおよび／または記憶容量も分散されてもよい。
【００１５】
本稿での用法では、「実行可能モジュール」または「実行可能コンポーネント」は、ソフトウェア・オブジェクト、ルーチンまたはコンピューティング・システム上で実行されうる方法を指すことができる。本稿に記載される種々のコンポーネント、モジュール、エンジンおよびサービスは、コンピューティング・システム上で実行されるオブジェクトまたはプロセスとして（たとえば別個のスレッドとして）実装されてもよい。
【００１６】
以下の記述において、実施形態は、一つまたは複数のコンピューティング・システムによって実行される工程を参照して記述される。そのような工程がソフトウェアで実装される場合、その工程を実行する関連するコンピューティング・システムの一つまたは複数のプロセッサは、コンピュータ実行可能命令を実行したことに応答してコンピューティング・システムの動作を指揮する。たとえば、そのようなコンピュータ実行可能命令は、コンピュータ・プログラム・プロダクトを形成する一つまたは複数のコンピュータ可読媒体上に具現されてもよい。そのような動作の例は、データの操作に関わる。コンピュータ実行可能命令（および操作されるデータ）は、コンピューティング・システム１０１のメモリ１０３Ａに記憶されてもよい。コンピューティング・システム１０１は、該コンピューティング・システム１０１が有線もしくは無線のネットワークを通じて他のメッセージ・プロセッサと通信できるようにする通信チャネルをも含んでいてもよい。
【００１７】
本稿に記載される実施形態は、のちにより詳細に論じるようなコンピュータ・ハードウェアを含む特殊目的または汎用のコンピュータ・システムを含むまたは利用するのでもよい。システム・メモリは、全体的なメモリ１０３Ａ内に含められてもよい。システム・メモリは「メイン・メモリ」と称されてもよく、メモリ・バスを通じて前記少なくとも一つの処理ユニット１０２Ａによってアドレッシング可能なメモリ位置を含む。その場合、アドレス位置はメモリ・バス自身の上でアサートされる。システム・メモリは伝統的に揮発性だが、本稿に記載される原理はシステム・メモリが部分的またさらには完全に不揮発性である状況にも適用できる。
【００１８】
本発明の範囲内の実施形態は、コンピュータ実行可能命令および／またはデータ構造を担持または記憶する物理的なまたはその他のコンピュータ可読媒体をも含む。そのようなコンピュータ可読媒体は、汎用または特殊目的のコンピュータ・システムによってアクセスされることのできるいかなる利用可能な媒体であることもできる。コンピュータ実行可能命令および／またはデータ構造を記憶するコンピュータ可読媒体はコンピュータ記憶媒体である。コンピュータ実行可能命令および／またはデータ構造を搬送するコンピュータ可読媒体は伝送媒体である。よって、限定ではなく例として、本発明の実施形態は、コンピュータ記憶媒体および伝送媒体という、少なくとも二つの明確に異なる種類のコンピュータ可読媒体を含むことができる。
【００１９】
コンピュータ記憶媒体は、コンピュータ実行可能命令および／またはデータ構造を記憶する物理的なハードウェア記憶媒体である。物理的なハードウェア記憶媒体は、RAM、ROM、EEPROM、半導体ドライブ（「SSD」）、フラッシュメモリ、相変化メモリ（「PCM」）、光ディスク記憶、磁気ディスク記憶または他の磁気記憶デバイスまたは、本発明の開示される機能を実装するために汎用または特殊目的のコンピュータ・システムによってアクセスされ、実行されることのできるコンピュータ実行可能命令またはデータ構造の形でプログラム・コードを記憶するために使用できる他の任意のハードウェア記憶デバイスといったコンピュータ・ハードウェアを含む。
【００２０】
伝送媒体は、コンピュータ実行可能命令またはデータ構造の形でプログラム・コードを搬送するために使用でき、汎用または特殊目的のコンピュータ・システムによってアクセスされることのできるネットワークおよび／またはデータ・リンクを含むことができる。「ネットワーク」は、コンピュータ・システムおよび／またはモジュールおよび／または他の電子装置の間で電子データの輸送を可能にする一つまたは複数のデータ・リンクとして定義される。情報がネットワークまたは他の通信接続（有線、無線または有線もしくは無線の組み合わせのいずれでもよい）を通じてコンピュータ・システムに転送または提供されるとき、該コンピュータ・システムは、その接続を通信媒体として見ることができる。上記の組み合わせもコンピュータ可読媒体の範囲内に含められるべきである。
【００２１】
さらに、さまざまなコンピュータ・システム・コンポーネントに到達すると、コンピュータ実行可能命令またはデータ構造の形のプログラム・コードは自動的に伝送媒体からコンピュータ記憶媒体に（またはその逆に）転送されることができる。たとえば、ネットワークまたはデータ・リンクを通じて受領されたコンピュータ実行可能命令またはデータ構造は、ネットワーク・インターフェース・モジュール（たとえば「NIC」）内のRAMにおいてバッファリングされ、次いで最終的にコンピュータ・システムRAMおよび／またはコンピュータ・システムにおけるより揮発性の低いコンピュータ記憶媒体に転送されることができる。よって、コンピュータ記憶媒体は、伝送媒体をも利用する（またさらには伝送媒体を主として利用する）コンピュータ・システム・コンポーネントに含まれることができることが理解されるべきである。
【００２２】
コンピュータ実行可能命令はたとえば、一つまたは複数のプロセッサにおいて実行されたときに、汎用コンピュータ・システム、特殊目的のコンピュータ・システムまたは特殊目的の処理装置にある機能または機能群を実行させる命令およびデータを含む。コンピュータ実行可能命令はたとえば、バイナリー、アセンブリー言語のような中間フォーマット命令またさらにはソース・コードであってもよい。
【００２３】
当業者は、本稿に記載される原理が、多くの型のコンピュータ・システム構成をもつネットワーク・コンピューティング環境において実施されうることを理解するであろう。そうした型は、パーソナル・コンピュータ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、メッセージ・プロセッサ、ハンドヘルド装置、マルチプロセッサ・システム、マイクロプロセッサ・ベースまたはプログラム可能な消費者電子製品、ネットワークPC、ミニコンピュータ、メインフレーム・コンピュータ、携帯電話、PDA、タブレット、ポケベル、ルーター、スイッチなどを含む。本発明は、ネットワークを通じて（有線のデータ・リンク、無線のデータ・リンクまたは有線および無線データ・リンクの組み合わせによって）リンクされているローカルとリモートのコンピュータ・システム両方がタスクを実行する分散式のシステム環境において実施されてもよい。よって、分散式のシステム環境では、コンピュータ・システムは複数の構成コンピュータ・システムを含みうる。分散式のシステム環境では、ローカルおよびリモートのメモリ記憶装置の両方にプログラム・モジュールが位置していてもよい。
【００２４】
当業者は、本発明がクラウド・コンピューティング環境において実施されてもよいことも理解するであろう。クラウド・コンピューティング環境は分散式であってもよいが、これは必須ではない。分散式のときは、クラウド・コンピューティング環境は組織内で国際的に分散していてもよく、および／または複数の組織を横断して所有される諸コンポーネントを有していてもよい。本稿および付属の請求項において、「クラウド・コンピューティング」は、構成設定可能なコンピューティング資源（たとえばネットワーク、サーバー、記憶、アプリケーションおよびサービス）の共有されるプールへのオンデマンドのネットワーク・アクセスを可能にするためのモデルとして定義される。「クラウド・コンピューティング」の定義は、適正に展開されたときにそのようなモデルから得られる他の多くの利点のいずれかに限定されるものではない。
【００２５】
さらに、本稿に記載されるシステム・アーキテクチャは、全体としてのシステムの機能にそれぞれ寄与する複数の独立したコンポーネントを含むことができる。このモジュール性は、プラットフォーム・スケーラビリティーの問題に近づきつつあるときに増大した柔軟性を許容し、この目的に向け、多様な利点を提供する。システムの複雑さおよび増大は、限られた機能範囲をもつ、より小さなスケールの部分の使用を通じて、より簡単に管理できる。プラットフォームの障害耐性は、これらのゆるやかに結合されたモジュールの使用を通じて向上される。個々のコンポーネントは、ビジネス上の必要性に応じて段階的に増大させることができる。モジュール展開は、新たな機能についての市場投入までの時間の短縮にもなる。新たな機能は、コア・システムに影響することなく追加または除去できる。
【００２６】
図１は、少なくとも一つの実施形態が用いられうるコンピュータ・アーキテクチャ１００を示している。コンピュータ・アーキテクチャ１００はコンピュータ・システム１０１を含む。コンピュータ・システム１０１および１１３は、クラウド・コンピューティング・システムも含め、いかなる型のローカルなまたは分散式のコンピュータ・システムであってもよい。それぞれは、少なくとも一つのプロセッサ１０２Ａ／１０２Ｂ、メモリ１０３Ａ／１０３Ｂおよび通信モジュール１０４Ａ／１０４Ｂを含む。通信モジュールは、有線または無線のネットワーク・カード、ブルートゥース(登録商標)無線器、WiFi無線器またはデジタル・データを送信および／または受信するよう構成された他のハードウェアを含む有線または無線の通信手段を含みうる。たとえば通信モジュール１０４Ａは、コンピュータ・システム１１３の通信モジュール１０４Ｂから、エンコードされたフレーム１１２を受領してもよい。
【００２７】
いくつかの実施形態では、コンピュータ・システム１１３はサーバーであってもよい。サーバーは、単一のコンピュータ・システムであってもよく、あるいは分散式であってもよい。サーバーは、コンピュータ・システム１０１のようなクライアントにデータを提供するよう構成されていてもよい。サーバーは、入力または他のデータ要求に応答して（たとえばユーザー１０５からの入力に応答して）クライアントにアプリケーション・データを提供してもよい。いくつかの場合には、コンピュータ・システム１１３はビデオ・ゲーム・サーバーであってもよい。そのような場合、ビデオ・ゲーム・サーバーは、ビデオ・ゲーム・コンテンツをもつフレーム（たとえばエンコードされたフレーム１１２）を提供するよう構成されていてもよい。これらのフレームは典型的には何らかの仕方でエンコードされており、データ・パケットの形で転送される。これらのフレームは、動画を形成する連続的な一連のフレームを形成するために連続的なストリーミング方式で送られてもよい。ゲームのシナリオでは、フレームのこのストリームはビデオ・ゲーム出力をなす。ビデオ・ゲーム実施形態は本稿で頻繁に言及されるが、ビデオ・コンテンツがあるコンピュータ・システムから別のコンピュータ・システムに転送される（すなわちストリーミングされる）多数の可能な実施形態の単に一つの例であることは理解しておくべきである。
【００２８】
多くのビデオ・ゲームにおいて、ビデオ・ゲームのコンテンツは常時変化している。たとえば、アドベンチャー・ゲームでは、ユーザーは多くの異なる世界を旅することがあり、各世界は異なるルックアンドフィールをもち、各レベルが異なる敵、風景などをもつことがある。同じことは、一人称視点シューティングゲーム、レース・ゲーム、ロールプレイングゲームおよび他のゲームについて当てはまることがある。各レベルは異なる詳細レベルをもつことがあり、変化する詳細レベルをもつことがある。いくつかのレベルはたとえば、より低い対話性レベルをもつことがあり、よってより高いレベルの視覚的品質を提供することがある。他方、あるレベルまたはレベルの一部は、非常に高いレベルの対話性をもつことがあり、よって高品質グラフィックスよりも短い遅延を優先することがある。いくつかの状況では、ゲーム・プレーヤーまたは他の観覧者にとって特に関心があることがありうる画面〔スクリーン〕もしくはフレームのある種の領域があることがありうる。たとえば、一人称視点シューティングゲームにいるユーザーが遠くの選ばれた標的を狙って、標的を撃つ場合、ユーザーは、弾が当たったあたりの領域に追加的な詳細が与えられることを望むことがありうる。ユーザーは画面の残りの部分にはそれほど集中していないことがあり、その領域により焦点を当てていることがありうる。そのような領域は、「焦点領域」または「関心領域」と称される。
【００２９】
ビデオ・ゲーム（または他のアプリケーション）のプログラマーは、所与のゲームについて所与の時点においてこうした関心領域がどこにあるかについてのヒントを提供できることがある。たとえば、その領域に（そしておそらくは関心領域のまわりの指定された領域に）より高いレベルの視覚的忠実さを与えるために、関心領域に追加的なエンコード・ビットが割り当てられてもよい。こうして、プログラマーは、ゲーム自身においてこれらのヒントを提供しうる。すると、ヒントは、最終的にゲームについてのビデオ・フレームをエンコードするエンコーダに提供されてもよい。このようにして、ビデオ・ゲーム自身がゲーム固有の関心領域を提供でき、これがエンコーダに対して、エンコードされるビデオの追加的なビットがどこに割り当てられるべきかのヒントを与える。プログラマー／ビデオ・ゲームは、たとえば、ヘッドアップ・ディスプレイ（HUD）情報が常時読めるべきである画面の部分を示すことができる。こうして、ビデオ・ゲーム・ヒントは、画面上のどこをプレーヤーが見ている可能性が高いかを示すことができる。
【００３０】
ヒントはさらに、画面上で（すなわちビデオ・コンテンツ内で）何が現在起こっているかの指示を提供することができる。たとえば、ディスプレイは現在、黒／白に／からフェーディングしつつあることがありうる。追加的または代替的に、画面は現在、ローカルなマルチプレーヤーをサポートするために複数の領域に分割されていることがあり、それらの領域は別個に、あるいは異なるエンコード・パラメータもしくは設定をもって、エンコードされていることがある。さらに、ヒントは、3Dカメラがある方向に所与のレートで動きつつあることを示してもよい。これらは、どのようにしてヒント情報がユーザーの画面上で現在何が起こっているかの指示を提供しうるかの多くの異なる例のほんのいくつかである。
【００３１】
ゲーム・ヒントはさらに、ゲームの現在の対話性状態の指示を提供してもよい。たとえば、ゲームは、現在、非対話的なまたは対話性の低いコンテンツ（たとえばあらかじめレンダリングされたビデオ）を表示していることがある。そのようなシナリオでは、遅延よりもビデオ品質が重要であることがある。高度に対話的なモードでは、高いビデオ品質よりも低遅延が重要になることがある。他のシナリオでは、ゲームは、メニュー画面を表示しているときのように、中程度の対話性のモードであることがある。そのような場合、プログラマーは、ビデオ品質、遅延または他の何らかの因子のいずれがエンコード上で優先されるべきか、あるいはそれらが等しくエンコード上で優先されるべきかどうかについてのヒントを提供してもよい。
【００３２】
このようにして、ゲームによって提供される関心領域がエンコーダに渡されてもよく、それによりエンコーダは、それらの領域を、エンコードされるフレームの残りの部分よりも高い品質で（より多くのビットを用いて）エンコードできる。優先度付けは、最も重要な領域に対してより多くのビットが与えられ、それほど重要でない領域にいくらかのビットが割り当てられ、残りの領域には残りのビットが与えられるような仕方で適用されてもよい。
【００３３】
フェーディングするビデオを補償し、よりよくエンコードするために、重み付けされた予測が使われるべきであることをエンコーダに示すために、フェーディング・ヒントも使われてもよい。エンコーダに分割境界を横断する動き検索を試みないよう、あるいはそうした境界をまたぐブロックを典型的なブロックとは異なる設定を用いてエンコードするようエンコーダに告げるために、分割画面情報が使われることができる。カメラ動き情報は、エンコーダに、どの方向に動き検索マッチを見出す可能性が最も高いかのヒントを与え、より迅速にマッチを見出せるようにするために使用できる。
【００３４】
対話性状態ヒントは、ビデオ・エンコード品質に重点を置き、使用されるバッファリングの量を指定するために使用されてもよい。低対話性状態は、より高い品質のエンコード（たとえば双方向予測されたフレームを可能にする）およびより多くのバッファリングを許容し、ユーザーがゲームと対話しているのではなく単に見ているときに、よりなめらかな、より高品質のビデオを提供する。ゲームが高対話性状態にあるときは（ゲーム・プレイ中）、エンコードは、可能性としてはより低品質でより少ないバッファリングをもつ、可能な最低の遅延に重点を置かれてもよい。これらの概念は、それぞれ図２、図３、図４の方法２００、３００、４００に関して下記でさらに説明する。
【００３５】
上記のシステムおよびアーキテクチャに鑑み、開示される主題に基づいて実装されうる方法論は、図２、図３、図４のフローチャートを参照してよりよく理解されるであろう。説明の簡単のため、これらの方法論は一連のブロックとして図示され、記述されるが、特許請求される主題はブロックの順序によって限定されないことは理解し、認識しておくべきである。いくつかのブロックは、図示され、本稿で記載されるのとは異なる順序で行なわれてもよく、および／または他のブロックと並行して行なわれてもよい。さらに、以下に記載される方法論を実装するために、すべての図示されているブロックが必要ではないことがある。
【００３６】
図２は、補足的なエンコード命令に応答してフレームをエンコードするための方法２００のフローチャートを示している。方法２００についてここで、環境１００のコンポーネントおよびデータを頻繁に参照しつつ説明する。
【００３７】
方法２００は、少なくとも一つのフレームに関連付けられたフレーム情報の一つまたは複数の部分にアクセスする工程（工程２１０）を含む。この工程は、プロセッサによって実行されてもよく、あるいは該アクセスを実行するためのコンピュータ実行可能命令を記憶しているコンピュータ可読媒体と連携したコンピューティング・システムによって実行されてもよい。フレーム情報は、フレームまたはフレームのシーケンスのある部分がどのようにエンコードされるべきかについてのヒントを含んでいてもよい。たとえば、上述したように、開発者が、フレームのある種の領域を関心領域として指示してもよい。そのような場合、関心領域がより高い視覚的品質、より低い遅延またはその両方をもつよう、これらの関心領域は追加的なエンコード・ビットを受け取ってもよい。関心領域は、開発者によって指定された他の型の処理をも受けてもよい。コンピュータ・システム１１３のデータ・アクセス・モジュール１１５は、フレーム情報１１４を受領してもよく、あるいはフレーム情報１１４が別の位置に（たとえば可能性としてはデータベースまたは他のデータ・ストアに）記憶されている場合にはそれにアクセスしてもよい。
【００３８】
方法２００は次に、前記フレーム情報の前記一つまたは複数の部分を、そのフレームの少なくとも一つの部分をエンコードするための補足的なエンコード命令であるとして解釈する工程を含む（工程２０２）。フレーム情報１１４は、データ解釈モジュール１１６によって補足的なエンコード命令１１７であるとして解釈され、エンコードのためにエンコード・モジュール１１８に送られる。本稿での用法では、「補足的なエンコード命令」とは、フレーム情報１１４によって加えられるエンコード命令をいう。エンコード・モジュール１１８は典型的にはすでに、ビデオ・ゲームのようなソフトウェア・アプリケーションから情報を受領することに応答してフレームをエンコードするよう構成されている。そのような場合、エンコード・モジュール１１８によってエンコードされ、その後、ディスプレイ１０６上でユーザー１０５に対して可視のデコードされたフレーム１１９にデコードされるビデオ・ゲーム・コンテンツを、ビデオ・ゲーム・エンジンが提供する。ここでの実施形態では、エンコード・モジュール１１８は、フレーム情報（すなわちヒント）１１４を通じて提供される補足的なエンコード情報１１７をも考慮に入れてもよい。このようにして、開発者または他のユーザーが、アプリケーションによって通常提供されるグラフィック情報に対して補足的なエンコード・ヒントを提供しうる。次いで、エンコード・モジュール１１８は、前記部分（すなわち関心領域）が補足的なエンコード命令に従ってエンコードされるよう、フレーム１１２をエンコードする（工程２３０）。
【００３９】
いくつかの場合には、フレーム情報１１４は、フレーム全体またはフレームのシーケンス全体に影響することがある。他の場合には、フレーム情報１１４はフレームまたはフレームのシーケンスの一部のみに影響することがある。フレームのこの部分（すなわち関心領域）は、開発者によって提供されるフレーム情報１１４に従って、フレーム毎に動的に変化してもよい。たとえば、図６のＡおよびＢに示されるように、フレーム６０１Ａはフレームの左上隅に関心領域６０２Ａをもつことがあり、一方、フレーム６０１Ｂは中心近くに関心領域をもつことがある。映画の場合、この関心領域はあるオブジェクトが画面上に新たに現われたところ、あるいは筋の進展のために重要な何かが起こりつつあるところ、あるいは追加される劇的効果を与える何かが起こりつつあるところ、あるいは監督が観覧者に注意を集中させてほしいところであってもよい。実際、監督、アプリケーション開発者または他のユーザーが、各フレームについて、どこに関心領域があるべきか、その領域はどんなサイズおよび形か、単一のフレーム内に複数の関心領域があるかどうか、フレーム中の各関心領域においてどのような型の処理が行なわれるべきか、関心領域が単一のフレームに適用されるべきか一連のフレームに適用されるべきかなどを指定してもよい。当業者には理解されるであろうが、関心領域をフレームに適用させる人は、各フレームまたは一連のフレームについてのフレーム情報をカスタマイズし、調整することができる。
【００４０】
図５に示されるようないくつかの実施形態では、図１のフレーム情報１１４はビデオ・ゲームのフレームに対応してもよい。ビデオ・ゲームは、サーバー５０６（これはリモート・サーバーであってもよい）からストリーミングされる、ストリーミングされたビデオ・ゲームであってもよい。サーバー５０６は、ビデオ・ゲーム・コードを処理し、ビデオ・ゲーム・コンテンツ５０８を生成するゲーム・エンジン５０７を有していてもよい。このビデオ・ゲーム・コンテンツ５０８はエンコーダ５０９（または複数のエンコーダ）に送られ、そこでビデオ・ゲーム・コンテンツは、フレームのストリーム５０５内の単一のフレーム５０４としてエンコードされる。このフレームのストリーム５０５は有線または無線のネットワークを通じて（たとえばWiFiまたはインターネットを通じて）クライアント・コンピュータ・システム５０１に伝送されてもよい。クライアント・コンピュータ・システム５０１は、エンコードされたフレームを受領し、潜在的にはそれらのフレームに対して何らかの型の処理（たとえばデコード）を実行し、デコードされたフレーム５１１を観覧者／プレーヤーに対する表示のためにディスプレイ５０３に送る表示モジュール５０２（これは図１の表示モジュール１１１と同じであっても異なっていてもよい）を含んでいてもよい。ビデオ・ゲーム開発者は、ゲーム・アプリケーション・コード（これについては図４の方法４００に関してのちにさらに説明する）内で提供される追加的なコードを介してゲーム・エンジン５０７にフレーム情報１１４を提供してもよい。
【００４１】
こうして、ビデオ・ゲームのコンテキストにおいて、ビデオ・ゲーム開発者は、フレームのどの部分が追加の（または異なる型の）エンコード・ビットを受け取るべきかについてのヒント（すなわちフレーム情報１１４）を提供できる。このようにして、ゲーム作者は、より正確なレンダリングを提供するための関心領域を特定することができ、同時に、関心領域をみつけるために画像解析が必要とされないのでエンコードの間の時間を節約することができる。フレーム情報は、所与のフレームについて、ビデオ・ゲーム・コンテキストのより一般的な指示をも提供してもよい。たとえば、ビデオ・ゲーム作者は、フレームのあるシーケンスについて、あるいはゲームの中のあるレベルについて、雪が降っていることを示してもよい。ビデオ・ゲーム作者は、エンコード・モジュール１１８によって、フレームの複数の部分が降っている雪片を示すためにランダムなパターンで変化することになることを示す補足的なエンコード情報として解釈されるフレーム情報１１４を追加してもよい。あるいはまた、ビデオ・ゲーム作者は、フレームのシーケンスがフレームの通常の色から全部白または全部黒の画面にフェードしつつあることを示してもよい。そのような場合、ビデオ・ゲーム・オブジェクトの多くは静止したままであり、その間、色のみが多色から白または黒へと変化する。これは、エンコーダに、フェードするシーケンスの間、より低い遅延よりもより高い品質を優先させることを許容しうる。
【００４２】
ビデオ・ゲーム・コンテキストの他の多くの型が、フレームのシーケンスのうちのあるフレームをエンコードすることにおいてエンコーダを一般的に支援するために提供されうる。たとえば、フレーム情報１１４は、ゲーム（または他のアプリケーション）内でのカメラ・ビューがある方向にまたはあるパターンで（たとえば右から左に、左から右に、上から下にまたは下から上に、斜めになど）動いていることを示してもよい。カメラ・ビュー情報は、エンコーダが、フレームのどの部分が、完全に新しいのではなく、単にある方向または他の方向にシフトされつつあるかを知ることを許容しうる。いくつかの場合には、カメラは3Dカメラであってもよく、よってフレーム情報１１４はx軸およびy軸情報のほか奥行き情報（z軸）を含んでいてもよい。このビデオ・コンテキスト・フレーム情報は、関心領域を指定するフレーム情報への追加または代替でありうる。
【００４３】
関心領域は、所与のレベルについて、所与のシーンについて、所与のゲーム内ビデオについて、ゲーム・プレイのあるシーケンスについて、要素のある組み合わせ（たとえばある種の武器とある種の背景または敵など）について同じであってもよく、あるいはフレーム情報１１４の提供者によって指定される他の要素に固有であってもよい。フレーム情報は、フレーム１１２／５０４の一部について初期関心領域が定義されるべきであることおよび関心領域が時間とともに変化することを示してもよい。たとえば、関心領域は、ビデオ・ゲーム・コンテンツにおける変化に対応して時間とともに動的に変化してもよい。上記で示したように、ゲーム開発者は、どのビデオ・ゲーム・コンテンツ変化が関心領域の変化をトリガーするかを示してもよい。たとえばレース・ゲームは、事故が起こったまたはタイヤがキーと音を立てているまたは外壁にぶつかったまたは開発者によって定義される他の状況の画面上の領域に追加的なエンコード・ビットが割り当てられることを指定してもよい。ロールプレイングゲームは、プレーヤー（たとえばヒーロー）のまわりおよび敵（たとえば最終レベルのボス）のまわりまたは他のゲーム内オブジェクトのまわりの領域において追加的なエンコード・ビットが使われるべきであることを指定してもよい。こうして、関心領域は、ゲーム開発者によってそのように指定されれば、エンコード・フレーム毎に変化することがある。
【００４４】
いくつかのゲームは、水平方向に分割されたとき一人のプレーヤーが上の画面でプレイし、一人のプレーヤーが下の画面でプレイする分割画面モードを提供する（垂直方向に分割される場合には左と右の画面）。そのような場合、分割画面の各レベルについてフレーム情報１１４が提供されてもよい。すなわち、各分割レベルが、独自の関心の点と、フレームのさまざまな部分の間でエンコード・ビットがどのように分配されるべきかを記述する独自のフレーム情報（すなわちヒント）とを有していてもよい。たとえば、分割画面モードにおけるレース・ゲームでは、上の画面のプレーヤーはガソリンがなくなりつつあることがあり、よってゲームは燃料エリアのまわりをフラッシュまたは点滅させることがありうる。開発者は、これがそのユーザーにとっての関心領域である可能性が高いことを示してもよく、よって上の画面のユーザーは（潜在的に画面上には他の場所もある中で）ガソリン計のあたりに関心領域をもつであろう。下の画面のプレーヤーはガソリンをたっぷりもっていることがあるが、事故に遭遇したことがありえ、よって事故を描くために使われる画面変化をエンコードするためにより多くのエンコード・ビットを必要とすることがありうる。追加的なエンコード・ビットは、上と下の分割画面の間で均等に分配されてもよく、あるいは動的に割り当てられてもよい。このように、一方の分割画面で進行していることがほとんどなく、他方の分割画面でより多くのことが進行している場合、後者の分割画面により多くのビットが割り当てられてもよい。ゲームまたはアプリケーション・コンテンツが変化して他方の分割画面がより多くの活動をもつようになる場合には、エンコード・ビットの割り当ては、各分割画面に最適なフレーム・エンコード品質を提供するよう、しかるべく変化してもよい。
【００４５】
図７に示されるように、図１からのフレーム情報１１４は、ヘッドアップ・ディスプレイ（HUD）情報のうち向上されるべき部分を指定するために使われてもよい。たとえば、フレーム７０１において、ヘッドアップ・ディスプレイ７０２はライフ・メーター７０３、武器インジケーター７０４および保存されているアイテムのインジケーター７０５を含んでいてもよい。ゲーム・プレーヤーは、ゲームをプレイしていてもよく、ここで、保存されているアイテムのインジケーター７０５に保存されているオブジェクトをプレーヤーが取得する。そのオブジェクトは点滅していてもよく、あるいは一時的にサイズが大きくなってもよく、あるいは他の何らかの仕方で目立ってもよい。ゲームの開発者は、関心領域７０６が保存されているアイテムのまわりに存在すること、保存されている領域が追加的なエンコード・ビットを受け取るべきであることを示してもよい。上記のように、ゲーム開発者は、HUDの任意の一つまたは複数の領域を関心領域として指定でき、HUD上の関心領域は時間とともに変わってもよく、および／または各フレームについて変わってもよい。このようにして、関心領域がHUDのある領域にあるかフレームの別の部分にあるかによらず、ゲーム開発者は、所与の瞬間に観覧者がフレーム上のどこを見ている可能性が最も高いかを示し、それらの領域に対して追加的な処理を実行させるためにフレーム情報１１４を提供してもよい。
【００４６】
ここで図３に目を転じると、フレームについてのエンコード情報を提供するための方法３００のフローチャートが示されている。方法３００についてここで環境１００のコンポーネントおよびデータを頻繁に参照しつつ説明する。
【００４７】
方法３００は、少なくとも一つのフレームに対応するフレーム情報の一つまたは複数の部分にアクセスする工程を含む（工程３１０）。たとえば、図１のデータ・アクセス・モジュール１１５は、アプリケーション・コンテンツを含む一つまたは複数のエンコードされたフレーム１１２に対応するフレーム情報１１４にアクセスしてもよい。データ解釈モジュール１１６は、アクセスされたフレーム情報から、そのフレームの少なくとも一つの部分が指定された仕方でエンコードされるべきであることを判別してもよい（工程３２０）。たとえば、上記のように、開発者または他のユーザーは、フレーム（またはその一部）がどのようにエンコードされるべきかを指定できてもよい。開発者は、関心領域を指定してもよく、それらの関心領域についてある種のエンコード方法またはエンコード上の優先事項を指定してもよい。このようにして、フレームは、開発者によって指定された仕方でエンコードされる。コンピュータ・システム１１３内のデータ解釈モジュール１１６（または別のモジュール）は、指定された仕方でエンコードされるべきである前記フレームの一つまたは複数の部分を同定する補足的なエンコード命令を生成し（工程３３０）、次いで、該補足的なエンコード命令をエンコーダに提供（工程３４０）させてもよい。こうして、補足的なエンコード情報１１７はエンコード・モジュール１１８（これ自身がエンコーダであってもよいし、あるいは該モジュールの一部としてエンコーダを含んでいてもよい）に送られることができ、そこでフレームはエンコードされてコンピュータ・システム１０１に渡される。コンピュータ・システム１０１の表示モジュール１１１は次いでディスプレイ１０６での表示のためにエンコードされたフレームをデコードしてもよい。
【００４８】
いくつかの場合には、コンピュータ・システム１１３は、フレームが対応する、アプリケーションについての対話性状態を判別してもよい。たとえば、コンピュータ・システム１１３は、現在大量の対話活動がある（たとえばユーザー１０５が現在ボタンを押しているおよび／またはジョイスティックを制御しているなど）かどうか、あるいは現在少量の対話活動がある（たとえば映画の間など）かどうかを判別してもよい。ひとたび所与のフレームに関して対話性状態が判別されたら、補足的なエンコード命令は変更されてもよい。たとえば、補足的なエンコード命令は、フレーム上の関心領域（たとえば図６のＡのフレーム６０１における６０２Ａ）を示してもよい。対話性状態は、きわめてアクティブであると判別されることがあり、よって関心領域はサイズを縮小されてもよく、あるいは判別されたきわめて対話的な状態に対応するために追加的なエンコード・ビットの数が増やされてもよい。同様に、対話性状態が低いと判別される場合には、関心領域はサイズを増大されてもよく、あるいは判別された、より低い対話性状態に整合して追加的なエンコード・ビットの数が減らされてもよい。よって、補足的なエンコード命令は、決定された現在の対話性状態に従って変更されてもよい。
【００４９】
さらにまた、補足的なエンコード命令自身が、判別された対話性状態に依存していてもよい。そのような場合、開発者は、関心領域の数が対話性とともに変化できること、あるいはサイズが対話性ともに変化できることなどを示してもよい。いくつかの場合には、アプリケーション（ビデオ・ゲームなど）が現在、高対話性状態にあると判別される場合、低遅延のエンコードがより高品質のエンコードより優先されてもよい。さらに、アプリケーションが低対話性状態にあると判別される場合には、より高品質のエンコードが低遅延のエンコードより優先されてもよい。異なるエンコード技法またはエンコード・ビットの異なる適用も、高対話性または低対話性のシナリオのために使われてもよい。このようにして、開発者は、補足的なエンコード命令１１７が変更されうる、あるいは該アプリケーションとの対話の判別されたレベルに依存しうることを指定できてもよい。開発者は、図４に関して下記に示されるアプリケーションにフレーム情報１１４（すなわちヒント）を追加してもよい。
【００５０】
図４は、エンコード・ヒントを含むソフトウェア・コードをコンパイルするための方法４００のフローチャートを示している。方法４００についてここで環境１００のコンポーネントおよびデータを頻繁に参照しつつ説明する。
【００５１】
方法４００は、アプリケーション・コンテンツの一つまたは複数の部分が特定の仕方でエンコードされるべきであるとの指示を受領する工程を含む（工程４１０）。たとえば、開発者または他のユーザー１０５が、フレーム上のさまざまな関心領域がユーザーによって指定される仕方でエンコードされるべきであることを示してもよい。ユーザーは、この指示を、そのユーザーからの入力を介してコンピュータ・システム１０１に提供してもよい。次いで、コンピュータ・システムは、アプリケーション・コード１０８をそのアプリケーション１０７に加える。ここで、追加されるアプリケーション・コードは、アプリケーション・コンテンツのそれらの指定された部分がどのようにエンコードされるべきかを示す情報１０９を含む。（工程４２０）この情報１０９は、最終的にデータ・アクセス・モジュール１１５に提供されるフレーム情報１１４と同様または同じであってもよい。次いで、コンピュータ・システム１０１のコンパイル・モジュール１１０は、アプリケーションをコンパイルするが、それにより、実行されたときにコンパイルされたアプリケーションが、アプリケーション・コンテンツの指定された部分がどのようにエンコードされるべきかを示す前記情報１０９を、そのアプリケーション・コンテンツをエンコードするよう構成されているプロセッサまたは第二のアプリケーションに提供するようにされる（工程４３０）。
【００５２】
ユーザー１０５によって提供される情報１０９は、フレーム・コンテンツのある種の部分がどのようにエンコードされるべきかを示すヒントであってもよい。このヒント情報は、アプリケーションのコードに（たとえばビデオ・ゲームのコードに）統合されてもよく、それにより、別のアプリケーション（たとえばゲーム・エンジン５０７）または別のプロセッサ（たとえばコンピュータ・システム１１３の１０３Ｂ）がゲーム・コードにアクセスするとき、ヒント情報１０９はすでにゲーム・コードの一部となっている。すると、ゲーム・エンジンはフレーム情報にアクセスし、ビデオ・ゲーム（または他のアプリケーション・コンテンツ）のフレームを、開発者によって指定される仕方でエンコードすることができる。開発者は、アプリケーション・コンテンツのさまざまな部分が、ビデオ・ゲーム・コンテンツに基づいて、フレーム内で起こっているある種のこと（たとえばある種のカメラ動きまたはある種のキャラクターまたはある種の動きなど）に基づいて、あるいは他の要因に基づいて動的に変更されることを指定してもよい。開発者は、画面のどの領域がゲーム、映画またはアプリケーションのその時点において見られている可能性が最も高いか、およびどれが追加的なおよび／または異なる型の処理を受けるべきであるかを指定してももよい。
【００５３】
このように、補足的なエンコード命令に応答してフレームをエンコードする方法、システムおよびコンピュータ・プログラム・プロダクトが提供される。さらに、フレームについてのエンコード情報を提供し、エンコード・ヒントを含むソフトウェア・コードをコンパイルする方法、システムおよびコンピュータ・プログラム・プロダクトが提供される。
【００５４】
本稿に記載される概念および特徴は、その精神または記述的な特性から外れることなく、他の具体的な形で具現されてもよい。記載される実施形態は、あらゆる観点で単に例示するものであり、制約するものではないと考えられるべきである。したがって、本開示の範囲は、上記の記述ではなく、付属の請求項によって示される。請求項の意味および等価な範囲内にはいるあらゆる変更は、その範囲に含まれる。
【図１】
2017517921.tif 000003
【図２】
2017517921.tif 000004
【図３】
2017517921.tif 000005
【図４】
2017517921.tif 000006
【図５】
2017517921.tif 000007
【図６】
2017517921.tif 000008
【図７】
2017517921.tif 000009
【国際調査報告】
2017517921.tif 000010
2017517921.tif 000011
2017517921.tif 000012
2017517921.tif 000013
2017517921.tif 000014