(57)【特許請求の範囲】
【請求項１】
ビデオコーディングデバイスがピクセルのブロックをコーディングする方法であって、
前記ビデオコーディングデバイスがピクセルのブロックを取得することであって、ピクセルの前記ブロックが、ピクセルの前記ブロック内の整数ピクセル位置に対応する整数ピクセル値を含む、前記ビデオコーディングデバイスが取得することと、
前記ビデオコーディングデバイスが、第１のビット深度を有する第１の中間ピクセル値を生成するために、ピクセルの前記ブロックに関連する整数ピクセル値のグループに、前記ビデオコーディングデバイスが第１の補間フィルタ処理演算を適用することであって、前記第１の中間ピクセル値は第２のビット深度に関連する値の範囲内に制限され、前記第２のビット深度は前記第１のビット深度に関連するビット深度の値よりも小さいビット深度の値を備える、前記ビデオコーディングデバイスが適用することと、
前記ビデオコーディングデバイスが少なくとも部分的に右シフト演算を実行することによって、前記ビデオコーディングデバイスが第２の中間ピクセル値を生成するために、前記第１の中間ピクセル値に、前記ビデオコーディングデバイスが第１のオフセット値を加算することであって、前記ビデオコーディングデバイスが前記第１のオフセット値を加算することにより、前記第２の中間ピクセル値が、前記第２のビット深度に関連する値の前記範囲内の値になる、前記ビデオコーディングデバイスが加算することと、
前記ビデオコーディングデバイスが前記第２の中間ピクセル値を記憶することと、
前記ビデオコーディングデバイスが前記第２の中間ピクセル値を取り出すことと、
前記ビデオコーディングデバイスが取り出した第２の中間ピクセル値に、前記ビデオコーディングデバイスが第２のオフセット値を加算することと、
前記ビデオコーディングデバイスがサブピクセルロケーションの第１のピクセル値を計算するために、前記ビデオコーディングデバイスが加算した第２のオフセット値をもつ、前記ビデオコーディングデバイスが取り出した第２の中間ピクセル値を備える中間ピクセル値のグループに、前記ビデオコーディングデバイスが第２の補間フィルタ処理演算を適用することと、
前記ビデオコーディングデバイスが、前記サブピクセルロケーションの少なくとも前記第１のピクセル値に基づいて予測ブロックを生成することと
を備える、方法。
【請求項２】
前記ビデオコーディングデバイスが取り出した第２の中間ピクセル値に、前記ビデオコーディングデバイスが前記第２のオフセット値を加算することにより、前記第１の中間ピクセル値が生じる、請求項１に記載の方法。
【請求項３】
前記ビデオコーディングデバイスが右シフト演算を実行することが、前記ビデオコーディングデバイスが１ビット右シフト演算を実行することを備える、請求項１に記載の方法。
【請求項４】
前記第２のオフセット値は、大きさが前記第１のオフセット値に等しい、請求項１に記載の方法。
【請求項５】
前記第１の中間ピクセル値の前記第１のビット深度が１７ビットに等しい、請求項１に記載の方法。
【請求項６】
前記第２の中間ピクセル値の前記第２のビット深度が１６ビットに等しい、請求項１に記載の方法。
【請求項７】
前記第１のピクセル値が１７ビットのビット深度を有する、請求項１に記載の方法。
【請求項８】
前記ビデオコーディングデバイスが前記第１のピクセル値の前記ビット深度を１０ビットに低減すること
をさらに備える、請求項７に記載の方法。
【請求項９】
整数ピクセル値の前記グループの各整数ピクセル値が１０ビット整数値である、請求項１に記載の方法。
【請求項１０】
前記ビデオコーディングデバイスがビデオデコーダを備える、請求項１に記載の方法。
【請求項１１】
前記ビデオコーディングデバイスがビデオエンコーダを備える、請求項１に記載の方法。
【請求項１２】
ピクセルのブロックをコーディングするためのビデオコーディングデバイスであって、前記ビデオコーディングデバイスが、
ビデオデータを記憶するように構成されたメモリと、
ピクセルのブロックを取得することであって、ピクセルの前記ブロックが、ピクセルの前記ブロック内の整数ピクセル位置に対応する整数ピクセル値を含む、取得することと、
第１のビット深度を有する第１の中間ピクセル値を生成するために、ピクセルの前記ブロックに関連する整数ピクセル値のグループに第１の補間フィルタ処理演算を適用することであって、前記第１の中間ピクセル値は第２のビット深度に関連する値の範囲内に制限され、前記第２のビット深度は前記第１のビット深度に関連するビット深度の値よりも小さいビット深度の値を備える、適用することと、
少なくとも部分的に右シフト演算を実行することによって第２の中間ピクセル値を生成するために、前記第１の中間ピクセル値に第１のオフセット値を加算することであって、前記第１のオフセット値を加算することにより、前記第２の中間ピクセル値が、前記第２のビット深度に関連する値の前記範囲内の値になる、加算することと、
前記第２の中間ピクセル値を記憶することと、
前記第２の中間ピクセル値を取り出すことと、
前記取り出された第２の中間ピクセル値に第２のオフセット値を加算することと、
サブピクセルロケーションの第１のピクセル値を計算するために、前記加算された第２のオフセット値をもつ前記取り出された第２の中間ピクセル値を備える中間ピクセル値のグループに第２の補間フィルタ処理演算を適用することと、
前記サブピクセルロケーションの少なくとも前記第１のピクセル値に基づいて予測ブロックを生成することと
を行うように構成されたビデオプロセッサ
を備える、ビデオコーディングデバイス。
【請求項１３】
前記加算により前記第１の中間ピクセル値が生じるように、前記ビデオプロセッサは、前記取り出された第２の中間ピクセル値に前記第２のオフセット値を加算するように構成される、請求項１２に記載のビデオコーディングデバイス。
【請求項１４】
前記ビデオプロセッサは、１ビット右シフト演算を実行するようにさらに構成される、請求項１２に記載のビデオコーディングデバイス。
【請求項１５】
前記第２のオフセット値は、大きさが前記第１のオフセット値に等しい、請求項１２に記載のビデオコーディングデバイス。
【請求項１６】
前記第１の中間ピクセル値の前記第１のビット深度が１７ビットに等しい、請求項１２に記載のビデオコーディングデバイス。
【請求項１７】
前記第２の中間ピクセル値の前記第２のビット深度が１６ビットに等しい、請求項１２に記載のビデオコーディングデバイス。
【請求項１８】
前記第１のピクセル値が１７ビットのビット深度を有する、請求項１２に記載のビデオコーディングデバイス。
【請求項１９】
前記ビデオプロセッサが、前記第１のピクセル値の前記ビット深度を１０ビットに低減するようにさらに構成された、請求項１８に記載のビデオコーディングデバイス。
【請求項２０】
整数ピクセル値の前記グループの各整数ピクセル値が１０ビット整数値である、請求項１２に記載のビデオコーディングデバイス。
【請求項２１】
前記ビデオプロセッサがビデオデコーダを備える、請求項１２に記載のビデオコーディングデバイス。
【請求項２２】
前記ビデオプロセッサがビデオエンコーダを備える、請求項１２に記載のビデオコーディングデバイス。
【請求項２３】
前記ビデオコーディングデバイスが、
マイクロプロセッサと、
前記ビデオプロセッサを含むワイヤレス通信デバイスと
のうちの少なくとも１つを備える、請求項１２に記載のビデオコーディングデバイス。
【請求項２４】
ピクセルのブロックをコーディングするための装置であって、
ピクセルのブロックを取得するための手段であって、ピクセルの前記ブロックが、ピクセルの前記ブロック内の整数ピクセル位置に対応する整数ピクセル値を含む、取得するための手段と、
第１のビット深度を有する第１の中間ピクセル値を生成するために、ピクセルの前記ブロックに関連する整数ピクセル値のグループに第１の補間フィルタ処理演算を適用するための手段であって、前記第１の中間ピクセル値は第２のビット深度に関連する値の範囲内に制限され、前記第２のビット深度は前記第１のビット深度に関連するビット深度の値よりも小さいビット深度の値を備える、適用するための手段と、
少なくとも部分的に右シフト演算を実行することによって第２の中間ピクセル値を生成するために、前記第１の中間ピクセル値に第１のオフセット値を加算するための手段であって、前記第１のオフセット値を加算することにより、前記第２の中間ピクセル値が、前記第２のビット深度に関連する値の前記範囲内の値になる、加算するための手段と、
前記第２の中間ピクセル値を記憶するための手段と、
前記第２の中間ピクセル値を取り出すための手段と、
前記取り出された第２の中間ピクセル値に第２のオフセット値を加算するための手段と、
サブピクセルロケーションの第１のピクセル値を計算するために、前記加算された第２のオフセット値をもつ前記取り出された第２の中間ピクセル値を備える中間ピクセル値のグループに第２の補間フィルタ処理演算を適用するための手段と、
前記サブピクセルロケーションの少なくとも前記第１のピクセル値に基づいて予測ブロックを生成するための手段と
を備える、装置。
【請求項２５】
実行されたとき、１つまたは複数のプロセッサに、
ピクセルのブロックを取得することであって、ピクセルの前記ブロックが、ピクセルの前記ブロック内の整数ピクセル位置に対応する整数ピクセル値を含む、取得することと、
第１のビット深度を有する第１の中間ピクセル値を生成するために、ピクセルの前記ブロックに関連する整数ピクセル値のグループに第１の補間フィルタ処理演算を適用することであって、前記第１の中間ピクセル値は第２のビット深度に関連する値の範囲内に制限され、前記第２のビット深度は前記第１のビット深度に関連するビット深度の値よりも小さいビット深度の値を備える、適用することと、
少なくとも部分的に右シフト演算を実行することによって第２の中間ピクセル値を生成するために、前記第１の中間ピクセル値に第１のオフセット値を加算することであって、前記第１のオフセット値を加算することにより、前記第２の中間ピクセル値が、前記第２のビット深度に関連する値の前記範囲内の値になる、加算することと、
前記第２の中間ピクセル値を記憶することと、
前記第２の中間ピクセル値を取り出すことと、
前記取り出された第２の中間ピクセル値に第２のオフセット値を加算することと、
サブピクセルロケーションの第１のピクセル値を計算するために、前記加算された第２のオフセット値をもつ前記取り出された第２の中間ピクセル値を備える中間ピクセル値のグループに第２の補間フィルタ処理演算を適用することと、
前記サブピクセルロケーションの少なくとも前記第１のピクセル値に基づいて予測ブロックを生成することと
を行わせる命令を記憶するコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、各々の内容全体が参照により本明細書に組み込まれる、２０１１年７月１日に出願された米国仮出願第６１／５０４，１４９号、２０１１年７月８日に出願された米国仮出願第６１／５０６，０１６号、２０１１年７月９日に出願された米国仮出願第６１／５０６，０５９号、２０１１年７月１３日に出願された米国仮出願第６１／５０７，５６４号、および２０１１年１０月１９日に出願された米国仮出願第６１／５４９，１３１号に対する優先権を主張する。
【０００２】
本開示は、ビデオコーディングに関する。
【背景技術】
【０００３】
デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、デジタルカメラ、デジタル記録デバイス、ビデオゲームデバイス、ビデオゲームコンソール、セルラー電話または衛星無線電話、スマートフォンなどを含む、広範囲にわたるデバイスに組み込まれ得る。デジタルビデオデバイスは、デジタルビデオ情報をより効率的に送信および受信するために、ＭＰＥＧ−２、ＭＰＥＧ−４、またはＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４、Ｐａｒｔ１０、Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＡＶＣ）によって定義された規格に記載されているビデオ圧縮技法などの、ビデオ圧縮技法を実装する。ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために空間的予測および／または時間的予測を実行し得る。
【０００４】
ブロックベースのインターコーディングは、ビデオシーケンスの連続するコード化ユニットのビデオブロック間の時間的冗長性を低減または除去するために時間的予測を利用する、非常に有用なコーディング技法である。コード化ユニットは、ビデオフレーム、ビデオフレームのスライス、ピクチャのグループ、または符号化ビデオブロックの別の定義されたユニットを備え得る。インターコーディングの場合、ビデオエンコーダは、２つ以上の隣接するコード化ユニットの対応するビデオブロックの移動を追跡するために動き推定および動き補償を実行する。動き推定は、１つまたは複数の参照フレームまたは他のコード化ユニット中の対応する予測ビデオブロックに対するビデオブロックの変位を示す、動きベクトルを生成する。動き補償は、その動きベクトルを使用して、１つまたは複数の参照フレームまたは他のコード化ユニットから予測ビデオブロックを生成する。動き補償の後、コーディングされている元のビデオブロックから予測ビデオブロックを減算することによって、残差ビデオブロックが形成される。
【０００５】
ビデオエンコーダはまた、残差ブロックの通信に関連するビットレートをさらに低減するために、変換、量子化およびエントロピーコーディングプロセスを適用し得る。変換技法は、離散コサイン変換（ＤＣＴ）または概念的に同様のプロセスを備え得る。代替的に、ウェーブレット変換、整数変換、または他のタイプの変換が使用され得る。ＤＣＴプロセスでは、一例として、ピクセル値のセットが、周波数領域におけるピクセル値のエネルギーを表し得る変換係数（transform coefficient）に変換される。量子化は、変換係数に適用され、一般に、所与の変換係数に関連するビット数を低減するプロセスを伴う。エントロピーコーディングは、一連のコーディングモード、動き情報、コード化ブロックパターン、および量子化変換係数をまとめて圧縮する１つまたは複数のプロセスを備える。エントロピーコーディングの例には、限定はしないが、コンテンツ適応型可変長コーディング（ＣＡＶＬＣ：content adaptive variable length coding）およびコンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ：context adaptive binary arithmetic coding）がある。
【０００６】
コード化ビデオブロックは、予測ブロックを生成または識別するために使用され得る予測情報と、コーディングされているブロックと予測ブロックとの間の差を示す残差データブロックとによって表され得る。予測情報は、予測データブロックを識別するために使用される１つまたは複数の動きベクトルを備え得る。動きベクトルが与えられれば、デコーダは、残差をコーディングするために使用された予測ブロックを再構成することができる。したがって、残差ブロックのセットと動きベクトルのセット（場合によってはいくつかの追加のシンタックス）とが与えられれば、デコーダは、最初に符号化されたビデオフレームを再構成することができる。連続するビデオフレームまたは他のタイプのコード化ユニットはしばしば極めて類似しているので、動き推定および動き補償に基づくインターコーディングは極めて良好な圧縮を達成することができる。符号化ビデオシーケンスは、残差データブロック、動きベクトル、場合によっては他のタイプのシンタックスを備え得る。
【０００７】
インターコーディングにおいて達成され得る圧縮レベルを改善するために、補間技法が開発されている。たとえば、ビデオブロックをコーディングするために使用される、動き補償中に生成された予測データは、動き推定において使用されるビデオフレームまたは他のコード化ユニットのビデオブロックのピクセルから補間され得る。補間は、予測１／２ピクセル（１／２ペル）値と予測１／４ピクセル（１／４ペル）値とを生成するためにしばしば実行される。１／２ペル値と１／４ペル値とはサブピクセルロケーションに関連する。ビデオシーケンス中の分数移動(fractional movement)をキャプチャするために、分数動きベクトル(fractional motion vectors)を使用して、ビデオブロックをサブピクセル解像度で識別し、それによって、整数ビデオブロックよりもコーディングされているビデオブロックに類似している予測ブロックを与え得る。
【発明の概要】
【０００８】
本開示では、ビデオ符号化および／または復号プロセスの予測段階中にエンコーダおよびデコーダによって適用されるフィルタ処理技法について説明する。ピクセルデータは、一般に、一連のピクセル値（たとえば、ルミナンス値および／またはクロミナンス値）として表される。これらのピクセル値は、しばしば８ビット値または１０ビット値のいずれかであるが、他のビット深度も使用され得る。補間フィルタ処理は、一般に、ピクセル値を使用して一連の乗算演算および加算演算を実行することを伴う。これらの乗算演算および加算演算により、いくつかの事例では、１０ビットピクセル値を用いた補間フィルタ処理は、１７ビットである中間値を生じる。しかしながら、レジスタおよび他のコンピュータ構成要素は一般に１６ビットまたは３２ビットの単位で動作するので、１７ビット値は望ましくないことがある。これらの中間値は１７ビットであり得るが、これらの１７ビット値によってカバーされる値の範囲は依然として１６ビットのみであり得る。したがって、本開示では、中間値のビット深度を低減するために中間ピクセル値にオフセットを適用するための技法について説明する。その場合、中間値は、低減されたビット深度で記憶され得る。将来の計算のために取り出されたとき、オフセットは、より低い精度値が記憶されても、より高い精度値を使用してその計算が実行されるように、中間値に再加算され得る。したがって、本開示の技法は、いくつかの事例では、効率的に記憶され得る中間値を維持すると同時に、中間値のビット深度を低減することに関連する精度の損失を最小限に抑えることによって、コーディングシステムの効率を改善し得る。
【０００９】
一例では、方法は、ピクセルのブロックを取得することであって、ピクセルのブロックが、ピクセルのブロック内の整数ピクセル位置に対応する整数ピクセル値を含む、取得することと、第１の中間ピクセル値を生成するために整数ピクセル値のグループに第１のフィルタ処理演算を適用することと、第２の中間ピクセル値を生成するために第１の中間ピクセル値に第１のオフセットを加算することであって、第１のオフセットを加算することにより、第２の中間値が、第１の中間ピクセル値よりも小さいビット深度を有する、加算することと、第２の中間ピクセル値を記憶することと、第２の中間ピクセル値を取り出すことと、取り出された第２の中間値に第２のオフセットを加算することと、サブピクセルロケーションの第１のピクセル値を計算するために、加算された第２のオフセットをもつ取り出された第２の中間ピクセル値を備える中間ピクセル値のグループに第２のフィルタ処理演算を適用することと、サブピクセルロケーションの少なくとも第１のピクセル値に基づいて予測ブロックを生成することとを含む。
【００１０】
別の例では、ビデオコーディングデバイスは、ピクセルのブロックを取得することであって、ピクセルのブロックが、ピクセルのブロック内の整数ピクセル位置に対応する整数ピクセル値を含む、取得することと、第１の中間ピクセル値を生成するために整数ピクセル値のグループに第１のフィルタ処理演算を適用することと、第２の中間ピクセル値を生成するために第１の中間ピクセル値に第１のオフセットを加算することであって、第１のオフセットを加算することにより、第２の中間値が、第１の中間ピクセル値よりも小さいビット深度を有する、加算することと、第２の中間ピクセル値を記憶することと、第２の中間ピクセル値を取り出すことと、取り出された第２の中間値に第２のオフセットを加算することと、サブピクセルロケーションの第１のピクセル値を計算するために、加算された第２のオフセットをもつ取り出された第２の中間ピクセル値を備える中間ピクセル値のグループに第２のフィルタ処理演算を適用することと、サブピクセルロケーションの少なくとも第１のピクセル値に基づいて予測ブロックを生成することとを行うように構成されたビデオコーダを含む。
【００１１】
別の例では、装置は、ピクセルのブロックを取得するための手段であって、ピクセルのブロックが、ピクセルのブロック内の整数ピクセル位置に対応する整数ピクセル値を含む、取得するための手段と、第１の中間ピクセル値を生成するために整数ピクセル値のグループに第１のフィルタ処理演算を適用するための手段と、第２の中間ピクセル値を生成するために第１の中間ピクセル値に第１のオフセットを加算するための手段であって、第１のオフセットを適用することにより、第２の中間値が、第１の中間ピクセル値よりも小さいビット深度を有する、加算するための手段と、第２の中間ピクセル値を記憶するための手段と、第２の中間ピクセル値を取り出すための手段と、取り出された第２の中間値に第２のオフセットを加算するための手段と、サブピクセルロケーションの第１のピクセル値を計算するために、加算された第２のオフセットをもつ取り出された第２の中間ピクセル値を備える中間ピクセル値のグループに第２のフィルタ処理演算を適用するための手段と、サブピクセルロケーションの少なくとも第１のピクセル値に基づいて予測ブロックを生成するための手段とを含む。
【００１２】
別の例では、コンピュータ可読記憶媒体は、実行されると、１つまたは複数のプロセッサに、ピクセルのブロックを取得することであって、ピクセルのブロックが、ピクセルのブロック内の整数ピクセル位置に対応する整数ピクセル値を含む、取得することと、第１の中間ピクセル値を生成するために整数ピクセル値のグループに第１のフィルタ処理演算を適用することと、第２の中間ピクセル値を生成するために第１の中間ピクセル値に第１のオフセットを加算することであって、第１のオフセットを適用することにより、第２の中間値が、第１の中間ピクセル値よりも小さいビット深度を有する、加算することと、第２の中間ピクセル値を記憶することと、第２の中間ピクセル値を取り出すことと、取り出された第２の中間値に第２のオフセットを加算することと、サブピクセルロケーションの第１のピクセル値を計算するために、加算された第２のオフセットをもつ取り出された第２の中間ピクセル値を備える中間ピクセル値のグループに第２のフィルタ処理演算を適用することと、サブピクセルロケーションの少なくとも第１のピクセル値に基づいて予測ブロックを生成することとを行わせる命令を記憶する。
【００１３】
本開示の１つまたは複数の態様の詳細について添付の図面および以下の説明において述べる。本開示で説明する技法の他の特徴、目的、および利点は、これらの説明および図面、ならびに特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１４】
【図１】本開示の技法を実装し得る１つの例示的なビデオ符号化および復号システムを示すブロック図。
【図２】本開示に一致するフィルタ処理技法を実行し得るビデオエンコーダの一例を示すブロック図。
【図３】予測データに関連する整数ピクセル位置と、補間予測データに関連するサブピクセル位置とを示す概念図。
【図４】予測データに関連する整数ピクセル位置と、補間予測データに関連する垂直サブピクセル位置および水平サブピクセル位置とを示す概念図。
【図５】予測データに関連する整数ピクセル位置と、補間予測データに関連する非垂直および非水平サブピクセル２Ｌサブピクセル位置とを示す概念図。
【図６】サブピクセルロケーションに対する、係数対称性をもつ水平８ピクセルフィルタサポートを示す概念図。
【図７】サブピクセルロケーションに対する、係数対称性をもたない水平８ピクセルフィルタサポートを示す概念図。
【図８】サブピクセルロケーションに対する、係数対称性をもつ垂直８ピクセルフィルタサポートを示す概念図。
【図９】サブピクセルロケーションに対する、係数対称性をもたない垂直８ピクセルフィルタサポートを示す概念図。
【図１０】本明細書で説明する方法で符号化されたビデオシーケンスを復号し得るビデオデコーダの一例を示すブロック図。
【図１１】本開示の技法を示す流れ図。
【図１２】予測データに関連する整数ピクセル位置と、補間予測データに関連するサブピクセル位置とを示す概念図。
【図１３】予測データに関連する整数ピクセル位置と、補間予測データに関連するサブピクセル位置とを示す概念図。
【詳細な説明】
【００１５】
本開示では、ビデオ符号化および／または復号プロセスの予測段階中にエンコーダおよびデコーダによって適用されるフィルタ処理技法について説明する。ピクセルデータは、一般に、一連のピクセル値（たとえば、ルミナンス値および／またはクロミナンス値）として表される。これらのピクセル値は、しばしば８ビット値または１０ビット値のいずれかであるが、他のビット深度も使用され得る。補間フィルタ処理は、一般に、ピクセル値を使用して一連の乗算演算および加算演算を実行することを伴う。これらの乗算演算および加算演算により、いくつかの事例では、１０ビットピクセル値を用いた補間フィルタ処理は、１７ビットである中間値を生じる。しかしながら、レジスタおよび他のコンピュータ構成要素は一般に１６ビットまたは３２ビットの単位で動作するので、１７ビット値は望ましくないことがある。これらの中間値は１７ビットであり得るが、本開示では、これらの１７ビット値を、１６ビットのみである値の範囲内に保つための技法について説明する。本開示ではまた、中間値のビット深度を低減するために中間ピクセル値にオフセットを適用するための技法について説明する。その場合、中間値は、低減されたビット深度で記憶され得る。将来の計算のために取り出されたとき、オフセットは、より低い精度値が記憶されても、より高い精度値を使用してその計算が実行されるように、中間値に再加算され得る。したがって、本開示の技法は、いくつかの事例では、効率的に記憶され得る中間値を維持すると同時に、中間値のビット深度を低減することに関連する精度の損失を最小限に抑えることによって、コーディングシステムの効率を改善し得る。
【００１６】
図１は、一般に、ピクセル補間プロセス中に中間値を処理するための技法に関する、本開示の態様を実装するために使用され得る１つの例示的なビデオ符号化および復号システム１０を示すブロック図である。図１に示すように、システム１０は、通信チャネル１５を介して符号化ビデオデータを宛先デバイス１６に送信するソースデバイス１２を含む。ソースデバイス１２および宛先デバイス１６は、広範囲のデバイスのいずれかを備え得る。いくつかの事例では、ソースデバイス１２および宛先デバイス１６は、ワイヤレスハンドセット、いわゆるセルラー電話または衛星無線電話などのワイヤレス通信デバイス、または通信チャネル１５を介してビデオ情報を通信することができる任意のワイヤレスデバイスを備え得、その場合、通信チャネル１５はワイヤレスである。ただし、予測コーディング中のフィルタ処理および予測データの生成に関係する本開示の技法は、必ずしもワイヤレスアプリケーションまたは設定に限定されるとは限らない。したがって、本開示の態様はまた、物理的ワイヤ、光ファイバーまたは他の物理媒体もしくはワイヤレス媒体を介して通信するデバイスを含む、広範囲の他の設定およびデバイスにおいて有用であり得る。さらに、本符号化技法または復号技法は、必ずしも他のデバイスと通信するとは限らないスタンドアロンデバイスにおいても適用され得る。
【００１７】
図１の例では、ソースデバイス１２は、ビデオソース２０と、ビデオエンコーダ２２と、変調器／復調器（モデム）２３と、送信機２４とを含み得る。宛先デバイス１６は、受信機２６と、モデム２７と、ビデオデコーダ２８と、ディスプレイデバイス３０とを含み得る。本開示によれば、ソースデバイス１２のビデオエンコーダ２２は、ビデオ符号化プロセスの一部として本開示の技法のうちの１つまたは複数を適用するように構成され得る。同様に、宛先デバイス１６のビデオデコーダ２８は、ビデオ復号プロセスの一部として本開示の技法のうちの１つまたは複数を適用するように構成され得る。
【００１８】
また、図１の図示のシステム１０は例示にすぎない。本開示の様々な技法は、ブロックベースの予測符号化をサポートする任意の符号化デバイスによって、またはブロックベースの予測復号をサポートする任意の復号デバイスによって実行され得る。ソースデバイス１２および宛先デバイス１６は、ソースデバイス１２が宛先デバイス１６に送信するためのコード化ビデオデータを生成するような、コーディングデバイスの例にすぎない。場合によっては、デバイス１２、１６の各々がビデオ符号化構成要素と復号構成要素とを含むように、デバイス１２、１６は、実質的に対称的に動作し得る。したがって、システム１０は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、またはビデオ電話通信のためのビデオデバイス１２とビデオデバイス１６との間の一方向または双方向のビデオ送信をサポートし得る。
【００１９】
ソースデバイス１２のビデオソース２０は、ビデオカメラ、前にキャプチャされたビデオを含んでいるビデオアーカイブ、またはビデオコンテンツプロバイダからのビデオフィードなど、ビデオキャプチャデバイスを含み得る。さらなる代替として、ビデオソース２０は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ生成ビデオとの組合せを生成し得る。場合によっては、ビデオソース２０がビデオカメラである場合、ソースデバイス１２および宛先デバイス１６は、いわゆるカメラ付き電話またはテレビ電話を形成し得る。各場合において、キャプチャされたビデオ、プリキャプチャされたビデオまたはコンピュータ生成ビデオは、ビデオエンコーダ２２によって符号化され得る。次いで、符号化されたビデオ情報は、たとえば、符号分割多元接続（ＣＤＭＡ）または別の通信規格などの通信規格に従ってモデム２３によって変調され、送信機２４および通信チャネル１５を介して宛先デバイス１６に送信され得る。モデム２３は、信号変調のために設計された様々なミキサ、フィルタ、増幅器または他の構成要素を含み得る。送信機２４は、増幅器、フィルタ、および１つまたは複数のアンテナを含む、データを送信するために設計された回路を含み得る。
【００２０】
宛先デバイス１６の受信機２６は通信チャネル１５を介して情報を受信し、モデム２７はその情報を復調する。送信機２４と同様に、受信機２６は、増幅器、フィルタ、および１つまたは複数のアンテナを含む、データを受信するために設計された回路を含み得る。いくつかの例では、送信機２４および／または受信機２６は、受信回路と送信回路の両方を含む単一のトランシーバ構成要素内に組み込まれ得る。モデム２７は、信号復調のために設計された様々なミキサ、フィルタ、増幅器または他の構成要素を含み得る。いくつかの例では、モデム２３および２７は、変調と復調の両方を実行するための構成要素を含み得る。
【００２１】
また、ビデオエンコーダ２２によって実行されるビデオ符号化プロセスは、動き補償中に本明細書で説明する技法のうちの１つまたは複数を実装し得る。ビデオデコーダ２８によって実行されるビデオ復号プロセスはまた、復号プロセスのそれの動き補償段階中にそのような技法を実行し得る。「コーダ」という用語は、本明細書では、ビデオ符号化またはビデオ復号を実行する専用コンピュータデバイスまたは装置を指すために使用される。「コーダ」という用語は、一般に、任意のビデオエンコーダ、ビデオデコーダ、または複合エンコーダ／デコーダ（コーデック）を指す。「コーディング」という用語は、符号化または復号を指す。ディスプレイデバイス３０は、復号されたビデオデータをユーザに対して表示し、陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
【００２２】
図１の例では、通信チャネル１５は、無線周波数（ＲＦ）スペクトルまたは１つまたは複数の物理的伝送線路など、ワイヤレスまたはワイヤードの任意の通信媒体、あるいはワイヤレスおよびワイヤードの媒体の任意の組合せを備え得る。通信チャネル１５は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースのネットワークの一部を形成し得る。通信チャネル１５は、概して、ビデオデータをソースデバイス１２から宛先デバイス１６に送信するのに好適な任意の通信媒体、または様々な通信媒体の集合体を表す。通信チャネル１５は、ソースデバイス１２から宛先デバイス１６への通信を可能にするのに有用であり得るルータ、スイッチ、基地局、または任意の他の機器を含み得る。
【００２３】
ビデオエンコーダ２２およびビデオデコーダ２８は、代替的にＭＰＥＧ−４、Ｐａｒｔ１０、Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＡＶＣ）とも記載されるＩＴＵ−Ｔ  Ｈ．２６４規格など、１つまたは複数のビデオ圧縮規格に従って動作し得るか、または次世代ビデオ圧縮規格に従って動作し得る。ただし、本開示の技法は、いかなる特定のビデオコーディング規格にも限定されない。図１には示されていないが、いくつかの態様では、ビデオエンコーダ２２およびビデオデコーダ２８は、それぞれオーディオエンコーダおよびデコーダと統合され得、適切なＭＵＸ−ＤＥＭＵＸユニット、または他のハードウェアおよびソフトウェアを含んで、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理し得る。適用可能な場合、ＭＵＸ−ＤＥＭＵＸユニットはＩＴＵ  Ｈ．２２３マルチプレクサプロトコル、またはユーザデータグラムプロトコル（ＵＤＰ）などの他のプロトコルに準拠し得る。
【００２４】
ビデオエンコーダ２２およびビデオデコーダ２８はそれぞれ、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、あるいはそれらの任意の組合せとして実装され得る。ビデオエンコーダ２２およびビデオデコーダ２８の各々は１つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれかは符号化機能および復号機能を与える複合コーデックの一部としてそれぞれモバイルデバイス、加入者デバイス、ブロードキャストデバイス、サーバなどに統合され得る。
【００２５】
ビデオシーケンスは、一般に一連のビデオフレームを含む。ビデオエンコーダ２２は、ビデオデータを符号化するために個々のビデオフレーム内のビデオブロック上で動作する。ビデオブロックは、固定サイズまたは可変サイズを有し得、指定のコーディング規格に応じてサイズが異なり得る。各ビデオフレームは一連のスライスを含む。各スライスは一連のマクロブロックを含み得、それらのマクロブロックはサブブロックに構成され得る。一例として、ＩＴＵ−Ｔ  Ｈ．２６４規格は、ルーマ成分については１６×１６、８×８、または４×４、およびクロマ成分については８×８など、様々なブロックサイズのイントラ予測をサポートし、ならびにルーマ成分については１６×１６、１６×８、８×１６、８×８、８×４、４×８および４×４、およびクロマ成分については対応するスケーリングされたサイズなど、様々なブロックサイズのインター予測をサポートする。ビデオブロックは、ピクセルデータのブロック、または、たとえば離散コサイン変換（ＤＣＴ）もしくは概念的に同様の変換プロセスなどの変換プロセスの後の変換係数のブロックを備え得る。
【００２６】
より小さいビデオブロックは、より良好な解像度を与えることができ、高い詳細レベルを含むビデオフレームのロケーションに対して使用され得る。概して、マクロブロックおよび様々なサブブロックはビデオブロックであると見なされ得る。さらに、スライスは、マクロブロックおよび／またはサブブロックなど、一連のビデオブロックであると見なされ得る。各スライスはビデオフレームの単独で復号可能なユニットであり得る。代替的に、フレーム自体が復号可能なユニットであり得るか、またはフレームの他の部分が復号可能なユニットとして定義され得る。「コード化ユニット」という用語は、フレーム全体、フレームのスライス、または使用されるコーディング技法に従って定義される別の単独で復号可能なユニットなど、ビデオフレームの単独で復号可能な任意のユニットを指す。
【００２７】
ビデオブロックを符号化するために、ビデオエンコーダ２２は、イントラ予測またはインター予測を実行して、予測ブロックを生成する。ビデオエンコーダ２２は、符号化されるべき元のビデオブロックから予測ブロックを減算して、残差ブロックを生成する。したがって、残差ブロックは、コード化されているブロックと予測ブロックとの間の差を示す。ビデオエンコーダ２２は、残差ブロックに対して変換を実行して、変換係数のブロックを生成し得る。イントラベースまたはインターベースの予測コーディング技法および変換技法の後、ビデオエンコーダ２２は量子化を実行する。量子化は、概して、係数を表すために使用されるデータ量をできるだけ低減するように係数を量子化するプロセスを指す。量子化の後、コンテキスト適応型可変長コーディング（ＣＡＶＬＣ）またはコンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）など、エントロピーコーディング方法に従ってエントロピーコーディングが実行され得る。ビデオエンコーダ２２によって実行される符号化プロセスの各ステップのそれ以上の詳細について、図２において以下でより詳細に説明する。
【００２８】
宛先デバイス１６において、ビデオデコーダ２８が符号化ビデオデータを受信する。ビデオデコーダ２８は、量子化係数を得るために、ＣＡＶＬＣまたはＣＡＢＡＣなど、エントロピーコーディング方法に従って、受信したビデオデータをエントロピー復号する。ビデオデコーダ２８は、逆量子化（inverse quantization）（逆量子化（de-quantization））機能および逆変換機能を適用して、ピクセル領域中で残差ブロックを再構成する。ビデオデコーダ２８はまた、符号化ビデオデータ中に含まれる（たとえば、コーディングモード、動きベクトル、フィルタ係数を定義するシンタックスなどの）制御情報またはシンタックス情報に基づいて予測ブロックを生成する。ビデオデコーダ２８は、予測ブロックを再構成された残差ブロックと加算して、表示のための再構成されたビデオブロックを生成する。ビデオデコーダ２８によって実行される復号プロセスの各ステップのそれ以上の詳細について、図１０に関して以下でより詳細に説明する。
【００２９】
本開示の態様によれば、ビデオエンコーダ２２およびビデオデコーダ２８は、動き補償中に１つまたは複数の補間フィルタ処理技法を使用し得る。特に、本開示の一態様によれば、ビデオエンコーダ２２および／またはビデオデコーダ２８は、精度の損失が最小となる１６ビットに中間値が低減されるように、１０ビット値に対して補間フィルタ処理を実行し、１７ビット値にオフセットを適用し得る。オフセットを適用することは、たとえば、丸め係数を加算することと、中間値に対して右シフト演算を実行することとを含み得る。
【００３０】
図２は、本開示に一致するフィルタ処理技法を実行し得るビデオエンコーダ５０の一例を示すブロック図である。ビデオエンコーダ５０は、本明細書では「コーダ」と呼ぶ専用ビデオコンピュータデバイスまたは装置の一例である。ビデオエンコーダ５０は、デバイス２０のビデオエンコーダ２２、または異なるデバイスのビデオエンコーダに対応し得る。ビデオエンコーダ５０は、ビデオフレーム内のブロックのイントラコーディングおよびインターコーディングを実行し得るが、説明を簡単にするために、イントラコーディング構成要素は図２に示していない。イントラコーディングは、所与のビデオフレーム内のビデオの空間的冗長性を低減または除去するために空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣接フレーム内のビデオの時間的冗長性を低減または除去するために時間的予測に依拠する。イントラモードは空間ベースの圧縮モードを指すことがあり、予測（Ｐモード）または双方向（Ｂモード）などのインターモードは、時間ベースの圧縮モードを指すことがある。本開示の技法はインターコーディング中に適用し、したがって、説明を簡単で容易にするために、空間予測ユニットなどのイントラコーディングユニットは図２に示していない。
【００３１】
図２に示すように、ビデオエンコーダ５０は、符号化されるべきビデオフレーム内のビデオブロックを受信する。図２の例では、ビデオエンコーダ５０は、予測モジュール３２と、メモリ３４と、加算器４８と、変換モジュール３８と、量子化モジュール４０と、エントロピーコーディングモジュール４６とを含む。ビデオブロック再構成のために、ビデオエンコーダ５０はまた、逆量子化モジュール４２と、逆変換モジュール４４と、加算器５１とを含む。再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタ処理するデブロッキングフィルタ（図示せず）をも含め得る。所望される場合、デブロッキングフィルタは、一般に、加算器５１の出力をフィルタ処理するであろう。
【００３２】
予測モジュール３２は、動き推定（ＭＥ）モジュール３５と、動き補償（ＭＣ）モジュール３７とを含み得る。フィルタモジュール３９は、本開示によれば、予測モジュール３２中に含められ得、動き推定および／または動き補償の一部として補間または補間様(interpolation-like)フィルタ処理を実行するために、ＭＥモジュール３５とＭＣモジュール３７の一方または両方によって起動され得る。フィルタモジュール３９は、実際は、本明細書で説明するように、多数の様々なタイプの補間および補間タイプフィルタ処理を可能にする複数の様々なフィルタを表し得る。したがって、予測モジュール３２は複数の補間または補間様フィルタを含み得る。さらに、フィルタモジュール３９は、複数のサブピクセルロケーションのための複数のフィルタインデックスを含み得る。フィルタインデックスは、ビットパターンおよびサブピクセルロケーションを特定の補間フィルタに関連付ける。符号化プロセス中に、ビデオエンコーダ５０は、（図２に「ビデオブロック」と標示された）コーディングされるべきビデオブロックを受信し、予測モジュール３２は、インター予測コーディングを実行して（図２に「予測ブロック」と標示された）予測ブロックを生成する。特に、ＭＥモジュール３５は、メモリ３４中の予測ブロックを識別するために動き推定を実行し得、ＭＣモジュール３７は、予測ブロックを生成するために動き補償を実行し得る。
【００３３】
動き推定は、一般に、ビデオブロックの動きを推定する、動きベクトルを生成するプロセスと考えられる。動きベクトルは、たとえば、現在のフレーム（または、他のコード化ユニット）内のコーディングされるべきブロックに対する、予測フレームまたは参照フレーム（または、他のコード化ユニット、たとえばスライス）内の予測ブロックの変位を示し得る。参照フレーム（または、参照フレームの部分）は、時間的に、現在のビデオブロックが属するビデオフレーム（または、ビデオフレームの部分）より前に、またはその後に配置され得る。動き補償は、一般に、メモリ３４から予測ブロックをフェッチまたは生成するプロセス、あるいは、動き推定によって判断された動きベクトルに基づいて、フィルタ処理された予測データを補間するか、または場合によっては生成するプロセスと考えられる。
【００３４】
ＭＥモジュール３５は、コーディングされるべきビデオブロックを１つまたは複数の参照フレーム（たとえば、前のフレームおよび／または後続のフレーム）のビデオブロックと比較することによって、そのビデオブロックに適した動きベクトルを選択する。ＭＥモジュール３５は、分数ピクセル(fractional pixel)、分数ペル(fractional pel)、またはサブピクセル動き推定と呼ばれることがある分数ピクセル精度を用いて動き推定を実行し得る。したがって、分数ピクセル、分数ペル、およびサブピクセル動き推定という用語は、互換的に使用され得る。分数ピクセル動き推定では、ＭＥモジュール３５は、整数ピクセルロケーション以外のロケーションへの変位を示す動きベクトルを選択し得る。このようにして、分数ピクセル動き推定により、予測モジュール３２は、整数ピクセル（またはフルピクセル）ロケーションよりも高い精度を用いて動きを追跡し、したがって、より正確な予測ブロックを生成することが可能になる。分数ピクセル動き推定は、１／２ピクセル精度、１／４ピクセル精度、１／８ピクセル精度または任意のより微細な精度を有し得る。ＭＥモジュール３５は、動き推定プロセス中に必要な補間のために（１つまたは複数の）フィルタ３９を起動し得る。
【００３５】
分数ピクセル動き補償を実行するために、ＭＣモジュール３７は、（補間フィルタ処理と呼ばれることがある）補間を実行して、（本明細書ではサブピクセル値または分数ピクセル値と呼ぶ）サブピクセル解像度におけるデータを生成し得る。ＭＣモジュール３７は、この補間のために（１つまたは複数の）フィルタ３９を起動し得る。予測モジュール３２は、本明細書で説明する技法を使用して補間（または整数ピクセルの補間様フィルタ処理）を実行し得る。
【００３６】
コーディングされるべきビデオブロックのための動きベクトルがＭＥモジュール３５によって選択されると、ＭＣモジュール３７は、その動きベクトルに関連する予測ビデオブロックを生成する。ＭＣモジュール３７は、ＭＣモジュール３５によって判断された動きベクトルに基づいて、メモリ３４から予測ブロックをフェッチし得る。分数ピクセル精度をもつ動きベクトルの場合、ＭＣモジュール３７は、そのようなデータをサブピクセル解像度に補間するために、たとえば、このプロセスのために（１つまたは複数の）フィルタ３９を起動して、メモリ３４からのデータをフィルタ処理する。場合によっては、サブピクセル予測データを生成するために使用した補間フィルタ処理技法またはモードは、コード化ビットストリームに含めるための、エントロピーコーディングモジュール４６への１つまたは複数の補間シンタックス要素として示され得る。
【００３７】
予測モジュール３２が予測ブロックを生成すると、ビデオエンコーダ５０は、コーディングされている元のビデオブロックから予測ブロックを減算することによって（図２に「残差ブロック」と標示された）残差ビデオブロックを形成する。加算器４８は、この減算演算を実行する１つまたは複数の構成要素を表す。変換モジュール３８は、離散コサイン変換（ＤＣＴ）または概念的に同様の変換などの変換を残差ブロックに適用し、残差変換ブロック係数を備えるビデオブロックを生成する。変換モジュール３８は、たとえば、概念的にＤＣＴと同様である、Ｈ．２６４規格によって定義された変換など、他の変換を実行し得る。ウェーブレット変換、整数変換、サブバンド変換または他のタイプの変換も使用され得る。いずれの場合も、変換モジュール３８は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。変換は、残差情報をピクセル領域から周波数領域に変換し得る。
【００３８】
量子化モジュール４０は、ビットレートをさらに低減するために残差変換係数を量子化する。量子化プロセスは、係数のいくつかまたは全部に関連するビット深度を低減し得る。量子化の後、エントロピーコーディングモジュール４６が量子化変換係数をエントロピーコーディングする。たとえば、エントロピーコーディングモジュール４６は、ＣＡＶＬＣ、ＣＡＢＡＣ、または別のエントロピーコーディング方法を実行し得る。
【００３９】
エントロピーコーディングモジュール４６はまた、ビデオエンコーダ５０の予測モジュール３２または他の構成要素から得られた１つまたは複数の予測シンタックス要素をコーディングし得る。１つまたは複数の予測シンタックス要素は、コーディングモード、１つまたは複数の動きベクトル、サブピクセルデータを生成するために使用された補間技法、フィルタ係数のセットまたはサブセット、あるいは予測ブロックの生成に関連する他の情報を含み得る。係数予測および量子化モジュール４１は、本開示のいくつかの態様によれば、フィルタ係数などの予測シンタックスを予測符号化し、量子化し得る。エントロピーコーディングモジュール４６によるエントロピーコーディングの後、符号化ビデオおよびシンタックス要素は、別のデバイスに送信されるか、あるいは後で送信または検索するためにアーカイブされ得る。
【００４０】
逆量子化モジュール４２および逆変換モジュール４４は、それぞれ逆量子化および逆変換を適用して、たとえば、参照ブロックとして後で使用するために、ピクセル領域中で残差ブロックを再構成する。（図２に「再構成された残差ブロック」と標示された）再構成された残差ブロックは、変換モジュール３８に与えられた残差ブロックの再構成されたバージョンを表し得る。再構成された残差ブロックは、量子化演算および逆量子化演算によって生じた細部の損失により、加算器４８によって生成された残差ブロックとは異なり得る。加算器５１は、再構成された残差ブロックを、予測モジュール３２によって生成された動き補償された予測ブロックに加算して、メモリ３４に記憶するための再構成されたビデオブロックを生成する。再構成されたビデオブロックは、後続のビデオフレームまたは後続のコード化ユニット中のブロックをその後コーディングするために使用され得る参照ブロックとして予測モジュール３２によって使用され得る。
【００４１】
上記で説明したように、予測モジュール３２は、分数ピクセル（またはサブピクセル）精度を用いて動き推定を実行し得る。予測モジュール３２が、分数ピクセル動き推定を使用するとき、予測モジュール３２は、本開示で説明する補間演算を使用してサブピクセル解像度（たとえば、サブピクセル値または分数ピクセル値）におけるデータを生成し得る。言い換えれば、補間演算を使用して、整数ピクセル位置間の位置における値を計算する。整数ピクセル位置間の距離の１／２に配置されるサブピクセル位置は１／２ピクセル（１／２ペル）位置と呼ばれることがあり、整数ピクセル位置と１／２ピクセル位置との間の距離の１／２に配置されるサブピクセル位置は１／４ピクセル（１／４ペル）位置と呼ばれることがあり、整数ピクセル位置（または、１／２ピクセル位置）と１／４ピクセル位置との間の距離の１／２に配置されるサブピクセル位置は１／８ピクセル（１／８ペル）位置と呼ばれ、以下同様である。
【００４２】
図３は、予測データに関連する整数ピクセル（または、フルピクセル）位置と、補間予測データに関連するサブピクセル（または、分数ピクセル）位置とを示す概念図である。図３の概念図では、異なるボックスが、フレームまたはフレームのブロック内のピクセルおよびサブピクセルロケーションまたは位置を表す。（実線のボックス中の）大文字は整数ピクセルロケーションを表し、（点線のボックス中の）小文字はサブピクセルロケーションを表す。特に、ピクセルロケーションＡ１〜Ａ６、Ｂ１〜Ｂ６、Ｃ１〜Ｃ６、Ｄ１〜Ｄ６、Ｅ１〜Ｅ６およびＦ１〜Ｆ６は、フレーム、スライス、または他のコード化ユニット内の整数ピクセルロケーションの６×６アレイを表す。また、本開示で後述する例とともに使用されるべき追加の整数ピクセルロケーションＧ３およびＨ３が図３に示されている。サブピクセルロケーション「ａ」〜「ｏ」は、整数ピクセルＣ３に関連する１５個のサブピクセルロケーション、たとえば、整数ピクセルロケーションＣ３とＣ４とＤ３とＤ４との間のサブピクセルロケーションを表す。同様のサブピクセルロケーションが、あらゆる整数ピクセルロケーションに対して存在し得る。サブピクセルロケーション「ａ」〜「ｏ」は、整数ピクセルＣ３に関連するあらゆる１／２ペルおよび１／４ペルピクセルロケーションを表す。
【００４３】
整数ピクセルロケーションは、ビデオデータが最初に生成されたとき、フォトダイオードなどの物理的センサ要素に関連し得る。フォトダイオードは、センサのロケーションにおける光源の強度を測定し、ピクセル強度値を整数ピクセルロケーションに関連付け得る。この場合も、各整数ピクセルロケーションは、１５個の（または場合によってはより多くの）サブピクセルロケーションの関連するセットを有し得る。整数ピクセルロケーションに関連するサブピクセルロケーションの数は所望の精度に依存し得る。図３に示す例では、所望の精度は１／４ピクセル精度であり、その場合、整数ピクセルロケーションの各々は、１５個の異なるサブピクセル位置と対応する。より多いまたはより少ないサブピクセル位置は、所望の精度に基づいて各整数ピクセルロケーションに関連し得る。１／２ピクセル精度の場合、たとえば、各整数ピクセルロケーションは、３つのサブピクセル位置と対応し得る。別の例として、整数ピクセルロケーションの各々は、１／８ピクセル精度の場合、６３個のサブピクセル位置と対応し得る。各ピクセルロケーションは、１つまたは複数のピクセル値、たとえば、１つまたは複数の輝度値およびクロミナンス値を定義し得る。
【００４４】
Ｙが輝度を表し得、ＣｂおよびＣｒが３次元ＹＣｂＣｒ色空間のクロミナンスの２つの異なる値を表し得る。各ピクセルロケーションは、実際に、３次元色空間の３つのピクセル値を定義し得る。ただし、本開示の技法は、簡単のために１次元に関する予測を指すことがある。技法について１次元のピクセル値に関して説明する限り、同様の技法が他の次元に拡張され得る。場合によっては、クロミナンス値は予測より前にサブサンプリングされるが、人間の視覚はピクセル色よりもピクセル強度により反応するので、予測は、一般に、サブサンプリングなしに輝度空間中で行われる。
【００４５】
図３の例では、整数ピクセル「Ｃ３」に関連する、サブピクセル位置とも呼ばれる、サブピクセルロケーションが１／４ピクセル精度について示されている。ピクセルＣ３に関連する１５個のサブピクセル位置は、「ａ」、「ｂ」、「ｃ」、「ｄ」、「ｅ」、「ｆ」、「ｇ」、「ｈ」、「ｉ」、「ｊ」、「ｋ」、「ｌ」、「ｍ」、「ｎ」、および「ｏ」と標示される。他の整数ピクセルロケーションに関連する他の分数ロケーションの大部分は、簡単のために図示していない。サブピクセルロケーション「ｂ」、「ｈ」および「ｊ」は１／２ピクセルロケーションと呼ばれることがあり、サブピクセルロケーション「ａ」、「ｃ」、「ｄ」、「ｅ」、「ｆ」、「ｇ」、「ｉ」、「ｋ」、「ｌ」、「ｍ」、および「ｏ」は１／４ピクセルロケーションと呼ばれることがある。さらに、本開示では、整数ピクセルと同じ水平軸に沿って配向されたサブピクセル位置は、水平サブピクセルと呼ばれることがある。サブピクセル「ａ」、「ｂ」、および「ｃ」は水平サブピクセルの例である。整数ピクセルと同じ垂直軸の上に配向されたサブピクセルは、垂直サブピクセルと呼ばれることがある。サブピクセル「ｄ」、「ｈ」、および「ｌ」は、垂直サブピクセルの例である。本開示の態様は、単一の線形補間フィルタを使用して水平サブピクセルと垂直サブピクセルとのピクセル値を判断することを含み、したがって、本開示では、水平サブピクセルと垂直サブピクセルとをまとめて１Ｌサブピクセルと呼ぶことがある。図４は、整数ピクセル（Ｃ１〜Ｃ６、Ａ３、Ｂ３、Ｃ３、Ｄ３、Ｅ３、およびＦ３）のグループに対する１Ｌサブピクセル（ａ、ｂ、ｃ、ｄ、ｈ、ｌ）を示す概念図である。
【００４６】
本開示の態様は、水平方向に適用される線形補間フィルタと垂直方向に適用される線形補間フィルタとの２つの線形補間フィルタを使用して、サブピクセル「ｅ」、「ｆ」、「ｇ」、「ｉ」、「ｊ」、「ｋ」、「ｍ」、「ｎ」、および「ｏ」などの非垂直、非水平サブピクセルのピクセル値を判断することを含む。したがって、本開示では、サブピクセル「ｅ」、「ｆ」、「ｇ」、「ｉ」、「ｊ」、「ｋ」、「ｍ」、「ｎ」、および「ｏ」などの非垂直、非水平サブピクセルを２Ｌサブピクセルと呼ぶことがある。図５は、整数ピクセル（Ｃ１〜Ｃ６、Ａ３、Ｂ３、Ｃ３、Ｄ３、Ｅ３、およびＦ３）のグループに対する２Ｌサブピクセル（ｅ、ｆ、ｇ、ｉ、ｊ、ｋ、ｍ、ｎ、ｏ）を示す概念図である。
【００４７】
図６は、サブピクセル位置「ｂ」に対する８つの水平線形ピクセルサポート位置Ｃ０〜Ｃ７を、係数対称性を示す陰影付きで示す概念図である。この場合、係数対称性は、フィルタサポート位置Ｃ０〜Ｃ７の係数のセット全体を定義するために、Ｃ０、Ｃ１、Ｃ２およびＣ３の４つのフィルタ係数のみがあればよいことを意味する。Ｃ０はＣ７と対称であり、Ｃ１はＣ６と対称であり、Ｃ２はＣ５と対称であり、Ｃ３はＣ４と対称である。したがって、サブピクセル位置「ｂ」を補間するために必要とされる８つの係数のセットを定義するために、符号化ビデオビットストリームの一部として４つの係数のみを通信するか、またはフィルタモジュール３９によって記憶すればよい。残りの係数は、通信された係数に基づいてデコーダにおいて生成され得る。特に、デコーダは、対称性が適用することを知るようにプログラムされ得、対称性は、通信された係数に基づいて残りの係数をどのように生成すべきかを定義することができる。
【００４８】
図７は、サブピクセルに対する８つの水平線形ピクセルサポート位置を、係数対称性の欠如を示す陰影付きで示す概念図である。したがって、サブピクセル位置「ａ」に関するフィルタサポートのための係数のセットを定義するために、すべての８つの係数が必要とされる。しかしながら、ピクセル対称性は、サブピクセル位置「ａ」に関するこれらの同じ係数が、サブピクセル位置「ｃ」のフィルタサポートを導出するためにも使用され得ることを意味する。サブピクセル位置「ａ」に関するフィルタサポートのための８つの係数が１次元アレイと見なされた場合、サブピクセル「ａ」の値を判断したときのＣ７の係数はサブピクセル「ｃ」の値を判断したときのＣ０の係数であり得、Ｃ６の係数はＣ１の係数であり得るなどのように、サブピクセル「ｃ」のための８つの係数はアレイを反転することによって発見され得る。したがって、たとえば、適応補間フィルタ処理（ＡＩＦ：adaptive interpolation filtering）を使用する場合、フィルタ係数はビデオエンコーダ２２において計算され、サブピクセル位置「ａ」および「ｃ」を補間するために必要とされる８つの係数の２つの異なるセットを定義するために、ビットストリーム中で８つの係数のみをビデオデコーダ２８に通信すればよい。
【００４９】
図８は、サブピクセル「ｈ」に対する８つの垂直線形ピクセルサポート位置Ｇ３、Ａ３、Ｂ３、Ｃ３、Ｄ３、Ｅ３、Ｆ３、およびＨ３を、係数対称性を示す陰影付きで示す概念図である。この場合、係数対称性は、フィルタサポート位置Ｇ３、Ａ３、Ｂ３、Ｃ３、Ｄ３、Ｅ３、Ｆ３、およびＨ３の係数のセット全体を定義するために、Ｇ３、Ａ３、Ｂ３およびＣ３の４つのフィルタ係数のみがあればよいことを意味する。Ｇ３はＨ３と対称であり、Ａ３はＦ３と対称であり、Ｂ３はＥ３と対称であり、Ｃ３はＤ３と対称である。対称性により、Ｇ３に関連する係数をＨ３とともに使用したり、Ａ３に関連する係数をＦ３とともに使用したりすることなどが可能である。したがって、たとえば、ＡＩＦを使用する場合、サブピクセル位置「ｈ」を補間するために必要とされる８つの係数のセットを定義するために、符号化ビデオビットストリームの一部として４つの係数のみを通信すればよい。
【００５０】
図９は、サブピクセルに対する８つの垂直線形ピクセルサポート位置を、係数対称性の欠如を示す陰影付きで示す概念図である。したがって、サブピクセル位置「ｄ」に関するフィルタサポートのための係数のセットを定義するために、すべての８つの係数が必要とされる。しかしながら、図７に関して上記したように、ピクセル対称性は、サブピクセル位置「ｄ」に関するこれらの同じ係数が、サブピクセル位置「ｌ」のフィルタサポートを導出するためにも使用され得ることを意味する。したがって、たとえば、ＡＩＦを使用する場合、サブピクセル位置「ｄ」および「ｌ」を補間するために必要とされる８つの係数の２つの異なるセットを定義するために、ビットストリーム中で８つの係数のみをビデオデコーダ２８に通信すればよい。
【００５１】
ビデオエンコーダ４０の予測モジュール３２は、フィルタモジュール３９による補間フィルタ処理を使用してサブピクセルロケーション「ａ」〜「ｏ」のピクセル値を判断し得る。１／２ピクセル位置「ｂ」および「ｈ」の場合、タップとも呼ばれる各フィルタ係数は、それぞれ水平方向および垂直方向の整数ピクセル位置に対応し得る。特に、１／２ピクセル位置「ｂ」の場合、８タップフィルタのタップは、Ｃ０、Ｃ１、Ｃ２、Ｃ３、Ｃ４、Ｃ５、Ｃ６、およびＣ７に対応する。サブピクセル位置Ｃ０およびＣ７は、図３に示されていないが、たとえば、図６および図７に見られ得る。同様に、１／２ピクセル位置「ｈ」の場合、８タップフィルタのタップは、Ｇ３、Ａ３、Ｂ３、Ｃ３、Ｄ３、Ｅ３、Ｆ３、およびＨ３に対応する。たとえば、サブピクセル位置「ｂ」および「ｈ」のピクセル値は、式（１）および式（２）を使用して計算され得る。
【数１】
0005766878.tif 000002
【数２】
0005766878.tif 000003
【００５２】
位置「ｂ」の場合と同様に、１／４ピクセル位置「ａ」および「ｃ」の場合、８タップフィルタのタップは、Ｃ０、Ｃ１、Ｃ２、Ｃ３、Ｃ４、Ｃ５、Ｃ６、およびＣ７に対応し得るが、位置「ｂ」の場合とは異なり、フィルタ係数は非対称であり、位置「ｂ」の場合とは異なり得る。たとえば、サブピクセル位置「ａ」および「ｃ」のピクセル値は、式（３）および式（４）を使用して計算され得る。
【数３】
0005766878.tif 000004
【数４】
0005766878.tif 000005
【００５３】
位置「ｈ」の場合と同様に、１／４ピクセル位置「ｄ」および「ｌ」の場合、８タップフィルタのタップは、Ｇ３、Ａ３、Ｂ３、Ｃ３、Ｄ３、Ｅ３、Ｆ３、およびＨ３に対応し得るが、位置「ｈ」の場合とは異なり、フィルタ係数は非対称であり、位置「ｈ」の場合とは異なり得る。たとえば、サブピクセル位置「ｄ」および「ｌ」のピクセル値は、式（５）および式（６）を使用して計算され得る。
【数５】
0005766878.tif 000006
【数６】
0005766878.tif 000007
【００５４】
上記の式（１）〜式（６）について与えられた例示的な係数は、概して、水平サブピクセルと垂直サブピクセルの両方について同じ係数を使用するが、水平サブピクセルの係数と垂直サブピクセルの係数が同じである必要はない。たとえば、式（１）と式（２）、式（３）と式（５）、および式（４）と式（６）はそれぞれ、上記の例では同じ係数を有するが、いくつかの実装形態では、各々は異なる係数を有し得る。
【００５５】
ビデオエンコーダ４０の予測モジュール３２は、フィルタモジュール３９による補間フィルタ処理を使用して、２Ｌサブピクセルロケーション「ｅ」、「ｆ」、「ｇ」、「ｉ」、「ｊ」、「ｋ」、「ｍ」、「ｎ」、および「ｏ」のピクセル値を判断し得る。２Ｌサブピクセル位置について、水平フィルタ処理の後に垂直フィルタ処理が行われ、またはその逆も同様である。第１のフィルタ処理演算は中間値を判断し、第２のフィルタ処理演算は、中間値を利用して、サブピクセルロケーションのピクセル値を判断する。たとえば、「ｊ」の値を判断するために、以下の式を使用して、「ａａ」、「ｂｂ」、「ｂ」、「ｈｈ」、「ｉｉ」、および「ｊｊ」の中間値を判断するために、８タップ水平フィルタが使用され得る。
【数７】
0005766878.tif 000008
【数８】
0005766878.tif 000009
【数９】
0005766878.tif 000010
【数１０】
0005766878.tif 000011
【数１１】
0005766878.tif 000012
【数１２】
0005766878.tif 000013
【数１３】
0005766878.tif 000014
【数１４】
0005766878.tif 000015
【００５６】
式（７）〜式（１４）で実行された乗算演算および加算演算により、「ａａ」、「ｂｂ」、「ｂ」、「ｈｈ」、「ｉｉ」、「ｊｊ」、「ｋｋ」、および「ｌｌ」の中間値は、いくつかの事例では、１７ビット値であり得る。たとえば、「ａａ」、「ｂｂ」、「ｂ」、「ｈｈ」、「ｉｉ」、「ｊｊ」、「ｋｋ」、および「ｌｌ」が０から１０２３にわたる１０ビット値である場合、上記の例示的な係数を使用すると、式（７）〜式（１４）は、正のフィルタ係数を乗算したピクセル値が１０２３であり、負のフィルタ係数を乗算したピクセル値が０である状況において、９００２４もの高い値を生じることがある。ただし、式（７）〜式（１４）によって生成された１７ビット値は、１６ビット範囲の値のみをカバーし得る。したがって、本開示の技法は、中間値を１６ビット値に低減するために１７ビット値にオフセットを加算することを含む。オフセットは、右シフト演算を使用して適用され得る。さらに、オフセットは、１６ビットに低減されたときに式（７）〜式（１４）の値を切り上げさせる丸め係数を含み得る。
【００５７】
上記で判断された１６ビット中間値に８タップ垂直フィルタを適用することによって、以下の式を使用して「ｊ」の値を判断することができる。
【数１５】
0005766878.tif 000016
【００５８】
式（１５）で実行された乗算演算および加算演算により、ｊの値は２１ビット値であり得る。したがって、２１ビット値を１０ビット値に低減するために、本開示の技法は、中間値を１０ビット値に低減するために、２１ビット値に対して右シフト演算を実行することを含む。式（１５）のオフセット値は、１０ビットに低減されたときに式１５の値を切り上げさせる丸め項を含み得る。
【００５９】
上記の例では、最初に水平フィルタ処理が適用され、その後に垂直フィルタ処理が適用される技法について説明した。ただし、いくつかの実装形態では、最初に垂直フィルタ処理が適用され、その後に水平フィルタ処理が適用され得る。たとえば、図３に示されていない２つの追加の値に加えて、「ｃｃ」、「ｄｄ」、「ｈ」、「ｅｅ」、「ｆｆ」、および「ｇｇ」の中間値を見つけるために、８タップ垂直フィルタが使用され得、「ｊ」のピクセル値を判断するために、それらの中間値に８タップ水平フィルタが適用され得る。
【００６０】
サブピクセル「ｊ」について上記で説明した手順と同様に、中間値を判断するために最初に水平フィルタ処理演算を実行し、次いでそれらの中間値に垂直フィルタを適用することによって、または中間値を判断するために最初に垂直フィルタ処理演算を実行し、次いで、垂直フィルタ処理によって判断された中間値に水平フィルタを適用することによって、サブピクセルロケーション「ｅ」、「ｆ」、「ｇ」、「ｉ」、「ｋ」、「ｍ」、「ｎ」、および「ｏ」のピクセル値が判断され得る。サブピクセル「ｊ」について上記で例として使用された水平フィルタと垂直フィルタの両方が対称係数を使用するが、他の２Ｄサブピクセル値のピクセル値を判断するために使用される水平フィルタまたは垂直フィルタの一方または両方が対称でないことがある。たとえば、例示的な一実装形態では、サブピクセルロケーション「ｅ」、「ｇ」、「ｍ」、および「ｏ」の水平フィルタと垂直フィルタの両方が非対称係数を使用し得る。サブピクセルロケーション「ｆ」および「ｎ」は、対称係数をもつ水平フィルタと、非対称係数をもつ垂直フィルタとを使用し得、サブピクセルロケーション「ｉ」および「ｋ」は、非対称係数をもつ水平フィルタと、対称フィルタ係数をもつ垂直フィルタとを使用し得る。
【００６１】
サブピクセルロケーションにおいて補間データを生成するためにフィルタモジュール３９によって適用される実際のフィルタには、多種多様な実装形態があり得る。一例として、予測モジュール３２はＡＩＦを利用し得、フィルタ係数は、ビデオエンコーダ２２によって計算され、ビットストリーム中でビデオデコーダ２８に送信される。別の例として、予測モジュール３２は交換フィルタ処理を利用し得、複数のフィルタがビデオエンコーダ２２とビデオデコーダ２８の両方によって知られており、使用されるべき特定のフィルタは、ビットストリーム中でビデオエンコーダ２２からビデオデコーダ２８にシグナリングされる。交換フィルタ処理の一例では、ビデオエンコーダ２２およびビデオデコーダ２８は、各サブピクセル位置について４つの一意のフィルタを記憶し得、サブピクセル位置に対して使用されるべき特定のフィルタは、２ビットを使用してビデオエンコーダ２２からビデオデコーダ２８にシグナリングされ得る。
【００６２】
予測モジュール３２は、水平方向および垂直方向において分離可能な補間フィルタを使用し得る。１Ｌサブピクセル位置について、予測モジュール３２（たとえば、予測モジュール３２のＭＣモジュール３７）は、サブピクセルロケーションに応じて水平方向フィルタのみまたは垂直方向フィルタのみを適用する。一例では、水平方向フィルタおよび垂直方向フィルタは８位置（または８タップ）フィルタを備える。予測モジュール３２は、フィルタサポートとして整数ピクセル位置Ｃ０、Ｃ１、Ｃ２、Ｃ３、Ｃ４、Ｃ５、Ｃ６、およびＣ７（Ｃ０およびＣ７は図３に図示せず）を用いて、サブピクセル位置「ａ」、「ｂ」、および「ｃ」に対して水平方向フィルタを適用し、フィルタサポートとして整数ピクセル位置Ｇ３、Ａ３、Ｂ３、Ｃ３、Ｄ３、Ｅ３、Ｆ３、およびＨ３（図３参照）を用いて、サブピクセル位置「ｄ」、「ｈ」、および「ｌ」に対して垂直方向フィルタを適用する。残りのサブピクセル位置、すなわち、２Ｌサブピクセル位置について、予測モジュール３２は、最初に水平フィルタ処理を適用し、その後に垂直フィルタ処理を適用するか、または最初に垂直フィルタ処理を適用し、その後に水平フィルタ処理を適用する。２Ｌサブピクセル位置に対して使用される水平フィルタおよび垂直フィルタは、それぞれ６タップフィルタであり得る。
【００６３】
図１０は、本明細書で説明する方法で符号化されたビデオシーケンスを復号し得るビデオデコーダの一例を示すブロック図である。ビデオデコーダ６０は、本明細書では「コーダ」と呼ぶ専用ビデオコンピュータデバイスまたは装置の一例である。ビデオデコーダ６０は、量子化係数および予測シンタックス要素を生成するために、受信したビットストリームをエントロピー復号するエントロピー復号モジュール５２を含む。予測シンタックス要素は、コーディングモード、１つまたは複数の動きベクトル、サブピクセルデータを生成するために使用される補間技法を識別する情報、補間フィルタ処理中に使用するための係数、および／または予測ブロックの生成に関連する他の情報を含み得る。
【００６４】
予測シンタックス要素、たとえば、係数は、予測モジュール５５に転送される。固定フィルタの係数に対してまたは互いに対して係数をコーディングするために予測が使用された場合、係数予測および逆量子化モジュール５３は、実際の係数を定義するためにシンタックス要素を復号することができる。また、量子化が予測シンタックスのいずれかに適用された場合、係数予測および逆量子化モジュール５３は、そのような量子化を除去することもできる。たとえば、フィルタ係数は、本開示に従って予測コーディングされ、量子化され得、この場合、係数予測および逆量子化モジュール５３は、そのような係数を予測的に復号し、逆量子化するためにビデオデコーダ６０によって使用され得る。
【００６５】
予測モジュール５は、ビデオエンコーダ５０の予測モジュール３２に関して上記で詳細に説明したのとほとんど同じ方法で、メモリ６２に記憶された予測シンタックス要素と１つまたは複数の前に復号されたブロックとに基づいて、予測データを生成し得る。特に、予測モジュール５５は、動き補償中に本開示の補間フィルタ処理技法のうちの１つまたは複数を実行して、１／４ピクセル精度などの特定の精度で予測ブロックを生成し得る。したがって、本開示の技法のうちの１つまたは複数は、予測ブロックを生成する際にビデオデコーダ６０によって使用され得る。予測モジュール５５は、本開示の補間および補間様フィルタ処理技法のために使用されるフィルタを備える動き補償モジュールを含み得る。動き補償構成要素は、説明を簡単で容易にするために図１０に示していない。
【００６６】
逆量子化モジュール５６は、量子化された係数を逆量子化（inverse quantize）、すなわち、逆量子化（de-quantize）する。逆量子化プロセスは、Ｈ．２６４復号のために定義されたプロセスであり得る。逆変換モジュール５８は、ピクセル領域における残差ブロックを生成するために、変換係数に、逆変換、たとえば、逆ＤＣＴまたは概念的に同様の逆変換プロセスを適用する。加算器６４は、残差ブロックを、予測モジュール５５によって生成された対応する予測ブロックと加算して、ビデオエンコーダ５０によって符号化された元のブロックの再構成されたバージョンを形成する。所望される場合、ブロッキネスアーティファクトを除去するために、復号ブロックをフィルタ処理するためにデブロッキングフィルタも適用され得る。次いで、復号ビデオブロックは参照フレームストア６２に記憶され、参照フレームストア６２は、その後の動き補償のために参照ブロックを与え、（図１のデバイス２８などの）ディスプレイデバイスを駆動するために復号ビデオをも生成する。
【００６７】
図１１は、本開示の技法を示す流れ図である。図１１の技法は、たとえば、ビデオエンコーダ５０の予測モジュール３２またはビデオデコーダ６０の予測モジュール５５によって実行され得る。予測モジュールは、ピクセルのブロック内の整数ピクセル位置に対応する整数ピクセル値を含むピクセルのブロックを取得する（１１０１）。予測モジュールは、第１の中間ピクセル値を生成するために整数ピクセル値のグループに第１のフィルタ処理演算を適用する（１１０２）。整数ピクセル値のグループは、たとえば、１０ビット値であり得る。予測モジュールは、第２の中間ピクセル値を生成するために前記中間ピクセル値に第１のオフセットを適用する（１１０３）。第１の中間ピクセル値は、たとえば、１７ビット値であり得、第１のオフセットは、第１の中間ピクセル値を１６ビットの第２の中間ピクセル値に低減し得る。予測モジュールは第２の中間ピクセル値を記憶する（１１０４）。第２の中間ピクセル値が１６ビットであるので、第２の中間ピクセル値は、たとえば、１６ビットレジスタに効率的に記憶され得る。予測モジュールは第２の中間ピクセル値を取り出す（１１０５）。予測モジュールは、取り出された第２の中間値に第２のオフセットを加算し得る。予測モジュールは、サブピクセルロケーションの第１のピクセル値を計算するために、加算された第２のオフセット値をもつ取り出された第２の中間ピクセル値に第２のフィルタ処理演算を適用する（１１０７）。予測モジュールは、サブピクセルロケーションの少なくとも第１のピクセル値に基づいて予測ブロックを生成する（１１０８）。
【００６８】
図１２および図１３は、予測データに関連する整数ピクセル位置と、補間予測データに関連するサブピクセル位置とを示す概念図である。図１２および図１３は、本開示で説明する技法の例を示す。これらの技法は、たとえば、ビデオエンコーダ５０、ビデオデコーダ６０、または他のタイプのビデオコーダによって実行され得る。図１２では、影つきブロック内の大文字Ａi,jで標示された位置は、ルーマサンプルの所与の２次元アレイｒｅｆＰｉｃＬＸL内のフルサンプルロケーションにおけるルーマサンプルを表す。図１２では、整数サンプルが、大文字をもつ影つきブロックとして示され、分数サンプル位置が、１／４サンプルルーマ補間のための小文字をもつ影なしブロックとして示されている。
【００６９】
これらのサンプルは、予測されたルーマサンプル値ｐｒｅｄＳａｍｐｌｅＬＸL［ｘL，ｙL］を生成するために使用され得る。ルーマサンプルの所与のアレイｒｅｆＰｉｃＬＸL内の対応するルーマサンプルＡi,jの各々についてのロケーション（ｘＡi,j，ｙＡi,j）は、次のように導出され得る。
【数１６】
0005766878.tif 000017
【数１７】
0005766878.tif 000018
【００７０】
上式で、（ｘＩｎｔL，ｙＩｎｔL）はフルサンプルユニット中のルーマロケーションである。
【００７１】
変数ｓｈｉｆｔ１、ｓｈｉｆｔ２、ｓｈｉｆｔ３、ｏｆｆｓｅｔ１およびｏｆｆｓｅｔ２は、次のように導出され得る。
【００７２】
・変数ｓｈｉｆｔ１はＢｉｔＤｅｐｔｈY−８に等しく設定され得る。変数ｓｈｉｆｔ２はＢｉｔＤｅｐｔｈY−２に等しく設定され得、変数ｓｈｉｆｔ３は１４−ＢｉｔＤｅｐｔｈYに等しく設定され得る。ＢｉｔＤｅｐｔｈYは８＋ｂｉｔ＿ｄｅｐｔｈ＿ｌｕｍａ＿ｍｉｎｕｓ８に等しく設定され得、ｂｉｔ＿ｄｅｐｔｈ＿ｌｕｍａ＿ｍｉｎｕｓ８＋８はルーマアレイのサンプルのビット深度を指定する。
【００７３】
・変数ｓｈｉｆｔ１が０に等しい場合、変数ｏｆｆｓｅｔ１は０に等しく設定される。そうでない場合、変数ｏｆｆｓｅｔ１は１＜＜（ｓｈｉｆｔ１−１）に等しく設定され得る。
【００７４】
・変数ｏｆｆｓｅｔ２は１＜＜（ｓｈｉｆｔ２−１）に等しく設定され得る。
【００７５】
フルサンプルロケーション（ｘＡi,j，ｙＡi,j）におけるルーマサンプルＡi,jを仮定すれば、分数サンプル位置におけるルーマサンプル「ａ0,0」〜「ｒ0,0」は、以下のルールによって導出され得る。ａ0,0、ｂ0,0、ｃ0,0、ｄ0,0、ｈ0,0、およびｎ0,0と標示されたサンプルは、最も近い整数位置サンプルに８タップフィルタを適用し、フィルタ処理された値をクリッピングすることによって導出され得る。
【数１８】
0005766878.tif 000019
【数１９】
0005766878.tif 000020
【数２０】
0005766878.tif 000021
【数２１】
0005766878.tif 000022
【数２２】
0005766878.tif 000023
【数２３】
0005766878.tif 000024
【００７６】
ｅ0,0、ｆ0,0、ｇ0,0、ｉ0,0、ｊ0,0、ｋ0,0、ｐ0,0、ｑ0,0およびｒ0,0と標示されたサンプルは、ｄ１i,0、ｈ１i,0およびｎ１i,0として示される中間値を最初に計算することによって導出され得、垂直方向において、最も近い整数位置サンプルに８タップフィルタを適用することによって、ｉ＝−３．．４である。
【数２４】
0005766878.tif 000025
【数２５】
0005766878.tif 000026
【数２６】
0005766878.tif 000027
【００７７】
最終予測値ｅ0,0、ｆ0,0、ｇ0,0、ｉ0,0、ｊ0,0、ｋ0,0、ｐ0,0、ｑ0,0およびｒ0,0は、中間値ｄ１i,0、ｈ１i,0およびｎ１i,0に８タップフィルタを適用することによって導出され得、水平方向においてｉ＝−３．．４である。
【数２７】
0005766878.tif 000028
【数２８】
0005766878.tif 000029
【数２９】
0005766878.tif 000030
【数３０】
0005766878.tif 000031
【数３１】
0005766878.tif 000032
【数３２】
0005766878.tif 000033
【数３３】
0005766878.tif 000034
【数３４】
0005766878.tif 000035
【数３５】
0005766878.tif 000036
【００７８】
影なしブロック内の小文字で標示された位置は、１／４ペルサンプル分数ロケーションにおけるルーマサンプルを表す。分数サンプルユニット（ｘＦｒａｃL，ｙＦｒａｃL）中のルーマロケーションオフセットは、フルサンプルロケーションおよび分数サンプルロケーションにおける生成されたルーマサンプルのうちのどれが、予測されたルーマサンプル値ｐｒｅｄＳａｍｐｌｅＬＸL［ｘL，ｙL］に割り当てられるかを指定する。ｐｒｅｄＳａｍｐｌｅＬＸL［ｘL，ｙL］の値は出力であり得る。
【００７９】
本開示の技法はクロマサンプル補間プロセスにも適用され得る。そのようなプロセスへの例示的な入力は以下の通りである。
【００８０】
フルサンプルユニット（ｘＩｎｔC，ｙＩｎｔC）中のクロマロケーション、
分数サンプルユニット（ｘＦｒａｃC，ｙＦｒａｃC）中のクロマロケーション、
クロマ参照サンプルアレイｒｅｆＰｉｃＬＸC。
【００８１】
このプロセスの出力は、予測されたクロマサンプル値ｐｒｅｄＳａｍｐｌｅＬＸC［ｘC，ｙC］であり得る。
【００８２】
図１３に、１／８サンプルクロマ補間のための整数サンプル（大文字をもつ影つきブロック）と分数サンプル位置（小文字をもつ影なしブロック）とを示す。図１３では、影つきブロック内の大文字Ｂi,jで標示された位置は、クロマサンプルの所与の２次元アレイｒｅｆＰｉｃＬＸC内のフルサンプルロケーションにおけるクロマサンプルを表す。これらのサンプルは、予測されたクロマサンプル値ｐｒｅｄＳａｍｐｌｅＬＸC［ｘC，ｙC］を生成するために使用され得る。クロマサンプルの所与のアレイｒｅｆＰｉｃＬＸC内の対応するクロマサンプルＢi,jの各々についてのロケーション（ｘＢi,j，ｙＢi,j）は、次のように導出される。
【数３６】
0005766878.tif 000037
【数３７】
0005766878.tif 000038
【００８３】
変数ｓｈｉｆｔ１、ｓｈｉｆｔ２、ｓｈｉｆｔ３、ｏｆｆｓｅｔ１およびｏｆｆｓｅｔ２は、次のように導出される。
【００８４】
変数ｓｈｉｆｔ１はＢｉｔＤｅｐｔｈC−８に等しく設定され、変数ｓｈｉｆｔ２はＢｉｔＤｅｐｔｈC−２に等しく設定され、変数ｓｈｉｆｔ３は１４−ＢｉｔＤｅｐｔｈCに等しく設定される。
【００８５】
変数ｓｈｉｆｔ１が０に等しい場合、変数ｏｆｆｓｅｔ１は０に等しく設定され、そうでない場合、変数ｏｆｆｓｅｔ１は１＜＜（ｓｈｉｆｔ１−１）に等しく設定される。
【００８６】
変数ｏｆｆｓｅｔ２は１＜＜（ｓｈｉｆｔ２−１）に等しく設定される。
【００８７】
フルサンプルロケーション（ｘＢi,j，ｙＢi,j）におけるクロマサンプルＢi,jを仮定すれば、分数サンプル位置におけるクロマサンプル「ａｂ0,0」〜「ｈｈ0,0」は、以下のルールによって導出される。
【００８８】
ａｂ0,0、ａｃ0,0、ａｄ0,0、ａｅ0,0、ａｆ0,0、ａｇ0,0、およびａｈ0,0と標示されたサンプルは、最も近い整数位置サンプルに４タップフィルタを適用し、フィルタ処理された値をクリッピングすることによって導出され得る。
【数３８】
0005766878.tif 000039
【数３９】
0005766878.tif 000040
【数４０】
0005766878.tif 000041
【数４１】
0005766878.tif 000042
【数４２】
0005766878.tif 000043
【数４３】
0005766878.tif 000044
【数４４】
0005766878.tif 000045
【００８９】
ｂａ0,0、ｃａ0,0、ｄａ0,0、ｅａ0,0、ｆａ0,0、ｇａ0,0、およびｈａ0,0と標示されたサンプルは、最も近い整数位置サンプルに４タップフィルタを適用し、フィルタ処理された値をクリッピングすることによって導出され得る。
【数４５】
0005766878.tif 000046
【数４６】
0005766878.tif 000047
【数４７】
0005766878.tif 000048
【数４８】
0005766878.tif 000049
【数４９】
0005766878.tif 000050
【数５０】
0005766878.tif 000051
【数５１】
0005766878.tif 000052
【００９０】
それぞれ、ｂ、ｃ、ｄ、ｅ、ｆ、ｇおよびｈによって置き換えられているＸについてのＸｂ0,0、Ｘｃ0,0、Ｘｄ0,0、Ｘｅ0,0、Ｘｆ0,0、Ｘｇ0,0およびＸｈ0,0と標示されたサンプルは、ｂａi,0、ｃａi,0、ｄａi,0、ｅａi,0、ｆａi,0、ｇａi,0およびｈａi,0として示される中間値を最初に計算することによって導出され得、垂直方向において、最も近い整数位置サンプルに４タップフィルタを適用することによって、ｉ＝−１．．２である。
【数５２】
0005766878.tif 000053
【数５３】
0005766878.tif 000054
【数５４】
0005766878.tif 000055
【数５５】
0005766878.tif 000056
【数５６】
0005766878.tif 000057
【数５７】
0005766878.tif 000058
【数５８】
0005766878.tif 000059
【００９１】
それぞれ、ｂ、ｃ、ｄ、ｅ、ｆ、ｇおよびｈによって置き換えられているＸについての最終予測値Ｘｂ0,0、Ｘｃ0,0、Ｘｄ0,0、Ｘｅ0,0、Ｘｆ0,0、Ｘｇ0,0およびＸｈ0,0は、中間値Ｘａi,0に４タップフィルタを適用することによって導出され得、水平方向においてｉ＝−１．．２である。
【数５９】
0005766878.tif 000060
【数６０】
0005766878.tif 000061
【数６１】
0005766878.tif 000062
【数６２】
0005766878.tif 000063
【数６３】
0005766878.tif 000064
【数６４】
0005766878.tif 000065
【数６５】
0005766878.tif 000066
【００９２】
本開示の技法によれば、ｅ0,0、ｆ0,0、ｇ0,0、ｉ0,0、ｊ0,0、ｋ0,0、ｐ0,0、ｑ0,0およびｒ0,0を補間するために、予測モジュールが、２段補間フィルタ処理（すなわち、垂直方向における１つのフィルタ処理演算および水平方向における１つのフィルタ処理演算）を実行し得る。中間値をより効率的に記憶するために、２段間で判断された中間値を１６ビットに保つことが望ましいことがある。説明のために、第１段補間フィルタ処理は以下の通りであると仮定する。
【数６６】
0005766878.tif 000067
【００９３】
上式で、Ｃ1〜Ｃ8は補間フィルタ係数を表し、Ａ1〜Ａ8はフルサンプル値を表す。現在のＨＥＶＣ補間フィルタは、一般に、係数−１、４、−１１、４０、４０、−１１、４、−１がＣ１〜Ｃ８のために使用されるときに７ビット利得を生成する。他の係数も使用され、他の係数は、同様に７ビット利得を生じ得る。入力値が１０ビット値について０〜１０２３の正値を有するので、フィルタ処理された係数値は正値のほうへバイアスされる。本開示の技法は、ダイナミックレンジを限定し、また、同時にその値を１６ビット値にし得る。これを達成する１つの方法は、潜在的にコーディング利得に影響を及ぼすことなしに、その値を１６ビット範囲に入れるために、丸めを用いて中間値を１だけ右シフトすることである。本実装形態が１６ビット値の使用を必要とする場合、これらの１６ビット範囲値は、以下の擬似コードによって示されるように、その値を符号付き１６ビット値に適合させるためにオフセットによってシフトされ得る。
【数６７】
0005766878.tif 000068
【００９４】
この例では、ｘは１６ビット範囲を有するが、ｘの値は１６ビットよりも大きくなり得る（たとえば１７ビット）。１７ビットｘ値を１６ビットにするために、ｘ値が１６ビット値として記憶され得るように、ｘ値から適切なオフセット（上式中のｏｆｆｓｅｔ２）が減算され得る。後で、ｘ値が再利用されようとしているとき、このオフセットは、元の値を取得するためにｘに再加算され得る。ｘ値の範囲はｘの最大値と最小値との差によって定義される。したがって、最大値が１７ビット値である場合でも、最大値と最小値との間の値の範囲は１６ビットのみであり得る。
【００９５】
このようにして、オフセットの値は、１７ビット値を１６ビット値に低減するのに十分な値であり得る。オフセットは非規範的であり得、これは、コーディング規格またはビットストリーム構成を顧慮せずにコーディングデバイスによって特定のオフセットが実装され得ることを意味する。同じ符号化ビデオデータを復号するとき、１つのビデオデコーダは、たとえば、第２のビデオデコーダとは異なるオフセット値を使用し得る。
【００９６】
フィルタ処理された値はシフト量だけシフトされるので、第２段フィルタ処理では、第２段のシフト量はシフト量だけ低減され得、それらの対応する丸めオフセットは、それに応じて調整され得る。
【００９７】
データが１７ビットであり、範囲が１６ビットであるとき、オフセットを要求することなしに精度を１６ビットに保つための別の代替案は、追加のビットだけ右にシフトすることである。したがって、上記の、紹介された、丸めオフセットを用いるまたは用いない１だけの右シフトは、丸めを用いるまたは用いない２だけの右シフトによって置き換えられ得る。フィルタ処理の順序は、最初に垂直、その後に水平であり、またはその逆も同様であり得る。第１段フィルタ処理の後に、右シフトがない中間値が１６ビットをオーバーフローすることがある２Ｄフィルタ処理事例の場合、現在中間値は２だけ右シフトされる。したがって、第２段は、この追加のシフトを補償するために右シフトが１減るであろう。この説明はすべて、入力サンプルが事実上１０ビットである事例（ｂｉｔｄｅｐｔｈ＋ｂｉｔｉｎｃｒｅｍｅｎｔ）についてである。
【００９８】
本開示の技法は、高精度双予測を使用した補間にも適用され得る。そのような場合、各予測方向について、水平フィルタ処理の後に垂直フィルタ処理（またはその逆）が実行され、２段フィルタ処理の出力は、最後の２つの予測の最終平均化まで、より高い精度に保たれる。第１段フィルタ処理の後にデータを１６ビットに保つために、フィルタ処理されたデータは、（丸めを用いてまたは用いずに）２ビットだけ右シフトされ得る。第２段の後に、データは、最後の１６ビット値を達成するために７ビットだけ右シフトされ得る。ダウンシフトは、丸めを用いてまたは用いずに行われ得る。これは、第１段において１ビットシフトが適用され、第２段において７ビットシフトが適用され、１７ビットデータを１６ビット整数値に移動するためにオフセットが使用された、上記で説明した事例の代替案である。最後に、２つの予測方向は、それらを合計し、丸めを用いて４だけダウンシフトすることによって平均化され得る。
【００９９】
また、８ビット入力データの場合、双予測事例について、１６ビットよりも大きいデータ値を有する問題が起こり得る。そのような場合、フィルタ処理の第１段の後に、オフセット（または右シフト演算）を適用する必要がないことがあるが、第２段フィルタ処理の後に、データは６ビットだけダウンシフトされ得る。最終結果は、１６ビット範囲をもつ１７ビット値であり得る。上記で説明したように、記憶のためにそれらを１６ビット値に低減するために、１７ビット値にオフセットが加算され得る。取り出された計算または将来の計算のとき、オフセットは、それらを元の１７ビット値に戻すために１６ビット値に再加算され得る。いくつかの事例では、オフセットを使用する代わりに、中間値が、（丸めオフセットを用いてまたは用いずに）７ビットだけダウンシフトされ得る。１０ビット事例（それらを合計し、丸めを用いて４だけダウンシフトする）の場合のように、２つの予測方向にわたる同様の種類の平均化が実行され得る。
【０１００】
中間データ値を１６ビット範囲内に保つための別の方法は、第１段フィルタ処理の後に、次のようにフィルタ処理された結果を右シフトすることであり得る。
【数６８】
0005766878.tif 000069
【数６９】
0005766878.tif 000070
【０１０１】
ただし、丸めオフセットがない。次いで、第２段フィルタ処理の場合、結果を１６ビット範囲内に保つために、丸めオフセットを使用せずに６の代わりに７だけ値が右シフトされる。同様の引数(arguments)がクロマに対して成り立つ(hold)。クロマサンプルの２Ｄフィルタ処理の場合、クロマ補間フィルタについての最大利得は２７＋４６＝７３である。これは、
【数７０】
0005766878.tif 000071
【０１０２】
フィルタである。したがって、１０ビット入力の場合、最大値は１０２３＊７３であろう。この値を１６ビット範囲値に低下させるための１つの方法は、丸めオフセットを用いてまたは用いずに１だけ右シフトすることである。代替的に、それは、丸めを用いてまたは用いずに２だけの右シフトによって１６ビット値に低下させられ得る。この追加の右シフトは、第２段フィルタ処理の後に１だけ少なくシフトすることによって補償される。
【０１０３】
クロマ双予測事例は、上記で説明したルーマ事例と同様であり得る。各リスト予測値について１６ビット値を有するために、第２段フィルタ処理の後に、サンプル値は１つの追加のビットだけシフトされ得、したがって、７ビットになる。この追加のビットシフトは双予測平均化段において補償される。
【０１０４】
双予測が使用されるとき、最終予測サンプルを形成するために様々な種類の予測を混合する可能性があり得る。たとえば、一方の予測は１Ｄ双予測を使用して実行され得るが、他方の予測は２Ｄ双予測を使用して実行され得る。２Ｄ双予測値を１６ビット値に保つための追加の１ビットシフトの導入では、２Ｄ双予測および１Ｄ双予測の解像度は異なる。１Ｄ双予測は、１つの追加のビット精度を有する（４ビット利得（６ビットフィルタ利得−２ビット右シフト）がある）。２Ｄ双予測は、２Ｄフィルタ処理−２ビット右シフト−７ビット右シフト＝３ビット利得からの６＋６利得を有する。すべての利得を等しく保つために、それらが２Ｄ双予測事例と同様の３ビット利得を有するように１つの追加のビットだけダウンシフトすることが有効であり得る。したがって、（１０ビット入力について）２の代わりに３だけの右シフトによって１Ｄ双予測サンプルが取得されることになる。同様の事例が８ビット入力サンプルに適用される。そのような事例では、１Ｄ双予測サンプルは１ビットだけシフトされ得る。
【０１０５】
本開示の技法は、ワイヤレスハンドセット、および集積回路（ＩＣ）またはＩＣのセット（すなわち、チップセット）を含む、多種多様なデバイスまたは装置において実装され得る。機能的態様を強調するために与えられた任意の構成要素、モジュールまたはユニットについて説明したが、異なるハードウェアユニットによる実現を必ずしも必要とするとは限らない。
【０１０６】
したがって、本明細書で説明する技法は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ハードウェアで実装する場合、モジュール、ユニットまたは構成要素として説明した特徴は、集積論理デバイスに一緒に、または個別であるが相互運用可能な論理デバイスとして別々に実装され得る。ソフトウェアで実装する場合、これらの技法は、プロセッサで実行されると、上記で説明した方法の１つまたは複数を実行する命令を備えるコンピュータ可読媒体に少なくとも部分的によって実現され得る。コンピュータ可読媒体は、非一時的コンピュータ可読記憶媒体を備え得、パッケージング材料を含むことがあるコンピュータプログラム製品の一部を形成し得る。コンピュータ可読記憶媒体は、同期型ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）などのランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、電気消去可能プログラマブル読取り専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリ、磁気または光学データ記憶媒体などを備え得る。本技法は、追加または代替として、命令またはデータ構造の形態でコードを搬送または通信し、コンピュータによってアクセス、読取り、および／または実行され得るコンピュータ可読通信媒体によって、少なくとも部分的に実現され得る。
【０１０７】
コードは、１つまたは複数のデジタル信号プロセッサ（ＤＳＰ）などの１つまたは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、または他の等価な集積回路またはディスクリート論理回路によって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明する技法の実装に好適な他の構造のいずれかを指す。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用のソフトウェアモジュールまたはハードウェアモジュール内に提供され得、あるいは複合ビデオコーデックに組み込まれ得る。また、本技法は、１つまたは複数の回路または論理要素中に十分に実装され得る。
【０１０８】
本開示の様々な態様について説明した。これらおよび他の態様は以下の特許請求の範囲内に入る。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［１］ピクセルのブロックをコーディングする方法であって、
ピクセルのブロックを取得することであって、ピクセルの前記ブロックが、ピクセルの前記ブロック内の整数ピクセル位置に対応する整数ピクセル値を含む、取得することと、
第１の中間ピクセル値を生成するために整数ピクセル値のグループに第１のフィルタ処理演算を適用することと、
第２の中間ピクセル値を生成するために前記第１の中間ピクセル値に第１のオフセットを加算することであって、前記第１のオフセットを加算することにより、前記第２の中間値が、前記第１の中間ピクセル値よりも小さいビット深度を有する、加算することと、
前記第２の中間ピクセル値を記憶することと、
前記第２の中間ピクセル値を取り出すことと、
前記取り出された第２の中間値に第２のオフセットを加算することと、
サブピクセルロケーションの第１のピクセル値を計算するために、前記加算された第２のオフセットをもつ前記取り出された第２の中間ピクセル値を備える中間ピクセル値のグループに第２のフィルタ処理演算を適用することと、
前記サブピクセルロケーションの少なくとも前記第１のピクセル値に基づいて予測ブロックを生成することと
を備える、方法。
［２］前記取り出された第２の中間値に前記第２のオフセットを加算することにより、前記第１の中間値が生じる、［１］に記載の方法。
［３］前記第１のオフセットを適用することが、１ビット右シフト演算を実行することを備える、［１］に記載の方法。
［４］前記第２のオフセットを適用することは、大きさが前記第１のオフセットに等しい、［１］に記載の方法。
［５］前記第１の中間ピクセル値が１７ビット値である、［１］に記載の方法。
［６］前記第２の中間ピクセル値が１６ビット値である、［１］に記載の方法。
［７］前記第１のピクセル値が１７ビット値である、［１］に記載の方法。
［８］前記第１のピクセル値のビット深度を１０ビットに低減すること
をさらに備える、［７］に記載の方法。
［９］整数ピクセル値の前記グループが１０ビット値である、［１］に記載の方法。
［１０］前記方法がビデオデコーダによって実行される、［１］の任意の組合せに記載の方法。
［１１］前記方法がビデオエンコーダによって実行される、［１］の任意の組合せに記載の方法。
［１２］ピクセルのブロックをコーディングするためのビデオコーディングデバイスであって、
ピクセルのブロックを取得することであって、ピクセルの前記ブロックが、ピクセルの前記ブロック内の整数ピクセル位置に対応する整数ピクセル値を含む、取得することと、
第１の中間ピクセル値を生成するために整数ピクセル値のグループに第１のフィルタ処理演算を適用することと、
第２の中間ピクセル値を生成するために前記第１の中間ピクセル値に第１のオフセットを加算することであって、前記第１のオフセットを加算することにより、前記第２の中間値が、前記第１の中間ピクセル値よりも小さいビット深度を有する、加算することと、
前記第２の中間ピクセル値を記憶することと、
前記第２の中間ピクセル値を取り出すことと、
前記取り出された第２の中間値に第２のオフセットを加算することと、
サブピクセルロケーションの第１のピクセル値を計算するために、前記加算された第２のオフセットをもつ前記取り出された第２の中間ピクセル値を備える中間ピクセル値のグループに第２のフィルタ処理演算を適用することと、
前記サブピクセルロケーションの少なくとも前記第１のピクセル値に基づいて予測ブロックを生成することと
を行うように構成されたビデオプロセッサ
を備える、ビデオコーディングデバイス。
［１３］前記取り出された第２の中間値に前記第２のオフセットを加算することにより、前記第１の中間値が生じる、［１２］に記載のビデオコーディングデバイス。
［１４］前記第１のオフセットを適用することが、１ビット右シフト演算を実行することを備える、［１２］に記載のビデオコーディングデバイス。
［１５］前記第２のオフセットを適用することは、大きさが前記第１のオフセットに等しい、［１２］に記載のビデオコーディングデバイス。
［１６］前記第１の中間ピクセル値が１７ビット値である、［１２］に記載のビデオコーディングデバイス。
［１７］前記第２の中間ピクセル値が１６ビット値である、［１２］に記載のビデオコーディングデバイス。
［１８］前記第１のピクセル値が１７ビット値である、［１２］に記載のビデオコーディングデバイス。
［１９］前記ビデオコーダが、前記第１のピクセル値のビット深度を１０ビットに低減するようにさらに構成された、［１８］に記載のビデオコーディングデバイス。
［２０］整数ピクセル値の前記グループが１０ビット値である、［１２］に記載のビデオコーディングデバイス。
［２１］前記ビデオコーダがビデオデコーダを備える、［１２］に記載のビデオコーディングデバイス。
［２２］前記ビデオコーダがビデオエンコーダを備える、［１２］に記載のビデオコーディングデバイス。
［２３］前記ビデオコーディングデバイスが、
集積回路と、
マイクロプロセッサと、
前記ビデオコーダを含むワイヤレス通信デバイスと
のうちの少なくとも１つを備える、［１２］に記載のビデオコーディングデバイス。
［２４］ピクセルのブロックをコーディングするための装置であって、
ピクセルのブロックを取得するための手段であって、ピクセルの前記ブロックが、ピクセルの前記ブロック内の整数ピクセル位置に対応する整数ピクセル値を含む、取得するための手段と、
第１の中間ピクセル値を生成するために整数ピクセル値のグループに第１のフィルタ処理演算を適用するための手段と、
第２の中間ピクセル値を生成するために前記第１の中間ピクセル値に第１のオフセットを加算するための手段であって、前記第１のオフセットを適用することにより、前記第２の中間値が、前記第１の中間ピクセル値よりも小さいビット深度を有する、加算するための手段と、
前記第２の中間ピクセル値を記憶するための手段と、
前記第２の中間ピクセル値を取り出すための手段と、
前記取り出された第２の中間値に第２のオフセットを加算するための手段と、
サブピクセルロケーションの第１のピクセル値を計算するために、前記加算された第２のオフセットをもつ前記取り出された第２の中間ピクセル値を備える中間ピクセル値のグループに第２のフィルタ処理演算を適用するための手段と、
前記サブピクセルロケーションの少なくとも前記第１のピクセル値に基づいて予測ブロックを生成するための手段と
を備える、装置。
［２５］実行されたとき、１つまたは複数のプロセッサに、
ピクセルのブロックを取得することであって、ピクセルの前記ブロックが、ピクセルの前記ブロック内の整数ピクセル位置に対応する整数ピクセル値を含む、取得することと、
第１の中間ピクセル値を生成するために整数ピクセル値のグループに第１のフィルタ処理演算を適用することと、
第２の中間ピクセル値を生成するために前記第１の中間ピクセル値に第１のオフセットを加算することであって、前記第１のオフセットを適用することにより、前記第２の中間値が、前記第１の中間ピクセル値よりも小さいビット深度を有する、加算することと、
前記第２の中間ピクセル値を記憶することと、
前記第２の中間ピクセル値を取り出すことと、
前記取り出された第２の中間値に第２のオフセットを加算することと、
サブピクセルロケーションの第１のピクセル値を計算するために、前記加算された第２のオフセットをもつ前記取り出された第２の中間ピクセル値を備える中間ピクセル値のグループに第２のフィルタ処理演算を適用することと、
前記サブピクセルロケーションの少なくとも前記第１のピクセル値に基づいて予測ブロックを生成することと
を行わせる命令を記憶するコンピュータ可読記憶媒体。
【図１】
0005766878.tif 000072
【図２】
0005766878.tif 000073
【図３】
0005766878.tif 000074
【図４】
0005766878.tif 000075
【図５】
0005766878.tif 000076
【図６】
0005766878.tif 000077
【図７】
0005766878.tif 000078
【図８】
0005766878.tif 000079
【図９】
0005766878.tif 000080
【図１０】
0005766878.tif 000081
【図１１】
0005766878.tif 000082
【図１２】
0005766878.tif 000083
【図１３】
0005766878.tif 000084