(57)【要約】【課題】  ホストモジュールからクライアントモジュールに制御情報を送信するためのストラテジーを提供すること。【解決手段】  ホストモジュール１０２は、制御情報をメディアコンテンツ情報パケットのストリームと共にインバンドで送信する。制御情報はクライアントモジュール１０４の動作を管理するために使用することができる。ある事例では、制御情報がストリームにおける不連続をクライアントモジュール１０４に警告し、その結果、ユーザが、ホスト１０２またはクライアントモジュール１０４などを介するチャネルの変更、およびシーク命令の発行などを行うことができる。インバンド方式での制御情報の送信は、制御情報とそれに関連するコンテンツ情報の間の複雑なリンクの必要性を軽減できる。【選択図】  図１
2006081159.tif 000002
【特許請求の範囲】
【請求項１】
コンテンツ情報をホストモジュールからクライアントモジュールにストリーミングするための方法であって、
ホストモジュールにおいて、クライアントモジュールに送信されるストリームに含めるためのコンテンツ情報のユニットを提供するステップと、
前記ホストモジュールにおいて、前記ストリームに含めるための少なくとも１つの制御情報のユニットを提供するステップと、
前記ホストモジュールにおいて、前記少なくとも１つの制御情報のユニットを前記コンテンツ情報のユニット間に挿入するステップであって、該コンテンツ情報のユニットに対する前記少なくとも１つの制御情報のユニットの位置が、前記クライアントモジュールが該制御情報を受け取ったときに動作する振舞いに関する命令を伝達するステップと、
前記ホストモジュールによって、前記コンテンツ情報のユニットおよび前記少なくとも１つの制御情報のユニットを含む前記ストリームを前記クライアントモジュールに送信するステップとを含み、
前記ホストモジュールは、前記ストリームの再生を制御するユーザによって取られる処置に基づいて、前記ホストモジュールが前記ストリームに挿入する前記制御情報を動的に変更することを特徴とする方法。
【請求項２】
前記少なくとも１つの制御情報のユニットがコンテンツ情報のユニットグループの末端に配置される、請求項１の方法。
【請求項３】
前記少なくとも１つの制御情報のユニットが、前記コンテンツ情報のユニットグループに関連するストリーム終端（ＥＯＳ）情報を伝達する、請求項２の方法。
【請求項４】
前記少なくとも１つの制御情報のユニットがコンテンツ情報のユニットグループの先頭に配置される、請求項１の方法。
【請求項５】
前記少なくとも１つの制御情報のユニットが、前記コンテンツ情報のユニットグループに適用されるレンダリング機能の態様を伝達する、請求項４の方法。
【請求項６】
前記少なくとも１つの制御情報のユニットが、前記コンテンツ情報のユニットグループに適用するための復号鍵を変更するための命令を伝達する、請求項４の方法。
【請求項７】
前記少なくとも１つの制御情報のユニットがコンテンツ情報の２つのユニットグループの間に配置される、請求項１の方法。
【請求項８】
前記少なくとも１つの制御情報のユニットが、前記コンテンツ情報の２つのユニットグループの間の不連続についての情報を伝達する、請求項７の方法。
【請求項９】
前記不連続が、前記ユーザによって指示される、あるストリームから他のストリームへの移行を示す、請求項８の方法。
【請求項１０】
前記移行が、前記ユーザによって指示される、各チャネル上のあるプログラムから他のプログラムへの移動を表す、請求項９の方法。
【請求項１１】
前記移行が、前記ユーザによって指示される、あるストリームのある位置から同じストリームの他の位置への移動を表す、請求項９の方法。
【請求項１２】
前記クライアントモジュールにおいて、前記少なくとも１つの制御情報のユニットおよび前記コンテンツ情報のユニットを受け取るステップと、
前記ストリームにおける前記少なくとも１つの制御情報のユニットの存在を検出するステップと、
前記少なくとも１つの制御情報のユニットに含まれる制御情報を前記クライアントモジュールの動作を管理するために適用するステップと
をさらに含むことを特徴とする請求項１の方法。
【請求項１３】
前記適用するステップは、前記少なくとも１つの制御情報のユニットに含まれるストリームの終了（end of stream）命令の受信に応答して、前記クライアントモジュールを一時停止することを含む、請求項１２の方法。
【請求項１４】
前記適用するステップは、前記少なくとも１つの制御情報のユニットに含まれる暗号化に関連する命令の受信に応答して、受け取られたコンテンツ情報のその後の処理に復号鍵を適用することを含む、請求項１２の方法。
【請求項１５】
前記適用するステップは、前記少なくとも１つの制御情報のユニットに含まれるストリーム境界（stream boundary）命令の受信に応答して、クライアントモジュールバッファの再充填を開始することを含む、請求項１２の方法。
【請求項１６】
前記コンテンツ情報のユニットおよび前記少なくとも１つの制御情報のユニットが、均一なフォーマットを有するパケットを含む、請求項１の方法。
【請求項１７】
前記パケットは、該パケットがコンテンツ情報または制御情報を含むかどうかを示す識別情報を含む、請求項１６の方法。
【請求項１８】
前記コンテンツ情報がオーディオ／ビジュアル情報を含む、請求項１の方法。
【請求項１９】
請求項１の方法を実装するためのマシン可読命令を格納して有することを特徴とするコンピュータ可読媒体。
【請求項２０】
ストリーミングコンテンツ情報をクライアントモジュールが受け取る方法であって、
ホストモジュールから、コンテンツ情報のユニット間に配置された少なくとも１つの制御情報のユニットを含むストリームを受け取るステップと、
該ストリームにおける前記少なくとも１つの制御情報のユニットの存在を検出するステップと、
前記少なくとも１つの制御情報のユニットに含まれる制御情報を、クライアントモジュールが動作する振舞いを管理するために適用するステップとを含み、
前記ホストモジュールは、前記ストリームの再生を制御するユーザによって取られる処置に基づいて、該ホストモジュールが該ストリームに挿入する前記制御情報を動的に変更することを特徴とする方法。
【請求項２１】
請求項２０の方法を実装するためのマシン可読命令を格納して有することを特徴とするコンピュータ可読媒体。
【請求項２２】
コンテンツ情報をクライアントモジュールにストリーミングするためのホストモジュールであって、
クライアントモジュールに送信されるストリームに含めるためのコンテンツ情報のユニットを提供し、
該ストリームに含めるための少なくとも１つの制御情報のユニットを提供し、
前記コンテンツ情報のユニット間に前記少なくとも１つの制御情報のユニットを挿入し、該コンテンツ情報のユニットに対する該少なくとも１つの制御情報のユニットの位置が、該制御情報を受け取ったとき前記クライアントモジュールが動作する振舞いに関する命令を伝達し、さらに、
前記コンテンツ情報のユニットおよび前記少なくとも１つの制御情報のユニットを含む前記ストリームを、前記クライアントモジュールに送信するように構成された転送処理モジュールを含み、
前記ストリームの再生を制御するユーザによって取られる処置に基づいて、前記ストリームに挿入する前記制御情報を動的に変更することを特徴とするホストモジュール。
【請求項２３】
ホストモジュールからストリーミングコンテンツ情報を受け取るためのクライアントモジュールであって、
前記ホストモジュールから、コンテンツ情報のユニット間に配置された少なくとも１つの制御情報のユニットを含むストリームを受け取り、
該ストリームにおける前記少なくとも１つの制御情報のユニットの存在を検出し、さらに、
前記少なくとも１つの制御情報のユニットに含まれる制御情報を、本モジュールが動作する振舞いを管理するために適用するように構成された受信処理モジュールを含み、
前記ホストモジュールは、前記ストリームの再生を制御するユーザによって取られた処置に基づいて、該ホストモジュールが該ストリームに挿入する前記制御情報を動的に変更することを特徴とするクライアントモジュール。
【請求項２４】
ホストモジュールとクライアントモジュールの間でコンテンツ情報を送信するためのシステムであって、
クライアントモジュールに送信されるストリームに含めるためのコンテンツ情報のユニットを提供し、
該ストリームに含めるための少なくとも１つの制御情報のユニットを提供し、
前記コンテンツ情報のユニット間に前記少なくとも１つの制御情報のユニットを挿入し、前記コンテンツ情報のユニットに対する前記少なくとも１つの制御情報のユニットの位置が、該制御情報を受け取ったとき前記クライアントモジュールが動作する振舞いに関する命令を伝達し、さらに、
前記コンテンツ情報のユニットおよび前記少なくとも１つの制御情報のユニットを含む前記ストリームを、前記クライアントモジュールに送信するように構成されたホストモジュールを含み、
該ホストモジュールから、前記コンテンツ情報のユニット間に配置された少なくとも１つの制御情報のユニットを含むストリームを受け取り、
該ストリームにおける前記少なくとも１つの制御情報のユニットの存在を検出し、さらに、
前記少なくとも１つの制御情報のユニットに含まれる制御情報を、前記クライアントモジュールが動作する振舞いを管理するために適用するように構成された受信モジュールを含み、
前記ホストモジュールは、前記ストリームの再生を制御するユーザによって取られた処置に基づいて、該ホストモジュールが該ストリームに挿入する前記制御情報を動的に変更することを特徴とするシステム。
【請求項２５】
前記クライアントモジュールが前記ホストモジュールに結合メカニズムを介して結合された拡張ユニットとして実装され、該拡張ユニットが前記ホストモジュールによって実装されたメディア配信サービスのインスタンスを実行するように構成される、請求項２４のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明のサブジェクトは、制御情報を伝送するためのストラテジー（strategy）に関し、より詳細には、メディアプレゼンテーション環境において、制御情報をホストからクライアントに送信するためのストラテジーに関する。
【背景技術】
【０００２】
コンピュータは、オーディオおよびビデオ情報などのメディアコンテンツ情報を提示するためのメカニズムとしてますます普及しつつある。例えば、ユーザは、ネットワークを介してリモートソースに結合されたユーザの家庭のパーソナルコンピュータを使用して、コンテンツ情報をそのリモートソースから受け取ることができる。ユーザは、完全なファイルとして、または少しづつ流されるストリーミング形式によって、コンテンツ情報を受け取ることができる。あるいは、コンピュータが、チューナメカニズムを備える場合、ユーザは、（ケーブルまたは衛星など）従来の放送ソースにチューニングすることにより、そのソースからコンテンツ情報を受け取ることができる。ユーザは、このようなコンテンツ情報を、家庭内のテレビやステレオシステムのような１つまたは複数の適切な再生装置に転送することができる。Ｍｉｃｒｏｓｏｆｔ（登録商標）社のＭｅｄｉａ  Ｃｅｎｔｅｒテクノロジは、上述のやり方でメディアコンテンツ情報を受け取りまた提示するための典型的な一式のツールを提供している。ユーザは、他のツールを使用して、家庭の複数の再生装置をプレゼンテーションネットワークに結合することもできる。次いで、ユーザは、家庭内のあるデバイスから他のデバイスにメディア情報を転送することができる。ユニバーサルプラグアンドプレイ（ＵＰｎＰ）テクノロジは、好都合にこのようなホームネットワークをセットアップするための一式のツールを提供する。
【０００３】
このような技術の発展により、従来のメディア情報のプレゼンテーションについて興味深い進歩がもたらされたが、一方で、幾つかの新しい課題も提起された。例えば、コンピュータ間で、メディアコンテンツ情報を伝送するのに加えて、制御情報を伝送することが必要になることがある。例えば、ホストデバイスは、受信したメディアコンテンツ情報をどのように処理するかについて受信デバイスに命令する制御情報を転送することがある。これは、ネットワーク化された環境では、難問になり得る。例えば、ネットワーキングおよび処理の不整合により、受信デバイスが、それに関連する制御情報なしにメディアコンテンツ情報を受け取ることになる恐れがあり、その逆も同様である。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
したがって、上述のメディアプレゼンテーション環境などの任意の環境において制御情報を伝送するためのより効率的な技術が必要とされている。
【課題を解決するための手段】
【０００５】
例示的一実装形態に従い、コンテンツ情報をホストモジュールからクライアントモジュールにストリーミングするための方法を説明する。本方法は、（ａ）ホストモジュールにおいて、クライアントモジュールに送信されるストリーム内に含めるためのコンテンツ情報のユニットを形成するステップと、（ｂ）ホストモジュールにおいて、ストリーム内に含めるための少なくとも１つの制御情報のユニットを形成するステップと、（ｃ）ホストモジュールにおいて、該少なくとも１つの制御情報ユニットを複数のコンテンツ情報ユニットの間に挿入するステップであって、該少なくとも１つの制御情報ユニットの複数のコンテンツ情報ユニットに対する位置が制御情報を受け取ったときのクライアントモジュールの動作の仕方に関する命令を伝達するステップと、（ｄ）ホストモジュールにより、複数のコンテンツ情報ユニット、および該少なくとも１つの制御情報ユニットを含むストリームをクライアントモジュールに送信するステップとを含み、ホストモジュールは、ストリームの再生を制御するユーザによって行われる処置に基づき、ホストモジュールがストリームに挿入する制御情報を動的に変更する。
【０００６】
さらなる例示的実装形態は、添付の図面に関連して説明される。
【発明を実施するための最良の形態】
【０００７】
本開示の全体を通して、同様のコンポーネントおよび機能を参照するために、それぞれ同じ番号が使用される。１００番台の数字は、図１に最初に見られる機能を示し、２００番台の数字は、図２で最初に見られる機能を示し、３００番台の数字は、図３で最初に見られる機能を示す。
【０００８】
以下では、制御情報をホストモジュールからクライアントモジュールに送信するための例示的メカニズムおよび手順を説明する。これらのメカニズムおよび手順では、制御情報を、インバンド（in-band）で、すなわち、メディアコンテンツ情報と同じ通信帯域において送信する。より詳細には、これらのメカニズムおよび手順は、コンテンツ情報のストリーム内に制御情報を配置して、制御情報とコンテンツ情報間の連結を確立する。
【０００９】
制御情報は、コンテンツ情報についての任意の情報を伝達することができる。例えば、ストリームの終端に制御情報が挿入された場合、制御情報は、ストリームの終端を識別するストリーム情報の終了を伝達することができる。制御情報がストリームの開始に挿入された場合、制御情報は、時間内にその制御情報に続くストリームについての情報を伝達することができる。例えば、このシナリオでは、制御情報は、後続のストリームが、所定の復号鍵を使用して、あるいはクライアントモジュールにおける所定のレンダリング（rendering）リソースを使用して処理されるべきであることを示すことができる。制御情報がコンテンツ情報の２つのストリームの間に配置された場合、制御情報は、あるストリームの他のストリームに対する関係についての情報を伝達することができる。例えば、このシナリオでは、制御情報が２つのストリームの間に不連続があることを示すことができる。この制御情報転送パラダイムのさらなる適用については以下で説明する。
【００１０】
用語について述べると、用語「メディアコンテンツ情報（media content information）」（または、簡略にして「コンテンツ情報（content information）」）は、任意の形式でユーザが消費することができる任意の種類のリソース、例えば、オーディオリソース（例えば、音楽など）、静止画像リソース（例えば、デジタル写真など）、動画リソース（例えば、テレビ番組、映画など）、コンピュータプログラム（例えば、ゲームなど）、およびマークアップ言語リソース（例えば、広域パケットネットワークを介して受信されるＨＴＭＬリソース）などに関係することができる。このような情報は、アナログ形式、デジタル形式、または両者の組合せで表現することができる。このような情報は、（コンピュータゲームで使用されるような）インタラクティブコンテンツを含むことも（または除外することも）できる。
【００１１】
制御情報という用語は、コンテンツ情報に対して何らかの影響（bearing）を有する任意の情報を指す。例えば、制御情報は、コンテンツ情報のある種の特性を記述する、あるいは、制御情報に基づき実行されるある種の処理の振舞いを記述することができる。用語「コントロールイベント（control event）」は、制御情報の生成を引き起こす任意の種類のイベントを指す。ユーザが（リモートコントロールまたは他の入力メカニズムを使用して）明示的な入力処置を行うことにより、このようなイベントを引き起こすことができる。あるいは、システムは、特定の条件が満たされると、コントロールイベントを自動的に生成することができる。用語「制御処理タスク（control processing task）」は、コントロールイベントの発生に応じて実行される動作を指す。
【００１２】
本開示には、下記のセクションが含まれる。セクションＡでは、以上に要約した機能を実装するための例示的システムを説明し、セクションＢでは、セクションＡのシステムの動作を示す例示的フローチャートを説明し、セクションＣでは、セクションＡのシステムを実装するための例示的コンピュータ環境を説明する。
【００１３】
Ａ．例示的システム
Ａ．１．システムの概要
一般に、本明細書に記載のどのシステムも、ソフトウェア、ファームウェア（例えば、固定論理回路）、手動処理、または、これらの組合せを用いて実装することができる。本明細書で使用される用語の「モジュール（module）」、「機能（functionality）」、および「論理（logic）」は、一般に、ソフトウェア、ファームウェア、または、ソフトウェアとファームウェアの組合せを表している。ソフトウェアで実装する場合、用語「モジュール」、「機能」、および「論理」は、１つまたは複数の処理装置（例えば、１つまたは複数のＣＰＵ）上で実行されるとき、指定されたタスクを実行するプログラムコードを表す。このプログラムコードは、１つまたは複数の固定および／またはリムーバルのコンピュータ可読メモリデバイスに格納することができる。以下で述べる技術の機能は、プラットフォームに依存せず、つまり、任意の市販のコンピューティングプログラムまたはネットワーキングストラテジーで実装することができる。
【００１４】
図１は、前述の動作を実行するための例示的システム１００を示す。システム１００は、通信メカニズム１０６を介してクライアントモジュール１０４に結合されたホストモジュール１０２を含む。とりわけ、ホストモジュール１０２は、メディアコンテンツ情報および制御情報をクライアントモジュール１０４で提示するために、クライアントモジュール１０４に提供する役割をする。ホストモジュール１０２は、任意のソース１０８からメディアコンテンツ情報を得ることができる。クライアントモジュール１０４は、任意のプレゼンテーションデバイス１１０において、制御情報に従って、コンテンツ情報を提示することができる。ユーザ１１２は、（例えば、クライアントモジュール１０４、またはプレゼンテーションモジュール１０６と関連する、リモートコントロール装置、またはキーパッドのような）入力モジュール１１４など任意の種類の入力メカニズムを介して、クライアントモジュール１０４および／またはホストモジュール１０２と対話することができる。図１は、さらに、１つまたは複数の他のクライアントモジュール１１６が、ホストモジュール１０２からコンテンツ情報を受け取り、こうした情報を、１つまたは複数の他のプレゼンテーションデバイス１１８で提示することができることを示している。
【００１５】
図１に示されるインフラストラクチャは、多数の異なる環境に適用することができる。ある事例では、ホストモジュール１０２は、ユーザ１１２の家庭（または他のローカル環境）内の汎用コンピュータデバイスを表す。ホストモジュール１０２は、（例えば、コンピュータデバイスのハードドライブ、ローカルビデオジュークボックス、ローカルビデオカメラ、およびローカルマイクなどによって実装される）ローカルリソース、またはリモートソースなどの任意のソース１０８からコンテンツ情報を受け取ることができる。あるリモートソースは、従来の有線ソース（例えば、ケーブル）や無線ソース（例えば、地表のアンテナ、または衛星）のような従来のテレビおよびラジオ放送のソースを表すことができる。他のリモートソースは、ＴＣＰ／ＩＰネットワーク（例えば、インターネット）などのネットワークを介してホストモジュール１０４に結合されたサーバまたは同様のデバイスを表すことができる。さらに他の種類のソースは、コンテンツ情報をホストモジュール１０２に供給することができる。
【００１６】
任意の種類のビジネス用の構成（business arrangement）により、ホストモジュール１０２へのコンテンツ情報の伝播を管理することができる。ソース１０８は、固定されたタイムスケジュール、またはオンデマンド形式で、リソース情報を配信することができる。ソース１０８は、コンテンツ情報を受信するための料金を課することができ、あるいは、無料でコンテンツ情報を配信することもできる。
【００１７】
同様に、コンテンツ情報自体が多数の形態を取ることができる。コンテンツ情報は、ライブコンテンツ（live content）情報を、または、予め記録されたコンテンツ情報を意味することができる。コンテンツ情報はまた、オーディオコンポーネントおよび／またはビジュアル（ビデオ）コンポーネントおよび／または対話コンポーネントを有することができる。コンテンツ情報は、（１つまたは複数の写真の場合のように）静的情報または（ビデオの場合のように）「動く（moving）」情報を表すことができる。コンテンツ情報は、（特に）ビデオ情報用のＭＰＥＧ−１、ＭＰＥＧ−２、またはＷＭＶ、並びに（特に）音楽情報用の、ＭＰ３、ＷＭＡ、またはＷＡＶなどの、任意の形式により表現することができる。コンテンツ情報は、デジタル形式、アナログ形式、または両者の組合せで表現することができる。さらに他の種類のソースフォーマットで受け取ることもできる。
【００１８】
例示的一実装形態では、クライアントモジュール１０４は、ユーザ１１２の家庭に配置された他の種類のコンピュータを表すことができる。例えば、クライアントモジュール１０４は、他の汎用コンピュータデバイスを表すことができる。あるいは、クライアントモジュール１０４は、ゲームコンソール、または、ホストモジュール１０２からコンテンツ情報を受け取ることを主な目的として設計された拡張コンソール（これにより、ホストモジュール１０２がコンテンツ情報を送ることができる家庭内の出力装置の数を「拡張する（extending）」）など専用のコンピュータデバイスを表すことができる。あるいは、クライアントモジュール１０４は、プレゼンテーションデバイス１１０自体に組み込まれた論理機能を表すことができる。
【００１９】
ある例示的ホームアプリケーションでは、ユーザ１１２は、幾つかのクライアントモジュール１０４を、１つの家庭のそれぞれ異なる部屋に配置することができ、各クライアントモジュールは、それらの部屋に位置する異なるメディアプレゼンテーションデバイスに結合される。これらの各クライアントモジュールは、ホストモジュール１０２からコンテンツ情報を受け取るように構成することができる。これらのクライアントモジュール１０４は、ホストモジュール１０２に対する「拡張（extensions）」として実装され、ホストモジュール１０２によって提供される機能の幾つかのインスタンスを実行するように構成することができる。システム１００は、システム１００の個々のコンポーネントを並行して使用することが可能になるようにさらに構成することができる。例えば、第１のユーザが、ホストモジュール１０２を使用して第１のタスクを実行する間に、第２のユーザは、第１のユーザと必ずしも干渉することなく、クライアントモジュール１０４を使用して第２のタスクを実行することができる。
【００２０】
プレゼンテーションデバイス１１０は、ユーザがそれによりコンテンツ情報を消費することが可能な任意のデバイスを表すことができる。可能なタイプのプレゼンテーションデバイス１１０には、テレビ、ラジオ、ステレオシステム、およびコンピュータモニタなどが含まれる。
【００２１】
通信メカニズム１０６は、ホストモジュール１０２からクライアントモジュール１０４に情報を送信するための任意のコンジット（conduit）を表すことができる。ローカル環境では、通信メカニズム１０６は、Ｅｔｈｅｒｎｅｔ（登録商標）ネットワークなどのＬＡＮ（ローカルエリアネットワーク）として実装することができる。ＴＣＰ／ＩＰプロトコルなどの任意のプロトコルまたはそれらの組合せは、ホストモジュール１０２からクライアントモジュール１０４に情報を送るために使用することができる。通信メカニズム１０６は、様々な有線通信路（銅線、電力線、光ファイバなど）、および様々な無線通信路などの物理的コンポーネントの任意の組合せを用いて物理的に実装することができる。図示していないが、通信メカニズム１０６は、様々なルータ、ネームサーバ、およびゲートウェイなどを組み込むこともできる。
【００２２】
上述の環境は例示であって、限定ではない。他の適用において、ホストモジュール１０２は、クライアントモジュール１０４に対してリモートのサーバタイプコンピュータまたはピアコンピュータを表すことができる。例えば、ホストモジュール１０２自体は、コンテンツ情報をインターネットまたは他のある種のネットワークを介してクライアント１０４に供給する、家庭の外部のサーバコンピュータを表すことができる。さらに他の適用も可能であり、ホストモジュール１０２は、どこに配置されどのように実装されても、コンテンツ情報の任意のソースとして解釈され、クライアントモジュール１０４は、どこに配置されどのように実装されても、コンテンツ情報の任意の受信側として解釈すべきである。以下で説明する図９では、適切に構成された汎用コンピュータデバイス（例えば、パーソナルコンピュータなど）、または適切に構成された専用コンピュータデバイス（例えば、ゲームコンソール、拡張デバイスなど）を用いた、ホストモジュール１０２またはクライアントモジュール１０４の一実装形態についてさらに詳細に説明する。
【００２３】
上記に概要を述べたので、次は、ホストモジュール１０２およびクライアントモジュール１０４の個別の例示的コンポーネントに注目する。
【００２４】
まず、ホストモジュール１０２から始めると、受信モジュール１２０が、情報ソース１０８から情報を受け取る。受信モジュール１２０は、情報ソース１０８に関連する物理周波数に同調するチューナ、あるいは、複数のソースに同時に同調することができる複数のチューナを表すことができる。代替または追加として、受信モジュール１２０は、デジタルネットワークソースからコンテンツ情報を受け取る（任意の種類のモデムなどの）ネットワークインターフェースモジュールを表すことができる。
【００２５】
転送処理モジュール１２２は、コンテンツ情報を通信メカニズム１０６を介してクライアントモジュール１０４に送信するためのフォーマットにするために、コンテンツ情報に対して様々な処理タスクを実行し、次いで、その情報を送信する。図２は、転送処理モジュール１２２の例示的構成を表す。この議論に関連して述べれば、転送処理モジュール１２２は、送信のためにコンテンツ情報をフィルタリングおよび／または解析して準備し、情報のビットレートを調整し、情報をパケットとして組み立て、通信メカニズム１０６に出力するためにパケットを送信ストリームに多重化することなどができる。
【００２６】
図１は、ストリーム１２４としての情報コンテンツの送信を表す。ストリームは、少しづつコンテンツ情報を送信することを指し、ストリームにより、クライアントモジュール１０４は、（完全なコンテンツ情報を含むファイルの送信とは対照的に）コンテンツ情報の全体を受け取ることなく、コンテンツ情報の部分を受け取りそれをレンダリングすることができる。ストリーム１２４は、複数のユニット１２６（例えばパケット）を含むことができ、これらのユニットは、主に、コンテンツ情報を、すなわちＡ／Ｖリソースの場合は実際のオーディオおよびビジュアルデータを伝達する。ストリーム１２４はまた、コンテンツ情報１２６のストリーム内に分散された１つまたは複数のコントロールユニット１２８（例えばパケット）を含むことができる。ストリーム１２４内のコントロールパケット１２６の位置は、それに含まれる制御情報がコンテンツ情報にどのように適用されるべきかについての情報を伝達する。（「位置（position）」は、実際の送信されたストリームにおける物理的順序ではなく、ストリーム１２４内のパケットに割り当てられたシーケンス番号を反映することができる。というのは、パケットネットワークにおいては、幾つかのパケットは、順序が「ばらばらに（out of order）」受け取られ、クライアントモジュール１０４がそれらのパケットを適切な順序に再構築することが必要となることが見込まれるからである。）例えば、例示的コントロールパケット１２８は、時間内にそれに先行したコンテンツ情報ストリームが終了となったことを伝達することができる。あるいは、例示的コントロールパケット１２８は、時間内にそれに後続するコンテンツ情報１２６に、所定の処理の振舞いが適用されるべきであることを伝達することができる。あるいは、例示的コントロールパケット１２８は、そのパケットに先行するコンテンツ情報と後続するコンテンツ情報１２６の間に不連続があることを伝達することができる。コントロールパケット１２８のさらに他の適用および解釈が想定される。（後述の）セクションＡ．２では、制御情報の生成および処理に関してさらに詳細に説明する。
【００２７】
プレイヤコントロールモジュール１３０は、ホストモジュール１０２におけるコンポーネントを制御する。例えば、プレイヤコントロールモジュール１３０は、クライアントモジュール１０４との通信セッションをセットアップし、次いで、クライアントモジュール１０４の状態を、複数の可能なプレイヤインスタンスにわたって制御することができる。このモジュール１３０は、（後述する）特定の基準を満たす制御処理タスクを合体する際にある役割を果たすことができる。
【００２８】
プレイヤコントロールモジュール１３０は、別個の通信経路１３２を介してクライアントモジュール１０４に制御命令を転送することもできる。したがって、通信経路１３２上に送信される制御情報は、ストリーム１２４内のインバンドで送られた制御情報を補足する（あるいは、別の解釈では、インバンドで送られた制御情報が、通信経路１３２上を転送された制御情報を補足するということもできる）。ある例示的設計パラダイムによれば、コンテンツ情報に対する制御情報のタイミング（または位置合わせ）を伝達することが重要な状況において、制御情報をインバンドで送信することができる。制御情報をインバンド伝送することが適切な例示的状況については、（後で論じる）図４〜図６を参照して説明する。通信経路１３２は、インバンド制御情報ほどには時間／位置を精密に伝達する必要がないコントロールイベント情報を通信するために使用することができる。一般に、異なるアプリケーションでは、それらのアプリケーションの固有の要件に応じて、異なる通信チャネルを使用して異なるコントロールイベントを伝達する。通信経路１３２は、通信メカニズム１０６で使用されるものとは異なる通信メカニズムおよび／またはプロトコルを利用することも、同じメカニズムおよびプロトコルを使用することもできる。
【００２９】
さらに追加の制御経路を含むことができる。例えば、ホストモジュール１０２は、他の制御経路（図示せず）を使用して、クライアントモジュール１０４におけるグラフィカル情報およびメタデータに関連する情報の表示を制御することができる。例えば、このコントロールチャネルは、プレゼンテーションデバイス１１０上での様々なメニュー、プログラムバー、およびチャネル情報などの表示を調整するために使用することができる。このタスクを遂行するために使用できる例示的かつ非限定的プロトコルの１つは、リモートデスクトッププロトコル（Remote Desktop Protocol）（ＲＤＰ）である。このプロトコルは、システム１００が、基本的に、ホストモジュール１０２に関連するグラフィカルな機能を、クライアントモジュール１０４を介してプレゼンテーションデバイス１１０上に「投影する（project）」ことを可能にする。但し、このストラテジーは、限定ではなく例示であり、他の技術を使用して、グラフィカル情報をプレゼンテーションデバイス１１０に送ることもできる。一般に、メタデータ関連情報およびグラフィカル情報は、ホストモジュール１０２および／またはクライアントモジュール１０４および／またはプレゼンテーションデバイス１１０および／または他のある種のモジュールから発信することができ、さらに、任意のモジュールまたはその組合せを使用して、これらのメタデータ関連情報およびグラフィカル情報の表示を調整することができる。
【００３０】
最後に、ホストモジュール１０２は、（ここでの議論の目的とは関連しない）他の明記されていないタスクを実行するために、幾つかの他のモジュールを含むことができる。
【００３１】
次に、クライアントモジュール１０４のコンポーネントについて扱う。クライアントモジュール１０４は、ストリーム１２４を受け取りそのストリームの処理を実行する受信処理モジュール１３４を含む。図２は、コンポーネント１３４に関してさらに詳細を示している。ここでの議論に関連して述べれば、コンポーネント１３４は、ストリーム１２４内の情報を逆多重化し、それに含まれる情報を抽出することができる。パケットは、パケットの構成、例えばパケットがオーディオ情報、ビデオ情報、または制御情報を含んでいるかどうかを識別するＩＤ情報を含むことができる。パケットが制御情報を含む場合、受信処理モジュール１３４は、制御情報に基づいて１つまたは複数の制御動作を実行する。さらに、受信処理モジュール１３４は、コンテンツ情報を提示するためにコンテンツ情報を適切なレンダラ（renderer）に転送する。さらに、受信処理モジュール１３４、並びに、（後述の）クライアント制御処理モジュール１３６は、様々な動作を実行するためにレンダラを制御することができる。受信処理モジュール１３４は、インバンド制御情報（例えば、１２８）を使用して、レンダラを制御することができる。
【００３２】
クライアント制御処理モジュール１３６はまた、クライアントモジュール１０４内のコンポーネントも制御する。クライアント制御処理モジュール１３６はまた、通信経路１３２を介して制御情報を送受信するためにプレイヤコントロールモジュール１３０と対話する。例えば、クライアント制御処理モジュール１３６はプレイヤコントロールモジュール１０２に様々な非同期イベントを送信するために使用されるインターフェースを提供することができ、このような非同期イベントには、例えば、（クライアントモジュール１０４がストリーム１２４の終端に達したことを示す）ストリームの終了（end of stream）イベント、（ユーザ１１２がコンテンツ情報のプレゼンテーションを一時停止したことを示す）一時停止（pause）イベント、（ユーザ１１２がコンテンツ情報のプレゼンテーションを停止したことを示す）停止（stop）イベント、および様々なエラーイベントなどがある。
【００３３】
プレゼンテーション処理モジュール１３８は、コンテンツ情報をレンダリングするための様々な機能を含むことができる。例えば、オーディオドライバ、ビデオドライバなどを含むことができる。プレゼンテーション処理モジュール１３８は、プレゼンテーションデバイス１１０とは別個のモジュールとして実装することも、プレゼンテーションデバイス１１０自体に組み込むこともできる。
【００３４】
最後に、クライアントモジュール１０４は、（ここでの議論の目的と関連しない）他の明記されていないタスクを実行するために、幾つかの他のモジュール１４０を含むことができる。
【００３５】
図２は、転送処理モジュール１２２、受信処理モジュール１３４、およびプレゼンテーションモジュール１３８についてさらに詳細を示している。
【００３６】
まず、転送処理モジュール１２２は、情報処理モジュール２０２を含むことができる。情報処理モジュール２０２は、情報ソース１０８から受け取ったコンテンツ情報に対して様々な処理動作を実行するように柔軟に構成することができる一式の処理ツールを含むことができる。つまり、このようなツールの様々なコレクションおよび組合せは、受け取ったコンテンツ情報のタイプ、および望ましい出力フォーマットの種類などに基づいて選択することができる。このようなツールの例には、以下のものを含むことができる。
【００３７】
・  パーソナルビデオレコーダ（ＰＶＲ）タイプの機能、例えば、コンテンツ情報の記録、コンテンツ情報の一時停止、コンテンツ情報内の様々な位置へのジャンプなどの能力を提供するバッファマネージャ。
【００３８】
・  コンテンツ情報を所望のフォーマットに符号化するための様々なエンコーダ、または、所与のフォーマットで表現されたコンテンツ情報を復号するためのデコーダ。
【００３９】
・  コンテンツ情報を修正して、クライアントモジュール１０４におけるコンテンツ情報のプレゼンテーションの品質を改良するための様々なコンテンツフィルタおよびアナライザ。様々なアプリケーションにおいて、その特定のアプリケーションの特性および要求に応じて、このようなフィルタおよびアナライザから様々なコレクションを採用することができる（あるいは、このようなフィルタおよびアナライザを完全に省略することもできる）。
【００４０】
・  ストリーム１２４のビットレートを制御する様々なレートフィルタ。例えば、このようなフィルタの１つは、輻輳または干渉により利用可能なネットワークのバンド幅が減少したときに、ビットレートを低下させることができる。このフィルタは、ストリームの再符号化、またはフレームの破棄などによってビットレートを低下させる。
【００４１】
・  コントロールメカニズム１０６を介して送信するコンテンツの暗号化、並びに他の権利管理機能の実行のための、様々なデジタル著作権管理（ＤＲＭ）フィルタ。
【００４２】
パケット形成モジュール２０４は、情報処理モジュール２０２から出力を受け取り、この出力を、通信メカニズム１０６を介して送信するのに適切な形式にする。パケット形成モジュール２０４は、コンテンツ情報を処理するために任意のプロトコルを使用することができる。図３は、限定ではなく例示として、幾つかのパケットの作成を示す。ストリーム３０２は、一連のキーフレームおよびデルタフレームから開始することにより形成することができる。キーフレームは、他のフレームを参照することなくビデオを再現するために使用することができるビデオフレームの独立した表現を示す。デルタフレームは、一連のフレームにおける他の情報に基づいてビデオフレームを予測して再現するために使用することができる。ビデオ、オーディオ、および他の情報を含む上述のデータから、連続したストリームが形成される。次いで、連続したストリームをパケットに分割することにより、パケット化されたストリームが形成される。各パケットは、ヘッダおよびペイロードを含むことができる。最後に、パケットを、さらに、多重化して幾つかのグループとすることができ、送信ストリームとして、通信メカニズム１０６を介して送信することができる。上記の概念を実装するために、多数の規格を使用することができ、このような規格には、ＭＰＥＧ−２、ＲＴＰ（リアルタイムトランスポートプロトコル）、および様々な独自仕様の規格などが含まれるが、これらだけに限定されず、また、本明細書に記載の原理は、どの特定の規格にも束縛されない。
【００４３】
図２を参照すると、パケット情報モジュール２０４は、パケットを多重化してグループとして組み立てることによって上述のタスクを実行する。制御情報生成モジュール２０６は、コントロールパケット１２８をコンテンツパケット１２６と共にストリーム１２４に挿入する。パケット情報モジュール２０４は、キュー２０８を使用して、ストリーム１２４を作成し送信する。つまり、キュー２０８が、パケットを受け取った順序で格納し、ワーカスレッド（worker thread）（図示せず）が、キュー２０８からパケットを抽出し、それらのパケットを他のパケットと組み合わせる。
【００４４】
図３にさらに進むと、一連のパケット（３０４、３０６、３０８、．．．、３１０）が例示されている。各パケット（３０４、３０６、３０８、．．．、３１０）は、それぞれのヘッダ（３１２、３１４、３１６、．．．、３１８）およびそれに伴うペイロード（３２０、３２２、３２４、．．．、３２６）を含む。これらのペイロードは、オーディオ情報またはビデオ情報を含むことができる。さらに、本発明のシステム１００では、ペイロードは、制御情報も含むことができる。例えば、ペイロード３２０、３２２、および３２４は、オーディオまたはビデオ情報（３２８、３３０、３３２）を含む一方で、ペイロード３２６は、制御情報３３４を含む。ヘッダ（３１２、３１４、３１６、．．．、３１８）は、それぞれのペイロード（３２０、３２２、３２４、．．．、２３６）が含むデータのタイプを示している標識を含む、様々な識別データ（３３６、３３８、３４０、．．．、３４２）を含む。より詳細には、ヘッダ３１２、３１４、３１６は、それらのペイロードがオーディオまたはビジュアル情報（３２８、３３０、３３２）を含むことを示す識別データ（３３６、３３８、３４０）を含み、一方、ヘッダ３１８は、そのペイロード３２６が制御情報３３４を含むことを示す識別データ３４２を含む。
【００４５】
図２を参照すると、受信処理モジュール１３４は、ストリーム１２４を受け取るように構成されたレシーバ２１０を含む。情報抽出モジュール２１２は、レシーバ２１０の出力を受け取り、受信したストリーム１２４から様々なフィールドの情報を抽出する。例えば、情報抽出モジュール２１２は、ストリーム１２４を逆多重化し、パケット毎に、オーディオ情報、ビデオ情報、または制御情報が含まれるかどうかを判定することができる。これは、受け取ったパケット（３０４、３０６、３０８、３１０）のヘッダ（３１２、３１４、３１６、．．．、３１８）にある識別データ（３３６、３３８、３４０、．．．、３４２）を調べることによって行うことができる。受信処理モジュール１３４は、ペイロード（３２０、３２２、３２４、．．．、３２６）のコンテンツに対して、それらの評価されたコンテンツ（assessed content）に基づいて適切な処理を実行する。コントロールパケットによって伝達される制御情報は、クライアントモジュール１０４によって実行される処理の振舞いを管理する命令を含むことができる。
【００４６】
受信処理モジュール１３４は、それが受信したコンテンツ情報を、プレゼンテーション処理モジュール１３８に送る。プレゼンテーション処理モジュール１３８は、様々なデコーダおよびドライバ（オーディオドライバデコーダ２１４、ビデオドライバデコーダ２１６）、並びに他の処理メカニズムを使用して、コンテンツ情報をレンダリングする。
【００４７】
最後に、図２では、クライアントモジュール１０４は、（以下では単にバッファと呼ぶ）ジッタバッファ（jitter buffer）２１８を含む。バッファ２１８は、それがストリーム１２４から受け取る一定量のコンテンツ情報を、先入れ先出し法（ＦＩＦＯ）で格納する。プレゼンテーション処理モジュール１３８は、コンテンツ情報をレンダリングするとき、バッファ２１８からコンテンツ情報を引き出す。したがって、送信中に異常（例えば、わずかな中断）があった場合、プレゼンテーション処理モジュール１３８は、バッファ２１８から受け取るコンテンツ情報を事前に取り出すことができ、その異常がコンテンツ情報のプレゼンテーションに不利な影響を与えることがない。しかし、プレゼンテーション処理モジュール１３８は、追加のコンテンツ情報をストリーム１２４から受け取ることなしに、バッファ２１８に格納されているコンテンツ情報の終端に達したとき、追加のコンテンツ情報のプレゼンテーションが可能でないため、性能が低下することになる。図２は、バッファ２１８を受信処理モジュール１３４のコンポーネントとして図示しているが、一般に、バッファ２１８は、受信されたコンテンツ情報に作用する一連のモジュールにおける他の場所に配置することができる。また、クライアントモジュール１０４は、複数のバッファを含むこともできる。
【００４８】
バッファ２１８をフラッシュする（flush）ことが望ましい機会が様々ある。例えば、ユーザが、あるストリームから他のストリームにジャンプした場合、バッファ２１８は、ネットワークの異常を補償する際に利用することができる有用なコンテンツ情報をもはや格納することができない。したがって、クライアントモジュール２０４は、このような状況では、バッファ２１８をフラッシュし、他のストリームから取り出したコンテンツ情報によりバッファを再充填する。クライアントモジュール２０４は、チャネルが変更されたとき（この場合、ユーザは、あるプログラムのストリームから他のプログラムのストリームにジャンプする）、並びに、シークが行われたとき（この場合、ユーザは、プログラムの一部分から同じプログラムの（例えば、より早くまたはより遅く時間内に出現する）他の部分にジャンプする）、バッファ２１８をフラッシュすることができる。
【００４９】
しかし、ストリームの不連続によって影響を受けるシステム１００内のコンポーネントはクライアントモジュール１０４だけではない。例えば、ユーザ１１４がチャネルを変更するとき、クライアント制御処理モジュール１３６は、このイベントをホストモジュール１０２に通知することができ、ホストモジュール１０２は、適切な処置を取ることにより応答を行うことができる。すなわち、例えば、ホストモジュール側の転送処理モジュール１２２は、キュー並びに構成設定に格納される情報も含むことができ、これらの情報は、ストリーム１２４の中断の際にフラッシュされる必要があり得る。したがって、ホストモジュール１０２は、その他の構成タスクを取り扱うことに加え、転送処理モジュール１２２に格納される関連の情報をフラッシュすることを調整することができる。転送処理モジュール１２２は、様々なストリーム境界情報をストリーム１２４内に挿入することにより、このようなストリームにおける中断を明確に画定することにより、不連続に応答する。次いで、受信処理モジュール１３４は、ストリーム境界情報を受け取るまで、受け取ったストリーム１２４におけるパケットをスキップすることができる。
【００５０】
したがって、クライアントモジュール１０４とホストモジュール１０２の間の対話は、比較的複雑になり得ることが明らかであり、制御情報の交換、１つまたは複数のバッファのフラッシュおよび再充填、および、様々な設定の再構成などが必要となる。ユーザ１１２がストリーム１２４に中断を引き起こす動作を呼び出したとき、この複雑さにより、かなりの待ち時間を生じ得る。この問題に対処するために、システム１００は、ユーザ１１２が短時間の間に複数の制御処置を行う状況において待ち時間を減少させる合体モジュール（coalescing module）を含むことができる。合体モジュールは、例えば、ユーザが比較的短時間の間に一連のチャネル変更コマンドまたはシークコマンドを繰り返し実行することに関連する待ち時間を減少させる役割をすることができる。
【００５１】
Ａ．２  インバンド制御情報の生成および解釈
図４〜図６は、コントロールパケットをコンテンツ情報のストリーム内に挿入して、コンテンツ情報に関する命令をクライアントモジュール１０４に提供する３つの概略的シナリオを示す。これらの命令は、コンテンツ情報についての情報を伝達する、または、コンテンツ情報に対して実行される処理を記述することなどができる。コンテンツ情報のストリームにおけるコントロールパケットの位置により、クライアントモジュール１０４がそれに含まれる制御命令をどのようにコンテンツ情報に適用すべきかを決定するため、このようなパケットの位置は重要である。（パケットのグループにおけるコントロールパケットの「位置」は、一般的なパケットネットワークではパケットは順序通りには受け取られないため、パケットを実際に受け取る順序ではなく、例えば、パケットに割り当てられたシーケンス番号によって表すことができる。）
【００５２】
最初に、図４では、制御情報４０２がコンテンツ情報ストリームＸ４０４の末端に配置されているシナリオ４００を示す。（図４〜図６では、最初に送信された情報は、最も右側に見られることに留意されたい。）シナリオ４００は、制御情報４０２が、ストリームの終端（ＥＯＳ）の境界を定める情報を提供する事例に該当する。ＥＯＳ制御情報４０２をインバンドでコンテンツ情報と一緒に配置することにより、例えば再生モードからアイドルモード（idle mode）へ切り替えるために、受信処理モジュール１３４が、いつ必要な処置を取るかを正確に知ることが可能になるので、このような配置は有用である。
【００５３】
図５は、制御情報５０２がストリームＹ５０４の先頭に位置する他のシナリオ５００を示す。このような配置の事例は、クライアントモジュール１０４によりストリームＹ５０４に対して続いて実行される動作についての命令を伝達するために使用することができる。このシナリオ５００の一例は、復号鍵の変更に関連する。鍵の変更において、ホストモジュール１０２は、クライアントモジュール１０４に、それがホストモジュール１０２から受け取ったコンテンツ情報を続いて復号化するために別の鍵を使用すべきであることを通知する。ホストモジュールは、新しい鍵を別個のコントロールチャネル１３２を介してクライアントモジュール１０４に前もって送ることにより、このタスクを実行することができる。次いで、転送処理モジュール１２２は、鍵変更制御情報５０２をインバンドコンテンツ情報ストリーム１２４に挿入することができる。制御情報５０２の位置並びにその制御情報に含まれる制御データは、受信受信処理モジュール１３４が受け取った新しい鍵をストリームＹを解釈するために適用すべきであることを、受信処理モジュール１３４に通知し、次いで受信処理モジュール１３４は制御情報５０２に従う。
【００５４】
ストリームの先頭に配置される他のタイプの制御情報５０２は、クライアントモジュール１０４により提供されたどのレンダリングリソースを、次のストリームＹ５０４を処理する際に有効および／または無効にすべきかを、受信処理モジュール１３４に通知するために使用することができる。これは、例えば、オーディオストリームがデジタル形式でのコピーが許可されていない場合（例えば、コンテンツ保護の場合）、オーディオのデジタル出力を無効にするために使用することができる。
【００５５】
図６は、制御情報６０２がストリームＸ６０４とストリームＹ６０６の間に位置する他のシナリオ６００を示す。この配置の事例は、例えばストリームＸ６０４とストリームＹ６０６の間の不連続のような、ストリームＸ６０４とストリームＹ６０６の間の関係についての情報を伝達するために使用することができる。このようなストリーム間の不連続は、ある種のデータ損失により生じることがある。
【００５６】
あるいは、このような不連続は、クライアントモジュール１０４またはホストモジュール１０２（あるいは他のある種のモジュール）を介して、ユーザ１１２によって発行され、（例えば、制御経路１３２を介して）ホストモジュール１０２に転送される、明示的コマンドに起因して生じることがある。例えば、この種の不連続は、ユーザ１１２が、チャネルを切り替えることにより、あるデータストリームを他のデータストリームに切り替えたときに、あるいは、ユーザ１１２が、シークコマンドを発行することにより、データストリームのある部分から他の部分に切り替えたために引き起こされ得る。不連続の原因はさらに他にもあり得る。
【００５７】
上述のいずれの場合でも、ホストモジュール１０２は、制御情報６０２をストリーム１２４に追加することにより、不連続にマークを付けることができ、この場合、制御情報６０２は、ストリーム境界制御情報を構成する。例えば、下記の一連の処置によって表される例示的シナリオを考える。
【００５８】
・  ユーザ１１２がチャネル変更コマンドを発行する。
【００５９】
・  チャネル変更命令はホストモジュール１０２に送られる（または、ホストモジュール１０２に関連するコンピュータデバイスに直接入力される）。
【００６０】
・  ホストモジュール１０２は、システム１００内の適切なバッファをフラッシュするための命令を発行して、システムから（古いチャネルに関連する）古いコンテンツ情報を消去する。
【００６１】
・  ホストモジュール１０２の転送処理モジュール１２２は、ストリーム境界制御情報６０２をストリーム１２４に追加して、古いチャネルに関連するストリームと新しいチャネルに関連するストリームの間の不連続にマークを付ける。
【００６２】
・  クライアントモジュール１０４は、このストリーム境界制御情報６０２を受け取り適切に対処する。例えば、ホストモジュール１０２は、クライアントモジュール１０４に、ストリーム境界制御情報６０２を送ることを事前に警告し、クライアントモジュールにフラグを立てるように促すことができる。このフラグの結果として、クライアントモジュール６０２は、約束されたストリーム境界制御情報６０２を受け取るまでの間すべての受け取ったパケットを廃棄するように構成することができる。
【００６３】
・  ストリーム境界制御情報を受け取ると、続いて、クライアントモジュール１０４は、そのバッファを新しいチャネル情報で充填し、バッファが所定の充満した状態に達したときその情報の提示を開始する。
【００６４】
一般に、コンテンツ情報ストリーム内に制御情報を埋め込むことには少なくとも２つの利点がある。第１に、クライアントモジュール１０４は、制御情報をコンテンツ情報に連結する複雑な補足的リンク情報を提供する必要なしに、関連するコンテンツ情報と同期化された制御情報を受け取ることができる。第２に、ある特定の実装形態が別個のコントロールチャネル１３２を使用することを実際に選択した場合、制御情報をインバンドで送信することにより、別個のコントロールチャネル１３２に対する負荷が減少する。
【００６５】
制御情報自体は様々なフォーマットで表現することができる。この情報は、限定ではなく例として、ＲＴＰなど任意のプロトコルにおいて拡張パケットを使用して表現することができる。このパケットは、パケットのペイロードによって運搬されるストリームの性質を識別する識別情報を含むことができる。この識別情報は、ペイロードがオーディオビジュアル情報、制御情報、または他のある種の情報を含むことを識別することができる。
【００６６】
コントロールパケットの例示的フォーマットを以下に示す。
【００６７】
【表１】
2006081159.tif 000003
【００６８】
Ｓｔｒｅａｍ  Ｂｏｕｎｄａｒｙ（ストリーム境界）フィールドは、ストリームにおける不連続を示す。
【００６９】
Ｅｎｄ  Ｏｆ  Ｓｔｒｅａｍ（ＥＯＳ）（ストリーム終端）フィールドは、クライアントモジュール１０４にストリーミングされるストリームの終端を示す。
【００７０】
Ｍａｃｒｏｖｉｓｉｏｎフィールドは、このフィールドのパケットのペイロードが、ある所定の動作モードに適切な映像制御コード（vision control code)を含むことを示す。
Ｒｏｔａｔｅ  Ｋｅｙフィールドは、このフィールドのパケットの後に受け取られたすべてのサンプルが新しい鍵で暗号化されることを示す。新しい鍵は、このパケットが挿入される前に、コントロールチャネルを介して送信することができる。
【００７１】
Ｂ．動作の例示的方法
図７および図８は、図１のシステム１００の動作をフローチャートの形で表している。議論を容易にするために、幾つかの動作については、ある特定の順序で実行される複数の別個のステップを構成するものとして説明する。これらの実装形態は、例示であり限定ではない。本明細書に記載の幾つかのステップは、まとめてグループ化して単一の動作で実行することができ、また、この開示で示す例で採用されている順序と異なる順序で実行することができる。
【００７２】
図７は、コンテンツ情報１２６と制御情報１２８の両方を含むストリーム１２４を作成するための手順を示す。
【００７３】
ステップ７０２において、ホストモジュール１０２はコンテンツ情報１２６を形成する。これは、ソース１０８から収集されたコンテンツ情報を用いることができ、オプションで、そのコンテンツ情報を送信に望ましい形に配置するように処理を行うことができる。
【００７４】
ステップ７０４で、ホストモジュール１０２は制御情報１２８を形成する。ホストモジュール１０２は、ストリーム終端、新しい鍵の使用、および不連続の存在を通知するためなどの様々な状況によって、制御情報を形成するよう促されたときに制御情報を形成する。一部の事例では、ホストモジュール１０２は、クライアントモジュール１０４またはホストモジュール１０２と対話しているユーザ１１２によって取られる処置により促されるので制御情報を形成する。
【００７５】
ステップ７０６では、ホストモジュール１０２の転送処理モジュール１２２が、コンテンツ情報１２６を制御情報１２８と組み合わせる。これは、コンテンツ情報（例えば、Ａ／Ｖ情報）を含むパケットの多重化されたストリーム内に、制御情報１２８を挿入することにより行われる。
【００７６】
ステップ７０８では、転送処理モジュール１２２がストリーム１２４をクライアントモジュール１０４に転送し、この場合、ストリーム１２４は、コンテンツ情報１２６と制御情報１２８の両方を含む。
【００７７】
図８に示す手順は、受信されたストリーム１２４内に存在する制御情報を解釈しそれに基づき対処するために使用される。
【００７８】
ステップ８０２では、受信処理モジュール１３４が、インバンド制御情報１２８を含むストリーム１２４を受け取る。
【００７９】
ステップ８０４では、受信処理モジュール１３４がストリーム１２４から受け取ったパケットが制御情報を含むかどうかを判定する。これは、パケットのヘッダ情報を検査して、パケットが制御情報を含むことを示す情報を含むかどうかを判定することにより行われる。
【００８０】
ステップ８０６で、クライアントモジュール１０４は、制御情報１２８に基づき、受け取ったコンテンツ情報１２６の処理を実行する。このような処理は、図４〜図６を参照して上述した動作のいずれかの形を取ることができる。例えば、制御情報１２８はクライアントモジュール１０４に、受け取ったコンテンツ情報を処理するためにクライアントモジュール１０４が特定のレンダリングリソースまたは復号鍵を使用すべきことを通知することができる。ストリームの不連続がある場合、クライアントモジュール１０４は、ストリーム境界制御情報を受け取るまでパケットを廃棄でき、ストリーム境界制御情報を受け取ったときに、そのバッファ（例えば、バッファ２１８）の再充填を開始する。
【００８１】
Ｃ．例示的コンピュータ環境
例示的一実装形態では、ホストモジュール１０２およびクライアントモジュール１０４の両方はそれぞれ、ホストおよびクライアントの容量内で動作するよう適切に構成された２つのコンピュータデバイスによって実装することができる。この場合、図９は、ホストモジュール１０２またはクライアントモジュール１０４を実装するために使用することができる例示的コンピュータ環境９００に関する情報を示している。
【００８２】
コンピューティング環境９００は、汎用型コンピュータ９０２、および表示装置９０４を含む。但し、コンピューティング環境９００は他の種類のコンピューティング装置を含むことができる。例えば、図示しないが、コンピュータ環境９００は、ハンドヘルドまたはラップトップデバイス、セットトップボックス、ゲームコンソール、拡張型コンピュータ、メインフレームコンピュータ、およびレンダリングデバイスに組み込まれた論理機能などを含むことができる。さらに、図９は、議論を容易にするために、グループとしてまとめられたコンピュータ環境９００の要素を示す。しかし、コンピューティング環境９００は分散処理構成を採用することもできる。分散コンピューティング環境においては、その環境全体にわたり、コンピューティングリソースを物理的に分散することができる。
【００８３】
例示的コンピュータ９０２は、１つまたは複数のプロセッサまたは処理装置９０６、システムメモリ９０８、およびバス９１０を含む。バス９１０は、様々なシステムコンポーネントを一緒に接続する。例えば、バス９１０は、プロセッサ９０６をシステムメモリ９０８に接続する。バス９１０は、様々なバスアーキテクチャのいずれかを使用した、メモリバスまたはメモリコントローラ、周辺バス、加速グラフィックポート（accelerated graphics port）、および、プロセッサまたはローカルバスを含めて、任意の種類のバス構造またはそれらの組合せを用いて実装することができる。
【００８４】
コンピュータ９０２は、それぞれがリムーバルまたは非リムーバルとすることができる様々なタイプの揮発性および不揮発性の媒体を含む、様々なコンピュータ可読媒体とすることができる。例えば、システムメモリ９０８は、ＲＡＭ（ランダムアクセスメモリ）９１２などの揮発性メモリ、およびＲＯＭ（リードオンリメモリ）９１４などの不揮発性メモリの形態で、コンピュータ可読媒体を含む。ＲＯＭ９１４は、始動時などにコンピュータ９０２内の要素間で情報を転送する助けとなる基本ルーチンを含むＢＩＯＳ（入出力システム）９１６を含む。ＲＡＭ９１２は、通常、処理装置９０６により、即座にアクセス可能な形でデータおよび／またはプログラムモジュールを含む。
【００８５】
他の種類のコンピュータ記憶媒体には、非リムーバルで不揮発性の磁気媒体の読取りおよび書込みのためのハードディスクドライブ９１８、リムーバルで不揮発性の磁気ディスク９２２（例えば「フロッピー（登録商標）ディスク」）の読取りおよび書込みのための磁気ディスクドライブ９２０、並びに、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、または他の光媒体などリムーバルで不揮発性の光ディスク９２６の読取りおよび／または書込みのための光ディスクドライブ９２４が含まれる。ハードディスクドライブ９１８、磁気ディスクドライブ９２０、および光ディスクドライブ９２４はそれぞれ、１つまたは複数のデータ媒体インターフェース９２８によって、システムバス９１０に接続される。あるいは、ハードディスクドライブ９１８、磁気ディスクドライブ９２０、および光ディスクドライブ９２４は、ＳＣＳＩインターフェース（図示せず）または他の結合メカニズムによって、システムバス９１０に接続することができる。図示していないが、コンピュータ９０２は、磁気カセットまたは他の磁気記憶装置、フラッシュメモリカード、ＣＤ−ＲＯＭ、ＤＶＤ（デジタル多用途ディスク）、または他の光ストレージ、ＥＥＰＲＯＭ（電気的消去可能プログラマブルＲＯＭ）など他のタイプのコンピュータ可読媒体を含むことができる。
【００８６】
一般に、上記に示したコンピュータ可読媒体は、コンピュータ９０２で使用するための、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの不揮発性ストレージを提供する。例えば、これらの可読媒体は、オペレーティングシステム９３０、アプリケーションモジュール９３２、他のプログラムモジュール９３４、およびプログラムデータ９３６を格納することができる。
【００８７】
コンピュータ環境９００は様々な入力装置を含むことができる。例えばコンピュータ環境９００は、コマンドおよび情報をコンピュータ９０２に入力するためのキーボード９３８およびポインティングデバイス９４０（例えば「マウス」）を含む。コンピュータ環境９００は、（図示しないが）マイク、ジョイスティック、ゲームパッド、パラボラアンテナ、シリアルポート、スキャナ、カードリーダ、およびデジタルまたはビデオカメラなど他の入力装置を含むことができる。入出力インターフェース９４２は入力デバイスを処理装置９０６に結合する。より一般的には、入力装置は、パラレルポート、シリアルポート、ゲームポート、およびＵＳＢ（ユニバーサルシリアルバス）ポートなど任意の種類のインターフェースおよびバス構造を介してコンピュータ９０２に結合することができる。
【００８８】
コンピュータ環境９００はまた、表示装置９０４を含む。ビデオアダプタ９４４は、表示装置９０４をバス９１０に結合する。表示装置９０４に加え、コンピュータ環境９００は、スピーカ（図示せず）やプリンタ（図示せず）など他の出力周辺装置を含むことができる。これらの任意の装置は、図１に示すターゲットとなるエンティティ（１２０、１２２、．．．、１２４）を構成することができる。
【００８９】
コンピュータ９０２は、リモートコンピューティングデバイス９４６など１つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境において動作する。リモートコンピューティングデバイス９４６には、汎用パーソナルコンピュータ、ポータブルコンピュータ、サーバ、ゲームコンソール、およびネットワーク拡張デバイスなどを含めた任意の種類のコンピュータ機器が含まれ得る。リモートコンピューティングデバイス９４６は、コンピュータ９０２またはその一部分に関して上述したすべての機能を含むことができる。
【００９０】
コンピュータ９０２をリモートコンピューティングデバイス９４６に結合するために、ＷＡＮ、ＬＡＮなど任意のタイプのネットワーク９４８を使用することができる。コンピュータ９０２は、ブロードバンド接続、モデム接続、ＤＳＬ接続、または他の接続ストラテジーを利用できるネットワークインターフェース９５０を介して、ネットワーク９４８に結合される。図示しないが、コンピューティング環境９００は、（例えば、変調された無線信号、変調された赤外線信号などを介して）コンピュータ９０２をリモートコンピューティングデバイス９４６と接続するための無線通信機能を提供することができる。
【００９１】
一実装形態では、コンピュータ９０２、およびコンピュータ９４６はそれぞれ、ホストモジュール１０２、およびクライアントモジュール１０４に対応することができる。他の実装形態では、コンピュータ９０２、およびコンピュータ９４６はそれぞれ、ホストモジュール１０２、およびソース１０８に対応することができる（この場合、ソース１０８はサーバコンピュータを構成する）。さらに他の適用も可能である。
【００９２】
最後に、本開示では、多くの例が代替形態（例えば、事例Ａまたは事例Ｂ）として提示された。さらに、本開示は、単一の実装形態において代替形態を組み合わせた事例（例えば、事例Ａおよび事例Ｂ）を、このような結合事例について明示的に言及していない場合においても包含している。
【００９３】
より一般的に言えば、本発明は、構造的機能および／または方法論的作用に特有の言葉で説明されているが、特許請求の範囲に定義される本発明は、記載の特定の機能または作用に必ずしも限定されない。むしろ、特定の機能および作用は、請求項に関わる発明を実装するための例示的形態として開示されている。
【図面の簡単な説明】
【００９４】
【図１】先に要約した機能の態様を実装するための例示的システムを示す図である。
【図２】図１のシステムから選択されたコンポーネントのより詳細なブロック図である。
【図３】図１のシステムを使用して送信することができる例示的な一連のパケット（コンテンツ情報間に分散されている制御情報を含む）を示す図である。
【図４】制御情報が、コンテンツ情報に関連するそれぞれ異なる命令を伝達する、異なる３つの使用シナリオのうちの１つを示す図である。
【図５】制御情報が、コンテンツ情報に関連するそれぞれ異なる命令を伝達する、異なる３つの使用シナリオのうちの１つを示す図である。
【図６】制御情報が、コンテンツ情報に関連するそれぞれ異なる命令を伝達する、異なる３つの使用シナリオのうちの１つを示す図である。
【図７】コンテンツ情報および制御情報の両方を含むストリームを作成するための例示的手順を示すフローチャートである。
【図８】図７で作成されたストリーム内から受け取った制御情報を解釈するための例示的手順を示すフローチャートである。
【図９】図１に示すシステムの態様を実装するための例示的コンピューティング環境を示す図である。
【符号の説明】
【００９５】
１０２  ホストモジュール
１０４，１１６  クライアントモジュール
１０６  通信メカニズム
１０８  （情報）ソース
１１０，１１８  プレゼンテーションデバイス
１１４  入力モジュール
１２０  受信モジュール
１２２  転送処理モジュール
１２４  情報ストリーム
１３０  プレイヤコントロールモジュール
１３２  通信経路
１３４  受信処理モジュール
１３６  クライアント制御処理モジュール
１３８  プレゼンテーション処理モジュール
２０２  情報処理モジュール
２０４  パケット形成モジュール
２０６  制御情報生成モジュール
２１０  レシーバモジュール
２１２  情報抽出モジュール
２１８  （ジッタ）バッファ
３１２，３１４，３１６，３１８  ヘッダ
３２０，３２２，３２４，３２６  ペイロード
３２８，３３０，３３２  オーディオおよび／またはビジュアルストリームデータ
３３４，４０２，５０２，６０２  制御情報
９０６  処理装置
９０８  システムメモリ
９３２  アプリケーションモジュール
９３４  他のプログラムモジュール
９３６  プログラムデータ
９４６  他のコンピューティングデバイス
【図１】
2006081159.tif 000004
【図２】
2006081159.tif 000005
【図３】
2006081159.tif 000006
【図４】
2006081159.tif 000007
【図５】
2006081159.tif 000008
【図６】
2006081159.tif 000009
【図７】
2006081159.tif 000010
【図８】
2006081159.tif 000011
【図９】
2006081159.tif 000012
【外国語明細書】
2006081159000001.pdf