"ビデオ符号化器における方法であって、ビデオデータを符号化することであって、1つのマクロブロックの3つ以上のルミナンス動きベクトルであって、前記マクロブロックの少なくとも一部に関連付けられた3つ以上のルミナンス動きベクトルのルミナンス動きベクトル情報を受け取ること、および前記3つ以上のルミナンス動きベクトルのそれぞれについて、前記マクロブロックの少なくとも一部に関連付けられたクロマ動きベクトルを導出することであって、前記導出することは、前記ルミナンス動きベクトル情報に対して、フィールドベースの丸めテーブルを伴う計算を少なくとも1つ実行することを含み、前記計算は、むこと、および、ビットストリーム内に前記符号化されたビデオデータを出力することを備えることを特徴とする方法。前記マクロブロックは、フィールド符号化されたマクロブロックであることを特徴とする請求項1に記載の方法。前記マクロブロックは、4つのルミナンスフィールド動きベクトルを有する、フィールド符号化されたマクロブロックであり、前記4つのルミナンスフィールド動きベクトルのそれぞれは、前記マクロブロックのルミナンスフィールドの動きを部分的に表すことを特徴とする請求項1に記載の方法。各クロマ動きベクトルは、前記マクロブロックのクロマフィールドの様々な部分における動きを表すクロマフィールド動きベクトルであることを特徴とする請求項3に記載の方法。前記マクロブロックは4:2:0マクロブロックであることを特徴とする請求項1に記載の方法。前記導出することは、前記ルミナンス動きベクトル情報の少なくとも一部を丸めること、およびサブサンプリングすることを備えることを特徴とする請求項1に記載の方法。前記3つ以上のルミナンス動きベクトルは1/4画素単位であることを特徴とする請求項1に記載の方法。請求項1に記載の方法を実行するための、コンピュータで実行可能な命令を格納することを特徴とするコンピュータ可読媒体。ビデオ復号器において、それぞれがインターレースPフレームのマクロブロックの少なくとも一部に関連付けられた、1つまたは複数のルミナンス動きベクトルのルミナンス動きベクトル情報を受け取ること、および前記1つまたは複数のルミナンス動きベクトルのそれぞれに対する前記マクロブロックの少なくとも一部に関連付けられたクロマ動きベクトルを、前記1つまたは複数のルミナンス動きベクトルの前記動きベクトル情報に少なくとも部分的に基づいて、導出することを備え、前記ビデオ復号器は、インターレースPフレームの4つのルミナンスフィールド動きベクトルを用いて予測されたマクロブロックを復号するように動作可能であることを特徴とする方法。前記復号器は、4つのルミナンスフレーム動きベクトルを有する、インター符号化されたマクロブロック、2つのルミナンスフィールド動きベクトルを有する、インター符号化されたマクロブロック、1つのルミナンスフレーム動きベクトルを有する、インター符号化されたマクロブロック、およびイントラマクロブロックを復号するように、さらに動作可能であることを特徴とする請求項9に記載の方法。前記導出することは、4つのクロマフィールド動きベクトルを導出することを備えることを特徴とする請求項9に記載の方法。それぞれがインターレースフレーム符号化されたピクチャのマクロブロックの少なくとも一部に関連付けられた、1つまたは複数のルミナンスフィールド動きベクトルのルミナンス動きベクトル情報を受け取ること、および前記1つまたは複数のルミナンスフィールド動きベクトルのそれぞれについて、前記マクロブロックの少なくとも一部に関連付けられたクロマ動きベクトルを、前記1つまたは複数のルミナンスフィールド動きベクトルの前記動きベクトル情報に少なくとも部分的に基づいて、導出することであって、フィールドベースの丸めテーブルを用いてルミナンスフィールド動きベクトル成分を丸めること、および前記ルミナンスフィールド動きベクトル成分をサブサンプリングすること、を含んで導出することを備える方法をコンピュータに実行させるコンピュータ実行可能命令を備えることを特徴とするコンピュータ可読媒体。前記インターレースフレーム符号化されたピクチャはインターレースPフレームであることを特徴とする請求項12に記載のコンピュータ可読媒体。前記フィールドベースの丸めテーブルは、値の集合{0,0,1,2,4,4,5,6,2,2,3,8,6,6,7,12}からなる整数配列であることを特徴とする請求項12に記載のコンピュータ可読媒体。前記1つまたは複数のルミナンスフィールド動きベクトルは4つのルミナンスフィールド動きベクトルを備えることを特徴とする請求項12に記載のコンピュータ可読媒体。前記マクロブロックは4:2:0マクロブロックであり、前記サブサンプリングは、前記ルミナンスフィールド動きベクトル成分を2で割ることを備えることを特徴とする請求項12に記載のコンピュータ可読媒体。ビデオ復号器において、符号化されたビデオデータを復号する方法であって、それぞれがインターレースフレーム符号化されたピクチャのマクロブロックの少なくとも一部に関連付けられた、1つまたは複数のルミナンスフィールド動きベクトルのルミナンス動きベクトル情報を受け取ること、および、前記1つまたは複数のルミナンスフィールド動きベクトルのそれぞれについて、前記マクロブロックの少なくとも一部に関連付けられたクロマ動きベクトルを、前記1つまたは複数のルミナンスフィールド動きベクトルの前記動きベクトル情報に少なくとも部分的に基づいて、導出することであって、フィールドベースの丸めテーブルを用いてルミナンスフィールド動きベクトル成分を丸めること、および前記ルミナンスフィールド動きベクトル成分をサブサンプリングすること、を含んで導出することを備えることを特徴とする方法。前記インターレースフレーム符号化されたピクチャはインターレースPフレームであることを特徴とする請求項17に記載の方法。前記フィールドベースの丸めテーブルは、値の集合{0,0,1,2,4,4,5,6,2,2,3,8,6,6,7,12}からなる整数配列であることを特徴とする請求項17に記載の方法。前記1つまたは複数のルミナンスフィールド動きベクトルは4つのルミナンスフィールド動きベクトルを備えることを特徴とする請求項17に記載の方法。前記マクロブロックは4:2:0マクロブロックであり、前記サブサンプリングは、前記ルミナンスフィールド動きベクトル成分を2で割ることを備えることを特徴とする請求項17に記載の方法。ビデオ復号器において、符号化されたビデオデータを復号する方法であって、それぞれがインターレースフレーム符号化されたピクチャのマクロブロックの少なくとも一部に関連付けられた、1つまたは複数のルミナンス動きベクトルのルミナンス動きベクトル情報を受け取ること、および、前記1つまたは複数のルミナンス動きベクトルのそれぞれについて、前記ルミナンス動きベクトルの前記ルミナンス動きベクトル情報に少なくとも部分的に基づいて、クロマ動きベクトルを導出することを備え、前記導出することは、第1の丸めテーブルを用いて前記クロマ動きベクトルの水平成分を丸めること、前記ルミナンス動きベクトルがルミナンスフィールド動きベクトルであるかを判定すること、前記ルミナンス動きベクトルが前記ルミナンスフィールド動きベクトルである場合に、前記第1の丸めテーブルとは異なる第2の丸めテーブルを用いて前記クロマ動きベクトルの垂直成分を丸めること、および、そうでない場合は、前記第1の丸めテーブルを用いて前記クロマ動きベクトルの前記垂直成分を丸めることを備えることを特徴とする方法。デジタルビデオにおいては、ビデオの圧縮および圧縮解除はきわめて重要なので、ビデオの圧縮および圧縮解除の分野が非常に発達していることは驚くことではない。従来のビデオ圧縮および圧縮解除手法の利点がどうであれ、それらの手法は、以下に示す手法およびツールの利点を有していない。本発明の目的は、ビデオコンテンツの圧縮および圧縮解除について、特にインターレースビデオコンテンツの圧縮および圧縮解除についての現在の手法を改善することにある。要約すれば、詳細な説明は、ビデオフレームの符号化および復号の様々な手法およびツールを対象とする。記載の実施形態は、以下に限定されないが、以下を含む記載した手法およびツールの1つまたは複数を実装する。一態様では、符号化器/復号器が、インターレースフレーム符号化された順方向予測ピクチャ例えば、インターレースPフレームのマクロブロックの4つのフィールド動きベクトルの情報を含む動きベクトル情報を受け取る。符号化器/復号器は、その4つのフィールド動きベクトルを用いてマクロブロックを処理する。4つのフィールド動きベクトルのうちの2つは、マクロブロックの第1フィールドにおける動きを表し、4つのフィールド動きベクトルのうちの他の2つは、マクロブロックの第2フィールドにおける動きを表す。4つのフィールド動きベクトルについての情報は、4つのフィールド動きベクトルの動きベクトル差分を含むことが可能である。別の態様では、符号化器/復号器が、インターレースフレーム符号化されたピクチャ例えば、インターレースPフレームの現在のマクロブロック例えば、2つのフィールド動きベクトルマクロブロック、または4つのフィールド動きベクトルマクロブロックのフィールド動きベクトルを予測するための有効な候補動きベクトル例えば、隣接するマクロブロックにあるフレーム動きベクトルまたはフィールド動きベクトルの数を決定する。符号化器/復号器は、有効な候補動きベクトルに少なくとも部分的に基づいて、フィールド動きベクトルの動きベクトルプレディクタを算出する。この算出は、有効な候補動きベクトルの数が3かどうかに基づいて、有効な候補動きベクトルに対してメジアン演算例えば、成分ごとのメジアン演算を実行するかどうかを決定することを含む。有効な候補動きベクトルの数が3であれば、この算出はさらに、有効な候補動きベクトルに対してメジアン演算を実行することを含むことが可能である。有効な候補動きベクトルの数が3未満であれば、この算出は、メジアン演算を実行することなく、有効な候補動きベクトルを動きベクトルプレディクタとして選択することを含むことが可能である。符号化器/復号器は、動きベクトルプレディクタおよび差分が存在しないことを示すことも可能な動きベクトル差分情報に少なくとも部分的に基づいてフィールド動きベクトルを再構成することが可能である。有効な候補動きベクトルは、インターレースフレーム符号化されたピクチャ内の、または現在のマクロブロックと同じスライス内の、ブロック用か、マクロブロックフィールド用か、マクロブロックフィールド部分用か、またはマクロブロック用かによって特徴づけられることが可能であり、実際の動きベクトル値とすることができ、イントラのブロック、マクロブロックフィールド、マクロブロックフィールド部分、またはマクロブロックに対しては存在しない。別の態様では、符号化器/復号器が、インターレースフレーム符号化されたピクチャ内の現在のマクロブロックの現在のフィールド用のフィールド動きベクトルを予測するために候補動きベクトルを決定し、その候補動きベクトルの1つまたは複数についてフィールド極性を決定し、そのフィールド極性に少なくとも部分的に基づいて、そのフィールド動きベクトル用の動きベクトルプレディクタを算出する。候補動きベクトルは、1/4画素単位で計測されることが可能である。フィールド極性は、候補動きベクトルのy成分に対してビットごとのAND演算を実行することによって決定されることが可能である。候補動きベクトルのフィールド極性を決定することは、候補動きベクトルが参照フレームのトップフィールドの変位を示しているか、ボトムフィールドの変位を示しているか、あるいは、候補動きベクトルが現在のフィールドと同じ極性のフィールドの変位を示しているか、反対の極性のフィールドの変位を示しているかを決定することを含むことが可能である。別の態様では、符号化器/復号器が、フィールド動きベクトルを予測するための、1つまたは複数の有効な候補動きベクトルを決定し、その1つまたは複数の有効な候補動きベクトルの個々の有効な候補動きベクトルそれぞれのフィールド極性を決定し、そのフィールド極性に応じて、個々の有効な候補動きベクトルのそれぞれを2つの集合のいずれかに割り当て、その2つの集合に少なくとも部分的に基づいて、フィールド動きベクトルの動きベクトルプレディクタを算出する。この2つの集合は、反対の極性の集合と同じ極性の集合であることが可能である。動きベクトルプレディクタを算出することは、優性的な極性dominantpolarityの、有効な候補動きベクトルを選択する例えば、有効な候補を最も多く有する集合からの候補ことを含むことが可能である。候補は、指定の選択順序で選択されることが可能である。有効な候補が各集合に1つだけ割り当てられている場合、動きベクトルプレディクタを算出することは、反対の極性の候補ではなく同じ極性の候補を選択することを含むことが可能である。2つの集合の一方に有効な候補が3つ割り当てられている場合、動きベクトルプレディクタを算出することは、その3つの有効な候補に対してメジアン演算を実行することを含むことが可能である。別の態様では、復号器が、インターレースフレーム例えば、インターレースPフレーム、インターレースBフレーム、または、インターレースPフィールドおよび/またはインターレースBフィールドを有するフレームの複数のマクロブロックの中にある1つまたは複数のスキップマクロブロックskippedmacroblocksを復号する。その1つまたは複数のスキップマクロブロックのそれぞれは、1ビットストリーム内のスキップマクロブロック信号によって指示され、2予測動きベクトル例えば、フレーム動きベクトルを厳密に1つ用い、動きベクトル差分情報を有さず、3残差情報を欠いているマクロブロックである。その1つまたは複数のスキップマクロブロックのそれぞれについてのスキップマクロブロック信号は、それぞれのスキップマクロブロックに対して1動きベクトルで動き補償される復号を指示する。スキップマクロブロック信号は、複数のレイヤを有するビットストリームのフレームレイヤで送られる圧縮されたビットプレーンの一部であることが可能である。または、スキップマクロブロック信号は、マクロブロックレイヤで送られる個々のビットであることも可能である。別の態様では、複数の使用可能な符号化モードの群から符号化モードが選択され、選択された符号化モードに従って、符号化器または復号器内でビットプレーンが処理される。ビットプレーンは、インターレースフレーム内のマクロブロックがスキップされているかどうかを示すバイナリ情報を含む。インターレースフレーム内に動きベクトルを1つだけ有するマクロブロックがあれば、そのマクロブロックがスキップされ、その1つだけの動きベクトルがそのマクロブロックの予測動きベクトルに等しく、そのマクロブロックは残差を有しない。複数の動きベクトルを有するマクロブロックはスキップされない。別の態様では、符号化器が、インターレースPフレームのマクロブロックの動き補償タイプ例えば、1MV、4フレームMV、2フィールドMV、または4フィールドMVを選択し、そのマクロブロックのフィールド/フレーム符号化タイプ例えば、フィールド符号化されている、フレーム符号化されている、符号化されたブロックがないを選択する。符号化器は、マクロブロックの動き補償タイプおよびフィールド/フレーム符号化タイプを統合的に符号化する。符号化器はさらに、マクロブロックの他の情報例えば、1動きベクトルマクロブロックなどに対する差分動きベクトルの存在のインジケータを、動き補償タイプおよびフィールド/フレーム符号化タイプと統合的に符号化することが可能である。別の態様では、復号器が、インターレースPフレームのマクロブロック用のマクロブロック情報を受け取る。この情報には、マクロブロックの動き補償タイプおよびフィールド/フレーム符号化タイプを表す統合符号jointcodeが含まれる。復号器は、その統合符号例えば、可変長符号化テーブル内の可変長符号を復号して、マクロブロックの動き補償タイプ情報とフィールド/フレーム符号化タイプ情報の両方を取得する。別の態様では、復号器が、1つのマクロブロックの3つ以上のルミナンス動きベクトルのルミナンス動きベクトル情報を受け取る。この3つ以上のルミナンス動きベクトルのそれぞれは、マクロブロック例えば、4:2:0マクロブロックの少なくとも一部に関連付けられている。復号器は、マクロブロックのクロマ動きベクトルとルミナンス動きベクトルとの比を1:1に保つように、ルミナンス動きベクトル情報に対して、丸めテーブル例えば、フィールドベースの丸めテーブルを伴う算出を少なくとも1つ行うことにより、その3つ以上のルミナンス動きベクトルのそれぞれについて、マクロブロックの少なくとも一部に関連付けられたクロマ動きベクトルを導出する。例えば、復号器は、マクロブロックの4つのルミナンスフレームまたはフィールド動きベクトルを受け取り、そのマクロブロックの4つのクロマ動きベクトルを導出する。この導出することは、フィールドベースの丸めテーブルを用いて、ルミナンス動きベクトル情報の少なくとも一部をサブサンプリングすることおよび/または丸めることを含むことが可能である。別の態様では、復号器が、1つまたは複数のルミナンス動きベクトルの動きベクトル情報に少なくとも部分的に基づいて、1つまたは複数のルミナンス動きベクトルのそれぞれについて、インターレースフレーム符号化されたピクチャ例えば、インターレースPフレーム、インターレースBフレームのマクロブロックの少なくとも一部に関連付けられたクロマ動きベクトルを導出する。復号器は、4つのルミナンスフィールド動きベクトルを用いて予測されたマクロブロックを復号するように動作可能である。例えば、復号器は、ルミナンス動きベクトル情報の少なくとも一部にフィールドベースの丸めルックアップテーブルを適用するなどして、4つのクロマフィールド動きベクトルを導出する。別の態様では、復号器が、フィールドベースの丸めテーブル例えば、整数配列を用いてルミナンスフィールド動きベクトル成分を丸め、そのルミナンスフィールド動きベクトル成分をサブサンプリングすることによって、1つまたは複数のルミナンスフィールド動きベクトルのそれぞれについて、マクロブロックの少なくとも一部に関連付けられたクロマ動きベクトルを導出する。これらの様々な手法およびツールは、組み合わせて用いても、別々に用いてもよい。以下、添付図面を参照しながら、様々な実施形態の詳細説明を進めていく中で、さらなる特徴や利点が明らかになるであろう。本出願は、インターレースビデオおよびプログレッシブビデオの効率的な圧縮および圧縮解除の手法およびツールに関する。記載の各種実施形態では、ビデオ符号化器および復号器に、インターレースビデオおよびプログレッシブビデオを符号化および復号する手法が組み込まれ、さらに、それらに対応する信号伝達手法が組み込まれる。これらの信号伝達手法は、様々なレイヤまたはレベル例えば、シーケンスレベル、フレームレベル、フィールドレベル、マクロブロックレベル、および/またはブロックレベルを含むビットストリームフォーマットまたはシンタックスに用いられる。本明細書に記載の実装形態に対する様々な代替が可能である。例えば、フローチャート図を参照して記載されている手法は、フローチャートに示されているステージの順序を変えたり、特定のステップを繰り返したり省略したりして変更することが可能である。あるいは、一部の実装形態は特定のマクロブロックフォーマットを基準にして記載されているが、他のフォーマットを用いることも可能である。さらには、順方向予測に関して記載されている手法およびツールを他のタイプの予測に適用することも可能である。これらの様々な手法およびツールは、組み合わせて用いても、別々に用いてもよい。記載の手法およびツールのうちの1つまたは複数が、様々な実施形態において実装される。本明細書に記載の手法およびツールのいくつかは、ビデオ符号化器または復号器に用いたり、ビデオの符号化または復号に特に限定されない他のシステムに用いたりすることが可能である。1.コンピューティング環境図18は、記載の実施形態のいくつかを実装することが可能な、好適なコンピューティング環境1800を一般化した例を示す。記載の手法およびツールは、多種多様な汎用または専用コンピューティング環境への実装が可能なので、コンピューティング環境1800は、使用または機能性の範囲の何らかの限定を意図するものではない。図18に示すように、コンピューティング環境1800は、少なくとも1つの処理ユニット1810とメモリ1820とを含む。図18では、この最も基本的な構成1830を破線で囲んでいる。処理ユニット1810は、コンピュータで実行可能な命令を実行し、実際のプロセッサであっても仮想のプロセッサであってもよい。マルチ処理システムでは、処理能力を高めるために複数の処理ユニットが、コンピュータで実行可能な命令を実行する。メモリ1820は、揮発性メモリ例えば、レジスタ、キャッシュ、RAMであっても、不揮発性メモリ例えば、ROM、EFPROM、フラッシュメモリなどであっても、これらの組合せであってもよい。メモリ1820は、記載の手法およびツールのうちの1つまたは複数を用いてビデオ符号化器および復号器を実装するソフトウェア1880を格納する。コンピュータ環境は、付加機能を有することが可能である。例えば、コンピューティング環境1800は、記憶装置1840、1つまたは複数の入力装置1850、1つまたは複数の出力装置1860、および1つまたは複数の通信接続1870を含む。バス、コントローラ、ネットワークなどの相互接続メカニズム図示せずが、コンピューティング環境1800の各コンポーネントを相互接続する。一般に、オペレーティングシステムソフトウェア図示せずが、コンピューティング環境1800で実行される他のソフトウェアの動作環境を提供し、コンピューティング環境1800の各コンポーネントのアクティビティを調整する。記憶装置1840は、リムーバブルであっても非リムーバブルであってもよく、磁気ディスク、磁気テープまたはカセット、CD-ROM、DVD、または他の任意の、コンピューティング環境1800内で情報を記憶するために用いられることが可能であって、アクセスされることが可能である媒体を含む。記憶装置1840は、ビデオ符号化器または復号器を実装するソフトウェア1880に対する命令を記憶する。入力装置1850としては、キーボード、マウス、ペン、トラックボールなどのタッチ入力装置、音声入力装置、スキャン装置、または他の、コンピューティング環境1800に入力を提供する装置が可能である。オーディオまたはビデオの符号化に関する入力装置1850としては、サウンドカード、ビデオカード、TVチューナカード、または同様の、オーディオまたはビデオの入力をアナログまたはデジタル形式で受け付ける装置や、オーディオまたはビデオのサンプルをコンピューティング環境1800に読み込むCD-ROMやCD-RWなどが可能である。出力装置1860としては、ディスプレイ、プリンタ、スピーカ、CDライタ、または他の、コンピューティング環境1800からの出力を提供する装置が可能である。通信接続1870は、通信媒体を経由しての、別のコンピューティングエンティティとの通信を可能にする。通信媒体は、コンピュータで実行可能な命令のような情報、オーディオまたはビデオの入力または出力、または他のデータを、変調データ信号の形で搬送する。変調データ信号は、その特性の1つまたは複数が、信号内の情報を符号化するように設定または変更される信号である。限定ではなく例として、通信媒体は、電気、光、RF、赤外線、音響、または他のキャリアを用いて実装される有線または無線技術を含む。本発明の手法およびツールは、コンピュータ可読媒体の一般的なコンテキストの形での説明が可能である。コンピュータ可読媒体は、コンピューティング環境においてアクセス可能な任意の使用可能な媒体である。限定ではなく例として、コンピュータ環境1800では、コンピュータ可読媒体は、メモリ1820、記憶装置1840、通信媒体、およびこれらの任意の組合せを含む。本発明の手法およびツールは、プログラムモジュールに含まれ、コンピューティング環境内のターゲット実プロセッサまたは仮想プロセッサで実行される、コンピュータで実行可能な命令などの一般的なコンテキストの形での説明が可能である。一般に、プログラムモジュールとしては、特定のタスクを実行したり、特定の抽象データ型を実装したりするルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造体などがある。プログラムモジュールの機能は、様々な実施形態において、必要に応じてプログラムモジュール間で結合されたり分割されたりすることが可能である。プログラムモジュールのコンピュータで実行可能な命令は、ローカルコンピューティング環境においても分散コンピューティング環境においても実行可能である。説明のための表現として、以下の詳細説明では、推定する、補償する、予測する、適用するなどの用語を、コンピューティング環境内のコンピュータ動作を記述するために用いる。これらの用語は、コンピュータによって実行される動作の高レベル抽象化であって、人間によって実行される動作と混同されてはならない。これらの用語に対応する実際のコンピュータ動作は、実装形態に応じて異なる。II.一般化されたビデオ符号化器および復号器図19は、記載の実施形態のいくつかの実装との組合せが可能な、一般化されたビデオ符号化器1900のブロック図である。図20は、記載の実施形態のいくつかの実装との組合せが可能な、一般化されたビデオ復号器2000のブロック図である。符号化器1900および復号器2000内のモジュール間の、図示した関係が、符号化器および復号器における情報の概略フローを示しており、他の関係は簡単のために図示していない。具体的には、図19および図20は、通例として、ビデオのシーケンス、ピクチャ、マクロブロック、ブロックなどに用いられる符号化器の設定、モード、テーブルなどを表す副情報を示していない。そのような副情報は、一般に、エントロピー符号化されてから出力ビットストリームの中で送られる。出力ビットストリームのフォーマットは、Windows登録商標MediaVideoバージョン9のフォーマットであっても他のフォーマットであってもよい。符号化器1900および復号器2000は、ビデオピクチャを処理するが、それらは、ビデオフレームであってもビデオフィールドであってもフレームとフィールドの組合せであってもよい。ピクチャレベルおよびマクロブロックレベルにおけるビットストリームのシンタックスおよびセマンティクスは、フレームを用いるかフィールドを用いるかによって異なってもよい。マクロブロック構成および全体のタイミングも同様に異なってもよい。符号化器1900および復号器2000は、ブロックベースであり、フレームに4:2:0マクロブロックフォーマットを用いる。各マクロブロックは、4つの8×8ルミナンスブロック1つの16×16マクロブロックとして扱われることもあると2つの8×8クロマブロックとを含む。フィールドについて用いるマクロブロック構成およびフォーマットは、同じであっても異なっていてもよい。これらの8×8ブロックは、例えば、周波数変換、エントロピー符号化などの様々なステージにおいて、さらに分割されることが可能である。ビデオフレーム構成の例については後で詳述する。あるいは、符号化器1900および復号器2000は、オブジェクトベースであり、別のマクロブロックフォーマットまたはブロックフォーマットを用いるか、8×8ブロックや16×16マクロブロックとは異なるサイズまたは構成の画素集合に対して操作を実行する。実装形態および必要な圧縮のタイプに応じて、符号化器または復号器のモジュールを追加したり、省略したり、複数のモジュールに分割したり、他のモジュールと組み合わせ、および/または同様のモジュールで置き換えたりすることが可能である。代替実施形態では、異なるモジュールおよび/または他のモジュール構成を有する符号化器または復号器が、記載の手法のうちの1つまたは複数を実施する。A.ビデオフレーム構成一部の実装形態では、符号化器1900および復号器2000は、以下のように構成されたビデオフレームを処理する。フレームは、ビデオ信号の空間情報をライン走査線の形で収容する。プログレッシブビデオの場合、これらのラインは、ある時点から始まり、連続するラインを通ってフレームの一番下まで続くサンプル群を収容する。プログレッシブビデオフレームは、図21に示すマクロブロック2100のように、マクロブロックに分割される。マクロブロック2100は、4つの8×8ルミナンスブロックY1~Y4と2つの8×8クロマブロックとを含む。2つのクロマブロックは、4つのルミナンスブロックと同じ場所にあるが、従来の4:2:0マクロブロックフォーマットに従って、水平方向および垂直方向の分解度がルミナンスブロックの半分である。これらの8×8ブロックは、例えば、周波数変換例えば、8×8、4×8、または4×4のDCTなど、エントロピー符号化などの様々なステージにおいて、さらに分割されることが可能である。プログレッシブIフレームは、イントラ符号化されたプログレッシブビデオフレームである。プログレッシブPフレームは、順方向予測を用いて符号化されたプログレッシブビデオフレームであり、プログレッシブBフレームは、双方向予測を用いて符号化されたプログレッシブビデオフレームである。プログレッシブPフレームおよびプログレッシブBフレームは、イントラ符号化されたマクロブロックだけでなく、様々なタイプの予測マクロブロックを含むことが可能である。インターレースビデオフレームは、1フレームに属する2つのスキャンで構成され、1つはフレームの偶数ライントップフィールドを含み、もう1つはフレームの奇数ラインボトムフィールドを含む。これら2つのフィールドは、異なる2つの時間帯を表すことも可能であり、同じ時間帯であることも可能である。図22Aは、インターレースビデオフレーム2200の一部を示しており、インターレースビデオフレーム2200の左上部分の、トップフィールドとボトムフィールドとで互い違いになるラインを含む。図22Bは、フレーム2230として符号化/復号するために構成された、図22Aのインターレースビデオフレーム2200を示す。インターレースビデオフレーム2200は、マクロブロック2231および2232のように、図21に示した4:2:0フォーマットを用いるマクロブロックに分割されている。ルミナンスプレーンでは、各マクロブロック2231、2232は、トップフィールドの8ラインとボトムフィールドの8ラインとが互い違いになっている合計16ラインを含み、各ラインの長さが16画素であるマクロブロック2231、2232内のルミナンスブロックおよびクロマブロックの実際の構成および配置は図示していない。これらは、実際には、符号化決定encodingdecisionsが異なれば異なる可能性がある。所与のマクロブロック内で、トップフィールド情報およびボトムフィールド情報を、任意の様々なフェーズにおいて、統合的に、または別々に符号化することが可能である。インターレースIフレームは、インターレースビデオフレームの、イントラ符号化された2つのフィールドであって、マクロブロックがその2つのフィールドの情報を含む。インターレースPフレームは、インターレースビデオフレームの、順方向予測を用いて符号化された2つのフィールドであり、インターレースBフレームは、インターレースビデオフレームの、双方向予測を用いて符号化された2つのフィールドであり、マクロブロックがその2つのフィールドの情報を含む。インターレースPフレームおよびインターレースBフレームは、イントラ符号化されたマクロブロックだけでなく、様々なタイプの予測マクロブロックを含むことが可能である。インターレースBIフレームは、インターレースIフレームおよびインターレースBフレームの混成物であり、イントラ符号化されているが、他のフレームのアンカーとしては用いられない。図22Cは、フィールド2260として符号化/復号するために構成された、図22Aのインターレースビデオフレーム2200を示す。インターレースビデオフレーム2200の2つのフィールドのそれぞれがマクロブロックに分割されている。トップフィールドは、マクロブロック2261のようなマクロブロックに分割され、ボトムフィールドは、マクロブロック2262のようなマクロブロックに分割されているこの場合も、マクロブロックは、図21に示すように、4:2:0フォーマットを用いており、マクロブロック内のルミナンスブロックおよびクロマブロックの構成および配置は図示していない。ルミナンスプレーンでは、マクロブロック2261がトップフィールドの16ラインを含み、マクロブロック2262がボトムフィールドの16ラインを含み、各ラインの長さが16画素である。インターレースIフィールドは、インターレースビデオフレームに属する、単独で表現された1つのフィールドである。インターレースPフィールドは、順方向予測を用いて符号化された、インターレースビデオフレームに属する、単独で表現された1つのフィールドであり、インターレースBフィールドは、双方向予測を用いて符号化された、インターレースビデオフレームに属する、単独で表現された1つのフィールドである。インターレースPフレームおよびインターレースBフレームは、イントラ符号化されたマクロブロックだけでなく、様々なタイプの予測マクロブロックを含むことが可能である。インターレースBIフィールドは、インターレースIフィールドおよびインターレースBフィールドの混成物であり、イントラ符号化されているが、他のフィールドのアンカーとしては用いられない。フィールドとして符号化/復号するために構成されたインターレースビデオフレームは、異なるフィールドタイプの様々な組合せを含むことが可能である。例えば、そのようなフレームは、トップフィールドとボトムフィールドの両方で同じフィールドタイプを有することや、各フィールドで異なるフィールドタイプを有することが可能である。一実装形態では、フィールドタイプの可能な組合せとして、I/I、I/P、P/I、P/P、B/B、B/BI、BI/B、BI/BIなどがある。ピクチャという用語は、一般に、ソース画像データ、符号化された画像データ、または再構成された画像データを指す。プログレッシブビデオについては、ピクチャは、プログレッシブビデオフレームである。インターレースビデオについては、ピクチャは、コンテキストに応じて、インターレースビデオフレームを指す場合、フレームのトップフィールドを指す場合、またはフレームのボトムフィールドを指す場合がある。あるいは、符号化器1900および復号器2000は、オブジェクトベースであり、別のマクロブロックフォーマットまたはブロックフォーマットを用いるか、8×8ブロックや16×16マクロブロックとは異なるサイズまたは構成の画素集合に対して操作を実行する。B.ビデオ符号化器図19は、一般化されたビデオ符号化器システム1900のブロック図である。符号化器システム1900は、現在のピクチャ1905を含むビデオピクチャ例えば、プログレッシブビデオフレーム、インターレースビデオフレーム、またはインターレースビデオフレームのフィールドのシーケンスを受け取り、圧縮ビデオ情報1995を出力として生成する。ビデオ符号化器の個々の実施形態では、一般に、一般化された符号化器1900の変形形態variationまたは強化形態supplementedversionを用いる。符号化器システム1900は、予測ピクチャおよびキーピクチャを圧縮する。説明のために、図19は、符号化器システム1900を通るキーピクチャのパスと、予測ピクチャのパスとを示す。符号化器システム1900のコンポーネントの多くは、キーピクチャと予測ピクチャの両方の圧縮に用いられる。それらのコンポーネントによって実行される動作は、厳密には、圧縮される情報のタイプによって異なる可能性がある。予測ピクチャ例えば、プログレッシブPフレームまたはBフレーム、インターレースPフィールドまたはBフィールド、またはインターレースPフレームまたはBフレームは、一般に参照ピクチャまたはアンカーと呼ばれる1つまたは複数の他のピクチャからの予測または差分の形で表現される。予測残差は、予測された内容とオリジナルピクチャとの差分である。これとは異なり、キーピクチャ例えば、プログレッシブIフレーム、インターレースIフィールド、またはインターレースIフレームは、他のピクチャを参照せずに圧縮されている。現在のピクチャ1905が順方向予測ピクチャである場合は、動き推定器motionestimator1910が、1つまたは複数の参照ピクチャ例えば、ピクチャ記憶器1920にバッファリングされている、再構成された先行ピクチャ1925を基準にして、現在のピクチャ1905のマクロブロックまたは他の画素集合の動きを推定する。現在のピクチャ1905が双方向予測ピクチャであれば、動き推定器1910が、最大4つの再構成された参照ピクチャ例えば、インターレースBフィールドの場合を基準にして、現在のピクチャ1905内の動きを推定する。一般に、動き推定器は、時間的に先行する1つまたは複数の参照ピクチャおよび時間的に後続の1つまたは複数の参照ピクチャを基準にして、Bピクチャ内の動きを推定する。したがって、符号化器システム1900は、複数の参照ピクチャのために別々の記憶装置1920および1922を用いることが可能である。プログレッシブBフレーム、およびインターレースBフレームおよびBフィールドの詳細については、AdvancedBiDirectionalPredictiveCodingofVideoFramesという名称で2003年7月18日出願の特許文献2およびAdvancedBiDirectionalPredictiveCodingofinterlacedVideoという名称で2004年6月29日出願の特許文献3を参照されたい。動き推定器1910は、1画素、1/2画素、1/4画素、または他の増分を単位として動きを推定することが可能であり、ピクチャごと、または他の区切りごとに動き推定の分解度を切り替えることが可能である。動き推定器1910および補償器1930はさらに、フレームごと、または他の区切りごとに、参照ピクチャの画素補間のタイプを例えば、双三次と双線形とで切り替えることが可能である。動き推定の分解度は、水平方向と垂直方向とで同じであっても異なってもよい。動き推定器1910は、差分動きベクトル情報などの動き情報1915を副情報として出力する。符号化器1900は、例えば、動きベクトル用の1つまたは複数のプレディクタを算出し、動きベクトルとプレディクタの間の差分を算出し、その差分をエントロピー符号化することによって、動き情報1915を符号化する。動き補償器1930が、動きベクトルを再構成するために、プレディクタと差分動きベクトル情報とを結合する。動きベクトルプレディクタの算出、差分動きベクトルの算出、および動きベクトルの再構成の様々な手法については後述する。動き補償器1930は、再構成されたピクチャ1925に、再構成された動きベクトルを適用して、動き補償された現在のピクチャ1935を形成する。予測が完全であることはまれであり、動き補償された現在のピクチャ1935と、オリジナルの現在のピクチャ1905との差分が予測残差1945である。後段の、ピクチャの再構成において、動き補償された現在のピクチャ1935に予測残差1945が加算されて、オリジナルの現在のピクチャ1905により近い、再構成されたピクチャが得られる。しかしながら、非可逆的圧縮では、オリジナルの現在のピクチャ1905から一部の情報が失われる。あるいは、動き推定器および動き補償器は、別のタイプの動き推定/補償を適用する。周波数変換器1960は、空間領域のビデオ情報を、周波数領域のすなわち、スペクトルデータに変換する。ブロックベースのビデオピクチャの場合、周波数変換器1960は、画素データまたは予測残差データのブロックにDCT、DCTの変形形態、または他のブロック変換を適用して、周波数変換係数のブロックを生成する。あるいは、周波数変換器1960は、別の従来の周波数変換例えば、フーリエ変換を適用するか、ウェーブレット解析またはサブバンド解析を用いる。周波数変換器1960は、8×8、8×4、4×8、4×4、または他のサイズの周波数変換を適用することが可能である。次に量子化器1970が、スペクトルデータ係数のブロックを量子化する。量子化器は、ピクチャごと、または他の区切りごとに異なるステップサイズを使用して、スペクトルデータに、均一のスカラ量子化を適用する。あるいは、量子化器は、別のタイプの量子化例えば、不均一量子化、ベクトル量子化、または非適応量子化nonadaptivequantizationをスペクトルデータ係数に適用するか、周波数変換を用いない符号化器システムにおいて空間領域データを直接量子化する。符号化器1900は、適応量子化に加えて、フレームドロップ、適応フィルタリング、または他のレート制御手法を用いることが可能である。符号化器1900は、スキップマクロブロック特定タイプの情報を有しないマクロブロックのために特殊な信号伝達を用いることが可能である。スキップマクロブロックについては、後で詳述する。再構成された現在のピクチャが後続の動き推定/補償に必要である場合は、逆量子化器1976が、量子化されたスペクトルデータ係数に対して逆量子化を実行する。次に逆周波数変換器1966が、周波数変換器1960とは逆の操作を実行して、予測ピクチャの再構成された予測残差または再構成されたキーピクチャを生成する。現在のピクチャ1905がキーピクチャであった場合は、再構成されたキーピクチャが、再構成された現在のピクチャ図示せずと見なされる。現在のピクチャ1905が予測ピクチャであった場合は、再構成された予測残差が、動き補償された現在のピクチャ1935に加算されて、再構成された現在のピクチャが形成される。ピクチャ記憶装置1920、1922の一方または両方が、再構成された現在のピクチャを、動き補償予測で用いるためにバッファリングする。一部の実施形態では、符号化器は、再構成されたフレームにデブロッキングフィルタを適用して、ピクチャ内の不連続部分および他のアーティファクトを適応的に平滑化する。エントロピー符号化器1980は、量子化器1970の出力ならびに特定の副情報例えば、動き情報1915、量子化ステップサイズを圧縮する。一般的なエントロピー符号化手法として、算術符号化、差分符号化、ハフマン符号化、ランレングス符号化、LZ符号化、辞書符号化、およびこれらの組合せなどがある。エントロピー符号化器1980は、一般に、様々な種類の情報例えば、DC係数、AC係数、様々な種類の副情報に対して様々な符号化手法を用い、特定の符号化手法において複数の符号テーブル間で選択することが可能である。エントロピー符号化器1980は、圧縮ビデオ情報1995をマルチプレクサ[MUX]1990に供給する。MUX1990は、バッファを含むことが可能であり、バッファレベルインジケータが、レート制御のためにビットレート適応モジュールにフィードバックされることが可能である。MUX1990の前または後で、圧縮ビデオ情報1995を、ネットワーク送信のためにチャネル符号化することが可能である。チャネル符号化では、エラーの検出および訂正のデータを圧縮ビデオ情報1995に適用追加することが可能である。C.ビデオ復号器図20は、一般化されたビデオ復号器システム2000のブロック図である。復号器システム2000は、ビデオピクチャの圧縮されたシーケンスの情報2095を受け取り、再構成されたピクチャ2005例えば、プログレッシブビデオフレーム、インターレースビデオフレーム、またはインターレースビデオフレームのフィールドを含む出力を生成する。ビデオ復号器の個々の実施形態では、一般に、一般化された復号器2000の変形形態または強化形態を用いる。復号器システム2000は、予測ピクチャおよびキーピクチャを圧縮解除する。説明のために、図20は、復号器システム2000を通るキーピクチャのパスと、順方向予測ピクチャのパスとを示す。復号器システム2000のコンポーネントの多くは、キーピクチャと予測ピクチャの両方の圧縮解除に用いられる。それらのコンポーネントによって実行される動作は、厳密には、圧縮解除される情報のタイプによって異なる可能性がある。DEMUX2090は、圧縮ビデオシーケンスの情報2095を受け取り、受け取った情報を、エントロピー復号器2080で利用できるようにする。DEMUX2090は、ジッタバッファおよび他のバッファも同様に含むことが可能である。DEMUX2090の前または後で、圧縮ビデオ情報を、エラーの検出および訂正のためにチャネル復号および処理することが可能である。エントロピー復号器2080は、エントロピー符号化された量子化データならびにエントロピー符号化された副情報例えば、動き情報2015、量子化ステップサイズをエントロピー復号する。これには、一般に、符号化器で実行されたエントロピー符号化の逆が適用される。エントロピー復号手法として、算術復号、差分復号、ハフマン復号、ランレングス復号、LZ復号、辞書復号、およびこれらの組合せなどがある。エントロピー復号器2080は、一般に、様々な種類の情報例えば、DC係数、AC係数、様々な種類の副情報に対して様々な復号手法を用い、特定の復号手法において複数の符号テーブル間で選択することが可能である。復号器2000は、例えば、動きベクトルの1つまたは複数のプレディクタを算出し、差分動きベクトルをエントロピー復号し、復号された差分動きベクトルをプレディクタと結合して動きベクトルを再構成することによって、動き情報2015を復号する。動き補償器2030が、再構成されるピクチャ2005の予測2035を形成するために、動き情報2015を1つまたは複数の参照ピクチャ2025に適用する。例えば、動き補償器2030は、参照ピクチャ2025内のマクロブロックを見つけるために、1つまたは複数のマクロブロック動きベクトルを用いる。1つまたは複数のピクチャ記憶装置例えば、ピクチャ記憶装置2020、2022が、既に再構成されているピクチャを参照ピクチャとして記憶する。一般に、Bピクチャは、複数の参照ピクチャ例えば、少なくとも1つの、時間的に先行する参照ピクチャと、少なくとも1つの、時間的に後続の参照ピクチャを有する。したがって、復号システム2000は、複数の参照ピクチャのために別々のピクチャ記憶装置2020および2022を用いることが可能である。動き補償器2030は、1画素、1/2画素、1/4画素、または他の増分を単位として動きを補償することが可能であり、ピクチャごと、または他の区切りごとに動き補償の分解度を切り替えることが可能である。動き補償器2030はさらに、フレームごと、または他の区切りごとに、参照ピクチャの画素補間のタイプを例えば、双三次と双線形とで切り替えることが可能である。動き補償の分解度は、水平方向と垂直方向とで同じであっても異なってもよい。あるいは、動き補償器は、別のタイプの動き補償を適用する。動き補償器による予測が完全であることはまれなので、復号器2000はさらに、予測残差を再構成する。逆量子化器2070が、エントロピー復号されたデータを逆量子化する。一般に、逆量子化器は、ピクチャごと、または他の区切りごとに異なるステップサイズを使用して、エントロピー復号されたデータに、均一のスカラ逆量子化を適用する。あるいは、逆量子化器は、別のタイプの逆量子化例えば、不均一逆量子化、ベクトル逆量子化、または非適応逆量子化をデータに適用して、その後に再構成したり、逆周波数変換を用いない復号器システムにおいて空間領域データを直接逆量子化したりする。逆周波数変換器2060が、量子化された周波数領域データを空間領域ビデオ情報に変換する。ブロックベースのビデオピクチャについては、逆周波数変換器2060は、逆DCT[IDCT]、IDCTの変形形態、または他の逆ブロック変換を周波数変換係数のブロックに適用して、キーピクチャの画素データ、または予測ピクチャの予測残差データを生成する。あるいは、逆周波数変換器2060は、別の従来の逆周波数変換例えば、逆フーリエ変換を適用するか、ウェーブレット解析またはサブバンド解析を用いる。逆周波数変換器2060は、8×8、8×4、4×8、4×4、または他のサイズの逆周波数変換を適用することが可能である。予測ピクチャについては、復号器2000は、再構成された予測残差2045を動き補償予測2035と組み合わせて、再構成されたピクチャ2005を形成する。復号器において、再構成されたピクチャ2005が後続の動き補償に必要な場合は、一方または両方のピクチャ記憶装置例えば、ピクチャ記憶装置2020が、再構成されたピクチャ2005を、次のピクチャの予測に用いるためにバッファリングする。一部の実施形態では、復号器2000は、再構成されたピクチャにデブロッキングフィルタを適用して、ピクチャ内の不連続部分および他のアーティファクトを適応的に平滑化する。III.インターレースPフレーム一般的なインターレースビデオフレームは、異なる時刻にスキャンされた2つのフィールド例えば、トップフィールドとボトムフィールドからなる。一般に、インターレースビデオフレームの静止領域を符号化する場合は、フィールドをまとめて符号化フレームモード符号化するのが効率的である。一方、インターレースビデオフレームの、動きのある領域を符号化する場合は、フィールドを別々に符号化フィールドモード符号化するのが効率的である場合が多い。これは、2つのフィールドがそれぞれ異なる動きを有する傾向があるからである。順方向予測インターレースビデオフレームは、2つの別々の順方向予測フィールドインターレースPフィールドとして符号化されることが可能である。順方向予測インターレースビデオフレームのフィールドを別々に符号化することは、例えば、インターレースビデオフレーム全体で動きが多く、したがって、フィールド間の差分が大きい場合に効率的である可能性がある。インターレースPフィールドは、既に復号されている1つまたは複数のフィールドを参照する。例えば、一部の実装形態では、インターレースPフィールドは、1つまたは2つの、既に復号されているフィールドを参照する。インターレースPフィールドの詳細については、VideoEncodingandDecodingToolsandTechniquesという名称で2003年9月7日出願の特許文献4およびPredictingMotionVectorsforFieldsofForwardpredictedInterlacedVideoFramesという名称で2004年5月27日出願の特許文献5を参照されたい。または、順方向予測インターレースビデオフレームは、インターレースPフレームのように、フィールド符号化とフレーム符号化の混在を用いて符号化されることが可能である。インターレースPフレームのマクロブロックの場合、マクロブロックは、トップフィールドおよびボトムフィールドの画素のラインを含み、これらのラインは、フレーム符号化モードで一括して符号化されるか、フィールド符号化モードで別々に符号化されることが可能である。A.インターレースPフレームのマクロブロックタイプ一部の実装形態では、インターレースPフレームのマクロブロックは、1MV、2フィールドMV、4フレームMV、4フィールドMV、およびイントラの5タイプのいずれかであることが可能である。1MVマクロブロックの場合は、マクロブロック内の4つのルミナンスブロックの変位が単一の動きベクトルで表される。そのルミナンス動きベクトルから、対応するクロマ動きベクトルが導出されることが可能であり、それによって、動きベクトルの2つの8×8クロマブロックのそれぞれの変位が表される。例えば、図21に示したマクロブロック配置を再度参照すると、1MVマクロブロック2100は、4つの8×8ルミナンスブロックと2つの8×8クロマブロックとを含む。ルミナンスブロックY1~Y4の変位は単一の動きベクトルによって表される。対応するクロマ動きベクトルはそのルミナンス動きベクトルから導出され、それによって2つのクロマブロックUおよびVのそれぞれの変位が表されることが可能である。2フィールドMVマクロブロックの場合は、マクロブロック内の16×16ルミナンス成分の各フィールドの変位が、それぞれ異なる動きベクトルによって表される。例えば、図23は、トップフィールド動きベクトルがルミナンス成分の偶数ラインの変位を表し、ボトムフィールド動きベクトルがルミナンス成分の奇数ラインの変位を表すことを示している。符号化器は、トップフィールド動きベクトルを用いて、クロマブロックの偶数ラインの変位を表す、対応するトップフィールドクロマ動きベクトルを導出することが可能である。同様に符号化器は、クロマブロックの奇数ラインの変位を表すボトムフィールドクロマ動きベクトルを導出することが可能である。図24に示すように、4フレームMVマクロブロックの場合は、4つのルミナンスブロックのそれぞれの変位が、それぞれ異なる動きベクトルMV1、MV2、MV3、およびMV4によって表される。各クロマブロックは、4つの4×4クロマサブブロックの変位を表す、導出された4つのクロマ動きベクトルMV1’、MV2’、MV3’、およびMV4’を用いて動き補償されることが可能である。各4×4クロマサブブロックの動きベクトルが、空間的に対応するルミナンスブロックの動きベクトルから導出されることが可能である。図25に示すように、4フィールドMVマクロブロックの場合は、16×16ルミナンス成分の各フィールドの変位が、異なる2つの動きベクトルによって表される。ルミナンス成分のラインが縦に分割されて2つの8×16領域が形成され、各領域は、インターリーブしている、偶数ラインの8×8領域と奇数ラインの8×8領域とからなる。偶数ラインについては、左側の8×8領域の変位がトップ左フィールドブロック動きベクトルによって表され、右側の8×8領域の変位がトップ右フィールドブロック動きベクトルによって表される。奇数ラインについては、左側の8×8領域の変位がボトム左フィールドブロック動きベクトルによって表され、右側の8×8領域の変位がボトム右フィールドブロック動きベクトルによって表される。各クロマブロックはさらに4つの領域に分割されることが可能であり、各クロマブロック領域は、導出された動きベクトルを用いて動き補償されることが可能である。イントラマクロブロックの場合は、動きがゼロであると見なされる。B.インターレースPフレームの動きベクトルプレディクタの算出一般に、インターレースPフレームの現在のマクロブロックの動きベクトルプレディクタを算出する処理は、2つのステップからなる。第1のステップでは、現在のマクロブロックに対する最大3つの候補動きベクトルを、現在のマクロブロックに隣接するマクロブロックから収集する。例えば、一実装形態では、図26A~26Bおよび、一番上の行のマクロブロックなど、様々な特殊ケースで示される配置に基づいて候補動きベクトルを収集する。あるいは、ある別の順序または配置で候補動きベクトルを収集することも可能である。第2のステップでは、候補動きベクトルの集合から、現在のマクロブロックの動きベクトルプレディクタを算出する。例えば、3のメジアン予測または他の何らかの方法を用いてプレディクタを算出することが可能である。IV.インターレースPフレームの動きベクトル予測における新機軸動きベクトル予測の処理は、概念的に2つのステップに分けることが可能である。まず、候補動きベクトルの集合を、隣接するブロックから収集し、適切であれば、現在の動きベクトルに用いられる予測のタイプに応じて、しかるべきタイプに変換する。次に、候補動きベクトルの集合から動きベクトルプレディクタを導出する。後で詳述するように、現在の動きベクトルプレディクタは、様々な方法で、候補動きベクトルから導出されることが可能である。例えば、有効な候補動きベクトルの全集合に対してメジアン演算を実行すること、有効な候補動きベクトルの全集合が使用可能でない場合には候補動きベクトルの1つを単に選択すること、または他の何らかの方法によって、可能である。セクションIIIで説明したように、インターレースPフレームの各マクロブロックは、1つのフレーム動きベクトル、4つのフレーム動きベクトル、2つのフィールド動きベクトル、または4つのフィールド動きベクトル、を用いて動き補償されることが可能である。各フィールド動きベクトルは、他のフィールド動きベクトルがどのフィールドを参照するかに関係なく、参照フレームのトップフィールドまたはボトムフィールドのいずれかを参照することが可能である。一部の実装形態では、現在のマクロブロックまたはブロック、またはそのフィールドの現在の動きベクトルの動きベクトルプレディクタを導出するために、動きベクトル予測において様々な要因が考慮される。それらは、例えば、隣接するマクロブロックまたはブロックの動きベクトルおよび動き予測タイプ、現在の動きベクトルタイプなどである。記載の実施形態は、限定されないが、以下を含むインターレースフレーム符号化されたピクチャの動きベクトルを予測、符号化、および復号する記載の手法およびツールの1つまたは複数を実装する。1.例えば、1MV、4フレームMV、2フィールドMV、および/またはイントラなどの他のマクロブロックタイプとの組合せで4つのフィールド動きベクトルを用いてインターレースPフレームのマクロブロックを予測すること。2.メジアン演算の使用を、3つの候補隣接動きベクトルがすべて使用可能なケースのみに限定し、その他のケースでは、あらかじめ指定された順序で隣接動きベクトルの1つを取得することによって動きベクトル予測を改善すること。3.フィールド動きベクトルについては、正当な候補動きベクトルlegalcandidatemotionvectorsの収集時にフィールド極性を考慮すること。記載の手法およびツールは、互いに組み合わせて用いたり、他の手法およびツールと組み合わせて用いたり、単独で用いたりすることが可能である。A.インターレースPフレームの4フィールドMVマクロブロック一部の実装形態では、符号化器/復号器は、インターレースPフレームの、4つのフィールド動きベクトルを有するマクロブロック例えば、4フィールドMVマクロブロックを処理する。4フィールドMVマクロブロックは、インターレースPフレームのフィールド符号化されたマクロブロックの動き推定および動き補償に関して動きへの空間適応性を改善する。例えば、図27は、インターレースPフレームの、4つのフィールド動きベクトルを有するマクロブロックを処理する手法2700を示す。2710で、符号化器/復号器が、インターレースPフレームのマクロブロックの4つのフィールド動きベクトルの動きベクトル情報例えば、動きベクトル差分、動きベクトル値を受け取る。次に2720で、符号化器/復号器が、4つのフィールド動きベクトルを用いて例えば、マクロブロックを再構成することによってマクロブロックを処理する。あるいは、符号化器/復号器が、4フィールドMVマクロブロックを用いずにインターレースPフレームの動き推定/補償を実行する。B.候補動きベクトルの収集一部の実装形態では、候補動きベクトルを収集する順序が重要である。例えば、図26A~図26Bに示すように、インターレースPフレームの現在のマクロブロックの3つの候補動きベクトルが、現在のマクロブロックに隣接するマクロブロックから収集される。一実装形態では、収集の順序は、隣接するマクロブロックAで始まり、マクロブロックBに進み、マクロブロックCで終了する。図41~図51の擬似コードは、一実装形態において候補動きベクトルがどのように収集されるかを示している。符号化器/復号器は、隣接するマクロブロックをチェックして、それらが、ブロック、マクロブロックのフィールド、またはマクロブロックの半フィールドを含む現在のマクロブロックの動きベクトルを予測するという目的のために存在するすなわち、有効かどうかを決定する。対応するマクロブロック/ブロックがフレーム境界の外側にある場合、または対応するマクロブロック/ブロックが別のスライスの一部である場合、プレディクタ候補は存在しないすなわち、有効ではないと見なされる。したがって、動きベクトル予測は、スライス境界にまたがっては実行されない。図41~図51に示すように、隣接するマクロブロックが有効であって、イントラ符号化されていない場合は、隣接するマクロブロックからの動きベクトルが候補動きベクトルの集合に追加される。候補の集合に追加される実際の動きベクトルは、現在のマクロブロックに対する、隣接するマクロブロックの位置例えば、位置A、B、またはCと、隣接するマクロブロックおよび現在のマクロブロックの両方のタイプ例えば、1MV、4フレームMV、2フィールドMV、または4フレームMVとに依存する。図41の擬似コード4100は、一実装形態において1MVマクロブロック内の現在の動きベクトル用の最大3つの候補動きベクトルがどのように収集されるかを示している。図42、図43、図44、および図45の擬似コード4200、4300、4400、および4500は、それぞれ、一実装形態において、現在の4フレームMVマクロブロック内の4つのフレームブロック動きベクトルのそれぞれに対して、隣接するマクロブロック/ブロックから候補動きベクトルがどのように収集されるかを示している。この実装形態では、符号化器/復号器は、擬似コード4200、4300、4400、および4500に示されたアルゴリズムを用いて、それぞれ、左上のフレームブロック動きベクトル、右上のフレームブロック動きベクトル、左下のフレームブロック動きベクトル、および右下のフレームブロック動きベクトルの最大3つの候補動きベクトルを収集する。図46および47の擬似コード4600および4700は、それぞれ、一実装形態において、現在の2フィールドMVマクロブロックの2つのフィールド動きベクトルのそれぞれに対して、隣接するマクロブロックから候補動きベクトルがどのように収集されるかを示している。この実装形態では、符号化器/復号器は、擬似コード4600および4700に示されたアルゴリズムを用いて、それぞれ、トップフィールド動きベクトルおよびボトムフィールド動きベクトルに対して最大3つの候補動きベクトルを収集する。図48、49、50、および51の擬似コード4800、4900、5000、および5100は、それぞれ、一実装形態において、現在の4フィールドMVマクロブロックの4つのフィールドブロック動きベクトルのそれぞれに対して、隣接するマクロブロック/ブロックから候補動きベクトルが収集される様子を示している。この実装形態では、符号化器/復号器は、擬似コード4800、4900、5000、および5100に示されたアルゴリズムを用いて、それぞれ、左上のフィールドブロック動きベクトル、右上のフィールドブロック動きベクトル、左下のフィールドブロック動きベクトル、および右下のフィールドブロック動きベクトルに対して最大3つの候補動きベクトルを収集する。選択された候補動きベクトルが、実際に、隣接するマクロブロックの動きベクトルの平均となる場合がある。一実装形態では、2つのフィールド動きベクトルMVX1,MVY1およびMVX2,MVY2に対して、平均演算が行われて、次のように候補フレーム動きベクトルMVXA,MVYAが形成される。MVXA=MVX1MVX21>>1MVYA=MVY1MVY21>>1あるいは、図41~51に示されたものとは異なる収集規則に従って候補動きベクトルを収集することが可能である。例えば、複数の動きベクトルを有する、隣接するマクロブロック例えば、4フレームMV、2フィールドMV、または4フィールドMVマクロブロックから候補として選択される特定の動きベクトルを変更することが可能である。別の例として、候補の集合における動きベクトルの順序を、記載のA-B-Cから別の何らかの順序に調整することが可能である。C.候補動きベクトルからのフレームMVプレディクタの算出図52の擬似コード5200は、一実装形態においてフレーム動きベクトルに対して動きベクトルプレディクタPMVx,PMVyが算出される様子を示している。擬似コード5200では、TotalValidMVは、候補動きベクトルの集合にある有効な動きベクトルの総数を表しておりTotalValidMV=0、1、2または3、ValidMV配列は、候補動きベクトルの集合にある有効な動きベクトルを含む。一実装形態では、擬似コード5200を用いて、1MVマクロブロックの動きベクトル、ならびに4フレームMVマクロブロックの4つのフレームブロック動きベクトルのそれぞれについて、候補動きベクトルの集合からプレディクタが算出される。D.候補動きベクトルからのフィールドMVプレディクタの算出このセクションでは、候補動きベクトルの集合に対してフィールド動きベクトルの動きベクトルプレディクタを算出する手法およびツールについて説明する。このセクションで説明する手法およびツールを用いることにより、2フィールドMVマクロブロックの2つのフィールド動きベクトルのそれぞれについて、ならびに4フィールドMVマクロブロックの4つのフィールド動きベクトルのそれぞれについて、プレディクタを算出することが可能である。一部の実装形態では、符号化器/復号器が、プレディクタの算出時に候補動きベクトルによって参照されるフィールドの極性を考慮する。図28は、候補動きベクトルの極性に基づいて、フィールド符号化されたマクロブロックの動きベクトルプレディクタを算出する手法2800を示している。2810で、符号化器/復号器は、現在のマクロブロックの現在のフィールドのフィールド動きベクトルを予測するための候補動きベクトルを決定する。2820で、符号化器/復号器が、1つまたは複数の有効な候補のフィールド極性を決定する。次に2830で、符号化器/復号器は、1つまたは複数の有効な候補のフィールド極性に少なくとも部分的に基づいて、フィールド動きベクトルの動きベクトルプレディクタを算出する。例えば、一実装形態では、候補動きベクトルは2つの集合に分けられる。一方の集合には、現在のフィールドと同じフィールドをポイントする動きベクトルだけが含まれ、もう一方の集合には、反対のフィールドをポイントする動きベクトルが含まれる。次に符号化器/復号器は、その2つの集合のうちの一方を用いて動きベクトルプレディクタを算出する。図28には示していないが、現在のマクロブロックの動きベクトルプレディクタを算出する処理を、そのマクロブロックの各動きベクトルについて、およびフレーム内の他のマクロブロックについて、繰り返すことが可能である。動きベクトルが1/4画素単位で表現されていると仮定すると、符号化器/復号器は、候補動きベクトルが現在のフィールドの極性に対して同じフィールドをポイントするか、反対のフィールドをポイントするかを、そのy成分に対して以下のチェックを実行することによって調べることが可能である。上記の擬似コードにおいて、ValidMVyは、1/4画素単位で測定された、候補動きベクトルのy成分である。したがって、バイナリでは、ValidMVyの最下位ビットが1/4画素ビット、第2下位ビットthesecondleastsignificantbitが1/2画素ビット、第3下位ビットthethirdleastsignificantbitがフル画素ビットである。したがって、ビットごとのAND演算ValidMVy4は、フル画素ビットが1奇数の整数を示すか0偶数の整数を示すかを決定する。整数オフセットが奇数であれば、候補動きベクトルは、参照フレームの、反対の極性のフィールドを参照する。整数オフセットが偶数であれば、候補動きベクトルは、参照フレームの、同じ極性のフィールドを参照する。代替の手法では、候補動きベクトルの極性が別の何らかの方法で決定されるか、動きベクトルプレディクタの算出時に候補の極性が考慮されない。図53の擬似コード5300は、一実装形態においてフィールド動きベクトルに対して動きベクトルプレディクタPMVx,PMVyがどのように算出されるかを示している。擬似コード5300では、SameFieldMV[]およびOppFieldMV[]が、候補動きベクトルの2つの集合を表し、NumSameFieldMVおよびNumOppFieldMVが、各集合に属する候補動きベクトルの数を表す。擬似コード5300に示された例では、それらの集合にある使用可能な候補動きベクトルの数に応じて、動きベクトルプレディクタの算出にメジアン演算を用いるかどうかが決定される。図29は、フィールド動きベクトルの動きベクトルプレディクタを算出する際にメジアン演算を実行するかどうかを決定する手法2900を示す。2910で、符号化器/復号器が、現在のマクロブロックのフィールド動きベクトルを予測するための有効な候補動きベクトルの数を決定する。2920で、有効な候補動きベクトルが3つ存在すれば、2930で、プレディクタの算出時にメジアン演算を用いることが可能である。有効な候補が3つ存在しない場合すなわち、有効な候補が2つ以下の場合は、2940で、別の方法を用いてメジアン演算を用いずに、使用可能な有効な候補の中から動きベクトルプレディクタを選択する。擬似コード5300の例では、符号化器/復号器は、3つの候補動きベクトルがすべて有効な場合、および3つの有効な候補動きベクトルがすべてが同じ極性の候補動きベクトルである場合に、候補のx成分またはy成分に対してメジアン演算例えば、median3を実行することによって動きベクトルプレディクタを導出する。3つの候補動きベクトルのすべてが有効であっても、それらのすべてが同じ極性の候補動きベクトルということではない場合、符号化器/復号器は、動きベクトルプレディクタを導出するために、候補を最も多く有する集合を選択する。両方の集合が同数の候補を有する場合、符号化器/復号器は、集合SameFieldMV[]を用いる。候補の数が3未満の場合、符号化器/復号器は、選択された集合から、あらかじめ指定された順序で1番目の候補を選択する。この例では、各集合の候補動きベクトルの順序は、候補Aが存在すれば候補Aから始まり、候補Bが存在すれば候補Bがそれに続き、候補Cが存在すれば候補Cがその次である。例えば、符号化器/復号器が集合SameFieldMV[]を用いる場合で、集合SameFieldMV[]が候補Bおよび候補Cだけを含む場合、符号化器/復号器は、候補Bを動きベクトルプレディクタとして用いる。有効な候補の数がゼロの場合、符号化器/復号器は、プレディクタを0,0に設定する。あるいは、上述の方法以外の方法で動きベクトルプレディクタを算出することも可能である。例えば、擬似コード5300は同じフィールドの候補を選択することへのバイアスを含むが、そのバイアスを除去するように、または反対のフィールドへのバイアスを用いるように、プレディクタの算出を調整することが可能である。別の例として、メジアン演算をより多くの状況例えば、有効なフィールド動きベクトル候補が2つ存在する場合で用いることも、まったく用いないことも可能であり、また、2つの有効な候補に対する非メジアン演算として平均演算を用いることも可能である。さらに別の例として、集合内の候補の順序を調整したり、すべての候補を1つの集合に格納したりすることも可能である。V.インターレースフレーム符号化されたピクチャのマクロブロック情報の信号伝達における新機軸記載の実施形態は、インターレースフレーム符号化されたピクチャ例えば、インターレースPフレーム、インターレースBフレーム、その他のマクロブロック情報を信号伝達する手法およびツールを含む。例えば、記載の手法およびツールは、インターレースPフレームのマクロブロック情報を信号伝達する手法およびツールと、インターレースPフレームおよび他のインターレースピクチャ例えば、インターレースBフレーム、インターレースPフィールド、インターレースBフィールド、その他のスキップマクロブロックを使用および信号伝達する手法およびツールとを含む。記載の実施形態は、限定されないが以下を含む記載の手法およびツールの1つまたは複数を実装する。1.インターレースPフレームについて、動き補償タイプ例えば、1フレームMV、4フレームMV、2フィールドMV、4フィールドMV、その他および場合によって他の情報を、例えば、マクロブロックレベルのシンタックス要素MBMODEを用いるフィールド/フレーム符号化タイプ情報と統合的に符号化すること。2.マクロブロックスキップ条件を信号伝達すること。この信号伝達は、MBMODEなどの他のシンタックス要素とは別に行われることが可能である。スキップ条件は、マクロブロックが1MVマクロブロックであること、ゼロの差分動きベクトルを有すること、および符号化されたブロックを有しないこと、を示す。スキップ情報は、圧縮されたビットプレーンの形で符号化されることが可能である。記載の手法およびツールは、互いに組み合わせて用いたり、他の手法およびツールと組み合わせて用いたり、単独で用いたりすることが可能である。A.スキップマクロブロックの信号伝達一部の実装形態では、符号化器がスキップマクロブロックを信号伝達する。例えば、マクロブロックが1つの動きベクトルによって符号化され、ゼロの動きベクトル差分を有し、符号化されたブロックを有しないすなわち、すべてのブロックにおいて残差がない場合に、符号化器が、インターレースフレームのスキップマクロブロックを信号伝達する。スキップ情報は、圧縮されたビットプレーンとして例えば、フレームレベルで符号化されたり、マクロブロックごとに1ビットずつで例えば、マクロブロックレベルで信号伝達されたりすることが可能である。マクロブロックのスキップ条件の信号伝達は、マクロブロックのマクロブロックモードの信号伝達とは別に行われる。復号器は、対応する復号を行う。ここでのスキップマクロブロックの定義は、マクロブロックの符号化に複数の動きベクトルが用いられる場合には、すべての動きベクトル差分がゼロであって、すべてのブロックが符号化されないということがまず起こらないので、そのマクロブロックがスキップされることはほとんどないという経験的な知識を利用している。したがって、マクロブロックがスキップされているとして信号伝達される場合には、マクロブロックモード1MVがスキップ条件から暗示されるので、そのマクロブロックに関してはマクロブロックモードを信号伝達する必要がない。インターレースPフレームの場合、1MVマクロブロックは、1つのフレーム動きベクトルを用いて動き補償される。図30は、インターレース予測フレーム例えば、インターレースPフレーム、インターレースBフレーム、または、インターレースPフィールドおよび/またはインターレースBフィールドを含むフレームにある特定のマクロブロックの符号化をスキップするかどうかを決定する手法3000を示す。符号化器は、3010で、所与のマクロブロックについて、そのマクロブロックが1MVマクロブロックかどうかを調べる。マクロブロックが1MVマクロブロックでない場合、符号化器は、3020で、そのマクロブロックをスキップしない。1MVマクロブロックである場合、符号化器は、3030で、そのマクロブロックの1つの動きベクトルが、それの因果関係的に予測された動きベクトルと等しいかどうか例えば、そのマクロブロックの差分動きベクトルがゼロに等しいかどうかを調べる。マクロブロックの動きが、因果的に予測された動きと等しくない場合、符号化器は、3040で、そのマクロブロックをスキップしない。等しい場合、符号化器は、3050で、そのマクロブロックの複数のブロックについて、符号化すべき残差がないかどうかを調べる。符号化すべき残差がある場合、符号化器は、3060で、そのマクロブロックをスキップしない。マクロブロックのブロックの残差がない場合、符号化器は、3070で、そのマクロブロックをスキップする。3080で、符号化器は、符号化が完了するまで、マクロブロックを符号化またはスキップすることを続けることが可能である。一実装形態では、マクロブロックレベルのSKIPMBBITフィールドSKIPMBなどとラベル付けされることも可能は、マクロブロックのスキップ条件を示す。SKIPMBBITフィールドが1であれば、現在のマクロブロックはスキップされており、SKIPMBBITフィールドの後に他の情報が送られない。これに対し、SKIPMBBITフィールドが1でない場合は、MBMODEフィールドが、マクロブロックのタイプと現在のマクロブロックに関する他の情報セクションV.B.で後述する情報などとを示すように復号される。フレームレベルでは、SKIPMBフィールドは、フレーム内のマクロブロックのスキップ情報を示す。一実装形態では、スキップ情報は、いくつかのモードのうちの1つのモードで符号化されることが可能である。例えば、raw符号化モードでは、SKIPMBフィールドは、SKIPMBBITがマクロブロックレベルに存在することを示す。ビットプレーン符号化モードでは、SKIPMBフィールドは、スキップ情報を圧縮されたビットプレーンの形で格納する。使用可能なビットプレーン符号化モードとして、normal-2モード、differential-2モード、normal-6モード、differential-6モード、rowskipモード、columnskipモードなどがある。ビットプレーン符号化モードについては、後のセクションVIIで詳述する。復号されたSKIPMBビットプレーンは、マクロブロックごとに1ビットを含み、各ビットがそれぞれのマクロブロックのスキップ条件を示す。あるいは、スキップマクロブロックは、他の何らかの方法で信号伝達されたり、ビットストリーム内の他のいずれかのレベルで信号伝達されたりする。例えば、圧縮されたビットプレーンはフィールドレベルで送られる。さらに別の代替として、スキップ条件は、前述の情報以外に、かつ/または前述の情報に加えて、スキップマクロブロックに関する情報を暗示するように定義されることが可能である。B.マクロブロックモードの信号伝達一部の実装形態では、符号化器が、マクロブロックの動き補償タイプおよび場合によってマクロブロックに関する他の情報を、そのマクロブロックのフィールド/フレーム符号化タイプ情報と統合的に符号化する。例えば、符号化器は、1つまたは複数の可変長符号化テーブルを用いて、5つの動き補償タイプ1MV、4フレームMV、2フィールドMV、4フィールドMV、およびイントラのうちの1つを、フィールド変換/フレーム変換/符号化ブロックなしイベントと統合的に符号化する。復号器は、対応する復号を行う。マクロブロックの動き補償タイプ情報とフィールド/フレーム符号化タイプ情報とを統合的に符号化することは、特定のフィールド/フレーム符号化タイプが、所与の動き補償タイプのマクロブロックの特定のコンテキストにおいて発生する可能性がより高いという経験的な知識を利用している。そこで、可変長符号化を用いて、動き補償タイプとフィールド/フレーム符号化タイプとの、より可能性の高い組合せに、より短い符号を割り当てることが可能である。さらに柔軟性を高めるために、複数の可変長符号化テーブルを用いることが可能であり、符号化器が状況に応じてテーブルを切り替えることが可能である。したがって、マクロブロックの動き補償タイプ情報とフィールド/フレーム符号化タイプ情報とを統合的に符号化することは、そうしない場合にフィールド/フレーム符号化タイプをマクロブロックごとに別々に信号伝達するために用いられる符号化オーバーヘッドを切り詰めることが可能になる。例えば、一部の実装形態では、符号化器は、マクロブロックについて、動き補償タイプ例えば、1MV、4フレームMV、2フィールドMV、または4フィールドMVとフィールド/フレーム符号化タイプ例えば、フィールド、フレーム、または符号化ブロックなしとを選択する。符号化器は、マクロブロックの動き補償タイプおよびフィールド/フレーム符号化タイプを統合的に符号化する。符号化器はさらに、他の情報を、動き補償タイプおよびフィールド/フレーム符号化タイプと統合的に符号化することが可能である。例えば、符号化器は、例えば、1つの動きベクトルを有するマクロブロックについてマクロブロックの差分動きベクトルが存在するかどうかを示す情報を統合的に符号化することが可能である。復号器は、対応する復号を行う。例えば、図31は、一部の実装形態において、インターレースPフレームのマクロブロックの、統合的に符号化された動き補償タイプ情報およびフィールド/フレーム符号化タイプ情報を復号する手法3100を示している。3110で、復号器が、マクロブロックの動き補償タイプおよびフィールド/フレーム符号化タイプを表す統合符号例えば、可変長符号化テーブルからの可変長符号を含むマクロブロック情報を受け取る。3120で、復号器は、例えば、可変長符号化テーブルで統合符号をルックアップすることにより統合符号を復号して、マクロブロックの動き補償タイプ情報およびフィールド/フレーム符号化タイプ情報を取得する。一実装形態では、マクロブロックレベルのビットストリーム要素MBMODEは、マクロブロックのタイプ1MV、4フレームMV、2フィールドMV、4フィールドMV、またはイントラ、インター符号化されたマクロブロックのフィールド/フレーム符号化タイプフィールド、フレーム、または符号化ブロックなし、および1MVマクロブロックの場合は差分動きベクトルが存在するかどうかを統合的に指定する。この例では、MBMODEは、15個の可能な値のうちの1つを取得することが可能である。非ゼロの1MV差分動きベクトルが存在するかどうかの信号伝達を<MVP>で表し、マクロブロックの残差が1フレーム符号化されているか、2フィールド符号化されているか、または3符号化されていないブロックかすなわち、CBP=0かの信号伝達を<Field/Frametransform>で表すと、MBMODEは、次の情報を統合的に信号伝達する。<1MV,MVP=0,CBP=0>というケースはMBMODEによっては信号伝達されないが、スキップ条件によって信号伝達されるこのスキップ条件の信号伝達の例は、セクションV.A.で既に示した。この例では、インター符号化されたマクロブロックについて、MBMODEの<Field/frameTransform>が、符号化されたブロックがないことを示している場合には、CBPCYシンタックス要素は復号されない。一方、MBMODEの<Field/frameTransform>がフィールド変換またはフレーム変換を示している場合には、CBPCYが復号される。1MVではないインター符号化されたマクロブロックの場合は、どの差分動きベクトルが非ゼロかを示すために追加フィールドが送られる。2フィールドMVマクロブロックの場合は、2つの動きベクトルのうちのどれが非ゼロの差分動きベクトルを含むかを示すために2MVBPフィールドが送られる。同様に、4つの動きベクトルのうちのどれが非ゼロの差分動きベクトルを含むかを示すために4MVBPフィールドが送られる。イントラ符号化されたマクロブロックの場合は、フィールド/フレーム符号化タイプと、符号化されていないブロックとが別々のフィールドで符号化される。あるいは、符号化器/復号器は、動き補償タイプおよびフィールド/フレーム符号化タイプの様々な組合せによる統合符号化を用いる。さらに別の代替として、符号化器/復号器は、動きベクトル差分の存在以外の追加情報を統合的に符号化/復号する。一部の実装形態では、符号化器/復号器は、いくつかの可変長符号テーブルの1つを用いてMBMODEを符号化するが、符号テーブルを適応的に切り替えることが可能である。例えば、一部の実装形態では、フレームレベルのシンタックス要素MBMODETABが、フレーム内のマクロブロックのMBMODEの復号に用いられるテーブルを示す2ビットフィールドである。この例では、それらのテーブルが4つずつのテーブルの集合に分けられ、どのテーブルの集合が用いられるかは、そのフレームに対して4動きベクトル符号化が有効かどうかに依存する。例示的なMBMODE可変長符号テーブル例えば、各集合についてのテーブル0~3-混在MVまたは1MVを以下の表1~8に示す。VI.クロマ動きベクトルの導出における新機軸記載の実施形態は、ルミナンス動きベクトルからクロマ動きベクトルを導出する手法およびツールを含む。記載の手法およびツールのいくつかは、フレーム符号化されたインターレースピクチャ例えば、インターレースPフレーム、インターレースBフレーム、その他におけるクロマ動きベクトルの導出に関連し、インターレースフレーム符号化されたピクチャのレート/歪み性能を向上させる。記載の手法およびツールでは、クロマ動きベクトルは、明示的にはビットストリーム内で送られない。その代わりに、クロマ動きベクトルは、フレームのマクロブロックまたはブロックに関して符号化されて送られるルミナンス動きベクトルから導出される。記載の実施形態は、限定されないが、以下を含む記載の手法およびツールの1つまたは複数を実装する。1.符号化器/復号器が、マクロブロック内の各ルミナンス動きベクトルに対してクロマ動きベクトルを導出することにより、インターレースフレーム符号化されたピクチャ例えば、インターレースPフレーム、インターレースBフレーム、その他におけるルミナンス動きベクトルとクロマ動きベクトルとの間の1対1対応を取得する。このクロマ動きベクトルを用いて、それぞれのクロマブロックまたはクロマフィールドの動き補償が行われる。2.例えば、ルックアップテーブルを用いて可変オフセットをサブサンプリング後のクロマ動きベクトルに加算することによって、対応するマクロブロックがフィールド符号化されている場合に、符号化器/復号器が、ルミナンス動きベクトルとクロマ動きベクトルとの間の結合を維持する。記載の手法はインターレースビデオの4:2:0マクロブロックフォーマットに当てはまるが、記載の手法は、他のマクロブロックフォーマット例えば、4:2:2、4:4:4、その他および他の種類のビデオにも適用可能である。記載の手法およびツールは、互いに組み合わせて用いたり、他の手法およびツールと組み合わせて用いたり、単独で用いたりすることが可能である。A.1対1クロマ動きベクトル対応一部の実装形態では、符号化器/復号器は、マクロブロックを予測するために用いるルミナンス動きベクトルと同じ数の、クロマ動きベクトルを導出して用い、そのマクロブロックを予測する。例えば、所与のマクロブロックについて、符号化器/復号器が1つ、2つ、または4つのルミナンスフィールドまたはフレームタイプの動きベクトルを用いる場合、符号化器/復号器は、そのマクロブロックについて、それぞれ1つ、2つ、または4つのクロマ動きベクトルを導出する。そのような手法は、例えば、プログレッシブフレームまたはインターレースPフレームのコンテキストで従来の符号化器および復号器と異なり、従来の符号化器または復号器では、各マクロブロックにルミナンス動きベクトルがいくつあっても、それら例えば、1つまたは4つから、常に単一のクロマ動きベクトルを導出していた。図32は、マクロブロックの複数のルミナンス動きベクトルのそれぞれについてクロマ動きベクトルを導出する手法3200を示すフローチャートである。3210で、符号化器/復号器が、マクロブロックの複数のルミナンス動きベクトルを受け取る。3220で、符号化器/復号器は、複数のルミナンス動きベクトルのそれぞれについてクロマ動きベクトルを導出する。導出されるクロマ動きベクトルの数は、現在のマクロブロックの予測に用いられるルミナンス動きベクトルの数によって異なる。一部の実装形態では、符号化器/復号器は、1MVマクロブロックについては1つのクロマ動きベクトルを、2フィールドMVマクロブロックについては2つのフィールドクロマ動きベクトルを、4フレームMVマクロブロックについては4つのフレームクロマ動きベクトルを、4フィールドMVマクロブロックについては4つのフィールドクロマ動きベクトルを導出する。例えば、図23~25を再度参照すると、図23は、2フィールドMVマクロブロックのルミナンス動きベクトルから導出される、対応するトップフィールドクロマ動きベクトルおよびボトムフィールドクロマ動きベクトルを示している。導出されたトップフィールドクロマ動きベクトルおよびボトムフィールドクロマ動きベクトルは、クロマブロックのそれぞれ偶数ラインおよび奇数ラインの変位を表す。図24は、4フレームMVマクロブロックの4つのブロックのそれぞれのフレームルミナンス動きベクトルから導出される、対応するフレームクロマ動きベクトルMV1’、MV2’、MV3’、およびMV4’を示している。導出された4つのクロマ動きベクトルは、4つの4×4クロマサブブロックのそれぞれの変位を表す。図25は、4フィールドMVマクロブロックのフィールドルミナンス動きベクトルから導出される、対応するフィールドクロマ動きベクトルを示している。2つのフィールドクロマ動きベクトルは、クロマブロックの各フィールドの変位を表す。クロマブロックのラインが縦にさらに分割されて2つの4×8領域が形成され、各領域は、インターリーブしている、トップフィールドラインの4×4領域とボトムフィールドラインの4×4領域とからなる。トップフィールドラインについては、左側の4×4領域の変位がトップ左フィールドクロマブロック動きベクトルによって表され、右側の4×4領域の変位がトップ右フィールドクロマブロック動きベクトルによって表される。ボトムフィールドラインについては、左側の4×4領域の変位がボトム左フィールドクロマブロック動きベクトルによって表され、右側の4×4領域の変位がボトム右フィールドクロマブロック動きベクトルによって表される。クロマブロックの各領域は、導出された動きベクトルを用いて動き補償されることが可能である。これによって、クロマ動き補償の分解度を従来の符号化器および復号器より高めることが可能である従来の符号化器および復号器では、一般にサブサンプリングダウンサンプリングとも呼ばれるおよび/または平均によって、ルミナンス動きベクトルがいくつあってもそれらから単一のクロマ動きベクトルを導出していた例えば、マクロブロックの4つのルミナンス動きベクトルから1つのクロマ動きベクトルが導出されていた。あるいは、符号化器/復号器は、様々な数およびタイプのルミナンス動きベクトルからクロマ動きベクトルを導出することが可能である例えば、2つのフレームルミナンス動きベクトルを用いて符号化されたマクロブロックから2つのフレームクロマ動きベクトル、5つ以上のルミナンス動きベクトルを用いて符号化されたマクロブロックから5つ以上のクロマ動きベクトル、その他。または、マクロブロックのルミナンス動きベクトルの数との1対1対応を維持しながら、他の何らかの方法でクロマ動きベクトルを導出することも可能である。B.フィールド符号化されたマクロブロックにおけるフィールドベースの丸め一部の実装形態では、符号化器/復号器が、フィールド符号化されたマクロブロックのクロマ動きベクトル導出時に、フィールドベースの丸めを用いてルミナンス動きベクトルとクロマ動きベクトルとの間の結合を維持する。ルミナンスフレーム動きベクトルまたはルミナンスフィールド動きベクトルに対し、符号化器/復号器は、対応するクロマフレーム動きベクトルまたはクロマフィールド動きベクトルを導出して、クロマCb/Crブロックの一部および場合によってはすべてについて動き補償を行う。一部の実装形態では、インターレースフレーム符号化されたピクチャ例えば、インターレースPフレーム、インターレースBフレーム、その他のクロマ動きベクトル導出は、丸めとサブサンプリングとを含む。例えば、符号化器/復号器は、ルミナンスフィールド動きベクトルからクロマ動きベクトルを導出する際に、サブサンプリング後のクロマ動きベクトルに例えば、ルックアップテーブルを用いて可変オフセットを加算する。図33は、フィールドベースの丸めルックアップテーブルを用いてマクロブロックのクロマ動きベクトルを導出する手法3300を示すフローチャートである。3310で、符号化器/復号器が、例えば、4:2:0マクロブロックフォーマットの場合はy成分値を2で割ることによってルミナンスフィールド動きベクトル成分をサブサンプリングする。3320で、符号化器/復号器は、フィールドベースの丸めルックアップテーブルを用いて丸めを実行する。図34の擬似コード3400は、一実装形態において4:2:0マクロブロックのルミナンス動きベクトル成分LMVX,LMVYからクロマ動きベクトル成分CMVX,CMVYがどのように導出されるかを示している。擬似コード3400に示されるように、符号化器/復号器は、水平方向のサブサンプリングを行う前に、丸めルックアップテーブルs_RndTbl[]を用いる単純な丸めストラテジを用いて、動きベクトルのx成分の3/4画素位置を切り上げる。符号化器/復号器は、マクロブロックがフレーム符号化されている場合には、y成分の垂直方向のサブサンプリングを行う前に同じ丸めルックアップテーブルを用いる。一方、マクロブロックがフィールド符号化されている場合は、符号化器/復号器によるクロマ動きベクトルのy成分の処理のしかたが異なる。フィールド符号化されているマクロブロックでは、クロマ動きベクトルがトップフィールドまたはボトムフィールドに対応する。トップフィールドおよびボトムフィールドは、それぞれ、クロマブロックの互い違いの水平ラインを含む。したがって、このケースでは、符号化器/復号器は、擬似コード3400に示されたフィールドベースの丸めルックアップテーブルs_RndTblField[]を用いる。フィールドベースの丸めルックアップテーブルを用いることにより、符号化器/復号器は、丸めを行いながら正しいフィールドオフセットを維持することが可能であり、それによって、ルミナンス動きベクトルおよびクロマ動きベクトルが一貫したフィールドオフセットにマッピングされる。例えば、図35に示すように、s_RndTblField[]の値0,0,1,2および2,2,3,8図35のトップフィールド値3510がマクロブロックの一方のフィールド例えば、トップフィールドに適用され、値4,4,5,6および6,6,7,12図35のボトムフィールド値3520がマクロブロックのもう一方のフィールド例えば、ボトムフィールドに適用される。あるいは、符号化器/復号器は、別のフィールドベースの丸めルックアップテーブルを用いるか、他の何らかの方法で丸めおよび/またはサブサンプリングを行うことも可能である。例えば、符号化器/復号器がマクロブロックを別のフォーマットで処理する場合は、別のサブサンプリング係数および/またはルックアップテーブル値を用いることが可能である。VII.複合実装形態主たる複合実装形態とは若干の差異がある代替複合実装形態に加えて、ビットストリームシンタックス、セマンティクス、および復号器に関する詳細な複合実装形態について説明する。A.ビットストリームシンタックス様々な複合実装形態において、インターレースピクチャのデータが、複数のレイヤ例えば、シーケンス、エントリポイント、フレーム、フィールド、マクロブロック、ブロック、および/またはサブブロックレイヤを有するビットストリームの形で表される。シンタックス図では、シンタックス要素の可能なフローが、矢印のパスで示される。四角いエッジの境界で示されたシンタックス要素は、固定長シンタックス要素を表す。丸みのある境界で示されたシンタックス要素は、可変長シンタックス要素を表す。丸みのある外側の境界とその内側の丸みのある境界とで示されたシンタックス要素は、より単純なシンタックス要素で構成されたシンタックス要素例えば、ビットプレーンを表す。固定長シンタックス要素は、シンタックス要素の長さがシンタックス要素自体のデータに依存しないシンタックス要素として定義される。固定長シンタックス要素の長さは、一定であるか、シンタックスフローの先行データによって決定される。レイヤ図の下位レイヤ例えば、フレームレイヤ図のマクロブロックレイヤは、矩形内の矩形によって表される。エントリポイントレベルのビットストリーム要素を図36に示す。一般にエントリポイントは、復号器が復号を開始することが可能な、ビットストリーム内の位置例えば、Iフレームまたは他のキーフレームをマーキングする。言い換えると、ビットストリーム内のエントリポイントより後のピクチャを復号することに、エントリポイントより前のピクチャは不要である。エントリポイントヘッダを用いて、符号化制御パラメータ例えば、エントリポイントの後のフレームに対して圧縮ツール例えば、ループ内デブロッキングフィルタリングを有効にするか無効にするかの変更を信号伝達することが可能である。インターレースPフレームおよびBフレームの場合のフレームレベルのビットストリーム要素を、それぞれ図37および38に示す。各フレームのデータは、フレームヘッダと、それに続くマクロブロックレイヤ用データイントラタイプのマクロブロック用、または各種インタータイプのマクロブロック用とからなる。インターレースPフレームのマクロブロックレイヤを構成するビットストリーム要素イントラタイプのマクロブロック用、または各種インタータイプのマクロブロック用を図40に示す。インターレースPフレームのマクロブロックレイヤのビットストリーム要素は、他のインターレースピクチャ例えば、インターレースBフレーム、インターレースPフィールド、インターレースBフィールド、その他のマクロブロックについて存在することが可能である。インターレースPフィールドおよび/またはBフィールドを有するインターレースビデオフレームの場合の、フレームレベルのビットストリーム要素を図39に示す。各フレームのデータは、フレームヘッダと、それに続くフィールドごとにFieldPicLayer要素として繰り返し示されるフィールドレイヤ用データおよびマクロブロックレイヤ用データイントラ、1MV、または4MVのマクロブロック用とからなる。以下のセクションでは、フレームレイヤおよびマクロブロックレイヤにおいてインターレースピクチャの信号伝達に関連する被選択ビットストリーム要素について説明する。被選択ビットストリーム要素について、特定のレイヤのコンテキストで説明するが、複数のレイヤで用いられることが可能なビットストリーム要素もある。1.被選択エントリポイントレイヤ要素ループフィルタLOOPFILTER1ビットLOOPFILTERは、エントリポイントセグメントについてループフィルタリングが有効になっているかどうかを示すBooleanフラグである。LOOPFILTER=0であれば、ループフィルタリングは有効になっていない。LOOPFILTER=1であれば、ループフィルタリングは有効になっている。代替複合実装形態では、LOOPFILTERはシーケンスレベルの要素である。拡張動きベクトルEXTENDED_MV1ビットEXTENDED_MVは、拡張動きベクトルがオンになっているか値1、オフになっているか値0を示す、1ビットのシンタックス要素である。EXTENDED_MVは、PフレームおよびBフレームにおいてシンタックス要素MVRANGEによってフレームレベルで信号伝達される拡張動きベクトルが可能かどうかを示す。拡張差分動きベクトル範囲EXTENDED_DMV1ビットEXTENDED_DMVは、EXTENDED_MV=1の場合に存在する、1ビットのシンタックス要素である。EXTENDED_DMVが1であれば、拡張差分動きベクトル範囲DMVRANGEが、エントリポイントセグメント内で、PフレームおよびBフレームのフレームレイヤにおいて信号伝達される。EXTENDED_DMVが0であれば、DMVRANGEは信号伝達されない。高速UV動き補償FASTUVMC1ビットFASTUVMCは、クロマ動きベクトルの端数画素補間および丸めを制御するBooleanフラグである。FASTUVMC=1であれば、1/4画素オフセットにあるクロマ動きベクトルが、最も近い1/2画素位置またはフル画素位置に丸められる。FASTUVMC=0であれば、クロマに関して特別な丸めやフィルタリングが行われない。FASTUVMCシンタックス要素は、インターレースPフレームおよびインターレースBフレームにおいて無視される。可変サイズ変換VSTRANSFORM1ビットVSTRANSFORMは、シーケンスについて可変サイズ変換符号化が有効になっているかどうかを示すBooleanフラグである。VSTRANSFORM=0であれば、可変サイズ変換符号化が有効になっていない。VSTRANSFORM=1であれば、可変サイズ変換符号化が有効になっている。2.被選択フレームレイヤ要素図37および図38は、それぞれ、インターレースPフレームおよびインターレースBフレームのフレームレベルのビットストリームシンタックスを示す図である。図39は、インターレースPフィールド、および/またはBフィールドまたは場合によって他の種類のインターレースフィールドを含むフレームのフレームレイヤのビットストリームシンタックスを示す図である。以下、個々のビットストリーム要素について説明する。フレーム符号化モードFCM可変サイズFCMは、ピクチャ符号化タイプを示すために用いられる可変長符号ワード[VLC]である。FCMは、フレーム符号化モードについて、次の表9に示す値をとる。フィールドピクチャタイプFPTYPE3ビットFPTYPEは、インターレースPフィールドおよび/またはインターレースBフィールド、および場合によって他の種類のフィールドを含むフレームのフレームヘッダに存在する、3ビットのシンタックス要素である。FPTYPEは、インターレースビデオフレームのフィールドタイプの様々な組合せについて、次の表10に従う値をとる。ピクチャタイプPTYPE可変サイズPTYPEは、インターレースPフレームおよびインターレースBフレームまたは、インターレースIフレームなど、他の種類のインターレースフレームのフレームヘッダに存在する、可変サイズのシンタックス要素である。PTYPEは、様々なフレームタイプについて、次の表11に従う値をとる。フレームがスキップされていることをPTYPEが示している場合、そのフレームは、その参照フレームと同一のPフレームとして扱われる。スキップフレームを再構成することは、概念的には、参照フレームをコピーすることと等価である。スキップフレームは、このフレームに関してさらなるデータが伝送されないことを意味する。UVサンプリングフォーマットUVSAMP1ビットUVSAMPは、シーケンスレベルフィールドINTERLACE=1の場合に存在する、1ビットのシンタックス要素である。UVSAMPは、現在のフレームに用いられるクロマサブサンプリングのタイプを示す。UVSAMP=1の場合は、クロマのプログレッシブサブサンプリングが用いられ、そうでない場合は、クロマのインターレースサブサンプリングが用いられる。このシンタックス要素は、ビットストリームの復号には影響しない。拡張MV範囲MVRANGE可変サイズMVRANGEは、エントリポイントレイヤのEXTENDED_MVビットが1に設定されている場合に存在する、可変サイズのシンタックス要素である。MVRANGEVLCは、動きベクトル範囲を表す。拡張差分MV範囲DMVRANGE可変サイズDMVRANGEは、エントリポイントレイヤのシンタックス要素EXTENDED_DMVが1の場合に存在する、可変サイズのシンタックス要素である。DMVRANGEVLCは、動きベクトル差分範囲を表す。4動きベクトル切り換え4MVSWITCH可変サイズまたは1ビットインターレースPフレームの場合、4MVSWITCHシンタックス要素は1ビットのフラグである。4MVSWITCHがゼロに設定されている場合、ピクチャ内のマクロブロックは、フレーム符号化されている場合には動きベクトルを1つだけ有し、フィールド符号化されている場合は動きベクトルを2つだけ有する。4MVSWITCHが1に設定されている場合は、マクロブロックごとに1つ、2つ、または4つの動きベクトルが存在することが可能である。スキップマクロブロック復号SKIPMB可変サイズインターレースPフレームの場合、SKIPMBシンタックス要素は、ピクチャ内の各マクロブロックのスキップ/非スキップステータスを示す情報を格納する圧縮されたビットプレーンである。復号されたビットプレーンは、各マクロブロックのスキップ/非スキップステータスを1ビット値で表す。値0は、そのマクロブロックがスキップされていないことを表す。値1は、そのマクロブロックがスキップされたとして符号化されていることを表す。インターレースPフレームのマクロブロックの、スキップされたというステータスは、復号器がそのマクロブロックを、動きベクトル差分がゼロであって、符号化されたブロックパターンがゼロである1MVとして扱うことを意味する。スキップマクロブロックについては、その他の情報がその後に続くことは見込まれていない。マクロブロックモードテーブルMBMODETAB2または3ビットMBMODETABシンタックス要素は、固定長フィールドである。インターレースPフレームの場合、MBMODETABは、マクロブロックレイヤのマクロブロックモードシンタックス要素MBMODEを復号するために4つの符号テーブルのうちのどの1つを用いるかを示す2ビット値である。4つの符号テーブルの集合は2つあり、どの集合を用いるかは、4MVSWITCHフラグで示される、4MVが用いられているかどうかによって決まる。動きベクトルテーブルMVTAB2または3ビットMVTABシンタックス要素は、固定長フィールドである。インターレースPフレームの場合、MVTABは、マクロブロックレイヤのMVDATAシンタックス要素を符号化するために4つのプログレッシブまたは1つの参照動きベクトル符号テーブルのうちのどれが用いられているかを示す、2ビットのシンタックス要素である。2MVブロックパターンテーブル2MVBPTAB2ビット2MVBPTABシンタックス要素は、2フィールドMVマクロブロックの2MVブロックパターン2MVBPシンタックス要素を復号するために4つの符号テーブルのうちのどれを用いるかを信号伝達する2ビット値である。4MVブロックパターンテーブル4MVBPTAB2ビット4MVBPTABシンタックス要素は、4MVマクロブロックの4MVブロックパターン4MVBPシンタックス要素を復号するために4つの符号テーブルのうちのどれを用いるかを信号伝達する2ビット値である。インターレースPフレームの場合は、4MVSWITCHシンタックス要素が1に設定する場合に存在する。マクロブロックレベル変換タイプフラグTTMBF1ビットこのシンタックス要素は、シーケンスレベルのシンタックス要素VSTRANSFORMが1の場合に、PフレームおよびBフレームに存在する。TTMBFは、フレームレベルまたはマクロブロックレベルで変換タイプの符号化が有効になっているかどうかを信号伝達する、1ビットのシンタックス要素である。TTMBF=1であれば、フレーム内のすべてのブロックについて同じ変換タイプが用いられる。この場合は、その後のフレームレベル変換タイプTTFRMシンタックス要素で変換タイプが信号伝達される。TMBF=0の場合、変換タイプは、フレーム全体を通して変わる可能性があり、マクロブロックレベルまたはブロックレベルで信号伝達される。フレームレベル変換タイプTTFRM2ビットこのシンタックス要素は、VSTRANSFORM=1かつTTMBF=1の場合に、PフレームおよびBフレームに存在する。TTFRMは、予測ブロックの8×8画素誤差信号の変換に用いられる変換タイプを信号伝達する。8×8誤差ブロックは、1つの8×8変換、2つの8×4変換、2つの4×8変換、または4つの4×4変換を用いて変換されることが可能である。3.被選択マクロブロックレイヤ要素図40は、複合実装形態における、インターレースPフレームのマクロブロックのマクロブロックレベルのビットストリームシンタックスを示す図である。以下、個々のビットストリーム要素について説明する。マクロブロック用データは、マクロブロックヘッダとそれに続くブロックレイヤデータとからなる。インターレースPフレームのマクロブロックレイヤにあるビットストリーム要素例えば、SKIPMBBITは、場合によって、他のインターレースピクチャ例えば、インターレースBフレーム、その他のマクロブロックについても存在することが可能である。スキップMBビットSKIPMBBIT1ビットSKIPMBBITは、rawモードが用いられていることを、フレームレベルのシンタックス要素SKIPMBが示している場合に、インターレースPフレームおよびインターレースBフレームのマクロブロックに存在する、1ビットのシンタックス要素である。SKIPMBBIT=1の場合は、そのマクロブロックがスキップされている。SKIPMBBITは、マクロブロックレベルにおいてSKIPMBとしてラベル付けされる場合もある。マクロブロックモードMBMODE可変サイズMBMODEは、マクロブロックタイプ例えば、1MV、2フィールドMV、4フィールドMV、4フレームMV、またはイントラ、フィールド/フレーム符号化タイプ例えば、フィールド、フレーム、または符号化ブロックなし、および1MVマクロブロックに対する差分動きベクトルデータの存在、を統合的に指定する、可変サイズのシンタックス要素である。MBMODEについては、以下およびセクションVで詳述している。2MVブロックパターン2MVBP可変サイズ2MVBPは、インターレースPフレームおよびインターレースBフレームのマクロブロックに存在する、可変サイズのシンタックス要素である。インターレースPフレームのマクロブロックでは、2MVBPは、マクロブロックが2つのフィールド動きベクトルを有することをMBMODEが示している場合に存在する。この場合、2MVBPは、2つのルミナンスブロックのうちのどれが非ゼロの動きベクトル差分を含むかを示す。4MVブロックパターン4MVBP可変サイズ4MVBPは、インターレースPフィールド、インターレースBフィールド、インターレースPフレーム、およびインターレースBフレームのマクロブロックに存在する、可変サイズのシンタックス要素である。インターレースPフレームでは、4MVBPは、マクロブロックが4つのフィールド動きベクトルを有することをMBMODEが示している場合に存在する。この場合、4MVBPは、4つのルミナンスブロックのうちのどれが非ゼロの動きベクトル差分を含むかを示す。フィールド変換フラグFIELDTX1ビットFIELDTXは、インターレースBフレームのイントラ符号化されたマクロブロックに存在する、1ビットのシンタックス要素である。このシンタックス要素は、マクロブロックがフレーム符号化されているか、フィールド符号化されているか基本的には、マクロブロックの内部構成を示す。FIELDTX=1は、マクロブロックがフィールド符号化されていることを示す。そうでない場合、マクロブロックはフレーム符号化されている。インター符号化されたマクロブロックでは、このシンタックス要素は、MBMODEから推測されることが可能であるこれについては、以下およびセクションVで詳述している。CBP存在フラグCBPPRESENT1ビットCBPPRESENTは、インターレースPフレームおよびインターレースBフレームのイントラ符号化されたマクロブロックに存在する、1ビットのシンタックス要素である。CBPPRESENTが1であれば、CBPCYシンタックス要素がそのマクロブロックについて存在し、復号される。CBPPRESENTが0であれば、CBPCYシンタックス要素は存在せず、ゼロに設定されなければならない。符号化されたブロックパターンCBPCY可変サイズCBPCYは、マクロブロックの各ブロックの変換係数ステータスを示す可変長シンタックス要素である。CBPCYは、対応するブロックについて係数が存在するかどうかを示す6ビットフィールドに復号される。イントラ符号化されたマクロブロックの場合、各ビット位置の値0は、対応するブロックに非ゼロのAC係数がまったく含まれないことを示す。値1は、少なくとも1つの非ゼロのAC係数が存在することを示す。DC係数は、どの場合でも、各ブロックについて存在する。インター符号化されたマクロブロックの場合、各ビット位置の値0は、対応するブロックに非ゼロの係数がまったく含まれないことを示す。値1は、少なくとも1つの非ゼロの係数が存在することを示す。ビットが0の場合は、そのブロックについて符号化されるデータがない。動きベクトルデータMVDATA可変サイズMVDATAは、マクロブロックの動きベクトルの差分を符号化する、可変サイズのシンタックス要素である。復号については後で詳述する。MBレベル変換タイプTTMB可変サイズTTMBは、ピクチャレイヤのシンタックス要素TTMBFが0の場合に、PピクチャおよびBピクチャのマクロブロックに存在する、可変サイズのシンタックス要素である。TTMBは、変換タイプ、変換タイプ信号レベル、およびサブブロックパターンを指定する。B.インターレースPフレームの復号複合実装形態においてインターレースPフレームを復号する処理について説明する。1.インターレースPフレームのマクロブロックレイヤの復号インターレースPフレームでは、1つまたは4つの動きベクトルを用いるフレームモードで、あるいは、2つまたは4つの動きベクトルを用いるフィールドモードで、各マクロブロックを動き補償することが可能である。インター符号化されているマクロブロックは、イントラブロックを含まない。さらに、動き補償後の残差は、フレーム変換モードまたはフィールド変換モードで符号化されることが可能である。より具体的には、残差のルミナンス成分は、フィールド変換モードで符号化されている場合にはフィールドに従って再配置されるが、フレーム変換モードの場合には変更されずに残り、クロマ成分も同じまま残る。マクロブロックは、イントラとして符号化されることも可能である。動き補償を、4つのフィールドおよびフレームの両方の動きベクトルを含まないように制限することが可能である。この制限については4MVSWITCHで信号伝達される。動き補償および残差符号化のタイプは、マクロブロックごとに、MBMODEおよびSKIPMBによって統合的に示される。MBMODEは、4MVSWITCHに従って、テーブルの様々な集合を用いる。インターレースPフレームのマクロブロックは、5つのタイプ1MV、2フィールドMV、4フレームMV、4フィールドMV、およびイントラに分類される。これら5つのタイプについては、セクションIIIで詳述した。最初の4つのタイプのマクロブロックはインター符号化され、最後のタイプは、マクロブロックがイントラ符号化されていることを示す。マクロブロックタイプは、マクロブロックレイヤにおいて、スキップビットとともに、MBMODEシンタックス要素によって信号伝達されるマクロブロックのスキップ条件は、圧縮されたビットプレーンのフレームレベルで信号伝達されることも可能である。MBMODEは、様々なタイプのマクロブロックについて、マクロブロックタイプを、そのマクロブロックに関する様々な情報とともに統合的に符号化する。スキップマクロブロックの信号伝達マクロブロックレベルのSKIPMBBITフィールドは、マクロブロックのスキップ条件を示すスキップ条件および対応する信号伝達の詳細については、セクションVで説明した。SKIPMBBITフィールドが1であれば、現在のマクロブロックはスキップされていることが伝えられ、SKIPMBBITフィールドの後に他の情報が送られない。フレームレベルでは、SKIPMBフィールドは、rawモードでマクロブロックレベルでのSKIPMBBITの存在を示し、あるいは圧縮されたビットプレーンの形でスキップ情報を格納する。復号されたビットプレーンは、マクロブロックごとに1ビットを含み、各ビットがそれぞれのマクロブロックのスキップ条件を示す。スキップ条件は、現在のマクロブロックが、ゼロ差分動きベクトルを有する1MVであることすなわち、マクロブロックがその1MV動きプレディクタによって動き補償されていること、および符号化されたブロックがないことCBP=0を意味する。代替複合実装形態では、残差は、ループフィルタリングに用いるためにフレーム符号化されていると見なされる。これに対し、SKIPMBフィールドが1でない場合は、MBMODEフィールドが、マクロブロックのタイプと現在のマクロブロックに関する他の情報後のセクションで説明する情報などとを示すように復号される。マクロブロックモードの信号伝達MBMODEは、マクロブロックタイプ1MV、4フレームMV、2フィールドMV、4フィールドMV、またはイントラ、インター符号化されたマクロブロックの変換タイプすなわち、フィールド、フレーム、または符号化ブロックなし、および1MVマクロブロックの場合は差分動きベクトルが存在するかどうかを統合的に指定するマクロブロック情報の信号伝達の詳細については、セクションVで説明した。MBMODEは、以下のように、15個の可能な値のうちの1つをとりことができる。非ゼロの1MV差分動きベクトルが存在するかどうかの信号伝達を<MVP>で表し、マクロブロックの残差が1フレーム変換符号化されているか、2フィールド変換符号化されているか、または3ゼロの符号化ブロックかすなわち、CBP=0かの信号伝達を<Field/Frametransform>で表すと、MBMODEは、次の情報を統合的に信号伝達する。<1MV,MVP=0,CBP=0>というケースはMBMODEによっては信号伝達されないが、スキップ条件によって信号伝達されるインター符号化されたマクロブロックについて、MBMODEの<Field/frameTransform>が、符号化されたブロックがないことを示している場合には、CBPCYシンタックス要素は復号されない。一方、MBMODEの<Field/frameTransform>がフィールド変換またはフレーム変換を示している場合には、CBPCYは復号される。復号された<Field/frameTransform>を用いて、フラグFIELDTXが設定される。FIELDTXは、マクロブロックがフィールド変換符号化されていることを示す場合には1に設定される。マクロブロックがフレーム変換符号化されていることを示す場合には、FIELDTXは0に設定される。ゼロの符号化ブロックを示す場合、FIELDTXは、動きベクトルと同じタイプに設定されるすなわち、動きベクトルがフィールド動きベクトルであればFIELDTXは1に設定され、フレーム動きベクトルであれば0に設定される。1MVではないインター符号化されたマクロブロックの場合は、どの差分動きベクトルが非ゼロかを示すために追加フィールドが送られる。2フィールドMVマクロブロックの場合は、2つの動きベクトルのうちのどれが非ゼロの差分動きベクトルを含むかを示すために2MVBPフィールドが送られる。同様に、4つの動きベクトルのうちのどれが非ゼロの差分動きベクトルを含むかを示すために4MVBPフィールドが送られる。イントラ符号化されたマクロブロックの場合は、フィールド/フレーム変換タイプと、符号化されていないブロックとが別々のフィールドで符号化される。2.インターレースPフレームの動きベクトルの復号インターレースPフレームの動きベクトルプレディクタ現在のマクロブロックの動きベクトルプレディクタを算出する処理は、2つのステップからなる。第1のステップでは、現在のマクロブロックに対する3つの候補動きベクトルを、現在のマクロブロックに隣接するマクロブロックから収集する。第2のステップでは、候補動きベクトルの集合から、現在のマクロブロックの動きベクトルプレディクタを算出する。図26A~26Bは、候補動きベクトルが収集される隣接マクロブロックを示している。候補動きベクトルを収集する順序は重要である。この複合実装形態では、収集の順序は、必ず、Aで始まり、Bを経て、Cで終わる。対応するブロックがフレーム境界の外側にある場合、または対応するブロックが別のスライスの一部である場合、プレディクタ候補は存在しないと見なされる。したがって、動きベクトル予測は、スライス境界にまたがっては実行されない。以下のセクションでは、様々なタイプのマクロブロックについて候補動きベクトルがどのように収集されるか、および動きベクトルプレディクタがどのように算出されるかについて説明する。1MV候補動きベクトルこの複合実装形態では、図41の擬似コード4100を用いて、動きベクトルの、最大3つの候補動きベクトルが収集される。4フレームMV候補動きベクトル4フレームMVマクロブロックの場合は、現在のマクロブロックの4つのフレームブロック動きベクトルのそれぞれについて、隣接するブロックから候補動きベクトルが収集される。この複合実装形態では、図42の擬似コード4200を用いて、左上フレームブロック動きベクトル用の、最大3つの候補動きベクトルが収集され、図43の擬似コード4300を用いて、右上フレームブロック動きベクトル用の、最大3つの候補動きベクトルが収集され、図44の擬似コード4400を用いて、左下フレームブロック動きベクトル用の、最大3つの候補動きベクトルが収集され、図45の擬似コード4500を用いて、右下フレームブロック動きベクトル用の、最大3つの候補動きベクトルが収集される。2フィールドMV候補動きベクトル2フィールドMVマクロブロックの場合は、現在のマクロブロックの2つのフィールド動きベクトルのそれぞれについて、隣接するブロックから候補動きベクトルが収集される。図46の擬似コード4600を用いて、トップフィールド動きベクトルの、最大3つの候補動きベクトルが収集され、図47の擬似コード4700を用いて、ボトムフィールド動きベクトルの、最大3つの候補動きベクトルが収集される。4フィールドMV候補動きベクトル4フィールドMVマクロブロックの場合は、現在のマクロブロックの4つのフィールドブロックのそれぞれについて、隣接するブロックから候補動きベクトルが収集される。図48の擬似コード4800を用いて、左上フィールドブロック動きベクトル用の、最大3つの候補動きベクトルが収集され、図49の擬似コード4900を用いて、右上フィールドブロック動きベクトル用の、最大3つの候補動きベクトルが収集され、図50の擬似コード5000を用いて、左下フィールドブロック動きベクトル用の、最大3つの候補動きベクトルが収集され、図51の擬似コード5100を用いて、右下フィールドブロック動きベクトル用の、最大3つの候補動きベクトルが収集される。平均フィールド動きベクトル2つのフィールド動きベクトルMVX1,MVY1およびMVX2,MVY2に対して、平均演算が行われて、次のように候補動きベクトルMVXA,MVYAが形成される。MVXA=MVX1MVX21>>1MVYA=MVY1MVY21>>1候補動きベクトルからのフレームMVプレディクタの算出このセクションでは、ある候補動きベクトルの集合に対してフレーム動きベクトルの動きベクトルプレディクタがどのように算出されるかについて説明する。この複合実装形態では、1MVについてプレディクタを算出する場合と、4フレームMVマクロブロックの4つのフレームブロック動きベクトルのそれぞれについてプレディクタを算出する場合とで、演算は同じである。図52の擬似コード5200は、フレーム動きベクトルに対して動きベクトルプレディクタPMVx,PMVyがどのように算出されるかを示している。擬似コード5200では、TotalValidMVは、候補動きベクトルの集合にある動きベクトルの総数を表しておりTotalValidMV=0、1、2、または3、ValidMV配列は、候補動きベクトルの集合にある動きベクトルを表している。候補動きベクトルからのフィールドMVプレディクタの算出このセクションでは、複合実装形態において、候補動きベクトルの集合に対してフィールド動きベクトルの動きベクトルプレディクタがどのように算出されるかについて説明する。この複合実装形態では、2フィールドMVマクロブロックの2つのフィールド動きベクトルのそれぞれについてプレディクタを算出する場合と、4フィールドMVマクロブロックの4つのフィールドブロック動きベクトルのそれぞれについてプレディクタを算出する場合とで同じ演算を行う。まず、候補動きベクトルは2つの集合に分けられる。一方の集合には、現在のフィールドと同じフィールドをポイントする候補動きベクトルだけが含まれ、もう一方の集合には、反対のフィールドをポイントする候補動きベクトルが含まれる。候補動きベクトルが1/4画素単位で表現されていると仮定すると、そのy成分を次のように調べることにより、候補動きベクトルが同じフィールドをポイントしているかどうかが確認される。図53の擬似コード5300は、フィールド動きベクトルに対して動きベクトルプレディクタPMVx,PMVyがどのように算出されるかを示している。擬似コード5300では、SameFieldMVおよびOppFieldMVが、候補動きベクトルの2つの集合を表し、NumSameFieldMVおよびNumOppFieldMVが、各集合に属する候補動きベクトルの数を表す。各集合の候補動きベクトルの順序は、候補Aが存在すれば候補Aから始まり、候補Bが存在すれば候補Bがそれに続き、候補Cが存在すれば候補Cがその次である。例えば、集合SameFieldMVが候補Bおよび候補Cだけを含む場合は、SameFieldMV[0]が候補Bである。動きベクトル差分の復号MVDATAシンタックス要素は、マクロブロックの動きベクトル差分情報を含む。各マクロブロックにおいて信号伝達される動き補償および動きベクトルブロックパターンのタイプに応じて、マクロブロックごとに0~4つのMVDATAシンタックス要素が存在可能である。より具体的には、1MVマクロブロックの場合は、MBMODEのMVPフィールドに応じてゼロまたは1つのMVDATAシンタックス要素が存在可能である。2フィールドMVマクロブロックの場合は、2MVBPに応じて、ゼロ、1つ、または2つのMVDATAシンタックス要素が存在可能である。4フレーム/フィールドMVマクロブロックの場合は、4MVBPに応じて、ゼロ、1つ、2つ、3つ、または4つのMVDATAシンタックス要素が存在可能である。この複合実装形態では、動きベクトル差分は、インターレースPフィールドの1つの参照フィールド動きベクトル差分と同じ方法で、1/2画素モードを用いずに復号される図54Aの擬似コード5400は、1つの参照フィールドの動きベクトル差分がどのように復号されるかを示している。図54Bの擬似コード5410は、代替複合実装形態において、1つの参照フィールドの動きベクトル差分がどのように復号されるかを示している。擬似コード5410は、動きベクトル差分を別の方法で復号する。例えば、擬似コード5410は、拡張動きベクトル差分範囲の処理を省略している。動きベクトルの再構成動きベクトル差分dmvに対し、ルミナンス動きベクトルは、次のように、差分をプレディクタに加算することによって再構成される。mv_x=dmv_xpredictor_xsmodrange_xmv_y=dmv_ypredictor_ysmodrange_ysmod演算は、再構成されたベクトルが有効であることを保証する。Asmodbは、-b~b-1の範囲に収まる。range_xおよびrange_yはMVRANGEに依存する。ルミナンスフレームまたはフィールド動きベクトルが与えられると、対応するクロマフレームまたはフィールド動きベクトルが導出され、それによって、クロマCb/Crブロックの一部または場合によって、すべてが補償される。FASTUVMCシンタックス要素は、インターレースPフレームおよびインターレースBフレームにおいて無視される。図34の擬似コード3400は、インターレースPフレームのルミナンス動きベクトルLMVからクロマ動きベクトルCMVがどのように導出されるかを示している。C.ビットプレーン符号化スキップビットなど、マクロブロック固有のバイナリ情報は、マクロブロックごとに1つのバイナリシンボルで符号化されることが可能である。例えば、マクロブロックがスキップされているかどうかを、1ビットで信号伝達することが可能である。このような場合は、フィールドまたはフレームのすべてのマクロブロックのステータスを、ビットプレーンとして符号化し、フィールドヘッダまたはフレームヘッダ内で伝送することが可能である。この規則の1つの例外は、ビットプレーン符号化モードがRAWモードRawModeに設定されている場合である。この場合は、各マクロブロックのステータスが、シンボルごとに1ビットとして符号化され、マクロブロックレベルの他のシンタックス要素とともにマクロブロックレベルで伝送される。フィールド/フレームレベルのビットプレーン符号化は、2次元バイナリ配列を符号化するために用いられる。各配列のサイズはrowMB×colMBである。rowMBおよびcolMBは、それぞれ、該当するフィールドまたはフレームのマクロブロック行およびマクロブロック列の数である。各配列は、ビットストリーム内で、連続するビットの集合として符号化される。各配列の符号化には、7つのモードのうちの1つが用いられる。7つのモードは以下のとおりである。1.rawモード-情報がシンボルごとに1ビットとして符号化され、MBレベルシンタックスの一部として伝送される。2.normal-2モード-2つのシンボルが統合的に符号化される。3.differential-2モード-ビットプレーンの差分符号化。この後に2つの残差シンボルが統合的に符号化される。4.normal-6モード-6つのシンボルが統合的に符号化される。5.differential-6モード-ビットプレーンの差分符号化。この後に6つの残差シンボルが統合的に符号化される。6.rowskipモード-セットされたビットがない行を信号伝達するための1ビットスキップ。7.columnskipモード-セットされたビットがない列を信号伝達するための1ビットスキップ。フィールドまたはフレームのレベルでのビットプレーンのシンタックス要素のシーケンスは次のとおりである。INVERT、IMODE、およびDATABITS。反転フラグINVERTINVERTシンタックス要素は、1ビット値であって、これがセットされている場合には、ビットプレーンにおいて、セットされたビットがゼロビットより多いことを示す。復号器は、解釈されたビットプレーンを、INVERTおよびモードに応じて反転して、オリジナルを再作成する。rawモードが用いられる場合にはこのビットの値が無視されることに注意されたい。ビットプレーンの復号にINVERT値がどのように用いられるかについては後述する。符号化モードIMODEIMODEシンタックス要素は、ビットプレーンの符号化に用いられた符号化モードを示す可変長値である。表12は、IMODEシンタックス要素の符号化に用いられる符号テーブルを示す。ビットプレーンの復号にIMODE値がどのように用いられるかについては後述する。ビットプレーン符号化ビットDATABITSDATABITSシンタックス要素は、ビットプレーンのシンボルのストリームを符号化する、可変サイズのシンタックス要素である。ビットプレーンの符号化に用いられる方法は、IMODEの値によって決定される。以下のセクションで、7つの符号化モードについて説明する。Rawモードこのモードでは、ビットプレーンは、マクロブロックのラスタースキャン順序でスキャンされるシンボルごとに1ビットとして符号化され、マクロブロックレイヤの一部として送られる。あるいは、この情報は、フィールドまたはフレームレベルでrawモードで符号化され、DATABITSの長さはrowMB×colMBビットである。Normal-2モードrowMB×colMBが奇数であれば、最初のシンボルは、符号化されたrawである。後続のシンボルは、普通のスキャン順序で、2つずつ符号化される。表13のバイナリVLCテーブルが、シンボルペアの符号化に用いられる。Diff-2モード前述のように、ビットプレーンを生成するためにNormal-2方法が用いられ、その後、後述するように、Diff-1演算がビットプレーンに適用される。Normal-6モードNorm-6モードおよびDiff-6モードでは、ビットプレーンが、6画素ずつの群の形で符号化される。これらの画素は、2×3または3×2のタイルにまとめられる。このビットプレーンは、一連のルールを用いて最大限までタイル化され、残った画素は、rowskipモードおよびcolumnskipモードの変形を用いて符号化される。2×3の垂直方向タイルは、rowMBが3の倍数であって、colMBがそうでない場合に限って用いられる。それ以外の場合には、3×2の水平方向タイルが用いられる。図55Aは、2×3の垂直方向タイルの簡単な例を示す。図55Bおよび55Cは、3×2の水平方向のタイルの簡単な例を示す。この例では、細長い暗色の矩形が1画素幅であって、rowskip符号化およびcolumnskip符号化を用いて符号化される。図55Cに示すように、線状のタイルがピクチャの上端および左端に沿うようにタイル化された平面では、タイルの符号化順序は以下のパターンに従う。6個の要素のタイルが最初に符号化され、その後に、columnskip符号化およびrowskip符号化された線状タイルが続く。配列サイズが2×3または3×2の倍数の場合、後者の線状タイルは存在せず、ビットプレーンは完全にタイル化される。6個の要素の矩形タイルは、不完全なハフマン符号すなわち、すべてのエンドノードendnodesを符号化に用いないハフマン符号を用いて符号化される。タイル内のセットされたビットの数をNとするすなわち、0≦N≦6。N<3の場合は、VLCを用いてタイルが符号化される。N=3の場合は、固定長エスケープの後に5ビットの固定長符号が続き、N>3の場合は、固定長エスケープの後にタイルの補数の符号が続く。矩形タイルは、6ビットの情報を含む。タイルに関連付けられた符号をkとする。ただし、k=bi2iであり、biは、タイル内の普通のスキャン順序でのi番目のビットのバイナリ値である。したがって、0≦k<64である。VLCとエスケープ符号固定長符号の組み合わせが、kの信号伝達に用いられる。Diff-6モード前述のように、ビットプレーンを生成するためにNormal-6方法が用いられ、その後、前述のように、Diff-1演算がビットプレーンに適用される。Rowskipモードrowskip符号化モードでは、すべてのゼロの行が、1ビットのオーバーヘッドでスキップされる。シンタックスは以下のとおりである。行ごとに、単一のROWSKIPビットが、その行がスキップされているかどうかを示す。行がスキップされていれば、次の行についてのROWSKIPビットが次に来る。そうでない場合行がスキップされていない場合は、ROWBITSビットその行の各マクロブロックについてのビットが次に来る。したがって、行全体がゼロの場合は、ゼロビットがROWSKIPシンボルとして送られ、ROWBITSがスキップされる。行内にセットされたビットがあれば、ROWSKIPが1に設定され、行全体がrawで送られるROWBITS。行は、フィールドまたはフレームの上から下へスキャンされる。Columnskipモードcolumnskipは、rowskipの転置である。列は、フィールドまたはフレームの左から右へスキャンされる。Diff-1::反転差分復号いずれかの差分モードDiff-2またはDiff-6が用いられている場合、差分ビットのビットプレーンは、最初に、対応するノーマルモードそれぞれ、Norm-2またはNorm-6_で復号されるを使用して復号される。差分ビットは、オリジナルビットプレーンを再生成するために用いられる。再生成処理は、バイナリアルファベットに対する2-DDPCMである。位置i,jのビットを再生成するために、プレディクタbpi,jが、次のように位置i,jのビットbi,jから生成される。差分符号化モードの場合は、INVERTに基づく、ビットごとの反転処理が行われない。しかしながら、INVERTフラグは、前述のプレディクタの導出に関するシンボルAの値を示すという別の機能で用いられる。より具体的には、INVERT=0であればA=0であり、INVERT=1であればA=1である。ビットプレーンの実際の値は、プレディクタと復号された差分ビット値との排他的論理和XORをとることによって得られる。上式では、bi,jは、最終復号後すなわち、Norm-2/Norm-6を行い、さらに差分とプレディクタとのXORをとった後のi,j番目の位置にあるビットである。様々な実施形態に関連して本発明の原理を説明および図示してきたが、これらの様々な実施形態は、本発明の原理から逸脱することなく、構成および細部を改変することが可能であることを認識されよう。本明細書に記載のプログラム、処理、または方法は、特に断らない限り、何ら特定タイプのコンピューティング環境に関連するものでも限定されるものでもないことを理解されたい。様々なタイプの汎用または専用コンピューティング環境を本明細書に記載の教示に関して用いることが可能であり、あるいは、それらの環境を用いて、本明細書に記載の教示に従う操作を実行することが可能である。ソフトウェアの形で示した、実施形態の要素をハードウェアの形で実装することも、ハードウェアの形で示した、実施形態の要素をソフトウェアの形で実装することも可能である。本発明の原理を適用しうる、多くの可能な実施形態を考慮して、添付の特許請求項ならびにその均等物の範囲および趣旨に含まれうるすべての実施形態を本発明として特許請求するものとする。"