(57)【特許請求の範囲】
【請求項１】
プロセッサを用いてビデオデータを符号化する方法であって、
前記プロセッサが、それぞれの第１および第２の参照ビデオデータユニットをそれぞれ備える、ビデオデータの第１および第２の参照コード化ユニットを受信すること、
前記プロセッサが、それぞれ時間的に前記予測コード化ユニットの前または後のいずれかに生じる、前記第１および第２の参照ビデオデータユニットから、前記ビデオデータの予測コード化ユニットの予測ビデオデータユニットの第１のバージョンを予測するために、デフォルト重み付け予測を実行すること、
前記プロセッサが、前記予測ビデオデータユニットの前記第１のバージョンのオフセット値を計算すること、
前記プロセッサが、前記計算されたオフセット値に基づいて暗黙的重み付け予測モードまたは明示的重み付け予測モードのいずれかを選択すること、
前記プロセッサが、前記第１および第２の参照ビデオデータユニットから前記予測ビデオデータユニットの第２のバージョンを予測するために前記選択されたモードを実行すること、および、
前記プロセッサが、前記第１のバージョンまたは前記第２のバージョンのいずれかとして前記予測ビデオデータユニットを符号化すること、
を備える、ビデオデータを符号化する方法。
【請求項２】
前記プロセッサが、前記オフセット値の絶対値を計算すること、および、
前記プロセッサが、前記オフセット値の前記絶対値をしきい値と比較すること、
をさらに備え、
前記プロセッサが暗黙的重み付け予測モードまたは明示的重み付け予測モードのいずれかを選択することは、前記プロセッサが、前記参照ビデオデータユニットから前記予測ビデオデータユニットの前記第２のバージョンを予測するために、前記比較に基づいて前記暗黙的重み付け予測モードまたは前記明示的重み付け予測モードのいずれかを選択することを備える、請求項１に記載の方法。
【請求項３】
前記プロセッサがいずれかの前記選択されたモードを実行することは、
前記プロセッサが、前記オフセット値の前記絶対値が前記しきい値を超えるとき、前記参照ビデオデータユニットから前記予測ビデオデータユニットの前記第２のバージョンを予測するために明示的重み付け予測を実行すること、および、
前記プロセッサが、前記オフセット値の前記絶対値が前記しきい値を超えないとき、前記参照ビデオデータユニットから前記予測ビデオデータユニットの前記第２のバージョンを予測するために暗黙的重み付け予測を実行すること、
を備える、請求項２に記載の方法。
【請求項４】
前記プロセッサが、前記予測ビデオデータユニットの前記第１のバージョンと前記第２のバージョンのどちらが前記ビデオデータをより適切に符号化するかを判断することをさらに備え、
前記プロセッサが前記第１のバージョンまたは前記第２のバージョンのいずれかとして前記予測ビデオデータユニットを符号化することは、前記プロセッサが、前記判断に基づいて前記第１のバージョンまたは前記第２のバージョンのいずれかとして前記予測ビデオデータユニットを符号化することを備える、請求項１に記載の方法。
【請求項５】
前記プロセッサが前記予測ビデオデータユニットの前記第１のバージョンと前記第２のバージョンのどちらが前記ビデオデータをより適切に符号化するかを判断することは、
前記プロセッサが、それぞれ前記第１および第２のバージョンによって導入されるひずみの量を示す、第１および第２のひずみ値を判断するために、前記予測ビデオデータユニットの前記第１および第２のバージョンの各々を、前記ビデオデータの対応する部分と比較すること、
前記プロセッサが、前記それぞれの第１および第２のひずみ値に基づいて前記予測ビデオデータユニットの前記第１および第２のバージョンの第１および第２のコストを計算すること、
前記プロセッサが、前記第１のコストと第２のコストのどちらがより低いかを判断するために前記第１のコストと第２のコストとを比較すること、および、
前記プロセッサが、前記比較に基づいて前記第１のバージョンまたは前記第２のバージョンのいずれかを選択すること、
を備える、請求項４に記載の方法。
【請求項６】
前記プロセッサが前記第１および第２のコストを計算することは、前記プロセッサが、以下のコスト関数：
Fc = d + (λo * R)
に従って、前記第１および第２のコストの各々を計算することを備え、ここで、Ｆcは、前記コスト関数を表す変数を備え、ｄは、前記第１のひずみ値または前記第２のひずみ値のいずれかを表す変数を備え、λoは、ラグランジアンを表す変数を備え、Ｒは、前記ビデオデータが符号化されるビットレートを表す変数を備える、請求項５に記載の方法。
【請求項７】
前記第１の参照コード化ユニットは、時間的に前記予測コード化ユニットの前に生じ、
前記第２の参照コード化ユニットは、時間的に前記予測コード化ユニットの後に生じ、
前記予測コード化ユニットは、双方向予測フレーム（Ｂフレーム）を備え、かつ、
前記第１および第２のコード化ユニットは、独立コード化フレーム（Ｉフレーム）、予測フレーム（Ｐフレーム）、または別のＢフレームのうちの１つをそれぞれ備える、請求項１に記載の方法。
【請求項８】
前記プロセッサが前記第１および第２の参照コード化ユニットを受信することは、前記プロセッサが、第１の参照ビデオブロックを含む第１の参照フレームと、第２の参照ビデオブロックを含む第２の参照フレームと、を受信することを備え、
前記プロセッサが前記デフォルト重み付け予測を実行することは、前記プロセッサが、前記第１および第２の参照ビデオブロックから予測フレームの予測ビデオブロックの第１のバージョンを予測するために前記デフォルト重み付け予測を実行することを備え、前記第１および第２の参照フレームは、時間的に前記予測ビデオフレームの前または後のいずれかに生じ、
前記プロセッサが前記オフセット値を計算することは、前記プロセッサが、前記予測フレームの前記予測ビデオブロックの前記第１のバージョンの前記オフセット値を計算することを備え、
前記プロセッサが前記計算されたオフセット値に基づいて前記暗黙的重み付け予測モードまたは前記明示的重み付け予測モードのいずれかを選択することは、前記プロセッサが、前記計算されたオフセット値に基づいて前記暗黙的重み付け予測モードまたは前記明示的重み付け予測モードのいずれかを選択することを備え、
前記プロセッサが前記選択されたモードを実行することは、前記プロセッサが、前記第１および第２の参照ビデオブロックから前記予測フレームの前記予測ビデオブロックの第２のバージョンを予測するために前記選択されたモードを実行することを備え、かつ、
前記プロセッサが前記予測ビデオデータユニットを符号化することは、前記プロセッサが、前記第１のバージョンまたは前記第２のバージョンのいずれかとして前記予測フレームの前記予測ビデオブロックを符号化することを備える、請求項１に記載の方法。
【請求項９】
前記プロセッサが前記予測ビデオデータユニットを符号化することは、前記プロセッサが、前記予測ビデオデータユニットの前記第２のバージョンが前記明示的重み付け予測を使用して予測された前記第２のバージョンを備えるとき、前記予測ビデオデータユニットを前記予測ビデオデータユニットの前記第２のバージョンとして符号化することと、前記プロセッサが、前記第２のバージョンに加えて前記オフセット値を符号化することと、を備える、請求項１に記載の方法。
【請求項１０】
前記プロセッサは、ビデオエンコーダまたはビデオエンコーダ／デコーダ（ＣＯＤＥＣ）である、請求項１に記載の方法。
【請求項１１】
第１および第２の参照コード化ユニットを記憶するメモリであって、前記第１の参照コード化ユニットが第１の参照ビデオデータユニットを含み、前記第２の参照コード化ユニットが第２の参照ビデオデータユニットを含む、メモリ、および、
それぞれ時間的に前記予測コード化ユニットの前または後のいずれかに生じる、前記第１および第２の参照ビデオデータユニットから、前記ビデオデータの予測コード化ユニットの予測ビデオデータユニットの第１のバージョンを予測するために、デフォルト重み付け予測を実行し、前記予測ビデオデータユニットの前記第１のバージョンのオフセット値を計算し、前記計算されたオフセット値に基づいて暗黙的重み付け予測モードまたは明示的重み付け予測モードのいずれかを選択し、前記第１および第２の参照ビデオデータユニットから前記予測ビデオデータユニットの第２のバージョンを予測するために、前記選択されたモードを実行し、かつ、前記第１のバージョンまたは前記第２のバージョンのいずれかとして前記予測ビデオデータユニットを符号化する、動き補償ユニット、
を含むビデオエンコーダを備える、ビデオデータを符号化する装置。
【請求項１２】
前記動き補償ユニットは、
前記オフセット値の絶対値を計算するオフセット計算モジュール、および、
前記オフセット値の前記絶対値をしきい値と比較するコンパレータ、
を備え、
前記動き補償ユニットは、前記比較に基づいて前記暗黙的重み付け予測モードまたは前記明示的重み付け予測モードのいずれかを選択する、請求項１１に記載の装置。
【請求項１３】
前記動き補償ユニットは、
前記オフセット値の前記絶対値が前記しきい値を超えるとき、前記参照ビデオデータユニットから前記予測ビデオデータユニットの前記第２のバージョンを予測するために明示的重み付け予測を実行する明示的予測モジュール、および、
前記オフセット値の前記絶対値が前記しきい値を超えないとき、前記参照ビデオデータユニットから前記予測ビデオデータユニットの前記第２のバージョンを予測するために暗黙的重み付け予測を実行する暗黙的予測モジュール、
を備える、請求項１２に記載の装置。
【請求項１４】
前記動き補償ユニットは、前記予測ビデオデータユニットの前記第１のバージョンと前記第２のバージョンのどちらが前記ビデオデータをより適切に符号化するかを判断する分析モジュールを含み、
前記動き補償ユニットは、前記判断に基づいて前記第１のバージョンまたは前記第２のバージョンのいずれかとして前記予測ビデオデータユニットを符号化する、請求項１１に記載の装置。
【請求項１５】
前記分析モジュールは、それぞれ前記第１および第２のバージョンによって導入されるひずみの量を示す、第１および第２のひずみ値を判断するために、前記予測ビデオデータユニットの前記第１および第２のバージョンの各々を、前記ビデオデータの対応する部分と比較し、前記それぞれの第１および第２のひずみ値に基づいて前記予測ビデオデータユニットの前記第１および第２のバージョンの第１および第２のコストを計算し、前記第１のコストと第２のコストのどちらがより低いかを判断するために前記第１のコストと第２のコストとを比較し、かつ、前記比較に基づいて前記第１のバージョンまたは前記第２のバージョンのいずれかを選択する、レートひずみ（Ｒ−Ｄ）分析モジュールを備える、請求項１４に記載の装置。
【請求項１６】
前記Ｒ−Ｄ分析モジュールは、以下のコスト関数：
Fc = d + (λo * R)
に従って、前記第１および第２のコストの各々を計算し、ここで、Ｆcは、前記コスト関数を表す変数を備え、ｄは、前記第１のひずみ値または前記第２のひずみ値のいずれかを表す変数を備え、λoは、ラグランジアンを表す変数を備え、Ｒは、前記ビデオデータが符号化されるビットレートを表す変数を備える、請求項１５に記載の装置。
【請求項１７】
前記第１の参照コード化ユニットは、時間的に前記予測コード化ユニットの前に生じ、
前記第２の参照コード化ユニットは、時間的に前記予測コード化ユニットの後に生じ、
前記予測コード化ユニットは、双方向予測フレーム（Ｂフレーム）を備え、かつ、
前記第１および第２のコード化ユニットは、独立コード化フレーム（Ｉフレーム）、予測フレーム（Ｐフレーム）、または別のＢフレームのうちの１つをそれぞれ備える、請求項１１に記載の装置。
【請求項１８】
前記第１および第２のコード化ユニットは、それぞれ第１および第２の参照フレームを備え、
前記第１および第２の参照ビデオデータユニットは、それぞれ前記第１の参照フレームからの第１の参照ビデオブロックと前記第２の参照フレームからの第２の参照ビデオブロックと、を備え、
前記動き補償ユニットは、
前記第１および第２の参照ビデオブロックから予測フレームの予測ビデオブロックの第１のバージョンを予測するために前記デフォルト重み付け予測を実行するデフォルト予測モジュールであって、前記第１および第２の参照フレームが時間的に前記予測ビデオフレームの前または後のいずれかに生じる、デフォルト予測モジュール、
前記予測フレームの前記予測ビデオブロックの前記第１のバージョンの前記オフセット値を計算するオフセット計算モジュール、
前記暗黙的重み付け予測を実施する暗黙的予測モジュール、および、
前記明示的重み付け予測を実施する明示的予測モジュール、
を含み、前記計算されたオフセット値に基づいて、前記暗黙的予測モジュールまたは前記明示的予測モジュールのいずれかが、前記第１および第２の参照ビデオブロックから前記予測フレームの前記予測ビデオブロックの第２のバージョンを予測するために、前記暗黙的重み付け予測または前記明示的重み付け予測のいずれかを実行し、かつ、
前記動き補償ユニットは、前記第１のバージョンまたは前記第２のバージョンのいずれかとして前記予測フレームの前記予測ビデオブロックを符号化する、請求項１１に記載の装置。
【請求項１９】
前記動き補償ユニットは、前記予測ビデオデータユニットの前記第２のバージョンが前記明示的重み付け予測を使用して予測された前記第２のバージョンを備えるとき、前記予測ビデオデータユニットを前記予測ビデオデータユニットの前記第２のバージョンとして符号化し、前記第２のバージョンに加えて前記オフセット値を符号化する、請求項１１に記載の装置。
【請求項２０】
前記装置は、ビデオエンコーダハードウェアまたはビデオエンコーダ／デコーダ（ＣＯＤＥＣ）ハードウェアを備える、請求項１１に記載の装置。
【請求項２１】
ビデオデータの第１および第２の参照コード化ユニットを記憶するための手段であって、前記第１の参照コード化ユニットが第１の参照ビデオデータユニットを含み、前記第２の参照コード化ユニットが第２の参照ビデオデータユニットを含む、記憶するための手段、
それぞれ時間的に前記予測コード化ユニットの前または後のいずれかに生じる、前記第１および第２の参照ビデオデータユニットから、前記ビデオデータの予測コード化ユニットの予測ビデオデータユニットの第１のバージョンを予測するために、デフォルト重み付け予測を実行するための手段、
前記予測ビデオデータユニットの前記第１のバージョンのオフセット値を計算するための手段、
前記第１および第２の参照ビデオデータユニットから前記予測ビデオデータユニットの第２のバージョンを予測するために、前記計算されたオフセット値に基づいて暗黙的重み付け予測または明示的重み付け予測の両方ではなくいずれかを実行するための手段、および、
前記第１のバージョンまたは前記第２のバージョンのいずれかとして前記予測ビデオデータユニットを符号化するための手段、
を含む、ビデオデータを符号化するための手段
を備える、ビデオデータを符号化するデバイス。
【請求項２２】
計算するための前記手段は、
前記オフセット値の絶対値を計算するための手段、および、
前記オフセット値の前記絶対値をしきい値と比較するための手段、
をさらに備え、
前記暗黙的重み付け予測または前記明示的重み付け予測のいずれかを実行するための前記手段は、前記参照ビデオデータユニットから前記予測ビデオデータユニットの前記第２のバージョンを予測するために、前記比較に基づいて前記暗黙的重み付け予測または前記明示的重み付け予測のいずれかを実行する、請求項２１に記載のデバイス。
【請求項２３】
前記暗黙的重み付け予測または前記明示的重み付け予測のいずれかを実行するための前記手段は、
前記オフセット値の前記絶対値が前記しきい値を超えるとき、前記参照ビデオデータユニットから前記予測ビデオデータユニットの前記第２のバージョンを予測するために明示的重み付け予測を実行するための手段、および、
前記オフセット値の前記絶対値が前記しきい値を超えないとき、前記参照ビデオデータユニットから前記予測ビデオデータユニットの前記第２のバージョンを予測するために前記暗黙的重み付け予測を実行するための手段、
を備える、請求項２２に記載のデバイス。
【請求項２４】
前記予測ビデオデータユニットの前記第１のバージョンと前記第２のバージョンのどちらが前記ビデオデータをより適切に符号化するかを判断するための手段をさらに備え、
前記第１のバージョンまたは前記第２のバージョンのいずれかとして前記予測ビデオデータユニットを符号化するための前記手段は、前記判断に基づいて前記第１のバージョンまたは前記第２のバージョンのいずれかとして前記予測ビデオデータユニットを符号化する、請求項２１に記載のデバイス。
【請求項２５】
前記予測ビデオデータユニットの前記第１のバージョンと前記第２のバージョンのどちらが前記ビデオデータをより適切に符号化するかを判断するための前記手段は、
それぞれ前記第１および第２のバージョンによって導入されるひずみの量を示す、第１および第２のひずみ値を判断するために、前記予測ビデオデータユニットの前記第１および第２のバージョンの各々を、前記ビデオデータの対応する部分と比較するための手段、
前記それぞれの第１および第２のひずみ値に基づいて前記予測ビデオデータユニットの前記第１および第２のバージョンの第１および第２のコストを計算するための手段、
前記第１のコストと第２のコストのどちらがより低いかを判断するために前記第１のコストと第２のコストとを比較するための手段、および、
前記比較に基づいて前記第１のバージョンまたは前記第２のバージョンのいずれかを選択するための手段、
を備える、請求項２４に記載のデバイス。
【請求項２６】
前記第１および第２のコストを計算するための前記手段は、以下のコスト関数：
Fc = d + (λo * R)
に従って、前記第１および第２のコストの各々を計算し、ここで、Ｆcは、前記コスト関数を表す変数を備え、ｄは、前記第１のひずみ値または前記第２のひずみ値のいずれかを表す変数を備え、λoは、ラグランジアンを表す変数を備え、Ｒは、前記ビデオデータが符号化されるビットレートを表す変数を備える、請求項２５に記載のデバイス。
【請求項２７】
前記第１の参照コード化ユニットは、時間的に前記予測コード化ユニットの前に生じ、
前記第２の参照コード化ユニットは、時間的に前記予測コード化ユニットの後に生じ、
前記予測コード化ユニットは、双方向予測フレーム（Ｂフレーム）を備え、かつ、
前記第１および第２のコード化ユニットは、独立コード化フレーム（Ｉフレーム）、予測フレーム（Ｐフレーム）、または別のＢフレームのうちの１つをそれぞれ備える、請求項２１に記載のデバイス。
【請求項２８】
前記第１および第２の異なる参照コード化ユニットを記憶するための前記手段は、第１の参照ビデオブロックを含む第１の参照フレームと、第２の参照ビデオブロックを含む第２の参照フレームと、を記憶し、
前記デフォルト重み付け予測を実行するための前記手段は、前記第１および第２の参照ビデオブロックから予測フレームの予測ビデオブロックの第１のバージョンを予測するために前記デフォルト重み付け予測を実行し、前記第１および第２の参照フレームが時間的に前記予測ビデオフレームの前または後のいずれかに生じ、
前記オフセット値を計算するための前記手段は、前記予測フレームの前記予測ビデオブロックの前記第１のバージョンの前記オフセット値を計算し、
前記計算されたオフセット値に基づいて前記暗黙的重み付け予測または前記明示的重み付け予測のいずれかを実行するための前記手段は、前記第１および第２の参照ビデオブロックから前記予測フレームの前記予測ビデオブロックの第２のバージョンを予測するために、前記計算されたオフセット値に基づいて、前記暗黙的重み付け予測または前記明示的重み付け予測のいずれかを実行し、かつ、
前記予測ビデオデータユニットを符号化するための前記手段は、前記第１のバージョンまたは前記第２のバージョンのいずれかとして前記予測フレームの前記予測ビデオブロックを符号化する、請求項２１に記載のデバイス。
【請求項２９】
前記予測ビデオデータユニットを符号化するための前記手段は、前記予測ビデオデータユニットの前記第２のバージョンが前記明示的重み付け予測を使用して予測された前記第２のバージョンを備えるとき、前記予測ビデオデータユニットを前記予測ビデオデータユニットの前記第２のバージョンとして符号化し、前記第２のバージョンに加えて前記オフセット値を符号化する、請求項２１に記載のデバイス。
【請求項３０】
前記デバイスは、ビデオエンコーダハードウェアまたはビデオエンコーダ／デコーダ（ＣＯＤＥＣ）ハードウェアによって実行される、請求項２１に記載のデバイス。
【請求項３１】
プログラマブルプロセッサにビデオデータ符号化処理を実行させるためのプログラムを記録したコンピュータ可読記録媒体であって、前記プログラムは、
前記プログラマブルプロセッサに、それぞれの第１および第２の参照ビデオデータユニットをそれぞれ備える、ビデオデータの第１および第２の参照コード化ユニットを受信させるためのコード、
前記プログラマブルプロセッサに、それぞれ時間的に前記予測コード化ユニットの前または後のいずれかに生じる、前記第１および第２の参照ビデオデータユニットから、前記ビデオデータの予測コード化ユニットの予測ビデオデータユニットの第１のバージョンを予測するために、デフォルト重み付け予測を実行させるためのコード、
前記プログラマブルプロセッサに、前記予測ビデオデータユニットの前記第１のバージョンのオフセット値を計算させるためのコード、
前記プログラマブルプロセッサに、前記計算されたオフセット値に基づいて暗黙的重み付け予測モードまたは明示的重み付け予測モードのいずれかを選択させるためのコード、
前記プログラマブルプロセッサに、前記第１および第２の参照ビデオデータユニットから前記予測ビデオデータユニットの第２のバージョンを予測するために前記選択されたモードを実行させるためのコード、および、
前記プログラマブルプロセッサに、前記第１のバージョンまたは前記第２のバージョンのいずれかとして前記予測ビデオデータユニットを符号化させるためのコード、
を備える、コンピュータ可読記録媒体。
【請求項３２】
前記プログラムは、
前記プログラマブルプロセッサに、前記オフセット値の絶対値を計算させるためのコード、
前記プログラマブルプロセッサに、前記オフセット値の前記絶対値をしきい値と比較させるためのコード、および、
前記プログラマブルプロセッサに、前記比較に基づいて前記暗黙的重み付け予測モードまたは前記明示的重み付け予測モードのいずれかを選択させるためのコード、
をさらに備える、請求項３１に記載のコンピュータ可読記録媒体。
【請求項３３】
前記プログラマブルプロセッサに前記選択されたモードを実行させるためのコードは、
前記プログラマブルプロセッサに、前記オフセット値の前記絶対値が前記しきい値を超えるとき、前記参照ビデオデータユニットから前記予測ビデオデータユニットの前記第２のバージョンを予測するために前記明示的重み付け予測を実行させるためのコード、および、
前記プログラマブルプロセッサに、前記オフセット値の前記絶対値が前記しきい値を超えないとき、前記参照ビデオデータユニットから前記予測ビデオデータユニットの前記第２のバージョンを予測するために前記暗黙的重み付け予測を実行させるためのコード、
を備える、請求項３２に記載のコンピュータ可読記録媒体。
【請求項３４】
前記プログラムは、前記プログラマブルプロセッサに、前記予測ビデオデータユニットの前記第１のバージョンと前記第２のバージョンのどちらが前記ビデオデータをより適切に符号化するかを判断させるためのコードをさらに備え、
前記プログラマブルプロセッサに前記予測ビデオデータユニットを符号化させるためのコードは、前記プログラマブルプロセッサに、前記判断に基づいて前記第１のバージョンまたは前記第２のバージョンのいずれかとして前記予測ビデオデータユニットを符号化させるためのコードをさらに備える、請求項３１に記載のコンピュータ可読記録媒体。
【請求項３５】
前記プログラマブルプロセッサに前記予測ビデオデータユニットの前記第１のバージョンと前記第２のバージョンのどちらが前記ビデオデータをより適切に符号化するかを判断させるためのコードは、
前記プログラマブルプロセッサに、それぞれ前記第１および第２のバージョンによって導入されるひずみの量を示す、第１および第２のひずみ値を判断するために、前記予測ビデオデータユニットの前記第１および第２のバージョンの各々を、前記ビデオデータの対応する部分と比較させるためのコード、
前記プログラマブルプロセッサに、前記それぞれの第１および第２のひずみ値に基づいて前記予測ビデオデータユニットの前記第１および第２のバージョンの第１および第２のコストを計算させるためのコード、
前記プログラマブルプロセッサに、前記第１のコストと第２のコストのどちらがより低いかを判断するために前記第１のコストと第２のコストとを比較させるためのコード、および、
前記プログラマブルプロセッサに、前記比較に基づいて前記第１のバージョンまたは前記第２のバージョンのいずれかを選択させるためのコード、
を備える、請求項３４に記載のコンピュータ可読記録媒体。
【請求項３６】
前記プログラマブルプロセッサに前記第１および第２のコストを計算させるためのコードは、前記プログラマブルプロセッサに、以下のコスト関数：
Fc = d + (λo * R)
に従って、前記第１および第２のコストの各々を計算させるためのコードを備え、ここで、Ｆcは、前記コスト関数を表す変数を備え、ｄは、前記第１のひずみ値または前記第２のひずみ値のいずれかを表す変数を備え、λoは、ラグランジアンを表す変数を備え、Ｒは、前記ビデオデータが符号化されるビットレートを表す変数を備える、請求項３５に記載のコンピュータ可読記録媒体。
【請求項３７】
前記第１の参照コード化ユニットは、時間的に前記予測コード化ユニットの前に生じ、
前記第２の参照コード化ユニットは、時間的に前記予測コード化ユニットの後に生じ、
前記予測コード化ユニットは、双方向予測フレーム（Ｂフレーム）を備え、かつ、
前記第１および第２のコード化ユニットは、独立コード化フレーム（Ｉフレーム）、予測フレーム（Ｐフレーム）、または別のＢフレームのうちの１つをそれぞれ備える、請求項３１に記載のコンピュータ可読記録媒体。
【請求項３８】
前記プログラマブルプロセッサに前記第１および第２の参照コード化ユニットを受信させるためのコードは、前記プログラマブルプロセッサに、第１の参照ビデオブロックを含む第１の参照フレームと、第２の参照ビデオブロックを含む第２の参照フレームと、を受信させるためのコードを備え、
前記プログラマブルプロセッサに前記デフォルト重み付け予測を実行させるためのコードは、前記プログラマブルプロセッサに、前記第１および第２の参照ビデオブロックから予測フレームの予測ビデオブロックの第１のバージョンを予測するために前記デフォルト重み付け予測を実行させるためのコードを備え、前記第１および第２の参照フレームが時間的に前記予測ビデオフレームの前または後のいずれかに生じ、
前記プログラマブルプロセッサに前記オフセット値を計算させるためのコードは、前記プログラマブルプロセッサに、前記予測フレームの前記予測ビデオブロックの前記第１のバージョンの前記オフセット値を計算させるためのコードを備え、
前記プログラマブルプロセッサに前記計算されたオフセット値に基づいて暗黙的重み付け予測モードまたは明示的重み付け予測モードのいずれかを選択させるためのコードは、前記プログラマブルプロセッサに、前記計算されたオフセット値に基づいて前記暗黙的重み付け予測モードまたは前記明示的重み付け予測モードのいずれかを選択させるためのコードを備え、
前記プログラマブルプロセッサに前記選択されたモードを実行させるためのコードは、前記プログラマブルプロセッサに、前記第１および第２の参照ビデオブロックから前記予測フレームの前記予測ビデオブロックの第２のバージョンを予測するために前記選択されたモードを実行させるためのコードを備え、かつ、
前記プログラマブルプロセッサに前記予測ビデオデータユニットを符号化させるためのコードは、前記プログラマブルプロセッサに、前記第１のバージョンまたは前記第２のバージョンのいずれかとして前記予測フレームの前記予測ビデオブロックを符号化させるためのコードを備える、請求項３１に記載のコンピュータ可読記録媒体。
【請求項３９】
前記プログラマブルプロセッサに前記予測ビデオデータユニットを符号化させるためのコードは、前記プログラマブルプロセッサに、前記予測ビデオデータユニットの前記第２のバージョンが前記明示的重み付け予測を使用して予測された前記第２のバージョンを備えるとき、前記予測ビデオデータユニットを前記予測ビデオデータユニットの前記第２のバージョンとして符号化させ、前記第２のバージョンに加えて前記オフセット値を符号化させるためのコードを備える、請求項３１に記載のコンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、その内容全体が参照により本明細書に組み込まれる、２００８年１０月６日に出願された米国仮出願第６１／１０３，１００号の利益を主張する。
【０００２】
本開示は、デジタルビデオに関し、より詳細には、デジタルビデオデータをコーディングするための技法に関する。
【背景技術】
【０００３】
デジタルビデオデータを符号化および復号するために、いくつかのビデオ符号化および復号技法が開発されてきた。たとえば、Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＭＰＥＧ）は、ＭＰＥＧ−１、ＭＰＥＧ−２、およびＭＰＥＧ−４を含むいくつかの技法を開発した。他の例には、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｔｅｌｅｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｕｎｉｏｎ（ＩＴＵ）−Ｔ  Ｈ．２６３規格、ならびにＩＴＵ−Ｔ  Ｈ．２６４規格およびその相当物、ＩＳＯ／ＩＥＣ  ＭＰＥＧ−４，Ｐａｒｔ１０、すなわち、Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＡＶＣ）がある。これらのビデオ規格は、データ量を低減するために圧縮された形でデータを符号化することによって、ビデオデータの効率的な送信および記憶をサポートする。
【０００４】
ビデオ圧縮は、ビデオシーケンスに固有の冗長性を低減するために空間予測および／または時間予測を行い得る。イントラコーディングは、同じビデオフレーム内のビデオブロックの空間冗長性を低減するために空間予測を使用する。インターコーディングは、連続するビデオフレーム中のビデオブロック間の時間冗長性を低減するために時間予測を使用する。インターコーディングの場合、ビデオエンコーダは、１つまたは複数の参照フレーム中の対応する予測ビデオブロックに対するビデオブロックの変位を示す動きベクトルを発生するために、動き推定を実行する。
【０００５】
ソースデバイスは、デジタルビデオデータを符号化するために、上記のビデオ符号化技法のうちの１つを採用することができる。ソースデバイスは、符号化ビデオデータをアーカイブし、および／または符号化ビデオデータを送信チャネルによって宛先デバイスに送信する。送信チャネルは、有線および／またはワイヤレス通信媒体を利用することができる。宛先デバイスは、符号化ビデオデータを受信し、再生のために元のデジタルビデオデータを復元するために、その受信したビデオデータを復号する。多くのデバイスは、組み合わせられていわゆるコーデックになり得る、エンコーダとデコーダの両方を含む。
【発明の概要】
【０００６】
概して、本開示は、少なくとも２つの参照コード化ユニットから、予測コード化ユニットと呼ばれ得るビデオデータの第３のコード化ユニットを予測するための予測モードを効率的に選択するための技法について説明する。参照コード化ユニットは、前にコーディングされ、予測コード化ユニットを予測するための基準を与える、コード化ユニットを指す。特に、これらの参照コード化ユニットは、時間的に予測コード化ユニットの前または後のいずれかに存することができる。一般に、ビデオエンコーダは、予測モードを選択するために必要とされる予測コーディングパスの数を低減することによってコーディング効率を改善するための技法を実装する。それらの技法は、適切な予測モードを選択するために必要な、一般に計算動作と呼ばれ得るコーディングパスの数を低減することができるので、それらの技法は、効率的な電力消費を促進することもできる。言い換えれば、ビデオエンコーダは、複数の予測モードのそれぞれ及びすべてを実施する必要なしに、それら複数の予測モードから一つの予測モードをインテリジェントに事前選択し、次いで、複数の予測モードのうちの最も適切な予測モードを選択するために、各予測の結果に対して比較分析を実行し得る。
【０００７】
より詳細には、ビデオエンコーダは、Ｂフレームと呼ばれる、特定のタイプの予測コード化ユニットのビデオデータユニットを予測するための動き補償双方向予測モードを効率的に選択するために、本開示の技法を実装することができる。一例として、ＩＴＵ−Ｔ  Ｈ．２６４規格およびその相当物ＩＳＯ／ＩＥＣ  ＭＰＥＧ−４，Ｐａｒｔ１０、すなわち、Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＡＶＣ）規格内で、Ｂフレームのビデオデータユニットを予測するための３つの動き補償双方向予測モードが定義されている。これらの双方向予測モードの各々は、ビデオデータ中で時間的にＢフレームの前または後のいずれかに生じるＩフレームまたはＰフレームのいずれかなど、別々のまたは異なる参照コード化ユニット内に含まれる、少なくとも２つの参照ビデオデータユニットからＢフレームのビデオデータユニットを予測する。
【０００８】
第１のモードは、たとえば、参照ビデオユニットのピクセル値を平均化し、それによってＢフレームの予測ビデオデータユニットを予測するために、参照ブロックの各々にデフォルトまたは既知の重みを適用する、デフォルト重み付け予測モードと呼ばれる。第２のモードは、重みが、ビデオエンコーダによって明示的に定義され、予測ビデオデータユニットの予測を調整するために使用される、明示的重み付け予測モードと呼ばれる。第３のモードは、予測コード化ユニットを予測するために、重みがそれぞれ参照コード化ユニットまたは参照コード化ユニットの参照ビデオデータユニットの分析によってビデオエンコーダによって暗黙的に判断される、暗黙的重み付け予測モードと呼ばれる。
【０００９】
ビデオエンコーダは、本開示の技法によれば、第３のコード化ユニットの３つのバージョンを発生するためにこれらの予測モードの３つすべてを実行するのではなく、２つのバージョンのみを発生するためにこれらの３つの予測モードのうちの２つのみを効率的に実行し得る。したがって、ビデオエンコーダは、２つのバージョンのいずれがビデオデータの対応する部分をより適切に表すかを判断するために、３つではなく２つのバージョンを分析するだけでよい。この点で、ビデオエンコーダは、計算動作、たとえば、予測コーディングパスの数を低減するとともに、効率的な電力消費を促進することもできる。
【００１０】
一態様では、ビデオデータを符号化する方法は、それぞれの第１および第２の参照ビデオデータユニットをそれぞれ備える、ビデオデータの第１および第２の参照コード化ユニットを受信することと、それぞれ時間的に予測コード化ユニットの前または後のいずれかに生じる、第１および第２の参照ビデオデータユニットから、ビデオデータの予測コード化ユニットの予測ビデオデータユニットの第１のバージョンを予測するために、デフォルト重み付け予測を実行することと、予測ビデオデータユニットの第１のバージョンのオフセット値を計算することと、を備える。本方法は、計算されたオフセット値に基づいて、暗黙的重み付け予測モードまたは明示的重み付け予測モードのいずれかを選択することと、第１および第２の参照ビデオデータユニットから予測ビデオデータユニットの第２のバージョンを予測するために、選択されたモードを実行することと、第１のバージョンまたは第２のバージョンのいずれかとして予測ビデオデータユニットを符号化することと、をさらに備える。
【００１１】
別の態様では、ビデオデータを符号化する装置は、第１および第２の参照コード化ユニットを記憶するメモリを含むビデオエンコーダであって、第１の参照コード化ユニットが第１の参照ビデオデータユニットを含み、第２の参照コード化ユニットが第２の参照ビデオデータユニットを含む、ビデオエンコーダと、動き補償ユニットと、を備える。動き補償ユニットは、それぞれ時間的に予測コード化ユニットの前または後のいずれかに生じる、第１および第２の参照ビデオデータユニットから、ビデオデータの予測コード化ユニットの予測ビデオデータユニットの第１のバージョンを予測するために、デフォルト重み付け予測を実行し、予測ビデオデータユニットの第１のバージョンのオフセット値を計算し、計算されたオフセット値に基づいて暗黙的重み付け予測モードまたは明示的重み付け予測モードのいずれかを選択し、第１および第２の参照ビデオデータユニットから予測ビデオデータユニットの第２のバージョンを予測するために、選択されたモードを実行し、第１のバージョンまたは第２のバージョンのいずれかとして予測ビデオデータユニットを符号化する。
【００１２】
別の態様では、ビデオデータを符号化するデバイスは、ビデオデータを符号化するための手段を備える。ビデオデータを符号化するための手段は、ビデオデータの第１および第２の参照コード化ユニットを記憶するための手段であって、第１の参照コード化ユニットが第１の参照ビデオデータユニットを含み、第２の参照コード化ユニットが第２の参照ビデオデータユニットを含む、記憶するための手段と、それぞれ時間的に予測コード化ユニットの前または後のいずれかに生じる、第１および第２の参照ビデオデータユニットから、ビデオデータの予測コード化ユニットの予測ビデオデータユニットの第１のバージョンを予測するために、デフォルト重み付け予測を実行するための手段と、を含む。ビデオデータを符号化するための手段は、予測ビデオデータユニットの第１のバージョンのオフセット値を計算するための手段と、第１および第２の参照ビデオデータユニットから予測ビデオデータユニットの第２のバージョンを予測するために、計算されたオフセット値に基づいて暗黙的重み付け予測または明示的重み付け予測の両方ではなくいずれかを実行するための手段と、第１のバージョンまたは第２のバージョンのいずれかとして予測ビデオデータユニットを符号化するための手段と、を含む。
【００１３】
別の態様では、コンピュータ可読媒体は、プログラマブルプロセッサに、それぞれの第１および第２の参照ビデオデータユニットをそれぞれ備える、ビデオデータの第１および第２の参照コード化ユニットを受信することと、それぞれ時間的に予測コード化ユニットの前または後のいずれかに生じる、第１および第２の参照ビデオデータユニットから、ビデオデータの予測コード化ユニットの予測ビデオデータユニットの第１のバージョンを予測するために、デフォルト重み付け予測を実行することと、予測ビデオデータユニットの第１のバージョンのオフセット値を計算することと、計算されたオフセット値に基づいて暗黙的重み付け予測モードまたは明示的重み付け予測モードのいずれかを選択することと、第１および第２の参照ビデオデータユニットから予測ビデオデータユニットの第２のバージョンを予測するために、選択されたモードを実行することと、第１のバージョンまたは第２のバージョンのいずれかとして予測ビデオデータユニットを符号化することと、を行わせるための命令を備える。
【００１４】
本発明の１つまたは複数の実施形態の詳細は、添付の図面および以下の説明に記載されている。本発明の他の特徴、目的、および利点は、説明および図面、ならびに特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１５】
【図１】図１は、本開示の技法を実装することができる１つの例示的なビデオ符号化および復号システムを示すブロック図である。
【図２】図２は、本開示に一致するオフセット技法を実行し得るビデオエンコーダの例を示すブロック図である。
【図３】図３は、図２に示されている動き補償ユニットの一例をより詳細に示すブロック図である。
【図４】図４は、本開示で説明される技法を実行する際のビデオエンコーダの例示的な動作を示すフローチャートである。
【図５】図５は、本開示で説明される技法を実行する際のビデオエンコーダの例示的な動作をより詳細に示すフローチャートである。
【図６】図６は、コード化ユニットの例示的な時間的順序付きシーケンスを示す図である。
【発明を実施するための形態】
【００１６】
概して、本開示では、少なくとも２つの参照コード化ユニットから、予測コード化ユニットと呼ばれ得るビデオデータの第３のコード化ユニットを予測するための予測モードを効率的に選択するための技法について説明する。参照コード化ユニットは、前にコーディングされ、第３のコード化ユニットを予測するための基準を与える、コード化ユニットを指す。特に、これらの参照コード化ユニットは、時間的に第３のコード化ユニットの前または後のいずれかに存することができる。一般に、ビデオエンコーダは、予測モードを選択するために必要とされる予測コーディングパスの数を低減することによってコーディング効率を改善するための技法を実装する。それらの技法は、最適またはより適切な予測モードを選択するために必要な、一般に計算動作と呼ばれ得るコーディングパスの数を低減することができるので、それらの技法は、効率的な電力消費を促進することもできる。言い換えれば、ビデオエンコーダは、複数の予測モードのそれぞれ及びすべてを実施する必要なしに、それら複数の予測モードから一つの予測モードをインテリジェントに事前選択し、次いで、最も適切な予測モードを選択するために、各予測の結果に対して比較分析を実行し得る。
【００１７】
より詳細には、ビデオエンコーダは、Ｂフレームと呼ばれる、特定のタイプの予測コード化ユニットのビデオデータユニットを予測するための動き補償双方向予測モードを効率的に選択するために、本開示の技法を実装することができる。一例として、ＩＴＵ−Ｔ  Ｈ．２６４規格およびその相当物ＩＳＯ／ＩＥＣ  ＭＰＥＧ−４，Ｐａｒｔ１０、すなわち、Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＡＶＣ）規格内で、Ｂフレームのビデオデータユニットを予測するための３つの動き補償双方向予測モードが定義されている。これらの双方向予測モードの各々は、それぞれ時間的にＢフレームの前または後のいずれかに生じるＩフレームまたはＰフレームのいずれかなど、別々のまたは異なる参照コード化ユニット内に含まれる、少なくとも２つの参照ビデオデータユニットから、Ｂフレームのビデオデータユニットを予測する。
【００１８】
第１のモードは、たとえば、参照ビデオユニットのピクセル値を平均化し、それによってＢフレームの予測ビデオデータユニットを予測するために、参照ブロックの各々にデフォルトまたは既知の重みを適用する、デフォルト重み付け予測モードと呼ばれる。第２のモードは、重みが、ビデオエンコーダによって明示的に定義される、明示的重み付け予測モードと呼ばれる。第３のモードは予測コード化ユニットを予測するために、重みがそれぞれ参照コード化ユニットまたは参照コード化ユニットの参照ビデオデータユニットの分析によってビデオエンコーダによって暗黙的に判断される、暗黙的重み付け予測モードと呼ばれる。明示的重み付け予測モードに関しては、ビデオエンコーダが重みを明示的に符号化するので、名称が「明示的」重み付け予測である。暗黙的重み付け予測モードに関しては、ビデオエンコーダは重みを明示的に符号化せず、むしろ、デコーダが、重みを判断するためにビデオエンコーダによって使用されるのと同じ重み判断アルゴリズムを利用する。言い換えれば、ビデオエンコーダは、重みを明示的に符号化しそれによってデコーダが同じ重みを判断するための追加の動作を実行する必要をなくすのではなく、重みを暗黙的に符号化し、これらの追加の動作を実行することをデコーダに要求する。
【００１９】
ビデオエンコーダは、本開示の技法によれば、第３のコード化ユニットの３つのバージョンを発生するためにこれらの予測モードの３つすべてを実行するのではなく、２つのバージョンのみを発生するためにこれらの３つの予測モードのうちの２つのみを効率的に実行し得る。したがって、ビデオエンコーダは、２つのバージョンのいずれがビデオデータの対応する部分をより適切に表すかを判断するために、３つではなく２つのバージョンを分析するだけでよい。この点で、ビデオエンコーダは、計算動作、たとえば、予測コーディングパスの数を低減するとともに、効率的な電力消費を促進することもできる。
【００２０】
図１は、本開示の技法を実装することができる１つの例示的なビデオ符号化および復号システム１０を示すブロック図である。図１に示すように、システム１０は、通信チャネル１５を介して符号化ビデオを宛先デバイス１６に送信するソースデバイス１２を含む。ソースデバイス１２および宛先デバイス１６は、広範囲のデバイスのいずれかを備えることができる。場合によっては、ソースデバイス１２および宛先デバイス１６は、いわゆるセルラー電話または衛星無線電話のワイヤレスハンドセットなどのワイヤレス通信デバイス、または通信チャネル１５を介してビデオ情報を伝達することができ、その場合、通信チャネル１５がワイヤレスである任意のワイヤレスデバイスを備える。ただし、コード化ユニットを予測する予測アルゴリズムまたはモードの効率的な選択に関係する本開示の技法は、必ずしもワイヤレス適用例または設定に限定されるわけではない。
【００２１】
図１の例では、ソースデバイス１２は、ビデオソース２０と、ビデオエンコーダ２２と、変調器／復調器（モデム）２３と、送信機２４と、を含むことができる。宛先デバイス１６は、受信機２６と、モデム２７と、ビデオデコーダ２８と、表示デバイス３０と、を含むことができる。本開示によれば、ソースデバイス１２のビデオエンコーダ２２は、ビデオ符号化プロセスの一部として本開示の効率的な選択技法のうちの１つまたは複数を適用するように構成され得る。
【００２２】
図１の図示のシステム１０は例示にすぎない。本開示の効率的な選択技法は、動き補償予測をサポートする任意の符号化デバイスによって実行され得る。ソースデバイス１２および宛先デバイス１６は、ソースデバイス１２が宛先デバイス１６に送信するためのコード化ビデオデータを発生するような、コーディングデバイスの例にすぎない。デバイス１２、１６の各々がビデオ符号化コンポーネントおよび復号コンポーネントを含むので、デバイス１２、１６は、実質的に対称的に動作することができる。したがって、システム１０は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、またはビデオテレフォニーのためのビデオデバイス１２とビデオデバイス１６との間の一方向または双方向のビデオ送信をサポートすることができる。
【００２３】
ソースデバイス１２のビデオソース２０は、ビデオカメラ、あらかじめキャプチャされたビデオを含んでいるビデオアーカイブ、またはビデオコンテンツプロバイダからのビデオフィードなど、ビデオキャプチャデバイスを含むことができる。さらなる代替として、ビデオソース２０は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブされたビデオとコンピュータ発生ビデオとの組合せを発生することができる。場合によっては、ビデオソース２０がビデオカメラである場合、ソースデバイス１２および宛先デバイス１６は、いわゆるカメラ付き携帯電話またはビデオ電話を形成することができる。各場合において、キャプチャされたビデオ、あらかじめキャプチャされたビデオ、またはコンピュータ発生ビデオは、ビデオエンコーダ２２によって符号化され得る。次いで、符号化ビデオ情報は、たとえば、符号分割多元接続（ＣＤＭＡ）または別の通信規格などの通信規格に従ってモデム２３によって変調され、送信機２４を介して宛先デバイス１６に送信され得る。モデム２３は、信号変調のために設計された様々なミキサ、フィルタ、増幅器または他のコンポーネントを含むことができる。送信機２４は、増幅器、フィルタ、および１つまたは複数のアンテナを含む、データを送信するために設計された回路を含むことができる。
【００２４】
宛先デバイス１６の受信機２６は、チャネル１５を介して情報を受信し、モデム２７は情報を復調する。この場合も、ビデオ符号化プロセスは、動き補償中にコード化ユニットを効率的に予測するために、本明細書で説明される技法のうちの１つまたは複数を実装することができる。チャネル１５を介して伝達される情報は、ビデオデコーダ２８によっても使用される、ビデオエンコーダ２２によって定義される情報を含むことができる。表示デバイス３０は、復号ビデオデータをユーザに対して表示するものであり、陰極線管、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプの表示デバイスなど、様々な表示デバイスのいずれかを備えることができる。
【００２５】
図１の例では、通信チャネル１５は、無線周波数（ＲＦ）スペクトルまたは１つまたは複数の物理的伝送線路など、ワイヤレスまたは有線の任意の通信媒体、あるいはワイヤレスおよび有線の媒体の任意の組合せを備えることができる。通信チャネル１５は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、または１つまたは複数のネットワークの相互接続を備えるインターネットなどのグローバルネットワークなど、パケットベースのネットワークの一部を形成することができる。通信チャネル１５は、一般にビデオデータをソースデバイス１２から宛先デバイス１６に送信するのに好適な任意の通信媒体、または様々な通信媒体の集合体を表す。通信チャネル１５は、ソースデバイス１２から宛先デバイス１６への通信を可能にするのに有用なルータ、スイッチ、基地局、または任意の他の機器を含むことができる。
【００２６】
ビデオエンコーダ２２およびビデオデコーダ２８は、代替的にＭＰＥＧ−４，Ｐａｒｔ１０，Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＡＶＣ）として説明されるＩＴＵ−Ｔ  Ｈ．２６４規格など、ビデオ圧縮規格に従って動作することができる。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。図１には示されていないが、いくつかの態様では、ビデオエンコーダ２２およびビデオデコーダ２８は、それぞれオーディオエンコーダおよびデコーダと統合され得、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するために、適切なＭＵＸ−ＤＥＭＵＸユニット、または他のハードウェアおよびソフトウェアを含むことができる。適用可能な場合、ＭＵＸ−ＤＥＭＵＸユニットは、ＩＴＵ  Ｈ．２２３マルチプレクサプロトコル、またはユーザデータグラムプロトコル（ＵＤＰ）などの他のプロトコルに準拠することができる。
【００２７】
ＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４（ＡＶＣ）規格は、Ｊｏｉｎｔ  Ｖｉｄｅｏ  Ｔｅａｍ（ＪＶＴ）として知られる共同パートナーシップの成果として、ＩＳＯ／ＩＥＣ  Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＭＰＥＧ）とともにＩＴＵ−Ｔ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＶＣＥＧ）によって公式化された。いくつかの態様では、本開示で説明される技法は、一般にＨ．２６４規格に準拠するデバイスに適用され得る。本明細書ではＨ．２６４規格またはＨ．２６４仕様、あるいはＨ．２６４／ＡＶＣ規格または仕様と呼ばれることがあるＨ．２６４規格は、ＩＴＵ−Ｔ研究グループによる２００５年３月付けのＩＴＵ−Ｔ勧告Ｈ．２６４「Advanced Video Coding for generic audiovisual services」に記載されている。Ｊｏｉｎｔ  Ｖｉｄｅｏ  Ｔｅａｍ（ＪＶＴ）はＨ．２６４／ＭＰＥＧ−４  ＡＶＣへの拡張の取り組みを続けている。
【００２８】
最近では、Ｋｅｙ  Ｔｅｃｈｎｏｌｏｇｉｅｓ  Ａｒｅａ（ＫＴＡ）フォーラムなど、ＩＴＵ−Ｔの様々なフォーラムにおいて、Ｈ．２６４／ＭＰＥＧ−４ＡＶＣ規格を進化させる取り組みが始まっている。ＫＴＡフォーラムは、一部で、Ｈ．２６４／ＡＶＣ規格によって発揮されるよりも高い符号化効率を発揮するコーディング技術を追求している。本開示で説明される技法は、Ｈ．２６４／ＡＶＣ規格において実現されるよりも効率的な予測モード選択を実現することができる。最近、ＫＴＡフォーラムは、その全体が参照により本明細書に組み込まれる、（２００８年１０月８日〜１０日の間にカリフォルニア州サンディエゴで行われた第３６回会合において発表された）Ｒａｈｕｌ  ＰａｎｃｈａｌおよびＭａｒｔａ  Ｋａｒｃｚｅｗｉｃｚによる「Experimental Results on Simplified JMKTA 2.0 Software」と題された、様々な態様においてこれらの技法を詳述する文献を提出番号ＶＣＥＧ−ＡＪ２５として受け取った。
【００２９】
ビデオエンコーダ２２およびビデオデコーダ２８はそれぞれ、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せ、として実装され得る。ビデオエンコーダ２２およびビデオデコーダ２８の各々は、１つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれかは複合エンコーダ／デコーダ（ＣＯＤＥＣ）の一部としてそれぞれのモバイルデバイス、加入者デバイス、ブロードキャストデバイス、サーバなどに統合され得る。
【００３０】
ビデオシーケンスは一般に、一連のビデオフレームを含む。ビデオエンコーダ２２は、ビデオデータを符号化するために、個々のビデオフレーム内のビデオブロック上で動作する。ビデオブロックは、サイズを固定することも変更することもでき、指定のコーディング規格に応じてサイズが異なり得る。各ビデオフレームは、一連のスライスを含む。各スライスは、サブブロック中に配置され得る一連のマクロブロックを含むことができる。一例として、ＩＴＵ−Ｔ  Ｈ．２６４規格は、輝度成分については１６×１６、８×８、または４×４、およびクロマ成分については８×８など、様々なブロックサイズのイントラ予測をサポートし、ならびに輝度成分については１６×１６、１６×８、８×１６、８×８、８×４、４×８および４×４、およびクロマ成分については対応するスケーリングされたサイズなど、様々なブロックサイズのインター予測をサポートする。ビデオブロックは、ピクセルデータのブロック、あるいは、たとえば離散コサイン変換または概念的に同様の変換プロセスなどの変換プロセスの後の変換係数のブロックを備えることができる。
【００３１】
小さいビデオブロックほどより良い解像度を与えることができ、高い詳細レベルを含むビデオフレームの位置決めに使用され得る。一般に、マクロブロックおよび様々なサブブロックは、ビデオブロックであると考えられ得る。さらに、スライスは、マクロブロックおよび／またはサブブロックなど一連のビデオブロックであると考えられ得る。各スライスは、ビデオフレームの単独で復号可能なユニットとすることができる。代替的に、フレーム自体を復号可能なユニットとすることができるか、またはフレームの他の部分を復号可能なユニットとして定義することができる。「コード化ユニット」という用語は、フレーム全体、フレームのスライス、ピクチャグループ（ＧＯＰ）、または使用されるコーディング技法に従って定義される別の単独で復号可能なユニットなど、ビデオフレームの単独で復号可能な任意のユニットを指す。
【００３２】
（補間と、コード化ユニットを予測するために予測アルゴリズムまたはモードを効率的に選択するための本開示の技法とを含む）インターベース予測コーディングの後、および（Ｈ．２６４／ＡＶＣにおいて使用される４×４または８×８整数変換あるいは離散コサイン変換またはＤＣＴなどの）任意の変換の後、量子化が実行され得る。量子化は、一般に、係数を表すために使用されるデータ量をできるだけ低減するように係数が量子化されるプロセスを指す。量子化プロセスは、係数の一部または全部に関連するビット深度を低減することができる。たとえば、１６ビット値は、量子化中に１５ビット値まで切り捨てられ得る。量子化の後、たとえば、コンテンツ適応型可変長コーディング（ＣＡＶＬＣ）、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）、または別のエントロピーコーディング方法に従って、エントロピーコーディングが実行され得る。
【００３３】
本開示の技法によれば、ビデオエンコーダ２２は、ビデオデータの少なくとも２つの異なる参照コード化ユニットを選択し得る。これらの２つのコード化ユニットは、第１のフレームと、第１のフレームとは異なる第２のフレームと、を備えることができる。代替的に、ビデオエンコーダ２２は、第１の参照フレームの第１の参照ビデオデータユニット、たとえば、マクロブロックまたは他のサイズのビデオデータユニットと、第２の参照フレームの第２の参照ビデオデータユニットと、を選択し得る。例示のために、本開示の技法は、以下でビデオブロックおよびフレームに関して説明される。ただし、本技法は一般に、コード化ユニット全体、またはコード化ユニットのビデオデータユニットなど、その部分に適用することができる。
【００３４】
いくつかの態様では、ビデオエンコーダ２２は、リスト０と総称されることがある参照フレームの第１のセットと、リスト１と総称されることがある参照フレームの第２のセットと、を記憶することができ、ここで、それらのセットの各々は、他のセットの参照フレームとは異なる参照フレームを含む。ビデオエンコーダ２２は、リスト０から１つまたは複数の参照フレームを選択することができ、リスト１から１つまたは複数の参照フレームを選択し得る。この点で、ビデオエンコーダ２２は、ビデオデータの少なくとも２つの異なる参照フレームを受信し得る。
【００３５】
参照フレームを選択した後、ビデオエンコーダ２２は、各々が少なくとも２つの異なる参照フレームのうちの異なる１つから選択された少なくとも２つの参照ビデオブロックからビデオデータの予測フレームの予測ビデオブロックの第１のバージョンを予測するために、デフォルト重み付け予測を実行し得る。特に、２つの参照フレームは、予測フレームから時間的に離れている。同様に、少なくとも２つの参照ビデオブロックは、予測ビデオブロックから時間的に離れている。言い換えれば、参照フレームの第１のセットの参照フレーム（およびこれらの参照フレームから選択された参照ビデオブロック）は、時間的に連続的に生じるか、あるいは時間的に予測フレームの前または後のいずれかに生じるか、あるいは前および後の両方に生じる、参照フレームを備えることができる。同様に、参照フレームの第２のセットの参照フレーム（およびこれらの参照フレームから選択された参照ビデオブロック）は、時間的に連続的に生じるか、あるいは時間的に予測フレームの前または後のいずれかに生じるか、あるいは前および後の両方に生じる、フレームを備えることができる。
【００３６】
ビデオエンコーダ２２は、したがって、リスト０から時間的に予測フレームの前または後に生じる第１の参照フレームを選択し、リスト１から時間的に予測フレームの前または後に生じる第２の参照フレームを選択し得る。これらの２つの選択されたユニットから予測される予測フレームは、しばしば、予測フレームが両方の時間的方向、たとえば、予測フレームの前および後に生じる両方の参照ユニットから予測されるという点で、双方向フレームまたは双方向ピクチャ（略してＢフレームまたはＢピクチャ）と呼ばれる。このために「Ｂフレーム」と呼ばれるが、Ｂフレームはまた、様々な態様では、Ｂフレームより前に生じる２つの参照フレームから予測され得るか、または代替的に、Ｂフレームの後に生じる２つの参照フレームから予測され得る。
【００３７】
一般に、Ｂフレームは、このようにしてブロックごとに予測され、ビデオエンコーダ２２は、第１の参照フレームから第１の参照ビデオブロックを選択することができ、第２の参照フレームから第２のビデオブロックを選択し得る。これらのブロックを選択するために、ビデオエンコーダ２２は、第１および第２のブロックを、予測ビデオブロックに最も良く一致するブロック、または予測ビデオブロックと同様のピクセル値を示すブロックとして識別することができる。ビデオエンコーダ２２は、次いで、それぞれ、第１および第２の参照フレームの第１および第２の参照ビデオブロックから予測の予測ビデオブロックの第１のバージョンを予測するために、デフォルト重み付け予測を実行し得る。
【００３８】
デフォルト重み付け予測を実行するために、ビデオエンコーダ２２は、第１の重み付きビデオブロックを判断するために第１の参照ビデオブロックに第１の重みを乗算し、第２の重み付きビデオブロックを判断するために第２の参照ビデオブロックに第２の重みを乗算し得る。ビデオエンコーダ２２は、次に、総重み付きビデオブロックを発生するために、第１の重み付きビデオブロックに第２の重み付きビデオブロックを加算し得る。ビデオエンコーダ２２は、デフォルト重み付け予測アルゴリズムに従って、この例では、たとえば、第１および第２の参照ビデオブロックの２つである、予測ビデオブロックの第１のバージョンを予測するために選択された参照ビデオブロックの数で総重み付きビデオブロックを除算することによって、予測ビデオブロックの第１のバージョンを予測することができる。一般に、第１の重みと第２の重みは互いに等しく、たとえば、第１の重みは０．５すなわち５０％に等しく、第２の重みは０．５すなわち５０％に等しい。３つ以上の重みの場合、重みは互いにほぼ等しいにすぎないことがあり、たとえば、第１の重みは３３．３３％に等しく、第２の重みは３３．３３％に等しく、第３の重みは３３．３４％に等しい。重みは通例変動しないので、この形態の重み付け予測は、直線、デフォルト、または均等重み付け予測と呼ばれることがある。
【００３９】
デフォルト重み付け予測アルゴリズムを使用して予測ビデオブロックの第１のバージョンを計算、判断あるいは予測した後、ビデオエンコーダ２２は、予測ビデオブロックのオフセット値を計算し得る。このオフセット値は、ＤＣオフセットまたは他のオフセット値を備え得る。上記のオフセットにおいて、「ＤＣ」は、電気的な意味で所与の直流電流からのオフセットを指すが、以降、電気的なコンテキスト以外の広範囲のコンテキストによる使用に適応されている。
【００４０】
ビデオ符号化のコンテキストにおいて、ＤＣオフセットは、ビデオエンコーダ２２が最初に参照ビデオブロックのうちの１つのピクセル値の輝度成分を平均化することによって計算され得る。ビデオエンコーダ２２は、次に、予測ビデオブロックのピクセル値の輝度成分を平均化し得る。これらの計算値の各々はＤＣ値を備え得る。ビデオエンコーダ２２は、次いで、ＤＣ値を互いから減算することによってＤＣオフセットを計算し得る。この点で、ＤＣ値は、それぞれ、参照ビデオブロックと予測ビデオブロックとのうちの１つの平均輝度を備え得る。この平均は、電気的なコンテキストにおけるＤＣ電圧と同様である。したがって、これらの２つの平均ＤＣ値の差は、電気的なコンテキストにおけるＤＣオフセットが標準または平均ＤＣ値からのオフセットを表すように、標準ＤＣ値からのオフセットを備え得るので、名称が「ＤＣオフセット」である。
【００４１】
いずれの場合も、ビデオエンコーダ２２は、次いで、予測フレームの予測ビデオブロックの第２のバージョンを予測するために、暗黙的重み付け予測または明示的重み付け予測を実行し得る。暗黙的重み付け予測または明示的重み付け予測のいずれを実行すべきかを判断するために、ビデオエンコーダ２２は、計算されたＤＣオフセットをしきい値と比較し、この比較に基づいて暗黙的重み付け予測または明示的重み付け予測のいずれかを実行し得る。たとえば、ビデオエンコーダ２２は、計算されたＤＣオフセットを、一般に０であるしきい値と比較し得る。ビデオエンコーダ２２は、代替的に、計算されたＤＣオフセットの絶対値を最初に判断し、ＤＣオフセットのこの絶対値を、この場合も一般に０に設定され得るしきい値と比較し得る。比較に基づいて、ビデオエンコーダ２２は、次いで、予測フレームの予測ビデオブロックの第２のバージョンを予測するために、暗黙的重み付け予測または明示的重み付け予測のいずれかを実行し得る。
【００４２】
「暗黙的」重み付け予測または「明示的」重み付け予測は、予測フレームを予測する際に使用される２つ以上の重みが、たとえば、コード化ユニット内で符号化されるかまたは符号化されない予測の形態を指す。暗黙的重み付け予測の場合、重みは符号化されず、したがって予測ビデオブロックにおいて暗黙的であり得る。ビデオデコーダ２６は、次いで、予測ビデオブロックが暗黙的重み付け予測を使用して予測されたと判断すると、第１および第２の参照ビデオブロックの分析、またはいくつかの例では、第１および第２の参照フレームの分析によって重みを導出し得る。明示的重み付け予測では、ビデオエンコーダ２２は、予測ビデオブロック内で、またはいくつかの例では予測フレーム内で予測ビデオブロックを予測する際に使用される重みを明示的にコーディングし得る。明示的重み付け予測は、重みを選択する際にビデオエンコーダ２２により多くの許容範囲を与えることができ、その結果、ビデオエンコーダ２２が、ビデオデータの特定のコンテキストまたは形態に適合させるために、予測フレーム、たとえば、Ｂフレームの予測を調整することを可能にし得る。
【００４３】
重みに基づいて暗黙的重み付け予測または明示的重み付け予測のいずれかを実行する例として、ビデオエンコーダ２２は、計算されたＤＣオフセット値の絶対値がしきい値を超えるとき、予測ビデオブロックの第２のバージョンを予測するために明示的重み付け予測を実行し得る。しかしながら、計算されたＤＣオフセット値の絶対値がしきい値を超えないとき、すなわち、しきい値以下であるとき、ビデオエンコーダ２２は、予測ビデオブロックの第２のバージョンを予測するために暗黙的重み付け予測を実行し得る。このようにして、ビデオエンコーダ２２は、予測ビデオブロックの第２のバージョンを予測するために、計算されたオフセット値に基づいて暗黙的重み付け予測または明示的重み付け予測の両方ではなくいずれかを実行し得る。
【００４４】
予測ビデオブロックの第２のバージョンを予測した後、ビデオエンコーダ２２は、予測ビデオブロックを第１のバージョンまたは第２のバージョンのいずれかとして符号化する。ビデオエンコーダ２２は、いくつかの例では、第１のバージョンと第２のバージョンとのうちのいずれがビデオデータの対応する部分をより適切に符号化するかを選択するために、予測ビデオブロックの第１および第２のバージョンの、レートひずみ（Ｒ−Ｄ）コスト分析などのコスト分析を実行し得る。この場合も、ビデオエンコーダ２２は、デフォルト重み付け予測を実行することによってビデオブロックの第１のバージョンを符号化し、明示的重み付け予測または暗黙的重み付け予測の両方ではなく、いずれかを実行することによって予測ビデオブロックの第２のバージョンを符号化する。
【００４５】
ビデオエンコーダ２２は、最低コストに関連する第１のバージョンと第２のバージョンとのうちの１つを選択し得る。いずれの場合も、ビデオエンコーダ２２は、コード化ビットストリーム内で予測ビデオブロックを第１のバージョンまたは第２のバージョンとして符号化する。ソースデバイス１２の送信機２４は、コード化ビットストリームを宛先デバイス１６の受信機２６に送信し得る。宛先デバイス１６では、ビデオデコーダ２８は、コード化ビットストリームを受信し、ビデオシーケンスを再構成するためにコード化ビットストリームを復号する。
【００４６】
このようにして、ビデオエンコーダ２２は、予測アルゴリズムの各々を実行することによって、予測ビデオブロックのバージョンを実際に発生することなしに、複数の予測アルゴリズムまたはモード間でより効率的に選択するために、本開示で説明される技法を実装することができる。上記で説明されたように、ビデオエンコーダ２２は、最初にデフォルト重み付け予測を実行し、次に、暗黙的重み付け予測または明示的重み付け予測の両方ではなくいずれかを実行し得る。したがって、予測のすべての３つの形態またはタイプを実行するのではなく、ビデオエンコーダ２２は、３つのうちの２つのみ、すなわち、デフォルト重み付け予測と、明示的重み付け予測または暗黙的重み付け予測の両方ではなくいずれかとを実行する。この点で、ビデオエンコーダ２２は、３つ以上の予測モードのあらゆるモードを実行する必要なしに、３つ以上の予測モード間でより効率的に選択し得る。
【００４７】
ビデオエンコーダ２２は、この場合も上記で説明されたように、Ｂフレームの予測ビデオブロックの第１のバージョンの計算されたオフセットに基づいて、Ｂフレームの予測ビデオブロックの第２のバージョンを予測するために、暗黙的重み付け予測または明示的重み付け予測のいずれかを実行することの間で選択し得る本開示ではオフセットに関して説明されるが、ビデオエンコーダ２２によって通常アクセス可能または決定可能な任意の特性が、暗黙的重み付け予測または明示的重み付け予測を実行することの間での選択のための基準としてビデオエンコーダ２２によって使用され得る。
【００４８】
図２は、本開示に一致するオフセット技法を実行し得るビデオエンコーダ５０の例を示すブロック図である。ビデオエンコーダ５０は、デバイス２０のビデオエンコーダ２２、または異なるデバイスのビデオエンコーダに対応することができる。説明を簡単にするために、イントラコーディングコンポーネントは図２に示されていないが、ビデオエンコーダ５０は、ビデオフレーム内でブロックのイントラコーディングおよびインターコーディングを実行し得る。イントラコーディングは、所与のビデオフレーム内のビデオの空間的冗長性を低減または除去するために空間的予測を利用する。インターコーディングは、ビデオシーケンスの隣接フレーム内のビデオの時間的冗長性を低減または除去するために時間的予測を利用する。イントラモード（Ｉモード）は、空間ベースの圧縮モードを指すことができ、予測（Ｐモード）または双方向（Ｂモード）などのインターモードは、時間ベースの圧縮モードを指すことができる。本開示の技法は、インターコーディング中に適用し、したがって、説明を簡単で容易にするために、空間予測ユニットなどのイントラコーディングユニットは図２に示されていない。
【００４９】
図２に示されるように、ビデオエンコーダ５０は、符号化されるべきビデオフレーム内の現在のビデオブロックを受信する。図２の例では、ビデオエンコーダ５０は、動き推定ユニット３２と、動き補償ユニット３５と、参照フレームストア３４と、加算器４８と、変換ユニット３８と、量子化ユニット４０と、エントロピーコーディングユニット４６と、を含む。ビデオブロック再構成のために、ビデオエンコーダ５０はまた、逆量子化ユニット４２と、逆変換ユニット４４と、加算器５１と、を含む。ビデオエンコーダ５０はまた、再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタ処理するためのデブロッキングフィルタ（図示されず）を含むことができる。所望される場合、デブロッキングフィルタは一般に、加算器５１の出力をフィルタ処理するであろう。
【００５０】
符号化プロセス中に、ビデオエンコーダ５０は、コーディングされるべきビデオブロックを受信し、動き推定ユニット３２および動き補償ユニット３５は、インター予測コーディングを実行する。動き推定ユニット３２と動き補償ユニット３５は、高度に統合され得るが、概念のために別々に示されている。動き推定は、一般に、ビデオブロックの動きを推定する動きベクトルを発生するプロセスと考えられる。動きベクトルは、たとえば、現在のフレーム（または他のコード化ユニット）内でコーディングされている現在のブロックに対する、予測フレーム（または他のコード化ユニット）内の予測ブロックの変位を示すことができる。動き補償は、一般に、動き推定によって判断された動きベクトルに基づいて予測ブロックをフェッチまたは発生するプロセスと考えられる。この場合も、動き推定ユニット３２と動き補償ユニット３５とは、機能的に統合され得る。例示のために、本開示で説明される技法は、動き補償ユニット３５によって実行されるものとして説明される。
【００５１】
動き推定ユニット３２は、コーディングされるべきビデオブロックを１つまたは複数の予測コード化ユニット（たとえば、時間に関してまたは時間的に以前のおよび／または将来のフレーム）のビデオブロックと比較することによって、そのビデオブロックの適切な動きベクトルを選択する。動き推定ユニット３２は、一例として、いくつかの方法でＢフレームの動きベクトルを選択し得る。１つの方法では、動き推定ユニット３２は、（リスト０と呼ばれる）フレームの第１のセットから以前のまたは将来のフレームを選択し、リスト０からのこの以前のまたは将来のフレームのみを使用して動きベクトルを判断することができる。代替的に、動き推定ユニット３２は、（リスト１と呼ばれる）フレームの第２のセットから以前のまたは将来のフレームを選択し、リスト１からのこの以前のまたは将来のフレームのみを使用して動きベクトルを判断することができる。さらに別の方法では、動き推定ユニット３２は、リスト０から第１のフレームを選択し、リスト１から第２のフレームを選択し、リスト０の第１のフレームおよびリスト１の第２のフレームから１つまたは複数の動きベクトルを選択し得る。予測のこの形態は、上述のように、双予測動き推定と呼ばれることがある。本開示の技法は、動き補償双予測モードを効率的に選択するように実装され得る。
【００５２】
Ｈ．２６４／ＡＶＣ規格に従って、Ｂフレーム、あるいは、Ｂフレームのビデオブロック、マクロブロック、または任意の他の個別および／または連続する部分など、その部分を予測するために、３つの動き補償双予測アルゴリズムまたはモードが使用され得る。一般にデフォルト重み付け予測と呼ばれる第１の動き補償双予測アルゴリズムまたはモードは、リスト０の第１のフレームおよびリスト１の第２のフレームの各識別されたビデオブロックにほぼ等しい重みを適用することに関与し得る。第１および第２のフレームの重み付きブロックは、次いで、合計され、Ｂフレームを予測するために使用されるフレームの総数、たとえば、この例では、２で除算される。しばしば、この除算は、第１および第２のフレームの重み付きブロックの加算に１を加算し、次いで、結果を１ビットだけ右にシフトすることによって達成される。
【００５３】
一般に明示的重み付け予測と呼ばれる、第２の動き補償双予測アルゴリズムまたはモードは、第１および第２のフレームの各識別されたビデオブロックの重みを判断し、次いで、デフォルト重み付け予測アルゴリズムに関して上記で説明されたものと同様の、重み付きブロックを発生するための重みの乗算と加算とを実行することに関与し得る。しかしながら、明示的重み付け予測に関して、第３のコード化ユニットまたはＢフレームを予測するために使用されるフレームの総数での適切な除算を保証するために、第１および第２の重み付きブロックの和を１または何らかの他の数だけ右にシフトするより前に追加の１つまたは複数の丸め値またはオフセットが加算され得る。
【００５４】
一般に暗黙的重み付け予測と呼ばれる、第３の動き補償双予測アルゴリズムまたはモードは、たとえば、第１および第２の重みを判断するために第１および第２のブロックの各々を分析することができる設定されたアルゴリズムに従って、各識別されたブロックの重みを判断することに関与し得る。判断された後、このアルゴリズムは、第１および第２の重み付きブロックを発生するために、第１および第２のブロックに、それぞれ判断された第１および第２の重みを適用あるいは乗算し得る。重み付きブロックを判断した後、アルゴリズムは、次に、Ｂフレームを予測するために使用されるフレームの総数での除算を保証する値だけ和をシフトするより前に、丸め値またはオフセットとともに重み付きブロックを合計し得る。
【００５５】
動き補償ユニット３５は、Ｂフレームの双予測ブロックを表す予測データを発生するために、これらの動き補償双予測アルゴリズムの各々を実施することができる。たとえば、動き補償ユニット３２は、以下の式（１）に従ってデフォルト重み付け予測を実施することができる：  
pred(i,j) = (pred0(i,j) + pred1(i,j)+1) >> 1                        (1)
ｐｒｅｄ（ｉ，ｊ）は、予測フレーム、たとえば、Ｂフレームのｉ行ｊ列のビデオブロックを表す予測データを指す。ｐｒｅｄ０（ｉ，ｊ）は、第１の参照フレームのｉ行ｊ列のビデオブロックを表すデータを指し、ここで、第１の参照フレームはリスト０から選択される。ｐｒｅｄ１（ｉ，ｊ）は、第２の参照フレームのｉ行ｊ列のビデオブロックを表すデータを指し、ここで、第１の参照フレームはリスト１から選択される。重みが等しいかまたはほぼ等しいので、式（１）において１を加算し、１ビットだけ右にシフトする（>>）ことは、ｐｒｅｄ０（ｉ，ｊ）＋ｐｒｅｄ１（ｉ，ｊ）の和を２、たとえば、Ｂフレームの予測ビデオブロックを予測するために使用されるフレームまたはビデオブロックの総数で効果的に除算する。
【００５６】
動き補償ユニット３５は、以下の式（２）に従って第２の動き補償双予測アルゴリズムまたは明示的重み付け予測を実施することができる：  
pred(i,j)=(pred0(i,j)*w0+pred1(i,j)*w1+2r)>>(r+1)+ ((o1+o2+1)>>1)   (2)
この場合も、ｐｒｅｄ（ｉ，ｊ）、ｐｒｅｄ０（ｉ，ｊ）およびｐｒｅｄ１（ｉ，ｊ）の各々は、式（１）に関して上記で説明された同じ参照ビデオブロックを指す。重みが判断され、ほぼ等しくないことがあるので、式（２）は、それぞれｐｒｅｄ０（ｉ，ｊ）およびｐｒｅｄ１（ｉ，ｊ）に乗法的に適用される重みｗ０とｗ１とを含む。「ｒ」変数は、重みｗ０およびｗ１が整数を生じることを保証するように選択された整数を表し得る。変数ｏ１およびｏ２は、それぞれ丸めオフセットを表し、式（２）は、丸めオフセットと１を加算し、続いて、１だけ右にシフトすることによって、丸めオフセットｏ１とｏ２の平均を与える。ブロックの重み付き和はまた、Ｂフレームの予測ビデオブロックを予測するために使用される参照ビデオブロックの総数での適切な除算を保証するために、丸めオフセットの平均の加算より前にシフトされ得る。
【００５７】
動き補償ユニット３５は、以下の式（３）に従って第３の動き補償双予測アルゴリズムまたは暗黙的重み付け予測を実施することができる：  
pred(i,j) = (pred0(i,j)*w0+pred1(i,j)*w1+32)>>6                    (3)
この場合も、ｐｒｅｄ（ｉ，ｊ）、ｐｒｅｄ０（ｉ，ｊ）およびｐｒｅｄ１（ｉ，ｊ）の各々は、式（１）および式（２）に関して上記で説明された同じ参照ビデオブロックを指す。重みが判断され、ほぼ等しくないことがあるので、式（３）は、それぞれｐｒｅｄ０（ｉ，ｊ）およびｐｒｅｄ１（ｉ，ｊ）に乗法的に適用される重みｗ０とｗ１とを含む。値「３２」は、重みｗ０およびｗ１が整数であることを保証するために使用される静的丸めオフセットを備え得、丸めオフセット３２を仮定すれば、６だけ右にシフトすること（>>）は、総重み付きブロックの和をＢフレームの予測ビデオブロックを予測するために使用されるフレームの総数で効果的に除算する除算を表し得る。
【００５８】
本開示の技法によれば、動き推定ユニット３２は、Ｂフレームの動きベクトルを判断するための少なくとも２つのフレームを選択することができる。詳細には、上記で説明されたように、参照フレームストア３４は、リスト０と呼ばれるビデオデータの参照フレームの第１のセットと、リスト１と呼ばれるビデオデータの参照フレームの第２のセットとを記憶するメモリを備えることができる。リスト１およびリスト０の参照フレームは、それぞれＩフレームまたはＰフレームを備えることができる。動き推定ユニット３２は、参照フレームストア３４にアクセスし、リスト０から１つまたは複数の参照フレームを選択し、リスト１から１つまたは複数の参照フレームを選択し得る。このようにして、動き推定ユニット３２は、一態様では、ビデオデータの少なくとも２つのコード化ユニット、たとえば、フレームを選択し得る。
【００５９】
動き推定ユニット３２は、次いで、予測Ｂフレームの第１のブロックの動きベクトルを判断し得る。動き推定ユニット３２は、Ｂフレームの予測ブロックに対応する少なくとも２つの参照フレームのうちの第１のフレーム中の第１の対応するブロックと、Ｂフレームの予測ブロックに対応する少なくとも２つの参照フレームのうちの第２のフレーム中の第２の対応するブロックと、を識別することができる。一般に、第１のフレームおよび第２のフレームは、それぞれ第３のＢフレームから時間的に離れている。しばしば、第１の参照フレームは、Ｂフレームに先立つまたはＢフレームの前のビデオシーケンス中に存し、第２の参照フレームは、Ｂフレーム後のビデオシーケンス中に存する。しかしながら、いくつかの例では、第１および第２の参照フレームの両方は、Ｂフレームの前または後の様々な時間に存し得るかまたは生じ得る。いずれの場合も、動き推定ユニット３２は、次いで、第１の参照フレームからの第１の参照ブロックと第２の参照フレームからの第２の参照ブロックとに基づいて動きベクトルを計算し得、参照ブロックの両方は、予測Ｂフレームの第３の予測ブロックに対して判断される。
【００６０】
動き推定ユニット３２が、コーディングされるべきビデオブロックの動きベクトルを選択した後、動き補償ユニット３５は、これらの動きベクトルに関連する予測ビデオブロックを発生する。動き補償ユニット３５は、上記の式（１）で表されるように、デフォルト重み付け予測アルゴリズムに従ってＢフレームの予測ビデオブロックの第１のバージョンを発生することができる。そうするために、動き補償ユニット３５は、参照フレームストア３４から式（１）によって指定された様々な参照ブロックを検索し、Ｂフレームの予測ビデオブロックを表す予測データを発生するために式（１）を実施し得る。次に、動き補償ユニット３５は、Ｂフレームの予測ビデオブロックの第１のバージョンの上記のＤＣオフセット値または別のオフセット値を計算し得る。
【００６１】
一例では、動き補償ユニット３５は、予測ビデオブロックを予測するために使用される第１および第２の参照フレームの参照ビデオブロックの各整数およびサブ整数ピクセルロケーションにそれぞれ関連するメトリックの第１のセット（たとえば、平均値）を計算し得る。動き補償ユニット３５はまた、予測ビデオブロックの各整数およびサブ整数ピクセルロケーションにそれぞれ関連するメトリックの第２のセット（たとえば、平均値、あるいは輝度値および／またはクロミナンス値の和の差）を計算し得る。動き補償ユニット３５は、次いで、メトリックの第１および第２のセットに基づいてオフセット値を計算する。動き補償ユニット３５は、たとえば、第１のＤＣオフセットを、第１の参照ビデオブロックと予測ビデオブロックとについて計算された平均値の差として計算し得る。動き補償ユニット３５は、次に、第２のＤＣオフセットを、第２の参照ビデオブロックと予測ビデオブロックとについて計算された平均値の差として計算し得る。動き補償ユニット３５は、次いで、平均ＤＣオフセットを発生するために、これらの第１および第２のＤＣオフセットの平均を計算し得る。オフセット値は、この場合も、ビデオ符号化中に遭遇されるシーンチェンジまたはフラッシュを示すために極めて有用であり得る、対応するビデオブロックのピクセル値の上方または下方へのバイアスを反映し得る絶対値または符号付き値を備え得る。
【００６２】
言い換えれば、メトリックの第１のセットは、所与のコード化ユニットのビデオブロックの各整数およびサブ整数ピクセルロケーションにおけるピクセル値の平均に対応する平均値のセットを備え得る。メトリックの第２のセットは、そのコード化ユニット中でコーディングされている現在のブロックを予測するために使用される予測ブロックの各整数およびサブ整数ピクセルロケーションにおけるピクセル値の平均に対応する平均値のセットを備え得る。複数のオフセット値は、平均値の第１のセットと平均値の第２のセットとの差を備え得る。各マクロブロックロケーションは、単一のピクセル、たとえば、それぞれのマクロブロックの左上隅のそれぞれのピクセルによって定義され得る。しかしながら、各マクロブロックは、平均値の第１のセット中の特定の平均値に寄与する１６個のピクセル値を定義し得る。もちろん、これらのオフセット値は、他のサイズのビデオブロックについて同様に計算され得る。
【００６３】
一般に、所与の位置のオフセットは、そのピクセル位置またはサブピクセル位置に対応する動きベクトル精度を有する現在のフレーム（または他のコード化ユニット）中のすべてのピクセルの平均と、そのピクセル位置またはサブピクセル位置に対応する予測データの補間値の平均と、の差として計算され得る。したがって、それぞれのオフセットは、データのそれぞれの整数、補間または外挿位置の予測データに対するコード化ユニットのピクセルの平均差と見なされ得る。
【００６４】
動き補償ユニット３５は、輝度ブロック、クロマブロックまたは両方に関するオフセット値を計算し得る。様々なオフセットは、各タイプのビデオブロック（たとえば、輝度ブロックおよびクロマブロック）に関連する各整数およびサブ整数ピクセルロケーションについて定義され得る。さらに、様々なオフセットは、各特定のサイズにおける各ブロック、各ブロックのパーティションまたはサブパーティションに割り当てられ得る。
【００６５】
オフセット値を計算した後、動き補償ユニット３５は、個々のオフセット値の各々または平均オフセット値をしきい値と比較し得る。しきい値は、ビデオエンコーダ５０のユーザによってプログラム的に設定され得るか、またはビデオエンコーダ５０のハードウェア設計者によって静的に設定され得る。いくつかの例では、動き補償ユニット３５は、第１、第２および第３のコード化ユニットのうちの１つまたは複数の様々なブロックのいくつかの分析に基づいて、自動的に、たとえば、ユーザの監督または入力を必要とすることなしに、しきい値を設定することができる。この点で、動き補償ユニット３５は、比較を実行するときに、しきい値を自動的に適応させるかまたは調整することができる。しかしながら、一般に、設計者またはユーザは、しきい値をプログラム的に０に設定する。この比較に基づいて、動き推定ユニット３５は、Ｂフレームの第３のブロックの第２のバージョンを予測するために、たとえば、それぞれ式（２）または式（３）のいずれかに従って明示的重み付け予測または暗黙的重み付け予測のいずれかを実行し得る。
【００６６】
たとえば、動き補償ユニット３５は、計算されたオフセット値、またはいくつかの例では、計算されたオフセット値の絶対値がしきい値を超えるとき、予測ブロックの第２のバージョンを予測するために、式（２）に従って明示的重み付け予測を実行し得る。動き補償ユニット３５は、Ｂフレームの第３のブロックまたは予測ブロックを予測するために、重みｗ０およびｗ１のためにデフォルト重み、たとえば、デフォルト重み付け予測中に使用される重みを使用することができる。その上、明示的重み付け予測を実行するとき、動き補償ユニット３５は、いくつかの態様では、計算されたオフセットを使用することができる。［
【００６７】
計算されたオフセット値、または、いくつかの例では、計算されたオフセット値の絶対値がしきい値を超えないとき、すなわち、しきい値以下であるとき、動き補償ユニット３５は、Ｂフレームの予測ビデオブロックの第２のバージョンを予測するために、式（３）に従って暗黙的重み付け予測を実行し得る。デフォルト重み付け予測に関して上記で説明されたように、動き補償ユニット３５は、参照フレームストア３４から式（２）または式（３）のいずれかによって指定された様々な参照ブロックを検索し得る。代替的に、動き補償ユニット３５は、最初に、たとえば、上記の式（１）で表されるデフォルト重み付け予測アルゴリズムに従って、予測ビデオブロックの第１のバージョンを計算するためにこれらのブロックを検索した後、様々な参照ビデオブロックをローカルにキャッシュあるいは維持または記憶し得る。
【００６８】
Ｂフレームの予測ビデオブロックの第２のバージョンが明示的重み付け予測に従って予測されるか暗黙的重み付け予測に従って予測されるかにかかわらず、動き補償ユニット３５は、デフォルト重み付け予測を実行することによって予測された予測ビデオブロックの第１のバージョンと、明示的重み付け予測または暗黙的重み付け予測のいずれかを実行することによって予測された予測ビデオブロックの第２のバージョンと、を互いに比較して、ビデオの対応する部分をより適切に表すバージョンを選択する。動き補償ユニット３５は、この比較を実行するために、第１および第２のバージョンに対してレートひずみ（Ｒ−Ｄ）分析を実行し得る。上記で説明されたように、Ｒ−Ｄ分析は、バージョンの各々のコストを計算し、第１のバージョンと第２のバージョンとのうち、より低いコストが計算されたバージョンを選択することに関与し得る。このＲ−Ｄ分析は、一般に、レートとひずみのバランスをとる、すなわち詳しく述べると、予測ビデオブロックの第１および第２のバージョンを符号化する際に使用されるデータ量と、何らかの定量化された品質レベル、たとえば、ひずみのレベルまたは量と、のバランスをとる。
【００６９】
一例として、動き補償ユニット３５は、ラグランジュ（Langrangian）コスト関数を与える以下の式（４）に従って、第１および第２のバージョンの各々について計算されるコストにＲ−Ｄ分析の基礎をおくことができる：  
Fc = d + (λo * R)                                                  (4)
Ｆcは、コスト関数を表す変数を備える。文字「ｄ」は、第１および第２のバージョンをそれぞれビデオの対応する部分と比較することによって計算される第１のひずみ値または第２のひずみ値のいずれかを表す変数を備える。動き補償ユニット３５は、一般に、ピーク信号対雑音比（ＰＳＮＲ）を最大にするために、第１および第２のひずみを平均２乗誤差として計算または測定する。ラムダまたは「λo」は、特定の品質レベルのビットコストと品質との間の関係を表す値であるラグランジュ乗数を表す変数を備える。文字「Ｒ」は、ビデオが符号化されるビットレートを表す変数を備える。
【００７０】
動き補償ユニット３５は、したがって、予測ビデオブロックのそれぞれの第１および第２のバージョンについて第１および第２のひずみ値を計算し、ラグランジュ乗数とビットレートの両方の値を定義するデータを記憶し得る。第１および第２のバージョンの各々について、動き補償ユニット３５は、式（４）に従ってコストを判断し、これらの第１のコストと第２のコストとを互いに比較し得る。動き補償ユニット３５は、次いで、第１のコストと第２のコストの比較に基づいて第１のバージョンと第２のバージョンとのうちの１つを選択する。いくつかの態様では、動き補償ユニット３５は、第１のバージョンと第２のバージョンとのうち、より低いコストが判断されたバージョンを選択する。
【００７１】
動き補償ユニット３５が明示的重み付け予測アルゴリズムによって予測された第２のバージョンを選択した場合、動き補償ユニット３５は、オフセット予測ビデオブロックを発生するために元の予測ビデオブロックにＤＣオフセット値を適用し、オフセット予測ビデオブロックに基づいてコード化ユニットのビデオブロックを符号化し得る。予測ブロックのピクセルロケーション（整数ロケーション、または複数の可能なサブ整数ピクセルロケーションのうちの１つ）に従うロケーションベース様式でオフセットを予測ブロックのピクセル値に加算することによって、予測ブロックは、コーディングされているブロックとより類似することがあり得、符号化効率を改善することができる。その上、オフセット値が様々なピクセルロケーションに対して別様に定義されるので、これらのオフセット値は、様々なタイプの補間に関連するデータのコーディングの間でセグメンテーションを達成する能力を与えることができる。しかしながら、動き補償ユニット３５が暗黙的重み付け予測によって予測された第１のバージョンまたは第２のバージョンのいずれかを選択した場合、動き補償ユニット３５は、計算されたオフセット値を加算することなしにブロックを符号化し得る。このようにして、動き補償ユニット３５は、Ｂフレームの第３のビデオブロックまたは予測ビデオブロックを表す予測データを発生することができる。
【００７２】
ビデオエンコーダ５０は、次いで、コーディングされている元のビデオブロックから予測データを減算することによって残差ビデオブロックを形成する。加算器４８は、この減算演算を実行する１つまたは複数のコンポーネントを表す。変換ユニット３８は、離散コサイン変換（ＤＣＴ）または概念的に同様の変換などの変換を残差ブロックに適用し、残差変換ブロック係数を備えるビデオブロックを生成する。変換ユニット３８は、たとえば、概念的にＤＣＴと同様である、Ｈ．２６４規格によって定義される変換などの他の変換を実行することができる。また、ウェーブレット変換、整数変換、サブバンド変換または他のタイプの変換が使用され得る。いずれの場合も、変換ユニット３８は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。変換は、残差情報をピクセル領域から周波数領域に変換することができる。
【００７３】
量子化ユニット４０は、ビットレートをさらに低減するために残差変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深度を低減することができる。たとえば、１６ビット値は、量子化中に１５ビット値まで切り捨てられ得る。さらに、量子化ユニット４０はまた、第２のバージョンが明示的重み付け予測によって予測される場合、様々なオフセットのそれぞれの整数および少数部分に所望のビット数を割り振るために様々なオフセットを量子化することができる。特に、量子化ユニットは、オフセット値の各々に対して、第１のビット数を所与のオフセット値の整数部分に割り当て、第２のビット数を所与のオフセット値の小数部分に割り当てることができ、第１および第２のビット数は、整数部分の絶対値に基づいて判断される。エントロピーコーディングユニット４６は、第２のビット数とは別様に第１のビット数を符号化することができる。
【００７４】
量子化の後、エントロピーコーディングユニット４６は、量子化変換係数をエントロピーコーディングする。たとえば、エントロピーコーディングユニット４６は、コンテンツ適応型可変長コーディング（ＣＡＶＬＣ）、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）、または別のエントロピーコーディング方法を実行することができる。エントロピーコーディングユニット４６によるエントロピーコーディングの後、符号化ビデオは、別のデバイスに送信されるか、あるいは後で送信または検索するためにアーカイブされ得る。コード化ビットストリームは、エントロピーコード化残差ブロックと、そのようなブロックの動きベクトルと、コード化ユニット内で様々な整数およびサブ整数ピクセルロケーションにおける複数の異なるオフセットを識別するオフセット値を含む他のシンタックスと、を含むことができる。
【００７５】
逆量子化ユニット４２および逆変換ユニット４４は、たとえば、上記で説明された方法で参照ブロックとして後で使用するために、ピクセル領域中で残差ブロックを再構成するために、それぞれ逆量子化および逆変換を適用する。加算器５１は、再構成された残差ブロックを、動き補償ユニット３５によって生成された動き補償予測ブロックに加算して、参照フレームストア３４に記憶するための再構成されたビデオブロックを生成する。再構成されたビデオブロックは、後続のビデオフレーム中のブロックをインター符号化するための参照ブロックとして動き推定ユニット３２および動き補償ユニット３５によって使用され得る。
【００７６】
このようにして、ビデオエンコーダ５０は、３つの動き補償双予測アルゴリズムの間で効率的に選択するための本開示の技法を実装することができる。動き補償ユニット３５は、３つの動き補償双予測アルゴリズムのすべてを実行し、次いで、３つの得られたバージョンのうちビデオデータをより適切に表すバージョンを選択するのではなく、３つの動き補償双予測アルゴリズムのうちの２つのみを実行するので、選択は効率的である。したがって、本技法は、アルゴリズムのうちの少なくとも１つの実行をなくすことによって、より効率的な選択を可能にするだけでなく、第１および第２のバージョンのみがＲ−Ｄ分析の対象であるので、追加のＲ−Ｄ分析のコスト関数計算をなくす。この点で、本技法は、３つの動き補償双予測アルゴリズムの間でより効率的に選択するためにビデオエンコーダ５０によって実装され得る。
【００７７】
図３は、図２の動き補償ユニット３５の一例をより詳細に示すブロック図である。図３の例に示されるように、動き補償ユニット３５は、コード化ユニットまたは参照フレームの上述の第１および第２のセットをリスト０  ５２Ａおよびリスト１  ５２Ｂとして記憶する参照フレームストア３４に結合する。動き補償ユニット３５は、最初に、参照フレームストア３４から少なくとも２つの参照フレームを検索し得る。一般に、動き補償ユニット３５は、リスト０  ５２Ａから少なくとも１つのフレームを検索し、リスト１  ５２Ａから少なくとも１つのフレームを検索する。リスト０  ５２Ａおよびリスト１  ５２Ｂのこれらのフレームは、本開示では、それぞれ第１の参照フレームおよび第２の参照フレームと呼ばれることがある。しばしば、動き補償ユニット３５は、動き推定ユニット３２によって示される第１および第２の参照フレームを検索する。
【００７８】
図３にさらに示されるように、動き補償ユニット３５は、デフォルト予測モジュール５４と、オフセット計算モジュール５６と、コンパレータ５８と、明示的予測モジュール６０と、暗黙的予測モジュール６２と、レートひずみ（Ｒ−Ｄ）分析モジュール６４（「Ｒ−Ｄ分析モジュール６４」）と、を含む。デフォルト予測モジュール５４は、式（１）に関して上記で説明されたデフォルト重み付け予測アルゴリズムを実施するハードウェアおよび／またはソフトウェアモジュールを表し得る。オフセット計算モジュール５６は、上記で説明された方法でＤＣオフセット値などのオフセット値を計算するハードウェアおよび／またはソフトウェアモジュールを表し得る。
【００７９】
コンパレータ５８は、オフセット値を、しきい値６６として図３に示されるしきい値と比較するハードウェアおよび／またはソフトウェアモジュールを表し得る。明示的予測モジュール６０は、式（２）に関して上記で説明された明示的重み付け予測アルゴリズムを実施するハードウェアおよび／またはソフトウェアモジュールを表し得る。暗黙的予測モジュール６２は、式（３）に関して上記で説明された暗黙的重み付け予測アルゴリズムを実施するハードウェアおよび／またはソフトウェアモジュールを表し得る。Ｒ−Ｄ分析モジュール６４は、上記で説明されたＲ−Ｄ分析を実施するハードウェアおよび／またはソフトウェアモジュールを表し得る。Ｒ−Ｄ分析モジュール６４は、式（４）によって表されるコスト関数などのコスト関数６８を実装し、コスト７０Ａおよび７０Ｂ（「コスト７０」）を計算するためにコスト関数６８を採用することができる。Ｒ−Ｄ分析は、これらのコスト７０に分析の基礎をおくことができる。
【００８０】
様々なモジュール５４〜６４を備えるものとして図３に示されているが、これらのモジュール５４〜６４は例示のために与えられている。モジュール５４〜６４のうちの１つまたは複数は、動き補償ユニット３５内で一体型モジュールとして実装され得る。代替的に、動き補償ユニット３５は、一般に、プロセッサ上で実行するソフトウェアまたはコンピュータプログラムを備えることができる。この場合、様々なモジュールは、したがって、より大きいソフトウェアプログラムのソフトウェアモジュールまたはコンポーネントを表し得る。ソフトウェアプログラムは、プロセッサによって実行可能であり、プロセッサに本開示で説明される技法を実行させる、複数の命令を備えることができる。
【００８１】
いずれの場合も、第１および第２の参照フレームを検索あるいは受信した後、動き補償ユニット３５は、上式（１）に従って、Ｂフレーム（またはより一般的には、予測フレーム）の予測ビデオブロックの第１のバージョンを表す予測データを発生するためにデフォルト予測モジュール５４を呼び出すか、あるいはデフォルト予測モジュール５４に予測データを発生させ得る。デフォルト予測モジュール５４は、この第１のバージョンをオフセット計算モジュール５６に出力し得、オフセット計算モジュール５６は、上記で説明された方法でオフセット値を計算し得る。すなわち、オフセット計算モジュール５６は、第１のバージョンと、元のビデオデータまたは第１および第２の参照フレーム内の対応するブロックとの間の比較に基づいてオフセット値を計算し得る。いくつかの例では、オフセット計算モジュール５６は、オフセット値の絶対値を判断し、これらのオフセット値をこの絶対値形式で出力し得る。オフセット計算モジュール５６は、これらのオフセット値をコンパレータ５８にフォワーディングし得、コンパレータ５８はオフセット値をしきい値６６と比較し得る。しきい値６６は、プログラム的に、自動的に、または静的に設定され得る。一般に、しきい値６６は値０に設定される。
【００８２】
比較に基づいて、コンパレータ５８は、明示的予測モジュール６０と暗黙的予測モジュール６２の両方に活動化コードを発行し得る。活動化コードは、明示的予測モジュール６０と暗黙的予測モジュール６２の両方ではなく一方または他方を活動化し得る。上記の例で説明されたように、オフセット値のうちの１つまたは複数がしきい値６６を超えるとき、コンパレータ５８は、暗黙的予測モジュール６２ではなく明示的予測モジュール６０を活動化する活動化コードを発生し、送信し得る。オフセット値のうちの１つまたは複数がしきい値６６を超えないとき、コンパレータ５８は、明示的予測モジュール６０ではなく暗黙的予測モジュール６２を活動化する活動化コードを発生し、送信し得る。
【００８３】
活動化コードに基づいて、明示的予測モジュール６０または暗黙的予測モジュール６２のいずれかは予測フレームの予測ビデオブロックの第２のバージョンを発生する。明示的予測モジュール６０または暗黙的予測モジュール６２のうちの活動化された１つは、この第２のバージョンをＲ−Ｄ分析モジュール６４に送信し得る。活動化コードに関して説明されたが、明示的予測モジュール６０または暗黙的予測モジュール６２の活動化は、多くの方法で起こり得る。いくつかの実施形態では、明示的予測モジュール６０および暗黙的予測モジュール６２は、予測ビデオブロックの様々なバージョンを発生することができる。これらの実施形態では、マルチプレクサまたは他の選択論理が、活動化コードに基づいて、これらの様々なバージョンから第２のバージョンを選択し、選択されたバージョンまたは第２のバージョンをＲ−Ｄ分析モジュール６４に送信することができる。
【００８４】
第２のバージョンがどのように得られるかまたは判断されるかにかかわらず、Ｒ−Ｄ分析モジュール６４はまた、ある時点で同じ予測ビデオブロックの第１のバージョンを受信し得る。Ｒ−Ｄ分析モジュール６４は、第１および第２のバージョンについて上記で説明された方法で第１および第２のひずみ値７２Ａ、７２Ｂ（「ひずみ７２Ａ」および「ひずみ７２Ｂ」）を判断し得る。Ｒ−Ｄ分析モジュール６４はまた、ラムダ値７４（「ラムダ７４」）およびビットレート値７６（「レート７６」）を記憶あるいは維持し得る。Ｒ−Ｄ分析モジュール６４は、ひずみ値７２Ａ、７２Ｂ（「ひずみ値７２」）のうちの適切な１つと、ラムダ値７４と、ビットレート値７６と、をコスト関数６８への入力として供給し得、コスト関数６８は、第１のバージョンに関連するコスト値７０Ａを出力する。Ｒ−Ｄ分析モジュール６４は、ひずみ値７２のうちの適切な１つと、ラムダ値７４と、ビットレート値７６とをコスト関数６８への入力として供給し得、コスト関数６８は、第２のバージョンに関連するコスト値７０Ｂを出力する。
【００８５】
Ｒ−Ｄ分析モジュール７６は、次いで、コスト７０のいずれが他方よりも低いかを判断するために、コスト７０を互いに比較し得る。Ｒ−Ｄ分析モジュール７６は、次いで、コスト７０のうちのより低い１つが計算された予測ビデオブロックの第１のバージョンまたは第２のバージョンのいずれかを出力し得る。Ｒ−Ｄ分析モジュール７６は、第１のバージョンと第２のバージョンとのうちの、このより低いコストの１つを、予測ビデオブロックを表す予測データとして出力し得る。いくつかの例では、Ｒ−Ｄ分析モジュール６４は、上記で説明されたように、明示的予測モジュール６０によって予測された第２のバージョンと、オフセット計算モジュール５６によって計算されたオフセット値と、を予測データとして出力する。
【００８６】
第３のコード化ユニットの３つのバージョンではなく２つのバージョンに対してＲ−Ｄ分析を実行するだけでよいことの結果として、動き推定ユニット３５は、予測ビデオブロックをより効率的に符号化することができる。この効率は、計算効率を指し得、また、より効率的な電力消費につながり得る。
【００８７】
予測ビデオブロックに関して上記で説明されたが、本技法は、フレームの任意の他の部分、たとえばスライス、ならびにフレーム全体に適用することができる。式（１）〜式（３）に関して上記で注目されたように、ｐｒｏｊ、ｐｒｏｊ０およびｐｒｏｊ１変数はそれぞれの参照フレームの特定のブロックを指す。本技法は、フレームからそのフレームのすべてのブロック代表として選択された特定のブロックに適用され得、選択されたバージョンに応じて、動き補償ユニット３５は、予測フレーム全体を符号化するために、選択された参照ブロックに関して判断された予測アルゴリズムと同じ予測アルゴリズムを適用することができる。代替的に、予測フレームの各個のブロックは、所与の予測フレーム中の各予測ブロックのための予測モードを効率的に選択するための、本開示で説明される技法を受けることができる。他の態様では、本技法は、スライスレベルにおいて上記で説明された２つの方法のいずれかで適用され得る。したがって、上記で説明された予測アルゴリズムのうちの特定の１つを予測ビデオブロックに対して実行することへの本開示における言及は、限定するものと見なされるべきではない。そうではなく、予測ビデオブロックへの言及は、一般に、上記の例のいずれか、ならびに本開示で明示的に説明されていないが、本開示から容易に理解または推定される例を包含することができる。
【００８８】
図４は、本開示で説明される技法を実行する際のビデオエンコーダの例示的な動作を示すフローチャートである。図２の特定のビデオエンコーダ５０、より詳細には、ビデオエンコーダ５０の特定のコンポーネント、たとえば、図３の動き補償ユニット３５に関して説明されたが、本技法は、図１に関して上述されたデバイスのいずれかによってハードウェアおよび／またはソフトウェアで実装され得る。
【００８９】
最初に、動き補償ユニット３５、より詳細には、デフォルト予測モジュール５４は、たとえば、上式（１）に従って、それぞれの第１および第２の参照フレームの第１および第２参照ビデオブロックからＢフレームの予測ビデオブロックの第１のバージョンを発生するためにデフォルト重み付け予測実行する（７８）。上記で説明されたように、動き補償ユニット３５は、参照フレームストア３４から第１および第２の参照フレームの全体、または第１および第２の参照ビデオブロックのみのいずれかを検索し得る。デフォルト予測モジュール５４は、次いで、第１のバージョンをオフセット計算モジュール５６に渡し得、オフセット計算モジュール５６は、１つまたは複数のオフセット値、たとえば、平均ＤＣオフセット値を絶対値形式で計算し得る（８０）。オフセット計算モジュール５６は、次いで、これらの１つまたは複数のＤＣオフセット値をコンパレータ５８にフォワーディングし得る。
【００９０】
コンパレータ５８は、これらの１つまたは複数のＤＣオフセット値をしきい値６６と比較し得る（８２）。比較に基づいて、コンパレータ５８は、明示的予測モジュール６０または暗黙的予測モジュール６２の両方ではなく、いずれかを活動化するために活動化信号を発行し得る。図４に示す例示的な動作では、コンパレータ５８は、ＤＣオフセット値がしきい値６６を超えると判断したとき、活動化信号によって明示的予測モジュール６０を活動化し得る（「ＹＥＳ」８２）。しかしながら、ＤＣオフセットがしきい値６６を超えないと判断したとき、コンパレータ５８は、活動化信号によって暗黙的予測モジュール６２を活動化し得る（「ＮＯ」８２）。
【００９１】
ＤＣオフセット値がしきい値６６を超え、コンパレータ５８が明示的予測モジュール６０を活動化するための活動化信号を発行した場合には、明示的予測モジュール６０は、上記で説明されたように、第１および第２の参照ビデオブロックから予測ビデオブロックの第２のバージョンを発生するために、たとえば、上式（２）に従って明示的重み付け予測を実行する（８４）。ＤＣオフセット値がしきい値６６を超えず、コンパレータ５８が暗黙的予測モジュール６２を活動化するための活動化信号を発行した場合には、暗黙的予測モジュール６２は、上記で説明されたように、第１および第２の参照ビデオブロックから予測ビデオブロックの第２のバージョンを発生するために、たとえば、上式（３）に従って暗黙的重み付け予測を実行する（８６）。明示的予測モジュール６０または暗黙的予測モジュール６２のいずれが第２のバージョンを発生するかにかかわらず、それぞれ活動化されたモジュール６０、６２のうちの一方は、第２のバージョンをＲ−Ｄ分析モジュール６４に渡す。
【００９２】
Ｒ−Ｄ分析モジュール６４はまた、上記で説明されたように、予測ビデオブロックの第１のバージョンも受信し、第１のバージョンと第２のバージョンとのうちのより適切な１つを選択する（８８）。すなわち、Ｒ−Ｄ分析モジュール６４は、それぞれ第１のバージョンおよび第２のバージョンの各々のコスト７０Ａおよび７０Ｂを発生するために、たとえば、上式（４）に従って、上述のＲ−Ｄ分析を実行し、コスト７０Ａ、７０Ｂのうちの最も低い１つに関連する、第１のバージョンと第２のバージョンとのうちの１つを選択し得る。この選択されたバージョンは、所与のビットレートについて、予測ビデオデータが対応する元のビデオデータを「より適切に」表す。動き補償ユニット３５は、次いで、この選択されたバージョンを出力し得、ビデオエンコーダ２２は、それを予測Ｂフレームの予測ビデオブロックとして符号化することに進み得る。
【００９３】
一態様では、動き補償ユニット３５は、計算されたＤＣオフセット値の絶対値がしきい値を超えるとき、デフォルト重み付け予測によって発生された予測ビデオブロックの第１のバージョンと、デフォルト重みを使用して明示的重み付け予測によって発生された同じ予測ビデオブロックの第２のバージョンとの間で選択するために、上式（４）に従ってＲ−Ｄ分析を実行することができる。動き補償ユニット３５は、言い換えれば、デフォルト重みを明示的に符号化するかデフォルト重みを明示的に符号化しないかの間で選択することができる。上記で示唆されるように、明示的重み付け予測を実行するとき、動き推定ユニット３５はまた、計算されたＤＣオフセット値を符号化し得るので、この選択が生じる。
【００９４】
しかしながら、計算されたＤＣオフセットの絶対値がしきい値を超えないとき、動き補償ユニット３５は、デフォルト重み付け予測によって発生された予測ビデオブロックの第１のバージョンと、暗黙的に判断された重みを使用して暗黙的重み付け予測によって発生された同じ予測ビデオブロックの第２のバージョンと、の間で選択するために、上式（４）に従ってＲ−Ｄ分析を実行することができる。この点で、動き補償ユニット３５は、符号化するためにＤＣオフセットは必要ないと判断し、したがって、第１のバージョンと第２のバージョンとの間で選択することができる。この計算されたＤＣオフセットをしきい値と比較することの結果として、動き補償ユニット３５は、言い換えれば、第２のバージョンを発生し、第１のバージョンまたは第２のバージョンのいずれかとして予測ビデオブロックを符号化するために、暗黙的重み付け予測と明示的重み付け予測のいずれかを実行することの間で選択し、暗黙的重み付け予測および明示的重み付け予測のうちの選択されない１つを実行することなしに、暗黙的重み付け予測および明示的重み付け予測のうちの選択された１つを実行することができる。
【００９５】
図５は、本開示で説明される技法を実行する際のビデオエンコーダの例示的な動作をより詳細に示すフローチャートである。同じく、図２の特定のビデオエンコーダ５０、より詳細には、ビデオエンコーダ５０の特定のコンポーネント、たとえば、図３の動き補償ユニット３５に関して説明されたが、本技法は、図１に関して上述されたデバイスのいずれかによってハードウェアおよび／またはソフトウェアで実装され得る。
【００９６】
最初に、動き補償ユニット３５は、上記で説明されたように、参照フレームストア３４から２つの参照ビデオデータユニット、たとえば、参照ビデオブロックを受信する（１００）。代替的に、動き補償ユニット３５は、２つの参照ビデオデータユニットのうちの１つをそれぞれ含む２つの参照コード化ユニット、たとえば、参照フレームを受信し得る。デフォルト予測モジュール５４は、たとえば、式（１）に関して上記で説明された方法で参照ビデオブロックを使用してデフォルト重み付け予測を実行して、２つの、たとえば、第１のおよび第２の参照ビデオブロックから予測ビデオデータユニット、たとえば、予測ビデオブロックの第１のバージョンを発生し得る（１０２、１０４）。第１のバージョンを発生した後、デフォルト予測モジュール５４は、第１のバージョンをオフセット計算モジュール５６に出力し得る。
【００９７】
オフセット計算モジュール５６は、この場合も上記で説明された方法で、予測ビデオブロックの第１のバージョンについて上述のＤＣオフセット値などのオフセット値を計算し得る（１０６）。オフセット計算モジュール５６は、次いで、オフセット値をコンパレータ５８に出力し得、コンパレータ５８はオフセット値をしきい値６６と比較することに進む（１０８）。１つまたは複数、平均値、場合によってはすべて、あるいは計算されたオフセット値から導出された他のメトリックがしきい値６６を超える場合（「ＹＥＳ」１１０）、コンパレータ５８は、暗黙的予測モジュール６２ではなく明示的予測モジュール６０を活動化する活動化コードを発生し、出力し得る。１つまたは複数、平均値、平均、場合によってはすべて、あるいは計算されたオフセット値から導出されたメトリックがしきい値６６を超えない場合（「ＮＯ」１１０）、コンパレータ５８は、明示的予測モジュール６０ではなく暗黙的予測モジュール６２を活動化する活動化コードを発生し、出力し得る。
【００９８】
明示的予測モジュール６０が活動化された場合、明示的重み付け予測モジュール６０は、２つの参照ビデオブロックを使用して、たとえば、式（２）に関して上記で説明された方法で明示的予測を実行して、２つの参照ビデオブロックから予測ビデオデータユニット、たとえば、予測ビデオブロックの第２のバージョンを予測または発生する（１１２、１１６）。しかしながら、暗黙的予測モジュール６２が活動化された場合、暗黙的重み付け予測モジュール５２は、参照ビデオブロックを使用して、たとえば、式（３）に関して上記で説明された方法で暗黙的予測を実行して、参照ビデオブロックから予測ビデオブロックの第２のバージョンを予測または発生する（１１４、１１６）。いずれのモジュールが予測ビデオブロックの第２のバージョンを発生するかにかかわらず、明示的重み付け予測モジュール６０または暗黙的重み付け予測モジュール６２のいずれかは、第２のバージョンをＲ−Ｄ分析モジュール６４に出力する。
【００９９】
Ｒ−Ｄ分析モジュール６４はまた、予測ビデオブロックの第１のバージョンも受信し得、第１および第２のコスト７２を判断するために、たとえば、式（４）に関して上記で説明された方法でＲ−Ｄ分析を実行し得る（１１８）。Ｒ−Ｄ分析モジュール６４は、次いで、コスト７２のうちのより低い１つを選択し得る（１２０）。Ｒ−Ｄ分析モジュール６４は、コスト７２のうちのより低い１つを選択する際に、第１のバージョンまたは第２のバージョンのいずれでも、コスト７２のうちのより低い１つに関連するほうを選択し、コスト７２のうちのより低い１つに関連するこのバージョンを第３のコード化ユニットとして符号化する（１２２）。
【０１００】
図６は、コード化ユニット１２４Ａ〜１２４Ｅの例示的な時間的順序付きシーケンスを示す図である。すなわち、コード化ユニット１２４Ａは、時間的にコード化ユニット１２４Ｂの前に生じ、コード化ユニット１２４Ｂは時間的にコード化ユニット１２４Ｃの前に生じ、コード化ユニット１２４Ｃは、時間的にコード化ユニット１２４Ｄの前に生じ、コード化ユニット１２４Ｄは、時間的にコード化ユニット１２４Ｅの前に生じる。コード化ユニット１２４Ａ〜１２４Ｅ（「コード化ユニット１２４」）は時間的に次のコード化ユニットの前に生じるが、コード化ユニット１２４のうちの１つまたは複数はコード化ユニット１２４のうちの別のコード化ユニットの前に符号化され得る。たとえば、コード化ユニット１２４Ａおよび１２４Ｅは、それぞれ、コード化ユニット１２４のうちのあらゆる他のコード化ユニットから独立して（Ｉフレームの「Ｉ」）コード化されるＩフレームを表し、コード化ユニット１２４Ｂおよび１２４Ｄは、それぞれ、コード化ユニット１２４のうちの少なくとも１つの他のコード化ユニットから予測（Ｐフレームの「Ｐ」）符号化されるＰフレームを表す。したがって、Ｉフレーム１２４ＥはＰフレーム１２４Ｄの後に生じるが、Ｉフレーム１２４Ｅの符号化は、符号化されていることも、まだ符号化されていないこともある別のフレームに依存することがないので、Ｉフレーム１２４Ｅは時間的にＰフレーム１２４Ｄの前にコード化されることができる。
【０１０１】
いずれの場合も、コード化ユニット１２４Ｃは、上記で説明された３つの動き補償双方向（Ｂフレームの「Ｂ」）予測アルゴリズムのうちの１つに従って符号化されるＢフレームを表し得る。図３に示されるように、Ｂフレーム１２４Ｃのビデオデータユニット１２６は、時間的に前のフレームの部分またはビデオデータユニット、たとえば、Ｐフレーム１２４Ｂのビデオデータユニット１２８と、時間的に後または将来のフレームの部分またはビデオデータユニット、たとえば、Ｐフレーム１２４Ｄのビデオデータユニット１３０と、の両方から予測され得る。時間的に前の第１のフレーム１２４Ｂと時間的に後の第２のフレーム１２４Ｄとから双方向予測されるものとして説明されたが、ビデオデータユニット１０４は、２つの後続のコード化ユニット１２４または２つの前のコード化ユニット１２４から双方向予測され得る。ビデオデータユニット１２６、１２８および１３０は、それぞれ、マクロブロックまたは任意のサイズの他のビデオブロックなど、対応するビデオブロックを表し得る。対応するビデオブロックは、各ブロックが、一例として、その平均値が設定または適応許容差内であるピクセルデータを定義するという点で、互いに同様である１対のビデオブロックを備え得る。その上、２つの直接隣接するフレーム１２４Ｂおよび１２４Ｄから双方向予測されるものとして示されているが、ビデオデータユニット１２６は、コード化ユニット１２４Ａやコード化ユニット１２４Ｅなど、Ｂフレーム１２４Ｃに隣接していないフレームから双方向予測され得る。この点で、本技法は、本開示で与えられる例に限定されるべきではない。
【０１０２】
動き推定ユニット３２は、ビデオデータユニット１２６に対応するこれらの部分すなわちビデオデータユニット１２８および１３０の位置を特定し、例示のために、動きベクトル１３２Ａおよび１３２Ｂ（「動きベクトル１３２」）を判断し得る。動き補償ユニット３５は、参照フレームストア３４にアクセスし、Ｐフレーム１２４Ｂおよび１２４Ｄ（「Ｐフレーム１２４」）を検索することによって、または動き推定ユニット３２から直接、これらのビデオデータユニット１２８および１３０を受信し得る。特に、Ｐフレーム１２４のうちの一方は、リスト０  ５２Ａと呼ばれるフレームのセットからのフレームを備え得、Ｐフレーム１２４のうちの他方はリスト１  ５２Ｂと呼ばれるフレームのセットからのフレームを備え得る。
【０１０３】
動き補償ユニット３５は、次いで、部分１２８および１３０を使用して、可能な３つの動き補償双方向予測アルゴリズムのうちの２つのみを実行することによって発生されるビデオデータユニット１２６の２つのバージョンのうちの１つを効率的に選択するための、本開示で説明される技法を実施し得る。この例では、本技法は、コード化ユニットすなわちＢフレーム１２４Ｃの、マクロブロックまたは他のサイズのビデオブロックなど、部分すなわちビデオデータユニットを予測するために適用される。ビデオデータユニット１２６などの部分に適用されるか、コード化ユニット１２４Ｃなどのコード化ユニット全体に適用されるかにかかわらず、本技法は、３つのバージョンではなく２つのバージョンの間で効率的に選択することができる。
【０１０４】
本明細書で説明された技法は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。モジュール、ユニット、またはコンポーネントとして説明される特徴は、集積論理デバイスに一緒に、または個別であるが相互運用可能な論理デバイスとして別々に実装され得る。場合によっては、様々な特徴は、集積回路チップまたはチップセットなどの集積回路デバイスとして実装され得る。ソフトウェアで実装される場合、これらの技法は、実行されると、上記で説明された方法のうちの１つまたは複数をプロセッサに実行させる命令を備えるコンピュータ可読媒体によって少なくとも部分的に実現され得る。
【０１０５】
コンピュータ可読媒体は、パッケージング材料を含むことがある、コンピュータプログラム製品の一部をなすことができる。コンピュータ可読媒体は、ランダムアクセスメモリ（ＲＡＭ）、シンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、読取り専用メモリ（ＲＯＭ）、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、電気消去可能プログラマブル読取り専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリ、磁気または光学データ記憶媒体などのコンピュータデータ記憶媒体を備えることができる。本技法は、追加または代替として、命令またはデータ構造の形態でコードを搬送または伝達し、コンピュータによってアクセス、読取り、および／または実行され得るコンピュータ可読通信媒体によって、少なくとも部分的に実現され得る。
【０１０６】
コードまたは命令は、１つまたは複数のＤＳＰ、汎用マイクロプロセッサ、ＡＳＩＣ、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、あるいは他の等価な集積またはディスクリート論理回路など、１つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、上記の構造、または本明細書で説明される技法の実装に好適な他の構造のいずれかを指し得る。さらに、いくつかの態様では、本明細書で説明される機能は専用のソフトウェアモジュールまたはハードウェアモジュールの内部に与えられ得る。本開示はまた、本開示で説明された技法の１つまたは複数を実装する回路を含む様々な集積回路デバイスのいずれかを企図する。そのような回路は、単一の集積回路チップ、またはいわゆるチップセット中の複数の相互運用可能な集積回路チップで提供され得る。そのような集積回路デバイスは様々な適用例において使用され得、適用例のいくつかは携帯電話ハンドセットなどのワイヤレス通信デバイスでの使用を含み得る。
【０１０７】
本発明の様々な実施形態が説明された。これらおよび他の実施形態は以下の特許請求の範囲内に入る。
【図１】
0005175397.tif 000002
【図２】
0005175397.tif 000003
【図３】
0005175397.tif 000004
【図４】
0005175397.tif 000005
【図５】
0005175397.tif 000006
【図６】
0005175397.tif 000007