(57)【要約】  ビデオデータの符号化またはビデオビットストリームの復号中に、補間フィルタを適応的に切り替えるためのシステム、方法、および装置が提供される。様々なインプリメンテーションでは、補間フィルタのセットが定義され、コーディングデバイスに利用可能にされ得る。コーディングデバイスは、所与のコーディングユニットのために補間フィルタを選択し得る。補間フィルタは、例えば、特に、コーディングユニットのコーディングレベルに基づいて選択され得る。いくつかの例では、選択された補間フィルタのシグナリングが、所与のコーディング状況のために補間フィルタのセットのサブセットを選択することによって、単純化され得る。その後、サブセットからの補間フィルタを示すインデックスが、シグナリングされ得る。代替として、デコーダが、ビットストリームによって提供されるデータから補間フィルタの識別を導出し得、このケースでは、インデックスは、ビットストリーム中で明示的にシグナリングされる必要はない。
2019535198.tif 000002
【特許請求の範囲】
【請求項１】
ビデオデータを符号化する方法であって、
前記ビデオデータを取得することと、
コーディングユニットについて、補間フィルタのセットから補間フィルタのサブセットを決定することと、ここにおいて、前記補間フィルタのサブセットは、前記コーディングユニットに関連付けられた、前記ビデオデータ中の情報に基づいて決定され、
前記コーディングユニットを符号化することと、ここにおいて、前記コーディングユニットを符号化することは、前記コーディングユニットについての動き推定および動き補償のために補間フィルタを選択することを含み、ここにおいて、前記補間フィルタは、前記補間フィルタのサブセットから選択され、
符号化されたビデオビットストリームを生成することと、ここにおいて、前記符号化されたビデオビットストリームは、前記符号化されたコーディングユニットを含む、
を備える方法。
【請求項２】
前記補間フィルタのサブセットは、前記コーディングユニットのコーディングレベルに基づいて決定される、請求項１に記載の方法。
【請求項３】
前記補間フィルタのサブセットは、前記コーディングユニットのための予測モードに基づいて決定される、請求項１に記載の方法。
【請求項４】
前記補間フィルタのサブセットは、前記コーディングユニットに関連付けられた動き情報に基づいて決定される、請求項１に記載の方法。
【請求項５】
前記補間フィルタのサブセットは、前記コーディングユニットをコーディングするために使用されるコーディングツールに基づいて決定される、請求項１に記載の方法。
【請求項６】
前記補間フィルタのサブセットは、前記コーディングユニットのサイズに基づいて決定される、請求項１に記載の方法。
【請求項７】
前記補間フィルタは、以前にコーディングされたブロックから選択される、請求項１に記載の方法。
【請求項８】
前記補間フィルタは、前記コーディングユニットの隣接ブロックから選択される、請求項１に記載の方法。
【請求項９】
前記補間フィルタを第２の補間フィルタとマージすること、ここにおいて、結果として得られるマージされた補間フィルタが、前記動き推定および前記動き補償のために使用される、
をさらに備える、請求項１に記載の方法。
【請求項１０】
前記補間フィルタは、第２の補間フィルタに関連付けられ、前記補間フィルタは、整数ピクセル位置のためのものであり、前記第２の補間フィルタは、分数ピクセル位置のためのものである、請求項１に記載の方法。
【請求項１１】
前記補間フィルタと前記第２の補間フィルタは、異なるカットオフ周波数を有する、請求項１０に記載の方法。
【請求項１２】
前記符号化されたビデオビットストリームは、前記補間フィルタを識別する値を含む、請求項１に記載の方法。
【請求項１３】
前記補間フィルタのセットは、前記符号化されたビデオビットストリームとともにシグナリングされず、前記補間フィルタの識別は、前記符号化されたビデオビットストリームから暗示され得る、請求項１に記載の方法。
【請求項１４】
装置であって、
ビデオデータを記憶するように構成されたメモリと、
前記ビデオデータを取得することと、
コーディングユニットについて、補間フィルタのセットから補間フィルタのサブセットを決定することと、ここにおいて、前記補間フィルタのサブセットは、前記コーディングユニットに関連付けられた、前記ビデオデータ中の情報に基づいて決定され、
前記コーディングユニットを符号化することと、ここにおいて、前記処理を符号化することは、動き推定および動き補償のために補間フィルタを選択することを含み、ここにおいて、前記補間フィルタは、前記補間フィルタのサブセットから選択され、
符号化されたビデオビットストリームを生成することと、ここにおいて、前記符号化されたビデオビットストリームは、前記符号化されたコーディングユニットを含む、
を行うように構成されたプロセッサと
を備える装置。
【請求項１５】
前記装置は、ピクチャをキャプチャするためのカメラを有するモバイルデバイスを備える、請求項１４に記載の装置。
【請求項１６】
命令を記憶したコンピュータ可読媒体であって、前記命令は、プロセッサによって実行されると、前記プロセッサに、
ビデオデータを取得することと、
コーディングユニットについて、補間フィルタのセットから補間フィルタのサブセットを決定することと、ここにおいて、前記補間フィルタのサブセットは、前記コーディングユニットに関連付けられた、前記ビデオデータ中の情報に基づいて決定され、
前記コーディングユニットを符号化することと、ここにおいて、前記コーディングユニットを符号化することは、動き推定および動き補償のために補間フィルタを選択することを含み、ここにおいて、前記補間フィルタは、前記補間フィルタのサブセットから選択され、
符号化されたビデオビットストリームを生成することと、ここにおいて、前記符号化されたビデオビットストリームは、前記符号化されたコーディングユニットを含む、
を含む動作を実行させる、コンピュータ可読媒体。
【請求項１７】
ビデオデータを符号化するための装置であって、
ビデオデータを取得するための手段と、
コーディングユニットについて、補間フィルタのセットから補間フィルタのサブセットを決定するための手段と、ここにおいて、前記補間フィルタのサブセットは、前記コーディングユニットに関連付けられた、前記ビデオデータ中の情報に基づいて決定され、
前記コーディングユニットを符号化するための手段と、ここにおいて、前記コーディングユニットを符号化するための前記手段は、動き推定および動き補償のために補間フィルタを選択することを含み、ここにおいて、前記補間フィルタは、補間フィルタのセットから選択され、
符号化されたビデオビットストリームを生成するための手段と、ここにおいて、前記符号化されたビデオビットストリームは、前記符号化されたコーディングユニットを含む、
を備える装置。
【請求項１８】
ビデオデータを復号するための方法であって、
符号化されたビデオビットストリームを取得することと、
前記符号化されたビデオビットストリームから現在のフレーム中のコーディングユニットのための参照フレームを決定することと、
補間フィルタのセットから補間フィルタのサブセットを決定することと、ここにおいて、前記補間フィルタのサブセットは、前記コーディングユニットに関連付けられた、前記符号化されたビデオビットストリーム中の情報に基づいて決定され、
前記補間フィルタのサブセットから補間フィルタを決定することと、
前記コーディングユニットを再構成するために、前記参照フレームおよび前記補間フィルタを使用することと
を備える方法。
【請求項１９】
前記補間フィルタのサブセットは、前記コーディングユニットのコーディングレベルに基づいて決定される、請求項１８に記載の方法。
【請求項２０】
前記補間フィルタのサブセットは、前記コーディングユニットのための予測モードに基づいて決定される、請求項１８に記載の方法。
【請求項２１】
前記補間フィルタのサブセットは、前記コーディングユニットに関連付けられた動き情報に基づいて決定される、請求項１８に記載の方法。
【請求項２２】
前記補間フィルタのサブセットは、前記コーディングユニットをコーディングするために使用されるコーディングツールに基づいて決定される、請求項１８に記載の方法。
【請求項２３】
前記補間フィルタのサブセットは、前記コーディングユニットのサイズに基づいて決定される、請求項１８に記載の方法。
【請求項２４】
前記補間フィルタは、以前にコーディングされたブロックから選択される、請求項１８に記載の方法。
【請求項２５】
前記補間フィルタは、隣接ブロックから選択される、請求項１８に記載の方法。
【請求項２６】
前記補間フィルタを第２の補間フィルタとマージすること、ここにおいて、結果として得られるマージされた補間フィルタが、前記コーディングユニットを再構成するために使用される、
をさらに備える、請求項１８に記載の方法。
【請求項２７】
前記補間フィルタは、第２の補間フィルタに関連付けられ、前記補間フィルタは、整数ピクセル位置のためのものであり、前記第２の補間フィルタは、分数ピクセル位置のためのものである、請求項１８に記載の方法。
【請求項２８】
前記補間フィルタと前記第２の補間フィルタは、異なるカットオフ周波数を有する、請求項２７に記載の方法。
【請求項２９】
前記符号化されたビデオビットストリームは、前記補間フィルタを識別する値を含む、請求項１８に記載の方法。
【請求項３０】
前記符号化されたビデオビットストリームを使用して、前記補間フィルタの識別を導出すること
をさらに備える、請求項１８に記載の方法。
【請求項３１】
装置であって、
符号化されたビデオデータを記憶するように構成されたメモリと、
符号化されたビデオビットストリームを取得することと、
前記符号化されたビデオビットストリームから現在のフレーム中のコーディングユニットのための参照フレームを決定することと、
補間フィルタのセットから補間フィルタのサブセットを決定することと、ここにおいて、前記補間フィルタのサブセットは、前記コーディングユニットに関連付けられた、前記符号化されたビデオビットストリーム中の情報に基づいて決定され、
前記補間フィルタのサブセットから補間フィルタを決定することと、
前記コーディングユニットを再構成するために、前記参照フレームおよび前記補間フィルタを使用することと
を行うように構成されたプロセッサと
を備える装置。
【請求項３２】
前記ビデオデータを表示するためのディスプレイ
をさらに備える、請求項３１に記載の装置。
【請求項３３】
前記装置は、ピクチャをキャプチャするためのカメラを有するモバイルデバイスを備える、請求項３１に記載の装置。
【請求項３４】
命令を記憶したコンピュータ可読媒体であって、前記命令は、プロセッサによって実行されると、前記プロセッサに、
符号化されたビデオビットストリームを取得することと、
前記符号化されたビデオビットストリームから現在のフレーム中のコーディングユニットのための参照フレームを決定することと、
補間フィルタのセットから補間フィルタのサブセットを決定することと、ここにおいて、前記補間フィルタのサブセットは、前記コーディングユニットに関連付けられた、前記符号化されたビデオビットストリーム中の情報に基づいて決定され、
前記補間フィルタのサブセットから補間フィルタを決定することと、
前記コーディングユニットを再構成するために、前記参照フレームおよび前記補間フィルタを使用することと
を含む動作を実行させる、コンピュータ可読媒体。
【請求項３５】
ビデオデータを復号するための装置であって、
符号化されたビデオビットストリームを取得するための手段と、
前記符号化されたビデオビットストリームから現在のフレーム中のコーディングユニットのための参照フレームを決定するための手段と、
補間フィルタのセットから補間フィルタのサブセットを決定するための手段と、ここにおいて、前記補間フィルタのサブセットは、前記コーディングユニットに関連付けられた、前記符号化されたビデオビットストリーム中の情報に基づいて決定され、
前記補間フィルタのサブセットから補間フィルタを決定するための手段と、
前記コーディングユニットを再構成するために、前記参照フレームおよび前記補間フィルタを使用するための手段と
を備える装置。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本願は、ＪＥＭ（Joint Exploration Model）で開発されているコードを含む、アドバンストビデオコーデックのコンテキストにおいて、動き推定（ＭＥ）および動き補償（ＭＣ）プロセスにおいて使用されることになる補間フィルタを切り替えることに関する。例えば、提案された方法は、適応的なやり方で、複数の補間フィルタを採用することによって、インターレイヤ予測のパフォーマンスを改善する。
【背景技術】
【０００２】
[0002]ビデオコーディング規格は、ＩＴＵ−Ｔ  Ｈ．２６１、ＩＳＯ／ＩＥＣ  ＭＰＥＧ−１  Ｖｉｓｕａｌ、ＩＴＵ−Ｔ  Ｈ．２６２またはＩＳＯ／ＩＥＣ  ＭＰＥＧ−２  Ｖｉｓｕａｌ、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＳＯ／ＩＥＣ  ＭＰＥＧ−４  Ｖｉｓｕａｌ、および（ＩＳＯ／ＩＥＣ  ＭＰＥＧ−４  ＡＶＣとしても知られる）ＩＴＵ−Ｔ  Ｈ．２６４を含み、そのスケーラブルビデオコーディング（ＳＶＣ）およびマルチビュービデオコーディング（ＭＶＣ）拡張を含む。
【０００３】
[0003]加えて、そのレンジおよびスクリーンコンテンツコーディング拡張と、３Ｄビデオコーディング（３Ｄ−ＨＥＶＣ）スケーラブル拡張（ＳＨＶＣ）とおよびマルチビュー拡張（ＭＶ−ＨＥＶＣ）と、を含む、新しいビデオコーディング規格、すなわち高効率ビデオコーディング（ＨＥＶＣ）またはＩＴＵ−Ｔ  Ｈ．２６５が、ビデオコーディング共同研究部会（ＪＣＴ−ＶＣ）、ならびにＩＴＵ−Ｔビデオコーディングエキスパートグループ（ＶＣＥＧ）と、ＩＳＯ／ＩＥＣモーションピクチャエキスパートグループ（ＭＰＥＧ）との３Ｄビデオコーディング拡張開発共同研究部会（ＪＣＴ−３Ｖ）によって、近年開発されてきた。
【０００４】
[0004]２０１６年に、ＭＰＥＧとＩＴＵ−Ｔ  ＶＣＥＧは、次世代のビデオコーディング規格についての新しいコーディングツールを調査するために、ＪＶＥＴ（joint exploration video team）を設立した。参照ソフトウェアは、ＪＥＭ（joint exploration model）と呼ばれる。
【発明の概要】
【０００５】
[0005]ビデオ圧縮技法は、入力ビデオ信号に固有の冗長性を低減または取り除くために、空間的および時間的予測を実行する。時間的冗長性（すなわち、隣接フレームにおける視覚的類似性）を低減させるために、動き推定が行われて、ビデオにおけるオブジェクトの動き（movement）を追跡する。動きベクトルは、ピクセル単位の距離で変位を示し得る。いくつかのケースでは、動きベクトルは、１／２ピクセル、１／４ピクセル、または１／１６ピクセル距離など、整数ピクセル精度よりも高い精度を有し得る。より細かい精度は、ビデオコーダがより正確に動きフィールドを追跡し、したがって、より良い予測を得ることを可能にし得る。
【０００６】
[0006]少なくとも１つの例によると、ビデオデータを取得することを含む、ビデオデータを符号化する方法が提供される。方法は、コーディングユニットについて、補間フィルタのセットから補間フィルタのサブセットを決定することをさらに含み、ここにおいて、補間フィルタのサブセットは、コーディングユニットに関連付けられた、ビデオデータ中の情報に基づいて決定される。方法は、コーディングユニットを符号化することをさらに含み、ここにおいて、コーディングユニットを符号化することは、コーディングユニットについての動き推定および動き補償のために補間フィルタを選択することを含み、ここにおいて、補間フィルタは、補間フィルタのサブセットから選択される。方法は、符号化されたビデオビットストリームを生成することをさらに含み、ここにおいて、符号化されたビデオビットストリームは、符号化されたコーディングユニットを含む。
【０００７】
[0007]別の例では、ビデオデータを記憶するように構成されたメモリと、プロセッサとを含む装置が提供される。プロセッサは、ビデオデータを取得し得るように構成される。プロセッサは、コーディングユニットについて、補間フィルタのセットから補間フィルタのサブセットを決定し得るように構成され、ここにおいて、補間フィルタのサブセットは、コーディングユニットに関連付けられた、ビデオデータ中の情報に基づいて決定される。プロセッサは、コーディングユニットを符号化し得るように構成され、ここにおいて、処理を符号化することは、動き推定および動き補償のために補間フィルタを選択することを含み、ここにおいて、補間フィルタは、補間フィルタのサブセットから選択される。プロセッサは、符号化されたビデオビットストリームを生成し得るように構成され、ここにおいて、符号化されたビデオビットストリームは、符号化されたコーディングユニットを含む。
【０００８】
[0008]別の例では、プロセッサによって実行されると、ビデオデータを取得することを含む方法を実行する命令を記憶したコンピュータ可読媒体が提供される。方法は、コーディングユニットについて、補間フィルタのセットから補間フィルタのサブセットを決定することをさらに含み、ここにおいて、補間フィルタのサブセットは、コーディングユニットに関連付けられた、ビデオデータ中の情報に基づいて決定される。方法は、コーディングユニットを符号化することをさらに含み、ここにおいて、コーディングユニットを符号化することは、コーディングユニットについての動き推定および動き補償のために補間フィルタを選択することを含み、ここにおいて、補間フィルタは、補間フィルタのセットから選択される。方法は、符号化されたビデオビットストリームを生成することをさらに含み、ここにおいて、符号化されたビデオビットストリームは、符号化されたコーディングユニットを含む。
【０００９】
[0009]別の例では、ビデオデータを取得するための手段を含む装置が提供される。装置は、コーディングユニットについて、補間フィルタのセットから補間フィルタのサブセットを決定するための手段をさらに含み、ここにおいて、補間フィルタのサブセットは、コーディングユニットに関連付けられた、ビデオデータ中の情報に基づいて決定される。装置は、コーディングユニットを符号化するための手段をさらに備え、ここにおいて、コーディングユニットを符号化することは、コーディングユニットについての動き推定および動き補償のために補間フィルタを選択することを含み、ここにおいて、補間フィルタは、補間フィルタのサブセットから選択される。装置は、符号化されたビデオビットストリームを生成するための手段をさらに備え、ここにおいて、符号化されたビデオビットストリームは、符号化されたコーディングユニットを含む。
【００１０】
[0010]いくつかの態様では、上記で説明された方法、装置、およびコンピュータ可読媒体は、補間フィルタのセットから補間フィルタのサブセットを決定することをさらに備え、ここにおいて、補間フィルタのサブセットは、コーディングユニットのコーディングレベルに基づいて決定され、ここにおいて、補間フィルタは、補間フィルタのサブセットから決定される。
【００１１】
[0011]いくつかの態様では、上記で説明された方法、装置、およびコンピュータ可読媒体は、補間フィルタのセットから補間フィルタのサブセットを決定することをさらに備え、ここにおいて、補間フィルタのサブセットは、コーディングユニットのための予測モードに基づいて決定され、ここにおいて、補間フィルタは、補間フィルタのサブセットから決定される。
【００１２】
[0012]いくつかの態様では、上記で説明された方法、装置、およびコンピュータ可読媒体は、補間フィルタのセットから補間フィルタのサブセットを決定することをさらに備え、ここにおいて、補間フィルタのサブセットは、動き情報に基づいて決定され、ここにおいて、補間フィルタは、補間フィルタのサブセットから決定される。
【００１３】
[0013]いくつかの態様では、上記で説明された方法、装置、およびコンピュータ可読媒体は、補間フィルタのセットから補間フィルタのサブセットを決定することをさらに備え、ここにおいて、補間フィルタのサブセットは、コーディングユニットをコーディングするために使用されるコーディングツールに基づいて決定され、ここにおいて、補間フィルタは、補間フィルタのサブセットから決定される。
【００１４】
[0014]いくつかの態様では、補間フィルタは、以前にコーディングされたブロックから選択される。いくつかの態様では、補間フィルタは、コーディングユニットの隣接ブロックから選択される。
【００１５】
[0015]いくつかの態様では、上記で説明された方法、装置、およびコンピュータ可読媒体は、補間フィルタを第２の補間フィルタとマージすることをさらに備え、ここにおいて、結果として得られるマージされた補間フィルタは、動き推定のために使用される。
【００１６】
[0016]いくつかの態様では、補間フィルタは、第２の補間フィルタに関連付けられ、ここにおいて、補間フィルタは、整数ピクセル位置のためのものであり、ここにおいて、第２の補間フィルタは、分数ピクセル位置のためのものである。
【００１７】
[0017]いくつかの態様では、補間フィルタと第２の補間フィルタは、異なるカットオフ周波数（cut-off frequencies）を有する。
【００１８】
[0018]いくつかの態様では、符号化されたビデオビットストリームは、補間フィルタを識別する値を含む。
【００１９】
[0019]いくつかの態様では、補間フィルタのセットは、符号化されたビデオビットストリームとともにシグナリングされず、ここにおいて、補間フィルタの識別は、符号化されたビデオビットストリームから暗示され得る。
【００２０】
[0020]いくつかの態様では、上記で説明されたような装置は、ピクチャをキャプチャするためのカメラを含み得る。
【００２１】
[0021]少なくとも１つの例によると、符号化されたビデオビットストリームを取得することを含む、ビデオデータを復号する方法が提供される。方法は、符号化されたビデオビットストリームから現在のフレーム中のコーディングユニットのための参照フレームを決定することをさらに含む。方法は、補間フィルタのセットから補間フィルタのサブセットを決定することをさらに含み、ここにおいて、補間フィルタのサブセットは、コーディングユニットに関連付けられた、符号化されたビデオビットストリーム中の情報に基づいて決定される。方法は、補間フィルタのサブセットから補間フィルタを決定することをさらに含む。方法は、コーディングユニットを再構成するために、参照フレームおよび補間フィルタを使用することをさらに含む。
【００２２】
[0022]別の例では、ビデオデータを記憶するように構成されたメモリと、プロセッサとを含む装置が提供される。プロセッサは、符号化されたビデオビットストリームを取得し得るように構成される。プロセッサは、符号化されたビデオビットストリームから現在のフレーム中のコーディングユニットのための参照フレームを決定し得るように構成される。プロセッサは、補間フィルタのセットから補間フィルタのサブセットを決定するようにさらに構成され、ここにおいて、補間フィルタのサブセットは、コーディングユニットに関連付けられた、符号化されたビデオビットストリーム中の情報に基づいて決定される。プロセッサは、補間フィルタのサブセットから補間フィルタを決定し得るように構成される。プロセッサは、コーディングユニットを再構成するために、参照フレームおよび補間フィルタを使用し得るように構成される。
【００２３】
[0023]別の例では、プロセッサによって実行されると、符号化されたビデオビットストリームを取得することを含む方法を実行する命令を記憶したコンピュータ可読媒体が提供される。方法は、符号化されたビデオビットストリームから現在のフレーム中のコーディングユニットのための参照フレームを決定することをさらに含む。方法は、補間フィルタのセットから補間フィルタのサブセットを決定することをさらに含み、ここにおいて、補間フィルタのサブセットは、コーディングユニットに関連付けられた、符号化されたビデオビットストリーム中の情報に基づいて決定される。方法は、補間フィルタのセットから補間フィルタを決定することをさらに含む。方法は、コーディングユニットを再構成するために、参照フレームおよび補間フィルタを使用することをさらに含む。
【００２４】
[0024]別の例では、符号化されたビデオビットストリームを取得するための手段を含む装置が提供される。装置は、符号化されたビデオビットストリームから現在のフレーム中のコーディングユニットのための参照フレームを決定するための手段をさらに備える。装置は、補間フィルタのセットから補間フィルタのサブセットを決定するための手段をさらに含み、ここにおいて、補間フィルタのサブセットは、コーディングユニットに関連付けられた、符号化されたビデオビットストリーム中の情報に基づいて決定される。装置は、補間フィルタのサブセットから補間フィルタを決定するための手段をさらに備える。装置は、コーディングユニットを再構成するために、参照フレームおよび補間フィルタを使用するための手段をさらに備える。
【００２５】
[0025]いくつかの態様では、上記で説明された方法、装置、およびコンピュータ可読媒体は、補間フィルタのセットから補間フィルタのサブセットを決定することをさらに備え、ここにおいて、補間フィルタのサブセットは、コーディングユニットのコーディングレベルに基づいて決定され、ここにおいて、補間フィルタは、補間フィルタのサブセットから決定される。
【００２６】
[0026]いくつかの態様では、上記で説明された方法、装置、およびコンピュータ可読媒体は、補間フィルタのセットから補間フィルタのサブセットを決定することをさらに備え、ここにおいて、補間フィルタのサブセットは、コーディングユニットのための予測モードに基づいて決定され、ここにおいて、補間フィルタは、補間フィルタのサブセットから決定される。
【００２７】
[0027]いくつかの態様では、上記で説明された方法、装置、およびコンピュータ可読媒体は、補間フィルタのセットから補間フィルタのサブセットを決定することをさらに備え、ここにおいて、補間フィルタのサブセットは、動き情報に基づいて決定され、ここにおいて、補間フィルタは、補間フィルタのサブセットから決定される。
【００２８】
[0028]いくつかの態様では、上記で説明された方法、装置、およびコンピュータ可読媒体は、補間フィルタのセットから補間フィルタのサブセットを決定することをさらに備え、ここにおいて、補間フィルタのサブセットは、コーディングユニットをコーディングするために使用されるコーディングツールに基づいて決定され、ここにおいて、補間フィルタは、補間フィルタのサブセットから決定される。
【００２９】
[0029]いくつかの態様では、補間フィルタは、以前にコーディングされたブロックから選択される。いくつかの態様では、補間フィルタは、隣接ブロックから選択される。
【００３０】
[0030]いくつかの態様では、上記で説明された方法、装置、およびコンピュータ可読媒体は、補間フィルタを第２の補間フィルタとマージすることをさらに備え、ここにおいて、結果として得られるマージされた補間フィルタは、予測ユニットを再構成するために使用される。
【００３１】
[0031]いくつかの態様では、補間フィルタは、第２の補間フィルタに関連付けられ、ここにおいて、補間フィルタは、整数ピクセル位置のためのものであり、ここにおいて、第２の補間フィルタは、分数ピクセル位置のためのものである。いくつかの態様では、補間フィルタと第２の補間フィルタは、異なるカットオフ周波数を有する。
【００３２】
[0032]いくつかの態様では、符号化されたビデオビットストリームは、補間フィルタを識別する値を含む。
【００３３】
[0033]いくつかの態様では、上記で説明された方法、装置、およびコンピュータ可読媒体は、符号化されたビデオビットストリームを使用して、補間フィルタの識別を導出することをさらに備える。
【００３４】
[0034]いくつかの態様では、上記で説明されたような装置は、ピクチャをキャプチャするためのカメラを含み得る。いくつかの態様では、装置は、ビデオデータを表示するためのディスプレイを含み得る。
【図面の簡単な説明】
【００３５】
[0035]本発明の例示的な実施形態が、以下の図面を参照して、以下で詳細に説明される。
【図１】[0036]図１は、符号化デバイスおよび復号デバイスの例を例示するブロック図である。
【図２】[0037]図２は、現在のフレームからの現在のブロックについての符号化プロセスの例を例示する。
【図３】[0038]図３は、分数ピクセル位置の例を例示する。
【図４】[0039]図４は、符号化プロセスの動き推定ステップの例を例示する。
【図５】[0040]図５は、復号プロセスの動き推定ステップの例を例示する。
【図６】[0041]図６は、３つの例となるフィルタ、Ｆ０、Ｆ１、およびＦ２の周波数応答を例示するグラフである。
【図７】[0042]図７は、符号化プロセス中に補間フィルタを切り替えるためのプロセスの例を例示する。
【図８】[0043]図８は、復号プロセスにおいて補間フィルタを切り替えるためのプロセスの例である。
【図９】[0044]図９は、例となる符号化デバイスを例示するブロック図である。
【図１０】[0045]図１０は、例となるビデオ復号デバイスを例示するブロック図である。
【詳細な説明】
【００３６】
[0046]本開示のある特定の態様および実施形態が、以下で提供される。当業者に明らかであるように、これらの態様および実施形態のうちのいくつかは、独立に適用され得、また、それらのうちのいくつかは、組合せにおいて適用され得る。以下の説明では、説明を目的として、特定の詳細が本発明の実施形態の完全な理解を提供するために示される。しかしながら、様々な実施形態が、これらの特定の詳細なしで実施され得ることは、明らかであろう。図面および説明は、限定的であるようには意図されない。
【００３７】
[0047]次に続く説明は、例示的な実施形態のみを提供しており、本開示の範囲、適用可能性、または構成を限定するようには意図されない。むしろ、例示的な実施形態の次に続く説明は、例示的な実施形態をインプリメントすることを可能にする説明を当業者に提供するであろう。様々な変更が、添付の特許請求の範囲に示されるような本発明の趣旨および範囲から逸脱することなく、要素の配置および機能において行われ得ることが理解されるべきである。
【００３８】
[0048]特定の詳細は、実施形態の完全な理解を提供するために、以下の説明において与えられる。しかしながら、当業者であれば、実施形態が、これらの特定の詳細なしで実施され得ることを理解するであろう。例えば、回路、システム、ネットワーク、プロセス、および他の構成要素が、不要な詳細で実施形態を曖昧にしないために、ブロック図形式の構成要素として示され得る。他の事例では、周知の回路、プロセス、アルゴリズム、構造、および技法が、実施形態を曖昧にすることを避けるために、不要な詳細なしで示され得る。
【００３９】
[0049]また、個々の実施形態は、フローチャート、フロー図、データフロー図、構造図、またはブロック図として図示されるプロセスとして説明され得ることに留意されたい。フローチャートは、シーケンシャルプロセスとして動作を説明し得るが、動作の多くは、並行してまたは同時並行に実行され得る。加えて、動作の順序は再配置され得る。プロセスは、その動作が完了したときに終了するが、図面に含まれていない追加のステップを有し得る。プロセスは、方法、関数、プロシージャ、サブルーチン、サブプログラム、等に対応し得る。プロセスが関数に対応するとき、その終了は、この関数が呼び出し関数または主関数に戻ることに対応し得る。
【００４０】
[0050]「コンピュータ可読媒体」という用語は、それに限定されるものではないが、ポータブルまたは非ポータブル記憶デバイス、光記憶デバイス、および（１つまたは複数の）命令および／またはデータを記憶、包含、または搬送することが可能な様々な他の媒体を含む。コンピュータ可読媒体は、データが記憶されることができかつワイヤレスにまたはワイヤード接続を介して伝搬する搬送波および／または一時的な電子信号を含まない、非一時的な媒体を含み得る。非一時的な媒体の例は、それに限定されるものではないが、磁気ディスクまたはテープ、コンパクトディスク（ＣＤ）またはデジタル多目的ディスク（ＤＶＤ）のような光記憶媒体、フラッシュメモリ、メモリまたはメモリデバイスを含み得る。コンピュータ可読媒体は、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、あるいは命令、データ構造、またはプログラムステートメントの任意の組合せを表し得るコードおよび／または機械実行可能命令を記憶し得る。コードセグメントは、情報、データ、引き数、パラメータ、またはメモリコンテンツを渡すことおよび／または受け取ることによって、別のコードセグメントまたはハードウェア回路に結合され得る。情報、引き数、パラメータ、データ、等は、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク送信、または同様のものを含む、任意の好適な手段を介して渡される、転送される、または送信され得る。
【００４１】
[0051]さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはこれらの任意の組合せによってインプリメントされ得る。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードでインプリメントされるとき、必要なタスクを実行するためのプログラムコードまたはコードセグメント（例えば、コンピュータプログラム製品）は、コンピュータ可読または機械可読媒体中に記憶され得る。（１つまたは複数の）プロセッサが、必要なタスクを実行し得る。
【００４２】
[0052]より多くのデバイスおよびシステムが、デジタルビデオデータを消費する能力を消費者に提供するにつれて、効率的なビデオコーディング技法の必要性がより重要になる。ビデオコーディングは、デジタルビデオデータ中に存在する大量のデータを処理する（handle）のに必要な記憶および送信要件を低減させるために必要である。様々なビデオコーディング技法が、高いビデオ品質を維持しながら、ビデオデータをより低いビットレートを使用する形態へと圧縮するために使用され得る。ここで使用される場合、「コーディング」は、「符号化」または「復号」を指す。
【００４３】
[0053]図１は、符号化デバイス１０４および復号デバイス１１２を含む、ビデオコーディングシステム１００の例を例示するブロック図である。符号化デバイス１０４は、ソースデバイスの一部であり得、復号デバイス１１２は、受信デバイスの一部であり得る。ソースデバイスおよび／または受信デバイスは、モバイルまたは固定の電話ハンドセット（例えば、スマートフォン、セルラ電話、または同様のもの）、デスクトップコンピュータ、ラップトップまたはノートブックコンピュータ、タブレットコンピュータ、セットトップボックス、テレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーム機、ビデオストリーミングデバイス、インターネットプロトコル（ＩＰ）カメラなどの電子デバイス、またはその他任意の好適な電子デバイスを含み得る。いくつかの例では、ソースデバイスおよび受信デバイスは、ワイヤレス通信のための１つまたは複数のワイヤレストランシーバを含み得る。ここで説明されるコーディング技法は、（例えば、インターネットを介した）ストリーミングビデオ送信、テレビ放送または送信、データ記憶媒体上での記憶のためのデジタルビデオの符号化、データ記憶媒体上に記憶されたデジタルビデオの復号、または他のアプリケーションを含む、様々なマルチメディアアプリケーションにおけるビデオコーディングに適用可能である。いくつかの例では、システム１００は、ビデオ会議、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、ゲーミング、および／またはビデオ電話通信などのアプリケーションをサポートするために、一方向または双方向のビデオ送信をサポートし得る。
【００４４】
[0054]符号化デバイス１０４（またはエンコーダ）は、符号化されたビデオビットストリームを生成するために、ビデオコーディング規格またはプロトコルを使用して、ビデオデータを符号化するために使用され得る。ビデオコーディング規格の例は、ＩＴＵ−Ｔ  Ｈ．２６１、ＩＳＯ／ＩＥＣ  ＭＰＥＧ−１  Ｖｉｓｕａｌ、ＩＴＵ−Ｔ  Ｈ．２６２またはＩＳＯ／ＩＥＣ  ＭＰＥＧ−２  Ｖｉｓｕａｌ、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＳＯ／ＩＥＣ  ＭＰＥＧ−４  Ｖｉｓｕａｌ、そのスケーラブルビデオコーディング（ＳＶＣ）およびマルチビュービデオコーディング（ＭＶＣ）拡張を含む（ＩＳＯ／ＩＥＣ  ＭＰＥＧ−４  ＡＶＣとしても知られている）ＩＴＵ−Ｔ  Ｈ．２６４、および高効率ビデオコーディング（ＨＥＶＣ）またはＩＴＵ−Ｔ  Ｈ．２６５を含む。マルチレイヤビデオコーディングを扱うＨＥＶＣへの様々な拡張が存在し、レンジおよびスクリーンコンテンツコーディング拡張、３Ｄビデオコーディング（３Ｄ−ＨＥＶＣ）およびマルチビュー拡張（ＭＶ−ＨＥＶＣ）およびスケーラブル拡張（ＳＨＶＣ）を含む。ＨＥＶＣおよびその拡張は、ビデオコーディング共同研究部会（ＪＣＴ−ＶＣ）、ならびにＩＴＵ−Ｔビデオコーディングエキスパートグループ（ＶＣＥＧ）と、ＩＳＯ／ＩＥＣモーションピクチャエキスパートグループ（ＭＰＥＧ）との３Ｄビデオコーディング拡張開発共同研究部会（ＪＣＴ−３Ｖ）によって開発されてきた。ＭＰＥＧとＩＴＵ−Ｔ  ＶＣＥＧはまた、次世代のビデオコーディング規格のための新しいコーディングツールを調査するために、ＪＶＥＴ（joint exploration video team）を設立した。参照ソフトウェアは、ＪＥＭ（joint exploration model）と呼ばれる。
【００４５】
[0055]ここで説明される多くの例は、ＪＥＭモデル、ＨＥＶＣ規格、および／またはそれらの拡張を使用した例を提供する。しかしながら、ここで説明される技法およびシステムはまた、ＡＶＣ、ＭＰＥＧ、それらの拡張などの他のコーディング規格、または現在存在している他の好適なコーディング規格または将来のコーディング規格に適用可能であり得る。したがって、ここで説明される技法およびシステムが、特定のビデオコーディング規格を参照して説明され得る一方で、当業者であれば、説明がその特定の規格にのみ適用されると解釈されるべきではないことを理解するであろう。
【００４６】
[0056]図１を参照すると、ビデオソース１０２が、符号化デバイス１０４にビデオデータを提供し得る。ビデオソース１０２は、ソースデバイスの一部であり得、またはソースデバイス以外のデバイスの一部であり得る。ビデオソース１０２は、ビデオキャプチャデバイス（例えば、ビデオカメラ、カメラフォン、ビデオフォン、または同様のもの）、記憶されたビデオを含むビデオアーカイブ、ビデオデータを提供するビデオサーバまたはコンテンツプロバイダ、ビデオサーバまたはコンテンツプロバイダからのビデオを受信するビデオフィードインターフェース、コンピュータグラフィックスビデオデータを生成するためのコンピュータグラフィックスシステム、このようなソースの組合せ、またはその他任意の好適なビデオソースを含み得る。
【００４７】
[0057]ビデオソース１０２からのビデオデータは、１つまたは複数の入力ピクチャまたはフレームを含み得る。ビデオのピクチャまたはフレームは、シーンの静止画像である。符号化デバイス１０４のエンコーダエンジン１０６（またはエンコーダ）は、符号化されたビデオビットストリームを生成するためにビデオデータを符号化する。いくつかの例では、符号化されたビデオビットストリーム（あるいは、「ビデオビットストリーム」または「ビットストリーム」）は、一連の１つまたは複数のコーディングされたビデオシーケンスである。コーディングされたビデオシーケンス（ＣＶＳ）は、ある特定の特性を有し（with certain properties）かつベースレイヤにおけるランダムアクセスポイントピクチャを有するアクセスユニット（ＡＵ）から開始し、ある特定の特性を有しかつベースレイヤにおけるランダムアクセスポイントピクチャを有する次のＡＵまでの（およびそれを含まない）（up to and not including a next AU）一連のＡＵを含む。例えば、ＣＶＳを開始するランダムアクセスポイントピクチャのある特定の特性は、１に等しいＲＡＳＬフラグ（例えば、ＮｏＲａｓｌＯｕｔｐｕｔＦｌａｇ）を含み得る。そうでない場合、（０に等しいＲＡＳＬフラグを有する）ランダムアクセスポイントピクチャは、ＣＶＳを開始しない。アクセスユニット（ＡＵ）は、１つまたは複数のコーディングされたピクチャと、同じ出力時間を共有するコーディングされたピクチャに対応する制御情報とを含む。ピクチャのコーディングされたスライスは、ネットワーク抽象化レイヤ（ＮＡＬ）ユニットと呼ばれるデータユニットへとビットストリームレベルでカプセル化される。例えば、ＨＥＶＣビデオビットストリームは、ＮＡＬユニットを含む１つまたは複数のＣＶＳを含み得る。ＮＡＬユニットの各々は、ＮＡＬユニットヘッダを有する。一例では、ヘッダは、（マルチレイヤ拡張を除き）Ｈ．２６４／ＡＶＣの場合は１バイト、およびＨＥＶＣの場合は２バイトである。ＮＡＬユニットヘッダにおけるシンタックス要素は、指定されたビットを占め（take）、したがって、特に、トランスポートストリーム、リアルタイムトランスポート（ＲＴＰ）プロトコル、ファイル形式などの、全ての種類のシステムおよびトランスポートレイヤに対して可視である。
【００４８】
[0058]ビデオコーディングレイヤ（ＶＣＬ）ＮＡＬユニットおよび非ＶＣＬ  ＮＡＬユニットを含む、２つのクラスのＮＡＬユニットがＨＥＶＣ規格に存在する。ＶＣＬ  ＮＡＬユニットは、コーディングされたピクチャデータの（以下で説明される）１つのスライスまたはスライスセグメントを含み、非ＶＣＬ  ＮＡＬユニットは、１つまたは複数のコーディングされたピクチャに関連する制御情報を含む。いくつかのケースでは、ＮＡＬユニットは、パケットと呼ばれ得る。ＨＥＶＣ  ＡＵは、コーディングされたピクチャデータを含むＶＣＬ  ＮＡＬユニットと、コーディングされたピクチャデータに対応する非ＶＣＬ  ＮＡＬユニット（もしあれば）とを含む。
【００４９】
[0059]ＮＡＬユニットは、ビデオ中のピクチャのコーディングされた表現のような、ビデオデータのコーディングされた表現を形成するビットのシーケンス（例えば、符号化されたビデオビットストリーム、ビットストリームのＣＶＳ、または同様のもの）を含み得る。エンコーダエンジン１０６は、各ピクチャを複数のスライスに区分化することによって、ピクチャのコーディングされた表現を生成する。スライスは、他のスライスとは独立しており、それによって、スライス中の情報は、同じピクチャ内の他のスライスからのデータに依存することなくコーディングされる。スライスは、独立スライスセグメントと、もしあれば、以前のスライスセグメントに依存する１つまたは複数の従属スライスセグメントとを含む、１つまたは複数のスライスセグメントを含む。その後、スライスは、ルーマサンプルおよびクロマサンプルのコーディングツリーブロック（ＣＴＢ）に区分化される。ルーマサンプルのＣＴＢおよびクロマサンプルの１つまたは複数のＣＴＢは、サンプルのためのシンタックスと共に、コーディングツリーユニット（ＣＴＵ）と呼ばれる。ＣＴＵは、ＨＥＶＣ符号化のための基本処理ユニットである。ＣＴＵは、可変サイズの複数のコーディングユニット（ＣＵ）へと分割され得る。ＣＵは、コーディングブロック（ＣＢ）と呼ばれるルーマおよびクロマサンプル配列を含む。
【００５０】
[0060]ルーマおよびクロマＣＢは、予測ブロック（ＰＢ）へとさらに分割され得る。ＰＢは、（利用可能であるか、または使用のためにイネーブルにされるとき）インター予測またはイントラブロックコピー予測のために同じ動きパラメータを使用するルーマ成分またはクロマ成分のサンプルのブロックである。ルーマＰＢおよび１つまたは複数のクロマＰＢは、関連するシンタックスと共に、予測ユニット（ＰＵ）を形成する。インター予測の場合、動きパラメータのセット（例えば、１つまたは複数の動きベクトル、参照インデックス、または同様のもの）が、各ＰＵについてビットストリーム中でシグナリングされ、ルーマＰＢおよび１つまたは複数のクロマＰＢのインター予測のために使用される。動きパラメータはまた、動き情報と呼ばれ得る。ＣＢはまた、１つまたは複数の変換ブロック（ＴＢ）に区分化され得る。ＴＢは、予測残差信号をコーディングするために同じ２次元変換が適用される、色成分のサンプルの正方形ブロックを表す。変換ユニット（ＴＵ）は、ルーマおよびクロマサンプルのＴＢと、対応するシンタックス要素とを表す。
【００５１】
[0061]ＣＵのサイズは、コーディングモードのサイズに対応し、形状が正方形であり得る。例えば、ＣＵのサイズは、８×８サンプル、１６×１６サンプル、３２×３２サンプル、６４×６４サンプル、または最大で対応するＣＴＵのサイズまでのその他任意の好適なサイズであり得る。「Ｎ×Ｎ」という表現は、縦および横の寸法の観点から、ビデオブロックのピクセル寸法（例えば、８ピクセル×８ピクセル）を指すためにここで使用される。ブロック中のピクセルは、行および列に配置され得る。いくつかの例では、ブロックは、横方向に、縦方向と同じ数のピクセルを有していない場合がある。ＣＵに関連付けられたシンタックスデータは、例えば、１つまたは複数のＰＵへのＣＵの区分化を説明し得る。区分化モードは、ＣＵがイントラ予測モード符号化されたか、またはインター予測モード符号化されたかの間で異なり得る。ＰＵは、形状が非正方形になるように区分化され得る。ＣＵに関連付けられたシンタックスデータはまた、例えば、ＣＴＵによる、１つまたは複数のＴＵへのＣＵの区分化を説明し得る。ＴＵは、形状が正方形または非正方形であり得る。
【００５２】
[0062]ＨＥＶＣ規格によると、変換は、変換ユニット（ＴＵ）を使用して実行され得る。ＴＵは、異なるＣＵに対して異なり得る。ＴＵは、所与のＣＵ内のＰＵのサイズに基づいて、サイズ決定され得る。ＴＵは、ＰＵと同じサイズであるかそれより小さくなり得る。いくつかの例では、ＣＵに対応する残差サンプルは、残差４分木（ＲＱＴ：residual quad tree）として知られる４分木構造を使用して、より小さいユニットに細分され得る。ＲＱＴのリーフノードは、ＴＵに対応し得る。ＴＵに関連付けられたピクセル差分値は、変換係数を作成するために変換され得る。その後、変換係数は、エンコーダエンジン１０６によって量子化され得る。
【００５３】
[0063]いったんビデオデータのピクチャがＣＵに区分化されると、エンコーダエンジン１０６は、予測モードを使用して各ＰＵを予測する。その後、予測ユニットまたは予測ブロックは、（以下で説明される）残差を得るために元のビデオデータから減算される。各ＣＵについて、予測モードは、シンタックスデータを使用してビットストリームの内部でシグナリングされ得る。予測モードは、イントラ予測（またはイントラピクチャ予測）またはインター予測（またはインターピクチャ予測）を含み得る。イントラ予測は、ピクチャ内の空間的に隣接するサンプル間の相関を利用する。例えば、イントラ予測を使用して、各ＰＵは、例えば、ＰＵの平均値を求めるためのＤＣ予測、平面をＰＵに合わせるための平面予測、隣接データから外挿するための方向予測、またはその他任意の好適なタイプの予測を使用して、同じピクチャ中の隣接画像データから予測される。インター予測は、画像サンプルのブロックについての動き補償予測を導出するために、ピクチャ間の時間的相関を使用する。例えば、インター予測を使用して、各ＰＵは、（出力順序で現在のピクチャの前または後の）１つまたは複数の参照ピクチャ中の画像データからの動き補償予測を使用して予測される。ピクチャエリアを、インターピクチャ予測を使用してコーディングするか、またはイントラピクチャ予測を使用してコーディングするかの決定は、例えば、ＣＵレベルで行われ得る。
【００５４】
[0064]いくつかの例では、ピクチャの１つまたは複数のスライスは、スライスタイプを割り当てられる。スライスタイプは、Ｉスライス、Ｐスライス、およびＢスライスを含む。Ｉスライス（イントラフレーム、独立に復号可能）は、イントラ予測によってのみコーディングされるピクチャのスライスであり、したがって、Ｉスライスが、スライスの任意の予測ユニットまたは予測ブロックを予測するために、フレーム内のデータのみを必要とすることから、独立に復号可能である。Ｐスライス（片方向（uni-directional）予測フレーム）は、イントラ予測で、および片方向インター予測でコーディングされ得るピクチャのスライスである。Ｐスライス内の各予測ユニットまたは予測ブロックは、イントラ予測またはインター予測のいずれかでコーディングされる。インター予測が適用されるとき、予測ユニットまたは予測ブロックは、１つの参照ピクチャによってのみ予測され、したがって、参照サンプルは、１つのフレームの１つの参照領域のみからのものである。Ｂスライス（双方向予測フレーム）は、イントラ予測で、およびインター予測で（例えば、双予測（bi-prediction）または単予測（uni-prediction）のいずれかで）コーディングされ得るピクチャのスライスである。Ｂスライスの予測ユニットまたは予測ブロックは、２つの参照ピクチャから双方向に予測され得、ここで、各ピクチャは、１つの参照領域を与え（contributes）、２つの参照領域のサンプルセットは、双方向予測ブロックの予測信号を作成するために、（例えば、等しい重みで、または異なる重みで）重み付けされる。上記で説明されたように、１つのピクチャのスライスは、独立にコーディングされる。いくつかのケースでは、ピクチャは、単に１つのスライスとしてコーディングされ得る。
【００５５】
[0065]ＰＵは、予測プロセスに関連するデータ（例えば、動きパラメータまたは他の好適なデータ）を含み得る。例えば、ＰＵがイントラ予測を使用して符号化されるとき、ＰＵは、ＰＵのためのイントラ予測モードを記述するデータを含み得る。別の例として、ＰＵがインター予測を使用して符号化されるとき、ＰＵは、ＰＵのための動きベクトルを定義するデータを含み得る。ＰＵのための動きベクトルを定義するデータは、例えば、動きベクトルの水平成分（Δｘ）、動きベクトルの垂直成分（Δｙ）、動きベクトルについての解像度（例えば、整数精度、４分の１ピクセル精度、または８分の１ピクセル精度）、動きベクトルが指し示す参照ピクチャ、参照インデックス、動きベクトルについての参照ピクチャリスト（例えば、リスト０、リスト１、またはリストＣ）、またはこれらの任意の組合せを記述し得る。
【００５６】
[0066]その後、符号化デバイス１０４は、変換および量子化を実行し得る。例えば、予測に続いて、エンコーダエンジン１０６は、ＰＵに対応する残差値を計算し得る。残差値は、コーディングされているピクセルの現在のブロック（ＰＵ）と、現在のブロックを予測するために使用される予測ブロック（例えば、現在のブロックの予測されたバージョン）との間のピクセル差分値を備え得る。例えば、（例えば、インター予測またはイントラ予測を発行して）予測ブロックを生成した後、エンコーダエンジン１０６は、現在のブロックから予測ユニットによって作成される予測ブロックを減算することによって、残差ブロックを生成し得る。残差ブロックは、現在のブロックのピクセル値と、予測ブロックのピクセル値との間の差分を定量化するピクセル差分値のセットを含む。いくつかの例では、残差ブロックは、２次元ブロックフォーマット（例えば、ピクセル値の２次元行列または配列）で表され得る。このような例では、残差ブロックは、ピクセル値の２次元表現である。
【００５７】
[0067]予測が実行された後に残り得る任意の残差データは、ブロック変換を使用して変換され、これは、離散コサイン変換、離散サイン変換、整数変換、ウェーブレット変換、他の好適な変換関数（transform function）、またはこれらの任意の組合せに基づき得る。いくつかのケースでは、１つまたは複数のブロック変換（例えば、サイズ３２×３２、１６×１６、８×８、４×４、または同様のもの）が、各ＣＵ中の残差データに適用され得る。いくつかの例では、ＴＵが、エンコーダエンジン１０６によってインプリメントされる変換および量子化プロセスのために使用され得る。１つまたは複数のＰＵを有する所与のＣＵがまた、１つまたは複数のＴＵを含み得る。以下でさらに詳細に説明されるように、残差値は、ブロック変換を使用して変換係数へと変換され得、その後、エントロピーコーディングのための直列化された変換係数（serialized transform coefficients）を作成するために、ＴＵを使用して量子化および走査され得る。
【００５８】
[0068]いくつかの例では、ＣＵのＰＵを使用するイントラ予測またはインター予測コーディングに続いて、エンコーダエンジン１０６は、ＣＵのＴＵについての残差データを計算し得る。ＰＵは、空間領域（またはピクセル領域）中のピクセルデータを備え得る。ＴＵは、ブロック変換の適用後の変換領域中の係数を備え得る。前述されたように、残差データは、符号化されていないピクチャのピクセルと、ＰＵに対応する予測値との間のピクセル差分値に対応し得る。エンコーダエンジン１０６は、ＣＵについての残差データを含むＴＵを形成し得、その後、ＣＵのための変換係数を作成するためにＴＵを変換し得る。
【００５９】
[0069]エンコーダエンジン１０６は、変換係数の量子化を実行し得る。量子化は、係数を表すために使用されるデータの量を低減させるために、変換係数を量子化することによって、さらなる圧縮を提供する。例えば、量子化は、係数の一部または全てに関連付けられたビット深度を低減させ得る。一例では、ｎビットの値を有する係数は、量子化中にｍビットの値に切り捨てられ得るとともに、ｎは、ｍよりも大きい。
【００６０】
[0070]いったん量子化が実行されると、コーディングされたビデオビットストリームは、量子化された変換係数、予測情報（例えば、予測モード、動きベクトル、ブロックベクトル、または同様のもの）、区分化情報、および他のシンタックスデータのような、その他任意の好適なデータを含む。その後、コーディングされたビデオビットストリームの異なる要素は、エンコーダエンジン１０６によってエントロピー符号化され得る。いくつかの例では、エンコーダエンジン１０６は、エントロピー符号化され得る直列化されたベクトルを作成するために、予め定義された走査順序を利用して、量子化された変換係数を走査し得る。いくつかの例では、エンコーダエンジン１０６は、適応走査を実行し得る。ベクトル（例えば、１次元ベクトル）を形成するために、量子化された変換係数を走査した後、エンコーダエンジン１０６は、ベクトルをエントロピー符号化し得る。例えば、エンコーダエンジン１０６は、コンテキスト適応可変長コーディング、コンテキスト適応バイナリ算術コーディング、シンタックスベースコンテキスト適応バイナリ算術コーディング、確率間隔区分化エントロピーコーディング、または別の好適なエントロピー符号化技法を使用し得る。
【００６１】
[0071]前述されたように、ＨＥＶＣビットストリームは、ＶＣＬ  ＮＡＬユニットおよび非ＶＣＬ  ＮＡＬユニットを含む、ＮＡＬユニットのグループを含む。ＶＣＬ  ＮＡＬユニットは、コーディングされたビデオビットストリームを形成するコーディングされたピクチャデータを含む。例えば、コーディングされたビデオビットストリームを形成するビットのシーケンスは、ＶＣＬ  ＮＡＬユニット中で再送される。非ＶＣＬ  ＮＡＬユニットは、他の情報に加えて、符号化されたビデオビットストリームに関連する高レベル情報を有するパラメータセットを含み得る。例えば、パラメータセットは、ビデオパラメータセット（ＶＰＳ）、シーケンスパラメータセット（ＳＰＳ）、およびピクチャパラメータセット（ＰＰＳ）を含み得る。パラメータセットの目的の例は、ビットレート効率、エラー耐性、およびシステムレイヤインターフェースを提供することを含む。各スライスは、復号デバイス１１２がスライスを復号するために使用し得る情報にアクセスするために、単一のアクティブＰＰＳ、ＳＰＳ、およびＶＰＳを参照する。識別子（ＩＤ）は、ＶＰＳ  ＩＤ、ＳＰＳ  ＩＤ、およびＰＰＳ  ＩＤを含む各パラメータセットについてコーディングされ得る。ＳＰＳは、ＳＰＳ  ＩＤおよびＶＰＳ  ＩＤを含む。ＰＰＳは、ＰＰＳ  ＩＤおよびＳＰＳ  ＩＤを含む。各スライスヘッダは、ＰＰＳ  ＩＤを含む。ＩＤを使用して、アクティブパラメータセットは、所与のスライスのために識別され得る。
【００６２】
[0072]ＰＰＳは、所与のピクチャ中の全てのスライスに適用される情報を含む。このことから、ピクチャ中の全てのスライスは、同じＰＰＳを参照する。異なるピクチャ中のスライスもまた、同じＰＰＳを参照し得る。ＳＰＳは、同じコーディングされたビデオシーケンス（ＣＶＳ）またはビットストリーム中の全てのピクチャに適用される情報を含む。前述されたように、コーディングされたビデオシーケンスは、（上記で説明された）ある特定の特性を有しかつベースレイヤにおけるランダムアクセスポイントピクチャ（例えば、瞬時復号参照（ＩＤＲ：instantaneous decode reference）ピクチャまたはブロークンリンクアクセス（ＢＬＡ：broken link access）ピクチャ、または他の適切なランダムアクセスポイントピクチャ）から開始し、（ビットストリームの終了または）ある特定の特性を有しかつベースレイヤにおけるランダムアクセスポイントピクチャを有する次のアクセスユニット（ＡＵ）までの（およびそれを含まない）、一連のＡＵである。ＳＰＳ中の情報は、コーディングされたビデオシーケンス内のピクチャごとに変化しないことがあり得る。コーディングされたビデオシーケンス中のピクチャは、同じＳＰＳを使用し得る。ＶＰＳは、コーディングされたビデオシーケンスまたはビットストリーム内の全てのレイヤに適用される情報を含む。ＶＰＳは、コーディングされたビデオシーケンス全体に適用されるシンタックス要素を有するシンタックス構造を含む。いくつかの例では、ＶＰＳ、ＳＰＳ、またはＰＰＳは、符号化されたビットストリームとともに帯域内で送信され得る。いくつかの例では、ＶＰＳ、ＳＰＳ、またはＰＰＳは、コーディングされたビデオデータを含むＮＡＬユニットとは別個の送信において帯域外で送信され得る。
【００６３】
[0073]ビデオビットストリームはまた、補足エンハンスメント情報（ＳＥＩ）メッセージを含み得る。例えば、ＳＥＩ  ＮＡＬユニットは、ビデオビットストリームの一部であり得る。いくつかのケースでは、ＳＥＩメッセージは、復号プロセスによって必要とされない情報を含み得る。例えば、ＳＥＩメッセージ中の情報は、デコーダがビットストリームのビデオピクチャを復号するのに必須でない場合があるが、デコーダは、ピクチャの表示または処理（例えば、復号された出力）を改善するために、この情報を使用し得る。ＳＥＩメッセージ中の情報は、埋め込まれたメタデータであり得る。１つの例示的な例では、ＳＥＩメッセージ中の情報は、コンテンツの視認性を改善するために、デコーダ側エンティティによって使用され得る。いくつかの事例では、ある特定のアプリケーション規格は、品質の改善が、アプリケーション規格に準拠する全てのデバイスにもたらされ得るように、ビットストリーム中のこのようなＳＥＩメッセージの存在を規定し得る（例えば、多くの他の例に加えて、フレーム互換平面立体視３ＤＴＶビデオフォーマット（frame-compatible plano-stereoscopic 3DTV video format）のためのフレームパッキングＳＥＩメッセージの搬送、ここで、ＳＥＩメッセージは、ビデオのフレームごとに搬送され、リカバリポイントＳＥＩメッセージの処理、ＤＶＢにおけるパンスキャン走査矩形ＳＥＩメッセージの使用）。
【００６４】
[0074]符号化デバイス１０４の出力１１０は、受信デバイスの復号デバイス１１２に、通信リンク１２０を介して、符号化されたビデオデータを構成するＮＡＬユニットを送り得る。復号デバイス１１２の入力１１４は、ＮＡＬユニットを受信し得る。通信リンク１２０は、ワイヤレスネットワーク、ワイヤードネットワーク、またはワイヤードネットワークとワイヤレスネットワークの組合せによって提供されるチャネルを含み得る。ワイヤレスネットワークは、任意のワイヤレスインターフェースまたは複数のワイヤレスインターフェースの組合せを含み得、また、任意の好適なワイヤレスネットワーク（例えば、インターネットまたは他のワイドエリアネットワーク、パケットベースネットワーク、ＷｉＦｉ（登録商標）、無線周波数（ＲＦ）、ＵＷＢ、ＷｉＦｉ−Ｄｉｒｅｃｔ、セルラ、ロングタームエボリューション（ＬＴＥ（登録商標））、ＷｉＭａｘ（登録商標）、または同様のもの）を含み得る。ワイヤードネットワークは、任意のワイヤードインターフェース（例えば、ファイバー、イーサネット（登録商標）、電力線イーサネット、同軸ケーブルを通じたイーサネット、デジタル信号線（ＤＳＬ）、または同様のもの）を含み得る。ワイヤードおよび／またはワイヤレスネットワークは、基地局、ルータ、アクセスポイント、ブリッジ、ゲートウェイ、スイッチ、または同様のものなどの、様々な機器を使用してインプリメントされ得る。符号化されたビデオデータは、ワイヤレス通信プロトコルのような通信規格に従って変調され、受信デバイスに送信され得る。
【００６５】
[0075]いくつかの例では、符号化デバイス１０４は、符号化されたビデオデータを記憶装置１０８に記憶し得る。出力１１０は、エンコーダエンジン１０６から、または記憶装置１０８から、符号化されたビデオデータを取り出し得る。記憶装置１０８は、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のうちの任意のものを含み得る。例えば、記憶装置１０８は、ハードドライブ、ストレージディスク、フラッシュメモリ、揮発性または不揮発性メモリ、または符号化されたビデオデータを記憶するためのその他任意の好適なデジタル記憶媒体を含み得る。
【００６６】
[0076]復号デバイス１１２の入力１１４は、符号化されたビデオビットストリームデータを受信し、デコーダエンジン１１６に、またはデコーダエンジン１１６による後の使用のために記憶装置１１８に、ビデオビットストリームデータを提供し得る。デコーダエンジン１１６は、（例えば、エントロピーデコーダを使用して）エントロピー復号し、符号化されたビデオデータを構成する１つまたは複数のコーディングされたビデオシーケンスの要素を抽出することによって、符号化されたビデオビットストリームデータを復号し得る。その後、デコーダエンジン１１６は、符号化されたビデオビットストリームデータの再スケーリング（rescale）を行い、それに対して逆変換を実行し得る。その後、残差データが、デコーダエンジン１１６の予測ステージに渡される。その後、デコーダエンジン１１６は、ピクセルのブロック（例えば、ＰＵ）を予測する。いくつかの例では、予測は、逆変換の出力（残差データ）に加算（added）される。
【００６７】
[0077]復号デバイス１１２は、復号されたビデオをビデオ宛先デバイスに出力し得、これは、復号されたビデオデータをコンテンツの消費者に表示するためのディスプレイまたは他の出力デバイスを含み得る。いくつかの態様では、ビデオ宛先デバイス１２２は、復号デバイス１１２を含む受信デバイスの一部であり得る。いくつかの態様では、ビデオ宛先デバイス１２２は、受信デバイス以外の別個のデバイスの一部であり得る。
【００６８】
[0078]いくつかの例では、ビデオ符号化デバイス１０４および／またはビデオ復号デバイス１１２は、それぞれ、オーディオ符号化デバイスおよびオーディオ復号デバイスと一体化され得る。ビデオ符号化デバイス１０４および／またはビデオ復号デバイス１１２はまた、１つまたは複数のマイクロプロセッサ、デジタルシグナルプロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリートロジック、ソフトウェア、ハードウェア、ファームウェアまたはこれらの任意の組合せなどの、上記で説明されたコーディング技法をインプリメントするのに必要な他のハードウェアまたはソフトウェアを含み得る。ビデオ符号化デバイス１０４およびビデオ復号デバイス１１２は、それぞれのデバイスにおいて、複合エンコーダ／デコーダ（コーデック）の一部として一体化され得る。符号化デバイス１０４の特定の詳細の例が、図９を参照して以下で説明される。復号デバイス１１２の特定の詳細の例が、図１０を参照して以下で説明される。
【００６９】
[0079]ＨＥＶＣ規格に対する拡張は、ＭＶ−ＨＥＶＣと呼ばれる、マルチビュービデオコーディング拡張と、ＳＨＶＣと呼ばれる、スケーラブルビデオコーディング拡張とを含む。ＭＶ−ＨＥＶＣおよびＳＨＶＣ拡張は、レイヤードコーディングの概念を共有するとともに、異なるレイヤが、符号化されたビデオビットストリーム中に含まれている。コーディングされたビデオシーケンス中の各レイヤは、一意のレイヤ識別子（ＩＤ）によってアドレス指定（addressed）される。レイヤＩＤは、ＮＡＬユニットが関連付けられているレイヤを識別するために、ＮＡＬユニットのヘッダ中に存在し得る。ＭＶ−ＨＥＶＣでは、異なるレイヤは、通常、ビデオビットストリーム中の同じシーンの異なるビューを表す。ＳＨＶＣでは、異なる空間解像度（またはピクチャ解像度）で、または異なる再構成忠実度でビデオビットストリームを表す異なるスケーラブルレイヤが提供される。スケーラブルレイヤは、（レイヤＩＤ＝０を有する）ベースレイヤと、（レイヤＩＤ＝１、２、．．．ｎを有する）１つまたは複数のエンハンスメントレイヤとを含み得る。ベースレイヤは、ＨＥＶＣの第１のバージョンのプロファイルに準拠し得、ビットストリーム中の最下位の利用可能なレイヤを表す。エンハンスメントレイヤは、ベースレイヤと比較して、増大された空間解像度、時間解像度またはフレームレート、および／または再構成忠実度（または品質）を有する。エンハンスメントレイヤは、階層的に編成され、下位レイヤに依存することも（またはしないことも）あり得る。いくつかの例では、異なるレイヤは、単一標準コーデックを使用してコーディングされ得る（例えば、全てのレイヤが、ＨＥＶＣ、ＳＨＶＣ、または他のコーディング規格を使用して符号化される）。いくつかの例では、異なるレイヤは、多標準コーデックを使用してコーディングされ得る。例えば、ベースレイヤは、ＡＶＣを使用してコーディングされ得、一方、１つまたは複数のエンハンスメントレイヤは、ＨＥＶＣ規格に対するＳＨＶＣおよび／またはＭＶ−ＨＥＶＣ拡張を使用してコーディングされ得る。
【００７０】
[0080]ビデオ圧縮技法は、入力ビデオ信号に固有の冗長性を低減または取り除くために、空間的および時間的予測を実行する。時間的冗長性（すなわち、隣接フレームにおける視覚的類似性）を低減させるために、動き推定が行われて、ビデオにおけるオブジェクトの動きを追跡する。動き推定は、現在のフレームからの所与のピクセルのブロックについて、１つの参照フレーム中の（または双予測の場合は２つの参照フレーム中の）最も良く一致する（例えば、最も類似した）ピクセルのブロックを識別するプロセスである。１つまたは複数の参照フレームが、１つまたは複数の参照インデックスを使用して、現在のブロックのために識別され得る。参照フレーム中のピクセルのブロックは、候補ブロック、予測子（predictor）、または予測ブロックと呼ばれ得る。ブロックのサイズは異なり得る。現在のフレームからの現在のブロックと、参照フレームからの候補ブロックとの間のオフセットは、動きベクトルによって特徴付けられ得、これは、変位の程度（degree of displacement）および変位の方向を示し得る。
【００７１】
[0081]動きベクトルは、ピクセル単位の距離で変位を示し得る。いくつかのケースでは、動きベクトルは、１／２ピクセル、１／４ピクセル、または１／１６ピクセル距離など、整数ピクセル精度よりも高い精度を有し得る。より細かい精度は、ビデオコーダがより正確に動きフィールドを追跡し、したがって、より良い予測を得ることを可能にし得る。
【００７２】
[0082]ビデオコーダがフレームを再構成しており、分数ピクセル値を有する動きベクトルに遭遇したとき、ビデオコーダは、分数ピクセル値を生成するために補間を行い得る。例えば、および以下でさらに説明されるように、ビデオコーダは、１／２ピクセル、１／４ピクセル、または何らかの他の分数ピクセル位置についての補間されたピクセルを作成するために、利用可能なピクセルに補間フィルタを適用し得る。
【００７３】
[0083]多くのビデオコーデックは、固定補間フィルタを使用する。固定補間フィルタでは、エンコーダおよびデコーダの両方が、前もってフィルタ係数を提供され得、これら係数は、符号化されたビットストリームにおいて提供される必要がない。
【００７４】
[0084]しかしながら、動き推定および動き補償は、固定フィルタではなく、最適な補間フィルタを使用することによって、最適化され得る。所与の状況についての最良のフィルタは、高度にローカライズされおよびコンテンツ依存である傾向にある。したがって、最適なフィルタを使用することは、フィルタ係数がエンコーダからデコーダに送信される必要があるという点で、シグナリングオーバヘッドを著しく増大させ得、および／またはエンコーダの複雑さを増大させ得る。
【００７５】
[0085]様々なインプリメンテーションでは、異なる補間フィルタが、異なるコーディングユニットに適用され得、かつコーディングされたビットストリームのサイズに対する最小限の追加の増大で（with minimal additional increase）シグナリングされ得るシステムおよび方法が提供される。例えば、ＨＥＶＣの場合、フィルタ候補の特定のセットは、コーディングユニットが、特に、シーケンスレベル、ピクチャレベル、コーディングツリーユニットレベル、コーディングユニットレベル、変換ユニットレベル、または予測ユニットレベルにあるとき、利用可能になり得る。加えて、ＪＥＭの場合、フィルタ候補の特定のセットは、特に、４分木プラス２分木（ＱＴＢＴ：quadtree plus binary tree）レベルにおいて利用可能になり得る。ここで、コーディングユニットは、ブロックとも呼ばれ得る。これらおよび他の例では、ビデオコーダは、ビデオを符号化またはビットストリームを復号しながら、複数の補間フィルタ間で切り替え得る。
【００７６】
[0086]様々なインプリメンテーションでは、異なる特性（例えば、他の特性の中でも特に、フィルタ長、カットオフ周波数、遷移帯域、またはリップルの量）をそれぞれ有する、Ｎ個のフィルタのセットが定義され得る。異なるコーディングレベルのブロックに対して、Ｎ個のフィルタのセットのサブセットが定義され得る。様々な基準を使用して、エンコーダは、フィルタのサブセットからフィルタを選択し得る。その後、選択されたフィルタは、明示的にまたは暗黙的に、デコーダにシグナリングまたは示され得る。所与のレベルで適用されるフィルタのサブセットは、他の基準の中でも特に、以前にコーディングされたブロック中のフィルタのヒット率などの、ある特定の基準に基づいて異なり得る。いくつかのインプリメンテーションでは、整数ピクセル位置またはクロマ成分のためのフィルタ選択がまた、同様のメカニズムを使用して、暗黙的にまたは暗黙的にシグナリングされ得る。
【００７７】
[0087]図２は、現在のフレームからの現在のブロック２３６についての符号化プロセス２００の例を例示する。現在のブロック２３６はまた、コーディングユニットとも呼ばれ得る。現在のブロック２３６は、現在のフレーム全体よりも小さくなり得る。
【００７８】
[0088]この例では、符号化プロセス２００は、最初に、現在のブロック２３６に対して動き推定２４２を行う。動き推定２４２は、利用可能な参照フレーム２６４の中から１つまたは複数の参照フレームを識別することを含み得る。参照フレームは、現在のフレームの時間的に前に、または後に発生するフレーム（a frame that occurs before, temporally, or after the current frame）を含み得る。動き推定２４２を行うことは、現在のブロック２３６に「最も良く」一致する領域を求めて、（１つまたは複数の）参照フレーム中の探索エリアを探索することを含み得る。最良の一致は、例えば、残差エネルギーを決定するために、現在のブロック２３６から候補領域を減算することによって、決定され得る。この例では、最低の残差エネルギーを有する候補領域が、最良の一致として選ばれ得る。
【００７９】
[0089]動き推定２４２は、動きベクトル２４３を作成することをさらに含み、これは、（１つまたは複数の）参照フレームに関連して（relative to）、現在のブロック２３６についての動きの程度および方向を推定する。ほとんどのケースでは、１つまたは複数の参照インデックスが、動きベクトルに関連付けられ、ここで、参照インデックスは、動きベクトルを決定するために使用された（１つまたは複数の）参照フレームを識別する。いくつかのケースでは、動き推定の後に、例えば、レート歪みモデルを使用して、最良の動きベクトルが選択され得る。
【００８０】
[0090]動き補償２４４は、最良の動きベクトルを使用して動き補償を実行することによって、予測ブロック２４５を生成することを含み得る。予測ブロック２４５は、最良の動きベクトルを使用することからの参照から選択されたブロックである。予測ブロック２４５は、残差ブロック２５１を作成するために、現在のブロック２３６から減算され得る。ブロック変換２５２が、残差ブロック２５１に適用され得る。結果として得られる変換係数は、量子化２５４を経て、量子化された係数２５５を作成し得る。エントロピーコーディング２５６が、ビットレートをさらに低減させ、符号化されたビットストリーム２１０を作成するために、量子化された係数２５５に適用され得る。
【００８１】
[0091]量子化された係数２５５はまた、逆量子化２５８に、そしてその後、逆変換２６０に入力され得る。逆量子化２５８および逆変換２６０は、ブロック変換２５２および量子化２５４ステップの逆であり、再構成された残差ブロック２６１を作成する。再構成された残差ブロック２６１は、再構成されたブロック２５３を作成するために、予測されたブロック２４５に加算され得る。再構成されたブロック２５３は、現在のブロック２３６とほぼ同じである。再構成されたビデオブロック２５３は、追加のブロックを符号化するために使用されることになる参照フレーム中に含まれ得る。
【００８２】
[0092]例示的なプロセス２００は、主に時間的動き推定を説明する。他の例では、Ｈ．２６４／ＡＶＣおよびＨＥＶＣ符号化プロセスなどの符号化プロセスがまた、イントラコーディングされたブロックを作成するために、空間的予測を行い得る。符号化プロセスは、図９を参照してより詳細に説明される。
【００８３】
[0093]前述されたように、現在のブロックについての最も良く一致する参照ブロックは、現在のブロックからフルピクセルオフセット、または分数ピクセルオフセットにあり得る。動き情報が、最良の一致が分数ピクセル位置にあることを示すとき、ビデオコーダは、参照ブロック中のピクセルから分数位置にあるピクセルを補間することによって、ブロックを再構成し得る。
【００８４】
[0094]図３は、分数ピクセル位置の例を例示する。図３の例では、幅３ピクセルおよび高さ３ピクセルである、参照フレームからのブロック３００が例示される。整数ピクセル位置は、大文字とともに網掛けのブロックを使用して例示される（例えば、Ａ０，０、Ａ１，０、Ａ０，１、Ａ−１，０、Ａ０，−１、Ａ１，１、Ａ１，−１、Ａ−１，１、およびＡ−１，−１）。ここでサブピクセル位置とも呼ばれる１／４ピクセル位置が、小文字を使用して例示される（例えば、ａ０，０、ｂ０，０、ｃ０，０、等）。この例では、ａ〜ｒとラベル付けされた（明確さのために、「ｌ」および「ｏ」は省略されていることに留意されたい）、ピクセル位置あたり１５個のサブピクセル位置が存在する。
【００８５】
[0095]様々な方法が、サブピクセル位置についてのサンプルを導出するために使用され得る。例えば、１／２ピクセル位置ｂ０，０におけるサンプルは、位置Ａ０，０およびＡ１，０におけるピクセルを平均することによって生成され得る。別の例として、位置Ａ−１，０、Ａ１，０、Ａ０，０、および隣接ブロックからのＡ２，０におけるピクセルは、位置ｂ０，０についてのサンプルを作成するために平均され得る。
【００８６】
[0096]ＨＥＶＣでは、位置ａ０，０、ｂ０，０、およびｃ０，０についての横のサブピクセルサンプル、ならびに位置ｄ０，０、ｈ０，０、およびｎ０，０についての縦のサブピクセルサンプルは、最も近い整数位置サンプルに８タップフィルタを適用することによって導出され得る。位置ｅ０，０、ｉ０，０、ｐ０，０、ｆ０，０、ｊ０，０、ｑ０，０、ｇ０，０、ｋ０，０、およびｒ０，０についてのサンプルは、位置ａ０，ｉ、ｂ０，ｉおよびｃ０，ｉにおけるサンプルに８タップフィルタを適用することによって導出され得、ここで、ｉ＝−３．．．４である。８タップルーマ補間フィルタの例が、表１に例示される。
【００８７】
【表１】
2019535198.tif 000003
【００８８】
[0097]表１は、位相シフトあたり８つの係数を含み、各タップにつき１つである。各位相シフトは、１／４ピクセル位置に対応する。例えば、位相シフト１は、サブピクセル位置ａ０，０およびｄ０，０に対応し得、位相シフト２は、サブピクセル位置ｂ０，０およびｈ０，０に対応し得、以下同様である。他の例では、より長いタップを有する（例えば、より多くの係数を有する）フィルタが適用され得る。より長いタップを有するフィルタは、８タップフィルタとは異なる特性を有し得、適用時により複雑な計算を必要とし得る。
【００８９】
[0098]ＪＥＭにおいて開発されているコーデックを含む、他のビデオコーデックでは、１／１６サブピクセル動きベクトル解像度がイネーブルにされ得る。１／１６サブピクセル位置では、１６位相を有するフィルタが、補間のために使用され得る。１６位相を有する例となるフィルタが、表２に提供される。しかしながら、ＪＥＭでは、固定された係数を有する８タップフィルタが使用される。
【００９０】
【表２】
2019535198.tif 000004
【００９１】
[0099]図２を参照すると、コンテンツ適応バイナリ算術コーディング（ＣＡＢＡＣ）は、ビットストリーム中のシンタックス要素を符号化および復号するために、エントロピーコーディング２５６において使用され得る１つのシステムである。ＣＡＢＡＣは、要素のコンテキストを使用して、各シンタックス要素についての確率モデルを選択することによって；局所統計量（local statistics）に基づいて、確率推定値を適応すること（adapting）によって；および可変長コーディングの代わりに、算術コーディングを使用して、良好な圧縮パフォーマンスを達成し得る。
【００９２】
[0100]ＣＡＢＡＣは、バイナリ算術コーディングを使用し、これは、バイナリ決定（１または０）のみが符号化されることを意味する。非バイナリ値シンボル（例えば、変換係数または動きベクトル、あるいは２つ以上の可能な値を有する任意のシンボル）が、算術コーディングの前に「２値化される」、すなわちバイナリコードに変換される。その後、２値化されたシンボルの各ビットについて、コンテキストモデルが選択される。コンテキストモデルは、２値化されたシンボルの１つまたは複数のビンについての確率モデルである。コンテキストモデルは、直近にコーディングされたデータシンボルの統計量に基づいて、利用可能なモデルから選ばれる。コンテキストモデルは、各ビンが、「１」または「０」である確率を記憶する。その後、算術コーダが、選択された確率モデルに従って、各ビンを符号化する。その後、選択されたコンテキストモデルは、実際のコーディングされた値に基づいて更新される（例えば、ビン値が「１」であった場合、「１」の頻度カウントが増加される）。
【００９３】
[0101]例として、ｓｋｉｐ＿ｆｌａｇ＿Ｃ［０］、ｓｋｉｐ＿ｆｌａｇ＿Ｃ［１］、およびｓｋｉｐ＿ｆｌａｇ＿Ｃ［２］と名付けられた３つの候補コンテキストモデルが、シンタックス要素ｃｕ＿ｓｋｉｐ＿ｆｌａｇをコーディングするために使用され得る。３つの候補から適切なコンテキストを選ぶために、選択値ｘが、次のように計算され得る：
ｘ＝（ｃｕ＿ｓｋｉｐ＿ｆｌａｇ［ｘＮｂＬ］［ｙＮｂＬ］  ＆＆  ａｖａｉｌａｂｌｅＬ）＋（ｃｕ＿ｓｋｉｐ＿ｆｌａｇ［ｘＮｂＡ］［ｙＮｂＡ］  ＆＆  ａｖａｉｌａｂｌｅＡ）
[0102]上記式について、使用すべきコンテキストモデルは、以下のように決定され得る：
[0103]    （ｘ０，ｙ０）は、現在のピクチャの左上のサンプルに対する（relative to）、現在のルーマブロックの左上のルーマサンプルの位置を指定する。
【００９４】
[0104]    位置（ｘＮｂＬ，ｙＮｂＬ）は、（ｘ０−１，ｙ０）に設定され得、変数ａｖａｉｌａｂｌｅＬは、現在のブロックのすぐ左に位置するブロックの利用可能性を示し得る。
【００９５】
[0105]    位置（ｘＮｂＡ，ｙＮｂＡ）は、（ｘ０，ｙ０−１）に等しく設定され得、変数ａｖａｉｌａｂｌｅＡは、現在のブロックの真上に位置するコーディングブロックの利用可能性を指定し得る。
【００９６】
[0106]    ｃｕ＿ｓｋｉｐ＿ｆｌａｇ［ｘＮｂＬ］［ｙＮｂＬ］およびｃｕ＿ｓｋｉｐ＿ｆｌａｇ［ｘＮｂＡ］［ｙＮｂＡ］は、それぞれ、第１のブロック（ブロックＬ）および第２のブロック（ブロックＡ）についてのｃｕ＿ｓｋｉｐ＿ｆｌａｇを表し得る。
【００９７】
[0107]上述されたように、ＨＥＶＣおよびＪＥＭによってインプリメントされるコーデックは、サブピクセル動きベクトルがイネーブルにされているとき、固定補間フィルタを使用する。補間フィルタは、任意の所与の状況に対して、最適ではないことがあり得る。例えば、より高いカットオフ周波数を有するフィルタは、コーディングユニットがより多くのディテール（detail）を有するときにより適切であり得、それによって、補間が行われるときにディテールが保存され得る。別の例として、より低いカットオフ周波数を有するフィルタは、処理ユニットがより少ないディテールを有するときにより適切であり得、それによって、コーディングユニットは、より少ないビットでコーディングされ得る。
【００９８】
[0108]動き推定および動き補償は、固定フィルタではなく、最適な補間フィルタを使用することによって、最適化され得る。所与の状況についての最良のフィルタは、高度にローカライズされおよびコンテンツ依存である傾向にある。したがって、最適なフィルタを使用することは、フィルタ係数がエンコーダからデコーダに送信される必要があるという点で、シグナリングオーバヘッドを著しく増大させ得、および／またはエンコーダの複雑さを増大させ得る。
【００９９】
[0109]様々なインプリメンテーションでは、ビデオコーダが、異なる予測ユニットについての動き推定および動き補償を行うときに、利用可能な複数の補間フィルタ間で切り替えるように構成され得る。いくつかのケースでは、インターレイヤ予測が、適応的なやり方で補間フィルタを選択することによって改善され得る。様々なインプリメンテーションでは、フィルタ長、カットオフ周波数、遷移帯域、リップルの量などの特性、および／または特性の組合せをそれぞれ有する、Ｎ個のフィルタのセットが定義され得る。
【０１００】
[0110]ｆ４００。また、フィルタのセット４１０が、図４に例示されており、これは、コーデックによる使用のために定義された全てのフィルタを表す。上述されたように、動き推定４４４ステップにおいて、参照フレーム４６４からの参照ブロックが決定される。参照ブロックは、外観という点で、コーディングユニット４０２に最も良く一致する（例えば、それに最も類似している）参照フレーム４６４の一部分である。この例では、コーディングユニット４０２は、シーケンス、ピクチャ、スライス、コーディングツリーユニット、コーディングユニット、変換ユニット、予測ユニット、またはビデオデータの何らかの他のブロックであり得る。参照ブロックを使用して、動き推定４４４は、コーディングユニット４０２についての動き情報４０６を決定し得る。動き情報４０６は、特に、参照フレームを識別するために使用され得るインデックスと、１つまたは複数の動きベクトルとを含み得る。
【０１０１】
[0111]図４の例では、動き推定４４４ステップはまた、フィルタ選択基準４１４を決定し得る。フィルタ選択基準４１４は、特定のコーディングユニット４０２に適用可能であるフィルタのサブセット４１２（ここでは、フィルタ候補とも呼ばれる）を選択するために使用され得る。例えば、いくつかのインプリメンテーションでは、フィルタ選択基準４１４は、コーディングユニット４０２のコーディングレベル（例えば、シーケンスレベル、ピクチャレベル、スライスレベル、コーディングツリーユニットレベル、コーディングユニットレベル、変換ユニットレベル、予測ユニットレベル、等）であり得る。この例では、フィルタのサブセット４１２は、コーディングユニット４０２のコーディングレベルに基づいて選択され得る。例えば、サブセットにおける特定のフィルタおよびサブセットにおけるフィルタの数は、異なる処理レベルにわたって変化し得る。
【０１０２】
[0112]様々なインプリメンテーションでは、動き推定４４４は、フィルタのサブセット４１２の中から最適な補間フィルタを選択し得る。例えば、動き推定４４４は、フィルタのサブセット４１２におけるフィルタのうちのどれが最良の圧縮を提供するかを決定するために、レート歪み最適化を使用し得る。様々な他の方法が、最適なフィルタを選択するために使用され得る。
【０１０３】
[0113]様々なインプリメンテーションでは、選択されたフィルタは、フィルタインデックス４０８を使用して識別され得る。フィルタインデックス４０８は、フィルタのサブセット４１２の中から選ばれたフィルタを識別し得る。例えば、可能なインデックスは、（例示される例では、それぞれ、Ｆ１、Ｆ３、およびＦ９に対して）０、１、または２であり得、フィルタＦ１が選択されたとき、フィルタインデックス４０８は、「０」になり得る。いくつかのケースでは、フィルタインデックス４０８は、動き情報４０６とともに、出力ビットストリーム４２０中に含まれ得る。これらのインプリメンテーションでは、フィルタインデックス４０８は、ビットストリーム４２０中で明示的にシグナリングされると言える。
【０１０４】
[0114]いくつかのケースでは、フィルタインデックス４０８は、暗黙的にシグナリングされ得、すなわち、フィルタインデックス４０８は、ビットストリーム４２０中に含まれず、代わりに、ビットストリーム４２０を復号するときに、デコーダによって導出され得る。例えば、いくつかのケースでは、フィルタ選択基準４１４は、１つのフィルタのみを含むフィルタのサブセット４１２をもたらす。別の例として、いくつかのケースでは、フィルタのサブセット４１２は、複数のフィルタを含み得るが、動き推定４４４は、デフォルトフィルタを使用することを決定する（例えば、時間的マージ候補については、フィルタＦ１が常に選択される）。他の例では、コーディングレベル、予測モード、および／または使用されているコーディングツールなどの、１つまたは複数のファクタ（factors）が、適切なフィルタを導出するために、デコーダによって使用され得る。
【０１０５】
[0115]いくつかのインプリメンテーションでは、動き推定４４４は、以前にコーディングされたブロックから導出された統計量に基づいて、フィルタを選択し得る。例えば、以前にコーディングされたブロックにおいて、フィルタのサブセット４１２からのいくつかのフィルタは、乏しいパフォーマンスを有していることにより、一度も使用されたことがない可能性がある。この例では、動き推定４４４は、現在の特定のコーディングユニット４０２のためのフィルタを選択するときに、パフォーマンスの悪いフィルタを除去し得る。逆に、特定のフィルタが、以前にコーディングされたブロックにおいて非常に頻繁に使用されているとき、動き推定４４４は、特定のコーディングユニット４０２のためのフィルタを選択するときに、このフィルタを優先し得る。
【０１０６】
[0116]いくつかのインプリメンテーションでは、動き推定４４４は、空間的に隣接するものまたは時間的に隣接するものなどの、隣接ブロックからフィルタを選択し得る。例えば、いくつかのケースでは、コーディングユニット４０２は、隣接ブロックから動きベクトルをコピーし得る。この例では、コーディングユニット４０２はまた、同じ隣接ブロックからフィルタインデックスを借り得る。別の例として、いくつかの隣接ブロックが同じフィルタを使用するとき、動き推定４４４は、コーディングユニット４０２が同じフィルタを使用すべきであると決定し得る。
【０１０７】
[0117]いくつかのインプリメンテーションでは、フィルタ選択基準４１４は、様々なファクタに基づき得る。例えば、フィルタのサブセット４１２におけるフィルタは、現在のブロックのために使用される予測モード（例えば、インター予測、イントラ予測、等）、動きベクトルの解像度または異なるもの、使用されているコーディングツール（例えば、双方向オプティカルフロー）、および／またはオーバーラップブロック動き補償（overlapped block motion compensation）におけるピクセルに基づいて選択され得る。別の例として、フィルタのサブセット４１２におけるフィルタは、現在のブロックのサイズおよび／または形状、現在のフレームの解像度、現在のフレームと参照フレームとの間の距離間の距離、および／または参照ピクチャについての量子化パラメータ（ＱＰ）値に基づいて選択され得る。
【０１０８】
[0118]例として、コーディングユニット４０２が、フレームまたはスライスなどのデータの大きいセットであるか、またはコーディングユニット４０２が、ディテールをほとんど有していないとき、フィルタのサブセット４１２におけるフィルタは、低いカットオフを有するフィルタであり得る。低いカットオフ周波数を有するフィルタは、ディテールを滑らかにする傾向があり、したがって、コーディングユニット４０２がディテールをほとんど有していないとき、低いカットオフ周波数を有するフィルタを使用することによってデータが失われることはない。別の例として、コーディングユニット４０２が、コーディングユニットなどのデータの小さいセットであるか、またはコーディングユニット４０２が、高度のディテール（high degree of detail）を有するとき、フィルタのサブセット４１２は、高いカットオフ周波数を有するフィルタを含み得る。高いカットオフ周波数を有するフィルタは、コーディングユニット４０２における高い周波数成分(high frequency components)を維持し得、したがって、ディテールを保存する。
【０１０９】
[0119]いくつかのインプリメンテーションでは、追加のフィルタ候補が、フィルタのサブセット４１２からのフィルタをマージすることによって生成され得る。例えば、２つのフィルタ候補が与えられると、第１の候補フィルタからの偶数の位相シフトが、第２の候補からの奇数の位相シフトとマージされて、第３の候補が生成される。別の例として、第４の候補が、第１の候補からの奇数の位相シフトを、第２の候補からの偶数の位相シフトと組み合わせることによって構成され得る。
【０１１０】
[0120]いくつかのインプリメンテーションでは、複数の補間フィルタが結合され得る。例えば、整数サンプルのための補間フィルタが、分数サンプルのための補間フィルタへとカウントされ得る。この例では、整数サンプルのためのフィルタは、分数サンプルのためのフィルタからの最小の非ゼロ位相シフトを有するフィルタのものよりも高いカットオフ周波数を有し得る。代替として、整数サンプルのためのフィルタは、分数サンプルのためのフィルタのものよりも低いカットオフ周波数を有し得る。
【０１１１】
[0121]いくつかのインプリメンテーションでは、コーディングツールがまた、フィルタに関連付けられる。例えば、双方向オプティカルフローは、勾配フィルタを使用し得、フレームレートアップコンバージョンは、リファインメントフィルタ（refinement filter）を使用し得る。いくつかのインプリメンテーションでは、ツール固有のフィルタが、フィルタのサブセット４１２における各フィルタ候補に従って生成され得る。例えば、３つの補間フィルタ候補が与えられると、３つの勾配フィルタが、双方向オプティカルフローのために導出され得る。これらのインプリメンテーションでは、ツール固有のフィルタを導出することによって、ツール固有のフィルタは、出力ビットストリーム４２０中で記述される必要がない。
【０１１２】
[0122]いくつかの例では、フィルタが整数ピクセル位置と分数ピクセル位置との両方に適用されるとき、整数ピクセル位置のためのフィルタが、最初に適用され得る。その後、フィルタされた整数サンプルが、さらなる補間のための入力として使用されて、分数ピクセルサンプルを導出し得る。
【０１１３】
[0123]いくつかの例では、フィルタが整数ピクセル位置と分数ピクセル位置との両方に適用されるとき、整数ピクセル位置のためのフィルタは、関連する動きベクトルが整数の精度を有するときにのみ適用可能であり得る。これらの例では、分数ピクセルサンプルは、整数位置におけるフィルタされていないピクセルを入力として使用して導出され得る。
【０１１４】
[0124]図５は、復号プロセス５００の動き推定５４４ステップの例を例示する。また、フィルタのセット５１０が、図５に例示されており、これは、コーデックによる使用のために定義された全てのフィルタを表す。デコーダプロセス５００では、動き推定５４４は、予測ユニット５０２を再構成または予測するために使用され得る。現在のフレーム中の予測ユニット５０２について、符号化されたビットストリーム５２０は、動き情報５０６を含み得る。動き情報５０６は、例えば、参照フレーム５６４に対するインデックスと、１つまたは複数の動きベクトルとを含み得る。動き情報５０６を使用して、動き推定５４４は、参照フレーム５６４中の参照ブロックを識別し、予測ユニット５０２を予測または生成し得る。
【０１１５】
[0125]いくつかのインプリメンテーションでは、動き推定５４４はまた、フィルタ選択基準５１４を決定し得る。フィルタ選択基準５１４は、予測ユニット５０２に適用可能であるフィルタのサブセット５１２を選択するために使用され得る。例えば、フィルタ選択基準５１４は、予測ユニット５０２のコーディングレベル、予測モード、および／または使用されているコーディングツールに基づき得る。サブセットにおける特定のフィルタおよびサブセットにおけるフィルタの数は、ビットストリーム５２０が復号され、異なる状況に遭遇するにつれて変化し得る。
【０１１６】
[0126]いくつかのケースでは、ビットストリーム５２０は、フィルタのサブセット５１２からフィルタを選択するために使用され得る明示的なフィルタインデックス５０８を含む。様々なインプリメンテーションでは、フィルタインデックス５０８は、動き情報５０６に関連付けられ得る。フィルタインデックス５０８がビットストリーム５２０中に含まれるとき、フィルタインデックス５０８は、明示的にシグナリングされると言える。フィルタインデックス５０８は、補間のために使用されるべきフィルタのサブセット５１２の中からのフィルタを識別し得る。例えば、可能なインデックスは、（例示される例では、それぞれ、Ｆ１、Ｆ３、およびＦ９に対して）０、１、または２であり得、フィルタＦ１が選択されたとき、フィルタインデックス５０８は、「０」になり得る。
【０１１７】
[0127]いくつかのケースでは、デコーダプロセス５００は、フィルタインデックス５０８を導出し得る。例えば、いくつかのケースでは、フィルタ選択基準５１４は、１つのフィルタのみを含むフィルタのサブセット５１２をもたらす。別の例として、いくつかのケースでは、フィルタのサブセット５１２は、複数のフィルタを含み得るが、動き推定５４４は、デフォルトフィルタを使用することを決定する（例えば、時間的マージ候補については、フィルタＦ１が常に選択される）。他の例では、コーディングレベル、予測モード、および／または使用されているコーディングツールなどの、１つまたは複数のファクタが、適切なフィルタを導出するために、デコーダによって使用され得る。デコーダは、エンコーダによって決定されたものと同じフィルタを使用すべきであるので、デコーダがフィルタの識別を決定論的に（deterministically）導出できないケースでは、フィルタの識別は、ビットストリーム５２０中でシグナリングされることになる。
【０１１８】
[0128]様々な方法が、フィルタインデックスが暗黙的であるときに使用すべき補間フィルタを決定するために使用され得る。いくつかの例では、補間フィルタは、現在のブロックの前に符号化された他のブロックによって決定され得る。例えば、ある特定の条件を満たすブロックは、他のブロックのために選ばれたフィルタを推論または継承することによって、フィルタを決定し得る。例えば、現在の動きベクトルが、（例えば、空間的マージ候補、アフィンマージ候補、および他の候補でのケースのように）以前にコーディングされたブロックから導出されるとき、動きベクトルがそれから導出されているブロックのために選ばれた補間フィルタが、現在のブロックのために使用され得る。この例では、いったんデコーダが動きベクトルを決定すると、デコーダは、いかなる追加の情報も必要とせずに、現在のブロックのためのフィルタを導出し得るので、フィルタインデックスの明示的なシグナリングは、必要とされない場合がある。
【０１１９】
[0129]いくつかの例では、ある特定のブロックのための補間フィルタは、所定のデフォルトフィルタを常に選ぶか、または時に選び得る。これらの例では、別のブロックからのフィルタの継承またはフィルタを探索することは、必要ではない。いくつかのケースでは、いったん決定されると、デフォルトフィルタは、全てのコーディングレベルで適用される。いくつかの例では、フィルタのサブセットは、特定のフィルタの選択に偏り得る。例えば、フィルタは、シーケンシャル順にテストされ得、特定のフィルタが、フレームレートアップコンバージョン、時間的動きベクトル予測（ＴＭＶＰ）、アドバンスト動きベクトル予測（ＡＭＶＰ）、またはゼロ動きベクトルマージ候補から動きベクトルを導出する、ブロックのための第１の候補として設定され得る。いくつかの例では、デフォルトフィルタは、フレームおよび／またはスライスにわたって変化し得る。例えば、以前の（１つまたは複数の）ピクチャおよび／または（１つまたは複数の）スライスにおいて最も頻繁に選ばれたフィルタが、現在のピクチャまたはスライスに属する全てのブロックのためのデフォルトフィルタとして設定され得る。デコーダがエンコーダからのいかなるサイド情報もなしに同じプロシージャを模倣し得るので、フィルタインデックスの明示的なシグナリングは、必要とされない場合がある。
【０１２０】
[0130]フィルタインデックスは、そうでない場合、必要に応じて、ビットストリーム中に明示的に含まれ得る。いくつかの例では、「ｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘ」と呼ばれ得るシンタックス要素が、暗黙的にフィルタを選ぶことができないブロックのために選ばれた補間フィルタを示すために、エンコーダによってデコーダにシグナリングされ得る。シグナリングによってとは、ｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘが、デコーダによって読み取られるように、ビットストリーム中に含まれ得ることを意味する。
【０１２１】
[0131]いくつかの例では、ｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘの値は、固定長コード、指数ゴロムコード、単項コード、または短縮された単項コードなどの、２値化コードを用いて２値化され得る。例えば、フィルタのサブセットにおいて３つのフィルタが存在するとき、短縮された単項コードが、ｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘを示すために使用され得る。この例では、２つのフラグ（例えば、ＦＬＡＧ０およびＦＬＡＧ１）が、サブセットにおける３つのフィルタについての３つの可能なインデックス０、１、および２をコーディングするために使用され得る。例えば、３つのインデックスは、それぞれ、（０，Ｎ／Ａ）、（１，０）、および（１，１）としてコーディングされ得る。この例では、１つのフラグ（ＦＬＡＧ０）のみが、ｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘ＝０を示すために使用され得る。
【０１２２】
[0132]いくつかの例では、ある特定のコンテキストモデルが、ｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘに関連付けられ得、それは、ｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘを符号化するときに使用され得る。例えば、Ｘ個のコンテキストモデルが、ｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘに関連付けられ得、例えば、ｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘ＿Ｃ［０］、ｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘ＿Ｃ［１］、．．．、ｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘ＿Ｃ［Ｘ−１］と名付けられる。この例では、これらのコンテキストモデルの中からインデックスｘを有するコンテキストモデル、ｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘ＿Ｃ［ｘ］が、現在のブロックについてのｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘをコーディングするためのコンテキストとして選ばれ得る。
【０１２３】
[0133]いくつかの例では、ｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘが、２つのフラグ（例えば、ＦＬＡＧ０およびＦＬＡＧ１）を使用して表され得るとき、各フラグに関連付けられたある特定の数のコンテキストモデルが存在し得る。例えば、ＦＬＡＧ０に関連付けられたＹ個のコンテキストモデルが存在し得、ｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘ＿Ｃ［０］、ｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘ＿Ｃ［１］、．．．、ｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘ＿Ｃ［Ｙ−１］と名付けられる。この例では、ＦＬＡＧ０が設定されるとき、インデックスｘを有するコンテキストモデル、ｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘ＿Ｃ［ｘ］が、現在のブロックのｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘをコーディングするためのコンテキストとして選ばれ得る。この例では、ＦＬＡＧ１は、設定されていないか、または重要でない場合がある。別の例として、ＦＬＡＧ１に関連付けられたＺ個のコンテキストモデルが存在し得、ｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘ＿Ｃ［０］、ｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘ＿Ｃ［１］、．．．、ｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘ＿Ｃ［Ｚ−１］と名付けられる。この例では、ＦＬＡＧ１が設定されるとき、インデックスｘを有するコンテキストモデル、ｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘ＿Ｃ［ｘ］が、現在のブロックのｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘをコーディングするためのコンテキストとして選ばれる。この例では、ＦＬＡＧ０は、設定されていないか、または重要でない場合がある。
【０１２４】
[0134]上記の例では、ｘは、様々な基準に基づいて選択され得る。例えば、ｘは、現在のブロックのサイズ、現在のブロックの形状、現在のフレームの解像度、インター予測方向、現在のブロックについての（１つまたは複数の）動きベクトル、現在のブロックについての動きベクトルの差分、現在のブロックのための参照フレーム、現在のブロックに対する隣接ブロックの（１つまたは複数の）ｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘ、何らかの他の基準、または基準の組合せに基づき得る。様々な例では、関数がｘの値を生成するために使用され得、ここで、関数は、上記の例となる基準のうちの１つまたは複数を入力として受け取り得る。いくつかの例では、異なる関数が、異なるフレーム解像度のために使用され得る。
【０１２５】
[0135]いくつかの例では、ｘが現在のブロックのサイズに基づくとき、しきい値Ｐが、ｘの値を決定するために使用され得る。例えば、現在のブロックのサイズがＰ未満であるとき、ｘは０になり得、それ以外の場合、ｘは１になり得る。しきい値Ｐは、整数であり得る。現在のブロックのサイズは、Ｍ×Ｎとして計算され得、ここで、ＭおよびＮは、ピクセル単位での、現在のブロックの幅および高さである。
【０１２６】
[0136]いくつかの例では、ｘが現在のブロックのサイズに基づくとき、ｘの値は、整数配列｛ａＫ｝から決定され得、ここで、配列は、昇順にソートされる。例えば、ａＫ−１＜＝Ｓ＜ａＫのとき、ｘはＫに等しくなり得、ここで、Ｓは、現在のブロックのサイズである。この例では、Ｓは、Ｍ×Ｎとして計算される、現在のブロック中のピクセルの数であり得、ここで、ＭおよびＮは、ピクセル単位での、現在のブロックの幅および高さである。
【０１２７】
[0137]いくつかの例では、ｘが現在のブロックの形状に基づくとき、ｘの値は、ブロックの高さと幅との間の関係から決定され得る。例えば、現在のブロックについての高さＭおよび幅Ｎが与えられると、Ｍ＜Ｎのとき、ｘは０に等しくなり得、Ｍ＝Ｎのとき、ｘは１に等しくなり得、Ｍ＞Ｎのとき、ｘは２に等しくなり得る。
【０１２８】
[0138]いくつかの例では、ｘが現在のブロックの予測方向に基づくとき、ｘの値は、予測方向から決定され得る。例えば、現在のブロックが、単インター予測を用いてコーディングされるとき、ｘは０に等しくなり得、現在のブロックが、双インター予測を用いてコーディングされるとき、ｘは１に等しくなり得る。別の例として、ｘの値は、値ＩｎｅｒＤｉｒに基づき得、ここで、現在のブロックが参照リスト０からの単インター予測を用いてコーディングされるとき、ＩｎｔｅｒＤｉｒは１であり、現在のブロックが参照リスト１からの単インター予測を用いてコーディングされるとき、ＩｎｔｅｒＤｉｒは２であり、現在のブロックが双インター予測を用いてコーディングされるとき、ＩｎｔｅｒＤｉｒは３である。この例では、ｘは、ＩｎｔｅｒＤｉｒ−１に等しくなり得る。
【０１２９】
[0139]いくつかの例では、ｘが隣接ブロックのｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘに基づくとき、ｘの値は、１つまたは複数の隣接ブロックのｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘから決定され得る。例えば、ｘの値は、関数ｆ（ｌｅｆｔ＿ｉｄｘ，ｔｏｐ＿ｉｄｘ）によって決定され得、ここで、ｌｅｆｔ＿ｉｄｘは、左の隣接ブロックのｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘであり、ｔｏｐ＿ｉｄｘは、上の隣接ブロックのｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘである。関数ｆは、任意の関数であり得る。いくつかの例では、異なる関数が、異なるフレーム解像度のために使用され得る。代替または追加として、ｘの値は、ａ＋ｂに等しくなり得、ここで、左の隣接ブロックのｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘが利用可能でありかつゼロよりも大きいとき、ａは１に等しく（そうでない場合、ａは０に等しい）、また、上の隣接ブロックのｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘが利用可能でありかつゼロよりも大きい場合、ｂは１に等しい（そうでない場合、ｂは０に等しい）。
【０１３０】
[0140]いくつかの例では、ファクタの組合せが、ｘの値を決定するときに考慮され得る。例えば、現在のブロックのサイズは、隣接ブロックからｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘ値を選択するために使用され得る。例えば、ｘは、現在のピクチャのサイズがしきい値Ｐ未満であるとき、ｆ（ｌｅｆｔ＿ｉｄｘ，ｔｏｐ＿ｉｄｘ）の結果に等しくなり得、ここで、Ｐは、整数であり、現在のブロックのサイズは、計算されたＭ×Ｎであり、ここで、ＭおよびＮは、ピクセル単位での現在のブロックの幅および高さである。現在のブロックのサイズがＰ以上であるとき、ｘは、関数ｇ（ｌｅｆｔ＿ｉｄｘ，ｔｏｐ＿ｉｄｘ）の出力に等しくなり得る。
【０１３１】
[0141]補間フィルタを切り替える例となるアプリケーションが、ここで説明される。上述されたように、最良のフィルタが、異なる特性を有し得るＮ個のフィルタの中から、各ブロックのために選ばれ得る。最良のフィルタは、例えば、レート歪み最適化、または何らかの他の選択メカニズムを使用して選択され得る。
【０１３２】
[0142]エンコーダの複雑さを低減させるために、最良のフィルタは、既にコーディングされているブロックから継承されるか、以前の決定から再利用されるか、または全ての利用可能なフィルタのパフォーマンスを評価することなく固定であるか、のいずれかであり得る。シグナリングオーバヘッドを低減させるために、フィルタの固定セットが前もって決定され、エンコーダは、フィルタ係数の代わりに、フィルタインデックスをデコーダにシグナリングし得る。
【０１３３】
[0143]以下の例は、補間フィルタの切り替えのアプリケーションを実証するために、ＨＭ１６．６ベースのＪＥＭ３．０を使用する。ＪＥＭは、国際電気通信連合ビデオコーディングエキスパートグループ（ＩＴＵ−ＶＣＥＧ）および国際標準化機構／国際電気標準会議モーションピクチャエキスパートグループ（ＩＳＯ／ＩＥＣ  ＭＰＥＧ）のプロジェクトである。ＪＥＭは、ＨＥＶＣよりも良い圧縮能力を有するビデオコーディング技術を研究および潜在的に標準化するためのプラットフォームを提供する参照ソフトウェアである。
【０１３４】
[0144]以下の例では、コーディングユニットは、ＪＥＭ３．０上でインプリメントされるＱＴＢＴ構造において定義されるブロックである。他の例では、コーディングユニットは、ＱＴＢＴブロックの集合、ＣＴＵ、スライス、ピクチャ、シーケンス、または別の好適なコーディングユニットなどの、より大きい構造であり得る。この例は、ルーマ成分のための補間フィルタのみを示しており、補間フィルタの切り替えは、クロマ成分のみならず、整数サンプルにも拡張され得ることに留意されたい。
【０１３５】
[0145]この例では、補間フィルタの候補セットは、異なる特性を有する３つのフィルタ：１つの１２タップフィルタ（Ｆ０）と、２つの８タップフィルタ（Ｆ１およびＦ２）とを含む。フィルタＦ０が、表３に例示され、フィルタＦ１が、表４に例示され、フィルタＦ２が、表５に例示される。この例では、フィルタ候補のセットは、異なるピクチャおよび／またはスライスにわたって変化しない。ＪＥＭ３．０は、最大で１／１６までの動きベクトル解像度をサポートするので、各フィルタ候補は、以下の表に示されるように、１６個の異なる位相シフトで構成される。
【０１３６】
【表３】
2019535198.tif 000005
【０１３７】
【表４】
2019535198.tif 000006
【０１３８】
【表５】
2019535198.tif 000007
【０１３９】
[0146]図６は、３つの例となるフィルタ、Ｆ０、Ｆ１、およびＦ２の周波数応答を例示するグラフである。各曲線は、各フィルタについて８つの同じ位相シフトに対応する。この例によって例示されるように、フィルタＦ０は、高いカットオフ周波数を有し、一方、フィルタＦ２は、低いカットオフ周波数を有する。フィルタＦ１は、極めてニュートラルなカットオフ周波数を有する。
【０１４０】
[0147]この例を続けると、所与のコーディングユニットのために、フィルタＦ０、Ｆ１、およびＦ２のうちの１つが選ばれ得る。選択されたフィルタは、暗黙的または明示的にシグナリングされ得る。
【０１４１】
[0148]この例では、デコーダが、エンコーダからのいかなるサイド情報もなしに、エンコーダがマージ動きベクトル候補を決定するために実行するのと同じプロシージャを模倣し得るので、フィルタインデックスの暗黙的なシグナリングが、マージモードのためにイネーブルにされる。例えば、コーディングユニットのための補間フィルタは、現在の動きの導出元のブロックからフィルタインデックスを継承するか、あるいは、この例では、フィルタＦ０である、デフォルトフィルタを選択するかのいずれかによって決定され得る。
【０１４２】
[0149]この例を続けると、フィルタ継承は、現在の動きが、空間的マージ候補、組み合わされている２つの候補が同一のフィルタを使用するときの組み合わされたマージ候補、およびアフィンマージ候補から導出されるときに使用され得る。これらのケースの各々では、継承元のブロックのコンテンツが、フィルタの選択に影響を及ぼし得る。また、この例では、現在の動きベクトルが、フレームレートアップコンバージョンマージ候補または時間的マージ候補（例えば、ＴＭＶＰ、ＡＭＶＰ、ＳＴＭＶＰ、およびゼロ動きベクトル）候補から導出されるとき、デフォルトフィルタ、Ｆ０が選択される。これらのケースの各々では、ブロックにおけるディテールを保存するために、高いカットオフ周波数を有するフィルタが望ましくあり得る。
【０１４３】
[0150]この例を続けると、フィルタインデックスの明示的なシグナリングは、ＡＭＶＰモードのためにイネーブルである。ＪＥＭ３．０では、２つの追加のレート−歪み最適化がエンコーダに含まれ、これは、３つの例となるフィルタ候補から最良のフィルタを選ぶために使用され得る。追加の最適化プロセスは、整数動きベクトルを再利用すること、または特定の構成において選ばれたフィルタを再利用することによって、追加のプロセスをスキップすることによって、単純化され得る。一例として、照度補償（ＩＣ）ツールの場合、照度補償がオフであるときに選ばれたフィルタは、照度補償がオンであるときのケースにおいて再利用され得る。これは、符号化の時間を低減させ得る。
【０１４４】
[0151]この例を続けると、フィルタインデックスの明示的なシグナリングがイネーブルにされるとき、ｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘは、Ｆ０については「０」、Ｆ１については「１０」、およびＦ２については「１１」を使用して、２値化され得る。以下のように、２つのフラグＦＬＡＧ０およびＦＬＡＧ１が、ｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘをコーディングするために使用され得る：
[0152]    ＦＬＡＧ０
[0153]    ｉｆ（ＦＬＡＧ０）
[0154]    ＦＬＡＧ１
[0155]上記の例を続けると、２つのコンテキストが、各フラグのために提供され得る：ＦＬＡＧ０については、（ＦＬＡＧ０＿ｃｔｘ０，ＦＬＡＧ０＿ｃｔｘ１）、およびＦＬＡＧ１については、（ＦＬＡＧ１＿ｃｔｘ０，ＦＬＡＧ１＿ｃｔｘ１）。例として、現在のブロックが単予測を用いてコーディングされるとき、ＦＬＡＧ０＿ｃｔｘ０は、ＦＬＡＧ０をコーディングするために使用され得、ＦＬＡＧ１＿ｃｔｘ０は、ＦＬＡＧ１をコーディングするために使用され得る。別の例として、現在のブロックが双予測を用いてコーディングされるとき、ＦＬＡＧ０＿ｃｔｘ１は、ＦＬＡＧ０をコーディングするために使用され得、ＦＬＡＧ１＿ｃｔｘ１は、ＦＬＡＧ１をコーディングするために使用され得る。
【０１４５】
[0156]２つの補間候補、Ｆ０およびＦ２を符号化する別の例では、ｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘは、Ｆ０については「０」およびＦ１については「１」として２値化され得る。この例では、１つのフラグが、ｉｎｔｅｒｐｏｌａｔｉｏｎ＿ｆｉｌｔｅｒ＿ｉｎｄｅｘをコーディングするために使用され得る。各フラグは、関連するコンテキストＦＬＡＧ０＿ｃｔｘ０およびＦＬＡＧ０＿ｃｔｘ１を有し得る。現在のブロックのサイズが（この例の目的のために）２５６未満であるとき、ＦＬＡＧ０＿ｃｔｘ０が、ＦＬＡＧ０をコーディングするために使用され得る。そうでない場合、サイズが２５６以上であるとき、ＦＬＡＧ０＿ｃｔｘ１が、ＦＬＡＧ０をコーディングするために使用され得る。現在のブロックのサイズは、ｗ×ｈとして計算され、ここで、ｗおよびｈは、それぞれ、ピクセル単位で現在のブロックの幅および高さを表す。
【０１４６】
[0157]図７は、符号化プロセス中に補間フィルタを切り替えるためのプロセス７００の例を例示する。７０２において、プロセス７００は、ビデオデータを取得することを含む。ビデオデータは、例えば、カメラのようなビデオキャプチャデバイスから取得され得る。代替または追加として、ビデオデータは、記憶された位置から読み取られ得る。
【０１４７】
[0158]７０４において、プロセスは、コーディングユニットを符号化することを含み、ここにおいて、処理を符号化することは、コーディングユニットについての動き推定および動き補償のために補間フィルタを選択することを含み、ここにおいて、補間フィルタは、補間フィルタのセットから選択される。いくつかのインプリメンテーションでは、補間フィルタは、補間フィルタのセットから選択された、補間フィルタのサブセットから選択される。いくつかのインプリメンテーションでは、補間フィルタのサブセットは、コーディングユニットのコーディングレベルに基づいて決定される。いくつかのインプリメンテーションでは、サブセットは、コーディングユニットの予測モードに基づいて決定される。いくつかのインプリメンテーションでは、サブセットは、動き推定の結果に基づいて決定される。いくつかのインプリメンテーションでは、サブセットは、コーディングユニットをコーディングするために使用されるコーディングツールに基づいて決定される。
【０１４８】
[0159]いくつかのインプリメンテーションでは、補間フィルタは、以前にコーディングされたブロックから選択される。いくつかのインプリメンテーションでは、補間フィルタは、隣接ブロックから選択される。
【０１４９】
[0160]いくつかのインプリメンテーションでは、補間フィルタは、別の補間フィルタとマージされ、結果として得られるマージされた補間フィルタは、動き推定のために使用される。
【０１５０】
[0161]いくつかのインプリメンテーションでは、補間フィルタは、第２の補間フィルタに結合される。これらのインプリメンテーションでは、補間フィルタは、整数ピクセル位置のためのものであり得、第２の補間フィルタは、分数ピクセル位置のためのものであり得る。いくつかのインプリメンテーションでは、補間フィルタと第２の補間フィルタは、異なるカットオフ周波数を有し得る。
【０１５１】
[0162]７０６において、プロセス７００は、符号化されたビデオビットストリームを生成することを含み、ここにおいて、ビデオビットストリームは、符号化されたコーディングユニットを含む。いくつかのインプリメンテーションでは、符号化されたビデオビットストリームは、フィルタインデックスのような、選択された補間フィルタを識別する明示的な値を含み得る。いくつかのインプリメンテーションでは、補間フィルタを識別する値は、符号化されたビデオビットストリームから暗示され得る。
【０１５２】
[0163]図８は、復号プロセスにおいて補間フィルタを切り替えるためのプロセス８００の例である。８０２において、プロセス８００は、符号化されたビデオビットストリームを取得することを含む。ビットストリームは、例えば、記憶位置についておよび／またはネットワークを介して取得され得る。
【０１５３】
[0164]８０４において、プロセス８００は、符号化されたビデオビットストリームから現在のフレーム中のコーディングユニットのための参照フレームを決定することを含む。参照フレームは、現在のフレームに時間的に先行または後続し得る。参照フレームは、現在のフレームと同じフレームであり得る。
【０１５４】
[0165]８０６において、プロセス８００は、補間フィルタのセットから補間フィルタを決定することを含む。いくつかのインプリメンテーションでは、補間フィルタは、補間フィルタのセットからの補間フィルタのサブセットから選択され得る。いくつかのインプリメンテーションでは、補間フィルタのサブセットは、コーディングユニットのコーディングレベルに基づいて決定され得る。いくつかのインプリメンテーションでは、サブセットは、コーディングユニットのための予測モードに基づいて決定され得る。いくつかのインプリメンテーションでは、サブセットは、動き推定の結果に基づいて決定され得る。いくつかのインプリメンテーションでは、サブセットは、コーディングユニットをコーディングするために使用されるコーディングツールに基づいて決定され得る。
【０１５５】
[0166]いくつかのインプリメンテーションでは、補間フィルタは、以前にコーディングされたブロックから選択され得る。いくつかのインプリメンテーションでは、補間フィルタは、隣接ブロックから選択され得る。
【０１５６】
[0167]いくつかのインプリメンテーションでは、補間フィルタは、第２の補間フィルタとマージされ得、結果として得られるマージされた補間フィルタが、動き推定のために使用され得る。
【０１５７】
[0168]いくつかのインプリメンテーションでは、補間フィルタは、第２の補間フィルタに結合され得る。これらのインプリメンテーションでは、補間フィルタは、整数ピクセル位置のためのものであり得、第２の補間フィルタは、分数ピクセル位置のためのものであり得る。いくつかのインプリメンテーションでは、補間フィルタと第２の補間フィルタは、異なるカットオフ周波数を有し得る。
【０１５８】
[0169]いくつかのインプリメンテーションでは、符号化されたビデオビットストリームは、選択された補間フィルタを識別するフィルタインデックスのような、明示的な値を含む。いくつかのインプリメンテーションでは、プロセスは、ビットストリームからのデータを使用して、補間フィルタの識別を導出することを含む。
【０１５９】
[0170]８０８において、プロセス８００は、コーディングユニットを再構成するために、８０４で決定された参照フレームと、８０６において決定された補間フィルタとを使用することを含む。
【０１６０】
[0171]ここで説明されるコーディング技法は、例となるビデオ符号化および復号システム（例えば、システム１００）においてインプリメントされ得る。いくつかの例では、システムが、宛先デバイスによって後の時間に復号されることになる符号化されたビデオデータを提供するソースデバイスを含む。特に、ソースデバイスは、コンピュータ可読媒体を介して、宛先デバイスにビデオデータを提供する。ソースデバイスおよび宛先デバイスは、デスクトップコンピュータ、ノートブック（すなわち、ラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス、または同様のものを含む、幅広い範囲のデバイスのうちの任意のものを備え得る。いくつかのケースでは、ソースデバイスおよび宛先デバイスは、ワイヤレス通信のために装備され得る。
【０１６１】
[0172]宛先デバイスは、コンピュータ可読媒体を介して、復号されることになる符号化されたビデオデータを受信し得る。コンピュータ可読媒体は、ソースデバイスから宛先デバイスに、符号化されたビデオデータを移動させることが可能な任意のタイプの媒体またはデバイスを備え得る。一例では、コンピュータ可読媒体は、ソースデバイスがリアルタイムで宛先デバイスに、符号化されたビデオデータを直接送信することを可能にする通信媒体を備え得る。符号化されたビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイスに送信され得る。通信媒体は、無線周波数（ＲＦ）スペクトルまたは１つまたは複数の物理伝送線などの、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットのようなグローバルネットワークなどの、パケットベースのネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイスから宛先デバイスへの通信を容易にするのに有用であり得るその他任意の機器を含み得る。
【０１６２】
[0173]いくつかの例では、符号化されたデータは、出力インターフェースから記憶デバイスに出力され得る。同様に、符号化されたデータは、入力インターフェースによって、記憶デバイスからアクセスされ得る。記憶デバイスは、ハードドライブ、ブルーレイディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュメモリ、揮発性または不揮発性メモリ、または符号化されたビデオデータを記憶するためのその他任意の好適なデジタル記憶媒体などの、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のうちの任意のものを含み得る。さらなる例では、記憶デバイスは、ファイルサーバ、またはソースデバイスによって生成される符号化されたビデオを記憶し得る別の中間記憶デバイスに対応し得る。宛先デバイスは、ストリーミングまたはダウンロードを介して、記憶デバイスからの記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶し、宛先デバイスにその符号化されたビデオデータを送信することが可能な任意のタイプのサーバであり得る。例となるファイルサーバは、（例えば、ウェブサイト用の）ウェブサーバ、ＦＴＰサーバ、ネットワーク接続記憶（ＮＡＳ）デバイス、またはローカルディスクドライブを含む。宛先デバイスは、インターネット接続を含む、任意の標準的なデータ接続を通じて、符号化されたビデオデータにアクセスし得る。これは、ワイヤレスチャネル（例えば、Ｗｉ−Ｆｉ接続）、ワイヤード接続（例えば、ＤＳＬ、ケーブルモデム、等）、またはファイルサーバ上に記憶された符号化されたビデオデータにアクセスするのに好適な両方の組合せを含み得る。記憶デバイスからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはこれらの組合せであり得る。
【０１６３】
[0174]本開示の技法は、必ずしもワイヤレスアプリケーションまたは設定に限定されるとは限らない。本技法は、無線テレビ放送、ケーブルテレビ送信、衛星テレビ送信、ＨＴＴＰを介した動的適応型ストリーミング（ＤＡＳＨ）のようなインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されるデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他のアプリケーションなどの、様々なマルチメディアアプリケーションのうちの任意のものをサポートするビデオコーディングに適用され得る。いくつかの例では、システムは、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および／またはビデオ電話通信などのアプリケーションをサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
【０１６４】
[0175]一例では、ソースデバイスは、ビデオソース、ビデオエンコーダ、および出力インターフェースを含む。宛先デバイスは、入力インターフェース、ビデオデコーダ、およびディスプレイデバイスを含み得る。ソースデバイスのビデオエンコーダは、ここで開示される技法を適用するように構成され得る。他の例では、ソースデバイスおよび宛先デバイスは、他の構成要素または配置を含み得る。例えば、ソースデバイスは、外部カメラのような外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイスは、一体化されたディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
【０１６５】
[0176]上記の例となるシステムは、単なる一例に過ぎない。並列にビデオデータを処理するための技法は、任意のデジタルビデオ符号化および／または復号デバイスによって実行され得る。概して、本開示の技法は、ビデオ符号化デバイスによって実行されるが、本技法はまた、典型的に「ＣＯＤＥＣ」と呼ばれるビデオエンコーダ／デコーダによっても実行され得る。さらに、本開示の技法はまた、ビデオプリプロセッサによって実行され得る。ソースデバイスおよび宛先デバイスは、ソースデバイスが宛先デバイスへの送信のためにコーディングされたビデオデータを生成するそのようなコーディングデバイスの例に過ぎない。いくつかの例では、ソースおよび宛先デバイスは、デバイスの各々がビデオ符号化および復号構成要素を含むような実質的に対称的な方法で動作し得る。したがって、例となるシステムは、例えば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオ電話通信のために、ビデオデバイス間の一方向または双方向のビデオ送信をサポートし得る。
【０１６６】
[0177]ビデオソースは、ビデオカメラのようなビデオキャプチャデバイス、以前にキャプチャされたビデオを含むビデオアーカイブ、および／またはビデオコンテンツプロバイダからのビデオを受信するためのビデオフィードインターフェースを含み得る。さらなる代替として、ビデオソースは、ソースビデオとしてコンピュータグラフィックスベースのデータ、またはコンピュータにより生成されたビデオ、アーカイブされたビデオ、およびライブビデオの組合せを生成し得る。いくつかのケースでは、ビデオソースがビデオカメラである場合、ソースデバイスおよび宛先デバイスは、いわゆるカメラフォンまたはビデオフォンを形成し得る。しかしながら、上述されたように、本開示で説明される技法は、ビデオコーディング全般に適用可能であり得、ワイヤレスおよび／またはワイヤードアプリケーションに適用され得る。各ケースでは、キャプチャされた、予めキャプチャされた、またはコンピュータにより生成されたビデオは、ビデオエンコーダによって符号化され得る。その後、符号化されたビデオ情報は、コンピュータ可読媒体上に出力インターフェースによって出力され得る。
【０１６７】
[0178]述べられたように、コンピュータ可読媒体は、ワイヤレスブロードキャストまたはワイヤードネットワーク送信のなどの一時的な媒体、またはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、ブルーレイディスク、または他のコンピュータ可読媒体などの記憶媒体（すなわち、非一時的な記憶媒体）を含み得る。いくつかの例では、ネットワークサーバ（図示せず）は、例えば、ネットワーク送信を介して、宛先デバイスに符号化されたビデオデータを提供し、ソースデバイスから符号化されたビデオデータを受信し得る。同様に、ディスクスタンピング設備のような媒体製造設備のコンピューティングデバイスは、ソースデバイスから符号化されたビデオデータを受信し、符号化されたビデオデータを含むディスクを製造し得る。したがって、コンピュータ可読媒体は、様々な例において、様々な形態の１つまたは複数のコンピュータ可読媒体を含むことが理解され得る。
【０１６８】
[0179]宛先デバイスの入力インターフェースは、コンピュータ可読媒体から情報を受信する。コンピュータ可読媒体の情報は、ブロックおよび他のコーディングされたユニット、例えば、ピクチャのグループ（ＧＯＰ：group of pictures）の処理および／または特性を記述するシンタックス要素を含む、ビデオエンコーダによって定義されるシンタックス情報を含み得、これはまた、ビデオデコーダによって使用される。ディスプレイデバイスは、復号されたビデオデータをユーザに表示し得、ブラウン管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイデバイスなどの、様々なディスプレイデバイスのうちの任意のものを備え得る。本発明の様々な実施形態が、説明されてきた。
【０１６９】
[0180]符号化デバイス１０４および復号デバイス１１２の特定の詳細が、それぞれ図９および図１０に示される。図９は、本開示で説明される技法のうちの１つまたは複数をインプリメントし得る、例となる符号化デバイス１０４を例示するブロック図である。符号化デバイス１０４は、例えば、ここで説明されたシンタックス構造（例えば、ＶＰＳ、ＳＰＳ、ＰＰＳ、または他のシンタックス要素のシンタックス構造）を生成し得る。符号化デバイス１０４は、ビデオスライス内のビデオブロックのイントラ予測およびインター予測コーディングを実行し得る。前述されたように、イントラコーディングは、所与のビデオフレームまたはピクチャ内の空間的冗長性を低減または取り除くために、空間的予測に少なくとも部分的に依拠する。インターコーディングは、ビデオシーケンスの隣り合うまたは周囲のフレーム内の時間的冗長性を低減または取り除くために、時間的予測に少なくとも部分的に依拠する。イントラモード（Ｉモード）は、いくつかの空間ベースの圧縮モードのうちの任意のものを指し得る。片方向予測（Ｐモード）または双予測（Ｂモード）などのインターモードは、いくつかの時間ベースの圧縮モードのうちの任意のものを指し得る。
【０１７０】
[0181]符号化デバイス１０４は、区分化ユニット３５、予測処理ユニット４１、フィルタユニット６３、ピクチャメモリ６４、加算器５０、変換処理ユニット５２、量子化ユニット５４、およびエントロピー符号化ユニット５６を含む。予測処理ユニット４１は、動き推定ユニット４２、動き補償ユニット４４、およびイントラ予測処理ユニット４６を含む。ビデオブロック再構成のために、符号化デバイス１０４はまた、逆量子化ユニット５８、逆変換処理ユニット６０、および加算器６２を含む。フィルタユニット６３は、デブロッキングフィルタ、適応ループフィルタ（ＡＬＦ）、およびサンプル適応オフセット（ＳＡＯ）フィルタなどの１つまたは複数のループフィルタを表すように意図される。フィルタユニット６３は、インループフィルタとして図９に示されているが、他の構成では、フィルタユニット６３は、ポストループフィルタとしてインプリメントされ得る。後処理デバイス５７が、符号化デバイス１０４によって生成される符号化されたビデオデータに対して追加の処理を実行し得る。本開示の技法は、いくつかの事例では、符号化デバイス１０４によってインプリメントされ得る。しかしながら、他の事例では、本開示の技法のうちの１つまたは複数は、後処理デバイス５７によってインプリメントされ得る。
【０１７１】
[0182]図９に示されているように、符号化デバイス１０４は、ビデオデータを受信し、区分化ユニット３５は、データをビデオブロックに区分化する。区分化はまた、スライス、スライスセグメント、タイル、または他のより大きいユニットへの区分化のみならず、例えば、ＣＵおよびＬＣＵの４分木構造による、ビデオブロック区分化を含み得る。符号化デバイス１０４は、概して、符号化されるべきビデオスライス内のビデオブロックを符号化する構成要素を例示する。スライスは、複数のビデオブロックに（および、場合によっては、タイルと呼ばれるビデオブロックのセットに）分割され得る。予測処理ユニット４１は、エラー結果（例えば、コーディングレートおよび歪みのレベル、または同様のもの）に基づいて、現在のビデオブロックのために、複数のイントラ予測コーディングモードのうちの１つまたは複数のインター予測コーディングモードのうちの１つなど、複数の可能なコーディングモードのうちの１つを選択し得る。予測処理ユニット４１は、残差ブロックデータを生成するために加算器５０に、および参照ピクチャとして使用するための符号化されたブロックを再構成するために加算器６２に、結果として得られるイントラまたはインターコーディングされたブロックを提供し得る。
【０１７２】
[0183]予測処理ユニット４１内のイントラ予測処理ユニット４６は、空間的圧縮を提供するために、コーディングされるべき現在のブロックと同じフレームまたはスライス中の１つまたは複数の隣接ブロックに関連して（relative to）、現在のビデオブロックのイントラ予測コーディングを実行し得る。予測処理ユニット４１内の動き推定ユニット４２および動き補償ユニット４４は、時間的圧縮を提供するために、１つまたは複数の参照ピクチャ中の１つまたは複数の予測ブロックに関連して（relative to）、現在のビデオブロックのインター予測コーディングを実行する。
【０１７３】
[0184]動き推定ユニット４２は、ビデオシーケンスのための所定のパターンに従って、ビデオスライスのためのインター予測モードを決定するように構成され得る。所定のパターンは、Ｐスライス、Ｂスライス、またはＧＰＢスライスとして、シーケンス中のビデオスライスを指定し得る。動き推定ユニット４２および動き補償ユニット４４は、高度に一体化され得るが、概念的な目的のために別個に例示されている。動き推定ユニット４２によって実行される動き推定は、動きベクトルを生成するプロセスであり、これは、ビデオブロックに関する動きを推定する。動きベクトルは、例えば、参照ピクチャ内の予測ブロックに対する現在のビデオフレームまたはピクチャ内のビデオブロックの予測ユニット（ＰＵ）の変位を示し得る。
【０１７４】
[0185]予測ブロックは、絶対差分和（ＳＡＤ：sum of absolute difference）、２乗差分和（ＳＳＤ：sum of square difference）、または他の差分メトリックによって決定され得るピクセル差分の観点から、コーディングされるべきビデオブロックのＰＵと密接に一致することが見出されたブロックである。いくつかの例では、符号化デバイス１０４は、ピクチャメモリ６４に記憶された参照ピクチャのサブ整数ピクセル位置についての値を計算し得る。例えば、符号化デバイス１０４は、参照ピクチャの４分の１ピクセル位置、８分の１ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット４２は、フルピクセル位置および分数ピクセル位置に対して動き探索を実行し、分数ピクセル精度で動きベクトルを出力し得る。
【０１７５】
[0186]動き推定ユニット４２は、ＰＵの位置と、参照ピクチャの予測ブロックの位置とを比較することによって、インターコーディングされたスライス中のビデオブロックのＰＵのための動きベクトルを計算する。参照ピクチャは、その各々がピクチャメモリ６４に記憶された１つまたは複数の参照ピクチャを識別する、第１の参照ピクチャリスト（リスト０）または第２の参照ピクチャリスト（リスト１）から選択され得る。動き推定ユニット４２は、計算された動きベクトルを、エントロピー符号化ユニット５６および動き補償ユニット４４に送る。
【０１７６】
[0187]動き補償ユニット４４によって実行される動き補償は、動き推定によって決定される動きベクトルに基づいて、予測ブロックをフェッチまたは生成することを伴い得、場合によっては、サブピクセル精度までの（to sub-pixel precision）補間を実行する。現在のビデオブロックのＰＵのための動きベクトルを受信すると、動き補償ユニット４４は、参照ピクチャリストにおいて動きベクトルがそれを指し示す予測ブロックを位置特定し得る。符号化デバイス１０４は、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。ピクセル差分値は、ブロックについての残差データを形成し、ルーマおよびクロマ差分成分の両方を含み得る。加算器５０は、この減算演算を実行する１つまたは複数の構成要素を表す。動き補償ユニット４４はまた、ビデオスライスのビデオブロックを復号する際に、復号デバイス１１２によって使用するための、ビデオブロックとビデオスライスとに関連付けられたシンタックス要素を生成し得る。
【０１７７】
[0188]イントラ予測処理ユニット４６は、上記で説明されたように、動き推定ユニット４２および動き補償ユニット４４によって実行されるインター予測の代替として、現在のブロックをイントラ予測し得る。具体的には、イントラ予測処理ユニット４６は、現在のブロックを符号化するために使用すべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測処理ユニット４６は、例えば、別個の符号化パス中に、様々なイントラ予測モードを使用して現在のブロックを符号化し得、イントラ予測処理ユニット４６は、テストされたモードから使用すべき適切なイントラ予測モードを選択し得る。例えば、イントラ予測処理ユニット４６は、様々なテストされたイントラ予測モードに関する（for）レート−歪み分析を使用してレート−歪み値を計算し得、テストされたモードの中で最良のレート−歪み特性を有するイントラ予測モードを選択し得る。レート−歪み分析は、一般に、符号化されたブロックと、符号化されたブロックを作成するために符号化された元の符号化されていないブロックとの間の歪み（またはエラー）の量、ならびに、符号化されたブロックを作成するために使用されるビットレート（すなわち、ビット数）を決定する。イントラ予測処理ユニット４６は、どのイントラ予測モードがブロックのための最良のレート−歪み値を示すかを決定するために、様々な符号化されたブロックに関するレートおよび歪みから比率（ratio）を計算し得る。
【０１７８】
[0189]いずれのケースでも、ブロックのためのイントラ予測モードを選択した後、イントラ予測処理ユニット４６は、エントロピー符号化ユニット５６にブロックのための選択されたイントラ予測モードを示す情報を提供し得る。エントロピー符号化ユニット５６は、選択されたイントラ予測モードを示す情報を符号化し得る。符号化デバイス１０４は、様々なブロックのための符号化コンテキストの定義のみならず、最確イントラ予測モード（most probable intra-prediction mode）のインジケーション、イントラ予測モードインデックステーブル、およびコンテキストの各々に対して使用すべき修正されたイントラ予測モードインデックステーブルを、送信されたビットストリーム構成データ中に含め得る。ビットストリーム構成データは、複数のイントラ予測モードインデックステーブルと、複数の修正されたイントラ予測モードインデックステーブル（コードワードマッピングテーブルとも呼ばれる）とを含み得る。
【０１７９】
[0190]予測処理ユニット４１が、インター予測またはイントラ予測のいずれかを介して、現在のビデオブロックのための予測ブロックを生成した後、符号化デバイス１０４は、現在のビデオブロックから予測ブロックを減算することによって、残差ビデオブロックを形成する。残差ブロックにおける残差ビデオデータは、１つまたは複数のＴＵに含まれ、変換処理ユニット５２に適用され得る。変換処理ユニット５２は、離散コサイン変換（ＤＣＴ）または概念的に同様の変換などの変換を使用して、残差変換係数に残差ビデオデータを変換する。変換処理ユニット５２は、残差ビデオデータを、ピクセル領域から周波数領域などの変換領域に変換し得る。
【０１８０】
[0191]変換処理ユニット５２は、結果として得られた変換係数を量子化ユニット５４に送り得る。量子化ユニット５４は、ビットレートをさらに低減させるために、変換係数を量子化する。量子化プロセスは、係数の一部または全てに関連付けられたビット深度を低減させ得る。量子化の程度は、量子化パラメータを調整することによって修正され得る。いくつかの例では、量子化ユニット５４は、その後、量子化された変換係数を含む行列の走査を実行し得る。代替として、エントロピー符号化ユニット５６が走査を実行し得る。
【０１８１】
[0192]量子化に続いて、エントロピー符号化ユニット５６は、量子化された変換係数をエントロピー符号化する。例えば、エントロピー符号化ユニット５６は、コンテキスト適応可変長コーディング（ＣＡＶＬＣ）、コンテキスト適応バイナリ算術コーディング（ＣＡＢＡＣ）、シンタックスベースのコンテキスト適応バイナリ算術コーディング（ＳＢＡＣ）、確率間隔区分化エントロピー（ＰＩＰＥ）コーディング、または別のエントロピー符号化技法を実行し得る。エントロピー符号化ユニット５６によるエントロピー符号化に続いて、符号化されたビットストリームは、復号デバイス１１２に送信されるか、または復号デバイス１１２による後の送信または取り出しのためにアーカイブされ得る。エントロピー符号化ユニット５６はまた、コーディングされている現在のビデオスライスのための動きベクトルおよび他のシンタックス要素をエントロピー符号化し得る。
【０１８２】
[0193]逆量子化ユニット５８および逆変換処理ユニット６０は、参照ピクチャの参照ブロックとして後に使用するためのピクセル領域における残差ブロックを再構成するために、それぞれ逆量子化および逆変換を適用する。動き補償ユニット４４は、参照ピクチャリスト内の参照ピクチャのうちの１つの予測ブロックに残差ブロックを加算することによって、参照ブロックを計算し得る。動き補償ユニット４４はまた、動き推定の際に使用するためのサブ整数ピクセル値を計算するために、再構成された残差ブロックに１つまたは複数の補間フィルタを適用し得る。加算器６２は、ピクチャメモリ６４中での記憶のための参照ブロックを作成するために、動き補償ユニット４４によって作成された動き補償された予測ブロックに、再構成された残差ブロックを加算する。参照ブロックは、後続のビデオフレームまたはピクチャ中のブロックをインター予測するための参照ブロックとして、動き推定ユニット４２および動き補償ユニット４４によって使用され得る。
【０１８３】
[0194]このようにして、図９の符号化デバイス１０４は、符号化されたビデオビットストリームについてのシンタックスを生成するように構成されたビデオエンコーダの例を表す。符号化デバイス１０４は、例えば、上記で説明されたように、ＶＰＳ、ＳＰＳ、およびＰＰＳパラメータセットを生成し得る。符号化デバイス１０４は、上記で説明されたプロセスを含む、ここで説明された技法のうちの任意のものを実行し得る。本開示の技法は、概して、符号化デバイス１０４に関して説明されてきたが、上述されたように、本開示の技法のうちのいくつかはまた、後処理デバイス５７によってインプリメントされ得る。
【０１８４】
[0195]図１０は、例となる復号デバイス１１２を例示するブロック図である。復号デバイス１１２は、エントロピー復号ユニット８０、予測処理ユニット８１、逆量子化ユニット８６、逆変換処理ユニット８８、加算器９０、フィルタユニット９１、およびピクチャメモリ９２を含む。予測処理ユニット８１は、動き補償ユニット８２およびイントラ予測処理ユニット８４を含む。復号デバイス１１２は、いくつかの例では、図１０からの符号化デバイス１０４に関して説明された符号化パスとは概して逆の復号パスを実行し得る。
【０１８５】
[0196]復号プロセス中、復号デバイス１１２は、符号化デバイス１０４によって送られた符号化されたビデオスライスのビデオブロックと、関連するシンタックス要素とを表す符号化されたビデオビットストリームを受信する。いくつかの実施形態では、復号デバイス１１２は、符号化デバイス１０４から符号化されたビデオビットストリームを受信し得る。いくつかの実施形態では、復号デバイス１１２は、サーバ、媒体認識ネットワーク要素（ＭＡＮＥ）、ビデオエディタ／スプライサ、または上記で説明された技法のうちの１つまたは複数をインプリメントするように構成された他のそのようなデバイスなどの、ネットワークエンティティ７９から符号化されたビデオビットストリームを受信し得る。ネットワークエンティティ７９は、符号化デバイス１０４を含むことも含まないこともあり得る。本開示で説明された技法のうちのいくつかは、ネットワークエンティティ７９が、符号化されたビデオビットストリームを復号デバイス１１２に送信する前に、ネットワークエンティティ７９によってインプリメントされ得る。いくつかのビデオ復号システムでは、ネットワークエンティティ７９および復号デバイス１１２は、別個のデバイスの一部であり得、一方、他の事例では、ネットワークエンティティ７９に関して説明される機能は、復号デバイス１１２を備える同じデバイスによって実行され得る。
【０１８６】
[0197]復号デバイス１１２のエントロピー復号ユニット８０は、量子化された係数、動きベクトル、および他のシンタックス要素を生成するために、ビットストリームをエントロピー復号する。エントロピー復号ユニット８０は、予測処理ユニット８１に動きベクトルおよび他のシンタックス要素を転送する。復号デバイス１１２は、ビデオスライスレベルおよび／またはビデオブロックレベルでシンタックス要素を受信し得る。エントロピー復号ユニット８０は、ＶＰＳ、ＳＰＳ、およびＰＰＳなどの、または複数のパラメータセット中の固定長シンタックス要素と可変長シンタックス要素との両方を処理およびパースし得る。
【０１８７】
[0198]ビデオスライスがイントラコーディングされた（Ｉ）スライスとしてコーディングされるとき、予測処理ユニット８１のイントラ予測処理ユニット８４は、シグナリングされたイントラ予測モードと、現在のフレームまたはピクチャの以前に復号されたブロックからのデータとに基づいて、現在のビデオスライスのビデオブロックについての予測データを生成し得る。ビデオフレームがインターコーディングされた（すなわち、Ｂ、ＰまたはＧＰＢ）スライスとしてコーディングされるとき、予測処理ユニット８１の動き補償ユニット８２は、エントロピー復号ユニット８０から受信された動きベクトルと他のシンタックス要素とに基づいて、現在のビデオスライスのビデオブロックについての予測ブロックを作成する。予測ブロックは、参照ピクチャリスト内の参照ピクチャのうちの１つから作成され得る。復号デバイス１１２は、ピクチャメモリ９２に記憶された参照ピクチャに基づいて、デフォルトの構成技法を使用して、参照フレームリスト、すなわち、リスト０およびリスト１を構成し得る。
【０１８８】
[0199]動き補償ユニット８２は、動きベクトルと他のシンタックス要素とをパースすることによって、現在のビデオスライスのビデオブロックについての予測情報を決定し、復号されている現在のビデオブロックについての予測ブロックを作成するために予測情報を使用する。例えば、動き補償ユニット８２は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード（例えば、イントラまたはインター予測）と、インター予測スライスタイプ（例えば、Ｂスライス、Ｐスライス、またはＧＰＢスライス）と、スライスのための１つまたは複数の参照ピクチャリストのための構成情報と、スライスの各インター符号化されたビデオブロックのための動きベクトルと、スライスの各インターコーディングされたビデオブロックのためのインター予測ステータスと、現在のビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、パラメータセット中の１つまたは複数のシンタックス要素を使用し得る。
【０１８９】
[0200]動き補償ユニット８２はまた、補間フィルタに基づいて補間を実行し得る。動き補償ユニット８２は、参照ブロックのサブ整数ピクセルについての補間された値を計算するために、ビデオブロックの符号化中に符号化デバイス１０４によって使用されたような補間フィルタを使用し得る。このケースでは、動き補償ユニット８２は、受信されたシンタックス要素から、符号化デバイス１０４によって使用された補間フィルタを決定し得、予測ブロックを作成するために、補間フィルタを使用し得る。
【０１９０】
[0201]逆量子化ユニット８６は、ビットストリーム中で提供され、かつエントロピー復号ユニット８０によって復号された、量子化された変換係数を逆量子化、すなわち量子化解除する。逆量子化プロセスは、量子化の程度、および同様に、適用されるべき逆量子化の程度を決定するために、ビデオスライス中の各ビデオブロックについて、符号化デバイス１０４によって計算された量子化パラメータの使用を含み得る。逆変換処理ユニット８８は、ピクセル領域における残差ブロックを作成するために、変換係数に、逆変換（例えば、逆ＤＣＴまたは他の好適な逆変換）、逆整数変換、または概念的に同様の逆変換プロセスを適用する。
【０１９１】
[0202]動き補償ユニット８２が、動きベクトルと他のシンタックス要素とに基づいて、現在のビデオブロックのための予測ブロックを生成した後、復号デバイス１１２は、逆変換処理ユニット８８からの残差ブロックを、動き補償ユニット８２によって生成された対応する予測ブロックと加算することによって、復号されたビデオブロックを形成する。加算器９０は、この加算演算を実行する１つまたは複数の構成要素を表す。所望される場合、ループフィルタ（コーディングループ中またはコーディングループ後のいずれか）もまた、ピクセル遷移を平滑化するか、または別の方法でビデオ品質を改善するために使用され得る。フィルタユニット９１は、デブロッキングフィルタ、適応ループフィルタ（ＡＬＦ）、およびサンプル適応オフセット（ＳＡＯ）フィルタなどの１つまたは複数のループフィルタを表すように意図される。フィルタユニット９１は、インループフィルタとして図１０に示されているが、他の構成では、フィルタユニット９１は、ポストループフィルタとしてインプリメントされ得る。その後、所与のフレームまたはピクチャ中の復号されたビデオブロックは、後続の動き補償のために使用される参照ピクチャを記憶するピクチャメモリ９２に記憶される。ピクチャメモリ９２はまた、図１に示されるビデオ宛先デバイス１２２のようなディスプレイデバイス上での後の提示のために、復号されたビデオを記憶する。
【０１９２】
[0203]前述の説明では、本願の態様は、その特定の実施形態を参照して説明されたが、当業者であれば、本発明はそれに限定されないことを認識するであろう。したがって、本願の例示的な実施形態が、ここで詳細に説明されてきた一方で、発明の概念は、他の方法で様々に具現化および用いられ得、添付の特許請求の範囲は、先行技術によって限定される場合を除き、そのような変形例を含むように解釈されるものと意図されていることが理解されるべきである。上記で説明された発明の様々な特徴および態様は、個々にまたは一緒に使用され得る。さらに、実施形態は、本明細書のより広い趣旨および範囲から逸脱することなく、ここで説明されたものを超えた任意の数の環境およびアプリケーションにおいて利用され得る。したがって、本明細書および図面は、限定的ではなく、例示的であると見なされるべきである。例示を目的として、方法は、特定の順序で説明された。代替の実施形態では、方法は、説明されたものとは異なる順序で実行され得ることが理解されるべきである。
【０１９３】
[0204]構成要素が、ある特定の動作を実行する「ように構成される」ものとして説明されている場合、このような構成は、例えば、動作を実行するように電子回路または他のハードウェアを設計することによって、動作を実行するようにプログラム可能な電子回路（例えば、マイクロプロセッサ、または他の好適な電子回路）をプログラミングすることによって、またはこれらの任意の組合せで、達成され得る。
【０１９４】
[0205]ここで開示された実施形態に関連して説明された様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、ファームウェア、またはこれらの組合せとしてインプリメントされ得る。ハードウェアおよびソフトウェアのこの互換性を明確に例示するために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップが、概してそれらの機能の観点から上記で説明されてきた。このような機能が、ハードウェアとしてインプリメントされるか、あるいはソフトウェアとしてインプリメントされるかは、特定のアプリケーションおよびシステム全体に課せられる設計制約に依存する。当業者は、特定のアプリケーションごとに多様な方法において、説明された機能をインプリメントし得るが、このようなインプリメンテーションの決定は、本発明の範囲から逸脱を引き起こしていると解釈されるべきでない。
【０１９５】
[0206]ここで説明された技法はまた、電子ハードウェア、コンピュータソフトウェア、ファームウェア、またはこれらの任意の組合せでインプリメントされ得る。このような技法は、汎用コンピュータ、ワイヤレス通信デバイスハンドセット、またはワイヤレス通信デバイスハンドセットおよび他のデバイスにおけるアプリケーションを含む複数の用途を有する集積回路デバイスなどの様々なデバイスのうちの任意のものでインプリメントされ得る。モジュールまたは構成要素として説明された任意の特徴は、集積論理デバイスにおいて共に、またはディスクリートではあるが相互動作可能な論理デバイスとして別々にインプリメントされ得る。ソフトウェアでインプリメントされる場合、本技法は、少なくとも部分的に、命令を含むプログラムコードを備えるコンピュータ可読データ記憶媒体によって実現され得、これら命令は、実行されると、上記で説明された方法のうちの１つまたは複数を実行する。コンピュータ可読データ記憶媒体は、コンピュータプログラム製品の一部を形成し得、それは、パッケージング材料を含み得る。コンピュータ可読媒体は、同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）のようなランダムアクセスメモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、不揮発ランダムアクセスメモリ（ＮＶＲＡＭ）、電気的に消去可能なプログラマブル読取専用メモリ（ＥＥＰＲＯＭ（登録商標））、ＦＬＡＳＨメモリ、磁気または光データ記憶媒体、および同様のものなどの、メモリまたはデータ記憶媒体を備え得る。本技法は、追加または代替として、少なくとも部分的に、伝搬された信号または波などの、コンピュータによってアクセス、読取、および／または実行されることができ、かつ、データ構造または命令の形式でプログラムコードを搬送または通信する、コンピュータ可読通信媒体によって実現され得る。
【０１９６】
[0207]プログラムコードは、プロセッサによって実行され得、それは、１つまたは複数のデジタルシグナルプロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルロジックアレイ（ＦＰＧＡ）、または他の同等の集積されたまたはディスクリートなロジック回路などの、１つまたは複数のプロセッサを含み得る。このようなプロセッサは、本開示において説明された技法のうちの任意のものを実行するように構成され得る。汎用プロセッサは、マイクロプロセッサであり得るが、代替として、このプロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシン（state machine）であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、例えば、ＤＳＰとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、ＤＳＰコアと連携した１つまたは複数のマイクロプロセッサ、あるいはその他任意のこのような構成としてインプリメントされ得る。したがって、ここで使用される場合、「プロセッサ」という用語は、前述の構造の任意のもの、前述の構造の任意の組合せ、またはここで説明された技法のインプリメンテーションに好適なその他任意の構造または装置を指し得る。加えて、いくつかの態様では、ここで説明された機能は、符号化および復号のために構成された専用のソフトウェアモジュールまたはハードウェアモジュール内に提供され得、または、複合ビデオエンコーダ−デコーダ（ＣＯＤＥＣ）に組み込まれ得る。
【図１】
2019535198.tif 000008
【図２】
2019535198.tif 000009
【図３】
2019535198.tif 000010
【図４】
2019535198.tif 000011
【図５】
2019535198.tif 000012
【図６】
2019535198.tif 000013
【図７】
2019535198.tif 000014
【図８】
2019535198.tif 000015
【図９】
2019535198.tif 000016
【図１０】
2019535198.tif 000017
【国際調査報告】
2019535198.tif 000018
2019535198.tif 000019
2019535198.tif 000020
2019535198.tif 000021
2019535198.tif 000022