(57)【要約】【課題】ビデオ・コンテンツの圧縮および圧縮解除についての方法を提供する。【解決手段】一態様では、符号化器／復号器が、インターレース・フレーム符号化され、順方向予測されたピクチャのマクロブロックの４つのフィールド動きベクトルに関する情報（１９０５）を受け取り、その４つのフィールド動きベクトルを用いてマクロブロックを処理する。別の態様では、復号器が、マクロブロックの複数のルミナンス動きベクトルのルミナンス動きベクトル情報を受け取り、ルミナンス動きベクトル情報に対する算出を少なくとも１つ行うことによって、各ルミナンス動きベクトルに対応するクロマ動きベクトルを導出して、マクロブロックのクロマ動きベクトルとルミナンス動きベクトルとの比を１：１に保つ。例えば、復号器は、マクロブロックの４つのルミナンス・フィールド動きベクトルを受け取り、そのマクロブロックの４つのクロマ動きベクトルを導出する。【選択図】図１９
2011166816.tif 000002
【特許請求の範囲】
【請求項１】
ビデオ符号化器における方法であって、
ビデオデータを符号化することであって、
１つのマクロブロックの３つ以上のルミナンス動きベクトルであって、前記マクロブロックの少なくとも一部に関連付けられた３つ以上のルミナンス動きベクトルのルミナンス動きベクトル情報を受け取ること、および
前記３つ以上のルミナンス動きベクトルのそれぞれについて、前記マクロブロックの少なくとも一部に関連付けられたクロマ動きベクトルを導出することであって、前記導出することは、前記ルミナンス動きベクトル情報に対して、フィールド・ベースの丸めテーブルを伴う計算を少なくとも１つ実行することを含み、前記計算は、むこと、および、
ビットストリーム内に前記符号化されたビデオデータを出力すること
を備えることを特徴とする方法。
【請求項２】
前記マクロブロックは、フィールド符号化されたマクロブロックであることを特徴とする請求項１に記載の方法。
【請求項３】
前記マクロブロックは、４つのルミナンス・フィールド動きベクトルを有する、フィールド符号化されたマクロブロックであり、前記４つのルミナンス・フィールド動きベクトルのそれぞれは、前記マクロブロックのルミナンス・フィールドの動きを部分的に表すことを特徴とする請求項１に記載の方法。
【請求項４】
各クロマ動きベクトルは、前記マクロブロックのクロマ・フィールドの様々な部分における動きを表すクロマ・フィールド動きベクトルであることを特徴とする請求項３に記載の方法。
【請求項５】
前記マクロブロックは４：２：０マクロブロックであることを特徴とする請求項１に記載の方法。
【請求項６】
前記導出することは、前記ルミナンス動きベクトル情報の少なくとも一部を丸めること、およびサブサンプリングすることを備えることを特徴とする請求項１に記載の方法。
【請求項７】
前記３つ以上のルミナンス動きベクトルは１／４画素単位であることを特徴とする請求項１に記載の方法。
【請求項８】
請求項１に記載の方法を実行するための、コンピュータで実行可能な命令を格納することを特徴とするコンピュータ可読媒体。
【請求項９】
ビデオ復号器において、
それぞれがインターレースＰフレームのマクロブロックの少なくとも一部に関連付けられた、１つまたは複数のルミナンス動きベクトルのルミナンス動きベクトル情報を受け取ること、および
前記１つまたは複数のルミナンス動きベクトルのそれぞれに対する前記マクロブロックの少なくとも一部に関連付けられたクロマ動きベクトルを、前記１つまたは複数のルミナンス動きベクトルの前記動きベクトル情報に少なくとも部分的に基づいて、導出すること
を備え、
前記ビデオ復号器は、インターレースＰフレームの４つのルミナンス・フィールド動きベクトルを用いて予測されたマクロブロックを復号するように動作可能であることを特徴とする方法。
【請求項１０】
前記復号器は、４つのルミナンス・フレーム動きベクトルを有する、インター符号化されたマクロブロック、２つのルミナンス・フィールド動きベクトルを有する、インター符号化されたマクロブロック、１つのルミナンス・フレーム動きベクトルを有する、インター符号化されたマクロブロック、およびイントラ・マクロブロックを復号するように、さらに動作可能であることを特徴とする請求項９に記載の方法。
【請求項１１】
前記導出することは、４つのクロマ・フィールド動きベクトルを導出することを備えることを特徴とする請求項９に記載の方法。
【請求項１２】
それぞれがインターレース・フレーム符号化されたピクチャのマクロブロックの少なくとも一部に関連付けられた、１つまたは複数のルミナンス・フィールド動きベクトルのルミナンス動きベクトル情報を受け取ること、および
前記１つまたは複数のルミナンス・フィールド動きベクトルのそれぞれについて、前記マクロブロックの少なくとも一部に関連付けられたクロマ動きベクトルを、前記１つまたは複数のルミナンス・フィールド動きベクトルの前記動きベクトル情報に少なくとも部分的に基づいて、導出することであって、フィールド・ベースの丸めテーブルを用いてルミナンス・フィールド動きベクトル成分を丸めること、および前記ルミナンス・フィールド動きベクトル成分をサブサンプリングすること、を含んで導出すること
を備える方法をコンピュータに実行させるコンピュータ実行可能命令を備えることを特徴とするコンピュータ可読媒体。
【請求項１３】
前記インターレース・フレーム符号化されたピクチャはインターレースＰフレームであることを特徴とする請求項１２に記載のコンピュータ可読媒体。
【請求項１４】
前記フィールド・ベースの丸めテーブルは、値の集合｛０，０，１，２，４，４，５，６，２，２，３，８，６，６，７，１２｝からなる整数配列であることを特徴とする請求項１２に記載のコンピュータ可読媒体。
【請求項１５】
前記１つまたは複数のルミナンス・フィールド動きベクトルは４つのルミナンス・フィールド動きベクトルを備えることを特徴とする請求項１２に記載のコンピュータ可読媒体。
【請求項１６】
前記マクロブロックは４：２：０マクロブロックであり、前記サブサンプリングは、前記ルミナンス・フィールド動きベクトル成分を２で割ることを備えることを特徴とする請求項１２に記載のコンピュータ可読媒体。
【請求項１７】
ビデオ復号器において、符号化されたビデオデータを復号する方法であって、
それぞれがインターレース・フレーム符号化されたピクチャのマクロブロックの少なくとも一部に関連付けられた、１つまたは複数のルミナンス・フィールド動きベクトルのルミナンス動きベクトル情報を受け取ること、および、
前記１つまたは複数のルミナンス・フィールド動きベクトルのそれぞれについて、前記マクロブロックの少なくとも一部に関連付けられたクロマ動きベクトルを、前記１つまたは複数のルミナンス・フィールド動きベクトルの前記動きベクトル情報に少なくとも部分的に基づいて、導出することであって、フィールド・ベースの丸めテーブルを用いてルミナンス・フィールド動きベクトル成分を丸めること、および前記ルミナンス・フィールド動きベクトル成分をサブサンプリングすること、を含んで導出すること
を備えることを特徴とする方法。
【請求項１８】
前記インターレース・フレーム符号化されたピクチャはインターレースＰフレームであることを特徴とする請求項１７に記載の方法。
【請求項１９】
前記フィールド・ベースの丸めテーブルは、値の集合｛０，０，１，２，４，４，５，６，２，２，３，８，６，６，７，１２｝からなる整数配列であることを特徴とする請求項１７に記載の方法。
【請求項２０】
前記１つまたは複数のルミナンス・フィールド動きベクトルは４つのルミナンス・フィールド動きベクトルを備えることを特徴とする請求項１７に記載の方法。
【請求項２１】
前記マクロブロックは４：２：０マクロブロックであり、前記サブサンプリングは、前記ルミナンス・フィールド動きベクトル成分を２で割ることを備えることを特徴とする請求項１７に記載の方法。
【請求項２２】
ビデオ復号器において、符号化されたビデオデータを復号する方法であって、
それぞれがインターレース・フレーム符号化されたピクチャのマクロブロックの少なくとも一部に関連付けられた、１つまたは複数のルミナンス動きベクトルのルミナンス動きベクトル情報を受け取ること、および、
前記１つまたは複数のルミナンス動きベクトルのそれぞれについて、前記ルミナンス動きベクトルの前記ルミナンス動きベクトル情報に少なくとも部分的に基づいて、クロマ動きベクトルを導出することを備え、前記導出することは、
第１の丸めテーブルを用いて前記クロマ動きベクトルの水平成分を丸めること、
前記ルミナンス動きベクトルがルミナンス・フィールド動きベクトルであるかを判定すること、
前記ルミナンス動きベクトルが前記ルミナンス・フィールド動きベクトルである場合に、前記第１の丸めテーブルとは異なる第２の丸めテーブルを用いて前記クロマ動きベクトルの垂直成分を丸めること、および、
そうでない場合は、前記第１の丸めテーブルを用いて前記クロマ動きベクトルの前記垂直成分を丸めること
を備えることを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本特許文書の開示の一部は、著作権保護の対象となる内容を含む。著作権保有者は、本特許開示が特許商標庁の特許ファイルまたはレコードにあるとおりにファクシミリ複製されることには異存がないが、それ以外の場合は、すべての著作権を保有するものとする。
【０００２】
本発明は、プログレッシブ・ビデオおよびインターレース・ビデオの符号化および復号の手法およびツールに関する。一例として、符号化器は、インターレース・フレームの符号化されたピクチャのマクロブロックのマクロブロック・モード情報を信号伝達（signaling）する。別の例として、符号化器／復号器は、インターレース・フレームの符号化されたピクチャのルミナンス動きベクトルおよびクロマ動きベクトルを符号化および復号する。
【背景技術】
【０００３】
デジタル・ビデオは、大量の記憶容量および伝送容量を消費する。一般的なＲＡＷ（加工処理していない）デジタル・ビデオ・シーケンスは、毎秒１５枚または３０枚のピクチャを含む。各ピクチャは、数万または数十万個の画素（pelとも呼ぶ）を含むことが可能である。各画素は、ピクチャの微小な要素を表す。コンピュータは、一般に、２４ビットあるいはそれ以上で画素をＲＡＷ形式で表現する。したがって、標準的なＲＡＷデジタル・ビデオ・シーケンスの毎秒のビット数（ビット・レート）は、毎秒５００万ビットあるいはそれ以上になる可能性がある。
【０００４】
ほとんどのコンピュータやコンピュータ・ネットワークは、ＲＡＷデジタル・ビデオを処理するに足るだけのリソースを有していない。このため、技術者らは、圧縮（符号化とも言う）を用いてデジタル・ビデオのビットレートを低減する。圧縮は可逆的（lossless）であることが可能である。可逆的圧縮は、ビデオの画質は劣化しないが、ビットレートの低減量が、ビデオの複雑さによって制限される。また、圧縮は非可逆的（lossy）であることも可能である。非可逆的圧縮は、ビデオの画質は劣化するが、ビットレートをより大幅に低減することが可能である。圧縮解除は圧縮の逆である。
【０００５】
一般に、ビデオ圧縮手法は、「イントラ」圧縮と「インター」（予測）圧縮とを含む。イントラ圧縮手法では、個別のピクチャ（一般に、Ｉフレームまたはキー・フレームと呼ばれる）を圧縮する。インター圧縮手法では、先行および／または後続のフレームを基準にしてフレームを圧縮する。インター圧縮されたフレームは、一般に、予測フレーム、Ｐフレーム、またはＢフレームと呼ばれる。
【０００６】
Ｉ．Ｗｉｎｄｏｗｓ（登録商標）Ｍｅｄｉａ  Ｖｉｄｅｏバージョン８および９におけるインター圧縮
Ｍｉｃｒｏｓｏｆｔ  ＣｏｒｐｏｒａｔｉｏｎのＷｉｎｄｏｗｓ（登録商標）Ｍｅｄｉａ  Ｖｉｄｅｏバージョン８［「ＷＭＶ８」］は、ビデオ符号化器およびビデオ復号器を含む。ＷＭＶ８符号化器はイントラ圧縮およびインター圧縮を用い、ＷＭＶ８復号器はイントラ圧縮解除およびインター圧縮解除を用いる。Ｗｉｎｄｏｗｓ（登録商標）Ｍｅｄｉａ  Ｖｉｄｅｏバージョン９［「ＷＭＶ９」］は、これらに類似するアーキテクチャを多くの操作に用いる。
【０００７】
ＷＭＶ８符号化器におけるインター圧縮では、ブロック・ベースの動き補償予測符号化を行い、その後に、残余誤差（residual error）の変換符号化を行う。図１および２は、ＷＭＶ８符号化器における予測フレームのブロック・ベースのインター圧縮を示す。具体的には、図１は、予測フレーム１１０の動き推定を示し、図２は、予測フレームの動き補償されたブロックの予測残差の圧縮を示す。
【０００８】
例えば、図１では、ＷＭＶ８符号化器は、予測フレーム１１０内のマクロブロック１１５の動きベクトルを算出する。符号化器は、動きベクトルを算出するために、参照フレーム１３０のサーチ領域１３５内をサーチする。符号化器は、サーチ領域１３５内で、予測フレーム１１０内のマクロブロック１１５と、様々な候補マクロブロックとを比較して、よく一致する候補マクロブロックを見つける。符号化器は、一致するマクロブロックの（エントロピー符号化された）動きベクトルを示す情報を出力する。
【０００９】
動きベクトルの値は、空間的に周囲にある動きベクトルの値と相関があることが多いので、動きベクトル情報の伝送に使用されるデータを圧縮するには、隣接するマクロブロックの動きベクトルに基づいて動きベクトル・プレディクタを選択し、その動きベクトル・プレディクタを用いて現在のマクロブロックの動きベクトルを予測する。符号化器は、動きベクトルと動きベクトル・プレディクタとの差分を符号化することが可能である。復号器は、その差分を動きベクトル・プレディクタに加算して動きベクトルを再構成した後、その動きベクトルを用い、参照フレーム１３０（符号化器および復号器で使用可能な、あらかじめ再構成されたフレーム）からの情報を用いて、マクロブロック１１５の予測マクロブロックを算出する。予測が完全であることはほとんどないので、符号化器は、通常、予測マクロブロックとマクロブロック１１５自体との画素差のブロック（誤差ブロックまたは残差ブロックとも呼ばれる）を符号化する。
【００１０】
図２は、ＷＭＶ８符号化器における誤差ブロック２３５の算出および符号化の例を示す。誤差ブロック２３５は、予測ブロック２１５とオリジナルの現在のブロック２２５との差分である。符号化器は、誤差ブロック２３５に離散コサイン変換［「ＤＣＴ」］２４０を適用して、８×８ブロックの係数２４５を得る。次に符号化器は、ＤＣＴ係数を量子化（２５０）し、８×８ブロックの量子化されたＤＣＴ係数２５５を得る。符号化器は、８×８ブロック２５５をスキャン（２６０）して、係数が最低周波数から最高周波数へと大まかに並べられた一次元配列２６５を得る。符号化器は、ランレングス符号化２７０の一種（variation）により、スキャンされた係数をエントロピー符号化する。符号化器は、１つまたは複数のｒｕｎ／ｌｅｖｅｌ／ｌａｓｔテーブル（run/level/last tables）２７５からエントロピー符号を選択し、そのエントロピー符号を出力する。
【００１１】
図３は、インター符号化されたブロックに対応する復号処理３００の例を示す。図３の概要を述べると、予測残差を表す、エントロピー符号化された情報を、復号器が、１つまたは複数のｒｕｎ／ｌｅｖｅｌ／ｌａｓｔテーブル３１５を用いる可変長復号３１０とランレングス復号３２０とにより復号する。復号器は、エントロピー復号された情報を格納する一次元配列３２５を逆スキャン（３３０）して二次元ブロック３３５にする。復号器は、データを逆量子化および逆離散コサイン変換（まとめて３４０）して、再構成された誤差ブロック３４５を得る。別の動き補償パスで、復号器は、参照フレームからの変位に関する動きベクトル情報３５５を用いて予測ブロック３６５を算出する。復号器は、予測ブロック３６５と、再構成された誤差ブロック３４５とを結合（３７０）して、再構成されたブロック３７５を形成する。
【００１２】
オリジナル・フレームと再構成されたフレームとの間の変化量はひずみであり、そのフレームの符号化に必要なビット数は、そのフレームのレートを示す。ひずみの量は、大まかには、レートに反比例する。
【００１３】
ＩＩ．インターレース・ビデオとプログレッシブ・ビデオ
ビデオ・フレームは、ビデオ信号の空間情報からなる複数のライン（走査線）を収容する。プログレッシブ・ビデオの場合、これらのラインは、ある時点から始まり、連続する複数のラインを通ってフレームの一番下まで続くサンプル群を収容する。プログレッシブＩフレームは、イントラ符号化されたプログレッシブ・ビデオ・フレームである。プログレッシブＰフレームは、順方向予測を用いて符号化されたプログレッシブ・ビデオ・フレームであり、プログレッシブＢフレームは、双方向予測を用いて符号化されたプログレッシブ・ビデオ・フレームである。
【００１４】
典型的なインターレース・ビデオ・フレームは、異なる時点からスキャンが開始される２つのフィールドからなる。例えば、図４に示すインターレース・ビデオ・フレーム４００は、トップ・フィールド４１０とボトム・フィールド４２０とを含む。一般には、ある時刻（例えば、時刻ｔ）から偶数番号ライン（トップ・フィールド）のスキャンが開始され、別の（一般に後の）時刻（例えば、時刻ｔ＋１）から奇数番号ライン（ボトム・フィールド）のスキャンが開始される。このようなタイミングは異なるタイミングで２つのフィールドのスキャンが開始されたときに動きがあったインターレース・ビデオ・フレームの領域内に、ぎざぎざの歯のような外観を生じさせる場合がある。このため、フィールド構成に従ってインターレース・ビデオ・フレームを、奇数ライン群を一方のフィールドにまとめ、偶数ライン群をもう一方のフィールドにまとめる態様で、再配置することが可能である。フィールド符号化と呼ばれるこの配置は、そのようなぎざぎざのエッジのアーティファクトを低減するために、動きの多いピクチャにおいて有効である。これに対し、静的な領域では、そのような再配置を行わなくても、インターレース・ビデオ・フレームの画像詳細をより効率的に保存することが可能である。したがって、静的な、動きの少ないインターレース・ビデオ・フレームでは、オリジナルの交番するフィールド・ライン配置が保存されるフレーム符号化が行われることが多い。
【００１５】
一般的なプログレッシブ・ビデオ・フレームは、交番するラインを有しないコンテンツからなる１フレームから構成される。インターレース・ビデオと異なり、プログレッシブ・ビデオでは、ビデオ・フレームが別々のフィールドに分割されず、フレーム全体が、左から右、上から下へのスキャンが単一の時刻から開始される。
【００１６】
ＩＩＩ．従来のＷＭＶ符号化器および復号器におけるＰフレーム符号化および復号
符号化器および復号器は、Ｐフレームにおいて、プログレッシブ符号化および復号、ならびにインターレース符号化および復号を用いる。インターレースＰフレームおよびプログレッシブＰフレームの場合、符号化器では、動きベクトルと動きベクトル・プレディクタとの差分を算出することによって動きベクトルが符号化される。動きベクトル・プレディクタは、隣接する動きベクトルに基づいて算出される。また、復号器では、動きベクトル差分を動きベクトル・プレディクタに加算することによって動きベクトルが再構成される。この動きベクトル・プレディクタも、隣接する動きベクトルに基づいて（ここでは復号器において）算出される。したがって、現在のマクロブロックまたは現在のマクロブロックのフィールドの動きベクトル・プレディクタは、候補に基づいて選択され、動きベクトル差分は、動きベクトル・プレディクタに基づいて算出される。動きベクトルは、符号化器側または復号器側のいずれかで、動きベクトル差分を、選択された動きベクトル・プレディクタに加算することによって再構成されることが可能である。一般に、ルミナンス動きベクトルは、符号化された動き情報から再構成され、クロマ動きベクトルは、再構成されたルミナンス動きベクトルから導出される。
【００１７】
Ａ．プログレッシブＰフレームの符号化および復号
例えば、符号化器および復号器では、プログレッシブＰフレームは、１動きベクトル（１ＭＶ）モードまたは４動きベクトル（４ＭＶ）モードで符号化されたマクロブロックを含むか、スキップ・マクロブロック（skipped macroblock）を含むこと、が可能であり、その決定は一般にマクロブロックごとに行われる。１ＭＶマクロブロック（および、場合によっては、スキップ・マクロブロック）だけを有するＰフレームは１ＭＶ  Ｐフレームと呼ばれ、１ＭＶマクロブロックと４ＭＶマクロブロックの両方（および、場合によっては、スキップ・マクロブロック）を有するＰフレームは、混在ＭＶ  Ｐフレームと呼ばれる。各１ＭＶマクロブロックには１つのルミナンス動きベクトルが関連付けられ、各４ＭＶマクロブロックには最大４つのルミナンス動きベクトル（各ブロックに１つずつ）が関連付けられる。
【００１８】
図５Ａおよび図５Ｂは、１ＭＶプログレッシブＰフレームのマクロブロックの候補動きベクトル・プレディクタと見なされるマクロブロックの位置を示す図である。候補プレディクタは、マクロブロックが行(row)の最後のマクロブロックである場合を除き、左、上、および右上のマクロブロックから取得される。マクロブロックが行の最後のマクロブロックである場合は、プレディクタＢは、右上ではなく左上のマクロブロックから取得される。特殊なケースとして、フレームが１マクロブロック幅である場合は、プレディクタは常にプレディクタＡ（上のプレディクタ）である。マクロブロックが上の行にあるためにプレディクタＡが範囲外である場合のプレディクタは、プレディクタＣである。他の特殊なケース（イントラ符号化されたプレディクタなど）には、他の様々な規則が対応する。
【００１９】
図６Ａ〜図１０は、混在ＭＶフレームの１ＭＶまたは４ＭＶマクロブロックの動きベクトルの最大３つの候補動きベクトルと見なされるブロックまたはマクロブロックの位置を示す。これらの図では、大きい正方形がマクロブロック境界を示し、小さい正方形がブロック境界を示す。特殊なケースとして、フレームが１マクロブロック幅である場合は、プレディクタは常にプレディクタＡ（上のプレディクタ）である。他の特殊なケース（上の行の４ＭＶマクロブロックに対する上の行のブロック、上の行の１ＭＶマクロブロック、イントラ符号化されたプレディクタなど）には、他の様々な規則が対応する。
【００２０】
図６Ａおよび図６Ｂは、混在ＭＶフレームの現在の１ＭＶマクロブロックの候補動きベクトル・プレディクタと見なされるブロックの位置を示す図である。隣接するマクロブロックは、１ＭＶまたは４ＭＶマクロブロックである可能性がある。図６Ａおよび図６Ｂは、隣接するマクロブロックが４ＭＶであると仮定した場合の候補動きベクトルの位置を示す（すなわち、現在のマクロブロックの上のマクロブロックのブロック２の動きベクトルがプレディクタＡであり、現在のマクロブロックのすぐ左のマクロブロックのブロック１の動きベクトルがプレディクタＣである）。すべての隣接するマクロブロックが１ＭＶマクロブロックであれば、図５Ａおよび５Ｂに示した動きベクトル・プレディクタが、マクロブロック全体の動きベクトル・プレディクタとなる。図６Ｂに示すように、マクロブロックが行の最後のマクロブロックであれば、プレディクタＢは、他のケースと同様に、右上のマクロブロックのブロック２ではなく、左上のマクロブロックのブロック３の動きベクトルになる。
【００２１】
図７Ａ〜図１０は、４ＭＶマクロブロックにある４つのルミナンス・ブロックのそれぞれの候補動きベクトル・プレディクタと見なされるブロックの位置を示す。図７Ａおよび７Ｂは、位置０にあるブロックの候補動きベクトル・プレディクタと見なされるブロックの位置を示す図である。図８Ａおよび８Ｂは、位置１にあるブロックの候補動きベクトル・プレディクタと見なされるブロックの位置を示す図である。図９は、位置２にあるブロックの候補動きベクトル・プレディクタと見なされるブロックの位置を示す図である。図１０は、位置３にあるブロックの候補動きベクトル・プレディクタと見なされるブロックの位置を示す図である。この場合も、隣接するマクロブロックが１ＭＶマクロブロックであれば、マクロブロックの動きベクトル・プレディクタがマクロブロックのブロックに用いられる。
【００２２】
マクロブロックが行の最初のマクロブロックであるケースでは、ブロック０のプレディクタＢの扱いが、その行の他のマクロブロックのブロック０の場合と異なる（図７Ａおよび７Ｂを参照）。このケースでは、プレディクタＢは、他のケースと同様に、現在のマクロブロックの上および左のマクロブロックにあるブロック３からではなく、現在のマクロブロックのすぐ上のマクロブロックにあるブロック３から取得される。同様に、マクロブロックが行の最後のマクロブロックであるケースでは、ブロック１のプレディクタＢの扱いが異なる（図８Ａおよび８Ｂ）。このケースでは、プレディクタは、他のケースと同様に、現在のマクロブロックの上および右のマクロブロックにあるブロック２からではなく、現在のマクロブロックのすぐ上のマクロブロックにあるブロック２から取得される。一般に、マクロブロックが最初のマクロブロック列（column）にある場合は、ブロック０および２のプレディクタＣが０に等しく設定される。
【００２３】
Ｂ．インターレースＰフレームの符号化および復号
符号化器および復号器は、インターレースＰフレームについては４：１：１マクロブロック・フォーマットを用いる。インターレースＰフレームは、フィールド・モードまたはフレーム・モードで符号化されたマクロブロックを含むか、スキップ・マクロブロックを含むことが可能であり、その決定は一般にマクロブロックごとに行われる。フィールド符号化された各インター・マクロブロックには２つの動きベクトルが関連付けられ（フィールドごとに１つの動きベクトル）、フレーム符号化された各インター・マクロブロックには１つの動きベクトルが関連付けられる。符号化器は、水平方向および垂直方向の動きベクトル差分成分を含む動き情報を、場合によっては、他の信号伝達情報（signaling information）と統合的（jointly）に符号化する。
【００２４】
図１１と図１２および図１３は、符号化器および復号器におけるインターレースＰフレームの、それぞれ、フレーム符号化された４：１：１マクロブロックと、フィールド符号化された４：１：１マクロブロックの動きベクトル・プレディクタの候補プレディクタの例を示す。図１１は、インターレースＰフレームの（マクロブロック行の最初または最後のマクロブロックでなく、一番上の行でない）内側の位置にある、現在のフレーム符号化された４：１：１マクロブロック用の候補プレディクタＡ、Ｂ、およびＣを示す。プレディクタは、Ａ、Ｂ、およびＣとラベル付けされた以外の様々な候補方向から取得可能である（例えば、現在のマクロブロックが、行の最初または最後のマクロブロックである場合や、一番上の行にある場合のような特殊なケースでは、使用不可能なプレディクタがあるため）。現在のフレーム符号化されたマクロブロックの場合、プレディクタ候補は、隣接するマクロブロックがフィールド符号化されているかフレーム符号化されているかに応じて異なる算出が行われる。隣接するマクロブロックがフレーム符号化されている場合は、動きベクトルが、単純に、プレディクタ候補として取得される。隣接するマクロブロックがフィールド符号化されている場合は、トップ・フィールドとボトム・フィールドの動きベクトルを平均することによって候補動きベクトルが決定される。
【００２５】
図１２および図１３は、フィールドの内側の位置にあるフィールド符号化された４：１：１マクロブロックにおける、現在のフィールドの候補プレディクタＡ、Ｂ、およびＣを示す。図１２では、現在のフィールドがボトム・フィールドであり、隣接するマクロブロックにあるボトム・フィールド動きベクトルが候補プレディクタとして用いられる。図１３では、現在のフィールドがトップ・フィールドであり、隣接するマクロブロックにあるトップ・フィールド動きベクトルが候補プレディクタとして用いられる。したがって、現在のフィールド符号化されたマクロブロックの各フィールドについては、各フィールドの動きベクトル・プレディクタ候補の数は最大で３である。各候補は、現在のフィールドと同じフィールド・タイプ（例えば、トップまたはボトム）から取得される。ここでも、現在のマクロブロックが、行の最初または最後のマクロブロックである場合や、一番上の行にある場合には、使用不可能なプレディクタがあるため、様々な特殊ケース（図示せず）が当てはまる。
【００２６】
符号化器および復号器は、プレディクタ候補の集合からプレディクタを選択するために、「median-of-three」アルゴリズムのような様々な選択アルゴリズムを用いる。「median-of-three」予測のプロシージャを、図１４の擬似コード１４００に示す。
【００２７】
ＩＶ．従来のＷＭＶ符号化器および復号器におけるＢフレーム符号化および復号
符号化器および復号器は、プログレッシブＢフレームおよびインターレースＢフレームを用いる。Ｐフレームの場合は１つのアンカーを用いるが、Ｂフレームは、ソース・ビデオにある２つのフレームを参照（アンカー）フレームとして用いる。標準的なＢフレームのアンカー・フレーム（複数）のうち、１つのアンカー・フレームは、時間的に先行するフレームの中にあり、もう１つのアンカー・フレームは、時間的に後続であるフレームの中にある。図１５に示すように、ビデオ・シーケンス内のＢフレーム１５１０は、時間的に先行する参照フレーム１５２０と、時間的に後続の参照フレーム１５３０とを有する。Ｂフレームを有する符号化されたビットストリームは、一般に、Ｂフレームがない符号化されたビットストリームよりビット数が少ないが、同等の視覚品質を与える。Ｂフレームは、一般に、参照フレームとしては用いられないので、復号器は、Ｂフレームを復号も表示もしないことを選択することによって、空間的および時間的制約を吸収することも可能である。
【００２８】
順方向予測フレーム（例えば、Ｐフレーム）のマクロブロックは予測の方向モードが１つだけ（順方向、先行するＩまたはＰフレームから）であるのに対し、Ｂフレームのマクロブロックは、異なる５つの予測モード（順方向、逆方向、直接、補間、およびイントラ）を用いて予測されることが可能である。符号化器は、様々な予測モードを選択して、ビットストリームで信号伝達する。順方向モードは、従来のＰフレーム予測と類似である。順方向モードでは、マクロブロックは、時間的に先行するアンカーから導出される。逆方向モードでは、マクロブロックは、時間的に後続のアンカーから導出される。直接モードまたは補間モードで予測されるマクロブロックは、順方向アンカーと逆方向アンカーの両方を予測に用いる。
【００２９】
Ｖ．従来のＷＭＶ符号化器および復号器におけるマクロブロック情報の信号伝達
符号化器および復号器では、インターレースＰフレームのマクロブロックは、可能な３つのタイプ、すなわち、フレーム符号化されたもの、フィールド符号化されたもの、スキップされたもののいずれかであることが可能である。マクロブロック・タイプは、フレーム・レベルおよびマクロブロック・レベルのシンタックス要素のうちの複数の要素の組合せで指示される。
【００３０】
インターレースＰフレームの場合は、フレーム・レベル要素ＩＮＴＲＬＣＦが、そのフレームのマクロブロックの符号化に用いられるモードを示す。ＩＮＴＲＬＣＦ＝０であれば、フレーム内のすべてのマクロブロックがフレーム符号化される。ＩＮＴＲＬＣＦ＝１であれば、マクロブロックは、フィールド符号化またはフレーム符号化されることが可能である。ＩＮＴＲＬＣＦ＝１の場合は、フレーム・レイヤ内にＩＮＴＲＬＣＭＢ要素が存在する。ＩＮＴＲＬＣＭＢは、ピクチャ内の各マクロブロックのフィールド／フレーム符号化ステータスを示す、ビット・プレーン符号化された、配列である。復号されたビット・プレーンは、各マクロブロックのインターレース・ステータスを１ビット値の配列として表す。個々のビットの値０は、対応するマクロブロックがフレーム・モードで符号化されていることを示す。値１は、対応するマクロブロックがフィールド・モードで符号化されていることを示す。
【００３１】
フレーム符号化されたマクロブロックの場合は、マクロブロック・レベルのＭＶＤＡＴＡ要素が、マクロブロック内のすべてのブロックに関連付けられる。ＭＶＤＡＴＡは、マクロブロック内のブロックがイントラ符号化されているか、インター符号化されているかを信号伝達する。インター符号化されている場合は、ＭＶＤＡＴＡが動きベクトル差分も指示する。
【００３２】
フィールド符号化されたマクロブロックの場合は、マクロブロック内のトップ・フィールド・ブロックにＴＯＰＭＶＤＡＴＡ要素が関連付けられ、マクロブロック内のボトム・フィールド・ブロックにＢＯＴＭＶＤＡＴＡ要素が関連付けられる。ＴＯＰＭＶＤＡＴＡおよびＢＯＴＭＶＤＡＴＡは、各フィールドの最初のブロックにおいて送られる。ＴＯＰＭＶＤＡＴＡは、トップ・フィールド・ブロックがイントラ符号化されているか、インター符号化されているかを示す。同様に、ＢＯＴＭＶＤＡＴＡは、ボトム・フィールド・ブロックがイントラ符号化されているか、インター符号化されているかを示す。インター符号化されたブロックの場合、ＴＯＰＭＶＤＡＴＡおよびＢＯＴＭＶＤＡＴＡはさらに、動きベクトル差分情報を指示する。
【００３３】
ＣＢＰＣＹ要素は、マクロブロック内のルミナンス成分およびクロマ成分の、符号化されたブロック・パターン（ＣＢＰ：coded block pattern）の情報を示す。ＣＢＰＣＹ要素はさらに、どのフィールドが動きベクトル・データ要素をビットストリーム内に有するかを示す。ＣＢＰＣＹおよび動きベクトル・データ要素は、ブロックがＡＣ係数を有するかどうかを示すために用いられる。ＭＶＤＡＴＡから復号された「ｌａｓｔ」値が、復号すべきデータが動きベクトルの後に存在することを示している場合は、インターレースＰフレームのフレーム符号化されたマクロブロックに対してＣＢＰＣＹが存在する。ＣＢＰＣＹが存在すれば、ＣＢＰＣＹは６ビット・フィールドに復号され、４つのＹブロックのそれぞれに１ビットずつ対応し、１ビットが両方のＵブロック（トップ・フィールドおよびボトム・フィールド）に対応し、１ビットが両方のＶブロック（トップ・フィールドおよびボトム・フィールド）に対応する。
【００３４】
ＣＢＰＣＹは、フィールド符号化されたマクロブロックに対して常に存在する。ＣＢＰＣＹと２つのフィールド動きベクトル・データ要素を用いて、マクロブロックのブロック内にＡＣ係数が存在することが決定される。ＣＢＰＣＹの意味は、ビット１、３、４、および５については、フレーム符号化されたマクロブロックの場合と同じである。すなわち、それらは、右のトップ・フィールドＹブロック、右のボトム・フィールドＹブロック、トップ／ボトムＵブロック、およびトップ／ボトムＶブロックにおけるＡＣ係数の存在または不在をそれぞれ示す。ビット位置０および２については、意味が若干異なる。ビット位置０に０があることは、ＴＯＰＭＶＤＡＴＡが存在せず、動きベクトル・プレディクタがトップ・フィールド・ブロックの動きベクトルとして用いられることを示す。これはさらに、左のトップ・フィールド・ブロックが非ゼロの係数をまったく含まないことも示している。ビット位置０に１があることは、ＴＯＰＭＶＤＡＴＡが存在することを示す。ＴＯＰＭＶＤＡＴＡは、トップ・フィールド・ブロックがインターかイントラかを示し、インターである場合はさらに、動きベクトル差分を示す。ＴＯＰＭＶＤＡＴＡから復号された「ｌａｓｔ」値が１に復号された場合は、左のトップ・フィールド・ブロックに対応するＡＣ係数が存在せず、それ以外の場合は、左のトップ・フィールド・ブロックに対応する非ゼロのＡＣ係数が存在する。同様に、上述の規則は、ＢＯＴＭＶＤＡＴＡおよび左のボトム・フィールド・ブロックに対応するビット位置２についても当てはまる。
【００３５】
ＶＩ．従来のＷＭＶ符号化器および復号器におけるスキップ・マクロブロック
符号化器および復号器は、ビットレートを低減するために、スキップ・マクロブロックを用いる。例えば、符号化器は、スキップ・マクロブロックをビットストリーム内で信号伝達する。復号器は、あるマクロブロックがスキップされていることを示す、ビットストリーム内の情報（例えば、スキップ・マクロブロック・フラグ）を受け取ると、そのマクロブロックの残差ブロック情報の復号をスキップする。その代わりに、復号器は、参照フレーム内で同じ場所の、あるいは（動きベクトル・プレディクタを用いて）動き補償されたマクロブロックの対応する画素データを用いて、スキップされているマクロブロックを再構成する。符号化器および復号器は、スキップ・マクロブロック情報の符号化および復号に関して、複数の符号化／復号モードからモードを選択する。例えば、スキップ・マクロブロック情報は、ビットストリームのフレーム・レベルで（例えば、ビット・プレーンの形で）信号伝達されるか、マクロブロック・レベルで（例えば、マクロブロックごとに１「スキップ」ビットを用いて）信号伝達される。ビット・プレーン符号化の場合、符号化器および復号器は、様々なビット・プレーン符号化モードの中からモードを選択する。
【００３６】
ある従来の符号化器および復号器では、スキップ・マクロブロックを、動きが、その因果関係的に予測された動きと等しく、残差がゼロである予測マクロブロックとして定義している。別の従来の符号化器および復号器では、スキップ・マクロブロックを、動きも残差もゼロである予測マクロブロックとして定義している。
【００３７】
スキップ・マクロブロックおよびビット・プレーン符号化の詳細については、「Skip Macroblock Coding」という名称で２００２年１２月１６日出願の特許文献１を参照されたい。
【００３８】
ＶＩＩ．従来のＷＭＶ符号化器および復号器におけるクロマ動きベクトル
クロマ動きベクトルの導出（derivation）は、ビデオの符号化および復号の重要な位置付けを占める。したがって、従来のＷＭＶ符号化器および復号器のソフトウェアでは、ルミナンス動きベクトルからクロマ動きベクトルを導出するために丸めとサブサンプリングを用いている。
【００３９】
Ａ．ルミナンス動きベクトルの再構成
従来のＷＭＶ符号化器および復号器は、プログレッシブ・フレームの１ＭＶおよび４ＭＶマクロブロック、およびインターレース・フレームのフレーム符号化またはフィールド符号化されたマクロブロックの動きベクトルを再構成する。ルミナンス動きベクトルは、動きベクトル・プレディクタに動きベクトル差分を加算することによって再構成される。プログレッシブ・フレームの１ＭＶマクロブロック、およびインターレース・フレームのフレーム符号化されたマクロブロックでは、マクロブロックのルミナンス成分を構成する４つのブロックに単一のルミナンス動きベクトルが適用される。プログレッシブ・フレームの４ＭＶマクロブロックでは、マクロブロック内のインター符号化されたルミナンス・ブロックのそれぞれが、それぞれのルミナンス動きベクトルを有する。したがって、各４ＭＶマクロブロックには、マクロブロック内のインター符号化されたブロックの数に応じて、最大４つのルミナンス動きベクトルが存在する。インターレース・フレームのフィールド符号化されたマクロブロックでは、２つのルミナンス動きベクトル（フィールドごとに１つずつ）が存在する。
【００４０】
Ｂ．クロマ動きベクトルの導出および再構成
符号化器および復号器は、プログレッシブ・フレームについては、４：２：０マクロブロック・フォーマットを用いる。フレーム・データは、ルミナンス（「Ｙ」）成分およびクロマ（「Ｕ」および「Ｖ」）成分を含む。各マクロブロックは、４つの８×８ルミナンス・ブロック（１つの１６×１６マクロブロックとして扱われる場合もある）と２つの８×８クロマ・ブロックとを含む。図１６は、４：２：０ＹＵＶサンプリング・グリッドを示す。図１６の４：２：０ＹＵＶサンプリング・グリッドは、マクロブロックのルミナンス・サンプルおよびクロマ・サンプルの空間的関係を示している。クロマ・サンプルの分解度は、水平（ｘ）方向と垂直（ｙ）方向の両方でルミナンス・サンプルの半分の分解度である。したがって、クロマ・グリッド上の距離を、ルミナンス・グリッド上の対応する距離から導出するために、従来のＷＭＶ符号化器および復号器では、ルミナンス動きベクトル成分を２で割る。これが、プログレッシブ・フレームにおいてルミナンス動きベクトルからクロマ動きベクトルを導出するダウンサンプリング・ステップの基本である。
【００４１】
符号化器および復号器では、プログレッシブ・フレームのクロマ・ベクトルは、２つのステップで再構成される。第１のステップでは、ルミナンス動きベクトルを適切に組み合わせ、スケーリングすることによって、名目上のクロマ動きベクトルが取得される。第２のステップでは、復号時間を短縮するために、スケーリング後に丸めが、必要に応じて行われる。
【００４２】
例えば、１ＭＶマクロブロックでは、次の擬似コードに従ってルミナンス成分をスケーリングすることによって、ルミナンス動きベクトル成分（ｌｍｖ＿ｘおよびｌｍｖ＿ｙ）からクロマ動きベクトル成分（ｃｍｖ＿ｘおよびｃｍｖ＿ｙ）が導出される。
【００４３】
【表１】
2011166816.tif 000003
【００４４】
スケーリングは、丸めテーブル配列（ｓ＿ＲｎｄＴｂｌ［］）を用いて、１／２画素オフセットが１／４画素オフセットより優先されるように行われる。復号時間を短縮するために、スケーリング操作後にさらなる丸めを行うことが可能である。
【００４５】
４ＭＶマクロブロックでは、符号化器および復号器は、図１７の擬似コード１７００に従って、４つのルミナンス・ブロックの動き情報からクロマ動きベクトルを導出する。図１７に示すように、符号化器および復号器は、マクロブロックのインター符号化されたブロックのルミナンス動きベクトルのメジアン予測または平均を用いてクロマ動きベクトル成分を導出する。３つ以上のブロックがイントラ符号化される特殊なケースでは、クロマ・ブロックもイントラ符号化される。
【００４６】
符号化器および復号器は、シーケンス・レベル・ビットＦＡＳＴＵＶＭＣ＝１の場合には、さらなる丸めを行う。ＦＡＳＴＵＶＭＣによって信号伝達される丸めは、クロマ動きベクトルに関して１／２画素位置および整数画素位置を優先する。これによって、符号化を高速化することが可能である。
【００４７】
従来のＷＭＶ符号化器および復号器は、インターレース・フレームには、４：１：１マクロブロック・フォーマットを用いる。インターレース・フレームの場合も、フレーム・データは、ルミナンス（「Ｙ」）成分およびクロマ（「Ｕ」および「Ｖ」）成分を含む。しかしながら、４：１：１マクロブロック・フォーマットでは、クロマ・サンプルの分解度は、水平方向ではルミナンス・サンプルの１／４の分解度であり、垂直方向ではフル分解度である。したがって、クロマ・グリッド上の距離を、ルミナンス・グリッド上の対応する距離から導出するために、従来のＷＭＶ符号化器および復号器では、水平方向のルミナンス動きベクトル成分を４で割る。
【００４８】
フレーム符号化されたマクロブロックの場合は、単一のルミナンス動きベクトルに対応するクロマ動きベクトルが１つ導出される。フィールド符号化されたマクロブロックの場合は、２つのルミナンス動きベクトル（トップ・フィールドに１つ、ボトム・フィールドに１つ）に対応する２つのクロマ動きベクトルが導出される。
【００４９】
従来のＷＭＶ符号化器および復号器では、インターレース・フレームにおいてクロマ動きベクトルを導出するための規則は、フィールド符号化されたマクロブロックとフレーム符号化されたマクロブロックとで同じである。クロマ動きベクトルのｘ成分は係数４でスケーリング（ダウンサンプリング）され、クロマ動きベクトルのｙ成分はルミナンス動きベクトルと同じままである。クロマ動きベクトルのスケーリングされたｘ成分も、隣接する１／４画素位置に丸められる。クロマ動きベクトルは、次の擬似コードに従って再構成される。この擬似コードでは、ｃｍｖ＿ｘおよびｃｍｖ＿ｙがクロマ動きベクトル成分を表し、ｌｍｖ＿ｘおよびｌｍｖ＿ｙが、対応するルミナンス動きベクトル成分を表す。
【００５０】
【表２】
2011166816.tif 000004
【００５１】
ＶＩＩＩ．ビデオの圧縮および圧縮解除の諸規格
ビデオの圧縮および圧縮解除に関連する国際規格がいくつかある。これらの規格には、Ｍｏｔｉｏｎ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ［「ＭＰＥＧ」］−１、−２、および−４規格と、国際電気通信連合［「ＩＴＵ」］のＨ．２６１、Ｈ．２６２（ＭＰＥＧ−２の別名）、Ｈ．２６３、およびＨ．２６４（ＪＶＴ／ＡＶＣとも呼ばれる）の各規格とが含まれる。これらの規格は、ビデオ復号器の態様と、圧縮されたビデオ情報のフォーマットとを指定する。また、これらは、直接または暗黙的に、特定の符号化器の詳細を指定するが、他の符号化器の詳細は指定されない。これらの規格は、イントラ・フレームおよびインター・フレームの圧縮解除および圧縮の様々な組合せを使用する（または、その使用をサポートする）。
【００５２】
Ａ．諸規格における動き推定／補償
諸国際規格においてデジタル・ビデオ・シーケンスのデータ圧縮を達成するために用いられる主要な方法の１つは、ピクチャ間の時間的冗長度を低減することである。これらの一般的な圧縮スキーム（ＭＰＥＧ−１、ＭＰＥＧ−２、ＭＰＥＧ−４、Ｈ．２６１、Ｈ．２６３など）では、動き推定および動き補償を用いる。例えば、現在のフレームが複数の正方形領域（例えば、ブロックおよび／またはマクロブロック）に等分される。現在の領域のそれぞれと一致する領域が、その領域の動きベクトル情報を送信することによって指定される。動きベクトルは、既に符号化（および再構成）されている参照フレームの中の、現在の領域のプレディクタとして用いられる領域の位置を示す。現在の領域と参照フレーム内の領域との画素ごとの差分（誤差信号とも呼ばれる）が導出される。この誤差信号は、通常、オリジナル信号よりエントロピーが低い。したがって、その情報は、より低いレートで符号化されることが可能である。ＷＭＶ８および９の符号化器および復号器の場合と同様に、動きベクトル値は、周囲の空間に存在する動きベクトルとの相関を有することが多いので、動きベクトル情報を表すために用いられるデータの圧縮は、現在の動きベクトルと、隣接する、既に符号化されている動きベクトルに基づく動きベクトル・プレディクタとの差分を符号化することによって達成されることが可能である。
【００５３】
一部の国際規格には、インターレース・ビデオ・フレームにおける動き推定および動き補償が記載されている。例えば、ＭＰＥＧ−２規格の７．６．１項には、デュアル・プライム符号化モードについて記載されている。デュアル・プライム符号化では、ビットストリーム内で、差分動きベクトルとともに、１つの動きベクトルだけが（フル・フォーマットで）符号化される。フィールド・ピクチャの場合は、この情報から２つの動きベクトルが導出される。２つの導出された動きベクトルを用いて、２つの参照フィールド（１つのトップ・フィールドと１つのボトム・フィールド）から予測が形成され、これらが平均されて最終予測が形成される。フレーム・ピクチャの場合は、全部で４つのフィールド予測が行われるように、この処理が２つのフィールドについて繰り返される。
【００５４】
ＭＰＥＧ−４規格の１９９８年５月２８日の委員会草案には、インターレース・ビデオおよびプログレッシブ・ビデオの動き補償について記載されている。７．５．５項には、プログレッシブ・ビデオ・オブジェクト・プレーン（ＶＯＰ）における動き補償について記載されている。候補動きベクトルは、隣接するマクロブロックまたはブロックから収集される。ＶＯＰの外側にある候補動きベクトルは、無効として扱われる。１つの候補動きベクトルだけが無効の場合、それは０に設定される。２つだけが無効の場合、それらは第３の動きベクトルと同じに設定される。３つすべてが無効の場合、それらは０に設定される。これら３つの候補に対し、メジアン・フィルタリングが実行されてプレディクタが算出される。
【００５５】
ＭＰＥＧ−４規格の委員会草案の７．６．２項には、インターレース・ビデオの動き補償について記載されている。例えば、７．６．２．１項には、フィールドごとに１つの動きベクトルを有するフィールド予測マクロブロック、およびブロックごと、またはマクロブロックごとに１つの動きベクトルを有するフレーム予測マクロブロックについて記載されている。候補動きベクトルは、隣接するマクロブロックまたはブロックから収集され、プレディクタはメジアン・フィルタリングによって選択される。
【００５６】
ＪＶＴ／ＡＶＣ規格の草案ＪＶＴ−ｄ１５７の８．４項にも、動き補償について記載されている。現在のブロックの動きベクトルの成分は、メジアン予測を用いて予測される（同じスライスに属さないマクロブロックの境界をまたいで予測が行われることはない）。第１に、３つの候補隣接ブロックの動きベクトル値および参照ピクチャが決定される。右上のブロックが現在のピクチャまたはスライスの外側にあるか、復号順序の関係で使用不能であれば、右上のブロックの動きベクトルおよび参照ピクチャは、左上のブロックの動きベクトルおよび参照ピクチャと同じであると見なされる。上、右上、および左上のブロックがすべて、現在のピクチャまたはスライスの外側にある場合は、それらの動きベクトルおよび参照ピクチャが、左ブロックの動きベクトルおよび参照ピクチャと同じであると見なされる。他の場合は、イントラ符号化されているか、現在のピクチャまたはスライスの外側にある候補プレディクタ・ブロックの動きベクトル値が０であると見なされ、参照ピクチャが、現在のブロックと異なると見なされる。
【００５７】
候補プレディクタの動きベクトル値および参照ピクチャが決定されていれば、左、上、および右上のブロックのうちの１つだけが、現在のブロックと同じ参照ピクチャを有する場合には、現在のブロックの予測動きベクトルが、同じ参照ピクチャを有するブロックの動きベクトル値と等しい。そうでない場合、現在のブロックの予測動きベクトル値の各成分は、左、上、および右上のブロックの対応する候補動きベクトル成分値のメジアンとして算出される。
【００５８】
８．４項にはさらに、マクロブロック適応フレーム／フィールド符号化について記載されている。インターレース・フレームでは、マクロブロックがマクロブロック・ペア（トップおよびボトム）にグループ化される。マクロブロック・ペアは、フィールド符号化またはフレーム符号化が可能である。フレーム符号化されたマクロブロック・ペアは、フレーム符号化された２つのマクロブロックとして復号される。フィールド符号化されたマクロブロック・ペアの場合、トップ・マクロブロックはそのマクロブロック・ペアのトップ・フィールドのラインからなり、ボトム・マクロブロックはそのマクロブロック・ペアのボトム・フィールドのラインからなる。現在のブロックがフレーム符号化モードにある場合は、隣接するブロックの候補動きベクトルもフレーム・ベースになる。現在のブロックがフィールド符号化モードにある場合は、隣接するブロックの候補動きベクトルも同じフィールド奇遇性（parity）でフィールド・ベースになる。
【００５９】
Ｂ．諸規格におけるフィールド符号化またはフレーム符号化されたマクロブロックの信号伝達
一部の国際規格には、インターレース・ピクチャのマクロブロックのフィールド／フレーム符号化タイプ（例えば、フィールド符号化またはフレーム符号化）の信号伝達について記載されている。
【００６０】
ＪＶＴ／ＡＶＣ規格の草案ＪＶＴ−ｄ１５７には、ｍｂ＿ｆｉｅｌｄ＿ｄｅｃｏｄｉｎｇ＿ｆｌａｇシンタックス要素について記載されている。この要素は、インターレースＰフレームにおいてマクロブロック・ペアがフレーム・モードで復号されるか、フィールド・モードで復号されるかを信号伝達するために用いられる。７．３．４項には、シーケンス・パラメータ（ｍｂ＿ｆｒａｍｅ＿ｆｉｅｌｄ＿ａｄａｐｔｉｖｅ＿ｆｌａｇ）がマクロブロックにおけるフレーム復号とフィールド復号との切り換えを示し、かつ、スライスヘッダ要素（ｐｉｃ＿ｓｔｒｕｃｔｕｒｅ）が、プログレッシブ・ピクチャかインターレース・フレーム・ピクチャかのピクチャ構造を示すケースにおいて、ｍｂ＿ｆｉｅｉｄ＿ｄｅｃｏｄｉｎｇ＿ｆｌａｇがスライス・データの要素として送られるビットストリーム・シンタックスについて記載されている。
【００６１】
ＭＰＥＧ−４規格の１９９８年５月２８日の委員会草案には、ｄｃｔ＿ｔｙｐｅシンタックス要素について記載されている。この要素は、マクロブロックがフレームＤＣＴ符号化されているか、フィールドＤＣＴ符号化されているかを信号伝達するために用いられる。６．２．７．３項および６．３．７．３項によれば、ｄｃｔ＿ｔｙｐｅは、マクロブロックが非ゼロの符号化ブロック・パターンを有するか、イントラ符号化されている、インターレース・コンテンツのＭＰＥＧ−４ビットストリームにのみ存在するマクロブロック・レイヤ要素である。
【００６２】
ＭＰＥＧ−２の場合、ｄｃｔ＿ｔｙｐｅ要素は、マクロブロックがフレームＤＣＴ符号化されているか、フィールドＤＣＴ符号化されているかを示す。ＭＰＥＧ−２ではさらに、ピクチャ符号化拡張要素ｆｒａｍｅ＿ｐｒｅｄ＿ｆｒａｍｅ＿ｄｃｔについて記載されている。ｆｒａｍｅ＿ｐｒｅｄ＿ｆｒａｍｅ＿ｄｃｔが「１」に設定されていれば、インターレース・フレームにおいてフレームＤＣＴ符号化だけが用いられる。ｆｒａｍｅ＿ｐｒｅｄ＿ｆｒａｍｅ＿ｄｃｔ＝１であって、ｄｃｔ＿ｔｙｐｅ要素がビットストリーム内に存在しない場合は、条件ｄｃｔ＿ｔｙｐｅ＝０が「導出」される。
【００６３】
Ｃ．諸規格におけるスキップ・マクロブロック
一部の国際規格では、スキップ・マクロブロックを用いる。例えば、ＪＶＴ／ＡＶＣ規格の草案ＪＶＴ−ｄ１５７では、スキップ・マクロブロックを、「そのマクロブロックが『スキップ』として復号されることを示す以外のデータが符号化されないマクロブロック」として定義する。同様に、ＭＰＥＧ−４の委員会草案は「スキップ・マクロブロックは、伝送される情報がないマクロブロックである。」と記載している。
【００６４】
Ｄ．諸規格におけるクロマ動きベクトル
諸国際規格においてデジタル・ビデオ・シーケンスのデータ圧縮を達成するために用いられる主要な方法の１つは、ピクチャ間の時間的冗長度を低減することである。これらの一般的な圧縮スキーム（ＭＰＥＧ−１、ＭＰＥＧ−２、ＭＰＥＧ−４、Ｈ．２６１、Ｈ．２６３など）では、動き推定および動き補償を用いる。例えば、現在のフレームが、ルミナンス情報およびクロマ情報の複数の正方形領域（例えば、ブロックおよび／またはマクロブロック）に等分される。現在の領域のそれぞれと一致する領域が、その領域の動きベクトル情報を送信することによって指定される。例えば、ルミナンス動きベクトルは、既に符号化（および再構成）されているフレームの中の、現在の領域のプレディクタとして用いられるルミナンス・サンプル領域の位置を示す。現在の領域と参照フレーム内の領域との画素ごとの差分（誤差信号とも呼ばれる）が導出される。この誤差信号は、通常、オリジナル信号よりエントロピーが低い。したがって、その情報は、より低いレートで符号化されることが可能である。従来のＷＭＶ符号化器および復号器の場合と同様に、動きベクトル値は、周囲の空間に存在する動きベクトルとの相関を有することが多いので、動きベクトル情報を表すために用いられるデータの圧縮は、現在の動きベクトルと、隣接する、既に符号化されている動きベクトルに基づく動きベクトル・プレディクタとの差分を符号化することによって達成されることが可能である。一般に、クロマ動きベクトルは、クロマ動きベクトルの算出および符号化を別途行うことに伴うオーバーヘッドを避けるために、ルミナンス動きベクトルから導出される。
【００６５】
一部の国際規格には、ルミナンス動きベクトルからクロマ動きベクトルを導出することについて記載されている。ＭＰＥＧ−２規格の７．６．３．７項には、水平方向および垂直方向のルミナンス動きベクトル成分のそれぞれを２で割ってクロマ動きベクトル成分を適切にスケーリングすることによって、４：２：０マクロブロック・フォーマットのルミナンス動きベクトルからクロマ動きベクトルを導出することについて記載されている。４：２：２フォーマットの場合は、クロマ情報が水平方向にのみサブサンプリングされるので、垂直方向成分は２で割られない。４：４：４フォーマットの場合は、クロマ情報がルミナンス情報と同じ分解度でサンプリングされるので、いずれの成分も２で割られない。
【００６６】
Ｈ．２６３規格のＡｎｎｅｘ  Ｆには、マクロブロックごとに４つの動きベクトルを予測に用いるアドバンスト予測モードについて記載されている。アドバンスト予測モードでは、４つの動きベクトルのそれぞれが、マクロブロック内の４つのルミナンス・ブロックのうちの１つブロック内のすべての画素に用いられる。各方向の、４つのルミナンス動きベクトル成分の総和を計算して８で割ることによって、（４：２：０フォーマットにおける）両方のクロマ・ブロックの動きベクトルが導出される。同様に、ＭＰＥＧ−４規格の１９９８年５月２８日の委員会草案の７．５．５項には、Ｋ個の８×８ブロックに対応するＫ個の動きベクトルの総和を計算し、その総和を２＊Ｋで割ることによって、４：２：０フォーマットの両方のクロマ・ブロックの動きベクトルＭＶＤＣＨＲを導出することについて記載されている。クロマの予測は、２つのクロマ・ブロックのすべての画素に動きベクトルＭＶＤＣＨＲを適用することによって得られる。
【００６７】
ＪＶＴ／ＡＶＣ規格の草案ＪＶＴ−ｄ１５７の８．４．１．４項にも、水平方向および垂直方向のルミナンス動きベクトル成分のそれぞれを２で割ることによって、４：２：０マクロブロック・フォーマットのルミナンス動きベクトルからクロマ動きベクトルを導出することについて記載されている。草案ＪＶＴ−ｄ１５７の７．４．５項には、様々なルミナンス・ブロックサイズ（例えば、１６×１６、１６×８、８×１６、および８×８）のマクロブロックおよび関連するクロマ・ブロックについて記載されている。例えば、ＰスライスおよびＳＰスライスについては、「各Ｎ×Ｍルミナンス・ブロックおよび関連付けられたクロマ・ブロックについて動きベクトルが与えられる」と記載されている。
【００６８】
Ｅ．諸規格の制限
これらの諸国際規格には、いくつかの重要な点で制限がある。例えば、ＪＶＴ／ＡＶＣ規格の草案ＪＶＴ−ｄ１５７およびＭＰＥＧ−４規格の委員会草案には、１つまたは複数の候補動きベクトルが０に設定されている場合でもメジアン予測を用いて動きベクトル・プレディクタを算出することについて記載されている。候補が０に設定されている場合にメジアン予測を用いると、スキューのある動きベクトル・プレディクタが生成されることが多い。諸規格でも、４つの符号化されたフィールド動きベクトルを有するマクロブロックを予測することは記載されていない。このことは、動き推定および動き補償の空間的適応性に制限を与える。さらに、草案ＪＶＴ−ｄ１５７では、個々のインターレース・マクロブロックではなくマクロブロック・ペアを用いることによってインターレース符号化および復号を行う。これによって、ピクチャ内のフィールド符号化／フレーム符号化の適応性が制限される。
【００６９】
別の例として、これらの諸規格にはマクロブロック・タイプの信号伝達の備えがあるが、フィールド／フレーム符号化タイプ情報は、動き補償タイプ（例えば、フィールド予測かフレーム予測か、１つの動きベクトルか複数の動きベクトルか、など）とは別に信号伝達される。
【００７０】
別の例として、一部の国際規格では、特定のマクロブロックをスキップしてビットレートを節約することを考慮しているが、これらの規格におけるスキップ・マクロブロック条件は、そのマクロブロックについてそれ以上符号化される情報がないことだけを示し、そのマクロブロックに関する他の潜在的に重要な情報を与えない。
【００７１】
別の例として、いくつかの規格で用いられるクロマ動きベクトルは、クロマの動きの局所的変化を十分表現しない。さらに別の問題として、（特に、フィールド符号化されたコンテンツについて）クロマ動きベクトル導出の丸めメカニズムが非効率的である。
【先行技術文献】
【特許文献】
【００７２】
【特許文献１】米国特許出願第１０／３２１４１５号明細書
【特許文献２】米国特許出願第１０／６２２３７８号明細書
【特許文献３】米国特許出願第１０／８８２１３５号明細書
【特許文献４】米国特許仮出願第６０／５０１０８１号明細書
【特許文献５】米国特許出願第１０／８５７４７３号明細書
【発明の概要】
【発明が解決しようとする課題】
【００７３】
デジタル・ビデオにおいては、ビデオの圧縮および圧縮解除はきわめて重要なので、ビデオの圧縮および圧縮解除の分野が非常に発達していることは驚くことではない。従来のビデオ圧縮および圧縮解除手法の利点がどうであれ、それらの手法は、以下に示す手法およびツールの利点を有していない。
【００７４】
本発明の目的は、ビデオ・コンテンツの圧縮および圧縮解除について、特にインターレース・ビデオ・コンテンツの圧縮および圧縮解除についての現在の手法を改善することにある。
【課題を解決するための手段】
【００７５】
要約すれば、詳細な説明は、ビデオ・フレームの符号化および復号の様々な手法およびツールを対象とする。記載の実施形態は、以下に限定されないが、以下を含む記載した手法およびツールの１つまたは複数を実装する。
【００７６】
一態様では、符号化器／復号器が、インターレース・フレーム符号化された順方向予測ピクチャ（例えば、インターレースＰフレーム）のマクロブロックの４つのフィールド動きベクトルの情報を含む動きベクトル情報を受け取る。符号化器／復号器は、その４つのフィールド動きベクトルを用いてマクロブロックを処理する。４つのフィールド動きベクトルのうちの２つは、マクロブロックの第１フィールドにおける動きを表し、４つのフィールド動きベクトルのうちの他の２つは、マクロブロックの第２フィールドにおける動きを表す。４つのフィールド動きベクトルについての情報は、４つのフィールド動きベクトルの動きベクトル差分を含むことが可能である。
【００７７】
別の態様では、符号化器／復号器が、インターレース・フレーム符号化されたピクチャ（例えば、インターレースＰフレーム）の現在のマクロブロック（例えば、２つのフィールド動きベクトル・マクロブロック、または４つのフィールド動きベクトル・マクロブロック）のフィールド動きベクトルを予測するための有効な候補動きベクトル（例えば、隣接するマクロブロックにあるフレーム動きベクトルまたはフィールド動きベクトル）の数を決定する。符号化器／復号器は、有効な候補動きベクトルに少なくとも部分的に基づいて、フィールド動きベクトルの動きベクトル・プレディクタを算出する。
【００７８】
この算出は、有効な候補動きベクトルの数が３かどうかに基づいて、有効な候補動きベクトルに対してメジアン演算（例えば、成分ごとのメジアン演算）を実行するかどうかを決定することを含む。有効な候補動きベクトルの数が３であれば、この算出はさらに、有効な候補動きベクトルに対してメジアン演算を実行することを含むことが可能である。有効な候補動きベクトルの数が３未満であれば、この算出は、メジアン演算を実行することなく、有効な候補動きベクトルを動きベクトル・プレディクタとして選択することを含むことが可能である。符号化器／復号器は、動きベクトル・プレディクタおよび（差分が存在しないことを示すことも可能な）動きベクトル差分情報に少なくとも部分的に基づいてフィールド動きベクトルを再構成することが可能である。
【００７９】
有効な候補動きベクトルは、インターレース・フレーム符号化されたピクチャ内の、または現在のマクロブロックと同じスライス内の、ブロック用か？、マクロブロック・フィールド用か？、マクロブロック・フィールド部分用か？、またはマクロブロック用か？によって特徴づけられることが可能であり、実際の動きベクトル値とすることができ、イントラのブロック、マクロブロック・フィールド、マクロブロック・フィールド部分、またはマクロブロックに対しては存在しない。
【００８０】
別の態様では、符号化器／復号器が、インターレース・フレーム符号化されたピクチャ内の現在のマクロブロックの現在のフィールド用のフィールド動きベクトルを予測するために候補動きベクトルを決定し、その候補動きベクトルの１つまたは複数についてフィールド極性を決定し、そのフィールド極性に少なくとも部分的に基づいて、そのフィールド動きベクトル用の動きベクトル・プレディクタを算出する。候補動きベクトルは、１／４画素単位で計測されることが可能である。フィールド極性は、候補動きベクトルのｙ成分に対してビットごとのＡＮＤ演算を実行することによって決定されることが可能である。
【００８１】
候補動きベクトルのフィールド極性を決定することは、候補動きベクトルが参照フレームのトップ・フィールドの変位を示しているか、ボトム・フィールドの変位を示しているか、あるいは、候補動きベクトルが現在のフィールドと同じ極性のフィールドの変位を示しているか、反対の極性のフィールドの変位を示しているかを決定することを含むことが可能である。
【００８２】
別の態様では、符号化器／復号器が、フィールド動きベクトルを予測するための、１つまたは複数の有効な候補動きベクトルを決定し、その１つまたは複数の有効な候補動きベクトルの個々の有効な候補動きベクトルそれぞれのフィールド極性を決定し、そのフィールド極性に応じて、個々の有効な候補動きベクトルのそれぞれを２つの集合のいずれかに割り当て、その２つの集合に少なくとも部分的に基づいて、フィールド動きベクトルの動きベクトル・プレディクタを算出する。この２つの集合は、反対の極性の集合と同じ極性の集合であることが可能である。動きベクトル・プレディクタを算出することは、優性的な極性（dominant polarity）の、有効な候補動きベクトルを選択する（例えば、有効な候補を最も多く有する集合からの候補）ことを含むことが可能である。候補は、指定の選択順序で選択されることが可能である。有効な候補が各集合に１つだけ割り当てられている場合、動きベクトル・プレディクタを算出することは、反対の極性の候補ではなく同じ極性の候補を選択することを含むことが可能である。２つの集合の一方に有効な候補が３つ割り当てられている場合、動きベクトル・プレディクタを算出することは、その３つの有効な候補に対してメジアン演算を実行することを含むことが可能である。
【００８３】
別の態様では、復号器が、インターレース・フレーム（例えば、インターレースＰフレーム、インターレースＢフレーム、または、インターレースＰフィールドおよび／またはインターレースＢフィールドを有するフレーム）の複数のマクロブロックの中にある１つまたは複数のスキップ・マクロブロック（skipped macroblocks）を復号する。その１つまたは複数のスキップ・マクロブロックのそれぞれは、（１）ビットストリーム内のスキップ・マクロブロック信号によって指示され、（２）予測動きベクトル（例えば、フレーム動きベクトル）を厳密に１つ用い、動きベクトル差分情報を有さず、（３）残差情報を欠いているマクロブロックである。その１つまたは複数のスキップ・マクロブロックのそれぞれについてのスキップ・マクロブロック信号は、それぞれのスキップ・マクロブロックに対して１動きベクトルで動き補償される復号を指示する。スキップ・マクロブロック信号は、複数のレイヤを有するビットストリームのフレーム・レイヤで送られる圧縮されたビット・プレーンの一部であることが可能である。または、スキップ・マクロブロック信号は、マクロブロック・レイヤで送られる個々のビットであることも可能である。
【００８４】
別の態様では、複数の使用可能な符号化モードの群から符号化モードが選択され、選択された符号化モードに従って、符号化器または復号器内でビット・プレーンが処理される。ビット・プレーンは、インターレース・フレーム内のマクロブロックがスキップされているかどうかを示すバイナリ情報を含む。インターレース・フレーム内に動きベクトルを１つだけ有するマクロブロックがあれば、そのマクロブロックがスキップされ、その１つだけの動きベクトルがそのマクロブロックの予測動きベクトルに等しく、そのマクロブロックは残差を有しない。複数の動きベクトルを有するマクロブロックはスキップされない。
【００８５】
別の態様では、符号化器が、インターレースＰフレームのマクロブロックの動き補償タイプ（例えば、１ＭＶ、４フレームＭＶ、２フィールドＭＶ、または４フィールドＭＶ）を選択し、そのマクロブロックのフィールド／フレーム符号化タイプ（例えば、フィールド符号化されている、フレーム符号化されている、符号化されたブロックがない）を選択する。符号化器は、マクロブロックの動き補償タイプおよびフィールド／フレーム符号化タイプを統合的に符号化する。符号化器はさらに、マクロブロックの他の情報（例えば、１動きベクトル・マクロブロックなどに対する差分動きベクトルの存在のインジケータ）を、動き補償タイプおよびフィールド／フレーム符号化タイプと統合的に符号化することが可能である。
【００８６】
別の態様では、復号器が、インターレースＰフレームのマクロブロック用のマクロブロック情報を受け取る。この情報には、マクロブロックの動き補償タイプおよびフィールド／フレーム符号化タイプを表す統合符号（joint code）が含まれる。復号器は、その統合符号（例えば、可変長符号化テーブル内の可変長符号）を復号して、マクロブロックの動き補償タイプ情報とフィールド／フレーム符号化タイプ情報の両方を取得する。
【００８７】
別の態様では、復号器が、１つのマクロブロックの３つ以上のルミナンス動きベクトルのルミナンス動きベクトル情報を受け取る。この３つ以上のルミナンス動きベクトルのそれぞれは、マクロブロック（例えば、４：２：０マクロブロック）の少なくとも一部に関連付けられている。復号器は、マクロブロックのクロマ動きベクトルとルミナンス動きベクトルとの比を１：１に保つように、ルミナンス動きベクトル情報に対して、丸めテーブル（例えば、フィールド・ベースの丸めテーブル）を伴う算出を少なくとも１つ行うことにより、その３つ以上のルミナンス動きベクトルのそれぞれについて、マクロブロックの少なくとも一部に関連付けられたクロマ動きベクトルを導出する。例えば、復号器は、マクロブロックの４つのルミナンス（フレームまたはフィールド）動きベクトルを受け取り、そのマクロブロックの４つのクロマ動きベクトルを導出する。この導出することは、フィールド・ベースの丸めテーブルを用いて、ルミナンス動きベクトル情報の少なくとも一部をサブサンプリングすることおよび／または丸めることを含むことが可能である。
【００８８】
別の態様では、復号器が、１つまたは複数のルミナンス動きベクトルの動きベクトル情報に少なくとも部分的に基づいて、１つまたは複数のルミナンス動きベクトルのそれぞれについて、インターレース・フレーム符号化されたピクチャ（例えば、インターレースＰフレーム、インターレースＢフレーム）のマクロブロックの少なくとも一部に関連付けられたクロマ動きベクトルを導出する。復号器は、４つのルミナンス・フィールド動きベクトルを用いて予測されたマクロブロックを復号するように動作可能である。例えば、復号器は、ルミナンス動きベクトル情報の少なくとも一部にフィールド・ベースの丸めルックアップ・テーブルを適用するなどして、４つのクロマ・フィールド動きベクトルを導出する。
【００８９】
別の態様では、復号器が、フィールド・ベースの丸めテーブル（例えば、整数配列）を用いてルミナンス・フィールド動きベクトル成分を丸め、そのルミナンス・フィールド動きベクトル成分をサブサンプリングすることによって、１つまたは複数のルミナンス・フィールド動きベクトルのそれぞれについて、マクロブロックの少なくとも一部に関連付けられたクロマ動きベクトルを導出する。
【００９０】
これらの様々な手法およびツールは、組み合わせて用いても、別々に用いてもよい。
【００９１】
以下、添付図面を参照しながら、様々な実施形態の詳細説明を進めていく中で、さらなる特徴や利点が明らかになるであろう。
【図面の簡単な説明】
【００９２】
【図１】先行技術による、ビデオ符号化器における動き推定を示す図である。
【図２】先行技術による、ビデオ符号化器における８×８ブロックの予測残差のブロック・ベース圧縮を示す図である。
【図３】先行技術による、ビデオ符号化器における８×８ブロックの予測残差のブロック・ベース圧縮解除を示す図である。
【図４】先行技術によるインターレース・フレームを示す図である。
【図５Ａ】先行技術による、プログレッシブＰフレームにおける１ＭＶマクロブロックの候補動きベクトル・プレディクタのマクロブロックの位置を示す図である。
【図５Ｂ】先行技術による、プログレッシブＰフレームにおける１ＭＶマクロブロックの候補動きベクトル・プレディクタのマクロブロックの位置を示す図である。
【図６Ａ】先行技術による、混在１ＭＶ／４ＭＶプログレッシブＰフレームにおける１ＭＶマクロブロックの候補動きベクトル・プレディクタのブロックの位置を示す図である。
【図６Ｂ】先行技術による、混在１ＭＶ／４ＭＶプログレッシブＰフレームにおける１ＭＶマクロブロックの候補動きベクトル・プレディクタのブロックの位置を示す図である。
【図７Ａ】先行技術による、混在１ＭＶ／４ＭＶプログレッシブＰフレームにおける４ＭＶマクロブロック内の様々な場所にあるブロックの候補動きベクトル・プレディクタのブロックの位置を示す図である。
【図７Ｂ】先行技術による、混在１ＭＶ／４ＭＶプログレッシブＰフレームにおける４ＭＶマクロブロック内の様々な場所にあるブロックの候補動きベクトル・プレディクタのブロックの位置を示す図である。
【図８Ａ】先行技術による、混在１ＭＶ／４ＭＶプログレッシブＰフレームにおける４ＭＶマクロブロック内の様々な場所にあるブロックの候補動きベクトル・プレディクタのブロックの位置を示す図である。
【図８Ｂ】先行技術による、混在１ＭＶ／４ＭＶプログレッシブＰフレームにおける４ＭＶマクロブロック内の様々な場所にあるブロックの候補動きベクトル・プレディクタのブロックの位置を示す図である。
【図９】先行技術による、混在１ＭＶ／４ＭＶプログレッシブＰフレームにおける４ＭＶマクロブロック内の様々な場所にあるブロックの候補動きベクトル・プレディクタのブロックの位置を示す図である。
【図１０】先行技術による、混在１ＭＶ／４ＭＶプログレッシブＰフレームにおける４ＭＶマクロブロック内の様々な場所にあるブロックの候補動きベクトル・プレディクタのブロックの位置を示す図である。
【図１１】先行技術による、インターレースＰフレームにおける現在のフレーム符号化されたマクロブロックの候補動きベクトル・プレディクタを示す図である。
【図１２】先行技術による、インターレースＰフレームにおける現在のフィールド符号化されたマクロブロックの候補動きベクトル・プレディクタを示す図である。
【図１３】先行技術による、インターレースＰフレームにおける現在のフィールド符号化されたマクロブロックの候補動きベクトル・プレディクタを示す図である。
【図１４】先行技術による、「３のメジアン」算出を実行する擬似コードを示すコード図である。
【図１５】先行技術による、先行および後続の参照フレームを有するＢフレームを示す図である。
【図１６】先行技術による４：２：０ＹＵＶサンプリング・グリッドを示す図である。
【図１７】先行技術による、４ＭＶマクロブロックの４つのルミナンス・ブロックの動き情報からクロマ動きベクトルを導出する擬似コードを示すコード図である。
【図１８】記載の各種実施形態の実装との組合せに好適なコンピューティング環境のブロック図である。
【図１９】記載の各種実施形態の実装との組合せが可能な、一般化されたビデオ符号化器システムのブロック図である。
【図２０】記載の各種実施形態の実装との組合せが可能な、一般化されたビデオ復号器システムのブロック図である。
【図２１】記載の各種実施形態で用いられるマクロブロック・フォーマットを示す図である。
【図２２Ａ】トップ・フィールドとボトム・フィールドの互い違いのラインを示す、インターレース・ビデオ・フレームの一部分の図である。
【図２２Ｂ】符号化／復号のためにフレームとして構成されたインターレース・ビデオ・フレームを示す図である。
【図２２Ｃ】符号化／復号のためにフィールドとして構成されたインターレース・ビデオ・フレームを示す図である。
【図２３】インターレースＰフレームの２フィールドＭＶマクロブロックにおけるルミナンス・ブロックの動きベクトルと、導出された、クロマ・ブロックの動きベクトルとを示す図である。
【図２４】インターレースＰフレームの４フレームＭＶマクロブロックにおける、４つのルミナンス・ブロックのそれぞれについての様々な動きベクトルと、４つのクロマ・サブブロックのそれぞれについて導出された動きベクトルとを示す図である。
【図２５】インターレースＰフレームの４フィールドＭＶマクロブロックにおけるルミナンス・ブロックの動きベクトルと、導出された、クロマ・ブロックの動きベクトルとを示す図である。
【図２６Ａ】インターレースＰフレームの現在のマクロブロックの候補プレディクタを示す図である。
【図２６Ｂ】インターレースＰフレームの現在のマクロブロックの候補プレディクタを示す図である。
【図２７】インターレースＰフレームにおいて４つのフィールド動きベクトルを有するマクロブロックを処理する手法を示すフローチャートである。
【図２８】候補動きベクトルの極性に基づいて、フィールド符号化されたマクロブロックの動きベクトル・プレディクタを算出する手法を示すフローチャートである。
【図２９】フィールド動きベクトルの動きベクトル・プレディクタを算出する際にメジアン演算を実行するかどうかを決定する手法を示すフローチャートである。
【図３０】インターレース予測フレームの特定のマクロブロックの符号化をスキップするかどうかを決定する手法を示すフローチャートである。
【図３１】インターレースＰフレームのマクロブロックの、統合的に符号化された動き補償タイプ情報およびフィールド／フレーム符号化タイプ情報を復号する手法を示すフローチャートである。
【図３２】複数のルミナンス動きベクトルのそれぞれについて１つのクロマ動きベクトルを導出する手法を示すフローチャートである。
【図３３】フィールド・ベースの丸めルックアップ・テーブルを用いてクロマ・フィールド動きベクトルを導出する手法を示すフローチャートである。
【図３４】フィールド・ベースの丸めルックアップ・テーブルを用いてルミナンス動きベクトル成分からクロマ動きベクトル成分を導出する擬似コードを示すコード図である。
【図３５】フィールド・ベースの丸めルックアップ・テーブルの値に対するフィールド指定を示す図である。
【図３６】複合実装形態（combined implementation）における、エントリ・ポイント・レイヤのビットストリーム・シンタックスを示す図である。
【図３７】複合実装形態における、インターレースＰフレームのフレーム・レイヤのビットストリーム・シンタックスを示す図である。
【図３８】複合実装形態における、インターレースＢフレームのフレーム・レイヤのビットストリーム・シンタックスを示す図である。
【図３９】複合実装形態における、インターレースＰフィールドまたはＢフィールドのフレーム・レイヤのビットストリーム・シンタックスを示す図である。
【図４０】複合実装形態における、インターレースＰフレームのマクロブロックのマクロブロック・レイヤのビットストリーム・シンタックスを示す図である。
【図４１】複合実装形態においてインターレースＰフレームの１ＭＶマクロブロックの候補動きベクトルを収集する擬似コードを示すコード・リストである。
【図４２】複合実装形態においてインターレースＰフレームの４フレームＭＶマクロブロックの候補動きベクトルを収集する擬似コードを示すコード・リストである。
【図４３】複合実装形態においてインターレースＰフレームの４フレームＭＶマクロブロックの候補動きベクトルを収集する擬似コードを示すコード・リストである。
【図４４】複合実装形態においてインターレースＰフレームの４フレームＭＶマクロブロックの候補動きベクトルを収集する擬似コードを示すコード・リストである。
【図４５】複合実装形態においてインターレースＰフレームの４フレームＭＶマクロブロックの候補動きベクトルを収集する擬似コードを示すコード・リストである。
【図４６】複合実装形態においてインターレースＰフレームの２フィールドＭＶマクロブロックの候補動きベクトルを収集する擬似コードを示すコード・リストである。
【図４７】複合実装形態においてインターレースＰフレームの２フィールドＭＶマクロブロックの候補動きベクトルを収集する擬似コードを示すコード・リストである。
【図４８】複合実装形態においてインターレースＰフレームの４フィールドＭＶマクロブロックの候補動きベクトルを収集する擬似コードを示すコード・リストである。
【図４９】複合実装形態においてインターレースＰフレームの４フィールドＭＶマクロブロックの候補動きベクトルを収集する擬似コードを示すコード・リストである。
【図５０】複合実装形態においてインターレースＰフレームの４フィールドＭＶマクロブロックの候補動きベクトルを収集する擬似コードを示すコード・リストである。
【図５１】複合実装形態においてインターレースＰフレームの４フィールドＭＶマクロブロックの候補動きベクトルを収集する擬似コードを示すコード・リストである。
【図５２】複合実装形態においてインターレースＰフレームのフレーム動きベクトルの動きベクトル・プレディクタを算出する擬似コードを示すコード・リストである。
【図５３】複合実装形態においてインターレースＰフレームのフィールド動きベクトルの動きベクトル・プレディクタを算出する擬似コードを示すコード・リストである。
【図５４Ａ】複合実装形態においてインターレースＰフレームの動きベクトル差分を復号する擬似コードを示すコード・リストである。
【図５４Ｂ】複合実装形態においてインターレースＰフレームの動きベクトル差分を復号する擬似コードを示すコード・リストである。
【図５５Ａ】複合実装形態におけるＮｏｒｍ−６およびＤｉｆｆ−６のビット・プレーン符号化モードのタイルを示す図である。
【図５５Ｂ】複合実装形態におけるＮｏｒｍ−６およびＤｉｆｆ−６のビット・プレーン符号化モードのタイルを示す図である。
【図５５Ｃ】複合実装形態におけるＮｏｒｍ−６およびＤｉｆｆ−６のビット・プレーン符号化モードのタイルを示す図である。
【発明を実施するための形態】
【００９３】
本出願は、インターレース・ビデオおよびプログレッシブ・ビデオの効率的な圧縮および圧縮解除の手法およびツールに関する。記載の各種実施形態では、ビデオ符号化器および復号器に、インターレース・ビデオおよびプログレッシブ・ビデオを符号化および復号する手法が組み込まれ、さらに、それらに対応する信号伝達手法が組み込まれる。これらの信号伝達手法は、様々なレイヤまたはレベル（例えば、シーケンス・レベル、フレーム・レベル、フィールド・レベル、マクロブロック・レベル、および／またはブロック・レベル）を含むビットストリーム・フォーマットまたはシンタックスに用いられる。
【００９４】
本明細書に記載の実装形態に対する様々な代替が可能である。例えば、フローチャート図を参照して記載されている手法は、フローチャートに示されているステージの順序を変えたり、特定のステップを繰り返したり省略したりして変更することが可能である。あるいは、一部の実装形態は特定のマクロブロック・フォーマットを基準にして記載されているが、他のフォーマットを用いることも可能である。さらには、順方向予測に関して記載されている手法およびツールを他のタイプの予測に適用することも可能である。
【００９５】
これらの様々な手法およびツールは、組み合わせて用いても、別々に用いてもよい。記載の手法およびツールのうちの１つまたは複数が、様々な実施形態において実装される。本明細書に記載の手法およびツールのいくつかは、ビデオ符号化器または復号器に用いたり、ビデオの符号化または復号に特に限定されない他のシステムに用いたりすることが可能である。
【００９６】
１．コンピューティング環境
図１８は、記載の実施形態のいくつかを実装することが可能な、好適なコンピューティング環境１８００を一般化した例を示す。記載の手法およびツールは、多種多様な汎用または専用コンピューティング環境への実装が可能なので、コンピューティング環境１８００は、使用または機能性の範囲の何らかの限定を意図するものではない。
【００９７】
図１８に示すように、コンピューティング環境１８００は、少なくとも１つの処理ユニット１８１０とメモリ１８２０とを含む。図１８では、この最も基本的な構成１８３０を破線で囲んでいる。処理ユニット１８１０は、コンピュータで実行可能な命令を実行し、実際のプロセッサであっても仮想のプロセッサであってもよい。マルチ処理システムでは、処理能力を高めるために複数の処理ユニットが、コンピュータで実行可能な命令を実行する。メモリ１８２０は、揮発性メモリ（例えば、レジスタ、キャッシュ、ＲＡＭ）であっても、不揮発性メモリ（例えば、ＲＯＭ、ＥＦＰＲＯＭ、フラッシュ・メモリなど）であっても、これらの組合せであってもよい。メモリ１８２０は、記載の手法およびツールのうちの１つまたは複数を用いてビデオ符号化器および復号器を実装するソフトウェア１８８０を格納する。
【００９８】
コンピュータ環境は、付加機能を有することが可能である。例えば、コンピューティング環境１８００は、記憶装置１８４０、１つまたは複数の入力装置１８５０、１つまたは複数の出力装置１８６０、および１つまたは複数の通信接続１８７０を含む。バス、コントローラ、ネットワークなどの相互接続メカニズム（図示せず）が、コンピューティング環境１８００の各コンポーネントを相互接続する。一般に、オペレーティング・システム・ソフトウェア（図示せず）が、コンピューティング環境１８００で実行される他のソフトウェアの動作環境を提供し、コンピューティング環境１８００の各コンポーネントのアクティビティを調整する。
【００９９】
記憶装置１８４０は、リムーバブルであっても非リムーバブルであってもよく、磁気ディスク、磁気テープまたはカセット、ＣＤ−ＲＯＭ、ＤＶＤ、または他の任意の、コンピューティング環境１８００内で情報を記憶するために用いられることが可能であって、アクセスされることが可能である媒体を含む。記憶装置１８４０は、ビデオ符号化器または復号器を実装するソフトウェア１８８０に対する命令を記憶する。
【０１００】
入力装置１８５０としては、キーボード、マウス、ペン、トラック・ボールなどのタッチ入力装置、音声入力装置、スキャン装置、または他の、コンピューティング環境１８００に入力を提供する装置が可能である。オーディオまたはビデオの符号化に関する入力装置１８５０としては、サウンド・カード、ビデオ・カード、ＴＶチューナ・カード、または同様の、オーディオまたはビデオの入力をアナログまたはデジタル形式で受け付ける装置や、オーディオまたはビデオのサンプルをコンピューティング環境１８００に読み込むＣＤ−ＲＯＭやＣＤ−ＲＷなどが可能である。出力装置１８６０としては、ディスプレイ、プリンタ、スピーカ、ＣＤライタ、または他の、コンピューティング環境１８００からの出力を提供する装置が可能である。
【０１０１】
通信接続１８７０は、通信媒体を経由しての、別のコンピューティング・エンティティとの通信を可能にする。通信媒体は、コンピュータで実行可能な命令のような情報、オーディオまたはビデオの入力または出力、または他のデータを、変調データ信号の形で搬送する。変調データ信号は、その特性の１つまたは複数が、信号内の情報を符号化するように設定または変更される信号である。限定ではなく例として、通信媒体は、電気、光、ＲＦ、赤外線、音響、または他のキャリアを用いて実装される有線または無線技術を含む。
【０１０２】
本発明の手法およびツールは、コンピュータ可読媒体の一般的なコンテキストの形での説明が可能である。コンピュータ可読媒体は、コンピューティング環境においてアクセス可能な任意の使用可能な媒体である。限定ではなく例として、コンピュータ環境１８００では、コンピュータ可読媒体は、メモリ１８２０、記憶装置１８４０、通信媒体、およびこれらの任意の組合せを含む。
【０１０３】
本発明の手法およびツールは、プログラム・モジュールに含まれ、コンピューティング環境内のターゲット実プロセッサまたは仮想プロセッサで実行される、コンピュータで実行可能な命令などの一般的なコンテキストの形での説明が可能である。一般に、プログラム・モジュールとしては、特定のタスクを実行したり、特定の抽象データ型を実装したりするルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造体などがある。プログラム・モジュールの機能は、様々な実施形態において、必要に応じてプログラム・モジュール間で結合されたり分割されたりすることが可能である。プログラム・モジュールのコンピュータで実行可能な命令は、ローカル・コンピューティング環境においても分散コンピューティング環境においても実行可能である。
【０１０４】
説明のための表現として、以下の詳細説明では、「推定する」、「補償する」、「予測する」、「適用する」などの用語を、コンピューティング環境内のコンピュータ動作を記述するために用いる。これらの用語は、コンピュータによって実行される動作の高レベル抽象化であって、人間によって実行される動作と混同されてはならない。これらの用語に対応する実際のコンピュータ動作は、実装形態に応じて異なる。
【０１０５】
ＩＩ．一般化されたビデオ符号化器および復号器
図１９は、記載の実施形態のいくつかの実装との組合せが可能な、一般化されたビデオ符号化器１９００のブロック図である。図２０は、記載の実施形態のいくつかの実装との組合せが可能な、一般化されたビデオ復号器２０００のブロック図である。
【０１０６】
符号化器１９００および復号器２０００内のモジュール間の、図示した関係が、符号化器および復号器における情報の概略フローを示しており、他の関係は簡単のために図示していない。具体的には、図１９および図２０は、通例として、ビデオのシーケンス、ピクチャ、マクロブロック、ブロックなどに用いられる符号化器の設定、モード、テーブルなどを表す副情報を示していない。そのような副情報は、一般に、エントロピー符号化されてから出力ビットストリームの中で送られる。出力ビットストリームのフォーマットは、Ｗｉｎｄｏｗｓ（登録商標）Ｍｅｄｉａ  Ｖｉｄｅｏバージョン９のフォーマットであっても他のフォーマットであってもよい。
【０１０７】
符号化器１９００および復号器２０００は、ビデオ・ピクチャを処理するが、それらは、ビデオ・フレームであってもビデオ・フィールドであってもフレームとフィールドの組合せであってもよい。ピクチャ・レベルおよびマクロブロック・レベルにおけるビットストリームのシンタックスおよびセマンティクスは、フレームを用いるかフィールドを用いるかによって異なってもよい。マクロブロック構成および全体のタイミングも同様に異なってもよい。符号化器１９００および復号器２０００は、ブロック・ベースであり、フレームに４：２：０マクロブロック・フォーマットを用いる。各マクロブロックは、４つの８×８ルミナンス・ブロック（１つの１６×１６マクロブロックとして扱われることもある）と２つの８×８クロマ・ブロックとを含む。フィールドについて用いるマクロブロック構成およびフォーマットは、同じであっても異なっていてもよい。これらの８×８ブロックは、例えば、周波数変換、エントロピー符号化などの様々なステージにおいて、さらに分割されることが可能である。ビデオ・フレーム構成の例については後で詳述する。あるいは、符号化器１９００および復号器２０００は、オブジェクト・ベースであり、別のマクロブロック・フォーマットまたはブロック・フォーマットを用いるか、８×８ブロックや１６×１６マクロブロックとは異なるサイズまたは構成の画素集合に対して操作を実行する。
【０１０８】
実装形態および必要な圧縮のタイプに応じて、符号化器または復号器のモジュールを追加したり、省略したり、複数のモジュールに分割したり、他のモジュールと組み合わせ、および／または同様のモジュールで置き換えたりすることが可能である。代替実施形態では、異なるモジュールおよび／または他のモジュール構成を有する符号化器または復号器が、記載の手法のうちの１つまたは複数を実施する。
【０１０９】
Ａ．ビデオ・フレーム構成
一部の実装形態では、符号化器１９００および復号器２０００は、以下のように構成されたビデオ・フレームを処理する。フレームは、ビデオ信号の空間情報をライン（走査線）の形で収容する。プログレッシブ・ビデオの場合、これらのラインは、ある時点から始まり、連続するラインを通ってフレームの一番下まで続くサンプル群を収容する。プログレッシブ・ビデオ・フレームは、図２１に示すマクロブロック２１００のように、マクロブロックに分割される。マクロブロック２１００は、４つの８×８ルミナンスブロック（Ｙ１〜Ｙ４）と２つの８×８クロマ・ブロックとを含む。２つのクロマ・ブロックは、４つのルミナンス・ブロックと同じ場所にあるが、従来の４：２：０マクロブロック・フォーマットに従って、水平方向および垂直方向の分解度がルミナンス・ブロックの半分である。これらの８×８ブロックは、例えば、周波数変換（例えば、８×８、４×８、または４×４のＤＣＴなど）、エントロピー符号化などの様々なステージにおいて、さらに分割されることが可能である。プログレッシブＩフレームは、イントラ符号化されたプログレッシブ・ビデオ・フレームである。プログレッシブＰフレームは、順方向予測を用いて符号化されたプログレッシブ・ビデオ・フレームであり、プログレッシブＢフレームは、双方向予測を用いて符号化されたプログレッシブ・ビデオ・フレームである。プログレッシブＰフレームおよびプログレッシブＢフレームは、イントラ符号化されたマクロブロックだけでなく、様々なタイプの予測マクロブロックを含むことが可能である。
【０１１０】
インターレース・ビデオ・フレームは、１フレームに属する２つのスキャンで構成され、１つはフレームの偶数ライン（トップ・フィールド）を含み、もう１つはフレームの奇数ライン（ボトムフィールド）を含む。これら２つのフィールドは、異なる２つの時間帯を表すことも可能であり、同じ時間帯であることも可能である。図２２Ａは、インターレース・ビデオ・フレーム２２００の一部を示しており、インターレース・ビデオ・フレーム２２００の左上部分の、トップ・フィールドとボトム・フィールドとで互い違いになるラインを含む。
【０１１１】
図２２Ｂは、フレーム２２３０として符号化／復号するために構成された、図２２Ａのインターレース・ビデオ・フレーム２２００を示す。インターレース・ビデオ・フレーム２２００は、マクロブロック２２３１および２２３２のように、図２１に示した４：２：０フォーマットを用いるマクロブロックに分割されている。ルミナンス・プレーンでは、各マクロブロック２２３１、２２３２は、トップ・フィールドの８ラインとボトム・フィールドの８ラインとが互い違いになっている合計１６ラインを含み、各ラインの長さが１６画素である（マクロブロック２２３１、２２３２内のルミナンス・ブロックおよびクロマ・ブロックの実際の構成および配置は図示していない。これらは、実際には、符号化決定（encoding decisions）が異なれば異なる可能性がある）。所与のマクロブロック内で、トップ・フィールド情報およびボトム・フィールド情報を、任意の様々なフェーズにおいて、統合的に、または別々に符号化することが可能である。インターレースＩフレームは、インターレース・ビデオ・フレームの、イントラ符号化された２つのフィールドであって、マクロブロックがその２つのフィールドの情報を含む。インターレースＰフレームは、インターレース・ビデオ・フレームの、順方向予測を用いて符号化された２つのフィールドであり、インターレースＢフレームは、インターレース・ビデオ・フレームの、双方向予測を用いて符号化された２つのフィールドであり、マクロブロックがその２つのフィールドの情報を含む。インターレースＰフレームおよびインターレースＢフレームは、イントラ符号化されたマクロブロックだけでなく、様々なタイプの予測マクロブロックを含むことが可能である。インターレースＢＩフレームは、インターレースＩフレームおよびインターレースＢフレームの混成物であり、イントラ符号化されているが、他のフレームのアンカーとしては用いられない。
【０１１２】
図２２Ｃは、フィールド２２６０として符号化／復号するために構成された、図２２Ａのインターレース・ビデオ・フレーム２２００を示す。インターレース・ビデオ・フレーム２２００の２つのフィールドのそれぞれがマクロブロックに分割されている。トップ・フィールドは、マクロブロック２２６１のようなマクロブロックに分割され、ボトム・フィールドは、マクロブロック２２６２のようなマクロブロックに分割されている（この場合も、マクロブロックは、図２１に示すように、４：２：０フォーマットを用いており、マクロブロック内のルミナンス・ブロックおよびクロマ・ブロックの構成および配置は図示していない）。ルミナンス・プレーンでは、マクロブロック２２６１がトップ・フィールドの１６ラインを含み、マクロブロック２２６２がボトム・フィールドの１６ラインを含み、各ラインの長さが１６画素である。インターレースＩフィールドは、インターレース・ビデオ・フレームに属する、単独で表現された１つのフィールドである。インターレースＰフィールドは、順方向予測を用いて符号化された、インターレース・ビデオ・フレームに属する、単独で表現された１つのフィールドであり、インターレースＢフィールドは、双方向予測を用いて符号化された、インターレース・ビデオ・フレームに属する、単独で表現された１つのフィールドである。インターレースＰフレームおよびインターレースＢフレームは、イントラ符号化されたマクロブロックだけでなく、様々なタイプの予測マクロブロックを含むことが可能である。インターレースＢＩフィールドは、インターレースＩフィールドおよびインターレースＢフィールドの混成物であり、イントラ符号化されているが、他のフィールドのアンカーとしては用いられない。
【０１１３】
フィールドとして符号化／復号するために構成されたインターレース・ビデオ・フレームは、異なるフィールド・タイプの様々な組合せを含むことが可能である。例えば、そのようなフレームは、トップ・フィールドとボトム・フィールドの両方で同じフィールド・タイプを有することや、各フィールドで異なるフィールド・タイプを有することが可能である。一実装形態では、フィールド・タイプの可能な組合せとして、Ｉ／Ｉ、Ｉ／Ｐ、Ｐ／Ｉ、Ｐ／Ｐ、Ｂ／Ｂ、Ｂ／ＢＩ、ＢＩ／Ｂ、ＢＩ／ＢＩなどがある。
【０１１４】
ピクチャという用語は、一般に、ソース画像データ、符号化された画像データ、または再構成された画像データを指す。プログレッシブ・ビデオについては、ピクチャは、プログレッシブ・ビデオ・フレームである。インターレース・ビデオについては、ピクチャは、コンテキストに応じて、インターレース・ビデオ・フレームを指す場合、フレームのトップ・フィールドを指す場合、またはフレームのボトム・フィールドを指す場合がある。
【０１１５】
あるいは、符号化器１９００および復号器２０００は、オブジェクト・ベースであり、別のマクロブロック・フォーマットまたはブロック・フォーマットを用いるか、８×８ブロックや１６×１６マクロブロックとは異なるサイズまたは構成の画素集合に対して操作を実行する。
【０１１６】
Ｂ．ビデオ符号化器
図１９は、一般化されたビデオ符号化器システム１９００のブロック図である。符号化器システム１９００は、現在のピクチャ１９０５を含むビデオ・ピクチャ（例えば、プログレッシブ・ビデオ・フレーム、インターレース・ビデオ・フレーム、またはインターレース・ビデオ・フレームのフィールド）のシーケンスを受け取り、圧縮ビデオ情報１９９５を出力として生成する。ビデオ符号化器の個々の実施形態では、一般に、一般化された符号化器１９００の変形形態（variation）または強化形態（supplemented version）を用いる。
【０１１７】
符号化器システム１９００は、予測ピクチャおよびキー・ピクチャを圧縮する。説明のために、図１９は、符号化器システム１９００を通るキー・ピクチャのパスと、予測ピクチャのパスとを示す。符号化器システム１９００のコンポーネントの多くは、キー・ピクチャと予測ピクチャの両方の圧縮に用いられる。それらのコンポーネントによって実行される動作は、厳密には、圧縮される情報のタイプによって異なる可能性がある。
【０１１８】
予測ピクチャ（例えば、プログレッシブＰフレームまたはＢフレーム、インターレースＰフィールドまたはＢフィールド、またはインターレースＰフレームまたはＢフレーム）は、（一般に参照ピクチャまたはアンカーと呼ばれる）１つまたは複数の他のピクチャからの予測（または差分）の形で表現される。予測残差は、予測された内容とオリジナル・ピクチャとの差分である。これとは異なり、キー・ピクチャ（例えば、プログレッシブＩフレーム、インターレースＩフィールド、またはインターレースＩフレーム）は、他のピクチャを参照せずに圧縮されている。
【０１１９】
現在のピクチャ１９０５が順方向予測ピクチャである場合は、動き推定器（motion estimator）１９１０が、１つまたは複数の参照ピクチャ（例えば、ピクチャ記憶器１９２０にバッファリングされている、再構成された先行ピクチャ１９２５）を基準にして、現在のピクチャ１９０５のマクロブロックまたは他の画素集合の動きを推定する。現在のピクチャ１９０５が双方向予測ピクチャであれば、動き推定器１９１０が、最大４つの再構成された参照ピクチャ（例えば、インターレースＢフィールドの場合）を基準にして、現在のピクチャ１９０５内の動きを推定する。一般に、動き推定器は、時間的に先行する１つまたは複数の参照ピクチャおよび時間的に後続の１つまたは複数の参照ピクチャを基準にして、Ｂピクチャ内の動きを推定する。したがって、符号化器システム１９００は、複数の参照ピクチャのために別々の記憶装置１９２０および１９２２を用いることが可能である。プログレッシブＢフレーム、およびインターレースＢフレームおよびＢフィールドの詳細については、「Advanced Bi-Directional Predictive Coding of Video Frames」という名称で２００３年７月１８日出願の特許文献２および「Advanced Bi-Directional Predictive Coding of interlaced Video」という名称で２００４年６月２９日出願の特許文献３を参照されたい。
【０１２０】
動き推定器１９１０は、１画素、１／２画素、１／４画素、または他の増分を単位として動きを推定することが可能であり、ピクチャごと、または他の区切りごとに動き推定の分解度を切り替えることが可能である。動き推定器１９１０（および補償器１９３０）はさらに、フレームごと、または他の区切りごとに、参照ピクチャの画素補間のタイプを（例えば、双三次と双線形とで）切り替えることが可能である。動き推定の分解度は、水平方向と垂直方向とで同じであっても異なってもよい。動き推定器１９１０は、差分動きベクトル情報などの動き情報１９１５を副情報として出力する。符号化器１９００は、例えば、動きベクトル用の１つまたは複数のプレディクタを算出し、動きベクトルとプレディクタの間の差分を算出し、その差分をエントロピー符号化することによって、動き情報１９１５を符号化する。動き補償器１９３０が、動きベクトルを再構成するために、プレディクタと差分動きベクトル情報とを結合する。動きベクトル・プレディクタの算出、差分動きベクトルの算出、および動きベクトルの再構成の様々な手法については後述する。
【０１２１】
動き補償器１９３０は、再構成されたピクチャ１９２５に、再構成された動きベクトルを適用して、動き補償された現在のピクチャ１９３５を形成する。予測が完全であることはまれであり、動き補償された現在のピクチャ１９３５と、オリジナルの現在のピクチャ１９０５との差分が予測残差１９４５である。後段の、ピクチャの再構成において、動き補償された現在のピクチャ１９３５に予測残差１９４５が加算されて、オリジナルの現在のピクチャ１９０５により近い、再構成されたピクチャが得られる。しかしながら、非可逆的圧縮では、オリジナルの現在のピクチャ１９０５から一部の情報が失われる。あるいは、動き推定器および動き補償器は、別のタイプの動き推定／補償を適用する。
【０１２２】
周波数変換器１９６０は、空間領域のビデオ情報を、周波数領域の（すなわち、スペクトル）データに変換する。ブロック・ベースのビデオ・ピクチャの場合、周波数変換器１９６０は、画素データまたは予測残差データのブロックにＤＣＴ、ＤＣＴの変形形態、または他のブロック変換を適用して、周波数変換係数のブロックを生成する。あるいは、周波数変換器１９６０は、別の従来の周波数変換（例えば、フーリエ変換）を適用するか、ウェーブレット解析またはサブバンド解析を用いる。周波数変換器１９６０は、８×８、８×４、４×８、４×４、または他のサイズの周波数変換を適用することが可能である。
【０１２３】
次に量子化器１９７０が、スペクトル・データ係数のブロックを量子化する。量子化器は、ピクチャごと、または他の区切りごとに異なるステップ・サイズを使用して、スペクトル・データに、均一のスカラ量子化を適用する。あるいは、量子化器は、別のタイプの量子化（例えば、不均一量子化、ベクトル量子化、または非適応量子化（non-adaptive quantization））をスペクトル・データ係数に適用するか、周波数変換を用いない符号化器システムにおいて空間領域データを直接量子化する。符号化器１９００は、適応量子化に加えて、フレームドロップ、適応フィルタリング、または他のレート制御手法を用いることが可能である。
【０１２４】
符号化器１９００は、スキップ・マクロブロック（特定タイプの情報を有しないマクロブロック）のために特殊な信号伝達を用いることが可能である。スキップ・マクロブロックについては、後で詳述する。
【０１２５】
再構成された現在のピクチャが後続の動き推定／補償に必要である場合は、逆量子化器１９７６が、量子化されたスペクトル・データ係数に対して逆量子化を実行する。次に逆周波数変換器１９６６が、周波数変換器１９６０とは逆の操作を実行して、（予測ピクチャの）再構成された予測残差または再構成されたキー・ピクチャを生成する。現在のピクチャ１９０５がキー・ピクチャであった場合は、再構成されたキー・ピクチャが、再構成された現在のピクチャ（図示せず）と見なされる。現在のピクチャ１９０５が予測ピクチャであった場合は、再構成された予測残差が、動き補償された現在のピクチャ１９３５に加算されて、再構成された現在のピクチャが形成される。ピクチャ記憶装置１９２０、１９２２の一方または両方が、再構成された現在のピクチャを、動き補償予測で用いるためにバッファリングする。一部の実施形態では、符号化器は、再構成されたフレームにデブロッキング・フィルタを適用して、ピクチャ内の不連続部分および他のアーティファクトを適応的に平滑化する。
【０１２６】
エントロピー符号化器１９８０は、量子化器１９７０の出力ならびに特定の副情報（例えば、動き情報１９１５、量子化ステップ・サイズ）を圧縮する。一般的なエントロピー符号化手法として、算術符号化、差分符号化、ハフマン符号化、ランレングス符号化、ＬＺ符号化、辞書符号化、およびこれらの組合せなどがある。エントロピー符号化器１９８０は、一般に、様々な種類の情報（例えば、ＤＣ係数、ＡＣ係数、様々な種類の副情報）に対して様々な符号化手法を用い、特定の符号化手法において複数の符号テーブル間で選択することが可能である。
【０１２７】
エントロピー符号化器１９８０は、圧縮ビデオ情報１９９５をマルチプレクサ［「ＭＵＸ」］１９９０に供給する。ＭＵＸ１９９０は、バッファを含むことが可能であり、バッファ・レベル・インジケータが、レート制御のためにビットレート適応モジュールにフィードバックされることが可能である。ＭＵＸ１９９０の前または後で、圧縮ビデオ情報１９９５を、ネットワーク送信のためにチャネル符号化することが可能である。チャネル符号化では、エラーの検出および訂正のデータを圧縮ビデオ情報１９９５に適用（追加）することが可能である。
【０１２８】
Ｃ．ビデオ復号器
図２０は、一般化されたビデオ復号器システム２０００のブロック図である。復号器システム２０００は、ビデオ・ピクチャの圧縮されたシーケンスの情報２０９５を受け取り、再構成されたピクチャ２００５（例えば、プログレッシブ・ビデオ・フレーム、インターレース・ビデオ・フレーム、またはインターレース・ビデオ・フレームのフィールド）を含む出力を生成する。ビデオ復号器の個々の実施形態では、一般に、一般化された復号器２０００の変形形態または強化形態を用いる。
【０１２９】
復号器システム２０００は、予測ピクチャおよびキー・ピクチャを圧縮解除する。説明のために、図２０は、復号器システム２０００を通るキー・ピクチャのパスと、順方向予測ピクチャのパスとを示す。復号器システム２０００のコンポーネントの多くは、キー・ピクチャと予測ピクチャの両方の圧縮解除に用いられる。それらのコンポーネントによって実行される動作は、厳密には、圧縮解除される情報のタイプによって異なる可能性がある。
【０１３０】
ＤＥＭＵＸ２０９０は、圧縮ビデオ・シーケンスの情報２０９５を受け取り、受け取った情報を、エントロピー復号器２０８０で利用できるようにする。ＤＥＭＵＸ２０９０は、ジッタ・バッファおよび他のバッファも同様に含むことが可能である。ＤＥＭＵＸ２０９０の前または後で、圧縮ビデオ情報を、エラーの検出および訂正のためにチャネル復号および処理することが可能である。
【０１３１】
エントロピー復号器２０８０は、エントロピー符号化された量子化データならびにエントロピー符号化された副情報（例えば、動き情報２０１５、量子化ステップ・サイズ）をエントロピー復号する。これには、一般に、符号化器で実行されたエントロピー符号化の逆が適用される。エントロピー復号手法として、算術復号、差分復号、ハフマン復号、ランレングス復号、ＬＺ復号、辞書復号、およびこれらの組合せなどがある。エントロピー復号器２０８０は、一般に、様々な種類の情報（例えば、ＤＣ係数、ＡＣ係数、様々な種類の副情報）に対して様々な復号手法を用い、特定の復号手法において複数の符号テーブル間で選択することが可能である。
【０１３２】
復号器２０００は、例えば、動きベクトルの１つまたは複数のプレディクタを算出し、差分動きベクトルをエントロピー復号し、復号された差分動きベクトルをプレディクタと結合して動きベクトルを再構成することによって、動き情報２０１５を復号する。
【０１３３】
動き補償器２０３０が、再構成されるピクチャ２００５の予測２０３５を形成するために、動き情報２０１５を１つまたは複数の参照ピクチャ２０２５に適用する。例えば、動き補償器２０３０は、参照ピクチャ２０２５内のマクロブロックを見つけるために、１つまたは複数のマクロブロック動きベクトルを用いる。１つまたは複数のピクチャ記憶装置（例えば、ピクチャ記憶装置２０２０、２０２２）が、既に再構成されているピクチャを参照ピクチャとして記憶する。一般に、Ｂピクチャは、複数の参照ピクチャ（例えば、少なくとも１つの、時間的に先行する参照ピクチャと、少なくとも１つの、時間的に後続の参照ピクチャ）を有する。したがって、復号システム２０００は、複数の参照ピクチャのために別々のピクチャ記憶装置２０２０および２０２２を用いることが可能である。動き補償器２０３０は、１画素、１／２画素、１／４画素、または他の増分を単位として動きを補償することが可能であり、ピクチャごと、または他の区切りごとに動き補償の分解度を切り替えることが可能である。動き補償器２０３０はさらに、フレームごと、または他の区切りごとに、参照ピクチャの画素補間のタイプを（例えば、双三次と双線形とで）切り替えることが可能である。動き補償の分解度は、水平方向と垂直方向とで同じであっても異なってもよい。あるいは、動き補償器は、別のタイプの動き補償を適用する。動き補償器による予測が完全であることはまれなので、復号器２０００はさらに、予測残差を再構成する。
【０１３４】
逆量子化器２０７０が、エントロピー復号されたデータを逆量子化する。一般に、逆量子化器は、ピクチャごと、または他の区切りごとに異なるステップ・サイズを使用して、エントロピー復号されたデータに、均一のスカラ逆量子化を適用する。あるいは、逆量子化器は、別のタイプの逆量子化（例えば、不均一逆量子化、ベクトル逆量子化、または非適応逆量子化）をデータに適用して、その後に再構成したり、逆周波数変換を用いない復号器システムにおいて空間領域データを直接逆量子化したりする。
【０１３５】
逆周波数変換器２０６０が、量子化された周波数領域データを空間領域ビデオ情報に変換する。ブロック・ベースのビデオ・ピクチャについては、逆周波数変換器２０６０は、逆ＤＣＴ［「ＩＤＣＴ」］、ＩＤＣＴの変形形態、または他の逆ブロック変換を周波数変換係数のブロックに適用して、キー・ピクチャの画素データ、または予測ピクチャの予測残差データを生成する。あるいは、逆周波数変換器２０６０は、別の従来の逆周波数変換（例えば、逆フーリエ変換）を適用するか、ウェーブレット解析またはサブバンド解析を用いる。逆周波数変換器２０６０は、８×８、８×４、４×８、４×４、または他のサイズの逆周波数変換を適用することが可能である。
【０１３６】
予測ピクチャについては、復号器２０００は、再構成された予測残差２０４５を動き補償予測２０３５と組み合わせて、再構成されたピクチャ２００５を形成する。復号器において、再構成されたピクチャ２００５が後続の動き補償に必要な場合は、一方または両方のピクチャ記憶装置（例えば、ピクチャ記憶装置２０２０）が、再構成されたピクチャ２００５を、次のピクチャの予測に用いるためにバッファリングする。一部の実施形態では、復号器２０００は、再構成されたピクチャにデブロッキング・フィルタを適用して、ピクチャ内の不連続部分および他のアーティファクトを適応的に平滑化する。
【０１３７】
ＩＩＩ．インターレースＰフレーム
一般的なインターレース・ビデオ・フレームは、異なる時刻にスキャンされた２つのフィールド（例えば、トップ・フィールドとボトム・フィールド）からなる。一般に、インターレース・ビデオ・フレームの静止領域を符号化する場合は、フィールドをまとめて符号化（「フレームモード」符号化）するのが効率的である。一方、インターレース・ビデオ・フレームの、動きのある領域を符号化する場合は、フィールドを別々に符号化（「フィールドモード符号化」）するのが効率的である場合が多い。これは、２つのフィールドがそれぞれ異なる動きを有する傾向があるからである。順方向予測インターレース・ビデオ・フレームは、２つの別々の順方向予測フィールド（インターレースＰフィールド）として符号化されることが可能である。順方向予測インターレース・ビデオ・フレームのフィールドを別々に符号化することは、例えば、インターレース・ビデオ・フレーム全体で動きが多く、したがって、フィールド間の差分が大きい場合に効率的である可能性がある。インターレースＰフィールドは、既に復号されている１つまたは複数のフィールドを参照する。例えば、一部の実装形態では、インターレースＰフィールドは、１つまたは２つの、既に復号されているフィールドを参照する。インターレースＰフィールドの詳細については、「Video Encoding and Decoding Tools and Techniques」という名称で２００３年９月７日出願の特許文献４および「Predicting Motion Vectors for Fields of Forward-predicted Interlaced Video Frames」という名称で２００４年５月２７日出願の特許文献５を参照されたい。
【０１３８】
または、順方向予測インターレース・ビデオ・フレームは、インターレースＰフレームのように、フィールド符号化とフレーム符号化の混在を用いて符号化されることが可能である。インターレースＰフレームのマクロブロックの場合、マクロブロックは、トップ・フィールドおよびボトム・フィールドの画素のラインを含み、これらのラインは、フレーム符号化モードで一括して符号化されるか、フィールド符号化モードで別々に符号化されることが可能である。
【０１３９】
Ａ．インターレースＰフレームのマクロブロック・タイプ
一部の実装形態では、インターレースＰフレームのマクロブロックは、１ＭＶ、２フィールドＭＶ、４フレームＭＶ、４フィールドＭＶ、およびイントラの５タイプのいずれかであることが可能である。
【０１４０】
１ＭＶマクロブロックの場合は、マクロブロック内の４つのルミナンス・ブロックの変位が単一の動きベクトルで表される。そのルミナンス動きベクトルから、対応するクロマ動きベクトルが導出されることが可能であり、それによって、動きベクトルの２つの８×８クロマ・ブロックのそれぞれの変位が表される。例えば、図２１に示したマクロブロック配置を再度参照すると、１ＭＶマクロブロック２１００は、４つの８×８ルミナンス・ブロックと２つの８×８クロマ・ブロックとを含む。ルミナンス・ブロック（Ｙ１〜Ｙ４）の変位は単一の動きベクトルによって表される。対応するクロマ動きベクトルはそのルミナンス動きベクトルから導出され、それによって２つのクロマ・ブロック（ＵおよびＶ）のそれぞれの変位が表されることが可能である。
【０１４１】
２フィールドＭＶマクロブロックの場合は、マクロブロック内の１６×１６ルミナンス成分の各フィールドの変位が、それぞれ異なる動きベクトルによって表される。例えば、図２３は、トップ・フィールド動きベクトルがルミナンス成分の偶数ラインの変位を表し、ボトム・フィールド動きベクトルがルミナンス成分の奇数ラインの変位を表すことを示している。符号化器は、トップ・フィールド動きベクトルを用いて、クロマ・ブロックの偶数ラインの変位を表す、対応するトップ・フィールド・クロマ動きベクトルを導出することが可能である。同様に符号化器は、クロマ・ブロックの奇数ラインの変位を表すボトム・フィールド・クロマ動きベクトルを導出することが可能である。
【０１４２】
図２４に示すように、４フレームＭＶマクロブロックの場合は、４つのルミナンス・ブロックのそれぞれの変位が、それぞれ異なる動きベクトル（ＭＶ１、ＭＶ２、ＭＶ３、およびＭＶ４）によって表される。各クロマ・ブロックは、４つの４×４クロマ・サブブロックの変位を表す、導出された４つのクロマ動きベクトル（ＭＶ１’、ＭＶ２’、ＭＶ３’、およびＭＶ４’）を用いて動き補償されることが可能である。各４×４クロマ・サブブロックの動きベクトルが、空間的に対応するルミナンス・ブロックの動きベクトルから導出されることが可能である。
【０１４３】
図２５に示すように、４フィールドＭＶマクロブロックの場合は、１６×１６ルミナンス成分の各フィールドの変位が、異なる２つの動きベクトルによって表される。ルミナンス成分のラインが縦に分割されて２つの８×１６領域が形成され、各領域は、インターリーブしている、偶数ラインの８×８領域と奇数ラインの８×８領域とからなる。偶数ラインについては、左側の８×８領域の変位がトップ左フィールド・ブロック動きベクトルによって表され、右側の８×８領域の変位がトップ右フィールド・ブロック動きベクトルによって表される。奇数ラインについては、左側の８×８領域の変位がボトム左フィールド・ブロック動きベクトルによって表され、右側の８×８領域の変位がボトム右フィールド・ブロック動きベクトルによって表される。各クロマ・ブロックはさらに４つの領域に分割されることが可能であり、各クロマ・ブロック領域は、導出された動きベクトルを用いて動き補償されることが可能である。
【０１４４】
イントラ・マクロブロックの場合は、動きがゼロであると見なされる。
【０１４５】
Ｂ．インターレースＰフレームの動きベクトル・プレディクタの算出
一般に、インターレースＰフレームの現在のマクロブロックの動きベクトル・プレディクタを算出する処理は、２つのステップからなる。第１のステップでは、現在のマクロブロックに対する最大３つの候補動きベクトルを、現在のマクロブロックに隣接するマクロブロックから収集する。例えば、一実装形態では、図２６Ａ〜２６Ｂ（および、一番上の行のマクロブロックなど、様々な特殊ケース）で示される配置に基づいて候補動きベクトルを収集する。あるいは、ある別の順序または配置で候補動きベクトルを収集することも可能である。第２のステップでは、候補動きベクトルの集合から、現在のマクロブロックの動きベクトル・プレディクタを算出する。例えば、「３のメジアン」予測または他の何らかの方法を用いてプレディクタを算出することが可能である。
【０１４６】
ＩＶ．インターレースＰフレームの動きベクトル予測における新機軸
動きベクトル予測の処理は、概念的に２つのステップに分けることが可能である。まず、候補動きベクトルの集合を、隣接するブロックから収集し、適切であれば、現在の動きベクトルに用いられる予測のタイプに応じて、しかるべきタイプに変換する。次に、候補動きベクトルの集合から動きベクトル・プレディクタを導出する。後で詳述するように、現在の動きベクトル・プレディクタは、様々な方法で、候補動きベクトルから導出されることが可能である。例えば、有効な候補動きベクトルの全集合に対してメジアン演算を実行すること、有効な候補動きベクトルの全集合が使用可能でない場合には候補動きベクトルの１つを単に選択すること、または他の何らかの方法によって、可能である。
【０１４７】
セクションＩＩＩで説明したように、インターレースＰフレームの各マクロブロックは、１つのフレーム動きベクトル、４つのフレーム動きベクトル、２つのフィールド動きベクトル、または４つのフィールド動きベクトル、を用いて動き補償されることが可能である。各フィールド動きベクトルは、他のフィールド動きベクトルがどのフィールドを参照するかに関係なく、参照フレームのトップ・フィールドまたはボトム・フィールドのいずれかを参照することが可能である。一部の実装形態では、現在のマクロブロック（またはブロック、またはそのフィールド）の現在の動きベクトルの動きベクトル・プレディクタを導出するために、動きベクトル予測において様々な要因が考慮される。それらは、例えば、隣接するマクロブロックまたはブロックの動きベクトルおよび動き予測タイプ、現在の動きベクトル・タイプなどである。
【０１４８】
記載の実施形態は、限定されないが、以下を含むインターレース・フレーム符号化されたピクチャの動きベクトルを予測、符号化、および復号する記載の手法およびツールの１つまたは複数を実装する。  
１．（例えば、１ＭＶ、４フレームＭＶ、２フィールドＭＶ、および／またはイントラなどの他のマクロブロック・タイプとの組合せで）４つのフィールド動きベクトルを用いてインターレースＰフレームのマクロブロックを予測すること。  
２．メジアン演算の使用を、３つの候補隣接動きベクトルがすべて使用可能なケースのみに限定し、その他のケースでは、あらかじめ指定された順序で隣接動きベクトルの１つを取得することによって動きベクトル予測を改善すること。  
３．フィールド動きベクトルについては、正当な候補動きベクトル（legal candidate motion vectors）の収集時にフィールド極性を考慮すること。
【０１４９】
記載の手法およびツールは、互いに組み合わせて用いたり、他の手法およびツールと組み合わせて用いたり、単独で用いたりすることが可能である。
【０１５０】
Ａ．インターレースＰフレームの４フィールドＭＶマクロブロック
一部の実装形態では、符号化器／復号器は、インターレースＰフレームの、４つのフィールド動きベクトルを有するマクロブロック（例えば、４フィールドＭＶマクロブロック）を処理する。４フィールドＭＶマクロブロックは、インターレースＰフレームのフィールド符号化されたマクロブロックの動き推定および動き補償に関して動きへの空間適応性を改善する。
【０１５１】
例えば、図２７は、インターレースＰフレームの、４つのフィールド動きベクトルを有するマクロブロックを処理する手法２７００を示す。２７１０で、符号化器／復号器が、インターレースＰフレームのマクロブロックの４つのフィールド動きベクトルの動きベクトル情報（例えば、動きベクトル差分、動きベクトル値）を受け取る。次に２７２０で、符号化器／復号器が、４つのフィールド動きベクトルを用いて（例えば、マクロブロックを再構成することによって）マクロブロックを処理する。
【０１５２】
あるいは、符号化器／復号器が、４フィールドＭＶマクロブロックを用いずにインターレースＰフレームの動き推定／補償を実行する。
【０１５３】
Ｂ．候補動きベクトルの収集
一部の実装形態では、候補動きベクトルを収集する順序が重要である。例えば、図２６Ａ〜図２６Ｂに示すように、インターレースＰフレームの現在のマクロブロックの３つの候補動きベクトルが、現在のマクロブロックに隣接するマクロブロックから収集される。一実装形態では、収集の順序は、隣接するマクロブロックＡで始まり、マクロブロックＢに進み、マクロブロックＣで終了する。
【０１５４】
図４１〜図５１の擬似コードは、一実装形態において候補動きベクトルがどのように収集されるかを示している。符号化器／復号器は、隣接するマクロブロックをチェックして、それらが、（ブロック、マクロブロックのフィールド、またはマクロブロックの半フィールドを含む）現在のマクロブロックの動きベクトルを予測するという目的のために「存在する」（すなわち、有効）かどうかを決定する。対応するマクロブロック／ブロックがフレーム境界の外側にある場合、または対応するマクロブロック／ブロックが別のスライスの一部である場合、プレディクタ候補は存在しない（すなわち、有効ではない）と見なされる。したがって、動きベクトル予測は、スライス境界にまたがっては実行されない。
【０１５５】
図４１〜図５１に示すように、隣接するマクロブロックが有効であって、イントラ符号化されていない場合は、隣接するマクロブロックからの動きベクトルが候補動きベクトルの集合に追加される。候補の集合に追加される実際の動きベクトルは、現在のマクロブロックに対する、隣接するマクロブロックの位置（例えば、位置Ａ、Ｂ、またはＣ）と、隣接するマクロブロックおよび現在のマクロブロックの両方のタイプ（例えば、１ＭＶ、４フレームＭＶ、２フィールドＭＶ、または４フレームＭＶ）とに依存する。
【０１５６】
図４１の擬似コード４１００は、一実装形態において１ＭＶマクロブロック内の現在の動きベクトル用の最大３つの候補動きベクトルがどのように収集されるかを示している。
【０１５７】
図４２、図４３、図４４、および図４５の擬似コード４２００、４３００、４４００、および４５００は、それぞれ、一実装形態において、現在の４フレームＭＶマクロブロック内の４つのフレーム・ブロック動きベクトルのそれぞれに対して、隣接するマクロブロック／ブロックから候補動きベクトルがどのように収集されるかを示している。この実装形態では、符号化器／復号器は、擬似コード４２００、４３００、４４００、および４５００に示されたアルゴリズムを用いて、それぞれ、左上のフレーム・ブロック動きベクトル、右上のフレーム・ブロック動きベクトル、左下のフレーム・ブロック動きベクトル、および右下のフレーム・ブロック動きベクトルの最大３つの候補動きベクトルを収集する。
【０１５８】
図４６および４７の擬似コード４６００および４７００は、それぞれ、一実装形態において、現在の２フィールドＭＶマクロブロックの２つのフィールド動きベクトルのそれぞれに対して、隣接するマクロブロックから候補動きベクトルがどのように収集されるかを示している。この実装形態では、符号化器／復号器は、擬似コード４６００および４７００に示されたアルゴリズムを用いて、それぞれ、トップ・フィールド動きベクトルおよびボトム・フィールド動きベクトルに対して最大３つの候補動きベクトルを収集する。
【０１５９】
図４８、４９、５０、および５１の擬似コード４８００、４９００、５０００、および５１００は、それぞれ、一実装形態において、現在の４フィールドＭＶマクロブロックの４つのフィールド・ブロック動きベクトルのそれぞれに対して、隣接するマクロブロック／ブロックから候補動きベクトルが収集される様子を示している。この実装形態では、符号化器／復号器は、擬似コード４８００、４９００、５０００、および５１００に示されたアルゴリズムを用いて、それぞれ、左上のフィールド・ブロック動きベクトル、右上のフィールド・ブロック動きベクトル、左下のフィールド・ブロック動きベクトル、および右下のフィールド・ブロック動きベクトルに対して最大３つの候補動きベクトルを収集する。
【０１６０】
選択された候補動きベクトルが、実際に、隣接するマクロブロックの動きベクトルの平均となる場合がある。一実装形態では、２つのフィールド動きベクトル（ＭＶＸ１，ＭＶＹ１）および（ＭＶＸ２，ＭＶＹ２）に対して、平均演算が行われて、次のように候補フレーム動きベクトル（ＭＶＸＡ，ＭＶＹＡ）が形成される。  
ＭＶＸＡ＝（ＭＶＸ１＋ＭＶＸ２＋１）＞＞１  
ＭＶＹＡ＝（ＭＶＹ１＋ＭＶＹ２＋１）＞＞１  
あるいは、図４１〜５１に示されたものとは異なる収集規則に従って候補動きベクトルを収集することが可能である。例えば、複数の動きベクトルを有する、隣接するマクロブロック（例えば、４フレームＭＶ、２フィールドＭＶ、または４フィールドＭＶマクロブロック）から候補として選択される特定の動きベクトルを変更することが可能である。別の例として、候補の集合における動きベクトルの順序を、記載のＡ−Ｂ−Ｃから別の何らかの順序に調整することが可能である。
【０１６１】
Ｃ．候補動きベクトルからのフレームＭＶプレディクタの算出
図５２の擬似コード５２００は、一実装形態においてフレーム動きベクトルに対して動きベクトル・プレディクタ（ＰＭＶｘ，ＰＭＶｙ）が算出される様子を示している。擬似コード５２００では、ＴｏｔａｌＶａｌｉｄＭＶは、候補動きベクトルの集合にある有効な動きベクトルの総数を表しており（ＴｏｔａｌＶａｌｉｄＭＶ＝０、１、２または３）、ＶａｌｉｄＭＶ配列は、候補動きベクトルの集合にある有効な動きベクトルを含む。
【０１６２】
一実装形態では、擬似コード５２００を用いて、１ＭＶマクロブロックの動きベクトル、ならびに４フレームＭＶマクロブロックの４つのフレーム・ブロック動きベクトルのそれぞれについて、候補動きベクトルの集合からプレディクタが算出される。
【０１６３】
Ｄ．候補動きベクトルからのフィールドＭＶプレディクタの算出
このセクションでは、候補動きベクトルの集合に対してフィールド動きベクトルの動きベクトル・プレディクタを算出する手法およびツールについて説明する。このセクションで説明する手法およびツールを用いることにより、（２フィールドＭＶマクロブロックの）２つのフィールド動きベクトルのそれぞれについて、ならびに（４フィールドＭＶマクロブロックの）４つのフィールド動きベクトルのそれぞれについて、プレディクタを算出することが可能である。
【０１６４】
一部の実装形態では、符号化器／復号器が、プレディクタの算出時に候補動きベクトルによって参照されるフィールドの極性を考慮する。図２８は、候補動きベクトルの極性に基づいて、フィールド符号化されたマクロブロックの動きベクトル・プレディクタを算出する手法２８００を示している。２８１０で、符号化器／復号器は、現在のマクロブロックの現在のフィールドのフィールド動きベクトルを予測するための候補動きベクトルを決定する。２８２０で、符号化器／復号器が、１つまたは複数の有効な候補のフィールド極性を決定する。次に２８３０で、符号化器／復号器は、１つまたは複数の有効な候補のフィールド極性に少なくとも部分的に基づいて、フィールド動きベクトルの動きベクトル・プレディクタを算出する。例えば、一実装形態では、候補動きベクトルは２つの集合に分けられる。一方の集合には、現在のフィールドと同じフィールドをポイントする動きベクトルだけが含まれ、もう一方の集合には、反対のフィールドをポイントする動きベクトルが含まれる。次に符号化器／復号器は、その２つの集合のうちの一方を用いて動きベクトル・プレディクタを算出する。図２８には示していないが、現在のマクロブロックの動きベクトル・プレディクタを算出する処理を、そのマクロブロックの各動きベクトルについて、およびフレーム内の他のマクロブロックについて、繰り返すことが可能である。
【０１６５】
動きベクトルが１／４画素単位で表現されていると仮定すると、符号化器／復号器は、候補動きベクトルが（現在のフィールドの極性に対して）同じフィールドをポイントするか、反対のフィールドをポイントするかを、そのｙ成分に対して以下のチェックを実行することによって調べることが可能である。
【０１６６】
【表３】
2011166816.tif 000005
【０１６７】
上記の擬似コードにおいて、ＶａｌｉｄＭＶｙは、１／４画素単位で測定された、候補動きベクトルのｙ成分である。したがって、バイナリでは、ＶａｌｉｄＭＶｙの最下位ビットが１／４画素ビット、第２下位ビット（the second least significant bit）が１／２画素ビット、第３下位ビット（the third least significant bit）がフル画素ビットである。したがって、ビットごとのＡＮＤ演算（ＶａｌｉｄＭＶｙ  ＆  ４）は、フル画素ビットが１（奇数の整数を示す）か０（偶数の整数を示す）かを決定する。整数オフセットが奇数であれば、候補動きベクトルは、参照フレームの、反対の極性のフィールドを参照する。整数オフセットが偶数であれば、候補動きベクトルは、参照フレームの、同じ極性のフィールドを参照する。
【０１６８】
代替の手法では、候補動きベクトルの極性が別の何らかの方法で決定されるか、動きベクトル・プレディクタの算出時に候補の極性が考慮されない。
【０１６９】
図５３の擬似コード５３００は、一実装形態においてフィールド動きベクトルに対して動きベクトル・プレディクタ（ＰＭＶｘ，ＰＭＶｙ）がどのように算出されるかを示している。擬似コード５３００では、ＳａｍｅＦｉｅｌｄＭＶ［］およびＯｐｐＦｉｅｌｄＭＶ［］が、候補動きベクトルの２つの集合を表し、ＮｕｍＳａｍｅＦｉｅｌｄＭＶおよびＮｕｍＯｐｐＦｉｅｌｄＭＶが、各集合に属する候補動きベクトルの数を表す。擬似コード５３００に示された例では、それらの集合にある使用可能な候補動きベクトルの数に応じて、動きベクトル・プレディクタの算出にメジアン演算を用いるかどうかが決定される。
【０１７０】
図２９は、フィールド動きベクトルの動きベクトル・プレディクタを算出する際にメジアン演算を実行するかどうかを決定する手法２９００を示す。２９１０で、符号化器／復号器が、現在のマクロブロックのフィールド動きベクトルを予測するための有効な候補動きベクトルの数を決定する。２９２０で、有効な候補動きベクトルが３つ存在すれば、２９３０で、プレディクタの算出時にメジアン演算を用いることが可能である。有効な候補が３つ存在しない場合（すなわち、有効な候補が２つ以下の場合）は、２９４０で、別の方法を用いて（メジアン演算を用いずに）、使用可能な有効な候補の中から動きベクトル・プレディクタを選択する。
【０１７１】
擬似コード５３００の例では、符号化器／復号器は、３つの候補動きベクトルがすべて有効な場合、および３つの有効な候補動きベクトルがすべてが同じ極性の候補動きベクトルである場合に、候補のｘ成分またはｙ成分に対してメジアン演算（例えば、ｍｅｄｉａｎ３）を実行することによって動きベクトル・プレディクタを導出する。３つの候補動きベクトルのすべてが有効であっても、それらのすべてが同じ極性の候補動きベクトルということではない場合、符号化器／復号器は、動きベクトル・プレディクタを導出するために、候補を最も多く有する集合を選択する。両方の集合が同数の候補を有する場合、符号化器／復号器は、集合ＳａｍｅＦｉｅｌｄＭＶ［］を用いる。候補の数が３未満の場合、符号化器／復号器は、選択された集合から、あらかじめ指定された順序で１番目の候補を選択する。この例では、各集合の候補動きベクトルの順序は、候補Ａが存在すれば候補Ａから始まり、候補Ｂが存在すれば候補Ｂがそれに続き、候補Ｃが存在すれば候補Ｃがその次である。例えば、符号化器／復号器が集合ＳａｍｅＦｉｅｌｄＭＶ［］を用いる場合で、集合ＳａｍｅＦｉｅｌｄＭＶ［］が候補Ｂおよび候補Ｃだけを含む場合、符号化器／復号器は、候補Ｂを動きベクトル・プレディクタとして用いる。有効な候補の数がゼロの場合、符号化器／復号器は、プレディクタを（０，０）に設定する。
【０１７２】
あるいは、上述の方法以外の方法で動きベクトル・プレディクタを算出することも可能である。例えば、擬似コード５３００は同じフィールドの候補を選択することへのバイアスを含むが、そのバイアスを除去するように、または反対のフィールドへのバイアスを用いるように、プレディクタの算出を調整することが可能である。別の例として、メジアン演算をより多くの状況（例えば、有効なフィールド動きベクトル候補が２つ存在する場合）で用いることも、まったく用いないことも可能であり、また、２つの有効な候補に対する非メジアン演算として平均演算を用いることも可能である。さらに別の例として、集合内の候補の順序を調整したり、すべての候補を１つの集合に格納したりすることも可能である。
【０１７３】
Ｖ．インターレース・フレーム符号化されたピクチャのマクロブロック情報の信号伝達における新機軸
記載の実施形態は、インターレース・フレーム符号化されたピクチャ（例えば、インターレースＰフレーム、インターレースＢフレーム、その他）のマクロブロック情報を信号伝達する手法およびツールを含む。例えば、記載の手法およびツールは、インターレースＰフレームのマクロブロック情報を信号伝達する手法およびツールと、インターレースＰフレームおよび他のインターレース・ピクチャ（例えば、インターレースＢフレーム、インターレースＰフィールド、インターレースＢフィールド、その他）のスキップ・マクロブロックを使用および信号伝達する手法およびツールとを含む。記載の実施形態は、限定されないが以下を含む記載の手法およびツールの１つまたは複数を実装する。
【０１７４】
１．インターレースＰフレームについて、動き補償タイプ（例えば、１フレームＭＶ、４フレームＭＶ、２フィールドＭＶ、４フィールドＭＶ、その他）および場合によって他の情報を、（例えば、マクロブロック・レベルのシンタックス要素ＭＢＭＯＤＥを用いる）フィールド／フレーム符号化タイプ情報と統合的に符号化すること。
【０１７５】
２．マクロブロック・スキップ条件を信号伝達すること。この信号伝達は、ＭＢＭＯＤＥなどの他のシンタックス要素とは別に行われることが可能である。スキップ条件は、マクロブロックが１ＭＶマクロブロックであること、ゼロの差分動きベクトルを有すること、および符号化されたブロックを有しないこと、を示す。スキップ情報は、圧縮されたビット・プレーンの形で符号化されることが可能である。
【０１７６】
記載の手法およびツールは、互いに組み合わせて用いたり、他の手法およびツールと組み合わせて用いたり、単独で用いたりすることが可能である。
【０１７７】
Ａ．スキップ・マクロブロックの信号伝達
一部の実装形態では、符号化器がスキップ・マクロブロックを信号伝達する。例えば、マクロブロックが１つの動きベクトルによって符号化され、ゼロの動きベクトル差分を有し、符号化されたブロックを有しない（すなわち、すべてのブロックにおいて残差がない）場合に、符号化器が、インターレース・フレームのスキップ・マクロブロックを信号伝達する。スキップ情報は、圧縮されたビット・プレーンとして（例えば、フレーム・レベルで）符号化されたり、マクロブロックごとに１ビットずつで（例えば、マクロブロック・レベルで）信号伝達されたりすることが可能である。マクロブロックのスキップ条件の信号伝達は、マクロブロックのマクロブロック・モードの信号伝達とは別に行われる。復号器は、対応する復号を行う。
【０１７８】
ここでのスキップ・マクロブロックの定義は、マクロブロックの符号化に複数の動きベクトルが用いられる場合には、すべての動きベクトル差分がゼロであって、すべてのブロックが符号化されないということがまず起こらないので、そのマクロブロックがスキップされることはほとんどないという経験的な知識を利用している。したがって、マクロブロックがスキップされているとして信号伝達される場合には、マクロブロック・モード（１ＭＶ）がスキップ条件から暗示されるので、そのマクロブロックに関してはマクロブロック・モードを信号伝達する必要がない。インターレースＰフレームの場合、１ＭＶマクロブロックは、１つのフレーム動きベクトルを用いて動き補償される。
【０１７９】
図３０は、インターレース予測フレーム（例えば、インターレースＰフレーム、インターレースＢフレーム、または、インターレースＰフィールドおよび／またはインターレースＢフィールドを含むフレーム）にある特定のマクロブロックの符号化をスキップするかどうかを決定する手法３０００を示す。符号化器は、３０１０で、所与のマクロブロックについて、そのマクロブロックが１ＭＶマクロブロックかどうかを調べる。マクロブロックが１ＭＶマクロブロックでない場合、符号化器は、３０２０で、そのマクロブロックをスキップしない。１ＭＶマクロブロックである場合、符号化器は、３０３０で、そのマクロブロックの１つの動きベクトルが、それの因果関係的に予測された動きベクトルと等しいかどうか（例えば、そのマクロブロックの差分動きベクトルがゼロに等しいかどうか）を調べる。マクロブロックの動きが、因果的に予測された動きと等しくない場合、符号化器は、３０４０で、そのマクロブロックをスキップしない。等しい場合、符号化器は、３０５０で、そのマクロブロックの複数のブロックについて、符号化すべき残差がないかどうかを調べる。符号化すべき残差がある場合、符号化器は、３０６０で、そのマクロブロックをスキップしない。マクロブロックのブロックの残差がない場合、符号化器は、３０７０で、そのマクロブロックをスキップする。３０８０で、符号化器は、符号化が完了するまで、マクロブロックを符号化またはスキップすることを続けることが可能である。
【０１８０】
一実装形態では、マクロブロック・レベルのＳＫＩＰＭＢＢＩＴフィールド（ＳＫＩＰＭＢなどとラベル付けされることも可能）は、マクロブロックのスキップ条件を示す。ＳＫＩＰＭＢＢＩＴフィールドが１であれば、現在のマクロブロックはスキップされており、ＳＫＩＰＭＢＢＩＴフィールドの後に他の情報が送られない。これに対し、ＳＫＩＰＭＢＢＩＴフィールドが１でない場合は、ＭＢＭＯＤＥフィールドが、マクロブロックのタイプと現在のマクロブロックに関する他の情報（セクションＶ．Ｂ．で後述する情報など）とを示すように復号される。
【０１８１】
フレーム・レベルでは、ＳＫＩＰＭＢフィールドは、フレーム内のマクロブロックのスキップ情報を示す。一実装形態では、スキップ情報は、いくつかのモードのうちの１つのモードで符号化されることが可能である。例えば、ｒａｗ符号化モードでは、ＳＫＩＰＭＢフィールドは、ＳＫＩＰＭＢＢＩＴがマクロブロック・レベルに存在することを示す。ビット・プレーン符号化モードでは、ＳＫＩＰＭＢフィールドは、スキップ情報を圧縮されたビット・プレーンの形で格納する。使用可能なビット・プレーン符号化モードとして、ｎｏｒｍａｌ−２モード、ｄｉｆｆｅｒｅｎｔｉａｌ−２モード、ｎｏｒｍａｌ−６モード、ｄｉｆｆｅｒｅｎｔｉａｌ−６モード、ｒｏｗｓｋｉｐモード、ｃｏｌｕｍｎｓｋｉｐモードなどがある。ビット・プレーン符号化モードについては、後のセクションＶＩＩで詳述する。復号されたＳＫＩＰＭＢビット・プレーンは、マクロブロックごとに１ビットを含み、各ビットがそれぞれのマクロブロックのスキップ条件を示す。
【０１８２】
あるいは、スキップ・マクロブロックは、他の何らかの方法で信号伝達されたり、ビットストリーム内の他のいずれかのレベルで信号伝達されたりする。例えば、圧縮されたビット・プレーンはフィールド・レベルで送られる。さらに別の代替として、スキップ条件は、前述の情報以外に、かつ／または前述の情報に加えて、スキップ・マクロブロックに関する情報を暗示するように定義されることが可能である。
【０１８３】
Ｂ．マクロブロック・モードの信号伝達
一部の実装形態では、符号化器が、マクロブロックの動き補償タイプおよび場合によってマクロブロックに関する他の情報を、そのマクロブロックのフィールド／フレーム符号化タイプ情報と統合的に符号化する。例えば、符号化器は、１つまたは複数の可変長符号化テーブルを用いて、５つの動き補償タイプ（１ＭＶ、４フレームＭＶ、２フィールドＭＶ、４フィールドＭＶ、およびイントラ）のうちの１つを、フィールド変換／フレーム変換／符号化ブロックなしイベントと統合的に符号化する。復号器は、対応する復号を行う。
【０１８４】
マクロブロックの動き補償タイプ情報とフィールド／フレーム符号化タイプ情報とを統合的に符号化することは、特定のフィールド／フレーム符号化タイプが、所与の動き補償タイプのマクロブロックの特定のコンテキストにおいて発生する可能性がより高いという経験的な知識を利用している。そこで、可変長符号化を用いて、動き補償タイプとフィールド／フレーム符号化タイプとの、より可能性の高い組合せに、より短い符号を割り当てることが可能である。さらに柔軟性を高めるために、複数の可変長符号化テーブルを用いることが可能であり、符号化器が状況に応じてテーブルを切り替えることが可能である。したがって、マクロブロックの動き補償タイプ情報とフィールド／フレーム符号化タイプ情報とを統合的に符号化することは、そうしない場合にフィールド／フレーム符号化タイプをマクロブロックごとに別々に信号伝達するために用いられる符号化オーバーヘッドを切り詰めることが可能になる。
【０１８５】
例えば、一部の実装形態では、符号化器は、マクロブロックについて、動き補償タイプ（例えば、１ＭＶ、４フレームＭＶ、２フィールドＭＶ、または４フィールドＭＶ）とフィールド／フレーム符号化タイプ（例えば、フィールド、フレーム、または符号化ブロックなし）とを選択する。符号化器は、マクロブロックの動き補償タイプおよびフィールド／フレーム符号化タイプを統合的に符号化する。符号化器はさらに、他の情報を、動き補償タイプおよびフィールド／フレーム符号化タイプと統合的に符号化することが可能である。例えば、符号化器は、（例えば、１つの動きベクトルを有するマクロブロックについて）マクロブロックの差分動きベクトルが存在するかどうかを示す情報を統合的に符号化することが可能である。
【０１８６】
復号器は、対応する復号を行う。例えば、図３１は、一部の実装形態において、インターレースＰフレームのマクロブロックの、統合的に符号化された動き補償タイプ情報およびフィールド／フレーム符号化タイプ情報を復号する手法３１００を示している。３１１０で、復号器が、マクロブロックの動き補償タイプおよびフィールド／フレーム符号化タイプを表す統合符号（例えば、可変長符号化テーブルからの可変長符号）を含むマクロブロック情報を受け取る。３１２０で、復号器は、（例えば、可変長符号化テーブルで統合符号をルックアップすることにより）統合符号を復号して、マクロブロックの動き補償タイプ情報およびフィールド／フレーム符号化タイプ情報を取得する。
【０１８７】
一実装形態では、マクロブロック・レベルのビットストリーム要素ＭＢＭＯＤＥは、マクロブロックのタイプ（１ＭＶ、４フレームＭＶ、２フィールドＭＶ、４フィールドＭＶ、またはイントラ）、インター符号化されたマクロブロックのフィールド／フレーム符号化タイプ（フィールド、フレーム、または符号化ブロックなし）、および１ＭＶマクロブロックの場合は差分動きベクトルが存在するかどうかを統合的に指定する。この例では、ＭＢＭＯＤＥは、１５個の可能な値のうちの１つを取得することが可能である。非ゼロの１ＭＶ差分動きベクトルが存在するかどうかの信号伝達を＜ＭＶＰ＞で表し、マクロブロックの残差が（１）フレーム符号化されているか、（２）フィールド符号化されているか、または（３）符号化されていないブロックか（すなわち、ＣＢＰ＝０か）の信号伝達を＜Ｆｉｅｌｄ／Ｆｒａｍｅ  ｔｒａｎｓｆｏｒｍ＞で表すと、ＭＢＭＯＤＥは、次の情報を統合的に信号伝達する。
【０１８８】
【表４】
2011166816.tif 000006
【０１８９】
＜１ＭＶ，ＭＶＰ＝０，ＣＢＰ＝０＞というケースはＭＢＭＯＤＥによっては信号伝達されないが、スキップ条件によって信号伝達される（このスキップ条件の信号伝達の例は、セクションＶ．Ａ．で既に示した）。
【０１９０】
この例では、インター符号化されたマクロブロックについて、ＭＢＭＯＤＥの＜Ｆｉｅｌｄ／ｆｒａｍｅ  Ｔｒａｎｓｆｏｒｍ＞が、符号化されたブロックがないことを示している場合には、ＣＢＰＣＹシンタックス要素は復号されない。一方、ＭＢＭＯＤＥの＜Ｆｉｅｌｄ／ｆｒａｍｅ  Ｔｒａｎｓｆｏｒｍ＞がフィールド変換またはフレーム変換を示している場合には、ＣＢＰＣＹが復号される。１ＭＶではないインター符号化されたマクロブロックの場合は、どの差分動きベクトルが非ゼロかを示すために追加フィールドが送られる。２フィールドＭＶマクロブロックの場合は、２つの動きベクトルのうちのどれが非ゼロの差分動きベクトルを含むかを示すために２ＭＶＢＰフィールドが送られる。同様に、４つの動きベクトルのうちのどれが非ゼロの差分動きベクトルを含むかを示すために４ＭＶＢＰフィールドが送られる。イントラ符号化されたマクロブロックの場合は、フィールド／フレーム符号化タイプと、符号化されていないブロックとが別々のフィールドで符号化される。
【０１９１】
あるいは、符号化器／復号器は、動き補償タイプおよびフィールド／フレーム符号化タイプの様々な組合せによる統合符号化を用いる。さらに別の代替として、符号化器／復号器は、動きベクトル差分の存在以外の追加情報を統合的に符号化／復号する。
【０１９２】
一部の実装形態では、符号化器／復号器は、いくつかの可変長符号テーブルの１つを用いてＭＢＭＯＤＥを符号化するが、符号テーブルを適応的に切り替えることが可能である。例えば、一部の実装形態では、フレーム・レベルのシンタックス要素ＭＢＭＯＤＥＴＡＢが、フレーム内のマクロブロックのＭＢＭＯＤＥの復号に用いられるテーブルを示す２ビット・フィールドである。この例では、それらのテーブルが４つずつのテーブルの集合に分けられ、どのテーブルの集合が用いられるかは、そのフレームに対して４動きベクトル符号化が有効かどうかに依存する。
【０１９３】
例示的なＭＢＭＯＤＥ可変長符号テーブル（例えば、各集合についてのテーブル０〜３−混在ＭＶまたは１ＭＶ）を以下の表１〜８に示す。
【０１９４】
【表５】
2011166816.tif 000007
【０１９５】
【表６】
2011166816.tif 000008
【０１９６】
【表７】
2011166816.tif 000009
【０１９７】
【表８】
2011166816.tif 000010
【０１９８】
【表９】
2011166816.tif 000011
【０１９９】
【表１０】
2011166816.tif 000012
【０２００】
【表１１】
2011166816.tif 000013
【０２０１】
【表１２】
2011166816.tif 000014
【０２０２】
ＶＩ．クロマ動きベクトルの導出における新機軸
記載の実施形態は、ルミナンス動きベクトルからクロマ動きベクトルを導出する手法およびツールを含む。記載の手法およびツールのいくつかは、フレーム符号化されたインターレース・ピクチャ（例えば、インターレースＰフレーム、インターレースＢフレーム、その他）におけるクロマ動きベクトルの導出に関連し、インターレース・フレーム符号化されたピクチャのレート／歪み性能を向上させる。記載の手法およびツールでは、クロマ動きベクトルは、明示的にはビットストリーム内で送られない。その代わりに、クロマ動きベクトルは、フレームのマクロブロックまたはブロックに関して符号化されて送られるルミナンス動きベクトルから導出される。
【０２０３】
記載の実施形態は、限定されないが、以下を含む記載の手法およびツールの１つまたは複数を実装する。
【０２０４】
１．符号化器／復号器が、マクロブロック内の各ルミナンス動きベクトルに対してクロマ動きベクトルを導出することにより、インターレース・フレーム符号化されたピクチャ（例えば、インターレースＰフレーム、インターレースＢフレーム、その他）におけるルミナンス動きベクトルとクロマ動きベクトルとの間の１対１対応を取得する。このクロマ動きベクトルを用いて、それぞれのクロマ・ブロックまたはクロマ・フィールドの動き補償が行われる。
【０２０５】
２．（例えば、ルックアップ・テーブルを用いて）可変オフセットをサブサンプリング後のクロマ動きベクトルに加算することによって、対応するマクロブロックがフィールド符号化されている場合に、符号化器／復号器が、ルミナンス動きベクトルとクロマ動きベクトルとの間の結合を維持する。
【０２０６】
記載の手法はインターレース・ビデオの４：２：０マクロブロック・フォーマットに当てはまるが、記載の手法は、他のマクロブロック・フォーマット（例えば、４：２：２、４：４：４、その他）および他の種類のビデオにも適用可能である。記載の手法およびツールは、互いに組み合わせて用いたり、他の手法およびツールと組み合わせて用いたり、単独で用いたりすることが可能である。
【０２０７】
Ａ．１対１クロマ動きベクトル対応
一部の実装形態では、符号化器／復号器は、マクロブロックを予測するために用いるルミナンス動きベクトルと同じ数の、クロマ動きベクトルを導出して用い、そのマクロブロックを予測する。例えば、所与のマクロブロックについて、符号化器／復号器が１つ、２つ、または４つのルミナンス・フィールド（またはフレーム）タイプの動きベクトルを用いる場合、符号化器／復号器は、そのマクロブロックについて、それぞれ１つ、２つ、または４つのクロマ動きベクトルを導出する。そのような手法は、（例えば、プログレッシブ・フレームまたはインターレースＰフレームのコンテキストで）従来の符号化器および復号器と異なり、従来の符号化器または復号器では、各マクロブロックにルミナンス動きベクトルがいくつあっても、それら（例えば、１つまたは４つ）から、常に単一のクロマ動きベクトルを導出していた。
【０２０８】
図３２は、マクロブロックの複数のルミナンス動きベクトルのそれぞれについてクロマ動きベクトルを導出する手法３２００を示すフローチャートである。３２１０で、符号化器／復号器が、マクロブロックの複数のルミナンス動きベクトルを受け取る。３２２０で、符号化器／復号器は、複数のルミナンス動きベクトルのそれぞれについてクロマ動きベクトルを導出する。導出されるクロマ動きベクトルの数は、現在のマクロブロックの予測に用いられるルミナンス動きベクトルの数によって異なる。
【０２０９】
一部の実装形態では、符号化器／復号器は、１ＭＶマクロブロックについては１つのクロマ動きベクトルを、２フィールドＭＶマクロブロックについては２つのフィールド・クロマ動きベクトルを、４フレームＭＶマクロブロックについては４つのフレーム・クロマ動きベクトルを、４フィールドＭＶマクロブロックについては４つのフィールド・クロマ動きベクトルを導出する。
【０２１０】
例えば、図２３〜２５を再度参照すると、図２３は、２フィールドＭＶマクロブロックのルミナンス動きベクトルから導出される、対応するトップ・フィールド・クロマ動きベクトルおよびボトム・フィールド・クロマ動きベクトルを示している。導出されたトップ・フィールド・クロマ動きベクトルおよびボトム・フィールド・クロマ動きベクトルは、クロマ・ブロックのそれぞれ偶数ラインおよび奇数ラインの変位を表す。
【０２１１】
図２４は、４フレームＭＶマクロブロックの４つのブロックのそれぞれのフレーム・ルミナンス動きベクトルから導出される、対応するフレーム・クロマ動きベクトル（ＭＶ１’、ＭＶ２’、ＭＶ３’、およびＭＶ４’）を示している。導出された４つのクロマ動きベクトルは、４つの４×４クロマ・サブブロックのそれぞれの変位を表す。
【０２１２】
図２５は、４フィールドＭＶマクロブロックのフィールド・ルミナンス動きベクトルから導出される、対応するフィールド・クロマ動きベクトルを示している。２つのフィールド・クロマ動きベクトルは、クロマ・ブロックの各フィールドの変位を表す。クロマ・ブロックのラインが縦にさらに分割されて２つの４×８領域が形成され、各領域は、インターリーブしている、トップ・フィールド・ラインの４×４領域とボトム・フィールド・ラインの４×４領域とからなる。トップ・フィールド・ラインについては、左側の４×４領域の変位がトップ左フィールド・クロマ・ブロック動きベクトルによって表され、右側の４×４領域の変位がトップ右フィールド・クロマ・ブロック動きベクトルによって表される。ボトム・フィールド・ラインについては、左側の４×４領域の変位がボトム左フィールド・クロマ・ブロック動きベクトルによって表され、右側の４×４領域の変位がボトム右フィールド・クロマ・ブロック動きベクトルによって表される。
【０２１３】
クロマ・ブロックの各領域は、導出された動きベクトルを用いて動き補償されることが可能である。これによって、クロマ動き補償の分解度を従来の符号化器および復号器より高めることが可能である（従来の符号化器および復号器では、一般にサブサンプリング（「ダウンサンプリング」とも呼ばれる）および／または平均によって、ルミナンス動きベクトルがいくつあってもそれらから単一のクロマ動きベクトルを導出していた（例えば、マクロブロックの４つのルミナンス動きベクトルから１つのクロマ動きベクトルが導出されていた））。
【０２１４】
あるいは、符号化器／復号器は、様々な数およびタイプのルミナンス動きベクトルからクロマ動きベクトルを導出することが可能である（例えば、２つのフレーム・ルミナンス動きベクトルを用いて符号化されたマクロブロックから２つのフレーム・クロマ動きベクトル、５つ以上のルミナンス動きベクトルを用いて符号化されたマクロブロックから５つ以上のクロマ動きベクトル、その他）。または、マクロブロックのルミナンス動きベクトルの数との１対１対応を維持しながら、他の何らかの方法でクロマ動きベクトルを導出することも可能である。
【０２１５】
Ｂ．フィールド符号化されたマクロブロックにおけるフィールド・ベースの丸め
一部の実装形態では、符号化器／復号器が、フィールド符号化されたマクロブロックのクロマ動きベクトル導出時に、フィールド・ベースの丸めを用いてルミナンス動きベクトルとクロマ動きベクトルとの間の結合を維持する。
【０２１６】
ルミナンス・フレーム動きベクトルまたはルミナンス・フィールド動きベクトルに対し、符号化器／復号器は、対応するクロマ・フレーム動きベクトルまたはクロマ・フィールド動きベクトルを導出して、クロマ（Ｃｂ／Ｃｒ）ブロックの一部（および場合によってはすべて）について動き補償を行う。一部の実装形態では、インターレース・フレーム符号化されたピクチャ（例えば、インターレースＰフレーム、インターレースＢフレーム、その他）のクロマ動きベクトル導出は、丸めとサブサンプリングとを含む。例えば、符号化器／復号器は、ルミナンス・フィールド動きベクトルからクロマ動きベクトルを導出する際に、サブサンプリング後のクロマ動きベクトルに（例えば、ルックアップ・テーブルを用いて）可変オフセットを加算する。
【０２１７】
図３３は、フィールド・ベースの丸めルックアップ・テーブルを用いてマクロブロックのクロマ動きベクトルを導出する手法３３００を示すフローチャートである。３３１０で、符号化器／復号器が、（例えば、４：２：０マクロブロック・フォーマットの場合はｙ成分値を２で割ることによって）ルミナンス・フィールド動きベクトル成分をサブサンプリングする。３３２０で、符号化器／復号器は、フィールド・ベースの丸めルックアップ・テーブルを用いて丸めを実行する。
【０２１８】
図３４の擬似コード３４００は、一実装形態において４：２：０マクロブロックのルミナンス動きベクトル成分（ＬＭＶＸ，ＬＭＶＹ）からクロマ動きベクトル成分（ＣＭＶＸ，ＣＭＶＹ）がどのように導出されるかを示している。擬似コード３４００に示されるように、符号化器／復号器は、水平方向のサブサンプリングを行う前に、（丸めルックアップ・テーブルｓ＿ＲｎｄＴｂｌ［］を用いる）単純な丸めストラテジを用いて、動きベクトルのｘ成分の３／４画素位置を切り上げる。符号化器／復号器は、マクロブロックがフレーム符号化されている場合には、ｙ成分の垂直方向のサブサンプリングを行う前に同じ丸めルックアップ・テーブルを用いる。一方、マクロブロックがフィールド符号化されている場合は、符号化器／復号器によるクロマ動きベクトルのｙ成分の処理のしかたが異なる。フィールド符号化されているマクロブロックでは、クロマ動きベクトルがトップ・フィールドまたはボトム・フィールドに対応する。トップ・フィールドおよびボトム・フィールドは、それぞれ、クロマ・ブロックの互い違いの水平ラインを含む。したがって、このケースでは、符号化器／復号器は、擬似コード３４００に示されたフィールド・ベースの丸めルックアップ・テーブルｓ＿ＲｎｄＴｂｌＦｉｅｌｄ［］を用いる。フィールド・ベースの丸めルックアップ・テーブルを用いることにより、符号化器／復号器は、丸めを行いながら正しいフィールド・オフセットを維持することが可能であり、それによって、ルミナンス動きベクトルおよびクロマ動きベクトルが一貫したフィールド・オフセットにマッピングされる。例えば、図３５に示すように、ｓ＿ＲｎｄＴｂｌＦｉｅｌｄ［］の値０，０，１，２および２，２，３，８（図３５のトップ・フィールド値３５１０）がマクロブロックの一方のフィールド（例えば、トップ・フィールド）に適用され、値４，４，５，６および６，６，７，１２（図３５のボトム・フィールド値３５２０）がマクロブロックのもう一方のフィールド（例えば、ボトム・フィールド）に適用される。
【０２１９】
あるいは、符号化器／復号器は、別のフィールド・ベースの丸めルックアップ・テーブルを用いるか、他の何らかの方法で丸めおよび／またはサブサンプリングを行うことも可能である。例えば、符号化器／復号器がマクロブロックを別のフォーマットで処理する場合は、別のサブサンプリング係数および／またはルックアップ・テーブル値を用いることが可能である。
【０２２０】
ＶＩＩ．複合実装形態
主たる複合実装形態とは若干の差異がある代替複合実装形態に加えて、ビットストリーム・シンタックス、セマンティクス、および復号器に関する詳細な複合実装形態について説明する。
【０２２１】
Ａ．ビットストリーム・シンタックス
様々な複合実装形態において、インターレース・ピクチャのデータが、複数のレイヤ（例えば、シーケンス、エントリ・ポイント、フレーム、フィールド、マクロブロック、ブロック、および／またはサブブロック・レイヤ）を有するビットストリームの形で表される。
【０２２２】
シンタックス図では、シンタックス要素の可能なフローが、矢印のパスで示される。四角いエッジの境界で示されたシンタックス要素は、固定長シンタックス要素を表す。丸みのある境界で示されたシンタックス要素は、可変長シンタックス要素を表す。丸みのある外側の境界とその内側の丸みのある境界とで示されたシンタックス要素は、より単純なシンタックス要素で構成されたシンタックス要素（例えば、ビット・プレーン）を表す。固定長シンタックス要素は、シンタックス要素の長さがシンタックス要素自体のデータに依存しないシンタックス要素として定義される。固定長シンタックス要素の長さは、一定であるか、シンタックスフローの先行データによって決定される。レイヤ図の下位レイヤ（例えば、フレーム・レイヤ図のマクロブロック・レイヤ）は、矩形内の矩形によって表される。
【０２２３】
エントリ・ポイント・レベルのビットストリーム要素を図３６に示す。一般にエントリ・ポイントは、復号器が復号を開始することが可能な、ビットストリーム内の位置（例えば、Ｉフレームまたは他のキー・フレーム）をマーキングする。言い換えると、ビットストリーム内のエントリ・ポイントより後のピクチャを復号することに、エントリ・ポイントより前のピクチャは不要である。エントリ・ポイント・ヘッダを用いて、符号化制御パラメータ（例えば、エントリ・ポイントの後のフレームに対して圧縮ツール（例えば、ループ内デブロッキング・フィルタリング）を有効にするか無効にするか）の変更を信号伝達することが可能である。
【０２２４】
インターレースＰフレームおよびＢフレームの場合のフレーム・レベルのビットストリーム要素を、それぞれ図３７および３８に示す。各フレームのデータは、フレーム・ヘッダと、それに続くマクロブロック・レイヤ用データ（イントラ・タイプのマクロブロック用、または各種インター・タイプのマクロブロック用）とからなる。インターレースＰフレームのマクロブロック・レイヤを構成するビットストリーム要素（イントラ・タイプのマクロブロック用、または各種インター・タイプのマクロブロック用）を図４０に示す。インターレースＰフレームのマクロブロック・レイヤのビットストリーム要素は、他のインターレース・ピクチャ（例えば、インターレースＢフレーム、インターレースＰフィールド、インターレースＢフィールド、その他）のマクロブロックについて存在することが可能である。
【０２２５】
インターレースＰフィールドおよび／またはＢフィールドを有するインターレース・ビデオ・フレームの場合の、フレーム・レベルのビットストリーム要素を図３９に示す。各フレームのデータは、フレーム・ヘッダと、それに続く（フィールドごとに「ＦｉｅｌｄＰｉｃＬａｙｅｒ」要素として繰り返し示される）フィールド・レイヤ用データおよびマクロブロック・レイヤ用データ（イントラ、１ＭＶ、または４ＭＶのマクロブロック用）とからなる。
【０２２６】
以下のセクションでは、フレーム・レイヤおよびマクロブロック・レイヤにおいてインターレース・ピクチャの信号伝達に関連する被選択ビットストリーム要素について説明する。被選択ビットストリーム要素について、特定のレイヤのコンテキストで説明するが、複数のレイヤで用いられることが可能なビットストリーム要素もある。
【０２２７】
１．被選択エントリ・ポイント・レイヤ要素
ループ・フィルタ（ＬＯＯＰＦＩＬＴＥＲ）（１ビット）
ＬＯＯＰＦＩＬＴＥＲは、エントリ・ポイント・セグメントについてループ・フィルタリングが有効になっているかどうかを示すＢｏｏｌｅａｎフラグである。ＬＯＯＰＦＩＬＴＥＲ＝０であれば、ループ・フィルタリングは有効になっていない。ＬＯＯＰＦＩＬＴＥＲ＝１であれば、ループ・フィルタリングは有効になっている。代替複合実装形態では、ＬＯＯＰＦＩＬＴＥＲはシーケンス・レベルの要素である。
【０２２８】
拡張動きベクトル（ＥＸＴＥＮＤＥＤ＿ＭＶ）（１ビット）
ＥＸＴＥＮＤＥＤ＿ＭＶは、拡張動きベクトルがオンになっているか（値１）、オフになっているか（値０）を示す、１ビットのシンタックス要素である。ＥＸＴＥＮＤＥＤ＿ＭＶは、ＰフレームおよびＢフレームにおいて（シンタックス要素ＭＶＲＡＮＧＥによってフレーム・レベルで信号伝達される）拡張動きベクトルが可能かどうかを示す。
【０２２９】
拡張差分動きベクトル範囲（ＥＸＴＥＮＤＥＤ＿ＤＭＶ）（１ビット）
ＥＸＴＥＮＤＥＤ＿ＤＭＶは、ＥＸＴＥＮＤＥＤ＿ＭＶ＝１の場合に存在する、１ビットのシンタックス要素である。ＥＸＴＥＮＤＥＤ＿ＤＭＶが１であれば、拡張差分動きベクトル範囲（ＤＭＶＲＡＮＧＥ）が、エントリ・ポイント・セグメント内で、ＰフレームおよびＢフレームのフレーム・レイヤにおいて信号伝達される。ＥＸＴＥＮＤＥＤ＿ＤＭＶが０であれば、ＤＭＶＲＡＮＧＥは信号伝達されない。
【０２３０】
高速ＵＶ動き補償（ＦＡＳＴＵＶＭＣ）（１ビット）
ＦＡＳＴＵＶＭＣは、クロマ動きベクトルの端数画素補間および丸めを制御するＢｏｏｌｅａｎフラグである。ＦＡＳＴＵＶＭＣ＝１であれば、１／４画素オフセットにあるクロマ動きベクトルが、最も近い１／２画素位置またはフル画素位置に丸められる。ＦＡＳＴＵＶＭＣ＝０であれば、クロマに関して特別な丸めやフィルタリングが行われない。ＦＡＳＴＵＶＭＣシンタックス要素は、インターレースＰフレームおよびインターレースＢフレームにおいて無視される。
【０２３１】
可変サイズ変換（ＶＳＴＲＡＮＳＦＯＲＭ）（１ビット）
ＶＳＴＲＡＮＳＦＯＲＭは、シーケンスについて可変サイズ変換符号化が有効になっているかどうかを示すＢｏｏｌｅａｎフラグである。ＶＳＴＲＡＮＳＦＯＲＭ＝０であれば、可変サイズ変換符号化が有効になっていない。ＶＳＴＲＡＮＳＦＯＲＭ＝１であれば、可変サイズ変換符号化が有効になっている。
【０２３２】
２．被選択フレーム・レイヤ要素
図３７および図３８は、それぞれ、インターレースＰフレームおよびインターレースＢフレームのフレーム・レベルのビットストリーム・シンタックスを示す図である。図３９は、インターレースＰフィールド、および／またはＢフィールド（または場合によって他の種類のインターレース・フィールド）を含むフレームのフレーム・レイヤのビットストリーム・シンタックスを示す図である。以下、個々のビットストリーム要素について説明する。
【０２３３】
フレーム符号化モード（ＦＣＭ）（可変サイズ）
ＦＣＭは、ピクチャ符号化タイプを示すために用いられる可変長符号ワード［「ＶＬＣ」］である。ＦＣＭは、フレーム符号化モードについて、次の表９に示す値をとる。
【０２３４】
【表１３】
2011166816.tif 000015
【０２３５】
フィールド・ピクチャ・タイプ（ＦＰＴＹＰＥ）（３ビット）
ＦＰＴＹＰＥは、インターレースＰフィールドおよび／またはインターレースＢフィールド、および場合によって他の種類のフィールドを含むフレームのフレーム・ヘッダに存在する、３ビットのシンタックス要素である。ＦＰＴＹＰＥは、インターレース・ビデオ・フレームのフィールド・タイプの様々な組合せについて、次の表１０に従う値をとる。
【０２３６】
【表１４】
2011166816.tif 000016
【０２３７】
ピクチャ・タイプ（ＰＴＹＰＥ）（可変サイズ）
ＰＴＹＰＥは、インターレースＰフレームおよびインターレースＢフレーム（または、インターレースＩフレームなど、他の種類のインターレース・フレーム）のフレーム・ヘッダに存在する、可変サイズのシンタックス要素である。ＰＴＹＰＥは、様々なフレーム・タイプについて、次の表１１に従う値をとる。
【０２３８】
【表１５】
2011166816.tif 000017
【０２３９】
フレームがスキップされていることをＰＴＹＰＥが示している場合、そのフレームは、その参照フレームと同一のＰフレームとして扱われる。スキップ・フレームを再構成することは、概念的には、参照フレームをコピーすることと等価である。スキップ・フレームは、このフレームに関してさらなるデータが伝送されないことを意味する。
【０２４０】
ＵＶサンプリング・フォーマット（ＵＶＳＡＭＰ）（１ビット）
ＵＶＳＡＭＰは、シーケンス・レベル・フィールドＩＮＴＥＲＬＡＣＥ＝１の場合に存在する、１ビットのシンタックス要素である。ＵＶＳＡＭＰは、現在のフレームに用いられるクロマ・サブサンプリングのタイプを示す。ＵＶＳＡＭＰ＝１の場合は、クロマのプログレッシブ・サブサンプリングが用いられ、そうでない場合は、クロマのインターレース・サブサンプリングが用いられる。このシンタックス要素は、ビットストリームの復号には影響しない。
【０２４１】
拡張ＭＶ範囲（ＭＶＲＡＮＧＥ）（可変サイズ）
ＭＶＲＡＮＧＥは、エントリ・ポイント・レイヤのＥＸＴＥＮＤＥＤ＿ＭＶビットが１に設定されている場合に存在する、可変サイズのシンタックス要素である。ＭＶＲＡＮＧＥ  ＶＬＣは、動きベクトル範囲を表す。
【０２４２】
拡張差分ＭＶ範囲（ＤＭＶＲＡＮＧＥ）（可変サイズ）
ＤＭＶＲＡＮＧＥは、エントリ・ポイント・レイヤのシンタックス要素ＥＸＴＥＮＤＥＤ＿ＤＭＶが１の場合に存在する、可変サイズのシンタックス要素である。ＤＭＶＲＡＮＧＥ  ＶＬＣは、動きベクトル差分範囲を表す。
【０２４３】
４動きベクトル切り換え（４ＭＶＳＷＩＴＣＨ）（可変サイズまたは１ビット）
インターレースＰフレームの場合、４ＭＶＳＷＩＴＣＨシンタックス要素は１ビットのフラグである。４ＭＶＳＷＩＴＣＨがゼロに設定されている場合、ピクチャ内のマクロブロックは、フレーム符号化されている場合には動きベクトルを１つだけ有し、フィールド符号化されている場合は動きベクトルを２つだけ有する。４ＭＶＳＷＩＴＣＨが１に設定されている場合は、マクロブロックごとに１つ、２つ、または４つの動きベクトルが存在することが可能である。
【０２４４】
スキップ・マクロブロック復号（ＳＫＩＰＭＢ）（可変サイズ）
インターレースＰフレームの場合、ＳＫＩＰＭＢシンタックス要素は、ピクチャ内の各マクロブロックのスキップ／非スキップ・ステータスを示す情報を格納する圧縮されたビット・プレーンである。復号されたビット・プレーンは、各マクロブロックのスキップ／非スキップステータスを１ビット値で表す。値０は、そのマクロブロックがスキップされていないことを表す。値１は、そのマクロブロックがスキップされたとして符号化されていることを表す。インターレースＰフレームのマクロブロックの、スキップされたというステータスは、復号器がそのマクロブロックを、動きベクトル差分がゼロであって、符号化されたブロック・パターンがゼロである１ＭＶとして扱うことを意味する。スキップ・マクロブロックについては、その他の情報がその後に続くことは見込まれていない。
【０２４５】
マクロブロック・モード・テーブル（ＭＢＭＯＤＥＴＡＢ）（２または３ビット）
ＭＢＭＯＤＥＴＡＢシンタックス要素は、固定長フィールドである。インターレースＰフレームの場合、ＭＢＭＯＤＥＴＡＢは、マクロブロック・レイヤのマクロブロック・モード・シンタックス要素（ＭＢＭＯＤＥ）を復号するために４つの符号テーブルのうちのどの１つを用いるかを示す２ビット値である。４つの符号テーブルの集合は２つあり、どの集合を用いるかは、４ＭＶＳＷＩＴＣＨフラグで示される、４ＭＶが用いられているかどうかによって決まる。
【０２４６】
動きベクトル・テーブル（ＭＶＴＡＢ）（２または３ビット）
ＭＶＴＡＢシンタックス要素は、固定長フィールドである。インターレースＰフレームの場合、ＭＶＴＡＢは、マクロブロック・レイヤのＭＶＤＡＴＡシンタックス要素を符号化するために４つのプログレッシブ（または１つの参照）動きベクトル符号テーブルのうちのどれが用いられているかを示す、２ビットのシンタックス要素である。
【０２４７】
２ＭＶブロック・パターン・テーブル（２ＭＶＢＰＴＡＢ）（２ビット）
２ＭＶＢＰＴＡＢシンタックス要素は、２フィールドＭＶマクロブロックの２ＭＶブロック・パターン（２ＭＶＢＰ）シンタックス要素を復号するために４つの符号テーブルのうちのどれを用いるかを信号伝達する２ビット値である。
【０２４８】
４ＭＶブロック・パターン・テーブル（４ＭＶＢＰＴＡＢ）（２ビット）
４ＭＶＢＰＴＡＢシンタックス要素は、４ＭＶマクロブロックの４ＭＶブロック・パターン（４ＭＶＢＰ）シンタックス要素を復号するために４つの符号テーブルのうちのどれを用いるかを信号伝達する２ビット値である。インターレースＰフレームの場合は、４ＭＶＳＷＩＴＣＨシンタックス要素が１に設定する場合に存在する。
【０２４９】
マクロブロック・レベル変換タイプフラグ（ＴＴＭＢＦ）（１ビット）
このシンタックス要素は、シーケンス・レベルのシンタックス要素ＶＳＴＲＡＮＳＦＯＲＭが１の場合に、ＰフレームおよびＢフレームに存在する。ＴＴＭＢＦは、フレーム・レベルまたはマクロブロック・レベルで変換タイプの符号化が有効になっているかどうかを信号伝達する、１ビットのシンタックス要素である。ＴＴＭＢＦ＝１であれば、フレーム内のすべてのブロックについて同じ変換タイプが用いられる。この場合は、その後のフレーム・レベル変換タイプ（ＴＴＦＲＭ）シンタックス要素で変換タイプが信号伝達される。ＴＭＢＦ＝０の場合、変換タイプは、フレーム全体を通して変わる可能性があり、マクロブロック・レベルまたはブロック・レベルで信号伝達される。
【０２５０】
フレーム・レベル変換タイプ（ＴＴＦＲＭ）（２ビット）
このシンタックス要素は、ＶＳＴＲＡＮＳＦＯＲＭ＝１かつＴＴＭＢＦ＝１の場合に、ＰフレームおよびＢフレームに存在する。ＴＴＦＲＭは、予測ブロックの８×８画素誤差信号の変換に用いられる変換タイプを信号伝達する。８×８誤差ブロックは、１つの８×８変換、２つの８×４変換、２つの４×８変換、または４つの４×４変換を用いて変換されることが可能である。
【０２５１】
３．被選択マクロブロック・レイヤ要素
図４０は、複合実装形態における、インターレースＰフレームのマクロブロックのマクロブロック・レベルのビットストリーム・シンタックスを示す図である。以下、個々のビットストリーム要素について説明する。マクロブロック用データは、マクロブロック・ヘッダとそれに続くブロック・レイヤ・データとからなる。インターレースＰフレームのマクロブロック・レイヤにあるビットストリーム要素（例えば、ＳＫＩＰＭＢＢＩＴ）は、場合によって、他のインターレース・ピクチャ（例えば、インターレースＢフレーム、その他）のマクロブロックについても存在することが可能である。
【０２５２】
スキップＭＢビット（ＳＫＩＰＭＢＢＩＴ）（１ビット）
ＳＫＩＰＭＢＢＩＴは、ｒａｗモードが用いられていることを、フレーム・レベルのシンタックス要素ＳＫＩＰＭＢが示している場合に、インターレースＰフレームおよびインターレースＢフレームのマクロブロックに存在する、１ビットのシンタックス要素である。ＳＫＩＰＭＢＢＩＴ＝１の場合は、そのマクロブロックがスキップされている。ＳＫＩＰＭＢＢＩＴは、マクロブロック・レベルにおいてＳＫＩＰＭＢとしてラベル付けされる場合もある。
【０２５３】
マクロブロック・モード（ＭＢＭＯＤＥ）可変サイズ
ＭＢＭＯＤＥは、マクロブロック・タイプ（例えば、１ＭＶ、２フィールドＭＶ、４フィールドＭＶ、４フレームＭＶ、またはイントラ）、フィールド／フレーム符号化タイプ（例えば、フィールド、フレーム、または符号化ブロックなし）、および１ＭＶマクロブロックに対する差分動きベクトル・データの存在、を統合的に指定する、可変サイズのシンタックス要素である。ＭＢＭＯＤＥについては、以下およびセクションＶで詳述している。
【０２５４】
２ＭＶブロック・パターン（２ＭＶＢＰ）（可変サイズ）
２ＭＶＢＰは、インターレースＰフレームおよびインターレースＢフレームのマクロブロックに存在する、可変サイズのシンタックス要素である。インターレースＰフレームのマクロブロックでは、２ＭＶＢＰは、マクロブロックが２つのフィールド動きベクトルを有することをＭＢＭＯＤＥが示している場合に存在する。この場合、２ＭＶＢＰは、２つのルミナンス・ブロックのうちのどれが非ゼロの動きベクトル差分を含むかを示す。
【０２５５】
４ＭＶブロック・パターン（４ＭＶＢＰ）（可変サイズ）
４ＭＶＢＰは、インターレースＰフィールド、インターレースＢフィールド、インターレースＰフレーム、およびインターレースＢフレームのマクロブロックに存在する、可変サイズのシンタックス要素である。インターレースＰフレームでは、４ＭＶＢＰは、マクロブロックが４つのフィールド動きベクトルを有することをＭＢＭＯＤＥが示している場合に存在する。この場合、４ＭＶＢＰは、４つのルミナンス・ブロックのうちのどれが非ゼロの動きベクトル差分を含むかを示す。
【０２５６】
フィールド変換フラグ（ＦＩＥＬＤＴＸ）（１ビット）
ＦＩＥＬＤＴＸは、インターレースＢフレームのイントラ符号化されたマクロブロックに存在する、１ビットのシンタックス要素である。このシンタックス要素は、マクロブロックがフレーム符号化されているか、フィールド符号化されているか（基本的には、マクロブロックの内部構成）を示す。ＦＩＥＬＤＴＸ＝１は、マクロブロックがフィールド符号化されていることを示す。そうでない場合、マクロブロックはフレーム符号化されている。インター符号化されたマクロブロックでは、このシンタックス要素は、ＭＢＭＯＤＥから推測されることが可能である（これについては、以下およびセクションＶで詳述している）。
【０２５７】
ＣＢＰ存在フラグ（ＣＢＰＰＲＥＳＥＮＴ）（１ビット）
ＣＢＰＰＲＥＳＥＮＴは、インターレースＰフレームおよびインターレースＢフレームのイントラ符号化されたマクロブロックに存在する、１ビットのシンタックス要素である。ＣＢＰＰＲＥＳＥＮＴが１であれば、ＣＢＰＣＹシンタックス要素がそのマクロブロックについて存在し、復号される。ＣＢＰＰＲＥＳＥＮＴが０であれば、ＣＢＰＣＹシンタックス要素は存在せず、ゼロに設定されなければならない。
【０２５８】
符号化されたブロック・パターン（ＣＢＰＣＹ）（可変サイズ）
ＣＢＰＣＹは、マクロブロックの各ブロックの変換係数ステータスを示す可変長シンタックス要素である。ＣＢＰＣＹは、対応するブロックについて係数が存在するかどうかを示す６ビット・フィールドに復号される。イントラ符号化されたマクロブロックの場合、各ビット位置の値０は、対応するブロックに非ゼロのＡＣ係数がまったく含まれないことを示す。値１は、少なくとも１つの非ゼロのＡＣ係数が存在することを示す。ＤＣ係数は、どの場合でも、各ブロックについて存在する。インター符号化されたマクロブロックの場合、各ビット位置の値０は、対応するブロックに非ゼロの係数がまったく含まれないことを示す。値１は、少なくとも１つの非ゼロの係数が存在することを示す。ビットが０の場合は、そのブロックについて符号化されるデータがない。
【０２５９】
動きベクトル・データ（ＭＶＤＡＴＡ）（可変サイズ）
ＭＶＤＡＴＡは、マクロブロックの動きベクトルの差分を符号化する、可変サイズのシンタックス要素である。復号については後で詳述する。
【０２６０】
ＭＢレベル変換タイプ（ＴＴＭＢ）（可変サイズ）
ＴＴＭＢは、ピクチャ・レイヤのシンタックス要素ＴＴＭＢＦが０の場合に、ＰピクチャおよびＢピクチャのマクロブロックに存在する、可変サイズのシンタックス要素である。ＴＴＭＢは、変換タイプ、変換タイプ信号レベル、およびサブブロック・パターンを指定する。
【０２６１】
Ｂ．インターレースＰフレームの復号
複合実装形態においてインターレースＰフレームを復号する処理について説明する。
【０２６２】
１．インターレースＰフレームのマクロブロック・レイヤの復号
インターレースＰフレームでは、１つまたは４つの動きベクトルを用いるフレーム・モードで、あるいは、２つまたは４つの動きベクトルを用いるフィールド・モードで、各マクロブロックを動き補償することが可能である。インター符号化されているマクロブロックは、イントラ・ブロックを含まない。さらに、動き補償後の残差は、フレーム変換モードまたはフィールド変換モードで符号化されることが可能である。より具体的には、残差のルミナンス成分は、フィールド変換モードで符号化されている場合にはフィールドに従って再配置されるが、フレーム変換モードの場合には変更されずに残り、クロマ成分も同じまま残る。マクロブロックは、イントラとして符号化されることも可能である。
【０２６３】
動き補償を、４つの（フィールドおよびフレームの両方の）動きベクトルを含まないように制限することが可能である。この制限については４ＭＶＳＷＩＴＣＨで信号伝達される。動き補償および残差符号化のタイプは、マクロブロックごとに、ＭＢＭＯＤＥおよびＳＫＩＰＭＢによって統合的に示される。ＭＢＭＯＤＥは、４ＭＶＳＷＩＴＣＨに従って、テーブルの様々な集合を用いる。
【０２６４】
インターレースＰフレームのマクロブロックは、５つのタイプ（１ＭＶ、２フィールドＭＶ、４フレームＭＶ、４フィールドＭＶ、およびイントラ）に分類される。これら５つのタイプについては、セクションＩＩＩで詳述した。最初の４つのタイプのマクロブロックはインター符号化され、最後のタイプは、マクロブロックがイントラ符号化されていることを示す。マクロブロック・タイプは、マクロブロック・レイヤにおいて、スキップ・ビットとともに、ＭＢＭＯＤＥシンタックス要素によって信号伝達される（マクロブロックのスキップ条件は、圧縮されたビット・プレーンのフレーム・レベルで信号伝達されることも可能である）。ＭＢＭＯＤＥは、様々なタイプのマクロブロックについて、マクロブロック・タイプを、そのマクロブロックに関する様々な情報とともに統合的に符号化する。
【０２６５】
スキップ・マクロブロックの信号伝達
マクロブロック・レベルのＳＫＩＰＭＢＢＩＴフィールドは、マクロブロックのスキップ条件を示す（スキップ条件および対応する信号伝達の詳細については、セクションＶで説明した）。ＳＫＩＰＭＢＢＩＴフィールドが１であれば、現在のマクロブロックはスキップされていることが伝えられ、ＳＫＩＰＭＢＢＩＴフィールドの後に他の情報が送られない。フレーム・レベルでは、ＳＫＩＰＭＢフィールドは、（ｒａｗモードで）マクロブロック・レベルでのＳＫＩＰＭＢＢＩＴの存在を示し、あるいは圧縮されたビット・プレーンの形でスキップ情報を格納する。復号されたビット・プレーンは、マクロブロックごとに１ビットを含み、各ビットがそれぞれのマクロブロックのスキップ条件を示す）。スキップ条件は、現在のマクロブロックが、ゼロ差分動きベクトルを有する１ＭＶであること（すなわち、マクロブロックがその１ＭＶ動きプレディクタによって動き補償されていること）、および符号化されたブロックがないこと（ＣＢＰ＝０）を意味する。代替複合実装形態では、残差は、ループ・フィルタリングに用いるためにフレーム符号化されていると見なされる。
【０２６６】
これに対し、ＳＫＩＰＭＢフィールドが１でない場合は、ＭＢＭＯＤＥフィールドが、マクロブロックのタイプと現在のマクロブロックに関する他の情報（後のセクションで説明する情報など）とを示すように復号される。
【０２６７】
マクロブロック・モードの信号伝達
ＭＢＭＯＤＥは、マクロブロック・タイプ（１ＭＶ、４フレームＭＶ、２フィールドＭＶ、４フィールドＭＶ、またはイントラ）、インター符号化されたマクロブロックの変換タイプ（すなわち、フィールド、フレーム、または符号化ブロックなし）、および１ＭＶマクロブロックの場合は差分動きベクトルが存在するかどうかを統合的に指定する（マクロブロック情報の信号伝達の詳細については、セクションＶで説明した）。ＭＢＭＯＤＥは、以下のように、１５個の可能な値のうちの１つをとりことができる。
【０２６８】
非ゼロの１ＭＶ差分動きベクトルが存在するかどうかの信号伝達を＜ＭＶＰ＞で表し、マクロブロックの残差が（１）フレーム変換符号化されているか、（２）フィールド変換符号化されているか、または（３）ゼロの符号化ブロックか（すなわち、ＣＢＰ＝０か）の信号伝達を＜Ｆｉｅｌｄ／Ｆｒａｍｅ  ｔｒａｎｓｆｏｒｍ＞で表すと、ＭＢＭＯＤＥは、次の情報を統合的に信号伝達する。
【０２６９】
【表１６】
2011166816.tif 000018
【０２７０】
＜１ＭＶ，ＭＶＰ＝０，ＣＢＰ＝０＞というケースはＭＢＭＯＤＥによっては信号伝達されないが、スキップ条件によって信号伝達される
インター符号化されたマクロブロックについて、ＭＢＭＯＤＥの＜Ｆｉｅｌｄ／ｆｒａｍｅ  Ｔｒａｎｓｆｏｒｍ＞が、符号化されたブロックがないことを示している場合には、ＣＢＰＣＹシンタックス要素は復号されない。一方、ＭＢＭＯＤＥの＜Ｆｉｅｌｄ／ｆｒａｍｅ  Ｔｒａｎｓｆｏｒｍ＞がフィールド変換またはフレーム変換を示している場合には、ＣＢＰＣＹは復号される。復号された＜Ｆｉｅｌｄ／ｆｒａｍｅ  Ｔｒａｎｓｆｏｒｍ＞を用いて、フラグＦＩＥＬＤＴＸが設定される。ＦＩＥＬＤＴＸは、マクロブロックがフィールド変換符号化されていることを示す場合には１に設定される。マクロブロックがフレーム変換符号化されていることを示す場合には、ＦＩＥＬＤＴＸは０に設定される。ゼロの符号化ブロックを示す場合、ＦＩＥＬＤＴＸは、動きベクトルと同じタイプに設定される（すなわち、動きベクトルがフィールド動きベクトルであればＦＩＥＬＤＴＸは１に設定され、フレーム動きベクトルであれば０に設定される）。
【０２７１】
１ＭＶではないインター符号化されたマクロブロックの場合は、どの差分動きベクトルが非ゼロかを示すために追加フィールドが送られる。２フィールドＭＶマクロブロックの場合は、２つの動きベクトルのうちのどれが非ゼロの差分動きベクトルを含むかを示すために２ＭＶＢＰフィールドが送られる。同様に、４つの動きベクトルのうちのどれが非ゼロの差分動きベクトルを含むかを示すために４ＭＶＢＰフィールドが送られる。
【０２７２】
イントラ符号化されたマクロブロックの場合は、フィールド／フレーム変換タイプと、符号化されていないブロックとが別々のフィールドで符号化される。
【０２７３】
２．インターレースＰフレームの動きベクトルの復号
インターレースＰフレームの動きベクトル・プレディクタ
現在のマクロブロックの動きベクトル・プレディクタを算出する処理は、２つのステップからなる。第１のステップでは、現在のマクロブロックに対する３つの候補動きベクトルを、現在のマクロブロックに隣接するマクロブロックから収集する。第２のステップでは、候補動きベクトルの集合から、現在のマクロブロックの動きベクトル・プレディクタを算出する。図２６Ａ〜２６Ｂは、候補動きベクトルが収集される隣接マクロブロックを示している。候補動きベクトルを収集する順序は重要である。この複合実装形態では、収集の順序は、必ず、Ａで始まり、Ｂを経て、Ｃで終わる。対応するブロックがフレーム境界の外側にある場合、または対応するブロックが別のスライスの一部である場合、プレディクタ候補は存在しないと見なされる。したがって、動きベクトル予測は、スライス境界にまたがっては実行されない。
【０２７４】
以下のセクションでは、様々なタイプのマクロブロックについて候補動きベクトルがどのように収集されるか、および動きベクトル・プレディクタがどのように算出されるかについて説明する。
【０２７５】
１ＭＶ候補動きベクトル
この複合実装形態では、図４１の擬似コード４１００を用いて、動きベクトルの、最大３つの候補動きベクトルが収集される。
【０２７６】
４フレームＭＶ候補動きベクトル
４フレームＭＶマクロブロックの場合は、現在のマクロブロックの４つのフレーム・ブロック動きベクトルのそれぞれについて、隣接するブロックから候補動きベクトルが収集される。この複合実装形態では、図４２の擬似コード４２００を用いて、左上フレーム・ブロック動きベクトル用の、最大３つの候補動きベクトルが収集され、図４３の擬似コード４３００を用いて、右上フレーム・ブロック動きベクトル用の、最大３つの候補動きベクトルが収集され、図４４の擬似コード４４００を用いて、左下フレーム・ブロック動きベクトル用の、最大３つの候補動きベクトルが収集され、図４５の擬似コード４５００を用いて、右下フレーム・ブロック動きベクトル用の、最大３つの候補動きベクトルが収集される。
【０２７７】
２フィールドＭＶ候補動きベクトル
２フィールドＭＶマクロブロックの場合は、現在のマクロブロックの２つのフィールド動きベクトルのそれぞれについて、隣接するブロックから候補動きベクトルが収集される。図４６の擬似コード４６００を用いて、トップ・フィールド動きベクトルの、最大３つの候補動きベクトルが収集され、図４７の擬似コード４７００を用いて、ボトム・フィールド動きベクトルの、最大３つの候補動きベクトルが収集される。
【０２７８】
４フィールドＭＶ候補動きベクトル
４フィールドＭＶマクロブロックの場合は、現在のマクロブロックの４つのフィールド・ブロックのそれぞれについて、隣接するブロックから候補動きベクトルが収集される。図４８の擬似コード４８００を用いて、左上フィールド・ブロック動きベクトル用の、最大３つの候補動きベクトルが収集され、図４９の擬似コード４９００を用いて、右上フィールド・ブロック動きベクトル用の、最大３つの候補動きベクトルが収集され、図５０の擬似コード５０００を用いて、左下フィールド・ブロック動きベクトル用の、最大３つの候補動きベクトルが収集され、図５１の擬似コード５１００を用いて、右下フィールド・ブロック動きベクトル用の、最大３つの候補動きベクトルが収集される。
【０２７９】
平均フィールド動きベクトル
２つのフィールド動きベクトル（ＭＶＸ１，ＭＶＹ１）および（ＭＶＸ２，ＭＶＹ２）に対して、平均演算が行われて、次のように候補動きベクトル（ＭＶＸＡ，ＭＶＹＡ）が形成される。  
ＭＶＸＡ＝（ＭＶＸ１＋ＭＶＸ２＋１）＞＞１  
ＭＶＹＡ＝（ＭＶＹ１＋ＭＶＹ２＋１）＞＞１
候補動きベクトルからのフレームＭＶプレディクタの算出
【０２８０】
このセクションでは、ある候補動きベクトルの集合に対してフレーム動きベクトルの動きベクトル・プレディクタがどのように算出されるかについて説明する。この複合実装形態では、１ＭＶについてプレディクタを算出する場合と、４フレームＭＶマクロブロックの４つのフレーム・ブロック動きベクトルのそれぞれについてプレディクタを算出する場合とで、演算は同じである。
【０２８１】
図５２の擬似コード５２００は、フレーム動きベクトルに対して動きベクトル・プレディクタ（ＰＭＶｘ，ＰＭＶｙ）がどのように算出されるかを示している。擬似コード５２００では、ＴｏｔａｌＶａｌｉｄＭＶは、候補動きベクトルの集合にある動きベクトルの総数を表しており（ＴｏｔａｌＶａｌｉｄＭＶ＝０、１、２、または３）、ＶａｌｉｄＭＶ配列は、候補動きベクトルの集合にある動きベクトルを表している。
【０２８２】
候補動きベクトルからのフィールドＭＶ・プレディクタの算出
このセクションでは、複合実装形態において、候補動きベクトルの集合に対してフィールド動きベクトルの動きベクトル・プレディクタがどのように算出されるかについて説明する。この複合実装形態では、２フィールドＭＶマクロブロックの２つのフィールド動きベクトルのそれぞれについてプレディクタを算出する場合と、４フィールドＭＶマクロブロックの４つのフィールド・ブロック動きベクトルのそれぞれについてプレディクタを算出する場合とで同じ演算を行う。
【０２８３】
まず、候補動きベクトルは２つの集合に分けられる。一方の集合には、現在のフィールドと同じフィールドをポイントする候補動きベクトルだけが含まれ、もう一方の集合には、反対のフィールドをポイントする候補動きベクトルが含まれる。候補動きベクトルが１／４画素単位で表現されていると仮定すると、そのｙ成分を次のように調べることにより、候補動きベクトルが同じフィールドをポイントしているかどうかが確認される。
【０２８４】
【表１７】
2011166816.tif 000019
【０２８５】
図５３の擬似コード５３００は、フィールド動きベクトルに対して動きベクトル・プレディクタ（ＰＭＶｘ，ＰＭＶｙ）がどのように算出されるかを示している。擬似コード５３００では、ＳａｍｅＦｉｅｌｄＭＶおよびＯｐｐＦｉｅｌｄＭＶが、候補動きベクトルの２つの集合を表し、ＮｕｍＳａｍｅＦｉｅｌｄＭＶおよびＮｕｍＯｐｐＦｉｅｌｄＭＶが、各集合に属する候補動きベクトルの数を表す。各集合の候補動きベクトルの順序は、候補Ａが存在すれば候補Ａから始まり、候補Ｂが存在すれば候補Ｂがそれに続き、候補Ｃが存在すれば候補Ｃがその次である。例えば、集合ＳａｍｅＦｉｅｌｄＭＶが候補Ｂおよび候補Ｃだけを含む場合は、ＳａｍｅＦｉｅｌｄＭＶ［０］が候補Ｂである。
【０２８６】
動きベクトル差分の復号
ＭＶＤＡＴＡシンタックス要素は、マクロブロックの動きベクトル差分情報を含む。各マクロブロックにおいて信号伝達される動き補償および動きベクトル・ブロック・パターンのタイプに応じて、マクロブロックごとに０〜４つのＭＶＤＡＴＡシンタックス要素が存在可能である。より具体的には、    ・  １ＭＶマクロブロックの場合は、ＭＢＭＯＤＥのＭＶＰフィールドに応じてゼロまたは１つのＭＶＤＡＴＡシンタックス要素が存在可能である。  
・  ２フィールドＭＶマクロブロックの場合は、２ＭＶＢＰに応じて、ゼロ、１つ、または２つのＭＶＤＡＴＡシンタックス要素が存在可能である。  
・  ４フレーム／フィールドＭＶマクロブロックの場合は、４ＭＶＢＰに応じて、ゼロ、１つ、２つ、３つ、または４つのＭＶＤＡＴＡシンタックス要素が存在可能である。
【０２８７】
この複合実装形態では、動きベクトル差分は、インターレースＰフィールドの１つの参照フィールド動きベクトル差分と同じ方法で、１／２画素モードを用いずに復号される（図５４Ａの擬似コード５４００は、１つの参照フィールドの動きベクトル差分がどのように復号されるかを示している。図５４Ｂの擬似コード５４１０は、代替複合実装形態において、１つの参照フィールドの動きベクトル差分がどのように復号されるかを示している。擬似コード５４１０は、動きベクトル差分を別の方法で復号する。例えば、擬似コード５４１０は、拡張動きベクトル差分範囲の処理を省略している）。
【０２８８】
動きベクトルの再構成
動きベクトル差分ｄｍｖに対し、ルミナンス動きベクトルは、次のように、差分をプレディクタに加算することによって再構成される。  
ｍｖ＿ｘ＝（ｄｍｖ＿ｘ＋ｐｒｅｄｉｃｔｏｒ＿ｘ）ｓｍｏｄ  ｒａｎｇｅ＿ｘ  
ｍｖ＿ｙ＝（ｄｍｖ＿ｙ＋ｐｒｅｄｉｃｔｏｒ＿ｙ）ｓｍｏｄ  ｒａｎｇｅ＿ｙ
【０２８９】
ｓｍｏｄ演算は、再構成されたベクトルが有効であることを保証する。（Ａ  ｓｍｏｄ  ｂ）は、−ｂ〜ｂ−１の範囲に収まる。ｒａｎｇｅ＿ｘおよびｒａｎｇｅ＿ｙはＭＶＲＡＮＧＥに依存する。
【０２９０】
ルミナンス・フレーム（またはフィールド）動きベクトルが与えられると、対応するクロマ・フレーム（またはフィールド）動きベクトルが導出され、それによって、クロマ（Ｃｂ／Ｃｒ）ブロックの一部（または場合によって、すべて）が補償される。ＦＡＳＴＵＶＭＣシンタックス要素は、インターレースＰフレームおよびインターレースＢフレームにおいて無視される。図３４の擬似コード３４００は、インターレースＰフレームのルミナンス動きベクトルＬＭＶからクロマ動きベクトルＣＭＶがどのように導出されるかを示している。
【０２９１】
Ｃ．ビット・プレーン符号化
スキップ・ビットなど、マクロブロック固有のバイナリ情報は、マクロブロックごとに１つのバイナリ・シンボルで符号化されることが可能である。例えば、マクロブロックがスキップされているかどうかを、１ビットで信号伝達することが可能である。このような場合は、フィールドまたはフレームのすべてのマクロブロックのステータスを、ビット・プレーンとして符号化し、フィールド・ヘッダまたはフレーム・ヘッダ内で伝送することが可能である。この規則の１つの例外は、ビット・プレーン符号化モードがＲＡＷモード（Raw Mode）に設定されている場合である。この場合は、各マクロブロックのステータスが、シンボルごとに１ビットとして符号化され、マクロブロック・レベルの他のシンタックス要素とともにマクロブロック・レベルで伝送される。
【０２９２】
フィールド／フレーム・レベルのビット・プレーン符号化は、２次元バイナリ配列を符号化するために用いられる。各配列のサイズはｒｏｗＭＢ×ｃｏｌＭＢである。ｒｏｗＭＢおよびｃｏｌＭＢは、それぞれ、該当するフィールドまたはフレームのマクロブロック行およびマクロブロック列の数である。各配列は、ビットストリーム内で、連続するビットの集合として符号化される。各配列の符号化には、７つのモードのうちの１つが用いられる。７つのモードは以下のとおりである。  
１．ｒａｗモード−情報がシンボルごとに１ビットとして符号化され、ＭＢレベル・シンタックスの一部として伝送される。  
２．ｎｏｒｍａｌ−２モード−２つのシンボルが統合的に符号化される。  
３．ｄｉｆｆｅｒｅｎｔｉａｌ−２モード−ビット・プレーンの差分符号化。この後に２つの残差シンボルが統合的に符号化される。  
４．ｎｏｒｍａｌ−６モード−６つのシンボルが統合的に符号化される。  
５．ｄｉｆｆｅｒｅｎｔｉａｌ−６モード−ビット・プレーンの差分符号化。この後に６つの残差シンボルが統合的に符号化される。  
６．ｒｏｗｓｋｉｐモード−セットされたビットがない行を信号伝達するための１ビット・スキップ。  
７．ｃｏｌｕｍｎｓｋｉｐモード−セットされたビットがない列を信号伝達するための１ビット・スキップ。  
フィールドまたはフレームのレベルでのビット・プレーンのシンタックス要素のシーケンスは次のとおりである。ＩＮＶＥＲＴ、ＩＭＯＤＥ、およびＤＡＴＡＢＩＴＳ。
【０２９３】
反転フラグ（ＩＮＶＥＲＴ）
ＩＮＶＥＲＴシンタックス要素は、１ビット値であって、これがセットされている場合には、ビット・プレーンにおいて、セットされたビットがゼロ・ビットより多いことを示す。復号器は、解釈されたビット・プレーンを、ＩＮＶＥＲＴおよびモードに応じて反転して、オリジナルを再作成する。ｒａｗモードが用いられる場合にはこのビットの値が無視されることに注意されたい。ビット・プレーンの復号にＩＮＶＥＲＴ値がどのように用いられるかについては後述する。
【０２９４】
符号化モード（ＩＭＯＤＥ）
ＩＭＯＤＥシンタックス要素は、ビット・プレーンの符号化に用いられた符号化モードを示す可変長値である。表１２は、ＩＭＯＤＥシンタックス要素の符号化に用いられる符号テーブルを示す。ビット・プレーンの復号にＩＭＯＤＥ値がどのように用いられるかについては後述する。
【０２９５】
【表１８】
2011166816.tif 000020
【０２９６】
ビット・プレーン符号化ビット（ＤＡＴＡＢＩＴＳ）
ＤＡＴＡＢＩＴＳシンタックス要素は、ビット・プレーンのシンボルのストリームを符号化する、可変サイズのシンタックス要素である。ビット・プレーンの符号化に用いられる方法は、ＩＭＯＤＥの値によって決定される。以下のセクションで、７つの符号化モードについて説明する。
【０２９７】
Ｒａｗモード
このモードでは、ビット・プレーンは、マクロブロックのラスター・スキャン順序でスキャンされるシンボルごとに１ビットとして符号化され、マクロブロック・レイヤの一部として送られる。あるいは、この情報は、フィールドまたはフレーム・レベルでｒａｗモードで符号化され、ＤＡＴＡＢＩＴＳの長さはｒｏｗＭＢ×ｃｏｌＭＢビットである。
【０２９８】
Ｎｏｒｍａｌ−２モード
ｒｏｗＭＢ×ｃｏｌＭＢが奇数であれば、最初のシンボルは、符号化されたｒａｗである。後続のシンボルは、普通のスキャン順序で、２つずつ符号化される。表１３のバイナリＶＬＣテーブルが、シンボル・ペアの符号化に用いられる。
【０２９９】
【表１９】
2011166816.tif 000021
【０３００】
Ｄｉｆｆ−２モード
前述のように、ビット・プレーンを生成するためにＮｏｒｍａｌ−２方法が用いられ、その後、後述するように、Ｄｉｆｆ−１演算がビット・プレーンに適用される。
【０３０１】
Ｎｏｒｍａｌ−６モード
Ｎｏｒｍ−６モードおよびＤｉｆｆ−６モードでは、ビット・プレーンが、６画素ずつの群の形で符号化される。これらの画素は、２×３または３×２のタイルにまとめられる。このビット・プレーンは、一連のルールを用いて最大限までタイル化され、残った画素は、ｒｏｗｓｋｉｐモードおよびｃｏｌｕｍｎｓｋｉｐモードの変形を用いて符号化される。２×３の「垂直方向」タイルは、ｒｏｗＭＢが３の倍数であって、ｃｏｌＭＢがそうでない場合に限って用いられる。それ以外の場合には、３×２の「水平方向」タイルが用いられる。図５５Ａは、２×３の「垂直方向」タイルの簡単な例を示す。図５５Ｂおよび５５Ｃは、３×２の「水平方向」のタイルの簡単な例を示す。この例では、細長い暗色の矩形が１画素幅であって、ｒｏｗｓｋｉｐ符号化およびｃｏｌｕｍｎｓｋｉｐ符号化を用いて符号化される。図５５Ｃに示すように、線状のタイルがピクチャの上端および左端に沿うようにタイル化された平面では、タイルの符号化順序は以下のパターンに従う。６個の要素のタイルが最初に符号化され、その後に、ｃｏｌｕｍｎｓｋｉｐ符号化およびｒｏｗｓｋｉｐ符号化された線状タイルが続く。配列サイズが２×３または３×２の倍数の場合、後者の線状タイルは存在せず、ビット・プレーンは完全にタイル化される。
【０３０２】
６個の要素の矩形タイルは、不完全なハフマン符号（すなわち、すべてのエンド・ノード（end nodes）を符号化に用いないハフマン符号）を用いて符号化される。タイル内のセットされたビットの数をＮとする（すなわち、０≦Ｎ≦６）。Ｎ＜３の場合は、ＶＬＣを用いてタイルが符号化される。Ｎ＝３の場合は、固定長エスケープの後に５ビットの固定長符号が続き、Ｎ＞３の場合は、固定長エスケープの後にタイルの補数の符号が続く。
【０３０３】
矩形タイルは、６ビットの情報を含む。タイルに関連付けられた符号をｋとする。ただし、ｋ＝ｂｉ２ｉであり、ｂｉは、タイル内の普通のスキャン順序でのｉ番目のビットのバイナリ値である。したがって、０≦ｋ＜６４である。ＶＬＣとエスケープ符号＋固定長符号の組み合わせが、ｋの信号伝達に用いられる。
【０３０４】
Ｄｉｆｆ−６モード
前述のように、ビット・プレーンを生成するためにＮｏｒｍａｌ−６方法が用いられ、その後、前述のように、Ｄｉｆｆ−１演算がビット・プレーンに適用される。
【０３０５】
Ｒｏｗｓｋｉｐモード
ｒｏｗｓｋｉｐ符号化モードでは、すべてのゼロの行(row)が、１ビットのオーバーヘッドでスキップされる。シンタックスは以下のとおりである。行ごとに、単一のＲＯＷＳＫＩＰビットが、その行がスキップされているかどうかを示す。行がスキップされていれば、次の行についてのＲＯＷＳＫＩＰビットが次に来る。そうでない場合（行がスキップされていない場合）は、ＲＯＷＢＩＴＳビット（その行の各マクロブロックについてのビット）が次に来る。したがって、行全体がゼロの場合は、ゼロ・ビットがＲＯＷＳＫＩＰシンボルとして送られ、ＲＯＷＢＩＴＳがスキップされる。行内にセットされたビットがあれば、ＲＯＷＳＫＩＰが１に設定され、行全体がｒａｗで送られる（ＲＯＷＢＩＴＳ）。行は、フィールドまたはフレームの上から下へスキャンされる。
【０３０６】
Ｃｏｌｕｍｎｓｋｉｐモード
ｃｏｌｕｍｎｓｋｉｐは、ｒｏｗｓｋｉｐの転置である。列は、フィールドまたはフレームの左から右へスキャンされる。
【０３０７】
Ｄｉｆｆ−１：：反転差分復号
いずれかの差分モード（Ｄｉｆｆ−２またはＤｉｆｆ−６）が用いられている場合、「差分ビット」のビット・プレーンは、最初に、対応するノーマル・モード（それぞれ、Ｎｏｒｍ−２またはＮｏｒｍ−６＿で復号される）を使用して復号される。差分ビットは、オリジナル・ビット・プレーンを再生成するために用いられる。再生成処理は、バイナリ・アルファベットに対する２−Ｄ  ＤＰＣＭである。位置（ｉ，ｊ）のビットを再生成するために、プレディクタｂｐ（ｉ，ｊ）が、次のように（位置（ｉ，ｊ）のビットｂ（ｉ，ｊ）から）生成される。
【０３０８】
【数１】
2011166816.tif 000022
【０３０９】
差分符号化モードの場合は、ＩＮＶＥＲＴに基づく、ビットごとの反転処理が行われない。しかしながら、ＩＮＶＥＲＴフラグは、前述のプレディクタの導出に関するシンボルＡの値を示すという別の機能で用いられる。より具体的には、ＩＮＶＥＲＴ＝０であればＡ＝０であり、ＩＮＶＥＲＴ＝１であればＡ＝１である。ビット・プレーンの実際の値は、プレディクタと復号された差分ビット値との排他的論理和（ＸＯＲ）をとることによって得られる。上式では、ｂ（ｉ，ｊ）は、最終復号後（すなわち、Ｎｏｒｍ−２／Ｎｏｒｍ−６を行い、さらに差分とプレディクタとのＸＯＲをとった後）のｉ，ｊ番目の位置にあるビットである。
【０３１０】
様々な実施形態に関連して本発明の原理を説明および図示してきたが、これらの様々な実施形態は、本発明の原理から逸脱することなく、構成および細部を改変することが可能であることを認識されよう。本明細書に記載のプログラム、処理、または方法は、特に断らない限り、何ら特定タイプのコンピューティング環境に関連するものでも限定されるものでもないことを理解されたい。様々なタイプの汎用または専用コンピューティング環境を本明細書に記載の教示に関して用いることが可能であり、あるいは、それらの環境を用いて、本明細書に記載の教示に従う操作を実行することが可能である。ソフトウェアの形で示した、実施形態の要素をハードウェアの形で実装することも、ハードウェアの形で示した、実施形態の要素をソフトウェアの形で実装することも可能である。
【０３１１】
本発明の原理を適用しうる、多くの可能な実施形態を考慮して、添付の特許請求項ならびにその均等物の範囲および趣旨に含まれうるすべての実施形態を本発明として特許請求するものとする。
【図１】
2011166816.tif 000023
【図２】
2011166816.tif 000024
【図３】
2011166816.tif 000025
【図４】
2011166816.tif 000026
【図５Ａ】
2011166816.tif 000027
【図５Ｂ】
2011166816.tif 000028
【図６Ａ】
2011166816.tif 000029
【図６Ｂ】
2011166816.tif 000030
【図７Ａ】
2011166816.tif 000031
【図７Ｂ】
2011166816.tif 000032
【図８Ａ】
2011166816.tif 000033
【図８Ｂ】
2011166816.tif 000034
【図９】
2011166816.tif 000035
【図１０】
2011166816.tif 000036
【図１１】
2011166816.tif 000037
【図１２】
2011166816.tif 000038
【図１３】
2011166816.tif 000039
【図１４】
2011166816.tif 000040
【図１５】
2011166816.tif 000041
【図１６】
2011166816.tif 000042
【図１７】
2011166816.tif 000043
【図１８】
2011166816.tif 000044
【図１９】
2011166816.tif 000045
【図２０】
2011166816.tif 000046
【図２１】
2011166816.tif 000047
【図２２Ａ】
2011166816.tif 000048
【図２２Ｂ】
2011166816.tif 000049
【図２２Ｃ】
2011166816.tif 000050
【図２３】
2011166816.tif 000051
【図２４】
2011166816.tif 000052
【図２５】
2011166816.tif 000053
【図２６Ａ】
2011166816.tif 000054
【図２６Ｂ】
2011166816.tif 000055
【図２７】
2011166816.tif 000056
【図２８】
2011166816.tif 000057
【図２９】
2011166816.tif 000058
【図３０】
2011166816.tif 000059
【図３１】
2011166816.tif 000060
【図３２】
2011166816.tif 000061
【図３３】
2011166816.tif 000062
【図３４】
2011166816.tif 000063
【図３５】
2011166816.tif 000064
【図３６】
2011166816.tif 000065
【図３７】
2011166816.tif 000066
【図３８】
2011166816.tif 000067
【図３９】
2011166816.tif 000068
【図４０】
2011166816.tif 000069
【図４１】
2011166816.tif 000070
【図４２】
2011166816.tif 000071
【図４３】
2011166816.tif 000072
【図４４】
2011166816.tif 000073
【図４５】
2011166816.tif 000074
【図４６】
2011166816.tif 000075
【図４７】
2011166816.tif 000076
【図４８】
2011166816.tif 000077
【図４９】
2011166816.tif 000078
【図５０】
2011166816.tif 000079
【図５１】
2011166816.tif 000080
【図５２】
2011166816.tif 000081
【図５３】
2011166816.tif 000082
【図５４Ａ】
2011166816.tif 000083
【図５４Ｂ】
2011166816.tif 000084
【図５５Ａ】
2011166816.tif 000085
【図５５Ｂ】
2011166816.tif 000086
【図５５Ｃ】
2011166816.tif 000087