JP2022042214A - 画像処理装置及び画面転送プログラム - Google Patents

画像処理装置及び画面転送プログラム Download PDF

Info

Publication number
JP2022042214A
JP2022042214A JP2020147530A JP2020147530A JP2022042214A JP 2022042214 A JP2022042214 A JP 2022042214A JP 2020147530 A JP2020147530 A JP 2020147530A JP 2020147530 A JP2020147530 A JP 2020147530A JP 2022042214 A JP2022042214 A JP 2022042214A
Authority
JP
Japan
Prior art keywords
image
gpu
unit
processing
moving image
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.)
Withdrawn
Application number
JP2020147530A
Other languages
English (en)
Inventor
幸二 山田
Koji Yamada
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 JP2020147530A priority Critical patent/JP2022042214A/ja
Priority to US17/380,889 priority patent/US11557018B2/en
Publication of JP2022042214A publication Critical patent/JP2022042214A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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
    • 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/1423Digital output to display device ; Cooperation and interconnection of the display device with other functional units controlling a plurality of local displays, e.g. CRT and flat panel display
    • G06F3/1431Digital output to display device ; Cooperation and interconnection of the display device with other functional units controlling a plurality of local displays, e.g. CRT and flat panel display using a single graphics controller
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/001Arbitration of resources in a display system, e.g. control of access to frame buffer by video controller and/or main processor
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/04Changes in size, position or resolution of an image
    • G09G2340/0407Resolution change, inclusive of the use of different resolutions for different screen areas
    • G09G2340/0435Change or adaptation of the frame rate of the video stream
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/08Power processing, i.e. workload management for processors involved in display operations, such as CPUs or GPUs
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/10Display system comprising arrangements, such as a coprocessor, specific for motion video images
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2370/00Aspects of data communication
    • G09G2370/02Networking aspects
    • G09G2370/022Centralised management of display operation, e.g. in a server instead of locally

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

【課題】仮想デスクトップにおけるユーザ操作性の低下を抑制する。【解決手段】クライアントマシンの表示部に表示する表示画像を、前記クライアントマシンに転送する画像処理装置であって、前記表示画像として、動画データのみを転送する第1転送処理を実行する第1転送部と、前記表示画像として、動画データ及び静止画データを転送する第2転送処理を実行する第2転送部と、画像に関する処理を行うGPU(Graphics Processing Unit)の状態と、前記表示画像のフレームレートとに基づき、前記第1転送処理または前記第2転送処理のいずれか選択し、実行させる制御部と、を有する。【選択図】 図12

Description

