(57)【要約】本発明は、クライアントでのグラフィックおよび／またはメディアコンポーネントを有する表示の生成に関する。クライアントでメディアプレゼンテーションを生成する方法には、サーバ上で実行するアプリケーションプログラムからの出力の前記クライアントへの送信と、アプリケーション出力の中のメディアストリームの識別と、メディアストリームの少なくとも一部を表す圧縮データセットの受信と、前記圧縮データセットのクライアントへの送信とを含む。メディアストリームに関連する少なくとも１つのタイミングおよび制御情報を取り込み、クライアントに送信する。
2007505580.tif 000002
【特許請求の範囲】
【請求項１】
クライアントでメディアプレゼンテーションを生成する方法であって、該方法は、
（ａ）サーバ上で実行するアプリケーションプログラムからの出力を前記クライアントへ送信するステップと、
（ｂ）アプリケーション出力の中のメディアストリームを識別するステップと、
（ｃ）前記アプリケーションプログラムが処理する前の前記メディアストリームの少なくとも一部を表す元の圧縮データセットをインターセプトするステップと、
（ｄ）前記元の圧縮データセットを前記クライアントへ送信するステップと、
（ｅ）前記メディアストリームに関連するタイミング情報および制御情報のうちの少なくとも１つを取り込むステップと、
（ｆ）前記取り込んだ情報を前記クライアントへ送信するステップと
を含む、方法。
【請求項２】
前記元の圧縮データセットおよび前記取り込んだ情報を前記クライアントで受信するステップと、
前記元の圧縮データセットを前記クライアントで解凍して、解凍データセットを生成するステップと、
前記解凍データセットおよび前記取り込んだ情報を使用して前記クライアントでメディアプレゼンテーションを生成するステップと、をさらに含む、請求項１に記載の方法。
【請求項３】
前記（ｄ）の送信と実質的に同時に前記元の圧縮データセットを第２のクライアントへ送信するステップをさらに含む、請求項１に記載の方法。
【請求項４】
前記クライアントへの送信が、少なくとも１つの中間ノードを介して生ずる、請求項１に記載の方法。
【請求項５】
クライアントでメディアプレゼンテーションを生成する方法であって、該方法は、
（ａ）サーバ上で実行するアプリケーションプログラムからの出力を前記クライアントへ送信するステップと、
（ｂ）アプリケーション出力の中のメディアストリームを識別するステップと、
（ｃ）前記メディアストリームの少なくとも一部を表す第１の解凍データセットをインターセプトするステップと、
（ｄ）前記インターセプトした第１の解凍データセットを圧縮するステップと、
（ｅ）前記第１の解凍データセットの代わりに圧縮データセットを前記クライアントへ送信するステップと、
（ｆ）前記メディアストリームに関連するタイミング情報および制御情報のうちの少なくとも１つを取り込むステップと、
（ｇ）前記取り込んだ情報を前記クライアントへ送信するステップと
を含む、方法。
【請求項６】
前記圧縮データセットおよび前記取り込んだ情報を前記クライアントで受信するステップと、
前記圧縮データセットを前記クライアントで解凍して、第２の圧縮データセットを生成するステップと、
前記第２の解凍データセットおよび前記取り込んだ情報を使用して前記クライアントでメディアプレゼンテーションを生成するステップと、をさらに含む、請求項５に記載の方法。
【請求項７】
前記（ｅ）の送信と実質的に同時に前記第１の解凍データセットの代わりに前記圧縮データセットを第２のクライアントへ送信するステップをさらに含む、請求項５に記載の方法。
【請求項８】
前記クライアントへの送信が、少なくとも１つの中間ノードを介して生ずる、請求項５に記載の方法。
【請求項９】
クライアントでメディアプレゼンテーションを生成する方法であって、該方法は、
（ａ）前記クライアントにインストールされるクライアントエージェントがサポートする少なくとも１つのメディアフォーマットについてサーバへ通知するステップと、
（ｂ）メディアストリームの少なくとも一部を表す圧縮データセットを前記クライアントで受信するステップと、
（ｃ）前記圧縮データセットを前記クライアントで解凍して、解凍データセットを生成するステップと、
（ｄ）前記解凍データセットを使用して前記クライアントでメディアプレゼンテーションを生成するステップと、
（ｅ）前記メディアストリームに関連するタイミング情報および制御情報のうちの少なくとも１つを受信するステップと、
（ｆ）前記メディアプレゼンテーションを生成するために、前記受信情報を使用するステップと
を含む、方法。
【請求項１０】
クライアントでメディアプレゼンテーションを生成するシステムであって、該システムは、
アプリケーションプログラムが生成する出力の中のメディアストリームを識別するように構成された前記アプリケーションプログラムと、
前記アプリケーションプログラムが処理する前に前記メディアストリームの少なくとも一部を表す元の圧縮データセットをインターセプトし、前記元の圧縮データセットを前記クライアントに送信するように構成された出力フィルタモジュールと、を備え、
前記出力フィルタモジュールが、前記メディアストリームに関連するタイミング情報および制御情報のうちの少なくとも１つを取り込み、前記取り込んだ情報を前記クライアントに送信するようにさらに構成された、システム。
【請求項１１】
前記元の圧縮データセットおよび前記取り込んだ情報を受信し、前記元の圧縮データセットを解凍して解凍データセットを生成し、前記解凍データセットおよび前記取り込んだ情報を使用して前記メディアプレゼンテーションを生成するように構成されたクライアントエージェントをさらに備える、請求項１０に記載のシステム。
【請求項１２】
前記出力フィルタモジュールが、実質的に同時に前記元の圧縮データを複数のクライアントに送信する、請求項１０に記載のシステム。
【請求項１３】
前記出力フィルタモジュールが、少なくとも１つの中間ノードを介して前記元の圧縮データを前記クライアントに送信する、請求項１０に記載のシステム。
【請求項１４】
前記出力フィルタモジュールのフィルタのメリットが、システム上の他のフィルタモジュールのフィルタのメリットを超える、請求項１０に記載のシステム。
【請求項１５】
クライアントでメディアプレゼンテーションを生成するシステムであって、該システムは、
アプリケーションプログラムが生成した出力の中のメディアストリームを識別するように構成された、該アプリケーションプログラムと、
前記メディアストリームの少なくとも一部を表す第１の解凍データセットをインターセプトし、前記メディアストリームの前記インターセプトした前記第１の解凍データセットを圧縮し、前記第１の解凍データセットの代わりに前記圧縮データセットを前記クライアントに送信するように構成された出力フィルタモジュールと、を備え、
前記出力フィルタモジュールが、前記メディアストリームに関連するタイミング情報および制御情報のうちの少なくとも１つを取り込み、前記取り込んだ情報を前記クライアントに送信するようにさらに構成された、システム。
【請求項１６】
前記圧縮データセットおよび前記取り込んだ情報を受信し、前記圧縮データセットを解凍して第２の解凍データセットを生成し、前記第２の解凍データセットおよび前記取り込んだ情報を使用して前記メディアプレゼンテーションを生成するようにさらに構成された、請求項１５に記載のシステム。
【請求項１７】
前記出力フィルタモジュールが、実質的に同時に、前記第１の解凍データセットの代わりに前記圧縮データセットを複数のクライアントに送信する、請求項１５に記載のシステム。
【請求項１８】
前記出力フィルタモジュールが、少なくとも１つの中間ノードを介して、前記第１の解凍データセットの代わりに前記圧縮データセットを前記クライアントに送信する、請求項１５に記載のシステム。
【請求項１９】
前記出力フィルタモジュールのフィルタのメリットが、システム上の他のフィルタモジュールのフィルタのメリットを超える、請求項１５に記載のシステム。
【請求項２０】
クライアントでメディアプレゼンテーションを生成するシステムであって、該システムは、
サーバと、
前記サーバと通信するクライアントであって、クライアントエージェントがサポートする少なくとも１つのメディアフォーマットについて前記サーバに通知し、メディアストリームの少なくとも一部を表す圧縮データセットを受信し、前記クライアントで前記圧縮データセットを解凍して解凍データセットを生成し、前記解凍データセットを使用して前記メディアプレゼンテーションを生成するように構成された前記クライアントエージェントを備えるクライアントと、を備え、
前記クライアントエージェントが、前記メディアストリームに関連するタイミング情報および制御情報のうちの少なくとも１つを受信し、前記メディアプレゼンテーションを生成するために前記受信した情報を使用するようにさらに構成された、システム。
【請求項２１】
サーバ上で実行するアプリケーションプログラムからのグラフィック出力をクライアントで表示する方法であって、該方法は、
アプリケーション出力の中の非テキスト要素を識別するステップと、
前記非テキスト要素に関連する解凍データセットを取り出すステップと、
前記解凍データセットのコンテンツに応じて、前記解凍データセットに対し使用する圧縮技術を識別するステップと、
前記解凍データセットを前記識別した圧縮技術で圧縮して、再圧縮データセットを形成するステップと、
前記解凍データセットの代わりに前記再圧縮データセットを前記クライアントへ送信するステップと
を含む、方法。
【請求項２２】
前記識別した圧縮技術が、可逆圧縮技術である、請求項２１に記載の方法。
【請求項２３】
前記非テキスト要素が、広い同色領域を有する画像である、請求項２２に記載の方法。
【請求項２４】
前記非テキスト要素が、コンピュータ生成画像である、請求項２２に記載の方法。
【請求項２５】
前記可逆圧縮技術が、２ＤＲＬＥ圧縮である、請求項２２に記載の方法。
【請求項２６】
前記識別した圧縮技術が、非可逆圧縮技術である、請求項２１に記載の方法。
【請求項２７】
前記非テキスト要素が、連続階調画像である、請求項２６に記載の方法。
【請求項２８】
前記非テキスト要素が、写真画像である、請求項２６に記載の方法。
【請求項２９】
前記非可逆圧縮技術が、ＪＰＥＧ圧縮である、請求項２６に記載の方法。
【請求項３０】
前記圧縮技術を識別するステップが、
可逆圧縮技術を使用して前記解凍データセットを圧縮して、第１のテストデータセットを形成するステップと、
前記第１のテストデータセットのサイズを所定の値と比較するステップと、
前記第１のテストデータセットのサイズが前記所定の値を超えた場合、非可逆圧縮技術を使用して前記解凍データセットを圧縮して第２のテストデータセットを形成するステップと、
前記第２のテストデータセットのサイズが前記第１のテストデータセットのサイズの所定の割合よりも小さい場合、非可逆圧縮技術を選択するステップと、を含む、請求項２１に記載の方法。
【請求項３１】
前記圧縮技術を識別するステップが、前記非テキスト要素が写真であるかどうかを判断するために前記解凍データセットへ画像処理アルゴリズムを適用するステップと、前記非テキスト要素が写真である場合、非可逆圧縮技術を選択するステップとを含む、請求項２１に記載の方法。
【請求項３２】
前記圧縮技術を識別するステップが、前記非テキスト要素が連続階調であるかどうかを判断するために前記解凍データセットへ画像処理アルゴリズムを適用するステップと、前記非テキスト要素が連続階調である場合、非可逆圧縮技術を選択するステップとを含む、請求項２１に記載の方法。
【請求項３３】
前記圧縮技術を識別するステップが、前記解凍データセットのピクセルカラー数を数えるステップと、前記数えられたピクセルカラー数が所定の値を超えた場合、非可逆圧縮技術を選択するステップとを含む、請求項２１に記載の方法。
【請求項３４】
サーバ上で実行するアプリケーションプログラムからのグラフィック出力をクライアントで表示するシステムであって、該システムは、
アプリケーションプログラムと、
前記アプリケーションプログラムが生成した出力の中の非テキスト要素を識別し、前記非テキスト要素に関連する解凍データセットを取り出し、前記解凍データセットのコンテンツに応じて前記解凍データセットに対し使用する圧縮技術を識別し、前記解凍データを前記識別した圧縮技術で圧縮して再圧縮データセットを形成し、前記解凍データセットの代わりに前記再圧縮データセットを前記クライアントに送信するように構成された出力フィルタモジュールと
備える、システム。
【請求項３５】
前記識別した圧縮技術が、可逆圧縮技術である、請求項３４に記載のシステム。
【請求項３６】
前記非テキスト要素が、広い同色領域を有する画像である、請求項３５に記載のシステム。
【請求項３７】
前記非テキスト要素が、コンピュータ生成画像である、請求項３５に記載のシステム。
【請求項３８】
前記可逆圧縮技術が、２ＤＲＬＥ圧縮である、請求項３５に記載のシステム。
【請求項３９】
前記識別した圧縮技術が、非可逆圧縮技術である、請求項３４に記載のシステム。
【請求項４０】
前記非テキスト要素が、連続階調画像である、請求項３９に記載のシステム。
【請求項４１】
前記非テキスト要素が、写真画像である、請求項３９に記載のシステム。
【請求項４２】
前記非可逆圧縮技術が、ＪＰＥＧ圧縮である、請求項３９に記載のシステム。
【請求項４３】
前記出力フィルタモジュールが、損失のない圧縮技術を使用して前記解凍データセットを圧縮して第１のテストデータセットを形成し、
前記第１のテストデータセットのサイズを所定の値と比較し、
前記第１のテストデータセットのサイズが前記所定の値を超えた場合、非可逆圧縮技術を使用して前記解凍データセットを圧縮して第２のテストデータセットを形成し、
前記第２のテストデータセットのサイズが前記第１のテストデータセットのサイズの所定の割合よりも小さい場合、非可逆圧縮技術を選択することによって、圧縮技術を識別する、請求項３４に記載のシステム。
【請求項４４】
前記出力フィルタモジュールが、前記非テキスト要素が写真であるかどうかを判断するために前記解凍データセットへ画像処理アルゴリズムを適用し、前記非テキスト要素が写真である場合、非可逆圧縮技術を選択することによって、圧縮技術を識別する、請求項３４に記載のシステム。
【請求項４５】
前記出力フィルタモジュールが、前記非テキスト要素が連続階調であるかどうかを判断するために前記解凍データセットへ画像処理アルゴリズムを適用し、前記非テキスト要素が連続階調である場合、非可逆圧縮技術を選択することによって、圧縮技術を識別する、請求項３４に記載のシステム。
【請求項４６】
前記圧縮技術を識別するステップが、前記解凍データセットのピクセルカラー数を数えるステップと、前記数えられたピクセルカラー数が所定の値を超えた場合、非可逆圧縮技術を選択するステップとを含む、請求項３４に記載の方法。
【請求項４７】
クライアントでメディアプレゼンテーションを生成する方法であって、該方法は、
（ａ）サーバ上で実行するアプリケーションプログラムからの出力を前記クライアントへ送信するステップと、
（ｂ）アプリケーション出力の中の複数のメディアストリームを識別するステップと、
（ｃ）サーバメディアキューであって、それぞれ割り当てられた優先度を有するサーバメディアキューに、各メディアストリームを関連付けるステップと、
（ｄ）サーバコマンドキューへ優先度を割り当てるステップと、
（ｅ）サーバキューのコンテンツを前記クライアントへ送信するステップと、
（ｆ）前記サーバと前記クライアントとの間のネットワークの帯域幅が、全てのサーバキューの送信を行うには不十分な場合、割り当てられた優先度がより低いサーバキューからのサンプルを省略し、割り当てられた優先度がより高いサーバキューからのサンプルを送信するステップと
を含む、方法。
【請求項４８】
前記メディアキューの優先度が、各キューに保存されるメディアタイプに基づく、請求項４７に記載の方法。
【請求項４９】
（ｇ）複数のクライアントメディアキューであって、それぞれサーバメディアキューに関連するクライアントメディアキューを有するクライアントで送信を受信するステップと、
（ｈ）クライアントメディアキューが満杯である場合、前記満杯のクライアントメディアキューに関連する送信を破棄するステップとをさらに含む、請求項４７に記載の方法。
【請求項５０】
前記コマンドキューが、最も高い優先度を有する、請求項４７に記載の方法。
【請求項５１】
クライアントでメディアプレゼンテーションを生成する方法であって、該方法は、
（ａ）サーバ上で実行するアプリケーションプログラムからの出力を前記クライアントへ送信するステップと、
（ｂ）アプリケーション出力の中のメディアストリームを識別するステップと、
（ｃ）メディアストリームを表すデータを前記クライアントへ送信するステップと、を含み、
クライアントの再生が始まる前に、送信によってクライアントメディアキューをネットワークのスループットで許容される限り迅速に満たす、方法。
【請求項５２】
前記クライアントでの対応するメディアキューにおけるデータレベルに従って発行される前記クライアントからのフロー制御コマンドを前記サーバで受信するステップをさらに含む、請求項５１に記載の方法。
【請求項５３】
サーバ上で実行するアプリケーションプログラムからのグラフィック出力をクライアントで表示する方法であって、該方法は、
アプリケーション出力の中の非テキスト要素を識別するステップと、
前記非テキスト要素に関連する解凍データセットを取り出すステップと、
前記解凍データセットを少なくとも１つのストリップへ割り当てるステップと、
前記少なくとも１つのストリップを前記クライアントへ送信するステップと
を含む、方法。
【請求項５４】
前記少なくとも１つのストリップが、別の非テキスト要素を表す第２の解凍データセットに存在する、請求項５３に記載のバイン方法。
【請求項５５】
前記少なくとも１つのストリップを前記サーバのデータベースに保存するステップをさらに含む、請求項５３に記載の方法。
【請求項５６】
前記少なくとも１つのストリップの高さ、幅、および周期的冗長検査（ＣＲＣ）情報をサーバデータベースに保存するステップをさらに含む、請求項５５に記載の方法。
【請求項５７】
前記少なくとも１つのストリップを前記クライアントのデータベースに保存するステップをさらに含む、請求項５５に記載の方法。
【請求項５８】
前記少なくとも１つのストリップの高さ、幅、および周期的冗長検査（ＣＲＣ）情報をクライアントデータベースに保存するステップをさらに含む、請求項５７に記載の方法。
【請求項５９】
別の非テキスト要素を表す第２の解凍データセットをインターセプトするステップと、
前記第２の解凍データセットを第２のストリップへ割り当てるステップと、
前記サーバデータベースに既に保存されている前記第２のストリップを識別するステップと、
前記既に保存されている第２のストリップに関連する識別子を取り出すステップと、
前記第２のストリップを前記クライアントへ送信する代わりに前記識別子を前記クライアントへ送信するステップとをさらに含む、請求項５７に記載の方法。
【請求項６０】
前記クライアントで前記識別子を受信するステップと、
受信した前記識別子に関連する前記クライアントデータベースに保存した前記ストリップを識別するステップと、
前記クライアントでの前記受信した前記識別子に関連する前記保存したストリップを表示するステップとをさらに含む、請求項５９に記載の方法。
【請求項６１】
前記クライアントの前記サーバからの切断後、前記クライアントのコンテンツを保持するステップをさらに備える、請求項５７に記載の方法。
【請求項６２】
前記クライアントを前記サーバへ再接続するステップと、前記クライアントデータベースのコンテンツのリストを前記サーバへ送信するステップとをさらに含む、請求項６１に記載の方法。
【請求項６３】
前記コンテンツのリストが、前記クライアントデータベースに保存した前記ストリップの高さ、幅、およびＣＲＣ情報を含む、請求項６２に記載の方法。
【請求項６４】
前記クライアントデータベースに保存したストリップを前記クライアントデータベースから削除するために、前記サーバからの命令を前記クライアントへ送信するステップをさらに含む、請求項５７に記載の方法。
【請求項６５】
前記削除に選択されたストリップが、将来使用される可能性が最小であるストリップである、請求項６４に記載の方法。
【請求項６６】
複数のメディアストリームをクライアントに送信する方法であって、該方法は、
アプリケーションプログラムの出力の中の第１のメディアストリームおよび第２のメディアストリームを識別するステップと、
前記第１のメディアストリームを、割り当てられた優先度を有する第１のキューと関連付け、前記第２のメディアストリームを、前記第１のキューよりも低い割り当てられた優先度を有する第２のキューと関連付けるステップと、
前記第１のメディアストリームの少なくとも一部を表す第１の圧縮データセットであって、第１の複数のパケットを備える第１の圧縮データセットをインターセプトするステップでと、
前記第２のメディアストリームの少なくとも一部を表す第２の圧縮データセットであって、第２の複数のパケットを備える第２の圧縮データセットをインターセプトするステップと、
前記第１のメディアストリームに関連する前記第１のキューに前記第１の複数のパケットを保存するステップと、
前記第２のメディアストリームに関連する前記第２のキューに前記第２の複数のパケットを保存するステップと、
前記第１のキューから前記第１の複数のパケットを送信するステップと、
前記第２のキューから前記第２の複数のパケットの少なくとも一部を送信するステップと、
前記第２のキューからその他の前記第２の複数のパケットを省略するステップと
を含む、方法。
【請求項６７】
前記アプリケーションプログラムを実行するステップをさらに含む、請求項６６に記載の方法。
【請求項６８】
制御コマンドを保存する制御キューを作成するステップをさらに含む、請求項６６に記載の方法。
【請求項６９】
前記制御コマンドが、ストリーム汎用およびストリーム特定のコマンドのうちの１つを含む、請求項６８に記載の方法。
【請求項７０】
前記制御キューが、全てのキューで最も高い優先度を割り当てられる、請求項６８に記載の方法。
【請求項７１】
前記メディアキューの前記優先度が、各キューに保存される関連するメディアタイプに基づく、請求項６６に記載の方法。
【請求項７２】
前記メディアタイプの動的変化を検出するステップをさら含む、請求項７１に記載の方法。
【請求項７３】
第１のフィルタモジュールを呼び出すステップをさらに含む、請求項７１に記載の方法。
【請求項７４】
前記第１の出力モジュールと通信する第２の出力フィルタを呼び出すステップをさらに含む、請求項７３に記載の方法。
【請求項７５】
前記第１の出力が圧縮データセットをインターセプトし、前記第２の出力モジュールが制御情報をインターセプトする、請求項７４に記載の方法。
【請求項７６】
前記第１の出力フィルタモジュールが、メディアストリームの作成を前記クライアントに要求する、請求項７３に記載の方法。
【請求項７７】
（ａ）前記クライアントからの前記メディアストリームの作成の失敗通知を受信するステップと、
（ｂ）前記第１のフィルタモジュールをアンロードするステップと、
（ｃ）ネイティブおよびサードパーティの出力フィルタモジュールのうちの１つをロードするステップとをさらに含む、請求項７６に記載の方法。
【請求項７８】
任意のタイミング情報をインターセプトするステップをさらに含む、請求項６６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に分散型処理に関し、より詳しくは、クライアントでのグラフィックおよび／またはメディアコンポーネントを有する表示の生成に関する。
【背景技術】
【０００２】
（発明の背景）
シン（ｔｈｉｎ）クライアントプロトコルは、サーバ上で実行するアプリケーションが生成する出力を限定された処理機能を備えたコンピュータで作動するクライアントで表示するため使用することができる。２つの典型的なシンクライアントプロトコルには、Ｃｉｔｒｉｘ  Ｓｙｓｔｅｍｓ社（Ｆｔ．Ｌａｕｄｅｒｄａｌｅ、ＦＬ）のＩＣＡ（Ｉｎｄｅｐｅｎｄｅｄｎｔ  Ｃｏｍｐｕｔｉｎｇ  Ａｒｃｈｉｔｅｃｔｕｒｅ）およびＭｉｃｒｏｓｏｆｔ社（Ｒｅｄｍｏｎｄ、ＷＡ）のＲＤＰ（Ｒｅｍｏｔｅ  Ｄｅｓｋｔｏｐ  Ｐｒｏｔｏｃｏｌ）がある。このクライアントは、リモートターミナルセッションと称されこともある。あるシンクライアントプロトコルでは、サーバオペレーティングシステム（「ＯＳ」）のアプリケーションプログラムによってコマンドをインターセプトしてディスプレイ画面に描画する。インターセプトしたコマンドは、例えば１つ以上のプレゼンテーション層パケットを使用してリモートセッションに送信される。リモートセッション（例えば、シンクライアント）がコマンドを受信すると、そのリモートセッションは受信したコマンドをリモートセッションＯＳに渡す。シンクライアントは、受信したコマンドを使用してアプリケーションプログラムの出力をそのディスプレイに描画する。このように、アプリケーションプログラムは、シンクライアント上で実行しているように見える。
【０００３】
概して、アプリケーションプログラムがディスプレイ画面に画像を描画する場合、この画像はビットマップとして表される。ビットマップフォーマットの画像は、一般に非常に大きなデータセットである。したがって、シンクライアントプロトコルは、ビットマップ表現をどのように表示するかに関して適用可能なコマンドとともに、大量のデータであるイメージのビットマップ表現をネットワークを通じて送信しなければならない。これによって、低帯域幅のネットワークではクライアント上で完全な画像を受信して表示する前に大幅な時間遅延が生じる。これは、そのクライアントのユーザに不便および不満をもたらすことになりうる。また、このユーザが、例えば無線ネットワークなどでの帯域幅の使用料を直接支払っている場合、これらの大きなビットマップフォーマットの送信が各送信によって多大な費用を生じることになる。
【０００４】
アプリケーションプログラムがメディアプレゼンテーションを生成する場合に、同様な問題が存在がする。概して、ビデオファイルは一連のビットマップとして生成され、オーディオ情報はパルスコード変調を使用して生成される。したがって、シンクライアントプロトコルは、ビデオファイルを表す一連のビットマップおよび／またはオーディオ情報を表すパルスコード変調した信号をネットワークを通じて送信する。この送信は非効率的であり、過大な帯域幅およびＣＰＵの著しい使用を必要とする。さらに、十分な帯域幅が利用可能であっても、クライアントでは無反応なグラフィカルユーザインターフェイスを生じる可能性がある。例えば、ビデオプレイバックは低品質であることが多く、「ぎくしゃく」するように見えることがあり、オーディオプレゼンテーションと十分に同期しないことがある。
【０００５】
したがって、リモートターミナルセッションにおける画像のレンダリングおよびメディアプレゼンテーション方法の改善が必要である。
【発明の開示】
【課題を解決するための手段】
【０００６】
本発明の一利点によれば、送信前にビットマップフォーマットの代わりに利用可能な圧縮フォーマットを用いることによって、元々大きなビットマップフォーマットで表される画像および非テキスト要素の送信時間およびコストを低減する。一部のシステムでは、画像および他のマルチメディアコンテンツをＪＰＥＧ、ＰＮＧ、ＧＩＦ、ＭＰＥＧ３、またはＭＰＥＧ４などの既圧縮フォーマットで送信する。これらのシステムでは、既圧縮フォーマットをインターセプトすることによって画像の送信時間およびコストを低減することが可能であり、概してより圧縮したフォーマットの別のバージョンのメディアストリームで代用することが可能である。圧縮フォーマットの送信によって、メディアストリームの送信に必要な帯域幅を大幅に減じることができる。クライアントは、利用可能なライブラリを使用して受信したデータを解凍する。次いでクライアントは、例えば、他の識別データで変更したシンクライアントプロトコルのコマンドを使用して、元のビットマップ表現の代わりに解凍した画像を使用する。
【０００７】
本発明の別の利点によれば、メディアストリームの少なくとも一部を表す圧縮データセットが、その解凍前に第１のコンピュータにインターセプトされる。この代わりに、圧縮データセットを第１のコンピュータで解凍する場合は、その結果のデータセットを第１のコンピュータで再圧縮する。帯域幅が限られる可能性のあるネットワークを通じて、解凍データセットではなくデータセットを送信することによって、結果的にデータセットの送信時間およびコストが低減される。
【０００８】
通信に必要な帯域幅を減じることによってもたらされる時間およびコストの利点に加えて、本発明を用いるクライアントおよびサーバは機能の改善も享受する。本発明によれば、サーバが非テキスト要素またはメディアストリームの代表的な圧縮データを送信する場合に、前記サーバの中央演算処理装置（ＣＰＵ）での処理の負担が減じられる。前記サーバのＣＰＵは、増加するネットワーク通信量の付随する処理の負担によって、圧縮データの解凍およびより大量の非圧縮データの送信に別の処理労力を費やすことになる。１つのサーバが複数のクライアントと情報をやりとりできれば、前記クライアントへの圧縮およびレンダリングオペレーションの委託によってサーバの処理能力も改善される。より大量の非圧縮データの受信に関連する前記クライアントでの処理労力が減じられることから、前記クライアントの処理能力はさらに改善される。
【０００９】
一局面では、本発明は、クライアントでグラフィック表示を生成する方法に関する。前記方法には、サーバ上で実行するアプリケーションプログラムからの出力の前記クライアントへの送信と、アプリケーション出力の中のビットマップ表現の識別と、前記ビットマップ表現に対するチェック値の判断とを含む。前記方法にはまた、前記チェック値の少なくとも一部を使用した圧縮データフォーマットの前記ビットマップ表現の取り出しと、前記ビットマップ表現の代わりの前記圧縮データフォーマットの前記クライアントへの送信とを含む。
【００１０】
別の局面では、本発明は、クライアントでグラフィック表示を生成する方法に関する。前記方法には、サーバ上で実行するアプリケーションプログラムからの出力の前記クライアントへの送信と、アプリケーション出力の中の非テキスト要素の識別とを含む。前記方法にはまた、前記非テキスト要素に関連する圧縮データフォーマットの取り出しと、前記非テキスト要素の代わりの前記圧縮データフォーマットの前記クライアントへの送信とを含む。
【００１１】
本発明の本局面の一実施態様では、前記方法には、前記アプリケーション出力の中のテキスト要素の識別と、前記テキスト要素のクライアントへの送信とを含む。別の実施態様では、前記方法には、前記クライアントでの前記圧縮データフォーマットおよび任意で前記テキスト要素の受信と、前記クライアントでの前記圧縮データフォーマットを使用した表示および任意で前記テキスト要素の生成とを含む。別の実施態様では、前記方法には、少なくとも１つのプレゼンテーション層プロトコルパケットを使用した前記圧縮データフォーマットの送信を含む。さらに別の実施態様では、前記方法には、ネイティブフォーマットでファイルを送信するためのコマンドを使用した前記少なくとも１つのプレゼンテーション層プロトコルパケットの送信を含む。
【００１２】
別の実施態様では、前記方法には、前記少なくとも１つのプレゼンテーション層プロトコルパケットのリモートアクセスプロトコル、シンクライアントプロトコル、および／またはプレゼンテーションプロトコルへの適合を含む。さらに別の実施態様では、前記非テキスト要素がビットマップ表現であり、本方法には、前記ビットマップ表現の前記圧縮データフォーマットとの置換を含む。別の実施態様では、前記方法には、前記圧縮データフォーマットを使用した前記非テキスト要素の作成に対するクライアントの能力の判断を含む。本方法には、前記クライアントが前記圧縮データフォーマットを使用した前記テキスト要素の生成ができないと判断した場合に、前記圧縮データフォーマットを使用した前記非テキスト要素のレンダリングが可能な画像レンダリングライブラリの送信をさらに含む。
【００１３】
別の実施態様では、前記方法には、前記アプリケーション出力のインターセプトと、前記非テキスト要素のビットマップ表現に対するインターセプトした出力の検査とを含む。さらに別の実施態様では、前記方法には、前記非テキスト要素のビットマップ表現に対する第１のチェック値の計算と、前記第１のチェック値と同一のチェック値を有する圧縮データフォーマットに対するイメージストアの検索とを含む。
【００１４】
別の局面では、本発明は、クライアントでグラフィック表示を生成するシステムに関する。前記システムは、出力フィルタモジュールとサーバエージェントとを備える。前記出力フィルタモジュールは、アプリケーションプログラムが生成した出力をインターセプトし、非テキスト要素の前記出力を識別し、前記非テキスト出力に関連する圧縮データフォーマットを取り出すように構成される。前記サーバエージェントは、前記非テキスト要素の代わりに前記圧縮データフォーマットを前記クライアントに送信するように構成される。
【００１５】
本発明の本局面の一実施態様では、前記システムは、前記サーバエージェントおよび前記出力フィルタモジュールを備えたサーバノードを備える。別の実施態様では、前記システムは、クライアントノードを備える。前記クライアントノードは、クライアントエージェントおよび表示を含む。前記クライアントエージェントは、圧縮データフォーマットを受信し、受信した圧縮データフォーマットを使用して非テキスト要素の表示を生成するように構成される。別の局面では、前記システムは、ネットワークをさらに含む。
【００１６】
別の局面では、本発明は、クライアントでグラフィック表示を生成するための、その中に統合されたコンピュータ可読のプログラム手段を有する製品に関する。前記製品は、上述の方法のいずれかを行うためのコンピュータ可読のプログラム手段を備える。
【００１７】
更なる局面では、本発明は、クライアントでメディアプレゼンテーションを生成する方法に関する。前記方法には、サーバ上で実行するアプリケーションプログラムからの出力の前記クライアントへの送信と、アプリケーション出力の中のメディアストリームの識別と、前記アプリケーションプログラムが処理する前の前記メディアストリームの少なくとも一部を表す元の圧縮データセットのインターセプトと、前記元の圧縮データセットの前記クライアントへの送信とを含む。
【００１８】
別の局面では、本発明は、クライアントでメディアプレゼンテーションを生成する別の方法に関する。本方法には、サーバ上で実行するアプリケーションプログラムからの出力の前記クライアントへの送信と、アプリケーション出力の中のメディアストリームの識別と、前記メディアストリームの少なくとも一部を表す第１の解凍データセットのインターセプトと、前記第１の解凍データセットの代わりの圧縮データセットの前記クライアントへの送信とを含む。
【００１９】
さらに別の局面では、本発明は、クライアントでメディアプレゼンテーションを生成するさらに別の方法に関する。本方法には、前記クライアントにインストールされるクライアントエージェントがサポートする少なくとも１つのメディアフォーマットについてのサーバへの通知と、前記クライアントでのメディアストリームの圧縮データセットの受信と、解凍データセットを生成するための前記クライアントでの前記圧縮データセットの解凍と、前記解凍データセットを使用した前記クライアントでの前記メディアプレゼンテーションの生成とを含む。
【００２０】
更なる局面では、本発明は、クライアントでメディアプレゼンテーションを生成するのためのコンピュータ可読のプログラム手段を統合した製品に関する。前記製品は、サーバ上で実行するアプリケーションプログラムからの出力をクライアントに送信するためのコンピュータ可読のプログラム手段と、アプリケーション出力の中のメディアストリームを識別するためのコンピュータ可読のプログラム手段と、前記アプリケーションプログラムが処理する前に前記メディアストリームの少なくとも一部を表す元の圧縮データセットをインターセプトするためのコンピュータ可読のプログラム手段と、前記元の圧縮データセットを前記クライアントに送信するためのコンピュータ可読のプログラム手段とを備える。
【００２１】
さらに別の局面では、本発明は、クライアントでメディアプレゼンテーションを生成するのためのコンピュータ可読のプログラム手段を統合した製品に関する。前記製品は、サーバ上で実行するアプリケーションプログラムからの出力をクライアントに送信するためのコンピュータ可読のプログラム手段と、アプリケーション出力の中のメディアストリームを識別するためのコンピュータ可読のプログラム手段と、前記メディアストリームの少なくとも一部を表す第１の解凍データセットをインターセプトするためのコンピュータ可読のプログラム手段と、前記インターセプトした第１の解凍データセットを圧縮するためのコンピュータ可読のプログラム手段と、前記第１の解凍データセットの代わりに圧縮データセットを前記クライアントに送信するためのコンピュータ可読のプログラム手段とを備える。
【００２２】
さらに別の局面では、本発明は、クライアントでメディアプレゼンテーションを生成するのためのコンピュータ可読のプログラム手段を統合した製品に関する。前記製品は、前記クライアントにインストールされるクライアントエージェントがサポートする少なくとも１つのメディアフォーマットについてサーバに通知するためのコンピュータ可読のプログラム手段と、前記クライアントでメディアストリームの圧縮データセットを受信するためのコンピュータ可読のプログラム手段と、解凍データセットを生成するためにクライアントで前記圧縮データセットを解凍するためのコンピュータ可読のプログラム手段と、前記解凍データセットを使用して前記クライアントで前記メディアプレゼンテーションを生成するためのコンピュータ可読のプログラム手段とを備える。
【００２３】
本発明のこれらの最後の６つの局面の種々の実施態様では、前記方法および前記製品は、前記メディアストリームに関連するタイミング情報の取り込みと、前記タイミング情報の前記クライアントへの送信と、クライアントでの圧縮データセットおよび任意で前記タイミング情報の受信と、解凍データセットを生成するためのクライアントでの前記圧縮データセットの解凍と、前記解凍データセットおよび任意で前記タイミング情報を使用したクライアントでのメディアプレゼンテーションの生成とをさらに含み、またこれらのためのコンピュータ可読のプログラム手段をさらに備える。本発明の最後の６つの局面の他の実施態様では、前記方法および前記製品は、前記アプリケーション出力からの非メディアグラフィック情報の前記クライアントへの送信と、前記クライアントでの前記非メディアグラフィック情報の受信と、前記解凍データセットおよび前記非メディアグラフィック情報を使用したクライアントでの前記メディアプレゼンテーションの生成とをさらに含み、またこれらのためのコンピュータ可読のプログラム手段をさらに備える。
【００２４】
更なる局面では、本発明は、クライアントでメディアプレゼンテーションを生成するシステムに関する。前記システムは、アプリケーションプログラムおよび出力フィルタモジュールを備える。前記アプリケーションプログラムは、前記アプリケーションプログラムが生成した出力の中のメディアストリームを識別するように構成される。前記出力フィルタモジュールは、前記アプリケーションプログラムが処理する前に前記メディアストリームの少なくとも一部を表す元の圧縮データセットをインターセプトし、前記元の圧縮データセットを前記クライアントに送信するように構成される。
【００２５】
別の局面では、本発明は、クライアントでメディアプレゼンテーションを生成する別のシステムに関する。前記システムは、アプリケーションプログラムおよび出力フィルタモジュールを備える。前記アプリケーションプログラムは、前記アプリケーションプログラムが生成した出力の中のメディアストリームを識別するように構成される。前記出力フィルタモジュールは、前記メディアストリームの少なくとも一部を表す第１の解凍データセットをインターセプトし、前記メディアストリームの前記インターセプトした第１の解凍データセットを圧縮し、前記第１の解凍データセットの代わりに前記圧縮データセットを前記クライアントに送信するように構成される。
【００２６】
さらに別の局面では、本発明は、クライアントでメディアプレゼンテーションを生成する別のシステムに関する。前記システムは、サーバおよび前記サーバと通信するクライアントを備える。前記クライアントは、クライアントエージェントがサポートする少なくとも１つのメディアフォーマットについて前記サーバに通知し、メディアストリームの圧縮データセットを受信し、クライアントで前記圧縮データセットを解凍して解凍データセットを生成し、前記解凍データセットを使用して前記メディアプレゼンテーションを生成するように構成された前記クライアントエージェントを備える。
【００２７】
本発明のこれらの最後の３つの局面の種々の実施態様では、前記メディアストリームに関連するタイミング情報を取り込み、前記タイミング情報を前記クライアントに送信するようにさらに構成される。本発明の最後の３つの局面の種々の実施態様では、前記システムは、前記圧縮データセットおよび任意のタイミング情報を受信し、前記圧縮データセットを解凍して解凍データセットを生成し、前記解凍データセットおよび前記任意のタイミング情報を使用してメディアプレゼンテーションを生成するように構成されたクライアントエージェントをさらに備える。本発明の最後の３つの局面のさらに他の実施態様では、前記クライアントエージェントは、非メディアグラフィック情報を受信し、前記解凍データセットおよび前記非メディアグラフィック情報を使用してクライアントで前記メディアプレゼンテーションを生成するようにさらに構成される。
【００２８】
別の局面では、本発明は、クライアントでメディアプレゼンテーションを生成する別のシステムに関する。このシステムは、ネットワークと、前記ネットワークと通信するサーバと、前記ネットワークと通信する前記クライアントとを備える。前記サーバは、アプリケーションプログラムと、少なくとも１つの出力フィルタモジュールとを備える。前記アプリケーションプログラムは、前記アプリケーションプログラムが生成した出力の中のメディアストリームを識別するように構成される。前記出力フィルタモジュールは、前記アプリケーションプログラムが処理する前に前記メディアストリームの少なくとも一部を表す圧縮データセットをインターセプトし、前記圧縮データセットを前記クライアントに送信するように構成される。いくつかの実施態様では、前記出力フィルタモジュールは、前記メディアストリームを表す一部の圧縮データセットのみをインターセプトする。例えば、前記フィルタモジュールは、ビデオメディアストリームの他のすべてのフレームをインターセプトすることが可能である。さらに別の実施態様では、前記出力フィルタモジュールは、前記ビデオストリームの送信に必要な帯域幅を減じるために、ビデオデータの各フレームに関連する一部のデータを破棄する。前記クライアントは、クライアントエージェントを備える。前記クライアントエージェントは、前記クライアントエージェントがサポートする少なくとも１つのメディアフォーマットについて前記サーバに通知し、前記圧縮データセットを受信し、前記クライアントで前記圧縮データセットを解凍して解凍データセットを生成し、前記解凍データセットを使用して前記クライアントで前記メディアプレゼンテーションを生成するように構成される。
【００２９】
更なる局面では、本発明は、クライアントでメディアプレゼンテーションを生成するのためのコンピュータ可読のプログラム手段を統合する製品に関する。前記製品は、メディアストリームの元の圧縮データセットをインターセプトするためのコンピュータ可読のプログラム手段と、ＩＣＡまたはＲＤＰなどのシンクライアントプロトコルを使用して前記元の圧縮データセットを前記クライアントに送信するためのコンピュータ可読のプログラム手段とを備える。
【００３０】
別の局面では、本発明は、クライアントでメディアプレゼンテーションを生成するのためのコンピュータ可読のプログラム手段を統合する別の製品に関する。前記製品は、メディアストリームの解凍データセットをインターセプトするためのコンピュータ可読のプログラム手段と、前記インターセプトした解凍データセットを圧縮するためのコンピュータ可読のプログラム手段と、ＩＣＡまたはＲＤＰなどのシンクライアントプロトコルを使用して前記圧縮データセットを前記クライアントに送信するためのコンピュータ可読のプログラム手段とを備える。
【００３１】
本発明の上記の更なる利点は、添付図面とともに用いられる以下の説明を参照してより適切に理解されよう。
【発明を実施するための最良の形態】
【００３２】
一局面では、本発明は、グラフィック表示を生成する方法、システム、および製品に関する。
【００３３】
非テキスト要素または画像のビットマップ表現に関する圧縮データフォーマット表現は、ネットワークを通じて二次的な表示のために非テキスト要素またはビットマップ表現の代わりにサーバからクライアントに送信される。
【００３４】
概観では、図１は、ネットワーク１１５を通じて第２のコンピュータシステム（「サーバノード」）１１０と通信する第１のコンピュータシステム（「クライアントノード」）１０５を備えたリモートターミナルセッションに対する表示を生成するシステム１００を示す。例えば、ネットワーク１１５は、企業のインターネットのようなローカルエリアネットワーク（ＬＡＮ）、またはインターネットまたはワールドワイドウェブのようなワイドエリアネットワーク（ＷＡＮ）とすることができる。クライアントノード１０５のユーザは、標準電話線、ＬＡＮまたはＷＡＮのリンク（例えば、Ｔ１、Ｔ３、５６ｋｂ、Ｘ．２５）、ブロードバンド接続（ＩＳＤＮ、Ｆｒａｍｅ  Ｒｅｌａｙ、ＡＴＭ）、および無線接続などの様々な接続を介してネットワーク１１５に接続することができる。クライアントノード１０５は、ネットワーク１１５との通信を確立するクライアント送受信装置１３０を備える。サーバノード１１０は、ネットワーク１１５との通信を確立するサーバ送受信装置１３５を備える。接続は、様々な通信プロトコル（例えば、ＩＣＡ、ＲＤＰ、ＨＴＴＰ、ＴＣＰ／ＩＰ、ＩＰＸ、ＳＰＸ、ＮｅｔＢＩＯＳ、イーサネット（登録商標）、ＲＳ２３２、および直接的な非同期接続）を使用して確立することができる。
【００３５】
サーバノード１１０は、クライアントノード１０５が要求したサービスを提供することができるあらゆるコンピュータとすることができる。特に、これにはサーバ１１０で実行するアプリケーションプログラム１４０が生成する出力を表すクライアント１０５へのコマンドおよびデータの生成と送信とを含む。サーバノード１１０は、サーバ送受信装置１３５、実行するアプリケーションプログラム１４０、サーバエージェント１５０、出力フィルタモジュール１５５、およびイメージストア１６０を備える。サーバエージェント１５０は、アプリケーションプログラム１４０のリモートディスプレイおよび操作性をサポートするために、クライアントエージェント１７５およびサーバノード１１０の他のコンポーネントと接続するモジュールを備える。サーバエージェントモジュール１５０および明細書を通して述べられる全てのモジュールは、ソフトウェアプログラムおよび／またはハードウェア装置（例えば、ＡＳＩＣまたはＦＰＧＡ）として使用される。
【００３６】
明確にするため、これらのコンポーネントの全てをサーバノード１１０上に示す。サーバノード１１０は、ネットワーク１１５または別のネットワーク（図示せず）を通じてそれぞれと通信する単一のサーバまたは複数のサーバを表すことができると理解されよう。複数のサーバによる実施態様では、利用可能なサーバを通じてコンポーネントの機能を配信することができる。例えば、複数のサーバによる一実施態様では、送受信装置１３５、アプリケーションプログラム１４０、サーバエージェント１５０、および出力フィルタモジュール１５５はアプリケーションサーバ上にあり、イメージストア１６０はＲＡＩＤシステム内のディスクなどの記憶装置内にある。
【００３７】
クライアントノード１０５は、サーバノード１１０上で実行するアプリケーションプログラム１４０にユーザインターフェイスを提供するために使用するあらゆるコンピュータ（例えば、パーソナルコンピュータ、セットトップボックス、無線携帯電話、携帯用機器、携帯情報端末、公衆電話ボックス、など）とすることができる。クライアントノード１０５は、クライアント送受信装置１３０、ディスプレイ１４５、クライアントエージェント１７５、およびグラフィックライブラリ１８０（画像レンダリングライブラリとも称する）を備える。クライアントエージェント１７５は、サーバノード１１０およびクライアントノード１０５のユーザ（図示せず）からのコマンドおよびデータを受信するソフトウェアプログラムおよび／またはハードウェア装置（例えば、ＡＳＩＣまたはＦＰＧＡ）として使用するモジュールを備える。クライアントエージェント１７５は、クライアントノード１０５の他のコンポーネントと情報のやりとりを行う場合（例えば、オペレーティングシステムにディスプレイ１４５へのデータの出力を命令する場合）に、受信情報を使用する。クライアントエージェント１７５はまた、サーバが発行したコマンドまたはクライアントノード１０５におけるユーザのアクションに応答して、サーバノード１０５に要求およびデータを送信する。
【００３８】
サーバノード１１０は、クライアントノード１０５がアクセスできる１つ以上のアプリケーションプログラム１４０をホストする。このようなアプリケーションの例には、どちらもＭｉｃｒｏｓｏｆｔ社（Ｒｅｄｍｏｎｄ、ＷＡ）製のＭｉｃｒｏｓｏｆｔ  Ｗｏｒｄ（登録商標）のようなワード処理プログラムおよびＭｉｃｒｏｓｏｆｔ  Ｅｘｃｅｌ（登録商標）のような表計算プログラムが挙げられる。他の例には、財務報告プログラム、顧客登録プログラム、技術的なサポート情報を提供するプログラム、顧客データベースアプリケーション、およびアプリケーションの設定マネージャが挙げられる。アプリケーションプログラムの別の例には、Ｍｉｃｒｏｓｏｆｔ社（Ｒｅｄｍｏｎｄ、ＷＡ）製のＩｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ（登録商標）があり、このプログラムを以下の説明において典型的なアプリケーションプログラム１４０として使用する。他のアプリケーションプログラムも使用できると理解されたい。
【００３９】
アプリケーションプログラム１４０、例えばＩｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ（登録商標）の実行中に、サーバノード１１０は転送機構を通じてクライアントノード１０５と通信する。一実施態様では、転送機構がネットワーク１１５を介して複数の仮想チャネル１８５を提供するので、サーバエージェント１５０はクライアントエージェント１７５と通信することができる。仮想チャネル１８５のうちの１つは、サーバノード１１０からクライアントノード１０５にグラフィック画面データを送信するためのプロトコルを提供する。サーバエージェント１５０の一部としての一実施態様では、サーバ１１０は、アプリケーションプログラム１４０によって生成され、サーバのオペレーティングシステムを対象としたグラフィック表示インターフェイスコマンドをインターセプトするプロトコルドライバを実行する。プロトコルドライバは、転送機構を通じてこのコマンドを送信に適したプロトコルパケットに変換する。
【００４０】
この例ではＩｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ（登録商標）であるサーバ１１０上で実行するアプリケーションプログラム１４０は、ウェブページを検索する。前述したように、アプリケーションプログラム１４０は、サーバノード１１０で出力を表示していたかのように、サーバのオペレーティングシステムに対するグラフィック表示コマンドを生成する。サーバエージェント１５０は、これらのコマンドをインターセプトし、それらをクライアントエージェント１７５に送信する。クライアントエージェント１７５は、クライアントノード１０５のディスプレイ１４５に対する出力を生成するために、クライアントオペレーティングシステムと同一または同様のコマンドを発行する。サーバエージェント１５０またはクライアントエージェント１７５のためのオペレーティングシステムが、Ｍｉｃｒｏｓｏｆｔ社（Ｒｅｄｍｏｎｄ、ＷＡ）製のＷｉｎｄｏｗｓ（登録商標）ファミリのオペレーティングシステムのメンバーである場合は、これらのグラフィック表示コマンドは、ＤｉｒｅｃｔＳｈｏｗ（登録商標）、ＤｉｒｅｘｔＸ（登録商標）、またはＷｉｎｄｏｗｓ（登録商標）グラフィックデバイスインターフェイス（ＧＤＩ）機能の起動となって現れる。
【００４１】
一実施態様では、ウェブページは、テキスト要素（例えば、タイトル、テキスト、およびＡＳＣＩＩ文字）、およびその中に組み込まれる非テキスト要素（例えば、画像、写真、アイコン、およびスプラッシュスクリーン）の両方を有する。非テキスト要素は、圧縮データフォーマット（例えば、ファイルまたはデータストリーム）でウェブサーバ（図示せず）からＩｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ（登録商標）、すなわちアプリケーションプログラム１４０に送信されることがあり、非テキスト要素のネイティブフォーマットとも称する。圧縮フォーマットの例には、ＪＰＥＧ、ＧＩＦ、およびＰＮＧが挙げられる。圧縮データフォーマットで表される非テキスト要素は、例えば２０キロバイトのサイズになることがある。ビットマップ表現に解凍したその同じ非テキスト要素は、例えば３００キロバイトのサイズとなる。
【００４２】
ウェブページの表示を生成する場合、アプリケーションプログラム１４０は、例えばＪＰＥＧデータフォーマットの非テキスト要素を取り出して、ＪＰＥＧデータフォーマットを表示のためのビットマップに解凍する。出力フィルタモジュール１５５は、以下に詳述するように、ビットマップ表現が圧縮フォーマットからのものであることを判断し、イメージストア１６０からの対応する圧縮フォーマットの非テキスト要素を獲得する。一実施態様では、イメージストア１６０は、持続的記憶装置である。他の実施態様では、イメージストア１６０は、一時記憶装置、キャッシュ、揮発性メモリおよび／または一時的および持続的記憶装置を組合せたものである。
【００４３】
サーバエージェント１５０は、非テキスト要素のビットマップ表現を出力フィルタモジュール１５５がイメージストア１６０から取り出した圧縮非テキスト要素と置換する。サーバエージェント１５０は、ビットマップ表現に関連するグラフィック表示インターフェイスコマンドとともに、圧縮フォーマットで非テキスト要素をクライアントノード１０５に送信する。一実施態様では、サーバエージェント１５０は、関連するコマンドが非テキスト要素のビットマップ表現に適用可能であっても、ビットマップ表現ではない非テキスト要素の送信を識別する一意のプロトコルコマンドを使用する。他の実施態様では、他の識別技術を使用することができる。例えば、プロトコルコマンドは、変更子コメントまたはコマンドスイッチを有することができる。コマンドは、コンテキストの変更または複数のコマンドの組合せを使用することもできる。
【００４４】
非テキスト要素が非圧縮フォーマット（例えば、Ｗｉｎｄｏｗｓ（登録商標）のビットマップ（．ｂｍｐ）フォーマット）で保存される場合、サーバエージェント１５０は、圧縮バージョンの非テキスト要素を提供するように、非テキスト要素の非圧縮表現を取り出して、例えば２ＤＲＬＥ圧縮を使用してそれを圧縮することが可能である。状況に応じて、サーバエージェント１５０は、非圧縮表現に対するアプリケーションに適切な圧縮アルゴリズムを選択し、選択したアルゴリズムを非圧縮表現に適用し、表示のために圧縮表現をクライアントエージェント１７５に提供することが可能である。非テキスト要素が元々圧縮されている場合、サーバエージェント１５０は、同一または異なる圧縮技術を使用した画像の圧縮を選択することが可能である。
【００４５】
サーバエージェント１５０が非圧縮表現の圧縮に利用可能なアルゴリズムには、可逆（ｌｏｓｓｌｅｓｓ）圧縮アルゴリズム、および非可逆（ｌｏｓｓｙ）圧縮アルゴリズムが挙げられる。可逆圧縮アルゴリズムは、例えば２ＤＲＬＥ圧縮などの、表現に含まれる情報を失うことなく非圧縮表現のサイズを減じる。非可逆圧縮アルゴリズムは、非圧縮表現に含まれる情報を破棄するような、例えばＪＰＥＧまたはＪＰＥＧ２０００圧縮のような方法で、非圧縮表現のサイズを減じる。
【００４６】
サーバエージェント１５０は、少なくとも部分的に、非圧縮表現のコンテンツを使用した非圧縮表現の圧縮に適切な圧縮アルゴリズムを選択する。一実施態様では、サーバエージェント１５０は、非圧縮画像が写真画像のような連続階調（ｃｏｎｔｉｎｕｏｕｓ  ｔｏｎｅ）画像であること、および非圧縮表現への非可逆圧縮アルゴリズムの適用を判断する。別の実施態様では、サーバエージェント１５０は、非圧縮画像が、例えばコンピュータ生成画像のような広い同色領域を含むこと、および可逆圧縮アルゴリズムの適用を判断する。さらに別の実施態様では、非圧縮表現のピクセルに含まれる色数を数えて、その数が所定の閾値（例えば、２５６色）を超えた場合には、非圧縮表現に非可逆圧縮アルゴリズムが適用される。
【００４７】
さらに別の実施態様では、サーバエージェント１５０は、可逆圧縮アルゴリズムを使用して非圧縮表現を圧縮し、圧縮後のサイズと所定の値とを比較する。圧縮後のサイズが所定の値を超えた場合は、非可逆圧縮アルゴリズムを使用して非圧縮表現を圧縮する。非可逆圧縮後のサイズが所定の割合の可逆圧縮後のサイズより小さい場合は、非可逆圧縮アルゴリズムが選択される。
【００４８】
クライアントエージェント１７５は、非テキスト要素のビットマップ表現に関連するグラフィック表示インターフェイスコマンドとともに、圧縮データフォーマットでの非テキスト要素ファイルの送信を受信する。クライアントエージェント１７５は、非テキスト要素が圧縮データフォーマットであり、ビットマップ表現ではないことを判断する。一実施態様では、クライアントエージェント１７５は、非テキスト要素が一意のプロトコルコマンドを使用して圧縮フォーマットで送信されるので、この判断を行わせる。別の実施態様では、非テキスト要素データのサイズおよび／または関連するグラフィック表示インターフェイスコマンドとともに含まれる非テキスト要素に関する他の特性は、クライアントエージェント１７５の判断を可能にするのに十分である。
【００４９】
クライアントエージェント１７５は、クライアントノード１０５が圧縮フォーマットの非テキスト要素を解凍するために必要なライブラリ１８０を含んでいるかどうかを判断する。クライアントノード１０５が、解凍アルゴリズムを行うためにインストールした１つまたは複数の適切なグラフィックライブラリ１８０を有する場合、クライアントエージェント１７５は、圧縮フォーマットの非テキスト要素をビットマップ表現に解凍するためにライブラリ１８０を使用する。クライアントエージェント１７５は、クライアントディスプレイ１４５上のアプリケーションプログラム１４０の非テキスト要素の出力を生成するために、ビットマップ表現に受信した関連するグラフィック表示インターフェイスコマンドを行う。
【００５０】
一実施態様では、クライアントエージェント１７５は、圧縮フォーマットからの非テキスト要素をビットマップ表現に解凍するために、全ての解凍アルゴリズムを含まない。クライアントノード１０５が、解凍アルゴリズムを行うためにインストールする適切な１つまたは複数のグラフィックライブラリ１８０を有していない場合、クライアントエージェント１７５は、必要なグラフィックライブラリをサーバノード１１０に要求する。別の実施態様では、クライアントエージェント１７５は、サーバノード１１０から何らかの非テキスト要素を受信する前に、所定の一連の最も広く使用されるグラフィックライブラリ１８０がクライアントノード１０５にインストールされているかどうかを判断する。最も広く使用されるグラフィックライブラリ１８０がクライアントノード１０５上にインストールされていない場合、クライアントエージェント１７５は、サーバノード１１０から何らかの非テキスト要素を受信する前に、失われたライブラリをサーバノード１１０に要求する。
【００５１】
さらに別の実施態様では、クライアントエージェント１７５は、クライアントノード１０５がどのグラフィックライブラリ１８０を含むかを判断し、サーバエージェント１５０にそのライブラリ情報を送信する。本実施態様では、サーバエージェント１５０が、出力フィルタモジュール１５５から圧縮データフォーマットのビットマップ表現を受信する場合、サーバエージェント１５０は、送信したライブラリ情報を使用して、クライアントノード１０５が圧縮データフォーマットを生成できるかどうかを判断する。サーバエージェント１５０が、クライアントノード１０５は適用可能なライブラリを有すると判断した場合、サーバエージェント１５０は、非テキスト要素のビットマップ表現に対して圧縮データフォーマットを代用する。サーバエージェント１５０が、クライアントノード１０５は適用可能なライブラリを有していないと判断した場合、サーバエージェント１５０は、非テキスト要素のビットマップ表現に対して圧縮データフォーマットを代用しない代わりに、ビットマップ表現をライアント１０５に送信する。
【００５２】
非テキスト要素のビットマップ表現を圧縮フォーマットの非テキスト要素と置換するサーバエージェント１５０に関して、出力フィルタモジュール１５５は、ビットマップ表現がイメージストア１６０に含まれる圧縮フォーマットからのものであると判断する。出力フィルタモジュール１５５は、メディアストリームソースが何らかの方法でドキュメントによって（例えば、ファイルタイプ識別子によって、またはこの情報を公開するように特に構成したアプリケーションプログラムによって）公開される場合に、この判断を行うことが可能である。メディアストリームがマルチメディアストリームである実施態様に関して、出力フィルタモジュール１５５を、マルチメディアサブシステムが提供するメディアストリームに関連するソースに関する情報とともに提供することが可能である。さらに別の実施態様では、モジュール１５５は、ビットマップ表現に対する１つ以上のチェック値を計算する。例えば、出力フィルタモジュール１５５は、ビットマップ表現全体に対する単一のチェック値を計算することができ、および／または出力フィルタモジュール１５５は、ビットマップ表現全体に対して各クアドランドに１つである４つのチェック値を計算することができる。他の例では、出力フィルタモジュール１５５は、ビットマップ表現におけるＮ本のラインのそれぞれに１つであるＮ個のチェック値を計算することができる。チェック値は、データの異なる配置に対して実質的に一意の値を生成するアルゴリズムから生じたものである。チェック値は、例えば、チェックタグ、巡回冗長コード（「ＣＲＣ」）、チェックサム、またはハッシング関数の結果である。チェック値は、ビットマップ表現に基づくものであり、圧縮データフォーマットで配置されるようなデータではない。しかし、圧縮データフォーマットをイメージストア１６０に保存する場合は、解凍した際の圧縮データのビットマップ表現のうちの１つ以上のチェック値に対応するチェック値の属性とともに保存される。
【００５３】
一実施態様では、チェック値は、固定識別子および一意の識別子を含むチェックタグである。固定識別子および一意の識別子は、互いに組み合わせられ、画像内に隠蔽される。一意の識別子が特定の画像の識別に使用されるように、固定識別子はチェックタグの識別に使用される。固定識別子は、例えば、統計学的に画像内に見出される可能性が低いグローバルに一意の識別子である。例えば、固定識別子は、デバッグ中に容易に認識でき、均衡の取れた数のゼロおよび１のビットを有するバイトシーケンスである。一意の識別子は、キャッシュ内の各画像に独自に割り当てられる逐次的な識別子である。逐次的な一意の識別子は、小さな値（最もありそうな値）の画像識別子が均衡が取れた数のゼロおよび１のビットを有する可能性がより高くなるように、別の値によってマスクされるＸＯＲである。
【００５４】
チェックタグは、ＲＧＢコンポーネントが画像の一部またはカラーパレットの一部であるかどうかに関わりなく、ＲＧＢカラーコンポーネントにエンコードされる。より詳しくは、チェックタグは、一連の１６０ビット（すなわち、それぞれが最下位ビット０で始まり、最上位ビット７で完了する２０の独立したバイト）として扱われる。各バイトの最下位ビットは、チェックタグの次のビットによって上書きされる。各バイトの他の７ビットは、変更されないままである。
【００５５】
チェックタグは、単純にエンコーディング手順を逆にすることによってデコードされる。チェックタグのデコード後、固定識別子および一意の識別子がチェックタグから取り出される。取り出した固定識別子は、チェックタグをそのように識別するために、既に保存した固定識別子に対して検証される。一致が見出されると、次いで一意の識別子は、画像に関連するビットマップデータなどの識別した画像に関連する情報を取り出すために使用される。
【００５６】
出力フィルタモジュール１５５は、イメージストア１６０の中で、出力フィルタモジュール１５５がビットマップ表現に対して計算する１つ以上のチェック値と同じチェック値属性を有する圧縮データフォーマットの非テキスト要素を検索する。出力フィルタモジュール１５５は、同じチェック値の圧縮フォーマットの非テキスト要素を１つ以上のチェック値として取り出し、ビットマップ表現の代わりにクライアントエージェント１７５に送信するために、圧縮フォーマットの非テキスト要素をサーバエージェント１５０に送信する。
【００５７】
サーバノード１１０は、圧縮フォーマットファイルからビットマップ表現を作成するために、アプリケーションプログラム１４０が最初にグラフィックライブラリ（図示せず）を呼び出すイメージストア１６０に圧縮フォーマットの非テキスト要素を保存する。出力フィルタモジュール１５５は、アプリケーションプログラム１４０が圧縮フォーマットを解凍し、ビットマップ表現を生成するときに、ビットマップ表現の関連するチェック値を計算する。上述のように、出力フィルタモジュール１５５は、ビットマップ表現のクアドラントが完全な場合、または一連のビットマップ表現が完全な場合に、チェック値を計算することができる。サーバ１１０は、イメージストア１６０に圧縮フォーマットファイルおよび関連するチェック値属性を保存し、アプリケーションプログラム１４０が関連する非テキスト要素を初めてあるいはそれ以降に生成するときに、圧縮フォーマットファイルを取り出す。
【００５８】
サーバ１１０が、イメージストア１６０の圧縮フォーマットファイルおよび関連する１つ以上のチェック値を一時的記憶部分（例えば、ＲＡＭメモリバッファまたはキャッシュ）または持続的記憶部分（例えば、ディスクまたは不揮発性メモリバッファ）に保存したかどうかは、少なくとも設計およびハードウェアの制限（例えば、持続的記憶装置のサイズ）に部分的に依存する。その判断を行うために使用する１つの典型的な基準は、アプリケーションプログラム１４０が非テキスト要素を生成する回数である。例えば、アプリケーションプログラム１４０が所定の回数以上特定の非テキスト要素を生成した場合、サーバ１１０は、持続的にイメージストア１６０にある特定の非テキスト要素に対応する圧縮フォーマットファイルおよび関連する１つ以上のチェック値を保存する。イメージストア１６０は、イメージストア１６０からデータを除去するために追い出しアルゴリズム（例えば、使用頻度が最も低い（ＬＲＵ）アルゴリズム）を適用することが可能である。追い出しによって、サーバエージェント１５０およびクライアントエージェント１７５は、イメージストア１６０に課されるリソースまたは保存制限の監視が可能になる。
【００５９】
他の実施態様では、サーバ１１０は、非テキスト要素が静的または複合の場合にそれを保存する。例えば、アプリケーションプログラム１４０が、初期化時に常にスプラッシュスクリーンを生成する場合、サーバ１１０は、イメージストア１６０の持続的記憶部分のスプラッシュスクリーンに対応する圧縮フォーマットファイルを保存する。別の実施態様では、非テキスト要素が複合、静的で、および／または繰返し生成されるが、対応する圧縮フォーマットファイルを有していない場合、出力フィルタモジュール１５５は、その非テキスト要素に対する圧縮フォーマットファイルを標準ベースまたは専用ベースのフォーマットで生成する。いずれかの以降の送信では、サーバエージェント１５０は、ビットマップ表現の代わりに生成された圧縮フォーマットファイルを送信する。圧縮フォーマットが専用ベースのフォーマットである場合、サーバエージェント１５０は、圧縮フォーマットファイルをビットマップ表現に解凍するために、クライアントノード１０５が適用可能な専用ベースのグラフィックライブラリを含んでいるかどうかを判断する。クライアントノード１０５に含まれていない場合、サーバエージェント１５０は、インストールのための適用可能なライブラリをクライアントノード１０５に送信する。
【００６０】
図示した実施態様は、サーバノード１１０上のイメージストア１６０を示すが、別の実施態様では、少なくとも一部のイメージストア（図示せず）がクライアントノード１０５上にある。この別の実施態様では、出力フィルタモジュール１５５は、ビットマップ表現の１つ以上のチェック値を計算し、１つ以上のチェック値をサーバエージェント１５０に送信する。サーバエージェント１５０は、これらの１つ以上のチェック値をクライアントエージェント１７５に送信する。クライアントエージェント１７５は、クライアントノード１０５上のイメージストアの一部で、同一の１つ以上のチェック値属性とともに保存される圧縮データフォーマットを検索する。クライアントエージェント１７５は、この検索結果をサーバエージェント１５０に送信する。サーバ側およびクライアント側イメージストア１６０は、クライアントとサーバとの間のセッションの終了後に存続することが可能である。続いて、新しいセッションを開始する場合、クライアントエージェント１７５は、サーバエージェント１５０にそのイメージストア１６０のコンテンツに関する情報を通信し、サーバのイメージストア１６０と比較した後、サーバエージェント１５０は、クライアントでのグラフィックおよびメディア表示の作成に必要な帯域幅の量を減じるために、イメージストア１６０の非テキスト要素（またはそれらのストリップ）を使用することが可能である。
【００６１】
非テキスト要素のための圧縮データフォーマットがクライアントノード１０５上に存在する場合、サーバエージェント１５０は、ネットワーク１１５を通じて圧縮データフォーマットか、あるいはビットマップ表現を送信する必要はない。サーバエージェント１５０は、非テキスト要素のビットマップ表現に関連するグラフィック表示インターフェイスコマンドを送信するだけである。非テキスト要素のための圧縮データフォーマットがクライアントノード１０５上に存在しない場合、出力フィルタモジュール１５５は、イメージストア１６０から対応する圧縮フォーマットの非テキスト要素を獲得する。サーバエージェント１５０は、非テキスト要素のビットマップ表現を出力フィルタモジュール１５５がイメージストア１６０から取り出した圧縮データフォーマットの非テキスト要素と置換する。サーバエージェント１５０は、ビットマップ表現に関連するグラフィック表示インターフェイスコマンドとともに、圧縮フォーマットの非テキスト要素をクライアントノード１０５に送信する。
【００６２】
上述のように、サーバ１１０および／またはクライアントノード１０５上にイメージストア１６０が存在することで、非テキスト要素のキャッシングが可能になり、クライアントでのグラフィックおよびメディア表示の生成に必要な帯域幅を減じる。本発明によれば、これらの非テキスト要素は、小領域、すなわち「ストリップ」に再分割することが可能で、イメージストア１６０は、上述のように、続いてストリップレベルのデータの塊を有する非テキスト要素のキャッシングを提供する。例えば、ウェブページは、その一部だけが可視である複数の画像を完全にまたは部分的に含むことが可能である。部分的に示すだけの画像に関して、他のウィンドウによって見えなくなる部分を含む全画像をクライアントに送信することが可能である。しかし、そのようにすると、より多くのデータが必要以上に送信されるので、帯域幅の使用量が増加する。可視の画像の一部は、「ストリップ」として識別され、後述のように処理される。イメージストア１６０は、ストリップを形成するグラフィックデータと、選択的に、画像ストリップ高さ、画像ストリップ幅、および周期的冗長検査（ＣＲＣ）チェックサムなどの画像ストリップ識別子などのストリップ関連メタデータとを含む。
【００６３】
本実施態様では、グラフィックのレンダリングオペレーションに使用する各非テキスト要素は、上述のストリップに分類される。一実施態様では、これらのストリップは、非テキスト要素と同じ幅であり、非テキスト要素以下の高さである。イメージストア１６０に存在しない１つ以上のストリップで構成される非テキスト要素の表示にクライアントエージェント１７５が必要である場合、必要なストリップは、クライアント側イメージストア１６０’にレンダリングおよび保存するためにクライアントに送信される。
【００６４】
サーバエージェント１５０は、レンダリングのためにクライアントに以前に送信されたストリップのデータベースを保持する。以降のレンダリングオペレーションが保存ストリップに含まれる領域を組み込む場合、保存ストリップの存在はサーバ側イメージストア１６０で識別され、保存ストリップに関連する適切な識別子が取り出される。識別子に関連する保存ストリップのレンダリングをクライアントエージェント１７５に命令するメッセージは、クライアントエージェント１７５に送信されるが、ストリップ自身のコンテンツを含むメッセージよりも少ない帯域幅を必要とする。クライアントエージェント１７５は、そのイメージストア１６０’から送信された識別子に関連する保存ストリップのそのコピーを取り出し、その保存ストリップのコンテンツを表示する。同様に、個々のストリップが複数の非テキスト要素の中で共有される場合は、サーバエージェント１５０が共通のストリップを識別し、クライアント自身のイメージストア１６０からのストリップの表示をクライアントエージェント１７５に命令し、表示のためのストリップの再送信を避ける。
【００６５】
連続するレンダリングオペレーション間でストリップが変更された場合、例えば、前のレンダリングオペレーションのソースビットマップが次のレンダリングオペレーションの目的ビットマップになる場合、サーバエージェント１５０は、ストリップへの変更を検出し、レンダリングおよび／またはクライアント側イメージストア１６０’に組み込むためにストリップをクライアントエージェント１７５に再送信する。
【００６６】
図２は、図１の例示的実施態様を使用して、リモートターミナルセッションに対する表示を生成するプロセス２００の例示的実施態様を示す。出力フィルタモジュール１５５は、サーバノード１１０のオペレーティングシステムに行われる呼出しを監視することによって、アプリケーションプログラム１４０の出力を監視する。出力フィルタモジュール１５５がアプリケーションプログラム１４０からの表示コマンドを検出した場合（ステップ２０５）、出力フィルタモジュール１５５は、アプリケーションプログラム１４０が非テキスト要素のビットマップ表現を生成しているかどうかを判断する（ステップ２１０）。
【００６７】
アプリケーションプログラム１４０が非テキスト要素のビットマップ表現を生成していない場合、出力フィルタモジュール１５５は、表示コマンドをサーバエージェント１５０に送信するが（ステップ２１５）、そのコマンドまたはプロトコルで定義される代表的なコマンドをクライアントエージェント１７５に送信する。アプリケーションプログラム１４０が非テキスト要素のビットマップ表現を生成している場合、出力フィルタモジュール１５５は、非テキストの画像のビットマップ表現に対応する１つ以上のチェック値を計算する（ステップ２２０）。
【００６８】
１つ以上の計算したチェック値を使用して、出力フィルタモジュール１５５は、同一の１つ以上のチェック値属性を有する圧縮データフォーマットが存在するかどうかを判断するために（ステップ２２５）、イメージストア１６０を検索する。イメージストア１６０に１つ以上のチェック値と同一の１つ以上のチェック値属性を有する圧縮データフォーマットがある場合、出力フィルタモジュール１５５は、計算を行い、出力フィルタモジュール１５５は、非テキスト要素のビットマップ表現を圧縮データフォーマットと置換する（ステップ２３０）。出力モジュール１５５は、クライアントエージェント１７５への最終的な送信のために、圧縮データフォーマットをサーバエージェント１５０に送信する（ステップ２３０）。出力モジュール１５５は、圧縮データフォーマットとともに置換したビットマップ表現に関連するすべてのコマンドも送信する。
【００６９】
イメージストア１６０に同一の１つ以上のチェック値属性を有する圧縮データフォーマットがある場合、出力モジュール１５５は、圧縮データフォーマットに対応する非テキスト要素のビットマップ表現が持続的記憶装置に対する所定の基準（例えば、上述の基準のいずれか）を満たしているかどうかを判断する（ステップ２３５）。出力モジュール１５５が所定の基準が満たされていると判断した場合（ステップ２３５）、出力モジュール１５５は、圧縮データフォーマットおよび１つ以上の計算したチェック値と同一の対応するチェック値属性をイメージストア１６０の持続的記憶部分に保存する（ステップ２４０）。出力モジュール１５５が所定の基準が満たされていないと判断した場合（ステップ２３５）、出力モジュール１５５は、圧縮データフォーマットおよび１つ以上の計算したチェック値と同一の対応するチェック値属性をイメージストア１６０の一時的記憶部分に保存する（ステップ２４５）。
【００７０】
出力モジュール１５５が圧縮データフォーマットおよび１つ以上の計算したチェック値と同一の対応するチェック値属性をイメージストア１６０に保存すると（ステップ２４０または２４５）、出力モジュール１５５は、非テキスト要素のビットマップ表現を圧縮データフォーマットと置換する（ステップ２３０）。出力モジュール１５５は、クライアントエージェント１７５への最終的な送信のために、圧縮データフォーマットをサーバエージェント１５０に送信する（ステップ２３０）。出力モジュール１５５は、出力モジュール１５５がアプリケーションプログラム１４０から別の表示コマンドを検出する（ステップ２０５）まで、アプリケーションプログラム１４０が生成した出力の監視を継続する。
【００７１】
別の局面では、本発明は、メディアプレゼンテーションを生成する方法、システム、および製品に関する。一実施態様では、メディアストリームの少なくとも一部を表す圧縮データセットは、第１のコンピュータにインターセプトされ、解凍してユーザに表示する第２のコンピュータにネットワークを通じて送信される。別の実施態様では、メディアストリームの少なくとも一部を表す解凍データセットは、第１のコンピュータでインターセプトおよび圧縮され、上記のように、解凍してユーザに表示する第２のコンピュータに送信される。
【００７２】
図３は、本発明の本局面に基づくメディアプレゼンテーションを生成するシステム３００の一実施態様を示す。システム３００は、ネットワーク３１５を通じて第２のコンピュータ、例えば、クライアント３０５と通信する第１のコンピュータ、例えば、サーバ３１０を備える。一般的に、以下に記載される場合を除いて、クライアント３０５、サーバ３１０、およびネットワーク３１５は、上述のように、クライアント１０５、サーバ１１０、およびネットワーク１１５とそれぞれ同じ機能を有する。
【００７３】
図示するように、クライアント３０５は、少なくともクライアント送受信装置３３０と、クライアントエージェント３７５と、プレゼンテーションインターフェイス３４５とを備える。クライアントエージェント３７５は、ソフトウェアプログラムおよび／またはハードウェア装置、例えば、ＡＳＩＣまたはＦＰＧＡとして使用してよい。クライアントエージェント３７５は、ネットワーク３１５を通じて通信するためにクライアント送受信装置３３０を使用し、プレゼンテーションインターフェイス３４５でメディアおよび非メディアコンポーネントを有するプレゼンテーションを生成する。
【００７４】
一実施態様では、サーバ３１０は、アプリケーションサーバである。図示するように、サーバ３１０は、少なくともサーバ送受信装置３３５と、アプリケーションプログラム３４０と、サーバエージェント３５０と、第１の出力フィルタモジュール３５５Ａと、第２の出力フィルタモジュール３５５Ｂとを備える。サーバエージェント３５０、第１の出力フィルタモジュール３５５Ａ、および第２の出力フィルタモジュール３５５Ｂは、ソフトウェアプログラムおよび／またはハードウェア装置、例えば、ＡＳＩＣまたはＦＰＧＡとして使用してよい。サーバエージェント３５０、第１の出力フィルタモジュール３５５Ａ、および第２の出力フィルタモジュール３５５Ｂは、ネットワーク３１５を通じて通信するためにサーバ送受信装置３３５を使用する。
【００７５】
別の実施態様では、上述のコンポーネント３３５、３４０、３５０、３５５Ａ、および３５５Ｂは、互いに通信する複数のサーバを介して、ネットワーク３１５または別のネットワーク（図示せず）を通じて配信および／または複製される。これによって、例えば、メディア関連の機能情報、メディアストリーム、および制御情報の複数のホップを介した複数のクライアントへの送信が可能になる。この代わりに、さらに別の実施態様では、後述するように、コンポーネント３３５、３５０、３５５Ａ、および３５５Ｂのうちの２つ以上が行う機能が単一のコンポーネントによって行われるように、上述のコンポーネント３３５、３５０、３５５Ａ、および３５５Ｂのうちの２つ以上を単一のコンポーネントに組み合わせることが可能である。
【００７６】
さらに別の実施態様では、上述のコンポーネント３４０、３５５Ａ、および３５５Ｂは、同じサーバ３１０で複製される。これによって、例えば、異なる／複数のアプリケーション３４０、および、各アプリケーション内の異なる／複数のメディアストリームに関連する、メディア関連の機能情報、メディアストリーム、および制御情報の同時送信が可能になる。異なるアプリケーション３４０は、主ストリームコンテキスト、および特定の主コンテキスト内のマイナーコンテキストのように異なるメディアストリームとして識別されることがある。
【００７７】
図３に示すアプリケーションプログラム３４０は、その出力の一部としてメディアストリームをレンダリングする何らかのアプリケーションプログラム３４０である。メディアストリームは、ビデオストリーム、オーディオストリーム、または代わりに、それらの複数のインスタンスを組み合わせたものであってよい。さらに、アプリケーションプログラム３４０は、非メディアグラフィック情報を出力することが可能である。このような状況において、非メディアグラフィック情報とは、一般にコーデックまたは、例えば、限定しないがツールバーおよびドロップダウンメニューを含む静的グラフィック情報のような同等物を使用せずに、アプリケーションプログラム３４０が出力するすべてのグラフィック情報のことである。非メディアグラフィック情報には、例えば、ディスプレイ画面上の静的グラフィック情報の位置を特定するための情報も含む。アプリケーションプログラム３４０は、例えば、Ｍｉｃｒｏｓｏｆｔ社（Ｒｅｄｍｏｎｄ、ＷＡ）製のアプリケーションプログラム、ＭＩＣＲＯＳＯＦＴ  ＥＮＣＡＲＴＡであってよい。
【００７８】
一実施態様では、アプリケーションプログラム３４０は、メディアストリームの少なくとも一部を表す圧縮データセットを解凍するために、例えば、サーバ３１０のオペレーティングシステムにインストールされたコーデックなどの外部コーデックを使用する。別の実施態様では、アプリケーションプログラム３４０が使用するコーデックは、アプリケーションプログラム３４０自身に組み込まれる。サーバ３１０は、そのうちの一部が外部コードを使用し、それ以外が組み込みコーデックを使用する、複数のアプリケーションプログラム３４０を備える。
【００７９】
アプリケーションプログラム３４０が外部コーデックを使用してメディアストリームを出力する必要がある場合は、サーバ３１０のオペレーティングシステムが以降の表示に対して、メディアストリームの少なくとも一部を表す圧縮データセットを解凍するために外部コーデックを使用するように要求する。アプリケーションプログラム３４０が使用するコーデックがアプリケーションプログラム３４０自身に組み込まれている場合は、メディアストリームの出力が必要なときに、以降の表示に対して、組み込みコーデックを使用して圧縮データセット自身を解凍する。加えて、アプリケーションプログラム３４０は、非メディアグラフィック情報に関連するグラフィック表示コマンドを生成し、サーバ３１０のオペレーティングシステムに送信することが可能である。サーバエージェント１５０またはクライアントエージェント１７５のオペレーティングシステムが、例えば、Ｍｉｃｒｏｓｏｆｔ社（Ｒｅｄｍｏｎｄ、ＷＡ）製のＷｉｎｄｏｗｓ（登録商標）ファミリのオペレーティングシステムのメンバーである場合は、これらのグラフィック表示コマンドは、ＤｉｒｅｃｔＳｈｏｗ（登録商標）、ＤｉｒｅｘｔＸ（登録商標）、またはＧＤＩ機能の起動となって現れる。
【００８０】
本発明によれば、アプリケーションプログラム３４０は、アプリケーションプログラム３４０がサーバ３１０でメディアおよび非メディアコンポーネントを有するプレゼンテーションを生成していたかのように、これらのタスクを実行する。後述するように、第１の出力フィルタモジュール３５５Ａ、第２の出力フィルタモジュール３５５Ｂ、およびサーバエージェント３５０は、外部コーデックに渡される圧縮データセット、組み込みコーデックが生成した解凍データセット、および非メディアグラフィック情報に関連するグラフィック表示コマンドをインターセプトし、（最初に組み込みコーデックが生成した解凍データセットを圧縮した後に）ネットワーク３１５を通じてそれらをクライアントエージェント３７５に送信する。後述するように、クライアントエージェント３７５は、次いで受信した圧縮データセットを解凍し、クライアント３０５のプレゼンテーションインターフェイス３４５でメディアおよび非メディアコンポーネントを有するプレゼンテーションを生成するために、クライアント３０５のオペレーティングシステムに対して非メディアグラフィック情報に関連する同一または同様のグラフィック表示コマンドを発行する。いくつかの実施態様、例えば、後述のＤｉｒｅｃｔＳｈｏｗ（登録商標）の実施態様では、サーバエージェント３５０とクライアントエージェント３７５との間の通信には、メディア関連機能（例えば、バッファおよびメディアタイプ特性、メディアストリームの優先度など）、または制御情報（例えば、再生、一時停止、フラッシュ、ストリームの終了、および停止コマンド、親ウィンドウの割り当て、ウィンドウの位置決めおよびクリップコマンド、スクロール、オーディオ調整コマンド、ボリューム、バランスなど）に関する情報を含む。
【００８１】
第１の出力フィルタモジュール３５５Ａおよび第２の出力フィルタモジュール３５５Ｂは、外部コーデックを使用するアプリケーションプログラム３４０がメディアストリームを出力するために外部コーデックを起動する際に起動される。第１の出力フィルタモジュール３５５Ａは、メディアストリームの少なくとも一部を表す元の圧縮データセットをインターセプトする。外部コーデックが行うものとして、このデータセットを解凍する代わりに、第１の出力フィルタモジュール３５５Ａは、ネットワーク３１５を通じて元の圧縮データセットをクライアントエージェント３７５に送信する。ＯＳレベルのレンダラとして機能する第２の出力フィルタモジュール３５５Ｂは、ストリーム独立（汎用）制御コマンド（例えば、再生、一時停止、停止、フラッシュ、ストリームの終了）を取り込み、ネットワーク３１５を通じてその情報をクライアントエージェント３７５に送信する。メディアストリームがビデオストリームを含む場合には、第２の出力フィルタモジュール３５５Ｂはまた、ディスプレイ画面上にビデオストリーム（例えば親ウィンドウの割り当て、位置決めおよびクリップコマンド）の画像を位置決めするための情報を取り込み、ネットワーク３１５を通じてその情報をクライアントエージェント３７５に送信する。メディアストリームがオーディオストリームを含む場合には、第２の出力フィルタモジュール３５５Ｂはまた、オーディオ調整（例えば、音量およびバランス調整コマンド）のための情報を取り込み、ネットワーク３１５を通じてその情報をクライアントエージェント３７５に送信する。
【００８２】
別の実施態様では、メディアストリームを出力するために、組み込みコーデックを使用するアプリケーションプログラム３４０が、例えば、ＯＳレベルのレンダラの起動を試みる際に、第２の出力フィルタモジュール３５５Ｂが起動される。第２の出力フィルタモジュール３５５Ｂは、アプリケーションプログラム３４０の出力からメディアストリームの少なくとも一部を表す第１の解凍データセットをインターセプトする。第２の出力フィルタモジュール３５５Ｂは、後述するように、次いでインターセプトした第１の解凍データセットを圧縮し、ネットワーク３１５を通じてその結果の圧縮データセットをクライアントエージェント３７５に送信する。上記のように、第２の出力フィルタモジュール３５５Ｂはまた、メディアストリームがオーディオストリームを含む場合には、ディスプレイ画面にビデオストリームの画像を位置決めするための情報を取り込み、ネットワーク３１５を通じてその結果の圧縮データセットをクライアントエージェント３７５に送信する。
【００８３】
サーバエージェント３５０またはクライアントエージェント３７５のためのオペレーティングシステムが、Ｍｉｃｒｏｓｏｆｔ社（Ｒｅｄｍｏｎｄ、ＷＡ）製のＷｉｎｄｏｗｓ（登録商標）ファミリのオペレーティングシステムのメンバーである場合は、サーバエージェント３５０は、サーバ３１０にインストールされた他のフィルタのフィルタメリットレベルを超えるＤｉｒｅｃｔＳｈｏｗ（登録商標）  Ｔｒａｎｓｆｏｒｍフィルタを提供することによって、このインターセプト機能を使用することが可能である。周知のように、ＷＩＮＤＯＷＳ（登録商標）ファミリのオペレーティングシステムによって、特定のタイプのメディアエンコーディングを処理することが可能な複数のフィルタをインストールすることが可能である。フィルタに割り当てられたメリットレベルは、フィルタに与える優先度を判断し、より高いメリットレベル、すなわち、優先度を有するフィルタは、より低いメリットレベルでフィルタ処理する前にメディアタイプを処理するように選択される。例えば、ビデオ、オーディオ、ＭＩＤＩ、テキストなどの種々のメディアタイプのサポートは、システムレジストリへの変更を介してＴｒａｎｓｆｏｒｍフィルタを所望のメディアタイプと関連付けることが可能である。さらに、レジストリへの変更を介して、Ｔｒａｎｓｆｏｒｍフィルタは、特定のＲｅｎｄｅｒｅｒフィルタと関連付けることが可能である。特に、このフレームワークは拡張可能であり、新しいタイプのメディアプログラミングの将来的なサポートが可能になる。
【００８４】
Ｗｉｎｄｏｗｓ（登録商標）環境では、サーバエージェント３５０は、変更したＤｉｒｅｃｔＳｈｏｗＲ  ＴｒａｎｓｆｏｒｍおよびＲｅｎｄｅｒｅｒフィルタを使用して、そのクライアント通信機能を使用することができる。受信したメディアデータを変換（解凍）する代わりに、変更したＴｒａｎｓｆｏｒｍフィルタは、クライアントエージェント３７５にデータを送信する。変換（解凍）メディアデータをレンダリングする代わりに、Ｒｅｎｄｅｒｅｒフィルタは、ストリーム汎用（例えば、再生、一時停止、フラッシュ、ストリームの終了）およびストリーム固有（例えば、ビデオ親ウィンドウ割当て、位置決めおよびクリップ、オーディオボリュームおよびバランス調整）コマンドの両方を送信する。そしてまた、クライアント３０５がＷｉｎｄｏｗｓ（登録商標）オペレーティングシステムを用いる場合、クライアント３０５で変更したＤｉｒｅｃｔＳｈｏｗ（登録商標）ソースフィルタは、送信されたメディアおよびストリーム汎用制御データを受信するように機能することが可能である。最終的に、クライアント３０５で未変更のＴｒａｎｓｆｏｒｍおよびＲｅｎｄｅｒｅｒフィルタは、ユーザが見たり聞いたりするためにメディアデータを変換（解凍）する。Ｒｅｎｄｅｒｅｒフィルタは、ストリーム特定の制御データも受信する。
【００８５】
一実施態様では、サーバエージェント３５０は、各メディアストリームに対する別々のメディアキューを保持する。サーバエージェント３５０とクライアントエージェント３７５との間のネットワーク帯域幅が不足している場合には、各メディアストリームを優先付けすることが可能であり、例えば、リアルタイムのビデオ会議情報の送信とともに、ウェブブラウザからの静止画像の送信を透過的に減速または停止させることが可能になる。ストリームの優先順位付けは、別々のキューを異なるタイプのメディアに提供することによって達成され、各ストリームは割り当てられた優先度を有する。ネットワーク帯域幅は、例えば、予想ターゲットのサーバに「Ｐｉｎｇを通して」反応時間を測定するような、従来技術において周知の複数の方法のうちのいずれかによって判断することが可能である。メディアストリームが組み込みタイミング情報を含む実施態様に関して、その情報は、メディアデータが十分高速で送信されていない、すなわち、そのチャネルの帯域幅がその送信をサポートできないかどうかの判断に使用することが可能である。
【００８６】
別の実施態様では、同じアプリケーションプログラム３４０に対応するメディアキューは、メディアタイプ（ビデオ、オーディオ、ＭＩＤＩ、テキストなど）に基づいた異なる優先度を有してよい。サーバエージェント３５０とクライアントエージェント３７５との間のネットワーク帯域幅が全てのメディアストリームを収容するには不十分である場合には、より高い優先度のキューが途切れることなくサービスするように、より低い優先度のキューからサンプルを省略、すなわち、削除することが可能である。例えば、ビデオ送信が途切れて「スライドモード」で表示されても、オーディオは依然として途切れないことがある。別の実施態様では、制御情報はそれ自身の制御キューに関連し、あらゆるメディアデータより先に制御データを優先順位付けすることが可能になる。
【００８７】
この環境では、サーバエージェント３５０からクライアントエージェント３７５への制御情報の送信によって、フィルタのスケジューラをレンダリングしているクライアントの制御が可能になる。最初の再生における待ち時間は、再生が始まる前にできるだけ速くクライアントエージェント３７５のメディアキュー（図示せず）を予め満たしておくことによって減じることが可能である。同様に、ネットワークの待ち時間の以降の変動は、必要に応じてクライアントエージェントの３７５のメディアキューを再調整することによって対処することが可能である。クライアントエージェント３７５は、１つ以上のそのメディアキューが特定のリソースの閾値以下になるか、またはそれを越えたことを検出しなければならず、次いでクライアントエージェント３７５は、所望のメディアキューの調整量に対してバーストまたは停止要求をそれぞれサーバエージェント３５０に送信することがある。
【００８８】
Ｗｉｎｄｏｗｓ（登録商標）環境でのＤｉｒｅｃｔＳｈｏｗ（登録商標）機能の使用は、オペレーティングシステムが提供する機能を活用し、重複する機能の再実行を減少または排除する。例えば、クライアントエージェント３７５が提供するグラフィックまたはメディア表示は、オペレーティングシステム機能を活用して複雑なクリップおよびオーディオ制御機能を提供する。クライアントエージェント３７５はまた、オペレーティングシステムが提供するＤｉｒｅｃｔＤｒａｗ（登録商標）およびＤｉｒｅｃｔＳｏｕｎｄ（登録商標）の機能を用いることができ、必要なＣＰＵリソースを減じて全体的な性能を改善する。
【００８９】
別の実施態様では、サーバエージェント３５０は、アプリケーションプログラム３４０から出力された非メディアグラフィック情報に関連するグラフィック表示コマンドをインターセプトし、ネットワーク３１５を介してクライアントエージェント３７５に送信する。
【００９０】
加えて、一実施態様では、第１の出力フィルタモジュール３５５Ａ、第２の出力フィルタモジュール３５５Ｂ、またはその両方（アプリケーションプログラム３４０が外部コーデックを使用する場合）、または第２の出力フィルタモジュール３５５Ｂ（アプリケーションプログラム３４０が組み込みコーデックを使用する場合）は、メディアストリームに関連するタイミング情報を取り込み、ネットワーク３１５を通じてそのタイミング情報をクライアントエージェント３７５に送信する。より詳しくは、出力フィルタモジュール３５５Ａ、３５５Ｂは、メディアストリームの各フレームに対するプレゼンテーション時間を取り込み、クライアントエージェント３７５に送信することによって、クライアントエージェント３７５は、ビデオおよびオーディオストリームを同期させ、適切なフレーム速度を維持することが可能になる。
【００９１】
図示のように、サーバエージェント３５０は、サーバ送受信装置３３５およびアプリケーションプログラム３４０と接続する。一実施態様では、後述するように、サーバエージェント３５０は、クライアントエージェント３７５がサポートするメディアフォーマットのリストをネットワーク３１５を通じてクライアントエージェント３７５から受信する。サポートするメディアフォーマットのリストを受信すると、サーバエージェント３５０は、サーバ３１０の構成を操作して出力フィルタモジュール３５５Ａ、３５５Ｂを登録する。一実施態様では、例えば、サーバエージェント３５０は、サーバ３１０のレジストリを編集することによって出力フィルタモジュール３５５Ａ、３５５Ｂを登録する。サーバエージェント３５０は、次いでサーバ３１０が全てのこのようなメディアフォーマットを処理できることをクライアントエージェント３７５に通知する。別の実施態様では、クライアントエージェント３７５およびサーバエージェント３５０は、サポートするフォーマットおよび機能を必要に応じた基準でネゴシエートする。例えば、クライアントエージェント３７５は、サーバエージェント３５０が特にクライアントエージェント３７５によるＪＰＥＧ２０００の作成を要求するまで、ＪＰＥＧ２０００フォーマットメディアへのそのサポートのサーバエージェント３５０への通知を延期する。
【００９２】
さらに別の実施態様では、アプリケーションプログラム３４０が第１の出力フィルタモジュール３５５Ａをロードしながらメディアストリームをレンダリングする場合は、フィルタモジュール３５５Ａはサーバエージェント３５０と通信し、そして次にメディアストリーム特性である、割付けルーチン、メディアタイプ、メディアストリームの優先度などを提供してメディアストリームを作成する要求をクライアントエージェント３７５に送信する。クライアントエージェント３７５は、要求の成功または失敗を示すことによってメディアストリームを作成するというサーバエージェント３５０の要求に応答する。要求の成功または失敗は、クライアント３０５でのメディアストリームの解凍が可能で、十分なメモリがあるなどのそれぞれのフィルタモジュールの可用性に依存する。成功した場合は、アプリケーションプログラム３４０は、第２の出力フィルタモジュール３５５Ｂをロードして第１の出力フィルタモジュール３５５Ａに接続することによって、圧縮メディアの効率的なストリーミングを提供する。失敗した場合は、アプリケーションプログラム３４０は、第１の出力フィルタモジュール３５５Ａをアンロードし、Ｍｉｃｒｏｓｏｆｔネイティブの、またはサードパーティが供給する出力フィルタモジュールをロードして、サーバ３１０でストリームの解凍およびレンダリングを行う。例えば、クライアント３０５で基本オペレーティングシステムが、ＤＩＲＥＣＴＸおよびＤＩＲＥＣＴＳＨＯＷを実行するＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳ（登録商標）ファミリのメンバーである場合、第１の出力フィルタモジュール３５５Ａおよび第２の出力フィルタモジュール３５５Ｂは、サーバエージェント３５０と直接通信する。
【００９３】
クライアント３０５では、クライアントエージェント３７５がクライアント送受信装置３３０およびプレゼンテーションインターフェイス３４５と接続する。後述するように、クライアントエージェント３７５は、クライアントエージェント３７５がサポートするメディアフォーマットをサーバエージェント３５０に最初に通知する。クライアントエージェント３７５はまた、圧縮データセットおよび何らかの関連するタイミング情報をネットワーク３１５を通じて出力フィルタモジュール３５５Ｂから受信する。さらに、クライアントエージェント３７５は、ネットワーク３１５を通じて、サーバエージェント３５０からのストリーム汎用（例えば、再生、一時停止、フラッシュ、ストリームの終了）およびストリーム固有（例えば、ビデオ親ウィンドウ割当て、位置決めおよびクリップ、オーディオボリュームおよびバランス調整）コマンドの両方、非メディアグラフィック情報に関連するグラフィック表示コマンドを、第２の出力フィルタモジュール３５５Ｂから受信する。
【００９４】
クライアントエージェント３７５は、外部または組み込みコーデックのいずれかを使用して圧縮データセットを解凍し、非メディアグラフィック情報に関連するグラフィック表示コマンド、ビデオストリームの画像をディスプレイ画面に位置決めするための何らかの情報、および何らかのタイミング情報とともに、プレゼンテーションインターフェイス３４５でのメディアプレゼンテーションを生成する。一実施態様では、プレゼンテーションインターフェイス３４５は、例えば、ビデオプレゼンテーションなどのグラフィック表示をレンダリングするディスプレイ画面を有する。別の実施態様では、プレゼンテーションインターフェイス３４５は、オーディオプレゼンテーションをレンダリングするスピーカを含む。クライアント３０５は、複数のプレゼンテーションインターフェイス３４５を含んでよい。
【００９５】
クライアントエージェント３７５がサポートするメディアフォーマットの特定によって提供される情報によって、サーバ３１０での動作モードを判断することが可能である。圧縮データセットが、クライアントエージェント３７５がサポートしていないフォーマットである場合は、第２の出力フィルタモジュール３５５Ｂが解凍データセットをサポートされたフォーマットに再圧縮することが可能である。別の実施態様では、クライアントエージェント３７５がストリームのフォーマットをサポートしない場合は、アプリケーションプログラム３４０が第１の出力フィルタモジュール３５５Ａをアンロードし、第１の出力フィルタモジュール３５５Ａをアンロードし、Ｍｉｃｒｏｓｏｆｔネイティブの、またはサードパーティが供給する出力フィルタモジュールをロードして、サーバ３１０でストリームの解凍およびレンダリングを行う。
【００９６】
図４Ａ、４Ｂ、および４Ｃを参照して、図３の例示的実施態様を使用して、クライアント３０５でメディアプレゼンテーションを生成する、方法４００の一実施態様を示す。クライアント３０５およびサーバ３１０は、どちらもネットワーク３１５に接続され、ステップ４０４では、クライアントエージェント３７５は、クライアントエージェント３７５がサポートするすべてのメディアフォーマットをサーバエージェント３５０に通知する。一実施態様では、サポートされるメディアフォーマットのリストは、クライアント３０５にインストールされた外部コーデックを数えることによって作成される。例えば、クライアント３０５のオペレーティングシステムにインストールされるコーデックは、クライアントエージェント３７５によって数えられ、ネットワーク３１５を通じてサーバエージェント３５０に送信される。別の実施態様では、サポートされるメディアフォーマットのリストは、クライアントエージェント３７５の組み込みコーデックを数えることによって作成される。例えば、クライアントエージェント３７５がソフトウェアプログラムとして使用される場合は、ソフトウェアプログラムに組み込まれたコーデックは、クライアントエージェント３７５によって数えられ、ネットワーク３１５を通じてサーバエージェント３５０に送信される。この代わりに、クライアントエージェント３７５は、サポートするメディアフォーマットのリストを作成し、クライアント３０５にインストールされた外部コーデックおよびクライアントエージェント３７５に組み込まれたコーデックの両方を数えることによって、これらのサポートするメディアフォーマットをサーバエージェント３５０に通知する。さらに別の実施態様では、クライアントエージェント３７５およびサーバエージェント３５０は、サポートするフォーマットおよび機能を必要に応じた基準でネゴシエートする。例えば、クライアントエージェント３７５は、サーバエージェント３５０が特にクライアントエージェント３７５によるＪＰＥＧ２０００の作成を要求するまで、ＪＰＥＧ２０００フォーマットメディアへのそのサポートのサーバエージェント３５０への通知を延期する。
【００９７】
別の実施態様では、ストリームを作成した際に、プレストリーム基準に関して機能をネゴシエートする。クライアントエージェント３７５は、要求の成功または失敗を示すことによってメディアプレゼンテーションを作成するというサーバエージェント３５０の要求に応答する。要求の成功または失敗は、クライアント３０５でのデータの解凍が可能で、十分なメモリがあるなどのそれぞれのフィルタモジュールの可用性に依存する。成功した場合は、アプリケーションプログラム３４０は、第２の出力フィルタモジュール３５５Ｂをロードすることによって、グラフィックデータの効率的な表示を提供する。失敗した場合は、アプリケーションプログラム３４０は、Ｍｉｃｒｏｓｏｆｔネイティブの、またはサードパーティが供給するコーデックをロードし、サーバ３１０でのデータの解凍およびレンダリングを行う。
【００９８】
一実施態様では、クライアントエージェント３７５は、グローバル一意識別子（「ＧＵＩＤ」）を生成し、各ＧＵＩＤを特定のコーデックと関連づける。クライアントエージェント３７５は、次いで生成したＧＵＩＤのリストをサーバエージェント３５０に送信して、クライアントエージェント３７５がサポートするメディアフォーマットをサーバエージェント３５０に通知する。別の実施態様では、クライアントエージェント３７５は、４つそれぞれの文字コードが特定のコーデックに関連する４つの文字コードをサーバエージェント３５０に送信して、クライアントエージェント３７５がサポートするメディアフォーマットをサーバエージェント３５０に通知する。
【００９９】
クライアントエージェント３７５からサポートするメディアフォーマットのリストを受信すると、ステップ４０８でサーバエージェント３５０は、サポートするメディアフォーマットに関連する第１の出力フィルタモジュール３５５Ａおよび／または第２の出力フィルタモジュール３５５Ｂをサーバ３１０に登録する。ステップ４１２でサーバエージェント３５０は、サーバ３１０が数えたメディアフォーマットを全て処理できることをクライアントエージェント３７５へ報告する。
【０１００】
ステップ４１６では、アプリケーションプログラム３４０は、サーバ３１０上で実行を開始する。アプリケーションプログラム３４０がステップ４２０で、例えばメディアストリームなどのメディアコンテンツの存在を識別した場合は、第１の出力フィルタモジュール３５５Ａ、第２の出力フィルタモジュール３５５Ｂまたはその両方が起動される。ステップ４２４でアプリケーションプログラム３４０が外部コーデックを使用する場合は、ステップ４２８で第１の出力フィルタモジュール３５５Ａおよび第２の出力フィルタモジュール３５５Ｂのどちらも起動され、アプリケーションプログラム３４０は外部コーデックの起動を試みる。次いで第１の出力フィルタモジュール３５５Ａは、ステップ４３２でメディアストリームの少なくとも一部を表す元の圧縮データセットをインターセプトし、ステップ４３６でそのデータセットを解凍せずに元の圧縮データセットをクライアントエージェント３７５に送信する。ステップ４４０でクライアントエージェント３７５は、元のデータセットを受信し、ステップ４４４でその元のデータセットを解凍して解凍データセットを生成する。クライアントエージェント３７５は、クライアント３０５にインストールされた外部コーデックか、またはクライアントエージェント３７５自身に組み込まれたコーデックを使用して、元の圧縮データセットを解凍する。
【０１０１】
その代わりに、ステップ４２４でアプリケーションプログラム３４０がアプリケーションプログラム３４０自身に組み込まれたコーデックを使用する場合は、ステップ４４８で第２の出力フィルタモジュール３５５Ｂが起動され、アプリケーションプログラム３４０が解凍データセットを表示するためにＯＳレベルのレンダラの起動を試みる。次いでステップ４５２で第２の出力フィルタモジュール３５５Ｂは、アプリケーションプログラム３４０の出力から、メディアストリームの少なくとも一部を表す第１の解凍データセットをインターセプトし、ステップ４５６でインターセプトした第１の解凍データセットを圧縮する。ステップ４５６でメディアストリームを圧縮するために、非可逆圧縮技術および可逆圧縮技術を含む様々な圧縮技術を第２の出力フィルタモジュール３５５Ｂで使用することが可能である。
【０１０２】
メディアストリームがビデオストリームであれば、ステップ４５６でインターセプトした第２の解凍データセットを、例えば、ＭＪＰＥＧ圧縮などの軽量の非可逆ビデオエンコーディングアルゴリズムを使用して、第２の出力フィルタモジュール３５５Ｂによって圧縮することが可能である。軽量の非可逆ビデオエンコーディングアルゴリズムの使用では、第２の出力フィルタモジュール３５５Ｂは、所望の圧縮比を選択するか、または所定の圧縮比を使用することが可能である。第２の出力フィルタモジュール３５５Ｂが選択する品質損失の程度は、概して、ネットワーク接続の利用可能帯域幅に依存する。例えば、クライアント３０５のユーザが低速のモデムを使用してネットワーク３１５に接続する場合は、第２の出力フィルタモジュール３５５Ｂは、低品質ビデオの使用を選択することが可能である。一方で、クライアント３０５のユーザがＬＡＮリンクまたはブロードバンド接続を使用してネットワーク３１５に接続する場合は、第２の出力フィルタモジュール３５５Ｂは、高品質ビデオの使用を選択することが可能である。
【０１０３】
ステップ４５６でのインターセプトした第１の解凍データセットの圧縮に続いて、ステップ４６０で第２の出力フィルタモジュール３５５Ｂは、第１の解凍データセットの代わりに圧縮データセットをクライアントエージェント３７５に送信する。ステップ４６４でクライアントエージェント３７５は圧縮データセットを受信し、ステップ４６８でその圧縮データセットを解凍して第２の解凍データセットを生成する。また、クライアントエージェント３７５は、クライアント３０５にインストールされた外部コーデックか、またはクライアントエージェント３７５自身に組み込まれたコーデックを使用して、圧縮データセットを解凍する。
【０１０４】
アプリケーションプログラム３４０が外部または組み込みコーデックを使用するかどうかに関わらず、ステップ４７０でメディアストリームがビデオストリームを含む場合は、ステップ４７２で第２の出力フィルタモジュール３５５Ｂは、ディスプレイ画面にビデオストリームの画像を位置決めするための情報を取り込み、ネットワーク３１５を通じて取り込んだ情報をクライアントエージェント３７５送信する。ステップ４７４でクライアントエージェント３７５は、ディスプレイ画面にビデオストリームの画像を位置決めするための情報を受信する。
【０１０５】
また、アプリケーションプログラム３４０が外部または組み込みコーデックを使用するかどうかに関わらず、さらには、ステップ４７０でメディアストリームがビデオストリームを含んでいるかどうかに関わらず、ステップ４７６でサーバエージェント３５０は、アプリケーションプログラム３４０が出力した非メディアグラフィック情報に関連するグラフィック表示コマンドをインターセプトし、ネットワーク３１５を通じてクライアントエージェント３７５に送信する。ステップ４８０でクライアントエージェント３７５は、非メディアグラフィック情報に関連するグラフィック表示コマンドを受信する。
【０１０６】
ステップ４８４で出力フィルタモジュール３５５Ａ、３５５Ｂがメディアストリームに関連するタイミング情報を取り込む場合には、ステップ４８８で出力フィルタモジュール３５５Ａ、３５５Ｂは、そのタイミング情報をクライアントエージェント３７５に送信する。ステップ４９２でクライアントエージェント３７５はタイミング情報を受信し、ステップ４９６でプレゼンテーションインターフェイス３４５でのメディアプレゼンテーションを生成する。プレゼンテーションインターフェイス３４５でメディアプレゼンテーションを生成するために、クライアントエージェント３７５は、タイミング情報と、非メディアグラフィック情報に関連するグラフィック表示コマンドと、メディアストリームがビデオストリームを含む場合には、ディスプレイ画面にビデオストリーム画像を位置決めするための情報とを使用して、解凍データセット（または、より詳しくは、アプリケーションプログラム３４０が組み込みコーデックを使用する場合には、第２の解凍データセット）を非メディアグラフィック情報と継ぎ目なく組み合わせる。
【０１０７】
出力フィルタモジュール３５５Ａ、３５５Ｂがメディアストリームに関連するタイミング情報を取り込まない場合には、ステップ４９６でクライアントエージェント３７５は、解凍データセット（または、より詳しくは、アプリケーションプログラム３４０が組み込みコーデックを使用する場合には、第２の解凍データセット）と、非メディアグラフィック情報に関連するグラフィック表示コマンドと、メディアストリームがビデオストリームを含む場合には、ディスプレイ画面にビデオストリーム画像を位置決めするための情報とだけを使用して、プレゼンテーションインターフェイス３４５でメディアプレゼンテーションを生成する。
【０１０８】
図５Ａ乃至５Ｃは、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳ（登録商標）ファミリのオペレーティングシステムから選択したオペレーティングシステムを使用して、サーバ上で実行される本発明の別の実施態様を示す。クライアントでのオペレーティングシステムは、サーバに用いられるオペレーティングシステムと同じオペレーティングシステムである必要はない。
【０１０９】
サポートされる主要なメディアタイプ（例えば、ビデオ、オーディオ、ＭＩＤＩ、テキスト）に関して、第１の出力フィルタモジュール３５５Ａおよび第２の出力フィルタモジュール３５５Ｂは、サーバ３１０に登録される（ステップ５０４）。上述のように、識別したメディアタイプは例示的であり、このアーキテクチャを用いて、将来的なメディアタイプを本発明によるオペレーションに追加することが可能である。
【０１１０】
アプリケーションプログラム３４０は、サーバで実行され（ステップ５０８）、メディアストリームは、アプリケーションプログラム３４０の出力の中で識別される（ステップ５１２）。一実施態様では、メディアストリームは、アプリケーションがＷＩＮＤＯＷＳ（登録商標）メディアサブシステムにシステムコールを行ってそのメディアストリームを処理する好適なコーデックを見出したときに識別される。アプリケーションプログラム３４０は、アプリケーションの出力に識別されるメディアストリームの主メディアタイプに対応し、この主メディアタイプを処理できるものとしてシステムに登録されたいずれかのフィルタのうちの最も高いメリットを有する、第１の出力フィルタモジュール３５５Ａをロードする（ステップ５１６）。第１の出力フィルタモジュール３５５Ａは、サーバエージェント３５０と通信してクライアントエージェント３７５が次の送信プロパティで指定されたメディアストリームを作成すること要求する：割付けルーチン（バッファ）特性、メディアタイプ（主：ビデオ、オーディオなど；マイナー：ＭＰＥＧ−１、ＭＰＥＧ−２など；フォーマットなど）、オンデマンドの品質管理のためのメディアストリームの優先度など。
【０１１１】
各ターミナルサービスセッションの間、サーバエージェント３５０は、異なるコンテキストのメディアストリームを編成する。アプリケーションプログラム３４０の異なるインスタンスから生じるメディアストリームは、異なる主コンテキストを有する。アプリケーションプログラム３４０の同じインスタンスから生じるメディアストリームは、同じ主コンテキストの中で異なるマイナーコンテキストを有する。サーバエージェント３５０は、各主コンテキストのための制御情報、および各マイナーコンテキストのためのメディアサンプルキューに対するコマンドキューを作成する。メディアサンプルキューは、例えば、再生速度を保持するために省略されるビデオデータの一部のフレームおよび種々のストリームからどのデータを省略するかを選択できるようにすることで、サーバエージェント３５０の帯域幅およびネット枠の待ち時間の変動への適応を助力する。例えば、オーディオデータを破棄する前にビデオデータを破棄することができる。
【０１１２】
異なる主コンテキストのキューは、ラウンドロビン形態でサービスされる。主コンテキストの中で、制御キューは最も高い優先度を有し、一方で、異なるマイナーコンテキストに対応するメディアキューは、ストリームの性質に基づく異なる優先度を有することがある。一般に、オーディオストリームはビデオストリームよりも高い優先度を有する。
【０１１３】
クライアントエージェント３７５は、送信した要求に指定されたメディア特性に適合するメディアストリームの作成を試みる（ステップ５２０）。クライアントエージェント３７４のオペレーティングシステムが、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）ファミリのオペレーティングシステムのメンバーである場合は、クライアントエージェント３７５は、汎用ソースフィルタモジュールをロードし、それをメディアストリームの解凍およびレンダリングが可能なネイティブまたはサードパーティが提供する出力フィルタモジュールへの接続を試みる。異なるオペレーティングシステムを用いたクライアントエージェント３７５は、同じ結果を達成するために異なるアクションを行うことができる。例えば、クライアントは、例えば、ＭＰＥＧ−１のビデオストリームなどのメディアストリームの解凍およびレンダリングが可能な、マルチメディアアプリケーションのサービスをロードおよび使用することが可能である。
【０１１４】
クライアントエージェント３７５は、特定のメディアストリームを作成する要求が成功したかどうかを示す応答をサーバエージェント３５０に送信する（ステップ５２４）。サーバエージェント３５０は、次にアプリケーションプログラム３４０にこの情報を提供することが可能である。クライアントがストリームの作成に成功した場合、アプリケーションプログラム３４０は、次いで高機能なＤＩＲＥＣＴＳＨＯＷを使用して、第２の出力フィルタモジュール３５５Ｂをロードし、それを第１の出力フィルタモジュール３５５Ａに接続し（ステップ５２８）、それによって圧縮メディアおよびクライアントエージェント３７５に送信した制御情報の処理が可能になる。
【０１１５】
第１の出力フィルタモジュール３５５Ａは、メディアストリームおよびタイミング情報の少なくとも一部を表す元の圧縮データセットをインターセプトし、さらにフォーマットの変化のようなメディアタイプの動的な変化を検出する（ステップ５３２）。第２の出力フィルタモジュール３５５Ｂは、メディアストリーム汎用コマンド（例えば、再生、一時停止、フラッシュ、ストリームの終了）およびストリーム固有コマンド（例えば、ビデオ親ウィンドウ割当て、位置決めおよびクリップ、オーディオボリュームおよびバランス調整）をインターセプトする（ステップ５３６）。
【０１１６】
サーバエージェント３５０は、選択的にタイミング情報を含む元の圧縮データセットをクライアントエージェント３７５送信する（ステップ５４０）。帯域幅が制限されている場合は、サーバエージェント３５０は、サンプルをより低い優先度のメディアキューから省略して、帯域幅がより高い優先度のメディアキューを利用できるようにすることが可能である。優先度が等しいメディアキューは、ラウンドロビン形態でサービスされる。加えて、第２の出力フィルタモジュール３５５Ｂのサーバエージェント３５０、およびその結果、クライアントエージェント３７５への転送率は、再生が始まる前にネットワークスループットが許容する範囲でできるだけ速くクライアントのメディアキューを予め満たして、初期の再生における待ち時間を減じるように制御される。その後に、クライアントエージェント３７５のメディアキューは、後述するように、ネットワークの待ち時間の変動に適応するため使用される。サーバエージェント３５０はまた、クライアントエージェント３７５に制御情報を送信する（ステップ５４４）。概して、制御情報は、ネットワーク帯域幅の可用性に関する制約にかかわらず、破棄されることはない。
【０１１７】
クライアントエージェント３７５は、元の圧縮データセット、および任意のタイミング情報を受信する（ステップ５４８）。クライアントエージェント３７５はまた、制御情報および、例えば、フォーマットの変化などのメディアタイプの動的な変化の何らかの通知を受信する（ステップ５５２）。サーバエージェント３５０と同様に、クライアントエージェント３７５は、各主コンテキストのための制御情報、および各マイナーコンテキストのためのメディアサンプルキューに対するコマンドキューを作成する。メディアサンプルキューは、クライアントエージェント３７５が帯域幅およびネットワークの待ち時間の変動に適応させる。異なる主コンテキストの制御キューは、ラウンドロビン形態でサービスされる。本実施態様では、ＤＩＲＥＣＴＳＨＯＷ技術を使用することで、キューのメディアサンプルを、タイミング情報に基づいた関連する１つ以上のソースフィルタモジュールによって使用することができる。
【０１１８】
クライアントエージェントは、ステータス通知をサーバエージェントに送信する（ステップ５５６）。これらの通知には、要求されたメディアストリームの作成におけるクライアントの成功または失敗の表示を含む。帯域幅またはネットワークの待ち時間の変動は、必要に応じてクライアントエージェントの３７５のメディアキューを調整することによって対処することが可能である。クライアントエージェント３７５は、１つ以上のそのメディアキューが特定のリソースの閾値以下になるか、またはそれを越えたことを検出しなければならず、次いでクライアントエージェント３７５は、所望のメディアキューの調整量に対してバーストまたは停止要求をそれぞれサーバエージェント３５０に送信することが可能である。クライアントエージェント３７５は、メディアプレゼンテーションの生成時に遭遇する予想外のエラーに関するステータス情報を送信することが可能である。クライアントのフロー調整がタイムリに作用せず、結果的に、メディアキューが減らされたりオーバーフローする場合は、クライアントエージェント３７５は、キューの再バッファを一時停止するか、または要求に応じてメディアサンプルを省略する（ステップ５６０）。
【０１１９】
ネイティブまたはサードパーティが供給する出力フィルタモジュール（変換フィルタ）は、受信した圧縮データセットを解凍して解凍データセットを生成する（ステップ５６４）。クライアントエージェント３７５は、制御情報、タイミング情報、およびフィルタモジュールの選択（例えば、汎用ソースフィルタモジュールのインスタンス、ネイティブまたはサードパーティの出力フィルタモジュールの接続したインスタンスなど）に対するメディアタイプの動的な変化を適用する（ステップ５６８）。
【０１２０】
例えば、適切なフィルタモジュール、処理リソース、メモリの不足、または他の理由によって、クライアントが要求されたメディアストリームを作成できなかった場合、サーバ３１０上で実行されるアプリケーションプログラム３４０は、高機能な接続ロジックのＤＩＲＥＣＴＳＨＯＷを使用して、第１の出力フィルタモジュール３５５Ａをアンロードし、続けてネイティブまたはサードパーティが供給する出力フィルタモジュールをロードして、サーバ３１０でデータストリームの解凍およびレンダリングを行う（ステップ５７０）。
【０１２１】
ネイティブまたはサードパーティが供給する出力フィルタモジュールのロードおよび動作とともに、メディアストリームの少なくとも一部を表す解凍データセットをインターセプトし（ステップ５７４）、圧縮し（ステップ５７８）、クライアントエージェント３７５（ステップ５８２）に送信し、それらをクライアントエージェント３７５が受信する（ステップ５８６）。
【０１２２】
クライアントがメディアストリームの作成に成功または失敗したかに関わらず、サーバエージェント３５０は、非メディアグラフィック情報に関連するグラフィック表示コマンドをインターセプトし、クライアントエージェント３７５に送信する（ステップ５９０）。クライアントエージェント３７５は、グラフィック表示コマンドを受信する（ステップ５９４）。クライアントエージェント３７５は、プレゼンテーションインターフェイス２４５に送信された解凍データをレンダリングするために、ネイティブまたはサードパーティが提供する出力フィルタモジュール（レンダラフィルタ）を使用してメディアプレゼンテーションを生成する（ステップ５９８）。
【０１２３】
本発明は、１つ以上の製品に統合される、またはその中の１つ以上のコンピュータ可読のプログラムとして提供することが可能である。本製品は、フロッピー（登録商標）ディスク、ハードディスク、ＣＤ−ＲＯＭ、フラッシュメモリカード、ＰＲＯＭ、ＲＡＭ、ＲＯＭ、または磁気テープであってよい。一般に、コンピュータ可読のプログラムは、いずれのプログラミング言語で使用することが可能である。使用できる言語の例には、Ｃ、Ｃ＋＋、またはＪＡＶＡ（登録商標）が挙げられる。ソフトウェアプログラムは、オブジェクトコードとして１つ以上の製品に保存することが可能である。
【０１２４】
同等物
本発明は、その精神または主要な特徴から逸脱することなく他の様々な形で具体化することができる。例えば、単一のサーバが、本発明の図１および２の双方、本発明の図３、４Ａ乃至４Ｃ、および５Ａ乃至５Ｃの実施が可能であると理解されたい。したがって、上述の実施態様は、本願明細書において開示される発明を制限するものではなくすべての局面を示すとみなされる。したがって、本発明の範囲は、上述の説明によってではなく添付の請求の範囲によって示され、請求の範囲と同等の趣意および範囲内にあるすべての変更がその中に包含されることを意味する。
【図面の簡単な説明】
【０１２５】
【図１】本発明によるリモートターミナルセッションのためのグラフィック表示を生成するシステムの実施態様のブロック図である。
【図２】本発明によるリモートターミナルセッションのためのグラフィック表示を生成するプロセスの実施態様の流れ図である。
【図３】本発明によるクライアントでメディアプレゼンテーションを生成するシステムの実施態様のブロック図である。
【図４Ａ】本発明によるクライアントでメディアプレゼンテーションを生成する方法の実施態様の流れ図である。
【図４Ｂ】本発明によるクライアントでメディアプレゼンテーションを生成する方法の実施態様の流れ図である。
【図４Ｃ】本発明によるクライアントでメディアプレゼンテーションを生成する方法の実施態様の流れ図である。
【図５Ａ】本発明によるクライアントでメディアプレゼンテーションを生成する方法の別の実施態様の流れ図である。
【図５Ｂ】本発明によるクライアントでメディアプレゼンテーションを生成する方法の別の実施態様の流れ図である。
【図５Ｃ】本発明によるクライアントでメディアプレゼンテーションを生成する方法の別の実施態様の流れ図である。
【図１】
2007505580.tif 000003
【図２】
2007505580.tif 000004
【図３】
2007505580.tif 000005
【図４Ａ】
2007505580.tif 000006
【図４Ｂ】
2007505580.tif 000007
【図４Ｃ】
2007505580.tif 000008
【国際調査報告】
2007505580.tif 000009
2007505580.tif 000010
2007505580.tif 000011