(57)【特許請求の範囲】
【請求項１】
方法であって、
複数のビデオストリームをレンダリングする段階であって、前記複数のビデオストリームはそれぞれが、コンポジットビデオ画像のうち一の一意的な領域に対応し、一連のビデオフレームを有する、レンダリングする段階と、
前記複数のビデオストリームの複数の前記ビデオフレームが生成されると、対応するソケット接続に前記複数のビデオフレームを選択的に書き込む段階と、
を備え、
前記複数のビデオフレームを選択的に書き込む段階は、前記コンポジットビデオ画像の前記一意的な領域のそれぞれについて、
現在のビデオフレームが、前記一意的な領域に対応する既にレンダリングされたフレームとは知覚的に異なるか否かを判断する段階と、
前記現在のビデオフレームが前記既にレンダリングされたフレームとは知覚的に異なる場合、前記ソケット接続に前記現在のビデオフレームを書き込む段階と
を有し、
前記方法は更に、
構造化ドキュメントをリモートホストに送信する段階であって、前記構造化ドキュメントが前記複数のビデオストリームへの複数のインライン参照を含み、当該複数のインライン参照によって、前記リモートホストが前記複数のビデオストリームを要求可能となる、構造化ドキュメントをリモートホストに送信する段階
を備える、方法。
【請求項２】
前記複数のビデオストリームの前記複数のビデオフレームを、ステートレス圧縮形式を利用して、符号化する段階をさらに備える請求項１に記載の方法。
【請求項３】
前記ステートレス圧縮形式は、Ｍ−ＪＰＥＧ形式である請求項２に記載の方法。
【請求項４】
前記ソケット接続は、トランスミッションコントロールプロトコル（ＴＣＰ）ソケット接続である請求項１から３のいずれか一項に記載の方法。
【請求項５】
前記複数のインライン参照は、前記構造化ドキュメントに埋め込まれているテーブルを構成する対応する複数のセルに含まれる請求項１から４のいずれか一項に記載の方法。
【請求項６】
前記複数のインライン参照は、前記構造化ドキュメントに埋め込まれている対応する複数のＤＩＶセクションエレメントに含まれる請求項１から４のいずれか一項に記載の方法。
【請求項７】
コンピュータに、
複数のビデオストリームをレンダリングする手順であって、前記複数のビデオストリームはそれぞれ、コンポジットビデオ画像のうち一の一意的な領域に対応し、一連のビデオフレームを有する、レンダリングする手順と、
前記複数のビデオストリームの複数の前記ビデオフレームが生成されると、対応するソケット接続に前記複数のビデオフレームを選択的に書き込む手順と、
を実行させ、
前記複数のビデオフレームを選択的に書き込む手順は、前記一意的な領域のそれぞれについて、
現在のビデオフレームが、前記一意的な領域に対応する既にレンダリングされたフレームとは知覚的に異なるか否かを判断する手順と、
前記現在のビデオフレームが前記既にレンダリングされたフレームとは知覚的に異なる場合、前記ソケット接続に前記現在のビデオフレームを書き込む手順と
を含み、
前記コンピュータにさらに、
構造化ドキュメントをリモートホストに送信させる手順であって、前記構造化ドキュメントが前記複数のビデオストリームへの複数のインライン参照を含み、当該複数のインライン参照によって、前記リモートホストが前記複数のビデオストリームを要求可能となる、構造化ドキュメントをリモートホストに送信させる手順
を実行させる、プログラム。
【請求項８】
前記コンピュータにさらに、ステートレス圧縮形式を利用して前記複数のビデオストリームの前記複数のビデオフレームを符号化させる手順を実行させる請求項７に記載のプログラム。
【請求項９】
前記ステートレス圧縮形式は、Ｍ−ＪＰＥＧ形式である請求項８に記載のプログラム。
【請求項１０】
前記ソケット接続は、トランスミッションコントロールプロトコル（ＴＣＰ）ソケット接続である請求項７から９のいずれか一項に記載のプログラム。
【請求項１１】
前記複数のインライン参照は、前記構造化ドキュメントに埋め込まれているテーブルを構成する複数の対応するセルに含まれる請求項７から１０のいずれか一項に記載のプログラム。
【請求項１２】
前記複数のインライン参照は、前記構造化ドキュメントに埋め込まれている対応する複数のＤＩＶセクションエレメントに含まれる請求項７から１０のいずれか一項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は概して、ビデオストリーミングに関する。
【背景技術】
【０００２】
クライアント−サーバアーキテクチャは概して、タスクまたは負荷を、「サービス提供側」と見なされる複数のサーバと、「サービス要求側」または「サービス消費側」と見なされる複数のクライアントとの間で分割する分散型コンピューティングアーキテクチャである。多くの場合、サーバおよびクライアントは、コンピュータネットワークを介して接続され、さまざまな種類のデータが、各サーバと、各クライアントとの間で、コンピュータネットワークを介して双方向に送信されるとしてよい。
【０００３】
サーバは通常、クライアントよりも、リソースが多く、性能が高い。サーバは、１以上のクライアントとの間で、リソースを共有するとしてよく、例えば、特定のタスクをクライアントのために実行する（つまり、クライアントにサービスを提供する）としてよい。サーバは、クライアントよりも持っているリソースが通常多いので、タスク、特に、リソースを大量に利用するタスクを、クライアントよりもはるかに高速に完了させることができるとしてよい。
【０００４】
サーバとクライアントとの間でやり取りされるデータは、任意の適切なデータ形式を利用して表現されるとしてよく、任意の適切な通信プロトコルを利用して送信されるとしてよい。例えば、クライアントのためにアプリケーションがサーバ上で実行されると、当該アプリケーションの出力は、ハイパーテキストマークアップランゲージ（ＨＴＭＬ）ドキュメントまたはエクステンシブルマークアップランゲージ（ＸＭＬ）ドキュメント等の構造化ドキュメントを用いて表現されるとしてよい。サーバは、アプリケーションの出力を表現するデータを含むＨＴＭＬドキュメントまたはＸＭＬドキュメントを、サーバとクライアントとの間のハイパーテキスト・トランスファー・プロトコル（ＨＴＴＰ）接続を介して、クライアントに送信するとしてよい。クライアントは、ＨＴＭＬドキュメントまたはＸＭＬドキュメントを受信すると、当該ドキュメントを消費して、ＨＴＭＬドキュメントまたはＸＭＬドキュメントをローカルに用いてアプリケーションの出力を、例えば、クライアント上で実行されているウェブブラウザとしてレンダリングするとしてよい。
【０００５】
モーションＪＰＥＧ（Ｍ−ＪＰＥＧ）は、デジタルビデオシーケンスの各インターレースフィールドまたは各ビデオフレームが別々にＪＰＥＧ画像として圧縮されるビデオ形式である。言い換えると、Ｍ−ＪＰＥＧは、先にレンダリングされたフレームからの情報が後続のフレームを圧縮するために利用されないので、ステートレス圧縮を利用する。しかし、Ｍ−ＪＰＥＧは、レイテンシが小さいという特徴がある。クライアントデバイスは、圧縮されたモーションＪＰＥＧビデオの１フレームを受信すると、当該フレームを即座に復元して表示するので、レイテンシが非常に小さくなる。Ｍ−ＪＰＥＧは、元々マルチメディアＰＣアプリケーション用に開発されたが、当該分野では既により高度な形式に取って代わられ、現在では、デジタルカメラ等のビデオ撮影機能を持つ多くのポータブルデバイスで利用されている。モーションＪＰＥＧは、離散コサイン変換（ＤＣＴ）に基づいた、不可逆的な方式のイントラフレーム圧縮を利用する。この数値演算によって、ビデオソースの各フレーム／フィールドは、時間ドメインから周波数ドメインへと変換される。人間の心理知覚システムに大まかに似せた知覚モデルでは、高周波数情報、つまり、強度および色相の急激な変化を破棄する。変換ドメインでは、情報を低減するプロセスは量子化と呼ばれる。量子化は、大きな数値スケール（各数値の発生率は異なる）を小さな数値スケールに低減する最適な方法である。そして、変換ドメインは、高周波数係数は、他の係数に比べてピクチャ全体への貢献度が少なく、値が小さいという特徴があり、圧縮率が高いので、画像を表現するのに便利である。量子化された係数はこの後、順番に並べられ、可逆的に出力ビットストリームに入れられる。
【０００６】
モジラ（Ｍｏｚｉｌｌａ）およびウェブキット（Ｗｅｂｋｉｔ）をベースとするブラウザは本来、Ｍ−ＪＰＥＧストリームを鑑賞できるようにサポートがあるが、他のブラウザは、外部のプラグインまたはアプレットを用いてＭ−ＪＰＥＧストリームをサポートすることができる。ＨＴＴＰストリーミングでは、各画像を特定のマーカー上で複数の個別のＨＴＴＰ応答に分割する。ＲＴＰストリーミングでは、クイックタイム（ＱｕｉｃｋＴｉｍｅ）またはＶＬＣ等のクライアントによって受信され得るＪＰＥＧ画像シーケンスのパケットを作成する。上述されるサーバソフトウェアは、ＨＴＴＰでＪＰＥＧシーケンスをストリーミングする。特別なマイム（ｍｉｍｅ）型のｃｏｎｔｅｎｔ  ｔｙｐｅ  ｍｕｌｔｉｐａｒｔ／ｘ−ｍｉｘｅｄ−ｒｅｐｌａｃｅ；ｂｏｕｎｄａｒｙ＝は、特別な境界によって返答が分割されるので、複数の部分が考えられるとブラウザに通知する。この境界は、ＭＩＭＥ型の内部で定義される。Ｍ−ＪＰＥＧストリームの場合、ＪＰＥＧデータは、正しいＨＴＴＰヘッダでクライアントに送信される。ＴＣＰ接続は、クライアントが新しいフレームを受信することを望み、サーバは新しいフレームを提供することを望む限りにおいて、閉じられない。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、ビデオ圧縮を改善するべく、ステートレス方式のビデオ圧縮およびビデオ画像分割化を利用する新式のビデオレンダリング方法およびビデオストリーミング方法に関する方法、装置およびシステムを提供する。一部の実施例によると、本明細書で説明するビデオ圧縮技術およびビデオストリーミング技術は、標準的なブラウザをホストするクライアントデバイスに高精細ビデオゲームを配信可能とするべく、利用され得る。
【０００８】
本開示の上記およびその他の特徴、側面および利点は、詳細な説明で、以下の図面を参照しつつより詳細に後述する。
【図面の簡単な説明】
【０００９】
【図１】クライアントとサーバとの間の複数の接続を示す概略図である。
【図２】一例となるビデオストリーミング方法を示すフローチャートである。
【図３】本発明の別の実施例に係る、クライアントとサーバとの間の複数の接続を説明する概略図である。
【図４】別の例に係るビデオストリーミング方法を示すフローチャートである。
【図５】複数のクライアント間でサーバのリソースを割り当てるクライアント−サーバシステムの一例を示す図である。
【図６】ネットワーク環境の一例を示す図である。
【図７】コンピュータシステムの一例を示す図である。
【発明を実施するための形態】
【００１０】
本開示を以下で、添付図面に図示されている実施形態を参照しつつ詳細に説明する。以下に記載する説明では、本開示をよく理解していただくべく、数多く具体的且つ詳細な内容を記載する。しかし、本開示は記載する具体的且つ詳細な内容の一部または全てを利用することなく実施し得ることは当業者には明らかである。また、公知の処理ステップおよび／または構造は、本開示を不要にあいまいにすることを避けるべく、詳細な説明を省略する。また、本開示は具体的な実施形態を参照しつつ説明されるが、本明細書は説明した実施形態に本開示を限定するものではないと理解されたい。これとは対照的に、本明細書は、請求項が定義する本開示の意図および範囲には変更例、変形例および均等例を含むものとする。
【００１１】
クライアント−サーバアーキテクチャによって、サーバは、自分のリソースを１以上のクライアントと共有することができるようになる。このようなアーキテクチャは、さまざまな利点がある。例えば、サーバは通常、クライアントよりもリソース（例えば、プロセッサまたはメモリ）が多く、性能も高いので、サーバはクライアントよりもタスクを高速に完了するとしてよい。このような性能の差は、タスクのリソースに対する要求が高い場合、または、クライアントのリソースが限られている場合に、特に顕著である。同時に、クライアントの代わりに、または、クライアントのためにサーバがタスクを実行している間、クライアントのリソースは、他のタスク、例えば、クライアントでローカルに実行する必要があるタスク（例えば、クライアントのユーザとのやり取り）等を実行するために自由に使えるとしてよい。
【００１２】
サーバで実行するのに適したタスクの１つとして、サーバがホストするアプリケーションをクライアントへ送信するビデオ出力としてレンダリングするタスクが挙げられるとしてよい。コンピュータグラフィクスに関連して言えば、レンダリングは、モデルから、通常は、コンピュータプログラムを利用して、画像を生成するプロセスと考えられるとしてよい。このモデルは通常、３次元（３Ｄ）物体を記述したものであり、厳密に定義された言語またはデータ構造で表現されるとしてよい。当該モデルは、幾何学的構造、視点、テクスチャ、照明、陰影、動き等の適切な種類の情報を含むとしてよい。当該モデルをレンダリングして得られる画像は、デジタル画像またはラスタリンググラフィクス画像であるとしてよく、複数の画素の集合によって形成されるとしてよい。本開示は、任意のアプリケーションの任意の出力を表現する画像を生成することと、レンダリングの概念を拡大して解釈する。レンダリングは、任意のデータ、例えば、２次元（２Ｄ）データおよび３Ｄデータに基づいて実行されるとしてよい。３Ｄモデルに基づいて画像を生成することに加えて、具体的な実施形態では、例えば、これらに限定されないが、ウェブブラウザアプリケーション、ワードプロセッシングアプリケーション、スプレッドシートアプリケーション、マルチメディアアプリケーション、科学および医療関連のアプリケーション、およびゲームアプリケーション等のアプリケーションの出力を表現する画像をレンダリングするとしてよい。
【００１３】
レンダリングは、レンダリングプロセスは大抵、演算が非常に多く、多くのリソースが必要であるので、サーバで実行するのに適した種類のタスクであるとしてよい。レンダリングで得られる画像が高解像度および高品質である場合には特にそうである。過去には、旧式のコンピュータシステムでは、３次元モデルを１つの２Ｄ画像にレンダリングするために、数時間または数日もかかることもあった。コンピュータハードウェア、特に、コンピュータグラフィクスアプリケーション（例えば、ゲーム、マルチメディア、娯楽またはマップ）専用に設計されたコンピュータハードウェアの発展および進歩と共に、今日のコンピュータシステムは、各画像を、数秒または数ミリ秒でレンダリングすることができるとしてよい。実際、多くのケースで、モデルを１つの画像にレンダリングする場合、サーバで利用可能なリソースを全て使うことはない。
【００１４】
図５は、サーバ１２０が複数のクライアント１３０について同時に複数のレンダリング処理を実行するシステムの一例を示す図である。尚、説明を簡略化するべく、図５に図示しているクライアントは、１３０Ａ、１３０Ｂ、１３０Ｃ、１３０Ｄの４つのみである。実際のサーバは、任意の数のクライアントについてレンダリングを同時に実行するとしてよく、任意の時点においてサーバがサポートするクライアントの数に理論上の制限はない。同様に、説明を簡略化するべく、図５に図示しているＧＰＵ１２１およびＣＰＵ１２２はそれぞれ１つのみである。実際のサーバは、任意の数のＧＰＵおよびＣＰＵを備えるとしてよい。
【００１５】
具体的な実施形態では、サーバ１２０は、複数の別箇の物理的な通信経路１５０を介して、各クライアント１３０に接続されている。具体的な実施形態では、サーバ１２０とクライアント１３０との間の通信経路１５０は、コンピュータネットワーク、例えば、これらに限定されることないが、インターネット、イントラネット、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、無線ネットワーク、または、これらのうち２つ以上のコンピュータネットワークの組み合わせを介したネットワーク接続を含むとしてよい。具体的な実施形態において、ネットワーク通信経路１５０はそれぞれ、トランスポートコントロールプロトコル（ＴＣＰ）接続、ユーザデータグラムプロトコル（ＵＤＰ）接続、または、任意のその他の適切な接続であってよい。具体的な実施形態によると、サーバ１２０は複数のＴＣＰソケット１２４を備えるとしてよく、各クライアント１３０は１以上の異なるＴＣＰソケット１２４に接続されるとしてよい。
【００１６】
具体的な実施形態によると、サーバ１２０と各クライアント１３０との間で、対応する通信経路１５０を介して双方向にデータをやり取りするとしてよい。例えば、サーバ１２０およびクライアント１３０Ａは、通信経路１５０Ａを介して双方向にデータをやり取りするとしてよい。データは、任意の適切な形式を持つとしてよい。例えば、サーバ１２０は、ビデオストリームの形式でクライアント１３０にデータを送信するとしてよく、クライアント１３０はそれぞれ、データをサーバ１２０に送信するとしてよい。サーバ１２０とクライアント１３０との間の通信は、任意の適切なプロトコルを利用するとしてよい。例えば、アプリケーション１３１Ａのインスタンスがクライアント１３０Ａのためにサーバ１２０上で実行される場合を考える。サーバ１２０で実行されるアプリケーション１３１Ａのインスタンスの出力がレンダリングされると、サーバ１２０からクライアント１３０Ａへと、ビデオストリームの形式で、送信されるとしてよい。レンダリングされた各画像は、ビデオストリームの特定のフレームとして、アプリケーション１３１Ａのインスタンスの出力を表現している。クライアント１３０Ａで受信される入力、特に、サーバ１２０上で実行されているアプリケーション１３１Ａのインスタンスの状態を変化させるような入力は、クライアント１３０Ａからサーバ１２０へと送信されるとしてよい。
【００１７】
具体的な実施形態によると、サーバ１２０は、１以上の中央演算処理装置（ＣＰＵ）１２２および１以上のグラフィクスプロセッシングユニット（ＧＰＵ）１２１を有するとしてよい。ＣＰＵおよびＧＰＵは、コンピュータの分野で公知である。簡単に言うと、ＣＰＵは、コンピュータの機能を実行し、コンピュータプログラムの命令を実行するコンピュータシステムの一部である。ＧＰＵは、マイクロプロセッサ（例えば、ＣＰＵ）からグラフィクスレンダリングを請け負う特定用途向けプロセッサである。一般的に、ＧＰＵは、コンピュータグラフィクスの処理を非常に効率的に行い、非常に高度な並列構造を持っているので、多岐にわたる複雑なアルゴリズム（例えば、グラフィクス関連のアルゴリズム）について汎用ＣＰＵよりも効率的である。具体的な実施形態によると、ＧＰＵ１２１は、ビデオカードの一部であってもよいし、または、サーバ１２０のマザーボード上にあるとしてよい。
【００１８】
特定の実施形態によると、ＧＰＵ１２１は、レンダリングターゲットを含むとしてよい。特定の実施形態によると、レンダリングプロセスによって、１以上のアプリケーションの出力は、１以上の画像として、レンダリングターゲットへとレンダリングされる。特定の実施形態によると、レンダリングされた２Ｄ画像は、ＧＰＵ１２１のレンダリングターゲットに格納されるとしてよい。特定の実施形態によると、レンダリングターゲットは、ＧＰＵ１２１内の、フレームバッファまたは任意の適切な種類のメモリまたはストレージであるとしてよい。後述するように、レンダリングターゲットは、複数の部分またはフレーム領域に分割されるとしてよい。
【００１９】
ゲームのプレイ中、または、サーバ１２０がホストしているアプリケーションの利用中、クライアントシステム１３０は、キーボードおよび／またはコントローラを介したユーザからの入力を受信して、通信経路１５０を介してサーバ１２０へと送信する。サーバ１２０は、これに応じてゲームプログラムコードを実行し、ゲームまたはアプリケーションソフトウェア用のビデオ出力（ビデオ画像シーケンス）の複数の連続したフレームを生成する。例えば、ユーザがジョイスティック等のコントローラを、スクリーン上でプレーヤキャラクタを右に移動させるように操作する場合、サーバ１２０がホストしているアプリケーションは、プレーヤキャラクタを右に移動させるビデオ画像シーケンスを作成する。このビデオ画像シーケンスは、圧縮され、表示されるべくクライアントシステム１３０へと送信されるとしてよい。クライアントシステム１３０は、圧縮されたビデオストリームを復号して、復元されたビデオ画像を表示デバイス上にレンダリングする。これについては、以下でより詳しく説明する。
【００２０】
図１は、本発明の実施形態を示す概念図である。一実施例によると、ブラウザまたはその他のクライアントアプリケーションをホストしているクライアント２０は、ビデオストリームが埋め込まれたウェブページを求めるＨＴＴＰ要求を送信するとしてよい。ビデオストリームは、インタラクティブ式ゲームまたは事前に記録されているビデオの一部であってよい。ウェブページを求める要求に応じて、サーバ３０は、ブラウザで処理するべく、ハイパーテキストマークアップランゲージ（ＨＴＭＬ）ページをクライアント２０に送信する。当業者であれば想到するであろうが、他の構造化ドキュメント形式、例えば、ＸＭＬ、ＳＧＭＬ等を利用することもできる。一実施例によると、構造化ドキュメントは、さまざまなＩ／Ｏ入力ストリーム（例えば、マウス移動データ、ジョイスティックデータ、キーストローク）のリスナーとして登録されており、Ｉ／Ｏ入力データをサーバ３０に送信するＪａｖａＳｃｒｉｐｔ（登録商標）モジュールを含むとしてよい。
【００２１】
クライアント２０に返送されたＨＴＭＬページは、複数のｍｊｐｅｇストリームへの参照が埋め込まれている。各ｍｊｐｅｇストリームは、ビデオ画像全体の一の一意的な領域に対応する。各ｍｊｐｅｇストリームは別個の参照であるので、ＨＴＭＬコードは、ブラウザから、ストリーム毎に別個のＨＴＴＰ要求を送信させる。これによって、図１に示すように、クライアント２０とサーバ３０との間には、複数の別箇のトランスポートコントロールプロトコル（ＴＣＰ）接続２５が構築される。クライアント２０およびサーバ３０上でホストされているアプリケーションに関して、データは、各接続２５に対応する、いわゆるソケットに書き込まれる。図１は、ビデオフレーム全体が１６個の一意的なフレーム領域に分割される様子を示している。当業者であれば、グリッドセルの数およびアスペクト比を変更し得ることに想到するであろう。例えば、ビデオフレーム全体は、複数の行に分割されて１×Ｎ個のマトリクスを形成するか、または、複数の行に分割されてＮ×１のマトリクスを形成するとしてよい。また、グリッドセルは、サイズを均一にする必要はない。
【００２２】
上述したように、ｍｊｐｅｇストリームの特性は、ビデオフレームシーケンスを形成するＪＰＥＧ画像が符号化可能であり、比較的高速に低レイテンシで復号化可能であるという点にある。ｍｊｐｅｇストリーム処理の別の属性は、ブラウザが最後に受信したフレームを新しいフレームを受信するまで表示する点にある。したがって、新しいフレームを受信しない場合には、ブラウザは最後に受信したフレームを表示し続ける。
【００２３】
構造化ドキュメントのＨＴＭＬコードは、図１に示すように、ビデオフレーム全体を構成する複数の一意的な領域が互いに位置合わせされている構成を持つ。一実施例によると、フレーム領域は、ＨＴＭＬテーブルを用いて位置合わせされるとしてよく、テーブルの各セルは異なるフレーム領域に対応する。他の実施例によると、各フレーム領域は、ＤＩＶセクションに対応するとしてよい。所望に応じて、フレーム領域の相対的な位置を修正するべく、カスケーディングスタイルシートおよび絶対位置決め特性を利用することができる。一実施例によると、サーバ３０は、ビデオフレーム群を生成するとしてよい。各ビデオフレームは、ＧＰＵのメモリ（一例）内、または、メインメモリ（ＣＰＵ処理が利用される場合）内のバッファにビットマップとして格納される。フレーム全体はそれぞれバッファに格納されるので、ビデオ送信プロセスは、以下でさらに詳細に説明するが、バッファされている完全なフレームのうち各領域を符号化して、バッファされているフレームデータの各領域の符号化結果を、完全なフレームの一意的な領域に対応する各ソケット接続に書き込むとしてよい。
【００２４】
図２は、ビデオフレーム全体を構成する複数の一意的な領域に対応する、符号化ビデオフレームデータを選択的に書き込むプロセスの一例を示す図である。図２が示すように、フレーム領域配信プロセスは、バッファに格納されている現在レンダリングされているフレームにアクセスし（２０２）、レンダリングフレームの対応領域が履歴バッファに格納されているフレーム領域と知覚的に異なるか否かを判断する（２０４）。現在のフレーム領域と、履歴バッファ内の既にレンダリングされた領域との間に知覚的に差がない場合、フレーム領域配信プロセスは、フレーム領域データを対応する通信ソケットに書き込まない。
【００２５】
一のフレーム領域が知覚的に他のフレーム領域と異なるか否かを判断する処理は、さまざまな方法で実現され得る。例えば、フレーム領域配信プロセスは、画素単位でビットマップの成分値に対してＸＯＲ演算を行って、各画素で差があるか否かを判断するとしてよい。別の実施例では、メモリ比較関数、例えば、ｍｅｍｃｍｐ（標準的なＣライブラリ関数）を用いてフレーム領域を比較するとしてもよい。一実施例によると、検出された差はいずれも、知覚的な差と見なされる。他の実施例によると、フレーム領域配信プロセスは、各ビットマップの成分値を画素単位で比較して、各ビットマップの成分値同士の間の距離値（例えば、ユークリッド距離または距離の絶対値の和）を算出するとしてよい。平均距離がしきい値より大きい場合、フレーム領域は知覚的に差があると見なされる。
【００２６】
現在のフレーム領域と、履歴バッファ内の既にレンダリングされた領域との間に知覚的な差がある場合、フレーム領域配信プロセスは、フレーム領域を履歴バッファに書き込み、既に格納されているフレーム領域を上書きする（２０６）。フレーム領域配信プロセスは、一実施例によると、ビットマップデータをＪＰＥＧ画像に圧縮することによってフレーム領域を符号化して（２０８）、符号化フレーム領域データを、フレーム領域に対応するソケットに書き込む（２１０）。
【００２７】
上述したフレーム領域配信プロセスは、フレーム領域毎に別箇のスレッドとして実行されるとしてもよいし、および／または、例えば、米国特許出願第１２／７９７，７８８号に開示されているように、グラフィクスプロセッシングユニットの高い並列処理機能を利用して並列に実行されるとしてもよい。この特許文献は、参照により本願に組み込まれる。上記を鑑みると、上述した構成は、所与の領域において知覚的に差が検出された場合にのみフレーム領域データを送信することによって、ステートレス方式のビデオ圧縮およびストリーミング方法（ここでは、Ｍ−ＪＰＥＧ）を用いたインターフレーム圧縮形式を実現することが分かる。したがって、この高度ビデオ圧縮方式は、Ｍ−ＪＰＥＧをサポートするので特定用途向けクライアントアプリケーションまたはコーデックをインストールする必要がないブラウザのみを含むリモートホストと組み合わせて実現することが可能である。
【００２８】
上述した実施形態では、高度ビデオ圧縮機能は、帯域幅利用率を浪費しないように利用することができる。他の実施例では、ビデオ圧縮機能は、所与の公称帯域幅割り当てまたは目標帯域幅割り当てにおいて、ビデオ品質を向上させるために利用することができる。例えば、サーバ３０は、特定の量の帯域幅をクライアント２０とのセッションに割り当てるとしてよい。画像または画像の一領域の解像度を上げる（例えば、画像圧縮率を下げる）ことによって、帯域幅利用率が高くなる。所与の領域のフレームデータがクライアント３０に送信されないことによって、帯域幅が節約される。サーバ３０は、ビデオフレーム全体を表示する際に他の領域の画像解像度を上げるべく、このように節約された帯域幅を再利用するとしてよい。例えば、ビデオストリームが事前に記録されている場合、圧縮プロセスは、各フレーム領域を第１のステップでレンダリングして、どの領域が変化を含み、どの領域が変化を含まないか判断するべく、実行され得る。第２のパスにおいて、圧縮プロセスは、節約された帯域幅の量に基づいて、所与のフレームにおいて１以上の領域のビデオ品質を上げるとしてよい。リアルタイムビデオストリームの場合、例えば、ビデオゲームのゲームロジックによって生成されるビデオストリームの場合、圧縮プロセスは、統計学的な方法を利用して履歴に基づいて各領域の相対的な帯域幅利用率をモニタリングして、画像品質を上げることによって帯域幅をよりアクティブな領域に割り当てるとしてよい。例えば、時間スライドウィンドウにおいて送信された領域フレームの数、および、フレーム領域データの平均サイズに基づいて、圧縮プロセスでは、各領域の平均帯域幅利用率を算出するとしてよい。他の実施例によると、圧縮プロセスは実際には、ある期間には送信されるフレームが少ないと仮定して、相対的にアクティブでない領域の解像度または画質を上げるとしてよい。
【００２９】
図３は、１以上の位置決め用透明ビデオストリームを含む本発明の別の実施例を示す。当該ビデオストリームの画素幅および／または高さは、対象フレームがブラウザによってレンダリングされる位置を並進させるように変調され得る。図３は、クライアント２０とサーバ３０との間に複数のＴＣＰ接続３２５ａ−ｈがあることを示している。クライアントがレンダリングするビデオフレーム全体は、レンダリングされたフレーム領域を複数含む。この一部は、統計を利用して位置およびサイズが決まるが、他の領域は、サイズまたは位置が動的に変更されるとしてよい。これについて以下でより詳細に説明する。ＴＣＰ接続３２５ａ−ｄはそれぞれ、ビデオフレーム全体を構成する領域１−４に対応する。ＴＣＰ接続３２５ｅ−ｇは、位置決めフレーム５、６、７に対応し、ＴＣＰ接続３２５ｈは、フレーム領域Ｔの並進に対応する。
【００３０】
図示している実施例では、フレーム領域１−４は、Ｍ−ＪＰＥＧストリームで送信されるバックグラウンド画像としてレンダリングされる。位置決めフレームは、フレーム領域のバックグラウンド画像上に重ねられる透明なフレームとしてレンダリングされ、ターゲットフレーム領域Ｔと同じ層にある。位置決めフレームは、透明フレームをサポートするＰＮＧ形式、ＧＩＦ形式または任意のその他の形式を利用してレンダリングされるとしてよい。位置決めフレームは、実質的に透明であり、画素がアルファチャネルまたは透明チャネルで透明値で符号化されているので、ユーザには見えない。ターゲットフレームＴは、ブラウザによってバックグラウンド画像フレームに重ねられるフレームとしてレンダリングされる。一部の実施例では、ターゲットフレームＴは、シーン内の主要または主なオブジェクト、例えば、一人称シューティングビデオゲームでの銃、または、一人称ドライブゲームでの車等をレンダリングするために用いられるとしてよい。マスクを用いて、ターゲットフレームでレンダリングされた主要オブジェクトの周囲を取り囲む透明領域を画定するとしてよい。バックグラウンドフレーム領域１−４は、シーンの残りの要素、例えば、風景等のオブジェクトを含むとしてよい。したがって、一実施例によると、１以上のオブジェクトは複数のＴフレームで別々にレンダリングされ、１以上の他のオブジェクトはフレーム領域１−４でレンダリングされる。フレーム領域１−４をクライアント２０に対して生成、レンダリング、圧縮および送信することは、上述したように、略同じ動作である。さらに、バックグラウンドフレーム領域の数は、４より多く、例えば、上述したように１６個のフレーム領域を設けるとしてもよい。また、バックグラウンドフレームは１個であってもよいし、バックグラウンドフレームは無いとしてもよい。
【００３１】
位置決めフレーム５−７およびターゲットフレームＴは、クライアントアプリケーションによって、同一層にレンダリングされる。図示されている実施例では、ターゲットフレームＴは、位置決めフレームに隣接して配置されレンダリングされている。一実施例によると、これは、ＨＴＭＬテーブル要素を含むベースＨＴＭＬドキュメントを送信することによって、実現され得る。ＨＴＭＬテーブルは、２×２のテーブルであってよく、セルのうち３つは、位置決めフレーム５−７に対応し、ターゲットフレームは残りの１つのセル（例えば、右上のセル）に対応する。ＨＴＭＬテーブルは、ディスプレイの隅に固定または位置決めされ得る。ターゲットフレームを並進させるべく、他のセルでレンダリングされている位置決めフレームの画像サイズを変更して、位置決めフレームのうち１以上を拡大および縮小すると、ターゲットフレームが観察者からは並進しているように見えるようにするとしてよい。水平方向または垂直方向の移動のみが望まれる場合、１×２または２×１のテーブルを利用することができる。位置決めフレーム５−７は、バックグラウンドフレーム３と相対的に位置合わせされる。しかし、位置決めフレームはさらに、ディスプレイ全体または他のバックグラウンドフレームと相対的に位置合わせされるとしてもよい。したがって、位置決めフレーム５−７の幅または高さを変化させることで、ブラウザは、ターゲットフレームをレンダリングする位置を、バックグラウンドフレーム領域およびディスプレイ全体と相対的に、変化させることができる。ターゲットフレームＴが１個のフレームの隅に固定され得る実施例によると、利用する位置決めフレームは１つのみとしてよい。一実施例によると、一のセルを持つＨＴＭＬテーブルまたはＨＴＭＬ  ＤＩＶセクションを利用することができる。この場合、バックグラウンド画像は、透明な位置決めフレームであり、ターゲット画像は、テーブルまたはＤＩＶセクションの一辺または隅に位置決めされる。このような実施例では、バックグラウンド位置決めフレーム画像の幅または高さを変更することで、ターゲットフレームをレンダリングする位置をディスプレイ上で変更する。本発明の実施例は、戦略として、位置決めフレームの１以上のアスペクト比を変調して、ブラウザに、ターゲットフレームをレンダリングおよび表示する位置を変更させる効果を実現する。
【００３２】
一実施例によると、これは、ＴＣＰ接続３２５ｅ−ｇを介して、選択された高さおよび幅を持つ透明なビデオフレームデータを、ｍｊｐｅｇストリームとして、送信することによって、実現され得る。ターゲットフレームを移動させることが所望されているので、位置決めロジックは、位置決めフレームのうち１以上の高さまたは幅をどのように変更するかを決定して、選択された高さまたは幅を持つ新しいフレームを送信するとしてよい。図４は、ビデオゲームの実施例で用いられるプロセスの一例を示す図である。例えば、本発明を教示するべく、当該プロセスが一人称シューティングゲーム、たとえば、エレクトロニック・アーツ・インコーポレーテッド（Ｅｌｅｃｔｒｏｎｉｃ  Ａｒｔｓ，Ｉｎｃ．、米国カリフォルニア州レッドウッドシティ）が公開しているクライシス（Ｃｒｙｓｉｓ（商標））とともに利用されると仮定する。このようなゲームでは、銃は、ターゲットフレームでレンダリングすることができ、残りのゲームオブジェクトおよびシーンは、バックグラウンドフレーム領域でレンダリングされる。図４で図示しているように、サーバ２０は、一実施例によると、クライアント３０から入力／出力入力を受信するとしてよく（４０２）、例えば、マウスのクリックまたは移動、ジョイスティックの移動、キーストローク、ゲームコントローラの移動等によるデータを受信するとしてよい。一実施例によると、最初にリモートクライアントに送信され、さまざまなストリームへのインライン参照を含む構造化ドキュメントはさらに、Ｉ／Ｏデバイス入力を受信して、入力を処理のためにサーバへと送信するべく、ＪａｖａＳｃｒｉｐｔ（登録商標）モジュールまたは他のコードオブジェクトを含むとしてよい。サーバ２０は、入力／出力入力に基づいて、ゲーム状態を調整するべく、ゲームロジックを実行するとしてよい（４０４）。例えば、プレーヤキャラクタ、プレーヤ以外のキャラクタ、建物等、１以上のオブジェクトのゲーム内での状態を調整するとしてよい。サーバ２０は、ターゲットフレームに含まれるオブジェクト以外の全てのオブジェクトを含むバックグラウンド用のビデオフレームをレンダリングするとしてよく（４０６）、銃または車等のターゲットフレームに対応付けられている１以上のオブジェクトの状態に応じて、複数のターゲットフレームをそれぞれ別個にレンダリングするとしてよい（４０８）。一実施例によると、ターゲットゲーム用のレンダリングプロセスは、オブジェクトの状態パラメータ、例えば、位置および向きに応じて、ターゲットオブジェクトをレンダリングするが、レンダリングされたオブジェクトをターゲットフレーム内でセンタリングする。サーバ２０はさらに、ターゲットオブジェクトに基づいて、ターゲットフレーム自体の位置パラメータを算出する。つまり、クライアントのディスプレイにおいて、ターゲットフレームをどこにレンダリングすべきかに関する座標を算出する。これらの位置パラメータは、フレームを所望の位置に位置決めするために必要な位置決めフレームの幅および高さを決定する。サーバ２０はこの後、領域、位置決めフレームおよびターゲットフレームを圧縮して、圧縮されたフレームを書き込んで、領域、ターゲットフレ���ムおよび位置決めフレームを各ソケット接続３２５ａ−ｈへと送信する。
【００３３】
本発明の一部の実施例は、大きな利点を持つとしてよい。モバイルデバイス、ラップトップコンピュータまたはデスクトップコンピュータは、高品質ビデオを視聴するために、および／または、高品質ビデオゲームをプレイするために、特定用途向けのクライアントアプリケーションまたはコーデックをインストールする必要がなくなるとしてよい。例えば、上述した実施例によれば、ユーザは、高精細グラフィクス品質を持つビデオゲームを、ブラウザのみでプレイすることができる。例えば、ユーザは、携帯電話がホストとなっているブラウザを用いてサイトにアクセスするとしてよいし、ビデオゲームをプレイするために単にページにアクセスするとしてもよい。別の実施例では、ユーザは、単にＨＴＭＬベースの電子メールドキュメントを受信することによって、高品質ビデオゲームをプレイするとしてよい。
【００３４】
特定の実施形態は、ネットワーク環境で実施するとしてよい。図６は、ネットワーク環境６００の一例を示す図である。ネットワーク環境６００は、１以上のサーバ６２０と、１以上のクライアント６３０とを互いに結合するネットワーク６１０を含む。特定の実施形態では、ネットワーク６１０は、イントラネット、エクストラネット、仮想プライベートネットワーク（ＶＰＮ）、ローカルエリアネットワーク（ＬＡＮ）、ワイヤレスＬＡＮ（ＷＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、通信ネットワーク、衛星ネットワーク、インターネットの一部、または、別のネットワーク６１０、または、これらのネットワーク６１０の２以上を組み合わせたものである。本開示は、任意の適切なネットワーク６１０について考慮する。
【００３５】
１以上のリンク６５０は、サーバ６２０またはクライアント６３０を、ネットワーク６１０に結合する。具体的な実施形態では、１以上のリンク６５０はそれぞれ、１以上の有線リンク、無線リンク、または、光リンク６５０を含む。特定の実施形態では、１以上のリンク６５０はそれぞれ、イントラネット、エクストラネット、ＶＰＮ、ＬＡＮ、ＷＬＡＮ、ＷＡＮ、ＭＡＮ、通信ネットワーク、衛星ネットワーク、インターネットの一部、または、別のリンク６５０、または、これらのリンク６５０の２以上の組み合わせを含む。本開示は、サーバ６２０およびクライアント６３０をネットワーク６１０に結合する任意の適切なリンク６５０を考える。
【００３６】
特定の実施形態では、各サーバ６２０は、一体的なサーバであってもよいし、または、複数のコンピュータまたは複数のデータセンターにわたる分散型サーバであってもよい。サーバ６２０は、さまざまな種類であってよく、例えば、これらに限定されることはないが、ウェブサーバ、ニュースサーバ、メールサーバ、メッセージサーバ、広告サーバ、ファイルサーバ、アプリケーションサーバ、交換サーバ、データベースサーバ、または、プロキシサーバであってよい。特定の実施形態によると、各サーバ６２０は、サーバ６２０が実現またはサポートしている適切な機能を実行するべく、ハードウェアコンポーネント、ソフトウェアコンポーネント、または、組込ロジックコンポーネントあるいは２以上のこのようなコンポーネントの組み合わせを含むとしてよい。例えば、ウェブサーバは概して、ウェブページ、または、ウェブページの特定の要素を含むウェブサイトをホストすることが可能である。より具体的に説明すると、ウェブサーバは、ＨＴＭＬファイルまたはその他の種類のファイルをホストするとしてよい。または、要求に応じて動的にファイルを作成または構成して、クライアント６３０からのＨＴＴＰ要求またはその他の要求に応じて、クライアント６３０に渡すとしてもよい。メールサーバは通常、電子メールサービスをさまざまなクライアント６３０に提供することが可能である。データベースサーバは通常、１以上のデータストアに格納されているデータを管理するためのインターフェースを提供することが可能である。
【００３７】
特定の実施形態では、各クライアント６３０は、ハードウェアコンポーネント、ソフトウェアコンポーネント、または、組込ロジックコンポーネントまたはこのようなコンポーネントを２以上組み合わせたものを含み、クライアント６３０が実現またはサポートする適切な機能を実行可能な電子デバイスであってよい。例えば、これらに限定されるものではないが、クライアント６３０は、デスクトップコンピュータシステム、ノート型コンピュータシステム、ネットブックコンピュータシステム、手持ち電子機器、または、携帯電話であってよい。クライアント６３０は、クライアント６３０のネットワークユーザが、ネットワーク６１０にアクセスできるようにするとしてよい。クライアント６３０は、例えば、マイクロソフト社のインターネット・エクスプローラまたはモジラのファイヤフォックス等のウェブブラウザを含むとしてよく、グーグル・ツールバーまたはヤフー・ツールバー等、１以上のアドオン、プラグインまたはその他の拡張機能を含むとしてもよい。クライアント６３０は、ユーザが、他のクライアント６３０のユーザと通信できるようにするとしてよい。本開示では、任意の適切なクライアント６３０を考慮する。
【００３８】
特定の実施形態によると、１以上のデータストレージ６４０が、１以上のリンク６５０を介して、１以上のサーバ６２０に通信可能に結合されているとしてよい。特定の実施形態によると、データストレージ６４０は、さまざまな種類の情報を格納するために利用されるとしてよい。特定の実施形態によると、データストレージ６４０に格納されている情報は、特定のデータ構造に従ってまとめられるとしてよい。特定の実施形態は、サーバ６２０またはクライアント６３０が、データストレージ６４０に格納されている情報を管理（例えば、取得、修正、追加または削除）できるようにするインターフェースを提供するとしてよい。
【００３９】
特定の実施形態では、各サーバ６２０は、１以上のクライアント６３０に対して同時にサービスを提供するとしてよく、サポートするクライアント６３０についてレンダリングを実行するとしてよい。サーバ６２０は、レンダリングされた画像をビデオストリームに符号化することによって、サポートしている特定のクライアント６３０に対してレンダリングされた画像を送信するとしてよい。尚、ビデオストリームでは、レンダリングされた各画像は、一の特定のフレームである。サーバ６２０は、ビデオストリームをクライアント６３０に送信する。クライアント６３０は、ビデオストリームを受信すると、ビデオストリームを表示用の画像フレームに復号するとしてよい。米国特許出願第１２／５７９，３００号および第１２／７０９，３４３号はともに、参照により本願に組み込まれ、圧縮ビデオストリームを１以上のクライアント６３０に配信するために用いられるビデオコーデックを開示している。また、上記の出願はさらに、各サーバ６２０がＧＰＵの並列処理リソースを利用してクライアント６３０に対してビデオデータを生成およびストリーミングする方法を開示している。
【００４０】
特定の実施形態は、ハードウェア、ソフトウェア、または、ハードウェアおよびソフトウェアの組み合わせとして実現されるとしてよい。例えば、これらに限定されないが、１以上のコンピュータシステムは、本明細書で図示または説明している１以上のプロセスの１以上のステップを実行するべく、特定のロジックまたはソフトウェアを実行するとしてよい。コンピュータシステムのうち１以上は、一体型または分散型であってよく、適切な場合は、複数のコンピュータシステムまたは複数のデータセンターにわたっているとしてよい。本開示は、任意の適切なコンピュータシステムを考慮している。特定の実施形態では、本明細書で図示または説明している１以上のプロセスの１以上のステップを実行することは、必ずしも１以上の特定の地理的な位置に限定される必要はなく、必ずしも時間に関して制限がある必要はない。一例として、これらに限定されるものではないが、１以上のコンピュータシステムは、「リアルタイム」で、「オフライン」で、「バッチモード」で機能を実行するとしてよく、または、適切な場合には、これらの方式を適宜組み合わせて実行するとしてよい。コンピュータシステムのうち１以上は、適切な場合には、機能のうち１以上の部分を、さまざまなタイミングで、さまざまな場所で、さまざまな処理方法で実行するとしてよい。本明細書において「ロジック」という場合、適切な場合には、ソフトウェアを含むとしてもよいし、その逆もまた然りであるとしてよい。「ソフトウェア」という場合、適切な場合には、１以上のコンピュータプログラムを含むとしてもよいし、その逆もまた然りであるとしてよい。「ソフトウェア」という場合、適切な場合には、データ、命令、または、両方を含むとしてもよいし、その逆もまた然りであるとしてよい。同様に、「データ」という場合、適切な場合には、命令を含むとしてもよいし、その逆もまた然りであるとしてよい。
【００４１】
１以上のコンピュータ可読格納媒体は、特定の実施形態を実装するソフトウェアを格納または具現化するとしてよい。コンピュータ可読媒体は、適切な場合において、担持、通信、格納、保持、維持、伝搬、保有、記憶、送信、搬送等の方法でソフトウェアを具現化することが可能な任意の媒体であってよい。コンピュータ可読媒体は、適切な場合において、生物学的媒体、化学的媒体、電子的媒体、電磁的媒体、赤外線媒体、磁気媒体、光学媒体、量子媒体、または、その他の適切な媒体またはこれらの媒体の２以上の組み合わせであってよい。コンピュータ可読媒体は、１以上のナノメータ単位のコンポーネントを含むとしてよく、ナノメータ単位の設計または製造を具現化するとしてよい。コンピュータ可読格納媒体の例には、これらに限定されないが、コンパクトディスク（ＣＤ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、フロッピー（登録商標）ディスク、フロプティカルディスク、ハードディスク、ホログラフィックストレージデバイス、集積回路（ＩＣ）（特定用途向け集積回路（ＡＳＩＣ）等）、磁気テープ、キャッシュ、プログラマブルロジックデバイス（ＰＬＤ）、ランダムアクセスメモリ（ＲＡＭ）デバイス、リードオンリーメモリ（ＲＯＭ）デバイス、半導体メモリデバイスおよびその他の適切なコンピュータ可読格納媒体が含まれる。
【００４２】
特定の実施形態を実装するソフトウェアは、適切な場合には、任意の適切なプログラミング言語（プロシージャ言語またはオブジェクト指向型言語）で記述されているとしてよい。または、複数のプログラミング言語の組み合わせで記述されるとしてよい。任意の適切な種類のコンピュータシステム（シングルプロセッサコンピュータシステムまたはマルチプロセッサコンピュータシステム等）またはシステムは、適切な場合には、特定の実施形態を実装するソフトウェアを実行するとしてよい。汎用コンピュータシステムは、適切な場合には、特定の実施形態を実装するソフトウェアを実行するとしてよい。
【００４３】
例えば、図７は、特定の実施形態のうち１以上の部分を実施するのに適したコンピュータシステム７００の一例を示す図である。本開示は、特定の構成で特定のコンポーネントを備える特定のコンピュータシステム７００を説明および図示するが、任意の適切な構成で任意の適切なコンポーネントを備える任意の適切なコンピュータシステムを考慮する。さらに、コンピュータシステム７００は、任意の適切な物理的形態を持つとしてよく、例えば、１以上の集積回路（ＩＣ）、１以上のプリント配線基板（ＰＣＢ）、１以上の手持ちデバイスまたはその他のデバイス（例えば、携帯電話またはＰＤＡ）、１以上のパーソナルコンピュータ、または、１以上のスーパーコンピュータであってよい。
【００４４】
システムバス７１０は、コンピュータシステム７００のサブシステムを互いに結合する。本明細書では、「バス」というと、通常の機能を果たす１以上のデジタルシグナルラインを含む。本開示は、任意の適切なバスアーキテクチャを持つ任意の適切なバス構造（例えば、１以上のメモリバス、１以上の周辺機器バス、１以上のローカルバス、または、これらの組み合わせ）を含む任意の適切なシステムバス７１０を考慮する。バスアーキテクチャの例は、これらに限定されないが、インダストリ・スタンダード・アーキテクチャ（ＩＳＡ）バス、エンハンスドＩＳＡ（ＥＩＳＡ）バス、ミクロ・チャネル・アークテクチャ（ＭＣＡ）バス、ビデオ・エレクトロニクス・スタンダード・アソシエーション・ローカル（ＶＬＢ）バス、ペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）バス、ＰＣＩ−Ｅｘｐｒｅｓｓ（ＰＣＩ−Ｘ）バスおよびアクセラレーテッド・グラフィクス・ポート（ＡＧＰ）バスを含む。
【００４５】
コンピュータシステム７００は、一以上のプロセッサ７２０（または、中央演算処理装置（ＣＰＵ））を備える。プロセッサ７２０は、命令、データまたはコンピュータアドレスを一時的にローカルに格納するキャッシュ７２２を含むとしてよい。プロセッサ７２０は、メモリ７３０を含む１以上のストレージデバイスに結合されている。メモリ７３０は、ランダムアクセスメモリ（ＲＡＭ）７３２およびリードオンリーメモリ（ＲＯＭ）７３４を含むとしてよい。データおよび命令は、プロセッサ７２０とＲＡＭ７３２との間で双方向に転送を行うとしてよい。データおよび命令は、ＲＯＭ７３４からプロセッサ７２０へと一方向に転送を行うとしてよい。ＲＡＭ７３２およびＲＯＭ７３４は、任意の適切なコンピュータ可読格納媒体を含むとしてよい。
【００４６】
コンピュータシステム７００は、プロセッサ７２０に双方向に結合されている固定ストレージ７４０を備える。固定ストレージ７４０は、ストレージ制御部７５２を介して、プロセッサ７２０に結合されているとしてよい。固定ストレージ７４０は、追加データ格納容量を提供するとしてよく、任意の適切なコンピュータ可読格納媒体を含むとしてよい。固定ストレージ７４０は、オペレーティングシステム（ＯＳ）７４２、１以上の実行ファイル７４４、１以上のアプリケーションまたはプログラム７４６、データ７４８等を格納するとしてよい。固定ストレージ７４０は通常、主要ストレージよりも低速の補助格納媒体（例えば、ハードディスク）である。適切な場合であれば、固定ストレージ７４０に格納されている情報は、仮想メモリとして、メモリ７３０に組み込まれるとしてよい。
【００４７】
プロセッサ７２０は、さまざまなインターフェースに結合されるとしてよい。例えば、グラフィクス制御部７５４、ビデオインターフェース７５８、入力インターフェース７６０、出力インターフェース７６２、および、格納インターフェース７６４に結合されるとしてよい。これらのインターフェースは、適切なデバイスにそれぞれ結合されるとしてよい。入力デバイスまたは出力デバイスの例は、これらに限定されないが、ビデオディスプレイ、トラックボール、マウス、キーボード、マイクロフォン、タッチセンサディスプレイ、トランスデューサカードリーダ、磁気テープリーダまたは紙テープリーダ、タブレット、スタイラス、音声認識機械または手書き認識機械、バイオメトリクスリーダ、または、コンピュータシステムを含む。ネットワークインターフェース７５６は、プロセッサ７２０を別のコンピュータシステムまたはネットワーク７８０に結合するとしてよい。ネットワークインターフェース７５６により、プロセッサ７２０は、特定の実施形態のステップを実行する間において、ネットワーク７８０との間で情報の送受信を行うとしてよい。特定の実施形態はプロセッサ７２０でのみ実行されるとしてよい。特定の実施形態は、プロセッサ７２０で、そして、協働する１以上のリモートプロセッサで実行するとしてよい。
【００４８】
コンピュータシステム７００がネットワーク７８０に接続されているネットワーク環境において、コンピュータシステム７００は、ネットワーク７８０に接続されている他のデバイスと通信を行うとしてよい。コンピュータシステム７００は、ネットワークインターフェース７５６を介して、ネットワーク７８０と通信を行うとしてよい。例えば、コンピュータシステム７００は、ネットワークインターフェース７５６において１以上の入力パケットとしてネットワーク７８０から情報（例えば、別のデバイスからの要求または応答）を受信するとしてよい。そして、メモリ７３０は、後続の処理のために入力パケットを格納するとしてよい。コンピュータシステム７００は、ネットワークインターフェース７５６から、１以上の出力パケットとして、メモリ７３０が格納していた情報（例えば、別のデバイスへの要求または応答）をネットワーク７８０に送信するとしてよい。プロセッサ７２０は、必要性に応じて、メモリ７３０内の入力パケットまたは出力パケットに、処理を目的として、アクセスするとしてよい。
【００４９】
コンピュータシステム７００は、１以上の入力デバイス７６６（キーパッド、キーボード、マウス、スタイラス等を含むとしてよい）、１以上の出力デバイス７６８（１以上のディスプレイ、１以上のスピーカ、１以上のプリンタ等を含むとしてよい）、１以上のストレージデバイス７７０、および、１以上の格納媒体７７２を備えるとしてよい。入力デバイス７６６は、コンピュータシステム７００の外部に設けられるとしてもよいし、内部に設けられるとしてもよい。出力デバイス７６８は、コンピュータシステム７００の外部に設けられるとしてもよいし、内部に設けられるとしてもよい。格納デバイス７７０は、コンピュータシステム７００の外部に設けられるとしてもよいし、内部に設けられるとしてもよい。格納媒体７７２は、コンピュータシステム７００の外部に設けられるとしてもよいし、内部に設けられるとしてもよい。
【００５０】
特定の実施形態は、本明細書で説明または図示した１以上のプロセスの１以上のステップを実行するべくソフトウェアを具現化する１以上のコンピュータ可読格納媒体を含む１以上のコンピュータストレージ製品を含む。特定の実施形態によると、媒体、ソフトウェア、または、その両方の１以上の部分は特に、本明細書で説明または図示している１以上のプロセスの１以上のステップを実行するべく設計または製造されているとしてよい。これに加えて、または、これに代えて、特定の実施形態では、媒体、ソフトウェア、または、その両方の１以上の部分は通常、本明細書で説明または図示しているプロセスに特有の設計または製造を行うことなく利用可能であるとしてよい。コンピュータ可読格納媒体の例には、これらに限定されないが、ＣＤ（ＣＤ−ＲＯＭ等）、ＦＰＧＡ，フロッピー（登録商標）ディスク、フロプティカルディスク、ハードディスク、ホログラフィックストレージデバイス、ＩＣ（例えば、ＡＳＩＣ）、磁気テープ、キャッシュ、ＰＬＤ、ＲＡＭデバイス、ＲＯＭデバイス、半導体メモリデバイスおよびその他の適切なコンピュータ可読格納媒体が含まれる。特定の実施形態では、ソフトウェアは、コンパイラが生成する機械コード、または、コンピュータがインタプリタを用いて実行する高級コードを含む１以上のファイルであってよい。
【００５１】
一例を挙げると、これに限定されるものではないが、メモリ７３０は、ソフトウェアを具現化する１以上のコンピュータ可読格納媒体を有するとしてよい。そして、コンピュータシステム７００は、プロセッサ７２０がソフトウェアを実行した結果として、本明細書に図示または説明した特定の機能を提供するとしてよい。メモリ７３０はソフトウェアを格納するとしてよく、プロセッサ７２０はソフトウェアを実行するとしてよい。メモリ７３０は、ソフトウェアを具現化する大容量格納デバイス７３０内のコンピュータ可読格納媒体からソフトウェアを読み出すとしてよいし、または、ネットワークインターフェース７５６を介して１以上の他のソースからソフトウェアを読み出すとしてよい。プロセッサ７２０は、ソフトウェアを実行する場合、本明細書で説明または図示した１以上のプロセスの１以上のステップを実行するとしてよい。そのようなステップは、特定の要求に応じて、メモリ７３０内のストレージの１以上のデータ構造を定義すること、および、ソフトウェアの１以上の部分による指示に応じてデータ構造のうち１以上を修正することを含むとしてよい。これに加えて、または、これに代えて、コンピュータシステム７００は、回路においてハードワイヤード接続またはその他の方法で具現化されているロジックが、本明細書に図示または説明されている１以上のプロセスの１以上のステップを実行するソフトウェアに代えて、または、ソフトウェアとともに動作することによって、本明細書に図示または説明されている特定の機能を提供するとしてよい。本開示は、特定の要求に応じて、ハードウェアおよびソフトウェアの任意の適切な組み合わせを含む。
【００５２】
特定の実施形態によると、コンピュータシステム７００は、１以上のグラフィクスプロセッシングユニット（ＧＰＵ）７２４を備えるとしてよい。特定の実施形態では、ＧＰＵ７２４は、グラフィクスレンダリングで通常利用される数値演算を行う１以上の集積回路および／またはプロセッシングコアを含むとしてよい。一部の実施形態によると、ＧＰＵ７２４は、特別なグラフィクスユニット命令セットを利用するとしてよい。一方、他の実施例では、ＧＰＵはＣＰＵと同様の（例えば、修正版ｘ８６の）命令セットを利用するとしてよい。グラフィクスプロセッシングユニット７２４は、複数のグラフィクスプリミティブ演算、例えば、ブリッティング、テクスチャマッピング、ピクセルシェーディング、フレームバッファリング等を実施するとしてよい。特定の実施形態によると、ＧＰＵ７２４は、グラフィクスアクセラレータ、汎用ＧＰＵ（ＧＰＧＰＵ）または任意のその他の適切な処理部であってよい。
【００５３】
特定の実施形態では、ＧＰＵ７２４は、カードスロットを介してハードウェアシステムアーキテクチャに取着されているグラフィクスカードまたはディスプレイカードで具現化されるとしてよい。他の実施例によると、ＧＰＵ７２４は、コンピュータシステムアーキテクチャのマザーボードに集積化されているとしてよい。適切なグラフィクスプロセッシングユニットは、アドバンスドマイクロデバイス（商標）ＡＭＤ  Ｒ７ＸＸをベースとするＧＰＵデバイス（ラデオン（Ｒａｄｅｏｎ）（商標）ＨＤ  ４ＸＸＸ）、ＡＭＤ  Ｒ８ＸＸをベースとするＧＰＵデバイス（ラデオン（Ｒａｄｅｏｎ）（商標）ＨＤ  ５ＸＸＸ）、インテル（商標）ララビー（Ｌａｒａｂｅｅ）をベースとするＧＰＵデバイス（未リリース）、ｎＶｉｄｉａ（商標）８シリーズＧＰＵ、ｎＶｉｄｉａ（商標）９シリーズＧＰＵ、ｎＶｉｄｉａ（商標）１００シリーズＧＰＵ、ｎＶｉｄｉａ（商標）２００シリーズＧＰＵ、および、任意のその他のＤＸＩＩ機能付きＧＰＵを含むとしてよい。
【００５４】
本開示は特定の順序で特定の処理が実行されるものとして図示または説明しているが、本開示は任意の適切な処理は任意の適切な順序で実行されるものと考慮する。さらに、本開示は、任意の適切な処理が任意の適切な順序で１回以上繰り返されるものと考慮する。  本開示は、順次実行されるものとして特定の処理を図示または説明しているが、本開示は、適切な場合には、任意の適切な処理はほぼ同時に実行されるものと考慮する。本明細書に図示または説明されている任意の適切な処理または処理群は、適切な場合には、オペレーティングシステムまたはカーネル等、別のプロセスによって割り込み、中断等、制御されるとしてよい。処理は、オペレーティングシステム環境で動作するとしてもよいし、または、システム処理の全てまたは大部分を占めるスタンドアロンルーチンとして動作するとしてもよい。
【００５５】
本開示は、本明細書に記載した実施形態例に対する、当業者が想到し得る変更、差し替え、変形、変化および修正を全て含む。例えば、ＭＪＰＥＧ−２０００、ポータブルネットワークグラフィクス（ＰＮＧ）等、他の圧縮形式を利用するとしてよい。同様に、適切な場合には、請求項は、本明細書に記載した実施形態例に対する、当業者が想到し得る変更、差し替え、変形、変化および修正を全て含む。
【図１】
0005567744.tif 000002
【図２】
0005567744.tif 000003
【図３】
0005567744.tif 000004
【図４】
0005567744.tif 000005
【図５】
0005567744.tif 000006
【図６】
0005567744.tif 000007
【図７】
0005567744.tif 000008