IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ クゥアルコム・インコーポレイテッドの特許一覧

特表2024-512926隣接しない候補とAMVPインデックスのシグナリングとを用いたテンプレートマッチングベースの高度動きベクトル予測子(AMVP)候補リストの構築
<>
  • 特表-隣接しない候補とAMVPインデックスのシグナリングとを用いたテンプレートマッチングベースの高度動きベクトル予測子(AMVP)候補リストの構築 図1
  • 特表-隣接しない候補とAMVPインデックスのシグナリングとを用いたテンプレートマッチングベースの高度動きベクトル予測子(AMVP)候補リストの構築 図2A
  • 特表-隣接しない候補とAMVPインデックスのシグナリングとを用いたテンプレートマッチングベースの高度動きベクトル予測子(AMVP)候補リストの構築 図2B
  • 特表-隣接しない候補とAMVPインデックスのシグナリングとを用いたテンプレートマッチングベースの高度動きベクトル予測子(AMVP)候補リストの構築 図3
  • 特表-隣接しない候補とAMVPインデックスのシグナリングとを用いたテンプレートマッチングベースの高度動きベクトル予測子(AMVP)候補リストの構築 図4
  • 特表-隣接しない候補とAMVPインデックスのシグナリングとを用いたテンプレートマッチングベースの高度動きベクトル予測子(AMVP)候補リストの構築 図5
  • 特表-隣接しない候補とAMVPインデックスのシグナリングとを用いたテンプレートマッチングベースの高度動きベクトル予測子(AMVP)候補リストの構築 図6A
  • 特表-隣接しない候補とAMVPインデックスのシグナリングとを用いたテンプレートマッチングベースの高度動きベクトル予測子(AMVP)候補リストの構築 図6B
  • 特表-隣接しない候補とAMVPインデックスのシグナリングとを用いたテンプレートマッチングベースの高度動きベクトル予測子(AMVP)候補リストの構築 図7
  • 特表-隣接しない候補とAMVPインデックスのシグナリングとを用いたテンプレートマッチングベースの高度動きベクトル予測子(AMVP)候補リストの構築 図8
  • 特表-隣接しない候補とAMVPインデックスのシグナリングとを用いたテンプレートマッチングベースの高度動きベクトル予測子(AMVP)候補リストの構築 図9
  • 特表-隣接しない候補とAMVPインデックスのシグナリングとを用いたテンプレートマッチングベースの高度動きベクトル予測子(AMVP)候補リストの構築 図10
  • 特表-隣接しない候補とAMVPインデックスのシグナリングとを用いたテンプレートマッチングベースの高度動きベクトル予測子(AMVP)候補リストの構築 図11
  • 特表-隣接しない候補とAMVPインデックスのシグナリングとを用いたテンプレートマッチングベースの高度動きベクトル予測子(AMVP)候補リストの構築 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-21
(54)【発明の名称】隣接しない候補とAMVPインデックスのシグナリングとを用いたテンプレートマッチングベースの高度動きベクトル予測子(AMVP)候補リストの構築
(51)【国際特許分類】
   H04N 19/105 20140101AFI20240313BHJP
   H04N 19/176 20140101ALI20240313BHJP
