(57)【要約】  ビデオデータを復号する方法であって、受信された符号化されたビデオデータからサブ予測ユニット動きフラグをパースすることと、サブ予測ユニット動きフラグがアクティブである場合、サブ予測ユニットレベル動き予測候補のリストを導出することと、サブ予測ユニット動きフラグがアクティブでない場合、予測ユニットレベル動き予測候補のリストを導出することと、選択された動きベクトル予測子を使用して、符号化されたビデオデータを復号することとを備える、方法。【選択図】図１２
2021527999.tif 000002
【特許請求の範囲】
【請求項１】
ビデオデータを復号する方法であって、
符号化されたビデオデータを受信することと、
前記符号化されたビデオデータからサブ予測ユニット動きフラグをパースすることと、
前記サブ予測ユニット動きフラグがアクティブであると決定したことに応答して、サブ予測ユニットレベル動き予測候補のリストを導出することと、
前記サブ予測ユニット動きフラグがアクティブでないと決定したことに応答して、予測ユニットレベル動き予測候補のリストを導出することと、
サブ予測ユニットレベル動き予測候補の前記リストまたは予測ユニットレベル動き予測候補の前記リストのいずれかから動きベクトル予測子を選択することと、
前記選択された動きベクトル予測子を使用して、前記符号化されたビデオデータを復号することと、
を備える、方法。
【請求項２】
前記符号化されたビデオデータは、現在ブロックを含み、サブ予測ユニットレベル動き予測候補の前記リストおよび予測ユニットレベル動き予測候補の前記リストは、前記現在ブロックの隣接ブロックから導出される、請求項１に記載の方法。
【請求項３】
前記隣接ブロックは、現在ピクチャ中の前記現在ブロックの空間隣接物、または前にコーディングされたピクチャ中の前記現在ブロックの時間隣接物である、請求項２に記載の方法。
【請求項４】
サブ予測ユニットレベル動き予測候補の前記リストまたは予測ユニットレベル動き予測候補の前記リストは、前記隣接ブロックにおける動き予測発生に基づいて少なくとも部分的に順序付けられる、請求項２に記載の方法。
【請求項５】
予測ユニット中のピクセルは、第１の動きベクトル情報を共有し、サブ予測ユニット中のピクセルは、第２の動きベクトル情報を共有し、前記第１の動きベクトル情報または前記第２のベクトル情報は、前記選択された動きベクトル予測子から決定される、請求項１に記載の方法。
【請求項６】
前記予測ユニットレベル動きベクトル候補リストは、空間隣接候補および時間隣接候補のうちの少なくとも１つを含む、請求項１に記載の方法。
【請求項７】
サブ予測ユニットレベル動き予測候補の前記リストは、アフィン動きベクトル予測、代替時間動きベクトル予測（ＡＴＭＶＰ）、空間時間動きベクトル予測（ＳＴＭＶＰ）、平面動きベクトル予測、およびパターンマッチ動きベクトル導出（ＰＭＶＤ）のうちの少なくとも１つを含む、請求項１に記載の方法。
【請求項８】
前記サブ予測ユニット動きフラグがアクティブであると決定したことに応答して、マージング候補インデックスを導出することをさらに備え、ここにおいて、前記マージング候補インデックスは、選択されるべき前記動きベクトル予測子を指定する、
請求項１に記載の方法。
【請求項９】
ビデオデータを復号するための装置であって、
受信された符号化されたビデオデータを記憶するためのメモリと、
プロセッサと、
を備え、前記プロセッサは、
前記符号化されたビデオデータからサブ予測ユニット動きフラグをパースすることと、
前記サブ予測ユニット動きフラグがアクティブであると決定したことに応答して、サブ予測ユニットレベル動き予測候補のリストを導出することと、
前記サブ予測ユニット動きフラグがアクティブでないと決定したことに応答して、予測ユニットレベル動き予測候補のリストを導出することと、
サブ予測ユニットレベル動き予測候補の前記リストまたは予測ユニットレベル動き予測候補の前記リストのいずれかから動きベクトル予測子を選択することと、
前記選択された動きベクトル予測子を使用して、前記符号化されたビデオデータを復号することと、
を行うように構成されている、装置。
【請求項１０】
前記符号化されたビデオデータは、現在ブロックを含み、サブ予測ユニットレベル動き予測候補の前記リストおよび予測ユニットレベル動き予測候補の前記リストは、前記現在ブロックの隣接ブロックから導出される、請求項９に記載の装置。
【請求項１１】
前記隣接ブロックは、現在ピクチャ中の前記現在ブロックの空間隣接物、または前にコーディングされたピクチャ中の前記現在ブロックの時間隣接物である、請求項１０に記載の装置。
【請求項１２】
サブ予測ユニットレベル動き予測候補の前記リストまたは予測ユニットレベル動き予測候補の前記リストは、前記隣接ブロックにおける動き予測発生に基づいて少なくとも部分的に順序付けられる、請求項１０に記載の装置。
【請求項１３】
予測ユニット中のピクセルは、第１の動きベクトル情報を共有し、サブ予測ユニット中のピクセルは、第２の動きベクトル情報を共有し、前記第１の動きベクトル情報または前記第２のベクトル情報は、前記選択された動きベクトル予測子から決定される、請求項９に記載の装置。
【請求項１４】
前記予測ユニットレベル動きベクトル候補リストは、空間隣接候補および時間隣接候補のうちの少なくとも１つを含む、請求項９に記載の装置。
【請求項１５】
サブ予測ユニットレベル動き予測候補の前記リストは、アフィン動きベクトル予測、代替時間動きベクトル予測（ＡＴＭＶＰ）、空間時間動きベクトル予測（ＳＴＭＶＰ）、平面動きベクトル予測、およびパターンマッチ動きベクトル導出（ＰＭＶＤ）のうちの少なくとも１つを含む、請求項９に記載の装置。
【請求項１６】
前記プロセッサは、
前記サブ予測ユニット動きフラグがアクティブであると決定したことに応答して、マージング候補インデックスを導出するようにさらに構成され、ここにおいて、前記マージング候補インデックスは、選択されるべき前記動きベクトル予測子を指定する、
請求項９に記載の装置。
【請求項１７】
ビデオデータを復号するための装置であって、
受信された符号化されたビデオデータを記憶するためのメモリ手段と、
プロセッサ手段と、
を備え、前記プロセッサ手段は、
前記符号化されたビデオデータからサブ予測ユニット動きフラグをパースすることと、
前記サブ予測ユニット動きフラグがアクティブであると決定したことに応答して、サブ予測ユニットレベル動き予測候補のリストを導出することと、
前記サブ予測ユニット動きフラグがアクティブでないと決定したことに応答して、予測ユニットレベル動き予測候補のリストを導出することと、
サブ予測ユニットレベル動き予測候補の前記リストまたは予測ユニットレベル動き予測候補の前記リストのいずれかから動きベクトル予測子を選択することと、
前記選択された動きベクトル予測子を使用して、前記符号化されたビデオデータを復号することと、
を行うように構成されている、装置。
【請求項１８】
前記符号化されたビデオデータは、現在ブロックを含み、サブ予測ユニットレベル動き予測候補の前記リストおよび予測ユニットレベル動き予測候補の前記リストは、前記現在ブロックの隣接ブロックから導出される、請求項１７に記載の装置。
【請求項１９】
前記隣接ブロックは、現在ピクチャ中の前記現在ブロックの空間隣接物、または前にコーディングされたピクチャ中の前記現在ブロックの時間隣接物である、請求項１８に記載の装置。
【請求項２０】
サブ予測ユニットレベル動き予測候補の前記リストまたは予測ユニットレベル動き予測候補の前記リストは、前記隣接ブロックにおける動き予測発生に基づいて少なくとも部分的に順序付けられる、請求項１８に記載の装置。
【請求項２１】
予測ユニット中のピクセルは、第１の動きベクトル情報を共有し、サブ予測ユニット中のピクセルは、第２の動きベクトル情報を共有し、前記第１の動きベクトル情報または前記第２のベクトル情報は、前記選択された動きベクトル予測子から決定される、請求項１７に記載の装置。
【請求項２２】
前記予測ユニットレベル動きベクトル候補リストは、空間隣接候補および時間隣接候補のうちの少なくとも１つを含む、請求項１７に記載の装置。
【請求項２３】
サブ予測ユニットレベル動き予測候補の前記リストは、アフィン動きベクトル予測、代替時間動きベクトル予測（ＡＴＭＶＰ）、空間時間動きベクトル予測（ＳＴＭＶＰ）、平面動きベクトル予測、およびパターンマッチ動きベクトル導出（ＰＭＶＤ）のうちの少なくとも１つを含む、請求項１７に記載の装置。
【請求項２４】
前記プロセッサ手段は、
前記サブ予測ユニット動きフラグがアクティブであると決定したことに応答して、マージング候補インデックスを導出するようにさらに構成され、ここにおいて、前記マージング候補インデックスは、選択されるべき前記動きベクトル予測子を指定する、
請求項１７に記載の装置。
【請求項２５】
実行されたときに、
符号化されたビデオデータを受信することと、
前記符号化されたビデオデータからサブ予測ユニット動きフラグをパースすることと、
前記サブ予測ユニット動きフラグがアクティブであると決定したことに応答して、サブ予測ユニットレベル動き予測候補のリストを導出することと、
前記サブ予測ユニット動きフラグがアクティブでないと決定したことに応答して、予測ユニットレベル動き予測候補のリストを導出することと、
サブ予測ユニットレベル動き予測候補の前記リストまたは予測ユニットレベル動き予測候補の前記リストのいずれかから動きベクトル予測子を選択することと、
前記選択された動きベクトル予測子を使用して、前記符号化されたビデオデータを復号することと、
を備える方法を、１つまたは複数のプロセッサに実行させる命令を記憶した、非一時的コンピュータ可読記憶媒体。
【請求項２６】
前記符号化されたビデオデータは、現在ブロックを含み、サブ予測ユニットレベル動き予測候補の前記リストおよび予測ユニットレベル動き予測候補の前記リストは、前記現在ブロックの隣接ブロックから導出される、請求項２５に記載の媒体。
【請求項２７】
前記隣接ブロックは、現在ピクチャ中の前記現在ブロックの空間隣接物、または前にコーディングされたピクチャ中の前記現在ブロックの時間隣接物である、請求項２６に記載の媒体。
【請求項２８】
サブ予測ユニットレベル動き予測候補の前記リストまたは予測ユニットレベル動き予測候補の前記リストは、前記隣接ブロックにおける動き予測発生に基づいて少なくとも部分的に順序付けられる、請求項２６に記載の媒体。
【請求項２９】
予測ユニット中のピクセルは、第１の動きベクトル情報を共有し、サブ予測ユニット中のピクセルは、第２の動きベクトル情報を共有し、前記第１の動きベクトル情報または前記第２のベクトル情報は、前記選択された動きベクトル予測子から決定され、
前記予測ユニットレベル動きベクトル候補リストは、空間隣接候補および時間隣接候補のうちの少なくとも１つを含み、
サブ予測ユニットレベル動き予測候補の前記リストは、アフィン動きベクトル予測、代替時間動きベクトル予測（ＡＴＭＶＰ）、空間時間動きベクトル予測（ＳＴＭＶＰ）、平面動きベクトル予測、およびパターンマッチ動きベクトル導出（ＰＭＶＤ）のうちの少なくとも１つを含む、請求項２５に記載の媒体。
【請求項３０】
前記方法は、
前記サブ予測ユニット動きフラグがアクティブであると決定したことに応答して、マージング候補インデックスを導出することをさらに備え、ここにおいて、前記マージング候補インデックスは、選択されるべき前記動きベクトル予測子を指定する、
請求項２５に記載の媒体。
【発明の詳細な説明】
【優先権の主張】
【０００１】
[0001]  本出願は、２０１８年６月１９日出願の米国仮特許出願第６２／６８７，０５２号の優先権を主張する、２０１９年６月１７日出願の米国特許出願第１６／４４３，１１３号の利益を主張し、その内容全体が参照によって本明細書に組み込まれる。
【技術分野】
【０００２】
[0002]  本開示は、ビデオ符号化およびビデオ復号に関する。
【背景技術】
【０００３】
[0003]  デジタルビデオ能力は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラまたは衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイス、および同様のものを含む、広範囲のデバイスに組み込まれることができる。デジタルビデオデバイスは、ＭＰＥＧ−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ Ｈ．２６３、ＩＴＵ−Ｔ Ｈ．２６４／ＭＰＥＧ−４，パート１０、アドバンスドビデオコーディング（ＡＶＣ）、高効率ビデオコーディング（ＨＥＶＣ）規格、ＩＴＵ−Ｔ Ｈ．２６５／高効率ビデオコーディング（ＨＥＶＣ）、およびそのような規格の拡張版によって定義される規格に記載されているものなどの、ビデオコーディング技法をインプリメントする。ビデオデバイスは、そのようなビデオコーディング技法をインプリメントすることによって、より効率的にデジタルビデオ情報を送信、受信、符号化、復号、および／または記憶し得る。
【０００４】
[0004]  ビデオコーディング技法は、ビデオシーケンスに内在する冗長性を低減または取り除くために、空間的（イントラピクチャ）予測および／または時間的（インターピクチャ）予測を含む。ブロックベースのビデオコーディングの場合、ビデオスライス（例えば、ビデオピクチャまたはビデオピクチャの一部分）は、コーディングツリーユニット（ＣＴＵ）、コーディングユニット（ＣＵ）、および／またはコーディングノードとも呼ばれ得る、ビデオブロックへと分割され得る。ピクチャのイントラコーディングされた（Ｉ）スライス中のビデオブロックは、同じピクチャにおける隣接ブロック中の参照サンプルに対して空間的予測を使用して符号化される。ピクチャのインターコーディングされた（ＰまたはＢ）スライス中のビデオブロックは、同じピクチャにおける隣接ブロック中の参照サンプルに対して空間的予測を使用し得るか、または他の参照ピクチャ中の参照サンプルに対して時間的予測を使用し得る。ピクチャは、フレームと呼ばれ得、参照ピクチャは、参照フレームと呼ばれ得る。
【発明の概要】
【０００５】
[0005]  概して、本開示は、ビデオコーデックにおける動きベクトル予測に関する。例えば、導出される動きベクトル予測候補の２つのリストから、動きベクトル予測子が適応的に選択される。第１のリストはＰＵレベル動きベクトル予測候補を含み、第２のリストはサブＰＵレベル動きベクトル予測候補を含む。
【０００６】
[0006]  １つの例示的な実施形態では、ビデオデータを復号する方法が説明される。本方法は、符号化されたビデオデータを受信することと、符号化されたビデオデータからサブ予測ユニット動きフラグをパースすることと、サブ予測ユニット動きフラグがアクティブであると決定したことに応答して、サブ予測ユニットレベル動き予測候補のリストを導出することと、サブ予測ユニット動きフラグがアクティブでないと決定したことに応答して、予測ユニットレベル動き予測候補のリストを導出することと、サブ予測ユニットレベル動き予測候補のリストまたは予測ユニットレベル動き予測候補のリストのいずれかから動きベクトル予測子を選択することと、選択された動きベクトル予測子を使用して、符号化されたビデオデータを復号することと、を含む。符号化されたビデオデータは、現在ブロックを含み、サブ予測ユニットレベル動き予測候補のリストおよび予測ユニットレベル動き予測候補のリストは、現在ブロックの隣接ブロックから導出される。隣接ブロックは、現在ピクチャ中の現在ブロックの空間隣接物、または前にコーディングされたピクチャ中の現在ブロックの時間隣接物である。サブ予測ユニットレベル動き予測候補のリストまたは予測ユニットレベル動き予測候補のリストは、隣接ブロックにおける動き予測発生（occurrences）に基づいて少なくとも部分的に順序付けられる。予測ユニット中のピクセルは、第１の動きベクトル情報を共有し、サブ予測ユニット中のピクセルは、第２の動きベクトル情報を共有し、第１の動きベクトル情報または第２のベクトル情報は、選択された動きベクトル予測子から決定される。予測ユニットレベル動きベクトル候補リストは、空間隣接候補および時間隣接候補のうちの少なくとも１つを含む。サブ予測ユニットレベル動き予測候補のリストは、アフィン動きベクトル予測（affine motion vector prediction）、代替時間動きベクトル予測（ＡＴＭＶＰ：alternative temporal motion vector prediction）、空間時間動きベクトル予測（ＳＴＭＶＰ：spatial-temporal motion vector prediction）、平面動きベクトル予測（planar motion vector prediction）、およびパターンマッチ動きベクトル導出（ＰＭＶＤ：pattern matched motion vector derivation）のうちの少なくとも１つを含む。本方法は、サブ予測ユニット動きフラグがアクティブであると決定したことに応答してマージング候補インデックスを導出することを含み、ここにおいて、マージング候補インデックスは、選択されるべき動きベクトル予測子を指定する。
【０００７】
[0007]  別の例示的な実施形態では、ビデオデータを復号するための装置が説明される。本装置は、受信された符号化されたビデオデータを記憶するためのメモリとプロセッサとを含む。プロセッサは、符号化されたビデオデータからサブ予測ユニット動きフラグをパースすることと、サブ予測ユニット動きフラグがアクティブであると決定したことに応答して、サブ予測ユニットレベル動き予測候補のリストを導出することと、サブ予測ユニット動きフラグがアクティブでないと決定したことに応答して、予測ユニットレベル動き予測候補のリストを導出することと、サブ予測ユニットレベル動き予測候補のリストまたは予測ユニットレベル動き予測候補のリストのいずれかから動きベクトル予測子を選択することと、選択された動きベクトル予測子を使用して、符号化されたビデオデータを復号することと、を行うように構成されている。符号化されたビデオデータは、現在ブロックを含み、サブ予測ユニットレベル動き予測候補のリストおよび予測ユニットレベル動き予測候補のリストは、現在ブロックの隣接ブロックから導出される。隣接ブロックは、現在ピクチャ中の現在ブロックの空間隣接物、または前にコーディングされたピクチャ中の現在ブロックの時間隣接物である。サブ予測ユニットレベル動き予測候補のリストまたは予測ユニットレベル動き予測候補のリストは、隣接ブロックにおける動き予測発生に基づいて少なくとも部分的に順序付けられる。予測ユニット中のピクセルは、第１の動きベクトル情報を共有し、サブ予測ユニット中のピクセルは、第２の動きベクトル情報を共有し、第１の動きベクトル情報または第２のベクトル情報は、選択された動きベクトル予測子から決定される。予測ユニットレベル動きベクトル候補リストは、空間隣接候補および時間隣接候補のうちの少なくとも１つを含む。サブ予測ユニットレベル動き予測候補のリストは、アフィン動きベクトル予測、代替時間動きベクトル予測（ＡＴＭＶＰ）、空間時間動きベクトル予測（ＳＴＭＶＰ）、平面動きベクトル予測、およびパターンマッチ動きベクトル導出（ＰＭＶＤ）のうちの少なくとも１つを含む。プロセッサは、サブ予測ユニット動きフラグがアクティブであると決定したことに応答してマージング候補インデックスを導出するようにさらに構成され、ここにおいて、マージング候補インデックスは、選択されるべき動きベクトル予測子を指定する。
【０００８】
[0008]  別の例示的な実施形態では、ビデオデータを復号するための装置が説明される。本装置は、受信された符号化されたビデオデータを記憶するためのメモリ手段とプロセッサ手段とを含む。プロセッサ手段は、符号化されたビデオデータからサブ予測ユニット動きフラグをパースすることと、サブ予測ユニット動きフラグがアクティブであると決定したことに応答して、サブ予測ユニットレベル動き予測候補のリストを導出することと、サブ予測ユニット動きフラグがアクティブでないと決定したことに応答して、予測ユニットレベル動き予測候補のリストを導出することと、サブ予測ユニットレベル動き予測候補のリストまたは予測ユニットレベル動き予測候補のリストのいずれかから動きベクトル予測子を選択することと、選択された動きベクトル予測子を使用して、符号化されたビデオデータを復号することと、を行うように構成されている。符号化されたビデオデータは、現在ブロックを含み、サブ予測ユニットレベル動き予測候補のリストおよび予測ユニットレベル動き予測候補のリストは、現在ブロックの隣接ブロックから導出される。隣接ブロックは、現在ピクチャ中の現在ブロックの空間隣接物、または前にコーディングされたピクチャ中の現在ブロックの時間隣接物である。サブ予測ユニットレベル動き予測候補のリストまたは予測ユニットレベル動き予測候補のリストは、隣接ブロックにおける動き予測発生に基づいて少なくとも部分的に順序付けられる。予測ユニット中のピクセルは、第１の動きベクトル情報を共有し、サブ予測ユニット中のピクセルは、第２の動きベクトル情報を共有し、第１の動きベクトル情報または第２のベクトル情報は、選択された動きベクトル予測子から決定される。予測ユニットレベル動きベクトル候補リストは、空間隣接候補および時間隣接候補のうちの少なくとも１つを含む。サブ予測ユニットレベル動き予測候補のリストは、アフィン動きベクトル予測、代替時間動きベクトル予測（ＡＴＭＶＰ）、空間時間動きベクトル予測（ＳＴＭＶＰ）、平面動きベクトル予測、およびパターンマッチ動きベクトル導出（ＰＭＶＤ）のうちの少なくとも１つを含む。プロセッサ手段は、サブ予測ユニット動きフラグがアクティブであると決定したことに応答してマージング候補インデックスを導出するようにさらに構成され、ここにおいて、マージング候補インデックスは、選択されるべき動きベクトル予測子を指定する。
【０００９】
[0009]  別の例示的な実施形態では、非一時的コンピュータ可読記憶媒体が、実行されたときに１つまたは複数のプロセッサに方法を実行させる命令を記憶している。本方法は、符号化されたビデオデータを受信することと、符号化されたビデオデータからサブ予測ユニット動きフラグをパースすることと、サブ予測ユニット動きフラグがアクティブであると決定したことに応答して、サブ予測ユニットレベル動き予測候補のリストを導出することと、サブ予測ユニット動きフラグがアクティブでないと決定したことに応答して、予測ユニットレベル動き予測候補のリストを導出することと、サブ予測ユニットレベル動き予測候補のリストまたは予測ユニットレベル動き予測候補のリストのいずれかから動きベクトル予測子を選択することと、選択された動きベクトル予測子を使用して、符号化されたビデオデータを復号することと、を含む。符号化されたビデオデータは、現在ブロックを含み、サブ予測ユニットレベル動き予測候補のリストおよび予測ユニットレベル動き予測候補のリストは、現在ブロックの隣接ブロックから導出される。隣接ブロックは、現在ピクチャ中の現在ブロックの空間隣接物、または前にコーディングされたピクチャ中の現在ブロックの時間隣接物である。サブ予測ユニットレベル動き予測候補のリストまたは予測ユニットレベル動き予測候補のリストは、隣接ブロックにおける動き予測発生に基づいて少なくとも部分的に順序付けられる。予測ユニット中のピクセルは、第１の動きベクトル情報を共有し、サブ予測ユニット中のピクセルは、第２の動きベクトル情報を共有し、第１の動きベクトル情報または第２のベクトル情報は、選択された動きベクトル予測子から決定される。予測ユニットレベル動きベクトル候補リストは、空間隣接候補および時間隣接候補のうちの少なくとも１つを含む。サブ予測ユニットレベル動き予測候補のリストは、アフィン動きベクトル予測、代替時間動きベクトル予測（ＡＴＭＶＰ）、空間時間動きベクトル予測（ＳＴＭＶＰ）、平面動きベクトル予測、およびパターンマッチ動きベクトル導出（ＰＭＶＤ）のうちの少なくとも１つを含む。本方法は、サブ予測ユニット動きフラグがアクティブであると決定したことに応答してマージング候補インデックスを導出することを含み、ここにおいて、マージング候補インデックスは、選択されるべき動きベクトル予測子を指定する。
【００１０】
[0010]  １つまたは複数の例の詳細は、添付の図面および以下の説明に記載される。他の特徴、目的、および利点が、本説明、図面、および特許請求の範囲から明らかとなる。
【図面の簡単な説明】
【００１１】
【図１】[0011]  本開示の技法を実行し得る例示的なビデオ符号化および復号システムを例示するブロック図である。
【図２Ａ】[0012]  例示的な四分木二分木（ＱＴＢＴ）構造と、対応するコーディングツリーユニット（ＣＴＵ）とを例示する概念図である。
【図２Ｂ】例示的な四分木二分木（ＱＴＢＴ）構造と、対応するコーディングツリーユニット（ＣＴＵ）とを例示する概念図である。
【図３】[0013]  動きベクトル予測子導出を例示するフローチャートである。
【図４】[0014]  マージモードのための空間隣接動きベクトル候補を例示する概念図である。
【図５】[0015]  時間動きベクトル候補を例示する概念図である。
【図６】[0016]  候補動きベクトルブロック選択技法を例示する。
【図７】[0017]  空間時間動きベクトル予測（ＳＴＭＶＰ）を例示する概念図である。
【図８】[0018]  バイラテラルマッチング技法を例示する概念図である。
【図９】[0019]  テンプレートマッチング技法を例示する概念図である。
【図１０】[0020]  平面動きベクトル予測を例示する概念図である。
【図１１】[0021]  本開示の技法を実行し得る例示的なビデオエンコーダを例示するブロック図である。
【図１２】[0022]  本開示の技法を実行し得る、例示的なビデオデコーダを例示するブロック図である。
【詳細な説明】
【００１２】
[0023]  本開示は、デコーダ側動きベクトル導出（ＤＭＶＤ：decoder-side motion vector derivation）に関する。本開示で説明されるデコーダ側動きベクトル導出技法は、ＨＥＶＣ（高効率ビデオコーディング）などの、既存のビデオコーデックのいずれかとともに使用され得るか、またはＨ．２６６ ＶＶＣ（Versatile Video Coding）およびＥＶＣ（Essential Video Coding）などの、任意の将来のビデオコーディング規格のためのコーディング技法として使用され得る。
【００１３】
[0024]  図１は、本開示の技法を実行し得る例示的なビデオ符号化および復号システム１００を例示するブロック図である。本開示の技法は、概して、ビデオデータをコーディング（符号化および／または復号）することを対象とし、特に、本明細書で説明される技法に関する。概して、ビデオデータは、ビデオを処理するための任意のデータを含む。したがって、ビデオデータは、生の、コーディングされていないビデオ、符号化されたビデオ、復号された（例えば、再構成された）ビデオ、およびシグナリングデータなどのビデオメタデータを含み得る。
【００１４】
[0025]  図１に示すように、システム１００は、この例では、宛先デバイス１１６によって復号および表示されることになる符号化されたビデオデータを提供するソースデバイス１０２を含む。特に、ソースデバイス１０２は、コンピュータ可読媒体１１０を介して宛先デバイス１１６にビデオデータを提供する。ソースデバイス１０２および宛先デバイス１１６は、デスクトップコンピュータ、ノートブック（すなわち、ラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、スマートフォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス、または同様のものを含む、幅広い範囲のデバイスのうちのいずれかを備え得る。いくつかのケースでは、ソースデバイス１０２および宛先デバイス１１６は、ワイヤレス通信のために装備され得、よってワイヤレス通信デバイスと呼ばれ得る。
【００１５】
[0026]  図１の例では、ソースデバイス１０２は、ビデオソース１０４、メモリ１０６、ビデオエンコーダ２００、および出力インターフェース１０８を含む。宛先デバイス１１６は、入力インターフェース１２２、ビデオデコーダ３００、メモリ１２０、およびディスプレイデバイス１１８を含む。本開示にしたがって、ソースデバイス１０２のビデオエンコーダ２００および宛先デバイス１１６のビデオデコーダ３００は、デコーダ側動きベクトル導出のための技法を適用するように構成され得る。したがって、ソースデバイス１０２は、ビデオ符号化デバイスの一例を表し、宛先デバイス１１６は、ビデオ復号デバイスの一例を表す。他の例では、ソースデバイスおよび宛先デバイスは、他の構成要素または配置を含み得る。例えば、ソースデバイス１０２は、外部カメラなどの外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイス１１６は、統合されたディスプレイデバイスを含むのではなくむしろ、外部ディスプレイデバイスとのインターフェースをとり得る。
【００１６】
[0027]  図１に示すシステム１００は１つの例にすぎない。一般に、任意のデジタルビデオ符号化および／または復号デバイスが、デコーダ側動きベクトル導出のための技法を実行し得る。ソースデバイス１０２および宛先デバイス１１６は、ソースデバイス１０２が宛先デバイス１１６に送信するためのコーディングされたビデオデータを生成するコーディングデバイスの例にすぎない。本開示は、データのコーディング（符号化および／または復号）を実行するデバイスとして「コーディング」デバイスに言及する。したがって、ビデオエンコーダ２００およびビデオデコーダ３００は、コーディングデバイスの例、特に、それぞれビデオエンコーダおよびビデオデコーダを表す。いくつかの例では、デバイス１０２、１１６は、デバイス１０２、１１６の各々がビデオ符号化および復号構成要素を含むように実質的に対称的に動作し得る。したがって、システム１００は、例えば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオ電話のために、ビデオデバイス１０２、１１６間の一方向または二方向ビデオ送信をサポートし得る。
【００１７】
[0028]  概して、ビデオソース１０４は、ビデオデータ（すなわち、生の、符号化されていないビデオデータ）のソースを表し、ビデオデータの連続する一連のピクチャ（「フレーム」とも呼ばれる）を、ピクチャのためのデータを符号化するビデオエンコーダ２００に提供する。ソースデバイス１０２のビデオソース１０４は、ビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされた生ビデオを包含するビデオアーカイブ、および／またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含み得る。さらなる代替として、ビデオソース１０４は、ソースビデオとしてコンピュータグラフィックスベースのデータを、またはライブビデオ、アーカイブされたビデオ、およびコンピュータ生成されたビデオの組合せを、生成し得る。いずれのケースも、ビデオエンコーダ２００は、キャプチャされたビデオデータ、事前にキャプチャされたビデオデータ、またはコンピュータ生成されたビデオデータを符号化する。ビデオエンコーダ２００は、ピクチャを、コーディングのために、受信された順序（「表示順序」と呼ばれるときもある）からコーディング順序に再配置し得る。ビデオエンコーダ２００は、符号化されたビデオデータを含むビットストリームを生成し得る。次いでソースデバイス１０２は、例えば、宛先デバイス１１６の入力インターフェース１２２による受信および／または取り出しのために、出力インターフェース１０８を介してコンピュータ可読媒体１１０上に、符号化されたビデオデータを出力し得る。
【００１８】
[0029]  ソースデバイス１０２のメモリ１０６および宛先デバイス１１６のメモリ１２０は、汎用メモリを表す。いくつかの例では、メモリ１０６、１２０は、生ビデオデータ、例えば、ビデオソース１０４からの生ビデオと、ビデオデコーダ３００からの生の復号されたビデオデータとを記憶し得る。追加的または代替的に、メモリ１０６、１２０は、例えば、それぞれビデオエンコーダ２００およびビデオデコーダ３００によって実行可能なソフトウェア命令を記憶し得る。この例ではビデオエンコーダ２００およびビデオデコーダ３００とは別個に示されているが、ビデオエンコーダ２００およびビデオデコーダ３００はまた、機能的に類似または同等の目的のための内部メモリを含み得ることを理解されたい。さらに、メモリ１０６、１２０は、符号化されたビデオデータ、例えば、ビデオエンコーダ２００からの出力およびビデオデコーダ３００への入力を記憶し得る。いくつかの例では、メモリ１０６、１２０の部分は、例えば、生の、復号された、および／または符号化されたビデオデータを記憶するための、１つまたは複数のビデオバッファとして割り振られ得る。
【００１９】
[0030]  コンピュータ可読媒体１１０は、ソースデバイス１０２から宛先デバイス１１６に、符号化されたビデオデータをトランスポートすることが可能な任意のタイプの媒体またはデバイスを表し得る。１つの例では、コンピュータ可読媒体１１０は、ソースデバイス１０２が、例えば無線周波数ネットワークまたはコンピュータベースのネットワークを介して、符号化されたビデオデータをリアルタイムに宛先デバイス１１６に直接送信することを可能にする通信媒体を表す。出力インターフェース１０８は、符号化されたビデオデータを含む送信信号を変調し得、入力インターフェース１２２は、ワイヤレス通信プロトコルなどの通信規格にしたがって、受信された送信信号を変調し得る。通信媒体は、無線周波数（ＲＦ）スペクトルもしくは１つまたは複数の物理伝送線などの、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなどの、パケットベースのネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス１０２から宛先デバイス１１６への通信を容易にするのに有用であり得る他の任意の機器を含み得る。
【００２０】
[0031]  いくつかの例では、ソースデバイス１０２は、出力インターフェース１０８から記憶デバイス１１２に、符号化されたデータを出力し得る。同様に、宛先デバイス１１６は、入力インターフェース１２２を介して記憶デバイス１１２から符号化されたデータにアクセスし得る。記憶デバイス１１２は、ハードドライブ、Ｂｌｕ−ｒａｙ（登録商標）ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュメモリ、揮発性もしくは不揮発性メモリ、または符号化されたビデオデータを記憶するための他の任意の好適なデジタル記憶媒体などの、様々な分散型またはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。
【００２１】
[0032]  いくつかの例では、ソースデバイス１０２は、ソースデバイス１０２によって生成された符号化されたビデオを記憶し得るファイルサーバ１１４または別の中間記憶デバイスに、符号化されたビデオデータを出力し得る。宛先デバイス１１６は、ストリーミングまたはダウンロードを介して、ファイルサーバ１１４から、記憶されたビデオデータにアクセスし得る。ファイルサーバ１１４は、符号化されたビデオデータを記憶し、その符号化されたビデオデータを宛先デバイス１１６に送信することが可能な任意のタイプのサーバデバイスであり得る。ファイルサーバ１１４は、（例えば、ウェブサイトのための）ウェブサーバ、ファイル転送プロトコル（ＦＴＰ）サーバ、コンテンツ配信ネットワークデバイス、またはネットワーク接続ストレージ（ＮＡＳ）デバイスを表し得る。宛先デバイス１１６は、インターネット接続を含む任意の標準的なデータ接続を通して、ファイルサーバ１１４から符号化されたビデオデータにアクセスし得る。これは、ファイルサーバ１１４上に記憶された符号化されたビデオデータにアクセスするのに好適である、ワイヤレスチャネル（例えば、Ｗｉ−Ｆｉ接続）、ワイヤード接続（例えば、ＤＳＬ、ケーブルモデム等）、またはその両方の組合せを含み得る。ファイルサーバ１１４および入力インターフェース１２２は、ストリーミング送信プロトコル、ダウンロード送信プロトコル、またはそれらの組合せにしたがって動作するように構成され得る。
【００２２】
[0033]  出力インターフェース１０８および入力インターフェース１２２は、ワイヤレス送信機／受信機、モデム、ワイヤードネットワーキング構成要素（例えば、イーサネット（登録商標）カード）、様々なＩＥＥＥ８０２．１１規格のいずれかにしたがって動作するワイヤレス通信構成要素、または他の物理的構成要素を表し得る。出力インターフェース１０８および入力インターフェース１２２がワイヤレス構成要素を備える例では、出力インターフェース１０８および入力インターフェース１２２は、４Ｇ、４Ｇ−ＬＴＥ（登録商標）（ロングタームエボリューション）、ＬＴＥアドバンスト、５Ｇ、または同様のものなどのセルラ通信規格にしたがって、符号化されたビデオデータなどのデータを転送するように構成され得る。出力インターフェース１０８がワイヤレス送信機を備えるいくつかの例では、出力インターフェース１０８および入力インターフェース１２２は、ＩＥＥＥ８０２．１１仕様、ＩＥＥＥ８０２．１５仕様（例えば、ＺｉｇＢｅｅ（登録商標））、Ｂｌｕｅｔｏｏｔｈ（登録商標）規格、または同様のものなどの、他のワイヤレス規格にしたがって、符号化されたビデオデータなどのデータを転送するように構成され得る。いくつかの例では、ソースデバイス１０２および／または宛先デバイス１１６は、それぞれのシステムオンチップ（ＳｏＣ）デバイスを含み得る。例えば、ソースデバイス１０２は、ビデオエンコーダ２００および／または出力インターフェース１０８に起因する機能を実行するためのＳｏＣデバイスを含み得、宛先デバイス１１６は、ビデオデコーダ３００および／または入力インターフェース１２２に起因する機能を実行するためのＳｏＣデバイスを含み得る。
【００２３】
[0034]  本開示の技法は、無線テレビジョンブロードキャスト、ケーブルテレビジョン送信、衛星テレビジョン送信、ＨＴＴＰを介した動的適応型ストリーミング（ＤＡＳＨ）などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されるデジタルビデオ、データ記憶媒体上に記憶されるデジタルビデオの復号、または他のアプリケーションなどの、様々なマルチメディアアプリケーションのいずれかをサポートするビデオコーディングに適用され得る。
【００２４】
[0035]  宛先デバイス１１６の入力インターフェース１２２は、コンピュータ可読媒体１１０（例えば、非一時的記憶デバイス１１２、ファイルサーバ１１４、または同様のもの）から、符号化されたビデオビットストリームを受信する。符号化されたビデオビットストリームコンピュータ可読媒体１１０は、ビデオエンコーダ２００によって定義され、ビデオデコーダ３００によっても使用される、ビデオブロックまたは他のコーディングされたユニット（例えば、スライス、ピクチャ、ピクチャのグループ、シーケンス、または同様のもの）の特性および／または処理を記述する値を有するシンタックス要素などの、シグナリング情報を含み得る。ディスプレイデバイス１１８は、復号されたビデオデータの復号されたピクチャをユーザに表示する。ディスプレイデバイス１１８は、ブラウン管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイデバイスなどの、様々なディスプレイデバイスのうちのいずれかを表し得る。
【００２５】
[0036]  図１に示されていないが、いくつかの例では、ビデオエンコーダ２００およびビデオデコーダ３００は、オーディオエンコーダおよび／またはオーディオデコーダと各々統合され得、共通データストリーム中にオーディオとビデオの両方を含む多重化ストリームを扱うための、適切なＭＵＸ−ＤＥＭＵＸユニット、または他のハードウェアおよび／またはソフトウェアを含み得る。適用可能な場合、ＭＵＸ−ＤＥＭＵＸユニットは、ＩＴＵ Ｈ．２２３マルチプレクサプロトコル、またはユーザデータグラムプロトコル（ＵＤＰ）などの他のプロトコルに準拠し得る。
【００２６】
[0037]  ビデオエンコーダ２００およびビデオデコーダ３００は、１つまたは複数のマイクロプロセッサ、デジタルシグナルプロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理回路、ソフトウェア、ハードウェア、ファームウェア、またはこれらの任意の組合せなどの、様々な好適なエンコーダおよび／またはデコーダ回路のいずれかとして各々インプリメントされ得る。本技法が部分的にソフトウェアにおいてインプリメントされるとき、デバイスは、本開示の技法を実行するために、好適な非一時的コンピュータ可読媒体にソフトウェアのための命令を記憶し、１つまたは複数のプロセッサを使用してハードウェアにおいて命令を実行し得る。ビデオエンコーダ２００およびビデオデコーダ３００の各々は、１つまたは複数のエンコーダまたはデコーダに含まれ得、それらのうちのいずれも、それぞれのデバイスに複合エンコーダ／デコーダ（ＣＯＤＥＣ）の一部として統合され得る。ビデオエンコーダ２００および／またはビデオデコーダ３００を含むデバイスは、集積回路、マイクロプロセッサ、および／またはセルラ電話などのワイヤレス通信デバイスを備え得る。
【００２７】
[0038]  ビデオコーディング規格は、ＩＴＵ−Ｔ Ｈ．２６１、ＩＳＯ／ＩＥＣ ＭＰＥＧ−１ Ｖｉｓｕａｌ、ＩＴＵ−Ｔ Ｈ．２６２またはＩＳＯ／ＩＥＣ ＭＰＥＧ−２ Ｖｉｓｕａｌ、ＩＴＵ−Ｔ Ｈ．２６３、ＩＳＯ／ＩＥＣ ＭＰＥＧ−４ Ｖｉｓｕａｌ、およびＩＴＵ−Ｔ Ｈ．２６４（ＩＳＯ／ＩＥＣ ＭＰＥＧ−４ ＡＶＣとしても既知）を含み、そのスケーラブルビデオコーディング（ＳＶＣ）拡張およびマルチビュービデオコーディング（ＭＶＣ）拡張を含む。
【００２８】
[0039]  ビデオコーディング規格、すなわち、高効率ビデオコーディング（ＨＥＶＣ）またはＩＴＵ−Ｔ Ｈ．２６５は、その範囲拡張、マルチビュー拡張（ＭＶ−ＨＥＶＣ）、およびスケーラブル拡張（ＳＨＶＣ）を含めて、ＪＣＴ−ＶＣ（Joint Collaboration Team on Video Coding）、ならびにＩＴＵ−Ｔ ＶＣＥＧ（Video Coding Experts Group）およびＩＳＯ／ＩＥＣ ＭＰＥＧ（Motion Picture Experts Group）のＪＣＴ−３Ｖ（Joint Collaboration Team on 3D Video Coding Extension Development）によって開発されたものである。
【００２９】
[0040]  ＩＴＵ−Ｔ ＶＣＥＧ（Ｑ６／１６）およびＩＳＯ／ＩＥＣ ＭＰＥＧ（ＪＴＣ１／ＳＣ２９／ＷＧ１１）は、現在のＨＥＶＣ規格（そのスクリーンコンテンツコーディングおよびハイダイナミックレンジコーディングのための現在の拡張および近い将来の拡張を含む）のそれを超える圧縮能力を有する、将来のビデオコーディング技術の標準化のための潜在的必要性を現在研究している。これらグループは、この分野における専門家によって提案された圧縮技術設計を評価するために、ＪＶＥＴ（Joint Video Exploration Team）として知られる合同協力作業においてこの調査活動に協力して取り組んでいる。ＪＶＥＴは、２０１５年１０月１９日〜２１日にわたって最初の会合を行った。そして、最新バージョンの基準ソフトウェア、すなわち、ＪＥＭ７（Joint Exploration Model 7）が、https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/HM-16.6-JEM-57.0/ からダウンロードできる。ＪＥＭ７（Joint Exploration Test Model 7）のアルゴリズムの記述は、ＪＶＥＴ−Ｇ１００１と呼ばれ得る。
【００３０】
[0041]  ビデオエンコーダ２００およびビデオデコーダ３００は、高効率ビデオコーディング（ＨＥＶＣ）とも呼ばれる、ＩＴＵ−Ｔ Ｈ．２６５などのビデオコーディング規格、またはマルチビュー拡張および／またはスケーラブルビデオコーディング拡張などの、それに対する拡張にしたがって動作し得る。代替的に、ビデオエンコーダ２００およびビデオデコーダ３００は、ＶＶＣ（Versatile Video Coding）とも呼ばれるＩＴＵ−Ｔ Ｈ．２６６またはＪＥＭ（Joint Exploration Test Model）などの、他の所有規格または業界規格にしたがって動作し得る。ＶＶＣ規格の最近のドラフトは、Ｂｒｏｓｓ他，“Versatile Video Coding (Draft 3)”，ＩＴＵ−Ｔ ＳＧ１６ ＷＰ３およびＩＳＯ／ＩＥＣ ＪＴＣ１／ＳＣ２９／ＷＧ１１のＪＶＥＴ（Joint Video Experts Team），第１３回会合：Ｍａｒｒａｋｅｃｈ，ＭＡ，２０１９０年１月９日〜１８日，ＪＶＥＴ−Ｍ１００１−ｖ３（以下、「ＶＶＣドラフト４」）に記載されている。しかしながら、本開示の技法は、いずれの特定のコーディング規格にも限定されるものではない。  
後述されるように、ビデオデコーダ３００は、本開示の１つまたは複数の技法を実行するように構成され得る。例えば、ビデオデコーダ３００は、受信された符号化されたビデオデータからサブ予測ユニット動きフラグをパースし、サブ予測ユニット動きフラグがアクティブである場合、サブ予測ユニットレベル動き予測候補のリストを導出し、サブ予測ユニット動きフラグがアクティブでない場合、予測ユニットレベル動き予測候補のリストを導出し、選択された動きベクトル予測子を使用して、符号化されたビデオデータを復号し得る。
【００３１】
[0042]  概して、ビデオエンコーダ２００およびビデオデコーダ３００は、ピクチャのブロックベースのコーディングを実行し得る。「ブロック」という用語は、一般に、処理される（例えば、符号化される、復号される、またはそうでない場合、符号化および／または復号プロセスで使用される）ことになるデータを含む構造を指す。例えば、ブロックは、ルミナンスデータおよび／またはクロミナンスデータのサンプルの２次元行列を含み得る。概して、ビデオエンコーダ２００およびビデオデコーダ３００は、ＹＵＶ（例えば、Ｙ、Ｃｂ、Ｃｒ）フォーマットで表されるビデオデータをコーディングし得る。すなわち、ピクチャのサンプルのための赤、緑、および青（ＲＧＢ）データをコーディングするのではなくむしろ、ビデオエンコーダ２００およびビデオデコーダ３００は、ルミナンス成分およびクロミナンス成分をコーディングし得、ここで、クロミナンス成分は、赤の色相(red hue)と青の色相(blue hue)両方のクロミナンス成分を含み得る。いくつかの例では、ビデオエンコーダ２００は、符号化の前に、受信されたＲＧＢフォーマットされたデータをＹＵＶ表現に変換し、ビデオデコーダ３００は、ＹＵＶ表現をＲＧＢフォーマットに変換する。代替的に、前処理ユニットおよび後処理ユニット（図示せず）が、これらの変換を実行し得る。
【００３２】
[0043]  本開示は、概して、ピクチャのデータを符号化または復号するプロセスを含むようにピクチャのコーディング（例えば、符号化および復号）に言及し得る。同様に、本開示は、ブロックのためのデータを符号化または復号するプロセス、例えば、予測および／または残差コーディングを含むようにピクチャのブロックのコーディングに言及し得る。符号化されたビデオビットストリームは、一般に、コーディング決定（例えば、コーディングモード）とピクチャのブロックへの分割とを表すシンタックス要素についての一連の値を含む。したがって、ピクチャまたはブロックのコーディングへの言及は、一般に、ピクチャまたはブロックを形成するシンタックス要素についての値のコーディングとして理解されるべきである。
【００３３】
[0044]  ＨＥＶＣは、コーディングユニット（ＣＵ）、予測ユニット（ＰＵ）、および変換ユニット（ＴＵ）を含む、様々なブロックを定義する。ＨＥＶＣによれば、ビデオコーダ（ビデオエンコーダ２００など）は、四分木構造にしたがってコーディングツリーユニット（ＣＴＵ）をＣＵに分割する。すなわち、ビデオコーダは、ＣＴＵおよびＣＵを、４つの等しい、オーバーラップしない正方形に分割し、四分木の各ノードは、０個または４つのうちのいずれかの子ノードを有する。子ノードのないノードは、「リーフノード」と呼ばれ得、そのようなリーフノードのＣＵは、１つまたは複数のＰＵおよび／または１つまたは複数のＴＵを含み得る。ビデオコーダは、ＰＵおよびＴＵをさらに分割し得る。例えば、ＨＥＶＣでは、残差四分木（ＲＱＴ）は、ＴＵの分割を表す。ＨＥＶＣでは、ＰＵはインター予測データを表し、ＴＵは残差データを表す。イントラ予測されるＣＵは、イントラモード指示などのイントラ予測情報を含む。
【００３４】
[0045]  別の例として、ビデオエンコーダ２００およびビデオデコーダ３００は、ＪＥＭまたはＶＶＣにしたがって動作するように構成され得る。ＪＥＭまたはＶＶＣによれば、ビデオコーダ（ビデオエンコーダ２００など）は、ピクチャを複数のコーディングツリーユニット（ＣＴＵ）に分割する。ビデオエンコーダ２００は、四分木二分木（ＱＴＢＴ）構造などのツリー構造にしたがってＣＴＵを分割し得る。ＱＴＢＴ構造は、ＨＥＶＣのＣＵ、ＰＵ、およびＴＵ間の分離など、複数の分割タイプの概念を取り除く。ＪＥＭのＱＴＢＴ構造は、四分木分割にしたがって分割された第１のレベルと、二分木分割にしたがって分割された第２のレベルとの２つのレベルを含む。ＱＴＢＴ構造のルートノードはＣＴＵに対応する。二分木のリーフノードは、コーディングユニット（ＣＵ）に対応する。
【００３５】
[0046]  ＭＴＴ分割構造では、ブロックは、四分木（ＱＴ）分割、二分木（ＢＴ）分割、および１つまたは複数のタイプの三分木（ＴＴ）分割を使用して分割され得る。三分木分割は、ブロックが３つのサブブロックに分けられる分割である。いくつかの例では、三分木分割は、中心を通って元のブロックを分割することなくブロックを３つのサブブロックに分割する。ＭＴＴにおける分割タイプ（例えば、ＱＴ、ＢＴ、およびＴＴ）は、対称または非対称であり得る。
【００３６】
[0047]  いくつかの例では、ビデオエンコーダ２００およびビデオデコーダ３００は、ルミナンス成分およびクロミナンス成分の各々を表すように単一のＱＴＢＴまたはＭＴＴ構造を使用し得るが、他の例では、ビデオエンコーダ２００およびビデオデコーダ３００は、ルミナンス成分のための１つのＱＴＢＴ／ＭＴＴ構造と、両方のクロミナンス成分のための別のＱＴＢＴまたはＭＴＴ構造（またはそれぞれのクロミナンス成分のための２つのＱＴＢＴ／ＭＴＴ構造）など、２つ以上のＱＴＢＴまたはＭＴＴ構造を使用し得る。
【００３７】
[0048]  ビデオエンコーダ２００およびビデオデコーダ３００は、ＨＥＶＣによる四分木分割、ＱＴＢＴ分割、もしくはＭＴＴ分割、または他の分割構造を使用するように構成され得る。説明を目的として、本開示の技法の説明は、ＱＴＢＴ分割に関して提示される。しかしながら、本開示の技法はまた、四分木分割、または他のタイプの分割も使用するように構成されたビデオコーダにも適用され得ることを理解されたい。
【００３８】
[0049]  本開示は、「Ｎ×Ｎ（NxN）」および「Ｎ×Ｎ（N by N）」を交換可能に使用して、垂直寸法および水平寸法に関するブロック（ＣＵまたは他のビデオブロックなど）のサンプル寸法、例えば、１６×１６（16x16）サンプルまたは１６×１６（16 by 16）サンプルに言及し得る。一般に、１６×１６ ＣＵは、垂直方向に１６個のサンプル（ｙ＝１６）を、水平方向に１６個のサンプル（ｘ＝１６）を有することになる。同様に、Ｎ×Ｎ ＣＵは、一般に、垂直方向にＮ個のサンプルを、水平方向にＮ個のサンプルを有し、ここで、Ｎは、非負整数値を表す。ＣＵ中のサンプルは、行および列に配置され得る。さらに、ＣＵは、水平方向において、必ずしも垂直方向と同じ数のサンプルを有する必要はない。例えば、ＣＵは、Ｎ×Ｍ個のサンプルを備え得、ここで、Ｍは必ずしもＮに等しいとは限らない。
【００３９】
[0050]  ビデオエンコーダ２００は、予測情報および／または残差情報、および他の情報を表すＣＵについてのビデオデータを符号化する。予測情報は、ＣＵのための予測ブロックを形成するためにどのようにＣＵが予測されるべきかを示す。残差情報は、一般に、符号化前のＣＵのサンプルと予測ブロックとの間のサンプルごとの差分を表す。
【００４０】
[0051]  ＣＵを予測するために、ビデオエンコーダ２００は、概して、インター予測またはイントラ予測を通してＣＵのための予測ブロックを形成し得る。インター予測は、一般に、前にコーディングされたピクチャのデータからＣＵを予測することを指し、イントラ予測は、一般に、同じピクチャの前にコーディングされたデータからＣＵを予測することを指す。インター予測を実行するために、ビデオエンコーダ２００は、１つまたは複数の動きベクトルを使用して予測ブロックを生成し得る。ビデオエンコーダ２００は、概して、例えば、ＣＵと参照ブロックとの間の差分に関して、ＣＵによくマッチする参照ブロックを識別するために動き探索を実行し得る。ビデオエンコーダ２００は、参照ブロックが現在のＣＵによくマッチするかどうかを決定するために、差分絶対値和（ＳＡＤ：sum of absolute difference）、差分二乗和（ＳＳＤ：sum of squared differences）、平均絶対差（ＭＡＤ：mean absolute difference）、平均二乗差（ＭＳＤ：mean squared differences）、または他のそのような差分計算を使用して差分メトリックを計算し得る。いくつかの例では、ビデオエンコーダ２００は、単方向予測または双方向予測を使用して現在のＣＵを予測し得る。
【００４１】
[0052]  ＪＥＭおよびＶＶＣのいくつかの例はまた、インター予測モードとみなされ得る、アフィン動き補償モードを提供する。アフィン動き補償モードでは、ビデオエンコーダ２００は、ズームインまたはズームアウト、回転、遠近運動（perspective motion）、または他の不規則な動きタイプなど、非並進運動を表す２つ以上の動きベクトルを決定し得る。
【００４２】
[0053]  イントラ予測を実行するために、ビデオエンコーダ２００は、予測ブロックを生成するようにイントラ予測モードを選択し得る。ＪＥＭおよびＶＶＣのいくつかの例は、様々な方向性モード、ならびに平面モードおよびＤＣモードを含む６７個のイントラ予測モードを提供する。概して、ビデオエンコーダ２００は、現在ブロック（例えば、ＣＵのブロック）に対する隣接サンプルを記述するイントラ予測モードを選択して、そのサンプルから現在ブロックのサンプルを予測する。ビデオエンコーダ２００がラスタ走査順序（左から右、上から下）でＣＴＵおよびＣＵをコーディングすると仮定すると、そのようなサンプルは、一般に、現在ブロックと同じピクチャ中の現在ブロックの上、左上、または左にあり得る。
【００４３】
[0054]  ビデオエンコーダ２００は、現在ブロックのための予測モードを表すデータを符号化する。例えば、インター予測モードの場合、ビデオエンコーダ２００は、様々な利用可能なインター予測モードのうちのどれが使用されるか、および対応するモードについての動き情報を表すデータを符号化し得る。単方向または双方向インター予測の場合、例えば、ビデオエンコーダ２００は、高度動きベクトル予測（ＡＭＶＰ：advanced motion vector prediction）またはマージモードを使用して動きベクトルを符号化し得る。ビデオエンコーダ２００は、アフィン動き補償モードのための動きベクトルを符号化するために同様のモードを使用し得る。
【００４４】
[0055]  ブロックのイントラ予測またはインター予測などの予測に続いて、ビデオエンコーダ２００は、ブロックについての残差データを計算し得る。残差ブロックなどの残差データは、ブロックと、対応する予測モードを使用して形成されたブロックについての予測ブロックとの間のサンプルごとの差分を表す。ビデオエンコーダ２００は、残差ブロックに１つまたは複数の変換を適用して、変換されたデータをサンプル領域ではなく変換領域において生成し得る。例えば、ビデオエンコーダ２００は、離散コサイン変換（ＤＣＴ）、整数変換、ウェーブレット変換、または概念的に同様の変換を残差ビデオデータに適用し得る。さらに、ビデオエンコーダ２００は、第１の変換に続いて、モード依存非分離型二次変換（ＭＤＮＳＳＴ）、信号依存変換、カルーネンレーベ変換（ＫＬＴ）、または同様のものなどの二次変換を適用し得る。ビデオエンコーダ２００は、１つまたは複数の変換の適用に続いて変換係数を生成する。
【００４５】
[0056]  上述したように、変換係数を生成するための任意の変換に続いて、ビデオエンコーダ２００は、変換係数の量子化を実行し得る。量子化は一般に、係数を表すために使用されるデータの量をできる限り低減するように変換係数が量子化されるプロセスを指し、さらなる圧縮を提供する。量子化プロセスを実行することによって、ビデオエンコーダ２００は、係数の一部または全部に関連付けられたビット深度を低減し得る。例えば、ビデオエンコーダ２００は、量子化中にｎビット値をｍビット値に丸め得、ここで、ｎはｍよりも大きい。いくつかの例では、量子化を実行するために、ビデオエンコーダ２００は、量子化されることになる値のビット単位の右シフトを実行し得る。
【００４６】
[0057]  量子化に続いて、ビデオエンコーダ２００は、変換係数を走査し得、量子化された変換係数を含む２次元行列から１次元ベクトルを生成する。走査は、より高いエネルギー（それゆえ、より低い周波数）係数を、ベクトルの前方に置き、より低いエネルギー（それゆえ、より高い周波数）変換係数を、ベクトルの後方に置くように設計され得る。いくつかの例では、ビデオエンコーダ２００は、直列ベクトルを生成するために、量子化された変換係数を走査するための所定の走査順序を利用し、次いでベクトルの量子化された変換係数をエントロピー符号化し得る。他の例では、ビデオエンコーダ２００は、適応走査を実行し得る。量子化された変換係数を走査して１次元ベクトルを形成した後、ビデオエンコーダ２００は、例えば、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）にしたがって、１次元ベクトルをエントロピー符号化し得る。ビデオエンコーダ２００はまた、ビデオデータを復号する際にビデオデコーダ３００が使用するための、符号化されたビデオデータに関連付けられたメタデータを記述するシンタックス要素についての値をエントロピー符号化し得る。
【００４７】
[0058]  ＣＡＢＡＣを実行するために、ビデオエンコーダ２００は、送信されることになるシンボルに、コンテキストモデル内のコンテキストを割り当て得る。コンテキストは、例えば、シンボルの隣接値がゼロ値であるか否かに関連し得る。確率の決定は、シンボルに割り当てられたコンテキストに基づき得る。
【００４８】
[0059]  ビデオエンコーダ２００はさらに、例えば、ピクチャヘッダ、ブロックヘッダ、スライスヘッダ、またはシーケンスパラメータセット（ＳＰＳ）、ピクチャパラメータセット（ＰＰＳ）、もしくはビデオパラメータセット（ＶＰＳ）などの他のシンタックスデータ中で、ビデオデコーダ３００に、ブロックベースのシンタックスデータ、ピクチャベースのシンタックスデータ、およびシーケンスベースのシンタックスデータなどのシンタックスデータを生成し得る。ビデオデコーダ３００は、同様に、対応するビデオデータをどのように復号すべきかを決定するために、そのようなシンタックスデータを復号し得る。
【００４９】
[0060]  このようにして、ビデオエンコーダ２００は、符号化されたビデオデータ、例えば、ピクチャのブロック（例えば、ＣＵ）への分割と、ブロックについての予測情報および／または残差情報とを記述するシンタックス要素を含むビットストリームを生成し得る。最後に、ビデオデコーダ３００は、ビットストリームを受信し、符号化されたビデオデータを復号し得る。
【００５０】
[0061]  概して、ビデオデコーダ３００は、ビットストリームの符号化されたビデオデータを復号するために、ビデオエンコーダ２００によって実行されたものとは逆のプロセスを実行する。例えば、ビデオデコーダ３００は、ビデオエンコーダ２００のＣＡＢＡＣ符号化プロセスと逆ではあるが実質的に同様にＣＡＢＡＣを使用してビットストリームのシンタックス要素についての値を復号し得る。シンタックス要素は、ＣＴＵへのピクチャの分割情報と、ＣＴＵのＣＵを定義するための、ＱＴＢＴ構造などの対応する分割構造にしたがう各ＣＴＵの分割とを定義し得る。シンタックス要素は、ビデオデータのブロック（例えば、ＣＵ）についての予測情報および残差情報をさらに定義し得る。
【００５１】
[0062]  残差情報は、例えば、量子化された変換係数によって表され得る。ビデオデコーダ３００は、ブロックの量子化された変換係数を逆量子化および逆変換して、ブロックについての残差ブロックを再生し得る。ビデオデコーダ３００は、シグナリングされた予測モード（イントラ予測またはインター予測）および関連する予測情報（例えば、インター予測のための動き情報）を使用して、ブロックについての予測ブロックを形成する。次いでビデオデコーダ３００は、（サンプルごとのベースで）予測ブロックと残差ブロックとを組み合わせて、元のブロックを再生し得る。ビデオデコーダ３００は、ブロックの境界に沿った視覚的アーティファクトを低減するために、デブロッキングプロセスを実行するなどの追加の処理を実行し得る。
【００５２】
[0063]  本開示は、概して、シンタックス要素などの、ある特定の情報の「シグナリング」に言及し得る。「シグナリング」という用語は、一般に、符号化されたビデオデータを復号するために使用される値シンタックス要素および／または他のデータの通信を指し得る。すなわち、ビデオエンコーダ２００は、ビットストリーム中のシンタックス要素についての値をシグナリングし得る。一般に、シグナリングは、ビットストリーム中に値を生成することを指す。上述のように、ソースデバイス１０２は、実質的にリアルタイムに、または宛先デバイス１１６による後の取り出しのためにシンタックス要素を記憶デバイス１１２に記憶するときに起き得るなど、リアルタイムではなく、ビットストリームを宛先デバイス１１６にトランスポートし得る。
【００５３】
[0064]  図２Ａおよび図２Ｂは、例示的な四分木二分木（ＱＴＢＴ）構造１３０と、対応するコーディングツリーユニット（ＣＴＵ）１３２とを例示する概念図である。実線は四分木分割を表し、点線は二分木分割を示す。二分木の各分割（すなわち、非リーフ）ノードでは、どの分割タイプ（すなわち、水平または垂直）が使用されるかを示すために１つのフラグがシグナリングされ、ここで、この例では、０が水平分割を示し、１が垂直分割を示す。四分木分割の場合、四分木ノードが等しいサイズの４つのサブブロックへと水平および垂直にブロックを分割することから、分割タイプを示す必要はない。したがって、ＱＴＢＴ構造１３０の領域ツリーレベル（すなわち、実線）についてのシンタックス要素（分割情報など）と、ＱＴＢＴ構造１３０の予測ツリーレベル（すなわち、破線）についてのシンタックス要素（分割情報など）とを、ビデオエンコーダ２００が符号化し得、ビデオデコーダ３００が復号し得る。ＱＴＢＴ構造１３０の終端リーフノードによって表されるＣＵについての予測および変換データなどのビデオデータを、ビデオエンコーダ２００は符号化し得、ビデオデコーダ３００は復号し得る。
【００５４】
[0065]  概して、図２ＢのＣＴＵ１３２は、第１および第２のレベルにおけるＱＴＢＴ構造１３０のノードに対応するブロックのサイズを定義するパラメータに関連付けられ得る。これらのパラメータは、ＣＴＵサイズ（サンプル中のＣＴＵ１３２のサイズを表す）、最小四分木サイズ（許容される最小四分木リーフノードサイズを表すＭｉｎＱＴＳｉｚｅ）、最大二分木サイズ（許容される最大二分木ルートノードサイズを表すＭａｘＢＴＳｉｚｅ）、最大二分木深度（許容される最大二分木深度を表すＭａｘＢＴＤｅｐｔｈ）、および最小二分木サイズ（許容される最小二分木リーフノードサイズを表すＭｉｎＢＴＳｉｚｅ）を含み得る。
【００５５】
[0066]  ＣＴＵに対応するＱＴＢＴ構造のルートノードは、ＱＴＢＴ構造の第１のレベルにおいて４つの子ノードを有し得、それらの各々は四分木分割にしたがって分割され得る。すなわち、第１のレベルのノードは、リーフノード（子ノードを有さない）であるか、または４つの子ノードを有する。ＱＴＢＴ構造１３０の例は、分岐のための実線を有する親ノードおよび子ノードを含むノードを表す。第１のレベルのノードが、許容される最大二分木ルートノードサイズ（ＭａｘＢＴＳｉｚｅ）よりも大きくない場合、それらは、それぞれの二分木によってさらに分割されることができる。分割から生じるノードが、許容される最小二分木リーフノードサイズ（ＭｉｎＢＴＳｉｚｅ）または許容される最大二分木深度（ＭａｘＢＴＤｅｐｔｈ）に達するまで、１つのノードの二分木分割を繰り返すことができる。ＱＴＢＴ構造１３０の例は、分岐のための破線を有するノードを表す。二分木リーフノードは、コーディングユニット（ＣＵ）と呼ばれ、これは、さらなる分割なしに、予測（例えば、イントラピクチャ予測またはインターピクチャ予測）および変換のために使用される。上述のように、ＣＵは、「ビデオブロック」または「ブロック」とも呼ばれ得る。
【００５６】
[0067]  ＱＴＢＴ分割構造の１つの例では、ＣＴＵサイズは１２８×１２８（ルーマサンプルと２つの対応する６４×６４のクロマサンプル）として設定され、ＭｉｎＱＴＳｉｚｅは、１６×１６として設定され、ＭａｘＢＴＳｉｚｅは、６４×６４として設定され、ＭｉｎＢＴＳｉｚｅは（幅と高さの両方について）、４として設定され、ＭａｘＢＴＤｅｐｔｈは、４として設定される。四分木リーフノードを生成するために、最初に四分木分割がＣＴＵに適用される。四分木リーフノードは、１６×１６（すなわち、ＭｉｎＱＴＳｉｚｅ）から１２８×１２８（すなわち、ＣＴＵサイズ）までのサイズを有し得る。リーフ四分木ノードが１２８×１２８である場合、サイズがＭａｘＢＴＳｉｚｅ（すなわち、この例では６４×６４）を超えるので、二分木によってさらに分割されないことになる。そうでない場合、リーフ四分木ノードは、二分木によってさらに分割されることになる。したがって、四分木リーフノードは二分木のためのルートノードでもあり、二分木深度を０として有する。二分木深度がＭａｘＢＴＤｅｐｔｈ（この例では４）に達するとき、さらなる分割は許可されない。二分木ノードの幅がＭｉｎＢＴＳｉｚｅ（この例では４）に等しいとき、それはさらなる水平分割が許可されないことを示唆する。同様に、ＭｉｎＢＴＳｉｚｅに高さが等しい二分木ノードは、その二分木ノードに対してさらなる垂直分割が許可されないことを示唆する。上述したように、二分木のリーフノードはＣＵと呼ばれ、さらなる分割なく予測および変換にしたがってさらに処理される。
【００５７】
[0068]  このセクションでは、ビデオコーディング規格、特に、以前の規格の動きベクトル予測関連の技法を説明する。
【００５８】
[0069]  ビデオコーディング規格は、ＩＴＵ−Ｔ Ｈ．２６１、ＩＳＯ／ＩＥＣ ＭＰＥＧ−１ Ｖｉｓｕａｌ、ＩＴＵ−Ｔ Ｈ．２６２またはＩＳＯ／ＩＥＣ ＭＰＥＧ−２ Ｖｉｓｕａｌ、ＩＴＵ−Ｔ Ｈ．２６３、ＩＳＯ／ＩＥＣ ＭＰＥＧ−４ Ｖｉｓｕａｌ、およびＩＴＵ−Ｔ Ｈ．２６４（ＩＳＯ／ＩＥＣ ＭＰＥＧ−４ ＡＶＣとしても既知）を含み、そのスケーラブルビデオコーディング（ＳＶＣ）拡張およびマルチビュービデオコーディング（ＭＶＣ）拡張を含む。ＭＶＣの最新の共同ドラフトは、“Advanced video coding for generic audiovisual services”，ＩＴＵ−Ｔ勧告 Ｈ．２６４，２０１０年３月に記載されている。
【００５９】
[0070]  さらに、新たに開発されたビデオコーディング規格、すなわち、ＩＴＵ−Ｔ ＶＣＥＧ（Video Coding Experts Group）およびＩＳＯ／ＩＥＣ ＭＰＥＧ（Motion Picture Experts Group）のＪＣＴ−ＶＣ（Joint Collaboration Team on Video Coding）によって開発された高効率ビデオコーディング（ＨＥＶＣ）が存在する。ＨＥＶＣの最近のドラフトは、http://phenix.int-evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v34.zip から入手可能である。
【００６０】
[0071]  動き情報
[0072]  各ブロックについて、動き情報のセットが利用可能であり得る。動き情報のセットは、前方予測方向および後方予測方向についての動き情報を包含する。ここで、前方予測方向および後方予測方向は、現在ピクチャまたはスライスの参照ピクチャリスト０（ＲｅｆＰｉｃＬｉｓｔ０）および参照ピクチャリスト１（ＲｅｆＰｉｃＬｉｓｔ１）に対応する２つの予測方向である。「前方向」および「後方向」という用語は、必ずしも幾何学的な意味を有するわけではない。代わりに、それらは、どの参照ピクチャリストに動きベクトルが基づくかを区別するために使用される。前方向予測は、参照リスト０に基づいて形成された予測を意味し、後方向予測は、参照リスト１に基づいて形成された予測を意味する。参照リスト０と参照リスト１との両方が所与のブロックについての予測を形成するために使用されるケースでは、双方向予測と呼ばれる。
【００６１】
[0073]  所与のピクチャまたはスライスについて、１つの参照ピクチャリストのみが使用される場合、ピクチャまたはスライス内部のすべてのブロックが前方向予測される。所与のピクチャまたはスライスについて両方の参照ピクチャリストが使用される場合、ピクチャまたはスライス内部のブロックは前方向予測され得るか、または後方向予測され得るか、または双方向予測され得る。
【００６２】
[0074]  各予測方向について、動き情報は、参照インデックスおよび動きベクトルを包含する。参照インデックスは、対応する参照ピクチャリスト（例えば、ＲｅｆＰｉｃＬｉｓｔ０またはＲｅｆＰｉｃＬｉｓｔ１）中の参照ピクチャを識別するために使用される。動きベクトルは、水平成分と垂直成分の両方を有し、その各々が、水平方向および垂直方向それぞれに沿ったオフセット値を示す。いくつかの説明では、簡潔さのために、「動きベクトル」という言葉が、動きベクトルとそれに関連付けられた参照インデックスの両方を示すように、動き情報と交換可能に使用され得る。
【００６３】
[0075]  ＰＯＣ
[0076]  ピクチャ順序カウント（ＰＯＣ：picture order count）が、ピクチャの表示順序を識別するためにビデオコーディング規格で使用される。１つのコーディングされたビデオシーケンス内の２つのピクチャが同じＰＯＣ値を有し得るケースがあるが、典型的には、１つのコーディングされたビデオシーケンス内では起こらない。複数のコーディングされたビデオシーケンスが１つのビットストリーム中に存在するとき、ＰＯＣの値が同じピクチャは、復号順序に関して互いにより近くてもよい。
【００６４】
[0077]  ピクチャのＰＯＣ値は、典型的には、参照ピクチャリスト構築、ＨＥＶＣにおけるような参照ピクチャセットの導出、および動きベクトルスケーリングのために使用される。
【００６５】
[0078]  予測ユニット
[0079]  予測ユニット（ＰＵ）は、同じ予測情報を共有するサンプルの基本ユニットを指す。インター予測ＰＵでは、予測情報は、動き情報の同じセット、またはＰＵについての動き情報を導出するための同じ方法であり得る。１つの例では、ＰＵは、ＨＥＶＣブロック構造におけるものと同じであり得、他のブロック分割構造、四分木＋二分木分割、マルチタイプツリー分割などにおける基本ブロックでもあり得る。
【００６６】
[0080]  サブＰＵは、サンプルが動き情報の同じセットを共有する、ＰＵ中のサブブロックである。サブＰＵレベルの動きでは、ＰＵ中のサンプルは、動き情報導出のための同じ方法／モデルを共有するが、サブＰＵは、動き情報のそれ自体のセットを有することができ、同じＰＵ中の他のサブＰＵとは異なり得る。
【００６７】
[0081]  図３は、本明細書で説明される、動きベクトル予測子導出の例示的なフローチャートを例示する。動きベクトル予測子候補の２つのリストが、３次元領域における隣接ブロックの情報から導出される。デコーダは、ビットストリームから、復号されたシンタックス要素ｉｓ＿ｓｕｂ＿ｐｕ＿ｍｏｔｉｏｎ＿ｆｌａｇにしたがってリストを適応的に選択する。
【００６８】
[0082]  １つの例では、ｓｕｂ＿ｐｕリストは、現在ブロックが所定の値よりも大きい場合にのみ存在し得る。別の例では、ブロックは、サブＰＵのみ、例えば、４×４ブロックを包含し得、フラグは次いで、動き情報生成がサブＰＵ方法に基づくか否かを示す。２つのリストは、異なる数の動き予測候補を含み得、それらは、ＳＰＳ、ＰＰＳ、またはスライスヘッダ中で事前定義またはシグナリングされ得る。隣接ブロックは、現在ピクチャ中の空間隣接物または前にコーディングされたピクチャ中の時間隣接物であり得る。
【００６９】
[0083]  図３に例示するように、２つのリストの導出プロセスについて説明する。３００において、デコーダは、フラグがアクティブであるか否かを決定する。フラグがアクティブでないとデコーダが決定した場合、デコーダは３０２に進む。フラグがアクティブである場合、デコーダは３０６に進む。
【００７０】
[0084]  ３０２において、ＰＵレベル動き予測候補の第１のリストが導出される。３０６において、サブＰＵレベル動き予測候補の第２のリストが導出される。ＰＵレベル動き予測候補とは、同じＰＵ中のすべてのピクセルが動き情報の同じセットを共有することを意味する。サブＰＵレベル動き予測候補とは、同じサブＰＵ中のすべてのピクセルが動き情報の同じセットを共有するが、ＰＵ中の異なるサブＰＵが動き情報の異なるセットを有し得ることを意味する。動き情報のセットが、インター予測方向、複数の参照を使用する場合の単数または複数の参照ピクチャインデックス、複数の参照を使用する場合の単数または複数の動きベクトルを含むことができる。
【００７１】
[0085]  ＰＵレベル動きベクトル候補リストの一例は、ＨＥＶＣマージ候補リストである。サブＰＵレベル動き予測の例は、限定するものではないが、アフィン動きベクトル予測（アフィン）、代替時間動きベクトル予測（ＡＴＭＶＰ）、空間時間動きベクトル予測（ＳＴＭＶＰ）、平面動きベクトル予測、およびパターンマッチ動きベクトル導出（ＰＭＶＤ）等を含む。例示的なシンタックステーブルを以下の表１に示す。シンタックス要素ｓｕｂ＿ｐｕ＿ｍｏｔｉｏｎ＿ｉｄｘは、サブＰＵレベル動き予測候補リスト中の選択された候補を示すために使用され得、シンタックス要素ｐｕ＿ｍｏｔｉｏｎ＿ｉｄｘは、ＰＵレベル動き予測候補リスト中の選択された候補を示すために使用される。
【００７２】
【表１】
2021527999.tif 000003
【００７３】
[0086]  別の方法では、ＰＵレベル動きベクトル候補は２つのグループに分割され得る。ｉｓ＿ｓｕｂ＿ｐｕ＿ｍｏｔｉｏｎ＿ｆｌａｇは、選択された候補がＰＵレベル動き情報候補の第１のグループにないことを示すシンタックスをデコーダが受信するときにシグナリングされる。ｉｓ＿ｓｕｂ＿ｐｕ＿ｍｏｔｉｏｎ＿ｆｌａｇは、インデックスのうちの１つとしてＰＵレベルマージインデックスにおいて暗黙的にシグナリングされ得る。次いで、ｉｓ＿ｓｕｂ＿ｐｕ＿ｍｏｔｉｏｎ＿ｆｌａｇが真である場合、サブＰＵレベルマージインデックスがさらにシグナリングされることになる。１つの例では、ＰＵレベル動き予測候補リスト挿入順序は、Ａ→Ｂ→Ｓ→Ｃ→Ｄ→Ｅである。Ａ、Ｂ、Ｃ、Ｄ、Ｅは、ＰＵレベル動き予測候補を示し、Ｓは、ｓｕｂ＿ｐｕ＿ｍｏｔｉｏｎ＿ｆｌａｇのインジケータである。Ｓが選択された場合、ｓｕｂ＿ｐｕ＿ｍｏｔｉｏｎ＿ｆｌａｇは真であると推測される。Ａの１つの例は、左下の空間マージ候補であり得、Ｂの１つの例は、右上の空間マージ候補であり得る。他の挿入順序も適用され得ることに留意されたい。
【００７４】
[0087]  サブＰＵレベル動き予測候補が、上述したすべての方法においてグループ化されることに留意されたい。
【００７５】
[0088]  動きベクトル予測候補選択のためのシグナリング
[0089]  動き予測候補がサブＰＵレベルであるかどうかを示すために、シンタックス要素ｉｓ＿ｓｕｂ＿ｐｕ＿ｍｏｔｉｏｎ＿ｆｌａｇが最初に使用される。ｉｓ＿ｓｕｂ＿ｐｕ＿ｍｏｔｉｏｎ＿ｆｌａｇは、１つのビン（０／１）を使用して２値化され、コンテキストベースのバイナリ算術コーダによってコーディングされ得る。コンテキストは、ブロック分割ツリーにおけるＰＵサイズ／エリアまたはＰＵ深度に依存し得る。より大きいＰＵは、より小さいＰＵよりもサブＰＵレベル動きベクトル予測を選択するのがより頻繁になる傾向があり得る。コンテキストはまた、空間／時間隣接ブロックからのｓｕｂ＿ｐｕ＿ｍｏｔｉｏｎ＿ｆｌａｇにも依存し得る。現在のＰＵがサブＰＵ動きを使用する可能性は、隣接ブロックがサブＰＵ動きを有する場合に高くなる。
【００７６】
[0090]  ｉｓ＿ｓｕｂ＿ｐｕ＿ｍｏｔｉｏｎ＿ｆｌａｇが真（「１」）である場合、シンタックス要素ｓｕｂ＿ｐｕ＿ｍｏｔｉｏｎ＿ｉｄｘが、サブＰＵ動き予測候補を導出するための方法を示すために使用される。方法の総数、すなわち、サブＰＵレベル動き予測候補の総数ｎｕｍ＿ｓｕｂ＿ｐｕ＿ｍｏｔｉｏｎは、高レベルシンタックスにおいてシグナリングされることができる。ｓｕｂ＿ｐｕ＿ｍｏｔｉｏｎ＿ｉｄｘは、ｎｕｍ＿ｓｕｂ＿ｐｕ＿ｍｏｔｉｏｎに依存して短縮単項コード（truncated unary code）を使用して２値化されることができる。しかしながら、他の２値化方法を適用することもできる。
【００７７】
[0091]  ｉｓ＿ｓｕｂ＿ｐｕ＿ｍｏｔｉｏｎ＿ｆｌａｇが偽（「０」）である場合、シンタックス要素ｎｏｒ＿ｐｕ＿ｍｏｔｉｏｎ＿ｉｄｘが、ＰＵレベル動き予測候補を導出するための方法を示すために使用される。ＰＵレベル動きベクトル予測候補の総数、ｎｕｍ＿ｎｏｒ＿ｐｕ＿ｍｏｔｉｏｎは、高レベルシンタックスにおいてシグナリングされることができる。ｎｏｒ＿ｐｕ＿ｍｏｔｉｏｎ＿ｉｄｘは、ｎｕｍ＿ｎｏｒ＿ｐｕ＿ｍｏｔｉｏｎに依存して短縮単項コードを使用して２値化されることができる。しかしながら、他の２値化方法を適用することもできる。
【００７８】
[0092]  ＰＵレベル動き予測候補の導出
[0093]  ＰＵレベル動き予測候補は、ＨＥＶＣと同様に、空間または時間隣接コーディングブロックから導出されることができる。ＨＥＶＣマージモードでは、
[0094]  ＨＥＶＣでは、ＭＶ候補リストは、マージモードについては最大で５つの候補を、ＡＭＶＰモードについては２つの候補のみを包含する。マージ候補は、動き情報のセット、例えば、両方の参照ピクチャリスト（リスト０およびリスト１）に対応する動きベクトルと参照インデックスとを包含し得る。マージ候補がマージインデックスによって識別される場合、参照ピクチャは、現在ブロックの予測のために使用され、ならびに関連する動きベクトルが決定される。
【００７９】
[0095]  上記に基づいて、１つまたは複数の動きベクトル予測子が、復号された候補インデックスに基づいて選択される。
【００８０】
[0096]  ＨＥＶＣマージモードでは、ブロック４００の最大４つまでの空間ＭＶ候補４０２、４０４、４０６、および４０８が、図４に示す順序で導出されることができる。順序は次の通りであり、左（０，Ａ１）、上（１，Ｂ１）、右上（２，Ｂ０）、左下（３，Ａ０）、および左上（４，Ｂ２）である。
【００８１】
[0097]  ここで、ＨＥＶＣにおける時間隣接候補を説明する。時間動きベクトル予測子（ＴＭＶＰ）候補が、有効かつ利用可能である場合、空間動きベクトル候補の後にＭＶ候補リストへと追加される。ＴＭＶＰ候補導出のための主要なブロックロケーションは、ブロック「Ｔ」５００として図５に示す、コロケートされたＰＵの外の右下ブロックであり、空間隣接候補を生成するために使用される上ブロックおよび左ブロックに対するバイアスを補償する。しかしながら、ブロック５０２が現在のＣＴＢ行の外にロケートされる場合または動き情報が利用可能でない場合、当該ブロックは、ＰＵの中心ブロック５０４と置き換えられる。ＴＭＶＰ候補についての動きベクトルは、スライスレベルで示される、コロケートされたピクチャのコロケートされたＰＵから導出される。コロケートされたＰＵについての動きベクトルは、コロケートされたＭＶと呼ばれる。
【００８２】
[0098]  サブＰＵレベル動き予測候補の導出
[0099]  サブＰＵレベル動き予測候補は、限定するものではないが、アフィン動き予測、代替時間動きベクトル予測（ＡＴＭＶＰ）、空間時間動きベクトル予測（ＳＴＭＶＰ）、平面動きベクトル予測、パターンマッチ動きベクトル導出（ＰＭＶＤ）等を含むことができる。以下に、これらのサブＰＵレベル動き予測の例を例示する。しかしながら、いくつかの変形形態または他のサブＰＵレベル動き予測を追加することもできる。
【００８３】
[0100]  アフィン動き予測
[0101]  ４パラメータアフィン動き予測方法では、ブロックの動きベクトルフィールドは、数式（１）によって記述される。
【００８４】
【数１】
2021527999.tif 000004
【００８５】
[0102]  ここで、（ｗ，ｈ）はブロックのサイズであり、（ｘ，ｙ）は座標である。（ｖ0x，ｖ0y）は、左上隅の制御点の動きベクトルであり、（ｖ1x，ｖ1y）は、右上隅の制御点の動きベクトルである。
【００８６】
[0103]  ６パラメータアフィン動き予測方法では、ブロックの動きフィールドは、数式（２）によって記述される。
【００８７】
【数２】
2021527999.tif 000005
【００８８】
[0104]  ここで、さらに、（ｖ2x，ｖ2y）は、左下隅の制御点の動きベクトルである。
【００８９】
[0105]  サブＰＵベースのアフィン動き予測では、サブＰＵのＭＶは、サブＰＵの中心におけるＭＶを計算することによって導出されることができる。代替的に、サブＰＵのサイズにしたがって（ｗ，ｈ）および（ｘ，ｙ）をスケールダウンすることができる。
【００９０】
[0106]  １つの方法では、（ｖix，ｖiy）は、現在ブロックが前にコーディングされた隣接ブロックと同じアフィン動きモデルを共有することを考慮して、アフィン動きによって前にコーディングされた隣接ブロックから導出されることができる。
【００９１】
[0107]  別の方法では、（ｖix，ｖiy）は、隣接コーディングブロックにおいて動きベクトルによって導出されることができる。例えば、図６に示すように、（ｖ0x，ｖ0y）は、ブロックＡ６００、Ｂ６０２、またはＣ６０４における動きベクトルから導出されることができ、（ｖ1x，ｖ1y）は、ブロックＣ６０６またはＤ６０８における動きベクトルから導出されることができ、（ｖ2x，ｖ2y）は、ブロックＥ６１０またはＦ６１２から導出されることができる。
【００９２】
[0108]  代替時間動きベクトル予測
[0109]  代替時間動きベクトル予測（ＡＴＭＶＰ）方法（または、高度時間動きベクトル予測と呼ばれるときもある）では、時間動きベクトル予測（ＴＭＶＰ）は、現在ＰＵのサブＰＵから動き情報（動きベクトルおよび参照インデックスを含む）の複数のセットをフェッチすることによって修正される。
【００９３】
[0110]  空間時間動きベクトル予測
[0111]  空間時間動きベクトル予測方法では、サブＰＵの動きベクトルは、ラスタ走査順序にしたがって、再帰的に導出される。図７は、ＳＴＭＶＰの概念を例示する。４つの４×４サブＰＵ Ａ、Ｂ、Ｃ、およびＤを包含する８×８ ＰＵを考える。現在フレーム中の隣接４×４ブロックは、ａ、ｂ、ｃ、およびｄとラベル付けされる。サブＣＵ Ａのための動き導出は、その２つの空間隣接物を識別することによって開始する。第１の隣接物は、サブＣＵ Ａの上のＮ×Ｎブロックである（ブロックｃ）。このブロックｃが利用可能でない、またはイントラコーディングされている場合、サブＣＵ Ａの上の他のＮ×Ｎブロックが（ブロックｃから開始して左から右に）チェックされる。第２の隣接物は、サブＣＵ Ａの左のブロックである（ブロックｂ）。ブロックｂが利用可能でない、またはイントラコーディングされている場合、サブＣＵ Ａの左の他のブロックが（ブロックｂから開始して上から下に）チェックされる。各リストについての隣接ブロックから得られた動き情報は、所与のリストのための第１の参照フレームにスケーリングされる。次に、サブブロックＡの時間動きベクトル予測子（ＴＭＶＰ）が、ＨＥＶＣにおいて指定されたＴＭＶＰ導出の同じ手順に従うことによって導出される。ロケーションＤにおけるコロケートされたブロックの動き情報がフェッチされ、それに応じてスケーリングされる。最後に、動き情報を取り出してスケーリングした後、すべての利用可能な動きベクトル（最大３つまで）が、各参照リストについて別々に平均化される。平均化された動きベクトルは、現在のサブＣＵの動きベクトルとして割り当てられる。
【００９４】
[0112]  パターンマッチ動きベクトル導出
[0113]  パターンマッチ動きベクトル導出（ＰＭＭＶＤ）方法は、フレームレートアップコンバージョン技法に基づく。動き導出プロセスは２つのステップを有する。ＰＵレベルの動き探索が最初に実行され、次いでサブＰＵレベル動きリファインメントが続く。ＰＵレベルでは、最初の動きベクトルが、バイラテラルマッチング（bilateral matching）またはテンプレートマッチング（template matching）に基づいてＰＵ全体について導出される。最初に、ＭＶ候補のリストが生成され、最小のマッチングコストをもたらす候補が、さらなるＰＵレベルのリファインメントのための開始点として選択される。次いで開始点の周囲でのバイラテラルマッチングまたはテンプレートマッチングに基づく局所的探索が実行され、最小マッチングコストをもたらすＭＶが、ＣＵ全体についてのＭＶとして得られる。その後に、動き情報は、開始点として導出されたＣＵ動きベクトルを用いてサブＰＵレベルでさらにリファインされる。
【００９５】
[0114]  バイラテラルマッチングの概念を図８に例示する。バイラテラルマッチングは、２つの異なる参照ピクチャ中の、現在ブロックの動き軌跡に沿う２つのブロック間の最もよくマッチするものを見つけることによって、動き情報を導出するために使用される。動き軌跡が連続的であると仮定して、２つの参照ブロックを指す動きベクトルＭＶ０およびＭＶ１は、現在ピクチャと２つの参照ピクチャとの間の時間的距離、すなわち、ＴＤ０およびＴＤ１に比例するものとする。特別なケースとして、現在ピクチャが時間的に２つの参照ピクチャ間にあり、現在ピクチャから２つの参照ピクチャまでの時間的距離が同じであるとき、バイラテラルマッチングは、ミラーベースの双方向ＭＶとなる。
【００９６】
[0115]  図９に例示するテンプレートマッチは、現在ピクチャ中のテンプレート（現在ブロックの上部および／または左の隣接ブロック）と参照ピクチャ中のブロック（テンプレートと同じサイズ）との間の最もよくマッチするものを見つけることによって動き情報を導出するために使用される。
【００９７】
[0116]  平面動きベクトル予測
[0117]  平面動きベクトル予測は、以下のように４×４ブロックベースで水平および垂直線形補間を平均化することによって達成される。
【００９８】
【数３】
2021527999.tif 000006
【００９９】
[0118]  ＷおよびＨは、ブロックの幅および高さを示す。（ｘ，ｙ）は、左上隅のサブブロックに対する現在サブブロックの座標である。すべての距離は、ピクセル距離を４で割ったものによって示される。Ｐ（ｘ，ｙ）は、現在サブブロックの動きベクトルである。
【０１００】
[0119]  ロケーション（ｘ，ｙ）についての水平予測Ｐh（ｘ，ｙ）および垂直予測Ｐv（ｘ，ｙ）は、以下のように計算される。
【０１０１】
【数４】
2021527999.tif 000007
【０１０２】
[0120]  ここで、Ｌ（−１，ｙ）およびＲ（Ｗ，ｙ）は、現在ブロックの左および右の４×４ブロックの動きベクトルである。Ａ（ｘ，−１）およびＢ（ｘ，Ｈ）は、図９に示すように、現在ブロックの上および下の４×４ブロックの動きベクトルである。
【０１０３】
[0121]  左の列および上の行の隣接ブロックの参照動き情報は、現在ブロックの空間隣接ブロックから導出される。
【０１０４】
[0122]  右の列および下の行の隣接ブロックの参照動き情報は、以下のように導出される。  
１）右下の時間隣接４×４ブロックの動き情報を導出する。  
２）右列の隣接４×４ブロックの動きベクトルを、右上の隣接４×４ブロックの動き情報と共に右下の隣接４×４ブロックの導出された動き情報を使用して、Ｒ（Ｗ，ｙ）＝（（Ｈ−ｙ−１）×ＡＲ＋（ｙ＋１）×ＢＲ）／Ｈとして算出する。  
３）下の行の隣接４×４ブロックの動きベクトルを、左下の隣接４×４ブロックの動き情報と共に右下の隣接４×４ブロックの導出された動き情報を使用して、Ｂ（ｘ，Ｈ）＝（（Ｗ−ｘ−１）×ＢＬ＋（ｘ＋１）×ＢＲ）／Ｗとして算出する。
【０１０５】
[0123]  ここで、図１０に示すように、ＡＲは、右上の空間隣接４×４ブロックの動きベクトルであり、ＢＲは、右下の時間隣接４×４ブロックの動きベクトルであり、ＢＬは、左下の空間隣接４×４ブロックの動きベクトルである。
【０１０６】
[0124]  各リストについての隣接ブロックから得られた動き情報は、所与のリストのための第１の参照ピクチャにスケーリングされる。
【０１０７】
[0125]  候補リスト挿入
[0126]  利用可能な場合、サブＰＵレベル動き予測候補は、アフィン→ＡＴＭＶＰ→ＳＴＭＶＰ→ＰＭＭＶＤ→平面（Planar）、というデフォルト順序でリストに挿入される。デフォルト順序は、スライスタイプ、時間レイヤ、アフィン動きモデル、および／または時間動き予測子の利用可能性に基づいて事前定義またはシグナリングされ得る。デフォルト順序はまた、ブロックタイプ、ブロック形状、またはブロックサイズに基づいて異なり得る。サブＰＵレベル動き予測候補の最大数は、高レベルシンタックスによって示される、利用可能なサブＰＵレベル動き予測候補の総数および／または所定の数によって決定される。１つの例では、所定の数が３であり、かつアフィン、ＡＴＭＶＰ、ＳＴＭＶＰ、ＰＭＭＶＤ、および平面候補のすべてが利用可能である場合、最大数は３である。しかし、アフィンおよびＡＴＭＶＰのみが利用可能である場合、最大数は２である。最大数が０である場合、ｉｓ＿ｓｕｂ＿ｐｕ＿ｍｏｔｉｏｎ＿ｆｌａｇは偽（「０」）であると推測され、ビットストリームにおいてシグナリングされない。
【０１０８】
[0127]  他のデフォルト候補順序も使用することができる。  
１つの例では、アフィン→ＰＭＭＶＤ→ＡＴＭＶＰ→ＳＴＭＶＰ→平面、である。  
別の例では、ＰＭＭＶＤ→アフィン→ＡＴＭＶＰ→ＳＴＭＶＰ→平面、である。  
別の例では、２つ以上のアフィン候補が使用され得る。アフィン１→アフィン２→ＰＭＭＶＤ→ＡＴＭＶＰ→ＳＴＭＶＰ→平面  
または、アフィン１→ＡＴＭＶＰ→アフィン２→平面
[0128]  優先的な候補再順序付け
[0129]  デフォルトサブＰＵレベル動き予測候補リストは、隣接コーディングブロックにおけるそれらの発生に基づいて再順序付けされることができる。１つの例では、隣接コーディングブロックにおける発生をより多く有する候補は、リスト中のより低いインデックス位置に入れられる。
【０１０９】
[0130]  部分的に優先的な候補再順序付け
[0131]  候補の再順序付けの複雑さを低減するために、優先的な候補再順序付けは、１つまたは複数のサブリストにのみ適用される。例えば、デフォルト順序の候補１−２、３−４は、隣接コーディングブロックにおけるそれらの出現に基づいて別々に再順序付けられる。
【０１１０】
[0132]  プルーニング（Pruning）
[0133]  複雑さを低減するために、サブＰＵ候補リストにプルーニングも部分プルーニングも適用されなくてよい。１つの例では、ＡＴＭＶＰ、ＳＴＭＶＰ、および平面間のプルーニングが適用され得るが、アフィンとサブＰＵ候補の残りとの間にプルーニングは適用されない。
【０１１１】
[0134]  別の例では、プルーニングは、所定の値以下であるサブＰＵの数にのみ適用される。
【０１１２】
[0135]  サブＰＵ動き予測候補の代替シグナリング方法
[0136]  サブＰＵ動き予測候補の選択は、インデックスの代わりに候補挿入順序にしたがってフラグをイネーブルにすることによってシグナリングされることができる。１つの例では、挿入順序がアフィン→ＰＭＭＶＤ→ＡＴＭＶＰ→ＳＴＭＶＰ→平面である場合、シグナリングは表２に示す通りである。
【０１１３】
[0137]  別の代替方法では、サブＰＵ動き予測候補は、いくつかのサブグループにグループ化されることができる。例えば、アフィン、平面はサブグループ１にグループ化され、ＡＴＭＶＰおよびＳＴＭＶＰはサブグループ２にグループ化され、ＰＭＭＶＤはさらに別のサブグループ３にグループ化される。例示的なシグナリングを表３に示す。シンタックスｐｍｍｖｄ＿ｆｌａｇは、それがＰＭＭＶＤ候補であるか否かを示すために最初にシグナリングされる。次いで、それがＰＭＭＶＤ候補でない場合、それがサブグループ１候補であるかどうかを示すために、別のシンタックス要素ｓｕｂ＿ｇｒｏｕｐ１＿ｆｌａｇがシグナリングされる。ｓｕｂ＿ｇｒｏｕｐ１＿ｆｌａｇが真であり、それがサブグループ１候補であることを示す場合、それがアフィン候補であるかどうかを示すために、ａｆｆｉｎｅ＿ｆｌａｇがシグナリングされる。それがアフィン候補でない場合、それが平面候補であることを示すために、ｐｌａｎａｒ＿ｍｖ＿ｆｌａｇが真として設定される。ｓｕｂ＿ｇｒｏｕｐ１＿ｆｌａｇが偽である場合、それがＡＴＭＶＰ候補であるかどうかを示すために、ａｔｍｖｐ＿ｆｌａｇがシグナリングされる。それがＡＴＭＶＰ候補でない場合、それがＳＴＭＶＰ候補であることを示すために、ｓｔｍｖｐ＿ｆｌａｇが真として設定される。
【０１１４】
【表２】
2021527999.tif 000008
【０１１５】
【表３】
2021527999.tif 000009
【０１１６】
[0138]  表２および表３では、例示しやすくするために利用可能性チェックが無視されていることに留意されたい。対応する候補が利用可能でない場合、フラグは偽（「０」）であると推測される。また、グループ化の他の変形形態も適用できることに留意されたい。
【０１１７】
[0139]  図１１は、本開示の技法を実行し得る例示的なビデオエンコーダ２００を例示するブロック図である。図１１は説明を目的として提供されており、本開示に広く例示および説明される技法を限定するものとみなされるべきではない。説明を目的として、本開示は、ＨＥＶＣビデオコーディング規格および開発中のＨ．２６６ビデオコーディング規格などのビデオコーディング規格のコンテキストでビデオエンコーダ２００を説明する。しかしながら、本開示の技法は、これらのビデオコーディング規格に限定されず、概してビデオ符号化および復号に適用可能である。
【０１１８】
[0140]  図１１の例では、ビデオエンコーダ２００は、ビデオデータメモリ２３０、モード選択ユニット２０２、残差生成ユニット２０４、変換処理ユニット２０６、量子化ユニット２０８、逆量子化ユニット２０２、逆変換処理ユニット２１２、再構成ユニット２１４、フィルタユニット２１６、復号ピクチャバッファ（ＤＰＢ）２１８、およびエントロピー符号化ユニット２２０を含む。
【０１１９】
[0141]  ビデオデータメモリ２３０は、ビデオエンコーダ２００の構成要素によって符号化されることになるビデオデータを記憶し得る。ビデオエンコーダ２００は、ビデオデータメモリ２３０に記憶されたビデオデータを、例えば、ビデオソース１０４（図１）から受信し得る。ＤＰＢ２１８は、ビデオエンコーダ２００による後続のビデオデータの予測時に使用するための参照ビデオデータを記憶する参照ピクチャメモリとして働き得る。ビデオデータメモリ２３０およびＤＰＢ２１８は、同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）を含むＤＲＡＭ、磁気抵抗ＲＡＭ（ＭＲＡＭ）、抵抗ＲＡＭ（ＲＲＡＭ（登録商標））、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ２３０およびＤＰＢ２１８は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ２３０は、例示されるように、ビデオエンコーダ２００の他の構成要素とともにオンチップであり得るか、またはそれらの構成要素に対してオフチップであり得る。
【０１２０】
[0142]  本開示では、ビデオデータメモリ２３０への言及は、そのように明記されていない限り、ビデオエンコーダ２００内部のメモリ、またはそのように明記されていない限り、ビデオエンコーダ２００外部のメモリに限定されると解釈されるべきではない。むしろ、ビデオデータメモリ２３０への言及は、ビデオエンコーダ２００が符号化のために受信するビデオデータ（例えば、符号化されることになる現在ブロックについてのビデオデータ）を記憶する参照メモリとして理解されたい。図１のメモリ１０６はまた、ビデオエンコーダ２００の様々なユニットからの出力の一時記憶を提供し得る。
【０１２１】
[0143]  図１１の様々なユニットは、ビデオエンコーダ２００によって実行される動作を理解する助けとなるために例示されている。これらユニットは、固定機能回路、プログラマブル回路、またはこれらの組合せとしてインプリメントされ得る。固定機能回路は、特定の機能を提供する回路を指し、実行されることができる動作に関して予め設定されている。プログラマブル回路は、様々なタスクを実行するようにプログラムされることができる回路を指し、実行されることができる動作において柔軟な機能を提供する。例えば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義された様式でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、（例えば、パラメータを受信またはパラメータを出力するように）ソフトウェア命令を実行し得るが、固定機能回路が実行する動作のタイプは概して不変である。いくつかの例では、ユニットの１つまたは複数は、別個の回路ブロック（固定機能またはプログラマブル）であり得、いくつかの例では、１つまたは複数のユニットは、集積回路であり得る。
【０１２２】
[0144]  ビデオエンコーダ２００は、プログラマブル回路から形成された、演算論理ユニット（ＡＬＵ）、初等関数ユニット（ＥＦＵ）、デジタル回路、アナログ回路、および／またはプログラマブルコアを含み得る。ビデオエンコーダ２００の動作がプログラマブル回路によって実行されるソフトウェアを使用して実行される例では、ビデオエンコーダ２００が受信し実行するソフトウェアのオブジェクトコードを、メモリ１０６（図１）が記憶し得るか、またはビデオエンコーダ２００内の別のメモリ（図示せず）がそのような命令を記憶し得る。
【０１２３】
[0145]  ビデオデータメモリ２３０は、受信されたビデオデータを記憶するように構成される。ビデオエンコーダ２００は、ビデオデータメモリ２３０からビデオデータのピクチャを取り出し、ビデオデータを残差生成ユニット２０４およびモード選択ユニット２０２に提供し得る。ビデオデータメモリ２３０内のビデオデータは、符号化されることになる生ビデオデータであり得る。
【０１２４】
[0146]  モード選択ユニット２０２は、動き推定ユニット２２２、動き補償ユニット２２４、およびイントラ予測ユニット２２６を含む。モード選択ユニット２０２は、他の予測モードにしたがってビデオ予測を実行するための追加の機能ユニットを含み得る。例として、モード選択ユニット２０２は、パレットユニット、（動き推定ユニット２２２および／または動き補償ユニット２２４の一部であり得る）イントラブロックコピーユニット、アフィンユニット、線形モデル（ＬＭ）ユニット、または同様のものを含み得る。
【０１２５】
[0147]  モード選択ユニット２０２は、概して、複数の符号化パスを調整して、符号化パラメータの組合せとそのような組合せについての結果として得られるレートひずみ値とをテストする。符号化パラメータは、ＣＴＵのＣＵへの分割、ＣＵのための予測モード、ＣＵの残差データのための変換タイプ、ＣＵの残差データのための量子化パラメータなどを含み得る。モード選択ユニット２０２は、最終的に、他のテストされた組合せよりも良好なレートひずみ値を有する符号化パラメータの組合せを選択し得る。
【０１２６】
[0148]  ビデオエンコーダ２００は、ビデオデータメモリ２３０から取り出されたピクチャを一連のＣＴＵに分割し、スライス内に１つまたは複数のＣＴＵをカプセル化し得る。モード選択ユニット２１０は、上述したＨＥＶＣの四分木構造またはＱＴＢＴ構造などのツリー構造にしたがってピクチャのＣＴＵを分割し得る。上述したように、ビデオエンコーダ２００は、ツリー構造にしたがってＣＴＵを分割することから１つまたは複数のＣＵを形成し得る。そのようなＣＵは、一般に「ビデオブロック」または「ブロック」とも呼ばれ得る。
【０１２７】
[0149]  概して、モード選択ユニット２０２はまた、現在ブロック（例えば、現在のＣＵ、またはＨＥＶＣでは、ＰＵとＴＵとのオーバーラップ部分）についての予測ブロックを生成するように、その構成要素（例えば、動き推定ユニット２２２、動き補償ユニット２２４、およびイントラ予測ユニット２２６）を制御する。現在ブロックのインター予測の場合、動き推定ユニット２２２は、１つまたは複数の参照ピクチャ（例えば、ＤＰＢ２１８に記憶された１つまたは複数の前にコーディングされたピクチャ）中の１つまたは複数のよくマッチする参照ブロックを識別するために動き探索を実行し得る。特に、動き推定ユニット２２２は、例えば、差分絶対値和（ＳＡＤ）、差分二乗和（ＳＳＤ）、平均絶対差（ＭＡＤ）、平均二乗差（ＭＳＤ）、または同様のものにしたがって、可能性のある参照ブロックが現在ブロックにどのくらい類似しているかを表す値を計算し得る。動き推定ユニット２２２は、概して、現在ブロックと考慮中の参照ブロックとの間のサンプルごとの差分を使用して、これらの計算を実行し得る。動き推定ユニット２２２は、現在ブロックに最もよくマッチする参照ブロックを示す、これらの計算から生じる最低値を有する参照ブロックを識別し得る。
【０１２８】
[0150]  動き推定ユニット２２２は、現在ピクチャ中の現在ブロックの位置に対する参照ピクチャ中の参照ブロックの位置を定義する１つまたは複数の動きベクトル（ＭＶ）を形成し得る。次いで動き推定ユニット２２２は、動きベクトルを動き補償ユニット２２４に提供し得る。例えば、単方向インター予測の場合、動き推定ユニット２２２は、単一の動きベクトルを提供し得るが、双方向インター予測の場合、動き推定ユニット２２２は、２つの動きベクトルを提供し得る。次いで動き補償ユニット２２４は、動きベクトルを使用して予測ブロックを生成し得る。例えば、動き補償ユニット２２４は、動きベクトルを使用して参照ブロックのデータを取り出し得る。別の例として、動きベクトルが分数サンプル精度を有する場合、動き補償ユニット２２４は、１つまたは複数の補間フィルタにしたがって予測ブロックについての値を補間し得る。さらに、双方向インター予測の場合、動き補償ユニット２２４は、それぞれの動きベクトルによって識別された２つの参照ブロックについてのデータを取り出し、例えば、サンプルごとの平均化または加重平均化により、取り出されたデータを組み合わせ得る。
【０１２９】
[0151]  別の例として、イントラ予測コーディングまたはイントラ予測コーディングの場合、イントラ予測ユニット２２６は、現在ブロックに隣接するサンプルから予測ブロックを生成し得る。例えば、方向性モードの場合、イントラ予測ユニット２２６は、概して、隣接サンプルの値を数学的に組み合わせ、現在ブロックにわたって定義された方向にこれらの計算された値をポピュレートして（populate）、予測ブロックを生成し得る。別の例として、ＤＣモードの場合、イントラ予測ユニット２２６は、現在ブロックに対する隣接サンプルの平均を計算し、予測ブロックの各サンプルについての結果として得られる平均を含むように予測ブロックを生成し得る。
【０１３０】
[0152]  モード選択ユニット２０２は、予測ブロックを残差生成ユニット２０４に提供する。残差生成ユニット２０４は、ビデオデータメモリ２３０から現在ブロックの生の符号化されていないバージョンを、およびモード選択ユニット２０２から予測ブロックを受信する。残差生成ユニット２０４は、現在ブロックと予測ブロックとの間のサンプルごとの差分を計算する。結果として得られるサンプルごとの差分は、現在ブロックについての残差ブロックを定義する。いくつかの例では、残差生成ユニット２０４はまた、残差ブロック中のサンプル値間の差分を決定して、残差差動パルスコード変調（ＲＤＰＣＭ：residual differential pulse code modulation）を使用して残差ブロックを生成し得る。いくつかの例では、残差生成ユニット２０４は、バイナリ減算を実行する１つまたは複数の減算器回路を使用して形成され得る。
【０１３１】
[0153]  モード選択ユニット２０２がＣＵをＰＵに分割する例では、各ＰＵは、ルーマ予測ユニットおよび対応するクロマ予測ユニットに関連付けられ得る。ビデオエンコーダ２００およびビデオデコーダ３００は、様々なサイズを有するＰＵをサポートし得る。上述のように、ＣＵのサイズは、ＣＵのルーマコーディングブロックのサイズを指し得、ＰＵのサイズは、ＰＵのルーマ予測ユニットのサイズを指し得る。特定のＣＵのサイズが２Ｎ×２Ｎであると仮定すると、ビデオエンコーダ２００は、イントラ予測の場合には、２Ｎ×２ＮまたはＮ×ＮというＰＵサイズを、インター予測の場合には、２Ｎ×２Ｎ、２Ｎ×Ｎ、Ｎ×２Ｎ、Ｎ×Ｎ、または同様のものという対称ＰＵサイズをサポートし得る。ビデオエンコーダ２００およびビデオデコーダ３００はまた、インター予測の場合に、２Ｎ×ｎＵ、２Ｎ×ｎＤ、ｎＬ×２Ｎ、およびｎＲ×２ＮというＰＵサイズについての非対称分割をサポートし得る。
【０１３２】
[0154]  モード選択ユニット２０２がＣＵをＰＵにさらに分割しない例では、各ＣＵは、ルーマコーディングブロックおよび対応するクロマコーディングブロックに関連付けられ得る。上記のように、ＣＵのサイズは、ＣＵのルーマコーディングブロックのサイズを指し得る。ビデオエンコーダ２００およびビデオデコーダ３００は、２Ｎ×２Ｎ、２Ｎ×Ｎ、またはＮ×２ＮというＣＵサイズをサポートし得る。
【０１３３】
[0155]  イントラブロックコピーモードコーディング、アフィンモードコーディング、および線形モデル（ＬＭ）モードコーディングなどの他のビデオコーディング技法の場合、いくつかの例として、モード選択ユニット２０２は、コーディング技法に関連するそれぞれのユニットを介して、符号化されている現在ブロックについての予測ブロックを生成する。パレットモードコーディングなどのいくつかの例では、モード選択ユニット２０２は、予測ブロックを生成せず、代わりに、選択されたパレットに基づいてブロックを再構成する様式を示すシンタックス要素を生成し得る。そのようなモードでは、モード選択ユニット２０２は、これらのシンタックス要素を、符号化されるようにエントロピー符号化ユニット２２０に提供し得る。
【０１３４】
[0156]  上述のように、残差生成ユニット２０４は、現在ブロックについてのビデオデータと対応する予測ブロックとを受信する。次いで残差生成ユニット２０４は、現在ブロックについての残差ブロックを生成する。残差ブロックを生成するために、残差生成ユニット２０４は、予測ブロックと現在ブロックとの間のサンプルごとの差分を計算する。したがって、
[0157]  変換処理ユニット２０６は、残差ブロックに１つまたは複数の変換を適用して、変換係数のブロック（本明細書では「変換係数ブロック」と呼ばれる）を生成する。変換処理ユニット２０６は、残差ブロックに様々な変換を適用して、変換係数ブロックを形成し得る。例えば、変換処理ユニット２０６は、残差ブロックに、離散コサイン変換（ＤＣＴ）、方向性変換、カルーネンレーベ変換（ＫＬＴ）、または概念的に類似した変換を適用し得る。いくつかの例では、変換処理ユニット２０６は、残差ブロックへの複数の変換、例えば、一次変換と、回転変換などの二次変換とを実行し得る。いくつかの例では、変換処理ユニット２０６は、残差ブロックに変換を適用しない。
【０１３５】
[0158]  量子化ユニット２０８は、変換係数ブロック中の変換係数を量子化して、量子化された変換係数ブロックを生成し得る。量子化ユニット２０８は、現在ブロックに関連付けられた量子化パラメータ（ＱＰ）値にしたがって変換係数ブロックの変換係数を量子化し得る。ビデオエンコーダ２００（例えば、モード選択ユニット２０２を介する）は、ＣＵに関連付けられたＱＰ値を調整することによって、現在ブロックに関連付けられた係数ブロックに適用される量子化の程度を調整し得る。量子化は、情報の損失をもたらし得、したがって、量子化された変換係数は、変換処理ユニット２０６によって生成された元の変換係数よりも低い精度を有し得る。
【０１３６】
[0159]  逆量子化ユニット２１０および逆変換処理ユニット２１２は、量子化された変換係数ブロックにそれぞれ逆量子化および逆変換を適用して、変換係数ブロックから残差ブロックを再構成し得る。再構成ユニット２１４は、再構成された残差ブロックと、モード選択ユニット２０２によって生成された予測ブロックとに基づいて、（ある程度の歪みがある可能性があるが）現在ブロックに対応する再構成されたブロックを生成し得る。例えば、再構成ユニット２１４は、再構成された残差ブロックのサンプルを、モード選択ユニット２０２によって生成された予測ブロックからの対応するサンプルに加算して、再構成されたブロックを生成し得る。
【０１３７】
[0160]  フィルタユニット２１６は、再構成されたブロックに対して１つまたは複数のフィルタ動作を実行し得る。例えば、フィルタユニット２１６は、ＣＵのエッジに沿ったブロックアーティファクト（blockiness artifacts）を低減するためにデブロッキング動作を実行し得る。いくつかの例では、フィルタユニット２１６の動作はスキップされ得る。
【０１３８】
[0161]  ビデオエンコーダ２００は、再構成されたブロックをＤＰＢ２１８に記憶する。例えば、フィルタユニット２１６の動作が必要とされない例では、再構成ユニット２１６が、再構成されたブロックをＤＰＢ２１８に記憶し得る。フィルタユニット２２４の動作が必要とされる例では、フィルタユニット２１６が、フィルタリングされた再構成されたブロックをＤＰＢ２１８に記憶し得る。動き推定ユニット２２２および動き補償ユニット２２４は、その後に符号化されるピクチャのブロックをインター予測するために、再構成された（およびフィルタリングされた可能性のある）ブロックから形成された参照ピクチャをＤＰＢ２１８から取り出し得る。さらに、イントラ予測ユニット２２６が、現在ピクチャ中の他のブロックをイントラ予測するために、現在ピクチャのＤＰＢ２１８中の再構成されたブロックを使用し得る。
【０１３９】
[0162]  概して、エントロピー符号化ユニット２２０は、ビデオエンコーダ２００の他の機能構成要素から受信されたシンタックス要素をエントロピー符号化し得る。例えば、エントロピー符号化ユニット２２０は、量子化ユニット２０８からの量子化された変換係数ブロックをエントロピー符号化し得る。別の例として、エントロピー符号化ユニット２２０は、モード選択ユニット２０２からの予測シンタックス要素（例えば、インター予測のための動き情報またはイントラ予測のためのイントラモード情報）をエントロピー符号化し得る。エントロピー符号化ユニット２２０は、ビデオデータの別の例であるシンタックス要素に対して１つまたは複数のエントロピー符号化動作を実行して、エントロピー符号化されたデータを生成し得る。例えば、エントロピー符号化ユニット２２０は、データに対して、コンテキスト適応型可変長コーディング（ＣＡＶＬＣ）動作、ＣＡＢＡＣ動作、Ｖ２Ｖ（variable-to-variable）長コーディング動作、シンタックスベースのコンテキスト適応型バイナリ算術コーディング（ＳＢＡＣ）動作、確率区間区分エントロピー（ＰＩＰＥ）コーディング動作、指数ゴロム符号化動作、または別のタイプのエントロピー符号化動作を実行し得る。いくつかの例では、エントロピー符号化ユニット２２０は、シンタックス要素がエントロピー符号化されないバイパスモードで動作し得る。
【０１４０】
[0163]  ビデオエンコーダ２００は、スライスまたはピクチャのブロックを再構成するために必要とされるエントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。特に、エントロピー符号化ユニット２２０は、ビットストリームを出力し得る。
【０１４１】
[0164]  上述の動作は、ブロックに関して説明されたものである。そのような説明は、ルーマコーディングブロックおよび／またはクロマコーディングブロックのための動作であると理解されたい。上述のように、いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、ＣＵのルーマ成分およびクロマ成分である。いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、ＰＵのルーマ成分およびクロマ成分である。
【０１４２】
[0165]  いくつかの例では、ルーマコーディングブロックに関して実行される動作は、クロマコーディングブロックに対して繰り返される必要はない。１つの例として、ルーマコーディングブロックのための動きベクトル（ＭＶ）および参照ピクチャを識別するための動作は、クロマブロックのためのＭＶおよび参照ピクチャを識別するために繰り返される必要はない。むしろ、ルーマコーディングブロックのためのＭＶは、クロマブロックのためのＭＶを決定するためにスケーリングされ得、参照ピクチャは同じであり得る。別の例として、イントラ予測プロセスは、ルーマコーディングブロックとクロマコーディングブロックとで同じであり得る。
【０１４３】
[0166]  ビデオエンコーダ２００は、ビデオデータを記憶するように構成されたメモリと、回路内にインプリメントされ、かつ予測ピクセル値を使用してフレームレートアップコンバージョン（ＦＲＵＣ）テンプレートを導出し、および導出されたテンプレートを使用してデコーダ側動きベクトル導出技法を実行するように構成された１つまたは複数の処理ユニットとを含む、ビデオデータを符号化するように構成されたデバイスの一例を表す。別の例では、ビデオデコーダ３００は、ビデオデータの１つまたは複数の隣接ブロックからそれぞれの動きベクトルを決定し、ビデオデータの１つまたは複数の隣接ブロックからのそれぞれの動きベクトルを使用してビデオデータの現在ブロックについての動きベクトルを導出するように構成され得る。別の例では、ビデオデコーダ３００は、ビデオデータの１つまたは複数のコロケートされたブロックからそれぞれの動きベクトルを決定し、ビデオデータの１つまたは複数のコロケートされたブロックからのそれぞれの動きベクトルを使用してビデオデータの現在ブロックについての動きベクトルを導出するように構成され得る。
【０１４４】
[0167]  図１２は、本開示の技法を実行し得る例示的なビデオデコーダ３００を例示するブロック図である。図１２は説明を目的として提供されており、本開示において広く例示および説明される技法を限定するものではない。説明を目的として、本開示では、ビデオデコーダ３００についてＪＥＭ、Ｈ．２６６／ＶＶＣ、およびＨＥＶＣの技法にしたがって説明する。しかしながら、本開示の技法は、他のビデオコーディング規格に合わせて構成されたビデオコーディングデバイスによって実行され得る。
【０１４５】
[0168]  図１２の例では、ビデオデコーダ３００は、コーディングされたピクチャバッファ（ＣＰＢ）メモリ３２０、エントロピー復号ユニット３０２、予測処理ユニット３０４、逆量子化ユニット３０６、逆変換処理ユニット３０８、再構成ユニット３１０、フィルタユニット３１２、および復号ピクチャバッファ（ＤＰＢ）３１４を含む。予測処理ユニット３０４は、動き補償ユニット３１６およびイントラ予測ユニット３１８を含む。予測処理ユニット３０４は、他の予測モードにしたがって予測を実行するための追加ユニットを含み得る。例として、予測処理ユニット３０４は、パレットユニット、（動き補償ユニット３１６の一部を形成し得る）イントラブロックコピーユニット、アフィンユニット、線形モデル（ＬＭ）ユニット、または同様のものを含み得る。他の例では、ビデオデコーダ３００は、より多数の、より少数の、または異なる機能構成要素を含み得る。
【０１４６】
[0169]  ＣＰＢメモリ３２０は、ビデオデコーダ３００の構成要素によって復号されることになる、符号化されたビデオビットストリームなどの、ビデオデータを記憶し得る。ＣＰＢメモリ３２０に記憶されたビデオデータは、例えば、コンピュータ可読媒体１１０（図１）から取得され得る。ＣＰＢメモリ３２０は、符号化されたビデオビットストリームからの符号化されたビデオデータ（例えば、シンタックス要素）を記憶するＣＰＢを含み得る。また、ＣＰＢメモリ３２０は、ビデオデコーダ３００の様々なユニットからの出力を表す一時データなど、コーディングされたピクチャのシンタックス要素以外のビデオデータを記憶し得る。ＤＰＢ３１４は、概して、ビデオデコーダ３００が、符号化されたビデオビットストリームの後続のデータまたはピクチャを復号するときに参照ビデオデータとして出力および／または使用し得る、復号されたピクチャを記憶する。ＣＰＢメモリ３２０およびＤＰＢ３１４は、同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）を含むＤＲＡＭ、磁気抵抗ＲＡＭ（ＭＲＡＭ）、抵抗ＲＡＭ（ＲＲＡＭ）、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。ＣＰＢメモリ３２０およびＤＰＢ３１４は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ＣＰＢメモリ３２０は、ビデオデコーダ３００の他の構成要素とともにオンチップであり得るか、これらの構成要素に対してオフチップであり得る。
【０１４７】
[0170]  追加的または代替的に、いくつかの例では、ビデオデコーダ３００は、メモリ１２０（図１）からコーディングされたビデオデータを取り出し得る。すなわち、メモリ１２０は、ＣＰＢメモリ３２０を用いて上述したようにデータを記憶し得る。同様に、メモリ１２０は、ビデオデコーダ３００の機能が一部または全部がソフトウェアにおいてインプリメントされたときにビデオデコーダ３００の処理回路によって実行されるように、ビデオデコーダ３００によって実行されることになる命令を記憶し得る。
【０１４８】
[0171]  図１２に示す様々なユニットは、ビデオデコーダ３００によって実行される動作を理解する助けとなるために例示されている。これらユニットは、固定機能回路、プログラマブル回路、またはこれらの組合せとしてインプリメントされ得る。図１１と同様に、固定機能回路は、特定の機能を提供する回路を指し、実行されることができる動作に関して予め設定されている。プログラマブル回路は、様々なタスクを実行するようにプログラムされることができる回路を指し、実行されることができる動作において柔軟な機能を提供する。例えば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義された様式でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、（例えば、パラメータを受信またはパラメータを出力するように）ソフトウェア命令を実行し得るが、固定機能回路が実行する動作のタイプは概して不変である。いくつかの例では、ユニットの１つまたは複数は、別個の回路ブロック（固定機能またはプログラマブル）であり得、いくつかの例では、１つまたは複数のユニットは、集積回路であり得る。
【０１４９】
[0172]  ビデオデコーダ３００は、ＡＬＵ、ＥＦＵ、デジタル回路、アナログ回路、および／またはプログラマブル回路から形成されたプログラマブルコアを含み得る。ビデオデコーダ３００の動作がプログラマブル回路上で実行されるソフトウェアによって実行される例では、オンチップまたはオフチップメモリは、ビデオデコーダ３００が受信および実行するソフトウェアの命令（例えば、オブジェクトコード）を記憶し得る。
【０１５０】
[0173]  エントロピー復号ユニット３０２は、ＣＰＢから符号化されたビデオデータを受信し、ビデオデータをエントロピー復号して、シンタックス要素を再生し得る。予測処理ユニット３０４、逆量子化ユニット３０６、逆変換処理ユニット３０８、再構成ユニット３１０、およびフィルタユニット３１２は、ビットストリームから抽出されたシンタックス要素に基づいて、復号されたビデオデータを生成し得る。
【０１５１】
[0174]  概して、ビデオデコーダ３００は、ブロックごとのベースでピクチャを再構成する。ビデオデコーダ３００は、各ブロックに対して個別に再構成動作を実行し得る（ここで、現在再構成されている、すなわち、復号されているブロックは、「現在ブロック」と呼ばれ得る）。
【０１５２】
[0175]  エントロピー復号ユニット３０２は、量子化された変換係数ブロックの量子化された変換係数ならびに量子化パラメータ（ＱＰ）および／または（単数または複数の）変換モード指示などの変換情報を定義するシンタックス要素をエントロピー復号し得る。逆量子化ユニット３０６は、量子化された変換係数ブロックに関連付けられたＱＰを使用して、量子化の程度を決定し、同様に、逆量子化ユニット３０６が適用すべき逆量子化の程度を決定し得る。逆量子化ユニット３０６は、例えば、量子化された変換係数を逆量子化するために、ビット単位の左シフト演算を実行し得る。それによって逆量子化ユニット３０６は、変換係数を含む変換係数ブロックを形成し得る。
【０１５３】
[0176]  逆量子化ユニット３０６が変換係数ブロックを形成した後、逆変換処理ユニット３０８は、変換係数ブロックに１つまたは複数の逆変換を適用して、現在ブロックに関連付けられた残差ブロックを生成し得る。例えば、逆変換処理ユニット３０８は、係数ブロックに、逆ＤＣＴ、逆整数変換、逆カルーネンレーベ変換（ＫＬＴ）、逆回転変換、逆方向性変換、または別の逆変換を適用し得る。
【０１５４】
[0177]  さらに、予測処理ユニット３０４は、エントロピー復号ユニット３０２によってエントロピー復号された予測情報シンタックス要素にしたがって予測ブロックを生成する。例えば、現在ブロックがインター予測されることを予測情報シンタックス要素が示す場合、動き補償ユニット３１６が、予測ブロックを生成し得る。このケースでは、予測情報シンタックス要素は、参照ブロックをそこから取り出すＤＰＢ３１４内の参照ピクチャ、および現在ピクチャ中の現在ブロックのロケーションに対する参照ピクチャ中の参照ブロックのロケーションを識別する動きベクトルを示し得る。動き補償ユニット３１６は、概して、動き補償ユニット２２４（図１１）に関して説明したものと実質的に同様にインター予測プロセスを実行し得る。
【０１５５】
[0178]  別の例として、現在ブロックがイントラ予測されることを予測情報シンタックス要素が示す場合、イントラ予測ユニット３１８が、予測情報シンタックス要素によって示されるイントラ予測モードにしたがって予測ブロックを生成し得る。ここでも、イントラ予測ユニット３１８は、概して、イントラ予測ユニット２２６（図１１）に関して説明したものと実質的に同様にイントラ予測プロセスを実行し得る。イントラ予測ユニット３１８は、ＤＰＢ３１４から、現在ブロックに対する隣接サンプルのデータを取り出し得る。
【０１５６】
[0179]  再構成ユニット３１０は、予測ブロックおよび残差ブロックを使用して現在ブロックを再構成し得る。例えば、再構成ユニット３１０は、残差ブロックのサンプルを予測ブロックの対応するサンプルに加算して、現在ブロックを再構成し得る。
【０１５７】
[0180]  フィルタユニット３１２は、再構成されたブロックに対して１つまたは複数のフィルタ動作を実行し得る。例えば、フィルタユニット３１２は、再構成されたブロックのエッジに沿ったブロックアーティファクトを低減するためにデブロッキング動作を実行し得る。フィルタユニット３１２の動作は、必ずしもすべての例において実行されるわけではない。
【０１５８】
[0181]  ビデオデコーダ３００は、再構成されたブロックをＤＰＢ３１４に記憶し得る。上述のように、ＤＰＢ３１４は、イントラ予測のための現在ピクチャおよび後続の動き補償のための前に復号されたピクチャのサンプルなどの参照情報を予測処理ユニット３０４に提供し得る。さらに、ビデオデコーダ３００は、図１のディスプレイデバイス１１８などのディスプレイデバイス上での後続の提示のために、復号されたピクチャをＤＰＢから出力し得る。
【０１５９】
[0182]  このようにして、ビデオデコーダ３００は、ビデオデータを記憶するように構成されたメモリと、回路内にインプリメントされ、かつ本明細書で説明する方法およびプロセスをインプリメントするように構成された１つまたは複数の処理ユニットとを含むビデオ復号デバイスの一例を表す。
【０１６０】
[0183]  例えば、符号化されたビデオデータは、以下のシンタックスを含み得る。
【０１６１】
【表４】
2021527999.tif 000010
【０１６２】
[0184]  ｍｅｒｇｅ＿ｓｕｂｂｌｏｃｋ＿ｆｌａｇ［ｘ０］［ｙ０］は、現在のコーディングユニットのためのサブブロックベースのインター予測パラメータが隣接ブロックから推測されるかどうかを指定する。アレイインデックスｘ０、ｙ０は、ピクチャの左上ルーマサンプルに対する、考慮されるコーディングブロックの左上ルーマサンプルのロケーション（ｘ０，ｙ０）を指定する。ｍｅｒｇｅ＿ｓｕｂｂｌｏｃｋ＿ｆｌａｇ［ｘ０］［ｙ０］が存在しないとき、それは０に等しいと推測される。
【０１６３】
[0185]  ｍｅｒｇｅ＿ｓｕｂｂｌｏｃｋ＿ｉｄｘ［ｘ０］［ｙ０］は、サブブロックベースのマージング候補リストのマージング候補インデックスを指定し、ここで、ｘ０、ｙ０は、ピクチャの左上ルーマサンプルに対する、考慮されるコーディングブロックの左上ルーマサンプルのロケーション（ｘ０，ｙ０）を指定する。
【０１６４】
[0186]  ｍｅｒｇｅ＿ｓｕｂｂｌｏｃｋ＿ｉｄｘ［ｘ０］［ｙ０］が存在しないとき、それは０に等しいと推測される。
【０１６５】
[0187]  ｍｅｒｇｅ＿ｓｕｂｂｌｏｃｋ＿ｆｌａｇ［ｘＣｂ］［ｙＣｂ］が１に等しい場合、８．４．４．２において指定されるようなサブブロックマージモードにおける動きベクトルおよび参照インデックスのための導出プロセスが、入力としてのルーマコーディングブロック幅ｃｂＷｉｄｔｈおよびルーマコーディングブロック高さｃｂＨｅｉｇｈｔと、ルーマコーディングブロックロケーション（ｘＣｂ，ｙＣｂ）で呼び出され、出力として、水平方向におけるルーマコーディングサブブロックの数ｎｕｍＳｂＸおよび垂直方向におけるルーマコーディングサブブロックの数ｎｕｍＳｂＹと、参照インデックスｒｅｆＩｄｘＬ０、ｒｅｆＩｄｘＬ１と、予測リスト利用フラグアレイｐｒｅｄＦｌａｇＬ０［ｘＳｂＩｄｘ］［ｙＳｂＩｄｘ］およびｐｒｅｄＦｌａｇＬ１［ｘＳｂＩｄｘ］［ｙＳｂＩｄｘ］と、ルーマサブブロック動きベクトルアレイｍｖＬ０［ｘＳｂＩｄｘ］［ｙＳｂＩｄｘ］およびｍｖＬ０［ｘＳｂＩｄｘ］［ｙＳｂＩｄｘ］と、クロマサブブロック動きベクトルアレイｍｖＣＬ０［ｘＳｂＩｄｘ］［ｙＳｂＩｄｘ］およびｍｖＣＬ１［ｘＳｂＩｄｘ］［ｙＳｂＩｄｘ］と、ここで、ｘＳｂＩｄｘ＝０．．ｎｕｍＳｂＸ−１、ｙＳｂＩｄｘ＝０．．ｎｕｍＳｂＹ−１であり、双予測重みインデックスｇｂｉＩｄｘ、である。
【０１６６】
[0188]  例に依存して、本明細書において説明された技法のいずれかの技法ある特定の動作（acts）またはイベントが、異なるシーケンスで実行されることができ、追加され、マージされ、または完全に除外され得る（例えば、説明されたすべての行為またはイベントが技法の実践にとって必要であるわけではない）ことを認識されたい。さらに、ある特定の例では、行為またはイベントは、連続的ではなくむしろ、例えば、マルチスレッド処理、割込み処理、または複数のプロセッサによって同時に実行され得る。
【０１６７】
[0189]  １つまたは複数の例において、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組合せにおいてインプリメントされ得る。ソフトウェアにおいてインプリメントされる場合には、これら機能は、１つまたは複数の命令もしくはコードとして、コンピュータ可読媒体上に記憶、またはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、例えば、通信プロトコルにしたがって、コンピュータプログラムの１つの場所から別の場所への転送を容易にする任意の媒体を含む通信媒体、またはデータ記憶媒体などの有体の媒体に対応するコンピュータ可読記憶媒体を含み得る。このように、コンピュータ可読媒体は、一般に、（１）非一時的である有形のコンピュータ可読記憶媒体、または（２）信号もしくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技法のインプリメンテーションのための命令、コード、および／またはデータ構造を取り出すために、１つまたは複数のコンピュータもしくは１つまたは複数のプロセッサによってアクセスされることができる任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
【０１６８】
[0190]  限定ではなく例として、このようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、ＣＤ−ＲＯＭまたは他の光ディスク記憶装置、磁気ディスク記憶装置、またはその他の磁気記憶デバイス、フラッシュメモリ、もしくは、データ構造または命令の形態で所望のプログラムコードを記憶するために使用されることができ、かつコンピュータによってアクセスされることができる他の任意の媒体を備えることができる。また、任意の接続は、適切にはコンピュータ可読媒体と称する。例えば、命令がウェブサイト、サーバ、または他の遠隔ソースから、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者線（ＤＳＬ）、もしくは赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的な媒体を含むのではなく、非一時的な有形の記憶媒体を対象とすることを理解されたい。ディスク（disk）およびディスク（disc）は、本明細書で使用されるとき、コンパクトディスク（ＣＤ）、レーザーディスク（登録商標）、光ディスク、デジタル多用途ディスク（ＤＶＤ）、フロッピー（登録商標）ディスク、およびブルーレイディスクを含み、ここで、ディスク（disk）は通常、磁気的にデータを再生するが、ディスク（disc）は、レーザーを用いて光学的にデータを再生する。上記の組合せもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
【０１６９】
[0191]  命令は、１つまたは複数のデジタルシグナルプロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、または、他の同等の集積回路またはディスクリート論理回路などの、１つまたは複数のプロセッサによって実行され得る。したがって、「プロセッサ」という用語は、本明細書で使用されるとき、前述の構造、または本明細書で説明された技法のインプリメンテーションに好適な他の任意の構造のいずれかを指し得る。さらに、いくつかの態様では、本明細書で説明される機能性は、符号化および復号のために構成された専用ハードウェアモジュールおよび／またはソフトウェアモジュール内で提供され得るか、または組み合わされたコーデックに組み込まれ得る。また、本技法は、１つまたは複数の回路もしくは論理要素において十分にインプリメントされることができる。
【０１７０】
[0192]  本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）、またはＩＣのセット（例えば、チップセット）を含む、幅広く様々なデバイスまたは装置においてインプリメントされ得る。開示された技法を実行するように構成されたデバイスの機能的な態様を強調するために、様々な構成要素、モジュール、またはユニットが本開示において説明されているが、異なるハードウェアユニットによる実現を必ずしも必要とするわけではない。むしろ、上述したように、様々なユニットは、コーデックハードウェアユニットに組み合わされ得るか、または、好適なソフトウェアおよび／またはファームウェアと併せて、上述した１つまたは複数のプロセッサを含む、相互動作のハードウェアユニットの集合によって提供され得る。
【０１７１】
[0193]  様々な例を説明した。これらの例および他の例は、以下の特許請求の範囲の適用範囲内にある。
【図１】
2021527999.tif 000011
【図２Ａ】
2021527999.tif 000012
【図２Ｂ】
2021527999.tif 000013
【図３】
2021527999.tif 000014
【図４】
2021527999.tif 000015
【図５】
2021527999.tif 000016
【図６】
2021527999.tif 000017
【図７】
2021527999.tif 000018
【図８】
2021527999.tif 000019
【図９】
2021527999.tif 000020
【図１０】
2021527999.tif 000021
【図１１】
2021527999.tif 000022
【図１２】
2021527999.tif 000023
【国際調査報告】
2021527999.tif 000024
2021527999.tif 000025
2021527999.tif 000026