"コンピュータシステムに記憶されたコンピュータ実行可能命令を前記コンピュータシステムが実行することによって実施される方法であって、前記コンピュータシステムが、複数の利用可能なビットプレーンモードの群から1つのビットプレーンモードを選択すること、および前記選択したビットプレーンモードに従って、第1のビデオピクチャーの複数のマクロブロックに対するAC予測状態情報を示すビットプレーンを処理することを含み、第2のビデオピクチャーが、1つまたは複数のイントラマクロブロックおよび1つまたは複数のインターマクロブロックを含み、マクロブロック当り1ビットのAC予測状態ビットが、前記1つまたは複数のインターマクロブロックのいずれかではなく、前記1つまたは複数のイントラマクロブロックのそれぞれに対して伝送されることを特徴とする方法。前記AC予測状態情報は、前記第1のビデオピクチャーの前記複数のマクロブロックのそれぞれに対して、前記マクロブロックがAC予測を用いてコード化されているかどうかを示すことを特徴とする請求項1に記載の方法。前記第1のビデオピクチャーは、プログレッシブイントラフレーム、インターレースイントラフレーム、またはインターレースイントラフィールドであることを特徴とする請求項1に記載の方法。前記処理することは、エンコードすることを含むことを特徴とする請求項1に記載の方法。前記処理することは、デコードすることを含むことを特徴とする請求項1に記載の方法。前記コンピュータシステムに、請求項1に記載の方法を実行させるための前記コンピュータ実行可能命令を記憶したことを特徴とするコンピュータ読取り可能記憶媒体。コンピュータシステムに記憶されたコンピュータ実行可能命令を前記コンピュータシステムが実行することによって実施される方法であって、前記コンピュータシステムが、第1のビデオピクチャーの複数のマクロブロックに対して、AC予測状態情報を示すビットプレーンをエンコードすること、および前記エンコードされたビットプレーンを伝送することを含み、第2のビデオピクチャーが、1つまたは複数のイントラマクロブロックおよび1つまたは複数のインターマクロブロックを含み、マクロブロック当り1ビットのAC予測状態ビットが、前記1つまたは複数のインターマクロブロックのいずれかではなく、前記1つまたは複数のイントラマクロブロックのそれぞれに対して伝送されることを特徴とする方法。前記ビットプレーンは、前記第1のビデオピクチャーの前記複数のマクロブロックのそれぞれに対して、該マクロブロックがAC予測を用いてコード化されているかどうかを示す、1つのAC予測状態ビットを含むことを特徴とする請求項7に記載の方法。前記エンコードされたビットプレーンは、ビットストリーム内のフィールドまたはフレームレイヤにおいて伝送されることを特徴とする請求項7に記載の方法。前記コンピュータシステムに、請求項7に記載の方法を実行させるための前記コンピュータ実行可能命令を記憶したことを特徴とするコンピュータ読取り可能記憶媒体。コンピュータシステムに記憶されたコンピュータ実行可能命令を前記コンピュータシステムが実行することによって実施される方法であって、前記コンピュータシステムが、エンコードされたビットプレーンを受信すること、および第1のビデオピクチャーの複数のマクロブロックに対するAC予測状態情報を示す前記ビットプレーンをデコードすることを含み、第2のビデオピクチャーが、1つまたは複数のイントラマクロブロックおよび1つまたは複数のインターマクロブロックを含み、マクロブロック当り1ビットのAC予測状態ビットが、前記1つまたは複数のインターマクロブロックのいずれかではなく、前記1つまたは複数のイントラマクロブロックのそれぞれに対して伝送されることを特徴とする方法。前記ビットプレーンは、前記第1のビデオピクチャーの前記複数のマクロブロックのそれぞれに対して、該マクロブロックがAC予測を用いてコード化されているかどうかを示す、1つのAC予測状態ビットを含むことを特徴とする請求項11に記載の方法。前記エンコードされたビットプレーンは、ビットストリーム内のフィールドレイヤまたはフレームレイヤにおいて伝送されることを特徴とする請求項11に記載の方法。前記コンピュータシステムに、請求項11に記載の方法を実行させるための前記コンピュータ実行可能命令を記憶したことを特徴とするコンピュータ読取り可能記憶媒体。コンピュータシステムに記憶されたコンピュータ実行可能命令を前記コンピュータシステムが実行することによって実施される方法であって、前記コンピュータシステムが、複数の利用可能なビットプレーンモードの群から1つのビットプレーンモードを選択すること、前記選択したビットプレーンモードに従って、ビデオピクチャーの複数のマクロブロックに対するAC予測状態情報を示すビットプレーンを処理すること、および、第2のビデオピクチャーについて、該第2のビデオピクチャーの複数のマクロブロックのすべてではなく、少なくとも1つのマクロブロックに対して、マクロブロックレイヤにおいて伝送されたAC予測状態ビットを処理することを含み、前記第2のビデオピクチャーが、1つまたは複数のイントラマクロブロックおよび1つまたは複数のインターマクロブロックを含み、前記AC予測状態ビットは、前記前記1つまたは複数のインターマクロブロックのいずれかではなく、前記1つまたは複数のイントラマクロブロックのそれぞれに対して伝送されるマクロブロック当り1ビットのAC予測状態ビットであることを特徴とする方法。コンピュータシステムに記憶されたコンピュータ実行可能命令を前記コンピュータシステムが実行することによって実施される方法であって、前記コンピュータシステムが、ロースキップモード、カラムスキップモード、ノーマル2モード、ノーマル6モード、および1つまたは複数の差分モードを含む複数の利用可能なビットプレーンコーディング/デコーディングモードの群から1つのビットプレーンコーディング/デコーディングモードを選択すること、前記選択したビットプレーンコーディング/デコーディングモードに従って、ビデオピクチャーの複数のマクロブロックに対するAC予測状態情報を示すビットプレーンを処理することを含むことを特徴とする方法。コンピュータシステムに記憶されたコンピュータ実行可能命令を前記コンピュータシステムが実行することによって実施される方法であって、前記コンピュータシステムが、ビデオピクチャーの複数のマクロブロックに対してAC予測状態情報を示すビットプレーンをエンコードすること、前記エンコードされたビットプレーンを伝送すること、および、第2のビデオピクチャーの1つまたは複数のイントラマクロブロックのそれぞれについて、マクロブロックレイヤにおいてマクロブロック当り1ビットのAC予測状態ビットを伝送することを含み、前記第2のビデオピクチャーが、1つまたは複数のイントラマクロブロックおよび1つまたは複数のインターマクロブロックを含み、前記マクロブロック当り1ビットのAC予測状態ビットが、前記1つまたは複数のインターマクロブロックのいずれかではなく、前記1つまたは複数のイントラマクロブロックのそれぞれに対して伝送されることを特徴とする方法。前記第2のビデオピクチャーは、動き補償ピクチャーであることを特徴とする請求項17に記載の方法。コンピュータシステムに記憶されたコンピュータ実行可能命令を前記コンピュータシステムが実行することによって実施される方法であって、前記コンピュータシステムが、エンコードされたビットプレーンを受信すること、ビデオピクチャーの複数のマクロブロックに対するAC予測状態情報を示す前記ビットプレーンをデコードすること、および、第2のビデオピクチャーの1つまたは複数のイントラマクロブロックのそれぞれについて、マクロブロックレイヤにおいてマクロブロック当り1ビットのAC予測状態ビットを受信することを含み、前記第2のビデオピクチャーが、1つまたは複数のイントラマクロブロックおよび1つまたは複数のインターマクロブロックを含み、前記マクロブロック当り1ビットのAC予測状態ビットが、前記1つまたは複数のインターマクロブロックのいずれかではなく、前記1つまたは複数のイントラマクロブロックのそれぞれに対して受信されることを特徴とする方法。前記第2のビデオピクチャーは、動き補償ピクチャーであることを特徴とする請求項19に記載の方法。AC予測状態およびマクロブロックフィールド/フレームコード化タイプ情報のためのビットプレーンコーディングおよびデコーディングを提供する。要約すると、ビデオコーディングおよびデコーディングのための様々な技術およびツールについて詳細な説明をする。例えば、エンコーダビットプレーンは、AC予測状態情報をコード化する。別の例としては、エンコーダは、インターレースフレームコード化ピクチャーにおけるマクロブロックのフィールド/フレーム変換タイプをシグナリングする。デコーダは、対応するデコーディングを実行する。記述される実施形態は、それに限定はされないが、以下に示すものを含む、記載される技術およびツールの1つまたは複数を実現する。一態様において、エンコーダ/デコーダは、複数の利用可能なビットプレーンモードの群からビットプレーンモードを選択し、前記選択されたビットプレーンモードに従って、ビデオピクチャーの複数のマクロブロックに対するAC予測状態情報を指示するビットプレーンを処理する。別の態様においては、エンコーダは、ビデオピクチャーの複数のマクロブロックに対するAC予測状態情報を指示するビットプレーンをエンコードして、このエンコードしたビットプレーンをシグナリングする。別の態様においては、デコーダは、ビデオピクチャーの複数のマクロブロックに対するAC予測状態情報を指示する、エンコードされたビットプレーンを受け取り、そのビットプレーンをデコードする。別の態様においては、ビデオシーケンスにおける第1インターレースビデオフレームに対して、デコーダは、第1のインターレースビデオフレームに対してフレームレイヤにおいてシグナリングされたビットプレーンをデコードする。このビットプレーンは、第1のインターレースビデオフレームの複数のマクロブロックに対するフィールド/フレーム変換タイプを表わす。ビデオシーケンスにおける第2のインターレースビデオフレームに対して、第2のインターレースビデオフレームの少なくとも1つであるが、全部ではない複数のマクロブロックについて、デコーダは、マクロブロックレイヤにおいてシグナリングされたマクロブロック単位フィールド/フレーム変換タイプビットを処理する。別の態様においては、ビデオシーケンスにおける第1のインターレースビデオフレームに対して、エンコーダはビットプレーンをエンコードして、第1のインターレースビデオフレームに対して、そのビットプレーンをフレームレイヤにおいてシグナリングする。このビットプレーンは、第1のインターレースビデオフレームの複数のマクロブロックに対するフィールド/フレーム変換タイプを表わす。ビデオシーケンスの第2のインターレースビデオフレームに対して、第2のインターレースビデオフレームの少なくとも1つであるが全部ではない複数のマクロブロックのそれぞれについて、エンコーダは、マクロブロック単位フィールド/フレーム変換タイプビットをマクロブロックレイヤにおいてシグナリングする。別の態様においては、デコーダは、フレームレイヤにおいてシグナリングされたビットプレーンをデコードする手段であって、このビットプレーンは、第1のインターレースビデオフレームのための第1のビットプレーンを含み、この第1のビットプレーンは第1のインターレースビデオフレームの複数のマクロブロックに対するフィールド/フレーム変換タイプを表わす手段と、マクロブロックレイヤにおいてシグナリングされるマクロブロック単位フィールド/フレーム変換タイプビットを処理する手段であって、このマクロブロック単位フィールド/フレーム変換タイプビットは、第2のインターレースビデオフレームの1つまたは複数であるが、全部ではない複数のマクロブロックのそれぞれに対するマクロブロック単位フィールド/フレーム変換タイプビットを含む手段とを備える。これらの様々な技術およびツールは、組合せまたは単独で使用することができる。追加の特徴および利点は、添付の図面を参照して行う、様々な実施形態の詳細な説明によって明白になるであろう。本発明は、プログレッシブおよびインターレースビデオの効率的な圧縮と復元のための技術およびツールに関する。様々な記載の実施形態において、ビデオエンコーダおよびデコーダには、プログレッシブおよびインターレースビデオをエンコードおよびデコードするための技術、および様々なレイヤまたはレベル例えば、シーケンスレベル、フレームレベル、フィールドレベル、マクロブロックレベル、および/またはブロックレベルを含むビットストリームフォーマットまたは構文で使用される、対応するシグナリング技術が組み込まれている。本明細書に記述した実施形態に対して、様々な代替形態が可能である。例えば、フローチャート図を参照して説明する技法は、フローチャートに示す段階の順序を変えたり、ある段階を反復または省略したりすることなどによって変更することができる。別の例として、いくつかの実現形態は、特定のマクロブロックフォーマットを参照して説明するが、その他のフォーマットも使用することができる。また、前方予測を参照して説明する技法およびツールは、その他のタイプの予測にも応用可能である。これらの様々な技法およびツールは、組合せまたは単独で使用することができる。様々な実施形態は、記載の技法およびツールの1つまたは複数を実装している。本明細書に記述する、いくつかの技法およびツールは、ビデオエンコーダおよびデコーダにおいて、またはビデオエンコーディングまたはデコーディングに特に限定されないその他のシステムにおいて、使用可能である。I.コンピューティング環境図7は、記述した実施形態のいくつかを実装することのできる、適当なコンピューティング環境700の一般的な例を示す図である。このコンピューティング環境700は、本技法およびツールが広範な汎用および専用のコンピューティング環境において実装することができるので、使用または機能の範囲についてのいかなる限定を示唆するものではない。図7を参照すると、コンピューティング環境700には、少なくとも1つの処理ユニット710およびメモリ720が含まれる。図7において、この最も基本的な構成730を、破線で囲んである。処理ユニット710は、コンピュータ実行可能命令を実行するものであり、実際または仮想のプロセッサとすることができる。多重処理システムにおいては、複数の処理ユニットがコンピュータ実行可能命令を実行して、処理能力を増大させる。メモリ720は、揮発性メモリ例えば、レジスタ、キャッシュ、RAM、不揮発性メモリ例えば、ROM、EEPROM、フラッシュメモリ、その他、またはその2つのどれかの組合せとすることができる。メモリ720は、記載の技法およびツールの1つまたは複数を備えるビデオエンコーダまたはデコーダを実装する、ソフトウエア780を格納している。コンピューティング環境は、追加の機能を備えてもよい。例えば、コンピューティング環境700には、記憶装置740、1つまたは複数の入力装置750、1つまたは複数の出力装置760、および1つまたは複数の通信接続770が含まれる。相互接続機構図示せず、例えばバス、コントローラ、またはネットワークが、コンピューティング環境700の構成要素を相互接続する。通常、オペレーティングシステムソフトウエア図示せずは、コンピューティング環境700において実行されるその他のソフトウエアのための動作環境を提供するとともに、コンピューティング環境700の構成要素のアクティビティを調整する。記憶装置740は、取外し可能または取外し不可能としてもよく、それには、磁気ディスク、磁気テープもしくはカセット、CD-ROM、DVD、または情報を記憶するのに使用することができるとともに、コンピューティング環境700においてアクセスが可能なその他の任意の媒体がある。記憶装置740は、ビデオエンコーダまたはデコーダを実装するソフトウエア780のための命令を格納する。入力装置750は、キーボード、マウス、ペン、またはトラックボールなどのタッチ入力装置、音声入力装置、スキャン装置、あるいはコンピューティング環境700への入力を提供するための他の装置とすることができる。音声またはビデオエンコーディングのために、入力装置750は、音声カード、ビデオカード、TVチューナカード、あるいはアナログまたはディジタル形態で音声またはビデオ入力を受け入れる類似の装置、または音声またはビデオサンプルをコンピューティング環境700に読み込むCD-ROMもしくはCD-RWとすることができる。出力装置760は、ディスプレイ、プリンタ、スピーカ、CDライタ、またはコンピューティング環境700からの出力を提供する他の装置とすることができる。通信接続770は、通信媒体を介して別のコンピューティングエンティティに通信することを可能にする。通信媒体は、コンピュータ実行可能命令、音声またはビデオ入力もしくは出力、または被変調データ信号内のその他のデータなどの情報を伝達する。被変調データ信号とは、その信号内に情報をエンコードするように、その信号の1つまたは複数の特徴を設定または変更した信号である。一例であり、限定ではないが、通信媒体としては、電気、光、RF、赤外線、音響またはその他の搬送波で実現される、有線または無線技法が挙げられる。本技法およびツールは、コンピュータ読取り可能記憶媒体の一般的な文脈において説明することができる。コンピュータ読取り可能記憶媒体とは、コンピューティング環境内でアクセスが可能な任意の利用可能な媒体である。一例であり、限定ではないが、コンピューティング環境700において、コンピュータ読取り可能記憶媒体としては、メモリ720、記憶装置740、通信媒体、および前記の任意の組合せがある。本技法およびツールは、コンピューティング環境における実行用の実プロセッサまたは仮想プロセッサ上で実行されているコンピュータ実行可能命令、例えばプログラムモジュール内に含まれるものなどの一般的な文脈において説明することができる。一般に、プログラムモジュールには、特定のタスクを実行するか、または特定の抽象データ型を実装する、ルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造などが含まれる。プログラムモジュールの機能は、様々な実施形態において必要に応じて組み合わせても、またはプログラムモジュール間で分割してもよい。提示の目的で、詳細な説明においては、推定するestimate、補償するcompensate、予測するpredict、および適用するapplyなどの用語を使用して、コンピューティング環境におけるコンピュータ動作を説明する。これらの用語は、コンピュータが実行する動作に対する高レベルな抽象であって、人が実行する行動と混同すべきではない。これらの用語に対応する実際のコンピュータ動作は、実装方法に応じて変化する。II.汎用ビデオエンコーダおよびデコーダ図8は、それと合わせていくつかの記載の実施形態を実装することのできる、汎用ビデオエンコーダ800のブロック図である。図9は、それと合わせていくつかの記載の実施形態を実装することのできる、汎用ビデオデコーダ900のブロック図である。エンコーダ800およびデコーダ900の範囲におけるモジュール間に示してある関係は、エンコーダおよびデコーダ内での情報の一般的な流れを指示しており、簡単にするためにその他の関係は図示していない。特に、図8および図9には、通常、ビデオシーケンス、ピクチャー、マクロブロック、ブロックなどに使用される、エンコーダ設定、モード、テーブルなどを示す、副次的な情報を示さない。そのような副次的な情報は、通常は、その副次的情報をエントロピーエンコーディングした後に、出力ビットストリームにして送られる。出力ビットストリームのフォーマットは、ウインドウズメディアビデオWindows登録商標MediaVideoバージョン9フォーマットまたはその他のフォーマットとすることができる。エンコーダ800およびデコーダ900は、ビデオフレーム、ビデオフィールド、またはフレームとフィールドの組合せとすることができる、ビデオピクチャーを処理する。ピクチャーレベルおよびマクロブロックレベルにおけるビットストリーム構文およびセマンティクスは、フレームが使用されているか、またはフィールドが使用されているかによって変わることがある。マクロブロック編成および全体的なタイミングに対する変更があることもある。エンコーダ800およびデコーダ900は、ブロックベースであり、フレームに対して4:2:0のマクロブロックフォーマットを使用し、各マクロブロックは、しばしば、1つの16×16マクロブロックとして扱われる4つの8×8輝度ブロックと、2つの8×8クロミナンスブロックとを含む。フィールドに対しては、同じか、または異なるマクロブロック編成およびフォーマットを使用することができる。8×8ブロックは、異なる段階、例えば周波数変換段階およびエントロピーエンコーディング段階において、さらに細分してもよい。例示的ビデオフレーム編成について、以下にさらに詳細に述べる。実現形態および所望の圧縮タイプに応じて、エンコーダまたはデコーダのモジュールは、追加、省略、複数モジュールへの分割、他のモジュールとの結合、および/または同様なモジュールによる置換を行うことができる。代替実施形態において、異なるモジュール、および/またはその他のモジュール構成を備えるエンコーダまたはデコーダは、記載の技法の1つまたは複数を実行する。A.ビデオフレーム編成いくつかの実現形態においては、エンコーダ800およびデコーダ900は、次のように編成されたビデオフレームを処理する。フレームは、ビデオ信号の空間情報の走査線を包含する。プログレッシブビデオに対して、これらの走査線は、1つの時点から始まり、連続する走査線を介してフレームの下端へと続くサンプルを包含する。プログレッシブビデオフレームは、図10に示すマクロブロック1000のようなマクロブロックに区画される。マクロブロック1000は、従来型4:2:0マクロブロックフォーマットに従って、4つの8×8輝度ブロックY1からY4および、4つの輝度ブロックと同じ位置にあるが、解像度が水平および垂直に半分である、2つの8×8クロミナンスブロックを含む。この8×8ブロックは、異なる段階、例えば周波数変換例えば、8×4、4×8または4×4DCTおよびエントロピーエンコーディング段階においてさらに細分してもよい。プログレッシブIフレームとは、イントラコード化されたプログレッシブビデオフレームである。プログレッシブPフレームとは、前方予測を使用してコード化されたプログレッシブビデオフレームであり、プログレッシブBフレームとは、双方向予測を使用してコード化されたプログレッシブビデオフレームである。プログレッシブPおよびBフレームには、イントラコード化されたマクロブロックに加えて、様々なタイプの予測マクロブロックを含めてもよい。インターレースビデオフレームは、フレームの2つの走査からなり、2つの走査とは、フレームの偶数走査線を含む走査トップフィールドと、フレームの奇数走査線を含む走査ボトムフィールドである。この2つのフィールドは、2つの異なる時間timeperiodsを提示してもよく、また同じ時間のものであってもよい。図11Aには、インターレースビデオフレーム1100の一部分を示してあり、これには、インターレースビデオフレーム1100の左上部における、トップフィールドとボトムフィールドとの交互走査線alternatinglinesが含まれる。図11Bには、エンコーディング/デコーディングするためにフレーム1130として編成された、図11Aのインターレースビデオフレーム1100を示してある。インターレースビデオフレーム1100は、マクロブロック1131および1132などのマクロブロックに区画されており、これらは図10に示す4:2:0フォーマットを使用している。輝度プレーンluminanceplaneにおいては、各マクロブロック1131、1132は、トップフィールドからの8本の走査線と、それと交互にあるボトムフィールドからの8本の走査線との合計で16本の走査線を含み、各走査線の長さは16ピクセルである。マクロブロック1131、1132内の輝度ブロックおよびクロミナンスブロックの実際の編成および配置は図に示してないが、これは実際には様々なエンコーディング決定によって変わる可能性がある。所与のマクロブロック内で、トップフィールド情報およびボトムフィールド情報は、様々なフェーズの任意の点において、一緒にまたは別々にコード化することができる。インターレースIフレームは、インターレースビデオフレームの2つのイントラコード化されたフィールドであり、この場合に、マクロブロックは、その2つのフィールドについての情報を含む。インターレースPフレームは、前方予測を用いてコード化されたインターレースビデオフレームの2つのフィールドであり、インターレースBフレームは、双方向予測を用いてコード化されたインターレースビデオフレームの2つのフィールドであり、この場合に、マクロブロックはこれら2つのフィールドについての情報を含む。インターレースPおよびBフレームは、イントラコード化されたマクロブロックに加えて、様々なタイプの予測マクロブロックを含んでもよい。インターレースBIフレームは、インターレースIフレームとインターレースBフレームとのハイブリッドであり、これらはイントラコード化されているが、その他のフレームに対するアンカーanchorとしては使用されない。図11Cは、エンコーディング/デコーディングするためにフィールド1160として編成された、図11Aのインターレースビデオフレーム1100を示している。インターレースビデオフレーム1100の2つのフィールドのそれぞれは、マクロブロックに区画されている。トップフィールドは、マクロブロック1161のようなマクロブロックに区画され、ボトムフィールドはマクロブロック1162のようなマクロブロックに区画されている。ここでも、マクロブロックは図10に示す4:2:0フォーマットを使用し、マクロブロック内の輝度ブロックおよびクロミナンスブロックの編成および配置は図示していない。輝度プレーンにおいて、マクロブロック1161は、トップフィールドからの16本の走査線を含み、マクロブロック1162は、ボトムフィールドからの16本の走査線を含み、各走査線の長さは16ピクセルである。インターレースIフィールドとは、インターレースビデオフレームの、単一の別個に表現されたフィールドである。インターレースPフィールドとは、前方予測を用いてコード化されたインターレースビデオフレームの、単一の別個に表現されたフィールドであり、インターレースBフィールドとは、双方向予測を用いてコード化されたインターレースビデオフレームの、単一の別個に表現されたフィールドである。インターレースPおよびBフィールドには、イントラコード化されたマクロブロックに加えて、様々なタイプの予測マクロブロックを含めてもよい。インターレースBIフィールドとは、インターレースIフィールドとインターレースBフィールドとのハイブリッドであり、これらはイントラコード化されているが、その他のフィールドのためのアンカーとしては使用されない。エンコーディング/デコーディングのためにフィールドとして編成されるインターレースビデオフレームには、異なるフィールドタイプの様々な組合せを含めることができる。例えば、そのようなフレームは、トップフィールドおよびボトムフィールドの両方において同一のフィールドタイプであっても、各フィールドにおいて異なるフィールドタイプであってもよい。一実施形態においては、フィールドタイプの可能な組合せとしては、I/I、I/P、P/I、P/P、B/B、B/BI、BI/B、およびBI/BIが含まれる。ピクチャーという用語は、ソースの、コード化された、または再構成された画像データを指す。プログレッシブビデオでは、ピクチャーは、プログレッシブビデオフレームである。インターレースビデオでは、ピクチャーは、文脈に応じて、インターレースビデオフレーム、そのフレームのトップフィールド、またはそのフレームのボトムフィールドを指すことがある。代替的に、エンコーダ800およびデコーダ900は、オブジェクトベースであるか、異なるマクロブロックまたはブロックフォーマットを使用するか、または、8×8ブロックおよび16×16マクロブロックとは異なる大きさまたは構成のピクセル集合に対する処理を実行する。B.ビデオエンコーダ図8は、汎用ビデオエンコーダシステム800のブロック図である。エンコーダシステム800は、現行ピクチャーcurrentpicture805例えば、プログレッシブビデオフレーム、インターレースビデオフレーム、またはインターレースビデオフレームのフィールドを含む、ビデオピクチャーのシーケンスを受け取り、圧縮ビデオ情報895を出力として生成する。ビデオエンコーダの特定の実施形態では、汎用エンコーダ800の変形形態または補完バージョンが使用される。エンコーダシステム800は、予測ピクチャーおよびキーピクチャーを圧縮する。提示の目的で、図8は、キーピクチャーがエンコーダシステム800を通過する経路および予測ピクチャーの経路を示している。エンコーダシステム800の構成要素の多くが、キーピクチャーと予測ピクチャーの両方を圧縮するのに使用される。これらの構成要素によって実行される厳密な処理は、圧縮中の情報のタイプに応じて変わる可能性がある。予測ピクチャー例えば、プログレッシブPフレームまたはBフレーム、インターレースPフィールドまたはBフィールド、あるいはインターレースPフレームまたはBフレームは、一般に参照ピクチャーまたはアンカーと呼ばれる1つまたは複数の他のピクチャーからの予測または差分によって表わされる。予測残差predictionresidualとは、予測されたものと原ピクチャーとの間の差分である。それとは異なり、キーピクチャー例えば、プログレッシブIフレーム、インターレースIフィールド、またはインターレースIフレームは、他のピクチャーを参照することなく圧縮される。現行ピクチャー805が前方予測ピクチャーである場合に、動き推定器motionestimator810は、1つまたは複数の参照ピクチャー、例えばピクチャー記憶装置820にバッファリングされた、再構成された先のピクチャー825を基準にして、マクロブロックまたは現行ピクチャー805のその他のピクセルの集合の動きを推定する。現行ピクチャー805が双方向予測ピクチャーである場合には、動き推定器810は、例えば、インターレースBフィールドに対する最大4つの再構成参照ピクチャーを基準にして、現行ピクチャー805における動きを推定する。通常、動き推定器は、1つまたは複数の時間的に以前の参照ピクチャーおよび1つまたは複数の時間的に未来の参照ピクチャーを基準として、Bピクチャー内の動きを推定する。したがって、エンコーダシステム800は、複数の参照ピクチャーのための別個の記憶装置820および822を使用することができる。動き推定器810は、ピクセル、1/2ピクセル、1/4ピクセル、またはその他の増分によって動きを推定することができ、動き推定の精度を、ピクチャー毎に、またはその他に基づいて切り替えることができる。動き推定器810および補償器compensator830は、フレーム毎に、またはその他に基づいて、参照ピクチャーピクセル内挿のタイプ間で例えば、双三次bicubicおよび双一次bilinearの間で切り替えることもできる。動き推定の精度は、水平および垂直方向において、同じでも異なってもよい。動き推定器810は、差分動きベクトルdifferentialmotionvector情報などの動き情報815を、副次的情報として出力する。動き補償器motioncompensator830は、再構成ピクチャー複数を含む825に動きベクトルを適用して、動き補償現行ピクチャー835を形成する。この予測は完全であることはまれであり、動き補償現行ピクチャー835と元の現行ピクチャー805との間の差分は予測残差845である。後に行うピクチャーの再構成中に、予測残差845は、元の現行ピクチャー805により近い再構成ピクチャーを得るために、動き補償現行ピクチャー835に加えられる。不可逆的圧縮lossycompressionにおいては、それでも、いくらかの情報は元の現行ピクチャー805から失われている。代替的に、動き推定器および動き補償器は別のタイプの動き推定/補償を適用する。周波数変換器frequencytransformer860は、空間ドメインビデオ情報を周波数ドメインすなわち、スペクトルデータに変換する。ブロックベースのビデオピクチャーでは、周波数変換器860は、DCT、DCTの変形形態、またはその他のブロック変換を、ピクセルデータのブロックまたは予測残差データに適用して、周波数変換係数のブロックを生成する。代替的に、周波数変換器860は、フーリエ変換などの別の従来型周波数変換を適用するか、またはウェーブレット分析またはサブバンド分析を使用する。周波数変換器860は、8×8、8×4、4×8、4×4またはその他の大きさの周波数変換を適用することができる。次いで、量子化器quantizer870は、スペクトルデータ係数のブロックを量子化する。量子化器は、ピクチャー毎またはその他に基づき変化するステップサイズを有するスペクトルデータに、均一な、スカラー量子化を適用する。代替的に、量子化器は、別のタイプの量子化、例えば不均一nonunifom、ベクトル、または非適応nonadaptiveの量子化を、スペクトルデータ係数に適用するか、または周波数変換を使用しないエンコーダシステム内の空間ドメインデータを、直接的に量子化する。適応量子化adaptivequantizationに加えて、エンコーダ800は、フレーム切捨てframedropping、適応フィルタリング、またはその他のレート制御の技法を使用することができる。エンコーダ800は、特定のタイプの情報を持たないマクロブロックである、スキップされたマクロブロックに対して、特別なシグナリングを使用してもよい。再構成された現行ピクチャーが、後続の動き推定/補償に対して必要な場合には、逆量子化器inversequantizer876が、量子化されたスペクトルデータ係数に対して逆量子化を実行する。次いで、逆周波数変換器inversefrequencytransformer866が、周波数変換器860の動作の逆を実行して、予測ピクチャーに対して再構成予測残差または再構成キーピクチャーを生成する。現行ピクチャー805がキーピクチャーである場合には、再構成キーピクチャーは、再構成現行ピクチャー図示せずとして取り込まれる。現行ピクチャー805が予測ピクチャーである場合には、再構成予測残差が、動き補償現行ピクチャー835に加えられて、再構成現行ピクチャーが形成される。ピクチャー記憶装置820、822の一方または両方が、動き補償予測に使用するために再構成された現行ピクチャーをバッファリングする。いくつかの実現形態において、エンコーダは、デブロッキングフィルタdeblockingfilterを、再構成されたフレームに適用して、ピクチャー内の不連続およびその他のアーチファクトを適応スムージングする。エントロピーコーダentropycoder880は、量子化器870の出力に加えて、ある種の副次情報例えば、動き情報815、量子化ステップサイズを圧縮する。一般的なエントロピーコーディング技法としては、算術コーディング、差分コーディング、ハフマンコーディングHuffmancoding、ランレングスrunlengthコーディング、LZコーディング、ディクショナリコーディング、および前記の組合せを挙げることができる。エントロピーコーダ880は、通常、様々な種類の情報例えば、DC係数、AC係数、異なる種類の副次情報に対して様々なコーディング技法を使用し、特定のコーディング技法の範囲内の複数のコードテーブルから選択することができる。エントロピーコーダ880は、マルチプレクサ[MUX]890に、圧縮ビデオ情報895を提供する。MUX890はバッファを含むことができ、バッファレベル指示器を、レート制御のためにビットレート適応モジュールにフィードバックしてもよい。MUX890の前または後に、圧縮ビデオ情報895を、ネットワークを介して伝送するために、チャネルコード化することができる。チャネルコーディングは、圧縮ビデオ情報895に、誤差検出errordetectionおよび補正データcorrectiondataを適用することができる。C.ビデオデコーダ図9は、汎用ビデオデコーダシステム900のブロック図である。デコーダシステム900はビデオピクチャーの圧縮シーケンスのための情報995を受け取り、再構成されたピクチャー905例えば、プログレッシブビデオフレーム、インターレースビデオフレーム、またはインターレースビデオフレームのフィールドを含む出力を生成する。ビデオデコーダの特定の実施形態は、通常、汎用デコーダ900の変形形態または補完バージョンを使用する。デコーダシステム900は、予測ピクチャーおよびキーピクチャーを復元decompressする。提示の目的で、図9は、キーピクチャーがデコーダシステム900を通過する経路および前方予測ピクチャーの経路を示してある。デコーダシステム900の構成要素の多くは、キーピクチャーおよび予測ピクチャーの両方を復元するために使用される。これらの構成要素が実行する厳密な動作は、復元される情報のタイプによって変わる可能性がある。DEMUXデマルチプレクサ990は、圧縮ビデオシーケンスのための情報995を受け取り、エントロピーデコーダ980に対して受取った情報を利用可能にする。DEMUX990には、ジッターバッファjitterbufferとともに、その他のバッファも含めることができる。DEMUX990の前または後に、圧縮ビデオ情報をチャネルデコードして、誤差検出および補正についての処理をすることができる。エントロピーデコーダ980は、エントロピーコード化された量子化データに加えて、エントロピーコード化された副次情報例えば、動き情報915、量子化ステップサイズをデコードして、通常、エンコーダにおいて実行されるエントロピーエンコーディングの逆を適用する。エントロピーデコーディング技法としては、算術デコーディング、差分デコーディング、ハフマンデコーディング、ランレングスデコーディング、LZデコーディング、ディクショナリデコーディング、および前記の組合せを挙げることができる。エントロピーデコーダ980は、通常、様々な種類の情報例えば、DC係数、AC係数、異なる種類の副次情報に対して、様々なデコーディング技法を使用し、特定のデコーディング技法の範囲内の複数コードテーブルの中から選択をすることができる。デコーダ900は、例えば、動きベクトルに対する1つまたは複数の予測子predictorsを計算すること、差分動きベクトルをエントロピーデコーディングすること、およびデコードされた差分動きベクトルと動きベクトルを再構成する予測子とを結合することによって、動き情報915をデコードする。動き補償器930は、動き情報915を1つまたは複数の参照ピクチャー925に適用して、再構成中のピクチャー905の予測935を形成する。例えば、動き補償器930は、1つまたは複数のマクロブロック動きベクトルを使用して、参照ピクチャー複数を含む925内のマクロブロック複数を含むを見つける。1つまたは複数のピクチャー記憶装置例えば、ピクチャー記憶装置920、922は、参照ピクチャーとして使用するために、先に再構成されたピクチャーを格納する。一般に、Bピクチャーは複数の参照ピクチャー例えば、少なくとも1つの、時間的に以前の参照ピクチャー、および少なくとも1つの、時間的に将来の参照ピクチャーを有する。したがって、デコーダシステム900は、複数の参照ピクチャーのために、別個のピクチャー記憶装置920、922を使用することができる。動き補償器930は、ピクセル、1/2ピクセル、1/4ピクセル、またはその他の増分によって、動きを補償することが可能であり、また動き補償の精度を、ピクチャー毎またはその他に基づいて切り替えることが可能である。動き補償器930は、参照ピクチャーピクセル内挿のタイプ間で例えば、双三次と双一次の間で、フレーム毎またはその他に基づいて切り換えをすることができる。動き補償の精度は、水平および垂直方向において、同じでも異なってもよい。代替的に、動き補償は、別のタイプの動き補償を適用する。動き補償器による予測は、完全であることはまれであるので、デコーダ900も、予測残差を再構成する。逆量子化器970は、エントロピーデコードされたデータを逆量子化する。一般に、逆量子化器は、ピクチャー毎またはその他に基づいて、変わるステップサイズを有するエントロピーデコードされたデータに、均一な、スカラー逆量子化を適用する。代替的に、逆量子化器は、別のタイプの逆量子化をデータに適用して、例えば、不均一量子化、ベクトル量子化、または非適応量子化の後に再構成するか、または逆周波数変換を使用しないデコーダシステム内で、空間ドメインデータを直接的に逆量子化する。逆周波数変換器960は、量子化された周波数ドメインデータを空間ドメインビデオ情報に変換する。ブロックベースビデオピクチャーに対して、逆周波数変換器960は、逆DCT[IDCT]、IDCTの変形形態、またはその他の逆ブロック変換を、周波数変換係数のブロックに適用して、キーピクチャーまたは予測ピクチャーに対する、ピクセルデータまたは予測残差データをそれぞれ生成する。代替的に、逆周波数変換器960は、逆フーリエ変換などの別の従来型逆周波数変換を適用するか、またはウェーブレット合成またはサブバンド合成を使用する。この逆周波数変換器960は、8×8、8×4、4×8、4×4、またはその他の大きさの逆周波数変換を適用することができる。予測ピクチャーに対して、デコーダ900は、再構成された予測残差945と動き補償予測935を結合して、再構成ピクチャー905を形成する。デコーダが、後続の動き補償のために再構成ピクチャー905を必要とするときには、ピクチャー記憶装置例えば、ピクチャー記憶装置920の一方または両方が、次のピクチャーの予測に使用する再構成ピクチャー905をバッファリングする。いくつかの実施形態においては、デコーダ900は、デブロッキングフィルタを再構成ピクチャーに適用して、ピクチャー内の不連続およびその他のアーチファクトを適応スムージングする。III.ビットプレーンコーディングBitplaneCodingいくつかの実施形態において、マクロブロック専用macroblockspecificバイナリ情報を、ビットプレーンとしてコード化して、ビットストリーム内でマクロブロックよりも高いレベル例えば、フレームレベル、フィールドレベル、またはその他のレベルにおいて伝送することができる。エンコーダは、例えば、ある種のデータをエンコーディングするための、異なるコーディングモードの相対的効率に基づいて、いくつかのコーディングモードの中から選択をすることができる。ビットプレーンコーディング技法は、フレームまたはフィールド内のマクロブロック間の、ある種のバイナリ情報の空間的相関を利用する。マクロブロックレベルのシグナリングと組み合わせると、記載の技法およびツールは、マクロブロック専用情報の柔軟で効率的なシグナリングを提供する。いくつかの実現形態においては、エンコーダは、ビットプレーンコーディングのために、以下に示すような、INVERT、IMODEおよびDATABITS構文要素を使用する。INVERT要素は、ビットプレーンが、0に等しいビットまたは1に等しいビットをさらに有するかどうかを指示する1ビットコードである。INVERTおよびビットプレーンコーディングモードに応じて、デコーダは、デコードされたビットプレーンを反転して、オリジナルを再生することができる。IMODE要素は、ビットプレーンコーディングモードを表わすVLCである。一般に、より頻繁に発生するコーディングモードをエンコードするために、より短いコードが使用される。DATABITS要素は、IMODE要素にシグナリングされたコーディングモードに基づく記号symbolsのエントロピーコード化されたストリームである。例えば、フレームまたはフィールド内のマクロブロックに対するバイナリ情報は、2次元配列としてコード化され、フレームヘッダまたはフィールドヘッダに入れて伝送することができる。各配列の大きさは、rowMB×colMBであり、ここでrowMBおよびcolMBは、それぞれ、そのフレームまたはフィールドにおけるマクロブロックの行および列の数である。いくつかの実施形態においては、各配列は、7つのビットプレーンコーディングモードの1つにおける、例えば、ラスタースキャン順序においてマクロブロックを表わす1組の連続するビットとしてコード化されている。この7つのビットプレーンコーディングモードについて以下に述べる。ロースキップモードRow-skipModeロースキップモードにおいては、ROWSKIP要素は、ビットプレーンの各行にROWBITS要素が存在するかどうかを指示する。ビットプレーンの行の値全体がゼロの場合には、ROWSKIP=0であり、ROWBITSはスキップされる。行において少なくとも1つの値がゼロでない場合には、ROWSKIP=1であり、ROWBITSは行における各値に対して1ビットを含む。カラムスキップモードColumn-skipmodeカラムスキップモードにおいて、COLUMNSKIP要素は、ビットプレーン内の各列に対してCOLUMNBITS要素が存在するかどうかを指示する。ビットプレーンの列の値全体がゼロの場合には、COLUMNSKIP=0であり、COLUMNBITSはスキップされる。列において少なくとも1つの値がゼロでない場合には、COLUMNSKIP=1であり、COLUMNBITSは列における各値に対して1ビットを含む。ノーマル2モードNormal-2modeノーマル2モードにおいて、rowMB×colMBが奇数の場合には、最初の記号は、その最初の記号の値に一致する1ビットで表わされ、後続の記号はVLCテーブルを使用してペアにしてエンコードされる。ノーマル6モードNormal-6modeノーマル6モードにおいて、ビットプレーンは、2×3タイルまたは3×2タイルにおける6個のピクセルの群としてエンコードされる。ビットプレーンは、1組のタイリングルールtilingruleを使用して、2×3タイルおよび3×2タイルの群に分けられて、残りのピクセルそれがある場合は、ロースキップモードおよびカラムスキップモードの変形形態を使用してエンコードされる。配列サイズが3×2または2×3の倍数である場合には、ビットプレーンは6要素長方形タイルのみでタイリングされる。3×2垂直タイルは、rowMBが3の倍数でありcolMBが3の倍数でない場合にのみ使用される。その他の場合には、2×3水平タイルが使用される。6要素長方形タイルは、可変長コードおよび固定長コードの組合せを用いてエンコードされる。Diff-2およびDiff-6モードいずれかの差分モードDiff-2またはDiff-6が使用されている場合には、差分ビットのビットプレーンは、対応するノーマルモードそれぞれ、ノーマル2またはノーマル6を使用してデコードされる。差分ビットは、原ビットプレーンを再生するために使用される。再生成プロセスは、バイナリアルファベットbinaryalphabetについての2-DDPCMである。場所i,jにおけるビットを再生成するために、予測子bpi,jが位置i,jにおけるビットbi,jから次のように生成される。差分コーディングモードでは、INVERTに基づくビット単位変換プロセスは実行されない。しかしながら、INVERTフラグは、様々な機能で使用されて、上述の予測子の導出に対する記号Aの値を指示する。より具体的には、INVERT=0の場合には、A=0であり、INVERT=1の場合には、A=1となる。ビットプレーンの実際の値は、予測子とデコードされた差分ビット値との排他的論理輪XORをとることによって得られる。上記の式において、b{i,j}は、最終デコーディングすなわち、Norm-2/Norm-6を行った後に、その予測子との差分XOR後のi,j番目の位置におけるビットである。RawモードRawモードは、マクロブロック専用バイナリ情報をバイナリ記号当り1ビットでエンコードする。Rawモードビットは、非圧縮ビットプレーンにおいて、フレームレベルまたはフィールドレベルにおいてエンコードできるが、マクロブロックに対する残りのマクロブロックレベル情報と同じ、ビットストリーム内の同一レイヤにおいて、各マクロブロックに対して、一度に一つずつエンコードすることもできる。その他のモードは、フレームレベルまたはフィールドレベルにおいてビットプレーンをエンコードし、エンコーディング中にフレームまたはフィールドを通過する第2の経路を使用する。例えば、エンコーダは、第1の経路におけるマクロブロックレベルにおいて、各マクロブロックに対するバイナリ情報例えば、AC予測状態を収集し、第2の経路におけるフレームレベルまたはフィールドレベルにおいて、そのマクロブロック専用情報をエンコードする。しかしながら、ローレイテンシlowlatency状態においては、第2の経路を回避することが有利であることがある。このように、バイナリ情報のコーディングをフレームレベルまたはフィールドレベルからマクロブロックレベルに切り替える機能によって、さらなる柔軟性が得られる。いくつかの実現形態において、エンコーダは、スライスコード化slicecodedフレームに対してRawモードを使用する。スライスは、マクロブロックの1つまたは複数の連続行を表す。空間予測に関して、スライス内のマクロブロックの1番目の行は、通常、ピクチャー内のマクロブロックの第1番目の行として扱われる。スライスを用いる場合には、通常、ピクチャーレイヤにおいてビットプレーンとして表わされる情報は、マクロブロックレイヤにおいてrawモードでシグナリングされて、その結果、各マクロブロックは、それ自体のローカル情報を伝える。上述のビットプレーンコーディングモードに加えて、その他のビットプレーンコーディングモードを使用することができる。例えば、エンコーダは、任意の大きさのピクセル群としてビットプレーンをエンコードすることができる。ノーマル6モードの変形形態においては、ビットプレーン内のバイナリ情報が予測可能なパターン内に配置されている場合などに、エンコーダは、最大長方形largestrectanglesモードを利用することができる。エンコーダは、様々なタイリング規則の組を用いて、ビットプレーンを任意の大きさのタイルにグループ化することができる。次いで、可変長コードおよび固定長コードの組合せ、またはその他のコーディングアレンジメントを用いて、これらのタイルをエンコードすることができる。いくつかの実現形態における、ビットプレーンコーディングについてのさらなる情報は、以下に示す、IV、VおよびVI節を参照されたい。IV.インターレースフレームコード化ピクチャーのためのフィールド/フレームタイプシグナリングにおける革新記載の実施形態には、インターレースフレームコード化ピクチャー例えば、インターレースIフレーム、インターレースPフレーム、インターレースBフレームなどにおけるフィールド/フレームタイプ情報をシグナリングする技法およびツールが含まれる。例えば、記載の技法およびツールには、フレームレベルビットプレーンコーディングまたはマクロブロックレベルコーディングのいずれかを使用して、フィールド/フレームタイプ情報をエンコードすることのできるエンコーダが含まれる。デコーダは、対応するデコーディングを実行する。記載の技法およびツールは、他の技法およびツールと互いに組み合わせて、または単独で使用することができる。一般に、大きいフィールド間動きinterfieldmotionが存在する場合には、フィールドコード化マクロブロックがより効果的であり、動きが小さい場合には、フレームコード化マクロブロックがより効果的である。エンコーダは、所与のマクロブロックに対してフィールド/フレームタイプを選択し、それがフレームコード化マクロブロックであるか、またはフィールドコード化マクロブロックであるかをビットストリーム中で指示することが可能である。マクロブロックのフィールド/フレームタイプは、マクロブロックの内部編成を指示する。再び図6を参照すると、フィールドコーディングにおいて、インターレースマクロブロック610は、輝度ブロック内のすべてのトップフィールド走査線例えば、偶数走査線0,2,...14が、フィールドコード化マクロブロック620の上半分に配置されるとともに、輝度ブロック内のすべてのボトムフィールド走査線例えば、奇数走査線1,3,...15が、フィールドコード化マクロブロックの下半分に配置されるように、並べ替えられている。フレームコード化マクロブロックでは、インターレースマクロブロック610と同様に、マクロブロックの端から端まで、トップフィールド走査線およびボトムフィールド走査線が交互にある。クロミナンスブロックは、フィールドコード化マクロブロックおよびフレームコード化マクロブロックの両方に対してインターレースの状態のままとなる。したがって、いくつかの実現形態においては、エンコーダは、いくつかのコーディングモードからマクロブロック当り1ビットモードを選択し、フレーム内の各マクロブロックに対して、単独ビット例えば、FIELDTXフラグをマクロブロックレベルで送り、そのマクロブロックに対して、そのマクロブロックがフィールドコード化されているか、またはフレームコード化されているかをデコーダに明示的に知らせる、モード決定がなされる。マクロブロックレベルのマクロブロック当り1ビットモード、またはフレームレベルの圧縮ビットプレーンモードのいずれかを選択することができることによって、そのような情報をエンコーディングするための、さらなる柔軟性が得られる。特に、マクロブロックレベルシグナリングは、フィールド/フレームコーディングモード決定ビットが、フレームの一部であって全部ではないマクロブロックに対してシグナリングされる場合に、効率的である。例えば、インターレースPフレームにおいて、フィールド/フレーム決定ビットのシグナリングは、イントラマクロブロックに対して行われるが、フィールド/フレーム決定ビットがその他の方法でシグナリングされるインターマクロブロックに対しては行われない。そのような文脈におけるビットプレーンコーディングは、外部情報をシグナリングすることとなる。他方で、フレームによっては、各マクロブロックが、フィールド/フレーム決定ビットを有する。フィールド/フレームタイプビットを一緒にグループ化して、それらをフレームレベルビットプレーンにコード化することによって、フレーム内のマクロブロック間に存在する可能性のある、フィールド/フレームタイプにおける空間的相関を利用することができる。例えば、図12は、ビットプレーンコーディングまたはマクロブロックレベルコーディングのいずれかを使用する、マクロブロックのためのフィールド/フレームタイプ情報をシグナリングするための技法1200を示すものである。エンコーダは、1210においてコーディングモードを選択する。1220において、コーディングモードがビットプレーンコーディングモードである場合に、エンコーダは、1230において、フィールド/フレームタイプ情報をビットプレーンとしてシグナリングする。そうでない場合には、1240において、エンコーダは、1250においてマクロブロックに対するフィールド/フレーム決定を指示する信号ビットを送るかどうかを決定する。1260において、シグナリング決定を行うべきマクロブロックがまだある場合には、エンコーダは、それらのマクロブロックに対する信号ビットを送るかどうかを決定する。デコーダは、対応するデコーディングを実行する。例えば、一実施形態において、FIELDTXは、全インターレースIフレームマクロブロックおよびインターレースBIフレームマクロブロックに存在するとともに、インターレースPおよびBフレーム内のイントラコード化マクロブロックに存在する、1ビット構文要素である。FIELDTX=1は、マクロブロックがフィールドコード化されていることを指示し、FIELDTX=0は、マクロブロックがフレームコード化されていることを指示する。FIELDTXビットは、ビットストリーム内のフレームレベルにおいてビットプレーンコード化されるか、または、一部または全部のマクロブロックに対して、マクロブロック当り1ビットベースで、マクロブロックレベルにおいてシグナリングされることができる。例えば、インターレースIフレームおよびインターレースBIフレームにおいて、FIELDTXビットは、ビットストリーム内のフレームレベルにおいて、またはマクロブロックレベルにおいてマクロブロック当り1ビットベースで、ビットプレーンコード化される。インターレースPフレームおよびインターレースBフレームにおいて、FIELDTXビットは、マクロブロック当り1ビットベースで、マクロブロックレベルにおいて、イントラマクロブロックに対して送られる。代替的に、フィールド/フレームタイプは、異なる方法でシグナリングされる。例えば、フィールド/フレームタイプは、異なるサイズまたはアレンジメントのビットストリーム要素を用いて、例えば、マクロブロックレベルにおいてシグナリングすることができる。別の代替形態として、フィールド/フレームタイプは、マクロブロックレベル以外のフレームレベルより下のレベル例えば、スライスレベルまたはその他のレベルにおいて、シグナリングすることが可能である。別の代替形態として、フィールド/フレームタイプは、イントラコード化フレーム内の全てよりは少ないマクロブロックに対して、マクロブロックレベルまたはその他のレベルにおいて選択的にシグナリングすることができる。V.プログレッシブピクチャーおよびインターレースピクチャーのためのAC予測シグナリングにおける革新記載の実施形態には、プログレッシブピクチャーおよびインターレースピクチャー例えば、プログレッシブIフレーム、インターレースIフレームなどにおいて、AC予測情報をシグナリングするための技法およびツールが含まれる。例えば、記載の技法およびツールは、ビットプレーンコーディングを使用してフレームまたはフィールド内のマクロブロックにおけるAC予測の使用をシグナリングするための技法およびツールを含む。記載の技法およびツールは、他の技法およびツールと互いに組み合わせて使用するか、または単独で使用することができる。例えば、エンコーダ/デコーダは、エントロピーコーディングの前に、AC係数を予測する。エンコーダは、現行ブロック内のAC係数値から、隣接する予測ブロック内の対応するAC係数値を差し引き、AC係数差分を得る。この差分は、次いでエントロピーエンコードされる。予測方向に応じて、予測子ブロックは、直上のブロック、または現行ブロックの左側のブロックである。再び図1Bを参照すると、上端予測には、現行ブロックの直上のブロック175におけるAC係数の上端行177が、現行ブロック125内のAC係数の上端行129に対する予測子として使用される。左予測には、現行ブロックの直左のブロック135内のAC係数の最左端列137が、現行ブロック125におけるAC係数の最左端列の予測子として使用される。一実施形態において、DC係数予測のために選択された予測方向が、AC係数予測用の予測方向として使用される。代替的に、AC予測の方向もシグナリングされる。AC予測の正確な仕組みは、異なるピクチャータイプに対して異なってもよい。その最も簡単な形態において、AC予測は、隣接ブロックの上端行または左列のAC係数を、係数予測子として単に使用することを含む。より複雑なAC予測においては、係数予測子は、現行ブロックおよび隣接ブロックにおける量子化のレベルに関する係数によって倍率変更される。代替的に、エンコーダおよびデコーダは、その他の仕組みを備えるAC予測を使用する。ブロックが指定の予測方向に存在しない場合には、左端列または上端行における、すべての7つのAC係数に対する予測値は、ゼロに設定される。例えば、予測方向が上方であり、現行ブロックが上端行にある場合には、現行ブロックの上端行における予測AC係数のそれぞれは、ゼロに設定されるが、この理由は、上方向には隣接ブロックがないからである。予測された行または列におけるAC係数は、現行ブロックにおける対応するデコードされたAC係数これは差分であるに加算されて、完全に再構成されて量子化された変換係数ブロックを生成する。フレームまたはフィールド内のすべてのマクロブロックに対するAC係数予測を実行することは効率的でない可能性がある。すなわち予測は、いくつかのマクロブロックにおいて有効ではないことになる。そのために、エンコーダ/デコーダは、フレームまたはフィールド内の個々のマクロブロックに対して、AC予測が使用可能か、または使用不可能かを指示するシグナリングを使用する。単一ビットの情報は、各マクロブロックに対して、マクロブロックレベルにおいて送られ、デコーダに、AC予測がマクロブロックで使用されているかどうかを明示的に通知する。しかしながら、マクロブロック当り1ビットを送ることによってのみAC予測をシグナリングするエンコーダ/デコーダは、フィールドまたはフレーム内のマクロブロックに対するAC予測状態において生じ得る空間的な相関を利用することができない。したがって、いくつかの実現形態においては、エンコーダ/デコーダは、個々のマクロブロックに対するAC予測情報を一緒にグループ化して、その情報をビットプレーンとして例えばフレームレベル、フィールドレベル、またはその他のマクロブロックレベルより上のレベルにおいてコード化することによって、フレームまたはフィールド内の、そのような空間的な相関を利用する。一実施形態において、ビットプレーンは、フレームレベル/フィールドレベルビットプレーンACPREDである。ACPREDビットプレーンについては、以下のVII節でさらに詳細を述べる。図13は、AC予測情報のビットプレーンコーディングまたはデコーディングについての技法1300を示す。1310において、エンコーダ/デコーダは、複数の利用可能なコーディングモードの群からコーディングモードを選択する。1320において、エンコーダ/デコーダは、選択されたコーディングモードに従ってビットプレーンを処理する。そのビットプレーンは、ビデオフレーム内のマクロブロックがAC予測を使用してエンコードされているかどうかを意味するバイナリ情報を含む。記載のビットプレーンコーディング技法は、マクロブロックレベルのマクロブロック当り1ビットコーディングと組み合わせて使用することができる。例えば、一実施形態において、ACPRED構文要素は、マクロブロックレイヤにおいてシグナリングされた場合に、AC予測がそのマクロブロックのブロックに対して使用されているかどうかを指示する。ACPRED=1の場合に、マクロブロックのデコードされたブロック内のAC係数は、予測子ブロックにおける係数に基づく差分値として取り扱われる。マクロブロックレベルACPREDビットストリーム要素については、以下のVII節にさらに詳細に述べる。代替的に、AC予測情報は、異なる方法でシグナリングされる。例えば、AC予測情報は、異なるサイズまたはアレンジメントのビットストリーム要素でシグナリングすることができる。別の代替形態として、AC予測情報は、フレームレベルまたはフィールドレベル以外のマクロブロックレベルより上方のレベル例えば、スライスレベルまたはその他の何らかのレベルにおいて、ビットプレーンにエンコードすることができる。別の代替形態として、AC予測情報は、イントラコード化フレーム内における全部よりも少ないマクロブロックに対して、マクロブロックレベルまたはその他のレベルにおいて選択的にシグナリングすることが可能である。ビットプレーンコーディングまたは何らかの他のコーディング技法は、マクロブロックレベルにおいてシグナリングされていないマクロブロックに対してフィールド/フレームタイプをシグナリングするために、フレームレベルまたはその他のレベルにおいて使用されることがある。VI.組合せ実施形態CombinedImplementationsビットストリーム構文、セマンティクス、およびデコーダに対する詳細な組合せ実施形態を、主な組合せ実施形態とわずかに異なる代替組合せ実施形態に加えて、ここで説明する。A.ビットストリーム構文BitstreamSyntax様々な組合せ実施形態において、データは、複数のレイヤ例えば、シーケンス、エントリーポイント、フレーム、フィールド、スライス、マクロブロック、ブロックおよび/またはサブブロックの各レイヤを有するビットストリームの形態で表わされる。構文図において、矢印経路は、構文要素の可能な流れを示している。四角の境界線で示す構文要素は、固定長構文要素を指示し、角の丸い境界線で示すものは、可変長構文要素を指示し、角の丸い二重の境界線で示すものは、より簡単な構文要素で構成された構文要素例えば、ビットプレーンを指示する。固定長構文要素は、構文要素の長さが構文要素自体におけるデータに依存しない構文要素と定義される。固定長構文要素の長さは、一定であるか、または構文フローにおける先のデータによって決まる。レイヤ図における低レイヤ例えば、フレームレイヤ図内のマクロブロックレイヤは、二重の四角形で表示してある。シーケンスレベル要素は、圧縮ビデオピクチャーのシーケンスをデコードするために使用される。シーケンスレベルデータは、他のレベル例えば、エントリーポイントレベル、フレームレベル、マクロブロックレベルなどにおける要素の解釈または存在に影響を与える可能性がある。一般に、エントリーポイントは、デコードがデコーディングを開始することのできる、ビットストリーム例えば、Iフレームまたはその他のキーフレーム内の位置をマーキングする。言い換えると、ビットストリーム内のエントリーポイントの前のピクチャーは、そのエントリーポイントの後のピクチャーをデコードする上で必要ではない。エントリーポイントヘッダは、コーディング制御パラメータの変化例えば、エントリーポイントの後のフレームに対する、圧縮ツールの使用許可または使用禁止をシグナリングするために使用することができる。プログレッシブIフレームについて、フレームレベルビットストリーム要素を図14に示す。プログレッシブBIフレームに対するフレームレベルビットストリーム要素は、プログレッシブIフレームのものと同じである。各フレームに対するデータは、フレームヘッダと、それに続くイントラマクロブロックに対するマクロブロックレイヤのデータから構成されている。プログレッシブIフレームについてのマクロブロックレベルビットストリーム要素を図15に示す。インターレースIフィールドおよび/またはBIフィールドを備えるインターレースビデオフレームについて、フレームレベルビットストリーム要素を図16にす。各フレームに対するデータは、フレームヘッダとそれに続くフィールドレイヤフィールド毎の反復FieldPicLayer要素として示すから構成されている。インターレースIフィールドのためのフィールドヘッダを構成するビットストリーム要素を図17に示す。インターレースBフィールドに対するフィールドレベルビットストリーム要素は、インターレースIフィールドに対するものと同じである。インターレースIフィールドおよびインターレースBフィールドのためのマクロブロックレイヤを構成するビットストリーム要素は、プログレッシブIフレームにおけるマクロブロックのためのものと同じである。インターレースIフレーム、Pフレーム、およびBフレームについて、フレームレベルビットストリーム要素を、図18、19および20にそれぞれ示す。インターレースBIフレームに対するフレームレベルビットストリーム要素は、インターレースIフレームに対するものと同じである。インターレースIフレーム、Pフレーム、およびBフレームにおいて、各フレームのデータは、フレームヘッダとそれに続くマクロブロックレイヤのためのイントラタイプ、または様々なインタータイプのマクロブロックのためのデータから構成されている。インターレースIフレーム、PフレームおよびBフレームのためのマクロブロックレイヤを構成するビットストリーム要素を、図21、22、および23にそれぞれ示す。インターレースBIフレームにおけるマクロブロックのためのビットストリーム要素は、インターレースIフレームにおけるマクロブロックのためのものと同じである。以下の節では、フレーム、フィールド、およびマクロブロックの各レイヤにおいて選択されたビットストリーム要素について説明する。選択されたビットストリーム要素を、特定のレイヤの文脈において説明するが、いくつかのビットストリーム要素は、複数のレイヤにおいて使用することができる。1.選択されたフレームおよびフィールドレイヤ要素図14、16、18、19、および20は、それぞれ、プログレッシブIフレーム/プログレッシブBIフレーム、インターレースIフィールドまたはBIフィールドを有するフレーム、インターレースIフレーム/インターレースBIフレーム、インターレースPフレーム、およびインターレースBフレームについてフレームレベルビットストリーム構文を示す図である。図17は、インターレースIフィールドについて、フィールドレベルビットストリーム構文を示す図である。いくつかの要素例えば、ACPREDビットプレーンは、インターレースBIフィールドに対するフィールドレベルビットストリーム構文中、および場合によってはその他のピクチャータイプに対する構文中にも存在する。具体的なビットストリーム要素を以下に説明する。フレームコーディングモードFCM可変サイズFCMは、ピクチャーコーディングタイプを指示するために使用される、可変長コードワード[VLC:variablelengthcodeword]である。FCMは以下の表1に示す、フレームコーディングモードに対する値をとる。フィールドピクチャータイプFPTYPE3ビットFPTYPEは、インターレースIフィールドおよび/またはインターレースBIフィールド、および場合によってはその他の種類のフィールドを含むフレーム用のフレームヘッダに含まれる3ビット構文要素である。FPTYPEは、以下に示す表2に従って、インターレースビデオフレームにおけるフィールドタイプの異なる組合せに対する値をとる。ピクチャータイプPTYPE可変サイズPTYPEは、インターレースPフレームおよびインターレースBフレームまたはインターレースIフレームなどの、その他の種類のインターレースフレーム用のフレームヘッダに含まれる可変サイズ構文要素である。PTYPEは、以下に示す表3に従って、異なるフレームタイプに対する値をとる。PTYPEが、フレームがスキップされたことを指示する場合には、そのフレームは、Pフレームとして扱われる。このPフレームはその参照フレームと同じである。スキップされたフレームの再構成は、概念的には参照フレームをコピーするのと同等である。スキップされたフレームとは、このフレームに対して更なるデータが伝送されないことを意味する。フィールド変換ビットプレーンFIELDTX可変サイズフレームレベルまたはフィールドレベルにおいて、FIELDTXは、インターレースIフレーム内のマクロブロックが、フレームコード化されているか、またはフィールドコード化されているかを指示するビットプレーンである。FIELDTXについては、以下および上記のIV節においてより詳細に説明される。AC予測ビットプレーンACPRED可変サイズプログレッシブIフレームおよびBフレームについて、ならびにインターレースIフレームおよびBIフレームについて、すべてのマクロブロックに存在することになる1ビットACPRED構文要素が、フレーム内の各マクロブロックに対するAC予測状態を指示するビットプレーンコード化構文要素を使用して、一緒にコード化される。デコードされたビットプレーンは、各マクロブロックに対するAC予測状態を1ビット値として表わす。ACPREDビットプレーンについては、以下および上記のV節において詳細に説明される。3.選択されたマクロブロックレイヤ要素図15、21、22、および23は、それぞれ、組合せ実施形態において、プログレッシブIフレーム/インターレースIフィールド/インターレースBIフィールド、インターレースIフレーム/インターレースBIフレーム、インターレースPフレーム、およびインターレースBフレーム内のマクロブロックに対するマクロブロックレベルビットストリーム構文を示す図である。具体的なビットストリーム要素を以下に記述する。マクロブロックに対するデータは、マクロブロックヘッダとそれに続くブロックレイヤデータで構成されている。マクロブロックレイヤ内のビットストリーム要素例えば、ACPRED、FIELDTXなどは、その他のピクチャータイプに対するマクロブロックにも存在することがある。AC予測フラグACPRED1ビット組合せ実施形態において、ACPRED構文要素は、すべてのプログレッシブIフレーム、インターレースIフレーム、インターレースBフレーム、インターレースIフィールド、およびインターレースBIフィールドのマクロブロック、ならびにインターレースPフィールド、インターレースBフィールド、インターレースPフレーム、およびインターレースBフレーム内のイントラマクロブロック中に存在する。ACPREDは、また、プログレッシブPフレームおよびBフレーム内のマクロブロック内にも存在する。マクロブロックレベルにおいて、ACPREDは、マクロブロックにおけるブロックがAC予測を使用してコード化されるかどうかを指定する1ビット構文要素である。ACPRED=0は、AC予測が使用されていないことを指示する。ACPRED=1は、AC予測が使用されていることを指示する。ACPREDは、上記V節においてさらに詳細に説明されているように、フレームレベルビットプレーンとしてエンコードすることもできる。フィールド変換フラグFIELDTX1ビットFIELDTXは、インターレースIフレーム、インターレースBIフレーム、インターレースPフレーム、およびインターレースBフレームにおけるイントラコード化マクロブロック内に存在する1ビット構文である。この構文要素は、マクロブロックがフレームコード化されているか、またはフィールドコード化基本的に、マクロブロックの内部編成されているかを指示する。FIELDTX=1は、マクロブロックはフィールドコード化されていることを指示する。そうでない場合には、マクロブロックはフレームコード化されている。インターコード化マクロブロックにおいては、この構文要素は、マクロブロックレベルビットストリーム要素MBMODEから推測することができる。FIELDTXは、上記IV節でより詳細に説明されているように、フレームレベルビットプレーンとしてエンコードすることもできる。B.ビットプレーンコーディングBitplaneCodingスキップビットなどのマクロブロック専用バイナリ情報は、マクロブロック当り1つのバイナリ記号としてエンコードすることができる。例えば、マクロブロックがスキップされるかどうかは、1ビットでシグナリングすることができる。これらの場合に、フィールドまたはフレーム内のすべてのマクロブロックを、ビットプレーンとしてコード化して、フィールドヘッダまたはフレームヘッダに入れて伝送することができる。この規則に対する1つの例外は、ビットプレーンコーディングモードがRawモードに設定されている場合であり、この場合には、各マクロブロックに対する状態は、記号当り1ビットでコード化されており、マクロブロックレベルにおいて他のマクロブロックレベル構文要素と共に伝送される。フィールド/フレームレベルビットプレーンコーディングは、2次元バイナリ配列をエンコードするために使用される。各配列の大きさは、rowMB×colMBであり、ここでrowMBおよびcolMBは、それぞれ、問題のフィールドまたはフレームにおけるマクロブロックの行および列の数である。ビットストリーム内で、各配列は、1組の連続するビットとしてコード化される。7つのモードの内の1つが、各配列をエンコードするために使用される。その7つのモードとは、以下のものである。1.Rawモード:情報が記号当り1ビットとしてコード化され、MBレベル構文の一部として伝送される。2.ノーマル2モード:2つの記号が一緒にコード化される。3.差分2モード:ビットプレーンの差分コード化、続いて2つの残留記号を一緒にコード化。4.ノーマル6モード:6つの記号が一緒にコード化される。5.差分6モード:ビットプレーンの差分コード化、続いて6つの残留記号を一緒にコード化。6.ロースキップモード:設定ビットのない行をシグナリングする1ビットスキップ。7.カラムスキップモード:設定ビットのない列をシグナリングする1ビットスキップ。フィールドまたはフレームレベルにおけるビットプレーンに対する構文要素は、次のシーケンス、すなわちINVERT、IMODE、およびDATABITSである。逆フラグINVERTINVERT構文要素は1ビット値であり、これは、設定される場合には、ビットプレーンはゼロビットよりも多い設定ビットを有することを指示する。INVERTおよびモードに応じて、デコーダは、解釈されたビットプレーンを反転して、オリジナルを再生成する。ここで留意すべきことは、rawモードが使用されている場合には、このビットの値は無視されることである。ビットプレーンのデコーディングにおけるINVERT値の使い方を以下に示す。コーディングモードIMODEIMODE構文要素は、ビットプレーンをエンコードするために使用されるコーディングモードを指示する可変長値である。表4は、IMODE構文要素をエンコードするために使用されるコードテーブルを示す。ビットプレーンをデコードする際の、IMODE値の使い方について、以下に述べる。ビットプレーンコーディングビットDATABITSDATABITS構文要素は、ビットプレーンに対する記号のストリームをエンコードする、可変サイズ構文要素である。ビットプレーンをエンコードするために使用される方法は、IMODEの値によって決まる。7つのコーディングモードについて、以下の節で説明する。Rawモードこのモードにおいて、ビットプレーンは、例えば、ラスター走査順序で記号当り1ビットとしてエンコードされ、マクロブロックレイヤの一部として送られる。代替的に、情報は、フィールドレベルまたはフレームレベルにおいて、rawモードでコード化され、DATABITSの長さは、rowMB×colMBビットである。ノーマル2モードrowMB×colMBが奇数の場合に、第1の記号はrawでエンコードされる。後続の記号は、自然走査順序で、ペア毎にエンコードされる。表5におけるバイナリVLCテーブルが、記号ペアをエンコードするために使用される。Diff-2モードノーマル2法は、上述のビットプレーンを生成するために使用され、Diff-1演算は、以下に記述するようにビットプレーンに適用される。ノーマル6モードNorm-6およびDiff-6モードにおいて、ビットプレーンは6個のピクセルの群にエンコードされる。これらのピクセルは、2×3または3×2のタイルにグループ分けされる。ビットプレーンは、1組の規則を用いて最大限タイリングされ、残りのピクセルは、ロースキップモードおよびカラムスキップモードの変形形態を用いてエンコードされる。rowMBが3の倍数であって、colMBが3の倍数でない場合にのみ、2×3の垂直タイルが使用される。そうでない場合には、3×2の水平タイルが使用される。図24Aは、2×3垂直タイルの簡略化した実施例を示している。図24Bおよび24Cは、3×2水平タイルの簡略化した実施例を示しており、このタイルに対して、細長い黒い長方形は1ピクセル幅であり、ロースキップおよびカラムスキップコーディングを使用してエンコードされる。ピクチャーの上端および左端に沿って線形タイルを備える、図24Cに示すようにタイリングされた面に対して、タイルのコード化順序は、次のパターンに従う。6要素タイルが最初にエンコードされ、カラムスキップおよびロースキップでエンコードされた線形タイルがそれに続く。配列サイズが、2×3または3×2の倍数の場合に、後者の線形タイルは存在せず、ビットプレーンは完全にタイリングされる。6要素長方形タイルは、可変長コードおよび固定長コードの組合せを用いてコード化される。Nをタイル内の設定ビット数、すなわち0≦N≦6とする。N<3の場合には、タイルをエンコードするためにVLCを使用する。N=3の場合は、固定長エスケープコードの後に、5ビット固定長コードが続く。N>3の場合には、別の固定長エスケープコードの後に、VLCが続く。N>3の場合に、エスケープコードに続くVLCは、N<3の場合に、このタイルの補数のコードに使用されるVLCと同一である。N>3の場合に使用される固定長エスケープは、N=3の場合の固定長エスケープコードとは異なる。長方形タイルは6ビットの情報を包含する。kをタイルに関連するコードとすると、は、タイル内での自然走査順序におけるi番目のビットのバイナリ値である。したがって、0≦k<64である。VLCとエスケープコードおよび固定長コードとの組合せが、kをシグナリングするために使用される。Diff-6モードノーマル6法は、上述のビットプレーンを生成するために使用され、Diff-1演算は、以下に述べるビットプレーンに適用される。ロースキップRow-skipモードロースキップコーディングモードにおいては、全ゼロ行allzerorowsは、1ビットオーバヘッドでスキップされる。構文は次のとおりである。各行に対して、単独ROWSKIPビットが、行がスキップされるかどうかを指示し、行がスキップされる場合には、次の行に対するROWSKIPビットが次であり、そうでない行がスキップされない場合には、ROWBITSビット行内の各マクロブロックに対して1ビットが次となる。したがって、行全体がゼロの場合には、ゼロビットがROWSKIP記号として送られ、ROWBITSはスキップされる。行内に設定ビットがある場合には、ROWSKIPは1に設定され、行全体がrawで送られるROWBITS。行は、フィールドまたはフレームの上端から下端へと走査される。カラムスキップColumn-skipモードカラムスキップは、ロースキップの転置transposeである。列は、フィールドまたはフレームの左から右へと走査される。Diff-1::逆差分Inversedifferentialデコーディングいずれかの差分モードDiff-2またはDiff-6が使用される場合には、差分ビットのビットプレーンが、対応するノーマルモードそれぞれNorm-2またはNorm-6を使用して、最初にデコードされる。差分ビットは、原ビットプレーンを再生成するために使用される。再生成プロセスは、バイナリアルファベットについての2DDPCMである。場所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番目の位置におけるビットである。本発明の原理を、様々な実施形態を参照して記述し説明したが、様々な実施形態は、その原理から逸脱することなく、アレンジメントおよび詳細において修正することが可能であることが認識されるであろう。ここで理解すべきことは、本明細書において記述したプログラム、プロセス、または方法は、特に断らない限りは、いかなる特定のタイプのコンピューティング環境にも関係せず、またそれに限定されるものでもないことである。様々なタイプの汎用または専用のコンピューティング環境を使用できるとともに、それによって、本明細書に記述した教示に従って演算を実行することができる。ソフトウエアにおいて示した実施形態の要素は、ハードウエアに実装してもよく、またその逆も可能である。本発明の原理を応用することのできる多くの可能な実施形態を考慮して、添付のクレームおよびその均等物の範囲と趣旨に入る実施形態のすべてを、本発明として主張するものである。"