(57)【特許請求の範囲】
【請求項１】
ビデオデータを符号化する方法であって、
第１の精度動きベクトルの使用が第２の精度動きベクトルの使用よりもビデオデータのブロックに対して好ましいと判断されるときに、前記第１の精度動きベクトルを使用して参照フレームの一部分に関連して前記ブロックを符号化することと、
前記ブロックに対する隣接ブロックが、前記第１の精度動きベクトルまたは前記第２の精度動きベクトルの同じサブ整数ピクセル精度を有する動きベクトルを使用して符号化されるかどうかに少なくとも部分的に基づいて前記ブロックの符号化コンテキストを判断することと、
前記ブロックに対する前記第１の精度動きベクトルの使用と前記参照フレームを識別する参照フレームインデックス値の両方を示す信号値を、可変長コードを選択することに基づいて、生成することと、ここにおいて、前記可変長コードは、前記判断された符号化コンテキストに対応するコードのセットから選択され、前記選択されたコードの長さは、前記参照フレームに対する前記第２の精度動きベクトルの使用を示す前記コードのセット内の別のコードの長さよりも短く、前記第１の精度動きベクトルの使用は、前記参照フレームが前記参照フレームインデックス値によって示されるように参照フレームのリストからの最新の参照フレームかどうかに少なくとも部分的に基づいて、前記ブロックに対して好ましいと判断される、
前記符号化されたブロックと前記信号値とを出力することと、
を備える、方法。
【請求項２】
前記信号値を生成することが、前記第１の精度動きベクトルの使用を示すように前記ブロックに関連するフラグの値を設定することを備える、請求項１に記載の方法。
【請求項３】
前記ブロックがマクロブロックのパーティションを備え、前記信号値を生成することが、前記第１の精度動きベクトルの使用を示すように前記マクロブロックに関連するフラグの値を設定することを備え、前記方法は、前記フラグが前記ブロックに対する前記第１の精度動きベクトルの使用を示すときに、前記第１の精度動きベクトルと同じサブ整数ピクセル精度を有する各動きベクトルを使用して前記マクロブロックの前記パーティションのうちのそれぞれを符号化することをさらに備える、請求項１に記載の方法。
【請求項４】
前記ブロックを符号化することが、
前記ブロックの前記第１の精度動きベクトルを計算することと、
前記ブロックの前記第１の精度動きベクトルと動き予測子との間の差分を備える動きベクトル差分値を計算することと
を備える、請求項１に記載の方法。
【請求項５】
前記動きベクトル差分値を計算することが、
前記動き予測子を前記第１の精度動きベクトルと同じサブ整数ピクセル精度を有するように量子化することと、
前記ブロックの前記第１の精度動きベクトルと前記量子化された動き予測子との間の前記差分を計算することと
を備える、請求項４に記載の方法。
【請求項６】
ビデオデータを符号化するための装置であって、
第１の精度動きベクトルの使用が第２の精度動きベクトルの使用よりもビデオデータのブロックに対して好ましいと判断されるときに、前記第１の精度動きベクトルを使用して参照フレームの一部分に関連して前記ブロックを符号化することと、
前記ブロックに対する隣接ブロックが、前記第１の精度動きベクトルまたは前記第２の精度動きベクトルと同じサブ整数ピクセル精度を有する動きベクトルを使用して符号化されるかどうかに少なくとも部分的に基づいて前記ブロックの符号化コンテキストを判断することと、
前記ブロックに対する前記第１の精度動きベクトルの使用と前記参照フレームを識別する参照フレームインデックス値の両方を示す信号値を、可変長コードを選択することに基づいて、生成することと、ここにおいて、前記可変長コードは、前記判断された符号化コンテキストに対応するコードのセットから選択され、前記選択されたコードの長さは、前記参照フレームに対する前記第２の精度動きベクトルの使用を示す前記コードのセット内の別のコードの長さよりも短い、前記第１の精度動きベクトルの使用は、前記参照フレームが前記参照フレームインデックス値によって示されるように参照フレームのリストからの最新の参照フレームかどうかに少なくとも部分的に基づいて、前記ブロックに対して好ましいと判断される、
を行うように構成されたビデオエンコーダと、
前記符号化されたブロックと前記信号値を出力するように構成された送信機と、
を備える、装置。
【請求項７】
前記信号値を生成するために、前記ビデオエンコーダが、前記第１の精度動きベクトルの使用を示すように前記ブロックに関連するフラグの値を設定するように構成された、請求項６に記載の装置。
【請求項８】
前記ブロックがマクロブロックのパーティションを備え、前記信号値を生成するために、前記ビデオエンコーダが、前記第１の精度動きベクトルの使用を示すように前記マクロブロックに関連するフラグの値を設定するように構成され、前記ビデオエンコーダは、前記フラグが前記ブロックに対する前記第１の精度動きベクトルの使用を示すときに、前記第１の精度動きベクトルと同じサブ整数ピクセル精度を有する各動きベクトルを使用して前記マクロブロックの前記パーティションのうちのそれぞれを符号化するように構成された、請求項６に記載の装置。
【請求項９】
ビデオデータを符号化するための装置であって、
第１の精度動きベクトルの使用が第２の精度動きベクトルの使用よりもビデオデータのブロックに対して好ましいと判断されるときに、前記第１の精度動きベクトルを使用して参照フレームの一部分に関連して前記ブロックを符号化するための手段と、
前記ブロックに対する隣接ブロックが、前記第１の精度動きベクトルまたは前記第２の精度動きベクトルと同じサブ整数ピクセル精度を有する動きベクトルを使用して符号化されるかどうか少なくとも部分的に基づいて前記ブロックの符号化コンテキストを判断するための手段と、
前記ブロックに対する前記第１の精度動きベクトルの使用と前記参照フレームを識別する参照フレームインデックス値の両方を示す信号値を、可変長コードを選択することに基づいて、生成するための手段と、ここにおいて、前記可変長コードは、前記判断された符号化コンテキストに対応するコードのセットから選択され、前記第１の精度動きベクトルの使用は、前記参照フレームが前記参照フレームインデックス値によって示されるように参照フレームのリストからの最新の参照フレームかどうかに少なくとも部分的に基づいて、前記ブロックに対して好ましいと判断される、
前記符号化されたブロックと前記信号値とを出力するための手段と、
を備える、装置。
【請求項１０】
前記ブロックがマクロブロックのパーティションを備え、前記信号値を生成するための前記手段が、前記第１の精度動きベクトルの使用を示すように前記マクロブロックに関連するフラグの値を設定するための手段を備え、前記ブロックを符号化するための前記手段は、前記フラグが前記ブロックに対する前記第１の精度動きベクトルの使用を示すときに、前記第１の精度動きベクトルと同じサブ整数ピクセル精度を有する各動きベクトルを使用して前記マクロブロックの前記パーティションのうちのそれぞれを符号化するための手段をさらに備える、請求項９に記載の装置。
【請求項１１】
前記ブロックを符号化するための前記手段が、
前記ブロックの前記第１の精度動きベクトルを計算するための手段と、
前記ブロックの前記第１の精度動きベクトルと動き予測子との間の差分を備える動きベクトル差分値を計算するための手段と
を備える、請求項９に記載の装置。
【請求項１２】
前記動きベクトル差分値を計算するための前記手段が、
前記動き予測子を前記第１の精度動きベクトルと同じサブ整数ピクセル精度を有するように量子化するための手段と、
前記ブロックの前記第１の精度動きベクトルと前記量子化された動き予測子との間の前記差分を計算するための手段と
を備える、請求項１１に記載の装置。
【請求項１３】
実行されると、
第１の精度動きベクトルの使用が第２の精度動きベクトルの使用よりもビデオデータのブロックに対して好ましいと判断されたときに、前記第１の精度動きベクトルを使用して参照フレームの一部分に関連して前記ブロックを符号化することと、
前記ブロックに対する隣接ブロックが、前記第１の精度動きベクトルまたは前記第２の精度動きベクトルと同じサブ整数ピクセル精度を有する動きベクトルを使用して符号化されるかどうかに基づいて前記ブロックの符号化コンテキストを判断することと、
前記ブロックに対する前記第１の精度動きベクトルの使用と前記参照フレームを識別する参照フレームインデックス値の両方を示す信号値を、可変長コードを選択することに基づいて、生成することと、ここにおいて、前記可変長コードは、前記判断された符号化コンテキストに対応するコードのセットから選択され、前記第１の精度動きベクトルの使用は、前記参照フレームが前記参照フレームインデックス値によって示されるように参照フレームのリストからの最新の参照フレームかどうかに少なくとも部分的に基づいて、前記ブロックに対して好ましいと判断される、
前記符号化されたブロックと前記信号値とを出力することと、
をプロセッサに行わせる命令を備える非一時的なコンピュータ可読記憶媒体。
【請求項１４】
前記ブロックがマクロブロックのパーティションを備え、前記信号値を生成するための前記命令が、前記第１の精度動きベクトルの使用を示すように前記マクロブロックに関連するフラグの値を設定するための命令を備え、前記コンピュータ可読記憶媒体は、前記フラグが前記ブロックに対する前記第１の精度動きベクトルの使用を示すときに、前記第１の精度動きベクトルと同じサブ整数ピクセル精度を有する各動きベクトルを使用して前記マクロブロックの前記パーティションのうちのそれぞれを符号化するための命令をさらに備える、請求項１３に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１５】
前記ブロックを符号化するための前記命令が、
前記ブロックの前記第１の精度動きベクトルを計算することと、
前記ブロックの前記第１の精度動きベクトルと動き予測子との間の差分を備える動きベクトル差分値を計算することと
を行うための命令を備える、請求項１３に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１６】
前記動きベクトル差分値を計算するための前記命令が、
前記動き予測子を前記第１の精度動きベクトルと同じサブ整数ピクセル精度を有するように量子化することと、
前記ブロックの前記第１の精度動きベクトルと前記量子化された動き予測子との間の前記差分を計算することと、
を行うための命令を備える、請求項１５に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１７】
ビデオデータを復号する方法であって、
参照フレームの一部分に関連して符号化されたビデオデータの符号化されたブロックと、参照フレームインデックス値および前記符号化されたブロックが第１の精度動きベクトルを使用して符号化されたことの両方を示す信号値とを受信することと、ここにおいて、前記第１の精度動きベクトルの使用は、前記ブロックを符号化するために使用される前記参照フレームが、前記参照フレームインデックス値によって示されるように参照フレームのリストからの最新の参照フレームかどうかに少なくとも部分的に基づいて、第２の精度動きベクトルの使用よりも、前記ブロックを符号化するのに好ましいと判断される、
前記ブロックに対する隣接ブロックが、前記第１の精度動きベクトルまたは前記第２の精度動きベクトルと同じサブ整数ピクセル精度を有する動きベクトルを使用して符号化されたかどうかに基づいて前記ブロックの符号化コンテキストを判断することと、
少なくとも部分的に、前記判断された符号化コンテキストに対応するコードのセットに基づいて前記参照フレームインデックス値を識別することによって、前記参照フレームを識別することと、
少なくとも部分的に、前記参照フレームインデックス値と、前記ブロックを符号化するための前記第１の精度動きベクトルの使用を示す可変長コードを分析することによって、前記信号値を分析することと、ここにおいて、前記信号値は、前記ビデオデータの符号化されたブロックは、前記第１の精度動きベクトルを使用して符号化されたと判断するために分析される、
前記信号値に基づいて、前記第１の精度動きベクトルを使用して前記符号化されたブロックを復号することと
を備え、
前記符号化されたブロックは、動きベクトル差分値を備え、前記ブロックを復号することは、
前記ブロックの動き予測子を判断するここと、
前記第１の精度動きベクトルを計算するために前記動き予測子と前記動きベクトル差分値の合計を計算することと
を備える、方法。
【請求項１８】
前記ブロックがマクロブロックのパーティションを備え、前記信号値を分析することが、前記第１の精度動きベクトルの使用を示す、前記マクロブロックに関連するフラグの値を分析することを備え、前記方法が、前記第１の精度動きベクトルと同じサブ整数ピクセル精度を有する各受信された動きベクトルを使用して前記マクロブロックの前記パーティションのうちのそれぞれを復号することをさらに備える、請求項１７に記載の方法。
【請求項１９】
ビデオデータを復号するための装置であって、
参照フレームの一部分に関連して符号化されたビデオデータの符号化されたブロックと、参照フレームインデックス値および前記符号化されたブロックが第１の精度動きベクトルを使用して符号化されたことの両方を示す信号値とを受信するように構成された入力インターフェースと、ここにおいて、前記第１の精度動きベクトルの使用は、前記ブロックを符号化するために使用される前記参照フレームが、前記参照フレームインデックス値によって示されるように参照フレームのリストからの最新の参照フレームかどうかに少なくとも部分的に基づいて、第２の精度動きベクトルの使用よりも、前記ブロックを符号化するのに好ましいと判断される、
前記ブロックに対する隣接ブロックが、前記第１の精度動きベクトルまたは前記第２の精度動きベクトルと同じサブ整数ピクセル精度を有する動きベクトルを使用して符号化されたかどうかに基づいて前記ブロックの符号化コンテキストを判断することと、ここにおいて、前記参照フレームを識別するために、
少なくとも部分的に、前記判断された符号化コンテキストに対応するコードのセットに基づいて前記参照フレームインデックス値を識別することによって、前記参照フレームを識別することと、
前記ビデオデータのブロックが、前記第１の精度動きベクトルを使用して符号化されたと判断するために、少なくとも部分的に、前記参照フレームインデックス値と、前記ブロックを符号化するための前記第１の精度動きベクトルの使用を示す可変長コードを分析することによって、前記信号値を分析することと、
前記信号値に基づいて、前記第１の精度動きベクトルを使用して前記ビデオデータの符号化されたブロックを復号することと、
を行うように構成されたビデオデコーダと
を備える、装置。
【請求項２０】
前記ブロックがマクロブロックのパーティションを備え、前記信号値を分析するために、前記ビデオデコーダが、前記第１の精度動きベクトルの使用を示す、前記マクロブロックに関連するフラグの値を分析するように構成され、前記ビデオデコーダが、前記第１の精度動きベクトルと同じサブ整数ピクセル精度を有する各受信された動きベクトルを使用して前記マクロブロックの前記パーティションのうちのそれぞれを復号するように構成された、請求項１９に記載の装置。
【請求項２１】
ビデオデータを復号するための装置であって、
参照フレームの一部分に関連して符号化されたビデオデータの符号化されたブロックと、参照フレームインデックス値および前記ビデオデータの符号化されたブロックが第１の精度動きベクトルを使用して符号化されたことの両方を示す信号値とを受信するための手段と、ここにおいて、前記第１の精度動きベクトルの使用は、前記ブロックを符号化するために使用される前記参照フレームが、前記参照フレームインデックス値によって示されるように参照フレームのリストからの最新の参照フレームかどうかに少なくとも部分的に基づいて、第２の精度動きベクトルの使用よりも、前記ビデオデータのブロックを符号化するのに好ましいと判断される、
前記ブロックに対する隣接ブロックが、前記第１の精度動きベクトルまたは前記第２の精度動きベクトルと同じサブ整数ピクセル精度を有する動きベクトルを使用して符号化されたかどうかに基づいて前記ブロックの符号化コンテキストを判断するための手段と、
少なくとも部分的に、前記判断された符号化コンテキストに対応するコードのセットに基づいて前記参照フレームインデックス値を識別することによって、前記参照フレームを識別するための手段と、
少なくとも部分的に、前記参照フレームインデックス値と、前記ブロックを符号化するための前記第１の精度動きベクトルの使用を示す可変長コードを分析することによって、前記信号値を分析するための手段と、ここにおいて、前記信号値は、前記ビデオデータのブロックは、前記第１の精度動きベクトルを使用して符号化されたと判断するために分析される、
前記信号値に基づいて、前記第１の精度動きベクトルを使用して前記符号化されたブロックを復号するための手段と
を備え、
前記符号化されたブロックは、動きベクトル差分値を備え、前記ブロックを復号するための手段は、
前記ブロックの動き予測子を判断するための手段と、
前記第１の精度動きベクトルを計算するために前記動き予測子と前記動きベクトル差分値の合計を計算するための手段と
を備える、装置。
【請求項２２】
前記ブロックがマクロブロックのパーティションを備え、前記信号値を分析するための前記手段が、前記第１の精度動きベクトルの使用を示す、前記マクロブロックに関連するフラグの値を分析するための手段を備え、前記ビデオデータのブロックを復号するための手段が、前記第１の精度動きベクトルと同じサブ整数ピクセル精度を有する各受信された動きベクトルを使用して前記マクロブロックの前記パーティションのうちのそれぞれを復号するための手段をさらに備える、請求項２１に記載の装置。
【請求項２３】
実行されると、
参照フレームの一部分に関連して符号化されたビデオデータの符号化されたブロックと、参照フレームインデックス値と前記ビデオデータの符号化されたブロックが第１の精度動きベクトルを使用して符号化されたことの両方を示す信号値とを受信することと、ここにおいて、前記第１の精度動きベクトルの使用は、前記ブロックを符号化するために使用される前記参照フレームが、前記参照フレームインデックス値によって示されるように参照フレームのリストからの最新の参照フレームかどうかに少なくとも部分的に基づいて、第２の精度動きベクトルの使用よりも、前記ブロックを符号化するのに好ましいと判断される、
前記ブロックに対する隣接ブロックが、前記第１の精度動きベクトルまたは前記第２の精度動きベクトルと同じサブ整数ピクセル精度を有する動きベクトルを使用して符号化されたかどうかに基づいて前記ブロックの符号化コンテキストを判断することと、
少なくとも部分的に、前記判断された符号化コンテキストに対応するコードのセットに基づいて前記参照フレームインデックス値を識別することによって、前記参照フレームを識別することと、
少なくとも部分的に、前記参照フレームインデックス値と、前記ブロックを符号化するための前記第１の精度動きベクトルの使用を示す可変長コードを分析することによって、前記信号値を分析することと、ここにおいて、前記信号値は、前記ビデオデータのブロックが、前記第１の精度動きベクトルを使用して符号化されたと判断するために分析される、
前記信号値に基づいて、前記第１の精度動きベクトルを使用して前記符号化されたブロックを復号することと、
をプロセッサに行わせる命令を備える非一時的なコンピュータ可読記憶媒体。
【請求項２４】
前記ブロックがマクロブロックのパーティションを備え、前記信号値を分析するための前記命令が、前記第１の精度動きベクトルの使用を示す、前記マクロブロックに関連するフラグの値を分析するための命令を備え、前記ビデオデータのブロックを復号するための前記命令は、前記第１の精度動きベクトルと同じサブ整数ピクセル精度を有する各受信された動きベクトルを使用して前記マクロブロックの前記パーティションのうちのそれぞれを復号するための命令を備える、請求項２３に記載の非一時的なコンピュータ可読記憶媒体。
【請求項２５】
前記参照フレームのリストに関連する参照フレームインデックスにおいて、前記参照フレームインデックス値を含む複数の参照フレームインデックス値をリストすることをさらに備え、前記複数の参照フレームインデックス値のうちのそれぞれは、異なる参照フレームを識別する、請求項１に記載の方法。
【請求項２６】
前記第１の精度動きベクトルの前記サブ整数ピクセル精度を使用して、第１の符号化パスを実行することと、
前記第２の精度動きベクトルの前記サブ整数ピクセル精度を使用して第２の符号化パスを実行することと、
前記第１の符号化パスの第１のコストを計算することと、
前記第２の符号化パスの第２のコストを計算することと、
前記第１のコストが前記第２のコストより低い場合、前記第２の精度動きベクトルの使用より前記ブロックに対して好ましい前記第１の精度動きベクトルの使用を選択することと
をさらに備え、
前記第１のコストと前記第２のコストのそれぞれは誤差とビットレートとの重み付けされた組合せとして計算される、
請求項１に記載の方法。
【請求項２７】
前記第１の精度動きベクトルの使用が、前記ブロックに対して好ましと判断することは、動きベクトル探索中にレート歪最適化を実行することを備える、請求項１に記載の方法。
【請求項２８】
前記第１の精度動きベクトルは１／８ピクセル精度動きベクトルであり前記第２の精度動きベクトルは１／４ピクセル精度動きベクトルである、請求項１に記載の方法。
【請求項２９】
前記信号値を生成することは、前記参照フレームインデックス値を、前記第１の精度動きベクトルのユーザを示す第１の信号値と組み合わせることを備える、請求項１に記載の方法。
【請求項３０】
前記第１の精度動きベクトルの使用は、前記参照フレームに対応する精度動きベクトルが前記第１の精度動きベクトルである統計的可能性によって示される、請求項１に記載の方法。
【請求項３１】
前記信号値は、前記参照フレームインデックス値と、前記統計的可能性を表す値とを備える、請求項３０に記載の方法。
【請求項３２】
前記第１の精度動きベクトルは、前記参照フレームに対して判断される、請求項１に記載の方法。
【請求項３３】
前記参照フレームが前記参照フレームのリストからの前記最新の参照フレームであるときのみ前記第１の精度動きベクトルの使用または前記第２の精度動きベクトルの使用が前記ブロックに対して好ましいかを選択することをさらに備える、請求項１に記載の方法。
【請求項３４】
前記参照フレームが前記参照フレームのリストからの最新の参照フレームでないとき、前記選択することは実行されず、前記ブロックは、前記第２の精度動きベクトルを使用して符号化される、請求項３３に記載の方法。
【請求項３５】
前記方法は、ワイヤレス通信デバイス上で実行可能であり、前記ワイヤレス通信デバイスは、
ビデオデータを記憶するように構成されたメモリと、
前記メモリ内の前記ビデオデータを処理するための命令を実行するように構成されたプロセッサと、
前記符号化されたブロックと前記信号値とを受信するように構成された受信機と
を備える、請求項１７に記載の方法。
【請求項３６】
前記ワイヤレス通信デバイスは、セルラー電話であり、前記符号化されたブロックおよび前記信号値は、前記受信機によって受信され、セルラー通信規格にしたがって変調される、請求項３５に記載の方法。
【請求項３７】
前記方法は、ワイヤレス通信デバイス上で実行可能であり、前記ワイヤレス通信デバイスは、
ビデオデータを記憶するように構成されたメモリと、
前記メモリ内の前記ビデオデータを処理するための命令を実行するように構成されたプロセッサと、
前記符号化されたブロックと前記信号値とを受信するように、および、入力インターフェースによる受信のために前記符号化されたブロックと前記信号値とを提供するように構成された受信機と
を備える、請求項１７に記載の方法。
【請求項３８】
前記ワイヤレス通信デバイスは、セルラー電話であり、前記符号化されたブロックおよび前記信号値は、前記受信機によって受信され、セルラー通信規格にしたがって変調される、請求項３７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
米国特許法第１１９条に基づく優先権の主張
この出願は、２０１０年２月１９日に出願された米国仮出願第６１／３０６，３８８号、２０１０年４月１２日に出願された米国仮出願第６１／３２３，２２１号、および２０１０年８月２３日に出願された米国仮出願第６１／３７６，１７０号の恩恵を要求するもので、これらのそれぞれは引用により本明細書に組み込まれる。
【０００２】
同時係属特許出願の参照
本特許出願は、２０１０年８月２５日に出願され、本出願の譲受人に譲渡され、引用により本明細書に明確に組み込まれる同時係属の米国仮特許出願６１／３７６，８０８号に関連する。
【０００３】
本開示は、ビデオコーディングに関する。
【背景技術】
【０００４】
デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップまたはデスクトップコンピュータ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲーム機、ビデオゲームコンソール、セルラー電話または衛星無線電話、ビデオ遠隔会議デバイスなどを含む、広範囲にわたるデバイスに組み込まれ得る。デジタルビデオデバイスは、ＭＰＥＧ−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ  Ｈ．２６３またはＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４、Ｐａｒｔ１０、Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＡＶＣ）によって定義された規格、およびそのような規格の拡張に記載されているビデオ圧縮技法などのビデオ圧縮技法を実装して、デジタルビデオ情報をより効率的に記憶、送信および受信する。
【０００５】
ビデオ圧縮技法では、ビデオシーケンスに固有の冗長性を低減または除去するために空間的予測および／または時間的予測を実行する。ブロックベースのビデオコーディングの場合、ビデオフレームまたはスライスがマクロブロックなどのブロックに区分され得る。各マクロブロックはさらに区分され得る。イントラコード化（Ｉ）フレームまたはスライス中のマクロブロックは、近傍マクロブロックに関する空間的予測を使用して符号化される。インターコード化（ＰまたはＢ）フレームまたはスライス中のマクロブロックは、同じフレームまたはスライス中の近傍マクロブロックに関する空間的予測、あるいは他の参照フレームに関する時間的予測を使用し得る。
【発明の概要】
【０００６】
概して、本開示は、ビデオコーディング中の適応動き解像度、例えば、動き推定および動き補償のための適応解像度選択をサポートするための技法について説明する。例えば、ビデオエンコーダが、ビデオデータのブロックを符号化するときに、１／８ピクセル精度または１／４ピクセル精度のいずれかを選択するように構成され得る。ビデオエンコーダがブロックに対して１／８ピクセル精度を選択すると、ビデオエンコーダは、ブロックの動きベクトルを参照動きベクトル(reference motion vector)と同じ精度に量子化することによって、動きベクトルを符号化し得る。ビデオエンコーダは、本開示の技法を使用して、ブロックに対する１／８ピクセル精度の選択をシグナリングし得る。いくつかの例で、そのような信号は特定のコンテキスト内で解釈され得、コンテキストは隣接ブロックが１／８ピクセル精度を使用して符号化されたのか、１／４ピクセル精度を使用して符号化されたのか、またはそれらの組合せを使用して符号化されたのかに関係し得る。
【０００７】
一例では、方法が、ブロックに対して、１／４ピクセル精度動きベクトルよりも１／８ピクセル精度動きベクトルの使用が好ましいと判断されたときに、ビデオエンコーダで、１／８ピクセル精度動きベクトルを使用してビデオデータのブロックを符号化することと、ブロックに対する１／８ピクセル精度動きベクトルの使用を示す信号値を生成することと、符号化されたブロックと信号値とを出力することとを含む。
【０００８】
別の例では、装置が、ブロックに対して、１／４ピクセル精度動きベクトルよりも１／８ピクセル精度動きベクトルの使用が好ましいと判断されたときに、１／８ピクセル精度動きベクトルを使用してビデオデータのブロックを符号化し、ブロックに対する１／８ピクセル精度動きベクトルの使用を示す信号値を生成するためのビデオエンコーダと、符号化されたブロック並びに信号値を出力するための出力インターフェースとを含む。
【０００９】
別の例では、装置が、ブロックに対して、１／４ピクセル精度動きベクトルよりも１／８ピクセル精度動きベクトルの使用が好ましいと判断されたときに、１／８ピクセル精度動きベクトルを使用してビデオデータのブロックを符号化するための手段と、ブロックに対する１／８ピクセル精度動きベクトルの使用を示す信号値を生成するための手段と、符号化されたブロック並びに信号値を出力するための手段とを含む。
【００１０】
別の例では、コンピュータ可読記憶媒体などのコンピュータ可読媒体が、実行されると、ブロックに対して、１／４ピクセル精度動きベクトルよりも１／８ピクセル精度動きベクトルの使用が好ましいと判断されたときに、１／８ピクセル精度動きベクトルを使用してビデオデータのブロックを符号化することと、ブロックに対する１／８ピクセル精度動きベクトルの使用を示す信号値を生成することと、符号化されたブロック並びに信号値を出力することとをプログラム可能なプロセッサに行わせる命令を含んでおり、例えば、それらの命令で符号化される。
【００１１】
別の例では、方法が、ビデオデコーダで、ビデオデータの符号化されたブロック、並びにビデオデータの符号化されたブロックが１／８ピクセル精度動きベクトルを使用して符号化されたことを示す信号値を受信することと、そのビデオデータのブロックが１／８ピクセル精度動きベクトルを使用して符号化されたと判断するために信号値を分析することと、信号値に基づいて１／８ピクセル精度動きベクトルを使用したビデオデータのブロックを復号することとを含む。
【００１２】
別の例では、装置が、ビデオデータの符号化されたブロック、並びにビデオデータの符号化されたブロックが１／８ピクセル精度動きベクトルを使用して符号化されたことを示す信号値を受信するための入力インターフェースと、そのビデオデータのブロックが１／８ピクセル精度動きベクトルを使用して符号化されたと判断するために信号値を分析し、信号値に基づいて１／８ピクセル精度動きベクトルを使用したビデオデータのブロックを復号するためのビデオデコーダとを含む。
【００１３】
別の例では、装置が、ビデオデータの符号化されたブロック、並びにビデオデータの符号化されたブロックが１／８ピクセル精度動きベクトルを使用して符号化されたことを示す信号値を受信するための手段と、そのビデオデータのブロックが１／８ピクセル精度動きベクトルを使用して符号化されたと判断するために信号値を分析するための手段と、信号値に基づいて１／８ピクセル精度動きベクトルを使用するビデオデータのブロックを復号するための手段とを含む。
【００１４】
別の例では、コンピュータ可読記憶媒体が、実行されると、ビデオデータの符号化されたブロック、並びにビデオデータの符号化されたブロックが１／８ピクセル精度動きベクトルを使用して符号化されたことを示す信号値を受信することと、そのビデオデータのブロックが１／８ピクセル精度動きベクトルを使用して符号化されたと判断するために信号値を分析することと、信号値に基づいて１／８ピクセル精度動きベクトルを使用するビデオデータのブロックを復号することとをプロセッサに行わせる命令を備える。
【００１５】
１つまたは複数の例の詳細は、添付の図面および以下の説明に記載されている。他の特徴、目的、および利点は、説明および図面、並びに特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１６】
【図１】動きベクトルに対して１／８ピクセル精度または１／４ピクセル精度のいずれかを利用し得る例示的なビデオ符号化および復号システムを示すブロック図。
【図２】１／８ピクセル精度または１／４ピクセル精度のいずれかを使用してブロックを選択的に符号化するための技法を実装し得るビデオエンコーダの一例を示すブロック図。
【図３】符号化されたビデオシーケンスを復号するビデオデコーダの一例を示すブロック図。
【図４】フルピクセル位置(full pixel position)についてのフラクショナルピクセル位置(fractional pixel positions)を示す概念図。
【図５】現在のブロック、例えば、符号化されるべきブロックの符号化コンテキストを判断するために使用され得るブロックを示す概念図。
【図６】１／８ピクセル精度動きベクトルまたは１／４ピクセル精度動きベクトルのいずれかを使用してビデオデータのブロックを符号化すると共に、デコーダに対して精度の選択をシグナリングするための例示的な方法を示すフローチャート。
【図７】符号化されたブロックの動きベクトルの精度を示す信号値を使用し、符号化されたブロックを復号するための例示的な方法を示すフローチャート。
【発明を実施するための形態】
【００１７】
概して、本開示は、１／８ピクセル（すなわち、１ピクセルの１／８）精度を有する動きベクトルの使用をサポートするための技法について説明する。本開示中の「１／８ピクセル」精度という用語は、１ピクセルの１／８の精度、例えば、フルピクセル位置（０／８）、１ピクセルの１／８、１ピクセルの２／８（すなわち１ピクセルの１／４）、１ピクセルの３／８、１ピクセルの４／８（すなわち１ピクセルの１／２）、１ピクセルの５／８、１ピクセルの６／８（すなわち１ピクセルの３／４）、または１ピクセルの７／８のうちの１つを指すものとする。
【００１８】
従来のＨ．２６４エンコーダおよびデコーダは、１／４ピクセル精度を有する動きベクトルをサポートする。いくつかの事例で、１／８ピクセル精度は１／４ピクセル精度に勝るいくつかの利点を提供し得る。但し、あらゆる動きベクトルを１／８ピクセル精度に符号化することは、非常に多くのコーディングビットを必要とし得、それは１／８ピクセル精度動きベクトルの利益を上回り得る。本開示の技法は、適切な場合に１／８ピクセル精度動きベクトルを使用することと、他の場合に標準的な１／４ピクセル精度動きベクトルを使用することと、特定のブロックに対してエンコーダが使用した精度をデコーダが判断し得るように、１／８ピクセル精度動きベクトルが使用されたときにそれらの使用をシグナリングすることとを含む。
【００１９】
ビデオエンコーダは、代替的に動き予測子（motion predictor）と呼ばれる「予測子」動きベクトルに関連してブロックの動きベクトルを符号化し得る。所与のブロックの動き予測子は、動きベクトルが符号化されるブロックに隣接するブロックの動きベクトルの中央値として選択され得る。概して、動きベクトルを符号化するために、ビデオエンコーダは動きベクトルと予測子との間の差分を計算する。１／８ピクセル精度動きベクトルを導入することによって、動きベクトルと予測子とは異なる精度を有し得る。符号化されるべき動きベクトルとそれの動き予測子との間の差分を適切に計算するために、ビデオエンコーダは、動きベクトルと動き予測子とが同じ精度を有することを保証し得る。
【００２０】
本開示は、動き予測子に関連して動きベクトルを符号化するための様々な例示的な方法を提供する。一例で、ビデオエンコーダは、符号化のために全ての動きベクトルを１つの解像度に変換するように構成され得る。すなわち、符号化されるべき動きベクトルと予測子との間の差分を計算するために、エンコーダは、動きベクトルと動き予測子とをグローバル解像度に変換し得る。例えば、エンコーダは、差分を計算するために、全ての動きベクトルを１／４ピクセル精度に変換し得るか、または全ての動きベクトルを１／８ピクセル精度に変換し得る。別の例で、ビデオエンコーダは、動き予測子を、符号化されるべき動きベクトルと同じ解像度に量子化し得る。
【００２１】
本開示はまた、特定の動きベクトルに対して１／４ピクセル精度が使用されたのか１／８ピクセル精度が使用されたのかをシグナリングするための技法を提供する。いくつかの例で、ビデオエンコーダは、フラグの値が、動きベクトルに対する１／８ピクセル精度の使用または１／４ピクセル精度の使用を示すように、あらゆる動きベクトルのために１ビットフラグを追加するように構成され得る。本開示は、１／８ピクセル精度動きベクトルの存在をシグナリングするための様々な他の方法も提案する。
【００２２】
一例で、ビデオエンコーダは、各動きベクトルの精度をシグナリングするために１ビットフラグを使用し得るが、マクロブロックデータ自体を用いるのではなく、再設計された参照フレームインデックス値の一部としてフラグを含み得る。参照フレームインデックスは一般に可変長コード（ＶＬＣ）に対応する。本開示は、１／４ピクセル精度または１／８ピクセル精度を示す１ビットフラグが参照フレームインデックス値を表す可変長コード中に含まれ得るように可変長コードを設計することを提案する。例えば、ビデオエンコーダは、潜在的な参照フレームインデックス値、並びに参照フレームのブロックを指す動きベクトルが１／８ピクセル精度を使用する可能性を考慮し得るコンテキスト適応型可変長コーディング（ＣＡＶＬＣ）アルゴリズムを実行するように構成され得る。
【００２３】
別の例では、フレームを符号化するときに、（例えば、ｒｅｆ＿ｉｄｘ０を有する）最新の参照フレームが参照のために使用されたときのみ、動き解像度適応（すなわち、１／４ピクセル精度または１／８ピクセル精度のいずれかを使用する能力）が行われ得る。従って、この例では、最新の参照フレーム（すなわち、参照フレームのリスト中の直近の参照フレーム）以外の参照フレームに関連してブロックが符号化されたときは、ブロックの動きベクトルは１／４ピクセル解像度のみを有し得、他の場合に、精度は、例えば、１ビットフラグによってシグナリングされ得るか、あるいはデフォルトとして１／８ピクセル精度を有すると推定され得る。
【００２４】
本開示は、ブロックのコンテキストに基づいて、ブロックの動きベクトルが１／８ピクセル精度を使用したのか１／４ピクセル精度を使用したのかについての指示を変化させるための技法をさらに提供する。コンテキストは、隣接ブロックが、１／８ピクセル精度をもつ動きベクトルを含むか、または１／４ピクセル精度をもつ動きベクトルを含むかに対応し得る。隣接ブロックは、現在のブロックの上のブロックと現在のブロックの左のブロックとに対応し得る。コンテキストは、隣接ブロックの動きベクトルがすべて１／８ピクセル精度を使用するときと、隣接ブロックの動きベクトルがすべて１／４ピクセル精度を使用するときと、隣接ブロックの動きベクトルが１／８ピクセルと１／４ピクセル精度との混合を使用するときとに対応し得る。
【００２５】
上記の状況（すべて１／８精度、すべて１／４精度、または混合精度）は、コード化されるべき現在のブロックの符号化コンテキストと呼ばれ得る。現在のブロックが隣接ブロックの動きベクトルと同じ精度の動きベクトルを使用することから恩恵を受け得るという認識において、本開示は、現在のブロックの符号化コンテキストごとに異なるコード（例えば、可変長コード）を使用するための技法を提供する。特定の符号化コンテキストのコードは、符号化コンテキストにおけるより可能性が高い精度が、相対的に短いコードを使用して示され、より可能性が低い精度は、相対的に長いコードを使用して示されるように設計され得る。
【００２６】
図１は、動きベクトルに対して１／８ピクセル精度または１／４ピクセル精度のいずれかを利用し得る例示的なビデオ符号化および復号システム１０を示すブロック図である。図１に示すように、システム１０は、通信チャネル１６を介して符号化ビデオを宛先デバイス１４に送信するソースデバイス１２を含む。ソースデバイス１２および宛先デバイス１４は、広範囲のデバイスのいずれかを備え得る。場合によっては、ソースデバイス１２および宛先デバイス１４は、いわゆるセルラー電話または衛星無線電話のワイヤレスハンドセットなどのワイヤレス通信デバイス、または通信チャネル１６を介してビデオ情報を通信することができ、その場合、通信チャネル１６がワイヤレスである任意のワイヤレスデバイスを備え得る。但し、動きベクトルに対する、１／８ピクセル精度と１／４ピクセル精度との間の選択と、この選択をシグナリングすることと、得られた動きベクトルを符号化することとに関係する本開示の技法は、必ずしもワイヤレス適用例またはワイヤレス設定に限定されるわけではない。例えば、これらの技法は、無線テレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、インターネットビデオ送信、記憶媒体上に符号化される符号化デジタルビデオ、または他のシナリオに適用され得る。従って、通信チャネル１６は、符号化ビデオデータの送信に好適なワイヤレスまたはワイヤード媒体の任意の組合せを備え得る。
【００２７】
図１の例で、ソースデバイス１２は、ビデオソース１８と、ビデオエンコーダ２０と、変調器／復調器（モデム）２２と、送信機２４とを含む。宛先デバイス１４は、受信機２６と、モデム２８と、ビデオデコーダ３０と、ディスプレイデバイス３２とを含む。本開示によれば、ソースデバイス１２のビデオエンコーダ２０は、動きベクトルに対する１／８ピクセル精度と１／４ピクセル精度との間の選択のため、この選択をシグナリングするため、および得られた動きベクトルを符号化するための技法を適用するように構成され得る。他の例で、ソースデバイスおよび宛先デバイスは他の構成要素または構成を含み得る。例えば、ソースデバイス１２は、外部カメラなど、外部ビデオソース１８からビデオデータを受信し得る。同様に、宛先デバイス１４は、内蔵ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
【００２８】
図１の図示のシステム１０は一例にすぎない。動きベクトルに対する１／８ピクセル精度と１／４ピクセル精度との間の選択のため、この選択をシグナリングするため、および得られた動きベクトルを符号化するための技法は、任意のデジタルビデオ符号化および／または復号デバイスによって実行され得る。概して本開示の技法はビデオ符号化デバイスによって実行されるが、本技法は、一般に「コーデック」と呼ばれるビデオエンコーダ／デコーダによっても実行され得る。さらに、本開示の技法はビデオプリプロセッサによっても実行され得る。ソースデバイス１２および宛先デバイス１４は、ソースデバイス１２が宛先デバイス１４に送信するためのコード化ビデオデータを生成するような、コーディングデバイスの例にすぎない。いくつかの例では、デバイス１２、１４の各々がビデオ符号化構成要素と復号構成要素とを含むので、デバイス１２、１４は、実質的に対称的に動作し得る。従って、システム１０は、例えば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、またはビデオ電話のためのビデオデバイス１２とビデオデバイス１４との間の一方向または双方向のビデオ送信をサポートし得る。
【００２９】
ソースデバイス１２のビデオソース１８は、ビデオカメラなどのビデオキャプチャデバイス、予めキャプチャされたビデオを含んでいるビデオアーカイブ、および／またはビデオコンテンツプロバイダからのビデオフィードを含み得る。さらなる代替として、ビデオソース１８は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ発生ビデオとの組合せを発生し得る。場合によっては、ビデオソース１８がビデオカメラである場合、ソースデバイス１２および宛先デバイス１４は、いわゆるカメラ付き携帯電話またはビデオ電話を形成し得る。但し、上述のように、本開示で説明する技法は、一般にビデオコーディングに適用可能であり、ワイヤレスおよび／またはワイヤードアプリケーションに適用され得る。各場合において、キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ発生ビデオはビデオエンコーダ２０によって符号化され得る。次いで、符号化ビデオ情報は、通信規格に従ってモデム２２によって変調され、送信機２４を介して宛先デバイス１４に送信され得る。モデム２２は、信号変調のために設計された様々なミキサ、フィルタ、増幅器または他の構成要素を含み得る。送信機２４は、増幅器、フィルタ、および１つまたは複数のアンテナを含む、データを送信するために設計された回路を含み得る。
【００３０】
宛先デバイス１４の受信機２６はチャネル１６を介して情報を受信し、モデム２８は情報を復調する。この場合も、ビデオ符号化プロセスは、動きベクトルに対して１／８ピクセル精度および１／４ピクセル精度の間で選択し、この選択をシグナリングし、得られた動きベクトルを符号化するために本明細書で説明する技法のうちの１つまたは複数を実装し得る。チャネル１６を介して通信される情報は、ビデオエンコーダ２０によって定義され、またビデオデコーダ３０によって使用される、マクロブロックおよび他のコード化ユニット、例えば、ＧＯＰの特性および／または処理を記述するシンタックス要素を含むシンタックス情報を含み得る。ディスプレイデバイス３２は、復号されたビデオデータをユーザに対して表示し、陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
【００３１】
図１の例で、通信チャネル１６は、無線周波数（ＲＦ）スペクトルあるいは１つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体、あるいはワイヤレスおよびワイヤード媒体の任意の組合せを備え得る。通信チャネル１６は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースのネットワークの一部を形成し得る。通信チャネル１６は、一般に、ワイヤードまたはワイヤレス媒体の任意の好適な組合せを含む、ビデオデータをソースデバイス１２から宛先デバイス１４に送信するのに好適な任意の通信媒体、または様々な通信媒体の集合体を表す。通信チャネル１６は、ソースデバイス１２から宛先デバイス１４への通信を可能にするのに有用なルータ、スイッチ、基地局、または任意の他の機器を含むことができる。
【００３２】
ビデオエンコーダ２０およびビデオデコーダ３０は、代替的にＭＰＥＧ−４、Ｐａｒｔ１０、Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＡＶＣ）とも呼ばれるＩＴＵ−Ｔ  Ｈ．２６４規格など、ビデオ圧縮規格に従って動作し得る。但し、本開示の技法は、いかなる特定のコーディング規格にも限定されない。他の例には、ＭＰＥＧ−２およびＩＴＵ−Ｔ  Ｈ．２６３がある。図１には示されていないが、いくつかの態様で、ビデオエンコーダ２０およびビデオデコーダ３０は、それぞれオーディオエンコーダおよびデコーダと統合され得、適切なＭＵＸ−ＤＥＭＵＸユニット、または他のハードウェアおよびソフトウェアを含んで、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理し得る。適用可能な場合、ＭＵＸ−ＤＥＭＵＸユニットはＩＴＵ  Ｈ．２２３マルチプレクサプロトコル、またはユーザデータグラムプロトコル（ＵＤＰ）などの他のプロトコルに準拠し得る。
【００３３】
ＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４（ＡＶＣ）規格は、Ｊｏｉｎｔ  Ｖｉｄｅｏ  Ｔｅａｍ（ＪＶＴ）として知られる共同パートナーシップの成果として、ＩＳＯ／ＩＥＣ  Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＭＰＥＧ）とともにＩＴＵ−Ｔ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＶＣＥＧ）によって策定された。いくつかの態様で、本開示で説明する技法は、Ｈ．２６４規格に概して準拠するデバイスに適用され得る。Ｈ．２６４規格は、ＩＴＵ−Ｔ研究グループによる２００５年３月付けのＩＴＵ−Ｔ勧告Ｈ．２６４「Advanced Video Coding for generic audiovisual services」に記載されており、本明細書ではＨ．２６４規格またはＨ．２６４仕様、あるいはＨ．２６４／ＡＶＣ規格または仕様と呼ぶことがある。Ｊｏｉｎｔ  Ｖｉｄｅｏ  Ｔｅａｍ（ＪＶＴ）はＨ．２６４／ＭＰＥＧ−４  ＡＶＣへの拡張に取り組み続けている。
【００３４】
ビデオエンコーダ２０およびビデオデコーダ３０はそれぞれ、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなどの様々な好適なエンコーダ回路のいずれか、またはそれらの任意の組合せとして実装され得る。ビデオエンコーダ２０およびビデオデコーダ３０の各々は１つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれかは複合エンコーダ／デコーダ（コーデック）の一部としてそれぞれのカメラ、コンピュータ、モバイルデバイス、加入者デバイス、ブロードキャストデバイス、セットトップボックス、サーバなどに統合され得る。
【００３５】
ビデオシーケンスは、一般に一連のビデオフレームを含む。ピクチャグループ（ＧＯＰ）は、概して一連の１つまたは複数のビデオフレームを備える。ＧＯＰは、ＧＯＰ中に含まれるいくつかのフレームを記述するシンタックスデータを、ＧＯＰのヘッダ中、ＧＯＰの１つまたは複数のフレームのヘッダ中、または他の場所に含み得る。各フレームは、それぞれのフレームの符号化モードについて説明するフレームシンタックスデータを含み得る。ビデオエンコーダ２０は、一般にビデオデータを符号化するために、個々のビデオフレーム内のビデオブロックに対して動作する。ビデオブロックは、マクロブロック、マクロブロックのパーティション、あるいはブロックまたはマクロブロックの集合に対応することがある。ビデオブロックは、固定サイズまたは変動サイズを有し得、指定のコーディング規格に応じてサイズが異なり得る。各ビデオフレームは複数のスライスを含み得る。各スライスは複数のマクロブロックを含み得、それらはサブブロックとも呼ばれるパーティションに配置され得る。
【００３６】
Ｈ．２６３、Ｈ．２６４、Ｈ．２６５、ＭＰＥＧ−２、およびＭＰＥＧ−４、Ｈ．２６４／ＡＶＣ（高度ビデオコーディング）など、多くの普及しているビデオコーディング規格は、動き補償予測技法を利用する。イメージまたはビデオのフレームは複数のマクロブロックに区分され得、各マクロブロックはさらに区分され得る。Ｉフレーム中のマクロブロックは、空間ネイバー（すなわち、Ｉフレームの他のブロック）からの予測を使用することによって符号化され得る。ＰフレームまたはＢフレーム中のマクロブロックは、それらの空間ネイバーからの予測（空間的予測またはイントラモード符号化）または他のフレーム中のエリアからの予測（時間的予測またはインターモード符号化）のいずれかを使用することによって符号化され得る。ビデオコーディング規格は、コーディング情報を表すためのシンタックス要素を定義する。例えば、マクロブロックごとに、Ｈ．２６４は、マクロブロックが区分される方法と予測の方法（空間または時間）とを表すｍｂ＿ｔｙｐｅ値を定義する。
【００３７】
ビデオエンコーダ２０は、マクロブロックのパーティションごとに個別の動きベクトルを与え得る。例えば、ビデオエンコーダ２０がフルマクロブロックを単一のパーティションとして使用することを選択した場合、ビデオエンコーダ２０はマクロブロックに対して１つの動きベクトルを与え得る。別の例として、ビデオエンコーダ２０が１６×１６ピクセルマクロブロックを４つの８×８パーティションに区分することを選択した場合、ビデオエンコーダ２０は、４つの動きベクトル、すなわちパーティションごとに１つの動きベクトルを与え得る。パーティション（またはサブマクロブロックユニット）ごとに、ビデオエンコーダ２０は、動きベクトル情報を表すｍｖｄ値とｒｅｆ＿ｉｄｘ値とを与え得る。ｍｖｄ（動きベクトル差分）値は、パーティションの符号化された動きベクトルを動き予測子に関連して表し得る。ｒｅｆ＿ｉｄｘ（参照インデックス）値は、潜在的な参照ピクチャ（すなわち、参照フレーム）のリストへのインデックスを表し得る。一例として、Ｈ．２６４は、参照ピクチャの２つのリスト、すなわちリスト０とリスト１とを与える。ｒｅｆ＿ｉｄｘ値は、２つのリストのうちの１つの中のピクチャを識別し得る。ビデオエンコーダ２０は、ｒｅｆ＿ｉｄｘ値が関係するリストを示す情報も与え得る。
【００３８】
一例として、ＩＴＵ−Ｔ  Ｈ．２６４規格は、ルーマ(ruma)成分については１６×１６、８×８、または４×４、およびクロマ成分については８×８など、様々なブロックパーティションサイズのイントラ予測をサポートし、ならびにルーマ成分については１６×１６、１６×８、８×１６、８×８、８×４、４×８および４×４、およびクロマ(chroma)成分については対応するスケーリングされたサイズなど、様々なブロックサイズのインター予測をサポートする。本開示で、「Ｎ×Ｎ」と「Ｎ×(by)Ｎ」は、垂直寸法(vertical dimension)および水平寸法(horizontal dimension)に関するブロックのピクセル寸法、例えば、１６×１６ピクセルまたは１６×(by)１６ピクセルを指すために互換的に使用され得る。一般に、１６×１６ブロックは、垂直方向に１６ピクセルを有し（ｙ＝１６）、水平方向に１６ピクセルを有する（ｘ＝１６）。同様に、Ｎ×Ｎブロックは、一般に、垂直方向にＮピクセルを有し、水平方向にＮピクセルを有し、Ｎは、非負整数値を表す。ブロック中のピクセルは行と列に配置され得る。さらに、ブロックは、必ずしも水平方向と垂直方向とに同数のピクセルを有する必要はない。例えば、ブロックはＮ×Ｍピクセルを備え得、Ｍは、必ずしもＮに等しいとは限らない。
【００３９】
１６×１６よりも小さいブロックサイズは１６×１６マクロブロックのパーティションと呼ばれることがある。ビデオブロックは、ピクセル領域中のピクセルデータのブロックを備え得、あるいは、例えば、コード化ビデオブロックと予測ビデオブロックとのピクセル差分を表す残差ビデオブロックデータへの離散コサイン変換（ＤＣＴ）、整数変換、ウェーブレット(wavelet)変換、または概念的に同様の変換などの変換の適用後の、変換領域中の変換係数のブロックを備え得る。場合によっては、ビデオブロックは、変換領域中の量子化変換係数のブロックを備え得る。
【００４０】
より小さいビデオブロックは、より良好な解像度を与えることができ、高い詳細レベルを含むビデオフレームのロケーションのために使用され得る。一般に、マクロブロック(macroblocks)および様々なパーティション(various partitions)はサブブロック(sub-blocks)と呼ばれることがあり、ビデオブロックと見なされ得る。さらに、スライスは、マクロブロックおよび／またはサブブロックなどの複数のビデオブロックであると見なされ得る。各スライスはビデオフレームの単独で復号可能なユニットであり得る。代替的に、フレーム自体が復号可能なユニットであり得るか、またはフレームの他の部分が復号可能なユニットとして定義され得る。「コード化ユニット」または「コーディングユニット」という用語は、フレーム全体、フレームのスライス、シーケンスとも呼ばれるピクチャグループ（ＧＯＰ）など、ビデオフレームの単独で復号可能な任意のユニット、または適用可能なコーディング技法に従って定義される別の単独で復号可能なユニットを指すことがある。
【００４１】
Ｈ．２６４規格は、１／４ピクセル精度を有する動きベクトルをサポートする。すなわち、Ｈ．２６４をサポートするエンコーダ、デコーダ、およびエンコーダ／デコーダ（コーデック）は、フルピクセル位置(full pixel position)または１５個のフラクショナルピクセル位置(fractional pixel positions)のうちの１つのいずれかを指す動きベクトルを使用し得る。フラクショナルピクセル位置の値は、適応補間フィルタまたは固定補間フィルタを使用して判断され得る。いくつかの例で、Ｈ．２６４準拠デバイスは、１／２ピクセル位置の値を計算するために、係数［１，−５，２０，２０，−５，１］を有する６タップウィーナーフィルタ（Wiener filters）を使用し、次いで、残りの１／４ピクセル位置の値を判断するために双一次フィルタ(bilinear filters)を使用し得る。適応補間フィルタは、補間フィルタ係数を適応的に定義するために符号化プロセス中に使用され得、従って、フィルタ係数は、適応補間フィルタを実行するときに経時的に変化し得る。
【００４２】
本開示の技法によれば、ビデオエンコーダ２０は、ビデオデータのブロックの動きベクトルを計算するときに、１／８ピクセル精度および１／４ピクセル精度の間で選択するように構成され得る。ビデオエンコーダ２０は、動き推定プロセス中にこの選択を実行し得る。ビデオエンコーダ２０は、動きベクトルに対して１／８ピクセル精度を選択するのか１／４ピクセル精度を選択するのかを判断するときに、様々な基準を評価し得る。例えば、ビデオエンコーダ２０は、２つの符号化パス、すなわち１／４ピクセル精度を使用する第１のパスと１／８ピクセル精度を使用する第２のパスとを実行するように構成され得る。ビデオエンコーダ２０は、１／４ピクセル精度および１／８ピクセル精度の間で選択するためにレート歪最適化プロセスを利用し得る。すなわち、ビデオエンコーダ２０は、次いで、第１の符号化パスがより良好なレート歪値を与えるのか、または第２の符号化パスがより良好なレート歪値を与えるのかを判断し得る。ビデオエンコーダ２０は、誤差とビットレートとの重み付けされた組合せとして１／８ピクセル精度または１／４ピクセル精度を使用するコストを計算し、より低いコストを与える精度を選択し得る。いくつかの例で、ビデオエンコーダ２０は、２つのフル符号化パスを実行するのではなく、動きベクトル探索中にレート歪最適化を実行し得る。
【００４３】
ビデオエンコーダ２０がビデオデータの特定のブロックに対して１／８ピクセル精度を選択すると、ビデオエンコーダ２０は、１／８ピクセル位置の値を補間するように構成され得る。いくつかの例で、ビデオエンコーダ２０は、最初に、１／２ピクセル位置の値を補間し、次いで、１／４ピクセル位置の値を補間し、次いで、１／８ピクセル位置の値を補間し得る。ビデオエンコーダ２０は、１／２ピクセル位置と、１／４ピクセル位置と、１／８ピクセル位置とに対して異なるタイプの補間フィルタを使用し得る。例えば、ビデオエンコーダ２０は、様々なフラクショナルピクセル位置に対して、ウィーナーフィルタまたは双一次フィルタなど、適応補間フィルタおよび／または固定補間フィルタを使用し得る。
【００４４】
ビデオエンコーダ２０がビデオデータの特定のブロックに対して１／８ピクセル精度を選択すると、ビデオエンコーダ２０は、そのブロックに対する１／８ピクセル精度の使用をシグナリングするように構成され得る。１／８ピクセル精度の使用または１／４ピクセル精度の使用をシグナリングすることによって、ビデオデコーダ３０などのデコーダは、動きベクトルを適切に利用するために、動きベクトルが１／８ピクセル精度を使用するのか１／４ピクセル精度を使用するのかを判断することが可能であり得る。いくつかの例で、ビデオエンコーダ２０は、対応する動きベクトルが１／８ピクセル精度を使用するのか１／４ピクセル精度を使用するのかを示す１ビットフラグを全ての動きベクトルに追加するように構成され得る。例えば、ビデオエンコーダ２０は、動きベクトルに対して１／８ピクセル精度が使用されるときにフラグを設定し（例えば、フラグの値を「１」に設定し）、動きベクトルに対して１／８ピクセル精度が使用されないときにフラグをクリアし得る（例えば、フラグの値を「０」に設定する）。
【００４５】
別の例で、ビデオエンコーダ２０は、マクロブロックの全ての動きベクトルが１／８ピクセル精度を使用するのか１／４ピクセル精度を使用するのかを示す１ビットフラグをマクロブロックに追加するように構成され得る。マクロブロックは、１つまたは複数の動きベクトルに関連し得る。例えば、マクロブロックの各パーティションは、それ自体のそれぞれの動きベクトルを有し得る。従って、ビデオエンコーダ２０は、マクロブロックレイヤにおいて、例えばマクロブロックヘッダ中で、１／８ピクセル精度の使用または１／４ピクセル精度の使用をシグナリングし得る。すなわち、マクロブロックの動きベクトルの各々が同じ精度を使用するように、マクロブロックの１ビットフラグは、そのマクロブロックの動きベクトルの各々が１／８ピクセル精度を使用するのか１／４ピクセル精度を使用するのかを示し得る。いくつかの例で、ビデオエンコーダ２０は、同じ精度を有する動きベクトルを使用してフルフレームを符号化し得、例えば、１／４ピクセル精度を有する動きベクトルを使用して１つのフレームを符号化し、１／８ピクセル精度を有する動きベクトルを使用して別のフレームを符号化する。従って、ビデオエンコーダ２０は、フレームの動きベクトルが１／４ピクセル精度を有するのか１／８ピクセル精度を有するのかをシグナリングするために、フレームレベルシグナリングを利用し得る。
【００４６】
別の例として、ビデオエンコーダ２０は、動きベクトルが１／４ピクセル精度を使用するのか１／８ピクセル精度を使用するのかについてのシグナリングを、動きベクトルの参照フレームインデックス（ｒｅｆ＿ｉｄｘ）値と組み合わせ得る。潜在的な参照フレームインデックス値は、この追加の情報に適応するために、例えば、コンテキスト適応型可変長コーディング（ＣＡＶＬＣ：context-adaptive variable length coding）アルゴリズムを実行することによって再設計され得る。ビデオエンコーダ２０は、参照フレームインデックス値を設計するために、特定の参照フレームを指す動きベクトルが１／４ピクセル精度よりも１／８ピクセル精度から恩恵を受ける可能性を示す統計をもつＣＡＶＬＣアルゴリズムを実装するユニットまたはモジュールを提供し得る。このようにして、特定の参照フレームについて最も可能性が高い精度を示す参照フレームインデックス値は、その参照フレームについて可能性がより低い精度を示す参照フレームインデックス値よりも相対的に短い長さを有し得る。
【００４７】
いくつかの例で、ビデオエンコーダ２０はさらに、潜在的なコードワードのセットを生成し得、コードワードのセットの各々はブロックの様々なコンテキストに関係する。コンテキストは、隣接ブロックが１／８ピクセル精度を使用するのか１／４ピクセル精度を使用するのかに関係し得る。一例で、関係する隣接ブロックは、現在のブロックの上のブロックと現在のブロックの左のブロックとに対応し得る。従って、いくつかの例で、ビデオエンコーダ２０は、動きベクトルの参照フレームインデックスのコードワードを選択し、４つの符号化コンテキストのうちの１つに対応する、コードワードの４つのセットのうちの１つから、動きベクトルが１／８ピクセル精度であるのか１／４ピクセル精度であるのかを示し得る。
【００４８】
第１のコンテキストは、上のブロックと左のブロックの両方の動きベクトルが１／４ピクセル精度を使用する場合であり得る。第２のコンテキストは、上のブロックと左のブロックの両方の動きベクトルが１／８ピクセル精度を使用する場合であり得る。第３のコンテキストは、上のブロックの動きベクトルが１／８ピクセル精度を使用し、左のブロックの動きベクトルが１／４ピクセル精度を使用する場合であり得る。第４のコンテキストは、上のブロックの動きベクトルが１／４ピクセル精度を使用し、左のブロックの動きベクトルが１／８ピクセル精度を使用する場合であり得る。参照フレームインデックスのコードワードの４つのセットがあり得、各々が４つのコンテキストのうちの１つに対応する。従って、ビデオエンコーダ２０は、動きベクトルのブロックが生じるコンテキストに対応するセットから、動きベクトルの参照フレームインデックスのコードワードを選定し得る。
【００４９】
ビデオエンコーダ２０は、１／８ピクセル精度動きベクトルを使用すべきかどうかの選択を、最新の参照フレームの分析に限定し得る。すなわち、ビデオエンコーダ２０は、リスト０およびリスト１中の、参照フレームインデックス値０を有する参照フレームを分析するときのみ、１／８ピクセル精度を使用すべきかまたは１／４ピクセル精度を使用すべきかを判断し得る。ビデオエンコーダ２０は、リスト０およびリスト１中の、非ゼロ参照フレームインデックス値を有する参照フレームに対して、常に１／４ピクセル精度を使用するように構成され得る。リスト０またはリスト１のいずれかの中の、参照フレームインデックス値０を有する参照フレームを分析するときに、ビデオエンコーダ２０は、１／８ピクセル精度動きベクトルを使用すべきかまたは１／４ピクセル精度動きベクトルを使用すべきかを判断するために、上記で説明した基準または他の基準を分析するように構成され得る。
【００５０】
さらに、ビデオエンコーダ２０は、リスト０またはリスト１中の、０に等しい参照フレームインデックス値を有する参照フレームの一部分を指す動きベクトルに対する選択をシグナリングするように構成され得る。同様に、ビデオデコーダ３０は、０以外の参照フレームインデックスを有する動きベクトルが１／４ピクセル精度であると仮定し、０に等しい参照フレームインデックス値を有する動きベクトルについて１／８ピクセル精度の使用かまたは１／４ピクセル精度の使用かを示すフラグを分析するように構成され得る。いくつかの例で、ビデオエンコーダ２０は、参照フレームインデックス値０を有するフレームに加えて、またはその代替として、他の特定のフレームが１／８ピクセル精度を使用して符号化され得るように構成され得る。
【００５１】
ビデオエンコーダ２０は、動き予測子に関連してブロックの動きベクトルを符号化するようにさらに構成され得る。動き予測子は、既に符号化された隣接ブロックの動きベクトルの平均として選択され得る。現在のブロックの動きベクトルを符号化するために、ビデオエンコーダ２０は動きベクトルと動き予測子との間の差分を計算し得る。いくつかの例で、ビデオエンコーダ２０は、常に所定の動き解像度で動きベクトルを符号化し得る。すなわち、ビデオエンコーダ２０は、常に１／８ピクセル精度または１／４ピクセル精度で動きベクトルを符号化し得る。いくつかの例で、ビデオエンコーダ２０は、現在の動きベクトルと同じ動き解像度に動き予測子を量子化し得る。
【００５２】
ビデオエンコーダ２０は、これらの方法または別の方法のうちの所定の１つを使用するように構成され得、ビデオデコーダ３０は、同様に、符号化された動きベクトルを復号するために同じ方法を使用するように構成され得る。代替的に、ビデオエンコーダ２０は、単一のビットストリーム中の異なる動きベクトル符号化方法を利用するために、シーケンスパラメータセット、スライスパラメータセット、またはピクチャパラメータセット中の動きベクトルを符号化するために使用された予測方法をシグナリングし得る。
【００５３】
予測データと残差データとを生成するためのイントラ予測コーディングまたはインター予測コーディングの後、および変換係数を生成するための（Ｈ．２６４／ＡＶＣで使用される４×４または８×８整数変換、あるいは離散コサイン変換ＤＣＴなどの）任意の変換の後、変換係数の量子化が実行され得る。量子化は、一般に、係数を表すために使用されるデータ量をできるだけ低減するために変換係数を量子化するプロセスを指す。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。例えば、量子化中にｎビット値がｍビット値に切り捨てられ得、但し、ｎはｍよりも大きい。
【００５４】
量子化の後、コンテンツ適応型可変長コーディング（ＣＡＶＬＣ）、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）、または別のエントロピーコーディング方法に従って、量子化されたデータのエントロピーコーディングが実行され得る。エントロピーコーディング用に構成された処理ユニットまたは別の処理ユニットは、量子化係数のゼロランレングスコーディング、および／またはコード化ブロックパターン（ＣＢＰ）値、マクロブロックタイプ、コーディングモード、（フレーム、スライス、マクロブロック、またはシーケンスなどの）コード化ユニットの最大マクロブロックサイズなどのシンタックス情報の生成など、他の処理機能を実行し得る。
【００５５】
ビデオエンコーダ２０は、ブロックベースのシンタックスデータ、フレームベースのシンタックスデータ、スライスベースのシンタックスデータ、および／またはＧＯＰベースのシンタックスデータなどのシンタックスデータを、例えば、フレームヘッダ、ブロックヘッダ、スライスヘッダ、またはＧＯＰヘッダ中でビデオデコーダ３０にさらに送り得る。ＧＯＰシンタックスデータは、それぞれのＧＯＰ中のいくつかのフレームを記述し得、フレームシンタックスデータは、対応するフレームを符号化するために使用される符号化／予測モードを示し得る。
【００５６】
ビデオデコーダ３０は、本開示の技法のいずれかに従って符号化される動きベクトルを含むビットストリームを受信し得る。従って、ビデオデコーダ３０は、符号化された動きベクトルを解釈するように構成され得る。例えば、ビデオデコーダ３０は、最初に、符号化された動きベクトルが、全ての動きベクトルを１つの動き解像度に保つ方法を使用して符号化されたのか、または動き予測子が動きベクトルの解像度に量子化される方法を使用して符号化されたのかを判断するために、シーケンスパラメータセットまたはスライスパラメータセットを分析し得る。次いで、ビデオデコーダ３０は、動き予測子を判断し、符号化された動きベクトルの値を動き予測子に加算することによって、動き予測子に関連して動きベクトルを復号し得る。
【００５７】
ビデオデコーダ３０はまた、動きベクトル自体とともに含まれ得るか、または動きベクトルが対応する、マクロブロックなどのブロック中に含まれ得る、動きベクトルのフラグを分析することによって、動きベクトルが１／８ピクセル精度を使用するのか１／４ピクセル精度を使用するのかを判断し得る。いくつかの例で、ビデオデコーダ３０は、例えば、動きベクトルが、リスト０またはリスト１中の、０以外の参照フレームインデックス値を有する参照ピクチャを指すときに、動きベクトルは１／４ピクセル精度を有すると推定し得る。いくつかの例で、ビデオデコーダ３０は、参照フレームインデックス値のＣＡＶＬＣコードワードに従って潜在的な参照フレームインデックス値のリスト中で識別され得る参照フレームインデックス値に基づいて、動きベクトルの精度を判断し得る。さらに、ビデオデコーダ３０は、動きベクトルのブロックが生じるコンテキストを判断し得、コンテキストは、隣接ブロック（例えば、現在のブロックの上および左）の動きベクトルが１／８ピクセル精度を使用するのか１／４ピクセル精度を使用するのかに関係する。次いで、ビデオデコーダ３０は、復号された動きベクトルを使用して、現在のブロックの残差値だけオフセットされた、現在のブロックの予測値を判断し得る。
【００５８】
ビデオエンコーダ２０およびビデオデコーダ３０はそれぞれ、適用可能な場合、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理回路、ソフトウェア、ハードウェア、ファームウェアなどの様々な好適なエンコーダまたはデコーダ回路のいずれか、またはそれらの任意の組合せとして実装され得る。ビデオエンコーダ２０およびビデオデコーダ３０の各々は１つまたは複数のエンコーダまたはデコーダ中に含められ得、そのいずれかは複合ビデオエンコーダ／デコーダ（ＣＯＤＥＣ）の一部として統合され得る。ビデオエンコーダ２０および／またはビデオデコーダ３０を含む装置は、集積回路、マイクロプロセッサ、および／またはセルラー電話などのワイヤレス通信デバイスを備え得る。
【００５９】
図２は、１／８ピクセル精度または１／４ピクセル精度のいずれかを使用してブロックを選択的に符号化するための技法を実装し得るビデオエンコーダ２０の一例を示すブロック図である。ビデオエンコーダ２０は、マクロブロックあるいはマクロブロックのパーティションまたはサブパーティションを含むビデオフレーム内のブロックのイントラコーディングおよびインターコーディングを実行し得る。イントラ符号化は、空間的予測に依拠して、所与のビデオフレーム内のビデオの空間的冗長性を低減または除去する。インターコーディングは時間的予測を利用して、ビデオシーケンスの隣接フレーム内のビデオの時間的冗長性を低減または除去する。イントラモード（Ｉモード（登録商標））は、いくつかの空間ベースの圧縮モードのいずれかを指し、単方向予測（Ｐモード）または双方向予測（Ｂモード）などのインターモードは、いくつかの時間ベースの圧縮モードのいずれかを指すことがある。インターモード符号化のための構成要素が図２に示されているが、ビデオエンコーダ２０はイントラモード符号化のための構成要素をさらに含み得ることを理解されたい。但し、簡潔および明快のために、そのような構成要素は図示していない。
【００６０】
図２に示すように、ビデオエンコーダ２０は、符号化すべきビデオフレーム内の現在ビデオブロックを受信する。図２の例で、ビデオエンコーダ２０は、動き補償ユニット４４と、動き推定ユニット４２と、参照フレームストア６４と、加算器５０と、変換ユニット５２と、量子化ユニット５４と、エントロピーコーディングユニット５６とを含む。ビデオブロック再構成のために、ビデオエンコーダ２０はまた、逆量子化ユニット５８と、逆変換ユニット６０と、加算器６２とを含む。再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタ処理するデブロッキングフィルタ（図２に図示せず）をも含め得る。所望される場合、デブロッキングフィルタは、一般に、加算器６２の出力をフィルタ処理するであろう。
【００６１】
符号化プロセス中に、ビデオエンコーダ２０はコーディングすべきビデオフレームまたはスライスを受信する。フレームまたはスライスは、複数のビデオブロックに分割され得る。動き推定ユニット４２および動き補償ユニット４４は、時間圧縮を行うために、１つまたは複数の参照フレーム中の１つまたは複数のブロックに対する受信したビデオブロックのインター予測コーディングを実行する。イントラ予測ユニット４６は、空間圧縮を行うために、コーディングすべきブロックと同じフレームまたはスライス中の１つまたは複数の近傍ブロックに対する受信したビデオブロックのイントラ予測コーディングを実行し得る。
【００６２】
モード選択ユニット４０は、例えば、各モードにおいて生じる誤差結果に基づいて、コーディングモードのうちの１つ、すなわちイントラモードまたはインターモードを選択し得る。モード選択ユニット４０がブロックに対してインターモード符号化を選択すると、解像度選択ユニット４８はそのブロックの動きベクトルの解像度を選択し得る。例えば、解像度選択ユニット４８は、そのブロックの動きベクトルに対して１／８ピクセル精度または１／４ピクセル精度を選択し得る。解像度選択ユニット４８は、ブロックの動きベクトルに対して解像度を選択するための様々な基準を分析し得る。
【００６３】
いくつかの例で、解像度選択ユニット４８は、潜在的な参照フレームのリスト中の時間的に直近の参照フレームを指す動きベクトルのみに対して解像度選択を実行し得る。参照フレームがリスト中の直近のフレームでないときに、解像度選択ユニット４８は、動きベクトルに対して１／４ピクセル精度を選択するように構成され得る。
【００６４】
一例として、解像度選択ユニット４８は、ブロックを符号化するために１／４ピクセル精度動きベクトルを使用することと、ブロックを符号化するために１／８ピクセル精度動きベクトルを使用することとの間の誤差差分を比較するように構成され得る。差分がしきい値を超えると、解像度選択ユニット４８は、ブロックを符号化するために１／８ピクセル精度動きベクトルを選択し得る。解像度選択ユニット４８はまた、インターモード予測プロセス中にブロックを符号化するときに、動きベクトルに対して１／８ピクセル精度を使用すべきかまたは１／４ピクセル精度を使用すべきかを判断するために、レート歪情報を評価するか、ビットバジェット（bit budget）を分析するか、または他のファクタを分析し得る。インターモード符号化されるべきブロックに対して１／８ピクセル精度または１／４ピクセル精度を選択した後、モード選択ユニットは、選択された精度を示すメッセージ（例えば、信号）を動き推定ユニット４２に送り得る。
【００６５】
動き推定ユニット４２と動き補償ユニット４４とは、高度に統合され得るが、概念的な目的のために別々に示してある。動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、例えば、現在のフレーム（または、他のコード化ユニット）内のコーディングされている現在のブロックに対する予測参照フレーム（または、他のコード化ユニット）内の予測ブロックの変位を示し得る。予測ブロックは、絶対値差分和（ＳＡＤ）、差分２乗和（ＳＳＤ）、または他の差分メトリックによって判断され得るピクセル差分に関して、コーディングすべきブロックにぴったり一致することがわかるブロックである。動きベクトルはまた、マクロブロックのパーティションの変位を示し得る。動き補償は、動き推定によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することに関与し得る。この場合も、いくつかの例で、動き推定ユニット４２と動き補償ユニット４４とは機能的に統合され得る。
【００６６】
動き推定ユニット４２は、ビデオブロックを参照フレームストア６４中の参照フレームのビデオブロックと比較することによってインターコード化フレームのビデオブロックの動きベクトルを選択された精度で計算する。動き推定ユニット４２または動き補償ユニット４４は、参照フレームストア６４中に含まれる参照フレームのフラクショナルピクセル位置の値を計算し得る。いくつかの例で、ビデオエンコーダ２０の加算器６２または別のユニットは、再構成されたブロックのフラクショナルピクセル位置の値を計算し、次いで、再構成されたブロックをフラクショナルピクセル位置の計算値とともに参照フレームストア６４中に記憶し得る。動き補償ユニット４４はまた、参照フレーム、例えば、ＩフレームまたはＰフレームのサブ整数ピクセルを補間し得る。
【００６７】
ビデオエンコーダ２０の動き推定ユニット４２、動き補償ユニット４４、モード選択ユニット４０、または別のユニットはまた、ブロックを符号化するために使用される動きベクトルについての１／４ピクセル精度の使用かまたは１／８ピクセル精度の使用かをシグナリングし得る。いくつかの例で、動き推定ユニット４２は、対応する動きベクトルが１／８ピクセル精度を使用するのか１／４ピクセル精度を使用するのかを示す１ビットフラグを全ての動きベクトルに追加するように構成され得る。別の例で、動き推定ユニット４２は、マクロブロックの全ての動きベクトルが１／８ピクセル精度を使用するのか１／４ピクセル精度を使用するのかを示す１ビットフラグをマクロブロックに追加するように構成され得る。
【００６８】
別の例として、動き推定ユニット４２は、動きベクトルが、１／４ピクセル精度を使用するのか１／８ピクセル精度を使用するのかについてのシグナリングを、動きベクトルの参照フレームインデックス（ｒｅｆ＿ｉｄｘ）値と組み合わせ得る。参照フレームインデックス値は、参照フレームストア６４に記憶された参照フレームを識別し、動きベクトルが１／８ピクセルであるのか１／４ピクセル精度であるのかを示し得る。動き推定ユニット４２は、参照フレームと精度の指示とをエントロピーコーディングユニット５６に送り得、エントロピーコーディングユニット５６は、符号化されるブロックの符号化コンテキストに対応する潜在的なコードワードのセットから参照フレームインデックス値を選択し得る。動き推定ユニット４２は、さらに、ブロックの符号化コンテキストの指示をエントロピーコーディングユニット５６に送り得る。
【００６９】
動き推定ユニット４２は、動き予測子に関連して動きベクトルを符号化するように構成され得る。動き推定ユニット４２は、既に符号化された隣接ブロックの動きベクトルの平均として動き予測子を選択し得る。現在のブロックの動きベクトルを符号化するために、動き推定ユニット４２は、動きベクトル差分値を形成するために、動きベクトルと動き予測子との間の差分を計算し得る。いくつかの例で、動き推定ユニット４２は、常に所定の動き解像度で動きベクトルを符号化し得る。すなわち、動き推定ユニット４２は、常に１／８ピクセル精度または１／４ピクセル精度で動きベクトルを符号化し得る。いくつかの例で、動き推定ユニット４２は、符号化されるべき動きベクトルと同じ動き解像度に動き予測子を量子化し得る。
【００７０】
ＩＴＵ  Ｈ．２６４規格では、潜在的な参照フレームのセットを「リスト」と呼ぶ。従って、参照フレームストア６４に記憶された参照フレームのセットは、参照フレームのリストに対応し得る。動き推定ユニット４２は、参照フレームストア６４からの１つまたは複数の参照フレームのブロックを現在のフレーム、例えば、ＰフレームまたはＢフレームの符号化すべきブロックと比較する。参照フレームストア６４中の参照フレームがサブ整数ピクセルの値を含むときに、動き推定ユニット４２によって計算される動きベクトルは参照フレームのサブ整数ピクセルロケーションを参照し得る。動き推定ユニット４２は、計算された動きベクトルをエントロピーコーディングユニット５６と動き補償ユニット４４とに送る。動きベクトルによって識別される参照フレームブロックは予測ブロックと呼ばれることがある。動き補償ユニット４４は、符号化されるブロックに関連して参照フレームの予測ブロックの誤差値を計算する。
【００７１】
動き補償ユニット４４は、予測ブロックに基づいて予測データを計算し得る。ビデオエンコーダ２０は、コーディングされている元のビデオブロックから、動き補償ユニット４４からの予測データを減算することによって残差ビデオブロックを形成する。加算器５０は、この減算演算を実行する１つまたは複数の構成要素を表す。変換ユニット５２は、離散コサイン変換（ＤＣＴ）または概念的に同様の変換などの変換を残差ブロックに適用し、残差変換係数値を備えるビデオブロックを生成する。
【００７２】
変換ユニット５２は、概念的にＤＣＴと同様である、Ｈ．２６４規格によって定義される変換などの他の変換を実行し得る。ウェーブレット変換、整数変換、サブバンド変換または他のタイプの変換も使用され得る。いずれの場合も、変換ユニット５２は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。変換は、残差情報をピクセル値領域から周波数領域などの変換領域に変換し得る。量子化ユニット５４は、ビットレートをさらに低減するために残差変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。
【００７３】
量子化の後、エントロピーコーディングユニット５６が量子化変換係数をエントロピーコーディングする。例えば、エントロピーコーディングユニット５６は、コンテンツ適応型可変長コーディング（ＣＡＶＬＣ）、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）、または別のエントロピーコーディング技法を実行し得る。エントロピーコーディングユニット５６によるエントロピーコーディングの後、符号化されたビデオは、別のデバイスに送信されるか、あるいは後で送信または検索するためにアーカイブされ得る。コンテキスト適応型バイナリ算術コーディングの場合、コンテキストは近傍マクロブロックに基づき得る。
【００７４】
場合によっては、エントロピーコーディングユニット５６またはビデオエンコーダ２０の別のユニットは、エントロピーコーディングに加えて他のコーディング機能を実行するように構成され得る。例えば、エントロピーコーディングユニット５６はマクロブロックおよびパーティションのＣＢＰ値を判断するように構成され得る。また、場合によっては、エントロピーコーディングユニット５６は、マクロブロックまたはそれのパーティション中の係数のランレングスコーディングを実行し得る。特に、エントロピーコーディングユニット５６は、マクロブロックまたはパーティション中の変換係数をスキャンするためにジグザグスキャンまたは他のスキャンパターンを適用し、さらなる圧縮のためにゼロのランを符号化し得る。エントロピーコーディングユニット５６はまた、符号化ビデオビットストリーム中での送信のために適切なシンタックス要素とともにヘッダ情報を構成し得る。
【００７５】
逆量子化ユニット５８および逆変換ユニット６０は、それぞれ逆量子化および逆変換を適用して、例えば、参照ピクチャリスト中の参照フレーム内の参照ブロックとして後で使用するために、ピクセル領域中で残差ブロックを再構成する。動き補償ユニット４４は、残差ブロックを参照フレームストア６４のフレームのうちの１つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット４４はまた、再構成された残差ブロックに１つまたは複数の補間フィルタを適用して、動き推定において使用するための（例えば、１／２ピクセル位置、１／４ピクセル位置、および／または１／８ピクセル位置の）サブ整数ピクセル値を計算し得る。加算器６２は、再構成された残差ブロックを、動き補償ユニット４４によって生成された動き補償された予測ブロックに加算して、参照フレームストア６４に記憶するための再構成されたビデオブロックを生成する。再構成されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするために動き推定ユニット４２および動き補償ユニット４４によって参照ブロックとして使用され得る。
【００７６】
図３は、符号化されたビデオシーケンスを復号するビデオデコーダ３０の一例を示すブロック図である。図３の例で、ビデオデコーダ３０は、エントロピー復号ユニット７０と、動き補償ユニット７２と、イントラ予測ユニット７４と、逆量子化ユニット７６と、逆変換ユニット７８と、参照フレームストア８２と、加算器８０とを含む。ビデオデコーダ３０は、いくつかの例で、ビデオエンコーダ２０（図２）に関して説明した符号化パスとは概して逆の復号パスを実行し得る。動き補償ユニット７２は、エントロピー復号ユニット７０から受信した動きベクトルに基づいて予測データを生成し得る。
【００７７】
動き補償ユニット７２は、ビットストリーム中で受信された動きベクトルを使用して、参照フレームストア８２中の参照フレーム中の予測ブロックを識別し得る。本開示の技法によれば、受信された動きベクトルは１／８ピクセル精度または１／４ピクセル精度を有し得る。動き補償ユニット７２は、特定の動きベクトルが１／８ピクセル精度を有するのか１／４ピクセル精度を有するのかを示す、符号化されたビットストリーム中に含まれる信号値を受信し、分析するように構成され得る。上記のように、信号値は、動きベクトルとともに含まれるフラグ、マクロブロックの全パーティションの動きベクトルの精度をシグナリングするマクロブロックレイヤフラグ、参照フレームインデックス値と、参照フレームインデックス値に対応する参照フレームの一部分を指す動きベクトルが１／８ピクセル精度を有するのか１／４ピクセル精度を有するのかとの両方を表す特別に設計された可変長コード、あるいは他のタイプのシグナリング値に対応し得る。
【００７８】
可変長コードがそれぞれの動きベクトルの精度をシグナリングする場合、特定の動きベクトルの可変長コードは、動きベクトルの符号化コンテキストに固有のコードのセット中に含まれ得る。動きベクトルを復号するために、動き補償ユニット７２は、符号化されたブロックの符号化コンテキストを判断するように構成され得る。符号化コンテキストは、隣接ブロックの動きベクトルが１／８ピクセル精度を有するのか１／４ピクセル精度を有するのかに対応し得る。
【００７９】
動きベクトルはまた、符号化された動きベクトルに対応するブロックの動き予測子に関連して符号化され得る。動き補償ユニット７２は、復号されるべきブロックに隣接するブロックの動きベクトルの中央値として動き予測子を判断し得る。動き予測子を判断した後、動き補償ユニット７２は、符号化されたビデオビットストリームから動きベクトル差分値を抽出し、動き予測子に動きベクトル差分値を加算することによって、符号化された動きベクトルを復号し得る。いくつかの例で、動き補償ユニット７２は、符号化された動きベクトルと同じ動き解像度に動き予測子を量子化し得る。いくつかの例で、動き補償ユニット７２は、全符号化された動き予測子に対して同じ精度を使用し得る。さらに他の例で、動き補償ユニット７２は、上記の方法のいずれかを使用し、シーケンスパラメータセット、スライスパラメータセット、またはピクチャパラメータセット中に含まれるデータを分析することによって、どの方法を使用すべきかを判断するように構成され得る。
【００８０】
動きベクトルを復号した後、動き補償ユニット７２は、参照フレームストア８２の参照フレームから、動きベクトルによって識別された予測ブロックを抽出し得る。動きベクトルが、１／２ピクセル位置、１／４ピクセル位置、または１／８ピクセル位置などのフラクショナルピクセル位置を指す場合、動き補償ユニット７２はフラクショナルピクセル位置の値を補間し得る。動き補償ユニット７２は、これらの値を補間するために、適応補間フィルタまたは固定補間フィルタを使用し得る。さらに、動き補償ユニット７２は、受信された符号化されたビデオビットストリームを介して、対応するエンコーダからどのフィルタを使用すべきかの指示と、場合によってはフィルタの係数とを受信し得る。
【００８１】
イントラ予測ユニット７４は、ビットストリーム中で受信されたイントラ予測モードを使用して、空間的に隣接するブロックから予測ブロックを形成し得る。逆量子化ユニット７６は、ビットストリーム中で供給され、エントロピー復号ユニット７０によって復号された量子化ブロック係数を逆量子化（inverse quantize）、すなわち、逆量子化（de-quantize）する。逆量子化プロセスは、例えば、Ｈ．２６４復号規格によって定義された従来のプロセスを含み得る。逆量子化プロセスはまた、量子化の程度を判断し、同様に、適用すべき逆量子化の程度を判断するための、各マクロブロックについてエンコーダ５０によって計算される量子化パラメータＱＰYの使用を含み得る。
【００８２】
逆変換ユニット５８は、逆変換、例えば逆ＤＣＴ、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用して、ピクセル領域において残差ブロックを生成する。動き補償ユニット７２は動き補償ブロックを生成し、場合によっては、補間フィルタに基づいて補間を実行する。サブピクセル精度をもつ動き推定に使用すべき補間フィルタの識別子をブロックのシンタックス要素中に含め得る。動き補償ユニット７２は、ビデオブロックの符号化中にビデオエンコーダ２０によって使用される補間フィルタを使用して、参照ブロックのサブ整数ピクセルの補間値を計算し得る。動き補償ユニット７２は、受信したシンタックス情報に従って、ビデオエンコーダ２０によって使用された補間フィルタを判断し、その補間フィルタを使用して予測ブロックを生成し得る。
【００８３】
動き補償ユニット７２は、シンタックス情報のいくつかを使用して、符号化ビデオシーケンスの（１つまたは複数の）フレームを符号化するために使用されるマクロブロックのサイズと、符号化ビデオシーケンスのフレームの各マクロブロックがどのように区分されるのかを記述するパーティション情報と、各パーティションがどのように符号化されるのかを示すモードと、各インター符号化マクロブロックまたはパーティションのための１つまたは複数の参照フレームと、符号化ビデオシーケンスを復号するための他の情報とを判断する。
【００８４】
加算器８０は、残差ブロックを、動き補償ユニット７２またはイントラ予測ユニットによって生成される対応する予測ブロックと合計して、復号されたブロックを形成する。必要に応じて、ブロッキネスアーティファクトを除去するために、デブロッキングフィルタを適用して、復号ブロックをフィルタ処理することもある。復号されたビデオブロックは、次いで、参照フレームストア８２に記憶され、参照フレームストア８２は、参照ブロックをその後の動き補償に供給し、また、ディスプレイデバイス（図１のディスプレイデバイス３２など）上での提示のために復号されたビデオを生成する。
【００８５】
図４は、フルピクセル位置についてのフラクショナルピクセル位置を示す概念図である。特に、図４は、フルピクセル（ペル）１００についてのフラクショナルピクセル位置を示している。フルピクセル１００は、１／２ピクセル位置１０２Ａ〜１０２Ｃ（１／２ペル１０２）と、１／４ピクセル位置１０４Ａ〜１０４Ｌ（１／４ペル１０４）と、１／８ピクセル位置１０６Ａ〜１０６ＡＶ（１／８ペル１０６）とに対応する。
【００８６】
図４は、ブロックの１／８ピクセル位置１０６がオプションで含まれ得ることを示すために、破線の輪郭を使用してこれらの位置を示している。すなわち、動きベクトルが１／８ピクセル精度を有する場合、動きベクトルは、フルピクセル位置１００、１／２ピクセル位置１０２、１／４ピクセル位置１０４、または１／８ピクセル位置１０６のいずれかをポイントし得る。但し、動きベクトルが１／４ピクセル精度を有する場合、動きベクトルは、フルピクセル位置１００、１／２ピクセル位置１０２、または１／４ピクセル位置１０４のいずれかをポイントし得る。
【００８７】
フルピクセル位置１００におけるピクセルの値は、対応する参照フレームに含まれ得る。すなわち、フルピクセル位置１００におけるピクセルの値は、概して、例えば、参照フレームが表示されたときに最終的にレンダリングされ表示される、参照フレーム中のピクセルの実効値に対応する。（フラクショナルピクセル位置と総称される）１／２ピクセル位置１０２、１／４ピクセル位置１０４、および１／８ピクセル位置１０６の値は、適応補間フィルタまたは固定補間フィルタ、例えば、様々なウィーナーフィルタ、双一次フィルタ、または他のフィルタなど、様々な数の「タップ」（係数）のフィルタを使用して補間され得る。概して、フラクショナルピクセル位置の値は、隣接するフルピクセル位置または前に判断されたフラクショナルピクセル位置の値に対応する１つまたは複数の隣接ピクセルから補間され得る。
【００８８】
図５は、現在のブロック１２０の符号化コンテキストを判断するために使用され得るブロックを示す概念図である。図５の例は、現在のブロック１２０を、２つの隣接ブロック、上ネイバーブロック(above-neighbor block)１２２および左ネイバーブロック(left-neighbor block)１２４とともに示している。現在のブロック１２０は、現在符号化または復号されており、コーディングユニット（例えば、ビデオエンコーダ２０またはビデオデコーダ３０）がその符号化コンテキストを判断しているブロックに対応し得る。
【００８９】
この例で、現在のブロック１２０の左上コーナーと、上ネイバーブロック１２２の左下コーナーと、左ネイバーブロック１２４の右上コーナーとは、各々接触している。多くのコーディングユニットは、フレームに対してビデオブロックを左から右および上から下に処理するように構成される。従って、現在のブロック１２０の符号化コンテキストは、上ネイバーブロック１２２および左ネイバーブロック１２４など、現在のブロック１２０の上および左のブロックに基づき得る。
【００９０】
現在のブロック１２０は、マクロブロックまたはマクロブロックのパーティションに対応することがある。上ネイバーブロック１２２および左ネイバーブロック１２４は、各々別個のマクロブロックに対応し得る。すなわち、現在のブロック１２０は第１のマクロブロックの一部分に対応し得、上ネイバーブロック１２２は第２の異なるマクロブロックの一部分に対応し得、左ネイバーブロック１２４は第３の異なるマクロブロックの一部分に対応し得る。いくつかの例で、現在のブロック１２０は、現在のマクロブロックのパーティションに対応し得、上ネイバーブロック１２２は、現在のマクロブロックの上のマクロブロックの４×４ピクセル左下部分に対応し得、左ネイバーブロック１２４は、現在のマクロブロックの左のマクロブロックの４×４右上部分に対応し得る。いくつかの例で、現在のブロック１２０、上ネイバーブロック１２２、および左ネイバーブロック１２４は、同じまたは異なるマクロブロックの一部分であり得る。
【００９１】
現在のブロック１２０の符号化コンテキストを判断するために、コーディングユニットは、上ネイバーブロック１２２および左ネイバーブロック１２４の動きベクトルが１／８ピクセル精度を有するのか１／４ピクセル精度を有するのかを分析し得る。上ネイバーブロック１２２の動きベクトルは、上ネイバーブロック１２２を含む、ビデオデータのより大きいブロックの動きベクトルであり得る。例えば、上ネイバーブロック１２２は、単一の動きベクトルを有する８×８ピクセルパーティション内に含まれ得る４×４ピクセル領域と定義され得る。同様に、左ネイバーブロック１２４の動きベクトルは、左ネイバーブロック１２４を含む、ビデオデータのより大きいブロックの動きベクトルであり得る。
【００９２】
現在のブロック１２０の第１の符号化コンテキストは、上ネイバーブロック１２２の動きベクトルが１／４ピクセル精度を有するとき、および左ネイバーブロック１２４の動きベクトルも１／４ピクセル精度を有するときに対応し得る。現在のブロック１２０の第２の符号化コンテキストは、上ネイバーブロック１２２の動きベクトルが１／４ピクセル精度を有するとき、および左ネイバーブロック１２４の動きベクトルが１／８ピクセル精度を有するときに対応し得る。現在のブロック１２０の第３の符号化コンテキストは、上ネイバーブロック１２２の動きベクトルが１／８ピクセル精度を有するとき、および左ネイバーブロック１２４の動きベクトルも１／４ピクセル精度を有するときに対応し得る。現在のブロック１２０の第４の符号化コンテキストは、上ネイバーブロック１２２の動きベクトルが１／８ピクセル精度を有するとき、および左ネイバーブロック１２４の動きベクトルも１／８ピクセル精度を有するときに対応し得る。
【００９３】
以下の表１に、上記で説明した例示的な符号化コンテキストを要約する。表１はまた、符号化コンテキストと、対応する符号化コンテキストにおける現在のブロック１２０の動きベクトルの参照フレームインデックス値を符号化するときに使用すべき可変長コードのセットとの間の例示的な関係を示している。
【表１】
0006042470.tif 000002
【００９４】
表２〜表５に、例示的な参照フレームインデックス値の例示的なコードワードのセットを示す。これらの例示的なコードワードのセットは、例証および説明の目的で示してある。概して、コードワードのセットは、例えば、特定の参照フレームインデックス値が生じる可能性がどの程度であるのか、並びに、動きベクトルが対応するコンテキストにおける参照フレームインデックス値に対応する参照フレームを指すときに、コンテキストにおいて１／８ピクセル精度動きベクトルまたは１／４ピクセル精度動きベクトルが使用される可能性がどの程度であるのかを示すデータに基づいて、潜在的なコンテキストの各々についてＣＡＶＬＣアルゴリズムを実行することによって生成され得る。表２〜表５の例は、異なるコンテキストにおける同じ参照フレームインデックス値の例示的なコードワードと、１／４ピクセル精度動きベクトルと１／８ピクセル精度動きベクトルの両方の例示的なコードワードを示している。
【００９５】
表２は、上ネイバーブロック１２２と左ネイバーブロック１２４の両方の動きベクトルが１／４ピクセル精度を有する、第１の例示的なコンテキストのコードワードを示している。例えば、経験的テストを通して、これらの動きベクトルの両方が１／４ピクセル精度を有するときに、現在のブロック１２０の動きベクトルも１／４ピクセル精度を有する可能性が高くなり得ると判断され得る。従って、このコンテキストにおいて動きベクトルが１／４ピクセル精度を有することをも示す参照フレームインデックス値のコードワードは、動きベクトルが１／８ピクセル精度を有することをも示す参照値のコードワードよりも相対的に短くなり得る。他の例では、反対に、現在のブロック１２０の動きベクトルが、このコンテキストでは代わりに１／８ピクセル精度を有する可能性が高くなり得るか、またはこのコンテキストにおける１／４または１／８ピクセル精度の確率がほぼ同じになり得ることを、経験的テストが示し得る。いずれの場合も、同じ参照フレームのコンテキストにおいて、動きベクトルのより可能性が低い精度のコードワードに比較して、より可能性が高い精度のコードワードがより短くなることによって、ビットの節約が実現され得る。
【表２】
0006042470.tif 000003
【００９６】
表３は、上ネイバーブロック１２２の動きベクトルが１／４ピクセル精度を有し、左ネイバーブロック１２４の動きベクトルが１／８ピクセル精度を有する第２の例示的なコンテキストのコードワードを示している。例えば、経験的テストを通して、これらの動きベクトルがこれらの精度を有するときに、現在のブロック１２０の動きベクトルは１／８ピクセル精度を有する可能性が高くなり得ると判断され得る。従って、このコンテキストにおいて動きベクトルが１／４ピクセル精度を有することをも示す参照フレームインデックス値のコードワードは、動きベクトルが１／８ピクセル精度を有することをも示す参照値のコードワードよりも相対的に長くなり得る。他の例では、反対に、現在のブロック１２０の動きベクトルが、このコンテキストでは代わりに１／４ピクセル精度を有する可能性が高くなり得るか、またはこのコンテキストにおける１／４または１／８ピクセル精度の確率がほぼ同じになり得ることを、経験的テストが示し得る。
【表３】
0006042470.tif 000004
【００９７】
表４は、上ネイバーブロック１２２の動きベクトルが１／８ピクセル精度を有し、左ネイバーブロック１２４の動きベクトルが１／４ピクセル精度を有する第３の例示的なコンテキストのコードワードを示している。例えば、経験的テストを通して、これらの動きベクトルがこれらの精度を有するときに、現在のブロック１２０の動きベクトルは１／４ピクセル精度を有する可能性が高くなり得ると判断され得る。従って、このコンテキストにおいて動きベクトルが１／４ピクセル精度を有することをも示す参照フレームインデックス値のコードワードは、動きベクトルが１／８ピクセル精度を有することをも示す参照値のコードワードよりも相対的に短くなり得る。他の例では、反対に、現在のブロック１２０の動きベクトルが、このコンテキストでは代わりに１／８ピクセル精度を有する可能性が高くなり得るか、またはこのコンテキストにおける１／４または１／８ピクセル精度の確率がほぼ同じになり得ることを、経験的テストが示し得る。
【表４】
0006042470.tif 000005
【００９８】
表５は、上ネイバーブロック１２２と左ネイバーブロック１２４の両方の動きベクトルが１／８ピクセル精度を有する第４の例示的なコンテキストのコードワードを示している。例えば、経験的テストを通して、これらの動きベクトルが両方とも１／８ピクセル精度を有するときに、現在のブロック１２０の動きベクトルは１／８ピクセル精度を有する可能性が高くなり得ると判断され得る。従って、このコンテキストにおいて動きベクトルが１／４ピクセル精度を有することをも示す参照フレームインデックス値のコードワードは、動きベクトルが１／８ピクセル精度を有することをも示す参照値のコードワードよりも相対的に長くなり得る。他の例では、反対に、現在のブロック１２０の動きベクトルが、このコンテキストでは代わりに１／４ピクセル精度を有する可能性が高くなり得るか、またはこのコンテキストにおける１／４または１／８ピクセル精度の確率がほぼ同じになり得ることを、経験的テストが示し得る。
【表５】
0006042470.tif 000006
【００９９】
上記のように、表２〜表５中のコードワードは例として与えたものにすぎない。概して、これらの様々なコンテキストのコードワードは、経験的テストによって収集された統計を使用してＣＡＶＬＣアルゴリズムを実行することによって生成され得る。統計は、特定のコンテキストにおいて特定の参照フレームが動きベクトルによって識別される可能性、並びに対応するコンテキストにおいて、参照フレームを識別する動きベクトルが１／８ピクセル精度または１／４ピクセル精度を有する可能性に関係し得る。ＣＡＶＬＣアルゴリズムを実行すると、潜在的な参照フレームインデックス値ごとに、動きベクトルの１／４ピクセル精度および動きベクトルの１／８ピクセル精度とペアリングされたコードワードが生成され得る。特定の符号化コンテキストを使用して動きベクトルを符号化することによって、本開示の技法は、より可能性が高い参照フレームを指す動きベクトルのより可能性が高い精度では、より可能性が低い参照フレームを指す動きベクトルのより可能性が低い精度よりも、特定のコンテキストにおいてコードワードが短くなるという点で、コーディングビット節約を実現し得る。
【０１００】
図６は、１／８ピクセル精度動きベクトルまたは１／４ピクセル精度動きベクトルのいずれかを使用してビデオデータのブロックを符号化すると共に、精度の選択をシグナリングするための例示的な方法を示すフローチャートである。説明のために、図６の方法について、図２のビデオエンコーダ２０に関して説明する。但し、他のユニット、例えば、プロセッサ、ビデオエンコーダ、ビデオコーデック、制御ユニット、または他のハードウェア、ソフトウェア、またはファームウェア実装形態も、図６の方法を実行するように構成され得ることを理解されたい。
【０１０１】
初めに、ビデオエンコーダ２０が、符号化されるべきビデオデータのブロックを受信する（１５０）。図６の例で、ブロックは、インターモード符号化されたフレームまたはピクチャ（例えば、ＰフレームまたはＢフレーム）のブロックに対応し得る。モード選択ユニット４０は、ブロックを受信し、参照フレームストア６４に記憶された参照フレームに関連してブロックの動き探索を実行するために、ブロックを動き推定ユニット４２に転送し得る。動き推定ユニット４２は、ブロックの動きベクトルを計算するために、動き探索アルゴリズムを実行し得る。
【０１０２】
動き推定ユニット４２は、ブロックを符号化するために１／８ピクセル精度を有する動きベクトルを使用すべきか１／４ピクセル精度を有する動きベクトルを使用すべきかをさらに判断する（１５２）。いくつかの例で、動き推定ユニット４２は、１／４ピクセル精度を有するブロックの第１の動きベクトルと、１／８ピクセル精度を有するブロックの第２の動きベクトルとを、例えば、２つの符号化パスにおいて計算し得る。第１の動きベクトルは第１の予測ブロックを参照し得、第２の動きベクトルは第２の予測ブロックを参照し得る。２つの予測ブロックは、必ずしも同じ参照フレームから生じる必要はない。
【０１０３】
動き補償ユニット４４は、第１の予測ブロックと第２の予測ブロックとについて誤差値を計算し得る。例えば、動き補償ユニット４４は、第１の予測ブロックと符号化されるべきブロックとの間の差分と、第２の予測ブロックと符号化されるべきブロックとの間の差分とを計算し得る。動き補償ユニット４４は、第１の予測ブロックと第２の予測ブロックとについて、動きベクトルを計算する動き推定プロセス中にレート歪値を計算し得る。解像度選択ユニット４８は、第１の予測ブロックと第２の予測ブロックとについて、動きベクトルのレート歪値を比較し、どちらの精度がより低いレート歪を与えるのかを判断し得る。他の例で、解像度選択ユニット４８は、当業者によって判断され得るように、１／８ピクセル精度を有する動きベクトルを使用してブロックを符号化すべきか、または１／４ピクセル精度を有する動きベクトルを使用してブロックを符号化すべきかを他の方法で判断し得る。
【０１０４】
次いで、動き推定ユニット４２は、選択された動きベクトルを符号化する（１５４）。例えば、動き推定ユニット４２は、符号化されるべきブロックの動き予測子を選択し得る。動き予測子は、符号化されるべきブロックの隣接ブロックの動きベクトルの中央値に対応し得る。動き推定ユニット４２は、動きベクトル差分値、例えば、選択された動きベクトルと動き予測子との間の差分を計算することによって、動きベクトルを符号化し得る。動き推定ユニット４２は、いくつかの例で、動きベクトル差分値を計算する前に、選択された動きベクトルの解像度に動き予測子をさらに量子化し得る。いくつかの例で、動き推定ユニット４２は、動きベクトル差分値が常に共通の解像度で、例えば、常に１／８ピクセル精度で、または常に１／４ピクセル精度で計算されることを保証し得る。ビデオエンコーダ２０は、動きベクトル差分値がどのように計算されたのか（例えば、動き予測子が動きベクトルと同じ精度に量子化されたのかどうか、または動きベクトル差分値がグローバル精度で計算されたのかどうか）を示すシグナリング情報をさらに生成し得る。
【０１０５】
動きベクトルを符号化するために動きベクトル差分値を計算することに加えて、ビデオエンコーダ２０は、符号化された動きベクトルの精度（例えば、１／８ピクセルまたは１／４ピクセル）をさらにシグナリングし得る。図６の例で、エントロピーコーディングユニット５６は、動きベクトルによって識別された予測ブロックを含む参照フレームを識別する参照フレームインデックス値とともにこの信号を含み得る。この例で、エントロピーコーディングユニット５６は、隣接ブロックが１／８ピクセル精度を有する動きベクトルを使用して符号化されたのか、または１／４ピクセル精度を有する動きベクトルを使用して符号化されたのかに基づいて、符号化されたブロックの符号化コンテキストを判断する（１５６）。
【０１０６】
次いで、エントロピーコーディングユニット５６は、動きベクトルに対して選択された精度をシグナリングするために、判断されたコンテキストに対応するコードワードのセットから、参照フレームインデックス値および動きベクトルの精度のコードワードを判断し、従って、判断されたコンテキストを使用して選択された精度をシグナリングする（１５８）。エントロピーコーディングユニット５６はまた、動きベクトル差分値をエントロピー符号化するために、動きベクトル差分値のコードワードを選択し得る。次いで、ビデオエンコーダ２０が、符号化された動きベクトルおよび信号、例えば、動きベクトル差分のコードワードと、参照フレームインデックス値と、選択された精度のコードワードとを出力する（１６０）。
【０１０７】
図６の方法は、ブロックに対して、１／４ピクセル精度動きベクトルよりも１／８ピクセル精度動きベクトルの使用が好ましいと判断されたときに、１／８ピクセル精度動きベクトルを使用してビデオデータのブロックを符号化することと、ブロックに対する１／８ピクセル精度動きベクトルの使用を示す信号値を生成することと、符号化されたブロック、並びに信号値を出力することとを含むものとして要約され得る。
【０１０８】
図７は、符号化されたブロックの動きベクトルの精度を示す信号値を使用して、符号化されたブロックを復号するための例示的な方法を示すフローチャートである。説明のために、図７の方法について、図３のビデオデコーダ３０に関して説明する。但し、他のユニット、例えば、プロセッサ、ビデオデコーダ、ビデオコーデック、制御ユニット、または他のハードウェア、ソフトウェアまたはファームウェア実装形態も、図７の方法を実行するように構成され得ることを理解されたい。
【０１０９】
初めに、エントロピー復号ユニット７０が、ビデオデータの符号化されたブロックを受信する（１８０）。例えば、ビデオデコーダ３０を含むクライアントデバイスは、ネットワークまたはブロードキャスト送信を介して、符号化されたビデオデータのストリームを受信し得るか、またはＤＶＤ、ブルーレイディスク、ハードドライブ、フラッシュドライブ、または他の記憶媒体などの記憶媒体からビデオデータを抽出し得る。符号化されたブロックは、動きベクトル差分値と、参照フレームインデックス値および動きベクトル差分値を使用して符号化された動きベクトルの精度の指示を表すコードワードと、残差値とを含み得る。
【０１１０】
エントロピー復号ユニット７０は、例えば、動き補償ユニット７２から、符号化されたブロックの符号化コンテキストの指示を受信し得る。動き補償ユニット７２は、例えば、隣接ブロックが１／８ピクセル精度動きベクトルを使用して符号化されたのか、または１／４ピクセル精度動きベクトルを使用して符号化されたのかに基づいて、ブロックの符号化コンテキストを判断する（１８２）。次いで、エントロピー復号ユニット７０は、ブロックの符号化コンテキストに対応する、コードワードのセット中のコードワードを識別することによって、参照フレームインデックと符号化された動きベクトルの精度とを判断する（１８４）。エントロピー復号ユニット７０は、参照フレームインデックス値および動きベクトルの精度と、動きベクトル差分値と、残差値とを動き補償ユニット７２およびイントラ予測ユニット７４に与え得る。
【０１１１】
動き補償ユニット７２は、動きベクトル差分値を使用して、判断された精度でブロックの動きベクトルを復号する（１８６）。例えば、動き補償ユニット７２は、既に復号されている隣接ブロックの動きベクトルの中央値として、動きベクトルの動き予測子を判断し得る。いくつかの例で、動き補償ユニット７２は、符号化されるべき動きベクトルの判断された精度に動き予測子を量子化し得る。いくつかの例で、動き補償ユニット７２は、任意の動きベクトルを符号化するときに、同じ精度を使用するように構成され得る。いずれの場合も、動き補償ユニット７２は、動きベクトル差分値と選択された動き予測子との和を計算することによって、動きベクトルを復号し得る。この和は、判断された精度、例えば、１／８ピクセル精度または１／４ピクセル精度のいずれかを有する動きベクトルを生成し得る。
【０１１２】
動き補償ユニット７２は、復号された動きベクトルを使用してさらにブロックを復号する（１８８）。例えば、動き補償ユニット７２は、復号された動きベクトルと参照フレームインデックス値とによって識別される、参照フレームストア８２の参照フレーム中の予測ブロックを指すことがある。場合によって、動き補償ユニット７２は、例えば、適応補間フィルタまたは固定補間フィルタを使用して、参照フレームのフラクショナルピクセル位置の値を補間し得る。さらに、動き補償ユニット７２は、復号されたブロックを生成するために、受信された残差値を予測ブロックに加算し得る。ピクチャの全ブロックを復号した後、ビデオデコーダ３０は、復号されたピクチャをビデオ出力にパスし得、ビデオ出力は、復号されたピクチャを表示し得る。ビデオデコーダ３０はまた、後で受信された符号化されたピクチャの符号化されたブロックの参照フレームとして使用するために、復号されたピクチャを参照フレームストア８２に記憶し得る。
【０１１３】
図７の方法は、ビデオデータの符号化されたブロックとビデオデータの符号化されたブロックが１／８ピクセル精度動きベクトルを使用して符号化されたことを示す信号値とを受信することと、ビデオデータのブロックが１／８ピクセル精度動きベクトルを使用して符号化されたことを判断するために信号値を分析することと、信号値に基づいて１／８ピクセル精度動きベクトルを使用してビデオデータのブロックを復号することとを含むものとして要約され得る。
【０１１４】
１つまたは複数の例で、説明した機能はハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、１つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、例えば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含むデータ記憶媒体または通信媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、（１）非一時的である有形コンピュータ可読記憶媒体、および（２）信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明する技法の実装のための命令、コードおよび／またはデータ構造を取り出すために１つまたは複数のコンピュータまたは１つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【０１１５】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。さらに、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。例えば、命令が、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。但し、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザディスク（登録商標）（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー(登録商標)ディスク（disk）およびブルーレイディスク（disc）を含み、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
【０１１６】
命令は、１つまたは複数のデジタル信号プロセッサ（ＤＳＰ）などの１つまたは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、または他の等価な集積回路またはディスクリート論理回路によって実行され得る。従って、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明する技法の実装に好適な他の構造のいずれかを指す。さらに、いくつかの態様で、本明細書で説明した機能は、符号化および復号のために構成された専用のハードウェアおよび／またはソフトウェアモジュール内に提供され得、あるいは複合コーデックに組み込まれ得る。また、本技法は、１つまたは複数の回路または論理要素中に十分に実装され得る。
【０１１７】
本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）またはＩＣのセット（例えば、チップセット）を含む、多種多様なデバイスまたは装置において実施され得る。本開示では、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要はない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェアおよび／またはファームウェアとともに、上記で説明したように１つまたは複数のプロセッサを含んで、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作ハードウェアユニットの集合によって与えられ得る。
【０１１８】
様々な例について説明した。これらおよび他の例は以下の特許請求の範囲内に入る。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[Ｃ１]
ビデオデータを符号化する方法であって、前記方法が、
ビデオデータのブロックに対して１／４ピクセル精度動きベクトルよりも１／８ピクセル精度動きベクトルの使用が好ましいと判断されたときに、前記１／８ピクセル精度動きベクトルを使用して前記ブロックを符号化することと、
前記ブロックに対する前記１／８ピクセル精度動きベクトルの前記使用を示す信号値を生成することと、
前記符号化されたブロックと前記信号値とを出力することと
を備える、方法。
[Ｃ２]
前記信号値を生成することが、前記１／８ピクセル精度動きベクトルの前記使用を示すように前記ブロックに関連するフラグの値を設定することを備える、Ｃ１に記載の方法。
[Ｃ３]
前記ブロックがマクロブロックのパーティションを備え、前記信号値を生成することが、前記１／８ピクセル精度動きベクトルの前記使用を示すように前記マクロブロックに関連するフラグの値を設定することを備え、前記方法は、前記フラグが前記ブロックに対する１／８ピクセル精度動きベクトルの前記使用を示すときに、前記１／８ピクセル精度動きベクトルを使用して前記マクロブロックの全パーティションを符号化することをさらに備える、Ｃ１に記載の方法。
[Ｃ４]
前記ブロックを符号化することが、参照フレームの一部分に関連して前記ブロックを符号化することを備え、
前記信号値を生成することが、参照フレームインデックス値と、前記ブロックを符号化するための前記１／８ピクセル精度動きベクトルの前記使用とを示す可変長コードを選択することを備え、前記参照フレームインデックス値が前記参照フレームを識別する、Ｃ１に記載の方法。
[Ｃ５]
前記参照フレームインデックス値が前記参照フレームの第１の参照フレームインデックス値を備え、前記第１の参照フレームインデックス値の長さが、前記参照フレームに関する１／４ピクセル精度動きベクトルの使用を示す第２の参照フレームインデックス値の長さよりも小さい、Ｃ４に記載の方法。
[Ｃ６]
前記可変長コードを選択することが、
前記ブロックの隣接ブロックが１／８ピクセル精度動きベクトルを使用して符号化されたのか、または１／４ピクセル精度動きベクトルを使用して符号化されたのかに基づいて、前記ブロックの符号化コンテキストを判断することと、
前記判断された符号化コンテキストに対応するコードのセットから前記可変長コードを選択することと
を備える、Ｃ４に記載の方法。
[Ｃ７]
前記ブロックを符号化することが、潜在的な参照フレームのリスト中の直近の参照フレームを備える参照フレームの一部分に関連して前記ブロックを符号化することを備える、Ｃ１に記載の方法。
[Ｃ８]
前記ブロックを符号化することが、
前記ブロックの前記１／８ピクセル精度動きベクトルを計算することと、
前記ブロックの前記１／８ピクセル精度動きベクトルと動き予測子との間の差分を備える動きベクトル差分値を計算することと
を備える、Ｃ１に記載の方法。
[Ｃ９]
前記動きベクトル差分値を計算することが、
前記動き予測子を１／８ピクセル精度に量子化することと、
前記ブロックの前記１／８ピクセル精度動きベクトルと前記量子化された動き予測子との間の前記差分を計算することと
を備える、Ｃ８に記載の方法。
[Ｃ１０]
ビデオデータを符号化するための装置であって、前記装置は、ビデオデータのブロックに対して１／４ピクセル精度動きベクトルよりも１／８ピクセル精度動きベクトルの使用が好ましいと判断されたときに、前記１／８ピクセル精度動きベクトルを使用して前記ブロックを符号化し、前記ブロックに対する前記１／８ピクセル精度動きベクトルの前記使用を示す信号値を生成するように構成されたビデオエンコーダを備える、装置。
[Ｃ１１]
前記信号値を生成するために、前記ビデオエンコーダが、前記１／８ピクセル精度動きベクトルの前記使用を示すように前記ブロックに関連するフラグの値を設定するように構成された、Ｃ１０に記載の装置。
[Ｃ１２]
前記ブロックがマクロブロックのパーティションを備え、前記信号値を生成するために、前記ビデオエンコーダが、前記１／８ピクセル精度動きベクトルの前記使用を示すように前記マクロブロックに関連するフラグの値を設定するように構成され、前記ビデオエンコーダは、前記フラグが前記ブロックに対する１／８ピクセル精度動きベクトルの前記使用を示すときに、前記１／８ピクセル精度動きベクトルを使用して前記マクロブロックの全パーティションを符号化するように構成された、Ｃ１０に記載の装置。
[Ｃ１３]
前記ビデオエンコーダが、参照フレームの一部分に関連して前記ブロックを符号化するように構成され、前記信号値を生成するために、前記ビデオエンコーダが、参照フレームインデックス値と、前記ブロックを符号化するための前記１／８ピクセル精度動きベクトルの前記使用とを示す可変長コードを選択するように構成され、前記参照フレームインデックス値が前記参照フレームを識別する、Ｃ１０に記載の装置。
[Ｃ１４]
前記参照フレームインデックス値が前記参照フレームの第１の参照フレームインデックス値を備え、前記第１の参照フレームインデックス値の長さが、前記参照フレームに関する１／４ピクセル精度動きベクトルの使用を示す第２の参照フレームインデックス値の長さよりも小さい、Ｃ１３に記載の装置。
[Ｃ１５]
前記可変長コードを選択するために、前記ビデオエンコーダは、前記ブロックの隣接ブロックが１／８ピクセル精度動きベクトルを使用して符号化されたのか、または１／４ピクセル精度動きベクトルを使用して符号化されたのかに基づいて、前記ブロックの符号化コンテキストを判断し、前記判断された符号化コンテキストに対応するコードのセットから前記可変長コードを選択するように構成された、Ｃ１３に記載の装置。
[Ｃ１６]
前記ビデオエンコーダが、潜在的な参照フレームのリスト中の直近の参照フレームを備える参照フレームの一部分に関連して前記ブロックを符号化するように構成された、Ｃ１０に記載の装置。
[Ｃ１７]
前記ビデオエンコーダが、前記ブロックの前記１／８ピクセル精度動きベクトルを計算し、前記ブロックの前記１／８ピクセル精度動きベクトルと動き予測子との間の差分を備える動きベクトル差分値を計算するように構成された、Ｃ１０に記載の装置。
[Ｃ１８]
前記動きベクトル差分値を計算するために、前記ビデオエンコーダが、前記動き予測子を１／８ピクセル精度に量子化し、前記ブロックの前記１／８ピクセル精度動きベクトルと前記量子化された動き予測子との間の前記差分を計算するように構成された、Ｃ１７に記載の装置。
[Ｃ１９]
ビデオデータを符号化するための装置であって、前記装置が、
ビデオデータのブロックに対して１／４ピクセル精度動きベクトルよりも１／８ピクセル精度動きベクトルの使用が好ましいと判断されたときに、前記１／８ピクセル精度動きベクトルを使用して前記ブロックを符号化するための手段と、
前記ブロックに対する前記１／８ピクセル精度動きベクトルの前記使用を示す信号値を生成するための手段と、
前記符号化されたブロックと前記信号値とを出力するための手段と
を備える、装置。
[Ｃ２０]
前記ブロックがマクロブロックのパーティションを備え、前記信号値を生成するための前記手段が、前記１／８ピクセル精度動きベクトルの前記使用を示すように前記マクロブロックに関連するフラグの値を設定するための手段を備え、前記フラグが前記ブロックに対する１／８ピクセル精度動きベクトルの前記使用を示すときに、前記１／８ピクセル精度動きベクトルを使用して前記マクロブロックの全パーティションを符号化するための手段をさらに備える、Ｃ１９に記載の装置。
[Ｃ２１]
前記ブロックを符号化するための前記手段が、参照フレームの一部分に関連して前記ブロックを符号化するための手段を備え、
前記信号値を生成するための前記手段が、参照フレームインデックス値と、前記ブロックを符号化するための前記１／８ピクセル精度動きベクトルの前記使用とを示す可変長コードを選択するための手段を備え、前記参照フレームインデックス値が前記参照フレームを識別する、Ｃ１９に記載の装置。
[Ｃ２２]
前記可変長コードを選択するための前記手段が、
前記ブロックの隣接ブロックが１／８ピクセル精度動きベクトルを使用して符号化されたのか、または１／４ピクセル精度動きベクトルを使用して符号化されたのかに基づいて、前記ブロックの符号化コンテキストを判断するための手段と、
前記判断された符号化コンテキストに対応するコードのセットから前記可変長コードを選択するための手段と
を備える、Ｃ２１に記載の装置。
[Ｃ２３]
前記ブロックを符号化するための前記手段が、潜在的な参照フレームのリスト中の直近の参照フレームを備える参照フレームの一部分に関連して前記ブロックを符号化するための手段を備える、Ｃ１９に記載の装置。
[Ｃ２４]
前記ブロックを符号化するための前記手段が、
前記ブロックの前記１／８ピクセル精度動きベクトルを計算するための手段と、
前記ブロックの前記１／８ピクセル精度動きベクトルと動き予測子との間の差分を備える動きベクトル差分値を計算するための手段と
を備える、Ｃ１９に記載の装置。
[Ｃ２５]
前記動きベクトル差分値を計算するための前記手段が、
前記動き予測子を１／８ピクセル精度に量子化するための手段と、
前記ブロックの前記１／８ピクセル精度動きベクトルと前記量子化された動き予測子との間の前記差分を計算するための手段と
を備える、Ｃ２４に記載の装置。
[Ｃ２６]
実行されると、
ビデオデータのブロックに対して１／４ピクセル精度動きベクトルよりも１／８ピクセル精度動きベクトルの使用が好ましいと判断されたときに、前記１／８ピクセル精度動きベクトルを使用して前記ブロックを符号化することと、
前記ブロックに対する前記１／８ピクセル精度動きベクトルの前記使用を示す信号値を生成することと、
前記符号化されたブロックと前記信号値とを出力することと
をプロセッサに行わせる命令を備えるコンピュータ可読記憶媒体。
[Ｃ２７]
前記ブロックがマクロブロックのパーティションを備え、前記信号値を生成するための前記命令が、前記１／８ピクセル精度動きベクトルの前記使用を示すように前記マクロブロックに関連するフラグの値を設定するための命令を備え、前記方法は、前記フラグが前記ブロックに対する１／８ピクセル精度動きベクトルの前記使用を示すときに、前記１／８ピクセル精度動きベクトルを使用して前記マクロブロックの全パーティションを符号化することをさらに備える、Ｃ２６に記載のコンピュータ可読記憶媒体。
[Ｃ２８]
前記ブロックを符号化するための前記命令が、参照フレームの一部分に関連して前記ブロックを符号化するための命令を備え、
前記信号値を生成するための前記命令が、参照フレームインデックス値と、前記ブロックを符号化するための前記１／８ピクセル精度動きベクトルの前記使用とを示す可変長コードを選択するための命令を備え、前記参照フレームインデックス値が前記参照フレームを識別する、Ｃ２６に記載のコンピュータ可読記憶媒体。
[Ｃ２９]
前記可変長コードを選択するための前記命令が、
前記ブロックの隣接ブロックが１／８ピクセル精度動きベクトルを使用して符号化されたのか、または１／４ピクセル精度動きベクトルを使用して符号化されたのかに基づいて、前記ブロックの符号化コンテキストを判断することと、
前記判断された符号化コンテキストに対応するコードのセットから前記可変長コードを選択することと
を行うための命令を備える、Ｃ２８に記載のコンピュータ可読記憶媒体。
[Ｃ３０]
前記ブロックを符号化するための前記命令が、潜在的な参照フレームのリスト中の直近の参照フレームを備える参照フレームの一部分に関連して前記ブロックを符号化するための命令を備える、Ｃ２６に記載のコンピュータ可読記憶媒体。
[Ｃ３１]
前記ブロックを符号化するための前記命令が、
前記ブロックの前記１／８ピクセル精度動きベクトルを計算することと、
前記ブロックの前記１／８ピクセル精度動きベクトルと動き予測子との間の差分を備える動きベクトル差分値を計算することと
を行うための命令を備える、Ｃ２６に記載のコンピュータ可読記憶媒体。
[Ｃ３２]
前記動きベクトル差分値を計算するための前記命令が、
前記動き予測子を１／８ピクセル精度に量子化することと、
前記ブロックの前記１／８ピクセル精度動きベクトルと前記量子化された動き予測子との間の前記差分を計算することと
を行うための命令を備える、Ｃ３１に記載のコンピュータ可読記憶媒体。
[Ｃ３３]
ビデオデータを復号する方法であって、前記方法が、
ビデオデータの符号化されたブロックと、ビデオデータの前記符号化されたブロックが１／８ピクセル精度動きベクトルを使用して符号化されたことを示す信号値とを受信することと、
ビデオデータの前記符号化されたブロックが前記１／８ピクセル精度動きベクトルを使用して符号化されたと判断するために前記信号値を分析することと、
前記信号値に基づいて、前記１／８ピクセル精度動きベクトルを使用してビデオデータの前記ブロックを復号することと
を備える、方法。
[Ｃ３４]
前記ブロックがマクロブロックのパーティションを備え、前記信号値を分析することが、前記１／８ピクセル精度動きベクトルの前記使用を示す、前記マクロブロックに関連するフラグの値を分析することを備え、前記方法が、１／８ピクセル精度動きベクトルを使用して前記マクロブロックの全パーティションを復号することをさらに備える、Ｃ３３に記載の方法。
[Ｃ３５]
前記符号化されたブロックが、参照フレームの一部分に関連して符号化され、前記信号値を分析することが、
参照フレームインデックス値と、前記ブロックを符号化するための前記１／８ピクセル精度動きベクトルの前記使用とを示す可変長コードを分析することと、
前記参照フレームインデックス値を使用して前記参照フレームを識別することとを備える、Ｃ３３に記載の方法。
[Ｃ３６]
前記ブロックの隣接ブロックが１／８ピクセル精度動きベクトルを使用して符号化されたのか、または１／４ピクセル精度動きベクトルを使用して符号化されたのかに基づいて、前記ブロックの符号化コンテキストを判断することをさらに備え、
前記参照フレームを識別することが、前記判断された符号化コンテキストに対応するコードのセット中で前記参照フレームインデックス値を識別することを備える、Ｃ３５に記載の方法。
[Ｃ３７]
前記符号化されたブロックが動きベクトル差分値を備え、前記ブロックを復号することが、
前記ブロックの動き予測子を判断することと、
前記１／８ピクセル精度動きベクトルを計算するために、前記動き予測子と前記動きベクトル差分値との和を計算することと
を備える、Ｃ３３に記載の方法。
[Ｃ３８]
ビデオデータを復号するための装置であって、前記装置が、
ビデオデータの符号化されたブロックと、ビデオデータの前記符号化されたブロックが１／８ピクセル精度動きベクトルを使用して符号化されたことを示す信号値とを受信するための入力インターフェースと、
ビデオデータの前記ブロックが前記１／８ピクセル精度動きベクトルを使用して符号化されたと判断するために前記信号値を分析し、前記信号値に基づいて、前記１／８ピクセル精度動きベクトルを使用してビデオデータの前記ブロックを復号するためのビデオデコーダと
を備える、装置。
[Ｃ３９]
前記ブロックがマクロブロックのパーティションを備え、前記信号値を分析するために、前記ビデオデコーダが、前記１／８ピクセル精度動きベクトルの前記使用を示す、前記マクロブロックに関連するフラグの値を分析するように構成され、前記ビデオデコーダが、１／８ピクセル精度動きベクトルを使用して前記マクロブロックの全パーティションを復号するように構成された、Ｃ３８に記載の装置。
[Ｃ４０]
前記符号化されたブロックが、参照フレームの一部分に関連して符号化され、前記信号値を分析するために、前記ビデオデコーダが、参照フレームインデックス値と、前記ブロックを符号化するための前記１／８ピクセル精度動きベクトルの前記使用とを示す可変長コードを分析し、前記参照フレームインデックス値を使用して前記参照フレームを識別するように構成された、Ｃ３８に記載の装置。
[Ｃ４１]
前記ビデオデコーダは、前記ブロックの隣接ブロックが１／８ピクセル精度動きベクトルを使用して符号化されたのか、または１／４ピクセル精度動きベクトルを使用して符号化されたのかに基づいて、前記ブロックの符号化コンテキストを判断するように構成され、前記参照フレームを識別するために、前記ビデオデコーダが、前記判断された符号化コンテキストに対応するコードのセット中の前記参照フレームインデックス値を識別するように構成された、Ｃ４０に記載の装置。
[Ｃ４２]
前記符号化されたブロックが動きベクトル差分値を備え、前記ブロックを復号するために、前記ビデオデコーダが、前記ブロックの動き予測子を判断し、前記１／８ピクセル精度動きベクトルを計算するために、前記動き予測子と前記動きベクトル差分値との和を計算するように構成された、Ｃ３８に記載の装置。
[Ｃ４３]
ビデオデータを復号するための装置であって、前記装置が、
ビデオデータの符号化されたブロックと、ビデオデータの前記符号化されたブロックが１／８ピクセル精度動きベクトルを使用して符号化されたことを示す信号値とを受信するための手段と、
ビデオデータの前記ブロックが前記１／８ピクセル精度動きベクトルを使用して符号化されたと判断するために前記信号値を分析するための手段と、
前記信号値に基づいて、前記１／８ピクセル精度動きベクトルを使用してビデオデータの前記ブロックを復号するための手段と
を備える、装置。
[Ｃ４４]
前記ブロックがマクロブロックのパーティションを備え、前記信号値を分析するための前記手段が、前記１／８ピクセル精度動きベクトルの前記使用を示す、前記マクロブロックに関連するフラグの値を分析するための手段を備え、前記方法が、１／８ピクセル精度動きベクトルを使用して前記マクロブロックの全パーティションを復号することをさらに備える、Ｃ４３に記載の装置。
[Ｃ４５]
前記符号化されたブロックが、参照フレームの一部分に関連して符号化され、前記信号値を分析するための手段が、
参照フレームインデックス値と、前記ブロックを符号化するための前記１／８ピクセル精度動きベクトルの前記使用とを示す可変長コードを分析するための手段と、
前記参照フレームインデックス値を使用して前記参照フレームを識別するための手段とを備える、Ｃ４３に記載の装置。
[Ｃ４６]
前記ブロックの隣接ブロックが１／８ピクセル精度動きベクトルを使用して符号化されたのか、または１／４ピクセル精度動きベクトルを使用して符号化されたのかに基づいて、前記ブロックの符号化コンテキストを判断するための手段をさらに備え、前記参照フレームを識別するための前記手段が、前記判断された符号化コンテキストに対応するコードのセット中で前記参照フレームインデックス値を識別するための手段を備える、Ｃ４５に記載の装置。
[Ｃ４７]
前記符号化されたブロックが動きベクトル差分値を備え、前記ブロックを復号するための前記手段が、
前記ブロックの動き予測子を判断するための手段と、
前記１／８ピクセル精度動きベクトルを計算するために、前記動き予測子と前記動きベクトル差分値との和を計算するための手段と
を備える、Ｃ４３に記載の装置。
[Ｃ４８]
実行されると、
ビデオデータの符号化されたブロックと、ビデオデータの前記符号化されたブロックが１／８ピクセル精度動きベクトルを使用して符号化されたことを示す信号値とを受信することと、
ビデオデータの前記ブロックが前記１／８ピクセル精度動きベクトルを使用して符号化されたと判断するために前記信号値を分析することと、
前記信号値に基づいて、前記１／８ピクセル精度動きベクトルを使用してビデオデータの前記ブロックを復号することと
をプロセッサに行わせる命令を備えるコンピュータ可読記憶媒体。
[Ｃ４９]
前記ブロックがマクロブロックのパーティションを備え、前記信号値を分析するための前記命令が、前記１／８ピクセル精度動きベクトルの前記使用を示す、前記マクロブロックに関連するフラグの値を分析するための命令を備え、１／８ピクセル精度動きベクトルを使用して前記マクロブロックの全パーティションを復号するための命令をさらに備える、Ｃ４８に記載のコンピュータ可読記憶媒体。
[Ｃ５０]
前記符号化されたブロックが、参照フレームの一部分に関連して符号化され、前記信号値を分析するための前記命令が、
参照フレームインデックス値と、前記ブロックを符号化するための前記１／８ピクセル精度動きベクトルの前記使用とを示す可変長コードを分析することと、
前記参照フレームインデックス値を使用して前記参照フレームを識別することとを行うための命令を備える、Ｃ４８に記載のコンピュータ可読記憶媒体。
[Ｃ５１]
前記ブロックの隣接ブロックが１／８ピクセル精度動きベクトルを使用して符号化されたのか、または１／４ピクセル精度動きベクトルを使用して符号化されたのかに基づいて、前記ブロックの符号化コンテキストを判断するための命令をさらに備え、
前記参照フレームを識別するための前記命令が、前記判断された符号化コンテキストに対応するコードのセット中で前記参照フレームインデックス値を識別するための命令を備える、Ｃ５０に記載のコンピュータ可読記憶媒体。
[Ｃ５２]
前記符号化されたブロックが動きベクトル差分値を備え、前記ブロックを復号するための前記命令が、
前記ブロックの動き予測子を判断することと、
前記１／８ピクセル精度動きベクトルを計算するために、前記動き予測子と前記動きベクトル差分値との和を計算することと
を行うための命令を備える、Ｃ４８に記載のコンピュータ可読記憶媒体。
【図１】
0006042470.tif 000007
【図２】
0006042470.tif 000008
【図３】
0006042470.tif 000009
【図４】
0006042470.tif 000010
【図５】
0006042470.tif 000011
【図６】
0006042470.tif 000012
【図７】
0006042470.tif 000013