説明

マルチメディアデータを含むイベントを転送する方法およびシステム

【課題】 イベントを、サーバからリモートクライアントに転送する方法(700)およびシステム(110、120)を提供する。
【解決手段】 イベントがドライバから受け取られる(710)。イベントは、イベントタイプに従ってイベントキューに送られる(720)。イベントは、イベントタイプに従って処理される(730)。処理は、イベントがマルチメディアデータを含む場合、イベントをエンコードすることを含む。イベントは、トリガされると、リモートクライアントに転送される(740)。転送は、イベントタイプに対応するプロトコルに従って行われる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、コンピュータシステムネットワークに関する。
より詳細には、本発明の実施形態は、ネットワーク環境におけるマルチメディアストリーミングに関する。
【背景技術】
【0002】
コンピュータシステムネットワークは、リモートクライアント装置からのローカル資源(たとえば、サーバ上のソフトウェアアプリケーション、データ、ウェブページ等)へのアクセスを提供する。
仮想ネットワークコンピューティング等のアプリケーションは、この概念をさらに拡張した。
仮想コンピューティングネットワークでは、サーバは、ソフトウェアアプリケーションおよびデータのみならず、クライアント装置からアクセスし制御することが可能なデスクトップ環境をも供給する。
本質的には、クライアント装置のユーザに、サーバにおいて生成され、次いでクライアントに転送されて再現された表示(グラフィカルユーザインタフェースまたはデスクトップ)が提示される。
したがって、クライアントが維持する状態量を削減することができ、「薄い」クライアントと呼ばれるものになる。
また、単一のデスクトップを、いくつかの異なるクライアントから同時にアクセスして見ることができる。
これは、一群の協同工学ワークステーションを実施する場合に特に有用であり得る。
【0003】
従来技術による仮想ネットワークコンピューティングシステムは、通常、リモートフレームバッファ(RFB)プロトコル等のプロトコルを使用して、サーバ生成のグラフィカルユーザインタフェースへのクライアントアクセスを提供する。
コンピュータシステムのモニタに表示する画像は、サーバ上のフレームバッファに保持される。
極端な場合、フレームバッファの内容全体が、周期的にクライアント装置に転送され、表示される。
この極端な場合に対する改良策には、前の転送以来、フレームバッファ(ひいては表示)に対して行われた変更のみを送信することが含まれる。
【0004】
通常、クライアントへの転送速度は、毎秒約10〜15フレームである。
この速度はかなり高いが、ビデオデータまたはマルチメディアデータ(ビデオデータおよびオーディオデータ)をサーバからクライアントに満足のいくように転送するには不十分であるとみなされる。
したがって、従来技術によるシステムはこの点で制限される。
【0005】
したがって、ビデオ/マルチメディアデータをサーバからクライアントに仮想ネットワークコンピューティングシステムにおいて転送するより満足のいく方法が望ましい。
本発明の実施形態は、このような改良を提供する。
【特許文献1】米国特許第6166734号
【特許文献2】国際公開第00/39678号
【特許文献3】米国特許第6259443号
【非特許文献1】CHIA-CHEN KUO ET AL: "Design and implementation of a network application architecture for thin clients" PROCEEDINGS OF THE 26TH. ANNUAL INTERNATIONAL COMPUTER SOFTWARE AND APPLICATIONS CONFERENCE. COMPSAC 2002. OXFORD, ENGLAND, AUG. 26 - 29, 2002, ANNUAL INTERNATIONAL COMPUTER SOFTWARE AND APPLICATIONS CONFERENCE, LOS ALAMITOS, CA: IEEE COMP. SOC, US, vol. CONF. 26, 26 August 2002 (2002-08-26), pages 193-198, XP010611116 ISBN: 0-7695-1727-7 the whole document
【発明の開示】
【課題を解決するための手段】
【0006】
[発明の開示]
本発明の実施形態は、イベントをサーバからリモートクライアントに転送する方法およびシステムに関する。
イベントがドライバから受け取られる。
イベントは、イベントタイプに従ってイベントキューに送られる。
イベントは、イベントタイプに従って処理される。
処理は、イベントがマルチメディアデータを含む場合、イベントをエンコードすることを含む。
イベントは、トリガされると、リモートクライアントに転送される。
転送は、イベントタイプに対応するプロトコルに従って行われる。
【0007】
本明細書において援用され、かつ本明細書の一部を構成する添付の図面は、本発明の実施形態を例示しており、その記述とともに、本発明の原理を説明するのに有用である。
【0008】
本明細書において参照される図面は、具体的に述べられる場合を除いて、縮尺どおりに描かれているものと理解されるべきではない。
【発明を実施するための最良の形態】
【0009】
ここで本発明の種々の実施形態が詳細に参照されることになり、その数々の例が添付の図面に示される。
本発明はこれらの実施形態とともに説明されることになるが、本発明をこれらの実施形態に限定することは意図していないことは理解されよう。
それどころか、本発明は、添付の特許請求の範囲によって規定されるような、本発明の精神および範囲内に含まれる場合がある、代替形態、変更形態および同等形態を網羅することが意図されている。
さらに、本発明の以下の説明では、本発明を完全に理解してもらうために、数多くの具体的な細部が述べられる。
他の事例では、既知の方法、手順、構成要素および回路は、本発明の態様を不必要に曖昧にしないように詳細には説明されていない。
【0010】
図1は、本発明の一実施形態による、ネットワーク100に結合されたサーバ101およびクライアント102のブロック図である。
ネットワーク100は図示の要素以外の要素も含み得ることが理解される。
ネットワーク100はまた、図示の様々な要素を2つ以上含むことができ、たとえば、サーバ101に複数のクライアントが結合されてもよく、複数のサーバがあってもよい。
サーバ101およびクライアント102の機能については以下に考察(少なくとも図2および図6を参照して)するが、これら要素は考察する機能以外の機能も実施し得ることが理解される。
【0011】
通信は、図1のサーバ101とクライアント102の間で直接行われる場合もあり、または中間装置もしくはノード(図示せず)を通して間接的に行われる場合もある。
また、通信は有線であっても、または無線であってもよく、または有線と無線の組み合わせであってもよい。
一実施形態では、通信はワールドワイドウェブ(すなわちインターネット)を介して行われる。
【0012】
一実施形態では、サーバ101およびクライアント102は、処理能力およびメモリ能力を提供するコンピュータシステムである。
さらに、本発明の実施形態によれば、サーバ101はデスクトップストリーミングサーバ110を実装し、クライアント102はデスクトップストリーミングクライアント120を実装する。
この実施形態では、デスクトップストリーミングサーバ110およびデスクトップストリーミングクライアント120は、サーバ101が表示(たとえば、グラフィカルユーザインタフェース、特に「デスクトップ」表示)をクライアント102に供給できるようにする。
分かるように、サーバ側制御およびクライアント側制御の両方が、同時に、または排他的に可能である。
【0013】
本発明の実施形態によれば、「イベント」は、デスクトップストリーミングサーバ110およびデスクトップストリーミングクライアント120を使用して、サーバ101からクライアント102に、またこの逆にそれぞれ転送される。
本明細書において使用するイベントは一般に、キーボードドライバ、マウスドライバ、ビデオドライバ、またはオーディオドライバ等のソフトウェアドライバの出力である。
したがって、イベントとしては、マウスボタンのクリックやキーボードのキーの押下等の検出可能なアクションまたは発生が挙げられる。
イベントは、クライアント102が表示する表示(グラフィカルユーザインタフェース)を変更させ得るアクションまたは発生を指すこともできる。
たとえば、テキスト(文書処理中の)文書をスクロールすることにより、または文書の或るページを別のページに変更することにより生じる表示の変更がイベントを構成し得る。
表示中のウィンドウが移動することもイベントを構成し得る。
ビデオ動画表示もイベントを構成し得る。
オーディオサンプルもイベントを構成し得る。
【0014】
まとめると、本明細書において使用するイベントは、サーバ101またはクライアント102が使用するドライバの出力であり、サーバ101またはクライアント102上の表示を変更させる可能性があり、かつ/またはクライアント102にオーディオ出力を発生させ得る。
イベントは一般に、制御イベントおよびデータイベントに分類することができる。
制御イベントは、他の構成要素の実行の振る舞いをローカルに、またはリモートに変更させる制御情報を伝える。
データイベントは、他の構成要素に内容の変更を通知する内容データを伝える。
【0015】
考察を簡単にするために、「マウス」という用語を本明細書において用いるが、マウスに代えて、またはマウスと併せて、他のカーソル制御手段を使用し得ることが理解される。
無数のカーソル制御機構が当該技術分野において既知であり、これらのそれぞれを本発明により使用し得る。
「キーボード」という用語も本明細書において用いられる。
この場合でも、音声認識システムを含め、キーボードの機能を提供する無数の機構が、当該技術分野において既知であり、これらのそれぞれを本発明により使用し得る。
したがって、本発明の実施形態はマウスおよびキーボードの場合について説明するが、本発明はそのように限定されるものではない。
むしろ、上述したように、「イベント」という用語およびこの用語が本明細書においてどのように用いられるかに集中すべきである。
この文脈の中では、キーボードおよびマウスのイベントはイベントの単なる例にすぎず、本発明の実施形態は、略すべてのタイプのイベントとの併用に適している。
【0016】
一実施形態では、サーバ側において、ドライバから受け取ったイベントが、イベントタイプに従ってイベントキューに送られる。
次いで、イベントはそれぞれのイベントタイプに従って処理され、たとえば、マルチメディアイベントをエンコードすることができる。
次いで、イベントは、イベントタイプに対応するプロトコルに従ってサーバ101からクライアント102に転送される。
一実施形態では、キーボードドライバおよびマウスドライバからのイベントは、伝送制御プロトコル(TCP)等のプロトコルを使用してクライアント102に転送されるが、ビデオドライバおよびオーディオドライバからのイベントは、リアルタイムプロトコル(RTP)等のプロトコルを使用してクライアント102に転送される。
これらプロセスについて、図2と併せてさらに詳細に以下説明する。
【0017】
TCPおよびRTPは当該技術分野において既知である。
TCPは、信頼性の高いプロトコルを提供し、RTPは、マルチメディアデータオブジェクトのビデオ部分およびオーディオ部分を同期させるのに有用なタイミング機能を提供する。
したがって、TCPは、制御イベント(たとえば、キーボードイベントおよびマウスイベント)、ならびにグラフィックスアプリケーションの変更等、他の高い正確性が要求されるイベントを正確に転送するために使用することができ、RTPは、フレームバッファ(ビデオバッファ)およびサウンドバッファの更新をストリーミングするために使用することができる。
これらまたは同様の機能を提供することができる他のプロトコルも、代わりに使用することが可能である。
【0018】
クライアント側においては、一実施形態では、イベントは、キーボードドライバおよびマウスドライバから受け取られ、TCP等のプロトコルを使用して図1のサーバ101に転送される。
このプロセスについては、図6と併せてさらに以下説明する。
本実施形態では、サーバ101とクライアント102の間の関係には、クライアントがオーディオドライバおよびビデオドライバからイベントをサーバに送ることがないが、本発明はそのように限定されるものではない。
【0019】
図2は、本発明の一実施形態によるデスクトップストリーミングサーバ110のブロック図である。
デスクトップストリーミングサーバ110は、図1のサーバ101に、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせとして実装される。
図2に示すように、デスクトップストリーミングサーバ110は、説明および考察を明確にするために別個に表される複数の要素を備えるが、これら要素はデスクトップストリーミングサーバ110内の別個のエンティティとして存在しなくてもよいことが理解される。
一般に、本発明の各種実施形態によれば、デスクトップストリーミングサーバ110は、図2の各種要素によって提供される能力および機能を提供する。
さらに、デスクトップストリーミングサーバ110は、本明細書に述べる能力および機能に加えて他の能力および機能を提供し得る。
【0020】
本実施形態では、ドライバインタフェース210が、キーボードドライバ201、マウスドライバ202、ビデオドライバ203、および/またはオーディオドライバ204等であるがこれらに限定されない複数のドライバから入力(イベント)を受け取る。
したがって、ウィンドウ変更、キーボード入力、およびカーソル移動等のより従来的なイベントをインターセプトすることに加えて、ドライバインタフェース210はまた、ビデオドライバ203からビデオデータを、またオーディオドライバ204からオーディオデータをサンプリングする。
【0021】
一般に、ドライバ201〜204は、土台をなすオペレーティングシステムの構成要素である。
たとえば、Windows(登録商標)環境のキーボードドライバは、Linux環境のキーボードドライバと異なり得る。
本実施形態によれば、ドライバインタフェース210は、デスクトップストリーミングサーバ110の下流部分への固定インタフェース(たとえば、イベントフィルタ220への固定インタフェース)を提供しながら、各種タイプのドライバと通信する能力を提供する。
【0022】
図3は、本発明の一実施形態によるドライバインタフェース210のブロック図である。
この実施形態では、ドライバインタフェース210は、各ドライバとのインタフェースに適したモジュールがあるように、インタフェース301および302により具現される複数のインタフェースモジュールを備える。
これは、1つのドライバにつき1つのインタフェースモジュールがあると言っているわけではないが、その場合もあり得る。
【0023】
本実施形態では、ドライバインタフェース210は、インタフェース301および302等に共通のアプリケーションプログラムインタフェース(API)305も備える。
API305は、無数のドライバが可能であるにも拘わらず、デスクトップストリーミングサーバ110の残りの部分に単一のインタフェースを提供し、したがって、デスクトップストリーミングサーバ110を、土台をなすオペレーティングシステムから切り離す。
【0024】
図2に戻ると、本実施形態では、ドライバインタフェース210からのイベントはイベントフィルタ220に提供される(受け取られる)。
この実施形態では、イベントフィルタ220は、イベントタイプに従ってイベントを識別し、イベントをイベントタイプに従って各イベントキューに送る。
イベントキューは、イベントタイプに適した処理(もしあれば)の後、イベントタイプに適したプロトコル(たとえば、TCPまたはRTP)を使用してデスクトップストリーミングクライアント120(図1)に転送することができる同様のタイプのイベントをバッファリングするために使用される。
【0025】
本実施形態では、図2のイベントフィルタ220は、イベントを以下のタイプに分類する。
すなわち、1)たとえばキーボード入力またはカーソル(たとえば、マウス)移動によって生成される制御イベント、2)ウィンドウの内容に変更がない、ウィンドウ移動によって生成されるウィンドウ移動イベント、3)ウィンドウ内容の変更によって生成されるウィンドウ更新、4)オーディオドライバ204のサウンドバッファの変更から取り込まれるオーディオサンプル。
この実施形態では、制御イベントは制御イベントキュー231に転送され、ウィンドウ移動はウィンドウ移動キュー232に転送され、ウィンドウ更新はウィンドウ更新キュー233に転送され、オーディオサンプルはオーディオサンプルキュー234に転送される。
【0026】
本実施形態では、制御イベントキュー231内の制御イベントは、マウスまたはカーソルの座標変更を記録する。
たとえば、特定のカーソル移動の場合、移動の開始座標および終了座標のみを図1のデスクトップストリーミングクライアント120に転送するだけでよい。
制御イベントは、デスクトップストリーミングエンジン250によってさらに最適化することができる。
【0027】
引き続き図2を参照すると、本実施形態では、ウィンドウ移動キュー232は、移動中のウィンドウの座標変更を(ウィンドウの内容は変更せずに)記録する。
ウィンドウの内容がすでに図1のデスクトップストリーミングクライアント120に転送されている場合、ウィンドウの座標の変更のみをクライアントに転送するだけでよい。
次いで、クライアントは、すでに受け取っていたウィンドウの内容および新しいウィンドウ座標を使用してデスクトップ表示を表現することができる。
【0028】
本実施形態によれば、図2のウィンドウ更新キュー233は、ウィンドウ内容の更新を記録する。
これら更新は、ビデオフレームバッファから取り込むことができる。
一実施形態では、適切なエンコーダおよび転送プロトコルの選択に役立つように、ウィンドウ更新は3つのタイプに分類される。
すなわち、1)グラフィックスウィンドウ更新、2)ビデオウィンドウ更新、および3)他のウィンドウ更新。
ここで、グラフィックスは相対的に静的な画像(たとえば、ビデオと比較して相対的に低い更新率を有する画像)を指すために使用され、ビデオは相対的に高い更新率を有する動画を指し、他のウィンドウ更新は、文書処理中の文書内のテキスト等、相対的に静的なウィンドウ内容を指す。
概して、ウィンドウ更新は、画像の複雑性および更新頻度に従って分類に分けることができる。
【0029】
図4は、本発明の一実施形態によるウィンドウ更新の分化を示すブロック図である。
この実施形態では、ウィンドウ更新分化器410が、ウィンドウを上記カテゴリにフィルタリングする。
ウィンドウ更新分化器410は、表示アプリケーションタイプ、ならびにウィンドウの座標および画面サイズ等の情報を用いてこれを実現することができる。
表示アプリケーションタイプは、たとえば、新しいウィンドウが作成されたとき、ウェブサイトのユニフォームリソースロケータ(URL)がクリックされたとき、またはアプリケーションが実行されたときにドライバインタフェース210(図2)から得ることができる。
座標および画面サイズは、ビデオフレームバッファへの更新のどの部分がどのウィンドウに属するかを見つけるのに役立つ。
【0030】
グラフィックスウィンドウ更新はグラフィックスウィンドウ更新キュー421に転送され、ビデオウィンドウ更新はビデオウィンドウ更新キュー422に転送され、他のウィンドウ更新は他のウィンドウ更新キュー423に転送される。
【0031】
図2に戻ると、本実施形態では、イベントの各キュー231〜234からデスクトップストリーミングエンジン250への転送は、各レギュレータ241、242、243、および244によってトリガされる。
同様に、図4の実施形態では、キュー421〜423は各レギュレータ431、432、および433の制御下にある。
【0032】
一実施形態では、図2のレギュレータ241〜244(および図4のレギュレータ431〜433)は、しきい値に達したこと、または或る時間間隔が経過したことに基づいて、それぞれの各キューからイベントをトリガする(促す)。
しきい値は、各イベントキュー内のイベントの数に基づく。
キュー内のイベントの数が予め定められたしきい値に達すると、イベントのいくつかの部分またはイベントのすべてをキューから転送することができる。
しきい値メカニズムはイベントをバースト処理する能力を提供し、タイムアウト信号に応答してイベントが転送される前に、キューに蓄積されるイベントが多くなりすぎないようにする。
しきい値は、各キュー231〜234および421〜423ごとに異なってもよい。
しきい値はまた、デスクトップストリーミングクライアント120(図1)へのチャネルのモニタリングに基づいて、またはデスクトップストリーミングクライアント120からのフィードバックに基づいて、デスクトップストリーミングエンジン250によって変更することも可能である。
【0033】
その他の場合、本実施形態によれば、イベントの各イベントキューからの転送は、指定された時間間隔が経過した後で行われる。
したがって、一実施形態では、図2のレギュレータ241〜244および図4のレギュレータ431〜433はタイマを含むことができる。
時間間隔は、各キュー231〜234(図2)および421〜423(図4)ごとに異なってもよい。
時間間隔はまた、デスクトップストリーミングクライアント120(図1)へのチャネルのモニタリングに基づいて、またはデスクトップストリーミングクライアント120からのフィードバックに基づいて、デスクトップストリーミングエンジン250(図2)によって変更することも可能である。
これについて、図5および図6と併せてさらに以下説明する。
【0034】
図5は、本発明の一実施形態によるデスクトップストリーミングエンジン250のブロック図である。
図5に示すように、デスクトップストリーミングエンジン250は、説明および考察を明確にするために別個に表された複数の要素を備えるが、これら要素はデスクトップストリーミングエンジン250内の別個のエンティティとして存在しなくてもよいことが理解される。
一般に、本発明の各種実施形態によれば、デスクトップストリーミングエンジン250は、図5の各種要素によって提供される能力および機能を提供する。
さらに、デスクトップストリーミングエンジン250は、本明細書において述べる能力および機能に加えて他の能力および機能も提供し得る。
【0035】
本実施形態では、スケジューラ510がレギュレータ580(たとえば、図2および図4のそれぞれのレギュレータ241〜244および431〜433)に結合され、レギュレータ580は次いでキュー590(たとえば、図2および図4のそれぞれのキュー231〜234および421〜423)に結合される。
スケジューラ510はモニタ530にも結合される。
一実施形態では、モニタ530は、チャネル571、572、および573の空き帯域幅を定期的に測定する。
3つのチャネルしか示していないが、3つ以外の或る数のチャネルがあり得ることが理解される。
別の実施形態では、モニタ530はまた、クライアントの作業負荷ならびにクライアント装置の属性(たとえば、画面サイズおよび解像度等の装置の表示能力、プロセッサ速度等の装置の処理能力、装置の空きメモリ容量等)に関する情報を、デスクトップストリーミングクライアント120(図1)から集める。
モニタ530からの情報に基づいて、スケジューラ510は、各種イベントキューからのイベントの転送の開始に使用するトリガ(たとえば、時間間隔、しきい値、または他のメカニズム)を設定または調節することができる。
上で述べたように、各キューごとに、異なる時間間隔、しきい値等を指定することができる。
【0036】
制御イベントキュー231およびウィンドウ移動キュー232(図2)内のイベントを転送するスケジュールは、これらタイプのイベントで必要な通信オーバーヘッドが低く、したがって即座にではないにせよ略即座に転送することができるため、比較的単純である。
イベントをウィンドウ更新キュー233およびオーディオサンプルキュー234から転送するスケジュールは、クライアント102(図1)に満足のいく表示を提供するために、モニタ530(またクライアントのモニタ630から、図6参照)からの情報に従って適合させることができる。
【0037】
引き続き図5を参照するとともに、図2および図4も参照すると、転送エンジン540が、イベントタイプに基づいて、イベントをイベントキュー590から適切なチャネルに転送する。
たとえば、一実施形態では、制御イベントキュー231、ウィンドウ移動キュー232、グラフィックスウィンドウ更新キュー421、および他のウィンドウ更新キュー423からのイベントはTCPチャネルに転送することができ、オーディオサンプルキュー234およびビデオウィンドウ更新キュー422からのイベントはRTPチャネルに転送することができる。
【0038】
図5を参照すると、本実施形態では、ビデオおよび/またはオーディオ内容はエンコーダ550を使用してエンコード(圧縮)することができる。
エンコードの程度は通常、クライアント102(図1)の属性に応じるが、クライアント102とサーバ101(図1)の間の接続(チャネル)の帯域幅によっても影響を受け得る。
【0039】
本実施形態では、図5のシンクロナイザ560がオーディオを他の関連するメディア部分と同期させる。
オーディオに関連するメディア部分は、テキスト、グラフィックス、またはビデオであり得る。
一実施形態では、オーディオおよび関連する部分は、別個のチャネル(たとえば、RTPチャネル)を介して送信される。
この実施形態では、シンクロナイザ560は、スケジューラ510に、対応するサンプルキュー(図2のオーディオサンプルキュー234、ウィンドウ更新キュー233、および/またはウィンドウ移動キュー232)からデータを同期して得るように要求する。
たとえば、1秒に値するオーディオパケットが得られる場合、1秒に値するビデオパケットも得るべきである。
このタイプの手法は、オーディオパケットおよびビデオパケットがクライアント102(図1)に同時に、または互いに短い間隔以内で到着することを確実にするのに役立つ。
クライアント102は、到着時間のいずれの不一致も解決するために小容量バッファを利用し得る。
【0040】
別の実施形態では、図5を参照すると、同期は、メディア部分(たとえば、ビデオデータ)がエンコードされるか否かに関係なくエンコーダ550によって行われる。
この実施形態では、エンコーダ550は、オーディオおよび関連するメディア部分を多重化し、その後、データを通信マネージャ570に転送し、通信マネージャは次いで、1つのチャネル(たとえば、RTPチャネル)を介して、多重化パケットを転送することができる。
クライアント102(図1、以下図6も参照)上のデコーダが、多重化データを同期して再生することができる。
たとえば、実際の時間の1秒以内で、デコーダは1秒に値するオーディオデータをデコードし、これをオーディオバッファに配置することができる。
実際の時間の1秒の残りの時間中に、デコーダは可能な限り多くのビデオフレームをデコードすることができる。
このようにして、図2のデスクトップストリーミングサーバ110は、クライアント側で利用可能な資源を利用することができる。
【0041】
引き続き図5を参照すると、本実施形態では、通信マネージャ570が通信チャネル571〜573を管理する。
また本実施形態では、クライアントイベント受信器520が、制御イベント(たとえば、キーボードイベントおよびマウスイベント)をデスクトップストリーミングクライアント120(図1)から受け取る。
クライアントイベント受信器520は、これらイベントをドライバインタフェース210に転送し、ドライバインタフェース210は、一実施形態では、これらイベントをビデオドライバ203(図2)に転送する。
【0042】
まとめると、一実施形態では、デスクトップストリーミングサーバ110(図2)は、イベントを各種ドライバからインターセプトしてフィルタリングし、イベントタイプに基づいて適したイベントキューに送り、オプションとして、選択されたビデオデータおよびオーディオデータをエンコードし、RTPチャネル等のチャネルを介してそのデータをクライアントにストリーミングし、クライアントから受け取るイベントに対応する。
【0043】
図6は、本発明の一実施形態によるデスクトップストリーミングクライアント120のブロック図である。
図6に示すように、デスクトップストリーミングクライアント120は、説明および考察を明確にするために別個に表される複数の要素を備えるが、これら要素はデスクトップストリーミングクライアント120内の別個のエンティティとして存在しない場合もあることが理解される。
一般に、本発明の各種実施形態によれば、デスクトップストリーミングクライアント120は、図6の各種要素によって提供される能力および機能を提供する。
さらに、デスクトップストリーミングクライアント120は、本明細書に述べる能力および機能に加えて他の能力および機能を提供し得る。
【0044】
本実施形態では、デスクトップストリーミングクライアント120は、エージェント610(デーモンと呼ばれる場合もある)を備える。
この実施形態では、エージェント610は、サーバ101、具体的にはデスクトップストリーミングサーバ110(図1)とのチャネル接続を確立し、維持する。
述べたように、これらチャネルはTCPプロトコルおよびRTPプロトコルを利用し得る。
エージェント610はまた、チャネルを介して受け取ったデータを処理エンジン620に転送する。
エージェント610はまた、空きチャネル帯域幅に関するデスクトップストリーミングサーバ110からの問い合わせに答えることができる。
さらに、セッション開始時に、エージェント610は、デスクトップストリーミングサーバ110にクライアントのデコード能力、ならびにプロセッサ速度、表示画面サイズ、および解像度等の他のクライアント属性を通知することができる。
【0045】
本実施形態では、図6のエージェント610はモニタ630に結合され、情報をモニタ630から図1のデスクトップストリーミングサーバ110に提供することができる。
この実施形態では、モニタ630はクライアント102(図1)の作業負荷をモニタリングすることができ、また、空きメモリ容量に関する情報も提供することができる。
また、モニタ630は、表示がデスクトップストリーミングサーバ110から受け取ったイベントに基づいて生成されることの効率に関するフィードバックを提供することができ、それによって、たとえばストリーミングレートをフィードバックに従って調節することができる。
したがって、たとえば、図5のスケジューラ510がモニタ630からの(およびエージェント610からも)情報を使用して、デスクトップストリーミングサーバ110の各種イベントキューからのイベントの転送を開始するために使用されるトリガ(たとえば、時間間隔、しきい値、または他のメカニズム)を設定または調節することができる。
【0046】
図6を参照すると、本実施形態では、エージェント610は処理エンジン620にも結合される。
エージェント610が受け取ったイベントは、処理エンジン620に転送される。
一実施形態では、処理エンジン620は、データがエンコードされる場合はデータ(イベント)をデコード(圧縮解除)するデコーダ622を備える。
処理エンジン620からのイベントはドライバインタフェース640に転送され、ドライバインタフェース640は、ドライバインタフェース210(図2)に関して上で説明した様式と同様に機能し、イベントをビデオドライバ663および/またはオーディオドライバ664に転送する。
【0047】
本実施形態では、ドライバインタフェース640は、クライアント装置のキーボードドライバ661およびマウスドライバ662からもイベントを受け取る。
これらイベントはクライアントイベントプロセッサ650に転送され、クライアントイベントプロセッサ650は、重要ではないイベントをなくすことによってこれらイベントを最適化し、次いでエージェント610を介して重要なイベントをデスクトップストリーミングサーバ110(図2)に転送する。
すなわち、たとえば、特定のカーソル移動の場合、クライアントイベントプロセッサ650が、移動の開始座標および終了座標のみを識別して保持し、デスクトップストリーミングサーバ110に転送して、カーソル移動に関連する中間座標をなくすことができる。
【0048】
したがって、まとめると、一実施形態では、デスクトップストリーミングクライアント120(図6)は、サーバから転送されたイベントをデコードし(イベントがエンコードされている場合)、イベントに基づいて表示を更新し、イベントがオーディオサンプルを含む場合はオーディオ再生を提供し、デスクトップストリーミングサーバ110(図2)からの問い合わせに答え、モニタリング情報をデスクトップストリーミングサーバ110に定期的に提供し、制御イベントをインターセプトしてデスクトップストリーイングサーバ110に送信する。
【0049】
図7は、本発明の一実施形態による、イベントをサーバからクライアントに転送する方法のフローチャート700である。
特定のステップをフローチャート700に開示するが、係るステップは例示的なものである。
すなわち、本発明の実施形態は、他の各種ステップまたはフローチャート700に記したステップの変形の実行にも適している。
フローチャート700におけるステップは、提示される順序とは別の順序で実行することも可能であり、またフローチャート700におけるステップをすべて実行しなくてもよいことが理解される。
フローチャート700で説明される方法のすべて、または一部は、たとえば、コンピュータシステム等のコンピュータ使用可能媒体に常駐するコンピュータ可読かつコンピュータ実行可能な命令を使用して実装することができる。
一般に、フローチャート700は、図1のサーバ101等の装置によって実装される。
【0050】
図7のステップ710において、本実施形態では、イベントがドライバから受け取られる。
イベントは、キーボードイベント、カーソル制御(たとえば、マウス)イベント、ビデオイベント、またはオーディオイベントであり得る。
【0051】
ステップ720において、本実施形態では、イベントは、イベントタイプに従ってイベントキューに送られる。
すなわち、同じタイプのイベントが特定のキューに転送される。
一実施形態では、イベントはフィルタリングされてイベントタイプが識別される。
【0052】
ステップ730において、本実施形態では、イベントはイベントタイプに従って処理される。
たとえば、イベントがマルチメディアデータ(たとえば、ビデオデータおよび/またはオーディオデータ)を含む場合、イベントをエンコードすることができる。
カーソル移動の場合、開始点および終了点のみの座標を保持し、開始点と終了点の間のポイントの座標をなくすことができる。
【0053】
ステップ740において、本実施形態では、イベントは、トリガされたときにクライアントに転送される。
クライアントへの転送は、イベントのタイプに対応するプロトコルに従って行われる。
一実施形態では、イベント転送は、指定された時間間隔の経過によってトリガされる。
別の実施形態では、イベント転送は、イベントキュー内のイベントの数が指定されたしきい値に達したときにトリガされる。
【0054】
こうして、本発明の実施形態が説明されてきた。
本発明は特定の実施形態において説明されてきたが、本発明はそのような実施形態に限定されるものと解釈されるべきではなく、むしろ添付の特許請求の範囲に従って解釈されるべきであることは理解されたい。
【図面の簡単な説明】
【0055】
【図1】本発明の一実施形態による、ネットワークに結合されたサーバおよびクライアントのブロック図である。
【図2】本発明の一実施形態によるデスクトップストリーミングサーバのブロック図である。
【図3】本発明の一実施形態によるドライバインタフェースのブロック図である。
【図4】本発明の一実施形態によるウィンドウ更新の分化を示すブロック図である。
【図5】本発明の一実施形態によるデスクトップストリーミングエンジンのブロック図である。
【図6】本発明の一実施形態によるデスクトップストリーミングクライアントのブロック図である。
【図7】本発明の一実施形態による、リモートクライアントにイベントを転送する方法のフローチャートである。
【符号の説明】
【0056】
110・・・デスクトップストリーミングサーバ,
120・・・デスクトップストリーミングクライアント,
201・・・キーボードドライバ,
202・・・マウスドライバ,
203・・・ビデオドライバ,
204・・・オーディオドライバ,
210・・・ドライバインタフェース,
220・・・イベントフィルタ,
231・・・制御イベントキュー,
232・・・ウィンドウ移動キュー,
233・・・ウィンドウ更新キュー,
234・・・オーディオサンプルキュー,
241〜244・・・レギュレータ,
250・・・デスクトップストリーミングエンジン,
301、302・・・インタフェース,
305・・・共通アプリケーションプログラムインタフェース,
250・・・デスクトップストリーミングエンジン,
410・・・ウィンドウ更新分化器,
421・・・グラフィックスウィンドウ更新キュー,
422,423・・・ビデオウィンドウ更新キュー,
431〜433・・・レギュレータ,
510・・・スケジューラ,
520・・・クライアントイベント受信器,
530・・・モニタ,
540・・・転送エンジン,
550・・・エンコーダ,
560・・・シンクロナイザ,
570・・・通信マネージャ,
571〜573・・・チャネル,
580・・・レギュレータ,
590・・・キュー,
610・・・エージェント,
620・・・処理エンジン,
622・・・デコーダ,
630・・・モニタ,
640・・・ドライバインタフェース,
650・・・クライアントイベントプロセッサ,
661・・・キーボードドライバ,
662・・・マウスドライバ,
663・・・ビデオドライバ,
664・・・オーディオドライバ,