【FI】
H04N19/105
H04N19/176
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023555836
(86)(22)【出願日】2022-03-28
(85)【翻訳文提出日】2023-09-12
(86)【国際出願番号】 US2022022143
(87)【国際公開番号】W WO2022212254
(87)【国際公開日】2022-10-06
(31)【優先権主張番号】63/167,555
(32)【優先日】2021-03-29
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/704,689
(32)【優先日】2022-03-25
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】595020643
【氏名又は名称】クゥアルコム・インコーポレイテッド
【氏名又は名称原語表記】QUALCOMM INCORPORATED
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】ジャン、ヤン
(72)【発明者】
【氏名】ジャン、ジー
(72)【発明者】
【氏名】セレジン、バディム
(72)【発明者】
【氏名】カルチェビチ、マルタ
(72)【発明者】
【氏名】チェン、チュン-チー
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159MA04
5C159MA05
5C159MA21
5C159MC11
5C159ME01
5C159NN10
5C159NN21
5C159PP04
5C159RC11
5C159TA30
5C159TB08
5C159TC41
5C159TC42
5C159UA02
5C159UA05
(57)【要約】
例示的なデバイスは、ビデオデータを記憶するように構成されたメモリと、回路中に実装され、メモリと通信可能に結合された1つまたは複数のプロセッサとを含む。1つまたは複数のプロセッサは、時間候補または履歴ベースの候補のうちの少なくとも1つを決定することと、少なくとも1つの隣接しない候補を決定することと、ここにおいて、少なくとも1つの隣接しない候補は、現在の予測ユニット(PU)に隣接しないユニットからのものである、を行うように構成される。1つまたは複数のプロセッサは、時間候補または履歴ベースの候補のうちの少なくとも1つと少なくとも1つの隣接しない候補とを含む高度動きベクトル予測子(AMVP)候補リストを決定するように構成される。少なくとも1つの隣接しない候補は、時間候補の後にまたは履歴ベースの候補の前にAMVP候補リストに追加される。1つまたは複数のプロセッサは、AMVP候補リストに基づいて現在のPUをコーディングするように構成される。
【特許請求の範囲】
【請求項1】
ビデオデータをコーディングする方法であって、
時間候補または履歴ベースの候補のうちの少なくとも1つを決定することと、
少なくとも1つの隣接しない候補ユニットから少なくとも1つの隣接しない候補を決定することと、ここにおいて、前記少なくとも1つの隣接しない候補ユニットは、現在の予測ユニット(PU)に隣接しない、
前記時間候補または前記履歴ベースの候補のうちの前記少なくとも1つと前記少なくとも1つの隣接しない候補とを備える高度動きベクトル予測子(AMVP)候補リストを決定することと、ここにおいて、前記少なくとも1つの隣接しない候補は、前記時間候補の後または前記履歴ベースの候補の前のうちの少なくとも1つに前記AMVP候補リストに追加される、
前記AMVP候補リストに基づいて前記現在のPUをコーディングすることと
を備える方法。
【請求項2】
前記少なくとも1つの隣接しない候補を決定することは、前記現在のPUの1ユニット下2ユニット左側、前記現在のPUの2ユニット上1ユニット右側、前記現在のPUの2ユニット上2ユニット左側、前記現在のPUの2ユニット下3ユニット左側、前記現在のPUの3ユニット上2ユニット右側、前記現在のPUの3ユニット上、前記現在のPUの3ユニット左側、前記現在のPUの3ユニット上3ユニット左側、前記現在のPUの3ユニット下4ユニット左側、前記現在のPUの4ユニット上3ユニット右側、前記現在のPUの4ユニット上、前記現在のPUの4ユニット左側、前記現在のPUの4ユニット上4ユニット左側、前記現在のPUの4ユニット下5ユニット左側、前記現在のPUの5ユニット上4ユニット右側、前記現在のPUの5ユニット上、前記現在のPUの5ユニット左側、および前記現在のPUの5ユニット上5ユニット左側に位置する潜在的な隣接しない候補ユニットからなるグループから前記少なくとも1つの隣接しない候補ユニットを選択することを備える、請求項1に記載の方法。
【請求項3】
複数の潜在的な隣接しない候補ユニットは、複数のグループに分割される、ここにおいて、前記方法は、
前記複数のグループのうちのグループを示すレベルインデックスをシグナリングまたはパースすることと、
前記レベルインデックスによって示される前記グループに属する前記潜在的な隣接しない候補ユニットのうちの1つを示す位置インデックスをシグナリングまたはパースすることと、ここにおいて、前記少なくとも1つの隣接しない候補ユニットは、前記潜在的な隣接しない候補ユニットのうちの前記1つを備える、
をさらに備える、請求項1に記載の方法。
【請求項4】
前記複数のグループは、
前記現在のPUの1ユニット下2ユニット左側、前記現在のPUの2ユニット上1ユニット右側、および前記現在のPUの2ユニット上2ユニット左側に位置する潜在的な隣接しない候補ユニットの第1のグループと、
前記現在のPUの2ユニット下3ユニット左側、前記現在のPUの3ユニット上2ユニット右側、前記現在のPUの3ユニット上、前記現在のPUの3ユニット左側、前記現在のPUの3ユニット上3ユニット左側に位置する潜在的な隣接しない候補ユニットの第2のグループと、
前記現在のPUの3ユニット下4ユニット左側、前記現在のPUの4ユニット上3ユニット右側、前記現在のPUの4ユニット上、前記現在のPUの4ユニット左側、前記現在のPUの4ユニット上4ユニット左側に位置する潜在的な隣接しない候補ユニットの第3のグループと、
前記現在のPUの4ユニット下5ユニット左側、前記現在のPUの5ユニット上4ユニット右側、前記現在のPUの5ユニット上、前記現在のPUの5ユニット左側、前記現在のPUの5ユニット上5ユニット左側に位置する潜在的な隣接しない候補ユニットの第4のグループと
を備える、請求項3に記載の方法。
【請求項5】
前記現在のPUのサイズを決定すること、ここにおいて、前記少なくとも1つの隣接しない候補を前記決定することは、前記現在のPUの前記サイズに少なくとも部分的に基づく、
をさらに備える、請求項1に記載の方法。
【請求項6】
前記少なくとも1つの隣接しない候補を前記決定することは、前記現在のPUの左上のルーマサンプルに対する水平オフセットと前記現在のPUの前記左上のルーマサンプルに対する垂直オフセットとを決定することを備える、請求項1に記載の方法。
【請求項7】
前記少なくとも1つの隣接しない候補ユニットを前記決定することは、前記現在のPUの左上のルーマサンプル座標に前記水平オフセットと前記垂直オフセットとを加算することをさらに備える、請求項6に記載の方法。
【請求項8】
レベルインデックスを示す第1のシンタックス要素と前記水平オフセットおよび前記垂直オフセットを示す第2のシンタックス要素とに従って、前記水平オフセットと前記垂直オフセットとを決定するために使用するためにoffsetX=-iNADistanceHor-1およびoffsetY=height+iNADistanceVer-1、offsetX=width+iNADistanceHor-1およびoffsetY=-iNADistanceVer-1、offsetX=width>>1およびoffsetY=-iNADistanceVer-1、offsetX=-iNADistanceHor-1およびoffsetY=height>>1、またはoffsetX=-iNADistanceHor-1およびoffsetY=-iNADistanceVer-1のうちの1つを選択すること、ここにおいて、offsetXは、前記水平オフセットであり、offsetYは、前記垂直オフセットであり、widthは、いくつかのルーマサンプル中の前記現在のPUの幅であり、heightは、いくつかのルーマサンプル中の前記現在のPUの高さであり、iNAは、i番目の隣接しない候補ユニットを表し、iNADistanceHor=width*(前記レベルインデックス+1)であり、iNADistanceVer=height*(前記レベルインデックス+1)である、をさらに備える、請求項6に記載の方法。
【請求項9】
前記AMVP候補リスト中の候補の数は2よりも大きい、請求項1に記載の方法。
【請求項10】
前記AMVP候補リスト中の候補の前記数は5である、請求項9に記載の方法。
【請求項11】
前記AMVP候補リスト中の各候補のためのそれぞれのテンプレートマッチングコストを決定することと、
前記AMVP候補リスト中の複数の候補のうちで最小のテンプレートマッチングコストを有する前記AMVP候補リスト中の候補である動きベクトル予測子を決定することと
をさらに備える、請求項1に記載の方法。
【請求項12】
前記AMVP候補リストは、テンプレートマッチングで改良されたAMVP候補と改良されてないAMVP候補とを備え、前記方法は、AMVPインデックスをシグナリングまたはパースすること、前記AMVPインデックスは、動きベクトル予測子が前記テンプレートマッチングで改良されたAMVP候補であるのかまたは前記改良されてないAMVP候補であるのかを示す、をさらに備える、請求項1に記載の方法。
【請求項13】
前記AMVPインデックスは0に等しく、ここにおいて、前記方法は、
前記動きベクトル予測子が前記テンプレートマッチングで改良されたAMVP候補であると決定すること
をさらに備える、請求項12に記載の方法。
【請求項14】
前記AMVPインデックスは1に等しく、ここにおいて、前記方法は、
前記動きベクトル予測子が前記改良されてないAMVP候補であると決定すること
をさらに備える、請求項12に記載の方法。
【請求項15】
前記AMVP候補リスト中の各候補のためのそれぞれのテンプレートマッチングコストを決定することと、
テンプレートマッチングを使用して、前記テンプレートマッチングで改良されたAMVP候補を作成するために最小のテンプレートマッチングコストを有するAMVP候補を改良することと
をさらに備える、請求項12に記載の方法。
【請求項16】
前記改良されてないAMVP候補は、任意の潜在的なAMVP候補のうちの前記テンプレートマッチングで改良されたAMVP候補に対して最大の動きベクトル距離を有する、請求項12に記載の方法。
【請求項17】
前記改良されてないAMVP候補は、任意の潜在的なAMVP候補のうちの前記テンプレートマッチングで改良されたAMVP候補に対して動きベクトル距離比に対する最小のテンプレートマッチングコストを有する、請求項12に記載の方法。
【請求項18】
コーディングすることは符号化することを備える、請求項1に記載の方法。
【請求項19】
コーディングすることは復号することを備える、請求項1に記載の方法。
【請求項20】
ビデオデータをコーディングするためのデバイスであって、
前記ビデオデータを記憶するように構成されたメモリと、
回路中に実装され、前記メモリと通信可能に結合された1つまたは複数のプロセッサと
を備え、前記1つまたは複数のプロセッサは、
時間候補または履歴ベースの候補のうちの少なくとも1つを決定することと、
少なくとも1つの隣接しない候補ユニットから少なくとも1つの隣接しない候補を決定することと、ここにおいて、前記少なくとも1つの隣接しない候補ユニットは、現在の予測ユニット(PU)に隣接しない、
前記時間候補または前記履歴ベースの候補のうちの前記少なくとも1つと前記少なくとも1つの隣接しない候補とを備える高度動きベクトル予測子(AMVP)候補リストを決定することと、ここにおいて、前記少なくとも1つの隣接しない候補は、前記時間候補の後または前記履歴ベースの候補の前のうちの少なくとも1つに前記AMVP候補リストに追加される、
前記AMVP候補リストに基づいて前記現在のPUをコーディングすることと
を行うように構成された、デバイス。
【請求項21】
前記少なくとも1つの隣接しない候補を決定することの部分として、前記1つまたは複数のプロセッサは、前記現在のPUの1ユニット下2ユニット左側、前記現在のPUの2ユニット上1ユニット右側、前記現在のPUの2ユニット上2ユニット左側、前記現在のPUの2ユニット下3ユニット左側、前記現在のPUの3ユニット上2ユニット右側、前記現在のPUの3ユニット上、前記現在のPUの3ユニット左側、前記現在のPUの3ユニット上3ユニット左側、前記現在のPUの3ユニット下4ユニット左側、前記現在のPUの4ユニット上3ユニット右側、前記現在のPUの4ユニット上、前記現在のPUの4ユニット左側、前記現在のPUの4ユニット上4ユニット左側、前記現在のPUの4ユニット下5ユニット左側、前記現在のPUの5ユニット上4ユニット右側、前記現在のPUの5ユニット上、前記現在のPUの5ユニット左側、および前記現在のPUの5ユニット上5ユニット左側に位置するユニットからなる潜在的な隣接しない候補ユニットのグループから前記少なくとも1つの隣接しない候補ユニットを選択するように構成された、請求項20に記載のデバイス。
【請求項22】
複数の潜在的な隣接しない候補ユニットは、複数のグループに分割される、ここにおいて、前記1つまたは複数のプロセッサは、
前記複数のグループのうちのグループを示すレベルインデックスをシグナリングまたはパースすることと、
前記レベルインデックスによって示される前記グループに属する前記潜在的な隣接しない候補ユニットのうちの1つを示す位置インデックスをシグナリングまたはパースすることと、ここにおいて、前記少なくとも1つの隣接しない候補ユニットは、前記潜在的な隣接しない候補ユニットのうちの前記1つを備える、
を行うようにさらに構成された、請求項20に記載のデバイス。
【請求項23】
前記複数のグループは、
前記現在のPUの1ユニット下2ユニット左側、前記現在のPUの2ユニット上1ユニット右側、および前記現在のPUの2ユニット上2ユニット左側に位置する潜在的な隣接しない候補ユニットの第1のグループと、
前記現在のPUの2ユニット下3ユニット左側、前記現在のPUの3ユニット上2ユニット右側、前記現在のPUの3ユニット上、前記現在のPUの3ユニット左側、前記現在のPUの3ユニット上3ユニット左側に位置する潜在的な隣接しない候補ユニットの第2のグループと、
前記現在のPUの3ユニット下4ユニット左側、前記現在のPUの4ユニット上3ユニット右側、前記現在のPUの4ユニット上、前記現在のPUの4ユニット左側、前記現在のPUの4ユニット上4ユニット左側に位置する潜在的な隣接しない候補ユニットの第3のグループと、
前記現在のPUの4ユニット下5ユニット左側、前記現在のPUの5ユニット上4ユニット右側、前記現在のPUの5ユニット上、前記現在のPUの5ユニット左側、前記現在のPUの5ユニット上5ユニット左側に位置する潜在的な隣接しない候補ユニットの第4のグループと
を備える、請求項22に記載のデバイス。
【請求項24】
前記1つまたは複数のプロセッサは、
前記現在のPUのサイズを決定すること、ここにおいて、前記1つまたは複数のプロセッサは、前記現在のPUの前記サイズに少なくとも部分的に基づいて前記少なくとも1つの隣接しない候補を決定するように構成される、
を行うようにさらに構成された、請求項20に記載のデバイス。
【請求項25】
前記少なくとも1つの隣接しない候補を決定することの部分として、前記1つまたは複数のプロセッサは、前記現在のPUの左上のルーマサンプルに対する水平オフセットと前記現在のPUの前記左上のルーマサンプルに対する垂直オフセットとを決定するように構成された、請求項20に記載のデバイス。
【請求項26】
前記少なくとも1つの隣接しない候補ユニットを決定することの部分として、前記1つまたは複数のプロセッサは、前記現在のPUの左上のルーマサンプル座標に前記水平オフセットと前記垂直オフセットとを加算するようにさらに構成された、請求項25に記載のデバイス。
【請求項27】
前記1つまたは複数のプロセッサは、レベルインデックスを示す第1のシンタックス要素と前記水平オフセットおよび前記垂直オフセットを示す第2のシンタックス要素とに従って、前記水平オフセットと前記垂直オフセットとを決定するために使用するためにoffsetX=-iNADistanceHor-1およびoffsetY=height+iNADistanceVer-1、offsetX=width+iNADistanceHor-1およびoffsetY=-iNADistanceVer-1、offsetX=width>>1およびoffsetY=-iNADistanceVer-1、offsetX=-iNADistanceHor-1およびoffsetY=height>>1、またはoffsetX=-iNADistanceHor-1およびoffsetY=-iNADistanceVer-1のうちの1つを選択すること、ここにおいて、offsetXは、前記水平オフセットであり、offsetYは、前記垂直オフセットであり、widthは、いくつかのルーマサンプル中の前記現在のPUの幅であり、heightは、いくつかのルーマサンプル中の前記現在のPUの高さであり、iNAは、i番目の隣接しない候補ユニットを表し、iNADistanceHor=width*(前記レベルインデックス+1)であり、iNADistanceVer=height*(前記レベルインデックス+1)である、を行うようにさらに構成された、請求項25に記載のデバイス。
【請求項28】
前記AMVP候補リスト中の候補の数は2よりも大きい、請求項20に記載のデバイス。
【請求項29】
前記AMVP候補リスト中の候補の前記数は5である、請求項28に記載のデバイス。
【請求項30】
前記1つまたは複数のプロセッサは、
前記AMVP候補リスト中の各候補のためのそれぞれのテンプレートマッチングコストを決定することと、
前記AMVP候補リスト中の複数の候補のうちで最小のテンプレートマッチングコストを有する前記AMVP候補リスト中の候補である動きベクトル予測子を決定することと
を行うようにさらに構成された、請求項20に記載のデバイス。
【請求項31】
前記AMVP候補リストは、テンプレートマッチングで改良されたAMVP候補と改良されてないAMVP候補とを備える、ここにおいて、前記1つまたは複数のプロセッサは、AMVPインデックスをシグナリングまたはパースすること、前記AMVPインデックスは、動きベクトル予測子が前記テンプレートマッチングで改良されたAMVP候補であるのかまたは前記改良されてないAMVP候補であるのかを示す、を行うようにさらに構成された、請求項20に記載のデバイス。
【請求項32】
前記AMVPインデックスは0に等しく、ここにおいて、前記1つまたは複数のプロセッサは、
前記動きベクトル予測子が前記テンプレートマッチングで改良されたAMVP候補であると決定すること
を行うようにさらに構成された、請求項31に記載のデバイス。
【請求項33】
前記AMVPインデックスは1に等しく、ここにおいて、前記1つまたは複数のプロセッサは、
前記動きベクトル予測子が前記改良されてないAMVP候補であると決定すること
を行うようにさらに構成された、請求項31に記載のデバイス。
【請求項34】
前記1つまたは複数のプロセッサは、
前記AMVP候補リスト中の各候補のためのそれぞれのテンプレートマッチングコストを決定することと、
テンプレートマッチングを使用して、前記テンプレートマッチングで改良されたAMVP候補を作成するために最小のテンプレートマッチングコストを有するAMVP候補を改良することと
を行うようにさらに構成された、請求項31に記載のデバイス。
【請求項35】
前記改良されてないAMVP候補は、任意の潜在的なAMVP候補のうちの前記テンプレートマッチングで改良されたAMVP候補に対して最大の動きベクトル距離を有する、請求項31に記載のデバイス。
【請求項36】
前記改良されてないAMVP候補は、任意の潜在的なAMVP候補のうちの前記テンプレートマッチングで改良されたAMVP候補に対して動きベクトル距離比に対する最小のテンプレートマッチングコストを有する、請求項31に記載のデバイス。
【請求項37】
復号されたビデオデータを表示するように構成されたディスプレイをさらに備える、請求項20に記載のデバイス。
【請求項38】
前記ビデオデータをキャプチャするように構成されたカメラをさらに備える、請求項20に記載のデバイス。
【請求項39】
命令を記憶したコンピュータ可読記憶媒体であって、前記命令は、実行されたとき、1つまたは複数のプロセッサに、
時間候補または履歴ベースの候補のうちの少なくとも1つを決定することと、
少なくとも1つの隣接しない候補ユニットから少なくとも1つの隣接しない候補を決定することと、ここにおいて、前記少なくとも1つの隣接しない候補ユニットは、現在の予測ユニット(PU)に隣接しない、
前記時間候補または前記履歴ベースの候補のうちの前記少なくとも1つと前記少なくとも1つの隣接しない候補とを備える高度動きベクトル予測子(AMVP)候補リストを決定することと、ここにおいて、前記少なくとも1つの隣接しない候補は、前記時間候補の後または前記履歴ベースの候補の前のうちの少なくとも1つに前記AMVP候補リストに追加される、
前記AMVP候補リストに基づいて前記現在のPUをコーディングすることと
を行わせる、コンピュータ可読記憶媒体。
【請求項40】
ビデオデータをコーディングするためのデバイスであって、
時間候補または履歴ベースの候補のうちの少なくとも1つを決定するための手段と、
少なくとも1つの隣接しない候補ユニットから少なくとも1つの隣接しない候補を決定するための手段と、ここにおいて、前記少なくとも1つの隣接しない候補ユニットは、現在の予測ユニット(PU)に隣接しない、
前記時間候補または前記履歴ベースの候補のうちの前記少なくとも1つと前記少なくとも1つの隣接しない候補とを備える高度動きベクトル予測子(AMVP)候補リストを決定するための手段と、ここにおいて、前記少なくとも1つの隣接しない候補は、前記時間候補の後または前記履歴ベースの候補の前のうちの少なくとも1つに前記AMVP候補リストに追加される、
前記AMVP候補リストに基づいて前記現在のPUをコーディングするための手段と
を備えるデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
[0001]本出願は、その内容全体が参照により本明細書に組み込まれる、2022年3月25日に出願された米国特許出願第17/704,689号と、2021年3月29日に出願された米国仮出願第63/167,555号との優先権を主張する。2022年3月25日に出願された米国特許出願第17/704,689号は、2021年3月29日に出願された米国仮出願第63/167,555号の利益を主張する。
【0002】
[0002]本開示は、ビデオ符号化およびビデオ復号に関する。
【背景技術】
【0003】
[0003]デジタルビデオ能力は、デジタルテレビ、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタルレコーディングデバイス、デジタルメディアプレーヤ、ビデオゲーミングデバイス、ビデオゲーム機、セルラーまたは衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、幅広いデバイスの中に組み込まれ得る。デジタルビデオデバイスは、MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4,Part10,アドバンストビデオコーディング(AVC)、ITU-T H.265/高効率ビデオコーディング(HEVC)によって定義された規格、およびそのような規格の拡張に記載されているビデオコーディング技法、ならびにAlliance for Open Mediaによって開発されたAOMedia Video 1(AV1)などのプロプライエタリなビデオコーデック/フォーマットなど、ビデオコーディング技法を実施する。ビデオデバイスは、そのようなビデオコーディング技法を実施することによって、より効率的にデジタルビデオ情報を送信、受信、符号化、復号、および/または記憶し得る。
【0004】
[0004]ビデオコーディング技法は、ビデオシーケンスに固有の冗長性を低減または除去するための空間(イントラピクチャ)予測および/または時間(インターピクチャ)予測を含む。ブロックベースビデオコーディングでは、ビデオスライスまたはビデオタイル(たとえば、ビデオピクチャまたはビデオピクチャの一部分)が、コーディングブロック、スーパーブロック、コーディングツリーユニット(CTU)、コーディングユニット(CU)および/またはコーディングノードと呼ばれることもある、ビデオブロックに区分され得る。ピクチャのイントラコーディングされた(I)スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間予測を使用して符号化される。ピクチャのインターコーディングされた(PまたはB)スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間予測、または他の参照ピクチャ中の参照サンプルに対する時間予測を使用し得る。ピクチャはフレームと呼ばれることがあり、参照ピクチャは参照フレームと呼ばれることがある。
【発明の概要】
【0005】
[0005]概して、本開示は、高度動きベクトル予測子(AMVP)候補リストの構築およびAMVPインデックスのシグナリングのための技法について説明する。そのような技法は、HEVC(高効率ビデオコーディング)、VVC(多用途ビデオコーディング)、またはエッセンシャルビデオコーディング(EVC)などの任意の既存のビデオコーデックに適用され得るか、または将来のビデオコーディング規格におけるならびにプロプライエタリなビデオコーデック/フォーマットのための効率的なコーディングツールであり得る。たとえば、AMVP候補リストは、現在の予測ユニット(PU)に隣接しないユニット/ブロックから導出された1つまたは複数の隣接しない候補を含み得る。AMVP候補リスト中に1つまたは複数の隣接しない候補を含めることによって、AMVP候補リスト中の候補の動き情報はより多様になり得、これはコーディング効率を改善し得る。ユニットまたはブロック、たとえば、AMVP候補リストの(たとえば、動きベクトルなどの候補の動き情報を備える)候補が導出または決定される予測ユニットは、本明細書では候補ユニットまたはPUと呼ばれることもある。
【0006】
[0006]一例では、方法は、時間候補または履歴ベースの候補のうちの少なくとも1つを決定することと、少なくとも1つの隣接しない候補ユニットから少なくとも1つの隣接しない候補を決定することと、ここにおいて、少なくとも1つの隣接しない候補ユニットは、現在の予測ユニット(PU)に隣接しない、時間候補または履歴ベースの候補のうちの少なくとも1つと少なくとも1つの隣接しない候補とを備える高度動きベクトル予測子(AMVP)候補リストを決定することと、ここにおいて、少なくとも1つの隣接しない候補は、時間候補の後または履歴ベースの候補の前のうちの少なくとも1つにAMVP候補リストに追加される、AMVP候補リストに基づいて現在のPUをコーディングすることとを含む。
【0007】
[0007]別の例では、デバイスは、ビデオデータを記憶するように構成されたメモリと、回路中に実装され、メモリと通信可能に結合された1つまたは複数のプロセッサとを含み、1つまたは複数のプロセッサは、時間候補または履歴ベースの候補のうちの少なくとも1つを決定することと、少なくとも1つの隣接しない候補ユニットから少なくとも1つの隣接しない候補を決定することと、ここにおいて、少なくとも1つの隣接しない候補ユニットは、現在の予測ユニット(PU)に隣接しない、時間候補または履歴ベースの候補のうちの少なくとも1つと少なくとも1つの隣接しない候補とを備える高度動きベクトル予測子(AMVP)候補リストを決定することと、ここにおいて、少なくとも1つの隣接しない候補は、時間候補の後または履歴ベースの候補の前のうちの少なくとも1つにAMVP候補リストに追加される、AMVP候補リストに基づいて現在のPUをコーディングすることとを行うように構成される。
【0008】
[0008]別の例では、非一時的コンピュータ可読記憶媒体は、実行されたとき、1つまたは複数のプロセッサに、時間候補または履歴ベースの候補のうちの少なくとも1つを決定することと、少なくとも1つの隣接しない候補ユニットから少なくとも1つの隣接しない候補を決定することと、ここにおいて、少なくとも1つの隣接しない候補ユニットは、現在の予測ユニット(PU)に隣接しない、時間候補または履歴ベースの候補のうちの少なくとも1つと少なくとも1つの隣接しない候補とを備える高度動きベクトル予測子(AMVP)候補リストを決定することと、ここにおいて、少なくとも1つの隣接しない候補は、時間候補の後または履歴ベースの候補の前のうちの少なくとも1つにAMVP候補リストに追加される、AMVP候補リストに基づいて現在のPUをコーディングすることとを行わせる命令を記憶する。
【0009】
[0009]別の例では、デバイスは、時間候補または履歴ベースの候補のうちの少なくとも1つを決定するための手段と、少なくとも1つの隣接しない候補ユニットから少なくとも1つの隣接しない候補を決定するための手段と、ここにおいて、少なくとも1つの隣接しない候補ユニットは、現在の予測ユニット(PU)に隣接しない、時間候補または履歴ベースの候補のうちの少なくとも1つと少なくとも1つの隣接しない候補とを備える高度動きベクトル予測子(AMVP)候補リストを決定するための手段と、ここにおいて、少なくとも1つの隣接しない候補は、時間候補の後または履歴ベースの候補の前のうちの少なくとも1つにAMVP候補リストに追加される、AMVP候補リストに基づいて現在のPUをコーディングするための手段とを含む。
【0010】
[0010]別の例では、方法は、高度動きベクトル予測子(AMVP)候補を決定することと、ここにおいて、AMVP候補リスト中の少なくとも1つの候補は、隣接しない候補ユニットから導出される、ここにおいて、隣接しない候補ユニットは、現在の予測ユニット(PU)に隣接しない、AMVP候補リストに基づいて現在のPUをコーディングすることとを含む。
【0011】
[0011]別の例では、デバイスは、ビデオデータを記憶するように構成されたメモリと、回路中に実装され、メモリと通信可能に結合された1つまたは複数のプロセッサとを含み、1つまたは複数のプロセッサは、本開示の技法のいずれかを実施するように構成される。
【0012】
[0012]別の例では、デバイスは、本開示の技法のいずれかを実施するための少なくとも1つの手段を含む。
【0013】
[0013]別の例では、コンピュータ可読記憶媒体は、実行されたとき、プログラマブルプロセッサに、本開示の技法のいずれかを実施させる命令で符号化される。
【0014】
[0014]1つまたは複数の例の詳細が添付の図面および以下の説明に記載される。他の特徴、目的、および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0015】
図1】[0015]本開示の技法を実施し得る例示的なビデオ符号化および復号システムを示すブロック図。
図2A】[0016]例示的なクワッドツリーバイナリツリー(QTBT)構造を示す概念図。
図2B】対応するコーディングツリーユニット(CTU)を示す概念図。
図3】[0017]本開示の技法を実施し得る例示的なビデオエンコーダを示すブロック図。
図4】[0018]本開示の技法を実施し得る例示的なビデオデコーダを示すブロック図。
図5】[0019]高度動きベクトル予測子(AMVP)モードのための例示的な空間隣接動きベクトル候補を示す概念図。
図6A】[0020]例示的な時間動きベクトル予測子候補を示す概念図。
図6B】動きベクトルのスケーリングを示す概念図。
図7】[0021]履歴ベースの動きベクトル予測のための例示的な復号フローチャートを示す概念図。
図8】[0022]最初の動きベクトルの周りの探索エリアに対して実施されるテンプレートマッチングを示す概念図。
図9】[0023]隣接しないAMVP候補ユニットのロケーションを示す概念図。
図10】[0024]本開示の1つまたは複数の態様による、例示的なAMVP候補リスト技法を示すフローチャート。
図11】[0025]本開示の技法による、現在のブロックを符号化するための例示的な方法を示すフローチャート。
図12】[0026]本開示の技法による、現在のブロックを復号するための例示的な方法を示すフローチャート。
【発明を実施するための形態】
【0016】
[0027]テンプレートマッチング(TM)は、AMVP候補リストが構築された後に高度動きベクトル予測子(AMVP)候補を改良するために使用され得る。しかしながら、いくつかの例示的なシステムでは、AMVP候補は、空間ネイバーブロック、コロケートされた時間ブロック、右下の時間ブロック、または最近復号された予測ユニット(PU)から取得された履歴ベースの動き情報から導出または決定される。したがって、すべてのこれらの潜在的なAMVP候補が、まったく同様の動き情報を含んでいることが大いにあり得、これはAMVP候補リストの多様性に有害であり得る。さらに、いくつかの例示的なシステムでは、AMVP候補リストは、最大2つの候補を含んでいる。したがって、多様なAMVP候補を含む能力は、さらに低減または制限される。
【0017】
[0028]本明細書では、AMVP候補リスト中の候補の多様性を改善し得、より効率的なコーディングを生じ得るAMVP候補リストの構築およびAMVPインデックスのシグナリングの技法について説明される。たとえば、ビデオコーダ(たとえば、エンコーダまたはデコーダ)は、1つまたは複数の隣接しない候補を含むAMVP候補リストを構築し得る。1つまたは複数の隣接しない候補は、任意の時間候補の後におよび/または任意の履歴ベースの候補の前にAMVP候補リスト中に位置し得る。いくつかの例では、AMVP候補リストの長さは、5つの候補の長さになるなど、2つの候補よりも大きいことがある。AMVP候補リスト中に1つまたは複数の隣接しない候補を含めることによって、AMVP候補リスト中の候補の動き情報の多様性が増加され得、これはより効率的なコーディングを生じ得る。
【0018】
[0029]図1は、本開示の技法を実施し得る例示的なビデオ符号化および復号システム100を示すブロック図である。本開示の技法は、概して、ビデオデータをコーディング(符号化および/または復号)することを対象とする。概して、ビデオデータは、ビデオを処理するための任意のデータを含む。したがって、ビデオデータは、生の符号化されていないビデオ、符号化されたビデオ、復号された(たとえば、再構築された)ビデオ、およびシグナリングデータなどのビデオメタデータを含み得る。
【0019】
[0030]図1に示されているように、システム100は、この例では、宛先デバイス116によって復号および表示されるべき符号化されたビデオデータを提供するソースデバイス102を含む。特に、ソースデバイス102は、コンピュータ可読媒体110を介して宛先デバイス116にビデオデータを提供する。ソースデバイス102と宛先デバイス116とは、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、モバイルデバイス、タブレットコンピュータ、セットトップボックス、スマートフォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス、ブロードキャスト受信機デバイスなどを含む、広範囲にわたるデバイスのいずれかを備え得る。いくつかの場合には、ソースデバイス102と宛先デバイス116とは、ワイヤレス通信のために装備され得、したがって、ワイヤレス通信デバイスと呼ばれることがある。
【0020】
[0031]図1の例では、ソースデバイス102は、ビデオソース104と、メモリ106と、ビデオエンコーダ200と、出力インターフェース108とを含む。宛先デバイス116は、入力インターフェース122と、ビデオデコーダ300と、メモリ120と、ディスプレイデバイス118とを含む。本開示によれば、ソースデバイス102のビデオエンコーダ200と、宛先デバイス116のビデオデコーダ300とは、AMVP候補リストの構築およびAMVPインデックスのシグナリングのための技法を適用するように構成され得る。したがって、ソースデバイス102はビデオ符号化デバイスの一例を表し、宛先デバイス116はビデオ復号デバイスの一例を表す。他の例では、ソースデバイスと宛先デバイスとは、他の構成要素または配置を含み得る。たとえば、ソースデバイス102は、外部カメラなどの外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイス116は、一体型ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
【0021】
[0032]図1に示されているシステム100は一例にすぎない。概して、いかなるデジタルビデオ符号化および/または復号デバイスも、AMVP候補リストの構築およびAMVPインデックスのシグナリングための技法を実施し得る。ソースデバイス102と宛先デバイス116とは、ソースデバイス102が宛先デバイス116への送信のためにコーディングされたビデオデータを生成するようなコーディングデバイスの例にすぎない。本開示は、データのコーディング(符号化および/または復号)を実施するデバイスとして「コーディング」デバイスに言及する。したがって、ビデオエンコーダ200とビデオデコーダ300とは、コーディングデバイス、特に、それぞれビデオエンコーダとビデオデコーダとの例を表す。いくつかの例では、ソースデバイス102および宛先デバイス116は、ソースデバイス102および宛先デバイス116の各々がビデオ符号化構成要素およびビデオ復号構成要素を含むように、実質的に対称的に動作し得る。したがって、システム100は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオテレフォニーのために、ソースデバイス102と宛先デバイス116との間の一方向または二方向ビデオ送信をサポートし得る。
【0022】
[0033]概して、ビデオソース104は、ビデオデータ(すなわち、生の符号化されていないビデオデータ)のソースを表し、ビデオデータの連続的な一連のピクチャ(「フレーム」とも呼ばれる)をビデオエンコーダ200に提供し、ビデオエンコーダ200は、ピクチャのためにデータを符号化する。ソースデバイス102のビデオソース104は、ビデオカメラ、前にキャプチャされた生のビデオを含んでいるビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースなど、ビデオキャプチャデバイスを含み得る。さらなる代替として、ビデオソース104は、ソースビデオとしてコンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ生成されたビデオとの組合せを生成し得る。各場合において、ビデオエンコーダ200は、キャプチャされたビデオデータ、プリキャプチャされたビデオデータ、またはコンピュータ生成されたビデオデータを符号化する。ビデオエンコーダ200は、ピクチャを、(「表示順序」と呼ばれることがある)受信順序から、コーディングのためのコーディング順序に再配置し得る。ビデオエンコーダ200は、符号化されたビデオデータを含むビットストリームを生成し得る。ソースデバイス102は、次いで、たとえば、宛先デバイス116の入力インターフェース122による受信および/または取出しのために、出力インターフェース108を介して符号化されたビデオデータをコンピュータ可読媒体110上に出力し得る。
【0023】
[0034]ソースデバイス102のメモリ106と、宛先デバイス116のメモリ120とは、汎用メモリを表す。いくつかの例では、メモリ106、120は、生のビデオデータ、たとえば、ビデオソース104からの生のビデオと、ビデオデコーダ300からの生の復号されたビデオデータとを記憶し得る。追加または代替として、メモリ106、120は、たとえば、それぞれ、ビデオエンコーダ200とビデオデコーダ300とによって実行可能なソフトウェア命令を記憶し得る。メモリ106およびメモリ120は、この例ではビデオエンコーダ200およびビデオデコーダ300とは別個に示されているが、ビデオエンコーダ200およびビデオデコーダ300は、機能的に同様のまたは等価な目的で内部メモリをも含み得ることを理解されたい。さらに、メモリ106、120は、符号化されたビデオデータ、たとえば、ビデオエンコーダ200からの出力と、ビデオデコーダ300への入力とを記憶し得る。いくつかの例では、メモリ106、120の部分は、たとえば、生の復号および/または符号化されたビデオデータを記憶するために、1つまたは複数のビデオバッファとして割り振られ得る。
【0024】
[0035]コンピュータ可読媒体110は、ソースデバイス102から宛先デバイス116に符号化されたビデオデータを移送することが可能な任意のタイプの媒体またはデバイスを表し得る。一例では、コンピュータ可読媒体110は、ソースデバイス102が、たとえば、無線周波数ネットワークまたはコンピュータベースネットワークを介して、符号化されたビデオデータを宛先デバイス116にリアルタイムで直接送信することを可能にするための通信媒体を表す。出力インターフェース108は、符号化されたビデオデータを含む送信信号を変調し得、入力インターフェース122は、ワイヤレス通信プロトコルなどの通信規格に従って、受信された送信信号を復調し得る。通信媒体は、無線周波数(RF)スペクトルまたは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースのネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス102から宛先デバイス116への通信を容易にするのに有用であり得る任意の他の機器を含み得る。
【0025】
[0036]いくつかの例では、ソースデバイス102は、符号化されたデータを出力インターフェース108から記憶デバイス112に出力し得る。同様に、宛先デバイス116は、入力インターフェース122を介してストレージデバイス112からの符号化されたデータにアクセスし得る。ストレージデバイス112は、ハードドライブ、Blu-ray(登録商標)ディスク、DVD、CD-ROM、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは符号化されたビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。
【0026】
[0037]いくつかの例では、ソースデバイス102は、ソースデバイス102によって生成された符号化されたビデオデータを記憶し得るファイルサーバ114または別の中間ストレージデバイスに符号化されたビデオデータを出力し得る。宛先デバイス116は、ストリーミングまたはダウンロードを介してファイルサーバ114からの記憶されたビデオデータにアクセスし得る。
【0027】
[0038]ファイルサーバ114は、符号化されたビデオデータを記憶し、その符号化されたビデオデータを宛先デバイス116に送信することが可能な任意のタイプのサーバデバイスであり得る。ファイルサーバ114は、(たとえば、ウェブサイトのための)ウェブサーバ、(ファイル転送プロトコル(FTP)または単方向トランスポート上ファイル配信(FLUTE:File Delivery over Unidirectional Transport)プロトコルなどの)ファイル転送プロトコルサービスを提供するように構成されたサーバ、コンテンツ配信ネットワーク(CDN)デバイス、ハイパーテキスト転送プロトコル(HTTP)サーバ、マルチメディアブロードキャストマルチキャストサービス(MBMS)または拡張MBMS(eMBMS)サーバ、および/あるいはネットワーク接続ストレージ(NAS)デバイスを表し得る。ファイルサーバ114は、追加または代替として、動的適応ストリーミングオーバーHTTP(DASH)、HTTPライブストリーミング(HLS)、リアルタイムストリーミングプロトコル(RTSP)、HTTP動的ストリーミングなど、1つまたは複数のHTTPストリーミングプロトコルを実装し得る。
【0028】
[0039]宛先デバイス116は、インターネット接続を含む、任意の標準のデータ接続を通してファイルサーバ114から符号化されたビデオデータにアクセスし得る。これは、ファイルサーバ114に記憶された符号化されたデータにアクセスするのに好適であるワイヤレスチャネル(たとえば、Wi-Fi(登録商標)接続)、ワイヤード接続(たとえば、デジタル加入者回線(DSL)、ケーブルモデムなど)、またはその両方の組合せを含み得る。入力インターフェース122は、ファイルサーバ114からメディアデータを取り出すまたは受信するための上記で説明された様々なプロトコル、あるいはメディアデータを取り出すための他のそのようなプロトコルのうちのいずれか1つまたは複数に従って動作するように構成され得る。
【0029】
[0040]出力インターフェース108と入力インターフェース122とは、ワイヤレス送信機/受信機、モデム、ワイヤードネットワーキング構成要素(たとえば、イーサネット(登録商標)カード)、様々なIEEE802.11規格のいずれかに従って動作するワイヤレス通信構成要素、または他の物理的構成要素を表し得る。出力インターフェース108および入力インターフェース122がワイヤレス構成要素を備える例では、出力インターフェース108および入力インターフェース122は、4G、4G-LTE(登録商標)(ロングタームエボリューション)、LTEアドバンスト、5Gなど、セルラー通信規格に従って、符号化されたビデオデータなどのデータを転送するように構成され得る。出力インターフェース108がワイヤレス送信機を備えるいくつかの例では、出力インターフェース108と入力インターフェース122とは、IEEE802.11仕様、IEEE802.15仕様(たとえば、ZigBee(登録商標))、Bluetooth(登録商標)規格など、他のワイヤレス規格に従って、符号化ビデオデータなどのデータを転送するように構成され得る。いくつかの例では、ソースデバイス102および/または宛先デバイス116は、それぞれのシステムオンチップ(SoC)デバイスを含み得る。たとえば、ソースデバイス102は、ビデオエンコーダ200および/または出力インターフェース108に帰属する機能を実施するためのSoCデバイスを含み得、宛先デバイス116は、ビデオデコーダ300および/または入力インターフェース122に帰属する機能を実施するためのSoCデバイスを含み得る。
【0030】
[0041]本開示の技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体上に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。
【0031】
[0042]宛先デバイス116の入力インターフェース122は、コンピュータ可読媒体110(たとえば、通信媒体、記憶デバイス112、ファイルサーバ114など)から符号化ビデオビットストリームを受信する。符号化されたビデオビットストリームは、ビデオブロックまたは他のコーディングされたユニット(たとえば、スライス、ピクチャ、ピクチャグループ、シーケンスなど)の特性および/または処理を記述する値を有するシンタックス要素など、ビデオデコーダ300によっても使用される、ビデオエンコーダ200によって定義されるシグナリング情報を含み得る。ディスプレイデバイス118は、復号されたビデオデータの復号されたピクチャをユーザに表示する。ディスプレイデバイス118は、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを表し得る。
【0032】
[0043]図1には示されていないが、いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は各々、オーディオエンコーダおよび/またはオーディオデコーダと統合され得、共通のデータストリーム中にオーディオとビデオの両方を含む多重化ストリームをハンドリングするために、適切なMUX-DEMUXユニット、あるいは他のハードウェアおよび/またはソフトウェアを含み得る。適用可能な場合、MUX-DEMUXユニットはITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
【0033】
[0044]ビデオエンコーダ200およびビデオデコーダ300は各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダおよび/またはデコーダ回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアの命令を記憶し、本開示の技法を実施するために1つまたは複数のプロセッサを使用してその命令をハードウェアで実行し得る。ビデオエンコーダ200とビデオデコーダ300との各々は、1つまたは複数のエンコーダまたはデコーダに含まれ得、それらのいずれかが、それぞれのデバイス中の複合エンコーダ/デコーダ(CODEC)の一部として統合され得る。ビデオエンコーダ200および/またはビデオデコーダ300を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラー電話機などのワイヤレス通信デバイスを備え得る。
【0034】
[0045]ビデオエンコーダ200およびビデオデコーダ300は、高効率ビデオコーディング(HEVC)とも呼ばれるITU-T H.265、あるいはマルチビューおよび/またはスケーラブルビデオコーディング拡張などのそれらの拡張など、ビデオコーディング規格に従って動作し得る。代替的に、ビデオエンコーダ200およびビデオデコーダ300は、汎用ビデオコーディング(VVC)とも呼ばれるITU-T H.266など、他のプロプライエタリ規格または業界規格に従って動作し得る。VVC規格のドラフトは、Brossら、「Versatile Video Coding(Draft10)」、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のジョイントビデオエキスパートチーム(JVET)、第20回会合、遠隔会議による、2020年10月7~16日、JVET-T2001-v1(以下、「VVCドラフト10」)に記載されている。しかしながら、本開示の技法は、どんな特定のコーディング規格にも限定されない。
【0035】
[0046]概して、ビデオエンコーダ200およびビデオデコーダ300は、ピクチャのブロックベースコーディングを実施し得る。「ブロック」という用語は、概して、処理されるべき(たとえば、符号化されるべき、復号されるべき、または、符号化および/もしくは復号プロセスにおいて他の方法で使用されるべき)データを含む構造を指す。たとえば、ブロックは、ルミナンスおよび/またはクロミナンスデータのサンプルの2次元行列を含み得る。概して、ビデオエンコーダ200およびビデオデコーダ300は、YUV(たとえば、Y、Cb、Cr)フォーマットで表されるビデオデータをコーディングし得る。すなわち、ピクチャのサンプルのために赤色、緑色、および青色(RGB)データをコーディングするのではなく、ビデオエンコーダ200およびビデオデコーダ300は、ルミナンス成分とクロミナンス成分とをコーディングし得、ここで、クロミナンス成分は、赤色相と青色相の両方のクロミナンス成分を含み得る。いくつかの例では、ビデオエンコーダ200は、符号化より前に、受信されたRGBフォーマットのデータをYUV表現にコンバートし、ビデオデコーダ300は、YUV表現をRGBフォーマットにコンバートする。代替的に、前処理および後処理ユニット(図示せず)が、これらのコンバージョンを実施し得る。
【0036】
[0047]本開示は、概して、ピクチャのデータを符号化または復号するプロセスを含むように、ピクチャのコーディング(たとえば、符号化および復号)に言及することがある。同様に、本開示は、ブロックのためのデータを符号化または復号するプロセス、たとえば、予測および/または残差コーディングを含むように、ピクチャのブロックのコーディングに言及することがある。符号化されたビデオビットストリームは、概して、コーディング決定(たとえば、コーディングモード)とブロックへのピクチャの区分とを表すシンタックス要素についての一連の値を含む。したがって、ピクチャまたはブロックをコーディングすることへの言及は、概して、ピクチャまたはブロックを形成するシンタックス要素の値をコーディングすることとして理解されるべきである。
【0037】
[0048]HEVCは、コーディングユニット(CU)、予測ユニット(PU)、および変換ユニット(TU)を含む、様々なブロックを定義する。HEVCに従って、(ビデオエンコーダ200などの)ビデオコーダは、クワッドツリー構造に従ってコーディングツリーユニット(CTU)をCUに区分する。すなわち、ビデオコーダは、CTUとCUとを4つの等しい重複しない正方形に区分し、クワッドツリーの各ノードは、0個または4つのいずれかの子ノードを有する。子ノードのないノードは、「リーフノード」と呼ばれることがあり、そのようなリーフノードのCUは、1つまたは複数のPUおよび/または1つまたは複数のTUを含み得る。ビデオコーダは、PUとTUとをさらに区分し得る。たとえば、HEVCでは、残差クワッドツリー(RQT)は、TUの区分を表す。HEVCでは、PUはインター予測データを表すが、TUは残差データを表す。イントラ予測されるCUは、イントラモード指示などのイントラ予測情報を含む。
【0038】
[0049]別の例として、ビデオエンコーダ200およびビデオデコーダ300は、VVCに従って動作するように構成され得る。VVCによれば、(ビデオエンコーダ200などの)ビデオコーダは、ピクチャを複数のCTUに区分する。ビデオエンコーダ200は、クワッドツリーバイナリツリー(QTBT)構造またはマルチタイプツリー(MTT)構造など、ツリー構造に従ってCTUを区分し得る。QTBT構造は、HEVCのCUとPUとTUとの間の分離など、複数の区分タイプの概念を除去する。QTBT構造は、2つのレベル、すなわち、クワッドツリー区分に従って区分される第1のレベルと、バイナリツリー区分に従って区分される第2のレベルとを含む。QTBT構造のルートノードは、CTUに対応する。バイナリツリーのリーフノードは、CUに対応する。
【0039】
[0050]MTT区分構造では、ブロックは、クワッドツリー(QT)区分と、バイナリツリー(BT)区分と、1つまたは複数のタイプのトリプルツリー(TT)(ターナリツリー(TT)とも呼ばれる)区分とを使用して区分され得る。トリプルツリーまたはターナリツリー区分は、ブロックが3つのサブブロックにスプリットされる区分である。いくつかの例では、トリプルツリーまたはターナリツリー区分は、中心を通して元のブロックを分割することなしにブロックを3つのサブブロックに分割する。MTTにおける区分タイプ(たとえば、QT、BT、およびTT)は、対称または非対称であり得る。
【0040】
[0051]いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、ルミナンス成分とクロミナンス成分との各々を表すために単一のQTBTまたはMTT構造を使用し得、他の例では、ビデオエンコーダ200およびビデオデコーダ300は、ルミナンス成分のための1つのQTBT/MTT構造、および両方のクロミナンス成分のための別のQTBT/MTT構造(またはそれぞれのクロミナンス成分のための2つのQTBT/MTT構造)など、2つまたはそれ以上のQTBTまたはMTT構造を使用し得る。
【0041】
[0052]ビデオエンコーダ200およびビデオデコーダ300は、HEVCに従うクワッドツリー区分、QTBT区分、MTT区分、または他の区分構造を使用するように構成され得る。説明の目的で、本開示の技法の説明はQTBT区分に関して提示される。しかしながら、本開示の技法は、クワッドツリー区分、または同様に他のタイプの区分を使用するように構成されたビデオコーダにも適用され得ることを理解されたい。
【0042】
[0053]いくつかの例では、CTUは、ルーマサンプルのコーディングツリーブロック(CTB)、3つのサンプルアレイを有するピクチャのクロマサンプルの2つの対応するCTB、あるいはモノクロームピクチャ、またはサンプルをコーディングするために使用される3つの別個の色プレーンとシンタックス構造とを使用してコーディングされるピクチャのサンプルのCTBを含む。CTBは、CTBへの成分の分割が区分になるような何らかの値のNについて、サンプルのN×Nブロックであり得る。成分は、ピクチャを4:2:0、4:2:2、または4:4:4色フォーマットに構成する3つのアレイ(ルーマおよび2つのクロマ)のうちの1つからのアレイまたは単一のサンプル、あるいはピクチャをモノクロームフォーマットに構成するアレイまたはアレイの単一のサンプルである。いくつかの例では、コーディングブロックは、コーディングブロックへのCTBの分割が区分になるような何らかの値のMとNとについて、サンプルのM×Nブロックである。
【0043】
[0054]ブロック(たとえば、CTUまたはCU)は、ピクチャ中で様々な方法でグループ化され得る。一例として、ブリックは、ピクチャ中の特定のタイル内のCTU行の矩形領域を指し得る。タイルは、ピクチャ中の特定のタイル列および特定のタイル行内のCTUの矩形領域であり得る。タイル列は、ピクチャの高さに等しい高さと、(たとえば、ピクチャパラメータセット中などの)シンタックス要素によって指定された幅とを有するCTUの矩形領域を指す。タイル行は、(たとえば、ピクチャパラメータセット中などの)シンタックス要素によって指定された高さと、ピクチャの幅に等しい幅とを有するCTUの矩形領域を指す。
【0044】
[0055]いくつかの例では、タイルは複数のブリックに区分され得、それらの各々は、タイル内に1つまたは複数のCTU行を含み得る。複数のブリックに区分されないタイルもブリックと呼ばれることがある。しかしながら、タイルの真のサブセットであるブリックは、タイルと呼ばれないことがある。
【0045】
[0056]ピクチャ中のブリックはまた、スライス中に配置され得る。スライスは、もっぱら単一のネットワークアブストラクションレイヤ(NAL)ユニット中に含まれていることがあるピクチャの整数個のブリックであり得る。いくつかの例では、スライスは、いくつかの完全なタイル、または1つのタイルの完全なブリックの連続シーケンスのみのいずれかを含む。
【0046】
[0057]本開示は、「N×N(NxN)」および「N×N(N by N)」は、垂直寸法と水平寸法とに関して(CUまたは他のビデオブロックなどの)ブロックのサンプル寸法を指すために、「N×N(NxN)」および「N×N(N by N)」、たとえば、16×16サンプル(16x16 samples)または16×16サンプル(16 by 16 samples)を互換的に使用し得る。概して、16×16のCUは、垂直方向に16個のサンプルを有し(y=16)、水平方向に16個のサンプルを有する(x=16)。同様に、N×NのCUは、概して、垂直方向にN個のサンプルを有し、水平方向にN個のサンプルを有し、ここで、Nは非負整数値を表す。CU中のサンプルは、行と列とに配置され得る。その上、CUは、必ずしも、水平方向において垂直方向と同じ数のサンプルを有する必要があるとは限らない。たとえば、CUはN×Mサンプルを備え得、ここで、Mは必ずしもNに等しいとは限らない。
【0047】
[0058]ビデオエンコーダ200は、予測および/または残差情報、ならびに他の情報を表すCUについてのビデオデータを符号化する。予測情報は、CUについて予測ブロックを形成するためにCUがどのように予測されるべきかを示す。残差情報は、概して、符号化より前のCUのサンプルと予測ブロックとの間のサンプルごとの差分を表す。
【0048】
[0059]CUを予測するために、ビデオエンコーダ200は、概して、インター予測またはイントラ予測を通してCUについて予測ブロックを形成し得る。インター予測は、概して、以前にコーディングされたピクチャのデータからCUを予測することを指すが、イントラ予測は、概して、同じピクチャの以前にコーディングされたデータからCUを予測することを指す。インター予測を実施するために、ビデオエンコーダ200は、1つまたは複数の動きベクトルを使用して予測ブロックを生成し得る。ビデオエンコーダ200は、概して、たとえば、CUまたはコーディングブロックと参照ブロックとの間の差分に関して、CUまたはコーディングブロックに厳密に一致する参照ブロックを識別するために動き探索を実施し得る。ビデオエンコーダ200は、参照ブロックが現在のCUに厳密に一致するかどうかを決定するために、絶対差分和(SAD)、2乗差分和(SSD)、平均絶対差(MAD)、平均2乗差(MSD)、または他のそのような差分計算を使用して差分メトリックを計算し得る。いくつかの例では、ビデオエンコーダ200は、単方向予測または双方向予測を使用して現在のCUを予測し得る。
【0049】
[0060]VVCのいくつかの例はまた、インター予測モードと見なされ得るアフィン動き補償モードを提供する。アフィン動き補償モードでは、ビデオエンコーダ200は、ズームインまたはアウト、回転、パースペクティブの動き、あるいは他の変則の動きタイプなど、非並進の動きを表す2つまたはそれ以上の動きベクトルを決定し得る。
【0050】
[0061]イントラ予測を実施するために、ビデオエンコーダ200は、予測ブロックを生成するようにイントラ予測モードを選択し得る。VVCのいくつかの例は、様々な方向性モード、ならびにプレーナ(planar)モードおよびDCモードを含む、67個のイントラ予測モードを提供する。概して、ビデオエンコーダ200は、現在のブロック(たとえば、CUのブロック)のサンプルをそれから予測すべき、現在のブロックに対する隣接サンプルを記述するイントラ予測モードを選択する。そのようなサンプルは、ビデオエンコーダ200がラスタ走査順序で(左から右に、上から下に)CTUとCUとをコーディングすると仮定すると、概して、現在のブロックと同じピクチャ中の現在のブロックの上、左上、または左にあり得る。
【0051】
[0062]ビデオエンコーダ200は、現在のブロックの予測モードを表すデータを符号化する。たとえば、インター予測モードでは、ビデオエンコーダ200は、様々な利用可能なインター予測モードのうちのどれが使用されるか、ならびに対応するモードのための動き情報を表すデータを符号化し得る。たとえば、単方向または双方向インター予測では、ビデオエンコーダ200は、AMVPまたはマージモードを使用して動きベクトルを符号化し得る。ビデオエンコーダ200は、アフィン動き補償モードのための動きベクトルを符号化するために、同様のモードを使用し得る。
【0052】
[0063]ブロックのイントラ予測またはインター予測などの予測に続いて、ビデオエンコーダ200は、ブロックについて残差データを計算し得る。残差ブロックなどの残差データは、ブロックと、対応する予測モードを使用して形成された、ブロックについての予測ブロックとの間の、サンプルごとの差分を表す。ビデオエンコーダ200は、サンプルドメインではなく変換ドメイン中に変換データを作り出すために、残差ブロックに1つまたは複数の変換を適用し得る。たとえば、ビデオエンコーダ200は、離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換を残差ビデオデータに適用し得る。さらに、ビデオエンコーダ200は、モード依存非分離可能2次変換(MDNSST)、信号依存変換、カルーネンレーベ変換(KLT)など、第1の変換に続いて2次変換を適用し得る。ビデオエンコーダ200は、1つまたは複数の変換の適用に続いて変換係数を作り出す。
【0053】
[0064]上述のように、変換係数を作り出すための任意の変換に続いて、ビデオエンコーダ200は変換係数の量子化を実施し得る。量子化は、概して、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を行うプロセスを指す。量子化プロセスを実施することによって、ビデオエンコーダ200は、変換係数の一部または全部に関連するビット深度を低減し得る。たとえば、ビデオエンコーダ200は、量子化の間にnビット値をmビット値に切り捨てることがあり、ここで、nはmよりも大きい。いくつかの例では、量子化を実施するために、ビデオエンコーダ200は、量子化されるべき値のビットごとの右シフトを実施し得る。
【0054】
[0065]量子化に続いて、ビデオエンコーダ200は、変換係数を走査して、量子化された変換係数を含む2次元行列から1次元ベクトルを作り出し得る。走査は、より高いエネルギー(したがって、より低い頻度)の変換係数をベクトルの前方に配置し、より低いエネルギー(したがって、より高い頻度)の変換係数をベクトルの後方に配置するように設計され得る。いくつかの例では、ビデオエンコーダ200は、あらかじめ定義された走査順序を利用して、量子化された変換係数を走査してシリアル化されたベクトルを作り出し、次いで、ベクトルの量子化された変換係数をエントロピー符号化し得る。他の例では、ビデオエンコーダ200は、適応走査を実施し得る。1次元ベクトルを形成するために、量子化された変換係数を走査した後に、ビデオエンコーダ200は、たとえば、コンテキスト適応型バイナリ算術コーディング(CABAC)に従って、1次元ベクトルをエントロピー符号化し得る。ビデオエンコーダ200はまた、ビデオデータを復号する際のビデオデコーダ300による使用のために、符号化されたビデオデータに関連付けられたメタデータを記述するシンタックス要素の値をエントロピー符号化し得る。
【0055】
[0066]CABACを実施するために、ビデオエンコーダ200は、送信されるべきシンボルにコンテキストモデル内のコンテキストを割り当て得る。コンテキストは、たとえば、シンボルの隣接値が0値であるのか否かに関係し得る。確率決定は、シンボルに割り当てられたコンテキストに基づき得る。
【0056】
[0067]ビデオエンコーダ200は、さらに、ブロックベースシンタックスデータ、ピクチャベースシンタックスデータ、およびシーケンスベースシンタックスデータなどのシンタックスデータを、たとえば、ピクチャヘッダ、ブロックヘッダ、スライスヘッダ、あるいはシーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、またはビデオパラメータセット(VPS)などの他のシンタックスデータ中で、ビデオデコーダ300に対して生成し得る。ビデオデコーダ300は、対応するビデオデータをどのように復号すべきかを決定するために、そのようなシンタックスデータを同様に復号し得る。
【0057】
[0068]このようにして、ビデオエンコーダ200は、符号化されたビデオデータ、たとえば、ブロック(たとえば、CU)へのピクチャの区分ならびにブロックについての予測および/または残差情報を記述するシンタックス要素を含むビットストリームを生成し得る。最終的に、ビデオデコーダ300は、ビットストリームを受信し、符号化されたビデオデータを復号し得る。
【0058】
[0069]概して、ビデオデコーダ300は、ビットストリームの符号化されたビデオデータを復号するために、ビデオエンコーダ200によって実施されたものの逆プロセスを実施する。たとえば、ビデオデコーダ300は、ビデオエンコーダ200のCABAC符号化プロセスと逆ではあるが、それと実質的に同様の様式でCABACを使用してビットストリームのシンタックス要素についての値を復号し得る。シンタックス要素は、CTUのCUを定義するために、ピクチャをCTUに区分するための区分情報と、QTBT構造などの対応する区分構造に従う、各CTUの区分とを定義し得る。シンタックス要素は、ビデオデータのブロック(たとえば、CU)についての予測および残差情報をさらに定義し得る。
【0059】
[0070]残差情報は、たとえば、量子化された変換係数によって表され得る。ビデオデコーダ300は、ブロックのための残差ブロックを再生するために、ブロックの量子化された変換係数を逆量子化し、逆変換し得る。ビデオデコーダ300は、ブロックのための予測ブロックを形成するために、シグナリングされた予測モード(イントラまたはインター予測)と、関連する予測情報(たとえば、インター予測のための動き情報)とを使用する。ビデオデコーダ300は、次いで、元のブロックを再生するために(サンプルごとに)予測ブロックと残差ブロックとを組み合わせ得る。ビデオデコーダ300は、ブロックの境界に沿って視覚的アーティファクトを低減するためにデブロッキングプロセスを実施することなど、追加の処理を実施し得る。
【0060】
[0071]本開示の技法によれば、方法は、時間候補または履歴ベースの候補のうちの少なくとも1つを決定することと、少なくとも1つの隣接しない候補ユニットから少なくとも1つの隣接しない候補を決定することと、ここにおいて、少なくとも1つの隣接しない候補は、現在の予測ユニット(PU)に隣接しない、時間候補または履歴ベースの候補のうちの少なくとも1つと少なくとも1つの隣接しない候補とを備える高度動きベクトル予測子(AMVP)候補リストを決定することと、ここにおいて、少なくとも1つの隣接しない候補は、時間候補の後または履歴ベースの候補の前のうちの少なくとも1つにAMVP候補リストに追加される、AMVP候補リストに基づいて現在のPUをコーディングすることとを含む。
【0061】
[0072]本開示の技法によれば、デバイスは、ビデオデータを記憶するように構成されたメモリと、回路中に実装され、メモリと通信可能に結合された1つまたは複数のプロセッサとを含み、1つまたは複数のプロセッサは、時間候補または履歴ベースの候補のうちの少なくとも1つを決定することと、少なくとも1つの隣接しない候補ユニットから少なくとも1つの隣接しない候補を決定することと、ここにおいて、少なくとも1つの隣接しない候補ユニットは、現在の予測ユニット(PU)に隣接しない、時間候補または履歴ベースの候補のうちの少なくとも1つと少なくとも1つの隣接しない候補とを備える高度動きベクトル予測子(AMVP)候補リストを決定することと、ここにおいて、少なくとも1つの隣接しない候補は、時間候補の後または履歴ベースの候補の前のうちの少なくとも1つにAMVP候補リストに追加される、AMVP候補リストに基づいて現在のPUをコーディングすることとを行うように構成される。
【0062】
[0073]本開示の技法によれば、非一時的コンピュータ可読記憶媒体は、実行されたとき、1つまたは複数のプロセッサに、時間候補または履歴ベースの候補のうちの少なくとも1つを決定することと、少なくとも1つの隣接しない候補ユニットから少なくとも1つの隣接しない候補を決定することと、ここにおいて、少なくとも1つの隣接しない候補ユニットは、現在の予測ユニット(PU)に隣接しない、時間候補または履歴ベースの候補のうちの少なくとも1つと少なくとも1つの隣接しない候補とを備える高度動きベクトル予測子(AMVP)候補リストを決定することと、ここにおいて、少なくとも1つの隣接しない候補は、時間候補の後または履歴ベースの候補の前のうちの少なくとも1つにAMVP候補リストに追加される、AMVP候補リストに基づいて現在のPUをコーディングすることとを行わせる命令を記憶する。
【0063】
[0074]本開示の技法によれば、デバイスは、時間候補または履歴ベースの候補のうちの少なくとも1つを決定するための手段と、少なくとも1つの隣接しない候補ユニットから少なくとも1つの隣接しない候補を決定するための手段と、ここにおいて、少なくとも1つの隣接しない候補ユニットは、現在の予測ユニット(PU)に隣接しない、時間候補または履歴ベースの候補のうちの少なくとも1つと少なくとも1つの隣接しない候補とを備える高度動きベクトル予測子(AMVP)候補リストを決定するための手段と、ここにおいて、少なくとも1つの隣接しない候補は、時間候補の後または履歴ベースの候補の前のうちの少なくとも1つにAMVP候補リストに追加される、AMVP候補リストに基づいて現在のPUをコーディングするための手段とを含む。
【0064】
[0075]本開示の技法によれば、方法は、AMVP候補リストを決定することと、ここにおいて、AMVP候補リスト中の少なくとも1つの候補は、隣接しない候補ユニットから導出される、ここにおいて、隣接しない候補ユニットは、現在のPUに隣接しない、AMVP候補リストに基づいて現在のPUをコーディングすることとを含む。
【0065】
[0076]本開示の技法によれば、デバイスは、ビデオデータを記憶するように構成されたメモリと、回路中に実装され、メモリと通信可能に結合された1つまたは複数のプロセッサとを含み、1つまたは複数のプロセッサは、本開示の技法のいずれかを実施するように構成される。
【0066】
[0077]本開示の技法によれば、デバイスは、本開示の技法のいずれかを実施するための少なくとも1つの手段を含む。
【0067】
[0078]本開示の技法によれば、コンピュータ可読記憶媒体は、実行されたとき、プログラマブルプロセッサに、本開示の技法のいずれかを実施させる命令で符号化される。
【0068】
[0079]本開示は、概して、シンタックス要素などのある情報を「シグナリング」または「パース」することに言及し得る。「シグナリング」という用語は、概して、符号化ビデオデータを復号するために使用されるシンタックス要素および/または他のデータについての値の通信を指し得る。すなわち、ビデオエンコーダ200は、ビットストリームにおいてシンタックス要素についての値をシグナリングし得る。概して、シグナリングは、ビットストリームにおいて値を生成することを指す。上述のように、ソースデバイス102は、宛先デバイス116による後の取出しのためにシンタックス要素を記憶デバイス112に記憶するときに起こり得る、ビットストリームを、実質的にリアルタイムで、またはリアルタイムではなく、宛先デバイス116に移送し得る。「パースする」という用語は、シグナリングされたシンタックス要素および/または他のデータの値を決定することを指す。たとえば、ビデオデコーダ300は、シグナリングされたシンタックス要素の値を決定するためにシグナリングされたシンタックス要素をパースし得る。
【0069】
[0080]図2A図2Bとは、例示的なQTBT構造130と、対応するCTU132とを示す概念図である。実線はクワッドツリースプリッティングを表し、点線はバイナリツリースプリッティングを示す。バイナリツリーの各スプリット(すなわち、非リーフ)ノードでは、どのスプリッティングタイプ(すなわち、水平または垂直)が使用されるかを示すために1つのフラグがシグナリングされ、ここで、この例では、0は水平スプリッティングを示し、1は垂直スプリッティングを示す。クワッドツリースプリッティングでは、クワッドツリーノードが、ブロックを、等しいサイズをもつ4つのサブブロックに水平および垂直にスプリットするので、スプリッティングタイプを示す必要がない。したがって、QTBT構造130の領域ツリーレベルについての(スプリッティング情報などの)シンタックス要素(すなわち、実線)と、QTBT構造130の予測ツリーレベルについての(スプリッティング情報などの)シンタックス要素(すなわち、破線)とを、ビデオエンコーダ200は符号化し得、ビデオデコーダ300は復号し得る。QTBT構造130の端末リーフノードによって表されるCUについての、予測および変換データなどのビデオデータを、ビデオエンコーダ200は符号化し得、ビデオデコーダ300は復号し得る。
【0070】
[0081]概して、図2BのCTU132は、第1および第2のレベルにおいてQTBT構造130のノードに対応するブロックのサイズを定義するパラメータに関連付けられ得る。これらのパラメータは、(サンプル中のCTU132のサイズを表す)CTUサイズと、最小クワッドツリーサイズ(最小許容クワッドツリーリーフノードサイズを表すMinQTSize)と、最大バイナリツリーサイズ(最大許容バイナリツリールートノードサイズを表すMaxBTSize)と、最大バイナリツリー深度(最大許容バイナリツリー深度を表すMaxBTDepth)と、最小バイナリツリーサイズ(最小許容バイナリツリーリーフノードサイズを表すMinBTSize)とを含み得る。
【0071】
[0082]CTUに対応するQTBT構造のルートノードは、QTBT構造の第1のレベルにおいて4つの子ノードを有し得、それらの各々は、クワッドツリー区分に従って区分され得る。すなわち、第1のレベルのノードは、(子ノードを有しない)リーフノードであるか、または4つの子ノードを有するかのいずれかである。QTBT構造130の例は、分岐のために実線を有する親ノードと子ノードとを含むようなノードを表す。第1のレベルのノードが最大許容バイナリツリールートノードサイズ(MaxBTSize)よりも大きくない場合、ノードは、それぞれのバイナリツリーによってさらに区分され得る。1つのノードのバイナリツリースプリッティングは、スプリットから生じるノードが最小許容バイナリツリーリーフノードサイズ(MinBTSize)または最大許容バイナリツリー深度(MaxBTDepth)に達するまで反復され得る。QTBT構造130の例は、分岐のために破線を有するようなノードを表す。バイナリツリーリーフノードはコーディングユニット(CU)と呼ばれ、CUは、さらなる区分なしに予測(たとえば、イントラピクチャまたはインターピクチャ予測)および変換のために使用される。上記で説明されたように、CUは「ビデオブロック」または「ブロック」と呼ばれることもある。
【0072】
[0083]QTBT区分構造の一例では、CTUサイズは、128×128(ルーマサンプルおよび2つの対応する64×64クロマサンプル)としてセットされ、MinQTSizeは16×16としてセットされ、MaxBTSizeは64×64としてセットされ、(幅と高さの両方について)MinBTSizeは4としてセットされ、MaxBTDepthは4としてセットされる。クワッドツリー区分は、クワッドツリーリーフノードを生成するために、最初にCTUに適用される。クワッドツリーリーフノードは、16×16(すなわち、MinQTSize)から128×128(すなわち、CTUサイズ)までのサイズを有し得る。クワッドツリーリーフノードが128×128である場合、リーフクワッドツリーノードは、サイズがMaxBTSize(すなわち、この例では、64×64)を超えるので、バイナリツリーによってさらにスプリットされない。他の場合、クワッドツリーリーフノードは、バイナリツリーによってさらに区分される。したがって、クワッドツリーリーフノードはまた、バイナリツリーのためのルートノードであり、0としてのバイナリツリー深度を有する。バイナリツリー深度がMaxBTDepth(この例では4)に達したとき、さらなるスプリッティングは許可されない。MinBTSize(この例では、4)に等しい幅を有するバイナリツリーノードは、そのバイナリツリーノードのためにさらなる垂直スプリッティング(すなわち、幅の分割)が許可されないことを暗示する。同様に、MinBTSizeに等しい高さを有するバイナリツリーノードは、そのバイナリツリーノードのためにさらなる水平スプリッティング(すなわち、高さの分割)が許可されないことを暗示する。上述のように、バイナリツリーのリーフノードは、CUと呼ばれ、さらなる区分なしに予測および変換に従ってさらに処理される。
【0073】
[0084]図3は、本開示の技法を実施し得る例示的なビデオエンコーダ200を示すブロック図である。図3は、説明のために提供されるものであり、本開示で広く例示され記載される技法を限定するものと見なされるべきではない。説明の目的で、本開示は、VVC(ITU-T H.266)およびHEVC(ITU-T H.265)の技法に従って、ビデオエンコーダ200について説明する。しかしながら、本開示の技法は、他のビデオコーディング規格またはプロプライエタリなコーディング技法に構成されたビデオ符号化デバイスによって実施され得る。
【0074】
[0085]図3の例では、ビデオエンコーダ200は、ビデオデータメモリ230と、モード選択ユニット202と、残差生成ユニット204と、変換処理ユニット206と、量子化ユニット208と、逆量子化ユニット210と、逆変換処理ユニット212と、再構成ユニット214と、フィルタユニット216と、復号ピクチャバッファ(DPB)218と、エントロピー符号化ユニット220とを含む。ビデオデータメモリ230と、モード選択ユニット202と、残差生成ユニット204と、変換処理ユニット206と、量子化ユニット208と、逆量子化ユニット210と、逆変換処理ユニット212と、再構築ユニット214と、フィルタユニット216と、DPB218と、エントロピー符号化ユニット220とのいずれかまたはすべては、1つまたは複数のプロセッサ中にあるいは処理回路中に実装され得る。たとえば、ビデオエンコーダ200のユニットは、1つまたは複数の回路または論理要素として、ハードウェア回路構成の一部として、またはプロセッサ、ASIC、もしくはFPGAの一部として、実装され得る。その上、ビデオエンコーダ200は、これらおよび他の機能を実施するための追加または代替のプロセッサまたは処理回路を含み得る。
【0075】
[0086]ビデオデータメモリ230は、ビデオエンコーダ200の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオエンコーダ200は、たとえば、ビデオソース104(図1)からビデオデータメモリ230中に記憶されたビデオデータを受信し得る。DPB218は、ビデオエンコーダ200による後続のビデオデータの予測において使用するための参照ビデオデータを記憶する参照ピクチャメモリとして働き得る。ビデオデータメモリ230とDPB218とは、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗性RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ230とDPB218とは、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ230は、図示のように、ビデオエンコーダ200の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
【0076】
[0087]本開示では、ビデオデータメモリ230への言及は、特にそのように説明されない限り、ビデオエンコーダ200の内部のメモリに限定されるものとして解釈されるべきではなく、または特にそのように説明されない限り、ビデオエンコーダ200の外部のメモリに限定されるものとして解釈されるべきではない。そうではなく、ビデオデータメモリ230への言及は、ビデオエンコーダ200が符号化のために受信するビデオデータ(たとえば、符号化されるべきである現在のブロックについてのビデオデータ)を記憶する参照メモリとして理解されるべきである。図1のメモリ106はまた、ビデオエンコーダ200の様々なユニットからの出力の一時的なストレージを提供し得る。
【0077】
[0088]図3の様々なユニットは、ビデオエンコーダ200によって実行される動作を理解するのを支援するために示されている。ユニットは、固定機能回路、プログラマブル回路、またはそれらの組合せとして実装され得る。固定機能回路は、特定の機能を提供する回路を指し、実施され得る動作に関してあらかじめ設定される。プログラマブル回路は、様々なタスクを実施するように、および実施され得る動作においてフレキシブルな機能を提供するようにプログラムされ得る回路を指す。たとえば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義された様式でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(たとえば、パラメータを受信するかまたはパラメータを出力するために)ソフトウェア命令を実行し得るが、固定機能回路が実施する動作のタイプは、概して不変である。いくつかの例では、ユニットのうちの1つまたは複数は、別個の回路ブロック(固定機能またはプログラマブル)であり得、いくつかの例では、ユニットのうちの1つまたは複数は、集積回路であり得る。
【0078】
[0089]ビデオエンコーダ200は、算術論理ユニット(ALU)、基本機能ユニット(EFU)、デジタル回路、アナログ回路、および/またはプログラマブル回路から形成されるプログラマブルコアを含み得る。ビデオエンコーダ200の動作が、プログラマブル回路によって実行されるソフトウェアを使用して実施される例では、メモリ106(図1)は、ビデオエンコーダ200が受信し、実行するソフトウェアの命令(たとえば、オブジェクトコード)を記憶し得るか、またはビデオエンコーダ200内の別のメモリ(図示せず)が、そのような命令を記憶し得る。
【0079】
[0090]ビデオデータメモリ230は、受信されたビデオデータを記憶するように構成される。ビデオエンコーダ200は、ビデオデータメモリ230からビデオデータのピクチャを取り出し、残差生成ユニット204とモード選択ユニット202とにビデオデータを提供し得る。ビデオデータメモリ230中のビデオデータは、符号化されるべきである生のビデオデータであり得る。
【0080】
[0091]モード選択ユニット202は、動き推定ユニット222と、動き補償ユニット224と、イントラ予測ユニット226とを含む。モード選択ユニット202は、他の予測モードに従ってビデオ予測を実施するための追加の機能ユニットを含み得る。例として、モード選択ユニット202は、パレットユニット、(動き推定ユニット222および/または動き補償ユニット224の一部であり得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニットなどを含み得る。
【0081】
[0092]モード選択ユニット202は、概して、符号化パラメータの組合せをテストするために複数の符号化パスを協調させ、そのような組合せのためのレートひずみ値を生じる。符号化パラメータは、CUへのCTUの区分、CUのための予測モード、CUの残差データのための変換タイプ、CUの残差データのための量子化パラメータなどを含み得る。モード選択ユニット202は、他のテストされた組合せよりも良好であるレートひずみ値を有する符号化パラメータの組合せを最終的に選択し得る。
【0082】
[0093]ビデオエンコーダ200は、ビデオデータメモリ230から取り出されたピクチャを一連のCTUに区分し、スライス内の1つまたは複数のCTUをカプセル化し得る。モード選択ユニット202は、上記で説明されたHEVCのQTBT構造またはクワッドツリー構造など、ツリー構造に従ってピクチャのCTUを区分し得る。上記で説明されたように、ビデオエンコーダ200は、ツリー構造に従ってCTUを区分することから1つまたは複数のCUを形成し得る。そのようなCTUはまた、一般に「ビデオブロック」または「ブロック」と呼ばれることもある。
【0083】
[0094]概して、モード選択ユニット202はまた、現在のブロック(たとえば、現在のCU、またはHEVCでは、PUとTUとの重複する部分)についての予測ブロックを生成するように、それの構成要素(たとえば、動き推定ユニット222、動き補償ユニット224、およびイントラ予測ユニット226)を制御する。現在のブロックのインター予測のために、動き推定ユニット222は、1つまたは複数の参照ピクチャ(たとえば、DPB218に記憶されている1つまたは複数の以前のコード化ピクチャ)中で1つまたは複数のぴったり一致する参照ブロックを識別するために動き探索を実行し得る。特に、動き推定ユニット222は、たとえば、絶対差分和(SAD)、2乗差分和(SSD)、平均絶対差(MAD)、平均2乗差(MSD)などに従って、現在のブロックに対して潜在的参照ブロックがどのくらい類似しているかを表す値を計算し得る。動き推定ユニット222は、概して、現在のブロックと考慮されている参照ブロックとの間のサンプルごとの差分を使用してこれらの計算を実施し得る。動き推定ユニット222は、現在のブロックに最も厳密に一致する参照ブロックを示す、これらの計算から得られた最も低い値を有する参照ブロックを識別し得る。いくつかの例では、動き推定ユニット222は、時間候補または履歴ベースの候補のうちの少なくとも1つを決定し得るAMVPユニット223を含み得る。AMVPユニット223はまた、少なくとも1つの隣接しない候補ユニットから少なくとも1つの隣接しない候補を決定し得、ここにおいて、少なくとも1つの隣接しない候補ユニットは、現在のPUに隣接しない。AMVPユニット223は、時間候補または履歴ベースの候補のうちの少なくとも1つと少なくとも1つの隣接しない候補とを含むAMVP候補リストを決定し得る。AMVPユニット223は、時間候補の後におよび/または履歴ベースの候補の前にAMVP候補リストに少なくとも1つの隣接しない候補を追加し得る。
【0084】
[0095]動き推定ユニット222は、現在のピクチャ中の現在のブロックの位置に対して参照ピクチャ中の参照ブロックの位置を定義する1つまたは複数の動きベクトル(MV)を形成し得る。動き推定ユニット222は、次いで、動きベクトルを動き補償ユニット224に提供し得る。たとえば、単方向インター予測では、動き推定ユニット222は、単一の動きベクトルを提供し得るが、双方向インター予測では、動き推定ユニット222は、2つの動きベクトルを提供し得る。動き補償ユニット224は、次いで、動きベクトルを使用して予測ブロックを生成し得る。予測ブロックは、予測サンプルのブロックであり得、PUと呼ばれることもある。たとえば、動き補償ユニット224は、動きベクトルを使用して参照ブロックのデータを取り出し得る。別の例として、動きベクトルが分数サンプル精度を有する場合、動き補償ユニット224は、1つまたは複数の補間フィルタに従って予測ブロックについての値を補間し得る。さらに、双方向インター予測では、動き補償ユニット224は、それぞれの動きベクトルによって識別された2つの参照ブロックのためのデータを取り出し、たとえば、サンプルごとの平均化または重み付け平均化を通して取り出されたデータを組み合わせ得る。
【0085】
[0096]別の例として、イントラ予測、またはイントラ予測コーディングでは、イントラ予測ユニット226は、現在のブロックに隣接しているサンプルから予測ブロックを生成し得る。たとえば、方向性モードでは、イントラ予測ユニット226は、概して、予測ブロックを作り出すために、隣接サンプルの値を数学的に組み合わせ、現在のブロックにわたって定義された方向にこれらの計算された値をポピュレートし得る。別の例として、DCモードでは、イントラ予測ユニット226は、現在のブロックに対する隣接サンプルの平均を計算し、予測ブロックの各サンプルについてこの得られた平均を含むように予測ブロックを生成し得る。
【0086】
[0097]モード選択ユニット202は、残差生成ユニット204に予測ブロック、たとえば、予測サンプルのブロックを与える。残差生成ユニット204は、ビデオデータメモリ230から現在のブロックの生の、符号化されていないバージョンを受信し、モード選択ユニット202から予測ブロックを受信する。残差生成ユニット204は、現在のブロックと予測ブロックとの間のサンプルごとの差分を計算する。得られたサンプルごとの差分は、現在のブロックについての残差ブロックを定義する。いくつかの例では、残差生成ユニット204はまた、残差差分パルスコード変調(RDPCM)を使用して残差ブロックを生成するために、残差ブロック中のサンプル値間の差分を決定し得る。いくつかの例では、残差生成ユニット204は、バイナリ減算を実施する1つまたは複数の減算器回路を使用して形成され得る。
【0087】
[0098]モード選択ユニット202がCUをPUに区分する例では、各PUは、ルーマ予測ユニットと、対応するクロマ予測ユニットとに関連付けられ得る。ビデオエンコーダ200とビデオデコーダ300とは、様々なサイズを有するPUをサポートし得る。上記で示されたように、CUのサイズは、CUのルーマコーディングブロックのサイズを指し得、PUのサイズは、PUのルーマ予測ユニットのサイズを指し得る。特定のCUのサイズが2N×2Nであると仮定すると、ビデオエンコーダ200は、イントラ予測のための2N×2NまたはN×NのPUサイズと、インター予測のための2N×2N、2N×N、N×2N、N×N、または同様のものの対称PUサイズとをサポートし得る。ビデオエンコーダ200およびビデオデコーダ300はまた、インター予測のための2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズについて非対称区分をサポートし得る。
【0088】
[0099]モード選択ユニット202がCUをPUにさらに区分しない例では、各CUは、ルーマコーディングブロックと、対応するクロマコーディングブロックとに関連付けられ得る。上記のように、CUのサイズは、CUのルーマコーディングブロックのサイズを指し得る。ビデオエンコーダ200とビデオデコーダ300とは、2N×2N、2N×N、またはN×2NのCUサイズをサポートし得る。
【0089】
[0100]いくつかの例として、イントラブロックコピーモードコーディング、アフィンモードコーディング、および線形モデル(LM)モードコーディングなどの他のビデオコーディング技法では、モード選択ユニット202は、コーディング技法に関連付けられたそれぞれのユニットを介して、符号化されている現在のブロックについての予測ブロックを生成する。パレットモードコーディングなど、いくつかの例では、モード選択ユニット202は、予測ブロックを生成しないことがあり、代わりに、選択されたパレットに基づいてブロックを再構築すべき様式を示すシンタックス要素を生成し得る。そのようなモードでは、モード選択ユニット202は、符号化されるべきこれらのシンタックス要素をエントロピー符号化ユニット220に提供し得る。
【0090】
[0101]上記で説明されたように、残差生成ユニット204は、現在のブロックについてのビデオデータと、対応する予測ブロックとを受信する。残差生成ユニット204は、次いで、現在のブロックについての残差ブロックを生成する。残差ブロックを生成するために、残差生成ユニット204は、予測ブロックと現在のブロックとの間のサンプルごとの差分を計算する。
【0091】
[0102]変換処理ユニット206は、(本明細書では「変換係数ブロック」と呼ばれる)変換係数のブロックを生成するために、残差ブロックに1つまたは複数の変換を適用する。変換処理ユニット206は、変換係数ブロックを形成するために、残差ブロックに様々な変換を適用し得る。たとえば、変換処理ユニット206は、離散コサイン変換(DCT)、方向性変換、カルーネンレーベ変換(KLT)、または概念的に同様の変換を残差ブロックに適用し得る。いくつかの例では、変換処理ユニット206は、残差ブロックに複数の変換、たとえば、回転変換など、1次変換および2次変換を実施し得る。いくつかの例では、変換処理ユニット206は、残差ブロックに変換を適用しない。
【0092】
[0103]量子化ユニット208は、量子化された変換係数ブロックを生成するために、変換係数ブロック中の変換係数を量子化し得る。量子化ユニット208は、現在のブロックに関連付けられた量子化パラメータ(QP)値に従って変換係数ブロックの変換係数を量子化し得る。ビデオエンコーダ200は(たとえば、モード選択ユニット202を介して)、CUに関連付けられたQP値を調整することによって、現在のブロックに関連付けられた変換係数ブロックに適用される量子化の程度を調整し得る。量子化は情報の損失をもたらし得、したがって、量子化変換係数は、変換処理ユニット206によって生成された元の変換係数よりも低い精度を有し得る。
【0093】
[0104]逆量子化ユニット210および逆変換処理ユニット212は、変換係数ブロックから残差ブロックを再構築するために、それぞれ、量子化変換係数ブロックに逆量子化および逆変換を適用し得る。再構築ユニット214は、再構築された残差ブロックとモード選択ユニット202によって生成された予測ブロックとに基づいて(潜在的にある程度のひずみを伴うが)現在のブロックに対応する再構築されたブロックを生成し得る。たとえば、再構築ユニット214は、再構築されたブロックを作り出すために、モード選択ユニット202によって生成された予測ブロックからの対応するサンプルに、再構築された残差ブロックのサンプルを加算し得る。
【0094】
[0105]フィルタユニット216は、再構築されたブロックに対して1つまたは複数のフィルタ演算を実施し得る。たとえば、フィルタユニット216は、CUのエッジに沿ってブロッキネスアーティファクトを低減するためのデブロッキング動作を実施し得る。いくつかの例では、フィルタユニット216の動作はスキップされ得る。
【0095】
[0106]ビデオエンコーダ200は、DPB218中に再構築されたブロックを記憶する。たとえば、フィルタユニット216の動作が実施されない例では、再構築ユニット214は、再構築されたブロックをDPB218に記憶し得る。フィルタユニット216の動作が実施される例では、フィルタユニット216は、フィルタ処理された再構築されたブロックをDPB218に記憶し得る。動き推定ユニット222および動き補償ユニット224は、後で符号化されるピクチャのブロックをインター予測するために、再構築(および潜在的にフィルタリング)されたブロックから形成された参照ピクチャをDPB218から取り出し得る。さらに、イントラ予測ユニット226は、現在のピクチャ中の他のブロックをイントラ予測するために、現在のピクチャのDPB218中の再構築されたブロックを使用し得る。
【0096】
[0107]概して、エントロピー符号化ユニット220は、ビデオエンコーダ200の他の機能構成要素から受信されたシンタックス要素をエントロピー符号化し得る。たとえば、エントロピー符号化ユニット220は、量子化ユニット208からの量子化変換係数ブロックをエントロピー符号化し得る。別の例として、エントロピー符号化ユニット220は、モード選択ユニット202からの予測シンタックス要素(たとえば、インター予測のための動き情報、またはイントラ予測のためのイントラモード情報)をエントロピー符号化し得る。エントロピー符号化ユニット220は、エントロピー符号化データを生成するために、ビデオデータの別の例であるシンタックス要素に対して1つまたは複数のエントロピー符号化動作を実施し得る。たとえば、エントロピー符号化ユニット220は、コンテキスト適応型可変長コーディング(CAVLC)動作、CABAC動作、可変対可変(V2V)長コーディング動作、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)動作、確率間隔区分エントロピー(PIPE)コーディング動作、指数ゴロム符号化動作、または別のタイプのエントロピー符号化動作をデータに対して実施し得る。いくつかの例では、エントロピー符号化ユニット220は、シンタックス要素がエントロピー符号化されないバイパスモードで動作し得る。
【0097】
[0108]ビデオエンコーダ200は、スライスまたはピクチャのブロックを再構築するために必要とされるエントロピー符号化シンタックス要素を含むビットストリームを出力し得る。特に、エントロピー符号化ユニット220がビットストリームを出力し得る。
【0098】
[0109]上記で説明された動作は、ブロックに関して説明される。そのような説明は、ルーマコーディングブロックおよび/またはクロマコーディングブロックのための動作であるものとして理解されるべきである。上記で説明されたように、いくつかの例では、ルーマコーディングブロックとクロマコーディングブロックとは、CUのルーマ成分とクロマ成分とである。いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、PUのルーマ成分およびクロマ成分である。
【0099】
[0110]いくつかの例では、ルーマコーディングブロックに関して実施される動作は、クロマコーディングブロックのために繰り返される必要はない。一例として、ルーマコーディングブロックのための動きベクトル(MV)と参照ピクチャとを識別するための動作は、クロマブロックのためのMVと参照ピクチャとを識別するために繰り返される必要はない。むしろ、ルーマコーディングブロックのためのMVは、クロマブロックのためのMVを決定するためにスケーリングされ得、参照ピクチャは同じであり得る。別の例として、イントラ予測プロセスは、ルーマコーディングブロックとクロマコーディングブロックとについて同じであり得る。
【0100】
[0111]ビデオエンコーダ200は、ビデオデータを記憶するように構成されたメモリと、回路中に実装され、時間候補または履歴ベースの候補のうちの少なくとも1つを決定することと、少なくとも1つの隣接しない候補ユニットから少なくとも1つの隣接しない候補を決定することと、ここにおいて、少なくとも1つの隣接しない候補ユニットは、現在の予測ユニット(PU)に隣接しない、時間候補または履歴ベースの候補のうちの少なくとも1つと少なくとも1つの隣接しない候補とを備える高度動きベクトル予測子(AMVP)候補リストを決定することと、ここにおいて、少なくとも1つの隣接しない候補は、時間候補の後または履歴ベースの候補の前のうちの少なくとも1つにAMVP候補リストに追加される、AMVP候補リストに基づいて現在のPUをコーディングすることとを行うように構成された1つまたは複数の処理ユニットとを含む、ビデオデータを符号化するように構成されたデバイスの一例を表す。
【0101】
[0112]ビデオエンコーダ200はまた、ビデオデータを記憶するように構成されたメモリと、回路中に実装され、AMVP候補リストを決定することと、ここにおいて、AMVP候補リスト中の少なくとも1つの候補は、隣接しない候補ユニットから導出される、ここにおいて、少なくとも1つの隣接しない候補ユニットは、現在のPUに隣接しない、AMVP候補リストに基づいて現在のPUを符号化することとを行うように構成された1つまたは複数の処理ユニットとを含む、ビデオデータを符号化するように構成されたデバイスの一例を表す。いくつかの例では、少なくとも1つの隣接しない候補は、任意の時間候補の後および/または任意の履歴ベースの候補の前にある。
【0102】
[0113]図4は、本開示の技法を実行し得る例示的なビデオデコーダ300を示すブロック図である。図4は説明のために提供され、本開示で広く例示され記載される技法を限定するものではない。説明の目的で、本開示は、VVC(ITU-T H.266)およびHEVC(ITU-T H.265)の技法に従って、ビデオデコーダ300について説明する。しかしながら、本開示の技法は、他のビデオコーディング規格に従って動作するように構成されたビデオコーディングデバイスによって実行され得る。
【0103】
[0114]図4の例では、ビデオデコーダ300は、コード化ピクチャバッファ(CPB)メモリ320と、エントロピー復号ユニット302と、予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構成ユニット310と、フィルタユニット312と、復号ピクチャバッファ(DPB)314とを含む。CPBメモリ320と、エントロピー復号ユニット302と、予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構築ユニット310と、フィルタユニット312と、DPB314とのいずれかまたはすべては、1つまたは複数のプロセッサ中にあるいは処理回路中に実装され得る。たとえば、ビデオデコーダ300のユニットは、1つまたは複数の回路または論理要素として、ハードウェア回路の一部として、あるいはプロセッサ、ASIC、またはFPGAの一部として実装され得る。その上、ビデオデコーダ300は、これらおよび他の機能を実施するための追加または代替のプロセッサまたは処理回路を含み得る。
【0104】
[0115]予測処理ユニット304は、動き補償ユニット316と、イントラ予測ユニット318とを含む。予測処理ユニット304は、他の予測モードに従って予測を実施するための追加のユニットを含み得る。例として、予測処理ユニット304は、パレットユニット、(動き補償ユニット316の一部を形成し得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニットなどを含み得る。他の例では、ビデオデコーダ300は、より多数の、より少数の、または異なる機能構成要素を含み得る。
【0105】
[0116]CPBメモリ320は、ビデオデコーダ300の構成要素によって復号されるべき、符号化されたビデオビットストリームなどのビデオデータを記憶し得る。CPBメモリ320に記憶されるビデオデータは、たとえば、コンピュータ可読媒体110(図1)から取得され得る。CPBメモリ320は、符号化されたビデオビットストリームからの符号化されたビデオデータ(たとえば、シンタックス要素)を記憶するCPBを含み得る。また、CPBメモリ320は、ビデオデコーダ300の様々なユニットからの出力を表す一時データなど、コード化ピクチャのシンタックス要素以外のビデオデータを記憶し得る。DPB314は、一般に、ビデオデコーダ300が符号化されたビデオビットストリームの後続のデータまたはピクチャを復号するときに出力しおよび/または参照ビデオデータとして使用し得る復号されたピクチャを記憶する。CPBメモリ320およびDPB314は、SDRAMを含むDRAM、MRAM、RRAM、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。CPBメモリ320およびDPB314は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、CPBメモリ320は、ビデオデコーダ300の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
【0106】
[0117]追加または代替として、いくつかの例では、ビデオデコーダ300は、メモリ120(図1)からコード化ビデオデータを取り出し得る。すなわち、メモリ120は、CPBメモリ320とともに上記で説明されたようにデータを記憶し得る。同様に、メモリ120は、ビデオデコーダ300の機能の一部または全部が、ビデオデコーダ300の処理回路によって実行されるべきソフトウェアにおいて実装されたとき、ビデオデコーダ300によって実行されるべき命令を記憶し得る。
【0107】
[0118]図4に示されている様々なユニットは、ビデオデコーダ300によって実行される動作を理解するのを支援するために図示されている。ユニットは、固定機能回路、プログラマブル回路、またはそれらの組合せとして実装され得る。図3と同様に、固定機能回路は、特定の機能を提供する回路を指し、実施され得る動作に関してあらかじめ設定される。プログラマブル回路は、様々なタスクを実施するように、および実施され得る動作においてフレキシブルな機能を提供するようにプログラムされ得る回路を指す。たとえば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義される様式でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(たとえば、パラメータを受信するかまたはパラメータを出力するために)ソフトウェア命令を実行し得るが、固定機能回路が実施する動作のタイプは、概して不変である。いくつかの例では、ユニットのうちの1つまたは複数は、別個の回路ブロック(固定機能またはプログラマブル)であり得、いくつかの例では、ユニットのうちの1つまたは複数は、集積回路であり得る。
【0108】
[0119]ビデオデコーダ300は、ALU、EFU、デジタル回路、アナログ回路、および/またはプログラマブル回路から形成されるプログラマブルコアを含み得る。ビデオデコーダ300の動作が、プログラマブル回路上で実行するソフトウェアによって実施される例では、オンチップまたはオフチップメモリは、ビデオデコーダ300が受信し、実行するソフトウェアの命令(たとえば、オブジェクトコード)を記憶し得る。
【0109】
[0120]エントロピー復号ユニット302は、CPBから、符号化されたビデオデータを受信し、シンタックス要素を再生するためにビデオデータをエントロピー復号し得る。予測処理ユニット304、逆量子化ユニット306、逆変換処理ユニット308、再構築ユニット310、およびフィルタユニット312は、ビットストリームから抽出されたシンタックス要素に基づいて、復号されたビデオデータを生成し得る。
【0110】
[0121]概して、ビデオデコーダ300は、ブロックごとにピクチャを再構築する。ビデオデコーダ300は、各ブロックに対して個々に再構築動作を実施し得る(ここで、現在再構築されている、すなわち、復号されているブロックは、「現在のブロック」と呼ばれることがある)。
【0111】
[0122]エントロピー復号ユニット302は、量子化された変換係数ブロックの量子化された変換係数を定義するシンタックス要素、ならびに量子化パラメータ(QP)および/または(1つまたは複数の)変換モード指示などの変換情報をエントロピー復号し得る。逆量子化ユニット306は、量子化の程度と、同様に、逆量子化ユニット306が適用すべき逆量子化の程度とを決定するために、量子化された変換係数ブロックに関連付けられたQPを使用し得る。逆量子化ユニット306は、量子化された変換係数を逆量子化するために、たとえば、ビット単位左シフト動作を実施し得る。逆量子化ユニット306は、それにより、変換係数を含む変換係数ブロックを形成し得る。
【0112】
[0123]逆量子化ユニット306が変換係数ブロックを形成した後、逆変換処理ユニット308は、現在のブロックに関連付けられた残差ブロックを生成するために、変換係数ブロックに1つまたは複数の逆変換を適用し得る。たとえば、逆変換処理ユニット308は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向変換、または別の逆変換を変換係数ブロックに適用し得る。
【0113】
[0124]さらに、予測処理ユニット304は、エントロピー復号ユニット302によってエントロピー復号された予測情報シンタックス要素に従って予測ブロックを生成する。たとえば、現在のブロックがインター予測されることを予測情報シンタックス要素が示す場合、動き補償ユニット316は予測ブロックを生成し得る。この場合、予測情報シンタックス要素は、参照ブロックをそれから取り出すべきDPB314中の参照ピクチャ、ならびに現在ピクチャ中の現在ブロックのロケーションに対する参照ピクチャ中の参照ブロックのロケーションを識別する動きベクトルを示し得る。動き補償ユニット316は、概して、動き補償ユニット224(図3)に関して説明された方式と実質的に同様である方式でインター予測プロセスを実施し得る。いくつかの例では、動き補償ユニット316は、時間候補または履歴ベースの候補のうちの少なくとも1つを決定し得るAMVPユニット317を含み得る。AMVPユニット317はまた、少なくとも1つの隣接しない候補ユニットから少なくとも1つの隣接しない候補を決定し得、ここにおいて、少なくとも1つの隣接しない候補ユニットは、現在のPUに隣接しない。AMVPユニット317は、時間候補または履歴ベースの候補のうちの少なくとも1つと少なくとも1つの隣接しない候補とを含むAMVP候補リストを決定し得る。AMVPユニット317は、時間候補の後におよび/または履歴ベースの候補の前にAMVP候補リストに少なくとも1つの隣接しない候補を追加し得る。
【0114】
[0125]別の例として、予測情報シンタックス要素が、現在のブロックがイントラ予測されることを示す場合、イントラ予測ユニット318は、予測情報シンタックス要素によって示されるイントラ予測モードに従って予測ブロックを生成し得る。この場合も、イントラ予測ユニット318は、概して、イントラ予測ユニット226(図3)に関して説明されたものと実質的に同様である様式でイントラ予測プロセスを実施し得る。イントラ予測ユニット318は、DPB314から、現在のブロックに対する隣接サンプルのデータを取り出し得る。
【0115】
[0126]再構築ユニット310は、予測ブロックと残差ブロックとを使用して現在のブロックを再構築し得る。たとえば、再構築ユニット310は、現在のブロックを再構築するために、予測ブロックの対応するサンプルに残差ブロックのサンプルを加算し得る。
【0116】
[0127]フィルタユニット312は、再構築されたブロックに対して1つまたは複数のフィルタ動作を実施し得る。たとえば、フィルタユニット312は、再構築されたブロックのエッジに沿ってブロッキネスアーティファクトを低減するためのデブロッキング動作を実施し得る。フィルタユニット312の動作は、必ずしもすべての例において実施されるとは限らない。
【0117】
[0128]ビデオデコーダ300は、DPB314中に再構成されたブロックを記憶し得る。たとえば、フィルタユニット312の動作が実施されない例では、再構築ユニット310は、再構築されたブロックをDPB314に記憶し得る。フィルタユニット312の動作が実施される例では、フィルタユニット312は、フィルタ処理された再構築されたブロックをDPB314に記憶し得る。上記で説明されたように、DPB314は、イントラ予測のための現在ピクチャのサンプル、および後続の動き補償のための前に復号されたピクチャなど、参照情報を、予測処理ユニット304に提供し得る。その上、ビデオデコーダ300は、DPB314からの復号ピクチャ(たとえば、復号ビデオ)を、図1のディスプレイデバイス118などのディスプレイデバイス上での後続の提示のために、出力し得る。
【0118】
[0129]このようにして、ビデオデコーダ300は、ビデオデータを記憶するように構成されたメモリと、回路中に実装され、時間候補または履歴ベースの候補のうちの少なくとも1つを決定することと、少なくとも1つの隣接しない候補ユニットから少なくとも1つの隣接しない候補を決定することと、ここにおいて、少なくとも1つの隣接しない候補ユニットは、現在の予測ユニット(PU)に隣接しない、時間候補または履歴ベースの候補のうちの少なくとも1つと少なくとも1つの隣接しない候補とを備える高度動きベクトル予測子(AMVP)候補リストを決定することと、ここにおいて、少なくとも1つの隣接しない候補は、時間候補の後または履歴ベースの候補の前のうちの少なくとも1つにAMVP候補リストに追加される、AMVP候補リストに基づいて現在のPUをコーディングすることとを行うように構成された1つまたは複数の処理ユニットとを含む、ビデオ復号デバイスの一例を表す。
【0119】
[0130]ビデオデコーダ300はまた、ビデオデータを記憶するように構成されたメモリと、回路中に実装され、AMVP候補リストを決定することと、ここにおいて、AMVP候補リスト中の少なくとも1つの候補は、隣接しない候補ユニットから導出される、ここにおいて、隣接しない候補ユニットは、現在のPUに隣接しない、AMVP候補リストに基づいて現在のPUを復号することとを行うように構成された1つまたは複数の処理ユニットとを含む、ビデオ復号デバイスの一例を表す。
【0120】
[0131]このセクションでは、HEVC、JEMおよびVVC Draft10技法について説明する。ビデオコーディング規格は、ITU-T H.261、ISO/IEC MPEG-1 Visual、ITU-T H.262またはISO/IEC MPEG-2 Visual、ITU-T H.263、ISO/IEC MPEG-4 Visual、およびそれのスケーラブルビデオコーディング(SVC)拡張とマルチビュービデオコーディング(MVC)拡張とを含む、(ISO/IEC MPEG-4 AVCとしても知られる)ITU-T H.264を含む。
【0121】
[0132]さらに、ビデオコーディング規格、すなわち、それの範囲拡張、マルチビュー拡張(MV-HEVC)およびスケーラブル拡張(SHVC)を含む、HEVCまたはITU-T H.265が、ジョイントコラボレーションチームオンビデオコーディング(JCT-VC)ならびにITU-Tビデオコーディングエキスパートグループ(VCEG)とISO/IECモーションピクチャエキスパートグループ(MPEG)とのジョイントコラボレーションチームオン3Dビデオコーディング拡張開発(JCT-3V)によって開発された。
【0122】
[0133]ITU-T VCEG(Q6/16)およびISO/IEC MPEG(JTC1/SC29/WG11)は、(スクリーンコンテンツコーディングおよび高ダイナミックレンジコーディングのためのそれの現在の拡張と短期での拡張とを含む)HEVC規格の圧縮能力を著しく超える圧縮能力をもつ将来のビデオコーディング技術の規格化の潜在的ニーズを研究した。そのグループは、このエリアにおけるそれらの専門家によって提案された圧縮技術設計を評価するために、ジョイントビデオ探査チーム(JVET)として知られるジョイントコラボレーション作業においてこの探査活動に関して協働した。参照ソフトウェアのバージョン、すなわち、VVCテストモデル10(VTM10.0)が、https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTMからダウンロードされ得る。
【0123】
[0134]汎用ビデオコーディング(VVC)ドラフト仕様は、JVET-T2001またはVVC Draft10と呼ばれることがある。汎用ビデオコーディングおよびテストモデル10(VTM10.0)のアルゴリズム記述はJVET-T2002と呼ばれることがある。
【0124】
[0135]次に、VVCドラフト10におけるCUの構造および動きベクトル予測について説明する。VVCドラフト10では、スライス中の最大コーディングユニットはCTBまたはCTUと呼ばれる。CTBは、クワッドツリー、バイナリツリーまたはターナリツリーを含んでおり、それのノードはCUである。
【0125】
[0136]CTBのサイズは、VVCメインプロファイルにおいて4×4から128×128にわたることができる。CUは、CTBと同じサイズから4×4程度の小ささのサイズにわたり得る。各CUは、1つのモード、すなわち、インターモードまたはイントラモードを用いてコーディングされ得る。CUがインターコーディングされるとき、CUは、2つ、3つ、もしくは4つのPUにさらに区分され得るか、またはさらなる区分が適用されないとき、ただ1つのPUになり得る。たとえば、ビデオエンコーダ200またはビデオデコーダ300は、CUをPUに区分し得る。2つのPUは、1つのCU中に存在するとき、半分のサイズの矩形に均等に分割される。3つのPUが1つのCU中に存在するとき、CUの1/4、1/2および1/4のサイズの3つの矩形が使用される。
【0126】
[0137]CUがインターコーディングされるとき、各PUは、固有のインター予測モードを用いて導出される、動き情報の1つのセットを有する。
【0127】
[0138]次に、VVCドラフト10における動きベクトル予測について説明する。VVCドラフト10では、PUのために2つのインター予測モード、すなわち、マージモード(スキップモードはマージモードの特殊な場合と見なされる)とAMVPモードとがある。AMVPモードでは、MV候補リストが、複数の動きベクトル予測子のために維持される。現在のPUのMVならびにAMVPモードにおける参照インデックスは、MV候補リストから1つの候補をとることによって生成される。
【0128】
[0139]VVCドラフト10では、MV候補リストは、AMVPモードのために最高2つの候補を含んでいる。AMVPモードの下では、リスト0またはリスト1のいずれかからの各潜在的予測方向について、AMVP候補が動きベクトルのみを含んでいるので、動きベクトル予測子リストへのMV予測子(MVP)インデックスとともに参照インデックスが明示的にシグナリングされる。たとえば、ビデオエンコーダ200は参照インデックスを明示的にシグナリングし得る。AMVPモードでは、予測される動きベクトルがさらに改良され得る。
【0129】
[0140]AMVPモードのための候補は、空間的に隣接するブロック、時間的に隣接するブロックまたは履歴ベースの動き情報表から導出または決定され得る。たとえば、ビデオエンコーダ200またはビデオデコーダ300は、AMVPモードのための候補を導出または決定し得る。
【0130】
[0141]次に、VVCドラフト10における空間的に隣接する動きベクトル候補について説明する。図5は、AMVPモードのための例示的な空間隣接動きベクトル候補を示す概念図である。空間的に隣接するMV候補は、図5に示されている隣接ブロックから導出または決定される。
【0131】
[0142]AMVPモードでは、隣接ブロックは、図5に示されているように、2つのグループ、すなわち、ブロック0および1からなる左グループと、ブロック2、3、および4からなる上グループとに分割される。各グループについて、シグナリングされた参照インデックスによって示された参照ピクチャと同じ参照ピクチャを参照する近隣ブロック中の潜在的候補が、グループの最終候補を形成するために選定されるべき最高優先度を有する。すべての近隣ブロックが、同じ参照ピクチャを指す動きベクトルを含んでいるとは限らない可能性がある。したがって、そのような候補が見つけられ得ない場合、第1の利用可能な候補は、最終候補を形成するためにスケーリングされることになる。したがって、参照ピクチャからの時間距離差分が補償され得る。
【0132】
[0143]次に、VVCにおける時間動きベクトル予測について説明する。時間動きベクトル予測子(TMVP)候補は、有効にされ、利用可能である場合、空間動きベクトル候補の後にMV候補リストに追加される。たとえば、ビデオエンコーダ200またはビデオデコーダ300は、空間動きベクトル候補の後にMV候補リストにTMVPを追加し得る。
【0133】
[0144]図6A図6Bは、それぞれ、例示的な時間動きベクトル予測子候補と動きベクトルのスケーリングとを示す概念図である。TMVP候補導出のための1次ブロックロケーションは、空間隣接候補を生成するために使用される上および左のブロックへのバイアスを補償するための、ブロック「T」600として図6Aに示されているコロケートされたPUの外側の右下のブロックである。しかしながら、そのブロックが(ブロック602として示されている)現在のCTB行の外側に位置するかまたは動き情報が利用可能でない場合、ブロックはPU0 606の中心ブロック604と置換される。
【0134】
[0145]TMVP候補のための動きベクトルは、スライスレベルで示されているコロケートされたピクチャのコロケートされたPUから導出または決定される。コロケートされたPUのための動きベクトルは、コロケートされた動きベクトルと呼ばれる。
【0135】
[0146]AVCにおける時間ダイレクトモードと同様に、TMVP候補動きベクトルを導出または決定するために、コロケートされた動きベクトル610は、図6Bに示されているように、時間距離差分を補償するためにスケーリングされる必要がある。たとえば、ビデオデコーダ300は、時間距離差分を補償するためにコロケートされた動きベクトル610をスケーリングし得る。
【0136】
[0147]次に、VVCドラフト10における履歴ベースの動きベクトル予測(HMVP)について説明する。HMVP候補は、前にコーディングされたブロックの動き情報として定義される。複数のHMVP候補をもつ履歴表が符号化/復号プロセスの間に維持され得る。たとえば、ビデオエンコーダ200またはビデオデコーダ300は、複数のHMVP候補をもつ表を維持し得る。インターコーディングされた非アフィンブロックがあるときはいつでも、関連する動き情報が新しいHMVP候補として履歴表の最後のエントリに追加され得る。
【0137】
[0148]図7は、履歴ベースの動きベクトル予測のための例示的な復号フローチャートを示す概念図である。たとえば、ビデオデコーダ300は、HMVP候補をもつ履歴表をロードし得る(700)。ビデオデコーダ300は、HMVP候補のうちの1つまたは複数を使用してブロックを復号し得る(702)。ビデオデコーダ300は、次いで、復号された動き情報で表を更新し得る(704)。たとえば、ビデオデコーダ300は、履歴表にインターコーディングされた非アフィンブロックのための動き情報を追加し得る。たとえば、HMVP候補表が完全に占有されているとき、ビデオデコーダ300は、履歴表中の最も古い候補を除外し、履歴表中の最後のエントリとして履歴表に最も最近の復号されたインターCU動き情報を追加するためにFIFO(先入れ先出し)ルールを適用し得る。表中の最後の4つのHMVP候補の動きベクトルは、TMVP候補の後にAMVP候補リスト中に挿入される。AMVPターゲット参照ピクチャと同じ参照ピクチャを伴うHMVP候補だけが、AMVP候補リストを構成するために使用される。HMVP候補に対してプルーニングが適用され得る。たとえば、ビデオデコーダ300は、HMVP候補をプルーニングし得る。
【0138】
[0149]次に、HEVCにおける動き予測の他の態様について説明する。AMVPモードのいくつかの態様は、次のように説明される。
【0139】
[0150]動きベクトルスケーリング:動きベクトルの値は、プレゼンテーション/表示時間におけるピクチャ間の距離に比例し得る。動きベクトルは、2つのピクチャ、すなわち、参照ピクチャと、動きベクトルを含んでいるピクチャ(すなわち、含有ピクチャ)とを関連付ける。ある動きベクトルが、別の動きベクトルを予測するために利用されるとき、含有ピクチャと参照ピクチャとの間の距離は、ピクチャ順序カウント(POC)値に基づいて計算される。
【0140】
[0151]予測されることになる動きベクトルについて、いくつかの例では、動きベクトルの関連する含有ピクチャと参照ピクチャの両方は、予測子の動きベクトルのためのものとは異なり得る。したがって、ビデオエンコーダ200またはビデオデコーダ300は、(POCに基づいて)新しい距離を計算し得る。ビデオエンコーダ200またはビデオデコーダ300は、これらの2つのPOC距離に基づいて動きベクトルをスケーリングし得る。空間的に隣接する候補の場合、2つの動きベクトルのための含有ピクチャは同じであり、一方、参照ピクチャは異なり得る。VVCドラフト10では、AMVPリストを構築するときに、動きベクトルスケーリングが時間的に隣接する候補に適用される。
【0141】
[0152]擬似動きベクトル候補生成:動きベクトル候補リストが完全でない場合、ビデオエンコーダ200またはビデオデコーダ300は、AMVPリストがすべての候補を有する(たとえば、リストが満たされる)まで擬似動きベクトル候補を生成し、AMVPリストの最後に擬似動きベクトル候補を挿入し得る。AMVPモードでは、0候補が、AMVPリスト中の任意の残りのスロットを埋めるために使用される。たとえば、AMVPリスト中に残りのスロットがある場合、ビデオエンコーダ200またはビデオデコーダ300は、AMVPリスト中の残りのスロットを埋めるために0候補を使用し得る。
【0142】
[0153]候補挿入のためのプルーニングプロセス:異なるブロックからの候補は偶然同じになり得、これはAMVP候補リストの効率を減少させる。したがって、ビデオエンコーダ200またはビデオデコーダ300は、この問題に対処するためにプルーニングプロセスを適用し得る。プルーニングプロセス中に、ビデオエンコーダ200またはビデオデコーダ300は、現在の候補リスト中に同じ候補を挿入することをある程度まで回避するために1つの候補を現在の候補リスト(たとえば、AMVP候補リスト)中の他の候補と比較し得る。
【0143】
[0154]次に、テンプレートマッチング(TM)予測について説明する。TM予測は、フレームレートアップコンバージョン(FRUC)技法に基づく特殊なマージモードである。このモードでは、ブロックの動き情報は、シグナリングされないが、デコーダ側で導出または決定される。たとえば、ビデオエンコーダ200は、TM予測をもつ動き情報をシグナリングしないことがあり、ビデオデコーダ300は、動き情報を導出または決定し得る。TM予測は、AMVPモードと通常のマージモードの両方に適用され得る。AMVPモードでは、動きベクトル予測子(MVP)候補の選択は、現在のブロックのテンプレートと参照ブロックのテンプレートとの間に最小の差を有するテンプレートを選択するようなテンプレートマッチングに基づいて決定され得る。通常のマージモードでは、ビデオエンコーダ200は、TMモードの使用を示すためにTMモードフラグをシグナリングし得、ビデオデコーダ300は、MVの改良のためにマージインデックスによって示されるマージ候補にTMモードを適用し得る。
【0144】
[0155]図8は、最初の動きベクトルの周りの探索エリアに対して実施されるTMを示す概念図である。図8に示されているように、現在のPUの動き情報を導出または決定するためにTM技法が使用され得る。動き情報を導出することは、現在のピクチャ802中の(現在のPUの上および/または左の隣接ブロック中の)テンプレート800と参照ピクチャ806中のブロック804(たとえば、テンプレート800と同じサイズ)との間で最も近接した一致を見つけることを含み得る。最初のマッチングエラーに基づいて選択されたAMVP候補では、候補のMVPがテンプレートマッチングによって改良される。シグナリングされたマージインデックスによって示されるマージ候補では、参照ピクチャリスト0(L0)と参照ピクチャリスト1(L1)とに対応する候補のマージされたMVは、TMによって独立して改良され、次いで、あまり正確でないMVは、より正確なMVを前の参照として用いて再びさらに改良される。たとえば、ビデオデコーダ300は、シグナリングされたマージインデックスを受信し、パースし、MVを改良するためにマージされたMVにテンプレートマッチングを適用する。
【0145】
[0156]コスト関数:動きベクトルが分数サンプル位置を指すとき、ビデオデコーダ300は、動き補償補間を使用し得る。複雑性を低減するために、TMと参照ピクチャのテンプレートを生成するための両方のために通常の8タップ離散コサイン変換-補間フィルタ(DCT-IF)補間の代わりに双一次補間が使用される。テンプレートマッチングのマッチングコストCは、次のように計算され得る。
【0146】
【数1】
【0147】
ここで、wは、経験的に4に設定される重み付け係数であり、MVとMVsとは、それぞれ、現在テストしているMVと最初のMV(たとえば、AMVPモードにおけるMVP候補またはマージモードにおけるマージされた動きベクトル)を示す。絶対値差分和(SAD)は、テンプレートマッチングのマッチングコストとして使用され得る。
【0148】
[0157]TMが使用されると、動きは、ルーマサンプルのみを使用することによって改良され得る。導出または決定された動きは、動き補償(MC)インター予測のためにルーマとクロマの両方のために使用され得る。MVが決定された後に、ルーマのために8タップ補間フィルタを使用し、クロマのために4タップ補間フィルタを使用して最終的なMCが実施される。たとえば、ビデオデコーダ300は、ルーマサンプルのみを使用して動きを改良し得る。
【0149】
[0158]探索方法:MV改良は、TMコストの基準を用いたパターンベースのMV探索であり得る。MV改良のためのダイヤモンドパターンの探索とクロスパターンの探索との2つの探索パターンがサポートされ得る。たとえば、ビデオデコーダ300は、MV改良のためにダイヤモンドパターンの探索またはクロスパターンの探索を使用し得る。MVは、ダイヤモンドパターンをもつ1/4ルーマサンプル動きベクトル差(MVD)精度で直接探索され得、その後、クロスパターンをもつ1/4ルーマサンプルMVD精度で探索され、次いで、1/4ルーマサンプルMVD精度クロスパターン探索の後にクロスパターンをもつ1/8ルーマサンプルMVD改良が続き得る。MV改良の探索範囲は、最初のMVの周りの(-8,+8)ルーマサンプルに等しく設定され得る。
【0150】
[0159]ビデオエンコーダ200またはビデオデコーダ300は、AMVP候補リストが構築された後にAMVP候補を改良するためにTM技法を適用し得る。この場合、最小のTMコストをもつAMVP候補がTMベースの改良のための開始点として使用されることになり、最終的な改良されたMVが最終的なMVPとして使用されることになるので、ビデオエンコーダ200は、AMVPインデックスのシグナリングをスキップし得る。しかしながら、AMVP候補は、空間ネイバーブロック、コロケートされた時間ブロックまたは右下の時間ブロック、または最近復号されたPUから取得された履歴ベースの動き情報から導出または決定される。したがって、すべてのこれらの潜在的なAMVP候補が、まったく同様の動き情報を含んでいることが大いにあり得、これはAMVP候補リストの多様性に有害である。さらに、AMVP候補リストは、最大2つの候補を含んでいる。したがって、多様なAMVP候補を含む可能性は、さらに低減される。
【0151】
[0160]TMベースの改良がAMVP候補に適用されている状態であったとしても、AMVPインデックスのシグナリングオーバーヘッドは保たれ得、ビデオエンコーダ200またはビデオデコーダ300がMV改良のために開始点として最小のTMコストを有するAMVP候補を常に使用することは、最良の選択でないことがある。たとえば、最小のTMコストを有するAMVP候補を使用することは、極小のTMコストを生じ得るが、これは、必ずしも良好な全面的な選択ではないことがある。加えて、TMコストは、現在のブロックと参照ブロックとの間の差を常に正しく表すとは限らない。
【0152】
[0161]次に、隣接しないAMVP候補について説明する。本開示は、1つまたは複数の隣接しないAMVP候補、たとえば、現在のPUに隣接しないブロックまたはユニットから導出または決定された動きベクトル候補であるAMVP候補リストに追加され得る動き情報のカテゴリについて説明する。AMVPのための候補のすべての既存のカテゴリは、(たとえば、現在のPUの近くのブロックから導出または決定される)現在のPUの近くに位置し、同様の動き情報を与える可能性が非常に高い。隣接しないAMVP候補の導入により、AMVP候補リストの多様性が改善され得る。隣接しないAMVP候補のこの導入により、TMベースの改良プロセスを適用するビデオエンコーダ200またはビデオデコーダ300は、より良い最終的な動きベクトル予測子を発見するより高い可能性を有することが可能になり得る。いくつかの例では、隣接しないAMVP候補は、イントラモード(たとえば、その場合、それらは現在のPUに空間的に隣接しないことがある)またはインターモード(たとえば、その場合、それらは別のピクチャ中のコロケートされたPUに空間的に隣接しないことがある)のいずれかにおいて使用され得る。
【0153】
[0162]図9は、例示的な隣接しないAMVP候補ロケーション、たとえば、隣接しないAMVP候補が導出または決定される現在のPUに関するブロックまたはユニットの相対ロケーションを示す概念図である。例示的な隣接しない候補ユニットのパターンおよびロケーションは図9に示されている。図9の例では、グリッド900中の各小さい正方形は、4つのルーマサンプルの幅と4つのルーマサンプルの高さとをもつ1つの4×4のユニットまたはブロックを表す。現在のPUは、PUと標示される。現在のPUの左上のルーマサンプルは、現在のPU中でパターンで満たされたボックスに示されている。18個の潜在的な隣接しない候補ユニットのロケーションは、1~18に番号付けされたものとして示されている。たとえば、ビデオエンコーダ200またはビデオデコーダ300は、(1と標示された)現在のPUの1ユニット(ブロック)下2ユニット(ブロック)左側、(2と標示された)現在のPUの2ユニット(ブロック)上1ユニット(ブロック)右側、(3と標示された)現在のPUの2ユニット(ブロック)上2ユニット(ブロック)左側、(4と標示された)現在のPUの2ユニット(ブロック)下3ユニット(ブロック)左側、(5と標示された)現在のPUの3ユニット(ブロック)上2ユニット(ブロック)右側、(6と標示された)現在のPUの3ユニット(ブロック)上、(7と標示された)現在のPUの3ユニット(ブロック)左側、(8と標示された)現在のPUの3ユニット(ブロック)上3ユニット(ブロック)左側、(9と標示された)現在のPUの3ユニット(ブロック)下4ユニット(ブロック)左側、(10と標示された)現在のPUの4ユニット(ブロック)上3ユニット(ブロック)右側、(11と標示された)現在のPUの4ユニット(ブロック)上、(12と標示された)現在のPUの4ユニット(ブロック)左側、(13と標示された)現在のPUの4ユニット(ブロック)上4ユニット(ブロック)左側、(14と標示された)現在のPUの4ユニット(ブロック)下5ユニット(ブロック)左側、(15と標示された)現在のPUの5ユニット(ブロック)上4ユニット(ブロック)右側、(16と標示された)現在のPUの5ユニット(ブロック)上、(17と標示された)現在のPUの5ユニット(ブロック)左側、および(18と標示された)現在のPUの5ユニット(ブロック)上5ユニット(ブロック)左側に位置するユニット/ブロックからなる潜在的な隣接しない候補ユニットのグループから少なくとも1つの隣接しない候補ユニットを選択し得る。シミュレーションは、AMVP候補ユニットとしてこれらのロケーションにあるユニット/ブロックを使用することがビデオのいくつかのクラスについて複雑性のわずかな増加でコーディング効率を改善し得ることを示している。シミュレーション結果は以下の通りである。
【0154】
【表1】
【0155】
ここで、ECMは、拡張圧縮モデルであり、Yは、ルーマであり、Uは、青い投影のクロマであり、Vは、赤い投影のクロマであり、EncTは、符号化時間であり、DecTは、復号時間である。Y、U、およびVのための負の割合は改善された効率を示す。クラスA1およびA2のビデオは、3840×2160(ピクセル単位の幅および高さ)の解像度を有し、クラスBのビデオは、1920×1080の解像度を有し、クラスCのビデオは、832×480の解像度を有し、クラスDのビデオは、416×240の解像度を有する。クラスDのビデオは、上記に記載した全体的な結果に含まれていない。クラスDのビデオがシミュレーションにおいて他のクラスほどうまく実施されないことの理由は、解像度が低くて画像の境界が現在のPUの位置に比較的近いためである。したがって、動き情報を導出するために使用され得る利用可能な隣接しないユニットの数は、より高い解像度のビデオにおいて比較的小さくなる。さらに、クラスDのビデオ中の画像コンテンツは、低解像度により比較的迅速に変化する。したがって、隣接しないユニットは、現在のPUの画像コンテンツに無関係であり得、隣接しないユニットのための利用可能な動き情報がある場合でも、それが有用である可能性が低いことがある。本開示の技法のパフォーマンスは、クラスEのビデオを使用してシミュレートされなかった。
【0156】
[0163]ビデオエンコーダ200またはビデオデコーダ300は、現在のPUのサイズに基づいて少なくとも1つの隣接しないPU/ブロックのロケーションを導出または決定し得る。たとえば、ビデオエンコーダ200またはビデオデコーダ300は、現在のPUのサイズを決定し、現在のPUのサイズに少なくとも部分的に基づいて少なくとも1つの隣接しない候補を決定し得る。たとえば、距離レベルは、少なくとも1つの隣接しないPU/ブロックが現在のPUに対してどのくらい遠く離れて位置するのかを制御するために使用され得る。レベルインデックスはまた、隣接しない候補グループの各々のためのグループインデックスとして使用され得る。合計4つのグループは、次のように定義され得る。
グループ1:{1,2,3}(たとえば、1~3に番号付けされたロケーション)
グループ2:{4,5,6,7,8}(たとえば、4~8に番号付けされたロケーション)
グループ3:{9,10,11,12,13}(たとえば、9~13に番号付けされたロケーション)
グループ4:{14,15,16,17,18}(たとえば、14~18に番号付けされたロケーション)
たとえば、潜在的な隣接しない候補ユニットは、1)現在のPUの1ユニット(ブロック)下2ユニット(ブロック)左側、現在のPUの2ユニット(ブロック)上1ユニット(ブロック)右側、および現在のPUの2ユニット(ブロック)上2ユニット(ブロック)左側に位置する潜在的な隣接しない候補ユニットの第1のグループと、2)現在のPUの2ユニット(ブロック)下3ユニット(ブロック)左側、現在のPUの3ユニット(ブロック)上2ユニット(ブロック)右側、現在のPUの3ユニット(ブロック)上、現在のPUの3ユニット(ブロック)左側、現在のPUの3ユニット(ブロック)上3ユニット(ブロック)左側に位置する潜在的な隣接しない候補ユニットの第2のグループと、3)現在のPUの3ユニット(ブロック)下4ユニット(ブロック)左側、現在のPUの4ユニット(ブロック)上3ユニット(ブロック)右側、現在のPUの4ユニット(ブロック)上、現在のPUの4ユニット(ブロック)左側、現在のPUの4ユニット(ブロック)上4ユニット(ブロック)左側に位置する潜在的な隣接しない候補ユニットの第3のグループと、4)現在のPUの4ユニット(ブロック)下5ユニット(ブロック)左側、現在のPUの5ユニット(ブロック)上4ユニット(ブロック)右側、現在のPUの5ユニット(ブロック)上、現在のPUの5ユニット(ブロック)左側、現在のPUの5ユニット(ブロック)上5ユニット(ブロック)左側に位置する潜在的な隣接しない候補ユニットの第4のグループとの4つのグループに分割され得る。
【0157】
[0164]いくつかの例では、インデックスマップアレイは、次のように定義され得る。
idxMap[4][5]={{0,1,2},{0,1,2,3,4},{0,1,2,3,4},{0,1,2,3,4}}。2つの変数は、最終的なインデックスを決定するために使用され得、idxMap[level_index][position_index]は、少なくとも1つの隣接しない候補のロケーションを計算するための公式にリンクされ得る。変数level_indexは、0から3の範囲内にあり得る。たとえば、0のlevel_indexは、グループ1を示し得、1のlevel_indexは、グループ2を示し得、2のlevel_indexは、グループ3を示し得、3のlevel_indexは、グループ4を示し得る。変数position_indexは、level_indexが0に等しくなるとき(たとえば、それぞれ、1、2、または3に番号付けされたロケーションを示す)0から2の範囲内にあり得、level_indexが1、2または3に等しくなるとき(たとえば、グループ2、グループ3、またはグループ4内の特定のロケーションを示す)0から4の範囲内にあり得る。たとえば、ビデオエンコーダ200またはビデオデコーダ300は、複数のグループのうちのグループを示すレベルインデックスをシグナリングまたはパースし、レベルインデックスによって示されるグループに属する潜在的な隣接しない候補ユニットのうちの1つを示す位置インデックスをシグナリングまたはパースし得る。
【0158】
[0165]いくつかの例では、各idxMap[level_index][position_index]に対して、少なくとも1つの隣接しない候補ユニットのロケーションを導出または決定するために以下の公式0から4が使用され得る。
0:offsetX=-iNADistanceHor-1;offsetY=height+iNADistanceVer-1;
1:offsetX=width+iNADistanceHor-1;offsetY=-iNADistanceVer-1;
2:offsetX=width>>1;offsetY=-iNADistanceVer-1;
3:offsetX=-iNADistanceHor-1;offsetY=height>>1;
4:offsetX=-iNADistanceHor-1;offsetY=-iNADistanceVer-1;
ここで、幅は、いくつかのルーマサンプル中の現在のPUの幅であり、高さは、いくつかのルーマサンプル中の現在のPUの高さであり、iNAは、i番目の隣接しないユニット/ブロックを表し、
iNADistanceHor=width*(level_index+1)であり、iNADistanceVer=height*(level_index+1)であり、「>>」は、ビット単位右シフトを指し、ここで、n>>kは、n/(2^k)と等価である。たとえば、ビデオエンコーダ200またはビデオデコーダ300は、レベルインデックス(たとえば、level_index)を示す第1のシンタックス要素と第2のシンタックス要素と、たとえば、idxMap[level_index][position_index]に従って、水平オフセットと垂直オフセットとを決定するために使用するためにoffsetX=-iNADistanceHor-1およびoffsetY=height+iNADistanceVer-1、offsetX=width+iNADistanceHor-1およびoffsetY=-iNADistanceVer-1、offsetX=width>>1およびoffsetY=-iNADistanceVer-1、offsetX=-iNADistanceHor-1およびoffsetY=height>>1、またはoffsetX=-iNADistanceHor-1およびoffsetY=-iNADistanceVer-1のうちの1つを選択し得、ここにおいて、offsetXは、水平オフセットであり、offsetYは、垂直オフセットであり、widthは、いくつかのルーマサンプル中の現在のPUの幅であり、heightは、いくつかのルーマサンプル中の現在のPUの高さであり、iNAは、i番目の隣接しない候補ユニット/ブロックを表し、iNADistanceHor=width*(第1のシンタックス要素+1)であり、iNADistanceVer=height*(第1のシンタックス要素+1)である。公式中のXおよびYのための符号「+」は、図9におけるそれぞれ、右方向および下方向に対応する。公式0は、1、4、9および14に番号付けされたロケーションに対応し得る。公式1は、2、5、10および15に番号付けされたロケーションに対応し得る。公式2は、6、11および16に番号付けされたロケーションに対応し得る。公式3は、7、12および17に番号付けされたロケーションに対応し得る。公式4は、3、8、13および18に番号付けされたロケーションに対応し得る。
【0159】
[0166]ビデオエンコーダ200またはビデオデコーダ300は、現在のPUの左上のルーマサンプル座標に水平オフセット(offsetX)と垂直オフセット(offsetY)とを加算することによって最終的な隣接しない候補ユニットのロケーションを計算し得る。導出または決定された隣接しないサンプル位置を含んでいる4×4のユニット/ブロックからの動き情報は、4×4のユニット/ブロックがインターコーディングされる場合はAMVP候補リストに加算されることになる候補として使用され得る。
【0160】
[0167]上記の導出プロセスから、合計18個の隣接しない位置がAMVP候補リスト中の導出または決定される隣接しない候補のための潜在的な候補ユニットとして使用され得ることがわかる。しかしながら、AMVP候補リストのサイズが依然として2に保たれる場合、隣接しない候補がAMVP候補リストに追加されることになる可能性は比較的低いままであり得る。隣接しない候補が考慮される可能性を依然として提供しながらAMVP候補リスト中の従来の空間、時間および履歴候補を保持するために、AMVP候補リストのサイズが増加され得る。一例では、AMVP候補リストのサイズは、5つに増加される。
【0161】
[0168]隣接しない候補はまた、異なる優先度で追加され得る。一例では、隣接しない候補は、(たとえば、より低い優先度で)時間候補の後におよび/または(たとえば、より高い優先度で)履歴ベースの候補の前に追加される。たとえば、AMVP候補リストは、時間候補または履歴ベースの候補のうちの少なくとも1つと少なくとも1つの隣接しない候補とを含み得る。ビデオエンコーダ200またはビデオデコーダ300は、時間候補の後または履歴ベースの候補の前のうちの少なくとも1つにAMVP候補リストに少なくとも1つの隣接しない候補を追加し得る。別の例では、少なくとも1つの隣接しない候補は、履歴ベースの候補の後におよび/または0候補の前に追加される。さらに第3の例では、少なくとも1つの隣接しない候補は、空間候補の後におよび/または時間候補の前に追加される。
【0162】
[0169]一例では、少なくとも1つの隣接しない候補の優先度は、空間候補と同様に扱われ、ここにおいて、現在のPUの左側に位置する候補ユニットは、現在のPUの上に位置する候補ユニットと比較してより高い優先度を有する。AMVP候補リストの構築プロセスの1つの例は、以下の通りである。1)空間的に左側の隣接する候補、2)空間的に左側の隣接しない候補、3)空間的に上の隣接する候補、4)空間的に上の隣接しない候補、5)時間候補、6)履歴候補、7)0MV候補。いくつかの例では、上述の技法の7つのステップの各々において、ただ1つの候補がAMVP候補リストに追加され得る。たとえば、ビデオエンコーダ200またはビデオデコーダ300は、7つのステップのそれぞれのステップごとにAMVP候補リストに最大1つの候補を追加し得る。
【0163】
[0170]次に、TM AMVPの改良を用いるAMVPインデックスのシグナリングについて説明する。VVCドラフト10では、TMがAMVP候補リストを改良するために使用されるとき、AMVPインデックスはシグナリングされない。最小のTMコストをもつAMVP候補は、TM AMVPの改良のための開始点として使用され得、最終的な改良されたMVは、動きベクトル予測子として使用され得る。しかしながら、前述のように、そのような設計は、最終的なAMVP候補の選択のために使用されるAMVP候補リスト中の多様性を低減し得る。これは、テンプレートが現在のPUのデータサンプルとの強い相関を有しないときにあまり正確でないAMVP候補をもたらし得る。AMVP候補リストの潜在的な多様性を増加させながらTMを用いてAMVP候補を改良する利点を保つために、ハイブリッド方式がAMVP候補リストの構築プロセスに導入され得る。VVCドラフト10設計と比較して、TM AMVP改良プロセスが完了された後、MVPとしてTMで改良されたAMVP候補を常に使用する代わりに、ビデオエンコーダ200またはビデオデコーダ300は、AMVP候補リストから改良されていない他のAMVP候補を除外しないことがある。この例では、ビデオエンコーダ200は、最終的な動きベクトル予測子として改良されていないAMVP候補を選ぶ可能性を依然として有することになる。これを達成するために、ビデオエンコーダ200は、AMVPインデックスをシグナリングし得る。一例では、0に等しいAMVPインデックスがシグナリングされるとき、TMで改良されたAMVP候補がMVPとして使用され得、(たとえば、サイズが2のAMVP候補リストについて)1に等しいAMVPインデックスがシグナリングされるとき、改良されていないAMVP候補が、代わりに、MVPとして使用され得る。たとえば、ビデオエンコーダ200は、0または1のAMVPインデックスをシグナリングし得、ビデオデコーダ300は、MVPとして改良されたAMVP候補を使用すべきであるのかまたは(たとえば、サイズが2のAMVP候補リストについて)改良されていないAMVP候補を使用すべきであるのかを決定するためにAMVPインデックスをパースし得る。
【0164】
[0171]次に、MV距離に基づいて第2のAMVP候補を決定することについて説明する。前の段落と同様に、TMで改良されたAMVP候補のMV cand0Mv(hor,ver)が最小のTMコストのAMVP候補にTM改良を適用することによって導出または決定されるとき、残りのAMVP候補は、第2のAMVP候補のMV cand1Mv(hor,ver)を決定するためにさらに評価され得る。この例では、ビデオエンコーダ200またはビデオデコーダ300は、cand0MvまでのMV距離に基づいて第2のAMVP候補のMVを決定し得る。決定された第2のAMVP候補のMVcand1Mvは、他のAMVP候補と比較してcand0Mvまでのより長いMV距離を有し得、したがって、現在のブロックは、TMで改良されたAMVP候補cand0Mvと比較してまったく異なる予測子を有し得る。
【0165】
[0172]AMVP候補MV candXMv(hor,ver)を仮定すれば、cand0MvまでのMV距離は、candXMvDistance=((|candXMv(hor)-cand0Mv(hor)|+|candXMv(ver)-cand0Mv(ver)|)>>N)として定義され得、ここにおいて、Nは、スケーリングされたMV距離を導出または決定するためのあらかじめ決定された整数値である。
【0166】
[0173]一例では、第2のAMVP候補MVは、cand0Mvまでの最大のMV距離を有するcandXMvであると決定される。
【0167】
[0174]別の例では、第2のAMVP候補は、MV距離比に対する最小のTMコストを有するcandXMvであると決定される。TMコストtmCostXを有するAMVP候補MV candXMv(hor,ver)を仮定すれば、TMコスト-MV距離比は、tmCostX/candXMvDistanceとして定義され得る。
【0168】
[0175]図10は、本開示の1つまたは複数の態様による、例示的なAMVP候補技法を示すフローチャートである。ビデオエンコーダ200またはビデオデコーダ300は、時間候補または履歴ベースの候補のうちの少なくとも1つを決定し得る(1000)。たとえば、ビデオエンコーダ200またはビデオデコーダ300は、時間候補、履歴ベースの候補、または時間候補と履歴ベースの候補の両方を決定し得る。そのような候補は、動きベクトル予測子のための候補であり得る。
【0169】
[0176]ビデオエンコーダ200またはビデオデコーダ300は、少なくとも1つの隣接しない候補ユニットから少なくとも1つの隣接しない候補を決定し得、ここにおいて、少なくとも1つの隣接しない候補ユニットは、現在の予測ユニット(PU)に隣接しない(1002)。たとえば、ビデオエンコーダ200またはビデオデコーダ300は、図9の番号1~18のうちの1つによって示されるロケーションにある少なくとも1つの隣接しない候補ユニットから少なくとも1つの隣接しない候補を決定し得る。少なくとも1つの隣接しない候補は、動きベクトル予測子のための候補であり得る。
【0170】
[0177]ビデオエンコーダ200またはビデオデコーダ300は、時間候補または履歴ベースの候補のうちの少なくとも1つと少なくとも1つの隣接しない候補とを備えるAMVP候補リストを決定し得、ここにおいて、少なくとも1つの隣接しない候補は、時間候補の後または履歴ベースの候補の前のうちの少なくとも1つにAMVP候補リストに追加される(1004)。たとえば、ビデオエンコーダ200またはビデオデコーダ300は、AMVP候補リスト中に時間候補の後に、AMVP候補リスト中に履歴ベースの候補の前に、またはAMVP候補リスト中に時間候補の後で履歴ベースの候補の前に少なくとも1つの隣接しない候補を含めるAMVP候補リストを構築し得る。
【0171】
[0178]ビデオエンコーダ200またはビデオデコーダ300は、AMVP候補リストに基づいて現在のPUをコーディングし得る(1006)。たとえば、ビデオエンコーダ200またはビデオデコーダ300は、AMVP候補リストから動きベクトル予測子を選択し、選択された動きベクトル予測子を使用して現在のPUをコーディングし得る。
【0172】
[0179]いくつかの例では、少なくとも1つの隣接しない候補を決定することは、現在のPUの1ユニット下2ユニット左側、現在のPUの2ユニット上1ユニット右側、現在のPUの2ユニット上2ユニット左側、現在のPUの2ユニット下3ユニット左側、現在のPUの3ユニット上2ユニット右側、現在のPUの3ユニット上、現在のPUの3ユニット左側、現在のPUの3ユニット上3ユニット左側、現在のPUの3ユニット下4ユニット左側、現在のPUの4ユニット上3ユニット右側、現在のPUの4ユニット上、現在のPUの4ユニット左側、現在のPUの4ユニット上4ユニット左側、現在のPUの4ユニット下5ユニット左側、現在のPUの5ユニット上4ユニット右側、現在のPUの5ユニット上、現在のPUの5ユニット左側、および現在のPUの5ユニット上5ユニット左側に位置するユニットからなる潜在的な隣接しない候補ユニットのグループから少なくとも1つの隣接しない候補ユニットを選択することを備える。
【0173】
[0180]いくつかの例では、複数の潜在的な隣接しない候補ユニットは、複数のグループに分割される。いくつかの例では、ビデオエンコーダ200またはビデオデコーダ300は、複数のグループのうちのグループを示すレベルインデックスをシグナリングまたはパースし、レベルインデックスによって示されるグループに属する潜在的な隣接しない候補ユニットのうちの1つを示す位置インデックスをシグナリングまたはパースし、ここにおいて、少なくとも1つの隣接しない候補ユニットは、潜在的な隣接しない候補ユニットのうちの1つを備える。
【0174】
[0181]いくつかの例では、複数のグループは、1)現在のPUの1ユニット下2ユニット左側、現在のPUの2ユニット上1ユニット右側、および現在のPUの2ユニット上2ユニット左側に位置する潜在的な隣接しない候補ユニットの第1のグループと、2)現在のPUの2ユニット下3ユニット左側、現在のPUの3ユニット上2ユニット右側、現在のPUの3ユニット上、現在のPUの3ユニット左側、現在のPUの3ユニット上3ユニット左側に位置する潜在的な隣接しない候補ユニットの第2のグループと、3)現在のPUの3ユニット下4ユニット左側、現在のPUの4ユニット上3ユニット右側、現在のPUの4ユニット上、現在のPUの4ユニット左側、現在のPUの4ユニット上4ユニット左側に位置する潜在的な隣接しない候補ユニットの第3のグループと、4)現在のPUの4ユニット下5ユニット左側、現在のPUの5ユニット上4ユニット右側、現在のPUの5ユニット上、現在のPUの5ユニット左側、現在のPUの5ユニット上5ユニット左側に位置する潜在的な隣接しない候補ユニットの第4のグループとを含む。
【0175】
[0182]いくつかの例では、ビデオエンコーダ200またはビデオデコーダ300は、現在のPUのサイズを決定し得、ここにおいて、少なくとも1つの隣接しない候補を決定することは、現在のPUのサイズに少なくとも部分的に基づく。いくつかの例では、少なくとも1つの隣接しない候補を決定することは、現在のPUの左上のルーマサンプルに対する水平オフセットと現在のPUの左上のルーマサンプルに対する垂直オフセットとを決定することを備える。いくつかの例では、少なくとも1つの隣接しない候補を決定することは、現在のPUの左上のルーマサンプル座標に水平オフセットと垂直オフセットとを加算することをさらに備える。いくつかの例では、ビデオエンコーダ200またはビデオデコーダ300は、レベルインデックスを示す第1のシンタックス要素と水平オフセットおよび垂直オフセットを示す第2のシンタックス要素とに従って、水平オフセットと垂直オフセットとを決定するために使用するためにoffsetX=-iNADistanceHor-1およびoffsetY=height+iNADistanceVer-1、offsetX=width+iNADistanceHor-1およびoffsetY=-iNADistanceVer-1、offsetX=width>>1およびoffsetY=-iNADistanceVer-1、offsetX=-iNADistanceHor-1およびoffsetY=height>>1、またはoffsetX=-iNADistanceHor-1およびoffsetY=-iNADistanceVer-1のうちの1つを選択し得、ここにおいて、offsetXは、水平オフセットであり、offsetYは、垂直オフセットであり、widthは、いくつかのルーマサンプル中の現在のPUの幅であり、heightは、いくつかのルーマサンプル中の現在のPUの高さであり、iNAは、i番目の隣接しない候補ユニットを表し、iNADistanceHor=width*(第1のシンタックス要素+1)であり、iNADistanceVer=height*(第1のシンタックス要素+1)である。
【0176】
[0183]いくつかの例では、AMVP候補リスト中の候補の数は、2よりも大きい。いくつかの例では、AMVP候補リスト中の候補の数は5である。
【0177】
[0184]いくつかの例では、ビデオエンコーダ200またはビデオデコーダ300は、AMVP候補リスト中の各候補のためのそれぞれのテンプレートマッチングコストを決定し、AMVP候補リスト中の複数の候補のうちで最小のテンプレートマッチングコストを有するAMVP候補リスト中の候補である動きベクトル予測子を決定し得る。
【0178】
[0185]いくつかの例では、AMVP候補リストは、テンプレートマッチングで改良されたAMVP候補と改良されてないAMVP候補とを備える。いくつかの例では、ビデオエンコーダ200またはビデオデコーダ300は、AMVPインデックスをシグナリングまたはパースし得、AMVPインデックスは、動きベクトル予測子がテンプレートマッチングで改良されたAMVP候補であるのかまたは改良されてないAMVP候補であるのかを示す。いくつかの例では、AMVPインデックスは0に等しく、ビデオエンコーダ200またはビデオデコーダ300は、動きベクトル予測子がテンプレートマッチングで改良されたAMVP候補であると決定し得る。いくつかの例では、AMVPインデックスは1に等しく、ビデオエンコーダ200またはビデオデコーダ300は、改良されてないAMVP候補であると決定し得る。いくつかの例では、ビデオエンコーダ200またはビデオデコーダ300は、AMVP候補リスト中の各候補のためのそれぞれのテンプレートマッチングコストを決定し、テンプレートマッチングを使用して、テンプレートマッチングで改良されたAMVP候補を作成するために最小のテンプレートマッチングコストを有するAMVP候補を改良し得る。いくつかの例では、改良されてないAMVP候補は、任意の潜在的なAMVP候補のうちのテンプレートマッチングで改良されたAMVP候補に対して最大の動きベクトル距離を有する。いくつかの例では、改良されてないAMVP候補は、任意の潜在的なAMVP候補のうちのテンプレートマッチングで改良されたAMVP候補に対して動きベクトル距離比に対する最小のテンプレートマッチングコストを有する。いくつかの例では、コーディングは、符号化を含む。いくつかの例では、コーディングは、復号を含む。
【0179】
[0186]図11は、本開示の技法による、現在のブロックを符号化するための例示的な方法を示すフローチャートである。現在のブロックは現在のCUを備え得る。ビデオエンコーダ200(図1および図3)に関して説明されるが、他のデバイスが図11の方法と同様の方法を実施するように構成され得ることを理解されたい。
【0180】
[0187]この例では、ビデオエンコーダ200は、最初に、現在のブロックを予測する(1100)。たとえば、ビデオエンコーダ200は、現在のブロックのための予測ブロックを形成し得る。現在のブロックを予測するときに、ビデオエンコーダ200は、図10のAMVP技法を採用し得る。たとえば、AMVPユニット223(図3)は、時間候補または履歴ベースの候補のうちの少なくとも1つを決定し得る。AMVPユニット223はまた、少なくとも1つの隣接しない候補ユニットから少なくとも1つの隣接しない候補を決定し得、ここにおいて、少なくとも1つの隣接しない候補ユニットは、現在のPUに隣接しない。AMVPユニット223は、時間候補または履歴ベースの候補のうちの少なくとも1つと少なくとも1つの隣接しない候補とを含むAMVP候補リストを決定し得る。AMVPユニット223は、時間候補ユニットの後におよび/または履歴ベースの候補ユニットの前にAMVP候補リストに少なくとも1つの隣接しない候補を追加し得る。ビデオエンコーダ200は、次いで、現在のブロックのための残差ブロックを計算し得る(1102)。残差ブロックを計算するために、ビデオエンコーダ200は、元の符号化されていないブロックと、現在のブロックのための予測ブロックとの間の差分を計算し得る。ビデオエンコーダ200は、次いで、残差ブロックを変換し、残差ブロックの変換係数を量子化し得る(1104)。次に、ビデオエンコーダ200は、残差ブロックの量子化された変換係数を走査し得る(1106)。走査中に、または走査に続いて、ビデオエンコーダ200は、変換係数をエントロピー符号化し得る(1108)。たとえば、ビデオエンコーダ200は、CAVLCまたはCABACを使用して変換係数を符号化し得る。ビデオエンコーダ200は、次いで、ブロックのエントロピー符号化されたデータを出力し得る(1110)。
【0181】
[0188]図12は、本開示の技法による、ビデオデータの現在のブロックを復号するための例示的な方法を示すフローチャートである。現在のブロックは、現在のCUを備え得る。ビデオデコーダ300(図1および図4)に関して説明されるが、他のデバイスが、図12の方法と同様の方法を実施するように構成され得ることを理解されたい。
【0182】
[0189]ビデオデコーダ300は、エントロピー符号化された予測情報、および現在のブロックに対応する残差ブロックの変換係数についてのエントロピー符号化されたデータなど、現在のブロックについてのエントロピー符号化されたデータを受信し得る(1200)。ビデオデコーダ300は、現在のブロックのための予測情報を決定するために、および残差ブロックの変換係数を再生するために、エントロピー符号化されたデータをエントロピー復号し得る(1202)。ビデオデコーダ300は、現在のブロックのための予測ブロックを計算するために、たとえば、現在のブロックのための予測情報によって示されるイントラ予測またはインター予測モードを使用して、現在のブロックを予測し得る(1204)。たとえば、ビデオデコーダ300は、現在のブロックを予測するときに図10のAMVP技法を使用し得る。たとえば、AMVPユニット317(図4)は、時間候補または履歴ベースの候補のうちの少なくとも1つを決定し得る。AMVPユニット317はまた、少なくとも1つの隣接しない候補ユニットから少なくとも1つの隣接しない候補を決定し得、ここにおいて、少なくとも1つの隣接しない候補ユニットは、現在のPUに隣接しない。AMVPユニット317は、時間候補または履歴ベースの候補のうちの少なくとも1つと少なくとも1つの隣接しない候補とを含むAMVP候補リストを決定し得る。AMVPユニット317は、時間候補ユニットの後におよび/または履歴ベースの候補ユニットの前にAMVP候補リストに少なくとも1つの隣接しない候補を追加し得る。ビデオデコーダ300は、次いで、量子化された変換係数のブロックを作成するために、再生された変換係数を逆走査し得る(1206)。ビデオデコーダ300は、次いで、残差ブロックを作り出すために、変換係数を逆量子化し、変換係数に逆変換を適用し得る(1208)。ビデオデコーダ300は、予測ブロックと残差ブロックとを組み合わせることによって、最終的に現在のブロックを復号し得る(1210)。
【0183】
[0190]本開示は、以下の非限定的な条項を含む。
【0184】
[0191]条項1A.ビデオデータをコーディングする方法であって、高度動きベクトル予測子(AMVP)候補リストを決定することと、ここにおいて、AMVP候補リスト中の少なくとも1つの候補は、隣接しない候補である、ここにおいて、隣接しない候補は、現在の予測ユニット(PU)に隣接しない、AMVP候補リストに基づいて現在のPUをコーディングすることとを備える方法。
【0185】
[0192]条項2A.AMVP候補リストを決定することは、現在のPUのサイズを決定することと、現在のPUのサイズに少なくとも部分的に基づいて、隣接しない候補を決定することとを備える、条項1Aに記載の方法。
【0186】
[0193]条項3A.AMVP候補リストを決定することは、距離レベルを決定することと、距離レベルに少なくとも部分的に基づいて、隣接しない候補を決定することを備える、条項1A~2Aのいずれかに記載の方法。
【0187】
[0194]条項4A.潜在的な隣接しない候補は、複数のグループに分割される、条項1A~3Aのいずれかに記載の方法。
【0188】
[0195]条項5A.隣接しない候補を決定することは、xオフセットとyオフセットとを決定することを備える、条項2A~4Aのいずれかに記載の方法。
【0189】
[0196]条項6A.隣接しない候補を決定することは、現在のPUの左上のルーマサンプル座標にxオフセットとyオフセットとを加算することを備える、条項5Aに記載の方法。
【0190】
[0197]条項7A.AMVP候補リスト中のAMVP候補の数は2よりも大きい、条項1A~6Aのいずれかに記載の方法。
【0191】
[0198]条項8A.AMVP候補リスト中のAMVP候補の数は5である、条項7Aに記載の方法。
【0192】
[0199]条項9A.隣接しない候補は、任意の時間候補の後におよび任意の履歴ベースの候補の前にAMVP候補リストに追加される、条項1A~8Aのいずれかに記載の方法。
【0193】
[0200]条項10A.隣接しない候補は、任意の履歴ベースの候補の後におよび任意の0候補の前にAMVP候補リストに追加される、条項1A~8Aのいずれかに記載の方法。
【0194】
[0201]条項11A.隣接しない候補は、任意の空間候補の後におよび任意の時間候補の前にAMVP候補リストに追加される、条項1A~8Aのいずれかに記載の方法。
【0195】
[0202]条項12A.AMVP候補リストを決定することは、優先度に基づく順序でAMVP候補リストを決定することを備える、条項1A~8Aのいずれかに記載の方法。
【0196】
[0203]条項13A.優先度は、第1に、空間的に左側の隣接候補、第2に、空間的に左側の隣接しない候補、第3に、空間的に上の隣接候補、第4に、空間的に上の隣接しない候補、第5に、時間候補、第6に、履歴候補、第7に、0MV候補を備える、条項12Aに記載の方法。
【0197】
[0204]条項14A.AMVP候補リストは、改良されてないAMVP候補を備える、条項1A~13Aのいずれかに記載の方法。
【0198】
[0205]条項15A.AMVPインデックスをパースまたはシグナリングすることをさらに備える、条項1A~14Aのいずれかに記載の方法。
【0199】
[0206]条項16A.AMVPインデックスは0に等しく、ここにおいて、本方法は、動きベクトル予測子がテンプレートマッチングで改良されたAMVP候補であると決定することをさらに備える、条項15Aに記載の方法。
【0200】
[0207]条項17A.AMVPインデックスは1に等しく、ここにおいて、本方法は、動きベクトル予測子が改良されてないAMVP候補であると決定することをさらに備える、条項15Aに記載の方法。
【0201】
[0208]条項18A.AMVP候補リストは、テンプレートマッチングで改良されたAMVP候補と改良されてないAMVP候補とを備える、ここにおいて、改良されてないAMVP候補は、テンプレートマッチングで改良されたAMVP候補よりも現在のPUからさらに離れて位置する、条項1A~17Aのいずれかに記載の方法。
【0202】
[0209]条項19A.改良されてないAMVP候補は、潜在的なAMVP候補の現在のPUまでの最大の動きベクトル距離を有する、条項18Aに記載の方法。
【0203】
[0210]条項20A.改良されてないAMVP候補は、最小のテンプレートマッチングコストから潜在的なAMVP候補の動きベクトル距離を減じたものを有する、条項18Aに記載の方法。
【0204】
[0211]条項21A.コーディングすることが復号することを備える、条項1A~20Aのいずれかに記載の方法。
【0205】
[0212]条項22A.コーディングすることが符号化することを備える、条項1A~21Aのいずれかに記載の方法。
【0206】
[0213]条項23A.ビデオデータをコーディングするためのデバイスであって、条項1A~22Aのいずれかに記載の方法を実施するための1つまたは複数の手段を備えるデバイス。
【0207】
[0214]条項24A.1つまたは複数の手段が、回路中に実装された1つまたは複数のプロセッサを備える、条項23Aに記載のデバイス。
【0208】
[0215]条項25A.ビデオデータを記憶するためのメモリをさらに備える、条項23A~24Aのいずれかに記載のデバイス。
【0209】
[0216]条項26A.復号されたビデオデータを表示するように構成されたディスプレイをさらに備える、条項23A~25Aのいずれかに記載のデバイス。
【0210】
[0217]条項27A.デバイスが、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、またはセットトップボックスのうちの1つまたは複数を備える、条項23A~26Aのいずれかに記載のデバイス。
【0211】
[0218]条項28A.デバイスがビデオデコーダを備える、条項23A~27Aのいずれかに記載のデバイス。
【0212】
[0219]条項29A.デバイスがビデオエンコーダを備える、条項23A~28Aのいずれかに記載のデバイス。
【0213】
[0220]条項30A.命令を記憶したコンピュータ可読記憶媒体であって、命令が、実行されたとき、1つまたは複数のプロセッサに、条項1A~29Aのいずれかに記載の方法を実施させる、コンピュータ可読記憶媒体。
【0214】
[0221]条項31A.ビデオデータを符号化するためのデバイスであって、高度動きベクトル予測子(AMVP)候補リストを決定するための手段と、ここにおいて、AMVP候補リスト中の少なくとも1つの候補は、隣接しない候補である、ここにおいて、隣接しない候補は、現在の予測ユニット(PU)に隣接しない、AMVP候補リストに基づいて現在のPUをコーディングするための手段とを備えるデバイス。
【0215】
[0222]条項1B.ビデオデータをコーディングする方法であって、時間候補または履歴ベースの候補のうちの少なくとも1つを決定することと、少なくとも1つの隣接しない候補ユニットから少なくとも1つの隣接しない候補を決定することと、ここにおいて、少なくとも1つの隣接しない候補ユニットは、現在の予測ユニット(PU)に隣接しない、時間候補または履歴ベースの候補のうちの少なくとも1つと少なくとも1つの隣接しない候補とを備える高度動きベクトル予測子(AMVP)候補リストを決定することと、ここにおいて、少なくとも1つの隣接しない候補は、時間候補の後または履歴ベースの候補の前のうちの少なくとも1つにAMVP候補リストに追加される、AMVP候補リストに基づいて現在のPUをコーディングすることとを備える方法。
【0216】
[0223]条項2B.少なくとも1つの隣接しない候補を決定することは、現在のPUの1ユニット下2ユニット左側、現在のPUの2ユニット上1ユニット右側、現在のPUの2ユニット上2ユニット左側、現在のPUの2ユニット下3ユニット左側、現在のPUの3ユニット上2ユニット右側、現在のPUの3ユニット上、現在のPUの3ユニット左側、現在のPUの3ユニット上3ユニット左側、現在のPUの3ユニット下4ユニット左側、現在のPUの4ユニット上3ユニット右側、現在のPUの4ユニット上、現在のPUの4ユニット左側、現在のPUの4ユニット上4ユニット左側、現在のPUの4ユニット下5ユニット左側、現在のPUの5ユニット上4ユニット右側、現在のPUの5ユニット上、現在のPUの5ユニット左側、および現在のPUの5ユニット上5ユニット左側に位置する潜在的な隣接しない候補ユニットからなるグループから少なくとも1つの隣接しない候補ユニットを選択することを備える、条項1Bに記載の方法。
【0217】
[0224]条項3B.複数の潜在的な隣接しない候補ユニットは、複数のグループに分割される、ここにおいて、本方法は、複数のグループのうちのグループを示すレベルインデックスをシグナリングまたはパースすることと、レベルインデックスによって示されるグループに属する潜在的な隣接しない候補ユニットのうちの1つを示す位置インデックスをシグナリングまたはパースすることと、ここにおいて、少なくとも1つの隣接しない候補ユニットは、潜在的な隣接しない候補ユニットのうちの1つを備える、をさらに備える、条項1Bまたは条項2Bに記載の方法。
【0218】
[0225]条項4B.複数のグループは、現在のPUの1ユニット下2ユニット左側、現在のPUの2ユニット上1ユニット右側、および現在のPUの2ユニット上2ユニット左側に位置する潜在的な隣接しない候補ユニットの第1のグループと、現在のPUの2ユニット下3ユニット左側、現在のPUの3ユニット上2ユニット右側、現在のPUの3ユニット上、現在のPUの3ユニット左側、現在のPUの3ユニット上3ユニット左側に位置する潜在的な隣接しない候補ユニットの第2のグループと、現在のPUの3ユニット下4ユニット左側、現在のPUの4ユニット上3ユニット右側、現在のPUの4ユニット上、現在のPUの4ユニット左側、現在のPUの4ユニット上4ユニット左側に位置する潜在的な隣接しない候補ユニットの第3のグループと、現在のPUの4ユニット下5ユニット左側、現在のPUの5ユニット上4ユニット右側、現在のPUの5ユニット上、現在のPUの5ユニット左側、現在のPUの5ユニット上5ユニット左側に位置する潜在的な隣接しない候補ユニットの第4のグループとを備える、条項3Bに記載の方法。
【0219】
条項5B.現在のPUのサイズを決定すること、ここにおいて、少なくとも1つの隣接しない候補を決定することは、現在のPUのサイズに少なくとも部分的に基づく、をさらに備える、条項1B~4Bに記載の方法。
【0220】
[0226]条項6B.少なくとも1つの隣接しない候補を決定することは、現在のPUの左上のルーマサンプルに対する水平オフセットと現在のPUの左上のルーマサンプルに対する垂直オフセットとを決定することを備える、条項1B~5Bに記載の方法。
【0221】
[0227]条項7B.少なくとも1つの隣接しない候補ユニットを決定することは、現在のPUの左上のルーマサンプル座標に水平オフセットと垂直オフセットとを加算することをさらに備える、条項6Bに記載の方法。
【0222】
[0228]条項8B.レベルインデックスを示す第1のシンタックス要素と水平オフセットおよび垂直オフセットを示す第2のシンタックス要素とに従って、水平オフセットと垂直オフセットとを決定するために使用するためにoffsetX=-iNADistanceHor-1およびoffsetY=height+iNADistanceVer-1、offsetX=width+iNADistanceHor-1およびoffsetY=-iNADistanceVer-1、offsetX=width>>1およびoffsetY=-iNADistanceVer-1、offsetX=-iNADistanceHor-1およびoffsetY=height>>1、またはoffsetX=-iNADistanceHor-1およびoffsetY=-iNADistanceVer-1のうちの1つを選択すること、ここにおいて、offsetXは、水平オフセットであり、offsetYは、垂直オフセットであり、widthは、いくつかのルーマサンプル中の現在のPUの幅であり、heightは、いくつかのルーマサンプル中の現在のPUの高さであり、iNAは、i番目の隣接しない候補ユニットを表し、iNADistanceHor=width*(レベルインデックス+1)であり、iNADistanceVer=height*(レベルインデックス+1)である、をさらに備える、条項6Bまたは条項7Bに記載の方法。
【0223】
[0229]条項9B.AMVP候補リスト中の候補の数は2よりも大きい、条項1B~8Bのいずれかに記載の方法。
【0224】
[0230]条項10B.AMVP候補リスト中の候補の数は5である、条項9Bに記載の方法。
【0225】
[0231]条項11B.AMVP候補リスト中の各候補のためのそれぞれのテンプレートマッチングコストを決定することと、AMVP候補リスト中の複数の候補のうちで最小のテンプレートマッチングコストを有するAMVP候補リスト中の候補である動きベクトル予測子を決定することとをさらに備える、条項1B~10Bのいずれかに記載の方法。
【0226】
[0232]条項12B.AMVP候補リストは、テンプレートマッチングで改良されたAMVP候補と改良されてないAMVP候補とを備え、方法は、AMVPインデックスをシグナリングまたはパースすること、AMVPインデックスは、動きベクトル予測子がテンプレートマッチングで改良されたAMVP候補であるのかまたは改良されてないAMVP候補であるのかを示す、をさらに備える、条項1B~11Bのいずれかに記載の方法。
【0227】
[0233]条項13B.AMVPインデックスは0に等しく、ここにおいて、本方法は、動きベクトル予測子がテンプレートマッチングで改良されたAMVP候補であると決定することをさらに備える、条項12Bに記載の方法。
【0228】
[0234]条項14B.AMVPインデックスは1に等しく、ここにおいて、本方法は、動きベクトル予測子が改良されてないAMVP候補であると決定することをさらに備える、条項12Bに記載の方法。
【0229】
[0235]条項15B.AMVP候補リスト中の各候補のためのそれぞれのテンプレートマッチングコストを決定することと、テンプレートマッチングを使用して、テンプレートマッチングで改良されたAMVP候補を作成するために最小のテンプレートマッチングコストを有するAMVP候補を改良することとをさらに備える、条項12B~14Bのいずれかに記載の方法。
【0230】
[0236]条項16B.改良されてないAMVP候補ユニットは、任意の潜在的なAMVP候補のうちのテンプレートマッチングで改良されたAMVP候補に対して最大の動きベクトル距離を有する、条項12B~15Bのいずれかに記載の方法。
【0231】
[0237]条項17B.改良されてないAMVP候補は、任意の潜在的なAMVP候補のうちのテンプレートマッチングで改良されたAMVP候補に対して動きベクトル距離比に対する最小のテンプレートマッチングコストを有する、条項12B~15Bのいずれかに記載の方法。
【0232】
[0238]条項18B.コーディングすることが符号化することを備える、条項1B~17Bのいずれかに記載の方法。
【0233】
[0239]条項19B.コーディングすることが復号することを備える、条項1B~17Bのいずれかに記載の方法。
【0234】
[0240]条項20B.ビデオデータをコーディングするためのデバイスであって、ビデオデータを記憶するように構成されたメモリと、回路中に実装され、メモリと通信可能に結合された1つまたは複数のプロセッサとを備え、1つまたは複数のプロセッサは、時間候補または履歴ベースの候補のうちの少なくとも1つを決定することと、少なくとも1つの隣接しない候補ユニットから少なくとも1つの隣接しない候補を決定することと、ここにおいて、少なくとも1つの隣接しない候補ユニットは、現在の予測ユニット(PU)に隣接しない、時間候補または履歴ベースの候補のうちの少なくとも1つと少なくとも1つの隣接しない候補とを備える高度動きベクトル予測子(AMVP)候補リストを決定することと、ここにおいて、少なくとも1つの隣接しない候補は、時間候補の後または履歴ベースの候補の前のうちの少なくとも1つにAMVP候補リストに追加される、AMVP候補リストに基づいて現在のPUをコーディングすることとを行うように構成された、デバイス。
【0235】
[0241]条項21B.少なくとも1つの隣接しない候補を決定することの部分として、1つまたは複数のプロセッサは、現在のPUの1ユニット下2ユニット左側、現在のPUの2ユニット上1ユニット右側、現在のPUの2ユニット上2ユニット左側、現在のPUの2ユニット下3ユニット左側、現在のPUの3ユニット上2ユニット右側、現在のPUの3ユニット上、現在のPUの3ユニット左側、現在のPUの3ユニット上3ユニット左側、現在のPUの3ユニット下4ユニット左側、現在のPUの4ユニット上3ユニット右側、現在のPUの4ユニット上、現在のPUの4ユニット左側、現在のPUの4ユニット上4ユニット左側、現在のPUの4ユニット下5ユニット左側、現在のPUの5ユニット上4ユニット右側、現在のPUの5ユニット上、現在のPUの5ユニット左側、および現在のPUの5ユニット上5ユニット左側に位置するユニットからなる潜在的な隣接しない候補ユニットのグループから少なくとも1つの隣接しない候補ユニットを選択するように構成された、条項20Bに記載のデバイス。
【0236】
[0242]条項22B.複数の潜在的な隣接しない候補ユニットは、複数のグループに分割される、ここにおいて、1つまたは複数のプロセッサは、複数のグループのうちのグループを示すレベルインデックスをシグナリングまたはパースすることと、レベルインデックスによって示されるグループに属する潜在的な隣接しない候補ユニットのうちの1つを示す位置インデックスをシグナリングまたはパースすることと、ここにおいて、少なくとも1つの隣接しない候補ユニットは、潜在的な隣接しない候補ユニットのうちの1つを備える、を行うようにさらに構成された、条項20Bまたは条項21Bに記載のデバイス。
【0237】
[0243]条項23B.複数のグループは、現在のPUの1ユニット下2ユニット左側、現在のPUの2ユニット上1ユニット右側、および現在のPUの2ユニット上2ユニット左側に位置する潜在的な隣接しない候補ユニットの第1のグループと、現在のPUの2ユニット下3ユニット左側、現在のPUの3ユニット上2ユニット右側、現在のPUの3ユニット上、現在のPUの3ユニット左側、現在のPUの3ユニット上3ユニット左側に位置する潜在的な隣接しない候補ユニットの第2のグループと、現在のPUの3ユニット下4ユニット左側、現在のPUの4ユニット上3ユニット右側、現在のPUの4ユニット上、現在のPUの4ユニット左側、現在のPUの4ユニット上4ユニット左側に位置する潜在的な隣接しない候補ユニットの第3のグループと、現在のPUの4ユニット下5ユニット左側、現在のPUの5ユニット上4ユニット右側、現在のPUの5ユニット上、現在のPUの5ユニット左側、現在のPUの5ユニット上5ユニット左側に位置する潜在的な隣接しない候補ユニットの第4のグループとを備える、条項22Bに記載のデバイス。
【0238】
[0244]条項24B.1つまたは複数のプロセッサは、現在のPUのサイズを決定すること、ここにおいて、1つまたは複数のプロセッサは、現在のPUのサイズに少なくとも部分的に基づいて少なくとも1つの隣接しない候補を決定するように構成される、を行うようにさらに構成された、条項20B~23Bのいずれかに記載のデバイス。
【0239】
[0245]条項25B.少なくとも1つの隣接しない候補を決定することの部分として、1つまたは複数のプロセッサは、現在のPUの左上のルーマサンプルに対する水平オフセットと現在のPUの左上のルーマサンプルに対する垂直オフセットとを決定するように構成された、条項20B~24Bのいずれかに記載のデバイス。
【0240】
[0246]条項26B.少なくとも1つの隣接しない候補ユニットを決定することの部分として、1つまたは複数のプロセッサは、現在のPUの左上のルーマサンプル座標に水平オフセットと垂直オフセットとを加算するようにさらに構成された、条項25Bに記載のデバイス。
【0241】
[0247]条項27B.1つまたは複数のプロセッサは、レベルインデックスを示す第1のシンタックス要素と水平オフセットおよび垂直オフセットを示す第2のシンタックス要素とに従って、水平オフセットと垂直オフセットとを決定するために使用するためにoffsetX=-iNADistanceHor-1およびoffsetY=height+iNADistanceVer-1、offsetX=width+iNADistanceHor-1およびoffsetY=-iNADistanceVer-1、offsetX=width>>1およびoffsetY=-iNADistanceVer-1、offsetX=-iNADistanceHor-1およびoffsetY=height>>1、またはoffsetX=-iNADistanceHor-1およびoffsetY=-iNADistanceVer-1のうちの1つを選択すること、ここにおいて、offsetXは、水平オフセットであり、offsetYは、垂直オフセットであり、widthは、いくつかのルーマサンプル中の現在のPUの幅であり、heightは、いくつかのルーマサンプル中の現在のPUの高さであり、iNAは、i番目の隣接しない候補ユニットを表し、iNADistanceHor=width*(レベルインデックス+1)であり、iNADistanceVer=height*(レベルインデックス+1)である、を行うようにさらに構成された、条項25Bまたは条項26Bに記載のデバイス。
【0242】
[0248]条項28B.AMVP候補リスト中の候補の数は2よりも大きい、条項20B~27Bのいずれかに記載のデバイス。
【0243】
[0249]条項29B.AMVP候補リスト中の候補の数は5である、条項28Bに記載のデバイス。
【0244】
[0250]条項30B.1つまたは複数のプロセッサは、AMVP候補リスト中の各候補のためのそれぞれのテンプレートマッチングコストを決定することと、AMVP候補リスト中の複数の候補のうちで最小のテンプレートマッチングコストを有するAMVP候補リスト中の候補である動きベクトル予測子を決定することとを行うようにさらに構成された、条項20B~29Bのいずれかに記載のデバイス。
【0245】
[0251]条項31B.AMVP候補リストは、テンプレートマッチングで改良されたAMVP候補と改良されてないAMVP候補とを備える、ここにおいて、1つまたは複数のプロセッサは、AMVPインデックスをシグナリングまたはパースすること、AMVPインデックスは、動きベクトル予測子がテンプレートマッチングで改良されたAMVP候補であるのかまたは改良されてないAMVP候補であるのかを示す、を行うようにさらに構成された、条項20B~30Bのいずれかに記載のデバイス。
【0246】
[0252]条項32B.AMVPインデックスは0に等しく、ここにおいて、1つまたは複数のプロセッサは、動きベクトル予測子がテンプレートマッチングで改良されたAMVP候補であると決定することを行うようにさらに構成された、条項31Bに記載のデバイス。
【0247】
[0253]条項33B.AMVPインデックスは1に等しく、ここにおいて、1つまたは複数のプロセッサは、動きベクトル予測子が改良されてないAMVP候補であると決定することを行うようにさらに構成された、条項31Bに記載のデバイス。
【0248】
[0254]条項34B.1つまたは複数のプロセッサは、AMVP候補リスト中の各候補のためのそれぞれのテンプレートマッチングコストを決定することと、テンプレートマッチングを使用して、テンプレートマッチングで改良されたAMVP候補を作成するために最小のテンプレートマッチングコストを有するAMVP候補を改良することとを行うようにさらに構成された、条項31B~33Bのいずれかに記載のデバイス。
【0249】
[0255]条項35B.改良されてないAMVP候補は、任意の潜在的なAMVP候補のうちのテンプレートマッチングで改良されたAMVP候補に対して最大の動きベクトル距離を有する、条項31B~34Bのいずれかに記載のデバイス。
【0250】
[0256]条項36B.改良されてないAMVP候補は、任意の潜在的なAMVP候補のうちのテンプレートマッチングで改良されたAMVP候補に対して動きベクトル距離比に対する最小のテンプレートマッチングコストを有する、条項31B~34Bのいずれかに記載のデバイス。
【0251】
[0257]条項37B.復号されたビデオデータを表示するように構成されたディスプレイをさらに備える、条項20B~36Bのいずれかに記載のデバイス。
【0252】
[0258]条項38B.ビデオデータをキャプチャするように構成されたカメラをさらに備える、条項20B~37Bのいずれかに記載のデバイス。
【0253】
[0259]条項39B.命令を記憶したコンピュータ可読記憶媒体であって、命令は、実行されたとき、1つまたは複数のプロセッサに、時間候補または履歴ベースの候補のうちの少なくとも1つを決定することと、少なくとも1つの隣接しない候補ユニットから少なくとも1つの隣接しない候補を決定することと、ここにおいて、少なくとも1つの隣接しない候補ユニットは、現在の予測ユニット(PU)に隣接しない、時間候補または履歴ベースの候補のうちの少なくとも1つと少なくとも1つの隣接しない候補とを備える高度動きベクトル予測子(AMVP)候補リストを決定することと、ここにおいて、少なくとも1つの隣接しない候補は、時間候補の後または履歴ベースの候補の前のうちの少なくとも1つにAMVP候補リストに追加される、AMVP候補リストに基づいて現在のPUをコーディングすることとを行わせる、コンピュータ可読記憶媒体。
【0254】
[0260]条項40B.ビデオデータをコーディングするためのデバイスであって、時間候補または履歴ベースの候補のうちの少なくとも1つを決定するための手段と、少なくとも1つの隣接しない候補ユニットから少なくとも1つの隣接しない候補を決定するための手段と、ここにおいて、少なくとも1つの隣接しない候補ユニットは、現在の予測ユニット(PU)に隣接しない、時間候補または履歴ベースの候補のうちの少なくとも1つと少なくとも1つの隣接しない候補とを備える高度動きベクトル予測子(AMVP)候補リストを決定するための手段と、ここにおいて、少なくとも1つの隣接しない候補は、時間候補の後または履歴ベースの候補の前のうちの少なくとも1つにAMVP候補リストに追加される、AMVP候補リストに基づいて現在のPUをコーディングするための手段とを備えるデバイス。
【0255】
[0261]上記例に応じて、本明細書で説明された技法のいずれかのいくつかの行為またはイベントは、異なるシーケンスで実施され得、追加、マージ、または完全に除外され得る(たとえば、すべての説明された行為またはイベントが本技法の実践のために必要であるとは限らない)ことを認識されたい。その上、いくつかの例では、行為またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して同時に実施され得る。
【0256】
[0262]1つまたは複数の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアに実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベース処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応する、コンピュータ可読記憶媒体を含み得るか、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形のコンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技法の実装のための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【0257】
[0263]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD-ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは、命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含むのではなく、代わりに、非一時的な有形の記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)、およびBlu-rayディスク(disc)を含み、ここで、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲に含まれるべきである。
【0258】
[0264]命令は、1つまたは複数のDSP、汎用マイクロプロセッサ、ASIC、FPGA、あるいは他の等価な集積回路またはディスクリート論理回路など、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」および「処理回路」という用語は、上記の構造、または本明細書で説明された技法の実装に好適な任意の他の構造のいずれかを指し得る。さらに、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用ハードウェアおよび/またはソフトウェアモジュール内に提供されるか、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素において十分に実装され得る。
【0259】
[0265]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。様々な構成要素、モジュール、またはユニットが、開示された技法を実行するように構成されたデバイスの機能的態様を強調するために本開示で説明されるが、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上記で説明されたように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明された1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作可能なハードウェアユニットの集合によって与えられ得る。
【0260】
[0266]様々な例が説明された。これらおよび他の例は添付の特許請求の範囲内に入る。
図1
図2A
図2B
図3
図4
図5
図6A
図6B
図7
図8
図9
図10
図11
図12
【国際調査報告】