JP2013130968A - 情報処理装置、情報処理方法及びプログラム - Google Patents

情報処理装置、情報処理方法及びプログラム Download PDF

Info

Publication number
JP2013130968A
JP2013130968A JP2011278938A JP2011278938A JP2013130968A JP 2013130968 A JP2013130968 A JP 2013130968A JP 2011278938 A JP2011278938 A JP 2011278938A JP 2011278938 A JP2011278938 A JP 2011278938A JP 2013130968 A JP2013130968 A JP 2013130968A
Authority
JP
Japan
Prior art keywords
unit
image
information processing
amount
area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2011278938A
Other languages
English (en)
Other versions
JP5899897B2 (ja
Inventor
Tomohiro Imai
智大 今井
Kazuki Matsui
一樹 松井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2011278938A priority Critical patent/JP5899897B2/ja
Priority to US13/671,210 priority patent/US9716907B2/en
Publication of JP2013130968A publication Critical patent/JP2013130968A/ja
Application granted granted Critical
Publication of JP5899897B2 publication Critical patent/JP5899897B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/266Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
    • H04N21/2662Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/0486Drag-and-drop
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1454Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/478Supplemental services, e.g. displaying phone caller identification, shopping application
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/647Control signaling between network components and server or clients; Network processes for video distribution between server and clients, e.g. controlling the quality of the video stream, by dropping packets, protecting content from unauthorised alteration within the network, monitoring of network load, bridging between two different networks, e.g. between IP and wireless
    • H04N21/64723Monitoring of network processes or resources, e.g. monitoring of network load
    • H04N21/64738Monitoring network characteristics, e.g. bandwidth, congestion level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/658Transmission by the client directed to the server
    • H04N21/6587Control parameters, e.g. trick play commands, viewpoint selection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/038Indexing scheme relating to G06F3/038
    • G06F2203/0383Remote input, i.e. interface arrangements in which the signals generated by a pointing device are transmitted to a PC at a remote location, e.g. to a PC in a LAN

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Information Transfer Between Computers (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

【課題】シンクライアントの操作レスポンスを損なわずに、サーバ側の処理負荷を軽減し、データ転送量を削減すること。
【解決手段】ネットワークを介して接続された端末に、端末で表示される画像を生成して、画像に関するデータを送信する情報処理装置であって、端末から送信される操作コマンドに基づいて変更される画像に対して、画像内の領域で、所定時間内に第1閾値以上の変更があれば領域を動画化対象の領域に設定する動画化領域推定部と、情報処理装置及び端末間のネットワークの往復遅延に基づき、上限のデータ転送量を推定する推定部と、推定されたデータ転送量が第2閾値未満の場合、操作コマンドのうち、所定の操作コマンドを間引くフィルタ部と、所定の操作コマンドが間引かれた場合、フィルタ部の間引き量に応じて第1閾値を変更する閾値変更部と、を備える。
【選択図】図1

Description

本発明は、シンクライアントシステムで用いられる情報処理装置、情報処理方法及びプログラムに関する。
情報漏えい対策や、PC(Personal Computer)の運用管理コスト削減などで、シンクライアント(thin client)というシステム(system)が一般的に用いられている。シンクライアントシステムでは、クライアントに最低限の機能しか持たせず、サーバでアプリケーションやファイルなどのリソースを管理するようにシステムが構築される。
シンクライアントシステムは、実際にはサーバが処理を実行した処理結果やサーバが保持するデータをクライアントに表示させつつも、あたかもクライアントが主体となって処理を実行したり、データを保持していたりするかのように振る舞う。
シンクライアントシステムは、サーバで資料作成やメールなどの業務に関するアプリケーションを実行させ、そのアプリケーションの処理結果をクライアントに表示させる。このような業務アプリの他にも、CAD(Computer-Aided Design)などのように精細な画像を扱うアプリケーション、さらには、動画を扱うアプリケーションなどがシンクライアントシステムの適用範囲として拡充されることが求められる。
ところが、シンクライアントシステムで通信に用いられるプロトコル、例えばRDP(Remote Desktop Protocol)や、VNC(Virtual Network Computing)で用いられているRFB(Remote Frame Buffer)プロトコルなどで、画像や動画などの大容量のデータを転送する場合には、クライアントで実行される操作に対するレスポンスが悪化する問題がある。なお、この問題は、シンクライアントシステムでクライアントとサーバ間で画面更新時に大容量のデータ送信が発生する場合に共通するものであり、画像や動画を扱う場合に限定して生じる問題ではない。
そこで、レスポンス悪化時に、サーバ側で遅延が生じた場合、サーバ側の現在のポインタ(又はキー入力情報)を生成し、画面データとしてクライアントへ転送することでクライアント側から遅延原因を判別する技術がある。
また、サーバのCPU(Central Processing Unit)の負荷に応じて、操作量、時間、種類の統合などのフィルタリングを行ってイベント量を減らすことで、サーバ側で大量のイベントを効率的に処理する技術がある。
また、マウスの移動コマンドが多すぎると描画処理が大量に発生し、描画負荷が増加するため、マウスの移動イベントを所定間隔で間引く技術がある。また、画像出力システムにおいて前回のレンダリング処理時間に応じて今回のプリレンダリング判定の閾値を変更する技術がある。
特開2006−236046号公報 特開2009−075808号公報 特開平03−218512号公報 特開2000−158727号公報
しかしながら、従来技術では、シンクライアントの操作レスポンスを損なわずに、サーバ側の処理負荷を軽減し、データ転送量を削減することができないという問題点がある。例えば、画面更新が多く発生するようなコマンドを連続して処理する場合、このコマンドを間引くことで処理負荷を軽減することがはできるが、画面の更新量が多い場合にはデータ転送量が多いため、シンクライアントの操作レスポンスが悪化してしまう。
そこで、開示の技術は、上記問題点に鑑みてなされたものであって、シンクライアントの操作レスポンスを損なわずに、サーバ側の処理負荷を軽減し、データ転送量を削減することができる情報処理装置、情報処理方法、プログラムを提供することを目的とする。
開示の一態様における情報処理装置は、ネットワークを介して接続された端末に、該端末で表示される画像を生成して、該画像に関するデータを送信する情報処理装置であって、前記端末から送信される操作コマンドに基づいて変更される前記画像に対して、該画像内の領域で、所定時間内に第1閾値以上の変更があれば前記領域を動画化対象の領域に設定する動画化領域推定部と、前記情報処理装置及び前記端末間のネットワークの往復遅延に基づき、上限のデータ転送量を推定する推定部と、前記推定されたデータ転送量が第2閾値未満の場合、前記操作コマンドのうち、所定の操作コマンドを間引くフィルタ部と、前記所定の操作コマンドが間引かれた場合、前記フィルタ部の間引き量に応じて前記第1閾値を変更する閾値変更部と、を備える。
開示の技術は、シンクライアントの操作レスポンスを損なわずに、サーバ側の処理負荷を軽減し、データ転送量を削減することができる。
実施例1に係るシンクライアントシステムに含まれる各装置の構成の一例を示すブロック図。 表示画面の分割例を説明するための図。 表示画面の変更頻度の判別例を説明するための図。 表示画面の変更頻度の判別例を説明するための図。 表示画面の変更頻度の判別例を説明するための図。 メッシュ連結体の補正例を説明するための図。 高頻度変更領域の候補の合成例を説明するための図。 高頻度変更領域の属性情報の通知例を説明するための図。 高頻度変更領域の属性情報の通知例を説明するための図。 高頻度変更領域の属性情報の通知例を説明するための図。 コマンドフィルタ処理と閾値変更処理の概要を説明するための図。 コマンドフィルタ処理と閾値変更処理の具体例を説明するための図。 実施例1におけるサーバ装置の情報処理の一例を示すフローチャート。 実施例1における帯域推定部の処理の一例を示すフローチャート。 実施例1におけるフィルタ部の処理の一例を示すフローチャート。 実施例1における閾値変更部の処理の一例を示すフローチャート。 クライアント端末の情報処理の一例を示すフローチャート。 実施例2に係るシンクライアントシステムに含まれる各装置の構成の一例を示すブロック図。 実施例2におけるフィルタリング閾値設定処理の一例を示すフローチャート。 実施例2における上限データ転送量の設定処理の一例を示すフローチャート。 情報処理装置の構成の一例を示すブロック図
以下、各実施例について、添付図面を参照しながら説明する。
[実施例1]
<システム>
実施例1に係るシンクライアントシステムについて説明する。図1は、実施例1に係るシンクライアントシステムに含まれる各装置の構成の一例を示すブロック図である。
図1に示すシンクライアントシステム(thin client system)1は、クライアント(client)端末20が表示する画面をリモート(remote)でサーバ(server)装置10に制御させるものである。サーバ装置10及びクライアント端末20は、例えば情報処理装置である。
シンクライアントシステム1は、実際にはサーバ装置10が実行した処理結果や保持するデータをクライアント端末20に表示させつつも、あたかもクライアント端末20が主体となって処理を実行したり、データを保持したりしているかのように振る舞う。
図1に示す例では、シンクライアントシステム1は、サーバ装置10と、クライアント端末20とを有する。なお、図1に示す例では、1つのサーバ装置10に対し、1つのクライアント端末を接続する場合を示したが、任意の数のクライアント端末を接続してもよい。
サーバ装置10及びクライアント端末20は、所定のネットワークを介して、相互に通信可能に接続される。所定のネットワークには、有線または無線を問わず、インターネット、LAN(Local Area Network)やVPN(Virtual Private Network)などの任意の種類の通信網を採用する。なお、サーバ装置10及びクライアント端末20間の通信プロトコルには、一例として、VNCにおけるRFB(Remote Frame Buffer)プロトコルを採用する場合を想定する。
サーバ装置10は、クライアント端末20に表示させる画面をリモートで制御するサービスを提供するコンピュータである。このサーバ装置10には、サーバ向けのリモート画面制御用のアプリケーションがインストールまたはプリインストールされる。なお、以下では、サーバ向けのリモート画面制御用のアプリケーションをサーバ側リモート画面制御用アプリとも呼ぶ。
サーバ側リモート画面制御用アプリは、基本機能として、リモート画面制御サービスを提供する機能を有する。一例としては、サーバ側リモート画面制御用アプリは、クライアント端末20における操作情報を取得した上でその操作により要求された処理を自装置で動作するアプリケーションに実行させる。
サーバ側リモート画面制御用アプリは、アプリケーションにより実行された処理結果を表示するための画面の画像を生成した上でその画像をクライアント端末20へ送信する。このとき、サーバ側リモート画面制御用アプリは、今回の画面生成の前にクライアント端末20で表示させていたビットマップ(bitmap)画像との間で変更があった部分の画素(pixel)が集まった領域、すなわち更新矩形の画像を送信する。なお、以下では、一例として、更新部分の画像が矩形の画像で形成される場合を説明するが、開示の装置は更新部分の画像が矩形以外の形状で形成される場合にも適用できる。
このほか、サーバ側リモート画面制御用アプリは、フレーム(frame)間で動きが大きい部分のデータを動画向けの圧縮方式のデータに圧縮してクライアント端末20へ送信する機能も有する。一例としては、サーバ側リモート画面制御用アプリは、アプリケーションにより実行された処理結果から生成した画面の画像を複数の領域に分割し、分割した領域ごとに変更の頻度を監視する。
このとき、サーバ側リモート画面制御用アプリは、変更の頻度が閾値を超えた領域、すなわち高頻度変更領域の属性情報をクライアント端末20へ送信する。これとともに、サーバ側リモート画面制御用アプリは、高頻度変更領域のビットマップ画像をMPEG−2やMPEG−4などのMPEG方式のデータにエンコード(encode)した上でクライアント端末20へ送信する。
なお、ここでは、MPEG(Moving Picture Experts Group)方式のデータへ圧縮する場合を例示したが、これに限定されない。例えば、動画向けの圧縮方式であれば任意の圧縮符号化方式、例えばMotion−JPEG(Joint Photographic Experts Group)などを採用してもよい。
また、サーバ側リモート画面制御用アプリは、RTT(Round Trip Time)を利用して上限データ転送量を推定し、この上限データ転送量に応じて、画面の更新が大量に発生する所定の操作コマンドを間引く。このとき、サーバ側リモート画面制御用アプリは、操作コマンドの間引き量に応じて高頻度変更領域の判定に用いる閾値を変更する。
クライアント端末20は、サーバ装置10によるリモート画面制御サービスの提供を受ける側のコンピュータである。クライアント端末20の一例としては、パーソナルコンピュータ(personal computer)など固定端末の他、携帯電話機、PHS(Personal Handyphone System)やPDA(Personal Digital Assistant)などの移動体端末を適用することもできる。
クライアント端末20には、クライアント向けのリモート画面制御用アプリケーションがインストールまたはプリインストールされる。なお、以下では、クライアント向けのリモート画面制御用のアプリケーションをクライアント側リモート画面制御用アプリと呼ぶ。
このクライアント側リモート画面制御用アプリは、マウスやキーボードなどの各種の入力デバイスを介して受け付けた操作情報をサーバ装置10へ通知する機能を有する。一例としては、クライアント側リモート画面制御用アプリは、マウスの左右のクリックを始め、ダブルクリックやドラッグ、マウスの移動操作を介して得られたマウスカーソルの移動量などを操作情報として通知する。他の一例としては、マウスホイールの回転量、キーボードのうち押下されたキーの種別なども操作情報として通知する。
クライアント側リモート画面制御用アプリは、サーバ装置10から受信した画像を所定の表示部に表示させる機能を有する。一例としては、クライアント側リモート画面制御用アプリは、サーバ装置10から更新矩形のビットマップ画像を受信した場合には、更新矩形の画像を前回のビットマップ画像から変更のあった位置に合わせて表示する。
他の一例としては、クライアント側リモート画面制御用アプリは、サーバ装置10から高頻度変更領域の属性情報を受信した場合には、その属性情報に含まれる位置に対応する表示画面上の領域をビットマップ画像の表示対象外のブランク(blank)領域とする。その上で、クライアント側リモート画面制御用アプリは、動画向けの圧縮方式のデータを受信した場合にそのデータをデコードした上でブランク領域に表示する。
<サーバ装置の構成>
次に、実施例1に係るサーバ装置の構成について説明する。図1に示すように、サーバ装置10は、OS実行制御部11aと、アプリ実行制御部11bと、グラフィックドライバ12と、フレームバッファ13と、サーバ側リモート画面制御部14とを有する。なお、図1に示す例では、図1に示した機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや表示デバイスなどの機能を有するものとする。
OS実行制御部11aは、OS(Operating System)の実行を制御する処理部である。例えば、OS実行制御部11aは、後述の操作情報取得部111により取得された操作情報からアプリケーションの起動指示やアプリケーションに対するコマンドを検出する。例えば、OS実行制御部11aは、アプリケーションのアイコン(icon)上でダブルクリックを検出した場合に、そのアイコンに対応するアプリケーションの起動を後述のアプリ実行制御部11bへ指示する。
他の例としては、起動中のアプリケーションの操作画面、例えばウィンドウ(window)上でコマンド(command)の実行を要求する操作を検出した場合に、OS実行制御部11aは、そのコマンドの実行をアプリ実行制御部11bへ指示する。なお、以下では、アプリケーションをアプリと略記する場合がある。
アプリ実行制御部11bは、OS実行制御部11aによる指示に基づき、アプリケーションの実行を制御する処理部である。例えば、アプリ実行制御部11bは、OS実行制御部11aによりアプリの起動が指示された場合や起動中のアプリにコマンドの実行が指示された場合にアプリを動作させる。
アプリ実行制御部11bは、アプリを実行することにより得られた処理結果の表示用イメージ(image)をフレームバッファ13に描画する要求を、後述のグラフィックドライバ12へ行う。このようにグラフィックドライバ12へ描画要求を行う場合には、アプリ実行制御部11bは、表示用イメージとともに表示用イメージの描画位置をグラフィックドライバ12へ通知する。
なお、アプリ実行制御部11bが実行するアプリは、プリインストールされたものであってもよく、サーバ装置10の出荷後にインストールされたものであってもかまわない。また、JAVA(登録商標)などのネットワーク環境で動作するアプリであってもよい。
グラフィックドライバ12は、フレームバッファ13に対する描画処理を実行する処理部である。例えば、グラフィックドライバ12は、アプリ実行制御部11bからの描画要求を受け付けた場合に、アプリの処理結果の表示用イメージをアプリにより指定されたフレームバッファ13上の描画位置へビットマップ形式で描画する。
なお、ここでは、アプリにより描画要求を受け付ける場合を説明したが、OS実行制御部11aからの描画要求を受け付けることもできる。例えば、グラフィックドライバ12は、OS実行制御部11aからマウスカーソルの描画要求を受け付けた場合に、マウスカーソルの表示用イメージをOSにより指定されたフレームバッファ13上の描画位置へビットマップ形式で描画する。
フレームバッファ13は、グラフィックドライバ12により描画されたビットマップデータを記憶する記憶デバイスである。かかるフレームバッファ13の一態様としては、VRAM(Video Random Access Memory)を始めとするRAM(Random Access Memory)、ROM(Read Only Memory)やフラッシュメモリ(flash memory)などの半導体メモリ素子が挙げられる。なお、フレームバッファ13は、ハードディスク、光ディスクなどの記憶装置を適用してもかまわない。
サーバ側リモート画面制御部14は、サーバ側リモート画面制御用アプリを通じて、リモート画面制御サービスをクライアント端末20へ提供する処理部である。このサーバ側リモート画面制御部14は、図1に示すように、通信部101と、画像生成部102と、動画化領域推定部103と、第1のエンコーダ104と、第2のエンコーダ105と、帯域推定部106と、フィルタ部107とを有する。
通信部101は、クライアント端末20とデータ通信を行う処理部である。通信部101は、操作情報取得部111と、第1の送信部112と、第2の送信部113とを有する。また、動画化領域推定部103は、画像生成部102により生成された画像内に、動画化する領域があれば動画化を行う領域として設定を行う推定部である。動画化領域推定部103は、変更頻度判別部131と、高頻度変更領域識別部132とを有する。
操作情報取得部111は、クライアント端末20から操作情報を取得する処理部である。操作情報の一例としては、マウスの左右のクリックを始め、ダブルクリックやドラッグ、マウスの移動操作を介して得られたマウスカーソルの移動量などが挙げられる。操作情報の他の一例としては、マウスホイールの回転量、キーボードのうち押下されたキーの種別なども挙げられる。
画像生成部102は、クライアント端末20の表示部22に表示させる画面の画像を生成する処理部である。例えば、画像生成部102は、グラフィックドライバ12によりフレームバッファ13へビットマップデータが格納される度に、次のような処理を起動する。
画像生成部102は、前回のフレーム生成時にクライアント端末20で表示させていた表示画面の画像と、今回のフレーム生成時にフレームバッファ13へ書き込まれた表示画面の画像とを比較する。そして、画像生成部102は、前回のフレームから変更があった部分の画素をつなぎ合わせた上で矩形に整形した更新矩形の画像を生成し、更新矩形送信用のパケットを生成する。
《基本処理》
ここで、画像内の領域に対し、動画向けの圧縮方式を用いる領域を高頻度変更領域として特定のアプリケーションに依存せずに識別する処理について説明する。この処理は、サーバ装置10の基本処理である。
変更頻度判別部131は、フレームバッファ13に描画された画像を分割した領域ごとにフレーム間の変更の頻度を判別する処理部である。例えば、変更頻度判別部131は、画像生成部102により生成された更新矩形を図示しない作業用の内部メモリへ所定の期間にわたって蓄積する。
このとき、変更頻度判別部131は、更新矩形の位置および大きさを特定可能な属性情報、例えば更新矩形の左上の頂点の座標と更新矩形の幅および高さとを蓄積する。更新矩形を蓄積させる所定期間は、高頻度変更領域を識別する精度と相関関係があり、期間を長くするほど高頻度変更領域の誤検出が低減される。なお、ここでは、一例として、1秒間にわたって更新矩形の画像を蓄積する場合を想定する。
このとき、変更頻度判別部131は、更新矩形の画像を蓄積してから所定の期間が経過した場合に、クライアント端末20に表示させる表示画面をメッシュ(mesh)状に分割したマップ(map)を用いて、表示画面の変更頻度を判別する。
図2は、表示画面の分割例を説明するための図である。図2に示す符号30は、変更頻度判別用のマップを示す。図2に示す符号31は、マップ30に含まれるメッシュを指す。図2に示す符号32は、メッシュ31を形成する画素のブロックに含まれる1画素を指す。図2に示す例では、変更頻度判別部131がマップ30を占める画素のうち8画素×8画素のブロックを1つのメッシュとして分割する場合を想定している。この場合には、1つのメッシュに64個の画素が含まれることになる。
ここで、変更頻度判別部131は、作業用の内部メモリに蓄積した更新矩形の位置および大きさにしたがって更新矩形の画像を変更頻度判別用のマップに順次展開する。そして、変更頻度判別部131は、更新矩形をマップに展開する度に、マップ上で更新矩形と重なり合った部分のメッシュの変更回数を累積して加算する。
このとき、変更頻度判別部131は、マップ上に展開された更新矩形がメッシュに含まれる画素との間で所定数にわたって重なり合った場合に、そのメッシュの変更回数を1つ加算する。なお、ここでは、更新矩形がメッシュに含まれる画素と1つでも重なり合った場合に、メッシュの変更回数を加算する場合を想定して説明を行う。
図3A〜図3Cは、表示画面の変更頻度の判別例を説明するための図である。図3A〜図3Cに示す符号40A、符号40B及び符号40Nは変更頻度判別用のマップを示す。図3A及び図3Bに示す符号41A及び符号41Bは更新矩形を示す。ここで、マップ40Aのメッシュ内に図示した数字は、更新矩形41Aが展開された時点におけるメッシュの変更回数を示す。
また、マップ40Bのメッシュ内に図示した数字は、更新矩形41Bが展開された時点におけるメッシュの変更回数を示す。さらに、マップ40Nのメッシュ内に図示した数字は、作業用の内部メモリに蓄積した更新矩形が全て展開された時点におけるメッシュの変更回数を示す。なお、図3A〜図3Cにおいて数字が図示されていないメッシュは変更回数がゼロであるものとする。
図3Aに示すように、更新矩形41Aがマップ40Aに展開された場合には、網掛け部分のメッシュが更新矩形41Aと重なり合う。このため、変更頻度判別部131は、網掛け部分のメッシュの更新回数を1つずつ加算する。この場合には、各メッシュの変更回数はゼロであるため、網掛け部分の変更回数は0から1に加算される。
さらに、図3Bに示すように、更新矩形41Bがマップ40Bに展開された場合には、網掛け部分のメッシュが更新矩形41Bと重なり合う。このため、変更頻度判別部131は、網掛け部分のメッシュの更新回数を1つずつ加算する。この場合には、各メッシュの変更回数は1であるため、網掛け部分の変更回数は1から2に加算される。このようにして全ての更新矩形がマップに展開された段階では、図3Cに示すマップ40Nの結果が得られる。
そして、変更頻度判別部131は、作業用の内部メモリに蓄積した更新矩形を全てマップに展開し終えた場合に、所定の期間における変更回数、すなわち変更頻度が閾値を超えるメッシュを取得する。図3Cの例で言えば、閾値を「4」としたとき、網掛け部分のメッシュが取得されることになる。
閾値は、その値を高く設定するほど表示画面で動画が表示されている可能性が高い部分を後述の第2のエンコーダ105によりエンコードできる。なお、この閾値は、サーバ側リモート画面制御用アプリの開発者が段階的に設定した値をエンドユーザに選択させたり、また、エンドユーザが値を直接設定したりすることができる。
図1の説明に戻り、高頻度変更領域識別部132は、クライアント端末20に表示される表示画面のうち高頻度で変更される領域を高頻度変更領域として識別する処理部である。
高頻度変更領域識別部132は、所定の期間内で、変更頻度判別部131により変更回数が閾値(第1閾値)を超えるメッシュが取得された場合に、隣接するメッシュ同士を連結したメッシュ連結体を矩形に補正する。ここでの所定期間は、例えば5秒とする。高頻度変更領域識別部132は、例えばメッシュ連結体に補間する補間領域を導出した上でメッシュ連結体に補間領域を足し合わせることによりメッシュ連結体を矩形に補正する。この補間領域の導出には、メッシュの連結体が最小の補間で矩形に整形される領域を導出するアルゴリズム(algorithm)が適用される。
図4は、メッシュ連結体の補正例を説明するための図である。図4に示す符号51は補正前のメッシュ連結体を示す。図4に示す符号52は補間領域を示す。また、図4に示す符号53は補正後の矩形を示す。図4に示すように、高頻度変更領域識別部132は、メッシュ連結体51に補間領域52を足し合わせることにより、メッシュ連結体51を矩形53に補正する。この段階では、後述の矩形の合成が完了しておらず、矩形53が未だ高頻度変更領域と確定していないので、補正後の矩形を高頻度変更領域の候補と呼ぶこととする。
高頻度変更領域識別部132は、高頻度変更領域の候補が複数存在する場合には、複数の高頻度変更領域の候補の距離が所定の値以下である高頻度変更領域の候補同士を含む矩形に合成する。ここで言う高頻度変更領域の候補の距離とは、補正後の矩形の最短距離を指すものとする。
例えば、高頻度変更領域識別部132は、高頻度変更領域の候補を合成するにあたって各候補の間を埋める補間領域を導出した上で高頻度変更領域の候補に補間領域を足し合わせることにより、高頻度変更領域の候補同士を含む矩形に合成する。この補間領域の導出には、高頻度変更領域の候補の間が最小の補間で合成体に整形される領域を導出するアルゴリズム(algorithm)が適用される。
図5は、高頻度変更領域の候補の合成例を説明するための図である。図5に示す符号61A及び符号61Bは、高頻度変更領域の候補を指す。図5に示す符号62は補間領域を指す。図5に示す符号63は、高頻度変更領域の候補61A及び高頻度変更領域の候補61Bの合成体を指す。
図5に示すように、高頻度変更領域識別部132は、高頻度変更領域の候補61A及び高頻度変更領域の候補61Bに補間領域62を足し合わせることにより、高頻度変更領域の候補61A及び高頻度変更領域の候補61Bを含む合成体63へ合成する。そして、高頻度変更領域識別部132は、このようにして得た合成体を高頻度変更領域と識別する。
上述したようにして高頻度変更領域を識別すると、高頻度変更領域識別部132は、高頻度変更領域の位置および大きさを特定可能な属性情報を第1の送信部112及び第2の送信部113に出力する。
これにより、クライアント端末20で表示される表示画面のビットマップデータのうち、高頻度変更領域に対応する部分をブランク表示させる。その後、高頻度変更領域識別部132は、作業用の内部メモリにマッピングされたメッシュの変更回数をクリア(clear)する。なお、高頻度変更領域識別部132は、高頻度変更領域の属性情報を作業用の内部メモリに登録する。
図6A〜図6Cは、高頻度変更領域の属性情報の通知例を説明するための図である。図6Aに示す符号70Aは、フレームバッファ13に描画された表示画面の一例を示す。図6B〜図6Cに示す符号70B及び符号70Cは、変更頻度判別用のマップを示す。図6Aに示す符号71は、ブラウザ(browser)画面を指す。図6Aに示す符号72は、動画再生画面を指す。図6Bに示す符号73は、マウスの移動軌跡を示す。図6Bに示す符号74は、アプリによる動画再生領域を示す。
図6Aに示すように、表示画面70Aには、ブラウザ画面71及び動画再生画面72が含まれる。この表示画面70Aから経時的な変化を追った場合には、図6Bに示すように、静止画であるブラウザ画面71の更新矩形は検出されず、マウスの移動軌跡73および動画再生領域74に関する更新矩形が検出される。
このうち、動画の再生領域74で変更回数が閾値を超えるメッシュ、すなわち図示の網掛け部分が高頻度変更領域識別部132により識別されたものとする。この場合には、高頻度変更領域識別部132は、図6Cに示す網掛け部分の高頻度変更領域の左上の頂点の座標(x,y)と、高頻度変更領域の幅wおよび高さhとを高頻度変更領域の属性情報として第1の送信部112及び第2の送信部113に通知する。
なお、ここでは、高頻度変更領域の位置を特定する点として左上の頂点の座標を採用する場合を説明したが、他の頂点を採用することとしてもかまわない。また、高頻度変更領域の位置を特定することができる点であれば、頂点以外の任意の点、例えば重心などを採用できる。また、ここでは、画面上の左上を座標軸XYの原点とする場合を説明したが、画面内および画面外の任意の点を原点とすることができる。
また、高頻度変更領域識別部132は、画像生成部102により更新矩形が生成される度に、その更新矩形が作業用の内部メモリに記憶された高頻度変更領域、すなわち後述の第2の送信部113により送信中の動画領域に含まれるか否かを判定する。
このとき、高頻度変更領域識別部132は、更新矩形が高頻度変更領域に含まれない場合には、更新矩形の画像および更新矩形の位置やサイズを含む属性情報を第1のエンコーダ104に出力する。一方、高頻度変更領域識別部132は、更新矩形が高頻度変更領域に含まれる場合には、原則として、後述の第1の送信部112に更新矩形の画像を送信させない。なお、更新矩形がOS実行制御部11aにより描画されたマウスのものである場合には、マウスに関する更新矩形の画像および属性情報を例外的に送信させることとしてもよい。
また、高頻度変更領域識別部132は、フレームバッファ13にビットマップデータが描画される度に、作業用の内部メモリに高頻度変更領域の属性情報が登録されているか否かを判定する。
そして、高頻度変更領域識別部132は、高頻度変更領域の属性情報が登録されている場合に、フレームバッファ13に描画されたビットマップデータのうち高頻度変更領域に対応する部分のビットマップ画像を切り出した上で後述の第2のエンコーダ105に出力する。
第1のエンコーダ104は、高頻度変更領域識別部132から入力される更新矩形の画像を静止画の圧縮方式でエンコードする処理部である。例えば、第1のエンコーダ104は、各更新矩形の画像をJPEGで圧縮することによって静止画の符号化データへエンコードする。なお、ここでは、静止画の圧縮方式としてJPEGを例示したが、GIF(Graphic Interchange Format)やPNG(Portable Network Graphics)などの他の方式を適用することもできる。
第1の送信部112は、第1のエンコーダ104によってエンコードされた更新矩形の符号化データをクライアント端末20へ送信する処理部である。例えば、第1の送信部112は、更新矩形の符号化データをクライアント端末20へ送信するにあたってフレームID及び送信時刻のタイムスタンプ等のヘッダ情報を符号化データに付加した上でクライアント端末20に送信する。
このとき、第1の送信部112は、第1のエンコーダ104によってエンコードされた全ての更新矩形の符号化データにヘッダ情報を付加することもできるが、更新矩形の符号化データのうち少なくとも1つの符号化データにヘッダ情報を付加すればよい。ヘッダ情報には、更新矩形や高頻度変更領域の属性情報を含めてもよい。この更新矩形を送信する場合の通信プロトコルには、一例としてVNCにおけるRFBプロトコルが採用される。
第2のエンコーダ105は、高頻度変更領域識別部132から入力される高頻度変更領域の画像を動画の圧縮方式でエンコードする処理部である。例えば、第2のエンコーダ105は、高頻度変更領域の画像をMPEGで圧縮することによって動画の符号化データへエンコードする。なお、ここでは、動画の圧縮方式としてMPEGを例示したが、Motion−JPEGなどの他の方式を適用することもできる。
第2の送信部113は、第2のエンコーダ105によってエンコードされた動画の符号化データをクライアント端末20に送信する処理部である。例えば、第2の送信部113は、動画の符号化データのうち少なくともいずれか1つの符号化データにヘッダ情報を付加する。ヘッダ情報には、高頻度変更領域の属性情報を含めてもよい。この高頻度変更領域のエンコード画像を送信する場合の通信プロトコルには、一例として、RTP(Real-time Transport Protocol)を採用できる。
これにより、サーバ装置10は、高頻度変更領域以外の領域については変更があった部分の画像を送信し、高頻度変更領域については動画向けの圧縮を行ったデータを送信することができる。よって、クライアント端末20へ送信するデータ量を削減し、操作レスポンスを向上させることができる。さらに、クライアント端末20へ送信するデータ量を削減することができるので、サーバ装置10及びクライアント端末20間の伝送遅延を低減し、クライアント端末20で表示される画像がコマ落ちする可能性も低減できる。
《コマンドフィルタ処理と閾値変更処理》
次に、サーバ装置10におけるコマンドフィルタ処理(間引き処理)と閾値変更処理とについて説明する。
図7は、コマンドフィルタ処理と閾値変更処理の概要を説明するための図である。図7に示すように、コマンドフィルタ処理と閾値変更処理には大きく5つの処理が含まれる。
(A)サーバ装置10及びクライアント端末20間のRTTを検出し、ネットワークの理論的な上限のデータ転送量を推定する。以下では、このデータ転送量を上限データ転送量とも呼ぶ。
(B)クライアント端末20側でユーザにより操作されたマウス操作のコマンドをサーバ装置10に送信する。
(C)サーバ装置10は、上限データ転送量を利用して所定のコマンドを間引く。
(D)サーバ装置10は、コマンドを間引いた量に応じて動画化判定のための閾値を変更する。
(E)サーバ装置10は、変更された閾値を用いて動画化領域を検出し、クライアント端末20に送信する。
以下、(A)〜(E)の処理について詳しく説明する。
図1の説明に戻り、帯域推定部106は、所定間隔でサーバ装置10及びクライアント端末20間のネットワークの往復遅延(RTT)を計測し、上限データ転送量を推定する処理部である。例えば、帯域推定部106は、数秒間隔(例えば5秒に1回)で、サーバ装置10からクライアント端末20に対してICMP Echo Requestとよばれるパケットを送信し、クライアント端末20からのICMP Echo Replyが受信されるのを待つ。受信後、帯域推定部106は、Request − Reply間の時刻の差を算出し、これをRTTとする。
転送量の上限推定には、ネットワーク通信のプロトコルとして広く普及しているTCPの仕組みを応用する。TCPにはウィンドウとよばれるバッファがあり、データを受信する側はこのウィンドウのサイズ(以下ウィンドウサイズ)をクライアント側に通知することで確認応答なしに送信可能なデータ量を操作することができる。確認応答がない場合、データ送信側は確認応答を受信してウィンドウサイズが拡張されるまで、データを送信することはできない。
ウィンドウサイズは、通常64KByteが利用されている。LAN環境のようなRTTの小さなネットワークではこのウィンドウサイズは問題にならない。しかし、WAN環境のようなRTTが大きい(例えば50ms以上)ネットワークでは、ウィンドウサイズの制約のため1TCPコネクションあたりに送信可能なデータ転送量が制限されてしまう。例えば、RTT50msのネットワークの場合、50msの間には64KByteのデータ転送しか行えない。よって、1秒間に1コネクションあたり1280KByte≒10Mbps程度しか伝送できないことがわかる。
帯域推定部106は、このようにRTTを利用して現在のネットワークの上限データ転送量を推定する。帯域推定部106は、推定した上限データ転送量をフィルタ部107に通知する。
フィルタ部107は、操作情報取得部111から通知された操作コマンドを取得し、操作コマンドを条件に応じてフィルタリングし、OS実行制御部11aに通知する処理部である。例えば、フィルタ部107は、帯域推定部106で推定された現在のネットワークの上限データ転送量と、予め設定されたフィルタリング閾値(第2閾値)とを比較する。フィルタ部107は、もし上限データ転送量がフィルタリング閾値未満の場合には通知された操作コマンドの中から所定の操作コマンドを一定間隔で間引く処理を行う。所定の操作コマンドは、画面更新を大量に発生するようなコマンドであり、例えば、ドラッグコマンドである。
フィルタリング閾値が例えば5Mbpsだった場合、上限データ転送量が5Mbps以上であれば、全ての操作コマンドがOS実行制御部11aへ通知される。上限データ転送量が4Mbpsと推定された時には、フィルタ部107は、次の式(1)により間引き量を算出する。
間引き量=1−(上限データ転送量/閾値) ・・・式(1)
上記例によれば、間引き量は、1−(4/5)=1/5となる。
上記例の場合、フィルタ部107は、ドラッグコマンド5つに対して1つの割合で間引き処理を行い、残りのドラッグコマンドをOS実行制御部11aに通知する。
閾値変更部108は、フィルタ部107で行われた間引きの間引き量に応じて、高頻度変更領域検出で利用される閾値(第1閾値)の変更を行う処理部である。例えば、閾値変更部108は、フィルタ部107から通知された間引き量に合わせて閾値も同じ割合で減少させる処理を行う。
フィルタ部107から取得した間引き量が例えば0である場合には、閾値は既定値5であるとする。閾値変更部108は、次の式(2)により閾値を変更する。
変更後閾値=変更前閾値×(1−間引き量) ・・・式(2)
例えば、間引き量が0から1/5に変更された時、閾値変更部108は、式(2)にあてはめて、5×(4/5)=4と計算する。閾値変更部108は、式(2)により求められた「4」を新たな閾値として、高頻度変更領域識別部132に設定する。
以上の処理により、サーバ装置10は、上限データ転送量に応じて所定の操作コマンドを間引き、間引いた操作によって発生するはずであった描画処理を削減でき、描画処理の負担を軽減することができる。所定の操作コマンドは、例えばCADアプリケーションの回転操作である。
また、サーバ装置10は、間引き量に応じて高頻度変更領域判定の閾値を変更することで、操作コマンドの間引きにより描画回数が少なくなった領域を、描画回数を間引かない場合と同様に高頻度更新領域として検出可能とすることができる。これにより、サーバ装置10は、データ転送量の抑制の維持が可能となる。
なお、OS実行制御部11a、アプリ実行制御部11b、グラフィックドライバ12、サーバ側リモート画面制御部14には、各種の集積回路や電子回路を採用できる。また、サーバ側リモート画面制御部14に含まれる機能部の一部を別の集積回路や電子回路とすることもできる。例えば、集積回路としては、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)が挙げられる。また、電子回路としては、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などが挙げられる。
<具体例>
次に、コマンドフィルタ処理と閾値変更処理の具体例について説明する。図8は、コマンドフィルタ処理と閾値変更処理の具体例を説明するための図である。図8に示す例では、帯域推定部106は、例えば、表示画面d11の画像のときに、式(3)により上限データ転送量を推定する。このときのRTTを50msとする。画面データ・操作コマンド転送時には、遅延対策のため1サーバ・クライアント間で複数のコネクションを作成し、ここにデータを分割して送信することで、データ転送量の上限を増加させることがある。そのため、上限データ転送量の計算時には、RTTだけでなくコネクション数も考慮するとよい。
上限データ転送量=64×(1000/RTT)×n ・・・式(3)
n:コネクション数
次に、クライアント端末20で、マウスの移動操作を行った場合と、移動操作以外の操作を行った場合とで場合分けする。
マウスの移動操作が行われた場合、マウスのドラッグコマンドC11がサーバ装置10に送信される。このとき、フィルタ部107は、上限データ転送量がフィルタリング閾値より小さければ、このドラッグコマンドC11を間引く。表示画面d12では、ウィンドウが起動し、このウィンドウの移動の処理が間引かれることになる。
閾値変更部108は、操作コマンドが間引かれると、動画化領域推定部103で動画化判定に用いる閾値を式(2)により変更する。動画化領域推定部103は、変更された閾値を用いて、画像内の領域で動画化する領域があるかを判定し、動画化する領域があれば動画化対象領域に設定する。表示画面d13では、例えば領域ar11が動画化領域と判定される。
一方、フィルタ部107は、マウスの移動操作以外の操作コマンド(例えばC21)を取得した場合、そのままOS実行制御部11aに通知する。これにより前述した基本処理が行われる。表示画面d21では、ウィンドウが起動し、ドラッグコマンド以外のコマンド操作が行われる。また、表示画面d22では、例えば領域ar21が動画化領域と判定される。
<クライアント端末の構成>
次に、実施例1に係るクライアント端末の構成について説明する。図1に示すように、クライアント端末20は、入力部21と、表示部22と、クライアント側リモート画面制御部23とを有する。なお、図1に示す例では、図1に示した機能部以外にも既知のコンピュータが有する各種の機能部、例えば音声出力部などの機能を有するものとする。
入力部21は、各種の情報、例えば後述のクライアント側リモート画面制御部23に対する指示入力を受け付ける入力デバイスであり、一例としては、キーボードやマウス(mouse)などを適用できる。なお、後述の表示部22も、マウスと協働して、ポインティングデバイス(pointing device)機能を実現する。
表示部22は、各種の情報、例えばサーバ装置10から送信された表示画面などを表示する表示デバイスであり、一例としては、モニタ(monitor)、ディスプレイ(display)やタッチパネル(touch panel)などを適用できる。
クライアント側リモート画面制御部23は、クライアント側リモート画面制御用アプリを通じて、サーバ装置10によるリモート画面制御サービスの提供を受ける処理部である。このクライアント側リモート画面制御部23は、図1に示すように、通信部201と、第1のデコーダ202と、第1の表示制御部203と、第2のデコーダ204と、第2の表示制御部205とを有する。
通信部201は、サーバ装置10とデータ通信を行う処理部である。例えば、通信部201は、操作情報通知部211と、第1の受信部212と、第2の受信部213とを有する。
操作情報通知部211は、入力部21による操作情報をサーバ装置10へ通知する処理部である。例えば、操作情報通知部211は、マウスの左右のクリックを始め、ダブルクリックやドラッグ、マウスの移動操作を介して得られたマウスカーソルの移動量などを操作情報として通知する。他の例としては、操作情報通知部211は、マウスホイールの回転量、キーボードのうち押下されたキーの種別なども操作情報として通知する。
第1の受信部212は、サーバ装置10の第1の送信部112により送信された更新矩形の符号化データ及び属性情報を受信する処理部である。例えば、第1の受信部212は、受信した符号化データを第1のデコーダ202に出力する。
第1のデコーダ202は、第1の受信部212により受信された更新矩形の符号化データをデコードする処理部である。第1のデコーダ202は、サーバ装置10に搭載されるエンコード方式に適合するデコード方式のデコーダが搭載される。
第1の表示制御部203は、第1のデコーダ202によってデコーダされた更新矩形の画像を表示部22に表示させる処理部である。例えば、第1の表示制御部203は、第1の受信部212により受信された更新矩形の属性情報に含まれる位置および大きさに対応する表示部22の画面領域に更新矩形のビットマップ画像を表示させる。
また、第1の表示制御部203は、第1の受信部212により高頻度変更領域の属性情報が受信された場合には、次のような処理を行う。すなわち、第1の表示制御部203は、高頻度変更領域の属性情報に含まれる高頻度変更領域の位置および大きさに対応する表示部22の画面領域をビットマップ画像の表示対象外のブランク領域とする。
第2の受信部213は、サーバ装置10の第2の送信部113により送信された高頻度変更領域のエンコード画像及び属性情報を受信する処理部である。
第2のデコーダ204は、第2の受信部213により受信された高頻度変更領域のエンコード画像をデコードする処理部である。なお、第2のデコーダ204には、サーバ装置10に搭載されるエンコード方式に適合するデコード方式のデコーダが搭載される。
第2の表示制御部205は、第2の受信部213によって受信された高頻度変更領域の属性情報に基づき、第2のデコーダ204によりデコードされた高頻度変更領域のデコード画像を表示部22に表示させる処理部である。例えば、第2の表示制御部205は、高頻度変更領域の属性情報に含まれる高頻度変更領域の位置および大きさに対応する表示部22の画面領域に高頻度変更領域のデコード画像を表示させる。
なお、クライアント側リモート画面制御部23には、各種の集積回路や電子回路を採用できる。また、クライアント側リモート画面制御部23に含まれる機能部の一部を別の集積回路や電子回路とすることもできる。例えば、集積回路としては、ASICやFPGAが挙げられる。また、電子回路としては、CPUやMPUなどが挙げられる。
<動作>
次に、シンクライアントシステム1に用いられる各装置の動作について説明する。まず、サーバ装置10の動作について説明する。
《サーバ装置の処理》
図9は、実施例1におけるサーバ装置10の情報処理の一例を示すフローチャートである。図9に示すステップS101で、操作情報取得部111は、クライアント端末20から操作情報を受信したかをチェックする。
ステップS102で、帯域推定部106は、所定時間経過したかを判定する。所定時間経過していれば(ステップS102−Yes)ステップS103に進み、所定時間経過していなければ(ステップS102−No)ステップS102に戻る。
ステップS103で、帯域推定部106は、RTTを用いて、式(3)により上限データ転送量を推定する。
ステップS104で、フィルタ部107は、クライアント端末20から受信された操作情報に含まれるコマンドは、所定の操作コマンドであるか否かを判定する。例えば、所定の操作コマンドは、マウスのドラッグコマンドである。所定の操作コマンドであれば(ステップS104−Yes)ステップS105に進み、所定の操作コマンドでなければ(ステップS104−No)ステップS107に進む。
ステップS105で、フィルタ部107は、所定の操作コマンドを、式(1)により求められる間引き量を用いて間引く。
ステップS106で、閾値変更部108は、動画化判定に用いる閾値を変更し、高頻度変更領域識別部132に設定する。
ステップS107で、OS実行制御部11a、アプリ実行制御部11b、グラフィックドライバ12、フレームバッファ13によりユーザの操作をフレームバッファに反映する。
ステップS108で、画像生成部102は、フレームバッファ13に描画されたビットマップデータが、前回のビットマップデータから変更があるか否かを判定する。変更があれば(ステップS108−Yes)ステップS109に進み、変更がなければ(ステップS108−No)ステップS101に戻る。
ステップS109で、画像生成部102は、表示画面の画像に更新される領域があれば、更新矩形を生成する。
ステップS110で、変更頻度判別部131は、更新矩形の位置及び大きさ、変更回数などを含む更新矩形情報を蓄積する。
ステップS111で、高頻度変更領域識別部132は、所定の期間内で、変更回数が閾値を超える変更領域(高頻度変更領域)を検出する。
ステップS112で、高頻度変更領域識別部132は、高頻度変更領域があるか否かを判定する。高頻度変更領域があれば(ステップS112−Yes)ステップS113に進み、高頻度変更領域がなければ(ステップS112−No)ステップS115に進む。
ステップS113で、第2のエンコーダ105は、変更領域の画像を動画として処理し、動画圧縮を行う。
ステップS114で、第2の送信部113は、変更領域(高頻度変更領域)の動画データをクライアント端末20に送信する。
ステップS115で、第1のエンコーダ104は、変更領域を画像で取得し、静止画圧縮を行う。
ステップS116で、第1の送信部112は、変更領域(更新矩形)の画像データをクライアント端末20に送信する。次に、各部の処理について具体的に説明する。
(帯域推定部の処理)
図10は、実施例1における帯域推定部106の処理の一例を示すフローチャートである。図10に示す処理は、図9に示すステップS103の処理である。ステップS201で、帯域推定部106は、RTTを算出する。ステップS102で、帯域推定部106は、コネクション数を取得する。
ステップS103で、帯域推定部106は、式(3)により、上限データ転送量を算出する。
(フィルタ部の処理)
図11は、実施例1におけるフィルタ部107の処理の一例を示すフローチャートである。図11に示す処理は、図9に示すステップS105、S106の処理である。ステップS301で、フィルタ部107は、帯域推定部106から上限データ転送量を取得する度に、取得した上限データ転送量が、フィルタリング閾値(第2閾値)未満であるか否かを判定する。上限データ転送量がフィルタリング閾値未満であれば(ステップS301−Yes)ステップS302に進み、上限データ転送量がフィルタリング閾値以上であれば(ステップS301−No)ステップS301に戻る。
ステップS302で、フィルタ部107は、式(1)により、間引き量を算出する。ステップS303で、フィルタ部107は、操作情報取得部111から操作コマンドを取得したか否かを判定する。操作コマンドがあれば(ステップS303−Yes)ステップS304に進み、操作コマンドがなければ(ステップS303−No)ステップS301に戻る。
ステップS304で、フィルタ部107は、所定の操作コマンドであるか否かを判定する。所定の操作コマンドであれば(ステップS304−Yes)ステップS305に進み、所定の操作コマンドでなければ(ステップS304−No)ステップS306に進む。
ステップS305で、フィルタ部107は、所定の操作コマンドを、算出した間引き量に基づいて間引き処理を実行する。
ステップS306で、フィルタ部107は、操作コマンドをOS実行制御部11aに通知する。
これにより、画面更新が大量に発生する可能性があるコマンドを間引くことで、サーバ装置10の処理負荷を軽減することができる。
(閾値変更部の処理)
図12は、実施例1における閾値変更部108の処理の一例を示すフローチャートである。図12に示すステップS401で、閾値変更部108は、フィルタ部107により間引き状態が以前の状態から変更されたか否かを判定する。間引き処理が新たに行われたり、間引き量が変更されたり、間引き処理が終了したりすれば(ステップS401−Yes)ステップS402に進み、間引き処理状態の変更がなければ(ステップS401−No)ステップS401に戻る。
ステップS402で、閾値変更部108は、高頻度変更領域を判定するのに用いる閾値を変更し、変更後の閾値を高頻度変更領域識別部132に通知する。
これにより、操作コマンドが間引かれても、基本処理と同様にして適切な閾値を用いて動画化判定処理を行うことができる。
《クライアント端末の処理》
図13は、実施例1におけるクライアント端末20の情報処理の一例を示すフローチャートである。図13に示すステップS501で、入力部21は、マウスや、キー入力などによるユーザ操作があるか否かを判定する。ユーザ操作があれば(ステップS501−Yes)ステップS502に進み、ユーザ操作がなければ(ステップS501−No)ステップS503に進む。
ステップS502で、操作情報通知部211は、操作情報を逐次、サーバ装置10へ送信する。
ステップS503で、第1の受信部212は、画像データを受信したか否かを判定する。画像データを受信していれば(ステップS503−Yes)ステップS504に進み、画像データを受信していなければ(ステップS503−No)ステップS505に進む。
ステップS504で、第1のデコーダ202は、画像データを復号し、第1の表示制御部203は、復号された画像を表示部22の所定位置に表示させる。
ステップS505で、第2の受信部213は、動画データを受信したか否かを判定する。動画データを受信していれば(ステップS505−Yes)ステップS506に進み、動画データを受信していなければ(ステップS505−No)ステップS501に戻る。
ステップS506で、第2のデコーダ204は、動画データを復号し、第2の表示制御部205は、復号された動画を表示部22の所定位置に表示させる。
以上、実施例1によれば、シンクライアントの操作レスポンスを損なわずに、サーバ側の処理負荷を軽減し、データ転送量を削減することができる。
[実施例2]
次に、実施例2におけるシンクライアントシステムについて説明する。実施例2では、サーバ装置に更新データ量算出部を有し、これからクライアント端末に送信されるデータ量を算出してフィルタリング閾値として設定する。これからクライアント端末に送信されるデータ量を更新データ量とも呼ぶ。
これは、フィルタリング閾値を実際に送信するデータ量よりも大きく設定してしまうと、実際には描画処理を間引かなくてもよいのに間引いてしまい、FPS(frame Per Second)が減少してしまう。また、フィルタリング閾値を実際に送信するデータ量より小さく設定してしまうと、間引いた方が良い場合にも関わらず、描画処理を間引かずに無駄に描画処理を行ってしまう場合がある。
よって、更新データ量の平均値を所定間隔で算出し、この更新データ量をフィルタ部で用いられる閾値(第1閾値)に設定することで、操作コマンドの間引き処理を適切に行うことができる。
また、帯域推定部は、RTTを用いて上限データ転送量を推定しているが、上限データ転送量は、RTTのみによって決定されるものではなく、サーバ装置側の処理能力やネットワーク性能の変動によって決定される。そのため、RTTのみを利用して算出された上限データ転送量が多いと推定されたネットワークでも、他の影響で実際には上限データ転送量よりも少ないデータ量しか送信できない場合が発生する。
そのため、帯域推定部は、RTTに加えて過去に実際に送信した実績のデータ転送量を計測する。過去に実際に送信したデータ転送量を実績データ量とも呼ぶ。帯域推定部は、更新データ量と、実績データ量とを比較し、差が所定値以上であれば実績データ量を上限データ転送量に設定する。
よって、算出した更新データ量と、実績データ量とに大きな差がある場合は、実績データ量を上限データ転送量に設定し、実績値を用いて操作コマンドをフィルタすることができ、より適切な間引き処理を行うことができる。
<システム>
実施例1に係るシンクライアントシステムについて説明する。図14は、実施例2に係るシンクライアントシステムに含まれる各装置の構成の一例を示すブロック図である。
図14に示すシンクライアントシステム2は、クライアント端末20が表示する画面をリモートでサーバ装置10に制御させるものである。基本的なシステム構成は、図1に示す構成と同様であり、実施例1と異なるところは、サーバ装置30の構成である。以下では、サーバ装置30について説明する。
<サーバ装置の構成>
次に、実施例2に係るサーバ装置30の構成について説明する。図14に示すように、サーバ装置30は、OS実行制御部11aと、アプリ実行制御部11bと、グラフィックドライバ12と、フレームバッファ13と、サーバ側リモート画面制御部31とを有する。なお、図14に示す例では、図14に示した機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや表示デバイスなどの機能を有するものとする。また、図14に示す構成で、図1に示す構成と同様のものは同じ符号を付し、その説明を省略する。
サーバ側リモート画面制御部31について、帯域推定部301と更新データ量算出部302以外の構成は、図1に示すサーバ側リモート画面制御部31の構成と同様であるため、同じ符号を付す。
更新データ量算出部302は、第1の送信部112及び第2の送信部113から、これからクライアント端末に送信するデータ量(更新データ量)を取得し、所定時間の更新データ量の平均値を算出する。更新データ量算出部302は、算出した更新データ量の平均値を、フィルタ部107で用いられるフィルタリング閾値に設定する。
更新データ量算出部302は、例えば、直近の10秒間で、更新データ量の平均値が3Mbpsであると算出した場合、この平均値をフィルタ部107のフィルタリング閾値に設定する。これにより、フィルタ部107では、適切な間引き処理が行われる。
また、帯域推定部301は、更新データ量算出部302で算出された更新データ量を用いて、上限データ転送量を変更してもよい。例えば、帯域推定部301は、第1の送信部112及び第2の送信部113から実際に送信されたデータ量(実績データ量)を計測し、実績データ量と更新データ量とを比較する。
帯域推定部301は、比較の結果、更新データ量と実績データ量との差が所定値以上であれば、実績データ量を上限データ転送量に設定し、フィルタ部107に通知する。例えば、所定値が500kbpsとし、更新データ量の平均値が3Mbpsであり、更新データ量を算出した区間と同区間の実績データ量の平均が2Mbpsだとする。
このとき、更新データ量と実績データ量との差(1Mbps)が、所定値(500kbps)以上であるため、帯域推定部301は、実績データ量(2Mbps)を上限データ転送量として設定し、フィルタ部107に通知する。これにより、フィルタ部107では、適切な間引き処理が行われる。
<動作>
次に、シンクライアントシステム2に用いられるサーバ装置30の動作について説明する。クライアント端末20の動作は、実施例1と同様であるため、その説明を省略する。
《サーバ装置の処理》
サーバ装置30の処理は、図9に示す処理と基本的には同様である。図9に示す処理と異なるとことは、更新データ量をフィルタリング閾値に設定することと、上限データ転送量に実績値を考慮することである。以下では、これらの処理を順に説明する。
(フィルタリング閾値設定処理)
図15は、実施例2におけるフィルタリング閾値設定処理の一例を示すフローチャートである。図15に示す処理は、図9に示すステップS103の処理と並行して行われる。
ステップS601で、更新データ量算出部302は、所定時間(例えば5秒)毎に、更新データ量の平均値を算出する。
ステップS602で、更新データ量算出部302は、算出した平均の更新データ量を、フィルタ部107に通知し、フィルタリング閾値として設定する。
これにより、フィルリング閾値を適切な値に設定することで、適切な間引き処理を行うことができる。
(上限データ転送量の設定)
図16は、実施例2における上限データ転送量の設定処理の一例を示すフローチャートである。図16に示す処理は、ステップS103に対応する処理である。
ステップS701〜S703の処理は、図10に示すステップS201〜S203の処理と同様であるため、その説明を省略する。
ステップS704で、帯域推定部301は、実績データ量の算出処理を行う。帯域推定部301は、クライアント端末20に送信された実績のデータ量について所定時間の平均を算出する。
ステップS705で、帯域推定部301は、更新データ量算出部302から、平均の更新データ量を取得する。
ステップS706で、帯域推定部301は、実績データ量と、更新データ量との差が所定値以上であるか否かを判定する。差が所定値以上であれば(ステップS706−Yes)ステップS707に進み、差が所定値未満であれば(ステップS706−No)算出された上限データ転送量が、上限データ転送量に設定される。
ステップS707で、帯域推定部301は、実績データ量を上限データ転送量に設定し、フィルタ部107に通知する。
これにより、上限データ転送量を、実績データ量に変更することができるので、より適切なネットワークでのデータ送信量を用いて間引き処理を行うことができる。
以上、実施例2によれば、より適切なフィルタリング閾値を設定することで、適切な間引き処理を行うことができる。また、実施例2によれば、実績データ量を算出する場合には、実績データ量を上限データ転送量に設定可能とすることで、送信したデータ量の実績値に基づいて適切な間引き処理を行うことができる。
[変形例]
図17は、情報処理装置400の構成の一例を示すブロック図である。情報処理装置400は、各実施例で説明したサーバ装置10、30及びクライアント端末20の一例である。図17に示すように、情報処理装置400は、制御部401、主記憶部402、補助記憶部403、ドライブ装置404、ネットワークI/F部406、入力部407、表示部408を含む。これら各構成は、バスを介して相互にデータ送受信可能に接続されている。
制御部401は、コンピュータの中で、各装置の制御やデータの演算、加工を行うCPUである。また、制御部401は、主記憶部402や補助記憶部403に記憶されたプログラムを実行する演算装置である。このプログラムは、上記各実施例で説明した情報処理を実行するプログラムである。
制御部401は、このプログラムを実行することで、実施例で説明した情報処理を実現できる。
主記憶部402は、ROM(Read Only Memory)やRAM(Random Access Memory)などであり、制御部401が実行する基本ソフトウェアであるOSやアプリケーションソフトウェアなどのプログラムやデータを記憶又は一時保存する記憶装置である。
補助記憶部403は、HDD(Hard Disk Drive)などであり、アプリケーションソフトウェアなどに関連するデータを記憶する記憶装置である。
ドライブ装置404は、記録媒体405、例えばフレキシブルディスクからプログラムを読み出し、記憶装置にインストールする。
また、記録媒体405に、所定のプログラムを格納し、この記録媒体405に格納されたプログラムはドライブ装置404を介して情報処理装置400にインストールされる。インストールされた所定のプログラムは、情報処理装置400により実行可能となる。
ネットワークI/F部406は、有線及び/又は無線回線などのデータ伝送路により構築されたLAN(Local Area Network)、WAN(Wide Area Network)などのネットワークを介して接続された通信機能を有する周辺機器と情報処理装置400とのインターフェースである。
入力部407は、カーソルキー、数字入力及び各種機能キー等を備えたキーボード、表示部408の表示画面上でキーの選択等を行うためのマウスやスライスパット等を有する。また、入力部407は、ユーザが制御部401に操作指示を与えたり、データを入力したりするためのユーザインターフェースである。
表示部408は、CRT(Cathode Ray Tube)やLCD(Liquid Crystal Display)等により構成され、制御部401から入力される表示データに応じた表示が行われる。
このように、上述した実施例で説明した情報処理は、コンピュータに実行させるためのプログラムとして実現されてもよい。このプログラムをサーバ等からインストールしてコンピュータに実行させることで、上述した情報処理を実現することができる。
また、このプログラムを記録媒体405に記録し、このプログラムが記録された記録媒体405をコンピュータや携帯端末に読み取らせて、上述した情報処理を実現させることも可能である。なお、記録媒体405は、CD−ROM、フレキシブルディスク、光磁気ディスク等の様に情報を光学的、電気的或いは磁気的に記録する記録媒体、ROM、フラッシュメモリ等の様に情報を電気的に記録する半導体メモリ等、様々なタイプの記録媒体を用いることができる。記録媒体には、搬送波は含まれない。また、上述した実施例で説明した情報処理は、1つ又は複数の集積回路に実装してもよい。
また、開示の入力部は、加速度センサや光センサ、地磁気センサ、温度センサなどのユーザの周辺状況および端末へのユーザの動作をセンシング可能なセンサでも良いし、タッチパネルやキーボードやマイクロフォンなどのユーザが直接入力を行う機器でもよい。
また、各実施例ではクライアント端末としてサーバ上のデスクトップ環境と同サイズの出力が可能なクライアント端末を想定している。しかし、クライアント端末は、画面の表示サイズを縮小することで、PDA(Personal Digital Assistant)やノートPC、携帯ゲーム機、携帯音楽プレイヤーなどの画面サイズの小さな端末上にも適用可能である。また、サーバ装置側のOS実行制御部は特定のアーキテクチャに依存せず、どのようなOSでも構わない。
なお、シンクライアントシステムでは文章作成アプリケーションやWebブラウザだけではなく、CADアプリケーションも利用可能である。CADアプリケーションでは、基盤の配線や3Dモデルの作成をワイヤフレームとよばれるデータで行う。このデータによっては、その後より詳細な描画データを作成するレンダリングと呼ばれる作業や、ワイヤフレームを様々な角度から眺めて不具合や不良部分や全体を検査するといった作業が行われる。
よって、CADアプリケーションなどをシンクライアントシステム上で利用する場合には大量のデータを転送することが要求される。このような大量のデータ転送が発生するアプリケーションを利用する場合、全ての画面データをそのままの形で転送すると数100Mbits/秒のネットワークの帯域幅を消費してしまう。
上記各実施例では、画面データを転送する場合には圧縮処理を行った上でデータを転送することができる。圧縮処理を行う場合には、画質とデータ量のトレードオフによって特定時間あたりのデータ量を変化させることが可能となる。
また、近年では、デスクトップPCだけでなくノートPCやタブレット端末といったモバイル端末をシンクライアントのクライアントとして利用してシンクライアントシステムへ接続する、という需要が高まっている。しかし、モバイル端末はデスクトップPCに比べて十分な処理能力が利用できない。そのため、サーバが画面の更新データを圧縮して送信する場合、モバイル端末側でリアルタイムに展開処理ができず、描画処理が遅延してしまうという問題が発生する。
上記実施例は、クライアント端末側の描画処理の負荷を軽減し、さらにサーバ側の描画処理の負荷も軽減してデータ転送量を削減できるため、モバイル環境においてもシンクライアントシステムを適用可能にするものである。
なお、上記各実施例は、ユーザがクライアント端末を利用してサーバ装置からデスクトップ環境の表示画面を、ネットワークを介して受信して利用する場面で適用できる。
また、デスクトップ環境ではCADアプリケーションの利用時に、3Dオブジェクトデータを開き、これをマウスのドラッグ操作で回転させ大量の画面更新が発生する、という操作シーンにも上記実施例は適用できる。
ただし、開示の技術は、CADアプリケーションに特化したものではなく、他のアプリケーション利用時でマウスのドラッグ操作により大量の画面更新が発生する場面へも適用可能である。
また、上記実施例ではフィルタ部において間引かれるコマンドとしてマウスのドラッグコマンドを用いてきたが、これ以外のコマンドもフィルタ対象となる。例えば、上下左右に対するスクロール操作やこれと同等のカーソルキーによる入力操作がフィルタ対象となる。
これらのコマンドでも、マウスのドラッグ操作と同様に1コマンドに対して1回画面の更新が行われる。例えば、Webブラウザではスクロール操作を1回行うと、表示ページが特定方向に全てスクロールするため、スクロールした部分全体が画面更新として認識される。
そのため、大量にこれらのコマンドがOS実行制御部へ入力されると画面更新も大量に発生する。このような現象は、WordやExcelなどのドキュメント文章の表示時など、コンテンツの表示を特定のウィンドウ領域のみに限って表示しているアプリケーションで広く発生する。
よって、開示のフィルタ部において、マウスのドラッグ操作コマンドと同様にスクロール操作コマンドなどについてもフィルタ処理を行ってよい。なお、処理方法は、マウスのドラッグ操作と同様の処理であり、またスクロール操作やカーソルキーによる入力操作はどの入力部から行われてもかまわない。
なお、クライアント端末の処理負荷の軽減のためにサーバ装置側の画面送信フレームレートを低下させるシーンにおいて、単純にサーバ装置側の描画フレーム数を間引くと、動画化処理が適切に動作せずデータ転送量が増加する問題があった。これに対し、開示の技術では、サーバ装置側でネットワークの上限データ転送量を推定し、上限にあわせて所定の操作コマンドを間引くことで描画処理負荷を削減するとともに、動画化処理で利用される閾値を間引いた量に応じて変更することで、動画化処理を適切に動作させ、データ転送量を削減することが可能である。
以上、各実施例について詳述したが、上記各実施例に限定されるものではなく、特許請求の範囲に記載された範囲内において、上記変形例以外にも種々の変形及び変更が可能である。
なお、以上の各実施例に関し、さらに以下の付記を開示する。
(付記1)
ネットワークを介して接続された端末に、該端末で表示される画像を生成して、該画像に関するデータを送信する情報処理装置であって、
前記端末から送信される操作コマンドに基づいて変更される前記画像に対して、該画像内の領域で、所定期間内に第1閾値以上の変更があれば前記領域を動画化対象の領域に設定する動画化領域推定部と、
前記情報処理装置及び前記端末間のネットワークの往復遅延に基づき、上限のデータ転送量を推定する推定部と、
前記推定されたデータ転送量が第2閾値未満の場合、前記操作コマンドのうち、所定の操作コマンドを間引くフィルタ部と、
前記所定の操作コマンドが間引かれた場合、前記フィルタ部の間引き量に応じて前記第1閾値を変更する閾値変更部と、
を備える情報処理装置。
(付記2)
前記情報処理装置から前記端末に送信される第1データ量の平均値を所定間隔で算出し、該平均値を前記第2閾値に設定する算出部をさらに備える付記1記載の情報処理装置。
(付記3)
前記推定部は、
前記情報処理装置から前記端末に実際に送信された第2データ量を計測し、該第2データ量と前記第1データ量との差が所定値以上であれば、該第2データ量を前記データ転送量に設定する付記2記載の情報処理装置。
(付記4)
ネットワークを介して接続された端末に、該端末で表示される画像を生成して、該画像に関するデータを送信する情報処理装置が実行する情報処理方法であって、
前記端末から送信される操作コマンドに基づいて変更される前記画像に対して、該画像内の領域で、所定期間内に第1閾値以上の変更があれば前記領域を動画化対象の領域に設定し、
前記情報処理装置及び前記端末間のネットワークの往復遅延に基づき、上限のデータ転送量を推定し、
前記推定されたデータ転送量が第2閾値未満の場合、前記操作コマンドのうち、所定の操作コマンドを間引き、
前記所定の操作コマンドが間引かれた場合、前記所定の操作コマンドの間引き量に応じて前記第1閾値を変更する処理を有する情報処理方法。
(付記5)
前記情報処理装置から前記端末に送信される第1データ量の平均値を所定間隔で算出し、該平均値を前記第2閾値に設定する処理をさらに有する付記4記載の情報処理方法。
(付記6)
ネットワークを介して接続された端末に、該端末で表示される画像を生成して、該画像に関するデータを送信する情報処理装置に実行させるためのプログラムであって、
前記端末から送信される操作コマンドに基づいて変更される前記画像に対して、該画像内の領域で、所定期間内に第1閾値以上の変更があれば前記領域を動画化対象の領域に設定し、
前記情報処理装置及び前記端末間のネットワークの往復遅延に基づき、上限のデータ転送量を推定し、
前記推定されたデータ転送量が第2閾値未満の場合、前記操作コマンドのうち、所定の操作コマンドを間引き、
前記所定の操作コマンドが間引かれた場合、前記所定の操作コマンドの間引き量に応じて前記第1閾値を変更する処理を情報処理装置に実行させるためのプログラム。
10 サーバ装置
20 クライアント端末
11a OS実行制御部
11b アプリ実行制御部
12 グラフィックドライバ
13 フレームバッファ
14、31 サーバ側リモート画面制御部
21 入力部
22 表示部
23 クライアント側リモート画面制御部
101 通信部
102 画像生成部
103 動画化領域推定部
104 第1のエンコーダ
105 第2のエンコーダ
106、301 帯域推定部
107 フィルタ部
108 閾値変更部
111 操作情報取得部
112 第1の送信部
113 第2の送信部
131変更頻度識別部
132 高頻度変更領域識別部
211 操作情報通知部
212 第1の受信部
213 第2の受信部
302 更新データ量算出部

Claims (5)

  1. ネットワークを介して接続された端末に、該端末で表示される画像を生成して、該画像に関するデータを送信する情報処理装置であって、
    前記端末から送信される操作コマンドに基づいて変更される前記画像に対して、該画像内の領域で、所定時間内に第1閾値以上の変更があれば前記領域を動画化対象の領域に設定する動画化領域推定部と、
    前記情報処理装置及び前記端末間のネットワークの往復遅延に基づき、上限のデータ転送量を推定する推定部と、
    前記推定されたデータ転送量が第2閾値未満の場合、前記操作コマンドのうち、所定の操作コマンドを間引くフィルタ部と、
    前記所定の操作コマンドが間引かれた場合、前記フィルタ部の間引き量に応じて前記第1閾値を変更する閾値変更部と、
    を備える情報処理装置。
  2. 前記情報処理装置から前記端末に送信される第1データ量の平均値を所定間隔で算出し、該平均値を前記第2閾値に設定する算出部をさらに備える請求項1記載の情報処理装置。
  3. 前記推定部は、
    前記情報処理装置から前記端末に実際に送信された第2データ量を計測し、該第2データ量と前記第1データ量との差が所定値以上であれば、該第2データ量を前記データ転送量に設定する請求項2記載の情報処理装置。
  4. ネットワークを介して接続された端末に、該端末で表示される画像を生成して、該画像に関するデータを送信する情報処理装置が実行する情報処理方法であって、
    前記端末から送信される操作コマンドに基づいて変更される前記画像に対して、該画像内の領域で、所定時間内に第1閾値以上の変更があれば前記領域を動画化対象の領域に設定し、
    前記情報処理装置及び前記端末間のネットワークの往復遅延に基づき、上限のデータ転送量を推定し、
    前記推定されたデータ転送量が第2閾値未満の場合、前記操作コマンドのうち、所定の操作コマンドを間引き、
    前記所定の操作コマンドが間引かれた場合、前記所定の操作コマンドの間引き量に応じて前記第1閾値を変更する処理を有する情報処理方法。
  5. ネットワークを介して接続された端末に、該端末で表示される画像を生成して、該画像に関するデータを送信する情報処理装置に実行させるためのプログラムであって、
    前記端末から送信される操作コマンドに基づいて変更される前記画像に対して、該画像内の領域で、所定時間内に第1閾値以上の変更があれば前記領域を動画化対象の領域に設定し、
    前記情報処理装置及び前記端末間のネットワークの往復遅延に基づき、上限のデータ転送量を推定し、
    前記推定されたデータ転送量が第2閾値未満の場合、前記操作コマンドのうち、所定の操作コマンドを間引き、
    前記所定の操作コマンドが間引かれた場合、前記所定の操作コマンドの間引き量に応じて前記第1閾値を変更する処理を情報処理装置に実行させるためのプログラム。
JP2011278938A 2011-12-20 2011-12-20 情報処理装置、情報処理方法及びプログラム Active JP5899897B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011278938A JP5899897B2 (ja) 2011-12-20 2011-12-20 情報処理装置、情報処理方法及びプログラム
US13/671,210 US9716907B2 (en) 2011-12-20 2012-11-07 Updating thin-client display based on a thin-out rate

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011278938A JP5899897B2 (ja) 2011-12-20 2011-12-20 情報処理装置、情報処理方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2013130968A true JP2013130968A (ja) 2013-07-04
JP5899897B2 JP5899897B2 (ja) 2016-04-06

Family

ID=48611304

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011278938A Active JP5899897B2 (ja) 2011-12-20 2011-12-20 情報処理装置、情報処理方法及びプログラム

Country Status (2)

Country Link
US (1) US9716907B2 (ja)
JP (1) JP5899897B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015069240A (ja) * 2013-09-26 2015-04-13 富士通株式会社 情報処理装置、情報処理方法および情報処理プログラム
JP2015184995A (ja) * 2014-03-25 2015-10-22 三菱電機インフォメーションネットワーク株式会社 画面通信量見積り装置、画面通信量見積りプログラムおよび画面通信量見積り方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2563038A1 (en) * 2011-08-26 2013-02-27 Streamtainment Systems OÜ Method for transmitting video signals from an application on a server over an IP network to a client device
US9930082B2 (en) 2012-11-20 2018-03-27 Nvidia Corporation Method and system for network driven automatic adaptive rendering impedance
US10616086B2 (en) 2012-12-27 2020-04-07 Navidia Corporation Network adaptive latency reduction through frame rate control
US9819604B2 (en) 2013-07-31 2017-11-14 Nvidia Corporation Real time network adaptive low latency transport stream muxing of audio/video streams for miracast
JP6718435B2 (ja) * 2015-03-25 2020-07-08 株式会社ハイウェイテックジャパン シンクライアント方式によるデバイス制御方法
JP2017169001A (ja) * 2016-03-15 2017-09-21 富士通株式会社 表示画面データの伝送装置、伝送方法及び伝送プログラム
CN109858231B (zh) * 2019-01-22 2021-03-23 武汉极意网络科技有限公司 行为轨迹无损压缩编码方法、用户设备、存储介质及装置
CN113423012B (zh) * 2021-08-23 2021-12-03 中兴通讯股份有限公司 视频处理方法、服务器和计算机可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007328594A (ja) * 2006-06-08 2007-12-20 Toshiba Corp サーバ装置、並びにその制御命令処理方法及び制御命令処理プログラム、端末装置
JP2011238014A (ja) * 2010-05-10 2011-11-24 Fujitsu Ltd 情報処理装置、画像送信プログラム、画像表示プログラム及び画像表示方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03218512A (ja) 1990-01-24 1991-09-26 Fujitsu Ltd ドラッグ表示方式
US6270040B1 (en) * 2000-04-03 2001-08-07 Kam Industries Model train control system
JP2000158727A (ja) 1998-11-30 2000-06-13 Tokyo Denshi Sekkei Kk 画像出力装置および画像出力システム
US7053863B2 (en) * 2001-08-06 2006-05-30 Ati International Srl Wireless device method and apparatus with drawing command throttling control
JP2006236046A (ja) 2005-02-25 2006-09-07 Fujitsu Ltd クライアント装置,サーバ装置および画面表示方法
US8171169B2 (en) * 2005-03-14 2012-05-01 Citrix Systems, Inc. Method and apparatus for updating a graphical display in a distributed processing environment
JP4251650B2 (ja) * 2005-03-28 2009-04-08 株式会社カシオ日立モバイルコミュニケーションズ 画像処理装置及びプログラム
US7725799B2 (en) * 2005-03-31 2010-05-25 Qualcomm Incorporated Power savings in hierarchically coded modulation
WO2007015428A1 (ja) * 2005-08-01 2007-02-08 Matsushita Electric Industrial Co., Ltd. 送信装置および送信方法
JP4771431B2 (ja) 2007-09-20 2011-09-14 Kddi株式会社 オペレーティングシステムに基づくイベント処理機能搭載装置及びプログラム
US9106696B2 (en) * 2009-04-15 2015-08-11 Wyse Technology L.L.C. Method and apparatus for portability of a remote session
JP5685840B2 (ja) * 2010-07-01 2015-03-18 富士通株式会社 情報処理装置、画像送信プログラム及び画像表示方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007328594A (ja) * 2006-06-08 2007-12-20 Toshiba Corp サーバ装置、並びにその制御命令処理方法及び制御命令処理プログラム、端末装置
JP2011238014A (ja) * 2010-05-10 2011-11-24 Fujitsu Ltd 情報処理装置、画像送信プログラム、画像表示プログラム及び画像表示方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015069240A (ja) * 2013-09-26 2015-04-13 富士通株式会社 情報処理装置、情報処理方法および情報処理プログラム
JP2015184995A (ja) * 2014-03-25 2015-10-22 三菱電機インフォメーションネットワーク株式会社 画面通信量見積り装置、画面通信量見積りプログラムおよび画面通信量見積り方法

Also Published As

Publication number Publication date
US9716907B2 (en) 2017-07-25
JP5899897B2 (ja) 2016-04-06
US20130159393A1 (en) 2013-06-20

Similar Documents

Publication Publication Date Title
JP5899897B2 (ja) 情報処理装置、情報処理方法及びプログラム
JP5471794B2 (ja) 情報処理装置、画像送信プログラム及び画像表示方法
JP5821610B2 (ja) 情報処理装置、情報処理方法及びプログラム
US20130155075A1 (en) Information processing device, image transmission method, and recording medium
JP5471903B2 (ja) 情報処理装置、画像送信プログラム及び画像表示方法
US8819270B2 (en) Information processing apparatus, computer-readable non transitory storage medium storing image transmission program, and computer-readable storage medium storing image display program
US8982135B2 (en) Information processing apparatus and image display method
JP5678743B2 (ja) 情報処理装置、画像送信プログラム、画像送信方法および画像表示方法
JP5761007B2 (ja) 情報処理装置、画像送信方法及び画像送信プログラム
US9666166B2 (en) Information processing apparatus, method, and recording medium
US9269281B2 (en) Remote screen control device, remote screen control method, and recording medium
US9001131B2 (en) Information processing device, image transmission method and image transmission program
CN113368492A (zh) 渲染的方法、装置
US20130262705A1 (en) Information processing apparatus and image transmission method
US20160155429A1 (en) Information processing apparatus and terminal device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140904

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150624

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150714

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160209

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160222

R150 Certificate of patent or registration of utility model

Ref document number: 5899897

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150