(57)【特許請求の範囲】
【請求項１】
リアルタイム映像通信のための方法であって、
複数の取得したフレームの各フレームに組み込まれた依存関係データを評価して、前記複数の取得したフレームの依存構造を再構築するステップであって、前記複数の取得したフレームの各フレームは、各フレームの固有のシーケンス番号によって識別され、前記依存構造は、特定のフレームが復号のために前のフレームに依存することを示し、前記特定のフレームの依存関係データは、前記特定のフレームが依存する前記前のフレームを識別する、ステップと、
前記複数の取得したフレームの前記シーケンス番号に基づいて、損失したフレームを識別するステップと、
前記特定のフレームが依存する前のフレームが損失したフレームとして識別される場合に前記依存構造に基づいて、前記特定のフレームがアーチファクトを有することを判定するステップと、
前記特定のフレームがアーチファクトを有するとき、前記特定のフレームのレンダリングを妨げるステップであって、前記レンダリングを妨げることは、観測した所定の条件および学習した以前の隠蔽条件の少なくとも一つに基づいて、前記特定のフレームのアーチファクトが隠蔽されるべきかどうかを判断することによって行われる、ステップと
を備えることを特徴とする方法。
【請求項２】
ネットワークパケット損失またはレートマッチングにより起こるフレーム損失に起因する映像品質低下を測定するステップさらに備えることを特徴とする請求項１に記載の方法。
【請求項３】
請求項１に記載の方法を実行するためのプログラム。
【請求項４】
請求項１に記載の方法を実行するための受信機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フレーム損失によるリアルタイム映像アーチファクトを隠蔽する機構に関する。
【背景技術】
【０００２】
歴史を通して、技術の進歩により、一般的な作業の簡素化、および／またはより高い効率、スループット等を提供することが可能なさらに高度な方法でそのような作業を扱うことが可能になった。例えば、技術の進歩により、大抵は手動で行われた作業の自動化、情報の広範囲にわたる流布のさらなる容易さ、および対面会議または文書送付に代わる様々な通信方法がもたらされた。別の例によると、映像通信は、通信を行うことが可能なより普及した方法となり、映像データを（例えば、対応する音声データを伴ってまたは伴わずに）キャプチャし、それを見るために異なる場所に伝送することができる。このように、映像データを、リアルタイムで通信し、メモリに記憶し、転送すること等が可能である。
【０００３】
映像データをリアルタイムで取得し転送する映像通信は、例えば、テレビ会議で活用することが可能である。テレビ会議（例えば、音声および／または映像の会議、・・・）は、様々な地理的場所にいる多数の参加者が、移動する必要なく会議で協力し合うことを可能にする。テレビ会議の技術を使用することにより、ビジネスにかかるコストを下げることが可能で、一方同時に効率を高めることが可能である。なぜなら、テレビ会議により会議を行うことで、例えば人が集まる会議に比べて、課される時間、費用等をより少なくできるからである。
【０００４】
しかし、従来の映像通信技術では、アーチファクトのレンダリングの影響を受けやすく、これはフレーム損失により起こる映像内の何らかの感知される歪みであり得る。多くの技術が、フレーム損失の発生を軽減するために開発されてきたにもかかわらず、通信チャネルの固有の損失性（例えば、インターネットまたは任意の他のタイプのネットワーク上で転送されるデータ、・・・）が、リアルタイム映像通信のフレーム損失の度合いの原因であり続けている。例えば、フレーム損失は、ネットワークパケット損失、異常パケット等により引き起こされ得る。さらに、一般的な映像の符号化および伝送（例えば、ＭＰＥＧ映像、・・・）では、先に起きたフレーム損失が、フレーム間の依存関係に起因して、後に続くフレームに歪んだ画像を引き起こし得る。フレーム損失が、例えば、映像アーチファクトを１０秒まで起こすことは、珍しいことではない。今まで、デコーダは一般的には、どのフレームがフレーム損失に起因するアーチファクトを有するかを識別することができなかった。従って、リアルタイム映像通信システムは大抵、アーチファクトを有するこれらのフレームを隠し、廃棄する等よりむしろ、破損したフレームを表示するが、それはどのフレームがアーチファクトを有するかに関して良く理解していないためである。
【発明の概要】
【０００５】
以下では、本明細書において説明するいくつかの態様の基本的な理解を提供するために、簡略化した概要を提示する。本概要は、本請求の主題を広範囲に概観するものではない。本請求の主題の重要なまたは重大な要素を特定することも、その範囲を線引きすることも意図していない。その唯一の目的は、いくつかの概念を、後に提示するさらに詳細な説明の前置きとして、簡略化した形式で提示することである。
【０００６】
本請求の主題は、リアルタイム映像通信との関連において、フレーム依存構造の記述、通信、利用等を容易にするシステムおよび／または方法に関する。例えば、プロトコルを使用して、依存構造を送信者から受信者に通信することが可能である。さらに、受信者側の機構は、アーチファクトと共にレンダリングされるフレームを、それが前に起きたフレーム損失に起因して表示される場合に、検出することが可能である。本機構は、フレームの依存構造に関する受信者側の知識を活用することが可能である。
【０００７】
本請求の主題の種々の態様に従って、送信コンポーネントが、符号化された映像フレームのストリームを受信コンポーネントに転送することが可能である。各フレームを、複数のパケットとして通信することが可能である。さらに、各パケットは、関連する特定のフレームを識別するシーケンス番号、および特定のフレームが依存するフレームに対応する照会フレーム番号を含むことが可能である。従って、各パケットは、依存構造の一部を通信し、これが受信コンポーネントにより解釈され使用されて、フレーム間の依存関係を再構築し、フレーム損失を識別し、および／または、先に起きたフレームの損失に基づくアーチファクトを伴うフレームの表示を軽減することが可能である。むしろ、映像を、アーチファクトを含むフレームに関連する期間中フリーズし得る。従って、感知される映像の品質を向上することが可能である。別の例示によると、アーチファクトのためスキップされるフレームのログをとることが可能であり、および／または、いくつのフレームがアーチファクトを含むか、およびエラー隠蔽のためフリーズした映像のパーセンテージを測定する質的モデルに基づき、レポートを生成することが可能である。
【０００８】
以下の説明および添付の図面は、本請求の主題の特定の例示の態様を詳細に記載する。しかし、これらの態様は、そのような主題の原理を使用し得る種々の方法のうちのほんのいくつかを示すのみであり、本請求の主題は、そのような態様およびその等価物全てを含むよう意図している。他の利点および新規の特徴は、図面と併せて考察されるときに以下の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
【０００９】
【図１】リアルタイム映像通信のフレーム間の依存関係に関する情報を提供し利用する一例のシステムのブロック図である。
【図２】種々の態様に従ってリアルタイム映像通信と共に利用される一例の映像ストリームフレーミングパターンを示す図である。
【図３】Ｉフレーム、Ｂフレーム、Ｐフレーム、およびＳＰフレームを含む一例の映像ストリームパターンを表す表を示す図である。
【図４】リアルタイム映像フレームの損失を管理する一例のシステムのブロック図である。
【図５】一例のペイロードヘッダを示す図である。
【図６】一例のペイロードヘッダを示す図である。
【図７】フレーム損失によりひき起こされたリアルタイム映像アーチファクトを隠蔽するかどうかを推論する一例のシステムのブロック図である。
【図８】リアルタイム映像通信フレーム間の依存構造を記述するのを容易にする一例の方法論を示す図である。
【図９】フレーム損失に基づくアーチファクトの隠蔽を容易にする一例の方法論を示す図である。
【図１０】本請求の主題の新規な態様を使用し得る、一例のネットワーク環境を示す図である。
【図１１】本請求の主題に従って使用し得る一例の動作環境を示す図である。
【発明を実施するための形態】
【００１０】
本請求の主題を、図面を参照して説明するが、全体を通して同様の参照番号を同様の要素の参照に使用する。以下の記述において、説明の目的で、多数の具体的詳細を本主題の発明の全体理解を提供するために記載する。しかし、本請求の主題をこれらの具体的詳細なしで実践し得ることは明らかであろう。他の例において、周知の構造および装置を、本主題の発明の説明を容易にするためにブロック図の形式で示している。
【００１１】
本明細書で使用するとき、用語「コンポーネント」、「システム」等は、コンピュータ関係のエンティティ、すなわち、ハードウェア、ソフトウェア（例えば、実行中の）、および／またはファームウェアのいずれかを示すよう意図している。例えば、コンポーネントは、プロセッサ上で稼動するプロセス、プロセッサ、オブジェクト、実行ファイル、プログラム、および／または、コンピュータであり得る。例示として、サーバ上で稼動するアプリケーションおよびサーバの両方がコンポーネントであり得る。１つまたは複数のコンポーネントがプロセス内に存在し得、コンポーネントは１つのコンピュータ上に局在、および／または、２つまたはそれ以上のコンピュータ間に分散し得る。
【００１２】
さらに、標準のプログラミングおよび／またはエンジニアリング技術を使用して、開示する主題を実装するようコンピュータを制御するソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組合せを製作する方法、機器、または製品として、本請求の主題を実装し得る。用語「製品」は本明細書で使用するとき、任意のコンピュータ可読装置、キャリアまたは媒体からアクセス可能なコンピュータプログラムを包含するよう意図している。例えば、コンピュータ可読媒体は、磁気記憶装置（例えば、ハードディスク、フロッピー（登録商標）ディスク、磁気ストリップ、・・・）、光ディスク（例えば、ＣＤ（compact disk）、ＤＶＤ（digital versatile disk）、・・・）、スマートカード、およびフラッシュメモリ装置（例えば、カード、スティック、キードライブ、・・・）を含み得るが、これに限らない。加えて、当然のことながら、電子メールを送受信する際、またはインターネットもしくはＬＡＮ（local area network）といったネットワークにアクセスする際に使用されるようなコンピュータ可読電子データを搬送するのに、搬送波を使用し得る。もちろん、本請求の主題の範囲または精神から逸脱することなく、多くの修正がこの構成に成され得ることを、当業者は認識するであろう。さらに、単語「例示的」は、本明細書で使用して、例、事例または例示として機能することを意味する。本明細書において「例示的」として説明する任意の態様または設計を、必ずしも、他の態様または設計よりも好ましいまたは有利なものとして解釈すべきではない。
【００１３】
ここで、図面を参照すると、図１は、リアルタイム映像通信のフレーム間の依存関係に関する情報を提供および利用するシステム１００を例示する。システム１００は、任意のタイプの（例えば、映像、音声、画像、テキスト、文書、・・・に関する）データを、任意のタイプの接続を介して通信することができる送信コンポーネント１０２および受信コンポーネント１０４を含む。例えば、送信コンポーネント１０２は、映像データ（例えば、および／または音声データ）を符号化して、受信コンポーネント１０４へリアルタイムで（例えば、リアルタイム伝送プロトコル（ＲＴＰ）を利用して）伝送することが可能である。従って、映像フレームのストリームを転送することが可能である。１つの送信コンポーネント１０２および１つの受信コンポーネント１０４が表されているが、当然のことながら、システム１００は実質的には、送信コンポーネント１０２と同様の任意の数の送信コンポーネント、および／または受信コンポーネント１０４と同様の任意の数の受信コンポーネントを含むことが可能である。さらに、システム１００は、異なる時間において送信コンポーネント１０２が受信コンポーネントに変わる、および／または受信コンポーネント１０４が送信コンポーネントに遷移する（例えば、アクティブスピーカに関連するコンポーネント１０２〜１０４の識別子に基づく特定の時間における切り替え、手動切り替え、・・・）ように、切り替えを可能にし得る。送信コンポーネント１０２および／または受信コンポーネント１０４は、パーソナルコンピュータ、携帯電話、スマートフォン、ラップトップ、携帯用通信装置、携帯用コンピューティング装置、ゲーム装置、ＰＤＡ（personal digital assistant）、専用のテレビ会議システム、消費者製品、自動車、および／または任意の他の適切な装置であり得る。
【００１４】
当然のことながら、システム１００は、任意のタイプのネットワークアーキテクチャを使用可能である。従って、例えば、送信コンポーネント１０２および受信コンポーネント１０４は、その間でピアツーピアアーキテクチャを使用してデータを転送可能である（例えば、送信コンポーネント１０２および受信コンポーネント１０４が、ポイントツーポイント映像通信のためのネットワーク接続上でお互いに直接通信するエンドポイントであり得る、・・・）。別の例示によると、送信コンポーネント１０２と受信コンポーネント１０４との間で転送されるデータは、異なるコンポーネント（図示せず）（例えば、送信コンポーネント１０２および受信コンポーネント１０４といったいくつかのエンドポイントを相互接続し、その間にデータをルーティングすることを可能にするブリッジであり得る、音声／映像マルチポイント制御ユニット（ＡＶＭＣＵ）、・・・）を含むネットワークを介してトラバースし得る。一例によると、マルチパーティテレビ会議は、ＡＶＭＣＵを含むネットワークアーキテクチャを活用することができる（例えば、マルチパーティ映像通信は、フレームの再集計およびＡＶＭＣＵサーバの依存関係の再計算／再投入を招くことなく、システム１００を使用することができる）。
【００１５】
送信コンポーネント１０２は、フレーム識別コンポーネント１０６およびフレーム依存関係コンポーネント１０８を含み得る。フレーム識別コンポーネント１０６は、送信コンポーネント１０２により伝送するフレームのタイプ（例えば、以下の図２で説明するような、Ｉフレーム、ＳＰフレーム、Ｐフレーム、Ｂフレーム等）を判定することが可能である。一例によると、フレーム識別コンポーネント１０６は、フレームにタイプを割り当てる（例えば、フレームの時間的順序に基づき、・・・）ことが可能な依存構造を使用し得る。さらに、フレーム識別コンポーネント１０６は、一意的なシーケンス番号を伝送するフレームに指定することが可能である。従って、フレーム識別コンポーネント１０６は、一意的なシーケンス番号（例えば、フレームカウント）を、フレームに含まれる各パケットのペイロードヘッダに符号化することを可能にし得る。
【００１６】
フレーム依存関係コンポーネント１０８は、送信コンポーネント１０２により転送するフレームの依存関係を評価することができる。依存関係は、フレームのタイプに基づくものであり得、従って、フレーム依存関係コンポーネント１０８は、フレーム識別コンポーネント１０６により判定されるようなフレームのタイプを利用して、そのフレームの依存関係を解釈することが可能である。フレーム依存関係コンポーネント１０８はまた、依存構造を利用して、フレームの依存関係を評価することが可能である。一例によると、フレーム依存関係コンポーネント１０８は、フレームの依存関係情報（例えば、照会フレーム番号、・・・）を、フレームの各パケットのペイロードヘッダに符号化することを可能にし得る。
【００１７】
フレーム識別コンポーネント１０６およびフレーム依存関係コンポーネント１０８を使用することにより、送信コンポーネント１０２は、フレーム依存構造を記述する機構を提供することができる。さらに、このフレーム依存構造を、受信コンポーネント１０４に（例えば、本明細書で説明するプロトコルを介して）通信することが可能である。対照的に、従来の技術ではしばしば、受信コンポーネント１０４がフレーム依存構造を理解、解釈、使用等を行う方法を提供できない。
【００１８】
受信コンポーネント１０４はさらに、依存関係再構築コンポーネント１１０、損失評価コンポーネント１１２、およびアーチファクト隠蔽コンポーネント１１４を含み得る。依存関係再構築コンポーネント１１０は、取得したフレームに（例えば、ペイロードヘッダ内に）組み込まれたデータを評価して、複数のフレーム間の依存構造を再構築することができる。例えば、受信したフレームに関連するフレームシーケンス番号および照会フレーム番号により、依存関係再構築コンポーネント１１０がフレーム間の依存関係を分析することが可能となり得る。
【００１９】
加えて、損失評価コンポーネント１１２は、送信コンポーネント１０２により転送したフレームの紛失を識別することができる。一例によると、損失評価コンポーネント１１２は、フレームの到着、受信したフレーム内の破損等を追跡することができる。別の例示として、送信コンポーネント１０２のフレーム識別コンポーネント１０６により含有されるフレームのシーケンス番号は、損失評価コンポーネント１１２により評価されて、各フレームが成功裏に受信されたかどうかを判定することが可能である。従って、損失評価コンポーネント１１２は、例えば、送信コンポーネント１０２にて指定されるようなフレーム１、２、および４が受信コンポーネント１０４により適切に取得され、フレーム３がまだ受信されていない（例えば、フレーム３からの１つまたは複数のパケットが紛失、異常、破損した、・・・）ことを識別することが可能である。
【００２０】
さらに、アーチファクト隠蔽コンポーネント１１４が、損失したフレームのタイプおよび損失したフレームのシーケンス内の位置に基づき、フレーム損失の影響を分析する。さらに、アーチファクト隠蔽コンポーネント１１４は、アーチファクトを表示するよりむしろレンダリングされた出力をフリーズすることを可能にし得る。従って、破損したフレームを、アーチファクトを伴って表示するより、むしろ隠す、廃棄する等が可能だが、これは映像アーチファクトが、感知される品質（例えば、心理的視覚品質）に、実質的な負の影響を有し得るためである。アーチファクト隠蔽コンポーネント１１４は、依存関係再構築コンポーネント１１０により判別される依存構造、および／または、損失評価コンポーネント１１２により識別される損失したフレームを利用して、どのフレームがフレーム損失に起因するアーチファクトを示し得るかを判定することができる。さらに、アーチファクト隠蔽コンポーネント１１４は、表示されればアーチファクトを含むものとして識別されるフレームを隠すことができる。従って、アーチファクト隠蔽コンポーネント１１４は、アーチファクトを含むフレームを示すよりもむしろ、延長される時間については（例えば、レンダリングされる表示のフリーズを介して）アーチファクトが無いフレームを表示し続けることを可能にし得る。送信コンポーネント１０２から通信される依存構造を活用することにより、アーチファクト隠蔽コンポーネント１１４は、対応する時間を判定して映像をフリーズすることが可能である。対照的に、従来の技術では、一般的にはフレーム損失の影響の範囲を識別することができない。
【００２１】
当然のことながら、送信コンポーネント１０２および／または受信コンポーネント１０４は、それぞれのインターフェースコンポーネント（図示せず）を含むことができる。インターフェースコンポーネントは、種々のアダプタ、コネクタ、チャネル、通信路等を活用して、それらの間の相互作用を可能にすることができる。
【００２２】
ここで、図２を参照して、種々の態様に従ってリアルタイム映像通信と共に利用される、一例の映像ストリームフレーミングパターン２００を例示する。種々のタイプのフレームを、映像符号化のためにサポートし得る。さらに、図２に例示する矢印は、各フレーム（例えば、照会フレーム）の依存関係を表す。例えば、フレーミングパターン２００に示すように、フレームは、イントラフレーム（Ｉフレーム）、予測フレーム（Ｐフレーム）、双方向フレーム（Ｂフレーム）、または超予測フレーム（super prediction frame）（ＳＰフレーム）であり得る。フレーミングパターン２００は、例として提供するものであり、当然のことながら、本請求の主題はそのように限定されない（例えば、任意の数のフレームがＩフレーム間に含まれ得る、追加のまたはより少数のフレームタイプが使用され得る、異なる依存関係が利用され得る、・・・）。
【００２３】
Ｉフレームは、他のいかなるフレームにも依存しない独立フレームである。Ｉフレームは、静的に符号化され、かなりの量の詳細（detail）およびコンテンツを（例えば、他のタイプのフレームと比較して）有し、一般的には、他のタイプのフレームと比較して大きさが大きい。ＳＰフレームは、前のＩフレームまたはＳＰフレームとの比較に基づく符号化された差分情報（例えば、差分）を含み、従って、フレーミングパターン２００に表されるように、特定のＳＰフレームは、その特定のＳＰフレームの最も近くにある、前のＩフレームまたは前のＳＰフレームに従属する（例えば、ＳＰ５はＩ１を参照する、ＳＰ９はＳＰ５を参照する、・・・）。近接の程度が、指定されたシーケンス番号（例えば、フレームカウント）に基づき評価され得る。Ｐフレームは、前のＩフレーム、ＳＰフレームまたはＰフレームとの比較に基づく、符号化された差分情報（例えば、差分）を含む。さらに、Ｂフレームは、前のＩフレーム、ＳＰフレームまたはＰフレーム、および後のＰフレームまたはＳＰフレームとの２方向の比較に基づく、符号化された差分情報（例えば、差分）を含む。Ｂフレームは、従って、２つの異なるフレームを参照する。
【００２４】
Ｉフレームは、ピクチャのグループ（ＧＯＰ）の始まりであり、ＧＯＰは次のＩフレームまで続く。ＧＯＰは任意の数のフレーム（例えば、約１５０、・・・）を含み得ると考えられる。ＧＯＰの中でＩフレームだけが、ＧＯＰ内の他のフレームから独立している。例えば、Ｉ１およびＩ１３は、他のいかなるフレームも参照しない。さらに、残りのフレーム（例えば、ＳＰフレーム、Ｐフレーム、Ｂフレーム、・・・）は、他のフレームに従属し、そのエンティティ内のデータよりもむしろ差分が符号化され得る。さらに、各ＧＯＰは、異なるＧＯＰから独立している。
【００２５】
フレーミングパターン２００内の各フレームは、１〜Ｎ個のパケットを含み得る。ここで、Ｎは実質的には任意の整数であり得る。さらに、パケット数は、フレームの大きさの関数であり得る（例えば、映像のコンテンツに基づくことが可能である）。いかなるパケットの損失（例えば、図１の損失評価コンポーネント１１２により判定されるような）も、フレーム全体がドロップする原因になり得る。
【００２６】
さらに、フレーム損失の影響は、損失したフレームのタイプ及び位置に依存する。特に、損失したフレームを参照するフレームは、アーチファクトを含むであろう。従って、Ｉフレームを損失した場合、現在のＧＯＰ内の全ての後続フレームがアーチファクトを有するであろうし、次のＩフレームだけが補正を提供するであろう。別の例によると、ＳＰフレームを損失した場合、現在のＧＯＰの終わりまで、そのＳＰフレームの後の全てのフレームがアーチファクトを有するであろう（例えば、次のＩフレームは、ＳＰフレームの損失を補正するであろう）。別の例示によると、Ｐフレームを損失した場合、次のＳＰフレームまたはＩフレーム、このどちらももうすぐ発生するものであるが、その前の全てのフレームがアーチファクトを示すであろう。さらに、Ｂフレームは１つのフレームの損失を起こすのみである（例えば、Ｂフレーム自体であり、それは他のタイプのフレームがＢフレームを参照しないためである）。従って、そのような損失の影響は広がらず、結果的にアーチファクトが生じない。
【００２７】
ここで、図３を参照して、Ｉフレーム、Ｂフレーム、Ｐフレーム、およびＳＰフレームを含む一例の映像ストリームパターンを表す表３００を例示する。表３００は、依存構造の全体像を提供し得る。表３００は、図２の映像ストリームフレーミングパターン２００に対応し得ると考えられる。さらに、当然のことながら、表３００は、フレーム間の依存関係の例を例示するために提供するものであり、本請求の主題はそのような例に限定されない。
【００２８】
表３００の行１には、時間的順序で映像キャプチャ装置から取得されるフレームのシーケンスを含む。表の行２は、エンコーダへの入力を示し、エンコーダの入力は、映像キャプチャ装置から取得されるフレームのシーケンスと実質的に同様であり得る。行３は、各フレームに対してエンコーダにより達成される符号化の内部ビューを例示する。特に、各フレームは、時間的順序におけるその位置に基づくタイプ（例えば、Ｉフレーム、Ｂフレーム、Ｐフレーム、ＳＰフレーム、・・・）に関連する。行４は、エンコーダからの出力を示す。例えば、Ｂ２フレームは、Ｐ３フレームの後に出力され得る。また、エンコーダは、２つのＰフレーム（例えば、Ｐ３およびＰ５）を送信し、その後に、そのようなＰフレームに従属するＢフレーム（例えば、Ｂ４）を送信する。それらは、受信側でＰフレーム（例えば、Ｐ３）−Ｂフレーム（例えば、Ｂ４）−Ｐフレーム（例えば、Ｐ５）であるとして再度順序付けられ得る。しかし、当然のことながら、本請求の主題は、有線上で送信される符号化されたフレームを順序付けるこの方法に限らない。行５は、行４に示すエンコーダから出力される各フレームに指定されるシーケンス番号（例えば、フレームカウント）を例示する。例えば、行５内のシーケンス番号は、図１のフレーム識別コンポーネント１０６により割り振ることが可能である。行６および行７は、行４内の各出力フレームの照会フレーム番号を例示する。照会フレーム番号は、各特定のフレームが従属するフレームの行４に指定されるシーケンス番号に付随する。これらの照会番号は、図１のフレーム依存関係コンポーネント１０８により生成されることができる。さらに、各Ｂフレームは、２つの照会番号に関連し得、ＳＰフレームおよびＰフレームは、それぞれ１つの照会番号に関連し得る。また、Ｉフレームは独立しているため、その照会番号は、Ｉフレーム自体を指し示す。行８は、デコーダ入力フレームを示す。さらに、行９は、デコーダ出力フレームを表す。例えば、Ｂ２およびＰ３は、デコーダからの出力の一部として再順序付けされ得る。
【００２９】
図４には、リアルタイム映像フレームの損失を管理するシステム４００が例示されている。システム４００は、互いに通信可能な送信コンポーネント１０２および受信コンポーネント１０４を含む。送信コンポーネント１０２はさらに、フレーム識別コンポーネント１０６および／またはフレーム依存関係コンポーネント１０８を含み得る。また、受信コンポーネント１０４は、依存関係再構築コンポーネント１１０、損失評価コンポーネント１１２、および／またはアーチファクト隠蔽コンポーネント１１４を含み得る。
【００３０】
送信コンポーネント１０２は、加えてデータキャプチャコンポーネント４０２、エンコーダ４０４、およびフィードバックコンポーネント４０６を含み得る。データキャプチャコンポーネント４０２は、映像、画像、音、テキスト等といった外部データを取得することが可能である。一例によると、データキャプチャコンポーネント４０２は、カメラ（例えば、ビデオカメラ）、マイクロフォン、その組合せ等であり得る。さらに、データキャプチャコンポーネント４０２は、フレームのシーケンス（例えば、映像フレーム）を収集することが可能である。さらに、データキャプチャコンポーネント４０２は、受信コンポーネント１０４への転送のためにメモリから先に取得されたデータを検索することを可能にし得ると考えられる。
【００３１】
エンコーダ４０４は、受信コンポーネント１０４への伝送のためにデータキャプチャコンポーネント４０２により収集された信号（例えば、映像フレーム）を符号化することが可能である。一例示によると、エンコーダ４０４は、収集されたデータを圧縮することが可能である。さらに、この例に対して、エンコーダ４０４は、フレームのサブセットを独立して圧縮（例えば、Ｉフレーム）、および、フレームの残りを照会フレームからの差分に基づき圧縮（例えば、依存性構造に従って）することが可能である。さらに、多層の依存関係は、エンコーダ４０４によって使用され得る。加えてまたはあるいは、エンコーダ４０４は、映像フレームを暗号化する、冗長性を加える等が可能である。さらなる一例によると、エンコーダ４０４は、受信コンポーネント１０４へ送信されるストリームから１つまたは複数のフレームタイプを除去することが可能である（例えば、Ｂフレームを除去し得る、ＢフレームおよびＰフレームを除去し得る、・・・）。また、受信コンポーネント１０４が１つまたは複数のフレームタイプの処理を行わずに済ませることが可能であること、ＡＶＭＣＵが１つまたは複数のフレームタイプのルーティングを中止することが可能であること等も考えられる。
【００３２】
図示したように、エンコーダ４０４は、フレーム識別コンポーネント１０６およびフレーム依存関係コンポーネント１０８を含み得るが、フレーム識別コンポーネント１０６および／またはフレーム依存関係コンポーネント１０８はエンコーダ４０４から分離することも可能と考えられる。フレーム識別コンポーネント１０６は、エンコーダ４０４が各フレームにタイプを指定する（例えば、Ｉフレーム、Ｂフレーム、Ｐフレーム、ＳＰフレーム、・・・）ことを可能にし、タイプ指定は依存構造に基づき得る。また、フレーム識別コンポーネント１０６は、フレームシーケンス番号（例えば、フレームカウント）を各フレームに割り当て得る。例えば、エンコーダ４０４により出力される全てのフレームに、直前に出力されるフレームのフレームカウントから１増分されるフレームカウントを指定し得る。さらに、フレームカウント、および、エンコーダ４０４により出力されるフレームに対応するタイプは、送信コンポーネント１０２に関連するデータストア（図示せず）に保持し得る。記憶されたフレームカウントおよび過去分のフレームのタイプを、フレーム依存関係コンポーネント１０８が利用して、エンコーダ４０４により生成される各出力フレームに対する照会フレーム番号を計算することが可能である。
【００３３】
データストアは、例えば、揮発性メモリもしくは不揮発性メモリのいずれかであり得、または、揮発性メモリおよび不揮発性メモリの両方を含み得る。限定ではなく例示として、不揮発性メモリには、ＲＯＭ（read only memory）、ＰＲＯＭ（programmable ROM）、ＥＰＲＯＭ（erasable programmable ROM）、ＥＥＰＲＯＭ（electrically erasable programmable ROM）、またはフラッシュメモリを含み得る。揮発性メモリには、外部キャッシュメモリとして動作するＲＡＭ（random access memory）を含み得る。限定ではなく例示として、ＲＡＭは、例えば、ＳＲＡＭ（static RAM）、ＤＲＡＭ（dynamic RAM）、ＳＤＲＡＭ（synchronous DRAM）、ＤＤＲ  ＳＤＲＡＭ（double data rate SDRAM）、ＥＳＤＲＡＭ（enhanced SDRAM）、ＳＬＤＲＡＭ（Synchlink DRAM）、ＲＤＲＡＭ（Rambus dynamic RAM）、ＤＲＤＲＡＭ（direct Rambus dynamic RAM）、およびＲＤＲＡＭ（Rambus dynamic RAM）といった多くの形式で、利用可能である。本主題のシステムおよび方法のデータストアは、これらのおよび任意の他の適切なタイプのメモリを含むよう意図しているが、これに限らない。加えて、当然のことながら、データストアはサーバ、データベース、ハードドライブ等であり得る。
【００３４】
エンコーダ４０４は、例えば、各フレームに対してＮ個のパケットを生成し、これらのＮ個のパケットを、送信コンポーネント１０２から受信コンポーネント１０４へ転送し得る。エンコーダ４０４により生成される各パケットは、（図５および図６で以下に説明するような）ペイロードヘッダおよびペイロードを含み得る。ペイロードヘッダは、依存構造に付随する情報を含み得る。さらに、ペイロードは、パケットに対応するフレームのコンテンツの少なくとも一部を含み得る。
【００３５】
フィードバックコンポーネント４０６は、性能レポート、チャネル帯域幅分析、再伝送要求等を、受信コンポーネント１０４（および／または、データがトラバースするネットワーク内の任意の異なるコンポーネント（図示せず））から取得し得る。さらに、フィードバックコンポーネント４０６は、受け取ったフィードバックに基づきエンコーダ４０４の出力の修正を達成し得る。
【００３６】
受信コンポーネント１０４は、加えて、レンダリングコンポーネント４０８、デコーダ４１０、性能追跡コンポーネント４１２および再伝送要求コンポーネント４１４を含み得る。レンダリングコンポーネント４０８は、受信したデータに基づき出力を生成することが可能である。例として、レンダリングコンポーネント４０８は、受信コンポーネント１０４により取得されたリアルタイム映像が提示され得るディスプレイであり得る。レンダリングコンポーネント４０８は、受信コンポーネント１０４により取得されたデータに応答して、任意のタイプの出力（例えば、聴覚的、視覚的、物理的移動、・・・）を生成し得ると考えられる。別の例によると、レンダリングコンポーネント４０８は、生成された出力を、受信コンポーネント１０４に関連するデータストア（図示せず）に記憶することを可能にし得る。
【００３７】
デコーダ４１０は、示すように、依存関係再構築コンポーネント１１０、損失評価コンポーネント１１２、および／または、アーチファクト隠蔽コンポーネント１１４を含み得る。しかし、１つまたは複数のこれらのコンポーネント１１０〜１１４をデコーダ４１０から分離することも可能と考えられる。デコーダ４１０は、エンコーダ４０４により達成された符号化を覆すことが可能である。例えば、デコーダ４１０は、各フレームに対応するパケットを取得し、そのようなパケットを処理してレンダリングコンポーネント４０８に提供され得る出力を生成し得る。デコーダ４１０は、アーチファクトを有しないフレームのレンダリングを可能にし、一方、アーチファクトを有するフレームのレンダリングを阻止し得る。さらに、デコーダ４１０（および／または、依存関係再構築コンポーネント１１０および／または損失評価コンポーネント１１２）は、フレームが成功裏に到着し、成功裏に復号され得るかどうかを追跡するために利用されるフレーム依存関係の表を生成し得る。以下は、そのようなフレーム依存関係の表の例を提供する。
【００３８】
【表１】
0005384488.tif 000002
【００３９】
示すように、フレームが成功裏に到着する場合（例えば、損失評価コンポーネント１１２により判定されるように）、表内の対応する枠が、到着＝真（「１」）として印付けされ得る。フレームが到着しない場合、対応する枠は到着＝偽（「０」）、復号＝偽（「０」）と設定され得る。さらに、特定のフレームの照会フレーム（例えば、依存関係再構築コンポーネント１１０により判定されるような）が、成功裏に復号化される場合、次にその特定のフレームは、同様に成功裏に復号化され得、対応する枠は、復号＝真（「１」）として印付けされ得る。さらに、特定のフレームの照会フレームの復号値＝偽（「０」）の場合、その特定のフレームの復号値もまた、偽である。その後、アーチファクト隠蔽コンポーネント１１４は、どのフレームがアーチファクトを提示するかを判定することを可能にし、従って、レンダリングコンポーネント４０８上に表示される出力を、いつフリーズおよび／またはフリーズ解除するかを識別し得る。しかし、当然のことながら、本請求の主題は、本明細書に説明するフレーム依存関係の表を利用することに限定されない。
【００４０】
受信コンポーネント１０４はまた、アーチファクト／フレーム損失に起因する映像品質低下の指標であり得る、アーチファクトのためスキップされるフレームのログをとる、および／またはレポートする性能追跡コンポーネント４１２を含み得る。性能追跡コンポーネント４１２は、いくつのフレームがアーチファクトを含むか、（例えば、アーチファクト隠蔽コンポーネント１１４による）エラー隠蔽のためフリーズした映像のパーセンテージ等を測定する質的モデルに基づき、レポートを生成することが可能である。性能追跡コンポーネント４１２は、フレーム損失に起因する映像品質低下を正確に測定可能であり、フレーム損失は、ネットワークパケット損失、レートマッチング等により起こり得る。一例によると、性能追跡コンポーネント４１２は、フレーム依存関係の表を利用してレポートを生成し得る。さらに、性能追跡コンポーネント４１２は、レポートを送信コンポーネント１０２のフィードバックコンポーネント４０６へ伝送する（例えば、エンコーダ４０４の動作の修正を達成するために、・・・）、受信コンポーネント１０４に関連するデータストア内にレポートを保持する等が可能である。
【００４１】
さらに、受信コンポーネント１０４は、受信コンポーネント１０４に転送される新しいＩフレーム（および／または、Ｐフレームの損失の場合は、ＩフレームまたはＳＰフレーム）についての要求を送信コンポーネント１０２（例えば、フィードバックコンポーネント４０６、・・・）に伝送する再伝送要求コンポーネント４１４を含み得る。例えば、再伝送要求コンポーネント４１４（および／または、デコーダ４１０）が、アーチファクトが閾値の時間より大きいと感知した場合（例えば、１秒、・・・）、新しいフレームの要求は送信され得る。別の例示によると、Ｉフレーム、ＳＰフレーム、またはＰフレームの損失が検出されるとき、再伝送要求４１４が要求を送信し得る。例えば、フィードバックコンポーネント４０６が要求を処理することが可能であり、１往復時間（ＲＴＴ）内に、新しいＩフレームまたはＳＰフレームが受信コンポーネント１０４に到着して、映像アーチファクトを補正し得る。
【００４２】
加えて、図示しないが、送信コンポーネント１０２および／または受信コンポーネント１０４は、本明細書に説明するフレーム依存関係機構の利用を起動および停止させることを可能にする切り替えコンポーネントを含み得ると考えられる。例えば、切り替えコンポーネントは、フレーム依存関係機構をオンまたはオフにする一方、送信コンポーネント１０２と受信コンポーネント１０４との間の相互運用性の問題を軽減させることを可能にし得る。
【００４３】
ここで図５および図６を参照して、ペイロードヘッダの例５００および６００を例示する。通信される各パケット（例えば、送信コンポーネント１０２と受信コンポーネント１０４との間で）は、ペイロードヘッダ５００および６００の１つを含み得る。さらに、図５のペイロードヘッダ５００は、Ｉフレーム、ＰフレームまたはＳＰフレームと共に使用され、一方、図６のペイロードヘッダ６００は、Ｂフレームに使用され得る。
【００４４】
ペイロードヘッダ５００および６００は、リアルタイム映像パケットの一部であり、フレームコンテンツを含むペイロードと共にある。ペイロードヘッダ５００および６００それぞれは、対応するフレームに関連するフレームカウント（および高フレームカウント（Ｈ−ＦＣ））、および照会フレーム番号（および高照会フレーム番号（Ｈ−ＲＦ））を含む（例えば、ペイロードヘッダ５００は１つの照会フレーム番号を含み、ペイロードヘッダ６００は２つの照会フレーム番号を含み得る）。Ｂフレームのペイロードヘッダ６００において、照会フレーム番号フィールドを、次のおよび前の照会フレーム番号に分割し得る。加えて、ペイロードヘッダ５００および６００は、以下を含み得る。第１パケットであり得るＦ、シーケンスヘッダであり得るＨ、キーフレームであり得るＫ、１に固定され得るＯ、Ｌ、ＳＰフレームであり得るＳ、キャッシュフレームであり得るＣ、モードであり得るＭである。ペイロードヘッダ５００および６００は、モードを１に設定し得る。加えて、拡張部のモードビット（ゼロに等しく例示される）を１に等しく設定して別の４バイトを取得することにより、パケット化ヘッダのさらなる拡張が考えられる。
【００４５】
図７を参照して、フレーム損失によりひき起こされたリアルタイム映像アーチファクトを隠蔽すべきかどうかを推論するシステム７００を例示する。システム７００には、リアルタイム通信コンポーネント７０２を含み得、これは上述した送信コンポーネント１０２または受信コンポーネント１０４と実質的に同様であり得る。リアルタイム通信コンポーネント７０２は、さらにインテリジェントコンポーネント７０４および／または提示コンポーネント７０６を含み得る。インテリジェントコンポーネント７０４は、リアルタイム通信コンポーネント７０２により利用されて、レンダリングされた映像出力をフリーズまたはフリーズ解除すべきかどうかについて結論づけ得る。さらに、インテリジェントコンポーネント７０４は、リアルタイム通信コンポーネント７０２に関連するコンテキスト、状態、状況等を評価して、アーチファクトが存在するかどうか、アーチファクトを隠蔽すべきかどうか、フレームの再伝送、フレーム間の依存関係を要求すべきかどうか等を推論することが可能である。
【００４６】
当然のことながら、インテリジェントコンポーネント７０４は、イベントおよび／またはデータを介してキャプチャされるような一連の観測から、システム、環境、および／またはユーザの状態について結論づけを提供し、または推論することが可能である。例えば、推論を使用して特定のコンテキストまたはアクションを識別し、または、推論により状態全体の確立分布を生成し得る。推論は、確率論的であり得る−すなわち、データおよびイベントについての考察に基づく、関心対象の状態全体の確立分布の計算であり得る。推論はまた、一連のイベントおよび／またはデータからより高レベルのイベントを構成するために使用される技術を参照し得る。イベントが時間的に密接に接近して相互に関連があるかどうか、およびイベントおよびデータが１つまたはいくつかのイベントソースおよびデータソースに由来するかどうかについて、そのような推論により、一連の観測されたイベントおよび／または記憶されたイベントデータから、新しいイベントまたはアクションの構築が得られる。種々の分類（明示的におよび／または暗示的に訓練された）のスキームおよび／またはシステム（例えば、サポートベクターマシン、ニューラルネットワーク、エキスパートシステム、ベイジアン信念ネットワーク、ファジー理論、データ融合エンジン・・・）を、本請求の主題との関連における自動的および／または推論されるアクションを実行することとの関連において、使用し得る。
【００４７】
分類器は、入力属性ベクトル、ｘ＝（ｘｌ，ｘ２，ｘ３，ｘ４，ｘｎ）を、入力がクラスに属する信頼度、すなわち、ｆ（ｘ）＝ｃｏｎｆｉｄｅｎｃｅ（ｃｌａｓｓ）にマッピングする機能である。そのような分類は、確率論的なおよび／または統計に基づく分析（例えば、分析のユーティリティおよびコストの要因に含める）を使用して、ユーザが自動的に実行されることを所望するアクションを予知または推論し得る。ＳＶＭ（support vector machine）は、使用され得る分類器の一例である。ＳＶＭは、可能性のある入力の空間内の超曲面（hypersurface）を発見することにより動作し、その超曲面は、トリガ基準を非トリガイベントから分けようと試みる。直観的に、これにより分類は、訓練データに近いが同一ではないテストデータに対して補正される。他の有向および無向のモデル分類のアプローチには、例えば、ナイーブベイズ、ベイジアンネットワーク、決定木、ニューラルネットワーク、ファジー理論モデル、および、異なるパターンの独立性が使用され得る場合には確率的分類モデルが含まれる。本明細書で使用される分類はまた、優先度のモデルを開発するために利用される統計的回帰を含む。
【００４８】
提示コンポーネント７０６は、種々のタイプのユーザインターフェースを提供して、ユーザとリアルタイム通信コンポーネント７０２に連結される任意のコンポーネントとの間の相互作用を容易にし得る。図示したように、提示コンポーネント７０６は、リアルタイム通信コンポーネント７０２に組み込まれる。しかし、当然のことながら、提示コンポーネント７０６および／または同様の表示コンポーネントは、リアルタイム通信コンポーネント７０２および／またはスタンドアロンのユニットから分離可能である。提示コンポーネント７０６は、１つまたは複数のＧＵＩ（graphical user interface）、コマンドラインインターフェース等を提供し得る。例えば、データをロード、インポート、読み込み等する領域または手段をユーザに提供し、その結果を提示する領域を含み得るＧＵＩをレンダリングし得る。これらの領域は、ダイアログボックス、スタティック制御、ドロップダウンメニュー、リストボックス、ポップアップメニュー、編集制御、コンボボックス、ラジオボタン、チェックボックス、プッシュボタン、およびグラフィックボックスを含む既知のテキストおよび／またはグラフィックの領域を含み得る。加えて、そのようなナビゲーション用の垂直および／または水平のスクロールバー、およびツールバーボタンの提示を容易にして、領域を可視化するかどうかを判定するためのユーティリティを使用し得る。例えば、ユーザは、リアルタイム通信コンポーネント７０２に連結される１つまたは複数のコンポーネントと相互作用することが可能である。
【００４９】
ユーザはまた、その領域と相互作用して、例えば、マウス、ローラボール、キーパッドキーボード、ペン、および／または音声起動といった種々の装置を介して、情報を選択および提供することが可能である。一般的には、プッシュボタンまたはキーボード上の入力キーといった機構を使用して、検索を起動するために続いて情報を入力し得る。しかし、当然のことながら、本請求の主題はそのように限定されない。例えば、単にチェックボックスをハイライトするだけで、情報伝達を起動できる。別の例においては、コマンドラインインターフェースを使用し得る。例えば、コマンドラインインターフェースは、（例えば、ディスプレイ上のテキストメッセージおよび音声トーンを介して）テキストメッセージを提供することを介して、ユーザに情報入力を促すことが可能である。次いで、ユーザは、インターフェースプロンプトに提供される選択肢、またはプロンプトで提示される質問への回答に対応する英数字の入力というように、適切な情報を提供し得る。当然のことながら、コマンドラインインターフェースは、ＧＵＩおよび／またはＡＰＩとの関連において使用し得る。加えて、コマンドラインインターフェースを、ハードウェア（例えば、ビデオカード）および／または限定されたグラフィックサポートを伴うディスプレイ（例えば、白黒、およびＥＧＡ）、および／または低帯域幅通信チャネルとの関連において、使用し得る。
【００５０】
図８〜図９は、本請求の主題に従う方法論を例示する。説明を簡素化するために、方法論を、一連の動作として図示および説明する。当然のことながら、本主題の発明は、例示する動作により、および／または動作の順番により限定されず、例えば、動作は種々の順番でおよび／または同時に、ならびに本明細書に提示および説明されない他の動作と共に起こり得る。さらに、全ての例示する動作が、本請求の主題に従う方法論を実装するために要求されるわけではない。加えて、方法論をあるいは、状態図またはイベントを介して、一連の相関する状態として表し得ることを、当業者は理解および認識するであろう。
【００５１】
図８を参照して、リアルタイム映像通信フレーム間の依存構造の記述を容易にする方法論８００を例示する。参照番号８０２にて、伝送のために符号化されているフレームのタイプを識別する。例えば、フレームは、Ｉフレーム、Ｂフレーム、Ｐフレーム、ＳＰフレーム等であり得る。さらに、そのタイプは、既知の依存構造に基づき得る。参照番号８０４にて、シーケンス番号を、フレームに対して指定し得る。加えて、フレームのシーケンス番号および前に符号化されたフレームを、保持し得る（例えば、メモリ内に）。参照番号８０６にて、フレームが依存する少なくとも１つの照会フレームを、少なくとも一部においてタイプに基づき判定し得る。さらに、依存構造は、各フレームタイプの依存関係を特定し得る。参照番号８０８にて、フレームのシーケンス番号、および、少なくとも１つの照会フレームに対応する該少なくとも１つの照会フレーム番号を含むパケットが伝送され得る。例えば、フレームは任意の数のパケットを含み得、各パケットはシーケンス番号および少なくとも１つの照会フレーム番号を含み得る。さらに、各パケットは、ペイロードヘッダおよびペイロードを含み、ペイロードヘッダは、シーケンス番号および少なくとも１つの照会フレーム番号を含み、ペイロードは、フレームコンテンツを含み得る。
【００５２】
ここで図９を参照して、フレーム損失に基づくアーチファクトの隠蔽を容易にする方法論９００を例示する。参照番号９０２にて、リアルタイム映像通信のフレーム損失を追跡し得る。例えば、受信したフレームのパケットは、それぞれ、一意のフレーム特定のシーケンス番号を含み得、従って、成功裏に受信されなかったフレーム（例えば、パケット損失、異常パケットのため）を、シーケンス番号に基づき識別し得る。参照番号９０４にて、フレームがアーチファクトを有するかどうかを、前のフレーム損失および受信された依存関係情報に基づき識別し得る。一例示によると、依存関係情報（例えば、フレームが従属するフレーム）を、フレームに対応する受信したパケットと共に含み得る。参照番号９０６にて、フレームがアーチファクトを有するときにフレームが隠蔽され得る。従って、アーチファクトの復号化を阻止し、および／またはアーチファクトを有するフレームに関連する期間中映像をフリーズし得る（アーチファクトを有する映像をレンダリングするよりはむしろ）。さらに、隠蔽されたフレームを追跡してレポートを生成し、レポートをエンコーダに通信し得る。さらに、アーチファクトを有するフレームの数が所定の閾値を越えると、Ｉフレーム（および／またはＳＰフレーム）を再送信する要求をエンコーダに伝送し得る。
【００５３】
本請求の主題の種々の態様を実装するための追加のコンテキストを提供するために、図１０〜図１１および以下の検討が、本主題の発明の種々の態様が実装され得る適切なコンピューティング環境の簡潔な一般的説明を提供するよう意図している。例えば、図１０〜図１１は、テキストデータを生成すること、および／または、リアルタイム会議に関連するクローズドキャプションのためのそのようなデータを出力することとの関連において使用され得る適切なコンピューティング環境について記載する。本請求の主題を、ローカルなコンピュータおよび／またはリモートのコンピュータ上で稼動するコンピュータプログラムのコンピュータ実行可能命令の一般的文脈で説明したが、本主題の発明がまた、他のプログラムモジュールとの組み合わせにおいて実装され得ることを当業者は認識するであろう。一般に、プログラムモジュールは、特定のタスクを実行し、および／または特定の抽象データ型を実装するルーチン、プログラム、コンポーネント、データ構造等を含む。
【００５４】
さらに、当業者は理解するであろうが、本発明の方法を、シングルプロセッサまたはマルチプロセッサコンピュータシステム、ミニコンピュータ、メインフレームコンピュータ、および、パーソナルコンピュータ、携帯用コンピューティング装置、マイクロプロセッサベースのおよび／またはプログラム可能な家庭用電化製品等を含む他のコンピュータシステム構成と共に実践し、それらのそれぞれが１つまたは複数の関連する装置と動作可能に通信し得る。本請求の主題の例示される態様をまた、特定のタスクが通信ネットワークを介してリンクされるリモート処理装置により実行される分散コンピューティング環境において実践し得る。しかし、本主題の発明の、全てではないにしてもいくつかの態様を、スタンドアロンコンピュータ上で実践し得る。分散コンピューティング環境において、プログラムモジュールは、ローカルおよび／またはリモートのメモリ記憶装置に設置し得る。
【００５５】
図１０は、本請求の主題が相互作用可能なサンプルのコンピューティング環境１０００の概略ブロック図である。システム１０００は、１つまたは複数のクライアント１０１０を含む。クライアント１０１０は、ハードウェアおよび／またはソフトウェア（例えば、スレッド、プロセス、コンピューティング装置）であり得る。システム１０００はまた、１つまたは複数のサーバ１０２０を含む。サーバ１０２０は、ハードウェアおよび／またはソフトウェア（例えば、スレッド、プロセス、コンピューティング装置）であり得る。サーバ１０２０は、例えば、スレッドを収容して、本主題の発明を使用することにより変換を実行し得る。
【００５６】
クライアント１０１０とサーバ１０２０との間の１つの可能な通信は、２つまたはそれ以上のコンピュータプロセス間での伝送に適用されるデータパケットの形式であり得る。システム１０００は、クライアント１０１０とサーバ１０２０との間の通信を容易にするために使用し得る通信フレームワーク１０４０を含む。クライアント１０１０は、クライアント１０１０にローカルである情報を記憶するために使用し得る１つまたは複数のクライアントデータストア１０５０に、動作可能に接続される。同様に、サーバ１０２０は、サーバ１０２０にローカルである情報を記憶するために使用し得る１つまたは複数のサーバデータストア１０３０に、動作可能に接続される。
【００５７】
図１１を参照すると、本請求の主題の種々の態様を実装するための例示的環境１１００は、コンピュータ１１１２を含む。コンピュータ１１１２は、処理ユニット１１１４、システムメモリ１１１６、およびシステムバス１１１８を含む。システムバス１１１８は、システムメモリ１１１６を含むがこれに限らないシステムコンポーネントを、処理ユニット１１１４に連結する。処理ユニット１１１４は、任意の種々の利用可能なプロセッサであり得る。デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャをまた、処理ユニット１１１４として使用し得る。
【００５８】
システムバス１１１８は、メモリバスもしくはメモリコントローラ、周辺機器用バスもしくは外部バス、および／または、任意の様々な利用可能なバスアーキテクチャを使用するローカルバスを含むいくつかのタイプのバス構造のいずれかであり得る。利用可能なバスアーキテクチャは、ＩＳＡ（Industrial Standard Architecture）、ＭＣＡ（Micro-Channel Architecture）、ＥＩＳＡ（Extended ISA）、ＩＤＥ（Intelligent Drive Electronics）、ＶＬＢ（VESA Local Bus）、ＰＣＩ（Peripheral Component Interconnect）、Ｃａｒｄ  Ｂｕｓ、ＵＳＢ（Universal Serial Bus）、ＡＧＰ（Accelerated Graphics Port）、ＰＣＭＣＩＡバス（Personal Computer Memory Card International Association）、Ｆｉｒｅｗｉｒｅ（ＩＥＥＥ１３９４）、およびＳＣＳＩ（Small Computer Systems Interface）を含むがこれに限らない。
【００５９】
システムメモリ１１１６は、揮発性メモリ１１２０および不揮発性メモリ１１２２を含む。ＢＩＯＳ（basic input／output system）は、例えば起動中にコンピュータ１１１２内の構成要素間で情報を転送する基本ルーチンを含有するもので、不揮発性メモリ１１２２内に記憶される。限定ではなく例示として、不揮発性メモリ１１２２は、ＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭまたはフラッシュメモリを含み得る。揮発性メモリ１１２０は、外部キャッシュメモリとして動作するＲＡＭを含む。限定ではなく例示として、ＲＡＭは、ＳＲＡＭ、ＤＲＡＭ、ＳＤＲＡＭ、ＤＤＲ  ＳＤＲＡＭ、ＥＳＤＲＡＭ、ＳＬＤＲＡＭ、ＲＤＲＡＭ、ＤＲＤＲＡＭ、およびＲＤＲＡＭといった多くの形式で、利用可能である。
【００６０】
コンピュータ１１１２はまた、着脱可能／着脱不可能、揮発性／不揮発性コンピュータ記憶媒体を含む。図１１は、例えば、ディスク記憶装置１１２４を例示する。ディスク記憶装置１１２４は、磁気ディスクドライブ、フロッピー（登録商標）ディスクドライブ、テープドライブ、Ｊａｚドライブ、Ｚｉｐドライブ、ＬＳ−１００ドライブ、フラッシュメモリカード、またはメモリスティックといった装置を含むが、これに限らない。また、ディスク記憶装置１１２４は、記憶媒体を別個に、または他の記憶媒体との組合せで含み得る。記憶媒体には、ＣＤ−ＲＯＭ装置、ＣＤ−Ｒドライブ（CD recordable drive）、ＣＤ−ＲＷドライブ（CD rewritable drive）、または、ＤＶＤ−ＲＯＭドライブといった光ディスクドライブを含むがこれに限らない。ディスク記憶装置１１２４のシステムバス１１１８への接続を容易にするため、インターフェース１１２６といった着脱可能または着脱不可能なインターフェースを一般的には使用する。
【００６１】
当然のことながら、図１１には、適切な動作環境１１００において説明するユーザと基本コンピュータリソースとの間の中間物として動作するソフトウェアを記述する。そのようなソフトウェアには、オペレーティングシステム１１２８を含む。オペレーティングシステム１１２８は、ディスク記憶装置１１２４上に記憶し得るものであり、コンピュータシステム１１１２のリソースを制御し、割り当てるよう動作する。システムアプリケーション１１３０は、システムメモリ１１１６内またはディスク記憶装置１１２４上のいずれかに記憶されたプログラムモジュール１１３２およびプログラムデータ１１３４を介して、オペレーティングシステム１１２８によるリソースの管理を利用する。当然のことながら、本請求の主題を、種々のオペレーティングシステムまたはオペレーティングシステムの組合せを用いて実装し得る。
【００６２】
ユーザは、コマンドまたは情報を、入力装置１１３６を介してコンピュータ１１１２に入力する。入力装置１１３６は、マウス、トラックボール、スタイラス、タッチパッド、キーボード、マイクロフォン、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナ、テレビチューナカード、デジタルカメラ、デジタルビデオカメラ、ウェブカメラ等といったポインティングデバイスを含むが、これに限らない。これらのおよび他の入力装置は、インターフェースポート１１３８を介してシステムバス１１１８を通して、処理ユニット１１１４に接続する。インターフェースポート１１３８は、例えば、シリアルポート、パラレルポート、ゲームポート、およびＵＳＢを含む。出力装置１１４０は、入力装置１１３６と同じタイプのいくつかのポートを使用する。従って、例えば、ＵＳＢポートを使用して、コンピュータ１１１２に入力を提供し、コンピュータ１１１２から出力装置１１４０に情報を出力し得る。出力アダプタ１１４２は、他の出力装置１１４０の中でも、特別なアダプタを必要とするモニタ、スピーカ、およびプリンタといったいくつかの出力装置１１４０が存在することを例示するために与えてある。出力アダプタ１１４２は、限定ではなく例示として、出力装置１１４０とシステムバス１１１８との間の接続手段を提供するビデオカードおよびサウンドカードを含む。他の装置および／または装置のシステムが、リモートコンピュータ１１４４といった入力および出力両方の能力を提供することに留意すべきである。
【００６３】
コンピュータ１１１２は、リモートコンピュータ１１４４といった１つまたは複数のリモートコンピュータへの論理接続を使用するネットワーク化された環境において動作可能である。リモートコンピュータ１１４４は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ワークステーション、マイクロプロセッサベースの家電、ピア装置または他の共通ネットワークノード等であり得、一般的には、コンピュータ１１１２に関して説明した構成要素の多くまたは全てを含む。簡潔にするために、メモリ記憶装置１１４６のみをリモートコンピュータ１１４４と共に例示する。リモートコンピュータ１１４４は、コンピュータ１１１２に、ネットワークインターフェース１１４８を介して論理的に接続され、次いで、通信接続１１５０を介して物理的に接続される。ネットワークインターフェース１１４８は、ＬＡＮおよびＷＡＮといった、有線および／または無線の通信ネットワークを包含する。ＬＡＮ技術は、ＦＤＤＩ（Fiber Distributed Data Interface）、ＣＤＤＩ（Copper Distributed Data Interface）、イーサネット（登録商標）、トークンリング等を含む。ＷＡＮ技術は、ポイントツーポイント接続、ＩＳＤＮ（Integrated Services Digital Networks）およびその上の変形といった回路交換ネットワーク、パケット交換ネットワーク、ならびにＤＳＬ（Digital Subscriber Lines）を含むが、これに限らない。
【００６４】
通信接続１１５０は、ネットワークインターフェース１１４８をバス１１１８に接続するために使用されるハードウェア／ソフトウェアのことを言う。明確に例示するために、通信接続１１５０をコンピュータ１１１２内部に示しているが、コンピュータ１１１２の外部にあってもよい。ネットワークインターフェース１１４８への接続に必要なハードウェア／ソフトウェアは、例示の目的のみだが、通常の電話回線用のモデム、ケーブルモデムおよびＤＳＬモデム、ＩＳＤＮアダプタならびにイーサネット（登録商標）カードを含むモデムといった、内部および外部の技術を含む。
【００６５】
上述したものには、本主題の発明の例が含まれる。もちろん、本請求の主題の説明のために、コンポーネントまたは方法論の全ての考え得る組み合わせを説明することは可能ではないが、本主題の発明の多くのさらなる組合せおよび置き換えが可能であることを、当業者は認識し得る。従って、本請求の主題が、添付の請求項の精神および範囲にある、全てのそのような代替、修正、および変形を包含するよう意図している。
【００６６】
特に、および上述のコンポーネント、装置、回路、システム等により実行される種々の機能に関して、そのようなコンポーネントを説明するのに使用する（「手段」への参照を含む）用語は、本明細書に例示される本請求の主題の例示的態様における機能を実行する、開示される構造とは構造的には等価でない場合でも、特に指示がなくても、説明するコンポーネントの特定の機能を実行する任意のコンポーネントに対応するよう意図している（例えば、機能的等価物）。この点については、本発明が、システム、および、本請求の主題の種々の方法の動作および／またはイベントを実行するためのコンピュータ実行可能命令を有するコンピュータ可読媒体を含むこともまた、認識されるであろう。
【００６７】
加えて、本主題の発明の特定の特徴を、いくつかの実装のうちのただ１つに関して開示したが、そのような特徴は、任意の所定のまたは特定の応用に対して望ましく有利であるような、他の実装の１つまたは複数の他の特徴と組み合わせ得る。さらに、用語「含む」「含んでいる」およびその変形が、詳細な説明または請求項のいずれかにおいて使用される限りにおいて、これらの用語は、用語「備える」と同様の意味で包括的であることを意図している。
【図１】
0005384488.tif 000003
【図２】
0005384488.tif 000004
【図３】
0005384488.tif 000005
【図４】
0005384488.tif 000006
【図５】
0005384488.tif 000007
【図６】
0005384488.tif 000008
【図７】
0005384488.tif 000009
【図８】
0005384488.tif 000010
【図９】
0005384488.tif 000011
【図１０】
0005384488.tif 000012
【図１１】
0005384488.tif 000013