(57)【要約】【課題】デジタル映像データストリームを圧縮するための映像圧縮システムを提供する【解決手段】デジタル映像データストリームを圧縮するための映像圧縮システムを開示する。デジタル映像データストリームに適用可能なときは常に公知のランレングス符号化を適用する（６２）。ランが識別されないときは、エンコーダは異なる２色だけで一連の連続画素が識別可能かどうかを判定し、そうである場合はメイクシリーズ・コマンドを生成して、ビットが連続する場合には２画素色に対応する２進数値ストリームとして符号化されたビットを備えるバイトを生成する（６４）。メイクシリーズ・コマンドをメイクシリーズ・ビットのバイトに再び適用するときに、適用可能なランレングス符号化によってメイクシリーズ・コマンドが先取りされること以外は、連続するビットで満たされる分だけのバイトに対して、メイクシリーズ・コマンドが継続する（６５）。【選択図】図６
2008504734.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも第１、第２、及び第３の符号技術の階層構造を構築するステップと、ここで、前記符号技術のうちの１つはランレングス符号化の形態であり、前記符号技術のうちの他の１つは、ちょうど２色の状態の、対応するビットに基づく符号化であり、
少なくとも１つの画素色を読むステップと、
符号技術の前記階層構造内で最高位の符号技術を優先して、前記第１、第２、及び第３の符号技術から選択された１つを適用するステップと、
前記第２の符号技術を使用して前記１つの画素を符号化する際に、次の一連の画素色が前記第１の符号技術に適している場合に前記第２の符号技術を妨げ、前記第２の符号技術に代えて前記第１の符号技術によって前記次の一連の画素色を符号化するステップとを含む
ことを特徴とするデジタル映像符号化方法。
【請求項２】
前記第１の符号技術はランレングス符号化であり、一旦選択されると、前記ランレングス符号化が可能な数だけ、フレーム内で連続する画素色に対して利用される
ことを特徴とする請求項１に記載の方法。
【請求項３】
前記第１の符号技術はランレングス符号化であり、一旦選択されると、前記ランレングス符号化が可能な数だけ、フレーム内で連続する画素色に対して利用され、
前記第２の符号技術はビットに基づく符号化であって、一旦選択されると、前記ビットに基づく符号化の次のバイトを次の連続する画素色に適用するときで、かつ前記第１の符号技術を利用して前記ビットに基づく符号化の次のバイトを符号化できないときに限って利用される
ことを特徴とする請求項１に記載の方法。
【請求項４】
前記第１の符号技術は、複数の異なるランレングス符号化技術から選択したものである
ことを特徴とする請求項１に記載の方法。
【請求項５】
前記異なるランレングス符号化技術は、前のフレームから画素色をコピーし、左側の前の画素から画素色をコピーし、上の画素色から画素色をコピーすることを含む
ことを特徴とする請求項４に記載の方法。
【請求項６】
前記階層構造を構築するステップは、前記第１の符号技術の中で異なるランレングス符号化技術間のサブ階層構造を構築することを含む
ことを特徴とする請求項４に記載の方法。
【請求項７】
（１）前記異なるランレングス符号化技術から選択された一つを使って前記少なくとも１つの画素色を符号化するときと、及び
（２）前記ランレングス符号化直後に、
前記異なるランレングス符号化技術から選択された同じものを使って少なくとも１つの次の画素色を符号化可能であって、前記異なるランレングス符号化技術間に構築されたサブ階層構造を先取りし、前記異なるランレングス符号化技術から選択された同じものを使って前記少なくとも１つの次の画素色を符号化する
ことをさらに含むことを特徴とする請求項６に記載の方法。
【請求項８】
現在の画素に対して、少なくとも一つの所定のランレングス符号化技術を使って前記現在の画素を符号化可能かどうかを確認するステップと、
（ａ）少なくとも一つの所定のランレングス符号化技術を使って前記現在の画素が符号化可能である場合に、少なくとも前記現在の画素をランレングス符号化するステップと、
（ｂ）少なくとも一つの所定のランレングス符号化技術を使って前記現在の画素が符号化できない場合に、メイクシリーズ・バイトを充填するために十分な画素を読み、２画素色だけで前記現在の画素と所定数の後続画素とを描画可能かどうかを決定するステップと、
（ｉ）２画素色だけで前記現在の画素と所定数の後続画素を描画可能である場合に、前記現在と後続の画素色に対応する一連の２進数のビット状態を使って、前記現在の画素と前記所定数の後続の画素の数を符号化するステップを含み、
前記所定数の後続の画素は、少なくとも一つの前記所定のランレングス符号化技術によって符号化できない現在の画素に続く画素の全てである
ことを特徴とするデジタル映像情報ストリームの圧縮方法。
【請求項９】
（ｂ）（ｉ）の後に、（ii）２画素色のみで前記現在の画素と所定数の後続の画素の描画が不可能な場合は、前記現在の画素を、前記現在の画素色を識別する１つ以上のバイトに符号化する
ことを特徴とする請求項８に記載の方法。
【請求項１０】
前記少なくとも一つの所定のランレングス符号化技術は、前記現在の画素を、前フレーム内の対応する画素からコピーすることを含む
ことを特徴とする請求項８に記載の方法。
【請求項１１】
前記少なくとも一つの所定のランレングス符号化技術は、前記現在の画素を、前記現在の画素と確立された位置関係を有する現在のフレーム内の画素からコピーすることを含む
ことを特徴とする請求項８に記載の方法。
【請求項１２】
前記少なくとも一つの所定のランレングス符号化技術は、古い画素を前フレームからコピーし、前記現在の画素の左の画素をコピーし、前記現在の画素の上の画素をコピーすることを含む
ことを特徴とする請求項８に記載の方法。
【請求項１３】
（ａ）においてランレングス符号化した後で、前の画素ラン用に使用されるのと同じ所定のランレングス符号化技術を使って次の画素を符号化できるかどうかを決定し、
前記同じ所定のランレングス符号化技術を使って前記次の画素が符号化可能な場合は、前記同じ所定のランレングス符号化技術を使って前記次の画素を符号化することをさらに含む
ことを特徴とする請求項１２に記載の方法。
【請求項１４】
コピー・コマンド、２色シリーズ・コマンド、個別の画素色コマンドを含む符号化コマンドの階層構造を構築するステップと、
現在の画素色を読むステップと、
コピー・コマンドが前記現在の画素色に適用可能であるかどうかを決定して、そうである場合は、前記コピー・コマンドを、前記現在の画素色に適用し、さらに前記コピー・コマンドが適用されるだけの数の連続する後続画素色に適用するステップと、
確立されたどのコピー・コマンドも前記現在の画素に適用されない場合は、前記２色シリーズ・コマンドを、前記２色シリーズ・コマンドの第１バイトのペイロードのために共に必要な前記現在の画素色と所定数の追加の画素色に適用するか否かを決定して、そうでない場合は、前記個別の画素色コマンドを前記現在の画素に適用するステップと、
そうである場合は：
前記２色シリーズ・コマンドを適用して前記第１バイトの前記ペイロードを形成するステップと、
後続バイトのペイロードに共に必要な次の画素色と所定数の別の追加の画素色を共に読むステップと、
少なくとも１つのコピー・コマンドが前記次の画素色と前記所定数の別の追加の画素色を符号化可能か否かを決定し、そうである場合は、前記少なくとも一つのコピー・コマンドを前記次の画素と前記所定数の別の追加の画素色に適用するステップと、
コピー・コマンドが前記次の画素と前記所定数の別の追加の画素色を符号化できない場合は、前記２色シリーズ・コマンドが前記次の画素と前記所定数の別の追加の画素色に適用されるか否かを決定して、そうである場合は、前記２色シリーズ・コマンドを前記後続のバイトのペイロードに適用するステップを含む
ことを特徴とするデジタル映像符号化方法。
【請求項１５】
（１）前記コピー・コマンドが前記次の画素色と前記所定数の別の追加の画素色とを符号化できず、及び
（２）前記２色シリーズ・コマンドが前記次の画素色と前記所定数の別の追加の画素色に適用されない場合は、
前記個別の画素色コマンドを前記次の画素色に適用する
ことを特徴とする請求項１４に記載の方法。
【請求項１６】
１つ以上のバイトに対する符号化コマンドが完了した後で、現在の画素色を読むことから開始する方法を繰り返す
ことを特徴とする請求項１５に記載の方法。
【請求項１７】
少なくとも１つのコピー・コマンドが前記次の画素色と前記所定数の別の追加の画素色を符号化可能かどうかを決定する前記ステップは：
１つのユニークなコピー・コマンドが、前記次の画素色と前記所定数の別の追加の画素色の全てを符号化可能かどうかを決定し、そうである場合は、前記コピー・コマンドを前記次の画素色と前記所定数の別の追加の画素色に適用するステップを含む
ことを特徴とする請求項１４に記載の方法。
【請求項１８】
エンコーダでデジタル映像ストリームを受けとるステップと、
現在の画素色を読むステップと、
ランレングス符号化を、前記現在の画素色と、可能な限り多くの後続の連続画素色とに試みて、
前記ランレングス符号化が前記現在の画素色に適用されない場合は、２色シリーズビット符号化に基づいて、前記現在の画素色と複数の後続の連続画素色の符号化を試みて、１バイトペイロードを充填するステップと、
（１）ランレングス符号化を再び適用するか、或いは、（２）前記２色シリーズビットの符号化が適用されなくなるまで、後続の追加の連続画素色を前記２色シリーズビットの符号化に基づいて符号化を続けるステップと；及び
対応するデコーダで、前記符号化したものを復号し、デジタル映像ストリームを実質的に検索するステップとを含む
ことを特徴とするデジタル映像転送方法。
【請求項１９】
前記ランレングス符号化も前記２色ビットシリーズの符号化も、前記個別の画素色に適用されない場合に、前記エンコーダは、独立したコマンドを前記個別の画素色に適用する
ことを特徴とする請求項１８に記載の方法。
【請求項２０】
少なくとも第１及び第２の符号技術の階層構造を構築するステップと、ここで、前記符号技術のうちの１つは、ランレングス符号化の形態であり、前記符号技術のうちの他の１つは、特定の色を使ってメイクピクセル符号化する形態であり、
少なくとも１つの画素色を読むステップと、
前記符号技術の階層構造内で最高位の符号技術を優先して、前記第１及び第２の符号技術から選択された１つを適用するステップと、
前記第２の符号技術を使って前記１つの画素色を符号化する際に、次の一連の画素色もまた前記第１の符号技術に適している場合に、前記第２の符号技術を妨げて、前記第２の符号技術に代えて前記第１の符号技術によって前記次の一連の画素色を符号化するステップを含む
ことを特徴とするデジタル映像符号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・データ処理に関し、特に、コンピュータ映像圧縮に関するものである。
【背景技術】
【０００２】
（関連出願に対するクロスリファレンス）
本出願は、米国特許出願10/260,534「映像圧縮システム」、２００２年１０月１日出願、発明者Dambrackas（「Dambrackas出願」）に関し、該出願における開示は、参照により、本願開示の一部を成す。
【０００３】
Dambrackas出願は、コンピュータ画面上で典型的に発生する冗長性の利点を利用するために最適化され、また、リアルタイムでの対話型コンピュータ・ユーザが受け入れ可能な映像損失のタイプの利点を利用するために最適化された新しい映像圧縮システムについて開示する。本出願においては、Dambrackas出願において熟知されている点(familiarity)が修正されるので、Dambrackas出願の詳細の全てを本願で繰り返す必要はない。本願に記載された例示的実施形態の１つにおいては、コンピュータ映像の捕捉された(captured)フレームは、ユニークに選択された５種類の異なるコマンドに符号化される。これらのコマンドは、捕捉された映像を最も効率的に圧縮可能な性能に基づく順に選択されたものである。本願で説明される５つのコマンドは、（１）前フレーム(earlier frame)から古い画素をコピーするもの、（２）左側から画素をコピーするもの、（３）上から画素をコピーするもの、（４）２色セット(2-color set)を使って一連の画素を生成するもの、（５）特定色を使って１つ或いは複数の画素を生成するものであった。Dambrackas出願は、各コマンドを階層構造で使うことによってユニークな有効性が得られることを認識するものであった。
【０００４】
Dambrackas出願によれば、make pixel（メイクピクセル）コマンドは、階層位置で最も低い位置をとり、続いて階層構造を上る順に：make series（メイクシリーズ）コマンド、copy above（コピーアバブ）コマンド、copy left（コピーレフト）コマンド、及びcopy old（コピーオールド）コマンドである。換言すれば、Dambrackasシステムを使って映像を符号化するエンコーダは、まず、copy oldコマンドの作成を試み、それが適していなければ、copy leftコマンドの作成を試み、以下、copy aboveコマンド、次に、make seriesコマンド、そして最後には、make pixelコマンドに頼ることになる。また、Dambrackas出願は、copy oldコマンド, copy leftコマンド, copy aboveコマンドのうち、２つか或いはそれ以上の数のコマンドが同時に現在の画素に適している場合にのみ、階層構造の優先度が適用されるべきことも認識するものであった。さらに、Dambrackas出願は、copy（コピー）コマンド(copy oldコマンド、copy leftコマンド、或いはcopy aboveコマンド)が適している限り、エンコーダが、copyコマンドを、適さなくなるまで使い続けるべきであることを開示する。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、圧縮コマンドのための代替的な優先順づけ(prioritization)システムを提供することによってDambrackasの映像圧縮システムを改良するものである。
【課題を解決するための手段】
【０００６】
本発明の現時点で好適な実施形態において、コマンドの優先度(priority)は、ランレングスコマンドがあらゆる他のコマンドによっては先取り(pre-empted)され得ないことを除いて、Dambrackas出願で開示されたものと同じである。要約すると、（１）ランが続く(ongoing)場合には、ランレングスコマンドはその他のコマンドによって先取りされず、（２）いずれかのランレングスコマンドを使って第２のバイト或いは後続のバイトを表現する際に、make seriesコマンドが、第２のバイト或いは後続のバイトへと継続しないように、ランレングスコマンドには、最高の優先度(highest priority)が与えられる。ランレングスコマンド及びmake seriesコマンドの全てが、画素の圧縮を生成することに失敗する場合は、最後の頼みの綱として、make pixelコマンドが生成される。
【発明を実施するための最良の形態】
【０００７】
本発明は、コンピュータ映像を通信チャネルに送出するために、いかなるハードウエア或いはソフトウェアにより実施されてもよく、これには介在(invetvening)ネットワークも含まれる。この１つの例示的実施形態が図１に示されるが、これに限定されるものでなく、一例として記載されるに過ぎない。図１において、システム１０は、サーバ１２のラック(rack)内に示されているKVMシステム１１を備える。KVMシステム１１は、あらゆる標準タイプのデジタルKVMシステムであってよく、例えば、Alabama州HuntsvilleのAvocent Corporation製の所謂DS１８００であってよい。サーバ１２は、KVMシステム１１を介して、現地オペレータ１７や遠隔のオペレータ１９などの遠隔のユーザと通信する。図１の実施形態では、サーバ１２がラック内にあるコンピュータサーバとして示されているが、サーバ１２は、ブレード(blades)、スタンドアロン(standing)PC、或いは、KVMシステム１１と通信するその他のコンピュータのセットでもよい。さらに、本発明では、KVMシステム自体を必要とするものでなく、あらゆる種類のデジタル映像源にも対応するあらゆるデジタル映像環境に実装し得る。
【０００８】
例えば、KVMシステム１１は、選択されたサーバ１２から映像情報を受けとり、デジタル信号を介してその映像情報をシステム１０の残りの部分に送る。また、KVMシステム１１及びサーバ１２は、KVMシステム１１’及びサーバ１２’と共に共通ラックに収納することができ、同様のサーバ選択機能を提供する。現地オペレータ１７や遠隔のオペレータ１９などのオペレータは、キーボードやマウスの信号やその他の入力デバイスの信号を、前もって選択されたサーバ１２／１２’向けKVMシステム１１／１１’に入力すると、サーバは、あたかもオペレータ１７／１９のキーボードとマウスが選択されたサーバに直接接続されているかのようにキーボードとマウスの信号を受信する。こうしたKVMシステムのオペレーションは、本業界では公知のことであるので、本願で詳細には説明されない。KVMシステムは、キーボードとマウスから選択されたサーバへ入力があるとそれに応答して、選択されたサーバから映像出力を受けとり、この映像出力を特定のオペレータ１７／１９へ送る。そして、オペレータ１７／１９のモニタは、選択されたサーバ１２／１２’から戻された映像信号を表示する。
【０００９】
KVMシステム１１／１１’とオペレータ１７／１９間には、多様な形態のデジタル通信ラインが敷設されていてもよい。そのような一例を図１に示す。イーサネット(登録商標)スイッチ１４及び１６は、ルータ１５と通信して現地のオペレータ１７とKVMシステム１１／１１’との間の接続を提供する。代替的に、遠隔のオペレータ１９は、TCP/IPネットワーク１８(或いは、その他の種類のネットワーク)を介してルータ１５、イーサネット(登録商標)スイッチ１４、KVMシステム１１／１１’と示されるよう連絡する。モニタ（例えば、オペレータ１７／１９のもの）と映像源（例えば、KVMシステム１１／１１’）との間で映像情報を通信する他の代替的実施形態は，本発明の範囲内で想到することができる。オペレータ１７／１９とKVMシステム１１／１１’との間にあるデジタルシステムの種類は、本発明にとって重要なことではなく、オペレータ１７／１９とKVMシステム１１／１１’間のデジタルプロトコルも同様である。
【００１０】
好適な実施形態によれば、本発明は、KVMシステム１１／１１’と、ローカルオペレータ１７或いは遠隔のオペレータ１９に対する介在デジタル通信チャネルとを介して、サーバ１２／１２’から送られる映像のための符号化／復号化プロトコルを提供する。一般的に、サーバ１２／１２’は、サーバ１２／１２’によって生成され、KVMシステム１１／１１’と適当なオペレータ１７／１９との間のデジタル通信経路に沿って通信されるように意図された映像を符号化するエンコーダを備える。同様に、オペレータ１７／１９は、適切なモニタ上で映像を再生するために、デジタル通信チャネルから受信されたデジタル映像信号を復号化するデコーダを含む。例示的実施形態の一般表現を図７に示す。KVMシステム１１は、本発明に基づく映像を符号化するエンコーダ７０を内蔵し、ワークステーション１９は、映像を表示させるために複号化するデコーダ７１を内蔵する。
【００１１】
サーバ１２／１２’のエンコーダやオペレータ１７／１９のデコーダがハードウェア或いはソフトウェアのいずれかであるかは、本発明にとって重要なことではなく、いずれにおいてもハードウェア或いはソフトウェアのいずれかで実現される。本開示が、エンコーダ／デコーダのためのハードウェア或いはソフトウェアの要件に言及するか、暗示するという範囲において、本発明は、これらに限定されることはない。
【００１２】
図２から図４は、例示的実施形態で提供されるコマンドのタイプを示す。図２は幾つかのランレングスコマンドの例を示し、図３はmake series（メイクシリーズ）コマンドを示し、図４はmake pixel（メイクピクセル）コマンドを示す。
【００１３】
まず、図４のmake pixelコマンドは、最もデータに特化した(data intensive)コマンドであるので最も好ましくなく、図４に示されるフレーム内の位置の現在の画素２２は、２バイトの make pixel（メイクピクセル）(MP)コマンドによって表される画素色によって定義される。make pixelコマンド（図２と図３で参照される他のコマンドと同様）の詳細については、本願において一般論として説明されるが、これらのコマンドがどのように動作するかに関する詳細と、それらの適切な代替コマンドについては、Dambrackas出願に記載されている。一般的に、make pixelコマンドは、２バイト（two-byte）コマンドによって５ビットの赤、５ビットの緑、５ビットの青を意味する１５ビットの色を提供する。図４に示すように、その２バイトは、第１の制御ビットとそれに続く１５色ビットから構成される。make pixelコマンドは、１つの色画素を記憶するために２バイトの情報を必要とするため圧縮が不十分である。このため、make pixelコマンドは、図２−図４に示す様々なコマンドの中で最も好ましくないものである。
【００１４】
ここで図３を参照すると、次に最も好ましくないmake series(MS)コマンドが示されている。make seriesコマンドは、エンコーダが２色の選択色(two color selection)だけから以前に決定した一連の画素を符号化する試みを行う。基本的には、後に、エンコーダは、現在の画素２１と特定の数の後続画素について、その全ての画素が異なる２色のうちの１つから来ることを決定する。結局、コンピュータ映像では、テキスト量と、（例えば、TV映像と対立する）コンピュータ映像に存在するその他の２色映像を理由として、make seriesコマンドを頻繁に適用可能である。make pixelコマンドのフォーマットを図３に示す。このフォーマットは、２色ビットの要件に適合する連続画素の長さに依存して、１バイト、２バイト、３バイト、或いは、より多いバイト数のものであってよい。図３の例では、make seriesコマンドは、１１画素を符号化するための２バイトである。第１のバイトの第１の４ビット(0111)は、次のコマンドがmake seriesコマンドであって、現在のバイト内のmake seriesコマンドの次に第２の後続バイトが続くことをデコーダに知らせる制御コードである。make series制御コードがその情報を規定する方法は、Dambrackas出願に開示されているため、本願では繰り返さない。make series符号(code)の第２バイトには、次に続くのがmake seriesバイトではなく、７画素ビットが続くことをデコーダに知らせるための第１の制御ビットを含む。結局、図３の例のためには、デコーダは、make seriesコマンドを連続する１１ビットとして読むことができる。ここで、この１１ビットは、その状態から２色グループの２色のうちの一方の色或いは他方の色として識別される。
【００１５】
make seriesコマンドにおいて、一連のデータ(a series)は、４ビット（図３の第１バイトの４個の「C」）と、１１ビット(図３の２バイト内のその４プラス７個の「C」)と、或いは、後続バイトごとに付加的な７ビットの他の組み合わせから構成可能である。従って、本例のmake seriesコマンドは、４ビット、１１ビット、１８ビット、２５ビットなどでよい。ここで、各インクリメントの増加値は、make seriesコマンドで付加的な７ビット（バイトあたり）である。従って、make seriesコマンドの最短バイト数は１であり、最長の長さは無制限である。結果として、Dambrackas出願によれば、make seriesコマンドは、白背景上の黒テキストなどの２色の不規則パターンを符号化するためには非常に重要である。
【００１６】
make seriesコマンドは、ある面では効率的であるが、その他の面では非効率的である。まず、図３に示されているように、１バイト・コマンド(single byte command)は、４画素を符号化する。このような１バイトは、その直後にmake seriesバイトが続かない場合、わずか８：１の圧縮比しかもたらさない（１バイトのコマンドでは４：１６ビット画素を符号化する）。第２に、より効率的な複数バイト(multi-byte)バージョンのmake seriesコマンドを使うために、正確な画素数（４，１１、１８、２５、・・・）を符号化する必要がある。このことは、７画素の処理の終了後にのみ圧縮が成功したかどうかがわかることを意味する。このためハードウェアでの実現がやっかいでありコマンドの優先順位づけが困難になる。
【００１７】
ランレングス(run length)・コマンドについて図２を使って説明する。ランレングス・コマンドは、現在の画素２０に、現在の画素色と前に識別された他の画素との間に特定の相関が見出し得ることを認識する。一例として３つのランレングス符号化コマンド、copy old(コピーオールド)コマンド、copy left（コピーレフト）コマンド、copy above（コピーアバブ）コマンドを図２に示す。copy old（コピーオールド）(CO)コマンドでは、フレーム番号２内の現在の画素２０が、フレーム番号１である前フレームの同じ位置にある画素と同じ画素色であるとして識別される。この場合は、前のフレームの古い画素を参照するだけで、make pixelコマンド(図４)によるよりも効率的に、現在の画素２０を識別することができる。従って、デコーダエンジンは、「古い画素をコピーせよ」ということを通知されるだけであって、デコーダエンジンは、現在の画素色２０が何であるかを知る必要がない。次に、このエンジンは、前のフレーム（フレーム番号１）からその色を検出する。さらに、Dambrackas出願で開示されているように、いったん現在の画素２０が、前フレーム（CO）内の同じ画素位置と相関を有すれば、その後、同色の連続画素数をカウントすることによって効率が非常に向上する。図２で示されるように、COがOOORRRRRであるとして、デコーダエンジンに与えられるコマンドは、copy oldコマンドを識別するための３個のフロント(front)画素(OOO)と、デコーダエンジンが同色としてコピー可能な画素数を示す後続の５画素(RRRRR)とを備える。copy oldコマンドをどのように実現できるかと、その代替的実施形態については本願では説明しないが、Dambrackas出願にその記述がある。
【００１８】
また、図２には、copy above(CA)コマンドとcopy left (CL)コマンドとが示されている。Copy aboveコマンド及びcopy leftコマンドが、現在の画素２０に対して異なる位置関係を持つことを除いて、copy aboveコマンド及びcopy leftコマンドは、copy oldコマンドと同様に機能する。copy aboveコマンドでは、現在の画素２０が、その真上の画素との関係から識別され、その後続のデコーダエンジンが同色からコピー可能な数の画素（RRRRR）が後続する。同様に、copy leftコマンドは、現在の画素２０が、この画素の直ぐ左隣の画素との関係から識別される。本発明は、図２で説明されたランレングスコマンドだけに限定されることはなく、現在知られているか、或いは、将来発見されるであろうと考えられるあらゆる他のランレングスコマンドに適用可能である。
【００１９】
本発明に係る現在の時点で好適な実施形態において、コマンドの優先順位が、変更されて、他のコマンドがいかなるランレングスコマンドをも先取りしないように、ランレングスコマンドに最高の優先順位を与える。複数のラン・タイプ(run type)がアクティブである（即ち、現在の画素に適用される）場合は、最大の画素カウント値をもつランが、最高の優先順位を持つ。ランレングスコマンド間に関連(tie)がある場合は、copy oldコマンドは、最高の優先順位を持ち、copy leftコマンドは次に高い優先順位を持ち、copy aboveコマンドは最も低い優先順位を持つ。ランレングスコマンドによる先取り(preemption)は、MSコマンド自体だけではなく、現在のMSコマンドに加えられ得る全ての後続バイトにも適用される。MSコマンドが、４画素コマンドを生成でき、他に利用可能なランレングスコマンドが、同じ４画素を符号化できない場合は、MSコマンドが生成される。次の７画素がMSコマンドに対して１バイトの拡張(one byte extension)を生成するために使用し得、３つのランレングスコマンドのいずれも同じ７画素を表すために使用できない場合に限って、この拡張が生成される。次の７画素がMSコマンドに対して１バイトの拡張を生成することができ、利用可能なランレングスコマンドが同じ７画素を表せない場合に、MSコマンドへの１バイト拡張が適用される（図３に示される２バイトコマンドと同様）。同じ規則を、MSコマンドに対する拡張された全ての第２の後続のバイトの拡張に適用可能である。即ち、第２の或いは後続のMSバイト拡張が利用される前に、第２の或いは後続のバイトとして生成される前にランレングスコマンドのうちの一つが適用されるか否かを判断するために、MSコマンドに対する全ての第２の後続する拡張がテストされる。
【００２０】
無論、ランレングスコマンド及びMSコマンドが、画素の圧縮の生成に失敗した場合は、MPコマンドが、最後の頼みの綱として生成される。
【００２１】
本願における優先順位づけの第１の例示的実施形態を図６に示す。ここでは、エンコーダ７０(図７)は、KVMシステム１１によって選択されたサーバの映像プロセッサから映像を受信するスタートステップを開始する。映像カード(video card)によって生成された第１の画素は、その他の画素と無関係なので(何故ならば、それは最初で唯一のものであるからである)、第１のステップ６１は、図４に示されているような画素を生成しなければならない。従って、２バイトの make pixelコマンドが、第１のステップ６１で生成される。その後、エンコーダは、いずれかのランレングス符号化(RLE)コマンドが次の後続の画素に適用されるか否かについて調査する。（無論、サーバによって生成された第２の画素に対しては、適用可能なランレングスコマンドだけがcopy left(CL)コマンドとなる）。ステップ６２では、エンコーダが、ランレングスコマンドを次の画素に使えることを決定した場合、ランレングスコマンドが、その画素及びこれと同色が適用される後続画素「RRRRR」に使用される。従って、ステップ６３では、例えば、図２のCO, CL, CAの形式のうちの１つに基づくランレングス符号化が、エンコーダ７０によって生成される。ステップ６３のランレングス符号化後に、次の画素が検索され、ステップ６２が繰り返される。
【００２２】
いったん、ステップ６２のランレングス符号化の調査で、ランレングス符号化が次の画素に適用されないことが決定されると、ステップ６４に進んで、２色シリーズ(two color series)コマンドが次の後続する画素セットに適用されるかどうかに関して調査される。make series (two-color series)コマンドが、次画素と後続画素用に生成可能な場合、ステップ６４では、make seriesコマンドが、最小数のバイト用に生成される。ステップ６４において、この最小数のバイトは、ランレングス符号化コマンドを適用することはないが、make seriesコマンドが適用されるバイト数によって規定される。従って、ステップ６４において、make seriesコマンドが一連の４つの２色ビットに適用され、その後ランレングス符号化が次の後続ビットに適用される場合には、ステップ６４の結果は、最小バイト数が、一連の４つの２色ビット用の１となる。従って、処理はステップ６２に戻り、そこで、ランレングス符号化が、次に後続する画素のために使用される。
【００２３】
しかしながら、ステップ６４で第１の４ビットが識別されて、次の７ビットがランレングスの要件は満たさないがmake seriesの要件は満たす場合には、make seriesステップ６５では、一連の１１の２色ビットのための少なくとも最小の２バイトが生成される。ステップ６４及びステップ６５では、次の後続の７ビットのセットの各々に対して、同じ調査が続けられるので、make seriesコマンド６５は、最少数のmake seriesバイトを生成するだけである。尚、ステップ６２／６３では、そのバイトに対してランレングス符号化コマンドは使用され得ない。
【００２４】
最後に、ステップ６２で、次の画素にいかなるランレングス符号化も適用されず、ステップ６４で、次の画素（或いは次のバイト内の画素のセット）にいかなるmake series コマンドも適用できない場合には、フローはステップ６１に戻り、その特定の画素のためにmake pixelコマンドが使用される。上のステップ６２に言及した部分で説明したが、次の画素は、ステップ６２に移行し、ランレングス符号化コマンドが画素に適用されるかどうかが決定される。上記の図６の説明は、エンコーダについてなされている。復号処理においては、デコーダ７１は、図６で示される符号化ステップで生成されたバイト・ストリームを受信し、エンコーダで復号された画素色を検索する。デコード処理のために、コマンド優先順位に関する決定は不要である。コマンドストリームは、デコーダに対して正確にどのように画素を描画するか(render)を指令する。
【００２５】
本発明の代替的実施形態を、図５Ａと５Ｂに示す。本実施形態では、エンコーダ７０は、ステップ３０で処理を始め、ステップ３１でサーバの映像カードから受けとった第１の画素に対するmake pixelコマンドを使用する。ステップ３２では、エンコーダ７０は、次の画素を読み、映像を圧縮する方法を探し始める。エンコーダは、ランレングスコマンドの調査の各々（ステップ３３、３４、３５）とmake seriesコマンドの調査(ステップ３６)とを並行して実行する。しかしながら、いったん適当な数の画素が読まれて、１つのmake seriesバイトが充填(fill)されると、make seriesコマンドの調査のみが行なわれることを理解することは重要なことである。次に、適用されるコマンド、即ち、現在の画素を成功裡に符号化できて適用可能なコマンドが、次の画素について試される。全コマンドがその画素を符号化できない場合は、どのコマンドが前の画素まで成功していたかを決定する。コマンド優先順位の階層構造(command priority hierarchy)は、これらの残りのコマンドのうちのどれが、その地点(that point)までに読まれた画素の全てに対して適用されるかを指示するものである。
【００２６】
ステップ３３では、エンコーダ７０は、最も効率的な圧縮技術であるcopy oldコマンドを、現在の画素に適用するかどうかを調査する。ステップ３３の調査の一部には、図２で示すcopy oldコマンドに対する条件、即ち、現在の画素２０が、前のフレームの同じ位置にある画素と同じ色であること、が充足されるか否かを決定することを含む。copy oldコマンドが現在の画素に適用される場合は、処理はステップ３７からステップ３８に進む。ステップ３８で、コマンド優先順位から、copy oldコマンドが、適用されるその他のコマンドと比べて、最長のランレングスを提供することが確認されると、ステップ３９で、エンコーダ７０は、copy oldコマンドを適用し（図２に示される”OOORRRRR”コマンドを生成する）、ステップ３２で次の画素を読む。
【００２７】
ステップ３４で、エンコーダは、２番目に最も効率的な圧縮技術であるcopy leftコマンドが現在の画素に適用されるかどうかを調査する。copy leftコマンドを現在の画素に適用する場合は、処理はステップ３７からステップ３８へ進む。ステップ３８で、コマンド優先順位によって、copy leftコマンドが適用される最も効率的なコマンドであることが確認されると、ステップ３９で、エンコーダは、copy leftコマンドを適用して、ステップ３２で、次の画素を読む。
【００２８】
ステップ３５では、copy aboveコマンドの調査が行われる。エンコーダは、copy aboveコマンドが適用されるかどうかを調査し、また、適用されるcopy oldコマンド、copy leftコマンド、copy aboveコマンド、make seriesコマンドの中でcopy aboveコマンドが最も効率的なランレングス符号化であるかどうかを確認する。copy aboveコマンドを現在の画素に適用する場合、処理はステップ３７からステップ３８に進む。ステップ３８で、コマンド優先順位から、copy aboveコマンドが、適用されるコマンドの中で最も効率的なコマンドであることが確認されると、ステップ４０で、エンコーダは、copy aboveコマンドを適用し、ステップ３２で、次の画素を読む。
【００２９】
図５Ａのステップ３６と、図５Ｂにさらに完全に示されているように、make seriesコマンドを現在の画素に適用する場合は、処理はステップ３７からステップ３８に進む。make seriesコマンドが、現在の画素に適用されるコマンドの中で最も効率的なコマンドであるとステップ３８でコマンド優先順位から確認された場合は、ステップ３９で、make seriesコマンドが適用される。
【００３０】
ステップ３７では、ステップ３３／３４／３５／３６のいずれかコマンドが現在の画素に適用されるかどうかが決定され、これらのコマンドのいずれも適用されず、現在の画素までに対して以前に成功したコマンドがなかった場合は、最後の頼みの綱として、ステップ４０でmake pixelコマンドが適用され、処理はステップ３２に戻る。
【００３１】
図５Ｂに示すmake seriesコマンドの調査とその適用の場面では、ステップ４１で、まず、エンコーダは、前方の４画素を読み、１つのmake-seriesバイトを充填する(fill)。次に、ステップ４２では、make seriesコマンドがこれらの４画素に適用されるか否かが決定される。換言すれば、ステップ４２では、エンコーダは、これらの４画素が２色だけならなるグループによって全て規定されるかどうかを決定する。ここで、この２色とは、以前の２つのユニークに色付けされた画素によって前もって定義されたものである。ステップ４２で、make seriesコマンドがそれらの４画素に適用されない場合は、ステップ５４に示すように、make seriesコマンドの調査とその適用処理が終了し、処理は、その後図５Ａに示されるように、ステップ３６からステップ３７に進む。make seriesコマンドが適用される場合は、次にステップ４３で、エンコーダは、ランレングス符号化コマンドが４画素のすべてに適用されるかどうかに関する調査を行なう。そうである場合は、ステップ４４で、ランレングス符号化が、これらの４画素を表現するために使用される。ステップ４３の調査で、ランレングス符号化が４画素の全てに適用されないと確認された場合は、ステップ４５で、make seriesコマンドはバッファされ(buffered)、処理はステップ４６に進む。ステップ４６では、エンコーダは、次の７画素を読み、make series列(progression)の第２の後続のバイトを充填する。次に、ステップ４７で、エンコーダは、make seriesコマンドが７画素の第２の／後続のバイトに適用されるかどうかを決定する。これが７画素の全てに適用される場合は、処理はステップ５０に進む。しかしながら、そうでない場合は、ステップ４８で、バッファされたコマンドが発行される。ステップ５０では、エンコーダは、あらゆるランレングス符号化コマンドが７画素の全てに適用されるかどうかに関して調査する。そうである場合は、ステップ５２で、バッファされたコマンドが発行され、ステップ５３で、ランレングス符号化が適用されて７画素の全てが表現され、次にステップ４１に戻って前方の４画素を読む。７画素の全てに対してランレングスコマンドが適用されない場合は、ステップ４９で、拡張ビット(extension bit)が設定されバッファされたコマンドが発行され、ステップ５１に進む。Dambrackas出願には詳細に記載されているように、コンティニュー・ビット(continue bit)とも呼ばれる拡張ビットは、現在のコマンドがデータの次のバイトに拡張しているかどうかを示す。ステップ５１で、拡張ビットが設定されていない新しいmake-seriesコマンドがバッファされ、次にステップ４６に戻って、次の７画素を読み進める。本実施形態において、MSコマンドの第２の／後続のバイトによって符号化された７画素の全てを１つのRLEコマンドによって符号化できる場合に限って、ランレングス符号化コマンドは、MSコマンドの第２の／後続のバイトを阻止する(interrupt)ことができる。
【００３２】
図５及び上記の記載について考慮すると理解できることであるが、本例示的実施形態は、可能な限りCO、CL、或いは、CAコマンドを介してランレングス符号化を行い、CO/CL/CAコマンドのうちのいずれか１つを所定の画素に実際に適用しようとする場合に、CO/CL/CAコマンドの各々を連続して適用する際の優先度を与えるものである。さらに、いったんmake seriesコマンドが入力されると、後続のMSバイトに対するmake seriesコマンドの適用は自動的には継続されないが、後続の各バイトに対するコマンドの評価がなされて、後続のMSコマンド・バイトに代えて別のランレングス符号化コマンドが使用可能か決定される。いったん、MSコマンド分析中に、画素に対するランレングス符号化が見つかると、以前に構成されたMSコマンドバイトが集められ(assembled)、ステップ３３／３４／３５でより効率的なランレングス符号化コマンドの処理に戻る。
【００３３】
従って、本発明は、最後のコマンドが送信されてから、画素全体を最も効率的に符号化するコマンドを使うという目標を新たなコマンド優先度に提供するものである。コマンドの優先度は、画像が２色だけを含む場合に、画像の広い部分(large section)を占有するmake seriesコマンドに関しては特に重要なものになる。MSコマンドにそれらの広い部分を占有させるのではなく、MSコマンドバイトがさらに追加される前に、より高い効率を提供するランレングス符号化が、適用され得るか否かが調べられる。
【００３４】
本発明の代替的な例示的実施形態では、MSコマンドの第２の／後続のバイトによって符号化される所定数の７画素が、１つのRLEコマンドで符号化可能な場合は、RLEコマンドが、MSコマンドの第２の／後続のバイトを阻止する。
【００３５】
ランレングス符号化コマンドが、第２の／後続のMSコマンドバイトを阻止する場面で、効率の度合いの変動を提供する多様な代替的な実施形態が想到され得る。
【００３６】
本発明を現在最も実践的な実施形態と好適な実施形態に基づいて説明したが、本発明は開示した実施形態に限定されることはなく、添付の請求項の要旨と範囲内にある様々な変更構成と等価な構成を含むものであることを理解されたい。
【図面の簡単な説明】
【００３７】
【図１】本映像符号化を実施するシステムの一例を示す図である。
【図２】本発明の好適な実施形態で使用される５個のコマンドを示す映像フレームの模式図である。
【図３】本発明の好適な実施形態で使用される５個のコマンドを示す映像フレームの模式図である。
【図４】本発明の好適な実施形態で使用される５個のコマンドを示す映像フレームの模式図である。
【図５Ａ−５Ｂ】本発明の例示的実施形態における５個のコマンドの問い合わせと適用を示すフローチャートである。
【図６】本発明に係る優先順位づけの他の例示的実施形態である。
【図７】図５と図６の例示的実施形態を実施するための他の構成例である。
【符号の説明】
【００３８】
１１    KVMシステム
１１’  KVMシステム
１２    サーバ
１２’  サーバ
１５    ルータ
１７    現地のオペレータ
１９    遠隔のオペレータ
【図１】
2008504734.tif 000003
【図２】
2008504734.tif 000004
【図３】
2008504734.tif 000005
【図４】
2008504734.tif 000006
【図５Ａ】
2008504734.tif 000007
【図５Ｂ】
2008504734.tif 000008
【図６】
2008504734.tif 000009
【図７】
2008504734.tif 000010
【国際調査報告】
2008504734.tif 000011
2008504734.tif 000012