JP2007241736A - リモートデスクトップシステムのサーバ装置及びクライアント装置 - Google Patents

リモートデスクトップシステムのサーバ装置及びクライアント装置 Download PDF

Info

Publication number
JP2007241736A
JP2007241736A JP2006064450A JP2006064450A JP2007241736A JP 2007241736 A JP2007241736 A JP 2007241736A JP 2006064450 A JP2006064450 A JP 2006064450A JP 2006064450 A JP2006064450 A JP 2006064450A JP 2007241736 A JP2007241736 A JP 2007241736A
Authority
JP
Japan
Prior art keywords
fade
display
data
image
image data
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.)
Pending
Application number
JP2006064450A
Other languages
English (en)
Inventor
Futoshi Tsubaki
太 椿
Takeya Fujii
毅也 藤井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Victor Company of Japan Ltd
Original Assignee
Victor Company of Japan Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Victor Company of Japan Ltd filed Critical Victor Company of Japan Ltd
Priority to JP2006064450A priority Critical patent/JP2007241736A/ja
Publication of JP2007241736A publication Critical patent/JP2007241736A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • User Interface Of Digital Computer (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

【課題】リモートデスクトップシステムにおいて、フェードやスクロールなどの画像変化の発生時にクライアント側の負荷を増大させることなく、サーバからクライアントに送信される画像データのデータ量を大幅に削減してGUIの反応速度を向上させる。
【解決手段】サーバF01のフェード処理部1201は、あらかじめクライアント装置F02で表示されるフェード表示の学習を行い、フェード表示の表示領域のフェード時間などの特徴をフェードテーブル格納部1202に格納しておく。比較決定部1203は、クライアント装置でフェード表示が行われることを検出した場合、クライアント装置に対して、そのフェード表示の表示領域やフェード時間、表示の態様などの指示を送出することで、大量の画像データが伝送されることなく、クライアント装置で擬似的なフェード表示が行われる。
【選択図】図6

Description

本発明は、キーボードなどの入力装置と、映像を表示することが可能なビットマップディスプレイなどの表示装置とを備えたクライアント装置から遠隔地にあるサーバ装置に対して、アプリケーションなどの操作指示を送信し、その結果として、サーバ装置からクライアント装置に送信される映像をクライアント装置で表示するリモートデスクトップシステムに関し、特に、リモートデスクトップシステムのサーバ装置及びクライアント装置に関する。
リモートデスクトップシステムとして1970年代から普及したTSS(Time Sharing System:タイム・シェアリング・システム)は、マルチユーザ型の汎用コンピュータであり、貴重な計算機資源を複数のユーザ(利用者)が複数の端末装置を介して同時に使用できるようにしたものである。以下、図18を参照しながら、従来のTSSの一例を説明する。
図18に図示されているTSSでは、例えば、TSSを提供する汎用コンピュータA01上で動作する端末サーバ102と端末装置103とがシリアル伝送A02で接続されており、ユーザA03は端末装置103からTSSにログインし、アプリケーション101を実行する。端末サーバ102は、端末装置103のキーボードから入力された文字列をアプリケーション101の入力に渡すとともに、アプリケーション101の文字列出力を端末装置103に送り返す。これにより、端末装置103は、端末サーバ102から受信した文字列をディスプレイ104に表示して、遠隔操作を行うことが可能となる。なお、文字列は、IEEE(Institute of Electrical and Electronic Engineers)−488(又はRS−232C)のような無手順シリアル伝送規格のビット列に変換されて、TSSと端末装置103との間で送受信される。
一方、リモートデスクトップシステムとして1980年代から普及したXウィンドウシステムは、マサチューセッツ工科大学で開発されたクライアント・サーバ型リモートデスクトップシステムである。上述のTSSでは文字列の送受信のみが可能であったが、Xウィンドウシステムでは、端末装置がビットマップディスプレイ204を備えていることを前提としており、ユーザは、マウスやキーボードなどのポインティングデバイス205による入力の結果として、文字列だけではなく静止画や動画などの映像情報を受け取り、この映像情報をビットマップディスプレイ204に表示することで、映像情報を視認することが可能である。以下、図19を参照しながら、従来のXウィンドウシステムの一例を説明する。
図19に図示されているXウィンドウシステムは、例えば、サーバB01として機能する汎用コンピュータ上で動作するXサーバ202と、Xサーバ専用のXアプリケーション201と、クライアントB03として機能する端末装置上で動作するXクライアント203と、サーバB01とクライアントB03との間を接続する通信ネットワークB02によって構成されている。サーバB01である汎用コンピュータ上において、Xアプリケーション201が表示したい描画データ列をXサーバ202に出力すると、Xサーバ202は、通信ネットワークB02を介して接続しているクライアントB03である端末装置上のXクライアント203に対して描画データ列を送信する。Xクライアント203は、描画データ列を解釈して、端末装置が備えるビットマップディスプレイ204に表示する。
上述のXウィンドウシステムで扱われる描画データ列とは、描画データの時系列集合であり、描画データとは『画面の座標(X1,Y1)から(X2,Y2)まで黒色で太さ1の線を引く』などのような抽象描画命令である。抽象描画命令には、線を引くほかに、点を打つ、四角を描く、四角の内側を塗りつぶす、楕円を描く、楕円の内側を塗りつぶすなどの原始的な描画処理が含まれている。
また、描画データ列は、Xプロトコルと呼ばれる通信プロトコルに変換され、Xサーバ202とXクライアント203との間で送受信される。一方、ポインティングデバイス205のボタンの押下状態などもXプロトコルに変換され、Xサーバ202とXクライアント203との間で送受信される。
さらに、1990年代からは、AT&T(American Telephone and Telegraph)ケンブリッジ研究所で開発されたVNC(Virtual Network Computing:バーチャル・ネットワーク・コンピューティング)が普及している。以下、図20を参照しながら、従来のVNCの一例を説明する。
図20に図示されているVNCは、Xウィンドウシステムと同様にクライアント・サーバ型リモートデスクトップシステムであり、VNCサーバ303とVNCクライアント304との間におけるビットマップ画像伝送を基調とした描画処理を行う。
VNCでは、汎用コンピュータC01側に、クライアントC03の操作環境であるデスクトップに相当するフレームバッファ302が設けられている。フレームバッファ302は、画面全体のビットマップ画像を少なくとも1枚保存することができるメモリ領域である。なお、フレームバッファ302から汎用コンピュータC01側のビットマップディスプレイ(不図示)に逐次出力を行うことも可能である。
一方、VNCサーバ303は、フレームバッファ302を継続的に監視しており、アプリケーション301が描画した結果であるビットマップ画像をフレームバッファ302から抽出し、これを描画データ列として通信ネットワークC02を介してVNCクライアント304に送信する。なお、VNCで扱われる描画データは、Xウィンドウシステムのような抽象描画命令ではなく、『縦横(800,600)ピクセルのビットマップ画像を画面の座標(X3,Y3)に描画しろ』などのようなビットマップ画像を含む非効率なものである。そして、VNCクライアント304は、この描画データ列を解釈して、クライアントC03が備えるビットマップディスプレイ305に表示する。
また、描画データ列は、VNCプロトコルと呼ばれる通信プロトコルに変換され、VNCサーバ303とVNCクライアント304との間で送受信される。一方、ポインティングデバイス306のボタンの押下状態などもVNCプロトコルに変換され、VNCサーバ303とVNCクライアント304との間で送受信される。
XウィンドウシステムではXアプリケーション201が描画データ列を生成していたが、VNCでは、フレームバッファ302に描画する能力があるすべてのアプリケーションに適用できる点に特徴がある。いったんフレームバッファ302を介して描画データ列の受け渡しが行われるため、アプリケーション301側は特別な仕掛けが不要である。このため、VNCでは、汎用コンピュータC01上でXウィンドウシステムとは全く異なる描画体系を持つマイクロソフト・ウィンドウズ(登録商標)やアップル・MacOS(登録商標)などのOS(Operating System:オペレーティング・システム)が動作していても、同一のクライアントC03から統一的にアプリケーション301をリモートコントロールすることが可能である。
一方、現在のアプリケーションの実行環境としては、PC(Persopnal Computer:パーソナル・コンピュータ)が支配的な市場位置を占めている。PCは、潤沢なCPU(Central Processing Unit:中央演算処理装置)パワーと、出力装置としてビットマップディスプレイやフレームバッファ、入力装置としてマウスやキーボードなどを兼ね備えている。このため、PCは、リモートデスクトップシステムのサーバ側及びクライアント側のどちらの役割も担うことができる。現在では、ユーザの間では、あるPCから別のPCのアプリケーションを呼び出して遠隔操作する利用形態が一般化しつつある。
特に最近では、個人情報保護法の施行など、情報保護の機運が高まっているため、顧客名簿や重要文書などが入った社用PCは常に会社に置いておき、必要な時だけリモートデスクトップシステムを用いてモバイルPCから閲覧する形態の集中データ管理手法が注目されつつある。集中データ管理手法では、外出先に持ち運ぶモバイルPCなどには重要データそのものがコピーされないため、重要データをモバイルPCごと盗難されることはなく、重要データの安全性が高まる。また、悪意ある第3者が、リモートデスクトップシステムの描画データ列を取得し、ビットマップ画像の一部を復元したとしても、それはアプリケーション上に表示された重要データのほんの一部分であるため、例えば数百万件の顧客名簿を一瞬にしてコピーするようなことはできず、安全性が高まる。
次に、VNCや同種の技術におけるリモートデスクトップシステムの描画データ列について詳しく説明する。フレームバッファの監視から得られた非圧縮ビットマップ画像を含む描画データ列は、膨大なデータ量を有している。例えば、一般的なPCの解像度である1024×768ピクセルで32ビットフルカラーのビットマップ画像を、ユーザが滑らかに映像の変化として感じられる10フレーム/秒で送信する場合、その総データ量は約30MB/S(=240Mbps)に達する。しかしながら、現在、個人ユーザがインターネット接続に用いているADSL(Asymmetric Digital Subscriber Line:非対称デジタル加入者線)のスループット(平均伝送帯域)の実用的な上限は1.5MB/S(=12Mbps)程度である。したがって、PCのディスプレイ上に表示される画像を滑らかに表示するために非圧縮ビットマップ画像を含む描画データ列の伝送を行うことは甚だ非現実的であると言える。
そこで、下記の非特許文献1には、『PCのデスクトップの画面全体のうちの一部分しか更新されないことが多い』という特性を活かして、時系列に変化するフレームバッファを監視し、更新領域のみを差分ビットマップ画像として抽出して、その差分ビットマップ画像を描画データ列としてクライアントに送信するための通信プロトコルが説明されている。以下、図21〜図23を参照しながら、従来のVNCに関して詳細に説明する。
なお、図21に示すVNCサーバD01及びVNCクライアントD02は、図20に示すVNCシステムから、動作説明に最低限必要なブロックを抽出したものであり、図21に示すVNCサーバD01は、図20に示すVNCシステムのVNCサーバ303に相当し、図21に示すVNCクライアントD02は、図20に示すVNCシステムのVNCクライアント304に相当する。
まず、図21に示すVNCサーバD01の各ブロックについて説明する。フレームバッファ401は、アプリケーションから出力されクライアント側のデスクトップ画像に相当する画像データの読み出し及び書き込みを行うことが可能なメモリ領域であり、フレームバッファ401には、ある瞬間の画像データが蓄積される。また、フレーム取得部402は、フレームバッファ401から画像データを取得するフレームグラバ(Frame Grabber)である。また、前フレームバッファ404は、更新直前のフレームバッファ401内の画像データのコピーを保存する作業メモリ領域であり、比較部403は、フレームバッファ401内の画像データと前フレームバッファ404内の画像データとの時系列変化を観察することで、その差分の描画データ列を生成する機能を有している。また、通信部405は、比較部403で生成される差分の画像データである描画データ列をVNCプロトコルに変換し、VNCクライアントD02に送信する。
次に、図21に示すVNCクライアントD02の各ブロックについて説明する。通信部406は、VNCサーバD01からVNCプロトコルを受信し、元の描画データ列への変換を行う。描画部407は、その描画データ列に含まれる描画データを用いて、画像データを保持するメモリ領域であるフレームバッファ408に、画像データとして描画を行う。出力部409は、フレームバッファ408を順次読み出し、D/A(デジタル/アナログ)変換などの所望の信号処理を行ってディスプレイ410に出力することにより、ディスプレイ410上に画像データが表示される。
次に、図22に示すVNCサーバのフローチャートを参照しながら、上述の図21に示すVNCサーバD01の動作について説明する。VNCサーバD01において、フレーム取得部402がフレームバッファ401から画像データ(描画データ)を取得し(ステップS601)、まず前フレームバッファ404が空か否かを確認することによって、初回の画像データ取得動作か否かの判定が行われる(ステップS602)。このとき、前フレームバッファ404が空の場合(画像データが1度も書き込まれていない場合)にはステップS605に進み、前フレームバッファ404が空ではない場合にはステップS603に進む。
前フレームバッファ404が空ではない場合、比較部403は、前フレームバッファ404内の画像データと、フレーム取得部402から得られた画像データとの差分を比較し、差分がある場合にはその差分から描画データを生成し、さらに描画データの集合である描画データ列を生成する(ステップS603)。そして、通信部405は、比較部403で生成された描画データ列をVNCプロトコルに変換し、VNCクライアントD02に送信する(ステップS604)。また、前フレームバッファ404には、今回取得した画像データ(フレームバッファ401内の画像データ)が上書きされる(ステップS605)。また、VNCサーバD01は、より上位の動作状態を取得し、例えば電源断ボタンが押されたなどの終了条件が成立している場合には動作を終了する一方、終了条件が存在しない場合にはステップS601に戻って上記の処理が繰り返し行われる。その結果、VNCサーバD01は、動作中は常にフレームバッファ401を監視し、前フレームバッファ404との差分を描画データ列として抽出し、さらに描画データ列をVNCプロトコルに変換して、VNCクライアントD02へ送信し続ける。
なお、ここでの描画データとは、画面のすべて又は一部分の画像データを指すビットマップ画像と、そのビットマップ画像のレイアウト情報(すなわち、画面上のどの部分に位置するかを指定するX座標とY座標、さらにビットマップ画像の横幅、高さなどの情報)をセットにしたものである。描画データは、例えば下記のデータ構造1を有している。なお、下記のデータ構造はあくまで一例であり、座標系や各要素の順序が異なっていてもよい。
(画面上のX座標、画面上のY座標、ビットマップ画像の横幅、ビットマップ画像の高さ、ビットマップ画像)・・・ <データ構造1>
次に、図23に示すVNCクライアントのフローチャートを参照しながら、上述の図21に示すVNCサーバD01の動作について説明する。VNCクライアントD02は、通信部406を介してVNCサーバD01からVNCプロトコルを受信し、元の描画データ列に変換する(ステップS701)。描画部407は、描画データ列に含まれる描画データを用いて、フレームバッファ408に画像データの描画を行う(ステップS702)。また、出力部409は、フレームバッファ408を順次読み出し、D/A変換などの所望の信号処理を行ってディスプレイ410への出力を行う(ステップS703)。また、VNCクライアントD02は、より上位の動作状態を取得し、例えば電源断ボタンが押されたなどの終了条件が成立している場合には動作を終了する一方、終了条件が存在しない場合にはステップS701に戻って上記の処理を繰り返し行う。その結果、VNCクライアントD02は、動作中は常にVNCプロトコルを受信して描画データ列を取得し、フレームバッファ408への描画データの描画を行って、ディスプレイ410を介してユーザに画像を提示し続ける。
一方、例えば、下記の特許文献1には、リモートデスクトップシステムの改良技術が開示されている。以下、図24〜図26を参照しながら、特許文献1に開示されている技術について説明する。
特許文献1に開示されている技術では、サーバからクライアントに送信されるデータ構造は、以下のように設定されている。
(キャッシュ情報、SID、コードワード)・・・<RKEY>
図24において、サーバは、例えば上述のVNCシステムでクライアントに送信する差分の画像に関し、更新する画像の更新領域の横幅(W)、高さ(H)が、閾値(ThW、ThH)を超えていないか否かを判断する(ステップS2801)。このとき、更新する画像の更新領域の横幅及び高さの両方が閾値を超えていない場合にはステップS2802に進み、それ以外の場合にはステップS2803に進む。
更新する画像の更新領域の横幅及び高さの両方が閾値を超えていない場合には、更新する画像の更新領域が小さく、キャッシュするに値しない画像データであると判断されて、領域キー(RKEY)のキャッシュ情報に『キャッシュ不要』、シーケンス識別子(SID)に『NULL』、コードワードに『更新する画像データ(更新データ)』が代入されて、クライアントに送信される(ステップS2802)。すなわち、更新データの更新領域が小さい場合には、更新データがサーバからクライアントに送信される。
一方、ステップS2801で、更新する画像の更新領域の横幅及び高さの少なくとも一方が閾値を超えていると判断された場合には、RKEY作成処理が行われる(ステップS2803)。RKEY作成処理の詳細に関しては、図25に図示されている。
図25において、サーバは、メッセージヘッダのRKEYのキャッシュ情報に『キャッシュ』を設定し(ステップS2901)、キャッシュメモリ内に更新領域が同一のものが存在するか否かを判断する(ステップS2902)。ステップS2902で更新領域が同一のものが存在する場合には、ステップS2903に進み、キャッシュメモリ内に更新領域が同一のものが1つのみ存在しているか否かが判断される(ステップS2903)。また、ステップS2902で更新領域が同一のものが存在しない場合には、ステップS2910に進み、DCT(Discrete Cosine Transform:離散コサイン変換)、量子化、エントロピー処理を行って更新データを符号化し(ステップS2910)、ステップS2909に進む。
また、ステップS2903でキャッシュメモリ内に存在する更新領域が同一のものが1つのみではない場合には、DCT、量子化、エントロピー処理を行って更新データを符号化し(ステップS2905)、複数検出された同一の更新領域を持つデータのコードワード(キャッシュメモリ内のコードワード)と、ステップ2905で符号化した更新データとを比較し、同一のコードワードを持つデータが存在するか否かを検索する(ステップS2906)。そして、ステップS2907において、同一のコードワードを持つデータが存在する場合にはステップS2908に進み、同一のコードワードを持つデータが存在しない場合にはステップS2909に進む。一方、ステップS2903でキャッシュメモリ内に更新領域が1つのみ存在している場合には、ステップS2904に進む。
ステップS2904では、キャッシュメモリ内に更新領域が同一のデータが1つしか存在しない場合の処理が行われる。この場合、キャッシュ情報に『キャッシュ済』、SIDに『キャッシュメモリ内で一致したデータのSID』が代入され、コードワードには何も設定されずに作成されたRKEYのデータがクライアントに送信される。
また、ステップS2908では、キャッシュメモリ内に同一のコードワードを持つデータが存在する場合の処理が行われる。この場合、キャッシュ情報に『キャッシュ済』、SIDに『キャッシュメモリ内で一致したデータのSID』が代入され、コードワードには何も設定されずに作成されたRKEYのデータがクライアントに送信される。
また、ステップS2909では、キャッシュメモリ内に更新領域は同一であるが同一のコードワードが存在しない場合、又は、更新領域が異なる場合の処理が行われる。この場合、キャッシュ情報に『キャッシュ』、SIDに『割り振られていない値』、コードワードに『符号化した更新データ』が代入されたRKEYのデータがクライアントに送信される。
一方、図26において、クライアントは、サーバから受信するRKEYのキャッシュ情報を監視及び解析を行い(ステップS3001)、『キャッシュ不要』の場合にはステップS3002に進み、『キャッシュ』の場合にはステップS3003に進み、『キャッシュ済』の場合にはステップS3005に進む。
ステップS3002では、キャッシュ不要の場合の処理が行われる。この場合、コードワードに直接更新するデータが代入されており、それを更新データとする。
また、ステップS3003では、キャッシュへの登録が必要な場合の処理が行われる。この場合、RKEYのコードワードが符号化されているので、これを復号し、復号したデータを更新データとする。さらに、クライアントは、RKEYのデータをローカルキャッシュメモリに登録する(ステップS3004)。
また、ステップS3005では、既にキャッシュされている場合の処理が行われる。この場合、受信したRKEYのSIDと同一のRKEYのデータをローカルキャッシュメモリより取得する。さらに、クライアントは、ステップ3005で取得したRKEYのコードワードを復号して、復号したデータを更新データとする(ステップS3006)。
そして、上記のステップS3002、S3004、3006のそれぞれで作成された更新データを使用して、更新領域にデータが表示される(ステップS3007)。
また、ユーザに対して画像の移り変わりを知覚させ、例えば画像全体が突然変更されることによってユーザに不快感を与えることを避けるために、画像の輝度を連続的に変化させるフェード(フェードイン又はフェードアウト)という画像表示手法が一般的に知られている。下記の特許文献2には、時系列的に変化する画像の総輝度値の差分の絶対値を演算し、この差分の絶対値が大きく、かつ同一位置に存在する画素同士の画素データの差分値が小さい場合に、画像が上述のフェード状態にあることを検出するフェード検出方法及びフェード検出装置が開示されている。
また、ディスプレイの表示可能領域よりも大きな画像をユーザに提示したい場合に、まず画像の一部分を表示し、例えばユーザの操作に従って時系列的にピクセル単位で表示部分をずらすことで全体を表示させるスクロールという画像表示手法が一般的に知られている。なお、スクロールは、元々大きな画像(HTML(Hyper Text Markup Language)テキストなどの文章データを画像レンダリングしたものも含む)を表示する手法であり、1画面におけるスクロール範囲の割合は必然的に大きくなる。
特表2005−501355号公報(図4〜図7、段落0015、0016) 特開2000−59683号公報(段落0017、図1) Tristan Richardson, RealVNC Ltd:"The RFB Protocol" Version 3.8, 8 March 2005
従来のリモートデスクトップシステムのうち、Xウィンドウシステム型のリモートデスクトップシステムが、サーバとクライアントとの間における伝送効率が最も良いと考えられる。Xウィンドウシステム型のリモートデスクトップシステムでは、描画データは『線を描け』などのような抽象度の高いものであり、その結果、データ量は極小化されている。しかしながら、その代償としてXウィンドウシステム用の描画データ列を生成する専用Xアプリケーションが必要になる。
インターネットが普及した今日では、様々なPCや汎用コンピュータが様々なアプリケーションを実行し、相互に分散ネットワークを形成している。このため、常にXアプリケーションを要求するXウィンドウシステムは時代の要請に合わず、異種間における接続に対してより汎用性の高いVNC型のリモートデスクトップシステムが好適であると言える。
しかしながら、VNC型のリモートデスクトップシステムでは、上述のようにビットマップ画像を含む描画データ列のデータ量が膨大になる傾向がある。特に、最近の画面全体にビットマップ画像を用いた美麗なボタン類が並ぶGUI(Graphic User Interface:グラフィック・ユーザ・インタフェース)を用いたアプリケーションにおいては、更新領域が画面全体を占めることも珍しくない。例えば、図27に図示されているようなウィザード形式のアプリケーションによる表示の場合には、例えば『次へ』ボタンを押すと新たな次画面に移るため、サーバからクライアントに対して画面全体を送らなければならない機会が非常に多い。これはGUIの反応速度低下をもたらし、ユーザに対する利便性を低下させるとともに、ユーザのストレスを増大させる要因となる。
例えば、上述のように、スループットが1.5MB/SであるADSLの通信ネットワークを介して、1024×768ピクセルで32ビットフルカラーのビットマップ画像1枚を伝送する場合には、約2秒の表示遅延が生じることとなる。このため、Xウィンドウシステム型のリモートデスクトップシステムのような抽象度の高い描画データ列を生成することが可能なVNC型のリモートデスクトップシステムの開発が望まれている。しかしながら、アプリケーションをXウィンドウシステム型の抽象描画命令に完全対応させることは、すなわち、新たなXアプリケーションを新規に開発することになってしまい意味がない。これはVNCが発達してきた背景を考えれば明らかである。
上述の特許文献1に係る技術では、更新表示データを『キャッシュ済』や『キャッシュ不要』などのように特定できるようにすることで、VNC型のリモートデスクトップシステムにおいて、抽象度の高い描画データ列の生成を試みているが、この技術では、更新領域の大きさに応じて、非可逆符号化する部分と符号化しない部分とが存在し、クライアント側で実現される表示画像が視覚的に奇妙かつ見づらいものになってしまうという課題がある。
また、リモートデスクトップシステムでは、基本的にクライアント側の負荷が小さいことがメリットであるが、上述の特許文献1に係る技術では、クライアント側に符号化データを復号するための復号化器を設ける必要があり、復号機能に関してクライアント側の負荷を小さくすることができないという課題がある。
さらに、上述の特許文献1に係る技術では、作成されるRKEYデータが、更新領域、及び更新領域の大きさにより作成されているので、例えば同一のボタン形状の画像配列を有するGUIのように異なる更新領域で同一の更新画像データが存在する場合であっても、更新領域が異なるために新たなRKEYを作成する必要があり、このRKEYをサーバ及びクライアントの両方においてキャッシュメモリに保存するので、キャッシュ量が増大してしまうという課題がある。
また、VNC型のリモートデスクトップシステムや特許文献1に係る技術では、画像の輝度値が変化するフェードや、表示ウィンドウよりも大きな画像が一定方向に動くスクロールが発生した際には、フェードやスクロールによって時系列的に連続的に変化する画像領域の画像データ又は表示画像領域全体の画像データが、サーバ側からクライアント側に送信される必要があり、一時的に大量の画像データがサーバからクライアントに伝送されることになる。その結果、クライアント側では、フェード表示やスクロール表示に係る処理に遅延が生じたり、不自然なフェード表示又はスクロール表示となったりするという課題がある。
例えば、図28に図示されているような1つの画像表示ウィンドウと3つのボタンで構成された画像において、画像表示ウィンドウ内にフェードが発生した場合には、画像表示ウィンドウ内のフェード変化を反映するために、フェード状態の間はサーバ側からクライアント側に対して、フェード変化に対応する画像データが送信され続けることになる。また、図29に図示されているような1つのスクロールウィンドウと3つのボタンで構成された画像において、スクロールウィンドウ内に画像のスクロールが発生した場合には、スクロールウィンドウ内のスクロール変化を反映するために、スクロール移動が行われている間はサーバ側からクライアント側に対して、スクロール移動に対応する画像データが送信され続けることになる。
上記の課題を解決するため、本発明は、クライアント側の負荷を増大させることなく、フェードやスクロールなどの画像変化が発生した際に、サーバとクライアントとの間において送受信する描画データ列のデータ量を大幅に削減してGUIの反応速度を向上させることが可能なリモートデスクトップシステムのサーバ装置及びクライアント装置を提供することを目的とする。
上記の目的を達成するため、本発明によれば、クライアント装置に対して、前記クライアント装置の表示手段に表示させる画像データを送信するリモートデスクトップシステムのサーバ装置であって、
前記クライアント装置の前記表示手段にフェード効果を有する表示を実現させる画像データを前記クライアント装置に送信しようとするフェード開始タイミングを検出するフェード検出手段と、
前記フェード検出手段によって検出された前記フェード開始タイミングにおいて、前記フェード効果を有する表示を実現させる前記画像データを、前記クライアント装置に送信しないように制御するとともに、前記フェード効果を有する表示が行われる前記表示手段上の表示領域と、前記フェード開始タイミングと、前記フェード効果を有する表示の開始から終了までのフェード期間と、前記フェード期間中の前記表示領域における表示の態様とを指示する情報を前記クライアント装置に送信するフェード制御手段とを、
有するサーバ装置が提供される。
また、上記の目的を達成するため、本発明によれば、クライアント装置に対して、前記クライアント装置の表示手段に表示させる画像データを送信するリモートデスクトップシステムのサーバ装置であって、
前記クライアント装置に対して送信した前記画像データを格納する画像データ格納手段と、
新たに前記クライアント装置に対して送信する第1画像データによって表示される表示対象と、前記画像データ格納手段に格納されている前記第1画像データの直前に前記クライアント装置に対して送信した第2画像データによって表示される表示対象との動きベクトルを検出する動きベクトル検出手段と、
前記動きベクトル検出手段によって検出された前記動きベクトルから、所定領域以上の大きさの画像が、一定方向かつ一定距離だけ移動を行っている動きが検出された場合に、前記第1画像データの表示画像と前記第2画像データの表示画像との間でスクロールが起こっていると判断するスクロール判断手段と、
前記スクロール判断手段で前記スクロールの発生が検出された前記第1画像データ及び前記第2画像データから、前記スクロールが起こっているスクロール領域を特定するスクロール領域特定手段と、
前記第1画像データの表示画像の前記スクロール領域と前記第2画像データの表示画像の前記スクロール領域とを比較し、前記スクロールによって移動するスクロール移動領域の画像データ、及び、前記スクロールによって新たに表示されるスクロール新規領域の画像データを特定するスクロール画像データ特定手段と、
前記クライアント装置に対して既に送信されている前記第2画像データの表示画像から前記スクロール移動領域の表示画像を抽出するように指示する情報と、前記スクロールに基づく前記スクロール移動領域の表示画像の新たな表示位置を指定する情報とを前記クライアント装置に送信し、前記クライアント装置に抽出させた前記表示画像を前記新たな表示位置に表示させる第1スクロール表示制御手段と、
前記第1画像データの表示画像の一部を構成する前記第1画像データ内における前記スクロール新規領域の画像データのみを含むとともに、前記スクロール新規領域の表示画像の表示位置を指定する情報を前記クライアント装置に送信し、前記スクロール新規領域の表示画像をその表示位置に表示させる第2スクロール表示制御手段とを、
有するサーバ装置が提供される。
また、上記の目的を達成するため、本発明によれば、サーバ装置から受信する画像データに基づいて画像表示を行うリモートデスクトップシステムのクライアント装置であって、
画像表示を行う表示手段と、
フェード効果を有する表示を実現させる画像データの代わりに、前記フェード効果を有する表示が行われる前記表示手段上の表示領域と、前記フェード開始タイミングと、前記フェード効果を有する表示の開始から終了までのフェード期間と、前記フェード期間中の前記表示領域における表示の態様とを指示する情報を前記サーバ装置から受信するフェード指示受信手段と、
前記フェード開始タイミングから前記フェード期間の間、前記表示手段上の前記表示領域に前記フェード期間中の前記表示領域における前記表示の態様に基づく表示を行うように制御するフェード表示制御手段とを、
有するクライアント装置が提供される。
本発明は、上記の構成を有しており、リモートデスクトップシステムでフェードやスクロールなどの画像変化が発生した場合において、サーバとクライアントとの間において送受信する描画データ列のデータ量を大幅に削減でき、GUIの反応速度を向上させてユーザの利便性を向上するとともに、ユーザのストレスを軽減するという効果を有している。また、本発明は、クライアント側に復号化器を搭載させる必要がなく、クライアントの負荷を削減することができるという効果を有している。また、本発明は、異なる領域で同一のフェードやスクロールなどの画像変化が発生する場合であっても、新たにテーブルに追加することなくフェードやスクロールを再現することができ、テーブル量を削減することができるという効果を有している。また、本発明は、サーバからクライアントに送信されるデータが全て可逆圧縮であるので、クライアント側で実現される画像データが一様になり、クライアント側で視覚的に安定した表示を実現できるという効果を有している。
以下、図面をしながら、本発明の第1及び第2の実施の形態について説明する。まず、本発明の第1及び第2の実施の形態が前提とするリモートデスクトップの構成及び動作について説明する。
図1は、本発明の第1及び第2の実施の形態が前提とするリモートデスクトップシステムの一構成例を示すブロック図である。図1に図示されているリモートデスクトップシステムは、サーバE01とクライアントE02とが任意のデータ伝送路を介して接続された構成を有している。
以下、図1に図示されているサーバE01の構成について説明する。図1に図示されているサーバE01は、フレームバッファ401、フレーム取得部402、比較部403、前フレームバッファ404、固有値算出部801、比較決定部802、通信部803、テーブル格納部804を有している。
図1に図示されているサーバE01のフレームバッファ401、フレーム取得部402、比較部403、前フレームバッファ404には、従来の技術で説明した図21に図示されているVNCサーバD01のフレームバッファ401、フレーム取得部402、比較部403、前フレームバッファ404を利用することが可能である。すなわち、図1に図示されているサーバE01の比較部403からは、VNCシステムと同様に、フレーム取得部402で取得したフレームバッファ401内の画像データと、前フレームバッファ内の画像データ(フレームバッファ401内の画像データの更新直前にフレームバッファ401内に蓄積されていた画像データ)との比較の結果、これら画像データの差分の描画データが、上述のデータ構造1の形式で出力される。
図1に図示されているサーバE01の比較部403から出力されるデータ構造1の形式のデータは、固有値算出部801に供給される。固有値算出部801は、比較部403から供給されるデータ構造1に沿った描画データのビットマップ画像データをハッシュ関数を用いて演算して、そのビットマップ画像データに固有のハッシュ値(以下、固有値と記載する)を算出する。そして、固有値算出部801は、描画データを含むデータ構造1のデータと、算出した固有値とを比較決定部802に出力する。
なお、固有値を算出するためにハッシュ関数を用いることが好適ではあるが、任意の入力データに対して固有値を算出するような方法であれば、他の方法を用いてもよい。ハッシュ関数を用いることが好適な理由は、以下の通りである。ハッシュ関数は、電子署名などに用いられるMD−5やSHA−1などのハッシュ関数であり、これらのハッシュ関数は、任意のデータから128ビット又は160ビットの数値(任意のデータに固有な値)を算出する。このようなハッシュ関数を用いた場合、2つのデータX、Yが与えられた際には、データX、Yが同一データであればハッシュ値H(X)、H(Y)も等しくなる。しかしながら、データX、Yが1ビットでも異なるデータである場合には、ハッシュ値H(X)、H(Y)は異なる数値を取る。なお、原理的には、異なるデータに対してハッシュ値が同一になる場合も生じ得るが、その可能性は極めて低い確率でしか発生しないのがハッシュ関数の特徴である。したがって、異なるデータ同士が同一のハッシュ値を取る可能性は実用上無視できる。ハッシュ関数は、上述のような特性を持った関数であるので、任意のデータから固有値を求める際に有効である。
また、比較決定部802は、固有値算出部801から供給される描画データを含むデータ構造1のデータ及び固有値を受け取ると、テーブル格納部804に格納されているテーブルを使用して、下記のデータ構造2のデータを作成する。
(ビットマップ存在フラグ、画面上のX座標、画面上のY座標、ビットマップ画像の横幅、ビットマップ画像の高さ、ビットマップ画像、固有値)・・・<データ構造2>
上記のように、データ構造2は、ビットマップ存在フラグ、画面上のX座標、画面上のY座標、ビットマップ画像の横幅、ビットマップ画像の高さ、ビットマップ画像、固有値の各データを挿入するためのフィールドを有している。ビットマップ存在フラグのフィールドは、後続のビットマップ画像のフィールドにビットマップ画像が含まれているか否かを示す1ビットのフィールドである。クライアントE02が有しているテーブルにこのビットマップ画像が保持されていると判断された場合には、ビットマップ存在フラグにビットマップ画像の非存在を示すビット(例えば『0』)がセットされ、ビットマップ画像のフィールドにビットマップ画像が含まれないようにする。一方、クライアントE02が有しているテーブルにこのビットマップ画像が保持されていないと判断された場合には、ビットマップ存在フラグにビットマップ画像の存在を示すビット(例えば『1』)がセットされ、ビットマップ画像のフィールドにビットマップ画像が含まれるようにする。
また、画面上のX座標、画面上のY座標、ビットマップ画像の横幅、ビットマップ画像の高さの各フィールドは、ビットマップ画像(ビットマップ画像のフィールドに含まれているビットマップ画像又は固有値によって特定されるビットマップ画像)の配置位置を示す配置位置情報である。ここでは、VNCシステムと同様に上記4つのフィールドを用いているが、ビットマップ画像の配置位置を示すことができれば、任意の情報及び形式を採用することが可能である。
また、固有値のフィールドには、ビットマップ画像から算出された固有値が挿入される。クライアントE02側では、この固有値は、ビットマップ画像を特定するための情報として利用される。
なお、比較決定部802は、固有値算出部801から受け取った固有値と、テーブル格納部804に格納されているテーブル内の固有値との比較結果に基づいて、ビットマップ画像データを含むデータの生成を行うか、ビットマップ画像データを含まないデータの生成を行うかを判断するが、このデータの生成処理に関しては後で詳細に説明する。
また、テーブル格納部804には、比較決定部802で作成されるデータ構造2に沿ったデータを追加記録するために用意されているテーブルが格納されている。比較決定部802は、固有値算出部801から固有値及び描画データを受けると、テーブル格納部804に格納されているテーブルを使用して、固有値算出部801から受けた固有値及び描画データに係るデータ構造2のデータを作成するとともに、作成したデータ構造2のデータ(あるいは、データ構造1のデータ及び固有値)をテーブルに格納する。なお、サーバE01の比較決定部802は、固有値の比較によってビットマップ画像データをクライアントに送信するか否かを決定するので、テーブル格納部804内のテーブルに固有値のみが保持されても本発明は動作可能である。
テーブル格納部804に格納されているテーブルは、上述のように比較決定部802で作成されたデータ構造2のデータを保持することができるものであれば任意の形式で実現可能であるが、例えば、テーブルのエントリ(1つのデータ構造2のデータを保持する領域)の最大数を1000個とし、FIFO(First In First Out)方式でテーブルの更新が行われるようにすることが可能である。
また、通信部803は、比較決定部802から供給されるデータ構造2に沿ったデータを、例えばVNCプロトコルに変換してクライアントE02に送信する。
次に、図1に図示されているクライアントE02の構成について説明する。図1に図示されているクライアントE02は、通信部805、描画作成部806、テーブル格納部807、フレームバッファ408、出力部409、ディスプレイ(ビットマップディスプレイ)410を有している。
通信部805は、サーバE01から送信されるVNCプロトコルに沿ったデータを受信し、データ構造2に沿ったデータに変換して、描画作成部806に出力する。
描画作成部806は、通信部805から供給されるデータ構造2に沿ったデータを受け取ると、通信部805から供給されるデータ構造2に沿ったデータ内に含まれているデータ、又はテーブル格納部807に格納されているテーブルに保持されているデータ構造2に沿ったデータを使用して画像データを作成し、作成した画像データをフレームバッファ408に書き込む。
なお、通信部805から供給されるデータにビットマップ画像データが既に含まれている場合には、描画作成部806は、この画像データをフレームバッファ408に書き込むことになる。描画作成部806における画像データの生成処理に関しては後で詳細に説明する。
また、テーブル格納部807には、描画作成部806が受け取ったデータ構造2に沿ったデータを追加記録するために用意されているテーブルが格納されている。描画作成部806は、通信部805からデータ構造2のデータを受けると、テーブル格納部807に格納されているテーブルを使用して、フレームバッファ408に書き込むための画像データを作成するとともに、通信部805から受けたデータ構造2のデータをテーブルに格納する。なお、クライアントE02の描画作成部806は、固有値の一致するビットマップ画像データをテーブル格納部807内のテーブルから読み出す処理を行うので、テーブル格納部807内のテーブルにビットマップ画像データ及び固有値のみが保持されても本発明は動作可能である。
テーブル格納部804に格納されているテーブルは、サーバE01のテーブル格納部804内のテーブルと同様に任意の形式で実現可能である。ただし、サーバE01は、クライアントE02のテーブル格納部807に格納されているテーブルに保持されている内容を把握する必要がある。したがって、例えば、サーバE01のテーブル格納部804内のテーブルと、クライアントE02のテーブル格納部807内のテーブルとは、同一の形式によって作成、保持されるようにすることが望ましい。
次に、図2を参照しながら、図1に図示されているサーバE01の動作の一例について説明する。図2は、本発明の第1及び第2の実施の形態が前提とするリモートデスクトップシステムにおけるサーバの動作の一例を示すフローチャートである。
サーバE01では、VNCシステムの場合と同様に、フレーム取得部402がフレームバッファ401から画像データ(描画データ)を取得し(ステップS601)、画像データを構成する描画データ列の各描画データに関して、ハッシュ関数を用いてビットマップ画像の固有値を算出する(ステップS901)。なお、上述のように、任意の入力データに対して固有値を算出することが可能であれば、必ずしもハッシュ関数を用いる必要はない。
次に、前フレームバッファ404が空か否かを確認することによって、初回の画像データ取得動作か否かの判定が行われる(ステップS602)。このとき、前フレームバッファ404が空の場合(画像データが1度も書き込まれていない場合)には、ステップS902における比較処理及び変換処理をスキップしてステップS903に進み、一方、前フレームバッファ404が空ではない場合には、ステップS902に進む。
ステップS902では、ステップS901で算出された各ビットマップ画像の固有値とテーブル格納部804に格納されているテーブル内の固有値とを比較し、その比較結果に基づいて、データ構造1に沿ったデータ及び固有値をデータ構造2に沿ったデータに変換する処理が行われる。
以下、図3を参照しながら、上記のステップS902における比較処理及び変換処理の詳細について説明する。図3は、本発明の第1及び第2の実施の形態が前提とするリモートデスクトップシステムにおけるサーバの比較決定部で行われる比較処理及び変換処理の一例を示すフローチャートである。
図3において、まず、サーバE01の比較決定部802は、固有値算出部801から供給される描画データの固有値と、テーブル格納部804内のテーブルに保持されている固有値とを比較して、固有値算出部801から供給される描画データの固有値と同一のものがテーブル格納部804内のテーブルに保持されているか否かを判断する(ステップS1101)。
ステップS1101で同一の固有値がテーブルに存在する場合には、データ構造1に沿ったデータに対して、
・ビットマップ存在フラグに、ビットマップ画像の非存在を示す『0』をセット
・データ構造1に沿ったデータに対応する固有値をセット(追加)
・ビットマップ画像データを削除して、NULLを設定
することによって、データ構造2に沿ったデータが作成される(ステップS1102)。
一方、ステップS1101で同一の固有値がテーブルに存在しない場合には、データ構造1に沿ったデータに対して、
・ビットマップ存在フラグに、ビットマップ画像の存在を示す『1』をセット
・データ構造1に沿ったデータに対応する固有値をセット(追加)
することによって、データ構造2に沿ったデータが作成される(ステップS1103)。
なお、図面には反映されていないが、ステップS602で初回と判定された場合には、すべての描画データ及び固有値がサーバE01からクライアントE02に送信される必要があり、この場合には、上記のステップS1103に従ってデータ構造2に沿ったデータが作成される。
そして、上述のようにステップS1102又はS1103でデータ構造2に沿ったデータが作成された場合や、ステップS602で初回と判定された場合には、図2に示すように、データ構造2に沿ったデータ(少なくとも固有値)がテーブル格納部804のテーブルに追加登録され(ステップS903)、例えばVNCプロトコルに準拠したデータに変換された後にクライアントE02に送信される(ステップS904)。また、VNCシステムと同様に、前フレームバッファ404には、今回取得した画像データ(フレームバッファ401内の画像データ)が上書きされ(ステップS605)、ステップS606において、何らかの終了条件が成立している場合には動作を終了する一方、終了条件が存在しない場合にはステップS601に戻って上記の処理が繰り返し行われる。
次に、図4を参照しながら、図1に図示されているクライアントE02の動作の一例について説明する。図4は、本発明の第1及び第2の実施の形態が前提とするリモートデスクトップシステムにおけるクライアントの動作の一例を示すフローチャートである。
クライアントE02では、まず、サーバE01から送信されるVNCプロトコルに沿ったデータを受信し、このデータをデータ構造2に沿ったデータに変換する(ステップS1001)。そして、描画作成部806において、データ構造2に沿ったデータに含まれているビットマップ画像データ、あるいはテーブル格納部807に格納されているテーブル内のビットマップ画像データに基づいて、フレームバッファ408に書き込む描画データの作成処理が行われる(ステップS1002)。
以下、図5を参照しながら、上記のステップS1002における描画作成処理の詳細について説明する。図5は、本発明の第1及び第2の実施の形態が前提とするリモートデスクトップシステムにおけるクライアントの描画作成部で行われる描画作成処理の一例を示すフローチャートである。
図5において、まず、クライアントE02の描画作成部806は、通信部805から供給されるデータ構造2に沿ったデータ内のビットマップ存在フラグの値をチェックする(ステップS1151)。
ステップS1151でビットマップ存在フラグの値がビットマップ画像の存在を示す『1』の場合、このデータ構造2に沿ったデータにはビットマップ画像データが含まれていることが分かる。この場合には、描画作成部806は、サーバE01から受信したデータ構造2に沿ったデータからビットマップ画像データを抽出する(ステップS1152)。なお、描画作成部806は抽出したビットマップ画像データを用いてフレームバッファ408への書き込みを行うので、テーブル格納部807内のテーブルを参照して描画データの作成を行う必要はない。
一方、ステップS1151でビットマップ存在フラグの値がビットマップ画像の非存在を示す『0』の場合、このデータ構造2に沿ったデータにはビットマップ画像データは含まれていないことが分かる。この場合には、描画作成部806は、サーバE01から受信したデータ構造2に沿ったデータから固有値を抽出し、抽出した固有値に対応するビットマップ画像データをテーブル格納部807内のテーブルから取得して、このデータからビットマップ画像データを抽出する(ステップS1152)。
具体的には、例えばステップS1152では、描画作成部806は、ビットマップ存在フラグが『0』であることを確認した後、データ構造2に沿った入力データの固有値とテーブル格納部807内のテーブルに保持されている固有値とを比較して、データ構造2に沿った入力データの固有値と同一の固有値を有するデータ構造2に沿ったデータをテーブルから取得する。そして、取得したデータ構造2に沿ったデータからビットマップ存在フラグ及び固有値を削除して、データ構造1に沿ったデータを作成し、作成したデータの出力を行う。
また、さらに描画作成部806は、サーバE01から受信したデータ構造2に沿ったデータ(少なくともビットマップ画像データ及び固有値)をテーブル格納部807のテーブルに追加登録する(ステップS1003)。なお、この場合、ビットマップ画像データを含んでいるデータ構造2に沿ったデータのみをテーブルに追加登録してもよい。
図4において、描画作成部806は、描画データ列に含まれる描画データを用いて、フレームバッファ408に画像データの描画を行う(ステップS702)。なお、上述のように、図5のステップS1151でビットマップ存在フラグが『1』であることが確認された場合には、描画作成部806は、データ構造2に沿った入力データからビットマップ存在フラグ及び固有値を削除して、データ構造1に沿ったデータを作成し、作成したデータの出力を行い、したがって、描画作成部806は、図5のステップS1151でビットマップ存在フラグが『0』であることが確認された場合には、描画作成部806は、図5のステップS1153で取得したデータに基づくデータ出力を行う。また、出力部409は、フレームバッファ408を順次読み出し、D/A変換などの所望の信号処理を行ってディスプレイ410への出力を行う(ステップS703)。また、ステップS704において、何らかの終了条件が成立している場合には動作を終了する一方、終了条件が存在しない場合にはステップS601に戻って上記の処理が繰り返し行われる。
以上、説明したように、本発明の第1及び第2の実施の形態が前提とするリモートデスクトップシステムは、各描画データから固有値(例えばハッシュ値)を算出して各描画データを固有値と関連付けてテーブルに登録し、このテーブルをサーバ及びクライアントで共有する。これにより、クライアント側のテーブルに保持されているビットマップ画像が表示画像データとして入力された場合に、サーバは、このビットマップ画像の代わりに固有値(さらには、X座標やY座標などの描画位置を指定する情報)を送信することで、クライアントは、この固有値からビットマップ画像(さらには、描画位置)を特定し、表示の更新を行うことが可能となる。この結果、サーバからクライアントに転送される描画データ量が削減される。
<第1の実施の形態>
次に、本発明の第1の実施の形態について説明する。図6は、本発明の第1の実施の形態におけるリモートデスクトップシステムの一構成例を示すブロック図である。図6に図示されているリモートデスクトップシステムは、サーバF01とクライアントF02とが任意のデータ伝送路を介して接続された構成を有している。
以下、図6に図示されているサーバF01の構成について説明する。図6に図示されているサーバF01は、フレームバッファ401、フレーム取得部402、比較部403、前フレームバッファ404、固有値算出部801、テーブル格納部804、フェード処理部1201、フェードテーブル格納部1202、比較決定部1203、通信部1204を有している。
図6に図示されているサーバF01のフレームバッファ401、フレーム取得部402、比較部403、前フレームバッファ404には、従来の技術で説明した図21に図示されているVNCサーバD01のフレームバッファ401、フレーム取得部402、比較部403、前フレームバッファ404を利用することが可能である。すなわち、図6に図示されているサーバF01の比較部403からは、VNCシステムと同様に、フレーム取得部402で取得したフレームバッファ401内の画像データと、前フレームバッファ404内の画像データ(フレームバッファ401内の画像データの更新直前にフレームバッファ401内に蓄積されていた画像データ)との比較の結果、これら画像データの差分の描画データが、上述のデータ構造1の形式で出力される。
また、図6に図示されている固有値算出部801、テーブル格納部804には、図1に図示されている固有値算出部801、テーブル格納部804を利用することが可能である。すなわち、図6に図示されているサーバF01の比較部403から出力されるデータ構造1の形式のデータは固有値算出部801に供給され、固有値算出部801において、描画データのビットマップ画像データに対してハッシュ関数を用いた演算が行われて、固有値(ハッシュ値)が算出された後、上述のデータ構造2の形式で出力される。また、テーブル格納部804には、例えばデータ構造2の形式のデータを含むテーブルが格納されており、本発明の第2の実施の形態では、比較決定部1203は、通常の描画データ(フェード非発生状態の描画データ)に関しては、テーブル格納部804に格納されているテーブルを参照して、上述の図6に図示されている比較決定部802と同様の処理を行う。
図6の構成では、固有値算出部801から出力される描画データを含むデータ構造2に沿ったデータ(あるいは、データ構造1に沿ったデータ及び固有値)は、フェード処理部1201及び比較決定部1203に供給される。フェード処理部1201は、固有値算出部801から供給されるデータ構造1に沿ったデータ及び固有値に加えて、前フレームバッファ404内の画像データを使用してフェードを検出し、フェードテーブル格納部1202にフェードテーブルとして格納するデータを作成して出力する。なお、フェード処理部1201における処理(フェード検出処理)に関しては、例えば図8を参照しながら、後で詳細に説明する。
また、フェードテーブル格納部1202には、フェードテーブルが格納されており、フェード処理部1201から供給されるデータがフェードテーブルに追加登録されることによって、フェードテーブルの更新が行われる。また、フェードテーブル格納部1202に格納されているフェードテーブルは、必要に応じて、比較決定部1203によって参照される。なお、フェードテーブルは、例えば図16に図示されているようなテーブルによって実現される。
図16には、本発明の第1の実施の形態において、サーバF01のフェードテーブル格納部1202に格納されるフェードテーブルの一例が図示されている。図16に図示されているフェードテーブルは、各フェードに対応して行(エントリ)が設けられている。そして、各エントリには、そのフェードの特徴を表すとともにフェードを擬似的に再現できるようにするための情報が含まれている。
例えば、図16に図示されているフェードテーブルは、フェード発生領域を示す位置(X、Y)及び大きさ(W、H)、フェードが終了しているか否かを示すフェード終了フラグ、フェード開始時の描画データを特定するための固有値を含むフェード開始固有値、フェード終了時の描画データを特定するための固有値を含むフェード最後固有値、フェード開始時の色調(RGB値)を示すフェード開始RGB値、フェードの開始時刻を示すフェード開始時刻、フェード終了時の色調(RGB値)を示すフェード最後RGB値、フェードの終了時刻を示すフェード最後時刻、フェード開始時からフェード終了時までに遷移するRGB値の変分を示すフェード係数、フェード開始時からフェード終了時までに使用されるフレーム枚数を示すフェード枚数、フェード開始時からフェード終了時までの経過時間を示すフェードスパン、現在フェード状態か否かを示すフェード処理中フラグの各項目を有している。
なお、図16に示すフェードテーブルは、フェードを再現するために多数の情報を有しているが、例えば、どの領域(位置及び大きさ)にどのような擬似的フェード効果(フェード係数)をどのくらいの時間(フェードスパン)行うかを有するだけで、最低限の擬似的フェード効果を実現することが可能である。
本発明の第1の実施の形態では、サーバF01側でフェード効果を有する表示が生じた場合に、例えば後述のデータ構造3のようなデータによって、図16に示すフェードテーブルに含まれているフェード効果を再現するための情報をクライアントF02側に送信することで、フェードに係る画像伝送量を大幅に低減させて、クライアントF02側でサーバF01側に同調した擬似的フェード効果を実現されるようになる。
また、図6に図示されている比較決定部1203は、固有値算出部801から供給されるデータ構造1に沿ったデータ及び固有値を受け取ると、テーブル格納部804に格納されているテーブル、又はフェードテーブル格納部1202に格納されているフェードテーブルを使用して、クライアントF02に送信するデータを作成し、通信部1204に供給する。なお、比較決定部1203は、フェードとは無関係の通常の描画データ(フェード非発生状態の描画データ)に関しては、上述のようにテーブル格納部804内のテーブルを参照して、上述した本発明の第1及び第2の実施の形態の前提における処理と同一の処理を行う一方、フェードに関連する描画データに関しては、フェードテーブル格納部1202に格納されているフェードテーブルを参照して、クライアントF02に送信するデータの作成を行う。
また、通信部1204は、比較決定部1203から供給されるデータを、例えばVNCプロトコルに変換してクライアントF02に送信する。
次に、図6に図示されているクライアントF02の構成について説明する。図6に図示されているクライアントF02は、通信部1205、フェード処理部1206、描画作成部806、フェードテーブル格納部1202、テーブル格納部807、フレームバッファ408、前フレームバッファ1208、出力部409、ディスプレイ(ビットマップディスプレイ)410を有している。
なお、図6に図示されているクライアントF02のフレームバッファ408、出力部409、ディスプレイ410には、従来の技術で説明した図21に図示されているVNCサーバD01のフレームバッファ408、出力部409、ディスプレイ410を利用することが可能である。また、図6に図示されているクライアントF02の描画作成部806、テーブル格納部807には、図1に図示されている描画作成部806、テーブル格納部807を利用することが可能である。
通信部1205は、サーバF01から送信されるVNCプロトコルに沿ったデータを受信して変換し、フェード処理部1206に出力する。
また、フェード処理部1206は、通信部1205から供給されるデータを解析するとともに、フェード効果を反映させる必要がある場合には、例えば、前フレームバッファ1208内の画像データやフェードテーブル格納部1207内のフェードテーブルを使用して、フェード効果の反映された描画データの作成を行う。さらにフェード処理部1206は、フェードテーブル格納部1207に格納されているフェードテーブルに追加登録するためのデータ(後述のデータ構造5に沿ったフェードテーブルデータ)の作成も行う。
また、フェードテーブル格納部1207に格納されるフェードテーブルは、フェード処理部1206から入出力されるデータを記録管理するデータ構造を有している。フェードテーブル格納部1207は、例えばハードディスクやその他の読み書き可能な記録媒体によって実現可能である。なお、フェードテーブル格納部1207に格納されるフェードテーブルは、サーバF01のフェードテーブル格納部1202内のフェードテーブルと同様に任意の形式で実現可能である。
また、前フレームバッファ1208は、フレームバッファ408から供給される画像データ(フレームバッファ408に新たな画像データが格納される際に、その直前にフレームバッファ408に格納されていた画像データ)を保持することが可能である。また、フェード処理部1206は、前フレームバッファ1208内の画像データを参照することが可能である。
次に、図7を参照しながら、図6に図示されているサーバF01の動作の一例について説明する。図7は、本発明の第1の実施の形態におけるサーバの動作の一例を示すフローチャートである。
サーバF01では、本発明の第1及び第2の実施の形態の前提(図2参照)と同様に、フレーム取得部402がフレームバッファ401から画像データ(描画データ)を取得し(ステップS601)、画像データを構成する描画データ列の各描画データに関して、ハッシュ関数を用いてビットマップ画像の固有値を算出する(ステップS901)。続いて、サーバF01は、サーバF01とクライアントF02とが接続されているか否かの判断を行う(ステップS1301)。
このステップS1301におけるクライアントの接続/非接続の判断は、フェード検出処理(フェードテーブル作成処理)を行うか否かを決定するものである。フェードを検出するためには数フレーム(少なくとも2フレーム)分の画像データを解析する必要があり、クライアントF02との接続時にフェード検出処理を行うと、フェードが発生した場合にクライアントに送信するデータが滞ってしまい、サーバF01とクライアントF02との間の遅延が非常に大きくなる可能性がある。したがって、サーバF01は、クライアントF02と非接続時にフェード検出を行って、その検出結果をフェードテーブルに保持しておくことで、クライアントF02との接続時にフェードが発生した場合に、クライアントF02に対するデータ送信を遅滞無く実現し、サーバF01とクライアントF02との間の遅延を低減させることが可能となる。すなわち、サーバF01では、クライアントF02との非接続時に、高い頻度で利用されるアプリケーションを実行し、フェード発生時の画面遷移の特徴をあらかじめフェードテーブルに学習しておく。
なお、必ずしも上述のようにクライアントF02との非接続時にフェード検出処理が行われる必要はなく、クライアント接続時であってもフェード検出処理が行われてもよい。さらに、あらかじめサーバF01で発生するフェードの特徴を有するフェードテーブルを用意し、このフェードテーブルをフェードテーブル格納部1202に格納させることによって、サーバF01上でフェード検出処理(フェードテーブル生成処理)を行う必要をなくしてもよい。
ステップS1301におけるクライアントF02の接続/非接続の判断において、サーバF01とクライアントF02との接続が検出された場合にはステップS1302に進む。ステップS1302では、フェードテーブルを作成するためのフェード検出処理が行われる。
以下、図8を参照しながら、上記のステップS1302におけるフェード検出処理の詳細について説明する。図8は、本発明の第1の実施の形態において、サーバのフェード処理部で行われるフェードテーブル作成のためのフェード検出処理の一例を示すフローチャートである。
フェード検出処理では、フェード処理部1201は、まず固有値算出部801から供給された画像データの大きさ(ビットマップ画像の横幅(以下、Wと記載)、ビットマップ画像の高さ(以下、Hと記載))を、あらかじめ定められた閾値Tw、Thと比較し、条件1『W>Tw、かつ、H>Th』を満たしているか否かを判断する(ステップS1401)。条件1が満たされている場合にはステップS1402に進み、条件1が満たされていない場合には、フェード検出処理は終了となる。
なお、上述のステップS1401でTw×Thの大きさよりも小さな画像に関してフェード検出処理を行わない理由は、小さな画像であればフェード発生時においてもクライアントF02への送信データ量が過大とはならないため、通信路にかかる負担(さらには処理遅延などの影響)が少ないためである。なお、ここでは、画像の横幅W及び高さHの両方が閾値Tw及びThよりも大きい場合にフェード検出処理が行われるようにしているが、例えば画像の横幅W及び高さHのいずれか一方が閾値を超えた場合や、画像の面積が閾値を超えた場合に、フェード検出処理が行われるようにしてもよい。また、ここでは、閾値TwやThとして固定値を用いているが、画像サイズや転送レートなどに合わせて、閾値TwやThを適時変化させてもよい。さらには、閾値TwやThを設定せずに、すべてのフェードに関して、ステップS1402以降の処理を行ってもよい。
次に、ステップS1401で条件1を満たす画像データに関して、サーバF01は、描画データの位置(画面上のX座標(以下、Xと記載)、画面上のY座標(以下、Yと記載))や大きさ(W、H)を参照して、前フレームバッファ404内の画像データから同一の位置及び大きさのビットマップ画像(以下、前BMP画像と記載)を取得する(ステップS1402)。
そして、サーバF01は、上述のステップS1402で取得した前BMP画像、及び現在処理を行っている描画データのビットマップ画像(以下、現BMP画像と記載)をビットマップ画像からYUV画像に変換する(ステップS1403)。このステップS1403における処理によって、現BMP画像は現YUV画像に変換され、前BMP画像は前YUV画像に変換される。なお、YUV画像は、輝度信号(Y)、輝度信号と青色成分との差(U)、輝度信号と赤色成分の差(V)の3つの情報によって画像上の色を表現する色表現形式を有する画像である。
サーバF01は、上述のステップS1403で得られた現YUV画像のY値(輝度)と前YUV画像のY値(輝度)とを入力値とし、これらのY値同士を比較することによってフェードが発生しているか否かの検出を行う(ステップS1404)。なお、フェード検出方法に関しては、例えば特許文献2に開示されている技術を利用することが可能であり、ここでは詳細な説明を省略する。また、本発明において、フェードが発生しているか否かを判断する方法は、特許文献2に開示されている技術に限定されるものではなく、任意の方法を用いることが可能である。
サーバF01は、ステップS1404の処理結果から、条件2『フェードの発生が検出されたか否か』を判断する(ステップS1405)。フェードの発生が検出された場合にはステップS1406に進み、フェードの発生が検出されなかった場合にはステップS1410に進む。
ステップS1405でフェードの発生が検出された場合には、さらに、サーバF01は、フェードテーブル格納部1202内のフェードテーブルを参照して、条件3『入力描画データと同一の位置(X、Y)及び大きさ(W、H)を有する描画データが、フェードテーブルに登録されているか否か』を検索する(ステップS1406)。この検索の結果、同一の位置及び大きさの描画データがフェードテーブルに登録されている場合にはステップS1407に進み、同一の位置及び大きさの描画データがフェードテーブルに登録されていない場合にはステップS1409に進む。
ステップS1406で同一の位置及び大きさの描画データがフェードテーブルに登録されている場合には、条件4『フェードテーブル内の該当フェードに対応する行(エントリ)のフェード終了フラグが『0』であるか否か』を確認する(ステップS1407)。フェード終了フラグが『1』の場合にはステップS1408に進み、フェード終了フラグが『0』の場合にはステップS1409に進む。
ステップS1407でフェード終了フラグ『1』が確認された場合には、サーバF01はフェード継続処理を行う(ステップS1408)。フェード継続処理では、前BMP画像から現画像BMP画像に移る映像が継続してフェード状態にあるとみなされ、サーバF01は、フェードテーブルにおいて、位置(X、Y)及び大きさ(W、H)に対応するインデックスのフェード枚数のカウントを1枚増やす処理を行う。
また、ステップS1407でフェード終了フラグ『1』が確認された場合や、ステップS1406で同一の位置及び大きさのフェードがフェードテーブルに既に登録されていない場合には、サーバF01はフェード初期処理を行う(ステップS1409)。フェード初期処理では、前BMP画像から現画像BMP画像に移る映像において新たなフェードが発生したとみなされ、サーバF01は、フェードテーブルのデータに新たな行(エントリ)を設定して、下記の数値をセットする。
・位置(X、Y)及び大きさ(W、H)に、フェードが発生している画像の位置及び大きさをセット
・フェード開始固有値に、描画データの固有値をセット
・フェード開始RGB値に、対象領域(W、H)の全画素の各色値(R、G、B)の平均値を求めて代入
・フェード開始時刻に、現時刻(少なくともフレーム取得部402の取得間隔未満の精度を持つ絶対時刻、例えば10ミリ秒の精度を持つ協定世界時とする)をセット
一方、ステップS1405でフェードの発生が検出されなかった場合には、サーバF01は、ステップS1406と同様に、フェードテーブル格納部1202内のフェードテーブルを参照して、条件3『描画データの位置(X、Y)及び大きさ(W、H)が、フェードテーブルに登録されているか否か』を検索する(ステップS1410)。
ステップS1410における検索の結果、同一の位置(X、Y)及び大きさ(W、H)の描画データがフェードテーブルに登録されていない場合には、処理は終了となる。一方、同一の位置(X、Y)及び大きさ(W、H)の描画データがフェードテーブルに登録されている場合には、前BMP画像から現BMP画像に移る映像においてフェードが終了したとみなされ、フェード終了処理が行われる(ステップS1411)。フェード終了処理では、フェードテーブルの当該フェードに対応する行(エントリ)に対して、下記の数値がセットされる。
・フェード終了フラグに『1』をセット
・フェード最後固有値に、描画データの固有値をセット
・フェード最後RGB値に、対象領域(W、H)の全画素の各色値(R、G、B)の平均値を求めて代入
・フェード最後時刻に、現時刻をセット
・フェード枚数のカウントを1枚増やす
・フェード係数(R、G、B)に、以下の式で求められる数値をセット
R = (フェード開始R値−フェード最後R値)÷フェード枚数 ・・・(式1)
G = (フェード開始G値−フェード最後G値)÷フェード枚数 ・・・(式2)
B = (フェード開始B値−フェード最後B値)÷フェード枚数 ・・・(式3)
・フェードスパンに、差分時刻(フェード最後時刻−フェード開始時刻)をセット
上述の図8に図示されているフェードテーブル作成のためのフェード検出処理によれば、任意のアプリケーションで使用されているフェード効果を検出し、そのフェードを再現するための特徴(図16に図示されているフェードテーブルの各項目によって特定されるような特徴)を検出して、フェードテーブルに格納することが可能となる。すなわち、図7において、ステップS1302で得られたフェード検出処理の結果は、例えば図16に図示されているフェードテーブルに追加登録されることで、フェードテーブルの更新が行われる(ステップS1303)。そして、前フレームバッファ404には、今回取得した画像データ(フレームバッファ401内の画像データ)が上書きされ(ステップS1304)、ステップS1305において、何らかの終了条件が成立している場合には動作を終了する一方、終了条件が存在しない場合にはステップS601に戻って上記の処理が繰り返し行われる。
一方、図7のステップS1301におけるクライアントの接続/非接続の判断において、サーバF01とクライアントF02との接続が検出されなかった場合にはステップS1306に進む。このとき、サーバF01では、前フレームバッファ404が空か否かを確認することによって、初回の画像データ取得動作か否かの判定が行われる(ステップS1306)。前フレームバッファ404が空の場合(画像データが1度も書き込まれていない場合)にはステップS1308に進み、前フレームバッファ404が空ではない場合にはステップS1307における比較処理及び変換処理が行われる。
以下、図9を参照しながら、上記のステップS1308における比較処理及び変換処理の詳細について説明する。図9には、本発明の第1の実施の形態において、サーバF01の比較決定部1203で行われる比較処理及び変換処理の一例を示すフローチャートが図示されている。
図9において、まず、サーバF01の比較決定部1203は、固有値算出部801から供給される描画データの固有値と、テーブル格納部804内のテーブルに保持されている固有値とを比較して、条件1『固有値算出部801から供給される描画データの固有値と同一のものがテーブル格納部804内のテーブルに保持されているか否か』を判断する(ステップS1501)。
このとき、ステップS1501で同一の固有値がテーブルに存在する場合には、条件2『固有値算出部801から供給された入力描画データの位置(X、Y)及び大きさ(W、H)がフェードテーブルに登録されているか否か』を判断する(ステップS1502)。そして、入力描画データの位置(X、Y)及び大きさ(W、H)がフェードテーブルに登録されている場合には、さらに、条件4『フェードテーブル内の該当する行(エントリ)のフェード処理中フラグが『1』であるか否か』の判断が行われる(ステップS1503)。
ステップS1503においてフェード処理中フラグが『1』の場合には、入力描画データに関して、フェード状態中処理が行われる(ステップS1504)。なお、フェード状態中処理が行われる場合は、入力描画データに係る表示がフェード状態にある。以下、図17を参照しながら、上記のステップS1504におけるフェード状態中処理の詳細について説明する。図17には、本発明の第1の実施の形態において、サーバF01の比較決定部1203で行われるフェード状態中処理の一例を示すフローチャートが図示されている。
図17において、まずサーバF01の比較決定部1203は、条件1『入力描画データの固有値と、フェードテーブル内のフェード最後固有値とを比較し、これらの値が同一であるか否か同等であるか否か』を判断する(ステップS1701)。
ステップS1701において、入力描画データの固有値とフェードテーブル内のフェード最後固有値とが同一の場合には、フェード状態が終了したと判断され、フェード終了データ作成処理が行われる(ステップS1702)。ステップS1702のフェード終了データ作成処理では、下記のデータ構造3のデータが作成され、さらにデータ構造3に沿ったデータの各数値が下記のようにセットされる。
(フェード情報フラグ、フェードSEフラグ、フェード開始X座標、フェード開始Y座標、フェード画像の横幅、フェード画像の高さ、フェード開始固有値、フェード係数(R、G、B)、フェードスパン)・・・<データ構造3>
・フェードに関する情報であることを示すフェード情報フラグに『1』をセット
・フェードSEフラグにフェード終了を示す『1』をセット
・その他のデータには『0』をセット
なお、データ構造3に沿ったデータのフェード情報フラグは、例えば『1』にセットされるとフェードに関連する情報の存在を示し、『0』にセットされるとフェードとは無関係の情報の存在を示す情報である。また、フェードSEフラグは、フェードの開始又は終了を示す情報であり、例えば『1』にセットされるとフェードの終了を示し、『0』にセットされるとフェードの開始を示す情報である。また、フェード開始X座標及びY座標は、フェードが発生する位置を示す情報であり、フェード画像の横幅及び高さは、フェードの領域(大きさ)を示す情報である。また、フェード開始固有値は、フェードの開始時の描画データを特定するための情報である。なお、フェード開始固有値に代わってフェード最後固有値が含まれてもよい。また、フェード係数は、フェード開始RGB値からフェード最後RGB値までの遷移をフェードスパン(又はフェード枚数)で除算した値であり、画像に対してこのフェード係数の値を連続的に付加していくことで、擬似的なフェード効果を作り出すことが可能となる。また、フェードスパンは、フェードの開始時刻から終了時刻までの総時間であり、例えば秒によって表される。
一方、ステップS1701において、入力描画データの固有値とフェードテーブル内のフェード最後固有値とが同一ではない場合には、条件2『フェードタイマ≧フェードスパン』を満たしているか否かの判断が行われる(ステップS1703)。この条件2が満たされている場合(すなわち、フェードスパン以上の時間だけフェード状態の時間が経過)には、上述のステップ1702に進んで、ステップS1702に係る処理が行われる。また、この条件2が満たされていない場合にはフェード状態中(フェードが終了していない状態)であり、データの作成は行われず、フェード状態中処理はそのまま終了となる。なお、フェードタイマは、後述のステップS1509において、フェード状態の開始時に起動され、フェード状態の経過時間を計測するためのものである。
また、図9において、ステップS1502で入力描画データの位置(X、Y)及び大きさ(W、H)がフェードテーブルに登録されている場合や、ステップS1503においてフェード処理中フラグが『0』の場合には、ステップS1505に進む。ステップS1505では、フェード非発生状態の処理が行われて、クライアントF02に送信するデータが作成される。この場合、データ構造2に沿ったデータが作成されるが、さらに、フェードが発生していないことを示す『0』の値がセットされたフェード情報フラグがデータ構造2のデータに付加される。すなわち、ステップS1505では、例えばデータ構造2のデータにフェード情報フラグが設定された、下記のようなデータ構造4のデータが作成される。
(フェード情報フラグ、データ構造2のデータ)・・・<データ構造4>
一方、ステップS1501で同一の固有値がテーブル格納部804内のテーブルに存在しない場合には、条件3『入力描画データの固有値がフェードテーブルに登録されているか否か』の判断が行われる(ステップS1506)。ステップS1506で入力描画データの固有値がフェードテーブルに登録されていない場合には、ステップS1505と同様にフェード非発生状態の処理が行われる(ステップS1510)。この場合もステップS1506と同様に、フェード情報フラグが『0』にセットされたデータ構造3のデータが作成される。
一方、ステップS1506で入力描画データの固有値がフェードテーブルに登録されている場合には、ステップS1503と同様に、条件4『フェードテーブル内の該当する行(エントリ)のフェード処理中フラグが『1』であるか否か』の判断が行われる(ステップS1507)。そして、ステップS1507においてフェード処理中フラグが『1』の場合には、ステップS1504と同様に、入力描画データに関してフェード状態中処理が行われる一方(ステップS1508)、ステップS1507においてフェード処理中フラグが『0』の場合には、フェード状態が開始されたとみなされて、フェード初期処理が実行される(ステップS1509)。
ステップS1509におけるフェード初期処理では、入力描画データの位置(X、Y)及び大きさ(W、H)で特定される領域においてフェードが始まると判断され、クライアントF02に対して送信する上述のデータ構造3に沿ったデータが作成されるとともに、フェードタイマを0にセットして起動し、さらに、データ構造3に沿ったデータに対して下記のパラメータの設定が行われる。
・フェード情報フラグに『1』を代入
・フェードの開始終了を示すフラグであるフェードSEフラグにフェードが開始することを示す『0』をセット
・フェードの開始X座標及びY座標に、入力画像データの位置(X、Y)をセット
・フェード画像の横幅及び高さに、入力画像データの大きさ(W、H)をセット
・フェード開始固有値に、入力描画データの固有値をセット
・フェード最後固有値に、このフェードに対応したフェードテーブル内のフェード最後固有値をセット
・フェード係数(R、G、B)に、このフェードに対応したフェードテーブル内のフェード係数(R、G、B)をセット
・フェードスパンに、このフェードに対応したフェードテーブル内のフェードスパンをセット
次に、図10を参照しながら、図6に図示されているクライアントF02の動作の一例について説明する。図10には、本発明の第1の実施の形態におけるクライアントF02の動作の一例を示すフローチャートが図示されている。
クライアントF02では、まず、サーバF01から送信されるVNCプロトコルに沿ったデータを受信し、このデータを元のデータ構造(データ構造3又はデータ構造4)に沿ったデータ(以下、入力データと記載)に変換する(ステップS2001)。なお、上述のサーバF01は、クライアントF02に送信するデータに対して、フェード情報フラグを付加している。そして、入力データを受け取ったフェード処理部1206は、フェード処理を行う(ステップS2002)。
以下、図11を参照しながら、上記のステップS2002におけるフェード処理の詳細について説明する。図11には、本発明の第1の実施の形態において、クライアントF02のフェード処理部1206で行われるフェード処理の一例を示すフローチャートが図示されている。
図11において、フェード処理部1206は、まず、条件1『入力データのフェード情報フラグが『1』であるか否か』を判断する(ステップS2101)。このとき、フェード情報フラグが『1』(フェードに関する情報であることを示す)の場合にはステップS2102に進み、『0』の場合にはステップS2105へ移動する。
ステップS2101でフェード情報フラグが『1』であることが検出された場合には、続いて条件2『フェードSEフラグが『0』であるか否か』の判断が行われる(ステップS2102)。このとき、フェードSEフラグが『0』(フェードの開始を示す)の場合にはステップS2103に進み、『1』の場合にはステップS2104に進む。
ステップS2102でフェードSEフラグが『0』であることが検出された場合には、フェード開始処理が行われる(ステップS2103)。ステップS2103のフェード開始処理ではフェード処理が開始されて、下記のように描画データ及びフェードテーブルデータが作成される。
1.入力データより、位置(フェード開始X座標、フェード開始Y座標)、大きさ(フェード画像の横幅、フェード画像の高さ)を取得し、前フレームバッファ1208から上記の位置及び大きさのビットマップ画像を取得する。
2.取得したビットマップ画像の全画素に、入力データのフェード係数(R、G、B)を加算してフェード効果の反映されたビットマップ画像を作成し、位置及び大きさの情報を付加して、描画作成部806に供給する描画データを作成する。
3.(フェードテーブル更新フラグ、フェード処理中フラグ、フェードタイマ、入力データ)で構成されたデータ構造5に沿ったフェードテーブルデータを作成する。
4.フェードタイマを『0』にセットして起動する。
5.フェード処理中フラグに『1』をセットする。
6.フェードテーブル更新フラグに『1』をセットする。
なお、データ構造5に沿ったフェードテーブルデータのフェードテーブル更新フラグは、例えば『1』にセットされるとフェードテーブルの更新を示し、『0』にセットされるとフェードテーブルの維持(更新を行わないこと)を示す情報である。また、フェード処理中フラグは、例えば『1』にセットされるとこのフェードが現在処理中であることを示し、『0』にセットされるとこのフェードが現在処理中ではないことを示す情報である。また、フェードタイマはフェード状態の経過時間を計測するタイマの起動(又は停止)を指示するための情報である。
また、ステップS2102でフェードSEフラグが『1』であることが検出された場合には、フェード終了処理が行われる(ステップS2104)。ステップS2104のフェード終了処理ではフェード処理が終了され、下記のように描画データ及びフェードテーブルデータが作成される。
1.入力データからフェード最後固有値を取得し、フェードテーブル内で該当するデータを検索して、そのデータに対応するフェードテーブルデータを取得する。
2.取得したフェードテーブルデータのフェード処理中フラグに『0』をセットする。
3.取得したフェードテーブルデータのフェードタイマに『0』をセットする。
4.取得したフェードテーブルデータのフェードテーブル更新フラグに『1』をセットする。
5.前フレームバッファ1208から、該当する位置及び大きさのビットマップ画像データを取得し、取得したビットマップ画像の全画素に対して該当フェードテーブルのフェード係数(R、G、B)を加算して、フェード効果の反映されたビットマップ画像データを作成し、位置及び大きさの情報を付加して、描画作成部806に供給する描画データを作成する。
また、ステップS2101でフェード情報フラグが『0』であることが検出された場合には、条件3『フェード処理中フラグを検索し、フェード処理中フラグが『1』であるものが存在するか否か』の判断が行われる(ステップS2105)。このとき、フェード処理中フラグが『1』であるものが存在しない場合には、フェード状態にある描画データは存在せず、フェード処理は終了となる。
一方、フェード処理中フラグが『1』であるものが存在する場合には、続いて、条件4『フェードタイマ≧フェードスパン』を満たしているか否かの判断が行われる(ステップS2106)。このとき、ステップS2106でフェードタイマ≧フェードスパンの場合には、このフェード効果は既にタイムアウト状態にあり、ステップS2104と同様に、フェード終了処理が行われる(ステップS2107)。
一方、ステップS2106でフェードタイマ<フェードスパンの場合には、現在進行中のフェードに対するフェード中間処理が行われる(ステップS2108)。ステップS2108のフェード中間処理では、下記のように描画データ及びフェードテーブルデータの作成が行われる。
1.フェードテーブルから、フェード処理中フラグが『1』であるデータを検索して取得するとともに、前フレームバッファ1208から、該当する位置及び大きさのビットマップ画像データを取得し、取得したビットマップ画像データと、登録されているフェード係数(R、G、B)を加算し、フェード効果の反映されたビットマップ画像を作成する。そして、作成されたビットマップ画像に位置及び大きさの情報を付加し、描画作成部806に出力するデータを作成する。
2.データ構造5に沿ったフェードテーブルデータに全て『0』をセットする(あるいは、フェードテーブルの更新が行われないように、少なくともフェードテーブル更新フラグのみが『0』にセットされてもよい)。
なお、上述のフェード処理の際に作成されるビットマップ画像データはいずれも、直前の描画データ(あるいは、フェード開始固有値で指定された描画データ)に対して所定のフェード係数(R、G、B)を加算することによって得られる画像データである。これによって、フェード終了時に表示される画像(例えば、真っ白又は真っ黒な画像)に向けて徐々に色調が変化するフェード効果が得られるようになる。なお、フェード係数としてY値(輝度)を使用することによって、徐々に輝度が変化するフェード効果を実現することも可能である。
図10において、ステップS2002のフェード処理が完了した後、フェード処理によって作成されたフェードテーブルデータによるフェードテーブルの更新処理が行われる(ステップS2003)。一方、フェードとは無関係のデータに関しては、上述の本発明の第1及び第2の実施の形態が前提とする動作と同様の描画作成処理(図4のステップS1002の描画処理)が行われ(ステップS2004)、必要に応じてテーブル格納部807内のテーブルの更新が行われる(ステップS2005)。さらに、ステップS2003のフェード処理によって作成されたデータやステップS2004の描画作成処理によって作成されたデータに基づいて、描画作成部806における描画処理が行われる(ステップS2006)。
そして、出力部409は、フレームバッファ408を順次読み出し、D/A変換などの所望の信号処理を行ってディスプレイ410への出力を行い(ステップS2007)、さらに、前フレームバッファ1208に入力描画データが上書きされる(ステップS2008)。その後、ステップS2009において、何らかの終了条件が成立している場合には動作を終了する一方、終了条件が存在しない場合にはステップS2001に戻って上記の処理が繰り返し行われる。
以上、説明したように、本発明の第1の実施の形態におけるリモートデスクトップシステムは、サーバ側で起こり得るフェード表示に関する特徴をあらかじめ把握しておき、サーバ側でフェード表示が発生した場合に、クライアント側で擬似的にフェードを再現するために、クライアントに対してフェード表示に関する特徴のみを送信することで、フェード発生時に伝送されるデータ量を削減することが可能となり、クライアント側における遅延や表示の不具合(ぎこちない表示)などを抑えることが可能となる。特に従来の技術と比較した場合、従来の技術ではフェード発生時にはサーバからクライアントに対して画像データを送信していたのに対し、本発明の第1の実施の形態では、サーバからクライアントにフェード命令を一度送信することでフェードを実現することができ、サーバからクライアントにフェード発生時に伝送されるデータ量を大幅に削減することが可能となる。
<第2の実施の形態>
次に、本発明の第2の実施の形態について説明する。図12は、本発明の第2の実施の形態におけるリモートデスクトップシステムの一構成例を示すブロック図である。図12に図示されているリモートデスクトップシステムは、サーバG01とクライアントG02とが任意のデータ伝送路を介して接続された構成を有している。
以下、図12に図示されているサーバG01の構成について説明する。図12に図示されているサーバG01は、フレームバッファ401、フレーム取得部402、比較部403、前フレームバッファ404、スクロール処理部2201、固有値算出部2202、テーブル格納部804、比較決定部2203、通信部2204を有している。
図12に図示されているサーバG01のフレームバッファ401、フレーム取得部402、比較部403、前フレームバッファ404には、従来の技術で説明した図21に図示されているVNCサーバD01のフレームバッファ401、フレーム取得部402、比較部403、前フレームバッファ404を利用することが可能である。また、図12に図示されているテーブル格納部804には、図1に図示されているテーブル格納部804を利用することが可能である。
図12の構成では、比較部403から出力される描画データを含むデータ構造1に沿ったデータは、スクロール処理部2201に供給される。スクロール処理部2201は、比較部403から供給されるデータ構造1に沿ったデータに加えて、前フレームバッファ404内の画像データを参照して、スクロール検出を行う。そして、スクロールが検出された場合には、スクロール処理部2201は、下記のデータ構造6のデータを作成して固有値算出部2202に出力する。
(スクロールフラグ、画面上のX座標、画面上のY座標、ビットマップ画像の横幅、ビットマップ画像の高さ、ビットマップ画像、スクロールX座標、スクロールY座標)・・・<データ構造6>
なお、データ構造6に沿ったデータのスクロールフラグには、スクロール検出の有無を示す情報が挿入される。また、スクロールX座標及びY座標には、スクロールによって移動した画像がスクロール前に存在していた位置を示す情報が挿入される。
また、固有値算出部2202は、スクロール処理部2201から供給されるデータ構造6に沿ったデータを受け取ると、このデータ構造6に沿ったデータに基づいて、比較決定部2203に出力するためのデータ(下記のデータ構造7に沿ったデータ)を作成して、比較決定部2203に出力する。
(スクロールフラグ、ビットマップ存在フラグ、画面上のX座標、画面上のY座標、ビットマップ画像の横幅、ビットマップ画像の高さ、ビットマップ画像、スクロールX座標、スクロールY座標、固有値)・・・<データ構造7>
なお、データ構造6からデータ構造7への変換は、基本的には、上述のデータ構造1からデータ構造2への変換と同一である。スクロール処理部2201におけるデータ構造6のデータ作成や、固有値算出部2202におけるデータ構造7のデータ作成に関しては、後で詳細に説明する。
また、通信部2204は、比較決定部2203から供給されるデータ構造7に沿ったデータを、例えばVNCプロトコルに変換してクライアントG02に送信する。
一方、図12に図示されているクライアントG02は、通信部2205、描画作成部2206、テーブル格納部807、フレームバッファ408、出力部409、ディスプレイ(ビットマップディスプレイ)410を有している。
なお、図12に図示されている本発明の第2の実施の形態におけるクライアントG02は、後述のようにサーバG01がデータ構造7のデータ(スクロールフラグが付加されたデータ)をクライアントG02に送信する場合が考えられるので、クライアントG02は、データ構造7のデータに係る処理を行って、適切にスクロール表示を行うことができることが望ましい。しかしながら、サーバG01は、スクロール検出時であっても、基本的に本発明の第1及び第2の実施の形態の前提において説明した動作によって、効率良いデータ伝送を行うことが可能であり、すなわち、クライアントG02の構成は、本発明の第1及び第2の実施の形態の前提において説明したものと同一の構成であってもよい。さらに、サーバG01は、スクロール検出時に、後述のようにVNCシステムで使用されているcopyrecコマンド(特定の領域を他の領域にコピーさせるコマンド)によって、スクロール検出時において効率良いデータ伝送を実現することが可能である。すなわち、クライアントG02は、従来のVNCシステムにおけるクライアントと同一の構成であってもよい。
次に、図13を参照しながら、図12に図示されているサーバG01の動作の一例について説明する。図13は、本発明の第2の実施の形態におけるサーバの動作の一例を示すフローチャートである。
サーバG01では、本発明の第1及び第2の実施の形態の前提(図2参照)と同様に、フレーム取得部402がフレームバッファ401から画像データ(描画データ)を取得する(ステップS601)。そして、スクロール処理部2201では、比較部403から供給されるデータ構造1のデータに基づいて、スクロール処理が行われる(ステップS2301)。
以下、図14を参照しながら、上記のステップS2301におけるスクロール処理の詳細について説明する。図14は、本発明の第2の実施の形態において、サーバのスクロール処理部で行われるスクロール処理の一例を示すフローチャートである。
スクロール処理では、スクロール処理部2201は、まず比較部403から供給されるデータ構造1に沿ったデータのビットマップ画像の横幅(以下、Wと記載)、及びビットマップ画像の高さ(以下、Hと記載)を、あらかじめ定められた閾値Tw2、Th2と比較し、『W>Tw2、かつ、H>Th2』を満たしているか否かを判断する(ステップS2401)。『W>Tw2、かつ、H>Th2』の条件が満たされている場合にはステップS2402に進み、『W>Tw2、かつ、H>Th2』の条件が満たされていない場合にはステップS2405に進む。
ステップS2401で『W>Tw2、かつ、H>Th2』の条件が満たされている場合には、スクロール処理部2201は、データ構造1に沿った入力描画データのビットマップ画像を任意サイズ(N×M)のブロックに分割する(ステップS2402)。この画像分割によって、例えば16×16画素の矩形領域が1ブロックとして分割される。
そして、ステップS2402で分割された画像の各ブロックに対して、前フレームバッファ404のビットマップ画像を使用して、動きベクトル検出が行われる(ステップS2403)。例えば、時系列的に隣接するフレーム内の表示対象物の動きベクトルを検出し、所定領域以上がまとまって同一方向及び同一距離だけ移動している場合に、スクロールが発生していると判断することが可能である。ただし、ここでは、スクロールの検出を行うことを目的としており、検索する方向は上下左右(スクロールにおける通常の移動方向)とする。なお、処理負荷が大きくなるとともに処理が複雑になるものの、任意の方向における動きベクトルの検出を行うことも可能である。
また、動きベクトル検出を行う範囲に関しては、画面全体をその範囲としてもよいが、より狭い範囲(例えばW/2又はH/2)として、処理負荷を軽減することが望ましい。なお、この動きベクトル検出では、16×16の1ブロック内のすべての画素が一致することを条件とすることが望ましい。また、分割したブロックすべてに関して動きベクトル検出及び比較を行う必要はなく、複数の分割ブロックのうちの1つに着目して動きベクトル検出及び比較を行ってもよい。
次に、スクロール処理部2201は、ステップS2403で動きベクトルが検出されたか否かをチェックする(ステップS2404)。このとき、動きベクトルの検出結果から、検索方向(上下方向)に関して複数の画素のまとまりが同一方向かつ同一距離だけ動くような動きが検出されなかった場合には、ステップS2405に進む。この場合には、スクロールと判断できる動きが存在しないので、入力されたデータ構造1のデータに対して下記の設定を加えて、データ構造6のデータを作成する(ステップS2405)。
・スクロールフラグ=0にセット
・スクロールX座標=0にセット
・スクロールY座標=0にセット
一方、動きベクトルの検出結果から、検索方向(上下方向)に関して複数の画素のまとまりが同一方向かつ同一距離だけ動くような動きが検出された場合には、スクロール処理部2201は、ステップS2403で算出された動きベクトルと同一の動きベクトルを有するブロックをまとめてスクロール領域を特定し(ステップS2406)、このスクロールに関するデータを作成するとともに、このスクロールによって移動した画像データ(移動前から存在していた画像データ)に関するデータ構造6のデータの作成を行う(ステップS2407)。さらに、スクロールによって新たに出現した画像データも存在しており、この新たに出現した画像データに関してデータ構造6のデータの作成も行われる(ステップS2408)。
ここで、図15に図示されている具体的な画像を一例に挙げて、本発明の第2の実施の形態におけるスクロールの概念について説明する。なお、図15の左側にはスクロール前の画像(前画像)が図示されており、右側にはスクロール後の画像(現画像)が図示されている。
図15において、画像領域(1)は前画像では存在していたが、下方向(画像は上方向に移動)にスクロールしたことにより、現画像では存在しなくなった画像である。一方、図15の画像領域(2)は、前画像で(X1、Y1)の位置に(W、H1)の大きさで存在した画像であり、下方向にスクロールすることにより、現画像では(X0、Y0)の位置に移動して存在している。なお、画像領域(2)の性質を有する画像をスクロール移動画像と呼ぶことにする。また、図15の画像領域(3)は、下方向にスクロールすることにより、新たに出現した画像である。画像領域(3)の大きさは(W、H2)であり、位置は(X2、Y2)である。なお、画像領域(3)の性質を有する画像をスクロール新規画像と呼ぶことにする。このように、スクロールによって画像が移動した場合には、以前から存在しておりスクロールによって移動したスクロール移動領域の画像データ(画像領域(2))と、スクロールによって新たに出現したスクロール新規領域の画像データ(画像領域(3))とに分けることが可能である。
上述のステップS2407では、図15の画像領域(2)に関するデータの作成が行われる。具体的には、図15の画像領域(2)に関して、下記のデータ構造6に沿ったデータが作成される。
・スクロールフラグ=1をセット
・スクロールX座標=X1をセット
・スクロールY座標=Y1をセット
・画面上のX座標=X0をセット
・画面上のY座標=Y0をセット
・ビットマップ画像の横幅=Wをセット
・ビットマップ画像の高さ=H1をセット
・ビットマップ画像=NULLをセット
また、上述のステップS2408では、図15の画像領域(3)に関するデータの作成が行われる。具体的には、図15の画像領域(3)に関して、下記のデータ構造6に沿ったデータが作成される。
・スクロールフラグ=0をセット
・スクロールX座標=0をセット
・スクロールY座標=0をセット
・画面上のX座標=X2をセット
・画面上のY座標=Y2をセット
・ビットマップ画像の横幅=Wをセット
・ビットマップ画像の高さ=H2をセット
・ビットマップ画像・・・画像領域(3)のビットマップ画像をセット
上述のように、図13のステップS2301で行われたスクロール処理により作成されたデータ構造6のデータは、スクロール処理部2201から固有値算出部2202に供給される。そして、固有値算出部2202は、データ構造6のデータに含まれるスクロールフラグを解析し、スクロールフラグが『0』のビットマップ画像に対して固有値を算出する(ステップS2302)。ここで、サーバG01では、前フレームバッファ404が空か否かを確認することによって、初回の画像データ取得動作か否かの判定を行い(ステップS2303)。このとき、前フレームバッファ404が空の場合(画像データが1度も書き込まれていない場合)には、ステップS2304の比較処理及び変換処理をスキップしてステップS2305に進み、前フレームバッファ404が空ではない場合にはステップS2304に進む。
ステップS2304では、比較決定部2203が、ステップS2302で算出した固有値を付加してデータ構造7のデータを作成し、出力する。なお、スクロールフラグが『1』のデータは、固有値にNULLが代入されたデータ構造7のデータに変換される。さらに、比較決定部2203は、このデータに含まれる固有値や画像データのセットをテーブルに追加登録することによって、テーブル格納部804内のテーブルの更新を行う(ステップS2305)。
そして、比較決定部2203から出力されたデータは、例えばVNCプロトコルに準拠したデータに変換された後にクライアントG02に送信される(ステップS2306)。また、VNCシステムと同様に、前フレームバッファ404には、今回取得した画像データ(フレームバッファ401内の画像データ)が上書きされ(ステップS2307)、ステップS2308において、何らかの終了条件が成立している場合には動作を終了する一方、終了条件が存在しない場合にはステップS601に戻って上記の処理が繰り返し行われる。
なお、本発明の第2の実施の形態では、例えば図15に示すスクロールが検出された場合に、サーバG01は、新たな画像領域(3)の送信と、既存の画像領域(2)の利用指示をクライアントG02に対して行う。上記の新たな画像領域(3)の送信はVNCシステムにおける通常の画像データの送信によって実現可能であり、上記の既存の画像領域(2)の利用指示は、VNCシステムのcopyrecコマンドの使用によって実現可能である。したがって、本発明の第2の実施の形態では、クライアントG02が、既存のVNCシステムに係る機能しか有していない場合であっても、サーバG01からクライアントG02に効率良いデータ伝送を実現することが可能であり、高い汎用性が実現される。
以上、説明したように、本発明の第2の実施の形態では、リモートデスクトップシステムにおいて、動きベクトル検出によってスクロールが検出された場合に、スクロールによって単に表示画面上の位置が移動しただけの画像に関しては、クライアントでその位置を変えて(コピーを行って)表示するように指示することで、スクロール変化時に伝送されるデータ量を削減することが可能となり、クライアント側における遅延や表示の不具合(ぎこちない表示)などを抑えることが可能となる。特に従来の技術と比較した場合、従来の技術ではスクロール発生時にはサーバからクライアントに対して画像データを送信していたのに対して、本発明の第2の実施の形態では、サーバからクライアントにコピー命令を送信することでスクロールを実現することができ、サーバからクライアントにスクロール発生時に伝送されるデータ量を大幅に削減することが可能となる。
なお、本明細書では、本発明の第1及び第2の実施の形態に関して独立して説明を行ったが、これらの第1及び第2の実施の形態を任意に組み合わせて用いることも可能である。また、本発明を実現するサーバ及びクライアントとして、例えば汎用コンピュータを利用することも可能である。また、上述の説明では、サーバ及びクライアントが有する構成要素は機能ブロックによって模式的に図示されているが、これらの各構成要素は、ハードウェア又はソフトウェア(例えば、コンピュータによって実行可能なプログラム)によって実現することが可能である。例えば、上記した各装置の機能をプログラムによりコンピュータに実現させるようにしてもよい。また、このプログラムは、記録媒体から読み取られてコンピュータに取り込まれてもよいし、通信ネットワークを介して伝送されてコンピュータに取り込まれてもよい。
本発明は、リモートデスクトップシステムでフェードやスクロールなどの画像変化が発生した場合において、サーバとクライアントとの間において送受信する描画データ列のデータ量を大幅に削減でき、GUIの反応速度を向上させてユーザの利便性を向上するとともに、ユーザのストレスを軽減するという効果、クライアント側に復号化器を搭載させる必要がなく、クライアントの負荷を削減することができるという効果、異なる領域で同一の更新画像データが存在する場合であっても、新たにテーブルに追加することなく更新表示データを再現することができ、テーブル量を削減することができるという効果を有している。また、本発明は、サーバからクライアントに送信されるデータが全て可逆圧縮であるので、クライアント側で実現される画像データが一様になり、クライアント側で視覚的に安定した表示を実現できるという効果を有しており、キーボードなどの入力装置と、映像を表示することが可能なビットマップディスプレイなどの表示装置とを備えたクライアント装置から遠隔地にあるサーバ装置に対して、アプリケーションなどの操作指示を送信し、その結果として、サーバ装置からクライアント装置に送信される映像をクライアント装置で表示するリモートデスクトップシステムの技術に適用可能である。
本発明の第1及び第2の実施の形態が前提とするリモートデスクトップシステムの一構成例を示すブロック図である。 本発明の第1及び第2の実施の形態が前提とするリモートデスクトップシステムにおけるサーバの動作の一例を示すフローチャートである。 本発明の第1及び第2の実施の形態が前提とするリモートデスクトップシステムにおけるサーバの比較決定部で行われる比較処理及び変換処理の一例を示すフローチャートである。 本発明の第1及び第2の実施の形態が前提とするリモートデスクトップシステムにおけるクライアントの動作の一例を示すフローチャートである。 本発明の第1及び第2の実施の形態が前提とするリモートデスクトップシステムにおけるクライアントの描画作成部で行われる描画作成処理の一例を示すフローチャートである。 本発明の第1の実施の形態におけるリモートデスクトップシステムの一構成例を示すブロック図である。 本発明の第1の実施の形態におけるサーバの動作の一例を示すフローチャートである。 本発明の第1の実施の形態において、サーバのフェード処理部で行われるフェードテーブル作成のためのフェード検出処理の一例を示すフローチャートである。 本発明の第1の実施の形態において、サーバの比較決定部で行われる比較処理及び変換処理の一例を示すフローチャートを示す図である。 本発明の第1の実施の形態におけるクライアントの動作の一例を示すフローチャートである。 本発明の第1の実施の形態において、クライアントのフェード処理部で行われるフェード処理の一例を示すフローチャートである。 本発明の第2の実施の形態におけるリモートデスクトップシステムの一構成例を示すブロック図である。 本発明の第2の実施の形態におけるサーバの動作の一例を示すフローチャートである。 本発明の第2の実施の形態において、サーバのスクロール処理部で行われるスクロール処理の一例を示すフローチャートである。 本発明の第2の実施の形態におけるスクロールの概念を説明するための図である。 本発明の第1の実施の形態において、サーバのフェードテーブル格納部に格納されるフェードテーブルの一例を示す図である。 本発明の第1の実施の形態において、サーバの比較決定部で行われるフェード状態中処理の一例を示すフローチャートである。 従来の技術におけるTSSの一例を示すシステム構成図である。 従来の技術におけるXウィンドウシステムの一例を示すシステム構成図である。 従来の技術におけるVNCの一例を示すシステム構成図である。 従来の技術におけるVNCシステムの一構成例を示すブロック図である。 図21に示すVNCサーバの処理の一例を示すフローチャートである。 図21に示すVNCクライアントの処理の一例を示すフローチャートである。 特許文献1に開示されているリモートデスクトップシステムの改良技術におけるサーバの処理の一例を示すフローチャートである。 図24のRKEY作成処理の詳細な処理を示すフローチャートである。 特許文献1に開示されているリモートデスクトップシステムの改良技術におけるクライアントの処理の一例を示すフローチャートである。 従来の技術におけるウィザード形式のアプリケーションにおける表示例を示す図である。 従来の技術におけるフェード表示を説明するための図である。 従来の技術におけるスクロールを説明するための図である。
符号の説明
101、301 アプリケーション
102 端末サーバ
103 端末装置
104 ディスプレイ
201 Xアプリケーション
202 Xサーバ
203 Xクライアント
204、305、410 ディスプレイ(ビットマップディスプレイ)
205 ポインティングデバイス
301 アプリケーション
302、401、408 フレームバッファ
303 VNCサーバ
304 VNCクライアント
306 ポインティングデバイス
402 フレーム取得部
403 比較部
404、1208 前フレームバッファ
405、406、803、805、1204、1205、2204、2205 通信部
407 描画部
409 出力部
801、2202 固有値算出部
802、1203、2203 比較決定部
804、807 テーブル格納部
806、2206 描画作成部
1201、1206 フェード処理部
1202、1207 フェードテーブル格納部
2201 スクロール処理部
A01 TSSを提供する汎用コンピュータ
A02 シリアル伝送
A03 ユーザ
B01、E01、F01、G01 サーバ
B02、C02 通信ネットワーク
B03、C03、E02、F02、G02 クライアント
C01 汎用コンピュータ
D01 VNCサーバ
D02 VNCクライアント

Claims (3)

  1. クライアント装置に対して、前記クライアント装置の表示手段に表示させる画像データを送信するリモートデスクトップシステムのサーバ装置であって、
    前記クライアント装置の前記表示手段にフェード効果を有する表示を実現させる画像データを前記クライアント装置に送信しようとするフェード開始タイミングを検出するフェード検出手段と、
    前記フェード検出手段によって検出された前記フェード開始タイミングにおいて、前記フェード効果を有する表示を実現させる前記画像データを、前記クライアント装置に送信しないように制御するとともに、前記フェード効果を有する表示が行われる前記表示手段上の表示領域と、前記フェード開始タイミングと、前記フェード効果を有する表示の開始から終了までのフェード期間と、前記フェード期間中の前記表示領域における表示の態様とを指示する情報を前記クライアント装置に送信するフェード制御手段とを、
    有するサーバ装置。
  2. クライアント装置に対して、前記クライアント装置の表示手段に表示させる画像データを送信するリモートデスクトップシステムのサーバ装置であって、
    前記クライアント装置に対して送信した前記画像データを格納する画像データ格納手段と、
    新たに前記クライアント装置に対して送信する第1画像データによって表示される表示対象と、前記画像データ格納手段に格納されている前記第1画像データの直前に前記クライアント装置に対して送信した第2画像データによって表示される表示対象との動きベクトルを検出する動きベクトル検出手段と、
    前記動きベクトル検出手段によって検出された前記動きベクトルから、所定領域以上の大きさの画像が、一定方向かつ一定距離だけ移動を行っている動きが検出された場合に、前記第1画像データの表示画像と前記第2画像データの表示画像との間でスクロールが起こっていると判断するスクロール判断手段と、
    前記スクロール判断手段で前記スクロールの発生が検出された前記第1画像データ及び前記第2画像データから、前記スクロールが起こっているスクロール領域を特定するスクロール領域特定手段と、
    前記第1画像データの表示画像の前記スクロール領域と前記第2画像データの表示画像の前記スクロール領域とを比較し、前記スクロールによって移動するスクロール移動領域の画像データ、及び、前記スクロールによって新たに表示されるスクロール新規領域の画像データを特定するスクロール画像データ特定手段と、
    前記クライアント装置に対して既に送信されている前記第2画像データの表示画像から前記スクロール移動領域の表示画像を抽出するように指示する情報と、前記スクロールに基づく前記スクロール移動領域の表示画像の新たな表示位置を指定する情報とを前記クライアント装置に送信し、前記クライアント装置に抽出させた前記表示画像を前記新たな表示位置に表示させる第1スクロール表示制御手段と、
    前記第1画像データの表示画像の一部を構成する前記第1画像データ内における前記スクロール新規領域の画像データのみを含むとともに、前記スクロール新規領域の表示画像の表示位置を指定する情報を前記クライアント装置に送信し、前記スクロール新規領域の表示画像をその表示位置に表示させる第2スクロール表示制御手段とを、
    有するサーバ装置。
  3. サーバ装置から受信する画像データに基づいて画像表示を行うリモートデスクトップシステムのクライアント装置であって、
    画像表示を行う表示手段と、
    フェード効果を有する表示を実現させる画像データの代わりに、前記フェード効果を有する表示が行われる前記表示手段上の表示領域と、前記フェード開始タイミングと、前記フェード効果を有する表示の開始から終了までのフェード期間と、前記フェード期間中の前記表示領域における表示の態様とを指示する情報を前記サーバ装置から受信するフェード指示受信手段と、
    前記フェード開始タイミングから前記フェード期間の間、前記表示手段上の前記表示領域に前記フェード期間中の前記表示領域における前記表示の態様に基づく表示を行うように制御するフェード表示制御手段とを、
    有するクライアント装置。
JP2006064450A 2006-03-09 2006-03-09 リモートデスクトップシステムのサーバ装置及びクライアント装置 Pending JP2007241736A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006064450A JP2007241736A (ja) 2006-03-09 2006-03-09 リモートデスクトップシステムのサーバ装置及びクライアント装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006064450A JP2007241736A (ja) 2006-03-09 2006-03-09 リモートデスクトップシステムのサーバ装置及びクライアント装置

Publications (1)

Publication Number Publication Date
JP2007241736A true JP2007241736A (ja) 2007-09-20

Family

ID=38587207

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006064450A Pending JP2007241736A (ja) 2006-03-09 2006-03-09 リモートデスクトップシステムのサーバ装置及びクライアント装置

Country Status (1)

Country Link
JP (1) JP2007241736A (ja)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010055493A (ja) * 2008-08-29 2010-03-11 Casio Comput Co Ltd サーバ装置、サーバベース・コンピューティング・システム、およびサーバ制御プログラム
JP2010529537A (ja) * 2007-05-31 2010-08-26 マイクロソフト コーポレーション ビットマップ形式の表示リモーティング
JP2011145964A (ja) * 2010-01-18 2011-07-28 Hioki Ee Corp 測定装置および設定画面の表示方法
JP2012114493A (ja) * 2010-11-19 2012-06-14 Toshiba Corp サーバ装置及びプログラム
JP2012133210A (ja) * 2010-12-22 2012-07-12 Ntt Docomo Inc 表示装置、画面画像転送方法、及びプログラム
JP2012252553A (ja) * 2011-06-03 2012-12-20 Pioneer Electronic Corp 情報処理装置及び方法、並びにコンピュータプログラム及び情報記録媒体
JP2013074394A (ja) * 2011-09-27 2013-04-22 Toshiba Corp 画像中継装置、画像中継方法及び画像中継プログラム
JP2013205835A (ja) * 2012-03-29 2013-10-07 Toshiba Corp 画面表示装置及び画面表示システム
JP2013214321A (ja) * 2013-06-28 2013-10-17 Casio Comput Co Ltd 表示端末装置、情報処理装置、およびプログラム
WO2014042137A1 (ja) * 2012-09-11 2014-03-20 日本電気株式会社 通信システムと方法とサーバ装置及び端末
JP2015127983A (ja) * 2015-04-08 2015-07-09 カシオ計算機株式会社 情報表示装置、情報表示方法及びプログラム
JP2016033790A (ja) * 2014-07-31 2016-03-10 日本電信電話株式会社 画面転送サーバ装置、および画面転送方法
JP2016151600A (ja) * 2015-02-16 2016-08-22 富士通株式会社 端末装置、画面更新プログラム、画面更新方法及び情報処理システム
CN111836075A (zh) * 2019-04-15 2020-10-27 深信服科技股份有限公司 一种虚拟桌面补帧方法、装置、电子设备及可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000508139A (ja) * 1996-03-29 2000-06-27 ブリティッシュ・テレコミュニケーションズ・パブリック・リミテッド・カンパニー ホストと遠隔ワークステーションとの間の通信方法及びシステム
JP2004020921A (ja) * 2002-06-17 2004-01-22 Denso Corp 表示制御装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000508139A (ja) * 1996-03-29 2000-06-27 ブリティッシュ・テレコミュニケーションズ・パブリック・リミテッド・カンパニー ホストと遠隔ワークステーションとの間の通信方法及びシステム
JP2004020921A (ja) * 2002-06-17 2004-01-22 Denso Corp 表示制御装置

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010529537A (ja) * 2007-05-31 2010-08-26 マイクロソフト コーポレーション ビットマップ形式の表示リモーティング
JP2010055493A (ja) * 2008-08-29 2010-03-11 Casio Comput Co Ltd サーバ装置、サーバベース・コンピューティング・システム、およびサーバ制御プログラム
JP2011145964A (ja) * 2010-01-18 2011-07-28 Hioki Ee Corp 測定装置および設定画面の表示方法
US8868702B2 (en) 2010-11-19 2014-10-21 Kabushiki Kaisha Toshiba Server device and program product
JP2012114493A (ja) * 2010-11-19 2012-06-14 Toshiba Corp サーバ装置及びプログラム
JP2012133210A (ja) * 2010-12-22 2012-07-12 Ntt Docomo Inc 表示装置、画面画像転送方法、及びプログラム
JP2012252553A (ja) * 2011-06-03 2012-12-20 Pioneer Electronic Corp 情報処理装置及び方法、並びにコンピュータプログラム及び情報記録媒体
JP2013074394A (ja) * 2011-09-27 2013-04-22 Toshiba Corp 画像中継装置、画像中継方法及び画像中継プログラム
JP2013205835A (ja) * 2012-03-29 2013-10-07 Toshiba Corp 画面表示装置及び画面表示システム
WO2014042137A1 (ja) * 2012-09-11 2014-03-20 日本電気株式会社 通信システムと方法とサーバ装置及び端末
JP2013214321A (ja) * 2013-06-28 2013-10-17 Casio Comput Co Ltd 表示端末装置、情報処理装置、およびプログラム
JP2016033790A (ja) * 2014-07-31 2016-03-10 日本電信電話株式会社 画面転送サーバ装置、および画面転送方法
JP2016151600A (ja) * 2015-02-16 2016-08-22 富士通株式会社 端末装置、画面更新プログラム、画面更新方法及び情報処理システム
JP2015127983A (ja) * 2015-04-08 2015-07-09 カシオ計算機株式会社 情報表示装置、情報表示方法及びプログラム
CN111836075A (zh) * 2019-04-15 2020-10-27 深信服科技股份有限公司 一种虚拟桌面补帧方法、装置、电子设备及可读存储介质
CN111836075B (zh) * 2019-04-15 2022-09-30 深信服科技股份有限公司 一种虚拟桌面补帧方法、装置、电子设备及可读存储介质

Similar Documents

Publication Publication Date Title
JP2007241736A (ja) リモートデスクトップシステムのサーバ装置及びクライアント装置
KR101159396B1 (ko) 그래픽 개체 인코딩 방법, 그래픽 개체 렌더링 방법 및 렌더링 데이터 구조 동기화 방법
US11582284B2 (en) Optimization of publication of an application to a web browser
CN1856819B (zh) 通过分布式应用程序的图形数据的网络传输的系统和方法
CN103688240B (zh) 用于发送数字场景描述数据的方法以及发送器和接收器场景处理设备
TWI566160B (zh) 用於多應用程式或程序間動態模擬之協調的電腦儲存媒體、方法及計算裝置
US5915098A (en) System for compressing bit maps to be shared and displayed in collaborative tool by client and server systems
KR20040104515A (ko) 클라이언트에서 그래픽 및 미디어 디스플레이를 생성하기위한 방법 및 장치
US20160014193A1 (en) Computer system, distribution control system, distribution control method, and computer-readable storage medium
GB2528870A (en) Managing display data for display
JP2007226635A (ja) リモートデスクトップシステムのサーバ装置及びクライアント装置
KR20060113840A (ko) 원격 시각 구성을 위한 프로토콜
CN107318021B (zh) 一种远程显示的数据处理方法及系统
WO2015052968A1 (ja) サーバ装置、クライアント装置、情報処理方法および記録媒体
EP3096509A1 (en) Image processing program, display program, image processing method, display method, image processing device, and information processing device
US8411740B2 (en) System and method for low bandwidth display information transport
CN108491150A (zh) 控件迁移方法、装置、终端及存储介质
US9584752B2 (en) System, information processing apparatus, and image processing method
AU2012200858B2 (en) Efficient encoding of alternative graphic sets
CN118041898A (zh) 一种访问方法
KR20150077033A (ko) 내추럴 사용자 인터페이스 기반의 서버 노드의 전력 관리 방법
JP2016051945A (ja) 画像処理システム、情報処理装置、投影装置、方法およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080630

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100804

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100813

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110114