【特許請求の範囲】
【請求項1】
イベントをサーバからリモートクライアントに転送する方法(700)であって、
イベントを、ドライバから受け取ることと(710)、
前記イベントを、イベントタイプに従って、イベントキューに送ること(720)と、
前記イベントを、前記イベントタイプに従って処理すること(730)であって、前記イベントが、マルチメディアデータを含むときには、前記イベントをエンコードすることと
を含む処理すること(730)と、
トリガされたときに、前記イベントを、前記イベントタイプに対応するプロトコルに従って、前記リモートクライアントに転送することと(740)
を含む方法。
【請求項2】
前記イベントは、キーボードイベント、マウスイベント、ビデオイベントまたはオーディオイベントであり、
前記ドライバは、キーボードドライバ、マウスドライバ、ビデオドライバまたはオーディオドライバである
請求項1記載の方法。
【請求項3】
前記プロトコルは、
キーボードイベント、マウスイベントおよびグラフィックスイベントの場合は、伝送制御プロトコル(TCP)であり、
ビデオイベントおよびオーディオイベントの場合は、リアルタイムプロトコル(RTP)である
請求項2記載の方法。
【請求項4】
前記送ることは、
前記イベントをフィルタリングし、前記イベントタイプを識別すること(720)
を含む
請求項1記載の方法。
【請求項5】
前記マルチメディアデータを処理することは、
前記エンコード中に、前記マルチメディアデータのオーディオ部分および関連するメディア部分を同期させること(730)
をさらに含み、
前記関連するメディア部分は、テキスト、グラフィックスおよびビデオからなる群から選択される
請求項1記載の方法。
【請求項6】
前記転送することは、タイマによってトリガされる
請求項1記載の方法。
【請求項7】
前記転送することは、前記イベントキュー内のイベントの数が、しきい値に達したときにトリガされる
請求項1記載の方法。
【請求項8】
前記リモートクライアントから、イベントを受け取ること(520)
をさらに含む請求項1記載の方法。
【請求項9】
イベントをリモートクライアントに転送するシステム(110)であって、
異なるタイプのイベントを、複数のドライバ(201〜204)から受け取るドライバインタフェース(210)と、
前記ドライバインタフェースに結合されたイベントフィルタ(220)であって、イベントタイプによってイベントを識別し、前記イベントを、前記イベントタイプに従ってイベントキュー(231〜234、421〜423)に入れるイベントフィルタ(220)と、
前記イベントキューに結合されたレギュレータ(241〜244、431〜433)であって、前記イベントが、マルチメディアを含むときには、前記イベントを、前記イベントキューから、前記イベントをエンコードする処理エンジンに促すレギュレータ(241〜244、431〜433)と、
前記処理エンジンに結合されたチャネル(100)であって、前記イベントタイプに対応するプロトコルに従って、前記イベントを前記リモートクライアントに転送するチャネル(100)と
を備えたシステム。
【請求項10】
イベントをリモートサーバから受け取るシステム(120)であって、
異なるタイプのイベントを、前記リモートサーバから受け取るために使用される複数のチャネルを管理するエージェント(610)であって、各チャネルは複数の異なるプロトコルのうちの1つに関連し、前記チャネルのうちの1つは、マルチメディアデータをストリーミングするエージェント(610)と、
前記チャネルに結合された処理エンジン(620)であって、前記イベントがエンコードされたマルチメディアデータを含むときに、イベントをデコードする処理エンジン(620)と、
前記処理エンジンに結合されたドライバインタフェース(640)であって、前記イベントを、イベントタイプに従って、オーディオドライバおよびビデオドライバに転送し、前記イベントは、表示装置に表示することが可能であるドライバインタフェース(640)と
を備えたシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公表番号】特表2006−514353(P2006−514353A)
【公表日】平成18年4月27日(2006.4.27)
【国際特許分類】
【出願番号】特願2004−557182(P2004−557182)
【出願日】平成15年11月7日(2003.11.7)
【国際出願番号】PCT/US2003/035821
【国際公開番号】WO2004/051962
【国際公開日】平成16年6月17日(2004.6.17)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
Linux
【出願人】(503003854)ヒューレット−パッカード デベロップメント カンパニー エル.ピー. (1,145)
【Fターム(参考)】