(57)【特許請求の範囲】
【請求項１】
コネクション型プロトコル及びコネクションレス型プロトコルで通信可能なネットワークを介して接続されるリモートクライアント装置に対してホストコンピュータでの表示内容を送信する方法であって、
前記ホストコンピュータでの表示内容のうち、更新頻度が所定の閾値より高い変化領域を識別する識別工程と、
前記ホストコンピュータでの表示内容のうち、前記更新頻度が前記所定の閾値より高い前記変化領域の表示内容の少なくとも一部を前記コネクションレス型プロトコルで前記リモートクライアント装置に送信する送信工程と
を有し、
前記識別工程は、前記ホストコンピュータでの表示内容のうち、カーソルは前記変化領域から除外し、前記送信工程は、前記リモートクライアント装置において前記カーソルをレンダリングするために、前記カーソルの位置を前記リモートクライアント装置に送信することを特徴とする方法。
【請求項２】
前記変化領域は、前記ホストコンピュータのオペレーティングシステムにより送出された表示コマンドを監視することにより識別されることを特徴とする請求項１に記載の方法。
【請求項３】
前記変化領域は、前記ホストコンピュータにおけるビデオカードから送出された描画コマンドを監視することにより識別されることを特徴とする請求項１に記載の方法。
【請求項４】
前記ホストコンピュータは、前記リモートクライアント装置に前記変化領域の座標情報を送信することを特徴とする請求項１に記載の方法。
【請求項５】
前記コネクションレス型プロトコルの種類は、
ユーザによる設定、
前記ホストコンピュータ及び前記リモートクライアント装置において使用可能なプロトコルの種類、
前記ホストコンピュータと前記リモートクライアント装置の間の帯域幅、
の中の１つ以上に基づいて決定されることを特徴とする請求項１に記載の方法。
【請求項６】
前記送信工程は、前記変化領域の更新頻度が前記閾値を下回ったと判定された後、所定の期間が経過してから、当該領域の表示内容の送信プロトコルを前記コネクションレス型プロトコルから前記コネクション型プロトコルに切換えることを特徴とする請求項１に記載の方法。
【請求項７】
前記送信工程は、前記変化領域の更新頻度が前記閾値よりも低い第２の閾値を下回ると、当該領域の表示内容の送信プロトコルを前記コネクションレス型プロトコルから前記コネクション型プロトコルに切換えることを特徴とする請求項１に記載の方法。
【請求項８】
コネクション型プロトコル及びコネクションレス型プロトコルで通信可能なネットワークを介して接続されるリモートクライアント装置に対してホストコンピュータでの表示内容を送信するホストコンピュータであって、
前記ホストコンピュータでの表示内容のうち、更新頻度が所定の閾値より高い変化領域を識別する識別ユニットと、
前記ホストコンピュータでの表示内容のうち、前記更新頻度が前記所定の閾値より高い前記変化領域の表示内容の少なくとも一部を前記コネクションレス型プロトコルで前記リモートクライアント装置に送信する送信ユニットと
を備え、
前記識別ユニットは、前記ホストコンピュータでの表示内容のうち、カーソルは前記変化領域から除外し、前記送信ユニットは、前記リモートクライアント装置において前記カーソルをレンダリングするために、前記カーソルの位置を前記リモートクライアント装置に送信することを特徴とするホストコンピュータ。
【請求項９】
前記送信ユニットは、前記変化領域の更新頻度が前記閾値を下回ったと判定された後、所定の期間が経過してから、当該領域の表示内容の送信プロトコルを前記コネクションレス型プロトコルから前記コネクション型プロトコルに切換えることを特徴とする請求項８に記載のホストコンピュータ。
【請求項１０】
前記送信ユニットは、前記変化領域の更新頻度が前記閾値よりも低い第２の閾値を下回ると、当該領域の表示内容の送信プロトコルを前記コネクションレス型プロトコルから前記コネクション型プロトコルに切換えることを特徴とする請求項８に記載のホストコンピュータ。
【請求項１１】
コネクション型プロトコル及びコネクションレス型プロトコルで通信可能なネットワークを介して接続されるリモートクライアント装置に対して表示内容を送信するコンピュータに、
前記コンピュータでの表示内容のうち、更新頻度が所定の閾値より高い変化領域を識別する識別手順と、
前記コンピュータでの表示内容のうち、前記更新頻度が前記所定の閾値より高い前記変化領域の表示内容の少なくとも一部を前記コネクションレス型プロトコルで前記リモートクライアント装置に送信する送信手順と
を実行させ、
前記識別手順は、前記ホストコンピュータでの表示内容のうち、カーソルは前記変化領域から除外し、前記送信手順は、前記リモートクライアント装置において前記カーソルをレンダリングするために、前記カーソルの位置を前記リモートクライアント装置に送信することを特徴とするプログラム。
【請求項１２】
前記送信手順は、前記変化領域の更新頻度が前記閾値を下回ったと判定された後、所定の期間が経過してから、当該領域の表示内容の送信プロトコルを前記コネクションレス型プロトコルから前記コネクション型プロトコルに切換えることを特徴とする請求項１１に記載のプログラム。
【請求項１３】
前記送信手順は、前記変化領域の更新頻度が前記閾値よりも低い第２の閾値を下回ると、当該領域の表示内容の送信プロトコルを前記コネクションレス型プロトコルから前記コネクション型プロトコルに切換えることを特徴とする請求項１１に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、リモートクライアント装置がホストコンピュータを制御するためのユーザ入力を受け付け且つホストコンピュータからの出力を表示するようなホストコンピュータのリモート制御に関する。
【背景技術】
【０００２】
リモートコンピューティングにより、ユーザはリモートクライアント装置からホストコンピュータを制御できる。「リモート」クライアント装置は、ホストコンピュータに物理的にアクセスできない装置である。リモートコンピューティングにおいて、クライアント装置は、ホストコンピュータが表示しているものを表示し、ホストコンピュータに代わってマウスの動き又はキーの押下等の入力を受け付ける。
【０００３】
リモートクライアント装置上にホストコンピュータのコンテンツを表示する１つの方法において、ホストコンピュータは、ホストコンピュータ表示のスクリーンショットを繰り返し取り込み、クライアント装置にスクリーンショットを送信する。この方法により、ホストコンピュータ表示における変化は最終的にリモートクライアント装置上に表示される。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ホストコンピュータスクリーンショットの取り込み及び送信に関する１つの問題は、一般にスクリーンショットが映画又は動画等の急速に変化するコンテンツに合わせるのに十分なほど迅速に取り込まれず且つ送信されないことである。従って、ホストコンピュータ上の動画又は映画は、スムーズさ又は一貫性に欠けるものとしてクライアント装置上に示される。
【０００５】
本発明は、コネクション型プロトコル及びコネクションレス型プロトコルで送信を実行するネットワークを介してリモートクライアントからホストコンピュータを制御することにより、上述の問題に対処する。
【課題を解決するための手段】
【０００６】
本発明の一態様によると、ホストコンピュータは、コネクション型プロトコル及びコネクションレス型プロトコルで送信を実行するネットワークを介してリモートクライアント装置によりリモート制御される。ホストコンピュータは、コネクション型プロトコルを使用してリモートクライアント装置への接続を確立し、コネクション型プロトコルを介してリモートクライアント装置からコマンドを受信し、ホストコンピュータの表示に影響を及ぼすようにコマンドを実現する。ホストコンピュータは、コネクション型プロトコルを使用してリモートクライアント装置に表示コンテンツを送信する。更にホストコンピュータは、表示が所定の変化の閾値率より迅速に変化しているホストコンピュータの表示において１つ以上の急速変化領域を識別し、コネクション型プロトコルより高い比率でコネクションレス型プロトコルを使用してリモートクライアント装置に各急速変化領域のコンテンツを送信する。
【０００７】
コネクションレス型プロトコル（ＵＤＰ等）は、本質的にコネクション型プロトコル（ＴＣＰ等）より速い。その結果、ホストの表示中の急速に変化する領域がコネクションレス型プロトコルを使用することにより送信されるため、クライアントはこれらの領域を原物に対してより高い忠実度で表示できる。
【０００８】
本発明の別の態様によると、クライアント装置は、コネクション型プロトコル及びコネクションレス型プロトコルで送信を実行するネットワークを介してホストコンピュータをリモート制御する。クライアント装置は、コネクション型プロトコルを使用してホストコンピュータへの接続を確立し、コネクション型プロトコルを介してホストコンピュータにコマンドを送信する。クライアント装置は、コネクション型プロトコルを介してホストコンピュータの表示コンテンツを受信する。更にクライアントは、コネクションレス型プロトコルを介してホストコンピュータの急速変化表示コンテンツを受信する。クライアント装置は、受信した表示コンテンツ及び受信した急速変化表示コンテンツを表示する。
【０００９】
上述により、映画及び他の急速に変化するコンテンツは、それ以外の表示とは異なり且つ急速に変化するコンテンツにより適するプロトコルを使用してクライアント装置に送信される。従って、ホストコンピュータ上の映画及び他の急速に変化するコンテンツは、一貫性又はスムーズさに欠ける動画を減少しつつクライアント装置においてリモートで表示される。従って、映画及び他の急速に変化するコンテンツは、クライアント装置においてより高い品質で表示され、エンドユーザの体験を向上させる。
【００１０】
本発明の特性が迅速に理解されるように、このような簡単な概要を提供した。添付の図面と共に本発明の好適な実施形態の以下の詳細な説明を参照することにより、本発明をより完璧に理解できる。
【図面の簡単な説明】
【００１１】
【図１】ネットワーク環境において通信するクライアント及びホストの一例を示す図である。
【図２】ホストコンピュータの実施形態の一例を示す図である。
【図３】クライアント装置の実施形態の一例を示す図である。
【図４】ホストコンピュータにおける処理の一例を示すフローチャートである。
【図５】クライアント装置における処理の一例を示すフローチャートである。
【図６】ホストコンピュータの処理とクライアント装置の処理との間の対話を示す図である。
【図７】ホストコンピュータ上の表示の一例を示す図である。
【図８】ホストコンピュータ上の表示の種々の段階の例を示す図である。
【図９】ホストコンピュータとクライアント装置との間の種々の送信方法を示す概念図である。
【発明を実施するための形態】
【００１２】
図１は、本発明が実施される環境の一例を示す。ホストコンピュータ１００は、ネットワーク３００を介してクライアント装置２００に接続される。ホストコンピュータ１００及びクライアント装置２００は、ネットワーク３００を介して通信し、データ及びコマンドを送信する。図１に示すように、クライアント装置２００は、ホストコンピュータ１００が表示しているものを表示し、ホストコンピュータ１００に代わって入力を受け付けるためのマウス又はキーボード等の入力装置を含む。ネットワーク３００は、コネクション型プロトコル及びコネクションレス型プロトコルの双方を介してデータを送信できるあらゆる種類のネットワークである。
【００１３】
コネクション型プロトコルは、最初に通信セッションを確立した後にデータストリームが送出されたのと同一の順序でデータストリームを受信者に配信するネットワーキングプロトコルである。コネクション型プロトコルは、検証動作及び追跡動作を含み、データパケットが正しい位置及び正しい順序で受信されることを保証し且つパケットが送信された経路を記録する。コネクション型プロトコルの一般に普及した一例は、一般にウェブを閲覧するために使用されるＴＣＰプロトコルである。コネクション型プロトコルの他の例には、ＤＣＣＰ、コネクション型イーサネット、非同期転送モード（ＡＴＭ）、フレームリレー、ＴＩＰＣ、ＳＣＴＰ及びＩＰＸ／ＳＰＸが含まれる。
【００１４】
コネクションレス型プロトコルは、メッセージが従来の構成を使用せずに一方のエンドポイントから他方のエンドポイントに送出される２つのネットワークエンドポイント間の通信に対するネットワーキングプロトコルである。通信の一端における装置は、受信者が利用可能であり且つデータを受信する準備ができていることを保証せずに、あるいはデータが実際にどのように到達するか又は到達するかどうかを追跡せずに、単に受信者のアドレスにデータを送信する。コネクションレス型プロトコルは、特にＲＤＰ（一般にリモートコンピューティングで使用される）、ＵＤＰ、ＩＣＭＰ、ＩＰＸ及びＴＩＰＣを含む。データが意図した受信者にどのように到達するか又は到達するかどうかを考慮せずに送信者が単にアドレスにデータを送信するため、コネクションレス型プロトコルは一般にあまり信頼性が高くない。一方、コネクションレス型プロトコルは、より効率的であるためコネクション型プロトコルより速くデータを送信できる。従って、より広い帯域幅を取得できる。更に、リモート表示に関して、紛失したデータが検出され且つ再試行されたデータが送出される時までにはスクリーンコンテキストは既に変化しているため、コネクション型プロトコルにおいて紛失したデータを検出及び回復する機能は殆ど役に立たないだろう。
【００１５】
ネットワーク３００の特定の実現例、規模及びハードウェアは、実現例がコネクション型プロトコル及びコネクションレス型プロトコルの双方を介してデータを送信できる限り、本発明の種々の実施形態に従って変動してもよい。従って、例えばネットワーク３００は、特にインターネット、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、メトリポリタンエリアネットワーク（ＭＡＮ）又はパーソナルエリアネットワークであってもよい。ネットワーク３００は、有線又は無線であってもよく、例えば光ファイバ、イーサネット又は無線ＬＡＮネットワークとして実現されてもよい。また、ネットワーク３００のネットワークトポロジは異なってもよい。
【００１６】
図２は、ホストコンピュータの一例を示す構成図である。要素は、ハードコーディングされた計算モジュール又は他の種類の回路網、あるいはソフトウェアと回路網との組合せを使用して実現されてもよい。ホストコンピュータ１００は、システムバス１０３を介してメモリ１０２に結合されたプロセッサ１０１を含む。メモリ１０２は、例えばＲＡＭ、ＳＤＲＡＭ、ＤＤＲ、ＳＲＡＭ又はフラッシュメモリを含む。動作中、プロセッサ１０１は、記憶装置１０５からのプログラム命令をメモリ１０２にロードする。以下において更に詳細に説明されるように、プロセッサ１０１は、ロードされたプログラム命令を実行し、ネットワーク３００を介してリモートクライアント装置２００によりリモート制御されるようにホストコンピュータ１００を動作させる処理を実現し、且つコネクション型プロトコル又はコネクションレス型プロトコルを介して表示データを送信する。
【００１７】
プロセッサ１０１は、システムバス１０３及び入力／出力（Ｉ／Ｏ）バス１０４を介して外部Ｉ／Ｏ装置に更に結合される。更に具体的には、プロセッサは、Ｉ／Ｏバス１０４に結合されたユーザ出力装置コントローラ１１２を介してユーザ出力装置１１１に結合されてもよい。出力装置１１１は、表示モニタ又は画面等のハードウェアを含む。表示モニタ又は画面は、メディアプレーヤ等のより急速に変化するコンテンツに加えてワード文書等のコンテンツを表示してもよい。出力装置コントローラ１１２は、例えば別個のビデオカード又はグラフィックスコントローラであってもよい。プロセッサ１０１は、Ｉ／Ｏバス１０４に結合されたユーザ入力装置コントローラ１１０を介してユーザ入力装置１０７に更に結合されてもよい。入力装置は、ホストコンピュータ１００のユーザがコマンドを入力できるようにする例えばキーボード、マウス、ジョイスティック、トラックボール又はゲームコントローラ等のハードウェアを含む。しかし、リモートコンピューティングにおいて、クライアント装置２００は、以下において更に詳細に説明される処理においてコマンドをホストコンピュータ１００に更に入力する。
【００１８】
コンピュータ可読媒体を有する記憶装置１０５は、記憶装置コントローラ１０６、Ｉ／Ｏバス１０４及びシステムバス１０３を介してプロセッサ１０１に結合される。例えば、記憶装置１０５はハードディスクドライブを含んでもよい。以下において更に詳細に説明されるように、一実現例において、記憶装置１０５は、ネットワーク３００を介してリモートクライアント装置２００によりリモート制御されるようにホストコンピュータ１００を動作させる処理を実行し、且つコネクション型プロトコル又はコネクションレス型プロトコルを介して表示データを送信するために、メモリ１０２にロードされるデータ１０８及びプログラム命令１０９を格納し且つ読み取るためにプロセッサ１０１により使用される。
【００１９】
プロセッサ１０１は、Ｉ／Ｏバス１０４に結合された通信装置コントローラ１１４を介して通信装置１１３に更に結合される。プロセッサは、ネットワーク３００を介して別の装置と通信するために通信装置１１３を使用する。更に詳細には、通信装置１１３により、ホストコンピュータ１００はネットワーク３００を介してクライアント装置２００と通信できる。この点に関して、通信装置１１３は、ネットワークインタフェースカード（ＮＩＣ）であってもよく、複数のプロトコルを介してデータを送信するように構成されてもよく、少なくとも１つのコネクション型プロトコル及び少なくとも１つのコネクションレス型プロトコルを介して少なくともデータを送信できる。そのため、通信装置１１３は、種々の送信プロトコルを介した通信を可能にする複数のハードウェアインタフェース又はハードウェアポートを含んでもよい。
【００２０】
図３は、クライアント装置の実施形態の一例を示す構成図である。要素は、ハードコーディングされた計算モジュール又は他の種類の回路網、あるいはソフトウェアと回路網との組合せを使用して実現されてもよい。クライアント装置２００は、システムバス２０３を介してメモリ２０２に結合されたプロセッサ２０１を含む。メモリ２０２は、例えばＲＡＭ、ＳＤＲＡＭ、ＤＤＲ、ＳＲＡＭ又はフラッシュメモリを含む。動作中、プロセッサ２０１は、記憶装置２０５からのプログラム命令をメモリ２０２にロードする。以下において更に詳細に説明されるように、プロセッサ２０１は、ロードされたプログラム命令を実行し、ネットワーク３００を介してホストコンピュータ１００をリモート制御する処理を実現する。
【００２１】
プロセッサ２０１は、システムバス２０３及び入力／出力（Ｉ／Ｏ）バス２０４を介して外部Ｉ／Ｏ装置に更に結合される。更に具体的には、プロセッサ２０１は、Ｉ／Ｏバス２０４に結合されたユーザ出力装置コントローラ２１２を介してユーザ出力装置２１１に更に結合されてもよい。出力装置は、例えば表示モニタ又は画面を含む。表示モニタ又は画面は、メディアプレーヤ等のより急速に変化するコンテンツに加えてワード文書等のコンテンツを表示してもよい。リモートコンピューティングにおいて、出力装置２１１上の表示は、ホストコンピュータ１００において出力装置１１１上の表示を含むか又はミラーリングする。出力装置コントローラ２１２は、例えば別個のビデオカード又はグラフィックスコントローラであってもよい。プロセッサ２０１は、Ｉ／Ｏバス２０４に結合されたユーザ入力装置コントローラ２１０を介してユーザ入力装置２０７に更に結合されてもよい。入力装置は、特に例えばキーボード、マウス、ジョイスティック又はゲームコントローラ等のハードウェアを含む。クライアント装置２００における入力装置は、クライアント装置２００に入力を送出するために使用される。しかし、本発明によると、クライアント装置２００における入力装置２０７は、ホストコンピュータ１００に代わってユーザインタフェースコマンド等のコマンドを更に受け付ける。
【００２２】
コンピュータ可読媒体を有する記憶装置２０５は、記憶装置コントローラ２０６、Ｉ／Ｏバス２０４及びシステムバス２０３を介してプロセッサ２０１に結合される。例えば、記憶装置２０５はハードディスクドライブを含んでもよい。以下において更に詳細に説明されるように、一実現例において、記憶装置２０５は、ネットワーク３００を介してホストコンピュータ１００をリモート制御するようにクライアント装置２００を動作させる処理を実行するために、メモリ２０２にロードされるデータ２０８及びプログラム命令２０９を格納し且つ読み取るためにプロセッサ２０１により使用される。
【００２３】
プロセッサ２０１は、Ｉ／Ｏバス２０４に結合された通信装置コントローラ２１４を介して通信装置２１３に更に結合される。プロセッサは、ネットワーク３００を介して別の装置と通信するために通信装置２１３を使用してもよい。更に詳細には、通信装置２１３により、クライアント装置２００はネットワーク３００を介してホストコンピュータ１００と通信できる。この点に関して、通信装置２１３は、ネットワークインタフェースカード（ＮＩＣ）であってもよく、複数のプロトコルを介してデータを送信するように構成されてもよく、少なくとも１つのコネクション型プロトコル及び少なくとも１つのコネクションレス型プロトコルを介して少なくともデータを送信できる。そのため、通信装置２１３は、種々の送信プロトコルを介した通信を可能にする複数のハードウェアインタフェース又はハードウェアポートを含んでもよい。
【００２４】
物理的に、クライアント装置２００は、例えば他の実施形態の中でも特に図１に示されたようなコンピュータ、携帯電話、パーソナルデジタルアシスタント（ＰＤＡ）、ラップトップコンピュータ又はテレビを含む多数の装置として具体化される。
【００２５】
リモートコンピューティング中、クライアント装置２００は、ホストコンピュータ１００に対する別個の入力／出力として動作する。特に、クライアント装置において、クライアント装置２００は、ホストコンピュータ１００が表示しているものを表示し、マウスの動き又はキーの押下のようなユーザインタフェースコマンド等の入力を受け付ける。クライアント装置２００は、ユーザの入力を実現するホストコンピュータ１００に入力を送信する。
【００２６】
更に詳細には、クライアント装置２００がネットワーク３００を介してユーザインタフェースコマンドを送信してホストコンピュータ１００を制御できるように、ホストコンピュータ１００及びクライアント装置２００はコネクション型プロトコルを確立する。例えばクライアント装置２００上のユーザは、デスクトップフォルダを開くためにそれをクリックしてもよい。このコマンドはＴＣＰ等のコネクション型プロトコルを介してホストコンピュータ１００に送信され、ホストコンピュータ１００は表示を調整する（例えば、開かれたデスクトップフォルダのコンテンツを示す）コマンドを実現する。次にホストコンピュータ１００は、ユーザに表示するために更新された表示をクライアント装置１００に送信する。
【００２７】
しかし、上述したように、ホストコンピュータ１００からのスクリーンショットは、必ずしも映画又は動画等の急速に変化するコンテンツに合わせるのに十分なほど迅速に取り込まれるとは限らず且つ送信されるとは限らない。
【００２８】
従って、次に、図４〜図９に関連して、リモートクライアント装置上のホストコンピュータのコンテンツを表示する処理について説明する。
【００２９】
図４に関連してホストコンピュータ１００の観点から及び図５に関連してクライアント装置２００の観点から、リモートコンピューティングの処理について説明する。処理におけるいくつかのステップは連続して実行されるか又は必要な場合にのみ実行されるため、ステップの特定の順序及び手順が変更されてもよいことが理解されるべきである。この点に関して、ホストコンピュータ１００における処理は、ホストコンピュータ１００の機能性を実行するためにプロセッサ１０１により実行される処理ステップとして記憶装置１０５に格納される。逆に、クライアント装置２００における処理は、クライアント装置２００の機能性を実行するためにプロセッサ２０１により実行される処理ステップとして記憶装置２０５に格納される。
【００３０】
簡単に説明すると、図４に示されたように、ホストコンピュータ１００は、コネクション型プロトコルを使用してリモートクライアント装置２００への接続を確立し、コネクション型プロトコルを介してリモートクライアント装置２００からコマンドを受信し、ホストコンピュータ１００の表示に影響を及ぼすようにコマンドを実現する。ホストコンピュータ１００は、コネクション型プロトコルを使用してリモートクライアント装置２００に表示コンテンツを送信する。更にホストコンピュータ１００は、表示が所定の変化の閾値率より迅速に変化しているホストコンピュータ１００の表示中の１つ以上の急速変化領域を識別し、コネクション型プロトコルより高い比率でコネクションレス型プロトコルを使用してリモートクライアント装置２００に各急速変化領域のコンテンツを送信する。
【００３１】
図４に戻ると、ホストコンピュータ１００における処理はステップ４０１から開始し、リモートクライアント装置２００との接続が確立される。これは、コネクション型プロトコルを介して実行され、ホストコンピュータ１００とクライアント装置２００との間に基本的なリモートコンピューティング接続を確立する。接続はホストコンピュータ１００により初期化されてもよいが、より一般的にはクライアント装置２００が接続を初期化する。
【００３２】
ステップ４０２において、ホストコンピュータ１００はクライアント装置２００からコマンドを受信する。例えば一般的なコマンドは、キーの押下又はマウスを介したカーソルの動き等のクライアント装置２００におけるユーザインタフェースコマンドを含む。
【００３３】
ステップ４０３において、クライアント装置２００のユーザがホストコンピュータに位置しているかのように、ホストコンピュータは表示に影響を及ぼすクライアント装置２００からのコマンドを実現する。従って、例えばホストコンピュータ１００は、デスクトップフォルダをクリックするユーザに応答するように表示を調整する。
【００３４】
ステップ４０４において、ホストコンピュータ１００は、表示上のコンテンツが変化する速度を追跡するために表示装置１１１上の表示を監視する。このステップは種々の方法を使用して達成される。例えばホストコンピュータ１００は、連続してスクリーンショットを取得してもよく、且つ種々のスクリーンショットを比較してある特定の画素領域が変化する速度を示す「ヒートマップ」を生成してもよい。あるいは、ホストコンピュータ１００は、表示中の変化に対応するオペレーティングシステムにおける高水準のイベント又はコマンドを監視するために、オペレーティングシステムに「接続する」ソフトウェアを使用してもよい。更に別の方法において、ホストコンピュータ１００は、ビデオカードバッファにアクセスして画素が描画されている場所を判定してもよい。更に詳細には、ホストコンピュータ１００がビデオカード（不図示）を示す場合、ホストコンピュータ１００におけるオペレーティングシステムは、表示に対してビデオカードにコマンドを送出している。更に別の方法において、本発明は、ハードウェアレベルでビデオカードコマンドを傍受してもよい。例えばハードウェア接続は、ビデオカードコマンドバッファにおける描画コマンド又はビデオカードから表示装置に送信されているコマンドに生アクセスしてもよい。
【００３５】
ステップ４０５において、ホストコンピュータ１００は、コネクション型プロトコルを介して低速の（すなわち、急速に変化しない）表示コンテンツを送信する。
【００３６】
ステップ４０６において、ホストコンピュータ１００は、表示中のあらゆる急速変化領域を識別する。更に詳細には、上述の監視技術を使用することにより、ホストコンピュータ１００は、表示のある領域が所定の変化の閾値率より速く変化しているかどうかを判定する。変化の閾値率は、ユーザにより設定されてもよく、あるいはクライアント装置の表示の機能又は人間の眼の能力に基づいて設定されてもよい。例えば、約２５フレーム／秒より少ない場合、人間の眼は、表示された動画又はビデオにおける不規則性に気付き始める。従って、閾値は２５フレーム／秒に設定されてもよい。その後、急速変化表示領域は、ＲＤＰ等のコネクションレス型ビデオストリーミングプロトコルを介してストリーミングされるようにフラグを立てられる。
【００３７】
ステップ４０７において、ホストコンピュータ１００は、ＲＤＰ等のコネクションレス型プロトコルを介してクライアント装置２００にあらゆる急速変化領域に対するデータを送信する。その後、上記の処理はステップ４０４に戻り、上述のように急速変化領域を連続して監視する。この点に関して、領域の変化率は、閾値を下回る場合にコネクション型プロトコルを介してストリーミングに戻る。
【００３８】
上記の処理は、ホストコンピュータ１００の背景で実行するサービスとして、例えばそれ以外のシステムと同時に実行する実行可能なファイルとして実現される。
【００３９】
一実現例において、ホストコンピュータ１００は、急速に変化するビデオストリームを予想することをクライアント装置２００に認識させるために、クライアント装置２００に通知を発行してもよい。例えばホストコンピュータ１００は、急速変化領域の場所を規定する座標に加えてビデオストリームを予想するようにクライアント装置２００に通知してもよい。このような通知は、クライアント装置２００が入力ストリームを通知されることを保証するために、ＴＣＰ等のコネクション型プロトコルを介して送出されるのが好ましい。クライアント装置２００は、適切な場所においてデータに対するポートを開いてもよく、ホストコンピュータ１００に肯定応答を送出してもよい。ホストコンピュータ１００は、データを送出する前にクライアント装置２００からの（更にＴＣＰを介した）肯定応答を待ってもよい。
【００４０】
また、ホストコンピュータ１００及びクライアント装置２００は、好適なコネクションレス型プロトコルをネゴシエートできる。例えば、コネクションレス型プロトコルを介してビデオストリームを予想する通知を受信すると、クライアント装置２００は、サポートされた符号化方法のリストをホストコンピュータ１００に送信してもよい。次にホストコンピュータ１００は、ホスト装置又はクライアント装置の機能（例えば、速度機能又は表示機能）、ホストコンピュータ１００又はクライアント装置２００において使用可能なプロトコルの符号化器又は復号化器、ユーザ又はシステムにより設定された基本設定、接続の帯域幅又はネットワーク３００の他の特性を含む１つ以上の要因、あるいは他の要因に基づいて好適な符号化方法を選択してもよい。通知と同様に、ホストコンピュータ１００及びクライアント装置２００がコネクションレス型プロトコルを介してデータストリームを送信する準備ができていることを保証するために、ＴＣＰ等のコネクション型プロトコルを介してこのような通知を実施するのが好ましい。
【００４１】
ホストコンピュータ１００は２つ以上の変化の閾値率を更に実現してもよい。例えばホストコンピュータ１００は、主な閾値を３０フレーム／秒に設定してもよい。従って、上述したように、３０フレーム／秒を上回って変化する領域は、より速く送信するためにコネクションレス型プロトコルに切り替える。しかし、この例において、ビデオ又は動画における短時間の減速により、より遅いコネクション型プロトコルに即座に戻らないように、コネクション型モードに戻る前に渡されなければならない第２の閾値は、より低速（例えば、２７フレーム／秒）に設定されてもよい。
【００４２】
また、特定の場合においてプロトコル間の切り替えを微調整するために時間遅延が設定されてもよい。例えば、コネクション型モードに即座に戻る前に、急速変化領域の変化率が主な閾値を下回ると、時間遅延が設定されてもよい。起動中の表示における通常の変化がコネクションレス型プロトコルへの切り替えを迅速に発生させないように、ホストコンピュータ１００は起動時に時間遅延を更に実現してもよい。
【００４３】
更に別の態様において、ホストコンピュータ１００は、特殊な表示項目を処理するための例外又は特殊な処理を含んでもよい。例えば、ホスト画面上のマウスの矢印又はカーソルは画面にわたり移動するために急速に移動する物体として示されるが、カーソルを表示するのに別個のコネクションレス型ビデオストリームは必要ない。この特殊な例に対処する１つの方法は、急速に変化する領域の計算からホストカーソルを除外することである。従って、ホストカーソルの表示はホストコンピュータ１００において実質的に無視される。しかし、ホストカーソルの位置は、ユーザに対してクライアント装置２００においてカーソルを局所的にレンダリングするために、コマンドチャネルを介して依然として送出されてもよい。また、動画化されたＧＩＦ等の制限された周期性で示される他の物体は、記録されてもよく、計算において無視されてもよく、クライアント装置２００上で個別に再描画されてもよい。この動作は、クライアント画面を再描画するのに必要な帯域幅を削減するために、急速に変化する領域に対する変化の閾値率を下回る場合にも行われてもよい。
【００４４】
次に、図５に関連してクライアント装置２００の観点からの処理について説明する。
【００４５】
簡単に説明すると、図５において、クライアント装置２００は、コネクション型プロトコルを使用してホストコンピュータ１００への接続を確立し、コネクション型プロトコルを介してホストコンピュータ１００にコマンドを送信する。クライアント装置２００は、コネクション型プロトコルを介してホストコンピュータ１００の表示コンテンツを受信する。更にクライアント装置２００は、コネクションレス型プロトコルを介してホストコンピュータ１００の急速変化表示コンテンツを受信する。クライアント装置２００は、受信した表示コンテンツ及び受信した急速変化表示コンテンツを表示する。
【００４６】
ステップ５０１において、クライアント装置２００は、コネクション型プロトコルを介してホストコンピュータ１００への接続を確立する。
【００４７】
ステップ５０２において、クライアント装置２００は、ホストコンピュータ１００にコマンドを送信し、ホストコンピュータ１００を制御する。例えばクライアント装置２００は、キーの入力又はマウスの動き等のユーザインタフェースコマンドをホストコンピュータ１００に送信してもよい。
【００４８】
ステップ５０３において、クライアント装置２００は、コネクション型プロトコル又はコネクションレス型プロトコルを介してホストコンピュータ１００からコンテンツを受信する。上述したように、ホストコンピュータ１００は、表示されたデータが変化する速度に基づいてコネクション型プロトコル又はコネクションレス型プロトコルを介して表示に対するデータを送信してもよい。この点に関して、クライアント装置２００は、上述したようにホストコンピュータ１００からの通知に応答して急速変化データに対するポートを開いてもよく、且つサポートされた符号化方法のリストを送信してもよい。
【００４９】
ステップ５０４において、クライアント装置はホストコンピュータ１００から受信したデータを表示し、あらゆる急速に変化する領域を含むホストコンピュータ１００の表示のリモート図をユーザに提供する。
【００５０】
図６は、ホストコンピュータ１００の処理とクライアント装置２００の処理との間の対話を示すフローチャートである。図６から分かるように、ホストコンピュータ１００及びクライアント装置２００の双方は、コネクション型プロトコルを介して接続を確立する。ホストコンピュータ１００は、クライアント装置２００からコマンド（例えば、ユーザインタフェースコマンド）を受信し、それぞれ、コネクション型プロトコル及びコネクションレス型プロトコルを介して表示コンテンツ及び急速に変化する表示コンテンツを送信する。クライアント装置２００は、ホストコンピュータ１００にコマンドを送信し、コネクション型プロトコル及び／又はコネクションレス型プロトコルを介してホストコンピュータ１００のコンテンツを受信する。
【００５１】
図７は、ホストコンピュータ１００上の表示の一例を示す。出力装置１１１（例えば、画面）は、ワード文書７００及びメディアプレーヤ７０１等のホストコンピュータからのコンテンツを表示する。この例のために、ワード文書７００はＭｉｃｒｏｓｏｆｔ  Ｗｏｒｄ等のワード処理プログラムで開かれた文書であり、メディアプレーヤ７０１はＭＰＥＧファイル等の動画又はビデオを表示するアプリケーションである。
【００５２】
図８は、ホストコンピュータ１００上の表示の種々の段階の例を示す。上述したように、本発明は、表示の種々のセクションが変化する速度を判定し、領域に対する送信方法を変更すべきかどうかを判断するためにこの情報を使用する。図８の例において、本発明は、ワード文書７００に対応する表示領域の変化率が適度であることを判定する。この領域が迅速に変化していないため、より速い送信方法は必須ではなく、領域はコネクション型プロトコルを介してストリーミングされる。殆ど変化しないか又は全く変化しない表示の他の領域は、コネクション型プロトコルを介して更にストリーミングされる。一方、メディアプレーヤ７０１に対応する表示領域は、一貫して且つ急速に変化しているものと判定される。従って、本発明は、この表示領域に対するコンテンツがコネクション型送信方法によってではなく、コネクションレス型プロトコルを介してビデオストリームとして送信されるべきであることを判定する。
【００５３】
図９は、ホストコンピュータ１００とクライアント装置２００との間の通信の基本概念図を示す。ホストコンピュータ１００は、出力装置１１１上の表示を取り込むためのスクリーンキャプチャ構成要素１５０を含む。コネクション型送信方法において、データはコネクション型ユーザインタフェース（ＵＩ）リモーティングプロトコル１５１を介して送信される。ＵＩリモーティングプロトコル１５１は、ＴＣＰ等のコネクション型プロトコルである。上述したように、コネクション型プロトコルは、検査処理及び検証処理を含み、データパケットが宛先に到達することを保証し且つデータパケットがネットワーク全体にわたってどのように移動したかを追跡する。一方、このオーバヘッドは更なる時間を必要とし、データ送信を減速させる。ホストコンピュータ１００及びクライアント装置２００は、それぞれ、種々のネットワークをサポートするための情報を含むライブラリ１５２及び２５２を含む。コネクション型プロトコルを介してクライアント装置２００と通信する場合、ホスト１００は、スクリーンレンダラ２５０によりクライアント装置上でレンダリングされる画面表示を受信するためにコネクション型リモーティングプロトコル２５１を使用するクライアント装置２００にデータパケットを送信する。
【００５４】
しかし、本発明によると、急速に変化する表示コンテンツは、コネクションレス型プロトコルを介してホストコンピュータ１００とクライアント装置２００との間で直接ストリーミングされるため、コネクション型プロトコルのオーバヘッドを回避する。当然、コネクションレス型プロトコルを介してクライアント装置にデータを送出するのに何らかの基本的な符号化及び／又は復号化が必要な場合もあるが、説明を簡単にするため、余分な符号化器又は復号化器は図９に示さない。
【００５５】
上述の構成により、映画及び他の急速に変化するコンテンツは、それ以外の表示とは異なり且つ急速に変化するコンテンツにより適するプロトコルを使用してクライアント装置に送信される。従って、ホストコンピュータ上の映画及び他の急速に変化するコンテンツは、一貫性又はスムーズさに欠ける動画を減少しつつクライアント装置においてリモートで表示される。従って、映画及び他の急速に変化するコンテンツは、クライアント装置においてより高い品質で表示される。
【００５６】
特定の例示した実施形態に関連して本発明の例示的な実施形態について上述したが、本発明の範囲から逸脱せずに種々の変更及び変形が行われてもよい。例えば、一般に、上述の方法のステップは、異なる順序で実行され且つ依然として所望の結果を達成してもよい。
【００５７】
本出願は、２００８年１０月２３日に出願された米国特許出願第１２／２５７，３２２号公報から優先権を主張するものであり、本明細書に参考として取り入れられている。
【図１】
0005178918.tif 000002
【図２】
0005178918.tif 000003
【図３】
0005178918.tif 000004
【図４】
0005178918.tif 000005
【図５】
0005178918.tif 000006
【図６】
0005178918.tif 000007
【図７】
0005178918.tif 000008
【図８】
0005178918.tif 000009
【図９】
0005178918.tif 000010