JP2008538056A - 記録されたコンピュータセッションに対するプレイバック命令を生成する方法およびシステム - Google Patents

記録されたコンピュータセッションに対するプレイバック命令を生成する方法およびシステム Download PDF

Info

Publication number
JP2008538056A
JP2008538056A JP2007551333A JP2007551333A JP2008538056A JP 2008538056 A JP2008538056 A JP 2008538056A JP 2007551333 A JP2007551333 A JP 2007551333A JP 2007551333 A JP2007551333 A JP 2007551333A JP 2008538056 A JP2008538056 A JP 2008538056A
Authority
JP
Japan
Prior art keywords
packet
protocol engine
recorded
time interval
rendering
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.)
Withdrawn
Application number
JP2007551333A
Other languages
English (en)
Inventor
リチャード ジェームス マザフェリ,
Original Assignee
サイトリックス システムズ, インコーポレイテッド
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
Priority claimed from US11/035,511 external-priority patent/US8230096B2/en
Priority claimed from US11/036,840 external-priority patent/US20060159432A1/en
Priority claimed from US11/036,489 external-priority patent/US8340130B2/en
Application filed by サイトリックス システムズ, インコーポレイテッド filed Critical サイトリックス システムズ, インコーポレイテッド
Publication of JP2008538056A publication Critical patent/JP2008538056A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/131Protocols for games, networked simulations or virtual reality
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/08Protocols specially adapted for terminal emulation, e.g. Telnet

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Television Signal Processing For Recording (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

第1のデバイス上で実行するプロトコルエンジンは、第2のデバイス上で実行されるアプリケーションプログラムによって生成されたディスプレイデータを表す、複数のパケットを含む記録されたストリームを受信する。プロトコルエンジンは、記録されたストリームにおけるパケットに対して、人間が感知することが可能な態様でパケットのコンテンツをレンダリングすることを決定する。プロトコルエンジンは、プレイバックデータ構造において決定を格納する。パケットは、パケットによって格納された入力のタイプに応答してマーク付けされる。パケットのコンテンツをレンダリングする行先は、プレイバックデータ構造において格納され、マーク付けに応答する。

Description

本発明は、プレイバック命令を生成する方法およびシステムに関連し、特に、記録されたコンピュータセッションをレンダリングする際に、自動タイムワーププレイバックを含む、プレイバックに対する命令を生成することに関連する。
遠隔提示プロトコルである、Citrix Systems、Inc. of Fort.Lauderdale、Florida製のICAプロトコル、the X.org Foundation製のXプロトコル、AT&T Corp.製のVirtual Network Computingプロトコル、またはMicrosoft Corporation of Redmond、Washington製のRDPプロトコルなどは、本質的に処理状態を把握できる。記録された提示プロトコルデータのストリームにおいて特定のポイントを調べるために、該ストリームのプレイバックは、ストリームの最初から行わなければならず、所望のポイントが現われるまで、連続して再生されなくてはならない。
セッションを記録する多くの従来の方法は、スクリーンスナップショットを定期的に撮ることによって動作し、これらの一部は、セッション活動から少しずつ収集された潜在的な関心の指示に応答して、スナップショットの頻度を増加させる。画像のシーケンスは、スライドショーとして見られ得るか、画像コレクション管理ツールを用いて見られ得る。他の方法は、フレームベースのデジタルビデオフォーマット、例えばMPGまたはAVIに記録し得、これらは、適切なメディアプレーヤー、例えばWindows(登録商標) Media PlayerまたはQuick Time playerなどで見られる。多くの従来の方法は、特定のウィンドウまたはアプリケーションを伴う相互作用を示すセクションを消去することによってレビュータイムを低減するという性能を欠く。
一部の従来の方法は、リアルタイムレートのマルチプルで記録されたセッションのプレイバックを可能にする。ユーザは、それらのマルチプルのうちのいずれか一つにおいて再生することを選択し得、プレイバックの間にスピード倍率器を変更し得る。しかし、ユーザは、これから何がレンダリングされるかが分らないので、彼らは、関心の低いセクションの間に速度を速める傾向にあり、より高い関心のセクションが始まるときには、詳細を逃してしまう。さらに、リアルタイムよりも何倍も速い速度であっても、無意味なユーザ活動の長いセクションをレビューしているときは、主観的に遅いものである。
多くの従来のシステムは、スナップショット生成を最小限にし、ストリームトラバーサルの速度を増加させることによって、プレイバックを最適化するように試みてきた。一部の場合において、これらのシステムの一部は、重要な活動が検出されるまで、より少ないスクリーンスナップショットを行い、次いでスナップショットの頻度を増加させる。これらのシステムの一部は、スナップショットの間の入力および状態の変化がキャプチャされないときに、状態をなくしてしまうという欠点を被り得る。
本発明は、遠隔提示プロトコルである、Citrix Systems、Inc. of Ft.Lauderdale、Florida製のICAプロトコル、the X.org Foundation製のXプロトコル、AT&T Corp.製のVirtual Network Computingプロトコル、またはMicrosoft Corporation of Redmond、Washington製のRDPプロトコルなどの記録およびプレイバックの方法を提供する。本発明は、重要なことは何も起こらないことを、アルゴリズムによって決定され得るレコーディングの1つ以上のセクションをプレイバックから除去することによって、セッションレコーディングを手動でレビューするのに費やされる時間を減少させる。本発明は、有向再生、すなわち記録されたセッションの代替的なレンダリングを提供する。本発明は、オフスクリーンレンダリングオペレーションを高めることによって、どのように有向再生を行うかを記述するプレイバックデータ構造を生成し、そのプレイバックデータ構造を用いることによってオンスクリーンレンダリングプロセスを制御する。ユーザ選択されたリアルタイムのマルチプルのみを提供するのではなく、本発明は、査閲者によって付加的に変調された、自動的に変更される文脈依存再生レートを提供する。本発明は、査閲者に情報を、彼らの理解力のレートに近似する自動的に選ばれたレートにおいて提供する。
一局面において、本発明は、記録されたコンピュータセッションのプレイバックに対するプレイバック命令を生成する方法に関連する。第1のデバイス上で実行するプロトコルエンジンは、第2のデバイス上で実行されるアプリケーションプログラムによって生成されたディスプレイデータを表す複数のパケットを含む、記録されたストリームを受け取る。プロトコルエンジンは、記録されたストリームにおけるパケットに対して、人間が感知することが可能な態様でパケットのコンテンツをレンダリングすることを決定する。プロトコルエンジンは、該決定をプレイバックデータ構造に格納する。
別の実施形態において、本発明は、記録されたコンピュータセッションのプレイバックの方法に関連する。第1のデバイス上で実行するバックグラウンドプロトコルエンジンは、第2のデバイス上で実行するアプリケーションプログラムによって生成されたディスプレイデータを表す複数のパケットを含む記録されたストリームを受信する。バックグラウンドプロトコルエンジンは、人間が感知することが可能な態様でパケットをレンダリングするように決定する。バックグラウンドプロトコルエンジンは、プレイバックデータ構造において該決定を格納する。フォアグラウンドプロトコルエンジンは、記録されたストリームから少なくとも一つのパケットを検索する。フォアグラウンドプロトコルエンジンは、プレイバックデータ構造にアクセスする。フォアグラウンドプロトコルエンジンは、プレイバックデータ構造に応答して、少なくとも一つのパケットをレンダリングする。
さらに別の局面において、本発明は、記録されたセッションのレンダリングのシステムに関連する。第1のデバイス上で実行するバックグラウンドプロトコルエンジンは、記録されたストリームの受信に応答して、プレイバックデータ構造を生成し、該記録されたストリームは、第2のデバイス上で実行されたアプリケーションプログラムによって生成されたディスプレイデータを表す。フォアグラウンドプロトコルエンジンは、記録されたストリームを受信し、バックグラウンドプロトコルエンジンによって生成されたプレイバックデータ構造に応答して、記録されたストリームをレンダリングする。
一局面において、本発明は、記録されたセッションをレンダリングするプレイバック命令を生成する方法に関連する。記録されたセッションにおいてパケットによって格納される入力のタイプは、識別され、該記録されたセッションは、アプリケーションプログラムによって生成されたディスプレイデータを表す複数のパケットを含む。パケットは、入力のタイプに応答してマーカー付けされる。パケットのコンテンツをレンダリングする行先は、マーカー付けに応答して、プレイバックデータ構造に格納される。
一局面において、本発明は、記録されたセッションをレンダリングする際に、不活動の期間を消去する方法に関連する。記録されたセッションにおける第1のパケットは、識別され、該記録されたセッションは、複数のパケットを含み、ディスプレイデータを表す。記録されたセッションにおける第2のパケットは、識別され、該第2のパケットは、直ちに第1のパケットに先行する。第1のパケットと第2のパケットとの間の第1の時間間隔は、決定される。第1の時間間隔は、閾値を超えるという決定がなされる。第1のパケットと第2のパケットとの間の第2の時間間隔を有する記録されたセッションのコンテンツが識別され、該第2の時間間隔は、第1の時間間隔より短い時間間隔を含む。一実施形態において、第2のパケットは、第1のパケットに直ちに続く。
別の局面において、本発明は、記録されたセッションをレンダリングする際に、不活動の期間を消去する方法に関連する。第1の時間間隔は、記録されたセッションにおけるマーク付けされたパケットと、最も近い以前のマーク付けされたパケットとの間に決定され、該記録されたセッションは、複数のパケットを含み、ディスプレイデータを表す。第1の時間間隔は、閾値を超えるということが決定される。記録されたセッションのコンテンツは、マーク付けされたパケットと、最も近い以前のマーク付けされたパケットとの間の第2の時間間隔を用いてレンダリングされ、該第2の時間間隔は、第1の時間間隔より短い時間間隔を含む。
さらに別の局面において、本発明は、記録されたセッションをレンダリングする際に、グラフィックの更新を消去する方法に関連する。記録されたセッションにおける、アプリケーションプログラムによって生成されたディスプレイデータを表すパケットが、識別され、該パケットは、第1のグラフィックの更新を含む。第1のグラフィックの更新によって影響を及ぼされたスクリーン領域が、決定される。指示は、第1のグラフィックの更新の後のスクリーン領域の状態およびスクリーン領域のロケーションが格納される。時間間隔内にスクリーン領域に影響を及ぼす第2のグラフィックの更新が、識別される。スクリーン領域に影響を及ぼす第2のグラフィックの更新を含む、第2のパケットをレンダリングする行先は、プレイバックデータ構造に示され、第2のグラフィックの更新の後のスクリーン領域の状態が、第1のグラフィックの更新の後のスクリーン領域の状態と変わるかどうかに応答する。スクリーン領域に影響を及ぼす第2のグラフィックの更新を含む第2のパケットに関連した、レンダリングする時間間隔は、プレイバックデータ構造において示され、第2のグラフィックの更新の後のスクリーン領域の状態が、第1のグラフィックの更新の後のスクリーン領域の状態と変わるかどうかに応答する。
さらに別の局面において、本発明は、記録されたセッションをレンダリングする際に、相互作用シーケンスを消去する方法に関連する。ポリシーに応答して、少なくとも一つのパケットの相互作用シーケンスの開始が識別される。相互作用シーケンスは、バッファにレンダリングされるべきであるということが、プレイバックデータ構造に示される。相互作用シーケンスの終了が、識別される。第1の時間間隔は、相互作用シーケンスの識別された開始に先立つパケットと相互作用シーケンスの識別された終了に続くパケットとの間に識別される。第1の時間間隔より短いレンダリングする第2の時間間隔が、プレイバックデータ構造において示される。
一局面において、本発明は、記録されたコンピュータセッションをレンダリングする際の、自動的なタイムワーププレイバックの方法に関連する。バックグラウンドプロトコルエンジンは、記録されたセッションを受信し、該記録されたセッションは、複数のパケットを含み、ディスプレイデータを表す。バックグラウンドプロトコルエンジンは、記録されたセッションにおける複数のパケットの少なくとも一部によって表される複雑さの程度を決定する。バックグラウンドプロトコルエンジンは、記録されたセッションにおける複数のパケットのうちの少なくとも一部の間の時間の間隔を識別する。バックグラウンドプロトコルエンジンは、記録されたセッションにおける複数のパケットの少なくとも一部によって表される複雑さの程度に応答する、識別された時間の間隔を修正する。バックグラウンドプロトコルエンジンは、プレイバックデータ構造において、修正された時間の間隔を格納する。フォアグラウンドプロトコルエンジンは、プレイバックデータ構造に応答して、記録されたストリームをレンダリングする。
別の局面において、本発明は、記録されたコンピュータセッションの際の、自動的なタイムワーププレイバックの別の方法に関連する。複数のパケットを含み、ディスプレイデータを表す記録されたセッションが、受信される。フォーカスを有するウィンドウを表しているコンテンツを有する第1のパケットが、識別され、該ウィンドウは、アプリケーションを示す。第1のパケットのコンテンツのレンダリングに先立ち、コンテンツがレンダリングする第2のパケットと、第1のパケットのコンテンツのレンダリングの後に、コンテンツがレンダリングする第3のパケットとの間で、時間間隔は識別される。時間間隔は、示されたアプリケーションに応答して修正される。記録されたストリーム内の少なくとも一つのパケットは、修正に応答してレンダリングされる。
別の局面において、本発明は、記録されたコンピュータセッションをレンダリングする際の、自動的なタイムワーププレイバックのシステムに関連する。プロトコルエンジンは、記録されたストリームに応答してプレイバックデータ構造を生成し、該記録されたストリームは、複数のパケットを含み、該プロトコルエンジンは、生成されたプレイバックデータ構造に応答して、記録されたストリームにおける少なくとも1つのパケットをレンダリングする。
本発明のこれらおよび他の局面は、本明細書中の詳細な記述および添付される図面によって直ちに明確になる。これらは、本発明を説明するものであり、限定する意図はない。
ここで図1Aを参照して、簡潔に概略すると、本発明が用いられ得るクライアント−サーバシステムの一実施形態が図示される。第1のコンピューティングデバイス100’(一般に100)は、通信ネットワーク180を介して第2のコンピューティングデバイス140’(一般に140)と通信する。第1のデバイス100が介して第2のデバイス140と通信するネットワーク180のトポロジーは、バス、スターまたはリングのトポロジーであり得る。ネットワーク180は、ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、または、例えばインターネットのようなワイドエリアネットワーク(WAN)であり得る。2つの第1のコンピューティングデバイス100、100’および2つの第2のコンピューティングデバイス140、140’のみが、図1Aに図示されるが、他の実施形態は、ネットワーク180に接続される複数のそのようなデバイスを含む。
第1のデバイス100および第2のデバイス140は、様々な接続を介してネットワーク180に接続し得、接続は、標準的な電話線と、LANまたはWANリンク(例えば、T1、T3、56kb、X.25)と、ブロードバンド接続(ISDN、フレームリレー、ATM)と、ワイアレス接続とを含む。接続は、様々な通信プロトコルを用いて確立され得る(例えば、TCP/IP、IPX、SPX、NetBIOS、NetBEUI、SMB、Ethernet(登録商標)、ARCNET、Fiber Distributed Data Interface(FDDI)、RS232、IEEE802.11、IEEE802.11a、IEEE802.11b、IEEE802.11gおよび直接的で非同期式の接続)。
第1のデバイス100は、該デバイスに代わって、1つ以上の第2のコンピューティングデバイス140によって実行されるアプリケーションからの出力を受信および表示する能力があり、本明細書に開示されるプロトコルに従って動作する能力がある任意のデバイスであり得る。第1のデバイス100は、パーソナルコンピュータ、ウィンドウズ(登録商標)ベースのターミナル、ネットワークコンピュータ、情報アプライアンス、X−デバイス、ワークステーション、ミニコンピュータ、携帯情報端末、または携帯電話であり得る。
同様に、第2のコンピューティングデバイス140は、任意のコンピューティングデバイスであり得、実行するアプリケーションに対するユーザ入力を第1のコンピューティングデバイス100から受信する能力と、第1デバイス100の代わりにアプリケーションプログラムを実行する能力と、本明細書に開示されるプロトコルを用いて第1のコンピューティングデバイス100と相互作用する能力がある。第2のコンピューティングデバイス140は、シングルサーバシステムとして論理的に作用するサーバデバイスのグループとして提供され得、本明細書中においてサーバファームとして呼ばれる。一実施形態において、第2のコンピューティングデバイス140は、マルチユーザサーバシステムであり、該システムは、もう1つの第1のデバイス100から複数の同時にアクティブな接続をサポートする。
図1Bおよび図1Cは、第1のコンピューティングデバイス100と第2のコンピューティングデバイス140として有用な、一般的なコンピュータ100のブロック図を図示する。図1Bおよび図1Cに示されるように、中央処理装置102とメインメモリユニット104とを含む。各コンピュータ100はまた、他のオプションの要素を含み得、例えば1つ以上の入力/出力デバイス130aおよび130b(通常は、参照番号130を用いて参照される)と、中央処理装置102と通信するキャッシュメモリ145とである。
中央処理装置102は、メインメモリユニット104から取り込まれた(fetched)命令に応答し処理する任意の論理回路網である。多くの実施形態において、中央処理装置は、マイクロプロセッサユニットによって提供され、該マイクロプロセッサユニットは、例えば、Intel Corporation of Mountain View, Californiaによって全て製造された、8088プロセッサ、80286プロセッサ、80386プロセッサ、80486プロセッサ、Pentium(登録商標)プロセッサ、Pentium(登録商標)プロプロセッサ、Pentium(登録商標)IIプロセッサ、Celeronプロセッサ、またはXeonプロセッサ、Motorola Corporation of Schaumburg, Illinoisによって全て製造された、68000プロセッサ、68010プロセッサ、68020プロセッサ、68030プロセッサ、68040プロセッサ、Power PC601プロセッサ、Power PC604プロセッサ、Power PC604eプロセッサ、MPC603eプロセッサ、MPC603eiプロセッサ、MPC603evプロセッサ、MPC603rプロセッサ、MPC603pプロセッサ、MPC740プロセッサ、MPC745プロセッサ、MPC750プロセッサ、MPC755プロセッサ、MPC7400プロセッサ、MPC7410プロセッサ、MPC7441プロセッサ、MPC7445プロセッサ、MPC7447プロセッサ、MPC7450プロセッサ、MPC7451プロセッサ、MPC7455プロセッサ、MPC7457プロセッサ、Transmeta Corporation of Santa Clara, Californiaによって製造された、Crusoe TM5800プロセッサ、Crusoe TM5600プロセッサ、Crusoe TM5500プロセッサ、Crusoe TM5400プロセッサ、Efficeon TM8600プロセッサ、Efficeon TM8300プロセッサ、またはEfficeon TM8620プロセッサ、International Business Machines of White Plains, New Yorkによって全て製造された、RS/6000プロセッサ、RS64プロセッサ、RS64IIプロセッサ、P2SCプロセッサ、POWER3プロセッサ、RS64IIIプロセッサ、POWER3−IIプロセッサ、RS64IVプロセッサ、POWER4プロセッサ、POWER4+プロセッサ、POWER5プロセッサ、またはPOWER6プロセッサ、またはAdvanced Micro Devices of Sunnyvale, Californiaによって製造された、AMD Opteronプロセッサ、AMD Athlon 64 FXプロセッサ、AMD Athlonプロセッサ、またはAMD Duronプロセッサである。
メインメモリユニット104は、データを格納する能力と、任意の格納ロケーションがマイクロプロセッサ102によって直接アクセスされることを可能にする能力とを有する1つ以上のメモリチップであり得、例えば、スタティックランダムアクセスメモリ(SRAM)、バースト(Burst)SRAMまたはSynchBurst SRAM(BSRAM)、ダイナミックランダムアクセスメモリ(DRAM)、ファストページモードDRAM(FPM DRAM)、エンハンストDRAM(EDRAM)、エクステンデッドデータ出力RAM(EDO RAM)、エクステンデッドデータ出力DRAM(EDO DRAM)、バーストエクステンデッドデータ出力DRAM(BEDO DRAM)、エンハンストDRAM(EDRAM)、シンクロノスDRAM(SDRAM)、JEDEC
SRAM、PC100 SDRAM、ダブルデータレートSDRAM(DDR SDRAM)、エンハンストSDRAM(ESDRAM)、SyncLinc DRAM(SLDRAM)、ディレクトランバスDRAM(DRDRAM)、またはFerroelectric RAM(FRAM)などである。図1Bに示される実施形態において、プロセッサ102は、システムバス120を介してメインメモリ104と通信する(以下に詳細に記述される)。図1Cは、プロセッサが、メモリポートを介してメインメモリ104と直接的に通信するコンピュータシステム100の実施形態を図示する。例えば、図1Cにおいて、メインメモリ104はDRDRAMであり得る。
図1Bおよび図1Cは、メインプロセッサ102が、時に「バックサイド」バスと呼ばれる二次的なバスを介してキャッシュメモリ145と直接的に通信する実施形態を図示する。他の実施形態において、メインプロセッサ102は、システムバス120を用いてキャッシュメモリ145と通信する。キャッシュメモリ145は、通常はメインメモリ104よりも速い応答時間を有し、通常はSRAM、BSRAMまたはEDRAMによって提供される。
図1Bに示される実施形態において、プロセッサ102は、ローカルシステムバス120を介して様々なI/Oデバイス130と通信する。様々なバスは、中央処理装置102をI/Oデバイス130に接続するために用いられ得、該バスは、VESA VLバス、ISAバス、EISAバス、MicroChannel Architecture(MCA)バス、PCIバス、PCI−Xバス、PCI−Expressバス、またはNuBusを含む。I/Oデバイスがビデオディスプレイである実施形態に対して、プロセッサ102は、ディスプレイと通信するためにアドバンストグラフィックポート(AGP)を用い得る。図1Cは、メインプロセッサ102が、ハイパートランスポート、ラピッドI/O、またはInfiniBandを用いてI/Oデバイス130bと直接的に通信する、コンピュータシステム100の実施形態を図示する。図1Cはまた、ローカルバスと直接的な通信とが交じり合った実施形態を図示し、プロセッサ102は、ローカルインターコネクトバスを用いてI/Oデバイス130aと通信し、その一方でI/Oデバイス130bと直接的に通信する。
幅広い種類のI/Oデバイス130が、コンピュータシステム100において存在し得る。入力デバイスは、キーボードと、マウスと、トラックパッドと、トラックボールと、マイクと、製図(drawing)タブレットとを含む。出力デバイスは、ビデオディスプレイと、スピーカと、インクジェットプリンタと、レーザープリンタと、昇華型プリンタとを含む。I/Oデバイスはまた、コンピュータシステム100に対して大容量のストレージを提供し得、例えば、ハードディスクドライブと、3.5インチ、5.25インチ、またはZIPディスクなどのフロッピー(登録商標)ディスクを受けるためのフロッピー(登録商標)ディスクドライブと、CD−ROMドライブと、CD−R/RWドライブと、DVD−ROMドライブと、DVD−Rドライブと、DVD−RWドライブと、様々なフォーマットのテープドライブと、Twintech Industry, Inc.
of Los Alamitos, Californiaによって製造されたUSBフラッシュドライブなどの種類のデバイスUSB格納デバイスとである。
さらなる実施形態において、I/Oデバイス130は、システムバス120と外部通信バスとの間のブリッジであり得、該外部通信バスは、例えばUSBバス、Appleデスクトップバス、RS−232シリアル接続、SCSIバス、FireWireバス、FireWire800バス、Ethernet(登録商標)バス、Appleトークバス、ギガビットEthernet(登録商標)バス、非同期式のトランスファーモードバス、HIPPIバス、スーパーHIPPIバス、シリアルプラスバス、SCI/LAMPバス、FibreChannelバス、またはシリアルアタッチト小型コンピュータシステムインターフェースバスである。
図1Bおよび図1Cに図示される種類の汎用デスクトップコンピュータは、通常オペレーティングシステムの制御の下で動作し、該オペレーティングシステムは、タスクのスケジューリングとシステムリソースへのアクセスとを制御する。通常のオペレーティングシステムが含むものは、とりわけ、Microsoft Corp. of Redmond, Washingtonによって製造されたMICROSOFT WINDOWS(登録商標)と、Apple Computer of Cupertino, Californiaによって製造されたMacOSと、International Business Machines of Armonk New Yorkによって製造されたOS/2と、Caldera Corp. of Salt Lake City, Utahによって配給された自由に利用可能なオペレーティングシステムであるLinuxとである。
他の実施形態において、第1のデバイス100または第2のデバイス140は、デバイスと調和する異なるプロセッサと、オペレーティングシステムと、入力デバイスとを有し得る。例えば、一実施形態において、第1のデバイス100は、Palm, Inc.によって製造された携帯情報端末のZire 71である。この実施形態において、Zire 71は、Texas Instruments, of Dallas, Texasによって製造されたOMAP 310プロセッサを用い、PalmOSオペレーティングシステムの制御の下で動作し、液晶表示スクリーンと、スタイラス入力デバイスと、5方向ナビゲーターデバイスとを含む。
ここで図2を参照して、ブロック図が、ネットワーク200の実施形態を図示し、該ネットワーク200の中で本発明が実行され得、第1のデバイス202と、遠隔提示プロトコルサーバエンジン204と、レコーダ206と、プロトコルデータストリーム208と、レコーデッドプロトコルデータストリーム210と、第2のデバイス212と、遠隔提示プロトコルクライアントエンジン214と、ディスプレイ216と、格納要素218と、レコーデッドプロトコルデータストリーム220とを含む。簡潔に概略すると、レコーダ206は、プロトコルデータストリーム208をインターセプトする。レコーダ206は、プロトコルデータストリームから少なくとも1つのパケットをコピーし、該少なくとも1つのコピーされたパケットを用いてプロトコルデータストリーム210の記録を作成する。
ここで図2を参照して、さらに詳細には、第1のデバイス202は、プロトコルデータストリーム208を第2のデバイス212に送信する。一実施形態において、第1のデバイス202は、遠隔提示プロトコルサーバエンジン204を用いて第2のデバイス212にプロトコルデータストリーム208を送信する。一部の実施形態において、第2のデバイス212は、遠隔提示プロトコルクライアントエンジン214を用いて第1のデバイス202からプロトコルデータストリーム208を受信する。一部の実施形態において、遠隔提示プロトコルは、小型軽量クライアントプロトコル、例えばCitrix Systems, Inc., of Ft. Lauderdale, Floridaによって製造されたICAプロトコル、X.org FoundationによるXプロトコル、AT&T Corp.のVirtual Network Computing protocol、またはMicrosoft Corporation of Redmond, Washingtonによって製造されたRDPプロトコルを含む。
プロトコルデータストリーム208は、複数のパケットを含み、その少なくとも一部は、ディスプレイデータを表す。一部の実施形態において、プロトコルデータストリーム208は、記録されたセッションについての情報を含む。一実施形態において、プロトコルデータストリーム208は、メタデータを含む。別の実施形態において、プロトコルデータストリーム208は、記録されたセッションにおけるユーザについての情報を含む。さらに別の実施形態において、プロトコルデータストリーム208は、記録されたデータを生成するサーバについての情報を含む。さらなる別の実施形態において、プロトコルデータストリーム208は、タイムスタンプを含む。
一実施形態において、プロトコルデータストリーム208は、複数のチャネルを含む。この実施形態において、チャネルは、データが送信されるピアトゥピアの接続を含む。別の実施形態において、プロトコルデータストリーム208は、複数の仮想のチャネルを含む。この実施形態において、仮想のチャネルは、別のチャネルにラップ(wrapped)されたチャネルである。第2のデバイス212は、プロトコルデータストリーム208を受信し、一部の実施形態において遠隔提示プロトコルクライアントエンジン214を用いてディスプレイデータを再生成する。プロトコルデータストリーム208を処理することは、第2のデバイス212がディスプレイ216を介してユーザにディスプレイを提示することを可能にする。第2のデバイス212は、ディスプレイデータを処理するために遠隔提示プロトコルクライアントエンジン214を用い得る。ディスプレイは、聴覚的、視覚的、触覚的、または嗅覚的な提示、またはこれらの組み合わせを含み、それらに限定はされない。
レコーダ206は、第1のデバイス202から第2のデバイス212に送信されたプロトコルデータストリーム208をインターセプトする。一実施形態において、レコーダ206は、1つ以上のチャネルをインターセプトすることによってプロトコルデータストリーム208をインターセプトする。別の実施形態において、レコーダ206は、1つ以上の仮想のチャネルをインターセプトすることによってプロトコルデータストリーム208をインターセプトする。一部の実施形態において、レコーダ206は、第1のデバイス202が第2のデバイス212にプロトコルデータストリーム208を送信し得る1つ以上の仮想のチャネルをモニターする。レコーダ206は、プロトコルデータストリームから少なくとも1つのパケットをコピーする。一実施形態において、レコーダ206は、ポリシーに応答するプロトコルデータストリームの特定のパケットをコピーすることを決定する。一部の実施形態において、ポリシーは、パケット内に含まれるデータの種類に基づいて、レコーダ206が記録するパケットを定義する。別の実施形態において、レコーダ206は、パケットがデータを含むかどうかという決定に基づいて、プロトコルデータストリームのパケットをコピーすることを決定する。これらの実施形態の一部において、レコーダ206は、空のパケットは記録せず、その一方で、他のこれらの実施形態において、レコーダ206は、空のパケットを記録する。一部の実施形態において、レコーダ206は、プロトコルデータストリーム208の中の全てのパケットを記録する。
レコーダ206は、少なくとも1つのコピーされたパケットを用いて、記録されたプロトコルデータストリーム210を作成する。一実施形態において、レコーダ206は、情報を少なくとも1つのコピーされたパケットと関連付ける。一実施形態において、レコーダ206は、タイムスタンプを少なくとも1つのコピーされたパケットと関連付ける。別の実施形態において、レコーダ206は、データ長インジケータをパケットと関連付ける。レコーダ206が情報を少なくとも1つのコピーされたパケット、例えばタイムスタンプまたはデータ長インジケータと関連付ける実施形態に対して、レコーダ206は、この情報を、パケットに加えて記録されたプロトコルデータストリーム210に埋め込み得、またはレコーダ206は、この情報を直接にパケットに埋め込み得、またはレコーダ206は、パケットおよび記録されたプロトコルデータストリーム210から分離したロケーションにアソシエーションを格納し得る。
図2に図示されるように、レコーダ206は、第1のデバイス202上に存在し得る。図3は、レコーダ206が第2のデバイス上に存在する実施形態を図示し、図3中においてレコーダ206は、第2のデバイス212上に存在する。図4は、レコーダ206が第3のデバイス上に存在する実施形態を図示する。レコーダ206が存在し得るデバイスは、クライアントコンピューティングシステムと、サーバコンピューティングシステムと、プロキシサーバコンピューティングシステムと、ネットワークパケットスニフィングコンピューティングシステムと、プロトコルアナライザコンピューティングシステムと、パススルーサーバコンピューティングシステムとを含む。
レコーダ206は、少なくとも1つのコピーされたパケットと、一部の実施形態においては少なくとも1つのコピーされたパケットに関連付けられた情報とを用いて、記録されたプロトコルデータストリーム210を作成する。一部の実施形態において、レコーダ206は、プロトコルデータストリーム210の記録を、作成した後に格納する。これらの実施形態の一部において、レコーダ206は、格納要素218にプロトコルデータストリーム210の記録を格納する。格納要素218は、固定ストレージを含み、例えばハードドライブ、フロッピー(登録商標)ドライブ、CD−RW、DVD−RWまたは、任意の他のデバイスであり、それらは電力が消えたときにデータの状態を維持する。他の実施形態において、格納要素は、1つ以上の揮発性メモリ要素を含み得、例えば、スタティックランダムアクセスメモリ(SRAM)、バースト(Burst)SRAMまたはSynchBurst SRAM(BSRAM)、ダイナミックランダムアクセスメモリ(DRAM)、ファストページモードDRAM(FPM DRAM)、エンハンストDRAM(EDRAM)、エクステンデッドデータ出力RAM(EDO RAM)、エクステンデッドデータ出力DRAM(EDO DRAM)、バーストエクステンデッドデータ出力DRAM(BEDO DRAM)、エンハンストDRAM(EDRAM)、シンクロノスDRAM(SDRAM)、JEDEC SRAM、PC100 SDRAM、ダブルデータレートSDRAM(DDR SDRAM)、エンハンストSDRAM(ESDRAM)、SyncLinc DRAM(SLDRAM)、ディレクトランバスDRAM(DRDRAM)、またはFerroelectric RAM(FRAM)などである。
一実施形態において、格納要素は、ネットワーク格納デバイスを含む。格納要素218は、第1のデバイス202上、または第2のデバイス212上に存在し得る。他の実施形態において、格納要素218は、第3のデバイス上に存在し得、例えば、プロキシサーバコンピューティングデバイスまたはパススルーサーバコンピューティングデバイスである。さらに他の実施形態において、格納要素218は、ネットワーク上に存在し、レコーダ206は、ネットワークを介して格納要素218にアクセスし、プロトコルデータストリーム220の記録を格納する。他の実施形態において、レコーダ206は、レコーダ206が存在する同一のデバイス上にプロトコルデータストリームの記録を格納する。
ここで図5を参照して、ブロック図は、プロトコルエンジン502を図示し、プロトコルエンジン502は、プロトコルデータストリーム506の記録から少なくとも1つのコピーされたパケットを読み取り、少なくとも1つのコピーされたパケットに関連付けられた情報を用いてプロトコルデータストリーム506によって表されるディスプレイデータを再生成する。プロトコルエンジン502は、プロトコルデータストリーム506を受信する。一部の実施形態において、プロトコルエンジン502は、格納要素504からプロトコルデータストリーム506を検索する。他の実施形態において、プロトコルエンジン502は、レコーダ206からプロトコルデータストリーム506を検索する。さらに他の実施形態において、プロトコルエンジン502は、別のコンピューティングデバイスからプロトコルデータストリーム506を検索する。
一部の実施形態において、プロトコルエンジン502は、パケットリーダ508およびディスプレイデータ再生成要素510を含む。これらの実施形態において、パケットリーダ508は、プロトコルデータストリーム506の記録から少なくとも1つのコピーされたパケットを読み取る。一部の実施形態において、パケットリーダ508は、プロトコルデータストリーム506の記録から続けて少なくとも1つのコピーされたパケットを読み取る。
プロトコルエンジン502は、少なくとも1つのコピーされたパケットおよび少なくとも1つのコピーされたパケットに関連付けられたあらゆる情報を処理する。プロトコルエンジン502は、一部の実施形態において、処理のためにディスプレイデータ再生成要素510を用いる。パケットは、ユーザに提示される認知が可能なディスプレイの再生成を可能にするデータを含む。一部の実施形態において図2に示されるように、第2のデバイス212は、このデータを処理する。一実施形態において、処理することは、少なくとも1つのコピーされたパケットのコンテンツをバッファにレンダリングする(render)ことを含む。別の実施形態において、処理することは、少なくとも1つのコピーされたパケットのコンテンツを認知が可能な仕方でレンダリングすることを含む。再生成されたディスプレイは、聴覚的、視覚的、触覚的、または嗅覚的な提示、またはこれらの組み合わせを含み、それらに限定はされない。
一部の実施形態において、プロトコルエンジン502は、第1のデバイス202上に存在する。他の実施形態において、プロトコルエンジン502は、第2のデバイス212上に存在する。さらに他の実施形態において、プロトコルエンジンは、第3のデバイス上に存在し、例えば、プロキシサーバコンピューティングデバイスまたはパススルーサーバコンピューティングデバイスに存在する。
ここで図7に進んで参照すると、ブロック図は、元来は図2におけるレコーダ206として記述されたレコーダ702のさらなる詳細を図示する。簡潔に概略すると、レコーダ702は、プロトコルデータストリーム710のインターセプションとプロトコルデータストリーム710の記録712の作成とを介してサーバから生成されるデータを記録する。
レコーダ702は、一実施形態においてプロトコルデータストリームインターセプタ704と、パケットコピア706と、記録ジェネレータ708とを含む。一実施形態において、レコーダ702は、プロトコルデータストリームインターセプタ704を用いてプロトコルデータストリーム710をモニターする。別の実施形態において、レコーダ702は、プロトコルデータストリームインターセプタ702を用いて、第1のデバイス202から第2のデバイス212に送信される複数のパケットを含むプロトコルデータストリーム710をインターセプトする。パケットコピア706は、プロトコルデータストリームの少なくとも1つのパケットをコピーする。パケットコピア706は、プロトコルデータストリームの中のパケットをコピーするか否かを決定する。一部の実施形態において、パケットコピア706は、ポリシーに応答してこの決定を下す。これらの実施形態において、パケットコピア706は、パケットがなんらかのデータを含むか否か、またはパケットの中に含まれるデータの種類に基づいて、パケットをコピーすることを決定し得る。
一実施形態において、レコーダ702は、記録ジェネレータ708を利用して、少なくとも1つのコピーされたパケットを用いてプロトコルデータストリームの記録を作成する。記録ジェネレータは、少なくとも1つのコピーされたパケットをプロトコルデータストリーム710の記録712の中にアセンブルする。一部の実施形態において、記録ジェネレータ708は、プロトコルデータストリームの記録の中に情報を埋め込む。この情報は、パケット内に含まれるデータによって表されるディスプレイデータをいつ再生成するかを示す時間基準、パケット内に含まれるデータを記述したデータ長インジケータ、またはプロトコルデータストリーム710内に含まれるデータによって表されるディスプレイデータを再生成するために用いられる他の種類の情報を含み得、それらに限定はされない。
図8は、プロトコルデータストリーム710の記録712の一実施形態を図示する。示される実施形態において、記録ジェネレータ708は、遠隔提示プロトコルデータチャンクの中に少なくとも1つのコピーされたパケットを分類した。記録ジェネレータ708は、時間基準およびデータ長を各遠隔提示プロトコルデータチャンクと関連付け、プロトコルデータストリーム710の記録712の中に情報およびパケットをアセンブルした。
図7に戻って参照すると、一実施形態において、レコーダ702は、格納要素714にプロトコルデータストリーム710の完了した記録712を格納する。一部の実施形態において、格納要素は、ネットワーク上に位置し、レコーダ702は、ネットワークを介して格納要素714に記録712を送信する。他の実施形態において、格納要素は、プロキシサーバコンピューティングデバイス上に位置する。さらに他の実施形態において、格納要素は、パススルーサーバコンピューティングデバイス上に位置する。一部の実施形態において、格納要素714は、レコーダ702と同一のデバイス上に存在する。
一実施形態において、図7によって陰影で図示されるプロトコルデータストリームの記録およびプレイバックのためのシステムは、レコーダ702および図5で議論されるプレイバックデバイス514を含む。プレイバックデバイス514は、プロトコルエンジン502を含み、該プロトコルエンジン502は、パケットリーダ508を用いてパケットデータストリームの記録712から少なくとも1つのコピーされたパケットを受信し、読み取り、埋め込まれた情報を用いてプロトコルデータストリームの記録712によって表されるディスプレイデータを再生成する。一部の実施形態において、プロトコルエンジン502は、ディスプレイデータの再生成中に続けてパケットを読み取る。
図7によって図示される別の実施形態において、サーバから生成されたデータを記録および再生するためのシステムは、レコーダ702と、格納要素714と、プロトコルエンジン502とを含む。レコーダ702は、プロトコルデータストリームの記録を生成し、記録712を格納要素714に格納する。レコーダはプロトコルデータストリームから少なくとも1つのパケットをコピーし、時間基準またはパケット内のデータの長さを記述するデータ長インジケータを含むが、それらには限定されない少なくとも1つのパケットと情報とを関連付ける。プロトコルエンジン502は、格納要素714と通信し、プロトコルデータストリームの記録から少なくとも1つのパケットを読み取り、少なくとも1つのパケットと関連付けられた情報を用いてプロトコルデータストリーム710の記録によって表されるディスプレイデータを再生成する。
一実施形態において、レコーダ702、プロトコルエンジン502、または格納要素714は、第1のデバイス202上に共に、または別個に位置し得る。他の実施形態において、それらは、第2のデバイス212上に共に、または別個に位置し得る。さらに別の実施形態において、それらは第3のデバイス、例えばプロキシサーバコンピューティングデバイス、ネットワークパケットスニッファ、またはパススルーサーバコンピューティングデバイスの上に共に、または別個に存在し得る。さらなる他の実施形態において、格納要素714は、レコーダ702およびプロトコルエンジン502とは分離して、格納領域ネットワーク上に存在し得る。
ここで図6を参照して、流れ図は、サーバから生成されるデータを記録および再生するための方法を要約する。簡潔に概略すると、レコーダ206は、第1のデバイス202から第2のデバイス212に送信される複数のパケットを含むプロトコルデータストリーム208をインターセプトする(ステップ602)。レコーダ206は、プロトコルデータストリーム208から少なくとも1つのパケットをコピー(ステップ604)し、プロトコルデータストリーム210の記録を作成する(ステップ606)。該記録は、プロトコルエンジン502が後程に、記録されたプロトコルデータストリーム210によって表されるディスプレイデータを再生成するときに用いる(ステップ608、ステップ610)。
レコーダ206は、複数のパケットを含むプロトコルデータストリーム208をインターセプトし、第1のデバイス202から第2のデバイス212に送信されるディスプレイデータを表す。レコーダ206は、プロトコルデータストリーム208の少なくとも1つのパケットをコピーする。レコーダ206は、少なくとも1つのコピーされたパケットを用いてプロトコルデータストリームの記録を作成する。レコーダ206は、一部の実施形態において情報を少なくとも1つのコピーされたパケットと関連付ける。情報は、タイムスタンプまたはデータ長インジケータを含み得る。これらの実施形態の一部において、レコーダ206は、パケットと関連付けられた情報をプロトコルデータストリーム210の記録に埋め込む。他のこれらの実施形態において、レコーダ206は、パケットと関連付けられた情報を別のプロトコルデータストリームに格納する。さらに他のこれらの実施形態において、レコーダは、パケットと関連付けられた情報をデータストアに格納する。プロトコルエンジン502は、プロトコルデータストリーム210の記録から少なくとも1つのコピーされたパケットを読み取り、少なくとも1つのコピーされたパケットと関連付けられた情報を用いてプロトコルデータストリーム210によって表されるディスプレイデータを再生成する。
ここで図11に進んで参照すると、ブロック図は、ステートフル遠隔提示プロトコルのプレイバックの間にリアルタイムをシーキングするためのシステムを図示する。簡潔に概略すると、この図面は、プレイバックデバイス514(上記の図5を参照)の実施形態を図示し、該プレイバックデバイス514は、2つのプロトコルエンジン502、バックグラウンドプロトコルエンジン1102およびフォアグラウンドプロトコルエンジン1106、ならびにステートスナップショット1104およびディスプレイ1108を含む。バックグラウンドプロトコルエンジン1102は、プロトコルデータストリーム1110の記録を受信し、プロトコルデータストリーム1110の記録を読み取る。該記録は、複数のパケットを含み、ディスプレイデータを表す。一実施形態において、プレイバックデバイス514は、少なくとも1つのパケットのコンテンツをプロトコルデータストリーム1110にレンダリングすることと、ディスプレイ1108を用いて結果を表示することとによってディスプレイデータを再生成する。結果は、認知が可能な聴覚的、視覚的、触覚的、または嗅覚的な提示を含み、それらに限定はされない。
ここで図11を参照して、より詳細な点に関して、バックグラウンドプロトコルエンジン1102は、レンダリングされたディスプレイデータの受信者が、プロトコルデータストリーム1110の提示の間にリアルタイムにおけるコンテンツをシーキングすることを可能にする。バックグラウンドプロトコルエンジン1102は、少なくとも1つのステートスナップショット1104を生成し、その一方でプロトコルデータストリーム1110から少なくとも1つのパケットを読み取る。一実施形態において、バックグラウンドプロトコルエンジン1102は、バッファに少なくとも1つのパケットのコンテンツをレンダリングする。この実施形態において、バッファは、オフスクリーンバッファを含み得る。この実施形態において、バックグラウンドプロトコルエンジン1102は、少なくとも1つのパケットのコンテンツをレンダリングしながら、少なくとも1つのステートスナップショット1104を生成する。バックグラウンドプロトコルエンジン1102は、フォアグラウンドプロトコルエンジン1106に対してステートスナップショット1104を利用可能にする。
ステートスナップショット1104は、ディスプレイデータの再生成を可能にするが、なぜならば、レコーダ206がプロトコルデータストリーム208からプロトコルデータストリーム1110の記録に少なくとも1つのパケットをコピーした時点で、プロトコルデータストリーム1110をレンダリングするプロトコルエンジンの状態を格納するからである。一実施形態において、ステートスナップショット1104は、ある時点のスクリーンの状態を記述するデータ構造を含む。別の実施形態において、ステートスナップショット1104は、プロトコルデータストリーム1110における基準点でプロトコルエンジンの状態を構成する全ての変数、イメージおよびデータ構成要素を表す。フォアグラウンドプロトコルエンジン1106もまた、プロトコルデータストリーム1110の記録を受信し、プロトコルデータストリーム1110を元来レンダリングしたプロトコルエンジンの状態を再び作成することによって、プロトコルデータストリーム1110の中に少なくとも1つのパケットのコンテンツをレンダリングする。一実施形態において、フォアグラウンドプロトコルエンジン1106は、ステートスナップショット1104のコンテンツを用いて少なくとも1つのパケットのコンテンツをレンダリングする。
一実施形態において、ステートスナップショット1104は、データ構造を含む。他の実施形態において、ステートスナップショット1104は、データベースを含む。一実施形態において、ステートスナップショット1104のコンテンツは、可視の表面の状態に関するディスプレイデータを含む。別の実施形態において、ステートスナップショット1104のコンテンツは、オフスクリーンの表面の状態に関するディスプレイデータを含む。さらなる別の実施形態において、ステートスナップショット1104のコンテンツは、描画対象の状態に関するディスプレイデータを含む。一部の実施形態において、ステートスナップショット1104のコンテンツは、カラーパレットの状態に関するディスプレイデータを含む。他の実施形態において、ステートスナップショット1104のコンテンツは、キャッシュされた対象物の状態に関するディスプレイデータを含む。さらに他の実施形態において、ステートスナップショット1104のコンテンツは、バッファの状態に関するディスプレイデータを含む。
フォアグラウンドプロトコルエンジン1106は、プロトコルデータストリーム1110の記録を受信し、ステートスナップショット1104を用いて要求されたデジタルデータの表現(representation)を含むパケットを識別し、パケットをレンダリングする。一部の実施形態において、フォアグラウンドプロトコルエンジン1106は、ディスプレイ1108を用いるビューアへの提示のために、プロトコルデータストリーム1110の記録のリアルタイムにおける認識できる表現を生成する。一部の実施形態において、フォアグラウンドプロトコルエンジン1106は、プロトコルデータストリーム1110に少なくとも1つのパケットのコンテンツをレンダリングすることによって、リアルタイムにおける認識できる表現を生成する。認識できる表現は、聴覚的、視覚的、触覚的、または嗅覚的な提示を、別個にまたは共に含み得、それらに限定はされない。
フォアグラウンドプロトコルエンジン1106がプロトコルデータストリーム1110に少なくとも1つのパケットのコンテンツをレンダリングする実施形態の1つにおいて、フォアグラウンドプロトコルエンジン1106は、バックグラウンドプロトコルエンジン1102によってレンダリングすることと同時に、プロトコルデータストリーム1110に少なくとも1つのパケットのコンテンツをレンダリングすることを開始する。しかし、バックグラウンドプロトコルエンジン1102は、バッファのみにレンダリングし、フォアグラウンドプロトコルエンジン1106によって開始されたリアルタイムにおける認知可能なレンダリングの完了に先立って、レンダリングおよび少なくとも1つのステートスナップショット1104の生成を完了し、一実施形態において、フォアグラウンドプロトコルエンジン1106は、バッファおよび認知可能な仕方の両方にレンダリングする。一実施形態において、バックグラウンドプロトコルエンジン1102は、最大限に可能な限りの速度でプロトコルデータストリーム1110をレンダリングし、さもなければレンダリングのための時間を特定し得る記録に関連付けられたあらゆるタイムスタンプに関係なくなされる。従って、プロトコルデータストリーム1110の記録のリアルタイムにおける認知可能な表現の生成の間に、少なくとも1つのステートスナップショット1104は、フォアグラウンドプロトコルエンジン1106に利用可能である。
一実施形態において、フォアグラウンドプロトコルエンジン1106は、連続した仕方でプロトコルデータストリーム1110の記録内で複数のパケットのコンテンツをレンダリングする。この実施形態において、ユーザにレンダリングおよび提示されたディスプレイデータは、プロトコルデータストリームが記録された時間が発生した順番でディスプレイを提示する。プロトコルデータストリーム1110の記録は、例えばタイムスタンプなどの情報を含み、フォアグラウンドプロトコルエンジン1106がディスプレイデータを連続してレンダリングするときに用いられる。一部の実施形態において、フォアグラウンドプロトコルエンジン1106は、リアルタイムにおいてディスプレイデータをレンダリングする。フォアグラウンドプロトコルエンジン1106が、プロトコルデータストリーム1110の記録における特定のパケットによって表される特定のディスプレイデータを再生成する要求を受信するときに、フォアグラウンドプロトコルエンジン1106は、識別されたステートスナップショット1104のコンテンツを用いて要求されたディスプレイデータをレンダリングする。
一部の実施形態において、バックグラウンドプロトコルエンジン1102およびフォアグラウンドプロトコルエンジン1106は、同一のデバイス上に存在する。他の実施形態において、バックグラウンドプロトコルエンジン1102およびフォアグラウンドプロトコルエンジン1106は、別個のデバイス上に存在する。
ここで図9に戻って参照すると、流れ図は、ステートフル遠隔提示プロトコルのプレイバックの間のリアルタイムシーキングのための方法で取られるステップの一実施形態を図示する。簡潔に概略すると、プロトコルデータストリームの記録におけるパケットのコンテンツによって表されるデータディスプレイのレンダリングに対する要求がある(ステップ902)。まず要求されたパケットに関連付けられたタイムスタンプよりも後ではない関連付けられたタイムスタンプを有するステートスナップショットを識別(ステップ904)し、識別されたステートスナップショットに応答する要求されたコンテンツをレンダリングする(ステップ906)ことによって、適切なパケットのコンテンツはレンダリングされる。
一実施形態において、フォアグラウンドプロトコルエンジン1106は、プロトコルデータストリーム1110のレコーディングにおけるパケットのコンテンツをレンダリングする要求を受信する。プロトコルデータストリーム1110は、複数のパケットを含み、該パケットのコンテンツは、ディスプレイデータを表す。一部の実施形態において、フォアグラウンドプロトコルエンジン1106が、ディスプレイ1108を用いるビューアにプロトコルデータストリーム1110の記録におけるパケットのコンテンツをレンダリングすることによってディスプレイデータを再生成し、ビューアが特定のディスプレイデータをシーキングすることを望むときに、要求は結果として起こる。
フォアグラウンドプロトコルエンジン1106は、要求されたパケットに関連付けられたタイムスタンプよりも後ではない関連付けられたタイムスタンプを有するステートスナップショット1104を識別する。フォアグラウンドプロトコルエンジン1106は、識別されたステートスナップショット1104に応答する、要求されたパケットのコンテンツによって表されるディスプレイデータを表示する。一実施形態において、識別されたステートスナップショット1104は、プロトコルデータストリーム1110から正確なパケットを示し、プロトコルデータストリーム1110のコンテンツは、フォアグラウンドプロトコルエンジン1106が、要求されたディスプレイデータをユーザに提供するためにレンダリングし得る。
他の実施形態において、識別されたステートスナップショット1104は、レコーダがプロトコルデータストリーム1110からパケットをコピーしたが、コピーされたパケットのコンテンツによって表されるディスプレイデータが、ビューアによって要求されたディスプレイデータに先んずる時点における、プロトコルデータストリームをレンダリングする、プロトコルエンジンの状態を含む。これらの実施形態の一部において、ステートスナップショットと要求されたディスプレイデータの表現を含むパケットとの間に複数のパケットがある。これらの実施形態の一部において、フォアグラウンドプロトコルエンジン1106は、オフスクリーンバッファのみに中間のパケットまたは複数の中間のパケットのコンテンツをレンダリングする。フォアグラウンドプロトコルエンジン1106は、次いで、コンテンツが、認知可能な仕方でオフスクリーンバッファとユーザとの両方にディスプレイデータを表すパケットをレンダリングする。一実施形態において、フォアグラウンドプロトコルエンジン1106は、要求されたコンテンツによって表されるディスプレイデータに先立って、認知可能な仕方で中間のパケットのコンテンツによって表されるディスプレイデータを提示する。
ここで図10を参照して、流れ図は、遠隔提示プロトコルのプレイバックの間にリアルタイムにおけるシーキングを可能にするステートスナップショットを生成するために取られるステップの一実施形態を図示する。簡潔に概略すると、バックグラウンドプロトコルエンジン1102は、プロトコルデータストリーム1110の記録を受信し、プロトコルデータストリーム1110内の複数のパケットのコンテンツによって表されるディスプレイデータを再生成する間に少なくとも1つのステートスナップショットを生成する。
バックグラウンドプロトコルエンジン1102は、複数のパケットを含むプロトコルデータストリーム1110の記録を受信(ステップ1002)する。バックグラウンドプロトコルエンジン1102は、プロトコルデータストリームの記録の表現を生成する。一実施形態において、バックグラウンドプロトコルエンジン1102は、複数のパケットのコンテンツをバッファにレンダリングすることによって表現を生成する。一部の実施形態において、バッファは、オフスクリーンバッファである。
一部の実施形態において、フォアグラウンドプロトコルエンジン1106もまた、プロトコルデータストリーム1110の記録を受信する。これらの実施形態において、フォアグラウンドプロトコルエンジン1106は、プロトコルデータストリームの記録の人間に認知可能な表現を生成するが、上述のように、フォアグラウンドプロトコルエンジン1106は、オフスクリーンバッファと認知可能な仕方との両方にレンダリング(ステップ1004)する。一つのこれらの実施形態において、フォアグラウンドプロトコルエンジン1106は、複数のパケットのコンテンツをレンダリングすることによってプロトコルデータストリーム1110の記録の人間に認知可能な表現を生成し、実質的に同時に、バックグラウンドプロトコルエンジン1102が、プロトコルデータストリームの記録の間に少なくとも1つのステートスナップショットを生成する。
プロトコルデータストリーム1110の記録における少なくとも1つのパケットの読み取りの後に、バックグラウンドプロトコルエンジン1102は、少なくとも1つのステートスナップショットを生成(ステップ1006)する。一実施形態において、バックグラウンドプロトコルエンジン1102は、プロトコルデータストリーム1110の記録の連続する読み取りの間に少なくとも1つのステートスナップショットを生成する。別の実施形態において、バックグラウンドプロトコルエンジン1102は、プロトコルデータストリーム1110の記録における少なくとも1つのパケットを読み込み、実質的に同時に、バッファへのパケットのコンテンツのレンダリングを行う。一実施形態において、バックグラウンドプロトコルエンジン1102は、次いで生成されたステートスナップショット1104を格納(ステップ1008)する。バックグラウンドプロトコルエンジン1102が定期的に複数のステートスナップショットを生成する実施形態において、ステートスナップショットは、プロトコルデータストリーム1110の記録の間じゅう、マーカーとして機能し得、プロトコルデータストリーム1110における特定の時点のロケーションおよびステートスナップショット1104の前または後に到着するパケットのロケーションを補助する。
図12を参照すると、流れ図は、ステートスナップショットの適応的な生成のためにとられるステップの一実施形態を描いている。簡潔に概略すると、バックグラウンドプロトコルエンジン1102は、ビューアの活動をモニタリングし、ビューアの活動のレベルに応じて一つ以上のステートスナップショット1104を生成する。
ユーザに対してプロトコルデータストリーム1110の記録の表示を提示する間(ステップ1202)、バックグラウンドプロトコルエンジン1102は、ユーザの活動をモニタリングする(ステップ1204)。一実施形態において、フォアグラウンドプロトコルエンジン1106は、プロトコルデータストリーム1110の記録の表示を生成し、ディスプレイ1108を用いて、その表示をユーザに提示する。他の実施形態において、バックグラウンドプロトコルエンジン1102は表示を生成する。さらに他の実施形態において、第3のデバイスが表示を生成する。
バックグラウンドプロトコルエンジン1102は、提示の間、ユーザの活動をモニタリングする(ステップ1204)。ユーザの活動をモニタリングすることによって、バックグラウンドプロトコルエンジン1102は、活動のモニタリングに応答して活動のプロフィールを作成する(ステップ1206)。バックグラウンドプロトコルエンジンは、作成された活動プロフィールに応答して、少なくとも一つのステートスナップショット1104を生成する(ステップ1208)。
一部の実施形態において、バックグラウンドプロトコルエンジン1102は、ユーザの活動レベルを識別する。一部の実施形態において、バックグラウンドプロトコルエンジン1102は、活動のない期間を識別する。他の実施形態において、バックグラウンドプロトコルエンジン1102は、表示データ内のユーザにとって関心のあるエリアを識別する。活動プロフィールは、これらの識別を反映する。
バックグラウンドプロトコルエンジン1102は、活動プロフィールに応答して、少なくとも一つのステートスナップショットを生成する。一部の実施形態において、バックグラウンドプロトコルエンジン1102は、一つ以上のステートスナップショットの間隔を拡張することを決定する。他の実施形態において、バックグラウンドプロトコルエンジン1102は、一つ以上のステートスナップショットの間隔を減少させることを決定する。さらに他の実施形態において、バックグラウンドプロトコルエンジン1102は、活動プロフィールに応答して、少なくとも一つのステートスナップショットを除去することを決定する。さらに他の実施形態において、バックグラウンドエンジンプロトコル1102は、活動プロフィールに応答して、少なくとも一つのステートスナップショットを追加することを決定する。
一実施形態において、バックグラウンドプロトコルエンジン1102は、シーキング確率の見込みの統計的な分布を識別する。図13は、一実施形態のシーキング確率の見込みの統計的な分布の三つのタイプを描いている図である。この実施形態において、バックグラウンドプロトコルエンジン1102は、ユーザによって行なわれたシーキング要求についてのデータを収集し、格納する。一実施形態において、データは、どの程度規則的に、ユーザがシーキング要求を行なうかを含む。一実施形態において、データは、各シーキング要求の範囲、要求された表示データと、プロトコルデータストリーム1110の記録内のパケットのコンテンツをレンダリングすることによって、ユーザに提示される現在の表示データとの間の距離を含む。範囲は、時間単位か、またはプロトコルデータストリーム1110の全記録の長さに関してかで、記述され得る。一実施形態において、シーキング要求が行なわれるタイムスタンプが記録される。
図14は、シーキング確率分布の決定に応答して、ステートスナップショットを生成する一実施形態を描いている図である。バックグラウンドプロトコルエンジン1102は、収集されたシーキング要求データを使用して、現在提示されている表示データを中央に置く、シーキング確率分布のグラフを生成する。バックグラウンドプロトコルエンジン1102は、ストリーム内の各位置に、ユーザがその位置に関連する表示データをシーキングすることを要求する確率の見込みを指している値を割り当てる。このデータを使用して、バックグラウンドプロトコルエンジン1102は、生成されたスナップショット1104をどこに配置するべきかを決定し、シーキング確率の統計的な分布に応答して、少なくとも一つのステートスナップショット1104を生成する。
図15は、ユーザの使用パターンの一実施形態を描いている。一実施形態において、バックグラウンドプロトコルエンジン1102は、ユーザの使用パターンに基づいて、ユーザに関する活動プロフィールを形成する。使用パターンは、識別されたシーキング確率を反映する。シーキング確率の高いエリアは、ステートスナップショットの密度が高く、シーキング確率の低いエリアは、ステートスナップショットの密度が低い。一部の実施形態において、ステートスナップショットの任意の対の間の距離は、それらの間の平均的なシーキング確率に対して反比例する。バックグラウンドプロトコルエンジン1102は、ユーザが確率の高いエリアをシーキングすることを予期し、それにより、シーキングの大部分が速くなる。なぜならば、生成されたステートスナップショット1104の間隔が比較的に短いからである。個々のシーキング要求が、あまり遅くならないことを確実にするために、一実施形態において、シーキング確率が非常に低いときでさえ、バックグラウンドプロトコルエンジン1102は、生成されたステートスナップショット1104の間隔に上限を設ける。同様に、別の実施形態において、下限は、非常に確率の高いエリアに、かなり密接してステートスナップショットを配置することを防止する。一部の実施形態において、待ち時間を最小化するために、ステートスナップショットの配置を決定するときに、隣接するステートスナップショット間のレンダリングの量が考慮される。
新たなユーザまたは使用パターンを区別することのできないユーザを有する実施形態に関して、バックグラウンドプロトコルエンジン1102は、デフォルトのステートスナップショット生成パターンを適用する。このパターンは、シーキングすることのほとんどが、現在のフレームの付近で各方向に発生することを想定するが、長い範囲のシーキングの性能は、せいぜい満足できる程度であり得る。多くの小さなシーキングステップとして、現在のフレームの周囲を前後にジョギングすることが、ジョグホイール入力デバイスを用いて達成され得る時には、一般的なユーザは、高い性能を要求する。長い範囲をシーキングすることは、あまり一般的ではなく、顕著な遅れは、許容可能なトレードオフであり得る。
ユーザが識別された使用パターンからはずれる場合には、バックグラウンドプロトコルエンジン1102は、ユーザの知識を用いることなくライブプレイバックの間、ステートスナップショット生成パターンを調整する。バックグラウンドプロトコル1102は、ステートスナップショットの位置を移動させ、新しい使用パターンのために調整する。例えば、マウスホイールを用いた小さなステップにおいて、普通にシーキングするユーザが、長い範囲をシーキングすることを開始する場合には、バックグラウンドプロトコルエンジン1102は、現在のフレームの周囲のステートスナップショットの数を低減させ、長い範囲におけるエリア内のステートスナップショットを追加するための供給源を使用できるようにする。
図16は、ステートスナップショットの適応性の生成のためのシステムにおいて使用される、上記の方法の一実施形態を要約し、該ステートスナップショットは、バックグラウンドプロトコルエンジン1602と、フォアグラウンドプロトコルエンジン1608と、プロトコルデータストリーム1612と、活動プロフィール1604と、ステートスナップショット1606とを含む。フォアグラウンドプロトコルエンジン1608は、プロトコルデータストリームの記録の表示をビューアに対して提示する。バックグラウンドプロトコルエンジン1602は、提示の間、ビューアの活動をモニタリングし、モニタリングに応答して、活動プロフィール1604を形成し、活動プロフィールに応答して、ステートスナップショット1606を生成し、かつ維持する。
図18を参照すると、流れ図は、記録されたコンピュータセッションのプレイバックのためのプレイバック命令を生成するためにとられるステップの一実施形態を描いている。簡潔に概略すると、第1のデバイス上で実行しているプロトコルエンジンは、記録されたセッションを受信する(ステップ1802)。記録されたストリームは、第2のデバイス上で実行されるアプリケーションプログラムによって生成された表示データを表している複数のパケットを含む。プロトコルエンジンは、人間が認識できる方法(human−perceptible manner)でパケットのコンテンツをレンダリングするように、記録されたストリーム内のパケットのために決定を行う(ステップ1804)。次に、プロトコルエンジンは、プレイバックデータ構造内に決定を格納する(ステップ1806)。
一実施形態において、プロトコルエンジンは、図5に記述されたように、プロトコルエンジン502を含む。他の実施形態において、プロトコルエンジンは、図11に記述されたようにバックグラウンドプロトコルエンジン1102を含む。さらに他の実施形態において、プロトコルエンジンは、図11に記述されたように、フォアグラウンドプロトコルエンジン1106を含む。プロトコルエンジンがバックグラウンドエンジン1102を含む一部の実施形態において、プロトコルエンジンは、バックグラウンドプロトコルエンジン1102の機能を実行することを中止し得、フォアグラウンドプロトコルエンジン1106の機能を実行することを開始し得る。プロトコルエンジンがフォアグラウンドプロトコルエンジン1106を含む一部の実施形態において、プロトコルエンジンは、フォアグラウンドプロトコルエンジン1106の機能を実行することを中止し得、バックグラウンドプロトコルエンジン1102の機能を実行することを開始する。他の実施形態において、プロトコルエンジンは、プロトコルエンジン1102とフォアグラウンドプロトコルエンジン1006との両方を含む。これらの実施形態のうちの一部において、バックグラウンドプロトコルエンジン1102とフォアグラウンドプロトコルエンジン1106とは、同じデバイスに存在する。他の実施形態において、バックグラウンドプロトコルエンジン1102とフォアグラウンドプロトコルエンジン1106とは、別個のデバイスに存在する。
一実施形態において、プロトコルエンジンは、人間が認識できる方法でパケットを表示するように、記録されたセッション内のパケットのために決定を行う(ステップ1804)。表示は、聴覚的、視覚的、触覚的、または嗅覚的な提示、あるいはそれらの組み合わせを含むが、それらには限定されない。一部の実施形態において、プロトコルエンジンは、パケットのコンテンツの応答に基づいて、パケットを表示することを決定する。これらの実施形態のうちの一部において、プロトコルエンジンは、入力フォーカスを有するアプリケーションプログラムの指標に応答して決定を行なう。これらの実施形態のうちの別の実施形態において、プロトコルエンジンは、パケット内に格納されるユーザ入力のタイプの評価に応答して決定を行なう。これらの実施形態のうちの一部において、プロトコルエンジンは、パケットによって格納されるグラフィックの更新のタイプの評価に応答して決定を行なう。これらの実施形態のうちの他の実施形態において、プロトコルエンジンは、パケットによって格納される相互作用シーケンスのタイプの評価に応答して決定を行なう。
一実施形態において、プロトコルエンジンは、プレイバックデータ構造内に決定を格納する(1806)。一部の実施形態において、プレイバックデータ構造は、記録されたストリーム内に含まれる表示データをどのように再生成するのかを記述する。一実施形態において、プレイバックデータ構造内に格納される命令は、表示データをレンダリングする処理を制御する。一実施形態において、プレイバックデータ構造は、記録されたストリーム内のパケットのコンテンツをレンダリングするための時間を含む。この実施形態において、プレイバックデータ構造に含まれる時間が、パケットのコンテンツをレンダリングするために使用され、記録におけるパケットと関連するレンダリング時間は、例えあったとしても、使用されない。一実施形態において、プレイバックデータ構造は、レンダリングの時間を変更する際に、ユーザの入力を受け入れる。
一部の実施形態において、プレイバックデータ構造は、記録されたセッションの一つ以上のプレイバックをどのように実行するかを記述するメタデータを含む。一実施形態において、プレイバックデータ構造は、記録ストリーム内の各パケットに関する記録からなり、相対的にどの時点において適切に、そのパケットのコンテンツが、プレイバックの間にレンダリングされるべきかを示している。一部の実施形態において、メタデータはまた、パケットの開始のファイル内にオフセットを含む。
再び図17を参照すると、ブロック図は、記録されたセッションをレンダリングするためのシステムの一実施形態を描き、該システムは、第1のデバイス1702と、バックグラウンドプロトコルエンジン1704と、プレイバックデータ構造1706と、フォアグラウンドプロトコルエンジン1708と、ディスプレイ1710と、第2のデバイス1712と、記録されたストリーム1714とを含む。バックグラウンドプロトコルエンジン1704は、第1のデバイス1702上で実行し、記録されたストリーム1714の受信に応答して、プレイバックデータ構造1706を生成し、該記録ストリーム1714は、第2のデバイス1712または第3のデバイス上で実行されるアプリケーションプログラムによって、生成された表示データを表している。フォアグラウンドプロトコルエンジン1708は、記録されたストリーム1714を受信し、バックグラウンドプロトコルエンジン1704によって生成されるプレイバックデータ構造1706に応答して、記録されたストリーム1714をレンダリングする。
一実施形態において、バックグラウンドプロトコルエンジン1704とフォアグラウンドプロトコルエンジン1708とのそれぞれは、記録されたストリーム1714を受信する。この実施形態において、バックグラウンドプロトコルエンジン1704は、プレイバックデータ構造を生成し、実質的に同時に、フォアグラウンドプロトコルエンジン1708は、記録されたストリームをレンダリングする。
一実施形態において、フォアグラウンドエンジン1708は、第1のデバイス1702に存在する。図17の影の部分で示されている別の実施形態において、フォアグラウンドプロトコルエンジン1708は、第1のデバイス1702にも第2のデバイス1712にも存在しない。さらに別の実施形態において、フォアグラウンドプロトコルエンジン1708は、第3のデバイスに存在する。一部の実施形態において、フォアグラウンドプロトコルエンジン1708は、バックグラウンドプロトコルエンジン1704を含む。これらの実施形態のうちの一部において、バックグラウンドプロトコルエンジン1102とフォアグラウンドプロトコルエンジン1106とは、同じデバイスに存在する。これらの実施形態のうちの他の実施形態において、バックグラウンドプロトコルエンジン1102とフォアグラウンドプロトコルエンジン1106とは、別個のデバイスに存在する。
一実施形態において、バックグラウンドプロトコルエンジンは、記録されたストリーム内の少なくとも一つのパケットをレンダリングするための少なくとも一つの命令を、プレイバックデータ構造内に格納する。別の実施形態において、バックグラウンドプロトコルエンジンは、プレイバックデータ構造内にメタデータを格納する。さらに別の実施形態において、バックグラウンドプロトコルエンジンは、記録されたセッション内に少なくとも一つのパケットをレンダリングするための時間を示す記録を、プレイバックデータ構造内に格納する。
フォアグラウンドプロトコルエンジン1708は、プレイバックデータ構造に応答して、記録されたセッション内の少なくとも一つのパケットをレンダリングする。一実施形態において、フォアグラウンドプロトコルエンジンは、記録されたセッション内の少なくとも一つのパケットを、人間が認識できる方法でバッファにレンダリングする。別の実施形態において、フォアグラウンドプロトコルエンジンは、記録されたセッション内の少なくとも一つのパケットをバッファにレンダリングする。
図19を参照すると、流れ図は、記録されたコンピュータセッションをプレイバックするための方法においてとられるステップの一実施形態を描いている。簡潔に概略すると、バックグラウンドプロトコルエンジンは、第2のデバイス上で実行されるアプリケーションプログラムによって生成される表示データを表している複数のパケットを含む記録されたストリームを受信する(ステップ1902)。バックグラウンドプロトコルエンジンは、人間が認識できる方法でパケットをレンダリングするように、記録されたストリーム内の少なくとも一つのパケットのために決定を行う(ステップ1904)。バックグラウンドプロトコルエンジンは、決定をプレイバックデータ構造内に格納する(ステップ1906)。フォアグラウンドプロトコルエンジンは、記録されたストリームから少なくとも一つのパケットを引き出し(ステップ1908)、プレイバックデータ構造にアクセスし(ステップ1910)、プレイバックデータ構造に応答して、少なくとも一つのパケットをレンダリングする(ステップ1912)。
一実施形態において、プロトコルエンジンは、人間が認識できる方法でパケットを表示するように、記録されたストリーム内のパケットのために決定を行う(ステップ1904)。表示は、聴覚的、視覚的、触覚的、または嗅覚的な提示、あるいはそれらの組み合わせを含むが、それらに限定されない。一部の実施形態において、プロトコルエンジンは、パケットのコンテンツに対する応答に基づいて、パケットを表示することを決定する。これらの実施形態のうちの一つにおいて、プロトコルエンジンは、入力フォーカスを有するアプリケーションプログラムの指標に応答して決定を行なう。これらの実施形態のうちの別の実施形態において、プロトコルエンジンは、パケット内に格納されるユーザの入力のタイプの評価に応答して決定を行なう。これらの実施形態のうちの一部において、プロトコルエンジンは、パケットによって格納されるグラフィックの更新のタイプの評価に応答して決定を行なう。これらの実施形態のうちの他の実施形態において、プロトコルエンジンは、パケットによって格納される相互作用シーケンスのタイプの評価に応答して決定を行なう。一実施形態において、プロトコルエンジンは、プレイバックデータ構造内に決定を格納する(1906)。
一実施形態において、フォアグラウンドプロトコルエンジンは、記録されたセッションを受信する。他の実施形態において、フォアグラウンドプロトコルエンジンは、記録されたセッションを引き出す。これらの実施形態のうちの一部において、フォアグラウンドプロトコルエンジンは、記録されたセッションを格納要素から引き出す。
一実施形態において、フォアグラウンドプロトコルエンジンは、少なくとも一つのパケットを記録されたストリームから引き出す(ステップ1908)。次に、この実施形態において、フォアグラウンドプロトコルエンジンは、プレイバックデータ構造にアクセスし(ステップ1910)、プレイバックデータ構造に応答して、パケットのコンテンツをレンダリングする(ステップ1912)。一部の実施形態において、プレイバックデータ構造は、パケットのコンテンツを認識できる方法でレンダリングする命令を含む。これらの実施形態のうちの一つにおいて、フォアグラウンドプロトコルエンジンは、パケットのコンテンツを画面上でレンダリングする。一部の実施形態において、フォアグラウンドプロトコルエンジンは、少なくとも一つのパケットのコンテンツをバッファに必ずレンダリングする。多くの実施形態において、フォアグラウンドプロトコルエンジンが、パケットのコンテンツをバッファにレンダリングするときには、画面外バッファである。これらの実施形態のうちの一つにおいて、フォアグラウンドプロトコルエンジンは、プレイバックデータ構造によって指示されるように、パケットのコンテンツを画面外バッファにレンダリングし、パケットのコンテンツを画面上でもまたレンダリングする。
他の実施形態において、プレイバックデータ構造は、パケットのコンテンツを認識できる方法でレンダリングしない命令を含む。これらの実施形態のうちの一つにおいて、プレイバックデータ構造にアクセスする際に、フォアグラウンドプロトコルは、パケットのコンテンツを認識できる方法でレンダリングしないが、パケットのコンテンツをバッファにレンダリングする。
フォアグラウンドプロトコルエンジンが、プレイバックデータ構造に応答して、パケットのコンテンツを画面外のバッファにのみレンダリングする実施形態に関して、フォアグラウンドプロトコルエンジンは、記録されたストリームとは異なる表示データを認識できるように再生成する。一実施形態において、このことは、最初の記録されたストリームよりも短い表示データの提示をもたらす。一部の実施形態において、パケットのレンダリングされたコンテンツは、最初の表示データの再生成を簡素化する。他の実施形態において、パケットのレンダリングされたコンテンツは、表示データのカスタム化されたバージョンを提供する。一実施形態において、パケットのコンテンツを認識できる方法でレンダリングする決定は、ポリシーまたはユーザの要求に応答する。これらの実施形態は、ユーザに記録されたセッションのプレイバックに対する制御を提供する。
図21を参照すると、排除される活動を含んでいない認識できる時間間隔を有する記録されたセッションのレンダリングの一実施形態が描かれている。この図において、黒いブロックは、ユーザの入力を含んでいる一つのパケットまたは複数のパケットを表し、点のあるブロックは、グラフィックコマンドを含んでいる一つのパケットまたは複数のパケットを表す。「ユーザの入力」と「グラフィック」との両方の列において白いブロックによって表される時間間隔は、パケットが存在せず、従って全く活動がない。
活動のない認識できる時間間隔を排除する方法の一実施形態は、以下の通りである。記録されたセッション内の第1のパケットが識別される。記録されたセッションは、表示データを表す複数のパケットを含む。記録されたセッション内の第1のパケットの直前のパケットは、第2のパケットとして識別される。第1の時間間隔が決定され、該時間間隔は、該第1のパケットと該第2のパケットとの間に生じる。第1の時間間隔が閾値を超えるという決定が行なわれる。記録されたセッション内のパケットのコンテンツが、該第1のパケットと該第2のパケットとの間の、第1の時間間隔よりも短い第2の時間間隔を有して、レンダリングされる。
一実施形態において、プロトコルエンジンは決定を行なう。一部の実施形態において、プロトコルエンジンは、プレイバックデータ構造内に決定を格納する。一実施形態において、同じプロトコルエンジンが、プレイバックデータ構造に応答して、記録されたセッションをレンダリングする。別の実施形態において、決定を行なうプロトコルエンジンは、バックグラウンドプロトコルエンジンを含み、記録されたセッションをレンダリングするプロトコルエンジンは、フォアグラウンドプロトコルエンジンを含む。
一実施形態において、時間間隔が閾値を超えるということを、プロトコルエンジンが決定するときには、プロトコルエンジンは、時間間隔を認識できる時間間隔として分類する。再生成された記録されたセッションのユーザが、活動のない期間が経過したことを視認し得る場合には、時間間隔は認識できる。一部の実施形態において、ポリシーは、閾値を決定する。他の実施形態において、プロトコルエンジンは、所定の閾値を用いてハードコード化される。この実施形態において、プロトコルエンジンは、プレイバックデータ構造内に命令を格納し、最初の時間間隔の代わりに、第1のパケットと第2のパケットとの間のより短い時間間隔をレンダリングする。別の実施形態において、時間間隔が閾値を超えるということを決定するプロトコルエンジンはまた、記録されたセッションのコンテンツをレンダリングする。この実施形態において、プロトコルエンジンは、より短い時間間隔をレンダリングする命令を、プレイバックデータ構造内に格納しない。認識できると分類されない時間間隔に関して、短くされた時間間隔は必要とされず、最初の時間間隔が、第1のパケットと第2のパケットとの間でレンダリングされる。
再び図20を参照すると、流れ図は、記録されたセッションをレンダリングするプレイバック命令を生成するためにとられるステップの一実施形態を描いている。簡潔に概略すると、記録されたセッション内のパケットによって格納される入力のタイプが識別され(ステップ2002)、入力のタイプに応答して、パッケトが、マーカー付けされる(ステップ2004)。次に、マーカー付けに応答して、パケットのコンテンツをレンダリングする宛先が、プレイバックデータ構造に格納される。
一実施形態において、パケットによって格納された入力のタイプは、パケットがレンダリングされるかどうかを決定する。一実施形態において、パケットはコンテンツを含んでいない。一部の実施形態において、少なくとも一つのパケットは、コンテンツを含んでいない。これらの実施形態において、コンテンツを含んでいない少なくとも一つのパケットを含む時間間隔が、識別される。これらの実施形態のうちの一部において、時間間隔は、レンダリングされない。
一部の実施形態において、入力のタイプは、キーボード、マウス、マイク、またはカメラを含むが、それらには限定されない一定のタイプの入力デバイスからの入力を意味する。一実施形態において、入力のタイプを識別するステップは、入力デバイスからの入力として、入力のタイプを識別することをさらに包含する。別の実施形態において、入力のタイプを識別するステップは、入力のタイプをキーボード入力として識別することをさらに包含する。他の実施形態において、入力のタイプは、入力デバイスに関連しない。これらの実施形態のうちの1つにおいて、入力のタイプは、コマンドとして識別される。
入力を含んでいるパケットは、パケットが含んでいる入力のタイプに応答して、マーカー付けされる(ステップ2004)。一実施形態において、パケットは、ポリシーに応答してマーカー付けされる。この実施形態において、ポリシーは入力のタイプを決定し、パケットがマーカー付けされる。別の実施形態において、マーカー付けは必要とされない。
パケットをレンダリングする宛先が、マーカー付けに応答して、プレイバックデータ構造内に格納される(ステップ2006)。一部の実施形態において、宛先はバッファを含んでいる。一実施形態において、命令は、プレイバックデータ構造に格納され、バッファにパケットをレンダリングする。一実施形態において、バッファは、画面外のバッファであり、パケットのコンテンツが、バッファにレンダリングされるときには、コンテンツは、レンダリングのユーザにとって認識できない。一実施形態において、命令は、プレイバックデータ構造内に格納され、マーカー付けされたパケットのレンダリングを認識できる方法で、バッファに導く。
一実施形態において、方法は、有意義な活動を含んでいない認識できる時間間隔を排除する。この実施形態において、ポリシーは、特定のタイプの入力を、有意義であるか、または無意味であるとして識別する。一部の実施形態において、ポリシーは、プロトコルエンジンにハードコード化され得る。他の実施形態において、アドミニストレータは、ポリシーを構成する。
一部の実施形態において、パケットがコンテンツを含んでいない場合には、プロトコルエンジンは、パケットを無意味であると識別する。これらの実施形態のうちの一部において、パケットは、ユーザの活動が記録されたストリーム1714に記録されなかった時間間隔を表す。これらの実施形態において、プロトコルエンジンは、プレイバックデータ構造内に、いかなる無意味なパケットも認識できる方法ではレンダリングされない方法で、記録されたストリーム内の複数のパケットのそれぞれをレンダリングする宛先を格納する。図22は、記録されたストリームの再生成の一実施形態を描き、該記録されたストリームのコンテンツは、プレイバックデータ構造に応答して、レンダリングされる。この実施形態において、プレイバックデータ構造に応答したレンダリングは、(図22における白いストライプ状のブロックによって記述されている)無意味な活動を含んでいる時間間隔の排除を可能にし、該無意味な活動は、まったく活動していない時間間隔を含む。このレンダリングは、有意義な記録されたセッションの再生成をユーザに提供し、ポリシーは、いつコンテンツが有意義な活動を表示するかを決定する。一実施形態において、有意義な活動を表示しているコンテンツは、ユーザの入力のタイプを含む。
一部の実施形態において、プロトコルエンジンは、証明可能に無意味な時間を含む前もって定義された時間に応答する入力タイプを識別する。一部の実施形態において、無意味な時間は、パケットがいかなるコンテンツも含んでいない時間間隔を含む。他の実施形態において、ポリシーは、入力タイプを定義し、該入力タイプは、無意味な時間を構成要素とする。さらに別の実施形態において、証明可能に無意味な時間を含む入力タイプの定義は、プロトコルエンジン内にハードコード化される。
一部の実施形態において、パケットのコンテンツが、ユーザの活動を表示するが、ポリシーは、その活動を無意味な活動として識別する。これらの実施形態のうちの一つにおいて、ポリシーは、無意味な活動を、再生成された記録されたセッションのユーザにとって関心のないものとみなされる活動として定義する。これらの実施形態の別の実施形態において、ポリシーによって決定されるように、有意義なパケットは、再生成された記録されたセッションのユーザにとって関心のあるコンテンツを含んでいる。一実施形態において、無意味なパケットは、アプリケーションと有意義に相互作用する入力を表示するコンテンツを有していない。別の実施形態において、記録されたストリームが形成されるプロトコルデータストリームにおいて、アプリケーションデータを伝送するデバイスは、有意義なスクリーンのアップデートを伝送しない。
一実施形態において、プロトコルエンジンは、記録されたセッション内の少なくとも一つのパケットに対して、パケットのコンテンツが、キーボード入力、マウス入力、またはコマンドメッセージを含むが、それらには限定されない入力のタイプを含んでいるかどうかを決定する。パケットが、キーボード入力のようなタイプの入力を含んでいる場合には、プロトコルエンジンは、パケットを有意義なパケットとしてマーカー付けする。パケットが、そのようなタイプの入力を含んでいない場合には、プロトコルエンジンは、そのパケットを無意味なパケットとしてマーカー付ける。一実施形態において、コンテンツの全てが、無意味な場合にのみ、パケットは無意味なものとなる。別の実施形態において、パケットは、一つより多いタイプの入力を含み、入力タイプのそれぞれは、意味があるものか、または無意味なものとしてマーカー付けされる。
一実施形態において、プロトコルエンジンが、パケットを無意味なものとしてマーカー付けするときには、プロトコルエンジンは、パケットのコンテンツは認識できる方法で、レンダリングするべきではないということを決定する。その代わりに、一部の実施形態において、プロトコルエンジンは、パケットのコンテンツがバッファにレンダリングするべきであるということを決定する。これらの実施形態のうちの一つにおいて、バッファは、画面外バッファである。一実施形態において、パケットが、有意義なパケットとしてマーカー付けされた場合には、プロトコルエンジンは、パケットのコンテンツが、認識できる方法でレンダリングするべきであるということを決定する。一部の実施形態において、認識できる方法は、画面上でのレンダリングを含む。一実施形態において、プロトコルエンジンは、パケットが、認識できる方法で、バッファにレンダリングするべきであるということを決定する。この実施形態において、パケットのコンテンツは、ディスプレイの画面上と画面外のバッファとの両方でレンダリングする。プロトコルエンジンは、プレイバックデータ構造内に決定を格納する。
図22に記述される一実施形態において、記録されたストリーム内の特定のパケットは、有意義なユーザの活動、この実施形態において、図22における黒いブロックによって表現されるマウスボタンの活動状態を示しているマウス入力を表現しているコンテンツを有する。記録されたストリーム内の他のパケットは、図22におけるストライプ状のブロックによって表現されるマウスボタンの不活動状態を示しているマウス入力を表現しているコンテンツを有する。プロトコルエンジンは、無意味な活動、例えば、マウスボタンの不活動状態を示しているマウス入力のみを含んでいる少なくとも一つのパケットを識別し、パケットのコンテンツが、認識できる方法で、レンダリングするべきではないという決定を、プレイバックデータ構造内に格納する。この決定を行なうことによって、プレイバックデータ構造に応答して、記録されたストリームのコンテンツをレンダリングするプロトコルエンジンは、再生成された記録されたセッションのユーザに関連する表示データのみを再生成し、その場合には、ポリシーが、関連性を定義しているか、またはプロトコルエンジンが、関連するコンテンツの定義を含んでいる。
図23を参照すると、流れ図は、記録されたセッションをレンダリングする有意義な活動のない期間を排除するためにとられるステップの一実施形態を描いている。第1の時間間隔が決定され、該第1の時間間隔は、記録されたセッション内のマーカー付けされたパケットと直前にマーカー付けされたパケットとの間に発生する(ステップ2302)。記録されたセッションは、表示データを表示している複数のパケットを含んでいる。第1の時間間隔が閾値を超えているという決定が行なわれる(ステップ2304)。記録されたセッション内のパケットのコンテンツが、マーカー付けされたパケットと直前にマーカー付けされたパケットとの間の、第1の時間間隔よりも短い第2の時間間隔を有してレンダリングされる(ステップ2306)。
一実施形態において、プロトコルエンジンは、決定を行なう。一部の実施形態において、プロトコルエンジンは、プレイバックデータ構造内に決定を格納する。一実施形態において、同じプロトコルエンジンが、プレイバックデータ構造に応答して、記録されたセッションをレンダリングする。別の実施形態において、決定を行なうプロトコルエンジンは、バックグラウンドプロトコルエンジンを含み、記録されたセッションをレンダリングするプロトコルエンジンは、フォアグラウンドプロトコルエンジンを含む。
一部の実施形態において、パケットに含まれている入力のタイプに応答して、パケットが、有意義なパケットとしてマーカー付けされた後で、プロトコルエンジンは、第1の時間間隔の決定(ステップ2302)と、第1の時間間隔が閾値を超えているかどうかの決定(ステップ2304)とを行なう。これらの実施形態のうちの一つにおいて、パケットに含まれている出力のタイプは、パケットをマーカー付けするという決定に影響を与える。一実施形態において、プロトコルエンジンは、有意義なものとしてマーカー付けされたパケットと直前の有意義なパケットの間の時間間隔を決定するか、または直前に有意義なパケットがない場合には、記録の開始を決定する。別の実施形態において、プロトコルエンジンは、マーカー付けされたパケットと直前のパケットとの間の第2の時間間隔を有する記録されたセッションのコンテンツをレンダリングする。該第2の時間間隔は、第1の時間間隔よりも短い時間間隔を含んでいる。別の実施形態において、プロトコルエンジンは、識付けされたパケットと続いてマーカー付けされるパケットとの間の第2の時間間隔を有する記録されたセッションのコンテンツをレンダリングする。該第2の時間間隔は、第1の時間間隔よりも短い時間間隔を含んでいる。
一実施形態において、プロトコルエンジンが、時間間隔が閾値を超えるということを決定(ステップ2304)するときには、プロトコルエンジンは、その時間間隔を認識できる時間間隔として分類する。再生成された記録されたセッションのユーザが、活動のない期間が経過しているということを理解し得る場合には、時間間隔は認識できる。一部の実施形態において、ポリシーは、閾値を決定する。他の実施形態において、プロトコルエンジンは、所定の閾値でハードコード化される。この実施形態において、プロトコルエンジンは、プレイバックデータ構造内に命令を格納し、最初の時間間隔の代わりに、2つの有意義なパケットとの間の短い時間間隔をレンダリングする。別の実施形態において、時間間隔が閾値を超えるということを決定するプロトコルエンジンはまた、記録されたセッションのコンテンツをレンダリングする。この実施形態において、プロトコルエンジンは、プレイバックデータ構造内で短い時間間隔をレンダリングする命令を格納しない。認識できると分類されていない時間間隔に関して、時間間隔は短くする必要はなく、最初の時間間隔は、2つの有意義なパケットとの間でレンダリングされる。
一部の実施形態において、記録されたストリーム内のパケットのコンテンツは、グラフィックの更新を表し、スクリーン領域に影響を与える。一実施形態において、グラフィックの更新は、点滅システムのトレイアイコン、タイトルバーまたはタスクバーエントリー、ウェブページまたはウェブアプリケーション内の点滅テキスト、時計表示、システムアニメーション、アプリケーションアニメーション、および株価表示器、ならびに定期的に更新される情報表示を含むが、それらには限定されない。一部の実施形態において、これらのようなグラフィックの更新は、記録されたストリームの再生成のユーザに対して無意味なものであると決定される。これらの実施形態のうちの一つにおいて、プロトコルエンジンは、この決定を含んでいる。これらの実施形態の別のものにおいて、ポリシーは、少なくとも一つのグラフィックの更新を無意味なものとして定義する。この実施形態において、アドミニストレータは、ポリシーを生成する。別の実施形態において、記録されたストリームの再生成のユーザはポリシーを生成する。
図24を参照すると、流れ図は、記録されたセッションをレンダリングする際に、グラフィックの更新を排除するためにとられるステップの一実施形態を描いている。簡潔に概略すると、グラフィックの更新が識別され(ステップ2402)、グラフィックの更新によって影響されるスクリーン領域が、決定される(ステップ2404)。影響を与えられるスクリーン領域の位置および状態の指標が格納され(ステップ2406)、スクリーン領域の状態に影響を与えている第2のグラフィックの更新が、識別される(ステップ2408)。次に、第2のグラフィックの更新が、第1のグラフィックの更新によって影響を与えられる領域を変化させるかどうかに応答して、レンダリングの宛先、およびレンダリングの時間間隔が、示される(ステップ2410およびステップ2412)。
一実施形態において、プロトコルエンジンは、図24に描かれたステップを実行する。この実施形態において、プロトコルエンジンは、記録されたセッション内のパケットを識別し、該記録されたセッションは、アプリケーションプログラムによって生成された表示データを表示し、該パケットは、第1のグラフィックの更新を含んでいる。プロトコルエンジンは、第1のグラフィックの更新によって影響を与えられたスクリーン領域を決定する。一実施形態において、グラフィックの更新は、スクリーンのその部分に表示されるデータを変更することによって、スクリーン領域に影響を与える。プロトコルエンジンは、第1のグラフィックの更新、およびスクリーン領域の位置の後に、スクリーン領域の状態の表示を格納する。一実施形態において、プロトコルエンジンは、更新されたスクリーン領域のコピーを格納する。別の実施形態において、プロトコルエンジンは、更新されたスクリーン領域のハッシュを格納する。
一実施形態において、プロトコルエンジンは、時間間隔内でスクリーン領域に影響を与える第2のグラフィックの更新を識別する。一部の実施形態において、ポリシーは、時間間隔の長さを決定する。これらの実施形態のうちの一つにおいて、ポリシーは、アプリケーションおよびオペレーティングシステムによって使用される人間スケールの循環期間のほぼ上限の時間間隔を決定する。一実施形態において、スクリーンの領域が循環表示を通過するときには、ユーザによって見られるように設計されている期間(例えば、一秒のほんの数分の一から最大で数秒)で、表示は人間スケールの循環期間を含んでいる。一部の実施形態において、プロトコルエンジンは、時間間隔の長さの定義を含んでいる。
プロトコルエンジンが、第2のグラフィックの更新が第1のグラフィックの更新によって、影響を与えられているスクリーン領域に、影響を与えていることを識別する実施形態において、プロトコルエンジンは、第2のグラフィックの更新の後のスクリーン領域の状態が、第1のグラフィックの更新の後のスクリーン領域の状態から変化するかどうかを決定する。スクリーン領域が、第2のグラフィックの更新の後に変化しない場合には、第2のグラフィックの更新は、再生成された記録されたセッションにおいてレンダリングする必要がない。この実施形態におけるスクリーングラフィックの更新は、レンダリングする必要がない。なぜならば、プロトコルエンジンは、グラフィックの更新が、人間スケールの速度でコマンドを引き出す循環を実行するので、再生成された記録されたセッションのユーザにとって観察可能な(obsevable)更新を行うが、グラフィックの更新は、ユーザにとって無意味な情報を伝えることを決定するからである。一部の実施形態において、グラフィックの更新は、図形、カレット点滅、点滅するタスクバーのアイコン、ネットワーク活動インジケータ、またはスクロールテキストを含むが、それらには限定されないものによって、スクリーン領域に影響を与える。一部の実施形態において、ポリシーは、そのタイプのグラフィックの更新を用いて、スクリーン領域に影響を与えることが、有意義な活動を構成せず、ユーザに対して、記録されたセッションの再生成においてレンダリングするべきではないということを決定する。他の実施形態において、プロトコルエンジンは、この決定を含んでいる。
一実施形態において、スクリーン領域に影響を与える第2のグラフィックの更新を含んでいる第2のパケットをレンダリングする宛先の指標は、第2のグラフィック更新の後に、スクリーン領域が変化するかどうかに応答して、プレイバックデータ構造内に格納される。別の実施形態において、スクリーン領域に影響を与える第2のグラフィックの更新を含んでいる第2のパケットと関連する、レンダリングする時間間隔の指標は、第2のグラフィックの更新の後のスクリーン領域の状態が、第1のグラフィックの更新の後のスクリーン領域の状態から変化するかどうかに応答して、プレイバックデータ構造内に格納される。
図25は、第2のグラフィックの更新の後のスクリーン領域の状態が、第1のグラフィックの更新の後のスクリーン領域の状態から変化するかどうかに応答してプレイバックデータ構造内に格納される指標に応答して、再生成された記録されたセッションをレンダリングする一実施形態を描いている。一実施形態において、第1のグラフィックの更新によって影響を与えられるスクリーン領域は、第2のグラフィックの更新の後に変化しない。この実施形態において、指標は、第2のグラフィックの更新を認識できるようにレンダリングしないように、プレイバックデータ構造内に格納される。一実施形態において、第2のグラフィックの更新を認識できるようにレンダリングしないことは、画面上ではなく、画面外において第2のグラフィックの更新をレンダリングすることを含んでいる。一部の実施形態において、第2のグラフィックの更新を認識できるようにレンダリングしないことは、第2のグラフィックの更新を画面外のバッファにレンダリングすることを含んでいる。一実施形態において、第2のグラフィックの更新を認識できるようにレンダリングしないことは、第2のグラフィックの更新をレンダリングしないことを含んでいる。一部の実施形態において、第2のグラフィックの更新を認識できるようにレンダリングしない決定は、グラフィックの更新がレンダリングされない認識できる指標をレンダリングすることを含んでいる。これらの実施形態のうちの一つにおいて、再生成された記録されたセッションのユーザは、第2のグラフィックの更新が認識できるようにレンダリングすることを要求し得る。
図25は、第2のグラフィックの更新の後のスクリーン領域の状態が、第1のグラフィックの更新の後のスクリーン領域の状態から変化しないということを決定し、かつ循環の更新の検出に応答して、第2のグラフィックの更新をレンダリングしないことを決定することによって、循環の更新が検出される実施形態を描いている。第2のグラフィックの更新によって影響を与えられるスクリーン領域の状態が、第1のグラフィックの更新の後のスクリーン領域の状態から変化する一実施形態において、パケットのコンテンツを、認識できる方法で、バッファにレンダリングする決定が行なわれる。
一部の実施形態において、複数のパケットのコンテンツが、グラフィックの更新を表示する。これらの実施形態のうちの一つにおいて、認識できる方法でグラフィックの更新をレンダリングする決定は、スクリーン領域上の二つよりも多いグラフィックの更新の効果に応答して行なわれる。一実施形態において、グラフィックの更新をレンダリングする宛先の決定は、識別された複数のパケットのうちの各パケットのコンテンツによって表示されるグラフィックの更新に応答する。
一部の実施形態において、記録されたストリーム内のパケットのコンテンツは、相互作用シーケンスを表示する。一実施形態において、相互作用シーケンスは、ログオンシーケンス、ログオフシーケンス、または認証の入力を含むが、それらには限定されない。一部の実施形態において、これらのような相互作用シーケンスは、記録されたストリームの再生成のユーザにとって無意味なものであるとして決定される。これらの実施形態のうちの一つにおいて、プロトコルエンジンは、この決定を含んでいる。これらの実施形態のうちの別の実施形態において、ポリシーは、少なくとも一つの相互作用を無意味であるとして定義する。この実施形態において、アドミニストレータは、ポリシーを生成する。別の実施形態において、記録されたストリームの再生成のユーザは、ポリシーを生成する。
図26を参照すると、流れ図は、記録されたセッションをレンダリングする相互作用シーケンスを排除するためにとられるステップの一実施形態を描いている。少なくとも1つのパケットの相互作用シーケンスの開始が、ポリシーに応答して識別される(ステップ2602)。プレイバックデータ構造において、相互作用シーケンスがバッファにレンダリングするべき指標が存在する(ステップ2604)。少なくとも一つのパケットの相互作用シーケンスの終了が識別される(ステップ2606)。相互作用シーケンスの開始が識別されるのに先行するパケットと、相互作用シーケンスの終了が識別されるのに続くパケットとの間の第1の時間間隔が、識別される(ステップ2608)。プレイバックデータ構造は、第1の時間間隔よりも短い第2の時間間隔をレンダリングする指標を含んでいる(ステップ2610)。
一実施形態において、プロトコルエンジンは、相互作用シーケンスを排除する識別および表示を行なう。相互作用シーケンスの開始の識別が、行なわれる(ステップ2602)。一実施形態において、相互作用シーケンスの開始は、視覚的なマーカーを識別することによって識別される。一実施形態において、視覚的なマーカーは、全てのセッションに対して同じ方法で表示される認証ウインドウを含んでいる。別の実施形態において、視覚的なマーカーは、ブランクスクリーン、および次に、デスクトップバックグラウンドによる認証ウインドウの移動を含んでいる。一実施形態において、視覚的なマーカーは、識別可能なアイコンの表示を含んでいる。
一部の実施形態において、相互作用シーケンスの開始は、相互作用シーケンスの開始時間を決定することによって識別される。これらの実施形態のうちの一つにおいて、コンポーネントが、相互作用シーケンスにおけるイベントの開始時間を検出する。これらの実施形態の別の実施形態において、コンポーネントは、ログオンシーケンスの開始時間を検出する。これらの実施形態のさらに他の実施形態において、コンポーネントは、ログオフシーケンスの開始時間を検出する。一実施形態において、相互作用シーケンスの開始の識別は、入力フォーカスを用いてウインドウを識別することに応答する。
プレイバックデータ構造において、相互作用シーケンスがバッファ内でレンダリングするべきであるという指示が行なわれる(ステップ2604)。識別された相互作用シーケンスが、認識できるようにレンダリングするべきではない実施形態において、相互作用シーケンスは、バッファにレンダリングされる。相互作用シーケンスをバッファにレンダリングすることは、相互作用シーケンスがレンダリングのユーザにとって認識できなくなることとなる。ポリシーまたはユーザが、相互作用シーケンスを無意味であるとして分類する実施形態に関して、このレンダリングは、無意味な相互作用シーケンスを排除することとなる。
相互作用シーケンスの終了の識別がまた行なわれる(ステップ2606)。一部の実施形態において、相互作用シーケンスの終了は、視覚的なマーカーを識別することによって識別される。他の実施形態において、相互作用シーケンスの終了は、相互作用シーケンスの終了時間を決定することによって識別される。これらの実施形態のうちの一つにおいて、コンポーネントは、相互作用シーケンスにおけるイベントの終了時間を検出する。これらの実施形態のうちの別の実施形態において、コンポーネントは、ログオンシーケンスの終了時間を検出する。これらの実施形態のうちのさらに別の実施形態において、コンポーネントは、ログオフシーケンスの終了時間を検出する。別の実施形態において、相互作用シーケンスの終了を識別することは、入力フォーカスを用いたウインドウを識別することに応答する。
一部の実施形態において、相互作用シーケンスは、アプリケーションの使用を含んでいる。これらの実施形態のうちの一つにおいて、ポリシーは、認識できる方法においてレンダリングするべきではないアプリケーションの使用を含んでいる相互作用シーケンスを識別する。一実施形態において、そのようなアプリケーションは、文書処理ドキュメントを含むが、それらには限定されない。
これらの実施形態のうちの一つにおいて、相互作用シーケンスの開始は、入力フォーカスを有するアプリケーションを識別することによって識別される。パケットのコンテンツがフォーカスを有するウインドウを表示するときには、ウインドウを作成した処理に責任のあるアプリケーションに関して、決定が行なわれる。一実施形態において、フォーカスを有するウインドウを表示しているパケットのコンテンツは、入力フォーカスにおける変化を示しているウインドウ通知メッセージを含む。責任のあるアプリケーションが、認識できるようにレンダリングするべきではない相互作用シーケンスの開始を識別する場合には、指標は、プレイバックデータ構造に格納され、相互作用シーケンスをバッファにレンダリングする。相互作用シーケンスの終了が、相互作用シーケンスのアプリケーションと関連しない処理によって支配されるウインドウによる、フォーカスの獲得を識別することによって識別される。
一実施形態において、第1の時間間隔は、相互作用シーケンスと関連付けられる。相互作用シーケンス自体がレンダリングしない実施形態において、相互作用シーケンスと関連する時間間隔を認識できるようにレンダリングすることは、レンダリングのユーザにとって認識できる期間となり、該レンダリングにおいて、表示データはレンダリングせず、ユーザは、相互作用シーケンスの後のパケットのコンテンツをレンダリングする前の時間間隔を通して待機する。一実施形態は、最初の時間間隔の代わりに、短い時間間隔をレンダリングすることによって、相互作用シーケンスと関連する時間間隔を排除する。この実施形態において、相互作用シーケンスの開始の識別に先行するパケットと、相互作用シーケンスの終了の識別に続くパケットとの間の第1の時間間隔が、識別される(ステップ2608)。プレイバックデータ構造は、第1の時間間隔よりも短い第2の時間間隔をレンダリングする指標を含んでいる(ステップ2610)。
一部の実施形態において、プロトコルエンジンは、記録されたセッション内のパケットのコンテンツをレンダリングし、ユーザに記録されたセッションの再生成を提供する。これらの実施形態のうちの一部において、プロトコルエンジンは、少なくとも一つのパケットのコンテンツをレンダリングする間の時間間隔を自動的に変化させ、状況依存(context−sensitive)のタイムワーププレイバックとなる。これらの実施形態において、レンダリングは、ユーザに表示される表示データを理解するユーザの能力を見積もる。一実施形態において、パケットのコンテンツによって表示される表示データが、ポリシーによって定義されるように、複雑さ、または重要性の程度が増加したことを、プロトコルエンジンが決定するときには、パケットのコンテンツをレンダリングする間の時間間隔が増加する。別の実施形態において、パケットのコンテンツによって表示される表示データが、ポリシーによって定義されるように、複雑さ、または重要性の程度が減少したことを、プロトコルエンジンが決定するときには、パケットのコンテンツをレンダリングする間の時間間隔が減少する。これらの実施形態において、プロトコルエンジンは、表示データを理解するユーザの能力を見積もり、コンテンツをゆっくりとレンダリングし、ユーザにレンダリングを理解する時間を与えるか、またはユーザが理解する時間をあまり必要としないときには、コンテンツを速くレンダリングするかのいずれかである。
図27を参照すると、流れ図は、記録されたコンピュータセッションをレンダリングする際の自動的なタイムワーププレイバックにおいてとられるステップの一実施形態を描いている。プロトコルエンジンは、記録されたセッションを受信し(ステップ2702)、記録されたセッションは、複数のパケットを含み、表示データを表示し、プロトコルエンジンは、記録されたセッション内の複数のパケットのうちの少なくとも一部によって表現される複雑さの程度を決定する(ステップ2704)。プロトコルエンジンは、記録されたセッション内の複数のパケットのうちの少なくとも一部の間の時間間隔を識別し(ステップ2706)、記録されたセッション内の複数のパケットのうちの少なくとも一部によって表示される複雑さの程度に応答して、時間間隔を改変する(ステップ2708)。プロトコルエンジンは、プレイバックデータ構造内に、改変された時間間隔を格納し(ステップ2710)、記録されたデータストリームは、プレイバックデータ構造に応答してレンダリングされる(ステップ2712)。
一部の実施形態において、複雑さの程度を決定し、時間間隔を識別し、時間間隔を改変し、改変を格納するプロトコルエンジンは、バックグラウンドプロトコルエンジンである。これらの実施形態のうちの一つにおいて、バックグラウンドプロトコルエンジンはまた、記録されたストリームをレンダリングする。これらの実施形態のうちの別の実施形態において、フォアグラウンドプロトコルエンジンは、プレイバックデータ構造に応答して、記録されたストリームをレンダリングする。一部の実施形態において、バックグラウンドプロトコルエンジンおよびフォアグラウンドプロトコルエンジンは、同じデバイスに存在する。他の実施形態において、バックグラウンドプロトコルエンジンおよびフォアグラウンドプロトコルエンジンは、別のデバイスに存在する。
一部の実施形態において、プロトコルエンジンは、記録されたセッション内の複数のパケットの少なくとも一部によって表示される複雑さの程度を決定する(ステップ2704)。これらの実施形態のうちの一部において、プロトコルエンジンは、キーボード入力における適切なシーケンスのタイピングを識別することによって、複雑さの程度を決定する。一実施形態において、プロトコルエンジンは、キーボード入力における適切なシーケンスのタイピングを識別するために含まれるキーの少なくとも一つのタイピングを調べる。別の実施形態において、プロトコルエンジンは、キーボード入力における適切なシーケンスのタイプの発見的な見積もりを完成させるためにレンダリングされる少なくとも一つのグリフのシーケンスを検査する。
これらの実施形態のうちの一部において、プロトコルエンジンは、キーの特徴によって決定されたキーの分類を格納する。キーの特徴は、プリント可能であるか、またはプリント可能ではない文字、白いスペース、ナビゲーションキー、またはファンクションキーを含むが、それらには限定されず、それらの特徴の組み合わせを含む。一実施形態において、プロトコルエンジンは、プリント可能である文字と予備のナビゲーションキーとを含んでいる入力セクションが、通常のタイピングを構成し、ほとんど不可視であるキーを用いるセクションは、通常のタイピングを構成しないということを決定する。一実施形態において、プロトコルエンジンは、識別された白いスペースの量に応答して、複雑さの程度を決定する。この実施形態において、プロトコルエンジンは、白いスペースキーが、一般的なタイピングのパターンにおいて、平均して、大体5〜8文字ごとに現れることを示している文書処理の定義を含んでいる。
一実施形態において、プロトコルエンジンは、プリント可能ではない文字の形状を使用して、複雑さの程度を決定する。別の実施形態において、プロトコルエンジンは、キーストロークシーケンスにアクセスし、適宜、近接して現れる白ではないスペースのプリント可能である文字のシーケンスを識別する。この実施形態において、プロトコルエンジンは、キーストロークシーケンスを辞書と比較し、妥当な単語を識別し、妥当ではない単語に対する妥当な単語を、ユーザが理解する能力に対する複雑さの程度を決定するキャパシティを含む。
別の実施形態において、プロトコルエンジンは、パケットのコンテンツが、グリフをレンダリングするコマンドを含んでいるということを決定する。この実施形態において、プロトコルエンジンは、グリフを使用し、表示データがユーザのタイピング活動を表すかどうかを決定する。この実施形態において、グリフのレンダリング率が、わずかな遅れを有するキーボード入力率を見積もる場合には、キーストロークが直接的にグリフとなる可能性が高く、従ってユーザがタイピングしている可能性が極めて高い。一実施形態において、プロトコルエンジンは、生成されたグリフを用いて入力されたキーに相関する。別の実施形態において、プロトコルエンジンは、レンダリングされたグリフの空間的なシーケンス(左から右、右から左など)を決定し、ユーザがタイピングしているということを決定する。一実施形態において、プロトコルエンジンは、複数のパケットのコンテンツを分析し、コンテンツによって表されたパターンおよび活動を識別した結果に応答して、複雑さの程度の決定を行なう。
他の実施形態において、プロトコルエンジンは、マウス入力のタイプの識別に応答して、複雑さの程度の決定を行なう。一実施形態において、特に、クリックがタイピングシーケンスに続く場合には、プロトコルエンジンは、マウスのクリックを表しているマウス入力が、理解するために、ゆっくりとしたレンダリング率を必要とし得る活動をもたらすということを決定する。別の実施形態において、プロトコルエンジンは、マウスのクリックを表さないマウス入力が、ユーザが表示データを理解する能力に影響を与えず、従って複雑さの程度に影響を与えないということを決定する。
他の実施形態において、プロトコルエンジンは、グラフィックの更新の複雑さの発見的な見積もりを識別することに応答して、複雑さの程度の決定を行なう。一実施形態において、限定されるものではないが、更新される領域のサイズ、グラフィックコマンドによって変更される領域の面積サイズ、個々の領域に対する更新の頻度の履歴、循環グラフィックコマンド、グラフィックコマンドの数、グラフィックコマンドの頻度、コンテンツがグラフィックコマンドを含んでいる隣接するパケットの間の時間間隔、またはグラフィックの更新のタイプに基づいて、プロトコルエンジンは、グラフィックの更新の複雑さの発見的な見積もりを識別する。プロトコルエンジンが、グラフィックの更新に関する複雑さの程度が低いと識別する実施形態において、プロトコルエンジンは、グラフィックの更新を含んでいるパケットによって表される複雑さの程度が低いと決定する。プロトコルエンジンが、グラフィックの更新に関して複雑さの程度が高いと識別する実施形態において、プロトコルエンジンは、グラフィックの更新を含んでいるパケットによって表される複雑さの程度が高いと決定する。
一実施形態において、プロトコルエンジンは、記録されたセッション内の複数のパケットのうちの少なくとも一部の間の時間間隔を識別する(ステップ2706)。この実施形態において、プロトコルエンジンは、複雑さの程度の決定に応答して、時間間隔を改変する(ステップ2708)。記録されたセッション内の複数のパケットのうちの少なくとも一部が、程度の高い複雑さと関連する表示データを表しているコンテンツを有する実施形態において、プロトコルエンジンは、パケットの間の時間間隔を増加させ、ユーザがレンダリング時間の増加によりレンダリングされた表示データを理解することを可能にする。記録されたセッション内の複数のパケットのうちの少なくとも一部が、程度の低い複雑さと関連する表示データを表しているコンテンツを有する別の実施形態において、プロトコルエンジンは、ユーザがレンダリングされた表示データを理解するために必要とする時間量が減少したことを反映するように、パケットの間の時間間隔を減少させる。一実施形態において、ユーザは、プロトコルエンジンによってレンダリングされた時間量とは異なる、レンダリングされたパケットのコンテンツの間の時間量を必要とする。この実施形態において、ユーザは、レンダリングされた表示データをユーザが理解するために必要とする時間量を反映するように、時間間隔を改変する。一部の実施形態において、プロトコルエンジンはまた、複数のパケットのうちの少なくとも一部と、複数のパケットのうちの他のパケットとの間の時間間隔を識別し、パケットのそれらのセットの間で識別された時間間隔を改変する。
一部の実施形態において、プロトコルエンジンは、記録されたセッション内のパケットと関連する第1のマーカーを識別する。一実施形態において、パケットはマーカーを含む。別の実施形態において、記録されたセッションはマーカーを含む。
一実施形態において、表示データのレンダリングのユーザは、マーカーを定義する。別の実施形態において、プロトコルエンジンは、マーカーを定義する。プロトコルエンジンがマーカーを識別する実施形態において、プロトコルエンジンは、第1のマーカーに応答して、時間間隔を改変する。一実施形態において、プロトコルエンジンは、時間間隔を増加させ、表示データのレンダリングのユーザに、第1のマーカーと関連するパケットのコンテンツを理解する追加の時間を提供する。別の実施形態において、プロトコルエンジンは、第2のパケット内の第2のマーカーを識別する。この実施形態において、プロトコルエンジンは、第1のマーカーと第2のマーカーとの間の距離に応答して、時間間隔を改変する。この実施形態において、プロトコルエンジンは、マーカー付けされたパケットのコンテンツによって表される表示データの理解のために時間を増加させ、マーカー付けされていないパケットのコンテンツによって表されるデータの理解のために時間を減少させる。一実施形態において、ユーザは、ユーザにとって関心のある表示データのためにマーカーを定義し、プロトコルエンジンは、ユーザにとって関心ある表示データのための追加の時間をレンダリングし、マーカーによって決定されるように、ユーザにとって関心のない表示データのためのレンダリング時間減少させる。
一実施形態において、プロトコルエンジンは、記録されたセッション内の複数のパケットのうちの少なくとも一部における第1のマーカーを識別し、該マーカーは、記録されたセッション内の複数のパケットのうちの少なくとも一部における最初のパケットを指している。プロトコルエンジンは、第1のマーカーに応答して時間間隔を改変する。プロトコルエンジンは、記録されたセッション内の複数のパケットのうちの少なくとも一部における第2のパケットにおける第2のマーカーを識別し、該第2のマーカーは、記録されたセッション内の複数のパケットのうちの少なくとも一部における最後のパケットを指し、第1のマーカーと第2のマーカーとの間の時間間隔に応答して、時間間隔を改変する。
一実施形態において、プロトコルエンジンは、プレイバックデータ構造内に改変された時間間隔を格納し(ステップ2710)、記録されたストリームは、プレイバックデータ構造のコンテンツに応答してレンダリングされる(ステップ2712)。一実施形態において、プロトコルエンジンはまた、改変された時間間隔に関するプレイバックデータ構造の命令に応答して、記録されたストリームをレンダリングする。別の実施形態において、別個のフォアグラウンドプロトコルエンジンが、記録されたストリームをレンダリングする。
一部の実施形態において、アプリケーションを用いた、記録された相互作用は、ユーザが、レンダリングされた表示データの理解のために時間を増加させるために、レンダリングするための時間を増加させることを必要とするという決定が行なわれる。これらの実施形態のうちの一部において、時間を増加させることを必要とするアプリケーションは、時間を増加させることを必要としないアプリケーションよりも、重要なアプリケーションを含むという決定が行なわれる。これらの実施形態のうちの一つにおいて、ユーザが決定を行なう。これらの実施形態のうちの別の実施形態において、ポリシーが決定を行なう。これらの実施形態のうちのさらに別の実施形態において、プロトコルエンジンは、時間の増加を必要とするアプリケーションの定義を含む。
図28を参照すると、流れ図は、記録されたコンピュータセッション内の識別されたアプリケーションに応答して、自動的なタイムワーププレイバックするためにとられるステップの一実施形態を描いている。複数のパケットを含み、表示データを表している記録されたセッションが受信される(ステップ2802)。フォーカスを有するウインドウを表しているコンテンツを有する第1のパケットが、識別され、該ウインドウは、アプリケーションを指している(ステップ2804)。第1のパケットのコンテンツのレンダリングに先立ち、コンテンツがレンダリングする第2のパケットと、第1のパケットのコンテンツのレンダリングの後に、コンテンツがレンダリングする第3のパケットとの間で、時間間隔は識別される(ステップ2806)。識別された時間間隔は、示されたアプリケーションに応答して改変される(ステップ2808)。記録されたストリーム内の少なくとも一つのパケットは、改変に応答してレンダリングされる(ステップ2810)。
一実施形態において、プロトコルエンジンは、記録されたセッションを受信する(ステップ2802)。この実施形態において、プロトコルエンジンはまた、フォーカスを有するウインドウを表しているコンテンツを有する第1のパケットを識別し、該ウインドウはアプリケーションを示している(ステップ2804)。一実施形態において、フォーカスを有するウインドウを表しているパケットのコンテンツは、入力フォーカスの変更を示しているウインドウ通知メッセージを含んでいる。一実施形態において、第1のパケットのコンテンツのレンダリングに先立ち、コンテンツがレンダリングする第2のパケットと、第1のパケットのコンテンツのレンダリングの後に、コンテンツがレンダリングする第3のパケットとの間で、時間間隔は識別される(ステップ2806)。この実施形態において、フォーカスを有するアプリケーションウインドウを表しているコンテンツをレンダリングするのに先立ち、コンテンツが、レンダリングするパケットと、コンテンツが、フォーカスを有するアプリケーションウインドウを表しているパケットと、コンテンツが、もはやフォーカスを有していないアプリケーションウインドウを表しているパケットとを、プロトコルエンジンは識別する。
一部の実施形態において、プロトコルエンジンは、フォーカスを有するアプリケーションに先立つ時間間隔を改変する。他の実施形態において、プロトコルエンジンは、フォーカスを有するアプリケーションに続く時間間隔を改変する。一実施形態において、プロトコルエンジンは時間間隔を決定し、その時間間隔において、アプリケーションウインドウはフォーカスを有し、アプリケーションのタイプに応答して、その時間間隔を改変する。一実施形態において、プロトコルエンジンは、識別された時間間隔を増加させる。この実施形態において、プロトコルエンジンは、レンダリングのユーザのアプリケーションをレビューする時間の量を増加させる。別の実施形態において、プロトコルエンジンは、識別された時間間隔を減少させる。この実施形態において、プロトコルエンジンは、レンダリングのユーザのアプリケーションをレビューする時間の量を減少させ、アプリケーションにおける関心の量が減少したことを反映する。
一実施形態において、プロトコルエンジンは、改変に応答して、記録されたストリーム内の少なくとも一つのパケットをレンダリングする。一実施形態において、プロトコルエンジンは、記録されたストリーム内の少なくとも一つのパケットのコンテンツを、バッファにレンダリングする。一実施形態において、バッファにレンダリングすることは、パケットのコンテンツを認識できる方法ではレンダリングしない。別の実施形態において、プロトコルエンジンは、記録されたストリーム内の少なくとも一つのパケットのコンテンツをバッファに、認識できる方法でレンダリングする。一部の実施形態において、プロトコルエンジンは、プレイバックデータ構造内の改変された時間間隔を示し、別個のプロトコルエンジンは、プレイバックデータ構造内に格納される情報に応答して、記録されたセッションをレンダリングする。
図29を参照すると、ブロック図は、記録されたコンピュータセッションをレンダリングする際の自動的なタイムワーププレイバックに関するシステムの一実施形態を描き、プロトコルエンジン2902、記録されたストリーム2910、プレイバックデータ構造2904、およびディスプレイ2908を含んでいる。簡潔に概略すると、プロトコルエンジン2902は、記録されたストリーム2910を受信することに応答して、プレイバックデータ構造2904を生成し、該記録されたストリーム2910は、複数のパケットを含み、該プロトコルエンジン2902は、生成されたプレイバックデータ構造2904に応答して、記録されたデータストリーム内の少なくとも一つのパケットをレンダリングする。
一実施形態において、プロトコルエンジン2902は、バックグラウンドプロトコルエンジンとフォアグラウンドプロトコルエンジンとを含む。この実施形態において、バックグラウンドプロトコルエンジンは、記録されたストリーム2910を受信し、プレイバックデータ構造2904を生成する。この実施形態において、フォアグラウンドプロトコルエンジンは、記録されたストリーム2910を受信し、生成されたプレイバックデータ構造2904に応答して、記録されたストリーム内の少なくとも一つのパケットをレンダリングする。一実施形態において、バックグラウンドプロトコルエンジンとフォアグラウンドプロトコルエンジンとは、同じデバイスに存在し得る。別の実施形態において、バックグラウンドプロトコルエンジンは、第1のデバイスに存在し、フォアグラウンドプロトコルエンジンは、第2のデバイスに存在する。
別の実施形態において、システムは、プレイバックデータ構造2904を生成し、生成されたプレイバックデータ構造2904に応答して、記録されたストリーム内の少なくとも一つのパケットをレンダリングする単一のプロトコルエンジン2902を備える。
一実施形態において、プロトコルエンジン2902は、記録されたセッションをレンダリングするために、少なくとも一つの命令をプレイバックデータ構造内に格納する。一実施形態において、命令は、記録されたセッション内のパケットのコンテンツをレンダリングするための識別された時間間隔の改変を含む。別の実施形態において、プロトコルエンジンは、プレイバックデータ構造内にメタデータをプレイバックデータ構造内に格納する。この実施形態において、メタデータは、パケットのコンテンツをレンダリングするための優先順位の高い命令を含む。
一実施形態において、プロトコルエンジンは、プレイバックデータ構造のコンテンツに応答して、記録されたセッション内の少なくとも一つのパケットのコンテンツをレンダリングする。一実施形態において、プロトコルエンジンは、記録されたセッション内の少なくとも一つのパケットを、認識できる方法でバッファにレンダリングする。別の実施形態において、プロトコルエンジンは、記録されたセッション内の少なくとも一つのパケットをバッファにレンダリングする。
一部の実施形態において、パケットのレンダリングされたコンテンツは、最初の表示データの再生成の簡素化を提供する。他の実施形態において、パケットのレンダリングされたコンテンツは、表示データのカスタム化されたバージョンを提供する。一実施形態において、認識できる方法でパケットのコンテンツをレンダリングする決定は、ポリシーまたはユーザの要求に応答する。これらの実施形態は、記録されたセッションのレンダリングに対する制御を、ユーザに提供する。
本発明は、一つ以上の工業製品に組み込まれる一つ以上のコンピュータで読取可能であるプログラムとして提供され得る。工業製品は、フロッピー(登録商標)ディスク、ハードディスク、コンパクトディスク、デジタル多目的ディスク、フラッシュメモリカード、PROM、RAM、ROM、または磁気テープであり得る。概して、コンピュータで読取可能なプログラムは、任意のプログラミング言語で実装され得る。使用され得る言語の一部の例は、C、C++、C#またはJAVA(登録商標)を含む。ソフトウェアプログラムは、オブジェクトコードとして、一つ以上の工業製品に格納され得る。
本発明は、特定の好適な実施形態を参照して示され、記述されてきたが、形状および詳細に関する様々な変更が、特許請求の範囲によって定義されるように、本発明の意図および範囲を逸脱することなく行われ得ることを当業者は理解するべきである。
図1Aは、本発明の一実施形態を実施するために最適なクライアントサーバシステムを描写するブロック図である。 図1Bは、本発明と関連して有用なコンピュータの実施形態を描写するブロック図である。 図1Cは、本発明と関連して有用なコンピュータの実施形態を描写するブロック図である。 図2は、本発明が行われ得る、ネットワーク200の実施形態を描写するブロック図である。 図3は、ネットワーク200上のレコーダに対する配置の代替的な実施形態を描写するブロック図である。 図4は、ネットワーク200上のレコーダに対する配置の代替的な実施形態を描写するブロック図である。 図5は、プロトコルデータストリームによって表されたディスプレイデータを再生成するシステムの一実施形態を描写するブロック図である。 図6は、サーバが生成したデータの記録およびプレイバックの方法を描写する流れ図である。 図7は、プロトコルデータストリームによって表されるディスプレイデータを記録するシステムにおけるレコーダをさらに詳細に描写するブロック図である。 図8は、プロトコルデータストリームの記録の一実施形態を描写する。 図9は、ステートフル遠隔提示プロトコルのプレイバックの間の、リアルタイムシーキングの方法において取られるステップの一実施形態を描写する、流れ図である。 図10は、遠隔提示プロトコルのプレイバックの間に、リアルタイムシーキングを可能にするステートスナップショットを生成するために取られるステップの一実施形態を描写する、流れ図である。 図11は、ステートフル遠隔提示プロトコルのプレイバックの間のリアルタイムシーキングのシステムを描写するブロック図である。 図12は、ステートスナップショットの適応性のある生成のために取られるステップの一実施形態を描写する流れ図である。 図13は、一実施形態の、三種類のシーク確率分布を描写するダイアグラムである。 図14は、決定されたシーク確立分布に応答してステートスナップショットを生成する一実施形態を描写するダイアグラムである。 図15は、プロトコルデータストリームの提示の、ユーザに対する使用パターンの一実施形態を描写する。 図16は、ステートスナップショットの適応的な生成のためのシステムの一実施形態を描写するブロック図であって、バックグラウンドプロトコルエンジン、フォアグラウンドプロトコルエンジン、プロトコルデータストリーム、活動プロファイルおよびステートスナップショットを含む図である。 図17は、記録されたセッションをレンダリングするシステムの一実施形態を描写するブロック図である。 図18は、記録されたコンピュータセッションのプレイバックに対するプレイバック命令を生成するために取られるステップの一実施形態を描写する流れ図である。 図19は、記録されたコンピュータセッションのプレイバックの方法において取られるステップの一実施形態を描写する流れ図である。 図20は、記録されたセッションをレンダリングするためのプレイバック命令を生成するために取られるステップの一実施形態を描写する流れ図である。 図21は、再生成された記録されたストリームの一実施形態を描写し、そのコンテンツは、プレイバックデータ構造に応答してレンダリングされる。 図22は、意味のあるユーザ活動を表すコンテンツを有するストリームを記録する際の、特定のパケットの一実施形態を描写し、この実施形態において、マウス入力は、アクティブマウスボタンの状態を示す。 図23は、記録されたセッションをレンダリングする際に意味のない活動を伴う期間を消去するために取られるステップの一実施形態を描写する流れ図である。 図24は、記録されたセッションをレンダリングする際にグラフィックの更新を消去するために取られるステップの一実施形態を描写する流れ図である。 図25は、再生成された記録されたセッションのレンダリングの一実施形態を描写し、第2のグラフィックの更新の後のスクリーン領域の状態が、第1のグラフィックの更新の後のスクリーン領域の状態と変わるかどうかに応答する。 図26は、記録されたセッションをレンダリングする際に相互作用シーケンスを消去するために取られるステップの一実施形態を描写する流れ図である。 図27は、記録されたコンピュータセッションをレンダリングする際に、自動タイムワーププレイバックにおいて取られるステップの一実施形態を描写する流れ図である。 図28は、記録されたコンピュータセッションをレンダリングする際の識別されたアプリケーションに応答する、自動タイムワーププレイバックに対して取られるステップの一実施形態を描写する流れ図である。 図29は、記録されたコンピュータセッションをレンダリングする際の、自動タイムワーププレイバックのシステムの一実施形態を描写するブロック図である。

Claims (73)

  1. 記録されたコンピュータセッションのプレイバックのためのプレイバック命令を生成する方法であって、該方法は、
    (a)第1のデバイス上で実行するプロトコルエンジンによって、記録されたストリームを受信するステップであって、該記録されたストリームは、第2のデバイス上で実行されるアプリケーションプログラムによって生成されるディスプレイデータを表す複数のパケットを含むステップと、
    (b)該プロトコルエンジンによって、該記録されたストリームにおけるパケットに対して、人間が感知することが可能な態様で該パケットのコンテンツをレンダリングすることを決定するステップと、
    (c)該プロトコルエンジンによって、プレイバックデータ構造における該決定を格納するステップと
    を包含する、方法。
  2. 前記ステップ(b)は、入力フォーカスを有するアプリケーションプログラムの指示に応答して、少なくとも一つのパケットをレンダリングすることを決定することをさらに包含する、請求項1に記載の方法。
  3. 前記ステップ(b)は、前記少なくとも一つのパケットに格納されたユーザ入力のタイプの評価に応答して、該少なくとも一つのパケットをレンダリングすることを決定することをさらに包含する、請求項1に記載の方法。
  4. 前記ステップ(b)は、前記少なくとも一つのパケットによって格納されたグラフィックの更新のタイプの評価に応答して、該少なくとも一つのパケットをレンダリングすることを決定することをさらに包含する、請求項1に記載の方法。
  5. 前記ステップ(b)は、前記少なくとも一つのパケットによって格納された相互作用シーケンスのタイプの評価に応答して、該少なくとも一つのパケットをレンダリングすることを決定することをさらに包含する、請求項1に記載の方法。
  6. 記録されたコンピュータセッションのプレイバックの方法であって、該方法は、
    (a)第1のデバイス上で実行するバックグラウンドプロトコルエンジンによって、記録されたストリームを受信するステップであって、該記録されたストリームは、第2のデバイス上で実行するアプリケーションプログラムによって生成されたディスプレイデータを表す複数のパケットを含むステップと、
    (b)該バックグラウンドプロトコルエンジンによって、該記録されたストリームにおける少なくとも一つのパケットに対して、人間が感知することが可能な態様で該パケットをレンダリングすることを決定するステップと、
    (c)該バックグラウンドプロトコルエンジンによって、プレイバックデータ構造における決定を格納するステップと、
    (d)フォアグラウンドプロトコルエンジンによって、該記録されたストリームから少なくとも一つのパケットを検索するステップと、
    (e)該フォアグラウンドプロトコルエンジンによって、該プレイバックデータ構造にアクセスするステップと、
    (f)該フォアグラウンドプロトコルエンジンによって、該プレイバックデータ構造に応答する、該少なくとも一つのパケットをレンダリングするステップと
    を包含する、方法。
  7. 前記ステップ(b)は、入力フォーカスを有するアプリケーションプログラムの指示に応答する、前記少なくとも一つのパケットをレンダリングすることを決定することをさらに包含する、請求項6に記載の方法。
  8. 前記ステップ(b)は、前記少なくとも一つのパケットに格納されたユーザ入力のタイプの評価に応答する、該少なくとも一つのパケットをレンダリングすることを決定することをさらに包含する、請求項6に記載の方法。
  9. 前記ステップ(b)は、前記少なくとも一つのパケットによって格納されたグラフィックの更新のタイプの評価に応答する、該少なくとも一つのパケットをレンダリングすることを決定することをさらに包含する、請求項6に記載の方法。
  10. 前記ステップ(b)は、前記少なくとも一つのパケットによって格納された相互作用シーケンスのタイプの評価に応答する、該少なくとも一つのパケットをレンダリングすることを決定することをさらに包含する、請求項6に記載の方法。
  11. 前記ステップ(c)は、前記バックグラウンドプロトコルエンジンによって、前記プレイバックデータ構造において、バッファに前記パケットをレンダリングするための命令を格納することをさらに包含する、請求項6に記載の方法。
  12. 前記ステップ(f)は、前記フォアグラウンドプロトコルエンジンによって、バッファに前記少なくとも一つのパケットのコンテンツをレンダリングすることをさらに包含する、請求項6に記載の方法。
  13. 記録されたセッションをレンダリングするシステムであって、該システムは、
    第1のデバイス上で実行し、記録されたストリームを受信することに応答してプレイバックデータ構造を生成するバックグラウンドプロトコルエンジンであって、該記録されたストリームは、第2のデバイス上で実行されたアプリケーションプログラムによって生成されたディスプレイデータを表す、バックグラウンドプロトコルエンジンと、
    該記録されたストリームを受信し、該バックグラウンドプロトコルエンジンによって生成された該プレイバックデータ構造に応答する該記録されたストリームをレンダリングする、フォアグラウンドプロトコルエンジンと
    を備えた、システム。
  14. 前記バックグラウンドプロトコルエンジンは、前記記録されたストリームをレンダリングする前記フォアグラウンドプロトコルエンジンと実質的に同時に前記プレイバックデータ構造を生成する、請求項13に記載のシステム。
  15. 前記フォアグラウンドプロトコルエンジンは、前記第1のデバイスに存在する、請求項13に記載のシステム。
  16. 前記バックグラウンドプロトコルエンジンは、前記記録されたストリームにおける少なくとも一つのパケットをレンダリングするための少なくとも一つの命令を前記プレイバックデータ構造に格納することをさらに包含する、請求項13に記載のシステム。
  17. 前記バックグラウンドプロトコルエンジンは、前記プレイバックデータ構造にメタデータを格納することをさらに包含する、請求項13に記載のシステム。
  18. 前記バックグラウンドプロトコルエンジンは、前記プレイバックデータ構造に、前記記録されたセッションにおける少なくとも一つのパケットをレンダリングするための時間を示す記録を格納することをさらに包含する、請求項13に記載のシステム。
  19. 前記フォアグラウンドプロトコルエンジンは、前記記録されたセッションにおける少なくとも一つのパケットを、人間が感知することが可能な態様で、バッファにレンダリングする、請求項13に記載のシステム。
  20. 前記フォアグラウンドプロトコルエンジンは、前記記録されたセッションにおける少なくとも一つのパケットを、バッファにレンダリングする、請求項13に記載のシステム。
  21. 記録されたセッションをレンダリングするプレイバック命令を生成する方法であって、該方法は、
    (a)記録されたセッションにおけるパケットによって格納された入力のタイプを識別するステップであって、該記録されたセッションは、アプリケーションプログラムによって生成されたディスプレイデータを表す複数のパケットを含むステップと、
    (b)該入力のタイプに応答する該パケットにマーカー付けするステップと、
    (c)プレイバックデータ構造において、該マーカー付けすることに応答する該パケットのコンテンツをレンダリングする行先を格納するステップと
    を包含する、方法。
  22. 前記ステップ(a)は、前記入力のタイプを、入力デバイスからの入力として識別することをさらに包含する、請求項21に記載の方法。
  23. 前記ステップ(a)は、前記入力のタイプを、キーボード入力として識別することをさらに包含する、請求項21に記載の方法。
  24. 前記ステップ(a)は、前記入力のタイプを、コマンドとして識別することをさらに包含する、請求項21に記載の方法。
  25. 前記ステップ(b)は、ポリシーに応答する前記パケットにマーカー付けすることをさらに包含する、請求項21に記載の方法。
  26. 前記ステップ(c)は、プレイバックデータ構造において、認知が可能な仕方で、バッファに前記マーカー付けされたパケットのコンテンツをレンダリングする命令を格納することをさらに包含する、請求項21に記載の方法。
  27. 前記ステップ(c)は、前記プレイバックデータ構造において、バッファに前記マーカー付けされたパケットのコンテンツをレンダリングする命令を格納することをさらに包含する、請求項21に記載の方法。
  28. 記録されたセッションをレンダリングする際に、不活性期間を消去する方法であって、該方法は、
    (a)記録されたセッションにおける第1のパケットを識別するステップであって、該記録されたセッションは、複数のパケットを含み、ディスプレイデータを表す、ステップと、
    (b)該記録されたセッションにおいて第2のパケットを識別するステップであって、該第2のパケットは、直ちに該第1のパケットに先行する、ステップと、
    (c)該第1のパケットと該第2のパケットとの間の第1の時間間隔を決定するステップと、
    (d)該第1の時間間隔が閾値を超えることを決定する、ステップと、
    (e)該第1のパケットと該第2のパケットとの間の第2の時間間隔を用いて該記録されたセッションのコンテンツをレンダリングするステップであって、該第2の時間間隔は、該第1の時間間隔より短い時間間隔を含むステップ
    を包含する、方法。
  29. 前記ステップ(e)は、プレイバックデータ構造において、前記第1のパケットと前記第2のパケットとの間の前記第2の時間間隔を用いて前記記録されたセッションのコンテンツをレンダリングするための指示を格納することをさらに包含する、請求項28に記載の方法。
  30. 前記ステップ(e)は、前記記録されたセッションにおいて第2のパケットを識別し、該第2のパケットは、直ちに前記第1のパケットに続くことをさらに包含する、請求項28に記載の方法。
  31. 記録されたセッションをレンダリングする際に、意味のない活動を含む期間を消去する方法であって、該方法は、
    (a)記録されたセッションにおいて、マーカー付けされたパケットと、最も近い以前にマーカー付けされたパケットとの間の第1の時間間隔を決定するステップであって、該記録されたセッションは、複数のパケットを含み、ディスプレイデータを表すステップと、
    (b)該第1の時間間隔が、閾値を超えることを決定するステップと、
    (c)該マーカー付けされたパケットと、該最も近い以前にマーカー付けされたパケットとの間の第2の時間間隔を用いて該記録されたセッションのコンテンツをレンダリングするステップであって、該第2の時間間隔は、該第1の時間間隔より短い時間間隔を含むステップと
    を包含する、方法。
  32. 前記ステップ(c)は、前記マーカー付けされたパケットと以前のパケットとの間の第2の時間間隔を用いて前記記録されたセッションのコンテンツをレンダリングすることをさらに包含し、該第2の時間間隔は、前記第1の時間間隔よりも短い時間間隔を含む、請求項31に記載の方法。
  33. 前記ステップ(c)は、前記マーカー付けされたパケットと、該マーカー付けされたパケットに続くパケットとの間の第2の時間間隔を用いて前記記録されたセッションのコンテンツをレンダリングすることをさらに包含し、該第2の時間間隔は、前記第1の時間間隔よりも短い時間間隔を含む、請求項31に記載の方法。
  34. 記録されたセッションをレンダリングする際に、グラフィックの更新を消去する方法であって、該方法は、
    (a)アプリケーションプログラムによって生成されたディスプレイデータを表す記録されたセッションにおいてパケットを識別するステップであって、該パケットは、第1のグラフィックの更新を含むステップと、
    (b)該第1のグラフィックの更新によって影響を及ぼされたスクリーン領域を決定するステップと、
    (c)該第1のグラフィックの更新の後の該スクリーン領域の状態の指示と該スクリーン領域のロケーションとを格納するステップと、
    (d)時間間隔内に該スクリーン領域に影響を及ぼす第2のグラフィックの更新を識別するステップと、
    (e)プレイバックデータ構造において、該スクリーン領域に影響を及ぼす該第2のグラフィックの更新を含む第2のパケットをレンダリングする行先を指示するステップであって、該第2のグラフィックの更新の後の該スクリーン領域の状態が、該第1のグラフィックの更新の後の該スクリーン領域の該状態と異なるかどうかに応答するステップと、
    (f)プレイバックデータ構造において、該スクリーン領域に影響を及ぼす該第2のグラフィックの更新を含む該第2のパケットに関連付いた、レンダリングする時間間隔を指示するステップであって、該第2のグラフィックの更新の後の該スクリーン領域の状態が、該第1のグラフィックの更新の後の該スクリーン領域の状態と異なるかどうかに応答するステップと
    を包含する、方法。
  35. 前記ステップ(b)は、複数のパケット内に含まれたグラフィックの更新を識別することをさらに包含する、請求項34に記載の方法。
  36. 前記ステップ(b)は、前記識別された複数のパケットにおける各パケットによって格納された前記グラフィックの更新に応答して、影響を及ぼされた前記スクリーン領域を決定することをさらに包含する、請求項34に記載の方法。
  37. 前記ステップ(c)は、前記グラフィックの更新によって影響を及ぼされた前記スクリーン領域のコピーを格納することをさらに包含する、請求項34に記載の方法。
  38. 前記ステップ(d)は、ヒューマンスケールの循環期間の上限を近似するように定義される時間間隔をさらに包含する、請求項34に記載の方法。
  39. 前記ステップ(e)は、前記バックグラウンドプロトコルエンジンによって、プレイバックデータ構造において、前記パケットのコンテンツは、認識が可能な仕方において、バッファにレンダリングすることを示すことをさらに包含する、請求項34に記載の方法。
  40. 前記ステップ(e)は、前記バックグラウンドプロトコルエンジンによって、プレイバックデータ構造において、前記パケットの前記コンテンツが、バッファにレンダリングすることを示すことをさらに包含する、請求項34に記載の方法。
  41. 記録されたセッションをレンダリングする際に、相互作用シーケンスを消去する方法であって、該方法は、
    (a)ポリシーに応答して、少なくとも一つのパケットの相互作用シーケンスの開始を識別するステップと、
    (b)プレイバックデータ構造において、相互作用シーケンスは、バッファにレンダリングすべきであることを示す、ステップと、
    (c)相互作用シーケンスの終了を識別するステップと、
    (d)相互作用シーケンスの識別された開始に先行するパケットと相互作用シーケンスの識別された終了に続くパケットとの間に第1の時間間隔を識別するステップと、
    (e)プレイバックデータ構造において、第1の時間間隔より短い、レンダリングする第2の時間間隔を示すステップと
    を包含する、方法。
  42. 相互作用シーケンスは、ログオンシーケンスを含む、請求項41に記載の方法。
  43. 相互作用シーケンスは、ログオフシーケンスを含む、請求項41に記載の方法。
  44. ポリシーは、相互作用シーケンスを定義する、請求項41に記載の方法。
  45. 前記ステップ(a)は、視覚的なマーカーを識別することによって相互作用シーケンスの開始を識別することをさらに包含する、請求項41に記載の方法。
  46. 前記ステップ(a)は、相互作用シーケンスの開始時間を決定することによって該相互作用シーケンスの前記開始を識別することをさらに包含する、請求項41に記載の方法。
  47. 前記ステップ(a)は、入力フォーカスを有するウィンドウを識別することに応答して前記相互作用シーケンスの前記開始を識別することをさらに包含する、請求項41に記載の方法。
  48. 前記ステップ(c)は、視覚的なマーカーを識別することによって前記相互作用シーケンスの前記終了を識別することをさらに包含する、請求項41に記載の方法。
  49. 前記ステップ(c)は、相互作用シーケンスの終了時間を決定することによって該相互作用シーケンスの前記終了を識別することをさらに包含する、請求項41に記載の方法。
  50. 前記ステップ(c)は、入力フォーカスを有するウィンドウを識別することに応答して、前記相互作用シーケンスの前記終了を識別することをさらに包含する、請求項41に記載の方法。
  51. 記録されたコンピュータセッションのレンダリングの際の自動的なタイムワーププレイバックの方法であって、該方法は、
    (a)バックグラウンドプロトコルエンジンによって、記録されたセッションを受信するステップであって、該記録されたセッションは、複数のパケットを含み、ディスプレイデータを表すステップと、
    (b)該バックグラウンドプロトコルエンジンによって、該記録されたセッションにおける該複数のパケットの少なくとも一部によって表された複雑さの程度を決定するステップと、
    (c)該バックグラウンドプロトコルエンジンによって、該記録されたセッションにおける該複数のパケットの該少なくとも一部の間の時間の間隔を識別するステップと、
    (d)該バックグラウンドプロトコルエンジンによって、該記録されたセッションにおける該複数のパケットの該少なくとも一部によって表された複雑さの程度に応答して、該時間の間隔を修正するステップと、
    (e)該バックグラウンドプロトコルエンジンによって、プレイバックデータ構造において、該修正された時間の間隔を格納するステップと、
    (f)フォアグラウンドプロトコルエンジンによって、該プレイバックデータ構造に応答する、該記録されたストリームをレンダリングするステップと
    を包含する、方法。
  52. 前記ステップ(b)は、キーボード入力におけるタイピングの適切なシーケンスを識別することをさらに包含する、請求項51に記載の方法。
  53. 前記ステップ(b)は、関係したキーの少なくとも一つのタイプを検査することをさらに包含する、請求項52に記載の方法。
  54. 前記ステップ(b)は、キーボード入力におけるタイピングの適切なシーケンスの発見的な近似を完成させるためにレンダリングされる少なくとも一つのグリフのシーケンスを検査することをさらに包含する、請求項51に記載の方法。
  55. 前記ステップ(b)は、マウス入力のレートを識別することをさらに包含する、請求項51に記載の方法。
  56. 前記ステップ(b)は、グラフィックの更新の複雑さの発見的な近似を識別することをさらに包含する、請求項51に記載の方法。
  57. 前記ステップ(b)は、前記記録されたセッションにおいて前記複数のパケットの前記少なくとも一部における第1のマーカーを識別することをさらに包含し、該マーカーは、該記録されたセッションにおいて該複数のパケットの該少なくとも一部における最初のパケットを示す、請求項51に記載の方法。
  58. 前記ステップ(d)は、前記第1のマーカーに応答して、前記時間の間隔を修正することをさらに包含する、請求項57に記載の方法。
  59. 前記ステップ(d)は、前記記録されたセッションにおける前記複数のパケットの前記少なくとも一部における、第2のパケットにおける第2のマーカーを識別することをさらに包含し、該第2のマーカーは、該記録されたセッションにおける該複数のパケットの該少なくとも一部における最後のパケットを示し、該第1のパケットと該第2のパケットとの間の該時間の間隔に応答して、該時間の間隔を修正する、請求57に記載の方法。
  60. 前記ステップ(d)は、前記時間の間隔を減少させることをさらに包含する、請求項51に記載の方法。
  61. 前記ステップ(d)は、前記時間の間隔を増加させることをさらに包含する、請求項51に記載の方法。
  62. 前記ステップ(d)は、要求に応答して、前記時間の間隔を修正することをさらに包含する、請求項51に記載の方法。
  63. 記録されたコンピュータセッションをレンダリングする際の自動的なタイムワーププレイバックの方法であって、該方法は、
    (a)複数のパケットを含み、ディスプレイデータを表す記録されたセッションを受信するステップと、
    (b)フォーカスを有するウィンドウを表すコンテンツを有する第1のパケットを識別するステップであって、該ウィンドウは、アプリケーションを示すステップと、
    (c)第1のパケットのコンテンツのレンダリングに先行して、コンテンツがレンダリングする第2のパケットと、該第1のパケットのコンテンツのレンダリングの後に、コンテンツがレンダリングする第3のパケットとの間で、時間間隔を識別するステップと、
    (d)該示されたアプリケーションに応答して該識別された時間間隔を修正するステップと、
    (e)該修正に応答して、該記録されたストリームにおける少なくとも一つのパケットをレンダリングするステップと
    を包含する、方法。
  64. 前記ステップ(d)は、前記識別された時間間隔を増加させることをさらに包含する、請求項63に記載の方法。
  65. 前記ステップ(d)は、前記識別された時間間隔を減少させることをさらに包含する、請求項63に記載の方法。
  66. 前記ステップ(e)は、前記記録されたストリームにおける前記少なくとも一つのパケットをバッファにレンダリングすることをさらに包含する、請求項63に記載の方法。
  67. 前記ステップ(e)は、前記記録されたストリームにおける前記少なくとも一つのパケットを、バッファに、認知が可能な仕方において、レンダリングすることをさらに包含する、請求項63に記載の方法。
  68. 記録されたコンピュータセッションをレンダリングする際の自動的なタイムワーププレイバックのシステムであって、該システムは、
    プロトコルエンジンであって、記録されたストリームを受信することに応答して、プレイバックデータ構造を生成し、該記録されたストリームは、複数のパケットを含み、該プロトコルエンジンは、該生成されたプレイバックデータ構造に応答して、該記録されたストリームにおける少なくとも一つのパケットをレンダリングする、プロトコルエンジンを備えた、システム。
  69. 前記プロトコルエンジンは、前記プレイバックデータ構造において、前記記録されたストリームをレンダリングするための少なくとも一つの命令を格納することをさらに包含する、請求項68に記載のシステム。
  70. 前記プロトコルエンジンは、前記プレイバックデータ構造においてメタデータを格納することをさらに包含する、請求項69に記載のシステム。
  71. 前記プロトコルエンジンは、認知が可能な仕方において、バッファに、前記記録されたセッションにおける前記少なくとも一つのパケットをレンダリングする、請求項68に記載のシステム。
  72. 前記プロトコルエンジンは、前記記録されたセッションにおける前記少なくとも一つのパケットを、バッファにレンダリングする、請求項68に記載のシステム。
  73. 第2のプロトコルエンジンは、前記生成されたプレイバックデータ構造に応答して、前記記録されたストリームにおける前記少なくとも一つのパケットをレンダリングする、請求項68に記載のシステム。
JP2007551333A 2005-01-14 2006-01-11 記録されたコンピュータセッションに対するプレイバック命令を生成する方法およびシステム Withdrawn JP2008538056A (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US11/035,511 US8230096B2 (en) 2005-01-14 2005-01-14 Methods and systems for generating playback instructions for playback of a recorded computer session
US11/036,840 US20060159432A1 (en) 2005-01-14 2005-01-14 System and methods for automatic time-warped playback in rendering a recorded computer session
US11/036,489 US8340130B2 (en) 2005-01-14 2005-01-14 Methods and systems for generating playback instructions for rendering of a recorded computer session
PCT/US2006/000887 WO2006076388A2 (en) 2005-01-14 2006-01-11 Methods and systems for generating playback instructions for a recorded computer session

Publications (1)

Publication Number Publication Date
JP2008538056A true JP2008538056A (ja) 2008-10-02

Family

ID=36295504

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007551333A Withdrawn JP2008538056A (ja) 2005-01-14 2006-01-11 記録されたコンピュータセッションに対するプレイバック命令を生成する方法およびシステム

Country Status (7)

Country Link
EP (3) EP1881644A3 (ja)
JP (1) JP2008538056A (ja)
KR (1) KR20070104552A (ja)
AU (1) AU2006205047A1 (ja)
CA (1) CA2594556A1 (ja)
IL (1) IL184593A0 (ja)
WO (1) WO2006076388A2 (ja)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5717879A (en) * 1995-11-03 1998-02-10 Xerox Corporation System for the capture and replay of temporal data representing collaborative activities

Also Published As

Publication number Publication date
EP1836804B1 (en) 2015-07-22
KR20070104552A (ko) 2007-10-26
IL184593A0 (en) 2007-10-31
WO2006076388A2 (en) 2006-07-20
EP1836804A2 (en) 2007-09-26
EP1881644A2 (en) 2008-01-23
AU2006205047A1 (en) 2006-07-20
EP1881645A1 (en) 2008-01-23
EP1881644A3 (en) 2008-04-09
WO2006076388A3 (en) 2006-11-09
CA2594556A1 (en) 2006-07-20

Similar Documents

Publication Publication Date Title
US8917978B2 (en) System and methods for automatic time-warped playback in rendering a recorded computer session
US8145777B2 (en) Method and system for real-time seeking during playback of remote presentation protocols
US8230096B2 (en) Methods and systems for generating playback instructions for playback of a recorded computer session
US8340130B2 (en) Methods and systems for generating playback instructions for rendering of a recorded computer session
US20060161671A1 (en) Method and systems for capture and replay of remote presentation protocol data
EP1836805B1 (en) Method and system for adaptive generation of state-snapshots of a remote presentation protocol
US7831728B2 (en) Methods and systems for real-time seeking during real-time playback of a presentation layer protocol data stream
US7996549B2 (en) Methods and systems for recording and real-time playback of presentation layer protocol data
US8615159B2 (en) Methods and systems for cataloging text in a recorded session
CN100508018C (zh) 滚动显示控制
US8949407B2 (en) Capturing a computing experience
EP2074793B1 (en) Methods and systems for recording and real-time playback and seeking of a presentation layer protocol data stream
JP2008538056A (ja) 記録されたコンピュータセッションに対するプレイバック命令を生成する方法およびシステム
JP5445814B2 (ja) 画面情報制御装置および画面情報制御プログラム
CN117319340A (zh) 语音消息的播放方法、装置、终端及存储介质
KR20140018616A (ko) 멀티 저작물을 이용한 멀티미디어 컨텐츠 서비스 제공 장치 및 방법

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20090407