本発明は、画像処理装置及び画面転送プログラムに関する。
近年、情報漏えい抑制やセキュリティ向上のため、クラウド上の仮想マシン(サーバ)に処理を実行させる仮想デスクトップが普及してきている。仮想デスクトップでは、仮想マシンから送信された画面をクライアント端末のディスプレイ表示し、クライアント端末から仮想マシンを操作する。仮想デスクトップでは、クライアントのユーザ操作性の向上のため、画面転送のフレームレートの向上、及び、使用するネットワーク帯域の低減が望まれている。
仮想マシンは、クライアントに送信する画面をエンコードするとき、例えば、専用のGPU(Graphics Processing Unit)を使用する場合がある。
仮想デスクトップに関する技術は、以下の先行技術文献に記載されている。
開示されている。
特開2012-195629号公報 特開2016-184894号公報 特開2015-149040号公報 特開2015-191630号公報 特開2006-243324号公報 特開2019-083396号公報
しかし、仮想マシンは、クライアントの要求に応じた処理を行うとき、画面のエンコード以外で、GPUを使用する場合がある。GPUは、例えば、3D CGのレンダリングや、静止画や動画などの画像処理や、専用の演算などを行う場合がある。
このように、GPUを使用する処理と、画面のエンコードが同時に実行されると、仮想マシンのレスポンスに遅延が生じ、クライアントのユーザの操作性が低下する。
そこで、一開示は、仮想デスクトップにおけるユーザ操作性の低下を抑制する画像処理装置及び画面転送プログラムを提供する。
クライアントマシンの表示部に表示する表示画像を、前記クライアントマシンに転送する画像処理装置であって、前記表示画像として、動画データのみを転送する第1転送処理を実行する第1転送部と、前記表示画像として、動画データ及び静止画データを転送する第2転送処理を実行する第2転送部と、画像に関する処理を行うGPU(Graphics Processing Unit)の状態と、前記表示画像のフレームレートとに基づき、前記第1転送処理または前記第2転送処理のいずれか選択し、実行させる制御部と、を有する。
一開示は、仮想デスクトップにおけるユーザ操作性の低下を抑制することができる。
図1は、仮想デスクトップシステム1の構成例を示す図である。 図2は、サーバマシン200の構成例を表す図である。 図3は、クライアントマシン100の構成例を表す図である。 図4は、サーバマシン200の機能構成の例を示す図である。 図5は、転送モード判定処理S100の処理フローチャートの例を示す図である。 図6は、動画転送モード処理S200の処理フローチャートの例を示す図である。 図7は、動画転送モード処理S200のシーケンスの例を示す図である。 図8は、静止画及び動画転送モード処理S300の処理フローチャートの例を示す図である。 図9は、静止画領域の抽出の例を示す図である。 図10は、静止画及び動画転送モード処理S300のシーケンスの例を示す図である。 図11は、画像表示処理S400の処理フローチャートの例を示す図である。 図12は、画面転送モードの切り分けの例を示す図である。
[第1の実施の形態]
第1の実施の形態について説明する。
<仮想デスクトップシステム1の構成例>
図1は、仮想デスクトップシステム1の構成例を示す図である。仮想デスクトップシステム1は、クライアントマシン100、サーバマシン200、及びネットワーク300を有する。仮想デスクトップシステム1は、クライアントマシン100の要求に応じて、サーバマシン200が処理を実行するシステムである。
クライアントマシン100は、ユーザが操作する装置であり、例えば、コンピュータやサーバ装置である。クライアントマシン100は、例えば、キーボードによる入力や、マウスの操作などの、ユーザの操作を認識する。そして、クライアントマシン100は、ネットワーク300を介して、サーバマシン200にユーザの操作内容を送信する(S1)。
サーバマシン200(画像処理装置)は、クラウドの要求に応じて処理を実行する装置であり、例えば、クラウド上に設置される、仮想マシンやサーバ装置である。サーバマシン200は、クライアントマシン100からユーザの操作内容(クライアントマシンの要求)を受信すると(S1)、要求に応じた処理を実行する。また、サーバマシン200は、定期的又は不定期に、クライアントマシン100のディスプレイなどの表示部に表示する画面データを、エンコード(符号化)し、ネットワーク300を介して、クライアントマシン100に送信する(S2)。
クライアントマシン100は、サーバマシン200から画面データを受信すると(S2)、画面データをデコード(復号)し、自装置が有するディスプレイなどの表示部に表示する。
このように、仮想デスクトップシステム1は、ユーザが手元に設置されたクライアントマシン100を操作することで、遠隔に設置されたサーバマシン200に処理を実行させ、操作した結果である画面をクライアントマシン100のディスプレイで見ることができるシステムである。言い換えれば、仮想デスクトップシステム1は、表示や操作以外の処理を、クライアントマシン100に代替し、遠隔のサーバマシン200に実行させるシステムである。
<サーバマシン200の構成例>
図2は、サーバマシン200の構成例を表す図である。サーバマシン200は、CPU(Central Processing Unit)210、ストレージ220、メモリ230、通信回路250、及びGPU240を有する。
ストレージ220は、プログラムやデータを記憶する、フラッシュメモリ、HDD(Hard Disk Drive)、又はSSD(Solid State Drive)などの補助記憶装置である。ストレージ220は、転送モード判定プログラム221、動画転送モードプログラム222、静止画及び動画転送モードプログラム223を記憶する。
メモリ230は、ストレージ220に記憶されているプログラムをロードする領域である。また、メモリ230は、プログラムがデータを記憶する領域としても使用されてもよい。
CPU210は、ストレージ220に記憶されているプログラムを、メモリ230にロードし、ロードしたプログラムを実行し、各部を構築し、各処理を実現するプロセッサである。
GPU240は、ローカルメモリ241を有し、ストレージ220に記憶されているプログラムを、ローカルメモリ241又はメモリ230にロードし、ロードしたプログラムを実行し、各部を構築し、各処理を実現するプロセッサまたはアクセレータである。GPU240は、例えば、画像処理や所定の演算処理を行う。
ローカルメモリ241は、ストレージ220が記憶するプログラムをロードする領域である。また、ローカルメモリ241は、GPU240が実行するプログラムが、データを記憶する領域として使用されてもよい。
通信回路250は、クライアントマシン100と通信を行う装置であり、例えば、ネットワークインターフェースカードや、無線通信回路である。
CPU210又はGPU240は、転送モード判定プログラム221を実行することで、制御部を構築し、転送モード判定処理を行う。転送モード判定処理は、所定の指標に基づいて、クライアントマシン100に画像を転送する転送モードを判定する処理である。サーバマシン200は、例えば、クライアントマシン100に画面を転送するとき、転送モード判定処理を行う。また、サーバマシン200は、例えば、定期的に、転送モード判定処理を行ってもよい。
CPU210又はGPU240は、動画転送モードプログラム222を実行することで、第1転送部を構築し、動画転送モード処理を行う。動画転送モード処理は、クライアントマシン100に動画データ(動画ビットストリーム)のみを送信(転送)する処理である。
CPU210又はGPU240は、静止画及び動画転送モードプログラム223を実行することで、第2転送部を構築し、静止画及び動画転送モード処理を行う。静止画及び動画転送モード処理は、クライアントマシン100に動画データ(動画ビットストリーム)と静止画データ(静止画ビットストリーム)の両方を送信(転送)する処理である。
<クライアントマシン100の構成例>
図3は、クライアントマシン100の構成例を表す図である。クライアントマシン100は、CPU110、ストレージ120、メモリ130、GPU140、通信回路150、及び表示部160を有する。
ストレージ120は、プログラムやデータを記憶する、フラッシュメモリ、HDD、又はSSDなどの補助記憶装置である。ストレージ120は、画面表示プログラム121を記憶する。
メモリ130は、ストレージ120に記憶されているプログラムをロードする領域である。また、メモリ130は、プログラムがデータを記憶する領域としても使用されてもよい。
CPU110は、ストレージ120に記憶されているプログラムを、メモリ130にロードし、ロードしたプログラムを実行し、各部を構築し、各処理を実現するプロセッサである。
GPU140は、ローカルメモリ141を有し、ストレージ120に記憶されているプログラムを、ローカルメモリ141又はメモリ130にロードし、ロードしたプログラムを実行し、各部を構築し、各処理を実現するプロセッサまたはアクセレータである。GPU140は、例えば、画像処理や所定の演算処理を行う。
ローカルメモリ141は、ストレージ120が記憶するプログラムをロードする領域である。また、ローカルメモリ141は、GPU140が実行するプログラムが、データを記憶する領域として使用されてもよい。
通信回路150は、サーバマシン200と通信を行う装置であり、例えば、ネットワークインターフェースカードや、無線通信回路である。
表示部160は、画像を表示する画面である。表示部160は、例えば、ディスプレイや液晶画面である。表示部160は、クライアントマシン100と一体の装置であってもよいし、有線又は無線で接続される装置であってもよい。
CPU110又はGPU140は、画面表示プログラム121を実行することで、画面表示部を構築し、画面表示処理を行う。画面表示処理は、サーバマシン200から受信した画像を、表示部160に表示する処理である。
<サーバマシン200の機能構成>
図4は、サーバマシン200の機能構成の例を示す図である。サーバマシン200は、更新頻度判定部10、画像入力制御部11、画面転送モード判定部12、色差変換部13、全画面動画符号化部14、全画面動画復号部15、及び全画面動画復号画像フレームバッファ16を有する。さらに、サーバマシン200は、変更領域識別部17、静止画領域切り出し部18、静止画領域符号化部19、クライアント画像静止画領域切り出し部20、静止画領域復号部21、クライアント画像フレームバッファ22、色差変換部23、動画領域切り出し部24、及び送信部25を有する。
更新頻度判定部10は、クライアントマシン100に送信する画像(デスクトップ画像)の更新を判定する。更新頻度の判定は、例えば、送信する画像を複数の矩形に区分し、区分された区分ごとに実行される。
画像入力制御部11は、画面転送モードが動画及び静止画転送モードの時は、動画領域がある場合に入力画像を動画エンコーダに、静止画領域がある場合に入力画像を静止画エンコーダに入力する。一方、画像入力制御部11は、画面転送モードが動画転送モードの時は、動画領域がある場合に入力画像を動画エンコーダに入力する。画面転送モードの詳細については、後述する。
画面転送モード判定部12は、画面転送モードを決定する。画面転送モードは、例えば、GPU240の処理負荷やスループットに基づき、決定される。
色差変換部13は、入力した画像の色に関するデータ量を変換する処理部である。色差変換部13は、例えば、動画転送モード及び静止画及ぶ動画転送モードで送信される動画データの符号化方式に適した画像フォーマットに変換する。例えば、色差変換部13は、高画質の色(解像度が高い色差画素)(データ量が多い)を有するYUV444で入力された画像を、YUV444より低画質の色(解像度が低い色差画素)(データ量が少ない)を有するYUV420に変換する。なお、YUV420及びYUV444は、色情報の表現方法であるYUVフォーマットの例である。
全画面動画符号化部14は、入力画像の全画面を動画として符号化し、動画ストリームを出力する。
全画面動画復号部15は、動画ストリームを復号し、復号した動画(全画面の画像)を出力する。
全画面動画復号画像フレームバッファ16は、全画面の画像の復号画像を蓄積、記憶するバッファである。記憶した画像は、例えば、前回画像との比較や、一部の画像を切り出すために使用される。
変更領域識別部17は、入力画像を動画領域と静止画領域に分類する。また、変更領域識別部17は、符号化フレーム数と処理時間からフレームレートを計算する。
静止画領域切り出し部18は、入力した画像から静止画領域の画像を切り出す。切り出す静止画領域は、変更領域識別部17で静止画領域と判定された領域である。
静止画領域符号化部19は、入力した画像の静止画領域を、クライアント画像フレームバッファ22の画像を参照画像とし、差分静止画を抽出し、符号化を行い、静止画ストリームを出力する。
クライアント画像静止画領域切り出し部20は、クライアント画像フレームバッファ22に記憶されるクライアント画像から、静止画領域の参照画像となる領域の画像を切り出す。
静止画領域復号部21は、静止画ストリームを復号し、静止画領域の参照画像に加算して、クライアント画像フレームバッファ22に記憶する。
クライアント画像フレームバッファ22は、クライアントマシンの表示画像(送信した画像)と同一の画像を記憶するためのバッファである。記憶した画像は、更新の有無や、前回画像との差分の抽出などに使用される。
色差変換部23は、切り出した動画領域の画像を低画質の色(解像度が低い色差画素)を有する画像から高画質の色(解像度が高い色差画素)を有する画像に変換する。色差変換部23は、例えば、YUV420からYUV444に変換する。
動画領域切り出し部24は、全画面の動画から、動画領域の画像を切り出す。切り出す動画領域の画像は、例えば、静止画及び動画転送モードにおいて転送する動画領域部分である。
送信部25は、動画ビットストリーム及び静止画ビットストリームを、クライアントマシン100に送信する。
各部は、GPU240がプログラムを実行することで構築される。なお、各部は、CPU210がプログラムを実行することで構築されてもよい。また、各部は、GPU240及びCPU210のいずれかによって構築されてもよい。例えば、送信部25はCPU210により構築され、その他の各部はGPU240により構築されてもよい。
<転送モード判定処理について>
サーバマシン200は、クライアントマシン100に画像(クライアント画像)を転送するとき、転送モードを判定する転送モード判定処理S100を実行する。
図5は、転送モード判定処理S100の処理フローチャートの例を示す図である。サーバマシン200は、転送モード判定処理S100において、入力画像を前回の画像と比較する(S100-1)。なお、処理S100-1において、マウスポインターの移動など、クライアントマシン100で表示可能な情報に関しては、比較対象から除いてもよい。
サーバマシン200は、入力画像に更新がない(前回の画像と同じである)場合(S100-2のNo)、画像を転送せず、処理を終了する。
サーバマシン200は、入力画像に更新がある場合(S100-2のYes)、フレームレートを取得する(S100-3)。フレームレートは、サーバが送信する、または、クライアントが表示する画像の単位時間あたりのフレーム数を示す。また、フレームレートは、例えば、所定処理時間内に実行することができる処理量であってもよく、この場合、符号化したフレーム数を、当該符号化に要した時間で除した数値である。
また、フレームレートがクライアントマシン100におけるフレームレートである場合、サーバマシン200は、フレームレートをクライアントマシン100から取得してもよい。サーバマシン200は、例えば、クライアントマシン100から、フレームレートが含まれるメッセージを受信することで、フレームレートを取得する。
次に、サーバマシン200は、GPU240の処理負荷を取得する(S100-4)。GPU240の処理負荷は、GPU240の稼働率であり、例えば、GPU240の有するGPU240の処理負荷を返す関数を実行することで取得する。
サーバマシン200は、取得したフレームレートとGPU240の処理負荷に基づき、転送モードを判定する(S100-5)。サーバマシン200は、フレームレートが第1閾値以下で、かつGPU処理負荷が第2閾値より大きい場合(S100-5のYes)、動画転送モードを選択し、動画転送モード処理を実行し(S200)、処理を終了する。
第1閾値は、例えば、ユーザの操作性に基づいて決定する。過去の事例や実験結果などから、操作性が低下しない、最も低いフレームレートを第1閾値として設定してもよい。
第2閾値は、例えば、処理時間に基づいて決定する。例えば、所定の処理が完了するまでの処理時間と稼働率を測定し、許容できる処理時間の中で、最も高い稼働率を、第2閾値として設定してもよい。
なお、判定処理S100-5における、「以下」は「未満」であってもよいし、「より大きい」は「以上」であってもよい。
一方、サーバマシン200は、フレームレートが第1閾値以下でない、またはGPU処理負荷が第2閾値以下である場合(S100-5のNo)、静止画及び動画転送モードを選択し、静止画及び動画転送モード処理を実行し(S300)、処理を終了する。
<転送モードについて>
第1の実施の形態において、サーバマシン200は、2つの転送モードを使い分ける。2つの転送モードは、動画転送モードと静止画及び動画転送モードである。
動画転送モードは、動画のみをクライアントマシン100に送信する画面転送モードである。動画転送モードの動画は、例えば、YUV420の画像である。
一方、静止画及び動画転送モードは、静止画と動画をクライアントマシン100に送信する画面転送モードである。例えば、静止画及び動画転送モードの動画は、YUV420であり、静止画は、YUV444である。以下、それぞれの転送モードについて説明する。
<1.動画転送モード処理について>
動画転送モードは、クライアントマシン100に動画データ(動画ビットストリーム)だけを送信するモードである。
図6は、動画転送モード処理S200の処理フローチャートの例を示す図である。サーバマシン200は、動画転送モード処理S200において、入力画像の全領域を動画として符号化を行う(S200-1)。そして、サーバマシン200は、符号化した動画のビットストリームを、クライアントマシン100に送信し(S200-2)、処理を終了する。
図7は、動画転送モード処理S200のシーケンスの例を示す図である。なお、図7には、サーバマシン200が動画転送モードを選択するまでの処理についても含む。
サーバマシン200は、更新頻度判定部10に画像を入力する(S10)。入力する画像は、例えば、高画質(例えばYUV444)の動画である。
更新頻度判定部10は、入力された画像を複数の矩形の領域に分割する。そして、更新頻度判定部10は、分割した領域ごとに、更新頻度を判定する。更新頻度判定部10は、分割した領域ごとの更新頻度の判定結果を、画面転送モード判定部12及び画像入力制御部11に送信する(S11、S12)。
画面転送モード判定部12は、更新頻度の判定結果を参照し、図5における処理S100-1及び処理S100-2を行い、入力画像に更新があることを確認する(図5のS100-2のNo)。
画面転送モード判定部12は、フレームレートを取得する(図5のS100-3)。フレームレートは、画面転送モード判定部12が算出してもよいし、変更領域識別部17から取得してもよい。さらに、画面転送モード判定部12は、GPU処理負荷を含むGPU情報を取得する(S13、図5のS100-4)。
画面転送モード判定部12は、GPU処理負荷とフレームレートに基づき、動画転送モードを選択し、動画転送モード処理S200を行う(図5のS100-5のYes)。画面転送モード判定部12は、画像入力制御部11に、動画転送モードを選択したことを通知する(S14)。
画像入力制御部11は、画面転送モード判定部12に通知された画面転送モードの処理を開始する。図7においては、動画転送モード処理S200を実行する。画像入力制御部11は、入力画像を色差変換部13に送信する(S15)。
色差変換部13は、入力画像をYUV444からYUV420に変換する。そして、変換した画像を、全画面動画符号化部14に送信する(S16)。
全画面動画符号化部14は、受信した画像の符号化を実行し、動画ビットストリームを生成する。そして、全画面動画符号化部14は、生成した動画ストリームを、全画面動画復号部15及び送信部25に送信する。(S17、S18)。
送信部25は、動画ストリームを、クライアントマシン100に送信する(S19)。
全画面動画復号部15は、動画ストリームを復号し、復号した画像(動画)を、全画面動画復号画像フレームバッファ16に記憶する(S20)。
<2.静止画及び動画転送モード処理について>
静止画及び動画転送モードは、クライアントマシン100に静止画データ及び動画データを送信するモードである。なお、例えば、静止画データは、動画データに比べ、色関係の情報量が多い(高画質な)ものが使用される。
図8は、静止画及び動画転送モード処理S300の処理フローチャートの例を示す図である。サーバマシン200は、静止画及び動画転送モード処理S300において、入力画像から静止画領域を抽出する(S300-1)。
図9は、静止画領域の抽出の例を示す図である。サーバマシン200は、入力画像を、図9の左図の点線で示すように、縦5列、横6列の30個の矩形の領域に分割する。そして、サーバマシン200は、分割した領域ごとに、更新頻度を算出する。サーバマシン200は、例えば、9個の分割した領域を含む領域T1を、画面更新が多い領域と判定し、動画領域と決定する。そして、サーバマシン200は、動画領域以外の領域を、画面更新が少ない領域と判定し、静止画領域と決定する。なお、更新頻度の判定において、例えば、マウスポインターなど、クライアントマシン100で画像を生成するものや、クライアントマシン100で認識することが可能である想定される画像は、更新頻度の判定から除いてもよい。
図8の処理フローチャートに戻り、サーバマシン200は、静止画領域を静止画として符号化した静止画ビットストリームを生成する(S300-2)。
そして、サーバマシン200は、入力動画の全領域を動画として符号化した動画ビットストリームを生成する(S300-3)。なお、処理S300-3において、動画領域のみを符号化した動画ビットストリームを生成してもよい。
さらに、サーバマシン200は、生成した動画及び静止画のビットストリームを、クライアントマシン100に送信し(S300-4)、処理を終了する。
図10は、静止画及び動画転送モード処理S300のシーケンスの例を示す図である。図10には、サーバマシン200が静止画及び動画転送モードを選択するまでの処理についても含む。なお、処理S10から処理S13までは、図7に示す処理S10から処理S13と同様である。
画面転送モード判定部12は、GPU処理負荷とフレームレートに基づき、静止画及び動画転送モードを選択し、静止画及び動画転送モード処理S300を行う(図5のS100-5のNo)。画面転送モード判定部12は、画像入力制御部11に、静止画及び動画転送モードを選択したことを通知する(S51)。
画像入力制御部11は、画面転送モード判定部12に通知された画面転送モードの処理を開始する。図10においては、静止画及び動画転送モード処理S300を実行する。画像入力制御部11は、入力画像を色差変換部13に送信する(S52)。なお、処理S52から処理S59までは、動画に関する処理である。
色差変換部13は、入力画像をYUV444からYUV420に変換する。そして、変換した画像を、全画面動画符号化部14に送信する(S53)。
全画面動画符号化部14は、受信した画像の符号化を実行し、動画ビットストリームを生成する。そして、全画面動画符号化部14は、生成した動画ストリームを、全画面動画復号部15及び送信部25に送信する。(S54、S55)。
送信部25は、動画ストリームを、クライアントマシン100に送信する(S19)。
全画面動画復号部15は、動画ストリームを復号し、復号した画像(動画)を、全画面動画復号画像フレームバッファ16に記憶する(S56)。
動画領域切り出し部24は、全画面動画復号画像フレームバッファ16から、画像(動画)を取り出し(S57)、全画面の動画から動画領域の画像を切り出す。そして、動画領域切り出し部24は、切り出した動画領域の画像を、色差変換部23に送信する(S58)。
色差変換部23は、動画領域の画像をYUV420からYUV444に変換し、クライアント画像フレームバッファ22に記憶する(S59)。
一方、画像入力制御部11は、入力画像を静止画領域切り出し部18に送信する(S60)。なお、処理S60から処理S66までは、静止画に関する処理である。
静止画領域切り出し部18は、入力画像から静止画領域を切り出す。静止画領域は、例えば、変更領域識別部17から取得する。静止画領域切り出し部18は、切り出した静止画領域を、静止画領域符号化部19に送信する(S61)。
静止画領域符号化部19は、受信した静止画領域を符号化し、静止画ビットストリームを生成する。そして、静止画領域符号化部19は、生成した静止画ビットストリームを送信部25に送信する(S66)。
また、静止画領域符号化部19は、符号化した静止画ビットストリームを静止画領域復号部21に送信する(S62)。
静止画領域復号部21は、受信した静止画ビットストリームを復号し、復号した静止画をクライアント画像フレームバッファに記憶する(S63)。
クライアント画像静止画領域切り出し部20は、クライアント画像フレームバッファ22に記憶されるクライアント画像から、静止画領域の参照画像となる領域の画像を切り出す。参照画像は、静止画領域符号化部19が、静止画画像を符号化するときに参照される画像として使用される(S65)。
送信部25は、静止画ストリームを、クライアントマシン100に送信する(S67)。
なお、静止画及び動画転送モードは、特許文献1に記載される画像送信方法であってもよい。
<画像表示処理>
クライアントマシン100は、ビットストリームを受信すると、画像表示処理S400を行う。図11は、画像表示処理S400の処理フローチャートの例を示す図である。
クライアントマシン100は、画像のビットストリームを受信すると、受信した画像データの種別を判定する(S400-1)。
クライアントマシン100は、ビットストリームが動画である場合(S400-1の「動画」)、受信したビットストリームを復号し、動画を生成する(S400-2)。そして、クライアントマシン100は、生成した動画を、ディスプレイなどの表示部に表示し(S400-3)処理を終了する。
一方、クライアントマシン100は、ビットストリームが静止画である場合(S400-1の「静止画」)、受信したビットストリームを復号し、静止画を生成する(S400-4)。そして、クライアントマシン100は、生成した静止画を、ディスプレイなどの表示部に表示し(S400-5)処理を終了する。
なお、クライアントマシン100は、例えば、静止画を表示するとき、表示部上の静止画領域のみを更新するようにしてもよい。表示部の動画領域は、例えば、すでに受信済みの動画が表示されているためである。
また、クライアントマシン100は、例えば、動画を表示するとき、表示部上の動画領域のみを更新してもよい。表示部の静止画領域は、例えば、すでに受信済みの静止画が表示されているためである。
さらに、クライアントマシン100は、動画及び静止画のデータがない領域(画像としてのデータがない領域。例えば、画像データとしては使用されないNULLデータが設定されている領域)を、表示部上で更新しないようにしてもよい。このような処理を行うためには、例えば、動画ビットストリームにおけるデータがない領域が静止画領域を示し、静止画ビットストリームにおけるデータがない領域が動画領域を示すことなどを、クライアントマシン100とサーバマシン200との間で取り決めておく。
クライアントマシン100における画面表示処理の一例を示したが、クライアントマシン100において、動画領域は動画データが、静止画領域は静止画データが表示されるよう処理することが可能であれば、上記処理フローチャートの処理に限定されない。
<画面転送モードの切り分け>
サーバマシン200は、上述したように、画面転送モードを切り分けて使用する。動画転送モードは、静止画を送信しないため、静止画に関する処理を省略できるため、静止画及び動画転送モードと比較して、GPUの処理量を抑制することができる。
一方、静止画及び動画転送モードは、更新頻度の低い部分を静止画領域とし、静止画を送信する。更新頻度の低い領域は、画像が動いていない(画像の変更量が少ない)ため、クライアントマシン100のユーザが見たとき、画像の粗さ(低画質であること)が目立ちやすい。一方で、更新頻度の高い領域は、画像が動いている(画像の変更量が多い)ので、更新頻度の低い領域に比べ、画像の粗さが目立ちにくい。すなわち、静止画及び動画転送モードは、静止画領域を高画質にすることで、動画転送モードと比較して、クライアントマシン100のユーザに対して画像の粗さが目立ちにくい、良好な画像を提供することができる。
図12は、画面転送モードの切り分けの例を示す図である。図12(A)は、GPU低負荷時又は高フレームレート時に選択される静止画及び動画転送モードの例を示す図であり、図12(B)は、GPU高負荷時かつ低フレームレート時に選択される動画転送モードの例を示す図である。
図12(A)に示すように、GPUの負荷が低いときや、高いフレームレートであるときは、まだGPUの処理に余裕がある(もっとGPUに処理を実行させてもよい)状態であると判定し、GPUの処理量は多いが、高画質な画像を送信できる、静止画及び動画転送モードが実行される。
一方、図12(B)に示すように、GPUの負荷が高く、かつ低いフレームレートであるときは、まだGPUの処理に余裕がない(GPUの処理量を減少させるべき)状態であると判定し、静止画及び動画転送モードに比べて低画質とはなるが、GPUの処理量を低減させることができる、動画転送モードが実行される。なお。動画転送モードにおいては、表示画面の全てが動画領域となる。
このように、サーバマシン200は、高画質な静止画及び動画転送モードをなるべく実行するようにしつつ、GPUの負荷やスループットに応じて、GPU処理負荷を抑制できる動画転送モードを実行する。これにより、サーバマシン200は、ユーザの操作性を確保しつつ、なるべく高画質な画面データを送信することができる。
なお、例えば、動画転送モードで高画質な動画のみを転送した場合、送信するデータ量が多くなり、クライアントマシン100とサーバマシン200との間の通信に遅延が生じた場合、ユーザがクライアントマシン100で見る画面と、サーバマシン200の処理との不整合が生じたり、サーバマシン200への操作に遅延が生じたりする。よって、動画転送モードでは、通信に遅延を生じさせないように、低画質の動画を送信することが好ましい。
[その他の実施の形態]
例えば、静止画は低圧縮率で符号化し、動画は静止画より高圧縮率で符号化してもよい。
また、上記の実施の形態において、高画質時の例としてYUV444、低画質の例としてYUV420を使用しているが、他のYUV方式の色情報であってもよい。また、YUV方式以外の方式(例えば、YCbCr方式やRGB方式)であってもよい。
また、第1の実施の形態においては、画面転送モードの判定において、GPU処理負荷とフレームレートが使用されるが、例えば、GPU処理負荷に代替し、GPUのメモリバンド幅を使用してもよい。メモリバンド幅が大きいということは、単位時間あたりに多くデータをメモリから読み出している(読み出す必要がある)ということを示しているため、GPUの処理負荷が高いことと同様に、指標として使用することができる。
以下、まとめると付記のようになる。
(付記1)
クライアントマシンの表示部に表示する表示画像を、前記クライアントマシンに転送する画像処理装置であって、
前記表示画像として、動画データのみを転送する第1転送処理を実行する第1転送部と、
前記表示画像として、動画データ及び静止画データを転送する第2転送処理を実行する第2転送部と、
画像に関する処理を行うGPU(Graphics Processing Unit)の状態と、前記表示画像のフレームレートとに基づき、前記第1転送処理または前記第2転送処理のいずれか選択し、実行させる制御部と、
を有する画像処理装置。
(付記2)
前記GPUの状態は、前記GPUの処理負荷であって、
前記制御部は、前記GPUの処理負荷が第1閾値より高く、かつ前記フレームレートが第2閾値より低いとき、前記第1転送処理を選択する
付記1記載の画像処理装置。
(付記3)
前記制御部は、前記GPUの処理負荷が第1閾値以下、又は前記フレームレートが第2閾値以上であるとき、前記第2転送処理を選択する
付記2記載の画像処理装置。
(付記4)
前記第2転送処理で送信する静止画データは、前記第1転送処理及び前記第2転送処理で送信する動画データよりも、高画質の画像である
付記2記載の画像処理装置。
(付記5)
前記第2転送処理で送信する静止画データは、前記表示画像のうち、更新頻度が低い領域の画像である
付記2記載の画像処理装置。
(付記6)
前記第1転送処理における前記GPUの第1処理量は、前記第2転送処理における前記GPUの第2処理量より多い
付記2記載の画像処理装置。
(付記7)
前記フレームレートは、前記表示画像の単位時間あたりのフレーム数である
付記2記載の画像処理装置。
(付記8)
さらに、前記フレームレートを前記クライアントマシンから取得する取得部を有する
付記2記載の画像処理装置。
(付記9)
前記動画データ及び静止画データは、前記GPUで符号化されたデータである
付記2記載の画像処理装置。
(付記10)
前記GPUの状態は、前記GPUのメモリバンド幅であり、
前記制御部は、前記GPUのメモリバンド幅が第1閾値より大きく、前記フレームレートが第2閾値より低いとき、前記第1転送処理を選択する
付記1記載の画像処理装置。
(付記11)
クライアントマシンの表示部に表示する表示画像を、前記クライアントマシンに転送する画像処理装置が有するプログラムであって、
前記表示画像として、動画データのみを転送する第1転送処理と、
前記表示画像として、動画データ及び静止画データを転送する第2転送処理と、
前記画像処理装置の画像に関する処理を行うGPU(Graphics Processing Unit)の状態と、前記表示画像のフレームレートとに基づき、前記第1転送処理または前記第2転送処理のいずれか選択し、実行する選択処理と、
を前記画像処理装置が有する前記GPUに実行させる画面転送プログラム。
1 :仮想デスクトップシステム
10 :更新頻度判定部
11 :画像入力制御部
12 :画面転送モード判定部
13 :色差変換部
14 :全画面動画符号化部
15 :全画面動画復号部
16 :全画面動画復号画像フレームバッファ
17 :変更領域識別部
18 :静止画領域切り出し部
19 :静止画領域符号化部
20 :クライアント画像静止画領域切り出し部
21 :静止画領域復号部
22 :クライアント画像フレームバッファ
23 :色差変換部
24 :動画領域切り出し部
25 :送信部
100 :クライアントマシン
110 :CPU
120 :ストレージ
121 :画面表示プログラム
130 :メモリ
140 :GPU
141 :ローカルメモリ
150 :通信回路
160 :表示部
200 :サーバマシン
210 :CPU
220 :ストレージ
221 :転送モード判定プログラム
222 :動画転送モードプログラム
223 :静止画及び動画転送モードプログラム
230 :メモリ
240 :GPU
241 :ローカルメモリ
250 :通信回路
300 :ネットワーク

