情報処理装置およびプログラム
【課題】良好な応答性を実現することができる情報処理装置およびプログラムを提供する。
【解決手段】実施形態の情報処理装置は、更新領域を検出する検出部、更新領域の画面情報に第1処理を実行する第1処理部、第1処理が終了した更新領域の画面情報に第2処理を実行する第2処理部、推定部および決定部を備える。第1処理部および第2処理部は、第1更新領域の画面情報を処理した後に第2更新領域の画面情報を処理する第1処理方式と、第1更新領域の画面情報の処理を中断し、第1更新領域と第2更新領域とを統合した更新領域の画面情報を処理する第2処理方式のいずれかで処理を実行する。推定部は、第1処理部と第2処理部の処理方式の組み合わせごとに、第2更新領域の画面情報が外部装置に送信されるまでの所要時間を推定する。決定部は、組み合わせごとの所要時間に基づいて、第1処理部および第2処理部の処理方式を決定する。
【解決手段】実施形態の情報処理装置は、更新領域を検出する検出部、更新領域の画面情報に第1処理を実行する第1処理部、第1処理が終了した更新領域の画面情報に第2処理を実行する第2処理部、推定部および決定部を備える。第1処理部および第2処理部は、第1更新領域の画面情報を処理した後に第2更新領域の画面情報を処理する第1処理方式と、第1更新領域の画面情報の処理を中断し、第1更新領域と第2更新領域とを統合した更新領域の画面情報を処理する第2処理方式のいずれかで処理を実行する。推定部は、第1処理部と第2処理部の処理方式の組み合わせごとに、第2更新領域の画面情報が外部装置に送信されるまでの所要時間を推定する。決定部は、組み合わせごとの所要時間に基づいて、第1処理部および第2処理部の処理方式を決定する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施の形態は、情報処理装置およびプログラムに関する。
【背景技術】
【0002】
ネットワークを介して接続されたサーバ端末からクライアント端末に対して、サーバ端末の表示画面の情報をパケット化してリアルタイムで配信する画面転送システムが知られている。このような画面転送システムは、ユーザが遠隔のサーバ端末の表示画面の情報を手元の端末で表示し参照できるようになることから、例えば遠隔監視システムなど、様々な用途での応用が期待される。
【0003】
画面転送システムにおいて、サーバ端末からクライアント端末に表示画面の情報を送信する方法としては、サーバ端末が保持する表示画面の全領域の画像情報を一定時間おきにパケット化してクライアント端末に向けて送信する方法と、サーバ端末が保持する表示画面において描画状態に変化が生じるごとに、その差分となる情報、つまり描画状態が変化した領域(以下、更新領域という。)の画像情報のみを、更新領域の位置を表す領域情報とともにクライアント端末に向けて送信する方法が存在する。後者の方法では、描画状態の変化に応じて必要な部分のみのデータ転送が行われるため、前者の方法と比較して、ネットワーク帯域を効率的に利用することができる。また、後者の方法では、単位時間当たりの描画コマ数を大きくできるなどといった利点がある。このため、一般には後者の方法によるサービスが提供されることが多い。
【0004】
後者の方法で画面転送を行う画面転送システムでは、サーバ端末が表示画面の更新領域を検出する処理を随時行って、検出した更新領域の画像情報と領域情報(以下、これらの情報を合わせて画面情報という。)をクライアント端末に送信する。また、サーバ端末は、クライアント端末でなされたユーザ操作の情報をクライアント端末から受信し、ユーザ操作が表示画面の描画状態を変化させるものである場合、描画状態が変化した更新領域の画面情報をクライアント端末に送信する。このとき、サーバ端末では、表示画面の更新領域を検出する処理、検出した更新領域の画面情報を圧縮する処理、圧縮された画面情報を送信する処理などの一連の処理が順次実行される。これらサーバ端末で実行される一連の処理は、それぞれが独立した処理であるため、各処理に異なるスレッドを割り当てて、同期を取りながら並列してこれら複数の処理を実行することが可能である。
【0005】
ところで、上記のような画面転送システムでは、良好な応答性を実現することが求められている。応答性とは、例えば、クライアント端末の表示画面上でマウスなどのポインティングデバイスをクリックする操作など、所定のユーザ操作がなされてから、その操作に対応するサーバ端末上の画面変化がクライアント端末に反映されるまでの時間(応答時間)に関する画面転送の品質である。応答性が十分でない(つまり、応答時間が長い)と、ユーザは操作の結果を確認するまで待機しなければならず、作業効率が著しく低下したり、誤操作を引き起こしたりといった弊害が生じる。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2009−159288号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明が解決しようとする課題は、良好な応答性を実現することができる情報処理装置およびプログラムを提供することである。
【課題を解決するための手段】
【0008】
実施形態の情報処理装置は、外部装置が表示する表示画面の画面情報を前記外部装置に送信する情報処理装置である。この情報処理装置は、検出部と、第1処理部と、第2処理部と、推定部と、決定部と、を備える。検出部は、前記表示画面の更新領域を検出する。第1処理部は、検出された更新領域の画面情報に対して第1処理を実行する処理部であって、第1更新領域の画面情報に対する処理が終了した後に、前記第1更新領域よりも後に検出された第2更新領域の画面情報に対する処理を実行する第1処理方式と、前記第1更新領域の画面情報に対する処理を中断して、前記第1更新領域と前記第2更新領域とを統合した更新領域の画面情報に対する処理を実行する第2処理方式とのいずれかの処理方式により前記第1処理を実行する。第2処理部は、前記第1処理が終了した更新領域の画面情報に対して第2処理を実行する処理部であって、前記第1処理方式と前記第2処理方式とのいずれかの処理方式により前記第2処理を実行する。推定部は、前記第1処理部の処理方式と前記第2処理部の処理方式との組み合わせごとに、前記第2更新領域の画面情報が前記外部装置に送信されるまでの所要時間を推定する。決定部は、推定された前記組み合わせごとの前記所要時間に基づいて、前記第1処理部と前記第2処理部のそれぞれについて、前記第1処理方式により処理を実行するか、または前記第2処理方式により処理を実行するかを決定する。
【図面の簡単な説明】
【0009】
【図1】実施形態の画面転送システムの構成図。
【図2】画面更新のデータ構造の一例を示す図。
【図3】更新領域の一例を説明するための図。
【図4】サーバ端末の記憶部が記憶する情報の一例を示す図。
【図5】サーバ端末の検出部、変換部、圧縮部および送信部による処理状態の一例を示す図。
【図6】サーバ端末の記憶部が記憶する情報の一例を示す図。
【図7】更新領域の表示画面全体における位置を示す図。
【図8】サーバ端末の検出部、変換部、圧縮部および送信部による処理状態の一例を示す図。
【図9】圧縮処理を実行する前の画面更新どうしのマージを説明する図。
【図10】圧縮処理を実行した後の画面更新どうしのマージを説明する図。
【図11】圧縮処理を実行した後の画面更新どうしのマージを説明する図。
【図12】サーバ端末の検出部、変換部、圧縮部および送信部による処理状態の一例を示す図。
【図13】2つの画面更新をマージした画面更新に対して、さらに別の画面更新をマージする様子を示す図。
【図14】サーバ端末の検出部、変換部、圧縮部および送信部による処理状態の一例を示す図。
【図15】サーバ端末の検出部、変換部、圧縮部および送信部による処理状態の一例を示す図。
【図16】サーバ端末のハードウェア構成図。
【発明を実施するための形態】
【0010】
以下、実施形態の情報処理装置およびプログラムについて、図面を参照して説明する。本実施形態は、サーバ端末が保持する表示画面の更新領域の画面情報を、サーバ端末からネットワークを介してクライアント端末に送信する画面転送システムへの適用例である。
【0011】
図1は、本実施形態にかかる画面転送システムの構成例を示す図である。図1に示すように、本実施形態にかかる画面転送システムは、サーバとして機能する情報処理装置(以下、サーバ端末という。)1と、サーバ端末1に対してネットワーク3により接続された外部装置であり、クライアントとして機能する情報処理装置(以下、クライアント端末という。)2と、を備える。なお、ネットワーク3の形態は任意であり、例えばインターネット、LAN(ローカルエリアネットワーク)などを適用できる。
【0012】
サーバ端末1は、図1に示すように、表示部100と、検出部101と、変換部102と、圧縮部103と、送信部104と、記憶部105と、推定部106と、決定部107と、受信部108と、オペレーティングシステム109と、を含む。
【0013】
表示部100は、オペレーティングシステム109から表示画面全体の画像情報を取得し、表示画面を表示する。表示部100は、表示画面全体の画像情報を格納するための記憶領域(フレームバッファ)を有している。フレームバッファには、オペレーティングシステム109から取得された最新の画像情報が格納される。表示部100は、このフレームバッファの画像情報に基づき、最新の描画状態の表示画面を表示する。
【0014】
本実施形態にかかる画面転送システムでは、このサーバ端末1の表示部100に表示される表示画面と同じ表示画面が、クライアント端末2の後述する表示部203に表示される。なお、サーバ端末1は、表示部100を備えない構成であってもよい。サーバ端末1が表示部100を備えない構成の場合も、表示画面全体の画像情報を格納するためのフレームバッファが設けられ、このフレームバッファに、オペレーティングシステム109から最新の画像情報が格納される。
【0015】
検出部101は、表示部100に表示される表示画面(つまり、クライアント端末2の表示部203に表示される表示画面)の更新領域を検出する処理を行う。検出部101は、表示部100に表示される表示画面全体の画像情報を格納するフレームバッファを有している。検出部101は、このフレームバッファに前回格納した画像情報と、新たに格納する最新の画像情報とを比較することにより、表示部100に表示される表示画面の更新領域を検出し、更新領域の画面情報を生成する。以下では、この検出部101が生成する更新領域の画面情報を「画面更新」という。画面更新は、表示部100に表示される表示画面において最新の描画状態を得る差分となる情報である。検出部101は、後述の変換部102において画面更新に対する変換処理が可能な状態になると、生成した画面更新を変換部102に出力する。
【0016】
図2は、画面更新のデータ構造の一例を示す図である。画面更新は、検出部101が検出した更新領域の位置を表す領域情報と、更新領域における更新後の画像情報との対を少なくとも1個含む。領域情報は、表示画面全体における更新領域の位置を示す数値(フレームバッファに画面情報を格納する際の更新領域の格納位置を表す数値であり、一例として、表示画面の画素に対応する数値)である。画像情報は、領域情報で示される領域の更新後のビットマップデータ(例えば、更新領域の各画素におけるRGB3色の値など)である。
【0017】
図3は、更新領域の一例を説明するための図である。図3に示すように、例えば、表示画面の画面全体における左上角を(0,0)、右下角を(Width,Height)としたときの、更新領域の左上座標(Left,Top)と右下座標(Right,Bottom)の組み合わせが領域情報である。図2および図3では、1つの画面更新に2つの領域情報が含まれる例を示しており、1つ目の領域情報は(Left,Top,Right,Bottom)=(100,100,300,300)であり、2つ目の領域情報は(Left,Top,Right,Bottom)=(300,200,500,400)である。
【0018】
図1に戻り、変換部102は、検出部101が出力する画面更新に対して色空間の変換処理を行う。具体的には、変換部102は、検出部101が出力する画面更新に含まれる画像情報を第1の表色系の情報から第2の表色系の情報に変換する処理、例えばRGB→YUVなどの変換処理を施す。
【0019】
変換部102は、任意のタイミングで、現在実行中の画面更新に対する変換処理を中断することが可能である。この場合、変換処理を中断した画面更新は、後に検出部101から出力された別の変換前の画面更新と統合して(マージして)、1個の画面更新として扱うことが可能である。変換部102は、現在実行中の画面更新に対する変換処理を中断した場合には、表示画面に欠落を生じさせないために、その後、この統合した画面更新に対して変換処理を行うことになる。なお、画面更新の具体的な統合の手順については詳細を後述する。
【0020】
圧縮部103は、変換部102により変換処理が行われた画面更新に対して圧縮処理を行う。具体的には、圧縮部103は、変換部102により画像情報の変換処理が行われた画面更新が変換部102から出力されると、この画面更新に含まれる画像情報に対して、例えばZLIBなどの圧縮アルゴリズムを用いた圧縮処理を施す。
【0021】
圧縮部103は、任意のタイミングで、現在実行中の画面更新に対する圧縮処理を中断することが可能である。この場合、圧縮処理を中断した画面更新は、後に変換部102から出力された別の圧縮前の画面更新と統合して(マージして)、1個の画面更新として扱うことが可能である。圧縮部103は、現在実行中の画面更新に対する圧縮処理を中断した場合には、表示画面に欠落を生じさせないために、その後、この統合した画面更新に対して圧縮処理を行うことになる。なお、画面更新の具体的な統合の手順については詳細を後述する。
【0022】
送信部104は、圧縮部103により圧縮処理が行われた画面更新を、ネットワーク3経由でクライアント端末2に送信する送信処理を行う。具体的には、送信部104は、画像情報に対する変換部102の変換処理および圧縮部103の圧縮処理が終了した画面更新が圧縮部103から出力されると、この画面更新を、ネットワーク3上において伝送可能な形式に変換してクライアント端末2に対し送信する。
【0023】
送信部104は、任意のタイミングで、現在実行中の画面更新に対する送信処理を中断することが可能である。この場合、送信処理を中断した画面更新は、後に圧縮部103から出力された別の送信前の画面更新と統合して(マージして)、1個の画面更新として扱うことが可能である。送信部104は、現在実行中の画面更新に対する送信処理を中断した場合には、表示画面に欠落を生じさせないために、その後、この統合した画面更新に対して送信処理を行うことになる。なお、画面更新の具体的な結合の手順については詳細を後述する。
【0024】
上記の検出部101、変換部102、圧縮部103および送信部104は、互いに同期を取りながら、それぞれの処理を並列して実行することが可能である。すなわち、検出部101が最新の表示画面の更新領域を検出しているときに、変換部102が、1つ前に検出された更新領域の画面更新に対する変換処理を行い、圧縮部103が、2つ前に検出された更新領域の画面更新に対する変換処理を行い、送信部104が、3つ前に検出された更新領域の画面更新に対する送信処理を行うことが可能である。ただし、圧縮部103は、変換部102による変換処理が終了した画面更新に対してのみ圧縮処理を行うことができ、変換処理が終了していない画面更新に対して圧縮処理を行うことはできない。また、送信部104は、圧縮部103による圧縮処理が終了した画面更新に対してのみ送信処理を行うことができ、圧縮処理が終了していない画面更新に対して送信処理を行うことはできない。つまり、1つの画面更新は、変換部102による変換処理と、圧縮部103による圧縮処理と、送信部104による送信処理とがこの順番で順次施されてクライアント端末2に送信される。
【0025】
記憶部105は、検出部101が生成した画面更新に対する処理状態を表す情報を記憶する。具体的には、記憶部105は、画面更新に対して付与されたシーケンス番号と、そのシーケンス番号により識別される画面更新の領域情報と、その画面更新に対して現在どのような処理が行われているかの処理状態を記憶する。処理状態は、検出部101により生成された画面更新が変換部102による変換処理が行われるのを待機している状態であれば「検出処理」となる。また、処理状態は、画面更新に対して変換部102による変換処理を実行中、もしくは、変換処理が終了して圧縮部103による圧縮処理を待機している状態であれば「変換処理」となる。また、処理状態は、画面更新に対して圧縮部103による圧縮処理を実行中、もしくは、圧縮処理が終了して送信部104による送信処理を待機している状態であれば「圧縮処理」となる。また、処理状態は、画面更新に対して送信部104による送信処理の実行中であれば「送信処理」となり、送信処理が終了すると「完了」となる。
【0026】
推定部106は、検出部101により優先度の高い更新領域が検出された場合に、この優先度の高い更新領域の画面情報がクライアント端末2に送信されるまでの所要時間(以下、応答時間という。)を推定する。応答時間は、一般的にはクライアント端末2側での処理時間も含む概念であるが、本実施形態においては、クライアント端末2での処理時間(画面更新を受信してから表示までに要する時間)をゼロと近似し、サーバ端末1側での処理に要する時間を応答時間として扱う。
【0027】
ここで、サーバ端末1の変換部102、圧縮部103および送信部104の各処理部は、変換処理、圧縮処理、送信処理の各処理を実行する方式として、以下のような2つの処理方式(第1処理方式と第2処理方式)をとりうる。第1処理方式は、検出部101によって先に検出された更新領域(以下、第1更新領域という。)の画面更新に対する処理が終了した後に、この第1更新領域よりも後に検出された更新領域(以下、第2更新領域という。)の画面更新に対する処理を実行する処理方式である。一方、第2処理方式は、上述したように、実行中の第1更新領域の画面更新に対する処理を中断し、その後、第1更新領域と第2更新領域とをマージした更新領域の画面更新に対する処理を実行する処理方式である。
【0028】
第2処理方式は、第2更新領域として優先度の高い更新領域が検出された場合に、この第2更新領域に対する処理を効率的に実行するための処理方式である。ただし、第2処理方式による処理時間は、必ずしも第1処理方式による処理時間よりも短くなるとは限らない。つまり、第2処理方式による処理を実行する場合、第1更新領域の画面更新に対する処理を中断するが、上述したように、表示画面に欠落を生じさせないためには、その後、第1更新領域と第2更新領域とをマージした更新領域の画面更新に対する処理を実行する必要がある。このとき、第1更新領域と第2更新領域とをマージした更新領域の画面更新に対する処理を開始するには、前段の処理部が第2更新領域の画面更新に対する処理を終了するのを待たなければならない。このため、第1更新領域の画面更新および第2更新領域の画面更新のデータ量と、第1更新領域の画面更新に対する処理を中断するタイミングによっては、前段の処理部が第2更新領域の画面更新に対する処理を終了するのを待つ間に、第1更新領域の画面更新に対する処理を終了できる場合がある。この場合には、第2処理方式による処理時間よりも第1処理方式による処理時間の方が短くなる。
【0029】
以上のことから、優先度の高い更新領域が上記の第2更新領域であると考えた場合の応答時間は、変換部102と圧縮部103と送信部104の各処理部での処理方式の組み合わせごとに異なる値となる。つまり、変換部102が第1処理方式と第2処理方式のいずれの処理方式で処理を実行するか、圧縮部103が第1処理方式と第2処理方式のいずれの処理方式で処理を実行するか、送信部104が第1処理方式と第2処理方式のいずれの処理方式で処理を実行するかによって、それぞれ応答時間が異なる。したがって、推定部106は、サーバ端末1の変換部102、圧縮部103および送信部104の各処理部での処理方式の組み合わせごとに、それぞれ応答時間を推定する。なお、推定部105が応答時間を推定する方法の具体例については詳細を後述する。
【0030】
なお、本実施形態において、更新領域の優先度は、その更新領域の発生要因によって予め定められているものとする。例えば、クライアント端末2に入力された所定のユーザ操作(例えば、クライアント端末2の表示部203に表示されている表示画面上でのポインティングデバイスのクリックなど)に起因して発生する更新領域は、このようなユーザ操作以外の要因(例えば、所定の更新周期ごとに発生する定常的な更新)による更新領域よりも、優先度が高い。
【0031】
決定部107は、検出部101により優先度の高い更新領域が検出された場合に、推定部106が推定した応答時間、つまり、サーバ端末1の変換部102と圧縮部103と送信部104の各処理部での処理方式の組み合わせごとの応答時間に基づき、サーバ端末1の変換部102、圧縮部103および送信部104のそれぞれについて、第1処理方式により処理を実行するか、第2処理方式により処理を実行するかを決定する。
【0032】
具体的には、決定部107は、例えば、推定部106が推定した応答時間が最小となる組み合わせに従って、サーバ端末1の変換部102、圧縮部103および送信部104のそれぞれについて、第1処理方式により処理を実行するか、第2処理方式により処理を実行するかを決定する。ここで、推定部106が推定した応答時間が最小となる組み合わせが複数存在する場合には、決定部107は、これら複数の組み合わせのうち、第2処理方式により処理を行う処理部の個数(つまり、処理を中断する回数)が最小となる組み合わせに従って、サーバ端末1の変換部102、圧縮部103および送信部104のそれぞれについて、第1処理方式により処理を実行するか、第2処理方式により処理を実行するかを決定する。
【0033】
また、決定部107は、推定部106が推定した前記組み合わせごとの応答時間を予め定めた閾値と比較し、応答時間が閾値以下となる複数の組み合わせのうち、第2処理方式により処理を行う処理部の個数(つまり、処理を中断する回数)が最小となる組み合わせに従って、サーバ端末1の変換部102、圧縮部103および送信部104のそれぞれについて、第1処理方式により処理を実行するか、第2処理方式により処理を実行するかを決定するようにしてもよい。
【0034】
受信部108は、クライアント端末2に入力されたユーザ操作を表す入力情報を、クライアント端末2からネットワーク3を介して受信する。
【0035】
オペレーティングシステム109は、入出力機能、および、ディスクやメモリの管理機能など、多くのアプリケーションから共通して利用される基本的な機能や、デスクトップ環境を提供する。各機能は、APIを介して提供される。例えば、オペレーティングシステム109は、表示部100に表示する表示画面の画面情報を取得するためのAPI、キーボードやマウス等の入力操作を合成するAPI、および、現在時刻を取得するAPIなどを提供する。
【0036】
次に、クライアント端末2の構成について説明する。クライアント端末2は、図1に示すように、受信部201と、伸張部202と、表示部203と、取得部204と、送信部205と、を含む。
【0037】
受信部201は、ネットワーク3を介してサーバ端末1から画面更新を受信する。
【0038】
伸張部202は、受信部201が受信した画面更新に含まれる画像情報、つまりサーバ端末1の圧縮部103により圧縮された画像情報に対して、伸張処理を施す。
【0039】
表示部203は、画像情報に対して伸張処理が施された画面更新を伸張部202から取得して、最新の表示画面を表示しユーザに提示する。表示部203は、表示画面全体の画像情報を格納するための記憶領域(フレームバッファ)を有している。表示部203は、伸張部202から画面更新を受け取ると、この画面更新に含まれる領域情報が示すフレームバッファ上の画像情報を、画面更新に含まれる画像情報で上書き更新し、更新された画像情報に基づき、サーバ端末1の表示部100に表示された表示画面と同じ表示画面を表示する。
【0040】
取得部204は、ユーザがキーボードやポインティングデバイスなどを利用してクライアント端末2に入力したユーザ操作を受け付けて、このユーザ操作を表す入力情報を取得する。
【0041】
送信部205は、取得部204が取得したユーザ操作を表す入力情報を、ネットワーク3を介してサーバ端末1に送信する。
【0042】
次に、本実施形態にかかる画面転送システムの動作について、具体例を挙げながら詳細に説明する。本実施形態にかかる画面転送システムでは、上述したように、サーバ端末1とクライアント端末2とがネットワーク3を介して物理的に接続されている。本実施形態では、ネットワーク3はIP(Internet Protocol)ネットワークであるとする。
【0043】
以下では、始めにサーバ端末1の表示部100の表示画面の更新領域がクライアント端末2の表示部203の表示画面に反映される画面転送の標準的な一連の流れを説明する。次に、画面転送を実行している最中において、クライアント端末2のユーザによりポインティングデバイスのクリック操作が行われた状況を想定し、このユーザ操作を表す入力情報がサーバ端末1に送信され、このユーザ操作に対応した表示画面の更新がクライアント端末2の表示部203の表示画面に反映されるまでの流れを説明する。このようなユーザ操作に起因して表示画面の更新が発生した状況は、ユーザが反応を期待している可能性が高いと推察される。このため、このような表示画面の更新は、通常の表示画面の更新と比べて速やかにクライアント端末2に反映させる必要があると考えられる。そこで、本実施形態では、クライアント端末2に入力されたユーザ操作、中でもポインティングデバイスのクリック操作によって表示画面の更新が発生したときに(つまり、優先度の高い更新領域が検出されたときに)、サーバ端末1の変換部102、圧縮部103および送信部104の上述した処理方式を適切に決定することで、応答時間の最適化を図るようにしている。
【0044】
本実施形態にかかる画面転送システムにおいて、画面転送の実行が開始されると、サーバ端末1の検出部101は、定期的なタイミングで以下の更新領域の検出処理を繰り返し実行する。すなわち、検出部101は、更新領域の検出処理の始めに、表示部100に対して最新の表示画面の画像情報の取得を要求する。そして、検出部101は、取得した画像情報と自身のフレームバッファに格納されている画像情報とを比較し、表示画面全体の中で画像情報に差分のある部分を更新領域として検出して、この更新領域の画面情報である画面更新を生成する。画面更新は、上述したように、更新領域の位置を表す領域情報と、更新領域における更新後の画像情報とを含む。
【0045】
検出部101は、更新領域の検出および画面更新の生成が終了すると、自身のフレームバッファの内容を最新の画像情報により上書き更新する。さらに、検出部101は、生成した画面更新に対しシーケンス番号を付与する。シーケンス番号とは、画面更新の時間的順序を表す数値である。検出部101は、内部に最新のシーケンス番号を記憶するための記憶領域を有しており、画面転送の実行が開始された直後にこの記憶領域をゼロで初期化した後は、画面更新を生成するごとにシーケンス番号を付与し、かつ記憶した値を1インクリメントする。また、検出部101は、検出処理を開始した時刻を格納する記憶領域を有しており、検出処理を開始するごとに、その時刻(サーバ端末1が起動してから現在までの経過時間など)をオペレーティングシステム109から取得し、この記憶領域の内容を上書き更新する。
【0046】
次に、検出部101は、生成した画面更新の領域情報と、この画面更新に対して付与したシーケンス番号の組み合わせを記憶部105に出力し、記憶を依頼する。記憶部105は、検出部101から入力された情報を記憶する。
【0047】
図4は、記憶部105が記憶する情報の一例を示す図である。記憶部105は、上述したように、検出部101が生成した画面更新に付与されたシーケンス番号と、このシーケンス番号で識別される画面更新の領域情報と、このシーケンス番号で識別される画面更新に対して現在どのような処理が行われているかの処理状態を記憶する。検出部101からの依頼に応じて記憶部105に記憶される情報1001は、図4に示すように、処理状態が「検出処理」となる。
【0048】
次に、検出部101は、変換部102が新たな画面更新に対する処理を実行可能な状態であるか否かを次のように確認する。検出部101は、記憶部105に対して、処理状態が「変換処理」となっているエントリが存在するか否かを問い合わせる。記憶部105は、この問合せに対して、自身の記憶領域を参照し、処理状態が「変換処理」となっているエントリが存在するか否かを検出部101に回答する。ここで、処理状態が「変換処理」となっているエントリが存在していなければ、検出部101は、変換部102が新たな画面更新に対する処理を実行可能な状態であると判断する。そして、検出部101は、生成した画面更新とシーケンス番号との組み合わせを変換部102に出力し、この画面更新に対する変換処理の開始を依頼する。一方、処理状態が「変換処理」となっているエントリが存在していれば、検出部101は、変換部102が新たな画面更新に対する処理を実行可能な状態でないと判断する。この場合、検出部101は、変換部102が新たな画面更新に対する処理を実行可能な状態になるまで、生成した画面更新およびシーケンス番号の出力を行わずに待機する。検出部101は、変換部102に対する変換処理の開始依頼が終了すると、更新領域の検出処理を再び開始する。
【0049】
変換部102は、検出部101から画面更新とシーケンス番号の組み合わせを受け取ると、まず、記憶部105にシーケンス番号を通知し、当該シーケンス番号により識別される画面更新の処理状態を「検出処理」から「変換処理」に変更する。次に、変換部102は、検出部101から受け取った画面更新に含まれる画像情報に対して、変換処理を施す。本実施形態では、この変換部102による変換処理により、画像情報の表色系がRGBからYUVに変換されるものとする。
【0050】
画面更新に含まれる画像情報に対する変換処理が終了すると、変換部102は、次に、圧縮部103が新たな画面更新に対する処理を実行可能な状態であるか否かを次のように確認する。変換部102は、記憶部105に対して、処理状態が「圧縮処理」となっているエントリが存在するか否かを問い合わせる。記憶部105は、この問合せに対して、自身の記憶領域を参照し、処理状態が「圧縮処理」となっているエントリが存在するか否かを回答する。ここで、処理状態が「圧縮処理」となっているエントリが存在していなければ、変換部102は、圧縮部103が新たな画面更新に対する処理を実行可能な状態であると判断する。そして、変換部102は、変換処理が終了した画面更新とシーケンス番号の組み合わせを圧縮部103に出力し、この画面更新に対する圧縮処理の開始を依頼する。一方、処理状態が「圧縮処理」となっているエントリが存在していれば、変換部102は、圧縮部103が新たな画面更新に対する処理を実行可能な状態でないと判断する。この場合、変換部102は、圧縮部103が新たな画面更新に対する処理を実行可能な状態になるまで、変換処理が終了した画面更新およびシーケンス番号の出力を行わずに待機する。変換部102は、圧縮部103に対する圧縮処理の開始依頼が完了すると、次の画面更新に対する変換処理を実行可能な状態となる。
【0051】
圧縮部103は、変換部102から画面更新とシーケンス番号の組み合わせを受け取ると、まず、記憶部105にシーケンス番号を通知し、当該シーケンス番号により識別される画面更新の処理状態を「変換処理」から「圧縮処理」に変更する。次に、圧縮部103は、変換部102から受け取った画面更新に含まれる画像情報に対して、圧縮処理を施す。本実施形態では、この圧縮部103による圧縮方式として、ZLIBを用いるものとする。
【0052】
画面更新に含まれる画像情報に対する圧縮処理が終了すると、圧縮部103は、次に、送信部104が新たな画面更新に対する処理を実行可能な状態であるか否かを次のように確認する。圧縮部103は、記憶部105に対して、処理状態が「送信処理」となっているエントリが存在するか否かを問い合わせる。記憶部105は、この問合せに対して、自身の記憶領域を参照し、処理状態が「送信処理」となっているエントリが存在するか否かを回答する。ここで、処理状態が「送信処理」となっているエントリが存在していなければ、圧縮部103は、送信部104が新たな画面更新に対する処理を実行可能な状態であると判断する。そして、圧縮部103は、圧縮処理が終了した画面更新とシーケンス番号の組み合わせを送信部104に出力し、この画面更新に対する送信処理の開始を依頼する。一方、処理状態が「送信処理」となっているエントリが存在していれば、圧縮部103は、送信部104が新たな画面更新に対する処理を実行可能な状態でないと判断する。この場合、圧縮部103は、送信部104が新たな画面更新に対する処理を実行可能な状態になるまで、圧縮処理が終了した画面更新およびシーケンス番号の出力を行わずに待機する。圧縮部103は、送信部104に対する送信処理の開始依頼が完了すると、次の画面更新に対する圧縮処理を実行可能な状態となる。
【0053】
送信部104は、圧縮部103から画面更新とシーケンス番号の組み合わせを受け取ると、まず、記憶部105にシーケンス番号を通知し、当該シーケンス番号により識別される画面更新の処理状態を「圧縮処理」から「送信処理」に変更する。次に、送信部104は、圧縮部103から受け取った画面更新を、ネットワーク3経由でクライアント端末2に送信する処理を実行する。具体的には、送信部104は、圧縮部103から受け取った画面更新(シーケンス番号は除く)に対してTCP/IPの各ヘッダを付与した上で、この画面更新を、クライアント端末2に向けてネットワーク3へ送出する。そして、送信部104は、送信処理が終了したことを確認すると、記憶部105にシーケンス番号を通知し、当該シーケンス番号により識別される画面更新の処理状態を「送信処理」から「完了」に変更する。
【0054】
図5は、以上の検出部101、変換部102、圧縮部103および送信部104の各処理部による処理状態の一例を示す図である。図中の四角は、各処理部が処理を実行中であることを意味する。また、図中の数字は、各処理部が処理を実行している画面更新のシーケンス番号を意味する。この図5では、時間軸に沿って各処理部による処理が並列に進行される様子が示されている。
【0055】
クライアント端末2の受信部201は、サーバ端末1からネットワーク3を介して画面更新を受信すると、この画面更新に対して付与されたTCP/IPの各ヘッダを除去した上で、画面更新を伸張部202に出力する。
【0056】
伸張部202は、受信部201から画面更新を受け取ると、この画面更新に含まれる圧縮された画像情報の伸張処理を行う。そして、伸張部202は、伸張後の画像情報を含む画面更新を表示部203に出力する。
【0057】
表示部203は、伸張部202から画面更新を受け取ると、この画面更新に含まれる領域情報が示すフレームバッファ上の画像情報を、この画面更新に含まれる画像情報で上書き更新する。そして、表示部203は、フレームバッファ上の画像情報に基づいて表示画面を表示する。これにより、サーバ端末1と同じ表示画面が表示部203に表示され、ユーザに提示される。
【0058】
次に、クライアント端末2においてユーザ操作が発生したときの画面転送システムの動作について説明する。クライアント端末2においてユーザ操作がなされると、クライアント端末2の取得部204は、このユーザ操作を受け付けてユーザ操作を表す入力情報を取得する。ここでのユーザ操作とは、例えば、ポインティングデバイスの操作やキーボードの操作などである。取得部204は、取得した入力情報を送信部205に通知する。
【0059】
送信部205は、取得部204から受け取った入力情報に対してTCP/IPの各ヘッダを付与し、この入力情報をネットワーク3において伝送可能な形式に変換した後、サーバ端末1に向けてネットワーク3へ送出する。
【0060】
サーバ端末1の受信部108は、クライアント端末2からネットワーク3を介して入力情報を受信すると、この入力情報に対して付与されたTCP/IPの各ヘッダを除去した上で、得られた入力情報をオペレーティングシステム109に渡し、入力の反映を依頼する。さらに、受信部108は、入力情報が予め定めた所定のユーザ操作、例えば、ポインティングデバイスのクリック操作を表すものである場合に、決定部107に対して処理の開始を依頼する。
【0061】
なお、本実施形態では、クライアント端末2におけるポインティングデバイスのクリック操作を、決定部107の処理開始の契機としているが、必ずしもこれに限られるものではない。例えば、クライアント端末2におけるキーボードの押下操作を決定部107の処理開始の契機としてもよい。また、必ずしも入力情報に基づく必要もなく、例えば、任意または特定のアプリケーションのウィンドウが表示画面の最前面に移動したことを検出して、これを決定部107の処理開始の契機としてもよい。また、例えば、閾値以上の画素数を持つ更新領域が発生したことを検出し、これを決定部107の処理開始の契機としてもよい。
【0062】
ここで、サーバ端末1における決定部107および推定部106の処理の具体例について説明する。図6は、記憶部105が記憶する情報の一例を示す図であり、シーケンス番号が1から5の5つの画面更新についての情報1101〜1105が記憶部105に記憶されている様子を示している。図7は、これら5つの画面更新に対応する各更新領域1201〜1205の表示画面全体における位置を示す図である。図8は、これら画面更新に対して、サーバ端末1の検出部101、変換部102、圧縮部103および送信部104の各処理部による処理が時間軸に沿って進行する様子を示す図である。以下では、例として、記憶部105が図6に示す情報1101〜1105を記憶している状態にあり、図8のt1のタイミングにおいて、決定部107および推定部106が処理を開始するものとする。
【0063】
始めに、決定部107が、検出部101に対して、入力情報に基づいて発生する更新領域の検出処理を行うよう通知する。検出部101は、もしその時点で検出処理を実行中であればその処理を中断し、新たな更新領域を検出するための検出処理を開始する。検出部101による検出処理は、上述した通りである。すなわち、検出部101は、表示部100の表示画面の最新の画像情報と前回処理時の画像情報とを比較してその差分を更新領域として検出し、その更新領域の画面情報である画面更新を生成して、画面更新に対して付与したシーケンス番号と画面更新に含まれる領域情報とを記憶部105に記憶させる。また、検出部101は、入力情報に基づいて発生する更新領域の検出処理が終了すると、検出処理の終了を決定部107に通知する。
【0064】
また、検出部101は、入力情報に基づいて発生する更新領域に対する検出処理の開始時(時刻t1)と、入力情報に基づいて発生する更新領域に対する検出処理の終了時(t2)に、オペレーティングシステム109からそれぞれの時刻を取得し、その前の検出処理開始時(t0)との差を算出する。そして、検出部101は、算出した値(t1−t0とt2−t0)と、検出した更新領域の画面更新に付与したシーケンス番号とを、決定部107に通知する。
【0065】
図8の例では、t1のタイミングで検出部101が検出処理の実行中であるため、検出部101が実行中の検出処理を中断して、新たな更新領域を検出して画面更新を生成(シーケンス番号5の画面更新)する様子が示されている。検出部101が新たな更新領域の検出および画面更新の生成を終了した時刻はt2で示されている。ここでは、t1−t0=5ミリ秒、t2−t0=15ミリ秒であると仮定する。
【0066】
決定部107は、検出部101から通知されたシーケンス番号(シーケンス番号5)で識別される画面更新を、クライアント端末2におけるポインティングデバイスのクリック操作によって発生した更新領域の画面更新であると識別する。そのような状況では、クライアント端末2のユーザが、操作に対する反応を期待している可能性が高いと推察されるため、この画面更新をできるだけ速やかにクライアント端末2に反映させる必要がある。つまり、このようなユーザ操作により発生した表示画面の更新領域は、優先度が高い更新領域であるため、応答時間を短縮させて良好な応答性を実現することが望まれる。本実施形態では、決定部107が処理を開始したタイミングt1から、所定のユーザ操作に起因する画面更新(シーケンス番号5の画面更新)に対する送信部104の送信処理が終了するまでの時間を応答時間として扱う。
【0067】
なお、決定部107は、優先度の高い更新領域の画面更新に対する一連の処理、つまり変換部102による変換処理、圧縮部103による圧縮処理、および送信部104による送信処理が全て終了することを確認するまでの間に、受信部108から新たに処理開始の依頼を受け取った場合には、この新たな処理開始の依頼は無視することが望ましい。これにより、例えば、ユーザがクライアント端末2の表示画面上でポインティングデバイスのクリック操作を連続的に行った場合などに、処理の中断が連続的に発生して描画がストップするといった事態を未然に回避することができる。
【0068】
決定部107は、検出部101からの通知を受け取ると、変換部102、圧縮部103および送信部104のそれぞれについて、上述した第1処理方式により処理を実行するか、または、第2処理方式により処理を実行するかを決定するために、推定部106に対して応答時間を推定する処理の開始を依頼する。
【0069】
推定部106は、決定部107から処理開始の依頼を受け取ると、変換部102、圧縮部103および送信部104の各処理部が第1処理方式で処理を実行した場合と、第2処理方式で処理を実行した場合との組み合わせごとに、応答時間を推定する。この組み合わせは、変換部102:第1処理方式/第2処理方式、圧縮部103:第1処理方式/第2処理方式、送信部104:第1処理方式/第2処理方式、の計2×2×2=8通りの組み合わせとなる。推定部106は、これら8通りの組み合わせのそれぞれについて、応答時間を推定する。
【0070】
始めに、推定部106は、記憶部105から、処理状態が「完了」でない全てのエントリを読み出す。図6の例では、シーケンス番号2,3,4,5の画面更新が相当する。推定部106は、これらの画面更新に関する情報を記憶部105から読み出すと、次の各処理時間を推定する。
γ2:シーケンス番号2の画面更新に対する送信処理の処理時間(推定値)
β3:シーケンス番号3の画面更新に対する圧縮処理の処理時間(推定値)
γ3:シーケンス番号3の画面更新に対する送信処理の処理時間(推定値)
α4:シーケンス番号4の画面更新に対する変換処理の処理時間(推定値)
β4:シーケンス番号4の画面更新に対する圧縮処理の処理時間(推定値)
γ4:シーケンス番号4の画面更新に対する送信処理の処理時間(推定値)
α5:シーケンス番号5の画面更新に対する変換処理の処理時間(推定値)
β5:シーケンス番号5の画面更新に対する圧縮処理の処理時間(推定値)
γ5:シーケンス番号5の画面更新に対する送信処理の処理時間(推定値)
γ23:シーケンス番号2と3をマージした画面更新に対する送信処理の処理時間(推定値)
β34:シーケンス番号3と4をマージした画面更新に対する圧縮処理の処理時間(推定値)
γ34:シーケンス番号3と4をマージした画面更新に対する送信処理の処理時間(推定値)
α45:シーケンス番号4と5をマージした画面更新に対する変換処理の処理時間(推定値)
β45:シーケンス番号4と5をマージした画面更新に対する圧縮処理の処理時間(推定値)
γ45:シーケンス番号4と5をマージした画面更新に対する送信処理の処理時間(推定値)
β345:シーケンス番号3と4と5をマージした画面更新に対する圧縮処理の処理時間(推定値)
γ234:シーケンス番号2と3と4をマージした画面更新に対する送信処理の処理時間(推定値)
γ345:シーケンス番号3と4と5をマージした画面更新に対する送信処理の処理時間(推定値)
γ2345:シーケンス番号2と3と4と5をマージした画面更新に対する送信処理の処理時間(推定値)
【0071】
ここで、マージについて説明する。マージとは、2つの画面更新を統合して1つの画面更新に変換する手続きのことである。3つ以上の画面更新をマージする場合は、時間的に最も古い2つの画面更新を先にマージしてから、その次に古い画面更新を1つずつマージする。本実施形態では、圧縮処理を実行する前の画面更新どうしのマージと、圧縮処理を実行した後の画面更新どうしのマージとで、変換の方法が異なる。
【0072】
圧縮処理を実行する前の画面更新どうしをマージする場合、マージ後の画面更新の領域情報は、マージ前の2つの画面更新の領域情報の和集合である。マージ後の画面更新の画像情報は、マージ後の画面更新の領域情報に対応したマージ前の2つの画面更新の画像情報(ビットマップデータ)である。ただし、マージ前の2つの画面更新の領域情報に重なりがある場合、その重なる領域については、シーケンス番号が新しい画面更新の画像情報だけを残すようにする。
【0073】
図9は、圧縮処理を実行する前の画面更新どうしのマージを説明する図である。図9の例は、画面更新1301と画面更新1302とをマージして1つの画面更新1303とする例である。マージ後の画面更新1303の領域情報は、重なりのない3つの矩形領域の情報(Left,Top,Right,Bottom)=(150,150,250,200),(150,200,200,250),(200,200,300,300)である。また、マージ後の画面更新1303の画像情報は、各矩形領域に対応する新しい側の画像情報である。つまり(Left,Top,Right,Bottom)=(150,150,250,200),(150,200,200,250)に相当する矩形領域については、マージ前の画面更新1301のビットマップデータを使用し、(Left,Top,Right,Bottom)=(200,200,300,300)に相当する矩形領域については、マージ前の画面更新1302のビットマップデータを使用して、マージ後の画面更新1303を生成する。
【0074】
圧縮処理を実行した後の画面更新どうしをマージする場合、マージ後の画面更新の領域情報は、マージ前の2つの画面更新のうち、新しい画面更新が古い画面更新を完全に包含していれば、新しい画面更新の領域情報と等しい。一方、新しい画面更新が古い画面更新を完全に包含していなければ、2つの画面更新の領域情報の単純な組み合わせに等しい。
【0075】
図10および図11は、圧縮処理を実行した後の画面更新どうしのマージを説明する図である。図10の例では、新しい画面更新1402が、古い画面更新1401を完全に包含している。このため、マージ後の画面更新1403の領域情報は、新しい画面更新1402の領域情報に等しく、(Left,Top,Right,Bottom)=(200,200,350,350)となる。一方、図11の例では、新しい画面更新1502は、古い画面更新1501を包含していない。このため、マージ後の画面更新1503,1504の領域情報は、両方の単純な組み合わせ(Left,Top,Right,Bottom)=(150,150,250,250),(200,200,350,350)となる。
【0076】
推定部106が推定する上記の各処理時間のうち、α、βの各値は、処理対象とする画面更新の画素数に比例するものとして算出する。すなわち、推定部106は、変換部102による変換処理について、単位画素あたりの平均処理時間(ミリ秒/画素)の情報と、圧縮部103による圧縮処理について、単位画素あたりの平均処理時間(ミリ秒/画素)の情報とを保持している。推定部106は、処理対象とする画面更新の画素数にこれらの値を乗じ、得られた値を変換処理の処理時間および圧縮処理の処理時間の推定値とする。本実施形態では、変換部102による単位画素あたりの平均処理時間と、圧縮部103による単位画素あたりの平均処理時間とが、いずれも0.002(ミリ秒/画素)であるものとする。なお、これら平均処理時間の値は固定値でなくてもよく、例えば、変換部102と圧縮部103の実際の処理時間を定期的に計測し、その計測値に基づいて、推定部106が保持する平均処理時間の情報を定期的に更新するようにしてもよい。
【0077】
例えば、α4(シーケンス番号4の画面更新に対する変換処理の処理時間)は、次のように求められる。シーケンス番号4の画面更新の画素数が(300−200)×(300−200)=100×100=10000画素であるので、これに0.002を乗じた20ミリ秒がα4として求められる。
【0078】
また、例えばβ5(シーケンス番号5の画面更新に対する圧縮処理の処理時間)は、シーケンス番号5の画面更新の画素数が(350−200)×(350−200)=150×150=22500画素であるので、これに0.002を乗じた45ミリ秒がβ5として求められる。
【0079】
また、例えばβ34(シーケンス番号3と4をマージした画面更新に対する圧縮処理の処理時間)は、次のように求められる。マージ後の画面更新の領域情報は、図9に示したように3つの矩形領域の情報となる。したがって、このマージ後の画面更新の画素数は(250−150)×(200−150)+(200−150)×(250−200)+(300−200)×(300−200)=100×50+50×50+100×100=5000+2500+10000=17500画素であるので、これに0.002を乗じた35ミリ秒がβ34として求められる。
【0080】
また、例えばβ345(シーケンス番号3と4と5をマージした画面更新に対する圧縮処理の処理時間)は、次のように求められる。まず、シーケンス番号3と4をマージした画面更新を算出し、さらにそこにシーケンス番号5の画面更新をマージする。シーケンス番号3と4をマージした画面更新の領域情報は、図9に示したように3つの矩形領域の情報となる。図13は、シーケンス番号3と4をマージした画面更新1601に対して、さらにシーケンス番号5の画面更新1602をマージする様子を示している。この図13に示すように、シーケンス番号3と4と5をマージした画面更新1603の領域情報は、3つの矩形領域の情報となり、このマージ後の画面更新1603の画素数は(250−150)×(200−150)+(200−150)×(250−200)+(350−200)×(350−200)=100×50+50×50+150×150=5000+2500+22500=30000画素であるので、これに0.002を乗じた60ミリ秒がβ345として求められる。
【0081】
また、γの各値についても、処理対象とする画面更新の画素数に比例するものとして算出することができる。すなわち、推定部106は、送信部104による変換処理について、単位画素あたりの平均処理時間(ミリ秒/画素)の情報を保持している。推定部106は、処理対象とする画面更新の画素数にこの値を乗じ、得られた値を送信処理の処理時間の推定値とする。本実施形態では、送信部104による単位画素あたりの平均処理時間が0.003(ミリ秒/画素)であるものとする。なお、この送信部104の平均処理時間の値は固定値でなくてもよく、例えば、送信部104の実際の処理時間を定期的に計測し、その計測値に基づいて、推定部106が保持する平均処理時間の情報を定期的に更新するようにしてもよい。また、例えば、送信部104が画面更新の送信処理に使用する通信路の状態、つまり、画面更新を送出するネットワーク3の状態を測定する測定部を設け、この測定部により測定されたネットワーク3の状態と、送信部104が処理対象とする画面更新の画素数とに基づいて、上記のγの各値を算出するようにしてもよい。ここで、ネットワーク3の状態とは、例えば、ネットワーク3の利用可能帯域や、RTT(Round Trip Times)などである。これらネットワーク3の状態を測定部で測定する場合、測定により得られる値(ビット/ミリ秒)で処理対象とする画面更新の画素数を除することにより、上記のγの各値を算出することができる。
【0082】
例えば、γ3(シーケンス番号3の画面更新に対する送信処理の処理時間)は、次のように求められる。シーケンス番号3の画面更新の画素数は(250−150)×(250−150)=100×100=10000画素であるので、これに0.003を乗じた30ミリ秒がγ3として求められる。
【0083】
また、例えばγ34(シーケンス番号3と4をマージした画面更新に対する送信処理の処理時間)は、次のように求められる。マージ後の画面更新の領域情報は、図11に示したように、マージ前の2つの画面更新の領域情報の単純な組み合わせとなる。したがって、このマージ後の画面更新の画素数は(250−150)×(250−150)+(300−200)×(300−200)=100×100+100×100=10000+10000=20000画素であるので、これに0.003を乗じた60ミリ秒がγ34として求められる。
【0084】
また、例えばγ45(シーケンス番号4と5をマージした画面更新に対する送信処理の処理時間)は、次のように求められる。マージ後の画面更新の領域情報は、図10に示したように、シーケンス番号5の画面更新の領域情報と等しくなる。したがって、このマージ後の画面更新の画素数は(350−200)×(350−200)=150×150=22500画素であるので、これに0.003を乗じた67.5ミリ秒がγ45として求められる。
【0085】
同様にして、各処理時間の推定値は、以下のように求められる。
γ2=30ミリ秒
β3=20ミリ秒
γ3=30ミリ秒
α4=20ミリ秒
β4=20ミリ秒
γ4=30ミリ秒
α5=45ミリ秒
β5=45ミリ秒
γ5=67.5ミリ秒
γ23=60ミリ秒
β34=35ミリ秒
γ34=60ミリ秒
α45=45ミリ秒
β45=45ミリ秒
γ45=67.5ミリ秒
β345=60ミリ秒
γ234=90ミリ秒
γ345=127.5ミリ秒
γ2345=157.5ミリ秒
【0086】
推定部106は、以上のように算出した各処理時間の推定値に基づいて、変換部102、圧縮部103および送信部104の各処理部が、上述した第1処理方式で処理を実行した場合と、第2処理方式で処理を実行した場合との組み合わせごとに、応答時間を推定する。
【0087】
図8に示した例では、時刻t2において、変換部102がシーケンス番号4の画面更新に対する変換処理を実行中であり、圧縮部103がシーケンス番号3の画面更新に対する圧縮処理を実行中であり、送信部104がシーケンス番号2の画面更新に対する送信処理を実行中である。ここで、変換部102は、第1処理方式で処理を実行する場合には、シーケンス番号4の画面更新に対する変換処理が終了した後に、シーケンス番号5の画面更新に対する変換処理を実行する。また、変換部102は、第2処理方式で処理を実行する場合には、シーケンス番号4の画面更新に対する変換処理を中断し、シーケンス番号4と5をマージした画面更新に対する変換処理を実行する。また、圧縮部103は、第1処理方式で処理を実行する場合には、シーケンス番号3の画面更新に対する圧縮処理が終了した後に、変換部102による変換処理が終了した画面更新に対する圧縮処理を実行する。また、圧縮部103は、第2処理方式で処理を実行する場合には、シーケンス番号3の画面更新に対する変換処理を中断し、シーケンス番号3の画面更新と変換部102による変換処理が終了した画面更新をマージした画面更新に対する変換処理を実行する。また、送信部104は、第1処理方式で処理を実行する場合には、シーケンス番号2の画面更新に対する送信処理が終了した後に、圧縮部103による圧縮処理が終了した画面更新に対する送信処理を実行する。また、送信部104は、第2処理方式で処理を実行する場合には、シーケンス番号2の画面更新に対する送信処理を中断し、シーケンス番号2の画面更新と圧縮部103による圧縮処理が終了した画面更新をマージした画面更新に対する送信処理を実行する。
【0088】
変換部102、圧縮部103および送信部104の各処理部が、第1処理方式で処理を実行した場合と、第2処理方式で処理を実行した場合との組み合わせは、上述したように、変換部102:第1処理方式/第2処理方式、圧縮部103:第1処理方式/第2処理方式、送信部104:第1処理方式/第2処理方式、の計2×2×2=8通りの組み合わせとなる。推定部106は、これら8通りの組み合わせのそれぞれについて、上記の各処理時間の推定値を用いて、以下の8通りの応答時間、すなわちシーケンス番号5の画面更新(ユーザ操作により発生した更新領域の画面更新)に対する送信処理が終了するまでの所要時間の推定値RA〜RHを算出する。
RA=変換部102:第1処理方式、圧縮部103:第1処理方式、送信部104:第1処理方式
RB=変換部102:第1処理方式、圧縮部103:第1処理方式、送信部104:第2処理方式
RC=変換部102:第1処理方式、圧縮部103:第2処理方式、送信部104:第1処理方式
RD=変換部102:第1処理方式、圧縮部103:第2処理方式、送信部104:第2処理方式
RE=変換部102:第2処理方式、圧縮部103:第1処理方式、送信部104:第1処理方式
RF=変換部102:第2処理方式、圧縮部103:第1処理方式、送信部104:第2処理方式
RG=変換部102:第2処理方式、圧縮部103:第2処理方式、送信部104:第1処理方式
RH=変換部102:第2処理方式、圧縮部103:第2処理方式、送信部104:第2処理方式
【0089】
RHは、変換部102、圧縮部103および送信部104の全てが第2処理方式により処理を実行するときの応答時間の推定値である。図12は、このときの検出部101、変換部102、圧縮部103および送信部104の各処理部による処理が時間軸に沿って進行する様子を示す図である。この図12の例では、時刻t2で、変換部102、圧縮部103および送信部104の全てが実行中の処理を中断する。このとき、変換部102は変換処理を中断したシーケンス番号4の画面更新を保持し、圧縮部103は圧縮処理を中断したシーケンス番号3の画面更新を保持し、送信部104は送信処理を中断したシーケンス番号2の画面更新を保持する。
【0090】
この場合、変換部102は、変換処理を中断したシーケンス番号4の画面更新と、検出部101から新たに出力されたシーケンス番号5の画面更新とをマージし、マージした画面更新に対して変換処理を実行する。この変換処理に要する処理時間はα45である。その後、変換部102による変換処理が終了すると、圧縮部103が、圧縮処理を中断したシーケンス番号3の画面更新と、変換部102による変換処理が終了した画面更新とをマージし、マージした画面更新に対して圧縮処理を実行する。この圧縮処理に要する処理時間はβ345である。最後に、送信部104が、送信処理を中断したシーケンス番号2の画面更新と、圧縮部103による圧縮処理が終了した画面更新とをマージし、マージした画面更新に対して送信処理を実行する。この送信処理に要する処理時間はγ2345である。RH(図12中のt1とt5の差)は、これらの処理時間の総和として求められる。すなわち、RH=α45+β345+γ2345=45+60+157.5=262.5ミリ秒と算出される。
【0091】
REは、変換部102のみが第2処理方式による処理を実行し、圧縮部103および送信部は第1処理方式による処理を実行するときの応答時間の推定値である。図14は、このときの検出部101、変換部102、圧縮部103および送信部104の各処理部による処理が時間軸に沿って進行する様子を示す図である。この図14の例では、時刻t2で、変換部102のみが実行中の処理を中断する。このとき、変換部102は変換処理を中断したシーケンス番号4の画面更新を保持する。
【0092】
この場合、変換部102は、変換処理を中断したシーケンス番号4の画面更新と、検出部101から新たに出力されたシーケンス番号5の画面更新とをマージし、マージした画面更新に対して変換処理を実行する。この変換処理に要する処理時間はα45である。このとき、圧縮部103は、シーケンス番号3の画面更新に対する圧縮処理を中断することなく実行し、送信部104は、シーケンス番号2の画面更新に対する圧縮処理を中断することなく実行する。このときの圧縮処理に要する処理時間はβ3であり、送信処理に要する処理時間はγ2である。また、圧縮部103により圧縮処理が施されたシーケンス番号3の画面更新は、送信部104がシーケンス番号2の画面更新に対する送信処理を終了した段階で送信部104に出力される。送信部104は、シーケンス番号2の画面更新に対する送信処理を終了した後、シーケンス番号3の画面更新に対する送信処理を実行する。このときの送信処理に要する処理時間はγ3である。
【0093】
シーケンス番号4と5をマージした画面更新に対して、変換部102による変換処理が終了すると、圧縮部103が、この画面更新に対して圧縮処理を実行する。この圧縮処理に要する処理時間はβ45である。また、この画面更新に対する圧縮部103の圧縮処理が終了すると、送信部104が、この画面更新に対して送信処理を実行する。この送信処理に要する処理時間はγ45である。RE(図14中のt1とt5の差)は、これらの処理時間の大小に基づいて決定され、一般には、RE=Max(Max(t2−t0+α45,β3,γ2)+β45,Max(β3,γ2)+γ3)+γ45−(t1−t0)と書き下せる。よってこの場合は、RE=Max(Max(15+45,20,30)+45,Max(20,30)+30)+67.5−5=167.5ミリ秒と算出される。
【0094】
RAは、変換部102、圧縮部103および送信部104の全てが第1処理方式により処理を実行するときの応答時間の推定値である。図15は、このときの検出部101、変換部102、圧縮部103および送信部104の各処理部による処理が時間軸に沿って進行する様子を示す図である。この図15の例では、変換部102、圧縮部103および送信部104の各処理部は、実行中の処理を中断せず、したがって、画面更新のマージは一切行われない。この場合、各処理部は、実行中の処理が終了すれば次の処理部が処理可能状態となるまで待機し、次の処理部が処理可能状態となったら、処理が終了した画面更新を渡すという手続きを繰り返す。RA(図中のt1とt6の差)は、各処理部でそれぞれ実行される処理に要する処理時間の大小に基づいて決定され、一般には、RA=Max(Max(Max(α4,β3,γ2)+α5,Max(α4,β3,γ2)+β4,Max(β3,γ2)+γ3)+β5,Max(Max(α4,β3,γ2)+β4,Max(β3,γ2)+γ3)+γ4)+γ5−(t1−t0)と書き下せる。よってこの場合は、RA=Max(Max(Max(20,20,30)+45,Max(20,20,30)+20,Max(20,30)+30)+45,Max(Max(20,20,30)+20,Max(20,30)+30)+30)+67.5−5=182.5ミリ秒と算出される。
【0095】
同様にして、他の応答時間の推定値は、それぞれ次のように求められる。
RB=Max(Max(Max(α4,β3)+α5,Max(α4,β3)+β4,β3+γ23)+β5,Max(Max(α4,β3)+β4,β3+γ23)+γ4)+γ5−(t1−t0)=187.5ミリ秒
RC=Max(Max(α4+α5,α4+β34,γ2)+β5,Max(α4+β34,γ2)+γ34)+γ5−(t1−t0)=177.5ミリ秒
RD=Max(Max(α4+α5,α4+β34)+β5,α4+β34+γ234)+γ5−(t1−t0)=207.5ミリ秒
RF=Max(Max(t2−t0+α45,β3)+β45,β3+γ23)+γ45−(t1−t0)=167.5ミリ秒
RG=Max(t2−t0+α45+β345,γ2)+γ345−(t1−t0)=242.5ミリ秒
【0096】
推定部106は、以上のようにして各処理部の処理方式の組み合わせごとの応答時間の推定値RA〜RHを算出すると、その組み合わせごとの応答時間の推定値RA〜RHを決定部107に出力し、各処理部の処理方式の決定を依頼する。決定部107は、推定部106から受け取った各処理部の処理方式の組み合わせごとの応答時間の推定値RA〜RHに基づいて、各処理部それぞれについて、第1処理方式により処理を実行するか、第2処理方式により処理を実行するかを決定する。
【0097】
ここで、決定部107が各処理部の処理方式を決定する基準としては、例えば、各処理部の処理方式の組み合わせのうち、応答時間の推定値が最小となる組み合わせに従って、各処理部の処理方式を決定することが考えられる。この場合、応答時間の推定値が最小となる組み合わせが複数存在する場合は、第2処理方式により処理を実行する処理部の個数(つまり、実行中の処理を中断する回数)が最小となる組み合わせを選択すればよい。例えば、上述した例においては、REとRFの値がいずれも167.5ミリ秒で最小である。また、中断の回数はREが1回、RFが2回である。したがって、上記の基準を採用した場合、決定部107は、REの組み合わせに従って、変換部102は第2処理方式により処理を実行し、圧縮部103は第1処理方式により処理を実行し、送信部104は第1処理方式により処理を実行すると決定する。
【0098】
また、決定部107が各処理部の処理方式を決定する基準としては、例えば、応答時間の推定値が予め定めた閾値以下となる組み合わせのうち、第2処理方式により処理を実行する処理部の個数(つまり、実行中の処理を中断する回数)が最小となる組み合わせに従って、各処理部の処理方式を決定することが考えられる。例えば、閾値が200ミリ秒と定められている場合、上述した例においては、RA、RB、RC、RE、RFの5つが、それぞれ閾値以下となる。そして、中断の回数はRAが0回、RBが1回、RCが1回、REが1回、RFが2回である。したがって、上記の基準を採用した場合、決定部107は、RAの組み合わせに従って、変換部102、圧縮部103および送信部104の全てが第1処理方式により処理を実行すると決定する。
【0099】
決定部107が以上のような基準により、各処理部の処理方式を決定するようにすれば、応答時間が小さくなる処理方式の組み合わせを採用することで応答性の向上が図られるだけでなく、中断の回数が小さくなる組み合わせを優先的に採用することで、クライアント端末2へ送信される画面更新の数を最大化し、つまりは描画コマ数(フレームレート)の低下を最小限に抑えるという効果が見込める。
【0100】
なお、本実施形態では、上記のRA〜RHの全ての応答時間の推定値を算出しているが、必ずしも毎回全ての応答時間の推定値を算出する必要はない。例えば、推定部106が上記のRA〜RHの過去の複数回の算出結果を記憶しておき、結果の悪かった(応答時間が大きかった)組み合わせについては、その後、予め定めた所定期間の間、応答時間の推定値を算出する対象から除外するようにしてもよい。
【0101】
また、決定部107は、各処理部の処理方式についての決定結果を、予め定めた所定期間の間保持し、この期間内に新たなユーザ操作に基づく優先度の高い更新領域が検出された場合には、その保持した決定結果を再利用するようにしてもよい。すなわち、一度算出した組み合わせごとの応答時間は当面の間は同じ傾向が持続することが予期されるため、このような応答時間に基づく各処理部の処理方式の決定結果は、所定期間の間は再利用できると考えられる。このような決定結果の再利用を行うことで、応答時間の推定値の精度を維持しつつ、処理演算の負荷を削減することが可能となる。
【0102】
また、決定部107は、各処理部の処理方式についての決定結果を保持する際に、処理対象となる画面更新が属するアプリケーションの種類と決定結果との組み合わせを辞書として記憶し、新たなユーザ操作に基づく優先度の高い更新領域が検出された場合に、記憶した辞書を参照することで決定結果を再利用するようにしてもよい。この場合、同一のアプリケーションから発生する画面更新に対する処理時間は同じ傾向となることが予期されるため、処理時間の推定値の精度を確保することができる。
【0103】
なお、本実施形態では、推定部106が、各処理部での処理の中断に要する時間をゼロと近似して応答時間を推定しているが、処理の中断に要する時間を加味して応答時間を推定するようにしてもよい。すなわち、RA〜RHの各応答時間の評価式に対して、中断を行う場合に定数時間もしくは画面更新の画素数等に依存した中断処理時間を加算することができる。また、本実施形態では、推定部106が、マージ処理に要する時間をゼロと近似して応答時間を推定しているが、マージ処理に要する時間を加味して応答時間を推定するようにしてもよい。すなわち、上記のα,β,γやRA〜RHの各応答時間の評価式に対して、マージを行う場合に定数時間もしくは画面更新の画素数等に依存したマージ処理時間を加算することができる。
【0104】
決定部107は、以上のようにして各処理部における処理方式を決定すると、変換部102、圧縮部103および送信部104のうち、第2処理方式により処理を実行すると決定した処理部に対して、処理の中断の依頼を行う。上述した例において、REの組み合わせに従って各処理部の処理方式を決定した場合には、決定部107は、変換部102に対してのみ処理の中断の依頼を行う。この場合、中断の依頼を受けた変換部102は、実行中のシーケンス番号4の画面更新に対する変換処理を中断し、このシーケンス番号4の画面更新を、変換処理を開始する前の状態のままで保持する。さらに、変換部102は、記憶部105に対して変換処理を中断した画面更新のシーケンス番号4を通知し、当該エントリの処理状態を「中断」に変更する。
【0105】
以降の処理の流れは、図14を用いて説明した通りである。すなわち、検出部101は、記憶部105において処理状態が「変換処理」となるエントリが存在しないため、変換部102が処理可能な状態であると判断する。そして、検出部101は、シーケンス番号5の画面更新を変換部102に出力して、変換処理の開始を依頼する。変換部102は、これを受けて、先ほど処理を中断したシーケンス番号4の画面更新と、検出部101から受け取ったシーケンス番号5の画面更新とのマージを行い、マージ後の画面更新に対して変換処理を行う。
【0106】
その後、変換部102での変換処理が終了した時点(時刻t3)では、記憶部105において処理状態が「圧縮処理」となるエントリは存在しない。このため、変換部102は、圧縮部103が処理可能な状態であると判断し、変換処理が終了した画面更新を圧縮部103に出力して、圧縮処理を依頼する。圧縮部103は、これを受けて、変換部102から出力された画面更新に対する圧縮処理を行う。さらに、圧縮部103での圧縮処理が終了した時点(時刻t4)では、記憶部105において処理状態が「送信処理」となるエントリは存在しない。このため、圧縮部103は、送信部104が処理可能な状態であると判断し、圧縮処理が終了した画面更新を送信部104に出力して、送信処理を依頼する。送信部104は、これを受けて、圧縮部103から出力された画面更新に対する送信処理を行う。そして、送信部104は、圧縮部103から出力された画面更新に対する送信処理が終了すると、この画面更新のシーケンス番号を決定部107に通知する。これにより、決定部107は、ユーザ操作により発生した画面更新をクライアント端末2に送信する処理が完了したことを認識する。
【0107】
以上のように、本実施形態にかかる画面転送システムでは、クライアント端末2におけるポインティングデバイスのクリック操作など、所定のユーザ操作に基づいて優先度の高い更新領域が発生した場合に、サーバ端末1の推定部106が、変換部102、圧縮部103および送信部104の各処理部における処理方式(第1処理方式または第2処理方式)の組み合わせごとに応答時間を推定し、決定部107が、推定部106が推定した組み合わせごとの応答時間に基づいて、変換部102、圧縮部103および送信部104の各処理部における処理方式を決定するようにしている。したがって、表示画面の画質の劣化等を伴うことなく、ユーザ操作に応じた画面更新をクライアント端末2にすみやかに反映させることができ、良好な応答性を実現することができる。
【0108】
また、本実施形態にかかる画面転送システムでは、サーバ端末1の変換部102、圧縮部103および送信部104の各処理部が処理を中断する場合に、その後、処理を中断した画面更新とそれに続く画面更新とをマージし、マージした画面更新に対する処理を行うようにしているので、各画面更新の時間的連続性を維持して、クライアント端末2の表示画面に画像の欠落が生じることを抑制することができ、ユーザの視認性を高めることができる。
【0109】
以上説明したとおり、本実施形態によれば、良好な応答性を実現することができる。
【0110】
本実施形態にかかる画面転送システムにおいて、サーバ端末1の上述した各機能は、例えば、サーバ端末1において所定のプログラムを実行することにより実現できる。このときのサーバ端末1のハードウェア構成について、図16を用いて説明する。図16は、本実施形態にかかるサーバ端末1のハードウェア構成例を示す説明図である。
【0111】
本実施形態にかかるサーバ端末1は、CPU(Central Processing Unit)51などの制御装置と、ROM(Read Only Memory)52やRAM(Random Access Memory)53などの記憶装置と、ネットワークに接続して通信を行う通信I/F54と、HDD(Hard Disk Drive)、CD(Compact Disc)ドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置と、各部を接続するバス61を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【0112】
本実施形態にかかるサーバ端末1で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM(Compact Disk Read Only Memory)、フレキシブルディスク(FD)、CD−R(Compact Disk Recordable)、DVD(Digital Versatile Disc)等のコンピュータで読み取り可能な記録媒体に記録されてコンピュータプログラムプロダクトとして提供される。
【0113】
また、本実施形態にかかるサーバ端末1で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、本実施形態にかかるサーバ端末1で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【0114】
また、本実施形態にかかるサーバ端末1で実行されるプログラムを、サーバ端末1のROM52等に予め組み込んで提供するように構成してもよい。
【0115】
本実施形態にかかるサーバ端末1で実行されるプログラムは、サーバ端末1の各処理部(検出部101、変換部102、圧縮部103、送信部104、推定部106および決定部107など)を含むモジュール構成となっており、実際のハードウェアとしては、例えば、CPU51(プロセッサ)が上記記憶媒体からプログラムを読み出して実行することにより、上記各部が主記憶装置上にロードされ、上述した各部が主記憶装置上に生成されるようになっている。
【0116】
以上、本発明の実施形態を説明したが、ここで説明した実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。ここで説明した新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。ここで説明した実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0117】
1 サーバ端末
2 クライアント端末
101 検出部
102 変換部
103 圧縮部
104 送信部
106 推定部
107 決定部
【技術分野】
【0001】
本発明の実施の形態は、情報処理装置およびプログラムに関する。
【背景技術】
【0002】
ネットワークを介して接続されたサーバ端末からクライアント端末に対して、サーバ端末の表示画面の情報をパケット化してリアルタイムで配信する画面転送システムが知られている。このような画面転送システムは、ユーザが遠隔のサーバ端末の表示画面の情報を手元の端末で表示し参照できるようになることから、例えば遠隔監視システムなど、様々な用途での応用が期待される。
【0003】
画面転送システムにおいて、サーバ端末からクライアント端末に表示画面の情報を送信する方法としては、サーバ端末が保持する表示画面の全領域の画像情報を一定時間おきにパケット化してクライアント端末に向けて送信する方法と、サーバ端末が保持する表示画面において描画状態に変化が生じるごとに、その差分となる情報、つまり描画状態が変化した領域(以下、更新領域という。)の画像情報のみを、更新領域の位置を表す領域情報とともにクライアント端末に向けて送信する方法が存在する。後者の方法では、描画状態の変化に応じて必要な部分のみのデータ転送が行われるため、前者の方法と比較して、ネットワーク帯域を効率的に利用することができる。また、後者の方法では、単位時間当たりの描画コマ数を大きくできるなどといった利点がある。このため、一般には後者の方法によるサービスが提供されることが多い。
【0004】
後者の方法で画面転送を行う画面転送システムでは、サーバ端末が表示画面の更新領域を検出する処理を随時行って、検出した更新領域の画像情報と領域情報(以下、これらの情報を合わせて画面情報という。)をクライアント端末に送信する。また、サーバ端末は、クライアント端末でなされたユーザ操作の情報をクライアント端末から受信し、ユーザ操作が表示画面の描画状態を変化させるものである場合、描画状態が変化した更新領域の画面情報をクライアント端末に送信する。このとき、サーバ端末では、表示画面の更新領域を検出する処理、検出した更新領域の画面情報を圧縮する処理、圧縮された画面情報を送信する処理などの一連の処理が順次実行される。これらサーバ端末で実行される一連の処理は、それぞれが独立した処理であるため、各処理に異なるスレッドを割り当てて、同期を取りながら並列してこれら複数の処理を実行することが可能である。
【0005】
ところで、上記のような画面転送システムでは、良好な応答性を実現することが求められている。応答性とは、例えば、クライアント端末の表示画面上でマウスなどのポインティングデバイスをクリックする操作など、所定のユーザ操作がなされてから、その操作に対応するサーバ端末上の画面変化がクライアント端末に反映されるまでの時間(応答時間)に関する画面転送の品質である。応答性が十分でない(つまり、応答時間が長い)と、ユーザは操作の結果を確認するまで待機しなければならず、作業効率が著しく低下したり、誤操作を引き起こしたりといった弊害が生じる。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2009−159288号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明が解決しようとする課題は、良好な応答性を実現することができる情報処理装置およびプログラムを提供することである。
【課題を解決するための手段】
【0008】
実施形態の情報処理装置は、外部装置が表示する表示画面の画面情報を前記外部装置に送信する情報処理装置である。この情報処理装置は、検出部と、第1処理部と、第2処理部と、推定部と、決定部と、を備える。検出部は、前記表示画面の更新領域を検出する。第1処理部は、検出された更新領域の画面情報に対して第1処理を実行する処理部であって、第1更新領域の画面情報に対する処理が終了した後に、前記第1更新領域よりも後に検出された第2更新領域の画面情報に対する処理を実行する第1処理方式と、前記第1更新領域の画面情報に対する処理を中断して、前記第1更新領域と前記第2更新領域とを統合した更新領域の画面情報に対する処理を実行する第2処理方式とのいずれかの処理方式により前記第1処理を実行する。第2処理部は、前記第1処理が終了した更新領域の画面情報に対して第2処理を実行する処理部であって、前記第1処理方式と前記第2処理方式とのいずれかの処理方式により前記第2処理を実行する。推定部は、前記第1処理部の処理方式と前記第2処理部の処理方式との組み合わせごとに、前記第2更新領域の画面情報が前記外部装置に送信されるまでの所要時間を推定する。決定部は、推定された前記組み合わせごとの前記所要時間に基づいて、前記第1処理部と前記第2処理部のそれぞれについて、前記第1処理方式により処理を実行するか、または前記第2処理方式により処理を実行するかを決定する。
【図面の簡単な説明】
【0009】
【図1】実施形態の画面転送システムの構成図。
【図2】画面更新のデータ構造の一例を示す図。
【図3】更新領域の一例を説明するための図。
【図4】サーバ端末の記憶部が記憶する情報の一例を示す図。
【図5】サーバ端末の検出部、変換部、圧縮部および送信部による処理状態の一例を示す図。
【図6】サーバ端末の記憶部が記憶する情報の一例を示す図。
【図7】更新領域の表示画面全体における位置を示す図。
【図8】サーバ端末の検出部、変換部、圧縮部および送信部による処理状態の一例を示す図。
【図9】圧縮処理を実行する前の画面更新どうしのマージを説明する図。
【図10】圧縮処理を実行した後の画面更新どうしのマージを説明する図。
【図11】圧縮処理を実行した後の画面更新どうしのマージを説明する図。
【図12】サーバ端末の検出部、変換部、圧縮部および送信部による処理状態の一例を示す図。
【図13】2つの画面更新をマージした画面更新に対して、さらに別の画面更新をマージする様子を示す図。
【図14】サーバ端末の検出部、変換部、圧縮部および送信部による処理状態の一例を示す図。
【図15】サーバ端末の検出部、変換部、圧縮部および送信部による処理状態の一例を示す図。
【図16】サーバ端末のハードウェア構成図。
【発明を実施するための形態】
【0010】
以下、実施形態の情報処理装置およびプログラムについて、図面を参照して説明する。本実施形態は、サーバ端末が保持する表示画面の更新領域の画面情報を、サーバ端末からネットワークを介してクライアント端末に送信する画面転送システムへの適用例である。
【0011】
図1は、本実施形態にかかる画面転送システムの構成例を示す図である。図1に示すように、本実施形態にかかる画面転送システムは、サーバとして機能する情報処理装置(以下、サーバ端末という。)1と、サーバ端末1に対してネットワーク3により接続された外部装置であり、クライアントとして機能する情報処理装置(以下、クライアント端末という。)2と、を備える。なお、ネットワーク3の形態は任意であり、例えばインターネット、LAN(ローカルエリアネットワーク)などを適用できる。
【0012】
サーバ端末1は、図1に示すように、表示部100と、検出部101と、変換部102と、圧縮部103と、送信部104と、記憶部105と、推定部106と、決定部107と、受信部108と、オペレーティングシステム109と、を含む。
【0013】
表示部100は、オペレーティングシステム109から表示画面全体の画像情報を取得し、表示画面を表示する。表示部100は、表示画面全体の画像情報を格納するための記憶領域(フレームバッファ)を有している。フレームバッファには、オペレーティングシステム109から取得された最新の画像情報が格納される。表示部100は、このフレームバッファの画像情報に基づき、最新の描画状態の表示画面を表示する。
【0014】
本実施形態にかかる画面転送システムでは、このサーバ端末1の表示部100に表示される表示画面と同じ表示画面が、クライアント端末2の後述する表示部203に表示される。なお、サーバ端末1は、表示部100を備えない構成であってもよい。サーバ端末1が表示部100を備えない構成の場合も、表示画面全体の画像情報を格納するためのフレームバッファが設けられ、このフレームバッファに、オペレーティングシステム109から最新の画像情報が格納される。
【0015】
検出部101は、表示部100に表示される表示画面(つまり、クライアント端末2の表示部203に表示される表示画面)の更新領域を検出する処理を行う。検出部101は、表示部100に表示される表示画面全体の画像情報を格納するフレームバッファを有している。検出部101は、このフレームバッファに前回格納した画像情報と、新たに格納する最新の画像情報とを比較することにより、表示部100に表示される表示画面の更新領域を検出し、更新領域の画面情報を生成する。以下では、この検出部101が生成する更新領域の画面情報を「画面更新」という。画面更新は、表示部100に表示される表示画面において最新の描画状態を得る差分となる情報である。検出部101は、後述の変換部102において画面更新に対する変換処理が可能な状態になると、生成した画面更新を変換部102に出力する。
【0016】
図2は、画面更新のデータ構造の一例を示す図である。画面更新は、検出部101が検出した更新領域の位置を表す領域情報と、更新領域における更新後の画像情報との対を少なくとも1個含む。領域情報は、表示画面全体における更新領域の位置を示す数値(フレームバッファに画面情報を格納する際の更新領域の格納位置を表す数値であり、一例として、表示画面の画素に対応する数値)である。画像情報は、領域情報で示される領域の更新後のビットマップデータ(例えば、更新領域の各画素におけるRGB3色の値など)である。
【0017】
図3は、更新領域の一例を説明するための図である。図3に示すように、例えば、表示画面の画面全体における左上角を(0,0)、右下角を(Width,Height)としたときの、更新領域の左上座標(Left,Top)と右下座標(Right,Bottom)の組み合わせが領域情報である。図2および図3では、1つの画面更新に2つの領域情報が含まれる例を示しており、1つ目の領域情報は(Left,Top,Right,Bottom)=(100,100,300,300)であり、2つ目の領域情報は(Left,Top,Right,Bottom)=(300,200,500,400)である。
【0018】
図1に戻り、変換部102は、検出部101が出力する画面更新に対して色空間の変換処理を行う。具体的には、変換部102は、検出部101が出力する画面更新に含まれる画像情報を第1の表色系の情報から第2の表色系の情報に変換する処理、例えばRGB→YUVなどの変換処理を施す。
【0019】
変換部102は、任意のタイミングで、現在実行中の画面更新に対する変換処理を中断することが可能である。この場合、変換処理を中断した画面更新は、後に検出部101から出力された別の変換前の画面更新と統合して(マージして)、1個の画面更新として扱うことが可能である。変換部102は、現在実行中の画面更新に対する変換処理を中断した場合には、表示画面に欠落を生じさせないために、その後、この統合した画面更新に対して変換処理を行うことになる。なお、画面更新の具体的な統合の手順については詳細を後述する。
【0020】
圧縮部103は、変換部102により変換処理が行われた画面更新に対して圧縮処理を行う。具体的には、圧縮部103は、変換部102により画像情報の変換処理が行われた画面更新が変換部102から出力されると、この画面更新に含まれる画像情報に対して、例えばZLIBなどの圧縮アルゴリズムを用いた圧縮処理を施す。
【0021】
圧縮部103は、任意のタイミングで、現在実行中の画面更新に対する圧縮処理を中断することが可能である。この場合、圧縮処理を中断した画面更新は、後に変換部102から出力された別の圧縮前の画面更新と統合して(マージして)、1個の画面更新として扱うことが可能である。圧縮部103は、現在実行中の画面更新に対する圧縮処理を中断した場合には、表示画面に欠落を生じさせないために、その後、この統合した画面更新に対して圧縮処理を行うことになる。なお、画面更新の具体的な統合の手順については詳細を後述する。
【0022】
送信部104は、圧縮部103により圧縮処理が行われた画面更新を、ネットワーク3経由でクライアント端末2に送信する送信処理を行う。具体的には、送信部104は、画像情報に対する変換部102の変換処理および圧縮部103の圧縮処理が終了した画面更新が圧縮部103から出力されると、この画面更新を、ネットワーク3上において伝送可能な形式に変換してクライアント端末2に対し送信する。
【0023】
送信部104は、任意のタイミングで、現在実行中の画面更新に対する送信処理を中断することが可能である。この場合、送信処理を中断した画面更新は、後に圧縮部103から出力された別の送信前の画面更新と統合して(マージして)、1個の画面更新として扱うことが可能である。送信部104は、現在実行中の画面更新に対する送信処理を中断した場合には、表示画面に欠落を生じさせないために、その後、この統合した画面更新に対して送信処理を行うことになる。なお、画面更新の具体的な結合の手順については詳細を後述する。
【0024】
上記の検出部101、変換部102、圧縮部103および送信部104は、互いに同期を取りながら、それぞれの処理を並列して実行することが可能である。すなわち、検出部101が最新の表示画面の更新領域を検出しているときに、変換部102が、1つ前に検出された更新領域の画面更新に対する変換処理を行い、圧縮部103が、2つ前に検出された更新領域の画面更新に対する変換処理を行い、送信部104が、3つ前に検出された更新領域の画面更新に対する送信処理を行うことが可能である。ただし、圧縮部103は、変換部102による変換処理が終了した画面更新に対してのみ圧縮処理を行うことができ、変換処理が終了していない画面更新に対して圧縮処理を行うことはできない。また、送信部104は、圧縮部103による圧縮処理が終了した画面更新に対してのみ送信処理を行うことができ、圧縮処理が終了していない画面更新に対して送信処理を行うことはできない。つまり、1つの画面更新は、変換部102による変換処理と、圧縮部103による圧縮処理と、送信部104による送信処理とがこの順番で順次施されてクライアント端末2に送信される。
【0025】
記憶部105は、検出部101が生成した画面更新に対する処理状態を表す情報を記憶する。具体的には、記憶部105は、画面更新に対して付与されたシーケンス番号と、そのシーケンス番号により識別される画面更新の領域情報と、その画面更新に対して現在どのような処理が行われているかの処理状態を記憶する。処理状態は、検出部101により生成された画面更新が変換部102による変換処理が行われるのを待機している状態であれば「検出処理」となる。また、処理状態は、画面更新に対して変換部102による変換処理を実行中、もしくは、変換処理が終了して圧縮部103による圧縮処理を待機している状態であれば「変換処理」となる。また、処理状態は、画面更新に対して圧縮部103による圧縮処理を実行中、もしくは、圧縮処理が終了して送信部104による送信処理を待機している状態であれば「圧縮処理」となる。また、処理状態は、画面更新に対して送信部104による送信処理の実行中であれば「送信処理」となり、送信処理が終了すると「完了」となる。
【0026】
推定部106は、検出部101により優先度の高い更新領域が検出された場合に、この優先度の高い更新領域の画面情報がクライアント端末2に送信されるまでの所要時間(以下、応答時間という。)を推定する。応答時間は、一般的にはクライアント端末2側での処理時間も含む概念であるが、本実施形態においては、クライアント端末2での処理時間(画面更新を受信してから表示までに要する時間)をゼロと近似し、サーバ端末1側での処理に要する時間を応答時間として扱う。
【0027】
ここで、サーバ端末1の変換部102、圧縮部103および送信部104の各処理部は、変換処理、圧縮処理、送信処理の各処理を実行する方式として、以下のような2つの処理方式(第1処理方式と第2処理方式)をとりうる。第1処理方式は、検出部101によって先に検出された更新領域(以下、第1更新領域という。)の画面更新に対する処理が終了した後に、この第1更新領域よりも後に検出された更新領域(以下、第2更新領域という。)の画面更新に対する処理を実行する処理方式である。一方、第2処理方式は、上述したように、実行中の第1更新領域の画面更新に対する処理を中断し、その後、第1更新領域と第2更新領域とをマージした更新領域の画面更新に対する処理を実行する処理方式である。
【0028】
第2処理方式は、第2更新領域として優先度の高い更新領域が検出された場合に、この第2更新領域に対する処理を効率的に実行するための処理方式である。ただし、第2処理方式による処理時間は、必ずしも第1処理方式による処理時間よりも短くなるとは限らない。つまり、第2処理方式による処理を実行する場合、第1更新領域の画面更新に対する処理を中断するが、上述したように、表示画面に欠落を生じさせないためには、その後、第1更新領域と第2更新領域とをマージした更新領域の画面更新に対する処理を実行する必要がある。このとき、第1更新領域と第2更新領域とをマージした更新領域の画面更新に対する処理を開始するには、前段の処理部が第2更新領域の画面更新に対する処理を終了するのを待たなければならない。このため、第1更新領域の画面更新および第2更新領域の画面更新のデータ量と、第1更新領域の画面更新に対する処理を中断するタイミングによっては、前段の処理部が第2更新領域の画面更新に対する処理を終了するのを待つ間に、第1更新領域の画面更新に対する処理を終了できる場合がある。この場合には、第2処理方式による処理時間よりも第1処理方式による処理時間の方が短くなる。
【0029】
以上のことから、優先度の高い更新領域が上記の第2更新領域であると考えた場合の応答時間は、変換部102と圧縮部103と送信部104の各処理部での処理方式の組み合わせごとに異なる値となる。つまり、変換部102が第1処理方式と第2処理方式のいずれの処理方式で処理を実行するか、圧縮部103が第1処理方式と第2処理方式のいずれの処理方式で処理を実行するか、送信部104が第1処理方式と第2処理方式のいずれの処理方式で処理を実行するかによって、それぞれ応答時間が異なる。したがって、推定部106は、サーバ端末1の変換部102、圧縮部103および送信部104の各処理部での処理方式の組み合わせごとに、それぞれ応答時間を推定する。なお、推定部105が応答時間を推定する方法の具体例については詳細を後述する。
【0030】
なお、本実施形態において、更新領域の優先度は、その更新領域の発生要因によって予め定められているものとする。例えば、クライアント端末2に入力された所定のユーザ操作(例えば、クライアント端末2の表示部203に表示されている表示画面上でのポインティングデバイスのクリックなど)に起因して発生する更新領域は、このようなユーザ操作以外の要因(例えば、所定の更新周期ごとに発生する定常的な更新)による更新領域よりも、優先度が高い。
【0031】
決定部107は、検出部101により優先度の高い更新領域が検出された場合に、推定部106が推定した応答時間、つまり、サーバ端末1の変換部102と圧縮部103と送信部104の各処理部での処理方式の組み合わせごとの応答時間に基づき、サーバ端末1の変換部102、圧縮部103および送信部104のそれぞれについて、第1処理方式により処理を実行するか、第2処理方式により処理を実行するかを決定する。
【0032】
具体的には、決定部107は、例えば、推定部106が推定した応答時間が最小となる組み合わせに従って、サーバ端末1の変換部102、圧縮部103および送信部104のそれぞれについて、第1処理方式により処理を実行するか、第2処理方式により処理を実行するかを決定する。ここで、推定部106が推定した応答時間が最小となる組み合わせが複数存在する場合には、決定部107は、これら複数の組み合わせのうち、第2処理方式により処理を行う処理部の個数(つまり、処理を中断する回数)が最小となる組み合わせに従って、サーバ端末1の変換部102、圧縮部103および送信部104のそれぞれについて、第1処理方式により処理を実行するか、第2処理方式により処理を実行するかを決定する。
【0033】
また、決定部107は、推定部106が推定した前記組み合わせごとの応答時間を予め定めた閾値と比較し、応答時間が閾値以下となる複数の組み合わせのうち、第2処理方式により処理を行う処理部の個数(つまり、処理を中断する回数)が最小となる組み合わせに従って、サーバ端末1の変換部102、圧縮部103および送信部104のそれぞれについて、第1処理方式により処理を実行するか、第2処理方式により処理を実行するかを決定するようにしてもよい。
【0034】
受信部108は、クライアント端末2に入力されたユーザ操作を表す入力情報を、クライアント端末2からネットワーク3を介して受信する。
【0035】
オペレーティングシステム109は、入出力機能、および、ディスクやメモリの管理機能など、多くのアプリケーションから共通して利用される基本的な機能や、デスクトップ環境を提供する。各機能は、APIを介して提供される。例えば、オペレーティングシステム109は、表示部100に表示する表示画面の画面情報を取得するためのAPI、キーボードやマウス等の入力操作を合成するAPI、および、現在時刻を取得するAPIなどを提供する。
【0036】
次に、クライアント端末2の構成について説明する。クライアント端末2は、図1に示すように、受信部201と、伸張部202と、表示部203と、取得部204と、送信部205と、を含む。
【0037】
受信部201は、ネットワーク3を介してサーバ端末1から画面更新を受信する。
【0038】
伸張部202は、受信部201が受信した画面更新に含まれる画像情報、つまりサーバ端末1の圧縮部103により圧縮された画像情報に対して、伸張処理を施す。
【0039】
表示部203は、画像情報に対して伸張処理が施された画面更新を伸張部202から取得して、最新の表示画面を表示しユーザに提示する。表示部203は、表示画面全体の画像情報を格納するための記憶領域(フレームバッファ)を有している。表示部203は、伸張部202から画面更新を受け取ると、この画面更新に含まれる領域情報が示すフレームバッファ上の画像情報を、画面更新に含まれる画像情報で上書き更新し、更新された画像情報に基づき、サーバ端末1の表示部100に表示された表示画面と同じ表示画面を表示する。
【0040】
取得部204は、ユーザがキーボードやポインティングデバイスなどを利用してクライアント端末2に入力したユーザ操作を受け付けて、このユーザ操作を表す入力情報を取得する。
【0041】
送信部205は、取得部204が取得したユーザ操作を表す入力情報を、ネットワーク3を介してサーバ端末1に送信する。
【0042】
次に、本実施形態にかかる画面転送システムの動作について、具体例を挙げながら詳細に説明する。本実施形態にかかる画面転送システムでは、上述したように、サーバ端末1とクライアント端末2とがネットワーク3を介して物理的に接続されている。本実施形態では、ネットワーク3はIP(Internet Protocol)ネットワークであるとする。
【0043】
以下では、始めにサーバ端末1の表示部100の表示画面の更新領域がクライアント端末2の表示部203の表示画面に反映される画面転送の標準的な一連の流れを説明する。次に、画面転送を実行している最中において、クライアント端末2のユーザによりポインティングデバイスのクリック操作が行われた状況を想定し、このユーザ操作を表す入力情報がサーバ端末1に送信され、このユーザ操作に対応した表示画面の更新がクライアント端末2の表示部203の表示画面に反映されるまでの流れを説明する。このようなユーザ操作に起因して表示画面の更新が発生した状況は、ユーザが反応を期待している可能性が高いと推察される。このため、このような表示画面の更新は、通常の表示画面の更新と比べて速やかにクライアント端末2に反映させる必要があると考えられる。そこで、本実施形態では、クライアント端末2に入力されたユーザ操作、中でもポインティングデバイスのクリック操作によって表示画面の更新が発生したときに(つまり、優先度の高い更新領域が検出されたときに)、サーバ端末1の変換部102、圧縮部103および送信部104の上述した処理方式を適切に決定することで、応答時間の最適化を図るようにしている。
【0044】
本実施形態にかかる画面転送システムにおいて、画面転送の実行が開始されると、サーバ端末1の検出部101は、定期的なタイミングで以下の更新領域の検出処理を繰り返し実行する。すなわち、検出部101は、更新領域の検出処理の始めに、表示部100に対して最新の表示画面の画像情報の取得を要求する。そして、検出部101は、取得した画像情報と自身のフレームバッファに格納されている画像情報とを比較し、表示画面全体の中で画像情報に差分のある部分を更新領域として検出して、この更新領域の画面情報である画面更新を生成する。画面更新は、上述したように、更新領域の位置を表す領域情報と、更新領域における更新後の画像情報とを含む。
【0045】
検出部101は、更新領域の検出および画面更新の生成が終了すると、自身のフレームバッファの内容を最新の画像情報により上書き更新する。さらに、検出部101は、生成した画面更新に対しシーケンス番号を付与する。シーケンス番号とは、画面更新の時間的順序を表す数値である。検出部101は、内部に最新のシーケンス番号を記憶するための記憶領域を有しており、画面転送の実行が開始された直後にこの記憶領域をゼロで初期化した後は、画面更新を生成するごとにシーケンス番号を付与し、かつ記憶した値を1インクリメントする。また、検出部101は、検出処理を開始した時刻を格納する記憶領域を有しており、検出処理を開始するごとに、その時刻(サーバ端末1が起動してから現在までの経過時間など)をオペレーティングシステム109から取得し、この記憶領域の内容を上書き更新する。
【0046】
次に、検出部101は、生成した画面更新の領域情報と、この画面更新に対して付与したシーケンス番号の組み合わせを記憶部105に出力し、記憶を依頼する。記憶部105は、検出部101から入力された情報を記憶する。
【0047】
図4は、記憶部105が記憶する情報の一例を示す図である。記憶部105は、上述したように、検出部101が生成した画面更新に付与されたシーケンス番号と、このシーケンス番号で識別される画面更新の領域情報と、このシーケンス番号で識別される画面更新に対して現在どのような処理が行われているかの処理状態を記憶する。検出部101からの依頼に応じて記憶部105に記憶される情報1001は、図4に示すように、処理状態が「検出処理」となる。
【0048】
次に、検出部101は、変換部102が新たな画面更新に対する処理を実行可能な状態であるか否かを次のように確認する。検出部101は、記憶部105に対して、処理状態が「変換処理」となっているエントリが存在するか否かを問い合わせる。記憶部105は、この問合せに対して、自身の記憶領域を参照し、処理状態が「変換処理」となっているエントリが存在するか否かを検出部101に回答する。ここで、処理状態が「変換処理」となっているエントリが存在していなければ、検出部101は、変換部102が新たな画面更新に対する処理を実行可能な状態であると判断する。そして、検出部101は、生成した画面更新とシーケンス番号との組み合わせを変換部102に出力し、この画面更新に対する変換処理の開始を依頼する。一方、処理状態が「変換処理」となっているエントリが存在していれば、検出部101は、変換部102が新たな画面更新に対する処理を実行可能な状態でないと判断する。この場合、検出部101は、変換部102が新たな画面更新に対する処理を実行可能な状態になるまで、生成した画面更新およびシーケンス番号の出力を行わずに待機する。検出部101は、変換部102に対する変換処理の開始依頼が終了すると、更新領域の検出処理を再び開始する。
【0049】
変換部102は、検出部101から画面更新とシーケンス番号の組み合わせを受け取ると、まず、記憶部105にシーケンス番号を通知し、当該シーケンス番号により識別される画面更新の処理状態を「検出処理」から「変換処理」に変更する。次に、変換部102は、検出部101から受け取った画面更新に含まれる画像情報に対して、変換処理を施す。本実施形態では、この変換部102による変換処理により、画像情報の表色系がRGBからYUVに変換されるものとする。
【0050】
画面更新に含まれる画像情報に対する変換処理が終了すると、変換部102は、次に、圧縮部103が新たな画面更新に対する処理を実行可能な状態であるか否かを次のように確認する。変換部102は、記憶部105に対して、処理状態が「圧縮処理」となっているエントリが存在するか否かを問い合わせる。記憶部105は、この問合せに対して、自身の記憶領域を参照し、処理状態が「圧縮処理」となっているエントリが存在するか否かを回答する。ここで、処理状態が「圧縮処理」となっているエントリが存在していなければ、変換部102は、圧縮部103が新たな画面更新に対する処理を実行可能な状態であると判断する。そして、変換部102は、変換処理が終了した画面更新とシーケンス番号の組み合わせを圧縮部103に出力し、この画面更新に対する圧縮処理の開始を依頼する。一方、処理状態が「圧縮処理」となっているエントリが存在していれば、変換部102は、圧縮部103が新たな画面更新に対する処理を実行可能な状態でないと判断する。この場合、変換部102は、圧縮部103が新たな画面更新に対する処理を実行可能な状態になるまで、変換処理が終了した画面更新およびシーケンス番号の出力を行わずに待機する。変換部102は、圧縮部103に対する圧縮処理の開始依頼が完了すると、次の画面更新に対する変換処理を実行可能な状態となる。
【0051】
圧縮部103は、変換部102から画面更新とシーケンス番号の組み合わせを受け取ると、まず、記憶部105にシーケンス番号を通知し、当該シーケンス番号により識別される画面更新の処理状態を「変換処理」から「圧縮処理」に変更する。次に、圧縮部103は、変換部102から受け取った画面更新に含まれる画像情報に対して、圧縮処理を施す。本実施形態では、この圧縮部103による圧縮方式として、ZLIBを用いるものとする。
【0052】
画面更新に含まれる画像情報に対する圧縮処理が終了すると、圧縮部103は、次に、送信部104が新たな画面更新に対する処理を実行可能な状態であるか否かを次のように確認する。圧縮部103は、記憶部105に対して、処理状態が「送信処理」となっているエントリが存在するか否かを問い合わせる。記憶部105は、この問合せに対して、自身の記憶領域を参照し、処理状態が「送信処理」となっているエントリが存在するか否かを回答する。ここで、処理状態が「送信処理」となっているエントリが存在していなければ、圧縮部103は、送信部104が新たな画面更新に対する処理を実行可能な状態であると判断する。そして、圧縮部103は、圧縮処理が終了した画面更新とシーケンス番号の組み合わせを送信部104に出力し、この画面更新に対する送信処理の開始を依頼する。一方、処理状態が「送信処理」となっているエントリが存在していれば、圧縮部103は、送信部104が新たな画面更新に対する処理を実行可能な状態でないと判断する。この場合、圧縮部103は、送信部104が新たな画面更新に対する処理を実行可能な状態になるまで、圧縮処理が終了した画面更新およびシーケンス番号の出力を行わずに待機する。圧縮部103は、送信部104に対する送信処理の開始依頼が完了すると、次の画面更新に対する圧縮処理を実行可能な状態となる。
【0053】
送信部104は、圧縮部103から画面更新とシーケンス番号の組み合わせを受け取ると、まず、記憶部105にシーケンス番号を通知し、当該シーケンス番号により識別される画面更新の処理状態を「圧縮処理」から「送信処理」に変更する。次に、送信部104は、圧縮部103から受け取った画面更新を、ネットワーク3経由でクライアント端末2に送信する処理を実行する。具体的には、送信部104は、圧縮部103から受け取った画面更新(シーケンス番号は除く)に対してTCP/IPの各ヘッダを付与した上で、この画面更新を、クライアント端末2に向けてネットワーク3へ送出する。そして、送信部104は、送信処理が終了したことを確認すると、記憶部105にシーケンス番号を通知し、当該シーケンス番号により識別される画面更新の処理状態を「送信処理」から「完了」に変更する。
【0054】
図5は、以上の検出部101、変換部102、圧縮部103および送信部104の各処理部による処理状態の一例を示す図である。図中の四角は、各処理部が処理を実行中であることを意味する。また、図中の数字は、各処理部が処理を実行している画面更新のシーケンス番号を意味する。この図5では、時間軸に沿って各処理部による処理が並列に進行される様子が示されている。
【0055】
クライアント端末2の受信部201は、サーバ端末1からネットワーク3を介して画面更新を受信すると、この画面更新に対して付与されたTCP/IPの各ヘッダを除去した上で、画面更新を伸張部202に出力する。
【0056】
伸張部202は、受信部201から画面更新を受け取ると、この画面更新に含まれる圧縮された画像情報の伸張処理を行う。そして、伸張部202は、伸張後の画像情報を含む画面更新を表示部203に出力する。
【0057】
表示部203は、伸張部202から画面更新を受け取ると、この画面更新に含まれる領域情報が示すフレームバッファ上の画像情報を、この画面更新に含まれる画像情報で上書き更新する。そして、表示部203は、フレームバッファ上の画像情報に基づいて表示画面を表示する。これにより、サーバ端末1と同じ表示画面が表示部203に表示され、ユーザに提示される。
【0058】
次に、クライアント端末2においてユーザ操作が発生したときの画面転送システムの動作について説明する。クライアント端末2においてユーザ操作がなされると、クライアント端末2の取得部204は、このユーザ操作を受け付けてユーザ操作を表す入力情報を取得する。ここでのユーザ操作とは、例えば、ポインティングデバイスの操作やキーボードの操作などである。取得部204は、取得した入力情報を送信部205に通知する。
【0059】
送信部205は、取得部204から受け取った入力情報に対してTCP/IPの各ヘッダを付与し、この入力情報をネットワーク3において伝送可能な形式に変換した後、サーバ端末1に向けてネットワーク3へ送出する。
【0060】
サーバ端末1の受信部108は、クライアント端末2からネットワーク3を介して入力情報を受信すると、この入力情報に対して付与されたTCP/IPの各ヘッダを除去した上で、得られた入力情報をオペレーティングシステム109に渡し、入力の反映を依頼する。さらに、受信部108は、入力情報が予め定めた所定のユーザ操作、例えば、ポインティングデバイスのクリック操作を表すものである場合に、決定部107に対して処理の開始を依頼する。
【0061】
なお、本実施形態では、クライアント端末2におけるポインティングデバイスのクリック操作を、決定部107の処理開始の契機としているが、必ずしもこれに限られるものではない。例えば、クライアント端末2におけるキーボードの押下操作を決定部107の処理開始の契機としてもよい。また、必ずしも入力情報に基づく必要もなく、例えば、任意または特定のアプリケーションのウィンドウが表示画面の最前面に移動したことを検出して、これを決定部107の処理開始の契機としてもよい。また、例えば、閾値以上の画素数を持つ更新領域が発生したことを検出し、これを決定部107の処理開始の契機としてもよい。
【0062】
ここで、サーバ端末1における決定部107および推定部106の処理の具体例について説明する。図6は、記憶部105が記憶する情報の一例を示す図であり、シーケンス番号が1から5の5つの画面更新についての情報1101〜1105が記憶部105に記憶されている様子を示している。図7は、これら5つの画面更新に対応する各更新領域1201〜1205の表示画面全体における位置を示す図である。図8は、これら画面更新に対して、サーバ端末1の検出部101、変換部102、圧縮部103および送信部104の各処理部による処理が時間軸に沿って進行する様子を示す図である。以下では、例として、記憶部105が図6に示す情報1101〜1105を記憶している状態にあり、図8のt1のタイミングにおいて、決定部107および推定部106が処理を開始するものとする。
【0063】
始めに、決定部107が、検出部101に対して、入力情報に基づいて発生する更新領域の検出処理を行うよう通知する。検出部101は、もしその時点で検出処理を実行中であればその処理を中断し、新たな更新領域を検出するための検出処理を開始する。検出部101による検出処理は、上述した通りである。すなわち、検出部101は、表示部100の表示画面の最新の画像情報と前回処理時の画像情報とを比較してその差分を更新領域として検出し、その更新領域の画面情報である画面更新を生成して、画面更新に対して付与したシーケンス番号と画面更新に含まれる領域情報とを記憶部105に記憶させる。また、検出部101は、入力情報に基づいて発生する更新領域の検出処理が終了すると、検出処理の終了を決定部107に通知する。
【0064】
また、検出部101は、入力情報に基づいて発生する更新領域に対する検出処理の開始時(時刻t1)と、入力情報に基づいて発生する更新領域に対する検出処理の終了時(t2)に、オペレーティングシステム109からそれぞれの時刻を取得し、その前の検出処理開始時(t0)との差を算出する。そして、検出部101は、算出した値(t1−t0とt2−t0)と、検出した更新領域の画面更新に付与したシーケンス番号とを、決定部107に通知する。
【0065】
図8の例では、t1のタイミングで検出部101が検出処理の実行中であるため、検出部101が実行中の検出処理を中断して、新たな更新領域を検出して画面更新を生成(シーケンス番号5の画面更新)する様子が示されている。検出部101が新たな更新領域の検出および画面更新の生成を終了した時刻はt2で示されている。ここでは、t1−t0=5ミリ秒、t2−t0=15ミリ秒であると仮定する。
【0066】
決定部107は、検出部101から通知されたシーケンス番号(シーケンス番号5)で識別される画面更新を、クライアント端末2におけるポインティングデバイスのクリック操作によって発生した更新領域の画面更新であると識別する。そのような状況では、クライアント端末2のユーザが、操作に対する反応を期待している可能性が高いと推察されるため、この画面更新をできるだけ速やかにクライアント端末2に反映させる必要がある。つまり、このようなユーザ操作により発生した表示画面の更新領域は、優先度が高い更新領域であるため、応答時間を短縮させて良好な応答性を実現することが望まれる。本実施形態では、決定部107が処理を開始したタイミングt1から、所定のユーザ操作に起因する画面更新(シーケンス番号5の画面更新)に対する送信部104の送信処理が終了するまでの時間を応答時間として扱う。
【0067】
なお、決定部107は、優先度の高い更新領域の画面更新に対する一連の処理、つまり変換部102による変換処理、圧縮部103による圧縮処理、および送信部104による送信処理が全て終了することを確認するまでの間に、受信部108から新たに処理開始の依頼を受け取った場合には、この新たな処理開始の依頼は無視することが望ましい。これにより、例えば、ユーザがクライアント端末2の表示画面上でポインティングデバイスのクリック操作を連続的に行った場合などに、処理の中断が連続的に発生して描画がストップするといった事態を未然に回避することができる。
【0068】
決定部107は、検出部101からの通知を受け取ると、変換部102、圧縮部103および送信部104のそれぞれについて、上述した第1処理方式により処理を実行するか、または、第2処理方式により処理を実行するかを決定するために、推定部106に対して応答時間を推定する処理の開始を依頼する。
【0069】
推定部106は、決定部107から処理開始の依頼を受け取ると、変換部102、圧縮部103および送信部104の各処理部が第1処理方式で処理を実行した場合と、第2処理方式で処理を実行した場合との組み合わせごとに、応答時間を推定する。この組み合わせは、変換部102:第1処理方式/第2処理方式、圧縮部103:第1処理方式/第2処理方式、送信部104:第1処理方式/第2処理方式、の計2×2×2=8通りの組み合わせとなる。推定部106は、これら8通りの組み合わせのそれぞれについて、応答時間を推定する。
【0070】
始めに、推定部106は、記憶部105から、処理状態が「完了」でない全てのエントリを読み出す。図6の例では、シーケンス番号2,3,4,5の画面更新が相当する。推定部106は、これらの画面更新に関する情報を記憶部105から読み出すと、次の各処理時間を推定する。
γ2:シーケンス番号2の画面更新に対する送信処理の処理時間(推定値)
β3:シーケンス番号3の画面更新に対する圧縮処理の処理時間(推定値)
γ3:シーケンス番号3の画面更新に対する送信処理の処理時間(推定値)
α4:シーケンス番号4の画面更新に対する変換処理の処理時間(推定値)
β4:シーケンス番号4の画面更新に対する圧縮処理の処理時間(推定値)
γ4:シーケンス番号4の画面更新に対する送信処理の処理時間(推定値)
α5:シーケンス番号5の画面更新に対する変換処理の処理時間(推定値)
β5:シーケンス番号5の画面更新に対する圧縮処理の処理時間(推定値)
γ5:シーケンス番号5の画面更新に対する送信処理の処理時間(推定値)
γ23:シーケンス番号2と3をマージした画面更新に対する送信処理の処理時間(推定値)
β34:シーケンス番号3と4をマージした画面更新に対する圧縮処理の処理時間(推定値)
γ34:シーケンス番号3と4をマージした画面更新に対する送信処理の処理時間(推定値)
α45:シーケンス番号4と5をマージした画面更新に対する変換処理の処理時間(推定値)
β45:シーケンス番号4と5をマージした画面更新に対する圧縮処理の処理時間(推定値)
γ45:シーケンス番号4と5をマージした画面更新に対する送信処理の処理時間(推定値)
β345:シーケンス番号3と4と5をマージした画面更新に対する圧縮処理の処理時間(推定値)
γ234:シーケンス番号2と3と4をマージした画面更新に対する送信処理の処理時間(推定値)
γ345:シーケンス番号3と4と5をマージした画面更新に対する送信処理の処理時間(推定値)
γ2345:シーケンス番号2と3と4と5をマージした画面更新に対する送信処理の処理時間(推定値)
【0071】
ここで、マージについて説明する。マージとは、2つの画面更新を統合して1つの画面更新に変換する手続きのことである。3つ以上の画面更新をマージする場合は、時間的に最も古い2つの画面更新を先にマージしてから、その次に古い画面更新を1つずつマージする。本実施形態では、圧縮処理を実行する前の画面更新どうしのマージと、圧縮処理を実行した後の画面更新どうしのマージとで、変換の方法が異なる。
【0072】
圧縮処理を実行する前の画面更新どうしをマージする場合、マージ後の画面更新の領域情報は、マージ前の2つの画面更新の領域情報の和集合である。マージ後の画面更新の画像情報は、マージ後の画面更新の領域情報に対応したマージ前の2つの画面更新の画像情報(ビットマップデータ)である。ただし、マージ前の2つの画面更新の領域情報に重なりがある場合、その重なる領域については、シーケンス番号が新しい画面更新の画像情報だけを残すようにする。
【0073】
図9は、圧縮処理を実行する前の画面更新どうしのマージを説明する図である。図9の例は、画面更新1301と画面更新1302とをマージして1つの画面更新1303とする例である。マージ後の画面更新1303の領域情報は、重なりのない3つの矩形領域の情報(Left,Top,Right,Bottom)=(150,150,250,200),(150,200,200,250),(200,200,300,300)である。また、マージ後の画面更新1303の画像情報は、各矩形領域に対応する新しい側の画像情報である。つまり(Left,Top,Right,Bottom)=(150,150,250,200),(150,200,200,250)に相当する矩形領域については、マージ前の画面更新1301のビットマップデータを使用し、(Left,Top,Right,Bottom)=(200,200,300,300)に相当する矩形領域については、マージ前の画面更新1302のビットマップデータを使用して、マージ後の画面更新1303を生成する。
【0074】
圧縮処理を実行した後の画面更新どうしをマージする場合、マージ後の画面更新の領域情報は、マージ前の2つの画面更新のうち、新しい画面更新が古い画面更新を完全に包含していれば、新しい画面更新の領域情報と等しい。一方、新しい画面更新が古い画面更新を完全に包含していなければ、2つの画面更新の領域情報の単純な組み合わせに等しい。
【0075】
図10および図11は、圧縮処理を実行した後の画面更新どうしのマージを説明する図である。図10の例では、新しい画面更新1402が、古い画面更新1401を完全に包含している。このため、マージ後の画面更新1403の領域情報は、新しい画面更新1402の領域情報に等しく、(Left,Top,Right,Bottom)=(200,200,350,350)となる。一方、図11の例では、新しい画面更新1502は、古い画面更新1501を包含していない。このため、マージ後の画面更新1503,1504の領域情報は、両方の単純な組み合わせ(Left,Top,Right,Bottom)=(150,150,250,250),(200,200,350,350)となる。
【0076】
推定部106が推定する上記の各処理時間のうち、α、βの各値は、処理対象とする画面更新の画素数に比例するものとして算出する。すなわち、推定部106は、変換部102による変換処理について、単位画素あたりの平均処理時間(ミリ秒/画素)の情報と、圧縮部103による圧縮処理について、単位画素あたりの平均処理時間(ミリ秒/画素)の情報とを保持している。推定部106は、処理対象とする画面更新の画素数にこれらの値を乗じ、得られた値を変換処理の処理時間および圧縮処理の処理時間の推定値とする。本実施形態では、変換部102による単位画素あたりの平均処理時間と、圧縮部103による単位画素あたりの平均処理時間とが、いずれも0.002(ミリ秒/画素)であるものとする。なお、これら平均処理時間の値は固定値でなくてもよく、例えば、変換部102と圧縮部103の実際の処理時間を定期的に計測し、その計測値に基づいて、推定部106が保持する平均処理時間の情報を定期的に更新するようにしてもよい。
【0077】
例えば、α4(シーケンス番号4の画面更新に対する変換処理の処理時間)は、次のように求められる。シーケンス番号4の画面更新の画素数が(300−200)×(300−200)=100×100=10000画素であるので、これに0.002を乗じた20ミリ秒がα4として求められる。
【0078】
また、例えばβ5(シーケンス番号5の画面更新に対する圧縮処理の処理時間)は、シーケンス番号5の画面更新の画素数が(350−200)×(350−200)=150×150=22500画素であるので、これに0.002を乗じた45ミリ秒がβ5として求められる。
【0079】
また、例えばβ34(シーケンス番号3と4をマージした画面更新に対する圧縮処理の処理時間)は、次のように求められる。マージ後の画面更新の領域情報は、図9に示したように3つの矩形領域の情報となる。したがって、このマージ後の画面更新の画素数は(250−150)×(200−150)+(200−150)×(250−200)+(300−200)×(300−200)=100×50+50×50+100×100=5000+2500+10000=17500画素であるので、これに0.002を乗じた35ミリ秒がβ34として求められる。
【0080】
また、例えばβ345(シーケンス番号3と4と5をマージした画面更新に対する圧縮処理の処理時間)は、次のように求められる。まず、シーケンス番号3と4をマージした画面更新を算出し、さらにそこにシーケンス番号5の画面更新をマージする。シーケンス番号3と4をマージした画面更新の領域情報は、図9に示したように3つの矩形領域の情報となる。図13は、シーケンス番号3と4をマージした画面更新1601に対して、さらにシーケンス番号5の画面更新1602をマージする様子を示している。この図13に示すように、シーケンス番号3と4と5をマージした画面更新1603の領域情報は、3つの矩形領域の情報となり、このマージ後の画面更新1603の画素数は(250−150)×(200−150)+(200−150)×(250−200)+(350−200)×(350−200)=100×50+50×50+150×150=5000+2500+22500=30000画素であるので、これに0.002を乗じた60ミリ秒がβ345として求められる。
【0081】
また、γの各値についても、処理対象とする画面更新の画素数に比例するものとして算出することができる。すなわち、推定部106は、送信部104による変換処理について、単位画素あたりの平均処理時間(ミリ秒/画素)の情報を保持している。推定部106は、処理対象とする画面更新の画素数にこの値を乗じ、得られた値を送信処理の処理時間の推定値とする。本実施形態では、送信部104による単位画素あたりの平均処理時間が0.003(ミリ秒/画素)であるものとする。なお、この送信部104の平均処理時間の値は固定値でなくてもよく、例えば、送信部104の実際の処理時間を定期的に計測し、その計測値に基づいて、推定部106が保持する平均処理時間の情報を定期的に更新するようにしてもよい。また、例えば、送信部104が画面更新の送信処理に使用する通信路の状態、つまり、画面更新を送出するネットワーク3の状態を測定する測定部を設け、この測定部により測定されたネットワーク3の状態と、送信部104が処理対象とする画面更新の画素数とに基づいて、上記のγの各値を算出するようにしてもよい。ここで、ネットワーク3の状態とは、例えば、ネットワーク3の利用可能帯域や、RTT(Round Trip Times)などである。これらネットワーク3の状態を測定部で測定する場合、測定により得られる値(ビット/ミリ秒)で処理対象とする画面更新の画素数を除することにより、上記のγの各値を算出することができる。
【0082】
例えば、γ3(シーケンス番号3の画面更新に対する送信処理の処理時間)は、次のように求められる。シーケンス番号3の画面更新の画素数は(250−150)×(250−150)=100×100=10000画素であるので、これに0.003を乗じた30ミリ秒がγ3として求められる。
【0083】
また、例えばγ34(シーケンス番号3と4をマージした画面更新に対する送信処理の処理時間)は、次のように求められる。マージ後の画面更新の領域情報は、図11に示したように、マージ前の2つの画面更新の領域情報の単純な組み合わせとなる。したがって、このマージ後の画面更新の画素数は(250−150)×(250−150)+(300−200)×(300−200)=100×100+100×100=10000+10000=20000画素であるので、これに0.003を乗じた60ミリ秒がγ34として求められる。
【0084】
また、例えばγ45(シーケンス番号4と5をマージした画面更新に対する送信処理の処理時間)は、次のように求められる。マージ後の画面更新の領域情報は、図10に示したように、シーケンス番号5の画面更新の領域情報と等しくなる。したがって、このマージ後の画面更新の画素数は(350−200)×(350−200)=150×150=22500画素であるので、これに0.003を乗じた67.5ミリ秒がγ45として求められる。
【0085】
同様にして、各処理時間の推定値は、以下のように求められる。
γ2=30ミリ秒
β3=20ミリ秒
γ3=30ミリ秒
α4=20ミリ秒
β4=20ミリ秒
γ4=30ミリ秒
α5=45ミリ秒
β5=45ミリ秒
γ5=67.5ミリ秒
γ23=60ミリ秒
β34=35ミリ秒
γ34=60ミリ秒
α45=45ミリ秒
β45=45ミリ秒
γ45=67.5ミリ秒
β345=60ミリ秒
γ234=90ミリ秒
γ345=127.5ミリ秒
γ2345=157.5ミリ秒
【0086】
推定部106は、以上のように算出した各処理時間の推定値に基づいて、変換部102、圧縮部103および送信部104の各処理部が、上述した第1処理方式で処理を実行した場合と、第2処理方式で処理を実行した場合との組み合わせごとに、応答時間を推定する。
【0087】
図8に示した例では、時刻t2において、変換部102がシーケンス番号4の画面更新に対する変換処理を実行中であり、圧縮部103がシーケンス番号3の画面更新に対する圧縮処理を実行中であり、送信部104がシーケンス番号2の画面更新に対する送信処理を実行中である。ここで、変換部102は、第1処理方式で処理を実行する場合には、シーケンス番号4の画面更新に対する変換処理が終了した後に、シーケンス番号5の画面更新に対する変換処理を実行する。また、変換部102は、第2処理方式で処理を実行する場合には、シーケンス番号4の画面更新に対する変換処理を中断し、シーケンス番号4と5をマージした画面更新に対する変換処理を実行する。また、圧縮部103は、第1処理方式で処理を実行する場合には、シーケンス番号3の画面更新に対する圧縮処理が終了した後に、変換部102による変換処理が終了した画面更新に対する圧縮処理を実行する。また、圧縮部103は、第2処理方式で処理を実行する場合には、シーケンス番号3の画面更新に対する変換処理を中断し、シーケンス番号3の画面更新と変換部102による変換処理が終了した画面更新をマージした画面更新に対する変換処理を実行する。また、送信部104は、第1処理方式で処理を実行する場合には、シーケンス番号2の画面更新に対する送信処理が終了した後に、圧縮部103による圧縮処理が終了した画面更新に対する送信処理を実行する。また、送信部104は、第2処理方式で処理を実行する場合には、シーケンス番号2の画面更新に対する送信処理を中断し、シーケンス番号2の画面更新と圧縮部103による圧縮処理が終了した画面更新をマージした画面更新に対する送信処理を実行する。
【0088】
変換部102、圧縮部103および送信部104の各処理部が、第1処理方式で処理を実行した場合と、第2処理方式で処理を実行した場合との組み合わせは、上述したように、変換部102:第1処理方式/第2処理方式、圧縮部103:第1処理方式/第2処理方式、送信部104:第1処理方式/第2処理方式、の計2×2×2=8通りの組み合わせとなる。推定部106は、これら8通りの組み合わせのそれぞれについて、上記の各処理時間の推定値を用いて、以下の8通りの応答時間、すなわちシーケンス番号5の画面更新(ユーザ操作により発生した更新領域の画面更新)に対する送信処理が終了するまでの所要時間の推定値RA〜RHを算出する。
RA=変換部102:第1処理方式、圧縮部103:第1処理方式、送信部104:第1処理方式
RB=変換部102:第1処理方式、圧縮部103:第1処理方式、送信部104:第2処理方式
RC=変換部102:第1処理方式、圧縮部103:第2処理方式、送信部104:第1処理方式
RD=変換部102:第1処理方式、圧縮部103:第2処理方式、送信部104:第2処理方式
RE=変換部102:第2処理方式、圧縮部103:第1処理方式、送信部104:第1処理方式
RF=変換部102:第2処理方式、圧縮部103:第1処理方式、送信部104:第2処理方式
RG=変換部102:第2処理方式、圧縮部103:第2処理方式、送信部104:第1処理方式
RH=変換部102:第2処理方式、圧縮部103:第2処理方式、送信部104:第2処理方式
【0089】
RHは、変換部102、圧縮部103および送信部104の全てが第2処理方式により処理を実行するときの応答時間の推定値である。図12は、このときの検出部101、変換部102、圧縮部103および送信部104の各処理部による処理が時間軸に沿って進行する様子を示す図である。この図12の例では、時刻t2で、変換部102、圧縮部103および送信部104の全てが実行中の処理を中断する。このとき、変換部102は変換処理を中断したシーケンス番号4の画面更新を保持し、圧縮部103は圧縮処理を中断したシーケンス番号3の画面更新を保持し、送信部104は送信処理を中断したシーケンス番号2の画面更新を保持する。
【0090】
この場合、変換部102は、変換処理を中断したシーケンス番号4の画面更新と、検出部101から新たに出力されたシーケンス番号5の画面更新とをマージし、マージした画面更新に対して変換処理を実行する。この変換処理に要する処理時間はα45である。その後、変換部102による変換処理が終了すると、圧縮部103が、圧縮処理を中断したシーケンス番号3の画面更新と、変換部102による変換処理が終了した画面更新とをマージし、マージした画面更新に対して圧縮処理を実行する。この圧縮処理に要する処理時間はβ345である。最後に、送信部104が、送信処理を中断したシーケンス番号2の画面更新と、圧縮部103による圧縮処理が終了した画面更新とをマージし、マージした画面更新に対して送信処理を実行する。この送信処理に要する処理時間はγ2345である。RH(図12中のt1とt5の差)は、これらの処理時間の総和として求められる。すなわち、RH=α45+β345+γ2345=45+60+157.5=262.5ミリ秒と算出される。
【0091】
REは、変換部102のみが第2処理方式による処理を実行し、圧縮部103および送信部は第1処理方式による処理を実行するときの応答時間の推定値である。図14は、このときの検出部101、変換部102、圧縮部103および送信部104の各処理部による処理が時間軸に沿って進行する様子を示す図である。この図14の例では、時刻t2で、変換部102のみが実行中の処理を中断する。このとき、変換部102は変換処理を中断したシーケンス番号4の画面更新を保持する。
【0092】
この場合、変換部102は、変換処理を中断したシーケンス番号4の画面更新と、検出部101から新たに出力されたシーケンス番号5の画面更新とをマージし、マージした画面更新に対して変換処理を実行する。この変換処理に要する処理時間はα45である。このとき、圧縮部103は、シーケンス番号3の画面更新に対する圧縮処理を中断することなく実行し、送信部104は、シーケンス番号2の画面更新に対する圧縮処理を中断することなく実行する。このときの圧縮処理に要する処理時間はβ3であり、送信処理に要する処理時間はγ2である。また、圧縮部103により圧縮処理が施されたシーケンス番号3の画面更新は、送信部104がシーケンス番号2の画面更新に対する送信処理を終了した段階で送信部104に出力される。送信部104は、シーケンス番号2の画面更新に対する送信処理を終了した後、シーケンス番号3の画面更新に対する送信処理を実行する。このときの送信処理に要する処理時間はγ3である。
【0093】
シーケンス番号4と5をマージした画面更新に対して、変換部102による変換処理が終了すると、圧縮部103が、この画面更新に対して圧縮処理を実行する。この圧縮処理に要する処理時間はβ45である。また、この画面更新に対する圧縮部103の圧縮処理が終了すると、送信部104が、この画面更新に対して送信処理を実行する。この送信処理に要する処理時間はγ45である。RE(図14中のt1とt5の差)は、これらの処理時間の大小に基づいて決定され、一般には、RE=Max(Max(t2−t0+α45,β3,γ2)+β45,Max(β3,γ2)+γ3)+γ45−(t1−t0)と書き下せる。よってこの場合は、RE=Max(Max(15+45,20,30)+45,Max(20,30)+30)+67.5−5=167.5ミリ秒と算出される。
【0094】
RAは、変換部102、圧縮部103および送信部104の全てが第1処理方式により処理を実行するときの応答時間の推定値である。図15は、このときの検出部101、変換部102、圧縮部103および送信部104の各処理部による処理が時間軸に沿って進行する様子を示す図である。この図15の例では、変換部102、圧縮部103および送信部104の各処理部は、実行中の処理を中断せず、したがって、画面更新のマージは一切行われない。この場合、各処理部は、実行中の処理が終了すれば次の処理部が処理可能状態となるまで待機し、次の処理部が処理可能状態となったら、処理が終了した画面更新を渡すという手続きを繰り返す。RA(図中のt1とt6の差)は、各処理部でそれぞれ実行される処理に要する処理時間の大小に基づいて決定され、一般には、RA=Max(Max(Max(α4,β3,γ2)+α5,Max(α4,β3,γ2)+β4,Max(β3,γ2)+γ3)+β5,Max(Max(α4,β3,γ2)+β4,Max(β3,γ2)+γ3)+γ4)+γ5−(t1−t0)と書き下せる。よってこの場合は、RA=Max(Max(Max(20,20,30)+45,Max(20,20,30)+20,Max(20,30)+30)+45,Max(Max(20,20,30)+20,Max(20,30)+30)+30)+67.5−5=182.5ミリ秒と算出される。
【0095】
同様にして、他の応答時間の推定値は、それぞれ次のように求められる。
RB=Max(Max(Max(α4,β3)+α5,Max(α4,β3)+β4,β3+γ23)+β5,Max(Max(α4,β3)+β4,β3+γ23)+γ4)+γ5−(t1−t0)=187.5ミリ秒
RC=Max(Max(α4+α5,α4+β34,γ2)+β5,Max(α4+β34,γ2)+γ34)+γ5−(t1−t0)=177.5ミリ秒
RD=Max(Max(α4+α5,α4+β34)+β5,α4+β34+γ234)+γ5−(t1−t0)=207.5ミリ秒
RF=Max(Max(t2−t0+α45,β3)+β45,β3+γ23)+γ45−(t1−t0)=167.5ミリ秒
RG=Max(t2−t0+α45+β345,γ2)+γ345−(t1−t0)=242.5ミリ秒
【0096】
推定部106は、以上のようにして各処理部の処理方式の組み合わせごとの応答時間の推定値RA〜RHを算出すると、その組み合わせごとの応答時間の推定値RA〜RHを決定部107に出力し、各処理部の処理方式の決定を依頼する。決定部107は、推定部106から受け取った各処理部の処理方式の組み合わせごとの応答時間の推定値RA〜RHに基づいて、各処理部それぞれについて、第1処理方式により処理を実行するか、第2処理方式により処理を実行するかを決定する。
【0097】
ここで、決定部107が各処理部の処理方式を決定する基準としては、例えば、各処理部の処理方式の組み合わせのうち、応答時間の推定値が最小となる組み合わせに従って、各処理部の処理方式を決定することが考えられる。この場合、応答時間の推定値が最小となる組み合わせが複数存在する場合は、第2処理方式により処理を実行する処理部の個数(つまり、実行中の処理を中断する回数)が最小となる組み合わせを選択すればよい。例えば、上述した例においては、REとRFの値がいずれも167.5ミリ秒で最小である。また、中断の回数はREが1回、RFが2回である。したがって、上記の基準を採用した場合、決定部107は、REの組み合わせに従って、変換部102は第2処理方式により処理を実行し、圧縮部103は第1処理方式により処理を実行し、送信部104は第1処理方式により処理を実行すると決定する。
【0098】
また、決定部107が各処理部の処理方式を決定する基準としては、例えば、応答時間の推定値が予め定めた閾値以下となる組み合わせのうち、第2処理方式により処理を実行する処理部の個数(つまり、実行中の処理を中断する回数)が最小となる組み合わせに従って、各処理部の処理方式を決定することが考えられる。例えば、閾値が200ミリ秒と定められている場合、上述した例においては、RA、RB、RC、RE、RFの5つが、それぞれ閾値以下となる。そして、中断の回数はRAが0回、RBが1回、RCが1回、REが1回、RFが2回である。したがって、上記の基準を採用した場合、決定部107は、RAの組み合わせに従って、変換部102、圧縮部103および送信部104の全てが第1処理方式により処理を実行すると決定する。
【0099】
決定部107が以上のような基準により、各処理部の処理方式を決定するようにすれば、応答時間が小さくなる処理方式の組み合わせを採用することで応答性の向上が図られるだけでなく、中断の回数が小さくなる組み合わせを優先的に採用することで、クライアント端末2へ送信される画面更新の数を最大化し、つまりは描画コマ数(フレームレート)の低下を最小限に抑えるという効果が見込める。
【0100】
なお、本実施形態では、上記のRA〜RHの全ての応答時間の推定値を算出しているが、必ずしも毎回全ての応答時間の推定値を算出する必要はない。例えば、推定部106が上記のRA〜RHの過去の複数回の算出結果を記憶しておき、結果の悪かった(応答時間が大きかった)組み合わせについては、その後、予め定めた所定期間の間、応答時間の推定値を算出する対象から除外するようにしてもよい。
【0101】
また、決定部107は、各処理部の処理方式についての決定結果を、予め定めた所定期間の間保持し、この期間内に新たなユーザ操作に基づく優先度の高い更新領域が検出された場合には、その保持した決定結果を再利用するようにしてもよい。すなわち、一度算出した組み合わせごとの応答時間は当面の間は同じ傾向が持続することが予期されるため、このような応答時間に基づく各処理部の処理方式の決定結果は、所定期間の間は再利用できると考えられる。このような決定結果の再利用を行うことで、応答時間の推定値の精度を維持しつつ、処理演算の負荷を削減することが可能となる。
【0102】
また、決定部107は、各処理部の処理方式についての決定結果を保持する際に、処理対象となる画面更新が属するアプリケーションの種類と決定結果との組み合わせを辞書として記憶し、新たなユーザ操作に基づく優先度の高い更新領域が検出された場合に、記憶した辞書を参照することで決定結果を再利用するようにしてもよい。この場合、同一のアプリケーションから発生する画面更新に対する処理時間は同じ傾向となることが予期されるため、処理時間の推定値の精度を確保することができる。
【0103】
なお、本実施形態では、推定部106が、各処理部での処理の中断に要する時間をゼロと近似して応答時間を推定しているが、処理の中断に要する時間を加味して応答時間を推定するようにしてもよい。すなわち、RA〜RHの各応答時間の評価式に対して、中断を行う場合に定数時間もしくは画面更新の画素数等に依存した中断処理時間を加算することができる。また、本実施形態では、推定部106が、マージ処理に要する時間をゼロと近似して応答時間を推定しているが、マージ処理に要する時間を加味して応答時間を推定するようにしてもよい。すなわち、上記のα,β,γやRA〜RHの各応答時間の評価式に対して、マージを行う場合に定数時間もしくは画面更新の画素数等に依存したマージ処理時間を加算することができる。
【0104】
決定部107は、以上のようにして各処理部における処理方式を決定すると、変換部102、圧縮部103および送信部104のうち、第2処理方式により処理を実行すると決定した処理部に対して、処理の中断の依頼を行う。上述した例において、REの組み合わせに従って各処理部の処理方式を決定した場合には、決定部107は、変換部102に対してのみ処理の中断の依頼を行う。この場合、中断の依頼を受けた変換部102は、実行中のシーケンス番号4の画面更新に対する変換処理を中断し、このシーケンス番号4の画面更新を、変換処理を開始する前の状態のままで保持する。さらに、変換部102は、記憶部105に対して変換処理を中断した画面更新のシーケンス番号4を通知し、当該エントリの処理状態を「中断」に変更する。
【0105】
以降の処理の流れは、図14を用いて説明した通りである。すなわち、検出部101は、記憶部105において処理状態が「変換処理」となるエントリが存在しないため、変換部102が処理可能な状態であると判断する。そして、検出部101は、シーケンス番号5の画面更新を変換部102に出力して、変換処理の開始を依頼する。変換部102は、これを受けて、先ほど処理を中断したシーケンス番号4の画面更新と、検出部101から受け取ったシーケンス番号5の画面更新とのマージを行い、マージ後の画面更新に対して変換処理を行う。
【0106】
その後、変換部102での変換処理が終了した時点(時刻t3)では、記憶部105において処理状態が「圧縮処理」となるエントリは存在しない。このため、変換部102は、圧縮部103が処理可能な状態であると判断し、変換処理が終了した画面更新を圧縮部103に出力して、圧縮処理を依頼する。圧縮部103は、これを受けて、変換部102から出力された画面更新に対する圧縮処理を行う。さらに、圧縮部103での圧縮処理が終了した時点(時刻t4)では、記憶部105において処理状態が「送信処理」となるエントリは存在しない。このため、圧縮部103は、送信部104が処理可能な状態であると判断し、圧縮処理が終了した画面更新を送信部104に出力して、送信処理を依頼する。送信部104は、これを受けて、圧縮部103から出力された画面更新に対する送信処理を行う。そして、送信部104は、圧縮部103から出力された画面更新に対する送信処理が終了すると、この画面更新のシーケンス番号を決定部107に通知する。これにより、決定部107は、ユーザ操作により発生した画面更新をクライアント端末2に送信する処理が完了したことを認識する。
【0107】
以上のように、本実施形態にかかる画面転送システムでは、クライアント端末2におけるポインティングデバイスのクリック操作など、所定のユーザ操作に基づいて優先度の高い更新領域が発生した場合に、サーバ端末1の推定部106が、変換部102、圧縮部103および送信部104の各処理部における処理方式(第1処理方式または第2処理方式)の組み合わせごとに応答時間を推定し、決定部107が、推定部106が推定した組み合わせごとの応答時間に基づいて、変換部102、圧縮部103および送信部104の各処理部における処理方式を決定するようにしている。したがって、表示画面の画質の劣化等を伴うことなく、ユーザ操作に応じた画面更新をクライアント端末2にすみやかに反映させることができ、良好な応答性を実現することができる。
【0108】
また、本実施形態にかかる画面転送システムでは、サーバ端末1の変換部102、圧縮部103および送信部104の各処理部が処理を中断する場合に、その後、処理を中断した画面更新とそれに続く画面更新とをマージし、マージした画面更新に対する処理を行うようにしているので、各画面更新の時間的連続性を維持して、クライアント端末2の表示画面に画像の欠落が生じることを抑制することができ、ユーザの視認性を高めることができる。
【0109】
以上説明したとおり、本実施形態によれば、良好な応答性を実現することができる。
【0110】
本実施形態にかかる画面転送システムにおいて、サーバ端末1の上述した各機能は、例えば、サーバ端末1において所定のプログラムを実行することにより実現できる。このときのサーバ端末1のハードウェア構成について、図16を用いて説明する。図16は、本実施形態にかかるサーバ端末1のハードウェア構成例を示す説明図である。
【0111】
本実施形態にかかるサーバ端末1は、CPU(Central Processing Unit)51などの制御装置と、ROM(Read Only Memory)52やRAM(Random Access Memory)53などの記憶装置と、ネットワークに接続して通信を行う通信I/F54と、HDD(Hard Disk Drive)、CD(Compact Disc)ドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置と、各部を接続するバス61を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【0112】
本実施形態にかかるサーバ端末1で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM(Compact Disk Read Only Memory)、フレキシブルディスク(FD)、CD−R(Compact Disk Recordable)、DVD(Digital Versatile Disc)等のコンピュータで読み取り可能な記録媒体に記録されてコンピュータプログラムプロダクトとして提供される。
【0113】
また、本実施形態にかかるサーバ端末1で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、本実施形態にかかるサーバ端末1で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【0114】
また、本実施形態にかかるサーバ端末1で実行されるプログラムを、サーバ端末1のROM52等に予め組み込んで提供するように構成してもよい。
【0115】
本実施形態にかかるサーバ端末1で実行されるプログラムは、サーバ端末1の各処理部(検出部101、変換部102、圧縮部103、送信部104、推定部106および決定部107など)を含むモジュール構成となっており、実際のハードウェアとしては、例えば、CPU51(プロセッサ)が上記記憶媒体からプログラムを読み出して実行することにより、上記各部が主記憶装置上にロードされ、上述した各部が主記憶装置上に生成されるようになっている。
【0116】
以上、本発明の実施形態を説明したが、ここで説明した実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。ここで説明した新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。ここで説明した実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0117】
1 サーバ端末
2 クライアント端末
101 検出部
102 変換部
103 圧縮部
104 送信部
106 推定部
107 決定部
【特許請求の範囲】
【請求項1】
外部装置が表示する表示画面の画面情報を前記外部装置に送信する情報処理装置であって、
前記表示画面の更新領域を検出する検出部と、
検出された更新領域の画面情報に対して第1処理を実行する処理部であって、第1更新領域の画面情報に対する処理が終了した後に、前記第1更新領域よりも後に検出された第2更新領域の画面情報に対する処理を実行する第1処理方式と、前記第1更新領域の画面情報に対する処理を中断して、前記第1更新領域と前記第2更新領域とを統合した更新領域の画面情報に対する処理を実行する第2処理方式とのいずれかの処理方式により前記第1処理を実行する第1処理部と、
前記第1処理が終了した更新領域の画面情報に対して第2処理を実行する処理部であって、前記第1処理方式と前記第2処理方式とのいずれかの処理方式により前記第2処理を実行する第2処理部と、
前記第1処理部の処理方式と前記第2処理部の処理方式との組み合わせごとに、前記第2更新領域の画面情報が前記外部装置に送信されるまでの所要時間を推定する推定部と、
推定された前記組み合わせごとの前記所要時間に基づいて、前記第1処理部と前記第2処理部のそれぞれについて、前記第1処理方式により処理を実行するか、または前記第2処理方式により処理を実行するかを決定する決定部と、を備えることを特徴とする情報処理装置。
【請求項2】
前記推定部は、前記第1更新領域の画面情報のデータ量および前記第2更新領域の画面情報のデータ量に基づいて、前記第1処理部と前記第2処理部のそれぞれについて、前記第1処理方式により処理を実行する場合の処理時間と、前記第2処理方式により処理を実行する場合の処理時間とを算出し、算出した処理時間に基づいて、前記組み合わせごとの前記処理時間を推定することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記第2処理は、更新領域の画面情報を前記外部装置に送信する送信処理を含み、
前記送信処理に使用する通信路の状態を測定する測定部をさらに備え、
前記推定部は、前記第2処理部が前記第1処理方式により処理を実行する場合の処理時間と、前記第2処理方式により処理を実行する場合の処理時間とを、前記第1更新領域の画面情報のデータ量および前記第2更新領域の画面情報のデータ量と前記通信路の状態とに基づいて算出することを特徴とする請求項2に記載の情報処理装置。
【請求項4】
前記決定部は、前記所要時間が最小となる組み合わせに従って、前記第1処理部と前記第2処理部のそれぞれについて、前記第1処理方式により処理を実行するか、または前記第2処理方式により処理を実行するかを決定することを特徴とする請求項1〜3のいずれか一項に記載の情報処理装置。
【請求項5】
前記決定部は、前記所要時間が最小となる組み合わせが複数存在する場合に、該複数の組み合わせのうち、前記第2処理方式により処理を実行する処理部の個数が最小となる組み合わせに従って、前記第1処理部と前記第2処理部のそれぞれについて、前記第1処理方式により処理を実行するか、または前記第2処理方式により処理を実行するかを決定することを特徴とする請求項4に記載の情報処理装置。
【請求項6】
前記決定部は、前記所要時間が予め定めた閾値以下となる組み合わせが複数存在する場合に、該複数の組み合わせのうち、前記第2処理方式により処理を実行する処理部の個数が最小となる組み合わせに従って、前記第1処理部と前記第2処理部のそれぞれについて、前記第1処理方式により処理を実行するか、または前記第2処理方式により処理を実行するかを決定することを特徴とする請求項1〜3のいずれか一項に記載の情報処理装置。
【請求項7】
前記推定部は、前記第1更新領域よりも前記第2更新領域の優先度が高い場合に、前記組み合わせごとの前記所要時間を推定し、
前記決定部は、前記第1更新領域よりも前記第2更新領域の優先度が高い場合に、前記第1処理部と前記第2処理部のそれぞれについて、前記第1処理方式により処理を実行するか、または前記第2処理方式により処理を実行するかを決定することを特徴とする請求項1〜6のいずれか一項に記載の情報処理装置。
【請求項8】
前記第2更新領域が前記外部装置に入力された所定の操作に基づく更新領域であり、前記第1更新領域が前記所定の操作に基づかない更新領域である場合に、前記第1更新領域よりも前記第2更新領域の優先度が高いことを特徴とする請求項7に記載の情報処理装置。
【請求項9】
前記決定部は、予め定めた所定期間の間は、前記第1処理部と前記第2処理部のそれぞれについて、前記第1処理方式により処理を実行するか、または前記第2処理方式により処理を実行するかの決定結果を保持することを特徴とする請求項1〜8のいずれか一項に記載の情報処理装置。
【請求項10】
外部装置が表示する表示画面の画面情報を前記外部装置に送信するコンピュータに、
前記表示画面の更新領域を検出する検出部の機能と、
検出された更新領域の画面情報に対して第1処理を実行する処理部であって、第1更新領域の画面情報に対する処理が終了した後に、前記第1更新領域よりも後に検出された第2更新領域の画面情報に対する処理を実行する第1処理方式と、前記第1更新領域の画面情報に対する処理を中断して、前記第1更新領域と前記第2更新領域とを統合した更新領域の画面情報に対する処理を実行する第2処理方式とのいずれかの処理方式により前記第1処理を実行する第1処理部の機能と、
前記第1処理が終了した更新領域の画面情報に対して第2処理を実行する処理部であって、前記第1処理方式と前記第2処理方式とのいずれかの処理方式により前記第2処理を実行する第2処理部の機能と、
前記第1処理部の処理方式と前記第2処理部の処理方式との組み合わせごとに、前記第2更新領域の画面情報が前記外部装置に送信されるまでの所要時間を推定する推定部の機能と、
推定された前記組み合わせごとの前記所要時間に基づいて、前記第1処理部と前記第2処理部のそれぞれについて、前記第1処理方式により処理を実行するか、または前記第2処理方式により処理を実行するかを決定する決定部の機能と、を実現させることを特徴とするプログラム。
【請求項1】
外部装置が表示する表示画面の画面情報を前記外部装置に送信する情報処理装置であって、
前記表示画面の更新領域を検出する検出部と、
検出された更新領域の画面情報に対して第1処理を実行する処理部であって、第1更新領域の画面情報に対する処理が終了した後に、前記第1更新領域よりも後に検出された第2更新領域の画面情報に対する処理を実行する第1処理方式と、前記第1更新領域の画面情報に対する処理を中断して、前記第1更新領域と前記第2更新領域とを統合した更新領域の画面情報に対する処理を実行する第2処理方式とのいずれかの処理方式により前記第1処理を実行する第1処理部と、
前記第1処理が終了した更新領域の画面情報に対して第2処理を実行する処理部であって、前記第1処理方式と前記第2処理方式とのいずれかの処理方式により前記第2処理を実行する第2処理部と、
前記第1処理部の処理方式と前記第2処理部の処理方式との組み合わせごとに、前記第2更新領域の画面情報が前記外部装置に送信されるまでの所要時間を推定する推定部と、
推定された前記組み合わせごとの前記所要時間に基づいて、前記第1処理部と前記第2処理部のそれぞれについて、前記第1処理方式により処理を実行するか、または前記第2処理方式により処理を実行するかを決定する決定部と、を備えることを特徴とする情報処理装置。
【請求項2】
前記推定部は、前記第1更新領域の画面情報のデータ量および前記第2更新領域の画面情報のデータ量に基づいて、前記第1処理部と前記第2処理部のそれぞれについて、前記第1処理方式により処理を実行する場合の処理時間と、前記第2処理方式により処理を実行する場合の処理時間とを算出し、算出した処理時間に基づいて、前記組み合わせごとの前記処理時間を推定することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記第2処理は、更新領域の画面情報を前記外部装置に送信する送信処理を含み、
前記送信処理に使用する通信路の状態を測定する測定部をさらに備え、
前記推定部は、前記第2処理部が前記第1処理方式により処理を実行する場合の処理時間と、前記第2処理方式により処理を実行する場合の処理時間とを、前記第1更新領域の画面情報のデータ量および前記第2更新領域の画面情報のデータ量と前記通信路の状態とに基づいて算出することを特徴とする請求項2に記載の情報処理装置。
【請求項4】
前記決定部は、前記所要時間が最小となる組み合わせに従って、前記第1処理部と前記第2処理部のそれぞれについて、前記第1処理方式により処理を実行するか、または前記第2処理方式により処理を実行するかを決定することを特徴とする請求項1〜3のいずれか一項に記載の情報処理装置。
【請求項5】
前記決定部は、前記所要時間が最小となる組み合わせが複数存在する場合に、該複数の組み合わせのうち、前記第2処理方式により処理を実行する処理部の個数が最小となる組み合わせに従って、前記第1処理部と前記第2処理部のそれぞれについて、前記第1処理方式により処理を実行するか、または前記第2処理方式により処理を実行するかを決定することを特徴とする請求項4に記載の情報処理装置。
【請求項6】
前記決定部は、前記所要時間が予め定めた閾値以下となる組み合わせが複数存在する場合に、該複数の組み合わせのうち、前記第2処理方式により処理を実行する処理部の個数が最小となる組み合わせに従って、前記第1処理部と前記第2処理部のそれぞれについて、前記第1処理方式により処理を実行するか、または前記第2処理方式により処理を実行するかを決定することを特徴とする請求項1〜3のいずれか一項に記載の情報処理装置。
【請求項7】
前記推定部は、前記第1更新領域よりも前記第2更新領域の優先度が高い場合に、前記組み合わせごとの前記所要時間を推定し、
前記決定部は、前記第1更新領域よりも前記第2更新領域の優先度が高い場合に、前記第1処理部と前記第2処理部のそれぞれについて、前記第1処理方式により処理を実行するか、または前記第2処理方式により処理を実行するかを決定することを特徴とする請求項1〜6のいずれか一項に記載の情報処理装置。
【請求項8】
前記第2更新領域が前記外部装置に入力された所定の操作に基づく更新領域であり、前記第1更新領域が前記所定の操作に基づかない更新領域である場合に、前記第1更新領域よりも前記第2更新領域の優先度が高いことを特徴とする請求項7に記載の情報処理装置。
【請求項9】
前記決定部は、予め定めた所定期間の間は、前記第1処理部と前記第2処理部のそれぞれについて、前記第1処理方式により処理を実行するか、または前記第2処理方式により処理を実行するかの決定結果を保持することを特徴とする請求項1〜8のいずれか一項に記載の情報処理装置。
【請求項10】
外部装置が表示する表示画面の画面情報を前記外部装置に送信するコンピュータに、
前記表示画面の更新領域を検出する検出部の機能と、
検出された更新領域の画面情報に対して第1処理を実行する処理部であって、第1更新領域の画面情報に対する処理が終了した後に、前記第1更新領域よりも後に検出された第2更新領域の画面情報に対する処理を実行する第1処理方式と、前記第1更新領域の画面情報に対する処理を中断して、前記第1更新領域と前記第2更新領域とを統合した更新領域の画面情報に対する処理を実行する第2処理方式とのいずれかの処理方式により前記第1処理を実行する第1処理部の機能と、
前記第1処理が終了した更新領域の画面情報に対して第2処理を実行する処理部であって、前記第1処理方式と前記第2処理方式とのいずれかの処理方式により前記第2処理を実行する第2処理部の機能と、
前記第1処理部の処理方式と前記第2処理部の処理方式との組み合わせごとに、前記第2更新領域の画面情報が前記外部装置に送信されるまでの所要時間を推定する推定部の機能と、
推定された前記組み合わせごとの前記所要時間に基づいて、前記第1処理部と前記第2処理部のそれぞれについて、前記第1処理方式により処理を実行するか、または前記第2処理方式により処理を実行するかを決定する決定部の機能と、を実現させることを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【公開番号】特開2013−41399(P2013−41399A)
【公開日】平成25年2月28日(2013.2.28)
【国際特許分類】
【出願番号】特願2011−177542(P2011−177542)
【出願日】平成23年8月15日(2011.8.15)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成25年2月28日(2013.2.28)
【国際特許分類】
【出願日】平成23年8月15日(2011.8.15)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]