(57)【要約】      （修正有）【課題】インターレース画像について、順方向動きベクトルが、順方向動きベクトル・バッファからのベクトルを使用して予測され、逆方向動きベクトルが、逆方向動きベクトル・バッファからのベクトルを使用して予測される。【解決手段】結果の動きベクトルが、対応するバッファに追加される。動きベクトル・バッファ内の穴を、推定動きベクトル値を用いて埋めることができる。インターレースＢフレームのフィールド・コーディングされたマクロブロックのフィールドの間で、予測モードを切り替える。インターレース画像について、直接モード動きベクトルを算出する。インターレース画像について、４ＭＶコーディングを使用する。「自己参照」Ｂフレームを使用する。エンコーダは、インターレースＢフィールド内の１つまたは複数のマクロブロックについて予測モードに関する２値情報を送る。イントラコーディングされたＢフィールド［ＢＩフィールド］を使用する。【選択図】図２０
2011139524.tif 000002
【特許請求の範囲】
【請求項１】
ビデオ・デコーダにより、エンコードされたビデオ情報をデコードする方法であって、
前記ビデオ・デコーダにおいてビットストリームからエンコードされたビデオ情報を受け取るステップと、
前記ビデオ・デコーダにより前記エンコードされたビデオ情報を使用してインターレース双方向予測フィールドをデコードするステップであって、前記インターレース双方向予測フィールドは、複数のマクロブロックを含み、前記デコードするステップは、前記複数のマクロブロックの現在のマクロブロックに対して、
前記インターレース双方向予測フィールド内の前記現在のマクロブロック内の４つのブロックのそれぞれ用の動きベクトルを算出するステップと、
前記インターレース双方向予測フィールド内の前記現在のマクロブロックに対する動き補償における前記算出された動きベクトルのうちの１つまたは複数を使用するステップとを含むステップと
を備え、
前記複数のマクロブロック用の動き補償された予測モードは、順方向予測モードと複数の非順方向予測モードとを含み、前記複数の非順方向予測モードは、逆方向予測モード、直接予測モード、および補間予測モードを含み、マクロブロックごとに４つの動きベクトルを使用することは、前記順方向予測モードと前記逆方向予測モードに制限され、マクロブロックごとの前記４つの動きベクトルの制限的な使用は、前記現在のマクロブロックの動き補償された予測モードが前記順方向予測モードでないとシグナリングされるかどうか、および動きベクトルの数が前記現在のマクロブロックに対して４つではないとシグナリングされるかどうかについて、前記ビットストリーム内の非順方向予測モード選択構文要素の条件付きの使用により、前記逆方向予測モードのシグナリングに関連付けられたシグナリング・オーバーヘッドを減らし、前記非順方向予測モード選択構文要素は、使用されると、前記現在のマクロブロック用の前記複数の非順方向予測モードの１つを指定することを特徴とする方法。
【請求項２】
前記現在のマクロブロック内の４つの各ブロック用の動きベクトルを算出する前記ステップは、
前記ブロック用の１つまたは複数の動きベクトル・プレディクタ候補を決定するステップと、
前記ブロック用の前記１つまたは複数の動きベクトル・プレディクタ候補のうちの１つまたは複数に少なくとも部分的に基づいて、前記ブロック用の動きベクトル・プレディクタを算出するステップと、
前記ブロック用の前記動きベクトル・プレディクタに少なくとも部分的に基づいて前記ブロック用の動きベクトルを再構成するステップと
を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記ブロック用の動きベクトルを再構成する前記ステップは、前記ブロック用の前記動きベクトル・プレディクタを前記ブロック用の動きベクトル差分情報と組み合わせるステップを含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記現在のマクロブロックは、順方向予測モードのマクロブロックであることを特徴とする請求項１に記載の方法。
【請求項５】
前記現在のマクロブロックは、逆方向予測モードのマクロブロックであることを特徴とする請求項１に記載の方法。
【請求項６】
前記インターレース双方向予測フィールド内の前記複数のマクロブロックのうちの１つまたは複数の他のマクロブロックのそれぞれについて前記算出するステップおよび前記使用するステップを繰り返すステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項７】
ビデオ・エンコーダによりビデオ情報をエンコードする方法であって、
前記ビデオ・エンコーダによりビットストリーム内のインターレース双方向予測フィールドの現在のマクロブロック用の予測モードをシグナリングするステップと、
第１の構文要素を使用して、前記現在のマクロブロック用の前記予測モードが順方向予測モードか複数の非順方向予測モードかについての決定をシグナリングするステップと、
第２の構文要素を使用して、動きベクトルの数を含むマクロブロックのモードをシグナリングするステップと、
前記複数の非順方向予測モードの１つを指定するために、第３の構文要素を使用する、非順方向予測モードの選択を条件付きでシグナリングするステップであって、前記現在のマクロブロックがイントラでないときに前記非順方向予測モードの選択をシグナリングし、前記現在のマクロブロック用の前記予測モードは、前記順方向予測モードではなく、動きベクトルの数は４つ以外であり、前記現在のマクロブロックがイントラであるときに前記非順方向予測モードの選択のシグナリングをスキップするステップと、
前記シグナリングされた予測モードがマクロブロックごとに４つの動きベクトルを許容するときに、前記現在のマクロブロックの４つまでの各ブロック用の動きベクトルを再構成するための情報をシグナリングするステップと
を備えることを特徴とする方法。
【請求項８】
前記シグナリングされた予測モードが前記順方向予測モードまたは前記逆方向予測モードである場合に、前記シグナリングされた予測モードは、マクロブロックごとに４つの動きベクトルを許容するが、前記シグナリングされた予測モードが補間予測モードである場合に、前記シグナリングされた予測モードは、マクロブロックごとに４つの動きベクトルを許容しないことを特徴とする請求項７に記載の方法。
【請求項９】
前記現在のマクロブロックの前記予測モードは、前記ビットストリーム内のフィールド・レベルで、少なくとも部分的にシグナリングされることを特徴とする請求項７に記載の方法。
【請求項１０】
前記現在のマクロブロック用の前記予測モードに関するフィールド・レベル・シグナリングは、前記現在のマクロブロック用の前記予測モードが順方向予測モードか複数の非順方向予測モードかについての決定をシグナリングすることを含むことを特徴とする請求項９に記載の方法。
【請求項１１】
ビデオ・デコーダにより、エンコードされたビデオ情報をデコードする方法であって、  前記ビデオ・デコーダにより、ビットストリーム内のインターレース双方向予測フィールドの現在のマクロブロック用の予測モードに関する予測モード情報を受け取って処理するステップであって、
前記現在のマクロブロック用の前記予測モードが順方向予測モードか複数の非順方向予測モードかについての決定を示す第１の構文要素を受け取るステップと、
動きベクトルの数を含むマクロブロックのモードを示す第２の構文要素を受け取るステップと、
前記複数の非順方向予測モードの１つを指定する、非順方向予測モードの選択を示す第３の構文要素を条件付きで受け取るステップであって、前記現在のマクロブロックがイントラでないときに前記第３の構文要素を受け取り、前記現在のマクロブロック用の前記予測モードは、前記順方向予測モードではなく、動きベクトルの数は４つ以外であり、前記現在のマクロブロックがイントラであるときに前記第３の構文要素の受け取りをスキップするステップと、
前記予測モードがマクロブロックごとに４つの動きベクトルを許容するときに、前記現在のマクロブロックの４つまでの各ブロック用の動きベクトルを再構成するための動きベクトル再構成情報を受け取って処理するステップと
を備えることを特徴とする方法。
【請求項１２】
前記予測モードが前記順方向予測モードまたは前記逆方向予測モードである場合に、前記予測モードは、マクロブロックごとに４つの動きベクトルを許容し、前記予測モードは補間予測モードである場合に、前記予測モードは、マクロブロックごとに４つの動きベクトルを許容しないことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記現在のマクロブロックの前記予測モードは、前記ビットストリーム内のフィールド・レベルで、少なくとも部分的にシグナリングされることを特徴とする請求項１１に記載の方法。
【請求項１４】
前記順方向予測モードか前記複数の非順方向予測モードかについての決定は、フィールド・レベルで、シグナリングされることを特徴とする請求項１３に記載の方法。
【請求項１５】
１つまたは複数の前記マクロブロックの各々に対して、前記ビットストリーム内に非順方向予測モード選択構文要素が存在する又は存在しないことは、前記マクロブロックが４つの動きベクトルを使用するかどうかに少なくとも部分的に依存することを特徴とする請求項１に記載の方法。
【請求項１６】
前記第１の構文要素は、前記ビットストリーム内で、フィールド・レベルまたはマクロブロック・レベルでシグナリングされ、前記第２の構文要素は、前記ビットストリーム内で、マクロブロック・レベルでシグナリングされ、前記第３の構文要素は、前記ビットストリーム内で、マクロブロック・レベルで条件付きでシグナリングされることを特徴とする請求項７に記載の方法。
【請求項１７】
前記第１の構文要素は、前記ビットストリーム内で、フィールド・レベルまたはマクロブロック・レベルでシグナリングされ、前記第２の構文要素は、前記ビットストリーム内で、マクロブロック・レベルでシグナリングされ、前記第３の構文要素は、前記ビットストリーム内で、マクロブロック・レベルで条件付きでシグナリングされることを特徴とする請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、参照によって本明細書に組み込まれている米国特許仮出願第６０／５０１０８１号、名称「Video Encoding and Decoding Tools and Techniques」、２００３年９月７日出願の優先権を主張するものである。
【０００２】
次の同時係属の米国特許仮出願明細書は、本願に関し、参照によって本明細書に組み込まれている：１）米国特許仮出願第１０／６２２３７８号、名称「Advanced Bi-Directional Predictive Coding of Video Frames」、２００３年７月１８日出願、２）米国特許仮出願第１０／６２２２８４号、名称「Intraframe and Interframe Interlace Coding and Decoding」、２００３年７月１８日出願、３）米国特許仮出願第１０／６２２８４１号、名称「Coding of Motion Vector Information」、２００３年７月１８日出願、および４）米国特許仮出願第１０／８５７４７３号、名称「Predicting Motion Vectors for Fields of Forward-predicted Interlaced Video Frames」、２００４年５月２７日出願。
【０００３】
インターレース・ビデオ・コーディングおよびインターレース・ビデオ・デコーディングの技法およびツールを説明する。例えば、ビデオ・エンコーダが、インターレース・ビデオの双方向予測マクロブロック（bi-directionally predicted macroblock）をエンコードする。
【０００４】
デジタル・ビデオは、大量のストレージ容量および伝送容量を消費する。通常の生デジタル・ビデオ・シーケンスに、毎秒１５枚または３０枚のピクチャが含まれる。各ピクチャに、数万個または数十万個のピクセル（pixel、ペルとも称する）が含まれる可能性がある。各ピクセルは、ピクチャの小さい要素を表す。ＲＡＷ形式で、コンピュータは、一般に、２４ビット以上を用いて１ピクセルを表す。したがって、通常の生（raw）デジタル・ビデオ・シーケンスの秒当たりのビット数またはビットレートは、５００万ビット／秒以上になる可能性がある。
【０００５】
ほとんどのコンピュータおよびコンピュータ・ネットワークは、生デジタル・ビデオを処理するリソースが欠いている。この理由のために、エンジニアは、圧縮（compression）（コーディングまたはエンコーディングとも称する）を使用して、デジタル・ビデオのビットレートを減らす。圧縮は、ロスレス（lossless）とすることができ、この場合に、ビデオの品質は影響を受けないが、ビットレートの削減がビデオの複雑さによって制限される。あるいは、圧縮をロッシイ（lossy）とすることができ、この場合に、ビデオの品質は影響を受けるが、ビットレートの削減はより劇的である。圧縮解除（decompression）は、圧縮の逆の処理を実行する。
【０００６】
一般に、ビデオ圧縮技法に、「イントラ（intra）」圧縮および「インター（inter）」圧縮すなわち予測圧縮（predictive compression）が含まれる。イントラ圧縮技法は、通常はＩフレームまたはキー・フレームと呼ばれる個々のピクチャを圧縮する。インター圧縮技法は、前のフレームおよび／または次のフレームへの参照を用いてフレームを圧縮し、このインター圧縮されたフレームを、通常は予測フレーム、Ｐフレーム、またはＢフレームと呼ばれる。
【０００７】
Ｉ．  Ｗｉｎｄｏｗｓ（登録商標）Ｍｅｄｉａ  Ｖｉｄｅｏバージョン８および９でのインター圧縮  
Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ社のＷｉｎｄｏｗｓ（登録商標）Ｍｅｄｉａ  Ｖｉｄｅｏバージョン８［「ＷＭＶ８」］に、ビデオ・エンコーダおよびビデオ・デコーダが含まれる。ＷＭＶ８エンコーダは、イントラ圧縮およびインター圧縮を使用し、ＷＭＶ８デコーダは、イントラ圧縮解除およびインター圧縮解除を使用する。Ｗｉｎｄｏｗｓ（登録商標）Ｍｅｄｉａ  Ｖｉｄｅｏバージョン９［「ＷＭＶ９」］は、多くの動作に、これらに類似するアーキテクチャを使用する。
【０００８】
ＷＭＶ８エンコーダのインター圧縮は、ブロック・ベースの動き補償された予測（motion compensated prediction）コーディングと、これに続く残余誤差（residual error）の変換コーディングを使用する。図１および２に、ＷＭＶ８エンコーダの予測フレームに関するブロック・ベースのインター圧縮を示す。具体的に言うと、図１は、予測フレーム１１０の動き推定を示し、図２は、予測フレームの動き補償されたブロックの予測残差の圧縮を示す。
【０００９】
例えば、図１では、ＷＭＶ８エンコーダが、予測フレーム１１０内のマクロブロック１１５用の動きベクトルを算出する。動きベクトルを算出するために、エンコーダが、基準フレーム（reference frame）１３０の検索領域１３５内で検索する。検索領域１３５内で、エンコーダは、よい一致である候補マクロブロックを見つけるために、予測フレーム１１０からのマクロブロック１１５を様々な候補マクロブロックと比較する。エンコーダは、一致するマクロブロックに対する動きベクトルを指定する（エントロピー・コーディングされた）情報を出力する。
【００１０】
動きベクトルは、しばしば、空間的に周囲の動きベクトルの値と相関するので、動きベクトル情報を送るのに使用されるデータの圧縮は、隣接するマクロブロックから動きベクトル・プレディクタ（motion vector predictor）を選択し、このプレディクタを使用して現在のマクロブロックの動きベクトルを予測する、ことによって達成することができる。エンコーダは、動きベクトルとプレディクタの間の差分をエンコードすることができる。差分をプレディクタに加算することによって動きベクトルを再構成した後に、デコーダは、その動きベクトルを使用して、マクロブロック１１５の予測マクロブロックを算出する。この算出には、基準フレーム１３０からの情報を使用し、この基準フレーム１３０は、エンコーダおよびデコーダで使用可能な、前もって再構成されたフレームである。予測は、完全であることがめったになく、したがって、エンコーダは、通常、予測マクロブロックとマクロブロック１１５自体の間のピクセル差のブロック（誤差ブロックまたは残差ブロックとも呼ばれる）をエンコードする。
【００１１】
図２に、ＷＭＶ８エンコーダでの誤差ブロック２３５の算出およびエンコーディングの例を示す。誤差ブロック２３５は、予測ブロック２１５とオリジナルの現在のブロック２２５の間の差である。エンコーダは、誤差ブロック２３５に離散コサイン変換（ＤＣＴ）２４０を適用し、係数の８×８ブロック２４５をもたらす。次に、エンコーダは、ＤＣＴ係数を量子化（２５０）し、量子化されたＤＣＴ係数の８×８ブロック２５５をもたらす。エンコーダは、８×８ブロック２５５をスキャン（２６０）して、係数が、全般的に低い周波数から高い周波数の順になるように、１次元配列２６５に取り込む。エンコーダは、ランレングス・コーディング２７０の変形を使用して、スキャンされた係数をエントロピー・エンコードする。エンコーダは、１つまたは複数のラン／レベル／ラスト・テーブル（run/level/last table）２７５からエントロピー・コードを選択し、そのエントロピー・コードを出力する。
【００１２】
図３に、インター・コーディングされたブロックに対する対応するデコード・プロセス３００の例を示す。図３を要約すれば、デコーダが、予測残差を表すエントロピー・コーディングされた情報を、１つまたは複数のラン／レベル／ラスト・テーブル３１５を用いる可変長デコーディング３１０、およびラン・レングス・デコーディング３２０を使用して、デコードする（３１０、３２０）。デコーダは、エントロピー・デコードされた情報を格納した１次元配列３２５を、逆スキャン（３３０）して、２次元ブロック３３５に取り込む。デコーダは、データを逆量子化（３４０）し、（３４０に続けて）逆離散コサイン変換し、再構成された誤差ブロック３４５をもたらす。別々の動き補償パスで、デコーダは、基準フレームからの変位に関する動きベクトル情報３５５を使用して、予測ブロック３６５を算出する。デコーダは、予測ブロック３６５を再構成された誤差ブロック３４５と組み合わせ（３７０）て、再構成されたブロック３７５を形成する。
【００１３】
オリジナル・フレームと再構成されたフレームの間の変化の量は、ひずみであり、フレームをコーディングするのに必要なビット数は、そのフレームのレートを示す。ひずみの量は、おおむね、レートに反比例する。
【００１４】
ＩＩ．  インターレース・ビデオおよびプログレッシブ・ビデオ  
ビデオ・フレームは、ビデオ信号の空間情報の走査線を収容する。プログレッシブ・ビデオについて、これらの走査線は、ある瞬間から始まり、連続する走査線を介してフレームの最下部まで継続するサンプルを収容する。プログレッシブＩフレームは、イントラ・コーディングされたプログレッシブ・ビデオ・フレームである。プログレッシブＰフレームは、順方向予測（forward prediction）を使用してコーディングされたプログレッシブ・ビデオ・フレームであり、プログレッシブＢフレームは、双方向測（bi-directional prediction）を使用してコーディングされたプログレッシブ・ビデオ・フレームである。
【００１５】
通常のインターレース・ビデオ・フレームは、２つのフィールドから構成され、これらは異なる時刻にスキャンが開始される。例えば、図４を参照すると、インターレース・ビデオ・フレーム４００は、上フィールド４１０および下フィールド４２０を含む。通常、偶数番号の走査線（上フィールド）が、ある時刻（例えば、時刻ｔ）から開始してスキャンされ、奇数番号の走査線（下フィールド）が、異なる（通常は後の）時刻（例えば、時刻ｔ＋１）から開始してスキャンされる。このタイミングは、２つのフィールドが、異なる時刻にスキャンが開始されるという理由で、インターレース・ビデオ・フレーム内の動きが存在する領域にぎざぎざの歯のような外観を生じさせる場合がある。この理由から、インターレース・ビデオ・フレームを、フィールド構造に従って、奇数走査線を一緒に１フィールドにグループ化し、偶数走査線を別のフィールドに一緒にグループ化する態様で、再配置する場合がある。この配置は、フィールド・コーディングとして既知であり、上述したようなぎざぎざの縁のアーティファクトを減らすために、動きの激しいピクチャに有用である。その一方で、静止領域では、インターレース・ビデオ・フレームのイメージ詳細は、そのような再配置をせずにより効率的に保存される場合がある。したがって、フレーム・コーディングが、しばしば、静止しているか動きの少ないインターレース・ビデオ・フレームで使用され、この場合に、オリジナルの交番するフィールド走査線配置が保存される。
【００１６】
通常のプログレッシブ・ビデオ・フレームは、交番しない走査線を有する、コンテンツの１つのフレームから構成される。インターレース・ビデオと異なって、プログレッシブ・ビデオは、ビデオ・フレームを別々のフィールドに分割せず、フレーム全体が、単一の時刻に開始して左から右、上から下にスキャンされる。
【００１７】
ＩＩＩ．  従来のＷＭＶエンコーダおよびＷＭＶデコーダでのＰフレームのコーディングおよびデコーディング  
従来のＷＭＶのエンコーダおよびデコーダは、Ｐフレームの形でプログレッシブおよびインターレースのコーディングおよびデコーディングを使用する。インターレースＰフレームおよびプログレッシブＰフレームで、動きベクトルは、動きベクトルと動きベクトル・プレディクタの間の差分を算出することによってエンコーダ内でエンコードされ、この動きベクトル・プレディクタは、隣接する動きベクトルに基づいて算出される。また、デコーダ内では、動きベクトルが、動きベクトル・プレディクタに動きベクトル差分を加算することによって再構成され、この動きベクトル・プレディクタは、やはり隣接する動きベクトルに基づいて算出される（この場合にはデコーダ内で）。現在のマクロブロックまたは現在のマクロブロックのフィールドのプレディクタは、候補プレディクタに基づいて選択され、動きベクトル差分は、このプレディクタに基づいて算出される。動きベクトルは、エンコーダ側またはデコーダ側のいずれかで、選択された動きベクトル・プレディクタに動きベクトル差分を加算することによって再構成することができる。通常、輝度動きベクトルは、エンコードされた動き情報から再構成され、クロミナンス動きベクトルは、再構成された輝度動きベクトルから導出される。
【００１８】
Ａ．  プログレッシブＰフレームのコーディングおよびデコーディング  
例えば、従来のＷＭＶのエンコーダおよびデコーダでは、プログレッシブＰフレームは、１動きベクトル（１ＭＶ）モードまたは４動きベクトル（４ＭＶ）モードでエンコードされたマクロブロック、あるいはスキップド・マクロブロック（skipped macroblock）を収容するができ、決定は、一般に、マクロブロックごとで行われる。１ＭＶマクロブロックだけ（および、潜在的にスキップド・マクロブロック）を有するＰフレームを、１ＭＶ  Ｐフレームと称し、１ＭＶマクロブロックと４ＭＶマクロブロックの両方（および、潜在的にスキップド・マクロブロック）を有するＰフレームを、ミックスドＭＶ（Ｍｉｘｅｄ−ＭＶ）Ｐフレームと称する。１つの動きベクトルが、各１ＭＶマクロブロックに関連付けられ、４つの動きベクトルが、各４ＭＶマクロブロックに関連付けられる（ブロックごとに１つ）。
【００１９】
図５Ａおよび５Ｂは、１ＭＶプログレッシブＰフレーム内のマクロブロックに対する候補動きベクトル・プレディクタと見なされるマクロブロックの位置を示す図である。候補プレディクタは、マクロブロックが行（row）の最後のマクロブロックである場合を除いて、左、上、および右上のマクロブロックからとられる。行の最後のマクロブロックである場合には、プレディクタＢが、右上ではなく左上のマクロブロックからとられる。フレームが１マクロブロック幅である特別な場合について、プレディクタは、必ずプレディクタＡ（上プレディクタ）である。マクロブロックが最上行にあってプレディクタＡが範囲外であるときには、このプレディクタはプレディクタＣである。様々な他のルールが、イントラ・コーディングされるプレディクタなどの他の特別な場合に対処する。
【００２０】
図６Ａ〜図１０に、ミックスドＭＶフレーム内の１ＭＶマクロブロックまたは４ＭＶマクロブロック対する動きベクトルの３つまでの候補動きベクトルと見なされるブロックまたはマクロブロックの位置を示す。次の図では、大きい正方形が、マクロブロック境界であり、小さい正方形が、ブロック境界である。フレームが１マクロブロック幅である特別な場合に、プレディクタは、必ずプレディクタＡ（上プレディクタ）である。様々な他のルールが、最上行４ＭＶマクロブロックの最上行ブロック、最上行１ＭＶマクロブロック、およびイントラ・コーディングされるプレディクタなどの他の特別な場合に対処する。
【００２１】
図６Ａおよび６Ｂは、ミックスドＭＶフレーム内の現在の１ＭＶマクロブロックに対する候補動きベクトル・プレディクタと見なされるブロックの位置を示す図である。隣接するマクロブロックは、１ＭＶマクロブロックまたは４ＭＶマクロブロックである場合がある。図６Ａおよび６Ｂには、隣接マクロブロックが４ＭＶである（すなわち、プレディクタＡが、現在のマクロブロックの上のマクロブロック内のブロック２の動きベクトルであり、プレディクタＣが、現在のマクロブロックのすぐ左のマクロブロック内のブロック１の動きベクトルである）と仮定した場合の候補動きベクトルの位置が示されている。隣接マクロブロックのいずれかが、１ＭＶマクロブロックである場合に、図５Ａおよび５Ｂに示された動きベクトル・プレディクタが、このマクロブロック全体の動きベクトル・プレディクタに採用される。図６Ｂに示されているように、このマクロブロックが行の最後のマクロブロックである場合には、プレディクタＢが、他の場合の右上マクロブロック内のブロック２からではなく、左上マクロブロックのブロック３からになる。
【００２２】
図７Ａ〜１０に、４ＭＶマクロブロックの４つの輝度ブロックのそれぞれの候補動きベクトル・プレディクタと見なされるブロックの位置を示す。図７Ａおよび７Ｂは、位置０のブロックに対する候補動きベクトル・プレディクタと見なされるブロックの位置を示す図であり、図８Ａおよび８Ｂは、位置１のブロックに対する候補動きベクトル・プレディクタと見なされるブロックの位置を示す図であり、図９は、位置２のブロックに対する候補動きベクトル・プレディクタと見なされるブロックの位置を示す図であり、図１０は、位置３のブロックに対する候補動きベクトル・プレディクタと見なされるブロックの位置を示す図である。やはり、隣接マクロブロックが１ＭＶマクロブロックである場合に、そのマクロブロックに対する動きベクトル・プレディクタが、そのマクロブロックのブロックに使用される。
【００２３】
マクロブロックが行の最初のマクロブロックである場合に、ブロック０のプレディクタＢは、その行の残りのブロック０と異なる形で処理される（図７Ａおよび７Ｂを参照されたい）。この場合に、プレディクタＢは、それ以外の場合の、現在のブロックの左上のマクロブロックのブロック３からではなく、現在のマクロブロックの真上のマクロブロックのブロック３からとられる。同様に、マクロブロックが行の最後のマクロブロックである場合に、ブロック１のプレディクタＢは、異なる形で処理される（図８Ａおよび８Ｂを参照されたい）。この場合に、プレディクタは、それ以外の場合の、現在のマクロブロックの右上のマクロブロックのブロック２からではなく、現在のマクロブロックの真上のマクロブロックのブロック２からとられる。一般に、マクロブロックが最初のマクロブロック列にある場合に、ブロック０および２のプレディクタＣは、０と等しくなるようにセットされる。
【００２４】
Ｂ．  従来のＷＭＶのエンコーダおよびデコーダでのインターレースＰフレームのコーディングおよびデコーディング  
従来のＷＭＶのデコーダおよびエンコーダは、フィールド・モードまたはフレーム・モードでエンコードされたマクロブロックあるいはスキップド・マクロブロックを収容含めることができ、インターレースＰフレームに対して４：１：１マクロブロック・フォーマットを使用し、決定は、一般に、マクロブロックごとに行われる。２つの動きベクトルが、各フィールド・コーディングされたマクロブロックに関連付けられ（フィールドごとに１つの動きベクトル）、１つの動きベクトルが、各フレーム・コーディングされたマクロブロックに関連付けられる。エンコーダは、垂直および水平の動きベクトル差分成分を含む動き情報を、潜在的に他のシグナリング情報に加えて、一緒にエンコードする。
【００２５】
図１１および図１２Ａ〜Ｂに、それぞれ、従来のＷＭＶのエンコーダおよびデコーダでのインターレースＰフレーム内のフレーム・コーディングされた４：１：１マクロブロックおよびフィールド・コーディングされた４：１：１マクロブロックに対する動きベクトル予測の候補プレディクタの例を示す。図１１に、インターレースＰフレーム内の内側位置（マクロブロック行の最初または最後のマクロブロックではなく、一番上の行内ではない）の現在のフレーム・コーディングされた４：１：１マクロブロックに対する候補プレディクタＡ、Ｂ、およびＣを示す。プレディクタは、これらのラベル付けされたＡ、Ｂ、およびＣ以外の異なる候補方向から得ることができる（例えば、現在のマクロブロックが行の最初のマクロブロックまたは最後のマクロブロックであるか、一番上の行にあるときなどの特別な場合に、いくつかのプレディクタがそのような場合に使用不能なので）。現在のフレーム・コーディングされたマクロブロックについて、プレディクタ候補は、隣接するマクロブロックがフィールド・コーディングであるか、またはフレーム・コーディングであるかに応じて異なる形で算出される。隣接するフレーム・コーディングされたマクロブロックについて、動きベクトルは、単純にプレディクタ候補として採用される。隣接するフィールド・コーディングされたマクロブロックについて、候補動きベクトルは、上フィールド動きベクトルおよび下フィールド動きベクトルの平均をとることによって決定される。
【００２６】
図１２Ａ〜Ｂに、フィールドの内側部分のフィールド・コーディングされた４：１：１マクロブロック内の現在のフィールドの候補プレディクタＡ、Ｂ、およびＣを示す。図１２Ａでは、現在のフィールドが、下フィールドであり、隣接するマクロブロックの下フィールド動きベクトルが、候補プレディクタとして使用される。図１２Ｂでは、現在のフィールドが、上フィールドであり、隣接するマクロブロックの上フィールド動きベクトルが、候補プレディクタとして使用される。したがって、現在のフィールド・コーディングされたマクロブロックのフィールドごとに、各フィールドの動きベクトル・プレディクタ候補の個数は、多くとも３つであり、各候補は、現在のフィールドと同一タイプのフィールド（例えば、上フィールドまたは下フィールド）から来る。やはり、現在のマクロブロックが行の最初のマクロブロックまたは最後のマクロブロックであるか、一番上の行にあるときに、いくつかのプレディクタがそのような場合に使用不能なので、様々な特別な場合（図示せず）が適用される。
【００２７】
プレディクタ候補のセットからプレディクタを選択するために、議論している従来のＷＭＶのエンコーダおよびデコーダは、ｍｅｄｉａｎ−ｏｆ−ｔｈｒｅｅアルゴリズムまたは４のｍｅｄｉａｎ−ｏｆ−ｆｏｕｒ アルゴリズムなど、異なる選択アルゴリズムを使用する。ｍｅｄｉａｎ−ｏｆ−ｔｈｒｅｅ予測のプロシージャを、図１３の擬似コード１３００に記載する。ｍｅｄｉａｎ−ｏｆ−ｆｏｕｒ予測のプロシージャを、図１４の擬似コード１４００に記載する。
【００２８】
ＩＶ．  双方向予測  
双方向予測フレーム（またはＢフレーム）は、Ｐフレームに使用される１つのアンカーではなく、基準（またはアンカー）フレームとしてソース・ビデオからの２つのフレームを使用する。通常のＢフレームのアンカー・フレームの中で、一方のアンカー・フレームは、時間的に過去からのフレームであり、もう１つのアンカー・フレームは、時間的に将来からのフレームである。図１５を参照すると、ビデオ・シーケンス内のＢフレーム１５１０は、時間的に前の基準フレーム１５２０および時間的に将来の基準フレーム１５３０を有する。Ｂフレームの使用は、より大きくビットレートを節約する（例えば、オクルージョンなどの、あるタイプの動きが存在する場合に）という点で、効率的な圧縮に関する利益を提供する。Ｂフレームを用いてエンコードされたビットストリームは、通常は、類似する視覚的品質をもたらしながらも、Ｂフレームなしでエンコードされたビットストリームより少ないビット数を使用する。Ｂフレームは、小さいデバイス・スペースで使用されるときに、より多くのオプションおよび柔軟性も提供する。例えば、デコーダは、Ｂフレームが一般に基準フレームとして使用されないので、Ｂフレームをデコードしないか表示しないことを選択することによって、スペース制約および時間制約に対処することができる。Ｂフレームを使用するビデオ・シーケンスのレートひずみ改善の推定値は、０から５０％までの範囲におよぶ。
【００２９】
Ｖ．  従来のＷＭＶのエンコーダおよびデコーダでのＢフレームのコーディングおよびデコーディング  
従来のＷＭＶのエンコーダおよびデコーダは、Ｂフレームを使用する。順方向予測フレーム（例えば、Ｐフレーム）のマクロブロックは、（順方向、従来のＩフレームまたはＰフレームからの）予測の１方向モードだけを有するが、Ｂフレームのマクロブロックは、５つの異なる予測モードすなわち、順方向（forword）、逆方向（backward）、直接（direct）、補間（interpolated）、およびイントラ（intra）を使用して予測することができる。エンコーダは、異なる予測モードを選択し、ビットストリーム内でこれをシグナリングする。例えば、議論している従来のＷＭＶエンコーダは、Ｂフレームの各マクロブロックに対して直接／非直接モード決定を示す圧縮されたビットプレーンをフレーム・レベルで送るが、非直接モード（順方向モード、逆方向モード、および補間モードなど）は、マクロブロック・レベルで示される。
【００３０】
順方向モードは、従来のＰフレーム予測に似ている。順方向モードでは、マクロブロックが、時間的に前のアンカーから導出される。逆方向モードでは、マクロブロックが、時間的に後続のアンカーから導出される。直接モードまたは補間モードで予測されたマクロブロックは、予測に順方向アンカーと逆方向アンカーの両方を使用する。直接モードおよび補間モードは、２つの基準フレームのピクセル値をマクロブロック・ピクセルの１セットに組み合わせるのに、次の式に従う切り上げ平均を使用する。  
平均ピクセル値＝（順方向補間された値＋逆方向補間された値＋１）＞＞１
【００３１】
Ａ．  同一位置の動きベクトルの分数コーディングおよびスケーリング  
議論している従来のＷＭＶのエンコーダおよびデコーダでは、エンコーダが、順方向アンカーの同一位置の動きベクトルをスケーリングすることによって、暗黙のうち（自動的に）に直接モード動きベクトルを導出する。このスケーリング動作は、アンカーに対する現在のＢフレームの時間的位置に依存する。基準ピクチャ（reference picture）の時間的位置をエンコードするために、エンコーダは、分数コーディングを使用する。
【００３２】
分数コーディングでは、エンコーダは、現在のＢフレームの時間的位置を、その２つのアンカーの間の距離の分数として明示的にコーディングする。変数ＢＦＲＡＣＴＩＯＮが、異なる分数を表すのに使用され、フレーム・レベルで送られる。分数は、０と１の間の離散値の限られたセットになる。直接モード動きベクトルについて、エンコーダおよびデコーダは、この分数を使用して、基準フレーム内の同一位置の動きベクトル（ＭＶ）をスケーリングし、これによって、次のスケーリング動作を実施することによって現在のＢフレームについての暗黙の直接モード動きベクトル（ＭＶFおよびＭＶB）を導出する。  
ＭＶF＝分数＊ＭＶ  
ＭＶB＝（分数−１）＊ＭＶ
【００３３】
図１６に、分数コーディングが、エンコーダが、周囲の基準フレームの間で動きを任意にスケーリングすることをどのようにして可能にするかを示す。Ｂフレーム１６２０でエンコードされている現在のマクロブロック１６１０のＭＶFおよびＭＶBを導出するために、エンコーダおよびデコーダは、分数コーディングを使用して、将来の基準フレーム１６３０内の対応するマクロブロックの動きベクトル（ＭＶ）をスケーリングする。図１６に示された例では、分数ｐおよびｑについて、ｐ＋ｑ＝１である。エンコーダおよびデコーダは、２つの暗黙の動きベクトルを使用して、前の基準フレーム１６４０および将来の基準フレーム１６３０内のマクロブロックをアドレッシングし、これらの平均を使用して、現在のマクロブロック１６１０を予測する。例えば、図１６で、ＭＶF＝（ｄｘ＊ｐ，ｄｙ＊ｐ）かつＭＶB＝（−ｄｘ＊ｑ，−ｄｙ＊ｑ）である。
【００３４】
図１７の表１７００は、ビットストリーム要素ＢＦＲＡＣＴＩＯＮの可変長コード（ＶＬＣ）テーブルである。表１７００に示された例では、３ビットのコードワードが、「短い」コードワードであり、７ビットのコードワードが、「長い」コードワードである。デコーダは、図１８に示された擬似コード１８００に従って、分数の分子および分母に基づいて、スケーリング係数を見つける。
【００３５】
スケーリング係数を決定したならば、デコーダは、それを使用して、同一位置のマクロブロック用の動きベクトルのｘ要素およびｙ要素をスケーリングする。後続アンカー・フレームがＰフレームであり（Ｉフレームについて、すべての動きベクトルが（０，０）であると仮定する）、同一位置のマクロブロックに、動きベクトル（ＭＶ＿Ｘ，ＭＶ＿Ｙ）が含まれると仮定すると、デコーダは、２つの動きベクトルを導出するが、その一方は、順方向（前の）アンカー・フレームを参照する（ＭＶ＿ＸF，ＭＶ＿ＹF）であり、他方は、逆方向（後の）アンカー・フレームを参照する（ＭＶ＿ＸB，ＭＶ＿ＹB）である。
【００３６】
デコーダは、図１９に示された擬似コード１９００に従ってスケーリングを実行する。擬似コード１９００の関数Ｓｃａｌｅ＿Ｄｉｒｅｃｔ＿ＭＶで、入力のＭＶ＿ＸおよびＭＶ＿Ｙは、将来の基準ピクチャの同一位置のマクロブロックからの動きベクトルのｘ要素およびｙ要素であり、その出力ＭＶ＿ＸF、ＭＶ＿ＹF、ＭＶ＿ＸB、およびＭＶ＿ＹBは、デコードされつつあるマクロブロックの順方向を指す動きベクトルおよび逆方向を指す動きベクトルのｘ要素およびｙ要素である。
【００３７】
Ｂ．  Ｂ／Ｉフレーム  
議論している従来のＷＭＶのエンコーダおよびデコーダは、プログレッシブ・コーディングおよびプログレッシブ・デコーディングにイントラＢフレーム（「Ｂ／Ｉフレーム」）も使用する。Ｂ／Ｉフレームは、基準フレームに依存しないという点で、Ｉフレームに似た形でコーディングされる。しかし、Ｉフレームと異なって、Ｂ／Ｉフレームは、キー・フレームではなく、他のフレームがアンカーとしてＢ／Ｉフレームを使用することは許可されない。
【００３８】
Ｃ．  インターレースＢフレーム  
議論している従来のＷＭＶのエンコーダおよびデコーダは、インターレースＢフレームも使用する。インターレースＢフレーム内のマクロブロックを、フィールド・コーディングまたはフレーム・コーディングすることができる。フレーム・コーディングされたマクロブロックは、１つ、２つ（例えば、補間モードの順方向動きベクトルおよび逆方向動きベクトル、直接モードの導出された順方向動きベクトルおよび逆方向動きベクトル）、または０個の動きベクトルを有することができ、フィールド・コーディングされたマクロブロックは、予測モードに応じて４つまでの動きベクトルを有することができる。例えば、直接モード・フィールド・コーディングされたマクロブロックでは、４つの暗黙の動きベクトルすなわち、上フィールドの順方向動きベクトルおよび逆方向動きベクトルならびに下フィールドの順方向動きベクトルおよび逆方向動きベクトルが導出される。
【００３９】
議論している従来のＷＭＶのエンコーダおよびデコーダは、インターレースＢフレームを使用するが、これらは、いくつかの重要な方法において制限されている。例えば、マクロブロックごとに１つのマクロブロック予測モード（例えば、直接モード、順方向モードなど）だけが許容され、４ＭＶコーディング（すなわち、マクロブロックのブロックごとに１つの動きベクトル）が使用されず、すべてのＢフレームのどの部分も、任意のフレームの動き補償のための基準とすることができない。もう１つの例として、議論している従来のＷＭＶのエンコーダおよびデコーダのインターレースのコーディングおよびデコーディング（インターレースＢフレームを含む）は、４：１：１マクロブロック・フォーマットだけを使用して実行される。
【００４０】
ＶＩ．  ビデオの圧縮および圧縮解除に関する標準規格  
従来のＷＭＶのエンコーダおよびデコーダのほかに、いくつかの国際標準規格が、ビデオの圧縮および圧縮解除に関係する。これらの標準規格に、Ｍｏｔｉｏｎ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ［「ＭＰＥＧ」］１、２、および４の標準規格と、国際電気通信連合（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｔｅｌｅｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｕｎｉｏｎ）［「ＩＴＵ」］からのＨ．２６１、Ｈ．２６２、Ｈ．２６３、およびＨ．２６４標準規格が含まれる。これらの国際標準規格でデジタル・ビデオ・シーケンスのデータ圧縮を達成するのに使用される主な方法の１つが、ピクチャの間の時間的冗長性を減らすことである。これらの有名な圧縮方式（ＭＰＥＧ−１、ＭＰＥＧ−２、ＭＰＥＧ−４、Ｈ．２６１、Ｈ．２６３など）は、動き推定および動き補償を使用する。例えば、現在のフレームを、均一な正方形領域（例えば、ブロックおよび／またはマクロブロック）に分割する。各現在の領域に対して一致する領域を、現在の領域の動きベクトル情報を送ることによって指定する。動きベクトルは、現在の領域のプレディクタとして使用されることになる、前にコーディングされた（かつ、再構成された）フレーム内の領域の位置を指し示す。現在の領域と基準フレーム内の領域の間の、誤差信号と称するピクセルごとの差を導出する。この誤差信号は、通常、オリジナル信号より低いエントロピーを有する。したがって、この情報を、より低いレートでエンコードすることができる。従来のＷＭＶのエンコーダおよびデコーダと同様に、動きベクトル値が、しばしば、空間的に周囲の動きベクトルと相関するので、動きベクトル情報を表すのに使用されるデータの圧縮を、現在の動きベクトルと前にコーディングされた隣接する動きベクトルに基づくプレディクタとの間の差分をコーディングすることによって達成することができる。
【００４１】
いくつかの国際標準規格に、インターレース・ビデオ・フレームでの動き推定および動き補償が記載されている。Ｈ．２６２標準規格は、インターレース・ビデオ・フレームを単一フレームまたは２つのフィールドとしてエンコードすることを可能にし、ここで、フレーム・エンコーディングまたはフィールド・エンコーディングを、フレームごとに適応式に選択することができる。Ｈ．２６２標準規格に、フィールド・ベース予測が記載されており、このフィールド・ベース予測は、基準フレームの１つのフィールドだけを使用する予測モードである。Ｈ．２６２標準規格に、デュアル・プライム予測（dual-prime prediction）も記載されており、このデュアル・プライム予測は、２つの順方向フィールド・ベース予測がインターレースＰピクチャの１６×１６ブロックについて平均される予測モードである。非特許文献１に、インターレース・ビデオ・フレームの現在のフィールドのマクロブロックの動き補償に使用される２つの基準フィールド（two reference fields）の間の選択を含む「フィールド予測」が記載されている。非特許文献２に、動きベクトルの予測および再構成が記載されており、ここで、所与のマクロブロックの再構成された動きベクトルは、その後にエンコード／デコードされるマクロブロックの動きベクトル・プレディクタになる。そのような動きベクトル予測は、多くの場合に、インターレース・ビデオ・フレームのフィールドのマクロブロックの動きベクトルを適切に予測することができない。
【００４２】
さらに、非特許文献１に、Ｂピクチャの「フィールド予測」および「フレーム予測」が記載されている。フィールド予測およびフレーム予測では、予測が、Ｂピクチャについて、２つの最も最近に再構成された基準フレームを使用して（他の中間のＢピクチャを省略して）実行され、これらの基準フレームは、２つのフィールドまたは単一フレームのいずれかとしてコーディングされている場合がある。
【先行技術文献】
【特許文献】
【００４３】
【特許文献１】米国特許出願第１０／６２２,３７８号
【特許文献２】米国特許出願第１０／８５７,４７３号
【特許文献３】米国仮特許出願第６０／５０１,０８１号  "Video Encoding and Decoding Tools and Techniques," filed September 7,2003
【特許文献４】米国特許出願第１０／３２１,４１５号
【非特許文献】
【００４４】
【非特許文献１】Section 7.6 of the H.262 standard
【非特許文献２】Section 7.6.3 of the H.262 standard
【発明の概要】
【発明が解決しようとする課題】
【００４５】
デジタル・ビデオに対するビデオ圧縮およびビデオ圧縮解除のクリティカルな重要さに対して、ビデオ圧縮およびビデオ圧縮解除が十分に開発された分野であることは驚くべきことでない。しかし、従来のビデオ圧縮技法およびビデオ圧縮解除技法の利益が何であれ、これらは、次に説明する技法およびツールの有意性を有しない。
【００４６】
要約すると、この詳細な説明は、双方向予測インターレース・ビデオ・フレーム（例えば、インターレースＢフィールド、インターレースＢフレーム）をエンコードし、デコードする様々な技法およびツールを対象とする。説明される技法およびツールは、レート／ひずみ性能を改善し、より少ないＣＰＵリソースを有するデバイス（例えば、より小さいフォーム・ファクタを有するデバイス内）のためのよりよいサポートを容易にする。
【課題を解決するための手段】
【００４７】
インターレースＢピクチャをコーディングし、かつ／またはデコードするための、説明される技法およびツールのうちの１つまたは複数を実装する説明される実施形態は、限定しないが、以下を含む。
【００４８】
一態様で、インターレースＢフレームに対して、エンコーダ／デコーダは、インターレースＢフレームのフィールド・コーディングされたマクロブロック内で、フィールドの間で予測モードを切り替える。例えば、エンコーダ／デコーダは、フィールド・コーディングされたマクロブロック内で、上フィールドの順方向予測と下フィールドの逆方向予測のどちらかに切り替える。同一のフィールド・コーディングされたマクロブロック内での順方向予測モードと逆方向予測モードの切替は、インターレースＢフレームの異なる部分の効率的な予測モードを見つけるためのより高い柔軟性を可能にする。
【００４９】
もう１つの態様で、インターレースＢフレームについて、エンコーダ／デコーダは、前にデコードされた、時間的に後のアンカーの同一位置のマクロブロックについての上フィールドおよび下フィールドのそれぞれについて多くとも１つの代表的な動きベクトルを選択することによって、現在のマクロブロックの直接モード動きベクトルを算出する。例えば、この選択は、現在のインターレースＢフレームのマクロブロックをコーディングするモード（例えば、１ＭＶモード、２フィールドＭＶモードなど）に少なくとも部分的に基づいて実行される。
【００５０】
もう１つの態様で、インターレースＢフィールドまたはインターレースＢフレームについて、エンコーダ／デコーダは、４ＭＶコーディングを使用する。例えば、４ＭＶは、１方向予測モード（順方向モードおよび逆方向モード）で使用されるが、他の使用可能な予測モード（例えば、直接、補間）では使用されない。４ＭＶを使用することによって、インターレースＢフィールドおよびインターレースＢフレームのより正確な動き補償が可能になり、４ＭＶを順方向モードおよび逆方向モードに制限することによって、コーディング・オーバーヘッドが減り、直接モードおよび補間モードなどのモードと４ＭＶを組み合わせることに関連するデコーディングの複雑さが回避される。
【００５１】
もう１つの態様で、インターレースＢフィールドまたはインターレースＢフレームについて、順方向動きベクトルは、順方向動きベクトル・バッファからの前に再構成された（または推定された）順方向動きベクトルを使用してエンコーダ／デコーダによって予測され、逆方向動きベクトルは、逆方向動きベクトル・バッファからの前に再構成された（または推定された）逆方向動きベクトルを使用して予測される。その結果の動きベクトルが、対応するバッファに追加される。動きベクトル・バッファ内の穴（holes）は、推定された動きベクトル値によって埋めることができる。例えば、インターレースＢフレームについて、動きベクトルの予測に順方向予測が使用され、その動きベクトルが順方向動きベクトル・バッファに追加されるときに、逆方向動きベクトル・バッファ内の対応する位置が、プレディクタとして逆方向動きベクトルだけを使用して予測された動きベクトルになったものを使用して埋められる（「穴埋め（Hole-filling）」）。もう１つの例として、インターレースＢフィールドについて、穴埋めのために異なる極性の動きベクトル（例えば、「同一極性」または「反対極性」）のどちらかを選択するために、エンコーダ／デコーダは、優勢極性フィールド動きベクトルを選択する。アンカーと現在のフレームの間の距離が、様々な構文要素を使用して算出され、算出された距離が、基準フィールド動きベクトルをスケーリングするのに使用される。別々の動きベクトル・バッファおよびその別々の動きベクトル・バッファ内の穴埋めによって、インターレースＢフィールドおよびインターレースＢフレームに対するより正確な動きベクトル予測が可能になる。
【００５２】
もう１つの態様で、インターレースＢフィールドについて、エンコーダ／デコーダは、「自己参照」フレームを使用する。例えば、現在のフレーム内の第２Ｂフィールドが、動き補償予測で現在のフレームの第１Ｂフィールドを参照する。あるフレームの第１Ｂフィールドがそのフレームの第２Ｂフィールドの基準として働くことを可能にすることによって、第２Ｂフィールドのより正確な予測が可能になると同時に、現在のフレーム内にＢフィールドを有することの時間的スケーラビリティの利益も保たれる。
【００５３】
もう１つの態様で、インターレースＢフィールドについて、エンコーダは、インターレースＢフィールド内の１つまたは複数のマクロブロックについて、予測モードが順方向または非順方向のどちらであるかを示す２値情報を送る。例えば、エンコーダは、圧縮されたビットプレーン内のＢフィールド・レベルで順方向／非順方向決定情報を送る。順方向／非順方向予測モード決定情報を圧縮されたビットプレーン内でＢフィールド・レベルで送ることによって、予測モード・コーディングのコーディング・オーバーヘッドを減らすことができる。デコーダは、対応するデコーディングを実行する。
【００５４】
もう１つの態様で、インターレースＢフィールドについて、エンコーダ／デコーダは、次のアンカー・ピクチャの対応するフィールド内の対応するマクロブロックが４つの動きベクトルを使用してコーディングされている場合に、優勢極性を選択する論理を使用して直接モード動きベクトルを選択する。例えば、対応するマクロブロックの同一極性の動きベクトルが、それと反対極性の動きベクトルに数で優る場合に、エンコーダ／デコーダは、同一極性の動きベクトルの中央値（median）を算出して、直接モード動きベクトル導出用の動きベクトルを得る。この選択プロセスは、４ＭＶマクロブロックを有するアンカーを有するインターレースＢフィールドに対する正確な直接モード動きベクトルの導出を可能にする。
【００５５】
様々な技法およびツールを、組み合わせてまたは独立に使用することができる。
【００５６】
追加の特徴および利点は、添付図面を参照して進行する個々の実施形態からなる以下の詳細な説明から明白になるでしょう。
【図面の簡単な説明】
【００５７】
【図１】従来技術によるビデオ・エンコーダでの動き推定を示す図である。
【図２】従来技術によるビデオ・エンコーダでの８×８ブロックの予測残差のブロック・ベース圧縮を示す図である。
【図３】従来技術によるビデオ・エンコーダでの８×８ブロックの予測残差のブロック・ベース圧縮解除を示す図である。
【図４】従来技術によるインターレースフレームを示す図である。
【図５Ａ】従来技術によるプログレッシブＰフレーム内の１ＭＶマクロブロック用の候補動きベクトル・プレディクタのマクロブロックの位置を示す図である。
【図５Ｂ】従来技術によるプログレッシブＰフレーム内の１ＭＶマクロブロック用の候補動きベクトル・プレディクタのマクロブロックの位置を示す図である。
【図６Ａ】従来技術によるミックスド１ＭＶ／４ＭＶプログレッシブＰフレーム内の１ＭＶマクロブロック用の候補動きベクトル・プレディクタのブロックの位置を示す図である。
【図６Ｂ】従来技術によるミックスド１ＭＶ／４ＭＶプログレッシブＰフレーム内の１ＭＶマクロブロック用の候補動きベクトル・プレディクタのブロックの位置を示す図である。
【図７Ａ】従来技術によるミックスド１ＭＶ／４ＭＶプログレッシブＰフレーム内の４ＭＶマクロブロック内の様々な位置のブロック用の候補動きベクトル・プレディクタのブロックの位置を示す図である。
【図７Ｂ】従来技術によるミックスド１ＭＶ／４ＭＶプログレッシブＰフレーム内の４ＭＶマクロブロック内の様々な位置のブロック用の候補動きベクトル・プレディクタのブロックの位置を示す図である。
【図８Ａ】従来技術によるミックスド１ＭＶ／４ＭＶプログレッシブＰフレーム内の４ＭＶマクロブロック内の様々な位置のブロック用の候補動きベクトル・プレディクタのブロックの位置を示す図である。
【図８Ｂ】従来技術によるミックスド１ＭＶ／４ＭＶプログレッシブＰフレーム内の４ＭＶマクロブロック内の様々な位置のブロック用の候補動きベクトル・プレディクタのブロックの位置を示す図である。
【図９】従来技術によるミックスド１ＭＶ／４ＭＶプログレッシブＰフレーム内の４ＭＶマクロブロック内の様々な位置のブロック用の候補動きベクトル・プレディクタのブロックの位置を示す図である。
【図１０】従来技術によるミックスド１ＭＶ／４ＭＶプログレッシブＰフレーム内の４ＭＶマクロブロック内の様々な位置のブロック用の候補動きベクトル・プレディクタのブロックの位置を示す図である。
【図１１】従来技術によるインターレースＰフレーム内の現在のフレーム・コーディングされたマクロブロック用の候補動きベクトル・プレディクタを示す図である。
【図１２Ａ】従来技術によるインターレースＰフレーム内の現在のフィールド・コーディングされたマクロブロック用の候補動きベクトル・プレディクタを示す図である。
【図１２Ｂ】従来技術によるインターレースＰフレーム内の現在のフィールド・コーディングされたマクロブロック用の候補動きベクトル・プレディクタを示す図である。
【図１３】従来技術による３の中央値算出（median-of-3 calculations）を実行する擬似コードを示すコード図である。
【図１４】従来技術による４の中央値算出（median-of-4 calculations）を実行する擬似コードを示すコード図である。
【図１５】従来技術による過去および将来の基準フレームと共にＢフレームを示す図である。
【図１６】従来技術による分数コーディングを用いる直接モード予測を示す図である。
【図１７】従来技術によるビットストリーム要素ＢＦＲＡＣＴＩＯＮのＶＬＣテーブルを示す図である。
【図１８】従来技術による直接モード予測での同一位置のマクロブロック用の動きベクトルをスケーリングするためのスケーリング係数を見つける擬似コードを示すコード表である。
【図１９】従来技術による、スケーリング係数に従って同一位置のマクロブロック内の動きベクトルのｘ要素およびｙ要素をスケーリングする擬似コードを示すコード表である。
【図２０】複数の説明される実施形態を実装できる適切なコンピューティング環境を示すブロック図である。
【図２１】複数の説明される実施形態を実装できる一般化されたビデオエンコーダ・システムを示すブロック図である。
【図２２】複数の説明される実施形態を実装できる一般化されたビデオデコーダ・システムを示すブロック図である。
【図２３】複数の説明される実施形態で使用されるマクロブロック・フォーマットを示す図である。
【図２４Ａ】上フィールドおよび下フィールドの交番する走査線を示すインターレース・ビデオ・フレームの一部を示す図である。
【図２４Ｂ】フレームとしてのエンコーディング／デコーディングのために編成されたインターレース・ビデオ・フレームを示す図である。
【図２４Ｃ】フィールドとしてのエンコーディング／デコーディングのために編成されたインターレース・ビデオ・フレームを示す図である。
【図２５】２つの基準フィールドを有するインターレースＰフィールドを示す図である。
【図２６】２つの基準フィールドを有するインターレースＰフィールドを示す図である。
【図２７】最も最近の許容可能な基準フィールドを使用するインターレースＰフィールドを示す図である。
【図２８】最も最近の許容可能な基準フィールドを使用するインターレースＰフィールドを示す図である。
【図２９】２番目に最近の許容可能な基準フィールドを使用するインターレースＰフィールドを示す図である。
【図３０】２番目に最近の許容可能な基準フィールドを使用するインターレースＰフィールドを示す図である。
【図３１】現在のフィールド極性および基準フィールド極性の異なる組合せに関する、動きベクトルの垂直成分と対応する空間位置の垂直成分との間の関係を示す図である。
【図３２】現在マクロブロックの３つの候補動きベクトル・プレディクタの２セットを示す図である。
【図３３Ａ】２つの基準フィールド、インターレースＰフィールドまたはインターレースＢフィールド内の動きベクトル・プレディクタを算出する擬似コードを示すコード表である。
【図３３Ｂ】２つの基準フィールド、インターレースＰフィールドまたはインターレースＢフィールド内の動きベクトル・プレディクタを算出する擬似コードを示すコード表である。
【図３３Ｃ】２つの基準フィールド、インターレースＰフィールドまたはインターレースＢフィールド内の動きベクトル・プレディクタを算出する擬似コードを示すコード表である。
【図３３Ｄ】２つの基準フィールド、インターレースＰフィールドまたはインターレースＢフィールド内の動きベクトル・プレディクタを算出する擬似コードを示すコード表である。
【図３３Ｅ】２つの基準フィールド、インターレースＰフィールドまたはインターレースＢフィールド内の動きベクトル・プレディクタを算出する擬似コードを示すコード表である。
【図３３Ｆ】２つの基準フィールド、インターレースＰフィールドまたはインターレースＢフィールド内の動きベクトル・プレディクタを算出する擬似コードを示すコード表である。
【図３４Ａ】別のフィールドからプレディクタを導出するためにあるフィールドからのプレディクタをスケーリングする擬似コードを示すコード表である。
【図３４Ｂ】別のフィールドからプレディクタを導出するためにあるフィールドからのプレディクタをスケーリングする擬似コードを示すコード表である。
【図３５】異なる基準フレーム距離に関連付けられたスケーリング動作値を示す表である。
【図３６】異なる基準フレーム距離に関連付けられたスケーリング動作値を示す表である。
【図３７】インターレースＰフレームの２フィールドＭＶマクロブロック内の輝度ブロック用の動きベクトルおよびクロミナンス・ブロック用の導出された動きベクトルを示す図である。
【図３８】インターレースＰフレームの４フレームＭＶマクロブロック内の、４つの輝度ブロック用のそれぞれの異なる動きベクトルおよび４つのクロミナンス・サブブロック用のそれぞれの導出された動きベクトルを示す図である。
【図３９】インターレースＰフレームにおける４フィールドＭＶマクロブロック内の輝度ブロック用の動きベクトルおよびクロミナンス・ブロック用の導出された動きベクトルを示す図である。
【図４０Ａ】インターレースＰフレームの現在のマクロブロックの候補プレディクタを示す図である。
【図４０Ｂ】インターレースＰフレームの現在のマクロブロックの候補プレディクタを示す図である。
【図４１】異なる予測モードを使用してインターレースＢフレーム内のフィールド・コーディングされたマクロブロック内の個々のフィールド用の動きベクトルを予測する技法を示す流れ図である。
【図４２】インターレースＢフレームのマクロブロック用の直接モード動きベクトルを算出する技法を示す流れ図である。
【図４３】インターレースＢフレームのマクロブロック用の直接モード動きベクトルの算出に使用される、以前にデコードされた時間的に後続のアンカー・フレームの同一位置のマクロブロックのブロック用のバッファリングされた動きベクトルを示す図である。
【図４４】順方向動きベクトル・バッファおよび／または逆方向動きベクトル・バッファを使用してインターレースＢピクチャ内の現在のマクロブロック用の動きベクトルを予測する技法を示す流れ図である。
【図４５】マクロブロック用の動きベクトルを予測するための順方向動きベクトル・バッファおよび逆方向動きベクトル・バッファ内の動きベクトルを示す図である。
【図４６】順方向動きベクトル・バッファおよび逆方向動きベクトル・バッファ内の再構成されたマクロブロックの上フィールド動きベクトルおよび下フィールド動きベクトルを示す図である。
【図４７】インターレースＢフィールド動きベクトル予測での実際の値のバッファリングおよび穴埋めの極性選択プロセスを説明する擬似コードを示すコード表である。
【図４８Ａ】逆方向予測されるインターレースＢフィールドのもう１つのフィールドからプレディクタを導出するためにあるフィールドからのプレディクタをスケーリングする擬似コードを示すコード表である。
【図４８Ｂ】逆方向予測されるインターレースＢフィールドのもう１つのフィールドからプレディクタを導出するためにあるフィールドからのプレディクタをスケーリングする擬似コードを示すコード表である。
【図４９】第１のインターレースＢフィールドの異なる基準フレーム距離に関連するスケーリング動作値を示す表である。
【図５０Ａ】インターレースＢフィールドの基準フィールドを示す図である。
【図５０Ｂ】インターレースＢフィールドの基準フィールドを示す図である。
【図５１】１つまたは複数のビットプレーン・コーディング・モードを有するビデオ・エンコーダでインターレースＢフィールドのマクロブロックの順方向／非順方向予測モード決定情報をエンコードする技法を示す流れ図である。
【図５２】１つまたは複数のビットプレーン・コーディング・モードを有するビデオ・エンコーダによってエンコードされた、インターレースＢフィールドのマクロブロックの順方向／非順方向予測モード決定情報をデコードする技法を示す流れ図である。
【図５３】インターレースＢフィールド内の直接モード動きベクトルの基礎として使用される動きベクトルの選択プロセスを説明する擬似コードを示すコード表である。
【図５４】組み合わされた実装形態でのインターレースＢフィールドまたはインターレースＢＩフィールドのフレーム・レイヤ・ビットストリーム構文を示す図である。
【図５５】組み合わされた実装形態でのインターレースＢフィールドのフィールド・レイヤ・ビットストリーム構文を示す図である。
【図５６】組み合わされた実装形態でのインターレースＢＩフィールドのフィールド・レイヤ・ビットストリーム構文を示す図である。
【図５７】組み合わされた実装形態でのインターレースＢフィールドのマクロブロックのマクロブロック・レイヤ・ビットストリーム構文を示す図である。
【図５８】組み合わされた実装形態でのインターレースＢＩフィールドのマクロブロックのマクロブロック・レイヤ・ビットストリーム構文を示す図である。
【図５９】組み合わされた実装形態でのインターレースＢフレームのフレーム・レイヤ・ビットストリーム構文を示す図である。
【図６０】組み合わされた実装形態でのインターレースＢフレームのマクロブロックのマクロブロック・レイヤ・ビットストリーム構文を示す図である。
【図６１Ａ】組み合わされた実装形態で動きベクトル差分および優勢／非優勢プレディクタ情報をデコードする擬似コードを示すコード表である。
【図６１Ｂ】組み合わされた実装形態で動きベクトル差分および優勢／非優勢プレディクタ情報をデコードする擬似コードを示すコード表である。
【図６２Ａ】組み合わされた実装形態で２つの基準インターレースＰフィールド内の動きベクトル・プレディクタを算出する擬似コードを示すコード表である。
【図６２Ｂ】組み合わされた実装形態で２つの基準インターレースＰフィールド内の動きベクトル・プレディクタを算出する擬似コードを示すコード表である。
【図６２Ｃ】組み合わされた実装形態で２つの基準インターレースＰフィールド内の動きベクトル・プレディクタを算出する擬似コードを示すコード表である。
【図６２Ｄ】組み合わされた実装形態で２つの基準インターレースＰフィールド内の動きベクトル・プレディクタを算出する擬似コードを示すコード表である。
【図６２Ｅ】組み合わされた実装形態で２つの基準インターレースＰフィールド内の動きベクトル・プレディクタを算出する擬似コードを示すコード表である。
【図６２Ｆ】組み合わされた実装形態で２つの基準インターレースＰフィールド内の動きベクトル・プレディクタを算出する擬似コードを示すコード表である。
【図６３】組み合わされた実装形態でインターレースＢフィールドの基準フィールドを決定する擬似コードを示すコード表である。
【図６４】組み合わされた実装形態でインターレースＰフレームの１ＭＶマクロブロック用の候補動きベクトルを集める擬似コードを示すコード・表である。
【図６５】組み合わされた実装形態でインターレースＰフレームの４フレームＭＶマクロブロック用の候補動きベクトルを集める擬似コードを示すコード表である。
【図６６】組み合わされた実装形態でインターレースＰフレームの４フレームＭＶマクロブロック用の候補動きベクトルを集める擬似コードを示すコード表である。
【図６７】組み合わされた実装形態でインターレースＰフレームの４フレームＭＶマクロブロック用の候補動きベクトルを集める擬似コードを示すコード表である。
【図６８】組み合わされた実装形態でインターレースＰフレームの４フレームＭＶマクロブロック用の候補動きベクトルを集める擬似コードを示すコード表である。
【図６９】組み合わされた実装形態でインターレースＰフレームの２フィールドＭＶマクロブロック用の候補動きベクトルを集める擬似コードを示すコード表である。
【図７０】組み合わされた実装形態でインターレースＰフレームの２フィールドＭＶマクロブロック用の候補動きベクトルを集める擬似コードを示すコード表である。
【図７１】組み合わされた実装形態でインターレースＰフレームの４フィールドＭＶマクロブロック用の候補動きベクトルを集める擬似コードを示すコード表である。
【図７２】組み合わされた実装形態でインターレースＰフレームの４フィールドＭＶマクロブロック用の候補動きベクトルを集める擬似コードを示すコード表である。
【図７３】組み合わされた実装形態でインターレースＰフレームの４フィールドＭＶマクロブロック用の候補動きベクトルを集める擬似コードを示すコード表である。
【図７４】組み合わされた実装形態でインターレースＰフレームの４フィールドＭＶマクロブロック用の候補動きベクトルを集める擬似コードを示すコード表である。
【図７５】組み合わされた実装形態でインターレースＰフレームのフレーム動きベクトルの動きベクトル・プレディクタを算出する擬似コードを示すコード表である。
【図７６】組み合わされた実装形態でインターレースＰフレームのフィールド動きベクトルの動きベクトル・プレディクタを算出する擬似コードを示すコード表である。
【図７７Ａ】組み合わされた実装形態でインターレースＰフレームおよびインターレースＢフレームの動きベクトル差分をデコードする擬似コードを示すコード表である。
【図７７Ｂ】組み合わされた実装形態でインターレースＰフレームおよびインターレースＢフレームの動きベクトル差分をデコードする擬似コードを示すコード表である。
【図７８】組み合わされた実装形態でインターレースＰフレームのクロマ動きベクトルを導出する擬似コードを示すコード表である。
【図７９Ａ】インターレースＢフィールドのマクロブロックの順方向／非順方向予測モード決定情報のＮｏｒｍ−６ビットプレーン・コーディング・モードおよびＤｉｆｆ−６ビットプレーン・コーディング・モードのタイルを示す図である。
【図７９Ｂ】インターレースＢフィールドのマクロブロックの順方向／非順方向予測モード決定情報のＮｏｒｍ−６ビットプレーン・コーディング・モードおよびＤｉｆｆ−６ビットプレーン・コーディング・モードのタイルを示す図である。
【図７９Ｃ】インターレースＢフィールドのマクロブロックの順方向／非順方向予測モード決定情報のＮｏｒｍ−６ビットプレーン・コーディング・モードおよびＤｉｆｆ−６ビットプレーン・コーディング・モードのタイルを示す図である。
【発明を実施するための形態】
【００５８】
本願は、インターレース・ビデオの効率的な圧縮および圧縮解除の技法およびツールに関する。説明される様々な実施形態で、ビデオ・エンコーダおよびビデオ・デコーダは、双方向予測インターレース・ビデオ・フレームをエンコードし、デコードする技法と、異なるレイヤまたはレベル（例えば、シーケンス・レベル、フレーム・レベル、フィールド・レベル、マクロブロック・レベル、および／またはブロック・レベル）を含むビットストリーム・フォーマットまたはビットストリーム構文に関して使用される対応するシグナリング技法を組み込む。
【００５９】
本明細書に記載の実装に対しては様々な代替案が可能である。例えば、流れ図を参照して説明される技法は、流れ図に示されたステージの順序付けを変更すること、あるステージを繰り返すか省略することなどによって、変更することができる。もう１つの例として、いくつかの実装を、特定のマクロブロック・フォーマットに関して説明するが、他のフォーマットも使用することができる。さらに、双方向予測に関して説明する技法およびツールが、他のタイプの予測に適用可能である場合もある。
【００６０】
様々な技法およびツールを、組み合わせてまたは独立に使用することができる。個々実施形態は、説明される技法およびツールのうちの１つまたは複数を実装する。本明細書に記載のいくつかの技法およびツールは、ビデオ・エンコーダまたはビデオ・デコーダで、あるいはビデオ・エンコーディングまたはビデオ・デコーディングに特に制限されない他のシステムで、使用することができる。
【００６１】
Ｉ．コンピューティング環境
図２０は、説明される実施形態のいくつかを実装できる適切なコンピューティング環境２０００の一般化された例を示している。この技法およびツールは様々な汎用のまたは特殊目的のコンピューティング環境に実装することができるので、コンピューティング環境２０００は、使用または機能性の範囲に関する制限を提案することを意図されたものではない。
【００６２】
図２０を参照すると、コンピューティング環境２０００に、少なくとも１つの処理ユニット２０１０およびメモリ２０２０が含まれる。図２０では、この最も基本的な構成２０３０が、破線の中に含まれる。処理ユニット２０１０は、コンピュータ実行可能命令を実行し、実際のプロセッサまたは仮想プロセッサとすることができる。マルチ・プロセッシング・システムでは、処理能力を高めるために、複数の処理ユニットがコンピュータ実行可能命令を実行する。メモリ２０２０は、揮発性メモリ（例えば、レジスタ、キャッシュ、ＲＡＭ）、不揮発性メモリ（例えば、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリ）、またはこの２つのある組合せとすることができる。メモリ２０２０は、インターレース・ビデオ・フレームの双方向予測を用いるビデオ・エンコーダまたはビデオ・デコーダを実装するソフトウェア２０８０を格納する。
【００６３】
コンピューティング環境は、さらなる機能（features）を有することができる。例えば、コンピューティング環境２０００に、ストレージ２０４０、１つまたは複数の入力デバイス２０５０、１つまたは複数の出力デバイス２０６０、および１つまたは複数の通信接続２０７０が含まれる。バス、コントローラ、またはネットワークなどの相互接続機構（図示せず）が、コンピューティング環境２０００の構成要素を相互接続する。通常、オペレーティング・システム・ソフトウェア（図示せず）が、コンピューティング環境２０００内で実行される他のソフトウェアのオペレーティング環境を提供し、コンピューティング環境２０００の構成要素のアクティビティを調整する。
【００６４】
ストレージ２０４０は、リムーバブルまたはノン・リムーバブルとすることができ、磁気ディスク、磁気テープ、磁気カセット、ＣＤ−ＲＯＭ、ＤＶＤ、または情報を格納するのに使用でき、コンピューティング環境２０００内でアクセスできる任意の他の媒体が含まれる。ストレージ２０４０は、ビデオ・エンコーダまたはビデオ・デコーダを実装するソフトウェア２０８０の命令を格納する。
【００６５】
入力デバイス２０５０は、キーボード、マウス、ペン、またはトラック・ボールなどの接触入力デバイス、音声入力デバイス、スキャニング・デバイス、またはコンピューティング環境２０００に入力を提供する別のデバイスとすることができる。オーディオ・エンコーディングまたはビデオ・エンコーディングのために、入力デバイス２０５０を、サウンド・カード、ビデオ・カード、ＴＶチューナ・カード、またはアナログ形式もしくはビデオ形式でアナログ入力もしくはビデオ入力を受け入れる類似するデバイス、もしくはオーディオ・サンプルまたはビデオ・サンプルをコンピューティング環境２０００に読み取るＣＤ−ＲＯＭまたはＣＤ−ＲＷとすることができる。出力デバイス２０６０は、ディスプレイ、プリンタ、スピーカ、ＣＤライタ、またはコンピューティング環境２０００から出力を提供する別のデバイスとすることができる。
【００６６】
通信接続２０７０は、通信媒体を介する別のコンピューティング・エンティティへの通信を可能にする。通信媒体は、変調されたデータ信号内でコンピュータ実行可能命令、オーディオもしくはビデオの入力もしくは出力、または他のデータなどの情報を伝える。変調されたデータ信号とは、その信号内で情報をエンコードする形でその特性の１つまたは複数を設定または変更された信号である。制限ではなく例として、通信媒体に、電気、光、ＲＦ、赤外線、音響、または他の担体を用いて実装された有線または無線の技法が含まれる。
【００６７】
本技法およびツールは、コンピュータ可読媒体の全般的なコンテクストで説明することができる。コンピュータ可読媒体は、コンピューティング環境内でアクセスできるすべての使用可能な媒体である。制限ではなく例として、コンピューティング環境２０００に関して、コンピュータ可読媒体に、メモリ２０２０、ストレージ２０４０、通信媒体、および上記のいずれかの組合せが含まれる。
【００６８】
本技法およびツールは、プログラム・モジュールに含まれるものなど、コンピューティング環境内でターゲットの実際のプロセッサまたは仮想プロセッサ上で実行されるコンピュータ実行可能命令の全般的なコンテクストで説明することができる。一般に、プログラム・モジュールには、特定のタスクを実行するか特定の抽象データ型を実装する、ルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造などが含まれる。プログラム・モジュールの機能性は、様々な実施形態での要求に従って、プログラム・モジュールの間で組み合わせるか分割することができる。プログラム・モジュールのコンピュータ実行可能命令は、ローカル・コンピューティング環境または分散コンピューティング環境内で実行することができる。
【００６９】
提示のために、この詳細な説明で、コンピューティング環境内のコンピュータ動作を説明するのに、「推定する」、「補償する」、「予測する」、および「適用する」などの用語を使用する。これらの用語が、コンピュータによって実行される動作に関する高水準の抽象化であり、人間によって実行される動作と混同されてはならない。これらの用語に対応する実際のコンピュータ動作は、実装に依存して変化する。
【００７０】
ＩＩ．  一般化されたビデオ・エンコーダおよびビデオ・デコーダ
図２１は、説明される実施形態のいくつか共に実装できる一般化されたビデオ・エンコーダ２１００のブロック図である。図２２は、説明される実施形態のいくつかを実装できる一般化されたビデオ・デコーダ２２００のブロック図である。
【００７１】
エンコーダ２１００内のモジュールとデコーダ２２００内のモジュールの間に示された関係は、エンコーダおよびデコーダ内の情報の全般的な流れを示し、他の関係は、図を単純にするために示されていない。具体的に言うと、図２１および２２には、通常、ビデオ・シーケンス、ピクチャ、マクロブロック、ブロックなどに使用される、エンコーダ・セッティング、モード、テーブルなどを示すサイド情報が示されていない。そのようなサイド情報は、通常はサイド情報のエントロピー・コーディングの後に、出力ビットストリーム内で送られる。出力ビットストリームのフォーマットは、Ｗｉｎｄｏｗｓ（登録商標）Ｍｅｄｉａ  Ｖｉｄｅｏバージョン９フォーマットまたは他のフォーマットとすることができる。
【００７２】
エンコーダ２１００およびデコーダ２２００は、ビデオ・ピクチャを処理し、このビデオ・ピクチャは、ビデオ・フレーム、ビデオ・フィールド、またはフレームとフィールドの組合せとすることができる。ピクチャ・レベルおよびマクロブロック・レベルでのビットストリーム構文およびセマンティクスは、フレームまたはフィールドのどちらが使用されているかに依存する場合がある。マクロブロック編成および全体的なタイミングに対する変更もある場合がある。エンコーダ２１００およびデコーダ２２００は、ブロック・ベースであり、各マクロブロックに、４つの８×８輝度ブロック（時々１つの１６×１６マクロブロックとして扱われる）および２つの８×８クロミナンス・ブロックが含まれる形の、フォーマットに４：２：０マクロブロック・フォーマットを使用する。フィールドについて、同一のまたは異なるマクロブロックの編成およびフォーマットを使用することができる。８×８ブロックを、さらに、異なるステージで、例えば周波数変換ステージおよびエントロピー・エンコーディング・ステージで副分割することができる。ビデオ・フレーム編成の例については、下で詳細に説明する。代替案では、エンコーダ２１００およびデコーダ２２００は、オブジェクト・ベースであり、異なるマクロブロック・フォーマットまたはブロック・フォーマットを使用するか、８×８ブロックおよび１６×１６マクロブロックと異なるサイズまたはコンフィギュレーション（配置）のピクセルのセットに対して動作を実行する。
【００７３】
要求される実装および圧縮のタイプに応じて、エンコーダまたはデコーダのモジュールは、追加し、省略し、複数のモジュールに分割し、他のモジュールと組合せ、かつ／または類似するモジュールと置換することができる。代替実施形態では、異なるモジュールおよび／または他のコンフィギュレーションのモジュールを有するエンコーダまたはデコーダが、説明される技法のうちの１つまたは複数を実行する。
【００７４】
Ａ．  ビデオ・フレームの編成
いくつかの実装で、エンコーダ２１００およびデコーダ２２００は、次のように編成されたビデオ・フレームを処理する。フレームは、ビデオ信号の空間情報からなる走査線を収容する。プログレッシブ・ビデオでは、これらの走査線に、ある瞬間から始まり、連続する走査線を介してフレームの最下部まで継続するサンプルを収容する。プログレッシブ・ビデオ・フレームは、図２３に示されているように、マクロブロック２３００などのマクロブロックに分割される。マクロブロック２３００は、従来の４：２：０マクロブロック・フォーマットに従う、４つの８×８輝度ブロック（Ｙ１からＹ４）と、４つの輝度ブロックと同一の位置にあるが水平および垂直に半分の解像度を有する２つの８×８クロミナンス・ブロックとが含まれる。８×８ブロックを、さらに、異なるステージで、例えば周波数変換ステージ（例えば、８×４、４×８、または４×４のＤＣＴ）およびエントロピー・エンコーディング・ステージで副分割することができる。プログレッシブＩフレームは、イントラ・コーディングされたプログレッシブ・ビデオ・フレームである。プログレッシブＰフレームは、順方向予測を使用してコーディングされたプログレッシブ・ビデオ・フレームであり、プログレッシブＢフレームは、双方向測を使用してコーディングされたプログレッシブ・ビデオ・フレームである。プログレッシブＰフレームおよびプログレッシブＢフレームは、異なるタイプの予測マクロブロックだけでなく、イントラ・コーディングされたマクロブロックを含むことができる。
【００７５】
インターレース・ビデオ・フレームは、１つのフレームに属する２つのスキャンから構成され、一方のスキャンは、フレームの偶数走査線を備え上フィールド）、他方のスキャンは、フレームの奇数走査線（下フィールド）を備える。この２つのフィールドは、２つの異なる時間期間を表す場合があり、あるいは、これらが同一の時間期間からのものである場合がある。図２４Ａは、上フィールドおよび下フィールドの交番する走査線が含まれるインターレース・ビデオ・フレーム２４００の一部で、その左上部分の一部を示している。
【００７６】
図２４Ｂは、フレーム２４３０としてのエンコーディング／デコーディングのために編成された図２４Ａのインターレース・ビデオ・フレーム２４００を示している。インターレース・ビデオ・フレーム２４００は、図２３に示されているように４：２：０フォーマットを使用する、マクロブロック２４３１および２４３２などのマクロブロックに区分される。輝度プレーンでは、各マクロブロック２４３１および２４３２は、上フィールドからの８つの走査とこれと交番する下フィールドからの８つの走査線、合計１６走査線を含み、各走査線は、１６ピクセルの長さである（マクロブロック２４３１および２４３２内の輝度ブロックおよびクロミナンス・ブロックの実際の編成および配置は、図示されておらず、実際には、異なるエンコーディングの決定に合わせて変化することになる）。所与のマクロブロック内で、上フィールド情報および下フィールド情報は、様々なフェーズのいずれかで、一緒にまたは別々にコーディングすることができる。インターレースＩフレームは、インターレース・ビデオ・フレームの２つのイントラ・コーディングされたフィールドであり、その１つのマクロブロックには、この２つのフィールドの情報が含まれる。インターレースＰフレームは、順方向予測を使用してコーディングされたインターレース・ビデオ・フレームの２つのフィールドであり、インターレースＢフレームは、双方向予測を使用してコーディングされたインターレース・ビデオ・フレームの２つのフィールドであり、その１つのマクロブロックには、この２つのフィールドの情報が含まれる。インターレースＰフレームおよびインターレースＢフレームには、異なるタイプの予測マクロブロックだけでなく、イントラ・コーディングされたマクロブロックを含めることができる。
【００７７】
図２４Ｃは、フィールド２４６０としてのエンコーディング／デコーディングのために編成された図２４Ａのインターレース・ビデオ・フレーム２４００を示している。インターレース・ビデオ・フレーム２４００に属する２つのフィールドのそれぞれが、マ複数のクロブロックに区分される。上フィールドは、マクロブロック２４６１などのマクロブロックに区分され、下フィールドは、マクロブロック２４６２などのマクロブロックに区分される（やはり、図２３に示されているように、マクロブロックは４：２：０フォーマットを使用し、マクロブロック内の輝度ブロックおよびクロミナンス・ブロックの編成および配置は、図示されていない）。輝度プレーン内で、マクロブロック２４６１に、上フィールドからの１６本の走査線が含まれ、マクロブロック２４６２に、下フィールドからの１６本の走査線が含まれ、各走査線は、１６ピクセルの長さである。インターレースＩフィールドは、インターレース・ビデオ・フレームに属する単一の別々に表されたフィールドである。インターレースＰフィールドは、順方向予測を使用してコーディングされたインターレース・ビデオ・フレームに属する単一の別々に表されたフィールドであり、インターレースＢフィールドは、双方向予測を使用してコーディングされたインターレース・ビデオ・フレームに属する単一の別々に表されたフィールドである。インターレースＰフィールドおよびインターレースＢフィールドには、異なるタイプの予測マクロブロックだけでなく、イントラ・コーディングされたマクロブロックを含めることができる。
【００７８】
用語「ピクチャ」は、全般的に、ソース、コーディングされたイメージ・データ、あるいは再構成されたイメージ・データ、を指す。プログレッシブ・ビデオについて、ピクチャは、プログレッシブ・ビデオ・フレームである。インターレース・ビデオについて、ピクチャは、コンテクスト（文脈）に依存して、インターレース・ビデオ・フレーム、そのフレームの上フィールド、またはそのフレームの下フィールドを指す場合がある。
【００７９】
代替案では、エンコーダ２１００およびデコーダ２２００が、オブジェクト・ベースであり、異なるマクロブロック・フォーマットまたはブロック・フォーマットを使用するか、８×８ブロックおよび１６×１６マクロブロックと異なるサイズまたはコンフィギュレーション（配置）のピクセルのセットに対して動作を実行する。
【００８０】
Ｂ．  ビデオ・エンコーダ
図２１は、一般化されたビデオ・エンコーダ・システム２１００のブロック図である。エンコーダ・システム２１００は、現在のピクチャ２１０５（例えば、プログレッシブ・ビデオ・フレーム、インターレース・ビデオ・フレーム、またはインターレース・ビデオ・フレームのフィールド）を含む複数のビデオ・ピクチャから構成されるシーケンスを受け取り、出力として圧縮ビデオ情報２１９５を作り出す。ビデオ・エンコーダの特定の実施形態は、通常、一般化されたエンコーダ２１００の変形版または増補された版を使用する。
【００８１】
エンコーダ・システム２１００は、予測ピクチャおよびキー・ピクチャを圧縮する。提示のために、図２１に、エンコーダ・システム２１００を通るキー・ピクチャのパスおよび予測ピクチャのパスを示している。エンコーダ・システム２１００のコンポーネントの多くが、キー・ピクチャと圧縮ピクチャの両方の圧縮に使用される。これらのコンポーネントによって実行される正確な動作は、圧縮される情報のタイプに応じて変化することになる。
【００８２】
予測ピクチャ（例えば、プログレッシブｐフレーム、プログレッシブｂフレーム、インターレースｐフィールド、インターレースｂフィールド、インターレースｐフレーム、またはインターレースｂフレーム）は、１つまたは複数の他のピクチャ（通常は、基準フレームまたはアンカーと称する）からの予測（または差）という形で表される。予測残差は、予測されたものとオリジナル・ピクチャの間の差である。対照的に、キー・ピクチャ（例えば、プログレッシブＩフレーム、インターレースＩフィールド、またはインターレースＩフレーム）は、他のピクチャを参照することなく圧縮されている。
【００８３】
現在のピクチャ２１０５が、順方向予測ピクチャである場合に、動き予測器２１１０が、１つまたは複数の基準ピクチャ、例えばピクチャ・ストア２１２０にバッファリングされている再構成された前のピクチャ２１２５、に関して現在のピクチャ２１０５のマクロブロックまたはピクセルの他のセットについての動きを推定する。現在のピクチャ２１０５が、双方向予測ピクチャである場合に、動き予測器２１１０は、４つまでの再構成された基準ピクチャ（例えば、インターレースＢフィールドの）に関して現在のピクチャ２１０５内の動きを推定する。通常、動き予測器は、Ｂピクチャ内の動きを、１つまたは複数の時間的に前の基準ピクチャおよび１つまたは複数の時間的に将来の基準ピクチャに関して推定する。したがって、エンコーダ・システム２１００は、複数の基準ピクチャに対して別々のストア２１２０および２１２２を使用することになる。プログレッシブＢフレームの詳細については、特許文献１を参照されたい。
【００８４】
動き予測器２１１０は、ピクセル単位、１／２ピクセル単位、１／４ピクセル単位、または他の増分で動きを推定することができ、ピクチャを単位としてまたは他の単位で動き推定の分解能を切り替えることができる。動き予測器２１１０（および補償器２１３０）は、フレームを単位としてまたは他の単位で、基準ピクチャのピクセル補間の複数タイプ（例えば、双三次（bicubic）と双線形（bilinear）の間）間を切り替えることができる。動き推定の分解能は、水平と垂直で同一としたり、または異ならせたりすることができる。動き予測器２１１０は、サイド情報として、差分動きベクトル情報などの動き情報２１１５を出力する。エンコーダ２１００は、動き情報２１１５のエンコーダオを、例えば、動きベクトルに関する１つまたは複数のプレディクタを算出し、動きベクトルとそのプレディクタの間の差分を算出し、その差分をエントロピー・コーディングすることによって、実行する。動きベクトルを再構成するために、動き補償器２１３０は、プレディクタを差分動きベクトル情報と組み合わせる。インターレースＢフィールドおよびインターレースＢフレームに関して、動きベクトル・プレディクタの算出、差分動きベクトルの算出、および動きベクトル再構成の様々な技法を、下で説明する。
【００８５】
動き補償器２１３０は、再構成された動きベクトルを再構成されたピクチャ２１２５に適用して、動き補償された現在のピクチャ２１３５を形成する。しかし、予測は、完全であることがめったになく、したがって、動き補償された現在のピクチャ２１３５とオリジナルの現在のピクチャ２１０５の間の差が、予測残差２１４５である。その後のピクチャ再構成中に、オリジナルの現在のピクチャ２１０５により近い再構成されたピクチャを得るために、予測残差２１４５を動き補償された現在のピクチャ２１３５に加算される。しかし、ロッシイ圧縮では、オリジナルの現在のピクチャ２１０５からのいくつかの情報が、それでも失われる。代替案では、動き予測器および動き補償器が、別のタイプの動き推定／動き補償を適用する。
【００８６】
周波数トランスフォーマ２１６０が、空間領域ビデオ情報を周波数領域（すなわち、スペクトル）データに変換する。ブロック・ベースのビデオ・ピクチャについて、周波数トランスフォーマ２１６０は、ＤＣＴ、ＤＣＴの変形、または他のブロック変換をピクセル・データまたは予測残差データのブロックに適用し、周波数変換係数のブロックを作る。代替案では、周波数トランスフォーマ２１６０が、フーリエ変換などの別の従来の周波数変換を適用するか、ウェーブレット分析またはサブバンド分析を使用する。周波数トランスフォーマ２１６０は、８×８、８×４、４×８、４×４、または他のサイズの周波数変換を適用することができる。
【００８７】
次に、量子化器２１７０が、スペクトル・データ係数のブロックを量子化する。量子化器は、ピクチャを単位としてまたは他の単位として変化するステップ・サイズを有する均一なスカラ量子化をスペクトル・データに適用する。代替案では、量子化器は、例えば、不均一量子化、ベクトル量子化、または非適応量子化などの別のタイプの量子化を空間データ係数に適用したり、周波数変換を使用しないエンコーダ・システムでは空間領域データを直接に量子化したりする。適応量子化のほかに、エンコーダ２１００は、フレーム・ドロッピング、適応フィルタリング、またはレート制御のための他の技法を使用することができる。
【００８８】
エンコーダ２１００は、スキップド・マクロブロックの特別なシグナリングを使用することができ、このスキップド・マクロブロックは、あるタイプの情報を有しないマクロブロック（例えば、マクロブロックの動き情報および残差情報がない）である。
【００８９】
再構成された現在のピクチャが、後続の動き推定／動き補償に必要なときには、逆量子化器２１７６が、量子化されたスペクトル・データ係数に対して逆量子化を実行する。次に、逆周波数トランスフォーマ２１６６が、周波数トランスフォーマ２１６０の動作の逆を実行し、再構成された予測残差（予測ピクチャの）または再構成されたキー・ピクチャを作る。現在のピクチャ２１０５がキー・ピクチャである場合には、再構成されたキー・ピクチャが、再構成された現在のピクチャ（図示せず）として採用される。現在のピクチャ２１０５が予測ピクチャである場合には、再構成された予測残差を、動き補償された現在のピクチャ２１３５に加算して、再構成された現在のピクチャを形成する。ピクチャ・ストア２１２０および２１２２の一方または両方が、動き補償予測で使用するために、再構成された現在のピクチャをバッファリングする。いくつかの実施形態で、エンコーダは、再構成されたフレームにデブロッキング・フィルタを適用して、そのピクチャにおける不連続性および他のアーティファクトを適応式に平滑化する。
【００９０】
エントロピー・コーダ２１８０は、量子化器２１７０の出力ならびにある種のサイド情報（例えば、動き情報２１１５、量子化ステップ・サイズ）を圧縮する。通常のエントロピー・コーディング技法に、算術コーディング、差分コーディング、ハフマン・コーディング、ランレングス・コーディング、ＬＺコーディング、辞書コーディング、および上記の組合せが含まれる。エントロピー・コーダ２１８０は、通常、異なる種類の情報（例えば、ＤＣ係数、ＡＣ係数、異なる種類のサイド情報）に異なるコーディング技法を使用し、特定のコーディング技法内で複数のコード・テーブルの中から選択することができる。
【００９１】
エントロピー・コーダ２１８０は、圧縮ビデオ情報２１９５をマルチプレクサ［「ＭＵＸ」］２１９０に供給する。ＭＵＸ  ２１９０に、バッファを含めることができ、バッファ・レベル・インジケータを、レート制御のためにビットレート適応モジュールにフィードバックすることができる。ＭＵＸ  ２１９０の前または後に、圧縮ビデオ情報２１９５を、ネットワークを介する伝送のためにチャネル・コーディングすることができる。チャネル・コーディングは、誤り検出訂正データを圧縮ビデオ情報２１９５に付加することができる。
【００９２】
Ｃ．  ビデオ・デコーダ
図２２は、一般化されたビデオ・デコーダ・システム２２００のブロック図である。デコーダ・システム２２００は、ビデオ・ピクチャの圧縮シーケンスに関する情報２２９５を受け取り、再構成されたピクチャ２２０５（例えば、プログレッシブ・ビデオ・フレーム、インターレース・ビデオ・フレーム、またはインターレース・ビデオ・フレームのフィールド）を含む出力を作る。ビデオ・デコーダの特定の実施形態は、通常、一般化されたデコーダ２２００の変形版または増補された版を使用する。
【００９３】
デコーダ・システム２２００は、予測ピクチャおよびキー・ピクチャを圧縮解除する。提示のために、図２２に、デコーダ・システム２２００を通るキー・ピクチャのパスおよび順方向予測ピクチャのパスを示す。デコーダ・システム２２００のコンポーネントの多くが、キー・ピクチャと圧縮ピクチャの両方の圧縮解除に使用される。これらのコンポーネントによって実行される正確な動作は、圧縮解除される情報のタイプに応じて変化することができる。
【００９４】
ＤＥＭＵＸ  ２２９０が、圧縮ビデオ・シーケンスに関する情報２２９５を受け取り、受け取られた情報をエントロピー・デコーダ２２８０に使用可能にする。ＤＥＭＵＸ  ２２９０に、ジッタ・バッファおよび他のバッファも含めることができる。ＤＥＭＵＸ  ２２９０の前または後で、圧縮ビデオ情報を、チャネル・デコードし、誤り検出および訂正の処理をすることができる。
【００９５】
エントロピー・デコーダ２２８０は、エントロピー・コーディングされた量子化データならびにエントロピー・コーディングされたサイド情報（例えば、動き情報２２１５、量子化ステップ・サイズ）をエントロピー・デコードし、通常は、エンコーダで実行されたエントロピー・コーディングの逆を適用する。エントロピー・デコーディング技法に、算術デコーディング、差分デコーディング、ハフマン・デコーディング、ラン・レングス・デコーディング、ＬＺデコーディング、辞書デコーディング、および上記の組合せが含まれる。エントロピー・デコーダ２２８０は、通常、異なる種類の情報（例えば、ＤＣ係数、ＡＣ係数、異なる種類のサイド情報）に異なるデコーディング技法を使用し、特定のデコーディング技法内で複数のコード・テーブルの中から選択することができる。
【００９６】
デコーダ２２００は、動き情報２２１５をデコードする、例えば、動きベクトルの１つまたは複数のプレディクタを算出し、差分動きベクトルをエントロピー・デコーディングし、デコードされた差分動きベクトルをプレディクタと組み合わせて、動きベクトルを再構成する。インターレースＢフィールドおよびインターレースＢフレームに関する、動きベクトル・プレディクタの算出、差分動きベクトルの算出、および動きベクトル再構成の様々な技法を、下で説明する。
【００９７】
動き補償器２２３０は、動き情報２２１５を１つまたは複数の基準ピクチャ２２２５に適用して、再構成中のピクチャ２２０５についての予測２２３５を形成する。例えば、動き補償器２２３０は、１つまたは複数のマクロブロック動きベクトルを使用して、基準ピクチャ（群）２２２５内のマクロブロック（群）を見つける。１つまたは複数のピクチャ・ストア（例えば、ピクチャ・ストア２２２０および２２２２）が、基準フレームとして使用するために、前に再構成されたピクチャを格納する。通常、Ｂピクチャは、複数の基準フレーム（例えば、少なくとも１つの時間的に前の基準フレームおよび少なくとも１つの時間的に将来の基準フレーム）を有する。したがって、デコーダ・システム２２００は、複数の基準フレームに別々のピクチャ・ストア２２２０および２２２２を使用することができる。動き補償器２２３０は、ピクセル単位、１／２ピクセル単位、１／４ピクセル単位、または他の増分で動きを補償することができ、ピクチャ単位または他の単位で動き補償の分解能を切り替えることができる。動き補償器２２３０は、フレーム単位でまたは他の単位で、基準ピクチャ・ピクセル補間の複数のタイプ例えば、双三次（bicubic）と双線形（bilinear）の間）間を切り替えることができる。動き補償の分解能は、水平と垂直で同一としたり、または異ならせたりすることができる。代替案では、動き補償器は、別のタイプの動き補償を適用する。動き補償器による予測は、完全であることがめったになく、したがって、デコーダ２２００も、予測残差を再構成する。
【００９８】
逆量子化器２２７０が、エントロピー・デコードされたデータを逆量子化する。一般に、逆量子化器は、ピクチャ単位でまたは他の単位で変化するステップ・サイズを有する均一なスカラ逆量子化をエントロピー・デコードされたデータに適用する。代替案では、逆量子化器は、例えば、不均一量子化、ベクトル量子化、または非適応量子化などの処理後のデータを再構成するために、別のタイプの逆量子化をデータに適用したり、逆周波数変換を使用しないデコーダ・システム内では空間領域データを直接に逆量子化したりする。
【００９９】
逆周波数トランスフォーマ２２６０は、逆量子化された周波数領域データを空間領域ビデオ情報に変換する。ブロック・ベースのビデオ・ピクチャについて、逆周波数トランスフォーマ２２６０は、逆ＤＣＴ［「ＩＤＣＴ」］、ＩＤＣＴの変形、または他の逆ブロック変換を周波数変換係数に適用し、それぞれキー・ピクチャまたは予測ピクチャのピクセル・データまたは予測残差データを作る。代替案では、逆周波数トランスフォーマ２２６０が、逆フーリエ変換などの別の従来の逆周波数変換を適用するか、ウェーブレット合成またはサブバンド合成を使用する。逆周波数トランスフォーマ２２６０は、８×８、８×４、４×８、４×４、または他のサイズの逆周波数変換を適用することができる。
【０１００】
予測ピクチャに関して、デコーダ２２００は、再構成された予測残差２２４５を動き補償された予測２２３５と組み合わせて、再構成されたピクチャ２２０５を形成する。デコーダが、後続の動き補償用に再構成されたピクチャ２２０５を必要とするときには、ピクチャ・ストア（例えば、ピクチャ・ストア２２２０）の一方または両方が、次のピクチャを予測する際に使用するために、再構成されたピクチャ２２０５をバッファリングする。いくつかの実施形態で、デコーダ２２００は、再構成されたピクチャにデブロッキング・フィルタを適用して、そのピクチャにおける不連続性および他のアーティファクトを適応式に平滑化する。
【０１０１】
ＩＩＩ．  インターレースＰフィールドおよびインターレースＰフレーム
通常のインターレース・ビデオ・フレームは、異なる時刻にスキャンされる２つのフィールド（例えば、上フィールドおよび下フィールド）からなる。一般に、（２つの）フィールドを一緒にコーディングすること（「フレーム・モード」コーディング）によってインターレース・ビデオ・フレームの静止領域をエンコードすることが、より効率的である。その一方で、２つのフィールドが異なる動きを有する傾向があるので、フィールドを別々にコーディングすること（「フィールド・モード」コーディング）によってインターレース・ビデオ・フレームの動いている領域をコーディングすることが、しばしばより効率的である。順方向予測インターレース・ビデオ・フレームは、２つの別々の順方向予測フィールド（インターレースＰフィールド）としてコーディングすることができる。順方向予測インターレース・ビデオ・フレームのフィールドを別々にコーディングすることには、例えば、インターレース・ビデオ・フレーム全体に激しい動きがあり、したがって、フィールドの間の大きい差があるときに、より効率的である場合がある。
【０１０２】
あるいは、順方向予測インターレース・ビデオ・フレームを、フィールド・コーディングおよびフレーム・コーディングの混合を使用して、インターレースＰフレームとしてコーディングすることができる。インターレースＰフレームのマクロブロックについて、このマクロブロックは、上フィールドおよび下フィールドのピクセルの走査線を含み、これらの走査線は、フレーム・コーディング・モードでは一緒に、フィールド・コーディング・モードでは別々にコーディングされる。
【０１０３】
Ａ．  インターレースＰフィールド
インターレースＰフィールドは、１つまたは複数の前にデコードされたフィールドを参照する。例えば、いくつかの実装で、インターレースＰフィールドは、前にデコードされたフィールドの１つまたは２つを参照するが、インターレースＢフィールドは、２つまでの前の基準フィールドおよび２つまでの将来の基準フィールド（すなわち、合計４つまでの基準フィールド）を参照する（インターレースＢフィールドのエンコーディング技法およびデコーディング技法は、下で詳細に説明する）。
【０１０４】
図２５および図２６に、２つの基準フィールドを有するインターレースＰフィールドの例を示す。図２５では、現在のフィールド２５１０が、時間的に前のインターレース・ビデオ・フレームの上フィールド２５２０および下フィールド２５３０を参照する。フィールド２５４０および２５５０は、インターレースＢフィールドなので、これらは基準フィールドとしては使用されない。図２６では、現在のフィールド２６１０が、現在のフィールド２６１０を含むインターレース・ビデオ・フレームの直前のインターレース・ビデオ・フレーム内の上フィールド２６２０および下フィールド２６３０を参照する。２つの基準インターレースＰフィールドに関するさらなる情報については特許文献２を参照されたい。
【０１０５】
図２７および２８に、１つの基準フィールドすなわち時間的に最も最近の許容可能な基準フィールドを有するインターレースＰフィールドの例を示す。図２７では、現在のフィールド２７１０が、時間的に前のインターレース・ビデオ・フレーム内の下フィールド２７３０を参照するが、そのインターレース・ビデオ・フレームのより最近でない上フィールド２７２０を参照しない。図２７に示された例では、フィールド２７４０および２７５０が、インターレースＢフィールドであり、許容可能な基準フィールドではない。図２８では、現在のフィールド２８１０が、より最近でない上フィールド２８２０ではなく、現在のフィールド２８１０を含むインターレース・ビデオ・フレームの直前のインターレース・ビデオ・フレーム内の下フィールド２８３０を参照する。
【０１０６】
図２９および図３０に、２番目に最近の許容可能な基準フィールドを使用するインターレースＰフィールドの例を示す。図２９では、現在のフィールド２９１０が、時間的に前のインターレース・ビデオ・フレームの上フィールド２９２０を参照するが、より最近の下フィールド２９３０を参照しない。図２９に示された例では、フィールド２９４０および２９５０が、インターレースＢフィールドであり、許容可能な基準フィールドではない。図３０では、現在のフィールド３０１０が、最も最近の下フィールド３０３０ではなく、上フィールド３０２０を参照する。
【０１０７】
一実装で、図２５〜図３０に示されたすべてのシナリオが、インターレースＰフィールド構文で許容される。他の実装が可能である。例えば、ピクチャが、基準フレームとして、異なるタイプまたは異なる時間的位置の他のピクチャからのフィールドを使用することができる。
【０１０８】
１．  フィールド・ピクチャ座標系およびフィールド極性
動きベクトルは、１／４ピクセル単位での水平変位および垂直変位を表す。例えば、動きベクトルの垂直成分が、６つの１／４ピクセル単位の変位を示す場合に、これは、基準ブロックが、現在のブロック位置の１  １／２フィールド走査線下にあることを示す（６＊１／４＝１  １／２）。
【０１０９】
図３１に、一実装での、動きベクトルの垂直成分と空間位置の垂直成分との間の関係を示す。図３１に示された例は、現在のフィールド・タイプおよび基準フィールドタイプ（例えば上および下）の３つの異なる組合せに関する３つの異なるシナリオ３１１０、３１２０、および３１３０が示されている。フィールド・タイプが、現在のフィールドと基準フィールドについて異なる場合に、極性は「反対」である。フィールド・タイプが同一の場合には、極性は「同一」である。各シナリオについて、図３１に、現在のフィールドにおける複数のピクセルからなる１つの垂直の列（column）および基準フィールドにおける複数のピクセルからなる第２の垂直の列を示す。実際には、この２つの列が、水平に位置合せされている。円は、実際の整数ピクセル位置を表し、×は、補間された１／２ピクセル位置または１／４ピクセル位置を表す。水平成分値（図示せず）は、それぞれのフィールドが水平に位置合せされているので、インターレースに起因するオフセットを考慮に入れる必要がない。負の値は、さらに上へのオフセットを示し、その反対方向で、正の垂直オフセットが示されている。
【０１１０】
シナリオ３１１０では、極性が「反対」である。現在のフィールドは、上フィールドであり、基準フィールドは、下フィールドである。現在のフィールドに対して、基準フィールドの位置は、インターレースに起因して下に１／２ピクセルだけオフセットしている。０の垂直動きベクトル成分値は、「ゼロの垂直動き」オフセットであり、基準フィールド内の位置として、（絶対的には）同一の垂直レベルにある基準フィールド内の位置を表し、＋２の垂直動きベクトル成分値は、現在のフィールド内の位置の１／２ピクセル下（絶対項で）にオフセットした基準フィールド内の位置を表し、これは、基準フィールド内の実際の値（actual value）であり、＋４の垂直動きベクトル成分値は、現在のフィールド内の位置の１ピクセル下（絶対項で）にオフセットした位置を表し、これは、基準フィールド内で補間された値である。
【０１１１】
シナリオ３１２０では、極性が「反対」である。現在のフィールドは、下フィールドであり、基準フィールドは、上フィールドである。現在のフィールドに対して、基準フィールドの位置は、インターレースに起因して上に１／２ピクセルだけオフセットしている。−２の垂直動きベクトル成分値は、現在のフィールド内の位置の（絶対的には）１／２ピクセル上の基準フィールド内の位置を表し、０の垂直動きベクトル成分値は、基準フィールド内の位置と（絶対的には）同一レベルの位置を表し、＋２の垂直動きベクトル成分値は、現在のフィールド内の位置の（絶対的には）１／２ピクセル下にオフセットした位置を表す。
【０１１２】
シナリオ３１３０では、極性が「同一」である。現在のフィールドに対して、基準フィールドの位置は、垂直方向で同一である。０の垂直動きベクトル成分値は、「ゼロの垂直動き」オフセットであり、基準フィールド内の位置として、（絶対的には）同一の垂直レベルにある基準フィールド内の位置を表し、＋２の垂直動きベクトル成分値は、現在のフィールド内の位置の１／２ピクセル下（絶対項で）にオフセットした基準フィールド内の位置を表し、これは、基準フィールド内で補間された値であり、＋４の垂直動きベクトル成分値は、現在のフィールド内の位置の（絶対的には）１ピクセル下にオフセットした位置を表し、これは、基準フィールド内の実際の値である。
【０１１３】
代替案では、動きベクトルの変位が、異なる規約に従って表される。
【０１１４】
２．  ２つの基準フィールドからのインターレースＰフィールドでの動きベクトル予測
２つの基準フィールドからのインターレースＰフィールドは、同一の時間的方向の２つのフィールド（例えば、２つの最も最近の前の基準フィールド）を参照する。２つの動きベクトル・プレディクタが、マクロブロックごとに算出される。いくつかの実装で、一方のプレディクタが、同一極性の基準フィールドからであり、他方が、反対極性の基準フィールドからである。極性の他の組合せも可能である（方向ごとに２つの基準フィールドを使用するインターレースＢフィールドは、下で説明する。いくつかの実装で、そのようなインターレースＢフィールドは、動きベクトル・プレディクタの算出に関してインターレースＰフィールドと同一の技法を使用する）。
【０１１５】
いくつかの実装で、エンコーダ／デコーダは、奇数フィールド・プレディクタおよび偶数フィールド・プレディクタを見つけ、このプレディクタのうちの１つを選択してマクロブロックを処理することによって、現在のブロックまたはマクロブロックの動きベクトル・プレディクタを算出する。例えば、エンコーダ／デコーダは、奇数フィールド動きベクトル・プレディクタおよび偶数フィールド動きベクトル・プレディクタを決定する。したがって、この動きベクトル・プレディクタのうちの一方が、現在のフィールドと同一極性を有し、他方の動きベクトル・プレディクタが、反対極性を有する。エンコーダ／デコーダは、奇数フィールド動きベクトル・プレディクタおよび偶数フィールド動きベクトル・プレディクタの中から１つの動きベクトル・プレディクタを選択する。例えば、エンコーダは、どちらがよりよい予測を与えるかに基づいて、複数の動きベクトル・プレディクタのいずれかを選択する。エンコーダは、単純な選択信号を使用して、またはコーディング効率を改善するためにコンテクスト情報を組み込んだより複雑なシグナリングを使用して、どの動きベクトル・プレディクタを使用するかをシグナリングする。このコンテクスト情報は、偶数フィールドまたは奇数フィールドのどちらが、あるいは同一極性のフィールドまたは反対極性のフィールドのどちらが、ブロックまたはマクロブロックの周囲の近傍で優勢に使用されたかを示すことができる。デコーダは、この選択信号および／またはコンテクスト情報に基づいて、どの動きベクトル・プレディクタを使用するかを選択する。次に、エンコーダ／デコーダは、選択された動きベクトル・プレディクタを使用して、動きベクトルを処理する。例えば、エンコーダは、動きベクトルと動きベクトル・プレディクタの間の差分をエンコードする。あるいは、デコーダは、動きベクトル差分と動きベクトル・プレディクタを組み合わせることによって、動きベクトルをデコードする。
【０１１６】
代替案では、エンコーダおよび／またはデコーダが、奇数フィールド動きベクトル・プレディクタの決定または偶数フィールド動きベクトル・プレディクタの決定をスキップすることができる。例えば、エンコーダが、奇数フィールドが特定のブロックまたはマクロブロックの動き補償に使用されると決定した場合に、エンコーダは、奇数フィールド動きベクトル・プレディクタだけを決定する。あるいは、デコーダが、コンテクスト情報および／またはシグナリングされた情報から、奇数フィールドが動き補償に使用されると決定した場合に、デコーダは、奇数フィールド動きベクトル・プレディクタだけを決定する。この形で、エンコーダおよびデコーダは、不要な動作を避けることができる。
【０１１７】
デコーダは、次の技法を使用して、現在のインターレースＰフィールドの動きベクトル・プレディクタを決定することができる。
【０１１８】
インターレースＰフィールドの動きベクトルを有するブロックまたはマクロブロックごとに、３つの候補動きベクトル・プレディクタの２セットを得る。これらの候補動きベクトル・プレディクタがそこから得られる隣接マクロブロックの、現在のマクロブロック３２００に対する位置を図３２に示す。この候補のうちの３つは、偶数基準フィールドからであり、３つは、奇数基準フィールドからである。各候補方向の隣接マクロブロック（Ａ、Ｂ、またはＣ）は、イントラ・コーディングされるか、偶数フィールドまたは奇数フィールドのいずれかを参照する実際の動きベクトルを有するかのいずれかなので、他方のフィールドの動きベクトルを導出する（または、イントラ・コーディングされたマクロブロック用の奇数フィールドと偶数フィールドの両方の動きベクトル候補を導出する）必要がある。例えば、所与のマクロブロックについて、プレディクタＡが、奇数フィールドを参照する動きベクトルを有すると仮定する。この場合に、「偶数フィールド」プレディクタ候補Ａは、「奇数フィールド」候補プレディクタＡの動きベクトルから導出される。この導出は、スケーリング動作を使用して達成される（例えば、下の図３４Ａおよび図３４Ｂの説明を参照されたい）。代替案では、この導出が、別の形で達成される。
【０１１９】
３つの奇数フィールド候補動きベクトル・プレディクタを得たならば、中央値演算を使用して、３つの奇数フィールド候補から１つの奇数フィールド動きベクトル・プレディクタを導出する。同様に、３つの偶数フィールド候補動きベクトル・プレディクタを得たならば、中央値演算を使用して、３つの偶数フィールド候補から１つの偶数フィールド動きベクトル・プレディクタを導出する。代替案では、別の機構を使用して、候補フィールド動きベクトル・プレディクタに基づいて、フィールド動きベクトル・プレディクタを選択する。デコーダは、動きベクトル・プレディクタとして偶数フィールドまたは奇数フィールドのどちらを使用するかを判断し（例えば、優勢プレディクタを選択することによって）、偶数または奇数の動きベクトル・プレディクタを使用して、動きベクトルを再構成する。
【０１２０】
図３３Ａ〜図３３Ｆの擬似コード３３００に、図３２のように配置されたプレディクタＡ、Ｂ、およびＣから動きベクトル・プレディクタを生成するのに使用されるプロセスを示す。図３２に、現在のインターレースＰフィールドの中央の通常のマクロブロックの近傍を示したが、図３３Ａ〜３３Ｆの擬似コード３３００は、マクロブロック位置に関する様々な特別な場合に対処する。さらに、擬似コード３３００を使用して、様々な位置のブロックの動きベクトルの動きベクトル・プレディクタを算出することができる。
【０１２１】
擬似コード３３００では、用語「ｓａｍｅ  ｆｉｅｌｄ」（同一のフィールド）および「ｏｐｐｏｓｉｔｅ  ｆｉｅｌｄ」（反対のフィールド）が、現在コーディングまたはデコーディングされつつあるフィールドに対するものであると理解されたい。例えば、現在のフィールドが偶数フィールドである場合に、「ｓａｍｅ  ｆｉｅｌｄ」は偶数基準フィールドであり、「ｏｐｐｏｓｉｔｅ  ｆｉｅｌｄ」は奇数基準フィールドである。擬似コード３３００の変数ｓａｍｅｆｉｅｌｄｐｒｅｄ＿ｘおよびｓａｍｅｆｉｅｌｄｐｒｅｄ＿ｙは、同一フィールドからの動きベクトル・プレディクタの水平成分および垂直成分を表し、変数ｏｐｐｏｓｉｔｅｆｉｅｌｄｐｒｅｄ＿ｘおよびｏｐｐｏｓｉｔｅｆｉｅｌｄｐｒｅｄ＿ｙは、反対のフィールドからの動きベクトル・プレディクタの水平成分および垂直成分を表す。変数ｓａｍｅｃｏｕｎｔおよびｏｐｐｏｓｉｔｅｃｏｕｎｔは、それぞれ、現在のブロックまたはマクロブロックの近傍の動きベクトルのうちの何個が現在のフィールドの「同一の」極性の基準フィールドを参照するか、および何個が「反対の」極性の基準フィールドを参照するかを追跡する。変数ｓａｍｅｃｏｕｎｔおよびｏｐｐｏｓｉｔｅｃｏｕｎｔは、この擬似コードの始めで０に初期化される。
【０１２２】
擬似コード３３００に挙げられているスケーリング動作ｓｃａｌｅｆｏｒｓａｍｅ（）およびｓｃａｌｅｆｏｒｏｐｐｏｓｉｔｅ（）は、隣接マクロブロックの実際の動きベクトル値から「他方」のフィールド用の動きベクトル・プレディクタ候補を導出するのに使用される。これらのスケーリング動作は、実装に依存である。例のスケーリング動作を、下で図３４Ａ、３４Ｂ、３５、および３６を参照して説明する。代替案では、例えば図３１に示されたものなどの垂直変位を補償するために、他のスケーリング動作が使用される（特にインターレースＢフィールドに使用されるスケーリング動作を、下で詳細に説明する）。
【０１２３】
図３３Ａおよび３３Ｂに、フレーム内の内側位置の通常のブロックまたはマクロブロック用の動きベクトル・プレディクタを算出する擬似コードを示す。「イントラ」隣接マクロブロック用の動きベクトルには、０がセットされる。隣接マクロブロックごとに、同一のフィールドの動きベクトル・プレディクタおよび反対のフィールドの動きベクトル・プレディクタが、セットされ、一方は、隣接マクロブロックの動きベクトルの実際の値からセットされ、他方はそれから導出される。候補の中央値（median）を、同一のフィールドの動きベクトル・プレディクタおよび反対のフィールドの動きベクトル・プレディクタについて算出し、「優勢」プレディクタを、ｓａｍｅｃｏｕｎｔおよびｏｐｐｏｓｉｔｅｃｏｕｎｔから決定する。変数ｄｏｍｉｎａｎｔｐｒｅｄｉｃｔｏｒは、どのフィールドに優勢動きベクトル・プレディクタが含まれるかを示す。動きベクトル・プレディクタが優勢であるのは、それが３つの候補プレディクタの過半数と同一極性を有する場合である（シグナリングされる値ｐｒｅｄｉｃｔｏｒ＿ｆｌａｇは、動きベクトル差分データと共にデコードされ、優勢プレディクタまたは非優勢プレディクタのどちらが使用されるかを示す）。
【０１２４】
図３３Ｃの擬似コードは、隣接マクロブロックＢおよびＣが存在しない、１行（row）あたりに１つのマクロブロックだけを有するインターレースＰフィールド内のマクロブロックの状況に対処する。図３３Ｄおよび３３Ｅの擬似コードは、隣接マクロブロックＣが存在しない、インターレースＰフィールドの左端にあるブロックまたはマクロブロックの状況に対処する。ここで、動きベクトル・プレディクタが優勢であるのは、２つの候補プレディクタのうちのより多数と同一極性を有する場合であり、引き分けの場合には、反対のフィールドの動きベクトル・プレディクタが優勢である。最後に、図３３Ｆの擬似コードは、例えば、インターレースＰフィールドの最上行内のマクロブロックの場合に対処する。
【０１２５】
３．  別のフィールドの動きベクトル・プレディクタからの、あるフィールドの動きベクトル・プレディクタの導出のためのスケーリング
一実装で、エンコーダ／デコーダは、図３４Ａおよび３４Ｂの擬似コード３４００に示されたスケーリング動作を使用して、別のフィールドの動きベクトル・プレディクタからあるフィールドの動きベクトル・プレディクタを導出する。ＳＣＡＬＥＯＰＰ、ＳＣＡＬＥＳＡＭＥ１、ＳＣＡＬＥＳＡＭＥ２、ＳＣＡＬＥＺＯＮＥ１＿Ｘ、ＳＣＡＬＥＺＯＮＥ１＿Ｙ、ＺＯＮＥ１ＯＦＦＳＥＴ＿Ｘ、およびＺＯＮＥ１ＯＦＦＳＥＴ＿Ｙの値は、実装に依存である。値の２つの可能なセットが、現在のフィールドがインターレース・ビデオ・フレームの最初のフィールドである場合について図３５の表３５００に示されており、現在のフィールドがインターレース・ビデオ・フレームの２番目のフィールドである場合について図３６の表３６００に示されている。Ｐフレームについて、基準フレーム距離は、現在のＰフレームとその基準フレームの間のＢフレーム（すなわち、２つのＢフィールドを含むビデオ・フレーム）の個数と定義される。Ｂフレームが存在しない場合には、基準距離は０である。例えば、エンコーダは、可変サイズ構文要素（例えば、下のセクションＸＩＶで詳細に説明するＲＥＦＤＩＳＴ構文要素）を使用して、基準フレーム距離をエンコードする。
【０１２６】
表３５００および表３６００に示された例では、Ｎ（これらの表のＳＣＡＬＥＺＯＮＥ１＿Ｘ値、ＳＣＡＬＥＺＯＮＥ１＿Ｙ値、ＺＯＮＥ１ＯＦＦＳＥＴ＿Ｘ値、およびＺＯＮＥ１ＯＦＦＳＥＴ＿Ｙ値の乗数）の値は、動きベクトル範囲に依存する。例えば、拡張された動きベクトル範囲を、構文要素ＥＸＴＥＮＤＥＤ＿ＭＶ＝１によってシグナリングすることができる。ＥＸＴＥＮＤＥＤ＿ＭＶ＝１の場合には、ＭＶＲＡＮＧＥ構文要素が、ピクチャ・ヘッダに存在し、動きベクトル範囲をシグナリングする。ＥＸＴＥＮＤＥＤ＿ＭＶ＝０の場合には、デフォルト動きベクトル範囲が使用される。下の表１に、ＮとＭＶＲＡＮＧＥの間の関係を示す。
【０１２７】
【表１】
2011139524.tif 000003
【０１２８】
表３５００および表３６００に示された値は、実装に応じて変更することができる。
【０１２９】
代替案では、Ｎは１と仮定され（すなわち、スケーリングはＮに依存しない）、あるいは、スケーリングをいくつかの他の形で実行することができる。
【０１３０】
Ｂ．  インターレースＰフレーム
いくつかの実装で、インターレースＰフレームのマクロブロックは、５つのタイプすなわち、１ＭＶ、２フィールドＭＶ、４フレームＭＶ、４フィールドＭＶ、およびイントラのうちの１つとすることができる。
【０１３１】
１ＭＶマクロブロックでは、マクロブロック内の４つの輝度ブロックの変位が、単一の動きベクトルによって表される。対応するクロマ動きベクトルを、ルマ（luma：輝度）動きベクトルから導出して、動きベクトルの２つの８×８クロマ・ブロックのそれぞれの変位を表すことができる。例えば、図２３に示されたマクロブロック配置をもう一度参照すると、１ＭＶマクロブロック２３００に、４つの８×８輝度ブロックおよび２つの８×８クロミナンス・ブロックが含まれる。複数の輝度ブロック（Ｙ１からＹ４）の変位は、単一の動きベクトルによって表され、対応するクロマ動きベクトルをルマ動きベクトルから導出して、２つのクロマブロック（ＵおよびＶ）のそれぞれの変位を表すことができる。
【０１３２】
２フィールドＭＶマクロブロックでは、マクロブロック内の４つの輝度ブロックの各フィールドの変位が、異なる動きベクトルによって記述される。例えば、図３７に、上フィールド動きベクトルが、輝度ブロックの４つすべての偶数走査線の変位を記述し、下フィールド動きベクトルが、輝度ブロックの４つすべての奇数走査線の変位を記述することを示す。上フィールド動きベクトルを使用することによって、エンコーダは、対応する上フィールド・クロマ動きベクトルを導出することができ、これは、クロマ・ブロックの偶数走査線の変位を記述する。同様に、エンコーダは、下フィールド・クロマ動きベクトルを導出することができ、これは、クロマ・ブロックの奇数走査線の変位を記述する。
【０１３３】
図３８を参照すると、４フレームＭＶマクロブロックでは、４つの輝度ブロックのそれぞれの変位が、個々の動きベクトル（ＭＶ１、ＭＶ２、ＭＶ３、およびＭＶ４）によって記述される。各クロマ・ブロックは、４つの４×４クロマ・サブブロックの変位を記述する４つの導出されたクロマ動きベクトル（ＭＶ１’、ＭＶ２’、ＭＶ３’、およびＭＶ４’）を使用することによって動き補償することができる。各４×４クロマ・サブブロック用の動きベクトルは、空間的に対応する輝度ブロック用の動きベクトルから導出することができる。
【０１３４】
図３９を参照すると、４フィールドＭＶマクロブロックでは、複数の輝度ブロックにおける各フィールドの変位が、２つの異なる動きベクトルによって記述される。その複数の輝度ブロックの偶数走査線は、垂直に副分割されて２つの８×８領域を形成している。偶数走査線について、左領域の変位は、上左フィールド・ブロック動きベクトルによって記述され、右領域の変位は、上右フィールド・ブロック動きベクトルによって記述される。輝度ブロックの奇数走査線も、２つの８×８領域を形成するために垂直に副分割されている。左領域の変位は、下左フィールド・ブロック動きベクトルによって記述され、右領域の変位は、下右フィールド・ブロック動きベクトルによって記述される。各クロマ・ブロックも、輝度ブロックと同一の形で４つの領域に区分することができ、各クロマ領域を、導出された動きベクトルを使用して動き補償することができる。
【０１３５】
イントラ・マクロブロックについて、動きは０と仮定される。
【０１３６】
一般に、インターレースＰフレーム内の現在のマクロブロック用の動きベクトル・プレディクタを算出するプロセスは、２つのステップからなる。第１に、現在のマクロブロックに対する３つの候補動きベクトルを、その隣接マクロブロックから収集する。例えば、一実施形態で、候補動きブロックは、図４０Ａ〜図４０Ｂに示された配置（および最上行マクロブロックなどの様々な特別な場合）に基づいて収集される。代替案では、候補動きブロックを、ある他の順序または配置で収集することができる。第２に、現在のマクロブロックの動きベクトル・プレディクタを、候補動きベクトルのセットから算出する。例えば、プレディクタを、ｍｅｄｉａｎ−ｏｆ−３  ｐｒｅｄｉｃｔｉｏｎ（３の中央値予測）を使用して、またはいくつかの他の方法によって算出することができる。
【０１３７】
インターレースＰフレームのマクロブロック用のプレディクタの算出およびクロマ動きベクトルの導出に関するさらなる詳細については、特許文献３を参照されたい。
【０１３８】
ＩＶ．  プログレッシブ・ビデオ・フレームの双方向予測
上で説明したように、プログレッシブＢフレームのマクロブロックは、５つの異なる予測モードすなわち、順方向、逆方向、直接、補間、およびイントラを使用して予測することができる。エンコーダは、マクロブロック・レベルまたは他のレベルで異なる予測モードを、選択し、ビットストリーム内でシグナリングする。順方向モードでは、現在のプログレッシブＢフレームのマクロブロックが、時間的に前のアンカーから導出される。逆方向モードでは、現在のプログレッシブＢフレームのマクロブロックが、時間的に後のアンカーから導出される。直接モードまたは補間モードで予測されるマクロブロックは、前のアンカーと後のアンカーの両方を予測に使用する。直接モードおよび補間モードには２つの基準フレームがあるので、通常、マクロブロックごとに（明示的にコーディングされるか導出されるかのいずれか）少なくとも２つの動きベクトルがある（プログレッシブＢフレームに使用されるコーディング、シグナリング、およびデコーディングの様々な態様は、下で説明するように、インターレースＢフレームにも使用することができる）。
【０１３９】
いくつかの実装で、デコーダは、分数値を使用して、順方向アンカーの同一位置の動きベクトルをスケーリングすることによって、直接モードで動きベクトルを暗黙のうちに導出する。分数は、現在のプログレッシブＢフレームの、そのアンカーによって形成されるインターバル内の相対的な時間位置を反映することができるが、真のフレーム間距離を反映する必要はない。したがって、エンコーダは、必ずしも一定の速度を仮定しない。これによって、エンコーダに、動き補償された予測を改善するために分数を「実際の」時間位置から変更することによって、アンカーと現在のプログレッシブＢフレームの間の真の動きを正確かつ安価に記述するための追加の自由度が与えられる。変数ＢＦＲＡＣＴＩＯＮは、この相対時間位置を示すためにビットストリーム内（例えば、ピクチャ・レベルまたは他のレベルで）送ることができる個々の分数を表す。この個々分数は、０と１の間の離散値の限られたセットからなる分数である。
【０１４０】
図１７をもう一度参照すると、表１７００は、ビットストリーム要素ＢＦＲＡＣＴＩＯＮの可変長コード（ＶＬＣ）テーブルである。同一の２つのアンカーの間のプログレッシブＢフレームの間でのＢＦＲＡＣＴＩＯＮの一意性に関する制約はなく、同一のアンカーを有する異なるプログレッシブＢフレームが、同一のＢＦＲＡＣＴＩＯＮ値を有することができる。表１７００のコードは、異なるコードを用いて異なる分数を表すために変更したり、または再配置したりすることができる。表１７００に示されていない他の可能なコード（例えば、１１１１１１０または１１１１１１１）は、無効なコードと見なすことができ、あるいは、他の目的に使用することができる。例えば、エントリ１１１１１１０を使用して、固定小数点フォーマットでＢＦＲＡＣＴＩＯＮを明示的にコーディングすることができる。もう１つの例として、エントリ１１１１１１１を使用して、特定のフレーム・タイプ（例えば、イントラ・コーディングされたプログレッシブＢフレーム）をシグナリングすることができる。
【０１４１】
図１８をもう一度参照すると、デコーダは、擬似コード１８００に従ってスケーリング係数を見つける。図１９をもう一度参照すると、デコーダは、そのスケーリング係数を使用して、後続参照ピクチャの同一位置のマクロブロックの動きベクトルのｘ要素およびｙ要素をスケーリングする。擬似コード１９００の関数Ｓｃａｌｅ＿Ｄｉｒｅｃｔ＿ＭＶは、入力ＭＶ＿ＸおよびＭＶ＿Ｙをとり、直接モードで２つの動きベクトルを導出し、この動きベクトルの一方は、順方向（前の）アンカー・ピクチャを参照し（ＭＶ＿ＸF、ＭＶ＿ＹF）、他方は、逆方向（後の）アンカー・ピクチャを参照する（ＭＶ＿ＸB、ＭＶ＿ＹB）。
【０１４２】
プログレッシブＢフレームの「スキップド」マクロブロック信号は、動きベクトル予測誤差が所与のマクロブロックについて存在しないことを示す。予測された動きベクトルは、正確に、エンコーダ／デコーダがそのマクロブロックの再構成に使用する動きベクトルである（すなわち、動きベクトル予測誤差が適用されない）。エンコーダは、それでも、直接予測、順方向予測、逆方向予測、または補間予測でそのマクロブロックをスキップすることができるので、このマクロブロックの予測モードをシグナリングする。
【０１４３】
Ｖ．  インターレースＢピクチャの予測コーディング／デコーディングにおける革新の概要
説明される実施形態は、インターレースＢピクチャ（例えば、インターレースＢフィールド、インターレースＢフレーム）をコーディングし、デコーディングする技法およびツールを含む。説明される実施形態は、限定されないが、以下を含む、双方向予測インターレース・ピクチャをコーディングし、かつ／またはデコードする説明される技法およびツールのうちの１つまたは複数を実装する。  
１．インターレースＢフレームについて、エンコーダ／デコーダは、インターレースＢフレーム内のマクロブロックの上フィールドと下フィールドの間で予測モードを切り替える。
【０１４４】
２．インターレースＢフレームについて、エンコーダ／デコーダは、前にデコードされた時間的に後のアンカーの同一位置のマクロブロックの上フィールドおよび下フィールドのそれぞれの１つの代表的動きベクトルを選択することによって、現在のマクロブロックの直接モード動きベクトルを算出する。この選択は、現在のインターレースＢフレームのマクロブロックをコーディングするモード（例えば、１ＭＶモード、２フィールドＭＶモードなど）に少なくとも部分的に基づいて実行することができる。
【０１４５】
３．インターレースＢフィールドまたはインターレースＢフレームについて、エンコーダ／デコーダは、４ＭＶコーディングを使用する。例えば、４ＭＶは、１方向予測モード（順方向モードまたは逆方向モード）で使用することができるが、他の使用可能な予測モード（例えば、直接、補間）では使用することができない。
【０１４６】
４．インターレースＢフィールドまたはインターレースＢフレームについて、順方向動きベクトルは、順方向動きベクトル・バッファからの前に再構成された（または推定された）順方向動きベクトルを使用して予測され、逆方向動きベクトルは、逆方向動きベクトル・バッファからの前に再構成された（または推定された）逆方向動きベクトルを使用して予測される。結果の動きベクトルが、対応するバッファに追加され、動きベクトル・バッファの穴が、推定された動きベクトル値によって埋められる。
【０１４７】
ａ．インターレースＢフレームについて、順方向予測が動きベクトルの予測に使用されて、動きベクトルが順方向バッファに追加されるときに、逆方向バッファ内の対応する位置が、プレディクタとして逆方向動きベクトルだけを使用して予測された動きベクトルになるはずのものによって埋められる（「穴埋め」）。同様に、逆方向予測が動きベクトルの予測に使用されて動きベクトルが逆方向バッファに追加されるときに、順方向バッファ内の対応する位置が、プレディクタとして順方向動きベクトルだけを使用して予測された動きベクトルになるはずのものによって埋められる。  
ｂ．インターレースＢフィールドについて、穴埋め用に異なる極性の動きベクトル（例えば、「同一極性」または「反対極性」）のどちらかを選択するために、エンコーダ／デコーダは、優勢極性フィールドの動きベクトルを選択する。アンカーと現在のフレームの間の距離が、様々な構文要素を使用して算出され、算出された距離が、基準フィールド動きベクトルのスケーリングに使用される。
【０１４８】
５．インターレースＢフィールドについて、エンコーダ／デコーダは、「自己参照」フレームを使用する。例えば、現在のフレームの第２のＢフィールドが、動き補償された予測において現在のフレームからの第１のＢフィールドを参照する。
【０１４９】
６．インターレースＢフィールドについて、エンコーダは、インターレースＢフィールドの１つまたは複数のマクロブロックについて、予測モードが順方向または非順方向のどちらであるかを示す２値情報を（例えば、圧縮されたビットプレーンのＢフィールド・レベルで）送る。デコーダは、対応するデコーディングを実行する。
【０１５０】
７．インターレースＢフィールドについて、エンコーダ／デコーダは、次のアンカー・ピクチャの対応するフィールドの対応するマクロブロックが４つの動きベクトルを使用してコーディングされている場合に、優勢極性を選択する論理を使用して直接モード動きベクトルを選択する。
【０１５１】
８．イントラ・コーディングされたフィールド：よい動き補償がＢフィールドについて可能でないときに、そのＢフィールドを、イントラ（すなわち、予測されない）Ｂフィールド（「ＢＩフィールド」）としてコーディングすることができる。
【０１５２】
説明される技法およびツールは、互いにまたは他の技法もしくはツールと組み合わせて使用することができ、あるいは、独立に使用することができる。
【０１５３】
ＶＩ．  インターレースＢフレームのフィールド・コーディングされたマクロブロック内での予測モードの切替
いくつかの実装で、エンコーダは、インターレースＢフレームのマクロブロック内で予測モード切替を実行する。例えば、エンコーダは、インターレースＢフレームのマクロブロックの上フィールドから下フィールドに進む際に、順方向から逆方向へ、または逆方向から順方向への予測モード切替を可能にする。マクロブロック全体を単一の予測方向モードでエンコードするのではなく、予測方向モードの組合せを使用して、単一のマクロブロックをコーディングする。１つのマクロブロックの個々のフィールドのどちらかに予測方向モードを変更する能力は、多くのシナリオでインターレースＢフレームのより効率的なコーディングにつながる。
【０１５４】
図４１に、異なる予測モードを使用してインターレースＢフレーム内のフィールド・コーディングされたマクロブロック内の個々のフィールドの動きベクトルを予測する技法４１００を示す。４１１０で、インターレースＢフレーム内で、エンコーダ／デコーダは、第１予測モードを使用して、フィールド・コーディングされたマクロブロック内の第１フィールドの動きベクトルを予測する。いくつかの実装で、「第１フィールド」を、上フィールドまたは下フィールドのいずれかとすることができ、その決定は、別々にシグナリングされる。４１２０で、エンコーダ／デコーダは、異なる予測モードを使用して、同一マクロブロック内の第２フィールドの動きベクトルを予測する。
【０１５５】
例えば、２つの動きベクトルを使用してフィールド・コーディングされたマクロブロックについて、上フィールドを順方向予測することができ（すなわち、上フィールド動きベクトルが前のアンカー・ピクチャを参照する）、下フィールドを逆方向予測することができる（すなわち、下フィールドが後のアンカー・ピクチャを参照する）。いくつかの実装で、インターレースＢフレーム内のフィールド・コーディングされたマクロブロックは、４つの動きベクトルを使用してはエンコードされない。代替案では、マクロブロックが、４つの動きベクトル（例えば、フィールドごとに２つの動きベクトル）を使用してフィールド・コーディングされる場合に、上フィールドの２つの動きベクトルが、一方のアンカー（順方向または逆方向）を参照し、下フィールドの動きベクトルが、他方のアンカーを参照する。
【０１５６】
この予測モードの切替は、インターレースＢフレームに関する次の擬似コードにさらに示されているように、マクロブロック・タイプが直接または補間でない場合に１つの追加ビットだけを、まずは必要とする。  
If MB is field-coded AND MB Type is forward or backward   
then If MVSwitch = 1 then prediction mode switches (from for  ward to backward or vice versa) between top and bottom field  
上述の疑似コードの和訳は以下である  
ＭＢはフィールド・コーディングされ、且つ  ＭＢタイプは順方向または逆方向か？  
その場合、ＭＶスイッチ＝１か？、その場合、予測モードが（順方向から逆方向へまたはその反対に）上フィールドと下フィールドのどちらかに切り替わる（訳の終わり）
したがって、予測モード切替を順方向モードおよび逆方向モードに制限することは、第２モードが第１モード（前にシグナリングされた）およびスイッチ値から暗示されるので、第２モードをシグナリングするためのより多くのビットの必要性を無くす。
【０１５７】
インターレースＢフレームのマクロブロックによって覆われる領域に激しい動きがある場合に、そのマクロブロックは、フィールド・モードでコーディングされる可能性が高い。この状況の下で、順方向予測または逆方向予測のどちらかが、ピクセル平均化を伴う直接モードまたは補間モードよりも、正確な動き補償結果を与える可能性が高い。平均化は、平滑化（例えば、激しい動きに伴う高い周波数要素の消失）をもたらすので、直接モードおよび補間モードは、そのようなマクロブロックをコーディングする最善の方法でない可能性がある。実験結果は、フィールド・コーディングされたマクロブロック内のフィールド・レベルでスイッチング・オプションとして４つのすべての予測モードをシグナリングすることによる増加したオーバーヘッドのために非効率性を示している。
【０１５８】
代替案では、エンコーダが、インターレースＢフレームのフィールド・コーディングされたマクロブロック内で３つ以上の予測モードの間で切り替えることができ、あるいは、異なる予測モードの間で切り替えることができる。
【０１５９】
ＶＩＩ．  インターレースＢフレームでの直接モード動きベクトルの算出
いくつかの実装で、エンコーダ／デコーダは、前にデコードされたアンカーＩフレームまたはアンカーＰフレーム（時間的に順方向の基準フレームであり、逆方向予測基準フレームとして使用される）からの動きベクトルをバッファリングし、インターレースＢフレーム内の現在のマクロブロック用の直接モード動きベクトルの算出に使用するために、バッファリングされた動きベクトルのうちの１つまたは複数を選択する。例えば、エンコーダ／デコーダは、アンカー・フレームの各マクロブロックからの上フィールドおよび下フィールドのそれぞれの代表的な動きベクトルをバッファリングし、バッファリングされた動きベクトルのうちの１つまたは複数を使用して、現在の直接モード・マクロブロック用の動きベクトルを算出する。この選択は、現在のマクロブロックのコーディング・モード（例えば、１ＭＶモード、２フィールドＭＶモードなど）に少なくとも部分的に基づいて実行される。
【０１６０】
図４２に、一実装でのインターレースＢフレームのマクロブロック用の直接モード動きベクトルを算出する技法４２００を示す。４２１０で、エンコーダ／デコーダが、前に再構成された時間的に将来のアンカー・フレーム内の同一位置のマクロブロックのマクロブロックごとに複数の動きベクトルをバッファリングする。同一位置のマクロブロックに１つの動きベクトルだけが含まれる場合には、その動きベクトルが、必要であれば同一位置のマクロブロックの様々なブロック用の動きベクトル値として、バッファリングされる。４２２０で、エンコーダ／デコーダは、現在のマクロブロックに必要な動きベクトルの個数に部分的に依存して、インターレースＢフレーム内の現在のマクロブロックの直接モード予測に同一位置のマクロブロックのバッファリングされた動きベクトルのうちの１つまたは複数を選択する。
【０１６１】
一実装で、デコーダは、将来のアンカー・フレームから、同一位置のマクロブロックの２つの動きベクトル、またはデコードされたルマ動きベクトルの可能な最大の個数の半分をバッファリングする。アンカー・フレーム内のマクロブロックは、マクロブロックごとに４つまでの動きベクトルを用いて、異なる形でコーディングすることができるが、下で説明するように、２つまでの動きベクトルだけがバッファリングされる。また、現在のマクロブロックについて生成される順方向／逆方向動きベクトル対の個数は、前にデコードされた将来のアンカー・フレーム内の同一位置のマクロブロックのコーディング・モードだけではなく、現在のマクロブロックのコーディング・モードに依存する。
【０１６２】
例えば、現在の直接モード・マクロブロックが、１ＭＶコーディングされている場合に、デコーダは、アンカー・フレーム内の同一位置のマクロブロックの上フィールドからのバッファリングされた動きベクトルをとり、順方向および逆方向に１つずつの１対の直接動きベクトルを生成する。現在の直接モード・マクロブロックが、フィールド・コーディングされている場合に、デコーダは、アンカー・フレーム内の同一位置のマクロブロックからの下フィールドと上フィールドの両方のバッファリングされた動きベクトルをとって、２対の動きベクトルを生成し、現在の直接モード・マクロブロックについて合計４つの動きベクトル（順方向と逆方向の両方でフィールドごとに１つ）を与える。
【０１６３】
図４３に、以前にデコードされた時間的に将来のアンカー・フレームの同一位置のマクロブロック４３００のブロックの動きベクトルＭＶ１、ＭＶ２、ＭＶ３、およびＭＶ４を示す。同一位置のマクロブロックが、１ＭＶマクロブロックである場合には、ＭＶ１、ＭＶ２、ＭＶ３、およびＭＶ４のすべてが等しい。同一位置のマクロブロックが、２フィールドＭＶマクロブロックである場合には、ＭＶ１およびＭＶ２が、ある値と等しく、ＭＶ３およびＭＶ４が、別の値と等しい。同一位置のマクロブロックが、４フィールドＭＶマクロブロックまたは４フレームＭＶマクロブロックである場合には、ＭＶ１、ＭＶ２、ＭＶ３、およびＭＶ４のすべてが異なる値である場合がある。しかし、ＭＶ１、ＭＶ２、ＭＶ３、およびＭＶ４が使用可能である場合であっても、デコーダは、ＭＶ１およびＭＶ３だけをバッファリングする。
【０１６４】
図４３に示された例では、デコーダは、ＭＶ１およびＭＶ３をバッファリングする。現在のマクロブロックが１ＭＶモードを使用している場合に、デコーダは、現在のマクロブロックの順方向および逆方向の直接モード動きベクトルの算出にＭＶ１を選択し、ＭＶ３を無視する。現在のマクロブロックが２フィールドＭＶモードを使用している場合に、デコーダは、４つの直接モード動きベクトルの算出にＭＶ１とＭＶ３の両方を使用する。これらの動作は、現在のマクロブロックの上フィールドおよび下フィールドに関する動きのよい表現をもたらす。
【０１６５】
アンカー・フレーム内の同一位置のマクロブロックからの動きベクトルが選択済みであるときに、デコーダは、スケーリング論理を適用して、Ｂフレーム・マクロブロックの直接モード予測のための対応する順方向および逆方向を指す動きベクトルを導出する。例えば、デコーダは、図１９の関数Ｓｃａｌｅ＿Ｄｉｒｅｃｔ＿ＭＶを適用することができる。あるいは、デコーダは、異なるスケーリング関数を適用する。
【０１６６】
代替案では、エンコーダ／デコーダが、アンカー・フレームのマクロブロックごとに４つの動きベクトルをバッファリングすることができる。例えば、現在のマクロブロックが１ＭＶコーディングされている場合に、エンコーダ／デコーダは、アンカー・フレーム内の同一位置のマクロブロックの上左動きベクトルをとって１対の直接動きベクトルを生成するか、アンカー・フレームの４つの動きベクトルを利用することができる。現在のマクロブロックがフィールド・コーディングされている場合に、エンコーダ／デコーダは、上左動きベクトルおよび下左動きベクトルをとり、２対（フィールドごとに１つ）を生成するか、アンカー・フレームのマクロブロックの上（フィールド）動きベクトルの平均および下（フィールド）動きベクトルの平均をとることができる。
【０１６７】
直接モード動きベクトルは、アンカー・フレームの同一位置のマクロブロックがイントラであるか、アンカー・フレームがＩフレームであるときに、（０，０）として扱われる。
【０１６８】
ＶＩＩＩ．  インターレースＢフィールドおよびインターレースＢフレームでの４ＭＶコーディング
いくつかの実装で、エンコーダは、４動きベクトル（４ＭＶ）コーディング・モードを使用して、インターレースＢフィールドおよびインターレースＢフレームをエンコードする。４ＭＶコーディングは、（例えば、１つのマクロブロック内で４つのルマ・ブロックを独立に予測し、動き補償することを可能にすることによって）１動きベクトル（１ＭＶ）コーディングより正確な、複雑な動き軌跡の表現を可能にすることができる。４ＭＶの使用を、ある種の予測モードに制限することができる。例えば、いくつかの実装で、エンコーダは、順方向モードおよび逆方向モード（フィールドとフレームの両方）に４ＭＶを使用するが、直接モードまたは補間モードには使用しない。このことは、プログレッシブ・コーディング・モードで、４ＭＶがプログレッシブＢフレームに使用されないのとは異なる。
【０１６９】
直接モードおよび補間モードは、動き補償された予測を算出するときにピクセル平均化を用いるが、これは、微細な細部を平滑化する傾向がある。そのような平滑化が受入可能である場合に、１ＭＶモードを４ＭＶモードの代わりに効果的に使用できる可能性が高い。というのは、１ＭＶが、コーディングがより安価であり、滑らかな動き軌跡を正確に記述するのに使用できるからである。実験から、インターレースＢフィールドおよびインターレースＢフレームのマクロブロックに４ＭＶモードを使用するが、４ＭＶモードを順方向予測マクロブロックおよび逆方向予測マクロブロックに制限することの利点が示された。４ＭＶを順方向モードおよび逆方向モードに制限することを選択するもう１つの要因が、４ＭＶを直接モードまたは補間モードと組み合わせることによって、各場合に合計８つの動きベクトルがもたらされることである。シグナリング・オーバーヘッド（補間モードに関する）と８つの動きベクトルに関連付けられた実装およびデコーディングの複雑さとが、一般に、正確さの利点を相殺する。さらに、通常はより高い品質セッティングでコーディングされる（すなわち、より軽く量子化される）Ｐピクチャが通常は動き補償に１つまたは４つの動きベクトルだけを使用できるときに、８つの動きベクトルを用いてインターレースＢピクチャをエンコードすることは、しばしば実用的でない。
【０１７０】
ある種の予測モードに４ＭＶを制限することは、他の利益も有する。例えば、４ＭＶが、順方向予測モードおよび逆方向予測モードだけに制限され、（例えば、下のセクションＸＩで説明するものなどのビットプレーン・コーディング技法で）順方向／逆方向モード決定が既にシグナリングされている場合に、エンコーダは、４ＭＶマクロブロックに関する予測モードをシグナリングするために追加のビットを送る必要がない。
【０１７１】
次の擬似コードは、順方向／逆方向決定がビットプレーン・コーディングされ、すべてのマクロブロック・レベル情報の前に送られる（例えば、ピクチャ・レベルで送られる）場合に、インターレースＢフィールドのマクロブロックに適用可能である。  
If MB is 4MV coded AND prediction mode is NOT forward   
Then prediction mode = Backward (don't send any more bits to signal mode)   
上述の疑似コードの和訳は以下である  
ＭＢが４ＭＶコーディングされ、且つ予測モードが非順方向か？  
その場合、予測モード＝逆方向（信号モードにこれ以上のビットは送らない）（訳の終わり）
【０１７２】
いくつかの実装で、直接／非直接予測モード決定が、すべてのマクロブロック・レベル情報の前に（例えば、ピクチャ・レベルで圧縮されたビットプレーン内（の形式で）で）送られる。（直接／非直接情報のコーディングのさらなる詳細については、特許文献１を参照されたい）。次の擬似コードは、そのような実装で４ＭＶが順方向モードおよび逆方向モードに制限されている場合に、インターレースＢフレームのマクロブロックに適用可能である。  
If MB is 4MV coded AND prediction mode is NOT direct   
Then send one additional bit to signal prediction mode (forward or backward)
上述の疑似コードの和訳は以下である  
ＭＢが４ＭＶコードされ、且つ予測モードが非直接か？  
その場合  １つの追加ビットを信号予測モードに（順方向または逆方向で）送る（訳の終わり）
【０１７３】
代替案では、４ＭＶが、順方向モードまたは逆方向モード以外の予測モードに、またはこれに追加して他のモードに使用されたり、順方向モードに使用されなかったり、逆方向モードに使用されなかったり、すべての予測モードに使用されなかったり、する。例えば、いくつかの実装で、４ＭＶが、インターレースＢフィールドには使用されるが、インターレースＢフレームには使用されない。他の代替案では、他のコードまたは他のコード長を使用して、４ＭＶコーディングと組み合わせて予測モードをシグナリングすることができる。
【０１７４】
ＩＸ．  別々の順方向動きベクトル・バッファおよび逆方向動きベクトル・バッファを使用する、インターレースＢピクチャの動きベクトルの予測
インターレースＢピクチャの動きベクトルは、別々の順方向動きベクトル・バッファ・コンテクストおよび逆方向動きベクトル・バッファ・コンテクストを使用して予測される。一般に、順方向動きベクトルは、順方向動きベクトル・バッファに格納された動きベクトルを使用して予測され、逆方向動きベクトルは、逆方向動きベクトル・バッファに格納された動きベクトルを使用して予測される。その後、その結果として得られた現在のマクロブロックの動きベクトルが、適切なバッファに格納され、他のマクロブロック用の後続の動きベクトル予測に使用することができる。通常、所与のマクロブロックが順方向動きベクトルだけ（順方向予測マクロブロックの場合）または逆方向動きベクトルだけ（逆方向予測マクロブロックの場合）を用いて予測される場合であっても、順方向動きベクトル・バッファと逆方向動きベクトル・バッファの両方の対応するスペースが、マクロブロックごとに埋められる。次のセクションで、インターレースＢピクチャ（例えば、インターレースＢフィールド、インターレースＢフレーム）の動きベクトルを予測する技法と、「欠けている」順方向動きベクトルまたは逆方向動きベクトル用の動きベクトル・バッファ内の対応する空間を「穴埋め」する技法を説明する。
【０１７５】
Ａ．  順方向バッファおよび逆方向バッファ
インターレースＢピクチャの動きベクトルを予測するときに、エンコーダ／デコーダは、順方向動きベクトル・バッファおよび／または逆方向動きベクトル・バッファ内の、前に再構成された動きベクトルを使用する。順方向モードでは、エンコーダ／デコーダは、順方向動きベクトル・バッファからの再構成された順方向動きベクトルを使用して、順方向動き補償について現在の動きベクトルを予測する。逆方向モードでは、エンコーダ／デコーダは、逆方向動きベクトル・バッファからの再構成された逆方向動きベクトルを使用して、逆方向動き補償について現在の動きベクトルを予測する。直接モードまたは補間モードのマクロブロックについて、エンコーダ／デコーダは、順方向動きベクトル・バッファを使用して１つの順方向動きベクトル成分（または、潜在的に複数の順方向動き成分）を予測することと、逆方向動きベクトル・バッファを使用して１つの逆方向成分（または、潜在的に複数の逆方向動き成分）を予測することとの両方を行う。
【０１７６】
インターレースＢピクチャの動きベクトルを再構成した後に、エンコーダ／デコーダは、再構成された順方向動きベクトルを順方向動きベクトル・バッファにバッファリングし、再構成された逆方向動きベクトルを逆方向動きベクトル・バッファにバッファリングする。順方向モードでは、エンコーダ／デコーダは、再構成された順方向動きベクトルを順方向動きベクトル・バッファに格納する。逆方向モードでは、エンコーダ／デコーダは、再構成された逆方向動きベクトルを逆方向動きベクトル・バッファに格納する。直接予測モードまたは補間予測モードのいずれかを使用するマクロブロックについて、エンコーダ／デコーダは、順方向動きベクトル成分を順方向動きベクトル・バッファに格納することと、逆方向動きベクトル成分を逆方向動きベクトル・バッファに格納することの両方を行う。
【０１７７】
例えば、エンコーダが、インターレースＢピクチャ内のマクロブロック座標位置（１２，１３）で順方向予測マクロブロックをエンコードしている場合に、エンコーダは、順方向動きベクトル・プレディクタを算出し、順方向動きベクトルの残差（そのマクロブロックが「スキップド」でないと仮定して）をビットストリームで送る。デコーダは、残差（すなわち差分）をデコードし、動きベクトルを再構成する。エンコーダ／デコーダは、再構成された動きベクトルを順方向動きベクトル・バッファに挿入する。次に、エンコーダ／デコーダは、動きベクトル予測論理を使用して、埋められる逆方向動きベクトルになる逆方向動きベクトル・プレディクタを算出し、この逆方向動きベクトルを逆方向動きベクトル・バッファの位置（１２，１３）に置く。例えば、ｍｅｄｉａｎ−ｏｆ−３の予測シナリオでは、エンコーダ／デコーダは、位置（１１，１３）、（１２，１２）、および（１３，１２）（現在の順方向予測マクロブロックの左、上、および右上の隣接マクロブロック）にバッファリングされた逆方向動きベクトルの中央値（median）をとって、（１２，１３）用の逆方向動きベクトルを埋め込む。
【０１７８】
図４４に、順方向動きベクトル・バッファおよび／または逆方向動きベクトル・バッファを使用してインターレースＢピクチャ内の現在のマクロブロックの動きベクトルを予測する技法４４００を示す。４４１０で、予測される動きベクトルが順方向動きベクトルまたは逆方向動きベクトルのどちらであるかに応じて、エンコーダ／デコーダは、順方向動きベクトル・バッファまたは逆方向動きベクトル・バッファのどちらを使用するかを選択する。現在の動きベクトルが順方向動きベクトルである場合に、エンコーダ／デコーダは、４４２０で、順方向動きベクトル・バッファからの動きベクトル・プレディクタ候補のセットを選択する。現在の動きベクトルが逆方向動きベクトルである場合に、エンコーダ／デコーダは、４４３０で、逆方向動きベクトル・バッファからの動きベクトル・プレディクタ候補のセットを選択する。４４４０で、エンコーダ／デコーダは、動きベクトル・プレディクタ候補からなるセットのうちのそのセットに基づいて動きベクトル・プレディクタを算出する。例えば、エンコーダ／デコーダは、動きベクトル・プレディクタ候補のセットの中央値（median）を算出する。単純な場合に、エンコーダ／デコーダは、すべてが１ＭＶマクロブロックであったプレディクタに基づいて１ＭＶの現在のマクロブロックの動きベクトル・プレディクタを算出する。現在のマクロブロックおよび／または隣接マクロブロックが異なるモードを有する、より複雑な変形形態を、下で説明する。
【０１７９】
図４５に、順方向動きベクトル・バッファ４５１０および逆方向動きベクトル・バッファ４５２０内の動きベクトルを示す。図４５に示された例では、再構成されたマクロブロック４５３０〜４５７０について、エンコーダ／デコーダが、順方向動きベクトル・バッファ４５１０に順方向動きベクトルを格納し、逆方向動きベクトル・バッファ４５２０に逆方向動きベクトルを格納する。現在のマクロブロック４５８０の動きベクトルを予測するために、エンコーダ／デコーダは、隣接マクロブロックからの候補プレディクタを使用する。例えば、現在のマクロブロック４５８０が、順方向モードで予測される場合に、エンコーダは、順方向動きベクトル・バッファ内の隣接する順方向動きベクトルを使用して（例えば、ｍｅｄｉａｎ−ｏｆ−３の予測を使用して）順方向動きベクトルを予測することができ、その後、順方向動きベクトル・バッファ内の現在のマクロブロックの位置に、再構成された動きベクトル値を埋め込むことができる。逆方向動きベクトル・バッファ４５２０の対応する現在のマクロブロックの位置を埋めるために、エンコーダ／デコーダは、逆方向動きバッファ内の隣接する逆方向動きベクトルを使用して逆方向動きベクトルを予測し、逆方向動きベクトル・バッファ内の現在のマクロブロックの位置にそのプレディクタを置くことができる。
【０１８０】
Ｂ．  インターレースＢフレームでの動きベクトル予測
いくつかの実装で、エンコーダ／デコーダは、別々の順方向動きベクトル・コンテクストおよび逆方向動きベクトル・コンテクストを使用する、インターレースＢフレーム内のマクロブロック用の（その別々のフィールドを含む）の動きベクトルを予測するのに次のスキームを使用する。図４０Ａ〜図４０Ｂに、候補動きベクトルの収集源となる隣接マクロブロックを示す。
【０１８１】
１ＭＶマクロブロックが順方向予測される場合に、エンコーダ／デコーダは、順方向動きベクトル・バッファの候補動きベクトルからその順方向動きベクトルを予測する（例えば、ｍｅｄｉａｎ−ｏｆ−３の予測と、図４０Ａおよび図４０Ｂまたは他所に示されたものなどの予測パターンを使用して）。エンコーダ／デコーダは、順方向動きベクトル・バッファにその順方向動きベクトルを（動きベクトル予測誤差を加算した後に）格納する。エンコーダ／デコーダは、逆方向動きベクトル・バッファの候補動きベクトルから逆方向動きベクトルを予測する（例えば、順方向予測の場合と同様に）ことによって「穴」を埋め、その逆方向動きベクトル（ここではプレディクタ）を逆方向動きベクトル・バッファに格納する。
【０１８２】
１ＭＶマクロブロックが逆方向予測される場合に、エンコーダ／デコーダは、逆方向動きベクトル・バッファの候補動きベクトルからその逆方向動きベクトルを予測する（例えば、順方向予測の場合と同様に）。エンコーダ／デコーダは、逆方向動きベクトル・バッファにその逆方向動きベクトルを（予測誤差を加算した後に）格納する。エンコーダ／デコーダは、順方向動きベクトル・バッファの候補動きベクトルから順方向動きベクトルを予測することによって穴を埋め、その順方向動きベクトル（ここではプレディクタ）を順方向動きベクトル・バッファに格納する。
【０１８３】
イントラ・コーディングされたマクロブロックである隣接マクロブロックは、順方向動きベクトル・バッファおよび逆方向動きベクトル・バッファでは無視される。
【０１８４】
様々な特別な場合が、インターレースＢフレームの１ＭＶマクロブロックとフィールド・コーディングされた２ＭＶマクロブロックの組合せに対処する。現在の１ＭＶマクロブロックの位置Ａ、Ｂ、またはＣの隣接マクロブロックが、フィールド・コーディングされた２ＭＶマクロブロックである場合に、エンコーダ／デコーダは、その位置の動きベクトル・プレディクタとして、その２ＭＶマクロブロックのフィールド動きベクトルの平均をとる。
【０１８５】
例えば、順方向予測される現在の２フィールドＭＶマクロブロックについて、２つの順方向予測フィールド動きベクトルごとに、隣接マクロブロックからの候補動きベクトルが、順方向動きベクトル・バッファから収集される。エンコーダ／デコーダは、順方向動きベクトル・バッファに格納されている、隣接マクロブロックのコーディング・モード（例えば、イントラ、１ＭＶ、２フィールドＭＶ）に基づいて候補動きベクトルのセットを選択するが。隣接マクロブロックが、存在し、それがイントラ・コーディングされていない場合に、エンコーダ／デコーダは、その候補のセットに追加すべきマクロブロックの動きベクトルを探す。いくつかの実施形態で、エンコーダ／デコーダは、次のように処理する。上フィールド順方向動きベクトルについて、位置Ａ、Ｂ、またはＣの隣接マクロブロックが１ＭＶマクロブロックである場合に、エンコーダは、順方向動きベクトル・バッファの対応する位置からのマクロブロックの動きベクトルを候補のセットに追加する。位置Ａ、Ｂ、またはＣの、２フィールドＭＶマクロブロックである隣接マクロブロックについて、エンコーダ／デコーダは、順方向動きベクトル・バッファの対応する位置からの上フィールドＭＶをセットに追加する。
【０１８６】
下フィールド順方向動きベクトルについて、位置Ａ、Ｂ、またはＣの隣接マクロブロックが１ＭＶマクロブロックである場合に、エンコーダは、順方向動きベクトル・バッファの対応する位置からのマクロブロックの動きベクトルを候補のセットに追加する。位置Ａ、Ｂ、またはＣの、２フィールドＭＶマクロブロックである隣接マクロブロックについて、エンコーダ／デコーダは、順方向動きベクトル・バッファの対応する位置からの下フィールド動きベクトルをセットに追加する。
【０１８７】
２フィールドＭＶマクロブロックのフィールド動きベクトルのプレディクタを算出するために、エンコーダ／デコーダは、次に、候補のセットの中央値（median）を算出する。
【０１８８】
２フィールドＭＶマクロブロックの逆方向予測動きベクトルを算出するために、論理は、順方向予測の場合と同一であるが、隣接マクロブロックからの候補動きベクトルが、逆方向動きベクトル・バッファから収集される。
【０１８９】
やはり、イントラ・コーディングされた、位置Ａ、Ｂ、またはＣの隣接マクロブロックは、動きベクトル予測について無視される。
【０１９０】
２フィールドＭＶマクロブロック用の動きベクトルの再構成（例えば、動きベクトル差分情報を加算することによる）の後に、再構成された実際の動きベクトルが、再構成された動きベクトルの予測方向に適切な、順方向動きベクトル・バッファまたは逆方向動きベクトル・バッファに置かれる。欠けている方向の動きベクトル・バッファの対応する空のスロットは、欠けている方向の動きベクトル・プレディクタを算出し、その動きベクトル・プレディクタを空のスロットに格納することによって、埋められる。
【０１９１】
予測モード切替が使用されている（上のセクションＶＩを参照されたい）場合に、例外が、インターレースＢフレーム内のフィールド・コーディングされたマクロブロックの穴埋めに、適用される。この場合に、所与のフィールド・コーディングされた２ＭＶマクロブロックは、１つの順方向動きベクトルおよび１つの逆方向動きベクトルを有する。インターレースＢフレームのフィールド・コーディングされたマクロブロックの再構成の後に、フィールド・コーディングされたマクロブロックが上フィールドと下フィールドのどちらかに予測方向を切り替える場合に、エンコーダ／デコーダは、順方向動きベクトル・バッファの上下両方の動きベクトル「スロット」に順方向動きベクトルを埋め、逆方向バッファの上下両方の動きベクトル・スロットに逆方向動きベクトルを埋め込む。順方向動きベクトルは、１つのフィールド（例えば、上フィールド）だけに送られるが、エンコーダは、順方向動きベクトル・バッファの上下両方のフィールドの動きベクトル・スロットに同一の動きベクトルを置く。同様に、逆方向動きベクトルは、下フィールドだけに送られるが、エンコーダは、逆方向動きベクトル・バッファの上下両方のフィールドのスロットにその動きベクトルを置く。
【０１９２】
例えば、図４６に、順方向動きベクトル・バッファ４６１０および逆方向動きベクトル・バッファ４６２０内の再構成されたマクロブロック４６８０の上フィールド動きベクトルおよび下フィールド動きベクトルを示す。図４６に示された例では、再構成されたマクロブロック４６３０〜４６７０について、エンコーダ／デコーダは、順方向動きベクトル・バッファ４６１０に順方向動きベクトル、逆方向動きベクトル・バッファ４６２０に逆方向動きベクトルを格納する。再構成されたマクロブロック４６８０は、予測切替を用いてフィールド・コーディングされており、その上フィールド動きベクトルは、（上フィールド動きベクトルの予測方向に依存する）順方向または逆方向のいずれかの動きベクトル・バッファの上フィールド位置および下フィールド位置に格納される。マクロブロック４６８０の下フィールド動きベクトルは、他方の動きベクトル・バッファの上下の位置に格納される。この例では、再構成されたマクロブロック４６８０が、予測モード切替を使用する。順方向動きベクトルおよび逆方向動きベクトルは、それぞれ、１つのフィールドだけについて送られるが、エンコーダは、めいめいの順方向動きベクトル・バッファおよび逆方向動きベクトル・バッファの上フィールドの動きベクトル・スロットと下フィールドの動きベクトル・スロットとに同一の動きベクトルを置く。
【０１９３】
現在のマクロブロックが補間である場合に、エンコーダ／デコーダは、順方向動きベクトル・バッファを使用して１つの順方向動きベクトル（２フィールドＭＶマクロブロックの場合には複数の順方向動きベクトル）を予測し、逆方向動きベクトル・バッファを使用して１つの逆方向動きベクトル（２フィールドＭＶマクロブロックの場合には複数の逆方向動きベクトル）を予測し、この順方向動きベクトルおよび逆方向動きベクトル（予測誤差が算出された後にこれを加算した後に）を、それぞれ順方向動きベクトル・バッファおよび逆方向動きベクトル・バッファに格納する。
【０１９４】
マクロブロックがインターレースＢフレーム内で直接予測される場合には、エンコーダ／デコーダは、上のセクションＶＩＩで説明した技法を使用することができる。
【０１９５】
いくつかの実装で、１ＭＶマクロブロック、２フィールドＭＶマクロブロック、およびイントラ・マクロブロックが、インターレースＢフレームについて許容され（他のＭＶマクロブロック・タイプは許容されない）、これによって、より少数の現在／隣接モード組合せにしか対処する必要がないので、動きベクトルを予測する論理が単純になる。代替案では、４フレームＭＶマクロブロックおよび４フィールドＭＶマクロブロックなどの他のおよび／または追加のＭＶモードが許容される。例えば、図６４、図６９、および図７０に示された擬似コードの一部を使用して、インターレースＢフレームでそのような他の組合せに対処することができる。
【０１９６】
Ｃ．  インターレースＢフィールドの動きベクトル予測
一般に、インターレースＢフィールドについて、前に構成された（または導出された）順方向フィールド動きベクトルが、現在の順方向フィールド動きベクトルのプレディクタとして使用され、前に構成された（または導出された）逆方向フィールド動きベクトルが、現在の逆方向フィールド動きベクトルのプレディクタとして使用される。順方向モードまたは逆方向モードでは、現在の順方向フィールド動きベクトルまたは逆方向フィールド動きベクトルが、適当な動きベクトル・バッファに追加され、他方の（欠けている）方向（例えば、順方向モードでは逆方向、逆方向モードでは順方向）の動きベクトルは、プレディクタとしての後の使用のために導出される。
【０１９７】
いくつかの実装で、フィールド動きベクトル予測選択は、この詳細な説明の上のセクションＩＩＩ．Ａ．２および下のセクションＸＩＶ．Ｂ．３で説明する２つの基準フィールド動きベクトル予測論理に従って実行される。例えば、図３３Ａ〜図３３Ｆに示された擬似コードを使用して、インターレースＢフィールドのマクロブロックの２フィールド順方向動きベクトル・プレディクタを算出し、順方向フィールド動きベクトルの再構成に使用するために１つの動きベクトル・プレディクタを選択する。次に、再構成された動きベクトル値を、順方向動きベクトル・バッファに置く。この擬似コードを使用して、マクロブロックの２フィールド逆方向動きベクトル・プレディクタも算出し、逆方向動きベクトル・バッファを埋める値として使用するために１つのプレディクタを選択する。インターレースＢフィールドについて、欠けている方向の動きベクトル・バッファの「穴」を埋めるために、エンコーダ／デコーダは、同一極性および反対極性の動きベクトル・プレディクタのどちらかを選択する。この極性の間の選択が生じるのは、２つのプレディクタ（現在のフィールドと同一極性のプレディクタおよび現在のフィールドと反対極性のプレディクタ）が、所与の欠けている方向で生成されるからである。したがって、いくつかの実装で、エンコーダ／デコーダは、欠けている方向の動きベクトルの過半数または「優勢」な極性のプレディクタを選択する。この形で、順方向動きベクトルと逆方向動きベクトルの両方の完全なセットが、動きベクトル予測で使用するために与えられる。代替案では、まず、優勢極性が決定され、プレディクタ選択が実行され、その後、選択された動きベクトル・プレディクタだけが算出される。
【０１９８】
異なる極性のフィールド動きベクトルのどちらかを選択することによる実際の値のバッファリングおよび穴埋めについての一実装での処理を、図４７の擬似コード４７００に示す。擬似コード４７００には、穴埋め予測中に、実際の動きベクトルが、欠けている方向について存在しない場合、優勢極性を有する、予測された、欠けている方向の動きベクトルが、エンコーダ／デコーダによって選択されることが示されている。
【０１９９】
いくつかの実装で、インターレースＢフィールド動きベクトル予測の全体的なスキームは、次の通りである。
【０２００】
マクロブロックが順方向予測である場合に、エンコーダ／デコーダは、順方向動きベクトル・バッファの候補の同一のおよび／または反対極性の動きベクトル（例えば、ほとんどの場合に左、上、および右上の隣接ベクトルの３の中央値（median-of-3）予測を使用して）、またはバッファリングされた動きベクトルから導出された動きベクトルから、順方向動きベクトルを予測する。エンコーダ／デコーダは、再構成された順方向動きベクトルを順方向動きベクトル・バッファに格納し、逆方向動きベクトル・バッファ内の対応する位置の優勢逆方向動きベクトル・プレディクタ（逆方向動きベクトル・バッファの空間的近傍からの３の中央値（median-of-3）によって同様に予測される）を算出し、格納する。
【０２０１】
マクロブロックが逆方向予測である場合に、エンコーダ／デコーダは、逆方向動きベクトル・バッファの候補の同一のおよび／または反対極性の動きベクトル（例えば、ほとんどの場合に左、上、および右上の隣接ベクトルの３の中央値（median-of-3）予測を使用して）、またはバッファリングされた動きベクトルから導出された動きベクトルから、逆方向動きベクトルを予測する。エンコーダ／デコーダは、再構成された逆方向動きベクトルを逆方向動きベクトル・バッファに格納し、順方向動きベクトル・バッファ内の対応する位置の優勢順方向動きベクトル・プレディクタ（順方向動きベクトル・バッファの空間的近傍からの３の中央値（median-of-3）によって同様に予測される）を算出し、格納する。
【０２０２】
マクロブロックが補間である場合に、エンコーダ／デコーダは、順方向動きベクトル・バッファを使用して、順方向動きベクトル成分を予測し、逆方向動きベクトル・バッファァを使用して、逆方向動きベクトル成分を予測し、再構成された順方向動きベクトルおよび逆方向動きベクトルを（算出された予測誤差が算出された後にこれを加算した後に）、それぞれ順方向動きベクトル・バッファおよび逆方向動きベクトル・バッファに格納する。
【０２０３】
マクロブロックが、直接予測である場合に、エンコーダ／デコーダは、現在のフィールドの直接モード動きベクトルを算出し、順方向動きベクトル成分および逆方向動きベクトル成分をそれぞれの動きベクトル・バッファに格納する。
【０２０４】
イントラ・コーディングされたマクロブロックである隣接マクロブロックは、動きベクトル予測では無視される。
【０２０５】
様々な特別な場合が、インターレースＢフィールドの１ＭＶマクロブロックと４ＭＶマクロブロックの組合せに対処する。図６Ａ〜図１０は、プログレッシブＰフレームの動きベクトル予測のプレディクタ・パターンを示す。これと同一のパターンが、ミックスドＭＶインターレースＢフィールド内の１ＭＶマクロブロックまたは４ＭＶマクロブロックの動きベクトルの動きベクトル予測に関する候補動きベクトルと見なされるブロックまたはマクロブロックの位置を示す。フレームが１マクロブロック幅である特別な場合について、プレディクタは、必ずプレディクタＡ（上プレディクタ）である。様々な他のルールが、最上行４ＭＶマクロブロックの最上行ブロック、最上行１ＭＶマクロブロック、およびイントラ・コーディングされたプレディクタなどの他の特別な場合に対処する。
【０２０６】
図６Ａ〜図１０に示されたプレディクタ・パターンは、順方向動きベクトル・バッファ内の位置からの候補を使用する順方向予測に使用され、逆方向動きベクトル・バッファ内の位置からの候補を使用する逆方向予測にも使用される。さらに、図６Ａ〜図１０に示されたプレディクタ・パターンは、インターレースＢフィールドについて上で述べた２つの基準フィールド動きベクトル予測論理と共に使用される。
【０２０７】
図６Ａおよび図６Ｂに、ミックスドＭＶインターレースＢフィールド内の１ＭＶ現在マクロブロック用の候補動きベクトル・プレディクタと見なされるブロックの位置を示す。隣接するマクロブロックは、１ＭＶマクロブロックまたは４ＭＶマクロブロックである場合がある。図６Ａおよび６Ｂには、隣接マクロブロックが４ＭＶである（すなわち、プレディクタＡが、現在のマクロブロックの上のマクロブロック内のブロック２用の動きベクトルであり、プレディクタＣが、現在のマクロブロックのすぐ左のマクロブロック内のブロック１用の動きベクトルである）と仮定した場合の候補動きベクトルの位置が示されている。隣接マクロブロックのいずれかが、１ＭＶマクロブロックである場合に、図５Ａおよび５Ｂに示された動きベクトル・プレディクタが、このマクロブロック全体の動きベクトル・プレディクタに採用される。図６Ｂに示されているように、このマクロブロックが行の最後のマクロブロックである場合には、プレディクタＢが、他の場合の右上マクロブロック内のブロック２からではなく、左上マクロブロックのブロック３からになる。
【０２０８】
図７Ａ〜図１０に、ミックスドＭＶインターレースＢフィールドの４ＭＶマクロブロックの４つの輝度ブロック用のそれぞれの候補動きベクトル・プレディクタと見なされるブロックの位置を示す。図７Ａおよび７Ｂは、位置０のブロックの候補動きベクトル・プレディクタと見なされるブロックの位置を示す図であり、図８Ａおよび図８Ｂは、位置１のブロックの候補動きベクトル・プレディクタと見なされるブロックの位置を示す図であり、図９は、位置２のブロックの候補動きベクトル・プレディクタと見なされるブロックの位置を示す図であり、図１０は、位置３のブロック用の候補動きベクトル・プレディクタと見なされるブロックの位置を示す図である。やはり、隣接マクロブロックが１ＭＶマクロブロックである場合に、そのマクロブロック用の動きベクトル・プレディクタが、そのマクロブロックの各ブロックに使用される。
【０２０９】
マクロブロックが行の最初のマクロブロックである場合に、ブロック０のプレディクタＢは、その行の残りのブロック０と異なる形で処理される（図７Ａおよび図７Ｂを参照されたい）。この場合に、プレディクタＢは、それ以外の場合の現在のブロックの左上のマクロブロックのブロック３からではなく、現在のマクロブロックの真上のマクロブロックのブロック３からとられる。同様に、マクロブロックが行の最後のマクロブロックである場合に、ブロック１のプレディクタＢは、異なる形で処理される（図８Ａおよび図８Ｂを参照されたい）。この場合に、プレディクタは、他の場合の現在のマクロブロックの右上のマクロブロックのブロック２からではなく、現在のマクロブロックの真上のマクロブロックのブロック２からとられる。一般に、マクロブロックが最初のマクロブロック列にある場合に、ブロック０および２のプレディクタＣは、０と等しくなるようにセットされる。
【０２１０】
やはり、位置Ａ、Ｂ、またはＣの、イントラ・コーディングされた隣接マクロブロックは、動きベクトル予測について無視される。
【０２１１】
４ＭＶマクロブロック用の動きベクトルの再構成（例えば、動きベクトル差分情報を加算することによる）の後に、再構成された実際の動きベクトルが、再構成された動きベクトルの予測方向に適切な、順方向動きベクトル・バッファまたは逆方向動きベクトル・バッファに置かれる。欠けている方向の動きベクトル・バッファの対応する空のスロットは、同一極性および反対極性の欠けている方向の動きベクトル・プレディクタを算出して、異なる極性の動きベクトル・プレディクタの間で選択し、その動きベクトル・プレディクタを空のスロットに格納することによって、埋められる。
【０２１２】
図３４Ａおよび３４Ｂをもう一度参照すると、動きベクトル予測について、エンコーダ／デコーダは、擬似コード３４００に示されたスケーリング動作を使用して、別のフィールドの動きベクトル・プレディクタからあるフィールドの動きベクトル・プレディクタを導出する。値の２つの可能なセットが、現在のフィールドがインターレース・ビデオ・フレームの最初のフィールドである場合について図３５の表３５００に示されており、現在のフィールドがインターレース・ビデオ・フレームの２番目のフィールドである場合について図３６の表３６００に示されている。表３５００および３６００では、ＳＣＡＬＥＯＰＰ、ＳＣＡＬＥＳＡＭＥ１、ＳＣＡＬＥＳＡＭＥ２、ＳＣＡＬＥＺＯＮＥ１＿Ｘ、ＳＣＡＬＥＺＯＮＥ１＿Ｙ、ＺＯＮＥ１ＯＦＦＳＥＴ＿Ｘ、およびＺＯＮＥ１ＯＦＦＳＥＴ＿Ｙの値が、基準フレーム距離に依存する。
【０２１３】
いくつかの実装で、インターレースＢフィールドの順方向基準および逆方向基準の基準フレーム距離は、分数コーディングを使用して算出される。ＢＦＲＡＣＴＩＯＮ構文要素（インターレースＢフィールドの直接モード・マクロブロックだけではなく、インターレースＢフィールドの順方向予測モード・マクロブロックおよび逆方向予測モード・マクロブロックについてシグナリングされる）は、次の擬似コードに示されているように順方向および逆方向の基準ピクチャ距離を導出するのに使用される。
【０２１４】
【表２】
2011139524.tif 000004
【０２１５】
（ここで、ＮＩＮＴは、最も近い整数演算子である）。
【０２１６】
ＢＦＲＡＣＴＩＯＮの分子（numerator）および分母（denominator）は、ＢＦＲＡＣＴＩＯＮ構文要素からデコードされる。要素ＢＦＲＡＣＴＩＯＮは、ビットストリーム内で（例えば、インターレースＢフィールドのフレーム・レベルで）送ることができる異なる分数を表すのに使用することができる。この分数は、０と１の間の離散値の限られたセットになり、Ｂピクチャの、そのアンカーによって形成されるインターバル内の相対的な時間的位置を示す。
【０２１７】
インターレースＢフィールドを有するフレームの第２フィールドの順方向予測および逆方向予測について、エンコーダ／デコーダは、図３４Ａおよび図３４Ｂの擬似コード３４００に従って、動きベクトル・スケーリングを実行する。しかし、いくつかの実装で、第１フィールドの逆方向動きベクトル予測を実行するエンコーダ／デコーダは、図４８の擬似コード４８００で定義された関数ｓｃａｌｅｆｏｒｏｐｐｏｓｉｔｅ＿ｘ、ｓｃａｌｅｆｏｒｏｐｐｏｓｉｔｅ＿ｙ、ｓｃａｌｅｆｏｒｓａｍｅ＿ｘ、およびｓｃａｌｅｆｏｒｓａｍｅ＿ｙを使用する。一実装での第１インターレースＢフィールドのＳＣＡＬＥＳＡＭＥ、ＳＣＡＬＥＯＰＰ１、ＳＣＡＬＥＯＰＰ２、ＳＣＡＬＥＺＯＮＥ１＿Ｘ、ＳＣＡＬＥＺＯＮＥ１＿Ｙ、ＺＯＮＥ１ＯＦＦＳＥＴ＿Ｘ、およびＺＯＮＥ１ＯＦＦＳＥＴ＿Ｙの値が、図４９の表４９００に示されている。
【０２１８】
表４９００では、変数Ｎと動きベクトル範囲の間の関係は、上で図３５および図３６ならびに表１を参照して説明した関係と同一である。
【０２１９】
代替案では、基準フレーム距離が別の形で算出されるか、スケーリングが異なるアルゴリズムに従って実行される。例えば、スケーリングが、Ｎの値に関わりなく実行される（すなわち、Ｎが１であると仮定される）。
【０２２０】
Ｘ．インターレースＢフィールドに関する「自己参照」フレーム
インターレースＢフィールドを有するフレームは、２つの別々の（多少独立にコーディングされる）フィールドとしてエンコードされる。上フィールドは、フレームの偶数ラスタライン（走査線０から始まる）からなり、下フィールドは、フレームの奇数ラスタラインからなる。「フィールド・ピクチャ」内のフィールドは、独立にデコード可能なので、これらを事前にセットされた順序で送る必要はない。例えば、エンコーダは、まず下フィールドを送り、それに上フィールドを続けるか、その逆を行うことができる。いくつかの実装で、２つのフィールドの順序は、「ｔｏｐ  ｆｉｅｌｄ  ｆｉｒｓｔ」（上フィールドが先）構文要素によって示され、この構文要素は、フレームの２つのフィールドをデコードする正しい時間的順序に応じて真または偽のいずれかである。
【０２２１】
従来のエンコーダおよびデコーダは、前後のアンカー・フレーム（例えば、ＩフレームまたはＰフレーム）あるいは前後のアンカー・フレームのフィールドを「基準」ピクチャとして使用して、現在のＢピクチャの動き補償を実行した。従来のエンコーダおよびデコーダは、Ｂピクチャまたはその一部をすべてのピクチャの動き補償基準として使用することを禁止してもいた。しかし、本明細書に記載の技法およびツールのいくつかの実装は、これらの「ルール」の１つまたは複数を緩和する。
【０２２２】
例えば、いくつかの実装で、第１インターレースＢフィールドは、前後のアンカー・ピクチャからの第１フィールドおよび第２フィールドを参照する。第２インターレースＢフィールドは、次のアンカー・ピクチャの第１フィールドおよび第２フィールドのほかに、「反対極性」フィールドとして現在のピクチャからの第１インターレースＢフィールドおよび「同一極性」フィールドとして前のアンカー・フレームの同一極性フィールドを参照する。
【０２２３】
図５０Ｂは、インターレース・ビデオ・フレームＢ２の２つのインターレースＢフィールドのそれぞれの基準フィールドを示す図である。図５０Ｂに示された例では、デコードされる第１のＢフィールド（ここでは上フィールド）が、順方向（時間的に過去の）アンカーＰ１の２つの基準フィールドと、逆方向（時間的に将来の）アンカーＰ３からの２つの基準フィールド、合計４つの基準フィールドを参照することを許可される。Ｂ２についてデコードされる第２のインターレースＢフィールドは、同一のインターレース・ビデオ・フレームからの第１フィールド（したがって、Ｂピクチャの一部が基準として働くことを許可しないという慣習が破られる）および前のアンカーＰ１からの１つの基準フィールドならびに将来のアンカーＰ３からの両方のフィールドを参照することを許可される。比較のために、図５０Ａに、インターレース・ビデオ・フレームのインターレースＰフィールドが従う慣習を示す。
【０２２４】
これらのインターレースＢフィールド参照ルールを実装する技法およびツールは、よりよい圧縮をもたらすことができる。インターレース・ビデオのフィールド・コーディングは、激しい動き、すなわち、上フィールドと下フィールドの間にかなりの動きがある場合のエンコーディングに最も効率的である。例えば、このシナリオでは、あるフレームの上（先にコーディングされる）フィールドは、同一フレームの下フィールドのピクセルに対して、より大きい時間的距離にある前のフレームからとられる上フィールドよりはるかによいプレディクタになる。これらの時間的に遠いプレディクタは、このより大きい時間的距離のゆえに、動きが激しいときにはるかに弱い予測を提供する。さらに、オクルージョンの確率は、時間的に離れたプレディクタの場合に大きくなり、これが、コーディングに負荷がかかる、より多くのイントラ・コーディングされたマクロブロックをもたらす。具体的に言うと、実験から、あるフレームの第２の時間的にインターレースされたＢフィールドが同一フレームの第１の時間的にインターレースされたＢフィールドを参照することを許可することによって、大きな圧縮利益を得ることができることが検証された。
【０２２５】
ＸＩ．インターレースＢフィールドでの順方向モードのビットプレーン・コーディング
上のセクションＸで述べたように、いくつかの実装で、現在のフレームの第２のコーディングされるインターレースＢフィールドが、現在のフレームの現在のフレームの第１のコーディングされるインターレースＢフィールドを参照することができる。この「自己参照」技法は、激しい動きを有するフレームのインターレースＢフィールドに効果的である。というのは、現在のフレームの時間的により近いＢフィールドが、しばしば、時間的により遠いアンカー・フィールドよりよいプレディクタであるからである。インターレースＢフィールドを有するフレームが、激しい動きを有し、第２の時間的にインターレースされたＢフィールドが、予測基準として第１の時間的にインターレースされたＢフィールドを選択する場合に、この第２インターレースＢフィールドのマクロブロックに関するより効率的な予測モードは、しばしば、「順方向」になる。
【０２２６】
インターレースＢフィールドの順方向モード予測は、ビットレートを減らすのに効果的なツールなので、特に低ビットレートの状況で、シグナリング・オーバーヘッドを減らして、順方向モード予測をシグナリングすることの総合コストを減らすことに有利に働く。したがって、いくつかの実施形態で、エンコーダは、統一されたビットプレーン・コーディング技法を使用して順方向モード予測情報をエンコードする。例えば、エンコーダは、圧縮されたビットプレーンで順方向モード予測情報をエンコードし、ここで、このビットプレーンの各ビットは、１つのマクロブロックに関連つけられ、各ビットの値は、そのマクロブロックが順方向モードまたは非順方向予測モードのどちらでコーディングされているかをシグナリングする。
【０２２７】
圧縮ビットプレーンは、フレーム・レベルで、フィールド・レベルで、または他のレベルで送ることができる。ビットプレーン・コーディング技法は、インターレースＢフィールドの他の予測モードと比較して、順方向モード・バイアスを活用する。例えば、インターレースＢフィールドのマクロブロックのほとんどが順方向予測を使用する場合に、エンコーダは、順方向／非順方向決定をビットプレーン・コーディングすることによって、マクロブロック当たり１ビット未満にシグナリング・オーバーヘッドを減らすことができる。
【０２２８】
図５１に、１つまたは複数のビットプレーン・コーディング・モードを有するビデオ・エンコーダでインターレースＢフィールドのマクロブロックの順方向／非順方向予測モード決定情報をエンコードする技法５１００を示す。図５２に、１つまたは複数のビットプレーン・コーディング・モードを有するビデオ・エンコーダによってエンコードされた順方向／非順方向予測モード決定情報をデコードする対応する技法５２００を示す。
【０２２９】
図５１を参照すると、エンコーダは、順方向／非順方向予測モード決定情報をコーディングするビットプレーン・コーディング・モードを選択する（５１１０）。コーディング・モードを選択した後に、エンコーダは、選択されたモードの順方向／非順方向予測モード決定情報をエンコードする（５１２０）。エンコーダは、フィールド単位でビットプレーン・コーディング・モードを選択する。代替案では、エンコーダは、ある他の単位（例えば、シーケンス・レベル）でビットプレーン・コーディング・モードを選択する。あるいは、１つのビットプレーン・コーディング・モードだけが使用される場合には、ビットプレーン・コーディング・モードの選択は実行されない。エンコーダが、順方向／非順方向予測モード決定情報のエンコードを終了したときに５１３０、順方向／非順方向予測モード決定情報のエンコーディングが終了する。
【０２３０】
図５２を参照すると、デコーダは、順方向／非順方向予測モード決定情報をエンコードするのにエンコーダによって使用された（エンコーダによってシグナリングされた）ビットプレーン・コーディング・モードを決定する（５２１０）。次に、デコーダは、選択されたモードで順方向／非順方向予測モード決定情報をデコードする（５２２０）。デコーダは、フィールド単位でビットプレーン・コーディング・モードを選択する。代替案では、デコーダは、ある他の単位（例えば、シーケンス・レベル）でビットプレーン・コーディング・モードを選択する。あるいは、１つのビットプレーン・コーディング・モードだけが使用可能である場合には、ビットプレーン・コーディング・モードの選択は実行されない。デコーダが、順方向／非順方向予測モード決定情報のデコーディングを終了したときに（５２３０）、順方向／非順方向予測モード決定情報のデコーディングが終了する。
【０２３１】
いくつかの組み合わされた実装形態による様々なビットプレーン・コーディング・モードのシグナリングおよびデコーディングに関するさらなる詳細については、下のセクションＸＩＶを参照されたい。ビットプレーン・コーディング全般に関するさらなる情報については、特許文献４を参照されたい）。代替案では、順方向／非順方向モード情報を表すビットを、未圧縮でおよび／または他のレベル（例えば、マクロブロック・レベル）で送ることができる。
【０２３２】
非順方向予測が示されている場合に、エンコーダは、そのマクロブロックに非順方向予測モード（例えば、逆方向モード、直接モード、補間モード、またはイントラ・モード）を指定する。いくつかの実施形態で、エンコーダは、下の表２に示されたＶＬＣテーブルを参照して、マクロブロック・レベルで非順方向予測モードをコーディングする。
【０２３３】
【表３】
2011139524.tif 000005
【０２３４】
表２に示された例では、逆方向モードが、好ましい非順方向予測モードである。エンコーダは、１ビット信号を用いて逆方向モードを表し、２ビット信号を用いて直接モードおよび補間モードを表す。代替案では、エンコーダは、異なるコードを使用して、異なる予測モードを表し、かつ／または異なる非順方向予測モードを選択する。
【０２３５】
いくつかの実施形態で、イントラ・モードは、特別な差分動きベクトル値によってシグナリングされ、この値は、コーディングされているその形によって、その予測モードがイントラ・モードであることを示す。したがって、この差分動きベクトル値は、マクロブロックがイントラ・コーディングされていることを推論するのに使用されるが、習慣として、エンコーダは、未定義の予測タイプを有しないように、予測タイプを逆方向にセットする。
【０２３６】
ＸＩＩ．  インターレースＢフィールドの直接モードに関する同一位置の動きベクトルの選択
いくつかの実装で、フィールド・コーディングされたＢピクチャ内のマクロブロックの直接モード動きベクトルは、特別な論理を使用して選択される。インターレースＢフィールド内の現在のマクロブロックについて、次のアンカー・ピクチャの対応するフィールドの同一位置のマクロブロックが、４つの動きベクトルを使用してコーディングされている場合に、この論理は、同一位置のマクロブロックの４つまでの動きベクトルの間で、より優勢な極性（例えば、同一のまたは反対の）を選択する。現在のマクロブロックに使用する動きベクトルを選択すると、エンコーダ／デコーダは、スケーリング動作を実行して、直接モード動きベクトルを与えることができる。
【０２３７】
いくつかの実装で、インターレースＢフィールドの直接モード１ＭＶマクロブロックについて、エンコーダ／デコーダは、同一極性を有する基準フィールド（例えば、時間的に次のＰフィールド）内の同一位置のマクロブロックの１つまたは複数の動きベクトルに基づいて、直接モード・スケーリングに使用される動きベクトルを算出する。基準フィールド内の同一位置のそのマクロブロックが１ＭＶマクロブロックである場合に、エンコーダ／デコーダは、単一の動きベクトルを使用して、インターレースＢフィールド内のマクロブロック用の直接モード動きベクトルを導出する。その一方で、基準フィールド内の同一位置のそのマクロブロックが４ＭＶマクロブロックである場合に、エンコーダ／デコーダは、その４つの動きベクトルの極性を検討し、インターレースＢフィールド内のマクロブロックの直接モード動きベクトルを導出するのに使用される動きベクトルを選択する際に、優勢な極性の方を選択する。エンコーダ／デコーダは、インターレースＢフィールドのデコード中に必要になったときに、基準フィールド内の４ＭＶマクロブロックにこの選択論理を適用することができる。あるいは、エンコーダ／デコーダは、基準フィールドのデコードの後にこの選択論理を適用し、その後、後のインターレースＢフィールド・デコーディングに使用される値だけをバッファリングすることができる。
【０２３８】
例えば、基準フィールド内の同一位置の４ＭＶマクロブロックについて、同一極性のフィールドからの（４つのうちの）動きベクトルの個数が、反対極性のフィールドからの個数に優る場合に、エンコーダ／デコーダは、同一極性の動きベクトルの個数がそれぞれ４、３、２、または１の場合に、同一極性の動きベクトルのｍｅｄｉａｎ−ｏｆ−４、ｍｅｄｉａｎ−ｏｆ−３、２の算術平均、またはその値を使用して、直接モード・インターレースＢフィールド・デコードに使用される動きベクトルを算出する。そうではなく、反対極性のフィールドからの動きベクトルが、同一極性フィールドからの動きベクトルに数で優る場合には、エンコーダ／デコーダは、類似する動作を使用して、直接モード・インターレースＢフィールド・デコードに使用される反対極性フィールドの動きベクトルから代表的動きベクトルを得ることができる。同一位置のマクロブロックの４つの動きベクトルのオリジナル・セットのうちの３つ以上（極性にかかわりなく）がイントラである場合に、エンコーダ／デコーダは、単純に、同一位置の代表的動きベクトルをイントラ（すなわち、（０，０））として扱うことができる。しかし、いくつかの実装で、インターレースＢフィールドのすべてのイントラＭＢが、１ＭＶとしてコーディングされ、したがって、オリジナルの４つの動きベクトルのうちの３つ以上がイントラであることが、同一位置の代表的動きベクトルがイントラとして扱われることになるというケースは、実際には絶対に生じない。
【０２３９】
図５３の擬似コード５３００に、インターレースＢフィールド内の直接モード動きベクトルに対して、基礎として使用される動きベクトルの選択プロセスを示す。いくつかの実装で、この選択プロセスは、順方向および逆方向を指す直接モード動きベクトルを作るスケーリング動作への先駆け（pre-cursor）である。
【０２４０】
ＸＩＩＩ．  インターレース・ビデオ・フレーム内のイントラ・コーディングされたＢフィールド
インターレースＢＩフィールド（または「イントラＢフィールド」）は、その基準ピクチャと独立にコーディングされたフィールドである。インターレースＢＩフィールドは、他のピクチャを予測するためのアンカーとして使用できないという意味で、他のイントラ・フィールド（例えば、インターレースＩフィールド）と異なる。インターレースＢＩフィールドにはピクチャ間依存性がなく、ビットストリーム内でのその存在は、独立にデコード可能なセグメントまたはＧＯＰ（group of pictures）の先頭を表さない。しかし、インターレース・ビデオ・フレームの第１フィールドは、ＢＩフィールドとしてコーディングされた場合に、インターレースＢフィールドとしてコーディングできる、そのフレームの第２フィールドを予測するのに使用することができる。この革新は、フレーム全体をイントラ・フレームとしてエンコードするのでも両方のフィールドをイントラ・フィールドとしてエンコードするのでもなく、多くの場合にフレームの半分（最初にコーディングされるフィールド）だけにイントラ・コーディングを使用することによって、総合的な圧縮も改善する。いくつかの実装で、１つのフレームに、２つのＢフィールド、２つのＢＩフィールド、または１つのＢフィールドと１つのＢＩフィールドを含めることができる。
【０２４１】
インターレースＩフィールドではなくインターレースＢＩフィールドを使用する理由がある。１つは、時間的スケーラビリティを犠牲にすることを回避することである。例えば、デコーダが、デジタル・ビデオをレンダリングしており、処理需要についてゆくためにあるピクチャを即座に捨てることを必要とするときに、そのデコーダは、潜在的に捨てることができるフィールドのシーケンスを探すことができる。シーケンス内のイントラ・フィールドが、キーフィールドであることがわかった場合に、そのデコーダは、他のフィールドの基準として使用するためにそれらをデコードすることを強制され、それらを捨てることはできない。しかし、シーケンス内のイントラ・フィールドが、ＢＩフィールドとしてコーディングされている場合には、デコーダは、後続の動き補償を妥協せずにそれらを捨てるという選択肢を有する。
【０２４２】
インターレースＢＩフィールドは、ＢＩフィールド内の動き補償関連要素（またはその不在をシグナリングする要素）を避けることができるので、インターレースＢＩフィールドがイントラ・コーディングおよびイントラ・デコーディングに使用される構文要素をより効率的にシグナリングするという意味で、イントラ・マクロブロックを用いるインターレースＢフィールドと異なる。言い換えると、インターレースＢＩフィールド（通常のＢフィールドではなく）を使用する理由は、ビデオ・シーケンス内のフィールド間予測が失敗する（例えば、シーン変化または複雑な動きに起因して）時点でインターレースＢフィールドをコーディングするときに生じる。しばしば、そのようなフィールドのほとんどのマクロブロックが、イントラ・マクロブロックとしてコーディングされることを必要とする。このシナリオでは、しばしば、ビットレートに関して、Ｂフィールド全体をＢＩフィールドとしてコーディングすることが、フィールド内のマクロブロックごとに予測モード情報を送ることより安価である。インターレースＢフィールドについてよい予測または動き補償が可能でないときには、これをＢＩフィールドとしてコーディングすることができる。
【０２４３】
いくつかの実装で、エンコーダは、ピクチャ・タイプの可能な値の１つとして、ビットストリーム内でＢＩフィールドの生起（occurrence）をシグナリングすることができる。代替案では、ＢＩフィールドの存在を、他の形で示すことができる。
【０２４４】
ＸＩＶ．  組み合わされた実装形態
ビットストリーム構文、セマンティクス、およびデコーダに関する詳細な組み合わされた実装形態を、主な組み合わされた実装形態からの些細な相違を有する代替の組み合わされた実装形態と併せて、これから説明する。
【０２４５】
Ａ．ビットストリーム構文
様々な組み合わされた実装形態で、インターレースＢピクチャのデータが、複数のレイヤ（例えば、シーケンス・レイヤ、フレーム・レイヤ、フィールド・レイヤ、マクロブロック・レイヤ、ブロック・レイヤ、および／またはサブブロック・レイヤ）を有するビットストリームの形で提示される。
【０２４６】
インターレースＢフィールドおよび／またはＢＩフィールドを有するインターレース・ビデオ・フレームについて、フレーム・レベル・ビットストリーム要素を図５４に示す。各フレームのデータは、フレーム・ヘッダと、それに続くフィールド・レイヤのデータ（フィールドごとに繰り返される「ＦｉｅｌｄＰｉｃＬａｙｅｒ」として図示）からなる。インターレースＢフィールドおよびインターレースＢＩフィールド用のフィールド・ヘッダを構成するビットストリーム要素を、それぞれ図５５および図５６に示す。インターレースＢフィールドおよびインターレースＢＩフィールドのマクロブロック・レイヤ（イントラ・マクロブロック、１ＭＶマクロブロック、または４ＭＶマクロブロックのいずれか）を構成するビットストリーム要素を、それぞれ図５７および図５８に示す。
【０２４７】
インターレースＢフレームについて、フレーム・レベル・ビットストリーム要素を図５９に示す。各フレームのデータは、フレーム・ヘッダとそれに続くマクロブロック・レイヤのデータからなる。インターレースＢフレームのマクロブロック・レイヤ（イントラ・タイプまたは様々なインタ・タイプのマクロブロックのいずれか）を構成するビットストリーム要素を図６０に示す。
【０２４８】
次のセクションで、双方向予測されるインターレース・ピクチャに関するシグナリングに関するフレーム・レイヤ、フィールド・レイヤ、およびマクロブロック・レイヤ内の選択されたビットストリーム要素を説明する。選択されたビットストリーム要素を、特定のレイヤの文脈で説明するが、一部のビットストリーム要素は、複数のレイヤで使用することができる。
【０２４９】
１．  選択されたフレーム・レイヤ要素
図５４は、インターレースＢフィールドおよび／またはインターレースＢＩフィールド（または、潜在的に他の種類のインターレース・フィールド）を収容するフレームのフレーム・レベル・ビットストリーム構文を示す図である。図５９は、インターレースＢフレームのフレーム・レベル・ビットストリーム構文を示す図である。特定のビットストリーム要素を下で説明する。
【０２５０】
フレーム・コーディング・モード（ＦＣＭ）（可変サイズ）  
ＦＣＭは、ピクチャ・コーディング・タイプを示すのに使用される可変長コードワード［「ＶＬＣ」］である。ＦＣＭは、下の表３に示されたフレーム・コーディング・モードの値をとる。
【０２５１】
【表４】
2011139524.tif 000006
【０２５２】
フィールド・ピクチャ・タイプ（ＦＰＴＹＰＥ）（３ビット）  
ＦＰＴＹＰＥは、インターレースＰフィールド、インターレースＩフィールド、インターレースＢフィールド、および／またはインターレースＢＩフィールドを含むフレームのフレーム・ヘッダ内に存在する３ビットの構文要素である。ＦＰＴＹＰＥは、下の表４による、インターレース・ビデオ・フレームのフィールド・タイプの異なる組合せの値をとる。
【０２５３】
【表５】
2011139524.tif 000007
【０２５４】
基準距離（ＲＥＦＤＩＳＴ）（可変サイズ）  
ＲＥＦＤＩＳＴは、可変サイズの構文要素である。この要素は、現在のフレームと基準フレームの間のフレーム数を示す。表５に、ＲＥＦＤＩＳＴ値をエンコードするのに使用されるＶＬＣを示す。
【０２５５】
【表６】
2011139524.tif 000008
【０２５６】
表５の最後の行に、２を超える基準フレーム距離を表すのに使用されるコードワードが示されている。これらは、（２進）１１とそれに続くＮ−３個の１としてコーディングされ、ここで、Ｎは、基準フレーム距離である。このコードワードの最後のビットは、０である。例を示す。  
Ｎ＝３、ＶＬＣコードワード＝１１０、ＶＬＣサイズ＝３  
Ｎ＝４、ＶＬＣコードワード＝１１１０、ＶＬＣサイズ＝４  
Ｎ＝５、ＶＬＣコードワード＝１１１１０、ＶＬＣサイズ＝５
ピクチャ・タイプ（ＰＴＹＰＥ）（可変サイズ）  
ＰＴＹＰＥは、インターレースＢフレーム（または、インターレースＩフレームもしくはインターレースＰフレームなどの他の種類のインターレース・フレーム）のフレーム・ヘッダ内に存在する可変サイズの構文要素である。ＰＴＹＰＥは、下の表６による異なるフレーム・タイプの値をとる。
【０２５７】
【表７】
2011139524.tif 000009
【０２５８】
ＰＴＹＰＥが、フレームがスキップドであることを示す場合に、そのフレームは、その基準フレームと同一であるＰフレームとして扱われる。スキップド・フレームの再構成は、概念的に、基準フレームをコピーすることと同等である。スキップド・フレームは、このフレームについてそれ以上のデータが送られないことを意味する。
【０２５９】
Ｂフレーム直接モードＭＢビット構文要素（ＤＩＲＥＣＴＭＢ）（可変サイズ）  
ＤＩＲＥＣＴＭＢ構文要素は、直接モードでコーディングされたＢピクチャ（ここでは、インターレースＢフレーム）内のマクロブロックを示すのにビットプレーン・コーディングを使用する。ＤＩＲＥＣＴＭＢ構文要素は、直接モードがｒａｗモードでシグナリングされることもシグナリングすることができ、その場合に、直接モードは、インターレースＢフレームのマクロブロックに対してマクロブロック・レベルでシグナリングされる。
【０２６０】
拡張ＭＶ範囲フラグ（ＭＶＲＡＮＧＥ）（可変サイズ）  
ＭＶＲＡＮＧＥは、シーケンス・レイヤＥＸＴＥＮＤＥＤ＿ＭＶビットに１がセットされている場合に存在する可変サイズの構文要素である。ＭＶＲＡＮＧＥ  ＶＬＣは、動きベクトル範囲を表す。
【０２６１】
拡張差分ＭＶ範囲フラグ（ＤＭＶＲＡＮＧＥ）（可変サイズ）  
ＤＭＶＲＡＮＧＥは、シーケンス・レベル構文要素ＥＸＴＥＮＤＥＤ＿ＤＭＶ＝１の場合を提示する可変サイズの構文要素である。ＤＭＶＲＡＮＧＥ  ＶＬＣは、動きベクトル差分範囲を表す。
【０２６２】
マクロブロック・モード・テーブル（ＭＢＭＯＤＥＴＡＢ）（２ビットまたは３ビット）  
ＭＢＭＯＤＥＴＡＢ構文要素は、固定長フィールドである。インターレースＰフィールドについて、ＭＢＭＯＤＥＴＡＢは、マクロブロック・レイヤ内のマクロブロック・モード構文要素（ＭＢＭＯＤＥ）をデコードするのに８つのハフマン・テーブルのうちのどれが使用されるかを示す３ビット値である。
【０２６３】
動きベクトルテーブル（ＭＶＴＡＢ）（２ビットまたは３ビット）  
ＭＶＴＡＢ構文要素は、２ビットまたは３ビットの値である。ＮＵＭＲＥＦ＝１のインターレースＰフィールドについて、ＭＶＴＡＢは、動きベクトル・データをデコードするのに８つのインターレース・ハフマ・ンテーブルのどれが使用されるかを示す３ビットの構文要素である。
【０２６４】
２ＭＶブロック・パターン・テーブル（２ＭＶＢＰＴＡＢ）（２ビット）  
２ＭＶＢＰＴＡＢ構文要素は、２ＭＶフィールド・マクロブロック内の２ＭＶブロック・パターン（２ＭＶＢＰ）構文要素をデコードするのに４つのハフマン・テーブルのどれが使用されるかをシグナリングする２ビット値である。
【０２６５】
４ＭＶブロック・パターン・テーブル（４ＭＶＢＰＴＡＢ）（２ビット）  
４ＭＶＢＰＴＡＢ構文要素は、４ＭＶマクロブロック内の４ＭＶブロック・パターン（４ＭＶＢＰ）構文要素をデコードするのに４つのハフマン・テーブルのどれが使用されるかをシグナリングする２ビット値である。
【０２６６】
代替の組み合わされた実装形態では、ピクチャ・タイプ情報が、インターレースＢフィールドを含むインターレース・ビデオ・フレームのフレーム・レベルではなく、インターレースＢフィールドのフィールド・レベルの始めにシグナリングされ、基準距離が省略される。
【０２６７】
２．選択されたフィールド・レイヤ要素
図５５は、組み合わされた実装形態でのインターレースＢフィールドのフィールド・レベル・ビットストリーム構文を示す図である。特定のビットストリーム要素を、下で説明する。
【０２６８】
動きベクトル・モード（ＭＶＭＯＤＥ）（可変サイズまたは１ビット）  
ＭＶＭＯＤＥ構文要素は、４つの動きベクトル・コーディング・モードのうちの１つまたは（いくつかのタイプのピクチャに関して可能性は殆どない）１つの強度補償モード（intensity compensation mode）をシグナリングする。複数の後続要素が、追加の動きベクトル・モード情報および／または強度補償情報を供給する。
【０２６９】
Ｂフィールド順方向モードＭＢビット構文要素（ＦＯＲＷＡＲＤＭＢ）（可変サイズ）  
ＦＯＲＷＡＲＤＭＢ構文要素は、ビットストリーム・コーディングを使用して、順方向モードでコーディングされたＢフィールド内のマクロブロックを示す。ＦＯＲＷＡＲＤＭＢ構文要素は、順方向モードがｒａｗモードでシグナリングされることをシグナリングすることもでき、その場合に、順方向／非順方向モード決定が、マクロブロック・レベルでシグナリングされる。
【０２７０】
図５６は、組み合わされた実装形態でのインターレースＢＩフィールドのフィールド・レベル・ビットストリーム構文を示す図である。組み合わされた実装形態では、インターレースＢＩフィールドのフィールド・レベル・ビットストリーム構文が、インターレースＩフィールドと同一の構文要素を使用する。
【０２７１】
３．選択されたマクロブロック・レイヤ要素
図５７は、組み合わされた実装形態でのインターレースＢフィールドのマクロブロックのマクロブロック・レベル・ビットストリーム構文を示す図である。図６０は、組み合わされた実装形態でのインターレースＢフレームのマクロブロックのマクロブロック・レベル・ビットストリーム構文を示す図である。特定のビットストリーム要素を、下で説明する。マクロブロックのデータは、マクロブロック・ヘッダとそれに続くブロック・レイヤ・データからなる。
【０２７２】
マクロブロック・モード（ＭＢＭＯＤＥ）（可変サイズ）  
ＭＢＭＯＤＥ構文要素は、マクロブロック・タイプ（例えば、インターレースＢフィールドでは１ＭＶ、４ＭＶ、またはイントラ）を示し、ＣＢＰフラグおよび動きベクトル・データの存在も示す。
【０２７３】
順方向Ｂフィールド・コーディング・モード（ＦＯＲＷＡＲＤＢＩＴ）（１ビット）  
ＦＯＲＷＡＲＤＢＩＴは、ｒａｗモードが使用されていることをフィールド・レベル構文要素ＦＯＲＷＡＲＤＭＢが示す場合に、インターレースＢフィールドに存在する１ビットの構文要素である。ＦＯＲＷＡＲＤＢＩＴ＝１の場合には、そのマクロブロックは、順方向モードを使用してコーディングされている。
【０２７４】
Ｂマクロブロック動き予測タイプ（ＢＭＶＴＹＰＥ）（可変サイズ）  
ＢＭＶＴＹＰＥは、マクロブロックが順方向予測、逆方向予測、または補間予測のどれを使用するかを示す、インターレースＢフレーム・マクロブロックおよびインターレースＢフィールド・マクロブロックに存在する可変サイズの構文要素である。表７に示されているように、インターレースＢフレームのマクロブロックについて、ＢＦＲＡＣＴＩＯＮの値が、ＢＭＶＴＹＰＥと共に、どのタイプが使用されるかを決定する。
【０２７５】
【表８】
2011139524.tif 000010
【０２７６】
インターレースＢフィールドでは、マクロブロック・モードが（ＦＯＲＷＡＲＤＭＢ構文要素またはＦＯＲＷＡＲＤＢＩＴ構文要素によって示される）順方向でなく、４ＭＶが使用されていない場合に、ＢＭＶＴＹＰＥが送られる。この場合に、ＢＭＶＴＹＰＥは、Ｂマクロブロックが、逆方向、直接、または補間であるかどうかをシグナリングするのに使用される。これは、単純なＶＬＣであり、逆方向＝０、直接＝１０、補間＝１１である。マクロブロックが順方向でなく、４ＭＶが使用されている場合に、ＢＭＶＴＹＰＥは逆方向である。というのは、４ＭＶでは、順方向モードおよび逆方向モードだけが許容されるからである。
【０２７７】
補間されたＭＶが存在（ＩＮＴＥＲＰＭＶＰ）（１ビット）  
ＩＮＴＥＲＰＭＶＰは、マクロブロック・タイプが補間であることをフィールド・レベル構文要素ＢＭＶＴＹＰＥが示す場合にＢフィールド・マクロブロックに存在する１ビットの構文要素である。ＩＮＴＥＲＰＭＶＰ＝１の場合には、補間されたＭＶが存在し、そうでない場合には存在しない。
【０２７８】
Ｂマクロブロック動きベクトル１（ＢＭＶ１）（可変サイズ）  
ＢＭＶ１は、そのマクロブロックの第１動きベクトルを差分式にエンコードする可変サイズの構文要素である。
【０２７９】
Ｂマクロブロック動きベクトル２（ＢＭＶ２）（可変サイズ）  
ＢＭＶ２は、補間モードが使用される場合にインターレースＢフレーム・マクロブロックおよびインターレースＢフィールド・マクロブロックに存在する可変サイズの構文要素である。この構文要素は、そのマクロブロックの第２動きベクトルを差分式にエンコードする。
【０２８０】
４ＭＶブロック・パターン（４ＭＶＢＰ）（４ビット）  
４ＭＶＢＰ構文要素は、４つの輝度ブロックのうちのどれが非０動きベクトル差分を収容しているかを示し、その使用は、下で詳細に説明する。
【０２８１】
ブロック・レベル動きベクトル・データ（ＢＬＫＭＶＤＡＴＡ）（可変サイズ）  
ＢＬＫＭＶＤＡＴＡは、ブロック用の動き情報を含む可変サイズの構文要素であり、４ＭＶマクロブロックに存在する。
【０２８２】
フィールド変換フラグ（ＦＩＥＬＤＴＸ）（１ビット）  
ＦＩＥＬＤＴＸは、インターレースＢフレームのイントラ・コーディングされたマクロブロックに存在する１ビットの構文要素である。この構文要素は、マクロブロックがフレーム・コーディングされているかフィールド・コーディングされているか（基本的に、マクロブロックの内部編成）を示す。ＦＩＥＬＤＴＸ＝１は、マクロブロックがフィールド・コーディングされていることを示す。そうでない場合には、マクロブロックはフレーム・コーディングされている。インター・コーディングされたマクロブロックでは、この構文要素をＭＢＭＯＤＥから推論することができる。
【０２８３】
直接Ｂフレーム・コーディング・モード（ＤＩＲＥＣＴＢＢＩＴ）（１ビット）  
ＤＩＲＥＣＴＢＢＩＴは、ｒａｗモードが使用されていることをフレーム・レベル構文要素ＤＩＲＥＣＴＭＢが示す場合にインターレースＢフレーム・マクロブロックに存在する１ビットの構文要素である。ＤＩＲＥＣＴＢＢＩＴ＝１の場合に、そのマクロブロックは、直接モードを使用してコーディングされている。
【０２８４】
ＢフレームＭＶ切替（ＭＶＳＷ）（１ビット）  
ＭＶＳＷは、ＭＢがフィールド・モードであり、ＢＭＶＴＹＰＥが順方向または逆方向である場合にインターレースＢフレーム・マクロブロックに存在する１ビットの構文要素である。ＭＶＳＷ＝１の場合に、ＭＶタイプおよび予測タイプが、上フィールドから下フィールドに進む際に順方向から逆方向に（または逆方向から順方向に）変化する。
【０２８５】
２つの動きベクトル・ブロック・パターン（２ＭＶＢＰ）（可変サイズ）  
２ＭＶＢＰは、インターレースＢフレーム・マクロブロックに存在する可変サイズの構文要素である。この構文要素は、マクロブロックが１つの動きベクトルを収容することをＭＢＭＯＤＥ構文要素が示し、そのマクロブロックが補間マクロブロックである場合に存在する。この場合に、２ＭＶＢＰは、２つの動きベクトル（順方向動きベクトルおよび逆方向動きベクトル）のうちのどちらが存在するかを示す。
【０２８６】
動きベクトル・データ（ＭＶＤＡＴＡ）（可変サイズ）  
ＭＶＤＡＴＡは、マクロブロック用の動きベクトルの差分をエンコードする可変サイズの構文要素であるが、そのデコーディングは、下で詳細に説明する。
【０２８７】
図５８は、組み合わされた実装形態でのインターレースＢＩフィールドのマクロブロック・レベル・ビットストリーム構文を示す図である。この組み合わされた実装形態では、インターレースＢＩフィールドのマクロブロック・レベル・ビットストリーム構文が、インターレースＩフィールドと同一の構文要素を使用する。
【０２８８】
Ｂ．インターレースＢフィールドのデコード
次のセクションでは、組み合わされた実装形態でインターレースＢフィールドをデコードするプロセスを説明する。
【０２８９】
１．フレーム／フィールド・レイヤ・デコーディング
インターレースＢフィールドは、２つのタイプ、すなわち１ＭＶまたはミックスドＭＶのうちの１つとすることができる。
【０２９０】
１ＭＶインターレースＢフィールドでは、マクロブロックの予測タイプ（ＢＭＶＴＹＰＥ）に応じて、０個、１個、または２個のいずれかの動きベクトルが、予測されるブロックの変位を表すのに使用される。ＢＭＶＴＹＰＥがＤＩＲＥＣＴと等しいときには、順方向動きベクトルおよび逆方向動きベクトルは、推論され、それ以上の動きベクトルは、明示的にシグナリングされない。ＢＭＶＴＹＰＥがＩＮＴＥＲＰＯＬＡＴＥＤであるときには、２つの動きベクトルすなわち順方向動きベクトルおよび逆方向動きベクトルがデコードされる。順方向の場合および逆方向の場合には、１つの動きベクトルだけがデコードされる。１ＭＶモードは、ＭＶＭＯＤＥピクチャ・レイヤ構文要素によってシグナリングされる。
【０２９１】
ミックスドＭＶインターレースＢフィールドでは、各マクロブロックを、１ＭＶマクロブロックまたは４ＭＶマクロブロックとしてエンコードすることができる。４ＭＶマクロブロックでは、４つの輝度ブロックのそれぞれが、１つの動きベクトルを関連付けられる。さらに、４ＭＶマクロブロックは、インターレースＢフィールド内で順方向予測タイプまたは逆方向予測タイプ（ＢＭＶＴＹＰＥ）だけに関連付けることができる。各マクロブロックの１ＭＶモードまたは４ＭＶモードは、すべてのマクロブロックのＭＢＭＯＤＥ構文要素によって示される。ミックスドＭＶモードは、ＭＶＭＯＤＥピクチャ・レイヤ構文要素によってシグナリングされる。
【０２９２】
２．マクロブロック・レイヤ・デコーディング
インターレースＢフィールド内のマクロブロックは、３つの可能なタイプすなわち、１ＭＶ、４ＭＶ、およびイントラのうちの１つとすることができる。さらに、マクロブロックは、４つの予測タイプ（ＢＭＶＴＹＰＥ）すなわち、順方向、逆方向、直接、または補間のうちの１つとすることができる。マクロブロック・タイプは、マクロブロック・レイヤ内のＭＢＭＯＤＥ構文要素によってシグナリングされる。予測のタイプは、各マクロブロックの順方向／非順方向をシグナリングするフレーム・レベル・ピットプレーンＦＯＲＷＡＲＤＭＢと、予測タイプが非順方向の場合のマクロブロック・レベルＢＭＶＴＹＰＥ構文要素の組合せによってシグナリングされる。
【０２９３】
次のセクションで、１ＭＶタイプおよび４ＭＶと、これらをどのようにシグナリングするかを説明する。
【０２９４】
インターレースＢフィールド内の１ＭＶマクロブロック  
１ＭＶマクロブロックは、１ＭＶインターレースＢフィールドおよびミックスドＭＶインターレースＢフィールドに生起することができる。１ＭＶマクロブロック内では、単一の動きベクトルが、そのマクロブロック内の６つすべてのブロックの現在のピクチャと基準ピクチャの間の変位を表す。１ＭＶマクロブロックについて、マクロブロック・レイヤのＭＢＭＯＤＥ構文要素が、次の３つを示す。  
１）マクロブロック・タイプが１ＭＶであること  
２）ＣＢＰＣＹ構文要素が存在するかどうか  
３）ＢＭＶ１構文要素が存在するかどうか
ＢＭＶ１構文要素が存在することをＭＢＭＯＤＥ構文要素が示す場合に、そのＢＭＶ１構文要素は、マクロブロック・レイヤ内の対応する位置に存在する。そのＢＭＶ１構文要素は、動きベクトル差分をエンコードしたものである。この動きベクトル差分を動きベクトル・プレディクタと組み合わせて、動きベクトルを再構成する。ＢＭＶ１構文要素が存在しないことをＭＢＭＯＤＥ構文要素が示す場合に、動きベクトル差分が０であると仮定され、したがって、動きベクトルは、動きベクトル・プレディクタと等しい。
【０２９５】
ＣＢＰＣＹ構文要素が存在することをＭＢＭＯＤＥ構文要素が示す場合に、そのＣＢＰＣＹ構文要素は、マクロブロック・レイヤ内の対応する位置に存在する。ＣＢＰＣＹは、６つのブロックのうちのどれがブロック・レイヤでコーディングされているかを示す。ＣＢＰＣＹ構文要素が存在しないことをＭＢＭＯＤＥ構文要素が示す場合に、ＣＢＰＣＹが０と等しいと仮定され、マクロブロック内の６つのどのブロックについてもブロックデータは存在しない。
【０２９６】
さらに、マクロブロック・タイプが１ＭＶであり、マクロブロックの予測タイプが補間である場合に、エンコーダは、ＩＮＴＥＲＰＭＶＰ構文要素を使用して、第２動きベクトル差分ＢＭＶ２が存在するか否かをシグナリングする。存在する場合には、デコーダは、ＢＭＶ１に続いて直ちにＢＭＶ２をデコードする。そうでない場合には、ＢＭＶ２の動きベクトル差分が０と仮定され、したがって、第２動きベクトルは、動きベクトル・プレディクタと等しい。
【０２９７】
予測タイプが補間であるときには、ＢＭＶ１が順方向動きベクトルに対応し、ＢＭＶ２が逆方向動きベクトルに対応する。
【０２９８】
インターレースＢフィールド内の４ＭＶマクロブロック  
４ＭＶマクロブロックは、ミックスドＭＶ  Ｂフィールド・ピクチャに生起することができるだけであり、順方向予測タイプおよび逆方向予測タイプに制限される。４ＭＶマクロブロックでは、４つの輝度ブロックのそれぞれが、関連する動きベクトルを有する。クロマ・ブロックの変位は、この４つの輝度動きベクトルから導出される。ミックスドＭＶインターレースＢフィールドでは、４ＭＶマクロブロックを、順方向予測タイプおよび逆方向予測タイプだけに関連付けることができる。
【０２９９】
４ＭＶマクロブロックについて、マクロブロック・レイヤのＭＢＭＯＤＥ構文要素は、次の３つを示す。  
１）そのマクロブロックが４ＭＶであること  
２）ＣＢＰＣＹ構文要素が存在するかどうか  
３）４ＭＶＢＰ構文要素が存在するかどうか
【０３００】
４ＭＶＢＰ構文要素は、４つの輝度ブロックのうちのどれが非０動きベクトル差分を収容するかを示す。４ＭＶＢＰ構文要素は、０と１５の間の値にデコードされる。４ＭＶＢＰの４つのビット位置のそれぞれについて、０の値は、動きベクトル差分（ＢＬＫＭＶＤＡＴＡ）がそのブロックについて存在しないことを示し、動きベクトル差分は、０と仮定される。１の値は、そのブロック用の動きベクトル差分（ＢＬＫＭＶＤＡＴＡ）が、対応する位置に存在することを示す。例えば、４ＭＶＢＰが、１１００（２進）の値にデコードされる場合に、そのビットストリームは、ブロック０および１にはＢＬＫＭＶＤＡＴＡを収容し、ブロック２および３にはＢＬＫＭＶＤＡＴＡが存在しない。
【０３０１】
４ＭＶＢＰ構文要素が存在しないことをＭＢＭＯＤＥ構文要素が示す場合には、４つの輝度ブロックのすべてについて動きベクトル差分データ（ＢＬＫＭＶＤＡＴＡ）が存在すると仮定される。
【０３０２】
ＭＶＭＯＤＥ構文要素がミックスドＭＶまたはすべて１ＭＶのどちらを示すかに応じて、ＭＢＭＯＤＥは、次のように情報をシグナリングする。下の表８に、すべて１ＭＶのピクチャ内のマクロブロックに関してＭＢＭＯＤＥ要素が情報をどのようにシグナリングするかを示す。
【０３０３】
【表９】
2011139524.tif 000011
【０３０４】
下の表９に、ミックスドＭＶピクチャ内のマクロブロックに関してＭＢＭＯＤＥ要素が情報をどのようにシグナリングするかを示す。
【０３０５】
【表１０】
2011139524.tif 000012
【０３０６】
８つのコーディングテーブルのうちの１つが、ＭＢＭＯＤＥをシグナリングするのに使用される。使用される特定のテーブルは、ＭＢＭＯＤＥＴＡＢ構文要素を介してシグナリングされる。
【０３０７】
次のセクションでは、予測タイプ・デコーディングおよび直接モード動きベクトルのデコーディングを説明する。
【０３０８】
インターレースＢフィールドでの予測タイプ・デコーディング（ＢＭＶＴＹＰＥ）  
予測タイプは、次のルールに従ってデコードされる。マクロブロックが順方向タイプであることをピクチャ・レベル・ビットプレーンＦＯＲＷＡＲＤＭＢが示す場合には、そのマクロブロックの予測タイプに順方向をセットする。ＦＯＲＷＡＲＤＭＢ要素がｒａｗとしてコーディングされている場合には、エンコーダ／デコーダは、マクロブロック・レベルの追加ビットＦＯＲＷＡＲＤＢＩＴを使用して、予測タイプが順方向であるか否かを判断する。
【０３０９】
予測タイプが非順方向であり、ＭＢＭＯＤＥ構文要素によるシグナリング（ミックスドＭＶ  Ｂピクチャでのみ可能）によってマクロブロックが４ＭＶを使用している場合に、４ＭＶモードには順方向タイプおよび逆方向タイプだけを関連付けることができるので、デコーダは、予測タイプが逆方向であると直接に推論することができる。そうでない場合には、デコーダは、ＢＭＶＴＹＰＥ構文要素を明示的にデコードする。
【０３１０】
インターレースＢフィールド内の直接モード動きベクトルのデコーディング  
インターレースＢフィールドの直接モード動きベクトルをデコードするために、デコーダは、まず、前にデコードされた（すなわち、時間的に将来の）アンカー（ＩまたはＰ）ピクチャからの動きベクトルをバッファリングする。これらのうちで、デコーダは、上Ｂフィールドの直接モード動きベクトルを算出するためのプレディクタとして上フィールドに対応するバッファリングされた動きベクトルを使用し、下Ｂフィールドの動きベクトルを算出するために下フィールドに対応するバッファリングされた動きベクトルを使用する。例えば、フィールドｚ（ｚ＝上／下）内のマクロブロック（ｘ，ｙ）は、前にデコードされたＩフィールドまたはＰフィールドｚのマクロブロック（ｘ，ｙ）（すなわち、現在のフィールドと同一極性のアンカー・フィールド内の同一位置のマクロブロック）からバッファリングされた動きベクトルを参照する。
【０３１１】
アンカー・ピクチャからバッファリングされた動きベクトルがイントラである（前にデコードされたフィールドｚがＩフィールドである場合など）場合、またはアンカー・ピクチャがＰフィールドであるがマクロブロック（ｘ，ｙ）がイントラ・コーディングされている場合に、デコーダは、バッファリングされた動きベクトルを（０，０）として扱う。同一位置のマクロブロックが１ＭＶである場合に、デコーダは、その動きベクトルを使用する。同一位置のマクロブロックが４ＭＶである場合に、デコーダは、図５３の擬似コード５３００に記載の論理を使用して、動きベクトル・プレディクタを算出する。
【０３１２】
擬似コード５３００では、ＳｅｌｅｃｔＤｉｒｅｃｔＭｏｄｅＭＶＦｒｏｍＣｏｌｏｃａｔｅｄＭＢが、直接モード算出に使用される動きベクトル・プレディクタを導出する。デコーダは、前にデコードされたアンカー・ピクチャからのすべての動きベクトルをバッファリングし、その後、Ｂフィールドのデコード中に上の直接モード・ルールを適用することができ、あるいは、デコーダは、アンカー・フィールドをデコードしている間に上の直接モード・ルールを適用し、その結果もたらされるＢフィールド用の動きベクトルをバッファリングすることができる。
【０３１３】
上で得られた動きベクトルを用いて、デコーダは、スケーリング論理（図１９のＳｃａｌｅ＿Ｄｉｒｅｃｔ＿ＭＶ）を適用する。Ｓｃａｌｅ＿Ｄｉｒｅｃｔ＿ＭＶは、順方向および逆方向を指す動きベクトルを得る。Ｓｃａｌｅ＿Ｄｉｒｅｃｔ＿ＭＶは、上フィールドと下フィールドの両方を指す順方向動きベクトルおよび逆方向動きベクトルをもたらすことができる。これは、直接動きベクトルが、エンコーダによって評価され、よい予測を与えるときに限って選択されるという理由で、また、インターレースＢフィールドが、順方向と逆方向の両方で２つの基準を使用するという理由で、有効である。
【０３１４】
代替の実装で、直接モードで動きベクトルを生成してスケーリングする任意の他のプロセスを使用することができ、これには、バッファリングをまったく用いない（例えば、乱数ジェネレータを使用して０バイアス・ラプラス分布をシミュレートする）プロセスが含まれ、このプロセスは、メモリ制約のあるデバイスに有用である可能性がある。そのようなプロセスは、よいエンコーダが、直接モード動きベクトルの悪い推測を破棄し、より正確な推測をビットストリーム内に残すという理由で、まだ役に立つ。
【０３１５】
３．動きベクトル・デコーディング・プロセス
次のセクションでは、組み合わされた実装形態での、インターレースＢフィールドのブロックおよびマクロブロックに関する動きベクトル・デコーディング・プロセスを説明する。
【０３１６】
順方向予測コンテクストおよび逆方向予測コンテクストの取り込み  
順方向動きベクトルおよび順方向動きベクトルは、別々にバッファリングされ、それぞれ順方向動きベクトルおよび逆方向動きベクトルの予測に使用される。順方向コンテクストおよび逆方向コンテクストに関する別々のバッファの使用は、例えば上のセクションＸに記載されている。動きベクトル・プレディクタの選択の技法は、背景のセクションＩＩＩ、詳細な説明のセクションＩＩＩ、および本明細書の他の部分に記載されている。
【０３１７】
順方向動きベクトルがデコードされる際に予測される動きベクトルを逆方向バッファ（「欠けている方向の」バッファ）に埋める（または、逆方向動きベクトルがデコードされる際に順方向バッファを埋める）ときに、追加すべき２つの追加の詳細がある。通常、エンコーダ／デコーダは、予測を形成するために、動きベクトル・タイプ情報（例えば、１ＭＶなど）ならびに前にデコードされた動きベクトルの極性の両方を使用することができる。しかし、「穴埋め」の場合に、エンコーダ／デコーダは、欠けている方向タイプの動きベクトルを実際にはデコードしなかったので、動きベクトル・タイプ情報または極性情報（例えば、同一極性または反対極性）を有しない。この組み合わされた実装形態では、エンコーダ／デコーダは、動きベクトル・タイプに１ＭＶをセットし、プレディクタとして優勢フィールド動きベクトルを選択する。図４７の擬似コード４７００に、この組み合わされた実装形態での極性選択プロセスが記載されている。
【０３１８】
イントラ・コーディングされたマクロブロックについて、「イントラ動きベクトル」が、順方向と逆方向の両方の動き予測プレーンを埋め込むのに使用される。「イントラ動きベクトル」の一貫性のある表現のいずれも、デコーダ実装によって選択することができる。例えば、動きベクトルが、２バイトｓｈｏｒｔ配列として格納されている場合に、「イントラ動きベクトル」を、動きベクトル配列に埋め込む一意の大きい定数として表して、そのマクロブロックがイントラとしてコーディングされたことを示すことができる。
【０３１９】
Ｂフィールド内の順方向動きベクトル予測  
順方向基準フレーム距離を、ＢＦＲＡＣＴＩＯＮ構文要素およびＲＥＦＤＩＳＴ構文要素から算出する。順方向動きベクトル予測は、上のセクションＸで説明したように進行する。
【０３２０】
Ｂフィールド内の逆方向動きベクトル予測  
逆方向基準フレーム距離を、ＢＦＲＡＣＴＩＯＮ構文要素およびＲＥＦＤＩＳＴ構文要素から算出する。逆方向動きベクトル予測は、上のセクションＸで説明したように進行する。
【０３２１】
動きベクトル差分のデコード  
ＢＭＶ１構文要素、ＢＭＶ２構文要素、またはＢＬＫＭＶＤＡＴＡ構文要素に、マクロブロックまたはマクロブロック内のブロックの動き情報がエンコードされている。１ＭＶマクロブロックは、ＢＭＶ１構文要素およびＢＭＶ２構文要素を有し、４ＭＶマクロブロックは、０個と４個の間のＢＬＫＭＶＤＡＴＡ構文要素を有する場合がある。
【０３２２】
予測タイプ（ＢＭＶＴＹＰＥ）が補間であるときには、ＢＭＶ１が順方向動きベクトル残差に対応し、ＢＭＶ２が逆方向動きベクトル残差に対応する。
【０３２３】
次のセクションでは、Ｂピクチャに適用される２つの基準の場合に動きベクトル差分をどのように算出するかを説明する。
【０３２４】
２つの基準フィールド・ピクチャでの動きベクトル差分  
２つの基準フィールド・ピクチャは、フィールド・ピクチャを使用するインターレース・フレームのコーディングに生起する。このシーケンスの各フレームが、２つのフィールドに分離され、各フィールドが、本質的にプログレッシブ・コード・パスであるものを使用してコーディングされる。
【０３２５】
２つの基準フィールドを有するフィールド・ピクチャ（例えば、インターレースＢフィールドを有するピクチャ）では、マクロブロックの各ＭＶＤＡＴＡ構文要素または各ＢＬＫＭＶＤＡＴＡ構文要素が、次の３つを一緒にエンコードする。１）水平動きベクトル差分成分と、２）垂直動きベクトル差分成分と、３）優勢プレディクタまたは非優勢プレディクタのどちらが使用されるかすなわち、２つのフィールドのうちのどちらが動きベクトルによって参照されるか。
【０３２６】
ＭＶＤＡＴＡ構文要素またはＢＬＫＭＶＤＡＴＡ構文要素は、可変長ハフマン・コードワードとそれに続く固定長コードワードである。ハフマン・コードワードの値は、固定長コードワードのサイズを決定する。ピクチャ・レイヤのＭＶＴＡＢ構文要素が、この可変サイズ・コードワードをデコードするのに使用されるハフマン・テーブルを指定する。図６１Ａの擬似コード６１００に、動きベクトル差分および優勢／非優勢プレディクタ情報がどのようにデコードされるかを示す。
【０３２７】
値ｐｒｅｄｉｃｔｏｒ＿ｆｌａｇ、ｄｍｖ＿ｘ、およびｄｍｖ＿ｙは、図６１Ａの擬似コード６１００で算出される。擬似コード６１００内の各値は、次のように定義される。  
ｄｍｖ＿ｘ：差分水平動きベクトル成分  
ｄｍｖ＿ｙ：差分垂直動きベクトル成分  
ｋ＿ｘ、ｋ＿ｙ：長い動きベクトルの固定長  
ｋ＿ｘおよびｋ＿ｙは、ＭＶＲＡＮＧＥシンボルによって定義される動きベクトル範囲に依存する。
【０３２８】
【表１１】
2011139524.tif 000013
【０３２９】
ｅｘｔｅｎｄ＿ｘ：水平動きベクトル差分の拡張された範囲。  
ｅｘｔｅｎｄ＿ｙ：垂直動きベクトル差分の拡張された範囲。
【０３３０】
ｅｘｔｅｎｄ＿ｘおよびｅｘｔｅｎｄ＿ｙは、ＤＭＶＲＡＮＧＥピクチャ・フィールド構文要素から導出される。水平成分に関して拡張された範囲が使用されることをＤＭＶＲＡＮＧＥが示す場合に、ｅｘｔｅｎｄ＿ｘ＝１である。そうでない場合に、ｅｘｔｅｎｄ＿ｘ＝０である。同様に、垂直成分に関して拡張された範囲が使用されることをＤＭＶＲＡＮＧＥが示す場合に、ｅｘｔｅｎｄ＿ｙ＝１であり、そうでない場合にｅｘｔｅｎｄ＿ｙ＝０である。
【０３３１】
変数ｐｒｅｄｉｃｔｏｒ＿ｆｌａｇは、優勢または非優勢のどちらの動きベクトル・プレディクタが使用されるかを示す２値フラグである（０＝優勢プレディクタが使用され、１＝非優勢プレディクタが使用される）。ｏｆｆｓｅｔ＿ｔａｂｌｅ配列およびｓｉｚｅ＿ｔａｂｌｅ配列は、図６１Ａに示されているように定義される。
【０３３２】
図６１Ｂの擬似コード６１１０に、代替の組み合わされた実装形態で動きベクトル差分が２つの基準フィールドに対してどのようにコーディングされるかを示す。擬似コード６１１０は、異なる形で動きベクトル差分をデコードする。例えば、擬似コード６１１０では、拡張された動きベクトル差分範囲の処理が省略されている。
【０３３３】
動きベクトル・プレディクタ  
動きベクトルは、前のセクションで算出された動きベクトル差分を動きベクトル・プレディクタに加算することによって算出される。次のセクションでは、この組み合わされた実装形態で、１ＭＶおよびミックスドＭＶのインターレースＢフィールド内のマクロブロックについて動きベクトル・プレディクタをどのように算出するかを説明する。
【０３３４】
１ＭＶインターレースＢフィールドの動きベクトル・プレディクタ  
図５Ａおよび５Ｂは、１ＭＶマクロブロックの候補動きベクトル・プレディクタと見なされるマクロブロックの位置を示す図である。候補プレディクタは、マクロブロックが行の最後のマクロブロックである場合を除いて、左、上、および右上のマクロブロックからとられる。行の最後のマクロブロックである場合には、プレディクタＢが、右上ではなく左上のマクロブロックからとられる。フレームが１マクロブロック幅である特別な場合について、プレディクタは、必ずプレディクタＡ（上プレディクタ）である。マクロブロックが最上行にある（ＡプレディクタおよびＢプレディクタがないか、プレディクタがまったくない）特別な場合は、上で図３３Ａから３３Ｆを参照し、下で図６２Ａ〜６２Ｆを参照して対処される。
【０３３５】
ミックスドＭＶインターレースＢフィールドの動きベクトル・プレディクタ  
図６Ａ〜１０に、ミックスドＭＶインターレースＢフィールド内の１ＭＶマクロブロックまたは４ＭＶマクロブロックの動きベクトルの候補動きベクトルと見なされるブロックまたはマクロブロックの位置を示す。
【０３３６】
インターレースＢフィールドの優勢ＭＶプレディクタおよび非優勢ＭＶプレディクタ  
インター・コーディングされたマクロブロックごとに、２つの動きベクトル・プレディクタが導出される。一方は優勢フィールドから、他方は非優勢フィールドから導出される。優勢フィールドは、近傍内に実際の値の動きベクトル・プレディクタ候補の過半数を収容するフィールドと見なされる。同数の場合には、反対のフィールドの動きベクトル・プレディクタが、（時間的により近いので）優勢プレディクタと見なされる。イントラ・コーディングされたマクロブロックは、優勢／非優勢プレディクタの算出では考慮されない。すべての候補プレディクタ・マクロブロックがイントラ・コーディングされている場合には、優勢および非優勢の動きベクトル・プレディクタに０がセットされ、優勢プレディクタが、反対のフィールドからとられる。
【０３３７】
インターレースＢフィールドでの動きベクトル・プレディクタの算出  
基準ごとに１つの、２つの動きベクトル・プレディクタが、ブロックまたはマクロブロックの動きベクトル用に算出される。図６２Ａ〜６２Ｆの擬似コード６２００に、組み合わされた実装形態で２つの基準の場合に動きベクトル・プレディクタがどのように算出されるかを示す（図３３Ａ〜図３３Ｆの擬似コード３３００に、もう１つの実装で２つの基準の場合に動きベクトル・プレディクタがどのように算出されるかが記載されている）。２つの基準ピクチャでは、現在のフィールドが、２つの最も最近のフィールドを参照することができる。一方のプレディクタは、同一極性の基準フィールドに関し、他方は、反対極性の基準フィールドに関する。
【０３３８】
インターレースＢフィールドでの動きベクトルの再構成  
次のセクションでは、１ＭＶマクロブロックおよび４ＭＶマクロブロックの輝度動きベクトルおよびクロマ動きベクトルをどのように再構成するかを説明する。動きベクトルが再構成されると、その動きベクトルを、その後、近傍動きベクトルとして使用して、近くのマクロブロック用の動きベクトルを予測することができる。この動きベクトルは、「同一」または「反対」の関連する極性を有し、動きベクトル予測に関して他のフィールド極性用の動きベクトル・プレディクタを導出するのに使用することができる。
【０３３９】
インターレースＢフィールドでの輝度動きベクトル再構成  
すべての場合（１ＭＶマクロブロックおよび４ＭＶマクロブロック）に、輝度動きベクトルは、次のように差分をプレディクタに加算することによって再構成される。  
ｍｖ＿ｘ＝（ｄｍｖ＿ｘ＋ｐｒｅｄｉｃｔｏｒ＿ｘ）ｓｍｏｄ  ｒａｎｇｅ＿ｘ  
ｍｖ＿ｙ＝（ｄｍｖ＿ｙ＋ｐｒｅｄｉｃｔｏｒ＿ｙ）ｓｍｏｄ  ｒａｎｇｅ＿ｙ  
剰余演算「ｓｍｏｄ」は、符号付き剰余であり、次のように定義される  
Ａ  ｓｍｏｄ  ｂ＝（（Ａ＋ｂ）％（２＊ｂ））−ｂ  
これによって、再構成されたベクトルが有効であることが保証される。（Ａ  ｓｍｏｄ  ｂ）は、−ｂとｂ−１の間にある。ｒａｎｇｅ＿ｘおよびｒａｎｇｅ＿ｙは、ＭＶＲＡＮＧＥに依存する。
【０３４０】
インターレースＢフィールド・ピクチャは、２つの基準ピクチャを使用するので、動きベクトル差分をデコードした後に導出されたｐｒｅｄｉｃｔｏｒ＿ｆｌａｇを、動きベクトル予測から導出されたｄｏｍｉｎａｎｔｐｒｅｄｉｃｔｏｒの値と組み合わせて、どのフィールドを基準として使用するかを決定する。図６３の擬似コード６３００に、基準フィールドをどのように決定するかを示す。
【０３４１】
１ＭＶマクロブロックには、そのマクロブロックの輝度を構成する４つのブロックに対して単一の動きベクトルがある。マクロブロック・レイヤにＭＶデータが存在しないことをＭＢＭＯＤＥ構文要素が示す場合には、ｄｍｖ＿ｘ＝０であり、ｄｍｖ＿ｙ＝０である（ｍｖ＿ｘ＝ｐｒｅｄｉｃｔｏｒ＿ｘであり、ｍｖ＿ｙ＝ｐｒｅｄｉｃｔｏｒ＿ｙ）。
【０３４２】
４ＭＶマクロブロックでは、マクロブロック内のインター・コーディングされた輝度ブロックのそれぞれが、それ自体の動きベクトルを有する。したがって、各４ＭＶマクロブロックに、０個と４個の間の輝度動きベクトルがある。あるブロックについて動きベクトル情報がないことを４ＭＶＢＰ構文要素が示す場合には、そのブロックについてｄｍｖ＿ｘ＝０であり、ｄｍｖ＿ｙ＝０である（ｍｖ＿ｘ＝ｐｒｅｄｉｃｔｏｒ＿ｘであり、ｍｖ＿ｙ＝ｐｒｅｄｉｃｔｏｒ＿ｙ）。
【０３４３】
クロマ動きベクトル再構成  
クロマ動きベクトルは、輝度動きベクトルから導出される。また、４ＭＶマクロブロックについて、クロマ・ブロックをインターまたはイントラのどちらとしてコーディングするかに関する決定は、輝度ブロックまたはフィールドのステイタスに基づいて行われる。
【０３４４】
Ｃ．インターレースＰフレームのデコーディング
組み合わされた実装形態でインターレースＢフレームをデコードするプロセスを説明する前に、インターレースＰフレームをデコードするプロセスを説明する。インターレースＢフレームをデコードするプロセスを説明するセクションは、このセクションで述べる概念を参照して進行する。
【０３４５】
１．インターレースＰフレームのマクロブロック・レイヤ・デコーディング
インターレースＰフレームでは、各マクロブロックを、フレーム・モードで１つもしくは４つの動きベクトルを使用して、またはフィールド・モードで２つもしくは４つの動きベクトルを使用して、動き補償することができる。インター・コーディングされたマクロブロックには、イントラ・ブロックがまったく含まれない。さらに、動き補償後の残差を、フレーム変換モードまたはフィールド変換モードでコーディングすることができる。具体的に言うと、残差の輝度成分は、フィールド変換モードでコーディングされる場合にフィールドに従って再配置され、フレーム変換モードでは未変更のままになると同時に、クロマ成分も同一のままになる。マクロブロックを、イントラとしてコーディングすることもできる。
【０３４６】
動き補償を、４つ（フィールド／フレーム共に）の動きベクトルを含まないように制限することができ、これは、４ＭＶＳＷＩＴＣＨを介してシグナリングされる。動き補償のタイプおよび残差コーディングは、共に、ＭＢＭＯＤＥおよびＳＫＩＰＭＢを介してマクロブロックごとに示される。ＭＢＭＯＤＥは、４ＭＶＳＷＩＴＣＨに従ってテーブルの異なるセットを使用する。
【０３４７】
インターレースＰフレームのマクロブロックは、５つのタイプすなわち、１ＭＶ、２フィールドＭＶ、４フレームＭＶ、４フィールドＭＶ、およびイントラに分類される。最初の４つのタイプのマクロブロックは、インター・コーディングされ、最後のタイプは、マクロブロックがイントラ・コーディングされることを示す。マクロブロック・タイプは、スキップビットと併せて、マクロブロック・レイヤのＭＢＭＯＤＥ構文要素によってシグナリングされる。ＭＢＭＯＤＥは、マクロブロックの異なるタイプについて、マクロブロックに関する様々な情報と併せてマクロブロック・タイプを一緒にエンコードする。
【０３４８】
スキップド・マクロブロックのシグナリング  
ＳＫＩＰＭＢフィールドは、マクロブロックのスキップ状態を示す。ＳＫＩＰＭＢフィールドが１である場合には、現在のマクロブロックが、スキップされた（スキップド）と言い、ＳＫＩＰＭＢフィールドの後に送られる他の情報はない。スキップ状態は、現在のマクロブロックが、０の差分動きベクトルを有する１ＭＶであり（すなわち、そのマクロブロックは、その１ＭＶ動きプレディクタを使用して動き補償される）、コーディングされたブロックがない（ＣＰＢ＝０）ことを暗示する。
【０３４９】
その一方で、ＳＫＩＰＭＢフィールドが１でない場合には、ＭＢＭＯＤＥフィールドをデコードして、マクロブロックのタイプと、次のセクションで説明する情報などの現在のマクロブロックに関する他の情報を示す。
【０３５０】
マクロブロック・モードのシグナリング  
ＭＢＭＯＤＥによって示される１５個の可能なイベントがある。ＭＢＭＯＤＥは、一緒に、マクロブロックのタイプ（１ＭＶ、４フレームＭＶ、２フィールドＭＶ、４フィールドＭＶ、またはイントラ）、インター・コーディングされたマクロブロックの変換のタイプ（すなわち、フィールド、フレーム、あるいはコーディングされたブロックなし）、および１ＭＶマクロブロックの場合には差分動きベクトルがあるかどうかを指定する。
【０３５１】
＜ＭＶＰ＞が、非０の１ＭＶ差分動きベクトルがあるか否かをシグナリングする２値イベントを表すものとする。＜Ｆｉｅｌｄ／Ｆｒａｍｅ  ｔｒａｎｓｆｏｒｍ＞が、マクロブロックの残差がフレーム変換コーディングされるか、フィールド変換コーディングされるか、０個のコーディングされたブロックを有する（すなわち、ＣＢＰ＝０）か、をシグナリングする３値（ternary）イベントを表すものとする。ＭＢＭＯＤＥは、次のイベントのセットを一緒にシグナリングする。  
ＭＢＭＯＤＥ＝｛  
＜１ＭＶ，ＭＶＰ，Ｆｉｅｌｄ／Ｆｒａｍｅ  ｔｒａｎｓｆｏｒｍ＞、  
＜２  Ｆｉｅｌｄ  ＭＶ，Ｆｉｅｌｄ／Ｆｒａｍｅ  ｔｒａｎｓｆｏｒｍ＞、  
＜４  Ｆｒａｍｅ  ＭＶ，Ｆｉｅｌｄ／Ｆｒａｍｅ  ｔｒａｎｓｆｏｒｍ＞、  
＜４  Ｆｉｅｌｄ  ＭＶ，Ｆｉｅｌｄ／Ｆｒａｍｅ  ｔｒａｎｓｆｏｒｍ＞、  
＜ＩＮＴＲＡ＞｝  
ここで、スキップ状態によってシグナリングされる＜１ＭＶ，ＭＶＰ＝０，ＣＢＰ＝０＞であるイベントを除かれる。
【０３５２】
インター・コーディングされたマクロブロックについて、ＣＢＰＣＹ構文要素は、コーディングされたブロックがないことをＭＢＭＯＤＥのＦｉｅｌｄ／Ｆｒａｍｅ  Ｔｒａｎｓｆｏｒｍイベントが示すときに、デコードされない。その一方で、ＭＢＭＯＤＥのＦｉｅｌｄ／Ｆｒａｍｅ  ｔｒａｎｓｆｏｒｍイベントがフィールド変換またはフレーム変換を示す場合には、ＣＢＰＣＹがデコードされる。デコードされたイベント＜ｆｉｅｌｄ／ｆｒａｍｅ  Ｔｒａｎｓｆｏｒｍ＞は、フラグＦＩＥＬＤＴＸをセットするのに使用される。このイベントが、マクロブロックがフィールド変換コーディングされることを示す場合には、ＦＩＥＬＤＴＸに１がセットされる。このイベントが、マクロブロックがフレーム変換コーディングされることを示す場合には、ＦＩＥＬＤＴＸに０がセットされる。このイベントが０にコーディングされたブロックを示す場合には、ＦＩＥＬＤＴＸには、動きベクトルと同一のタイプがセットされるすなわち、ＦＩＥＬＤＴＸには、ＦＩＥＬＤＭＶの場合に１、ＦＲＡＭＥ  ＭＶの場合に０がセットされる。
【０３５３】
非１ＭＶインター・コーディングされたマクロブロックについて、０差分動きベクトルイベントを示す追加のフィールドが送られる。２フィールドＭＶマクロブロックの場合に、２つの動きベクトルのどちらに非０差分動きベクトルが含まれるかを示す２ＭＶＢＰフィールドを送る。同様に、４つの動きベクトルのいずれに非０差分動きベクトルが含まれるかを示す４ＭＶＢＰフィールドを送る。
【０３５４】
イントラ・コーディングされたマクロブロックについて、Ｆｉｅｌｄ／Ｆｒａｍｅ  ｔｒａｎｓｆｏｒｍおよび０にコーディングされたブロックは、別々のフィールドでコーディングされる。
【０３５５】
２．インターレースＰフレームの動きベクトル・デコーディング
インターレースＰフレームの動きベクトル・プレディクタ  
現在のマクロブロックの動きベクトル・プレディクタを算出するプロセスは、２つのステップからなる。第１に、現在のマクロブロック用の３つの候補動きベクトルを、その隣接マクロブロックから収集する。第２に、現在のマクロブロックの動きベクトル・プレディクタを、候補動きベクトルのセットから算出する。図４０Ａ〜図４０Ｂに、候補動きベクトルがそこから収集される隣接マクロブロックを示す。候補動きベクトルの収集の順序は、重要である。この組み合わされた実装形態では、収集の順序が、必ず、Ａで始まり、Ｂに進み、Ｃで終わる。対応するブロックがフレーム境界の外である場合、または対応するブロックが異なるスライスの一部である場合に、プレディクタ候補が存在しないと考えられることに留意されたい。したがって、動きベクトル・プレディクタは、スライス境界にまたがっては実行されない。
【０３５６】
次のセクションで、異なるタイプのマクロブロックについて候補動きベクトルがどのように収集されるか、および動きベクトル・プレディクタがどのように算出されるかを説明する。
【０３５７】
１ＭＶ候補動きベクトル  
この組み合わされた実装形態では、図６４の擬似コード６４００を使用して、その動きベクトルに対して３つまでの候補動きベクトルを集める。
【０３５８】
４フレームＭＶ候補動きベクトル  
４フレームＭＶマクロブロックについて、現在のマクロブロックの４つのフレーム・ブロック動きベクトルのそれぞれについて、隣接ブロックからの候補動きベクトルを収集する。この組み合わされた実装形態では、図６５の擬似コード６５００を使用して、左上フレーム・ブロック動きベクトルに対して３つまでの候補動きベクトルを収集する。図６６の擬似コード６６００を使用して、右上フレーム・ブロック動きベクトルに対して３つまでの候補動きベクトルを収集する。図６７の擬似コード６７００を使用して、左下フレーム・ブロック動きベクトルに対して３つまでの候補動きベクトルを収集する。図６８の擬似コード６８００を使用して、右下フレーム・ブロック動きベクトルに対して３つまでの候補動きベクトルを収集する。
【０３５９】
２フィールドＭＶ候補動きベクトルの導出  
２フィールドＭＶマクロブロックについて、現在のマクロブロックの２つのフィールド動きベクトルのそれぞれについて、隣接ブロックからの候補動きベクトルを収集する。図６９の擬似コード６９００を使用して、上フィールド動きベクトルに対して３つまでの候補動きベクトルを収集する。図７０の擬似コード７０００を使用して、下フィールド動きベクトルに対して３つまでの候補動きベクトルを収集する。
【０３６０】
４フィールドＭＶ候補動きベクトルの導出  
４フィールドＭＶマクロブロックについて、現在のマクロブロックの４つのフィールド・ブロックのそれぞれについて、隣接ブロックからの候補動きベクトルを収集する。図７１の擬似コード７１００を使用して、左上フィールド・ブロック動きベクトルに対して３つまでの候補動きベクトルを収集する。図７２の擬似コード７２００を使用して、右上フィールド・ブロック動きベクトルに対して３つまでの候補動きベクトルを収集する。図７３の擬似コード７３００を使用して、左下フィールド・ブロック動きベクトルに対して３つまでの候補動きベクトルを収集する。図７４の擬似コード７４００を使用して、右下フィールド・ブロック動きベクトルに対して３つまでの候補動きベクトルを収集する。
【０３６１】
フィールド動きベクトルの平均をとる  
２つのフィールド動きベクトル（ＭＶＸ1，ＭＶＹ1）および（ＭＶＸ2，ＭＶＹ2）を与えられて、候補動きベクトル（ＭＶＸA，ＭＶＹA）を形成するのに使用される平均演算は、次の通りである。  
ＭＶＸA＝（ＭＶＸ1＋ＭＶＸ2＋１）＞＞１；  
ＭＶＹA＝（ＭＶＹ1＋ＭＶＹ2＋１）＞＞１；
【０３６２】
候補動きベクトルからのフレームＭＶプレディクタの算出  
このセクションでは、候補動きベクトルのセットを与えられて、フレーム動きベクトルについて動きベクトル・プレディクタをどのように算出するかを説明する。この組み合わされた実装形態では、この動作は、１ＭＶのプレディクタまたは４フレームＭＶマクロブロックの４つのフレーム・ブロック動きベクトルのそれぞれのプレディクタの算出について同一である。
【０３６３】
図７５の擬似コード７５００に、フレーム動きベクトルについて動きベクトルプレディクタ（ＰＭＶx，ＰＭＶy）をどのように算出するかを示す。擬似コード７５００で、ＴｏｔａｌＶａｌｉｄＭＶは、候補動きベクトルのセットに含まれる動きベクトルの総数を表し（ＴｏｔａｌＶａｌｉｄＭＶ＝０、１、２、または３）、ＶａｌｉｄＭＶ配列は、候補動きベクトルのセットに含まれる動きベクトルを表す。
【０３６４】
候補動きベクトルからのフィールドＭＶプレディクタの算出  
このセクションでは、候補動きベクトルのセットを与えられて、フィールド動きベクトルについて動きベクトル・プレディクタをどのように算出するかを説明する。この動作は、２フィールドＭＶマクロブロックの２つのフィールド動きベクトルのそれぞれのプレディクタ、または４フィールドＭＶマクロブロックの４つのフィールド・ブロック動きベクトルのそれぞれのプレディクタ、の算出について同一である。
【０３６５】
まず、候補動きベクトルを、２つのセットに分離するが、一方のセットには、現在のフィールドと同一のフィールドを指す候補動きベクトルだけが含まれ、他方のセットには、反対のフィールドを指す候補動きベクトルが含まれる。候補動きベクトルが、１／４ピクセル単位で表されると仮定すると、エンコーダまたはデコーダは、候補動きベクトルが同一のフィールドを指すかどうかを、そのｙ成分に対する次のチェックによってチェックすることができる。
【０３６６】
【表１２】
2011139524.tif 000014
【０３６７】
図７６の擬似コード７６００に、フィールド動きベクトルについて動きベクトル・プレディクタ（ＰＭＶx，ＰＭＶy）をどのように算出するかを示す。擬似コード７６００では、ＳａｍｅＦｉｅｌｄＭＶおよびＯｐｐＦｉｅｌｄＭＶが、候補動きベクトルの２つのセットを表し、ＮｕｍＳａｍｅＦｉｅｌｄＭＶおよびＮｕｍＯｐｐＦｉｅｌｄＭＶが、各セットに属する候補動きベクトルの個数を表す。各セットの候補動きベクトルの順序は、存在する場合に候補Ａで始まり、存在する場合に候補Ｂが続き、その後、存在する場合に候補Ｃが続く。例えば、ＳａｍｅＦｉｅｌｄＭＶ候補動きベクトルのセットに候補Ｂおよび候補Ｃだけが含まれる場合に、ＳａｍｅＦｉｅｌｄＭＶ［０］は候補Ｂである。
【０３６８】
動きベクトル差分のデコーディング  
ＭＶＤＡＴＡ構文要素に、マクロブロックの動きベクトル差分情報が含まれる。各マクロブロックでシグナリングされる動き補償のタイプおよび動きベクトル・ブロック・パターンに応じて、マクロブロックごとに４つまでのＭＶＤＡＴＡ構文要素がある場合がある。具体的には、次の通りである。  
・  １ＭＶマクロブロックについて、ＭＢＭＯＤＥのＭＶＰフィールドに応じて、０個または１個のいずれかのＭＶＤＡＴＡ構文要素がある場合がある。  
・  ２フィールドＭＶマクロブロックについて、２ＭＶＢＰに応じて、０個、１個、または２個のいずれかのＭＶＤＡＴＡ構文要素がある場合がある。  
・  ４フレーム／フィールドＭＶマクロブロックについて、４ＭＶＢＰに応じて、０個、１個、２個、３個、または４個のいずれかのＭＶＤＡＴＡ構文要素がある場合がある。
【０３６９】
この組み合わされた実装形態では、動きベクトル差分は、インターレースＰフィールドの１つの基準フィールド動きベクトル差分と同一の形でデコードされる（図７７Ａの擬似コード７７００に、１基準フィールドについて動きベクトル差分がどのようにデコードされるかを示す。図７７Ｂの擬似コード７７１０に、代替の組み合わされた実装形態で、１基準フィールドについて動きベクトル差分がどのようにデコードされるかを示す。擬似コード７７１０は、異なる形で動きベクトル差分をデコードする。例えば、擬似コード７７１０では、拡張された動きベクトル差分範囲の処理が省略されている）。
【０３７０】
動きベクトルの再構成  
動きベクトル差分ｄｍｖを与えられて、輝度動きベクトルが、上のセクションＸＶ．Ｂ．３で説明したように、その差分をプレディクタに加算することによって再構成される。ルマ・フレーム動きベクトルまたはルマ・フィールド動きベクトルを与えられて、対応するクロマ・フレーム動きベクトルまたはクロマ・フィールド動きベクトルを導出して、Ｃｂ／Ｃｒブロックの一部または全体を補償する。図７８の擬似コード７８００に、インターレースＰフレームのクロマ動きベクトルＣＭＶがルマ動きベクトルＬＭＶからどのように導出されるかを示す。
【０３７１】
Ｄ．インターレースＢフレームのデコーディング
このセクションでは、前のセクションで述べた概念を参照して、組み合わされた実装形態でインターレースＢフレームをデコードするプロセスを説明する。
【０３７２】
１．インターレースＢフレームのマクロブロック・レイヤ・デコーディング
マクロブロック・レベルで、インターレースＢフレーム構文は、上で説明したインターレースＰフレーム構文に似ている。インターレースＢフレームのマクロブロックは、３タイプに分類される。１ＭＶ、２フィールドＭＶ、およびイントラである。４フレームＭＶモードおよび４フィールドＭＶモードは、この組み合わされた実装形態では、インターレースＢフレームについて許容されない。この３つのモードは、インターレースＰフレームと同様に、ＭＢＭＯＤＥ構文要素を用いて合同でコーディングされる。また、各マクロブロックは、（ＤＩＲＥＣＴＭＢ構文要素およびＢＭＶＴＹＰＥ構文要素を使用して）順方向、逆方向、直接、または補間として予測される。１ＭＶマクロブロックは、順方向または逆方向のいずれかである場合に、単一の動きベクトルを使用する。マクロブロックが、１ＭＶであるが直接または補間である場合には、そのマクロブロックは２つの動きベクトルを使用する。マクロブロックが、２フィールドＭＶのタイプであり、順方向予測または逆方向予測のいずれかである場合に、そのマクロブロックは、２つの動きベクトルを使用する。マクロブロックが、２フィールドＭＶのタイプであり、直接または補間である場合に、そのマクロブロックは、４つの動きベクトルを使用する。
【０３７３】
次のセクションでは、インターレースＢフレームの異なるインター・コーディングされたマクロブロック・タイプの特性を説明する。
【０３７４】
インターレースＢフレームの１ＭＶマクロブロック  
インターレースＢフレームの１ＭＶマクロブロックでは、輝度ブロックの変位は、予測タイプが順方向または逆方向のときには単一の動きベクトルによって、予測タイプが直接または補間のときには２つの動きベクトルによって表される。対応するクロマ動きベクトルが、それぞれの場合に導出される。補間予測および直接予測の場合に、順方向基準ピクチャおよび逆方向基準ピクチャからの動き補償されたピクセルの平均をとって、最終的な予測を形成する。
【０３７５】
インターレースＢフレームの２フィールドＭＶマクロブロック  
インターレースＢフレームの２フィールドＭＶマクロブロックでは、輝度ブロックの各フィールドの変位は、図３７に示されているように、異なる動きベクトルによって記述される。さらに、上のセクションＶＩＩで述べたように、予測タイプを、上フィールドから下フィールドに移る際に順方向から逆方向にまたはその逆に切り替えることができ、したがって、上フィールドを一方の基準ピクチャから動き補償し、下フィールドを他方の基準ピクチャから動き補償することができる。
【０３７６】
インターレースＢフレームでの２ＭＶＢＰ、４ＭＶＢＰの解釈および動きベクトルの順序  
１ＭＶマクロブロックでは、エンコーダが、補間モードで２ＭＶＢＰ構文要素を使用して、２つの動きベクトルのうちのどちらが存在するかを示す。ビット１は、順方向動きベクトルに対応し、ビット０は、逆方向動きベクトルに対応する。
【０３７７】
２フィールドＭＶマクロブロックでは、エンコーダは、順方向モードおよび逆方向モードで２ＭＶＢＰ構文要素を使用して、２つのフィールドの動きベクトルのうちのどちらが存在するかを示す。ビット１は、上フィールド動きベクトルに対応し、ビット０は、下フィールド動きベクトルに対応する。エンコーダは、ＭＶＳＷ構文要素が、上フィールドの順方向予測から下フィールドの逆方向予測へまたはその逆の切替えに使用されているときに、同一の上／下シグナリングを使用する。エンコーダは、補間モードで４ＭＶＢＰ構文要素を使用して、４つの動きベクトルのうちのどれが存在するかを示す。ビット３は、上フィールド順方向動きベクトルに対応し、ビット２は、上フィールド逆方向動きベクトルに対応し、ビット１は、下フィールド順方向動きベクトルに対応し、ビット０は、下フィールド逆方向動きベクトルに対応する。
【０３７８】
２ＭＶＢＰおよび４ＭＶＢＰの、「１」をセットされたビットは、対応する動きベクトル差分が存在することを示し、「０」をセットされたビットは、対応する動きベクトルが予測された動きベクトルと等しいこと、すなわち、対応する動きベクトル差分が存在しないことを示す。実際にデコードされる動きベクトルは、２ＭＶＢＰまたは４ＭＶＢＰのビットと同一の順序で送られる。例えば、補間モードを使用する２フィールドＭＶマクロブロックで、デコーダが最初に受け取る動きベクトルは、上フィールド順方向動きベクトルであり、最後に受け取られる（すなわち４番目の）動きベクトルは、下フィールド逆方向動きベクトルである。
【０３７９】
スキップド・マクロブロックのシグナリング  
スキップド・マクロブロックは、Ｐフレームと同一の形でシグナリングされる。しかし、インターレースＢフレームのスキップド・マクロブロックは、１ＭＶフレーム・タイプに制限されるすなわち、フィールド・タイプは許可されない。動きベクトルは、０の差分動きベクトルを用いてコーディングされ（すなわち、このマクロブロックは、その１ＭＶ動きプレディクタを使用して動き補償される）、コーディングされたブロックはない（ＣＢＰ＝０）。マクロブロックがスキップドである場合に、エンコーダは、そのマクロブロックに対してＢＭＶＴＹＰＥ情報だけを送り、その結果、動きベクトルを、順方向、逆方向、直接、または補間として正しく予測できるようになる。
【０３８０】
マクロブロック・モードのシグナリング  
マクロブロック・モードのシグナリングは、上のセクションＸＶ．Ｃで説明した、インターレースＰフレームと同一の形で実行される。
【０３８１】
予測タイプのデコーディング（ＢＭＶＴＹＰＥおよびＭＶＳＷ）  
予測タイプは、インターレースＢフレームについて、次のルールに従ってデコードされる。マクロブロックが直接タイプであることをピクチャ・レベル・ビットプレーンＤＩＲＥＣＴＭＢが示す場合には、そのマクロブロックの予測タイプに直接をセットする。ｒａｗモードで直接／非直接決定がコーディングされている場合に、エンコーダは、マクロブロック・レベルで追加ビットＤＩＲＥＣＴＢＢＩＴを使用して、予測タイプが直接であるか否かを示す。
【０３８２】
予測タイプが非直接である場合に、デコーダは、ＢＭＶＴＹＰＥ構文要素をデコードする。マクロブロック・モードが「２ＭＶフィールド・コーディング」であり、ＢＭＶＴＹＰＥタイプが順方向または逆方向のいずれかである場合に、デコーダは、ＭＶＳＷビットもデコードして、そのマクロブロックの上フィールドから下フィールドに移る際に予測タイプが変化する（すなわち、順方向から逆方向にまたはその逆にフリップされる）か否かを判断する。
【０３８３】
直接モード動きベクトルのデコーディング  
直接モード動きベクトルをデコードするために、デコーダは、まず、前にデコードされたアンカー・フレームからの動きベクトルをバッファリングする。具体的に言うと、前にデコードされた将来のＰフレームについて、デコーダは、その将来のＰフレームからデコードされたルマ動きベクトルの可能な最大の個数の半分（すなわち、（２＊ＮｕｍｂｅｒＯｆＭＢｓ）個の動きベクトル）をバッファリングする。アンカー・フレームからバッファリングされるこれらの動きベクトルを選択する方法は、上のセクションＸＩＩＩで説明した。
【０３８４】
上述した方法で得た動きベクトルを使用して、動きベクトルをプルバック（pull-back）することなく、デコーダは、図１９の擬似コード１９００に示されたＳｃａｌｅ＿Ｄｉｒｅｃｔ＿ＭＶのスケーリング論理を適用して、順方向および逆方向を指す動きベクトルを得る。
【０３８５】
この組み合わされた実装形態には、順方向予測マクロブロックおよび逆方向予測マクロブロックなどの、直接モード予測を使用していないマクロブロックに関する非直接モード動きベクトルについての算出は存在しない。その代わりに、非直接マクロブロックの動きベクトルは、順方向動きベクトル・バッファまたは逆方向動きベクトル・バッファに基づいて予測される。
【０３８６】
２．インターレースＢフレームの動きベクトルのデコーディング
インターレースＢフレームの動きベクトル・プレディクタ  
インターレースＰフレームと同様に、インターレースＢフレームの現在のマクロブロックの動きベクトル・プレディクタを算出するプロセスには、現在のマクロブロック用の候補動きベクトルをそれに隣接するマクロブロックから収集することと、候補動きベクトルのセットから現在のマクロブロック用の動きベクトル・プレディクタを算出すること、が含まれる。図４０Ａ〜図４０Ｂに、候補動きベクトルがそこから収集される隣接マクロブロックを示す。この組み合わされた実装形態では、インターレースＢフレームの動きベクトル・プレディクタが、インターレースＰフレームについて上のセクションＸＩＶ．Ｃ．で説明したルールに従って候補のセットから選択される。
【０３８７】
別々の予測コンテクストが、順方向モード動きベクトルおよび逆方向モード動きベクトルに使用される。デコーダは、順方向予測コンテクストを使用して順方向動きベクトルを予測し、逆方向予測コンテクストを使用して逆方向動きベクトルを予測する。
【０３８８】
インターレースＢフレームでの順方向予測コンテクストおよび逆方向予測コンテクストの取り込み  
デコーダは、順方向動きベクトルおよび逆方向動きベクトルを別々にバッファリングし、これらを使用して、それぞれ順方向動きベクトルおよび逆方向動きベクトルを予測する。補間マクロブロックについて、デコーダは、順方向予測バッファを使用して順方向動きベクトル（最初にデコードされるＭＶＤＡＴＡ要素）を予測し、逆方向予測バッファを使用して逆方向動きベクトル（２番目にデコードされるＭＶＤＡＴＡ要素）を予測する。マクロブロックが直接または補間である場合に、デコーダは、順方向ＭＶコンポーネントを順方向バッファに、逆方向ＭＶコンポーネントを逆方向バッファにバッファリングする。それぞれの場合（例えば、１ＭＶマクロブロック、２フィールドＭＶマクロブロックなど）で候補のセットの間から動きベクトル・プレディクタを選択する実際の予測論理は、上のセクションＸＩＶ．Ｃで説明した。
【０３８９】
順方向動きベクトル・バッファおよび逆方向動きベクトル・バッファに取り込み、これらのバッファ内の動きベクトルから動きベクトルを予測するスキームは、上のセクションＩＸ．Ｃで説明した。
【０３９０】
インターレースＢフレームでの動きベクトル差分のデコーディング  
インターレースＢフレームの動きベクトル差分は、上のセクションＸＩＶ．Ｃ．２で述べた、図７７Ａおよび７７Ｂの擬似コード７７００および７７１０に従ってデコードされる。
【０３９１】
インターレースＢフレームでの動きベクトルの再構成  
動きベクトルは、インターレースＢフレームで再構成されるは、上のセクションＸＩＶ．Ｂ．３およびＸＩＶ．Ｃ．２で述べた図７８の擬似コード７８００に従ってデコードされる。
【０３９２】
Ｅ．ビットプレーン・コーディング
次のマクロブロック固有２値情報、（１）インターレースＢフィールドのマクロブロックの順方向／非順方向決定（すなわち、ＦＯＲＷＡＲＤＭＢフラグ）、および（２）インターレースＢフレームのマクロブロックの直接／非直接決定（すなわち、ＤＩＲＥＣＴＭＢフラグ）などは、マクロブロックごとに１つの２値シンボルにエンコードすることができる。例えば、インターレースＢフィールドのマクロブロックが（逆方向、直接、または補間などの別のモードに対して）順方向モードで動き補償されているか否かを、１ビットを用いてシグナリングすることができる。これらの場合に、あるフィールドまたはフレーム内のすべてのマクロブロックのステイタスを、ビットプレーンとしてコーディングし、フィールド・ヘッダまたはフレーム・ヘッダ内で送ることができる。このルールに関する１つの例外が、ビットプレーン・コーディング・モードにＲａｗ  Ｍｏｄｅがセットされている場合であり、この場合には、各マクロブロックの状況が、シンボルごとに１つのビットとしてコーディングされ、マクロブロック・レベルの他のマクロブロック・レベル構文要素と共に送られる。
【０３９３】
フィールド／フレーム・レベル・ビットプレーン・コーディングは、２次元２値配列をエンコードするのに使用される。各配列のサイズは、ｒｏｗＭＢ×ｃｏｌＭＢであり、このｒｏｗＭＢおよびｃｏｌＭＢは、それぞれ、該当するフィールドまたはフレーム内のマクロブロックの行（row）数および列（column）数である。ビットストリーム内では、各配列が、連続するビットのセットとしてコーディングされる。７つのモードのうちの１つが、各配列をエンコードするのに使用される。７つのモードは、次の通りである。  
１．ｒａｗモード  −  情報が、シンボルごとに１ビットとしてコーディングされ、ＭＢレベル構文の一部として送られる  
２．ｎｏｒｍａｌ−２モード  −  ２つのシンボルが一緒にコーディングされる  
３．ｄｉｆｆｅｒｅｎｔｉａｌ−２モード  −  ２つの残差シンボルを後続するビットプレーンの一緒の差分コーディング  
４．ｎｏｒｍａｌ−６モード  −  ６つのシンボルが一緒にコーディングされる  
５．ｄｉｆｆｅｒｅｎｔｉａｌ−６モード  −  ６つの残差シンボルを後続するビットプレーンと一緒に差分コーディング  
６．ｒｏｗｓｋｉｐモード  −  セット・ビットがない行（row）をシグナリングするための１ビットスキップ  
７．ｃｏｌｕｍｎｓｋｉｐモード  −  セット・ビットがない列（column）をシグナリングするための１ビットスキップ  
フィールド・レベルまたはフレーム・レベルのビットプレーンに関する構文要素は、ＩＮＶＥＲＴ、ＩＭＯＤＥ、およびＤＡＴＡＢＩＴＳというシーケンスである。
【０３９４】
反転フラグ（ＩＮＶＥＲＴ）  
ＩＮＶＥＲＴ構文要素は、１ビット値であり、セットされている場合に、ビットプレーンが１ビット以上のセット・ビットを有することを示す。ＩＮＶＥＲＴおよびそのモードに応じて、デコーダは、オリジナルを再作成するために、解釈されたビットプレーンを反転しなければならない。ｒａｗモードが使用されているときには、このビットの値を無視しなければならないことに留意されたい。ＩＮＶＥＲＴ値がビットプレーンのデコードでどのように使用されるかの説明を、下で提供する。
【０３９５】
コーディング・モード（ＩＭＯＤＥ）  
ＩＭＯＤＥ構文要素は、ビットプレーンのエンコードに使用されるコーディング・モードを示す可変長の値である。表１１に、ＩＭＯＤＥ構文要素のエンコードに使用されるコードテーブルを示す。ＩＭＯＤＥ値がビットプレーンのデコードでどのように使用されるかの説明を、下で提供する。
【０３９６】
【表１３】
2011139524.tif 000015
【０３９７】
ビットプレーン・コーディング・ビット（ＤＡＴＡＢＩＴＳ）  
ＤＡＴＡＢＩＴＳ構文要素は、ビットプレーンのシンボルのストリームをエンコードする、可変サイズの構文要素である。ビットプレーンをエンコードするのに使用される方法は、ＩＭＯＤＥの値によって決定される。７つのコーディング・モードを、次のセクションで説明する。
【０３９８】
Ｒａｗモード  
このモードでは、ビットプレーンが、マクロブロックのラスタスキャン順でスキャンされた、シンボルごとに１つのビットとしてエンコードされ、マクロブロック・レイヤの一部として送られる。代替案では、この情報が、フィールド・レベルまたはフレーム・レベルでｒａｗモードでコーディングされ、ＤＡＴＡＢＩＴＳは、長さがｒｏｗＭＢ×ｃｏｌＭＢビットである。
【０３９９】
Ｎｏｒｍａｌ−２モード  
ｒｏｗＭＢ×ｃｏｌＭＢが奇数の場合に、最初のシンボルはｒａｗでエンコードされる。後続シンボルは、自然なスキャン順で、対でエンコードされる。表１２の２進ＶＬＣテーブルが、シンボル対をエンコードするのに使用される。
【０４００】
【表１４】
2011139524.tif 000016
【０４０１】
Ｄｉｆｆ−２モード  
上で説明したビットプレーンを作るのに、Ｎｏｒｍａｌ−２方法が使用され、次に、そのビットプレーンに、下で説明するＤｉｆｆ-1演算を適用する。
【０４０２】
Ｎｏｒｍａｌ−６モード  
Ｎｏｒｍ−６モードおよびＤｉｆｆ−６モードでは、ビットプレーンが、６ピクセルのグループでエンコードされる。これらのピクセルは、２×３または３×２のいずれかのタイルにグループ化される。ビットプレーンは、ルールのセットを使用して最大限にタイリングされ、残りのピクセルは、ｒｏｗ−ｓｋｉｐモードおよびｃｏｌｕｍｎ−ｓｋｉｐモードの変形形態を使用してエンコードされる。２×３「垂直」タイルは、ｒｏｗＭＢが３の倍数であり、ｃｏｌＭＢが３の倍数でない場合に限って使用される。そうでない場合には、３×２「水平」タイルが使用される。図７９Ａに、２×３「垂直」タイルの単純化された例を示す。図７９Ｂおよび７９Ｃに、３×２「水平」タイルの単純化された例を示し、ここで、細長い暗い長方形は、１ピクセル幅であり、ｒｏｗ−ｓｋｉｐコーディングおよびｃｏｌｕｍｎ−ｓｋｉｐコーディングを使用してエンコードされる。図７９Ｃに示された、ピクチャの上端および左端に直線のタイルを有する平面タイルについて、タイルのコーディング順序は、次のパターンに従う。６要素のタイルが最初にエンコードされ、ｃｏｌｕｍｎ−ｓｋｉｐエンコードされた直線タイルおよびｒｏｗ−ｓｋｉｐエンコードされた直線タイルがそれに続く。配列サイズが、２×３または３×２の倍数である場合には、後者の直線タイルが存在せず、ビットプレーンは、完全にタイリングされる。
【０４０３】
６要素の長方形タイルは、不完全ハフマン・コードすなわち、エンコーディングにすべての終了ノードを使用しないハフマン・コードを使用してエンコードされる。Ｎが、タイルのセット・ビット数すなわち、０≦Ｎ≦６であるものとする。Ｎ＜３について、ＶＬＣを使用してタイルをエンコードする。Ｎ＝３について、固定長エスケープに５ビット固定長コードが続き、Ｎ＞３について、固定長エスケープにタイルの補数のコードが続く。
【０４０４】
長方形タイルに、６ビットの情報を収容する。ｋが、タイルに関連するコードであるものとするが、ｋ＝ｂi２iであり、ｂiは、タイル内の自然なスキャン順でのｉ番目のビットの２進値である。したがって、０≦ｋ＜６４である。ＶＬＣとエスケープ・コード＋固定長コードの組合せが、ｋをシグナリングするのに使用される。
【０４０５】
Ｄｉｆｆ−６モード  
上で説明したビットプレーンを作るのにＮｏｒｍａｌ−６方法が使用され、次に、そのビットプレーンに、下で説明するＤｉｆｆ-1演算を適用する。
【０４０６】
Ｒｏｗｓｋｉｐモード  
ｒｏｗｓｋｉｐコーディング・モードでは、すべて０の行が、１ビットのオーバーヘッドでスキップされる。構文は、次の通りである。行ごとに、単一のＲＯＷＳＫＩＰビットが、その行がスキップされるかどうかを示し、行がスキップされる場合には、次の行のＲＯＷＳＫＩＰビットが次にあり、そうでない（行がスキップされない）場合には、ＲＯＷＢＩＴＳビット（行内のマクロブロックごとに１ビット）が次にある。したがって、行全体が０の場合に、１つの０ビットが、ＲＯＷＳＫＩＰシンボルとして送られ、ＲＯＷＢＩＴＳがスキップされる。行にセットされたビットがある場合に、ＲＯＷＳＫＩＰに１をセットし、行全体をｒａｗで送る（ＲＯＷＢＩＴＳ）。行は、フィールドまたはフレームの最上部から最下部へとスキャンされる。
【０４０７】
Ｃｏｌｕｍｎｓｋｉｐモード  
Ｃｏｌｕｍｎｓｋｉｐは、ｒｏｗｓｋｉｐの入れ替え（transpose）である。列は、フィールドまたはフレームの右から左へとスキャンされる。
【０４０８】
Ｄｉｆｆ-1：：逆差分デコーディング  
差分モードのいずれか（Ｄｉｆｆ−２またはＤｉｆｆ−６）が使用される場合に、「差分ビット」のビットプレーンが、まず、対応するノーマル・モード（それぞれＮｏｒｍ−２またはＮｏｒｍ−６）を使用してデコードされる。差分ビットを使用して、オリジナル・ビットプレーンを再生成する。再生成プロセスは、２進アルファベットに対する２Ｄ  ＤＰＣＭである。位置（ｉ，ｊ）のビットを再生成するために、プレディクタｂp（ｉ，ｊ）が、（位置（ｉ，ｊ）のビットｂ（ｉ，ｊ）から）次のように生成される。
【０４０９】
【数１】
2011139524.tif 000017
【０４１０】
差分コーディング・モードについて、ＩＮＶＥＲＴに基づくビット単位の反転プロセスは実行されない。しかし、ＩＮＶＥＲＴフラグは、異なる能力で使用されて、上で示したプレディクタの導出についてシンボルＡの値を示す。具体的に言うと、ＩＮＶＥＲＴが０と等しい場合にＡは０と等しく、ＩＮＶＥＲＴが１と等しい場合にＡは１と等しい。ビットプレーンの実際の値は、プレディクタとデコードされた差分ビット値の排他的論理和をとることによって得られる。上の式では、ｂ（ｉ，ｊ）が、最終的なデコードの後（すなわち、Ｎｏｒｍ−２／Ｎｏｒｍ−６を行い、それに続いて差分とプレディクタとの排他的論理和をとった後）の第ｉ，ｊ位置のビットである。
【０４１１】
様々な実施形態を参照して本発明の原理を説明し、図示したので、そのような原理から外れずに、配置および詳細において様々な実施形態を変更できることを理解されたい。本明細書で説明したプログラム、プロセス、または方法が、そうでないと示されていない限り、コンピューティング環境の特定のタイプに関連せず、これに制限されないことを理解されたい。様々なタイプの汎用のまたは特殊化されたコンピューティング環境は、本明細書に記載の教示に関して使用することができ、本明細書に記載の教示による動作を実行することができる。ソフトウェアで示された実施形態の要素を、ハードウェアで実装することができ、逆も可能である。
【０４１２】
本発明の原理を適用できる多数の可能な実施形態に鑑みて、本発明人は、添付請求項およびその同等物の範囲および趣旨に含めることができるすべての実施形態を本発明として主張する。
【図１】
2011139524.tif 000018
【図２】
2011139524.tif 000019
【図３】
2011139524.tif 000020
【図４】
2011139524.tif 000021
【図５Ａ】
2011139524.tif 000022
【図５Ｂ】
2011139524.tif 000023
【図６Ａ】
2011139524.tif 000024
【図６Ｂ】
2011139524.tif 000025
【図７Ａ】
2011139524.tif 000026
【図７Ｂ】
2011139524.tif 000027
【図８Ａ】
2011139524.tif 000028
【図８Ｂ】
2011139524.tif 000029
【図９】
2011139524.tif 000030
【図１０】
2011139524.tif 000031
【図１１】
2011139524.tif 000032
【図１２Ａ】
2011139524.tif 000033
【図１２Ｂ】
2011139524.tif 000034
【図１３】
2011139524.tif 000035
【図１４】
2011139524.tif 000036
【図１５】
2011139524.tif 000037
【図１６】
2011139524.tif 000038
【図１７】
2011139524.tif 000039
【図１８】
2011139524.tif 000040
【図１９】
2011139524.tif 000041
【図２０】
2011139524.tif 000042
【図２１】
2011139524.tif 000043
【図２２】
2011139524.tif 000044
【図２３】
2011139524.tif 000045
【図２４Ａ】
2011139524.tif 000046
【図２４Ｂ】
2011139524.tif 000047
【図２４Ｃ】
2011139524.tif 000048
【図２５】
2011139524.tif 000049
【図２６】
2011139524.tif 000050
【図２７】
2011139524.tif 000051
【図２８】
2011139524.tif 000052
【図２９】
2011139524.tif 000053
【図３０】
2011139524.tif 000054
【図３１】
2011139524.tif 000055
【図３２】
2011139524.tif 000056
【図３３Ａ】
2011139524.tif 000057
【図３３Ｂ】
2011139524.tif 000058
【図３３Ｃ】
2011139524.tif 000059
【図３３Ｄ】
2011139524.tif 000060
【図３３Ｅ】
2011139524.tif 000061
【図３３Ｆ】
2011139524.tif 000062
【図３４Ａ】
2011139524.tif 000063
【図３４Ｂ】
2011139524.tif 000064
【図３５】
2011139524.tif 000065
【図３６】
2011139524.tif 000066
【図３７】
2011139524.tif 000067
【図３８】
2011139524.tif 000068
【図３９】
2011139524.tif 000069
【図４０Ａ】
2011139524.tif 000070
【図４０Ｂ】
2011139524.tif 000071
【図４１】
2011139524.tif 000072
【図４２】
2011139524.tif 000073
【図４３】
2011139524.tif 000074
【図４４】
2011139524.tif 000075
【図４５】
2011139524.tif 000076
【図４６】
2011139524.tif 000077
【図４７】
2011139524.tif 000078
【図４８Ａ】
2011139524.tif 000079
【図４８Ｂ】
2011139524.tif 000080
【図４９】
2011139524.tif 000081
【図５０Ａ】
2011139524.tif 000082
【図５０Ｂ】
2011139524.tif 000083
【図５１】
2011139524.tif 000084
【図５２】
2011139524.tif 000085
【図５３】
2011139524.tif 000086
【図５４】
2011139524.tif 000087
【図５５】
2011139524.tif 000088
【図５６】
2011139524.tif 000089
【図５７】
2011139524.tif 000090
【図５８】
2011139524.tif 000091
【図５９】
2011139524.tif 000092
【図６０】
2011139524.tif 000093
【図６１Ａ】
2011139524.tif 000094
【図６１Ｂ】
2011139524.tif 000095
【図６２Ａ】
2011139524.tif 000096
【図６２Ｂ】
2011139524.tif 000097
【図６２Ｃ】
2011139524.tif 000098
【図６２Ｄ】
2011139524.tif 000099
【図６２Ｅ】
2011139524.tif 000100
【図６２Ｆ】
2011139524.tif 000101
【図６３】
2011139524.tif 000102
【図６４】
2011139524.tif 000103
【図６５】
2011139524.tif 000104
【図６６】
2011139524.tif 000105
【図６７】
2011139524.tif 000106
【図６８】
2011139524.tif 000107
【図６９】
2011139524.tif 000108
【図７０】
2011139524.tif 000109
【図７１】
2011139524.tif 000110
【図７２】
2011139524.tif 000111
【図７３】
2011139524.tif 000112
【図７４】
2011139524.tif 000113
【図７５】
2011139524.tif 000114
【図７６】
2011139524.tif 000115
【図７７Ａ】
2011139524.tif 000116
【図７７Ｂ】
2011139524.tif 000117
【図７８】
2011139524.tif 000118
【図７９Ａ】
2011139524.tif 000119
【図７９Ｂ】
2011139524.tif 000120
【図７９Ｃ】
2011139524.tif 000121