(57)【特許請求の範囲】
【請求項１】
リアルタイム・メディア最適化を提供する方法であって、
リモート計算デバイスとのリモート・セッションを確立するステップと、
前記リモート・セッション中に、サーバを関与させることなくローカル計算デバイスと前記リモート計算デバイスとの間にメディア・パスを確立するステップと、
前記リモート・セッション中に、サーバ・パスを介して前記サーバを通じて前記リモート計算デバイスと非リアルタイム・メディア・データを交換するステップと、
前記リモート・セッション中に、前記サーバを関与させずに前記メディア・パスを介して前記リモート計算デバイスとリアルタイム・メディア・データを交換するステップと、
前記メディア・パスからの前記リアルタイム・メディア・データと前記サーバ・パスからの前記非リアルタイム・メディア・データとを同期させるステップであって、
前記サーバから、映像領域の位置および形状を受信するステップと、
前記メディア・パスから交換された前記リアルタイム・メディア・データをプロキシ・ウィンドウ上にレンダリングするステップであって、前記プロキシ・ウィンドウは、前記サーバから受信された前記映像領域の前記位置および前記形状を追跡するように構成される、ステップと、
前記プロキシ・ウィンドウを、前記ローカル計算デバイス上にメディア・データを表示するように構成されたユーザ・インターフェースと同期させるステップと、
を含む、ステップと、
を備える方法。
【請求項２】
請求項１に記載の方法であって、リモート・セッションを確立する前記ステップは、前記ローカル計算デバイスで動作するクライアントと、前記サーバで実行されるアプリケーションとの間にホップを確立するステップを備え、確立された前記ホップは前記サーバ・パス内にある、方法。
【請求項３】
請求項１に記載の方法であって、サーバ・パスを介して前記リモート計算デバイスと非リアルタイム・メディア・データを交換する前記ステップは、前記サーバ・パス中にある前記サーバへ非リアルタイム情報を送るステップを備える、方法。
【請求項４】
請求項１に記載の方法であって、サーバ・パスを介して前記リモート計算デバイスと非リアルタイム・メディア・データを交換する前記ステップは、前記サーバ・パス中にある前記サーバへ非リアルタイム情報を送るステップを備え、前記非リアルタイム情報は、前記ローカル計算デバイスの位置に対応する情報を含む、方法。
【請求項５】
請求項１に記載の方法であって、メディア・パスを介して前記リモート計算デバイスとリアルタイム・メディア・データを交換する前記ステップは、前記リアルタイム・メディア・データを捕獲し、エンコードし、送信するステップを備える、方法。
【請求項６】
請求項１に記載の方法であって、メディア・パスを介して前記リモート計算デバイスとリアルタイム・メディア・データを交換する前記ステップは、前記メディア・パスを介して前記リモート計算デバイスから前記リアルタイム・メディア・データを受信し、前記リアルタイム・メディア・データをデコードするステップを備える、方法。
【請求項７】
請求項１に記載の方法であって、メディア・パスを介して前記リモート計算デバイスとリアルタイム・メディア・データを交換する前記ステップは、１つのアドレス空間を別のアドレス空間へ再びマッピングするために、ネットワーク・アドレス情報を変更するステップを備える、方法。
【請求項８】
一組の命令を格納するコンピュータ読取可能メモリ記憶媒体であって、前記一組の命令は、実行されると、リアルタイム・メディア最適化を提供する方法を実施し、前記一組の命令によって実行される前記方法は、
ローカル計算デバイスとリモート計算デバイスとの間でのリモート・セッションを確立するステップと、
前記リモート・セッション中に、サーバを関与させることなく前記ローカル計算デバイスと前記リモート計算デバイスとの間にメディア・パスを確立するステップと、
前記リモート・セッション中に、サーバ・パスを介して、前記ローカル計算デバイスと前記リモート計算デバイスとの間で非リアルタイム・メディア・データを交換するステップであって、前記非リアルタイム・メディア・データを交換することは、前記サーバ・パス内の前記サーバを通じて前記非リアルタイム・メディア・データを送るステップを含むものである、非リアルタイム・メディア・データを交換するステップと、
前記リモート・セッション中に、前記メディア・パスを介して、前記ローカル計算デバイスと前記リモート計算デバイスとの間で音声および映像データを含むリアルタイム・メディア・データを交換するステップであって、前記リアルタイム・メディア・データを交換することは、前記サーバを関与させずに前記メディア・パスを通じて前記ローカル計算デバイスと前記リモート計算デバイスとの間で直接的に前記リアルタイム・メディア・データを交換するステップを含むものである、リアルタイム・メディア・データを交換するステップと、
前記メディア・パスからの前記リアルタイム・メディア・データと前記サーバ・パスからの前記非リアルタイム・メディア・データとを同期させるステップであって、
前記サーバから、映像領域の位置および形状を受信するステップと、
前記メディア・パスから交換された前記リアルタイム・メディア・データをプロキシ・ウィンドウ上にレンダリングするステップであって、前記プロキシ・ウィンドウは、前記サーバから受信された前記映像領域の前記位置および前記形状を追跡するように構成される、ステップと、
前記プロキシ・ウィンドウを、前記ローカル計算デバイス上にメディア・データを表示するように構成されたユーザ・インターフェースと同期させるステップと、
を含む、ステップと、
を備える、コンピュータ読取可能メモリ記憶媒体。
【請求項９】
請求項８に記載のコンピュータ読取可能メモリ記憶媒体であって、リモート・セッションを確立する前記ステップは、前記ローカル計算デバイスで動作するクライアントと、前記サーバで実行されるアプリケーションとの間にホップを確立するステップを備え、確立された前記ホップは前記サーバ・パス内にある、コンピュータ読取可能メモリ記憶媒体。
【請求項１０】
請求項８に記載のコンピュータ読取可能メモリ記憶媒体であって、前記メディア・パスは、前記ローカル計算デバイスで動作するクライアントで実行されるリモート・メディア・マネージャと、前記リモート計算デバイスとの間である、コンピュータ読取可能メモリ記憶媒体。
【請求項１１】
請求項８に記載のコンピュータ読取可能メモリ記憶媒体であって、メディア・パスを介して前記リモート計算デバイスとリアルタイム・メディア・データを交換する前記ステップは、前記リアルタイム・メディア・データを捕獲し、エンコードし、送信するステップを備える、コンピュータ読取可能メモリ記憶媒体。
【請求項１２】
請求項８に記載のコンピュータ読取可能メモリ記憶媒体であって、前記メディア・パスを介しての前記リモート計算デバイスとの、リアルタイム・メディア・データを交換する前記ステップは、前記メディア・パスを介して前記リモート計算デバイスから前記リアルタイム・メディア・データを受信し、前記リアルタイム・メディア・データをデコードし、デコードされた前記リアルタイム・メディア・データをレンダリングするステップを備える、コンピュータ読取可能メモリ記憶媒体。
【請求項１３】
リアルタイム・メディア最適化を提供するシステムであって、
メモリ・ストレージと、
前記メモリ・ストレージと結合される処理ユニットと
を備え、
前記処理ユニットは、リモート計算デバイスとのリモート・セッションを確立するように構成され、前記リモート・セッションを確立するように動作する前記処理ユニットは、
サーバが関与するサーバ・パスを確立し、
サーバが関与せず、前記リモート計算デバイスと直接に確立されるメディア・パスを確立する
ように動作するものであり、
前記処理ユニットは更に、
前記リモート・セッション中に、前記サーバ・パスを介して前記リモート計算デバイスと非リアルタイム・メディア・データを交換し、
前記リモート・セッション中に、前記メディア・パスを介して前記リモート計算デバイスとリアルタイム・メディア・データを交換し、
前記メディア・パスからの前記リアルタイム・メディア・データと前記サーバ・パスからの前記非リアルタイム・メディア・データとを同期させ、前記同期させることは、
前記サーバから、映像領域の位置および形状を受信すること、
前記メディア・パスから交換された前記リアルタイム・メディア・データをプロキシ・ウィンドウ上にレンダリングし、前記プロキシ・ウィンドウは、前記サーバから受信された前記映像領域の前記位置および前記形状を追跡するように構成されること、および
前記プロキシ・ウィンドウを、ローカル計算デバイス上にメディア・データを表示するように構成されたユーザ・インターフェースと同期させること
を含む、
ように構成される、
システム。
【発明の詳細な説明】
【技術分野】
【０００１】
リモート・セッションにおけるリアルタイム・メディア最適化。
【背景技術】
【０００２】
[001]  ビデオ会議では、音声および映像の遠隔通信を用いて、異なる場所にいる人々を集めてミーティングを行う。これは、個人事務所の２人の人間の間（ポイント・ツー・ポイント）での会話や、別々の場所にある大きい部屋に１人より多くの人間がいる場合のような幾つかのサイト（マルチポイント）を含んだ会話と同様に、簡単なものである。ビデオ会議は、ミーティング活動の音声および映像の送信に加えて、文書や、コンピュータで表示される情報や、ホワイトボードを共有するために使用することができる。
【発明の概要】
【０００３】
[002]  この概要は、概念を選択的に簡素な形で紹介するために提供されるものであり、それらの概念については「詳細な説明」の部分で更に説明する。この概要は、特許請求の範囲に記載する主題事項の鍵となる特徴や本質的な特徴を特定することを意図していない。また、この概要は、主題事項の範囲を限定するために使用することを意図したものでもない。
【０００４】
[003]  リアルタイム・メディア最適化を提供する。最初に、リモート計算デバイスとのリモート・セッションを確立する。次に、リモート・セッション中に、非リアルタイム・メディア・データを、サーバ・パス（サーバ経路）を介してリモート計算デバイスと交換する。更に、リモート・セッション中に、リアルタイム・メディア・データを、メディア・パス（メディア経路）を介してリモート計算デバイスと交換する。
【０００５】
[004]  上記の概要的な説明および下記の詳細な説明の双方とも、単なる例を示すものであり、説明を目的とするものである。従って、上記の概要的な説明および下記の詳細な説明は、制限を加えるものとして考慮すべきではない。更に、ここで述べられる構成や変形形態に加えて、更なる構成や変形形態を提供することもできる。例えば、実施形態を、詳細な説明に記載した構成を組み合わせたものや、それらの構成を部分的に組み合わせたものとすることもできる。
【０００６】
[005]  ここでの開示に含まれ且つ開示の一部を構成する添付の図面は、本発明の様々な実施形態を示す。
【図面の簡単な説明】
【０００７】
【図１】図１は、仮想化された環境のブロック図である。
【図２】図２は、リアルタイム・メディア・システムのブロック図である。
【図３】図３は、リアルタイム・メディア最適化を提供する方法のフローチャートである。
【図４】図４は、リアルタイム・メディア・システムのブロック図である。
【図５】図５は、計算デバイスを含むシステムのブロック図である。
【発明を実施するための形態】
【０００８】
[011]  以下の詳細な説明では、添付の図面を参照する。図面および以下の説明では、可能な範囲で、同じまたは類似のエレメントに関して同じ参照番号を使用している。以下に本発明の実施形態について説明するが、変形例、適応例、および他の実施例も可能である。例えば、図に示したエレメントに対しての代替や付加や変更を行うことができ、また、ここで説明する方法についても、段（工程）を代替したり、順を変更したり、更に段を加えたりすることにより、変更することもできる。従って、下記の説明は本発明を限定するものではない。本発明の適切な範囲は特許請求の範囲により定められる。
【０００９】
[012]  デスクトップの仮想化は、センシティブなデータおよびアプリケーションを有する企業において使用されている。そのような企業は、センシティブなデータおよびアプリケーションをクライアント側マシンに駐在させることができない（例えば、セキュリティに関する問題があるため）。従って、デスクトップの仮想化では、シン・クライアント（thin client）がクライアント側マシン上で動作し、センシティブなデータおよびアプリケーションは、企業により制御されるサーバ上で実行される。この状況では、アプリケーションがサーバで自動的に実行され、ユーザが見ることができるのは、クライアント側マシン上のユーザ・インターフェース（ＵＩ）のみである。従って、企業のシステム管理者が、サーバ側イメージを更新する。そのため、ユーザがサーバへログインしたときには、ユーザは、システム管理者が押しつけたい最新のソフトウェアを得ることになる。
【００１０】
[013]  図１は、仮想化環境１００のブロック図である。図１に示すように、デスクトップが仮想化されると、実際の処理は、クライアント側マシン１１０ではなくサーバ１０５で行われる。このようなアプリケーション（即ち、仮想化環境１００で実行されるアプリケーション）は、「仮想化アプリケーション」と呼ばれることもある。例えば、第１アプリケーション１１５および第２アプリケーション１２０は、実際にはサーバ１０５で実行されている。クライアント側マシン１１０は、第１アプリケーション１１５および第２アプリケーション１２０にそれぞれ対応する第１ユーザ・インターフェース１２５および第２ユーザ・インターフェース１３０を、レンダリングして表示する。仮想化アプリケーションは、非リアルタイムのアプリケーション（例えば、ワード・プロセッシングやスプレッドシートなど）に関して許容することができ、その場合、生のデータ（例えば、キー入力など）は、クライアント側マシンからサーバへ送られ、サーバで実行される仮想化アプリケーションが、ユーザ入力を受信してデータを処理する。
【００１１】
[014]  リアルタイム音声／映像会議アプリケーションは、上記の仮想化環境において仮想化アプリケーションとして実行することができる。リアルタイム音声／映像会議アプリケーションは、クライアント側マシンから捕獲した生の音声／映像データを取り入れ、そのデータをエンコードし、そのエンコードされたデータを、例えば有線で、送信する。更に、リアルタイム音声／映像会議アプリケーションは、エンコードされたデータのストリームをネットワークから受信し、そのエンコードされたデータのストリームをデコードし、そのデコードされたデータのストリームをクライアント側マシン上でレンダリングする。しかし、クライアント側マシンでローカルに実行される「非仮想化」リアルタイム・アプリケーションと比べた場合、仮想化したリアルタイム音声／映像会議アプリケーションでは、「仮想化」リアルタイム・アプリケーションが通る必要のある追加のホップ（hop、行程）（例えば、サーバを通る行程）がある。
【００１２】
[015]  非仮想化リアルタイム・アプリケーションにおいてリアルタイムの音声／映像の送信および受信を行う場合、全ての処理は、サーバではなくクライアント側マシンで行われる。例えば、クライアント側アプリケーションは、デバイスから音声／映像を捕獲し、エンコードし、それをクライアント側マシンから有線で送信する。非仮想化アプリケーションとは対照的に、仮想化リアルタイム・アプリケーションでは、捕獲した生の音声／映像データを、例えば、捕獲用デバイスを遠隔操作することによりサーバへ送信するか、または捕獲用デバイスからの生のデータ・ストリームを、リモート・デスクトップ・チャンネルを介してサーバへ送信する。更に、仮想化環境におけるサーバは、エンコードされたストリームを送信する。従って、仮想化環境では、音声／映像のパスに追加的なホップ（例えば、クライアント側マシンからサーバへの行程）がある。それらの追加的なホップは、リアルタイム音声／映像データの流れにおける遅延／レイテンシを増加させる。
【００１３】
[016]  図２は、本発明の実施形態に従ったリアルタイム・メディア・システム２００を示す。リアルタイム・メディア・システム２００は、第１クライアント側マシン２０５（例えば、ローカル計算デバイス）、第２クライアント側マシン２１０（例えば、リモート計算デバイス）、サーバ２１５、およびネットワーク２２０を備える。本発明の実施形態に従うと、非仮想化リアルタイム音声／映像会議は、第１クライアント側マシン２０５と第２クライアント側マシン２１０との間で、ネットワーク２２０を介して行われる。
【００１４】
[017]  本発明の実施形態がサーバ・パス（即ち、第１ホップ２２５および第２ホップ２３０）を使用する場合、第１クライアント側マシン２０５と第２クライアント側マシン２１０との間の音声／映像データのパスにおいて、追加的なホップ（例えば、第１クライアント側マシン２０５からサーバ２０５への行程と、サーバ２１５から第２クライアント側マシン２１０への行程）があることになる。そのような追加的なホップは、第１クライアント側マシン２０５と第２クライアント側マシン２１０との間でのリアルタイムの音声／映像データの流れにおいて、例えば、遅延／レイテンシを増加させる。
【００１５】
[018]  本発明の実施形態に従うと、上記の第１クライアント側マシン２０５と第２クライアント側マシン２１０との間でのリアルタイムの音声／映像データの流れにおける遅延／レイテンシは、そのリアルタイムの音声／映像データの流れにおいてサーバ２１５を含ませないことにより、避けることができる。例えば、音声／映像データを、サーバ２１５を介さないメディア・パス２３５を介して、第１クライアント側マシン２０５と第２クライアント側マシン２１０との間で送信することができる。しかし、メディア・パス２３５が確立されない場合や、メディア・パス２３５を確立した後に故障した場合、音声／映像データは、サーバ・パスを介して第１クライアント側マシン２０５と第２クライアント側マシン２１０との間で送信される。
【００１６】
[019]  第１クライアント側マシン２０５、第２クライアント側マシン２１０、およびサーバ２１５のうちの何れのものも、例えば、デスクトップ・コンピュータ、ノートブック・コンピュータ、モバイル・デバイス、スマートフォン、またはパーソナル・デジタル・アシスタントを含み得るが、これらに限定はされない。ネットワーク２２０は、第１クライアント側マシン２０５、第２クライアント側マシン２１０、およびサーバ２１５が通信を行えるようにするインターネットや他のタイプのネットワークを含む。第１クライアント側マシン２０５、第２クライアント側マシン２１０、およびサーバ２１５のうちの何れのものも、例えば、図５と関連して詳細に説明する計算デバイス５００を用いて、インプリメント（実施）することができる。
【００１７】
[020]  図３は、リアルタイム・メディア最適化を提供する本発明の実施形態に従った方法３００に含まれる段（ステージ）を概略的に記載するフローチャートである。方法３００は、上記のリアルタイム・メディア・システム２００を用いて実施できる。方法３００のステージの実施については、以下で詳細に説明する。
【００１８】
[021]  方法３００は、開始ブロック３０５から始まり、ステージ３１０へ進む。ステージ３１０では、第１クライアント側マシン２０５が、リモート計算デバイス（例えば、第２クライアント側マシン２１０）とのリモート・セッションを確立する。例えば、図４に示すように、アプリケーション４０５はサーバ２１５で実行される。アプリケーション４０５はビデオ会議アプリケーションを含む。リモート・セッションに従って、第１クライアント側マシン２０５で動作するシン・クライアントは、サーバ２１５で実行されるアプリケーション４０５に対応するユーザ・インターフェース４１５をレンダリングして表示する。アプリケーション４０５は、第１クライアント側マシン２０５と第２クライアント側マシン２１０との間でのリモート・セッションを完成させる。
【００１９】
[022]  方法３００は、第１クライアント側マシン２０５がリモート・セッションを確立するステージ３１０からステージ３２０へと進み、ステージ３２０において、リモート・セッション中に、第１クライアント側マシン２０５は、サーバ・パスを介してリモート計算デバイス（例えば、第２クライアント側マシン２１０）と、非リアルタイム・メディア・データを交換する。交換される非リアルタイム・メディア・データは、例えば、第１クライアント側マシン２０５と第２クライアント側マシン２１０との間でのビデオ会議セッションに対応する非音声データまたは非映像データである。例えば、非リアルタイム・メディア・データは、例えば、緊急の９１１コールに使用される第１クライアント側マシン２０５の位置に対応するデータを含むことができる。非リアルタイム・メディア・データは、クライアントおよびサーバの能力に関するデータを含むこともできるが、これに限定はされない。それらの能力は、２つのクライアント間での直接通信に影響を与えるように使用することができる。
【００２０】
[023]  ステージ３２０において第１クライアント側マシン２０５が非リアルタイム・メディア・データを交換すると、方法３００はステージ３３０へと続き、ステージ３３０において、第１クライアント側マシン２０５は、リモート・セッション中に、メディア・パス２３５を介してリモート計算デバイスと、リアルタイム・メディア・データを交換する。リアルタイム・メディア・データは、音声や映像のデータを含む。本発明の実施形態が、リアルタイム・メディア・データに関してサーバ・パス（即ち、第１ホップ２２５および第２ホップ）を使用する場合、第１クライアント側マシン２０５と第２クライアント側マシン２１０との間の音声／映像データのパスにおいて、追加的なホップ（例えば、第１クライアント側マシン２０５からサーバ２１５への行程と、サーバ２１５から第２クライアント側マシン２１０への行程）が存在することになる。それらの追加的なホップは、例えば、第１クライアント側マシン２０５と第２クライアント側マシン２１０との間でのリアルタイムの音声／映像データの流れの遅延／レイテンシを増加させ得る。
【００２１】
[024]  本発明の実施形態は、第１クライアント側マシン２０５にリモート・メディア・マネージャ（ＲＭＭ）（例えば、リモート・メディア・マネージャ・アプリケーション４１０）を備え、それにより、リアルタイム・メディア・データ（例えば、音声／映像や他の様式のものを付加することもできる）を捕獲し、エンコードし、サーバ２１５を関与させずにメディア・パス２３５で第１クライアント側マシン２０５から第２クライアント側マシン２１０へ直接的に送信することにより、上記の遅延／レイテンシを避けることができる。更に、ＲＭＭは、エンコードされたリアルタイム・メディア・データをネットワーク２２０から受信し（例えば、第２クライアント側マシン２１０からメディア・パス２３５を介して直接に送信される）、受信したエンコードされたリアルタイム・メディア・データをデコードし、第２クライアント側マシン２１０から受信してデコードされたリアルタイム・メディア・データを、ユーザ・インターフェース４１５へと直接的にレンダリングする。ＲＭＭは、サーバ２１５のアプリケーション４０５と関連して動作する。例えば、アプリケーション４０５は、第１クライアント側マシン２０５と接続された入力デバイス（例えば、カメラ４２０やマイクロフォン４２５）および出力デバイス（例えば、スピーカ４３０）を用いて、データの送信および受信を行う。ＲＭＭも、同じ入力デバイスおよび出力デバイスを使用することができる。従って、ＲＭＭは、入力デバイスおよび出力デバイスを共用するめに、サーバ２１５のアプリケーション４０５と関連して動作する。言い換えると、入力デバイスおよび出力デバイスは、メディア・パス２３５を介して送信／受信されるデータと、サーバ・パスを介して送信／受信されるデータとの双方のために共用される。
【００２２】
[025]  ＲＭＭがサーバ２１５のアプリケーション４０５と関連して動作する構成における別の例は、メディア・パス２３５からのデータとサーバ・パスからのデータとが同期をとられる例である。１つの例は、ジオメトリ・トラッキング（geometry tracking、幾何学的追跡）を含む。ジオメトリ・トラッキングは、映像をディスプレイ４１５上の表示すべき位置に配することを可能とする（映像データが、第２クライアント側マシン２１０から直接に送信されて、サーバ・パスを回避してメディア・パス２３５を介して、第１クライアント側マシン２０５へ直接に入来した場合）。例えばアプリケーション４０５は、映像領域の位置および形状の情報を、サーバ・パスを介して第１クライアント側マシン２０５へ送信する。次に、第１クライアント側マシン２０５は、アプリケーション４０５により送られた情報（例えば、位置および形状）を追跡する「プロキシ」ウィンドウに、映像（メディア・パス２３５から入来）をレンダリングする。アプリケーション４０５は、映像の位置および形状に関して発生し得る変化について連続的に監視し、その情報により第１クライアント側マシン２０５の更新を行い続ける。第１クライアント側マシン２０５は、アプリケーション４０５の情報により「プロキシ」ウィンドウの更新を行い続ける。このようにして、第１クライアント側マシン２０５での映像の表示の同期がとられる。
【００２３】
[026]  更に、リモート・セッション中にメディア・パス２３５を介してリモート計算デバイスとリアルタイム・メディア・データを交換する第１クライアント側マシン２０５は、第１クライアント側マシン２０５からリモート計算デバイスへのネットワーク・アドレス変換（ＮＡＴ）を行う。コンピュータ・ネットワークでは、ネットワーク・アドレス変換（ＮＡＴ）は、トラフィック・ルーティング・デバイスを通過するときにデータグラム（ＩＰ）・パケット・ヘッダのネットワーク・アドレス情報を変更するプロセスを含むが、これは、１つのＩＰアドレス空間を別のＩＰアドレス空間へ再びマッピングすることを目的とする。ステージ３３０において第１クライアント側マシン２０５がリアルタイム・メディア・データを交換した後、方法３００はステージ３４０で終了する。
【００２４】
[027]  本発明に従った実施形態は、リアルタイム・メディア最適化を提供するシステムを含む。システムは、メモリ・ストレージと、そのメモリ・ストレージに結合される処理ユニットとを備える。処理ユニットは、リモート計算デバイスとのリモート・セッションを確立するように動作できる。更に、処理ユニットは、リモート・セッション中に、サーバ・パスを介してリモート計算デバイスと非リアルタイム・メディア・データを交換するように動作し、かつ、リモート・セッション中に、メディア・パスを介してリモート計算デバイスとリアルタイム・メディア・データを交換するように動作する。
【００２５】
[028]  本発明に従った別の実施形態は、リアルタイム・メディア最適化を提供するシステムを含む。システムは、メモリ・ストレージと、そのメモリ・ストレージに結合される処理ユニットとを備える。処理ユニットは、ローカル計算デバイスとリモート計算デバイスとの間のリモート・セッションを確立するように動作できる。更に、処理ユニットは、リモート・セッション中に、サーバを含むサーバ・パスを介して、ローカル計算デバイスとリモート計算デバイスとの間で、非リアルタイム・メディア・データを交換するように動作する。更に、処理ユニットは、リモート・セッション中に、メディア・パスを介して、ローカル計算デバイスとリモート計算デバイスとの間で、音声データおよび映像データを含むリアルタイム・メディア・データを交換するように動作する。メディア・パス中にサーバは無い。
【００２６】
[029]  本発明に従った更に別の実施形態は、リアルタイム・メディア最適化を提供するシステムを含む。システムは、メモリ・ストレージと、そのメモリ・ストレージに結合される処理ユニットとを備える。処理ユニットは、リモート計算デバイスとのリモート・セッションを確立するように動作できる。リモート・セッションを確立するように動作する処理ユニットは、サーバ・パスを確立するように動作する。サーバ・パスにはサーバが含まれている。また、処理ユニットは、メディア・パスを確立するように動作する。サーバ・パスにはサーバが含まれておらず、メディア・パスはリモート計算デバイスと直接的に確立される。更に、処理ユニットは、リモート・セッション中に、サーバ・パスを介して、リモート計算デバイスと非リアルタイム・メディア・データを交換するように動作する。更に、処理ユニットは、リモート・セッション中に、メディア・パスを介して、リモート計算デバイスとリアルタイム・メディア・データを交換するように動作する。
【００２７】
[030]  図５は、計算デバイス５００を含むシステムのブロック図である。本発明の実施形態に従うと、上記のメモリ・ストレージおよび処理ユニットは、図５の計算デバイス５００などのような計算デバイスにおいて実施される。メモリ・ストレージおよび処理ユニットは、ハードウェア、ソフトウェア、およびファームウェアの任意の適切な組み合わせにより実現できる。更に、計算デバイス５００は、仮想マシンでも物理マシンでも動作できる。例えば、メモリ・ストレージおよび処理ユニットは、計算デバイス５００を用いて、または他の任意の計算デバイス５１８を計算デバイス５００と組み合わせて用いて、実現することができる。上記のシステム、デバイス、および処理装置は例であり、本発明の実施形態に従って、他のシステム、デバイス、および処理装置により上記のメモリ・ストレージおよび処理ユニットを構成することもできる。更に、計算デバイス５００は、上記のように、第１クライアント側マシン２０５や第２クライアント側マシン２１０のための動作環境を構成することができる。第１クライアント側マシン２０５や第２クライアント側マシン２１０は、別の環境でも動作することができ、計算デバイス５００に限定されない。
【００２８】
[031]  図５に関して、本発明の実施形態に従ったシステムは、計算デバイス５００などのような計算デバイスを含む。基本的な構成では、計算デバイス５００は、少なくとも１つの処理ユニット５０２およびシステム・メモリ５０４を含む。計算デバイスのコンフィギュレーションおよびタイプに応じて、システム・メモリ５０４は、揮発性メモリ（例えば、ランダム・アクセス・メモリ（ＲＡＭ））、不揮発性メモリ（例えば、リード・オンリ・メモリ（ＲＯＭ））、フラッシュ・メモリ、またはこれらのメモリの組み合わせを含むが、これらに限定はされない。システム・メモリ５０４は、オペレーティング・システム５０５、１以上のプログラミング・モジュール５０６、およびプログラム・データ５０７を含むことができる。オペレーティング・システム５０５は、例えば、計算デバイス５００の動作を制御するために適切なものである。１つの実施形態では、プログラミング・モジュール５０６は、例えば、リモート・メディア・マネージャ・アプリケーション４１０を含む。更に、本発明の実施形態は、グラフィックス・ライブラリ、他のオペレーティング・システム、または任意の他のアプリケーション・プログラムと関連して実施することができ、特定のアプリケーションやシステムに限定されない。この基本的な構成は、図５において破線５０８で囲んだコンポーネントとして示されている。
【００２９】
[032]  計算デバイス５００は更なる特徴や機能を有する。例えば、計算デバイス５００は、例えば、磁気ディスク、光ディスク、テープなどのような追加のデータ・ストレージ・デバイス（取り外し可能なものおよび／または取り外し不可能なもの）を含むこともできる。そのような追加のストレージは、図５において、取り外し可能ストレージ５０９および取り外し不可能ストレージ５１０として示している。計算デバイス５００はまた、通信接続５１６を含むことができ、この通信接続５１６により、デバイス５００は、例えば、インターネットやイントラネットなどのような分散型計算環境におけるネットワークを介して、他の計算デバイス５１８と通信することが可能となる。通信接続５１６は、通信媒体の一例である。
【００３０】
[033]  ここで使用する「コンピュータ読取可能媒体」という用語は、コンピュータ・ストレージ媒体を含む。コンピュータ・ストレージ媒体は、揮発性の媒体、不揮発性の媒体、取り外し可能な媒体、および取り外し不可能な媒体を含むことができ、これらの媒体は、情報を記憶する任意の方法や技術、例えば、コンピュータ読取可能命令、データ構造、プログラミング・モジュール、他のデータなどにより実現できる。システム・メモリ５０４、取り外し可能ストレージ５０９、および取り外し不可能ストレージ５１０は、全てコンピュータ・ストレージ媒体の例（即ち、メモリ・ストレージ）である。コンピュータ・ストレージ媒体は、ＲＡＭ、ＲＯＭ、電子的消去可能リード・オンリ・メモリ（ＥＥＰＲＯＭ）、フラッシュ・メモリや他のメモリ技術、ＣＤ−ＲＯＭ、デジタル・バーサタイル・ディスク（ＤＶＤ）や他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージや他の磁気ストレージ・デバイス、または情報を記憶するために使用でき且つ計算デバイス５００によりアクセス可能な任意の他の媒体などを含むが、これらに限定はされない。このようなコンピュータ・ストレージ媒体は、デバイス５００の一部であり得る。また、計算デバイス５００は、キーボード、マウス、ペン、音声入力デバイス、接触（タッチ）入力デバイスなどのような入力デバイス５１２（１以上）を有する。また、ディスプレイ、スピーカ、プリンタなどのような出力デバイス５１４（１以上）も有する。なお、上記のデバイスは例であり、他のものを使用することもできる。
【００３１】
[034]  また、ここで使用する「コンピュータ読取可能媒体」という用語は、通信媒体も含む。通信媒体には、コンピュータ読取可能命令、データ構造、プログラム・モジュール、変調されたデータ信号内のデータなどが埋め込まれる。変調されたデータ信号とは、搬送波や他のトランスポート機構などである。通信媒体は、任意の情報受渡媒体を含む。「変調されたデータ信号」という用語は、「変調されたデータ信号」という用語は、情報を信号内にエンコードするような様式で設定または変更されて１以上の特性を有する信号、を意味する。例えば、通信媒体は、有線ネットワークや直接有線接続などのような有線媒体と、音響、無線周波数（ＲＦ）、赤外線、および他のワイヤレスの媒体などのようなワイヤレス媒体とを含むが、これらに限定はされない。
【００３２】
[035]  上記のように、オペレーティング・システム５０５も含めて、多数のプログラム・モジュールおよびデータ・ファイルをシステム・メモリ５０４に記憶することができる。処理ユニット５０２で実行する際、プログラミング・モジュール５０６（例えば、リモート・メディア・マネージャ・アプリケーション４１０）は、例えば、上記の方法３００の１以上のステージを含む処理を行う。なお、上記の処理は例であり、処理ユニット５０２は他の処理を行うこともできる。本発明の実施形態に従って使用できる他のプログラミング・モジュールには、電子メールやコンタクト・アプリケーション（contacts application）、ワード・プロセッシング・アプリケーション、スプレッドシート・アプリケーション、データベース・アプリケーション、スライド・プレゼンテーション・アプリケーション、描画やコンピュータ支援のアプリケーションなどが含まれる。
【００３３】
[036]  本発明の実施形態に従うと、一般に、プログラム・モジュールは、ルーチン、プログラム、コンポーネント、データ構造、および他のタイプの構造などを含み、それらは、特定のタスクを行うか、または特定の抽象データ型を実現する。更に、本発明の実施形態は他のコンピュータ・システム構成を用いて実施することができ、他のコンピュータ・システム構成には、手持型のデバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースまたはプログラマブルの大衆消費電子製品、ミニコンピュータ、メインフレーム・コンピュータなどが含まれる。また、本発明の実施形態は分散型計算環境でも実施することができ、その場合、タスクは、通信ネットワークを通じてリンクされるリモート処理デバイスにより行われる。分散型計算環境では、プログラム・モジュールは、ローカルのメモリ・ストレージ・デバイスおよびリモートのメモリ・ストレージ・デバイスの双方に配されることができる。
【００３４】
[037]  更に、本発明の実施形態は電子回路で実施することができ、電子回路は、個別の電子エレメント、論理ゲートを含むパッケージ化または集積化された電子チップ、マイクロプロセッサを用いる回路、電子回路やマイクロプロセッサを含むシングル・チップなどを含む。また、本発明の実施形態は、例えば、ＡＮＤ、ＯＲ、ＮＯＴなどのような論理演算を行うことができる他の技術を用いて実施することができ、他の技術には、機械的技術、光学的技術、流体工学的技術、量子学的技術が含まれるが、これらに限定はされない。更に、本発明の実施形態は、汎用コンピュータや、任意の他の回路やシステムで実施することができる。
【００３５】
[038]  本発明の実施形態は、例えば、コンピュータ・プロセス（方法）、計算システム、または製造品として実現でき、製造品には、コンピュータ・プログラム製品やコンピュータ読取可能媒体などが含まれる。コンピュータ・プログラム製品は、コンピュータ記録媒体とすることができ、コンピュータ記録媒体は、コンピュータ・システムにより読取可能であり、コンピュータ・プロセスを実行するための命令のコンピュータ・プログラムがエンコードされたものである。また、コンピュータ・プログラム製品は、搬送体を伝搬する伝搬信号とすることがてき、この伝搬信号は、コンピュータ・システムにより読取可能であり、コンピュータ・プロセスを実行するための命令のコンピュータ・プログラムがエンコードされたものである。従って、本発明は、ハードウェアおよび／またはソフトウェア（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）で実現できる。言い換えると、本発明の実施形態は、コンピュータで使用可能または読取可能な記録媒体上のコンピュータ・プログラム製品の形態とすることができ、記録媒体には、コンピュータで使用可能または読取可能なプログラム・コードが埋め込まれており、プログラム・コードは、命令実行システムにより、または命令実行システムと関連して、使用される。コンピュータで使用可能または読取可能な媒体は任意の媒体とすることができるが、その任意の媒体は、命令実行システムにより、または命令実行システムと関連して使用されるプログラムの包含、記憶、通信、伝搬、またはトランスポートを行うことができるものとする。
【００３６】
[039]  コンピュータで使用可能または読取可能な記録媒体は、例えば、電子、磁気、光学、電磁、赤外線、または半導体の技術を用いるシステム、装置、デバイス、または伝搬媒体とすることができる。より特定的なコンピュータ読取可能媒体の例（網羅するものではない）として、コンピュータ読取可能媒体は、１以上の配線を含む電気的接続、ポータブル・コンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリ・メモリ（ＲＯＭ）、消去可能プログラマブル・リード・オンリ・メモリ（ＥＰＲＯＭやフラッシュ・メモリ）、光ファイバ、およびポータブル・コンパクト・ディスク・リード・オンリ・メモリ（ＣＤ−ＲＯＭ）を含む。なお、コンピュータで使用可能または読取可能な記録媒体は、更には、プログラムをプリントできる紙や他の適切な媒体とすることができる。なぜなら、プログラムは、例えば、紙や他の媒体を光学スキャニングすることにより電子的に捕獲し、コンパイルし、解釈することができ、また、必要に応じて適切な様式で処理することができ、コンピュータのメモリへ記憶することができるからである。
【００３７】
[040]  例えば、本発明の実施形態は、上記で、本発明の実施形態に従った方法、システム、およびコンピュータ・プログラム製品のブロック図および／または動作図を参照して説明した。ブロックに記載した機能／動作は、フローチャートに示した順と異なる順で行われる場合もある。行われる機能／動作に応じて、例えば、連続して示された２つのブロックが、実際には、実質的に並列に行われる場合もあり、また、２つのブロックが逆の順に行われる場合もある。
【００３８】
[041]  本発明の特定の実施形態について説明したが、他の実施形態も存在し得る。更に、本発明の実施形態は、メモリおよび他の記録媒体に記憶されたデータと関連するものとして説明したが、データは、他のタイプのコンピュータ読取可能媒体へ記憶することや、他のタイプのコンピュータ読取可能媒体から読み出すことができる。他のタイプのコンピュータ読取可能媒体としては、ハード・ディスク、フロッピー（登録商標）・ディスク、ＣＤ−ＲＯＭなどのような２次ストレージ・デバイスや、インターネットからの搬送波や、他の形態のＲＯＭやＲＡＭなどがある。更に、ここで開示した方法のステージは、本発明から離れることなく、ステージの順の変更やステージの挿入や削除などを行うことにより、任意の様式に変更することができる。
【００３９】
[042]  本出願に含まれるコードにおける著作権を含む全ての権利は、出願人に帰属するものであり、出願人の財産である。出願人は、本出願に含まれるコードにおける全ての権利を保持および保有しており、特許査定された発明を複製することに関してのみ、具体物を複製する許可を与えるが、他の目的のための許可は与えない。
【００４０】
[043]  明細書は例を含んでいるが、本発明の範囲は特許請求の範囲に示されている。更に、明細書は、構造的な特徴や方法論的な動作に対して特定的な言語で記載されているが、特許請求の範囲は上記の特徴や動作に制限されるものではない。むしろ、上記の特定の特徴や動作は、本発明の実施形態のための例として開示されたものである。
【図１】
0005961185.tif 000002
【図２】
0005961185.tif 000003
【図３】
0005961185.tif 000004
【図４】
0005961185.tif 000005
【図５】
0005961185.tif 000006