図1は、本発明の実施形態に係るサーバ装置10およびそのクライアント端末20a,20b,…を備えたシン・クライアント・システムの構成を示すブロック図である。
このシン・クライアント・システムは、LAN(Local Area Network)やWAN(Wide Area Network)からなるネットワークN上に接続されたサーバ装置10および複数のクライアント装置20a,20b,…を備える。
サーバ装置10は、文書作成処理プログラム,表計算処理プログラム,メール処理プログラム,インターネット接続処理プログラム、Web表示プログラムなど、複数のアプリケーションプログラムを有し、当該サーバ装置10に接続されたクライアント装置20a,20b,…からの操作入力信号に応じて起動しその処理を実行する。
このサーバ装置10において、クライアント装置20a,20b,…からの操作入力信号に応じたアプリケーションプログラムの実行に伴い生成された表示出力用の描画データは、アクセラレータ回路101a,101b,…によって転送用の描画データに変換されると共に、当該描画データの内容やクライアント装置20a,20b,…との通信状態に応じた最適な圧縮方式で圧縮そして暗号化され、アクセス元のクライアント装置20a,20b,…へ送信(転送)される。
そして、クライアント装置20a,20b,…では、前記サーバ装置10から転送された描画データが、各クライアント装置内のアクセラレータ回路(回路ボード)21a,21b,…においてデコードされ、その表示部に表示される。
つまり、このシン・クライアント・システムにおける各クライアント装置20a,20b,…は、何れもキーボード及びマウスなどのユーザ操作に応じた入力機能とLCD表示部及びプリンタなどの出力機能のみを有し、独自のアプリケーション機能やデータファイルの管理機能を一切持っていない。
そして、クライアント装置20a,20b,…からの操作入力信号に応じてサーバ装置10にて起動実行される各種の処理に伴い生成されたデータファイルは、当該サーバ装置10内あるいは該サーバ装置10にて接続管理される磁気ディスクなどの記憶装置にユーザアカウント毎あるいは共有ファイルとして記憶され保存される。
ここで、前記サーバ装置10のアクセラレータ回路(回路ボード)101a,101b,…における転送用描画データの生成機能について、その概要を説明する。
図2は、前記シン・クライアント・システムのサーバ装置10にて生成された描画データのクライアント装置20への転送表示状態を示す図であり、同図(A)はサーバ装置10における描画データの変化状態を示す図、同図(B)は描画データ変化時の転送用描画データを示す図、同図(C)は転送された描画データのクライアント装置における表示出力状態を示す図である。
サーバ装置10において、起動中のアプリケーションプログラムに従い既に生成転送されていた描画データ(変化前)Gが描画データ(変化後)G′に変化した場合、まず変化後の描画データG′における描画データの変化部分Pに応じた領域Q′が切り出され、この変化のある領域Q′の描画データについて、アクセラレータ回路101により図2(B)に示すような転送用描画データHに変換される。
この転送用描画データHは、前記変化後の描画データG′からその変化部分Pに応じて切り出された領域Q′と変化前の描画データGにおける同領域Qとの画像比較により、そのうちの背景一致領域Rが透過の描画データ(画像データ)S(書き換え不要な色データ)に変換されて生成される。なお、以下の説明ではテキストデータや静止画データ、動画データなどを特にピクセルとして表現された描画データを画像データと称するが、両者は略同義語として用いる。
これによりクライアント装置20では、変化前描画データG上における前記画像変化の領域Q′に対応する座標位置で、前記転送用描画データHを透過の画像データSを除いて書き込むことで、変化後の描画データG′を表示させることができる。
なお、前記サーバ装置10のアクセラレータ回路101により生成された転送用描画データHは、当該描画データの内容(色数)やそのときのクライアント装置20との通信状態(応答速度)に応じて選択される圧縮効率及び画像品質の両面において最適な圧縮方式で圧縮されて転送されるので、描画品質を低下させることなしに、描画データの転送量を更に少なくすることができる。
図3は、前記シン・クライアント・システムのサーバ装置10において変化後の描画データG′の領域Q′に基づきアクセラレータ回路101により生成処理される転送用描画データHを詳細に示す図である。
例えば図2(A)で示したように、サーバ装置10において処理される描画データG(G′)の領域サイズが480×640ピクセルである場合に、変化後の描画データG′における画像変化部分Pに応じた領域Q′は、図3(A)に示すように、16×16ピクセル=1タイル(T)とするタイル単位を基準に切り出される。
なお、前記変化後描画データG′の画像変化部分Pに応じた領域Q′において、水平方向に一列分の各タイルTの領域をまとめて1ブロックと称する。
なおまた、前記領域Q′は、画像変化部分Pを水平および垂直方向にきり出した矩形の領域Q′としているが、水平方向にのみ切り出したその領域サイズ(横)が描画データG(G′)自体の領域サイズ(640ピクセル)である帯状の領域Q′としてもよい。
アクセラレータ回路101では、前記画像変化に応じた領域Q′をタイル単位で変化前描画データGの同位置の領域Qと画像比較し、そのうちの背景一致領域Rの各画像ピクセルを、図3(B)に示すように、透過の画像データS(書き換え不要な色データ)に変換する。そして、1タイル(T)の全領域が透過色データSに変換された透過色タイルSoについては非転送とし、画像変化部分Pを含んだ各タイルだけを変化前描画データGとの差分領域を圧縮した転送用描画データHとした後に、最適圧縮方式で圧縮処理して当該各タイルの表示画面上の座標位置と共にクライアント装置20へ転送する。
クライアント装置20のアクセラレータ回路(回路ボード)21では、変化前描画データGに対してタイル単位で圧縮転送されてくる転送用描画データHをデコード後、当該各タイルの座標位置で、単に透過色データSに変換された画像ピクセルを除いて書き込むだけで、サーバ装置10にて生成された変化後の描画データG′を表示できる。
サーバ装置10のアクセラレータ回路101において、生成された転送用描画データHは最適圧縮・暗号化されてクライアント装置20へ転送されるが、例えばGIF(Graphics Interchange Format)/PNG(Portable Network Graphics)の圧縮方式では、圧縮対象となる画像データを構成する各画像ピクセルが同一色で隣接し連続していればいるほどその画質を落とさずに圧縮効率を高められるので、上述したように転送用描画データHの中で透過色データSに変換されている描画データ領域の圧縮率は非常に高くなる。
このためサーバ装置10からクライアント装置20へ転送する描画データの転送データ量を描画品質を低下させずに非常に少なくできるばかりか、その転送用描画データHをハードウエアのアクセラレータ回路(回路ボード)101において生成し圧縮できるので、サーバ装置10での処理負担を大幅に軽減でき、クライアント装置20a,20b,…の増設などに容易に対応できるようになる。
図4は、前記シン・クライアント・システムにおけるサーバ装置10の回路構成を示すブロック図である。
サーバ装置10は、コンピュータとしてのCPU102を備え、このCPU102には、高速バス103を介してROM104、RAM105、表示装置106が接続されると共に、前記アクセラレータ回路(回路ボード)101が接続される。このアクセラレータ回路101には、VRAM107が搭載されて接続される。
また、CPU102には、ノーマルバス108を介してキーボードなどの入力部109、外部記憶HDD(Hard Disk Drive)110、クライアント装置20との送受信制御部111が接続される。
CPU102は、ROM104に予め記憶されているシステムプログラムや種々のアプリケーションプログラムに従ってRAM105を作業用メモリとし回路各部の動作を制御するもので、入力部109からのキー入力信号や送受信制御部111を介して受信されるクライアント装置20からのユーザ操作に応じた処理指令信号などに応じて前記種々のプログラムが起動・実行される。
このサーバ装置10において、クライアント装置20からのユーザ指令信号に応じて起動・実行されるアプリケーションプログラムに従い生成された種々のデータは、例えばそのユーザIDに対応付けられて外部記憶HDD110に記憶され、また表示用の描画データは、アクセラレータ回路(回路ボード)101においてVRAM107を使用して転送用描画データH(図2,図3参照)に変換され、最適圧縮・暗号化された後、送受信制御部111からクライアント装置20へ転送されて表示出力される。
図5は、前記シン・クライアント・システムのサーバ装置10におけるアクセラレータ回路101の回路構成を示すブロック図である。
このアクセラレータ回路101は、前記サーバCPU102からの高速バス103に接続されるインターフェース回路(I/F回路)11aを有し、このI/F回路11aには、メモリコントローラ11bを介してVRAM107が接続される。
VRAM107には、各クライアント装置20a,20b,…からの操作指令信号に応じてCPU102により起動・実行される各アプリケーションプログラムに従い生成された表示用の描画データが、各クライアント装置20a,20b,…毎に表示A,B,…として割り当てられて記憶されると共に、各描画データA,B,…に基づいてアクセラレータ回路101にて変換生成された転送用描画データHが最適圧縮・暗号化されて結果A,B,…として記憶される。
さらに、I/F回路11aと前記メモリコントローラ11bとの間には、生成された表示用の描画データ(表示A,B,…)からその転送用描画データH(結果A,B,…)を生成するための画像スケーラ11c、タイル分割回路11d、画像比較回路11e、圧縮回路11f、暗号化回路11gが接続される。
これら転送用描画データHを生成するための各回路11c〜11gは、前記CPU102からインターフェース回路11aを介してコマンド設定レジスタ11hにセットされるコマンドコードに応じて動作する。
画像スケーラ11cは、クライアント装置20a,20b,…毎の操作指令信号に応じたアプリケーションプログラムに従い生成された描画データを、当該クライアント装置20a,20b,…毎の表示画面サイズに合わせて縮小するもので、この画像スケーラ11cによりサイズ調整処理された描画データは、メモリコントローラ11bを介してVRAM107内に表示A,B,…として格納される。
タイル分割回路11dは、前記VRAM107から読み出される表示用の描画データ(表示A,B,…)を、その領域サイズに応じタイル分割数(1タイルあたりの縦×横ピクセル数)を設定してタイル分割するもので、VRAM107から読み出された例えばクライアント装置20a用の描画データ(表示A)の画像サイズが、前記図2,図3で示したように、480×640ピクセルである場合には、1タイル(T)あたり16×16ピクセルに設定されてタイル分割される。
なお、このタイル分割による1タイル(T)あたりの領域設定サイズは、8×8ピクセルや32×32ピクセルなど、描画データの画像サイズに適宜合わせて設定すればよい。
画像比較回路11eは、前記VRAM107から読み出される変化後の描画データG′(図2参照)について、前記タイル分割回路11dにより分割された1タイル(T)単位で同VRAM107から読み出される変化前の描画データGと比較し(図2参照)、変化(差分)のない画像ピクセルを透過色データSに変換するもので(図3参照)、この1タイル(T)単位での画像比較による未変化画像ピクセルの透過色データSへの変換が1ブロック分(縦16×横640ピクセル)終了する毎に圧縮回路11fにより最適圧縮され、暗号化回路11gにより暗号化されて、前記転送用描画データHの単位画像としてVRAM107に格納され、前記CPU102により読み出されてクライアント装置20aへ転送される。
この場合、1タイル(T)の全画像ピクセルが透過色データSに変換された画像タイルについては、クライアント装置20aへ転送されない。
なお、前記画像比較回路11e、圧縮回路11f、暗号化回路11gによる変化後の描画データ(現描画データ)G′についての未変化ピクセルの透過色データ変換、最適圧縮、暗号化については、画像変化部分P(図2参照)を含むブロック領域にだけ行う構成とする。
図6は、前記サーバ装置10のアクセラレータ回路101における画像比較回路11eの構成を示すブロック図である。
VRAM107には、クライアント装置20からの操作指示信号に応じて起動されたアプリケーションによって生成された前(変化前)描画データG、現(変化後)描画データG′が記憶されると共に、この現描画データG′の前描画データGに対する差分に応じて生成され最適圧縮・暗号化された差圧縮描画データh(転送用描画データH)が記憶される。
現描画開始アドレス・レジスタe11と現描画バイト数・レジスタe12に対して、VRAM107に生成記憶されている現描画データG′の開始アドレスとそのバイト数がCPU102によりセットされると、当該現描画データG′の先頭の1ブロックデータ(この場合は横640×縦16ピクセル:40タイル)がDMA回路e13を介して現描画データ比較用640×16ピクセル・レジスタe14にセットされる。
これと共に、前描画開始アドレス・レジスタe15と前描画バイト数・レジスタe16に対して、VRAM107に生成記憶されている前描画データGの開始アドレスとそのバイト数がCPU102によりセットされると、当該前描画データGの先頭の1ブロックデータ(40タイル)がDMA回路e13を介して前描画データ比較用640×16ピクセル・レジスタe17にセットされる。
現描画データ比較用640×16ピクセル・レジスタe14にセットされた現描画データG′の1ブロックデータ(40タイル)は、1タイル単位(16×16ピクセル)で40タイル並列にして色検出回路e18(図7参照)に読み出され、各タイルそれぞれの使用色数のカウントおよび未使用色の検出による透過色データSの指定が行われる一方で、タイル比較回路e19(図8参照)にも同1タイル単位で40タイル並列にして読み出される。
タイル比較回路e19は、CPU102からの比較指令信号に従い前記現描画データ比較用640×16ピクセル・レジスタe14から読み出される現描画データG′の1ブロックデータと前記前描画データ比較用640×16ピクセル・レジスタe17から読み出される前描画データGの1ブロックデータとについて、その40タイル並列にしたタイル単位で1ピクセルずつの描画色データを比較し、現描画1タイルデータの画像変化(差分)の無いピクセルの描画色データを前記色検出回路e18により指定された対応する1タイルデータの透過色データSに置き換える。
このタイル比較回路e19により1タイル単位で画像変化(差分)の無いピクセルの描画色データが透過色データSに置き換えられてなる40タイル分の1ブロックデータは、比較結果格納640×16ピクセル・レジスタe20に格納される。
この比較結果格納640×16ピクセル・レジスタe20に格納された無変化ピクセル透過色変換後の1ブロックデータは、当該1ブロックデータ毎に圧縮回路11fから暗号化回路11gを介して最適圧縮・暗号化され、差圧縮描画データhとしてVRAM107に記憶される。
書き換え領域判断回路e21には、VRAM107に記憶されている現描画データG′について画像変化部分P(図2参照)を含むブロック領域数がCPU102によりセットされる。そしてこの書き換え領域判断回路e21は、暗号化回路11gから1ブロック終了信号が出力される毎に、セットされたブロック領域数に一致するかを判断し、一致しない場合は次ブロックデータの比較を指示する信号を+16ライン回路e22に出力する。一致した場合は今回の現(変化後)描画データG′についての差圧縮描画データhの生成終了を通知する領域ブロック終了信号をCPU102に出力する。
+16ライン回路e22は、前記書き換え領域判断回路e21からの次ブロックデータの比較指示信号に従って前記現描画開始アドレス・レジスタe11にセットされている現描画データG′の開始アドレスを、Y(縦)方向に1タイルに相当する16ラインを加算して更新する。なお、+16ライン回路e22は16ラインを加算する例で説明したが、描画データの処理単位に応じて、適宜その値を設定する。例えば、32ライン単位、64ライン単位で処理する場合は夫々32ライン、64ラインを加算する。そして、前記現描画データ比較用640×16ピクセル・レジスタe14及び前記前描画データ比較用640×16ピクセル・レジスタe17の記憶容量、その他の回路も描画データの処理単位に応じた回路に設定するものとする。
描画データ入替レジスタe23は、CPU102により新たな現(変化後)描画データG′が生成されてセットされることに応じて、DMA回路e13を介してVRAM107内の現描画データG′を前描画データGに書き替え、新たな現(変化後)描画データを現描画データG′として上書きする。
図7は、前記サーバ装置10のアクセラレータ回路101における画像比較回路11e内の色検出回路e18の構成を示すブロック図である。
色検出回路e18は、前記現描画データ比較用640×16ピクセル・レジスタe14に格納された現描画データG′の1ブロックデータ(40タイル)について、前記タイル比較回路e19に読み出される1ブロックデータ(40タイル)をタイル単位で並列にして格納16×16ピクセル・レジスタ18aに格納する。
つまりこの色検出回路e18は、図7では1タイル分の処理回路を記載しているが、この処理回路が40タイル分並列にして構成される。
格納16×16ピクセル・レジスタ18aに格納された1タイルのデータは、1ピクセル読み出し回路18bにより1ピクセルずつ読み出され1ピクセル一致回路18cに送られる一方で、色・レジスタ書込み回路18dにセットされる。
1ピクセル一致回路18cは、1ピクセル読み出し回路18bにより読み出された1ピクセルの色データと色・レジスタ読み出し回路18eにより色・レジスタ18fから読み出された現在の1タイルデータにおける以前の読み出しピクセルの色データとの一致/不一致を検出する。
この1ピクセル一致回路18cにおいて不一致検出された場合には、次の色・レジスタ読み出し回路18gによって前記色・レジスタ読み出し回路18eによる色・レジスタ18fの読み出し位置が更新され、一致検出された場合には、次のピクセル読み出し回路18hによって前記1ピクセル読み出し回路18bによる前記格納16×16ピクセル・レジスタ18aの読み出しピクセルが更新される。
なお、1ピクセル一致回路18cでの不一致検出により色・レジスタ読み出し回路18eでの色・レジスタ18fの読み出し位置が更新された際に、前記色・レジスタ書込み回路18dにセットされた当該不一致検出ピクセルの色データが色・レジスタ18fに追加記憶される一方で、色数カウント・レジスタ18iにおける該当1タイルデータの色数カウント値が更新される。
つまり、前記格納16×16ピクセル・レジスタ18aに格納された1タイル単位のデータについて、1ピクセル読み出し回路18bにより順次読み出される画像1ピクセルの描画色データがそれ以前の画像1ピクセルの描画色データと異なり不一致となった場合には、当該異なる色データが色・レジスタ18fに追加記憶されて行き、その都度、色数カウント・レジスタ18iでの色数カウント値が更新される。
そして、END回路18jにより1タイルデータに相当する256ピクセルの読み出し終了が検出され、1タイル終了信号が出力されると、ソート回路18kは、前記色・レジスタ18fに記憶された今回の1タイル内で使用の各描画色データについてその色コード順に昇順でソートする。
不連続データ検出回路18mは、ソート回路18kによる昇順での描画色データ(色コード)のソート過程において、当該色コードの連続が途切れて不連続となった最初の色コードを検出するもので、これにより検出された今回の1タイル内にて未使用で且つ色コード順にして最初の色データが当該1タイルデータの透過色データSに決定されタイル比較回路e19(図8参照)内の透過色データ指定レジスタ19dにセットされる。なお、1タイル内で未使用の色データを透過色データSとして使用するので、特別に透過色を示すデータが不要になるが、色コードを表すビット列の中で使用されないコードがあればその中の特定のコードを透過色データSと一義的に定めてもよく、また、フラグなどを用いて透過色データSを一義的に定めてもよい。この場合は、色検出回路e18は不要になる。更に、透過色データを決める際にそのタイル内で使用されている一番少ない色コードを検出して、これを透過色データSとしてもよい。
図8は、前記サーバ装置10のアクセラレータ回路101における画像比較回路11e内のタイル比較回路e19の構成を示すブロック図である。
この図8で示すタイル比較回路e19も1タイルの処理回路が40タイル分並列にして構成され、前記色検出回路e18と同様に前記現描画データ比較用640×16ピクセル・レジスタe14から読み出される1ブロックデータ(40タイル)がタイル単位で並列処理される。
16×16ピクセル読み出し回路19aは、前記現描画データ比較用640×16ピクセル・レジスタe14に格納された現描画データG′の1ブロックデータと、前描画データ比較用640×16ピクセル・レジスタe17に格納された前描画データGの1ブロックデータとの各1タイル(16×16ピクセル)のデータを読み出す。
256ピクセル並列処理回路19jは、前記16×16ピクセル読み出し回路19aにより読み出された現描画データG′と前描画データGとの各1タイルのデータについて、それぞれ対応する1ピクセルの描画色データ同士を256ピクセル分並列に処理する。
この256ピクセル並列処理回路19j内の1ピクセル引き算回路19bは、現描画1ピクセルの描画色データと前描画1ピクセルの描画色データとを引き算し、その引き算結果を描画色変換回路19cに出力する。
描画色変換回路19cは、現描画1ピクセルの描画色データと前描画1ピクセルの描画色データとの引き算結果が“0”でない場合、つまり描画に変化(差分)がある場合は該当ピクセルの描画色データを現描画色データのそのままにする。一方、現描画1ピクセルの描画色データと前描画1ピクセルの描画色データとの引き算結果が“0”である場合、つまり描画に変化(差分)がない場合は該当ピクセルの描画色データを前記色検出回路e18から透過色データ指定レジスタ19dにセットされた該当タイルに無い描画色である透過色データSに変換する。
こうして256ピクセル並列処理回路19jにより描画変化の無いピクセルが透過色データSに変換された現描画データG′の1タイルデータは、比較結果格納16×16ピクセル・レジスタ19eに格納され、40タイル分同様にして並列処理された他の39タイルデータと並列に、比較結果格納640×16ピクセル・レジスタe20へ1ブロックデータとして格納される。
この際、前記40タイル分並列にした比較結果格納16×16ピクセル・レジスタ19eからその1ブロック(1タイル)データが比較結果格納640×16ピクセル・レジスタe20へ格納される毎に、その1ブロック(1タイル)処理の終了が終了検出回路19fによって検出される。
終了検出回路19fは、1ブロック(1タイル)処理の終了を検出すると、その1タイル終了信号を+1カウント回路19gに出力し、前記16×16ピクセル読み出し回路19aによる前記現描画640×16ピクセル・レジスタe14からの次の現描画ブロック(タイル)データの読み出しと前描画640×16ピクセル・レジスタe17からの次の前描画ブロック(タイル)データの読み出しとを更新させる。
また、終了検出回路19fは、その1ブロック終了信号を圧縮回路f12へ出力し、前記比較結果格納640×16ピクセル・レジスタe20へ格納した1ブロックデータの最適圧縮動作を開始させる。
これによりVRAM107内の現描画データG′における画像変化部分Pを含む各ブロックデータとこれに対応する前描画データGの各ブロックデータとが順次40タイル分並列比較処理され、比較結果格納640×16ピクセル・レジスタe20へ格納される。
透過色検出回路19hは、前記比較結果格納640×16ピクセル・レジスタe20へ格納される40タイル分並列処理された1ブロックデータの各々のタイルについて、そのタイル内の全ピクセル(256ピクセル)が透過色データSに変換された描画変化の無いタイルデータであるかを検出し、全ピクセル(256ピクセル)の透過色データSへの変換が検出されたタイル(透過タイル)を“0”、それ以外のタイル(描画タイル)を“1”とした当該1ブロック内各タイル毎の検出値を転送確認レジスタ19iへ書き込む。
転送確認レジスタ19iは、現描画データG′における画像変化部分Pを含む各ブロックデータの全領域分について、本タイル比較回路e19で比較処理され前記透過色検出回路19hにより1ブロックずつ検出処理されるブロック内各タイル毎の“0”“1”検出値を順次格納する。
この転送確認レジスタ19iに格納された画像変化に対応するところの全ブロック領域内各タイル毎の透過タイル値“0”または描画タイル値“1”は、前記比較結果格納640×16ピクセル・レジスタe20に順次格納される比較処理後のブロックデータ(40タイル分)を最適圧縮・暗号化して生成した現描画データG′についての差圧縮描画データhをクライアント装置20へ転送する際にCPU102に読み出され、透過タイル値“0”である全ピクセル(256ピクセル)が透過色データSに変換されたタイルデータは転送されず、描画タイル値“1”である差圧縮のタイルデータのみ転送される。
図9は、前記サーバ装置10のアクセラレータ回路101における圧縮回路11fの構成を示すブロック図である。
図10は、前記圧縮回路11f内の圧縮方法決定回路f11が有する圧縮方法決定テーブルf11Tを示す図である。
圧縮回路11fは、前記画像比較回路11eにより比較処理されて比較結果格納640×16ピクセル・レジスタe20に順次格納される1ブロックデータを1タイルずつ最適圧縮処理するもので、この圧縮回路11fは圧縮方法決定回路f11を備える。
この圧縮方法決定回路f11は、図10に示すような圧縮方法決定テーブルf11Tを記憶し、前記色検出回路(図7参照)e18により検出されて色数カウント値格納レジスタf12に格納された1ブロック描画データにおける40タイル分それぞれの色数カウント値(X,Y,Z)と、クライアント応答時間情報回路f13にセットされた現在のクライアント装置20からの通信応答時間(A,B,C)とに従って、前記比較結果格納640×16ピクセル・レジスタe20に順次格納される1ブロックデータについて、その1タイルずつの圧縮方法を、RRE(Rise-and-Run-length Encoding)エンコード方式、GIF(Graphics Interchange Format)/PNG(Portable Network Graphics)エンコード方式、JPEG(Joint Photographic Coding Experts Group)エンコード方式の何れかに最適決定する。この圧縮方法決定回路f11により最適決定されたエンコード方式を指示するエンコード値の信号は圧縮選択回路f14に出力される。
なお、前記図10で示す圧縮方法決定テーブルf11Tでは、比較結果格納640×16ピクセル・レジスタe20から読み出された圧縮対象の1タイルデータについて、色数カウント値格納レジスタf12から読み出された該当タイルの色数カウント値が1,2色と少ない場合(X)には、クライアント装置20の応答時間(A,B,C)に関わらず、その圧縮方式は隣接画素の同色連続性が高い場合に圧縮効率の高いRREエンコード方式に決定され、また3色以上でも256色未満である場合(Y)には、同クライアント装置20の応答時間(A,B,C)に関わらず、画質優先の上で隣接画素の同色連続性が高い場合に圧縮効率の高いGIF/PNGエンコード方式に決定される。
一方、色数カウント値格納レジスタf12から読み出された該当タイルの色数カウント値が256色以上と非常に多い場合(Z)には、クライアント装置20の応答時間が100ms未満と高速転送可能な通信状態である場合(A)に、低圧縮(高品質)のJPEGエンコード方式(Quality9)に決定され、また500ms未満と通常転送速度の場合(B)に、通常圧縮のJPEGエンコード方式(Quality6)に決定され、さらに500ms以上と低速転送になる場合(C)に、高圧縮(低品質)のJPEGエンコード方式(Quality0)に決定される。なお、Qualityは処理された結果の画質のことを指しておりQualityが小さい(0に近い)ものは低画質であり比較的圧縮率が高いことを、Qualityが大きい(9に近い)ものは高画質で比較的圧縮率が低いことを示す。
圧縮選択回路f14は、前記圧縮方法決定回路f11からその圧縮方法決定テーブルf11Tに従って最適決定出力されるエンコード値に応じて、前記比較結果格納640×16ピクセル・レジスタe20または現描画データ比較用640×16ピクセル・レジスタe14から読み出された圧縮対象の1タイルデータを、RREエンコーダf15またはGIF/PNGエンコーダf16またはJPEGエンコーダf17に選択的に分配出力する。
なお、JPEGエンコーダf17によるJPEGエンコード方式(Quality9〜0)が非可逆圧縮方式である場合には、デコード後の描画データをピクセル単位で全く同一に復元することができない。
このため、圧縮方法決定テーブルf11T(図10参照)によりJPEGエンコード方式(Quality9〜0)が決定され、圧縮方法決定回路f11からエンコード値J9〜J0が出力されるような、圧縮対象タイルの色数カウント値が256色以上と非常に多かった場合(Z)だけは、圧縮選択回路f14によって現描画データ比較用640×16ピクセル・レジスタe14側が選択され、前記タイル比較回路e19による透過色データSへの変換処理(差圧縮処理)を施していない現描画1ブロックデータの中の該当するタイルデータがJPEGエンコーダf17へ送られて最適圧縮処理される。
一方で、前記JPEGエンコーダf17によるJPEGエンコード方式(Quality9〜0)がJPEG2000などの可逆圧縮方式である場合には、デコード後の描画データをピクセル単位で全く同一に復元することができるため、圧縮対象としての1タイルデータは常に前記タイル比較回路e19による透過色データSへの変換処理(差圧縮処理)を施した比較結果格納640×16ピクセル・レジスタe20内の1ブロックデータの中から読み出される。
前記圧縮選択回路f14による1タイルデータ毎の選択動作は終了検出回路f18により検出され、この終了検出回路f18から出力される1タイル終了検出信号に応じて、タイル読み出し回路f19から前記比較結果格納640×16ピクセル・レジスタe20に対する次の1タイルの読み出し指令信号が出力されると共に、決定データ読出回路f20から前記圧縮方法決定回路f11に対する次の圧縮対象タイルのための決定圧縮方法読出し指令信号が出力される。
こうして、RREエンコーダf15またはGIF/PNGエンコーダf16またはJPEGエンコーダf17により順次圧縮処理された1タイルデータは、順次暗号化回路11gへ出力されて暗号化処理され、1ブロック終了毎に差圧縮描画データhとしてVRAM107に記憶される。
つまり、VRAM107内の差圧縮描画データhは、現描画データG′内で前描画データGからの画像変化部分Pに応じて切り出されたnブロックデータについて、各ブロック毎にタイル単位で描画変化の無いピクセルに透過色データSを書き込んだ後、圧縮効率及び画像品質の両面において最適に圧縮され暗号化されて生成される。
なお、前記圧縮回路11fによる各種圧縮方式では、圧縮対象である各1タイル描画データについて、当該1タイル描画データを構成する隣り合う各ピクセルデータが同一のピクセルデータとして長く連続するほどその圧縮効率は高くなるので、描画変化の無いピクセルには全て透過色データSを書き込むことで描画品質を落とさずに高い圧縮効率で当該各1タイル描画データを圧縮することができ、その転送データ量を有効に削減できる。
次に、前記構成のシン・クライアント・システムのサーバ装置10のCPU102によって実行される制御処理について説明する。
図11は、前記シン・クライアント・システムのサーバ装置10における全体の動作制御を示すフローチャートである。
クライアント装置20a,20b,…から本サーバ装置10に対して接続要求信号が受信されると(ステップS1)、当該接続要求元のクライアント装置20a,20b,…に対するID,パスワードなどの確認照合に基づいた認証処理が実行される(ステップS2)。
そして認証OKと判断されると(ステップS3)、この認証OKと判断されたクライアント装置20a,20b,…のIDが発行され(ステップS4)、接続されたクライアント別の転送データスレッド処理(図12参照)が開始されて、クライアント装置20a,20b,…からの種々の要求に応じたアプリケーションの起動・実行、およびこれに伴うデータの生成・送受信処理が行われる(ステップSA)。
前記接続処理中のクライアント装置20aから切断の要求が受信されると(ステップS5)、当該切断要求元のクライアント装置20aとの間でのデータの生成・送受信処理が終了される(ステップS6)。
この後、本サーバ装置10のシャットダウンなどに伴って各クライアント装置20a,20b,…に対してのサービス終了が判断されると(ステップS7)、接続中の全てのクライアント装置20a,20b,…との間でのデータの生成・送受信処理が終了される(ステップS6)。
図12は、前記サーバ装置10でのサービス処理に伴うクライアント別転送データスレッド処理(ステップSA)を示し、同図(A)はそのフローチャート、同図(B)はそのタイル単位の転送データフォーマットである。
この転送データスレッド処理では、接続中のクライアント装置20a,20b,…からの種々の要求に応じたアプリケーションが起動・実行されて、これに伴うデータの生成・送受信処理が行われる際に(ステップA1)、例えば図2(A)で示したように、前描画データGに対する現描画データG′の更新があったと判断されると(ステップA2)、この描画更新に伴う画像変化部分Pに応じた描画領域Q′の始点座標(X,Y)および縦横サイズ(h,w)とその描画色数が解析され(ステップA3)、当該描画領域Q′の領域サイズが予め設定された領域サイズDtよりも大きく、且つ(または)その描画色数が予め設定された色数Dcよりも多いか否か判断される(ステップA4)。
ここで、現描画データG′における画像変化の描画領域Q′について、その領域サイズが予め設定された領域サイズDtよりも大きく、且つ(または)その描画色数が予め設定された色数Dcよりも多いと判断された場合には、サーバ装置10の処理負担が多くなると予想され、ステップA5〜A13の制御処理に伴い前記図4乃至図11を参照して説明したアクセラレータ回路(回路ボード)101を主体とするハードウエア処理により前記描画領域Q′に対応した差圧縮描画データhの生成・最適圧縮・暗号化および実行アプリに対応したクライアント装置20へのデータ転送が行われる(ステップA4→A5〜A13)。
一方、現描画データG′における画像変化の描画領域Q′について、その領域サイズが予め設定された領域サイズDt以下で、且つ(または)その描画色数が予め設定された色数Dc以下と判断された場合には、サーバ装置10の処理負担は少ないと予想され、ステップA14〜A21に従った後述のソフトウエア差分処理(図15〜図17)およびソフトウエア最適エンコーディング処理(図18)を主体とするソフトウエア処理により前記描画領域Q′に対応した差圧縮描画データhの生成・最適圧縮・暗号化および実行アプリに対応したクライアント装置20へのデータ転送が行われる(ステップA4→A14〜A21)。
まず、現描画データG′における画像変化の描画領域Q′について、その領域サイズが予め設定された領域サイズDtよりも大きく、且つ(または)その描画色数が予め設定された色数Dcよりも多いと判断されることで、アクセラレータ回路(回路ボード)101を主体とするハードウエア処理に移行された場合には(ステップA4(YES))、本サーバ装置10内のアクセラレータ回路101に空きがあり使用可能な状態か否か判断され(ステップA5)、使用可能であると判断された場合には、アクセラレータ回路101が起動される(ステップA5→AB)。
図13は、前記サーバ装置10のアクセラレータ回路101を起動する際に実行されるアクセラレータ回路起動処理を示すフローチャートである。
クライアント装置20からの操作指示信号に応じて実行中のアプリケーションにより生成された現描画データG′について、その画像変化部分Pに応じた描画領域Q′の始点座標(X,Y)および縦横サイズ(h,w)が取得されると(ステップB1)、前記実行中のアプリケーションに対応するクライアント装置20に対する通信応答時間の検出が行われる(ステップB2(図14参照))。
図14は、前記サーバ装置10でのアクセラレータ回路起動処理に伴う応答時間検出処理を示すフローチャートである。
先ず、予め定められた応答時間Ntがデフォルト設定されると共に(ステップB21)、計測応答時間Nx,Nyがクリアされ(ステップB22)、カウンタi=1に初期セットされる(ステップB23)。
すると、クライアント装置20に対する通信応答時間Nxが計測され一時記憶されると共に(ステップB24)、前回計測までの総計測応答時間Nyにその都度加算されて新たな総計測応答時間Nyが計算され(ステップB25)、例えば800msの一定時間毎(ステップB27)に前記カウンタiがカウントアップされて(ステップB28)10回分の総計測応答時間Nyが算出される(ステップB24〜B26)。
なお、この応答時間の計測時間間隔(ステップB27)である800msは、前記圧縮方法決定テーブルf11T(図10参照)での応答時間判定条件500msより長く設定する必要がある。
前記ステップB24〜B28での繰り返し処理により10回分の総計測応答時間Nyが算出されると、当該総計測応答時間Nyは“10”で除算されてその平均である応答時間Ntが算出される(ステップB26→B29)。
そして、VRAM107に生成記憶されている現描画データG′についての前記画像変化に応じた描画領域Q′の開始アドレスとそのバイト数が、アクセラレータ回路101の画像比較回路11e(図6参照)内の現描画開始アドレス・レジスタe11とその現描画バイト数・レジスタe12にセットされると共に(ステップB3)、この画像変化の描画領域Q′に対応した前描画データGについての開始アドレスとそのバイト数が同画像比較回路11e内の前描画開始アドレス・レジスタe15とその前描画バイト数・レジスタe16にセットされる(ステップB4)。
すると、このアクセラレータ回路101における画像比較回路11e内のタイル比較回路e19に対して比較開始信号が出力されると共に(ステップB5)、同画像比較回路11e内の書き換え領域判断回路e21に対して、現描画データG′についての画像変化の描画領域Q′に応じたブロック領域数がセットされる(ステップB6)。
さらに前記ステップB2でのクライアント装置20に対する通信応答時間の検出処理(図14参照)に応じて計測検出された応答時間情報Ntがこのアクセラレータ回路101における圧縮回路(図9参照)内のクライアント応答時間情報回路f13にセットされる(ステップB7)。
これに伴い、アクセラレータ回路101では、画像スケーラ11cによる画像スケーラ処理、タイル分割回路11dによるタイル分割処理、画像比較回路11eによる画像比較処理、圧縮回路11fによる最適圧縮処理、暗号化回路11gによる暗号化処理が、前記図5〜図10を参照して説明した通りハードウエア回路にて行われ、前記現描画データG′についての画像変化の描画領域Q′に応じた各ブロック(40タイル)データ毎に、差圧縮描画データhが生成されて順次VRAM107に格納される(ステップAB)。
なお、前記アクセラレータ回路起動処理は、現描画データG′における画像変化の描画領域Q′に応じた各ブロック領域の全てについて差圧縮描画データhが生成され、その最後の1ブロック終了信号に応じて前記書き換え領域判断回路e21から領域ブロック終了信号が出力されることで、その一連の処理を終了する(ステップB8→END)。
このアクセラレータ回路101でのハードウエア処理(ステップAB)により、1ブロック終了を示す割り込み信号が発生されると(ステップA6)、当該1ブロック分の差圧縮データhのうちの1タイルデータが読み込まれると共に(ステップA7)、転送確認レジスタ19i(図8参照)に格納されている該当1タイルに対応するところの透過色検出値(透過タイル値“0”または描画タイル値“1”)が読み出され、描画変化の画像ピクセルを含む描画タイル値“1”であるか、または全画像ピクセルが透過色データSに変換された透過タイル値“0”であるかが判断される(ステップA8)。
ここで、1ブロック分の差圧縮データhのうちから読み込まれた1タイルデータについて、転送確認レジスタ19iから描画変化の画像ピクセルを含むことを示す描画タイル値“1”が読み出されたと判断されると(ステップA8(YES))、当該1タイルデータは、図12(B)に示すように、その現描画データG′上での座標、透過色コード、圧縮方式、そして転送先のクライアントIDをヘッダ付加した転送データとして作成され(ステップA9)、このヘッダが示すIDのクライアント装置20へ送信転送される(ステップA10)。
ここで、1ブロック分の差圧縮データhの全タイル(40タイル)についての転送処理が未だ終了してないと判断されると(ステップA11(NO))、同1ブロックデータにおける次の1タイルデータが指定され(ステップA12)、当該1ブロック分の差圧縮データhのうちの次の1タイルデータが読み込まれる(ステップA7)。
一方、前記ステップA8において、1ブロック分の差圧縮データhのうちから読み込まれた1タイルデータについて、転送確認レジスタ19iから全画像ピクセルが透過色データSに変換されていることを示す透過タイル値“0”が読み出されたと判断されると(ステップA8(NO))、当該1タイルデータの転送は行われずに同1ブロックデータにおける次の1タイルデータが指定され(ステップA12)、前記1ブロック分の差圧縮データhのうちの次の1タイルデータが読み込まれる(ステップA7)。
そして、同1ブロック分の差圧縮データhのうちから順次読み込まれる次の1タイルデータについて、転送確認レジスタ19iから描画タイル値“1”が読み出された場合の当該1タイルデータの転送データ作成処理およびそのクライアント装置20への送信処理(ステップA8〜A12)、または転送確認レジスタ19iから透過タイル値“0”が読み出された場合の当該1タイルデータの非転送処理(ステップA8→A12)が繰り返し実行される。
この後、前記アクセラレータ回路101により生成された1ブロック分の差圧縮データhの全タイル(40タイル)について転送処理が終了したと判断されると(ステップA11(YES))、これに伴い画像比較回路11eにおける書き換え領域判断回路e21から領域ブロック終了信号が発生されたか否かによって画像変化の描画領域Q′に基づき生成された全ブロック分の差圧縮描画データhについて前記同様のタイル単位の転送処理が終了したか否か判断される(ステップA13)。
ここで、前記書き換え領域判断回路e21から領域ブロック終了信号が発生されないことで、全ブロック分の差圧縮描画データhについてのタイル単位転送処理は終了していないと判断されると(ステップA13(NO))、前記アクセラレータ回路101からの次の1ブロック終了信号の出力待機状態となる(ステップA6)。
そして、アクセラレータ回路101における前記同様のハードウエア処理(ステップAB)により、画像変化の描画領域Q′における次の1ブロック分の差圧縮描画データhの生成終了を示す1ブロック終了信号が発生されると(ステップA6(YES))、この1ブロック分の差圧縮描画データhから順次読み込まれる1タイルデータについて、前記同様に、転送確認レジスタ19iから描画タイル値“1”が読み出された場合の当該1タイルデータの転送データ作成処理およびそのクライアント装置20への送信処理(ステップA7,A8〜A12)、または転送確認レジスタ19iから透過タイル値“0”が読み出された場合の当該1タイルデータの非転送処理(ステップA7,A8→A12)が繰り返し実行される。
こうして前記アクセラレータ回路101によって生成される現描画データG′における画像変化の描画領域Q′に対応した各ブロック(40タイル)毎の差圧縮データhについて、それぞれ1タイル単位での描画タイル値“1”または透過タイル値“0”に従ったクライアント(ID)装置20への転送処理または非転送処理が実行される。
この後、画像比較回路11eにおける書き換え領域判断回路e21から領域ブロック終了信号が発生されることで、前記アクセラレータ回路101によって生成された全ブロック分の差圧縮描画データhについてタイル単位での転送処理が終了したと判断されると(ステップA13(YES))、前記ステップA2に戻り、アプリケーションの実行に伴う次の描画データ更新の判断待機状態になる。
したがって、前記構成のサーバ装置10によれば、アクセラレータ回路101によるハードウエア処理によって、現描画データG′における画像変化の描画領域Q′について1タイル単位でその未変化の画像ピクセルに透過色データSを書き込んで最適圧縮した差圧縮描画データhを転送用データとして高速に生成できるだけでなく、1タイル内の全画像ピクセルが透過色データSに書き換えられた透過検出タイル“0”についてはクライアント装置20への転送処理を行わず、それ以外の画像変化のあった描画検出タイル“1”だけ転送処理を行うようにしたので、更新された現描画データG′について前描画データGから変化のあるタイル分割部分だけ抽出し且つ最適圧縮して画像品質を維持しつつ最小限の転送データ量とすることができ、CPU102に大きな負荷を掛けることなく、アプリケーションによって生成更新された描画データを高速且つ高品位にクライアント装置へ送信することができる。
一方、前記ステップA4において、現描画データG′における画像変化の描画領域Q′について、その領域サイズが予め設定された領域サイズDt以下で、且つ(または)その描画色数が予め設定された色数Dc以下と判断されることで、後述のソフトウエア差分処理(図15〜図17)およびソフトウエア最適エンコーディング処理(図18)を主体とするソフトウエア処理に移行された場合には(ステップA4(NO))、当該画像変化に応じた描画領域Q′が読み込まれ(ステップA14)、1タイルあたり16×16ピクセル領域あるいは64×64ピクセル領域などとしてタイル分割される(ステップA15)。
そして、次の図15〜図17に示すようなソフトウエア差分処理に移行される(ステップAE)。
図15は、前記サーバ装置10によるクライアント別転送データスレッド処理に伴いソフトウエア処理に移行された際の分割1タイル毎のソフトウエア差分処理(その1)を示すフローチャートである。
図16は、前記サーバ装置10によるクライアント別転送データスレッド処理に伴いソフトウエア処理に移行された際の分割1タイル毎のソフトウエア差分処理(その2)を示すフローチャートである。
図17は、前記前記サーバ装置10によるソフトウエア処理でのソフトウエア差分処理に伴う分割1タイル毎の色数カウント、透過色設定処理を示すフローチャートである。
まず、図15におけるソフトウエア差分処理(その1)に移行されると、図17における色数カウント、透過色設定処理に移行され、前記描画領域Q′における分割された第1タイルデータについてその色数のカウントによる透過色の設定が行われる。
この色数カウント、透過色設定処理が起動されると、RAM105に対してカウンタi、描画色データ格納配列X[255]、描画色データ格納変数Y、透過色設定変数Z、色データ保持配列C[255]、色数カウンタ変数CCが設定され(ステップF1)、前記分割された1タイルデータ(16×16ピクセル)について当該1タイルデータ上の位置(x0,y0)にある最初のピクセルデータが読み出され描画色データX[i=0]として格納される(ステップF2)。
この際、カウンタ値i=0と判断されるので(ステップF3(YES))、色数カウンタCC=1にカウントアップされ(ステップF4)、前記第1ピクセルの描画色データX[i=0]が色データC[i=0]として保持される(ステップF5)。
すると、前記第1ピクセルの描画色データX[i=0]が描画色データ格納変数Yとして格納され(ステップF6)、カウンタi>=255、つまり1タイルの全ピクセルデータについて未処理であると判断されるので(ステップF7(NO))、当該カウンタ値i=1にカウントアップされ(ステップF8)、1タイルデータ上の位置(x1,y1)にある次のピクセルデータが読み出されて描画色データX[i=1]として格納される(ステップF2)。
すると、カウンタ値i=0ではないと判断されるので(ステップF3(NO))、今回読み出された第2ピクセルの描画色データX[i=1]について描画色データ格納変数Yとして格納されている第1ピクセルの描画色データと同一か否か判断される(ステップF9)。
ここで、描画色データ格納変数Yとして格納されている第1ピクセルの描画色データに対し今回読み出された第2ピクセルの描画色データX[i=1]が同一である(X[1]==Y)と判断された場合には(ステップF9(YES))、当該第2ピクセルの描画色データX[i=1]が新たな描画色データ格納変数Yとして格納される(ステップF6)。
一方、前記描画色データ格納変数Yとして格納されている第1ピクセルの描画色データに対し今回読み出された第2ピクセルの描画色データX[i=1]が同一ではないと判断された場合には(ステップF9(NO))、色数カウンタCC=2にカウントアップされると共に(ステップF4)、前記第2ピクセルの描画色データX[i=1]が色データC[i=1]として保持され(ステップF5)、この第2ピクセルの描画色データX[i=1]が描画色データ格納変数Yとして格納される(ステップF6)。
すなわち、前記ステップF2〜F9での処理が繰り返し行われることで、1タイルデータ(16×16ピクセル)に含まれる各画像ピクセルについて使用している色データの数が色数カウンタCCに記録されると共に、そのそれぞれの色データがC[i…]として保持されて行くもので、この後カウンタi=255、つまり1タイルの全ピクセルデータについて処理したと判断されると(ステップF7(YES))、この1タイルデータに含まれる各色データ(色コード)C[i…]について昇順にソート処理される(ステップF10)。
すると、カウンタi=0、色データ変数j=0x00にリセットされ(ステップF11)、前記色数カウンタCC<=1、つまり該当タイルの色データの数が1色以下であるか否か判断される(ステップF12)。
ここで、色数カウンタCC<=1、つまり該当タイルの色データの数が1色であると判断された場合には(ステップF12(YES))、その1色の色データ(コード)C[i]の次(+1)の色データ(コード)が該当タイルの透過色Zとして設定される(ステップF13)。
一方、前記ステップF12において、前記色数カウンタCC<=1ではない、つまり該当タイルの色データの数が2色以上であると判断された場合には(ステップF12(NO))、前記カウンタiと色データ変数jが順次カウントアップされながら当該カウントアップされた色データ(コード)jが該当タイルに含まれる前記昇順ソートされた各色データ(コード)C[i…]のそれぞれと一致する(C[i]==j)か否か判断される(ステップF14,F15)。
そして、前記順次カウントアップされる色データ(コード)jが該当タイルに含まれる昇順ソート後の各色データ(コード)C[i…]のそれぞれと一致する(C[i]==j)と判断されている状態では、そのまま同様の判断処理が繰り返し実行される(ステップF15→F14,F15)。そして、前記カウントアップされた色データ(コード)jが昇順ソートされたタイル各色の色データ(コード)C[i…]と一致しないと判断された場合には、この昇順ソート後色データ(コード)C[i…]と一致しなくなったところのカウントアップ色データ(コード)jが該当タイルの透過色Zとして設定される(ステップF16)。
こうして、画像変化に応じた描画領域Q′から読み出された1タイルデータについて、前記図17における色数カウント、透過色設定処理(ステップEF)によって当該タイルが有していない色データがその透過色Zとして設定されると、次に、この1タイル領域の始点のピクセル座標(X0,Y0)および終点のピクセル座標(X1,Y1)が取得される(ステップE1,E2)。
すると先ず、この1タイル領域内のピクセル指定位置を横方向に移動させるためのカウンタXt=X0、縦方向に移動させるためのカウンタYt=Y0に設定され(ステップE3)、当該縦移動カウンタYtがその終点座標Y1以下(Yt<=Y1)であるか否か判断されると共に(ステップE4)、横移動カウンタXtがその終点座標X1以下(Xt<=X1)であるか否か判断される(ステップE5)。
ここで、前記縦移動カウンタYtがその終点座標Y1以下(Yt<=Y1)であると判断され(ステップE4(YES))、且つ横移動カウンタXtがその終点座標X1以下(Xt<=X1)であると判断されると(ステップE5(YES))、その移動カウンタ(Xt,Yt)が示す位置の現描画1タイルデータ上のピクセルデータpd0が取得されると共に(ステップE6)、同移動カウンタ(Xt,Yt)が示す位置の前描画1タイルデータ上のピクセルデータpd1が取得され(ステップE7)、そのそれぞれのピクセルデータが同一(変化なし)(Pd0=Pd1)であるか否か判断される(ステップE8)。
ここで、現描画1タイルデータから取得されたピクセルデータpd0と、前描画1タイルデータから取得された同位置のピクセルデータpd1とが同一(変化なし)(Pd0=Pd1)であると判断された場合には(ステップE8(YES))、RAM105内に確保した1タイルデータ転送用画像領域の前記移動カウンタ(Xt,Yt)が示すピクセル位置に対して、前記透過色設定処理(ステップEF)により設定された透過色Z(→pd2)が書き込まれる(ステップE9)。一方、現描画1タイルデータから取得されたピクセルデータpd0と、前描画1タイルデータから取得された同位置のピクセルデータpd1とが同一でない(変化あり)と判断された場合には(ステップE8(NO))、前記1タイルデータ転送用画像領域の前記移動カウンタ(Xt,Yt)が示すピクセル位置に対して、当該変化後のピクセルデータpd0が書き込まれる(ステップE10)。
すると横移動カウンタXtがカウントアップ(Xt=Xt+1)されて(ステップE11)前記ステップE4からの処理に戻り、ピクセル指定位置が1ピクセル分横方向に移動されたところの現描画ピクセルデータpd0および前描画ピクセルデータpd1の取得処理(ステップE6,E7)、その画像変化の有無に応じた転送用画像領域への変化後ピクセルデータpd0または透過色データpd2の書込処理(ステップE8〜E10)が繰り返される。
そして、前記ステップE11にてカウントアップされた横移動カウンタXtがその終点座標X1を越した(Xt>X1)と判断されると(ステップE5(NO))、縦移動カウンタYtがカウントアップ(Yt=Yt+1)されると共に(ステップE12)、横移動カウンタXtがその始点座標X0に設定し直される(Xt=X0)(ステップE13)。
そして前記ステップE4からの処理に戻り、ピクセル指定位置が1ライン分縦方向に移動されたところの横方向始点位置からの現描画ピクセルデータpd0および前描画ピクセルデータpd1の取得処理(ステップE6,E7)、その画像変化の有無に応じた転送用画像領域への変化後ピクセルデータpd0または透過色データpd2の書込処理(ステップE8〜E10)が繰り返される。
この後、前記同様に横移動カウンタXtのカウントアップおよび縦移動カウンタYtのカウントアップに伴う横移動カウンタXtのカウントリセットが繰り返されながら、1タイルデータ上のそれぞれのピクセル指定位置での現描画ピクセルデータpd0および前描画ピクセルデータpd1の取得処理(ステップE6,E7)、その画像変化の有無に応じた転送用画像領域への変化後ピクセルデータpd0または透過色データpd2の書込処理(ステップE8〜E10)が繰り返される(ステップE4〜E13)。
そして、ステップE12にてカウントアップされた縦移動カウンタYtがその終点座標Y1を越した(Yt>Y1)と判断され(ステップE4(NO))、今回の現描画1タイルデータについて、変化後ピクセルデータはそのままのピクセルデータpd0、変化なしピクセルデータは透過色データpd2とした1タイルデータ転送用画像領域が生成されると、当該1タイル分のソフトウエア差分処理が終了されて図18におけるソフトウエアの最適エンコーディング処理(ステップAJ)に進む。
図18は、前記サーバ装置10によるクライアント別転送データスレッド処理に伴いソフトウエア処理に移行された際の分割1タイル毎のソフトウエア最適エンコーディング処理を示すフローチャートである。
この最適エンコーディング処理が起動されると、前記図15〜図16におけるソフトウエア差分処理(ステップAE)に従って、変化後ピクセルデータはそのままのピクセルデータpd0、変化なしピクセルデータは透過色データpd2として生成された1タイルデータ転送用画像領域について、その色数データが読み出され(ステップJ1)、この1タイルデータ転送用画像領域の全ピクセルデータが透過色データpd2ではない変化有りの1タイルデータであるか、または全ピクセルデータが透過色データpd2である変化無しの1タイルデータであるかが判断される(ステップJ2)。
ここで、前記1タイルデータ転送用画像領域の全ピクセルデータが透過色データpd2ではない変化有りの1タイルデータであると判断された場合には(ステップJ2(YES))、該当1タイルデータ内の色数が256色未満であるか否か(256色以上)判断され(ステップJ3)、256色未満であると判断された場合には(ステップJ3(YES))、さらに3色以上か否か(2色以下)判断される(ステップJ4)。
このステップJ4において、該当1タイルデータ内の色数が2色以下と少ないと判断された場合(ステップJ4(NO))には、隣接画素の同色連続性が高い場合に圧縮効率の高い圧縮方式であるRRE回路による圧縮処理が施される(ステップJ11)。
一方、前記ステップJ3,J4において、該当1タイルデータ内の色数が256色未満で且つ3色以上と判断された場合(ステップJ4(YES))には、画質優先の上で隣接画素の同色連続性が高い場合に圧縮効率の高い圧縮方式であるGIF回路またはPNG回路による圧縮処理が施される(ステップJ6)。
また一方、前記ステップJ3において、該当1タイルデータ内の色数が256色以上と非常に多いと判断された場合(ステップJ3(NO))には、クライアント装置20との応答時間が500ms未満と高速転送可能な通信状態である場合(ステップJ7,J8(YES))に、低圧縮(高品質)のJPEG回路(JPEG2000)による圧縮処理が施される(ステップJ9)。
さらに、前記ステップJ3において、該当1タイルデータ内の色数が256色以上と非常に多いと判断された場合(ステップJ3(NO))であっても、クライアント装置20との応答時間が500ms以上と低速転送になる場合(ステップJ7,J8(NO))には、高圧縮(低品質)のJPEG回路(JPEG2000)による圧縮処理が施される(ステップJ10)。なお、圧縮方式の選択は、同一の圧縮方式における圧縮率の選択を含むものとする。例えば、同一のJPEG圧縮で色数が多いものは圧縮率を高くし、少ないものは圧縮率を低くするように圧縮率を選択することにより、ネットワークに流れる転送データを一定に保ちネットワーク回線を効率よく利用することで、クライアントの表示画質の劣化を抑える効果がある。
こうして、1タイルデータの色数およびクライアント装置20との通信時間に応じて選択される圧縮方式の圧縮回路により、圧縮効率及び画像品質の両面において最適な圧縮処理が施された後の1タイルデータは、転送用データとして保存されると共に(ステップJ11)、暗号化処理される(ステップJ12)。
すると、この最適圧縮・暗号化処理された転送用1タイルデータは、図12(B)に示すように、現描画データG′上での座標、透過色コード、圧縮方式、そして転送先のクライアントIDをヘッダ付加した1タイルの転送データとして作成され(ステップA18)、このヘッダが示すIDのクライアント装置20へ送信転送される(ステップA19)。
ここで、前記ステップA14において読み込まれた現描画データG′における画像変化の描画領域Q′について、分割された全てのタイルデータについてのタイル単位転送処理が終了していないと判断された場合には(ステップA20(NO))、当該描画領域Q′における分割された次の1タイルデータが読み込まれ(ステップA21)、前記同様にステップAE,AJにおけるソフトウエア差分処理および最適エンコーディング処理での1タイルデータ転送用画像領域の生成,最適圧縮,暗号化処理が行われる。
一方、前記ソフトウエア最適エンコーディング処理(ステップAJ)でのステップJ2において、1タイルデータ転送用画像領域の全ピクセルデータが透過色データpd2であり変化無しの1タイルデータであると判断された場合には(ステップJ2(NO))、当該1タイルデータの転送は行われずに前記描画領域Q′における分割された次の1タイルデータが読み込まれ(ステップA21)、前記同様にステップAE,AJにおけるソフトウエア差分処理および最適エンコーディング処理での1タイルデータ転送用画像領域の生成,最適圧縮,暗号化処理が行われる。
そして、前記描画領域Q′における分割された次の1タイルデータが順次読み込まれて前描画領域Qとの差分により生成された1タイルデータ転送用画像領域について、全ピクセルデータが透過色データpd2ではなく変化有りの1タイルデータであると判断された場合の当該1タイルデータの最適圧縮・暗号化を経た転送データ作成処理およびそのクライアント装置20への送信処理(ステップAE,AJ,A18〜A21)、または全ピクセルデータが透過色データpd2であり変化無しの1タイルデータであると判断された場合の当該1タイルデータの非転送処理(ステップAE,AJ→A21)が繰り返し実行される。
この後、前記ステップA14において読み込まれた現描画データG′における画像変化の描画領域Q′について、分割された全てのタイルデータについてのタイル単位転送処理が終了したと判断された場合には(ステップA20(YES))、前記ステップA2に戻り、アプリケーションの実行に伴う次の描画データ更新の判断待機状態になる。
したがって、前記構成のサーバ装置10によれば、ソフトウエア処理によっても、現描画データG′における画像変化の描画領域Q′について1タイル単位でその未変化の画像ピクセルに透過色データZ(pd2)を書き込んで最適圧縮した転送用データを生成できるだけでなく、1タイル内の全画像ピクセルが透過色データZ(pd2)に書き換えられた転送用データについてはクライアント装置20への転送処理を行わず、それ以外の画像変化のあった転送用データだけ転送処理を行うようにしたので、更新された現描画データG′について前描画データGから変化のあるタイル分割部分だけ抽出し且つ最適圧縮して画像品質を維持しつつ最小限の転送データ量とすることができ、アプリケーションによって生成更新された描画データを高速且つ高品位にクライアント装置へ送信することができる。
図19は、前記シン・クライアント・システムにおけるクライアント装置20の回路構成を示すブロック図である。
クライアント装置20は、コンピュータとしてのCPU22を備え、このCPU22には、バス23を介してROM24、RAM25が接続されると共に、アクセラレータ回路21が接続される。このアクセラレータ回路21にはVRAM26が搭載され、このVRAM26に書き込まれた描画データが表示装置27に出力されて表示される。
また、CPU22には、バス23を介してキーボードなどの入力部28、外部記憶HDD(Hard Disk Drive)29、認証デバイス,バーコードリーダー,CCDカメラ,プリンタ,無線デバイスなどの各種の外部機器30を接続するためのUSB/パラレル/シリアルインターフェース31、前記サーバ装置10との送受信制御部(有線/無線)32が接続される。
CPU22は、ROM24に予め記憶されているシステムプログラムに従ってRAM25を作業用メモリとし回路各部の動作を制御するもので、入力部28からのキー入力信号や送受信制御部32を介して受信されるサーバ装置10からのアプリケーション応答信号,転送描画データなどに応じて前記システムプログラムが起動・実行される。
このクライアント装置20において、前記サーバ装置10におけるアプリケーションプログラムを実行させて生成した種々のデータは、適宜、外部記憶HDD29に読み込ませて記憶させ、また生成転送された表示用の描画データは、アクセラレータ回路21においてデコードされてVRAM26に書き込まれ表示装置27で表示出力される。
図20は、前記シン・クライアント・システムのクライアント装置20におけるアクセラレータ回路21の回路構成を示すブロック図である。
前記サーバ装置10のアクセラレータ回路101によるハードウエア処理かまたはソフトウエア処理により生成・最適圧縮・暗号化されて順次1タイルデータずつ転送される現描画データG′の描画領域Q′に応じた1タイル分の転送描画データ(図12(B)参照)は、ヘッダ・データ/16×16圧縮画像データ・レジスタ211に格納される。
そして、このヘッダ・データ/16×16圧縮画像データ・レジスタ211に格納された1タイル分の転送描画データのヘッダ・データから読み出される当該1タイルデータの表示位置を示す座標は、表示座標レジスタ212にセットされ、また当該1タイルデータの透過色データS(Z)と圧縮方式は、透過色、圧縮方式決定レジスタ213にセットされ、さらにその透過色データS(Z)は透過色レジスタ214にセットされる。
前記ヘッダ・データ/16×16圧縮画像データ・レジスタ211に格納された1タイル分の転送描画データは、前記透過色、圧縮方式決定レジスタ213にセットされた当該1タイルデータの圧縮方式に従って、16×16圧縮画像データ・デコーダ215にてデコードされ、16×16解凍画像データ・レジスタ216に格納される。
この16×16解凍画像データ・レジスタ216に格納された圧縮解凍後の1タイル描画データは、1ピクセル読み出し回路217により1ピクセルデータずつ読み出され、1ピクセル判断回路218により当該1ピクセルデータが前記透過色レジスタ214にセットされた該当1タイルデータの透過色データS(Z)であるか否か判断される。
この1ピクセル判断回路218において、前記1ピクセル読み出し回路217により今回読み出された1ピクセルデータが該当1タイルデータの透過色データS(Z)であると判断された場合には、次ピクセル指令回路219からの指令信号により前記1ピクセル読み出し回路217によるピクセル読み出し位置が更新され、次の1ピクセルデータが読み出される。
また、前記1ピクセル判断回路218において、前記1ピクセル読み出し回路217により今回読み出された1ピクセルデータが該当1タイルデータの透過色データS(Z)ではなく画像変化有りのピクセルデータであると判断された場合には、前記表示座標レジスタ212にセットされた当該1タイルデータの表示位置を示す座標に従って、今回読み出された1ピクセルの画像データがメモリコントローラ220によりVRAM26に書き込まれる。
この際、前記メモリコントローラ220から出力される1ピクセル書き込み終了信号に応じて、前記次ピクセル指令回路219から出力される指令信号により前記1ピクセル読み出し回路217によるピクセル読み出し位置が更新され、次の1ピクセルデータが読み出される。
そして、前記次ピクセル指令回路219からの指令信号が全ピクセル終了検出回路221において256ピクセル分カウントされると、1タイル終了信号がCPU22へ出力され、前記サーバ装置10からの次の1タイル分の転送描画データ(図12(B)参照)の受信待機状態になる。
図21は、前記シン・クライアント・システムのクライアント装置20における全体の動作制御を示すフローチャートである。
電源が投入されると、各種の初期設定処理(ステップK1)と共にデフォルト設定された初期画面が表示装置27に表示され(ステップK2)、イベント待ちの状態になる(ステップK3)。
そして、入力部28にけるキーボードが操作されることでそのキーコードがCPU22に受信されると(ステップK5→K6)、この受信されたキーコードがプロトコル変換されると共に(ステップK12)、パケット通信処理され(ステップK13)、転送命令によってサーバ装置10へ送信される(ステップK14)。
また、入力部28にけるマウスが操作されることでその表示画面上のマウスカーソルが移動表示されると共に(ステップK7→K8)、当該マウス操作に伴い抽出されたデータがCPU22に受信されると(ステップK9)、この受信されたマウス操作に伴う抽出データがプロトコル変換されると共に(ステップK12)、パケット通信処理され(ステップK13)、転送命令によってサーバ装置10へ送信される(ステップK14)。
また、USB/パラレル/シリアルインターフェース31を介して各種の外部機器が接続されることでその外部機器からのデータがCPU22に受信されると(ステップK10→K11)、この受信されたデータがプロトコル変換されると共に(ステップK12)、パケット通信処理され(ステップK13)、転送命令によってサーバ装置10へ送信される(ステップK14)。
さらに、前記サーバ装置10から送信転送された1タイル分の転送描画データがネットワークN(LAN)を介して受信されると(ステップK4)、TCP−IPのプロトコルヘッダが解析されて取り出され(ステップK15)、当該1タイルデータの表示位置を示す座標が表示座標レジスタ212へ転送セットされると共に(ステップK16)、当該1タイル分の描画データが前記アクセラレータ回路21(図20参照)へ転送される(ステップK17)。
そして、前記アクセラレータ回路21において、1タイル終了信号が出力されることで(ステップK18)、表示命令が出力され(ステップK19)、前記アクセラレータ回路21のVRAM26に書き込まれた1タイル分の転送描画データに基づき表示画面データの更新が行われる。
したがって、前記構成のクライアント装置20によれば、前記サーバ装置10から1タイルデータずつ順次最適圧縮・暗号化されて転送される描画データについて、アクセラレータ回路21によりデコードしたその1ピクセルデータずつ当該1タイルデータに設定された透過色データS(Z)であるか否かを判断し、透過色データS(Z)である画像変化無しのピクセルデータについては表示更新せず、透過色データS(Z)でない画像変化有りのピクセルデータについてだけ表示更新するようにしたので、このクライアント装置20においてもCPU22に重い負荷が掛かることなく、サーバ装置10から転送受信された描画データを高速に表示更新させることができる。
なお、前記実施形態において記載したサーバ装置10による各処理の手法、すなわち、図11のフローチャートに示す全体動作制御処理、図12のフローチャートに示すクライアント別転送データスレッド処理、図13のフローチャートに示すアクセラレータ回路起動処理、図14のフローチャートに示す前記アクセラレータ回路起動処理に伴う応答時間検出処理、図15・図16のフローチャートに示すクライアント別転送データスレッド処理に伴いソフトウエア処理に移行された際の分割1タイル毎のソフトウエア差分処理、図17のフローチャートに示す前記ソフトウエア差分処理に伴う分割1タイル毎の色数カウント・透過色設定処理、図18のフローチャートに示すクライアント別転送データスレッド処理に伴いソフトウエア処理に移行された際の分割1タイル毎のソフトウエア最適エンコーディング処理等の各手法は、何れもコンピュータに実行させることができるプログラムとして、メモリカード(ROMカード、RAMカード等)、磁気ディスク(フロッピディスク、ハードディスク等)、光ディスク(CD−ROM、DVD等)、半導体メモリ等の外部記録媒体に格納して配布することができる。そして、サーバ装置10のコンピュータ(CPU102)は、この外部記録媒体に記憶されたプログラムを記憶装置(110)に読み込み、この読み込んだプログラムによって動作が制御されることにより、前記実施形態において説明したクライアント装置20に対する描画更新時の転送用描画データ(差圧縮描画データh)の生成処理および最適圧縮処理およびその転送処理を実現し、前述した手法による同様の処理を実行することができる。
また、前記各手法を実現するためのプログラムのデータは、プログラムコードの形態として通信ネットワーク(LAN)N上を伝送させることができ、この通信ネットワーク(LAN)Nに接続されたコンピュータ装置(プログラムサーバ)から前記のプログラムデータを送受信制御部111を介して取り込んで記憶装置(110)に記憶させ、前述したクライアント装置20に対する描画更新時の転送用描画データ(差圧縮描画データh)の生成処理および最適圧縮処理およびその転送処理を実現することもできる。
なお、本願発明は、前記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。さらに、前記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されたり、幾つかの構成要件が組み合わされても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除されたり組み合わされた構成が発明として抽出され得るものである。