(57)【要約】  分散メディア・セッション（１００）は、それが実行されると、ソース・デバイス（１０２）からクライアント・デバイス（１０４）にネットワーク（１０６）介してデータをストリーミング送信するよう求めるリクエストから分散トポロジを決定する。この分散トポロジが実行されると、そのリクエストを遂行する複数のソフトウェア・コンポーネントを参照する。その複数のソフトウェア・コンポーネントのうちの少なくとも１つは、ソース・デバイスおよびクライアント・デバイスの各々で実行可能である。
2007521526.tif 000002
【特許請求の範囲】
【請求項１】
ソース・デバイスからクライアント・デバイスにネットワークを介してストリーミング送信されるデータをリクエストすること、および
実行された場合に、前記リクエストを遂行する複数のソフトウェア・コンポーネントで、前記ソース・デバイスと前記クライアント・デバイスの各々で実行可能である少なくとも１つのソフトウェア・コンポーネントを含む複数のソフトウェア・コンポーネントを参照する分散トポロジを前記リクエストから決定すること
を備えることを特徴とする方法。
【請求項２】
前記決定することは、
ストリームのデータをレンダリングする前記クライアント・デバイスの能力を見いだすこと、
レンダリングされるべきデータをストリーミング送信する前記ソース・デバイスの能力を見いだすこと、および
前記各能力の両方から前記分散トポロジを導き出すこと
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項３】
前記分散トポロジは、
リモート・シンク分散トポロジと、
リモート・ソース分散トポロジと、
サード・パーティ分散トポロジと
からなる群から選択されることを特徴とする請求項１に記載の方法。
【請求項４】
前記分散トポロジから分散ソフトウェアのインフラストラクチャを構築することをさらに備え、前記分散ソフトウェアのインフラストラクチャは、前記複数のソフトウェア・コンポーネントを含むことを特徴とする請求項１に記載の方法。
【請求項５】
最適化分散トポロジから分散ソフトウェア・インフラストラクチャを構築することをさらに備え、その結果、前記分散ソフトウェア・インフラストラクチャが、前記データをストリーミング送信する前に前記ソース・デバイスでデータをレンダリングすることなく、前記ソース・デバイスから前記クライアント・デバイスに前記データをストリーミング送信するように構成されることを特徴とする請求項１に記載の方法。
【請求項６】
前記リクエストはまた、追加のソース・デバイスから前記クライアント・デバイスにデータをストリーミング送信するようリクエストし、
前記決定することは、前記分散トポロジを、それが実行された場合に、前記ソース・デバイスと前記追加のソース・デバイスの各々から前記クライアント・デバイスにそれぞれデータをストリーミング送信するよう求めるリクエストを前記複数のソフトウェア・コンポーネントが遂行するように、決定する
ことを特徴とする請求項１に記載の方法。
【請求項７】
前記リクエストは、また、前記ソース・デバイスから追加のクライアント・デバイスにデータをストリーミング送信するようリクエストし、
前記決定することは、前記分散トポロジを、それが実行された場合に、前記ソース・デバイスから前記クライアント・デバイスと前記追加のクライアント・デバイスの各々にデータをストリーミング送信するよう求めるリクエストを前記複数のソフトウェア・コンポーネントが遂行するように、決定する
ことを特徴とする請求項１に記載の方法。
【請求項８】
前記分散ソフトウェアのインフラストラクチャは、制御のための統合メカニズムを提供する分散メディア・セッションを含み、それによって、
前記ソース・デバイス上で実行可能な前記少なくとも１つのソフトウェア・コンポーネントは、前記分散メディア・セッションによって制御可能となり、
前記クライアント・デバイス上で実行可能な前記少なくとも１つのソフトウェア・コンポーネントは、前記分散メディア・セッションによって制御可能となる
ことを特徴とする請求項１に記載の方法。
【請求項９】
前記決定することは、ユーザの介入なしに、
前記ソース・デバイスと、
前記クライアント・デバイスと、
サード・パーティ・デバイスと
からなる群から選択されるデバイス上で実行されることを特徴とする請求項１に記載の方法。
【請求項１０】
実行された場合に、請求項１に記載の方法を遂行するコンピュータ実行可能命令を備えることを特徴とする１つまたは複数のコンピュータ可読媒体。
【請求項１１】
ソース・デバイスからクライアント・デバイスにネットワークを介してデータをストリーミング送信するよう求めるリクエストを受信すること、
前記リクエストを遂行するソフトウェア・コンポーネントを参照する分散トポロジを決定することであって、前記分散トポロジを、ストリームのデータをレンダリングする前記クライアント・デバイスの能力と、レンダリングされるべきデータをストリーミング送信する前記ソース・デバイスの能力とから、決定すること、および
前記ソース・デバイスと前記クライアント・デバイスの各々で実行可能である少なくとも１つのソフトウェア・コンポーネントを含む、前記参照される複数のソフトウェア・コンポーネントを含む分散ソフトウェア・インフラストラクチャを前記分散トポロジから構築すること
を備えることを特徴とする方法。
【請求項１２】
前記分散トポロジは、
リモート・シンク分散トポロジと、
リモート・ソース分散トポロジと、
サード・パーティ分散トポロジと
からなる群から選択されることを特徴とする請求項１１に記載の方法。
【請求項１３】
前記決定することは、
ストリームのデータをレンダリングする前記クライアント・デバイスの能力を見いだすこと、
レンダリングされるべきデータをストリーミング送信する前記ソース・デバイスの能力を見いだすこと、および
前記能力の両方から、前記ソフトウェア・コンポーネントを参照する分散トポロジを導き出すこと
をさらに備えることを特徴とする請求項１１に記載の方法。
【請求項１４】
最適化分散トポロジから前記分散ソフトウェアのインフラストラクチャを構築することをさらに備え、その結果、前記分散ソフトウェアのインフラストラクチャが、前記データをストリーミング送信する前に前記ソース・デバイスでデータをレンダリングすることなく、前記ソース・デバイスから前記クライアント・デバイスに前記データをストリーミング送信するように構成されることを特徴とする請求項１１に記載の方法。
【請求項１５】
前記分散トポロジは、制御のための統合メカニズムを提供する分散メディア・セッションを参照し、それによって、
前記ソース・デバイス上で実行可能な前記少なくとも１つのソフトウェア・コンポーネントは、前記分散メディア・セッションによって制御可能となり、
前記クライアント・デバイス上で実行可能な前記少なくとも１つのソフトウェア・コンポーネントは、前記分散メディア・セッションによって制御可能となる
ことを特徴とする請求項１１に記載の方法。
【請求項１６】
前記受信することおよび前記決定することは、ユーザの介入なしに、
前記ソース・デバイスと、
前記クライアント・デバイスと、
サード・パーティ・デバイスと
からなる群から選択されるデバイス上で実行されることを特徴とする請求項１１に記載の方法。
【請求項１７】
実行された場合に、請求項１１に記載の方法を遂行するコンピュータ実行可能命令を備えることを特徴とする１つまたは複数のコンピュータ可読媒体。
【請求項１８】
ストリームのデータをレンダリングするクライアント・デバイスの能力を見いだすこと、
レンダリングされるべきデータをストリーミング送信するソース・デバイスの能力を見いだすこと、および
前記ソース・デバイスと、前記クライアント・デバイスの各々で実行可能である少なくとも１つのソフトウェア・コンポーネントを含み、リクエストを遂行する複数のソフトウェア・コンポーネントを参照する分散トポロジを、前記能力の両方から導き出すこと
を備えることを特徴とする方法。
【請求項１９】
前記分散トポロジは、
リモート・シンク分散トポロジと、
リモート・ソース分散トポロジと、
サード・パーティ分散トポロジと
からなる群から選択されることを特徴とする請求項１８に記載の方法。
【請求項２０】
前記分散トポロジから前記ソフトウェア・コンポーネントを含む分散ソフトウェア・インフラストラクチャを構築することをさらに備えることを特徴とする請求項１８に記載の方法。
【請求項２１】
前記クライアント・デバイスの前記能力を見いだすことは、前記クライアント・デバイスを調べて、ストリームのデータをレンダリングするソフトウェア・コンポーネントを見つけることをさらに備え、
前記ソース・デバイスの前記能力を見定めることは、前記ソース・デバイスを調べて、データをストリーミング送信するソフトウェア・コンポーネントを見つけることをさらに備える
ことを特徴とする請求項１８に記載の方法。
【請求項２２】
前記クライアントおよびソース・デバイスの前記能力を見いだすことは、それぞれ、
ストリームのデータをレンダリングする前記クライアント・デバイスの前記能力と、
レンダリングされるべきデータをストリーミング送信する前記ソース・デバイスの前記能力と
を収容するルックアップ・テーブルに問い合わせを行うこと
をさらに備えることを特徴とする請求項１８に記載の方法。
【請求項２３】
前記分散トポロジは、制御のための統合メカニズムを提供する分散メディア・セッションを参照し、それによって、
前記ソース・デバイス上で実行可能な前記少なくとも１つのソフトウェア・コンポーネントは、前記分散メディア・セッションによって制御可能となり、
前記クライアント・デバイス上で実行可能な前記少なくとも１つのソフトウェア・コンポーネントは、前記分散メディア・セッションによって制御可能となる
ことを特徴とする請求項１８に記載の方法。
【請求項２４】
前記受信することおよび前記決定することは、ユーザの介入なしに、
前記ソース・デバイスと、
前記クライアント・デバイスと、
サード・パーティ・デバイスと
からなる群から選択されるデバイス上で実行されることを特徴とする請求項１８に記載の方法。
【請求項２５】
実行された場合に、請求項１８に記載の方法を遂行するコンピュータ実行可能命令を含むことを特徴とする１つまたは複数のコンピュータ可読媒体。
【請求項２６】
ソース・デバイスからクライアント・デバイスにデータをストリーミング送信するよう求めるリクエストを受信すること、
ストリームのデータをレンダリングする前記クライアント・デバイスの能力を見いだすこと、
レンダリングされるべきデータをストリーミング送信する前記ソース・デバイスの能力を見いだすこと、
前記能力の両方から、前記リクエストを遂行するための、複数のソフトウェア・コンポーネントを参照する分散トポロジを導き出すこと、
前記分散トポロジから、前記分散トポロジによって参照される前記複数のソフトウェア・コンポーネントを含む分散ソフトウェア・インフラストラクチャを構築すること、
前記ソース・デバイスから前記クライアント・デバイスにネットワークを介して前記データをストリーミング送信すること、および
前記クライアント・デバイスによって前記データをレンダリングすること
を備えることを特徴とする方法。
【請求項２７】
複数の命令を有するソフトウェア・コンポーネントを備える分散メディア・セッションであって、前記命令は、実行された場合に、
複数のソフトウェア・コンポーネンであって、実行された場合に、ソース・デバイスからクライアント・デバイスにデータをストリーミング送信するよう求めるリクエストを遂行する複数のソフトウェア・コンポーネントを参照する分散トポロジを決定すること、および
前記クライアント・デバイスの各々で実行可能である少なくとも１つのソフトウェア・コンポーネントを含む複数の前記ソフトウェア・コンポーネントを含む分散ソフトウェア・インフラストラクチャを前記分散トポロジから構築すること
を備える動作（act）を指示する
ことを特徴とする分散メディア・セッション。
【請求項２８】
前記決定することは、
ストリームのデータをレンダリングする前記クライアント・デバイスの能力を見いだすこと、
レンダリングされるデータをストリーミング送信する前記ソース・デバイスの能力を見いだすこと、および
前記能力の両方から前記分散トポロジを導き出すこと
をさらに備えることを特徴とする請求項２７に記載の分散メディア・セッション。
【請求項２９】
前記分散トポロジは、
リモート・シンク分散トポロジと、
リモート・ソース分散トポロジと、
サード・パーティ分散トポロジと
からなる群から選択されることを特徴とする請求項２７に記載の分散メディア・セッション。
【請求項３０】
前記構築することは、前記分散トポロジによって参照される少なくとも１つの追加のソフトウェア・コンポーネントを供給することをさらに備えることを特徴とする請求項２７に記載の分散メディア・セッション。
【請求項３１】
前記決定ステップは、前記分散トポロジを最適化することをさらに備え、その結果、前記分散トポロジから構築される前記分散ソフトウェア・インフラストラクチャが、データをストリーミング送信する前に前記ソース・デバイスでデータをレンダリングすることなく、前記ソース・デバイスから前記クライアント・デバイスに前記データをストリーミング送信するように構成されることを特徴とする請求項２７に記載の分散メディア・セッション。
【請求項３２】
コンピュータ実行可能命令を備えるコンピュータ可読媒体であって、前記命令は、実行された場合に、
実行された場合に、ソース・デバイスからクライアント・デバイスにネットワークを介してデータをストリーミング送信する、前記ソース・デバイスと前記クライアント・デバイスの各々で実行可能である少なくとも１つのソフトウェア・コンポーネントを含む複数のソフトウェア・コンポーネントを参照する分散トポロジを、ユーザの介入なしに、決定することを含む動作（act）を遂行するようコンピューティング・デバイスに指示を与える
ことを特徴とするコンピュータ可読媒体。
【請求項３３】
前記決定することは、
ストリームのデータをレンダリングする前記クライアント・デバイスの能力を見いだすこと、
レンダリングされるデータをストリーミング送信する前記ソース・デバイスの能力を見いだすこと、および
前記能力の両方から前記分散トポロジを導き出すこと
をさらに備えることを特徴とする請求項３２に記載のコンピュータ可読媒体。
【請求項３４】
前記分散トポロジは、
リモート・シンク分散トポロジと、
リモート・ソース分散トポロジと、
サード・パーティ分散トポロジと
からなる群から選択されることを特徴とする請求項３２に記載のコンピュータ可読媒体。
【請求項３５】
前記分散トポロジから分散ソフトウェア・インフラストラクチャを構築することをさらに備えることを特徴とする請求項３２に記載のコンピュータ可読媒体。
【請求項３６】
最適化分散トポロジから分散ソフトウェア・インフラストラクチャを構築することをさらに備え、その結果、前記分散ソフトウェア・インフラストラクチャが、データをストリーミング送信する前に前記ソース・デバイスでデータをレンダリングすることなく、前記ソース・デバイスから前記クライアント・デバイスに前記データをストリーミング送信するように構成されることを特徴とする請求項３２に記載のコンピュータ可読媒体。
【請求項３７】
コンピュータ実行可能命令を含むコンピュータ可読媒体であって、前記命令は、実行された場合に、
ストリームのデータをレンダリングするクライアント・デバイスの能力を見いだすこと、
レンダリングされるデータをストリーミング送信するソース・デバイスの能力を見いだすこと、
実行された場合に前記ソース・デバイスから前記クライアント・デバイスにデータをストリーミング送信する複数のソフトウェア・コンポーネントであって、前記ソース・デバイスと前記クライアント・デバイスの各々で実行可能である少なくとも１つのソフトウェア・コンポーネントを含む前記複数のソフトウェア・コンポーネントを参照する分散トポロジを、前記能力の両方から、ユーザの介入なしに、導き出すこと
を備える動作（act）を遂行するようコンピュータ・デバイスに指示を与えることを特徴とするコンピュータ可読媒体。
【請求項３８】
前記複数のソフトウェア・コンポーネントを含む分散ソフトウェア・インフラストラクチャを前記分散トポロジから構築することをさらに備えることを特徴とする請求項３７に記載のコンピュータ可読媒体。
【請求項３９】
レンダリングされるデータをストリーミング送信するように動作可能なソース・デバイスと、
ストリームのデータをレンダリングするように動作可能なクライアント・デバイスと、
分散メディア・セッションであって、
実行された場合に、前記ソース・デバイスから前記クライアント・デバイスにネットワークを介してデータをストリーミング送信する複数のソフトウェア・コンポーネントを参照する分散トポロジを決定すること、
前記ソフトウェア・コンポーネントを含む分散ソフトウェア・インフラストラクチャを前記分散トポロジから構築することであって、前記ソフトウェア・コンポーネントの少なくとも１つは、
前記ソース・デバイス、および
前記クライアント・デバイス
の各々で実行可能であることを含む動作をその実行時に遂行させる分散メディア・セッションと
を備えることを特徴とするシステム。
【請求項４０】
前記ソース・デバイスは、
ソース周辺デバイスにローカルに接続されたコンピューティング・デバイスと、
レンダリングされるデータをストリーミング送信するように動作可能なネットワーク対応型デバイスと
からなる群から選択されることを特徴とする請求項３９に記載のシステム。
【請求項４１】
前記クライアント・デバイスは、
レンダリング・デバイスにローカルに接続されたコンピューティング・デバイスと、
データのレンダリングに適したネットワーク対応型デバイスと
からなる群から選択されることを特徴とする請求項３９に記載のシステム。
【請求項４２】
前記決定することは、
ストリームのデータをレンダリングする前記クライアント・デバイスの能力を見いだすこと、
レンダリングされるデータをストリーミング送信する前記ソース・デバイスの能力を見いだすこと、
前記能力の両方から前記分散トポロジを導き出すこと
をさらに備えることを特徴とする請求項３９に記載のシステム。
【請求項４３】
前記分散トポロジは、
リモート・シンク分散トポロジと、
リモート・ソース分散トポロジと、
サード・パーティ分散トポロジとからなる群から選択されることを特徴とする請求項３９に記載のシステム。
【請求項４４】
前記構築することは、前記分散トポロジによって参照される少なくとも１つのソフトウェア・コンポーネントを供給することをさらに備えることを特徴とする請求項３９に記載のシステム。
【請求項４５】
前記構築することは、最適化分散トポロジから前記分散ソフトウェア・インフラストラクチャを構築することを備え、その結果、前記分散ソフトウェア・インフラストラクチャが、データをストリーミング送信する前に前記ソース・デバイスでデータをレンダリングすることなく、前記ソース・デバイスから前記クライアント・デバイスに前記データをストリーミング送信するように構成されることを特徴とする請求項３９に記載のシステム。
【請求項４６】
前記分散メディア・セッションの実行は、
前記ソース・デバイスと、
前記クライアント・デバイスと、
サード・パーティ・デバイスと
のうちの１つによって遂行されることを特徴とする請求項３９に記載のシステム。
【請求項４７】
ソース・デバイスによって実行された場合に、レンダリングされるデータをストリーミング送信するソフトウェア・コンポーネントを含むソース・デバイスと、
クライアント・デバイスによって実行された場合に、ストリームのデータをレンダリングするソフトウェア・コンポーネントを含むクライアント・デバイスと、
分散メディア・セッションであって、
前記ソース・デバイスによって実行された場合に、レンダリングされるべきデータをストリーミング送信するソフトウェア・コンポーネントと、
前記クライアント・デバイスによって実行された場合に、ストリームのデータをレンダリングするソフトウェア・コンポーネントと
を制御するための統合メカニズムを、前記ソース・デバイスまたは前記クライアント・デバイスのどちらかによって実行された場合に、提供する分散メディア・セッションと
を備えることを特徴とするシステム。
【請求項４８】
前記ソース・デバイスは、
ソース周辺デバイスにローカルに接続されたコンピューティング・デバイスと、
レンダリングされるべきデータをストリーミング送信するように動作可能なネットワーク対応型デバイスと
からなる群から選択されることを特徴とする請求項４７に記載のシステム。
【請求項４９】
前記クライアント・デバイスは、
レンダリング・デバイスとローカルに接続されたコンピューティング・デバイスと、
データのレンダリングに適したネットワーク対応型デバイスと
からなる群から選択されることを特徴とする請求項４７に記載のシステム。
【請求項５０】
ネットワークと、
データを圧縮し、前記圧縮データをレンダリングせずに、前記圧縮されたデータをストリーミング送信するように構成されたソース・デバイスと、
ネットワークを介して前記ソース・デバイスと通信可能に結合されたクライアント・デバイスであって、
前記ネットワークを介して前記ソース・デバイスからストリーミング送信されたデータを受信し、
前記受信データを圧縮解除し、
前記圧縮解除されたデータをレンダリングする
ように構成されたクライアント・デバイスと
を備えることを特徴とするシステム。
【請求項５１】
前記ソース・デバイスは、
ソース周辺デバイスとローカルに接続されたコンピューティング・デバイスと、
レンダリングされるデータをストリーミング送信するように動作可能なネットワーク対応型デバイスと
からなる群から選択されることを特徴とする請求項５０に記載のシステム。
【請求項５２】
前記クライアント・デバイスは、
レンダリング・デバイスとローカルに接続されたコンピューティング・デバイスと、
データのレンダリングに適したネットワーク対応型デバイスと
からなる群から選択されることを特徴とする請求項５０に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、データのストリーミング送信に関し、より詳細には、データをストリーミング送信するための分散トポロジ（distributed topology）の決定（resolving）に関する。
【背景技術】
【０００２】
データ・ストリーミングは、データを速やかに受信できるようになるなど、ユーザに増強された機能を提供する。ストリーミングが無ければ、クライアント・デバイス（client device）にデータが出力される前に、ソース・デバイス（source device）からデータ全体を受信する必要がある場合、クライアント・デバイスでデータがレンダリングされる際にユーザは遅延を体験することになる。データをストリーミング送信すれば、ユーザが遭遇する遅延を短縮することができる。データ・ストリーミングは、データの「リアル・タイム」レンダリング（途eal-time  rendering）を行うのに利用することができる。
【０００３】
データをストリーミング送信すると、データを含むファイル全体がクライアント・デバイスに利用可能になるまでレンダリングされないデータとは対照的に、データが到着するにつれてクライアント・デバイスでレンダリングするため、通常はデータパケットを使用して、ストリーミングで、すなわち、連続形式で、データがソース・デバイスから送信される。ストリーミングは、映像データ、音声データ、メディア・データ、その他の、様々なタイプのデータに、利用されることが可能である。ストリームの映像データは、送信され、画像が到着しだい表示される、一連の「動画像」を提供する。同様に、ストリームの音声データは、到着しだい再生される音声データを提供する。ストリームのメディア・データは音声データと映像データの両方を含む。
【０００４】
以前には、データ・ストリームを使用する周辺デバイスは、ローカル方式で使用されていた。例えば、（カメラ、マイクロホン、キャプチャ・カードといった）ソース周辺デバイス（source peripheral device）や（ディスプレイ・モニタ、スピーカといった）レンダリング・デバイス（rendering device）などの周辺デバイスは、ソース周辺デバイスからストリーミング送信されるデータを、レンダリング・デバイスによってレンダリングすることができるように、１台のコンピューティング・デバイスに物理的に接続されていた。データをレンダリングすることは、ディスプレイ・デバイスに表示される、あるいは音声スピーカで再生される、などの、レンダリング・デバイスによってはっきりと理解される形式での出力に適した形式へのデータの変換を含んでもよい。
【０００５】
データ・ストリームにリモート・アクセスを行いたい場合、そのリモート・アクセスは、そのデータが提供されるローカルの方式（manner）によって制限される。例えば、ソース周辺デバイスによってストリーミング送信されるデータへのリモート・アクセスを提供するには、データがクライアント・デバイスにストリーミング送信される前に、そのデータは、出力され、圧縮され、圧縮解除され、レンダリングされ、キャプチャされ、再圧縮される。しかし、クライアント・デバイスにストリーム形式で送信する前に、データをキャプチャし、再圧縮する際に、ソース周辺デバイスの出力であるデータの一部が、失われることがある。したがって、このことは、クライアント・デバイスにストリーミング送信されるデータの品質は低下する。そのため、映像データの表示において動きが途切れ途切れになったり、音声データが不完全に再生されたりするなど、データを見かつ／または聴く際の、ユーザの体験の質を低下させる。さらに、ソース・デバイスでデータをキャプチャし、再圧縮するには、リソースを大量に必要とし、そのため、そのような機能を実行できるのは、十分なプロセッサ資源およびデータ・ストレージ資源を有するデバイス（device）に限られる。さらに、レンダリングされるデータをキャプチャし、再圧縮すると、クライアント・デバイスにデータをストリーミング送信する速度が低下することがあり、そのため、データの「リアル・タイム」性が制限される。さらに、２以上の送信先にデータ・ストリームを送信したい場合、複数ストリームをサポートするのに使用されるリソースの量はさらに増加する。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
したがって、データのストリーミング送信を改良することが、今もって必要とされている。
【課題を解決するための手段】
【０００７】
実行されると、ソース・デバイスからネットワークを介してクライアント・デバイスにデータをストリーミング送信するためのソフトウェア・コンポーネント（software components）を参照する分散トポロジを決定する、分散メディア・セッション（distributed media session）が説明される。分散トポロジは、ソース・デバイスからネットワークを介してクライアント・デバイスにデータをストリーミング送信するのに使用されるソフトウェア・コンポーネントの、枠組（framework）またはプランと考えることができる。したがって、分散トポロジのソフトウェア・コンポーネントが実行されると、データが、ソース・デバイスからネットワークを介してクライアント・デバイスにストリーミング送信される。これらのソフトウェア・コンポーネントからなる分散ソフトウェア・インフラストラクチャ（distributed software infrastructure）を、分散メディア・セッションの実行によって、分散トポロジに基づいて構築することができる。分散ソフトウェア・インフラストラクチャのソフトウェア・コンポーネントを実行することで、ソース・デバイスからネットワークを介してクライアント・デバイスにデータをストリーミング送信することができる。
【０００８】
分散メディア・セッションは、その実行によって、分散トポロジを決定するための統合（すなわち、集中）メカニズム（federated（i.e. centralized)mechanism）を提供することができる。例えば、その実行によって、分散メディア・セッションは、分散トポロジを決定する際に、ソースおよびクライアント・デバイス双方の能力を評価することができる。さらに、分散メディア・セッションは、クライアント・デバイス、ソース・デバイス、および／またはサード・パーティ・デバイス（third party device）によって分散メディア・セッションを実行できるように分散トポロジを決定するための統合メカニズムを、その実行によって提供する。分散メディア・セッションを実行して、制御のための統合メカニズムを提供することもできる。例えば、ソースおよびクライアント・デバイス双方のソフトウェア・コンポーネントを、そのような統合メカニズムを具現する単一のエンティティによって制御することができる。
【発明を実施するための最良の形態】
【０００９】
本開示および図面にわたって、同様のコンポーネントおよび機能を参照するために、同じ番号を使用する。
【００１０】
概要
その実行によって分散トポロジを決定する、分散メディア・セッション（distributed media session：ＤＭＳ）について説明する。分散トポロジは、ソース・デバイスからネットワークを介してクライアント・デバイスにデータをストリーミング送信するためのソフトウェア・コンポーネントを参照する。分散トポロジは、参照されるソフトウェア・コンポーネントを使用して、ソース・デバイスからネットワークを介してクライアント・デバイスにデータをストリーミング送信するための、枠組またはプランと考えることができる。その実行によって、ＤＭＳは、レンダリングされるべきデータをストリーミング送信するソース・デバイスの能力を見いだすことによって、またソース・デバイスからのストリームのデータをレンダリングするクライアント・デバイスの能力を見いだすことによって、分散トポロジを決定することができる。この２つを見いだすことによって、ＤＭＳは、ソース・デバイスからネットワークを介してクライアント・デバイスにデータをストリーミング送信するのに適したソフトウェア・コンポーネントを参照する分散トポロジを構築する。ＤＭＳは次に、分散トポロジを利用して、分散ソフトウェア・インフラストラクチャを構築することができる。分散ソフトウェア・インフラストラクチャは、その実行によって、ソース・デバイスからネットワークを介してクライアント・デバイスにデータをストリーミング送信することができる。
【００１１】
ＤＭＳは、その実行によって、分散トポロジを決定するための、統合された、すなわち集中化されたメカニズムを提供することができる。例えば、その実行によって、ＤＭＳは、分散トポロジを決定する際に、ソースおよびクライアント装置双方の能力を考慮に入れることができる。さらに、ＤＭＳは、クライアント・デバイス、ソース・デバイス、および／またはサード・パーティ・デバイスによってＤＭＳを実行できるように分散トポロジを決定するための統合メカニズムを提供する。ＤＭＳは、ソースおよびクライアント・デバイス双方のソフトウェア・コンポーネントを、ＤＭＳと対話するアプリケーションおよび／またはＤＭＳ自体などの、単一のエンティティによって制御できるようにするなど、制御のための統合メカニズムを提供することもできる。
【００１２】
分散メディア・セッション（ＤＭＳ）
図１は、データをストリーミング送信するシステム１００を示している例示的な実装を説明する図である。システム１００は、ネットワーク１０６を介して通信可能に結合された、ソース・デバイス１０２とクライアント・デバイス１０４を含む。ネットワーク１０６は、ＬＡＮ（ローカル・エリア・ネットワーク）、ＷＡＮ（ワイド・エリア・ネットワーク）、およびインターネットのうちのいずれかを含むことができる。
【００１３】
ソース・デバイス１０２は、レンダリングされるべきデータを提供する。ソース・デバイス１０２は、データを出力するソース周辺デバイス１０８を含むことができる。ソース周辺デバイス１０８は、カメラ１０８ａ、マイクロホン１０８ｂ、キャプチャ・カード、その他として構成することができる。ソース・デバイス１０２はまた、ＵＳＢ（汎用シリアル・バス）ポート、ＩＥＥＥ１３９４ポート、パラレル・ポートなどを利用するローカル・コネクションを介して、ソース周辺デバイス１０８に通信可能に結合された、コンピューティング・デバイス１１０を含むことができる。コンピューティング・デバイス１１０は、１つまたは複数のソフトウェア・コンポーネントを実行するプロセッサ１１２と、ソフトウェア・コンポーネントおよびデータを格納するメモリ１１４を含む。ソース・デバイス１０２はまた、レンダリング・デバイス１１６と対話するユーザにデータの有形な出力を提供するための、レンダリング・デバイス１１６を含むことができる。レンダリング・デバイス１１６は、ディスプレイ・デバイス１１６ａ、スピーカ１１６ｂ、その他の、様々な方法で構成することができる。レンダリング・デバイス１１６もまた、ローカル・コネクションを使用して、コンピューティング・デバイス１１０に通信可能に結合される。
【００１４】
図１に示されたソース・デバイス１０２は、コンピューティング・デバイス１１０に通信可能に結合されたソース周辺デバイス１０８を含むように構成されているが、ソース・デバイス１０２は、様々な方法で構成することができる。例えば、ソース・デバイス１０２は、プロセッサ、メモリ、およびネットワーク・ハードウェア・コンポーネントをそれ自身に含むことによって、ネットワーク１０６に接続する独立のコンピューティング・デバイス１１０を含まない、ネットワーク対応型デバイス（network-ready device）として構成することができる。別の例では、ソース・デバイス１０２は、ソース・デバイス１０２がソフトウェアを実行することで提供されるストリーミング・プロトコルによってストリームを提供するメディア・サーバとして構成することができる。
【００１５】
クライアント・デバイス１０４もまた、プロセッサ１２０とメモリ１２２を備えるコンピューティング・デバイス１１８を含むことができる。クライアント・デバイス１０４は、ローカル・コネクションを介してコンピューティング・デバイス１１８に通信可能に結合された、目に見えるデータの出力（tangible output of data）を提供するためのレンダリング・デバイス１２４を含む。ソース・デバイス１０２と同様に、クライアント・デバイス１０４も、独立のコンピューティング・デバイス１１８および独立のレンダリング・デバイス１２４を含むものとして示されているが、クライアント・デバイス１０４は、様々な方法で構成することができる。例えば、クライアント・デバイス１０４は、コンピューティング・デバイス１１８の全リソースを含まない、ネットワーク対応型のレンダリング・デバイスとして構成することができる。例えば、クライアント・デバイス１０４は、ＲＡＭ容量が少なく、ディスク・ドライブをもたず、プロセッシング能力が乏しいなど、プロセッシングおよびメモリ能力が制限された、リソースの乏しいデバイスとして構成することができる。
【００１６】
ペアレント分散メディア・セッション（parent DMS）１２６は、システム１００がソース・デバイス１０２からネットワーク１０６を介してクライアント・デバイス１０４にデータをストリーミング送信できるように、含まれる。ペアレントＤＭＳ１２６は、ソース・デバイス１０２、クライアント・デバイス１０４、および／または図２０のサード・パーティ・デバイス２００２によって実行することのできるソフトウェア・コンポーネントである。ペアレントＤＭＳ１２６を実行することで、分散ソフトウェア・インフラストラクチャを、ネットワーク１０６を介してデータをストリーミング送信するように、構築することができる。ペアレントＤＭＳ１２６は、その実行によって、ソース・デバイス１０２およびクライアント・デバイス１０４双方の能力を見いだすことができる。この見いだされた能力に基づき、ペアレントＤＭＳ１２６は、クライアント・デバイス１０４およびソース・デバイス１０２双方にわたるソフトウェア・コンポーネントの（一般的な、あるいは特定の）分散に対応することができる。ソフトウェア・コンポーネントの分散についての詳しい説明は、以下の「分散トポロジの決定」と題するセクションに記載されている。以下の説明を分かり易くするため、ある動作を実行するペアレントＤＭＳ１２６またはその他のソフトウェア・コンポーネントについての遂行への言及は、あたかも、ペアレントＤＭＳ１２６またはその他のソフトウェア・コンポーネントがその動作を行うものとして、説明される。
【００１７】
図２は、データをストリーミング送信するために、分散メディア・セッション１２６を利用するコンピューティング環境２００を説明する図である。ペアレントＤＭＳ１２６は、図１のソース・デバイス１０２またはクライアント・デバイス１０４で実行されるオペレーティング・システム２０２の一部として、また図２０のサード・パーティ・デバイス２００２用のオペレーティング・システムの一部として含むことができる。オペレーティング・システム２０２は、ソース周辺デバイス２０４（１）〜２０４（Ｎ）およびレンダリング・デバイス２０６（１）〜２０６（Ｍ）など、ソフトウェアおよびハードウェアの組織化および制御（organization and control）を提供する。
【００１８】
ペアレントＤＭＳ１２６は、データ・ストリームの入力および／または出力のために使用されるローカル・ソフトウェア・コンポーネント２１０を含むローカル・ソフトウェア・インフラストラクチャの上に構築することができる。ローカル・ソフトウェア・コンポーネント２１０は、デバイス・ドライバ２１２、メディア・プレーヤなどのデータ・ストリームを出力するためのプレーヤ２１４、およびその他のソフトウェア・コンポーネント２１６を含むことができる。ペアレントＤＭＳ１２６は、これらのローカル・ソフトウェア・コンポーネント２１０を管理することができ、これらのローカル・ソフトウェア・コンポーネント２１０へ、およびこれらのローカル・ソフトウェア・コンポーネント２１０から図１のネットワーク１０６を介してデータのストリーミングを行うことができる。したがって、ペアレントＤＭＳ１２６は、ローカル・ソフトウェア・コンポーネント２１０を置き換えることなく、それらを補完することができる。
【００１９】
アプリケーション２０８とペアレントＤＭＳ１２６の間のインターフェースを提供するために、メディア・エンジン（media engine）２１８を含むことができる。メディア・エンジン２１８を利用して、ペアレントＤＭＳ１２６の機能をアプリケーション２０８に提示することができる。言い換えれば、メディア・エンジン２１８は、アプリケーション２０８がペアレントＤＭＳ１２６と、またペアレントＤＭＳ１２６がアプリケーション２０８と対話できるように、またその逆もできるように、アプリケーション・プログラミング・インターフェース（ＡＰＩ）を定義する。さらに、ペアレントＤＭＳ１２６は、メディア・エンジン２１８を利用して、ローカル・ソフトウェア・コンポーネント２１０と対話するためのインターフェースを提供する。メディア・エンジン２１８はまた、ソフトウェア・コンポーネント間のデータ・フローを制御するために利用することもできる。メディア・エンジン２１８は、例えば、ローカル・ソフトウェア・コンポーネント２１０の間でデータのストリームを経路指定したり、ローカル・ソフトウェア・コンポーネント２１０の実行を開始させたり、などをすることができる。
【００２０】
リモート・アクセスおよび統合
分散ソフトウェア・インフラストラクチャ内では２つ以上のデバイスで複数のソフトウェア・コンポーネントが実行されるという点で、ローカル・ソフトウェア・コンポーネント２１０の構築および制御とは対照的に、分散ソフトウェア・インフラストラクチャの構築および制御において、さらなる複雑さに直面することになる。さらに、分散ソフトウェア・インフラストラクチャ内では、データをストリーミング送信するのに、様々なソフトウェア・コンポーネントを利用することができ、このことが、分散ソフトウェア・インフラストラクチャの構築および制御をより複雑なものにする。例えば、様々なソフトウェア・コンポーネントとして、ローカル・ソフトウェア・コンポーネント２１０、メディア・エンジン２１８、送信機、受信機、その他を挙げることができ、これらの使用については、以下の「分散トポロジの決定」と題するセクションでより詳しく説明する。
【００２１】
ペアレントＤＭＳ１２６は、２つ以上のデバイス間でデータをストリーミング送信するのに適した分散ソフトウェア・インフラストラクチャを構築するための、統合された、すなわち集中化された手法を提供する。この手法は、プランニング工程を集中化し、ソフトウェア・コンポーネントの制御も集中化することができる。ペアレントＤＭＳ１２６は、分散ソフトウェア・インフラストラクチャを構築する際に、ソース・デバイス１０２およびクライアント・デバイス１０４双方の能力を考慮に入れることができる。これにより、ソース・デバイス１０２およびクライアント・デバイス１０４双方のソフトウェア・コンポーネントを、ペアレントＤＭＳ１２６によって、統一的に、構築し、制御することが可能になる。統合手法を用いることによって、ペアレントＤＭＳ１２６は、図２５に関してより詳しく説明するように、ソースおよびクライアント・デバイスの能力にとって最適化された分散ソフトウェア・インフラストラクチャを提供することができる。
【００２２】
分散トポロジを構築するのに統合手法を取ることができるが、構築および制御の各要素は、複数の・デバイスにわたる分散トポロジの個別部分の中で提供することができる。例えば、ソース・デバイス１０２からクライアント・デバイス１０４にデータをストリーミング送信するのに利用されるソフトウェア・コンポーネントのホストとして挙動し得るデバイスに、構築および制御を委任することができる。このモデルは、ペアレント−チャイルド関係を使用して、ペアレントＤＭＳ１２６によってサポートされる。分散ソフトウェア・インフラストラクチャのソフトウェア・コンポーネントをすべて直接制御しようと試みる代わりに、ペアレントＤＭＳ１２６は、図３に示すように、チャイルドＤＭＳ（child DMS）３０２を生成、例えば、インスタンス化して、それに制御を委任する。結果として生じる構造は、ペアレントＤＭＳ１２６とチャイルドＤＭＳ３０２の間に示される簡単な単一のペアレント−チャイルド関係であることもあり、または図３に示すような複数のペアレント−チャイルド関係を含むより複雑な木構造であることもある。
【００２３】
図４は、統合手法を用いてリモート・アクセス機能を提供するペアレントＤＭＳ１２６を示している例示的な実装を説明する図である。ペアレントＤＭＳ１２６は、チャイルドＤＭＳ３０２をホストし、制御する、ペアレントとして動作する。ペアレントＤＭＳ１２６は、それがホストするソフトウェア・コンポーネントに対する制御を、メディア・エンジン２１８を介してアプリケーション２０８に提供する。このようにして、ペアレントＤＭＳ１２６は、ストリームのデータへのリモート・アクセス機能を、アプリケーション２０８に提供する。例えば、ペアレントＤＭＳ１２６は、チャイルドＤＭＳ３０２をホストし、チャイルドＤＭＳ３０２は、デバイス境界４０４を越えて実行される、すなわち、異なるデバイスで実行される、メディア・エンジン４０２を含む。ペアレントＤＭＳ１２６は、チャイルドＤＭＳ３０２を介して、デバイス境界４０４を越えてメディア・エンジン４０２を制御することができる。したがって、チャイルドＤＭＳ３０２は、アプリケーション２０８にとってメディア・エンジン４０２がリモートであるにもかかわらず、メディア・エンジン４０２の機能を、ペアレントＤＭＳ１２６を介してアプリケーション２０８に提供する。
【００２４】
ペアレントＤＭＳ１２６は、メディア・エンジン４０６を直接ホストすることもできる。ペアレントＤＭＳ１２６は、汎用プラグ・アンド・プレイ・デバイスやレガシー・デバイスなどと対話するのに使用される図２に示すメディア・エンジン４０６、チャイルドＤＭＳ３０２、ローカル・ソフトウェア・コンポーネント２１０を含むことができる複数のタイプのソフトウェア・コンポーネントをホストする能力をもつ。複数のソフトウェア・コンポーネントをホストすることによって、ペアレントＤＭＳ１２６は、（複数の）ソフトウェア・コンポーネントに対する制御を集合（aggregate）することができる。したがって、アプリケーション２０８は、ペアレントＤＭＳ１２６と対話することで、複数のソフトウェア・コンポーネントを制御することができる。
【００２５】
チャイルドＤＭＳ３０２は、異なる機能を提供するように、様々な方法で構成することができる。例えば、あるソフトウェア・コンポーネント、例えば、メディア・エンジン４０２に、ペアレントＤＭＳ１２６は直接アクセスできないが、チャイルドＤＭＳ３０２はそれにアクセスできるような場合、チャイルドＤＭＳ３０２を生成して、そうした状況に対処することができる。つまり、チャイルドＤＭＳ３０２は、ペアレントＤＭＳ１２６にホストされて、ソフトウェア・コンポーネント、例えば、メディア・エンジン４０２に対するアクセスを提供する。さらに、ソフトウェア・コンポーネントの特定の組の制御を行わせるために、チャイルドＤＭＳ３０２を生成することができる。例えば、映像データや音声データなど、ストリーミング送信されるデータのタイプ毎に、別個のチャイルドＤＭＳを提供することができる。
【００２６】
最終的に、ペアレントＤＭＳ１２６は、図４に示すように、分散ソフトウェア・インフラストラクチャの少なくとも一部に対する、集合された制御を提供することができる。例えば、ペアレントＤＭＳ１２６は、ソース・デバイス１０２とクライアント・デバイス１０４の各々に、少なくとも１つの配置されたソフトウェア・コンポーネントを制御することができる。チャイルドＤＭＳ３０２を生成する決定（decision）は、次のセクションで説明する、分散トポロジの決定（resolving）の結果、を受けて行われる。
【００２７】
分散トポロジの決定
図５は、ペアレントＤＭＳ１２６が、ソース・デバイス１０２からクライアント・デバイス１０４にデータをストリーミング送信するための分散ソフトウェア・インフラストラクチャを構築する例示的な手順５００を説明する図である。ブロック５０２には、リクエスト（要求）工程が示されており、そこでは、アプリケーション２０８が、ペアレントＤＭＳ１２６に、データをストリーミング送信するよう求めるリクエスト（要求）５０４を送信する。リクエストは、図１に示すソース・デバイス１０２とクライアント・デバイス１０４を参照する。
【００２８】
ペアレントＤＭＳ１２６は、リクエスト５０４を使用して、ソース・デバイス１０２からクライアント・デバイス１０４にデータをストリーミング送信するのに適したソフトウェア・コンポーネントを参照する分散トポロジを決定する。分散トポロジを決定するため、ペアレントＤＭＳ１２６は最初に、ストリーミング・データの扱いに関する、ソース・デバイス１０２の能力とクライアント・デバイス１０４の能力をそれぞれ見いだす。例えば、ＤＭＳ１２６は、データをレンダリングするためのクライアント・デバイス１０４の能力と、レンダリングされるべきデータをストリーミング送信するためのソース・デバイス１０２の能力を見いだすことができる。
【００２９】
能力は、様々な方法で見つけ出すことができる。ブロック５０６に図示する実装には、能力の発見工程が示されており、そこでは、ソース・デバイス１０２からのデータのストリーミング送信に関与する、すなわち機能または結果として、データをストリーミング送信する、ソース・ソフトウェア・コンポーネント５０８を見いだすために、ペアレントＤＭＳ１２６は、ソース・デバイス１０２を調査することができる。同様に、クライアント・デバイス１０４にストリーミング送信されたデータのレンダリングに関与するクライアント・ソフトウェア・コンポーネント５１０を見いだすために、ペアレントＤＭＳ１２６は、クライアント・デバイス１０４を調査することができる。ソース・デバイス１０２とクライアント・デバイス１０４の調査には、ソース・デバイス１０２およびクライアント・デバイス１０４によって、ペアレントＤＭＳ１２６に開示された、例えば、見えるようにされた、ソフトウェア・コンポーネントを見いだすことが含まれ得る。
【００３０】
別の実装では、ペアレントＤＭＳ１２６は、ルックアップ・テーブルに問い合わせを行うことによって、ソース・デバイス１０２とクライアント・デバイス１０４の能力をそれぞれ見つけ出すことができる。ルックアップ・テーブルは、ソース・デバイス１０２の能力および／またはクライアント・デバイス１０４の能力を特定する結果を返すことができる。ルックアップ・テーブルは、ペアレントＤＭＳ１２６の一部として存在することができ、かつ／またはネットワーク１０６を介してアクセス可能なソース・デバイス１０２、クライアント・デバイス１０４、および／または追加のデバイス（図示せず）など、図１に示すネットワーク１０６上のどこかに存在することもできる。
【００３１】
ブロック５１２には、分散トポロジの決定（resolving）工程が示されており、そこでは、ペアレントＤＭＳ１２６が、ブロック５０６で見いだされたソース・デバイス１０２およびクライアント・デバイス１０４双方の能力から、分散トポロジ５１４を導き出す。分散トポロジ５１４は、実行されるとソース・デバイス１０２からクライアント・デバイス１０４にデータをストリーミング送信するソフトウェア・コンポーネントを参照するプラン、例えば青写真である。例えば、ソース・デバイス１０２内の、ペアレントＤＭＳ１２６によって見いだされたソース・ソフトウェア・コンポーネント５０８は、図１に示すソース周辺デバイス１０８用のドライバとすることができる。さらに、クライアント・デバイス１０４内の見いだされたクライアント・ソフトウェア・コンポーネント５１０は、データを、デバイス・ドライバを介して図１に示すクライアント・デバイス１０４のレンダリング・デバイス１２４に提供するのに使用されるメディア・プレーヤとすることができる。この発見に基づいて、ペアレントＤＭＳ１２６は、ソース・ソフトウェア・コンポーネント５０８およびクライアント・ソフトウェア・コンポーネント５１０と共に実行した際に、ソース・デバイス１０２からクライアント・デバイス１０４にデータをストリーミング送信する、追加のソフトウェア・コンポーネント５１６を導き出すことができる。ペアレントＤＭＳ１２６は、分散トポロジ５１４が、追加のソフトウェア・コンポーネント５１６を含むように、ソース・ソフトウェア・コンポーネント５０８およびクライアント・ソフトウェア・コンポーネント５１０の見いだされた能力に基づいて、分散トポロジ５１４を導き出すことができる。図示の例では、分散トポロジ５１４は、追加のソフトウェア・コンポーネント５１６と共に、ソース・ソフトウェア・コンポーネント５０８およびクライアントソフトウェアコンポーネント５１０を参照している。この時点で、分散トポロジ５１４は、ソース・デバイス１０２からクライアント・デバイス１０４にデータをストリーミング送信するためのプランを提供するが、送信を実行する実際の分散ソフトウェア・インフラストラクチャは提供していない。
【００３２】
ブロック５１８には、分散ソフトウェア・インフラストラクチャの構築工程が示されており、そこでは、ペアレントＤＭＳ１２６は、分散ソフトウェア・インフラストラクチャ５２０を構築するために、分散トポロジ５１４に基づいて、追加のソフトウェア・コンポーネント５１６を供給する。分散ソフトウェア・インフラストラクチャ５２０は、追加のソフトウェア・コンポーネント５１６、ソース・ソフトウェア・コンポーネント５０８、およびクライアント・ソフトウェア・コンポーネント５１０を含む。ソース・デバイス１０２からクライアント・デバイス１０４にデータをストリーミング送信するため、分散ソフトウェア・インフラストラクチャ５２０のソース・ソフトウェア・コンポーネント５０８、クライアントソフトウェア・コンポーネント５１０、および追加のソフトウェア・コンポーネント５１６を実行する。追加のソフトウェア・コンポーネント５１６は、様々な方法で供給することができる。例えば、追加のソフトウェア・コンポーネント５１６は、ローカル・メモリ、図１のネットワーク１０６上に配置されたメモリ、その他に保存し、そこからペアレントＤＭＳ１２６によって取り出すことができる。
【００３３】
図５に図示した例では、ペアレントＤＭＳ１２６は、ソース・デバイス１０２およびクライアント・デバイス１０４への参照を含むリクエスト５０４を受信することにより開始する。次にペアレントＤＭＳ１２６は、リクエスト５０４からブロック５１２の分散トポロジ５１４を決定し、次に分散トポロジ５１４を使用して、ブロック５１８の分散ソフトウェア・インフラストラクチャ５２０を構築することができる。ブロック５０２、５０６、５１２、５１８で説明する工程は、ユーザの介入を必要とせず、ペアレントＤＭＳ１２６によって自動的に実行することができる。ペアレントＤＭＳ１２６は、リモート・ソース分散トポロジ（remote source distributed topology）、リモート・シンク分散トポロジ（remote sink distributed topology）、およびサード・パーティ分散トポロジ（third party distributed topology）など、様々な分散トポロジを決定することができ、その各々について、以下のセクションで詳しく説明する。
【００３４】
リモート・ソース分散トポロジ
図６、図７、および図８は、リモート・ソース分散トポロジ決定の様子を示している例示的な実装を説明する図である。リモート・ソース分散トポロジとは、ストリーミング・データのソース・デバイス１０２が、ペアレントＤＭＳ１２６をホストするクライアント・デバイス１０４から遠隔の場所にある、すなわちデバイス境界４０４の向こう側にある場合の分散トポロジのことである。ペアレントＤＭＳ１２６は、クライアント・デバイス１０４によって実行され、分散トポロジを決定する。アプリケーション２０８もまた、クライアント・デバイス１０４上で実行される。図７に示す実装では、ソース・デバイス１０２は、カメラ１０８ａとカメラ・ソフトウェア・コンポーネント６０２を含み、クライアント・デバイス１０４は、レンダリング・デバイス１２４とディスプレイ・ソフトウェア・コンポーネント６０４を含む。
【００３５】
図６は、図５の手順５００のブロック５１２における分散トポロジ決定の様子を示している例示的な実装を説明する図である。ペアレントＤＭＳ１２６は最初に、カメラ・ソフトウェア・コンポーネント６０２とディスプレイ・ソフトウェア・コンポーネント６０４を含む分散トポロジ６０６を生成する。カメラ・ソフトウェア・コンポーネント６０２は、カメラ１０８ａに含まれる、データをストリーミング送信するローカル・ソフト・ウェア・コンポーネントなど、図７のカメラ１０８ａの能力、およびカメラ１０８ａのネットワーク・アドレスを参照する。同様に、ディスプレイ・ソフトウェア・コンポーネント６０４を使用して、レンダリング・デバイス１２４に、データをレンダリングするためにどのようなローカル・ソフトウェア・コンポーネントが含まれるかなど図７のレンダリング・デバイス１２４の能力、およびレンダリング・デバイス１２４のネットワーク・アドレスを参照することができる。
【００３６】
図６の分散トポロジ６０６は、ストリーミング・データを提供するのに使用されるソフトウェア・コンポーネントはそのすべてが参照されていないので、部分的である。先に述べたように、分散トポロジ６０６は、分散ソフトウェア・インフラストラクチャのためのプランであり、そのため、実装される実際のソフトウェア・コンポーネントを含んでいない。例えば、分散トポロジ６０６は、図７のカメラ１０８ａからレンダリング・デバイス１２４にデータをストリーミング送信するための分散ソフトウェア・インフラストラクチャを提供するためにペアレントＤＭＳ１２６によって使用される、ソフトウェア・コンポーネントを参照する。ペアレントＤＭＳ１２６は、これらの参照を使用して、分散トポロジ６０６で参照されるソフトウェア・コンポーネントを供給し、図５に関して説明した分散ソフトウェア・インフラストラクチャを構築することができる。
【００３７】
図７に示す例では、カメラ１０８ａとレンダリング・デバイス１２４は、互いにローカルには接続されておらず、代わりに図１に示すネットワーク１０６を介して接続されている。「リモート・アクセスおよび統合」と題するセクションおよび図３で説明したように、統合には、チャイルドＤＭＳ３０２に制御を委任することによる、分散トポロジ６０６を分割することを含み、チャイルドＤＭＳ３０２は、分散ソフトウェア・インフラストラクチャにおいてデータをストリーミング送信するのに使用されるローカル・ソフトウェア・コンポーネントを制御する。例えば、図７に示すように、分散トポロジ６０６は、デバイス境界４０４によってクライアント・デバイス１０４から隔てられたリモート・ソース、すなわちソース・デバイス１０２上で生成されるチャイルドＤＭＳ７０２を含むように分割される。
【００３８】
チャイルドＤＭＳ７０２は、やはり決定工程で決定される、分散トポロジ６０６の部分７０４を含む。例えば、部分７０４の決定には、チャイルドＤＭＳ７０２を介してペアレントＤＭＳ１２６によって制御されるソフトウェア・コンポーネントであるトランスミッタ７０６への参照の追加が含まれる。同様に、分散トポロジ６０６の決定には、ペアレントＤＭＳ１２６によって直接制御されるソフトウェア・コンポーネントであるレシーバ７０８への参照の追加を含むこともある。トランスミッタ７０６は、デバイス境界４０４を越えて、データをストリーミング送信する。レシーバ７０８は、デバイス境界４０４を越えてストリーミング送信されたデータを受信する。データは、様々な方法で、トランスミッタ７０６とレシーバ７０８の間でストリーミング送信することができる。例えば、トランスミッタ７０６は、ネットワーク・アドレスにデータをストリーミング送信するなどにより、データをレシーバ７０８に「プッシュ（push）」することができる。またレシーバ７０８は、ネットワーク・アドレスからデータ・ストリームを取得するなどにより、データをトランスミッタ７０６から「プル（pull）」することができる。
【００３９】
図８には、完全に決定された（fully resolved）、図６〜図７の分散トポロジ６０６が示されている。この例では、カメラ・ソフトウェア・コンポーネント６０２からトランスミッタ７０６へのデータのストリーミング送信を制御するために、分散トポロジ６０６の部分７０４内でメディア・エンジン８０２が参照されている。別のメディア・エンジン８０４が、レシーバ７０８からディスプレイ・ソフトウェア・コンポーネント６０４へのデータのストリーミング送信を制御するために、分散トポロジ６０６に含まれている。図８における矢印は、データのストリーミングを表す。
【００４０】
図９は、図８に示す分散トポロジ６０６内のソフトウェア・コンポーネントに関する制御９００の階層図である。図８に示すように分散トポロジ６０６は、ペアレントＤＭＳ１２６がその分散トポロジに属するすべてのソフトウェア・コンポーネントを制御するように決定される。したがって、ペアレントＤＭＳ１２６は、分散トポロジ６０６から構築される分散ソフトウェア・インフラストラクチャを制御する。例えば、ペアレントＤＭＳ１２６は、チャイルドＤＭＳ７０２を使用することによって、カメラ・ソフトウェア・コンポーネント６０２、メディア・エンジン８０２、およびトランスミッタ７０６を制御する。この場合、チャイルドＤＭＳ７０２は、図７に示すようにソース・デバイス１０２上に存在する。ペアレントＤＭＳ１２６はまた、図７に示すように、ペアレントＤＭＳ１２６と共にクライアント・デバイス１０４上に含まれる、レシーバ７０８、メディア・エンジン８０４、および表示ソフトウェア・コンポーネント６０４を制御する。したがって、ペアレントＤＭＳ１２６は、分散トポロジ６０６から構築できる分散ソフトウェア・インフラストラクチャを制御し、この制御を、メディア・エンジン２１８を介してペアレントＤＭＳ１２６と対話するアプリケーション２０８に提供することができる。
【００４１】
リモート・シンク分散トポロジ
図１０は、決定されたリモート・シンク分散トポロジ１０００を示している例示的な実装を説明する図である。リモート・シンク分散トポロジ１０００とは、クライアント・デバイス１０４が、ペアレントＤＭＳ１２６を実行するソース・デバイス１０２から遠隔の場所にある、すなわちデバイス境界４０４の向こう側にある場合の分散トポロジのことである。ペアレントＤＭＳ１２６は、分散トポロジを決定するために、ソース・デバイス１０２によって実行される。リモート・シンク方式の場合の分散トポロジは、実際上、図６〜図９に関して説明したリモート・ソース方式の場合の鏡像（mirror image）に相当する。
【００４２】
図６〜図９に示す先の実装で説明したように、カメラ１０８ａのカメラ・ソフトウェア・コンポーネント６０２とレンダリング・デバイス１２４の表示ソフトウェア・コンポーネント６０４を参照する分散トポロジ１００２が決定される。以前のように、ペアレントＤＭＳ１２６は、ペアレントＤＭＳ１２６をホストするソース・デバイス１０２からデバイス境界４０４によって隔てられたクライアント・デバイス１０４上で、チャイルドＤＭＳ１００４を生成することによって、分散トポロジ１００２を分割する。チャイルドＤＭＳ１００４は、分散トポロジ１００２の部分１００６を含む。分散トポロジ１００２は、ソース・デバイス１０２に含まれるトランスミッタ１００８およびにメディア・エンジン１０１０、ならびにクライアント・デバイス１０４に含まれるレシーバ１０１２およびメディア・エンジン１０１４を参照する。
【００４３】
図１１は、図１０に示すリモート・シンク分散トポロジ１０００内で指定されるソフトウェア・コンポーネントに関する制御１１００の階層図である。ペアレントＤＭＳ１２６は、図１０の分散トポロジ１００２から形成することができる分散ソフトウェア・インフラストラクチャを制御する。例えば、ペアレントＤＭＳ１２６は、カメラ・ソフトウェア・コンポーネント６０２、メディア・エンジン１０１０、およびトランスミッタ１００８を直接に制御する。ペアレントＤＭＳ１２６はまた、図１０に示すように、チャイルドＤＭＳ７０２と共にクライアント・デバイス１０４上に含まれる、レシーバ１０１２、メディア・エンジン１０１４、および表示ソフトウェア・コンポーネント６０４を制御する。したがって、ペアレントＤＭＳ１２６は、分散トポロジ１００２から構築できる分散ソフトウェア・インフラストラクチャを制御する。アプリケーション２０８は、メディア・エンジン２１８を介してペアレントＤＭＳ１２６と対話して、図１０の分散トポロジ１００２から形成される分散ソフトウェア・インフラストラクチャを制御することができる。
【００４４】
リモート・ソース分散トポロジおよびリモート・シンク分散トポロジに関する先の実装ではいずれも、ペアレントＤＭＳ１２６が、分散トポロジから形成される分散ソフトウェア・インフラストラクチャ全体に対する制御を提供する。しかし、以下のセクションで説明するように、分散ソフトウェア・インフラストラクチャ全体に対する制御が提供されない例もあり得る。
【００４５】
分散トポロジで使用されるソースおよびシンク・プロキシ・ソフトウェア・コンポーネント
図１２は、プロキシ（proxy）１２０２の例示的な実装１２００を説明する図である。プロキシ１２０２は、ソフトウェア・コンポーネントであり、ペアレントＤＭＳ１２６（図示せず）は、これを介して、アプリケーション２０８が、アプリケーション２０８とは異なるデバイス、例えば、デバイス境界４０４の向こう側のデバイス、に配置されたソフトウェア・コンポーネント１２０４と対話を行えるようにする。プロキシ１２０２は、ストリーミング・データを、そのデータがローカル・ソフトウェア・コンポーネント２１０を使用してローカルに提供されるかのように、アプリケーション２０８に提供するのに利用される。したがって、アプリケーション２０８は、カメラ１０８ａおよびその対応ソフトウェア・コンポーネント１２０４がクライアント・デバイス１０４上で実行されているかのように、カメラ１０８ａからのストリーミング・データを受信することができる。
【００４６】
図１３は、プロキシ１２０２のさらなる例示的な実装１３００を説明する図である。プロキシ１２０２はまた、データを受信し、そのデータを、デバイス境界４０４を越えてソフトウェア・コンポーネント１３０２に、ストリーミング送信するのにも利用される。例えば、プロキシ１２０２は、ソフトウェア・コンポーネント１３０２がソース・デバイス１０２上で実行されるローカル・ソフトウェア・コンポーネント２１０であるかのように、データをレンダリング・デバイス１２４に表示するためソフトウェア・コンポーネント１３０２にストリーミング送信することができる。
【００４７】
プロキシ１２０２は、分散ソフトウェア・インフラストラクチャに属するすべてのソフトウェア・コンポーネントの制御がペアレントＤＭＳ１２６（図示せず）によって提供されない場合に、利用することができる。したがって、プロキシ１２０２の使用を通して、統合モデルは、ペアレントＤＭＳ１２６によって分散トポロジを決定する際には利用されるが、図６〜図１１に関する場合でのように、制御（の目的で）で利用されることはない。
【００４８】
図１４は、ソース・プロキシ（source proxy）１４０２の例示的な実装１４００を示した図である。ソース・プロキシ１４０２は、ペアレントＤＭＳ１２６とレシーバ１４０４を含む。ペアレントＤＭＳ１２６は、図１２に示すようにソース・デバイス１０２上に存在するリモート・ソフトウェア・コンポーネントを制御するのに使用される。レシーバ１４０４は、先に説明したようにトランスミッタ（図示せず）によってレシーバ１２０６にストリーミング送信されるデータを受信する。
【００４９】
図１５は、シンク・プロキシ（sink proxy）１５０２の例示的な実装１５００を示した図である。シンク・プロキシ１５０２は、図１３に示すようにクライアント・デバイス１０４上に存在するソフトウェア・コンポーネント１３０２を制御するのに使用されるペアレントＤＭＳ１２６を含む。トランスミッタ１５０４は、先に説明したようにレシーバ（図示せず）にデータをストリーミング送信する。シンク・プロキシ１５０２は、データのソースとして動作するソフトウェア・コンポーネントを制御するペアレントＤＭＳ１２６を使用せずに、ソフトウェア・コンポーネントからデータをストリーミング送信するのに使用することができる。
【００５０】
図１６は、ソース・プロキシ１６０２を含むリモート・ソース分散トポロジ１６００を示している例示的な実装を説明する図である。アプリケーション２０８およびメディア・エンジン２１８は、図６〜図９に示すリモート・ソース分散トポロジで説明したように、クライアント・デバイス１０４上で実行される。しかし、この場合は、データをストリーミング送信するよう求めるリクエストをアプリケーション２０８から受信するペアレントＤＭＳ１２６は、データのストリーミング送信に関与するソース・デバイス１０２のそれぞれのソフトウェア・コンポーネントの制御に使用されないであろう。言い換えれば、ペアレントＤＭＳ１２６は、分散トポロジから構築された分散ソフトウェア・インフラストラクチャ全体の制御に影響を与えないだろう。したがって、分散トポロジを決定する時、ペアレントＤＭＳ１２６は、データがペアレントＤＭＳ１２６によって制御されないソフトウェア・コンポーネントにストリーミング送信されるように、ソース・プロキシ１６０２を参照する。
【００５１】
ペアレントＤＭＳ１２６は、ソース・デバイス１０２からペアレントＤＭＳ１２６をホストするクライアント・デバイス１０４にデータをストリーミング送信するために、ソース・デバイス１０２上に存在するソフトウェア・コンポーネントに対する制御を提供する。例えば、ペアレントＤＭＳ１２６は、メディア・エンジン１６０８を使用して、ソース・ソフトウェア・コンポーネント１６０４およびトランスミッタ１６０６を制御することができる。トランスミッタ１６０６は、先に説明したように、レシーバ１６１０にデータをストリーミング送信する。しかし、ペアレントＤＭＳ１２６は、この例ではシンク（sink）１６１２と呼ばれる、データ送信先に対する制御は行わない。シンク１６１２は、ペアレントＤＭＳ１２６によって制御されないデータ送信先を示すために図示された、ソフトウェア・コンポーネントである。したがって、ペアレントＤＭＳ１２６は、シンク１６１２を制御することなく、単にデータをシンク１６１２にストリーミング送信する。アプリケーション２０８にとってリモートな、例えば、ソース・デバイス１０２上に配置されたソフトウェア・コンポーネントをペアレントＤＭＳ１２６が制御しているにもかかわらず、アプリケーション２０８は、ソース・プロキシ１６０２がローカル・ソフトウェア・コンポーネント１６１４であるかのように、ソース・プロキシ１６０２と対話することができる。
【００５２】
図１７は、図１６に示すようなリモート・ソース分散トポロジ１６００における制御の階層１７００を示した図である。リモート・ソース分散トポロジ１６００では、ペアレントＤＭＳ１２６は、先に説明したように、メディア・エンジン１６０８、ソース・ソフトウェア・コンポーネント１６０４、トランスミッタ１６０６、およびレシーバ１６１０に対する制御を提供する。ペアレントＤＭＳ１２６はシンク１６１２の制御をしないので、ペアレントＤＭＳ１２６は、シンク１６１２を、データがそこへストリーミング送信されるが、制御はされない出口（outlet）として認識する。
【００５３】
図１８は、シンク・プロキシ１８０２を含むリモート・シンク分散トポロジ１８００の例示的な実装を示した図である。リモート・シンク分散トポロジ１８００は、リモート・ソース分散トポロジ１６００に類似している。この実装では、アプリケーション２０８およびメディア・エンジン２１８が、図１０〜図１１に示すリモート・シンク分散トポロジに関して説明したように、ソース・デバイス１０２上で実行される。
【００５４】
データをストリーミング送信するよう求めるリクエストをアプリケーション２０８から受信するペアレントＤＭＳ１２６は、分散ソフトウェア・インフラストラクチャにおいて、データのストリーミング送信に関与するクライアント・デバイス１０４のすべてのソフトウェア・コンポーネントを制御するのに使用されるわけではない。したがって、ペアレントＤＭＳ１２６は、ストリーミング送信されたデータを、ペアレントＤＭＳ１２６が制御しないソフトウェア・コンポーネントを利用して受信できるように、リクエストに応答してシンク・プロキシ１８０２を参照する。
【００５５】
ペアレントＤＭＳ１２６は、ソース・デバイス１０２からストリーミング送信されたデータを受信するクライアント・デバイス１０４上に存在する、ソフトウェア・コンポーネントに対する制御を提供する。例えば、ペアレントＤＭＳ１２６は、メディア・エンジン１８０８を使用して、レシーバ１８０４およびクライアント・ソフトウェア・コンポーネント１８０６を制御する。トランスミッタ１８１０は、先に説明したように、レシーバ１８０４にデータをストリーミング送信するのに使用される。しかし、ペアレントＤＭＳ１２６は、この例ではオリジン（origin）１８１２と呼ばれる、データをストリーミング送信するすべてのソフトウェア・コンポーネントを制御するわけではない。したがって、ペアレントＤＭＳ１２６は、オリジン１８１２を制御することなく、単にデータをオリジン１８１２から受信する。アプリケーション２０８は、ローカル・ソフトウェア・コンポーネント１８１４として、シンク・プロキシ１８０２を認識することができる。
【００５６】
図１９は、図１８に示すようなリモート・シンク分散トポロジ１８００における制御の階層１９００を示した図である。ペアレントＤＭＳ１２６は、メディア・エンジン１８０８、クライアント・ソフトウェア・コンポーネント１８０６、レシーバ１８０４、およびトランスミッタ１８１０に対する制御を提供する。ペアレントＤＭＳ１２６はオリジン１８１２を制御しないので、ペアレントＤＭＳ１２６は、オリジン１８１２を、データをそこから受信するが、ペアレントＤＭＳ１２６はそれを制御しない入口（inlet）として認識する。
【００５７】
サード・パーティ分散トポロジ
図２０は、ソース・デバイス１０２およびクライアント・デバイス１０４とネットワーク１０６を介して通信可能に結合されたサード・パーティ（第三者）デバイス２００２を含むシステム２０００が示されている例示的な実装を説明する図である。先の実装では、ソース・デバイス１０２またはクライアント・デバイス１０４のどちらかによって決定および制御が提供される、分散トポロジを説明した。サード・パーティ・デバイス２００２を利用し、ペアレントＤＭＳ１２６によって提供される統合手法を使用して、ペアレントＤＭＳ１２６を実行することもできる。したがって、サード・パーティ・デバイス２００２を利用して、ソース・デバイス１０２からクライアント・デバイス１０４にデータをストリーミング送信するための分散トポロジを決定することができる。
【００５８】
図２１は、サード・パーティ分散トポロジ２１００が示された例示的な実装を説明する図である。サード・パーティ・デバイス２００２は、ソース・デバイス１０２からクライアント・デバイス１０４にデータをストリーミング送信するよう求めるリクエストを、メディア・エンジン２１８を経て、アプリケーション２０８から受信するペアレントＤＭＳ１２６を実行する。ペアレントＤＭＳ１２６は、ソース・デバイス１０２を含む分散トポロジの一部分を決定する第１のチャイルドＤＭＳ２１０２を生成する。第１のチャイルドＤＭＳ２１０２は、ソース・デバイス１０２に含まれるソフトウェア・コンポーネントに対する制御を提供する。ペアレントＤＭＳ１２６はまた、クライアント・デバイス１０４の分散トポロジの一部分を決定する第２のチャイルドＤＭＳ２１０４を生成する。第２のチャイルドＤＭＳ２１０４は、クライアント・デバイス１０４に含まれるソフトウェア・コンポーネントに対する制御を提供する。
【００５９】
第１のチャイルドＤＭＳ２１０２は、メディア・エンジン２１１０によって制御される、ソース・ソフトウェア・コンポーネント２１０６とトランスミッタ２１０８を参照する。第２のチャイルドＤＭＳ２１０４は、メディア・エンジン２１１６によって制御される、レシーバ２１１２とクライアントソフトウェアコンポーネント２１１４を参照する。図２２は、図２１に示すサード・パーティ分散トポロジ２１００における制御の階層２２００を説明する図である。階層２２００は、ペアレントＤＭＳ１２６が、第１のチャイルドＤＭＳ２１０２と第２のチャイルドＤＭＳ２１０４に対する制御を提供することを示している。第１のチャイルドＤＭＳ２１０２は、ソース・ソフトウェア・コンポーネント２１０６、トランスミッタ２１０８、およびメディア・エンジン２１００に対する制御を提供する。第２のチャイルドＤＭＳ２１０４は、レシーバ２１１２、クライアントソフトウェアコンポーネント２１１４、およびメディア・エンジン２１１６に対する制御を提供する。
【００６０】
サード・パーティ制御分散トポロジ２１００は、様々な方法で構成することができる。図２１に示す例では、ペアレントＤＭＳ１２６が、ソース・デバイス１０２およびクライアント・デバイス１０４上に配置された、ソフトウェア・コンポーネントに対する制御を提供する。図２０のサード・パーティ・デバイス２００２はまた、ペアレントＤＭＳ１２６を実行して、ソース・デバイス１０２またはクライアント・デバイス１０４のどちらかによって制御が提供される分散トポロジを決定することができる。また、図２１に示す例示の実装では、サード・パーティ・デバイス２００２を経由してストリーミング送信されることはなく、データはソース・デバイス１０２からクライアント・デバイス１０４にストリーミング送信されることに留意されたい。このようにして、サード・パーティ・デバイス２００２は、それ自体は実際にデータをストリーミング送信せずに、データをストリーミング送信する分散トポロジを決定することができる。追加の実装では、データは、ソース・デバイス１０２からサード・パーティ・デバイス２００２を経由してクライアント・デバイス１０４にストリーミング送信される。
【００６１】
複数のストリームを有する分散トポロジ
これまでの実装では、説明を分かり易くするため、単一のデータ・ストリームに関して説明したが、ペアレントＤＭＳ１２６によって、複数のデータ・ストリームをストリーミング送信することができる。例えば、複数のソース・デバイスを利用して、そのソース・デバイスの各々が単一のクライアント・デバイスにデータをストリーミング送信することができる。さらに、単一のソース・デバイスが、１つまたは複数のクライアント・デバイスに複数のデータ・ストリームをストリーミング送信することができる。同様に、複数のクライアント・デバイスが、ソース・デバイスから単一のデータ・ストリームを受信することができる。複数ストリームのストリーミング・データを使用する１つの例について説明するが、先に説明した分散トポロジおよび分散ソフトウェア・インフラストラクチャの各々は、複数のデータ・ストリームをサポートすることができる。
【００６２】
図２３は、複数のソース・デバイスがクライアント・デバイス１０４にデータをストリーミング送信するシステム２３００の例示的な実装を説明する図である。システム２３００は、ネットワーク対応カメラとして構成された第１のソース・デバイス２３０２を含むことができ、例えば、このカメラは、ネットワーク１０６に通信可能に結合できる機能を含む。システム２３００はまた、ネットワーク対応マイクロホンなど、ネットワーク対応音声入力デバイスとして構成された第２のソース・デバイス２３０４を含むことができる。第１のソース・デバイス２３０２は、クライアント・デバイス１０４で使用する映像データをストリーミング送信し、第２のソース・デバイス２３０４は、音声データをストリーミング送信する。第１のソース・デバイス２３０２および第２のソース・デバイス２３０４は、汎用プラグ・アンド・プレイ（ＵＰｎＰ）など、様々な方法で構成することができる。
【００６３】
図２４は、図２３のシステム２３００で使用される分散トポロジを示している例示的な実装を説明する図である。クライアント・デバイス１０４は、クライアント・デバイス１０４でレンダリングするためのデータをストリーミング送信するよう、第１のソース・デバイス２３０２と第２のソース・デバイス２３０４に要求する、アプリケーション２０８を含む。ペアレントＤＭＳ１２６は、メディア・エンジン２１８を介して要求を受信して、音声および映像データをストリーミング送信するための分散トポロジを決定する。
【００６４】
ペアレントＤＭＳ１２６は、第１のチャイルドＤＭＳ２４０２を生成して、第１のソース・デバイス２３０２の分散トポロジの一部分を決定する。第１のチャイルドＤＭＳ２４０２はまた、第１のソース・デバイス２３０２に含まれるソフトウェア・コンポーネントに対する制御を提供する。さらに、ペアレントＤＭＳ１２６は、第２のチャイルドＤＭＳ２４０４を生成して、第２のソース・デバイス２３０２の分散トポロジの一部分を決定する。第２のチャイルドＤＭＳ２４０４はまた、第２のソース・デバイス２３０２に含まれるソフトウェア・コンポーネントに対する制御を提供する。
【００６５】
第１のチャイルドＤＭＳ２４０２は、カメラ・ソフトウェア・コンポーネント２４０６と、メディア・エンジン２４１０によって制御されるトランスミッタ２４０８を参照する。第２のチャイルドＤＭＳ２４０４は、音声ソフトウェア・コンポーネント２４１２と、メディア・エンジン２４１６によって制御されるトランスミッタ２４１４を参照する。ペアレントＤＭＳ１２６は、第１のチャイルドＤＭＳ２４０２と第２のチャイルドＤＭＳ２４０４を制御して、クライアント・デバイス１０４への音声および映像データのストリーミング送信を調整することができる。
【００６６】
最適化方式での分散トポロジの決定
図２５は、ストリーミング・データの扱うソース・デバイス１０２およびクライアント・デバイス１０４の能力に基づいた最適化方式で、ペアレントＤＭＳ１２６が分散トポロジを決定する、システム２５００の例示的な実装を説明する図ある。ソース・デバイス１０２は、データをローカルでレンダリングするため、ソース・デバイス１０２に含まれるソース周辺デバイス１０８から取得した生データ２５０２、すなわち未処理（生）のまたは未分析のデータのストリームを生成することができる。生データ２５０２は、データを効率的な方式で伝送および保存できるように、圧縮されて圧縮データ２５０４を形成する。圧縮データを取り扱うため、ソース・デバイス１０２は、圧縮データ２５０４を圧縮解除して圧縮解除されたデータ２５０６を取得する。圧縮解除されたデータ２５０６は次に、レンダリング工程を経て、レンダリング・データ２５０８、すなわち（表示、オーディオ・デバイスでの再生など）ユーザとやりとりする目に見える形式で出力するのに適したデータを形成する。
【００６７】
ペアレントＤＭＳ１２６は、ソース・デバイス１０２およびクライアント・デバイス１０４双方の能力を見いだすことで、最適化分散ソフトウェア・トポロジを提供する。例えば、図２５に示すように、ペアレントＤＭＳ１２６は、生データ２５０２から取得した圧縮データ２５０４をクライアント・デバイス１０４にストリーミング送信する分散トポロジを決定することができる。クライアント・デバイス１０４は次に、圧縮データ２５０４を圧縮解除して圧縮解除されたデータ２５１０を形成することができる。圧縮解除されたデータ２５１０は次にレンダリングされて、レンダリング・デバイス１２４で使用されるレンダリング・データ２５１２を形成する。
【００６８】
分散トポロジの最適化を用いて、データをストリーミング送信するのに使用されるリソースを分散させた、分散ソフトウェア・インフラストラクチャを提供することができる。例えば、圧縮解除およびレンダリングのための十分なハードウェア資源およびソフトウェア資源をもったソース・デバイス１０２を提供する代わりに、クライアント・デバイス１０４がこの機能を提供することができる。さらに、圧縮データ２５０４は、暗号化を含んだ方法で圧縮することができる。圧縮データ２５０４の暗号化を提供することで、データは符号化された状態にあり、したがって、ネットワーク１０６を介して安全にストリーミング送信することができる。
【００６９】
例示的な手順
図２６は、データをソース・デバイス１０２からクライアント・デバイス１０４にストリーミング送信する、ソフトウェア・コンポーネントからなる分散ソフトウェア・インフラストラクチャを構築する例示的な手順２６００を示したフローチャートである。ブロック２６０２で、リクエスト（要求）がアプリケーション２０８によって送信される。リクエストは、ストリーミング・データをソース・デバイス１０２からクライアント・デバイス１０４に伝送するための命令を含むことができる。リクエストは、データをストリーミング送信するための分散ソフトウェア・インフラストラクチャを構築するのに使用されるソフトウェア・コンポーネントの記述を含まないという点で、部分的トポロジと考えることができる。
【００７０】
ブロック２６０４で、ペアレントＤＭＳ１２６は、ソース・デバイス１０２およびクライアント・デバイス１０４の部分的トポロジを含むリクエストを受信する。ブロック２６０６で、ペアレントＤＭＳ１２６は、分散トポロジを決定する。分散トポロジは、ソース・デバイス１０２からネットワークを介してクライアント・デバイス１０４にデータをストリーミング送信するのに適したソフトウェア・コンポーネントを参照するプランである。
【００７１】
ブロック２６０８で、ペアレントＤＭＳ１２６は最初に、ソース・デバイス１０２およびクライアント・デバイス１０４の、ストリーミング・データの扱いに関する能力を見いだすことによって、分散トポロジの決定を開始する。能力には、ソース・デバイス１０２がレンダリングされるデータをストリーミング送信するのに使用されるソフトウェア・コンポーネント、およびクライアント・デバイス１０４がデータ・ストリームをレンダリングするのに使用されるソフトウェア・コンポーネントを含むことができる。これらの能力は、様々な方法で見いだすことができる。例えば、ペアレントＤＭＳ１２６は、ソース・デバイス１０２およびクライアント・デバイス１０４を調べて、データのストリーミング送信に関与するソフトウェア・コンポーネントのうちどれを含めるかを決定することができる。ペアレントＤＭＳ１２６はまた、ソース・デバイス１０２およびクライアント・デバイス１０４の能力についての記述を含むルックアップ・テーブルに問い合わせを行うこともできる。
【００７２】
ブロック２６１０で、ペアレントＤＭＳ１２６は、リクエストを遂行するのに適した複数のソフトウェア・コンポーネントを参照する分散トポロジを導き出す（取り出す）。分散トポロジは、すでにソース・デバイス１０２およびクライアント・デバイス１０４に含まれるソフトウェア・コンポーネントを参照でき、またソース・デバイス１０２からクライアント・デバイス１０４にデータをストリーミング送信するのに含まれる追加のソフトウェア・コンポーネントを参照することもできる。
【００７３】
ブロック２６１２で、ペアレントＤＭＳ１２６は、分散トポロジから、分散トポロジによって参照されるソフトウェア・コンポーネントを含む分散ソフトウェア・インフラストラクチャを構築する。例えば、ペアレントＤＭＳ１２６は、決定された分散トポロジに基づいて分散ソフトウェア・インフラストラクチャを構築するために、追加のソフトウェア・コンポーネントを供給することができる。したがって、ペアレントＤＭＳ１２６は、分散トポロジをプランとして使用して、分散トポロジによって参照されるソフトウェア・コンポーネントを供給する。ブロック２６１４で、ソース・デバイス１０２は、分散ソフトウェア・インフラストラクチャを使用して、クライアント・デバイス１０４にネットワークを介してデータをストリーミング送信する。ブロック２６１６で、クライアント・デバイス１０４は、データをレンダリングする。
【００７４】
例示的な動作環境
本明細書で説明した様々なコンポーネントおよび機能を、数々の個別のコンピュータで実装することができる。図２７には、参照番号２７０２で参照されるコンピュータを含む、コンピュータ環境２７００の典型的な一例の構成要素が示されている。様々な実装において、ソース・デバイス１０２、クライアント・デバイス１０４、および／またはサード・パーティ・デバイス２００２は、コンピュータ２７０２として構成することができる。図２７に示す構成要素は、単なる例に過ぎず、本発明の機能の範囲に関する何らかの限定を示唆しようとするものではない。本発明は、図２７に示す特徴に必ずしも依存するものではない。
【００７５】
一般に、様々な異なる汎用または専用コンピューティング・システム構成を使用することができる。本発明で使用するのに適した、周知のコンピューティング・システム、環境、および／または構成として、パーソナル・コンピュータ、サーバ・コンピュータ、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロ・プロセッサ・ベース・システム、セットトップボックス、プログラム可能家電製品、ネットワークＰＣ、ネットワーク対応デバイス、ミニ・コンピュータ、メインフレーム・コンピュータ、上記システムまたはデバイスのいずれかを含む分散コンピューティング環境、その他を挙げることができるが、これらに限定されるものではない。
【００７６】
コンピュータの機能は、多くの場合、ソフトウェア・コンポーネントなど、コンピュータによって実行されるコンピュータ実行可能命令によって実施される。一般に、ソフトウェア・コンポーネントには、特定のタスクを実行し、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。タスクはまた、通信ネットワークを介して接続されたリモート処理デバイスによっても実行される。分散コンピューティング環境では、ソフトウェア・コンポーネントは、ローカルおよびリモート・コンピュータ記憶媒体双方に配置することができる。
【００７７】
命令および／またはソフトウェア・コンポーネントは、コンピュータの一部の、またはコンピュータによって読み取り可能な様々なコンピュータ可読媒体に、様々な時に保存することができる。プログラムは一般に、例えば、フロッピ・ディスク（商標）、ＣＤ−ＲＯＭ、ＤＶＤ、または変調信号など何らかの形式の通信媒体で配布される。そこから、プログラムは、コンピュータの２次メモリにインストールまたはロードされる。実行時に、プログラムは、少なくとも部分的にコンピュータの１次電子的メモリにロードされる。
【００７８】
説明のため、プログラム、およびオペレーティング・システムなどのその他の実行可能プログラム・コンポーネントは、別個のブロックであるとして本明細書では説明するが、それらのプログラムおよびコンポーネントが様々な時にコンピュータの異なる記憶コンポーネントに存在し、コンピュータのデータ・プロセッサによって実行されることは理解されよう。
【００７９】
図２７を参照すると、コンピュータ２７０２の構成要素として、プロセッシング・ユニット２７０４、システム・メモリ２７０６、およびシステム・メモリなど様々なシステム構成要素をプロセッシング・ユニット２７０４に結合するシステム・バス２７０８を挙げることができるが、これらに限定されるものではない。システム・バス２７０８は、様々なバス・アーキテクチャのいずれかを使用する、メモリ・バスまたはメモリ・コントローラ、周辺バス、およびローカル・バスを始めとする複数のタイプのバス構造のうちの、任意のバス構造とすることができる。例えば、こうしたアーキテクチャとして、ＩＳＡ（業界標準アーキテクチャ）バス、ＭＣＡ（マイクロ・チャネル・アーキテクチャ）バス、ＥＩＳＡＡ（拡張ＩＳＡ）バス、ＶＥＳＡ（ビデオ電子規格協会）ローカル・バス、およびメザニン・バス（Mezzanine bus）としても知られるＰＣＩ（周辺コンポーネント相互接続）バスを挙げることができるが、これらに限定されるものではない。
【００８０】
コンピュータ２７０２は一般に、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ２７０２によってアクセス可能な任意の利用可能媒体とすることができ、揮発性および不揮発性媒体、着脱可能および着脱不能媒体を含む。例えば、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むが、これらに限定されるものではない。「コンピュータ記憶媒体」は、コンピュータ可読命令、データ構造、プログラム・モジュール、またはその他のデータといった情報を記憶するための任意の方法または技法によって実装される、揮発性および不揮発性媒体、着脱可能および着脱不能媒体を含む。コンピュータ記憶媒体として、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、またはその他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（デジタル多用途ディスク）、またはその他の光ディスク記憶、磁気カセット、磁気テープ、磁気ディスク記憶、またはその他の磁気記憶デバイス、あるいは所望の情報を記憶するのに使用でき、コンピュータ２７０２によってアクセス可能なその他の任意の媒体を挙げることができるが、これらに限定されるものではない。通信媒体は一般に、搬送波やその他の移送機構などの変調データ信号として、コンピュータ可読命令、プログラム・モジュール、またはデータ構造を実施し、任意の情報送達媒体を含む。「変調データ信号」という語は、信号中に情報を符号化できるような方式で設定または変更される１つまたは複数の信号特性をもつ信号を意味する。例えば、通信媒体として、有線ネットワークまたは直接線接続などの有線媒体、および音響、ＲＦ、赤外線、またはその他の無線媒体などの無線媒体が挙げられるが、これらに限定されるものではない。上記の任意の媒体の組合せも、コンピュータ可読媒体の範囲に含まれるものとする。
【００８１】
システム・メモリ２７０６は、ＲＯＭ（読み取り専用メモリ）２７１０やＲＡＭ（ランダム・アクセス・メモリ）２７１２などの、揮発性および／または不揮発性メモリの形態を取るコンピュータ記憶媒体を含む。ＲＯＭ２７１０には一般に、起動処理中などにコンピュータ２７０２内の要素間の情報伝送を助ける基本ルーチンを含む、基本入出力システム（ＢＩＯＳ）２７１４が記憶される。ＲＡＭ２７１２は一般に、プロセッシング・ユニット２７０４が直ちにアクセス可能な、かつ／またはやがてそれに基づいて動作するデータおよび／またはプログラム・モジュールを含む。例えば、図２７には、オペレーティング・システム２７１６、アプリケーション・プログラム２７１８、その他のソフトウェア・コンポーネント２７２０、およびプログラム・データ２７２２が示されているが、これらに限定されるものではない。
【００８２】
コンピュータ２７０２はまた、その他の着脱可能／着脱不能、揮発性／不揮発性コンピュータ記憶媒体を含む。図２７には、着脱不能な不揮発性磁気媒体に対して読み書きを行うハード・ディスク・ドライブ２７２４、着脱可能な不揮発性磁気ディスク２７２８に対して読み書きを行う磁気ディスク・ドライブ２７２６、ＣＤ−ＲＯＭやその他の光媒体など着脱可能な不揮発性光ディスク２７３２に対して読み書きを行う光ディスク・ドライブ２７３０が、例としてのみ示されている。例示的な動作環境で使用することができるその他の着脱可能／着脱不能、揮発性／不揮発性コンピュータ記憶媒体として、磁気テープ・カセット、フラッシュ・メモリ・カード、デジタル多用途ディスク、デジタル・ビデオ・テープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭ、その他を挙げることができるが、これらに限定されるものではない。ハード・ディスク・ドライブ２７２４は一般に、データ・メディア・インターフェース２７３４などの着脱不能メモリ・インターフェースを介してシステム・バス２７０８に接続され、磁気ディスク・ドライブ２７２６および光ディスク・ドライブ２７３０は一般に、着脱可能メモリ・インターフェースを介してシステム・バス２７０８に接続される。
【００８３】
上で説明し、図２７に示すドライブおよびそれに関連するコンピュータ記憶媒体は、コンピュータ２７０２のためのコンピュータ可読命令、データ構造、ソフトウェア・コンポーネント、およびその他のデータの記憶を可能とする。図２７には、例えば、オペレーティング・システム２７１６'、アプリケーション・プログラム２７１８'、その他のソフトウェア・コンポーネント２７２０'、およびプログラム・データ２７２２'を記憶するものとして、ハード・ディスク・ドライブ２７２４が示されている。これらのコンポーネントは、オペレーティング・システム２７１６、アプリケーション・プログラム２７１８、その他のソフトウェア・コンポーネント２７２０、およびプログラム・データ２７２２と同じであることもでき、異なることもできることに留意されたい。ここでは、オペレーティング・システム２７１６'、アプリケーション・プログラム２７１８'、その他のソフトウェア・コンポーネント２７２０'、およびプログラム・データ２７２２'には、少なくともそれらが異なるコピーであることを示すために、異なる番号が振られている。ユーザは、キーボード２７３６、および一般にマウス、トラック・ボール、またはタッチ・パッドと呼ばれるポインティング・デバイス（図示せず）などの入力デバイスを介して、コマンドおよび情報をコンピュータ２７０２に入力することができる。その他の入力デバイスとして、（ストリーミング・データを提供するマイクロホン２７３８、またはカメラ２７４０などの）ソース周辺デバイス、ジョイスティック、ゲーム・パッド、衛星放送用パラボラ・アンテナ、スキャナ、その他を挙げることができる。上記およびその他の入力デバイスはしばしば、システム・バスに結合された入出力（Ｉ／Ｏ）インターフェース２７４２を介してプロセッシング・ユニット２７０２に接続されるが、パラレル・ポート、ゲーム・ポート、またはＵＳＢ（汎用シリアル・バス）など、その他のインターフェースおよびバス構造によって接続することもできる。モニタ２７４４またはその他のタイプのディスプレイ・デバイスも、ビデオ・アダプタ２７４６などのインターフェースを介してシステム・バス２７０８に接続される。モニタ２７４４の他に、コンピュータは、Ｉ／Ｏインターフェース２７４２を介して接続できる、その他の周辺レンダリング・デバイス（例えば、スピーカ）や１つまたは複数のプリンタ２７４８などのその他の周辺出力デバイスも含むことができる。
【００８４】
コンピュータは、リモート・デバイス２７５０などの１つまたは複数のリモート・コンピュータへの論理コネクションを使用して、ネットワーク環境で動作することができる。リモート・デバイス２７５０は、パーソナル・コンピュータ、ネットワーク対応デバイス、サーバ、ルータ、ネットワークＰＣ、ピア・デバイス、またはその他の共通ネットワーク・ノードとすることができ、一般にコンピュータ２７０２に関連して上で説明した、多くのまたはすべての要素を含むことができる。図２７に示す論理コネクションは、ＬＡＮ（ローカル・エリア・ネットワーク）２７５２およびＷＡＮ（ワイド・エリア・ネットワーク）２７５４を含む。図２７に示すＷＡＮ２７５４はインターネットであるが、ＷＡＮ２７５４は、その他のネットワークを含むこともできる。こうしたネットワーク環境は、オフィスで、また企業規模のコンピュータ・ネットワーク、イントラネット、その他で一般的である。
【００８５】
ＬＡＮネットワーク環境で使用される場合、コンピュータ２７０２は、ネットワーク・インターフェースまたはアダプタ２７５６を介してＬＡＮ２７５２に接続される。ＷＡＮネットワーク環境で使用される場合、コンピュータ２７０２は一般に、モデム２７５８、またはインターネット２７５４を介して通信を確立するためのその他の手段を含む。モデム２７５８は、内蔵とも外付けともすることができ、Ｉ／Ｏインターフェース２７４２またはその他の適切な機構を介してシステム・バス２７０８に接続することができる。ネットワーク環境では、コンピュータ２７０２との関連で示したプログラム・モジュールまたはその部分は、リモート・デバイス２７５０に記憶することができる。例えば、図２７には、リモート・デバイス２７５０上に存在するものとして、リモート・ソフトウェア・コンポーネント２７６０が示されているが、それに限定されるものではない。図示のネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立するその他の手段も使用できることは理解されよう。
【００８６】
結論
本発明を構造的特徴および／または方法論的動作に特有の言葉で説明してきたが、添付の特許請求の範囲で定義される本発明が、説明した特有の構造または動作に必ずしも限定されるものではないことは理解されよう。むしろ、特有の構造および動作は、特許請求される本発明を実装した例示的な形態として開示されている。
【図面の簡単な説明】
【００８７】
【図１】ソース・デバイスからクライアント・デバイスにデータをストリーミング送信するためのペアレント分散メディア・セッション（ＤＭＳ）を含む、データのストリーミング送信を提供するシステムの例示的な実装を示した図である。
【図２】コンピューティング環境が図１のペアレントＤＭＳを利用してデータをストリーミング送信する例示的な実装を示した図である。
【図３】図１のペアレントＤＭＳとチャイルドＤＭＳとのペアレント−チャイルド関係の例示的な実装を示した図である。
【図４】図３のチャイルドＤＭＳを利用することによって、統合手法を用いてリモート・アクセス機能を提供するペアレントＤＭＳを示した例示的な実装を説明する図である。
【図５】図１のペアレントＤＭＳがソース・デバイスからクライアント・デバイスにデータをストリーミング送信するための分散ソフトウェア・インフラストラクチャを構築する例示的な手順を説明する図である。
【図６】図５の手順を利用したリモート・ソース分散トポロジの決定に関する例示的な実装を説明する図である。
【図７】図６のリモート・ソース分散トポロジに基づきさらに決定されたリモート・ソース分散トポロジの例示的な実装を説明する図である。
【図８】図７のリモート・ソース分散トポロジに基づき完全に決定されたリモート・ソース分散トポロジの、例示的な実装を説明する図である。
【図９】図８に示す例示的な実装における制御階層を説明する図である。
【図１０】図５の手順によって決定された例示的なリモート・シンク分散トポロジを説明する図である。
【図１１】図１０に示す例示的な実装における制御階層を説明する図である。
【図１２】図１のクライアント・デバイス上で実行されるプロキシの例示的な実装を説明する図である。
【図１３】図１のソース・デバイス上で実行されるプロキシの例示的な実装を説明する図である。
【図１４】ソース・プロキシとして構成された図１２のプロキシの例示的な実装を示した図である。
【図１５】シンク・プロキシとして構成された図１３のプロキシの例示的な実装を示した図である。
【図１６】図１４のソース・プロキシを含むリモート・ソース分散トポロジの例示的な実装を示した図である。
【図１７】図１６に示すようなリモート・ソース分散トポロジにおける制御階層を示した例示的な実装を説明する図である。
【図１８】図１５のシンク・プロキシを含むリモート・シンク分散トポロジの例示的な実装を示した図である。
【図１９】図１８に示すようなリモート・シンク分散トポロジにおける制御階層を示した例示的な実装を説明する図である。
【図２０】図１のネットワークを介してソース・デバイスおよびクライアント・デバイスと通信可能に結合されたサード・パーティ・デバイスを含むシステムを示した例示的な実装を説明する図である。
【図２１】図２０に示すシステム内に実装されるサード・パーティ分散トポロジの例示的な実装を示した図である。
【図２２】図２１に示した実装における制御階層の例示的な実装を示した図である。
【図２３】図１のクライアント・デバイスにデータをストリーミング送信する複数のソース・デバイスの例示的な実装を示した図である。
【図２４】図２３のシステムのために決定された分散トポロジの例示的な実装を示した図である。
【図２５】図５の手順を用いた分散メディア・セッションの実行が、ソース・デバイスおよびクライアント・デバイスのストリーミング・データの扱いに関する能力に基づいた最適化方式で、分散トポロジを決定するシステムの例示的な実装を示した図である。
【図２６】ソフトウェア・コンポーネントからなる分散ソフトウェア・インフラストラクチャを構築し、クライアント・デバイスによってレンダリングするためにデータをソース・デバイスからクライアント・デバイスにストリーミング送信する、例示的な手順を示したフローチャートである。
【図２７】例示的な動作環境を説明する図である。
【図１】
2007521526.tif 000003
【図２】
2007521526.tif 000004
【図３】
2007521526.tif 000005
【図４】
2007521526.tif 000006
【図５】
2007521526.tif 000007
【図６】
2007521526.tif 000008
【図７】
2007521526.tif 000009
【図８】
2007521526.tif 000010
【図９】
2007521526.tif 000011
【図１０】
2007521526.tif 000012
【図１１】
2007521526.tif 000013
【図１２】
2007521526.tif 000014
【図１３】
2007521526.tif 000015
【図１４】
2007521526.tif 000016
【図１５】
2007521526.tif 000017
【図１６】
2007521526.tif 000018
【図１７】
2007521526.tif 000019
【図１８】
2007521526.tif 000020
【図１９】
2007521526.tif 000021
【図２０】
2007521526.tif 000022
【図２１】
2007521526.tif 000023
【図２２】
2007521526.tif 000024
【図２３】
2007521526.tif 000025
【図２４】
2007521526.tif 000026
【図２５】
2007521526.tif 000027
【図２６】
2007521526.tif 000028
【図２７】
2007521526.tif 000029
【国際調査報告】
2007521526.tif 000030