特許第6051303号(P6051303)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ヴイエムウェア インコーポレイテッドの特許一覧

特許6051303映像符号化技法によるユーザインターフェイス・リモーティング
<>
  • 特許6051303-映像符号化技法によるユーザインターフェイス・リモーティング 図000002
  • 特許6051303-映像符号化技法によるユーザインターフェイス・リモーティング 図000003
  • 特許6051303-映像符号化技法によるユーザインターフェイス・リモーティング 図000004
  • 特許6051303-映像符号化技法によるユーザインターフェイス・リモーティング 図000005
  • 特許6051303-映像符号化技法によるユーザインターフェイス・リモーティング 図000006
  • 特許6051303-映像符号化技法によるユーザインターフェイス・リモーティング 図000007
  • 特許6051303-映像符号化技法によるユーザインターフェイス・リモーティング 図000008
  • 特許6051303-映像符号化技法によるユーザインターフェイス・リモーティング 図000009
  • 特許6051303-映像符号化技法によるユーザインターフェイス・リモーティング 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6051303
(24)【登録日】2016年12月2日
(45)【発行日】2016年12月27日
(54)【発明の名称】映像符号化技法によるユーザインターフェイス・リモーティング
(51)【国際特許分類】
   H04N 21/234 20110101AFI20161219BHJP
   H04N 19/507 20140101ALI20161219BHJP
   H04N 19/517 20140101ALI20161219BHJP
   H04N 21/431 20110101ALI20161219BHJP
【FI】
   H04N21/234
   H04N19/507
   H04N19/517
   H04N21/431
