JP5080554B2 - 代替的グラフィック・セットの効率的な符号化 - Google Patents

代替的グラフィック・セットの効率的な符号化 Download PDF

Info

Publication number
JP5080554B2
JP5080554B2 JP2009500354A JP2009500354A JP5080554B2 JP 5080554 B2 JP5080554 B2 JP 5080554B2 JP 2009500354 A JP2009500354 A JP 2009500354A JP 2009500354 A JP2009500354 A JP 2009500354A JP 5080554 B2 JP5080554 B2 JP 5080554B2
Authority
JP
Japan
Prior art keywords
remote device
resource
application
computer
resources
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.)
Expired - Fee Related
Application number
JP2009500354A
Other languages
English (en)
Other versions
JP2009530706A (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 JP2009530706A publication Critical patent/JP2009530706A/ja
Application granted granted Critical
Publication of JP5080554B2 publication Critical patent/JP5080554B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/545Gui

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Information Transfer Between Computers (AREA)
  • Digital Computer Display Output (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)

Description

本発明は、代替的グラフィック・セットの効率的な符号化の方法に関する。
コンピュータ化されたシステムが一般化するのと同時に、大規模および小規模両方のネットワークにおいてコンピュータシステムのファイルおよび処理リソースを分散する必要も高まった。一般に、コンピュータシステムおよび関連するデバイスは、多くの理由で、例えば、個人的な電子メッセージの交換、商品の販売、口座情報の提供などのためにネットワークを介して情報を伝達する。しかし、人は、コンピュータシステムおよびその関連するアプリケーションが次第にさらに高度化されたのにつれて、ネットワーク上でデータおよびリソースを共有することに関連する困難も大きくなったことを認識するであろう。
組織のネットワーク内でリソースを分散するための一部の現在のやり方は、1つまたは複数のクライアント(またはリモートデバイス)とリソースを共有する集中サーバ(またはローカルデバイス)を含む可能性がある。クライアントはそのようなリソースをローカルにインストールしない。通常、そのようなシステムは、リモート・デスクトップ・プロトコル(RDP:Remote Desktop Protocol)、インデペンデント・コンピューティング・アーキテクチャ(ICA:Independent Computing Architecture)などの専用プロトコルを使用してリモート・クライアントと様々なアプリケーションを共有する。そのようなプロトコルを用いて、クライアント・コンピュータ・システムは、興味のあるネットワークリソースをホストする集中ネットワークサーバにアクセスし、まるでそれらのリソースがローカルにインストールされているかのようにそれらのリソースと対話(例えば、マウスイベントおよびキーボードイベントを送るなど)することができる。
そして今度は、ネットワークサーバが、それらの対話(interaction)を処理し、データの対応するレンダリング情報を作成し、処理されたデータおよび作成されたレンダリング情報の両方をクライアントに返送する。次に、クライアント・コンピュータ・システムは、データおよびレンダリング情報を受信し、クライアント側のビデオドライバを使用して受信データをローカルでレンダリングおよび表示する。理想的には、クライアント・コンピュータ・システムとネットワークサーバとの間のこの対話は、クライアント・コンピュータ・システムが、そのクライアント・コンピュータ・システム自体のインストールされたリソースを用いてデータを実際に処理したかのようにシームレスに行われる。残念なことに、そのようなシステムは、ネットワーク・スループットの制約を受ける可能性があり、ネットワーク・スループットの制約は、負荷がかけられた場合に、対話および処理の観点でローカルのクライアント・コンピュータ・システムが見るものの間に「ラグ(lag)」をもたらす可能性がある。
上述の集中的な共有モデルとほとんどの点で類似している別の種類のシステムは、ネットワーク上のその他の受信クライアント・コンピュータ・システムにウィンドウデータ情報を送信するように構成されたブロードキャスティング(または「送信」)クライアント・コンピュータ・システムを含む。この特徴は、「デスクトップ共有」と呼ばれることもある。この例において、ブロードキャスティングコンピュータ(例えば、学習環境における「インストラクタ」)および受信コンピュータシステム(例えば、「生徒」)は、インストラクタのコンピュータのデスクトップ画面およびローカルにインストールされたアプリケーションの共有を可能にする共通してインストールされたアプリケーションプログラムを使用して接続する。集中コンピューティングシステムのシナリオと同様に、クライアント・コンピュータ・システムは、インストラクタのコンピュータに表示されたウィンドウと、当該ウィンドウが生徒のコンピュータ自体のウィンドウであるかのように対話することができる可能性がある。
ビットマップはネットワーク接続(例えばインターネット)を介して送信されるときに帯域幅の消費の観点でコストが高いので、ビットマップ全体を送信するのではなく、(上述のシステムなどの)今日のほとんどのシステムは、何を描画するか、および何らかのものをどのように描画するかをクライアント側のサブルーチンに指示するグラフィックプリミティブ(graphic primitive)およびその他の操作を送信する。例えば、クライアントは、長方形がどこに描画されるべきか、どのぐらいの大きさか、何色かなどについての情報と共に、長方形を描画するように指示される可能性がある。例えば、長方形は、ユーザインターフェースのためのボタン、ドキュメントの周囲の境界、または長方形の形状が有用である可能性がある任意のその他の目的を描画するために使用されることができる。もちろん、より高度であり、リモートのクライアントに操作を転送し、リモートのクライアント上で操作を実行するために行われなくてはならないより多くの処理を必要とする可能性があるプリミティブとして使用されることができる多くのその他の形状および操作が存在する。
プリミティブの上述の使用はネットワーキングシステムをよりシームレスにしたが、アプリケーションがより高度なグラフィカルインターフェースおよびその他の表示を獲得し続けるにつれて、上述のプリミティブの使用は処理の負担がより大きくなる。さらに、クライアントのディスプレイ上にグラフィックをレンダリングするためにローカルからリモートデバイスに送信される情報は、概して、タイル表示されたウィンドウがグラフィック情報の損失をもたらす即時表示モード(immediate presentation mode)で使用される。例えば、即時表示モードを使用すると、ウィンドウの見える部分を描画するために必要とされる情報のみが利用可能である。換言すれば、その他のウィンドウに覆われたバックグラウンドのウィンドウの部分に関して保持されるグラフィック情報はなく、すなわち、グラフィック情報は、最もトップのレベルのウィンドウに関してのみ保持される。したがって、ウィンドウがフォアグラウンドに移動されるとき、新しい情報が、当該ウィンドウを描画するために必要とされる。上述のグラフィックの高度化の進行のために、この情報の頻繁な送信は、頻繁な更新が必要とされるとき、例えば、ウィンドウがシャッフルされ、ローテーションされ、再配列されるときに、システムに過負荷をかける可能性がある。また、このことは、それがより高度なアニメーションに関連するときに様々な困難をもたらす。
上記で特定した現在のネットワークの難点および欠点は、本発明の例示的実施形態を通じて克服される。例えば、本明細書において説明される実施形態は、ローカルデバイス上で実行され、リモートデバイス上に表示されるアプリケーションに関するリソースを使用し効率的に符号化するために使用されるメカニズムを提供する。この要約は、「発明を実施するための最良の形態」において以下でさらに説明される概念の選択を簡素化された形態で導入するために提供されることに留意されたい。この要約は、特許請求の範囲に記載された対象の重要な特徴または必須の特徴を特定するように意図されておらず、特許請求の範囲に記載された対象の範囲を決定する助けとして使用されるように意図されてもいない。
1つの例示的実施形態は、使用されるグラフィック言語の種類にかかわらず、適切な符号化メカニズムを判定することによって、ローカルデバイス上で実行されるアプリケーションに関してリモートデバイス上に表示するためのグラフィックオブジェクトを効率的に符号化するメカニズムを提供する。メカニズムはローカルデバイス上でアプリケーションを実行することを提供し、それらのアプリケーションのそれぞれは、リモートデバイスにおける表示のために特定のグラフィック言語に基づいてグラフィック表示を生成する。さらに、特定のグラフィック言語に関するグラフィック・セットが受信され、そのグラフィック・セットは、アプリケーションに関するグラフィック表示の少なくとも一部をレンダリングする際に使用されるリソースおよび/または命令を含む。同様に受信されるのは、以下に関する情報を含む符号化データである。すなわち、(1)データ圧縮モジュールが、グラフィック・セットが通常の形態であるときよりも効率的にグラフィック・セットを圧縮するのを助けるために使用される、グラフィック・セット内のフィールドの内容を記述するメタデータ、および/または(2)グラフィック・セットに対して効率的な圧縮の種類を選択するための、リモートデバイスによってサポートされるデータ圧縮メカニズムを記述する符号化種類データである。受信した符号化データに基づいて、適切な符号化メカニズムが、グラフィック・セットの様々な部分に対して決定される。
その他の例示的実施形態は、アプリケーションに関する(もしあれば)どのリソースがリモートデバイスに送信されるべきかを判定することによって、ローカルデバイス上で実行されるアプリケーションに関してリモート・ディスプレイ・デバイス上にグラフィックオブジェクトを効率的にレンダリングすることを提供する。この実施形態において、アプリケーションもまたローカルデバイス上で実行され、それらのアプリケーションのそれぞれは、リモートデバイスに送信するためのグラフィック表示を生成する。次に、リソースおよび/または表示命令を含むグラフィック・セットが受信され、そのグラフィック・セットは、アプリケーションに関するグラフィック表示の少なくとも一部をレンダリングするために使用されることができる。同様に受信されるのは、以下に関する情報を含むリソースデータである。すなわち、(1)記憶されるリソースの種類にかかわらず、グラフィック・セットに対応するリソースがリモートデバイスに送信され、再利用の目的で集中キャッシュに記憶されたかどうかを判定するための配信状態情報、(2)ローカルデバイスからリソースを転送することなしにアプリケーションに関してリモートデバイス上にリソースを表示するためにリモートデバイス上で現在利用可能な専用のリソースを判定するための、サポートされるアプリケーションの情報、(3)帯域幅もしくはその他のシステム制約を節約するために、完全なリソースの質を落としたバージョンが最初に送信され、質を落としたバージョンを改善するアップデートがその後送信されるようにリソースの部分が漸進的にリモートデバイスに送信されるべきであるかどうかを判定するためのシステム制約データ、および/または(4)グラフィック・セットに対応するリソースがリモートデバイスにおいてユーザによって現在見られることができるか否かを記述する可視性情報である。受信したリソース情報に基づいて、グラフィック・セットの部分が、符号化のために選択される。
別の例示的実施形態は、ローカルデバイス上で実行されるアプリケーションに関してリモートデバイス上でグラフィック表示を生成する際に使用されるレンダリングデータ構造を効率的に同期することを提供する。この実施形態において、その他の実施形態と同様に、アプリケーションがローカルデバイス上で実行され、それらのアプリケーションのそれぞれは特定のグラフィック言語のレンダリングデータ構造を生成し、それらのレンダリングデータ構造は、リソースに関する状態を保有し、リモートデバイス上でアプリケーションに関するグラフィック表示を構成するために使用される保持モードデータ構造(retain mode data structure)である。その後、特定のグラフィック言語に対応するリソースおよび/または表示命令を含むグラフィック・セットが受信され、レンダリングデータ構造を修正することに使用される。さらに、データ圧縮モジュールがより容易に認識し、適切に符号化することができる異なるグラフィック言語に関するグラフィック・セットの間で共通のフィールドに対する構造の種類をデータ圧縮モジュールが特定することを助けるために、グラフィック・セットに関するフィールドの記述を含むメタデータが受信される。受信されたメタデータに基づいて、グラフィック・セットのフィールドが、リモートデバイスに送信し、アプリケーションに関してリモートデバイスにおいてグラフィック表示を構成するために使用されるレンダリングデータ構造をローカルデバイスとリモートデバイスの間で同期するために符号化される。
本発明のさらなる特徴および利点が以下に続く説明において述べられ、その説明からある程度明らかになるか、または本発明の実施によって学習されることができる。本発明の特徴および利点は、添付の特許請求の範囲において具体的に示された機器および組合せを用いて実現および獲得されることができる。本発明のこれらのおよびその他の特徴は、以下の説明および添付の特許請求の範囲からより完全に明らかになり、以降で説明される本発明の実施によって学習されることができる。
本発明の上述のおよびその他の有利な特徴が獲得されることができるやり方を説明するために、上で簡潔に記載された本発明のより具体的な説明が、添付の図面に図示される本発明の具体的な実施形態に対する参照によって行われる。これらの図面は本発明の典型的な実施形態のみを示し、したがって本発明の範囲の限定とみなされてはならないという理解の下で、本発明が添付の図面の使用を通じてより具体的で詳細に示され、説明される。
本発明は、リモートデバイスにおいてローカル・アプリケーションの表示をレンダリングする際に使用されるグラフィック・セットを効率的にリモートで送信するための方法、システム、およびコンピュータプログラム製品にまで及ぶ。本発明の実施形態は、以下でより詳細に検討されるように種々のコンピュータハードウェアまたはモジュールを含む専用または汎用コンピュータを含むことができる。
前置きとして、本明細書における例および説明は、様々な実装において便宜的に本件特許出願人の用語を参照することが認識および理解される。しかし、そのような特定の用語の参照は、本明細書の実施形態を特定のオペレーションシステムまたはその他の種類のシステムに限定するものと解釈されるべきではない。むしろ、本明細書において説明される基本的な機能は、本明細書において説明される機能が望まれる任意のコンピューティング環境またはオペレーションシステムにおいて実施されることができる。
上述のように、現在のネットワークのグラフィック表示をリモートで送信することの先に特定された難点および欠点は、本明細書において提供される例示的実施形態を通じて克服される。例えば、一実施形態は、異なるグラフィック言語にまたがる様々なフィールドの共通性が特定されるように特定のグラフィック言語に関するグラフィック・セットのフィールドを特定するために使用されるメカニズムであるフィールド符号化(field encoding)を提供する。特定されると、グラフィック・セットのフィールド内の様々なデータの種類にまたがって関連付けられた冗長性または特定された共通性が、効率的に符号化されることができる。例えば、フィールドの間の冗長性または共通性は、以下の技術のうちの1つまたは複数を適用することによって削除されるか、または効率的に圧縮されることができる。すなわち、(1)フィールドに対して提供されたメタデータまたはその他の情報に基づく、マシンフォーマットとネットワークフォーマットの間のフィールドの変換、(2)可変長のフィールドの符号化(例えば、2/3/4バイト符号化)、(3)点が配列内の前の点に対する差分として符号化されることができ、差分が絶対座標よりも少ないバイト数で表されることができる、概して座標の配列を符号化するために使用される差分符号化、(4)特定の種類の構造を、同じ種類の前に符号化された構造に基づいて符号化するために使用されるインターオーダ圧縮(inter-order compression)である。上記のメカニズムは、現在、その他のプロトコル(例えば、リモート・デスクトップ・プロトコル(RDP:Remote Desktop Protocol))において適用されることができるが、本明細書において提供される実施形態は、フィールド符号化をグラフィック・デザイン・インターフェース(GDI:Graphics Design Interface)以外のその他のグラフィック言語、例えば、ウィンドウズ(登録商標)プレゼンテーション・ファンデーション(WPF:Windows(登録商標) Presentation Foundation)情報に拡張することに留意されたい。
別の実施形態において、異種のリソースは、それらのリソースを記憶するときに同種の方法で扱われるようにリソースのキャッシュが提供される。現在のメカニズム(RDPなど)は、後の操作または命令でリソースを再利用することによって帯域幅を節約するためにクライアント上のリソースを記憶することを可能にするが、本発明は、(例えば、WPFのようなGDI以外の)その他のグラフィック言語において使用するためにキャッシュメカニズムを拡張する。例えば、現在のメカニズムは、リソースの種類(例えば、グリフ、ビットマップ、スプライトなど)を別個のキャッシュに記憶し、それによって、リソースを再利用することに対する拡張不可能なアプローチを提供する。したがって、実施形態は、全てのリソースに対してそれらのリソースの種類にかかわらず集中キャッシュを提供する、より包括的で拡張可能なメカニズムを提供する。したがって、リソースは、レンダリングデータ構造内で、または異なるアプリケーションに関するデータ構造にまたがってさえ複数回使用されることができ、したがって、リソースは、リモートデバイスに1回送信され、様々な構成のサブ構造(例えば、サブツリー)にまたがって使用されることのみを必要とする。
さらに別の実施形態において、グラフィック・セット内のリソースまたはその他のアイテムをリモートで送信するための符号化または圧縮の種類が、リモートデバイスによってサポートされる圧縮メカニズムの種類に基づいて決定されることができる。そのような場合、利用可能な圧縮メカニズムが、接続時にクライアント(すなわちリモートデバイス)とサーバ(すなわちローカルデバイス)との間でネゴシエーションされることができるが、リソースを圧縮するためにサーバによって使用される厳密な圧縮メカニズムは、ローカルデバイスによって圧縮時に決定される。したがって、ローカルデバイスは、各フォーマットが所与のデータをどれだけよく圧縮するかに基づいて、ネゴシエーションされたフォーマットのうちの1つを選択する。例えば、様々な圧縮技術から選択されることができる1つの圧縮の種類が、単一のリソースに対して使用されることができる。次に、データ量を最も効率的に削減する結果として得られる圧縮メカニズムが、リモートデバイスにリソース(またはその他のデータ)を送信するために使用されることができる。ローカルサーバは、圧縮する様々なリソースまたはその他のデータに基づいて可逆圧縮フォーマットまたは不可逆圧縮フォーマットのいずれかを選択することができる。
さらにその他の例示的実施形態は、部分的に送信されたリソースを用いてレンダリングすることによって応答性を向上することを提供する。したがって、帯域幅またはディスプレイデバイスの制約などの様々なシステム制約に基づいて、リソースの一部が、アプリケーションによって何らかの意味のあるものをレンダリングするためのフルレンダリング命令と共に送信されることができる。例えば、ビットマップまたはその他のリソースは、そのような漸進的な技術を用いて圧縮された画像を含むことができる。そのような場合、カラー画像は、完全な画像を解凍するために必要な全てのデータがクライアントデバイスに到着している訳ではないので最初は不正確である可能性がある。しかし、リモートデバイスは、最初のレンダリングのために不鮮明な画像またはその他の質を落とした画像を使用することができる。
例として、アプリケーションに関するボタンは、非常に不正確な色を有する可能性があるが、しかし、ユーザがボタンの最終バージョンを待つことなしにボタンと対話することを可能にするのに十分なだけ優れたやり方でボタンをやはり表示することができる。画像からのさらなるデータがネットワークから到着するにつれて、リモートデバイスは画像をアップデートすることができ、画像を含むデータ構造の一部を再レンダリングすることができる。このように、単に、ほとんどの場合、ユーザが画像データの全てがアップデートされることなしにアプリケーションを使用することができるので、ユーザの知覚される応答性が劇的に向上する。色の質を落とすメカニズムの使用が使用されたが、任意の種類の漸進的な符号化またはインターレース技術も使用されることができることに留意されたい。さらに、そのような漸進的またはインターレースメカニズムはビットマップまたはその他の同様のリソースに適用される可能性があるだけでなく、曲線または格子などの様々な配列を有する画像に対しても良好に機能することに留意されたい。
さらに別の例示的実施形態において、(もしあれば)グラフィック・セットのどの部分がリモートデバイスに送信されるべきか、およびどのような順序で送信されるべきかを判定するためのメカニズムが提供される。例えば、グラフィック表示またはリソースの一部はユーザに見えない可能性があることが多い。したがって、Zオーダ、透明度、最小化/最大化状態などが、アプリケーションまたはアプリケーションのリソースがユーザに見える出力を生成するかどうかを判定することに効果的な役割を果たす。アプリケーションまたはアプリケーションのリソースが見えない限り、そのアプリケーションのコンテンツまたはリソースをリモートで送信することは後になるまで必要ない可能性がある。したがって、アップデートは、帯域幅が許すまで遅らされることができる。さらに、ローカルサーバは、そのような可視性の情報に基づいて、レンダリングデータ構造または表示のどの部分がリモートデバイスに送信されるかを優先順位付けすることができる。
さらにその他の実施形態は、リモートデバイス上での専用のリソースをレンダリングするときにローカルデバイスとリモートデバイスの間のリソースの転送を排除するために、リモートデバイス上での専用のリソースの使用を提供する。例えば、グラフィックデータがリモートで送信されるほとんどの場合、境界、タイトルバー、および/またはその他のアイコンのようなリソースは、サーバおよびリモートコンピュータの両方に存在する。例えば、リモートおよびローカルサーバの両方が同じ(または同様の)アプリケーションをインストールする場合、おそらく、ローカル・アプリケーションに関するアイコンは、リモート側のアプリケーションに関するバイナリのリソースの部分に存在する。そのような場合、ローカルデバイスは、サーバまたはローカルデバイスがリモートデバイスのためにリソースのバイトを送信する必要なしに、これらの様々なリソースを使用するようにリモートデバイスに命令することができる可能性がある。
有利な特徴に関するより具体的な言及が図に関して以下でより詳細に記載されるが、本発明の範囲内の実施形態は、コンピュータ可読媒体上に記憶されたコンピュータが実行可能な命令またはデータ構造を搬送または保有するためのコンピュータ可読媒体も含む。そのようなコンピュータ可読媒体は、汎用または専用コンピュータによってアクセスされることができる任意の利用可能な媒体であることができる。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD−ROMもしくはその他の光ディスク記憶装置、磁気ディスク記憶装置もしくはその他の磁気記憶装置、またはコンピュータが実行可能な命令もしくはデータ構造の形態で所望のプログラムコード手段を搬送もしくは記憶するために使用されることができ、汎用もしくは専用コンピュータによってアクセスされることができる任意のその他の媒体を含むことができる。情報がネットワークあるいは(有線、無線、または有線もしくは無線の組合せのいずれかである)別の通信接続を介してコンピュータに転送または提供されるとき、当然、コンピュータは当該接続をコンピュータ可読媒体として見る。したがって、当然、任意のそのような接続はコンピュータ可読媒体と呼ばれる。上記の媒体の組合せもコンピュータ可読媒体の範囲に含まれるべきである。
コンピュータが実行可能な命令は、例えば、多目的コンピュータ、専用コンピュータ、または専用処理デバイスに特定の機能もしくは一群の機能を実行させる命令およびデータを含む。発明の対象が構造的特徴および/または方法の動作に特有の言語で説明されたが、添付の特許請求の範囲で定義された発明の対象は上述の特定の特徴または動作に必ずしも限定されないことを理解されたい。むしろ、上述の特定の特徴および動作は、特許請求の範囲を実施する例示的な形態として開示される。
本明細書において使用される用語「モジュール」または「コンポーネント」は、コンピューティングシステム上で実行されるソフトウェアオブジェクトまたはルーチンを指すことができる。本明細書において説明される様々なコンポーネント、モジュール、エンジン、およびサービスは、コンピューティングシステム上で実行されるオブジェクトまたはプロセスとして(例えば、別個のスレッドとして)実装されることができる。本明細書において説明されるシステムおよび方法はソフトウェアで実装されることが好ましいが、ハードウェア、またはソフトウェアおよびハードウェアの組合せでの実装も可能であり、考えられる。この説明において、「コンピューティングエンティティ」は、本明細書において既に定義された任意のコンピューティングシステム、またはコンピューティングシステム上で実行される任意のモジュールもしくはモジュールの組合せである可能性がある。
図1Aは、ローカルデバイス上のアプリケーションに関するグラフィック情報をリモートで表示することに使用される分散システムを示す。示されるように、アプリケーション115がローカルデバイス105上で実行されることができ、そのアプリケーションの表示はリモートデバイス110を対象とする。アプリケーション115は、テキストエディタ、表計算アプリケーション、または任意のその他のよく知られているアプリケーションなどの多数のアプリケーションのうちのいずれかのアプリケーションであってよいことに留意されたい。さらに、リモートデバイス110およびローカルデバイス105のための環境は、リモートデバイス110が、ローカルデバイス105のアプリケーション115を実行し、さらに、ローカルデバイス105のネットワークの外のリモートデバイス110からアプリケーションを見て、制御したいと望むプレゼンテーションタイプの環境(例えば、上述のデスクトップ共有)またはネットワーキングシステムであってよい。したがって、ローカルデバイス105とリモートデバイス110の間の通信は、任意のよく知られているローカルおよび分散の両方のネットワーク、例えば、LAN、インターネットなどをまたがる可能性がある。
ローカルデバイス105とリモートデバイス110の間の通信チャネルを確立するために使用されるアプリケーションまたはネットワークの種類によらず、アプリケーション115は、リモートデバイス110から受信されたユーザ入力に従ってアプリケーションプログラムインターフェース(API)コール120を行うことができる。そのようなAPIコール120は、様々なアプリケーション115のグラフィック表示に影響を与える。例えば、APIコール120は、アプリケーション115の表示を最小化/最大化すること、表示内のアイコンもしくはその他のリソースを移動すること、または1つまたは複数のアプリケーション115に関するグラフィックの表示と対話し、グラフィックの表示を変更する任意の数のよく知られているやり方である可能性がある。言うまでもなく、認識されるであろうように、様々なアプリケーション115のグラフィック表示が変わるために、入力がAPIコール120の形態で届くことは必須ではない。したがって、様々なアプリケーション115のグラフィック表示に影響を与えるためのAPIコール120の使用は、本明細書においては例示のみを目的として使用され、本明細書の実施形態の範囲を限定するか、またはそうでなければ狭めるように意図されない。
しかしながら、そのようなコール120を使用するとき、APIコール120は、表示命令160および/または様々なリソース165を含むことができるグラフィック・セット155を生成する合成エンジン130を呼び出すことができる。表示命令160は、リソース165の種類、表示内の位置付け(すなわち、xy座標)、リソース165のサイズおよび/もしくは形状、または様々なリソース165を表示するために使用される任意のその他のよく知られているプロパティもしくは操作などの情報を含むことができる。リソース165は、任意の数のよく知られているアイコン、テキスト、グリフ、スプライト、ビットマップ、およびその他の画像の種類を表すこともできる。したがって、本明細書において説明される表示命令160およびリソース165は、リソース上で実行される任意の数の様々な操作、およびアプリケーション115のグラフィックの表示のために使用される任意の数の画像データを包含するように広く解釈されるべきである。
概して、グラフィック・セット155は、様々なアプリケーション115に関するレンダリングデータ構造178を生成するために使用される。そして今度は、レンダリングデータ構造178は、アプリケーション115の表示を記述するために使用され、各ノードがリソース、プロパティ、またはそれらの関係を示す記述を表すツリー状構造であることができる。例えば、データツリー内のあるノードはボタンを表すことができ、一方、その他のノードはボタンの色、サイズ、形状、またはその他のプロパティを記述し、一方、さらにその他のノードはアプリケーション114の表示内のその他のコンポーネントまたはリソースとの関係および対話を表す。したがって、認識されるであろうように、グラフィック・セット155は、レンダリングデータ構造178を修正、生成、またはそうでなければアップデートするために使用される可能性があり、そのとき、レンダリングデータ構造178は、アプリケーション115に対応する1つまたは複数の表示を構成するために使用されることができる。上述のその他のグラフィック言語の即時表示モード(immediate presentation mode)とは異なり、レンダリングデータ構造178、185の使用は、リソースに関する状態が保有される保持モードを可能にすることに留意されたい。以下でより詳細に説明されるように、これは、本明細書において説明されるその他の実施形態と共に、多くの有利な特徴を可能にする。
一実施形態において、ローカルデバイス105上のレンダリングデータ構造178と、リモートデバイス110側の同様のレンダリングデータ構造185とを同期することが望ましいことに留意されたい。そのような場合、本明細書において提供される例示的実施形態は、リモートデバイス110上のレンダリングデータ構造185のアップデートまたは修正のために様々なグラフィック・セット155を効率的に符号化することができる。しかし、本明細書において提供される一部のメカニズムは、レンダリングデータ構造178、185をサポートするグラフィック言語に対して使用されるが、その他の実施形態は、そのようなレンダリングデータ構造178、185をサポートしないグラフィック言語に同様に適用可能であることに留意されたい。実際、本明細書において説明される実施形態のうちの多くは、GDI、WPF、ならびにその他の知られている(および知られていない可能性がある)グラフィック言語を含むがこれらに限定されない多種多様なグラフィック言語に対して使用される。したがって、様々な実施形態の以下の検討は、幅広い数のグラフィック言語にまたがって適用可能であるように広く解釈されるべきである。
グラフィック・セット155を生成するために使用されるグラフィック言語にかかわらず、概して、符号化決定モジュール150は、レンダリングデータ構造178(すなわち、保有モード合成データ構造(retained mode composition data)またはツリー)に対して直接動作することに留意されたい。符号化決定モジュール150は、アプリケーション115が合成エンジン130を呼び出す120ときに直ちにレンダリングデータ178を送信する可能性があるか、またはネットワークが認めるときに後でデータ178を送信する可能性がある。例えば、アプリケーション115は、円を生成するためにエンジン130を呼び出す120可能性がある。命令120は符号化決定モジュール150に対する直接呼び出しに変換される可能性があり、後者は、即座に円命令を符号化し、それを回線で送信する。代替的なモデルは、符号化決定モジュール150が、円がレンダリングデータ構造178(例えば、合成ツリー)に追加されたことを知らされる可能性があり、データ178がいつ送信されるべきかを符号決定モジュール150に決定させる可能性がある。第1のモデルは「プッシュ」モデルとみなされることができる一方、第2のモデルは「プル」モデルである可能性がある。2つの間の相違は、単に、符号化決定モジュール150がレンダリングデータ構造178からアップデートを取得する時期である。両方のモデルとも機能するが、プッシュモデルはプルモデルよりも制限される可能性がある。したがって、最も効率的なアップデートメカニズムは、2つの間の複合である可能性がある(すなわち、データ178は帯域幅が許すだけ速くネットワークにプッシュされるが、何らかのネットワークの輻輳が存在する場合、システムは、ネットワークの利用可能性のイベントによって駆動されるプルモデルを採用する)。
データ178を転送するために使用されるモデルにかかわらず、一実施形態において、符号化決定モジュール150は、グラフィック・セット155内の様々な種類のフィールドを特定するために、グラフィック・セット・メタデータ140(本明細書においては単に「メタデータ」とも呼ばれる)を有する符号化テーブル135を使用することができる。例えば、メタデータ140は、グラフィック・セット160内の様々な種類のフィールドを記述することができ、符号化決定モジュール150が、表示命令160およびリソース165のリモートデバイス110への効率的な転送のために様々なフィールドをどのようにして最も上手く符号化するかを適切に判断するために使用することができる。より具体的には、メタデータ140は、異なるグラフィック言語に関する複数のグラフィック・セット155の間に共通するフィールドに関する異なる種類のデータ構造を特定するために使用されることができる。そのとき、そのような情報は、データ圧縮モジュール175がグラフィック・セット155の異なるフィールドをより容易に認識し、適切に符号化するのを助けるために使用されることができる。
例えば、表示命令160は、従来、マシンフォーマットで記憶されるかまたはシリアル化されるリソースの種類、位置付け(例えば、xy座標)、色、またはその他の情報を含む文字列またはその他のバイナリ表現を有する可能性がある。したがって、メタデータ140は、これらのフィールドをマシンフォーマットで記憶されている文字列として認識するために使用されることでき、それらのフィールドは、次に、ネットワークフォーマットに変換されることができる。例えば、通常、座標(またはその他の文字列もしくはバイナリフィールド)は、レンダリングのために使用されるローカルデバイス105上のグラフィック・セット155内にマシンサイズワード(machine size word)として保有されるが、マシンワードは、ほとんどの場合、そのような座標を記憶するために必要な実際のバイトサイズの2倍から4倍大きい。そのような場合、マシンワードは、より小さいサイズに変換され、ネットワークパケット内に置かれるべきであり、それによって、データ圧縮モジュール175がリモートデバイス110への伝送の前にこれらのフィールドをより効率的に符号化することを可能にする。
その他の実施形態は、圧縮のための最も効率的なメカニズムを特定するためにグラフィック・セット155内のその他のフィールドまたはリソースを記述するためにグラフィック・セット・メタデータ140を使用する。例えば、符号化決定モジュール150は、そのような情報を最も効果的に圧縮することができるデータ圧縮モジュール175を選択するためにリソース165の種類を判定するメタデータ140を使用することができる。例えば、一部のビットマップは、ランレングス符号化(RLE)メカニズムを使用して最もよく符号化される。したがって、メタデータ140が、リソース165をビットマップとして特定するために使用されることができ、適切なRLEが、そのようなリソースを適切に符号化するために選択されることができる。
もちろん、提供されたグラフィック・セット・メタデータ140に基づいて特定され、適切に符号化されることができる、表示命令160に関する多くのその他の種類のリソース165およびフィールドが存在する。例えば、1つのフィールドが可変長フォーマットで最もよく符号化されると特定される可能性がある一方、別のフィールドは差分符号化により適する可能性がある(例えば、ある点が配列内の前の点に対する差分として符号化されることができ、差分が絶対座標よりも少ないバイト数で表されることができる座標)。その他の例は、通常、特定の種類の構造を同じ種類の前に符号化された構造に基づいて符号化するために使用されるインターオーダ圧縮を含む可能性がある。もちろん、認識されるであろうように、メタデータ140は、多数の圧縮モジュール175が必要に応じて符号化決定モジュール150によって適切に選択されることができるように、任意の数の様々な表示命令160およびリソース165を記述するために使用されることができる。したがって、符号化のための特定の種類のデータの上記の使用、または本明細書において説明される任意の特定の種類の符号化は、例示のみを目的とし、本明細書の実施形態を限定するか、またはそうでなければ狭めるように意図されない。
メタデータ140はグラフィック・セット155とは別の符号化テーブル135に示されるが、その他の実施形態は、やはりメタデータ140をグラフィック・セット155の一部とみなす。さらに、本明細書において説明される様々なモジュールの配置は、その他の構成および/もしくは概略的レイアウトと組み合わされることができ、ならびに/またはその他の構成および/もしくは概略的レイアウトに分けられることができることに留意されたい。したがって、様々な図に示される概略的レイアウト、および本明細書において説明されるモジュールまたはコンポーネントは例示のみを目的として使用され、明示的に特許請求の範囲に記載されない限り、様々な実施形態の範囲を限定するか、またはそうでなければ狭めるように意図されない。
また、メタデータ165は、実行時情報またはコンパイル時情報であることができることに留意されたい。例えば、拡張可能マークアップ言語((XML)またはその他の好適なバイナリフォーマット)ドキュメントが、実行時に交換されるメタデータ165を含むことができる。2つの間の相違は、概して、実行時情報が、メタデータファイル(例えばXMLドキュメント)が符号化決定モジュール150に渡されることを可能にする特定の関数呼び出しを通じて合成エンジン130によってプッシュされるという事実である。通常、実行時メタデータ165は、初期化のときに一度だけプッシュされる。その時点以降、合成またはレンダリングエンジン130は、符号化決定モジュール150が符号器を呼び出す度にグラフィック・セット155を符号化決定モジュール150に全て示す必要はない。その代わりに、合成エンジン130は、最初のメタデータ165の交換において定義された明確に定義された種類をストリーム内の各オーダ(order)(すなわち、表示命令および/またはリソース)の初めに付ける(または特定する)必要があるだけである。以下の例が助けとなるであろう。
例えば、メタデータ165が実行時に交換されると仮定すると、メタデータ165は以下のXMLファイルのようになる可能性がある。
Figure 0005080554
上のGFXMETADATA構造において、2つのオーダの種類が宣言される。第1のオーダの種類は、2つの浮動小数点数を含むオーダの種類である。第2のオーダの種類は、1つの符号付き整数、1つの符号なし整数、および座標の1つの配列を含む配列である。このメタデータは、初期化のときに符号化決定モジュール150に伝達されるべきである。初期化の後、第2の構造(ORDER)が、オーダを符号器150に送信するために使用されることができる。どのようにして第2の構造が種類を記述せず、値だけを記述するかに留意されたい。XMLの表現においてさえ、第2のデータ構造(ORDER)からメタデータを分けることによって、より少ない情報が、オーダに関する内容を符号化決定モジュール150に伝達するために必要とされることが理解される。メタデータ140は非常に静的であり、したがって、一度だけ送信されることは理に適っている。一方、オーダデータは、動的なデータであり、概して、いかなる静的な情報もそのオーダデータに付加しなかったはずである。そのような利点は、(以下で説明される)バイナリフォーマットがXMLの代わりにデータおよびメタデータの両方に関して使用されるときによりはっきりと分かる。符号器または符号化決定モジュール150はオーダの種類だけを見る可能性があり、メタデータの記述に基づいて、値をどのように符号化するかを知ることになる。
例えば、その他のファイル(例えば、インターフェース定義または記述言語(IDL)ファイル)が、符号器175または符号化決定モジュール150と合成エンジン130との間のコンパイル時コントラクトを表す。コントラクトが変化している場合、2つのコンポーネントは、共通の(例えばIDL)ファイルを使用して再コンパイルされる必要がある。共通のファイルを使用することは、デバイスが同じバイナリデータ構造フォーマットに対して動作することを保証する。しかし、コンパイル時にデータを記述することは、符号化コード自体がグラフィックデータの記述から直接生成されるので、おそらく(上述の)符号化決定モジュール150のより高速な動作をもたらすことに留意されたい。しかしながら、コンパイル時の記述は、使用される言語に大きく依存する。例えば、CおよびC++においては、マクロの集合が、グラフィックプリミティブを定義するために使用されることができる。マクロを使用することによって、人は、マシンフォーマット構造および符号化またはネットワークコード自体の両方を定義することができる。
適切なデータ圧縮175がグラフィック・セット155内の1つまたは複数のフィールドを符号化してしまうと、これらのフィールド(またはグラフィック・セット155)はリモートデバイス110に送信され、そこで、これらのフィールド(またはグラフィック・セット155)はモジュール180を使用して解凍され、グラフィック・セット190に示されるように再生成される。したがって、合成エンジン195は、これらを使用して、ローカルデバイス105上のレンダリングデータ構造178と同期しているレンダリングデータ構造185を生成することができる。さらに、そのとき、このレンダリングデータ構造185は、ディスプレイドライバ104が、ローカルデバイス105からのアプリケーション115の表示を表す適切なディスプレイ102を生成することができるように構成されることができる。したがって、リモートデバイス110上のユーザがディスプレイ102と対話するとき、異なるグラフィック・セット155が生成されることができ、レンダリングデータ構造178、185を同期するために上述のように符号化する。
別の例示的実施形態において、選択される符号化の種類またはデータ圧縮モジュール175は、リモートデバイス110上のそれらのサポートされる符号化の種類に基づくことができる。例えば、接続の初期化中に(または、その後の何らかのその他の時点で)、データ圧縮の種類が、ローカルデバイスとリモートデバイス110との間でネゴシエーションされることができる。したがって、図示するように、リモートデバイス110はサポートされる符号化の種類184を送信し、次に、そのサポートされる符号化の種類184は利用可能な符号化メカニズムのリスト145に含まれることができる。そのとき、利用可能な符号化メカニズムのこのリスト145は、符号化決定モジュール150によって、上述のようにグラフィック・セット155内のフィールドを圧縮するために適切なデータ圧縮モジュール175を選択することに使用されることができる。
利用可能な符号化メカニズム145は概して接続時にリモートデバイス110とローカルデバイス105との間でネゴシエーションされるが、グラフィック・セット155の一部を圧縮するためにローカルデバイス105によって使用される厳密な圧縮メカニズムは、圧縮時にオンザフライ(on-the-fly)で決定されることに留意されたい。したがって、リモートデバイス110は、使用されることになるデータ圧縮175の厳密な種類について事前の知識を持たない。しかしながら、サポートされる符号化の種類184が前もって判定されるので、ローカルデバイス105は、任意のそのようなサポートされる符号化の種類184の使用がリモートデバイス110によって処理されることができることを保証されることができる。また、利用可能な符号化メカニズムのリスト145は、ローカルデバイス105上で利用可能な符号化メカニズムにも基づくことができることにさらに留意されたい。換言すると、データ圧縮モジュール175およびデータ解凍モジュール180は、それらの間で共通の種類を有する必要がある。
また、本明細書において検討されるように、任意のよく知られている種類の符号化メカニズムが使用されることができる(例えば、RLE、MPEGベース、JPEG、GIF、ZIP、LZベース、JBIG、DejaVu、または可逆圧縮フォーマットまたは不可逆圧縮フォーマットのいずれかであるその他のよく知られているパターンまたは統計に基づく圧縮メカニズム)ことに留意されたい。また、グラフィック・セット155内のフィールドのうちの1つまたは複数は、リモートデバイス110にネットワークを介して送信するためにデータを最も効率的に圧縮するために様々な符号化またはデータ圧縮モジュール175の階層関係を使用して符号化されることができることに留意されたい。
図1Bは、ローカル105およびリモートデバイス110の両方を有する上述と同様の分散システムを示す。図1Bは上述のシステムの簡素化されたバージョンであり、したがって、概略図を簡素化するためにコンポーネントまたはモジュールを省略して示されることに留意されたい。しかし、その図に示された実施形態においては、どの符号化の種類がグラフィック・セット155を符号化するために使用されるべきかを判定するのではなく、様々なメカニズムが、リモートデバイス110に送信するリソース(もしあれば)を選択するために使用される。1つのそのような実施形態において、異種のリソースがそれらのリソースを記憶するときに同種のやり方で扱われるアプリケーションのリソースのキャッシュが提供される。
例えば、第1のアプリケーション(例えば、アプリケーション1)115は、リソース「A」106の要求を行うことができる。リソースがネットワークを介してリモートデバイス110に送信されるとき、そのようなリソースの配信の状態がリソーステーブル112に記憶されることができる(この場合、リソース「A」114の配信の状態を転送済みと示す)。リモートデバイス110上で、リソース「A」106は、集中キャッシュ128内のリソースのリスト118に示されるように集中キャッシュ128に記憶される。したがって、次にアプリケーション115がリソース「A」106を使用したいと望むとき、リモートデバイス110に当該リソースを送信するのではなく、リソースマネージャ108は、リソースが既に送信されたことを特定し、単に、リソースデバイス110への送信のためのリソースID161を有する表示命令160を提供する。換言すれば、リソース(この場合、リソース「A」106)は、ローカル105デバイスとリモート110デバイスとの間の接続中に一度送信されることだけを必要とし、様々な異なるアプリケーション(例えば、同様にリソース「A」106を呼び出すアプリケーション2)にまたがって繰り返し使用されることができる。
特定のプロトコル(例えば、RDP)によって使用される一部のキャッシュメカニズムはリソースのキャッシュを可能にするが、概して、そのようなキャッシュは、使用されるリソースの種類(例えば、グリフ、ビットマップ、スプライトなど)に基づいて分けられることに留意されたい。そのようなメカニズムは本明細書において提供される、より包括的な集中キャッシュメカニズムと同程度に効率的である可能性があるが、これらのアプローチは拡張不可能である。全てのリソース180を記憶するための集中キャッシュ128を提供することによって、本発明は、様々なアプリケーション115にまたがって、および使用されることができる異なるレンダリングデータ構造178、185にまたがってそのようなリソース106を使用する能力を拡張する。例えば、本明細書において提供される包括的なキャッシュメカニズム(例えばRDPを使用する)は、リソースが一度だけ送信され、合成構造またはツリー内の複数のノードによって使用されるというさらなる利点を有する。例えば、アイコンが複数のアプリケーション115によって使用される場合、そのアイコンは、それらのアプリケーション115に対応する合成サブツリー(またはレンダリングデータ構造178、185)のそれぞれに存在する。
そのようなキャッシュメカニズムがない場合、リソースは、そのリソースを使用する各ノードのためにリモートデバイス110に送信される必要がある。しかし、本明細書において提供される集中記憶メカニズムを用いる場合、リソース165は、リソース165がノードに初めて追加されるときに一度だけ送信され、合成データ構造内の複数のノードによって使用される。また、ローカルデバイス105およびリモートデバイス110は、大きく異なるサイズのリソースをキャッシュすることによって引き起こされるメモリのフラグメンテーションを制限するメカニズムを使用してもしなくてもよいことに留意されたい。さらに、拡張不可能なアプローチはリソースにアクセスするための効率的なメカニズムを依然として提供することができるので、そのようなアプローチが、本明細書において提供される包括的なキャッシュと併せて使用されることができることに留意されたい。
さらに別の例示的実施形態において、部分的に送信されたリソースを用いてレンダリングすることによって応答性を向上するためのメカニズムが提供される。そのような場合、帯域幅などのシステム制約116、またはリモートデバイス110上のディスプレイの制約が、リソースマネージャ108を含む符号化決定モジュール150によって特定されることができる。そのようなシステム制約116に基づいて、リソースマネージャ108は、部分的なリソース163だけが、上述のようにグラフィック・セット155に関する表示命令160で送信されるべきであることを判定することができる。より具体的には、概して、グラフィック・セット155をレンダリングするために必要な2つの情報が存在する。本明細書において表示命令160として示される第1の部分は、リソース165に関する実際のレンダリング操作を記述する。概して、それらは、リソース165がレンダリングのためにどのように使用されるべきか、およびどのリソース165がレンダリングのために使用されるべきかについての命令を含む。第2の部分は、レンダリングのために使用されるリソース168を表す。
理解されることができるように、概して、レンダリングまたは表示命令160は、レンダリングが開始することができる前にクライアントまたはリモートデバイス110に全て送信される必要がある。しかし、これはリソース165には当てはまらない。リソース165は、レンダリングが、アプリケーション115によってレンダリングされる意味がある何らかのもののために開始するとき、常に100%利用可能でなければならない訳ではない。例えば、最初のビットマップリソース165は、漸進的な技術を用いて圧縮された画像を含むことができる。例えば、画像の色は、様々な帯域幅の制約、またはその他の考慮すべき事項のために初めは不正確である可能性がある。しかしながら、リモートデバイスは、リモートデバイス上でのレンダリングのためにこの不鮮明な、色のおかしい、またはその他の点で質を落とした画像を使用することができる。
例えば、リソース165がボタンである可能性がある場合を取り上げると、色が非常に不正確である可能性があるか、または何らかのその他の質の低下が見られる可能性があるが、ボタンの表示は、ユーザがボタンの最終バージョンを待つことなしにボタンと対話することを可能にするのに十分であることができる。しかしながら、画像からのさらなるデータがネットワークから到着するにつれて、リモートデバイス110は画像またはレンダリングデータ構造185をアップデートすることができる。したがって、ほとんどのユーザがリソース165の全てが存在することなしにアプリケーションを使用することができる場合に、ユーザによる知覚される応答性が劇的に向上される。例は色の質を落とす技術を使用するが、任意の種類の漸進的な符号化またはインターレースメカニズムが同様に使用される可能性があることに留意されたい。
また、この部分的レンダリングメカニズムは、保持モードのシステムに対して上手く機能することができるが、その他のモデル(例えばGDI)に対してはそれほど上手く機能しない可能性があることに留意されたい。理由は、保有モードにおいては、レンダリングデータ構造185(例えば合成ツリー)が、改善されたリソース165を用いてアップデートされると、全ての情報が、再描画を引き起こすためにリモート側110にあるからである。しかし、その他の非保持モデル(例えばGDIモデル)においては、リモート110側に再構成するためのメカニズムが存在しない可能性があり、したがって、描画が不正確なリソースを用いて行われる場合、概して、ローカル105またはサーバ側が描画操作において再びそのリソース165を使用するまで描画をリフレッシュするメカニズムが存在しない。しかしながら、非保持モデルにおいてさえ、何かをレンダリングする前にリソース165全体を待つのではなく不正確なリソース165を使用してレンダリングすることが好ましい場合が存在する可能性がある。
図1Dは、曲線142において表示される座標の配列を使用する上記の実施形態を示す。図示するように、完全なリソースセット144は、曲線142に沿った多数の点を含む。しかし、実施形態は、システム制約116を使用して、部分的なリソースセット148のみが送信されるべきであることを判断する可能性がある。例えば、この例においては、曲線142を正確に表さないが、依然として画像全体の妥当な描画を可能にする曲線146に沿った点の一部だけが送信される。換言すると、正確な曲線142は、各点がその曲線に関するデジタルサンプルを表す多数の点から近似され、より多くのサンプルが存在するほど、曲線はより正確に見える。しかし、曲線142によっては、十分に近い表現146が、サンプルの数の一部のみを使用してレンダリングされることができる。点の残りは後でアップデートされることができる。アップデートがローカルデバイス105から到着するにつれて、リモートデバイス110は、その曲線142に関する点の集合をアップデートし、その曲線142を使用するデータ構造185を再レンダリングする。各アップデートによって、レンダリング曲線146は、最終的な意図される形状142に次第に近付いていく。
上記の例はグラフィカルな曲線または格子、および単純なボタンを使用するが、より高度なリソース165もこの特徴を使用することができることに留意されたい。例えば、最終形態が3Dオブジェクトである画像が、最初に、2Dオブジェクトの中間形態で示されることができる。帯域幅が利用可能になるにつれて、益々多くの情報が、画像をその画像の最終的な3D形態にアップデートするために送信されることができる。言うまでもなく、認識されるであろうように、この特徴を利用することができる多くの様々なリソース165およびメカニズム(すなわち、リソースの一部をどのように送信するか、およびリソースのどの部分を送信するか)が存在する。したがって、上記の例は、本明細書において例示のみを目的として使用され、これらのおよびその他の実施形態の範囲を限定するように意図されない。
さらに別の例示的実施形態において、リソースマネージャ108は、ローカルデバイス105およびリモートデバイス110の両方で専用のリソースを判定または特定することができる。したがって、サポートされるアプリケーションの情報122が、接続が初期化されると(またはその後のいずれかのときに)ローカルデバイス105に転送されることができる。概して、この情報は、リモートデバイス110上でサポートされ、リソースストア126に記憶されるアプリケーションのリソース124を含む。そのとき、このサポートされるアプリケーションの情報122は、リソースマネージャ108によって、どの種類のリソースがリモートデバイス110に送信されるべきかを決定することに使用されることができる。
例えば、リモート110およびローカルデバイス105の両方が、特定のアプリケーション(例えば、特定の種類のテキストエディタ)をインストールする可能性がある。したがって、アイコンまたはそれに関連するその他のアプリケーションのリソース124も、両方のデバイス105、110上に配置される。これらの場合、ローカルデバイス105は、ローカルデバイス105が適切なアイコンに関するリソース124を実際に送信する必要なしに、単に表示命令160およびリソースID161を使用して、リモートデバイス110に適切なアイコンを使用するように命令することができる。しかし、そのようなモデルはリソース124がシリアル化された形態で記憶されると仮定することに留意されたい。それらのリソース124は必要に応じて変換されることができるが、概して、変換はハードウェアレイヤで行われる。したがって、リソースを変換しないプロトコルまたはグラフィック言語に関して、ローカルデバイス105が、回線を介してリソース124に関するデータを送信する代わりに、よく知られているリソースID161をクライアントに伝達することができる。リモートデバイス110上での専用のアプリケーションのリソース124のそのような使用は、リソース124のサイズが大きい場合に特に有利である。
厳密なリソース124がローカル105およびリモート110デバイスの両方に存在する必要はないことにも留意されたい。例えば、一部のアプリケーション115は、いくつかのアプリケーション115の間に共通するリソース124を有する。例えば、ほとんどのアプリケーション115は、境界と、タイトルバーと、最小化/最大化、全/部分画面、および/または閉じるアイコンに関するウィンドウ命令とを有する。したがって、概して、リモートデバイス110上で使用されるアプリケーションのリソース124はローカルマシン105上の厳密なアプリケーション115に対応することになるが、それらのアプリケーションのリソース124は、必ずしもローカルマシン105上の厳密なアプリケーション115に対応する必要はない。
図1Cは、ローカルデバイス105およびリモートデバイス110の両方で使用されることができるか、または専用の様々なリソースの使用を示す。この例において、境界132リソースは、アプリケーション画面のウィンドウを縁取るために使用されることができる。さらに、タイトルバー135およびウィンドウ操作アイコン136も、リモートデバイス110上でアクセスされ、使用されることができるアプリケーションのリソース124である可能性がある。同様に、様々なコンポーネントまたはアイコンを有するツールバー138も利用されることができる。しかしながら、ローカルマシン105上で操作されるか、またはそうでなければ変更される情報は、上述の実施形態によって回線を介して送信される必要がある。
さらにその他の例示的実施形態において、上記の符号化およびその他のリソース選択メカニズムが、単一のコンポーネントの一部として実装されることができる。このコンポーネントとアプリケーションまたは合成エンジンとの間のインターフェース(またはコントラクト(contract))は、IDLまたはXMLのようなインターフェース定義言語によって定義されることができる。しかしながら、コントラクトは、リソース165データと、リソース165を効率的に符号化するために必要なメタデータ140との両方を符号化決定モジュール150に提供すべきである。このようにして、リソース165のレイアウトまたは編成の変更は、符号化決定モジュール150に対するアップデートを必要としない。メタデータ140に対するアップデートだけが必要とされ、このアップデートは、インターフェースまたはコントラクトを変更することによって遂行されることができる。
本発明は、機能的ステップおよび/または非機能的動作を含む方法の観点で説明されることもできる。以下は、本発明を実施することにおいて実行されることができるステップおよび/または動作の説明である。通常、機能的ステップは達成される結果の観点で本発明を説明し、一方、非機能的動作は特定の結果を達成するためのより具体的な動作を説明する。機能的ステップおよび/または非機能的動作が特定の順序で説明されるかまたは特許請求の範囲に記載される可能性があるが、本発明はステップおよび/または動作の任意の特定の順序または組合せに必ずしも限定されない。さらに、特許請求の範囲の詳述におけるステップおよび/または動作の使用(のみ)が、そのような用語の所望の特定の使用を示すために使用される。
上述のように、図2〜4は、本発明の様々な例示的実施形態に関する流れ図を示す。図1〜4の以下の説明は、場合によって図1A〜Dからの対応する要素を参照する。これらの図からの特定の要素に対する言及がなされる可能性があるが、そのような言及は例示のみを目的として使用され、明示的に特許請求の範囲に記載されない限り、記載の実施形態の範囲を限定するか、またはそうでなければ狭めるように意図されない。
図2は、使用されるグラフィック言語の種類にかかわらず、適切な符号化メカニズムを判定することによって、ローカルデバイス上で実行されるアプリケーションに関してリモートデバイス上に表示するためのグラフィックオブジェクトを効率的に符号化する方法200に関する流れ図を示す。方法200は、ローカルデバイス上で(1つまたは複数の)アプリケーションを実行する動作205を含む。例えば、アプリケーション115はローカルデバイス上105で実行されることができ、アプリケーション115は、リモートデバイス110における表示のために特定のグラフィック言語に基づいてグラフィック表示を生成する。そのようなグラフィック言語は、GDI、WPF、またはその他の種類の現在知られているかまたは将来のグラフィック言語を含むことができる。
方法200は、特定のグラフィック言語に関するグラフィック・セットを受信する動作210も含む。例えば、符号化決定モジュール150が、特定のグラフィック言語に関するグラフィック・セット155を受信することができ、グラフィック・セット155は、(1つまたは複数の)表示命令160および/または(1つまたは複数の)リソース165を含む。そのようなグラフィック・セット155は、リモートデバイス110上でアプリケーション115に関するグラフィック表示の少なくとも一部をレンダリングするために使用される。これらの表示命令は、ディスプレイ上の位置、サイズ、色、形状などの観点でリソースを記述するプロパティを含むことができる。リソースは、グリフ、アイコン、スプライト、ビットマップ、または任意のその他の画像などのよく知られているリソースのうちのいずれかのリソースであってよいことにさらに留意されたい。
さらに、メソッド200は、(1)グラフィック・セットの内容を記述するメタデータ、(2)リモートデバイスによってサポートされるデータ圧縮メカニズムを記述する符号化種類データに関する符号化データを受信する動作220を含む。例えば、符号化決定モジュール150は、データ圧縮モジュール175が、グラフィック・セット155が通常の形態であるときよりも効率的にグラフィック・セット155を圧縮することを助けるために使用される、グラフィック・セット155内のフィールドの内容を記述するグラフィック・セット・メタデータ140を受信することができる。この通常の形態は、シリアル化されたまたはシリアル化されていない形態であってよいことに留意されたい。あるいは、または併せて、符号化決定モジュール150は、リモートデバイス110によってサポートされる利用可能な符号化メカニズムのリスト145を受信することができる。この符号化種類データは、上述のようにグラフィック・セット155に対して効率的な圧縮の種類を選択するためにリモートデバイス110によってサポートされるデータ圧縮メカニズムを記述する。
受信された符号化データに基づいて、方法200は、グラフィック・セットの一部に対する適切な符号化メカニズムを決定する動作225も含む。例えば、メタデータ140と利用可能な符号化メカニズムのリスト145とに基づいて、符号化決定モジュール150は、どのデータ圧縮モジュール175が最も効率的にグラフィック・セット155の様々な部分を符号化するかを判定することができる。
図3は、アプリケーションに関する(もしあれば)どのリソースがリモートデバイスに送信されるべきかを判定することによって、ローカルデバイス上で実行するアプリケーションに関してリモート・ディスプレイ・デバイス上にグラフィックオブジェクトを効率的にレンダリングする方法300を示す。方法300は、ローカルデバイス上で(1つまたは複数の)アプリケーションを実行する動作305を含む。例えば、アプリケーション115がローカルデバイス105上で実行されることができ、それらのアプリケーションのそれぞれは、リモートデバイス110に送信するためのグラフィック表示を生成する。方法300はまた、(1つまたは複数の)表示命令および/または(1つまたは複数の)リソースを含むグラフィック・セットを受信する動作310を含む。例えば、符号化決定モジュール150は、リソースマネージャ108と連携して、リモートデバイス110上のアプリケーション115に関するグラフィック表示の少なくとも一部をレンダリングすることに使用されるべきであるリソース165および/または表示命令160を含むグラフィック・セット155を受信することができる。
方法300は、(1)配信状態情報、(2)サポートされるアプリケーションの情報、(3)システム制約データ、および/または(4)可視性情報に関するリソースデータを受信する動作315も含む。より具体的には、リソースマネージャ108は、リソース165の配信状態を判定するためのリソースデータを受信することができる。例えば、リソース状態テーブル112が、記憶されるリソースの種類にかかわらず、対応するリソース(例えばリソースA 114)がリモートデバイス110に送信され、再利用の目的で集中キャッシュ128に記憶されたかどうかを判定するために、グラフィック・セット155に対応するリソースの配信状態を判定するためにリソースマネージャ108によって使用されることができる。換言すれば、異種のリソースがそれらのリソースを記憶するときに同種のやり方で扱われるように、様々な種類のリソースが集中キャッシュ128内に記憶される。ローカルデバイス105およびリモートデバイス110は、大きく異なるサイズのリソースをキャッシュすることによって引き起こされるメモリのフラグメンテーションを制限するメカニズムを使用してもしなくてもよいことに留意されたい。
さらに、符号化決定モジュール150またはリソースマネージャ108は、ローカルデバイス105からリソースを転送することなしにそのようなリソースを表示するためにリモートデバイス110上で現在利用可能な専用のリソース124を判定するために、サポートされるアプリケーションの情報122を受信することができる。換言すると、リモートデバイス110およびローカルデバイス105の両方が同様のまたは同じアプリケーションをインストールする場合、リモートデバイス110上で確保されているリソースまたはアイコンが特定され、表示されることができ、したがって、それらのリソースはローカルデバイス105からリモートデバイスに送信される必要がない。そのような専用のリソースは、境界、タイトルバー、ツールバー、または両方のアプリケーションにまたがって標準的であるアイコンまたはリソースの何らかのその他の形態を含むことができる。
さらに、符号化決定モジュール150またはリソースマネージャ108は、帯域幅またはその他のシステム制約を節約するために完全なリソースの質を落としたバージョンが最初に送信され、質を落としたバージョンを改善するアップデートがその後送信されるように、リソースの一部がリモートデバイス110に漸進的に送信されるべきであるかどうかを判定するためのシステム制約情報116も受信することができる。例えば、図1Dに示されるように、高サンプリングで曲線142を示す完全なリソースセット144は、曲線146から示されるように総サンプリングセットの一部だけを含む部分的なリソースセット148として最初に送信されることができる。リモートデバイスに漸進的に送信される部分的なリソースは、ビットマップ、曲線、格子、またはその他の画像の形態を含む可能性があることに留意されたい。また、質を落としたバージョンは、色、詳細、サンプルの点の数、またはその他の画像の質の低下の不正確性を含むが、リソースの質を落としたバージョンは、リモートデバイス110のユーザがリソースを認識することを可能にするのに十分な情報を含むべきであることに留意されたい。リソースは、ボタン、チェックボックス、またはその他のインタラクティブなアイテムである可能性があり、ユーザは、完全なリソースを受信することなしに依然としてアイテムと対話することができるべきであることにさらに留意されたい。
さらに、符号化決定モジュール150またはリソースマネージャ108は、グラフィック・セット155に対応する1つまたは複数のリソース165がユーザによって現在見られることができるか否かを記述するリソース状態テーブル112からの可視性情報113を受信することができる。そのような可視性情報は、リソースのZオーダ、透明度、最小化/最大化状態などについての情報を含むことができる。したがって、見えない可能性があるリソースは、帯域幅が許すまで、または見るために必要とされるまでリモートデバイス110への送信を遅らされることができる。
受信されたリソース情報に基づいて、方法300は、符号化のためにグラフィック・セットの一部を選択する動作320を含む。換言すれば、上記の配信状態、サポートされるアプリケーションの情報、システム制約データ、および/または可視性情報に基づいて、グラフィック・セット155の一部(すなわち、表示命令のフィールド、またはリソースの一部)が、データ圧縮モジュール175を使用して符号化するために選択される。
図4は、ローカルデバイスで実行されるアプリケーションに関してリモートデバイス上でグラフィック表示を生成することに使用されるレンダリングデータ構造を効率的に同期する方法400を示す。方法400は、ローカルデバイス上で(1つまたは複数の)アプリケーションを実行する動作405を含む。例えば、上述のように、アプリケーション115がローカルデバイス105上で実行されることができ、それらのアプリケーションのそれぞれは特定のグラフィック言語のレンダリングデータ構造178を生成し、それらのレンダリングデータ構造178は、リソース165に関する状態を保有し、リモートデバイス110上でアプリケーション115に関するグラフィック表示を構成するために使用される保持モードデータ構造である。
方法400は、(1つまたは複数の)リソースおよび/または(1つまたは複数の)表示命令を含むグラフィック・セットを受信する動作410も含む。例えば、符号化決定モジュール150は、表示命令160および/またはリソース165を含むグラフィック・セット155を受信することができる。表示命令160は、ディスプレイ上の位置付け、サイズ、色、形状などの観点でリソース165を記述するプロパティを含むことができる。
方法400は、グラフィック・セットの記述を含むメタデータを受信する動作114も含む。例えば、符号化決定モジュール150は、データ圧縮モジュール175がより容易に認識し、適切に符号化することができる異なるグラフィック言語に関する複数のグラフィック・セット155の間で共通のフィールドに対する構造の種類を圧縮モジュール175が特定することを助けるために、グラフィック・セット155のフィールドの記述を含むグラフィック・セット・メタデータ140を受信することができる。例えば、メタデータ140に基づいて、フィールドは、マシンフォーマットからネットワークフォーマットに変換されることができ、この変換は、マシン形態であるときよりも優れた圧縮比のためにフィールドのビット長を削減する。さらに、メタデータ140は、可変長の形態の符号化のために、またはリソースの変化だけがリモートデバイスに送信されるように使用される差分符号化のために使用されることができ、リソースの変化は、グラフィック・セット155全体を送信するよりも少ないバイトを使用して符号化されることができる。さらに、メタデータ140は、特定の種類のフィールドを同じ種類の前に符号化された構造に基づいて符号化するために使用されるインターオーダ圧縮メカニズムのために使用されることができる。
メタデータ140はグラフィック・セット155に添付されてもされなくてもよいことに留意されたい。例えば、概して、メタデータ155の交換は、使用されるグラフィック・セット155の種類(例えば、オーダ/命令またはリソース)を示す1回限りのイベントである。そのとき、各グラフィック・セット155は、種類(または識別子)を初めに付けられることができる。符号化決定モジュール150は、そのとき、この識別子を見ることができ、最初に交換されたメタデータ155に基づいて適切なデータ圧縮モジュール175、適切な符号化の順序などを選択することができる。
受信されたメタデータに基づいて、方法400は、グラフィック・セットのフィールドを符号化する動作420を含む。例えば、グラフィック・セット155内のフィールドを記述するグラフィック・セット・メタデータ140に基づいて、符号化決定モジュール150は、リモートデバイス105に送信するためのフィールドを符号化し、ローカル105とリモート110デバイスとの間でレンダリングデータ構造178、185を同期するためにそのようなデータを使用することができ、レンダリングデータ構造178、185は、アプリケーション115に関してリモートデバイス110においてグラフィック表示を構成するために使用される。
本発明は、本発明の精神または本質的特徴から逸脱することなしにその他の特定の形態で実施されることができる。説明された実施形態は全ての点において例示的とだけみなされるべきであり、限定的とみなされるべきではない。したがって、本発明の範囲は、上記の説明によってではなく添付の特許請求の範囲によって示される。特許請求の範囲と均等な意味および範囲内に入る全ての変更は特許請求の範囲に包含されるべきである。
例示的実施形態による、リモートデバイスにおいて表示をレンダリングする際に使用されるグラフィック・セットを効率的に符号化するために様々な情報を使用する分散システムを示す図である。 例示的実施形態による、(もしあれば)リソースのどの部分がリモートデバイスへの送信のために符号化されるべきかを判定するために様々なリソースについての情報を利用する分散システムを示す図である。 例示的実施形態による、リモートデバイス上で利用可能であり、ローカルデバイスからのリソースの転送が存在しないように使用されることができる専用のリソースまたはアイコンの一部を示す図である。 例示的実施形態による、部分的に送信されたリソースを用いてレンダリングすることによって応答性を向上するためのメカニズムを示す図である。 例示的実施形態による、リモートデバイス上の表示のためのグラフィックオブジェクトを効率的に符号化するための方法に関する流れ図である。 例示的実施形態による、リモート・ディスプレイ・デバイス上でグラフィックオブジェクトを効率的にレンダリングする方法に関する流れ図である。 例示的実施形態による、リモートデバイス上でグラフィック表示を生成する際に使用されるレンダリングデータ構造を効率的に同期する方法に関する流れ図である。

Claims (22)

  1. 分散コンピューティングシステムにおいて、使用されるグラフィック言語の種類にかかわらず、符号化メカニズムを決定することによって、ローカルデバイス上で実行される1つまたは複数のアプリケーションに関する、リモートデバイス上で表示させるグラフィック・セットを符号化するコンピュータ実行方法であって、
    ローカルデバイス上で1つまたは複数のアプリケーションを実行し、グラフィック・セットを生成するステップであって、前記グラフィック・セットは、前記1つまたは複数のアプリケーションに関するグラフィック表示の少なくとも一部をレンダリングする際に使用される、1つもしくは複数のリソース、1つもしくは複数の表示命令、または前記リソースおよび前記表示命令の両方を含む、ステップと、
    前記アプリケーションが、1つまたは複数のデータ圧縮モジュールが前記グラフィック・セットを圧縮することを助けるために使用される、前記グラフィック・セット内の1つまたは複数のフィールドの内容を記述するメタデータを抽出するステップと、
    前記アプリケーションが、前記グラフィック・セットに対して圧縮の種類を選択する、前記リモートデバイスによってサポートされる1つまたは複数のデータ圧縮メカニズムを記述する符号化種類データを、前記リモートデバイスから受信するステップと、
    前記アプリケーションが、前記抽出されたメタデータおよび前記受信された符号化種類データに基づいて、前記グラフィック・セットの1つまたは複数の部分に対して符号化メカニズムを決定するステップと、
    前記アプリケーションが、前記決定された符号化メカニズムに基づいて、前記グラフィック・セットの1つまたは複数の部分を符号化するステップと
    を含むことを特徴とするコンピュータ実行方法。
  2. 前記1つまたは複数の表示命令は、ディスプレイ上の位置付け、サイズ、色、または形状のうちの1つまたは複数の観点でリソースを記述する1つまたは複数のプロパティを含むことを特徴とする請求項1に記載のコンピュータ実行方法。
  3. 前記メタデータに基づいて、前記フィールドのうちの1つまたは複数を、マシンフォーマットからネットワークフォーマットに変換し、前記1つまたは複数のフィールドのビット長を削減することを特徴とする請求項1に記載のコンピュータ実行方法。
  4. 前記メタデータに基づいて、前記フィールドのうちの1つまたは複数、可変長の形態で符号化することを特徴とする請求項1に記載のコンピュータ実行方法。
  5. 前記メタデータに基づいて、差分符号化を使用し、リソースの変化だけを前記リモートデバイスに送信するように、前記グラフィック・セット全体よりも少ないバイト数を使用して符号化することを特徴とする請求項1に記載のコンピュータ実行方法。
  6. 前記メタデータに基づいて、インターオーダ圧縮メカニズムを使用し、特定の種類の前記フィールドのうちの1つまたは複数を、前に符号化された同じ種類の構造に基づいて符号化することを特徴とする請求項1に記載のコンピュータ実行方法。
  7. 前記リモートデバイスによってサポートされる前記1つまたは複数のデータ圧縮メカニズムを、接続時にローカルデバイスとリモートデバイスとの間でネゴシエーションし、選択される前記符号化メカニズムは、前記データ圧縮メカニズムのそれぞれ所与のグラフィック・セットに対する圧縮比にさらに基づくことを特徴とする請求項1に記載のコンピュータ実行方法。
  8. 前記1つまたは複数のデータ圧縮モジュールは、RLE、MPEGベース、JPEG、GIF、ZIP、LZベース、JBIG、DejaVuに基づく圧縮メカニズムのうちの1つまたは複数を含むことを特徴とする請求項7に記載のコンピュータ実行方法。
  9. 分散コンピューティングシステムにおいて、1つまたは複数のアプリケーションに関するどのリソースをリモートデバイスに送信するべきかを判定することによって、ローカルデバイス上で実行中の前記アプリケーションに関するグラフィック表示を前記リモートデバイスのディスプレイ上にレンダリングさせるために前記リモートデバイスに送信するコンピュータ実行方法であって、
    前記ローカルデバイス上で、前記アプリケーションを実行して、1つもしくは複数のリソース、1つもしくは複数の表示命令、または前記リソースおよび前記表示命令の両方を含むグラフィック・セットを生成するステップであって、前記グラフィック・セットは、前記アプリケーションに関するグラフィック表示の少なくとも一部をレンダリングする際に使用される、生成するステップと、
    前記アプリケーションが、(1)記憶されるリソースの種類にかかわらず、前記グラフィック・セットに対応する1つもしくは複数のリソースが前記リモートデバイスに送信され、再利用の目的で集中キャッシュに記憶されたかどうかを判定する配信状態情報、(2)前記ローカルデバイスから少なくとも1つのリソースを転送することなしに前記アプリケーションに関する前記少なくとも1つのリソースを前記リモートデバイス上に表示するために前記リモートデバイス上で現在利用可能な専用のリソースを判定する、サポートされるアプリケーションの情報、(3)帯域幅もしくはシステム制約を節約するために、画質を落としたリソースを最初に送信し、前記画質を落としたリソースを改善するアップデートをその後送信するように、リソースの一部を前記リモートデバイスに漸進的に送信するべきであるかどうかを判定するシステム制約データ、または(4)前記グラフィック・セットに対応する1つまたは複数のリソースがユーザによって現在見られることができるか否かを記述する可視性情報、のうちの1つまたは複数に関する情報を含む、前記ローカルデバイス上にあらかじめ記憶されたリソース情報に基づいて、前記リモートデバイスに送信するべきリソースを判定し、前記グラフィック・セットの一部を選択し、符号化するステップと、
    前記アプリケーションが、前記符号化されたグラフィック・セットを、前記リモートデバイスに送信するステップと
    を含むことを特徴とするコンピュータ実行方法。
  10. 前記ローカルデバイス、前記リモートデバイス、または前記ローカルデバイスおよび前記リモートデバイスの両方は、前記集中キャッシュ内にサイズの異なるリソースをキャッシュすることによって引き起こされるメモリのフラグメンテーションを制限するメカニズムを使用することを特徴とする請求項9に記載のコンピュータ実行方法。
  11. 前記専用のリソースは、前記アプリケーションに関する境界、タイトルバー、ツールバー、またはウィンドウ操作アイコンの1つまたは複数を含むことを特徴とする請求項9に記載のコンピュータ実行方法。
  12. 前記可視性情報は、前記1つまたは複数のリソースのZオーダ、透明度、または最小化/最大化状態についての情報を含むことを特徴とする請求項9に記載のコンピュータ実行方法。
  13. 前記画質を落としたリソースを改善するアップデートに関するリソースは、ビットマップ、曲線、または格子のうちの1つまたは複数を含み、前記画質を落としたリソースの画質の低下は、色、詳細、サンプルの点の数のうちの1つまたは複数によるものであることを特徴とする請求項9に記載のコンピュータ実行方法。
  14. 前記画質を落としたリソースは、フォームコントロールであり、前記ユーザは、前記画質を落としたリソースを改善するアップデートを受信することなしに前記フォームコントロールを操作することができることを特徴とする請求項13に記載のコンピュータ実行方法。
  15. 分散コンピューティングシステムにおいて、ローカルデバイス上で実行される1つまたは複数のアプリケーションに関してリモートデバイス上でグラフィック表示を生成する際に使用される1つまたは複数のレンダリングデータ構造を同期するコンピュータ実行方法であって、
    前記ローカルデバイス上で前記アプリケーションを実行し、特定のグラフィック言語に対応し、前記レンダリングデータ構造を修正する際に使用される1つもしくは複数のリソース、1つもしくは複数の表示命令、または前記リソースおよび前記表示命令の両方を含むグラフィック・セットを生成するステップであって、前記アプリケーションのそれぞれは前記特定のグラフィック言語の前記レンダリングデータ構造を生成し、前記レンダリングデータ構造は、前記リソースに関する状態を保有し、かつ前記リモートデバイス上で前記アプリケーションに関する前記グラフィック表示を構成するために使用される保持モードデータ構造である、生成するステップと、
    前記アプリケーションが、1つまたは複数のデータ圧縮モジュールが認識し、符号化することができる1つまたは複数の異なるグラフィック言語に関する複数の前記グラフィック・セットの間で共通の1つまたは複数のフィールドに対する構造の種類を前記データ圧縮モジュールが特定することを助けるために、前記フィールドの記述を含むメタデータを抽出するステップと、
    前記アプリケーションが、前記抽出したメタデータに基づいて、前記フィールドを符号化するステップと、
    前記アプリケーションが、前記符号化されたフィールドを含むグラフィック・セットを前記リモートデバイスに送信するステップと、
    前記アプリケーションが、前記レンダリングデータ構造を、前記ローカルデバイスと前記リモートデバイスの間で同期するステップと
    を含むことを特徴とするコンピュータ実行方法。
  16. 前記表示命令は、ディスプレイ上の位置付け、サイズ、色、または形状のうちの1つまたは複数の観点でリソースを記述する1つまたは複数のプロパティを含むことを特徴とする請求項15に記載のコンピュータ実行方法。
  17. 前記メタデータに基づいて、前記フィールドのうちの1つまたは複数を、マシンフォーマットからネットワークフォーマットに変換し、前記フィールドのビット長を削減することを特徴とする請求項15に記載のコンピュータ実行方法。
  18. 前記メタデータに基づいて、前記フィールドのうちの1つまたは複数、可変長の形態で符号化することを特徴とする請求項15に記載のコンピュータ実行方法。
  19. 前記メタデータに基づいて、差分符号化を使用し、リソースの変化だけを前記リモートデバイスに送信するように、前記グラフィック・セット全体よりも少ないバイト数を使用して符号化することを特徴とする請求項15に記載のコンピュータ実行方法。
  20. 前記メタデータに基づいて、インターオーダ圧縮メカニズムを使用し、特定の種類の前記フィールドのうちの1つまたは複数を、前に符号化同じ種類の構造に基づいて符号化することを特徴とする請求項15に記載のコンピュータ実行方法。
  21. 前記符号化されたグラフィック・セットを送信するステップと
    前記アプリケーションが、前記符号化されたグラフィック・セットのZオーダ、透明度、および最小化/最大化状態の少なくとも1つに基づき、前記符号化されたグラフィック・セットの可視性を判定するステップと、
    前記アプリケーションが、前記ローカルデバイスと前記リモートデバイス間の帯域幅判定するステップと、
    前記アプリケーションが、前記判定された可視性および帯域幅に基づき、前記符号化されたグラフィック・セットの可視部分を先に、前記リモートデバイスに送信するステップと、
    前記アプリケーションが、前記判定された可視性および帯域幅に基づき、前記符号化されたグラフィック・セットの不可視部分を後から、前記リモートデバイスに送信するステップと
    を含むことを特徴とする請求項1に記載のコンピュータ実行方法。
  22. 前記符号化されたグラフィック・セットを送信するステップと
    前記アプリケーションが、前記符号化されたグラフィック・セットのZオーダ、透明度、および最小化/最大化状態の少なくとも1つに基づき、前記符号化されたグラフィック・セットの可視性を判定するステップと、
    前記アプリケーションが、前記ローカルデバイスと前記リモートデバイス間の帯域幅判定するステップと、
    前記アプリケーションが、前記判定された可視性および帯域幅に基づき、前記符号化されたグラフィック・セットの可視部分を先に、前記リモートデバイスに送信するステップと、
    前記アプリケーションが、前記判定された可視性および帯域幅に基づき、前記符号化されたグラフィック・セットの不可視部分を後から、前記リモートデバイスに送信するステップと
    を含むことを特徴とする請求項9に記載のコンピュータ実行方法。
JP2009500354A 2006-03-15 2007-01-16 代替的グラフィック・セットの効率的な符号化 Expired - Fee Related JP5080554B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/375,961 2006-03-15
US11/375,961 US8244051B2 (en) 2006-03-15 2006-03-15 Efficient encoding of alternative graphic sets
PCT/US2007/001101 WO2007106211A1 (en) 2006-03-15 2007-01-16 Efficient encoding of alternative graphic sets

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2012049212A Division JP5373135B2 (ja) 2006-03-15 2012-03-06 代替的グラフィック・セットの効率的な符号化

Publications (2)

Publication Number Publication Date
JP2009530706A JP2009530706A (ja) 2009-08-27
JP5080554B2 true JP5080554B2 (ja) 2012-11-21

Family

ID=38509805

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2009500354A Expired - Fee Related JP5080554B2 (ja) 2006-03-15 2007-01-16 代替的グラフィック・セットの効率的な符号化
JP2012049212A Expired - Fee Related JP5373135B2 (ja) 2006-03-15 2012-03-06 代替的グラフィック・セットの効率的な符号化

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2012049212A Expired - Fee Related JP5373135B2 (ja) 2006-03-15 2012-03-06 代替的グラフィック・セットの効率的な符号化

Country Status (14)

Country Link
US (2) US8244051B2 (ja)
EP (1) EP2005310A4 (ja)
JP (2) JP5080554B2 (ja)
KR (1) KR101159396B1 (ja)
CN (1) CN101401087B (ja)
AU (1) AU2007225421B2 (ja)
BR (1) BRPI0708763A2 (ja)
CA (1) CA2642529C (ja)
IL (1) IL193515A (ja)
MX (1) MX2008011658A (ja)
MY (1) MY149001A (ja)
RU (1) RU2439675C2 (ja)
TW (1) TWI437486B (ja)
WO (1) WO2007106211A1 (ja)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8244051B2 (en) * 2006-03-15 2012-08-14 Microsoft Corporation Efficient encoding of alternative graphic sets
US10387130B1 (en) * 2007-02-23 2019-08-20 Sugarcrm Inc. Metadata driven distributed application behavior system and method
WO2008137432A2 (en) * 2007-05-01 2008-11-13 Dyyno Sharing of information and formatting information for transmission over a communication network
US20090172710A1 (en) * 2007-12-28 2009-07-02 Arman Toorians Method and system for enabling a mini program on a computing device to access an auxiliary system
US20090210817A1 (en) * 2008-02-15 2009-08-20 Microsoft Corporation Mechanism for increasing remote desktop responsiveness
US8170123B1 (en) 2008-04-15 2012-05-01 Desktone, Inc. Media acceleration for virtual computing services
US8200896B2 (en) * 2008-06-06 2012-06-12 Microsoft Corporation Increasing remote desktop performance with video caching
US8285857B2 (en) * 2008-10-31 2012-10-09 Hewlett-Packard Development Company, L.P. Saving a layout of display(s) of a remote computer
US8654134B2 (en) 2008-12-08 2014-02-18 Microsoft Corporation Command remoting
EP2278550B1 (en) * 2009-06-17 2013-08-14 Canon Kabushiki Kaisha Method of encoding and decoding a graphics path sequence into a layered scheme
US9104452B2 (en) * 2009-07-27 2015-08-11 Microsoft Technology Licensing, Llc Hybrid remote sessions
US9277021B2 (en) * 2009-08-21 2016-03-01 Avaya Inc. Sending a user associated telecommunication address
US8447102B2 (en) * 2009-09-02 2013-05-21 Sony Corporation Vector embedded graphics coding
US9235452B2 (en) * 2010-02-05 2016-01-12 Microsoft Technology Licensing, Llc Graphics remoting using augmentation data
US8385666B2 (en) 2010-03-31 2013-02-26 Microsoft Corporation Classification and encoder selection based on content
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
US8480292B2 (en) * 2010-06-01 2013-07-09 Boris Dushine Systems, apparatus and methods to reconstitute dehydrated drinks
KR101291398B1 (ko) * 2011-06-02 2013-07-30 삼성에스디에스 주식회사 전자서재를 제공하는 방법 및 장치
US8924507B2 (en) 2011-09-02 2014-12-30 Microsoft Corporation Cross-frame progressive spoiling support for reduced network bandwidth usage
US9384711B2 (en) 2012-02-15 2016-07-05 Microsoft Technology Licensing, Llc Speculative render ahead and caching in multiple passes
US9467305B2 (en) 2012-03-07 2016-10-11 Vmware, Inc. Multitenant access to multiple desktops on host machine partitions in a service provider network
US9177533B2 (en) 2012-05-31 2015-11-03 Microsoft Technology Licensing, Llc Virtual surface compaction
US9286122B2 (en) 2012-05-31 2016-03-15 Microsoft Technology Licensing, Llc Display techniques using virtual surface allocation
US9230517B2 (en) 2012-05-31 2016-01-05 Microsoft Technology Licensing, Llc Virtual surface gutters
US9235925B2 (en) * 2012-05-31 2016-01-12 Microsoft Technology Licensing, Llc Virtual surface rendering
US9396565B2 (en) 2013-06-07 2016-07-19 Apple Inc. Rendering borders of elements of a graphical user interface
US9307007B2 (en) 2013-06-14 2016-04-05 Microsoft Technology Licensing, Llc Content pre-render and pre-fetch techniques
TWM487509U (zh) 2013-06-19 2014-10-01 杜比實驗室特許公司 音訊處理設備及電子裝置
US9253158B2 (en) 2013-08-23 2016-02-02 Vmware, Inc. Remote access manager for virtual computing services
CN105556837B (zh) 2013-09-12 2019-04-19 杜比实验室特许公司 用于各种回放环境的动态范围控制
WO2015190791A1 (ko) 2014-06-09 2015-12-17 엘지전자 주식회사 서비스 가이드 정보 송신 방법, 서비스 가이드 정보 수신 방법, 서비스 가이드 정보 송신 장치 및 서비스 가이드 정보 수신 장치
US9524536B2 (en) 2014-07-25 2016-12-20 Intel Corporation Compression techniques for dynamically-generated graphics resources
US9503761B2 (en) * 2015-02-03 2016-11-22 Tribune Broadcasting Company, Llc Method and system for localized replacement of base content in video feed, with replacement-media delivered in broadcast-TV transport stream
KR101652483B1 (ko) * 2015-02-26 2016-08-30 주식회사 한글과컴퓨터 개체에 대한 꾸미기 효과 처리가 가능한 전자 문서 편집 장치 및 방법
US10349095B2 (en) 2015-05-07 2019-07-09 Lg Electronics Inc. Transmission device for processing video data related to HDR/SDR and method for controlling the same
KR102657587B1 (ko) 2016-11-21 2024-04-15 삼성전자주식회사 커브 렌더링을 수행하는 방법 및 장치.
KR101965563B1 (ko) * 2017-03-17 2019-04-04 주식회사 인프라웨어 전자 문서 편집 방법 및 장치
CA3058421A1 (en) * 2017-03-30 2018-10-04 Magic Leap, Inc. Centralized rendering
US10977858B2 (en) 2017-03-30 2021-04-13 Magic Leap, Inc. Centralized rendering
KR101880507B1 (ko) * 2017-04-21 2018-07-20 주식회사 한글과컴퓨터 웹 문서에 삽입된 도형의 크기 조정을 지원하는 클라이언트 단말 장치 및 그 동작 방법
KR101880508B1 (ko) * 2017-04-27 2018-07-20 주식회사 한글과컴퓨터 웹 문서에서 목록 생성을 지원하는 웹 문서 편집 지원 장치 및 방법
US11227359B2 (en) * 2019-10-15 2022-01-18 Adobe Inc. User-defined image compositing on graphics processing units

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61208174A (ja) * 1985-03-12 1986-09-16 Mitsubishi Electric Corp 図形コマンド符号化装置
US5083262A (en) 1986-04-28 1992-01-21 International Business Machines Corporation Language bindings for graphics functions to enable one application program to be used in different processing environments
US5060286A (en) * 1989-01-19 1991-10-22 Hewlett-Packard Company Raster row and byte group graphics images data compression method
WO1992003816A1 (en) * 1990-08-16 1992-03-05 General Parametrics Corp. A display control device incorporating an auxiliary display
US5296936A (en) 1991-07-22 1994-03-22 International Business Machines Corporation Communication apparatus and method for transferring image data from a source to one or more receivers
US5351129A (en) 1992-03-24 1994-09-27 Rgb Technology D/B/A Rgb Spectrum Video multiplexor-encoder and decoder-converter
US5339108A (en) 1992-04-09 1994-08-16 Ampex Corporation Ordering and formatting coded image data and reconstructing partial images from the data
US5557749A (en) * 1992-10-15 1996-09-17 Intel Corporation System for automatically compressing and decompressing data for sender and receiver processes upon determination of a common compression/decompression method understood by both sender and receiver processes
US5991515A (en) * 1992-11-10 1999-11-23 Adobe Systems Incorporated Method and apparatus for compressing and decompressing data prior to display
US5638498A (en) 1992-11-10 1997-06-10 Adobe Systems Incorporated Method and apparatus for reducing storage requirements for display data
US5524110A (en) 1993-11-24 1996-06-04 Intel Corporation Conferencing over multiple transports
JPH07336676A (ja) 1994-06-08 1995-12-22 Oki Electric Ind Co Ltd 画像送信装置、画像受信装置、分散型画像通信システム及び集中型画像通信システム
US5754776A (en) 1995-12-28 1998-05-19 Intel Corporation Re-prioritizing background data transfers in multipoint conferencing
US5802282A (en) 1995-12-28 1998-09-01 Intel Corporation Recovering missing data during background data transfer in multipoint conferencing
US5918013A (en) * 1996-06-03 1999-06-29 Webtv Networks, Inc. Method of transcoding documents in a network environment using a proxy server
US6957260B1 (en) * 1996-06-03 2005-10-18 Microsoft Corporation Method of improving access to services provided by a plurality of remote service providers
US6072508A (en) * 1997-03-14 2000-06-06 S3 Incorporated Method and apparatus for shortening display list instructions
US6028965A (en) 1997-05-13 2000-02-22 Lg Electronics, Inc Method and apparatus for intelligent codec system
US6614428B1 (en) * 1998-06-08 2003-09-02 Microsoft Corporation Compression of animated geometry using a hierarchical level of detail coder
US7010032B1 (en) 1999-03-12 2006-03-07 Kabushiki Kaisha Toshiba Moving image coding apparatus and decoding apparatus
US6947994B1 (en) 1999-04-09 2005-09-20 Canon Kabushiki Kaisha Negotiating an exchange of image processing functionality
JP2001016447A (ja) * 1999-06-30 2001-01-19 Minolta Co Ltd 画像処理装置および画像処理方法、ならびに画像処理プログラムを記録した記録媒体
US6687745B1 (en) 1999-09-14 2004-02-03 Droplet, Inc System and method for delivering a graphical user interface of remote applications over a thin bandwidth connection
US6940912B2 (en) 2000-04-21 2005-09-06 Microsoft Corporation Dynamically adaptive multimedia application program interface and related methods
US7634011B2 (en) 2000-04-21 2009-12-15 Microsoft Corporation Application program interface (API) facilitating decoder control of accelerator resources
US6891893B2 (en) 2000-04-21 2005-05-10 Microsoft Corp. Extensible multimedia application program interface and related methods
US6834297B1 (en) 2000-10-06 2004-12-21 Redline Networks, Inc. Web resource transfer acceleration system and method
US7249196B1 (en) * 2000-10-06 2007-07-24 Juniper Networks, Inc. Web page source file transfer system and method
US6934756B2 (en) 2000-11-01 2005-08-23 International Business Machines Corporation Conversational networking via transport, coding and control conversational protocols
US6950213B1 (en) 2000-12-20 2005-09-27 Cisco Systems, Inc. Fast method for fax encoded data conversion
US20020093948A1 (en) 2001-01-16 2002-07-18 Motorola, Inc. Packet-based multimedia communications system having one or more wireless links
DE10128532A1 (de) * 2001-06-13 2003-01-02 Siemens Ag Verfahren zum Ermitteln eines Datenkompressionsverfahrens
KR100422252B1 (ko) * 2001-12-20 2004-03-11 삼성전자주식회사 씬 클라이언트 네트워크 시스템과 그 네트워크 시스템의데이터 전송 방법
US7376695B2 (en) * 2002-03-14 2008-05-20 Citrix Systems, Inc. Method and system for generating a graphical display for a remote terminal session
JP4100182B2 (ja) 2003-01-30 2008-06-11 松下電器産業株式会社 通信端末装置及びその制御方法
CN1523518A (zh) * 2003-02-17 2004-08-25 郭慧民 智能汉语文化辞典***
US7173635B2 (en) 2003-03-25 2007-02-06 Nvidia Corporation Remote graphical user interface support using a graphics processing unit
EP1625477B1 (en) 2003-05-16 2018-02-21 Google LLC Methods and systems for image sharing over a network
US7325045B1 (en) 2003-08-05 2008-01-29 A9.Com, Inc. Error processing methods for providing responsive content to a user when a page load error occurs
US7702727B2 (en) 2003-09-30 2010-04-20 Avaya, Inc. Apparatus, method, and computer program for providing multimedia prompting in a communication system
JP4111926B2 (ja) 2004-03-09 2008-07-02 株式会社リコー 画像処理装置、プログラム、記憶媒体及び画像送信方法
TWI260511B (en) * 2004-03-26 2006-08-21 Arcadyan Technology Corp Method and apparatus for displaying multimedia information
WO2005101179A1 (en) * 2004-04-09 2005-10-27 Siemens Medical Solutions Health Services Corporation A system for managing operating sessions of an executable application
JP3753250B2 (ja) 2004-07-20 2006-03-08 ソニー株式会社 仮想現実空間提供装置および提供方法
US20060173966A1 (en) 2005-02-01 2006-08-03 Jennings Raymond B Iii Method and apparatus for inferring read status of instant messages
JP4626509B2 (ja) 2005-12-19 2011-02-09 セイコーエプソン株式会社 画像一覧表示におけるユーザの利便性向上
US8244051B2 (en) * 2006-03-15 2012-08-14 Microsoft Corporation Efficient encoding of alternative graphic sets
US7647404B2 (en) 2007-01-31 2010-01-12 Edge Technologies, Inc. Method of authentication processing during a single sign on transaction via a content transform proxy service

Also Published As

Publication number Publication date
US8244051B2 (en) 2012-08-14
CA2642529A1 (en) 2007-09-20
AU2007225421B2 (en) 2011-11-17
JP2009530706A (ja) 2009-08-27
JP5373135B2 (ja) 2013-12-18
US8351716B2 (en) 2013-01-08
RU2008136867A (ru) 2010-03-20
BRPI0708763A2 (pt) 2011-06-14
CN101401087B (zh) 2011-05-18
MX2008011658A (es) 2008-09-23
WO2007106211A1 (en) 2007-09-20
EP2005310A4 (en) 2012-01-04
JP2012198882A (ja) 2012-10-18
CN101401087A (zh) 2009-04-01
EP2005310A1 (en) 2008-12-24
TWI437486B (zh) 2014-05-11
AU2007225421A1 (en) 2007-09-20
US20100278442A1 (en) 2010-11-04
MY149001A (en) 2013-06-28
KR20080111450A (ko) 2008-12-23
KR101159396B1 (ko) 2012-06-28
TW200805141A (en) 2008-01-16
RU2439675C2 (ru) 2012-01-10
CA2642529C (en) 2015-05-26
IL193515A0 (en) 2009-05-04
US20070220168A1 (en) 2007-09-20
IL193515A (en) 2013-02-28

Similar Documents

Publication Publication Date Title
JP5080554B2 (ja) 代替的グラフィック・セットの効率的な符号化
US7076735B2 (en) System and method for network transmission of graphical data through a distributed application
JP2006190255A (ja) グラフィクス・ストリームの多重化および分離
KR20060106677A (ko) 사용자 인터페이스 제어를 위한 컴퓨터 판독가능 매체 및통신 방법
US20070052723A1 (en) High Level Graphics Stream
AU2004279201B2 (en) Protocol for remote visual composition
Sanna et al. A distributed architecture for searching, retrieving and visualizing complex 3D models on Personal Digital Assistants
AU2012200858B2 (en) Efficient encoding of alternative graphic sets
WO2022189161A1 (en) Improved streaming of graphic rendering elements

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110719

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111019

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120306

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20120327

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120327

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120502

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120802

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: 20120828

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: 20120830

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

Free format text: PAYMENT UNTIL: 20150907

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5080554

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

LAPS Cancellation because of no payment of annual fees