Claims (10)

  1. クライアントマシンの表示部に表示する表示画像を、前記クライアントマシンに転送する画像処理装置であって、
    前記表示画像として、動画データのみを転送する第1転送処理を実行する第1転送部と、
    前記表示画像として、動画データ及び静止画データを転送する第2転送処理を実行する第2転送部と、
    画像に関する処理を行うGPU(Graphics Processing Unit)の状態と、前記表示画像のフレームレートとに基づき、前記第1転送処理または前記第2転送処理のいずれか選択し、実行させる制御部と、
    を有する画像処理装置。
  2. 前記GPUの状態は、前記GPUの処理負荷であって、
    前記制御部は、前記GPUの処理負荷が第1閾値より高く、かつ前記フレームレートが第2閾値より低いとき、前記第1転送処理を選択する
    請求項1記載の画像処理装置。
  3. 前記第2転送処理で送信する静止画データは、前記第1転送処理及び前記第2転送処理で送信する動画データよりも、高画質の画像である
    請求項2記載の画像処理装置。
  4. 前記第2転送処理で送信する静止画データは、前記表示画像のうち、更新頻度が低い領域の画像である
    請求項2記載の画像処理装置。
  5. 前記第1転送処理における前記GPUの第1処理量は、前記第2転送処理における前記GPUの第2処理量より多い
    請求項2記載の画像処理装置。
  6. 前記フレームレートは、前記表示画像の単位時間あたりのフレーム数である
    請求項2記載の画像処理装置。
  7. さらに、前記フレームレートを前記クライアントマシンから取得する取得部を有する
    請求項2記載の画像処理装置。
  8. 前記動画データ及び静止画データは、前記GPUで符号化されたデータである
    請求項2記載の画像処理装置。
  9. 前記GPUの状態は、前記GPUのメモリバンド幅であり、
    前記制御部は、前記GPUのメモリバンド幅が第1閾値より大きく、前記フレームレートが第2閾値より低いとき、前記第1転送処理を選択する
    請求項1記載の画像処理装置。
  10. クライアントマシンの表示部に表示する表示画像を、前記クライアントマシンに転送する画像処理装置が有するプログラムであって、
    前記表示画像として、動画データのみを転送する第1転送処理と、
    前記表示画像として、動画データ及び静止画データを転送する第2転送処理と、
    前記画像処理装置の画像に関する処理を行うGPU(Graphics Processing Unit)の状態と、前記表示画像のフレームレートとに基づき、前記第1転送処理または前記第2転送処理のいずれか選択し、実行する選択処理と、
    を前記画像処理装置が有する前記GPUに実行させる画面転送プログラム。
