(57)【要約】      （修正有）【解決手段】画面中継装置は、画面転送開始時は前記中継先機器へ前記中継先機器の表示部の１画面分の画像情報を送信する通信部と、前記操作情報により前記中継先機器の表示部で画像の更新が生じる更新領域を記憶する更新領域記憶部と、前記第１画像情報を用いて、前記更新領域について前記操作情報が反映された画像を描画する描画部と、前記描画部により描画された画像を記憶する第１記憶部と、前記中継先機器で表示されている画像情報を記憶する第２記憶部と、前記更新領域に対応する画像情報を前記第１記憶部及び前記第２記憶部から読み出して比較し、画像情報が異なる差分領域について、前記第２記憶部に記憶されている画像情報を更新し、更新した前記差分領域に対応する画像情報を前記第２画像情報として前記通信部へ出力する画面転送部と、を備える。【効果】画面中継装置の画面転送性能を向上できる。【選択図】図１
2014112373.tif 000002
【特許請求の範囲】
【請求項１】
中継先機器から操作情報を受信して複数の中継元機器へ画像情報取得要求を送信し、前記中継元機器から前記画像情報取得要求に対応した第１画像情報を受信し、前記中継先機器へ第２画像情報を送信するとともに、画面転送開始時は前記中継先機器へ前記中継先機器の表示部の１画面分の画像情報を送信する通信部と、
前記操作情報により前記中継先機器の表示部で画像の更新が生じる更新領域を記憶する更新領域記憶部と、
前記第１画像情報を用いて、前記更新領域について前記操作情報が反映された画像を描画する描画部と、
前記描画部により描画された画像を記憶する第１記憶部と、
前記中継先機器へ送信された前記第２画像情報を含む前記中継先機器で表示されている画像情報を記憶する第２記憶部と、
前記更新領域に対応する画像情報を前記第１記憶部及び前記第２記憶部から読み出して比較し、画像情報が異なる差分領域を抽出し、前記差分領域について、前記第１記憶部から読み出した画像情報を用いて前記第２記憶部に記憶されている画像情報を更新し、更新した前記差分領域に対応する画像情報を前記第２画像情報として前記通信部へ出力する画面転送部と、
を備える画面中継装置。
【請求項２】
前記更新領域の数に基づいて第１並列数を算出する算出部をさらに備え、
前記画面転送部は、前記差分領域を抽出する処理を、前記第１並列数で並列に実行することを特徴とする請求項１に記載の画面中継装置。
【請求項３】
前記算出部は、前記更新領域の数及び前記更新領域の面積に基づいて前記第１並列数を算出することを特徴とする請求項２に記載の画面中継装置。
【請求項４】
前記第１記憶部に記憶されている前記第１画像情報のうち、前記中継先機器が表示する領域の境界を示す境界情報を記憶する第４記憶部をさらに備え、
前記算出部は、前記境界情報に基づいて第２並列数を算出し、
前記画面転送部は、前記第２画像情報を圧縮する圧縮処理を前記第２並列数で並列に実行し、圧縮した前記第２画像情報を前記通信部へ出力することを特徴とする請求項３に記載の画面中継装置。
【請求項５】
前記算出部は、前記境界情報、前記更新領域の数、及び前記更新領域の面積に基づいて、前記第１並列数及び／又は前記第２並列数を算出することを特徴とする請求項４に記載の画面中継装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画面中継装置に関するものである。
【背景技術】
【０００２】
入出力インタフェースを有する表示端末をユーザ側に配し、遠隔地に位置するサーバ装置が複雑な演算処理を実行する画面転送システムが知られている（例えば、非特許文献１参照）。サーバ装置は、表示端末からの操作情報に従い、表示端末で表示される画面情報を描画し、表示画面の更新領域の画面情報を表示端末に転送する。サーバ装置は画面情報を、１台または複数台の表示端末へ転送する。サーバ装置では、描画処理、差分抽出処理、圧縮処理、転送処理が、シングルスレッドで実行される。
【０００３】
しかし、サーバ装置から複数の画面情報を受信して表示端末へ転送するような多量の画像情報を扱う画面中継システムにおいて、非特許文献１に記載されているような従来の画面転送方式を用いる場合、複数の表示端末へは１つの画面しか転送できないという問題があった。また、各処理がシングルスレッドで実行されるため、画面転送性能が低いという問題があった。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Ｔ．  Ｒｉｃｈａｒｄｓｏｎ，  Ｑ．  Ｓｔａｆｆｏｒｄ‐Ｆｒａｓｅｒ，  Ｋ．  Ｗｏｏｄ  ａｎｄ  Ａ．  Ｈｏｐｐｅｒ，  ”Ｖｉｒｔｕａｌ  Ｎｅｔｗｏｒｋ  Ｃｏｍｐｕｔｉｎｇ，”  ＩＥＥＥ  Ｉｎｔｅｒｎｅｔ  Ｃｏｍｐｕｔｉｎｇ，  ｖｏｌ．２，  ｎｏ．１，  ｐｐ．３３−３８，  １９９８
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、画面転送性能を向上させた画面中継装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一態様による画面中継装置は、中継先機器から操作情報を受信して複数の中継元機器へ画像情報取得要求を送信し、前記中継元機器から前記画像情報取得要求に対応した第１画像情報を受信し、前記中継先機器へ第２画像情報を送信するとともに、画面転送開始時は前記中継先機器へ前記中継先機器の表示部の１画面分の画像情報を送信する通信部と、前記操作情報により前記中継先機器の表示部で画像の更新が生じる更新領域を記憶する更新領域記憶部と、前記第１画像情報を用いて、前記更新領域について前記操作情報が反映された画像を描画する描画部と、前記描画部により描画された画像を記憶する第１記憶部と、前記中継先機器へ送信された前記第２画像情報を含む前記中継先機器で表示されている画像情報を記憶する第２記憶部と、前記更新領域に対応する画像情報を前記第１記憶部及び前記第２記憶部から読み出して比較し、画像情報が異なる差分領域を抽出し、前記差分領域について、前記第１記憶部から読み出した画像情報を用いて前記第２記憶部に記憶されている画像情報を更新し、更新した前記差分領域に対応する画像情報を前記第２画像情報として前記通信部へ出力する画面転送部と、を備えるものである。
【発明の効果】
【０００７】
本発明によれば、画面中継装置の画面転送性能を向上できる。
【図面の簡単な説明】
【０００８】
【図１】本発明の第１の実施形態に係る画面中継システムの概略構成図である。
【図２】画面中継の一例を示す図である。
【図３】画面中継装置の概略構成図である。
【図４】更新領域の一例を示す図である。
【図５】境界情報の一例を示す図である。
【図６】並列処理されるスレッド数の算出方法の一例を示す図である。
【図７】並列処理されるスレッド数の算出方法の一例を示す図である。
【図８】並列処理されるスレッド数の算出方法の一例を示す図である。
【図９】並列処理されるスレッド数の算出方法の一例を示す図である。
【図１０】画面転送部における並列処理の一例を示す図である。
【図１１】画像描画処理を説明するフローチャートである。
【図１２】画像転送処理を説明するフローチャートである。
【図１３】本発明の第２の実施形態に係る画面中継システムの概略構成図である。
【図１４】同第２の実施形態に係る画面中継装置の概略構成図である。
【図１５】本発明の第３の実施形態に係る画面中継システムの概略構成図である。
【図１６】同第３の実施形態に係る画面中継装置の概略構成図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施の形態を図面に基づいて説明する。
【００１０】
（第１の実施形態）図１に本発明の第１の実施形態に係る画面中継システムの概略構成を示す。画面中継システムは、画面中継装置１００、Ｎ台の中継元機器２０１〜２０Ｎ、及びＭ台の中継先機器３０１〜３０Ｍを備える。Ｎ、Ｍは、１以上の整数である。
【００１１】
中継元機器２０１〜２０Ｎは、画像情報を作成するサーバ装置である。画像情報は、ユーザ側に配置された表示端末である中継先機器３０１〜３０Ｍの画面に表示される画像についての情報である。
【００１２】
中継元機器２０１〜２０Ｎは、画面転送開始時に、中継先機器３０１〜３０Ｍに表示される１画面分の画像情報を作成して送信する。その後、中継元機器２０１〜２０Ｎは、中継先機器の画面内の更新が発生した領域の画像情報のみを送信する。更新については後述する。
【００１３】
中継元機器２０１〜２０Ｎは、画像情報の取得要求メッセージを受け取った時だけ画像情報を送信してもよいし、所定時間毎に画像情報を送信してもよい。
【００１４】
画面中継装置１００は、Ｎ台の中継元機器２０１〜２０Ｎから送信されたＮ個の画像情報を合成する。画面中継装置１００は、合成画像のうちの所定又は任意のＭ個の領域に対応する画像情報を選択する。そして、画面中継装置１００は、第１領域に対応する画像情報を中継先機器３０１へ、第２領域に対応する画像情報を中継先機器３０２へ、・・・、第Ｍ領域に対応する画像情報を中継先機器３０Ｍへ送信する。画面中継装置は、中継先機器３０１〜３０Ｍへ送信する画像情報を、自装置内で生成することもできる。
【００１５】
また、画面中継装置１００は、中継先機器３０１〜３０Ｍから送信された操作情報（後述する）を受信し、中継元機器２０１〜２０Ｎへ送信できる。また、画面中継装置１００は、画像情報取得要求メッセージを中継元機器２０１〜２０Ｎへ送信する。画像情報取得要求メッセージは、画像中継装置１００が生成してもよいし、中継先機器３０１〜３０Ｍから受信したものでもよい。
【００１６】
中継先機器３０１〜３０Ｍは表示部（表示画面）を有し、画面中継装置１００から受け取った画像情報を表示できる。表示部は、例えば、液晶表示装置である。
【００１７】
また、中継先機器３０１〜３０Ｍは、キーボードやマウス等の入力装置を有する。中継先機器３０１〜３０Ｍは、入力装置を介して、ユーザからの操作情報を受け付ける。操作情報は、例えば、カーソルの移動、文字入力、操作が発生した位置等である。この操作情報により生じる画面内の変化が、上述の更新である。中継先機器３０１〜３０Ｍは、操作情報を画面中継装置１００へ送信する。
【００１８】
図２に、画面中継システムによる画面中継の一例を示す。中継元機器２０１〜２０７はそれぞれ画像２０１ａ〜２０７ａを示す画像情報を作成し、画面中継装置１００へ送信する。
【００１９】
画面中継装置１００は、中継元機器２０１〜２０７から画像２０１ａ〜２０７ａを示す画像情報を受信すると、それらを合成した合成画像１００ａを描画する。そして、画面中継装置１００は、合成画像１００ａの任意又は所定の領域に対応する画像情報を中継先機器３０１〜３０６へ送信する。
【００２０】
画面中継装置１００は、画面転送開始時に、中継先機器の表示部の１画面分の画像情報を送信する。その後、画面中継装置１００は、表示画面中の変化のあった領域（差分領域）を特定し、差分領域に対応する画像情報を圧縮して送信する。
【００２１】
中継先機器３０１〜３０６は、画面中継装置１００から送信された画像情報を表示部の画面に表示する。例えば、中継先機器３０１〜３０４は、合成画像１００ａの領域Ａ１〜Ａ４を表示する。つまり、中継先機器３０１〜３０４はそれぞれ、中継元機器２０１が作成した画像２０１ａを４分割した画像を表示する。
【００２２】
中継先機器３０５は合成画像１００ａの領域Ａ５を表示する。つまり、中継先機器３０５は、中継元機器２０２〜２０５が作成した画像２０２ａ〜２０５ａを合成表示する。
【００２３】
中継先機器３０６は合成画像１００ａの領域Ａ６を表示する。つまり、中継先機器３０６は、中継元機器２０６及び２０７が作成した２つの画像２０６ａ及び２０７ａを跨いで表示する。
【００２４】
このように、画面中継装置１００は、１つの中継元機器が作成した画像を複数に分割して複数の中継先機器へ送信したり、複数の中継元機器が作成した画像を合成して１つの中継先機器へ送信したり、複数の中継元機器が作成した画像に跨った画像を１つの中継先機器へ送信したりすることができる。
【００２５】
このような画面中継装置１００の概略構成を図３に示す。画面中継装置１００は、アプリケーション１１０、ハードウェア１２０、及びウィンドウサーバ１３０を有する。
【００２６】
アプリケーション１１０は、画面中継装置１００上で動作する各種処理を提供するプログラムである。アプリケーション１１０は、通信部１２２を介して中継元機器２０１〜２０Ｎから画像情報を受け取る。また、アプリケーション１１０は、通信部１２２を介して中継先機器３０１〜３０Ｍから操作情報を受け取る。
【００２７】
アプリケーション１１０は、操作情報に含まれる操作が発生した位置に基づいて、当該操作情報が中継元機器へ送信（転送）すべき情報か、又は画面中継装置１００内で処理すべき情報かを判定する。アプリケーション１１０は、操作情報が中継元機器へ送信すべき情報であると判定した場合、当該操作情報を通信部１２２を介して中継元機器へ送信する。
【００２８】
アプリケーション１１０は、中継元機器から受け取った画像情報又は画面中継装置１００内で処理すべきと判定した操作情報に基づいて、中継先機器に表示される画面に変化（更新）が発生するか否かを検出する。中継先機器に表示される画面に変化（更新）が発生する場合、アプリケーション１１０は、ウィンドウサーバ１３０の描画部１３２に対して画像の描画命令を出力する。描画命令に基づく描画部１３２の動作については後述する。
【００２９】
ハードウェア１２０は、ＣＰＵ１２１、通信部１２２、バックアップ画像記憶部１２３、及びフレームバッファ１２４を有する。
【００３０】
ＣＰＵ（Central Processing Unit：中央演算装置）１２１は、アプリケーション１１０及びウィンドウサーバ１３０を実行する制御部である。画面中継装置１００は、ＣＰＵ１２１を複数搭載したマルチプロセッサでもよいし、複数のプロセッサコアを１つのパッケージに集積したマルチコアプロセッサでもよい。
【００３１】
画面中継装置１００は、１つの処理内容を複数の処理単位（スレッド）に分割し、複数のスレッドを各ＣＰＵ（プロセッサコア）に割り当て、複数のＣＰＵによる並列処理を行うようにしてもよい。
【００３２】
通信部１２２は、中継元機器への画面情報取得要求メッセージの送信、中継元機器からの画像情報の受信、中継先機器への画像情報の送信などを行う。また、通信部１２２は、中継先機器から操作情報を受信して、中継元機器へ該操作情報を送信する。
【００３３】
バックアップ画像記憶部１２３は、中継先機器に送信した画像情報を記憶する。フレームバッファ１２４は、中継元機器から受信した画像情報や中継先機器から受信した操作情報に基づいて描画部１３２が描画した画像の画像情報を記憶する。バックアップ画像記憶部１２３及びフレームバッファ１２４は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、光ディスク、メモリカード等の一般的に利用されている様々な記憶媒体により構成することができる。
【００３４】
ウィンドウサーバ１３０は、決定部１３１、描画部１３２、更新領域記憶部１３３、境界情報記憶部１３４、算出部１３５、画面転送部１３６、及びタイマ１３７を有する。
【００３５】
決定部１３１は、中継元機器２０１〜２０Ｎから受信した画像情報を、それぞれフレームバッファのどの位置に描画するかを決定し、アプリケーション１１０に通知する。アプリケーション１１０に通知された描画位置は、アプリケーション１１０が出力する描画命令に含まれる。
【００３６】
描画位置の決定方法は任意である。例えば、決定部１３１は、中継元機器２０１〜２０Ｎからの画像情報の受信順に、フレームバッファ１２４の上から描画位置を割り当てる。
【００３７】
描画部１３２は、アプリケーション１１０から受け取った描画命令に基づいて各種画像処理を行って画像（合成画像）を作成し、画像情報をフレームバッファ１２４に記憶させる。また、描画部１３２は、描画命令に含まれる操作発生位置を示す座標情報を用いて、中継先機器の表示部で画像の更新（変更）が生じた更新領域を特定する。描画部１３２は、特定した更新領域を更新領域記憶部１３３に記録する。
【００３８】
ここで、座標情報とは、例えば、１０２４×７６８ピクセルの画面の場合、画面左上を（０、０）、画面右下を（１０２３、７６７）とするような座標系で表された情報をいう。なお、更新領域記憶部１３３への更新領域の記録方法は、中継先機器の表示画面上の更新領域が分かる任意の方法でよい。例えば、「座標（０，０）から幅１０ピクセル、高さ１０ピクセルの矩形領域及び座標（３０，３０）から幅２００ピクセル、高さ５ピクセルの矩形領域」のように、更新領域を矩形情報のリストとして記録することができる。
【００３９】
図４に、更新領域の一例を示す。例えば、ウィンドウＷを、図４（ａ）に示す位置から、図４（ｂ）に示す位置に下方向へ移動する操作が行われる。
【００４０】
この操作により、ウィンドウＷを下方向に移動するための「幅３５０ピクセル、高さ２００ピクセルの矩形領域を座標（３００、５０）から座標（３００、２００）の位置にコピーする」第１描画命令と、ウィンドウＷで隠れていた領域を復元するための「座標（３００、５０）の位置に幅３５０ピクセル、高さ１５０ピクセルの矩形領域を描画する」第２描画命令と、ドラッグ中であることを示すカーソル画像を描画するための「座標（３５０、２００）の位置に幅５０ピクセル、高さ５０ピクセルの矩形領域を描画する」第３描画命令とが発生する。
【００４１】
第１描画命令による更新領域は、図４（ｃ）に示すような、座標（３００、２００）から幅３５０ピクセル、高さ２００ピクセルの矩形領域Ｒ１となる。また、第２描画命令による更新領域は、図４（ｃ）に示すような、座標（３００、５０）から幅３５０ピクセル、高さ１５０ピクセルの矩形領域Ｒ２となる。また、第３描画命令による更新領域は、図４（ｃ）に示すような、座標（３５０、２００）から幅５０ピクセル、高さ５０ピクセルの矩形領域Ｒ３となる。
【００４２】
そして、矩形領域Ｒ１〜Ｒ３がそれぞれ更新領域として更新領域記憶部１３３に記録される。
【００４３】
なお、矩形領域Ｒ１〜Ｒ３は連続した領域のため、３つの矩形領域を１つにまとめて、図４（ｄ）に示すような、座標（３００、５０）から幅３５０ピクセル、高さ３５０ピクセルの矩形領域Ｒ４を更新領域として更新領域記憶部１３３に記録してもよい。
【００４４】
境界情報記憶部１３４は、フレームバッファ１２４に記憶されている合成画像内の境界情報を記憶する。境界情報とは、フレームバッファ１２４内の合成画像における、中継先機器で表示される領域の境界を示す情報である。
【００４５】
例えば、フレームバッファ１２４に図５（ａ）に示すような合成画像が記憶されており、中継先機器３０１〜３０６で図５（ｂ）に示すような画像が表示される場合、図５（ｃ）に示される破線が表示境界となる。境界情報記憶部１３４は、このような境界を示す情報を記憶する。
【００４６】
算出部１３５は、更新領域の数、各更新領域の面積、境界情報、搭載されているＣＰＵ１２１の数などの情報の少なくともいずれか１つを用いて、画面転送部１３６内で並列処理されるスレッド数（並列数）を算出する。画面転送部１３６は、後述する差分抽出処理等を、複数の処理領域について並行して実行できる。並列処理される単位処理領域は、更新領域を分割／グループ化して決定される。
【００４７】
図６〜図９に並列処理されるスレッド数の算出方法の例を示す。図６〜図８に示す例では、更新領域記憶部１３３に、合成画像内の更新領域として６つの矩形領域Ｒ１１〜Ｒ１６が記憶されているものとする。図６〜図８では、更新領域を破線で示している。
【００４８】
図６は、更新領域の数に基づいてスレッド数を算出する例を示す。更新領域が６つあるため、スレッド数は６となる。つまり、画面転送部１３６における６つのスレッドはそれぞれ更新領域（矩形領域）Ｒ１１〜Ｒ１６に対応する画像情報の処理を行う。
【００４９】
図７は、各更新領域の面積に基づいてスレッド数を算出する例を示す。更新領域の面積は、例えば、幅１０ピクセル、高さ１０ピクセルの更新領域の場合は１００（＝１０×１０）、幅２００ピクセル、高さ５ピクセルの更新領域の場合は１０００（＝２００×５）となる。
【００５０】
各スレッドに割り当てる領域の大きさを同等にするために、領域面積に閾値Ｔｈ１と閾値Ｔｈ２（Ｔｈ１＞Ｔｈ２）を設け、閾値Ｔｈ１よりも面積が大きい更新領域は複数に分割し、閾値Ｔｈ２よりも面積が小さい複数の更新領域を１つにグループ化する。
【００５１】
更新領域Ｒ１１の面積が大きいため、これが分割される。なお、更新領域Ｒ１２は更新領域Ｒ１１に隣接しているため、更新領域Ｒ１１とＲ１２を１まとめにした上で分割することが好適である。図７に示すように、更新領域Ｒ１１とＲ１２を１まとめにして、３つの処理領域Ｒ７１〜Ｒ７３に分割される。
【００５２】
更新領域（矩形領域）Ｒ１３〜Ｒ１５は面積が小さいため１つにグループ化され、処理領域Ｒ７４となる。
【００５３】
更新領域Ｒ１６は面積が閾値Ｔｈ１以下、閾値Ｔｈ２以上であるため、処理領域Ｒ７５となる。従って、スレッド数（画面転送部１３６で並列処理される領域数）は５つとなる。このように、更新領域の面積を考慮することで、各スレッドにおける処理量を均等化することができる。
【００５４】
図８は、各更新領域の面積及び境界情報に基づいてスレッド数を算出する例を示す。表示境界は、一点鎖線で示すように、合成画像を４分割したものとする。更新領域の面積に基づいて決定した処理領域が表示境界を跨ぐ場合は、表示境界を跨がないように分割する。従って、図７における処理領域Ｒ７４が、この例では処理領域Ｒ８４、Ｒ８５に分割される。処理領域Ｒ８４は更新領域Ｒ１３及びＲ１４をグループ化したものであり、処理領域Ｒ８５は更新領域Ｒ１５に相当する。
【００５５】
処理領域Ｒ８１〜Ｒ８３、Ｒ８６は、図７における処理領域Ｒ７１〜Ｒ７３、Ｒ７５に対応する。従って、図８に示す例では、スレッド数（画面転送部１３６で並列処理される領域数）は６つとなる。
【００５６】
境界情報を用いて、複数の中継先機器３０１〜３０Ｍが表示する領域を考慮することで、１つのスレッドを１つの中継先機器に対応させることができる。
【００５７】
図９は、ＣＰＵ１２１の搭載数に基づいてスレッド数を算出する例を示す。画面転送部１３６で並列処理されるスレッド数はＣＰＵ１２１の搭載数に制限される。従って、ＣＰＵ１２１の搭載数をスレッド数として算出する。例えば、ＣＰＵ１２１を４つ搭載している場合は、スレッド数を４とする。
【００５８】
図９では、全画面更新が発生し、更新領域記録部１３３に、全画面分の更新領域（矩形領域）が１つ記憶されているものとする。ＣＰＵ１２１の搭載数が４つの場合、図９に示すように、全画面が４つの処理領域Ｒ９１〜Ｒ９４に等分割される。
【００５９】
更新領域の数がＣＰＵ１２１の搭載数よりも多い場合は、スレッド数（処理領域数）をＣＰＵ１２１の搭載数以下に抑えるために、複数の更新領域をグループ化して１つの処理領域とする。
【００６０】
算出部１３５は、スレッド数の算出にあたり、更新領域の数、各更新領域の面積、境界情報、搭載されているＣＰＵ１２１の数などの情報を任意に組み合わせて用いることができる。また、算出部１３５は、１つのスレッド数を算出してもよいし、画面転送部１３６で実行される後述の差分抽出処理、画素形式変換処理、圧縮処理等の各処理毎にスレッド数を算出してもよい。
【００６１】
例えば、差分抽出処理に対しては、図６に示すように更新領域の数に基づいてスレッド数が算出され、算出したスレッド数がＣＰＵ１２１の搭載数よりも小さい場合は、領域面積が閾値Ｔｈ１より大きい更新領域を分割する。
【００６２】
また、例えば、画素形式変換処理および圧縮処理は、中継先機器毎にそれぞれ画素形式や圧縮形式が異なる形式の画面情報を扱っている可能性があり、中継先機器毎に異なるスレッドで処理するために、境界情報を考慮してスレッド数が算出される。
【００６３】
このように、算出部１３５が、ＣＰＵ搭載数や、画面転送部１３６における処理内容に応じて、画面転送部１３６における並列処理のスレッド数を算出し、並列処理される処理領域を決定することで、画面転送部１３６は効率良く並列処理を実行できる。
【００６４】
画面転送部１３６は、更新領域記憶部１３３に記憶されている更新領域を参照して、この更新領域に対応する画像情報をフレームバッファ１２４から読み出す。フレームバッファ１２４から読み出される画像情報は、描画部１３２が作成した画像情報であり、中継先機器３０１〜３０Ｍから受け取った操作情報が反映されたものである。
【００６５】
また、画面転送部１３６は、これらの領域に対応する画像情報をバックアップ画像記憶部１２３から読み出す。バックアップ画像記憶部１２３から読み出される画像情報は、過去に中継先機器３０１〜３０Ｍへ送信され、中継先機器３０１〜３０Ｍで表示されている画像情報である。
【００６６】
そして、画面転送部１３６は、差分抽出処理を、算出部１３５により決定された処理領域毎に並列に実行する。差分抽出処理は、フレームバッファ１２４から読み出した画像情報とバックアップ画像記憶部１２３から読み出した画像情報とを比較して、差分領域（画像情報が異なる領域）を抽出する処理である。
【００６７】
画面転送部１３６は、抽出した差分領域について、バックアップ画像記憶部１２３に記憶されている画像情報を更新する。また、画面転送部１３６は、差分領域で更新領域記憶部１３３内の更新領域を上書きする。
【００６８】
画面転送部１３６は、差分抽出処理後に、画素形式変換処理を行う。画素形式変換処理は、画面中継装置１００における画素形式を、中継先機器３０１〜３０Ｍにおける画素形式に変換する処理である。両者の画素形式が同じ場合は、この処理を省略することができる。なお、画素形式は、ｂｐｐ（１画素あたりのビット数）、ｄｅｐｔｈ（１画素で表示可能な色数）、カラーマップ（色番号と実際の色の対応を定義する）を含む。
【００６９】
画面転送部１３６は、画素形式変換処理後に、圧縮処理を行い、差分領域の画像情報を圧縮する。圧縮された画像情報は、通信部１２２を介して中継先機器３０１〜３０Ｍへ送信される。
【００７０】
例えば、画面転送部１３６は、図１０に示すように、更新領域の数に基づいたスレッド数で差分抽出処理を行い、境界情報に基づいたスレッド数で画素形式変換処理及び圧縮処理を行う。
【００７１】
画面転送部１３６は、圧縮処理後に、中継先機器へ送信される画像情報に対応する領域（差分領域）の情報を、更新領域記憶部１３３から削除する。
【００７２】
タイマ１３７は所定時間毎に画面転送部１３６に割込み通知を行う。画面転送部１３６は割込み通知に基づいて、上述の差分抽出処理等を開始する。なお、画面転送部１３６の処理開始のトリガはタイマ１３７からの割込み通知でなくてもよい。例えば、描画部１３２による描画回数が所定値に達したら、画面転送部１３６が処理を開始するようにしてもよい。
【００７３】
上述したように、画面中継装置１００が行う画像処理は、フレームバッファ１２４に更新画像を書き込む画像描画処理と、更新領域の画像情報を中継先機器へ転送する画像転送処理の２つに分けられる。
【００７４】
図１１に示すフローチャートを用いて画像描画処理について説明する。
【００７５】
（ステップＳ１０１）画面中継装置１００から中継元機器２０１〜２０Ｎへ画面情報取得要求メッセージが送信される。
【００７６】
（ステップＳ１０２）アプリケーション１１０が、中継元機器２０１〜２０Ｎからの画像情報を受信する。
【００７７】
（ステップＳ１０３）アプリケーション１１０が、中継元機器２０１〜２０Ｎからの画像情報に従って処理を実行し、画像情報の更新が発生した場合に、合成画像の描画を要求する描画命令を描画部１３２へ出力する。
【００７８】
なお、画面中継装置１００上で画像情報を生成してもよい。この場合、アプリケーション１１０は、中継先機器３０１〜３０Ｍからの操作情報に基づいて、描画部１３２へ描画命令を出力する。
【００７９】
（ステップＳ１０４）描画部１３２が、描画命令に応じて画像処理を行い、図２に示すような合成画像を描画し、合成画像の画像情報をフレームバッファ１２４に記憶させる。描画部１３２は、画面中継装置１００の動作開始時に全画面についての合成画像を作成した後は、更新領域の画像を描画する。
【００８０】
（ステップＳ１０５）描画部１３２が、更新領域（の座標）を更新領域記憶部１３３に記憶させる。
【００８１】
図１２に示すフローチャートを用いて画像転送処理について説明する。
【００８２】
（ステップＳ２０１）算出部１３５が、画面転送部１３６において画像情報が並列処理されるスレッド数を算出する。画面転送部１３６で実行される差分抽出処理、画素形式変換処理、圧縮処理のそれぞれについてスレッド数を算出してもよいし、スレッド数を１つだけ算出し、すべての処理に対してそのスレッド数を適用してもよい。ここで算出されたスレッド数に従って、以降の画面転送部１３６の処理は並列処理される。
【００８３】
（ステップＳ２０２）差分抽出処理するか否かが判定される。差分抽出処理を行う場合はステップＳ２０３に進み、行わない場合はステップＳ２０５に進む。
【００８４】
（ステップＳ２０３）更新領域記憶部１３３に記憶されている更新領域を参照し、当該更新領域に対応するフレームバッファ１２４の（更新画像の）画像情報と、バックアップ画像記憶部１２３の画像情報とが比較され、差分領域が抽出される。そして、更新領域記憶部１３３内の更新領域に差分領域が上書きされる。
【００８５】
（ステップＳ２０４）差分領域に対応する更新画像の画像情報が、バックアップ画像記憶部１２３に記憶される。
【００８６】
（ステップＳ２０５）画面転送部１３６が更新領域に対応する更新画像の画像情報をフレームバッファ１２４から読み出す。
【００８７】
（ステップＳ２０６）画素形式変換処理するか否かが判定される。画素形式変換処理を行う場合はステップＳ２０７に進み、行わない場合はステップＳ２０９に進む。
【００８８】
（ステップＳ２０７）画面中継装置１００とは画素形式の異なる中継先機器が検出される。
【００８９】
（ステップＳ２０８）ステップＳ２０７で検出された中継先機器へ送信される更新領域の更新画像の画素形式が変換される。
【００９０】
（ステップＳ２０９）圧縮処理するか否かが判定される。圧縮処理を行う場合はステップＳ２１０に進み、行わない場合はステップＳ２１１に進む。
【００９１】
（ステップＳ２１０）更新領域の更新画像が圧縮される。
【００９２】
（ステップＳ２１１）中継先機器へ送信される更新画像に対応する更新領域が更新領域記憶部１３３から削除される。
【００９３】
（ステップＳ２１２）更新画像が、通信部１２２を介して、中継先機器へ送信される。
【００９４】
上述したように、画面中継装置１００は、Ｎ台の中継元機器２０１〜２０Ｎから受信した画像を合成し、合成画像の任意の領域をＭ台の中継先機器３０１〜３０Ｍへ送信できる。つまり、画面中継装置１００は、１台の中継元機器が作成した画像を分割した画像、複数の中継先機器が作成した画像を合成した画像、複数の中継先機器が作成した画像に跨る画像など、Ｎ台の中継元機器が作成した画像を任意に合成／分割して、Ｍ台の中継先機器へ転送することができる。
【００９５】
また、算出部１３５が、更新領域の数、各更新領域の面積、境界情報、搭載されているＣＰＵ１２１の数などの情報を用いて、画面転送部１３６で実行される差分抽出処理等のスレッド数を求めている。そのため、画面中継装置１００は、中継元機器が作成した画面の画像情報を中継先機器へ効率良く送信できる。
【００９６】
このように、本実施形態によれば、画面中継装置の画面転送性能を向上できる。
【００９７】
上記第１の実施形態では、画面中継装置１００は、１種類の合成画像を描画してフレームバッファ１２４に記憶させていたが、画面中継装置１００で描画される合成画像と中継先機器が要求する合成画像とが異なる場合は、中継先機器の要求する合成画像をフレームバッファ１２４の別領域に記憶してもよい。
【００９８】
例えば、図２では、合成画像１００ａにおいて、中継元機器２０２が作成した画像２０２ａは、中継元機器２０３が作成した画像２０３ａの左隣に位置していたが、中継先機器からこの２つの画像の位置を入れ替えた合成画像が要求されている場合、そのような合成画像を描画して、フレームバッファ１２４の別領域に記憶する。
【００９９】
また、各中継先機器に対応するようにフレームバッファ１２４を複数設け、各中継先機器に要求される合成画像を描画して、フレームバッファに記憶させてもよい。
【０１００】
画面中継装置１００から画像情報を受信した中継先機器が、所望の表示位置となるように、画像の位置の入れ替えを行ってもよい。
【０１０１】
（第２の実施形態）図１３に本発明の第２の実施形態に係る画面中継システムの概略構成を示す。画面中継システムは、画面中継装置４００、Ｎ台の中継元機器２０１〜２０Ｎ、及び１台の中継先機器３０１を備える。Ｎは１以上の整数である。画面中継装置４００は、中継元機器２０１〜２０Ｎによって作成された画像を任意に合成／分割して、中継先機器３０１へ送信する。また、画面中継装置４００は、中継先機器３０１の表示画像が更新された（変化が発生した）場合は、更新画像を中継先機器３０１へ送信する。
【０１０２】
図１４に画面中継装置４００の概略構成を示す。画面中継装置４００は、第１送信部４０１、第１受信部４０２、第２送信部４０３、第１決定部４１１、関連部４１２、検出部４１３、更新部４１４、第１記憶部４２１、及び第２記憶部４２２を有する。
【０１０３】
第１送信部４０１は、Ｎ台の中継元機器２０１〜２０Ｎへ画像情報取得要求メッセージを送信する。
【０１０４】
第１受信部４０２は、Ｎ台の中継元機器２０１〜２０Ｎから、画像情報取得要求メッセージの応答として、中継元機器で作成された画像情報を受信する。第１受信部４０２は、受信した画像情報を第１記憶部４２１内の第１決定部４１２により指示された記憶領域に記憶する。
【０１０５】
なお、第１受信部４０２は、受信した画像情報が圧縮されている場合は、伸張処理を施す。
【０１０６】
第１記憶部４２１は、中継元機器２０１〜２０Ｎから受信した画像情報を記憶する。第１記憶部４２１は、上記第１の実施形態におけるフレームバッファ１２４に相当する。
【０１０７】
第１決定部４１２は、Ｎ台の中継元機器２０１〜２０Ｎから受信した画像情報が記憶される第１記憶部４２１内の記憶領域を決定する。
【０１０８】
第１決定部４１２は、画面中継装置４００が中継元機器を「発見」した順によって記憶する領域を指定した設定ファイルＡであってもよい。なお、第１決定部４１２が設定ファイルＡの場合、第１受信部４０２は、設定ファイルＡを参照して、第１記憶部４２１に受信した画像情報を記憶させる。
【０１０９】
第２記憶部４２２は、中継先機器３０１へ送信した画像情報を記憶する。第２記憶部４２２は、上記第１の実施形態におけるバックアップ画像記憶部１２３に相当する。
【０１１０】
関連部４１２は、第１記憶部４２１に記憶された画像情報と、第２記憶部４２２に記憶される画像情報との対応関係を記憶する。関連部４１２は、対応情報を記載した設定ファイルＢであってもよい。
【０１１１】
検出部４１３は、関連部４１３から対応情報を取得し、第１記憶部４２１と第２記憶部４２２とに記憶されている画像情報の画素値を比較し、差分がある領域を検出する。なお、関連部４１３が設定ファイルＢの場合、検出部４１３は、設定ファイルＢを参照して、第１記憶部４２１と第２記憶部４２２の間で、画素値を比較する画像情報の領域を知ることができる。
【０１１２】
更新部４１４は、検出部４１３が検出した差分領域に対応する第１記憶部４２１内の画像情報を更新画像情報として第２記憶部４２２に記憶させる。また、更新部４１４は、差分領域を示す情報を第２送信部４０３に通知する。
【０１１３】
第２送信部４０３は、更新部４１４から通知された差分領域を示す情報を用いて、第２記憶部４２２から、当該差分領域の画像情報を取得し、中継先機器３０１へ送信する。送信の際には、画像情報を圧縮してもよい。
【０１１４】
第１送信部４０１、第１受信部４０２、及び第２送信部４０３は、上記第１の実施形態における通信部１２２に相当する。また、第２送信部４０３は、上記第１の実施形態における画面転送部１３６の圧縮処理の機能を有する。また、第１受信部４０２及び決定部４１１が、上記第１の実施形態における決定部１３１及び描画部１３２に相当する。
【０１１５】
このように、本実施形態の画面中継装置４００は、Ｎ台の中継元機器から画像情報を受信し、任意に合成／分割して１つの画像情報を作成し、１台の中継先機器へ転送することができる。
【０１１６】
また、検出部４１３、更新部４１４、第２送信部４０３における処理について、上記第１の実施形態で示したようなスレッド数の算出を行い、算出したスレッド数で並列処理を行うことで、画像情報を効率的に中継先機器へ送信することができる。
【０１１７】
（第３の実施形態）図１５に本発明の第３の実施形態に係る画面中継システムの概略構成を示す。画面中継システムは、画面中継装置５００、Ｎ台の中継元機器２０１〜２０Ｎ、及びＭ台の中継先機器３０１〜３０Ｍを備える。Ｎ、Ｍは１以上の整数である。画面中継装置５００は、中継元機器２０１〜２０Ｎによって作成された画像を任意に合成／分割して、中継先機器３０１〜３０Ｍへ送信する。また、画面中継装置１００は、中継先機器３０１〜３０Ｍの表示画像が更新された（変化が発生した）場合は、更新画像を中継先機器３０１〜３０Ｍへ送信する。
【０１１８】
図１６に画面中継装置５００の概略構成を示す。画面中継装置５００は、図１３に示す上記第２の実施形態に係る画面中継装置４００に、第２決定部４１５を追加した構成となっている。
【０１１９】
画面中継装置５００は、画面中継装置４００の機能を拡張したものである。第２送信部４０３は、Ｍ台の中継先機器３０１〜３０Ｍに画像情報を送信することができる。それぞれの中継先機器へ送信する画像情報は、第２記憶部４２２に分離して記憶されている。
【０１２０】
第２決定部４１５は、Ｍ台の中継先機器３０１〜３０Ｍへ送信された、又は、送信される画像情報が記憶される第２記憶部４１５の記憶領域を決定する。
【０１２１】
第２決定部４１５は、画面中継装置５００が中継先機器を「発見」した順によって、第２記憶部４２２内の記憶領域を指定した設定ファイルＣであってもよい。なお、第２決定部４１５が設定ファイルＣの場合、第２送信部４０３は、中継先機器へ画像情報を送信する際に設定ファイルＣを参照して、送信先の中継先機器に対応する第２記憶部４２２の記憶領域を特定し、当該記憶領域に記憶された画像情報を送信する。
【０１２２】
図１６に示される関連部４１２、検出部４１３、更新部４１４は、Ｍ台の中継先機器３０１〜３０Ｍに対応するように、上記第２の実施形態で説明したそれぞれの機能を拡張したものである。
【０１２３】
このように、本実施形態の画面中継装置５００は、Ｎ台の中継元機器から画像情報を受信し、任意に合成／分割してＭ個の画像情報を作成し、Ｍ台の中継先機器へ転送することができる。
【０１２４】
さらに、検出部４１３の処理、更新部４１４の処理、第２送信部４０３の処理については、上記第１の実施形態で示したようなスレッド数の算出を行い、算出したスレッド数で並列処理を行うことで、画像情報を効率的に中継先機器へ送信することができる。
【０１２５】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【０１２６】
１００  画面中継装置
１１０  アプリケーション
１２０  ハードウェア
１２１  ＣＰＵ
１２２  通信部
１２３  バックアップ画像記憶部
１２４  フレームバッファ
１３０  ウィンドウサーバ
１３１  決定部
１３２  描画部
１３３  更新領域記憶部
１３４  境界情報記憶部
１３５  算出部
１３６  画面転送部
１３７  タイマ
２０１〜２０Ｎ  中継元機器
３０１〜３０Ｍ  中継先機器
【図１】
2014112373.tif 000003
【図２】
2014112373.tif 000004
【図３】
2014112373.tif 000005
【図４】
2014112373.tif 000006
【図５】
2014112373.tif 000007
【図６】
2014112373.tif 000008
【図７】
2014112373.tif 000009
【図８】
2014112373.tif 000010
【図９】
2014112373.tif 000011
【図１０】
2014112373.tif 000012
【図１１】
2014112373.tif 000013
【図１２】
2014112373.tif 000014
【図１３】
2014112373.tif 000015
【図１４】
2014112373.tif 000016
【図１５】
2014112373.tif 000017
【図１６】
2014112373.tif 000018