JP5123186B2 - 任意のフォーマットにおけるラージオブジェクトの通信のためのリモートプロトコルサポート - Google Patents

任意のフォーマットにおけるラージオブジェクトの通信のためのリモートプロトコルサポート Download PDF

Info

Publication number
JP5123186B2
JP5123186B2 JP2008529048A JP2008529048A JP5123186B2 JP 5123186 B2 JP5123186 B2 JP 5123186B2 JP 2008529048 A JP2008529048 A JP 2008529048A JP 2008529048 A JP2008529048 A JP 2008529048A JP 5123186 B2 JP5123186 B2 JP 5123186B2
Authority
JP
Japan
Prior art keywords
client device
fragment
pdu
server computer
metadata
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2008529048A
Other languages
English (en)
Other versions
JP2009506456A5 (ja
JP2009506456A (ja
Inventor
エル.コールマン ポール
シュミーダー ウィルヘルム
パーソンズ ジョン
アブド ナディム
シック ジョイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2009506456A publication Critical patent/JP2009506456A/ja
Publication of JP2009506456A5 publication Critical patent/JP2009506456A5/ja
Application granted granted Critical
Publication of JP5123186B2 publication Critical patent/JP5123186B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/2895Intermediate processing functionally located close to the data provider application, e.g. reverse proxies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/303Terminal profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/561Adding application-functional data or data for application control, e.g. adding metadata
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/262Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Library & Information Science (AREA)
  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Description

本発明は、任意のフォーマットにおけるラージオブジェクトの通信のためのリモートプロトコルサポートに関する。
アプリケーションプログラム、またはアプリケーションは、グラフィックイメージを作成し、提供することができる。グラフィックイメージは、他のアプリケーションに移すことができるビットマップによって表すことができる。グラフィックイメージは、複雑性またはサイズにおいて変化することができるので、グラフィックイメージを表すビットマップもまた、複雑性またはサイズにおいて変化することができる。
サーバーコンピュータが1または複数のクライアントコンピュータをサポートする、サーバーおよびリモートクライアントシステムにおいて、サーバーコンピュータからのビットマップは、より小さなピースに分解し、クライアントコンピュータと通信することができる。クライアントコンピュータは、それぞれのより小さなビットマップのピースを個々にディスプレイし、または処理することができる。言い換えると、より大きなグラフィックイメージをディスプレイするために、それぞれのより小さなビットマップのピースを処理する。高速で変換または更新する比較的大きなサイズのビットマップにとっての問題は、クライアントコンピュータで見られる切り離し効果である。切り離し効果は、クライアントコンピュータが各ビットマップのピースをディスプレイするように起こる。
ビットマップが、クライアントコンピュータに一度に(すなわち、より小さなピースに分解されずに)送信されると、クライアントコンピュータは、どのようにビットマップをディスプレイすることができるかを、クライアントコンピュータで見られる固有の制約(例えば、高速更新)を与えて決めることができるが、ビットマップがその全体で送られると、ビットマップは圧縮されなければならないかもしれない。圧縮は、典型的には、比較的大きいサイズのビットマップのサポートに用いられる。サーバーコンピュータで稼動しているアプリケーションは、特定の圧縮フォーマットに基づいてビットマップを圧縮することができる。圧縮フォーマットは、損失をともなうものであるかもしれない、つまりビットマップ(すなわち、グラフィックイメージ)が圧縮されると、何らかの情報またはデータが落ちるか、失われることを意味する。
ビットマップは、RDP(Remote Desktop Protocol)などの特定の通信プロトコルを用いて、クライアントコンピュータに通信し、伝送することができる。典型的に、通信プロトコルが用いられると、圧縮されたビットマップは、さらに、規格化された非圧縮フォーマット内に解凍され、通信プロトコルエンコーダがクライアントコンピュータに対する伝送のためにビットマップを圧縮するのを可能にする。これは、サーバーコンピュータにとって重大で冗長的な働きを伴うことができ、あらかじめ圧縮されたビットマップにすでに存在するものよりも低圧縮率にすること(すなわち、元のビットマップのさらなる低下)ができる。
さらに、RDPなどの通信プロトコルが実装されると、セパレートチャネルまたは仮想チャネルは、1または複数のビットマップと関連のあるメタデータ情報を提供するように実装することができる。このセパレートまたは仮想チャネルは、典型的に、ビットマップ、またはビットマップを含むグラフィックスストリームと同期を取らない。ビットマップまたはグラフィックスストリームが、メタデータが伝送される仮想チャネルからチャネルセパレートを経由して伝送されることは、典型的なことである。このことは、グラフィックスストリームと、あるメタデータが同期を取ることが望まれ、または要求されるシナリオにおける制限となる可能性がある。RDPに関するこのような制限の具体的な例は、クライアント側のウィンドウの位置および次元についての情報の不足である。グラフィックスストリームのディスプレイは、ウィンドウの配置によって直接的に影響されるべきである場合、注意深くグラフィックスストリームと同期を取ることは、ウィンドウの配置の変化にとって重要なことであるだろう。
さらに、クライアント側での任意のラージオブジェクトの再構築は、クライアントコンピュータでのメモリ管理上の問題点を引き起こす。例えば、ビットマップおよび/またはビットマップのピースは、クライアントコンピュータによって受け取られるので、ビットマップおよび/またはビットマップのピースは、バッファ中に配置し、それから再構築し、処理することができる。しかしながら、クライアントコンピュータのバッファは、ビットマップおよび/またはビットマップのピースに適合するほど十分にラージではない可能性がある。
クライアントコンピュータまたはサーバークライアントシステムのデバイスが、サーバーコンピュータに、ビットマップまたは他のオブジェクトを受け取るための能力に関する情報を提供することを可能にする、方法および装置を提供し、クライアントコンピュータが受け取ることができるオブジェクトを構築し、クライアントコンピュータのアプリケーションのメタデータを、ビットマップまたはオブジェクトを表すデータに加える。
この概要は、以下の詳細な説明でさらに説明する簡単な形式の概念の選択を紹介するために提供する。この概要は、特許請求の範囲に記載された事項の重要な特徴または本質的な特徴を特定することを意図したものではなく、クレームに記載された事項の範囲を定める補助として用いられることを意図したものでもない。
詳細な説明は、添付の図を参照して説明される。図において、参照番号の最左の桁は、参照番号が最初に出てきた図を識別する。異なる図中における同じ参照番号の使用は、類似または同一のアイテムを示す。
図1は、典型的なサーバーおよびリモートクライアント、またはサーバークライアントシステム100を示す。システム100は、サーバーコンピュータ102、および1または複数のクライアントデバイス、またはクライアントコンピュータ104として表されているクライアントコンピュータを含む。サーバーコンピュータ102およびクライアントコンピュータ104は、インターネットを含む1または複数のネットワークを含むことができるネットワーク106によって接続される。特に、グラフィックスイメージ、オブジェクト、および/またはグラフィックスイメージを表すビットマップは、クライアントコンピュータ104による処理またはディスプレイのために、サーバーコンピュータ102からクライアントコンピュータ104に送信される。グラフィックスイメージ、オブジェクト、および/またはビットマップは、どんな任意のサイズであってもよい。グラフィックスイメージ、オブジェクト、および/またはビットマップは、サーバーコンピュータ102によって、RDP(Remote Desktop Protocol)などの通信プロトコルを用いて、通信することができる。TCP/IP(transmission control protocol over Internet protocol)などの移送プロトコルは、ネットワーク106上において移送するときに、実装することができる。あるケースにおいては、RDPが実装されると、サーバーコンピュータ102は、「RDPサーバー」と呼ばれる可能性があり、クライアントコンピュータ104は、「RDPクライアント」と呼ばれる可能性がある。
グラフィックスイメージ、オブジェクト、および/またはビットマップは、サーバーコンピュータ102から通信されるので、グラフィックスイメージ、オブジェクト、および/またはビットマップを記述し、または関連付けられるどのメタデータも、グラフィックスイメージ、オブジェクト、および/またはビットマップに含まれるかもしれない。これは、メタデータがグラフィックスイメージ、オブジェクト、および/またはビットマップと同期を取ることを可能にする。サーバークライアントシステム100は、この例において説明されるが、これは、イントラデバイスシステム(例えば、スタンドアローンのコンピューティングデバイス)などの他の実装が、本明細書で説明する技術および方法を使用することができることを意図する。
サーバーコンピュータ102は、中央演算処理装置、またはプロセッサ108として表される1または複数のプロセッサを含む。プロセッサ108は、記憶デバイスまたはメモリ110を制御し、またはアクセスすることができる。この例示的な実装においては、サーバーコンピュータ102は、さらに、メモリ110内に常駐することができるオペレーティングシステム112を含む。サーバーコンピュータ102は、プロセッサ108によって制御される1または複数のアプリケーションプログラムまたは(1または複数の)アプリケーション114を含む。特に、アプリケーション114は、クライアントコンピュータ104と通信するラフィックスイメージ、オブジェクト、および/またはビットマップを生成または提供するアプリケーションを含む。
DLL(dynamic link library)116は、サーバーコンピュータ102に含まれる。特に、DLL116は、(1または複数の)アプリケーション114がグラフィックスイメージ、オブジェクト、および/またはビットマップを受け渡すことを可能にする(1または複数の)アプリケーションプログラムインターフェース118を通じてアクセスされるルーチンを含む。「DrvEscape」を含むそのようなルーチンの例は、ユーザーモード(例えば、アプリケーションレベル)から呼び出して、ディスプレイドライバ「rdpdd.dll」(ディスプレイドライバは、典型的にカーネル/オペレーティングシステムモードまたはレベルである)とし、任意のエンコードしたビットマップを、この例で「SuperBlt」またはスーパービットブロック120と呼ばれる特定のPDUとして再エンコードするように受け渡し、任意のエンコードしたビットマップは、最終的には、クライアントコンピュータ104に受け渡されるか、または通信される。(1または複数の)アプリケーションプログラムインターフェース118を通じて受け渡されるグラフィックスイメージ、オブジェクト、および/またはビットマップは、ピクセルのアルファ透過性の情報ごとにサポートするフォーマットを含む、どんな任意のフォーマット内にもある可能性がある。これは、メタデータがグラフィックスストリームと同期をとるように、メタデータをクライアントコンピュータ104に送ることができる例示的な実装であり、ここでは、ビットマップは、知られ、存在している「BitBlt」ルーチンを用いて、「Win32」グラフィックスストリームなどの標準のコールとなることができる。
スーパービットブロック120は、RDP(remote desktop protocol)などの通信プロトコルにおいて、下層レイヤによってマルチデータブロックに分割される、単一のPDUである。ある実装においては、スーパービットブロック120は、プロトコルデータユニット122の一部である。エンコーダ124は、スーパービットブロック120をパケット、またはグラフィックスストリームに圧縮またはパッケージするように、実装することができ、そこでは、パケット、および/またはグラフィックスストリームは、単一のチャネルを経て送られる。特に、エンコーダ124は、RDPなどの固有の通信プロトコル、および/またはTCP/IPなどの伝送プロトコルを実装するように構成される。他の実装においては、セパレートコンポーネントは、エンコーダ124の機能を提供するように用いることができる。あるケースにおいては、エンコーダ124またはサーバーコンピュータ102の他のコンポーネントは、どんなグラフィックスイメージ、オブジェクト、および/またはビットマップも大きすぎるので、より小さく扱いやすいグラフィックスイメージ、オブジェクト、および/またはビットマップに分解することができる。より小さなグラフィックスイメージ、オブジェクト、および/またはビットマップは、それから、クライアントコンピュータ104で再構築される。
クライアントコンピュータ104は、中央演算処理装置、またはプロセッサ126として表される1または複数のプロセッサを含む。プロセッサ126は、記憶デバイスまたはメモリ128を制御し、またはアクセスすることができる。この例示的な実装においては、クライアントコンピュータ104は、さらに、メモリ128に常駐することができるオペレーティングシステム130を含む。クライアントコンピュータ104は、1または複数のアプリケーションプログラム、またはプロセッサ126によって制御される(1または複数の)アプリケーション132を含む。特に、(1または複数の)アプリケーション132は、サーバーコンピュータ102から受け取ったグラフィックスイメージ、オブジェクト、および/またはビットマップを処理するアプリケーションを含む。特に、グラフィックスイメージ、オブジェクト、および/またはビットマップは、アプリケーション132によって、DLL(dynamic link library)136内のルーチンまたはドライバにアクセスする(1または複数の)アプリケーションプログラムインターフェース134を通じて、受け取られる。固有のアプリケーションプログラムインターフェースは、以前から存在する「bit block」規則およびプロトコルに基づいて、「bit block」型のインターフェースである可能性があり、ここでは、そのようなインターフェースは、再構築されたビットマップデータ(すなわち、グラフィックスイメージ、オブジェクト、ビットマップ)を、対応するメタデータとともに(1または複数の)アプリケーション132に受け渡すために用いられる。DLL136のルーチンまたはドライバは、特に、グラフィックスデータまたは情報を、アプリケーション132からオペレーティングシステム130に受け渡すために用いられる。
クライアントコンピュータ104は、デコーダ138を含む。デコーダ138は、データまたはグラフィックスストリーム内にあるかもしれないが、ないかもしれないスーパービットブロック(すなわち、グラフィックスイメージ、オブジェクト、および/またはビットマップ)などの受け取ったPDUを解凍することができる。デコーダ138の他の機能は、受け取ったグラフィックスイメージ、オブジェクト、および/またはビットマップを、特定の通信プロトコル(例えば、RDP)および/または伝送プロトコル(例えば、TCP/IP)に基づいてデコードすることを、含むことができる。
固有のケースでは、スーパービットブロックなどの受け取ったオブジェクトは、クライアントコンピュータ104で再構築される離散オブジェクトの代わりにストリームとして取り扱うことができる。例示的な実装においては、デコーダ138は、グラフィックスイメージ、オブジェクト、および/またはビットマップを記述するスーパービット120を含むデータストリームまたはグラフィックスストリームのデコード状態のトラックを保つために用いることができる。グラフィックスストリームのデコード状態をトラッキングすることにより、グラフィックスストリームは、割り込みをされる可能性があり、クライアントコンピュータ104は、割り込みが生じる場合に継続すべき場所を知る。固有の実装は、デコーダ138を、受け取ったデータ(例えば、グラフィックスストリーム内のスーパービットブロック)のコンテキストを明示的に格納する状態マシンとして提供することである。別の実装においては、デコーダ138は、デコーダ138がグラフィックスストリームから読み込むように、セパレートスレッドでサーバー102に対して稼動する。デコーダ138が、さらなるデータ(例えば、スーパービットブロック)のために待つ必要がある場合、デコーダ138は、「中断」される。中断されると、デコーダ138の状態は、暗黙的に、デコーダ138が稼動するセパレートスレッドのスレッドスタックに保存される。言い換えると、デコーダ138は中断されるが、デコーダ138がアンブロックになる(すなわち、中断されなくなる)場合に継続すべき場所を知っているように、デコーダ138の状態は、暗黙的にデコーダスレッドのスタックに固定される。
再構築バッファ140は、クライアントコンピュータ104内に含むことができる。再構築バッファ140は、特に、(1または複数の)アプリケーションインターフェース内のアプリケーションプログラムインターフェース134の受け渡しに先立ち、スーパービットブロック(すなわち、グラフィックスイメージ、オブジェクト、および/またはビットマップ)のより小さなピースを格納する。スーパービットブロックが小さなピースに分けられることを特徴とする特定の実装においては、再構築バッファ140は、クライアントコンピュータ104に含まれない。ある実装においては、セパレートバッファ(図示せず)は、クライアントコンピュータ104によるさらなる処理の前に、スーパービットブロック(すなわち、グラフィックスイメージ、オブジェクト、および/またはビットマップ)を一時的に格納するために用いることができる。
上述したように、クライアントコンピュータ104は、RDPなどの通信プロトコルを実装することができ、RDPクライアントと呼ぶことができる。RDPクライアントのように、クライアントコンピュータ104は、アプリケーションプログラムインターフェースを通じて、一組のプロトコルデータユニット144を含むスーパービットブロック142を受け取る。さらに、スーパービットブロック142は、すなわち、マルチデータブロックにするスプリットである。スーパービットブロック142は、他のプロトコルデータユニット144に含まれる可能性がある。特定のグラフィックスイメージ、オブジェクト、またはビットマップを記述するデータ含むスーパービットブロック142内のデータは、(1または複数の)アプリケーション132によって、ディスプレイ146にグラフィックスイメージを生成またはレンダーするために用いることができる。
図2は、マルチフラグメントPDU200の例示的なデータブロックの構造を示す。上述したスーパービットブロック120は、特に、マルチフラグメントPDU200によって実装される。
マルチフラグメントPDU200は、どんな固有のサイズであってもよい。しかしながら、リソース(例えば、バッファの受け取り)がクライアントコンピュータ104で制限されると、圧縮は、マルチフラグメントPDU200をサポートするために必要であるかもしれない。そのようなケースにおいては、クライアントコンピュータ104は、サーバーコンピュータ102に固有のサイズ制限に関して知らせるかもしれない。例として、マルチフラグメントPDU200は、最初は、1または2MBのサイズであってよく、クライアントコンピュータ104は、64KBのみをサポートできる。実装は、スーパービットブロック120またはマルチフラグメントPDU200をより小さいピースに分解することを伴うことができる。別の実装においては、スーパービットブロック120またはマルチフラグメントPDU200の全体が送信され、ここでは、スーパービットブロック120またはマルチフラグメントPDU200の選択的なデータが圧縮され、スーパービットブロック120またはマルチフラグメントPDU200の全体のサイズを効果的に減少させる。
マルチフラグメントPDU200は、ヘッダー202、メタデータ204、およびペイロードまたはビット206を含むことができる。ヘッダー202は、色の濃さおよび圧縮型などのビットマップ(または、グラフィックスイメージまたはオブジェクト)に関する情報を含むことができる。さらに、ヘッダー202は、後続のメタデータ204およびビット206のサイズを記述することができる。あるケースにおいては、スーパービットブロック120またはマルチフラグメントPDU200は、サーバーコンピュータ102から、メタデータ204の情報のみ(すなわち、ペイロード206は送られないか、または空である)とともに伝達または通信することができる。メタデータ204は、ペイロード206内の情報を対象とする、どの追加情報をも含むことができる。メタデータ204内の情報は、特に、クライアントコンピュータ104の(1または複数の)アプリケーション132によって用いられるアプリケーションレベルのデータを対象とする。メタデータ204をペイロード206とともに提供することによって、メタデータは、ペイロード206と同期を取る。例として、メタデータの同期は、特に、音とディスプレイのアクションの同期を取ること、および安定したフレームレートのビデオの品質を向上させるためのタイミング情報と関連付けることにおいて、有益である。
マルチフラグメントPDU200は、最初のフラグメント208、次のフラグメント210、最後のフラグメント212によって表されているように、複数フラグメントに分割することができる。RDPプロトコルは、更新PDUメカニズムを提供する。この例においては、更新PDUメカニズムは、最初のフラグメント208、次のフラグメント210、最後のフラグメント212を含むマルチフラグメントPDU200などのマルチフラグメントPDUをサポートするまで拡張される。特に、RDPなどの通信プロトコルは、プロトコルの下層を通じて、マルチフラグメントPDUを、複数データブロック、または最初のフラグメント208、次のフラグメント210、最後のフラグメント212などの複数フラグメントに分割することが可能である。
マルチフラグメントPDU200は、ビットマップなどのどんなリソースを送るためにも用いることができる。言い換えると、マルチフラグメントPDU200は、どんな固有のオブジェクトタイプにも制限されない。「最初、次、最後」と識別されるマルチフラグメント208、210、および212を提供することによって、デコーダ層(例えば、デコーダ138)は、データをデコーダの上層に受け渡す前に追加フラグメントを受け取るべきかどうかを知っており、デコーダの上層は、PDUまたはマルチフラグメントPDU200内の実在のリソースまたはオブジェクトタイプに関して知っている。
図3は、データストリームと同期を取るアプリケーションレベルのメタデータを送信するプロセス300を示す。プロセス300は、サーバーコンピュータ(例えば、サーバーコンピュータ102)とクライアントコンピュータ(例えば、クライアントコンピュータ104)の間のプロトコルとして実装することができる。プロセス300は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせで実装することができる操作の順序を表す論理フローグラフのブロックの集合として図示される。ソフトウェアのコンテキストにおいては、ブロックは、1または複数のプロセッサによって実行されるときのコンピュータの構造を表し、列挙した操作を行う。フローチャートとして記述されているが、あるブロックは、一斉に、または異なる順序で起こりうることを意図している。
ブロック302では、サーバーコンピュータは、グラフィックスイメージに記述され、または関連づけられているオブジェクトまたはビットマップデータを受け取るための、1または複数のクライアントコンピュータ(デバイス)の可用性に関する情報を受け取る。例えば、オブジェクトは、マルチフラグメントPDU(例えば、マルチフラグメントPDU200)として表される。グラフィックスイメージは、アプリケーション、またはサーバーコンピュータで稼動しているアプリケーションプログラムによって、提供することができる。クライアントコンピュータの可用性に加え、サーバーコンピュータは、固有のクライアントコンピュータのリソース機能に関する情報を受け取ることができる。リソース機能は、受け取りバッファおよび再構築バッファを含むクライアントコンピュータのバッファ容量を含むことができる。情報は、データをサーバーコンピュータからクライアントコンピュータに送信するチャネル、またはセパレートチャネルを通じて伝達することができる。
ブロック304では、オブジェクトまたはビットマップ、またはオブジェクトまたはビットマップを表すデータ(例えば、マルチフラグメントPDU)を全体として送信するかどうかの決定が、サーバーコンピュータでなされる。決定の要因は、クライアントコンピュータのリソース機能である。対照的に、オブジェクトまたはビットマップ(データ)は、より小さなピースに分けることができる。より小さなピースは、最終的には、クライアントコンピュータによって受け取られ、再構築される。決定すること、および決定は、クライアントコンピュータのリソース機能に基づくことができる。
ブロック306では、ヘッダーおよびメタデータの情報は、オブジェクトまたはビットマップデータに追加される。メタデータは、特に、クライアントコンピュータに常駐するアプリケーションによって用いられることを対象とし、クライアントコンピュータでは、そのようなアプリケーションは、オブジェクトまたはビットマップデータを消費または処理する。メタデータは、さらに、オブジェクトまたはビットマップデータに関して、記述または提供することができる。オブジェクトは、上述の図2で説明したように、複数フラグメントを含むことができるマルチフラグメントPDUによって、表すことができる。特に、複数フラグメントは、順序付けすることができ、特定のフラグメントが配置される順序(例えば、最初、次、および最後)に関する各フラグメントの識別子を含むことができる。
ブロック308では、ヘッダー、メタデータ、およびオブジェクトまたはビットマップデータは、図2で説明したマルチフラグメントPDUなどの特定のデータフォーマットに構築することができ、クライアントコンピュータに送信することができる。ヘッダー、メタデータ、およびオブジェクトまたはビットマップデータ(すなわち、マルチフラグメントPDU、またはスーパービットブロック)は、さらに圧縮し、RDPなどの特定の通信プロトコル、および/またはTCP/IPなどの特定の伝送プロトコルに基づいてエンコードすることができる。離散マルチフラグメントPDUまたはスーパービットブロックは、データストリームの作成者(すなわち、アプリケーション)、およびデータストリームの消費者(すなわち、アプリケーション)が存在するように、イントラデバイス(すなわち、同一マシン内のデバイス)と通信するデータストリーム内に含まれるか、またはイントラデバイス(すなわち、同一マシン内のデバイス)と通信するデータストリームデータストリームの一部である可能性がある。
図4は、着信ラージオブジェクトをデータストリームとして取り扱うプロセス400を示す。プロセス400は、特に、ビットマップなどのラージオブジェクトを、クライアントコンピュータ(例えば、クライアントコンピュータ104)で維持することを対象としている。プロセス400は、スーパービットブロックのようなオブジェクトを受け取るように、クライアントコンピュータで実装することができる。プロセス400は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせで実装することができる操作の順序を表す論理フローグラフのブロックの集合として図示される。ソフトウェアのコンテキストにおいては、ブロックは、1または複数のプロセッサによって実行されるときのコンピュータ命令を表し、列挙した操作を行う。フローチャートとして記述されているが、あるブロックは、一斉に、または異なる順序で起こりうることを意図している。
ブロック402では、クライアントコンピュータは、グラフィックスまたはデータストリーム内で、スーパービットブロックのようなオブジェクトを受け取る。データストリームは、サーバーコンピュータから生じることができ、図1に示した例示的システム100によって説明されるように、1または複数のネットワーク上で伝送することができる。データストリームは、特定のスレッドまたはチャネルを通じて送信することができる。
クライアントコンピュータのデコーダまたは同様のコンポーネントは、データストリーム内でオブジェクトを受け取り、処理することができる。デコーダが、セパレートスレッド内のデータストリームを、データストリームを通信または送信するスレッドから受け取らない(すなわち、ブロック404の「NO」の枝に従う)場合、特定の実装に対して、ブロック406では、デコーダはデータストリームのデコード状態、特にデータストリーム内のオブジェクトのデコード状態をトラッキングすることができる。
ブロック408では、状態マシンとして動くデコーダは、コンテキストまたはデータストリーム内で受け取ったオブジェクトのデコード状態を格納することができる。ブロック410では、データストリームが割り込まれると(すなわち、デコーダがデータストリームの受け取りを停止すると)、それからデコードは、受け取ったオブジェクトのデコード状態に基づいて、継続することができる。
デコーダが、データストリームが受け取られるセパレートスレッドで稼動する場合(すなわち、ブロック404の「YES」の枝に従う場合)、別の実装においては、ブロック412では、デコーダは、セパレートスレッドのデータストリームから読み込まれる。
ブロック414では、データストリーム内の、さらなる、または追加のデータ/オブジェクトがデコードによって必要とされる場合、デコーダは中断される。ブロック416では、デコーダの状態は、保存される。特に、デコーダがセパレートスレッドで稼動する場合、デコーダが中断されると、セパレートスレッドのスレッドスタックは、暗黙的にデコーダの状態を保存する。ブロック418では、割り込みが生じると、デコードは、デコーダの状態(スレッドスタックの状態)に基づいて継続することができる。
(結論)
上述した方法およびデバイスは、処理するために、グラフィックイメージのビットマップなどの任意のサイズのオブジェクトを、クライアントデバイスと通信することについて説明する。本発明は、構造上の特徴、および/または方法的な動作に固有の言語で説明されているが、添付の特許請求の範囲に定義される本発明は、説明した固有の特徴、または動作に限定する必要がないことを理解されたい。むしろ、固有の特徴および動作は、特許請求の範囲に記載された発明の例示的な実装形式として開示する。
クライアントコンピュータがラージオブジェクトのフラグメントを再構築することを可能にする、プロトコルおよびAPI(application programming interfaces)を組み込むサーバークライアントシステムの図である。 マルチフラグメントプロトコルのデータユニットの例示的なブロック図である。 データストリームと同期を取るアプリケーションレベルのメタデータを送信するためのプロセスを図示するフローチャートである。 着信ラージオブジェクトをデータストリームの一部として取り扱うためのプロセスを図示するフローチャートである。

Claims (12)

  1. サーバーコンピュータが、該サーバーコンピュータからオブジェクトを受信するクライアントデバイスの機能に関する情報を受信するステップであって、前記オブジェクトは、グラフィックスイメージを表すビットマップを記述するステップと、
    前記サーバーコンピュータが、少なくとも前記クライアントデバイスの機能に基づいて、前記オブジェクトを分割して前記クライアントデバイスに送信すべきか、または前記オブジェクトを全体として前記クライアントデバイスに送信するかどうかを決定するステップと、
    前記クライアントデバイスのアプリケーションによって前記オブジェクトを処理するのに使用されるメタデータを、前記オブジェクトに追加するステップと、
    前記オブジェクトおよび前記メタデータをマルチフラグメントPDUに構築するステップと、
    前記マルチフラグメントPDU分割して、各フラグメントが対応する識別子によって識別される、複数のフラグメントを作成するステップと、
    前記識別子に基づく順序で各フラグメントが配置された前記マルチフラグメントPDUを、前記クライアントデバイスに送信するステップと
    を含むことを特徴とする方法。
  2. 前記受信した情報は、前記クライアントデバイスの受信用のバッファ容量および再構築用のバッファ容量を含むリソース機能に関する情報を含むことを特徴とする請求項1に記載の方法。
  3. 前記サーバーコンピュータが前記情報を受信するステップは、前記送信するステップが行われるチャネルとは別個のチャネルを介して前記情報を受信することを含むこと特徴とする請求項1に記載の方法。
  4. 前記追加するステップは、前記オブジェクトを記述するヘッダーを前記オブジェクトに追加するステップをさらに含むことを特徴とする請求項1に記載の方法。
  5. 前記送信するステップは、送信する前に、前記マルチフラグメントPDUを圧縮することをさらに含むことを特徴とする請求項1に記載の方法。
  6. 前記送信するステップは、前記マルチフラグメントPDUをデータストリームとして送信することを含むことを特徴とする請求項1に記載の方法。
  7. メモリと、
    オペレーティングシステムと、
    プロセッサと
    を備え、
    前記プロセッサが、
    グラフィックスイメージを表すビットマップを記述するオブジェクトを送信すべきクライアントデバイスの機能に関する情報を受信し、
    少なくとも前記クライアントデバイスの機能に基づいて、前記オブジェクトを分割して送信すべきか、または前記オブジェクトを全体として送信すべきかを決定し、
    前記クライアントデバイスに存在するアプリケーションが前記オブジェクトを処理するのに使用されるメタデータを、前記オブジェクトに追加し、
    前記オブジェクトおよび前記メタデータをマルチフラグメントPDUに構築し、
    前記マルチフラグメントPDU分割して、各フラグメントが対応する識別子によって識別される、複数のフラグメントを作成し、
    前記識別子に基づく順序で各フラグメントが配置された前記マルチフラグメントPDUを、前記クライアントデバイスに送信する
    ように構成されることを特徴とするサーバーコンピュータ。
  8. 前記クライアントデバイスの前記機能は、前記クライアントデバイスの受信用のバッファ容量および再構築用のバッファ容量を含むリソース機能を含むことを特徴とする請求項に記載のサーバーコンピュータ。
  9. 前記マルチフラグメントPDUを分割して複数のフラグメントを作成することは、前記クライアントデバイスのリソース機能に基づいて行われることを特徴とする請求項に記載のサーバーコンピュータ。
  10. オブジェクトを送信すべきクライアントデバイスの機能に関する情報を受信するステップであって、前記オブジェクトは、グラフィクスイメージを表す任意のサイズのビットマップであるステップと、
    前記オブジェクトを分割して前記クライアントデバイスに送信すべきか、または前記オブジェクトを全体として前記クライアントデバイスに送信すべきかどうかを、少なくとも前記クライアントデバイスの機能に基づいて決定するステップと、
    前記クライアントデバイスのアプリケーションによって前記オブジェクトを処理するのに使用されるメタデータを、前記オブジェクトに追加するステップと、
    前記オブジェクトおよび前記メタデータをマルチフラグメントPDUに構築するステップと、
    前記マルチフラグメントPDU分割して、各フラグメントが対応する識別子によって識別される、複数のフラグメントを作成するステップと、
    前記識別子に基づく順序で各フラグメントが配置された前記マルチフラグメントPDUを、前記クライアントデバイスに送信するステップと
    を含む処理をサーバーコンピュータに実行させるためのコンピュータ実行可能な命令を記録したことを特徴とするコンピュータ読取可能な記録媒体。
  11. 前記受信した情報は、前記クライアントデバイスのリソース機能に関する情報を含むことを特徴とする請求項10に記載のコンピュータ読取可能な記録媒体。
  12. 前記メタデータは、前記オブジェクトと同期されることを特徴とする請求項10に記載のコンピュータ読取可能な記録媒体。
JP2008529048A 2005-08-31 2006-08-04 任意のフォーマットにおけるラージオブジェクトの通信のためのリモートプロトコルサポート Active JP5123186B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US71299305P 2005-08-31 2005-08-31
US60/712,993 2005-08-31
US11/419,594 2006-05-22
US11/419,594 US7653749B2 (en) 2005-08-31 2006-05-22 Remote protocol support for communication of large objects in arbitrary format
PCT/US2006/030483 WO2007027362A1 (en) 2005-08-31 2006-08-04 Remote protocol support for communication of large objects in arbitrary format

Publications (3)

Publication Number Publication Date
JP2009506456A JP2009506456A (ja) 2009-02-12
JP2009506456A5 JP2009506456A5 (ja) 2009-09-24
JP5123186B2 true JP5123186B2 (ja) 2013-01-16

Family

ID=37803640

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008529048A Active JP5123186B2 (ja) 2005-08-31 2006-08-04 任意のフォーマットにおけるラージオブジェクトの通信のためのリモートプロトコルサポート

Country Status (6)

Country Link
US (1) US7653749B2 (ja)
EP (1) EP1920353B1 (ja)
JP (1) JP5123186B2 (ja)
KR (1) KR20080049710A (ja)
CN (1) CN101238457B (ja)
WO (1) WO2007027362A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102007016274B4 (de) * 2007-04-04 2013-02-07 Lawo Ag Vorrichtung und Verfahren zur Nutzung von Audio-Plugins in einem Mischpult
GB2448370B (en) * 2007-04-14 2012-09-05 Jds Uniphase Corp Method of decoding a bit sequence, network element apparatus and PDU specification toolkit
US8140610B2 (en) * 2007-05-31 2012-03-20 Microsoft Corporation Bitmap-based display remoting
US8051209B2 (en) * 2008-11-26 2011-11-01 Microsoft Corporation Minimizing conflicts when synchronizing interrelated data between two systems
US8654134B2 (en) * 2008-12-08 2014-02-18 Microsoft Corporation Command remoting
US9639963B2 (en) * 2008-12-08 2017-05-02 Microsoft Technology Licensing, Llc Command remoting techniques
US8180905B2 (en) * 2008-12-09 2012-05-15 Microsoft Corporation User-mode based remote desktop protocol (RDP) encoding architecture
US8307103B2 (en) * 2009-03-09 2012-11-06 Microsoft Corporation Tear-free remote desktop protocol (RDP) display
US8705879B2 (en) * 2009-04-01 2014-04-22 Microsoft Corporation Image compression acceleration using multiple processors
US8761520B2 (en) 2009-12-11 2014-06-24 Microsoft Corporation Accelerating bitmap remoting by identifying and extracting 2D patterns from source bitmaps
US9235452B2 (en) * 2010-02-05 2016-01-12 Microsoft Technology Licensing, Llc Graphics remoting using augmentation data
US8768067B2 (en) 2010-04-15 2014-07-01 Microsoft Corporation Accelerating bitmap remoting by identifying and extracting patterns from source bitmaps through parallel processing techniques
US9600350B2 (en) * 2011-06-16 2017-03-21 Vmware, Inc. Delivery of a user interface using hypertext transfer protocol
US9514242B2 (en) 2011-08-29 2016-12-06 Vmware, Inc. Presenting dynamically changing images in a limited rendering environment
US9549045B2 (en) 2011-08-29 2017-01-17 Vmware, Inc. Sharing remote sessions of a user interface and/or graphics of a computer
US11582118B2 (en) 2018-11-15 2023-02-14 Citrix Systems, Inc. Real-time scalable virtual session and network analytics
US11489779B2 (en) 2019-05-20 2022-11-01 Citrix Systems, Inc. Systems and methods for managing streams of packets via intermediary devices

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5245428A (en) * 1991-05-10 1993-09-14 U.S. Philips Corporation Television system for transmitting picture signals in a digital format
US7171483B2 (en) * 1997-07-23 2007-01-30 International Business Machines Corporation Reducing information transmission time by adapting information delivery to the speed of a given network connection
JPH11175426A (ja) * 1997-12-11 1999-07-02 Fuji Xerox Co Ltd サービス中継装置
JP2000122938A (ja) * 1998-10-12 2000-04-28 Fuji Xerox Co Ltd 情報処理装置
US6292554B1 (en) * 1999-10-07 2001-09-18 Simplified Telesys System and method for communicating with and controlling disparate telecommunications devices in a telecommunications network
JP2001216221A (ja) 2000-02-03 2001-08-10 Hitachi Ltd 電子メール機能を有する情報処理装置および電子メール処理プログラムを記録した記録媒体
JP2001236275A (ja) * 2000-02-24 2001-08-31 Hitachi Ltd 電子メール端末装置
US20020016818A1 (en) * 2000-05-11 2002-02-07 Shekhar Kirani System and methodology for optimizing delivery of email attachments for disparate devices
US7356245B2 (en) * 2001-06-29 2008-04-08 International Business Machines Corporation Methods to facilitate efficient transmission and playback of digital information
JP2003058398A (ja) * 2001-08-21 2003-02-28 Minolta Co Ltd データ処理プログラム、それを記録した記録媒体、データ処理装置、データ送信装置およびそのデータ送信方法
US20030069963A1 (en) * 2001-09-27 2003-04-10 Nikil Jayant System and method of quality of service signaling between client and server devices
US20030110234A1 (en) * 2001-11-08 2003-06-12 Lightsurf Technologies, Inc. System and methodology for delivering media to multiple disparate client devices based on their capabilities
JP2003186794A (ja) * 2001-12-13 2003-07-04 Fujitsu Ltd 情報提供プログラム,情報提供プログラムを記録したコンピュータ読取可能な記録媒体及び情報提供装置
JP2004362538A (ja) * 2003-05-14 2004-12-24 Sharp Corp 文書データ変換装置、携帯電話装置、文書データ変換方法、文書データ変換プログラム、および文書データ変換プログラムを記録したコンピュータ読取可能な記録媒体
JP2005101936A (ja) * 2003-09-25 2005-04-14 Canon Inc 通信装置及び通信装置の制御方法
CN101099149B (zh) * 2004-01-16 2011-12-14 希尔克瑞斯特实验室公司 元数据代理服务器及方法

Also Published As

Publication number Publication date
CN101238457B (zh) 2010-07-21
WO2007027362A1 (en) 2007-03-08
KR20080049710A (ko) 2008-06-04
US20070046980A1 (en) 2007-03-01
EP1920353A1 (en) 2008-05-14
US7653749B2 (en) 2010-01-26
JP2009506456A (ja) 2009-02-12
CN101238457A (zh) 2008-08-06
EP1920353A4 (en) 2012-03-28
EP1920353B1 (en) 2018-09-19

Similar Documents

Publication Publication Date Title
JP5123186B2 (ja) 任意のフォーマットにおけるラージオブジェクトの通信のためのリモートプロトコルサポート
US7627886B2 (en) Systems and methods for displaying video streams
US9510048B2 (en) Dynamically changing streaming video quality
US8392596B2 (en) Methods for detecting and handling video and video-like content in remote display system
US9369721B2 (en) Data compression of images using a shared dictionary
US20110185068A1 (en) Multi-link remote protocol
US9225784B2 (en) Loss tolerant protocol for remoting desktop graphics
KR20040104515A (ko) 클라이언트에서 그래픽 및 미디어 디스플레이를 생성하기위한 방법 및 장치
AU2011314228B2 (en) Entropy coder for image compression
CN109040786B (zh) 摄像头数据的传输方法、装置、系统及存储介质
JPH10190471A (ja) 連続的で分離されていないデータ・ストリームを圧縮する方法および装置
EP1665798A1 (en) Method and apparatus for generating graphical and media displays at a thin client
EP2804143A1 (en) System and method for forwarding a graphics command stream
WO2023040825A1 (zh) 媒体信息的传输方法、计算设备及存储介质
EP4375936A1 (en) Image processing method and apparatus, computer device and storage medium
US10834164B2 (en) Virtualizing audio and video devices using synchronous A/V streaming
US9875076B1 (en) Remoting client having GPU off-loader
US20140333640A1 (en) System and method for forwarding a graphics command stream
EP1821490A1 (en) Method for transmitting graphical data to a thin client
US20140333639A1 (en) System and method for forwarding a graphics command stream
EP2804095A1 (en) A system and method for forwarding a graphics command stream
EP2804094A1 (en) A system and method for forwarding a graphics command stream
US20230088496A1 (en) Method for video streaming
CN117319592B (zh) 一种云桌面摄像头重定向方法、系统及介质
WO2002028085A2 (en) Reusing decoded multimedia data for multiple users

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090804

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090804

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110624

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110701

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111003

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120410

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120810

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20120813

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120813

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120831

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121005

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121025

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151102

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5123186

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250