(57)【特許請求の範囲】
【請求項１】
画像を表示するクライアント装置にネットワークを介して接続するサーバ装置であって、
前記クライアント装置に入力された操作を表す操作情報を前記クライアント装置から受信する受信部と、
前記操作情報に応じた表示画像を取得する取得部と、
前記クライアント装置に送信した画像である送信画像と前記表示画像との間で画素情報が一致しない領域を抽出する差分抽出部と、
前記操作情報を受信してから前記表示画像が取得されるまでの経過時間を推定する推定部と、
前記経過時間に基づいて、前記操作情報を受信してから前記操作情報に対する応答を前記クライアント装置に送信するまでの応答時間と画質との関係を表す式を推定し、推定した式を用いて前記応答時間が所定値以下となる画質のうち最高の画質を決定する決定部と、
決定された前記画質で前記領域の画像を圧縮した圧縮画像を生成する圧縮部と、
前記圧縮画像を前記クライアント装置に送信する送信部と、
を備えたことを特徴とするサーバ装置。
【請求項２】
前記推定部は、過去に受信した前記操作情報に応じた前記表示画像の取得を前記取得部が開始してから、該表示画像に対応する前記圧縮画像の前記クライアント装置に対する送信を前記送信部が完了するまでの処理時間に基づいて、前記経過時間を推定すること、
を特徴とする請求項１に記載のサーバ装置。
【請求項３】
前記処理時間の履歴を記憶する履歴記憶部をさらに備え、
前記推定部は、前記履歴記憶部に記憶された前記処理時間に基づいて、前記経過時間を推定すること、
を特徴とする請求項２に記載のサーバ装置。
【請求項４】
前記推定部は、前記履歴記憶部に記憶された前記処理時間の最大値を、前記経過時間の推定値として推定すること、
を特徴とする請求項３に記載のサーバ装置。
【請求項５】
前記推定部は、前記履歴記憶部に記憶された前記処理時間の平均値を、前記経過時間の推定値として推定すること、
を特徴とする請求項３に記載のサーバ装置。
【請求項６】
画像を表示するクライアント装置にネットワークを介して接続するサーバ装置で実行される通信方法であって、
前記クライアント装置に入力された操作を表す操作情報を前記クライアント装置から受信する受信ステップと、
前記操作情報に応じた表示画像を取得する取得ステップと、
前記クライアント装置に送信した画像である送信画像と前記表示画像との間で画素情報が一致しない領域を抽出する差分抽出ステップと、
前記操作情報を受信してから前記表示画像が取得されるまでの経過時間を推定する推定ステップと、
前記経過時間に基づいて、前記操作情報を受信してから前記操作情報に対する応答を前記クライアント装置に送信するまでの応答時間と画質との関係を表す式を推定し、推定した式を用いて前記応答時間が所定値以下となる画質のうち最高の画質を決定する決定ステップと、
決定された前記画質で前記領域の画像を圧縮した圧縮画像を生成する圧縮ステップと、
前記圧縮画像を前記クライアント装置に送信する送信ステップと、
を含むことを特徴とする通信方法。
【請求項７】
画像を表示するクライアント装置にネットワークを介して接続するコンピュータを、
前記クライアント装置に入力された操作を表す操作情報を前記クライアント装置から受信する受信部と、
前記操作情報に応じた表示画像を取得する取得部と、
前記クライアント装置に送信した画像である送信画像と前記表示画像との間で画素情報が一致しない領域を抽出する差分抽出部と、
前記操作情報を受信してから前記表示画像が取得されるまでの経過時間を推定する推定部と、
前記経過時間に基づいて、前記操作情報を受信してから前記操作情報に対する応答を前記クライアント装置に送信するまでの応答時間と画質との関係を表す式を推定し、推定した式を用いて前記応答時間が所定値以下となる画質のうち最高の画質を決定する決定部と、
決定された前記画質で前記領域の画像を圧縮した圧縮画像を生成する圧縮部と、
前記圧縮画像を前記クライアント装置に送信する送信部、
として機能させるためのサーバプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、サーバ装置、通信方法およびプログラムに関する。
【背景技術】
【０００２】
ネットワークを介して接続されたサーバ端末（サーバ装置）から複数のクライアント端末（クライアント装置）に対してサーバ装置の画面の情報をパケット化してリアルタイムで配信する画面転送システムが知られている。クライアント装置は、サーバ装置が保持する画面領域の一部または全部の領域における画面情報を受け取り表示する。また、クライアント装置で実行されたユーザの操作に関する情報はサーバ装置に伝送される。このような画面転送システムは、遠隔のサーバ装置の画面の情報を手元の装置で表示し参照できるようになることから、例えば遠隔監視システムなど、様々な用途での応用が期待される。
【０００３】
画面転送システムを構築する際には、サーバ装置が保持する画面領域全体の内容を一定時間おきにパケット化して各クライアント装置に向けて配信するという方法と、画面領域において描画状態に変化が生じるごとに、その差分となる情報のみを変化が生じた領域の情報とともに配信するという方法が存在する。差分を配信する後者の方法では、描画状態の変化に応じて必要な部分のみのデータ生成が行われるため、前者の方法と比較して、ネットワーク帯域を効率的に利用することができる。また、後者の方法では、単位時間当たりの描画コマ数を大きくできるなどといった利点がある。従って、一般には後者の構成によるサービスが提供されることが多い。
【０００４】
画面領域において最新の描画状態を得るための上述の差分を表す情報を画面更新と呼ぶ。直前の描画状態が記憶されたフレームバッファに対し画面更新を反映させることにより、最新の描画状態を得ることができる。
【０００５】
画面転送システムでは、画質と応答性を両立することが重要である。特に遠隔拠点間のように通信品質の十分でない環境で画面転送を行う場合、サーバ装置で取得した画面情報を無劣化でクライアント装置に伝送しようとすると、利用可能な帯域幅に比べ伝送のデータ量が大きいため、伝送が完了するまでの所要時間が非常に大きくなる。このため、クライアント装置で何らかの操作がなされてから、その操作に対応するサーバ装置上の画面変化がクライアント装置に反映されるまでの時間（応答時間）が大きくなる。すなわち、応答性が悪化する。一方、画面情報に圧縮処理を施し伝送のデータ量を下げれば応答性が良くなるが、ＪＰＥＧ等の圧縮方式は画質の劣化を伴うため、ユーザの視認性を損なうことになる。このように、通常、画質と応答性とはトレードオフの関係にある。
【０００６】
一方、取得した通信路の通信速度に応じて画面情報の画質を選択することにより、操作性と視認性を損なわないようにする方法が知られている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６−３３８２２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来技術では、所定の応答時間を実現することと、画質低下を最低限に抑えることという条件とを、同時に満たすことができないという問題があった。すなわち、画質と応答時間の関係を正確に見積もることができず、例えば所定の応答時間を実現するために必要以上に画質を下げてしまうなどの問題があった。
【０００９】
例えば、上述のように通信速度のみに基づいて画質を選択するやり方では、画質と応答時間との関係を正確に見積もることができず、最適な画質を決定することは困難である。なぜなら、応答時間とは単純に通信速度だけによって決まるものではなく、操作が反映されてから、その操作に対応する変化が実際に取得されるまでにどれだけの時間が経過したかという情報にも依存するからである。
【課題を解決するための手段】
【００１０】
実施形態のサーバ装置は、受信部と取得部と差分抽出部と推定部と決定部と圧縮部と送信部とを備える。受信部は、操作情報をクライアント装置から受信する。取得部は、操作情報に応じた表示画像を取得する。差分抽出部は、クライアント装置に送信した送信画像と表示画像との間で画素情報が一致しない領域を抽出する。推定部は、操作情報の受信から表示画像の取得までの経過時間を推定する。決定部は、経過時間に基づいて、操作情報の受信から操作情報に対する応答をクライアント装置に送信するまでの応答時間が所定値以下となる画質を決定する。圧縮部は、決定された画質で領域の画像を圧縮した圧縮画像を生成する。送信部は、圧縮画像をクライアント装置に送信する。
【図面の簡単な説明】
【００１１】
【図１】サーバ装置を含む画面転送システムの構成図。
【図２】画面更新のデータ構造を示す図。
【図３】更新する領域の一例を説明するための図。
【図４】画面転送処理の全体の流れを示すフローチャート。
【図５】履歴記憶部に記憶するデータのデータ構造の一例を示す図。
【図６】画面更新の例を説明するための図。
【図７】履歴記憶部の一例を示す図。
【図８】画質決定処理の全体の流れを示すフローチャート。
【図９】処理開始待ち時間を説明するための図。
【図１０】推定部が取得した履歴の例を示す図。
【図１１】試験的な測定の結果の例を示す図。
【図１２】平均圧縮時間ＥＡ（Ｑ）の式を表す図。
【図１３】図１２の各式を表すグラフ。
【図１４】応答時間の推定値Ｒの式を表す図。
【図１５】図１４の各式を表すグラフ。
【図１６】サーバ装置のハードウェア構成図。
【発明を実施するための形態】
【００１２】
以下に添付図面を参照して、この発明にかかるサーバ装置の好適な実施形態を詳細に説明する。
【００１３】
本実施形態にかかるサーバ装置は、過去の処理時間の履歴を参照し、画面変化が発生する操作情報を受信してから当該操作情報に対応する画像の処理開始までの経過時間（処理開始待ち時間）を推定する。そして、推定した処理開始待ち時間に応じて、所望の応答時間を実現できる画像処理時の画質を決定する。これにより、所定の応答時間を実現することと、画質低下を最低限に抑えることという条件を両立可能となる。
【００１４】
図１は、本実施形態にかかるサーバ装置１００を含む画面転送システムの構成例を示す図である。図１に示すように本実施形態の画面転送システムは、サーバとして機能する情報処理装置であるサーバ装置１００と、クライアントとして機能する情報処理装置であるクライアント装置２００とが、ネットワークを介して接続されている。サーバ装置１００と、クライアント装置２００との間のネットワーク接続形態は任意であり、例えばインターネット、ＬＡＮ（ローカルエリアネットワーク）などを適用できる。
【００１５】
サーバ装置１００は、取得部１０１と、差分抽出部１０２と、圧縮部１０３と、送信部１０４と、履歴記憶部１０５と、推定部１０６と、決定部１０７と、オペレーティングシステム１０８と、受信部１０９と、を含む。
【００１６】
取得部１０１は、任意のタイミングで、オペレーティングシステム１０８からサーバ装置１００の画面領域全体に表示する表示画像の画面情報を取得する。この表示画像は、クライアント装置２００に対してユーザ等により入力された操作を表す操作情報を反映した画像である。取得部１０１は、例えば表示画像の画面情報を取得するための所定のＡＰＩをコールする（呼び出す）ことにより画面情報を取得する。
【００１７】
差分抽出部１０２は、クライアント装置２００に対して前回送信した画像である送信画像と、表示画像との間で画素情報が一致しない領域を抽出する。例えば、差分抽出部１０２は、取得部１０１によって取得された画面情報と、前回取得された画面情報との差分を抽出する。差分抽出部１０２は、画面領域全体の画面情報を格納するための記憶領域（フレームバッファ）を有しており、取得部１０１から受け取った画面情報を格納する。さらに差分抽出部１０２は、取得部１０１から画面情報を受け取るごとに、前回格納した情報から得た差分を表す情報を画面更新として出力する。
【００１８】
図２は、画面更新のデータ構造の一例を示す図である。画面更新は、更新する領域の位置を表す領域情報と、更新する領域の更新後の画像情報との対を少なくとも１個含む。画像情報は、画面領域の一部分に相当する矩形状のビットマップデータ（矩形の各画素における赤緑青３色の値など）である。領域情報は、画面領域における画像情報の表示位置を示す数値（フレームバッファに更新画像を格納する際の格納位置を表す数値）である。
【００１９】
図３は、更新する領域の一例を説明するための図である。図３に示すように、例えば、画面領域の左上角を（０，０）、右下角を（Ｗｉｄｔｈ，Ｈｅｉｇｈｔ）としたときの、表示位置の左上座標（Ｌｅｆｔ，Ｔｏｐ）と右下座標（Ｒｉｇｈｔ，Ｂｏｔｔｏｍ）の組み合わせが領域情報である。また、画面更新は、領域情報と画像情報の対の個数を含んでいる。
【００２０】
図１に戻り、圧縮部１０３は、画面更新に含まれる画像情報に対しＪＰＥＧ等の所定の圧縮方式による圧縮処理を実行する。圧縮部１０３は、画質情報を格納するための記憶領域を有する。画質情報は、例えばＪＰＥＧであればクオリティであり、１〜１００までの１刻みの値である。圧縮部１０３は、指定された画質情報に基づいて圧縮処理を実行する。
【００２１】
送信部１０４は、入力された画面更新をネットワーク上で伝送可能な形式に変換しクライアント装置２００に対して送信する。送信部１０４は、送信処理が完了すると、取得部１０１に対して、次の画面情報の取得処理を開始するよう通知する。
【００２２】
履歴記憶部１０５は、過去に作成された画面更新の履歴を格納するための記憶領域を有する。この履歴には、画面情報の取得処理が開始された時刻、送信処理が完了した時刻、および、領域情報などの情報が格納される。なお、履歴記憶部１０５は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、光ディスク、メモリカード、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの一般的に利用されているあらゆる記憶媒体により構成することができる。
【００２３】
推定部１０６は、履歴記憶部１０５に格納された画面更新の履歴に基づいて処理開始待ち時間を推定する。処理開始待ち時間とは、ユーザの操作を表す操作情報を受信してオペレーティングシステム１０８で当該操作情報に対応する画面変化が発生してから、その画面変化を反映した画像（表示画像）を取得部１０１が取得するまでの経過時間である。
【００２４】
決定部１０７は、推定部１０６で推定された処理開始待ち時間に基づき、応答時間が所定値以下に収まるような最高限度の画質を決定する。
【００２５】
オペレーティングシステム１０８は、入出力機能、および、ディスクやメモリの管理機能など、多くのアプリケーションから共通して利用される基本的な機能や、デスクトップ環境を提供する。各機能は、ＡＰＩを介して提供される。例えば、オペレーティングシステム１０８は、デスクトップの画面情報を取得するためのＡＰＩ、キーボードやマウス等の入力操作を合成するＡＰＩ、および、現在時刻を取得するＡＰＩなどを提供する。
【００２６】
受信部１０９は、ネットワークを介してクライアント装置２００から操作情報を受信する。
【００２７】
次に、クライアント装置２００の構成例について説明する。クライアント装置２００は、受信部２０１と、伸張部２０２と、フレームバッファ２０３と、表示部２０４と、取得部２０５と、送信部２０６とを含む。
【００２８】
受信部２０１は、ネットワークを介してサーバ装置１００から画面更新を受信する。伸張部２０２は、画面更新に含まれる圧縮された画像情報（圧縮画像）に対して伸張処理を実行する。フレームバッファ２０３は、画面領域全体の画面情報を格納するための記憶領域を有しており、画面更新を受け取ると、領域情報が示す記憶領域上の情報を画像情報で上書き更新する。表示部２０４は、フレームバッファ２０３に格納された情報を表示する。取得部２０５は、ユーザからの入力操作を受け取る。送信部２０６は、入力操作を表す操作情報をネットワークに送出する。
【００２９】
次に、このように構成された本実施形態にかかるサーバ装置１００による画面転送処理について図４を用いて説明する。図４は、本実施形態における画面転送処理の全体の流れを示すフローチャートである。
【００３０】
サーバ装置１００とクライアント装置２００とが、ネットワークを介して物理的に接続されている。本実施形態では、ネットワークはＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）ネットワークであるとする。
【００３１】
画面転送を実行していない状態では、オペレーティングシステム１０８は、サーバ装置１００で実行されるオペレーティングシステム１０８や各アプリケーションの動作状態に応じて画面の状態を適宜更新する。画面転送の実行が開始されると、取得部１０１は、以下の画面更新の取得処理を実行する。
【００３２】
始めに取得部１０１は、オペレーティングシステム１０８が提供する、現在時刻を取得するＡＰＩをコールし、得られた値を画面情報の取得開始時刻として履歴記憶部１０５に出力する。図５は、履歴記憶部１０５に記憶するデータのデータ構造の一例を示す図である。図５に示すように、履歴記憶部１０５は、取得開始時刻と、送信完了時刻と、領域情報とを対応付けたデータを記憶する。履歴記憶部１０５は、入力を受け取るごとに、新たなエントリを作成し、取得開始時刻を記録する。図５では、Ｎｏ１で示したエントリ１２０１を既に記憶している状態で、取得開始時刻として「１０１１０」を受け取った後の様子を示している。このとき新規のエントリ１２０２がＮｏ２として作成され、取得開始時刻が記録される。
【００３３】
図４に戻り、取得部１０１は、デスクトップの画面情報を取得するためのＡＰＩをコールし画面情報を取得する（ステップＳ１００１）。取得部１０１は、取得した画面情報を差分抽出部１０２に出力する。
【００３４】
差分抽出部１０２は、画面情報を入力されると、自身が有するフレームバッファ内の画面情報と比較し、内容（画素値）が異なる部分（領域）を差分として抽出する（ステップＳ１００２）。画面転送の開始直後は、フレームバッファ全体の画面情報が差分として抽出される。差分抽出部１０２は、差分が抽出されたか否かを判断する（ステップＳ１００３）。差分が存在しない場合（ステップＳ１００３：Ｎｏ）、すなわちフレームバッファ内の画面情報と入力された画面情報が完全に同一である場合は、取得部１０１は、履歴記憶部１０５に最新のエントリ（図５の例ではＮｏ２）の削除を指示した後で、一定時間（３０ミリ秒など）待機し、ステップＳ１００１に戻って処理を繰り返す。
【００３５】
差分が存在する場合（ステップＳ１００３:Ｙｅｓ）、差分抽出部１０２は、圧縮部１０３に画面更新を出力する。図６は、画面更新の例を説明するための図である。ここでは、フレームバッファの解像度を６４０×４８０とし、フレームバッファに格納された画面情報１１０１に対し、画面情報１１０２が入力されたと仮定する。この場合、差分は、領域情報Ｌｅｆｔ＝１００、Ｔｏｐ＝１００、Ｒｉｇｈｔ＝３２０、Ｂｏｔｔｏｍ＝３２０と、領域情報Ｌｅｆｔ＝３２０、Ｔｏｐ＝２００、Ｒｉｇｈｔ＝５２０、Ｂｏｔｔｏｍ＝４２０に相当する。差分抽出部１０２は、これらの領域情報と対応する部分の画面情報との対を画面更新として生成する。差分抽出部１０２は、画面更新の生成が終了すると、圧縮部１０３に画面更新を出力し圧縮を依頼する。
【００３６】
図４に戻り、圧縮部１０３は、画面更新を受け取ると、決定部１０７に対し画質情報の取得を依頼する（ステップＳ１００４）。決定部１０７は、自身が有する記憶領域に格納された画質情報を返答する。圧縮部１０３は、この画質情報に基づいて画像情報の圧縮を行う（ステップＳ１００５）。圧縮部１０３は、圧縮処理が完了すると、領域情報と圧縮された画像情報からなる画面更新を送信部１０４に出力する。
【００３７】
送信部１０４は、画面更新を受け取ると、ＴＣＰ／ＩＰヘッダを画面更新に付与しネットワークにて伝送可能な形式に変換した後で、クライアント装置２００に向けて画面更新を送信する（ステップＳ１００６）。送信された画面更新は、クライアント装置２００の受信部２０１によって受信される。送信部１０４は、送信が完了すると、現在時刻を取得するＡＰＩをコールし、得られた値を送信完了時刻として履歴記憶部１０５に記録する。また、送信部１０４は、送信した画面更新に含まれる領域情報を履歴記憶部１０５に記録する。
【００３８】
図７は、このような処理を行った後の履歴記憶部１０５の一例を示す図である。図７のエントリ１３０２は、図５のエントリ１２０２に対して送信完了時刻および領域情報が追記されたエントリに相当する。
【００３９】
この後、送信部１０４は、取得部１０１に対し、次の画面情報の取得を依頼する。以後、ステップＳ１００１以降の処理が継続される。
【００４０】
次に、画面更新を受信したクライアント装置２００による画面更新処理について説明する。クライアント装置２００の受信部２０１は、ネットワークを介して画面更新を受信すると、付与されたＴＣＰ／ＩＰを除去した上で、これを伸張部２０２に出力し、画像情報の伸張を依頼する。伸張部２０２は、画面更新を受け取ると、圧縮された画像情報の伸張を行う。伸張後の画像情報を含む画面更新をフレームバッファ２０３に出力する。フレームバッファ２０３は、画面更新を受け取ると、領域情報が示す記憶領域上の情報を画像情報で上書き更新する。フレームバッファ２０３上の情報は、表示部２０４に表示される。
【００４１】
以上、サーバ装置１００で画面更新が取得されてからクライアント装置２００で反映されるまでの処理の流れについて説明した。
【００４２】
次に、決定部１０７が画質を決定する画質決定処理の流れを図８を利用して説明する。図８は、本実施形態における画質決定処理の全体の流れを示すフローチャートである。
【００４３】
決定部１０７の内部では、定期的なタイミングでシグナルを発生するタイマーが動作しており、決定部１０７はタイマーの動作ごとに以降に述べる処理を実行する（ステップＳ１４０１）。
【００４４】
決定部１０７は、始めに、推定部１０６に対して処理開始待ち時間の推定を指示する（ステップＳ１４０２）。推定部１０６は、指示を受け取ると、処理開始待ち時間の推定を行う。処理開始待ち時間とは、サーバ装置１００で、ユーザの操作に対応する画面変化が発生してから、その画面変化を取得部１０１が取得するまでの経過時間である。
【００４５】
図９は、処理開始待ち時間を説明するための図である。図９では、時間軸に対し、画面情報取得、差分抽出、圧縮、および、送信の各処理に要する時間が順に並んでいる。さらに送信処理が終わった後は、さらにその次の画面情報取得以降の処理が繰り返し行われている。
【００４６】
さて、今、図中の左側の矢印で示す「画面変化の発生」と書かれた時刻で、ユーザの操作によりオペレーティングシステム１０８において画面の内容に変化が生じたと仮定する。このとき、この画面変化を含んだ画面情報の取得は、実際にはこのタイミングではなく、これより後の右側の矢印で示す「画面情報の取得処理の開始」と書かれた時刻で行われる。推定部１０６は、この２つの矢印の間の時間間隔の推定値を算出する構成部である。
【００４７】
図８に戻り、推定部１０６による処理開始待ち時間の推定処理の手順を示す。始めに推定部１０６は、履歴記憶部１０５に対し、記憶している全てのエントリの出力を依頼する（ステップＳ１４０３）。履歴記憶部１０５は、エントリの出力後（ステップＳ１４０４）、すべてのエントリを記憶領域から削除する。
【００４８】
次に、推定部１０６は、送信完了時刻と取得開始時刻との差を各エントリについて算出し、算出した差のうち最大値を処理開始待ち時間の推定値とする（ステップＳ１４０５）。図１０は、推定部１０６が取得した履歴の例を示す図である。図１０の例では、エントリ１５０１（Ｎｏ１）に対する送信完了時刻と取得開始時刻との差は１０１００−１００００＝１１０、エントリ１５０２（Ｎｏ２）に対しては１０２７０−１０１１０＝１６０、エントリ１５０３（Ｎｏ３）に対しては１０４５０−１０２７０＝１８０である。このため、最大値である１８０（ミリ秒）が、処理開始待ち時間の推定値となる。推定部１０６は、この推定値を決定部１０７に返す（ステップＳ１４０６）。この方法により算出された値は、サーバ装置１００で画面情報の取得処理が実行される時間間隔の最大値に相当する。画面変化の発生（図９における左側の矢印）が時間軸上のいずれの箇所で発生するか予見できない状況において、取りうる最大の値を処理開始待ち時間として見なしている。
【００４９】
なお、必ずしも送信完了時刻と取得開始時刻との差の最大値を処理開始待ち時間の推定値としなくともよい。例えば、送信完了時刻と取得開始時刻との差の平均値を推定値とすることも可能である。また、例えば、履歴記憶部１０５が記録する値を、取得開始時刻のみとしておき、記録された時刻の間隔の最大値を処理開始待ち時間の推定値としてもよい。この場合、履歴記憶部１０５に記録すべきデータ量を節減できる。なお、上述のように送信完了時刻と取得開始時刻とを共に記憶する構成では、処理開始待ち時間をより高精度に算出できる。例えば、図１０ではＮｏ２およびＮｏ３の取得開始時刻と、Ｎｏ１およびＮｏ２の送信完了時刻とがそれぞれ一致しているが、仮にこれらが一致しない状況であっても、より正確な処理開始待ち時間を算出できる。
【００５０】
図８に戻り、決定部１０７は、処理開始待ち時間の推定値を受け取ると、この値を用いて画質を決定する（ステップＳ１４０７）。以降、入力された処理開始待ち時間の推定値をＷ［単位：秒］と書く。決定部１０７は、パラメータとして、「応答時間の保証値」ＲＧを有する。応答時間の保証値とは、どのような画面変化が発生したとしても、応答時間をこの値以下に抑えることを保証する値である。応答時間の保証値は、決定部１０７の内部に静的に記述されていてもよいし、ＧＵＩ等を通じてユーザが直接的（数値をユーザが指定する）または間接的（特定の数値と対応づけられた「画質優先モード」「応答性優先モード」のいずれかをユーザが選択する）に指定するものであってもよい。決定部１０７は、どのような画質を選択すれば、いかなる画面変化が生じたとしても応答時間が保証値以下に収まるかを導出し、これを画質の決定値とする。この導出を行うために、決定部１０７は、ある画質を選択したときの応答時間の推定値Ｒ［単位：秒］を以下の（１）式により算出する。
（応答時間の推定値Ｒ）＝（処理開始待ち時間の推定値Ｗ）
＋（画面情報取得時間の推定値Ｇ）
＋（差分抽出時間の推定値Ｄ）
＋（圧縮時間の推定値Ｅ）
＋（送信時間の推定値Ｔ）  ・・・（１）
【００５１】
このうち、右辺の圧縮時間と送信時間は画質に依存する値である。決定部１０７は、各時間を次のようにして推定する。
【００５２】
決定部１０７は、処理開始待ち時間の推定値Ｗについては、推定部１０６から返された値をそのまま用いる。
【００５３】
画面情報取得時間の推定値Ｇと差分抽出時間の推定値Ｄの和Ｇ＋Ｄは、静的な定数として決定部１０７の内部に記述されていているものとする。または、画面転送の開始直後は任意のデフォルト値を設定した上で、その後の任意のタイミングで実際の画面情報取得時間と差分抽出時間の測定を行い、Ｇ＋Ｄの値をリフレッシュしても良い。その場合、取得部１０１は、画面情報の取得を行う前に、オペレーティングシステム１０８が提供するＡＰＩをコールして現在時刻を取得し、取得した値と画面情報とをセットにして差分抽出部１０２に渡す。そして、差分抽出部１０２は、差分抽出が完了した時点で再びＡＰＩをコールして現在時刻を取得し、２つの時刻の差を取ることで、画面情報取得時間と差分抽出時間の和を得ることができる。さらに差分抽出部１０２は、この和の値を、圧縮部１０３を介して決定部１０７に渡す。これにより、決定部１０７は、画面情報取得時間と差分抽出時間の和の測定値を得ることができる。
【００５４】
圧縮時間の推定値Ｅは、ある画質Ｑを選択したときの単位画素あたりの平均圧縮時間ＥＡ（Ｑ）［単位：秒］が静的な関数として決定部１０７の内部に記述されているものとする。決定部１０７は、オペレーティングシステム１０８が提供するＡＰＩを用いてサーバ装置１００の画面全体の画素数を取得し、取得した画素数にＥＡ（Ｑ）を乗じ、これを圧縮時間の推定値とする。すなわち、サーバ装置１００で発生し得る最大サイズの画面更新に対する圧縮時間を圧縮時間の推定値として見なしている。なお、平均圧縮時間ＥＡ（Ｑ）は、静的な値以外としてもよい。例えば、画面転送の開始直後は任意のデフォルト値を設定し、その後の任意のタイミングで試験的に各画質での圧縮を行い、そのときの圧縮時間を各Ｑの値に対するＥＡ（Ｑ）の値として記憶して利用してもよい。または、さらに定期的に再試験を行い記憶した値をリフレッシュしてもよい。
【００５５】
送信時間の推定値Ｔは、ある画質Ｑを選択したときの平均圧縮率ＣＡ（Ｑ）［単位：％］が静的な関数として決定部１０７の内部に記述されているものとする。さらに、送信部１０４で可能な送信レートＳ［単位：バイト／秒］が、静的な定数として決定部１０７の内部に記述されているものとする。決定部１０７は、オペレーティングシステム１０８が提供するＡＰＩを用いてサーバ装置１００の画面全体の画素数を取得し、取得した画素数に１画素あたりのバイト数（例えば３バイト／１画素）を乗じ、画面全体の圧縮前データサイズを得る。さらに、決定部１０７は、圧縮前データサイズに圧縮率ＣＡ（Ｑ）を乗じ、圧縮後データサイズを得る。さらに、決定部１０７は、圧縮後データサイズを送信レートＳで除し、これを送信時間の推定値Ｔとする。すなわち、サーバ装置１００で発生し得る最大サイズの画面更新に対する送信時間を送信時間の推定値として見なしている。
【００５６】
なお、平均圧縮率ＣＡ（Ｑ）は、静的な関数以外としてもよい。例えば、画面転送の開始直後は任意のデフォルト値を設定し、その後の任意のタイミングで試験的に各画質での圧縮を行い、そのときの圧縮率を各Ｑの値に対するＣＡ（Ｑ）の値として記憶して利用してもよい。または、さらに定期的に再試験を行い記憶した値をリフレッシュしてもよい。また、送信レートＳは、静的な値以外としてもよい。例えば、画面転送の開始直後は任意のデフォルト値を設定した上で、その後の任意のタイミングで任意の方法で送信レートの測定を行った結果を記憶して用いてもよいし、またはさらに定期的に測定を行い記憶した値をリフレッシュしてもよい。
【００５７】
なお、上記の説明では、圧縮時間および送信時間を推定する上で、画面全体の画素数を取得しこれに基づいて推定値を決定していたが、必ずしも画面全体でなくともよい。例えば、過去に受け取った画面更新の画素数の履歴を平均値として履歴記憶部１０５に別途記憶しておき、決定部１０７が、記憶した画素数の履歴を読み出して利用してもよい。または、履歴記憶部１０５に格納された画面更新の履歴の最新のエントリが持つ画素数を、決定部１０７が読み出して利用してもよい。
【００５８】
以上に述べた方法で、決定部１０７は、応答時間の推定値Ｒを算出することができる。既に述べたように、応答時間の推定値Ｒは、選択された画質によって決定される値である。決定部１０７は、応答時間の推定値Ｒが応答時間の保証値ＲＧ以下に収まるような画質の上限値を選択する。通常、応答時間は画質に対し１対１で対応づけられるため、このような画質を選択することは容易である。
【００５９】
以下に、画質決定時の処理の例を示す。決定部１０７が、画面情報取得時間と差分抽出時間との和、圧縮時間、および、送信時間を、それぞれ次のように推定したものと仮定する。
【００６０】
画面情報取得時間と差分抽出時間との和Ｇ＋Ｄは、静的な定数Ｇ＋Ｄ＝３０［単位：ミリ秒］を用いるとする。
【００６１】
圧縮時間の推定値Ｅは、ある画質Ｑ（１〜１００までの１刻みの値）を選択したときの単位画素あたりの平均圧縮時間ＥＡ（Ｑ）を、画面転送の開始直後に行う試験的な測定により求められる値とする。図１１は、試験的な測定の結果の例を示す図である。図１１の例では、可能な全ての画質Ｑについてではなく、いくつかの画質Ｑについてのみ測定を行った例を示している。そして、本例では、各測定値を直線分で結んで得られる関数を、平均圧縮時間ＥＡ（Ｑ）の推定とする。
【００６２】
図１２は、図１１で例示した測定値から得られる平均圧縮時間ＥＡ（Ｑ）の式を表す図である。また、図１３は、図１２の各式を表すグラフである。決定部１０７は、圧縮時間の推定値Ｅ＝（画面全体の画素数）×ＥＡ（Ｑ）を用いるものとする。
【００６３】
送信時間の推定値Ｔは、Ｔ＝（画面全体の画素数）×（１画素あたりのバイト数）×（ＣＡ（Ｑ）÷１００）÷Ｓを用いるとする。なお、ある画質Ｑ（１〜１００までの１刻みの値）を選択したときの平均圧縮率ＣＡ（Ｑ）を、静的な関数ＣＡ（Ｑ）＝０．５×Ｑ［単位：％］として上式に用いる。また、画面転送の開始直後に送信部１０４で可能な送信レートの測定を行い、これを送信レートＳとして上式に用いる。この例ではＳ＝１．２５×１０＾６［単位：バイト／秒］という測定結果であったと仮定する。
【００６４】
また、画面全体の画素数を６４０×４８０、１画素あたりのバイト数を３とする。また、応答時間の保証値ＲＧは、ＧＵＩを通じてユーザから提供されるものとし、ＲＧ＝５００［単位：ミリ秒］が提供されたと仮定する。また、推定部１０６から返された処理開始待ち時間の推定値をＷ＝１８０［単位：ミリ秒］とする。
【００６５】
以上の条件のもと、応答時間の推定値Ｒは、例えば０＜Ｑ≦４０の場合は次の（２）式のように導出される：
Ｒ＝Ｗ＋（Ｇ＋Ｄ）＋Ｅ＋Ｔ
＝１８０＋３０＋（画面全体の画素数）×ＥＡ（Ｑ）＋（画面全体のデータ量）×ＣＡ（Ｑ）÷Ｓ
＝１８０＋３０＋（６４０×４８０）×（（０．２５×Ｑ＋５）×１０＾（−６））＋（６４０×４８０×３）×（０．５×Ｑ÷１００）÷（１．２５×１０＾６÷１０＾３）
＝３．７６３×Ｑ＋２１１．５［単位：ミリ秒］  ・・・（２）
【００６６】
図１４は、このようにして得られる応答時間の推定値Ｒの式を表す図である。また、図１５は、図１４の各式を表すグラフである。決定部１０７は、応答時間の推定値Ｒの式から、ＲＧ＝５００［単位：ミリ秒］を満たす画質の上限値を決定する。上述の例では、図１５に示すように、ＲＧ＝５００を満たす画質はＱ＝７５であることが分かる。
【００６７】
以上のようにして、決定部１０７は画質を決定する。決定された画質は決定部１０７が有する記憶領域に保持され、圧縮部１０３から取得の要求を受け取るたびに出力する。また、決定部１０７が有するタイマーが動作し再算出が行われるたびに新規の値で上書き更新される。以上、決定部１０７による画質決定処理の流れを説明した。
【００６８】
以上のように本実施の形態によれば、決定部１０７が画質を決定する上で、ユーザの操作に対応する画面変化が発生してから、その画面変化を含む画面情報が取得されるまでの経過時間、すなわち処理開始待ち時間を応答時間の推定値に含んで画質を決定する。従来は、画質を決定する上で処理開始待ち時間は考慮されていなかった要素である。本実施形態により画質と応答時間との関係を正確に見積もることが可能となり、その結果、応答時間が所定値以下となる画質の上限を正確に決定することが可能となる。すなわち画質低下を最低限に抑えることが可能になる。
【００６９】
さらに、本実施形態では、処理開始待ち時間を推定する上で、過去の送信完了時刻と取得開始時刻の差の中で最大のものを選択する、すなわち起こり得る最大の値を処理開始待ち時間として見なしている。これにより、いかなるタイミングで操作による画面変化が発生したとしても応答時間を所定値以下に抑えるという要件を、画質低下を最低限に抑えながら実現することが可能になる。
【００７０】
さらに、本実施形態では、処理開始待ち時間を推定する上で、過去送信完了時刻と取得開始時刻の差の平均値を処理開始待ち時間として見なしている。これにより、どのようなタイミングで操作による画面変化が発生するか予知できない状況で、応答時間の平均値を所定値以下に抑えるという要件を、画質低下を最低限に抑えながら実現することが可能になる。
【００７１】
さらに、本実施形態では、応答時間を推定する上で、画面全体の画素数を用いて圧縮時間および送信時間の推定を行う。これにより、いかなる画面変化が発生したとしても応答時間を所定値以下に抑えるという要件を、画質低下を最低限に抑えながら実現することが可能になる。
【００７２】
さらに、本実施形態では、応答時間を推定する上で、過去の画面更新の画素数の平均値を用いて圧縮時間および送信時間の推定を行う。これにより、画面更新の画素数が時間的に大きく変動しない環境で、かつ、どのような画面変化が発生するか予知できない状況で、応答時間の平均値を所定値以下に抑えるという要件を、画質低下を最低限に抑えながら実現することが可能になる。
【００７３】
さらに、本実施形態では、画面情報取得時間、差分抽出時間、圧縮時間、および、送信時間を推定する上で、各処理に要した時間、これらを算出する際に用いる平均圧縮時間、平均圧縮率、および、送信レートの値の少なくとも一部を測定により求める。これにより、サーバ装置の処理性能やネットワークの品質が様々に異なる状況であっても、適応的に、応答時間を所定値以下に抑えつつ画質低下を最低限に抑えることが可能になる。
【００７４】
さらに、本実施形態では、画面情報取得時間、差分抽出時間、圧縮時間、および、送信時間を推定する上で、各処理に要した時間、これらを算出する際に用いる平均圧縮時間、平均圧縮率、および、送信レートの値の少なくとも一部を繰り返し再算出し新しい値を使用する。これにより、サーバ装置で同時に並列的に他のアプリケーションが動作するなどの理由により処理性能が変動したり、またはネットワークの輻輳などの理由によりネットワークの品質が変動したり、または画面変化をもたらすアプリケーションが変わるなどの理由により画面更新の特性が変動したりするなどしても、適応的に、応答時間を所定値以下に抑えつつ画質低下を最低限に抑えることが可能になる。
【００７５】
以上説明したとおり、本実施形態によれば、所定の応答時間を実現することと、画質低下を最低限に抑えることという条件を両立可能となる。
【００７６】
次に、本実施形態にかかるサーバ装置のハードウェア構成について図１６を用いて説明する。図１６は、本実施形態にかかるサーバ装置のハードウェア構成例を示す説明図である。
【００７７】
本実施形態にかかるサーバ装置は、ＣＰＵ（Central  Processing  Unit）５１などの制御装置と、ＲＯＭ（Read  Only  Memory）５２やＲＡＭ（Random  Access  Memory）５３などの記憶装置と、ネットワークに接続して通信を行う通信Ｉ／Ｆ５４と、ＨＤＤ（Hard  Disk  Drive）、ＣＤ（Compact  Disc）ドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置と、各部を接続するバス６１を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【００７８】
本実施形態にかかるサーバ装置で実行されるサーバプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ（Compact  Disk  Recordable）、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録されてコンピュータプログラムプロダクトとして提供される。
【００７９】
また、本実施形態にかかるサーバ装置で実行されるサーバプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、本実施形態にかかるサーバ装置で実行されるサーバプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【００８０】
また、本実施形態のサーバプログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【００８１】
本実施形態にかかるサーバ装置で実行されるサーバプログラムは、上述した各部（受信部、取得部、差分抽出部、推定部、決定部、圧縮部、送信部）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ５１（プロセッサ）が上記記憶媒体からサーバプログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、上述した各部が主記憶装置上に生成されるようになっている。
【００８２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００８３】
１００  サーバ装置
１０１  取得部
１０２  差分抽出部
１０３  圧縮部
１０４  送信部
１０５  履歴記憶部
１０６  推定部
１０７  決定部
１０８  オペレーティングシステム
１０９  受信部
２００  クライアント装置
２０１  受信部
２０２  伸張部
２０３  フレームバッファ
２０４  表示部
２０５  取得部
２０６  送信部
【図１】
0005367749.tif 000002
【図２】
0005367749.tif 000003
【図３】
0005367749.tif 000004
【図４】
0005367749.tif 000005
【図５】
0005367749.tif 000006
【図６】
0005367749.tif 000007
【図７】
0005367749.tif 000008
【図８】
0005367749.tif 000009
【図９】
0005367749.tif 000010
【図１０】
0005367749.tif 000011
【図１１】
0005367749.tif 000012
【図１２】
0005367749.tif 000013
【図１３】
0005367749.tif 000014
【図１４】
0005367749.tif 000015
【図１５】
0005367749.tif 000016
【図１６】
0005367749.tif 000017