(57)【特許請求の範囲】
【請求項１】
ハードウェアにおいて少なくとも部分的に実施される１又はそれ以上のモジュールを有し、該１又はそれ以上のモジュールは、複数のアプリケーションへ１又はそれ以上のアプリケーションプログラミングインターフェースの単一のインスタンスを介してアクセス可能である単一のコンポジションエンジンを実施するよう構成され、該コンポジションエンジンは、ディスプレイデバイスでの表示のために前記コンポジションエンジンによってレンダリングされるよう前記複数のアプリケーションの夫々からの要素を記述するデータを受信するよう構成され、前記複数のアプリケーションは第１及び第２のアプリケーションを含み、前記第１のアプリケーションは前記第２のアプリケーションとは異なる、システム。
【請求項２】
前記要素は、前記複数のアプリケーションの中の第１のアプリケーションに対応する第１のウィンドウと、前記複数のアプリケーションの中の第２のアプリケーションに対応する第２のウィンドウとを含む、
請求項１に記載のシステム。
【請求項３】
前記要素の中の第１の要素は、前記複数のアプリケーションの中の第１のアプリケーションによって供給され、前記要素の中の第２の要素は、前記複数のアプリケーションの中の第２のアプリケーションによって供給される、
請求項１に記載のシステム。
【請求項４】
前記１又はそれ以上のモジュールは、
前記第１の要素がレンダリングされる場合に前記第２の要素によってふさがれるかどうかを決定し、
前記第１の要素がふさがれるとの決定に応答して、前記第１の要素のレンダリングをスキップする
よう構成される、
請求項３に記載のシステム。
【請求項５】
前記１又はそれ以上のモジュールは、
前記第１の要素がレンダリングされる場合に前記第２の要素とディスプレイデバイス上の同じ位置を共有することを決定し、
前記決定に応答して、１又はそれ以上の視覚的効果を適用し、該１又はそれ以上の視覚的効果の適用の前且つ前記決定の後に前記第１の要素及び前記第２の要素を別々にレンダリングすることなく前記第１の要素及び前記第２の要素が同じ位置を共有するように結果を生成する
よう構成される、
請求項３に記載のシステム。
【請求項６】
前記１又はそれ以上のモジュールは更に、該１又はそれ以上のモジュールを含むコンピューティングデバイスのカーネルにおいてオブジェクトデータベースモジュールを実施するよう構成され、該オブジェクトデータベースモジュールは、前記１又はそれ以上のアプリケーションプログラミングインターフェースから前記コンポジションエンジンへ前記データの少なくとも一部を伝えるよう構成される、
請求項１に記載のシステム。
【請求項７】
前記データの前記少なくとも一部は、前記要素のリストの開始及び終了を記述し、前記オブジェクトデータベースモジュールは、前記複数のアプリケーションの中の対応するアプリケーションからの前記リストの終了のインジケーションの受信に応答して前記要素のリストを前記コンポジションエンジンへ供給するよう構成される、
請求項６に記載のシステム。
【請求項８】
前記オブジェクトデータベースモジュールは、前記要素の中のどれが前記複数のアプリケーションの中のどれに対応するのかを追跡するよう構成される、
請求項６に記載のシステム。
【請求項９】
前記オブジェクトデータベースモジュールは、前記コンポジションエンジンによるレンダリングのための基準を前記データが満たすとのバリデーションを実行するよう構成される、
請求項６に記載のシステム。
【請求項１０】
前記オブジェクトデータベースモジュールは、変更された要素を記述する前記データの前記少なくとも一部を前記コンポジションエンジンへ伝え、変更されていない要素を記述する前記データの他の部分を伝えないよう構成される、
請求項６に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
多種多様の要素がコンピューティングデバイスにおいてレンダリングされてよい。例えば、アイコン、ウィンドウ、アニメーション、等がある。更に、通常コンピューティングデバイスにおいて実行されるアプリケーションの数は、追加の機能及びより豊かなユーザ経験を提供するために、アプリケーションの夫々が通常提供する要素の数とともに増大し続けている。
【０００２】
しかし、このような要素の増大は、コンピュータデバイスのリソース、例えば、プロセッサ、メモリ、グラフィクスハードウェア、及び他のリソースの相当量を消費しうる。更に、この消費はまた、アプリケーション自体の実行にも影響を有しうる。
【発明の概要】
【課題を解決するための手段】
【０００３】
大域的コンポジションシステムが記載される。１又はそれ以上の実施において、大域的コンポジションシステムは、複数のアプリケーションのためのレンダリングを実施するよう構成されてよい。例えば、大域的コンポジションシステムは、アプリケーションにアクセス可能である１又はそれ以上のアプリケーションプログラミングインターフェース（ＡＰＩ）を顕在化させるよう構成される。次いで、ＡＰＩは、単一のコンポジションエンジンに複数のアプリケーションのためのレンダリングを実施させるために使用されてよい。単一のコンポジションエンジンの使用は、どのような要素がアプリケーションの夫々によって供給されるのか、及び如何にしてそれらの項目がディスプレイデバイスへのレンダリングのために関連するのかを知ることによって効率的なレンダリングを実施するために、使用されてよい。
【０００４】
この項目は、詳細な説明において以下で更に記載される簡単化された形態において概念の選択を導入するために設けられている。この項目は、請求対象の重要な特徴又は必須の特徴を特定するよう意図されず、且つ、請求対象の適用範囲を決定する助けとして使用されるよう意図されない。
【図面の簡単な説明】
【０００５】
【図１】大域的コンポジションシステムを実施するよう動作する実施例における環境の説明図である。
【図２】図１のコンポジションエンジンとともにユーザモードライブラリ及びオブジェクトデータベースモジュールを含むように大域的コンポジションシステムがより詳細に表されるシステムの例を表す。
【図３】要素をレンダリングするためにコンポジションエンジンによって消費される大域的コンポジションツリーとして構成されるグラフの例を表す。
【図４】単一のコンポジションエンジンによるレンダリングのための要素を記述する要素が生成される実施例におけるプロシージャを表すフロー図である。
【図５】図１を参照して記載されるコンピューティングデバイスを含むシステムの例を表す。
【図６】ここで記載される技術の実施形態を実施するよう図１、図２及び図５を参照して記載される如何なるタイプのコンピューティングデバイスとしても実施可能なデバイスの例の様々な構成要素を表す。
【発明を実施するための形態】
【０００６】
詳細な説明は、添付の図面を参照して記載される。図面において、参照符号の最左の数字は、その参照符号が最初に現れる図を特定する。明細書及び図面における異なる事例での同じ参照符号の使用は、類似する又は同一の項目を示すことができる。
【０００７】
コンピューティングデバイスによって要素をレンダリングするために用いられる従来技術は、各アプリケーションが対応するコンポジションエンジンを割り当てられている分散システムを採用した。このため、異なるコンポジションエンジンは、他のコンポジションエンジンによって何が実行されているのかに気付かなかった。これは、従来技術を実施するコンピューティングデバイスの効率を妨げうる冗長性、要素の不必要な分離、等を生じさせ、従って、そのような従来技術を“シン（thin）”コンピューティングデバイスによる使用に不向きなものとした。
【０００８】
大域的コンポジション技術がここで記載される。１以上のウィンドウにおいて、単一のコンポジションエンジンは、１以上のＡＰＩを介して複数の異なるアプリケーションによってアクセス可能である。よって、コンポジションエンジンは、何が様々なアプリケーションによって導かれているのかと、如何にしてそれらの要素が関連するのかとを認識することができる。この認識は、次いで、アプリケーションの要素のレンダリングにおける効率を改善するために利用されてよい。１又はそれ以上の実施において、コンポジションエンジンは、それらのアプリケーションに属するスレッドからの非同期性を実行し、これは、アプリケーションが、コンテンツをそれらのウィンドウ内で動画化させ、異種のレンダリング技術を用いてそのようなコンテンツをラスタライズすることを可能にする。更に、システムにおける各アプリケーションからのコンポジションデータは、コンポジションエンジンが閉塞検出のような大域的最適化を実行するとともに、効率的且つ完全な方法で複数のアプリケーションからのコンテンツを混合しマッチさせることを可能にする単一のグラフ（例えば、大域的コンポジションツリー）において管理されてよい。それら及び他の技術についての更なる議論は、上記の図面に関連して見出され得る。
【０００９】
以下の議論において、例となる環境が最初に記載され、該環境は、ここで記載される技術を用いてよい。次いで、例となるプロシージャが記載され、該プロシージャは、例となる環境及び他の環境において実行されてよい。結果として、例となるプロシージャの実行は、例となる環境に制限されず、且つ、例となる環境は、例となるプロシージャの実行に制限されない。
【００１０】
［例となる環境］
図１は、ここで記載される技術を用いるよう動作する例となる実施における環境１００の説明図である。表される環境１００は、ネットワーク１０６を介してウェブサービス１０４へ通信上結合されるコンピューティングデバイス１０２を含む。コンピューティングデバイス１０２、及びウェブサービス１０４を実施することができるコンピューティングデバイスは、様々な方法において構成されてよい。
【００１１】
例えば、コンピューティングデバイスは、デスクトップコンピュータ、移動局、エンターテイメント装置、ディスプレイデバイスへ通信上結合されるセットトップボックス、無線電話、ゲーム機、等のような、ネットワーク１０６上で通信可能であるコンピュータとして構成されてよい。よって、コンピューティングデバイス１０２は、十分なメモリ及びプロセッサリソースを備えた完全リソースデバイス（例えば、パーソナルコンピュータ、ゲーム機）から、メモリ及び／又は処理リソースが限られた低リソースデバイス（例えば、従来型のセットトップボックス、携帯型ゲーム機）へ及んでよい。更に、単一のコンピューティングデバイス１０２が示されているが、コンピューティングデバイス１０２は、ウェブサービス１０４、リモートコントロール及びセットトップボックスの組み合わせ、画像捕捉デバイス、並びにジェスチャを捕捉するよう構成されるゲーム機、等によるような動作を実行するようビジネスで利用される複数のサーバのような複数の異なるデバイスを代表してよい。
【００１２】
ネットワーク１０６はインターネットとして表されているが、ネットワークは多種多様の構成を前提としてよい。例えば、ネットワーク１０６は、ワイドエリアネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、無線ネットワーク、公衆電話網、イントラネット、等を含んでよい。更に、単一のネットワーク１０６が示されているが、ネットワーク１０６は、複数のネットワークを含むよう構成されてよい。
【００１３】
コンピューティングデバイス１０２は更に、オペレーティングシステム１０８を含むよう表されている。オペレーティングシステム１０８は、コンピューティングデバイス１０２で実行可能であるアプリケーション１１０に対してコンピューティングデバイス１０２の基礎的機能を抽出するよう構成される。例えば、オペレーティングシステム１０８は、コンピューティングデバイス１０２の処理、メモリ、ネットワーク、及び／又は表示機能を抽出してよく、それにより、アプリケーション１１０は、如何にしてこの基礎的機能が実施されるのかを知らずに書かれ得る。アプリケーション１１０は、例えば、ディスプレイデバイス１１２によってレンダリング及び表示されるよう、如何にしてこのレンダリングが実行されるのかを知らずに、オペレーティングシステム１０８へデータを供給してよい。
【００１４】
オペレーティングシステム１０８はまた、例えば、コンピューティングデバイス１０２のユーザによってナビゲーション可能であるファイルシステム及びユーザインターフェースを管理するといった、様々な他の機能を表してよい。これの例は、コンピューティングデバイス１０２のディスプレイデバイス１１２に表示されるデスクトップとして表されている。
【００１５】
オペレーティングシステム１０８はまた、大域的コンポジションシステム１１４を含むよう表されている。大域的コンポジションシステム１１４は、アプリケーション１１０が大域的コンポジションエンジン１１６（以降、単にコンポジションエンジン１１６とも呼ばれる。）を用いて項目をディスプレイデバイス１１２において描くことを可能にするよう構成される直接コンポジションコンポーネントを含むシステムを表してよい。オペレーティングシステム１０８の部分として表されているが、大域的コンポジションシステム１１４は、ブラウザの部分、スタンドアローン型モジュール、等のように、様々な他の方法において実施されてよい。更に、大域的コンポジションシステム１１４は、ネットワーク１０６にわたって分散されてよく、その例は、ウェブサービス１０４における大域的コンポジションシステム１１８の包含として表されている。
【００１６】
ユーザ経験（例えば、アプリケーション１１０のために生成されるユーザインターフェース）は、ウィンドウ、アニメーション（例えば、テキストのスクローリング）、等のような、相互作用することが可能なかなりの数の要素を含んでよい。ディスプレイデバイス１１２において表されているように、例えば、第１のウィンドウ１２０は、電子メールアプリケーションに対応してよく、第２のウィンドウ１２２はブラウザに対応してよい。よって、多数の異なるレンダリングコンポーネントが、いずれか１つの特定の時点で関連してよい。更に、それらの異なる要素は、映像及び静的なテキストを伴う“時計”表示のアニメーションのように、異なるリフレッシュレートを有してよい。
【００１７】
大域的コンポジションシステム１１４は、異なるアプリケーション１１０がこのレンダリングをアンロードして、如何にしてレンダリングが実行されるのかに気付かないような機能を抽出するために利用されてよい。例えば、アプリケーション１１０は、レンダリングされる要素、要素の配置、及び如何にして要素が相互に関連するのかを記述するデータを提供してよい。
【００１８】
更に、大域的コンポジションシステム１１４は、“独立した”アニメーションをサポートしてよい。アプリケーション１１０は、例えば、如何にしてアニメーションがレンダリングされるのかを記述するアニメーションの宣言記述（declaration  description）を送ってよい。例えば、記述は、何が動画化されているのか、再描画が起こるべきレート、アニメーションが始まる位置、アニメーションが動く曲線、アニメーションの終了位置、アニメーションがレンダリングされる時間の量、等を示してよい。
【００１９】
このレンダリングは、次いで、大域的コンポジションシステム１１４によって実行され、更なる命令なしで続いてよい。このように、アニメーションのレンダリングは、呼び出し側（例えば、アプリケーション１１０）とは無関係であり、それにより、アプリケーション１１０との通信の損失、アプリケーション１１０の非一貫性プロセッシング、等は、アニメーションのレンダリングに対する影響を有さない。それによって、これは、アニメーションをレンダリングするためのアプリケーション１１０による通信の数を削減することによって、コンピューティングデバイス１０２（及び以下で更に記載されるネットワーク１０６）のリソースとともに、アニメーションの“滑らかさ”及び“流動性”を改善するために利用されてよい。
【００２０】
通常、コンピューティングデバイスによって実行されるアプリケーション１１０の夫々は、夫々のアプリケーションのための表示の処理及びレンダリングを実行するよう、対応するコンポジションエンジンと相互に作用した。従って、従来のコンポジションエンジンはしばしば、“プロセス毎に”実施された。然るに、従来技術は、常に複数の異なるコンポジションエンジンの実行を伴うことがある。更に、従来のコンポジションエンジンは、通常、他のコンポジションエンジンによって実行されるレンダリングに“気付いていなかった”。これは、ウィンドウを、たとえそれが他のウィンドウによってふさがれ得るとしても描くといった、コンピューティングデバイス１０２のリソースの非効率的な使用をもたらしうる。それは、コンピューティングデバイス１０２のプロセッサ、グラフィカルプロセッサ、メモリ、及び他のリソースの不必要な使用をもたらしうる。
【００２１】
１又はそれ以上の実施において、大域的コンポジションシステム１１４は、複数のアプリケーション１１０が例えばアプリケーションプログラミングインターフェースを介してコンポジションエンジン１１６にアクセスするような大域的アーキテクチャに従う。例えば、単一のコンポジションエンジン１１６は、現在実行中であるアプリケーションからの要素及びデスクトップ全体に関与してよい。よって、単一のコンポジションエンジン１１６は、複数のアプリケーションについてレンダリングされる異なる要素を認識し、然るべく反応してよい。
【００２２】
前述の例を続けて、コンポジションエンジン１１６は、アプリケーション（例えば、ウィンドウ）の要素が、他のアプリケーション（例えば、他のウィンドウ）についてレンダリングする要素によってふさがれることを認識してよい。図１で示されるように、例えば、アプリケーションは、電子メールアプリケーションに対応するウィンドウ１２０の後ろに表示されるウィンドウを有してよい。従前は、たとえアプリケーションの対応するウィンドウがコンピューティングデバイス１０２のユーザに可視的でないとしても、ウィンドウはやはりレンダリングされた。しかし、コンポジションエンジン１１６は、ふさがれるウィンドウのレンダリングをスキップするよう本技術を用いてよく、それによりコンピューティングデバイス１０２のリソースを節約する。
【００２３】
大域的コンポジションシステム１１４は、多種多様の機能を提供するために使用されてよい。上述されたように、大域的コンポジションシステム１１４は、何が複数のアプリケーションによってレンダリングされるのかの大域的解析を実行し、例えば、要素のレンダリングが上述されたようにスキップされ得る閉塞の場合に、要素のどれが描かれるのかを効率良く決定してよい。更に、リソースは、例えば、エンジン自体及び何がエンジンによって描かれているのかによって、従来のコンポジションエンジンにより消費されうる断片化メモリの代わりに、複数のアプリケーション１１０によって中間記憶を共有するように、大域的コンポジションシステム１１４によってプールされてよい。
【００２４】
大域的コンポジションシステム１１４はまた、セキュリティ技術をサポートしてよい。例えば、大域的コンポジションシステム１１４は、暗号化された映画及び対応するライセンシングのような、保護された映像を描画するために用いられてよい。従来のコンポジションエンジンに関し、アプリケーションはコンテンツを構成し、次いでコンテンツを対応するコンポジションエンジンへ転送する。これは、コンテンツが保護なしで“障害なく転送される”ことをもたらし（例えば圧縮されていない映像フレームの転送）、従って、コンテンツは、悪意のある第三者に晒され得る。
【００２５】
しかし、ここで記載される１又はそれ以上の実施では、コンテンツは大域的コンポジションシステム１１４へ提供されてよく、アプリケーション１１０によって直接に触れることができない保護された領域内で実行されてよい。よって、更にコンテンツを伝達しないとのコンポジションエンジン１１６の信頼は、そのコンテンツを保護するために使用されてよい。例えば、コンポジションエンジンは、レンダリングのためのピクセルを、コンピューティングデバイス１０２によって実行されるアプリケーションへそれらピクセルを露わにすることなく生成するために利用されてよい。よって、この“一方向フロー”は、（例えば、悪意のあるエンティティからの）不適切なアプリケーションが保護されていないコンテンツを受信しないことを確かにするのを助けることができる。
【００２６】
更に、従来のコンポジションエンジン及び対応するアプリケーションは、ディスプレイデバイス１１２の画面の特定の部分を“支配”していた。従って、幾つかのディスプレイ技術は、そのような従来技術によりサポートするのが困難であった。そのような技術の１つは、ディスプレイデバイス１１２の領域が１つ又は他の従来のコンポジションエンジンによって（両方によってではなく）支配されうるので、複数のアプリケーションについてトランスペアレンシーであった。例えば、ディスプレイデバイス１１２の特定の領域は、少なくとも２つの異なるアプリケーション及びそれらの対応する従来のコンポジションエンジンからのウィンドウを伴ってよい。通常、トランスペアレンシーのような技術をサポートするよう、ウィンドウの各インスタンスはメモリへ書き込まれ、次いで、効果は組み合わせに適用された。これはリソース消費型であった。
【００２７】
しかし、大域的コンポジションシステム１１４は異なるウィンドウを認識し、然るべく反応するので、所望の結果が、予めメモリへ別個にウィンドウを書き込み、次いで視覚的な効果をそれらのウィンドウに適用することなしに、達成され得る。例えば、大域的コンポジションシステム１１４は、レンダリングされる要素を記述する単一の階層ツリーを利用して、如何にして要素が関連するのかを“知る”ことができる。従って、大域的コンポジションシステム１１４は、従来技術により実行された中間ステップなしで、コンピューティングデバイス１０２のメモリへ直接に書き込んでよい。よって、そのような技術は、メモリ及び／又はプロセッシング制限により従来のコンポジションエンジンを用いることができなかった“シン”コンピューティングデバイスによって用いられてよい。
【００２８】
更に、従来のコンポジションエンジンは、一般的に、異なるアプリケーションによる異なるレンダリングレートをサポートするよう非同期的に実行されていた。これは、一構成に関連するアプリケーションによって特定されるレンダリングが他のアプリケーションによって特定されるレンダリングに影響しないような機能をサポートするが、これは、コンピューティングデバイス１０２のリソースの非効率的な使用をもたらした。
【００２９】
更に、異なる従来のコンポジションエンジンへ割り当てられるプライオリティは、従来のコンポジションエンジン及び関連するアプリケーションの両方にエラーを引き起こすことがある。例えば、従来のコンポジションエンジンは、コンピューティングデバイス１０２のプロセッサによる実行のために、比較的高いプライオリティを与えられてよい。しかし、インスタンスは起こることがあり、このとき、コンポジションエンジンは、例えば、複数のアニメーションをサポートするために、相当量のリソースを消費する。このため、コンポジションエンジン及びアプリケーション自体は、そのようなリソース消費タスクに直面した場合に、意図されるように実行するために利用可能な十分なリソースを有さないことがある。
【００３０】
１又はそれ以上の実施において、コンポジションエンジン１１６は、高いプライオリティを割り当てられてよい。例えば、高いスレッド・プライオリティが、コンピューティングデバイス１０２によって実行される他のスレッドに割り当てられるプライオリティに対して、コンポジションエンジン１１６へ割り当てられてよい。大域的コンポジションシステム１１４は、次いで、異なるソースからの要素が如何にしてコンポジションエンジン１１６によってレンダリングされるのかのプライオリティを管理してよい。これは、レンダリングが起こることを確かにするよう高いプライオリティを与えられる。例えば、大域的コンポジションシステム１１４は、どの要素が更新されるのか、この更新が起こる頻度（例えば、６０Ｈｚから３０Ｈｚへ切り替えること）、等を管理してよい。よって、大域的コンポジションシステム１１４は、レンダリングのための要素を提供するアプリケーション１１０のように、他の使用のためのコンピューティングデバイス１０２の利用可能性を進展させるのを助けることができる。
【００３１】
図２は、大域的コンポジションシステム１１４が図１のコンポジションエンジン１１６とともに、ユーザモードライブラリ２０２及びオブジェクトデータベースモジュール２０４を含むように、より詳細に表されている例となるシステム２００を表す。ユーザモードライブラリ２０２は、オブジェクトデータベースモジュール２０４と相互作用するよう夫々のアプリケーションプロセス２１０，２１２によって使用されるように表されている様々なＡＰＩ２０６，２０８をサポートする。コンポジションエンジン１１６は、それ自体のプロセス２１４内で実行されるようにこの例となるシステム２００において表されている。
【００３２】
複数の分散されたコンポジションエンジンの従来の使用は、エンジンとともにコンピューティングデバイスのアプリケーションの実行を互いから保護した。例えば、第１のアプリケーションが機能しなくなる場合に、第１のアプリケーションへ結合されている第１の従来のコンポジションエンジンも機能しなくなる。しかし、異なる従来のコンポジションエンジンへ結合されている第２のアプリケーションは、従来のコンポジションエンジンが互いの“認識”を欠いていることによる不具合によって保護された。
【００３３】
１又はそれ以上の実施において、大域的コンポジションシステム１１４は、レンダリングのための要素を提供するアプリケーション１１０によるコンポジションエンジン１１６の状態の変造から保護する技術を用いてよい。そのような技術の１つは、オペレーティングシステム１０８のカーネル２１６内でコンポジションエンジン１１６を用いることである。よって、コンポジションエンジン１１６は、やはりカーネル２１６において実行される他のコンポーネントを“信頼”してよい。
【００３４】
このように、大域的コンポジションシステム１１４は、カーネルによってチェックが行われるように、ユーザモード２１８とカーネルモード２２０との間の“信頼境界”を用いてよい。１又はそれ以上の実施において、アプリケーションは、大域的コンポジションシステム１１４によって行われる処理の効率性を改善するよう、パラメータチェックのようなアプリケーションによって提供される“正確性”を決定するために利用されてよい。
【００３５】
他のそのような技術は、どのデータ（例えば、レンダリングのための要素）がどのアプリケーションに属するのかを大域的コンポジションシステム１１４が“知る”ように、トラッキングを伴う。従って、１つのアプリケーションの不具合（例えば、クラッシュ）は、他のアプリケーションの要素に影響を及ぼさない。更に、大域的コンポジションシステム１１４は、所定量の時間後に要素がレンダリングされなくなるように、そのような不具合の場合に要素を“片付け”てよい。このように、大域的コンポジションシステム１１４は、アプリケーションが正常に機能しなくなり他のアプリケーション及びレンダリングされる対応する要素に影響を及ぼさないことを可能にしてよい。
【００３６】
表されるように、コンポジションエンジン１１６は、専用のシステムプロセス２１４で実行される。システムプロセス２１４は、コンピューティングデバイス１０２の他のアプリケーションプロセス２１０，２１２のような、他のコードを実行するために使用されるプロセスとは異なる。更に、このプロセス２１４は、高度な信頼性及びプライオリティを割り当てられてよい。このプロセス２１４は、例えば、コンポジションデータを得る観点から信頼され得、従って、保護された映像データ、権利管理により保護された電子メール、等のような保護されたデータのために使用されてよい。
【００３７】
図２で表されるように、大域的コンポジションシステム１１４は、３つの部分により実施されてよい。第１の部分は、コンポジションエンジン１１６として表されている。コンポジションエンジン１１６は、レンダリングを実行する機能、すなわち、ディスプレイデバイス１１２への“描画の実行”を代表する。第２の部分は、ユーザモードライブラリ２０２として表されている。ユーザモードライブラリ２０２は、アプリケーションプログラミングインターフェース（ＡＰＩ）２０６，２０８を顕在化させることによってアプリケーションによって呼び出されるエンティティを代表する。例えば、ユーザモードライブラリ２０２は、例えば動的リンクライブラリ（ＤＬＬ）の使用により、アプリケーションからコンポジションデータを受信するよう“メールスロット”として動作してよい。
【００３８】
第３の部分は、カーネル２１６に存在するよう表されているオブジェクトデータベースモジュール２０４として表されている。オブジェクトデータベースモジュール２０４は、ユーザモードライブラリ２０２とコンポジションエンジン１１６との間でデータを移動することに関与する機能を代表する。
【００３９】
オブジェクトデータベースモジュール２０４はまた、バリデーションを実行してよい。例えば、アプリケーションは、ビットマップのような要素を生成するためにユーザモードライブラリ２０２を呼び出してよい。要求される要素がオブジェクトデータベースモジュール２０４によって強いられる基準（例えば、“Ｎ”個よりも少ないピクセル）を満たさない場合は、オブジェクトデータベースモジュール２０４は、ユーザモードライブラリ２０２を呼び出したアプリケーションへ失敗メッセージを返す。よって、オブジェクトデータベースモジュール２０４は、何がコンポジションエンジン１１６へ提供されるのかを制御するようカーネル２１６内で動作してよい。様々な他のポリシーが、オブジェクトデータベースモジュール２０４によって強いられてよい。
【００４０】
従って、コンポジションエンジン１１６は、オブジェクトデータベースモジュール２０４によって実施されるポリシーを満たすと、オブジェクトデータベースモジュール２０４によって提供されるデータを信頼してよい。つまり、コンポジションエンジンは、データが有効であり且つ正確であり、従ってレンダリングに適すると考えてよい。結果として、バリデーションは、オブジェクトデータベースモジュール２０４によって１度実行されて、更なるバリデーションなしでレンダリングを実行するためにコンポジションエンジン１１６によって利用されてよい。
【００４１】
オブジェクトデータベースモジュール２０４はまた、レンダリングされるデータがいつ変わったかをコンポジションエンジン１１６に知らせる機能を代表してよい。例えば、ユーザモードライブラリを介して実施されるＡＰＩは、何がレンダリングされるのかを記述するグラフを消費するよう構成されてよい。これの例は図３において示される。グラフ３００は、レンダリングされる要素のリストとともに、ディスプレイデバイス１１２上のどこに要素をレンダリングするのかの記述を含んでよい。ディスプレイデバイス１１２上のどこに要素をレンダリングするのかの記述は、アニメーションの場合に如何にして要素が動くことができるのかを含んでよい。
【００４２】
更に、レンダリングされる要素は、サブ要素を用いて形成されてよく、よって、グラフ３００は、階層構造を前提としてよい。更に、グラフ３００は、如何にして要素がレンダリングされるのか、例えば、１度にテキストを描画する、アニメーションをレンダリングする、等を記述してよい。よって、グラフ３００は、要素と、如何にしてそれらの要素が互いに関連するのかとを記述してよい。
【００４３】
グラフ３００は、場面と、一緒に構成されるビットマップと、それらのビットマップが構成される空間的な関係を定義するビジュアルとをレンダリングするためにコンポジションエンジン１１６によって使用され得るオブジェクトの２つの組を表す。このモデルにおいて、ビットマップは“何（what）”であり、ビジュアルはコンポジションエンジン１１６の“どのように（how）”である。それらのオブジェクトは、３つの構造において配置され、構成のために最高位の又は子供のウィンドウに結合される。この図では、子ビジュアル４はまた、ＤＸビットマップを指し示すように表されている。これは、開発者が複数のＵＩ要素について同じ内容を使用することを可能にするコンポジションシステムの機能を記述し、コンピューティングデバイス１０２のリソース（例えば、メモリ）を節約するのを助ける。
【００４４】
図２に戻って、コンポジションエンジン１１６によって受信されると、アプリケーションは、要素をレンダリングし続けるようコンポジションエンジン１１６を更に呼び出す必要がない。よって、コンポジションエンジン１１６は、ディスプレイデバイス１１２のリフレッシュレートでアニメーションをレンダリングするために毎秒６０回の呼び出しをアプリケーションが行うことを要した従来技術と比較して、リソースを節約することができる。よって、アプリケーション１１０は、構造を構成するユーザモードライブラリ２０２のＡＰＩと、コンポジションエンジン１１６によってレンダリングされる要素を構成するＡＰＩとを呼び出してよい。
【００４５】
コンポジションエンジン１１６によってレンダリングされる内容を変更するために、アプリケーションは、構造及び／又は要素を更新するようユーザモードライブラリ２０２の他のアプリケーションプログラミングインターフェースを呼び出してよい。例えば、アプリケーションは、株式相場表示用アニメーションのために使用される情報を提供する更新ＡＰＩを介してデータを提供してよい。
【００４６】
１又はそれ以上の実施において、バッチング技術はまた、どの要素がフレームによりレンダリングされるのかを定義するために利用されてよい。上述されたように、大域的コンポジションシステム１１４は、様々な異なるレートでのレンダリングのために様々な異なる要素を受け取ってよい。然るに、大域的コンポジションシステム１１４は、一緒にレンダリングされる要素のリストが形成される構造をサポートしてよい。よって、大域的コンポジションシステム１１４は、要素の始まり及び終わりの定義を実施してよく、該定義において、始まりと終わりとの間に受け取られる要素は、“終わり”が受け取られるまでレンダリングされない。よって、フレームは、特定のフレームのための要素のレンダリングに対する“全部かゼロか”のアプローチをサポートし、望まれる場合に要素が表示のためにまとめてレンダリングされることを確かにする。
【００４７】
例えば、オブジェクトデータベースモジュール２０４は、アプリケーションについて２つの異なる状態を追跡してよい。第１の状態は、現在の表示用である要素を参照してよい。第２の状態は、第１の状態の後で表示される要素及び変更される要素を参照してよい。よって、第２の状態は、要素のリストが終了すると、例えば、リストが終了したとのインジケーションがアプリケーションから受け取られると、コンポジションエンジン１１６によるレンダリングのための要素のリストを構築するために利用されてよい。
【００４８】
終了すると、変更はコンポジションエンジン１１６へ送信されてよい。更に、リストが終了したとのアプリケーションからのインジケーションの受信のタイミングは、いつそれらの変更が表示されるのか、例えば、どのフレームか、を決定するために使用されてよい。よって、コンポジションエンジン１１６は、終了する１又はそれ以上のリストにおいて記述される変更のバッチを受け取ってよいが、終了と示されていないリストは送信されない。このバッチングは、よって、コンポジションエンジン１１６によってレンダリングされる表示を制限するのを助けることができる。更に、これは、そのような定義をサポートしなかった従来技術により起こりうる誤った視覚的なアーティファクトの表示を制限するのを助けることができる。当然に、フレームに対応する時間の量は、望まれるように様々な異なる量について設定されてよい。
【００４９】
よって、オブジェクトデータベースモジュール２０４は、何が以前にコンポジションエンジン１１６によってレンダリングされたのかを記憶しており、更に、何がレンダリングされることになっているのかを認識してよい。従って、オブジェクトデータベースモジュール２０４は、この情報を比較することによって、どの要素が変更されるのかを決定してよい。然るに、オブジェクトデータベースモジュール２０４は、変更されない情報をコンポジションエンジン１１６へ送信することなしに、このような変更を記述する情報を送信してよい。
【００５０】
更に、フレームの使用は、効率を更に改善することができる。例えば、アプリケーションは、オブジェクトが特定の距離を移動されて原の位置へ戻ることを記述するデータを送信してよい。オブジェクトデータベースモジュール２０４は、このような移動が単一のフレームの時間期間内に起こることを決定してよい。然るに、オブジェクトデータベースモジュール２０４は、このデータをコンポジションエンジン１１６へ送信するのを控え、むしろ、オブジェクトをその前の状態のままにさせてよい。例えば、このような移動は、ディスプレイデバイス１１２をリフレッシュするために使用される時間期間内に起こってよく、従って、とにかくユーザには視認されない。
【００５１】
このように、オブジェクトデータベースモジュール２０４は、レンダリングのためにコンポジションエンジン１１６へ提供されるリストの構成における中間の状態を放棄してよい。次いで、このリストは、様々な方法（例えば、変更を実施するようコンポジションエンジン１１６によって実行されるコマンドの配列）において送信されてよい。更に、この技術はまた、単一のインスタンスがコンポジションエンジンに報告されるので、アプリケーションによって送信される限りないデータのインスタンスをアドレッシングするために使用されてよい。
【００５２】
オブジェクトデータベースモジュール２０４及びコンポジションエンジン１１６はまた、変更が実施されたことを記述する確認応答技術を用いてよい。例えば、コンポジションエンジン１１６は、なされる変更を記述するオブジェクトデータベースモジュール２０４の通信を受け取ってよい。変更が行われている間、オブジェクトデータベースモジュール２０４は、前の変更がなされたとの確認応答が受信されるまで追加の変更を送信するのを待ってよい。確認応答がオブジェクトデータベースモジュール２０４によって受信されると、次いで、追加の変更がコンポジションエンジン１１６へ送られてよい。
【００５３】
更に、この技術は、“スロットリング”を提供するために使用されてよく、従って、コンピューティングデバイス１０２のリソースを更に節約することができる。例えば、アプリケーションは、ディスプレイデバイスがリフレッシュされるレートを上回る多数のリクエストを行うことがある。フレームを用いて変更をバッチすることによって、さもなければ消費されうるリソースの量は、削減される。
【００５４】
ユーザモードライブラリ２０２のＡＰＩを呼び出すことによって何が表示されるのかを変更するアプリケーションは、マルチスレッド化されてよい。然るに、１又はそれ以上の実施において、オブジェクトデータベースモジュール２０４は、単一のアプリケーションの複数のスレッドからの複数の呼び出しが状態を改悪しないような技術を用いてよい。これは、アプリケーションが自身のスレッドをまとめてロックすることによって実行されてよい。例えば、１のスレッドは、アプリケーションの他のスレッドがタスクを完了する間ブロックされてよい。
【００５５】
次いで、複数のスレッドからの変更は、例えば、異なるスレッドが他のスレッドへ制御を渡す前に変更を“完了”させることができるような変数について用いられるインターロックドアクセスにより、オペレーティングシステム１０８によって管理されるキューにおいて記憶されてよい。これは、コンポジションエンジン１１６によって処理される原始単位の作業に到達するよう上記のフレーム技術をサポートしてよい。更に、更新が受信されないフレームについて、コンポジションエンジンの実行は、次のフレームまでポーズされてよく、それによりコンピューティングデバイス１０２のリソースは更に節約される。
【００５６】
カーネル２１６はまた、大域的コンポジションシステム１１４とともに様々な機能を追加してよい。例えば、アプリケーションが機能しなくなる（例えば、クラッシュする）場合に、カーネル２１６は、コンポジションエンジン１１６にこの発生を知らせてよい。次いで、コンポジションエンジン１１６は、アプリケーションが通常の終了プロシージャにより“当然に”実行を中止した場合に使用されるのと同様の技術を実行してよい。このように、コンポジションエンジン１１６は、アプリケーションに対応する要素がコンピューティングデバイス１０２のディスプレイデバイス１１２上の表示から除去されるような“クリーンアップ”状態に達してよい。よって、これは、コンポジションエンジン１１６の実行においてロバスト性を進展させる。
【００５７】
コンポジションエンジン１１６の実行はまた、ユーザモードライブラリ２０２について書き出し専用ＡＰＩを実施することによって、保証され得る。このように、コンポジションエンジン１１６は、ピクセルを、それらのピクセルをアプリケーションにさらすことなく生成することができ、それにより画像を悪意のある第三者から保護する。
【００５８】
上述されたように、これら技術の実施はまた、コンピューティングデバイス１０２の“外の”デバイスを伴ってよく、該デバイスは、ウェブサービス１０４のような１又はそれ以上のエンティティにわたって分散されてよい。例えば、そのような技術は、ネットワーク１０６を介した特性（例えば、図３のグラフ３００のようなコンポジションツリー）及び要素のバッチの通信を通じて端末サービス、遠隔デスクトップ環境、等をサポートするために用いられてよい。よって、グラフ３００は、（例えば、ウェブサービス１０４におけるユーザモードライブラリ２０２及び／又はオブジェクトデータベースモジュール２０４の実施を通じて）他の場所で生成されて、コンピューティングデバイス１０２の実行を通じてコンポジションエンジン１１６によるレンダリングのためにコンポジションツリーを伝達してよい。このように、アニメーションは、ネットワーク１０６が信頼できない場合でさえ、滑らかに表示され得る。これら及び他の技術についての更なる議論は、以下のプロシージャに関連して知られ得る。
【００５９】
大域的コンポジションシステム１１４はまた、動作を実行するためにハードウェア（例えば、グラフィクスカード）から利用可能な機能を利用するよう構成されてよい。これは、動作がより高速に行われて、より良い性能を示すことができることを意味する。その例は、透明性をコンポジション要素（ＵＩの一部、ウィンドウ全体）に加えるグラフィクス処理ユニット（ＧＰＵ）の使用、２つのオーバレイする半透明のウィンドウを混合すること、幾何学的なクリップ（丸みを帯びた角）を描くこと、等を含む。ハードウェア（例えば、ＧＰＵ）が利用可能でない場合に、大域的コンポジションシステム１１４は、ソフトウェア・レンダリングへ“フォールバック”することによって、依然としてそのような動作を実行することができる。
【００６０】
一般に、ここで記載される機能の何れも、ソフトウェア、ファームウェア、ハードウェア（例えば、固定ロジック回路）、又はそれら実施の組み合わせを用いて実施され得る。ここで使用される語“モジュール”、“機能”及び“エンジン”は、一般に、ソフトウェア、ファームウェア、ハードウェア、又はそれらの組み合わせを表す。ソフトウェア実施の場合に、モジュール、機能、又はエンジンは、プロセッサ（例えば、１又はそれ以上のＣＰＵ）で実行される場合に、指定されるタスクを実行するプログラムコードを表す。プログラムコードは、１又はそれ以上のコンピュータ可読メモリデバイスにおいて記憶され得る。以下で記載される技術の特徴は、プラットフォーム非依存であり、これは、それらの技術が、様々なプロセッサを有する様々な市販のコンピュータプラットフォームで実施されてよいことを意味する。
【００６１】
例えば、コンピューティングデバイス１０２はまた、コンピューティングデバイス１０２のハードウェアに動作、例えば、プロセッサ、機能ブロック、等を実行させるエンティティ（例えば、ソフトウェア）を含んでよい。例えば、コンピューティングデバイス１０２は、コンピューティングデバイス、及び特にコンピューティングデバイス１０２のハードウェアに動作を実行させる命令を保持するよう構成されるコンピュータ可読媒体を含んでよい。よって、命令は、動作を実行するようにハードウェアを構成するよう機能し、このように、機能を実行するようハードウェアの変形をもたらす。命令は、様々な異なる構成を通じてコンピューティングデバイス１０２へコンピュータ可読媒体によって提供されてよい。
【００６２】
コンピュータ可読媒体のそのような構成の１つは、信号搬送媒体であり、よって、例えばネットワークを介して、コンピューティングデバイスのハードウェアへ（例えば、搬送波として）命令を送信するよう構成される。コンピュータ可読媒体はまた、コンピュータ可読記憶媒体として構成されてよく、よって信号搬送媒体ではない。コンピュータ可読記憶媒体の例は、ランダムアクセスメモリ（ＲＡＭ）、読出専用メモリ（ＲＯＭ）、光ディスク、フラッシュメモリ、ハードディスクメモリ、並びに磁気、光及び他の技術を用いて命令及び他のデータを記憶することができる他のメモリデバイスを含む。
【００６３】
［例となるプロシージャ］
以下の議論は、上記のシステム及びデバイスを用いて実施され得る大域的コンポジションシステム技術について記載する。プロシージャの夫々の態様は、ハードウェア、ファームウェア、若しくはソフトウェア、又はそれらの組み合わせにおいて実施されてよい。プロシージャは、１又はそれ以上のデバイスによって実行される動作を特定するブロックの組として示され、夫々のブロックによる動作の実行のために示される順序に必ずしも制限されない。以下の議論の各部で、図１の環境１００、図２のシステム２００、及び図３のグラフ３００が参照される。
【００６４】
図４は、単一のコンポジションエンジンによるレンダリングのための要素を記述するグラフが生成されるところの例となる実施におけるプロシージャ４００を表す。グラフが生成される（ブロック４０２）。グラフは、１又はそれ以上のコンピューティングデバイスによって実行される複数のアプリケーションによるレンダリングのために特定されている要素を記述する。図３で示されるように、グラフ３００は、レンダリングされる要素のリストと、ディスプレイデバイス１１２上のどこに要素をレンダリングするのかの記述とを含んでよい。後者の記述は、如何にして要素がアニメーションの場合に動くのかを含んでよい。更に、レンダリングされる要素は、サブ要素を用いて形成されてよく、グラフ３００は、階層構造を前提としてよい。更に、グラフ３００は、如何にして要素がレンダリングされるのかを記述してよい。よって、グラフ３００は、要素と、如何にして要素が互いに関連するのかとを記述してよい。様々な他のグラフも考えられる。
【００６５】
グラフは、要素をレンダリングさせるよう単一のコンポジションエンジンによる受信のために送信される（ブロック４０４）。これは、様々な方法において実行されてよい。例えば、グラフは、単一のコンポジションエンジンを実行するコンピューティングデバイスによる受信のためにウェブサービスからネットワークを介して、例えば、ウェブサービス１０４の大域的コンポジションシステム１１８からネットワーク１０６を介してコンピューティングデバイス１０２のコンポジションエンジン１１６へ、送信されてよい（ブロック４０６）。他の例において、グラフは、オブジェクトデータベースモジュールから単一のコンポジションエンジンへ送信されてよい（ブロック４０８）。オブジェクトデータベースモジュール２０４は、例えば、複数のアプリケーションから受け取ったデータに基づきグラフを生成し、そのグラフを、更新される要素を参照するためにコンポジションエンジンへ送信してよい。様々な他の例も考えられる。
【００６６】
［例となるシステム及びデバイス］
図５は、図１を参照して記載されたコンピューティングデバイス１０２を含む例となるシステム５００を表す。例となるシステム５００は、パーソナルコンピュータ（ＰＣ）、テレビジョンデバイス、及び／又はモバイルデバイスでアプリケーションを実行するときに、シームレスなユーザ経験のためのユビキタス環境を可能にする。サービス及びアプリケーションは、アプリケーションを利用しながら、ビデオゲームで遊びながら、ビデオを鑑賞しながら等に、１のデバイスから次のデバイスへ移るときに、共通のユーザ経験のために３つ全ての環境において略同じに実行される。表される例では、コンピューティングデバイス１０２は、上記の大域的コンポジションシステム１１４の少なくとも部分を実施するように表されている。
【００６７】
例となるシステム５００では、複数のデバイスが中央のコンピューティングデバイスを通じて相互接続されている。中央のコンピューティングデバイスは、複数のデバイスにとって局所的であってよく、又は複数のデバイスから遠く離れて配置されてよい。一実施形態において、中央のコンピューティングデバイスは、ネットワーク、インターネット、又は他のデータ通信リンクを介して複数のデバイスへ接続されている１又はそれ以上のサーバコンピュータのクラウドであってよい。一実施形態において、この相互接続アーキテクチャは、複数のデバイスのユーザへ共通した且つシームレスな経験を与えるよう複数のデバイスにわたって提供される機能を可能にする。複数のデバイスの夫々は、異なる物理的な要件及び能力を有してよく、中央のコンピューティングデバイスは、各デバイスに合わせられていながら全てのデバイスに共通である経験を各デバイスへ提供することを可能にするプラットフォームを用いる。一実施形態において、対象のデバイスの分類が作成され、経験は一般的な分類のデバイスに合わせられる。デバイスの分類は、物理的な特徴、使用のタイプ、又はデバイスの他の共通した特性によって定義されてよい。
【００６８】
様々な実施において、コンピューティングデバイス１０２は、例えばコンピュータ５０２、モバイル５０４、及びテレビジョン５０６等の使用のために、様々な異なる構成を前提としてよい。それらの構成の夫々は、概して異なる構造及び機能を有するデバイスを含み、よって、コンピューティングデバイス１０２は、異なるデバイス分類の１又はそれ以上に従って構成されてよい。例えば、コンピューティングデバイス１０２は、パーソナルコンピュータ、デスクトップコンピュータ、マルチスクリーンコンピュータ、ラップトップコンピュータ、ネットブック、等を含むデバイスのコンピュータ５０２分類として実施されてよい。
【００６９】
コンピューティングデバイス１０２はまた、携帯電話、携帯型音楽プレーヤ、携帯型ゲーム機、タブレット型コンピュータ、マルチスクリーンコンピュータ、等のモバイルデバイスを含むデバイスのモバイル５０２分類として実施されてよい。コンピューティングデバイス１０２はまた、臨時の視聴環境において概してより大きいスクリーンを有するか又はそのようなスクリーンへ接続されるデバイスを含むデバイスのテレビジョン５０６分類として実施されてよい。かかるデバイスは、テレビジョン、セットトップボックス、ゲーム機、等を含む。ここで記載される技術は、コンピューティングデバイス１０２のそれらの様々な構成によってサポートされてよく、ここで記載される具体例としての技術に制限されない。
【００７０】
クラウド５０８は、コンテンツサービス５１２のためのプラットフォーム５１０を含み、且つ／あるいは、それを代表する。プラットフォーム５１０は、クラウド５０８のハードウェア（例えば、サーバ）及びソフトウェアのリソースの基礎的な機能を抽出する。プラットフォームは、ユーザモードライブラリ２０２及び／又はオブジェクトデータベースモジュール２０４のような、大域的コンポジションシステム１１８の少なくとも部分をサポートするように表されている。よって、プラットフォームは、大域的コンポジションシステム１１８の全て又は一部の遠隔処理をサポートするのを助けることができる。
【００７１】
プラットフォーム５１０は、コンピューティングデバイス１０２を他のコンピューティングデバイスと接続するリソース及び機能を抽出してよい。プラットフォーム５１０はまた、プラットフォーム５１０を介して実施される大域的コンポジションシステム１１８について直面される要求に対して対応するレベルのスケールを提供するリソースのスケーリングを抽出する働きをしてよい。然るに、相互接続デバイス環境において、ここで記載される機能の実施は、システム５００の全体にわたって分配されてよい。例えば、機能は、クラウド５０８の機能を抽出するプラットフォーム５１０を介するとともに、コンピューティングデバイス１０２において部分的に実施されてよい。
【００７２】
図６は、ここで記載されるジェスチャ技術の実施形態を実施するよう図１、図２及び図５を参照して記載された如何なるタイプのコンピューティングデバイスとしても実施され得る例となるデバイス６００の様々な構成要素を表す。デバイス６００は、デバイスデータ６０４（例えば、受信されたデータ、受信されているデータ、送信を予定されているデータ、データのデータパケット、等）の有線及び／又は無線通信を可能にする通信デバイス６０２を有する。デバイスデータ６０４又は他のデバイスコンテンツは、デバイスのコンフィグレーション設定、デバイスに記憶されるメディアコンテンツ、及び／又はデバイスのユーザに関連する情報を含むことができる。デバイス６００に記憶されるメディアコンテンツは、如何なるタイプのオーディオ、ビデオ、及び／又は画像データも含むことができる。デバイス６００は、１又はそれ以上のデータ入力部６０６を有し、それらを介して、如何なるタイプのデータ、メディアコンテンツ、及び／又は入力も受信され得る。例えば、ユーザ選択可能な入力、メッセージ、音楽、テレビジョンメディアコンテンツ、録画されたビデオコンテンツ、並びにあらゆる他のタイプのオーディオ、ビデオ、及び／又は画像データが、如何なるコンテンツ及び／又はデータ源からも受信される。
【００７３】
デバイス６００はまた、シリアル及び／又はパラレルインターフェース、無線インターフェース、あらゆるタイプのネットワークインターフェース、モデム、並びにあらゆる他のタイプの通信インターフェースとしても実施され得る通信インターフェース６０８を有する。通信インターフェース６０８は、デバイス６００と通信ネットワークとの間の接続及び／又は通信リンクを提供し、それによって、他の電子、コンピュータ、及び通信デバイスがデバイス６００とデータをやり取りする。
【００７４】
デバイス６００は、デバイス６００の動作を制御し且つここで記載される技術の実施形態を実施するよう様々なコンピュータ実行可能な又は読出可能な命令を処理する１又はそれ以上のプロセッサ６１０（例えば、マイクロプロセッサ、コントローラ、等の何れか）を有する。代替的に、又は追加的に、デバイス６００は、全体として６１２で特定される処理及び制御回路に関連して実施されるハードウェア、ファームウェア、又は固定ロジック回路のいずれか１つ又は組み合わせにより実施され得る。図示されていないが、デバイス６００は、デバイス内の様々な構成要素を結合するシステムバス又はデータ伝送システムを有することができる。システムバスは、様々なバスアーキテクチャの何れかを利用するメモリバス若しくはメモリコントローラ、ペリフェラルバス、ユニバーサルシリアルバス、及び／又はプロセッサ若しくはローカルバスのような、異なるバス構造の何れか１つ又は組み合わせを有することができる。
【００７５】
デバイス６００はまた、１又はそれ以上のメモリコンポーネントのようなコンピュータ可読媒体６１４を有する。その例は、ランダムアクセスメモリ（ＲＡＭ）、不揮発性メモリ（例えば、読出専用メモリ（ＲＯＭ）、フラッシュメモリ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、等のいずれか１つ又はそれ以上）、及びディスク記憶デバイスを含む。ディスク記憶デバイスは、ハードディスクドライブ、書込可能及び／又は書換可能コンパクトディスク（ＣＤ）、あらゆるタイプのデジタルバーサタイルディスク（ＤＶＤ）、等のような如何なるタイプの磁気若しくは光学記憶デバイスとしても実施されてよい。デバイス６００はまた、大容量記憶媒体デバイス６１６を有することができる。
【００７６】
コンピュータ可読媒体６１４は、様々なデバイスアプリケーション６１８並びにデバイス６００の動作態様に関連するあらゆる他のタイプの情報及び／又はデータとともに、デバイスデータ６０４を記憶するよう、データ記憶メカニズムを提供する。例えば、オペレーティングシステム６２０は、コンピュータ可読媒体６１４によりコンピュータアプリケーションとして保持され、プロセッサ６１０で実行され得る。デバイスアプリケーション６１８は、デバイスマネージャ（例えば、制御アプリケーション、ソフトウェアアプリケーション、信号処理及び制御モジュール、特定のデバイスに固有であるコード、特定のデバイスのためのハードウェア抽象レイヤ、等）を有することができる。デバイスアプリケーション６１８はまた、ここで記載される技術の実施形態を実施するよう、如何なるシステムコンポーネント又はモジュールも有する。この例では、デバイスアプリケーション６１８は、ソフトウェアモジュール及び／又はコンピュータアプリケーションとして示されるインターフェースアプリケーション６２２及び入出力モジュール６２４を有する。入出力モジュール６２４は、タッチスクリーン、トラックパッド、カメラ、マイクロホン等のような、入力を捕捉するよう構成されるデバイスとのインターフェースを提供するために使用されるソフトウェアを代表する。代替的に、又は追加的に、インターフェースアプリケーション６２２及び入出力モジュール６２４は、ハードウェア、ソフトウェア、ファームウェア、又はそれらのいずれかの組み合わせとして実施され得る。更に、入出力モジュール６２４は、視覚入力及び音声入力を夫々捕捉する別個のデバイスのような複数の入力デバイスをサポートするよう構成されてよい。
【００７７】
デバイス６００はまた、オーディオシステム６２８へオーディオデータを提供し且つ／あるいは表示システム６３０へビデオデータを提供するオーディオ及び／又はビデオ入出力システム６２６を有する。オーディオシステム６２８及び／又は表示システム６３０は、オーディオ、ビデオ、及び画像データを処理し、表示し、及び／又は別なふうにレンダリングする如何なるデバイスも有することができる。ビデオ信号及びオーディオ信号は、デバイス６００からオーディオデバイスへ及び／又は表示デバイスへＲＦ（無線周波数）リンク、Ｓビデオリンク、コンポジットビデオリンク、コンポーネントビデオリンク、ＤＶＩ（デジタルビデオインターフェース）、アナログオーディオ接続、又は他の同様の通信リンクを介して伝送され得る。実施形態において、オーディオシステム６２８及び／又は表示システム６３０は、デバイス６００の外部構成要素として実施される。代替的に、オーディオシステム６２８及び／又は表示システム３０は、例となるデバイス６００の内蔵構成要素として実施される。
【００７８】
［結び］
本発明は、構造的な特徴及び／又は方法論的な動作に特有の言語において記載されてきたが、特許請求の範囲において定義される発明は、必ずしも、記載される具体的な特徴又は動作に制限されないことが理解されるべきである。むしろ、具体的な特徴及び動作は、請求される発明を実施する例となる形態として開示される。
【図１】
0006033854.tif 000002
【図２】
0006033854.tif 000003
【図３】
0006033854.tif 000004
【図４】
0006033854.tif 000005
【図５】
0006033854.tif 000006
【図６】
0006033854.tif 000007