JP2020147530A 2020-09-02 2020-09-02 画像処理装置及び画面転送プログラム Withdrawn JP2022042214A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020147530A JP2022042214A (ja) 2020-09-02 2020-09-02 画像処理装置及び画面転送プログラム
US17/380,889 US11557018B2 (en) 2020-09-02 2021-07-20 Image processing apparatus and computer-readable recording medium storing screen transfer program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020147530A JP2022042214A (ja) 2020-09-02 2020-09-02 画像処理装置及び画面転送プログラム

Publications (1)

Publication Number Publication Date
JP2022042214A true JP2022042214A (ja) 2022-03-14

Family

ID=80358747

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020147530A Withdrawn JP2022042214A (ja) 2020-09-02 2020-09-02 画像処理装置及び画面転送プログラム

Country Status (2)

Country Link
US (1) US11557018B2 (ja)
JP (1) JP2022042214A (ja)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006243324A (ja) 2005-03-03 2006-09-14 Matsushita Electric Ind Co Ltd 画像伝送システムおよび画像伝送方法
JP5664289B2 (ja) * 2011-01-31 2015-02-04 富士通株式会社 情報処理装置、画像送信プログラムおよび画像表示方法
JP5678743B2 (ja) 2011-03-14 2015-03-04 富士通株式会社 情報処理装置、画像送信プログラム、画像送信方法および画像表示方法
JP6248671B2 (ja) 2014-02-10 2017-12-20 富士通株式会社 情報処理装置、方法、プログラム、および情報処理システム
JP2015191630A (ja) 2014-03-28 2015-11-02 富士通株式会社 情報処理装置、変更検出方法および変更検出プログラム
JP6481457B2 (ja) 2015-03-26 2019-03-13 富士通株式会社 動画像符号化装置、動画像符号化方法、動画像復号装置、及び動画像復号方法
US10051253B1 (en) * 2015-12-18 2018-08-14 Snap Inc. Binarization of a video stream
JP6907888B2 (ja) 2017-10-30 2021-07-21 富士通株式会社 情報処理システム、情報処理装置および情報処理プログラム

