"ビデオデータを符号化する方法であって、前記方法が、ビデオデータのブロックに対して1/4ピクセル精度動きベクトルよりも1/8ピクセル精度動きベクトルの使用が好ましいと判断されたときに、前記1/8ピクセル精度動きベクトルを使用して前記ブロックを符号化することと、前記ブロックに対する前記1/8ピクセル精度動きベクトルの前記使用を示す信号値を生成することと、前記符号化されたブロックと前記信号値とを出力することとを備える、方法。前記信号値を生成することが、前記1/8ピクセル精度動きベクトルの前記使用を示すように前記ブロックに関連するフラグの値を設定することを備える、請求項1に記載の方法。前記ブロックがマクロブロックのパーティションを備え、前記信号値を生成することが、前記1/8ピクセル精度動きベクトルの前記使用を示すように前記マクロブロックに関連するフラグの値を設定することを備え、前記方法は、前記フラグが前記ブロックに対する1/8ピクセル精度動きベクトルの前記使用を示すときに、前記1/8ピクセル精度動きベクトルを使用して前記マクロブロックの全パーティションを符号化することをさらに備える、請求項1に記載の方法。前記ブロックを符号化することが、参照フレームの一部分に関連して前記ブロックを符号化することを備え、前記信号値を生成することが、参照フレームインデックス値と、前記ブロックを符号化するための前記1/8ピクセル精度動きベクトルの前記使用とを示す可変長コードを選択することを備え、前記参照フレームインデックス値が前記参照フレームを識別する、請求項1に記載の方法。前記参照フレームインデックス値が前記参照フレームの第1の参照フレームインデックス値を備え、前記第1の参照フレームインデックス値の長さが、前記参照フレームに関する1/4ピクセル精度動きベクトルの使用を示す第2の参照フレームインデックス値の長さよりも小さい、請求項4に記載の方法。前記可変長コードを選択することが、前記ブロックの隣接ブロックが1/8ピクセル精度動きベクトルを使用して符号化されたのか、または1/4ピクセル精度動きベクトルを使用して符号化されたのかに基づいて、前記ブロックの符号化コンテキストを判断することと、前記判断された符号化コンテキストに対応するコードのセットから前記可変長コードを選択することとを備える、請求項4に記載の方法。前記ブロックを符号化することが、潜在的な参照フレームのリスト中の直近の参照フレームを備える参照フレームの一部分に関連して前記ブロックを符号化することを備える、請求項1に記載の方法。前記ブロックを符号化することが、前記ブロックの前記1/8ピクセル精度動きベクトルを計算することと、前記ブロックの前記1/8ピクセル精度動きベクトルと動き予測子との間の差分を備える動きベクトル差分値を計算することとを備える、請求項1に記載の方法。前記動きベクトル差分値を計算することが、前記動き予測子を1/8ピクセル精度に量子化することと、前記ブロックの前記1/8ピクセル精度動きベクトルと前記量子化された動き予測子との間の前記差分を計算することとを備える、請求項8に記載の方法。ビデオデータを符号化するための装置であって、前記装置は、ビデオデータのブロックに対して1/4ピクセル精度動きベクトルよりも1/8ピクセル精度動きベクトルの使用が好ましいと判断されたときに、前記1/8ピクセル精度動きベクトルを使用して前記ブロックを符号化し、前記ブロックに対する前記1/8ピクセル精度動きベクトルの前記使用を示す信号値を生成するように構成されたビデオエンコーダを備える、装置。前記信号値を生成するために、前記ビデオエンコーダが、前記1/8ピクセル精度動きベクトルの前記使用を示すように前記ブロックに関連するフラグの値を設定するように構成された、請求項10に記載の装置。前記ブロックがマクロブロックのパーティションを備え、前記信号値を生成するために、前記ビデオエンコーダが、前記1/8ピクセル精度動きベクトルの前記使用を示すように前記マクロブロックに関連するフラグの値を設定するように構成され、前記ビデオエンコーダは、前記フラグが前記ブロックに対する1/8ピクセル精度動きベクトルの前記使用を示すときに、前記1/8ピクセル精度動きベクトルを使用して前記マクロブロックの全パーティションを符号化するように構成された、請求項10に記載の装置。前記ビデオエンコーダが、参照フレームの一部分に関連して前記ブロックを符号化するように構成され、前記信号値を生成するために、前記ビデオエンコーダが、参照フレームインデックス値と、前記ブロックを符号化するための前記1/8ピクセル精度動きベクトルの前記使用とを示す可変長コードを選択するように構成され、前記参照フレームインデックス値が前記参照フレームを識別する、請求項10に記載の装置。前記参照フレームインデックス値が前記参照フレームの第1の参照フレームインデックス値を備え、前記第1の参照フレームインデックス値の長さが、前記参照フレームに関する1/4ピクセル精度動きベクトルの使用を示す第2の参照フレームインデックス値の長さよりも小さい、請求項13に記載の装置。前記可変長コードを選択するために、前記ビデオエンコーダは、前記ブロックの隣接ブロックが1/8ピクセル精度動きベクトルを使用して符号化されたのか、または1/4ピクセル精度動きベクトルを使用して符号化されたのかに基づいて、前記ブロックの符号化コンテキストを判断し、前記判断された符号化コンテキストに対応するコードのセットから前記可変長コードを選択するように構成された、請求項13に記載の装置。前記ビデオエンコーダが、潜在的な参照フレームのリスト中の直近の参照フレームを備える参照フレームの一部分に関連して前記ブロックを符号化するように構成された、請求項10に記載の装置。前記ビデオエンコーダが、前記ブロックの前記1/8ピクセル精度動きベクトルを計算し、前記ブロックの前記1/8ピクセル精度動きベクトルと動き予測子との間の差分を備える動きベクトル差分値を計算するように構成された、請求項10に記載の装置。前記動きベクトル差分値を計算するために、前記ビデオエンコーダが、前記動き予測子を1/8ピクセル精度に量子化し、前記ブロックの前記1/8ピクセル精度動きベクトルと前記量子化された動き予測子との間の前記差分を計算するように構成された、請求項17に記載の装置。ビデオデータを符号化するための装置であって、前記装置が、ビデオデータのブロックに対して1/4ピクセル精度動きベクトルよりも1/8ピクセル精度動きベクトルの使用が好ましいと判断されたときに、前記1/8ピクセル精度動きベクトルを使用して前記ブロックを符号化するための手段と、前記ブロックに対する前記1/8ピクセル精度動きベクトルの前記使用を示す信号値を生成するための手段と、前記符号化されたブロックと前記信号値とを出力するための手段とを備える、装置。前記ブロックがマクロブロックのパーティションを備え、前記信号値を生成するための前記手段が、前記1/8ピクセル精度動きベクトルの前記使用を示すように前記マクロブロックに関連するフラグの値を設定するための手段を備え、前記フラグが前記ブロックに対する1/8ピクセル精度動きベクトルの前記使用を示すときに、前記1/8ピクセル精度動きベクトルを使用して前記マクロブロックの全パーティションを符号化するための手段をさらに備える、請求項19に記載の装置。前記ブロックを符号化するための前記手段が、参照フレームの一部分に関連して前記ブロックを符号化するための手段を備え、前記信号値を生成するための前記手段が、参照フレームインデックス値と、前記ブロックを符号化するための前記1/8ピクセル精度動きベクトルの前記使用とを示す可変長コードを選択するための手段を備え、前記参照フレームインデックス値が前記参照フレームを識別する、請求項19に記載の装置。前記可変長コードを選択するための前記手段が、前記ブロックの隣接ブロックが1/8ピクセル精度動きベクトルを使用して符号化されたのか、または1/4ピクセル精度動きベクトルを使用して符号化されたのかに基づいて、前記ブロックの符号化コンテキストを判断するための手段と、前記判断された符号化コンテキストに対応するコードのセットから前記可変長コードを選択するための手段とを備える、請求項21に記載の装置。前記ブロックを符号化するための前記手段が、潜在的な参照フレームのリスト中の直近の参照フレームを備える参照フレームの一部分に関連して前記ブロックを符号化するための手段を備える、請求項19に記載の装置。前記ブロックを符号化するための前記手段が、前記ブロックの前記1/8ピクセル精度動きベクトルを計算するための手段と、前記ブロックの前記1/8ピクセル精度動きベクトルと動き予測子との間の差分を備える動きベクトル差分値を計算するための手段とを備える、請求項19に記載の装置。前記動きベクトル差分値を計算するための前記手段が、前記動き予測子を1/8ピクセル精度に量子化するための手段と、前記ブロックの前記1/8ピクセル精度動きベクトルと前記量子化された動き予測子との間の前記差分を計算するための手段とを備える、請求項24に記載の装置。実行されると、ビデオデータのブロックに対して1/4ピクセル精度動きベクトルよりも1/8ピクセル精度動きベクトルの使用が好ましいと判断されたときに、前記1/8ピクセル精度動きベクトルを使用して前記ブロックを符号化することと、前記ブロックに対する前記1/8ピクセル精度動きベクトルの前記使用を示す信号値を生成することと、前記符号化されたブロックと前記信号値とを出力することとをプロセッサに行わせる命令を備えるコンピュータ可読記憶媒体。前記ブロックがマクロブロックのパーティションを備え、前記信号値を生成するための前記命令が、前記1/8ピクセル精度動きベクトルの前記使用を示すように前記マクロブロックに関連するフラグの値を設定するための命令を備え、前記方法は、前記フラグが前記ブロックに対する1/8ピクセル精度動きベクトルの前記使用を示すときに、前記1/8ピクセル精度動きベクトルを使用して前記マクロブロックの全パーティションを符号化することをさらに備える、請求項26に記載のコンピュータ可読記憶媒体。前記ブロックを符号化するための前記命令が、参照フレームの一部分に関連して前記ブロックを符号化するための命令を備え、前記信号値を生成するための前記命令が、参照フレームインデックス値と、前記ブロックを符号化するための前記1/8ピクセル精度動きベクトルの前記使用とを示す可変長コードを選択するための命令を備え、前記参照フレームインデックス値が前記参照フレームを識別する、請求項26に記載のコンピュータ可読記憶媒体。前記可変長コードを選択するための前記命令が、前記ブロックの隣接ブロックが1/8ピクセル精度動きベクトルを使用して符号化されたのか、または1/4ピクセル精度動きベクトルを使用して符号化されたのかに基づいて、前記ブロックの符号化コンテキストを判断することと、前記判断された符号化コンテキストに対応するコードのセットから前記可変長コードを選択することとを行うための命令を備える、請求項28に記載のコンピュータ可読記憶媒体。前記ブロックを符号化するための前記命令が、潜在的な参照フレームのリスト中の直近の参照フレームを備える参照フレームの一部分に関連して前記ブロックを符号化するための命令を備える、請求項26に記載のコンピュータ可読記憶媒体。前記ブロックを符号化するための前記命令が、前記ブロックの前記1/8ピクセル精度動きベクトルを計算することと、前記ブロックの前記1/8ピクセル精度動きベクトルと動き予測子との間の差分を備える動きベクトル差分値を計算することとを行うための命令を備える、請求項26に記載のコンピュータ可読記憶媒体。前記動きベクトル差分値を計算するための前記命令が、前記動き予測子を1/8ピクセル精度に量子化することと、前記ブロックの前記1/8ピクセル精度動きベクトルと前記量子化された動き予測子との間の前記差分を計算することとを行うための命令を備える、請求項31に記載のコンピュータ可読記憶媒体。ビデオデータを復号する方法であって、前記方法が、ビデオデータの符号化されたブロックと、ビデオデータの前記符号化されたブロックが1/8ピクセル精度動きベクトルを使用して符号化されたことを示す信号値とを受信することと、ビデオデータの前記符号化されたブロックが前記1/8ピクセル精度動きベクトルを使用して符号化されたと判断するために前記信号値を分析することと、前記信号値に基づいて、前記1/8ピクセル精度動きベクトルを使用してビデオデータの前記ブロックを復号することとを備える、方法。前記ブロックがマクロブロックのパーティションを備え、前記信号値を分析することが、前記1/8ピクセル精度動きベクトルの前記使用を示す、前記マクロブロックに関連するフラグの値を分析することを備え、前記方法が、1/8ピクセル精度動きベクトルを使用して前記マクロブロックの全パーティションを復号することをさらに備える、請求項33に記載の方法。前記符号化されたブロックが、参照フレームの一部分に関連して符号化され、前記信号値を分析することが、参照フレームインデックス値と、前記ブロックを符号化するための前記1/8ピクセル精度動きベクトルの前記使用とを示す可変長コードを分析することと、前記参照フレームインデックス値を使用して前記参照フレームを識別することとを備える、請求項33に記載の方法。前記ブロックの隣接ブロックが1/8ピクセル精度動きベクトルを使用して符号化されたのか、または1/4ピクセル精度動きベクトルを使用して符号化されたのかに基づいて、前記ブロックの符号化コンテキストを判断することをさらに備え、前記参照フレームを識別することが、前記判断された符号化コンテキストに対応するコードのセット中で前記参照フレームインデックス値を識別することを備える、請求項35に記載の方法。前記符号化されたブロックが動きベクトル差分値を備え、前記ブロックを復号することが、前記ブロックの動き予測子を判断することと、前記1/8ピクセル精度動きベクトルを計算するために、前記動き予測子と前記動きベクトル差分値との和を計算することとを備える、請求項33に記載の方法。ビデオデータを復号するための装置であって、前記装置が、ビデオデータの符号化されたブロックと、ビデオデータの前記符号化されたブロックが1/8ピクセル精度動きベクトルを使用して符号化されたことを示す信号値とを受信するための入力インターフェースと、ビデオデータの前記ブロックが前記1/8ピクセル精度動きベクトルを使用して符号化されたと判断するために前記信号値を分析し、前記信号値に基づいて、前記1/8ピクセル精度動きベクトルを使用してビデオデータの前記ブロックを復号するためのビデオデコーダとを備える、装置。前記ブロックがマクロブロックのパーティションを備え、前記信号値を分析するために、前記ビデオデコーダが、前記1/8ピクセル精度動きベクトルの前記使用を示す、前記マクロブロックに関連するフラグの値を分析するように構成され、前記ビデオデコーダが、1/8ピクセル精度動きベクトルを使用して前記マクロブロックの全パーティションを復号するように構成された、請求項38に記載の装置。前記符号化されたブロックが、参照フレームの一部分に関連して符号化され、前記信号値を分析するために、前記ビデオデコーダが、参照フレームインデックス値と、前記ブロックを符号化するための前記1/8ピクセル精度動きベクトルの前記使用とを示す可変長コードを分析し、前記参照フレームインデックス値を使用して前記参照フレームを識別するように構成された、請求項38に記載の装置。前記ビデオデコーダは、前記ブロックの隣接ブロックが1/8ピクセル精度動きベクトルを使用して符号化されたのか、または1/4ピクセル精度動きベクトルを使用して符号化されたのかに基づいて、前記ブロックの符号化コンテキストを判断するように構成され、前記参照フレームを識別するために、前記ビデオデコーダが、前記判断された符号化コンテキストに対応するコードのセット中の前記参照フレームインデックス値を識別するように構成された、請求項40に記載の装置。前記符号化されたブロックが動きベクトル差分値を備え、前記ブロックを復号するために、前記ビデオデコーダが、前記ブロックの動き予測子を判断し、前記1/8ピクセル精度動きベクトルを計算するために、前記動き予測子と前記動きベクトル差分値との和を計算するように構成された、請求項38に記載の装置。ビデオデータを復号するための装置であって、前記装置が、ビデオデータの符号化されたブロックと、ビデオデータの前記符号化されたブロックが1/8ピクセル精度動きベクトルを使用して符号化されたことを示す信号値とを受信するための手段と、ビデオデータの前記ブロックが前記1/8ピクセル精度動きベクトルを使用して符号化されたと判断するために前記信号値を分析するための手段と、前記信号値に基づいて、前記1/8ピクセル精度動きベクトルを使用してビデオデータの前記ブロックを復号するための手段とを備える、装置。前記ブロックがマクロブロックのパーティションを備え、前記信号値を分析するための前記手段が、前記1/8ピクセル精度動きベクトルの前記使用を示す、前記マクロブロックに関連するフラグの値を分析するための手段を備え、前記方法が、1/8ピクセル精度動きベクトルを使用して前記マクロブロックの全パーティションを復号することをさらに備える、請求項43に記載の装置。前記符号化されたブロックが、参照フレームの一部分に関連して符号化され、前記信号値を分析するための手段が、参照フレームインデックス値と、前記ブロックを符号化するための前記1/8ピクセル精度動きベクトルの前記使用とを示す可変長コードを分析するための手段と、前記参照フレームインデックス値を使用して前記参照フレームを識別するための手段とを備える、請求項43に記載の装置。前記ブロックの隣接ブロックが1/8ピクセル精度動きベクトルを使用して符号化されたのか、または1/4ピクセル精度動きベクトルを使用して符号化されたのかに基づいて、前記ブロックの符号化コンテキストを判断するための手段をさらに備え、前記参照フレームを識別するための前記手段が、前記判断された符号化コンテキストに対応するコードのセット中で前記参照フレームインデックス値を識別するための手段を備える、請求項45に記載の装置。前記符号化されたブロックが動きベクトル差分値を備え、前記ブロックを復号するための前記手段が、前記ブロックの動き予測子を判断するための手段と、前記1/8ピクセル精度動きベクトルを計算するために、前記動き予測子と前記動きベクトル差分値との和を計算するための手段とを備える、請求項43に記載の装置。実行されると、ビデオデータの符号化されたブロックと、ビデオデータの前記符号化されたブロックが1/8ピクセル精度動きベクトルを使用して符号化されたことを示す信号値とを受信することと、ビデオデータの前記ブロックが前記1/8ピクセル精度動きベクトルを使用して符号化されたと判断するために前記信号値を分析することと、前記信号値に基づいて、前記1/8ピクセル精度動きベクトルを使用してビデオデータの前記ブロックを復号することとをプロセッサに行わせる命令を備えるコンピュータ可読記憶媒体。前記ブロックがマクロブロックのパーティションを備え、前記信号値を分析するための前記命令が、前記1/8ピクセル精度動きベクトルの前記使用を示す、前記マクロブロックに関連するフラグの値を分析するための命令を備え、1/8ピクセル精度動きベクトルを使用して前記マクロブロックの全パーティションを復号するための命令をさらに備える、請求項48に記載のコンピュータ可読記憶媒体。前記符号化されたブロックが、参照フレームの一部分に関連して符号化され、前記信号値を分析するための前記命令が、参照フレームインデックス値と、前記ブロックを符号化するための前記1/8ピクセル精度動きベクトルの前記使用とを示す可変長コードを分析することと、前記参照フレームインデックス値を使用して前記参照フレームを識別することとを行うための命令を備える、請求項48に記載のコンピュータ可読記憶媒体。前記ブロックの隣接ブロックが1/8ピクセル精度動きベクトルを使用して符号化されたのか、または1/4ピクセル精度動きベクトルを使用して符号化されたのかに基づいて、前記ブロックの符号化コンテキストを判断するための命令をさらに備え、前記参照フレームを識別するための前記命令が、前記判断された符号化コンテキストに対応するコードのセット中で前記参照フレームインデックス値を識別するための命令を備える、請求項50に記載のコンピュータ可読記憶媒体。前記符号化されたブロックが動きベクトル差分値を備え、前記ブロックを復号するための前記命令が、前記ブロックの動き予測子を判断することと、前記1/8ピクセル精度動きベクトルを計算するために、前記動き予測子と前記動きベクトル差分値との和を計算することとを行うための命令を備える、請求項48に記載のコンピュータ可読記憶媒体。概して、本開示は、1/8ピクセルすなわち、1ピクセルの1/8精度を有する動きベクトルの使用をサポートするための技法について説明する。本開示中の1/8ピクセル精度という用語は、1ピクセルの1/8の精度、例えば、フルピクセル位置0/8、1ピクセルの1/8、1ピクセルの2/8すなわち1ピクセルの1/4、1ピクセルの3/8、1ピクセルの4/8すなわち1ピクセルの1/2、1ピクセルの5/8、1ピクセルの6/8すなわち1ピクセルの3/4、または1ピクセルの7/8のうちの1つを指すものとする。従来のH.264エンコーダおよびデコーダは、1/4ピクセル精度を有する動きベクトルをサポートする。いくつかの事例で、1/8ピクセル精度は1/4ピクセル精度に勝るいくつかの利点を提供し得る。但し、あらゆる動きベクトルを1/8ピクセル精度に符号化することは、非常に多くのコーディングビットを必要とし得、それは1/8ピクセル精度動きベクトルの利益を上回り得る。本開示の技法は、適切な場合に1/8ピクセル精度動きベクトルを使用することと、他の場合に標準的な1/4ピクセル精度動きベクトルを使用することと、特定のブロックに対してエンコーダが使用した精度をデコーダが判断し得るように、1/8ピクセル精度動きベクトルが使用されたときにそれらの使用をシグナリングすることとを含む。ビデオエンコーダは、代替的に動き予測子motionpredictorと呼ばれる予測子動きベクトルに関連してブロックの動きベクトルを符号化し得る。所与のブロックの動き予測子は、動きベクトルが符号化されるブロックに隣接するブロックの動きベクトルの中央値として選択され得る。概して、動きベクトルを符号化するために、ビデオエンコーダは動きベクトルと予測子との間の差分を計算する。1/8ピクセル精度動きベクトルを導入することによって、動きベクトルと予測子とは異なる精度を有し得る。符号化されるべき動きベクトルとそれの動き予測子との間の差分を適切に計算するために、ビデオエンコーダは、動きベクトルと動き予測子とが同じ精度を有することを保証し得る。本開示は、動き予測子に関連して動きベクトルを符号化するための様々な例示的な方法を提供する。一例で、ビデオエンコーダは、符号化のために全ての動きベクトルを1つの解像度に変換するように構成され得る。すなわち、符号化されるべき動きベクトルと予測子との間の差分を計算するために、エンコーダは、動きベクトルと動き予測子とをグローバル解像度に変換し得る。例えば、エンコーダは、差分を計算するために、全ての動きベクトルを1/4ピクセル精度に変換し得るか、または全ての動きベクトルを1/8ピクセル精度に変換し得る。別の例で、ビデオエンコーダは、動き予測子を、符号化されるべき動きベクトルと同じ解像度に量子化し得る。本開示はまた、特定の動きベクトルに対して1/4ピクセル精度が使用されたのか1/8ピクセル精度が使用されたのかをシグナリングするための技法を提供する。いくつかの例で、ビデオエンコーダは、フラグの値が、動きベクトルに対する1/8ピクセル精度の使用または1/4ピクセル精度の使用を示すように、あらゆる動きベクトルのために1ビットフラグを追加するように構成され得る。本開示は、1/8ピクセル精度動きベクトルの存在をシグナリングするための様々な他の方法も提案する。一例で、ビデオエンコーダは、各動きベクトルの精度をシグナリングするために1ビットフラグを使用し得るが、マクロブロックデータ自体を用いるのではなく、再設計された参照フレームインデックス値の一部としてフラグを含み得る。参照フレームインデックスは一般に可変長コードVLCに対応する。本開示は、1/4ピクセル精度または1/8ピクセル精度を示す1ビットフラグが参照フレームインデックス値を表す可変長コード中に含まれ得るように可変長コードを設計することを提案する。例えば、ビデオエンコーダは、潜在的な参照フレームインデックス値、並びに参照フレームのブロックを指す動きベクトルが1/8ピクセル精度を使用する可能性を考慮し得るコンテキスト適応型可変長コーディングCAVLCアルゴリズムを実行するように構成され得る。別の例では、フレームを符号化するときに、例えば、ref_idx0を有する最新の参照フレームが参照のために使用されたときのみ、動き解像度適応すなわち、1/4ピクセル精度または1/8ピクセル精度のいずれかを使用する能力が行われ得る。従って、この例では、最新の参照フレームすなわち、参照フレームのリスト中の直近の参照フレーム以外の参照フレームに関連してブロックが符号化されたときは、ブロックの動きベクトルは1/4ピクセル解像度のみを有し得、他の場合に、精度は、例えば、1ビットフラグによってシグナリングされ得るか、あるいはデフォルトとして1/8ピクセル精度を有すると推定され得る。本開示は、ブロックのコンテキストに基づいて、ブロックの動きベクトルが1/8ピクセル精度を使用したのか1/4ピクセル精度を使用したのかについての指示を変化させるための技法をさらに提供する。コンテキストは、隣接ブロックが、1/8ピクセル精度をもつ動きベクトルを含むか、または1/4ピクセル精度をもつ動きベクトルを含むかに対応し得る。隣接ブロックは、現在のブロックの上のブロックと現在のブロックの左のブロックとに対応し得る。コンテキストは、隣接ブロックの動きベクトルがすべて1/8ピクセル精度を使用するときと、隣接ブロックの動きベクトルがすべて1/4ピクセル精度を使用するときと、隣接ブロックの動きベクトルが1/8ピクセルと1/4ピクセル精度との混合を使用するときとに対応し得る。上記の状況すべて1/8精度、すべて1/4精度、または混合精度は、コード化されるべき現在のブロックの符号化コンテキストと呼ばれ得る。現在のブロックが隣接ブロックの動きベクトルと同じ精度の動きベクトルを使用することから恩恵を受け得るという認識において、本開示は、現在のブロックの符号化コンテキストごとに異なるコード例えば、可変長コードを使用するための技法を提供する。特定の符号化コンテキストのコードは、符号化コンテキストにおけるより可能性が高い精度が、相対的に短いコードを使用して示され、より可能性が低い精度は、相対的に長いコードを使用して示されるように設計され得る。図1は、動きベクトルに対して1/8ピクセル精度または1/4ピクセル精度のいずれかを利用し得る例示的なビデオ符号化および復号システム10を示すブロック図である。図1に示すように、システム10は、通信チャネル16を介して符号化ビデオを宛先デバイス14に送信するソースデバイス12を含む。ソースデバイス12および宛先デバイス14は、広範囲のデバイスのいずれかを備え得る。場合によっては、ソースデバイス12および宛先デバイス14は、いわゆるセルラー電話または衛星無線電話のワイヤレスハンドセットなどのワイヤレス通信デバイス、または通信チャネル16を介してビデオ情報を通信することができ、その場合、通信チャネル16がワイヤレスである任意のワイヤレスデバイスを備え得る。但し、動きベクトルに対する、1/8ピクセル精度と1/4ピクセル精度との間の選択と、この選択をシグナリングすることと、得られた動きベクトルを符号化することとに関係する本開示の技法は、必ずしもワイヤレス適用例またはワイヤレス設定に限定されるわけではない。例えば、これらの技法は、無線テレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、インターネットビデオ送信、記憶媒体上に符号化される符号化デジタルビデオ、または他のシナリオに適用され得る。従って、通信チャネル16は、符号化ビデオデータの送信に好適なワイヤレスまたはワイヤード媒体の任意の組合せを備え得る。図1の例で、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、変調器/復調器モデム22と、送信機24とを含む。宛先デバイス14は、受信機26と、モデム28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。本開示によれば、ソースデバイス12のビデオエンコーダ20は、動きベクトルに対する1/8ピクセル精度と1/4ピクセル精度との間の選択のため、この選択をシグナリングするため、および得られた動きベクトルを符号化するための技法を適用するように構成され得る。他の例で、ソースデバイスおよび宛先デバイスは他の構成要素または構成を含み得る。例えば、ソースデバイス12は、外部カメラなど、外部ビデオソース18からビデオデータを受信し得る。同様に、宛先デバイス14は、内蔵ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。図1の図示のシステム10は一例にすぎない。動きベクトルに対する1/8ピクセル精度と1/4ピクセル精度との間の選択のため、この選択をシグナリングするため、および得られた動きベクトルを符号化するための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実行され得る。概して本開示の技法はビデオ符号化デバイスによって実行されるが、本技法は、一般にコーデックと呼ばれるビデオエンコーダ/デコーダによっても実行され得る。さらに、本開示の技法はビデオプリプロセッサによっても実行され得る。ソースデバイス12および宛先デバイス14は、ソースデバイス12が宛先デバイス14に送信するためのコード化ビデオデータを生成するような、コーディングデバイスの例にすぎない。いくつかの例では、デバイス12、14の各々がビデオ符号化構成要素と復号構成要素とを含むので、デバイス12、14は、実質的に対称的に動作し得る。従って、システム10は、例えば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、またはビデオ電話のためのビデオデバイス12とビデオデバイス14との間の一方向または双方向のビデオ送信をサポートし得る。ソースデバイス12のビデオソース18は、ビデオカメラなどのビデオキャプチャデバイス、予めキャプチャされたビデオを含んでいるビデオアーカイブ、および/またはビデオコンテンツプロバイダからのビデオフィードを含み得る。さらなる代替として、ビデオソース18は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ発生ビデオとの組合せを発生し得る。場合によっては、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラ付き携帯電話またはビデオ電話を形成し得る。但し、上述のように、本開示で説明する技法は、一般にビデオコーディングに適用可能であり、ワイヤレスおよび/またはワイヤードアプリケーションに適用され得る。各場合において、キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ発生ビデオはビデオエンコーダ20によって符号化され得る。次いで、符号化ビデオ情報は、通信規格に従ってモデム22によって変調され、送信機24を介して宛先デバイス14に送信され得る。モデム22は、信号変調のために設計された様々なミキサ、フィルタ、増幅器または他の構成要素を含み得る。送信機24は、増幅器、フィルタ、および1つまたは複数のアンテナを含む、データを送信するために設計された回路を含み得る。宛先デバイス14の受信機26はチャネル16を介して情報を受信し、モデム28は情報を復調する。この場合も、ビデオ符号化プロセスは、動きベクトルに対して1/8ピクセル精度および1/4ピクセル精度の間で選択し、この選択をシグナリングし、得られた動きベクトルを符号化するために本明細書で説明する技法のうちの1つまたは複数を実装し得る。チャネル16を介して通信される情報は、ビデオエンコーダ20によって定義され、またビデオデコーダ30によって使用される、マクロブロックおよび他のコード化ユニット、例えば、GOPの特性および/または処理を記述するシンタックス要素を含むシンタックス情報を含み得る。ディスプレイデバイス32は、復号されたビデオデータをユーザに対して表示し、陰極線管CRT、液晶ディスプレイLCD、プラズマディスプレイ、有機発光ダイオードOLEDディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。図1の例で、通信チャネル16は、無線周波数RFスペクトルあるいは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体、あるいはワイヤレスおよびワイヤード媒体の任意の組合せを備え得る。通信チャネル16は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースのネットワークの一部を形成し得る。通信チャネル16は、一般に、ワイヤードまたはワイヤレス媒体の任意の好適な組合せを含む、ビデオデータをソースデバイス12から宛先デバイス14に送信するのに好適な任意の通信媒体、または様々な通信媒体の集合体を表す。通信チャネル16は、ソースデバイス12から宛先デバイス14への通信を可能にするのに有用なルータ、スイッチ、基地局、または任意の他の機器を含むことができる。ビデオエンコーダ20およびビデオデコーダ30は、代替的にMPEG-4、Part10、AdvancedVideoCodingAVCとも呼ばれるITU-TH.264規格など、ビデオ圧縮規格に従って動作し得る。但し、本開示の技法は、いかなる特定のコーディング規格にも限定されない。他の例には、MPEG-2およびITU-TH.263がある。図1には示されていないが、いくつかの態様で、ビデオエンコーダ20およびビデオデコーダ30は、それぞれオーディオエンコーダおよびデコーダと統合され得、適切なMUX-DEMUXユニット、または他のハードウェアおよびソフトウェアを含んで、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理し得る。適用可能な場合、MUX-DEMUXユニットはITUH.223マルチプレクサプロトコル、またはユーザデータグラムプロトコルUDPなどの他のプロトコルに準拠し得る。ITU-TH.264/MPEG-4AVC規格は、JointVideoTeamJVTとして知られる共同パートナーシップの成果として、ISO/IECMovingPictureExpertsGroupMPEGとともにITU-TVideoCodingExpertsGroupVCEGによって策定された。いくつかの態様で、本開示で説明する技法は、H.264規格に概して準拠するデバイスに適用され得る。H.264規格は、ITU-T研究グループによる2005年3月付けのITU-T勧告H.264AdvancedVideoCodingforgenericaudiovisualservicesに記載されており、本明細書ではH.264規格またはH.264仕様、あるいはH.264/AVC規格または仕様と呼ぶことがある。JointVideoTeamJVTはH.264/MPEG-4AVCへの拡張に取り組み続けている。ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサDSP、特定用途向け集積回路ASIC、フィールドプログラマブルゲートアレイFPGA、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなどの様々な好適なエンコーダ回路のいずれか、またはそれらの任意の組合せとして実装され得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれかは複合エンコーダ/デコーダコーデックの一部としてそれぞれのカメラ、コンピュータ、モバイルデバイス、加入者デバイス、ブロードキャストデバイス、セットトップボックス、サーバなどに統合され得る。ビデオシーケンスは、一般に一連のビデオフレームを含む。ピクチャグループGOPは、概して一連の1つまたは複数のビデオフレームを備える。GOPは、GOP中に含まれるいくつかのフレームを記述するシンタックスデータを、GOPのヘッダ中、GOPの1つまたは複数のフレームのヘッダ中、または他の場所に含み得る。各フレームは、それぞれのフレームの符号化モードについて説明するフレームシンタックスデータを含み得る。ビデオエンコーダ20は、一般にビデオデータを符号化するために、個々のビデオフレーム内のビデオブロックに対して動作する。ビデオブロックは、マクロブロック、マクロブロックのパーティション、あるいはブロックまたはマクロブロックの集合に対応することがある。ビデオブロックは、固定サイズまたは変動サイズを有し得、指定のコーディング規格に応じてサイズが異なり得る。各ビデオフレームは複数のスライスを含み得る。各スライスは複数のマクロブロックを含み得、それらはサブブロックとも呼ばれるパーティションに配置され得る。H.263、H.264、H.265、MPEG-2、およびMPEG-4、H.264/AVC高度ビデオコーディングなど、多くの普及しているビデオコーディング規格は、動き補償予測技法を利用する。イメージまたはビデオのフレームは複数のマクロブロックに区分され得、各マクロブロックはさらに区分され得る。Iフレーム中のマクロブロックは、空間ネイバーすなわち、Iフレームの他のブロックからの予測を使用することによって符号化され得る。PフレームまたはBフレーム中のマクロブロックは、それらの空間ネイバーからの予測空間的予測またはイントラモード符号化または他のフレーム中のエリアからの予測時間的予測またはインターモード符号化のいずれかを使用することによって符号化され得る。ビデオコーディング規格は、コーディング情報を表すためのシンタックス要素を定義する。例えば、マクロブロックごとに、H.264は、マクロブロックが区分される方法と予測の方法空間または時間とを表すmb_type値を定義する。ビデオエンコーダ20は、マクロブロックのパーティションごとに個別の動きベクトルを与え得る。例えば、ビデオエンコーダ20がフルマクロブロックを単一のパーティションとして使用することを選択した場合、ビデオエンコーダ20はマクロブロックに対して1つの動きベクトルを与え得る。別の例として、ビデオエンコーダ20が16×16ピクセルマクロブロックを4つの8×8パーティションに区分することを選択した場合、ビデオエンコーダ20は、4つの動きベクトル、すなわちパーティションごとに1つの動きベクトルを与え得る。パーティションまたはサブマクロブロックユニットごとに、ビデオエンコーダ20は、動きベクトル情報を表すmvd値とref_idx値とを与え得る。mvd動きベクトル差分値は、パーティションの符号化された動きベクトルを動き予測子に関連して表し得る。ref_idx参照インデックス値は、潜在的な参照ピクチャすなわち、参照フレームのリストへのインデックスを表し得る。一例として、H.264は、参照ピクチャの2つのリスト、すなわちリスト0とリスト1とを与える。ref_idx値は、2つのリストのうちの1つの中のピクチャを識別し得る。ビデオエンコーダ20は、ref_idx値が関係するリストを示す情報も与え得る。一例として、ITU-TH.264規格は、ルーマ成分については16×16、8×8、または4×4、およびクロマ成分については8×8など、様々なブロックパーティションサイズのイントラ予測をサポートし、ならびにルーマ成分については16×16、16×8、8×16、8×8、8×4、4×8および4×4、およびクロマ成分については対応するスケーリングされたサイズなど、様々なブロックサイズのインター予測をサポートする。本開示で、N×NとN×Nは、垂直寸法および水平寸法に関するブロックのピクセル寸法、例えば、16×16ピクセルまたは16×16ピクセルを指すために互換的に使用され得る。一般に、16×16ブロックは、垂直方向に16ピクセルを有しy=16、水平方向に16ピクセルを有するx=16。同様に、N×Nブロックは、一般に、垂直方向にNピクセルを有し、水平方向にNピクセルを有し、Nは、非負整数値を表す。ブロック中のピクセルは行と列に配置され得る。さらに、ブロックは、必ずしも水平方向と垂直方向とに同数のピクセルを有する必要はない。例えば、ブロックはN×Mピクセルを備え得、Mは、必ずしもNに等しいとは限らない。16×16よりも小さいブロックサイズは16×16マクロブロックのパーティションと呼ばれることがある。ビデオブロックは、ピクセル領域中のピクセルデータのブロックを備え得、あるいは、例えば、コード化ビデオブロックと予測ビデオブロックとのピクセル差分を表す残差ビデオブロックデータへの離散コサイン変換DCT、整数変換、ウェーブレット変換、または概念的に同様の変換などの変換の適用後の、変換領域中の変換係数のブロックを備え得る。場合によっては、ビデオブロックは、変換領域中の量子化変換係数のブロックを備え得る。より小さいビデオブロックは、より良好な解像度を与えることができ、高い詳細レベルを含むビデオフレームのロケーションのために使用され得る。一般に、マクロブロックおよび様々なパーティションはサブブロックと呼ばれることがあり、ビデオブロックと見なされ得る。さらに、スライスは、マクロブロックおよび/またはサブブロックなどの複数のビデオブロックであると見なされ得る。各スライスはビデオフレームの単独で復号可能なユニットであり得る。代替的に、フレーム自体が復号可能なユニットであり得るか、またはフレームの他の部分が復号可能なユニットとして定義され得る。コード化ユニットまたはコーディングユニットという用語は、フレーム全体、フレームのスライス、シーケンスとも呼ばれるピクチャグループGOPなど、ビデオフレームの単独で復号可能な任意のユニット、または適用可能なコーディング技法に従って定義される別の単独で復号可能なユニットを指すことがある。H.264規格は、1/4ピクセル精度を有する動きベクトルをサポートする。すなわち、H.264をサポートするエンコーダ、デコーダ、およびエンコーダ/デコーダコーデックは、フルピクセル位置または15個のフラクショナルピクセル位置のうちの1つのいずれかを指す動きベクトルを使用し得る。フラクショナルピクセル位置の値は、適応補間フィルタまたは固定補間フィルタを使用して判断され得る。いくつかの例で、H.264準拠デバイスは、1/2ピクセル位置の値を計算するために、係数[1,-5,20,20,-5,1]を有する6タップウィーナーフィルタWienerfiltersを使用し、次いで、残りの1/4ピクセル位置の値を判断するために双一次フィルタを使用し得る。適応補間フィルタは、補間フィルタ係数を適応的に定義するために符号化プロセス中に使用され得、従って、フィルタ係数は、適応補間フィルタを実行するときに経時的に変化し得る。本開示の技法によれば、ビデオエンコーダ20は、ビデオデータのブロックの動きベクトルを計算するときに、1/8ピクセル精度および1/4ピクセル精度の間で選択するように構成され得る。ビデオエンコーダ20は、動き推定プロセス中にこの選択を実行し得る。ビデオエンコーダ20は、動きベクトルに対して1/8ピクセル精度を選択するのか1/4ピクセル精度を選択するのかを判断するときに、様々な基準を評価し得る。例えば、ビデオエンコーダ20は、2つの符号化パス、すなわち1/4ピクセル精度を使用する第1のパスと1/8ピクセル精度を使用する第2のパスとを実行するように構成され得る。ビデオエンコーダ20は、1/4ピクセル精度および1/8ピクセル精度の間で選択するためにレート歪最適化プロセスを利用し得る。すなわち、ビデオエンコーダ20は、次いで、第1の符号化パスがより良好なレート歪値を与えるのか、または第2の符号化パスがより良好なレート歪値を与えるのかを判断し得る。ビデオエンコーダ20は、誤差とビットレートとの重み付けされた組合せとして1/8ピクセル精度または1/4ピクセル精度を使用するコストを計算し、より低いコストを与える精度を選択し得る。いくつかの例で、ビデオエンコーダ20は、2つのフル符号化パスを実行するのではなく、動きベクトル探索中にレート歪最適化を実行し得る。ビデオエンコーダ20がビデオデータの特定のブロックに対して1/8ピクセル精度を選択すると、ビデオエンコーダ20は、1/8ピクセル位置の値を補間するように構成され得る。いくつかの例で、ビデオエンコーダ20は、最初に、1/2ピクセル位置の値を補間し、次いで、1/4ピクセル位置の値を補間し、次いで、1/8ピクセル位置の値を補間し得る。ビデオエンコーダ20は、1/2ピクセル位置と、1/4ピクセル位置と、1/8ピクセル位置とに対して異なるタイプの補間フィルタを使用し得る。例えば、ビデオエンコーダ20は、様々なフラクショナルピクセル位置に対して、ウィーナーフィルタまたは双一次フィルタなど、適応補間フィルタおよび/または固定補間フィルタを使用し得る。ビデオエンコーダ20がビデオデータの特定のブロックに対して1/8ピクセル精度を選択すると、ビデオエンコーダ20は、そのブロックに対する1/8ピクセル精度の使用をシグナリングするように構成され得る。1/8ピクセル精度の使用または1/4ピクセル精度の使用をシグナリングすることによって、ビデオデコーダ30などのデコーダは、動きベクトルを適切に利用するために、動きベクトルが1/8ピクセル精度を使用するのか1/4ピクセル精度を使用するのかを判断することが可能であり得る。いくつかの例で、ビデオエンコーダ20は、対応する動きベクトルが1/8ピクセル精度を使用するのか1/4ピクセル精度を使用するのかを示す1ビットフラグを全ての動きベクトルに追加するように構成され得る。例えば、ビデオエンコーダ20は、動きベクトルに対して1/8ピクセル精度が使用されるときにフラグを設定し例えば、フラグの値を1に設定し、動きベクトルに対して1/8ピクセル精度が使用されないときにフラグをクリアし得る例えば、フラグの値を0に設定する。別の例で、ビデオエンコーダ20は、マクロブロックの全ての動きベクトルが1/8ピクセル精度を使用するのか1/4ピクセル精度を使用するのかを示す1ビットフラグをマクロブロックに追加するように構成され得る。マクロブロックは、1つまたは複数の動きベクトルに関連し得る。例えば、マクロブロックの各パーティションは、それ自体のそれぞれの動きベクトルを有し得る。従って、ビデオエンコーダ20は、マクロブロックレイヤにおいて、例えばマクロブロックヘッダ中で、1/8ピクセル精度の使用または1/4ピクセル精度の使用をシグナリングし得る。すなわち、マクロブロックの動きベクトルの各々が同じ精度を使用するように、マクロブロックの1ビットフラグは、そのマクロブロックの動きベクトルの各々が1/8ピクセル精度を使用するのか1/4ピクセル精度を使用するのかを示し得る。いくつかの例で、ビデオエンコーダ20は、同じ精度を有する動きベクトルを使用してフルフレームを符号化し得、例えば、1/4ピクセル精度を有する動きベクトルを使用して1つのフレームを符号化し、1/8ピクセル精度を有する動きベクトルを使用して別のフレームを符号化する。従って、ビデオエンコーダ20は、フレームの動きベクトルが1/4ピクセル精度を有するのか1/8ピクセル精度を有するのかをシグナリングするために、フレームレベルシグナリングを利用し得る。別の例として、ビデオエンコーダ20は、動きベクトルが1/4ピクセル精度を使用するのか1/8ピクセル精度を使用するのかについてのシグナリングを、動きベクトルの参照フレームインデックスref_idx値と組み合わせ得る。潜在的な参照フレームインデックス値は、この追加の情報に適応するために、例えば、コンテキスト適応型可変長コーディングCAVLC:contextadaptivevariablelengthcodingアルゴリズムを実行することによって再設計され得る。ビデオエンコーダ20は、参照フレームインデックス値を設計するために、特定の参照フレームを指す動きベクトルが1/4ピクセル精度よりも1/8ピクセル精度から恩恵を受ける可能性を示す統計をもつCAVLCアルゴリズムを実装するユニットまたはモジュールを提供し得る。このようにして、特定の参照フレームについて最も可能性が高い精度を示す参照フレームインデックス値は、その参照フレームについて可能性がより低い精度を示す参照フレームインデックス値よりも相対的に短い長さを有し得る。いくつかの例で、ビデオエンコーダ20はさらに、潜在的なコードワードのセットを生成し得、コードワードのセットの各々はブロックの様々なコンテキストに関係する。コンテキストは、隣接ブロックが1/8ピクセル精度を使用するのか1/4ピクセル精度を使用するのかに関係し得る。一例で、関係する隣接ブロックは、現在のブロックの上のブロックと現在のブロックの左のブロックとに対応し得る。従って、いくつかの例で、ビデオエンコーダ20は、動きベクトルの参照フレームインデックスのコードワードを選択し、4つの符号化コンテキストのうちの1つに対応する、コードワードの4つのセットのうちの1つから、動きベクトルが1/8ピクセル精度であるのか1/4ピクセル精度であるのかを示し得る。第1のコンテキストは、上のブロックと左のブロックの両方の動きベクトルが1/4ピクセル精度を使用する場合であり得る。第2のコンテキストは、上のブロックと左のブロックの両方の動きベクトルが1/8ピクセル精度を使用する場合であり得る。第3のコンテキストは、上のブロックの動きベクトルが1/8ピクセル精度を使用し、左のブロックの動きベクトルが1/4ピクセル精度を使用する場合であり得る。第4のコンテキストは、上のブロックの動きベクトルが1/4ピクセル精度を使用し、左のブロックの動きベクトルが1/8ピクセル精度を使用する場合であり得る。参照フレームインデックスのコードワードの4つのセットがあり得、各々が4つのコンテキストのうちの1つに対応する。従って、ビデオエンコーダ20は、動きベクトルのブロックが生じるコンテキストに対応するセットから、動きベクトルの参照フレームインデックスのコードワードを選定し得る。ビデオエンコーダ20は、1/8ピクセル精度動きベクトルを使用すべきかどうかの選択を、最新の参照フレームの分析に限定し得る。すなわち、ビデオエンコーダ20は、リスト0およびリスト1中の、参照フレームインデックス値0を有する参照フレームを分析するときのみ、1/8ピクセル精度を使用すべきかまたは1/4ピクセル精度を使用すべきかを判断し得る。ビデオエンコーダ20は、リスト0およびリスト1中の、非ゼロ参照フレームインデックス値を有する参照フレームに対して、常に1/4ピクセル精度を使用するように構成され得る。リスト0またはリスト1のいずれかの中の、参照フレームインデックス値0を有する参照フレームを分析するときに、ビデオエンコーダ20は、1/8ピクセル精度動きベクトルを使用すべきかまたは1/4ピクセル精度動きベクトルを使用すべきかを判断するために、上記で説明した基準または他の基準を分析するように構成され得る。さらに、ビデオエンコーダ20は、リスト0またはリスト1中の、0に等しい参照フレームインデックス値を有する参照フレームの一部分を指す動きベクトルに対する選択をシグナリングするように構成され得る。同様に、ビデオデコーダ30は、0以外の参照フレームインデックスを有する動きベクトルが1/4ピクセル精度であると仮定し、0に等しい参照フレームインデックス値を有する動きベクトルについて1/8ピクセル精度の使用かまたは1/4ピクセル精度の使用かを示すフラグを分析するように構成され得る。いくつかの例で、ビデオエンコーダ20は、参照フレームインデックス値0を有するフレームに加えて、またはその代替として、他の特定のフレームが1/8ピクセル精度を使用して符号化され得るように構成され得る。ビデオエンコーダ20は、動き予測子に関連してブロックの動きベクトルを符号化するようにさらに構成され得る。動き予測子は、既に符号化された隣接ブロックの動きベクトルの平均として選択され得る。現在のブロックの動きベクトルを符号化するために、ビデオエンコーダ20は動きベクトルと動き予測子との間の差分を計算し得る。いくつかの例で、ビデオエンコーダ20は、常に所定の動き解像度で動きベクトルを符号化し得る。すなわち、ビデオエンコーダ20は、常に1/8ピクセル精度または1/4ピクセル精度で動きベクトルを符号化し得る。いくつかの例で、ビデオエンコーダ20は、現在の動きベクトルと同じ動き解像度に動き予測子を量子化し得る。ビデオエンコーダ20は、これらの方法または別の方法のうちの所定の1つを使用するように構成され得、ビデオデコーダ30は、同様に、符号化された動きベクトルを復号するために同じ方法を使用するように構成され得る。代替的に、ビデオエンコーダ20は、単一のビットストリーム中の異なる動きベクトル符号化方法を利用するために、シーケンスパラメータセット、スライスパラメータセット、またはピクチャパラメータセット中の動きベクトルを符号化するために使用された予測方法をシグナリングし得る。予測データと残差データとを生成するためのイントラ予測コーディングまたはインター予測コーディングの後、および変換係数を生成するためのH.264/AVCで使用される4×4または8×8整数変換、あるいは離散コサイン変換DCTなどの任意の変換の後、変換係数の量子化が実行され得る。量子化は、一般に、係数を表すために使用されるデータ量をできるだけ低減するために変換係数を量子化するプロセスを指す。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。例えば、量子化中にnビット値がmビット値に切り捨てられ得、但し、nはmよりも大きい。量子化の後、コンテンツ適応型可変長コーディングCAVLC、コンテキスト適応型バイナリ算術コーディングCABAC、または別のエントロピーコーディング方法に従って、量子化されたデータのエントロピーコーディングが実行され得る。エントロピーコーディング用に構成された処理ユニットまたは別の処理ユニットは、量子化係数のゼロランレングスコーディング、および/またはコード化ブロックパターンCBP値、マクロブロックタイプ、コーディングモード、フレーム、スライス、マクロブロック、またはシーケンスなどのコード化ユニットの最大マクロブロックサイズなどのシンタックス情報の生成など、他の処理機能を実行し得る。ビデオエンコーダ20は、ブロックベースのシンタックスデータ、フレームベースのシンタックスデータ、スライスベースのシンタックスデータ、および/またはGOPベースのシンタックスデータなどのシンタックスデータを、例えば、フレームヘッダ、ブロックヘッダ、スライスヘッダ、またはGOPヘッダ中でビデオデコーダ30にさらに送り得る。GOPシンタックスデータは、それぞれのGOP中のいくつかのフレームを記述し得、フレームシンタックスデータは、対応するフレームを符号化するために使用される符号化/予測モードを示し得る。ビデオデコーダ30は、本開示の技法のいずれかに従って符号化される動きベクトルを含むビットストリームを受信し得る。従って、ビデオデコーダ30は、符号化された動きベクトルを解釈するように構成され得る。例えば、ビデオデコーダ30は、最初に、符号化された動きベクトルが、全ての動きベクトルを1つの動き解像度に保つ方法を使用して符号化されたのか、または動き予測子が動きベクトルの解像度に量子化される方法を使用して符号化されたのかを判断するために、シーケンスパラメータセットまたはスライスパラメータセットを分析し得る。次いで、ビデオデコーダ30は、動き予測子を判断し、符号化された動きベクトルの値を動き予測子に加算することによって、動き予測子に関連して動きベクトルを復号し得る。ビデオデコーダ30はまた、動きベクトル自体とともに含まれ得るか、または動きベクトルが対応する、マクロブロックなどのブロック中に含まれ得る、動きベクトルのフラグを分析することによって、動きベクトルが1/8ピクセル精度を使用するのか1/4ピクセル精度を使用するのかを判断し得る。いくつかの例で、ビデオデコーダ30は、例えば、動きベクトルが、リスト0またはリスト1中の、0以外の参照フレームインデックス値を有する参照ピクチャを指すときに、動きベクトルは1/4ピクセル精度を有すると推定し得る。いくつかの例で、ビデオデコーダ30は、参照フレームインデックス値のCAVLCコードワードに従って潜在的な参照フレームインデックス値のリスト中で識別され得る参照フレームインデックス値に基づいて、動きベクトルの精度を判断し得る。さらに、ビデオデコーダ30は、動きベクトルのブロックが生じるコンテキストを判断し得、コンテキストは、隣接ブロック例えば、現在のブロックの上および左の動きベクトルが1/8ピクセル精度を使用するのか1/4ピクセル精度を使用するのかに関係する。次いで、ビデオデコーダ30は、復号された動きベクトルを使用して、現在のブロックの残差値だけオフセットされた、現在のブロックの予測値を判断し得る。ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、適用可能な場合、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサDSP、特定用途向け集積回路ASIC、フィールドプログラマブルゲートアレイFPGA、ディスクリート論理回路、ソフトウェア、ハードウェア、ファームウェアなどの様々な好適なエンコーダまたはデコーダ回路のいずれか、またはそれらの任意の組合せとして実装され得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含められ得、そのいずれかは複合ビデオエンコーダ/デコーダCODECの一部として統合され得る。ビデオエンコーダ20および/またはビデオデコーダ30を含む装置は、集積回路、マイクロプロセッサ、および/またはセルラー電話などのワイヤレス通信デバイスを備え得る。図2は、1/8ピクセル精度または1/4ピクセル精度のいずれかを使用してブロックを選択的に符号化するための技法を実装し得るビデオエンコーダ20の一例を示すブロック図である。ビデオエンコーダ20は、マクロブロックあるいはマクロブロックのパーティションまたはサブパーティションを含むビデオフレーム内のブロックのイントラコーディングおよびインターコーディングを実行し得る。イントラ符号化は、空間的予測に依拠して、所与のビデオフレーム内のビデオの空間的冗長性を低減または除去する。インターコーディングは時間的予測を利用して、ビデオシーケンスの隣接フレーム内のビデオの時間的冗長性を低減または除去する。イントラモードIモードは、いくつかの空間ベースの圧縮モードのいずれかを指し、単方向予測Pモードまたは双方向予測Bモードなどのインターモードは、いくつかの時間ベースの圧縮モードのいずれかを指すことがある。インターモード符号化のための構成要素が図2に示されているが、ビデオエンコーダ20はイントラモード符号化のための構成要素をさらに含み得ることを理解されたい。但し、簡潔および明快のために、そのような構成要素は図示していない。図2に示すように、ビデオエンコーダ20は、符号化すべきビデオフレーム内の現在ビデオブロックを受信する。図2の例で、ビデオエンコーダ20は、動き補償ユニット44と、動き推定ユニット42と、参照フレームストア64と、加算器50と、変換ユニット52と、量子化ユニット54と、エントロピーコーディングユニット56とを含む。ビデオブロック再構成のために、ビデオエンコーダ20はまた、逆量子化ユニット58と、逆変換ユニット60と、加算器62とを含む。再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタ処理するデブロッキングフィルタ図2に図示せずをも含め得る。所望される場合、デブロッキングフィルタは、一般に、加算器62の出力をフィルタ処理するであろう。符号化プロセス中に、ビデオエンコーダ20はコーディングすべきビデオフレームまたはスライスを受信する。フレームまたはスライスは、複数のビデオブロックに分割され得る。動き推定ユニット42および動き補償ユニット44は、時間圧縮を行うために、1つまたは複数の参照フレーム中の1つまたは複数のブロックに対する受信したビデオブロックのインター予測コーディングを実行する。イントラ予測ユニット46は、空間圧縮を行うために、コーディングすべきブロックと同じフレームまたはスライス中の1つまたは複数の近傍ブロックに対する受信したビデオブロックのイントラ予測コーディングを実行し得る。モード選択ユニット40は、例えば、各モードにおいて生じる誤差結果に基づいて、コーディングモードのうちの1つ、すなわちイントラモードまたはインターモードを選択し得る。モード選択ユニット40がブロックに対してインターモード符号化を選択すると、解像度選択ユニット48はそのブロックの動きベクトルの解像度を選択し得る。例えば、解像度選択ユニット48は、そのブロックの動きベクトルに対して1/8ピクセル精度または1/4ピクセル精度を選択し得る。解像度選択ユニット48は、ブロックの動きベクトルに対して解像度を選択するための様々な基準を分析し得る。いくつかの例で、解像度選択ユニット48は、潜在的な参照フレームのリスト中の時間的に直近の参照フレームを指す動きベクトルのみに対して解像度選択を実行し得る。参照フレームがリスト中の直近のフレームでないときに、解像度選択ユニット48は、動きベクトルに対して1/4ピクセル精度を選択するように構成され得る。一例として、解像度選択ユニット48は、ブロックを符号化するために1/4ピクセル精度動きベクトルを使用することと、ブロックを符号化するために1/8ピクセル精度動きベクトルを使用することとの間の誤差差分を比較するように構成され得る。差分がしきい値を超えると、解像度選択ユニット48は、ブロックを符号化するために1/8ピクセル精度動きベクトルを選択し得る。解像度選択ユニット48はまた、インターモード予測プロセス中にブロックを符号化するときに、動きベクトルに対して1/8ピクセル精度を使用すべきかまたは1/4ピクセル精度を使用すべきかを判断するために、レート歪情報を評価するか、ビットバジェットbitbudgetを分析するか、または他のファクタを分析し得る。インターモード符号化されるべきブロックに対して1/8ピクセル精度または1/4ピクセル精度を選択した後、モード選択ユニットは、選択された精度を示すメッセージ例えば、信号を動き推定ユニット42に送り得る。動き推定ユニット42と動き補償ユニット44とは、高度に統合され得るが、概念的な目的のために別々に示してある。動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、例えば、現在のフレームまたは、他のコード化ユニット内のコーディングされている現在のブロックに対する予測参照フレームまたは、他のコード化ユニット内の予測ブロックの変位を示し得る。予測ブロックは、絶対値差分和SAD、差分2乗和SSD、または他の差分メトリックによって判断され得るピクセル差分に関して、コーディングすべきブロックにぴったり一致することがわかるブロックである。動きベクトルはまた、マクロブロックのパーティションの変位を示し得る。動き補償は、動き推定によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することに関与し得る。この場合も、いくつかの例で、動き推定ユニット42と動き補償ユニット44とは機能的に統合され得る。動き推定ユニット42は、ビデオブロックを参照フレームストア64中の参照フレームのビデオブロックと比較することによってインターコード化フレームのビデオブロックの動きベクトルを選択された精度で計算する。動き推定ユニット42または動き補償ユニット44は、参照フレームストア64中に含まれる参照フレームのフラクショナルピクセル位置の値を計算し得る。いくつかの例で、ビデオエンコーダ20の加算器62または別のユニットは、再構成されたブロックのフラクショナルピクセル位置の値を計算し、次いで、再構成されたブロックをフラクショナルピクセル位置の計算値とともに参照フレームストア64中に記憶し得る。動き補償ユニット44はまた、参照フレーム、例えば、IフレームまたはPフレームのサブ整数ピクセルを補間し得る。ビデオエンコーダ20の動き推定ユニット42、動き補償ユニット44、モード選択ユニット40、または別のユニットはまた、ブロックを符号化するために使用される動きベクトルについての1/4ピクセル精度の使用かまたは1/8ピクセル精度の使用かをシグナリングし得る。いくつかの例で、動き推定ユニット42は、対応する動きベクトルが1/8ピクセル精度を使用するのか1/4ピクセル精度を使用するのかを示す1ビットフラグを全ての動きベクトルに追加するように構成され得る。別の例で、動き推定ユニット42は、マクロブロックの全ての動きベクトルが1/8ピクセル精度を使用するのか1/4ピクセル精度を使用するのかを示す1ビットフラグをマクロブロックに追加するように構成され得る。別の例として、動き推定ユニット42は、動きベクトルが、1/4ピクセル精度を使用するのか1/8ピクセル精度を使用するのかについてのシグナリングを、動きベクトルの参照フレームインデックスref_idx値と組み合わせ得る。参照フレームインデックス値は、参照フレームストア64に記憶された参照フレームを識別し、動きベクトルが1/8ピクセルであるのか1/4ピクセル精度であるのかを示し得る。動き推定ユニット42は、参照フレームと精度の指示とをエントロピーコーディングユニット56に送り得、エントロピーコーディングユニット56は、符号化されるブロックの符号化コンテキストに対応する潜在的なコードワードのセットから参照フレームインデックス値を選択し得る。動き推定ユニット42は、さらに、ブロックの符号化コンテキストの指示をエントロピーコーディングユニット56に送り得る。動き推定ユニット42は、動き予測子に関連して動きベクトルを符号化するように構成され得る。動き推定ユニット42は、既に符号化された隣接ブロックの動きベクトルの平均として動き予測子を選択し得る。現在のブロックの動きベクトルを符号化するために、動き推定ユニット42は、動きベクトル差分値を形成するために、動きベクトルと動き予測子との間の差分を計算し得る。いくつかの例で、動き推定ユニット42は、常に所定の動き解像度で動きベクトルを符号化し得る。すなわち、動き推定ユニット42は、常に1/8ピクセル精度または1/4ピクセル精度で動きベクトルを符号化し得る。いくつかの例で、動き推定ユニット42は、符号化されるべき動きベクトルと同じ動き解像度に動き予測子を量子化し得る。ITUH.264規格では、潜在的な参照フレームのセットをリストと呼ぶ。従って、参照フレームストア64に記憶された参照フレームのセットは、参照フレームのリストに対応し得る。動き推定ユニット42は、参照フレームストア64からの1つまたは複数の参照フレームのブロックを現在のフレーム、例えば、PフレームまたはBフレームの符号化すべきブロックと比較する。参照フレームストア64中の参照フレームがサブ整数ピクセルの値を含むときに、動き推定ユニット42によって計算される動きベクトルは参照フレームのサブ整数ピクセルロケーションを参照し得る。動き推定ユニット42は、計算された動きベクトルをエントロピーコーディングユニット56と動き補償ユニット44とに送る。動きベクトルによって識別される参照フレームブロックは予測ブロックと呼ばれることがある。動き補償ユニット44は、符号化されるブロックに関連して参照フレームの予測ブロックの誤差値を計算する。動き補償ユニット44は、予測ブロックに基づいて予測データを計算し得る。ビデオエンコーダ20は、コーディングされている元のビデオブロックから、動き補償ユニット44からの予測データを減算することによって残差ビデオブロックを形成する。加算器50は、この減算演算を実行する1つまたは複数の構成要素を表す。変換ユニット52は、離散コサイン変換DCTまたは概念的に同様の変換などの変換を残差ブロックに適用し、残差変換係数値を備えるビデオブロックを生成する。変換ユニット52は、概念的にDCTと同様である、H.264規格によって定義される変換などの他の変換を実行し得る。ウェーブレット変換、整数変換、サブバンド変換または他のタイプの変換も使用され得る。いずれの場合も、変換ユニット52は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。変換は、残差情報をピクセル値領域から周波数領域などの変換領域に変換し得る。量子化ユニット54は、ビットレートをさらに低減するために残差変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。量子化の後、エントロピーコーディングユニット56が量子化変換係数をエントロピーコーディングする。例えば、エントロピーコーディングユニット56は、コンテンツ適応型可変長コーディングCAVLC、コンテキスト適応型バイナリ算術コーディングCABAC、または別のエントロピーコーディング技法を実行し得る。エントロピーコーディングユニット56によるエントロピーコーディングの後、符号化されたビデオは、別のデバイスに送信されるか、あるいは後で送信または検索するためにアーカイブされ得る。コンテキスト適応型バイナリ算術コーディングの場合、コンテキストは近傍マクロブロックに基づき得る。場合によっては、エントロピーコーディングユニット56またはビデオエンコーダ20の別のユニットは、エントロピーコーディングに加えて他のコーディング機能を実行するように構成され得る。例えば、エントロピーコーディングユニット56はマクロブロックおよびパーティションのCBP値を判断するように構成され得る。また、場合によっては、エントロピーコーディングユニット56は、マクロブロックまたはそれのパーティション中の係数のランレングスコーディングを実行し得る。特に、エントロピーコーディングユニット56は、マクロブロックまたはパーティション中の変換係数をスキャンするためにジグザグスキャンまたは他のスキャンパターンを適用し、さらなる圧縮のためにゼロのランを符号化し得る。エントロピーコーディングユニット56はまた、符号化ビデオビットストリーム中での送信のために適切なシンタックス要素とともにヘッダ情報を構成し得る。逆量子化ユニット58および逆変換ユニット60は、それぞれ逆量子化および逆変換を適用して、例えば、参照ピクチャリスト中の参照フレーム内の参照ブロックとして後で使用するために、ピクセル領域中で残差ブロックを再構成する。動き補償ユニット44は、残差ブロックを参照フレームストア64のフレームのうちの1つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット44はまた、再構成された残差ブロックに1つまたは複数の補間フィルタを適用して、動き推定において使用するための例えば、1/2ピクセル位置、1/4ピクセル位置、および/または1/8ピクセル位置のサブ整数ピクセル値を計算し得る。加算器62は、再構成された残差ブロックを、動き補償ユニット44によって生成された動き補償された予測ブロックに加算して、参照フレームストア64に記憶するための再構成されたビデオブロックを生成する。再構成されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするために動き推定ユニット42および動き補償ユニット44によって参照ブロックとして使用され得る。図3は、符号化されたビデオシーケンスを復号するビデオデコーダ30の一例を示すブロック図である。図3の例で、ビデオデコーダ30は、エントロピー復号ユニット70と、動き補償ユニット72と、イントラ予測ユニット74と、逆量子化ユニット76と、逆変換ユニット78と、参照フレームストア82と、加算器80とを含む。ビデオデコーダ30は、いくつかの例で、ビデオエンコーダ20図2に関して説明した符号化パスとは概して逆の復号パスを実行し得る。動き補償ユニット72は、エントロピー復号ユニット70から受信した動きベクトルに基づいて予測データを生成し得る。動き補償ユニット72は、ビットストリーム中で受信された動きベクトルを使用して、参照フレームストア82中の参照フレーム中の予測ブロックを識別し得る。本開示の技法によれば、受信された動きベクトルは1/8ピクセル精度または1/4ピクセル精度を有し得る。動き補償ユニット72は、特定の動きベクトルが1/8ピクセル精度を有するのか1/4ピクセル精度を有するのかを示す、符号化されたビットストリーム中に含まれる信号値を受信し、分析するように構成され得る。上記のように、信号値は、動きベクトルとともに含まれるフラグ、マクロブロックの全パーティションの動きベクトルの精度をシグナリングするマクロブロックレイヤフラグ、参照フレームインデックス値と、参照フレームインデックス値に対応する参照フレームの一部分を指す動きベクトルが1/8ピクセル精度を有するのか1/4ピクセル精度を有するのかとの両方を表す特別に設計された可変長コード、あるいは他のタイプのシグナリング値に対応し得る。可変長コードがそれぞれの動きベクトルの精度をシグナリングする場合、特定の動きベクトルの可変長コードは、動きベクトルの符号化コンテキストに固有のコードのセット中に含まれ得る。動きベクトルを復号するために、動き補償ユニット72は、符号化されたブロックの符号化コンテキストを判断するように構成され得る。符号化コンテキストは、隣接ブロックの動きベクトルが1/8ピクセル精度を有するのか1/4ピクセル精度を有するのかに対応し得る。動きベクトルはまた、符号化された動きベクトルに対応するブロックの動き予測子に関連して符号化され得る。動き補償ユニット72は、復号されるべきブロックに隣接するブロックの動きベクトルの中央値として動き予測子を判断し得る。動き予測子を判断した後、動き補償ユニット72は、符号化されたビデオビットストリームから動きベクトル差分値を抽出し、動き予測子に動きベクトル差分値を加算することによって、符号化された動きベクトルを復号し得る。いくつかの例で、動き補償ユニット72は、符号化された動きベクトルと同じ動き解像度に動き予測子を量子化し得る。いくつかの例で、動き補償ユニット72は、全符号化された動き予測子に対して同じ精度を使用し得る。さらに他の例で、動き補償ユニット72は、上記の方法のいずれかを使用し、シーケンスパラメータセット、スライスパラメータセット、またはピクチャパラメータセット中に含まれるデータを分析することによって、どの方法を使用すべきかを判断するように構成され得る。動きベクトルを復号した後、動き補償ユニット72は、参照フレームストア82の参照フレームから、動きベクトルによって識別された予測ブロックを抽出し得る。動きベクトルが、1/2ピクセル位置、1/4ピクセル位置、または1/8ピクセル位置などのフラクショナルピクセル位置を指す場合、動き補償ユニット72はフラクショナルピクセル位置の値を補間し得る。動き補償ユニット72は、これらの値を補間するために、適応補間フィルタまたは固定補間フィルタを使用し得る。さらに、動き補償ユニット72は、受信された符号化されたビデオビットストリームを介して、対応するエンコーダからどのフィルタを使用すべきかの指示と、場合によってはフィルタの係数とを受信し得る。イントラ予測ユニット74は、ビットストリーム中で受信されたイントラ予測モードを使用して、空間的に隣接するブロックから予測ブロックを形成し得る。逆量子化ユニット76は、ビットストリーム中で供給され、エントロピー復号ユニット70によって復号された量子化ブロック係数を逆量子化inversequantize、すなわち、逆量子化dequantizeする。逆量子化プロセスは、例えば、H.264復号規格によって定義された従来のプロセスを含み得る。逆量子化プロセスはまた、量子化の程度を判断し、同様に、適用すべき逆量子化の程度を判断するための、各マクロブロックについてエンコーダ50によって計算される量子化パラメータQPYの使用を含み得る。逆変換ユニット58は、逆変換、例えば逆DCT、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用して、ピクセル領域において残差ブロックを生成する。動き補償ユニット72は動き補償ブロックを生成し、場合によっては、補間フィルタに基づいて補間を実行する。サブピクセル精度をもつ動き推定に使用すべき補間フィルタの識別子をブロックのシンタックス要素中に含め得る。動き補償ユニット72は、ビデオブロックの符号化中にビデオエンコーダ20によって使用される補間フィルタを使用して、参照ブロックのサブ整数ピクセルの補間値を計算し得る。動き補償ユニット72は、受信したシンタックス情報に従って、ビデオエンコーダ20によって使用された補間フィルタを判断し、その補間フィルタを使用して予測ブロックを生成し得る。動き補償ユニット72は、シンタックス情報のいくつかを使用して、符号化ビデオシーケンスの1つまたは複数のフレームを符号化するために使用されるマクロブロックのサイズと、符号化ビデオシーケンスのフレームの各マクロブロックがどのように区分されるのかを記述するパーティション情報と、各パーティションがどのように符号化されるのかを示すモードと、各インター符号化マクロブロックまたはパーティションのための1つまたは複数の参照フレームと、符号化ビデオシーケンスを復号するための他の情報とを判断する。加算器80は、残差ブロックを、動き補償ユニット72またはイントラ予測ユニットによって生成される対応する予測ブロックと合計して、復号されたブロックを形成する。必要に応じて、ブロッキネスアーティファクトを除去するために、デブロッキングフィルタを適用して、復号ブロックをフィルタ処理することもある。復号されたビデオブロックは、次いで、参照フレームストア82に記憶され、参照フレームストア82は、参照ブロックをその後の動き補償に供給し、また、ディスプレイデバイス図1のディスプレイデバイス32など上での提示のために復号されたビデオを生成する。図4は、フルピクセル位置についてのフラクショナルピクセル位置を示す概念図である。特に、図4は、フルピクセルペル100についてのフラクショナルピクセル位置を示している。フルピクセル100は、1/2ピクセル位置102A~102C1/2ペル102と、1/4ピクセル位置104A~104L1/4ペル104と、1/8ピクセル位置106A~106AV1/8ペル106とに対応する。図4は、ブロックの1/8ピクセル位置106がオプションで含まれ得ることを示すために、破線の輪郭を使用してこれらの位置を示している。すなわち、動きベクトルが1/8ピクセル精度を有する場合、動きベクトルは、フルピクセル位置100、1/2ピクセル位置102、1/4ピクセル位置104、または1/8ピクセル位置106のいずれかをポイントし得る。但し、動きベクトルが1/4ピクセル精度を有する場合、動きベクトルは、フルピクセル位置100、1/2ピクセル位置102、または1/4ピクセル位置104のいずれかをポイントし得る。フルピクセル位置100におけるピクセルの値は、対応する参照フレームに含まれ得る。すなわち、フルピクセル位置100におけるピクセルの値は、概して、例えば、参照フレームが表示されたときに最終的にレンダリングされ表示される、参照フレーム中のピクセルの実効値に対応する。フラクショナルピクセル位置と総称される1/2ピクセル位置102、1/4ピクセル位置104、および1/8ピクセル位置106の値は、適応補間フィルタまたは固定補間フィルタ、例えば、様々なウィーナーフィルタ、双一次フィルタ、または他のフィルタなど、様々な数のタップ係数のフィルタを使用して補間され得る。概して、フラクショナルピクセル位置の値は、隣接するフルピクセル位置または前に判断されたフラクショナルピクセル位置の値に対応する1つまたは複数の隣接ピクセルから補間され得る。図5は、現在のブロック120の符号化コンテキストを判断するために使用され得るブロックを示す概念図である。図5の例は、現在のブロック120を、2つの隣接ブロック、上ネイバーブロック122および左ネイバーブロック124とともに示している。現在のブロック120は、現在符号化または復号されており、コーディングユニット例えば、ビデオエンコーダ20またはビデオデコーダ30がその符号化コンテキストを判断しているブロックに対応し得る。この例で、現在のブロック120の左上コーナーと、上ネイバーブロック122の左下コーナーと、左ネイバーブロック124の右上コーナーとは、各々接触している。多くのコーディングユニットは、フレームに対してビデオブロックを左から右および上から下に処理するように構成される。従って、現在のブロック120の符号化コンテキストは、上ネイバーブロック122および左ネイバーブロック124など、現在のブロック120の上および左のブロックに基づき得る。現在のブロック120は、マクロブロックまたはマクロブロックのパーティションに対応することがある。上ネイバーブロック122および左ネイバーブロック124は、各々別個のマクロブロックに対応し得る。すなわち、現在のブロック120は第1のマクロブロックの一部分に対応し得、上ネイバーブロック122は第2の異なるマクロブロックの一部分に対応し得、左ネイバーブロック124は第3の異なるマクロブロックの一部分に対応し得る。いくつかの例で、現在のブロック120は、現在のマクロブロックのパーティションに対応し得、上ネイバーブロック122は、現在のマクロブロックの上のマクロブロックの4×4ピクセル左下部分に対応し得、左ネイバーブロック124は、現在のマクロブロックの左のマクロブロックの4×4右上部分に対応し得る。いくつかの例で、現在のブロック120、上ネイバーブロック122、および左ネイバーブロック124は、同じまたは異なるマクロブロックの一部分であり得る。現在のブロック120の符号化コンテキストを判断するために、コーディングユニットは、上ネイバーブロック122および左ネイバーブロック124の動きベクトルが1/8ピクセル精度を有するのか1/4ピクセル精度を有するのかを分析し得る。上ネイバーブロック122の動きベクトルは、上ネイバーブロック122を含む、ビデオデータのより大きいブロックの動きベクトルであり得る。例えば、上ネイバーブロック122は、単一の動きベクトルを有する8×8ピクセルパーティション内に含まれ得る4×4ピクセル領域と定義され得る。同様に、左ネイバーブロック124の動きベクトルは、左ネイバーブロック124を含む、ビデオデータのより大きいブロックの動きベクトルであり得る。現在のブロック120の第1の符号化コンテキストは、上ネイバーブロック122の動きベクトルが1/4ピクセル精度を有するとき、および左ネイバーブロック124の動きベクトルも1/4ピクセル精度を有するときに対応し得る。現在のブロック120の第2の符号化コンテキストは、上ネイバーブロック122の動きベクトルが1/4ピクセル精度を有するとき、および左ネイバーブロック124の動きベクトルが1/8ピクセル精度を有するときに対応し得る。現在のブロック120の第3の符号化コンテキストは、上ネイバーブロック122の動きベクトルが1/8ピクセル精度を有するとき、および左ネイバーブロック124の動きベクトルも1/4ピクセル精度を有するときに対応し得る。現在のブロック120の第4の符号化コンテキストは、上ネイバーブロック122の動きベクトルが1/8ピクセル精度を有するとき、および左ネイバーブロック124の動きベクトルも1/8ピクセル精度を有するときに対応し得る。以下の表1に、上記で説明した例示的な符号化コンテキストを要約する。表1はまた、符号化コンテキストと、対応する符号化コンテキストにおける現在のブロック120の動きベクトルの参照フレームインデックス値を符号化するときに使用すべき可変長コードのセットとの間の例示的な関係を示している。表2~表5に、例示的な参照フレームインデックス値の例示的なコードワードのセットを示す。これらの例示的なコードワードのセットは、例証および説明の目的で示してある。概して、コードワードのセットは、例えば、特定の参照フレームインデックス値が生じる可能性がどの程度であるのか、並びに、動きベクトルが対応するコンテキストにおける参照フレームインデックス値に対応する参照フレームを指すときに、コンテキストにおいて1/8ピクセル精度動きベクトルまたは1/4ピクセル精度動きベクトルが使用される可能性がどの程度であるのかを示すデータに基づいて、潜在的なコンテキストの各々についてCAVLCアルゴリズムを実行することによって生成され得る。表2~表5の例は、異なるコンテキストにおける同じ参照フレームインデックス値の例示的なコードワードと、1/4ピクセル精度動きベクトルと1/8ピクセル精度動きベクトルの両方の例示的なコードワードを示している。表2は、上ネイバーブロック122と左ネイバーブロック124の両方の動きベクトルが1/4ピクセル精度を有する、第1の例示的なコンテキストのコードワードを示している。例えば、経験的テストを通して、これらの動きベクトルの両方が1/4ピクセル精度を有するときに、現在のブロック120の動きベクトルも1/4ピクセル精度を有する可能性が高くなり得ると判断され得る。従って、このコンテキストにおいて動きベクトルが1/4ピクセル精度を有することをも示す参照フレームインデックス値のコードワードは、動きベクトルが1/8ピクセル精度を有することをも示す参照値のコードワードよりも相対的に短くなり得る。他の例では、反対に、現在のブロック120の動きベクトルが、このコンテキストでは代わりに1/8ピクセル精度を有する可能性が高くなり得るか、またはこのコンテキストにおける1/4または1/8ピクセル精度の確率がほぼ同じになり得ることを、経験的テストが示し得る。いずれの場合も、同じ参照フレームのコンテキストにおいて、動きベクトルのより可能性が低い精度のコードワードに比較して、より可能性が高い精度のコードワードがより短くなることによって、ビットの節約が実現され得る。表3は、上ネイバーブロック122の動きベクトルが1/4ピクセル精度を有し、左ネイバーブロック124の動きベクトルが1/8ピクセル精度を有する第2の例示的なコンテキストのコードワードを示している。例えば、経験的テストを通して、これらの動きベクトルがこれらの精度を有するときに、現在のブロック120の動きベクトルは1/8ピクセル精度を有する可能性が高くなり得ると判断され得る。従って、このコンテキストにおいて動きベクトルが1/4ピクセル精度を有することをも示す参照フレームインデックス値のコードワードは、動きベクトルが1/8ピクセル精度を有することをも示す参照値のコードワードよりも相対的に長くなり得る。他の例では、反対に、現在のブロック120の動きベクトルが、このコンテキストでは代わりに1/4ピクセル精度を有する可能性が高くなり得るか、またはこのコンテキストにおける1/4または1/8ピクセル精度の確率がほぼ同じになり得ることを、経験的テストが示し得る。表4は、上ネイバーブロック122の動きベクトルが1/8ピクセル精度を有し、左ネイバーブロック124の動きベクトルが1/4ピクセル精度を有する第3の例示的なコンテキストのコードワードを示している。例えば、経験的テストを通して、これらの動きベクトルがこれらの精度を有するときに、現在のブロック120の動きベクトルは1/4ピクセル精度を有する可能性が高くなり得ると判断され得る。従って、このコンテキストにおいて動きベクトルが1/4ピクセル精度を有することをも示す参照フレームインデックス値のコードワードは、動きベクトルが1/8ピクセル精度を有することをも示す参照値のコードワードよりも相対的に短くなり得る。他の例では、反対に、現在のブロック120の動きベクトルが、このコンテキストでは代わりに1/8ピクセル精度を有する可能性が高くなり得るか、またはこのコンテキストにおける1/4または1/8ピクセル精度の確率がほぼ同じになり得ることを、経験的テストが示し得る。表5は、上ネイバーブロック122と左ネイバーブロック124の両方の動きベクトルが1/8ピクセル精度を有する第4の例示的なコンテキストのコードワードを示している。例えば、経験的テストを通して、これらの動きベクトルが両方とも1/8ピクセル精度を有するときに、現在のブロック120の動きベクトルは1/8ピクセル精度を有する可能性が高くなり得ると判断され得る。従って、このコンテキストにおいて動きベクトルが1/4ピクセル精度を有することをも示す参照フレームインデックス値のコードワードは、動きベクトルが1/8ピクセル精度を有することをも示す参照値のコードワードよりも相対的に長くなり得る。他の例では、反対に、現在のブロック120の動きベクトルが、このコンテキストでは代わりに1/4ピクセル精度を有する可能性が高くなり得るか、またはこのコンテキストにおける1/4または1/8ピクセル精度の確率がほぼ同じになり得ることを、経験的テストが示し得る。上記のように、表2~表5中のコードワードは例として与えたものにすぎない。概して、これらの様々なコンテキストのコードワードは、経験的テストによって収集された統計を使用してCAVLCアルゴリズムを実行することによって生成され得る。統計は、特定のコンテキストにおいて特定の参照フレームが動きベクトルによって識別される可能性、並びに対応するコンテキストにおいて、参照フレームを識別する動きベクトルが1/8ピクセル精度または1/4ピクセル精度を有する可能性に関係し得る。CAVLCアルゴリズムを実行すると、潜在的な参照フレームインデックス値ごとに、動きベクトルの1/4ピクセル精度および動きベクトルの1/8ピクセル精度とペアリングされたコードワードが生成され得る。特定の符号化コンテキストを使用して動きベクトルを符号化することによって、本開示の技法は、より可能性が高い参照フレームを指す動きベクトルのより可能性が高い精度では、より可能性が低い参照フレームを指す動きベクトルのより可能性が低い精度よりも、特定のコンテキストにおいてコードワードが短くなるという点で、コーディングビット節約を実現し得る。図6は、1/8ピクセル精度動きベクトルまたは1/4ピクセル精度動きベクトルのいずれかを使用してビデオデータのブロックを符号化すると共に、精度の選択をシグナリングするための例示的な方法を示すフローチャートである。説明のために、図6の方法について、図2のビデオエンコーダ20に関して説明する。但し、他のユニット、例えば、プロセッサ、ビデオエンコーダ、ビデオコーデック、制御ユニット、または他のハードウェア、ソフトウェア、またはファームウェア実装形態も、図6の方法を実行するように構成され得ることを理解されたい。初めに、ビデオエンコーダ20が、符号化されるべきビデオデータのブロックを受信する150。図6の例で、ブロックは、インターモード符号化されたフレームまたはピクチャ例えば、PフレームまたはBフレームのブロックに対応し得る。モード選択ユニット40は、ブロックを受信し、参照フレームストア64に記憶された参照フレームに関連してブロックの動き探索を実行するために、ブロックを動き推定ユニット42に転送し得る。動き推定ユニット42は、ブロックの動きベクトルを計算するために、動き探索アルゴリズムを実行し得る。動き推定ユニット42は、ブロックを符号化するために1/8ピクセル精度を有する動きベクトルを使用すべきか1/4ピクセル精度を有する動きベクトルを使用すべきかをさらに判断する152。いくつかの例で、動き推定ユニット42は、1/4ピクセル精度を有するブロックの第1の動きベクトルと、1/8ピクセル精度を有するブロックの第2の動きベクトルとを、例えば、2つの符号化パスにおいて計算し得る。第1の動きベクトルは第1の予測ブロックを参照し得、第2の動きベクトルは第2の予測ブロックを参照し得る。2つの予測ブロックは、必ずしも同じ参照フレームから生じる必要はない。動き補償ユニット44は、第1の予測ブロックと第2の予測ブロックとについて誤差値を計算し得る。例えば、動き補償ユニット44は、第1の予測ブロックと符号化されるべきブロックとの間の差分と、第2の予測ブロックと符号化されるべきブロックとの間の差分とを計算し得る。動き補償ユニット44は、第1の予測ブロックと第2の予測ブロックとについて、動きベクトルを計算する動き推定プロセス中にレート歪値を計算し得る。解像度選択ユニット48は、第1の予測ブロックと第2の予測ブロックとについて、動きベクトルのレート歪値を比較し、どちらの精度がより低いレート歪を与えるのかを判断し得る。他の例で、解像度選択ユニット48は、当業者によって判断され得るように、1/8ピクセル精度を有する動きベクトルを使用してブロックを符号化すべきか、または1/4ピクセル精度を有する動きベクトルを使用してブロックを符号化すべきかを他の方法で判断し得る。次いで、動き推定ユニット42は、選択された動きベクトルを符号化する154。例えば、動き推定ユニット42は、符号化されるべきブロックの動き予測子を選択し得る。動き予測子は、符号化されるべきブロックの隣接ブロックの動きベクトルの中央値に対応し得る。動き推定ユニット42は、動きベクトル差分値、例えば、選択された動きベクトルと動き予測子との間の差分を計算することによって、動きベクトルを符号化し得る。動き推定ユニット42は、いくつかの例で、動きベクトル差分値を計算する前に、選択された動きベクトルの解像度に動き予測子をさらに量子化し得る。いくつかの例で、動き推定ユニット42は、動きベクトル差分値が常に共通の解像度で、例えば、常に1/8ピクセル精度で、または常に1/4ピクセル精度で計算されることを保証し得る。ビデオエンコーダ20は、動きベクトル差分値がどのように計算されたのか例えば、動き予測子が動きベクトルと同じ精度に量子化されたのかどうか、または動きベクトル差分値がグローバル精度で計算されたのかどうかを示すシグナリング情報をさらに生成し得る。動きベクトルを符号化するために動きベクトル差分値を計算することに加えて、ビデオエンコーダ20は、符号化された動きベクトルの精度例えば、1/8ピクセルまたは1/4ピクセルをさらにシグナリングし得る。図6の例で、エントロピーコーディングユニット56は、動きベクトルによって識別された予測ブロックを含む参照フレームを識別する参照フレームインデックス値とともにこの信号を含み得る。この例で、エントロピーコーディングユニット56は、隣接ブロックが1/8ピクセル精度を有する動きベクトルを使用して符号化されたのか、または1/4ピクセル精度を有する動きベクトルを使用して符号化されたのかに基づいて、符号化されたブロックの符号化コンテキストを判断する156。次いで、エントロピーコーディングユニット56は、動きベクトルに対して選択された精度をシグナリングするために、判断されたコンテキストに対応するコードワードのセットから、参照フレームインデックス値および動きベクトルの精度のコードワードを判断し、従って、判断されたコンテキストを使用して選択された精度をシグナリングする158。エントロピーコーディングユニット56はまた、動きベクトル差分値をエントロピー符号化するために、動きベクトル差分値のコードワードを選択し得る。次いで、ビデオエンコーダ20が、符号化された動きベクトルおよび信号、例えば、動きベクトル差分のコードワードと、参照フレームインデックス値と、選択された精度のコードワードとを出力する160。図6の方法は、ブロックに対して、1/4ピクセル精度動きベクトルよりも1/8ピクセル精度動きベクトルの使用が好ましいと判断されたときに、1/8ピクセル精度動きベクトルを使用してビデオデータのブロックを符号化することと、ブロックに対する1/8ピクセル精度動きベクトルの使用を示す信号値を生成することと、符号化されたブロック、並びに信号値を出力することとを含むものとして要約され得る。図7は、符号化されたブロックの動きベクトルの精度を示す信号値を使用して、符号化されたブロックを復号するための例示的な方法を示すフローチャートである。説明のために、図7の方法について、図3のビデオデコーダ30に関して説明する。但し、他のユニット、例えば、プロセッサ、ビデオデコーダ、ビデオコーデック、制御ユニット、または他のハードウェア、ソフトウェアまたはファームウェア実装形態も、図7の方法を実行するように構成され得ることを理解されたい。初めに、エントロピー復号ユニット70が、ビデオデータの符号化されたブロックを受信する180。例えば、ビデオデコーダ30を含むクライアントデバイスは、ネットワークまたはブロードキャスト送信を介して、符号化されたビデオデータのストリームを受信し得るか、またはDVD、ブルーレイディスク、ハードドライブ、フラッシュドライブ、または他の記憶媒体などの記憶媒体からビデオデータを抽出し得る。符号化されたブロックは、動きベクトル差分値と、参照フレームインデックス値および動きベクトル差分値を使用して符号化された動きベクトルの精度の指示を表すコードワードと、残差値とを含み得る。エントロピー復号ユニット70は、例えば、動き補償ユニット72から、符号化されたブロックの符号化コンテキストの指示を受信し得る。動き補償ユニット72は、例えば、隣接ブロックが1/8ピクセル精度動きベクトルを使用して符号化されたのか、または1/4ピクセル精度動きベクトルを使用して符号化されたのかに基づいて、ブロックの符号化コンテキストを判断する182。次いで、エントロピー復号ユニット70は、ブロックの符号化コンテキストに対応する、コードワードのセット中のコードワードを識別することによって、参照フレームインデックと符号化された動きベクトルの精度とを判断する184。エントロピー復号ユニット70は、参照フレームインデックス値および動きベクトルの精度と、動きベクトル差分値と、残差値とを動き補償ユニット72およびイントラ予測ユニット74に与え得る。動き補償ユニット72は、動きベクトル差分値を使用して、判断された精度でブロックの動きベクトルを復号する186。例えば、動き補償ユニット72は、既に復号されている隣接ブロックの動きベクトルの中央値として、動きベクトルの動き予測子を判断し得る。いくつかの例で、動き補償ユニット72は、符号化されるべき動きベクトルの判断された精度に動き予測子を量子化し得る。いくつかの例で、動き補償ユニット72は、任意の動きベクトルを符号化するときに、同じ精度を使用するように構成され得る。いずれの場合も、動き補償ユニット72は、動きベクトル差分値と選択された動き予測子との和を計算することによって、動きベクトルを復号し得る。この和は、判断された精度、例えば、1/8ピクセル精度または1/4ピクセル精度のいずれかを有する動きベクトルを生成し得る。動き補償ユニット72は、復号された動きベクトルを使用してさらにブロックを復号する188。例えば、動き補償ユニット72は、復号された動きベクトルと参照フレームインデックス値とによって識別される、参照フレームストア82の参照フレーム中の予測ブロックを指すことがある。場合によって、動き補償ユニット72は、例えば、適応補間フィルタまたは固定補間フィルタを使用して、参照フレームのフラクショナルピクセル位置の値を補間し得る。さらに、動き補償ユニット72は、復号されたブロックを生成するために、受信された残差値を予測ブロックに加算し得る。ピクチャの全ブロックを復号した後、ビデオデコーダ30は、復号されたピクチャをビデオ出力にパスし得、ビデオ出力は、復号されたピクチャを表示し得る。ビデオデコーダ30はまた、後で受信された符号化されたピクチャの符号化されたブロックの参照フレームとして使用するために、復号されたピクチャを参照フレームストア82に記憶し得る。図7の方法は、ビデオデータの符号化されたブロックとビデオデータの符号化されたブロックが1/8ピクセル精度動きベクトルを使用して符号化されたことを示す信号値とを受信することと、ビデオデータのブロックが1/8ピクセル精度動きベクトルを使用して符号化されたことを判断するために信号値を分析することと、信号値に基づいて1/8ピクセル精度動きベクトルを使用してビデオデータのブロックを復号することとを含むものとして要約され得る。1つまたは複数の例で、説明した機能はハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、例えば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含むデータ記憶媒体または通信媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、1非一時的である有形コンピュータ可読記憶媒体、および2信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明する技法の実装のための命令、コードおよび/またはデータ構造を取り出すために1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。さらに、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。例えば、命令が、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。但し、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスクdiskおよびディスクdiscは、コンパクトディスクdiscCD、レーザディスクdisc、光ディスクdisc、デジタル多用途ディスクdiscDVD、フロッピーディスクdiskおよびブルーレイディスクdiscを含み、ディスクdiskは、通常、データを磁気的に再生し、ディスクdiscは、データをレーザで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。命令は、1つまたは複数のデジタル信号プロセッサDSPなどの1つまたは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路ASIC、フィールドプログラマブル論理アレイFPGA、または他の等価な集積回路またはディスクリート論理回路によって実行され得る。従って、本明細書で使用するプロセッサという用語は、前述の構造、または本明細書で説明する技法の実装に好適な他の構造のいずれかを指す。さらに、いくつかの態様で、本明細書で説明した機能は、符号化および復号のために構成された専用のハードウェアおよび/またはソフトウェアモジュール内に提供され得、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素中に十分に実装され得る。本開示の技法は、ワイヤレスハンドセット、集積回路ICまたはICのセット例えば、チップセットを含む、多種多様なデバイスまたは装置において実施され得る。本開示では、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要はない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明したように1つまたは複数のプロセッサを含んで、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作ハードウェアユニットの集合によって与えられ得る。様々な例について説明した。これらおよび他の例は以下の特許請求の範囲内に入る。"