【請求項の数】15
【全頁数】22
(21)【出願番号】特願2015-520719(P2015-520719)
(86)(22)【出願日】2013年7月24日
(65)【公表番号】特表2015-532022(P2015-532022A)
(43)【公表日】2015年11月5日
(86)【国際出願番号】US2013051894
(87)【国際公開番号】WO2014022175
(87)【国際公開日】20140206
【審査請求日】2014年12月25日
(31)【優先権主張番号】13/561,768
(32)【優先日】2012年7月30日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】510149482
【氏名又は名称】ヴイエムウェア インコーポレイテッド
【氏名又は名称原語表記】VMware,Inc.
(74)【代理人】
【識別番号】100105957
【弁理士】
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【弁理士】
【氏名又は名称】恩田 博宣
(74)【代理人】
【識別番号】100142907
【弁理士】
【氏名又は名称】本田 淳
(72)【発明者】
【氏名】サリム、アビエッツィ
(72)【発明者】
【氏名】ウィットウェル、キース
【審査官】 富樫 明
(56)【参考文献】
【文献】 特開2012−014533(JP,A)
【文献】 特開2010−282609(JP,A)
【文献】 米国特許出願公開第2009/0080523(US,A1)
【文献】 米国特許出願公開第2004/0151390(US,A1)
【文献】 米国特許出願公開第2011/0200107(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 21/00−21/858
H04N 19/507
H04N 19/517
(57)【特許請求の範囲】
【請求項1】
クライアント装置上で描画されるユーザインターフェイスをリモートするためのサーバ計算システム内の方法であって、
汎用映像符号器の動き予測プロセス中に、前記汎用映像符号器が
移動、スクロール、又は露出領域事象を検出するために前記サーバ計算システム上の仮想マシンのゲストオペレーティングシステムのグラフィックス・コマンド・ストリームについてのパターンマッチングを行い、
移動、スクロール、又は露出領域事象が検出されたとき、前記ユーザインターフェイスの更新部分を前記クライアント装置に関連する表示画面上に描画させる前に、前記ユーザインターフェイスの前記更新部分内で再利用可能な1組の画素を決定するとともに移動、スクロール、又は露出領域事象によって生じる動きベクトルを特定し、ここで前記動きベクトルは、前記ユーザインターフェイスの前記更新部分内の前記1組の画素の新たな位置指示するものであり
前記クライアント装置のウェブブラウザによってサポートされた汎用映像符号化プロトコルを使用し、前記ユーザインターフェイスの前記更新部分内で再利用可能な、決定された1組の画素の再利用を示す前記ユーザインターフェイスの前記更新部分の映像表現、及び前記新たな位置を指示する前記動きベクトルを生成して符号化
前記ユーザインターフェイスの前記更新部分の生成及び符号化済みの映像表現を前記クライアント装置上の前記ウェブブラウザに送信して、前記クライアント装置の前記ウェブブラウザ上の前記汎用映像符号化プロトコルに関する復号器に、前記クライアント装置上にキャッシュされた1組の画素と、移動、スクロール、又は露出領域事象によって生じた前記動きベクトルとを用いることによって前記ユーザインターフェイスの前記更新部分を前記クライアント装置に関連する前記表示画面上に復号および描画させるようにすること
を含む、方法。
【請求項2】
前記サーバ計算システムが仮想化サーバ計算システムであり、前記ユーザインターフェイスの前記更新部分が仮想マシンへの接続に対応するデスクトップの一部である、請求項1に記載の方法。
【請求項3】
前記サーバ計算システムが物理計算システムである、請求項1に記載の方法。
【請求項4】
前記映像符号化プロトコルに関する前記復号器が、前記クライアント装置がユーザインターフェイス・リモーティングを行うことを可能にする汎用映像ストリーミングプロトコルを使用する汎用映像復号器である、請求項1から3のいずれか一項に記載の方法。
【請求項5】
再利用可能な1組の画素を決定することが、前記ユーザインターフェイスの前記更新部分内で再利用可能な前記1組の画素を決定するために、前記サーバ計算システムのフレームバッファ内の画素を解析することを含む、請求項1から4のいずれか一項に記載の方法。
【請求項6】
再利用可能な1組の画素を決定することが、前記ユーザインターフェイスの前記更新部分内で再利用可能な前記1組の画素を決定するために、グラフィックスコマンドストリームを解析すること、および前記ユーザインターフェイスによってストリーミングされている映像ストリームの少なくとも一部を再利用することのうちの少なくとも一方を含む、請求項1に記載の方法。
【請求項7】
前記映像符号化プロトコルがH.264プロトコル、H.265プロトコル、VC1プロトコル、又はVP8プロトコルのうちの少なくとも1つである、請求項1から6のいずれか一項に記載の方法。
【請求項8】
前記ユーザインターフェイスの前記更新部分の生成済みの映像表現を前記クライアント装置に送信することが、前記映像符号化プロトコルに関する前記復号器に対して、符号化表現をウェブブラウザに転送させる方法で、前記ユーザインターフェイスの前記更新部分の生成済みの映像表現を前記クライアント装置上で実行される前記ウェブブラウザに送信することを更に含み、且つ/又は前記ユーザインターフェイスの前記更新部分の生成済みの映像表現を送信することがTCP/IPを使用することを含み、又は前記ユーザインターフェイスの前記更新部分の生成済みの映像表現を前記クライアント装置に送信することが、前記ユーザインターフェイスの前記更新部分の生成済みの映像表現を前記映像符号化プロトコルに関する前記復号器にユーザインターフェースリモーティングプロトコルを使用して直接送信することを更に含む、請求項1から7のいずれか一項に記載の方法。
【請求項9】
前記方法が、仮想化サーバ計算システムの仮想マシンプロセス及び仮想マシンモニタのうちの少なくとも一方によって実行される、請求項1から8のいずれか一項に記載の方法。
【請求項10】
前記サーバ計算システムを前記クライアント装置に接続するネットワーク内の、又は前記クライアント装置による符号化映像表現の処理における待ち時間を検出すること、
前記待ち時間に対処するために、検出された待ち時間に基づいて前記符号化映像表現の生成を調節すること
を更に含む、請求項1から9のいずれか一項に記載の方法。
【請求項11】
前記調節することが、より少ない帯域幅を使用することを含み、且つ/又は前記調節することが、その後の符号化映像表現を更に圧縮すること、又はその後の符号化映像表現の前記生成及び送信を遅くすることを含み、且つ/又は前記調節することが、前記クライアント装置上のCPU使用率を最小限にすることを含み、且つ/又は前記調節することが、より少ないフレームを生成して送信することを含む、請求項10に記載の方法。
【請求項12】
前記クライアント装置が、パーソナルコンピュータ、無線装置又は無線接続された装置、電話、スマートテレビ、及び/又はタブレットのうちの少なくとも1つである、請求項1から11のいずれか一項に記載の方法。
【請求項13】
サーバ内に格納されるコンピュータ可読媒体であって、請求項1から12のいずれか一項に記載の方法を実行することによりクライアント装置上で描画されるユーザインターフェイスをリモートするためのコンテンツを含むコンピュータ可読媒体。
【請求項14】
前記ユーザインターフェイスのアスペクトが、1つ以上のユーザインターフェイス操作を含み、且つ/又は映像ストリームおよび前記映像ストリームの少なくとも一部をそのまま転送することを含んで再利用可能な画素を含む、請求項13に記載のコンピュータ可読媒体。
【請求項15】
サーバ計算システムであって、
サーバ計算システムからクライアント装置へのネットワーク接続と、
動き推定器を含む映像符号器と
を備え、前記映像符号器は、実行されるときに請求項1から12のいずれか一項に記載の方法を実行するように構成される、サーバ計算システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ユーザインターフェイス・リモーティングのための方法、技法、及びシステムに関し、具体的には、映像ストリーミング及び映像符号化技術のうちの少なくとも一方を使用し、対話型ユーザインターフェイスを効率的にリモートするための方法、技法、及びシステムに関する。
【背景技術】
【0002】
コンピュータ業界は、記憶及び計算の大部分がデータセンタ又は「クラウド」(例えばネットワーク化された、インターネットによってアクセス可能な記憶域)において行われ、多くの異なるフォームファクタのクライアント装置を使用し、豊かなユーザエクスペリエンスを利用者の位置にリモートすることができるコンピューティングモデルへと進化している。仮想化インフラ、ネットワーク化インフラが著しく進歩したこと、並びに極めて能力があり、携帯可能なクライアント装置が多様であり普及したことは、かかるリモートアクセスを非常に実行可能に及び望ましくした。例えば、とりわけ大きな組織の従業員が離れた場所で仕事をし、それでもなお本社にある自身のデスクトップ及びアプリケーションを使用したいということ、及び使用しなければならないことのうちの少なくともいずれかは珍しいことではない。この遠隔操作は、実際のユーザインターフェイス(デスクトップ及びアプリケーションへの入出力、「I/O」)をリモートクライアント装置上で模倣しながら、利用者のデスクトップ及びアプリケーションをデータセンタ内で実行できるようにする仮想化技術によって可能になった。ユーザインターフェイスの模倣は、ユーザインターフェイスを「リモート」すること、つまり画面出力をリモート装置(例えばクライアント装置に関連するディスプレイ)に導き(例えば送信、転送、伝送、伝達等し)、入力装置のデータ(例えばキーボード、マウス、タッチ又は他の装置入力による)をリモート装置から受け取ることによって実現される。デスクトップ全体(例えばホストコンピューティングシステム又は仮想化サーバ上で実行されるオペレーティングシステムのユーザインターフェイス)、又はデスクトップ上で実行される単一のアプリケーションを、スマートフォン、タブレット、ノートブックパーソナルコンピュータ(PC)、デスクトップPC、スマートTV、他のフォームファクタの計算装置等の装置上でリモートすることができる。
【0003】
かかるクライアント装置との間でやり取りされるデータの待ち時間を含む、ユーザエクスペリエンスに影響を及ぼす幾つかの問題が残る。待ち時間は、デスクトップ及びアプリケーションのうちの少なくとも一方が動作している(又はホストされている)、クライアント装置及びクライアント装置をサーバに接続するネットワークのうちの少なくとも一方の制限によるものであり得る。更に、一部のネットワーク及びクライアント装置のうちの少なくとも一方には、応答的な方法で豊かなユーザインターフェイスエクスペリエンスを提供するのを困難にし得る帯域幅の制限がある。クライアント装置に素早くデータを転送する必要があればあるほど、待ち時間及び帯域幅の制限に見舞われる可能性が高くなる。
【発明の概要】
【課題を解決するための手段】
【0004】
一例では、クライアント装置上で描画されるユーザインターフェイスをリモートするための方法がサーバ計算システム内で提供され、この方法は、ユーザインターフェイスの更新部分をクライアント装置に関連する表示画面上に描画させる前に、ユーザインターフェイスの更新部分内で再利用可能な1組の画素、及びユーザインターフェイスの更新部分内の1組の画素の1つ以上の新たな位置の指示をユーザインターフェイスのアスペクトから求めること、映像符号化プロトコルを使用し、ユーザインターフェイスの更新部分内で再利用可能な、求めた1組の画素の再利用を示すユーザインターフェイスの更新部分の映像表現、及び新たな位置への参照を生成して符号化すること、クライアント装置上の映像符号化プロトコルに関する復号器に、ユーザインターフェイスの更新部分をクライアント装置に関連する表示画面上に描画させる方法で、ユーザインターフェイスの更新部分の生成済みの映像表現をクライアント装置に送信することを含む。
【0005】
一例では、ユーザインターフェイスの更新部分の映像表現を生成して符号化することが、更新部分内で再利用可能な求めた1組の画素を予測マクロブロックへの参照として符号化し、新たな位置を動きベクトルとして符号化する。
【0006】
一例では、サーバ計算システムが仮想化サーバ計算システムであり、ユーザインターフェイスの更新部分が仮想マシンへの接続に対応するデスクトップの一部である。別の実施形態では、サーバ計算システムが物理計算システムである。
【0007】
一例では、映像符号化プロトコルに関する復号器が、ユーザインターフェイス・リモーティング用に映像を復号するように最適化されていない汎用映像復号器である。
一例では、再利用可能な1組の画素をユーザインターフェイスのアスペクトから求めることが、ユーザインターフェイスの更新部分内で再利用可能な1組の画素を求めるために、ユーザインターフェイスのセマンティックスを解析することを含む。一例では、セマンティックスを解析することが、スクロール、移動、又は露出操作が行われるかどうかを解析することを含む。一例では、再利用可能な1組の画素をユーザインターフェイスのアスペクトから求めることが、ユーザインターフェイスの更新部分内で再利用可能な1組の画素を求めるために、サーバ計算システムのフレームバッファ内の画素を解析することを含む。一例では、再利用可能な1組の画素をユーザインターフェイスのアスペクトから求めることが、ユーザインターフェイスの更新部分内で再利用可能な1組の画素を求めるために、グラフィックス・コマンド・ストリームを解析することを含む。一例では、再利用可能な1組の画素をユーザインターフェイスのアスペクトから求めることが、ユーザインターフェイスによるストリームである映像ストリームの少なくとも一部を再利用することを含む。
【0008】
一例では、映像符号化プロトコルがH.264プロトコル、H.265プロトコル、VC1プロトコル、又はVP8プロトコルのうちの少なくとも1つである。
一例では、ユーザインターフェイスの更新部分の生成済みの映像表現をクライアント装置に送信することが、映像符号化プロトコルに関する復号器に対して、符号化表現をウェブブラウザに転送させる方法で、ユーザインターフェイスの更新部分の生成済みの映像表現をクライアント装置上で実行されるウェブブラウザに送信することを更に含む。一例では、送信することが、映像符号化プロトコルに関する復号器に符号化表現を転送するために、ウェブブラウザの<video>タグを利用する。一例では、送信することがTCP/IPを使用する。一例では、送信することが、ユーザインターフェイスの更新部分の生成済みの映像表現を映像符号化プロトコルに関する復号器に直接送信することを更に含む。
【0009】
一例では、この方法が、仮想化サーバ計算システムの仮想マシンプロセス及び仮想マシンモニタのうちの少なくとも一方によって実行される。
一例では、この方法が、サーバ計算システムをクライアント装置に接続するネットワーク内の、又はクライアント装置による符号化映像表現の処理における待ち時間を検出すること、待ち時間に対処するために符号化映像表現を調節することを更に含む。一例では、調節することが、より少ない帯域幅を使用することを含む。一例では、調節することが、その後の符号化映像表現を更に圧縮すること、又はその後の符号化映像表現の生成及び送信を遅くすることを含む。一例では、調節することが、クライアント装置上のCPU使用率を最小限にすることを含む。一例では、調節することが、より少ないフレームを生成して送信することを含む。
【0010】
一例では、クライアント装置が、パーソナルコンピュータ又はパーソナルコンピューティングシステム、無線装置又は無線接続された装置、電話、テレビ、スマートテレビ、及び/又はタブレットのうちの少なくとも1つである。
【0011】
一例では、クライアント装置上で描画されるユーザインターフェイスをリモートするためのコンテンツを含む、サーバ内に格納されるコンピュータ可読媒体が提供され、このコンピュータ可読媒体は、ユーザインターフェイスの更新部分をクライアント装置に関連する表示画面上に描画させる前に、ユーザインターフェイスの更新部分内で再利用可能な画素、及びユーザインターフェイスの更新部分内の画素の1つ以上の新たな位置の指示をユーザインターフェイスのアスペクトから求めること、映像符号化プロトコルを使用し、ユーザインターフェイスの更新部分内で再利用可能な求めた画素の再利用を示すユーザインターフェイスの更新部分の映像表現、及び新たな位置への参照を生成して符号化すること、並びにクライアント装置上の映像符号化プロトコルに関する復号器に、ユーザインターフェイスの更新部分をクライアント装置に関連する表示画面上に描画させる方法で、ユーザインターフェイスの更新部分の生成済みの映像表現をクライアント装置に送信することを含む。
【0012】
一例では、この媒体が計算システムのメモリであり、コンテンツがメモリ内に記憶されるコンピュータ命令である。
一例では、ユーザインターフェイスのアスペクトが1つ以上のユーザインターフェイス操作を含む。一例では、ユーザインターフェイスのアスペクトが、映像ストリームおよび映像ストリームの少なくとも一部をそのまま転送することを含んで再利用可能な画素を含む。
【0013】
一例では、再利用可能な画素をユーザインターフェイスのアスペクトから求めることが、フレームバッファ又はグラフィックス・コマンド・ストリームの少なくとも一方を解析することを含む。
【0014】
一例では、ユーザインターフェイスの更新部分の映像表現が、予測マクロブロックへの参照及び動きベクトルを含む。一例では、映像符号化プロトコルに関する復号器が、クライアント装置上にある汎用復号器である。
【0015】
一例では、サーバ計算システムからクライアント装置へのネットワーク接続と、動き推定器を含む映像符号器とを含むサーバ計算システムが提供され、映像符号器は、実行されるとき、ユーザインターフェイスの更新部分をクライアント装置に関連するディスプレイ上で描画するためにリモートさせる前に、ユーザインターフェイスの更新部分内で再利用可能な1つ以上の画素をサーバ計算システム上で実行されるコードのユーザインターフェイスのアスペクトから求めること、映像符号化プロトコルを使用し、ユーザインターフェイスの更新部分内のどこに1つ以上の画素を配置するのかについての指示と共に再利用可能な1つ以上の画素への参照を含む、ユーザインターフェイスの更新部分の表現を符号化すること、及びネットワーク接続を使用して通信することにより、クライアント装置上で実行される対応する映像復号器に符号化表現を送信することを行うように構成される。
【0016】
一例では、このサーバは、ホストコンピューティングシステム上で実行される仮想マシン計算環境である。一例では、この計算システムが、Windowsオペレーティングシステム、Linux、又はMacOSのうちの少なくとも1つであるゲストオペレーティングシステムを含む。一例では、クライアント装置へのネットワーク接続が、ゲストオペレーティングシステムによって実装されるTCP/IP接続である。一例では、TCP/IP接続が、ゲストオペレーティングシステムの一部ではないハイパーバイザ又は他の仮想化サポートによって実装される。
【0017】
一例では、映像符号器が、ユーザインターフェイス・リモーティングを行うために修正された汎用映像符号器である。一例では、映像復号器が、ユーザインターフェイス・リモーティングのために映像を復号するように最適化されていない汎用映像復号器である。一例では、映像復号器が市販の映像復号器である。一例では、クライアント装置が利用者に流通するとき、映像復号器がクライアント装置に埋め込まれ、又はクライアント装置と共に流通する。
【0018】
一例では、実行されるとき、動き推定器が、映像ストリームを解析することによってコードのユーザインターフェイスのアスペクトを解析し、映像ストリームを画素へと符号化することなしに再利用することに決めるように更に構成される。
【0019】
一例では、実行されるとき、符号化映像表現を処理する際のネットワークの待ち時間又はクライアント装置の待ち時間を調節するように構成される、ユーザインターフェイス・リモーティング・コードをサーバが更に含む。
【図面の簡単な説明】
【0020】
図1】向上したユーザインターフェイス・リモーティングの実施形態例を実行するための、仮想化サーバ計算システムの一例のブロック図である。
図2】ユーザインターフェイス・リモーティング及び最適化システムの一例の構成要素のブロック図の一例である。
図3】汎用映像ストリーミング・プロトコルの一例を使用する、映像ストリーミングの一例の全体像のブロック図である。
図4】H.264映像ストリーミング・プロトコルに従って実行される映像符号化技法の一例の全体像を示す。
図5】ユーザインターフェイスの一操作例による画素移動の一例を示す。
図6】一実施形態例による、向上したユーザインターフェイス・リモーティングのためのサーバロジックの一例の流れ図である。
図7】一実施形態例による、再利用可能な画素データを求めるためにユーザインターフェイスを解析するためのロジックの一例の流れ図である。
図8】一実施形態例による、映像ストリーミング・プロトコルを使用してユーザインターフェイスデータの符号化を求め、生成するためのロジックの一例の流れ図である。
図9】一実施形態例による、受信映像ビットストリームを復号し、描画するためのクライアントロジックの一例の流れ図である。
【発明を実施するための形態】
【0021】
本明細書に記載する実施形態は、映像ストリーミング技法を用いたユーザインターフェイス・リモーティングのための、向上したコンピュータ及びネットワークベースの方法、技法、及びシステムを提供する。本明細書で使用するとき、「ユーザインターフェイス・リモーティング」という語句は、別段の定めがない限り、全デスクトップ及びアプリケーションユーザインターフェイスのうちの少なくとも一方をリモートすることを指す。実施形態例は、ユーザインターフェイス・リモーティング及び最適化システム(「UIROS:User Interface Remoting and Optimization System」)を提供し、UIROSは、圧縮されたユーザインターフェイス画像情報を映像フレームが符号化されたビットストリーム形式で送るために、良く知られているH.264映像符号化規格等の汎用映像ストリーミング技法を使用し、仮想化環境がそのゲスト(ゲストオペレーティングシステム及び/又はゲストアプリケーション)に代わってユーザインターフェイスを効率的にリモートできるようにする。汎用映像ストリーム技法(例えば形式、コーデック等)とは、ユーザインターフェイス・リモーティング向けに特別に最適化され又は設計されていないものを広く指し、従って、例えば市販の、専売の、規格化された、又は他の映像復号器(例えば汎用映像復号器)によって復号され得る形式を含む場合がある。これにより、汎用(多くの場合ハードウェア又は埋込型の)映像復号器を有するクライアント装置が、ユーザインターフェイス(UI)リモーティングを行うように具体的に又は特別にプログラムされることなしに、ユーザインターフェイス(UI)リモーティングを行えるようになる。
【0022】
UIROSは、ユーザインターフェイスが一般に示す高「フレーム」コヒーレンシを上手く利用するために、ユーザインターフェイス・セマンティックスを活用する。つまり、多くのユーザインターフェイス操作に関して、連続したフレーム(使用される映像ストリーミング・プロトコルによって規定されるフレーム)間で画素のほんの一部しか変わらない。一般に、例えばスクローリング、ウィンドウの移動、領域を明らかにすること等のユーザ活動において、既にクライアント装置に転送されている1組の画素がターゲットフレーム内で再配置される(例えば新たな位置に移される)が、他の点では変更されない。このことは、クライアント装置が、クライアント側で画素情報をキャッシュして再利用し、画素情報がターゲットフレーム内でどのように移動したのかに関する情報、及び描画する必要がある新たな任意の情報だけを受信することを可能にする。UIROSの実施形態例では、これらの更新だけを映像フレームが符号化されたビットストリームとして有利に送信し、その結果、クライアント装置はよりコンパクト且つ高速の更新を受信し、それによりユーザインターフェイスをリモートする全体的な効率を高め、そうしてUIの待ち時間を減らす。クライアント装置は、例えばスマートフォン、タブレット、ノートブックコンピュータ、デスクトップコンピュータ、スマートテレビ(TV)等、使用される映像ストリーミング・プロトコルをサポートする任意の種類の装置を含み得る。
【0023】
加えて、H.264(さもなければ、アドバンスド・ビデオコーディングとしても知られる)、H.265、MicrosoftのVC−1、GoogleのVP8等の汎用映像ストリーミング・プロトコルを使用することにより、UIROSは、専用のことによると高価な専売デバイスドライバ、又は専用ハードウェアをクライアント上にインストールする必要なしに、最適化されたユーザインターフェイス・リモーティングデータをクライアント装置とやり取りすることができる。その理由は、多くのクライアント装置が既にこれらの規格を使用する映像復号を支援するハードウェア・アクセラレータと共に出荷されており、最も人気があるウェブブラウザ(インターネットエクスプローラ、グーグル及びクローム)が今やHTML5を使用するように構成されている(又は近い将来構成される)からであり、HTML5は、H.264オーバTCP/IP等、映像ストリームを伝送するための標準的なネットワーク・プロトコルを提供する<video>タグをサポートし、映像ストリームは可能な場合は常駐ハードウェアによって加速される復号器に通され得る。以下で更に説明するH.264規格は、ビットストリームを復号する技法に加え、符号化映像ビットストリームの構文を定める。H.264に関して説明を行ったが、本明細書に記載の技法、方法、及びシステムは他の任意の汎用映像規格でも機能し、H.264、VC1、及びVP8は単にその例に過ぎないことが理解される。本明細書に記載の技法、方法、及びシステムは、専売の並びに規格化され又は公開された映像形式(例えば規格化組織によって承認されたものや公開されているもの)で機能するが、これらの技法の所望の結果の1つは、最適化されたユーザインターフェイス・リモーティングをあらゆる種類のクライアント装置に関与する全ての人にとって実行可能にするために、汎用映像復号器を含む修正されていないクライアント装置上で実行される標準的なウェブブラウザで機能させることである。汎用プロトコルを使用し、クライアント装置内の映像ストリーミングのビルトインサポートを提供するウェブブラウザ(又はネイティブビデオドライバ)に更新を宛てることは、UIリモーティングのための専門の装置サポートを有する専用クライアント装置を作成する必要性をなくす。
【0024】
典型的な映像ストリーミングでは、動き推定を求めるために(画素がフレームごとにどのように変化するのかを求めるために)、網羅的な検索を含む様々な技法が使用される。動き推定とは、ターゲット画素ブロックと同様の(規定の大きさの、例えば16×16や4×4の)画素ブロックを探すプロセスである。類似性は、様々なアルゴリズムにより様々な方法で規定される。同様の画素ブロックが見つかる場合、移動データ及び差異データのうちの少なくとも一方だけを伝送(例えば伝達、転送、送信等)すれば良く、全ての画素の代わりに同様の画素ブロックへの参照。動き推定を求めるための網羅的な検索技法はCPUに高い負荷をかけ、非常に高額な場合もある。
【0025】
以下で詳細に説明するように、UIリモーティングに映像ストリーミング技法を使用することは、そのような網羅的な検索技法を使用しない最適化の機会を提供する。多くのユーザインターフェイス活動のフレームコヒーレンシにより、UIROSは、動き推定プロセス中に同様のフレームをより容易に検索することができる。例えばUIROSは、以下で更に説明するように、ユーザが入力した装置の動きを解析することに加えてゲストによって使用されるフレームバッファ、ゲストにより仮想化支援コード(仮想化ロジックやその構成要素等)又はホスト計算システムに送られるグラフィックスコマンド、及びこの目的を対象にしたアプリケーション・プログラミング・インターフェイス(「API」)を使用するゲストアプリケーションによって呼び出されるコマンド、のうちの1つ以上を調べることにより、画素の再利用性を明らかにすることができる。この検査プロセスは、再利用可能なブロックをもたらす、又はもたらすべき活動の「フィンガープリント」を与え得る。UIROSは、映像の符号化及びストリーミングのタイミング及びコンテンツのうちの少なくとも一方を調節(例えば較正、調整等)するために、クライアントの負荷及びネットワーク状態に関するフィードバック情報も解析することができる。
【0026】
図1は、向上したユーザインターフェイス・リモーティングの実施形態例を実行するための、仮想化サーバ計算システムの一例のブロック図である。仮想化サーバ計算システム100は、パーソナルコンピュータ、ラップトップ、又はx86アーキテクチャプラットフォーム等のサーバ(ホスト)ハードウェアプラットフォーム101上に構成することができる。仮想化サーバ計算システム100を実装するために、適切に命令された汎用計算システム又は専用計算システムも使用できることに留意されたい。仮想化サーバ計算システム100は、1つ以上のサーバ計算システムを含むことができ、分散した位置に及ぶことがある。加えて、図示の各ブロックは、1つ以上のかかるブロックを特定の実施形態に応じて適切に表すことができ、又は他のブロックと組合せられても良い。
【0027】
図示の実施形態では、ホストハードウェア・プラットフォーム101が、コンピュータメモリ102、1つ以上の中央処理装置(「CPU」)103、フレームバッファ(「FB」)104、及び例えばネットワークインターフェイスカード(「NIC」)105を介してアクセス可能な1つ以上のネットワーク接続を含むことができる。加えて、ホストハードウェア・プラットフォーム101は、1つ以上のディスプレイ109、グラフィックス処理装置(「GPU」)108、入出力(「I/O」)装置111(例えばキーボード、マウス、CRT、又はLCDディスプレイ等)、又は他のコンピュータ可読媒体110等、任意選択的に他の構成要素を含むことができる。
【0028】
仮想化ロジック120が、ホストハードウェア・プラットフォーム101のメモリ102内にロードされ、1つ以上のCPU103上で実行され得る。仮想化ロジック120は、代わりにソフトウェア、ハードウェア、ファームウェア、又はそれらの何らかの組合せによって実装することができる。仮想化ロジック120は、同時にインスタンス化され、実行され得る複数の仮想マシン(VM)141a〜141cをサポート可能な、1つ以上の仮想マシンモニタ(VMM)142a〜142c及びVMXプロセス151a〜151cを含む。本明細書で使用するとき、「仮想マシン」又はVMは、VM141a〜141c等、ゲストオペレーティングシステム及びアプリケーション(「ゲスト」)がその中で実行され得る実行空間を表す抽象概念である。各仮想マシン141a〜141cは、ゲストオペレーティングシステム(ゲストOS)、例えばゲストOS143a〜143c、及びそれぞれのゲストOS143a〜143c上で実行される1つ以上の対応するアプリケーション、例えばゲストアプリケーション144a〜144cを含むことができる。一実施形態例では、各VMが、実行されているとき、別のクライアント接続から遠隔的に接続される別の利用者にとってアクセス可能にされる。或る特定のホストによってサポートされるVMの数は、例えばハードウェアの能力、仮想化ロジックの構成、所望の性能等の側面に基づいて異なり得る。仮想化ロジック120上では、他のコード161も実行され得る。
【0029】
各VM141a〜141cは、仮想化ロジック120及びホストハードウェア・プラットフォーム101のうちの少なくとも一方によって実装される1つ以上の側面の仮想化を必要とし得る。つまり、仮想化ロジック120は、エミュレートされたハードウェア及びドライバを各VMに提供することができる。例えば、VMXプロセス151a〜151c及びVMM142a〜142cにより、仮想化ロジック120は、仮想CPU(「VCPU」)、仮想メモリ(「VMEM」)、仮想デバイスドライバ(「VDD」)、仮想ファイルシステムや仮想ディスク、仮想ネットワーク機能、及び仮想グラフィックス・アダプタ・ドライバやコマンド・エミュレーション等の仮想グラフィックス機能のうちの1つ以上を提供することができる。各仮想化環境は、標準的なx86ハードウェア・アーキテクチャ・プラットフォームの等価物として機能することができ、その結果、インスタンス化された仮想マシン内でアプリケーションを実行するために、任意のオペレーティングシステム(例えばMicrosoft Windows(登録商標)、Linux(登録商標)、Solaris(登録商標)86、NetWare、FreeBSD等)をゲストOS(例えばゲストOS143a〜143c)として実装することができる。他の実施形態では、他のハードウェア・アーキテクチャの仮想化がサポートされ得ることに留意されたい。
【0030】
一実施形態では、仮想化ロジック120が、分散VMファイルシステム132、記憶スタック131、及び物理データドライブ106及び107と通信するデバイスドライバ130により、仮想化された記憶域のサポートを行う。加えて、仮想化ロジック120は、ホストハードウェア・プラットフォーム101のNIC105と通信するために、仮想スイッチ133及びネットワークスタック134により、仮想化されたネットワークのサポートも行う。このサポートは、本明細書の他の箇所で言及する仮想化ロジックレベルにおいてTCP/IP接続を提供するために使用され得る。更に、仮想化ロジック120は、グラフィックスコマンドを使用してホストハードウェア101のフレームバッファ104を管理し、かつ満たすグラフィックスドライバ122と通信するために、サーバグラフィックスAPI121を使用するSVGA(又はVGA)グラフィックスアダプタ実装(OpenGI、Xserver実装等)により、仮想化されたグラフィックスのサポートも行う。特定の実施形態では、1つ以上のGPU108を使用することにより、ホストハードウェア・プラットフォーム101のグラフィックス機能を加速することができる。
【0031】
一部の実施形態では、仮想化実行環境が、VMXプロセス(例えばVMXプロセス151a〜151c)と呼ばれるユーザにおいて実行されるプロセス(より特権が与えられていないモード)、及びより特権が与えられた状態で実行されるVMM(例えばVMM142a〜142c)の両方によって提供される。各VM141a〜141cは、そのそれぞれのVMXプロセス151a〜151cの処理空間内で効果的に実行される(つまりそのメモリがそれぞれのVMXプロセスにマップされる)。VMXプロセス、例えばプロセス151a〜151cは、それぞれのVM、例えばVM141a〜141cからの入出力を処理するためのMKS(マウス、キーボード、画面)スレッド(例えばスレッド152a)を含むことができる。以下で詳細に説明するように、UIROSの一例では、ここがUIリモーティング・ロジック及びサポートがあり、かつ実行される場所である。VMXプロセスは、仮想SVGAドライバ153a等のユーザモードのグラフィックスレベルサポートも含む。VMXプロセスとVMMとの各対は共同して、各VMを実行するための効果的な(及び隔離された)仮想化実行環境を提供する。全体的な操作では、仮想化ロジック120が、VMM及びVMXプロセスによって実装される仮想化デバイスドライバから要求を受け取り、それらの要求を、ホストハードウェア・プラットフォーム101内にある実装置(フレームバッファ104、NIC105等)と通信する実装置ドライバ130又は122への対応する要求に変換(さもなければ移送、転送、送信、又は伝達)する。
【0032】
図1の仮想化サーバ計算システム100を説明するために使用した様々な用語、レイヤ、カテゴリ分類、構成要素は、本開示のそれらの機能又は趣旨から逸脱することなしに異なるように呼んでも良い。更に、特定の任意の実装形態において、構成要素の1つ以上がなくても良い。例えば、各VMM142a〜142c内に含まれていない、仮想化ロジック120の一部として図示する仮想構成要素(例えば構成要素130〜134、121〜122の1つ以上等)を、他の実施形態ではVMM142a〜142cの一部と見なすことができる。加えて、一部の実施形態では、VMXプロセスが使用されず、代わりにUIリモーティング及び仮想グラフィックス・アダプタ・サポートを含むMKSスレッド機能がVMM142a〜142c内に、又は仮想化ロジック120の他の部分内に統合される。更に、一部の実施形態では、VMM142a〜142cがVM102と別であり、又はVM102の一部であると見なすことができる。UIROSの実施形態は、仮想化ロジック120がホストハードウェア上に直接ではなく、ホストハードウェア・プラットフォーム101上で実行されるオペレーティングシステムの上に実装される、ホスト仮想マシンシステム等の他の仮想化計算環境内で実施することができる。
【0033】
更に、一部の実施形態では、仮想化サーバ計算システム100の構成要素の一部又は全てを、これだけに限定されないが、1つ以上の特定用途向け集積回路(ASIC)、標準的な集積回路、コントローラ(適切な命令を実行し、かつマイクロコントローラ及び埋込コントローラのうちの少なくとも一方を含む)、書替え可能ゲートアレイ(FPGA)、複合プログラム可能論理デバイス(CPLD)等を含むファームウェア及びハードウェアのうちの少なくとも一方によって少なくとも部分的に等、他の方法で実装し又は提供することができる。構成要素及びデータ構造のうちの少なくとも一方の一部若しくは全ては、記載の技法の少なくとも一部を実行するためにコンピュータ可読媒体がコンテンツを実行し又は他の方法で使用し若しくは提供することを可能にするコンピュータ可読媒体110等、コンピュータ可読媒体(例えばハードディスク、メモリ、ネットワーク、他のコンピュータ可読媒体、又はDVDやフラッシュメモリデバイス等、適切なドライブ又は適切な接続によって読み取られる他の携帯型媒体物)上のコンテンツとして(例えば実行ファイル又は他の機械可読ソフトウェア命令や構造化データとして)記憶することもできる。
【0034】
図2は、ユーザインターフェイス・リモーティング及び最適化システムの一例の構成要素のブロック図の一例である。一実施形態では、ユーザインターフェイス・リモーティング及び最適化システム(UIROS)が、映像圧縮及びストリーミング技法を使用し、共同してユーザインターフェイスの更新をクライアント装置に送信する1つ以上の機能上の構成要素/モジュールを含む。これらの構成要素は、ソフトウェア、ハードウェア、ファームウェア、又は組合せによって実装することができる。図2では、UIROSが、1つ以上のホスト又はサーバ計算システム201上にあるサーバ側サポートと、1つ以上のクライアント装置220上にあるクライアント側サポートとを含む。
【0035】
一実施形態例では、サーバ側サポートが、UIリモーティング・サーバ204、映像符号器205、及びレンダリングサポート206を含む。一部の実施形態では、これらの構成要素がVMサポート203の一部として、例えばホスト/サーバ計算システム201によってホストされる仮想化ロジック202上で実行されるプロセス(例えばVMwareの仮想化環境内のVMXプロセス)の一部として実行される。例えば、これらの構成要素204〜206は、図1に関して説明したようにVMXプロセス151a〜151cの一部として実行されるMKS(マウス、キーボード、画面ハンドリング)スレッド152aの一部として実行され得る。他の実施形態では、各VMM(仮想マシンモニタ、例えばVMM142a〜142c)の一部としてや、仮想化ロジック202の他の部分として等、これらの構成要素が仮想化環境の他の部分内に実装され得る。レンダリングサポート206は、ゲスト210(ゲストオペレーティングシステム211を使用してデスクトップ212から実行されるゲストアプリケーション213)から仮想グラフィックスデバイスコマンドを受け取り、フレームバッファ104等、ホスト201に関連するグラフィックスハードウェアに対し、それらをグラフィックス・スタック(図1にグラフィックスAPI121及びグラフィックスドライバ122として示す)によって実行することを担う。映像符号器205は、本明細書で更に詳細に説明するように、ユーザインターフェイス・リモーティング(UIR)サーバ204によって呼び出されるとき、ユーザインターフェイスの更新を符号化することを担う。UIRサーバ204は、VMサポート203(仮想化ロジック202又はホスト201)内のTCP/IP接続207を介して、又は仮想化サポート201、202、若しくは203からではなくゲストOS211からUIリモーティングを受け取るように最適化され得る、幾つかのクライアント装置インターフェイスに対するゲストオペレーティングシステム(ゲストOS)211内のTCP/IP接続217を介して、ユーザインターフェイスの更新を被接続クライアント装置220に伝送することができる。
【0036】
クライアント装置220は、自らのTCP/IP接続227及びユーザインターフェイス・リモーティング(UIR)クライアント224を介し、UIディスプレイの更新を受け取る。UIディスプレイの更新は、TCP/IP接続によって接続されるウェブブラウザコードを介して最初に受け取られても良く、TCP/IP接続は、その情報をUIRクライアント224及び/又は映像復号器225に伝える(例えばその情報を宛先変更、転送、伝達、又は送信する)。例えば一部の実施形態では、映像復号器225に更新を送るために、UIディスプレイの更新が、例えばHTML5規格の下で入手可能なウェブブラウザコードの<video>タグ実装によって処理される。例えばUIRクライアント224等の媒介物を使用する他の実施形態では、ウェブブラウザコードが、映像ビットストリームをUIRクライアント224に伝えることができる。ブラウザコードが<video>タグについてサポートする何らかの実装を使用することとは対照的に、UIRクライアント224は、例えばVMへの接続時に(又は他の時点で)クライアント装置にダウンロードされるジャバ・スクリプトとして実装し、映像がどのように処理されるのかを測定することができる。次いで、ビットストリームを(例えば移動、スクロール、露出領域、又は同様の操作について前にキャッシュしたフレームから)再構築するために映像復号器225が(例えばウェブブラウザコード又はUIRクライアント224によって)呼び出され、ディスプレイ226上に描画されるデータストリームを送る(例えば転送、伝送、伝達等する)。
【0037】
実施形態例では、UIROSのサーバ側サポート及びクライアント側サポートの構成要素を、標準的なプログラミング技法を使用して実装する。概して、かかる実施形態例を実装するために、オブジェクト指向言語、関数型言語、スクリプト言語、及び宣言言語を使用することを含め、当技術分野で知られている一連のプログラミング言語を使用することができる。加えて、他の実施形態では、引き続きUIROSの機能を果たしながらも、様々な構成要素の機能をそれらの構成要素間で異なる方法で分散させ、又は他の方法で分散させることができる。
【0038】
先に述べたように、一部の実施形態では、UIRサーバ204、UIRクライアント224、映像符号器205、及び映像復号器225が、H.264規格で定められる映像ストリーミング及び圧縮技法を使用するが、他のストリーミング及び圧縮技法を代わりに使用しても良い。図3は、汎用映像ストリーミング・プロトコルの一例を使用する、映像ストリーミングの一例の全体像のブロック図である。この例では、現在のフレームを生成するために以前のデータが使用可能であると認識することに基づき更新を最小限にする技法を使用し、映像出力315を生成するために映像源300を符号化し、伝送する。具体的には、予測ロジック301(例えばコード、構成要素、ブロック、プログラム、タスク等)が、動き推定として知られるプロセスを使用して映像源300を検査し、描画される現在のブロックが他のどのデータに対応するのかを求める。一部の実施形態では、現在のブロック内のデータを予測するために、現在のフレーム内の他のデータを使用する(「フレーム内」予測)。他の実施形態では、現在のブロック内のデータを予測するために、前に伝送されたフレーム内のブロックのデータを使用する(「フレーム間」予測)。映像では、網羅的な検索を含む様々な動き推定アルゴリズムを使用することができる。H.264規格を使用する場合、16×16画素ブロックから4×4画素ブロックまでを含む、様々な大きさのブロックを使用することができる。予測ブロックを選択し、描画される現在の(所望の)ブロックをもたらすためにそのブロックをどのように再配置すべきかが決定されると、ストリーミング及び圧縮プロトコルの技法に従ってデータが変換構成要素302(例えばモジュール、ロジック、ブロック、コード、プログラム、タスク等)によって変換され、符号化構成要素303によってビットストリーム内に符号化される(及び典型的には圧縮される)。次いで、その符号化ビットストリームを、映像形式に基づき、ターゲット(例えばクライアント)装置に送るのに適切な構文で伝送し又は記憶する(310)。クライアント装置上で受信されると、符号化(及び典型的には圧縮された)ビットストリームが復号構成要素311によって復号され、変換構成要素312を使用してビットストリーム内の情報に対して逆変換が行われて、描画されるブロックを構築するための情報が復元される。変換データが、ビットストリームからの他のデータ(例えば予測ブロックに対するポインタ、参照等)と共に再構築構成要素313によって使用されて、描画用の映像出力315が生成される。
【0039】
H.264規格を使用する場合、UIROSは(「予測マクロブロック」と呼ばれる)予測ブロックを決定し、UIリモーティングにおいて対処される多くのユーザインターフェイス活動を効率的に表すために、そのブロックをどのように動かすべきかを符号化する動きベクトルを計算する。図4は、H.264映像ストリーミング・プロトコルに従って実行される映像符号化技法の一例の全体像を示す。図示の例では、符号化を行うために(前に符号化され、伝送されたフレームを用いる)フレーム間予測を活用する。つまり、符号化され、伝送される現在のフレームI+1 410内のマクロブロック412と同様のマクロブロック402を見つけるために、前のフレームI 401を使用する。前に伝送されたフレーム401内の予測マクロブロック402を、符号化されているマクロブロック412内で提示されるのと全く同じ画素データを含むものとして図示する。符号化されている現在のフレーム410内の動きベクトル413は、そのマクロブロックの前の位置(411)から目的の位置(412)までの動きを捕捉する。H.264規格によれば、予測マクロブロック402と符号化されているターゲットマクロブロック412との差を含む、残差マクロブロック414が計算される。UI符号化(ビットブリット操作)の性質により、情報は変更されておらず動かされただけなので、残差マクロブロック414は典型的にはヌル/空である。H.264規格は、動きベクトル413と共に予測マクロブロック402がどのように符号化されるのかを規定し、それにより、結果として生じるマクロブロック412を描画するために、復号器が既に受信済みのキャッシュされた画素データブロック(411)を再利用し、それを動きベクトル413によって指示される位置に移動し、残差マクロブロック414内に含まれる任意の情報を応用することができる。H.264規格は、コンパクト且つ効率的な圧縮ビットストリーム内にこの情報の全てをどのように符号化するのかを規定する。H.264規格に関する更なる情報は、参照によりその全体を本明細書に援用する、イアンリチャードソン(Iain Richardson)著、白書:H.264/AVCの技術概論(White Paper:A Technical Introduction to H.264/AVC)、VCcodex、2002年〜2011年、及びイアンリチャードソン(Iain Richardson)著、白書:H.264アドバンスド・ビデオコーディングの概要(White Paper:An overview of H.264 Advanced Video Coding)、Vcodex/OnceCodec、2007年〜2011年の中に記載されている。
【0040】
UIリモーティングで使用する場合、(符号化され、クライアント装置に伝送されるブロックごとに適切な予測マクロブロックを求めるために)動き推定を行うために、UIRサーバ(例えば図2のUIRサーバ204)がユーザインターフェイス活動の知識を組み込む。例えば、ユーザがデスクトップ上で文書をスクロールし、又は何か、例えばウィンドウを動かすとき、UIRサーバはどの画素が同じままであり、どの画素が、クライアント装置が描画する新たなコンテンツ(追加の画素)なのかを計算することができる。H.264(又は他の任意の同様の映像符号化)を使用し、UIRサーバは、引き続き描画すべきだが、別の位置に描画すべきユーザインターフェイスの部分に対応するように、予測マクロブロックの指示及びその動きベクトルをクライアント装置に送信することができる。その後、UIRサーバは、(クライアント装置によって描画される)表示画面上に今表示される画素を新規データとして符号化するだけで良い。
【0041】
図5は、ユーザインターフェイスの一操作例による画素移動の一例を示す。この場合、操作例はスクロール操作である。この例は、フレームI 501内の文書が仮想化サーバ上で操作されていることを示す。現在表示されている(ユーザインターフェイス操作前の)文書の内容をフレームI 501内に示す。これらは、クライアント装置に既にリモートされている画素である。まだ表示されていないが、表示されようとする文書内で入手可能なコンテンツをテキスト504として示す。利用者がスクロールダウン操作を行うと(テキストは上にスクロールされる)、フレームI 501内の点線の四角形503を伴うコンテンツは、既にクライアント装置上にキャッシュされており、従って、フレームI+1 510内の新たな位置の中のコンテンツ(点線の枠513内に示す)を反映する予測マクロブロック及び動きベクトル505として符号化され得る。四角形515内の画素は、このスクロール操作の描画を完了するために符号化され、クライアント装置に伝送されなければならない画素である。従って、UIRサーバがスクロール操作の結果を符号化するために映像符号化を使用する場合、UIRサーバは、フレームI 501からの予測マクロブロック及び動きベクトル505を使用して、クライアントと通信し、新たな位置に移動した点線の四角形513内に示す画素データを再利用して、新たな(符号化され伝送される)コンテンツ515を描画する。
【0042】
本明細書に記載の例は、ユーザインターフェイス・デスクトップのリモーティング、及びスクロール、移動、取込み、ピンチ操作、領域や画素を露出すること等の動作にしばしば言及するが、本明細書に記載の技法は如何なる種類のディスプレイ表示を描画するためにも使用することができる。加えて、記載した概念及び技法は、他の種類の映像符号化技術及びその技術をサポートするブラウザを含む、他の映像符号化技法にも適用することができる。更に、本明細書では特定の用語を主に使用するが、等価の実施形態及び例をもたらすために他の用語を区別なく使用することができる。加えて、用語には明示的に言及する場合もそうでない場合もある代わりの綴りがある場合があり、そのような用語の全ての異体が含まれることを意図する。
【0043】
本明細書に記載の実施形態例は、映像符号化技術を使用してUIをリモートするために使用される、ユーザインターフェイス・リモーティング及び最適化システムを実装するための、アプリケーション、ツール、データ構造、及び他のサポートを提供する。以下の説明では、記載する技法の完全な理解を与えるために、データ形式やコードロジックシーケンス等の数多くの具体的詳細を記載する。記載する実施形態は、本明細書に記載の具体的詳細の一部を欠いて、又はロジックの順序に関する変更、別のロジック等、他の具体的詳細と共に実施することもできる。従って、記載する技法及び機能のうちの少なくとも一方の範囲は、或る特定のルーチン、モジュール、構成要素等に関して記載する態様の、特定の順序、選択、又は分解によって限定されることはない。例えば、UIリモーティングに関与する動作の時間の重要度を所与として、図6図9に示す複数のシーケンスへの分解は実際の実装形態では反映される可能性が低いかもしれないが、説明しやすくするためにそのように図示している。
【0044】
図6は、一実施形態例による、向上したユーザインターフェイス・リモーティングのためのサーバロジックの一例の流れ図である。ロジック600は、例えば図1の仮想化ロジック120の、図2内のUIRサーバ204のMKSスレッド152a内で実行することができる。このロジックは、クライアント装置にUI(ユーザデスクトップ等)をリモートするための全体的な流れを示す。
【0045】
ブロック601で、このロジックは、ユーザインターフェイスの変化した部分内の再利用可能な画素情報を得るために、リモーティングの影響下にあるユーザインターフェイスを解析する。図7に関してこの解析を詳細に説明する。概要では、UIコマンドが、ことによると修正された位置に既に転送された画素データのビットブリット操作(画素データのブロック転送)をもたらすコマンドかどうかをUIRサーバが判定する。そうである場合、その操作は、記載した映像符号化技法を使用する、最適化されたPフレームによって表すことができるものである可能性が高い。そうでない場合、その操作は、新たな画素データを有する1つ以上のマクロブロックを送信することにより、変更領域を符号化することができる。UIの変化した部分(ディスプレイの「調子外れの(dirty)」領域又は変化した部分)に関して、図7に関して説明する再利用可能な画素の技法を実行する。UIの不変化部分は、前のフレームのマクロブロックを再利用することにより、又は一部の実施形態では映像ストリーム内の不変化領域を指示することにより(例えば、どのマクロブロックを飛ばすことができるのかを示す構成体を使用することにより)、映像符号化技法を使用して符号化することができる。
【0046】
ブロック602で、このロジックは、作成される映像ストリームの生成を較正する。UIRサーバは、クライアント装置に送信するフレームが時宜を得た方法でクライアント装置に達し、過負荷状態のネットワーク待ち行列の場合にパイプ内で「陳腐化」しないように、それらのフレームをちょうど正しい周波数及び時点において生成しようとする。そうするために、UIRサーバロジックは、映像ストリームがクライアント装置に送られている間に(その前に及びことによるとその間に)映像ストリームの生成を較正する。較正は、例えばネットワーク状態及びクライアントの負荷に関するクライアント装置からのフィードバック情報を(例えばバックチャネル上で)得る結果として行われ得る。フィードバックは、ネットワーク遅延時間及び帯域幅情報並びにクライアントの過負荷状態を含み得る。UIRサーバは、この情報を装置の種類、モデル等、クライアント装置に関する他の情報と共に使用し、映像ストリームの合成的且つ実時間の生成を較正することができる。ネットワークが過負荷状態にある(例えば伝送バッファが過負荷になっている)とUIRサーバが判定すると、UIRサーバは、より強く圧縮し(例えば符号化を更に圧縮し)又は映像フレームの生成を遅くすることができる。一部の実施形態では、符号化/復号にもよるが、帯域幅が限られている場合、UIRは残差フレームを利用して、クライアントが累積的に描画できるプログレッシブ・エンハンスメントを送ることができ、従って残差フレームの付加的な構成体を活用する。他方で(ネットワークではなく)クライアント装置が過負荷状態にあるとUIRサーバが判定する場合、UIRサーバはより少ないフレームを伝送することができる。同様に、クライアント装置にデータを送るのに十分な帯域幅があるとUIRサーバが判定する場合、UIRサーバはより弱く圧縮して、画素データの圧縮を行うのに必要なホストサーバ上のCPU処理を減らすことができる。他の較正も同様に取り入れることができる。ブロック601のロジックは、様々な時点で実行することができるが、典型的にはブロック609で映像符号化をクライアント装置に伝送する前に行われる。
【0047】
ブロック603で、前に転送されたデータのかかるビットブリット操作が(例えば移動、スクロール、露出、又は他のUI操作により)生じているという指示をブロック601の解析が返す場合、ロジックはブロック604に進み、さもなければロジックはブロック605に進む。
【0048】
ブロック604で、ロジックが映像符号化プロトコル、例えば上記のH.264に従って符号化を計算し、ブロック609に進む。映像符号化の計算の一例は、図8で更に説明し、再利用可能な画素情報並びに新たに送信しなければならないデータに対応する。
【0049】
ブロック605で、前に転送されたデータに関する操作が行われていないという指示をブロック601の解析が返す場合、ロジックは、映像を再生する操作が指示されているかどうかを判定する。指示されている場合、ロジックはブロック606に進み、さもなければブロック608に進む。
【0050】
ブロック606で、ロジックが、指示された映像再生をリモートするための符号化を計算し、その後ブロック609に進む。この操作は、例えば利用者がYouTube等のビデオオンデマンド・アプリケーションやSkype等のテレビ会議アプリケーションを使用する場合に生じ得る。この場合、ロジックは、リモートされた映像ストリームを構築する際にソース映像ストリームを活用しようと試みる。このような手法は、UIの一部として別の映像ストリーム上に再符号化するためだけに、映像ストリームを画素へと復号するよりもはるかにCPU効率が良い。何らかの理由でクライアント装置が元の映像ストリームを復号できない場合、又はクライアント装置が利用可能な帯域幅がソース映像ストリームを受信するのに不十分である場合(又は他の理由で)、ロジックは、ソースストリームをリモートするのに適した形式にトランスコードする。一部の実施形態では、元の映像符号化の少なくとも一部を活用できるように、元の映像ストリームからの動きベクトル情報及びマクロブロックを少なくとも部分的に再利用して、トランスコードプロセスを加速することができる。例えば、映像ストリームのために確保されるUI領域の座標系は、UIリモーティングに使用される座標系と全体として異なる可能性があるが、映像ストリームの動きベクトルの計算により、新たな動きベクトルの計算が依然として知らされ得る。
【0051】
リモーティングを必要とするが、動き推定アルゴリズムが使用されず又は効果的でない他の何らかのUI操作が生じたとロジックが判定した場合、ブロック608で、ロジックは引き続き標準的な手順を使用して、例えばデータが変化した場合は新たなデータを有するマクロブロックを使用して画素データを符号化し、前のフレームのマクロブロックを再利用し、又はデータが変化していない場合は必要に応じてマクロブロックを飛ばし、ブロック609に進む。
【0052】
ブロック609で、ロジックが、(使用される映像プロトコルによって決定づけられる符号化ビットストリーム内の)符号化データをUIリモーティング・コード(例えば図2のクライアント装置220内のUIRクライアント224)に伝送する。一部の実施形態では、これはクライアント装置上で実行されるウェブブラウザ(不図示)へのネットワーク接続(例えば仮想化ロジック又はホスト内のTCP/IP接続207)を使用して実現され、その接続は、サーバのTCP/IP接続との認証接続を前に確立している。ウェブブラウザは、薄いベニヤ(thin veneer)として機能することができ、映像ストリームを直接(多くの場合ハードウェアによって支援される)映像復号器、例えば映像復号器225に伝え、映像復号器はそのデータをクライアント装置のディスプレイ上に描画する。一部の実施形態では、映像ストリームの処理速度を制御するように、ブラウザによる<video>タグ処理への映像ストリームの供給を測定するためのコードが、例えばジャバ・スクリプトとしてクライアント装置にダウンロードされる。他の実施形態では、ゲストOS211内のTCP/IP接続217等、ウェブブラウザへのTCP/IP接続がゲストOSによって動作する。更に他の実施形態では、符号化データが、クライアント装置にとってネイティブな映像復号器用のドライバ(不図示)にTCP/IPによって直接送られる。他の実施形態では、TCP/IP以外の他のネットワーキング・プロトコルを使用しても良い。図2では、これらの異なる接続を「UIRプロトコル」として示す。
【0053】
図7は、再利用可能な画素データを求めるためにユーザインターフェイスを解析するためのロジックの一例の流れ図である。ロジック700は、例えば図1に示す仮想化ロジック120の、図2内のUIRサーバ204のMKSスレッド152内で実行することができる。ロジック700は、例えば図6のブロック601から呼び出され得る。このロジックは、例えば利用者が画面全体にわたるアプリケーションを開くとき、符号化しようとする次の変化領域を最適化して既存のマクロブロック情報を再利用し、UIフレームコヒーレンスを上手く利用できるのか、又はキーフレーム(新たなフレーム)として送信しなければならないのかを判定する。このロジックシーケンス内で使用される技法の1つ以上は、如何なる実施形態においても実装することができる。例えば、図示の実施形態では、再利用性を判定するために各技法を(連続して)検査する。他の技法では、1つ以上の技法を代替的に検査する。一実施形態例では、汎用映像符号器を修正し、これらの技法の1つ以上をそのロジックの動き推定部分内に実装する。
【0054】
ブロック702で、このロジックは、スクロール又は移動型の事象が生じたかどうかを検出し(スクロール又は移動の「フィンガープリント」を探し)、再利用可能な画素情報をそこから求めるためにフレームバッファを検査する。一部の実施形態では、この操作は、マウスの移動、矢印キー、スクロールダイヤル事象、及び前に目に見えた画素の「移動」を知らせる他のユーザ入力を受け付けるとき、フレームバッファのコンテンツをフレームバッファの前のコンテンツと比較することにより、ビットブリットを検出することによって行われる。ビットブリットが検出される場合、適切な予測マクロブロック及びそれらの対応する動きベクトルが生成される。ここでは、フレームバッファが、典型的には実行アプリケーションに対応するVMによって利用される仮想フレームバッファである。或る時間間隔中に変化し又は或る操作によって変化したフレームバッファ内の領域があるかどうかを判定するのを支援するために、仮想映像アダプタドライバによって実装されるもの等、「ブリットマップ」構成体(不図示)等の他の構成体を使用しても良い(ブリットマップ構造の作成及び(他の)使用についての説明が、2010年10月28日に刊行され、「リモートディスプレイに伝送するためにフレームバッファをコピーする方法及びシステム(Method and System for Copying a Framebuffer for Transmission to a Remote Display)」と題された、バイフォード(Byford)ら著、米国特許出願公開第2010/0271379号明細書の中で示されている)。更に、一部のシステムでは、再利用可能な画素情報を求める比較のために、フレームバッファの前の状態を(部分的に又は全体として)キャッシュすることができる。次いでこのロジックは、既に生成したものを追跡し、更なる可能な最適化を求めるためにブロック704に進む。
【0055】
ブロック704で、ロジックがゲストのグラフィックス・コマンド・ストリームを検査し、移動、スクロール、露出、又は他の種類の関連するUI事象を(例えば特定のコマンドに一致するパターンによって)検出する。そうである場合、例えば図2の映像符号器205によって保持される、例えば前に符号化されたフレームの情報を使用し、適切な予測マクロブロック及びそれらの対応する動きベクトルが生成される。次いで、このロジックは、既に生成したものを追跡し、更なる可能な最適化を求めるためにブロック706に進む。
【0056】
ブロック706で、ロジックが、画素情報を再利用する任意のUIセマンティックスの通知を(例えばAPIによって)受け取ったかどうかを判定する。一部の実施形態では、このロジックは、UIコヒーレンス情報及びそのUIが例えば仮想化環境内でリモートされ得るという知識をアプリケーションが活用できるようにするAPIをサポートする。UIリモーティングの認識を有するアプリケーションは、画素情報、例えばスクロール画素の次の新たなコンテンツブロックやスライドショーの次の写真を、表示画面上に描画する前に好都合にキャッシュすることができる。例えば、アプリケーション(又はUIリモーティングを支援する他の構成要素)は、画素情報を事前ロードして一種の「先読み」を行い、クライアント装置上のUIの待ち時間を減らすために、H.264復号器フレームキャッシングを活用することができる。
【0057】
ロジックがUIセマンティックスの通知を受け取ったと判定する場合、ロジックはブロック708に進み、さもなければブロック710に進む。ブロック708で、ロジックは、受け取った通知がこれらのコマンドの1つに関係するかどうかを判定し、関係する場合はブロック709に進み、さもなければブロック710に進む。ブロック709で、ロジックが、以下で説明する適切な再利用可能画素及び他の情報のうちの少なくとも一方を生成し、その後ブロック710に進む。
【0058】
ブロック710で、ロジックが、予測マクロブロック及びそれらの対応する動きベクトルを含む生成済みの画素情報を返す。最適化が可能でない場合、新たな画素情報(1つ以上のマクロブロック)が返される。
【0059】
図8は、一実施形態例による、映像ストリーミング・プロトコルを使用してユーザインターフェイスデータの符号化を求め、生成するためのロジックの一例の流れ図である。ロジック800は、例えば仮想化ロジック120の、図2内のUIRサーバ204のMKSスレッド152内で実行することができる。ロジック800は、少なくとも一部の画素の再利用性があり得る場合、例えば図6のブロック604から呼び出され得る。このロジックは、図3に関して説明したプロセスに従って符号化を求め、使用される映像符号化プロトコルに特有である。
【0060】
図7のロジックの解析によって示し、図4で説明したように、ブロック801で、このロジックは、前に伝送されたフレームから再利用することができる1つ以上の予測マクロブロックを求める。一部の例では表示画面全体がリモートされ又はリモートされない場合があるので、これはリモートされているディスプレイの何らかの部分に対して行われる。図7の動き推定の結果は、どの矩形が再利用可能なのかを示す。例えば文書をスクロールしている場合、再利用可能であると判定されるディスプレイの一部の変化領域(例えばマクロブロック)と、新たなデータとして送らなければならない変化領域の他の部分(例えば新たなマクロブロック)とがある。
【0061】
図7のロジックの解析によって示し、図4で説明したように、ブロック803で、このロジックは、予測マクロブロックに適用可能な1つ以上の対応する動きベクトルを求める。
【0062】
この画素情報について再利用性が明らかにされていないので、ブロック805で、このロジックは変化領域の残りの矩形を新たなマクロブロックとして符号化する。
ブロック806で、このロジックは、リモートされている表示部分の不変化領域を符号化する。上記のように、この符号化は、どのマクロブロックを「飛ばす」ことができるのかを示すことにより、又は他のメカニズムにより、前に伝送された既存のマクロブロックを参照することで行うことができる。
【0063】
ブロック807で、このロジックは、1つ以上の予測マクロブロック、それらの対応する動きベクトル、並びに残りのマクロブロック及び情報を圧縮して符号化し、その情報を映像符号化プロトコルの要件に応じたビットストリームへと変換して圧縮する。この符号化ビットストリームは、ブロック808で返される。
【0064】
図9は、一実施形態例による、受信映像ビットストリームを復号し、描画するためのクライアントロジックの一例の流れ図である。ロジック900は、例えばクライアント装置220内で実行されている図2の映像復号器225によって実行され得る。ロジック900は、図3に関して説明したプロセスに従い、図6及び図8の結果として生じる符号化ビットストリームを受け取って処理する。
【0065】
ブロック901で、ロジックが符号化ビットストリームを(例えばTCP/IP接続により、ウェブブラウザを介してUIRクライアント224から)受け取る。
ブロック903で、ロジックが、そのビットストリームを映像ストリーム・プロトコルに従って復元しおよび復号し、1つ以上の予測マクロブロック及びそれらの関連する動きベクトル並びに残差マクロブロックを求める。これは、残差マクロブロック情報を再現するために逆変換を行うことを含み得る。
【0066】
ブロック904で、このロジックは、指示された予測マクロブロックに基づいてキャッシュ済みの画素情報を検索することによって描画する画素を計算し、画素をそのそれぞれの動きベクトルに従って移動し、残差マクロブロック情報内に符号化される任意の差異情報を追加する。典型的な事例では、ビットブリットは情報の変化を引き起こさないので、残差マクロブロック情報は存在しない(即ちゼロである)ことに留意されたい。例えば帯域幅が不足している一部の実施形態では、残差マクロブロックがプログレッシブ・リファインメントに使用される。場合によっては、Iフレーム(キーフレーム)が符号化され、圧縮され、伝送され、それによりそのまま描画される。
【0067】
ブロック907で、計算された画素情報をクライアント装置に関連する表示装置上で描画する。
次いでロジックが終了する。
【0068】
本明細書で言及し且つ/又は出願データシートに列記した上記の米国特許、米国特許出願公開、米国特許出願、外国特許、外国特許出願、及び非特許文献の全ては、参照によりその全体を本明細書に援用する。
【0069】
上記の内容から、特定の実施形態を例示目的で本明細書に記載してきたが、本開示の趣旨及び範囲から逸脱することなく様々な修正を加えても良いことが理解される。例えば、本明細書で解説したUIリモーティングのための映像符号化を行うための方法、技法、及びシステムは、x86アーキテクチャ以外の他のアーキテクチャにも適用可能である。更に、本明細書で論じた方法及びシステムは、異なるプロトコル、通信媒体(光学、無線、ケーブル等)、及び装置(無線ハンドセット、電子手帳、携帯情報端末、携帯型電子メール機、タブレット、ノートブック、ゲーム機、ページャ、GPS受信機等のナビゲーション装置等)にも適用可能である。
図1
図2
図3
図4
図5
図6
図7
図8
図9