Also Published As

Publication number Publication date
US11557018B2 (en) 2023-01-17
US20220067873A1 (en) 2022-03-03

Similar Documents

Publication Publication Date Title
US8754827B2 (en) Updating an image
US20100322523A1 (en) Screen data transmitting system, screen data transmitting server, screen data transmitting method and program recording medium
US8995763B2 (en) Systems and methods for determining compression methods to use for an image
US20050058353A1 (en) Image processing and display scheme for rendering an image at high speed
EP3177024B1 (en) Apparatus for cloud streaming service
WO2020108091A1 (zh) 视频处理方法、装置、电子设备及存储介质
US8760366B2 (en) Method and system for remote computing
US11102493B2 (en) Method and apparatus for image compression that employs multiple indexed color history buffers
GB2556743A (en) Management of memory for storing display data
WO2014195673A1 (en) Management of memory for storing display data
CN111245879A (zh) 一种虚拟桌面的桌面内容传输方法、***及相关组件
US20160005379A1 (en) Image Generation
WO2016016607A1 (en) Managing display data for display
US20130039429A1 (en) Computer display content coding method and system
CN109493304B (zh) 一种图像数据处理方法以及装置
KR101410837B1 (ko) 비디오 메모리의 모니터링을 이용한 영상 처리 장치
US10880555B2 (en) Information processing system and information processing apparatus
CN108668170B (zh) 图像信息处理方法及装置、存储介质
JP2022042214A (ja) 画像処理装置及び画面転送プログラム
US9819958B2 (en) Drawing system, information processing apparatus and drawing control method which switch drawing from still image data to video image data
US11032345B2 (en) Client side data stream processing
CN109413445B (zh) 一种视频传输方法及装置
WO2016154816A1 (zh) 数据处理方法及装置
US6829390B2 (en) Method and apparatus for transmitting image updates employing high compression encoding
US20240087169A1 (en) Realtime conversion of macroblocks to signed distance fields to improve text clarity in video streaming

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230608

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20240129