(57)【要約】  ４：４：４でデーターをエンコードまたはデコードするように構成されていないエンコーダー／デコーダーを用いて、データーを４：４：４サブサンプリング方式でエンコードおよびデコードするための方法を開示する。実施形態では、エンコーダーは入力フレームを４：０：０方式の３つの成分フレームに平面化する。次いで、このエンコーダーは各成分フレームを４：０：０方式でエンコードし、エンコードした成分フレームを集計してビット・ストリームを得る。デコーダーは、このようなビット・ストリームを受信し、４：４：４でデーターをデコードするように構成されていないコンポーネントによって、これをデコードする。このデコーダーは、ビット・ストリームをデコードして、４：０：０の３つの成分フレームの表現を生成し、次いで、これら３つの成分フレームを集計して、４：４：４の元のフレームの表現を得る。【選択図】図６
2014530563.tif 000002
【特許請求の範囲】
【請求項１】
第１サブサンプリング方式でリモート・プレゼンテーション・セッションをエンコードする方法であって、前記第１サブサンプリング方式でデーターをサンプリングする動作が、第２サブサンプリング方式でフレームをエンコードするように構成されるが、前記第１サンプリング方式でフレームをエンコードするように構成されていないエンコーダーによって、画像データーの各画素を個々にサンプリングする動作を含み、前記第２サブサンプリング方式でデーターをサンプリングする動作が、画像データーの画素の値をサブサンプリングする動作を含み、
ＲＧＢフォーマットのフレームを、Ｙ成分フレームと、Ｕ成分フレームと、Ｖ成分フレームとに変換するステップと、
前記Ｙ、Ｕ、およびＶ成分フレームの各々を、前記第２サブサンプリング方式で前記エンコーダーによってエンコードするステップと、
前記エンコードされたＹ、Ｕ、およびＶ成分フレームをリモート・プレゼンテーション・セッション・プロトコル・ビット・ストリームにエンコードするステップと、
前記ビット・ストリームをコンピューターに、リモート・プレゼンテーション・セッションを通じて送るステップであって、前記コンピューターが、前記ビット・ストリームをデコードして、前記第２サブサンプリング方式の前記Ｙ、Ｕ、およびＶ成分フレームの各々の表現を生成し、前記Ｙ、Ｕ、およびＶ成分フレームの各々の前記表現を組み合わせて、前記コンピューターがディスプレイ・デバイス上に表示する、前記第１サンプリング方式のＹＵＶフレームを得る、ステップと、
を含む、方法。
【請求項２】
請求項１記載の方法において、前記第２サブサンプリング方式の前記Ｙ、Ｕ、およびＶ成分フレームの各々を前記エンコーダーによってエンコードするステップが、
Ｈ．２６４イントラ・エンコーダーによって、４：０：０サブサンプリング方式で前記Ｙ、Ｕ、およびＶ成分フレームの各々をエンコードするステップを含む、方法。
【請求項３】
請求項１記載の方法において、前記第２サブサンプリング方式の前記Ｙ、Ｕ、およびＶ成分フレームの各々を前記エンコーダーによってエンコードするステップが、
前記Ｙ、Ｕ、およびＶ成分フレームの各々をエンコードするためのイントラ予測のレベルを決定するステップと、前記イントラ予測のレベルに基づいて、前記エンコーダーによって、前記Ｙ、Ｕ、およびＶ成分フレームの各々をイントラ予測エンコードするステップと、
を含む、方法。
【請求項４】
請求項３記載の方法において、前記イントラ予測のレベルを決定するステップが、
利用可能な計算リソースの量に基づいて、前記イントラ予測のレベルを決定するステップを含む、方法。
【請求項５】
請求項１記載の方法であって、更に、
前記エンコードされたＹ、Ｕ、およびＶ成分フレームを量子化するために、量子化量を決定するステップと、
前記エンコードされたＹ、Ｕ、およびＶ成分フレームを前記リモート・プレゼンテーション・セッション・プロトコル・ビット・ストリームにエンコードする前に、前記エンコードされたＹ、Ｕ、およびＶ成分フレームを量子化するステップと、
を含む、方法。
【請求項６】
請求項５記載の方法において、前記エンコードされたＹ、Ｕ、およびＶ成分フレームを量子化するために、量子化量を決定するステップが、
前記Ｙ成分フレームを量子化するための第１量子化量と、前記ＵおよびＶ成分フレームを量子化するための第２量子化量とを決定するステップを含み、前記第１量子化量が前記第２量子化量よりも少ない量子化である、方法。
【請求項７】
請求項５記載の方法において、前記エンコードされたＹ、Ｕ、およびＶ成分フレームを量子化するために、量子化量を決定するステップが、
前記ビット・ストリームの目標ビット・レートに基づいて、前記エンコードされたＹ、Ｕ、およびＶ成分フレームを量子化するための前記量子化量を決定するステップを含む、方法。
【請求項８】
請求項１記載の方法であって、更に、
前記フレームが画面データーであると判定したことに基づいて、前記フレームを前記Ｙ成分フレームと、前記Ｕ成分フレームと、前記Ｖ成分フレームとに変換するステップを含む、方法。
【請求項９】
請求項８記載の方法であって、更に、
ＲＧＢフォーマットの第２フレームを受信するステップと、
前記第２フレームがビデオ・データーであることに基づいて、前記フレームを第２Ｙ成分フレームと、第２Ｕ成分フレームと、第２Ｖ成分フレームとに変換しないと決定するステップと、
前記第２フレームをＹＵＶフォーマットに変換するステップと、
前記変換された第２フレームを、前記エンコーダーによってエンコードするステップと、
前記エンコードされた第２フレームを、前記リモート・プレゼンテーション・セッション・プロトコル・ビット・ストリームにエンコードするステップと、
前記ビット・ストリームを前記コンピューターに、前記リモート・プレゼンテーション・セッションを通じて送るステップであって、前記コンピューターが、前記ビット・ストリームに基づいて、前記第２フレームの表現を前記ディスプレイ・デバイス上に表示するステップと、
を含む、方法。
【請求項１０】
請求項１記載の方法において、前記第１サブサンプリング方式が４：４：４サブサンプリング方式を含み、前記第２サブサンプリング方式が４：２：２、４：２：０、または４：０：０サブサンプリング方式を含む、方法。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  リモート・プレゼンテーション・セッションでは、クライアント・コンピューターおよびサーバー・コンピューターが通信ネットワークを通じて通信する。クライアントは、マウス・カーソル移動やキーボード押下というような、局所的に受けた入力を送る。一方、サーバーはこの入力を受信し、ユーザー・セッションにおけるアプリケーションの実行というような、それに関連する処理を実行する。サーバーが処理を実行した結果、グラフィック出力または音響というような出力が得られたとき、サーバーはこの出力をプレゼンテーションのためにクライアントに送る。このように、アプリケーションは、クライアントのユーザーには、サーバー上で実際には実行するときでも、クライアント上で局所的に実行するように見える。
【０００２】
[0002]  サーバーが通例リモート・プレゼンテーション・セッションにおいて生成するグラフィクス・データーの量は、サーバーとクライアントとの間において利用可能な通信ネットワーク帯域幅の量を超過することもあり得る。この帯域幅制限を考慮して、サーバーは、通例、グラフィクス・データーをクライアントに送る前に、これを圧縮する。実施形態の中には、サーバーがグラフィクス・データーをクライアントに送る前に、これをビデオ・ストリームとしてエンコードする場合もある。リモート・プレゼンテーション・セッションにおいてグラフィクス・データーを圧縮しビデオ・ストリームとしてエンコードする既知の技法には多くの問題があり、その一部は周知である。
【発明の概要】
【０００３】
[0003]  リモート・プレゼンテーション・セッションにおいてグラフィクス・データーを圧縮しビデオ・ストリームとしてエンコードする既知の技法に伴う問題の１つは、これらの既知の技法を使用すると、画像の忠実度が劣化し、ユーザー体験に悪影響を及ぼすような事態になることである。例えば、あるエンコーダー（Ｈ．２６４エンコーダーのような）はグラフィクス・データーをサブサンプリング技法によってエンコードする。サブサンプリング技法は、各画素の各値をサンプリングするのではない（例えば、エンコーダーには、４：２：２方式、４：２：１方式、および４：２：０方式というような、１つのルミナンス値および２つのクロミナンス値として表される画素から、あらゆるクロミナンス値を個々にサンプリングするのではない方式で、サブサンプリングするものもある）。本明細書において用いる場合、４：２：０または他の４：４：４以外のサブサンプリング方式に言及するときは、通常、４：４：４以外のサブサンプリング方式にも該当することができる。これらのエンコーダーがこのようにデーターをサブサンプリングすると、データーの一部が失われ、画像の忠実度が低下する。
【０００４】
[0004]  この忠実度の低下は、明るい色の背景の上の濃い色の文字というような、画像の高コントラスト／高周波部分において起こる場合、一般に人によって知覚可能になる。この忠実度の低下は、一般に、このような画像において知覚可能になるのは、非常に色が異なる２つ以上の隣接する画素（例えば、白い背景の画素と黒いテキストの画素）の値が平均化されるか、またはそれ以外で互いに組み合わせられて、共有サブサンプル値(shared subsampled value)が生ずるからである。この値の平均化または組み合わせが、高コントラスト・エリア間の境界のメリハリ(crispness)を弱めるのである。
【０００５】
[0005]  ４：２：０サブサンプリングを実行するように構成されたエンコーダーを、４：４：４サブサンプリングも実行するように構成し直すことによって、４：２：０におけるこの忠実度低下に取り組むことは、好ましくないと考えられる。このようなエンコーダーをこのように構成し直すことが好ましくないと考えられるのは、そうすることによって、エンコーダーの複雑さが高くなって好ましくないからである。加えて、４：４：４方式でサブサンプリングされたフレームをデコードするように構成されていない多くのデコーダーが現在展開されており、４：４：４をサポートするようにエンコーダーを構成し直すには、対応するデコーダーを構成し直して多くのコンピューターに展開し直すことも必要となるであろう。エンコーダーを構成し直すことに伴うこの問題を考慮して、本発明の実施形態は、４：２：０方式（しかし、４：４：４方式ではない）でエンコードするように構成されたエンコーダーを用いて、４：４：４方式で画像をエンコードするために用いることができる。また、本発明の実施形態は、４：２：０方式（しかし、４：４：４方式ではない）でデコードするように構成されたデコーダーを、４：４：４方式で画像を生成するために、前述のエンコーダーでエンコードした画像をデコードするために用いることもできる。
【０００６】
[0006]  本発明の実施形態は、リモート・プレゼンテーション・サーバーにおいて実現される。実施形態では、サーバーはグラフィクス・データーのフレームをＲＧＢ色空間（画素は、赤、緑、青値のトリプレット(triplet)によって表される）において受信する。サーバーは、このフレームをＹＵＶ色空間（画素は、ルミナンス（Ｙ）および２つのクロミナンス値（ＵおよびＶ）のトリプレットによって表される）に変換し、ＹＵＶフレームから３つの成分フレーム、即ち、４：０：０サブサンプリング方式におけるフレームのＹ、Ｕ、およびＶ成分毎に１フレームずつ作成する。次いで、サーバーはこれらの成分フレームの各々をビデオとしてエンコーダーでエンコードする。このエンコーダーは、４：４：４サブサンプリング方式でフレームをエンコードするように構成されておらず、４：０：０サブサンプリング方式でフレームをエンコードするように構成される。次いで、サーバーは各成分フレームをビット・ストリームに集計し、このビット・ストリームをクライアントに、リモート・プレゼンテーション・セッション・プロトコルによって送る。
【０００７】
[0007]  また、本発明の実施形態は、リモート・プレゼンテーション・セッション・クライアントにおいても実現される。実施形態では、クライアントはＲＤＰビット・ストリーム・データーをサーバーから受信する（ここでは、データーは別個のＹ、Ｕ、およびＶ成分フレームを構成する）。クライアントは、このビット・ストリームをデコーダーでデコードする。このデコーダーは、４：０：０サブサンプリング方式でフレームをデコードするように構成されるが、４：４：４サブサンプリング方式ではデコードせず、４：０：０サブサンプリング方式で３つの成分フレーム、即ち、Ｙ、Ｕ、およびＶを生成する。次いで、クライアントはこれら３つの成分フレームを４：０：０サンプリング方式で集計して、４：４：４サブサンプリング方式のＹＵＶフレームを生成する。クライアントは、このＹＵＶフレームをＲＧＢ色空間に変換し、ＲＧＢフレームをディスプレイ・デバイス上に表示する。
【０００８】
[0008]  本発明の実施形態は、４：４：４サブサンプリング方式をサポートするように構成されていないエンコーダーおよびデコーダーを用いて、４：４：４サブサンプリング方式でデーターをエンコードして送ることを可能にする。フレームを成分フレームに分離することによって、フレームは、エンコーダーおよびデコーダーがサポートするように構成されたフォーマット、即ち、４：０：０の３つのフレームに分割される。フレームを成分フレームに分離することによって、エンコーダーやデコーダーを構成し直すことなく、データーを４：４：４サブサンプリング方式で送ることが可能になる。更に、サーバーが４：４：４フレームおよび４：２：０フレーム双方を表示のためにクライアントに送信するというシナリオもある。本発明は、４：４：４サブサンプリング方式もサポートするように付加的に構成されておらず複雑度が少ないエンコーダーを用いて、双方のフレームをエンコードおよびデコードすることを可能にする。
【図面の簡単な説明】
【０００９】
【図１】図１は、本発明の実施形態を実現することができる汎用計算環境の一例を示す。
【図２】図２は、本発明の実施形態を実現することができるリモート・プレゼンテーション・セッション・サーバーの一例を示す。
【図３】図３は、４：４：４フォーマットでサンプリングされた画像の一例を示す。
【図４】図４は、４：２：０フォーマットでサンプリングされた図３の画像の一例を示す。
【図５】図５は、４：０：０フォーマットでサンプリングされた図３の画像の一例を示す。
【図６】図６は、本発明の実施形態を実現するエンコーダーのアーキテクチャーの一例を示す。
【図７】図７は、本発明の実施形態を実現するデコーダーのアーキテクチャーの一例を示す。
【図８】図８は、本発明の実施形態を実現するエンコーダーの動作手順の一例を示す。
【図９】図９は、本発明の実施形態を実現するエンコーダーの動作手順の追加例を示す。
【図１０】図１０は、本発明の実施形態を実現するデコーダーの動作手順の一例を示す。
【図１１】図１１は、本発明の実施形態を実現するエンコーダーの動作手順の追加例を示す。
【発明を実施するための形態】
【００１０】
[0020]  本開示の種々の実施形態の完全な理解が得られるようにするために、以下の説明および図において、ある程度具体的な詳細を明記する。以下の開示では、本開示の種々の実施形態を不必要に曖昧にするのを避けるために、計算およびソフトウェア技術に付随することが多い一定の周知の詳細については、明記しない。更に、当業者は、以下に説明する詳細の内１つ以上がなくても、本開示の他の実施形態を実施できることは理解されよう。最後に、以下の開示ではステップおよびシーケンスを参照して種々の方法について説明するが、そのような説明は、本開示の実施形態の明確な実施態様を提示するために過ぎず、ステップおよびステップのシーケンスを、本開示を実施するために必須であると捉えてはならない。
【００１１】
[0021]  尚、本明細書において説明する種々の技法は、ハードウェアまたはソフトウェア、あるいはしかるべき場合には、双方の組み合わせに関して実現できることは言うまでもない。つまり、本開示の方法および装置、あるいはそのある種の態様または一部は、フロッピー（登録商標）・ディスケット、ＣＤ−ＲＯＭ、ハード・ドライブ、または他のあらゆる機械読み取り可能記憶媒体というような、有形媒体に具体化されるプログラム・コード（即ち、命令）の形態をなすことができる。プログラム・コードが、コンピューターのような、機械にロードされこの機械によって実行されると、この機械は本開示を実施する装置になる。プログラマブル・コンピューター上におけるプログラム・コードの実行の場合、計算デバイスは、一般に、プロセッサー、このプロセッサーによって読み取り可能な記憶媒体（揮発性および不揮発性メモリーおよび／または記憶エレメントを含む）、少なくとも１つの入力デバイス、および少なくとも１つの出力デバイスを含む。１つ以上のプログラムは、例えば、アプリケーション・プログラミング・インターフェース（ＡＰＩ）、再利用可能な制御手段等の使用を通じて、本開示に関して説明するプロセスを実装または利用することができる。このようなプログラムは、好ましくは、コンピューター・システムと通信するために、高級手続きプログラミング言語またはオブジェクト指向プログラミング言語で実現される。しかしながら、プログラム（１つまたは複数）は、望ましければ、アセンブリまたは機械語で実現することもできる。いずれの場合でも、言語は、コンパイル型言語またはインタプリター型言語でもよく、ハードウェアの実施態様と組み合わせることもできる。
【００１２】
[0022]  回路という用語は、本開示全体にわたって使用される場合、ハードウェア割り込みコントローラー、ハード・ドライブ、ネットワーク・アダプター、グラフィクス・プロセッサー、ハードウェア・ベース・ビデオ／オーディオ・コデックというようなハードウェア・コンポーネント、およびこのようなハードウェアを動作させるために用いられるファームウェア／ソフトウェアを含むことができる。また、回路という用語は、ファームウェアまたはある方法で設定されるスイッチによって機能（１つまたは複数）を実行するように構成されたマイクロプロセッサー、あるいは１つ以上の論理プロセッサー、例えば、マルチコア汎用処理ユニットの１つ以上のコアも含むことができる。この例における論理プロセッサー（１つまたは複数）は、機能（１つまたは複数）を実行するように動作可能なロジックを具体化するソフトウェア命令によって構成することができ、このソフトウェア命令はメモリー、例えば、ＲＡＭ、ＲＯＭ、ファームウェア、および／または仮想メモリーからロードされる。回路がハードウェアおよびソフトウェアの組み合わせを含む実施形態例では、実施者(implementer)が、ロジックを具体化するソース・コードを書くことができ、続いてこのソース・コードが、機械読み取り可能コードにコンパイルされ、この機械読み取り可能コードを論理プロセッサーによって実行することができる。技術的現状は、ハードウェア、ソフトウェア、またはハードウェア／ソフトウェアの組み合わせの間に殆ど差がないところまで発展しており、機能を実施するためにハードウェアまたはソフトウェアのどちらを選択するかは、単に設計上の選択に過ぎないことを、当業者であれば認めることができよう。つまり、ソフトウェア・プロセスを等価なハードウェア構造に変形することができ、ハードウェア構造自体を等価なソフトウェア・プロセスに変形することができることを当業者は認めることができるので、ハードウェアによる実現またはソフトウェアによる実現の選択は、実施者に委ねられる。
【００１３】
[0023]  本発明の実施形態は、１つ以上のコンピューター・システム上で実行することができる。図１および以下に続く論述は、本発明の実施形態を実現することができる、適した計算環境について端的で総合的な説明を行うことを意図している。
【００１４】
[0024]  図１は、計算システムの一例を示す。この計算システムは、処理ユニット２１を含む、コンピューター２０等を含む。処理ユニット２１は、１つ以上のプロセッサーを備えてもよく、その各々が１つ以上の処理コアを有することもできる。マルチコア・プロセッサーは、頻繁にコールされる１つよりも多い処理コアを有するプロセッサーのように、１つのチップ・パッケージ内に収容された多数のプロセッサーを備える。
【００１５】
[0025]  また、コンピューター２０はグラフィクス処理ユニット（ＧＰＵ）９０も備えることができる。ＧＰＵ９０は、コンピューター・グラフィクスを操作するように最適化されたマイクロプロセッサーである。処理ユニット２１は、作業をＧＰＵ９０に代行させる(offload)ことができる。ＧＰＵ９０は、それ自体のグラフィクス・メモリーを有することができ、および／またはシステム・メモリー２２の一部にアクセスできるのでもよい。処理ユニット２１と同様、ＧＰＵ９０は１つ以上の処理ユニットを備えることができ、各々が１つ以上のコアを有する。
【００１６】
[0026]  また、コンピューター２０はシステム・メモリー２２およびシステム・バス２３も備えることができる。システム・バス２３は、本システムが動作状態にあるとき、システム・メモリー２２から処理ユニット２１までを含む種々のシステム・コンポーネントを通信可能に結合する。システム・メモリー２２は、リード・オンリー・メモリー（ＲＯＭ）２４およびランダム・アクセス・メモリー（ＲＡＭ）２５を含むことができる。基本的入力／出力システム２６（ＢＩＯＳ）は、起動中というようなときに、コンピューター２０内部にあるエレメント間で情報を転送するのに役立つ基本的なルーチンを収容し、ＲＯＭ２４に格納される。システム・バス２３は、メモリー・バスまたはメモリー・コントローラー、周辺バス、または種々のバス・アーキテクチャーの内いずれかを実現するローカル・バスを含む、様々なタイプのバス構造の内いずれでもよい。処理ユニット２１とは独立してメモリーから読み取るおよび／またはメモリーに書き込むように構成された直接メモリー・アクセス（ＤＭＡ）コントローラー８０が、システム・バス２３に結合されるのでもよい。加えて、記憶ドライブＩ／Ｆ３２または磁気ディスク・ドライブＩ／Ｆ３３のような、システム・バス２３に接続されるデバイスが、ＤＭＡコントローラー８０を使用せずに、処理ユニット２１とは独立して、メモリーから読み取るおよび／またはメモリーに書き込むように構成されてもよい。
【００１７】
[0027]  更に、コンピューター２０は、ハード・ディスク（図示せず）またはソリッド・ステート・ディスク（ＳＳＤ）（図示せず）に対する読み取りおよび書き込みを行う記憶ドライブ２７、リムーバブル磁気ディスク２９に対する読み取りおよび書き込みを行う磁気ディスク・ドライブ２８、ならびにＣＤ  ＲＯＭまたは他の光媒体というようなリムーバブル光ディスク３１に対する読み取りおよび書き込みを行う光ディスク・ドライブ３０も含むことができる。ハード・ディスク・ドライブ２７、磁気ディスク・ドライブ２８、および光ディスク・ドライブ３０は、それぞれ、ハード・ディスク・ドライブ・インターフェース３２、磁気ディスク・ドライブ・インターフェース３３、および光ドライブ・インターフェース３４によって、システム・バス２３に接続されるように示されている。これらのドライブおよびそれらに付随するコンピューター読み取り可能記憶媒体は、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、およびコンピューター２０のためのその他のデーターの不揮発性格納のために設けられる。
【００１８】
[0028]  本明細書において説明する環境の一例は、ハード・ディスク、リムーバブル磁気ディスク２９、およびリムーバブル光ディスク３１を採用するが、他のタイプのコンピューター読み取り可能媒体であっても、フラッシュ・メモリー・カード、ディジタル・ビデオ・ディスク即ちディジタル・バーサタイル・ディスク（ＤＶＤ）、ランダム・アクセス・メモリー（ＲＡＭ）、リード・オンリー・メモリー（ＲＯＭ）のように、コンピューターによってアクセス可能なデーターを格納できるのであれば、この動作環境の一例において使用できることは当業者には認められてしかるべきである。一般に、このようなコンピューター読み取り可能記憶媒体は、実施形態では、本開示の態様を具体化するプロセッサー実行可能命令を格納するために用いることができる。また、コンピューター２０は、小型コンピューター・システム・インターフェース（ＳＣＳＩ）バス５６を通じて記憶デバイス６２に接続するホスト・アダプター５５も備えることができる。
【００１９】
[0029]  コンピューター読み取り可能命令を構成する多数のプログラム・モジュールは、ハード・ディスク、磁気ディスク２９、光ディスク３１、ＲＯＭ２４、またはＲＡＭ２５のようなコンピューター読み取り可能媒体上に格納することができ、プログラム・モジュールには、オペレーティング・システム３５、１つ以上のアプリケーション・プログラム３６、他のプログラム・モジュール３７、およびプログラム・データー３８が含まれる。処理ユニットによる実行時に、コンピューター読み取り可能命令は、以下で更に詳しく説明する動作(action)を実行させるか、または種々のプログラム・モジュールをインスタンス化させる。ユーザーは、キーボード４０およびポインティング・デバイス４２のような入力デバイスを通じて、コマンドおよび情報をコンピューター２０に入力することができる。他の入力デバイス（図示せず）には、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星ディスク、スキャナー等を含むことができる。これらおよびその他の入力デバイスは、多くの場合、シリアル・ポート・インターフェース４６を通じて処理ユニット２１に接続される。シリアル・ポート・インターフェース４６は、システム・バスに接続されるが、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス（ＵＳＢ）のような他のインターフェースによって接続されてもよい。ディスプレイ４７または他のタイプのディスプレイ・デバイスも、ビデオ・アダプター４８のようなインターフェースを通じて、システム・バス２３に接続することができる。ディスプレイ４７に加えて、コンピューターは、通例、スピーカーおよびプリンターのような、他の周辺出力デバイス（図示せず）を含む。
【００２０】
[0030]  コンピューター２０は、リモート・コンピューター４９のような、１つ以上のリモート・コンピューターへの論理接続を用いて、ネットワーク接続環境において動作することもできる。リモート・コンピューター４９は、他のコンピューター、サーバー、ルーター、ネットワークＰＣ、ピア・デバイス、または他の一般的なネットワーク・ノードであってもよく、通例、コンピューター２０に関して先に説明したエレメントの多くまたは全てを含むことができるが、図１にはメモリー記憶デバイス５０だけを示した。図１に示す論理接続は、ローカル・エリア・ネットワーク（ＬＡＮ）５１およびワイド・エリア・ネットワーク（ＷＡＮ）５２を含むことができる。このようなネットワーク接続環境は、事務所、企業規模のコンピューター・ネットワーク、イントラネット、およびインターネットでは極普通である。
【００２１】
[0031]  ＬＡＮネットワーク接続環境において使用される場合、コンピューター２０はネットワーク・インターフェースまたはアダプター５３を通じてＬＡＮ５１に接続することができる。ＷＡＮネットワーク接続環境において使用される場合、コンピューター２０は、通例、モデム５４、またはインターネットのような広域ネットワーク５２を通じて通信を確立する他の手段を含むことができる。モデム５４は、内蔵型でも外付け型でもよく、シリアル・ポート・インターフェース４６を通じてシステム・バス２３に接続することができる。ネットワーク接続環境では、コンピューター２０に関して図示したプログラム・モジュール、またはその一部は、離れたメモリー記憶デバイスに格納されてもよい。尚、図示したネットワーク環境は例示であり、コンピューター間に通信リンクを確立する他の手段を用いてもよい。
【００２２】
[0032]  コンピューター２０がネットワーク接続環境において動作するように構成される実施形態では、ＯＳ３５はネットワーク上に離れて格納され、コンピューター２０は、ローカルに格納されるＯＳからブートするのではなく、この離れて格納されたＯＳをネットブート(netboot)するのでもよい。一実施形態では、コンピューター２０は、シン・クライアント(thin client)を構成し、この場合、ＯＳ３５はＯＳ全体ではなく、モニター４７上におけるように、ネットワーク接続を扱い出力を表示するように構成されるカーネルとなる。
【００２３】
[0033]  図２は、本発明の態様を実現することができる環境の一例を全体的に示す。例えば、サーバー２０４は、図８および図９の動作手順を実現することができ、クライアント２０１は図１０および図１１の動作手順を実現することができる。当業者には、図２によって示されるエレメント例は、本発明を説明するための動作枠組みを規定するために示されることを認めることができよう。したがって、実施形態では、異なる実施方式に応じて、各環境の物理的レイアウトが異なることもあり得る。つまり、この動作枠組みの一例は、例示としてのみ扱うべきであり、請求項の範囲を限定するのでは決してない。
【００２４】
[0034]  図２には、サーバー２０４が示され、このサーバー２０４は、リモート・プレゼンテーション・セッション・サーバーを実施する(effectuate)ように構成された回路を含むことができ、また他の実施形態では、サーバー２０４は、リモート・デスクトップ接続をサポートするように構成された回路を含むことができる。図示する例では、サーバー２０４は、セッション１からＮまで（ここで、Ｎは２より大きい整数である）というような、クライアントを接続する１つ以上のセッションを生成するように構成することができる。端的に言うと、本発明の実施形態例におけるセッションは、一般に、複数のサブシステム、例えば、ソフトウェア・コードによって実施される動作環境を含むことができ、これらのサブシステムは、サーバー２０４のカーネルと相互作用するように構成される。例えば、セッションは、デスクトップ・ウィンドウのようなユーザー・インターフェースをインスタンス化するプロセス、このウィンドウ内におけるマウスの移動を追跡するサブシステム、アイコン上におけるマウスのクリックをプログラムのインスタンスを実施するコマンドに変換するサブシステム等を含むことができる。セッションは、ユーザー毎にサーバー２０４によって、例えば、サーバー２０４が接続要求をネットワーク接続を通じてクライアント２０１から受けたときに、サーバー２０４によって生成することができる。通常、接続要求は、最初にトランスポート・ロジック２１０によって扱われ、トランスポート・ロジック２１０は、例えば、サーバー２０４の回路によって実施することができる。実施形態によっては、トランスポート・ロジック２１０はネットワーク・アダプター、ファームウェア、およびソフトウェアを含むことができ、接続メッセージを受信してこれらをエンジン２１２に転送するように構成することができる。図２に示すように、トランスポート・ロジック２１０は、実施形態では、セッション毎にプロトコル・スタック・インスタンスを含むことができる。通常、各プロトコル・スタック・インスタンスは、ユーザー・インターフェース出力をクライアントに導き、クライアントから受信したユーザー入力を、そのセッションと関連するセッション・コア２４４に導くように構成することができる。
【００２５】
[0035]  図２の全体的な説明を続けると、本発明の実施形態例では、エンジン２１２は、セッション要求を処理し、セッション毎に機能を決定し、１組の物理リソースをそのセッションに割り当てることによってセッションを生成し、そのセッションに対してプロトコル・スタック・インスタンスをインスタンス化することができる。実施形態の中には、以上で述べた動作手順の一部を実現することができる特殊回路コンポーネントによって、エンジン２１２を実施できる場合もある。例えば、実施形態例における回路は、メモリーと、エンジン２１２を実施するコードを実行するように構成されるプロセッサーとを含むことができる。図２に示すように、例の中には、エンジン２１２が接続要求を受けて、例えば、ライセンスが入手可能でありその要求に対してセッションを生成できると判断することができる場合がある。サーバー２０４がリモート・デスクトップ能力を含むリモート・コンピューターである状況では、エンジン２１２は、ライセンスをチェックすることなく、接続要求に応答してセッションを生成するように構成することができる。図２に示すように、セッション・マネージャー２１６は、エンジン２１２からのメッセージを受けるように構成することができ、このメッセージに応答して、セッション・マネージャー２１６はセッション識別子を表に追加し、このセッション識別子にメモリーを割り当て、サブシステム・プロセスのシステム環境変数およびインスタンスを、セッション識別子に割り当てたメモリー内において生成することができる。
【００２６】
[0036]  図２に示すように、セッション・マネージャー２１６は、セッション・コア２４４のようなカーネル・モード部を含むことができるランタイム・サブシステム２４０のような環境サブシステムをインスタンス化することができる。例えば、一実施形態における環境サブシステムは、サービスのある部分集合をアプリケーション・プログラムに露出し、アクセス・ポイントをオペレーティング・システム２１４のカーネルに供給するように構成される。実施形態例では、ランタイム・サブシステム２４０がプロセスおよびスレッドの実行を制御することができ、セッション・コア２４４が、スレッドに対してメモリーを割り当てこれらを実行するための時間をスケジューリングするために、要求をカーネル２１４のエクゼクティブ(executive)に送ることができる。一実施形態では、セッション・コア２４４は、グラフィクス表示インターフェース２４６（ＧＤＩ）、セキュリティ・サブシステム２５０、および入力サブシステム２５２を含むことができる。入力サブシステム２５２は、これらの実施形態では、セッションに関連するプロトコル・スタック・インスタンスを通じてクライアント２０１からユーザー入力を受信し、該当するセッションのためにこの入力をセッション・コア２４４に送信することができる。ユーザー入力は、実施形態では、絶対的および／または相対的なマウスの移動命令を示す信号、マウスの座標、マウス・クリック、キーボード信号、ジョイスティック移動信号等を含むことができる。ユーザー入力、例えば、アイコン上におけるマウスのダブル・クリックは、セッション・コア２４４によって受け取ることができ、入力サブシステム２５２は、このダブル・クリックと関連付けられた座標にアイコンが位置すると判定するように構成することができる。次いで、入力サブシステム２５２は通知をランタイム・サブシステム２４０に送るように構成することができ、ランタイム・サブシステム２４０がこのアイコンに関連付けられたアプリケーションのプロセスを実行することができる。
【００２７】
[0037]  クライアント２０１から入力を受信することに加えて、アプリケーションおよび／またはデスクトップからドロー(draw)コマンドも受け取り、ＧＤＩ２４６によって処理することができる。一般に、ＧＤＩ２４６は、グラフィック・オブジェクト・ドロー・コマンドを生成することができるプロセスを含むことができる。この実施形態例におけるＧＤＩ２４６は、その出力をリモート・ディスプレイ・サブシステム２５４に渡すように構成することができ、リモート・ディスプレイ・サブシステム２５４において、コマンドは、セッションに添付されるディスプレイ・ドライバーに合わせてフォーマットされる。ある種の実施形態例では、１つ以上の物理ディスプレイをサーバー２０４に、例えば、リモート・デスクトップの状況において、接続する(attach)ことができる。これらの実施形態例では、リモート・ディスプレイ・サブシステム２５４は、リモート・コンピューター・システムのディスプレイ・ドライバー（１つまたは複数）によってレンダリングされるドロー・コマンドをミラーリングする(mirror)ように構成し、ミラーリングした情報をクライアント２０１に、セッションに関連するスタック・インスタンスを通じて送信するように構成することができる。他の実施形態例では、サーバー２０４がリモート・プレゼンテーション・セッション・サーバーである場合、リモート・ディスプレイ・サブシステム２５４は、仮想ディスプレイ・ドライバー（１つまたは複数）を含むように構成することができる。仮想ディスプレイ・ドライバーは、サーバー２０４に物理的に接続されたディスプレイと関連付けられなくてもよい。例えば、サーバー２０４はヘッドレス(headless)で実行することもできる。この実施形態におけるリモート・ディスプレイ・サブシステム２５４は、１つ以上の仮想ディスプレイのためにドロー・コマンドを受け取り、これらをクライアント２０１に、セッションと関連するスタック・インスタンスを通じて送信するように構成することができる。本発明の一実施形態では、リモート・ディスプレイ・サブシステム２５４は、ディスプレイ・ドライバー毎に表示解像度を決定することができ、例えば、仮想ディスプレイに関連する仮想ディスプレイ・ドライバー（１つまたは複数）の表示解像度または物理ディスプレイに関連するディスプレイ・ドライバーの表示解像度を決定し、関連するプロトコル・スタック・インスタンスを通じてパケットをクライアント２０１に導出するように構成することができる。
【００２８】
[0038]  実施形態例の中には、セッション・マネージャー２１６が、付加的に、セッションに対するログオンおよびログオフを扱うように構成することができるセッションのセッション識別子に関連するログオン・プロセスのインスタンスをインスタンス化することができる場合がある。これらの実施形態例では、ログオン・プロセスに関連するグラフィカル・ユーザー・インターフェースを示すドロー・コマンドをクライアント２０１に送信することができ、クライアント２０１のユーザーはアカウント識別子、例えば、ユーザー名／パスワードの組み合わせ、スマート・カード識別子、および／または生物計量情報をログオン画面に入力することができる。この情報は、サーバー２０４に送信され、エンジン２１２およびセッション・コア２４４のセキュリティ・サブシステム２５０に導くことができる。例えば、ある種の実施形態例では、エンジン２１２は、ユーザー・アカウントがライセンスと関連付けられるか否か判断するように構成することができ、セキュリティ・サブシステム２５０は、セッションに対してセキュリティ・トークンを生成するように構成することができる。
【００２９】
[0039]  図３は、４：４：４方式でサブサンプリングされた画像の一例を示す。４：４：４（および他のサブサンプリング方式）における数値の各々は、ソース画像上で行われたサブサンプリングの量を示す。サブサンプリングは、更に一般的には、Ｊ；ａ：ｂサブサンプリングとして表すこともでき、ここでＪはサンプリングされる領域の行における画素数、および取り込まれるルミナンス・サンプル（ＹＵＶ色空間におけるＹ）の数を示し、ａはＪ個の画素の最初の行において取り込まれるクロミナンス・サンプルの数（ＹＵＶ色空間におけるＵおよびＶ）を示し、ｂは、数値ａに加えて、Ｊ個の画素の第２行において取り込まれるクロミナンス・サンプルの数を示す（ｂ個のクロミナンス・サンプルも、ＹＵＶ色空間におけるＵおよびＶであってよい）。
【００３０】
[0040]  画像３００は、サブサンプル画像３０２が生成される元となる画像の一例である。画像３００は、幅／行が４画素、高さ／列が２画素である。画素数は、画像３００とサンプル画像３０２との間で同じままになっている。即ち、幅が４画素、高さが２画素である。画像３００の各画素は、画像３０２におけるルミナンスに対して別個にサンプリングされており、画素に「ｘ」の印を付けたのは、その画素がルミナンスに対してサンプリングされたことを意味する。加えて、画像３００の各画素は、画像３０２におけるクロミナンスに対しても別個にサンプリングされており、画素に「ｏ」の印を付けたのは、その画素がクロミナンスに対してサンプリングされたことを意味する。
【００３１】
[0041]  サンプル画像３０２は、画像３００の４：４：４サンプルを表す。何故ならＪ、ａ、およびｂは各々４に等しいからである。Ｊが４であるのは、問題のサンプリングされたエリアの幅が４画素であるからである。ａが４であるのは、最上位行がクロミナンスに対して４回別個に、即ち、画素毎に１回サンプリングされたからである。ｂも４であるのは、最下位行がクロミナンスに対して更に４回別個にサンプリングされたからである（最上位行から取り込まれた４つのクロミナンス・サンプルに関して別個に追加の４回）。
【００３２】
[0042]  図４は、４：２：０フォーマットでサンプリングされた図３の画像３００の一例を示す。４：２：０サブサンプリングは、図３００から取り込まれるクロミナンス・サンプルの方が少ないので、図３の画像３０２において示された４：４：４サブサンプリングとは異なる。ここでは、４：２：０サブサンプリング画像４０２において示すように、全部で８つの画素に対して２つのクロミナンス・サンプルだけが取り込まれる。４：２：０サブサンプリング方式では、ａは２であるので、最上位行から２つのクロミナンス・サンプルが取り込まれる。加えて、ｂは０であるので、最下位行から取り込まれる追加のクロミナンス・サンプルはない。即ち、左側の４つ一組の画素４０４に対して１つのクロミナンス・サンプルが取り込まれ、そして右側の４つ一組の画素４０６に対して１つのクロミナンス・サンプルが取り込まれる。４：４：４サブサンプル画像３０２と４：２：０サブサンプル画像４０２との間の比較から分かるように、４：２：０サブサンプリング方式は、一般に、データー量を少なくして画像を格納することができるが、付随してその分忠実性が失われる。４：４：４サブサンプル画像３０２は、１６個のサンプル、即ち、ルミナンスに８つ、クロミナンスに８つのサンプルを含む。４：２：０サブサンプル画像４０２は、１０個のサンプル、即ち、ルミナンスに８つ、クロミナンスに２つのサンプルを含む。
【００３３】
[0043]  図５は、４：０：０方式でサブサンプリングされた図３の画像３００の一例を示す。図示のように、４：０：０サンプル画像５０２における８つの画素の各々は、ルミナンスに対してサンプリングされるが、これらのサンプルはいずれもクロミナンスに対してはサンプリングされない。４：０：０は、通常、白黒であると考えてよい。何故なら、ルミナンスはサンプリングするが、クロミナンスをサンプリングしないからである。４：０：０は、通常、ルミナンス値のみをサブサンプリングするために通例使用されることからグレースケールであると考えてもよいが、本発明の実施形態では一部のクロミナンス値のみをサンプリングするために使用することもできる。即ち、添付図面に関して説明するが、クロミナンス・データー（即ち、Ｙの代わりにＵまたはＶ）は４：０：０方式でサンプリングすることができるので、そのクロミナンス・データーはサンプリングされるが、他方のクロミナンス・データー（即ち、ＵまたはＶの他方）もルミナンス・データーもサンプリングされない。
【００３４】
[0044]  図６は、本発明の実施形態を実現するエンコーダーのアーキテクチャーの一例を示す。図６のエンコーダー・アーキテクチャーは、例えば、図２のサーバー２０４において実現することができる。サーバー２０４は、図２のクライアント２０１とのリモート・プレゼンテーション・セッションを実行し、図７に示すデコーダーのアーキテクチャー例を実現することもできる。本発明の実施における種々の時点において、図６のアーキテクチャー例は、図３の画像３００のような画像を取り込み、この画像から図３の４；４：４サンプル画像３０２、図４の４：２：０サンプル画像４０２、および／または図５の４：０：０サンプル画像を生成することができる。
【００３５】
[0045]  最初に、データーのフレームがＲＧＢフォーマットで取り込まれ、エンコーダーに対する入力６００として用いられる。このデーターのフレームは、例えば、図２のＧＤＩ２４６がその出力を図２のリモート・ディスプレイ・サブシステム２５４に渡すに連れて取り込むことができ、この場合、図６のアーキテクチャーはリモート・ディスプレイ・サブシステム２５４において実現される。
【００３６】
[0046]  色変換コンポーネント６０２は、入力フレーム６００を取り込み、それをＲＧＢ色空間からＹＵＶ色空間（Ｙ’ＵＶ、ＹＣｂＣｒ、またはＹＰｂＰｒと呼ばれることもある）に変換し、これから３つの成分フレーム、即ち、Ｙ成分フレーム、Ｕ成分フレーム、およびＶ成分フレームを形成する。これら３つの成分フレームは、次に、１つまたは複数のエンコーダー・プロセスによって別個にエンコードされる。Ｙ、Ｕ、およびＶ値は、これらとＲＧＢ値との間にある以下の関係を用いて決定することができる。
【００３７】
Ｙ＝０．２９９×Ｒ＋０．１１４×Ｇ＋０．５８７×Ｂ
Ｕ＝０．４３６（Ｂ−Ｙ／０．８８６）
Ｖ＝０．６１５（Ｒ−Ｙ／０．７０１）
[0047]  実施形態では、色変換コンポーネント６０２は入力フレーム６００をＲＧＢ色空間からＹＵＶ色空間に変換する。次いで、色変換コンポーネント６０２は、ＹＵＶフレームを３つの別々の成分フレーム、即ち、Ｙ、Ｕ、およびＶ成分毎に１つずつのフレームに平面化する(planarize)。これは、ＹＵＶフレームをビット・マスクで処理することによってというようにして、行うことができる。例えば、ＹＵＶフレームの各々が２４ビット（Ｙ、Ｕ、およびＶ値毎に８ビットずつ）を用いて表現される場合、Ｙ成分フレームは、０ｘＦＦ００００のビット・マスクを用いて各画素の論理ＡＮＤを取ることによって決定することができる（そして、ＵおよびＶフレームは、それぞれ、０ｘ００ＦＦ００および０ｘ００００ＦＦのビット・マスクを用いて論理ＡＮＤを取る）。本発明の実施形態では、１つの画素は、３２ビットというような、２４とは異なるビット数で表現することもでき、この場合、アルファ値は８ビットを用いて表現される。
【００３８】
[0048]  実施形態では、ＵおよびＶ値がそれらそれぞれの成分フレーム内において格納されている位置を変更して、それらの値が各画素の値の先頭に格納されるようにすることができる。即ち、ＵおよびＶ成分フレームの各画素を、それぞれ、８ビットおよび１６ビットだけ論理的にビット単位で(bitwise)左にシフトすればよい（以上からの２４ビット値の例を用いる）。例えば、値０ｘＦＦ００００の画素を含むＵ成分フレームをビット単位で左に８ビット・シフトして、値０ｘＦＦ００００の画素を生成することができる。この値の内左側８ビットを破棄し、この値の内右側１６ビットを８ビットだけ左にシフトし、この値に８つのゼロを添付する。
【００３９】
[0049]  本発明の実施形態は、ＵおよびＶ成分フレームに対してビット単位のシフトを実行するとよい。何故なら、エンコーダー６０８および６１０は４：０：０サブサンプリングを実行するように構成されるからである。この場合、ルミナンス値が通常位置するビットだけがサブサンプリングされる。ＵおよびＶ値が各画素値の最も左側に格納されるようにＵおよびＶ成分フレームをビット単位でシフトすることにより、そして４：０：０サブサンプリングを実行するように構成されたエンコーダーを、これらのＵおよびＶ成分フレームをサブサンプリングするために使用することができ、ＵおよびＶ値は通例画素の値の最も左側のビットには格納されない。
【００４０】
[0050]  本発明の実施形態は、必ずしも入力フレーム６００をＲＧＢ色空間からＹＵＶ色空間に変換しなくてもよいが、更に一般的には、第１色空間から第２色空間に変換しなくてもよい。更に、本発明の実施形態では、フレームを第１色空間から第２色空間に全く変換しなくてもよい。入力フレームが同じ色空間において生成され、この同じ色空間においてフレーム・エンコーダー６０６〜６１０によってエンコードされる本発明の実施形態では、入力フレーム６００が第１色空間から第２色空間に変換されないということでもよい。
【００４１】
[0051]  色変換コンポーネント６０２によって生成されたY、Ｕ、およびＶ成分フレームは、それぞれ、フレーム・エンコーダー６０６〜６１０に送られる。このエンコーディング・コンポーネントを、本明細書では、Yフレーム・エンコーダー６０６、Ｕフレーム・エンコーダー６０８、およびＶフレーム・エンコーダー６１０と図示する。この図示は、論理的な図示であり、本発明の実施形態では、エンコーダー６０６、６０８、および６１０は、別個のエンコーダー・プロセスまたはコンポーネントであっても、またはなくてもよい。例えば、図６のエンコーダーがマルチプロセッサーまたはマルチコア・コンピューター・システム上のプロセスとして実現される場合、エンコーダー６０６、６０８、および６１０は別個のエンコーダー・プロセスであるとよい。図６のエンコーダーが単一プロセッサーまたは単一コア・コンピューター・システム上に実現される場合、あるいは１つのプロセッサーまたはコアだけにアクセスする場合、エンコーダー６０６、６０８、および６１０は、Y、Ｕ、およびＶフレームを直列に処理する１つのエンコーダー・プロセスであるとよい。
【００４２】
[0052]  色変換コンポーネント６０２からのＹ、Ｕ、およびＶ成分フレームに加えて、エンコーダー６０６、６０８、および６１０は入力６０４も入力として取り込むことができる。これは、イントラ予測エンコーディングおよび／または量子化のためのモードを意味する。入力６０４は、４×４画素ルミネセンス・ブロックのイントラ予測モード、または１６×１６画素ルミネッセンス・ブロックのイントラ予測モードを意味することができる。実施形態では、４×４画素ブロックに対する予測は、入力６０４によって、垂直、水平、左下への対角線、右下への対角線、垂直右、水平下、垂直左、水平上、またはＤＣとして示すことができる。実施形態では、１６×１６画素ブロックに対する予測は、入力６０４によって、垂直、水平、平面、またはＤＣとして示すことができる。
【００４３】
[0053]  量子化では、ある値の１つ以上の下位側ビットを破棄して、値を格納することができる空間の量を削減することができる。実施形態では、量子化は、指定されたビット数だけ値を論理的に右にシフトすることによって実現することができる。本発明の実施形態では、入力６０４は、実行する量子化の量を示すことができ、クライアントに送られるビット・ストリーム６１４の目標ビット・レートに基づくことができる。実施形態では、ＵおよびＶ値は、Ｙ値よりも多い量だけ量子化するとよい。これは、通常人間はルミナンス情報よりもクロミナンス情報の欠如を認知し難いので、クロミナンス・データーの方がルミナス・データーよりも容易に廃棄でき、画像に対する忠実度を知覚可能な程に失うことがないからである。
【００４４】
[0054]  Ｙフレーム・エンコーダー６０６は、Ｙ成分フレームをエンコードしたバージョンを４：０：０フォーマットで出力する。Ｙ成分フレームは、図３の画像３００を取り込み、これから図５のサブサンプリングされた４：０：０画像５０２を生成することができる。Ｙフレーム・エンコーダー６０６は、最初に、Ｙ成分フレームを４：０：０方式でサンプリングし、次いでＨ．２６４ビデオのＩ−フレームのように、それをエンコードすることができる。Ｉ−フレームとは、以前のフレームや以後のフレームからの情報を用いることなくビデオの１フレームを表すフレームのことである。対照的に、Ｐ−フレームは以前のフレームからのデーターを参照し、Ｂ−フレームは以前のフレームおよび／または以後のフレームからのデーターを参照する。
【００４５】
[0055]  Ｙフレーム・エンコーダー６０６によって実行される動作と同様、Ｕフレーム・エンコーダー６０８は、Ｕ成分フレームをエンコードしたバージョンを４：０：０フォーマットで出力し、Ｖフレーム・エンコーダー６１０は、Ｖ成分フレームをエンコードしたバージョンを４：０：０フォーマットで出力する。エンコーダー６０６、６０８、および６１０の各々は、それらのエンコードしたフレームをビット・ストリーム・アグリゲーター６１２に送る。
【００４６】
[0056]  ビット・ストリーム・アグリゲーター６１２は、エンコードされたフレームをビット・ストリームとしてエンコードする。Ｈ．２６４ビデオがクライアントにストリーミングされている場合、このビット・ストリームは、Ｈ．２６４ビデオのストリームを構成することができる。ビット・ストリーム・アグリゲーター６１２は、一般に、エンコードされたフレームを取り込み、これらをデーター・ストリームに組み立てることができる。データー・ストリームは、他のコンピューターにコンピューター・ネットワークを通じて、当該他のコンピューターによる表示のためにストリーミングされる。
【００４７】
[0057]  ビット・ストリーム・アグリゲーター６１２は、更に、ビット・ストリームをクライアントに送る前に、これをカプセル化することができる。図示のように、フレームは既にエンコーダー６０８〜６１０によって圧縮されている場合もあり、更にビット・ストリーム・アグリゲーター６１２によって圧縮されてもよい。これは、レンペル−ジブ(Lempel-Ziv)圧縮（例えば、ＬＺ７７圧縮）のような、バルク圧縮技法を含むことができる。エンコードされた成分フレームを集計した後、ビット・ストリーム・アグリゲーター６１２は、エンコードされたビット・ストリーム６１４をＲＤＰコンポーネント（図示せず）に送り、ＲＤＰコンポーネントは、次いで、このビット・ストリームをデコーディングおよび表示のためにクライアント（図２のクライアント２０１のような）に送信することができる。
【００４８】
[0058]  図７は、本発明の実施形態を実現するデコーダーのアーキテクチャーの一例を示す。図７のデコーダー・アーキテクチャーは、例えば、図２のクライアント２０１において実現することができる。クライアント２０１は、図２のサーバー２０４とのリモート・プレゼンテーション・セッションを行う。サーバー２０４は、図６に示したエンコーダーのアーキテクチャーの一例を実現する。ネットワーク・データー７００が、通信ネットワークを通じて受信される。実施形態では、ネットワーク・データーは、図６のエンコード・ビット・ストリーム６１４の表現となる。
【００４９】
[0059]  ネットワーク・データー７００は、デコーダー７０２によってデコードされ、フレーム毎に３つの成分フレーム、即ち、Ｙ成分フレーム、Ｕ成分フレーム、およびＶ成分フレームを生成する。ネットワーク・データー７００がＨ．２６４ビデオとしてエンコードされリモート・プレゼンテーション・プロトコルによってカプセル化された場合、デコーダー７０２はネットワーク・データー７００を分解し(un-encapsulate)デコードすることができる。デコーダー７００は、ネットワーク・データー７００をデコードして、１つのフレームのＹ、Ｕ、およびＶ成分フレームにすることができ、Ｙ、Ｕ、およびＶ成分は４：０：０サブサンプリング方式になる。ネットワーク・データー７０２は、成分フレームのコピーではなく、成分フレームの表現にデコードしてもよく、この場合、ネットワーク・データーとして送られる前に、ある種の損失があるエンコーディングが成分フレームに対して実行される。例えば、成分フレームは、ネットワーク・データー７００として送られる前に、量子化されてもよい。このように成分フレームが量子化されている場合、デコーダー７０２は成分フレームの複製ではなく、量子化された成分フレームの複製しか再生(recreate)することができなくてもよい。
【００５０】
[0060]  次に、デコーダー７０２によって生成された３つの成分フレームは、フレーム・アグリゲーター７０４に送られ、フレーム・アグリゲーター７０４はこれらの成分フレームを集計して、成分値の各々を含む１つのフレームにする。実施形態では、フレーム・アグリゲーター７０４は、最初にＵおよびＶ成分フレームをそれぞれ８ビットおよび１６ビット右にビット・シフトし、３つの成分フレームの論理ＯＲを取ることによって、これらの成分フレームを組み合わせて１つのフレームにすることができる。
【００５１】
[0061]  成分フレームにフレーム番号の指示が印される実施形態では（例えば、１つのフレームが３つの成分フレームに分割され、これらのフレームの各々に同じフレームの指示が印されるのでもよい）、フレーム・アグリゲーター７０４は、各成文フレームのフレーム番号の指示を判定し、同じ指示を共有する成分フレームを集計する。
【００５２】
[0062]  次いで、フレーム・アグリゲーター７０４は集計したフレームを色変換コンポーネント７０６に送る。色変換コンポーネントは、フレームを第１色空間から第２色空間に変換するように構成される。ここで、フレームがフレーム・アグリゲーター７０４からＹＵＶ色空間で受け取られ、ＲＧＢ色空間でディスプレイ・デバイス上に表示される場合、色変換コンポーネント７０６はフレームをＹＵＶ色空間からＲＧＢ色空間に変換することができる。次いで、色変換コンポーネント７０６はＲＧＢ色空間のフレーム７０８をこのようなディスプレイ・デバイスに表示のために出力することができる。
【００５３】
[0063]  図８は、本発明の実施形態を実現するエンコーダーの動作手順の一例を示す。実施形態では、図８の動作手順は、図２のリモート・プレゼンテーション・サーバー２０４において実現することができる。本発明の実施形態では、図８の動作手順全てが実施されるのではない場合もあり、および／または図８の動作手順は、図示したのとは異なる順序で実施される場合もある。これは、以下の図９〜図１１の動作手順にも該当する。
【００５４】
[0064]  動作８０２は、ＲＧＢフォーマットのフレームを受信することを示す。ＲＧＢフォーマットのフレームは、図６のＲＤＰ入力６００が図６の色変換コンポーネント６０２によって受信されるのと同様に受信されればよい。
【００５５】
[0065]  動作８０４は、フレームをＹ成分フレーム、Ｕ成分フレーム、およびＶ成分フレームに変換することによってというようにして、フレームをＹＵＶに変換し、このフレームを平面化する(planarize)ことを示す。動作８０４は、図６の色変換コンポーネント６０２を実現するのと同様の方法で実現すればよい。実施形態では、動作８０４は、フレームが画面データーであると判断したことに応答して実行することができる。実施形態では、動作８０４は、このフレームの各成分フレームに共通指示(shared indication)を印して、これら３つの成分フレームが同じフレームに属するまたは同じフレームから生じたことが識別できるようにする。このような実施形態では、動作８０４は、エンコードされたＹ、Ｕ、およびＹ成分フレームの各々に、フレームに対する参照を印してもよい。
【００５６】
[0066]  動作８０６は、Ｙ、Ｕ、およびＶ成分フレームの各々を４：０：０サブサンプリング・フォーマットでエンコードすることを示す。４：０：０サブサンプリング・フォーマットは、通常では、画像データーの画素の値をサブサンプリングすることを含むのでよい。動作８０６は、４：４：４サブサンプリング方式でフレームをエンコードするように構成されていない（各画素の各値が個々にサンプリングされる。例えば、各画素の各Ｙ、Ｕ、およびＶ値が個々にサンプリングされる）が、４：２：０のように、各クロミナンス値を別個にサンプリングしないサブサンプリング方式でフレームをエンコードするように構成されたエンコーダーを用いて実行することができる。動作８０６は、図６のＹフレーム・エンコーダー６０６、Ｕフレーム・エンコーダー６０８、およびＶフレーム・エンコーダー６１０において実現することができる。実施形態では、動作８０６は、Ｈ．２６４イントラ・エンコーダーを用いて、４：０：０サブサンプリング方式でＹ、Ｕ、およびＶ成分フレームの各々のエンコードすることを含む。
【００５７】
[0067]  実施形態では、動作８０６のエンコーディングは、一種のインフラ予測(infra prediction)に基づいて実行される。このような実施形態では、動作８０６は、Ｙ、Ｕ、およびＶ成分フレームの各々をエンコードするために用いられるイントラ予測のレベルを決定することを含むとよく、このイントラ予測のレベルに基づいて、Ｙ、Ｕ、およびＶ成分フレームの各々をエンコーダーによってイントラ予測エンコーディングすることを含む。このようなイントラ予測エンコーディングは、図８の動作手順を実現するコンピューターに利用可能な利用可能計算リソースの量を判定することに基づいて実行されるとよい。
【００５８】
[0068]  実施形態では、動作８０６のエンコーディングは、量子化を実行することを含む。このような実施形態では、動作８０６は、エンコードされたＹ、Ｕ、およびＶ成分フレームをリモート・プレゼンテーション・セッション・プロトコル・ビット・ストリームにエンコードする前に、エンコードされたＹ、Ｕ、およびＶ成分フレームを量子化する量子化量を決定し、エンコードされたＹ、Ｕ、およびＶ成分を量子化することを含むとよい。実施形態では、エンコードされたＹ、Ｕ、およびＶ成分フレームを量子化する量子化量を決定する動作は、Ｙ成分フレームを量子化する第１量子化量と、ＵおよびＶ成分フレームを量子化する第２量子化量とを決定する動作を含み、第１量子化量は第２量子化量よりも少ない量子化となる。実施形態では、エンコードされたＹ、Ｕ、およびＶ成分フレームを量子化する量子化量を決定するには、ビット・ストリームの目標ビット・レートに基づく。
【００５９】
[0069]  動作８０８は、エンコードされたＹ、Ｕ、およびＶ成分フレームを、リモート・プレゼンテーション・セッション・プロトコル・ビット・ストリームにエンコードすることを示す。動作８０８は、図６のビット・ストリーム・アグリゲーター６１２において実現することができる。
【００６０】
[0070]  動作８１０は、ビット・ストリームをコンピューターにリモート・プレゼンテーション・セッションを通じて送ることを示し、このコンピューターはビット・ストリームをデコードして、Ｙ、Ｕ、およびＶ成分フレームの各々の４：０：０フォーマットとした表現を生成し、Ｙ、Ｕ、およびＶ成分フレームの各々の表現を組み合わせて、４：４：４フォーマットのＹＵＶフレームとし、このＹＵＶフレームをコンピューターがディスプレイ・デバイス上に表示する。ビット・ストリームが送られる先のコンピューターは、図２のクライアント２０１とすることができる。
【００６１】
[0071]  図９は、本発明の実施形態を実現するエンコーダーの動作手順の追加例を示す。図９の動作手順は、図２のサーバー２０４のような、図８の動作手順を実現する同じコンピューター上に実現することができる。図８は、グラフィック・データーをエンコードしてクライアント・コンピューターにビデオとして送り、クライアントが受信したビデオのフレームを４：４：４方式で再生することができる動作手順を示し、図９は、４：２：０方式のビデオのように、必要なサブサンプリングが少なくて済む方式で、グラフィック・データーをエンコードしてクライアント・コンピューターにビデオとして送るときの動作手順を示す。図８および図９の動作手順は双方共、同じコンピューター上において実現することができ、１つのリモート・プレゼンテーション・セッションにおいて、生成される異なるタイプのグラフィック・データーをエンコードするために用いることができる。即ち、コンピューターがあるタイプのデーター（画面データー、即ち、コンピューター・デスクトップのグラフィック出力のようなデーターであり、テキストが存在する場合もある）をエンコードしている場合、コンピューターは図８の動作手順を用いればよく、コンピューターが他のタイプのデーター（ビデオのようなデーター）をエンコードしているとき、コンピューターは図９の動作手順を用いればよい。
【００６２】
[0072]  動作９０２は、ＲＧＢフォーマットの第２フレームを受信することを示す。実施形態では、動作９０２は、図６の色変換コンポーネント６０２がＲＧＢ入力６００を受信するのと同様に実行する(effectuate)ことができる。
【００６３】
[0073]  動作９０４は、第２フレームがビデオ・データーであることに基づいて、第２フレームを平面化しないと決定することを示す。実施形態では、動作９０４は、第２フレームがビデオ・データーであることに基づいて、このフレームを第２Ｙ成分フレーム、第２Ｕ成分フレーム、および第２Ｖ成分フレームに変換しないと決定することを含むのでよい。尚、フレームが成分フレームに平面化され次いでエンコードされる場合（４：４：４サブサンプリング方式のフレームをクライアントによって受信できるように）、このフレームはテキストを含む可能性が高い画面データーであるので、他のタイプのデーターよりも、それと共に伝えられる忠実度は一層重要になると言える。ここでは、第２フレームはビデオ・データーであると判定され、したがって、その結果、このフレームはその成分フレームに変換されなくてもよい。
【００６４】
[0074]  動作９０６は、第２フレームをＹＵＶフォーマットに変換することを示す。実施形態では、動作９０６は図６の色変換コンポーネント６０２において実現することができるが、このような場合、色変換コンポーネント６０２は第２フレームを成分フレームに平面化しないでよい。
【００６５】
[0075]  動作９０８は、変換された第２フレームをエンコーダーによってエンコードすることを示す。実施形態では、第２フレームは、４：２：２または４：２：０サブサンプリング方式のような、４：４：４サブサンプリング方式未満のいずれかで、エンコーダーによってエンコードされればよい。しかしながら、４：０：０サブサンプリング方式で成分フレームをエンコードするために図８において使用した同じエンコーダー（そして、これらの成分フレームを後に４：４：４サブサンプリング方式のフレームの表現として組み立て直すこともできる）を、動作９０８においても使用して、第２フレームを４：２：０サブサンプリング方式でエンコードすることもできる。本発明の実施形態では、第２フレームをエンコードする動作は、第２フレームをＨ．２６４ビデオのフレームにエンコードする動作を含むとよい。
【００６６】
[0076]  動作９１０は、エンコードされた第２フレームをリモート・プレゼンテーション・セッション・プロトコル・ビット・ストリームにエンコードすることを示す。動作９１０は、図８の動作８０８が実現されたのと同じように実行することができる。
【００６７】
[0077]  動作９１２は、ビット・ストリームをコンピューターに、リモート・プレゼンテーション・セッションを通じて送ることを示す。次いで、コンピューターは、ビット・ストリームに基づいて、第２フレームの表現をディスプレイ・デバイス上に表示することができる。動作９１２は、図８の動作８１０が実現されたのと同じように実行することができる。
【００６８】
[0078]  図１０は、本発明の実施形態を実現するデコーダーの動作手順の一例を示す。実施形態では、図１０の動作手順は、図７のデコーダーを実現するために用いることができ、更に図６のエンコーダーによって生成されたビット・ストリームをデコードするために用いることもできる。
【００６９】
[0079]  動作１００２は、ビット・ストリームをリモート・プレゼンテーション・セッションを通じて受信することを示し、このビット・ストリームは、当該フレームの第１、第２、および第３成分フレームを含み、第１、第２、および第３成分フレームの各々は、４：０：０サブサンプリング・フォーマットになっている。これは、図８の動作８１０において生成されたビット・ストリームであってもよい。第１、第２、および第３成分フレームは、それぞれ、ＹＵＶフレームのＹ、Ｕ、およびＶ成分フレームであってもよい。リモート・プレゼンテーション・セッションを通じて受信されたビット・ストリームがリモート・プレゼンテーション・プロトコルによってカプセル化された実施形態では、動作１００２はビット・ストリームを分解する(un-encapsulate)ことを含むとよい。
【００７０】
[0080]  動作１００４は、デコーダーによってというように、第１、第２、および第３成分フレームの各々をデコードすることを示す。実施形態では、動作１００２は図７のデコーダー７０２において実現することができる。実施形態では、デコーダーは、４：４：４サブサンプリング方式でフレームをデコードするように構成されるのではなく、デコーダーは４：２：０サブサンプリング方式でエンコードするように構成される。
【００７１】
[0081]  動作１００６は、第１、第２、および第３成分フレームを組み合わせて４：４：４フォーマットのフレームを生成することを示す。実施形態では、動作１００６は図７のフレーム・アグリゲーター７０４において実現することができる。実施形態では、動作１００６は、論理ＯＲ演算によって、第１、第２、および第３成分フレームを組み合わせることを含むとよい。実施形態では、動作１００６は、各々第２フレームの識別子を有する、第１、第２、および第３成分フレームに基づいて、第１、第２、および第３成分フレームを組み合わせることを決定することを含む。
【００７２】
[0082]  動作１００８は、フレームを第１色空間から第２色空間に変換することを示す。実施形態では、動作１００８は図７の色変換コンポーネント７０６において実現することができる。実施形態では、動作１００８は、フレームをディスプレイ・デバイス上に表示する前に、フレームをＹＵＶ色空間からＲＧＢ色空間に変換することを含むのでもよい。
【００７３】
[0083]  動作１０１０は、フレームをディスプレイ・デバイス上に表示することを示す。図１０の動作図が図１のコンピューター２０において実現される場合、ディスプレイ・デバイス上にフレームを表示する動作は、図１のディスプレイ４７上にフレームを表示することを含むとよい。
【００７４】
[0084]  図１１は、本発明の実施形態を実現するエンコーダーの動作手順の追加例を示す。図１１の動作手順は、図２のクライアント２０１のような、図１０の動作手順を実現する同じコンピューター上に実現することができる。図１０は、図８の動作手順を実現することによって生成される成分フレームのような、成分フレームをデコードし集計するために用いることができる動作手順を示す。対照的に、図１１は、図９の動作手順を実現することによって生成される成分フレームのように、成分フレームとしてエンコードも送信もされなかったフレームをデコードするために用いることができる。
【００７５】
[0085]  動作１１０２は、ビット・ストリームにおいて第２フレームを受信することを示す。実施形態では、第２フレームは４：０：０サブサンプリング方式ではなく、４：２：０サブサンプリング方式になっている。動作１１０２は、図１０の動作１００２が実現されるのと同じように実現することができる。
【００７６】
[0086]  動作１００４は、デコーダーによって第２フレームをデコードすることを示す。図８では、デコーダーは、４：０：０サブサンプリング方式で３つの成分フレームをデコードするために用いられた。ここでも、第２フレームはこのデコーダーによってデコードするのでよいが、第２フレームは成分フレームとは異なるサブサンプリング方式、例えば、４：２：０サブサンプリング方式または４：２：２サブサンプリング方式となる。
【００７７】
[0087]  動作１１０６は、第２フレームが成分フレームでないことに基づいて、第２フレームを他のフレームと組み合わせないと決定することを示す。図１０におけるように、成分フレームが受信された場合、これらを集計してその元のフレームの表現を生成することができる。第２フレームは成分フレームではない。これは、１つのフレーム内にその成分の全てを含む。第２フレームは成分フレームではないので、本発明の実施形態では、これは他のいずれのフレームとも集計されない。第２フレームが成分フレームではないと判定する動作は、例えば、第２フレームが４：０：０サブサンプリング方式ではないと判定することによって実行するとよい。フレームにフレーム指示または参照が付帯されるまたは印される実施形態では、第２フレームが成分フレームでないと判定する動作は、第２フレームには、それが成分フレームでないことを示す参照が付帯されているまたは印されていることを判定することによって実行するのでもよい。
【００７８】
[0088]  動作１１０８は、デコードされた第２フレームをディスプレイ・デバイス上に表示することを示す。動作１１０８は、図１０の動作１０１０が実現されるのと同様に実現することができる。
【００７９】
[0089]  以上、種々の図に示される好ましい態様と関連付けて本発明について説明したが、他の同様の態様を使用してもよく、本開示から逸脱することなく、本開示の同じ機能を実行するために、説明した態様に対して変更や追加が行われてもよいことは言うまでもない。したがって、本開示は、いずれの１つの態様にも限定されず、逆に、添付する特許請求の範囲にしたがってその広さおよび範囲が解釈されてしかるべきである。例えば、本明細書において説明した種々の手順は、ハードウェアまたはソフトウェア、あるいは双方の組み合わせで実現することができる。本発明は、コンピューター読み取り可能記憶媒体および／またはコンピューター読み取り可能通信媒体で実現することもできる。つまり、本発明、あるいはそのある種の態様または部分は、フロッピー・ディスケット、ＣＤ−ＲＯＭ、ハード・ドライブ、または他のあらゆる機械読み取り可能記憶媒体のような、有形媒体に具体化されたプログラム・コード（即ち、命令）の形態をなすことができる。同様に、本発明、あるいはそのある種の態様または部分は、伝搬信号、または他のあらゆる機械読み取り可能通信媒体において実現することもできる。プログラム・コードが、コンピューターのような機械にロードされこの機械によって実行されると、この機械が、開示した実施形態を実施するように構成された装置となる。本明細書において明示的に明記した具体的な実施態様に加えて、他の態様および実施態様も、ここに開示した明細書を検討することによって、当業者には明白であろう。尚、本明細書および図示した実施態様は、例示としてのみ考慮されることを意図している。
【図１】
2014530563.tif 000003
【図２】
2014530563.tif 000004
【図３】
2014530563.tif 000005
【図４】
2014530563.tif 000006
【図５】
2014530563.tif 000007
【図６】
2014530563.tif 000008
【図７】
2014530563.tif 000009
【図８】
2014530563.tif 000010
【図９】
2014530563.tif 000011
【図１０】
2014530563.tif 000012
【図１１】
2014530563.tif 000013
【国際調査報告】
2014530563.tif 000014
2014530563.tif 000015