(57)【特許請求の範囲】
【請求項１】
ビデオ符号化方法であって、
エンコーダを介して、フレームに含まれるピクセル値をバイアスするためのオフセット値を適用せず、かつ、サブピクセルデータを発生させてデータを補間するためのシーケンス・フィルタを使用して現在のフレームを第１のパスとして符号化することと、
参照フレームリスト内のすべての参照フレームが前記現在のフレームから同数のフレームだけ離れている場合、
エンコーダを介して、ピクチャ順序コンテンツ（ＰＯＣ）重み付け参照フレームに対して、オフセット値を適用せず、かつ、前記シーケンス・フィルタを使用して前記現在のフレームをＰＯＣパスとして符号化することと、
前記ＰＯＣパスのレートひずみ特性が前記第１のパスのレートひずみ特性よりも低いレートひずみコスト値を規定する場合、
前記ＰＯＣパスの前記レートひずみ特性を変数として記憶することと、
前記第１のパスの前記レートひずみ特性が、前記ＰＯＣパスの前記レートひずみ特性よりも低いレートひずみコスト値を規定する場合、前記第１のパスの前記レートひずみ特性を前記変数として記憶することと、
参照フレームリスト内のすべての参照フレームが前記現在のフレームから同数のフレームだけ離れていない場合、前記第１のパスの前記レートひずみ特性を前記変数として記憶することと、
エンコーダを介して、前記参照フレームに基づいて、又は、前記ＰＯＣパスのレートひずみ特性が前記第１のパスのレートひずみ特性よりも低いレートひずみコスト値を規定する場合には前記ＰＯＣ重み付け参照フレームに基づいて、前記現在のフレームに対してフレーム・フィルタとオフセット値とを計算することと、
エンコーダを介して、計算された前記フレーム・フィルタを使用し、かつ、前記計算されたオフセット値を適用して前記現在のフレームを第２のパスとして符号化することと、
前記第２のパスのレートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定する場合、
前記第２のパスの前記レートひずみ特性を前記変数として記憶することと、
量子化ステップを１だけ増加させ、計算された前記フレーム・フィルタを使用し、かつ、前記計算されたオフセット値を適用して、前記現在のフレームを第３のパスとして符号化することと、
前記第２のパスの前記レートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定しない場合、前記量子化ステップを１だけ増加させ、オフセット値を適用せず、かつ、前記シーケンス・フィルタを使用して前記現在のフレームを前記第３のパスとして符号化することと、
前記第３のパスのレートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定する場合、前記第３のパスにおいて使用されたフィルタ及びオフセット構成をビット・ストリームに加算することと、
前記第３のパスの前記レートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定しない場合、前記変数を生成するために使用されたフィルタ及びオフセット構成を前記ビット・ストリームに加算することと、
エンコーダを介して、次のフレームを符号化するために過去のフレームに基づいてシーケンス・フィルタを計算することと、
を備えるビデオ符号化方法。
【請求項２】
ビデオデータを符号化する装置であって、
フレームに含まれるピクセル値をバイアスするためのオフセット値を適用せず、かつ、サブピクセルデータを発生させてデータを補間するためのシーケンス・フィルタを使用して現在のフレームを第１のパスとして符号化することと、
参照フレームリスト内のすべての参照フレームが前記現在のフレームから同数のフレームだけ離れている場合、
ピクチャ順序コンテンツ（ＰＯＣ）重み付け参照フレームに対して、オフセット値を適用せず、かつ、前記シーケンス・フィルタを使用して前記現在のフレームをＰＯＣパスとして符号化することと、
前記ＰＯＣパスのレートひずみ特性が前記第１のパスのレートひずみ特性よりも低いレートひずみコスト値を規定する場合、
前記ＰＯＣパスの前記レートひずみ特性を変数として記憶することと、
前記第１のパスの前記レートひずみ特性が、前記ＰＯＣパスの前記レートひずみ特性よりも低いレートひずみコスト値を規定する場合、前記第１のパスの前記レートひずみ特性を前記変数として記憶することと、
参照フレームリスト内のすべての参照フレームが前記現在のフレームから同数のフレームだけ離れていない場合、前記第１のパスの前記レートひずみ特性を前記変数として記憶することと、
前記参照フレームに基づいて、又は、前記ＰＯＣパスのレートひずみ特性が前記第１のパスのレートひずみ特性よりも低いレートひずみコスト値を規定する場合には前記ＰＯＣ重み付け参照フレームに基づいて、前記現在のフレームに対してフレーム・フィルタとオフセット値とを計算することと、
計算された前記フレーム・フィルタを使用し、かつ、前記計算されたオフセット値を適用して前記現在のフレームを第２のパスとして符号化することと、
前記第２のパスのレートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定する場合、
前記第２のパスの前記レートひずみ特性を前記変数として記憶することと、
量子化ステップを１だけ増加させ、計算された前記フレーム・フィルタを使用し、かつ、前記計算されたオフセット値を適用して、前記現在のフレームを第３のパスとして符号化することと、
前記第２のパスの前記レートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定しない場合、前記量子化ステップを１だけ増加させ、オフセット値を適用せず、かつ、前記シーケンス・フィルタを使用して前記現在のフレームを前記第３のパスとして符号化することと、
前記第３のパスのレートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定する場合、前記第３のパスにおいて使用されたフィルタ及びオフセット構成をビット・ストリームに加算することと、
前記第３のパスの前記レートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定しない場合、前記変数を生成するために使用されたフィルタ及びオフセット構成を前記ビット・ストリームに加算することと、
次のフレームを符号化するために過去のフレームに基づいてシーケンス・フィルタを計算することと、
を行うビデオ・エンコーダを備える装置。
【請求項３】
実行時に、ビデオ・エンコーダ内のプロセッサに、
フレームに含まれるピクセル値をバイアスするためのオフセット値を適用せず、かつ、サブピクセルデータを発生させてデータを補間するためのシーケンス・フィルタを使用して現在のフレームを第１のパスとして符号化させ、
参照フレームリスト内のすべての参照フレームが前記現在のフレームから同数のフレームだけ離れている場合、
ピクチャ順序コンテンツ（ＰＯＣ）重み付け参照フレームに対して、オフセット値を適用せず、かつ、前記シーケンス・フィルタを使用して前記現在のフレームをＰＯＣパスとして符号化させ、
前記ＰＯＣパスのレートひずみ特性が前記第１のパスのレートひずみ特性よりも低いレートひずみコスト値を規定する場合、
前記ＰＯＣパスの前記レートひずみ特性を変数として記憶させ、
前記第１のパスの前記レートひずみ特性が、前記ＰＯＣパスの前記レートひずみ特性よりも低いレートひずみコスト値を規定する場合、前記第１のパスの前記レートひずみ特性を前記変数として記憶させ、
参照フレームリスト内のすべての参照フレームが前記現在のフレームから同数のフレームだけ離れていない場合、前記第１のパスの前記レートひずみ特性を前記変数として記憶させ、
前記参照フレームに基づいて、又は、前記ＰＯＣパスのレートひずみ特性が前記第１のパスのレートひずみ特性よりも低いレートひずみコスト値を規定する場合には前記ＰＯＣ重み付け参照フレームに基づいて、前記現在のフレームに対してフレーム・フィルタとオフセット値とを計算させ、
計算された前記フレーム・フィルタを使用し、かつ、前記計算されたオフセット値を適用して前記現在のフレームを第２のパスとして符号化させ、
前記第２のパスのレートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定する場合、
前記第２のパスの前記レートひずみ特性を前記変数として記憶させ、
量子化ステップを１だけ増加させ、計算された前記フレーム・フィルタを使用し、かつ、前記計算されたオフセット値を適用して、前記現在のフレームを第３のパスとして符号化させ、
前記第２のパスの前記レートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定しない場合、前記量子化ステップを１だけ増加させ、オフセット値を適用せず、かつ、前記シーケンス・フィルタを使用して前記現在のフレームを前記第３のパスとして符号化させ、
前記第３のパスのレートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定する場合、前記第３のパスにおいて使用されたフィルタ及びオフセット構成をビット・ストリームに加算させ、
前記第３のパスの前記レートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定しない場合、前記変数を生成するために使用されたフィルタ及びオフセット構成を前記ビット・ストリームに加算させ、
次のフレームを符号化するために過去のフレームに基づいてシーケンス・フィルタを計算させる、コンピュータ可読媒体上に符号化された命令を備えるコンピュータ可読記録媒体。
【請求項４】
ビデオデータを符号化する装置であって、
エンコーダを介して、フレームに含まれるピクセル値をバイアスするためのオフセット値を適用せず、かつ、サブピクセルデータを発生させてデータを補間するためのシーケンス・フィルタを使用して現在のフレームを第１のパスとして符号化するための手段と、
参照フレームリスト内のすべての参照フレームが前記現在のフレームから同数のフレームだけ離れている場合、
エンコーダを介して、ピクチャ順序コンテンツ（ＰＯＣ）重み付け参照フレームに対して、オフセット値を適用せず、かつ、前記シーケンス・フィルタを使用して前記現在のフレームをＰＯＣパスとして符号化するための手段と、
前記ＰＯＣパスのレートひずみ特性が前記第１のパスのレートひずみ特性よりも低いレートひずみコスト値を規定する場合、
前記ＰＯＣパスの前記レートひずみ特性を変数として記憶するための手段と、
前記第１のパスの前記レートひずみ特性が、前記ＰＯＣパスの前記レートひずみ特性よりも低いレートひずみコスト値を規定する場合、前記第１のパスの前記レートひずみ特性を前記変数として記憶するための手段と、
参照フレームリスト内のすべての参照フレームが前記現在のフレームから同数のフレームだけ離れていない場合、前記第１のパスの前記レートひずみ特性を前記変数として記憶するための手段と、
エンコーダを介して、前記参照フレームに基づいて、又は、前記ＰＯＣパスのレートひずみ特性が前記第１のパスのレートひずみ特性よりも低いレートひずみコスト値を規定する場合には前記ＰＯＣ重み付け参照フレームに基づいて、前記現在のフレームに対してフレーム・フィルタとオフセット値とを計算するための手段と、
エンコーダを介して、計算された前記フレーム・フィルタを使用し、かつ、前記計算されたオフセット値を適用して前記現在のフレームを第２のパスとして符号化するための手段と、
前記第２のパスのレートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定する場合、
前記第２のパスの前記レートひずみ特性を前記変数として記憶するための手段と、
量子化ステップを１だけ増加させ、計算された前記フレーム・フィルタを使用し、かつ、前記計算されたオフセット値を適用して、前記現在のフレームを第３のパスとして符号化するための手段と、
前記第２のパスの前記レートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定しない場合、前記量子化ステップを１だけ増加させ、オフセット値を適用せず、かつ、前記シーケンス・フィルタを使用して前記現在のフレームを前記第３のパスとして符号化するための手段と、
前記第３のパスのレートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定する場合、前記第３のパスにおいて使用されたフィルタ及びオフセット構成をビット・ストリームに加算するための手段と、
前記第３のパスの前記レートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定しない場合、前記変数を生成するために使用されたフィルタ及びオフセット構成を前記ビット・ストリームに加算するための手段と、
エンコーダを介して、次のフレームを符号化するために過去のフレームに基づいてシーケンス・フィルタを計算するための手段と、
を備える装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、デジタルビデオ・コーディングに関し、より詳細には、ビデオ・コーディングにおいて使用される予測データにオフセットを適用する技法に関する。
【０００２】
本出願は、その内容全体が参照により本明細書に組み込まれる、２００８年９月２３日に出願された米国仮出願第６１／０９９，５０９号の利益を主張する。
【背景技術】
【０００３】
デジタルビデオ機能は、デジタルテレビ、デジタル直接ブロードキャスト・システム、ワイヤレス・ブロードキャスト・システム、携帯情報端末（ＰＤＡ）、ラップトップまたはデスクトップ・コンピュータ、デジタルカメラ、デジタル記録デバイス、ビデオゲームデバイス、ビデオゲーム機、セルラー電話または衛星無線電話などを含む、広範囲にわたるデバイスに組み込むことができる。デジタルビデオ・デバイスは、ＭＰＥＧ−２、ＭＰＥＧ−４、またはＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４、Part10、Advanced Video Coding（ＡＶＣ）によって定義された規格に記載されたビデオ圧縮技法などのビデオ圧縮技法を実装して、デジタルビデオ情報をより効率的に送信および受信する。ビデオ圧縮技法では、ビデオ・シーケンスに固有の冗長性を低減または除去するために空間的予測および／または時間的予測を実行することができる。
【０００４】
ブロックベースのインター・コーディングは、時間的予測を利用して、ビデオ・シーケンスの連続したコード化ユニットのビデオ・ブロック間の時間冗長性を低減または除去する非常に有用なコーディング技法である。コード化ユニットは、ビデオ・フレーム、ビデオ・フレームのスライス、ピクチャのグループ、またはビデオ・ブロックの別の定義されたユニットを備えることができる。インター・コーディングの場合、ビデオ・エンコーダは、動き推定および動き補償を実行して、２つ以上の隣接するコード化ユニットの対応するビデオ・ブロックの移動を追跡する。動き推定は、１つまたは複数の参照フレームまたは他のコード化ユニット中の対応する予測ビデオ・ブロックに対するビデオ・ブロックの変位を示す動きベクトルを発生する。動き補償は、動きベクトルを使用して、参照フレームまたは他のコード化ユニットから予測ビデオ・ブロックを発生する。動き補償の後、コーディングされている元のビデオ・ブロックから予測ビデオ・ブロックを減算することによって、残差ビデオ・ブロックが形成される。
【０００５】
ビデオ・エンコーダはまた、残差ブロックの通信に関連するビットレートをさらに低減するために、変換、量子化およびエントロピー・コーディング・プロセスを適用することができる。変換技法は、離散コサイン変換（ＤＣＴ）または概念的に同様のプロセスを備えることができる。代替的に、ウェーブレット変換、整数変換、または他のタイプの変換を使用することができる。ＤＣＴプロセスでは、一例として、ピクセル値のセットが、周波数領域におけるピクセル値のエネルギーを表すことができる変換係数に変換される。量子化は、変換係数に適用され、一般に、任意の所与の変換係数に関連するビット数を制限するプロセスを必要とする。エントロピー・コーディングは、一連の量子化された変換係数を一括して圧縮する１つまたは複数のプロセスを備える。エントロピー・コーディングの例には、限定はしないが、コンテンツ適応型可変長コーディング（ＣＡＶＬＣ）およびコンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）がある。
【０００６】
コード化ビデオ・ブロックは、予測ブロックを生成または識別するために使用できる予測情報と、コーディングされているブロックと予測ブロックとの間の差を示す残差データブロックとによって表される。予測情報は、予測データブロックを識別するために使用される１つまたは複数の動きベクトルを備えることができる。動きベクトルが与えられれば、デコーダは、残差をコーディングするために使用された予測ブロックを再構成することができる。したがって、残差ブロックのセットおよび動きベクトルのセット（場合によっては、いくつかの追加のシンタックス）が与えられれば、デコーダは、最初に符号化されたビデオ・フレームを再構成することが可能である。連続したビデオ・フレームまたは他のタイプのコード化ユニットはしばしば極めて類似しているので、動き推定および動き補償に基づくインター・コーディングは極めて良好な圧縮を達成することができる。符号化ビデオ・シーケンスは、残差データのブロック、動きベクトル、場合によっては他のタイプのシンタックスを備えることができる。
【０００７】
インター・コーディングにおいて達成できる圧縮のレベルを改善するために補間技法および外挿技法が開発された。この場合、ビデオ・ブロックをコーディングするために使用される、動き補償中に発生された予測データを、動き推定に使用されるビデオ・フレームまたは他のコード化ユニットのビデオ・ブロックのピクセルから補間または外挿することができる。補間または外挿は、予測ハーフ・ピクセル値（ハーフペル）および予測クォーター・ピクセル値（クォーターペル）を発生するためにしばしば実行される。そのような補間または外挿は、しばしば、予測フレームの実際のビデオ・ブロックまたはビデオ・コーディングにおいて使用される他のコード化ユニットよりもさらに、コーディングされているビデオ・ブロックに類似している予測ブロックを発生する。
【発明の概要】
【０００８】
本開示では、ビデオ・コーディングの動き補償プロセス中に双方向予測ビデオ・ブロックにオフセットを加算するために、エンコーダおよびデコーダによって実行される技法について説明する。本開示の一態様によれば、エンコーダは、各コード化ユニットについて複数のオフセット値を発生し、コード化ユニットのビデオ・ブロックをコーディングするために使用される予測データにオフセット値を適用することができる。特に、エンコーダは、整数ピクセル・ロケーションと、異なるサブ整数ピクセル・ロケーションとについて、異なるオフセット値を定義することができる。その予測データに関連するピクセル・ロケーションに基づいて、対応する予測データに適切なオフセット値を適用することができる。サブ整数ピクセル・ロケーションは、整数ピクセル・ロケーションにおけるデータに基づいて補間または外挿される、補間または外挿データに対応し得る。様々なピクセル・ロケーション（整数およびサブ整数ピクセル・ロケーション）における様々なオフセットを考慮することによって、得られたオフセット双方向予測データは、元の予測データよりも良好な圧縮を行うことができる。このようにして、本開示の技法はビデオ品質を改善することができる。たとえば、予測データへのオフセットの加算は、ビデオ・シーケンスのフレーム間の照明変化中、たとえば、閃光、暗くなる空、または他のタイプのフレーム間の照明変化などの間のコーディングを改善することができる。
【０００９】
一例では、本開示は、現在のビデオ・ブロックを符号化するための方法を提供する。本方法は、エンコーダを介して、参照データの第１のリスト内の第１の参照ビデオ・ユニットに基づいてサブ整数ピクセル位置に関連する予測値の第１のブロックを補間し、参照データの第２のリスト内の第２の参照ビデオ・ユニットに基づいてサブ整数ピクセル位置に関連する予測値の第２のブロックを補間することを備える。本方法は、エンコーダを介して、サブ整数ピクセル位置について、予測値の第１のブロックと現在のビデオ・ブロックとに基づいて第１のオフセット値を計算し、第１のオフセット値と予測値の第２のブロックとに基づいて第２のオフセット値を計算することをさらに備える。本方法は、エンコーダを介して、予測値の第１のブロックと予測値の第２のブロックと第１のオフセット値と第２のオフセット値とに基づいて、オフセット値の最終ブロックを判断することをさらに備える。本方法は、エンコーダを介して、オフセット値の最終ブロックに基づいて現在のビデオ・ブロックを符号化することをさらに備える。
【００１０】
別の例では、本開示は、ビデオデータを符号化する装置を提供する。本装置は、参照データの第１のリスト内の第１の参照ビデオ・ユニットに基づいてサブ整数ピクセル位置に関連する予測値の第１のブロックを補間し、参照データの第２のリスト内の第２の参照ビデオ・ユニットに基づいてサブ整数ピクセル位置に関連する予測値の第２のブロックを補間するビデオ・エンコーダを備える。本装置は、サブ整数ピクセル位置について、予測値の第１のブロックと現在のビデオ・ブロックとに基づいて第１のオフセット値を計算し、第１のオフセット値と予測値の第２のブロックとに基づいて第２のオフセット値を計算するビデオ・エンコーダをさらに備える。本装置は、予測値の第１のブロックと予測値の第２のブロックと第１のオフセット値と第２のオフセット値とに基づいて、オフセット値の最終ブロックを判断するビデオ・エンコーダをさらに備える。本装置は、オフセット値の最終ブロックに基づいて現在のビデオ・ブロックを符号化するビデオ・エンコーダをさらに備える。
【００１１】
さらに別の例では、本開示は、実行時に、ビデオ・エンコーダ内のプロセッサに、参照データの第１のリスト内の第１の参照ビデオ・ユニットに基づいてサブ整数ピクセル位置に関連する予測値の第１のブロックを補間させ、参照データの第２のリスト内の第２の参照ビデオ・ユニットに基づいてサブ整数ピクセル位置に関連する予測値の第２のブロックを補間させる、コンピュータ可読媒体上に符号化された命令を備えるコンピュータ可読媒体を提供する。コンピュータ可読媒体は、プロセッサに、サブ整数ピクセル位置について、予測値の第１のブロックと現在のビデオ・ブロックとに基づいて第１のオフセット値を計算させ、第１のオフセット値と予測値の第２のブロックとに基づいて第２のオフセット値を計算させる命令をさらに備える。コンピュータ可読媒体は、プロセッサに、予測値の第１のブロックと予測値の第２のブロックと第１のオフセット値と第２のオフセット値とに基づいて、オフセット値の最終ブロックを判断させる命令をさらに備える。コンピュータ可読媒体は、プロセッサに、オフセット値の最終ブロックに基づいて現在のビデオ・ブロックを符号化させる命令をさらに備える。
【００１２】
さらに別の例では、本開示は、ビデオデータを符号化する装置を提供する。本装置は、参照データの第１のリスト内の第１の参照ビデオ・ユニットに基づいてサブ整数ピクセル位置に関連する予測値の第１のブロックを補間し、参照データの第２のリスト内の第２の参照ビデオ・ユニットに基づいてサブ整数ピクセル位置に関連する予測値の第２のブロックを補間するための手段を備える。本装置は、サブ整数ピクセル位置について、予測値の第１のブロックと現在のビデオ・ブロックとに基づいて第１のオフセット値を計算し、第１のオフセット値と予測値の第２のブロックとに基づいて第２のオフセット値を計算するための手段をさらに備える。本装置は、予測値の第１のブロックと予測値の第２のブロックと第１のオフセット値と第２のオフセット値とに基づいて、オフセット値の最終ブロックを判断するための手段をさらに備える。本装置は、オフセット値の最終ブロックに基づいて現在のビデオ・ブロックを符号化するための手段をさらに備える。
【００１３】
さらに別の例では、本開示は、エンコーダを介して、オフセットを使用せずに、シーケンス・フィルタを使用して現在のフレームを第１のパスとして符号化することを備えるビデオ符号化方法を提供する。ｉｄ＝０をもつすべての参照フレームが現在のフレームから同数のフレームだけ分離されている場合、エンコーダを介して、ピクチャ順序コンテンツ（ＰＯＣ）重み付け参照フレームに対して、オフセットを使用せずに、シーケンス・フィルタを使用して現在のフレームをＰＯＣパスとして符号化する。ＰＯＣパスのレートひずみ特性が、第１のパスのレートひずみ特性よりも低いレートひずみコスト値を規定する場合、符号化のためにＰＯＣ重み付け参照フレームを使用し、ＰＯＣパスのレートひずみ特性を変数として記憶する。第１のパスのレートひずみ特性が、ＰＯＣパスのレートひずみ特性よりも低いレートひずみコスト値を規定する場合、第１のパスのレートひずみ特性を変数として記憶する。ｉｄ＝０をもつすべての参照フレームが現在のフレームから同数のフレームだけ分離されていない場合、第１のパスのレートひずみ特性を変数として記憶する。本方法は、エンコーダを介して、現在のフレームに対してフレーム・フィルタとオフセットとを計算することと、エンコーダを介して、計算されたフレーム・フィルタとオフセットとを使用して現在のフレームを第２のパスとして符号化することとをさらに備える。第２のパスのレートひずみ特性が、変数に記憶されたレートひずみ特性よりも低いレートひずみコスト値を規定する場合、第２のパスのレートひずみ特性を変数として記憶し、量子化ステップを１だけ増加させ、計算されたフレーム・フィルタとオフセットとを使用して現在のフレームを第３のパスとして符号化する。第２のパスのレートひずみ特性が、変数に記憶されたレートひずみ特性よりも低いレートひずみコスト値を規定しない場合、量子化ステップを１だけ増加させ、オフセットを使用せずに、シーケンス・フィルタを使用して現在のフレームを第３のパスとして符号化する。第３のパスのレートひずみ特性が、変数に記憶されたレートひずみ特性よりも低いレートひずみコスト値を規定する場合、第３のパスの符号化をビット・ストリームに加算する。第３のパスのレートひずみ特性が、変数に記憶されたレートひずみ特性よりも低いレートひずみコスト値を規定しない場合、変数の符号化をビット・ストリームに加算する。本方法は、エンコーダを介して、次のフレームを符号化するためにシーケンス・フィルタを計算することをさらに備える。
【００１４】
さらに別の例では、本開示は、ビデオデータを符号化する装置を提供し、本装置は、オフセットを使用せずに、シーケンス・フィルタを使用して現在のフレームを第１のパスとして符号化するビデオ・エンコーダを備える。ｉｄ＝０をもつすべての参照フレームが現在のフレームから同数のフレームだけ分離されている場合、ビデオ・エンコーダは、ピクチャ順序コンテンツ（ＰＯＣ）重み付け参照フレームに対して、オフセットを使用せずに、シーケンス・フィルタを使用して現在のフレームをＰＯＣパスとして符号化する。ＰＯＣパスのレートひずみ特性が、第１のパスのレートひずみ特性よりも低いレートひずみコスト値を規定する場合、ビデオ・エンコーダは、符号化するためにＰＯＣ重み付け参照フレームを使用し、ＰＯＣパスのレートひずみ特性を変数として記憶する。第１のパスのレートひずみ特性が、ＰＯＣパスのレートひずみ特性よりも低いレートひずみコスト値を規定する場合、ビデオ・エンコーダは第１のパスのレートひずみ特性を変数として記憶する。ｉｄ＝０をもつすべての参照フレームが現在のフレームから同数のフレームだけ分離されていない場合、ビデオ・エンコーダは第１のパスのレートひずみ特性を変数として記憶する。ビデオ・エンコーダは、現在のフレームに対してフレーム・フィルタとオフセットとを計算し、ビデオ・エンコーダは、計算されたフレーム・フィルタとオフセットとを使用して現在のフレームを第２のパスとして符号化する。第２のパスのレートひずみ特性が、変数に記憶されたレートひずみ特性よりも低いレートひずみコスト値を規定する場合、ビデオ・エンコーダは、第２のパスのレートひずみ特性を変数として記憶し、ビデオ・エンコーダは、量子化ステップを１だけ増加させ、計算されたフレーム・フィルタとオフセットとを使用して現在のフレームを第３のパスとして符号化する。第２のパスのレートひずみ特性が、変数に記憶されたレートひずみ特性よりも低いレートひずみコスト値を規定しない場合、ビデオ・エンコーダは、量子化ステップを１だけ増加させ、オフセットを使用せずに、シーケンス・フィルタを使用して現在のフレームを第３のパスとして符号化する。第３のパスのレートひずみ特性が、変数に記憶されたレートひずみ特性よりも低いレートひずみコスト値を規定する場合、ビデオ・エンコーダは第３のパスの符号化をビット・ストリームに加算する。第３のパスのレートひずみ特性が、変数に記憶されたレートひずみ特性よりも低いレートひずみコスト値を規定しない場合、ビデオ・エンコーダは変数の符号化をビット・ストリームに加算する。ビデオ・エンコーダは、次のフレームを符号化するためにシーケンス・フィルタを計算する。
【００１５】
さらに別の例では、本開示は、実行時に、ビデオ・エンコーダ内のプロセッサに、オフセットを使用せずに、シーケンス・フィルタを使用して現在のフレームを第１のパスとして符号化させる、コンピュータ可読媒体上に符号化された命令を備えるコンピュータ可読媒体を提供する。ｉｄ＝０をもつすべての参照フレームが現在のフレームから同数のフレームだけ分離されている場合、命令は、プロセッサに、ピクチャ順序コンテンツ（ＰＯＣ）重み付け参照フレームに対して、オフセットを使用せずに、シーケンス・フィルタを使用して現在のフレームをＰＯＣパスとして符号化させる。ＰＯＣパスのレートひずみ特性が、第１のパスのレートひずみ特性よりも低いレートひずみコスト値を規定する場合、命令は、プロセッサに、符号化するためにＰＯＣ重み付け参照フレームを使用させ、命令は、プロセッサに、ＰＯＣパスのレートひずみ特性を変数として記憶させる。第１のパスのレートひずみ特性が、ＰＯＣパスのレートひずみ特性よりも低いレートひずみコスト値を規定する場合、命令は、プロセッサに、第１のパスのレートひずみ特性を変数として記憶させる。ｉｄ＝０をもつすべての参照フレームが現在のフレームから同数のフレームだけ分離されていない場合、命令は、プロセッサに、第１のパスのレートひずみ特性を変数として記憶させる。命令は、プロセッサに、現在のフレームに対してフレーム・フィルタとオフセットとを計算させ、命令は、プロセッサに、計算されたフレーム・フィルタとオフセットとを使用して現在のフレームを第２のパスとして符号化させる。第２のパスのレートひずみ特性が、変数に記憶されたレートひずみ特性よりも低いレートひずみコスト値を規定する場合、命令は、プロセッサに、第２のパスのレートひずみ特性を変数として記憶させ、命令は、プロセッサに、量子化ステップを１だけ増加させ、計算されたフレーム・フィルタとオフセットとを使用して現在のフレームを第３のパスとして符号化させる。第２のパスのレートひずみ特性が、変数に記憶されたレートひずみ特性よりも低いレートひずみコスト値を規定しない場合、命令は、プロセッサに、量子化ステップを１だけ増加させ、オフセットを使用せずに、シーケンス・フィルタを使用して現在のフレームを第３のパスとして符号化させる。第３のパスのレートひずみ特性が、変数に記憶されたレートひずみ特性よりも低いレートひずみコスト値を規定する場合、命令は、プロセッサに、第３のパスの符号化をビット・ストリームに加算させる。第３のパスのレートひずみ特性が、変数に記憶されたレートひずみ特性よりも低いレートひずみコスト値を規定しない場合、命令は、プロセッサに、変数の符号化をビット・ストリームに加算させる。命令は、プロセッサに、次のフレームを符号化するためにシーケンス・フィルタを計算させる。
【００１６】
さらに別の例では、本開示は、ビデオデータを符号化する装置を提供する。本装置は、エンコーダを介して、オフセットを使用せずに、シーケンス・フィルタを使用して現在のフレームを第１のパスとして符号化するための手段を備える。本装置は、ｉｄ＝０をもつすべての参照フレームが現在のフレームから同数のフレームだけ分離されている場合、エンコーダを介して、ピクチャ順序コンテンツ（ＰＯＣ）重み付け参照フレームに対して、オフセットを使用せずに、シーケンス・フィルタを使用して現在のフレームをＰＯＣパスとして符号化するための手段を備える。本装置は、ＰＯＣパスのレートひずみ特性が、第１のパスのレートひずみ特性よりも低いレートひずみコスト値を規定する場合、符号化のためにＰＯＣ重み付け参照フレームを使用するための手段と、ＰＯＣパスのレートひずみ特性を変数として記憶するための手段とを備える。本装置は、第１のパスのレートひずみ特性が、ＰＯＣパスのレートひずみ特性よりも低いレートひずみコスト値を規定する場合、第１のパスのレートひずみ特性を変数として記憶するための手段を備える。本装置は、ｉｄ＝０をもつすべての参照フレームが現在のフレームから同数のフレームだけ分離されていない場合、第１のパスのレートひずみ特性を変数として記憶するための手段を備える。本装置は、エンコーダを介して、現在のフレームに対してフレーム・フィルタとオフセットとを計算するための手段と、エンコーダを介して、計算されたフレーム・フィルタとオフセットとを使用して現在のフレームを第２のパスとして符号化するための手段とをさらに備える。本装置は、第２のパスのレートひずみ特性が、変数に記憶されたレートひずみ特性よりも低いレートひずみコスト値を規定する場合、第２のパスのレートひずみ特性を変数として記憶するための手段を備える。本装置は、量子化ステップを１だけ増加させ、計算されたフレーム・フィルタとオフセットとを使用して現在のフレームを第３のパスとして符号化するための手段をさらに備える。本装置は、第２のパスのレートひずみ特性が、変数に記憶されたレートひずみ特性よりも低いレートひずみコスト値を規定しない場合、量子化ステップを１だけ増加させ、オフセットを使用せずに、シーケンス・フィルタを使用して現在のフレームを第３のパスとして符号化するための手段を備える。本装置は、第３のパスのレートひずみ特性が、変数に記憶されたレートひずみ特性よりも低いレートひずみコスト値を規定する場合、第３のパスの符号化をビット・ストリームに加算するための手段を備える。本装置は、第３のパスのレートひずみ特性が、変数に記憶されたレートひずみ特性よりも低いレートひずみコスト値を規定しない場合、変数の符号化をビット・ストリームに加算するための手段を備える。本装置は、エンコーダを介して、次のフレームを符号化するためにシーケンス・フィルタを計算するための手段をさらに備える。
【００１７】
本開示の１つまたは複数の態様の詳細について添付の図面および以下の説明において述べる。本開示で説明する技法の他の特徴、目的、および利点は、これらの説明および図面、ならびに特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１８】
【図１】ビデオ符号化および復号システムを示す例示的なブロック図。
【図２】本開示に一致するビデオ・エンコーダの例を示すブロック図。
【図３】本開示に一致するビデオ・デコーダの一例を示すブロック図。
【図４】予測ビデオ・ブロックのピクセルを備えることができる整数ピクセルおよび様々なサブ整数ピクセルを示す概念図。
【図５】本開示に一致するビデオ・エンコーダによってビデオ・ブロックを符号化する例示的な方法を示すフローチャート。
【図６Ａ】本開示に一致するＢスライスの最適なレートひずみを達成するためにフィルタとオフセットとの構成を最適化する方法を示すフローチャート。
【図６Ｂ】本開示に一致するＢスライスの最適なレートひずみを達成するためにフィルタとオフセットとの構成を最適化する方法を示すフローチャート。
【図６Ｃ】本開示に一致するＢスライスの最適なレートひずみを達成するためにフィルタとオフセットとの構成を最適化する方法を示すフローチャート。
【発明を実施するための形態】
【００１９】
本開示では、ビデオ・コーディングの動き補償プロセス中に双方向予測ビデオ・ブロックにオフセットを加算するために、エンコーダおよびデコーダによって実行される技法について説明する。双方向予測ビデオ・ブロックは、双方向符号化ブロックの符号化または復号において使用される予測ブロックを指す。双方向予測ビデオ・ブロックは、予測データの２つの異なるセットを識別する少なくとも２つの異なる動きベクトルに基づいて発生される。本開示は、双方向予測ビデオ・ブロックにオフセットを導入するか、またはさもなければ加算する技法を提供する。
【００２０】
本開示の一態様によれば、エンコーダは、各コード化ユニットについて複数のオフセット値を発生し、コード化ユニットのビデオ・ブロックをコーディングするために使用される予測データにオフセット値を適用することができる。特に、エンコーダは、整数ピクセル・ロケーションと、異なるサブ整数ピクセル・ロケーションとについて、異なるオフセット値を定義することができる。その予測データに関連するピクセル・ロケーションに基づいて、対応する予測データに適切なオフセット値を適用することができる。サブ整数ピクセル・ロケーションは、整数ピクセル・ロケーションにおけるデータに基づいて補間または外挿される、補間または外挿データに対応し得る。異なるピクセル・ロケーション（整数およびサブ整数ピクセル・ロケーション）における異なるオフセットを考慮することによって、得られたオフセット双方向予測データは、元の予測データよりも良好な圧縮を行うことができる。このようにして、本開示の技法はビデオ品質を改善することができる。たとえば、予測データへのオフセットの加算は、ビデオ・シーケンスのフレーム間の照明変化中、たとえば、閃光、暗くなる空、または他のタイプのフレーム間の照明変化などの間のコーディングを改善することができる。
【００２１】
ＩＴＵ−Ｔ  Ｈ．２６４規格は、クォーター・ピクセル解像度に対するサブ整数ピクセルの部分補間をサポートする。この場合、あらゆる整数ピクセル・ロケーションについて１５個の可能なサブ整数ピクセル・ロケーションが存在する。単方向インターモード予測（Ｐモード）の場合、コード化ユニットの各可能な整数およびサブ整数ピクセル・ロケーションについて１６個の異なるオフセット値を発生することができる。上記のように、コード化ユニットは、ビデオ・フレーム、ビデオ・フレームのスライス、またはビデオ・ブロックの単独で復号可能な別のユニットを備えることができる。オフセット値は、整数ピクセル・ロケーションについての１つのオフセット値と、異なるサブ整数ピクセル・ロケーションについてのいくつかのオフセット値とを含むことができる。たとえば、補間データについて１５個の異なるサブ整数ロケーションを可能にするＩＴＵ−Ｔ  Ｈ．２６４規格に一致して、オフセット値は、同様に、１５個の異なるサブ整数ピクセル・ロケーションについての１５個の異なるオフセット値を含むことができる。
【００２２】
本開示の技法によれば、双方向インターモード予測（Ｂモード）の場合、コード化ユニットの各可能な整数およびサブ整数ピクセル・ロケーションについて３２個の異なるオフセット値を発生することができる。すなわち、第１の参照フレームに基づいて各可能な整数およびサブ整数ピクセル・ロケーションについて１６個の異なるオフセット値を発生し、第２の参照フレームに基づいて各可能な整数およびサブ整数ピクセル・ロケーションについて１６個の異なるオフセット値を発生することができる。したがって、各可能な整数およびサブ整数ピクセル・ロケーションは、２つのオフセット、すなわち、第１の参照フレームに基づく第１のオフセットと、第２の参照フレームに基づく第２のオフセットとを有する。以下でより詳細に説明するように、その２つのオフセットを組み合わせて単一のオフセット値を形成する。その予測データに関連するピクセル・ロケーションに基づいて、いかなる予測データにも単一のオフセット値を適用することができる。特に、予測ビデオ・ブロックのピクセル値を調整するためにオフセット値を適用することができ、そのようなピクセル値調整を行うために使用されるオフセット値は、その予測ビデオ・ブロックに関連するロケーション（たとえば、整数ロケーション、またはいくつかの可能なサブピクセル・ロケーションのうちの１つ）に依存し得る。以下に示すように、「コード化ユニット」という用語は、使用されるコーディング技法に従って定義される、フレーム全体、フレームのスライス、または別の単独で復号可能なユニットなどの任意の単独で復号可能なビデオ・フレームのユニットを指す。本開示の技法は、すべてのコード化ユニットに適用可能である。
【００２３】
各コード化ユニットについて、異なるオフセット値をビット・ストリームの一部として符号化することができる。たとえば、双方向予測コード化ユニットの場合、３２個の異なるオフセット値をビット・ストリームの一部として符号化することができる。デコーダは、各コード化ユニットについて、エンコーダによって規定された異なるオフセット値を受信することができる。したがって、デコーダは、予測データを発生し、次いで、予測データとオフセット値とに基づいてオフセット予測データを再構成することができる。デコーダは、予測データとオフセット値とに基づいて発生されたオフセット予測データに基づいて、コード化ユニットのビデオデータ、たとえば、ビデオ・ブロックを復号することができる。符号化の場合と同様に、予測データへのオフセットの加算は、照明変化または他のビデオエフェクト中にビデオ品質を改善することによって、ビデオ復号を改善することができる。
【００２４】
図１は、本開示の技法を実装することができるビデオ符号化および復号システム１０の一例を示すブロック図である。図１に示すように、システム１０は、通信チャネル１５を介して符号化ビデオを宛先デバイス１６に送信するソース・デバイス１２を含む。ソース・デバイス１２および宛先デバイス１６は、広範囲のデバイスのいずれかを備えることができる。場合によっては、ソース・デバイス１２および宛先デバイス１６は、いわゆるセルラー電話または衛星無線電話のワイヤレス・ハンドセットなどのワイヤレス通信デバイス、または通信チャネル１５を介してビデオ情報を伝達することができ、その場合、通信チャネル１５がワイヤレスである任意のワイヤレスデバイスを備える。ただし、動き補償中の予測データへのオフセットの加算に関係する本開示の技法は、必ずしもワイヤレスアプリケーションまたは設定に限定されるわけではない。
【００２５】
図１の例では、ソース・デバイス１２は、ビデオソース２０と、ビデオ・エンコーダ２２と、変調器／復調器（モデム）２３と、送信機２４とを含むことができる。宛先デバイス１６は、受信機２６と、モデム２７と、ビデオ・デコーダ２８と、ディスプレイ・デバイス３０とを含むことができる。本開示によれば、ソース・デバイス１２のビデオ・エンコーダ２２は、ビデオ符号化プロセスの一部として本開示のオフセット技法のうちの１つまたは複数を適用するように構成できる。同様に、宛先デバイス１６のビデオ・デコーダ２８は、ビデオ復号プロセスの一部として本開示のオフセット技法のうちの１つまたは複数を適用するように構成できる。
【００２６】
図１の図示のシステム１０は、ビデオ符号化および復号システムの一例にすぎない。本開示のオフセット技法は、サブピクセル解像度に対する動き補償補間をサポートする任意の符号化デバイスによって実行できる。ソース・デバイス１２および宛先デバイス１６は、ソース・デバイス１２が宛先デバイス１６に送信するためのコード化ビデオデータを発生するような、コーディングデバイスの例にすぎない。デバイス１２、１６の各々がビデオ符号化構成要素および復号構成要素を含むので、デバイス１２、１６は、実質的に対称的に動作することができる。したがって、システム１０は、たとえば、ビデオ・ストリーミング、ビデオ再生、ビデオ・ブロードキャストまたはビデオ電話のためのビデオ・デバイス１２とビデオ・デバイス１６との間の一方向または双方向のビデオ送信をサポートすることができる。
【００２７】
ソース・デバイス１２のビデオソース２０は、ビデオカメラ、あらかじめキャプチャされたビデオを含んでいるビデオアーカイブ、またはビデオ・コンテンツ・プロバイダからのビデオ・フィードなど、ビデオキャプチャ・デバイスを含むことができる。さらなる代替として、ビデオソース２０はソースビデオとしてのコンピュータ・グラフィックベースのデータ、またはライブビデオとアーカイブされたビデオとコンピュータ発生ビデオとの組合せを発生することができる。場合によっては、ビデオソース２０がビデオカメラである場合、ソース・デバイス１２および宛先デバイス１６は、いわゆるカメラ付き携帯電話またはビデオ電話を形成することができる。各場合において、キャプチャされたビデオ、あらかじめキャプチャされたビデオ、またはコンピュータ発生ビデオをビデオ・エンコーダ２２によって符号化することができる。次いで、符号化ビデオ情報は、たとえば、符号分割多元接続（ＣＤＭＡ）または別の通信規格などの通信規格に従ってモデム２３によって変調され、送信機２４を介して宛先デバイス１６に送信される。モデム２３は、信号変調のために設計された様々なミキサ、フィルタ、増幅器または他の構成要素を含むことができる。送信機２４は、増幅器、フィルタ、および１つまたは複数のアンテナを含む、データを送信するために設計された回路を含むことができる。
【００２８】
宛先デバイス１６の受信機２６はチャネル１５を介して情報を受信し、モデム２７は情報を復調する。この場合も、ビデオ符号化プロセスは、動き補償中に予測データにオフセットを加算するために、本明細書で説明する技法のうちの１つまたは複数を実装することができる。ビデオ・デコーダ２８によって実行されるビデオ復号プロセスはまた、復号プロセスのその動き補償段階中にそのような技法を実行することができる。チャネル１５を介して通信される情報は、同じくビデオ・デコーダ２８によって使用される、ビデオ・エンコーダ２２によって規定されたオフセット情報を含むことができる。ディスプレイ・デバイス３０は、復号ビデオデータをユーザに対して表示し、陰極線管、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイ・デバイスなど、様々なディスプレイ・デバイスのいずれかを備えることができる。
【００２９】
図１の例では、通信チャネル１５は、無線周波数（ＲＦ）スペクトルまたは１つもしくは複数の物理的伝送線路など、任意のワイヤレスまたはワイヤード通信媒体、あるいはワイヤレスおよびワイヤード媒体の任意の組合せを備えることができる。通信チャネル１５は、ローカルエリア・ネットワーク、ワイドエリア・ネットワーク、またはインターネットなどのグローバル・ネットワークなど、パケット・ベースのネットワークの一部を形成することができる。通信チャネル１５は、一般にビデオデータをソース・デバイス１２から宛先デバイス１６に送信するのに好適な任意の通信媒体、または様々な通信媒体の集合体を表す。通信チャネル１５は、ソース・デバイス１２から宛先デバイス１６への通信を可能にするのに有用なルータ、スイッチ、基地局、または任意の他の機器を含むことができる。
【００３０】
ビデオ・エンコーダ２２およびビデオ・デコーダ２８は、代替的にＭＰＥＧ−４、Part10、Advanced Video Coding（ＡＶＣ）として説明されるＩＴＵ−Ｔ  Ｈ．２６４規格など、ビデオ圧縮規格に従って動作することができる。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。図１には示されていないが、いくつかの態様では、ビデオ・エンコーダ２２およびビデオ・デコーダ２８は、それぞれオーディオ・エンコーダおよびデコーダと統合でき、適切なＭＵＸ−ＤＥＭＵＸユニットまたは他のハードウェアおよびソフトウェアを含み、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理することができる。適用可能な場合、ＭＵＸ−ＤＥＭＵＸユニットはＩＴＵ  Ｈ．２２３マルチプレクサプロトコル、またはユーザデータグラムプロトコル（ＵＤＰ）など他のプロトコルに準拠することができる。
【００３１】
ＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４（ＡＶＣ）規格は、Joint Video Team（ＪＶＴ）として知られる共同パートナーシップの成果として、ＩＳＯ／ＩＥＣのMoving Picture Experts Group（ＭＰＥＧ）とともにＩＴＵ−ＴのVideo Coding Experts Group（ＶＣＥＧ）によって公式化された。いくつかの態様では、本開示で説明する技法は、一般にＨ．２６４規格に準拠するデバイスに適用することができる。Ｈ．２６４規格は、ＩＴＵ−Ｔ研究グループによる２００５年３月付けのＩＴＵ−Ｔ勧告Ｈ．２６４「Advanced Video Coding for generic audiovisual services」に記載されており、本明細書ではＨ．２６４規格またはＨ．２６４仕様、あるいはＨ．２６４／ＡＶＣ規格または仕様と呼ぶ。Ｊｏｉｎｔ  Ｖｉｄｅｏ  Ｔｅａｍ（ＪＶＴ）はＨ．２６４／ＭＰＥＧ−４  ＡＶＣへの拡張の取り組みを続けている。
【００３２】
ビデオ・エンコーダ２２およびビデオ・デコーダ２８はそれぞれ、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せとして実装できる。ビデオ・エンコーダ２２およびビデオ・デコーダ２８の各々を１つまたは複数のエンコーダまたはデコーダ中に含めることができ、そのいずれかは複合エンコーダ／デコーダ（コーデック）の一部としてそれぞれモバイルデバイス、加入者デバイス、ブロードキャストデバイス、サーバなどに統合できる。
【００３３】
ビデオ・シーケンスは、一般に一連のビデオ・フレームを含む。ビデオ・エンコーダ２２は、ビデオデータを符号化するために、個々のビデオ・フレーム内のビデオ・ブロック上で動作する。ビデオ・ブロックは、サイズを固定することも変更することもでき、指定のコーディング規格に応じてサイズが異なることがある。各ビデオ・フレームは一連のスライスを含む。各スライスは一連のマクロブロックを含むことができ、それらはサブブロック中に配置することができる。一例として、ＩＴＵ−Ｔ  Ｈ．２６４規格は、ルーマ成分については１６×１６、８×８または４×４、およびクロマ成分については８×８など、様々なブロックサイズのイントラ予測をサポートし、ならびにルーマ成分については１６×１６、１６×８、８×１６、８×８、８×４、４×８および４×４、およびクロマ成分については対応するスケーリングされたサイズなど、様々なブロックサイズのインター予測をサポートする。ビデオ・ブロックは、ピクセルデータのブロック、または、たとえば離散コサイン変換もしくは概念的に同様の変換プロセスなどの変換プロセスの後の変換係数のブロックを備えることができる。
【００３４】
ビデオ・ブロックは、小さいほどより良い解像度が得られ、高い詳細レベルを含むビデオ・フレームの位置決めに使用することができる。一般に、マクロブロックおよび様々なサブブロックをビデオ・ブロックであると考えることができる。さらに、スライスは、マクロブロックおよび／またはサブブロックなど一連のビデオ・ブロックであると考えることができる。各スライスはビデオ・フレームの単独で復号可能な単位とすることができる。代替的に、フレーム自体を復号可能なユニットとすることができるか、またはフレームの他の部分を復号可能なユニットとして定義することができる。「コード化ユニット」という用語は、フレーム全体、フレームのスライス、または使用されるコーディング技法に従って定義される別の単独で復号可能なユニットなど、ビデオ・フレームの単独で復号可能な任意のユニットを指す。本開示の技法は、すべてのコード化ユニットに適用可能である。
【００３５】
（異なる整数およびサブ整数ピクセル・ロケーションについてオフセット値を規定するための補間および本開示の技法を含む）インターベース予測コーディングの後、および（Ｈ．２６４／ＡＶＣまたは離散コサイン変換ＤＣＴにおいて使用される４×４または８×８整数変換などの）任意の変換の後、量子化を実行することができる。量子化は、一般に、係数を表すために使用されるデータ量をできるだけ低減するように係数を量子化するプロセスを指す。量子化プロセスは、係数の一部または全部に関連するビット深度を低減することができる。たとえば、量子化中に１６ビット値を１５ビット値まで丸めることができる。量子化の後、たとえば、コンテンツ適応型可変長コーディング（ＣＡＶＬＣ）、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）、または別のエントロピー・コーディング方法に従ってエントロピー・コーディングを実行することができる。
【００３６】
本開示の技法によれば、ビデオ・エンコーダ２２は、フレームなどのビデオデータのコード化ユニット、またはスライスなどのフレームの単独で復号可能な部分について複数のオフセット値を計算することができる。異なるオフセット値は、ビデオ・ブロックに関連する複数の異なる整数およびサブ整数ピクセル・ロケーションに関連する。サブ整数ピクセル・ロケーションは、一般に整数ピクセル・ロケーションにおけるデータに基づいて補間または外挿される、補間または外挿データのロケーションを規定することができる。ビデオ・エンコーダ２２は、予測ビデオ・ブロックにオフセット値を適用してオフセット予測ビデオ・ブロックを発生し、そのオフセット予測ビデオ・ブロックに基づいてコード化ユニットのビデオ・ブロックを符号化することができる。ビデオ・エンコーダ２２はまた、コード化ユニットのコード化ビデオ・ブロックを含むコード化ビット・ストリームの一部としてオフセット値を符号化し、ソース・デバイス１２の送信機２４は、コード化ビット・ストリームを宛先デバイス１６の受信機２６に送信することができる。特に、ビデオ・エンコーダ２２は、双方向予測ビデオ・ブロックのピクセルを調整することによってオフセット値を適用し、オフセット予測ビデオ・ブロックに基づいて残差を発生することによって、オフセット予測ビデオ・ブロックに基づいてビデオ・ブロックを符号化することができる。たとえば、適切なオフセット予測ビデオ・ブロックからコーディングすべきブロックを減算することによって、残差を発生することができる。予測ビデオ・ブロックのロケーションに基づいてオフセット予測ビデオ・ブロックのピクセル値にオフセットを加算するので、特に閃光または背景照明変化中にコーディング効率を改善することができる。この場合、特に、コーディングされているブロックと（オフセットなしの）予測ブロックとの間の差が、主にそれぞれのピクセルのすべてについて同じ光度だけ異なるとき、オフセット予測ブロックが、コーディングされているブロックをより正確に整合させるように、オフセットの加算は予測ブロックのピクセル値をバイアスすることができる。
【００３７】
宛先デバイス１６では、ビデオ・デコーダ２８は、ビデオデータの各コード化ユニットについての複数のオフセット値を受信する。ビデオ・デコーダ２８は、予測ビデオ・ブロックにオフセット値を適用してオフセット予測ビデオ・ブロックを発生し、そのオフセット予測ビデオ・ブロックに基づいてコード化ユニットのビデオ・ブロックを復号する。このようにして、符号化プロセスの一部としてビデオ・エンコーダ２２においてオフセット値を規定し、適用し、符号化ビット・ストリームの一部としてソース・デバイス１２から宛先デバイス１６に通信する。次いで、ビデオ・シーケンスを再構成するために、復号プロセスの一部としてビデオ・デコーダ２８において予測データにオフセット値を適用する。この場合、予測データへのオフセットは、ビデオ再構成中に作成され、使用される。
【００３８】
図２は、本開示に一致するオフセット技法を実行することができるビデオ・エンコーダ５０の例を示すブロック図である。ビデオ・エンコーダ５０は、本明細書では「コーダ」と呼ぶ専用ビデオコンピュータデバイスまたは装置の一例である。ビデオ・エンコーダ５０は、ソース・デバイス１２のビデオ・エンコーダ２２、または異なるデバイスのビデオ・エンコーダに対応することがある。ビデオ・エンコーダ５０はビデオ・フレーム内のブロックのイントラコーディングおよびインター・コーディングを実行することができるが、説明を簡単にするために、イントラコーディング構成要素は図２に示していない。イントラコーディングは空間的予測を利用して、所与のビデオ・フレーム内のビデオの空間的冗長性を低減または除去する。インター・コーディングは時間的予測を利用して、ビデオ・シーケンスの隣接フレーム内のビデオの時間的冗長性を低減または除去する。イントラモード（Ｉモード）は空間ベースの圧縮モードを指し、予測（Ｐモード）または双方向（Ｂモード）などのインターモードは、時間ベースの圧縮モードを指す。Ｂモードを使用して符号化されるユニットは、２つのフレームを参照して符号化される。Ｈ．２６４では、Ｂフレームまたは他のユニットは、２つの時間的に前のフレームを参照して符号化され得る。たとえば、符号化すべき現在のユニットがフレームＮ内に存在する場合、現在のユニットを符号化するために、フレームＮ−１およびＮ−２が参照フレームとして使用され得る。他のコーディング規格、たとえばＭＰＥＧ−２では、フレームＮ中に存在する現在のユニットを符号化するために、少なくとも１つの時間的に後のフレーム（たとえば、フレームＮ＋１）と、少なくとも１つの時間的に前のフレーム（たとえば、フレームＮ−１）とが使用され得る。本開示の技法は双方向インター・コーディング中に適用され、したがって、説明を簡単で容易にするために、空間予測ユニットなどのイントラ・コーディング・ユニットは図２に示していない。
【００３９】
図２に示すように、ビデオ・エンコーダ５０は、符号化すべきビデオ・フレーム内のビデオ・ブロックを受信する。図２の例では、ビデオ・エンコーダ５０は、予測ユニット３２と、メモリ３４と、加算器４８と、変換ユニット３８と、量子化ユニット４０と、エントロピー・コーディング・ユニット４６とを含む。ビデオ・ブロック再構成のために、ビデオ・エンコーダ５０はまた、逆量子化ユニット４２と、逆変換ユニット４４と、加算器５１とを含む。再構成されたビデオからブロッキネス・アーティファクトを除去するためにブロック境界をフィルタ処理するデブロッキングフィルタ（図示せず）を含めることもできる。必要な場合、デブロッキング・フィルタは一般に、加算器５１の出力をフィルタ処理するであろう。
【００４０】
予測ユニット３２は、動き推定（ＭＥ）ユニット３５と、動き補償（ＭＣ）ユニット３７とを含むことができる。本開示によれば、フィルタ３９は、予測ユニット３２中に含めることができ、動き推定および／または動き補償の一部として補間または補間様フィルタ処理を実行するために、ＭＥユニット３５とＭＣユニット３７の一方または両方によって起動できる。フィルタ３９は、実際は、本明細書で説明するように、多数の様々なタイプの補間および補間タイプフィルタ処理を可能にする複数の様々なフィルタを表すことができる。したがって、予測ユニット３２は複数の補間または補間様フィルタを含むことができる。符号化プロセス中に、ビデオ・エンコーダ５０は、コーディングすべき（図２で「ビデオ・ブロック」と標示される）ビデオ・ブロックを受信し、予測ユニット３２は、インター予測コーディングを実行して（図２で「予測ブロック」と標示される）予測ブロックを発生する。特に、ＭＥユニット３５は、動き推定を実行してメモリ３４中の予測ブロックを識別し、ＭＣユニット３７は、動き補償を実行して予測ブロックを発生することができる。
【００４１】
動き推定は一般に、ビデオ・ブロックの動きを推定する動きベクトルを発生するプロセスと考えられる。動きベクトルは、たとえば、現在のフレーム（または、他のコード化ユニット）内のコーディングすべきブロックに対する、予測フレームまたは参照フレーム（または、他のコード化ユニット、たとえばスライス）内の予測ブロックの変位を示すことができる。双方向予測の場合、２つの動きベクトル、すなわち、第１の予測または参照フレーム内の予測ブロックの変位を示す１つの動きベクトルと、第２の予測または参照フレーム内の予測ブロックの変位を示す別の動きベクトルとが発生される。双方向予測では、２つの参照フレーム（または、２つのフレームの部分）は、現在のビデオ・ブロックが属するビデオ・フレーム（または、ビデオ・フレームの部分）より時間的に前に、またはその後に配置されることがある。動き補償は一般に、メモリ３４から予測ブロックをフェッチまたは発生するプロセス、あるいは、場合によっては、動き推定によって判断された動きベクトルに基づいて、フィルタ処理された予測データを補間するかまたはさもなければ発生するプロセスと考えられる。
【００４２】
ＭＥユニット３５は、コーディングすべきビデオ・ブロックを２つの参照フレーム（たとえば、２つの前のフレーム、前のフレームと後のフレーム、または２つの後のフレーム）のビデオ・ブロックに比較することによって、そのビデオ・ブロックに適した動きベクトルを選択する。ＭＥユニット３５は、部分ピクセル、部分ペル、またはサブピクセル動き推定と呼ばれることがある部分ピクセル精度を用いて動き推定を実行することができる。したがって、部分ピクセル、部分ペル、およびサブピクセル動き推定という用語は、互換的に使用できる。部分ピクセル動き推定では、ＭＥユニット３５は、整数ピクセル・ロケーション以外のロケーションへの変位を示す動きベクトルを選択することができる。このようにして、部分ピクセル動き推定により、予測ユニット３２は、整数ピクセル（または、フルピクセル）ロケーションよりも高い精度を用いて動きを追跡し、したがって、より正確な予測ブロックを発生することが可能になる。部分ピクセル動き推定は、ハーフ・ピクセル精度、クォーター・ピクセル精度、８分の１ピクセル精度または任意のより微細な精度を有することができる。ＭＥユニット３５は、動き推定プロセス中に任意の必要な補間のために（１つまたは複数の）フィルタ３９を起動することができる。
【００４３】
部分ピクセル動き補償を実行するために、ＭＣユニット３７は、補間（補間フィルタ処理と呼ばれることがある）を実行して、サブピクセル解像度（サブピクセル値または部分ピクセル値と本明細書では呼ぶ）におけるデータを発生することができる。ＭＣユニット３７は、この補間のために（１つまたは複数の）フィルタ３９を起動することができる。予測ユニット３２は、本明細書で説明する技法を使用して補間（または、整数ピクセルの補間様フィルタ処理）を実行することができる。
【００４４】
コーディングすべきビデオ・ブロックのための（第１の参照フレームに基づく）第１の動きベクトルがＭＥユニット３５によって選択されると、ＭＣユニット３７は、その動きベクトルに関連する予測ビデオ・ブロックを発生する。ＭＣユニット３７は、ＭＣユニット３７によって判断された第１の動きベクトルに基づいて、メモリ３４から予測ブロックをフェッチすることができる。部分ピクセル精度をもつ動きベクトルの場合、ＭＣユニット３７は、そのようなデータをサブピクセル解像度に対して補間するために、たとえば、このプロセスのために（１つまたは複数の）フィルタ３９を起動して、メモリ３４からのデータをフィルタ処理する。場合によっては、サブピクセル予測データを発生するために使用された補間フィルタ処理技法またはモードは、コード化ビット・ストリームに含めるための、エントロピー・コーディング・ユニット４６への１つまたは複数の補間シンタックス要素として示されることがある。
【００４５】
双方向インター・コーディングでは、このプロセスは、第２の参照フレームに基づく第２の動きベクトルに対して反復される。ＭＣユニット３７は、第２の動きベクトルに関連する予測ビデオ・ブロックを発生する。ＭＣユニット３７は、ＭＥユニット３５によって判断された第２の動きベクトルに基づいて、メモリ３４から予測ブロックをフェッチすることができる。部分ピクセル精度をもつ動きベクトルの場合、ＭＣユニット３７は、そのようなデータをサブピクセル解像度に対して補間するために、たとえば、このプロセスのために（１つまたは複数の）フィルタ３９を起動して、メモリ３４からのデータをフィルタ処理する。場合によっては、サブピクセル予測データを発生するために使用された補間フィルタ処理技法またはモードは、コード化ビット・ストリームに含めるための、エントロピー・コーディング・ユニット４６への１つまたは複数の補間シンタックス要素として示されることがある。フィルタ選択については、以下でより詳細に説明する。
【００４６】
双方向インター・コーディングでは、予測ユニット３２が２つの予測ブロックを発生した後、ビデオ・エンコーダ５０は、その２つの予測ブロックからのデータを組み合わせて単一の予測ブロックを生成する。それらの組合せ中に、予測ブロックの各々は異なって重み付けされ得る。たとえば、フレームＮのコード化ユニットが、参照フレームＮ−１からの第１の予測ブロックと参照フレームＮ−２からの第２の予測ブロックとを使用する場合、フレームＮ−１よりもフレームＮから時間的に多く削除されているフレームＮ−２を考慮するために、参照フレームＮ−１からの第１の予測ブロックは、２つの予測ブロックの組合せ中に参照フレームＮ−２からの第２の予測ブロックよりも重く重み付けされ得る。
【００４７】
以下でより詳細に説明するように、ＭＣユニット３７は、各整数およびサブピクセル位置についてＤＣオフセットを計算することができる。オフセット値は、同じくビデオ符号化中に遭遇されるシーン変化、閃光、照明変化などにとって極めて有用となり得る、対応するビデオ・ブロックのピクセル値のすべてを上方または下方にバイアスするために使用される絶対値または符号付き値を備えることができる。本開示のオフセット技法は、ルーマ・ブロック、クロマ・ブロック、またはその両方に対して適用することができる。ビデオ・ブロックの各タイプ（たとえば、ルーマ・ブロックおよびクロマ・ブロック）に関連する各整数およびサブ整数ピクセル・ロケーションについて、異なるオフセットを規定することができる。さらに、各特定のサイズにおける各ブロック、各ブロックの区分または下位区分に異なるオフセットを割り当てることができる。「オフセット」および「ＤＣオフセット」という用語は、本開示では互換的に使用される。
【００４８】
オフセット値が規定されると、ＭＣユニット３７は、予測データとオフセットとに基づいてビデオデータをコーディングするために第２のコーディングパスを実行することができる。特に、ＭＣユニット３７は、元の予測ビデオ・ブロックにオフセット値を適用してオフセット予測ビデオ・ブロックを発生し、そのオフセット予測ビデオ・ブロックに基づいてコード化ユニットのビデオ・ブロックを符号化することができる。予測ブロックのピクセル・ロケーション（整数ロケーション、または複数の可能なサブ整数ピクセル・ロケーションのうちの１つ）に従って、ロケーション・ベースの方法で予測ブロックのピクセル値にオフセットを加算することによって、予測ブロックは、コーディングされているブロックにより類似することになり、コーディング効率を改善することができる。その上、異なるピクセル・ロケーションについてオフセット値を異なって定義するので、本開示の技法は、異なるタイプの補間に関連するデータのコーディングの間のセグメンテーションを達成する能力を与えることができる。
【００４９】
ＭＣユニット３７がオフセット予測データ（たとえば、補間データまたは整数ベースデータとすることができるオフセット予測ビデオ・ブロック）を発生した後、ビデオ・エンコーダ５０は、コーディングされている元のビデオ・ブロックからオフセット予測ブロックを減算することによって（図２で「残差ブロック」と標示される）残差ビデオ・ブロックを形成する。加算器４８は、この減算演算を実行する１つまたは複数の構成要素を表す。変換ユニット３８は、離散コサイン変換（ＤＣＴ）または概念的に同様の変換などの変換を残差ブロックに適用し、残差変換ブロック係数を備えるビデオ・ブロックを生成する。変換ユニット３８は、たとえば、概念的にＤＣＴと同様である、Ｈ．２６４規格によって定義される変換などの他の変換を実行することができる。ウェーブレット変換、整数変換、サブバンド変換または他のタイプの変換をも使用することができる。いずれの場合も、変換ユニット３８は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。変換は、残差情報をピクセル領域から周波数領域に変換することができる。
【００５０】
量子化ユニット４０は、ビットレートをさらに低減するために残差変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深度を低減することができる。たとえば、量子化中に１６ビット値を１５ビット値まで丸めることができる。さらに、量子化ユニット４０はまた、異なるオフセットのそれぞれの整数および分数部分に所望のビット数を割り振るために本開示の技法を使用して、異なるオフセットを量子化することができる。特に、量子化ユニット４０は、オフセット値の各々に対して、所与のオフセット値の整数部分に第１のビット数を割り当て、所与のオフセット値の分数部分に第２のビット数を割り当てることができ、第１および第２のビット数は、整数部分の絶対値に基づいて判断される。エントロピー・コーディング・ユニット４６は、第２のビット数とは異なって第１のビット数を符号化することができる。
【００５１】
量子化の後、エントロピー・コーディング・ユニット４６が量子化変換係数をエントロピー・コーディングする。たとえば、エントロピー・コーディング・ユニット４６は、ＣＡＶＬＣ、ＣＡＢＡＣ、または別のエントロピー・コーディング方法を実行することができる。エントロピー・コーディング・ユニット４６はまた、ビデオ・エンコーダ５０の予測ユニット３２または他の構成要素から得られた１つまたは複数の予測シンタックス要素をコーディングすることができる。１つまたは複数の予測シンタックス要素は、コーディングモード、１つまたは複数の動きベクトル、サブピクセルデータを発生するために使用された補間技法、フィルタ係数のセットまたはサブセット、あるいは予測ブロックの発生に関連する他の情報を含むことができる。係数予測および量子化ユニット４１は、フィルタ係数などの予測シンタックスを予測符号化し、量子化することができる。エントロピー・コーディング・ユニット４６によるエントロピー・コーディングの後、符号化ビデオとシンタックス要素とを、別のデバイスに送信するか、あるいは後で送信または検索するためにアーカイブすることができる。コード化ビット・ストリームは、エントロピーコード化残差ブロックと、そのようなブロックについての動きベクトルと、コード化ユニット内の異なる整数およびサブ整数ピクセル・ロケーションにおける複数の異なるオフセットを識別するオフセット値を含む他のシンタックスとを含むことができる。
【００５２】
逆量子化ユニット４２および逆変換ユニット４４は、それぞれ逆量子化および逆変換を適用して、たとえば参照ブロックとして後で使用するために、ピクセル領域中で残差ブロックを再構成する。（図２で「再構成された残差ブロック」と標示される）再構成された残差ブロックは、変換ユニット３８に与えられる残差ブロックの再構成されたバージョンを表すことができる。再構成された残差ブロックは、量子化演算および逆量子化演算によって生じた細部の損失により、加算器４８によって発生された残差ブロックとは異なることがある。加算器５１は、再構成された残差ブロックを、予測ユニット３２によって生成された動き補償された予測ブロックに加算して、メモリ３４に記憶するための再構成されたビデオ・ブロックを生成する。再構成されたビデオ・ブロックは、後続のビデオ・フレームまたは後続のコード化ユニット中のブロックをその後コーディングするために使用され得る参照ブロックとして予測ユニット３２によって使用され得る。
【００５３】
上記で説明したように、予測ユニット３２は、部分ピクセル（または、サブピクセル）精度を用いて動き推定を実行することができる。予測ユニット３２は、部分ピクセル動き推定を使用するとき、本開示で説明する補間演算を使用してサブピクセル解像度（たとえば、サブピクセル値または部分ピクセル値）におけるデータを発生することができる。言い換えれば、補間演算を使用して、整数ピクセル位置間の位置における値を計算する。整数ピクセル位置間の距離の半分に配置されるサブピクセル位置をハーフ・ピクセル（ハーフペル）位置と呼び、整数ピクセル位置とハーフ・ピクセル位置との間の距離の半分に配置されるサブピクセル位置をクォーター・ピクセル（クォーターペル）位置と呼び、整数ピクセル位置（または、ハーフ・ピクセル位置）とクォーター・ピクセル位置との間の距離の半分に配置されるサブピクセル位置を８分の１ピクセル（８分の１ペル）位置と呼び、以下同様である。
【００５４】
図３は、本明細書で説明する方法で符号化されたビデオ・シーケンスを復号するビデオ・デコーダ６０の例を示すブロック図である。ビデオ・デコーダ６０は、復号中に本開示のオフセット技法を実行する動き補償ユニット５５を含む。特に、復号側で、動き補償ユニット５５は、たとえば、整数ピクセル・ロケーションおよび１つまたは複数の非整数ピクセル・ロケーションについて異なるオフセットを規定する、コード化ユニットに対する複数のオフセット値を識別するエントロピー復号ユニット５２からシンタックス要素を受信することができる。動き補償ユニット５５は、エントロピー復号ユニット５２から受信した動きベクトルに基づいて予測データを発生し、（予測データのピクセル・ロケーションに基づいて）適切なオフセットをそのような予測データに加算してオフセット予測データを発生することができる。非整数ロケーションについてのオフセット値のうちの対応する１つを予測データに適用してオフセット予測データを発生することができる場合には、予測データは補間データとすることができる。このオフセット予測データに基づいて、ビデオデータ（たとえば、再構成された残差ビデオ・ブロック）を復号することができる。特に、デコーダ６０は、オフセット予測データを残差ビデオ・ブロックと組み合わせて、最初に符号化されたビデオ・ブロックを発生することができる。
【００５５】
エントロピー復号ユニット５２は、受信したビット・ストリームをエントロピー復号して、（図３で「量子化係数」と標示される）量子化係数とシンタックス（たとえば、図３で「オフセット値」および「動きベクトル」と標示される、コード化ユニットについての動きベクトルおよび複数のオフセット値）とを発生する。シンタックスは、エントロピー・コーディング・ユニット５２から動き補償ユニット５５にフォワーディングされる。逆量子化ユニット５６は、量子化されたブロック係数を逆量子化（inverse quantize）、すなわち逆量子化（de-quantize）する。逆量子化プロセスは、Ｈ．２６４復号によって定義された従来のプロセスとすることができる。逆変換ユニット５８は、ピクセル領域における残差ブロックを生成するために、逆変換、たとえば逆ＤＣＴまたは概念的に同様の逆変換プロセスを変換係数に適用する。動き補償ユニット５５は、動き補償ブロックを生成し、場合によっては、シンタックス中に含まれることもある補間フィルタ係数の１つまたは複数のセットに基づいて補間を実行する。動き補償ユニット５５が動きベクトルに基づいて予測ブロックを発生した後、各予測ブロックに適したオフセットを予測ブロックに加算して、エンコーダによって実行された元の符号化において使用されたオフセット予測ブロックを発生することができる。
【００５６】
加算器６４は、残差ブロックを、動き補償ユニット５５によって発生された対応するオフセット予測ブロックと加算することによって、残差ブロックを復号して、復号ブロックを形成する。必要に応じて、ブロッキネス・アーティファクトを除去するために、デブロッキング・フィルタを適用して、復号ブロックをフィルタ処理することもできる。次いで、復号ビデオ・ブロックは参照フレームストア６２に記憶され、参照フレームストア６２は参照ブロックをその後の動き補償に供給し、ドライブ・ディスプレイ・デバイス（図１のデバイス２８など）に対して復号ビデオをも生成する。
【００５７】
この場合も、本開示の技法は、補間によって規定された整数および異なるサブ整数ピクセル・ロケーションについて異なるオフセットが使用される、動き補償双方向予測データへのオフセットの適用に関する。エンコーダは、本開示の技法を使用して異なるオフセット値を規定および適用し、デコーダは、エンコーダによって規定および使用されたその同じオフセット値を識別するために、エンコーダから送信されたシンタックス要素を解釈する。適切なオフセットは予測データのピクセル値に適用され、適切なオフセットは、そのような予測データに対して規定されたピクセル・ロケーション、たとえば、整数ピクセル・ロケーション、またはいくつかの可能な非整数ピクセル・ロケーションのうちの１つに基づいて選択される。
【００５８】
図４は、予測データに関連する整数ピクセル（または、フルピクセル）位置と、補間予測データに関連するサブピクセル（または、部分ピクセル）位置とを示す概念図である。図４の概念図では、異なるボックスが、フレームまたはフレームのブロック内のピクセルおよびサブピクセル・ロケーションまたは位置を表す。（実線のボックス中の）大文字は整数ピクセル・ロケーションを表し、（点線のボックス中の）小文字はサブピクセル・ロケーションを表す。特に、ピクセル・ロケーションＡ１〜Ａ６、Ｂ１〜Ｂ６、Ｃ１〜Ｃ６、Ｄ１〜Ｄ６、Ｅ１〜Ｅ６およびＦ１〜Ｆ６は、フレーム、スライスまたは他のコード化ユニット内の整数ピクセル・ロケーションの６×６アレイを表す。サブピクセル・ロケーション「ａ」〜「ｏ」は、整数ピクセルＣ３に関連する１５個のサブピクセル・ロケーション、たとえば、整数ピクセル・ロケーションＣ３とＣ４とＤ３とＤ４との間のサブピクセル・ロケーションを表す。サブピクセル・ロケーション「ａ」〜「ｏ」は、整数ピクセルＣ３に関連する１５個のサブピクセル・ロケーション、たとえば、整数ピクセル・ロケーションＣ３とＣ４とＤ３とＤ４との間のサブピクセル・ロケーションを表す。サブピクセル・ロケーション「ａ」〜「ｏ」は、整数ピクセルＣ３に関連するあらゆるハーフペルおよびクォーターペルピクセル・ロケーションを表す。同様に、サブピクセル・ロケーション「ａ′」〜「ｏ′」は、整数ピクセルＥ５に関連する１５個のサブピクセル・ロケーション、たとえば、整数ピクセル・ロケーションＥ５とＥ６とＦ５とＦ６との間のサブピクセル・ロケーションを表す。同様のサブピクセル・ロケーションが、あらゆる整数ピクセル・ロケーションに対して存在する。（ピクセルＣ３に関連する１５個の異なる部分ロケーションのうちの１つまたは複数を発生するために使用される、上述のもの以外の）他の部分ロケーションのほとんどは、簡単のために示さない。
【００５９】
整数ピクセル・ロケーションは、ビデオデータが最初に生成されたとき、フォトダイオードなどの物理的センサ要素に関連することがある。フォトダイオードは、センサのロケーションにおける光源の強度を測定し、ピクセル強度値を整数ピクセル・ロケーションに関連付けることができる。この場合も、各整数ピクセル・ロケーションは、１５個の（または場合によってはより多くの）サブピクセル・ロケーションの関連するセットを有することができる。整数ピクセル・ロケーションに関連するサブピクセル・ロケーションの数は、所望の精度に依存することがある。図４に示す例では、所望の精度はクォーター・ピクセル精度であり、その場合、整数ピクセル・ロケーションの各々が１５個の異なるサブピクセル位置と対応する。より多いまたはより少ないサブピクセル位置は、所望の精度に基づいて各整数ピクセル・ロケーションに関連することができる。ハーフ・ピクセル精度の場合、たとえば、各整数ピクセル・ロケーションは、３つのサブピクセル位置と対応することがある。別の例として、整数ピクセル・ロケーションの各々は、８分の１のピクセル精度の場合、６３個のサブピクセル位置と対応することがある。各ピクセル・ロケーションは、１つまたは複数のピクセル値、たとえば、１つまたは複数の輝度およびクロミナンス値を定義することができる。
【００６０】
Ｙが輝度を表し、ＣｂおよびＣｒが３次元ＹＣｂＣｒ色空間のクロミナンスの２つの異なる値を表すことができる。各ピクセル・ロケーションは実際に、３次元色空間の３つのピクセル値を定義することができる。ただし、本開示の技法は、簡単のために１次元に対する予測に関する。技法について１次元のピクセル値に関して説明する限り、同様の技法を他の次元に拡張することができる。
【００６１】
各ピクセルは、そのピクセルがビデオ・ブロックを規定するようにビデオ・ブロックの右上ピクセルに対応することができる。補間または外挿の場合、ビデオ・ブロックのピクセルの各々は、それぞれのサブ整数ピクセルから同じ空間距離を有する異なる整数ピクセルに関して同様に補間または外挿できる。
【００６２】
ＩＴＵ  Ｈ．２６４／ＡＶＣ規格では、たとえば、ハーフ・ピクセル位置におけるルーマ信号を得るために、係数［１，−５，２０，２０，−５，１］をもつ６タップ・ウィーナー・フィルタ（Wiener filter）が一般に使用される。次いで、クォーター・ピクセル・ロケーションにおけるルーマ信号を得るために、双一次フィルタが使用される。双一次フィルタはまた、Ｈ．２６４／ＡＶＣでは最高１／８ピクセル精度を有し得るクロマ成分に対する部分ピクセル補間において使用され得る。
【００６３】
ＩＴＵ−Ｔ  Ｈ．２６４規格に一致して、たとえば、予測ユニット３２は、ウィーナーフィルタなどの６タップ補間フィルタを使用して、ハーフ・ピクセル・ロケーションのピクセル値を判断することができる。Ｈ．２６４規格の場合、６タップ補間フィルタのためのフィルタ係数は一般に［１，−５，２０，２０，−５，１］であるが、他の係数が使用され    得る。予測ユニット３２は最初に水平方向で、次いで垂直方向で補間フィルタを適用することができ、または、その逆も同様である。ハーフ・ピクセル位置「ｂ」および「ｈ」の場合、各タップはそれぞれ、水平方向および垂直方向の整数ピクセル位置に対応することができる。特に、ハーフ・ピクセル位置「ｂ」の場合、６タップフィルタのタップは、Ｃ１、Ｃ２、Ｃ３、Ｃ４、Ｃ５、およびＣ６に対応する。同様に、ハーフ・ピクセル位置「ｈ」の場合、６タップ・フィルタのタップは、Ａ３、Ｂ３、Ｃ３、Ｄ３、Ｅ３、およびＦ３に対応する。たとえば、サブピクセル位置「ｂ」および「ｈ」のピクセル値を、式（１）および式（２）を使用して計算することができる。
【数１】
0005646668.tif 000002
【００６４】
ハーフ・ピクセル位置「ｊ」の場合、６タップフィルタのタップは、位置Ｃ１〜Ｃ６とＤ１〜Ｄ６との間で水平に、または、位置Ａ３〜Ｆ３とＡ４〜Ｆ４との間で垂直に補間されたそれら自体に対応する。ハーフ・ピクセル・ロケーション「ｊ」を、たとえば、式（３）または式（４）のうちの１つに従って、ハーフ・ピクセル位置のあらかじめ補間されたピクセル値を使用する６タップ・フィルタを用いて計算することができる。
【数２】
0005646668.tif 000003
【００６５】
ただし、（図４に示すように）ａａはＡ３とＡ４との間の補間に対応し、ｂｂはＢ３とＢ４との間の補間に対応し、ｂはＣ３とＣ４との間の補間に対応し、ｈｈはＤ３とＤ４との間の補間に対応し、ｉｉはＥ３とＥ４との間の補間に対応し、ｊｊはＦ３とＦ４との間に補間に対応する。式４では、ｃｃはＣ１とＤ１との間の補間に対応し、ｄｄはＣ２とＤ２との間の補間に対応し、ｈはＣ３とＤ３との間の補間に対応し、ｅｅはＣ４とＤ４との間の補間に対応し、ｆｆはＣ５とＤ５との間の補間に対応し、ｇｇはＣ６とＤ６との間の補間に対応する。
【００６６】
Ｈ．２６４規格に一致して、予測ユニット３２は、双一次補間フィルタと、周囲の整数ピクセル・ロケーションおよびハーフ・ピクセル・ロケーションのピクセル値とを使用して、クォーター・ピクセル・ロケーション「ａ」、「ｃ」、「ｄ」、「ｅ」、「ｆ」、「ｇ」、「ｉ」、「ｋ」、「ｌ」、「ｍ」、「ｎ」および「ｏ」におけるピクセル値を判断することができる。たとえば、予測ユニット３２は、Ｃ３のピクセル値と「ｂ」のピクセル値とを使用して、サブピクセル位置「ａ」に関連するピクセル値を判断し、「ｂ」のピクセル値とＣ４のピクセル値とを使用して、サブピクセル位置「ｃ」に関連するピクセル値を判断し、以下同様である。
【００６７】
図４は、参照データの第１のリスト内の第１の参照ビデオ・ユニットの概念図である。図４に関して上記で説明した技法は、参照データの第１のリスト内の第１の参照ビデオ・ユニットに基づいて、サブ整数ピクセル位置に関連する予測値の第１のブロックを生じる。上記で説明したように、双方向インター・コーディングでは、第２の参照ユニットはまた、符号化すべき現在のブロックについて予測ビデオ・ユニットを形成する必要がある。図４に関して上記で説明したのと同様の方法で、参照データの第２のリスト内の第２の参照ビデオ・ユニットは、サブ整数ピクセル位置に関連する予測値の第２のブロックを発生するために使用される。第１および第２のリストは、異なる参照フレーム、異なるフレームからの異なるスライス、同じ参照フレームからの異なるスライス、１つもしくは複数の前または後続のフレームのデータの異なる部分、あるいは場合によっては、各々が１つもしくは複数のフレーム、スライスまたは他のコード化ユニットからのデータを含むデータの異なるセットを備えることができる。
【００６８】
動き推定後、コーディング・レートとビデオ品質とのバランスをとるために、たとえば、レートひずみモデルを使用して、所与のビデオ・ブロックについての最良の動きベクトルを識別することができる。予測ビデオ・ブロックは、所与のブロックについての最良の動きベクトルを使用して、動き補償中に形成される。上記で説明したように、予測ユニット３２が２つの予測ブロックを発生した後、ビデオ・エンコーダ５０は、その２つの予測ブロックを組み合わせて単一の予測ブロックを生成する。それらの組合せ中に、予測ブロックの各々は異なって重み付けされ得る。たとえば、フレームＮのコード化ユニットが参照フレームＮ−１からの予測ブロックと参照フレームＮ−２からの予測ブロックとを使用する場合、フレームＮ−１よりもフレームＮから時間的に多く削除されているフレームＮ−２を考慮するために、参照フレームＮ−１は、２つの予測ブロックの組合せ中に参照フレームＮ−２よりも重く重み付けされ得る。上記で概説したように、残差ビデオ・ブロックは、元のビデオ・ブロックから予測ビデオ・ブロックを減算することによって形成される。次いで、残差ブロックに対して変換を適用し、変換係数を量子化し、エントロピー・コーディングして、ビットレートをさらに低減する。
【００６９】
本開示の技法は、双方向予測ビデオ・ユニットにオフセットを加算することを含む。以下でより詳細に説明するように、各サブペル位置について、参照データの第１のリスト内の第１の参照ビデオ・ユニットに基づいて、第１のオフセット値を計算する。次いで、各サブペル位置について、参照データの第２のリスト内の第２の参照ビデオ・ユニットに基づいて、第２のオフセット値を計算する。ただし、第２のオフセット値の計算は、前に計算された第１のオフセット値を使用する。第１および第２のオフセット値を計算することにより、クォーターペル精度の場合、３２個のオフセット値、すなわち、サブペルおよび整数ピクセル位置当たり２つのオフセット、すなわち第１のオフセットおよび第２のオフセットが生じる。各位置について最終オフセット値を判断するために、第１のオフセット値を第１の予測ブロックからの位置の第１の予測と組み合わせ、第２のオフセットを第２の予測ブロックからの位置の第２の予測と組み合わせ、重み付けを使用しなければ、その結果を２で除算する。
【００７０】
異なるオフセットが異なる整数およびサブ整数ピクセル・ロケーションについて規定されるという点で、オフセットの値はロケーション固有とすることができる。ピクセル「ｂ」および「ｂ′」は整数ピクセルＣ３およびＥ５に関して同じサブ整数ピクセル・ロケーションを規定するので、ピクセル「ｂ」および「ｂ′」によって識別されるビデオ・ブロックに関連するオフセットは同じとすることができる。ただし、ピクセル「ｃ」および「ｄ′」は整数ピクセルＣ３およびＥ５に関して異なるサブ整数ピクセル・ロケーションを規定するので、ピクセル「ｃ」および「ｄ′」によって識別されるビデオ・ブロックに関連するオフセットは異なるとすることができる。１６個の異なるピクセル・ロケーション「Ｃ３」、「ａ」、「ｂ」、「ｃ」、「ｄ」、「ｅ」、「ｆ」、「ｇ」、「ｈ」、「ｉ」、「ｊ」、「ｋ」、「ｌ」、「ｍ」、「ｎ」、および「ｏ」の各々は、異なるオフセットを規定することができる。その上、これらの異なるオフセットはまた、それぞれ１６個の異なるピクセル・ロケーションの「Ｅ５」、「ａ′」、「ｂ′」、「ｃ′」、「ｄ′」、「ｅ′」、「ｆ′」、「ｇ′」、「ｈ′」、「ｉ′」、「ｊ′」、「ｋ′」、「ｌ′」、「ｍ′」、「ｎ′」、および「ｏ′」の各々に適用することができる。オフセットは、オフセット予測ブロックを発生するために、本質的に予測ブロックのあらゆるピクセル値を上方または下方にバイアスする符号付き値を規定することができる。同じく、オフセットを使用してバイアスすることは、ビデオ・シーケンスの異なるフレーム間の照明変化をキャプチャすることに役立つことがある。
【００７１】
オフセットは、すべての対応する予測ピクセルの平均に対する、同じサンプルロケーション（整数または特定のサブ整数ロケーション）を有するコード化ユニットのすべてのピクセルの平均の間の差を備えるので、それらはＤＣオフセットと呼ばれることがある。すなわち、ブロックのピクセルの各々が同様に、同じ程度だけバイアスされるので、オフセットは、たとえば、ＤＣＴ計算から生じる変換されたデータのＤＣ値の変化を生じ、ＤＣ値は、変換計算から生じる行列の左上の値である。これは、ＤＣ値がブロックのピクセル値の平均を表すからである。したがって、ピクセルを特定の値だけバイアスすることによって、変換計算から生じるＤＣ値は同様にバイアスされる。したがって、いくつかの例では、ブロックの各ピクセルにＤＣオフセットを適用するのではなく、変換計算から生じるＤＣ値にＤＣオフセットを適用することができる。
【００７２】
いくつかの例では、整数およびサブ整数ピクセル・ロケーションの各々は、異なるオフセット値を割り当てられることがある。動きベクトルによって参照されるピクセルまたはサブピクセルに対応するオフセット値は、ブロックの各ピクセルに適用される。具体的な例として、ピクセル・ロケーション「ｅ」、「ｆ」、「ｇ」、「ｉ」、「ｋ」、「ｍ」、「ｎ」、および「ｏ」について、オフセット値｛１，６，４，５，７，３，８，２｝をそれぞれ割り当てて、１〜８の間の範囲にあるオフセット値をピクセルおよびサブピクセル・ロケーションに割り当てることができる。すなわち、オフセット値マッピングは、｛Ｃ３−＞ｎｕｌｌ，ａ−＞ｎｕｌｌ，ｂ−＞ｎｕｌｌ，ｃ−＞ｎｕｌｌ，ｄ−＞ｎｕｌｌ，ｅ−＞１，ｆ−＞６，ｇ−＞４，ｈ−＞ｎｕｌｌ，ｉ−＞５，ｊ−＞ｎｕｌｌ，ｋ−＞７，ｌ−＞ｎｕｌｌ，ｍ−＞３，ｎ−＞８，ｏ−＞２｝とすることができる。
【００７３】
別の例では、オフセット値は、参照フレームのピクセルの平均値と現在のフレームのピクセルの平均値との間の差を備えることができる。そのような差をＤＣｆｒａｍｅと呼び、一例では、０＜ＤＣｆｒａｍｅ＜１．５のとき、絶対値１をもつオフセットを（最も近い整数に丸められた）１０＊ＤＣｆｒａｍｅピクセル位置に割り当てる。たとえば、ＤＣｆｒａｍｅが０．８３に等しい場合、絶対値１をもつオフセットを１６個のピクセル・ロケーションのうちの８個に割り当てる。
【００７４】
別の例として、参照ブロックのピクセルの平均値と現在ブロックのピクセルの平均値との間の差をＤＣｍｂと表す。さらに、ＤＣｍｉｎを、少なくともマクロブロックのしきい値数に割り当てられたＤＣｍｂの最小値とし、ＤＣｍａｘを、少なくともマクロブロックのしきい値数に割り当てられたＤＣｍｂの最大値とする。一例では、ＤＣｆｒａｍｅ＞１．５のとき、ピクセル値の各々は、ＤＣｍｉｎとＤＣｍａｘとの間の範囲にあるオフセット値を割り当てられる。
【００７５】
同じく、図４に、大文字をもつ実線のボックス中の（フルピクセルとも呼ばれる）整数ピクセル・サンプルを示す。所与の整数ピクセル・サンプルについて、１５個のサブピクセル位置があり得、それらのサブピクセル位置は、図４では整数ピクセル・サンプル「Ｃ３」について示され、「ａ」〜「ｏ」と標示される。Ｈ．２６４／ＡＶＣによれば、ＭＣユニット３７は、最初に１次元６タップ・ウィーナー・フィルタを使用して、ハーフ・ピクセル位置「ｂ」、「ｈ」、および「ｊ」を計算することができる。補間フィルタは、最初に水平方向において適用され、次いで垂直方向において適用され得、またはその逆も同様である。次いで、ＭＣユニット３７は、双一次フィルタとすでに計算されたハーフピクセル・サンプルとを使用して、残りのクォーター・ピクセル位置をフィルタ処理することができる。
【００７６】
補間データを発生するために適用される実際のフィルタは、多種多様な実装形態によって異なることがある。一例として、固定、所定の補間フィルタのいくつかのセットを適用し、最良の予測データを生じるセットを選択することができる。いくつかの例では、本開示で説明するように、補間フィルタは、１つまたは複数の参照フレームについての履歴補間データに基づいて選択できる。本開示によれば、コーディング中に使用すべき参照フレームから任意の補間予測データを発生した後であるが、動き推定がコーディングすべき現在のフレームに対して実行される前に、オフセットの加算が行われる。
【００７７】
ＭＣユニット３７は、オフセットを用いた切替え補間フィルタ（ＳＩＦＯ）方式を使用することができる。ＭＣユニット３７は、たとえば、補間フィルタ係数の複数の異なるあらかじめ規定されたセットによってそれぞれ規定できる複数の固定補間フィルタ３９から選択することができる。補間フィルタの選択は、各コード化ユニット・レベル（たとえば、フレーム・レベルまたはスライス・レベル）について、あるいは各サブピクセル位置（サンプルレベル）について実行できる。さらに、本開示によれば、ＤＣオフセットはまた、予測後に加算され、ＤＣオフセットはまた、本開示で説明するように、各可能な整数または部分ピクセル・ロケーションについて規定できる。
【００７８】
したがって、ＭＣユニット３７は、補間データのいくつかの可能な代替案を規定するために固定補間フィルタ３９の異なるセットを使用することができる。例として、ＭＣユニット３７は、標準的なＩＴＵ−Ｔ  Ｈ．２６４フィルタ・セットか、Ｈ．２６４／ＡＶＣに基づくが（１／２ピクセル位置についての中間丸め、および１／４のピクセル位置についてのバイアスされた丸めなしの）より高い精度をもつフィルタ・セットか、またはカスタマイズされた補間フィルタのセットを使用することができる。カスタマイズされた補間フィルタのセットは、トレーニング・ビデオ・シーケンスのセットを使用することによって、あらかじめ規定できる。
【００７９】
最良の予測（すなわち、より小さい予測誤差エネルギー）を提供するフィルタ・セットは、ＭＣユニット３７によって選択できる。すなわち、動き補償フィルタ処理された参照と予測されているブロックとの間の誤差を最小限に抑えるために、各サブピクセル位置についてフィルタを選択することができる。一例では、リスト０からのサブピクセル位置、たとえば、ｓｕｂ＿ｐｏｓ［０］と、リスト１からのサブピクセル位置、たとえば、ｓｕｂ＿ｐｏｓ［１］との組合せについて累積される誤差を、以下の擬似コードに従って計算することができる。
【数３】
0005646668.tif 000004
【００８０】
上式で、項「ｐｒｅｄＦ［ｉ］」および「ｐｒｅｄＢ［ｊ］」は、フィルタｉおよびｊに対応する前方予測および後方予測であり、項「ｗｂｐ＿ｗｅｉｇｈｔ［ｌｉｓｔ］［ｆｗ］［ｂｗ］［ｃｏｍｐ］」は、重み付け予測中で使用される重みを表し、項「ｗｐ＿ｏｆｆｓｅｔ［ｌｉｓｔ］［ｒｅｆ］［ｃｏｍｐ］」は重み付け予測中のオフセットであり、項「ｉｍｇ−＞ｂｉｐｒｅｄ＿ｒｏｕｎｄｉｎｇ」はＢスライス中の丸めを制御する。重み付け予測が使用されないとき、第１のステートメントは以下まで簡略化される。
【数４】
0005646668.tif 000005
【００８１】
例として、ＭＣユニット３７は、固定補間フィルタ３９のセットから第１のフィルタ「ｉ」、たとえばフィルタＦ１を選択し、前方予測ためのサブピクセル予測データ、すなわち、ｐｒｅｄＦ［Ｆ１］を発生する。次いで、ＭＣユニット３７は、固定補間フィルタ３９のセットから第２のフィルタ「ｊ」、たとえばフィルタＦ２を選択し、後方予測のためのサブピクセル予測データ、すなわち、ｐｒｅｄＢ［Ｆ２］を発生する。上記で提示した擬似コードによって表される技法によれば、累積された誤差値ＡｃｃＥｒｒｏｒＢ［Ｆ１］［Ｆ２］［ｓｕｂ＿ｐｏｓ［０］］［ｓｕｂ＿ｐｏｓ［１］］は、前方予測のためのサブピクセル予測データと後方予測のためのサブピクセル予測データとを使用して計算される。ＭＣユニット３７は、フィルタＦ１とフィルタＦ２との組合せの累積された誤差値を記憶する。次いで、ＭＣユニット３７は、前方予測および後方予測のためのサブピクセル予測データを発生するために、固定補間フィルタ３９のセットから別の２つのフィルタを選択する。前述のように、累積された誤差値は計算され、記憶される。ＭＣユニット３７は、固定補間フィルタのセットの各組合せについて誤差値を累積し記憶するこのプロセスを続けることができる。いくつかの例では、ＭＣユニット３７は、サブピクセル位置の各々について、デフォルトフィルタ、たとえば、標準的なＩＴＵ−Ｔ  Ｈ．２６４フィルタ・セットを選択することができる。一例では、ＭＣユニット３７は、少なくとも１つの組合せの累積された誤差値がしきい値誤差値を下回った場合、所定の数のフィルタの組合せについてプロセスを続けることができる。ＭＣユニット３７が固定補間フィルタ３９のセットについて様々な累積された誤差値を計算し、記憶した後、ＭＣユニット３７は、各サブピクセル位置についてフィルタを選択するプロセスを開始する。
【００８２】
一例では、フィルタ３９の各組合せについて予測誤差を累積した後、ＭＣユニット３７は、レートひずみコストを計算して、固定補間フィルタ３９の各セットについてフィルタ係数サイド情報を符号化する。たとえば、ＭＣユニット３７は、レートおよびひずみに応じて固定補間フィルタの各セットについてのフィルタ係数を符号化するためのコストを判断するために、コスト関数を使用することができる。いくつかの例では、ビットにおけるコストにスケーリングファクタを乗算することができる。フィルタの各セットについてのコストが計算された後、フィルタの各セットについてのコストおよび累積された誤差値を互いと比較し、最低誤差を生じるフィルタのセットと比較し、最低コストを選択することができる。
【００８３】
フィルタが選択され、予測データがＭＣユニット３７によって発生または補間された後、ＤＣオフセットが、補間（または非補間）データに関連するサンプルロケーションに基づいて予測データに適用できる。特に、本開示は、異なる整数またはサブ整数ピクセル・ロケーションについて異なるＤＣオフセットの使用を提供する。同じく、図４に示す例示的なデータでは、これは、１６個の異なるピクセル・ロケーション「Ｃ３」、「ａ」、「ｂ」、「ｃ」、「ｄ」、「ｅ」、「ｆ」、「ｇ」、「ｈ」、「ｉ」、「ｊ」、「ｋ」、「ｌ」、「ｍ」、「ｎ」、および「ｏ」の各々は、それ自体の異なるオフセットを規定することができることを意味する。したがって、１６個の可能な整数およびサブ整数ロケーションについて、１６個の異なるオフセットがあり得る。その上、これらの異なるオフセットはまた、それぞれ１６個の異なるピクセル・ロケーションの「Ｅ５」、「ａ′」、「ｂ′」、「ｃ′」、「ｄ′」、「ｅ′」、「ｆ′」、「ｇ′」、「ｈ′」、「ｉ′」、「ｊ′」、「ｋ′」、「ｌ′」、「ｍ′」、「ｎ′」、および「ｏ′」の各々に適用することができる。
【００８４】
予測データのピクセルにＤＣオフセットを加算することは、異なるビデオ・フレーム間の照明変化の影響をキャプチャするのに役立つことができる。照明変化は、ビデオ・シーケンス中の閃光または暗くなる空のようなものによって生じることがある。Ｈ．２６４／ＡＶＣは、オフセットを予測ピクセル値に加算することを可能にする重み付け予測を使用する。ただし、Ｈ．２６４／ＡＶＣ重み付け予測によって規定されたＤＣオフセットはフレーム・レベルでのみ可能になり、それは、ビデオ・ブロックの予測データが補間されるかどうかにかかわらず、所与のフレームについてただ１つのオフセット値が規定されることを意味する。言い換えれば、フレーム・レベルのオフセットについて、同じフレーム中のすべてのピクセルが同じＤＣオフセットを有する。
【００８５】
本開示によれば、場合によっては、ＤＣオフセットは、補間データおよび非補間データに関連する異なるサンプル位置について異なって規定できる。したがって、異なるＤＣオフセットは、図４に示す１５個のサブピクセル位置（「ａ」、「ｂ」、「ｃ」、「ｄ」、「ｅ」、「ｆ」、「ｇ」、「ｈ」、「ｉ」、「ｊ」、「ｋ」、「ｌ」、「ｍ」、「ｎ」、および「ｏ」）の各々について規定でき、別のＤＣオフセットは、整数ピクセル位置について規定できる。サンプルベースＤＣオフセットがクォーターペル精度に使用されたとき、合計１６個のＤＣオフセットが、デコーダのためのビデオビット・ストリーム中のシンタックス要素としてコーディングされ、送信され得る。サンプルベースＤＣオフセットを適用することによって、ＭＣユニット３７は、単純であるが、有効な動きセグメンテーションツールを提供することができる。一例として、ビデオ・フレームは、暗くなる空を静止背景として、移動物体を前景として含んでいることがある。この場合、背景および前景は、異なる度合いの照明変化を有することがあり、所与のビデオ・ブロックを識別するピクセルのロケーションによって定義されたロケーション固有のＤＣオフセット値を使用することによって、動き補償ユニット３７は、そのようなロケーション固有のＤＣオフセット値なしに達成され得るよりも効率的な方法で、前景および背景の異なる度合いの照明変化をキャプチャすることが可能である。
【００８６】
上述のように、本開示の技法は、双方向予測ビデオ・ブロックにオフセットを加算することを含む。双方向予測ビデオ・ブロックが参照データの２つの異なるリストからの２つの異なる参照ビデオ・ユニットを使用するので、２つの異なるＤＣオフセットを、異なる参照フレームに関連する各整数およびサブ整数ロケーションについて計算することができる。ただし、望ましい第１のオフセットを、参照データの第１のリスト内の第１の参照ビデオ・ユニットに基づいて各整数およびサブ整数ロケーションについて計算した場合、および望ましい第２のオフセットを、参照データの第２のリスト内の第２の参照ビデオ・ユニットに基づいて各整数およびサブ整数ロケーションについて計算した場合、第１および第２の望ましいオフセットを組み合わせても、必ずしも望ましいオフセットを生じないであろう。たとえば、第１および第２のオフセットの組合せは、望ましいオフセットよりも大きいオフセットを生じることがある。本開示の技法に従って、各整数およびサブ整数ロケーションについて２つの異なるオフセットを一緒に計算して、望ましいオフセットを生成することができる。最初に、１つのリスト、たとえばリスト０についてのオフセットを計算し、次いで、別のリスト、たとえばリスト１についてのオフセットを、他のリスト、たとえばリスト０からの前に判断されたオフセットを考慮に入れることによって計算する。
【００８７】
第１のＤＣオフセットのセットは、リスト０中の最も近い参照フレームについて計算できる。各サブピクセル位置ｓｕｂ＿ｐｏｓ［０］について、ＤＣオフセットを、サブピクセル位置ｓｕｂ＿ｐｏｓ［０］に対応する動きベクトル精度を有する現在のフレーム中のすべてのピクセルの平均と、それらの双予測補間値の平均との間の差として計算することができる。リスト０中のフレーム０についてのサブピクセルオフセットの計算に使用される誤差は、以下の擬似コードに記載されている「ＡｃｃＦｒａｍｅＯｆｆｓｅｔＦ［ｒｅｆ＿ｆｒａｍｅ［０］］」中に累積される。
【数５】
0005646668.tif 000006
【００８８】
上式で、「ｔｍｐ」は予測誤差である。変数「ｆｉｌｔｅｒＦ」は、前方予測のためのサブピクセル予測データを発生するために選択されたフィルタのインデックスを記憶する。このようにして、累積最適化オフセットは、第１のリスト、たとえばリスト０について計算される。
【００８９】
上記で計算されたオフセット、すなわち、「ＡｃｃＦｒａｍｅＯｆｆｓｅｔＦ［ｒｅｆ＿ｆｒａｍｅ［０］］」が、第１のリスト、たとえばリスト０中の最も近接したフレーム中の補間ピクセルに適用された後、他方、または第２のリスト、たとえばリスト１中の最も近接した参照フレームについてオフセットを計算する。上述のように、第１のリスト、たとえばリスト０についての累積オフセットは、第２のリスト、たとえばリスト１についてのオフセットを判断するために使用される。第２のリストについてのオフセットの判断は、以下の擬似コードにおいて示される。
【数６】
0005646668.tif 000007
【００９０】
上式で、「ｔｍｐ」は予測誤差であり、「ｏｆｆｓｅｔＦ」は、第１のリストについて判断された最適化オフセットであり、「ｐｒｅｄＦ」は第１のリストからの予測であり、「ｐｒｅｄＢ」は第２のリストからの予測であり、「ｗ０」は、重み係数、たとえば第１のリストのための第１の重みであり、「ｗ１」は、重み係数、たとえば第２のリストのための第２の重みであり、ＡｃｃＦｒａｍｅＯｆｆｓｅｔＢ［ｂｗ＿ｒｅｆ＿ｉｄｘ］は、累積された誤差である。第１のオフセット値および第２のオフセット値のうちの少なくとも１つに重みを適用することによって、このプロシージャは、予測の重みを考慮に入れ、もしあれば、Ｂスライスにおいて使用された丸めを考慮に入れる。この時点で、各整数およびサブ整数ロケーションについて、一緒に判断される２つのオフセット、すなわち、第１のオフセット（「ｏｆｆｓｅｔＦ」）、たとえば前方オフセットと、第１のオフセットを使用して計算される第２のオフセット（「ｏｆｆｓｅｔＢ」）、たとえば後方オフセットとがある。このようにして、１５個のサブペル位置を有する各整数位置について、３２個のオフセットを計算する。
【００９１】
次に、以下の擬似コードによって示されるように、予測される所与のピクセルについて、所与のピクセル位置の最終オフセット値を計算することにおいて使用される予測誤差（「ｔｍｐ」）を、第１のリストからの予測（「ｐｒｅｄＦ」）、たとえば前方予測と、第１のオフセット（「ｏｆｆｓｅｔＦ」）、たとえば前方オフセットと、第２のリストからの予測（「ｐｒｅｄＢ」）、たとえば後方予測と、第２のオフセット（「ｏｆｆｓｅｔＢ」）、たとえば後方オフセットとを組み合わせることによって判断し、次いで、その結果を除算して予測誤差を生成する。
【数７】
0005646668.tif 000008
【００９２】
上式で、「ｔｍｐ」は予測誤差であり、「ｏｆｆｓｅｔＦ」は、第１のリストについて判断された最適化オフセットであり、「ｐｒｅｄＦ」は第１のリストからの予測であり、「ｏｆｆｓｅｔＢ」は、第２のリストについて判断された最適化オフセットであり、「ｐｒｅｄＢ」は第２のリストからの予測であり、「ｗ０」は第１の重みであり、「ｗ１」は第２の重みであり、「ｄｅｎｏｍ」は正規化項であり、「ＡｃｃＦｒａｍｅＯｆｆｓｅｔＢ［ｂｗ＿ｒｅｆ＿ｉｄｘ］」は、各整数またはサブ整数ピクセル位置についての累積された予測誤差であり、「ＡｃｃＦｒａｍｅＯｆｆｓｅｔＢＣｏｕｎｔ［ｂｗ＿ｒｅｆ＿ｉｄｘ］」は、誤差に対する新しい寄与が累積されるたびに増分されるカウンタである。上記の擬似コード中の「ｉｆ」ルーチンは、すべてのマクロブロックを通して反復するループの一部であり、以下で説明する最終オフセット値の計算はそのループ後に起こる場合があることも留意されたい。さらに、カウンタ「ＡｃｃＦｒａｍｅＯｆｆｓｅｔＢＣｏｕｎｔ［ｂｗ＿ｒｅｆ＿ｉｄｘ］」は、たとえばループの前に、０に初期化できる。上記でわかるように、最も簡単な場合では、他の項に加えて、第１のオフセット予測和を生成するための、第１のリストからの予測（「ｐｒｅｄＦ」）、たとえば前方予測と、第１のオフセット（「ｏｆｆｓｅｔＦ」）、たとえば前方オフセットとを、第２のオフセット予測和を生成するための、第２のリストからの予測（「ｐｒｅｄＢ」）、たとえば後方予測と、第２のオフセット（「ｏｆｆｓｅｔＢ」）、たとえば後方オフセットとともに組み合わせることによって予測誤差「ｔｍｐ」を判断する。第１のオフセット予測和に、第１の重み、たとえばｗ０を乗算し、第２のオフセット予測和に、第２の重み、たとえばｗ１を乗算することができる。第１の重み付けオフセット予測和と第２の重み付けオフセット予測和とを合計して、最終重み付けオフセット予測和を生成することができる。次いで、この最終重み付けオフセット予測和を、２または正規化項、たとえばｄｅｎｏｍで除算することができる。ただし、分母（「ｄｅｎｏｍ」）は、２に等しくなくてもよく、代わりに別の正規化項とすることもできる。
【００９３】
予測誤差が、所与のピクセル位置についての「ＡｃｃＦｒａｍｅＯｆｆｓｅｔＢ［ｂｗ＿ｒｅｆ＿ｉｄｘ］」中に累積された後、次いで、以下の擬似コードで示すように、そのピクセル位置についての最終オフセット値を計算する。
【数８】
0005646668.tif 000009
【００９４】
上記でわかるように、ＡｃｃＦｒａｍｅＯｆｆｓｅｔＢ［ｂｗ＿ｒｅｆ＿ｉｄｘ］中に累積された予測誤差を誤差への寄与の数ＡｃｃＦｒａｍｅＯｆｆｓｅｔＢＣｏｕｎｔ［ｂｗ＿ｒｅｆ＿ｉｄｘ］で除算することによって、最終オフセット値Ｏｆｆｓｅｔ［ｂｗ＿ｒｅｆ＿ｉｄｘ］を計算して、各サブ整数ピクセル位置についての最終オフセット値を生成する。すべての誤差が累積され、その累積された誤差が、誤差に対する寄与の数で除算されるという点で、このプロセスは本質的にピクセル位置当たりの平均誤差を計算する。寄与の数は、動きベクトルが指しているピクセル位置に依存するので、寄与の数は、すべてのピクセル位置について同じというわけではないことに留意されたい。最終オフセット値（「Ｏｆｆｓｅｔ［ｂｗ＿ｒｅｆ＿ｉｄｘ］」）が異なる参照フレームに関連する各整数およびサブ整数ロケーションについて計算された後に、最終オフセット値のこのブロックは、デコーダに送信されるビット・ストリーム中で符号化できる。たとえば、１６個の最終オフセット値のブロックは「Ｐ」フレームについて符号化でき、３２個の最終オフセット値のブロックは双予測フレームについて符号化できる。
【００９５】
予測誤差がすべてのサブピクセル位置からの寄与を組み合わせるということを除いて、フレームＤＣオフセットは同様に計算される。ピクセルが整数位置であるか、または補間されたかとは無関係に、フレームＤＣオフセットは、フレーム中のすべてのピクセルに適用できるオフセットである。フレームＤＣオフセットは、０よりも大きいインデックスを有する参照フレーム、すなわち、符号化されているフレームに最も近い参照フレームではない参照フレームのオフセットを補償するために使用される。
【００９６】
さらに、コード化ユニットのビデオ・ブロックが、たとえば、双方向予測のために、複数の異なる参照フレームを使用するとき、異なる参照フレームに関連する各整数およびサブ整数ロケーションについて異なるＤＣオフセットを計算し、送信することができる。場合によっては、ある参照フレームは単一のフレームベースのＤＣオフセットを備え、他の参照フレームは、いくつかのロケーション固有のＤＣオフセットを有することがある。いくつかの方式では、コーディングされている現在のフレームに時間距離が最も近い参照フレームに関してのみ、ロケーション固有のＤＣオフセットを使用し、他の参照フレームのすべてについては、単一のフレームベースのＤＣオフセットを使用することができる。
【００９７】
ＤＣオフセットをコーディングするために、フレーム当たり１ビットを使用して、単一のフレームベースのＤＣオフセットが使用されるかどうか、または、いくつかのロケーション固有のＤＣオフセットが使用されるかどうかを示すことができる。ＤＣオフセットが整数精度のみを有する場合、これらのオフセットの値を、符号付き指数ゴロム符号を使用してコーディングすることができる。ＤＣオフセットが分数精度を有する場合、整数オフセットの値は、符号付き指数ゴロム符号を使用してコーディングでき、非整数オフセットの値は、符号付き指数ゴロム符号によって規定された、整数オフセットに対する残差を使用してコーディングできる。
【００９８】
たとえば、オフセットのコーディングは、最初に整数オフセットをコーディングし、次いで各部分オフセットをコーディングすることによって行われる。この場合、整数オフセットおよび部分オフセットを別様にコーディングする。整数オフセットは、符号付き指数ゴロム符号を使用してコーディングできる。整数オフセットの絶対値に応じて、部分オフセットを整数オフセットとは別様に量子化することができる。たとえば、整数オフセットが大きい絶対値を有するとき、より粗いレベルの量子化を部分オフセットに対して適用することができる。量子化の後、固定長符号を使用して部分オフセットをコーディングすることができる。
【００９９】
ビデオ・エンコーダは、オフセット値の各々に対して、第１のビット数を所与のオフセット値の整数部分に割り当て、第２のビット数を所与のオフセット値の分数部分に割り当てる量子化ユニット（たとえば、ビデオ・エンコーダ５０のユニット４０）を含むことができ、第１および第２のビット数は、整数部分の絶対値に基づいて判断される。いずれの場合も、ビデオ・エンコーダ５０は、第２のビット数とは異なって第１のビット数を符号化することができる。
【０１００】
上記のように、ＤＣオフセット値は、各コード化ユニットのビット・ストリームの一部としてコーディングできる。したがって、デコーダ側で、デコーダは、単に任意の発生された予測ビデオ・ブロックのピクセルに適切なＤＣオフセット値を適用することができる。デコーダによって使用されるＤＣオフセット値は、各予測ビデオ・ブロックに関連する固有の整数またはサブ整数ピクセル・ロケーションについてのシンタックス要素中で規定できる。たとえば、コード化ユニットのヘッダ中のシンタックス要素は、そのコード化ユニットについて複数のオフセット値の各々を指定するためのフラグまたは値を含むことができる。「オフセット」および「ＤＣオフセット」という用語は、本開示では互換的に使用される。同じそれぞれのピクセル・ロケーションごとに全オフセットが規定される限り、たとえば、整数ロケーションについて１つのオフセットが規定され、可能なサブピクセル・ロケーションごとにいくつかの異なるオフセットが規定される限り、オフセットはＤＣオフセットと呼ばれる。
【０１０１】
図５は、本開示によるビデオ・エンコーダによってビデオ・ブロックを符号化する例示的な方法を示すフローチャートである。最初に、ビデオ・エンコーダ２２の予測ユニット３２は、予測値の２つのブロックを補間する、すなわち、参照データの第１のリスト、たとえばリスト０内の第１の参照ビデオ・ユニットに基づいてサブ整数ピクセル位置に関連する予測値の第１のブロックを補間し、参照データの第２のリスト、たとえばリスト１内の第２の参照ビデオ・ユニットに基づいてサブ整数ピクセル位置に関連する予測値の第２のブロックを補間する（１００）。いくつかの例では、第１の値と第２の値とを補間することは固定補間フィルタによって実行される。別の例では、第１のオフセット値および第２のオフセット値は、整数ピクセル・ロケーションについての１つのオフセット値と、異なるサブ整数ピクセル・ロケーションについてのいくつかのオフセット値とを含む。いくつかの例では、第１のオフセット値および第２のオフセット値は、１５個の異なるサブ整数ピクセル・ロケーションについての１５個の異なるオフセット値を含む。
【０１０２】
予測値の第１および第２のブロックが補間された後、動き補償ユニット３７は、サブ整数ピクセル位置について、予測値の第１のブロックと現在のビデオ・ブロックとに基づいて第１のオフセット値を計算し、第１のオフセット値と予測値の第２のブロックとに基づいて第２のオフセット値を計算する（１０２）。
【０１０３】
第１および第２のオフセット値が計算された後、予測ユニット３２は、予測値の第１のブロックと、予測値の第２のブロックと、第１のオフセット値と、第２のオフセット値とに基づいて、オフセット値の最終ブロックを判断する（１０４）。いくつかの例では、第１のオフセット値と第２のオフセット値とに基づいてオフセット値の最終ブロックを判断することは、第１のオフセット値と第２のオフセット値の少なくとも一方または両方に重みを適用することを含む。
【０１０４】
別の例では、オフセット値の最終ブロックを判断することは、オフセット予測和を生成するために予測値の第１のブロックと予測値の第２のブロックと第１のオフセット値と第２のオフセット値とを合計することと、予測誤差を生成するためにオフセット予測和を２で除算することと、各サブ整数ピクセル位置について予測誤差を累積することと、各サブ整数ピクセル位置についての最終オフセット値を生成するために、各サブ整数ピクセル位置についての累積された予測誤差を予測誤差に対する寄与の数で除算することとを含む。
【０１０５】
いくつかの例では、オフセット値の最終ブロックを判断することは、第１のオフセット予測和を生成するために予測値の第１のブロックと第１のオフセット値とを加算することと、第２のオフセット予測和を生成するために予測値の第２のブロックと第２のオフセット値とを加算することと、第１の重み付けオフセット予測和を生成するために第１のオフセット予測和に第１の重みを乗算し、第２の重み付けオフセット予測和を生成するために第２のオフセット予測和に第２の重みを乗算することと、最終重み付けオフセット予測和を生成するために第１の重み付けオフセット予測和と第２の重み付けオフセット予測和とを加算することと、予測誤差を生成するために最終重み付けオフセット予測和を正規化項で除算することと、各サブ整数ピクセル位置について予測誤差を累積することと、各サブ整数ピクセル位置についての最終オフセット値を生成するために、各サブ整数ピクセル位置についての累積された予測誤差を予測誤差に対する寄与の数で除算することとを含む。
【０１０６】
オフセット値の最終ブロックを判断した後、ビデオ・エンコーダ２２は、オフセット値の最終ブロックに基づいて現在のビデオ・ブロックを符号化する（１０６）。いくつかの例では、ビデオ・エンコーダ２２は、コーディングされた現在のビデオ・ブロックを含むことができるコード化ビット・ストリームの一部として、第１のオフセット値と第２のオフセット値とを符号化する。一例では、第１のオフセット値と第２のオフセット値とを符号化することは、第１のオフセット値および第２のオフセット値の各々、すなわち、所与の整数またはサブ整数ピクセル・ロケーションについての最終オフセット値について、オフセット値の最終ブロックのオフセット値の整数部分に第１のビット数を割り当てることと、オフセット値の最終ブロックのオフセット値の分数部分に第２のビット数を割り当てることとを含み、第１および第２のビット数は、整数部分の絶対値に基づいて判断される。別の例では、本方法は、コード化ビット・ストリームをソース・デバイス１２から宛先デバイス１６に送信することをさらに含む。
【０１０７】
いくつかの例では、オフセット値の最終ブロックは、整数ピクセル・ロケーションについての１つのオフセット値と、異なるサブ整数ピクセル・ロケーションについてのいくつかのオフセット値とを含むことができる。別の例では、オフセット値の最終ブロックは、１５個の異なるサブ整数ピクセル・ロケーションについての１５個の異なるオフセット値を含むことができる。
【０１０８】
本開示の技法はまた、Ｂスライスの望ましいレートひずみを達成するためにフィルタとオフセットとの構成を判断することを対象とする。直下で提示する擬似コードに、Ｂスライスの最良のレートひずみ特性を得る組合せを発見するために、ビデオ・エンコーダ２２によって使用されるフィルタとオフセットとの構成を略述する。
【０１０９】
ａ．パス１：シーケンス・フィルタ、０個のサブピクセルおよび０個のフレームオフセットを使用することによってフレームを符号化する。
【０１１０】
ｂ．ｉｄｘ＝０をもつ参照フレームが現在のフレームから同じ距離を有する場合
ＰＯＣパス：ＰＯＣ重み付け参照フレームに対してシーケンス・フィルタ、０個のサブピクセルおよび０個のフレーム・オフセットを使用することによって、フレームを符号化する。
【０１１１】
パス１の結果とＰＯＣパスの結果とを比較する。
【０１１２】
ＰＯＣパスがより良好である場合
以後、ＰＯＣ重み付け参照フレームを使用する。
【０１１３】
Ｂｅｓｔ＝ＰＯＣパスの結果
他の場合
Ｂｅｓｔ＝パス１の結果
他の場合
Ｂｅｓｔ＝パス１の結果
ｃ．現在のフレームに対してフレーム・フィルタ、サブピクセルおよびフレーム・オフセットを計算する。
【０１１４】
ｄ．パス２：フレーム・フィルタ、サブピクセルおよびフレーム・オフセットを使用することによってフレームを符号化する。
【０１１５】
ｅ．パス２符号化がＢｅｓｔよりも良好である場合
Ｂｅｓｔ＝パス２の結果
パス３：量子化ステップを１だけ増加させ、フレーム・フィルタ、サブピクセルおよびフレーム・オフセットを使用することによってフレームを符号化する。
【０１１６】
他の場合
パス３：量子化ステップを１だけ増加させ、シーケンス・フィルタ、０個のサブピクセルおよび０個のフレーム・オフセットを使用することによってフレームを符号化する。
【０１１７】
ｆ．パス３符号化がＢｅｓｔよりも良好である場合
パス３符号化をビット・ストリームに加算する。
【０１１８】
他の場合
Ｂｅｓｔにおける符号化をビット・ストリームに加算する。
【０１１９】
ｇ．（次のフレームを符号化するために）シーケンス・フィルタを計算する。
【０１２０】
図６Ａ〜図６Ｃは、直上で提示した擬似コードに基づいて、Ｂスライスの望ましいレートひずみを達成するためにフィルタとオフセットとの構成を判断する例示的な方法を示すフローチャートである。擬似コードおよび図６Ａ〜図６Ｃについて一緒に説明する。上記で提示した擬似コード中のステップは、明快のために列挙したものであることに留意されたい。異なるステップを追加のステップにさらに分割し、複数のステップを組み合わせることができる。上記でわかるように、擬似コードのステップａにおいて、オフセットではなく、シーケンス・フィルタを使用して、フレームを符号化する（２００）。符号化されているフレームに関して最適化されるために計算されるフレーム・フィルタとは異なり、シーケンス・フィルタは、過去のフレームのサブセットを使用することによって計算される。フレーム・フィルタの計算のために動きベクトルが必要であるので、フレーム・フィルタは、１つのコーディングパスの後にのみ計算できる。ただし、シーケンス・フィルタは、過去のフレームを使用して計算されるので、第１のコーディングパスに適用できる。シーケンス・フィルタは、過去のフレーム、すなわち、すでに符号化されたフレームに対して計算される。フレーム・フィルタについて説明したのと同様にして、各サブピクセル位置について独立して２乗誤差が配列変数中に累積される。しかしながら、最も最近符号化されたフレームの寄与を加算する前に、配列変数の成分をスケールダウンすることができる。より古いフレームの寄与をスケールダウンすることにより、エンコーダは、より最近の寄与により重く重み付けすることによって過去を「忘れる」ことが可能になる。たとえば、配列変数の成分をスケーリングファクタ２で除算することができるが、他のスケーリングファクタを使用してシステムの「記憶」を増加または減少させることができる。ステップｂにおいて、ｉｄ（「ｉｄｘ」）＝０をもつすべての参照フレームが現在のフレームから同じ距離を有する場合（２０２における「はい」決定）、すなわち、同数のフレームが現在のフレームから参照フレームを分離する場合、ビデオ・エンコーダ２２はピクチャ順序コンテンツ（ＰＯＣ）パスを実行する。ＰＯＣパスから、前方参照フレームと後方参照フレームとが、符号化されているフレームから異なる距離を有するかどうかを推測することが可能である。次いで、距離に反比例するように寄与に重み付けすることが可能である。重み付け予測では、これらの重みは「暗黙的」と呼ばれる。たとえば、フレームＰ１  Ｂ１  Ｂ２  Ｐ２  Ｂ３  Ｂ４  Ｐ３のシーケンスをコーディングするとき、双予測フレームＢ２は、参照フレームＰ１よりも参照フレームＰ２により近く、したがってＰ２の寄与は２／３に重み付けでき、Ｐ１の寄与は１／３に重み付けできる。ＰＯＣ重み付け参照フレームに対して、オフセットなしに、シーケンス・フィルタを使用して、現在のフレームをＰＯＣパスにおいて符号化する（２０４）。
【０１２１】
ステップｂを続けると、次いで、パス１のレートひずみコスト値結果とＰＯＣパスのレートひずみコスト値結果とを比較し、ＰＯＣパスがより低いレートひずみ値を与える場合（２０６における「はい」決定）、ＰＯＣ重み付け参照フレームを使用し（２０８）、変数「Ｂｅｓｔ」をＰＯＣパスの結果に設定する（２１０）。ただし、パス１の結果がＰＯＣパスの結果よりも低いレートひずみコスト値を規定する場合（２０６における「いいえ」決定）、変数「Ｂｅｓｔ」をパス１の結果に設定する（２１２）。ただし、ステップｂの開始において、ｉｄ（「ｉｄｘ」）＝０をもつ参照フレームが現在のフレームから同じ距離を有しない場合（２０２における「いいえ」決定）、変数「Ｂｅｓｔ」をパス１の結果に設定する（２１２）。
【０１２２】
次にステップｃを参照すると、ビデオ・エンコーダ２２が、現在のフレームについてフレーム・フィルタとサブピクセルおよびフレーム・オフセットとを計算する（２１４）。ステップｄにおいて、ビデオ・エンコーダ２２が、ステップｃにおいて計算されたフレーム・フィルタとサブピクセルおよびフレーム・オフセットとを使用して現在のフレームを符号化する、第２のパスまたはパス２を実行する（２１６）。
【０１２３】
ステップｅにおいて、パス２からの符号化が、現在の変数「Ｂｅｓｔ」中の値よりも低いレートひずみ値を生じた場合（２１８における「はい」決定）、変数「Ｂｅｓｔ」をパス２符号化の結果に設定する（２２０）。次いで、量子化ステップを１だけ増加させ、ビデオ・エンコーダ２２がフレーム・フィルタ、サブピクセルおよびフレーム・オフセットを使用してフレームを符号化するように、パス３を実行する（２２２）。ただし、パス２からの符号化が、現在の変数「Ｂｅｓｔ」中の値よりも低いレートひずみ値を規定しない場合（２１８における「いいえ」決定）、量子化ステップを１だけ増加させ、ビデオ・エンコーダ２２がサブピクセルおよびフレーム・オフセットを使用せずにシーケンス・フィルタを使用してフレームを符号化するように、パス３を実行する（２２４）。
【０１２４】
パス３を実行した後、ステップｆにおいて、パス３符号化の結果を、変数「Ｂｅｓｔ」に記憶された結果と比較する。パス３において使用された符号化が、「Ｂｅｓｔ」に記憶された値よりも低いレートひずみ値を生じた場合（２２６における「はい」決定）、パス３において使用されたフィルタおよびオフセット構成をビット・ストリームに加算する（２２８）。パス３において使用された符号化が、「Ｂｅｓｔ」に記憶された値よりも低いレートひずみ値を生じなかった場合（２２６における「いいえ」決定）、変数「Ｂｅｓｔ」に記憶された結果を生成するために使用されたフィルタおよびオフセット構成をビット・ストリームに加算する（２３０）。最後に、ステップｇにおいて、次のフレームを符号化するためにシーケンス・フィルタを計算する（２３２）。したがって、上述のようにして、ビデオ・エンコーダ２２は、Ｂスライスの最良のレートひずみを生じるフィルタおよびオフセットの組合せを選択することが可能である。
【０１２５】
同様に、本開示の技法はまた、Ｐスライスの望ましいレートひずみを達成するためにフィルタとオフセットとの構成を判断することを対象とする。直下で提示する擬似コードに、Ｐスライスの最良のレートひずみ特性を得る組合せを発見するために、ビデオ・エンコーダ２２によって使用されるフィルタとオフセットとの構成を略述する。
【０１２６】
ａ．第１のパスについてサブピクセルおよびフレーム・オフセットを計算する。
【０１２７】
ｂ．パス１：第１のパスについてシーケンス・フィルタ、サブピクセルおよびフレーム・オフセットを使用することによってフレームを符号化する。
【０１２８】
ｃ．現在のフレームに対してフレーム・フィルタ、サブピクセルおよびフレーム・オフセットを計算する。
【０１２９】
ｄ．パス２：フレーム・フィルタ、サブピクセルおよびフレーム・オフセットを使用することによってフレームを符号化する。
【０１３０】
ｅ．パス１の結果とパス２の結果とを比較する。
【０１３１】
ｆ．最良のものの符号化をビット・ストリームに加算する。
【０１３２】
ｇ．（次のフレームを符号化するために）シーケンス・フィルタを計算する。
【０１３３】
上記で提示した擬似コード中のステップは、明快のために列挙したものであることに留意されたい。異なるステップを追加のステップにさらに分割し、複数のステップを組み合わせることができる。上記でわかるように、擬似コードのステップａにおいて、第１のパスについてサブピクセルおよびフレーム・オフセットを計算する。ステップｂにおいて、第１のパス中で、シーケンス・フィルタ、サブピクセルおよびフレーム・オフセットを使用してフレームを符号化する。次いで、ステップｃにおいて、現在のフレームに対して、フレーム・フィルタとサブピクセルおよびフレーム・オフセットとを計算する。
【０１３４】
ステップｄにおいて、ビデオ・エンコーダ２２が、フレーム・フィルタとサブピクセルおよびフレーム・オフセットとを使用してフレームを符号化する第２のパスまたはパス２を実行する。ステップｅにおいて、パス１の結果とパス２の結果とを比較する。ステップｆにおいて、パス１において使用された符号化がより低いレートひずみ値を生じた場合、パス１において使用されたフィルタおよびオフセット構成をビット・ストリームに加算する。ただし、パス２において使用された符号化がより低いレートひずみ値を生じた場合、パス２において使用されたフィルタおよびオフセット構成をビット・ストリームに加算する。最後に、ステップｇにおいて、次のフレームを符号化するためにシーケンス・フィルタを計算する。このようにして、上述の方法で、ビデオ・エンコーダ２２は、Ｐスライスの最良のレートひずみを生じるフィルタおよびオフセットの組合せを選択することが可能である。
【０１３５】
本開示の技法は、ワイヤレス・ハンドセット、集積回路（ＩＣ）またはＩＣのセット（すなわち、チップセット）を含む、多種多様なデバイスまたは装置で実現できる。機能的態様を強調するために与えられた任意の構成要素、モジュールまたはユニットについて説明したが、異なるハードウェアユニットによる実現を必ずしも必要とするわけではない。
【０１３６】
本開示で説明する技法は、少なくとも部分的に、ハードウェア、ソフトウェア、ファームウェア、またはその任意の組合せで実装できる。たとえば、説明する技法の様々な態様は、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲートアレイ（ＦＰＧＡ）、あるいは他の等価集積回路または個別論理回路、ならびにそのような構成要素の任意の組合せを含む１つまたは複数のプロセッサ内で実装できる。「プロセッサ」または「処理回路」という用語は、一般に、単独で、あるいは他の論理回路または他の等価回路との組合せで上記の論理回路のいずれかを指すことがある。
【０１３７】
そのようなハードウェア、ソフトウェア、およびファームウェアは、本開示で説明した様々な動作および関数をサポートするために、同じデバイス内で、または別々のデバイス内で実装できる。さらに、説明したユニット、モジュール、または構成要素のいずれも、個別であるが相互運用可能な論理デバイスとして、一緒に、または別々に実装できる。モジュールまたはユニットとしての様々なフィーチャの図は、様々な機能的態様を強調するものであり、そのようなモジュールまたはユニットが、必ずしも別々のハードウェアまたはソフトウェア構成要素によって実現されなければならないことを暗示しない。そうではなく、１つまたは複数のモジュールあるいはユニットに関連する機能は、別々のハードウェアまたはソフトウェア構成要素によって実行されるか、あるいは共通または別々のハードウェアもしくはソフトウェア構成要素内に組み込まれることがある。
【０１３８】
ソフトウェアで実装する場合、機能は、１つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶するか、あるいはコンピュータ可読媒体を介して送信することができる。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む、コンピュータ記憶媒体と通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスできる任意の利用可能な媒体とすることができる。限定ではなく例として、そのようなコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、あるいは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気記憶デバイス、もしくは命令またはデータ構造の形態の所望のプログラムコードを搬送または記憶するために使用でき、コンピュータによってアクセスできる任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。本明細書で使用するディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザディスク（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）およびブルーレイディスク（disc）を含み、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
【０１３９】
様々な例について説明した。これらおよび他の例は以下の特許請求の範囲の範囲内にある。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［１］  現在のビデオ・ブロックを符号化するためのビデオ符号化方法であって、
エンコーダを介して、参照データの第１のリスト内の第１の参照ビデオ・ユニットに基づいてサブ整数ピクセル位置に関連する予測値の第１のブロックを補間し、参照データの第２のリスト内の第２の参照ビデオ・ユニットに基づいて前記サブ整数ピクセル位置に関連する予測値の第２のブロックを補間することと、
エンコーダを介して、サブ整数ピクセル位置について、予測値の前記第１のブロックと前記現在のビデオ・ブロックとに基づいて第１のオフセット値を計算し、前記第１のオフセット値と予測値の前記第２のブロックとに基づいて第２のオフセット値を計算することと、
エンコーダを介して、予測値の前記第１のブロックと予測値の前記第２のブロックと前記第１のオフセット値と前記第２のオフセット値とに基づいて、オフセット値の最終ブロックを判断することと、
エンコーダを介して、オフセット値の前記最終ブロックに基づいて前記現在のビデオ・ブロックを符号化することと、
を備えるビデオ符号化方法。
［２］  予測値の前記第１のブロックを補間し、予測値の前記第２のブロックを補間することが、固定補間フィルタによって実行される［１］に記載の方法。
［３］  オフセット値の最終ブロックを判断することが、
前記第１のオフセット値および前記第２のオフセット値のうちの少なくとも１つに重みを適用すること、
を備える［１］に記載の方法。
［４］  オフセット値の最終ブロックを判断することが、
オフセット予測和を生成するために、予測値の前記第１のブロックと予測値の前記第２のブロックと前記第１のオフセット値と前記第２のオフセット値とを合計することと、
予測誤差を生成するために前記オフセット予測和を２で除算することと、
各サブ整数ピクセル位置について前記予測誤差を累積することと、
各サブ整数ピクセル位置についての最終オフセット値を生成するために、各サブ整数ピクセル位置についての前記累積された予測誤差を前記予測誤差に対する寄与の数で除算することと、
を備える［１］に記載の方法。
［５］  オフセット値の最終ブロックを判断することが、
第１のオフセット予測和を生成するために、予測値の前記第１のブロックと前記第１のオフセット値とを加算することと、
第２のオフセット予測和を生成するために、予測値の前記第２のブロックと前記第２のオフセット値とを加算することと、
第１の重み付けオフセット予測和を生成するために前記第１のオフセット予測和に第１の重みを乗算し、第２の重み付けオフセット予測和を生成するために前記第２のオフセット予測和に第２の重みを乗算することと、
最終重み付けオフセット予測和を生成するために、前記第１の重み付けオフセット予測和と前記第２の重み付けオフセット予測和とを加算することと、
予測誤差を生成するために前記最終重み付けオフセット予測和を正規化項で除算することと、
各サブ整数ピクセル位置について前記予測誤差を累積することと、
各サブ整数ピクセル位置についての最終オフセット値を生成するために、各サブ整数ピクセル位置についての前記累積された予測誤差を前記予測誤差に対する寄与の数で除算することと、
を備える［１］に記載の方法。
［６］  前記コーディングされた現在のビデオ・ブロックを含むコード化ビット・ストリームの一部としてオフセット値の前記最終ブロックを符号化することをさらに備える［１］に記載の方法。
［７］  前記コード化ビット・ストリームをソース・デバイスから宛先デバイスに送信することをさらに備える［６］に記載の方法。
［８］  オフセット値の前記最終ブロックを符号化することが、オフセット値の前記最終ブロックのオフセット値の整数部分に第１のビット数を割り当てることと、オフセット値の前記最終ブロックの前記オフセット値の分数部分に第２のビット数を割り当てることとを備え、前記第１のビット数および前記第２のビット数が、前記整数部分の絶対値に基づいて判断される［６］に記載の方法。
［９］  オフセット値の前記最終ブロックが、整数ピクセル・ロケーションについての１つのオフセット値と、異なるサブ整数ピクセル・ロケーションについてのいくつかのオフセット値とを含む［６］に記載の方法。
［１０］  オフセット値の前記最終ブロックが、１５個の異なるサブ整数ピクセル・ロケーションについての１５個の異なるオフセット値を含む［９］に記載の方法。
［１１］  ビデオデータを符号化する装置であって、
参照データの第１のリスト内の第１の参照ビデオ・ユニットに基づいてサブ整数ピクセル位置に関連する予測値の第１のブロックを補間し、参照データの第２のリスト内の第２の参照ビデオ・ユニットに基づいて前記サブ整数ピクセル位置に関連する予測値の第２のブロックを補間することと、
サブ整数ピクセル位置について、予測値の前記第１のブロックと前記現在のビデオ・ブロックとに基づいて第１のオフセット値を計算し、前記第１のオフセット値と予測値の前記第２のブロックとに基づいて第２のオフセット値を計算することと、
予測値の前記第１のブロックと予測値の前記第２のブロックと前記第１のオフセット値と前記第２のオフセット値とに基づいて、オフセット値の最終ブロックを判断することと、
オフセット値の前記最終ブロックに基づいて前記現在のビデオ・ブロックを符号化することと、
を行うビデオ・エンコーダを備える装置。
［１２］  前記ビデオ・エンコーダが、予測値の前記第１のブロックと予測値の前記第２のブロックとを補間する少なくとも１つの固定補間フィルタを備える［１１］に記載の装置。
［１３］  オフセット値の前記最終ブロックを判断するために、前記ビデオ・エンコーダが、前記第１のオフセット値および前記第２のオフセット値のうちの少なくとも１つに重みを適用する［１１］に記載の装置。
［１４］  オフセット値の前記最終ブロックを判断するために、前記ビデオ・エンコーダが、オフセット予測和を生成するために予測値の前記第１のブロックと予測値の前記第２のブロックと前記第１のオフセット値と前記第２のオフセット値とを合計することと、予測誤差を生成するために前記オフセット予測和を２で除算することと、各サブ整数ピクセル位置について前記予測誤差を累積することと、各サブ整数ピクセル位置についての最終オフセット値を生成するために、各サブ整数ピクセル位置についての前記累積された予測誤差を前記予測誤差に対する寄与の数で除算することとを行う、［１１］に記載の装置。
［１５］  オフセット値の前記最終ブロックを判断するために、前記ビデオ・エンコーダが、
第１のオフセット予測和を生成するために、予測値の前記第１のブロックと前記第１のオフセット値とを加算することと、
第２のオフセット予測和を生成するために、予測値の前記第２のブロックと前記第２のオフセット値とを加算することと、
第１の重み付けオフセット予測和を生成するために前記第１のオフセット予測和に第１の重みを乗算し、第２の重み付けオフセット予測和を生成するために前記第２のオフセット予測和に第２の重みを乗算することと、
最終重み付けオフセット予測和を生成するために、前記第１の重み付けオフセット予測和と前記第２の重み付けオフセット予測和とを加算することと、
予測誤差を生成するために前記最終重み付けオフセット予測和を正規化項で除算することと、
各サブ整数ピクセル位置について前記予測誤差を累積することと、
各サブ整数ピクセル位置についての最終オフセット値を生成するために、各サブ整数ピクセル位置についての前記累積された予測誤差を前記予測誤差に対する寄与の数で除算することと、
を行う、［１１］に記載の装置。
［１６］  前記ビデオ・エンコーダが、前記コーディングされた現在のビデオ・ブロックを含むコード化ビット・ストリームの一部としてオフセット値の前記最終ブロックを符号化する［１１］に記載の装置。
［１７］  前記ビデオ・エンコーダが、オフセット値の前記最終ブロックのオフセット値の整数部分に第１のビット数を割り当て、オフセット値の前記最終ブロックのオフセット値の分数部分に第２のビット数を割り当て、前記第１のビット数および前記第２のビット数が、前記整数部分の絶対値に基づいて判断される［１６］に記載の装置。
［１８］  オフセット値の前記最終ブロックが、整数ピクセル・ロケーションについての１つのオフセット値と、異なるサブ整数ピクセル・ロケーションについてのいくつかのオフセット値とを含む［１６］に記載の装置。
［１９］  オフセット値の前記最終ブロックが、１５個の異なるサブ整数ピクセル・ロケーションについての１５個の異なるオフセット値を含む［１８］に記載の装置。
［２０］  前記ビデオ・エンコーダがワイヤレス通信デバイスの一部を形成する［１１］に記載の装置。
［２１］  前記ビデオ・エンコーダが集積回路デバイスを備える［１１］に記載の装置。
［２２］  実行時に、ビデオ・エンコーダ内のプロセッサに、
参照データの第１のリスト内の第１の参照ビデオ・ユニットに基づいてサブ整数ピクセル位置に関連する予測値の第１のブロックを補間させ、参照データの第２のリスト内の第２の参照ビデオ・ユニットに基づいて前記サブ整数ピクセル位置に関連する予測値の第２のブロックを補間させ、
サブ整数ピクセル位置について、予測値の前記第１のブロックと前記現在のビデオ・ブロックとに基づいて第１のオフセット値を計算させ、前記第１のオフセット値と予測値の前記第２のブロックとに基づいて第２のオフセット値を計算させ、
予測値の前記第１のブロックと予測値の前記第２のブロックと前記第１のオフセット値と前記第２のオフセット値とに基づいて、オフセット値の最終ブロックを判断させ、
オフセット値の前記最終ブロックに基づいて前記現在のビデオ・ブロックを符号化させる、コンピュータ可読媒体上に符号化された命令を備えるコンピュータ可読媒体。
［２３］  前記プロセッサに、予測値の前記第１のブロックと予測値の前記第２のブロックとを補間させる前記命令が、前記プロセッサに、固定補間フィルタのセットから補間フィルタのセットを選択させる命令を備える［２２］に記載のコンピュータ可読媒体。
［２４］  プロセッサに、オフセット値の最終ブロックを判断させる前記命令が、プロセッサに、前記第１のオフセット値および前記第２のオフセット値のうちの少なくとも１つに重みを適用させる命令を備える［２２］に記載のコンピュータ可読媒体。
［２５］  プロセッサに、オフセット値の最終ブロックを判断させる前記命令が、プロセッサに、
オフセット予測和を生成するために、予測値の前記第１のブロックと予測値の前記第２のブロックと前記第１のオフセット値と前記第２のオフセット値とを合計させ、
予測誤差を生成するために前記オフセット予測和を２で除算させ、
各サブ整数ピクセル位置について前記予測誤差を累積させ、
各サブ整数ピクセル位置についての最終オフセット値を生成するために、各サブ整数ピクセル位置についての前記累積された予測誤差を前記予測誤差に対する寄与の数で除算させる命令を備える［２２］に記載のコンピュータ可読媒体。
［２６］  プロセッサに、オフセット値の最終ブロックを判断させる前記命令が、プロセッサに、
第１のオフセット予測和を生成するために、予測値の前記第１のブロックと前記第１のオフセット値とを加算させ、
第２のオフセット予測和を生成するために、予測値の前記第２のブロックと前記第２のオフセット値とを加算させ、
第１の重み付けオフセット予測和を生成するために前記第１のオフセット予測和に第１の重みを乗算させ、第２の重み付けオフセット予測和を生成するために前記第２のオフセット予測和に第２の重みを乗算させ、
最終重み付けオフセット予測和を生成するために、前記第１の重み付けオフセット予測和と前記第２の重み付けオフセット予測和とを加算させ、
予測誤差を生成するために前記最終重み付けオフセット予測和を正規化項で除算させ、
各サブ整数ピクセル位置について前記予測誤差を累積させ、
各サブ整数ピクセル位置についての最終オフセット値を生成するために、各サブ整数ピクセル位置についての前記累積された予測誤差を前記予測誤差に対する寄与の数で除算させる命令を備える［２２］に記載のコンピュータ可読媒体。
［２７］  プロセッサに、オフセット値の最終ブロックを判断させる前記命令が、プロセッサに、
前記コーディングされた現在のビデオ・ブロックを含むコード化ビット・ストリームの一部として、オフセット値の前記最終ブロックを符号化させる命令を備える［２２］に記載のコンピュータ可読媒体。
［２８］  ソース・デバイスから宛先デバイスへの前記コード化ビット・ストリームの送信を行わせる命令をさらに備える［２７］に記載のコンピュータ可読媒体。
［２９］  プロセッサにオフセット値の前記最終ブロックを符号化させる前記命令が、プロセッサに、オフセット値の前記最終ブロックのオフセット値の整数部分に第１のビット数を割り当てさせ、オフセット値の前記最終ブロックの前記オフセット値の分数部分に第２のビット数を割り当てさせる命令を備え、前記第１のビット数および前記第２のビット数が、前記整数部分の絶対値に基づいて判断される［２７］に記載のコンピュータ可読媒体。
［３０］  オフセット値の前記最終ブロックが、整数ピクセル・ロケーションについての１つのオフセット値と、異なるサブ整数ピクセル・ロケーションについてのいくつかのオフセット値とを含む［２７］に記載のコンピュータ可読媒体。
［３１］  少なくとも１つの最終オフセット値が、１５個の異なるサブ整数ピクセル・ロケーションについての１５個の異なるオフセット値を含む［３０］に記載のコンピュータ可読媒体。
［３２］  ビデオデータを符号化する装置であって、
参照データの第１のリスト内の第１の参照ビデオ・ユニットに基づいてサブ整数ピクセル位置に関連する予測値の第１のブロックを補間し、参照データの第２のリスト内の第２の参照ビデオ・ユニットに基づいて前記サブ整数ピクセル位置に関連する予測値の第２のブロックを補間するための手段と、
サブ整数ピクセル位置について、予測値の前記第１のブロックと前記現在のビデオ・ブロックとに基づいて第１のオフセット値を計算し、前記第１のオフセット値と予測値の前記第２のブロックとに基づいて第２のオフセット値を計算するための手段と、
予測値の前記第１のブロックと予測値の前記第２のブロックと前記第１のオフセット値と前記第２のオフセット値とに基づいて、オフセット値の最終ブロックを判断するための手段と、
オフセット値の前記最終ブロックに基づいて前記現在のビデオ・ブロックを符号化するための手段と
を備える装置。
［３３］  予測値の前記第１のブロックを補間し、予測値の前記第２のブロックを補間するための前記手段が、固定補間フィルタによって実行される［３２］に記載の装置。
［３４］  オフセット値の最終ブロックを判断するための前記手段が、
前記第１のオフセット値および前記第２のオフセット値のうちの少なくとも１つに重みを適用するための手段
を備える［３２］に記載の装置。
［３５］  オフセット値の最終ブロックを判断するための前記手段が、
オフセット予測和を生成するために、予測値の前記第１のブロックと予測値の前記第２のブロックと前記第１のオフセット値と前記第２のオフセット値とを合計するための手段と、
予測誤差を生成するために前記オフセット予測和を２で除算するための手段と、
各サブ整数ピクセル位置について前記予測誤差を累積するための手段と、
各サブ整数ピクセル位置についての最終オフセット値を生成するために、各サブ整数ピクセル位置についての前記累積された予測誤差を前記予測誤差に対する寄与の数で除算するための手段と
を備える［３２］に記載の装置。
［３６］  オフセット値の最終ブロックを判断するための前記手段が、
第１のオフセット予測和を生成するために、予測値の前記第１のブロックと前記第１のオフセット値とを加算するための手段と、
第２のオフセット予測和を生成するために、予測値の前記第２のブロックと前記第２のオフセット値とを加算するための手段と、
第１の重み付けオフセット予測和を生成するために前記第１のオフセット予測和に第１の重みを乗算し、第２の重み付けオフセット予測和を生成するために前記第２のオフセット予測和に第２の重みを乗算するための手段と、
最終重み付けオフセット予測和を生成するために、前記第１の重み付けオフセット予測和と前記第２の重み付けオフセット予測和とを加算するための手段と、
予測誤差を生成するために前記最終重み付けオフセット予測和を正規化項で除算するための手段と、
各サブ整数ピクセル位置について前記予測誤差を累積するための手段と、
各サブ整数ピクセル位置についての最終オフセット値を生成するために、各サブ整数ピクセル位置についての前記累積された予測誤差を前記予測誤差に対する寄与の数で除算するための手段と、
を備える［３２］に記載の装置。
［３７］  前記コーディングされた現在のビデオ・ブロックを含むコード化ビット・ストリームの一部としてオフセット値の前記最終ブロックを符号化するための手段をさらに備える［３２］に記載の装置。
［３８］  前記コード化ビット・ストリームをソース・デバイスから宛先デバイスに送信するための手段をさらに備える［３７］に記載の装置。
［３９］  オフセット値の前記最終ブロックを符号化するための前記手段が、オフセット値の前記最終ブロックのオフセット値の整数部分に第１のビット数を割り当て、オフセット値の前記最終ブロックの前記オフセット値の分数部分に第２のビット数を割り当てるための手段を備え、前記第１のビット数および前記第２のビット数が、前記整数部分の絶対値に基づいて判断される［３７］に記載の装置。
［４０］  オフセット値の前記最終ブロックが、整数ピクセル・ロケーションについての１つのオフセット値と、異なるサブ整数ピクセル・ロケーションについてのいくつかのオフセット値とを含む［３７］に記載の装置。
［４１］  オフセット値の前記最終ブロックが、１５個の異なるサブ整数ピクセル・ロケーションについての１５個の異なるオフセット値を含む［４０］に記載の装置。
［４２］  ビデオ符号化方法であって、
エンコーダを介して、オフセットを使用せずに、シーケンス・フィルタを使用して現在のフレームを第１のパスとして符号化することと、
ｉｄ＝０をもつすべての参照フレームが前記現在のフレームから同数のフレームだけ分離されている場合、
エンコーダを介して、ピクチャ順序コンテンツ（ＰＯＣ）重み付け参照フレームに対して、オフセットを使用せずに、シーケンス・フィルタを使用して前記現在のフレームをＰＯＣパスとして符号化することと、
前記ＰＯＣパスのレートひずみ特性が前記第１のパスのレートひずみ特性よりも低いレートひずみコスト値を規定する場合、
符号化のために前記ＰＯＣ重み付け参照フレームを使用することと、
前記ＰＯＣパスの前記レートひずみ特性を変数として記憶することと、
前記第１のパスの前記レートひずみ特性が、前記ＰＯＣパスの前記レートひずみ特性よりも低いレートひずみコスト値を規定する場合、前記第１のパスの前記レートひずみ特性を前記変数として記憶することと、
ｉｄ＝０をもつすべての参照フレームが前記現在のフレームから同数のフレームだけ分離されていない場合、前記第１のパスの前記レートひずみ特性を前記変数として記憶することと、
エンコーダを介して、前記現在のフレームに対してフレーム・フィルタとオフセットとを計算することと、
エンコーダを介して、計算された前記フレーム・フィルタとオフセットとを使用して前記現在のフレームを第２のパスとして符号化することと、
前記第２のパスのレートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定する場合、
前記第２のパスの前記レートひずみ特性を前記変数として記憶することと、
量子化ステップを１だけ増加させ、計算された前記フレーム・フィルタとオフセットとを使用して、前記現在のフレームを第３のパスとして符号化することと、
前記第２のパスの前記レートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定しない場合、前記量子化ステップを１だけ増加させ、オフセットを使用せずに、前記シーケンス・フィルタを使用して前記現在のフレームを前記第３のパスとして符号化することと、
前記第３のパスのレートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定する場合、前記第３のパスの前記符号化を前記ビット・ストリームに加算することと、
前記第３のパスの前記レートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定しない場合、前記変数の前記符号化を前記ビット・ストリームに加算することと、
エンコーダを介して、次のフレームを符号化するためにシーケンス・フィルタを計算することと、
を備えるビデオ符号化方法。
［４３］  ビデオデータを符号化する装置であって、
オフセットを使用せずに、シーケンス・フィルタを使用して現在のフレームを第１のパスとして符号化することと、
ｉｄ＝０をもつすべての参照フレームが前記現在のフレームから同数のフレームだけ分離されている場合、
ピクチャ順序コンテンツ（ＰＯＣ）重み付け参照フレームに対して、オフセットを使用せずに、シーケンス・フィルタを使用して前記現在のフレームをＰＯＣパスとして符号化することと、
前記ＰＯＣパスのレートひずみ特性が前記第１のパスのレートひずみ特性よりも低いレートひずみコスト値を規定する場合、
符号化するために前記ＰＯＣ重み付け参照フレームを使用することと、
前記ＰＯＣパスの前記レートひずみ特性を変数として記憶することと、
前記第１のパスの前記レートひずみ特性が、前記ＰＯＣパスの前記レートひずみ特性よりも低いレートひずみコスト値を規定する場合、前記第１のパスの前記レートひずみ特性を前記変数として記憶することと、
ｉｄ＝０をもつすべての参照フレームが前記現在のフレームから同数のフレームだけ分離されていない場合、前記第１のパスの前記レートひずみ特性を前記変数として記憶することと、
前記現在のフレームに対してフレーム・フィルタとオフセットとを計算することと、
計算された前記フレーム・フィルタとオフセットとを使用して前記現在のフレームを第２のパスとして符号化することと、
前記第２のパスのレートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定する場合、
前記第２のパスの前記レートひずみ特性を前記変数として記憶することと、
量子化ステップを１だけ増加させ、計算された前記フレーム・フィルタとオフセットとを使用して、前記現在のフレームを第３のパスとして符号化することと、
前記第２のパスの前記レートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定しない場合、前記量子化ステップを１だけ増加させ、オフセットを使用せずに、前記シーケンス・フィルタを使用して前記現在のフレームを前記第３のパスとして符号化することと、
前記第３のパスのレートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定する場合、前記第３のパスの前記符号化を前記ビット・ストリームに加算することと、
前記第３のパスの前記レートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定しない場合、前記変数の前記符号化を前記ビット・ストリームに加算することと、
次のフレームを符号化するためにシーケンス・フィルタを計算することと、
を行うビデオ・エンコーダを備える装置。
［４４］  実行時に、ビデオ・エンコーダ内のプロセッサに、
オフセットを使用せずに、シーケンス・フィルタを使用して現在のフレームを第１のパスとして符号化させ、
ｉｄ＝０をもつすべての参照フレームが前記現在のフレームから同数のフレームだけ分離されている場合、
ピクチャ順序コンテンツ（ＰＯＣ）重み付け参照フレームに対して、オフセットを使用せずに、シーケンス・フィルタを使用して前記現在のフレームをＰＯＣパスとして符号化させ、
前記ＰＯＣパスのレートひずみ特性が前記第１のパスのレートひずみ特性よりも低いレートひずみコスト値を規定する場合、
符号化するために前記ＰＯＣ重み付け参照フレームを使用させ、
前記ＰＯＣパスの前記レートひずみ特性を変数として記憶させ、
前記第１のパスの前記レートひずみ特性が、前記ＰＯＣパスの前記レートひずみ特性よりも低いレートひずみコスト値を規定する場合、前記第１のパスの前記レートひずみ特性を前記変数として記憶させ、
ｉｄ＝０をもつすべての参照フレームが前記現在のフレームから同数のフレームだけ分離されていない場合、前記第１のパスの前記レートひずみ特性を前記変数として記憶させ、
前記現在のフレームに対してフレーム・フィルタとオフセットとを計算させ、
計算された前記フレーム・フィルタとオフセットとを使用して前記現在のフレームを第２のパスとして符号化させ、
前記第２のパスのレートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定する場合、
前記第２のパスの前記レートひずみ特性を前記変数として記憶させ、
量子化ステップを１だけ増加させ、計算された前記フレーム・フィルタとオフセットとを使用して、前記現在のフレームを第３のパスとして符号化させ、
前記第２のパスの前記レートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定しない場合、前記量子化ステップを１だけ増加させ、オフセットを使用せずに、前記シーケンス・フィルタを使用して前記現在のフレームを前記第３のパスとして符号化させ、
前記第３のパスのレートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定する場合、前記第３のパスの前記符号化を前記ビット・ストリームに加算させ、
前記第３のパスの前記レートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定しない場合、前記変数の前記符号化を前記ビット・ストリームに加算させ、
次のフレームを符号化するためにシーケンス・フィルタを計算させる、コンピュータ可読媒体上に符号化された命令を備えるコンピュータ可読媒体。
［４５］  ビデオデータを符号化する装置であって、
エンコーダを介して、オフセットを使用せずに、シーケンス・フィルタを使用して現在のフレームを第１のパスとして符号化するための手段と、
ｉｄ＝０をもつすべての参照フレームが前記現在のフレームから同数のフレームだけ分離されている場合、
エンコーダを介して、ピクチャ順序コンテンツ（ＰＯＣ）重み付け参照フレームに対して、オフセットを使用せずに、シーケンス・フィルタを使用して前記現在のフレームをＰＯＣパスとして符号化するための手段と、
前記ＰＯＣパスのレートひずみ特性が前記第１のパスのレートひずみ特性よりも低いレートひずみコスト値を規定する場合、
符号化のために前記ＰＯＣ重み付け参照フレームを使用するための手段と、
前記ＰＯＣパスの前記レートひずみ特性を変数として記憶するための手段と、
前記第１のパスの前記レートひずみ特性が、前記ＰＯＣパスの前記レートひずみ特性よりも低いレートひずみコスト値を規定する場合、前記第１のパスの前記レートひずみ特性を前記変数として記憶するための手段と、
ｉｄ＝０をもつすべての参照フレームが前記現在のフレームから同数のフレームだけ分離されていない場合、前記第１のパスの前記レートひずみ特性を前記変数として記憶するための手段と、
エンコーダを介して、前記現在のフレームに対してフレーム・フィルタとオフセットとを計算するための手段と、
エンコーダを介して、計算された前記フレーム・フィルタとオフセットとを使用して前記現在のフレームを第２のパスとして符号化するための手段と、
前記第２のパスのレートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定する場合、
前記第２のパスの前記レートひずみ特性を前記変数として記憶するための手段と、
量子化ステップを１だけ増加させ、計算された前記フレーム・フィルタとオフセットとを使用して、前記現在のフレームを第３のパスとして符号化するための手段と、
前記第２のパスの前記レートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定しない場合、前記量子化ステップを１だけ増加させ、オフセットを使用せずに、前記シーケンス・フィルタを使用して前記現在のフレームを前記第３のパスとして符号化するための手段と、
前記第３のパスのレートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定する場合、前記第３のパスの前記符号化を前記ビット・ストリームに加算するための手段と、
前記第３のパスの前記レートひずみ特性が、前記変数に記憶された前記レートひずみ特性よりも低いレートひずみコスト値を規定しない場合、前記変数の前記符号化を前記ビット・ストリームに加算するための手段と、
エンコーダを介して、次のフレームを符号化するためにシーケンス・フィルタを計算するための手段と、
を備える装置。
【図１】
0005646668.tif 000010
【図２】
0005646668.tif 000011
【図３】
0005646668.tif 000012
【図４】
0005646668.tif 000013
【図５】
0005646668.tif 000014
【図６Ａ】
0005646668.tif 000015
【図６Ｂ】
0005646668.tif 000016
【図６Ｃ】
0005646668.tif 000017