"ビデオデコーダを使用して、エンコードされたビデオをデコードする方法であって、前記ビデオデコーダにより、ビットストリーム内のエンコードされたデータを受け取るステップと、前記エンコードされたデータを使用して、インターレースBフィールドをデコードするステップであって、前記インターレースBフィールド内のマクロブロックについて、前記マクロブロックは、第1の予測方向での再構成された第1の動きベクトルを有し、前記第1の予測方向のみで動き補償を使用するステップであって、前記再構成された第1の動きベクトルを、後続の動きベクトル予測において使用するために前記第1の予測方向用の第1の動きベクトルバッファに格納するステップと、前記第1の予測方向と反対の第2の予測方向の動きベクトルプレディクタを、前記第2の予測方向用の第2の動きベクトルバッファからの1つまたは複数の動きベクトルプレディクタ候補に少なくとも部分的に基づいて算出するステップであって、前記動きベクトルプレディクタは、前記第2の予測方向の、埋められる第2の動きベクトルの予測値であり、前記第2の予測方向の前記動きベクトルプレディクタを算出するステップは、前記第2の動きベクトルバッファからの前記1つまたは複数の動きベクトルプレディクタ候補の極性情報に少なくとも部分的に基づいて、前記動きベクトルプレディクタとして、前記第2の予測方向の前記インターレースBフィールドの第1の基準フィールドを参照する同一極性の動きベクトルプレディクタを使用することであって、前記第1の基準フィールドは、前記インターレースBフィールドと同一の極性を有すること、又は前記動きベクトルプレディクタとして、前記第2の予測方向の前記インターレースBフィールドの第2の基準フィールドを参照する反対極性の動きベクトルプレディクタを使用することであって、前記第2の基準フィールドは、前記インターレースBフィールドと反対の極性を有すること、から選択するステップとを含むステップであって、前記選択するステップは、前記第2の動きベクトルバッファからの前記1つまたは複数の動きベクトルプレディクタ候補のうち幾つが反対極性の動きベクトルであるかを数えるステップおよび/又は前記第2の動きベクトルバッファからの前記1つまたは複数の動きベクトルプレディクタ候補のうち幾つが同一極性の動きベクトルであるかを数えるステップを含むステップと、後続の動きベクトル予測において使用するために前記動きベクトルプレディクタを、前記埋められる第2の動きベクトルとして、前記第2の動きベクトルバッファに格納するステップとを備えることを特徴とする方法。前記極性情報は、優勢極性の指示を含み、前記第2の予測方向の前記動きベクトルプレディクタの前記算出は、優勢極性プレディクタ候補として、前記同一極性の動きベクトルプレディクタ又は前記反対極性の動きベクトルプレディクタを選択することを含むことを特徴とする請求項1に記載の方法。前記第1の予測方向は順方向であり、前記第2の予測方向は逆方向であることを特徴とする請求項1に記載の方法。前記第1の予測方向は逆方向であり、前記第2の予測方向は順方向であることを特徴とする請求項1に記載の方法。前記第1の動きベクトルの再構成は、前記第1の動きベクトルバッファからの1つまたは複数の動きベクトルプレディクタ候補に少なくとも部分的に基づいて前記第1の予測方向の動きベクトルプレディクタを算出すること、および前記第1の予測方向の前記動きベクトルプレディクタを動きベクトル差分情報と組み合わせることを含むことを特徴とする請求項1に記載の方法。前記インターレースBフィールド内の前記マクロブロックは1MVマクロブロックであり、前記第1の動きベクトルバッファ内の動きベクトルと第2の動きベクトルバッファ内の動きベクトルとを有する少なくとも1つのマクロブロックは4MVマクロブロックであることを特徴とする請求項1に記載の方法。前記インターレースBフィールド内の前記マクロブロックは4MVマクロブロックであり、前記第1の動きベクトルバッファ内の動きベクトルと第2の動きベクトルバッファ内の動きベクトルとを有する少なくとも1つのマクロブロックは1MVマクロブロックであることを特徴とする請求項1に記載の方法。ビデオデコーダを使用して、エンコードされたビデオをデコードする方法であって、前記ビデオデコーダにより、ビットストリーム内のエンコードされたデータを受け取るステップと、前記エンコードされたデータを使用して、インターレースBフィールドをデコードするステップであって、第1の予測方向用の第1の動きベクトルバッファに、前記インターレースBフィールド内のマクロブロック用の第1の動きベクトルを格納するステップであって、前記マクロブロックは、前記第1の予測方向のみで動き補償を使用するステップと、前記第1の予測方向と反対の第2の予測方向の優勢極性動きベクトルプレディクタを、算出するステップであって、前記優勢極性動きベクトルプレディクタは、前記第2の予測方向の、埋められる第2の動きベクトルの予測値であり、前記優勢極性動きベクトルプレディクタを算出するステップは、前記第2の予測方向用の第2の動きベクトルバッファからの1つまたは複数の動きベクトルプレディクタ候補の極性情報に少なくとも部分的に基づいて、前記優勢極性動きベクトルプレディクタとして、前記第2の予測方向の前記インターレースBフィールドの第1の基準フィールドを参照する同一極性の動きベクトルプレディクタを使用することであって、前記第1の基準フィールドは、前記インターレースBフィールドと同一の極性を有すること、又は前記優勢極性動きベクトルプレディクタとして、前記第2の予測方向の前記インターレースBフィールドの第2の基準フィールドを参照する反対極性の動きベクトルプレディクタを使用することであって、前記第2の基準フィールドは、前記インターレースBフィールドと反対の極性を有すること、から選択するステップであって、前記選択するステップは、前記第2の動きベクトルバッファからの前記1つまたは複数の動きベクトルプレディクタ候補のうち幾つが反対極性の動きベクトルであるかを数えるステップおよび/又は前記第2の動きベクトルバッファからの前記1つまたは複数の動きベクトルプレディクタ候補のうち幾つが同一極性の動きベクトルであるかを数えるステップを含むステップとを含むステップと、前記優勢極性動きベクトルプレディクタを、前記埋められる第2の動きベクトルとして、前記第2の動きベクトルバッファに格納するステップとを備えることを特徴とする方法。前記第1の予測方向は順方向であって前記第2の予測方向は逆方向である、または前記第1の予測方向は逆方向であって前記第2の予測方向は順方向であることを特徴とする請求項8に記載の方法。前記インターレースBフィールド内の前記マクロブロックは、1MVマクロブロックまたは4MVマクロブロックであることを特徴とする請求項8に記載の方法。ビデオエンコーダを使用して、ビデオをエンコードする方法であって、前記ビデオエンコーダにより、インターレースBフィールドをエンコードするステップであって、前記インターレースBフィールド内のマクロブロックについて、前記マクロブロックは、第1の予測方向の第1の動きベクトルを有し、前記第1の予測方向のみで動き補償を使用するステップであって、前記第1の動きベクトルを、後続の動きベクトル予測において使用するために前記第1の予測方向用の第1の動きベクトルバッファに格納するステップと、前記第1の予測方向と反対の第2の予測方向の動きベクトルプレディクタを、算出するステップであって、前記動きベクトルプレディクタは、前記第2の予測方向用の第2の動きベクトルバッファからの1つまたは複数の動きベクトルプレディクタ候補に少なくとも部分的に基づき、前記動きベクトルプレディクタは、前記第2の予測方向の、埋められる第2の動きベクトルの予測値であり、前記第2の予測方向の前記動きベクトルプレディクタを算出するステップは、前記第2の動きベクトルバッファからの前記1つまたは複数の動きベクトルプレディクタ候補の極性情報に少なくとも部分的に基づいて、前記動きベクトルプレディクタとして、前記第2の予測方向の前記インターレースBフィールドの第1の基準フィールドを参照する同一極性の動きベクトルプレディクタを使用することであって、前記第1の基準フィールドは、前記インターレースBフィールドと同一の極性を有すること、又は前記動きベクトルプレディクタとして、前記第2の予測方向の前記インターレースBフィールドの第2の基準フィールドを参照する反対極性の動きベクトルプレディクタを使用することであって、前記第2の基準フィールドは、前記インターレースBフィールドと反対の極性を有すること、から選択するステップと含むステップであって、前記選択するステップは、前記第2の動きベクトルバッファからの前記1つまたは複数の動きベクトルプレディクタ候補のうち幾つが反対極性の動きベクトルであるかを数えるステップおよび/又は前記第2の動きベクトルバッファからの前記1つまたは複数の動きベクトルプレディクタ候補のうち幾つが同一極性の動きベクトルであるかを数えるステップを含むステップと、後続の動きベクトル予測において使用するために前記動きベクトルプレディクタを、前記埋められる第2の動きベクトルとして、前記第2の動きベクトルバッファに格納するステップと、ビットストリームにおいて前記インターレースBフィールド用のエンコードされたデータを出力するステップとを備えることを特徴とする方法。前記極性情報は、優勢極性の指示を含み、前記第2の予測方向の前記動きベクトルプレディクタの前記算出は、優勢極性プレディクタ候補として、前記同一極性の動きベクトルプレディクタ又は前記反対極性の動きベクトルプレディクタを選択することを含むことを特徴とする請求項11に記載の方法。前記第1の予測方向は順方向であり、前記第2の予測方向は逆方向であることを特徴とする請求項11に記載の方法。前記第1の予測方向は逆方向であり、前記第2の予測方向は順方向であることを特徴とする請求項11に記載の方法。前記第1の動きベクトルの再構成は、前記第1の動きベクトルバッファからの1つまたは複数の動きベクトルプレディクタ候補に少なくとも部分的に基づいて前記第1の予測方向の動きベクトルプレディクタを算出すること、および前記第1の予測方向の前記動きベクトルプレディクタを動きベクトル差分情報と組み合わせることを含むことを特徴とする請求項1に記載の方法。前記インターレースBフィールド内の前記マクロブロックは1MVマクロブロックであり、前記第1の動きベクトルバッファ内の動きベクトルと第2の動きベクトルバッファ内の動きベクトルとを有する少なくとも1つのマクロブロックは4MVマクロブロックであることを特徴とする請求項11に記載の方法。前記インターレースBフィールド内の前記マクロブロックは4MVマクロブロックであり、前記第1の動きベクトルバッファ内の動きベクトルと第2の動きベクトルバッファ内の動きベクトルとを有する少なくとも1つのマクロブロックは1MVマクロブロックであることを特徴とする請求項11に記載の方法。ビデオデコーダを使用して、エンコードされたビデオをデコードする方法であって、前記ビデオデコーダにより、ビットストリーム内のエンコードされたデータを受け取るステップと、前記エンコードされたデータを使用して、インターレースBフィールドをデコードするステップであって、前記インターレースBフィールドは、1つまたは複数の順方向のマクロブロックおよび1つまたは複数の逆方向のマクロブロックを有し、前記デコードするステップは、前記1つまたは複数の順方向のマクロブロックの各々について、前記マクロブロック用の順方向動きベクトルを再構成するステップと、再構成された前記順方向動きベクトルを、順方向動きベクトルバッファの前記マクロブロックの対応する位置に格納するステップと、逆方向動きベクトルバッファからの1つまたは複数の動きベクトルプレディクタ候補を使用し、逆方向動きベクトルバッファからの前記1つまたは複数の動きベクトルプレディクタ候補の極性情報を使用して、逆方向動きベクトルを予測するステップであって、予測された前記逆方向動きベクトルとして、前記インターレースBフィールドの第1の基準フィールドを参照する同一極性の動きベクトルプレディクタを使用することであって、前記第1の基準フィールドは、前記インターレースBフィールドと同一の極性を有すること、又は予測された前記逆方向動きベクトルとして、前記インターレースBフィールドの第2の基準フィールドを参照する反対極性の動きベクトルプレディクタを使用することであって、前記第2の基準フィールドは、前記インターレースBフィールドと反対の極性を有すること、から選択するステップであって、予測された前記逆方向動きベクトルに対して前記選択するステップは、前記逆方向動きベクトルバッファからの前記1つまたは複数の動きベクトルプレディクタ候補のうち幾つが反対極性の動きベクトルであるかを数えるステップおよび/又は前記逆方向動きベクトルバッファからの前記1つまたは複数の動きベクトルプレディクタ候補のうち幾つが同一極性の動きベクトルであるかを数えるステップを含むステップとを含むステップと、予測された前記逆方向動きベクトルを、逆方向動きベクトルバッファの前記マクロブロックの対応する位置に格納するステップと、前記1つまたは複数の順方向のマクロブロックの各々について、前記マクロブロック用の逆方向動きベクトルを再構成するステップと、再構成された前記逆方向動きベクトルを、前記逆方向動きベクトルバッファの前記マクロブロックの対応する位置に格納するステップと、前記順方向動きベクトルバッファからの1つまたは複数の動きベクトルプレディクタ候補を使用し、順方向動きベクトルバッファからの前記1つまたは複数の動きベクトルプレディクタ候補の極性情報を使用して、順方向動きベクトルを予測するステップであって、予測された前記順方向動きベクトルとして、前記インターレースBフィールドの第3の基準フィールドを参照する同一極性の動きベクトルプレディクタを使用することであって、前記第3の基準フィールドは、前記インターレースBフィールドと同一の極性を有すること、又は予測された前記順方向動きベクトルとして、前記インターレースBフィールドの第4の基準フィールドを参照する反対極性の動きベクトルプレディクタを使用することであって、前記第4の基準フィールドは、前記インターレースBフィールドと反対の極性を有すること、から選択するステップであって、予測された前記順方向動きベクトルに対して前記選択するステップは、前記順方向動きベクトルバッファからの前記1つまたは複数の動きベクトルプレディクタ候補のうち幾つが反対極性の動きベクトルであるかを数えるステップおよび/又は前記順方向動きベクトルバッファからの前記1つまたは複数の動きベクトルプレディクタ候補のうち幾つが同一極性の動きベクトルであるかを数えるステップを含むステップとを含むステップと、予測された前記順方向動きベクトルを、前記順方向動きベクトルバッファの前記マクロブロックの対応する位置に格納するステップと、を備えることを特徴とする方法。デジタルビデオに対するビデオ圧縮およびビデオ圧縮解除のクリティカルな重要さに対して、ビデオ圧縮およびビデオ圧縮解除が十分に開発された分野であることは驚くべきことでない。しかし、従来のビデオ圧縮技法およびビデオ圧縮解除技法の利益が何であれ、これらは、次に説明する技法およびツールの有意性を有しない。要約すると、この詳細な説明は、双方向予測インターレースビデオフレーム例えば、インターレースBフィールド、インターレースBフレームをエンコードし、デコードする様々な技法およびツールを対象とする。説明される技法およびツールは、レート/ひずみ性能を改善し、より少ないCPUリソースを有するデバイス例えば、より小さいフォームファクタを有するデバイス内のためのよりよいサポートを容易にする。インターレースBピクチャをコーディングし、かつ/またはデコードするための、説明される技法およびツールのうちの1つまたは複数を実装する説明される実施形態は、限定しないが、以下を含む。一態様で、インターレースBフレームに対して、エンコーダ/デコーダは、インターレースBフレームのフィールドコーディングされたマクロブロック内で、フィールドの間で予測モードを切り替える。例えば、エンコーダ/デコーダは、フィールドコーディングされたマクロブロック内で、上フィールドの順方向予測と下フィールドの逆方向予測のどちらかに切り替える。同一のフィールドコーディングされたマクロブロック内での順方向予測モードと逆方向予測モードの切替は、インターレースBフレームの異なる部分の効率的な予測モードを見つけるためのより高い柔軟性を可能にする。もう1つの態様で、インターレースBフレームについて、エンコーダ/デコーダは、前にデコードされた、時間的に後のアンカーの同一位置のマクロブロックについての上フィールドおよび下フィールドのそれぞれについて多くとも1つの代表的な動きベクトルを選択することによって、現在のマクロブロックの直接モード動きベクトルを算出する。例えば、この選択は、現在のインターレースBフレームのマクロブロックをコーディングするモード例えば、1MVモード、2フィールドMVモードなどに少なくとも部分的に基づいて実行される。もう1つの態様で、インターレースBフィールドまたはインターレースBフレームについて、エンコーダ/デコーダは、4MVコーディングを使用する。例えば、4MVは、1方向予測モード順方向モードおよび逆方向モードで使用されるが、他の使用可能な予測モード例えば、直接、補間では使用されない。4MVを使用することによって、インターレースBフィールドおよびインターレースBフレームのより正確な動き補償が可能になり、4MVを順方向モードおよび逆方向モードに制限することによって、コーディングオーバーヘッドが減り、直接モードおよび補間モードなどのモードと4MVを組み合わせることに関連するデコーディングの複雑さが回避される。もう1つの態様で、インターレースBフィールドまたはインターレースBフレームについて、順方向動きベクトルは、順方向動きベクトルバッファからの前に再構成されたまたは推定された順方向動きベクトルを使用してエンコーダ/デコーダによって予測され、逆方向動きベクトルは、逆方向動きベクトルバッファからの前に再構成されたまたは推定された逆方向動きベクトルを使用して予測される。その結果の動きベクトルが、対応するバッファに追加される。動きベクトルバッファ内の穴holesは、推定された動きベクトル値によって埋めることができる。例えば、インターレースBフレームについて、動きベクトルの予測に順方向予測が使用され、その動きベクトルが順方向動きベクトルバッファに追加されるときに、逆方向動きベクトルバッファ内の対応する位置が、プレディクタとして逆方向動きベクトルだけを使用して予測された動きベクトルになったものを使用して埋められる穴埋めHolefilling。もう1つの例として、インターレースBフィールドについて、穴埋めのために異なる極性の動きベクトル例えば、同一極性または反対極性のどちらかを選択するために、エンコーダ/デコーダは、優勢極性フィールド動きベクトルを選択する。アンカーと現在のフレームの間の距離が、様々な構文要素を使用して算出され、算出された距離が、基準フィールド動きベクトルをスケーリングするのに使用される。別々の動きベクトルバッファおよびその別々の動きベクトルバッファ内の穴埋めによって、インターレースBフィールドおよびインターレースBフレームに対するより正確な動きベクトル予測が可能になる。もう1つの態様で、インターレースBフィールドについて、エンコーダ/デコーダは、自己参照フレームを使用する。例えば、現在のフレーム内の第2Bフィールドが、動き補償予測で現在のフレームの第1Bフィールドを参照する。あるフレームの第1Bフィールドがそのフレームの第2Bフィールドの基準として働くことを可能にすることによって、第2Bフィールドのより正確な予測が可能になると同時に、現在のフレーム内にBフィールドを有することの時間的スケーラビリティの利益も保たれる。もう1つの態様で、インターレースBフィールドについて、エンコーダは、インターレースBフィールド内の1つまたは複数のマクロブロックについて、予測モードが順方向または非順方向のどちらであるかを示す2値情報を送る。例えば、エンコーダは、圧縮されたビットプレーン内のBフィールドレベルで順方向/非順方向決定情報を送る。順方向/非順方向予測モード決定情報を圧縮されたビットプレーン内でBフィールドレベルで送ることによって、予測モードコーディングのコーディングオーバーヘッドを減らすことができる。デコーダは、対応するデコーディングを実行する。もう1つの態様で、インターレースBフィールドについて、エンコーダ/デコーダは、次のアンカーピクチャの対応するフィールド内の対応するマクロブロックが4つの動きベクトルを使用してコーディングされている場合に、優勢極性を選択する論理を使用して直接モード動きベクトルを選択する。例えば、対応するマクロブロックの同一極性の動きベクトルが、それと反対極性の動きベクトルに数で優る場合に、エンコーダ/デコーダは、同一極性の動きベクトルの中央値medianを算出して、直接モード動きベクトル導出用の動きベクトルを得る。この選択プロセスは、4MVマクロブロックを有するアンカーを有するインターレースBフィールドに対する正確な直接モード動きベクトルの導出を可能にする。様々な技法およびツールを、組み合わせてまたは独立に使用することができる。追加の特徴および利点は、添付図面を参照して進行する個々の実施形態からなる以下の詳細な説明から明白になるでしょう。本願は、インターレースビデオの効率的な圧縮および圧縮解除の技法およびツールに関する。説明される様々な実施形態で、ビデオエンコーダおよびビデオデコーダは、双方向予測インターレースビデオフレームをエンコードし、デコードする技法と、異なるレイヤまたはレベル例えば、シーケンスレベル、フレームレベル、フィールドレベル、マクロブロックレベル、および/またはブロックレベルを含むビットストリームフォーマットまたはビットストリーム構文に関して使用される対応するシグナリング技法を組み込む。本明細書に記載の実装に対しては様々な代替案が可能である。例えば、流れ図を参照して説明される技法は、流れ図に示されたステージの順序付けを変更すること、あるステージを繰り返すか省略することなどによって、変更することができる。もう1つの例として、いくつかの実装を、特定のマクロブロックフォーマットに関して説明するが、他のフォーマットも使用することができる。さらに、双方向予測に関して説明する技法およびツールが、他のタイプの予測に適用可能である場合もある。様々な技法およびツールを、組み合わせてまたは独立に使用することができる。個々実施形態は、説明される技法およびツールのうちの1つまたは複数を実装する。本明細書に記載のいくつかの技法およびツールは、ビデオエンコーダまたはビデオデコーダで、あるいはビデオエンコーディングまたはビデオデコーディングに特に制限されない他のシステムで、使用することができる。I.コンピューティング環境図20は、説明される実施形態のいくつかを実装できる適切なコンピューティング環境2000の一般化された例を示している。この技法およびツールは様々な汎用のまたは特殊目的のコンピューティング環境に実装することができるので、コンピューティング環境2000は、使用または機能性の範囲に関する制限を提案することを意図されたものではない。図20を参照すると、コンピューティング環境2000に、少なくとも1つの処理ユニット2010およびメモリ2020が含まれる。図20では、この最も基本的な構成2030が、破線の中に含まれる。処理ユニット2010は、コンピュータ実行可能命令を実行し、実際のプロセッサまたは仮想プロセッサとすることができる。マルチプロセッシングシステムでは、処理能力を高めるために、複数の処理ユニットがコンピュータ実行可能命令を実行する。メモリ2020は、揮発性メモリ例えば、レジスタ、キャッシュ、RAM、不揮発性メモリ例えば、ROM、EEPROM、フラッシュメモリ、またはこの2つのある組合せとすることができる。メモリ2020は、インターレースビデオフレームの双方向予測を用いるビデオエンコーダまたはビデオデコーダを実装するソフトウェア2080を格納する。コンピューティング環境は、さらなる機能featuresを有することができる。例えば、コンピューティング環境2000に、ストレージ2040、1つまたは複数の入力デバイス2050、1つまたは複数の出力デバイス2060、および1つまたは複数の通信接続2070が含まれる。バス、コントローラ、またはネットワークなどの相互接続機構図示せずが、コンピューティング環境2000の構成要素を相互接続する。通常、オペレーティングシステムソフトウェア図示せずが、コンピューティング環境2000内で実行される他のソフトウェアのオペレーティング環境を提供し、コンピューティング環境2000の構成要素のアクティビティを調整する。ストレージ2040は、リムーバブルまたはノンリムーバブルとすることができ、磁気ディスク、磁気テープ、磁気カセット、CD-ROM、DVD、または情報を格納するのに使用でき、コンピューティング環境2000内でアクセスできる任意の他の媒体が含まれる。ストレージ2040は、ビデオエンコーダまたはビデオデコーダを実装するソフトウェア2080の命令を格納する。入力デバイス2050は、キーボード、マウス、ペン、またはトラックボールなどの接触入力デバイス、音声入力デバイス、スキャニングデバイス、またはコンピューティング環境2000に入力を提供する別のデバイスとすることができる。オーディオエンコーディングまたはビデオエンコーディングのために、入力デバイス2050を、サウンドカード、ビデオカード、TVチューナカード、またはアナログ形式もしくはビデオ形式でアナログ入力もしくはビデオ入力を受け入れる類似するデバイス、もしくはオーディオサンプルまたはビデオサンプルをコンピューティング環境2000に読み取るCD-ROMまたはCD-RWとすることができる。出力デバイス2060は、ディスプレイ、プリンタ、スピーカ、CDライタ、またはコンピューティング環境2000から出力を提供する別のデバイスとすることができる。通信接続2070は、通信媒体を介する別のコンピューティングエンティティへの通信を可能にする。通信媒体は、変調されたデータ信号内でコンピュータ実行可能命令、オーディオもしくはビデオの入力もしくは出力、または他のデータなどの情報を伝える。変調されたデータ信号とは、その信号内で情報をエンコードする形でその特性の1つまたは複数を設定または変更された信号である。制限ではなく例として、通信媒体に、電気、光、RF、赤外線、音響、または他の担体を用いて実装された有線または無線の技法が含まれる。本技法およびツールは、コンピュータ可読媒体の全般的なコンテクストで説明することができる。コンピュータ可読媒体は、コンピューティング環境内でアクセスできるすべての使用可能な媒体である。制限ではなく例として、コンピューティング環境2000に関して、コンピュータ可読媒体に、メモリ2020、ストレージ2040、通信媒体、および上記のいずれかの組合せが含まれる。本技法およびツールは、プログラムモジュールに含まれるものなど、コンピューティング環境内でターゲットの実際のプロセッサまたは仮想プロセッサ上で実行されるコンピュータ実行可能命令の全般的なコンテクストで説明することができる。一般に、プログラムモジュールには、特定のタスクを実行するか特定の抽象データ型を実装する、ルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造などが含まれる。プログラムモジュールの機能性は、様々な実施形態での要求に従って、プログラムモジュールの間で組み合わせるか分割することができる。プログラムモジュールのコンピュータ実行可能命令は、ローカルコンピューティング環境または分散コンピューティング環境内で実行することができる。提示のために、この詳細な説明で、コンピューティング環境内のコンピュータ動作を説明するのに、推定する、補償する、予測する、および適用するなどの用語を使用する。これらの用語が、コンピュータによって実行される動作に関する高水準の抽象化であり、人間によって実行される動作と混同されてはならない。これらの用語に対応する実際のコンピュータ動作は、実装に依存して変化する。II.一般化されたビデオエンコーダおよびビデオデコーダ図21は、説明される実施形態のいくつか共に実装できる一般化されたビデオエンコーダ2100のブロック図である。図22は、説明される実施形態のいくつかを実装できる一般化されたビデオデコーダ2200のブロック図である。エンコーダ2100内のモジュールとデコーダ2200内のモジュールの間に示された関係は、エンコーダおよびデコーダ内の情報の全般的な流れを示し、他の関係は、図を単純にするために示されていない。具体的に言うと、図21および22には、通常、ビデオシーケンス、ピクチャ、マクロブロック、ブロックなどに使用される、エンコーダセッティング、モード、テーブルなどを示すサイド情報が示されていない。そのようなサイド情報は、通常はサイド情報のエントロピーコーディングの後に、出力ビットストリーム内で送られる。出力ビットストリームのフォーマットは、Windows登録商標MediaVideoバージョン9フォーマットまたは他のフォーマットとすることができる。エンコーダ2100およびデコーダ2200は、ビデオピクチャを処理し、このビデオピクチャは、ビデオフレーム、ビデオフィールド、またはフレームとフィールドの組合せとすることができる。ピクチャレベルおよびマクロブロックレベルでのビットストリーム構文およびセマンティクスは、フレームまたはフィールドのどちらが使用されているかに依存する場合がある。マクロブロック編成および全体的なタイミングに対する変更もある場合がある。エンコーダ2100およびデコーダ2200は、ブロックベースであり、各マクロブロックに、4つの8×8輝度ブロック時々1つの16×16マクロブロックとして扱われるおよび2つの8×8クロミナンスブロックが含まれる形の、フォーマットに4:2:0マクロブロックフォーマットを使用する。フィールドについて、同一のまたは異なるマクロブロックの編成およびフォーマットを使用することができる。8×8ブロックを、さらに、異なるステージで、例えば周波数変換ステージおよびエントロピーエンコーディングステージで副分割することができる。ビデオフレーム編成の例については、下で詳細に説明する。代替案では、エンコーダ2100およびデコーダ2200は、オブジェクトベースであり、異なるマクロブロックフォーマットまたはブロックフォーマットを使用するか、8×8ブロックおよび16×16マクロブロックと異なるサイズまたはコンフィギュレーション配置のピクセルのセットに対して動作を実行する。要求される実装および圧縮のタイプに応じて、エンコーダまたはデコーダのモジュールは、追加し、省略し、複数のモジュールに分割し、他のモジュールと組合せ、かつ/または類似するモジュールと置換することができる。代替実施形態では、異なるモジュールおよび/または他のコンフィギュレーションのモジュールを有するエンコーダまたはデコーダが、説明される技法のうちの1つまたは複数を実行する。A.ビデオフレームの編成いくつかの実装で、エンコーダ2100およびデコーダ2200は、次のように編成されたビデオフレームを処理する。フレームは、ビデオ信号の空間情報からなる走査線を収容する。プログレッシブビデオでは、これらの走査線に、ある瞬間から始まり、連続する走査線を介してフレームの最下部まで継続するサンプルを収容する。プログレッシブビデオフレームは、図23に示されているように、マクロブロック2300などのマクロブロックに分割される。マクロブロック2300は、従来の4:2:0マクロブロックフォーマットに従う、4つの8×8輝度ブロックY1からY4と、4つの輝度ブロックと同一の位置にあるが水平および垂直に半分の解像度を有する2つの8×8クロミナンスブロックとが含まれる。8×8ブロックを、さらに、異なるステージで、例えば周波数変換ステージ例えば、8×4、4×8、または4×4のDCTおよびエントロピーエンコーディングステージで副分割することができる。プログレッシブIフレームは、イントラコーディングされたプログレッシブビデオフレームである。プログレッシブPフレームは、順方向予測を使用してコーディングされたプログレッシブビデオフレームであり、プログレッシブBフレームは、双方向測を使用してコーディングされたプログレッシブビデオフレームである。プログレッシブPフレームおよびプログレッシブBフレームは、異なるタイプの予測マクロブロックだけでなく、イントラコーディングされたマクロブロックを含むことができる。インターレースビデオフレームは、1つのフレームに属する2つのスキャンから構成され、一方のスキャンは、フレームの偶数走査線を備え上フィールド、他方のスキャンは、フレームの奇数走査線下フィールドを備える。この2つのフィールドは、2つの異なる時間期間を表す場合があり、あるいは、これらが同一の時間期間からのものである場合がある。図24Aは、上フィールドおよび下フィールドの交番する走査線が含まれるインターレースビデオフレーム2400の一部で、その左上部分の一部を示している。図24Bは、フレーム2430としてのエンコーディング/デコーディングのために編成された図24Aのインターレースビデオフレーム2400を示している。インターレースビデオフレーム2400は、図23に示されているように4:2:0フォーマットを使用する、マクロブロック2431および2432などのマクロブロックに区分される。輝度プレーンでは、各マクロブロック2431および2432は、上フィールドからの8つの走査とこれと交番する下フィールドからの8つの走査線、合計16走査線を含み、各走査線は、16ピクセルの長さであるマクロブロック2431および2432内の輝度ブロックおよびクロミナンスブロックの実際の編成および配置は、図示されておらず、実際には、異なるエンコーディングの決定に合わせて変化することになる。所与のマクロブロック内で、上フィールド情報および下フィールド情報は、様々なフェーズのいずれかで、一緒にまたは別々にコーディングすることができる。インターレースIフレームは、インターレースビデオフレームの2つのイントラコーディングされたフィールドであり、その1つのマクロブロックには、この2つのフィールドの情報が含まれる。インターレースPフレームは、順方向予測を使用してコーディングされたインターレースビデオフレームの2つのフィールドであり、インターレースBフレームは、双方向予測を使用してコーディングされたインターレースビデオフレームの2つのフィールドであり、その1つのマクロブロックには、この2つのフィールドの情報が含まれる。インターレースPフレームおよびインターレースBフレームには、異なるタイプの予測マクロブロックだけでなく、イントラコーディングされたマクロブロックを含めることができる。図24Cは、フィールド2460としてのエンコーディング/デコーディングのために編成された図24Aのインターレースビデオフレーム2400を示している。インターレースビデオフレーム2400に属する2つのフィールドのそれぞれが、マ複数のクロブロックに区分される。上フィールドは、マクロブロック2461などのマクロブロックに区分され、下フィールドは、マクロブロック2462などのマクロブロックに区分されるやはり、図23に示されているように、マクロブロックは4:2:0フォーマットを使用し、マクロブロック内の輝度ブロックおよびクロミナンスブロックの編成および配置は、図示されていない。輝度プレーン内で、マクロブロック2461に、上フィールドからの16本の走査線が含まれ、マクロブロック2462に、下フィールドからの16本の走査線が含まれ、各走査線は、16ピクセルの長さである。インターレースIフィールドは、インターレースビデオフレームに属する単一の別々に表されたフィールドである。インターレースPフィールドは、順方向予測を使用してコーディングされたインターレースビデオフレームに属する単一の別々に表されたフィールドであり、インターレースBフィールドは、双方向予測を使用してコーディングされたインターレースビデオフレームに属する単一の別々に表されたフィールドである。インターレースPフィールドおよびインターレースBフィールドには、異なるタイプの予測マクロブロックだけでなく、イントラコーディングされたマクロブロックを含めることができる。用語ピクチャは、全般的に、ソース、コーディングされたイメージデータ、あるいは再構成されたイメージデータ、を指す。プログレッシブビデオについて、ピクチャは、プログレッシブビデオフレームである。インターレースビデオについて、ピクチャは、コンテクスト文脈に依存して、インターレースビデオフレーム、そのフレームの上フィールド、またはそのフレームの下フィールドを指す場合がある。代替案では、エンコーダ2100およびデコーダ2200が、オブジェクトベースであり、異なるマクロブロックフォーマットまたはブロックフォーマットを使用するか、8×8ブロックおよび16×16マクロブロックと異なるサイズまたはコンフィギュレーション配置のピクセルのセットに対して動作を実行する。B.ビデオエンコーダ図21は、一般化されたビデオエンコーダシステム2100のブロック図である。エンコーダシステム2100は、現在のピクチャ2105例えば、プログレッシブビデオフレーム、インターレースビデオフレーム、またはインターレースビデオフレームのフィールドを含む複数のビデオピクチャから構成されるシーケンスを受け取り、出力として圧縮ビデオ情報2195を作り出す。ビデオエンコーダの特定の実施形態は、通常、一般化されたエンコーダ2100の変形版または増補された版を使用する。エンコーダシステム2100は、予測ピクチャおよびキーピクチャを圧縮する。提示のために、図21に、エンコーダシステム2100を通るキーピクチャのパスおよび予測ピクチャのパスを示している。エンコーダシステム2100のコンポーネントの多くが、キーピクチャと圧縮ピクチャの両方の圧縮に使用される。これらのコンポーネントによって実行される正確な動作は、圧縮される情報のタイプに応じて変化することになる。予測ピクチャ例えば、プログレッシブpフレーム、プログレッシブbフレーム、インターレースpフィールド、インターレースbフィールド、インターレースpフレーム、またはインターレースbフレームは、1つまたは複数の他のピクチャ通常は、基準フレームまたはアンカーと称するからの予測または差という形で表される。予測残差は、予測されたものとオリジナルピクチャの間の差である。対照的に、キーピクチャ例えば、プログレッシブIフレーム、インターレースIフィールド、またはインターレースIフレームは、他のピクチャを参照することなく圧縮されている。現在のピクチャ2105が、順方向予測ピクチャである場合に、動き予測器2110が、1つまたは複数の基準ピクチャ、例えばピクチャストア2120にバッファリングされている再構成された前のピクチャ2125、に関して現在のピクチャ2105のマクロブロックまたはピクセルの他のセットについての動きを推定する。現在のピクチャ2105が、双方向予測ピクチャである場合に、動き予測器2110は、4つまでの再構成された基準ピクチャ例えば、インターレースBフィールドのに関して現在のピクチャ2105内の動きを推定する。通常、動き予測器は、Bピクチャ内の動きを、1つまたは複数の時間的に前の基準ピクチャおよび1つまたは複数の時間的に将来の基準ピクチャに関して推定する。したがって、エンコーダシステム2100は、複数の基準ピクチャに対して別々のストア2120および2122を使用することになる。プログレッシブBフレームの詳細については、特許文献1を参照されたい。動き予測器2110は、ピクセル単位、1/2ピクセル単位、1/4ピクセル単位、または他の増分で動きを推定することができ、ピクチャを単位としてまたは他の単位で動き推定の分解能を切り替えることができる。動き予測器2110および補償器2130は、フレームを単位としてまたは他の単位で、基準ピクチャのピクセル補間の複数タイプ例えば、双三次bicubicと双線形bilinearの間間を切り替えることができる。動き推定の分解能は、水平と垂直で同一としたり、または異ならせたりすることができる。動き予測器2110は、サイド情報として、差分動きベクトル情報などの動き情報2115を出力する。エンコーダ2100は、動き情報2115のエンコーダオを、例えば、動きベクトルに関する1つまたは複数のプレディクタを算出し、動きベクトルとそのプレディクタの間の差分を算出し、その差分をエントロピーコーディングすることによって、実行する。動きベクトルを再構成するために、動き補償器2130は、プレディクタを差分動きベクトル情報と組み合わせる。インターレースBフィールドおよびインターレースBフレームに関して、動きベクトルプレディクタの算出、差分動きベクトルの算出、および動きベクトル再構成の様々な技法を、下で説明する。動き補償器2130は、再構成された動きベクトルを再構成されたピクチャ2125に適用して、動き補償された現在のピクチャ2135を形成する。しかし、予測は、完全であることがめったになく、したがって、動き補償された現在のピクチャ2135とオリジナルの現在のピクチャ2105の間の差が、予測残差2145である。その後のピクチャ再構成中に、オリジナルの現在のピクチャ2105により近い再構成されたピクチャを得るために、予測残差2145を動き補償された現在のピクチャ2135に加算される。しかし、ロッシイ圧縮では、オリジナルの現在のピクチャ2105からのいくつかの情報が、それでも失われる。代替案では、動き予測器および動き補償器が、別のタイプの動き推定/動き補償を適用する。周波数トランスフォーマ2160が、空間領域ビデオ情報を周波数領域すなわち、スペクトルデータに変換する。ブロックベースのビデオピクチャについて、周波数トランスフォーマ2160は、DCT、DCTの変形、または他のブロック変換をピクセルデータまたは予測残差データのブロックに適用し、周波数変換係数のブロックを作る。代替案では、周波数トランスフォーマ2160が、フーリエ変換などの別の従来の周波数変換を適用するか、ウェーブレット分析またはサブバンド分析を使用する。周波数トランスフォーマ2160は、8×8、8×4、4×8、4×4、または他のサイズの周波数変換を適用することができる。次に、量子化器2170が、スペクトルデータ係数のブロックを量子化する。量子化器は、ピクチャを単位としてまたは他の単位として変化するステップサイズを有する均一なスカラ量子化をスペクトルデータに適用する。代替案では、量子化器は、例えば、不均一量子化、ベクトル量子化、または非適応量子化などの別のタイプの量子化を空間データ係数に適用したり、周波数変換を使用しないエンコーダシステムでは空間領域データを直接に量子化したりする。適応量子化のほかに、エンコーダ2100は、フレームドロッピング、適応フィルタリング、またはレート制御のための他の技法を使用することができる。エンコーダ2100は、スキップドマクロブロックの特別なシグナリングを使用することができ、このスキップドマクロブロックは、あるタイプの情報を有しないマクロブロック例えば、マクロブロックの動き情報および残差情報がないである。再構成された現在のピクチャが、後続の動き推定/動き補償に必要なときには、逆量子化器2176が、量子化されたスペクトルデータ係数に対して逆量子化を実行する。次に、逆周波数トランスフォーマ2166が、周波数トランスフォーマ2160の動作の逆を実行し、再構成された予測残差予測ピクチャのまたは再構成されたキーピクチャを作る。現在のピクチャ2105がキーピクチャである場合には、再構成されたキーピクチャが、再構成された現在のピクチャ図示せずとして採用される。現在のピクチャ2105が予測ピクチャである場合には、再構成された予測残差を、動き補償された現在のピクチャ2135に加算して、再構成された現在のピクチャを形成する。ピクチャストア2120および2122の一方または両方が、動き補償予測で使用するために、再構成された現在のピクチャをバッファリングする。いくつかの実施形態で、エンコーダは、再構成されたフレームにデブロッキングフィルタを適用して、そのピクチャにおける不連続性および他のアーティファクトを適応式に平滑化する。エントロピーコーダ2180は、量子化器2170の出力ならびにある種のサイド情報例えば、動き情報2115、量子化ステップサイズを圧縮する。通常のエントロピーコーディング技法に、算術コーディング、差分コーディング、ハフマンコーディング、ランレングスコーディング、LZコーディング、辞書コーディング、および上記の組合せが含まれる。エントロピーコーダ2180は、通常、異なる種類の情報例えば、DC係数、AC係数、異なる種類のサイド情報に異なるコーディング技法を使用し、特定のコーディング技法内で複数のコードテーブルの中から選択することができる。エントロピーコーダ2180は、圧縮ビデオ情報2195をマルチプレクサ[MUX]2190に供給する。MUX2190に、バッファを含めることができ、バッファレベルインジケータを、レート制御のためにビットレート適応モジュールにフィードバックすることができる。MUX2190の前または後に、圧縮ビデオ情報2195を、ネットワークを介する伝送のためにチャネルコーディングすることができる。チャネルコーディングは、誤り検出訂正データを圧縮ビデオ情報2195に付加することができる。C.ビデオデコーダ図22は、一般化されたビデオデコーダシステム2200のブロック図である。デコーダシステム2200は、ビデオピクチャの圧縮シーケンスに関する情報2295を受け取り、再構成されたピクチャ2205例えば、プログレッシブビデオフレーム、インターレースビデオフレーム、またはインターレースビデオフレームのフィールドを含む出力を作る。ビデオデコーダの特定の実施形態は、通常、一般化されたデコーダ2200の変形版または増補された版を使用する。デコーダシステム2200は、予測ピクチャおよびキーピクチャを圧縮解除する。提示のために、図22に、デコーダシステム2200を通るキーピクチャのパスおよび順方向予測ピクチャのパスを示す。デコーダシステム2200のコンポーネントの多くが、キーピクチャと圧縮ピクチャの両方の圧縮解除に使用される。これらのコンポーネントによって実行される正確な動作は、圧縮解除される情報のタイプに応じて変化することができる。DEMUX2290が、圧縮ビデオシーケンスに関する情報2295を受け取り、受け取られた情報をエントロピーデコーダ2280に使用可能にする。DEMUX2290に、ジッタバッファおよび他のバッファも含めることができる。DEMUX2290の前または後で、圧縮ビデオ情報を、チャネルデコードし、誤り検出および訂正の処理をすることができる。エントロピーデコーダ2280は、エントロピーコーディングされた量子化データならびにエントロピーコーディングされたサイド情報例えば、動き情報2215、量子化ステップサイズをエントロピーデコードし、通常は、エンコーダで実行されたエントロピーコーディングの逆を適用する。エントロピーデコーディング技法に、算術デコーディング、差分デコーディング、ハフマンデコーディング、ランレングスデコーディング、LZデコーディング、辞書デコーディング、および上記の組合せが含まれる。エントロピーデコーダ2280は、通常、異なる種類の情報例えば、DC係数、AC係数、異なる種類のサイド情報に異なるデコーディング技法を使用し、特定のデコーディング技法内で複数のコードテーブルの中から選択することができる。デコーダ2200は、動き情報2215をデコードする、例えば、動きベクトルの1つまたは複数のプレディクタを算出し、差分動きベクトルをエントロピーデコーディングし、デコードされた差分動きベクトルをプレディクタと組み合わせて、動きベクトルを再構成する。インターレースBフィールドおよびインターレースBフレームに関する、動きベクトルプレディクタの算出、差分動きベクトルの算出、および動きベクトル再構成の様々な技法を、下で説明する。動き補償器2230は、動き情報2215を1つまたは複数の基準ピクチャ2225に適用して、再構成中のピクチャ2205についての予測2235を形成する。例えば、動き補償器2230は、1つまたは複数のマクロブロック動きベクトルを使用して、基準ピクチャ群2225内のマクロブロック群を見つける。1つまたは複数のピクチャストア例えば、ピクチャストア2220および2222が、基準フレームとして使用するために、前に再構成されたピクチャを格納する。通常、Bピクチャは、複数の基準フレーム例えば、少なくとも1つの時間的に前の基準フレームおよび少なくとも1つの時間的に将来の基準フレームを有する。したがって、デコーダシステム2200は、複数の基準フレームに別々のピクチャストア2220および2222を使用することができる。動き補償器2230は、ピクセル単位、1/2ピクセル単位、1/4ピクセル単位、または他の増分で動きを補償することができ、ピクチャ単位または他の単位で動き補償の分解能を切り替えることができる。動き補償器2230は、フレーム単位でまたは他の単位で、基準ピクチャピクセル補間の複数のタイプ例えば、双三次bicubicと双線形bilinearの間間を切り替えることができる。動き補償の分解能は、水平と垂直で同一としたり、または異ならせたりすることができる。代替案では、動き補償器は、別のタイプの動き補償を適用する。動き補償器による予測は、完全であることがめったになく、したがって、デコーダ2200も、予測残差を再構成する。逆量子化器2270が、エントロピーデコードされたデータを逆量子化する。一般に、逆量子化器は、ピクチャ単位でまたは他の単位で変化するステップサイズを有する均一なスカラ逆量子化をエントロピーデコードされたデータに適用する。代替案では、逆量子化器は、例えば、不均一量子化、ベクトル量子化、または非適応量子化などの処理後のデータを再構成するために、別のタイプの逆量子化をデータに適用したり、逆周波数変換を使用しないデコーダシステム内では空間領域データを直接に逆量子化したりする。逆周波数トランスフォーマ2260は、逆量子化された周波数領域データを空間領域ビデオ情報に変換する。ブロックベースのビデオピクチャについて、逆周波数トランスフォーマ2260は、逆DCT[IDCT]、IDCTの変形、または他の逆ブロック変換を周波数変換係数に適用し、それぞれキーピクチャまたは予測ピクチャのピクセルデータまたは予測残差データを作る。代替案では、逆周波数トランスフォーマ2260が、逆フーリエ変換などの別の従来の逆周波数変換を適用するか、ウェーブレット合成またはサブバンド合成を使用する。逆周波数トランスフォーマ2260は、8×8、8×4、4×8、4×4、または他のサイズの逆周波数変換を適用することができる。予測ピクチャに関して、デコーダ2200は、再構成された予測残差2245を動き補償された予測2235と組み合わせて、再構成されたピクチャ2205を形成する。デコーダが、後続の動き補償用に再構成されたピクチャ2205を必要とするときには、ピクチャストア例えば、ピクチャストア2220の一方または両方が、次のピクチャを予測する際に使用するために、再構成されたピクチャ2205をバッファリングする。いくつかの実施形態で、デコーダ2200は、再構成されたピクチャにデブロッキングフィルタを適用して、そのピクチャにおける不連続性および他のアーティファクトを適応式に平滑化する。III.インターレースPフィールドおよびインターレースPフレーム通常のインターレースビデオフレームは、異なる時刻にスキャンされる2つのフィールド例えば、上フィールドおよび下フィールドからなる。一般に、2つのフィールドを一緒にコーディングすることフレームモードコーディングによってインターレースビデオフレームの静止領域をエンコードすることが、より効率的である。その一方で、2つのフィールドが異なる動きを有する傾向があるので、フィールドを別々にコーディングすることフィールドモードコーディングによってインターレースビデオフレームの動いている領域をコーディングすることが、しばしばより効率的である。順方向予測インターレースビデオフレームは、2つの別々の順方向予測フィールドインターレースPフィールドとしてコーディングすることができる。順方向予測インターレースビデオフレームのフィールドを別々にコーディングすることには、例えば、インターレースビデオフレーム全体に激しい動きがあり、したがって、フィールドの間の大きい差があるときに、より効率的である場合がある。あるいは、順方向予測インターレースビデオフレームを、フィールドコーディングおよびフレームコーディングの混合を使用して、インターレースPフレームとしてコーディングすることができる。インターレースPフレームのマクロブロックについて、このマクロブロックは、上フィールドおよび下フィールドのピクセルの走査線を含み、これらの走査線は、フレームコーディングモードでは一緒に、フィールドコーディングモードでは別々にコーディングされる。A.インターレースPフィールドインターレースPフィールドは、1つまたは複数の前にデコードされたフィールドを参照する。例えば、いくつかの実装で、インターレースPフィールドは、前にデコードされたフィールドの1つまたは2つを参照するが、インターレースBフィールドは、2つまでの前の基準フィールドおよび2つまでの将来の基準フィールドすなわち、合計4つまでの基準フィールドを参照するインターレースBフィールドのエンコーディング技法およびデコーディング技法は、下で詳細に説明する。図25および図26に、2つの基準フィールドを有するインターレースPフィールドの例を示す。図25では、現在のフィールド2510が、時間的に前のインターレースビデオフレームの上フィールド2520および下フィールド2530を参照する。フィールド2540および2550は、インターレースBフィールドなので、これらは基準フィールドとしては使用されない。図26では、現在のフィールド2610が、現在のフィールド2610を含むインターレースビデオフレームの直前のインターレースビデオフレーム内の上フィールド2620および下フィールド2630を参照する。2つの基準インターレースPフィールドに関するさらなる情報については特許文献2を参照されたい。図27および28に、1つの基準フィールドすなわち時間的に最も最近の許容可能な基準フィールドを有するインターレースPフィールドの例を示す。図27では、現在のフィールド2710が、時間的に前のインターレースビデオフレーム内の下フィールド2730を参照するが、そのインターレースビデオフレームのより最近でない上フィールド2720を参照しない。図27に示された例では、フィールド2740および2750が、インターレースBフィールドであり、許容可能な基準フィールドではない。図28では、現在のフィールド2810が、より最近でない上フィールド2820ではなく、現在のフィールド2810を含むインターレースビデオフレームの直前のインターレースビデオフレーム内の下フィールド2830を参照する。図29および図30に、2番目に最近の許容可能な基準フィールドを使用するインターレースPフィールドの例を示す。図29では、現在のフィールド2910が、時間的に前のインターレースビデオフレームの上フィールド2920を参照するが、より最近の下フィールド2930を参照しない。図29に示された例では、フィールド2940および2950が、インターレースBフィールドであり、許容可能な基準フィールドではない。図30では、現在のフィールド3010が、最も最近の下フィールド3030ではなく、上フィールド3020を参照する。一実装で、図25~図30に示されたすべてのシナリオが、インターレースPフィールド構文で許容される。他の実装が可能である。例えば、ピクチャが、基準フレームとして、異なるタイプまたは異なる時間的位置の他のピクチャからのフィールドを使用することができる。1.フィールドピクチャ座標系およびフィールド極性動きベクトルは、1/4ピクセル単位での水平変位および垂直変位を表す。例えば、動きベクトルの垂直成分が、6つの1/4ピクセル単位の変位を示す場合に、これは、基準ブロックが、現在のブロック位置の11/2フィールド走査線下にあることを示す61/4=11/2。図31に、一実装での、動きベクトルの垂直成分と空間位置の垂直成分との間の関係を示す。図31に示された例は、現在のフィールドタイプおよび基準フィールドタイプ例えば上および下の3つの異なる組合せに関する3つの異なるシナリオ3110、3120、および3130が示されている。フィールドタイプが、現在のフィールドと基準フィールドについて異なる場合に、極性は反対である。フィールドタイプが同一の場合には、極性は同一である。各シナリオについて、図31に、現在のフィールドにおける複数のピクセルからなる1つの垂直の列columnおよび基準フィールドにおける複数のピクセルからなる第2の垂直の列を示す。実際には、この2つの列が、水平に位置合せされている。円は、実際の整数ピクセル位置を表し、×は、補間された1/2ピクセル位置または1/4ピクセル位置を表す。水平成分値図示せずは、それぞれのフィールドが水平に位置合せされているので、インターレースに起因するオフセットを考慮に入れる必要がない。負の値は、さらに上へのオフセットを示し、その反対方向で、正の垂直オフセットが示されている。シナリオ3110では、極性が反対である。現在のフィールドは、上フィールドであり、基準フィールドは、下フィールドである。現在のフィールドに対して、基準フィールドの位置は、インターレースに起因して下に1/2ピクセルだけオフセットしている。0の垂直動きベクトル成分値は、ゼロの垂直動きオフセットであり、基準フィールド内の位置として、絶対的には同一の垂直レベルにある基準フィールド内の位置を表し、2の垂直動きベクトル成分値は、現在のフィールド内の位置の1/2ピクセル下絶対項でにオフセットした基準フィールド内の位置を表し、これは、基準フィールド内の実際の値actualvalueであり、4の垂直動きベクトル成分値は、現在のフィールド内の位置の1ピクセル下絶対項でにオフセットした位置を表し、これは、基準フィールド内で補間された値である。シナリオ3120では、極性が反対である。現在のフィールドは、下フィールドであり、基準フィールドは、上フィールドである。現在のフィールドに対して、基準フィールドの位置は、インターレースに起因して上に1/2ピクセルだけオフセットしている。-2の垂直動きベクトル成分値は、現在のフィールド内の位置の絶対的には1/2ピクセル上の基準フィールド内の位置を表し、0の垂直動きベクトル成分値は、基準フィールド内の位置と絶対的には同一レベルの位置を表し、2の垂直動きベクトル成分値は、現在のフィールド内の位置の絶対的には1/2ピクセル下にオフセットした位置を表す。シナリオ3130では、極性が同一である。現在のフィールドに対して、基準フィールドの位置は、垂直方向で同一である。0の垂直動きベクトル成分値は、ゼロの垂直動きオフセットであり、基準フィールド内の位置として、絶対的には同一の垂直レベルにある基準フィールド内の位置を表し、2の垂直動きベクトル成分値は、現在のフィールド内の位置の1/2ピクセル下絶対項でにオフセットした基準フィールド内の位置を表し、これは、基準フィールド内で補間された値であり、4の垂直動きベクトル成分値は、現在のフィールド内の位置の絶対的には1ピクセル下にオフセットした位置を表し、これは、基準フィールド内の実際の値である。代替案では、動きベクトルの変位が、異なる規約に従って表される。2.2つの基準フィールドからのインターレースPフィールドでの動きベクトル予測2つの基準フィールドからのインターレースPフィールドは、同一の時間的方向の2つのフィールド例えば、2つの最も最近の前の基準フィールドを参照する。2つの動きベクトルプレディクタが、マクロブロックごとに算出される。いくつかの実装で、一方のプレディクタが、同一極性の基準フィールドからであり、他方が、反対極性の基準フィールドからである。極性の他の組合せも可能である方向ごとに2つの基準フィールドを使用するインターレースBフィールドは、下で説明する。いくつかの実装で、そのようなインターレースBフィールドは、動きベクトルプレディクタの算出に関してインターレースPフィールドと同一の技法を使用する。いくつかの実装で、エンコーダ/デコーダは、奇数フィールドプレディクタおよび偶数フィールドプレディクタを見つけ、このプレディクタのうちの1つを選択してマクロブロックを処理することによって、現在のブロックまたはマクロブロックの動きベクトルプレディクタを算出する。例えば、エンコーダ/デコーダは、奇数フィールド動きベクトルプレディクタおよび偶数フィールド動きベクトルプレディクタを決定する。したがって、この動きベクトルプレディクタのうちの一方が、現在のフィールドと同一極性を有し、他方の動きベクトルプレディクタが、反対極性を有する。エンコーダ/デコーダは、奇数フィールド動きベクトルプレディクタおよび偶数フィールド動きベクトルプレディクタの中から1つの動きベクトルプレディクタを選択する。例えば、エンコーダは、どちらがよりよい予測を与えるかに基づいて、複数の動きベクトルプレディクタのいずれかを選択する。エンコーダは、単純な選択信号を使用して、またはコーディング効率を改善するためにコンテクスト情報を組み込んだより複雑なシグナリングを使用して、どの動きベクトルプレディクタを使用するかをシグナリングする。このコンテクスト情報は、偶数フィールドまたは奇数フィールドのどちらが、あるいは同一極性のフィールドまたは反対極性のフィールドのどちらが、ブロックまたはマクロブロックの周囲の近傍で優勢に使用されたかを示すことができる。デコーダは、この選択信号および/またはコンテクスト情報に基づいて、どの動きベクトルプレディクタを使用するかを選択する。次に、エンコーダ/デコーダは、選択された動きベクトルプレディクタを使用して、動きベクトルを処理する。例えば、エンコーダは、動きベクトルと動きベクトルプレディクタの間の差分をエンコードする。あるいは、デコーダは、動きベクトル差分と動きベクトルプレディクタを組み合わせることによって、動きベクトルをデコードする。代替案では、エンコーダおよび/またはデコーダが、奇数フィールド動きベクトルプレディクタの決定または偶数フィールド動きベクトルプレディクタの決定をスキップすることができる。例えば、エンコーダが、奇数フィールドが特定のブロックまたはマクロブロックの動き補償に使用されると決定した場合に、エンコーダは、奇数フィールド動きベクトルプレディクタだけを決定する。あるいは、デコーダが、コンテクスト情報および/またはシグナリングされた情報から、奇数フィールドが動き補償に使用されると決定した場合に、デコーダは、奇数フィールド動きベクトルプレディクタだけを決定する。この形で、エンコーダおよびデコーダは、不要な動作を避けることができる。デコーダは、次の技法を使用して、現在のインターレースPフィールドの動きベクトルプレディクタを決定することができる。インターレースPフィールドの動きベクトルを有するブロックまたはマクロブロックごとに、3つの候補動きベクトルプレディクタの2セットを得る。これらの候補動きベクトルプレディクタがそこから得られる隣接マクロブロックの、現在のマクロブロック3200に対する位置を図32に示す。この候補のうちの3つは、偶数基準フィールドからであり、3つは、奇数基準フィールドからである。各候補方向の隣接マクロブロックA、B、またはCは、イントラコーディングされるか、偶数フィールドまたは奇数フィールドのいずれかを参照する実際の動きベクトルを有するかのいずれかなので、他方のフィールドの動きベクトルを導出するまたは、イントラコーディングされたマクロブロック用の奇数フィールドと偶数フィールドの両方の動きベクトル候補を導出する必要がある。例えば、所与のマクロブロックについて、プレディクタAが、奇数フィールドを参照する動きベクトルを有すると仮定する。この場合に、偶数フィールドプレディクタ候補Aは、奇数フィールド候補プレディクタAの動きベクトルから導出される。この導出は、スケーリング動作を使用して達成される例えば、下の図34Aおよび図34Bの説明を参照されたい。代替案では、この導出が、別の形で達成される。3つの奇数フィールド候補動きベクトルプレディクタを得たならば、中央値演算を使用して、3つの奇数フィールド候補から1つの奇数フィールド動きベクトルプレディクタを導出する。同様に、3つの偶数フィールド候補動きベクトルプレディクタを得たならば、中央値演算を使用して、3つの偶数フィールド候補から1つの偶数フィールド動きベクトルプレディクタを導出する。代替案では、別の機構を使用して、候補フィールド動きベクトルプレディクタに基づいて、フィールド動きベクトルプレディクタを選択する。デコーダは、動きベクトルプレディクタとして偶数フィールドまたは奇数フィールドのどちらを使用するかを判断し例えば、優勢プレディクタを選択することによって、偶数または奇数の動きベクトルプレディクタを使用して、動きベクトルを再構成する。図33A~図33Fの擬似コード3300に、図32のように配置されたプレディクタA、B、およびCから動きベクトルプレディクタを生成するのに使用されるプロセスを示す。図32に、現在のインターレースPフィールドの中央の通常のマクロブロックの近傍を示したが、図33A~33Fの擬似コード3300は、マクロブロック位置に関する様々な特別な場合に対処する。さらに、擬似コード3300を使用して、様々な位置のブロックの動きベクトルの動きベクトルプレディクタを算出することができる。擬似コード3300では、用語samefield同一のフィールドおよびoppositefield反対のフィールドが、現在コーディングまたはデコーディングされつつあるフィールドに対するものであると理解されたい。例えば、現在のフィールドが偶数フィールドである場合に、samefieldは偶数基準フィールドであり、oppositefieldは奇数基準フィールドである。擬似コード3300の変数samefieldpred_xおよびsamefieldpred_yは、同一フィールドからの動きベクトルプレディクタの水平成分および垂直成分を表し、変数oppositefieldpred_xおよびoppositefieldpred_yは、反対のフィールドからの動きベクトルプレディクタの水平成分および垂直成分を表す。変数samecountおよびoppositecountは、それぞれ、現在のブロックまたはマクロブロックの近傍の動きベクトルのうちの何個が現在のフィールドの同一の極性の基準フィールドを参照するか、および何個が反対の極性の基準フィールドを参照するかを追跡する。変数samecountおよびoppositecountは、この擬似コードの始めで0に初期化される。擬似コード3300に挙げられているスケーリング動作scaleforsameおよびscaleforoppositeは、隣接マクロブロックの実際の動きベクトル値から他方のフィールド用の動きベクトルプレディクタ候補を導出するのに使用される。これらのスケーリング動作は、実装に依存である。例のスケーリング動作を、下で図34A、34B、35、および36を参照して説明する。代替案では、例えば図31に示されたものなどの垂直変位を補償するために、他のスケーリング動作が使用される特にインターレースBフィールドに使用されるスケーリング動作を、下で詳細に説明する。図33Aおよび33Bに、フレーム内の内側位置の通常のブロックまたはマクロブロック用の動きベクトルプレディクタを算出する擬似コードを示す。イントラ隣接マクロブロック用の動きベクトルには、0がセットされる。隣接マクロブロックごとに、同一のフィールドの動きベクトルプレディクタおよび反対のフィールドの動きベクトルプレディクタが、セットされ、一方は、隣接マクロブロックの動きベクトルの実際の値からセットされ、他方はそれから導出される。候補の中央値medianを、同一のフィールドの動きベクトルプレディクタおよび反対のフィールドの動きベクトルプレディクタについて算出し、優勢プレディクタを、samecountおよびoppositecountから決定する。変数dominantpredictorは、どのフィールドに優勢動きベクトルプレディクタが含まれるかを示す。動きベクトルプレディクタが優勢であるのは、それが3つの候補プレディクタの過半数と同一極性を有する場合であるシグナリングされる値predictor_flagは、動きベクトル差分データと共にデコードされ、優勢プレディクタまたは非優勢プレディクタのどちらが使用されるかを示す。図33Cの擬似コードは、隣接マクロブロックBおよびCが存在しない、1行rowあたりに1つのマクロブロックだけを有するインターレースPフィールド内のマクロブロックの状況に対処する。図33Dおよび33Eの擬似コードは、隣接マクロブロックCが存在しない、インターレースPフィールドの左端にあるブロックまたはマクロブロックの状況に対処する。ここで、動きベクトルプレディクタが優勢であるのは、2つの候補プレディクタのうちのより多数と同一極性を有する場合であり、引き分けの場合には、反対のフィールドの動きベクトルプレディクタが優勢である。最後に、図33Fの擬似コードは、例えば、インターレースPフィールドの最上行内のマクロブロックの場合に対処する。3.別のフィールドの動きベクトルプレディクタからの、あるフィールドの動きベクトルプレディクタの導出のためのスケーリング一実装で、エンコーダ/デコーダは、図34Aおよび34Bの擬似コード3400に示されたスケーリング動作を使用して、別のフィールドの動きベクトルプレディクタからあるフィールドの動きベクトルプレディクタを導出する。SCALEOPP、SCALESAME1、SCALESAME2、SCALEZONE1_X、SCALEZONE1_Y、ZONE1OFFSET_X、およびZONE1OFFSET_Yの値は、実装に依存である。値の2つの可能なセットが、現在のフィールドがインターレースビデオフレームの最初のフィールドである場合について図35の表3500に示されており、現在のフィールドがインターレースビデオフレームの2番目のフィールドである場合について図36の表3600に示されている。Pフレームについて、基準フレーム距離は、現在のPフレームとその基準フレームの間のBフレームすなわち、2つのBフィールドを含むビデオフレームの個数と定義される。Bフレームが存在しない場合には、基準距離は0である。例えば、エンコーダは、可変サイズ構文要素例えば、下のセクションXIVで詳細に説明するREFDIST構文要素を使用して、基準フレーム距離をエンコードする。表3500および表3600に示された例では、Nこれらの表のSCALEZONE1_X値、SCALEZONE1_Y値、ZONE1OFFSET_X値、およびZONE1OFFSET_Y値の乗数の値は、動きベクトル範囲に依存する。例えば、拡張された動きベクトル範囲を、構文要素EXTENDED_MV=1によってシグナリングすることができる。EXTENDED_MV=1の場合には、MVRANGE構文要素が、ピクチャヘッダに存在し、動きベクトル範囲をシグナリングする。EXTENDED_MV=0の場合には、デフォルト動きベクトル範囲が使用される。下の表1に、NとMVRANGEの間の関係を示す。表3500および表3600に示された値は、実装に応じて変更することができる。代替案では、Nは1と仮定されすなわち、スケーリングはNに依存しない、あるいは、スケーリングをいくつかの他の形で実行することができる。B.インターレースPフレームいくつかの実装で、インターレースPフレームのマクロブロックは、5つのタイプすなわち、1MV、2フィールドMV、4フレームMV、4フィールドMV、およびイントラのうちの1つとすることができる。1MVマクロブロックでは、マクロブロック内の4つの輝度ブロックの変位が、単一の動きベクトルによって表される。対応するクロマ動きベクトルを、ルマluma:輝度動きベクトルから導出して、動きベクトルの2つの8×8クロマブロックのそれぞれの変位を表すことができる。例えば、図23に示されたマクロブロック配置をもう一度参照すると、1MVマクロブロック2300に、4つの8×8輝度ブロックおよび2つの8×8クロミナンスブロックが含まれる。複数の輝度ブロックY1からY4の変位は、単一の動きベクトルによって表され、対応するクロマ動きベクトルをルマ動きベクトルから導出して、2つのクロマブロックUおよびVのそれぞれの変位を表すことができる。2フィールドMVマクロブロックでは、マクロブロック内の4つの輝度ブロックの各フィールドの変位が、異なる動きベクトルによって記述される。例えば、図37に、上フィールド動きベクトルが、輝度ブロックの4つすべての偶数走査線の変位を記述し、下フィールド動きベクトルが、輝度ブロックの4つすべての奇数走査線の変位を記述することを示す。上フィールド動きベクトルを使用することによって、エンコーダは、対応する上フィールドクロマ動きベクトルを導出することができ、これは、クロマブロックの偶数走査線の変位を記述する。同様に、エンコーダは、下フィールドクロマ動きベクトルを導出することができ、これは、クロマブロックの奇数走査線の変位を記述する。図38を参照すると、4フレームMVマクロブロックでは、4つの輝度ブロックのそれぞれの変位が、個々の動きベクトルMV1、MV2、MV3、およびMV4によって記述される。各クロマブロックは、4つの4×4クロマサブブロックの変位を記述する4つの導出されたクロマ動きベクトルMV1’、MV2’、MV3’、およびMV4’を使用することによって動き補償することができる。各4×4クロマサブブロック用の動きベクトルは、空間的に対応する輝度ブロック用の動きベクトルから導出することができる。図39を参照すると、4フィールドMVマクロブロックでは、複数の輝度ブロックにおける各フィールドの変位が、2つの異なる動きベクトルによって記述される。その複数の輝度ブロックの偶数走査線は、垂直に副分割されて2つの8×8領域を形成している。偶数走査線について、左領域の変位は、上左フィールドブロック動きベクトルによって記述され、右領域の変位は、上右フィールドブロック動きベクトルによって記述される。輝度ブロックの奇数走査線も、2つの8×8領域を形成するために垂直に副分割されている。左領域の変位は、下左フィールドブロック動きベクトルによって記述され、右領域の変位は、下右フィールドブロック動きベクトルによって記述される。各クロマブロックも、輝度ブロックと同一の形で4つの領域に区分することができ、各クロマ領域を、導出された動きベクトルを使用して動き補償することができる。イントラマクロブロックについて、動きは0と仮定される。一般に、インターレースPフレーム内の現在のマクロブロック用の動きベクトルプレディクタを算出するプロセスは、2つのステップからなる。第1に、現在のマクロブロックに対する3つの候補動きベクトルを、その隣接マクロブロックから収集する。例えば、一実施形態で、候補動きブロックは、図40A~図40Bに示された配置および最上行マクロブロックなどの様々な特別な場合に基づいて収集される。代替案では、候補動きブロックを、ある他の順序または配置で収集することができる。第2に、現在のマクロブロックの動きベクトルプレディクタを、候補動きベクトルのセットから算出する。例えば、プレディクタを、median-of-3prediction3の中央値予測を使用して、またはいくつかの他の方法によって算出することができる。インターレースPフレームのマクロブロック用のプレディクタの算出およびクロマ動きベクトルの導出に関するさらなる詳細については、特許文献3を参照されたい。IV.プログレッシブビデオフレームの双方向予測上で説明したように、プログレッシブBフレームのマクロブロックは、5つの異なる予測モードすなわち、順方向、逆方向、直接、補間、およびイントラを使用して予測することができる。エンコーダは、マクロブロックレベルまたは他のレベルで異なる予測モードを、選択し、ビットストリーム内でシグナリングする。順方向モードでは、現在のプログレッシブBフレームのマクロブロックが、時間的に前のアンカーから導出される。逆方向モードでは、現在のプログレッシブBフレームのマクロブロックが、時間的に後のアンカーから導出される。直接モードまたは補間モードで予測されるマクロブロックは、前のアンカーと後のアンカーの両方を予測に使用する。直接モードおよび補間モードには2つの基準フレームがあるので、通常、マクロブロックごとに明示的にコーディングされるか導出されるかのいずれか少なくとも2つの動きベクトルがあるプログレッシブBフレームに使用されるコーディング、シグナリング、およびデコーディングの様々な態様は、下で説明するように、インターレースBフレームにも使用することができる。いくつかの実装で、デコーダは、分数値を使用して、順方向アンカーの同一位置の動きベクトルをスケーリングすることによって、直接モードで動きベクトルを暗黙のうちに導出する。分数は、現在のプログレッシブBフレームの、そのアンカーによって形成されるインターバル内の相対的な時間位置を反映することができるが、真のフレーム間距離を反映する必要はない。したがって、エンコーダは、必ずしも一定の速度を仮定しない。これによって、エンコーダに、動き補償された予測を改善するために分数を実際の時間位置から変更することによって、アンカーと現在のプログレッシブBフレームの間の真の動きを正確かつ安価に記述するための追加の自由度が与えられる。変数BFRACTIONは、この相対時間位置を示すためにビットストリーム内例えば、ピクチャレベルまたは他のレベルで送ることができる個々の分数を表す。この個々分数は、0と1の間の離散値の限られたセットからなる分数である。図17をもう一度参照すると、表1700は、ビットストリーム要素BFRACTIONの可変長コードVLCテーブルである。同一の2つのアンカーの間のプログレッシブBフレームの間でのBFRACTIONの一意性に関する制約はなく、同一のアンカーを有する異なるプログレッシブBフレームが、同一のBFRACTION値を有することができる。表1700のコードは、異なるコードを用いて異なる分数を表すために変更したり、または再配置したりすることができる。表1700に示されていない他の可能なコード例えば、1111110または1111111は、無効なコードと見なすことができ、あるいは、他の目的に使用することができる。例えば、エントリ1111110を使用して、固定小数点フォーマットでBFRACTIONを明示的にコーディングすることができる。もう1つの例として、エントリ1111111を使用して、特定のフレームタイプ例えば、イントラコーディングされたプログレッシブBフレームをシグナリングすることができる。図18をもう一度参照すると、デコーダは、擬似コード1800に従ってスケーリング係数を見つける。図19をもう一度参照すると、デコーダは、そのスケーリング係数を使用して、後続参照ピクチャの同一位置のマクロブロックの動きベクトルのx要素およびy要素をスケーリングする。擬似コード1900の関数Scale_Direct_MVは、入力MV_XおよびMV_Yをとり、直接モードで2つの動きベクトルを導出し、この動きベクトルの一方は、順方向前のアンカーピクチャを参照しMV_XF、MV_YF、他方は、逆方向後のアンカーピクチャを参照するMV_XB、MV_YB。プログレッシブBフレームのスキップドマクロブロック信号は、動きベクトル予測誤差が所与のマクロブロックについて存在しないことを示す。予測された動きベクトルは、正確に、エンコーダ/デコーダがそのマクロブロックの再構成に使用する動きベクトルであるすなわち、動きベクトル予測誤差が適用されない。エンコーダは、それでも、直接予測、順方向予測、逆方向予測、または補間予測でそのマクロブロックをスキップすることができるので、このマクロブロックの予測モードをシグナリングする。V.インターレースBピクチャの予測コーディング/デコーディングにおける革新の概要説明される実施形態は、インターレースBピクチャ例えば、インターレースBフィールド、インターレースBフレームをコーディングし、デコーディングする技法およびツールを含む。説明される実施形態は、限定されないが、以下を含む、双方向予測インターレースピクチャをコーディングし、かつ/またはデコードする説明される技法およびツールのうちの1つまたは複数を実装する。1.インターレースBフレームについて、エンコーダ/デコーダは、インターレースBフレーム内のマクロブロックの上フィールドと下フィールドの間で予測モードを切り替える。2.インターレースBフレームについて、エンコーダ/デコーダは、前にデコードされた時間的に後のアンカーの同一位置のマクロブロックの上フィールドおよび下フィールドのそれぞれの1つの代表的動きベクトルを選択することによって、現在のマクロブロックの直接モード動きベクトルを算出する。この選択は、現在のインターレースBフレームのマクロブロックをコーディングするモード例えば、1MVモード、2フィールドMVモードなどに少なくとも部分的に基づいて実行することができる。3.インターレースBフィールドまたはインターレースBフレームについて、エンコーダ/デコーダは、4MVコーディングを使用する。例えば、4MVは、1方向予測モード順方向モードまたは逆方向モードで使用することができるが、他の使用可能な予測モード例えば、直接、補間では使用することができない。4.インターレースBフィールドまたはインターレースBフレームについて、順方向動きベクトルは、順方向動きベクトルバッファからの前に再構成されたまたは推定された順方向動きベクトルを使用して予測され、逆方向動きベクトルは、逆方向動きベクトルバッファからの前に再構成されたまたは推定された逆方向動きベクトルを使用して予測される。結果の動きベクトルが、対応するバッファに追加され、動きベクトルバッファの穴が、推定された動きベクトル値によって埋められる。a.インターレースBフレームについて、順方向予測が動きベクトルの予測に使用されて、動きベクトルが順方向バッファに追加されるときに、逆方向バッファ内の対応する位置が、プレディクタとして逆方向動きベクトルだけを使用して予測された動きベクトルになるはずのものによって埋められる穴埋め。同様に、逆方向予測が動きベクトルの予測に使用されて動きベクトルが逆方向バッファに追加されるときに、順方向バッファ内の対応する位置が、プレディクタとして順方向動きベクトルだけを使用して予測された動きベクトルになるはずのものによって埋められる。b.インターレースBフィールドについて、穴埋め用に異なる極性の動きベクトル例えば、同一極性または反対極性のどちらかを選択するために、エンコーダ/デコーダは、優勢極性フィールドの動きベクトルを選択する。アンカーと現在のフレームの間の距離が、様々な構文要素を使用して算出され、算出された距離が、基準フィールド動きベクトルのスケーリングに使用される。5.インターレースBフィールドについて、エンコーダ/デコーダは、自己参照フレームを使用する。例えば、現在のフレームの第2のBフィールドが、動き補償された予測において現在のフレームからの第1のBフィールドを参照する。6.インターレースBフィールドについて、エンコーダは、インターレースBフィールドの1つまたは複数のマクロブロックについて、予測モードが順方向または非順方向のどちらであるかを示す2値情報を例えば、圧縮されたビットプレーンのBフィールドレベルで送る。デコーダは、対応するデコーディングを実行する。7.インターレースBフィールドについて、エンコーダ/デコーダは、次のアンカーピクチャの対応するフィールドの対応するマクロブロックが4つの動きベクトルを使用してコーディングされている場合に、優勢極性を選択する論理を使用して直接モード動きベクトルを選択する。8.イントラコーディングされたフィールド:よい動き補償がBフィールドについて可能でないときに、そのBフィールドを、イントラすなわち、予測されないBフィールドBIフィールドとしてコーディングすることができる。説明される技法およびツールは、互いにまたは他の技法もしくはツールと組み合わせて使用することができ、あるいは、独立に使用することができる。VI.インターレースBフレームのフィールドコーディングされたマクロブロック内での予測モードの切替いくつかの実装で、エンコーダは、インターレースBフレームのマクロブロック内で予測モード切替を実行する。例えば、エンコーダは、インターレースBフレームのマクロブロックの上フィールドから下フィールドに進む際に、順方向から逆方向へ、または逆方向から順方向への予測モード切替を可能にする。マクロブロック全体を単一の予測方向モードでエンコードするのではなく、予測方向モードの組合せを使用して、単一のマクロブロックをコーディングする。1つのマクロブロックの個々のフィールドのどちらかに予測方向モードを変更する能力は、多くのシナリオでインターレースBフレームのより効率的なコーディングにつながる。図41に、異なる予測モードを使用してインターレースBフレーム内のフィールドコーディングされたマクロブロック内の個々のフィールドの動きベクトルを予測する技法4100を示す。4110で、インターレースBフレーム内で、エンコーダ/デコーダは、第1予測モードを使用して、フィールドコーディングされたマクロブロック内の第1フィールドの動きベクトルを予測する。いくつかの実装で、第1フィールドを、上フィールドまたは下フィールドのいずれかとすることができ、その決定は、別々にシグナリングされる。4120で、エンコーダ/デコーダは、異なる予測モードを使用して、同一マクロブロック内の第2フィールドの動きベクトルを予測する。例えば、2つの動きベクトルを使用してフィールドコーディングされたマクロブロックについて、上フィールドを順方向予測することができすなわち、上フィールド動きベクトルが前のアンカーピクチャを参照する、下フィールドを逆方向予測することができるすなわち、下フィールドが後のアンカーピクチャを参照する。いくつかの実装で、インターレースBフレーム内のフィールドコーディングされたマクロブロックは、4つの動きベクトルを使用してはエンコードされない。代替案では、マクロブロックが、4つの動きベクトル例えば、フィールドごとに2つの動きベクトルを使用してフィールドコーディングされる場合に、上フィールドの2つの動きベクトルが、一方のアンカー順方向または逆方向を参照し、下フィールドの動きベクトルが、他方のアンカーを参照する。この予測モードの切替は、インターレースBフレームに関する次の擬似コードにさらに示されているように、マクロブロックタイプが直接または補間でない場合に1つの追加ビットだけを、まずは必要とする。IfMBisfieldcodedANDMBTypeisforwardorbackwardthenIfMVSwitch1thenpredictionmodeswitchesbetweentopandbottomfield上述の疑似コードの和訳は以下であるMBはフィールドコーディングされ、且つMBタイプは順方向または逆方向かその場合、MVスイッチ=1か、その場合、予測モードが順方向から逆方向へまたはその反対に上フィールドと下フィールドのどちらかに切り替わる訳の終わりしたがって、予測モード切替を順方向モードおよび逆方向モードに制限することは、第2モードが第1モード前にシグナリングされたおよびスイッチ値から暗示されるので、第2モードをシグナリングするためのより多くのビットの必要性を無くす。インターレースBフレームのマクロブロックによって覆われる領域に激しい動きがある場合に、そのマクロブロックは、フィールドモードでコーディングされる可能性が高い。この状況の下で、順方向予測または逆方向予測のどちらかが、ピクセル平均化を伴う直接モードまたは補間モードよりも、正確な動き補償結果を与える可能性が高い。平均化は、平滑化例えば、激しい動きに伴う高い周波数要素の消失をもたらすので、直接モードおよび補間モードは、そのようなマクロブロックをコーディングする最善の方法でない可能性がある。実験結果は、フィールドコーディングされたマクロブロック内のフィールドレベルでスイッチングオプションとして4つのすべての予測モードをシグナリングすることによる増加したオーバーヘッドのために非効率性を示している。代替案では、エンコーダが、インターレースBフレームのフィールドコーディングされたマクロブロック内で3つ以上の予測モードの間で切り替えることができ、あるいは、異なる予測モードの間で切り替えることができる。VII.インターレースBフレームでの直接モード動きベクトルの算出いくつかの実装で、エンコーダ/デコーダは、前にデコードされたアンカーIフレームまたはアンカーPフレーム時間的に順方向の基準フレームであり、逆方向予測基準フレームとして使用されるからの動きベクトルをバッファリングし、インターレースBフレーム内の現在のマクロブロック用の直接モード動きベクトルの算出に使用するために、バッファリングされた動きベクトルのうちの1つまたは複数を選択する。例えば、エンコーダ/デコーダは、アンカーフレームの各マクロブロックからの上フィールドおよび下フィールドのそれぞれの代表的な動きベクトルをバッファリングし、バッファリングされた動きベクトルのうちの1つまたは複数を使用して、現在の直接モードマクロブロック用の動きベクトルを算出する。この選択は、現在のマクロブロックのコーディングモード例えば、1MVモード、2フィールドMVモードなどに少なくとも部分的に基づいて実行される。図42に、一実装でのインターレースBフレームのマクロブロック用の直接モード動きベクトルを算出する技法4200を示す。4210で、エンコーダ/デコーダが、前に再構成された時間的に将来のアンカーフレーム内の同一位置のマクロブロックのマクロブロックごとに複数の動きベクトルをバッファリングする。同一位置のマクロブロックに1つの動きベクトルだけが含まれる場合には、その動きベクトルが、必要であれば同一位置のマクロブロックの様々なブロック用の動きベクトル値として、バッファリングされる。4220で、エンコーダ/デコーダは、現在のマクロブロックに必要な動きベクトルの個数に部分的に依存して、インターレースBフレーム内の現在のマクロブロックの直接モード予測に同一位置のマクロブロックのバッファリングされた動きベクトルのうちの1つまたは複数を選択する。一実装で、デコーダは、将来のアンカーフレームから、同一位置のマクロブロックの2つの動きベクトル、またはデコードされたルマ動きベクトルの可能な最大の個数の半分をバッファリングする。アンカーフレーム内のマクロブロックは、マクロブロックごとに4つまでの動きベクトルを用いて、異なる形でコーディングすることができるが、下で説明するように、2つまでの動きベクトルだけがバッファリングされる。また、現在のマクロブロックについて生成される順方向/逆方向動きベクトル対の個数は、前にデコードされた将来のアンカーフレーム内の同一位置のマクロブロックのコーディングモードだけではなく、現在のマクロブロックのコーディングモードに依存する。例えば、現在の直接モードマクロブロックが、1MVコーディングされている場合に、デコーダは、アンカーフレーム内の同一位置のマクロブロックの上フィールドからのバッファリングされた動きベクトルをとり、順方向および逆方向に1つずつの1対の直接動きベクトルを生成する。現在の直接モードマクロブロックが、フィールドコーディングされている場合に、デコーダは、アンカーフレーム内の同一位置のマクロブロックからの下フィールドと上フィールドの両方のバッファリングされた動きベクトルをとって、2対の動きベクトルを生成し、現在の直接モードマクロブロックについて合計4つの動きベクトル順方向と逆方向の両方でフィールドごとに1つを与える。図43に、以前にデコードされた時間的に将来のアンカーフレームの同一位置のマクロブロック4300のブロックの動きベクトルMV1、MV2、MV3、およびMV4を示す。同一位置のマクロブロックが、1MVマクロブロックである場合には、MV1、MV2、MV3、およびMV4のすべてが等しい。同一位置のマクロブロックが、2フィールドMVマクロブロックである場合には、MV1およびMV2が、ある値と等しく、MV3およびMV4が、別の値と等しい。同一位置のマクロブロックが、4フィールドMVマクロブロックまたは4フレームMVマクロブロックである場合には、MV1、MV2、MV3、およびMV4のすべてが異なる値である場合がある。しかし、MV1、MV2、MV3、およびMV4が使用可能である場合であっても、デコーダは、MV1およびMV3だけをバッファリングする。図43に示された例では、デコーダは、MV1およびMV3をバッファリングする。現在のマクロブロックが1MVモードを使用している場合に、デコーダは、現在のマクロブロックの順方向および逆方向の直接モード動きベクトルの算出にMV1を選択し、MV3を無視する。現在のマクロブロックが2フィールドMVモードを使用している場合に、デコーダは、4つの直接モード動きベクトルの算出にMV1とMV3の両方を使用する。これらの動作は、現在のマクロブロックの上フィールドおよび下フィールドに関する動きのよい表現をもたらす。アンカーフレーム内の同一位置のマクロブロックからの動きベクトルが選択済みであるときに、デコーダは、スケーリング論理を適用して、Bフレームマクロブロックの直接モード予測のための対応する順方向および逆方向を指す動きベクトルを導出する。例えば、デコーダは、図19の関数Scale_Direct_MVを適用することができる。あるいは、デコーダは、異なるスケーリング関数を適用する。代替案では、エンコーダ/デコーダが、アンカーフレームのマクロブロックごとに4つの動きベクトルをバッファリングすることができる。例えば、現在のマクロブロックが1MVコーディングされている場合に、エンコーダ/デコーダは、アンカーフレーム内の同一位置のマクロブロックの上左動きベクトルをとって1対の直接動きベクトルを生成するか、アンカーフレームの4つの動きベクトルを利用することができる。現在のマクロブロックがフィールドコーディングされている場合に、エンコーダ/デコーダは、上左動きベクトルおよび下左動きベクトルをとり、2対フィールドごとに1つを生成するか、アンカーフレームのマクロブロックの上フィールド動きベクトルの平均および下フィールド動きベクトルの平均をとることができる。直接モード動きベクトルは、アンカーフレームの同一位置のマクロブロックがイントラであるか、アンカーフレームがIフレームであるときに、0,0として扱われる。VIII.インターレースBフィールドおよびインターレースBフレームでの4MVコーディングいくつかの実装で、エンコーダは、4動きベクトル4MVコーディングモードを使用して、インターレースBフィールドおよびインターレースBフレームをエンコードする。4MVコーディングは、例えば、1つのマクロブロック内で4つのルマブロックを独立に予測し、動き補償することを可能にすることによって1動きベクトル1MVコーディングより正確な、複雑な動き軌跡の表現を可能にすることができる。4MVの使用を、ある種の予測モードに制限することができる。例えば、いくつかの実装で、エンコーダは、順方向モードおよび逆方向モードフィールドとフレームの両方に4MVを使用するが、直接モードまたは補間モードには使用しない。このことは、プログレッシブコーディングモードで、4MVがプログレッシブBフレームに使用されないのとは異なる。直接モードおよび補間モードは、動き補償された予測を算出するときにピクセル平均化を用いるが、これは、微細な細部を平滑化する傾向がある。そのような平滑化が受入可能である場合に、1MVモードを4MVモードの代わりに効果的に使用できる可能性が高い。というのは、1MVが、コーディングがより安価であり、滑らかな動き軌跡を正確に記述するのに使用できるからである。実験から、インターレースBフィールドおよびインターレースBフレームのマクロブロックに4MVモードを使用するが、4MVモードを順方向予測マクロブロックおよび逆方向予測マクロブロックに制限することの利点が示された。4MVを順方向モードおよび逆方向モードに制限することを選択するもう1つの要因が、4MVを直接モードまたは補間モードと組み合わせることによって、各場合に合計8つの動きベクトルがもたらされることである。シグナリングオーバーヘッド補間モードに関すると8つの動きベクトルに関連付けられた実装およびデコーディングの複雑さとが、一般に、正確さの利点を相殺する。さらに、通常はより高い品質セッティングでコーディングされるすなわち、より軽く量子化されるPピクチャが通常は動き補償に1つまたは4つの動きベクトルだけを使用できるときに、8つの動きベクトルを用いてインターレースBピクチャをエンコードすることは、しばしば実用的でない。ある種の予測モードに4MVを制限することは、他の利益も有する。例えば、4MVが、順方向予測モードおよび逆方向予測モードだけに制限され、例えば、下のセクションXIで説明するものなどのビットプレーンコーディング技法で順方向/逆方向モード決定が既にシグナリングされている場合に、エンコーダは、4MVマクロブロックに関する予測モードをシグナリングするために追加のビットを送る必要がない。次の擬似コードは、順方向/逆方向決定がビットプレーンコーディングされ、すべてのマクロブロックレベル情報の前に送られる例えば、ピクチャレベルで送られる場合に、インターレースBフィールドのマクロブロックに適用可能である。IfMBis4MVcodedANDpredictionmodeisNOTforwardThenpredictionmodeBackward上述の疑似コードの和訳は以下であるMBが4MVコーディングされ、且つ予測モードが非順方向かその場合、予測モード=逆方向信号モードにこれ以上のビットは送らない訳の終わりいくつかの実装で、直接/非直接予測モード決定が、すべてのマクロブロックレベル情報の前に例えば、ピクチャレベルで圧縮されたビットプレーン内の形式でで送られる。直接/非直接情報のコーディングのさらなる詳細については、特許文献1を参照されたい。次の擬似コードは、そのような実装で4MVが順方向モードおよび逆方向モードに制限されている場合に、インターレースBフレームのマクロブロックに適用可能である。IfMBis4MVcodedANDpredictionmodeisNOTdirectThensendoneadditionalbittosignalpredictionmode上述の疑似コードの和訳は以下であるMBが4MVコードされ、且つ予測モードが非直接かその場合1つの追加ビットを信号予測モードに順方向または逆方向で送る訳の終わり代替案では、4MVが、順方向モードまたは逆方向モード以外の予測モードに、またはこれに追加して他のモードに使用されたり、順方向モードに使用されなかったり、逆方向モードに使用されなかったり、すべての予測モードに使用されなかったり、する。例えば、いくつかの実装で、4MVが、インターレースBフィールドには使用されるが、インターレースBフレームには使用されない。他の代替案では、他のコードまたは他のコード長を使用して、4MVコーディングと組み合わせて予測モードをシグナリングすることができる。IX.別々の順方向動きベクトルバッファおよび逆方向動きベクトルバッファを使用する、インターレースBピクチャの動きベクトルの予測インターレースBピクチャの動きベクトルは、別々の順方向動きベクトルバッファコンテクストおよび逆方向動きベクトルバッファコンテクストを使用して予測される。一般に、順方向動きベクトルは、順方向動きベクトルバッファに格納された動きベクトルを使用して予測され、逆方向動きベクトルは、逆方向動きベクトルバッファに格納された動きベクトルを使用して予測される。その後、その結果として得られた現在のマクロブロックの動きベクトルが、適切なバッファに格納され、他のマクロブロック用の後続の動きベクトル予測に使用することができる。通常、所与のマクロブロックが順方向動きベクトルだけ順方向予測マクロブロックの場合または逆方向動きベクトルだけ逆方向予測マクロブロックの場合を用いて予測される場合であっても、順方向動きベクトルバッファと逆方向動きベクトルバッファの両方の対応するスペースが、マクロブロックごとに埋められる。次のセクションで、インターレースBピクチャ例えば、インターレースBフィールド、インターレースBフレームの動きベクトルを予測する技法と、欠けている順方向動きベクトルまたは逆方向動きベクトル用の動きベクトルバッファ内の対応する空間を穴埋めする技法を説明する。A.順方向バッファおよび逆方向バッファインターレースBピクチャの動きベクトルを予測するときに、エンコーダ/デコーダは、順方向動きベクトルバッファおよび/または逆方向動きベクトルバッファ内の、前に再構成された動きベクトルを使用する。順方向モードでは、エンコーダ/デコーダは、順方向動きベクトルバッファからの再構成された順方向動きベクトルを使用して、順方向動き補償について現在の動きベクトルを予測する。逆方向モードでは、エンコーダ/デコーダは、逆方向動きベクトルバッファからの再構成された逆方向動きベクトルを使用して、逆方向動き補償について現在の動きベクトルを予測する。直接モードまたは補間モードのマクロブロックについて、エンコーダ/デコーダは、順方向動きベクトルバッファを使用して1つの順方向動きベクトル成分または、潜在的に複数の順方向動き成分を予測することと、逆方向動きベクトルバッファを使用して1つの逆方向成分または、潜在的に複数の逆方向動き成分を予測することとの両方を行う。インターレースBピクチャの動きベクトルを再構成した後に、エンコーダ/デコーダは、再構成された順方向動きベクトルを順方向動きベクトルバッファにバッファリングし、再構成された逆方向動きベクトルを逆方向動きベクトルバッファにバッファリングする。順方向モードでは、エンコーダ/デコーダは、再構成された順方向動きベクトルを順方向動きベクトルバッファに格納する。逆方向モードでは、エンコーダ/デコーダは、再構成された逆方向動きベクトルを逆方向動きベクトルバッファに格納する。直接予測モードまたは補間予測モードのいずれかを使用するマクロブロックについて、エンコーダ/デコーダは、順方向動きベクトル成分を順方向動きベクトルバッファに格納することと、逆方向動きベクトル成分を逆方向動きベクトルバッファに格納することの両方を行う。例えば、エンコーダが、インターレースBピクチャ内のマクロブロック座標位置12,13で順方向予測マクロブロックをエンコードしている場合に、エンコーダは、順方向動きベクトルプレディクタを算出し、順方向動きベクトルの残差そのマクロブロックがスキップドでないと仮定してをビットストリームで送る。デコーダは、残差すなわち差分をデコードし、動きベクトルを再構成する。エンコーダ/デコーダは、再構成された動きベクトルを順方向動きベクトルバッファに挿入する。次に、エンコーダ/デコーダは、動きベクトル予測論理を使用して、埋められる逆方向動きベクトルになる逆方向動きベクトルプレディクタを算出し、この逆方向動きベクトルを逆方向動きベクトルバッファの位置12,13に置く。例えば、median-of-3の予測シナリオでは、エンコーダ/デコーダは、位置11,13、12,12、および13,12現在の順方向予測マクロブロックの左、上、および右上の隣接マクロブロックにバッファリングされた逆方向動きベクトルの中央値medianをとって、12,13用の逆方向動きベクトルを埋め込む。図44に、順方向動きベクトルバッファおよび/または逆方向動きベクトルバッファを使用してインターレースBピクチャ内の現在のマクロブロックの動きベクトルを予測する技法4400を示す。4410で、予測される動きベクトルが順方向動きベクトルまたは逆方向動きベクトルのどちらであるかに応じて、エンコーダ/デコーダは、順方向動きベクトルバッファまたは逆方向動きベクトルバッファのどちらを使用するかを選択する。現在の動きベクトルが順方向動きベクトルである場合に、エンコーダ/デコーダは、4420で、順方向動きベクトルバッファからの動きベクトルプレディクタ候補のセットを選択する。現在の動きベクトルが逆方向動きベクトルである場合に、エンコーダ/デコーダは、4430で、逆方向動きベクトルバッファからの動きベクトルプレディクタ候補のセットを選択する。4440で、エンコーダ/デコーダは、動きベクトルプレディクタ候補からなるセットのうちのそのセットに基づいて動きベクトルプレディクタを算出する。例えば、エンコーダ/デコーダは、動きベクトルプレディクタ候補のセットの中央値medianを算出する。単純な場合に、エンコーダ/デコーダは、すべてが1MVマクロブロックであったプレディクタに基づいて1MVの現在のマクロブロックの動きベクトルプレディクタを算出する。現在のマクロブロックおよび/または隣接マクロブロックが異なるモードを有する、より複雑な変形形態を、下で説明する。図45に、順方向動きベクトルバッファ4510および逆方向動きベクトルバッファ4520内の動きベクトルを示す。図45に示された例では、再構成されたマクロブロック4530~4570について、エンコーダ/デコーダが、順方向動きベクトルバッファ4510に順方向動きベクトルを格納し、逆方向動きベクトルバッファ4520に逆方向動きベクトルを格納する。現在のマクロブロック4580の動きベクトルを予測するために、エンコーダ/デコーダは、隣接マクロブロックからの候補プレディクタを使用する。例えば、現在のマクロブロック4580が、順方向モードで予測される場合に、エンコーダは、順方向動きベクトルバッファ内の隣接する順方向動きベクトルを使用して例えば、median-of-3の予測を使用して順方向動きベクトルを予測することができ、その後、順方向動きベクトルバッファ内の現在のマクロブロックの位置に、再構成された動きベクトル値を埋め込むことができる。逆方向動きベクトルバッファ4520の対応する現在のマクロブロックの位置を埋めるために、エンコーダ/デコーダは、逆方向動きバッファ内の隣接する逆方向動きベクトルを使用して逆方向動きベクトルを予測し、逆方向動きベクトルバッファ内の現在のマクロブロックの位置にそのプレディクタを置くことができる。B.インターレースBフレームでの動きベクトル予測いくつかの実装で、エンコーダ/デコーダは、別々の順方向動きベクトルコンテクストおよび逆方向動きベクトルコンテクストを使用する、インターレースBフレーム内のマクロブロック用のその別々のフィールドを含むの動きベクトルを予測するのに次のスキームを使用する。図40A~図40Bに、候補動きベクトルの収集源となる隣接マクロブロックを示す。1MVマクロブロックが順方向予測される場合に、エンコーダ/デコーダは、順方向動きベクトルバッファの候補動きベクトルからその順方向動きベクトルを予測する例えば、median-of-3の予測と、図40Aおよび図40Bまたは他所に示されたものなどの予測パターンを使用して。エンコーダ/デコーダは、順方向動きベクトルバッファにその順方向動きベクトルを動きベクトル予測誤差を加算した後に格納する。エンコーダ/デコーダは、逆方向動きベクトルバッファの候補動きベクトルから逆方向動きベクトルを予測する例えば、順方向予測の場合と同様にことによって穴を埋め、その逆方向動きベクトルここではプレディクタを逆方向動きベクトルバッファに格納する。1MVマクロブロックが逆方向予測される場合に、エンコーダ/デコーダは、逆方向動きベクトルバッファの候補動きベクトルからその逆方向動きベクトルを予測する例えば、順方向予測の場合と同様に。エンコーダ/デコーダは、逆方向動きベクトルバッファにその逆方向動きベクトルを予測誤差を加算した後に格納する。エンコーダ/デコーダは、順方向動きベクトルバッファの候補動きベクトルから順方向動きベクトルを予測することによって穴を埋め、その順方向動きベクトルここではプレディクタを順方向動きベクトルバッファに格納する。イントラコーディングされたマクロブロックである隣接マクロブロックは、順方向動きベクトルバッファおよび逆方向動きベクトルバッファでは無視される。様々な特別な場合が、インターレースBフレームの1MVマクロブロックとフィールドコーディングされた2MVマクロブロックの組合せに対処する。現在の1MVマクロブロックの位置A、B、またはCの隣接マクロブロックが、フィールドコーディングされた2MVマクロブロックである場合に、エンコーダ/デコーダは、その位置の動きベクトルプレディクタとして、その2MVマクロブロックのフィールド動きベクトルの平均をとる。例えば、順方向予測される現在の2フィールドMVマクロブロックについて、2つの順方向予測フィールド動きベクトルごとに、隣接マクロブロックからの候補動きベクトルが、順方向動きベクトルバッファから収集される。エンコーダ/デコーダは、順方向動きベクトルバッファに格納されている、隣接マクロブロックのコーディングモード例えば、イントラ、1MV、2フィールドMVに基づいて候補動きベクトルのセットを選択するが。隣接マクロブロックが、存在し、それがイントラコーディングされていない場合に、エンコーダ/デコーダは、その候補のセットに追加すべきマクロブロックの動きベクトルを探す。いくつかの実施形態で、エンコーダ/デコーダは、次のように処理する。上フィールド順方向動きベクトルについて、位置A、B、またはCの隣接マクロブロックが1MVマクロブロックである場合に、エンコーダは、順方向動きベクトルバッファの対応する位置からのマクロブロックの動きベクトルを候補のセットに追加する。位置A、B、またはCの、2フィールドMVマクロブロックである隣接マクロブロックについて、エンコーダ/デコーダは、順方向動きベクトルバッファの対応する位置からの上フィールドMVをセットに追加する。下フィールド順方向動きベクトルについて、位置A、B、またはCの隣接マクロブロックが1MVマクロブロックである場合に、エンコーダは、順方向動きベクトルバッファの対応する位置からのマクロブロックの動きベクトルを候補のセットに追加する。位置A、B、またはCの、2フィールドMVマクロブロックである隣接マクロブロックについて、エンコーダ/デコーダは、順方向動きベクトルバッファの対応する位置からの下フィールド動きベクトルをセットに追加する。2フィールドMVマクロブロックのフィールド動きベクトルのプレディクタを算出するために、エンコーダ/デコーダは、次に、候補のセットの中央値medianを算出する。2フィールドMVマクロブロックの逆方向予測動きベクトルを算出するために、論理は、順方向予測の場合と同一であるが、隣接マクロブロックからの候補動きベクトルが、逆方向動きベクトルバッファから収集される。やはり、イントラコーディングされた、位置A、B、またはCの隣接マクロブロックは、動きベクトル予測について無視される。2フィールドMVマクロブロック用の動きベクトルの再構成例えば、動きベクトル差分情報を加算することによるの後に、再構成された実際の動きベクトルが、再構成された動きベクトルの予測方向に適切な、順方向動きベクトルバッファまたは逆方向動きベクトルバッファに置かれる。欠けている方向の動きベクトルバッファの対応する空のスロットは、欠けている方向の動きベクトルプレディクタを算出し、その動きベクトルプレディクタを空のスロットに格納することによって、埋められる。予測モード切替が使用されている上のセクションVIを参照されたい場合に、例外が、インターレースBフレーム内のフィールドコーディングされたマクロブロックの穴埋めに、適用される。この場合に、所与のフィールドコーディングされた2MVマクロブロックは、1つの順方向動きベクトルおよび1つの逆方向動きベクトルを有する。インターレースBフレームのフィールドコーディングされたマクロブロックの再構成の後に、フィールドコーディングされたマクロブロックが上フィールドと下フィールドのどちらかに予測方向を切り替える場合に、エンコーダ/デコーダは、順方向動きベクトルバッファの上下両方の動きベクトルスロットに順方向動きベクトルを埋め、逆方向バッファの上下両方の動きベクトルスロットに逆方向動きベクトルを埋め込む。順方向動きベクトルは、1つのフィールド例えば、上フィールドだけに送られるが、エンコーダは、順方向動きベクトルバッファの上下両方のフィールドの動きベクトルスロットに同一の動きベクトルを置く。同様に、逆方向動きベクトルは、下フィールドだけに送られるが、エンコーダは、逆方向動きベクトルバッファの上下両方のフィールドのスロットにその動きベクトルを置く。例えば、図46に、順方向動きベクトルバッファ4610および逆方向動きベクトルバッファ4620内の再構成されたマクロブロック4680の上フィールド動きベクトルおよび下フィールド動きベクトルを示す。図46に示された例では、再構成されたマクロブロック4630~4670について、エンコーダ/デコーダは、順方向動きベクトルバッファ4610に順方向動きベクトル、逆方向動きベクトルバッファ4620に逆方向動きベクトルを格納する。再構成されたマクロブロック4680は、予測切替を用いてフィールドコーディングされており、その上フィールド動きベクトルは、上フィールド動きベクトルの予測方向に依存する順方向または逆方向のいずれかの動きベクトルバッファの上フィールド位置および下フィールド位置に格納される。マクロブロック4680の下フィールド動きベクトルは、他方の動きベクトルバッファの上下の位置に格納される。この例では、再構成されたマクロブロック4680が、予測モード切替を使用する。順方向動きベクトルおよび逆方向動きベクトルは、それぞれ、1つのフィールドだけについて送られるが、エンコーダは、めいめいの順方向動きベクトルバッファおよび逆方向動きベクトルバッファの上フィールドの動きベクトルスロットと下フィールドの動きベクトルスロットとに同一の動きベクトルを置く。現在のマクロブロックが補間である場合に、エンコーダ/デコーダは、順方向動きベクトルバッファを使用して1つの順方向動きベクトル2フィールドMVマクロブロックの場合には複数の順方向動きベクトルを予測し、逆方向動きベクトルバッファを使用して1つの逆方向動きベクトル2フィールドMVマクロブロックの場合には複数の逆方向動きベクトルを予測し、この順方向動きベクトルおよび逆方向動きベクトル予測誤差が算出された後にこれを加算した後にを、それぞれ順方向動きベクトルバッファおよび逆方向動きベクトルバッファに格納する。マクロブロックがインターレースBフレーム内で直接予測される場合には、エンコーダ/デコーダは、上のセクションVIIで説明した技法を使用することができる。いくつかの実装で、1MVマクロブロック、2フィールドMVマクロブロック、およびイントラマクロブロックが、インターレースBフレームについて許容され他のMVマクロブロックタイプは許容されない、これによって、より少数の現在/隣接モード組合せにしか対処する必要がないので、動きベクトルを予測する論理が単純になる。代替案では、4フレームMVマクロブロックおよび4フィールドMVマクロブロックなどの他のおよび/または追加のMVモードが許容される。例えば、図64、図69、および図70に示された擬似コードの一部を使用して、インターレースBフレームでそのような他の組合せに対処することができる。C.インターレースBフィールドの動きベクトル予測一般に、インターレースBフィールドについて、前に構成されたまたは導出された順方向フィールド動きベクトルが、現在の順方向フィールド動きベクトルのプレディクタとして使用され、前に構成されたまたは導出された逆方向フィールド動きベクトルが、現在の逆方向フィールド動きベクトルのプレディクタとして使用される。順方向モードまたは逆方向モードでは、現在の順方向フィールド動きベクトルまたは逆方向フィールド動きベクトルが、適当な動きベクトルバッファに追加され、他方の欠けている方向例えば、順方向モードでは逆方向、逆方向モードでは順方向の動きベクトルは、プレディクタとしての後の使用のために導出される。いくつかの実装で、フィールド動きベクトル予測選択は、この詳細な説明の上のセクションIII.A.2および下のセクションXIV.B.3で説明する2つの基準フィールド動きベクトル予測論理に従って実行される。例えば、図33A~図33Fに示された擬似コードを使用して、インターレースBフィールドのマクロブロックの2フィールド順方向動きベクトルプレディクタを算出し、順方向フィールド動きベクトルの再構成に使用するために1つの動きベクトルプレディクタを選択する。次に、再構成された動きベクトル値を、順方向動きベクトルバッファに置く。この擬似コードを使用して、マクロブロックの2フィールド逆方向動きベクトルプレディクタも算出し、逆方向動きベクトルバッファを埋める値として使用するために1つのプレディクタを選択する。インターレースBフィールドについて、欠けている方向の動きベクトルバッファの穴を埋めるために、エンコーダ/デコーダは、同一極性および反対極性の動きベクトルプレディクタのどちらかを選択する。この極性の間の選択が生じるのは、2つのプレディクタ現在のフィールドと同一極性のプレディクタおよび現在のフィールドと反対極性のプレディクタが、所与の欠けている方向で生成されるからである。したがって、いくつかの実装で、エンコーダ/デコーダは、欠けている方向の動きベクトルの過半数または優勢な極性のプレディクタを選択する。この形で、順方向動きベクトルと逆方向動きベクトルの両方の完全なセットが、動きベクトル予測で使用するために与えられる。代替案では、まず、優勢極性が決定され、プレディクタ選択が実行され、その後、選択された動きベクトルプレディクタだけが算出される。異なる極性のフィールド動きベクトルのどちらかを選択することによる実際の値のバッファリングおよび穴埋めについての一実装での処理を、図47の擬似コード4700に示す。擬似コード4700には、穴埋め予測中に、実際の動きベクトルが、欠けている方向について存在しない場合、優勢極性を有する、予測された、欠けている方向の動きベクトルが、エンコーダ/デコーダによって選択されることが示されている。いくつかの実装で、インターレースBフィールド動きベクトル予測の全体的なスキームは、次の通りである。マクロブロックが順方向予測である場合に、エンコーダ/デコーダは、順方向動きベクトルバッファの候補の同一のおよび/または反対極性の動きベクトル例えば、ほとんどの場合に左、上、および右上の隣接ベクトルの3の中央値medianof3予測を使用して、またはバッファリングされた動きベクトルから導出された動きベクトルから、順方向動きベクトルを予測する。エンコーダ/デコーダは、再構成された順方向動きベクトルを順方向動きベクトルバッファに格納し、逆方向動きベクトルバッファ内の対応する位置の優勢逆方向動きベクトルプレディクタ逆方向動きベクトルバッファの空間的近傍からの3の中央値medianof3によって同様に予測されるを算出し、格納する。マクロブロックが逆方向予測である場合に、エンコーダ/デコーダは、逆方向動きベクトルバッファの候補の同一のおよび/または反対極性の動きベクトル例えば、ほとんどの場合に左、上、および右上の隣接ベクトルの3の中央値medianof3予測を使用して、またはバッファリングされた動きベクトルから導出された動きベクトルから、逆方向動きベクトルを予測する。エンコーダ/デコーダは、再構成された逆方向動きベクトルを逆方向動きベクトルバッファに格納し、順方向動きベクトルバッファ内の対応する位置の優勢順方向動きベクトルプレディクタ順方向動きベクトルバッファの空間的近傍からの3の中央値medianof3によって同様に予測されるを算出し、格納する。マクロブロックが補間である場合に、エンコーダ/デコーダは、順方向動きベクトルバッファを使用して、順方向動きベクトル成分を予測し、逆方向動きベクトルバッファァを使用して、逆方向動きベクトル成分を予測し、再構成された順方向動きベクトルおよび逆方向動きベクトルを算出された予測誤差が算出された後にこれを加算した後に、それぞれ順方向動きベクトルバッファおよび逆方向動きベクトルバッファに格納する。マクロブロックが、直接予測である場合に、エンコーダ/デコーダは、現在のフィールドの直接モード動きベクトルを算出し、順方向動きベクトル成分および逆方向動きベクトル成分をそれぞれの動きベクトルバッファに格納する。イントラコーディングされたマクロブロックである隣接マクロブロックは、動きベクトル予測では無視される。様々な特別な場合が、インターレースBフィールドの1MVマクロブロックと4MVマクロブロックの組合せに対処する。図6A~図10は、プログレッシブPフレームの動きベクトル予測のプレディクタパターンを示す。これと同一のパターンが、ミックスドMVインターレースBフィールド内の1MVマクロブロックまたは4MVマクロブロックの動きベクトルの動きベクトル予測に関する候補動きベクトルと見なされるブロックまたはマクロブロックの位置を示す。フレームが1マクロブロック幅である特別な場合について、プレディクタは、必ずプレディクタA上プレディクタである。様々な他のルールが、最上行4MVマクロブロックの最上行ブロック、最上行1MVマクロブロック、およびイントラコーディングされたプレディクタなどの他の特別な場合に対処する。図6A~図10に示されたプレディクタパターンは、順方向動きベクトルバッファ内の位置からの候補を使用する順方向予測に使用され、逆方向動きベクトルバッファ内の位置からの候補を使用する逆方向予測にも使用される。さらに、図6A~図10に示されたプレディクタパターンは、インターレースBフィールドについて上で述べた2つの基準フィールド動きベクトル予測論理と共に使用される。図6Aおよび図6Bに、ミックスドMVインターレースBフィールド内の1MV現在マクロブロック用の候補動きベクトルプレディクタと見なされるブロックの位置を示す。隣接するマクロブロックは、1MVマクロブロックまたは4MVマクロブロックである場合がある。図6Aおよび6Bには、隣接マクロブロックが4MVであるすなわち、プレディクタAが、現在のマクロブロックの上のマクロブロック内のブロック2用の動きベクトルであり、プレディクタCが、現在のマクロブロックのすぐ左のマクロブロック内のブロック1用の動きベクトルであると仮定した場合の候補動きベクトルの位置が示されている。隣接マクロブロックのいずれかが、1MVマクロブロックである場合に、図5Aおよび5Bに示された動きベクトルプレディクタが、このマクロブロック全体の動きベクトルプレディクタに採用される。図6Bに示されているように、このマクロブロックが行の最後のマクロブロックである場合には、プレディクタBが、他の場合の右上マクロブロック内のブロック2からではなく、左上マクロブロックのブロック3からになる。図7A~図10に、ミックスドMVインターレースBフィールドの4MVマクロブロックの4つの輝度ブロック用のそれぞれの候補動きベクトルプレディクタと見なされるブロックの位置を示す。図7Aおよび7Bは、位置0のブロックの候補動きベクトルプレディクタと見なされるブロックの位置を示す図であり、図8Aおよび図8Bは、位置1のブロックの候補動きベクトルプレディクタと見なされるブロックの位置を示す図であり、図9は、位置2のブロックの候補動きベクトルプレディクタと見なされるブロックの位置を示す図であり、図10は、位置3のブロック用の候補動きベクトルプレディクタと見なされるブロックの位置を示す図である。やはり、隣接マクロブロックが1MVマクロブロックである場合に、そのマクロブロック用の動きベクトルプレディクタが、そのマクロブロックの各ブロックに使用される。マクロブロックが行の最初のマクロブロックである場合に、ブロック0のプレディクタBは、その行の残りのブロック0と異なる形で処理される図7Aおよび図7Bを参照されたい。この場合に、プレディクタBは、それ以外の場合の現在のブロックの左上のマクロブロックのブロック3からではなく、現在のマクロブロックの真上のマクロブロックのブロック3からとられる。同様に、マクロブロックが行の最後のマクロブロックである場合に、ブロック1のプレディクタBは、異なる形で処理される図8Aおよび図8Bを参照されたい。この場合に、プレディクタは、他の場合の現在のマクロブロックの右上のマクロブロックのブロック2からではなく、現在のマクロブロックの真上のマクロブロックのブロック2からとられる。一般に、マクロブロックが最初のマクロブロック列にある場合に、ブロック0および2のプレディクタCは、0と等しくなるようにセットされる。やはり、位置A、B、またはCの、イントラコーディングされた隣接マクロブロックは、動きベクトル予測について無視される。4MVマクロブロック用の動きベクトルの再構成例えば、動きベクトル差分情報を加算することによるの後に、再構成された実際の動きベクトルが、再構成された動きベクトルの予測方向に適切な、順方向動きベクトルバッファまたは逆方向動きベクトルバッファに置かれる。欠けている方向の動きベクトルバッファの対応する空のスロットは、同一極性および反対極性の欠けている方向の動きベクトルプレディクタを算出して、異なる極性の動きベクトルプレディクタの間で選択し、その動きベクトルプレディクタを空のスロットに格納することによって、埋められる。図34Aおよび34Bをもう一度参照すると、動きベクトル予測について、エンコーダ/デコーダは、擬似コード3400に示されたスケーリング動作を使用して、別のフィールドの動きベクトルプレディクタからあるフィールドの動きベクトルプレディクタを導出する。値の2つの可能なセットが、現在のフィールドがインターレースビデオフレームの最初のフィールドである場合について図35の表3500に示されており、現在のフィールドがインターレースビデオフレームの2番目のフィールドである場合について図36の表3600に示されている。表3500および3600では、SCALEOPP、SCALESAME1、SCALESAME2、SCALEZONE1_X、SCALEZONE1_Y、ZONE1OFFSET_X、およびZONE1OFFSET_Yの値が、基準フレーム距離に依存する。いくつかの実装で、インターレースBフィールドの順方向基準および逆方向基準の基準フレーム距離は、分数コーディングを使用して算出される。BFRACTION構文要素インターレースBフィールドの直接モードマクロブロックだけではなく、インターレースBフィールドの順方向予測モードマクロブロックおよび逆方向予測モードマクロブロックについてシグナリングされるは、次の擬似コードに示されているように順方向および逆方向の基準ピクチャ距離を導出するのに使用される。ここで、NINTは、最も近い整数演算子である。BFRACTIONの分子numeratorおよび分母denominatorは、BFRACTION構文要素からデコードされる。要素BFRACTIONは、ビットストリーム内で例えば、インターレースBフィールドのフレームレベルで送ることができる異なる分数を表すのに使用することができる。この分数は、0と1の間の離散値の限られたセットになり、Bピクチャの、そのアンカーによって形成されるインターバル内の相対的な時間的位置を示す。インターレースBフィールドを有するフレームの第2フィールドの順方向予測および逆方向予測について、エンコーダ/デコーダは、図34Aおよび図34Bの擬似コード3400に従って、動きベクトルスケーリングを実行する。しかし、いくつかの実装で、第1フィールドの逆方向動きベクトル予測を実行するエンコーダ/デコーダは、図48の擬似コード4800で定義された関数scaleforopposite_x、scaleforopposite_y、scaleforsame_x、およびscaleforsame_yを使用する。一実装での第1インターレースBフィールドのSCALESAME、SCALEOPP1、SCALEOPP2、SCALEZONE1_X、SCALEZONE1_Y、ZONE1OFFSET_X、およびZONE1OFFSET_Yの値が、図49の表4900に示されている。表4900では、変数Nと動きベクトル範囲の間の関係は、上で図35および図36ならびに表1を参照して説明した関係と同一である。代替案では、基準フレーム距離が別の形で算出されるか、スケーリングが異なるアルゴリズムに従って実行される。例えば、スケーリングが、Nの値に関わりなく実行されるすなわち、Nが1であると仮定される。X.インターレースBフィールドに関する自己参照フレームインターレースBフィールドを有するフレームは、2つの別々の多少独立にコーディングされるフィールドとしてエンコードされる。上フィールドは、フレームの偶数ラスタライン走査線0から始まるからなり、下フィールドは、フレームの奇数ラスタラインからなる。フィールドピクチャ内のフィールドは、独立にデコード可能なので、これらを事前にセットされた順序で送る必要はない。例えば、エンコーダは、まず下フィールドを送り、それに上フィールドを続けるか、その逆を行うことができる。いくつかの実装で、2つのフィールドの順序は、topfieldfirst上フィールドが先構文要素によって示され、この構文要素は、フレームの2つのフィールドをデコードする正しい時間的順序に応じて真または偽のいずれかである。従来のエンコーダおよびデコーダは、前後のアンカーフレーム例えば、IフレームまたはPフレームあるいは前後のアンカーフレームのフィールドを基準ピクチャとして使用して、現在のBピクチャの動き補償を実行した。従来のエンコーダおよびデコーダは、Bピクチャまたはその一部をすべてのピクチャの動き補償基準として使用することを禁止してもいた。しかし、本明細書に記載の技法およびツールのいくつかの実装は、これらのルールの1つまたは複数を緩和する。例えば、いくつかの実装で、第1インターレースBフィールドは、前後のアンカーピクチャからの第1フィールドおよび第2フィールドを参照する。第2インターレースBフィールドは、次のアンカーピクチャの第1フィールドおよび第2フィールドのほかに、反対極性フィールドとして現在のピクチャからの第1インターレースBフィールドおよび同一極性フィールドとして前のアンカーフレームの同一極性フィールドを参照する。図50Bは、インターレースビデオフレームB2の2つのインターレースBフィールドのそれぞれの基準フィールドを示す図である。図50Bに示された例では、デコードされる第1のBフィールドここでは上フィールドが、順方向時間的に過去のアンカーP1の2つの基準フィールドと、逆方向時間的に将来のアンカーP3からの2つの基準フィールド、合計4つの基準フィールドを参照することを許可される。B2についてデコードされる第2のインターレースBフィールドは、同一のインターレースビデオフレームからの第1フィールドしたがって、Bピクチャの一部が基準として働くことを許可しないという慣習が破られるおよび前のアンカーP1からの1つの基準フィールドならびに将来のアンカーP3からの両方のフィールドを参照することを許可される。比較のために、図50Aに、インターレースビデオフレームのインターレースPフィールドが従う慣習を示す。これらのインターレースBフィールド参照ルールを実装する技法およびツールは、よりよい圧縮をもたらすことができる。インターレースビデオのフィールドコーディングは、激しい動き、すなわち、上フィールドと下フィールドの間にかなりの動きがある場合のエンコーディングに最も効率的である。例えば、このシナリオでは、あるフレームの上先にコーディングされるフィールドは、同一フレームの下フィールドのピクセルに対して、より大きい時間的距離にある前のフレームからとられる上フィールドよりはるかによいプレディクタになる。これらの時間的に遠いプレディクタは、このより大きい時間的距離のゆえに、動きが激しいときにはるかに弱い予測を提供する。さらに、オクルージョンの確率は、時間的に離れたプレディクタの場合に大きくなり、これが、コーディングに負荷がかかる、より多くのイントラコーディングされたマクロブロックをもたらす。具体的に言うと、実験から、あるフレームの第2の時間的にインターレースされたBフィールドが同一フレームの第1の時間的にインターレースされたBフィールドを参照することを許可することによって、大きな圧縮利益を得ることができることが検証された。XI.インターレースBフィールドでの順方向モードのビットプレーンコーディング上のセクションXで述べたように、いくつかの実装で、現在のフレームの第2のコーディングされるインターレースBフィールドが、現在のフレームの現在のフレームの第1のコーディングされるインターレースBフィールドを参照することができる。この自己参照技法は、激しい動きを有するフレームのインターレースBフィールドに効果的である。というのは、現在のフレームの時間的により近いBフィールドが、しばしば、時間的により遠いアンカーフィールドよりよいプレディクタであるからである。インターレースBフィールドを有するフレームが、激しい動きを有し、第2の時間的にインターレースされたBフィールドが、予測基準として第1の時間的にインターレースされたBフィールドを選択する場合に、この第2インターレースBフィールドのマクロブロックに関するより効率的な予測モードは、しばしば、順方向になる。インターレースBフィールドの順方向モード予測は、ビットレートを減らすのに効果的なツールなので、特に低ビットレートの状況で、シグナリングオーバーヘッドを減らして、順方向モード予測をシグナリングすることの総合コストを減らすことに有利に働く。したがって、いくつかの実施形態で、エンコーダは、統一されたビットプレーンコーディング技法を使用して順方向モード予測情報をエンコードする。例えば、エンコーダは、圧縮されたビットプレーンで順方向モード予測情報をエンコードし、ここで、このビットプレーンの各ビットは、1つのマクロブロックに関連つけられ、各ビットの値は、そのマクロブロックが順方向モードまたは非順方向予測モードのどちらでコーディングされているかをシグナリングする。圧縮ビットプレーンは、フレームレベルで、フィールドレベルで、または他のレベルで送ることができる。ビットプレーンコーディング技法は、インターレースBフィールドの他の予測モードと比較して、順方向モードバイアスを活用する。例えば、インターレースBフィールドのマクロブロックのほとんどが順方向予測を使用する場合に、エンコーダは、順方向/非順方向決定をビットプレーンコーディングすることによって、マクロブロック当たり1ビット未満にシグナリングオーバーヘッドを減らすことができる。図51に、1つまたは複数のビットプレーンコーディングモードを有するビデオエンコーダでインターレースBフィールドのマクロブロックの順方向/非順方向予測モード決定情報をエンコードする技法5100を示す。図52に、1つまたは複数のビットプレーンコーディングモードを有するビデオエンコーダによってエンコードされた順方向/非順方向予測モード決定情報をデコードする対応する技法5200を示す。図51を参照すると、エンコーダは、順方向/非順方向予測モード決定情報をコーディングするビットプレーンコーディングモードを選択する5110。コーディングモードを選択した後に、エンコーダは、選択されたモードの順方向/非順方向予測モード決定情報をエンコードする5120。エンコーダは、フィールド単位でビットプレーンコーディングモードを選択する。代替案では、エンコーダは、ある他の単位例えば、シーケンスレベルでビットプレーンコーディングモードを選択する。あるいは、1つのビットプレーンコーディングモードだけが使用される場合には、ビットプレーンコーディングモードの選択は実行されない。エンコーダが、順方向/非順方向予測モード決定情報のエンコードを終了したときに5130、順方向/非順方向予測モード決定情報のエンコーディングが終了する。図52を参照すると、デコーダは、順方向/非順方向予測モード決定情報をエンコードするのにエンコーダによって使用されたエンコーダによってシグナリングされたビットプレーンコーディングモードを決定する5210。次に、デコーダは、選択されたモードで順方向/非順方向予測モード決定情報をデコードする5220。デコーダは、フィールド単位でビットプレーンコーディングモードを選択する。代替案では、デコーダは、ある他の単位例えば、シーケンスレベルでビットプレーンコーディングモードを選択する。あるいは、1つのビットプレーンコーディングモードだけが使用可能である場合には、ビットプレーンコーディングモードの選択は実行されない。デコーダが、順方向/非順方向予測モード決定情報のデコーディングを終了したときに5230、順方向/非順方向予測モード決定情報のデコーディングが終了する。いくつかの組み合わされた実装形態による様々なビットプレーンコーディングモードのシグナリングおよびデコーディングに関するさらなる詳細については、下のセクションXIVを参照されたい。ビットプレーンコーディング全般に関するさらなる情報については、特許文献4を参照されたい。代替案では、順方向/非順方向モード情報を表すビットを、未圧縮でおよび/または他のレベル例えば、マクロブロックレベルで送ることができる。非順方向予測が示されている場合に、エンコーダは、そのマクロブロックに非順方向予測モード例えば、逆方向モード、直接モード、補間モード、またはイントラモードを指定する。いくつかの実施形態で、エンコーダは、下の表2に示されたVLCテーブルを参照して、マクロブロックレベルで非順方向予測モードをコーディングする。表2に示された例では、逆方向モードが、好ましい非順方向予測モードである。エンコーダは、1ビット信号を用いて逆方向モードを表し、2ビット信号を用いて直接モードおよび補間モードを表す。代替案では、エンコーダは、異なるコードを使用して、異なる予測モードを表し、かつ/または異なる非順方向予測モードを選択する。いくつかの実施形態で、イントラモードは、特別な差分動きベクトル値によってシグナリングされ、この値は、コーディングされているその形によって、その予測モードがイントラモードであることを示す。したがって、この差分動きベクトル値は、マクロブロックがイントラコーディングされていることを推論するのに使用されるが、習慣として、エンコーダは、未定義の予測タイプを有しないように、予測タイプを逆方向にセットする。XII.インターレースBフィールドの直接モードに関する同一位置の動きベクトルの選択いくつかの実装で、フィールドコーディングされたBピクチャ内のマクロブロックの直接モード動きベクトルは、特別な論理を使用して選択される。インターレースBフィールド内の現在のマクロブロックについて、次のアンカーピクチャの対応するフィールドの同一位置のマクロブロックが、4つの動きベクトルを使用してコーディングされている場合に、この論理は、同一位置のマクロブロックの4つまでの動きベクトルの間で、より優勢な極性例えば、同一のまたは反対のを選択する。現在のマクロブロックに使用する動きベクトルを選択すると、エンコーダ/デコーダは、スケーリング動作を実行して、直接モード動きベクトルを与えることができる。いくつかの実装で、インターレースBフィールドの直接モード1MVマクロブロックについて、エンコーダ/デコーダは、同一極性を有する基準フィールド例えば、時間的に次のPフィールド内の同一位置のマクロブロックの1つまたは複数の動きベクトルに基づいて、直接モードスケーリングに使用される動きベクトルを算出する。基準フィールド内の同一位置のそのマクロブロックが1MVマクロブロックである場合に、エンコーダ/デコーダは、単一の動きベクトルを使用して、インターレースBフィールド内のマクロブロック用の直接モード動きベクトルを導出する。その一方で、基準フィールド内の同一位置のそのマクロブロックが4MVマクロブロックである場合に、エンコーダ/デコーダは、その4つの動きベクトルの極性を検討し、インターレースBフィールド内のマクロブロックの直接モード動きベクトルを導出するのに使用される動きベクトルを選択する際に、優勢な極性の方を選択する。エンコーダ/デコーダは、インターレースBフィールドのデコード中に必要になったときに、基準フィールド内の4MVマクロブロックにこの選択論理を適用することができる。あるいは、エンコーダ/デコーダは、基準フィールドのデコードの後にこの選択論理を適用し、その後、後のインターレースBフィールドデコーディングに使用される値だけをバッファリングすることができる。例えば、基準フィールド内の同一位置の4MVマクロブロックについて、同一極性のフィールドからの4つのうちの動きベクトルの個数が、反対極性のフィールドからの個数に優る場合に、エンコーダ/デコーダは、同一極性の動きベクトルの個数がそれぞれ4、3、2、または1の場合に、同一極性の動きベクトルのmedian-of-4、median-of-3、2の算術平均、またはその値を使用して、直接モードインターレースBフィールドデコードに使用される動きベクトルを算出する。そうではなく、反対極性のフィールドからの動きベクトルが、同一極性フィールドからの動きベクトルに数で優る場合には、エンコーダ/デコーダは、類似する動作を使用して、直接モードインターレースBフィールドデコードに使用される反対極性フィールドの動きベクトルから代表的動きベクトルを得ることができる。同一位置のマクロブロックの4つの動きベクトルのオリジナルセットのうちの3つ以上極性にかかわりなくがイントラである場合に、エンコーダ/デコーダは、単純に、同一位置の代表的動きベクトルをイントラすなわち、0,0として扱うことができる。しかし、いくつかの実装で、インターレースBフィールドのすべてのイントラMBが、1MVとしてコーディングされ、したがって、オリジナルの4つの動きベクトルのうちの3つ以上がイントラであることが、同一位置の代表的動きベクトルがイントラとして扱われることになるというケースは、実際には絶対に生じない。図53の擬似コード5300に、インターレースBフィールド内の直接モード動きベクトルに対して、基礎として使用される動きベクトルの選択プロセスを示す。いくつかの実装で、この選択プロセスは、順方向および逆方向を指す直接モード動きベクトルを作るスケーリング動作への先駆けprecursorである。XIII.インターレースビデオフレーム内のイントラコーディングされたBフィールドインターレースBIフィールドまたはイントラBフィールドは、その基準ピクチャと独立にコーディングされたフィールドである。インターレースBIフィールドは、他のピクチャを予測するためのアンカーとして使用できないという意味で、他のイントラフィールド例えば、インターレースIフィールドと異なる。インターレースBIフィールドにはピクチャ間依存性がなく、ビットストリーム内でのその存在は、独立にデコード可能なセグメントまたはGOPgroupofpicturesの先頭を表さない。しかし、インターレースビデオフレームの第1フィールドは、BIフィールドとしてコーディングされた場合に、インターレースBフィールドとしてコーディングできる、そのフレームの第2フィールドを予測するのに使用することができる。この革新は、フレーム全体をイントラフレームとしてエンコードするのでも両方のフィールドをイントラフィールドとしてエンコードするのでもなく、多くの場合にフレームの半分最初にコーディングされるフィールドだけにイントラコーディングを使用することによって、総合的な圧縮も改善する。いくつかの実装で、1つのフレームに、2つのBフィールド、2つのBIフィールド、または1つのBフィールドと1つのBIフィールドを含めることができる。インターレースIフィールドではなくインターレースBIフィールドを使用する理由がある。1つは、時間的スケーラビリティを犠牲にすることを回避することである。例えば、デコーダが、デジタルビデオをレンダリングしており、処理需要についてゆくためにあるピクチャを即座に捨てることを必要とするときに、そのデコーダは、潜在的に捨てることができるフィールドのシーケンスを探すことができる。シーケンス内のイントラフィールドが、キーフィールドであることがわかった場合に、そのデコーダは、他のフィールドの基準として使用するためにそれらをデコードすることを強制され、それらを捨てることはできない。しかし、シーケンス内のイントラフィールドが、BIフィールドとしてコーディングされている場合には、デコーダは、後続の動き補償を妥協せずにそれらを捨てるという選択肢を有する。インターレースBIフィールドは、BIフィールド内の動き補償関連要素またはその不在をシグナリングする要素を避けることができるので、インターレースBIフィールドがイントラコーディングおよびイントラデコーディングに使用される構文要素をより効率的にシグナリングするという意味で、イントラマクロブロックを用いるインターレースBフィールドと異なる。言い換えると、インターレースBIフィールド通常のBフィールドではなくを使用する理由は、ビデオシーケンス内のフィールド間予測が失敗する例えば、シーン変化または複雑な動きに起因して時点でインターレースBフィールドをコーディングするときに生じる。しばしば、そのようなフィールドのほとんどのマクロブロックが、イントラマクロブロックとしてコーディングされることを必要とする。このシナリオでは、しばしば、ビットレートに関して、Bフィールド全体をBIフィールドとしてコーディングすることが、フィールド内のマクロブロックごとに予測モード情報を送ることより安価である。インターレースBフィールドについてよい予測または動き補償が可能でないときには、これをBIフィールドとしてコーディングすることができる。いくつかの実装で、エンコーダは、ピクチャタイプの可能な値の1つとして、ビットストリーム内でBIフィールドの生起occurrenceをシグナリングすることができる。代替案では、BIフィールドの存在を、他の形で示すことができる。XIV.組み合わされた実装形態ビットストリーム構文、セマンティクス、およびデコーダに関する詳細な組み合わされた実装形態を、主な組み合わされた実装形態からの些細な相違を有する代替の組み合わされた実装形態と併せて、これから説明する。A.ビットストリーム構文様々な組み合わされた実装形態で、インターレースBピクチャのデータが、複数のレイヤ例えば、シーケンスレイヤ、フレームレイヤ、フィールドレイヤ、マクロブロックレイヤ、ブロックレイヤ、および/またはサブブロックレイヤを有するビットストリームの形で提示される。インターレースBフィールドおよび/またはBIフィールドを有するインターレースビデオフレームについて、フレームレベルビットストリーム要素を図54に示す。各フレームのデータは、フレームヘッダと、それに続くフィールドレイヤのデータフィールドごとに繰り返されるFieldPicLayerとして図示からなる。インターレースBフィールドおよびインターレースBIフィールド用のフィールドヘッダを構成するビットストリーム要素を、それぞれ図55および図56に示す。インターレースBフィールドおよびインターレースBIフィールドのマクロブロックレイヤイントラマクロブロック、1MVマクロブロック、または4MVマクロブロックのいずれかを構成するビットストリーム要素を、それぞれ図57および図58に示す。インターレースBフレームについて、フレームレベルビットストリーム要素を図59に示す。各フレームのデータは、フレームヘッダとそれに続くマクロブロックレイヤのデータからなる。インターレースBフレームのマクロブロックレイヤイントラタイプまたは様々なインタタイプのマクロブロックのいずれかを構成するビットストリーム要素を図60に示す。次のセクションで、双方向予測されるインターレースピクチャに関するシグナリングに関するフレームレイヤ、フィールドレイヤ、およびマクロブロックレイヤ内の選択されたビットストリーム要素を説明する。選択されたビットストリーム要素を、特定のレイヤの文脈で説明するが、一部のビットストリーム要素は、複数のレイヤで使用することができる。1.選択されたフレームレイヤ要素図54は、インターレースBフィールドおよび/またはインターレースBIフィールドまたは、潜在的に他の種類のインターレースフィールドを収容するフレームのフレームレベルビットストリーム構文を示す図である。図59は、インターレースBフレームのフレームレベルビットストリーム構文を示す図である。特定のビットストリーム要素を下で説明する。フレームコーディングモードFCM可変サイズFCMは、ピクチャコーディングタイプを示すのに使用される可変長コードワード[VLC]である。FCMは、下の表3に示されたフレームコーディングモードの値をとる。フィールドピクチャタイプFPTYPE3ビットFPTYPEは、インターレースPフィールド、インターレースIフィールド、インターレースBフィールド、および/またはインターレースBIフィールドを含むフレームのフレームヘッダ内に存在する3ビットの構文要素である。FPTYPEは、下の表4による、インターレースビデオフレームのフィールドタイプの異なる組合せの値をとる。基準距離REFDIST可変サイズREFDISTは、可変サイズの構文要素である。この要素は、現在のフレームと基準フレームの間のフレーム数を示す。表5に、REFDIST値をエンコードするのに使用されるVLCを示す。表5の最後の行に、2を超える基準フレーム距離を表すのに使用されるコードワードが示されている。これらは、2進11とそれに続くN-3個の1としてコーディングされ、ここで、Nは、基準フレーム距離である。このコードワードの最後のビットは、0である。例を示す。N=3、VLCコードワード=110、VLCサイズ=3N=4、VLCコードワード=1110、VLCサイズ=4N=5、VLCコードワード=11110、VLCサイズ=5ピクチャタイプPTYPE可変サイズPTYPEは、インターレースBフレームまたは、インターレースIフレームもしくはインターレースPフレームなどの他の種類のインターレースフレームのフレームヘッダ内に存在する可変サイズの構文要素である。PTYPEは、下の表6による異なるフレームタイプの値をとる。PTYPEが、フレームがスキップドであることを示す場合に、そのフレームは、その基準フレームと同一であるPフレームとして扱われる。スキップドフレームの再構成は、概念的に、基準フレームをコピーすることと同等である。スキップドフレームは、このフレームについてそれ以上のデータが送られないことを意味する。Bフレーム直接モードMBビット構文要素DIRECTMB可変サイズDIRECTMB構文要素は、直接モードでコーディングされたBピクチャここでは、インターレースBフレーム内のマクロブロックを示すのにビットプレーンコーディングを使用する。DIRECTMB構文要素は、直接モードがrawモードでシグナリングされることもシグナリングすることができ、その場合に、直接モードは、インターレースBフレームのマクロブロックに対してマクロブロックレベルでシグナリングされる。拡張MV範囲フラグMVRANGE可変サイズMVRANGEは、シーケンスレイヤEXTENDED_MVビットに1がセットされている場合に存在する可変サイズの構文要素である。MVRANGEVLCは、動きベクトル範囲を表す。拡張差分MV範囲フラグDMVRANGE可変サイズDMVRANGEは、シーケンスレベル構文要素EXTENDED_DMV=1の場合を提示する可変サイズの構文要素である。DMVRANGEVLCは、動きベクトル差分範囲を表す。マクロブロックモードテーブルMBMODETAB2ビットまたは3ビットMBMODETAB構文要素は、固定長フィールドである。インターレースPフィールドについて、MBMODETABは、マクロブロックレイヤ内のマクロブロックモード構文要素MBMODEをデコードするのに8つのハフマンテーブルのうちのどれが使用されるかを示す3ビット値である。動きベクトルテーブルMVTAB2ビットまたは3ビットMVTAB構文要素は、2ビットまたは3ビットの値である。NUMREF=1のインターレースPフィールドについて、MVTABは、動きベクトルデータをデコードするのに8つのインターレースハフマンテーブルのどれが使用されるかを示す3ビットの構文要素である。2MVブロックパターンテーブル2MVBPTAB2ビット2MVBPTAB構文要素は、2MVフィールドマクロブロック内の2MVブロックパターン2MVBP構文要素をデコードするのに4つのハフマンテーブルのどれが使用されるかをシグナリングする2ビット値である。4MVブロックパターンテーブル4MVBPTAB2ビット4MVBPTAB構文要素は、4MVマクロブロック内の4MVブロックパターン4MVBP構文要素をデコードするのに4つのハフマンテーブルのどれが使用されるかをシグナリングする2ビット値である。代替の組み合わされた実装形態では、ピクチャタイプ情報が、インターレースBフィールドを含むインターレースビデオフレームのフレームレベルではなく、インターレースBフィールドのフィールドレベルの始めにシグナリングされ、基準距離が省略される。2.選択されたフィールドレイヤ要素図55は、組み合わされた実装形態でのインターレースBフィールドのフィールドレベルビットストリーム構文を示す図である。特定のビットストリーム要素を、下で説明する。動きベクトルモードMVMODE可変サイズまたは1ビットMVMODE構文要素は、4つの動きベクトルコーディングモードのうちの1つまたはいくつかのタイプのピクチャに関して可能性は殆どない1つの強度補償モードintensitycompensationmodeをシグナリングする。複数の後続要素が、追加の動きベクトルモード情報および/または強度補償情報を供給する。Bフィールド順方向モードMBビット構文要素FORWARDMB可変サイズFORWARDMB構文要素は、ビットストリームコーディングを使用して、順方向モードでコーディングされたBフィールド内のマクロブロックを示す。FORWARDMB構文要素は、順方向モードがrawモードでシグナリングされることをシグナリングすることもでき、その場合に、順方向/非順方向モード決定が、マクロブロックレベルでシグナリングされる。図56は、組み合わされた実装形態でのインターレースBIフィールドのフィールドレベルビットストリーム構文を示す図である。組み合わされた実装形態では、インターレースBIフィールドのフィールドレベルビットストリーム構文が、インターレースIフィールドと同一の構文要素を使用する。3.選択されたマクロブロックレイヤ要素図57は、組み合わされた実装形態でのインターレースBフィールドのマクロブロックのマクロブロックレベルビットストリーム構文を示す図である。図60は、組み合わされた実装形態でのインターレースBフレームのマクロブロックのマクロブロックレベルビットストリーム構文を示す図である。特定のビットストリーム要素を、下で説明する。マクロブロックのデータは、マクロブロックヘッダとそれに続くブロックレイヤデータからなる。マクロブロックモードMBMODE可変サイズMBMODE構文要素は、マクロブロックタイプ例えば、インターレースBフィールドでは1MV、4MV、またはイントラを示し、CBPフラグおよび動きベクトルデータの存在も示す。順方向BフィールドコーディングモードFORWARDBIT1ビットFORWARDBITは、rawモードが使用されていることをフィールドレベル構文要素FORWARDMBが示す場合に、インターレースBフィールドに存在する1ビットの構文要素である。FORWARDBIT=1の場合には、そのマクロブロックは、順方向モードを使用してコーディングされている。Bマクロブロック動き予測タイプBMVTYPE可変サイズBMVTYPEは、マクロブロックが順方向予測、逆方向予測、または補間予測のどれを使用するかを示す、インターレースBフレームマクロブロックおよびインターレースBフィールドマクロブロックに存在する可変サイズの構文要素である。表7に示されているように、インターレースBフレームのマクロブロックについて、BFRACTIONの値が、BMVTYPEと共に、どのタイプが使用されるかを決定する。インターレースBフィールドでは、マクロブロックモードがFORWARDMB構文要素またはFORWARDBIT構文要素によって示される順方向でなく、4MVが使用されていない場合に、BMVTYPEが送られる。この場合に、BMVTYPEは、Bマクロブロックが、逆方向、直接、または補間であるかどうかをシグナリングするのに使用される。これは、単純なVLCであり、逆方向=0、直接=10、補間=11である。マクロブロックが順方向でなく、4MVが使用されている場合に、BMVTYPEは逆方向である。というのは、4MVでは、順方向モードおよび逆方向モードだけが許容されるからである。補間されたMVが存在INTERPMVP1ビットINTERPMVPは、マクロブロックタイプが補間であることをフィールドレベル構文要素BMVTYPEが示す場合にBフィールドマクロブロックに存在する1ビットの構文要素である。INTERPMVP=1の場合には、補間されたMVが存在し、そうでない場合には存在しない。Bマクロブロック動きベクトル1BMV1可変サイズBMV1は、そのマクロブロックの第1動きベクトルを差分式にエンコードする可変サイズの構文要素である。Bマクロブロック動きベクトル2BMV2可変サイズBMV2は、補間モードが使用される場合にインターレースBフレームマクロブロックおよびインターレースBフィールドマクロブロックに存在する可変サイズの構文要素である。この構文要素は、そのマクロブロックの第2動きベクトルを差分式にエンコードする。4MVブロックパターン4MVBP4ビット4MVBP構文要素は、4つの輝度ブロックのうちのどれが非0動きベクトル差分を収容しているかを示し、その使用は、下で詳細に説明する。ブロックレベル動きベクトルデータBLKMVDATA可変サイズBLKMVDATAは、ブロック用の動き情報を含む可変サイズの構文要素であり、4MVマクロブロックに存在する。フィールド変換フラグFIELDTX1ビットFIELDTXは、インターレースBフレームのイントラコーディングされたマクロブロックに存在する1ビットの構文要素である。この構文要素は、マクロブロックがフレームコーディングされているかフィールドコーディングされているか基本的に、マクロブロックの内部編成を示す。FIELDTX=1は、マクロブロックがフィールドコーディングされていることを示す。そうでない場合には、マクロブロックはフレームコーディングされている。インターコーディングされたマクロブロックでは、この構文要素をMBMODEから推論することができる。直接BフレームコーディングモードDIRECTBBIT1ビットDIRECTBBITは、rawモードが使用されていることをフレームレベル構文要素DIRECTMBが示す場合にインターレースBフレームマクロブロックに存在する1ビットの構文要素である。DIRECTBBIT=1の場合に、そのマクロブロックは、直接モードを使用してコーディングされている。BフレームMV切替MVSW1ビットMVSWは、MBがフィールドモードであり、BMVTYPEが順方向または逆方向である場合にインターレースBフレームマクロブロックに存在する1ビットの構文要素である。MVSW=1の場合に、MVタイプおよび予測タイプが、上フィールドから下フィールドに進む際に順方向から逆方向にまたは逆方向から順方向に変化する。2つの動きベクトルブロックパターン2MVBP可変サイズ2MVBPは、インターレースBフレームマクロブロックに存在する可変サイズの構文要素である。この構文要素は、マクロブロックが1つの動きベクトルを収容することをMBMODE構文要素が示し、そのマクロブロックが補間マクロブロックである場合に存在する。この場合に、2MVBPは、2つの動きベクトル順方向動きベクトルおよび逆方向動きベクトルのうちのどちらが存在するかを示す。動きベクトルデータMVDATA可変サイズMVDATAは、マクロブロック用の動きベクトルの差分をエンコードする可変サイズの構文要素であるが、そのデコーディングは、下で詳細に説明する。図58は、組み合わされた実装形態でのインターレースBIフィールドのマクロブロックレベルビットストリーム構文を示す図である。この組み合わされた実装形態では、インターレースBIフィールドのマクロブロックレベルビットストリーム構文が、インターレースIフィールドと同一の構文要素を使用する。B.インターレースBフィールドのデコード次のセクションでは、組み合わされた実装形態でインターレースBフィールドをデコードするプロセスを説明する。1.フレーム/フィールドレイヤデコーディングインターレースBフィールドは、2つのタイプ、すなわち1MVまたはミックスドMVのうちの1つとすることができる。1MVインターレースBフィールドでは、マクロブロックの予測タイプBMVTYPEに応じて、0個、1個、または2個のいずれかの動きベクトルが、予測されるブロックの変位を表すのに使用される。BMVTYPEがDIRECTと等しいときには、順方向動きベクトルおよび逆方向動きベクトルは、推論され、それ以上の動きベクトルは、明示的にシグナリングされない。BMVTYPEがINTERPOLATEDであるときには、2つの動きベクトルすなわち順方向動きベクトルおよび逆方向動きベクトルがデコードされる。順方向の場合および逆方向の場合には、1つの動きベクトルだけがデコードされる。1MVモードは、MVMODEピクチャレイヤ構文要素によってシグナリングされる。ミックスドMVインターレースBフィールドでは、各マクロブロックを、1MVマクロブロックまたは4MVマクロブロックとしてエンコードすることができる。4MVマクロブロックでは、4つの輝度ブロックのそれぞれが、1つの動きベクトルを関連付けられる。さらに、4MVマクロブロックは、インターレースBフィールド内で順方向予測タイプまたは逆方向予測タイプBMVTYPEだけに関連付けることができる。各マクロブロックの1MVモードまたは4MVモードは、すべてのマクロブロックのMBMODE構文要素によって示される。ミックスドMVモードは、MVMODEピクチャレイヤ構文要素によってシグナリングされる。2.マクロブロックレイヤデコーディングインターレースBフィールド内のマクロブロックは、3つの可能なタイプすなわち、1MV、4MV、およびイントラのうちの1つとすることができる。さらに、マクロブロックは、4つの予測タイプBMVTYPEすなわち、順方向、逆方向、直接、または補間のうちの1つとすることができる。マクロブロックタイプは、マクロブロックレイヤ内のMBMODE構文要素によってシグナリングされる。予測のタイプは、各マクロブロックの順方向/非順方向をシグナリングするフレームレベルピットプレーンFORWARDMBと、予測タイプが非順方向の場合のマクロブロックレベルBMVTYPE構文要素の組合せによってシグナリングされる。次のセクションで、1MVタイプおよび4MVと、これらをどのようにシグナリングするかを説明する。インターレースBフィールド内の1MVマクロブロック1MVマクロブロックは、1MVインターレースBフィールドおよびミックスドMVインターレースBフィールドに生起することができる。1MVマクロブロック内では、単一の動きベクトルが、そのマクロブロック内の6つすべてのブロックの現在のピクチャと基準ピクチャの間の変位を表す。1MVマクロブロックについて、マクロブロックレイヤのMBMODE構文要素が、次の3つを示す。1マクロブロックタイプが1MVであること2CBPCY構文要素が存在するかどうか3BMV1構文要素が存在するかどうかBMV1構文要素が存在することをMBMODE構文要素が示す場合に、そのBMV1構文要素は、マクロブロックレイヤ内の対応する位置に存在する。そのBMV1構文要素は、動きベクトル差分をエンコードしたものである。この動きベクトル差分を動きベクトルプレディクタと組み合わせて、動きベクトルを再構成する。BMV1構文要素が存在しないことをMBMODE構文要素が示す場合に、動きベクトル差分が0であると仮定され、したがって、動きベクトルは、動きベクトルプレディクタと等しい。CBPCY構文要素が存在することをMBMODE構文要素が示す場合に、そのCBPCY構文要素は、マクロブロックレイヤ内の対応する位置に存在する。CBPCYは、6つのブロックのうちのどれがブロックレイヤでコーディングされているかを示す。CBPCY構文要素が存在しないことをMBMODE構文要素が示す場合に、CBPCYが0と等しいと仮定され、マクロブロック内の6つのどのブロックについてもブロックデータは存在しない。さらに、マクロブロックタイプが1MVであり、マクロブロックの予測タイプが補間である場合に、エンコーダは、INTERPMVP構文要素を使用して、第2動きベクトル差分BMV2が存在するか否かをシグナリングする。存在する場合には、デコーダは、BMV1に続いて直ちにBMV2をデコードする。そうでない場合には、BMV2の動きベクトル差分が0と仮定され、したがって、第2動きベクトルは、動きベクトルプレディクタと等しい。予測タイプが補間であるときには、BMV1が順方向動きベクトルに対応し、BMV2が逆方向動きベクトルに対応する。インターレースBフィールド内の4MVマクロブロック4MVマクロブロックは、ミックスドMVBフィールドピクチャに生起することができるだけであり、順方向予測タイプおよび逆方向予測タイプに制限される。4MVマクロブロックでは、4つの輝度ブロックのそれぞれが、関連する動きベクトルを有する。クロマブロックの変位は、この4つの輝度動きベクトルから導出される。ミックスドMVインターレースBフィールドでは、4MVマクロブロックを、順方向予測タイプおよび逆方向予測タイプだけに関連付けることができる。4MVマクロブロックについて、マクロブロックレイヤのMBMODE構文要素は、次の3つを示す。1そのマクロブロックが4MVであること2CBPCY構文要素が存在するかどうか34MVBP構文要素が存在するかどうか4MVBP構文要素は、4つの輝度ブロックのうちのどれが非0動きベクトル差分を収容するかを示す。4MVBP構文要素は、0と15の間の値にデコードされる。4MVBPの4つのビット位置のそれぞれについて、0の値は、動きベクトル差分BLKMVDATAがそのブロックについて存在しないことを示し、動きベクトル差分は、0と仮定される。1の値は、そのブロック用の動きベクトル差分BLKMVDATAが、対応する位置に存在することを示す。例えば、4MVBPが、11002進の値にデコードされる場合に、そのビットストリームは、ブロック0および1にはBLKMVDATAを収容し、ブロック2および3にはBLKMVDATAが存在しない。4MVBP構文要素が存在しないことをMBMODE構文要素が示す場合には、4つの輝度ブロックのすべてについて動きベクトル差分データBLKMVDATAが存在すると仮定される。MVMODE構文要素がミックスドMVまたはすべて1MVのどちらを示すかに応じて、MBMODEは、次のように情報をシグナリングする。下の表8に、すべて1MVのピクチャ内のマクロブロックに関してMBMODE要素が情報をどのようにシグナリングするかを示す。下の表9に、ミックスドMVピクチャ内のマクロブロックに関してMBMODE要素が情報をどのようにシグナリングするかを示す。8つのコーディングテーブルのうちの1つが、MBMODEをシグナリングするのに使用される。使用される特定のテーブルは、MBMODETAB構文要素を介してシグナリングされる。次のセクションでは、予測タイプデコーディングおよび直接モード動きベクトルのデコーディングを説明する。インターレースBフィールドでの予測タイプデコーディングBMVTYPE予測タイプは、次のルールに従ってデコードされる。マクロブロックが順方向タイプであることをピクチャレベルビットプレーンFORWARDMBが示す場合には、そのマクロブロックの予測タイプに順方向をセットする。FORWARDMB要素がrawとしてコーディングされている場合には、エンコーダ/デコーダは、マクロブロックレベルの追加ビットFORWARDBITを使用して、予測タイプが順方向であるか否かを判断する。予測タイプが非順方向であり、MBMODE構文要素によるシグナリングミックスドMVBピクチャでのみ可能によってマクロブロックが4MVを使用している場合に、4MVモードには順方向タイプおよび逆方向タイプだけを関連付けることができるので、デコーダは、予測タイプが逆方向であると直接に推論することができる。そうでない場合には、デコーダは、BMVTYPE構文要素を明示的にデコードする。インターレースBフィールド内の直接モード動きベクトルのデコーディングインターレースBフィールドの直接モード動きベクトルをデコードするために、デコーダは、まず、前にデコードされたすなわち、時間的に将来のアンカーIまたはPピクチャからの動きベクトルをバッファリングする。これらのうちで、デコーダは、上Bフィールドの直接モード動きベクトルを算出するためのプレディクタとして上フィールドに対応するバッファリングされた動きベクトルを使用し、下Bフィールドの動きベクトルを算出するために下フィールドに対応するバッファリングされた動きベクトルを使用する。例えば、フィールドzz=上/下内のマクロブロックx,yは、前にデコードされたIフィールドまたはPフィールドzのマクロブロックx,yすなわち、現在のフィールドと同一極性のアンカーフィールド内の同一位置のマクロブロックからバッファリングされた動きベクトルを参照する。アンカーピクチャからバッファリングされた動きベクトルがイントラである前にデコードされたフィールドzがIフィールドである場合など場合、またはアンカーピクチャがPフィールドであるがマクロブロックx,yがイントラコーディングされている場合に、デコーダは、バッファリングされた動きベクトルを0,0として扱う。同一位置のマクロブロックが1MVである場合に、デコーダは、その動きベクトルを使用する。同一位置のマクロブロックが4MVである場合に、デコーダは、図53の擬似コード5300に記載の論理を使用して、動きベクトルプレディクタを算出する。擬似コード5300では、SelectDirectModeMVFromColocatedMBが、直接モード算出に使用される動きベクトルプレディクタを導出する。デコーダは、前にデコードされたアンカーピクチャからのすべての動きベクトルをバッファリングし、その後、Bフィールドのデコード中に上の直接モードルールを適用することができ、あるいは、デコーダは、アンカーフィールドをデコードしている間に上の直接モードルールを適用し、その結果もたらされるBフィールド用の動きベクトルをバッファリングすることができる。上で得られた動きベクトルを用いて、デコーダは、スケーリング論理図19のScale_Direct_MVを適用する。Scale_Direct_MVは、順方向および逆方向を指す動きベクトルを得る。Scale_Direct_MVは、上フィールドと下フィールドの両方を指す順方向動きベクトルおよび逆方向動きベクトルをもたらすことができる。これは、直接動きベクトルが、エンコーダによって評価され、よい予測を与えるときに限って選択されるという理由で、また、インターレースBフィールドが、順方向と逆方向の両方で2つの基準を使用するという理由で、有効である。代替の実装で、直接モードで動きベクトルを生成してスケーリングする任意の他のプロセスを使用することができ、これには、バッファリングをまったく用いない例えば、乱数ジェネレータを使用して0バイアスラプラス分布をシミュレートするプロセスが含まれ、このプロセスは、メモリ制約のあるデバイスに有用である可能性がある。そのようなプロセスは、よいエンコーダが、直接モード動きベクトルの悪い推測を破棄し、より正確な推測をビットストリーム内に残すという理由で、まだ役に立つ。3.動きベクトルデコーディングプロセス次のセクションでは、組み合わされた実装形態での、インターレースBフィールドのブロックおよびマクロブロックに関する動きベクトルデコーディングプロセスを説明する。順方向予測コンテクストおよび逆方向予測コンテクストの取り込み順方向動きベクトルおよび順方向動きベクトルは、別々にバッファリングされ、それぞれ順方向動きベクトルおよび逆方向動きベクトルの予測に使用される。順方向コンテクストおよび逆方向コンテクストに関する別々のバッファの使用は、例えば上のセクションXに記載されている。動きベクトルプレディクタの選択の技法は、背景のセクションIII、詳細な説明のセクションIII、および本明細書の他の部分に記載されている。順方向動きベクトルがデコードされる際に予測される動きベクトルを逆方向バッファ欠けている方向のバッファに埋めるまたは、逆方向動きベクトルがデコードされる際に順方向バッファを埋めるときに、追加すべき2つの追加の詳細がある。通常、エンコーダ/デコーダは、予測を形成するために、動きベクトルタイプ情報例えば、1MVなどならびに前にデコードされた動きベクトルの極性の両方を使用することができる。しかし、穴埋めの場合に、エンコーダ/デコーダは、欠けている方向タイプの動きベクトルを実際にはデコードしなかったので、動きベクトルタイプ情報または極性情報例えば、同一極性または反対極性を有しない。この組み合わされた実装形態では、エンコーダ/デコーダは、動きベクトルタイプに1MVをセットし、プレディクタとして優勢フィールド動きベクトルを選択する。図47の擬似コード4700に、この組み合わされた実装形態での極性選択プロセスが記載されている。イントラコーディングされたマクロブロックについて、イントラ動きベクトルが、順方向と逆方向の両方の動き予測プレーンを埋め込むのに使用される。イントラ動きベクトルの一貫性のある表現のいずれも、デコーダ実装によって選択することができる。例えば、動きベクトルが、2バイトshort配列として格納されている場合に、イントラ動きベクトルを、動きベクトル配列に埋め込む一意の大きい定数として表して、そのマクロブロックがイントラとしてコーディングされたことを示すことができる。Bフィールド内の順方向動きベクトル予測順方向基準フレーム距離を、BFRACTION構文要素およびREFDIST構文要素から算出する。順方向動きベクトル予測は、上のセクションXで説明したように進行する。Bフィールド内の逆方向動きベクトル予測逆方向基準フレーム距離を、BFRACTION構文要素およびREFDIST構文要素から算出する。逆方向動きベクトル予測は、上のセクションXで説明したように進行する。動きベクトル差分のデコードBMV1構文要素、BMV2構文要素、またはBLKMVDATA構文要素に、マクロブロックまたはマクロブロック内のブロックの動き情報がエンコードされている。1MVマクロブロックは、BMV1構文要素およびBMV2構文要素を有し、4MVマクロブロックは、0個と4個の間のBLKMVDATA構文要素を有する場合がある。予測タイプBMVTYPEが補間であるときには、BMV1が順方向動きベクトル残差に対応し、BMV2が逆方向動きベクトル残差に対応する。次のセクションでは、Bピクチャに適用される2つの基準の場合に動きベクトル差分をどのように算出するかを説明する。2つの基準フィールドピクチャでの動きベクトル差分2つの基準フィールドピクチャは、フィールドピクチャを使用するインターレースフレームのコーディングに生起する。このシーケンスの各フレームが、2つのフィールドに分離され、各フィールドが、本質的にプログレッシブコードパスであるものを使用してコーディングされる。2つの基準フィールドを有するフィールドピクチャ例えば、インターレースBフィールドを有するピクチャでは、マクロブロックの各MVDATA構文要素または各BLKMVDATA構文要素が、次の3つを一緒にエンコードする。1水平動きベクトル差分成分と、2垂直動きベクトル差分成分と、3優勢プレディクタまたは非優勢プレディクタのどちらが使用されるかすなわち、2つのフィールドのうちのどちらが動きベクトルによって参照されるか。MVDATA構文要素またはBLKMVDATA構文要素は、可変長ハフマンコードワードとそれに続く固定長コードワードである。ハフマンコードワードの値は、固定長コードワードのサイズを決定する。ピクチャレイヤのMVTAB構文要素が、この可変サイズコードワードをデコードするのに使用されるハフマンテーブルを指定する。図61Aの擬似コード6100に、動きベクトル差分および優勢/非優勢プレディクタ情報がどのようにデコードされるかを示す。値predictor_flag、dmv_x、およびdmv_yは、図61Aの擬似コード6100で算出される。擬似コード6100内の各値は、次のように定義される。dmv_x:差分水平動きベクトル成分dmv_y:差分垂直動きベクトル成分k_x、k_y:長い動きベクトルの固定長k_xおよびk_yは、MVRANGEシンボルによって定義される動きベクトル範囲に依存する。extend_x:水平動きベクトル差分の拡張された範囲。extend_y:垂直動きベクトル差分の拡張された範囲。extend_xおよびextend_yは、DMVRANGEピクチャフィールド構文要素から導出される。水平成分に関して拡張された範囲が使用されることをDMVRANGEが示す場合に、extend_x=1である。そうでない場合に、extend_x=0である。同様に、垂直成分に関して拡張された範囲が使用されることをDMVRANGEが示す場合に、extend_y=1であり、そうでない場合にextend_y=0である。変数predictor_flagは、優勢または非優勢のどちらの動きベクトルプレディクタが使用されるかを示す2値フラグである0=優勢プレディクタが使用され、1=非優勢プレディクタが使用される。offset_table配列およびsize_table配列は、図61Aに示されているように定義される。図61Bの擬似コード6110に、代替の組み合わされた実装形態で動きベクトル差分が2つの基準フィールドに対してどのようにコーディングされるかを示す。擬似コード6110は、異なる形で動きベクトル差分をデコードする。例えば、擬似コード6110では、拡張された動きベクトル差分範囲の処理が省略されている。動きベクトルプレディクタ動きベクトルは、前のセクションで算出された動きベクトル差分を動きベクトルプレディクタに加算することによって算出される。次のセクションでは、この組み合わされた実装形態で、1MVおよびミックスドMVのインターレースBフィールド内のマクロブロックについて動きベクトルプレディクタをどのように算出するかを説明する。1MVインターレースBフィールドの動きベクトルプレディクタ図5Aおよび5Bは、1MVマクロブロックの候補動きベクトルプレディクタと見なされるマクロブロックの位置を示す図である。候補プレディクタは、マクロブロックが行の最後のマクロブロックである場合を除いて、左、上、および右上のマクロブロックからとられる。行の最後のマクロブロックである場合には、プレディクタBが、右上ではなく左上のマクロブロックからとられる。フレームが1マクロブロック幅である特別な場合について、プレディクタは、必ずプレディクタA上プレディクタである。マクロブロックが最上行にあるAプレディクタおよびBプレディクタがないか、プレディクタがまったくない特別な場合は、上で図33Aから33Fを参照し、下で図62A~62Fを参照して対処される。ミックスドMVインターレースBフィールドの動きベクトルプレディクタ図6A~10に、ミックスドMVインターレースBフィールド内の1MVマクロブロックまたは4MVマクロブロックの動きベクトルの候補動きベクトルと見なされるブロックまたはマクロブロックの位置を示す。インターレースBフィールドの優勢MVプレディクタおよび非優勢MVプレディクタインターコーディングされたマクロブロックごとに、2つの動きベクトルプレディクタが導出される。一方は優勢フィールドから、他方は非優勢フィールドから導出される。優勢フィールドは、近傍内に実際の値の動きベクトルプレディクタ候補の過半数を収容するフィールドと見なされる。同数の場合には、反対のフィールドの動きベクトルプレディクタが、時間的により近いので優勢プレディクタと見なされる。イントラコーディングされたマクロブロックは、優勢/非優勢プレディクタの算出では考慮されない。すべての候補プレディクタマクロブロックがイントラコーディングされている場合には、優勢および非優勢の動きベクトルプレディクタに0がセットされ、優勢プレディクタが、反対のフィールドからとられる。インターレースBフィールドでの動きベクトルプレディクタの算出基準ごとに1つの、2つの動きベクトルプレディクタが、ブロックまたはマクロブロックの動きベクトル用に算出される。図62A~62Fの擬似コード6200に、組み合わされた実装形態で2つの基準の場合に動きベクトルプレディクタがどのように算出されるかを示す図33A~図33Fの擬似コード3300に、もう1つの実装で2つの基準の場合に動きベクトルプレディクタがどのように算出されるかが記載されている。2つの基準ピクチャでは、現在のフィールドが、2つの最も最近のフィールドを参照することができる。一方のプレディクタは、同一極性の基準フィールドに関し、他方は、反対極性の基準フィールドに関する。インターレースBフィールドでの動きベクトルの再構成次のセクションでは、1MVマクロブロックおよび4MVマクロブロックの輝度動きベクトルおよびクロマ動きベクトルをどのように再構成するかを説明する。動きベクトルが再構成されると、その動きベクトルを、その後、近傍動きベクトルとして使用して、近くのマクロブロック用の動きベクトルを予測することができる。この動きベクトルは、同一または反対の関連する極性を有し、動きベクトル予測に関して他のフィールド極性用の動きベクトルプレディクタを導出するのに使用することができる。インターレースBフィールドでの輝度動きベクトル再構成すべての場合1MVマクロブロックおよび4MVマクロブロックに、輝度動きベクトルは、次のように差分をプレディクタに加算することによって再構成される。mv_x=dmv_xpredictor_xsmodrange_xmv_y=dmv_ypredictor_ysmodrange_y剰余演算smodは、符号付き剰余であり、次のように定義されるAsmodb=Ab2b-bこれによって、再構成されたベクトルが有効であることが保証される。Asmodbは、-bとb-1の間にある。range_xおよびrange_yは、MVRANGEに依存する。インターレースBフィールドピクチャは、2つの基準ピクチャを使用するので、動きベクトル差分をデコードした後に導出されたpredictor_flagを、動きベクトル予測から導出されたdominantpredictorの値と組み合わせて、どのフィールドを基準として使用するかを決定する。図63の擬似コード6300に、基準フィールドをどのように決定するかを示す。1MVマクロブロックには、そのマクロブロックの輝度を構成する4つのブロックに対して単一の動きベクトルがある。マクロブロックレイヤにMVデータが存在しないことをMBMODE構文要素が示す場合には、dmv_x=0であり、dmv_y=0であるmv_x=predictor_xであり、mv_y=predictor_y。4MVマクロブロックでは、マクロブロック内のインターコーディングされた輝度ブロックのそれぞれが、それ自体の動きベクトルを有する。したがって、各4MVマクロブロックに、0個と4個の間の輝度動きベクトルがある。あるブロックについて動きベクトル情報がないことを4MVBP構文要素が示す場合には、そのブロックについてdmv_x=0であり、dmv_y=0であるmv_x=predictor_xであり、mv_y=predictor_y。クロマ動きベクトル再構成クロマ動きベクトルは、輝度動きベクトルから導出される。また、4MVマクロブロックについて、クロマブロックをインターまたはイントラのどちらとしてコーディングするかに関する決定は、輝度ブロックまたはフィールドのステイタスに基づいて行われる。C.インターレースPフレームのデコーディング組み合わされた実装形態でインターレースBフレームをデコードするプロセスを説明する前に、インターレースPフレームをデコードするプロセスを説明する。インターレースBフレームをデコードするプロセスを説明するセクションは、このセクションで述べる概念を参照して進行する。1.インターレースPフレームのマクロブロックレイヤデコーディングインターレースPフレームでは、各マクロブロックを、フレームモードで1つもしくは4つの動きベクトルを使用して、またはフィールドモードで2つもしくは4つの動きベクトルを使用して、動き補償することができる。インターコーディングされたマクロブロックには、イントラブロックがまったく含まれない。さらに、動き補償後の残差を、フレーム変換モードまたはフィールド変換モードでコーディングすることができる。具体的に言うと、残差の輝度成分は、フィールド変換モードでコーディングされる場合にフィールドに従って再配置され、フレーム変換モードでは未変更のままになると同時に、クロマ成分も同一のままになる。マクロブロックを、イントラとしてコーディングすることもできる。動き補償を、4つフィールド/フレーム共にの動きベクトルを含まないように制限することができ、これは、4MVSWITCHを介してシグナリングされる。動き補償のタイプおよび残差コーディングは、共に、MBMODEおよびSKIPMBを介してマクロブロックごとに示される。MBMODEは、4MVSWITCHに従ってテーブルの異なるセットを使用する。インターレースPフレームのマクロブロックは、5つのタイプすなわち、1MV、2フィールドMV、4フレームMV、4フィールドMV、およびイントラに分類される。最初の4つのタイプのマクロブロックは、インターコーディングされ、最後のタイプは、マクロブロックがイントラコーディングされることを示す。マクロブロックタイプは、スキップビットと併せて、マクロブロックレイヤのMBMODE構文要素によってシグナリングされる。MBMODEは、マクロブロックの異なるタイプについて、マクロブロックに関する様々な情報と併せてマクロブロックタイプを一緒にエンコードする。スキップドマクロブロックのシグナリングSKIPMBフィールドは、マクロブロックのスキップ状態を示す。SKIPMBフィールドが1である場合には、現在のマクロブロックが、スキップされたスキップドと言い、SKIPMBフィールドの後に送られる他の情報はない。スキップ状態は、現在のマクロブロックが、0の差分動きベクトルを有する1MVでありすなわち、そのマクロブロックは、その1MV動きプレディクタを使用して動き補償される、コーディングされたブロックがないCPB=0ことを暗示する。その一方で、SKIPMBフィールドが1でない場合には、MBMODEフィールドをデコードして、マクロブロックのタイプと、次のセクションで説明する情報などの現在のマクロブロックに関する他の情報を示す。マクロブロックモードのシグナリングMBMODEによって示される15個の可能なイベントがある。MBMODEは、一緒に、マクロブロックのタイプ1MV、4フレームMV、2フィールドMV、4フィールドMV、またはイントラ、インターコーディングされたマクロブロックの変換のタイプすなわち、フィールド、フレーム、あるいはコーディングされたブロックなし、および1MVマクロブロックの場合には差分動きベクトルがあるかどうかを指定する。<MVP>が、非0の1MV差分動きベクトルがあるか否かをシグナリングする2値イベントを表すものとする。<Field/Frametransform>が、マクロブロックの残差がフレーム変換コーディングされるか、フィールド変換コーディングされるか、0個のコーディングされたブロックを有するすなわち、CBP=0か、をシグナリングする3値ternaryイベントを表すものとする。MBMODEは、次のイベントのセットを一緒にシグナリングする。MBMODE={<1MV,MVP,Field/Frametransform>、<2FieldMV,Field/Frametransform>、<4FrameMV,Field/Frametransform>、<4FieldMV,Field/Frametransform>、<INTRA>}ここで、スキップ状態によってシグナリングされる<1MV,MVP=0,CBP=0>であるイベントを除かれる。インターコーディングされたマクロブロックについて、CBPCY構文要素は、コーディングされたブロックがないことをMBMODEのField/FrameTransformイベントが示すときに、デコードされない。その一方で、MBMODEのField/Frametransformイベントがフィールド変換またはフレーム変換を示す場合には、CBPCYがデコードされる。デコードされたイベント<field/frameTransform>は、フラグFIELDTXをセットするのに使用される。このイベントが、マクロブロックがフィールド変換コーディングされることを示す場合には、FIELDTXに1がセットされる。このイベントが、マクロブロックがフレーム変換コーディングされることを示す場合には、FIELDTXに0がセットされる。このイベントが0にコーディングされたブロックを示す場合には、FIELDTXには、動きベクトルと同一のタイプがセットされるすなわち、FIELDTXには、FIELDMVの場合に1、FRAMEMVの場合に0がセットされる。非1MVインターコーディングされたマクロブロックについて、0差分動きベクトルイベントを示す追加のフィールドが送られる。2フィールドMVマクロブロックの場合に、2つの動きベクトルのどちらに非0差分動きベクトルが含まれるかを示す2MVBPフィールドを送る。同様に、4つの動きベクトルのいずれに非0差分動きベクトルが含まれるかを示す4MVBPフィールドを送る。イントラコーディングされたマクロブロックについて、Field/Frametransformおよび0にコーディングされたブロックは、別々のフィールドでコーディングされる。2.インターレースPフレームの動きベクトルデコーディングインターレースPフレームの動きベクトルプレディクタ現在のマクロブロックの動きベクトルプレディクタを算出するプロセスは、2つのステップからなる。第1に、現在のマクロブロック用の3つの候補動きベクトルを、その隣接マクロブロックから収集する。第2に、現在のマクロブロックの動きベクトルプレディクタを、候補動きベクトルのセットから算出する。図40A~図40Bに、候補動きベクトルがそこから収集される隣接マクロブロックを示す。候補動きベクトルの収集の順序は、重要である。この組み合わされた実装形態では、収集の順序が、必ず、Aで始まり、Bに進み、Cで終わる。対応するブロックがフレーム境界の外である場合、または対応するブロックが異なるスライスの一部である場合に、プレディクタ候補が存在しないと考えられることに留意されたい。したがって、動きベクトルプレディクタは、スライス境界にまたがっては実行されない。次のセクションで、異なるタイプのマクロブロックについて候補動きベクトルがどのように収集されるか、および動きベクトルプレディクタがどのように算出されるかを説明する。1MV候補動きベクトルこの組み合わされた実装形態では、図64の擬似コード6400を使用して、その動きベクトルに対して3つまでの候補動きベクトルを集める。4フレームMV候補動きベクトル4フレームMVマクロブロックについて、現在のマクロブロックの4つのフレームブロック動きベクトルのそれぞれについて、隣接ブロックからの候補動きベクトルを収集する。この組み合わされた実装形態では、図65の擬似コード6500を使用して、左上フレームブロック動きベクトルに対して3つまでの候補動きベクトルを収集する。図66の擬似コード6600を使用して、右上フレームブロック動きベクトルに対して3つまでの候補動きベクトルを収集する。図67の擬似コード6700を使用して、左下フレームブロック動きベクトルに対して3つまでの候補動きベクトルを収集する。図68の擬似コード6800を使用して、右下フレームブロック動きベクトルに対して3つまでの候補動きベクトルを収集する。2フィールドMV候補動きベクトルの導出2フィールドMVマクロブロックについて、現在のマクロブロックの2つのフィールド動きベクトルのそれぞれについて、隣接ブロックからの候補動きベクトルを収集する。図69の擬似コード6900を使用して、上フィールド動きベクトルに対して3つまでの候補動きベクトルを収集する。図70の擬似コード7000を使用して、下フィールド動きベクトルに対して3つまでの候補動きベクトルを収集する。4フィールドMV候補動きベクトルの導出4フィールドMVマクロブロックについて、現在のマクロブロックの4つのフィールドブロックのそれぞれについて、隣接ブロックからの候補動きベクトルを収集する。図71の擬似コード7100を使用して、左上フィールドブロック動きベクトルに対して3つまでの候補動きベクトルを収集する。図72の擬似コード7200を使用して、右上フィールドブロック動きベクトルに対して3つまでの候補動きベクトルを収集する。図73の擬似コード7300を使用して、左下フィールドブロック動きベクトルに対して3つまでの候補動きベクトルを収集する。図74の擬似コード7400を使用して、右下フィールドブロック動きベクトルに対して3つまでの候補動きベクトルを収集する。フィールド動きベクトルの平均をとる2つのフィールド動きベクトルMVX1,MVY1およびMVX2,MVY2を与えられて、候補動きベクトルMVXA,MVYAを形成するのに使用される平均演算は、次の通りである。MVXA=MVX1MVX21>>1;MVYA=MVY1MVY21>>1;候補動きベクトルからのフレームMVプレディクタの算出このセクションでは、候補動きベクトルのセットを与えられて、フレーム動きベクトルについて動きベクトルプレディクタをどのように算出するかを説明する。この組み合わされた実装形態では、この動作は、1MVのプレディクタまたは4フレームMVマクロブロックの4つのフレームブロック動きベクトルのそれぞれのプレディクタの算出について同一である。図75の擬似コード7500に、フレーム動きベクトルについて動きベクトルプレディクタPMVx,PMVyをどのように算出するかを示す。擬似コード7500で、TotalValidMVは、候補動きベクトルのセットに含まれる動きベクトルの総数を表しTotalValidMV=0、1、2、または3、ValidMV配列は、候補動きベクトルのセットに含まれる動きベクトルを表す。候補動きベクトルからのフィールドMVプレディクタの算出このセクションでは、候補動きベクトルのセットを与えられて、フィールド動きベクトルについて動きベクトルプレディクタをどのように算出するかを説明する。この動作は、2フィールドMVマクロブロックの2つのフィールド動きベクトルのそれぞれのプレディクタ、または4フィールドMVマクロブロックの4つのフィールドブロック動きベクトルのそれぞれのプレディクタ、の算出について同一である。まず、候補動きベクトルを、2つのセットに分離するが、一方のセットには、現在のフィールドと同一のフィールドを指す候補動きベクトルだけが含まれ、他方のセットには、反対のフィールドを指す候補動きベクトルが含まれる。候補動きベクトルが、1/4ピクセル単位で表されると仮定すると、エンコーダまたはデコーダは、候補動きベクトルが同一のフィールドを指すかどうかを、そのy成分に対する次のチェックによってチェックすることができる。図76の擬似コード7600に、フィールド動きベクトルについて動きベクトルプレディクタPMVx,PMVyをどのように算出するかを示す。擬似コード7600では、SameFieldMVおよびOppFieldMVが、候補動きベクトルの2つのセットを表し、NumSameFieldMVおよびNumOppFieldMVが、各セットに属する候補動きベクトルの個数を表す。各セットの候補動きベクトルの順序は、存在する場合に候補Aで始まり、存在する場合に候補Bが続き、その後、存在する場合に候補Cが続く。例えば、SameFieldMV候補動きベクトルのセットに候補Bおよび候補Cだけが含まれる場合に、SameFieldMV[0]は候補Bである。動きベクトル差分のデコーディングMVDATA構文要素に、マクロブロックの動きベクトル差分情報が含まれる。各マクロブロックでシグナリングされる動き補償のタイプおよび動きベクトルブロックパターンに応じて、マクロブロックごとに4つまでのMVDATA構文要素がある場合がある。具体的には、次の通りである。1MVマクロブロックについて、MBMODEのMVPフィールドに応じて、0個または1個のいずれかのMVDATA構文要素がある場合がある。2フィールドMVマクロブロックについて、2MVBPに応じて、0個、1個、または2個のいずれかのMVDATA構文要素がある場合がある。4フレーム/フィールドMVマクロブロックについて、4MVBPに応じて、0個、1個、2個、3個、または4個のいずれかのMVDATA構文要素がある場合がある。この組み合わされた実装形態では、動きベクトル差分は、インターレースPフィールドの1つの基準フィールド動きベクトル差分と同一の形でデコードされる図77Aの擬似コード7700に、1基準フィールドについて動きベクトル差分がどのようにデコードされるかを示す。図77Bの擬似コード7710に、代替の組み合わされた実装形態で、1基準フィールドについて動きベクトル差分がどのようにデコードされるかを示す。擬似コード7710は、異なる形で動きベクトル差分をデコードする。例えば、擬似コード7710では、拡張された動きベクトル差分範囲の処理が省略されている。動きベクトルの再構成動きベクトル差分dmvを与えられて、輝度動きベクトルが、上のセクションXV.B.3で説明したように、その差分をプレディクタに加算することによって再構成される。ルマフレーム動きベクトルまたはルマフィールド動きベクトルを与えられて、対応するクロマフレーム動きベクトルまたはクロマフィールド動きベクトルを導出して、Cb/Crブロックの一部または全体を補償する。図78の擬似コード7800に、インターレースPフレームのクロマ動きベクトルCMVがルマ動きベクトルLMVからどのように導出されるかを示す。D.インターレースBフレームのデコーディングこのセクションでは、前のセクションで述べた概念を参照して、組み合わされた実装形態でインターレースBフレームをデコードするプロセスを説明する。1.インターレースBフレームのマクロブロックレイヤデコーディングマクロブロックレベルで、インターレースBフレーム構文は、上で説明したインターレースPフレーム構文に似ている。インターレースBフレームのマクロブロックは、3タイプに分類される。1MV、2フィールドMV、およびイントラである。4フレームMVモードおよび4フィールドMVモードは、この組み合わされた実装形態では、インターレースBフレームについて許容されない。この3つのモードは、インターレースPフレームと同様に、MBMODE構文要素を用いて合同でコーディングされる。また、各マクロブロックは、DIRECTMB構文要素およびBMVTYPE構文要素を使用して順方向、逆方向、直接、または補間として予測される。1MVマクロブロックは、順方向または逆方向のいずれかである場合に、単一の動きベクトルを使用する。マクロブロックが、1MVであるが直接または補間である場合には、そのマクロブロックは2つの動きベクトルを使用する。マクロブロックが、2フィールドMVのタイプであり、順方向予測または逆方向予測のいずれかである場合に、そのマクロブロックは、2つの動きベクトルを使用する。マクロブロックが、2フィールドMVのタイプであり、直接または補間である場合に、そのマクロブロックは、4つの動きベクトルを使用する。次のセクションでは、インターレースBフレームの異なるインターコーディングされたマクロブロックタイプの特性を説明する。インターレースBフレームの1MVマクロブロックインターレースBフレームの1MVマクロブロックでは、輝度ブロックの変位は、予測タイプが順方向または逆方向のときには単一の動きベクトルによって、予測タイプが直接または補間のときには2つの動きベクトルによって表される。対応するクロマ動きベクトルが、それぞれの場合に導出される。補間予測および直接予測の場合に、順方向基準ピクチャおよび逆方向基準ピクチャからの動き補償されたピクセルの平均をとって、最終的な予測を形成する。インターレースBフレームの2フィールドMVマクロブロックインターレースBフレームの2フィールドMVマクロブロックでは、輝度ブロックの各フィールドの変位は、図37に示されているように、異なる動きベクトルによって記述される。さらに、上のセクションVIIで述べたように、予測タイプを、上フィールドから下フィールドに移る際に順方向から逆方向にまたはその逆に切り替えることができ、したがって、上フィールドを一方の基準ピクチャから動き補償し、下フィールドを他方の基準ピクチャから動き補償することができる。インターレースBフレームでの2MVBP、4MVBPの解釈および動きベクトルの順序1MVマクロブロックでは、エンコーダが、補間モードで2MVBP構文要素を使用して、2つの動きベクトルのうちのどちらが存在するかを示す。ビット1は、順方向動きベクトルに対応し、ビット0は、逆方向動きベクトルに対応する。2フィールドMVマクロブロックでは、エンコーダは、順方向モードおよび逆方向モードで2MVBP構文要素を使用して、2つのフィールドの動きベクトルのうちのどちらが存在するかを示す。ビット1は、上フィールド動きベクトルに対応し、ビット0は、下フィールド動きベクトルに対応する。エンコーダは、MVSW構文要素が、上フィールドの順方向予測から下フィールドの逆方向予測へまたはその逆の切替えに使用されているときに、同一の上/下シグナリングを使用する。エンコーダは、補間モードで4MVBP構文要素を使用して、4つの動きベクトルのうちのどれが存在するかを示す。ビット3は、上フィールド順方向動きベクトルに対応し、ビット2は、上フィールド逆方向動きベクトルに対応し、ビット1は、下フィールド順方向動きベクトルに対応し、ビット0は、下フィールド逆方向動きベクトルに対応する。2MVBPおよび4MVBPの、1をセットされたビットは、対応する動きベクトル差分が存在することを示し、0をセットされたビットは、対応する動きベクトルが予測された動きベクトルと等しいこと、すなわち、対応する動きベクトル差分が存在しないことを示す。実際にデコードされる動きベクトルは、2MVBPまたは4MVBPのビットと同一の順序で送られる。例えば、補間モードを使用する2フィールドMVマクロブロックで、デコーダが最初に受け取る動きベクトルは、上フィールド順方向動きベクトルであり、最後に受け取られるすなわち4番目の動きベクトルは、下フィールド逆方向動きベクトルである。スキップドマクロブロックのシグナリングスキップドマクロブロックは、Pフレームと同一の形でシグナリングされる。しかし、インターレースBフレームのスキップドマクロブロックは、1MVフレームタイプに制限されるすなわち、フィールドタイプは許可されない。動きベクトルは、0の差分動きベクトルを用いてコーディングされすなわち、このマクロブロックは、その1MV動きプレディクタを使用して動き補償される、コーディングされたブロックはないCBP=0。マクロブロックがスキップドである場合に、エンコーダは、そのマクロブロックに対してBMVTYPE情報だけを送り、その結果、動きベクトルを、順方向、逆方向、直接、または補間として正しく予測できるようになる。マクロブロックモードのシグナリングマクロブロックモードのシグナリングは、上のセクションXV.Cで説明した、インターレースPフレームと同一の形で実行される。予測タイプのデコーディングBMVTYPEおよびMVSW予測タイプは、インターレースBフレームについて、次のルールに従ってデコードされる。マクロブロックが直接タイプであることをピクチャレベルビットプレーンDIRECTMBが示す場合には、そのマクロブロックの予測タイプに直接をセットする。rawモードで直接/非直接決定がコーディングされている場合に、エンコーダは、マクロブロックレベルで追加ビットDIRECTBBITを使用して、予測タイプが直接であるか否かを示す。予測タイプが非直接である場合に、デコーダは、BMVTYPE構文要素をデコードする。マクロブロックモードが2MVフィールドコーディングであり、BMVTYPEタイプが順方向または逆方向のいずれかである場合に、デコーダは、MVSWビットもデコードして、そのマクロブロックの上フィールドから下フィールドに移る際に予測タイプが変化するすなわち、順方向から逆方向にまたはその逆にフリップされるか否かを判断する。直接モード動きベクトルのデコーディング直接モード動きベクトルをデコードするために、デコーダは、まず、前にデコードされたアンカーフレームからの動きベクトルをバッファリングする。具体的に言うと、前にデコードされた将来のPフレームについて、デコーダは、その将来のPフレームからデコードされたルマ動きベクトルの可能な最大の個数の半分すなわち、2NumberOfMBs個の動きベクトルをバッファリングする。アンカーフレームからバッファリングされるこれらの動きベクトルを選択する方法は、上のセクションXIIIで説明した。上述した方法で得た動きベクトルを使用して、動きベクトルをプルバックpullbackすることなく、デコーダは、図19の擬似コード1900に示されたScale_Direct_MVのスケーリング論理を適用して、順方向および逆方向を指す動きベクトルを得る。この組み合わされた実装形態には、順方向予測マクロブロックおよび逆方向予測マクロブロックなどの、直接モード予測を使用していないマクロブロックに関する非直接モード動きベクトルについての算出は存在しない。その代わりに、非直接マクロブロックの動きベクトルは、順方向動きベクトルバッファまたは逆方向動きベクトルバッファに基づいて予測される。2.インターレースBフレームの動きベクトルのデコーディングインターレースBフレームの動きベクトルプレディクタインターレースPフレームと同様に、インターレースBフレームの現在のマクロブロックの動きベクトルプレディクタを算出するプロセスには、現在のマクロブロック用の候補動きベクトルをそれに隣接するマクロブロックから収集することと、候補動きベクトルのセットから現在のマクロブロック用の動きベクトルプレディクタを算出すること、が含まれる。図40A~図40Bに、候補動きベクトルがそこから収集される隣接マクロブロックを示す。この組み合わされた実装形態では、インターレースBフレームの動きベクトルプレディクタが、インターレースPフレームについて上のセクションXIV.C.で説明したルールに従って候補のセットから選択される。別々の予測コンテクストが、順方向モード動きベクトルおよび逆方向モード動きベクトルに使用される。デコーダは、順方向予測コンテクストを使用して順方向動きベクトルを予測し、逆方向予測コンテクストを使用して逆方向動きベクトルを予測する。インターレースBフレームでの順方向予測コンテクストおよび逆方向予測コンテクストの取り込みデコーダは、順方向動きベクトルおよび逆方向動きベクトルを別々にバッファリングし、これらを使用して、それぞれ順方向動きベクトルおよび逆方向動きベクトルを予測する。補間マクロブロックについて、デコーダは、順方向予測バッファを使用して順方向動きベクトル最初にデコードされるMVDATA要素を予測し、逆方向予測バッファを使用して逆方向動きベクトル2番目にデコードされるMVDATA要素を予測する。マクロブロックが直接または補間である場合に、デコーダは、順方向MVコンポーネントを順方向バッファに、逆方向MVコンポーネントを逆方向バッファにバッファリングする。それぞれの場合例えば、1MVマクロブロック、2フィールドMVマクロブロックなどで候補のセットの間から動きベクトルプレディクタを選択する実際の予測論理は、上のセクションXIV.Cで説明した。順方向動きベクトルバッファおよび逆方向動きベクトルバッファに取り込み、これらのバッファ内の動きベクトルから動きベクトルを予測するスキームは、上のセクションIX.Cで説明した。インターレースBフレームでの動きベクトル差分のデコーディングインターレースBフレームの動きベクトル差分は、上のセクションXIV.C.2で述べた、図77Aおよび77Bの擬似コード7700および7710に従ってデコードされる。インターレースBフレームでの動きベクトルの再構成動きベクトルは、インターレースBフレームで再構成されるは、上のセクションXIV.B.3およびXIV.C.2で述べた図78の擬似コード7800に従ってデコードされる。E.ビットプレーンコーディング次のマクロブロック固有2値情報、1インターレースBフィールドのマクロブロックの順方向/非順方向決定すなわち、FORWARDMBフラグ、および2インターレースBフレームのマクロブロックの直接/非直接決定すなわち、DIRECTMBフラグなどは、マクロブロックごとに1つの2値シンボルにエンコードすることができる。例えば、インターレースBフィールドのマクロブロックが逆方向、直接、または補間などの別のモードに対して順方向モードで動き補償されているか否かを、1ビットを用いてシグナリングすることができる。これらの場合に、あるフィールドまたはフレーム内のすべてのマクロブロックのステイタスを、ビットプレーンとしてコーディングし、フィールドヘッダまたはフレームヘッダ内で送ることができる。このルールに関する1つの例外が、ビットプレーンコーディングモードにRawModeがセットされている場合であり、この場合には、各マクロブロックの状況が、シンボルごとに1つのビットとしてコーディングされ、マクロブロックレベルの他のマクロブロックレベル構文要素と共に送られる。フィールド/フレームレベルビットプレーンコーディングは、2次元2値配列をエンコードするのに使用される。各配列のサイズは、rowMB×colMBであり、このrowMBおよびcolMBは、それぞれ、該当するフィールドまたはフレーム内のマクロブロックの行row数および列column数である。ビットストリーム内では、各配列が、連続するビットのセットとしてコーディングされる。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モード-セットビットがない行rowをシグナリングするための1ビットスキップ7.columnskipモード-セットビットがない列columnをシグナリングするための1ビットスキップフィールドレベルまたはフレームレベルのビットプレーンに関する構文要素は、INVERT、IMODE、およびDATABITSというシーケンスである。反転フラグINVERTINVERT構文要素は、1ビット値であり、セットされている場合に、ビットプレーンが1ビット以上のセットビットを有することを示す。INVERTおよびそのモードに応じて、デコーダは、オリジナルを再作成するために、解釈されたビットプレーンを反転しなければならない。rawモードが使用されているときには、このビットの値を無視しなければならないことに留意されたい。INVERT値がビットプレーンのデコードでどのように使用されるかの説明を、下で提供する。コーディングモードIMODEIMODE構文要素は、ビットプレーンのエンコードに使用されるコーディングモードを示す可変長の値である。表11に、IMODE構文要素のエンコードに使用されるコードテーブルを示す。IMODE値がビットプレーンのデコードでどのように使用されるかの説明を、下で提供する。ビットプレーンコーディングビットDATABITSDATABITS構文要素は、ビットプレーンのシンボルのストリームをエンコードする、可変サイズの構文要素である。ビットプレーンをエンコードするのに使用される方法は、IMODEの値によって決定される。7つのコーディングモードを、次のセクションで説明する。Rawモードこのモードでは、ビットプレーンが、マクロブロックのラスタスキャン順でスキャンされた、シンボルごとに1つのビットとしてエンコードされ、マクロブロックレイヤの一部として送られる。代替案では、この情報が、フィールドレベルまたはフレームレベルでrawモードでコーディングされ、DATABITSは、長さがrowMB×colMBビットである。Normal-2モードrowMB×colMBが奇数の場合に、最初のシンボルはrawでエンコードされる。後続シンボルは、自然なスキャン順で、対でエンコードされる。表12の2進VLCテーブルが、シンボル対をエンコードするのに使用される。Diff-2モード上で説明したビットプレーンを作るのに、Normal-2方法が使用され、次に、そのビットプレーンに、下で説明するDiff1演算を適用する。Normal-6モードNorm-6モードおよびDiff-6モードでは、ビットプレーンが、6ピクセルのグループでエンコードされる。これらのピクセルは、2×3または3×2のいずれかのタイルにグループ化される。ビットプレーンは、ルールのセットを使用して最大限にタイリングされ、残りのピクセルは、row-skipモードおよびcolumn-skipモードの変形形態を使用してエンコードされる。2×3垂直タイルは、rowMBが3の倍数であり、colMBが3の倍数でない場合に限って使用される。そうでない場合には、3×2水平タイルが使用される。図79Aに、2×3垂直タイルの単純化された例を示す。図79Bおよび79Cに、3×2水平タイルの単純化された例を示し、ここで、細長い暗い長方形は、1ピクセル幅であり、row-skipコーディングおよびcolumn-skipコーディングを使用してエンコードされる。図79Cに示された、ピクチャの上端および左端に直線のタイルを有する平面タイルについて、タイルのコーディング順序は、次のパターンに従う。6要素のタイルが最初にエンコードされ、column-skipエンコードされた直線タイルおよびrow-skipエンコードされた直線タイルがそれに続く。配列サイズが、2×3または3×2の倍数である場合には、後者の直線タイルが存在せず、ビットプレーンは、完全にタイリングされる。6要素の長方形タイルは、不完全ハフマンコードすなわち、エンコーディングにすべての終了ノードを使用しないハフマンコードを使用してエンコードされる。Nが、タイルのセットビット数すなわち、0≦N≦6であるものとする。N<3について、VLCを使用してタイルをエンコードする。N=3について、固定長エスケープに5ビット固定長コードが続き、N>3について、固定長エスケープにタイルの補数のコードが続く。長方形タイルに、6ビットの情報を収容する。kが、タイルに関連するコードであるものとするが、k=bi2iであり、biは、タイル内の自然なスキャン順でのi番目のビットの2進値である。したがって、0≦k<64である。VLCとエスケープコード固定長コードの組合せが、kをシグナリングするのに使用される。Diff-6モード上で説明したビットプレーンを作るのにNormal-6方法が使用され、次に、そのビットプレーンに、下で説明するDiff1演算を適用する。Rowskipモードrowskipコーディングモードでは、すべて0の行が、1ビットのオーバーヘッドでスキップされる。構文は、次の通りである。行ごとに、単一のROWSKIPビットが、その行がスキップされるかどうかを示し、行がスキップされる場合には、次の行のROWSKIPビットが次にあり、そうでない行がスキップされない場合には、ROWBITSビット行内のマクロブロックごとに1ビットが次にある。したがって、行全体が0の場合に、1つの0ビットが、ROWSKIPシンボルとして送られ、ROWBITSがスキップされる。行にセットされたビットがある場合に、ROWSKIPに1をセットし、行全体をrawで送るROWBITS。行は、フィールドまたはフレームの最上部から最下部へとスキャンされる。ColumnskipモードColumnskipは、rowskipの入れ替えtransposeである。列は、フィールドまたはフレームの右から左へとスキャンされる。Diff1::逆差分デコーディング差分モードのいずれかDiff-2またはDiff-6が使用される場合に、差分ビットのビットプレーンが、まず、対応するノーマルモードそれぞれNorm-2またはNorm-6を使用してデコードされる。差分ビットを使用して、オリジナルビットプレーンを再生成する。再生成プロセスは、2進アルファベットに対する2DDPCMである。位置i,jのビットを再生成するために、プレディクタbpi,jが、位置i,jのビットbi,jから次のように生成される。差分コーディングモードについて、INVERTに基づくビット単位の反転プロセスは実行されない。しかし、INVERTフラグは、異なる能力で使用されて、上で示したプレディクタの導出についてシンボルAの値を示す。具体的に言うと、INVERTが0と等しい場合にAは0と等しく、INVERTが1と等しい場合にAは1と等しい。ビットプレーンの実際の値は、プレディクタとデコードされた差分ビット値の排他的論理和をとることによって得られる。上の式では、bi,jが、最終的なデコードの後すなわち、Norm-2/Norm-6を行い、それに続いて差分とプレディクタとの排他的論理和をとった後の第i,j位置のビットである。様々な実施形態を参照して本発明の原理を説明し、図示したので、そのような原理から外れずに、配置および詳細において様々な実施形態を変更できることを理解されたい。本明細書で説明したプログラム、プロセス、または方法が、そうでないと示されていない限り、コンピューティング環境の特定のタイプに関連せず、これに制限されないことを理解されたい。様々なタイプの汎用のまたは特殊化されたコンピューティング環境は、本明細書に記載の教示に関して使用することができ、本明細書に記載の教示による動作を実行することができる。ソフトウェアで示された実施形態の要素を、ハードウェアで実装することができ、逆も可能である。本発明の原理を適用できる多数の可能な実施形態に鑑みて、本発明人は、添付請求項およびその同等物の範囲および趣旨に含めることができるすべての実施形態を本発明として主張する。"