(57)【要約】【課題】ＡＣ予測状態情報のためのビットプレーンコーディングおよびデコーディングを提供する。【解決手段】エンコーダ／デコーダは、複数のビットプレーンモードの群からビットプレーンモードを選択して、選択されたビットプレーンモードに従ってビットプレーンを処理する。ビットプレーンは、ビデオピクチャーの複数のマクロブロックに対するＡＣ予測状態情報を指示する。マクロブロック当り１ビットのＡＣ予測状態ビットが、１つまたは複数のインターマクロブロックのいずれかではなく、１つまたは複数のイントラマクロブロックのそれぞれに対して伝送される。【選択図】図８
2011139547.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムに記憶されたコンピュータ実行可能命令を前記コンピュータシステムが実行することによって実施される方法であって、前記コンピュータシステムが、
複数の利用可能なビットプレーンモードの群から１つのビットプレーンモードを選択すること、および
前記選択したビットプレーンモードに従って、第１のビデオピクチャーの複数のマクロブロックに対するＡＣ予測状態情報を示すビットプレーンを処理すること
を含み、
第２のビデオピクチャーが、１つまたは複数のイントラマクロブロックおよび１つまたは複数のインターマクロブロックを含み、マクロブロック当り１ビットのＡＣ予測状態ビットが、前記１つまたは複数のインターマクロブロックのいずれかではなく、前記１つまたは複数のイントラマクロブロックのそれぞれに対して伝送されることを特徴とする方法。
【請求項２】
前記ＡＣ予測状態情報は、前記第１のビデオピクチャーの前記複数のマクロブロックのそれぞれに対して、前記マクロブロックがＡＣ予測を用いてコード化されているかどうかを示すことを特徴とする請求項１に記載の方法。
【請求項３】
前記第１のビデオピクチャーは、プログレッシブイントラフレーム、インターレースイントラフレーム、またはインターレースイントラフィールドであることを特徴とする請求項１に記載の方法。
【請求項４】
前記処理することは、エンコードすることを含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記処理することは、デコードすることを含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記コンピュータシステムに、請求項１に記載の方法を実行させるための前記コンピュータ実行可能命令を記憶したことを特徴とするコンピュータ読取り可能記憶媒体。
【請求項７】
コンピュータシステムに記憶されたコンピュータ実行可能命令を前記コンピュータシステムが実行することによって実施される方法であって、前記コンピュータシステムが、
第１のビデオピクチャーの複数のマクロブロックに対して、ＡＣ予測状態情報を示すビットプレーンをエンコードすること、および
前記エンコードされたビットプレーンを伝送すること
を含み、
第２のビデオピクチャーが、１つまたは複数のイントラマクロブロックおよび１つまたは複数のインターマクロブロックを含み、マクロブロック当り１ビットのＡＣ予測状態ビットが、前記１つまたは複数のインターマクロブロックのいずれかではなく、前記１つまたは複数のイントラマクロブロックのそれぞれに対して伝送されることを特徴とする方法。
【請求項８】
前記ビットプレーンは、前記第１のビデオピクチャーの前記複数のマクロブロックのそれぞれに対して、該マクロブロックがＡＣ予測を用いてコード化されているかどうかを示す、１つのＡＣ予測状態ビットを含むことを特徴とする請求項７に記載の方法。
【請求項９】
前記エンコードされたビットプレーンは、ビットストリーム内のフィールドまたはフレームレイヤにおいて伝送されることを特徴とする請求項７に記載の方法。
【請求項１０】
前記コンピュータシステムに、請求項７に記載の方法を実行させるための前記コンピュータ実行可能命令を記憶したことを特徴とするコンピュータ読取り可能記憶媒体。
【請求項１１】
コンピュータシステムに記憶されたコンピュータ実行可能命令を前記コンピュータシステムが実行することによって実施される方法であって、前記コンピュータシステムが、
エンコードされたビットプレーンを受信すること、および
第１のビデオピクチャーの複数のマクロブロックに対するＡＣ予測状態情報を示す前記ビットプレーンをデコードすること
を含み、
第２のビデオピクチャーが、１つまたは複数のイントラマクロブロックおよび１つまたは複数のインターマクロブロックを含み、マクロブロック当り１ビットのＡＣ予測状態ビットが、前記１つまたは複数のインターマクロブロックのいずれかではなく、前記１つまたは複数のイントラマクロブロックのそれぞれに対して伝送されることを特徴とする方法。
【請求項１２】
前記ビットプレーンは、前記第１のビデオピクチャーの前記複数のマクロブロックのそれぞれに対して、該マクロブロックがＡＣ予測を用いてコード化されているかどうかを示す、１つのＡＣ予測状態ビットを含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記エンコードされたビットプレーンは、ビットストリーム内のフィールドレイヤまたはフレームレイヤにおいて伝送されることを特徴とする請求項１１に記載の方法。
【請求項１４】
前記コンピュータシステムに、請求項１１に記載の方法を実行させるための前記コンピュータ実行可能命令を記憶したことを特徴とするコンピュータ読取り可能記憶媒体。
【請求項１５】
コンピュータシステムに記憶されたコンピュータ実行可能命令を前記コンピュータシステムが実行することによって実施される方法であって、前記コンピュータシステムが、
複数の利用可能なビットプレーンモードの群から１つのビットプレーンモードを選択すること、
前記選択したビットプレーンモードに従って、ビデオピクチャーの複数のマクロブロックに対するＡＣ予測状態情報を示すビットプレーンを処理すること、および、
第２のビデオピクチャーについて、該第２のビデオピクチャーの複数のマクロブロックのすべてではなく、少なくとも１つのマクロブロックに対して、マクロブロックレイヤにおいて伝送されたＡＣ予測状態ビットを処理すること
を含み、
前記第２のビデオピクチャーが、１つまたは複数のイントラマクロブロックおよび１つまたは複数のインターマクロブロックを含み、前記ＡＣ予測状態ビットは、前記前記１つまたは複数のインターマクロブロックのいずれかではなく、前記１つまたは複数のイントラマクロブロックのそれぞれに対して伝送されるマクロブロック当り１ビットのＡＣ予測状態ビットであることを特徴とする方法。
【請求項１６】
コンピュータシステムに記憶されたコンピュータ実行可能命令を前記コンピュータシステムが実行することによって実施される方法であって、前記コンピュータシステムが、
ロースキップモード、カラムスキップモード、ノーマル２モード、ノーマル６モード、および１つまたは複数の差分モードを含む複数の利用可能なビットプレーンコーディング／デコーディングモードの群から１つのビットプレーンコーディング／デコーディングモードを選択すること、
前記選択したビットプレーンコーディング／デコーディングモードに従って、ビデオピクチャーの複数のマクロブロックに対するＡＣ予測状態情報を示すビットプレーンを処理すること
を含むことを特徴とする方法。
【請求項１７】
コンピュータシステムに記憶されたコンピュータ実行可能命令を前記コンピュータシステムが実行することによって実施される方法であって、前記コンピュータシステムが、
ビデオピクチャーの複数のマクロブロックに対してＡＣ予測状態情報を示すビットプレーンをエンコードすること、
前記エンコードされたビットプレーンを伝送すること、および、
第２のビデオピクチャーの１つまたは複数のイントラマクロブロックのそれぞれについて、マクロブロックレイヤにおいてマクロブロック当り１ビットのＡＣ予測状態ビットを伝送すること
を含み、
前記第２のビデオピクチャーが、１つまたは複数のイントラマクロブロックおよび１つまたは複数のインターマクロブロックを含み、前記マクロブロック当り１ビットのＡＣ予測状態ビットが、前記１つまたは複数のインターマクロブロックのいずれかではなく、前記１つまたは複数のイントラマクロブロックのそれぞれに対して伝送されることを特徴とする方法。
【請求項１８】
前記第２のビデオピクチャーは、動き補償ピクチャーであることを特徴とする請求項１７に記載の方法。
【請求項１９】
コンピュータシステムに記憶されたコンピュータ実行可能命令を前記コンピュータシステムが実行することによって実施される方法であって、前記コンピュータシステムが、
エンコードされたビットプレーンを受信すること、
ビデオピクチャーの複数のマクロブロックに対するＡＣ予測状態情報を示す前記ビットプレーンをデコードすること、および、
第２のビデオピクチャーの１つまたは複数のイントラマクロブロックのそれぞれについて、マクロブロックレイヤにおいてマクロブロック当り１ビットのＡＣ予測状態ビットを受信すること
を含み、
前記第２のビデオピクチャーが、１つまたは複数のイントラマクロブロックおよび１つまたは複数のインターマクロブロックを含み、前記マクロブロック当り１ビットのＡＣ予測状態ビットが、前記１つまたは複数のインターマクロブロックのいずれかではなく、前記１つまたは複数のイントラマクロブロックのそれぞれに対して受信されることを特徴とする方法。
【請求項２０】
前記第２のビデオピクチャーは、動き補償ピクチャーであることを特徴とする請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、デジタルデータ処理に関し、より詳細には、ビデオコーディングおよびデコーディングに関する。
【背景技術】
【０００２】
デジタルビデオは、大量の記憶領域および伝送能力を消費する。代表的な生デジタルビデオシーケンス（raw digital video sequence）は、１秒に１５または３０のピクチャーを含む。各ピクチャーは、数万または数十万のピクセル（ペルとも呼ばれる）を含む可能性がある。各ピクセルは、ピクチャーの小さな要素を表す。生の形態においては、コンピュータは一般に、ピクセルを２４ビットまたはそれ以上で表わす。したがって、通常の生デジタルビデオシーケンスの秒当りのビット数、またはビットレートは、５百万ビット／秒またはそれ以上となる可能性がある。
【０００３】
ほとんどのコンピュータおよびコンピュータネットワークは、生デジタルビデオを処理するためのリソースを欠いている。そのため、技術者は、圧縮（コーディングまたはエンコーティングとも呼ばれる）を用いて、デジタルビデオのビットレートを低減する。圧縮は可逆的（lossless）にすることが可能であり、この場合、ビデオの品質は、悪化しないが、ビットレートの低下は、ビデオの複雑さによって制限される。または、圧縮は不可逆的（lossy）にすることが可能であり、この場合、ビデオの品質は悪化するが、ビットレートの低下はより劇的である。復元（decompression）は、圧縮を元に戻す。
【０００４】
一般に、ビデオ圧縮技法は、「イントラ」圧縮と「インター」または予測圧縮とを含む。ビデオフレームについては、イントラ圧縮技法は通常、Ｉフレームまたはキーフレームと呼ばれる、個々のフレームを圧縮する。インター圧縮技法は、先行および／または後続のフレームを基準としてフレームを圧縮し、インター圧縮フレームは、通常、予測フレーム、Ｐフレーム、またはＢフレームと呼ばれる。
【０００５】
１．Ｗｉｎｄｏｗｓ（登録商標）  Ｍｅｄｉａ  Ｖｉｄｅｏバージョン８および９におけるインター圧縮およびイントラ圧縮
本件特許出願人によるウインドウズメディアビデオ、バージョン８［ＷＭＶ８］は、ビデオエンコーダおよびビデオデコーダを含む。ＷＭＶ８エンコーダは、イントラ圧縮およびインター圧縮を使用し、ＷＭＶ８デコーダは、イントラ復元およびインター復元を使用する。ウインドウズメディアビデオ、バージョン９［ＷＭＶ９］は、多くの動作に同様のアーキテクチャを使用する。
【０００６】
Ａ．イントラ圧縮
図１Ａは、ＷＭＶ８エンコーダにおけるキーフレーム内のピクセルブロック１０５のブロックベースイントラ圧縮１００を示す。ブロックは、一組のピクセル、例えば８×８のピクセルの配列である。ＷＭＶ８エンコーダは、キービデオフレームを８×８ピクセルブロックに分割して、８×８離散コサイン変換（Discrete Cosine Transform）（ＤＣＴ）１１０を、ブロック１０５などの個々のブロックに適用する。ＤＣＴは、８×８ピクセルブロック（空間的情報）を、周波数情報であるＤＣＴ係数の８×８ブロック１１５に変換する、１種の周波数変換である。ＤＣＴ動作それ自体は、可逆的またはほぼ可逆的である。しかしながら、原ピクセル値と比較して、ＤＣＴ係数は、ほとんどの重要な情報が、低周波係数（low frequency coefficients）（通常、ブロック１１５の左上）に集中しており、高周波係数（high frequency coefficients）（通常、ブロック１１５の右下）の多くが、ゼロまたはゼロに近い値を有するので、エンコーダが圧縮するのに、より効率的である。
【０００７】
次いで、エンコーダは、ＤＣＴ係数を量子化し１２０、８×８ブロックの量子化されたＤＣＴ係数１２５が生ずる。例えば、エンコーダは、各係数に、同一のスカラー量子化ステップサイズを適用する。量子化は不可逆的である。低周波ＤＣＴ係数は、高い値を有することが多いので、量子化によって精度は低下するが、係数の情報を完全に失うことはない。一方で、高周波ＤＣＴ係数は、ゼロまたはゼロに近い値を有することが多いので、高周波係数の量子化では、通常、ゼロ値の連続領域を生ずる。さらに、場合によっては、高周波ＤＣＴ係数は、低周波ＤＣＴ係数よりも粗く量子化され、高周波ＤＣＴ係数ではより大きな精度／情報の損失が生じることとなる。
【０００８】
次いで、エンコーダは、エントロピーエンコーディング（entropy encoding）のための８×８ブロックの量子化されたＤＣＴ係数１２５を準備する。これは可逆的圧縮の形態である。エントロピーエンコーディングの正確なタイプは、係数がＤＣ係数（最低周波数）であるか、上端行または左列におけるＡＣ係数（その他の周波数）であるか、またはその他のＡＣ係数であるかによって変わる。
【０００９】
エンコーダは、隣接する８×８ブロックのＤＣ係数１３６との差分として、ＤＣ係数１２６をエンコードする。この隣接ブロックは、エンコードされているブロックに対して先にエンコードされた近隣（neighbor）（例えば、上端または左）である。（図１Ａは、フレーム内でエンコードされているブロックの左に位置する近隣ブロック１３５を示す。）エンコーダは、差分をエントロピーエンコードする１４０。
【００１０】
エントロピーエンコーダは、ＡＣ係数の左列または上端行を、隣接する８×８ブロックの対応する左列または上端行との差分としてエンコードすることができる。これは、ＡＣ係数予測の一例である。図１Ａは、隣接する（実際には、左側の）ブロック１３５の左列１３７との差分１４７としてエンコードされたＡＣ係数の左列１２７を示している。差分コーディングは、差分係数がゼロ値を有するチャンスを増大させる。残りのＡＣ係数は、量子化されたＤＣＴ係数のブロック１２５からのものである。
【００１１】
図１Ｂは、Ｉフレーム内の８×８ブロックに対してのＡＣ予測候補を示している。上端予測に対して、上端隣接ブロック１７５におけるＡＣ係数の上端行１７７を、量子化されたＤＣＴ係数のブロック１２５におけるＡＣ係数の上端行１２９に対する予測子（predictor）として使用する。左予測に対しては、左側隣接ブロック１３５におけるＡＣ係数の左端列１３７を、ブロック１２５におけるＡＣ係数の左端列に対する予測子として使用する。
【００１２】
モードによっては、ＡＣ係数予測子は、差分値の演算または差分値との組合せの前に、倍率変更（scale）またはその他の処理が行われる。
【００１３】
指定の予測方向に隣接ブロックが存在しない場合には、左端列または上端行における、すべての７つのＡＣ係数に対する予測値はゼロに設定される。例えば、予測方向が上方で、現行ブロックが上端行にある場合には、上方向には隣接ブロックが存在しないので、現行ブロックの上端行の予測ＡＣ係数は、それぞれゼロに設定される。予測された行または列におけるＡＣ係数は、現行ブロックにおける対応するデコードされたＡＣ係数（これは差分値である）に加算されて、完全に再構成された量子化された変換係数ブロックが生成される。
【００１４】
エンコーダは、量子化されたＡＣ  ＤＣＴ係数の８×８ブロック１４５を走査して１５０、１次元配列１５５に変えて、次いで走査されたＡＣ係数を、ランレングスコーディング（run length coding）１６０の変形形態を使用して、エントロピーエンコードする。エンコーダは、１つまたは複数のラン／レベル／ラストテーブル１６５からエントロピーコード選択して、そのエントロピーコードを出力する。
【００１５】
Ｂ．インター圧縮
ＷＭＶ８エンコーダにおけるインター圧縮は、ブロックベースの動き補償（motion compensated）予測コーディングに続いて、残留誤差（residual error）の変換コーディングを使用する。図２および図３は、ＷＭＶ８エンコーダにおける予測フレームに対するブロックベースのインター圧縮を示す。特に、図２には、予測フレーム２１０に対する動き推定（motion estimation）を示してあり、図３には、予測フレームの動き補償ブロックに対する予測残差（prediction residual）の圧縮を示す。
【００１６】
例えば、図２において、ＷＭＶ８エンコーダは、予測フレーム２１０内のマクロブロック２１５に対する動きベクトルを計算する。動きベクトルを計算するために、エンコーダは、参照フレーム２３０のサーチエリア２３５内を探索する。探索エリア２３５内で、エンコーダは、良好な一致を示す候補マクロブロックを発見するために、予測フレーム２１０からのマクロブロック２１５を、様々な候補マクロブロックと比較する。エンコーダは、一致マクロブロックに対する、動きベクトル（エントロピーコード化された）を指定する情報を出力する。動きベクトルは、動きベクトル予測子に対して異なる方法でコード化される。
【００１７】
差分を動きベクトル予測子に加えることによって動きベクトルを再構成した後に、デコーダがその動きベクトルを使用して、エンコーダおよびデコーダにおいて利用可能な先に再構成されたフレームである参照フレーム２３０からの情報を使用して、マクロブロック２１５に対する予測マクロブロックを計算する。この予測が完全であることはまれであり、そのためにエンコーダは、通常、予測マクロブロックとそのマクロブロック２１５自体とのピクセル差分のブロック（誤差（error）ブロック、または残留（residual）ブロックとも呼ばれる）をエンコードする。
【００１８】
図３は、ＷＶＭ８エンコーダにおける誤差ブロック３３５の計算およびエンコーディングの例を示す。誤差ブロック３３５は、予測ブロック３１５と元の現行ブロック３２５との間の差分である。エンコーダは、ＤＣＴ３４０を誤差ブロック３３５に適用して、８×８ブロックのＤＣＴ係数３４５が生成される。次いで、エンコーダは、ＤＣＴ係数を量子化して３５０、８×８ブロックの量子化されたＤＣＴ係数３５５が得られる。エンコーダは８×８ブロック３５５を走査して３６０、１次元配列３６５に変え、その結果、係数は一般に最低周波数から最高周波数へと順序づけられる。エンコーダは、ランレングスコーディングの変形形態３７０を使用して、走査された係数をエントロピーエンコードする。エンコーダは、１つまたは複数のラン／レベル／ラストテーブル３７５からエントロピーコードを選択して、そのエントロピーコードを出力する。
【００１９】
図４は、インターコード化ブロックに対する、対応するデコーディングプロセス４００の一例を示している。図４を要約すると、デコーダは、予測残差を表わすエントロピーコード化された情報を、１つまたは複数のラン／レベル／ラストテーブル４１５による可変長デコーディング４１０およびランレングスデコーディング４２０を使用してデコードする（４１０、４２０）。デコーダは、エントロピーデコードされた情報を記憶する１次元配列４２５を逆走査４３０して、２次元ブロック４３５に変える。デコーダは、データの逆量子化および逆ＤＣＴを（一緒に４４０）行い、再構成された誤差ブロック４４５が得られる。別の動き補償経路（motion compensation path）において、デコーダは、参照フレームからの変位に対する動きベクトル情報４５５を使用して、予測ブロック４６５を計算する。デコーダは、予測ブロック４６５と再構成された誤差ブロック４４５とを結合して４７０、再構成ブロック４７５を形成する。
【００２０】
先のＷＭＶエンコーダ用のソフトウエアおよび先のＷＭＶデコーダ用のソフトウエアにおいて、ＡＣ予測情報（prediction information）は、ビットストリーム内のマクロブロックレベルにおいて、マクロブロック当り１ビットベースでシグナリングされる。
【００２１】
ＡＣＰＲＥＤフィールドは、マクロブロック内のすべてのブロックに対して、ＡＣ係数をデコードするためにＡＣ予測が使用されるかどうかを指定する、１ビット、マクロブロックレベルビットストリーム要素である。ＡＣＰＲＥＤは、Ｉフレーム内および予測フレーム内の１ＭＶイントラマクロブロック内にある。ＡＣＰＲＥＤ＝０は、ＡＣ予測がマクロブロック内で使用されないことを指示し、ＡＣＰＲＥＤ＝１は、一般にＡＣ予測がマクロブロックにおいて使用されることを指示する。予測子ブロックは、現行ブロックの直上または左側のブロックである。しかしながら、予測フレーム（例えば、ＰフレームまたはＢフレーム）内において、上端予測子ブロックおよび左予測子ブロックがイントラコード化されていない場合には、ＡＣＰＲＥＤ＝１の場合でも、ＡＣ予測は使用されない。
【００２２】
エンコーダおよびデコーダは、また、インターレースフレームに対して、ＡＣ予測のシグナリングも使用する。ＡＣＰＲＥＤＭＢフラグは、マクロブロック内のすべてのブロックに対してＡＣ予測が使用されるかどうかを指定する、フレームコード化マクロブロックに対してマクロブロックレベルにおいて存在する１ビット値である。ＡＣＰＲＥＤＴＦＩＥＬＤフラグおよびＡＣＰＲＥＤＢＦＩＥＬＤフラグは、それぞれ、現行マクロブロックのトップフィールドおよびボトムフィールドにおけるブロックに対してＡＣ予測が使用されるかどうかを指定する、フィールドコード化マクロブロックに対してマクロブロックレベルにおいて存在する１ビット値である。
【００２３】
ＩＩ．インターレースビデオおよびプログレッシブビデオ
ビデオフレームは、ビデオ信号の空間情報の走査線（lines）を含む。プログレッシブビデオでは、これらの走査線は、１つのタイムインスタントから始まり、連続する走査線を通過してフレームの下端に至るまでのサンプルを含む。プログレッシブＩフレームは、イントラコード化されたプログレッシブビデオフレームである。プログレッシブＰフレームは、前方予測を使用してコード化されるプログレッシブビデオフレームであり、プログレッシブＢフレームは、双方向予測を使用してコード化されるプログレッシブビデオフレームである。
【００２４】
通常のインターレースビデオフレームは、異なる時間から開始して走査される、２つのフィールドからなる。例えば、図５を参照すると、インターレースビデオフレーム５００は、トップフィールド５１０およびボトムフィールド５２０を含む。通常、偶数走査線（トップフィールド）がある時間（例えば、時刻ｔ）から始まって走査され、奇数番号の走査線（ボトムフィールド）が異なる（通常、遅い）時間（例えば、時刻ｔ＋１）に始まって走査される。このタイミングによって、２つのフィールドが異なる時間に始まって走査される場合に運動が存在する、インターレースビデオフレームの領域にぎざぎざの歯型模様が生成される可能性がある。このため、インターレースビデオフレームは、奇数走査線を１つのフィールドにグループ化するとともに、偶数走査線を別のフィールドにグループ化した、フィールド構造に従って再配置することができる。この配置は、フィールドコーディングと呼ばれ、そのようなぎざぎざのエッジアーチファクトを低減するために、高速モーションピクチャーにおいて有用である。一方で、静的領域においては、インターレースビデオフレームの画像詳細は、そのような再配置なしに、より効率的に保存することができる。したがって、フレームコーディングは、元の交互フィールド走査線配置が保存される、静的または低速のインターレースビデオフレームにおいて使用されることが多い。
【００２５】
先のＷＭＶエンコーダ用のソフトウエアおよび先のデコーダ用のソフトウエアは、インターレースビデオフレームにおいて、フィールド構造（フィールドコード化されたマクロブロック）またはフレーム構造（フレームコード化されたマクロブロック）に従って配置されたマクロブロックを使用する。図６は、エンコーダおよびデコーダ内のフィールドコード化されたマクロブロックについての構造を示している。インターレースマクロブロック６１０は、すべてのトップフィールド走査線（例えば、偶数走査線０、２、．．．１４）がフィールドコード化されたマクロブロック６２０の上半分に配置され、すべてのボトムフィールド走査線（例えば、奇数走査線１、３、．．．１５）がフィールドコード化されたマクロブロックの下半分に配置されるように並べ替えられる。フレームコード化されたマクロブロックでは、トップフィールド走査線およびボトムフィールド走査線は、インターレースマクロブロック６１０の場合と同様に、マクロブロック全体を通して交互にある（alternate）。
【００２６】
先のエンコーダおよびデコーダは、インターレースフレームにおいて４：１：１マクロブロックフォーマットを使用する。４：１：１マクロブックは、４つの８×８輝度ブロック、および各クロミナンスチャネル（chrominance channel）の２つの４×８ブロックから構成される。フィールドコード化された４：１：１マクロブロックにおいて、並べ替えられたマクロブロックは、各クロミナンスチャネルにおける上位２つの８×８輝度ブロックおよび上位の４×８クロミナンスブロックがトップフィールド走査線だけを含み、各クロミナンスチャネルにおける下位の２つの８×８輝度ブロックおよび下位の４×８クロミナンスブロックがボトムフィールド走査線だけを含むように、細分される。
【００２７】
一般的なプログレッシブビデオフレームは、交互走査線（non-alternating lines）を含むコンテンツの１フレームからなる。インターレースビデオと異なり、プログレッシブビデオは、ビデオフレームを別個のフィールドに分割せず、フレーム全体が一回で左から右、上端から下端に走査される。
【００２８】
ＩＩＩ．インターレースマクロブロックのためのフレーム／フィールドモードのシグナリング
先のＷＭＶエンコーダおよびデコーダ用のソフトウエアにおいて、ＩＮＴＲＬＣＦフィールドは、マクロブロックがフレームモードだけでコード化されているか、またはフィールドモードもしくはフレームモードでコード化されているかをシグナリングする、１ビットのフレームレイヤ要素である。ＩＮＴＲＬＣＦ＝０の場合には、フレーム内のすべてのマクロブロックはフレームモードでコード化される。ＩＮＴＲＬＣＦ＝１の場合には、フレーム内のマクロブロックは、フィールドモードもしくはフレームモードでコード化され、ビットストリーム内でＩＮＴＲＬＣＭＢフィールドが続き、各マクロブロックに対してフレーム／フィールドコーディング状態を知らせる。ＩＮＴＲＬＣＭＢは、プログレッシブＩフレーム、インターレースＩフレーム、インターレースＰフレームおよびインターレースＢフレームに存在する、ビットプレーン（bitplane）である。デコードされたＩＮＴＲＬＣＭＢビットプレーンは、左上から右下へのラスター走査順序における１ビット値のフィールドとして、各マクロブロックについてのインターレース状態を表わす。０の値は、対応するマクロブロックがフレームモードでコード化されていることを示す。１の値は、対応するマクロブロックがフィールドモードでコード化されていることを示す。
【００２９】
フィールド／フレームコーディングモードは、プログレッシブＩフレーム、インターレースＩフレーム、インターレースＰフレームおよびインターレースＢフレームにおける各マクロブロックに対してシグナリングされ、フィールド／フレームコーディングモードは、ビットプレーンによってフレームレベルにおいてだけでシグナリングされる。フィールド／フレームコーディングモードをシグナリングするために利用可能なマクロブロックレイヤシグナリングオプション（macroblock layer signaling option）はなく、このことによってシグナリングの柔軟性が制限される。
【００３０】
ＩＶ．先のＷＭＶエンコーダおよびデコーダ用のソフトウエアにおけるビットプレーンコーディング
先のＷＶＭエンコーダおよびデコーダ用のソフトウエアにおいて、フレーム内のマクロブロック用のあるバイナリ情報は、７つのビットプレーンコーディングモードの内の１つにおいて２次元配列としてコード化されて、フレームヘッダに入れて伝送される。
【００３１】
エンコーダおよびデコーダは、ビットプレーンコーディングを使用して、フレーム内のマクロブロックに対して、フレームレベルにおいて４つの異なる種類のバイナリ情報：（１）スキップ／非スキップマクロブロック、（２）インターレースピクチャーにおけるフィールドまたはフレームコーディングモード、（３）１モーションベクトル［１ＭＶ］または４モーションベクトル［４ＭＶ］コーディングモード；および（４）Ｂフレームにおける直接／非直接予測モード、をシグナリングする。以下の構文要素が、ビットプレーンコーディング方式において使用される。
【００３２】
ＩＮＶＥＲＴ
ＩＮＶＥＲＴフィールドは、ビットプレーンが０に等しいビットまたは１に等しいビットを、さらに有するかどうかを指示する１ビットコードである。ＩＮＶＥＲＴおよびビットプレーンコーディングモードに応じて、デコーダは、デコードされたビットプレーンを反転して、オリジナルを再現することができる。
【００３３】
ＩＭＯＤＥ
ＩＭＯＤＥフィールドは、ビットプレーンコーディングモード（bitplane coding mode）を表わす可変長コード［ＶＬＣ］である。一般に、より頻繁に発生するコーディングモードをエンコードするためには、比較的短いコードが使用される。
【００３４】
ＤＡＴＡＢＩＴＳ
ＤＡＴＡＢＩＴＳフィールドは、ＩＭＯＤＥフィールドにおいてシグナリングされたコーディングモードに基づく、記号（symbols）のエントロピーコード化されたストリームである。各２次元配列の大きさは、ｒｏｗＭＢ×ｃｏｌＭＢであり、ここでｒｏｗＭＢおよびｃｏｌＭＢは、フレーム内における、マクロブロックの行および列の数である。ビットストリーム内で、各配列は、７つのビットプレーンコーディングモードの１つにおいて、１組の連続するビットとしてコード化されている。７つのビットプレーンコーディングモードについて以下に記述する。
【００３５】
１．Ｒａｗモード
Ｒａｗモードにおいては、ビットプレーンは、自然走査順序で走査されたピクセル当り１ビットとしてエンコードされる。ＤＡＴＡＢＩＴＳの長さは、ｒｏｗＭＢ×ｃｏｌＭＢである。
【００３６】
２．ロースキップ（Ｒｏｗ−ｓｋｉｐ）モード
ロースキップモードにおいて、ＲＯＷＳＫＩＰフィールドは、ビットプレーン内の各行に対してＲＯＷＢＩＴＳフィールドが存在するかどうかを指示する。ビットプレーン内の値の行全体がゼロである場合には、ＲＯＷＳＫＩＰ＝０であり、ＲＯＷＢＩＴＳはスキップされる。行において少なくとも１つの値がゼロでない場合には、ＲＯＷＳＫＩＰ＝１であり、ＲＯＷＢＩＴＳは、行における各値に対して１ビットを含む。行は、フレームの上端から下端へと走査される。
【００３７】
３．カラムスキップ（Ｃｏｌｕｍｎ−ｓｋｉｐ）モード
カラムスキップモードにおいて、ＣＯＬＵＭＮＳＫＩＰフィールドは、ビットプレーンにおける各列に対してＣＯＬＵＭＮＢＩＴＳフィールドが存在するかどうかを指示する。ビットプレーンの値の列全体がゼロの場合には、ＣＯＬＵＭＮＳＫＩＰ＝０であり、ＣＯＬＵＭＮＢＩＴＳはスキップされる。列において少なくとも１つの値がゼロでない場合には、ＣＯＬＵＭＮＳＫＩＰ＝１であり、ＣＯＬＵＭＮＢＩＴＳは列内の各値に対して１ビットを含む。列は、フレームの左から右へと走査される。
【００３８】
４．ノーマル２（Ｎｏｒｍａｌ−２）モード
ノーマル２モードにおいては、ｒｏｗＭＢ×ｃｏｌＭＢが奇数の場合には、第１の記号は単にその値に一致する１ビットで表わされ、その後の記号は、バイナリＶＬＣテーブルを使用して、自然走査順序でペアにしてエンコードされる。
【００３９】
５．ノーマル６（Ｎｏｒｍａｌ−６）モード
ノーマル６モードにおいては、ビットプレーンは６個のピクセルの群にしてエンコードされる。これらのピクセルは、２×３または３×２のタイルにグループ分けされる。ビットプレーンは、１組のタイリング（ｔｉｌｉｎｇ）ルールを使用して最大にタイリングされ、残りのピクセルは、ロースキップモードおよびカラムスキップモードの変形形態を使用してエンコードされる。ｒｏｗＭＢが３の倍数であり、ｃｏｌＭＢが３の倍数でない場合にだけ、３×２の「垂直」タイルが使用される。そうでない場合には、２×３「水平」タイルが使用される。
【００４０】
６要素タイルが最初にエンコードされて、その後に、カラムスキップおよびロースキップでエンコードされた線形タイルが続く。配列サイズが、３×２または２×３の倍数である場合には、後の線形タイルは存在せず、ビットプレーンは６要素長方形タイルでのみタイリングされる。
【００４１】
６，７．Ｄｉｆｆ−２およびＤｉｆｆ−６モード
差分モード（Ｄｉｆｆ−２またはＤｉｆｆ−６）が使用される場合には、「差分ビット」のビットプレーンは、対応するノーマルモード（それぞれ、ノーマル２またはノーマル６）を使用してデコードされる。差分ビットは、原ビットプレーンを再生成するために使用される。
【００４２】
Ｖ．ビデオ圧縮および復元の規格
いくつかの国際規格が、ビデオ圧縮および復元に関係している。これらの規格には、ＭＰＥＧ（Motion Picture Experts Group）１、２および４、ＩＴＵ（国際電気通信連合）によるＨ．２６１、Ｈ．２６２（ＭＰＥＧ−２の別称）、Ｈ．２６３およびＨ．２６４（ＪＶＴ／ＡＶＣとも呼ばれる）が挙げられる。これらの規格は、ビデオデコーダのアスペクト、および圧縮ビデオ情報のフォーマットを規定している。直接的にまたは暗黙的に、これらの規格は、いくつかのエンコーダ詳細を規定しているが、その他のエンコーダ詳細は規定されていない。これらの規格は、イントラフレームおよびインターフレーム圧縮および復元の様々な組合せを使用（または使用をサポート）している。
【００４３】
Ａ．規格におけるフィールドコード化された、またはフレームコード化されたマクロブロックのシグナリング
国際規格の中には、インターレースピクチャーにおけるマクロブロックに対するフィールドコーディングまたはフレームコーディングのシグナリングについて記載しているものがある。
【００４４】
ＪＶＴ／ＡＶＣ規格のドラフトＪＶＴ−ｄ１５７には、ｍｂ＿ｆｉｅｌｄ＿ｄｅｃｏｄｉｎｇ＿ｆｌａｇ構文要素が記載されており、これは、マクロブロックペアがインターレースＰフレームにおいて、フレームモードまたはフィールドモードのどちらでデコードされるかをシグナリングするのに使用される。セクション７．３．４は、順序パラメータ（ｍｂ＿ｆｒａｍｅ＿ｆｉｅｌｄ＿ａｄａｐｔｉｖｅ＿ｆｌａｇ）が、マクロブロックにおけるフレームデコーディングとフィールドデコーディンとの間の切り替えを指示し、スライスヘッダ要素（ｐｉｃ＿ｓｔｒｕｃｔｕｒｅ）が、インターレースフレームピクチャーとしてのピクチャー構造を識別する場合において、ｍｂ＿ｆｉｅｌｄ＿ｄｅｃｏｄｉｎｇ＿ｆｌａｇがスライスデータの要素として送られる、ビットストリーム構文について記述している。
【００４５】
ＭＰＥＧ−４の１９９８年５月２８日委員会ドラフトには、ｄｃｔ＿ｔｙｐｅ構文要素が記載されており、これは、マクロブロックが、フレームＤＣＴコード化されているか、またはフィールドＤＣＴコード化されているかをシグナリングするために使用される。セクション６．２．７．３および６．３．７．３によれば、ｄｃｔ＿ｔｙｐｅは、インターレースコンテンツ内のＭＰＥＧ−４ビットストリームにのみ存在するマクロブロックレイヤ要素であり、この場合に、このマクロブロックは、非ゼロコード化ブロックパターンを有するか、またはイントラコード化されている。
【００４６】
ＭＰＥＧ−２において、ｄｃｔ＿ｔｙｐｅ要素は、マクロブロックがフレームＤＣＴコード化されているか、またはフィールドＤＣＴコード化されているかを指示する、マクロブロックレイヤ要素でもある。また、ＭＰＥＧ−２には、ピクチャーコーディング拡張要素ｆｒａｍｅ＿ｐｒｅｄ＿ｆｒａｍｅ＿ｄｃｔについての記述がある。ｆｒａｍｅ＿ｐｒｅｄ＿ｆｒａｍｅ＿ｄｃｔが「１」に設定されると、インターレースフレームにおいてフレームＤＣＴコーディングだけが使用される。ｆｒａｍｅ＿ｐｒｅｄ＿ｆｒａｍｅ＿ｄｃｔ＝１の場合に、条件ｄｃｔ＿ｔｙｐｅ＝０が「抽出され（derived）」、ビットストリームにはｄｃｔ＿ｔｙｐｅ要素は存在しない。
【００４７】
Ｂ．規格におけるＡＣ係数予測(AC Coefficient Prediction)のシグナリング
国際規格の中には、マクロブロックについての様々な空間ＡＣ係数予測モードのシグナリングについて記載しているものがある。
【００４８】
ＭＰＥＧ−４の１９９８年５月２８日委員会ドラフトには、ａｃ＿ｐｒｅｄ＿ｆｌａｇ構文要素が記載されており、これは、イントラマクロブロックの第１行または第１列におけるＡＣ係数が差分コード化されているかどうかをシグナリングするための１ビットフラグである。ＭＰＥＧ−４ビットストリームにおいて、ａｃ＿ｐｒｅｄ＿ｆｌａｇは、ビデオオブジェクトプレーンのデータパーティショニングデータ構造（例えば、ｄａｔａ＿ｐａｒｔｉｔｉｏｎｅｄ＿Ｉ＿ＶＯＰ（）、ｄａｔａ＿ｐａｒｔｉｔｉｏｎｅｄ＿Ｐ＿ＶＯＰ（））において、またはマクロブロックレイヤデータ要素構造（マクロブロック（））において、マクロブロック当り１ビットベースで送られる。
【００４９】
Ｈ．２６３規格において、付録Ｉには、任意選択でＡＣ予測を用いるアドバンストイントラコーディングモードが記載されている。マクロブロックレイヤ要素ＩＮＴＲＡ−ＭＯＤＥは、マクロブロックがＡＣ予測を使用するモードでエンコードされているかどうかをシグナリングする可変長コードである。
【００５０】
Ｃ．規格の制約
これらの国際規格には、いくつかの重要な点において制約がある。例えば、これらの規格は、フィールド／フレームタイプ情報のシグナリングおよびＡＣ予測について規定しているが、シグナリングは通常、マクロブロック当り１ビットベースで実行される。
【００５１】
デジタルビデオに対するビデオ圧縮および復元の重要性を考慮すると、ビデオ圧縮および復元の分野が十分に開発されていることは驚くべきことではない。従来のビデオ圧縮および復元技術の利点が何であろうとも、それらは、以下に示す技術およびツールの効果を有してはいない。
【発明の概要】
【発明が解決しようとする課題】
【００５２】
ＡＣ予測状態およびマクロブロックフィールド／フレームコード化タイプ情報のためのビットプレーンコーディングおよびデコーディングを提供する。
【課題を解決するための手段】
【００５３】
要約すると、ビデオコーディングおよびデコーディングのための様々な技術およびツールについて詳細な説明をする。例えば、エンコーダビットプレーンは、ＡＣ予測状態情報をコード化する。別の例としては、エンコーダは、インターレースフレームコード化ピクチャーにおけるマクロブロックのフィールド／フレーム変換タイプをシグナリングする。デコーダは、対応するデコーディングを実行する。記述される実施形態は、それに限定はされないが、以下に示すものを含む、記載される技術およびツールの１つまたは複数を実現する。
【００５４】
一態様において、エンコーダ／デコーダは、複数の利用可能なビットプレーンモードの群からビットプレーンモードを選択し、前記選択されたビットプレーンモードに従って、ビデオピクチャーの複数のマクロブロックに対するＡＣ予測状態情報を指示するビットプレーンを処理する。
【００５５】
別の態様においては、エンコーダは、ビデオピクチャーの複数のマクロブロックに対するＡＣ予測状態情報を指示するビットプレーンをエンコードして、このエンコードしたビットプレーンをシグナリングする。
【００５６】
別の態様においては、デコーダは、ビデオピクチャーの複数のマクロブロックに対するＡＣ予測状態情報を指示する、エンコードされたビットプレーンを受け取り、そのビットプレーンをデコードする。
【００５７】
別の態様においては、ビデオシーケンスにおける第１インターレースビデオフレームに対して、デコーダは、第１のインターレースビデオフレームに対してフレームレイヤにおいてシグナリングされたビットプレーンをデコードする。このビットプレーンは、第１のインターレースビデオフレームの複数のマクロブロックに対するフィールド／フレーム変換タイプを表わす。ビデオシーケンスにおける第２のインターレースビデオフレームに対して、第２のインターレースビデオフレームの少なくとも１つであるが、全部ではない複数のマクロブロックについて、デコーダは、マクロブロックレイヤにおいてシグナリングされたマクロブロック単位フィールド／フレーム変換タイプビットを処理する。
【００５８】
別の態様においては、ビデオシーケンスにおける第１のインターレースビデオフレームに対して、エンコーダはビットプレーンをエンコードして、第１のインターレースビデオフレームに対して、そのビットプレーンをフレームレイヤにおいてシグナリングする。このビットプレーンは、第１のインターレースビデオフレームの複数のマクロブロックに対するフィールド／フレーム変換タイプを表わす。ビデオシーケンスの第２のインターレースビデオフレームに対して、第２のインターレースビデオフレームの少なくとも１つであるが全部ではない複数のマクロブロックのそれぞれについて、エンコーダは、マクロブロック単位フィールド／フレーム変換タイプビットをマクロブロックレイヤにおいてシグナリングする。
【００５９】
別の態様においては、デコーダは、フレームレイヤにおいてシグナリングされたビットプレーンをデコードする手段であって、このビットプレーンは、第１のインターレースビデオフレームのための第１のビットプレーンを含み、この第１のビットプレーンは第１のインターレースビデオフレームの複数のマクロブロックに対するフィールド／フレーム変換タイプを表わす手段と、マクロブロックレイヤにおいてシグナリングされるマクロブロック単位フィールド／フレーム変換タイプビットを処理する手段であって、このマクロブロック単位フィールド／フレーム変換タイプビットは、第２のインターレースビデオフレームの１つまたは複数であるが、全部ではない複数のマクロブロックのそれぞれに対するマクロブロック単位フィールド／フレーム変換タイプビットを含む手段とを備える。
【００６０】
これらの様々な技術およびツールは、組合せまたは単独で使用することができる。
【００６１】
追加の特徴および利点は、添付の図面を参照して行う、様々な実施形態の詳細な説明によって明白になるであろう。
【図面の簡単な説明】
【００６２】
【図１Ａ】従来技術による、８×８ピクセルブロックのブロックベースのイントラフレーム圧縮を示す図である。
【図１Ｂ】従来技術による、８×８ピクセルブロックに対するＡＣ予測候補を示す図である。
【図２】従来技術による、ビデオエンコーダにおける動き推定を示す図である。
【図３】従来技術による、ビデオエンコーダにおける予測残差の８×８ブロックに対するブロックベース圧縮を示す図である。
【図４】従来技術による、ビデオエンコーダにおける予測残差の８×８ブロックに対するブロックベース復元を示す図である。
【図５】従来技術による、インターレースフレームを示す図である。
【図６】従来技術による、インターレースマクロブロックのフィールドコーディングを示す図である。
【図７】いくつかの記述した実施形態を実装することのできる、適当なコンピューティング環境のブロック図である。
【図８】いくつかの記述した実施形態を実装することのできる、汎用ビデオエンコーダシステムのブロック図である。
【図９】いくつかの記述した実施形態を実装することのできる、汎用ビデオデコーダシステムのブロック図である。
【図１０】いくつかの記述した実施形態において使用される、マクロブロックフォーマットを示す図である。
【図１１Ａ】トップフィールドとボトムフィールドの交互走査線を示す、インターレースビデオフレームの一部分を示す図である。
【図１１Ｂ】フレームとしてエンコーディング／デコーディングするために構成されたインターレースビデオフレームを示す図である。
【図１１Ｃ】フィールドとしてエンコーディング／デコーディングするために構成されたインターレースビデオフレームを示す図である。
【図１２】フレームレベルビットプレーンコーディングまたはマクロブロックレベルコーディングを使用して、マクロブロックためのフィールド／フレームタイプ情報をシグナリングするための技法を示す流れ図である。
【図１３】ＡＣ予測情報のビットプレーンコーディングの技法を示す流れ図である。
【図１４】組合せ実装におけるプログレッシブＩフレームのためのフレームレイヤビットストリーム構文を示す図である。
【図１５】組合せ実装におけるプログレッシブＩフレームのためのマクロブロックレイヤビットストリーム構文を示す図である。
【図１６】組合せ実装におけるインターレースＩフィールドまたはＢＩフィールドのためのフレームレイヤビットストリーム構文を示す図である。
【図１７】組合せ実装におけるインターレースＩフィールドのためのフィールドレイヤビットストリーム構文を示す図である。
【図１８】組合せ実装におけるインターレースＩフレームのためのフレームレイヤビットストリーム構文を示す図である。
【図１９】組合せ実装におけるインターレースＰフレームのためのフレームレイヤビットストリーム構文を示す図である。
【図２０】組合せ実装におけるインターレースＢフレームのためのフレームレイヤビットストリーム構文を示す図である。
【図２１】組合せ実装におけるインターレースＩフレームのマクロブロックのためのマクロブロックレイヤビットストリーム構文を示す図である。
【図２２】組合せ実装におけるインターレースＰフレームのマクロブロックのためのマクロブロックレイヤビットストリーム構文を示す図である。
【図２３】組合せ実装におけるインターレースＢフレームのマクロブロックのためのマクロブロックレイヤビットストリーム構文を示す図である。
【図２４Ａ】従来技術による、ノーマル６およびｄｉｆｆ−６ビットプレーンコーディングモードのためのタイルを示す図である。
【図２４Ｂ】従来技術による、ノーマル６およびｄｉｆｆ−６ビットプレーンコーディングモードのためのタイルを示す図である。
【図２４Ｃ】従来技術による、ノーマル６およびｄｉｆｆ−６ビットプレーンコーディングモードのためのタイルを示す図である。
【発明を実施するための形態】
【００６３】
本発明は、プログレッシブおよびインターレースビデオの効率的な圧縮と復元のための技術およびツールに関する。様々な記載の実施形態において、ビデオエンコーダおよびデコーダには、プログレッシブおよびインターレースビデオをエンコードおよびデコードするための技術、および様々なレイヤまたはレベル（例えば、シーケンスレベル、フレームレベル、フィールドレベル、マクロブロックレベル、および／またはブロックレベル）を含むビットストリームフォーマットまたは構文で使用される、対応するシグナリング技術が組み込まれている。
【００６４】
本明細書に記述した実施形態に対して、様々な代替形態が可能である。例えば、フローチャート図を参照して説明する技法は、フローチャートに示す段階の順序を変えたり、ある段階を反復または省略したりすることなどによって変更することができる。別の例として、いくつかの実現形態は、特定のマクロブロックフォーマットを参照して説明するが、その他のフォーマットも使用することができる。また、前方予測を参照して説明する技法およびツールは、その他のタイプの予測にも応用可能である。
【００６５】
これらの様々な技法およびツールは、組合せまたは単独で使用することができる。様々な実施形態は、記載の技法およびツールの１つまたは複数を実装している。本明細書に記述する、いくつかの技法およびツールは、ビデオエンコーダおよびデコーダにおいて、またはビデオエンコーディングまたはデコーディングに特に限定されないその他のシステムにおいて、使用可能である。
【００６６】
Ｉ．コンピューティング環境
図７は、記述した実施形態のいくつかを実装することのできる、適当なコンピューティング環境７００の一般的な例を示す図である。このコンピューティング環境７００は、本技法およびツールが広範な汎用および専用のコンピューティング環境において実装することができるので、使用または機能の範囲についてのいかなる限定を示唆するものではない。
【００６７】
図７を参照すると、コンピューティング環境７００には、少なくとも１つの処理ユニット７１０およびメモリ７２０が含まれる。図７において、この最も基本的な構成７３０を、破線で囲んである。処理ユニット７１０は、コンピュータ実行可能命令を実行するものであり、実際または仮想のプロセッサとすることができる。多重処理システムにおいては、複数の処理ユニットがコンピュータ実行可能命令を実行して、処理能力を増大させる。メモリ７２０は、揮発性メモリ（例えば、レジスタ、キャッシュ、ＲＡＭ）、不揮発性メモリ（例えば、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、その他）、またはその２つのどれかの組合せとすることができる。メモリ７２０は、記載の技法およびツールの１つまたは複数を備えるビデオエンコーダまたはデコーダを実装する、ソフトウエア７８０を格納している。
【００６８】
コンピューティング環境は、追加の機能を備えてもよい。例えば、コンピューティング環境７００には、記憶装置７４０、１つまたは複数の入力装置７５０、１つまたは複数の出力装置７６０、および１つまたは複数の通信接続７７０が含まれる。相互接続機構（図示せず）、例えばバス、コントローラ、またはネットワークが、コンピューティング環境７００の構成要素を相互接続する。通常、オペレーティングシステムソフトウエア（図示せず）は、コンピューティング環境７００において実行されるその他のソフトウエアのための動作環境を提供するとともに、コンピューティング環境７００の構成要素のアクティビティを調整する。
【００６９】
記憶装置７４０は、取外し可能または取外し不可能としてもよく、それには、磁気ディスク、磁気テープもしくはカセット、ＣＤ−ＲＯＭ、ＤＶＤ、または情報を記憶するのに使用することができるとともに、コンピューティング環境７００においてアクセスが可能なその他の任意の媒体がある。記憶装置７４０は、ビデオエンコーダまたはデコーダを実装するソフトウエア７８０のための命令を格納する。
【００７０】
入力装置７５０は、キーボード、マウス、ペン、またはトラックボールなどのタッチ入力装置、音声入力装置、スキャン装置、あるいはコンピューティング環境７００への入力を提供するための他の装置とすることができる。音声またはビデオエンコーディングのために、入力装置７５０は、音声カード、ビデオカード、ＴＶチューナカード、あるいはアナログまたはディジタル形態で音声またはビデオ入力を受け入れる類似の装置、または音声またはビデオサンプルをコンピューティング環境７００に読み込むＣＤ−ＲＯＭもしくはＣＤ−ＲＷとすることができる。出力装置７６０は、ディスプレイ、プリンタ、スピーカ、ＣＤライタ、またはコンピューティング環境７００からの出力を提供する他の装置とすることができる。
【００７１】
通信接続７７０は、通信媒体を介して別のコンピューティングエンティティに通信することを可能にする。通信媒体は、コンピュータ実行可能命令、音声またはビデオ入力もしくは出力、または被変調データ信号内のその他のデータなどの情報を伝達する。被変調データ信号とは、その信号内に情報をエンコードするように、その信号の１つまたは複数の特徴を設定または変更した信号である。一例であり、限定ではないが、通信媒体としては、電気、光、ＲＦ、赤外線、音響またはその他の搬送波で実現される、有線または無線技法が挙げられる。
【００７２】
本技法およびツールは、コンピュータ読取り可能記憶媒体の一般的な文脈において説明することができる。コンピュータ読取り可能記憶媒体とは、コンピューティング環境内でアクセスが可能な任意の利用可能な媒体である。一例であり、限定ではないが、コンピューティング環境７００において、コンピュータ読取り可能記憶媒体としては、メモリ７２０、記憶装置７４０、通信媒体、および前記の任意の組合せがある。
【００７３】
本技法およびツールは、コンピューティング環境における実行用の実プロセッサまたは仮想プロセッサ上で実行されているコンピュータ実行可能命令、例えばプログラムモジュール内に含まれるものなどの一般的な文脈において説明することができる。一般に、プログラムモジュールには、特定のタスクを実行するか、または特定の抽象データ型を実装する、ルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造などが含まれる。プログラムモジュールの機能は、様々な実施形態において必要に応じて組み合わせても、またはプログラムモジュール間で分割してもよい。
【００７４】
提示の目的で、詳細な説明においては、「推定する（ｅｓｔｉｍａｔｅ）」、「補償する（ｃｏｍｐｅｎｓａｔｅ）」、「予測する（ｐｒｅｄｉｃｔ）」、および「適用する（ａｐｐｌｙ）」などの用語を使用して、コンピューティング環境におけるコンピュータ動作を説明する。これらの用語は、コンピュータが実行する動作に対する高レベルな抽象であって、人が実行する行動と混同すべきではない。これらの用語に対応する実際のコンピュータ動作は、実装方法に応じて変化する。
【００７５】
ＩＩ．汎用ビデオエンコーダおよびデコーダ
図８は、それと合わせていくつかの記載の実施形態を実装することのできる、汎用ビデオエンコーダ８００のブロック図である。図９は、それと合わせていくつかの記載の実施形態を実装することのできる、汎用ビデオデコーダ９００のブロック図である。
【００７６】
エンコーダ８００およびデコーダ９００の範囲におけるモジュール間に示してある関係は、エンコーダおよびデコーダ内での情報の一般的な流れを指示しており、簡単にするためにその他の関係は図示していない。特に、図８および図９には、通常、ビデオシーケンス、ピクチャー、マクロブロック、ブロックなどに使用される、エンコーダ設定、モード、テーブルなどを示す、副次的な情報を示さない。そのような副次的な情報は、通常は、その副次的情報をエントロピーエンコーディングした後に、出力ビットストリームにして送られる。出力ビットストリームのフォーマットは、ウインドウズメディアビデオ（Ｗｉｎｄｏｗｓ（登録商標）Ｍｅｄｉａ  Ｖｉｄｅｏ）バージョン９フォーマットまたはその他のフォーマットとすることができる。
【００７７】
エンコーダ８００およびデコーダ９００は、ビデオフレーム、ビデオフィールド、またはフレームとフィールドの組合せとすることができる、ビデオピクチャーを処理する。ピクチャーレベルおよびマクロブロックレベルにおけるビットストリーム構文およびセマンティクスは、フレームが使用されているか、またはフィールドが使用されているかによって変わることがある。マクロブロック編成および全体的なタイミングに対する変更があることもある。エンコーダ８００およびデコーダ９００は、ブロックベースであり、フレームに対して４：２：０のマクロブロックフォーマットを使用し、各マクロブロックは、（しばしば、１つの１６×１６マクロブロックとして扱われる）４つの８×８輝度ブロックと、２つの８×８クロミナンスブロックとを含む。フィールドに対しては、同じか、または異なるマクロブロック編成およびフォーマットを使用することができる。８×８ブロックは、異なる段階、例えば周波数変換段階およびエントロピーエンコーディング段階において、さらに細分してもよい。例示的ビデオフレーム編成について、以下にさらに詳細に述べる。
【００７８】
実現形態および所望の圧縮タイプに応じて、エンコーダまたはデコーダのモジュールは、追加、省略、複数モジュールへの分割、他のモジュールとの結合、および／または同様なモジュールによる置換を行うことができる。代替実施形態において、異なるモジュール、および／またはその他のモジュール構成を備えるエンコーダまたはデコーダは、記載の技法の１つまたは複数を実行する。
【００７９】
Ａ．ビデオフレーム編成
いくつかの実現形態においては、エンコーダ８００およびデコーダ９００は、次のように編成されたビデオフレームを処理する。フレームは、ビデオ信号の空間情報の走査線を包含する。プログレッシブビデオに対して、これらの走査線は、１つの時点から始まり、連続する走査線を介してフレームの下端へと続くサンプルを包含する。プログレッシブビデオフレームは、図１０に示すマクロブロック１０００のようなマクロブロックに区画される。マクロブロック１０００は、従来型４：２：０マクロブロックフォーマットに従って、４つの８×８輝度ブロック（Ｙ１からＹ４）および、４つの輝度ブロックと同じ位置にあるが、解像度が水平および垂直に半分である、２つの８×８クロミナンスブロックを含む。この８×８ブロックは、異なる段階、例えば周波数変換（例えば、８×４、４×８または４×４ＤＣＴ）およびエントロピーエンコーディング段階においてさらに細分してもよい。プログレッシブＩフレームとは、イントラコード化されたプログレッシブビデオフレームである。プログレッシブＰフレームとは、前方予測を使用してコード化されたプログレッシブビデオフレームであり、プログレッシブＢフレームとは、双方向予測を使用してコード化されたプログレッシブビデオフレームである。プログレッシブＰおよびＢフレームには、イントラコード化されたマクロブロックに加えて、様々なタイプの予測マクロブロックを含めてもよい。
【００８０】
インターレースビデオフレームは、フレームの２つの走査からなり、２つの走査とは、フレームの偶数走査線を含む走査（トップフィールド）と、フレームの奇数走査線を含む走査（ボトムフィールド）である。この２つのフィールドは、２つの異なる時間（time periods）を提示してもよく、また同じ時間のものであってもよい。図１１Ａには、インターレースビデオフレーム１１００の一部分を示してあり、これには、インターレースビデオフレーム１１００の左上部における、トップフィールドとボトムフィールドとの交互走査線（alternating lines）が含まれる。
【００８１】
図１１Ｂには、エンコーディング／デコーディングするためにフレーム１１３０として編成された、図１１Ａのインターレースビデオフレーム１１００を示してある。インターレースビデオフレーム１１００は、マクロブロック１１３１および１１３２などのマクロブロックに区画されており、これらは図１０に示す４：２：０フォーマットを使用している。輝度プレーン（luminance plane）においては、各マクロブロック１１３１、１１３２は、トップフィールドからの８本の走査線と、それと交互にあるボトムフィールドからの８本の走査線との合計で１６本の走査線を含み、各走査線の長さは１６ピクセルである。（マクロブロック１１３１、１１３２内の輝度ブロックおよびクロミナンスブロックの実際の編成および配置は図に示してないが、これは実際には様々なエンコーディング決定によって変わる可能性がある。）所与のマクロブロック内で、トップフィールド情報およびボトムフィールド情報は、様々なフェーズの任意の点において、一緒にまたは別々にコード化することができる。インターレースＩフレームは、インターレースビデオフレームの２つのイントラコード化されたフィールドであり、この場合に、マクロブロックは、その２つのフィールドについての情報を含む。インターレースＰフレームは、前方予測を用いてコード化されたインターレースビデオフレームの２つのフィールドであり、インターレースＢフレームは、双方向予測を用いてコード化されたインターレースビデオフレームの２つのフィールドであり、この場合に、マクロブロックはこれら２つのフィールドについての情報を含む。インターレースＰおよびＢフレームは、イントラコード化されたマクロブロックに加えて、様々なタイプの予測マクロブロックを含んでもよい。インターレースＢＩフレームは、インターレースＩフレームとインターレースＢフレームとのハイブリッドであり、これらはイントラコード化されているが、その他のフレームに対するアンカー（anchor）としては使用されない。
【００８２】
図１１Ｃは、エンコーディング／デコーディングするためにフィールド１１６０として編成された、図１１Ａのインターレースビデオフレーム１１００を示している。インターレースビデオフレーム１１００の２つのフィールドのそれぞれは、マクロブロックに区画されている。トップフィールドは、マクロブロック１１６１のようなマクロブロックに区画され、ボトムフィールドはマクロブロック１１６２のようなマクロブロックに区画されている。（ここでも、マクロブロックは図１０に示す４：２：０フォーマットを使用し、マクロブロック内の輝度ブロックおよびクロミナンスブロックの編成および配置は図示していない。）輝度プレーンにおいて、マクロブロック１１６１は、トップフィールドからの１６本の走査線を含み、マクロブロック１１６２は、ボトムフィールドからの１６本の走査線を含み、各走査線の長さは１６ピクセルである。インターレースＩフィールドとは、インターレースビデオフレームの、単一の別個に表現されたフィールドである。インターレースＰフィールドとは、前方予測を用いてコード化されたインターレースビデオフレームの、単一の別個に表現されたフィールドであり、インターレースＢフィールドとは、双方向予測を用いてコード化されたインターレースビデオフレームの、単一の別個に表現されたフィールドである。インターレースＰおよびＢフィールドには、イントラコード化されたマクロブロックに加えて、様々なタイプの予測マクロブロックを含めてもよい。インターレースＢＩフィールドとは、インターレースＩフィールドとインターレースＢフィールドとのハイブリッドであり、これらはイントラコード化されているが、その他のフィールドのためのアンカーとしては使用されない。
【００８３】
エンコーディング／デコーディングのためにフィールドとして編成されるインターレースビデオフレームには、異なるフィールドタイプの様々な組合せを含めることができる。例えば、そのようなフレームは、トップフィールドおよびボトムフィールドの両方において同一のフィールドタイプであっても、各フィールドにおいて異なるフィールドタイプであってもよい。一実施形態においては、フィールドタイプの可能な組合せとしては、Ｉ／Ｉ、Ｉ／Ｐ、Ｐ／Ｉ、Ｐ／Ｐ、Ｂ／Ｂ、Ｂ／ＢＩ、ＢＩ／Ｂ、およびＢＩ／ＢＩが含まれる。
【００８４】
ピクチャーという用語は、ソースの、コード化された、または再構成された画像データを指す。プログレッシブビデオでは、ピクチャーは、プログレッシブビデオフレームである。インターレースビデオでは、ピクチャーは、文脈に応じて、インターレースビデオフレーム、そのフレームのトップフィールド、またはそのフレームのボトムフィールドを指すことがある。
【００８５】
代替的に、エンコーダ８００およびデコーダ９００は、オブジェクトベースであるか、異なるマクロブロックまたはブロックフォーマットを使用するか、または、８×８ブロックおよび１６×１６マクロブロックとは異なる大きさまたは構成のピクセル集合に対する処理を実行する。
【００８６】
Ｂ．ビデオエンコーダ
図８は、汎用ビデオエンコーダシステム８００のブロック図である。エンコーダシステム８００は、現行ピクチャー（current picture）８０５（例えば、プログレッシブビデオフレーム、インターレースビデオフレーム、またはインターレースビデオフレームのフィールド）を含む、ビデオピクチャーのシーケンスを受け取り、圧縮ビデオ情報８９５を出力として生成する。ビデオエンコーダの特定の実施形態では、汎用エンコーダ８００の変形形態または補完バージョンが使用される。
【００８７】
エンコーダシステム８００は、予測ピクチャーおよびキーピクチャーを圧縮する。提示の目的で、図８は、キーピクチャーがエンコーダシステム８００を通過する経路および予測ピクチャーの経路を示している。エンコーダシステム８００の構成要素の多くが、キーピクチャーと予測ピクチャーの両方を圧縮するのに使用される。これらの構成要素によって実行される厳密な処理は、圧縮中の情報のタイプに応じて変わる可能性がある。
【００８８】
予測ピクチャー（例えば、プログレッシブＰフレームまたはＢフレーム、インターレースＰフィールドまたはＢフィールド、あるいはインターレースＰフレームまたはＢフレーム）は、（一般に参照ピクチャーまたはアンカーと呼ばれる）１つまたは複数の他のピクチャーからの予測（または差分）によって表わされる。予測残差（prediction residual）とは、予測されたものと原ピクチャーとの間の差分である。それとは異なり、キーピクチャー（例えば、プログレッシブＩフレーム、インターレースＩフィールド、またはインターレースＩフレーム）は、他のピクチャーを参照することなく圧縮される。
【００８９】
現行ピクチャー８０５が前方予測ピクチャーである場合に、動き推定器（motion estimator）８１０は、１つまたは複数の参照ピクチャー、例えばピクチャー記憶装置８２０にバッファリングされた、再構成された先のピクチャー８２５を基準にして、マクロブロックまたは現行ピクチャー８０５のその他のピクセルの集合の動きを推定する。現行ピクチャー８０５が双方向予測ピクチャーである場合には、動き推定器８１０は、（例えば、インターレースＢフィールドに対する）最大４つの再構成参照ピクチャーを基準にして、現行ピクチャー８０５における動きを推定する。通常、動き推定器は、１つまたは複数の時間的に以前の参照ピクチャーおよび１つまたは複数の時間的に未来の参照ピクチャーを基準として、Ｂピクチャー内の動きを推定する。したがって、エンコーダシステム８００は、複数の参照ピクチャーのための別個の記憶装置８２０および８２２を使用することができる。
【００９０】
動き推定器８１０は、ピクセル、１／２ピクセル、１／４ピクセル、またはその他の増分によって動きを推定することができ、動き推定の精度を、ピクチャー毎に、またはその他に基づいて切り替えることができる。動き推定器８１０（および補償器（compensator）８３０）は、フレーム毎に、またはその他に基づいて、参照ピクチャーピクセル内挿のタイプ間で（例えば、双三次（bicubic）および双一次（bilinear）の間で）切り替えることもできる。動き推定の精度は、水平および垂直方向において、同じでも異なってもよい。動き推定器８１０は、差分動きベクトル（differential motion vector）情報などの動き情報８１５を、副次的情報として出力する。
【００９１】
動き補償器（motion compensator）８３０は、再構成ピクチャー（複数を含む）８２５に動きベクトルを適用して、動き補償現行ピクチャー８３５を形成する。この予測は完全であることはまれであり、動き補償現行ピクチャー８３５と元の現行ピクチャー８０５との間の差分は予測残差８４５である。後に行うピクチャーの再構成中に、予測残差８４５は、元の現行ピクチャー８０５により近い再構成ピクチャーを得るために、動き補償現行ピクチャー８３５に加えられる。不可逆的圧縮（lossy compression）においては、それでも、いくらかの情報は元の現行ピクチャー８０５から失われている。代替的に、動き推定器および動き補償器は別のタイプの動き推定／補償を適用する。
【００９２】
周波数変換器（frequency transformer）８６０は、空間ドメインビデオ情報を周波数ドメイン（すなわち、スペクトル）データに変換する。ブロックベースのビデオピクチャーでは、周波数変換器８６０は、ＤＣＴ、ＤＣＴの変形形態、またはその他のブロック変換を、ピクセルデータのブロックまたは予測残差データに適用して、周波数変換係数のブロックを生成する。代替的に、周波数変換器８６０は、フーリエ変換などの別の従来型周波数変換を適用するか、またはウェーブレット分析またはサブバンド分析を使用する。周波数変換器８６０は、８×８、８×４、４×８、４×４またはその他の大きさの周波数変換を適用することができる。
【００９３】
次いで、量子化器（quantizer）８７０は、スペクトルデータ係数のブロックを量子化する。量子化器は、ピクチャー毎またはその他に基づき変化するステップサイズを有するスペクトルデータに、均一な、スカラー量子化を適用する。代替的に、量子化器は、別のタイプの量子化、例えば不均一（non-unifom）、ベクトル、または非適応（non-adaptive）の量子化を、スペクトルデータ係数に適用するか、または周波数変換を使用しないエンコーダシステム内の空間ドメインデータを、直接的に量子化する。適応量子化（adaptive quantization）に加えて、エンコーダ８００は、フレーム切捨て（frame dropping）、適応フィルタリング、またはその他のレート制御の技法を使用することができる。
【００９４】
エンコーダ８００は、特定のタイプの情報を持たないマクロブロックである、スキップされたマクロブロックに対して、特別なシグナリングを使用してもよい。
【００９５】
再構成された現行ピクチャーが、後続の動き推定／補償に対して必要な場合には、逆量子化器（inverse quantizer）８７６が、量子化されたスペクトルデータ係数に対して逆量子化を実行する。次いで、逆周波数変換器（inverse frequency transformer）８６６が、周波数変換器８６０の動作の逆を実行して、（予測ピクチャーに対して）再構成予測残差または再構成キーピクチャーを生成する。現行ピクチャー８０５がキーピクチャーである場合には、再構成キーピクチャーは、再構成現行ピクチャー（図示せず）として取り込まれる。現行ピクチャー８０５が予測ピクチャーである場合には、再構成予測残差が、動き補償現行ピクチャー８３５に加えられて、再構成現行ピクチャーが形成される。ピクチャー記憶装置８２０、８２２の一方または両方が、動き補償予測に使用するために再構成された現行ピクチャーをバッファリングする。いくつかの実現形態において、エンコーダは、デブロッキングフィルタ（de-blocking filter）を、再構成されたフレームに適用して、ピクチャー内の不連続およびその他のアーチファクトを適応スムージングする。
【００９６】
エントロピーコーダ（entropy coder）８８０は、量子化器８７０の出力に加えて、ある種の副次情報（例えば、動き情報８１５、量子化ステップサイズ）を圧縮する。一般的なエントロピーコーディング技法としては、算術コーディング、差分コーディング、ハフマンコーディング（Huffman coding）、ランレングス（run length）コーディング、ＬＺコーディング、ディクショナリコーディング、および前記の組合せを挙げることができる。エントロピーコーダ８８０は、通常、様々な種類の情報（例えば、ＤＣ係数、ＡＣ係数、異なる種類の副次情報）に対して様々なコーディング技法を使用し、特定のコーディング技法の範囲内の複数のコードテーブルから選択することができる。
【００９７】
エントロピーコーダ８８０は、マルチプレクサ［ＭＵＸ］８９０に、圧縮ビデオ情報８９５を提供する。ＭＵＸ８９０はバッファを含むことができ、バッファレベル指示器を、レート制御のためにビットレート適応モジュールにフィードバックしてもよい。ＭＵＸ８９０の前または後に、圧縮ビデオ情報８９５を、ネットワークを介して伝送するために、チャネルコード化することができる。チャネルコーディングは、圧縮ビデオ情報８９５に、誤差検出（error detection）および補正データ（correction data）を適用することができる。
【００９８】
Ｃ．ビデオデコーダ
図９は、汎用ビデオデコーダシステム９００のブロック図である。デコーダシステム９００はビデオピクチャーの圧縮シーケンスのための情報９９５を受け取り、再構成されたピクチャー９０５（例えば、プログレッシブビデオフレーム、インターレースビデオフレーム、またはインターレースビデオフレームのフィールド）を含む出力を生成する。ビデオデコーダの特定の実施形態は、通常、汎用デコーダ９００の変形形態または補完バージョンを使用する。
【００９９】
デコーダシステム９００は、予測ピクチャーおよびキーピクチャーを復元（decompress）する。提示の目的で、図９は、キーピクチャーがデコーダシステム９００を通過する経路および前方予測ピクチャーの経路を示してある。デコーダシステム９００の構成要素の多くは、キーピクチャーおよび予測ピクチャーの両方を復元するために使用される。これらの構成要素が実行する厳密な動作は、復元される情報のタイプによって変わる可能性がある。
【０１００】
ＤＥＭＵＸ（デマルチプレクサ）９９０は、圧縮ビデオシーケンスのための情報９９５を受け取り、エントロピーデコーダ９８０に対して受取った情報を利用可能にする。ＤＥＭＵＸ９９０には、ジッターバッファ（jitter buffer）とともに、その他のバッファも含めることができる。ＤＥＭＵＸ９９０の前または後に、圧縮ビデオ情報をチャネルデコードして、誤差検出および補正についての処理をすることができる。
【０１０１】
エントロピーデコーダ９８０は、エントロピーコード化された量子化データに加えて、エントロピーコード化された副次情報（例えば、動き情報９１５、量子化ステップサイズ）をデコードして、通常、エンコーダにおいて実行されるエントロピーエンコーディングの逆を適用する。エントロピーデコーディング技法としては、算術デコーディング、差分デコーディング、ハフマンデコーディング、ランレングスデコーディング、ＬＺデコーディング、ディクショナリデコーディング、および前記の組合せを挙げることができる。エントロピーデコーダ９８０は、通常、様々な種類の情報（例えば、ＤＣ係数、ＡＣ係数、異なる種類の副次情報）に対して、様々なデコーディング技法を使用し、特定のデコーディング技法の範囲内の複数コードテーブルの中から選択をすることができる。
【０１０２】
デコーダ９００は、例えば、動きベクトルに対する１つまたは複数の予測子（predictors）を計算すること、差分動きベクトルをエントロピーデコーディングすること、およびデコードされた差分動きベクトルと動きベクトルを再構成する予測子とを結合することによって、動き情報９１５をデコードする。
【０１０３】
動き補償器９３０は、動き情報９１５を１つまたは複数の参照ピクチャー９２５に適用して、再構成中のピクチャー９０５の予測９３５を形成する。例えば、動き補償器９３０は、１つまたは複数のマクロブロック動きベクトルを使用して、参照ピクチャー（複数を含む）９２５内のマクロブロック（複数を含む）を見つける。１つまたは複数のピクチャー記憶装置（例えば、ピクチャー記憶装置９２０、９２２）は、参照ピクチャーとして使用するために、先に再構成されたピクチャーを格納する。一般に、Ｂピクチャーは複数の参照ピクチャー（例えば、少なくとも１つの、時間的に以前の参照ピクチャー、および少なくとも１つの、時間的に将来の参照ピクチャー）を有する。したがって、デコーダシステム９００は、複数の参照ピクチャーのために、別個のピクチャー記憶装置９２０、９２２を使用することができる。動き補償器９３０は、ピクセル、１／２ピクセル、１／４ピクセル、またはその他の増分によって、動きを補償することが可能であり、また動き補償の精度を、ピクチャー毎またはその他に基づいて切り替えることが可能である。動き補償器９３０は、参照ピクチャーピクセル内挿のタイプ間で（例えば、双三次と双一次の間で）、フレーム毎またはその他に基づいて切り換えをすることができる。動き補償の精度は、水平および垂直方向において、同じでも異なってもよい。代替的に、動き補償は、別のタイプの動き補償を適用する。動き補償器による予測は、完全であることはまれであるので、デコーダ９００も、予測残差を再構成する。
【０１０４】
逆量子化器９７０は、エントロピーデコードされたデータを逆量子化する。一般に、逆量子化器は、ピクチャー毎またはその他に基づいて、変わるステップサイズを有するエントロピーデコードされたデータに、均一な、スカラー逆量子化を適用する。代替的に、逆量子化器は、別のタイプの逆量子化をデータに適用して、例えば、不均一量子化、ベクトル量子化、または非適応量子化の後に再構成するか、または逆周波数変換を使用しないデコーダシステム内で、空間ドメインデータを直接的に逆量子化する。
【０１０５】
逆周波数変換器９６０は、量子化された周波数ドメインデータを空間ドメインビデオ情報に変換する。ブロックベースビデオピクチャーに対して、逆周波数変換器９６０は、逆ＤＣＴ［ＩＤＣＴ］、ＩＤＣＴの変形形態、またはその他の逆ブロック変換を、周波数変換係数のブロックに適用して、キーピクチャーまたは予測ピクチャーに対する、ピクセルデータまたは予測残差データをそれぞれ生成する。代替的に、逆周波数変換器９６０は、逆フーリエ変換などの別の従来型逆周波数変換を適用するか、またはウェーブレット合成またはサブバンド合成を使用する。この逆周波数変換器９６０は、８×８、８×４、４×８、４×４、またはその他の大きさの逆周波数変換を適用することができる。
【０１０６】
予測ピクチャーに対して、デコーダ９００は、再構成された予測残差９４５と動き補償予測９３５を結合して、再構成ピクチャー９０５を形成する。デコーダが、後続の動き補償のために再構成ピクチャー９０５を必要とするときには、ピクチャー記憶装置（例えば、ピクチャー記憶装置９２０）の一方または両方が、次のピクチャーの予測に使用する再構成ピクチャー９０５をバッファリングする。いくつかの実施形態においては、デコーダ９００は、デブロッキングフィルタを再構成ピクチャーに適用して、ピクチャー内の不連続およびその他のアーチファクトを適応スムージングする。
【０１０７】
ＩＩＩ．ビットプレーンコーディング（Bitplane Coding）
いくつかの実施形態において、マクロブロック専用（macroblock-specific）バイナリ情報を、ビットプレーンとしてコード化して、ビットストリーム内でマクロブロックよりも高いレベル（例えば、フレームレベル、フィールドレベル、またはその他のレベル）において伝送することができる。エンコーダは、例えば、ある種のデータをエンコーディングするための、異なるコーディングモードの相対的効率に基づいて、いくつかのコーディングモードの中から選択をすることができる。ビットプレーンコーディング技法は、フレームまたはフィールド内のマクロブロック間の、ある種のバイナリ情報の空間的相関を利用する。マクロブロックレベルのシグナリングと組み合わせると、記載の技法およびツールは、マクロブロック専用情報の柔軟で効率的なシグナリングを提供する。
【０１０８】
いくつかの実現形態においては、エンコーダは、ビットプレーンコーディングのために、以下に示すような、ＩＮＶＥＲＴ、ＩＭＯＤＥおよびＤＡＴＡＢＩＴＳ構文要素を使用する。
【０１０９】
ＩＮＶＥＲＴ要素は、ビットプレーンが、０に等しいビットまたは１に等しいビットをさらに有するかどうかを指示する１ビットコードである。ＩＮＶＥＲＴおよびビットプレーンコーディングモードに応じて、デコーダは、デコードされたビットプレーンを反転して、オリジナルを再生することができる。ＩＭＯＤＥ要素は、ビットプレーンコーディングモードを表わすＶＬＣである。一般に、より頻繁に発生するコーディングモードをエンコードするために、より短いコードが使用される。ＤＡＴＡＢＩＴＳ要素は、ＩＭＯＤＥ要素にシグナリングされたコーディングモードに基づく記号（symbols）のエントロピーコード化されたストリームである。例えば、フレームまたはフィールド内のマクロブロックに対するバイナリ情報は、２次元配列としてコード化され、フレームヘッダまたはフィールドヘッダに入れて伝送することができる。各配列の大きさは、ｒｏｗＭＢ×ｃｏｌＭＢであり、ここでｒｏｗＭＢおよびｃｏｌＭＢは、それぞれ、そのフレームまたはフィールドにおけるマクロブロックの行および列の数である。
【０１１０】
いくつかの実施形態においては、各配列は、７つのビットプレーンコーディングモードの１つにおける、（例えば、ラスタースキャン順序においてマクロブロックを表わす）１組の連続するビットとしてコード化されている。この７つのビットプレーンコーディングモードについて以下に述べる。
【０１１１】
ロースキップモード（Ｒｏｗ−ｓｋｉｐ  Ｍｏｄｅ）
ロースキップモードにおいては、ＲＯＷＳＫＩＰ要素は、ビットプレーンの各行にＲＯＷＢＩＴＳ要素が存在するかどうかを指示する。ビットプレーンの行の値全体がゼロの場合には、ＲＯＷＳＫＩＰ＝０であり、ＲＯＷＢＩＴＳはスキップされる。行において少なくとも１つの値がゼロでない場合には、ＲＯＷＳＫＩＰ＝１であり、ＲＯＷＢＩＴＳは行における各値に対して１ビットを含む。
【０１１２】
カラムスキップモード（Ｃｏｌｕｍｎ−ｓｋｉｐ  ｍｏｄｅ）
カラムスキップモードにおいて、ＣＯＬＵＭＮＳＫＩＰ要素は、ビットプレーン内の各列に対してＣＯＬＵＭＮＢＩＴＳ要素が存在するかどうかを指示する。ビットプレーンの列の値全体がゼロの場合には、ＣＯＬＵＭＮＳＫＩＰ＝０であり、ＣＯＬＵＭＮＢＩＴＳはスキップされる。列において少なくとも１つの値がゼロでない場合には、ＣＯＬＵＭＮＳＫＩＰ＝１であり、ＣＯＬＵＭＮＢＩＴＳは列における各値に対して１ビットを含む。
【０１１３】
ノーマル２モード（Ｎｏｒｍａｌ−２  ｍｏｄｅ）
ノーマル２モードにおいて、ｒｏｗＭＢ×ｃｏｌＭＢが奇数の場合には、最初の記号は、その最初の記号の値に一致する１ビットで表わされ、後続の記号はＶＬＣテーブルを使用してペアにしてエンコードされる。
【０１１４】
ノーマル６モード（Ｎｏｒｍａｌ−６  ｍｏｄｅ）
ノーマル６モードにおいて、ビットプレーンは、２×３タイルまたは３×２タイルにおける６個のピクセルの群としてエンコードされる。ビットプレーンは、１組のタイリングルール（tiling rule）を使用して、２×３タイルおよび３×２タイルの群に分けられて、残りのピクセル（それがある場合）は、ロースキップモードおよびカラムスキップモードの変形形態を使用してエンコードされる。配列サイズが３×２または２×３の倍数である場合には、ビットプレーンは６要素長方形タイルのみでタイリングされる。３×２「垂直」タイルは、ｒｏｗＭＢが３の倍数でありｃｏｌＭＢが３の倍数でない場合にのみ使用される。その他の場合には、２×３「水平」タイルが使用される。６要素長方形タイルは、可変長コードおよび固定長コードの組合せを用いてエンコードされる。
【０１１５】
Ｄｉｆｆ−２およびＤｉｆｆ−６モード
いずれかの差分モード（Ｄｉｆｆ−２またはＤｉｆｆ−６）が使用されている場合には、「差分ビット」のビットプレーンは、対応するノーマルモード（それぞれ、ノーマル２またはノーマル６）を使用してデコードされる。差分ビットは、原ビットプレーンを再生するために使用される。
【０１１６】
再生成プロセスは、バイナリアルファベット（binary alphabet）についての２−Ｄ  ＤＰＣＭである。場所（ｉ，ｊ）におけるビットを再生成するために、予測子ｂｐ（ｉ，ｊ）が（位置（ｉ，ｊ）におけるビットｂ（ｉ，ｊ）から）次のように生成される。
【０１１７】
【数１】
2011139547.tif 000003
【０１１８】
差分コーディングモードでは、ＩＮＶＥＲＴに基づくビット単位変換プロセスは実行されない。しかしながら、ＩＮＶＥＲＴフラグは、様々な機能で使用されて、上述の予測子の導出に対する記号Ａの値を指示する。より具体的には、ＩＮＶＥＲＴ＝０の場合には、Ａ＝０であり、ＩＮＶＥＲＴ＝１の場合には、Ａ＝１となる。ビットプレーンの実際の値は、予測子とデコードされた差分ビット値との排他的論理輪（ＸＯＲ）をとることによって得られる。上記の式において、ｂ｛ｉ，ｊ｝は、最終デコーディング（すなわち、Ｎｏｒｍ−２／Ｎｏｒｍ−６を行った後に、その予測子との差分ＸＯＲ）後のｉ，ｊ番目の位置におけるビットである。
【０１１９】
Ｒａｗモード
Ｒａｗモードは、マクロブロック専用バイナリ情報をバイナリ記号当り１ビットでエンコードする。Ｒａｗモードビットは、非圧縮ビットプレーンにおいて、フレームレベルまたはフィールドレベルにおいてエンコードできるが、マクロブロックに対する残りのマクロブロックレベル情報と同じ、ビットストリーム内の同一レイヤにおいて、各マクロブロックに対して、一度に一つずつエンコードすることもできる。
【０１２０】
その他のモードは、フレームレベルまたはフィールドレベルにおいてビットプレーンをエンコードし、エンコーディング中にフレームまたはフィールドを通過する第２の経路を使用する。例えば、エンコーダは、第１の経路におけるマクロブロックレベルにおいて、各マクロブロックに対するバイナリ情報（例えば、ＡＣ予測状態）を収集し、第２の経路におけるフレームレベルまたはフィールドレベルにおいて、そのマクロブロック専用情報をエンコードする。しかしながら、ローレイテンシ（low-latency）状態においては、第２の経路を回避することが有利であることがある。このように、バイナリ情報のコーディングをフレームレベルまたはフィールドレベルからマクロブロックレベルに切り替える機能によって、さらなる柔軟性が得られる。
【０１２１】
いくつかの実現形態において、エンコーダは、スライスコード化（slice-coded）フレームに対してＲａｗモードを使用する。スライスは、マクロブロックの１つまたは複数の連続行を表す。空間予測に関して、スライス内のマクロブロックの１番目の行は、通常、ピクチャー内のマクロブロックの第１番目の行として扱われる。スライスを用いる場合には、通常、ピクチャーレイヤにおいてビットプレーンとして表わされる情報は、マクロブロックレイヤにおいてｒａｗモードでシグナリングされて、その結果、各マクロブロックは、それ自体のローカル情報を伝える。
【０１２２】
上述のビットプレーンコーディングモードに加えて、その他のビットプレーンコーディングモードを使用することができる。例えば、エンコーダは、任意の大きさのピクセル群としてビットプレーンをエンコードすることができる。ノーマル６モードの変形形態においては、ビットプレーン内のバイナリ情報が予測可能なパターン内に配置されている場合などに、エンコーダは、「最大長方形（largest rectangles）」モードを利用することができる。エンコーダは、様々なタイリング規則の組を用いて、ビットプレーンを任意の大きさのタイルにグループ化することができる。次いで、可変長コードおよび固定長コードの組合せ、またはその他のコーディングアレンジメントを用いて、これらのタイルをエンコードすることができる。
【０１２３】
いくつかの実現形態における、ビットプレーンコーディングについてのさらなる情報は、以下に示す、ＩＶ、ＶおよびＶＩ節を参照されたい。
【０１２４】
ＩＶ．インターレースフレームコード化ピクチャーのためのフィールド／フレームタイプシグナリングにおける革新
記載の実施形態には、インターレースフレームコード化ピクチャー（例えば、インターレースＩフレーム、インターレースＰフレーム、インターレースＢフレームなど）におけるフィールド／フレームタイプ情報をシグナリングする技法およびツールが含まれる。例えば、記載の技法およびツールには、フレームレベルビットプレーンコーディングまたはマクロブロックレベルコーディングのいずれかを使用して、フィールド／フレームタイプ情報をエンコードすることのできるエンコーダが含まれる。デコーダは、対応するデコーディングを実行する。記載の技法およびツールは、他の技法およびツールと互いに組み合わせて、または単独で使用することができる。
【０１２５】
一般に、大きいフィールド間動き（inter-field motion）が存在する場合には、フィールドコード化マクロブロックがより効果的であり、動きが小さい場合には、フレームコード化マクロブロックがより効果的である。エンコーダは、所与のマクロブロックに対してフィールド／フレームタイプを選択し、それがフレームコード化マクロブロックであるか、またはフィールドコード化マクロブロックであるかをビットストリーム中で指示することが可能である。マクロブロックのフィールド／フレームタイプは、マクロブロックの内部編成を指示する。再び図６を参照すると、フィールドコーディングにおいて、インターレースマクロブロック６１０は、輝度ブロック内のすべてのトップフィールド走査線（例えば、偶数走査線０，２，．．．１４）が、フィールドコード化マクロブロック６２０の上半分に配置されるとともに、輝度ブロック内のすべてのボトムフィールド走査線（例えば、奇数走査線１，３，．．．１５）が、フィールドコード化マクロブロックの下半分に配置されるように、並べ替えられている。フレームコード化マクロブロックでは、インターレースマクロブロック６１０と同様に、マクロブロックの端から端まで、トップフィールド走査線およびボトムフィールド走査線が交互にある。クロミナンスブロックは、フィールドコード化マクロブロックおよびフレームコード化マクロブロックの両方に対してインターレースの状態のままとなる。
【０１２６】
したがって、いくつかの実現形態においては、エンコーダは、いくつかのコーディングモードからマクロブロック当り１ビットモードを選択し、フレーム内の各マクロブロックに対して、単独ビット（例えば、ＦＩＥＬＤＴＸフラグ）をマクロブロックレベルで送り、そのマクロブロックに対して、そのマクロブロックがフィールドコード化されているか、またはフレームコード化されているかをデコーダに明示的に知らせる、モード決定がなされる。マクロブロックレベルのマクロブロック当り１ビットモード、またはフレームレベルの圧縮ビットプレーンモードのいずれかを選択することができることによって、そのような情報をエンコーディングするための、さらなる柔軟性が得られる。
【０１２７】
特に、マクロブロックレベルシグナリングは、フィールド／フレームコーディングモード決定ビットが、フレームの一部であって全部ではないマクロブロックに対してシグナリングされる場合に、効率的である。例えば、インターレースＰフレームにおいて、フィールド／フレーム決定ビットのシグナリングは、イントラマクロブロックに対して行われるが、（フィールド／フレーム決定ビットがその他の方法でシグナリングされる）インターマクロブロックに対しては行われない。そのような文脈におけるビットプレーンコーディングは、外部情報をシグナリングすることとなる。他方で、フレームによっては、各マクロブロックが、フィールド／フレーム決定ビットを有する。フィールド／フレームタイプビットを一緒にグループ化して、それらをフレームレベルビットプレーンにコード化することによって、フレーム内のマクロブロック間に存在する可能性のある、フィールド／フレームタイプにおける空間的相関を利用することができる。
【０１２８】
例えば、図１２は、ビットプレーンコーディングまたはマクロブロックレベルコーディングのいずれかを使用する、マクロブロックのためのフィールド／フレームタイプ情報をシグナリングするための技法１２００を示すものである。エンコーダは、１２１０においてコーディングモードを選択する。１２２０において、コーディングモードがビットプレーンコーディングモードである場合に、エンコーダは、１２３０において、フィールド／フレームタイプ情報をビットプレーンとしてシグナリングする。そうでない場合には、１２４０において、エンコーダは、（１２５０において）マクロブロックに対するフィールド／フレーム決定を指示する信号ビットを送るかどうかを決定する。１２６０において、シグナリング決定を行うべきマクロブロックがまだある場合には、エンコーダは、それらのマクロブロックに対する信号ビットを送るかどうかを決定する。デコーダは、対応するデコーディングを実行する。
【０１２９】
例えば、一実施形態において、ＦＩＥＬＤＴＸは、全インターレースＩフレームマクロブロックおよびインターレースＢＩフレームマクロブロックに存在するとともに、インターレースＰおよびＢフレーム内のイントラコード化マクロブロックに存在する、１ビット構文要素である。ＦＩＥＬＤＴＸ＝１は、マクロブロックがフィールドコード化されていることを指示し、ＦＩＥＬＤＴＸ＝０は、マクロブロックがフレームコード化されていることを指示する。ＦＩＥＬＤＴＸビットは、ビットストリーム内のフレームレベルにおいてビットプレーンコード化されるか、または、一部または全部のマクロブロックに対して、マクロブロック当り１ビットベースで、マクロブロックレベルにおいてシグナリングされることができる。例えば、インターレースＩフレームおよびインターレースＢＩフレームにおいて、ＦＩＥＬＤＴＸビットは、ビットストリーム内のフレームレベルにおいて、またはマクロブロックレベルにおいてマクロブロック当り１ビットベースで、ビットプレーンコード化される。インターレースＰフレームおよびインターレースＢフレームにおいて、ＦＩＥＬＤＴＸビットは、マクロブロック当り１ビットベースで、マクロブロックレベルにおいて、イントラマクロブロックに対して送られる。
【０１３０】
代替的に、フィールド／フレームタイプは、異なる方法でシグナリングされる。例えば、フィールド／フレームタイプは、異なるサイズまたはアレンジメントのビットストリーム要素を用いて、（例えば、マクロブロックレベルにおいて）シグナリングすることができる。別の代替形態として、フィールド／フレームタイプは、マクロブロックレベル以外のフレームレベルより下のレベル（例えば、スライスレベルまたはその他のレベル）において、シグナリングすることが可能である。別の代替形態として、フィールド／フレームタイプは、イントラコード化フレーム内の全てよりは少ないマクロブロックに対して、マクロブロックレベル（またはその他のレベル）において選択的にシグナリングすることができる。
【０１３１】
Ｖ．プログレッシブピクチャーおよびインターレースピクチャーのためのＡＣ予測シグナリングにおける革新
記載の実施形態には、プログレッシブピクチャーおよびインターレースピクチャー（例えば、プログレッシブＩフレーム、インターレースＩフレームなど）において、ＡＣ予測情報をシグナリングするための技法およびツールが含まれる。例えば、記載の技法およびツールは、ビットプレーンコーディングを使用してフレームまたはフィールド内のマクロブロックにおけるＡＣ予測の使用をシグナリングするための技法およびツールを含む。記載の技法およびツールは、他の技法およびツールと互いに組み合わせて使用するか、または単独で使用することができる。
【０１３２】
例えば、エンコーダ／デコーダは、エントロピーコーディングの前に、ＡＣ係数を予測する。エンコーダは、現行ブロック内のＡＣ係数値から、隣接する予測ブロック内の対応するＡＣ係数値を差し引き、ＡＣ係数差分を得る。この差分は、次いでエントロピーエンコードされる。予測方向に応じて、予測子ブロックは、直上のブロック、または現行ブロックの左側のブロックである。再び図１Ｂを参照すると、上端予測には、現行ブロックの直上のブロック１７５におけるＡＣ係数の上端行１７７が、現行ブロック１２５内のＡＣ係数の上端行１２９に対する予測子として使用される。左予測には、現行ブロックの直左のブロック１３５内のＡＣ係数の最左端列１３７が、現行ブロック１２５におけるＡＣ係数の最左端列の予測子として使用される。一実施形態において、ＤＣ係数予測のために選択された予測方向が、ＡＣ係数予測用の予測方向として使用される。代替的に、ＡＣ予測の方向もシグナリングされる。
【０１３３】
ＡＣ予測の正確な仕組みは、異なるピクチャータイプに対して異なってもよい。その最も簡単な形態において、ＡＣ予測は、隣接ブロックの上端行または左列のＡＣ係数を、係数予測子として単に使用することを含む。より複雑なＡＣ予測においては、係数予測子は、現行ブロックおよび隣接ブロックにおける量子化のレベルに関する係数によって倍率変更される。代替的に、エンコーダおよびデコーダは、その他の仕組みを備えるＡＣ予測を使用する。
【０１３４】
ブロックが指定の予測方向に存在しない場合には、左端列または上端行における、すべての７つのＡＣ係数に対する予測値は、ゼロに設定される。例えば、予測方向が上方であり、現行ブロックが上端行にある場合には、現行ブロックの上端行における予測ＡＣ係数のそれぞれは、ゼロに設定されるが、この理由は、上方向には隣接ブロックがないからである。予測された行または列におけるＡＣ係数は、現行ブロックにおける対応するデコードされたＡＣ係数（これは差分である）に加算されて、完全に再構成されて量子化された変換係数ブロックを生成する。
【０１３５】
フレームまたはフィールド内のすべてのマクロブロックに対するＡＣ係数予測を実行することは効率的でない可能性がある。すなわち予測は、いくつかのマクロブロックにおいて有効ではないことになる。そのために、エンコーダ／デコーダは、フレームまたはフィールド内の個々のマクロブロックに対して、ＡＣ予測が使用可能か、または使用不可能かを指示するシグナリングを使用する。単一ビットの情報は、各マクロブロックに対して、マクロブロックレベルにおいて送られ、デコーダに、ＡＣ予測がマクロブロックで使用されているかどうかを明示的に通知する。しかしながら、マクロブロック当り１ビットを送ることによってのみＡＣ予測をシグナリングするエンコーダ／デコーダは、フィールドまたはフレーム内のマクロブロックに対するＡＣ予測状態において生じ得る空間的な相関を利用することができない。
【０１３６】
したがって、いくつかの実現形態においては、エンコーダ／デコーダは、個々のマクロブロックに対するＡＣ予測情報を一緒にグループ化して、その情報をビットプレーンとして（例えばフレームレベル、フィールドレベル、またはその他のマクロブロックレベルより上のレベルにおいて）コード化することによって、フレームまたはフィールド内の、そのような空間的な相関を利用する。一実施形態において、ビットプレーンは、フレームレベル／フィールドレベルビットプレーンＡＣＰＲＥＤである。ＡＣＰＲＥＤビットプレーンについては、以下のＶＩＩ節でさらに詳細を述べる。
【０１３７】
図１３は、ＡＣ予測情報のビットプレーンコーディングまたはデコーディングについての技法１３００を示す。１３１０において、エンコーダ／デコーダは、複数の利用可能なコーディングモードの群からコーディングモードを選択する。１３２０において、エンコーダ／デコーダは、選択されたコーディングモードに従ってビットプレーンを処理する。そのビットプレーンは、ビデオフレーム内のマクロブロックがＡＣ予測を使用してエンコードされているかどうかを意味するバイナリ情報を含む。
【０１３８】
記載のビットプレーンコーディング技法は、マクロブロックレベルのマクロブロック当り１ビットコーディングと組み合わせて使用することができる。例えば、一実施形態において、ＡＣＰＲＥＤ構文要素は、マクロブロックレイヤにおいてシグナリングされた場合に、ＡＣ予測がそのマクロブロックのブロックに対して使用されているかどうかを指示する。ＡＣＰＲＥＤ＝１の場合に、マクロブロックのデコードされたブロック内のＡＣ係数は、予測子ブロックにおける係数に基づく差分値として取り扱われる。マクロブロックレベルＡＣＰＲＥＤビットストリーム要素については、以下のＶＩＩ節にさらに詳細に述べる。
【０１３９】
代替的に、ＡＣ予測情報は、異なる方法でシグナリングされる。例えば、ＡＣ予測情報は、異なるサイズまたはアレンジメントのビットストリーム要素でシグナリングすることができる。別の代替形態として、ＡＣ予測情報は、フレームレベルまたはフィールドレベル以外のマクロブロックレベルより上方のレベル（例えば、スライスレベルまたはその他の何らかのレベル）において、ビットプレーンにエンコードすることができる。別の代替形態として、ＡＣ予測情報は、イントラコード化フレーム内における全部よりも少ないマクロブロックに対して、マクロブロックレベル（またはその他のレベル）において選択的にシグナリングすることが可能である。ビットプレーンコーディング（または何らかの他のコーディング技法）は、マクロブロックレベルにおいてシグナリングされていないマクロブロックに対してフィールド／フレームタイプをシグナリングするために、フレームレベル（またはその他のレベル）において使用されることがある。
【０１４０】
ＶＩ．組合せ実施形態（Combined Implementations）
ビットストリーム構文、セマンティクス、およびデコーダに対する詳細な組合せ実施形態を、主な組合せ実施形態とわずかに異なる代替組合せ実施形態に加えて、ここで説明する。
【０１４１】
Ａ．ビットストリーム構文（Bitstream Syntax）
様々な組合せ実施形態において、データは、複数のレイヤ（例えば、シーケンス、エントリーポイント、フレーム、フィールド、スライス、マクロブロック、ブロックおよび／またはサブブロックの各レイヤ）を有するビットストリームの形態で表わされる。
【０１４２】
構文図において、矢印経路は、構文要素の可能な流れを示している。四角の境界線で示す構文要素は、固定長構文要素を指示し、角の丸い境界線で示すものは、可変長構文要素を指示し、角の丸い二重の境界線で示すものは、より簡単な構文要素で構成された構文要素（例えば、ビットプレーン）を指示する。固定長構文要素は、構文要素の長さが構文要素自体におけるデータに依存しない構文要素と定義される。固定長構文要素の長さは、一定であるか、または構文フローにおける先のデータによって決まる。レイヤ図における低レイヤ（例えば、フレームレイヤ図内のマクロブロックレイヤ）は、二重の四角形で表示してある。
【０１４３】
シーケンスレベル要素は、圧縮ビデオピクチャーのシーケンスをデコードするために使用される。シーケンスレベルデータは、他のレベル（例えば、エントリーポイントレベル、フレームレベル、マクロブロックレベルなど）における要素の解釈または存在に影響を与える可能性がある。一般に、エントリーポイントは、デコードがデコーディングを開始することのできる、ビットストリーム（例えば、Ｉフレームまたはその他のキーフレーム）内の位置をマーキングする。言い換えると、ビットストリーム内のエントリーポイントの前のピクチャーは、そのエントリーポイントの後のピクチャーをデコードする上で必要ではない。エントリーポイントヘッダは、コーディング制御パラメータの変化（例えば、エントリーポイントの後のフレームに対する、圧縮ツールの使用許可または使用禁止）をシグナリングするために使用することができる。
【０１４４】
プログレッシブＩフレームについて、フレームレベルビットストリーム要素を図１４に示す。（プログレッシブＢＩフレームに対するフレームレベルビットストリーム要素は、プログレッシブＩフレームのものと同じである。）各フレームに対するデータは、フレームヘッダと、それに続く（イントラマクロブロックに対する）マクロブロックレイヤのデータから構成されている。プログレッシブＩフレームについてのマクロブロックレベルビットストリーム要素を図１５に示す。
【０１４５】
インターレースＩフィールドおよび／またはＢＩフィールドを備えるインターレースビデオフレームについて、フレームレベルビットストリーム要素を図１６にす。各フレームに対するデータは、フレームヘッダとそれに続くフィールドレイヤ（フィールド毎の反復「ＦｉｅｌｄＰｉｃＬａｙｅｒ」要素として示す）から構成されている。インターレースＩフィールドのためのフィールドヘッダを構成するビットストリーム要素を図１７に示す。（インターレースＢフィールドに対するフィールドレベルビットストリーム要素は、インターレースＩフィールドに対するものと同じである。）インターレースＩフィールドおよびインターレースＢフィールドのためのマクロブロックレイヤを構成するビットストリーム要素は、プログレッシブＩフレームにおけるマクロブロックのためのものと同じである。
【０１４６】
インターレースＩフレーム、Ｐフレーム、およびＢフレームについて、フレームレベルビットストリーム要素を、図１８、１９および２０にそれぞれ示す。（インターレースＢＩフレームに対するフレームレベルビットストリーム要素は、インターレースＩフレームに対するものと同じである。）インターレースＩフレーム、Ｐフレーム、およびＢフレームにおいて、各フレームのデータは、フレームヘッダとそれに続くマクロブロックレイヤのための（イントラタイプ、または様々なインタータイプのマクロブロックのための）データから構成されている。インターレースＩフレーム、ＰフレームおよびＢフレームのためのマクロブロックレイヤを構成するビットストリーム要素を、図２１、２２、および２３にそれぞれ示す。（インターレースＢＩフレームにおけるマクロブロックのためのビットストリーム要素は、インターレースＩフレームにおけるマクロブロックのためのものと同じである。）
以下の節では、フレーム、フィールド、およびマクロブロックの各レイヤにおいて選択されたビットストリーム要素について説明する。選択されたビットストリーム要素を、特定のレイヤの文脈において説明するが、いくつかのビットストリーム要素は、複数のレイヤにおいて使用することができる。
【０１４７】
１．選択されたフレームおよびフィールドレイヤ要素
図１４、１６、１８、１９、および２０は、それぞれ、プログレッシブＩフレーム／プログレッシブＢＩフレーム、インターレースＩフィールドまたはＢＩフィールドを有するフレーム、インターレースＩフレーム／インターレースＢＩフレーム、インターレースＰフレーム、およびインターレースＢフレームについてフレームレベルビットストリーム構文を示す図である。図１７は、インターレースＩフィールドについて、フィールドレベルビットストリーム構文を示す図である。いくつかの要素（例えば、ＡＣＰＲＥＤビットプレーン）は、インターレースＢＩフィールドに対するフィールドレベルビットストリーム構文中、および場合によってはその他のピクチャータイプに対する構文中にも存在する。具体的なビットストリーム要素を以下に説明する。
【０１４８】
フレームコーディングモード（ＦＣＭ）（可変サイズ）
ＦＣＭは、ピクチャーコーディングタイプを指示するために使用される、可変長コードワード［ＶＬＣ：ｖａｒｉａｂｌｅ  ｌｅｎｇｔｈ  ｃｏｄｅｗｏｒｄ］である。ＦＣＭは以下の表１に示す、フレームコーディングモードに対する値をとる。
【０１４９】
【表１】
2011139547.tif 000004
【０１５０】
フィールドピクチャータイプ（ＦＰＴＹＰＥ）（３ビット）
ＦＰＴＹＰＥは、インターレースＩフィールドおよび／またはインターレースＢＩフィールド、および場合によってはその他の種類のフィールドを含むフレーム用のフレームヘッダに含まれる３ビット構文要素である。ＦＰＴＹＰＥは、以下に示す表２に従って、インターレースビデオフレームにおけるフィールドタイプの異なる組合せに対する値をとる。
【０１５１】
【表２】
2011139547.tif 000005
【０１５２】
ピクチャータイプ（ＰＴＹＰＥ）（可変サイズ）
ＰＴＹＰＥは、インターレースＰフレームおよびインターレースＢフレーム（またはインターレースＩフレームなどの、その他の種類のインターレースフレーム）用のフレームヘッダに含まれる可変サイズ構文要素である。ＰＴＹＰＥは、以下に示す表３に従って、異なるフレームタイプに対する値をとる。
【０１５３】
【表３】
2011139547.tif 000006
【０１５４】
ＰＴＹＰＥが、フレームがスキップされたことを指示する場合には、そのフレームは、Ｐフレームとして扱われる。このＰフレームはその参照フレームと同じである。スキップされたフレームの再構成は、概念的には参照フレームをコピーするのと同等である。スキップされたフレームとは、このフレームに対して更なるデータが伝送されないことを意味する。
【０１５５】
フィールド変換ビットプレーン（ＦＩＥＬＤＴＸ）（可変サイズ）
フレームレベルまたはフィールドレベルにおいて、ＦＩＥＬＤＴＸは、インターレースＩフレーム内のマクロブロックが、フレームコード化されているか、またはフィールドコード化されているかを指示するビットプレーンである。ＦＩＥＬＤＴＸについては、以下および上記のＩＶ節においてより詳細に説明される。
【０１５６】
ＡＣ予測ビットプレーン（ＡＣＰＲＥＤ）（可変サイズ）
プログレッシブＩフレームおよびＢフレームについて、ならびにインターレースＩフレームおよびＢＩフレームについて、すべてのマクロブロックに存在することになる１ビットＡＣＰＲＥＤ構文要素が、フレーム内の各マクロブロックに対するＡＣ予測状態を指示するビットプレーンコード化構文要素を使用して、一緒にコード化される。デコードされたビットプレーンは、各マクロブロックに対するＡＣ予測状態を１ビット値として表わす。ＡＣＰＲＥＤビットプレーンについては、以下および上記のＶ節において詳細に説明される。
【０１５７】
３．選択されたマクロブロックレイヤ要素
図１５、２１、２２、および２３は、それぞれ、組合せ実施形態において、プログレッシブＩフレーム／インターレースＩフィールド／インターレースＢＩフィールド、インターレースＩフレーム／インターレースＢＩフレーム、インターレースＰフレーム、およびインターレースＢフレーム内のマクロブロックに対するマクロブロックレベルビットストリーム構文を示す図である。具体的なビットストリーム要素を以下に記述する。マクロブロックに対するデータは、マクロブロックヘッダとそれに続くブロックレイヤデータで構成されている。マクロブロックレイヤ内のビットストリーム要素（例えば、ＡＣＰＲＥＤ、ＦＩＥＬＤＴＸなど）は、その他のピクチャータイプに対するマクロブロックにも存在することがある。
【０１５８】
ＡＣ予測フラグ（ＡＣＰＲＥＤ）（１ビット）
組合せ実施形態において、ＡＣＰＲＥＤ構文要素は、すべてのプログレッシブＩフレーム、インターレースＩフレーム、インターレースＢフレーム、インターレースＩフィールド、およびインターレースＢＩフィールドのマクロブロック、ならびにインターレースＰフィールド、インターレースＢフィールド、インターレースＰフレーム、およびインターレースＢフレーム内のイントラマクロブロック中に存在する。ＡＣＰＲＥＤは、また、プログレッシブＰフレームおよびＢフレーム内のマクロブロック内にも存在する。マクロブロックレベルにおいて、ＡＣＰＲＥＤは、マクロブロックにおけるブロックがＡＣ予測を使用してコード化されるかどうかを指定する１ビット構文要素である。ＡＣＰＲＥＤ＝０は、ＡＣ予測が使用されていないことを指示する。ＡＣＰＲＥＤ＝１は、ＡＣ予測が使用されていることを指示する。ＡＣＰＲＥＤは、上記Ｖ節においてさらに詳細に説明されているように、フレームレベルビットプレーンとしてエンコードすることもできる。
【０１５９】
フィールド変換フラグ（ＦＩＥＬＤＴＸ）（１ビット）
ＦＩＥＬＤＴＸは、インターレースＩフレーム、インターレースＢＩフレーム、インターレースＰフレーム、およびインターレースＢフレームにおけるイントラコード化マクロブロック内に存在する１ビット構文である。この構文要素は、マクロブロックがフレームコード化されているか、またはフィールドコード化（基本的に、マクロブロックの内部編成）されているかを指示する。ＦＩＥＬＤＴＸ＝１は、マクロブロックはフィールドコード化されていることを指示する。そうでない場合には、マクロブロックはフレームコード化されている。インターコード化マクロブロックにおいては、この構文要素は、マクロブロックレベルビットストリーム要素ＭＢＭＯＤＥから推測することができる。ＦＩＥＬＤＴＸは、上記ＩＶ節でより詳細に説明されているように、フレームレベルビットプレーンとしてエンコードすることもできる。
【０１６０】
Ｂ．ビットプレーンコーディング（Bitplane Coding）
スキップビットなどのマクロブロック専用バイナリ情報は、マクロブロック当り１つのバイナリ記号としてエンコードすることができる。例えば、マクロブロックがスキップされるかどうかは、１ビットでシグナリングすることができる。これらの場合に、フィールドまたはフレーム内のすべてのマクロブロックを、ビットプレーンとしてコード化して、フィールドヘッダまたはフレームヘッダに入れて伝送することができる。この規則に対する１つの例外は、ビットプレーンコーディングモードがＲａｗモードに設定されている場合であり、この場合には、各マクロブロックに対する状態は、記号当り１ビットでコード化されており、マクロブロックレベルにおいて他のマクロブロックレベル構文要素と共に伝送される。
【０１６１】
フィールド／フレームレベルビットプレーンコーディングは、２次元バイナリ配列をエンコードするために使用される。各配列の大きさは、ｒｏｗＭＢ×ｃｏｌＭＢであり、ここでｒｏｗＭＢおよびｃｏｌＭＢは、それぞれ、問題のフィールドまたはフレームにおけるマクロブロックの行および列の数である。ビットストリーム内で、各配列は、１組の連続するビットとしてコード化される。７つのモードの内の１つが、各配列をエンコードするために使用される。その７つのモードとは、以下のものである。
【０１６２】
１．Ｒａｗモード：情報が記号当り１ビットとしてコード化され、ＭＢレベル構文の一部として伝送される。  
２．ノーマル２モード：２つの記号が一緒にコード化される。  
３．差分２モード：ビットプレーンの差分コード化、続いて２つの残留記号を一緒にコード化。  
４．ノーマル６モード：６つの記号が一緒にコード化される。  
５．差分６モード：ビットプレーンの差分コード化、続いて６つの残留記号を一緒にコード化。  
６．ロースキップモード：設定ビットのない行をシグナリングする１ビットスキップ。  
７．カラムスキップモード：設定ビットのない列をシグナリングする１ビットスキップ。
【０１６３】
フィールドまたはフレームレベルにおけるビットプレーンに対する構文要素は、次のシーケンス、すなわちＩＮＶＥＲＴ、ＩＭＯＤＥ、およびＤＡＴＡＢＩＴＳである。
【０１６４】
逆フラグ（ＩＮＶＥＲＴ）
ＩＮＶＥＲＴ構文要素は１ビット値であり、これは、設定される場合には、ビットプレーンはゼロビットよりも多い設定ビットを有することを指示する。ＩＮＶＥＲＴおよびモードに応じて、デコーダは、解釈されたビットプレーンを反転して、オリジナルを再生成する。ここで留意すべきことは、ｒａｗモードが使用されている場合には、このビットの値は無視されることである。ビットプレーンのデコーディングにおけるＩＮＶＥＲＴ値の使い方を以下に示す。
【０１６５】
コーディングモード（ＩＭＯＤＥ）
ＩＭＯＤＥ構文要素は、ビットプレーンをエンコードするために使用されるコーディングモードを指示する可変長値である。表４は、ＩＭＯＤＥ構文要素をエンコードするために使用されるコードテーブルを示す。ビットプレーンをデコードする際の、ＩＭＯＤＥ値の使い方について、以下に述べる。
【０１６６】
【表４】
2011139547.tif 000007
【０１６７】
ビットプレーンコーディングビット（ＤＡＴＡＢＩＴＳ）
ＤＡＴＡＢＩＴＳ構文要素は、ビットプレーンに対する記号のストリームをエンコードする、可変サイズ構文要素である。ビットプレーンをエンコードするために使用される方法は、ＩＭＯＤＥの値によって決まる。７つのコーディングモードについて、以下の節で説明する。
【０１６８】
Ｒａｗモード
このモードにおいて、ビットプレーンは、（例えば、ラスター走査順序で）記号当り１ビットとしてエンコードされ、マクロブロックレイヤの一部として送られる。代替的に、情報は、フィールドレベルまたはフレームレベルにおいて、ｒａｗモードでコード化され、ＤＡＴＡＢＩＴＳの長さは、ｒｏｗＭＢ×ｃｏｌＭＢビットである。
【０１６９】
ノーマル２モード
ｒｏｗＭＢ×ｃｏｌＭＢが奇数の場合に、第１の記号はｒａｗでエンコードされる。後続の記号は、自然走査順序で、ペア毎にエンコードされる。表５におけるバイナリＶＬＣテーブルが、記号ペアをエンコードするために使用される。
【０１７０】
【表５】
2011139547.tif 000008
【０１７１】
Ｄｉｆｆ−２モード
ノーマル２法は、上述のビットプレーンを生成するために使用され、Ｄｉｆｆ−１演算は、以下に記述するようにビットプレーンに適用される。
【０１７２】
ノーマル６モード
Ｎｏｒｍ−６およびＤｉｆｆ−６モードにおいて、ビットプレーンは６個のピクセルの群にエンコードされる。これらのピクセルは、２×３または３×２のタイルにグループ分けされる。ビットプレーンは、１組の規則を用いて最大限タイリングされ、残りのピクセルは、ロースキップモードおよびカラムスキップモードの変形形態を用いてエンコードされる。ｒｏｗＭＢが３の倍数であって、ｃｏｌＭＢが３の倍数でない場合にのみ、２×３の「垂直」タイルが使用される。そうでない場合には、３×２の「水平」タイルが使用される。図２４Ａは、２×３「垂直」タイルの簡略化した実施例を示している。図２４Ｂおよび２４Ｃは、３×２「水平」タイルの簡略化した実施例を示しており、このタイルに対して、細長い黒い長方形は１ピクセル幅であり、ロースキップおよびカラムスキップコーディングを使用してエンコードされる。ピクチャーの上端および左端に沿って線形タイルを備える、図２４Ｃに示すようにタイリングされた面に対して、タイルのコード化順序は、次のパターンに従う。６要素タイルが最初にエンコードされ、カラムスキップおよびロースキップでエンコードされた線形タイルがそれに続く。配列サイズが、２×３または３×２の倍数の場合に、後者の線形タイルは存在せず、ビットプレーンは完全にタイリングされる。
【０１７３】
６要素長方形タイルは、可変長コードおよび固定長コードの組合せを用いてコード化される。Ｎをタイル内の設定ビット数、すなわち０≦Ｎ≦６とする。Ｎ＜３の場合には、タイルをエンコードするためにＶＬＣを使用する。Ｎ＝３の場合は、固定長エスケープコードの後に、５ビット固定長コードが続く。Ｎ＞３の場合には、別の固定長エスケープコードの後に、ＶＬＣが続く。Ｎ＞３の場合に、エスケープコードに続くＶＬＣは、Ｎ＜３の場合に、このタイルの補数のコードに使用されるＶＬＣと同一である。Ｎ＞３の場合に使用される固定長エスケープは、Ｎ＝３の場合の固定長エスケープコードとは異なる。長方形タイルは６ビットの情報を包含する。ｋをタイルに関連するコードとすると、
【０１７４】
【数２】
2011139547.tif 000009
【０１７５】
は、タイル内での自然走査順序におけるｉ番目のビットのバイナリ値である。したがって、０≦ｋ＜６４である。ＶＬＣとエスケープコードおよび固定長コードとの組合せが、ｋをシグナリングするために使用される。
【０１７６】
Ｄｉｆｆ−６モード
ノーマル６法は、上述のビットプレーンを生成するために使用され、Ｄｉｆｆ−１演算は、以下に述べるビットプレーンに適用される。
【０１７７】
ロースキップ（Ｒｏｗ−ｓｋｉｐ）モード
ロースキップコーディングモードにおいては、全ゼロ行（all-zero rows）は、１ビットオーバヘッドでスキップされる。構文は次のとおりである。各行に対して、単独ＲＯＷＳＫＩＰビットが、行がスキップされるかどうかを指示し、行がスキップされる場合には、次の行に対するＲＯＷＳＫＩＰビットが次であり、そうでない（行がスキップされない）場合には、ＲＯＷＢＩＴＳビット（行内の各マクロブロックに対して１ビット）が次となる。したがって、行全体がゼロの場合には、ゼロビットがＲＯＷＳＫＩＰ記号として送られ、ＲＯＷＢＩＴＳはスキップされる。行内に設定ビットがある場合には、ＲＯＷＳＫＩＰは１に設定され、行全体がｒａｗで送られる（ＲＯＷＢＩＴＳ）。行は、フィールドまたはフレームの上端から下端へと走査される。
【０１７８】
カラムスキップ（Ｃｏｌｕｍｎ−ｓｋｉｐ）モード
カラムスキップは、ロースキップの転置（transpose）である。列は、フィールドまたはフレームの左から右へと走査される。
【０１７９】
Ｄｉｆｆ−１：：逆差分（Inverse differential）デコーディング
いずれかの差分モード（Ｄｉｆｆ−２またはＤｉｆｆ−６）が使用される場合には、「差分ビット」のビットプレーンが、対応するノーマルモード（それぞれＮｏｒｍ−２またはＮｏｒｍ−６）を使用して、最初にデコードされる。差分ビットは、原ビットプレーンを再生成するために使用される。再生成プロセスは、バイナリアルファベットについての２Ｄ  ＤＰＣＭである。場所（ｉ，ｊ）においてビットを再生成するために、予測子ｂｐ（ｉ，ｊ）が、（位置（ｉ，ｊ）におけるビットｂ（ｉ，ｊ）から）以下のように生成される：
【０１８０】
【数３】
2011139547.tif 000010
【０１８１】
差分コーディングモードでは、ＩＮＶＥＲＴに基づくビット毎の反転プロセスは実行されない。しかしながら、ＩＮＶＥＲＴフラグは、上述の予測子の導出のための記号Ａの値を指示する、異なる機能で使用される。より具体的には、ＩＮＶＥＲＴ＝０の場合には、Ａ＝０であり、ＩＮＶＥＲＴ＝１の場合には、Ａ＝１となる。ビットプレーンの実際の値は、予測子とデコードされた差分ビット値との排他的論理和（ＸＯＲ）をとることによって得られる。上記の式において、ｂ（ｉ，ｊ）は、最終デコーディング（すなわち、Ｎｏｒｍ−２／Ｎｏｒｍ−６を実行した後に、その予測子と差分ＸＯＲ演算）後のｉ，ｊ番目の位置におけるビットである。
【０１８２】
本発明の原理を、様々な実施形態を参照して記述し説明したが、様々な実施形態は、その原理から逸脱することなく、アレンジメントおよび詳細において修正することが可能であることが認識されるであろう。ここで理解すべきことは、本明細書において記述したプログラム、プロセス、または方法は、特に断らない限りは、いかなる特定のタイプのコンピューティング環境にも関係せず、またそれに限定されるものでもないことである。様々なタイプの汎用または専用のコンピューティング環境を使用できるとともに、それによって、本明細書に記述した教示に従って演算を実行することができる。ソフトウエアにおいて示した実施形態の要素は、ハードウエアに実装してもよく、またその逆も可能である。
【０１８３】
本発明の原理を応用することのできる多くの可能な実施形態を考慮して、添付のクレームおよびその均等物の範囲と趣旨に入る実施形態のすべてを、本発明として主張するものである。
【図１Ａ】
2011139547.tif 000011
【図１Ｂ】
2011139547.tif 000012
【図２】
2011139547.tif 000013
【図３】
2011139547.tif 000014
【図４】
2011139547.tif 000015
【図５】
2011139547.tif 000016
【図６】
2011139547.tif 000017
【図７】
2011139547.tif 000018
【図８】
2011139547.tif 000019
【図９】
2011139547.tif 000020
【図１０】
2011139547.tif 000021
【図１１Ａ】
2011139547.tif 000022
【図１１Ｂ】
2011139547.tif 000023
【図１１Ｃ】
2011139547.tif 000024
【図１２】
2011139547.tif 000025
【図１３】
2011139547.tif 000026
【図１４】
2011139547.tif 000027
【図１５】
2011139547.tif 000028
【図１６】
2011139547.tif 000029
【図１７】
2011139547.tif 000030
【図１８】
2011139547.tif 000031
【図１９】
2011139547.tif 000032
【図２０】
2011139547.tif 000033
【図２１】
2011139547.tif 000034
【図２２】
2011139547.tif 000035
【図２３】
2011139547.tif 000036
【図２４Ａ】
2011139547.tif 000037
【図２４Ｂ】
2011139547.tif 000038
【図２４Ｃ】
2011139547.tif 000039