(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-09
(45)【発行日】2024-08-20
(54)【発明の名称】動きベクトル予測
(51)【国際特許分類】
H04N 19/52 20140101AFI20240813BHJP
H04N 19/433 20140101ALI20240813BHJP
【FI】
H04N19/52
H04N19/433
【外国語出願】
(21)【出願番号】P 2023140905
(22)【出願日】2023-08-31
(62)【分割の表示】P 2019568328の分割
【原出願日】2018-06-11
【審査請求日】2023-09-25
(32)【優先日】2017-06-13
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-06-08
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】595020643
【氏名又は名称】クゥアルコム・インコーポレイテッド
【氏名又は名称原語表記】QUALCOMM INCORPORATED
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】イ-ウェン・チェン
(72)【発明者】
【氏名】ウェイ-ジュン・チェン
(72)【発明者】
【氏名】ユ-チェン・スン
(72)【発明者】
【氏名】リ・ジャン
(72)【発明者】
【氏名】ソンウォン・リ
(72)【発明者】
【氏名】シャン・リ
(72)【発明者】
【氏名】シャオ-チャン・チュアン
(72)【発明者】
【氏名】ジャンレ・チェン
(72)【発明者】
【氏名】バディム・セレジン
(72)【発明者】
【氏名】マルタ・カルチェビチ
【審査官】久保 光宏
(56)【参考文献】
【文献】特開2015-19336(JP,A)
【文献】米国特許出願公開第2014/0321547(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04N19/00-19/98
CSDB(日本国特許庁)
学術文献等データベース(日本国特許庁)
IEEEXplore(IEEE)
(57)【特許請求の範囲】
【請求項1】
ビデオデータを復号する方法であって、
ビデオデコーダによって、先入れ先出し(FIFO)動きベクトル予測子(MVP)候補リストバッファを生成することと、前記FIFO MVP候補リストバッファを生成することは、
前記ビデオデコーダによって、現在ピクチャの現在ブロック
の前に復号された前記現在ピクチャのブロックの動き情報を決定することと、前記ブロックの前記動き情報は、動きベクトルと参照インデックスとを含み、
前記ビデオデコーダによって、
前記FIFO MVP候補リストバッファを更新することと、前記FIFO MVP候補リストバッファを更新することは、前記FIFO MVP候補リストバッファ中のMVP候補の中に前記ブロックの前記動き情報の他の発生があることに基づき、前記FIFO MVP候補リストバッファ
中のMVP候補を並び替えること、を備え、
を備え、
前記ビデオデコーダによって、前記FIFO MVP候補リストバッファ中のMVP候補の中から、前記現在ブロックのためのMVPを決定することと、前記FIFO MVP候補リストバッファ中の前記MVP候補は、前記現在ブロックに隣接しない
、少なくとも1つの隣接しないブロックの動き情報を含み、
前記ビデオデコーダによって、前記現在ブロックのための前記MVPに基づいて、前記現在ブロックの動きベクトルを決定することと、
前記ビデオデコーダによって、前記現在ブロックの前記動きベクトルに基づいて予測ブロックを決定することと、
前記ビデオデコーダによって、前記予測ブロックに基づいて、前記現在ピクチャの前記現在ブロックのサンプル値を再構築することと、
を備える、方法。
【請求項2】
前記MVP候補を並び替えることは、前記ブロックの前記動き情報を示す前記FIFO MVP候補リストバッファ中のMVP候補が、前記FIFO MVP候補リストバッファ中の他のMVP候補よりも優先されるように、前記MVP候補を並び替えることを備える、請求項1に記載の方法。
【請求項3】
前記現在ブロックのための前記MVPはアフィンモードにある、請求項1に記載の方法。
【請求項4】
前記現在ブロックの前記動きベクトルを決定することは、
前記ビデオデコーダによって、前記現在ブロックの前記動きベクトルが前記現在ブロックのための前記MVPの動きベクトルを指定するように、または、前記現在ブロックの前記動きベクトルが前記現在ブロックのための前記MVPの動き情報の動きベクトル+動きベクトル差分(MVD)に等しくなるように、前記現在ブロックの前記動きベクトルを決定すること、
を備える、請求項1に記載の方法。
【請求項5】
前記ビデオデコーダによって、コーディングユニット(CU)レベルフレームレートアップコンバージョン(FRUC)動きベクトル候補のセットを決定することと、
前記ビデオデコーダによって、CUレベルFRUC動きベクトル候補の前記セットからCUレベルFRUC動きベクトル候補を選択することと、
前記ビデオデコーダによって、少なくとも部分的に、前記選択されたCUレベルFRUC動きベクトル候補から開始するローカル探索を実施することによって、CUレベル動きベクトルを決定することと、
前記ビデオデコーダによって、FRUCサブCUレベル動きベクトル候補のセットを用いてサブCUレベルにおいて前記CUレベル動きベクトルを改良することと、
をさらに備え、
CUレベルFRUC動きベクトル候補の前記セットおよびFRUCサブCUレベル動きベクトル候補の前記セットのうちの少なくとも1つは、前記隣接しないブロックの前記動きベクトルを指定する隣接しない空間動きベクトル予測子(NA-SMVP)を含む、
請求項1に記載の方法。
【請求項6】
ビデオデータを符号化する方法であって、
ビデオエンコーダによって、先入れ先出し(FIFO)動きベクトル予測子(MVP)候補リストバッファを生成することと、前記FIFO MVP候補リストバッファを生成することは、
前記ビデオエンコーダによって、現在ピクチャの現在ブロック
の前に符号化された前記現在ピクチャのブロックの動き情報を決定することと、前記ブロックの前記動き情報は、動きベクトルと参照インデックスとを含み、
前記ビデオエンコーダによって、
前記FIFO MVP候補リストバッファを更新することと、前記FIFO MVP候補リストバッファを更新することは、前記FIFO MVP候補リストバッファ中のMVP候補の中に前記ブロックの前記動き情報の他の発生があることに基づき、前記FIFO MVP候補リストバッファ
中のMVP候補を並び替えること、を備え、
を備え、
前記ビデオエンコーダによって、前記FIFO MVP候補リストバッファ中のMVP候補の中から、前記現在ブロックのためのMVPを決定することと、前記FIFO MVP候補リストバッファ中の前記MVP候補は、前記現在ブロックに隣接しない
、少なくとも1つの隣接しないブロックの動き情報を含み、
前記ビデオエンコーダによって、前記現在ブロックのための前記MVPに基づいて、前記現在ブロックの動きベクトルを決定することと、
前記ビデオエンコーダによって、前記現在ブロックの前記動きベクトルに基づいて予測ブロックを決定することと、
前記ビデオエンコーダによって、前記予測ブロックに基づいて、残差サンプル値を生成することと、
を備える、方法。
【請求項7】
前記MVP候補を並び替えることは、前記ブロックの前記動き情報を示す前記FIFO MVP候補リストバッファ中のMVP候補が、前記FIFO MVP候補リストバッファ中の他のMVP候補よりも優先されるように、前記MVP候補を並び替えることを備える、請求項6に記載の方法。
【請求項8】
前記現在ブロックのための前記MVPはアフィンモードにある、請求項
6に記載の方法。
【請求項9】
前記ビデオエンコーダによって、コーディングユニット(CU)レベルフレームレートアップコンバージョン(FRUC)動きベクトル候補のセットを決定することと、
前記ビデオエンコーダによって、CUレベルFRUC動きベクトル候補の前記セットからCUレベルFRUC動きベクトル候補を選択することと、
前記ビデオエンコーダによって、少なくとも部分的に、前記選択されたCUレベルFRUC動きベクトル候補から開始するローカル探索を実施することによって、CUレベル動きベクトルを決定することと、
前記ビデオエンコーダによって、FRUCサブCUレベル動きベクトル候補のセットを用いてサブCUレベルにおいて前記CUレベル動きベクトルを改良することと、
をさらに備え、
CUレベルFRUC動きベクトル候補の前記セットおよびFRUCサブCUレベル動きベクトル候補の前記セットのうちの少なくとも1つは、前記隣接しないブロックの前記動きベクトルを指定する隣接しない空間動きベクトル予測子(NA-SMVP)を含む、
請求項
6に記載の方法。
【請求項10】
ビデオデータを復号するための
デバイスであって、
1つまたは複数の記憶媒体と、
回路中に実装される1つまたは複数のプロセッサと、を備え、前記1つまたは複数のプロセッサは、
先入れ先出し(FIFO)動きベクトル予測子(MVP)候補リストバッファを生成することと、ここにおいて、前記1つまたは複数の記憶媒体は、前記FIFO MVP候補リストバッファを記憶するように構成され、前記1つまたは複数のプロセッサは、前記FIFO MVP候補リストバッファを生成することの一部として、
現在ピクチャの現在ブロック
の前に復号された前記現在ピクチャのブロックの動き情報を決定することと、前記ブロックの前記動き情報は、動きベクトルと参照インデックスとを含み、
前記FIFO MVP候補リストバッファを更新することと、前記1つまたは複数のプロセッサは、前記FIFO MVP候補リストバッファを更新することの一部として、前記FIFO MVP候補リストバッファ中のMVP候補の中に前記ブロックの前記動き情報の他の発生があることに基づき、前記FIFO MVP候補リストバッファ
中のMVP候補を並び替えるように構成され、
を行うように構成され、
前記FIFO MVP候補リストバッファ中のMVP候補の中から、前記現在ブロックのためのMVPを決定することと、前記FIFO MVP候補リストバッファ中の前記MVP候補は、前記現在ブロックに隣接しない
、少なくとも1つの隣接しないブロックの動き情報を含み、
前記現在ブロックのための前記MVPに基づいて、前記現在ブロックの動きベクトルを決定することと、
前記現在ブロックの前記動きベクトルに基づいて予測ブロックを決定することと、
前記予測ブロックに基づいて、前記現在ピクチャのサンプル値を再構築することと、
を行うように構成される、
デバイス。
【請求項11】
前記1つまたは複数のプロセッサは、前記FIFO MVP候補リストバッファを更新することの一部として、前記FIFO MVP候補リストバッファ中のMVP候補の中に前記ブロックの前記動き情報の発生がないことに基づき、先に追加されたMVP候補を前記FIFO MVP候補リストバッファから削除し、および前記ブロックの前記動き情報をMVP候補として前記FIFO MVP候補リストバッファへ追加するようにさらに構成される、請求項10に記載のデバイス。
【請求項12】
前記1つまたは複数のプロセッサは、前記ブロックの前記動き情報を示す前記FIFO MVP候補リストバッファ中のMVP候補が、前記FIFO MVP候補リストバッファ中の他のMVP候補よりも優先されるように、前記MVP候補を並び替えるように構成される、請求項10に記載のデバイス。
【請求項13】
前記現在ブロックのための前記MVPはアフィンモードにある、請求項
10に記載の
デバイス。
【請求項14】
前記1つまたは複数のプロセッサは、前記現在ブロックの前記動きベクトルを決定することの一部として、
前記現在ブロックの前記動きベクトルが前記現在ブロックのための前記MVPの動きベクトルを指定するように、または、前記現在ブロックの前記動きベクトルが前記現在ブロックのための前記MVPの動き情報の動きベクトル+動きベクトル差分(MVD)に等しくなるように、前記現在ブロックの前記動きベクトルを決定すること、
を行うように構成される、請求項
10に記載の
デバイス。
【請求項15】
前記1つまたは複数のプロセッサは、
コーディングユニット(CU)レベルフレームレートアップコンバージョン(FRUC)動きベクトル候補のセットを決定することと、
CUレベルFRUC動きベクトル候補の前記セットからCUレベルFRUC動きベクトル候補を選択することと、
少なくとも部分的に、前記選択されたCUレベルFRUC動きベクトル候補から開始するローカル探索を実施することによって、CUレベル動きベクトルを決定することと、
FRUCサブCUレベル動きベクトル候補のセットを用いてサブCUレベルにおいて前記CUレベル動きベクトルを改良することと、
を行うようにさらに構成され、
CUレベルFRUC動きベクトル候補の前記セットおよびFRUCサブCUレベル動きベクトル候補の前記セットのうちの少なくとも1つは、前記隣接しないブロックの前記動きベクトルを指定する隣接しない空間動きベクトル予測子(NA-SMVP)を含む、
請求項
10に記載の
デバイス。
【請求項16】
ビデオデータを符号化するための
デバイスであって、
1つまたは複数の記憶媒体と、
回路中に実装される1つまたは複数のプロセッサと、を備え、前記1つまたは複数のプロセッサは、
先入れ先出し(FIFO)動きベクトル予測子(MVP)候補リストバッファを生成することと、ここにおいて、前記1つまたは複数の記憶媒体は、前記FIFO MVP候補リストバッファを記憶するように構成され、前記1つまたは複数のプロセッサは、前記FIFO MVP候補リストバッファを生成することの一部として、
現在ピクチャの現在ブロック
の前に符号化された前記現在ピクチャのブロックの動き情報を決定することと、前記ブロックの前記動き情報は、動きベクトルと参照インデックスとを含み、
前記FIFO MVP候補リストバッファを更新することと、前記1つまたは複数のプロセッサは、前記FIFO MVP候補リストバッファを更新することの一部として、前記FIFO MVP候補リストバッファ中にMVP候補の中に前記ブロックの前記動き情報の他の発生があることに基づき、前記FIFO MVP候補リストバッファ
中のMVP候補を並び替えるように構成され、
を行うように構成され、
前記FIFO MVP候補リストバッファ中のMVP候補の中から、前記現在ブロックのためのMVPを決定することと、前記FIFO MVP候補リストバッファ中の前記MVP候補は、前記現在ブロックに隣接しない
、少なくとも1つの隣接しないブロックの動き情報を含み、
前記現在ブロックのための前記MVPに基づいて、前記現在ブロックの動きベクトルを決定することと、
前記現在ブロックの前記動きベクトルに基づいて予測ブロックを決定することと、
前記予測ブロックに基づいて、残差サンプル値を生成することと、
を行うように構成される、
デバイス。
【請求項17】
前記1つまたは複数のプロセッサは、前記FIFO MVP候補リストバッファを更新することの一部として、前記FIFO MVP候補リストバッファ中のMVP候補の中に前記ブロックの前記動き情報の発生がないことに基づき、先に追加されたMVP候補を前記FIFO MVP候補リストバッファから削除し、および前記ブロックの前記動き情報をMVP候補として前記FIFO MVP候補リストバッファへ追加するようにさらに構成される、請求項16に記載のデバイス。
【請求項18】
前記1つまたは複数のプロセッサは、前記ブロックの前記動き情報を示す前記FIFO MVP候補リストバッファ中のMVP候補が、前記FIFO MVP候補リストバッファ中の他のMVP候補よりも優先されるように、前記MVP候補を並び替えるように構成される、請求項16に記載のデバイス。
【請求項19】
前記現在ブロックのための前記MVPはアフィンモードにある、請求項
16に記載の
デバイス。
【請求項20】
前記1つまたは複数のプロセッサは、
コーディングユニット(CU)レベルフレームレートアップコンバージョン(FRUC)動きベクトル候補のセットを決定することと、
CUレベルFRUC動きベクトル候補の前記セットからCUレベルFRUC動きベクトル候補を選択することと、
少なくとも部分的に、前記選択されたCUレベルFRUC動きベクトル候補から開始するローカル探索を実施することによって、CUレベル動きベクトルを決定することと、
FRUCサブCUレベル動きベクトル候補のセットを用いてサブCUレベルにおいて前記CUレベル動きベクトルを改良することと、
を行うようにさらに構成され、
CUレベルFRUC動きベクトル候補の前記セットおよびFRUCサブCUレベル動きベクトル候補の前記セットのうちの少なくとも1つは、前記隣接しないブロックの前記動きベクトルを指定する隣接しない空間動きベクトル予測子(NA-SMVP)を含む、
請求項
16に記載の
デバイス。
【発明の詳細な説明】
【優先権の主張】
【0001】
本出願は、その内容全体が参照により組み込まれる、2017年6月13日に出願された米国仮特許出願第62/519,007号の利益を主張する。
【技術分野】
【0002】
本開示は、ビデオコーディングを実施するように構成されたデバイスに関する。
【背景技術】
【0003】
[0003]デジタルビデオ能力は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラーまたは衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスに組み込まれ得る。デジタルビデオデバイスは、MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4,Part10,アドバンストビデオコーディング(AVC:Advanced Video Coding)、またはITU-T H.265,高効率ビデオコーディング(HEVC:High Efficiency Video Coding)によって定義された規格、およびそのような規格の拡張に記載されているビデオ圧縮技法などのビデオ圧縮技法を実装する。ビデオデバイスは、そのようなビデオ圧縮技法を実装することによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、および/または記憶し得る。
【0004】
[0004]ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために空間(イントラピクチャ)予測および/または時間(インターピクチャ)予測を実施し得る。ブロックベースのビデオコーディングでは、ビデオスライス(たとえば、ビデオフレームまたはビデオフレームの一部分)が、コーディングツリーブロック(coding tree block)およびコーディングブロックなどのビデオブロックに区分され得る。空間予測または時間予測は、コーディングされるべきブロックのための予測ブロックを生じる。残差データは、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表す。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換され、残差変換係数が生じ得、その残差変換係数は、次いで量子化され得る。
【発明の概要】
【0005】
[0005]概して、本開示は、動きベクトル予測に関係する技法について説明する。本開示の技法は、HEVC(高効率ビデオコーディング)などの既存のビデオコーデック、または任意の将来のビデオコーディング規格のいずれかに適用され得る。
【0006】
[0006]一例では、本開示は、ビデオデータを復号する方法を説明し、本方法は、ビデオデコーダによって、ビデオデータの現在ピクチャの隣接しない(non-adjacent)ブロックの動きベクトルを決定することと、隣接しないブロックが、現在ピクチャの現在ブロックに隣接しない、ビデオデコーダによって、隣接しないブロックの動きベクトルに基づいて、現在ブロックのための動きベクトル予測子(MVP)を決定することと、ビデオデコーダによって、現在ブロックのためのMVPに基づいて、現在ブロックの動きベクトルを決定することと、ビデオデコーダによって、現在ブロックの動きベクトルに基づいて予測ブロックを決定することと、ビデオデコーダによって、予測ブロックに基づいて、現在ピクチャのサンプル値を再構築することとを備える。
【0007】
[0007]別の例では、本開示は、ビデオデータを符号化する方法を説明し、本方法は、ビデオエンコーダによって、ビデオデータの現在ピクチャの隣接しないブロックの動きベクトルを決定することと、隣接しないブロックが、現在ピクチャの現在ブロックに隣接しない、ビデオエンコーダによって、隣接しないブロックの動きベクトルに基づいて、現在ブロックのための動きベクトル予測子(MVP)を決定することと、ビデオエンコーダによって、現在ブロックの動きベクトルを決定することと、ここにおいて、動きベクトルが、現在ブロックのためのMVPの動きベクトルに等しいか、または、現在ブロックのためのMVPの動きベクトル+ビットストリーム中でシグナリングされた動きベクトル差分(MVD)に等しい、ビデオエンコーダによって、現在ブロックの動きベクトルに基づいて予測ブロックを決定することと、ビデオエンコーダによって、予測ブロックに基づいて、残差サンプル値を生成することとを備える。
【0008】
[0008]別の例では、本開示は、ビデオデータを復号するための装置を説明し、本装置は、ビデオデータを記憶するように構成された1つまたは複数の記憶媒体と、1つまたは複数のプロセッサとを備え、1つまたは複数のプロセッサは、ビデオデータの現在ピクチャの隣接しないブロックの動きベクトルを決定することと、隣接しないブロックが、現在ピクチャの現在ブロックに隣接しない、隣接しないブロックの動きベクトルに基づいて、現在ブロックのための動きベクトル予測子(MVP)を決定することと、現在ブロックのためのMVPに基づいて、現在ブロックの動きベクトルを決定することと、現在ブロックの動きベクトルに基づいて予測ブロックを決定することと、予測ブロックに基づいて、現在ピクチャのサンプル値を再構築することとを行うように構成される。
【0009】
[0009]別の例では、本開示は、ビデオデータを符号化するための装置を説明し、本方法は、ビデオエンコーダによって、ビデオデータの現在ピクチャの隣接しないブロックの動きベクトルを決定することと、隣接しないブロックが、現在ピクチャの現在ブロックに隣接しない、ビデオエンコーダによって、隣接しないブロックの動きベクトルに基づいて、現在ブロックのための動きベクトル予測子(MVP)を決定することと、ビデオエンコーダによって、現在ブロックの動きベクトルを決定することと、ここにおいて、動きベクトルが、現在ブロックのためのMVPの動きベクトルに等しいか、または、現在ブロックのためのMVPの動きベクトル+ビットストリーム中でシグナリングされた動きベクトル差分(MVD)に等しい、ビデオエンコーダによって、現在ブロックの動きベクトルに基づいて予測ブロックを決定することと、ビデオエンコーダによって、予測ブロックに基づいて、残差サンプル値を生成することとを備える。
【0010】
[0010]別の例では、本開示は、ビデオデータを復号するための装置を説明し、本装置は、ビデオデータの現在ピクチャの隣接しないブロックの動きベクトルを決定するための手段と、隣接しないブロックが、現在ピクチャの現在ブロックに隣接しない、隣接しないブロックの動きベクトルに基づいて、現在ブロックのための動きベクトル予測子(MVP)を決定するための手段と、現在ブロックのためのMVPに基づいて、現在ブロックの動きベクトルを決定するための手段と、現在ブロックの動きベクトルに基づいて予測ブロックを決定するための手段と、予測ブロックに基づいて、現在ピクチャのサンプル値を再構築するための手段とを備える。
【0011】
[0011]別の例では、本開示は、ビデオデータを符号化するための装置を説明し、本装置は、ビデオデータの現在ピクチャの隣接しないブロックの動きベクトルを決定するための手段と、隣接しないブロックが、現在ピクチャの現在ブロックに隣接しない、隣接しないブロックの動きベクトルに基づいて、現在ブロックのための動きベクトル予測子(MVP)を決定するための手段と、現在ブロックの動きベクトルを決定するための手段と、ここにおいて、動きベクトルが、現在ブロックのためのMVPの動きベクトルに等しいか、または、現在ブロックのためのMVPの動きベクトル+ビットストリーム中でシグナリングされた動きベクトル差分(MVD)に等しい、現在ブロックの動きベクトルに基づいて予測ブロックを決定するための手段と、予測ブロックに基づいて、残差サンプル値を生成するための手段とを備える。
【0012】
[0012]別の例では、本開示は、命令を記憶するコンピュータ可読記憶媒体を説明し、前記命令は、実行されたとき、1つまたは複数のプロセッサに、ビデオデータの現在ピクチャの隣接しないブロックの動きベクトルを決定することと、隣接しないブロックが、現在ピクチャの現在ブロックに隣接しない、隣接しないブロックの動きベクトルに基づいて、現在ブロックのための動きベクトル予測子(MVP)を決定することと、現在ブロックのためのMVPに基づいて、現在ブロックの動きベクトルを決定することと、現在ブロックの動きベクトルに基づいて予測ブロックを決定することと、予測ブロックに基づいて、現在ピクチャのサンプル値を再構築することとを行わせる。
【0013】
[0013]別の例では、本開示は、命令を記憶するコンピュータ可読記憶媒体を説明し、前記命令は、実行されたとき、1つまたは複数のプロセッサに、ビデオデータの現在ピクチャの隣接しないブロックの動きベクトルを決定することと、隣接しないブロックが、現在ピクチャの現在ブロックに隣接しない、隣接しないブロックの動きベクトルに基づいて、現在ブロックのための動きベクトル予測子(MVP)を決定することと、現在ブロックの動きベクトルを決定することと、ここにおいて、動きベクトルが、現在ブロックのためのMVPの動きベクトルに等しいか、または、現在ブロックのためのMVPの動きベクトル+ビットストリーム中でシグナリングされた動きベクトル差分(MVD)に等しい、現在ブロックの動きベクトルに基づいて予測ブロックを決定することと、予測ブロックに基づいて、残差サンプル値を生成することとを行わせる命令を記憶するコンピュータ可読記憶媒体について説明する。
【0014】
[0014]本開示の1つまたは複数の態様の詳細が添付の図面および以下の説明に記載されている。本開示で説明される技法の他の特徴、目的、および利点は、その説明、図面、および特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【0015】
【
図1】[0015]本開示で説明される1つまたは複数の技法を使用し得る例示的なビデオ符号化および復号システムを示すブロック図。
【
図2】[0016]マージ/スキップモードのための空間および時間近隣動きベクトル候補の一例の図。
【
図3】[0017]両方向(bilateral)マッチングの一例の図。
【
図4】[0018]テンプレートマッチングの一例の図。
【
図5】[0019]フレームレートアップコンバージョン(frame-rate up conversion)における一方向(unilateral)動き推定の一例の図。
【
図6】[0020]両方向テンプレートマッチングに基づくデコーダ側動きベクトル改良(decoder-side motion vector refinement)の一例の図。
【
図7】[0021]コーディングユニットのための高度時間動きベクトル予測(advanced temporal motion vector prediction)の動き予測の一例の図。
【
図8】[0022]4つのサブブロックとそれの近隣ブロックとをもつ1つのコーディングユニットの一例の図。
【
図9】[0023]現在アフィンブロックのための例示的な簡略化されたアフィン(affine)動きモデルのブロック図。
【
図10】[0024]現在アフィンブロックのための簡略化されたアフィン動きモデルの一例の図。
【
図11】[0025]動き補償予測動きベクトルフィールド(motion vector field)の一例の図。
【
図12】[0026]記憶された動きベクトルフィールドの一例の図。
【
図13】[0027]AF_INTERについての動きベクトル予測の一例の図。
【
図14A】[0028]AF_MERGEについての候補ブロックのための選択順序を示すブロック図。
【
図14B】[0029]左下候補ブロックがアフィンモードにおいてコーディングされる場合のAF_MERGEについての候補を示すブロック図。
【
図15】[0030]本開示の技法による、例示的な隣接しないブロックを示すブロック図。
【
図16】[0031]本開示の技法による、隣接しないブロックの選択の一例を示すブロック図。
【
図17】[0032]親ブロックに基づく隣接しないブロックの選択の一例を示すブロック図。
【
図18A】[0033]本開示の技法による、隣接しないブロックの位置変更の一例を示すブロック図。
【
図18B】[0034]本開示の技法による、隣接しないブロックの位置変更の一例を示すブロック図。
【
図19A】[0035]本開示の技法による、隣接しないブロックを変更するためのしきい値の一例を示すブロック図。
【
図19B】[0036]本開示の技法による、隣接しないブロックを変更するためのしきい値の一例を示すブロック図。
【
図20】[0037]本開示の技法による、隣接しないブロックの選択の一例を示すブロック図。
【
図21】[0038]本開示の技法による、隣接しないブロックの選択の一例を示すブロック図。
【
図22】[0039]本開示の技法による、隣接しないブロックの選択の一例を示すブロック図。
【
図23】[0040]本開示の技法による、親ブロックに基づく隣接しないブロックの選択の一例を示すブロック図。
【
図24】[0041]本開示で説明される1つまたは複数の技法を実装し得る例示的なビデオエンコーダを示すブロック図。
【
図25】[0042]本開示で説明される1つまたは複数の技法を実装し得る例示的なビデオデコーダを示すブロック図。
【
図26】[0043]本開示の1つまたは複数の技法による、ビデオデータを符号化するためのビデオエンコーダの例示的な動作を示すフローチャート。
【
図27】[0044]本開示の1つまたは複数の技法による、ビデオデータを復号するためのビデオデコーダの例示的な動作を示すフローチャート。
【
図28】[0045]本開示の技法による、フレームレートアップコンバージョン(FRUC)動きベクトル候補を使用してNA-SMVPを決定するための例示的な動作を示すフローチャート。
【
図29】[0046]本開示の1つまたは複数の技法による、現在ブロックのためのMVP候補のリスト中に合成候補を含めるビデオエンコーダの例示的な動作を示すフローチャート。
【
図30】[0047]本開示の1つまたは複数の技法による、現在ブロックのためのMVP候補のリスト中に合成候補を含めるビデオデコーダの例示的な動作を示すフローチャート。
【
図31】[0048]本開示の技法による、ビデオデータを符号化するためのビデオエンコーダの例示的な動作を示すフローチャート。
【
図32】[0049]本開示の技法による、ビデオデータを復号するためのビデオデコーダの例示的な動作を示すフローチャート。
【
図33】[0050]本開示の技法による、ビデオデータを符号化するためのビデオエンコーダの例示的な動作を示すフローチャート。
【
図34】[0051]本開示の技法による、ビデオデータを復号するためのビデオデコーダの例示的な動作を示すフローチャート。
【
図35】[0052]本開示の技法による、ビデオデータを符号化するためのビデオエンコーダの例示的な動作を示すフローチャート。
【
図36】[0053]本開示の技法による、ビデオデータを復号するためのビデオデコーダの例示的な動作を示すフローチャート。
【発明を実施するための形態】
【0016】
[0054]ビデオ圧縮が改善するにつれて、動きベクトルを表すために使用される符号化データの比率が上昇した。したがって、より大きいビデオ圧縮を達成するために、動きベクトルがどのように符号化されるかを改善することが望ましいことがある。より大きいビデオ圧縮を達成することは、既存のインフラストラクチャを通してより高品質のビデオデータを送ることが可能であること、ネットワーク輻輳を低減することなど、多くの理由のために望ましい。動きベクトル予測は、ブロックのための動きベクトルを符号化するために使用されるデータの量を低減する1つの一般的なやり方である。たいていの動きベクトル予測システムでは、ビデオエンコーダが、ブロックのための動きベクトル予測子のリストを決定し、動きベクトル予測子を選択し、次いで、選択された動きベクトルのリスト中の位置をシグナリングする。ビデオデコーダが、動きベクトル予測子の同じリストを決定し、ビットストリーム中でシグナリングされたデータに基づいて、選択された動きベクトル予測子を決定する。ビデオデコーダは、次いで、ブロックの1つまたは複数の動きベクトルを決定するために動きベクトル予測子を使用し得る。
【0017】
[0055]本開示は、再構築された動きベクトル情報をより十分に使用することによって、動きベクトル予測を改善し、それにより、ビデオ圧縮効率を潜在的に改善し得る技法について説明する。たとえば、本開示は、現在ピクチャの現在ブロックに空間的に隣接し(adjacent)ない現在ピクチャの1つまたは複数のブロックからの動きベクトル予測子を使用する技法について説明する。この例では、ビデオコーダ(たとえば、ビデオエンコーダまたはビデオデコーダ)が、ビデオデータの現在ピクチャの隣接しないブロックの動きベクトルを決定し得る。隣接しないブロックは、現在ピクチャの現在ブロックに隣接しない。さらに、この例では、ビデオコーダは、隣接しないブロックの動きベクトルに基づいて、現在ブロックのための動きベクトル予測子(MVP)を決定し得る。ビデオコーダは、次いで、(たとえば、現在ブロックのためのMVPに基づいて)現在ブロックの動きベクトルを決定し得る。さらに、ビデオコーダは、現在ブロックの動きベクトルに基づいて予測ブロックを決定し得る。
【0018】
[0056]さらに、本開示は、合成動きベクトル候補を生成するための技法について説明する。本開示は、追加の時間動きベクトル予測子(temporal motion vector predictor)候補を生成するための技法についても説明する。さらに、本開示は、現在ブロックのための最確(most probable)イントラ予測モードのセット中の1つまたは複数の最確イントラ予測モードを決定するために、現在ピクチャの現在ブロックに空間的に隣接しない現在ピクチャの1つまたは複数のブロックからのイントラ予測モードを使用する技法について説明する。本開示の技法、またはそれの部分組合せは、一緒にまたは別々に使用され得る。
【0019】
[0057]
図1は、本開示の技法を利用し得る例示的なビデオ符号化および復号システム10を示すブロック図である。
図1に示されているように、システム10は、宛先デバイス14によって後で復号されるべき符号化ビデオデータを与えるソースデバイス12を含む。ソースデバイス12はビデオデータを符号化するための装置であり得、宛先デバイス14はビデオデータを復号するための装置であり得る。特に、ソースデバイス12は、コンピュータ可読媒体16を介して宛先デバイス14に符号化ビデオデータを与える。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、タブレットコンピュータ、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲のデバイスおよび装置のいずれかを備え得る。いくつかの場合には、ソースデバイス12および宛先デバイス14は、ワイヤレス通信のために装備される。したがって、ソースデバイス12および宛先デバイス14は、ワイヤレス通信デバイスであり得る。本開示で説明される技法は、ワイヤレスおよび/またはワイヤード適用例に適用され得る。ソースデバイス12は、例示的なビデオ符号化デバイス(すなわち、ビデオデータを符号化するためのデバイス)である。宛先デバイス14は、例示的なビデオ復号デバイス(すなわち、ビデオデータを復号するためのデバイス)である。
【0020】
[0058]
図1の図示されたシステム10は一例にすぎない。ビデオデータを処理するための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実施され得る。いくつかの例では、本技法は、一般に「コーデック」と呼ばれるビデオエンコーダ/デコーダによって実施され得る。ソースデバイス12と宛先デバイス14とは、ソースデバイス12が宛先デバイス14への送信のためのコード化ビデオデータを生成するような、コーディングデバイスの例である。いくつかの例では、ソースデバイス12と宛先デバイス14とは、ソースデバイス12および宛先デバイス14の各々がビデオ符号化および復号構成要素を含むように、実質的に対称的に動作する。したがって、システム10は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオテレフォニーのための、ソースデバイス12と宛先デバイス14との間の片方向または二方向ビデオ送信をサポートし得る。
【0021】
[0059]
図1の例では、ソースデバイス12は、ビデオソース18と、ビデオデータを記憶するように構成された記憶媒体19と、ビデオエンコーダ20と、出力インターフェース22とを含む。宛先デバイス14は、入力インターフェース26と、符号化ビデオデータを記憶するように構成された記憶媒体28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。他の例では、ソースデバイス12と宛先デバイス14とは、他の構成要素または構成を含む。たとえば、ソースデバイス12は、外部カメラなど、外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイス14は、一体型ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
【0022】
[0060]ビデオソース18はビデオデータのソースである。ビデオデータは一連のピクチャを備え得る。ビデオソース18は、ビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオデータを受信するためのビデオフィードインターフェースを含み得る。いくつかの例では、ビデオソース18は、コンピュータグラフィックスベースのビデオデータ、または、ライブビデオ、アーカイブされたビデオ、およびコンピュータ生成ビデオの組合せを生成する。記憶媒体19は、ビデオデータを記憶するように構成され得る。各場合において、キャプチャされたビデオ、プリキャプチャされたビデオ、またはコンピュータ生成ビデオは、ビデオエンコーダ20によって符号化され得る。
【0023】
[0061]出力インターフェース22は、コンピュータ可読媒体16に、符号化ビデオ情報を出力し得る。出力インターフェース22は、様々なタイプの構成要素またはデバイスを備え得る。たとえば、出力インターフェース22は、ワイヤレス送信機、モデム、ワイヤードネットワーキング構成要素(たとえば、イーサネット(登録商標)カード)、または別の物理的構成要素を備え得る。出力インターフェース22がワイヤレス送信機を備える例では、出力インターフェース22は、4G、4G-LTE(登録商標)、LTEアドバンスト、5Gなどのセルラー通信規格に従って変調された、符号化ビデオデータなどのデータを送信するように構成され得る。出力インターフェース22がワイヤレス送信機を備えるいくつかの例では、出力インターフェース22は、IEEE802.11仕様、IEEE802.15仕様(たとえば、ZigBee(登録商標))、Bluetooth(登録商標)規格などの他のワイヤレス規格に従って変調された、符号化ビデオデータなどのデータを送信するように構成され得る。いくつかの例では、出力インターフェース22の回路は、ビデオエンコーダ20、および/またはソースデバイス12の他の構成要素の回路に組み込まれる。たとえば、ビデオエンコーダ20および出力インターフェース22は、システムオンチップ(SoC)の一部であり得る。SoCは、汎用マイクロプロセッサ、グラフィックス処理ユニットなど、他の構成要素をも含み得る。
【0024】
[0062]宛先デバイス14は、コンピュータ可読媒体16を介して、復号されるべき符号化ビデオデータを受信し得る。コンピュータ可読媒体16は、ソースデバイス12から宛先デバイス14に符号化ビデオデータを移動させることが可能な任意のタイプの媒体またはデバイスを備え得る。いくつかの例では、コンピュータ可読媒体16は、ソースデバイス12が、符号化ビデオデータを宛先デバイス14にリアルタイムで直接送信することを可能にするための通信媒体を備える。通信媒体は、無線周波数(RF)スペクトルまたは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースのネットワークの一部を形成し得る。通信媒体は、ソースデバイス12から宛先デバイス14への通信を可能にするために有用であり得るルータ、スイッチ、基地局、または任意の他の機器を含み得る。宛先デバイス14は、符号化ビデオデータおよび復号ビデオデータを記憶するように構成された1つまたは複数のデータ記憶媒体を備え得る。
【0025】
[0063]いくつかの例では、出力インターフェース22は、符号化ビデオデータなどのデータを、ストレージデバイスなどの中間デバイスに出力し得る。同様に、宛先デバイス14の入力インターフェース26は、中間デバイスから符号化データを受信し得る。中間デバイスは、ハードドライブ、Blu-ray(登録商標)ディスク、DVD、CD-ROM、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。いくつかの例では、中間デバイスはファイルサーバに対応する。例示的なファイルサーバは、ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。
【0026】
[0064]宛先デバイス14は、インターネット接続を含む、任意の標準のデータ接続を通して符号化ビデオデータにアクセスし得る。これは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適であるワイヤレスチャネル(たとえば、Wi-Fi(登録商標)接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、またはその両方の組合せを含み得る。ストレージデバイスからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであり得る。
【0027】
[0065]コンピュータ可読媒体16は、ワイヤレスブロードキャストまたはワイヤードネットワーク送信などの一時媒体、あるいはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、Blu-rayディスク、または他のコンピュータ可読媒体などの記憶媒体(すなわち、非一時的記憶媒体)を含み得る。いくつかの例では、ネットワークサーバ(図示せず)は、たとえば、ネットワーク送信を介して、ソースデバイス12から符号化ビデオデータを受信し、その符号化ビデオデータを宛先デバイス14に与え得る。同様に、ディスクスタンピング設備など、媒体製造設備のコンピューティングデバイスは、ソースデバイス12から符号化ビデオデータを受信し、その符号化ビデオデータを含んでいるディスクを生成し得る。したがって、コンピュータ可読媒体16は、様々な例において、様々な形態の1つまたは複数のコンピュータ可読媒体を含むと理解され得る。
【0028】
[0066]宛先デバイス14の入力インターフェース26は、コンピュータ可読媒体16からデータを受信する。入力インターフェース26は、様々なタイプの構成要素またはデバイスを備え得る。たとえば、入力インターフェース26は、ワイヤレス受信機、モデム、ワイヤードネットワーキング構成要素(たとえば、イーサネットカード)、または別の物理的構成要素を備え得る。入力インターフェース26がワイヤレス受信機を備える例では、入力インターフェース26は、4G、4G-LTE、LTEアドバンスト、5Gなどのセルラー通信規格に従って変調された、ビットストリームなどのデータを受信するように構成され得る。入力インターフェース26がワイヤレス受信機を備えるいくつかの例では、入力インターフェース26は、IEEE802.11仕様、IEEE802.15仕様(たとえば、ZigBee)、Bluetooth規格などの他のワイヤレス規格に従って変調された、ビットストリームなどのデータを受信するように構成され得る。いくつかの例では、入力インターフェース26の回路は、ビデオデコーダ30、および/または宛先デバイス14の他の構成要素の回路に組み込まれ得る。たとえば、ビデオデコーダ30および入力インターフェース26は、SoCの部分であり得る。SoCは、汎用マイクロプロセッサ、グラフィックス処理ユニットなど、他の構成要素をも含み得る。
【0029】
[0067]記憶媒体28は、入力インターフェース26によって受信された符号化ビデオデータ(たとえば、ビットストリーム)など、符号化ビデオデータを記憶するように構成され得る。ディスプレイデバイス32は、ユーザに復号ビデオデータを表示する。ディスプレイデバイス32は、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
【0030】
[0068]ビデオエンコーダ20およびビデオデコーダ30は各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適な回路のいずれか、またはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアの命令を記憶し得、本開示の技法を実施するために1つまたは複数のプロセッサを使用してその命令をハードウェアで実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、ビデオコーディング規格または仕様に従ってビデオデータを符号化および復号する。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、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、あるいは別のビデオコーディング規格または仕様に従ってビデオデータを符号化および復号し得る。いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、またはITU-T H.265として知られているように高効率ビデオコーディング(HEVC)、それの範囲およびスクリーンコンテンツコーディング拡張、それの3Dビデオコーディング拡張(3D-HEVC)、それのマルチビュー拡張(MV-HEVC)、またはそれのスケーラブル拡張(SHVC)に従ってビデオデータを符号化および復号する。HEVC、SHVC、および3D-HEVCは、ITU-Tビデオコーディングエキスパートグループ(VCEG:Video Coding Experts Group)およびISO/IECモーションピクチャエキスパートグループ(MPEG:Motion Picture Experts Group)のジョイントコラボレーションチームオンビデオコーディング(JCT-VC:Joint Collaboration Team on Video Coding)ならびにジョイントコラボレーションチームオン3Dビデオコーディング拡張開発(JCT-3V:Joint Collaboration Team on 3D Video Coding Extension Development)によって開発された。
【0031】
[0069]ITU-T VCEG(Q6/16)およびISO/IEC MPEG(JTC1/SC29/WG11)は、(スクリーンコンテンツコーディングおよび高ダイナミックレンジコーディングのためのそれの現在の拡張および短期での拡張を含む)現在のHEVC規格の圧縮能力を著しく超える圧縮能力をもつ将来のビデオコーディング技術の規格化の潜在的ニーズを現在研究している。グループは、このエリアにおけるそれらの専門家によって提案された圧縮技術設計を評価するために、ジョイントビデオ探査チーム(JVET:Joint Video Exploration Team)として知られるジョイントコラボレーション作業においてこの探査活動に関して協働している。JVETは、2015年10月19日~21日の間、初めて開かれた。Chenら、「Algorithm Description of Joint Exploration Test Model 5」、ITU-T SG16 WP3とISO/IEC JTC 1/SC29/WG11とのジョイントビデオ探査チーム(JVET)、第5回会合、ジュネーブ、スイス、2017年1月12日~20日、ドキュメントJVET E-1001は、ジョイント探査テストモデル(Joint Exploration Test Model)6(JEM5)のアルゴリズム説明である。Chenら、「Algorithm Description of Joint Exploration Test Model 6」、ITU-T SG16 WP3とISO/IEC JTC 1/SC29/WG11とのジョイントビデオ探査チーム(JVET)、第6回会合、ホバート、オーストラリア、2017年3月31日~4月7日、ドキュメントJVET F-1001は、ジョイント探査テストモデル6(JEM6)のアルゴリズム説明である。ビデオエンコーダ20およびビデオデコーダ30は、ジョイント探査モデルまたは現在開発中の新しい汎用ビデオコーディング(VVC:Versatile Video Coding)規格に従って動作し得る。
【0032】
[0070]本開示は、概して、シンタックス要素など、ある情報を「シグナリング」することに言及することがある。「シグナリング」という用語は、概して、符号化ビデオデータを復号するために使用されるシンタックス要素および/または他のデータの通信を指すことがある。そのような通信は、リアルタイムまたはほぼリアルタイムに行われ得る。代替的に、そのような通信は、符号化時にビットストリーム中でコンピュータ可読記憶媒体にシンタックス要素を記憶するときに行われることがあるなど、ある時間期間にわたって行われ得、次いで、これらの要素は、この媒体に記憶された後の任意の時間に復号デバイスによって取り出され得る。
【0033】
[0071]HEVCおよび他のビデオコーディング仕様では、ビデオデータは一連のピクチャを含む。ピクチャは「フレーム」と呼ばれることもある。ピクチャは、1つまたは複数のサンプルアレイを含み得る。ピクチャの各それぞれのサンプルアレイは、それぞれの色成分についてのサンプルのアレイを備え得る。ピクチャは、SL、SCb、およびSCrと示される3つのサンプルアレイを含み得る。SLはルーマサンプルの2次元アレイ(すなわち、ブロック)である。SCbはCbクロマサンプルの2次元アレイである。SCrはCrクロマサンプルの2次元アレイである。他の事例では、ピクチャはモノクロームであり得、ルーマサンプルのアレイのみを含み得る。
【0034】
[0072]ビデオデータを符号化することの一部として、ビデオエンコーダ20はビデオデータのピクチャを符号化し得る。言い換えれば、ビデオエンコーダ20は、ビデオデータのピクチャの符号化表現を生成し得る。ピクチャの符号化表現は、本明細書では「コード化ピクチャ」または「符号化ピクチャ」と呼ばれることがある。
【0035】
[0073]ピクチャの符号化表現を生成するために、ビデオエンコーダ20はピクチャのブロックを符号化し得る。ビデオエンコーダ20は、ビットストリーム中に、ビデオブロックの符号化表現を含め得る。いくつかの例では、ピクチャのブロックを符号化するために、ビデオエンコーダ20は、1つまたは複数の予測ブロックを生成するためにイントラ予測またはインター予測を実施する。さらに、ビデオエンコーダ20は、ブロックのための残差データを生成し得る。残差ブロックは残差サンプルを備える。各残差サンプルは、生成された予測ブロックのうちの1つのサンプルとブロックの対応するサンプルとの間の差分を示し得る。このようにして、ビデオエンコーダ20は、予測ブロックに基づいて、残差サンプル値を生成し得る。ビデオエンコーダ20は、変換係数を生成するために、残差サンプルのブロックに変換を適用し得る。さらに、ビデオエンコーダ20は変換係数を量子化し得る。いくつかの例では、ビデオエンコーダ20は、変換係数を表すために、1つまたは複数のシンタックス要素を生成し得る。ビデオエンコーダ20は、変換係数を表すシンタックス要素のうちの1つまたは複数をエントロピー符号化し得る。
【0036】
[0074]より詳細には、HEVCまたは他のビデオコーディング仕様に従ってビデオデータを符号化するとき、ピクチャの符号化表現を生成するために、ビデオエンコーダ20は、ピクチャの各サンプルアレイをコーディングツリーブロック(CTB:coding tree block)に区分し、CTBを符号化し得る。CTBは、ピクチャのサンプルアレイ中のサンプルのN×Nブロックであり得る。HEVCメインプロファイルでは、技術的に、8×8CTBサイズがサポートされ得るが、CTBのサイズは16×16から64×64に及び得る。
【0037】
[0075]ピクチャのコーディングツリーユニット(CTU:coding tree unit)は、1つまたは複数のCTBを備え得、1つまたは複数のCTBのサンプルを符号化するために使用されるシンタックス構造を備え得る。たとえば、各CTUは、ルーマサンプルのCTBと、クロマサンプルの2つの対応するCTBと、CTBのサンプルを符号化するために使用されるシンタックス構造とを備え得る。モノクロームピクチャまたは3つの別々の色平面を有するピクチャでは、CTUは、単一のCTBと、そのCTBのサンプルを符号化するために使用されるシンタックス構造とを備え得る。CTUは「ツリーブロック」または「最大コーディングユニット」(LCU:largest coding unit)と呼ばれることもある。本開示では、「シンタックス構造」は、指定された順序でビットストリーム中に一緒に存在する0個またはそれ以上のシンタックス要素として定義され得る。いくつかのコーデックでは、符号化ピクチャは、そのピクチャのすべてのCTUを含んでいる符号化表現である。
【0038】
[0076]ピクチャのCTUを符号化するために、ビデオエンコーダ20は、CTUのCTBを1つまたは複数のコーディングブロックに区分し得る。コーディングブロックはサンプルのN×Nブロックである。いくつかのコーデックでは、ピクチャのCTUを符号化するために、ビデオエンコーダ20は、CTBをコーディングブロックに区分するためにCTUのコーディングツリーブロックに対して4分木区分を再帰的に実施し得、したがって「コーディングツリーユニット」という名称がある。コーディングユニット(CU)は、1つまたは複数のコーディングブロックと、1つまたは複数のコーディングブロックのサンプルを符号化するために使用されるシンタックス構造とを備え得る。たとえば、CUは、ルーマサンプルアレイとCbサンプルアレイとCrサンプルアレイとを有するピクチャのルーマサンプルのコーディングブロックと、そのピクチャのクロマサンプルの2つの対応するコーディングブロックと、それらのコーディングブロックのサンプルを符号化するために使用されるシンタックス構造とを備え得る。モノクロームピクチャまたは3つの別々の色平面を有するピクチャでは、CUは、単一のコーディングブロックと、そのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。HEVCでは、スライス中の最大コーディングユニットは、コーディングツリーブロック(CTB)またはコーディングツリーユニット(CTU)と呼ばれる。CTBは、それのノードがCUである4分木を含んでいる。(技術的に、8×8CTBサイズがサポートされ得るが)CTBのサイズは、HEVCメインプロファイルにおいて16×16から64×64に及び得る。コーディングユニット(CU)は、CTBの同じサイズであり得るが、8×8程度に小さくなり得る。各コーディングユニットは、1つのモードを用いてコーディングされる。
【0039】
[0077]さらに、ビデオエンコーダ20は、ビデオデータのピクチャのCUを符号化し得る。いくつかのコーデックでは、CUを符号化することの一部として、ビデオエンコーダ20は、CUのコーディングブロックを1つまたは複数の予測ブロックに区分し得る。予測ブロックは、同じ予測が適用されるサンプルの矩形(すなわち、正方形または非正方形)ブロックである。CUの予測ユニット(PU:prediction unit)は、CUの1つまたは複数の予測ブロックと、その1つまたは複数の予測ブロックを予測するために使用されるシンタックス構造とを備え得る。たとえば、PUは、ルーマサンプルの予測ブロックと、クロマサンプルの2つの対応する予測ブロックと、それらの予測ブロックを予測するために使用されるシンタックス構造とを備え得る。モノクロームピクチャまたは3つの別々の色平面を有するピクチャでは、PUは、単一の予測ブロックと、その予測ブロックを予測するために使用されるシンタックス構造とを備え得る。
【0040】
[0078]ビデオエンコーダ20は、CUのPUの予測ブロック(たとえば、ルーマ予測ブロック、Cb予測ブロック、およびCr予測ブロック)のための予測ブロック(たとえば、ルーマ予測ブロック、Cb予測ブロック、およびCr予測ブロック)を生成し得る。ビデオエンコーダ20は、予測ブロックを生成するためにイントラ予測またはインター予測を使用し得る。ビデオエンコーダ20が予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ20は、CUを含むピクチャの復号サンプルに基づいて予測ブロックを生成し得る。ビデオエンコーダ20が現在ピクチャのPUの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ20は、参照ピクチャ(すなわち、現在ピクチャ以外のピクチャ)の復号サンプルに基づいてPUの予測ブロックを生成し得る。HEVCでは、ビデオエンコーダ20は、インター予測されたPUのための「coding_unit」シンタックス構造内では「prediction_unit」シンタックス構造を生成するが、イントラ予測されたPUのための「coding_unit」シンタックス構造内では「prediction_unit」シンタックス構造を生成しない。むしろ(rather)、HEVCでは、イントラ予測されたPUに関係するシンタックス要素は、「coding_unit」シンタックス構造中に直接含まれる。CUがインターコーディングされるとき、CUは、2つまたは4つのPUにさらに区分され得るか、あるいは、さらなる区分が適用されないとき、ただ1つのPUになり得る。1つのCU中に2つのPUが存在するとき、それらのPUは、1/2サイズの長方形、あるいはCUの1/4または3/4サイズをもつ2つの長方形サイズであり得る。CUがインターコーディングされるとき、各PUについて動き情報の1つのセットが存在する。さらに、各PUは、動き情報のセットを導出するために固有のインター予測モードを用いてコーディングされる。本開示では、「ブロック」という用語は、CU、PU、またはビデオコーディング目的で使用される任意の他のコーディングユニットを指すことがある。
【0041】
[0079]ビデオエンコーダ20またはビデオデコーダ30など、ビデオコーダは、複数の利用可能なイントラ予測モードから選択されたイントラ予測モードを使用してイントラ予測を実施し得る。イントラ予測モードは、イントラ予測方向と呼ばれることもある、方向性イントラ予測モードを含み得る。異なる方向性イントラ予測モードは異なる角度に対応する。いくつかの例では、方向性イントラ予測モードを使用して予測ブロックの現在サンプルの値を決定するために、ビデオコーダは、方向性イントラ予測モードに対応する角度において現在サンプルを通過するラインが境界サンプルのセットと交差する点を決定し得る。境界サンプルは、予測ブロックのすぐ左の列(column)中のサンプルと、予測ブロックのすぐ上の行(row)中のサンプルとを備え得る。点が境界サンプルのうちの2つの間にある場合、ビデオコーダは、その点に対応する値を補間するか、またはさもなければその値を決定し得る。点が境界サンプルのうちの単一の境界サンプルに対応する場合、ビデオコーダは、その点の値が境界サンプルに等しいと決定し得る。ビデオコーダは、予測ブロックの現在サンプルの値を点の決定された値に等しく設定し得る。
【0042】
[0080]HEVCおよびいくつかの他のコーデックでは、ビデオエンコーダ20は、1つの予測モード(すなわち、イントラ予測またはインター予測)のみを使用してCUを符号化する。したがって、HEVCおよび特定の他のコーデックでは、ビデオエンコーダ20は、イントラ予測を使用してCUの各PUの予測ブロックを生成し得るか、または、ビデオエンコーダ20は、インター予測を使用してCUの各PUの予測ブロックを生成し得る。ビデオエンコーダ20がCUを符号化するためにインター予測を使用するとき、ビデオエンコーダ20はCUを2つまたは4つのPUに区分し得るか、または、1つのPUがCU全体に対応する。1つのCU中に2つのPUが存在するとき、2つのPUは、1/2サイズの長方形、あるいはCUの1/4または3/4サイズをもつ2つの長方形サイズであり得る。HEVCでは、インター予測モードを用いてコーディングされるCUのための8つの区分モード、すなわち、PART_2N×2N、PART_2N×N、PART_N×2N、PART_N×N、PART_2N×nU、PART_2N×nD、PART_nL×2N、およびPART_nR×2Nがある。CUがイントラ予測されるとき、2N×2NとN×Nとが唯一の許容されるPU形状であり、各PU内で単一のイントラ予測モードがコーディングされる(クロマ予測モードがCUレベルにおいてシグナリングされる)。
【0043】
[0081]ビデオエンコーダ20は、CUのための1つまたは複数の残差ブロックを生成し得る。たとえば、ビデオエンコーダ20はCUのためのルーマ残差ブロックを生成し得る。CUのルーマ残差ブロック中の各サンプルは、CUの予測ルーマブロックのうちの1つ中のルーマサンプルとCUの元のルーマコーディングブロック中の対応するサンプルとの間の差分を示す。さらに、ビデオエンコーダ20はCUのためのCb残差ブロックを生成し得る。CUのCb残差ブロック中の各サンプルは、CUの予測Cbブロックのうちの1つ中のCbサンプルと、CUの元のCbコーディングブロック中の対応するサンプルとの間の差分を示し得る。ビデオエンコーダ20は、CUのためのCr残差ブロックをも生成し得る。CUのCr残差ブロック中の各サンプルは、CUの予測Crブロックのうちの1つ中のCrサンプルとCUの元のCrコーディングブロック中の対応するサンプルとの間の差分を示し得る。
【0044】
[0082]さらに、ビデオエンコーダ20は、CUの残差ブロックを1つまたは複数の変換ブロックに分解し得る。たとえば、ビデオエンコーダ20は、CUの残差ブロックを1つまたは複数の変換ブロックに分解するために4分木区分を使用し得る。変換ブロックは、同じ変換が適用されるサンプルの矩形(たとえば、正方形または非正方形)ブロックである。CUの変換ユニット(TU:transform unit)は、1つまたは複数の変換ブロックを備え得る。たとえば、TUは、ルーマサンプルの変換ブロックと、クロマサンプルの2つの対応する変換ブロックと、変換ブロックサンプルを変換するために使用されるシンタックス構造とを備え得る。したがって、CUの各TUは、ルーマ変換ブロックとCb変換ブロックとCr変換ブロックとを有し得る。TUのルーマ変換ブロックはCUのルーマ残差ブロックのサブブロックであり得る。Cb変換ブロックはCUのCb残差ブロックのサブブロックであり得る。Cr変換ブロックはCUのCr残差ブロックのサブブロックであり得る。モノクロームピクチャまたは3つの別々の色平面を有するピクチャでは、TUは、単一の変換ブロックと、その変換ブロックのサンプルを変換するために使用されるシンタックス構造とを備え得る。
【0045】
[0083]ビデオエンコーダ20は、TUのための係数ブロックを生成するために、TUの変換ブロックに1つまたは複数の変換を適用し得る。係数ブロックは変換係数の2次元アレイであり得る。変換係数はスカラー量であり得る。いくつかの例では、1つまたは複数の変換は、変換ブロックをピクセル領域から周波数領域にコンバートする。したがって、そのような例では、変換係数は、周波数領域中にあると考えられるスカラー量であり得る。変換係数レベルは、変換係数値の算出のためのスケーリングより前の復号プロセスにおける特定の2次元周波数インデックスに関連する値を表す整数量である。
【0046】
[0084]いくつかの例では、ビデオエンコーダ20は、変換ブロックへの変換の適用をスキップする。そのような例では、ビデオエンコーダ20は、変換係数と同じやり方で残差サンプル値を扱い得る。したがって、ビデオエンコーダ20が変換の適用をスキップする例では、変換係数および係数ブロックの以下の説明は、残差サンプルの変換ブロックに適用可能であり得る。
【0047】
[0085]JEMによれば、(ビデオエンコーダ200などの)ビデオコーダは、ピクチャを複数のコーディングツリーユニット(CTU)に区分する。ビデオエンコーダ200は、4分木2分木(QTBT:quadtree-binary tree)構造などのツリー構造に従ってCTUを区分し得る。JEMのQTBT構造は、HEVCのCUとPUとTUとの間の分離など、複数の区分タイプの概念を除去する。したがって、JEMのコンテキストでは、「PU」または「TU」という用語はCUに適用され得る。JEMのQTBT構造は、2つのレベル、すなわち、4分木区分に従って区分される第1のレベルと2分木区分に従って区分される第2のレベルとを含む。QTBT構造のルートノードはCTUに対応する。2分木のリーフノードはコーディングユニット(CU)に対応する。
【0048】
[0086]いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、ルミナンス成分およびクロミナンス成分の各々を表すために単一のQTBT構造を使用し得、他の例では、ビデオエンコーダ200およびビデオデコーダ300は、ルミナンス成分のための1つのQTBT構造および両方のクロミナンス成分のための別のQTBT構造(またはそれぞれのクロミナンス成分のための2つのQTBT構造)など、2つまたはそれ以上のQTBT構造を使用し得る。
【0049】
[0087]係数ブロックを生成した後に、ビデオエンコーダ20は、係数ブロックを表すために使用されるデータの量を場合によっては低減するために係数ブロックを量子化し、さらなる圧縮を潜在的に与え得る。量子化は、概して、値の範囲が単一の値に圧縮されるプロセスを指す。たとえば、量子化は、値を定数で除算し、次いで最も近い整数に丸める(round)ことによって行われ得る。係数ブロックを量子化するために、ビデオエンコーダ20は、係数ブロックの変換係数を量子化し得る。量子化は、一部または全部の変換係数に関連するビット深度を低減し得る。たとえば、量子化中にnビットの変換係数がmビットの変換係数に切り捨てられる(rounded down)ことがあり、ここで、nはmよりも大きい。いくつかの例では、ビデオエンコーダ20は量子化をスキップする。
【0050】
[0088]ビデオエンコーダ20は、一部または全部の潜在的に量子化された変換係数を示すシンタックス要素を生成し得る。ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素のうちの1つまたは複数をエントロピー符号化し得る。たとえば、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング(CABAC:Context-Adaptive Binary Arithmetic Coding)を実施し得る。したがって、符号化ブロック(たとえば、符号化CU)が、量子化された変換係数を示すエントロピー符号化シンタックス要素を含み得る。
【0051】
[0089]ビデオエンコーダ20は、符号化ビデオデータを含むビットストリームを出力し得る。言い換えれば、ビデオエンコーダ20は、ビデオデータの符号化表現を含むビットストリームを出力し得る。ビデオデータの符号化表現は、ビデオデータのピクチャの符号化表現を含み得る。たとえば、ビットストリームは、ビデオデータおよび関連データの符号化ピクチャの表現を形成するビットのシーケンスを備え得る。いくつかの例では、符号化ピクチャの表現は、ピクチャのブロックの符号化表現を含み得る。
【0052】
[0090]ビデオデコーダ30は、ビデオエンコーダ20によって生成されたビットストリームを受信し得る。上述のように、ビットストリームは、ビデオデータの符号化表現を備え得る。ビデオデコーダ30は、ビデオデータのピクチャを再構築するためにビットストリームを復号し得る。ビットストリームを復号することの一部として、ビデオデコーダ30は、ビットストリームからシンタックス要素を取得し得る。ビデオデコーダ30は、ビットストリームから取得されたシンタックス要素に少なくとも部分的に基づいてビデオデータのピクチャを再構築し得る。ビデオデータのピクチャを再構築するためのプロセスは、概して、ピクチャを符号化するためにビデオエンコーダ20によって実施されるプロセスの逆であり得る。
【0053】
[0091]たとえば、ビデオデータのピクチャを復号することの一部として、ビデオデコーダ30は、予測ブロックを生成するためにインター予測またはイントラ予測を使用し得る。さらに、ビデオデコーダ30は、ビットストリームから取得されたシンタックス要素に基づいて変換係数を決定し得る。いくつかの例では、ビデオデコーダ30は、決定された変換係数を逆量子化する。逆量子化は、量子化された値を再構築された値にマッピングする。たとえば、ビデオデコーダ30は、量子化ステップサイズを乗算された値を決定することによって、値を逆量子化し得る。さらに、ビデオデコーダ30は、残差サンプルの値を決定するために、決定された変換係数に対して逆変換を適用し得る。ビデオデコーダ30は、残差サンプルと、生成された予測ブロックの対応するサンプルとに基づいて、ピクチャのブロックを再構築し得る。たとえば、ビデオデコーダ30は、ブロックの再構築されたサンプルを決定するために、残差サンプルを、生成された予測ブロックの対応するサンプルに加算し得る。
【0054】
[0092]より詳細には、HEVCおよび他のビデオコーディング仕様では、ビデオデコーダ30は、現在CUの各PUのための1つまたは複数の予測ブロックを生成するためにインター予測またはイントラ予測を使用し得る。さらに、ビデオデコーダ30は、現在CUのTUの係数ブロックを逆量子化し得る。ビデオデコーダ30は、現在CUのTUの変換ブロックを再構築するために、係数ブロックに対して逆変換を実施し得る。ビデオデコーダ30は、現在CUのPUの予測ブロックのサンプルと、現在CUのTUの変換ブロックの残差サンプルとに基づいて、現在CUのコーディングブロックを再構築し得る。いくつかの例では、ビデオデコーダ30は、現在CUのPUのための予測ブロックのサンプルを現在CUのTUの変換ブロックの対応する復号サンプルに加算することによって、現在CUのコーディングブロックを再構築し得る。ピクチャの各CUのためのコーディングブロックを再構築することによって、ビデオデコーダ30はピクチャを再構築し得る。
【0055】
[0093]ピクチャのスライスは、ピクチャの整数個のブロックを含み得る。たとえば、HEVCおよび他のビデオコーディング仕様では、ピクチャのスライスは、ピクチャの整数個のCTUを含み得る。スライスのCTUは、ラスタ走査順序などの走査順序で連続的に順序付けられ得る。HEVCおよび潜在的に他のコーデックでは、スライスは、1つの独立スライスセグメントと、同じアクセスユニット内の(もしあれば)次の独立スライスセグメントに先行する(もしあれば)すべての後続の依存スライスセグメントとの中に含まれている、整数個のCTUとして定義される。さらに、HEVCおよび潜在的に他のコーデックでは、スライスセグメントは、タイル走査において連続的に順序付けられ、単一のNALユニット中に含まれている、整数個のCTUとして定義される。タイル走査は、CTBがタイル中のCTBラスタ走査において連続的に順序付けられるが、ピクチャ中のタイルがピクチャのタイルのラスタ走査において連続的に順序付けられる、ピクチャを区分するCTBの特定の連続順序付けである。タイルは、ピクチャ中の特定のタイル列および特定のタイル行内のCTBの矩形領域である。
【0056】
[0094]上述のように、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、現在ピクチャのビデオブロックのための予測ブロックを生成するためにインター予測を適用し得る。たとえば、HEVCおよび他のビデオコーディング仕様のコンテキストでは、ビデオコーダは、現在ブロックのCUのPUの予測ブロックのための予測ブロックを生成するために、インター予測を適用し得る。ビデオコーダが予測ブロックを生成するためにインター予測を適用する場合、ビデオコーダは、1つまたは複数の参照ピクチャの復号サンプルに基づいて予測ブロックを生成し得る。参照ピクチャは、現在ピクチャ以外のピクチャである。ビデオコーダは、1つまたは複数の参照ピクチャリストを決定し得る。参照ピクチャリストの各々は、0個またはそれ以上の参照ピクチャを含み得る。HEVCおよび他のビデオコーディング仕様のコンテキストでは、参照ピクチャリストのうちの1つは、参照ピクチャリスト0(すなわち、RefPicList0またはlist0)と呼ばれることがあり、別の参照ピクチャリストは、参照ピクチャリスト1(すなわち、RefPicList1またはlist1)と呼ばれることがある。
【0057】
[0095]ビデオコーダは、予測ブロックを生成するために単方向(uni-directional)インター予測または双方向(bi-directional)インター予測を適用し得る。ビデオコーダがビデオブロックのための予測ブロックを生成するために単方向インター予測を適用するとき、ビデオコーダは、単一の参照ピクチャのサンプルに基づいてビデオブロックのための単一の参照ブロックを決定する。さらに、ビデオコーダが単方向インター予測を適用するとき、ビデオコーダは、予測ブロックを参照ブロックに等しく設定し得る。ビデオコーダがビデオブロックのための予測ブロックを生成するために双方向インター予測を適用するとき、ビデオコーダは、ビデオブロックのための2つの参照ブロックを決定する。いくつかの例では、2つの参照ブロックは、異なる参照ピクチャリスト中の参照ピクチャ中にある。さらに、ビデオコーダが双方向インター予測を適用するとき、ビデオコーダは、2つの参照ブロックに基づいて予測ブロックを決定し得る。たとえば、ビデオコーダは、予測ブロックの各サンプルが2つの参照ブロックの対応するサンプルの重み付き平均になるように、予測ブロックを決定し得る。参照ピクチャリストのうちのどれが、参照ブロックを決定するために使用される参照ピクチャを含むかを示すために、参照リストインジケータが使用され得る。
【0058】
[0096]上述のように、ビデオコーダは、参照ピクチャのサンプルに基づいて参照ブロックを決定し得る。いくつかの例では、ビデオコーダは、参照ブロックの各サンプルが参照ピクチャのサンプルに等しくなるように、参照ブロックを決定し得る。いくつかの例では、参照ブロックを決定することの一部として、ビデオコーダは、参照ピクチャのサンプルから参照ブロックのサンプルを補間し得る。たとえば、ビデオコーダは、予測ブロックのサンプルが参照ピクチャの2つまたはそれ以上のサンプルの重み付き平均であると決定し得る。
【0059】
[0097]いくつかの例では、ビデオエンコーダ20が単方向インター予測を実施するとき、ビデオエンコーダ20は、参照ピクチャリストのうちの1つ中の1つまたは複数の参照ピクチャ内で参照ブロックを探索する。参照ブロックは、予測ブロックと同様である、サンプルのブロックであり得る。いくつかの例では、ビデオエンコーダ20は、参照ブロックと予測ブロックとの間の類似度を決定するために平均2乗誤差を使用するさらに、ビデオエンコーダ20は、予測ブロックのための動き情報を決定し得る。予測ブロックのための動き情報(すなわち、動きパラメータ)は、動きベクトルと参照インデックスとを含み得る。動きベクトルは、現在ピクチャ(すなわち、特定のビデオブロックを含むピクチャ)内の特定のビデオブロックの位置と参照ピクチャ内の参照ブロックの位置との間の空間変位を示し得る。参照インデックスは、参照ピクチャリストを含んでいる参照フレームの参照ピクチャリスト内の位置を示す。特定のビデオブロックのための予測ブロックは、参照ブロックに等しくなり得る。
【0060】
[0098]ビデオエンコーダ20が特定のビデオブロックについて双方向インター予測を実施するとき、ビデオエンコーダ20は、第1の参照ピクチャリスト(「リスト0」)中の参照ピクチャ内で第1の参照ブロックを探索し得、第2の参照ピクチャリスト(「リスト1」)中の参照ピクチャ内で第2の参照ブロックを探索し得る。ビデオエンコーダ20は、第1および第2の参照ブロックに少なくとも部分的に基づいて、特定のビデオブロックのための予測ブロックを生成し得る。さらに、ビデオエンコーダ20は、特定のビデオブロックと第1の参照ブロックとの間の空間変位を示す第1の動きベクトルを生成し得る。ビデオエンコーダ20は、第1の参照ブロックを含んでいる参照ピクチャの第1の参照ピクチャリスト内のロケーションを識別する第1の参照インデックスをも生成し得る。さらに、ビデオエンコーダ20は、特定のビデオブロックと第2の参照ブロックとの間の空間変位を示す第2の動きベクトルを生成し得る。ビデオエンコーダ20は、第2の参照ブロックを含む参照ピクチャの第2の参照ピクチャリスト内のロケーションを識別する第2の参照インデックスをも生成し得る。
【0061】
[0099]ビデオエンコーダ20が特定のビデオブロックに対して単方向インター予測を実施するとき、ビデオデコーダ30は、特定のビデオブロックの参照ブロックを識別するために特定のビデオブロックの動き情報を使用し得る。ビデオデコーダ30は、次いで、参照ブロックに基づいて特定のビデオブロックの予測ブロックを生成し得る。ビデオエンコーダ20が特定のビデオブロックのための予測ブロックを決定するために双方向インター予測を実施するとき、ビデオデコーダ30は、2つの参照ブロックを決定するために特定のビデオブロックの動き情報を使用し得る。ビデオデコーダ30は、特定のビデオブロックの2つの参照サンプルに基づいて特定のビデオブロックの予測ブロックを生成し得る。このようにして、単方向インター予測または双方向インター予測のいずれかについて、ビデオエンコーダ20およびビデオデコーダ30は、ブロックの動きベクトルに基づいて予測ブロックを決定し得る。
【0062】
[0100]ビデオエンコーダ20は、様々なやり方でビデオユニットの動き情報をシグナリングし得る。そのような動き情報は、動きベクトル、参照インデックス、参照ピクチャリストインジケータ、および/または動きに関係する他のデータを含み得る。いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、動き情報をシグナリングするために使用されるデータの量を低減するために動き予測を使用し得る。動き予測は、1つまたは複数の他のビデオユニットの動き情報に基づく、ビデオユニット(たとえば、PU)の動き情報の決定を備え得る。様々なタイプの動き予測がある。たとえば、マージモードと高度動きベクトル予測(AMVP:advanced motion vector prediction)モードとが、動き予測の2つのタイプである。すなわち、HEVC規格では、予測ユニット(PU)のために、それぞれ、マージモード(スキップはマージの特殊な場合と見なされる)および高度動きベクトル予測(AMVP)モードと称される2つのインター予測モードがある。AMVPモードまたはマージモードのいずれかでは、動きベクトル(MV)候補リストは、複数の動きベクトル予測子のために維持される。J.-L.Lin、Y.-W.Chen、Y.-W.Huang、およびS.-M.Lei、「Motion vector coding in the HEVC standard」、Selected Topics in Signal Processing、IEEE Journal、vol.7、no.6、957~968ページ、2013年を参照されたい。
【0063】
[0101]マージモードでは、ビデオエンコーダ20は候補リストを生成する。候補リストは、1つまたは複数のソースビデオユニットの動き情報を示す候補のセットを含む。ソースビデオユニットは、現在ビデオユニットに、空間的にまたは時間的に近隣し得る。さらに、マージモードでは、ビデオエンコーダ20は、候補リストから候補を選択し得、現在ビデオユニットの動き情報として、選択されたマージ候補によって示される動き情報を使用し得る。ビデオエンコーダ20は、選択された候補の候補リスト中の位置をシグナリングし得る。ビデオデコーダ30は、ビットストリームから取得された情報に基づいて、候補リストへのインデックスを決定し得る。さらに、ビデオデコーダ30は、同じ候補リストを生成し得、インデックスに基づいて、選択された候補を決定し得る。ビデオデコーダ30は、次いで、現在ビデオユニットのための予測ブロックを生成するために、選択された候補の動き情報を使用し得る。
【0064】
[0102]スキップモードはマージモードと同様である。スキップモードでは、ビデオエンコーダ20およびビデオデコーダ30は、マージモードにおいてビデオエンコーダ20およびビデオデコーダ30が候補リストを使用するのと同じやり方で候補リストを生成し、使用する。ただし、ビデオエンコーダ20がスキップモードを使用して現在ビデオユニットの動き情報をシグナリングするとき、ビデオエンコーダ20は、現在ビデオユニットのための残差データをシグナリングしない。したがって、ビデオデコーダ30は、残差データの使用なしに、候補リスト中の選択された候補の動き情報によって示される1つまたは複数の参照ブロックに基づいて、ビデオユニットのための予測ブロックを決定し得る。
【0065】
[0103]スキップモードおよびマージモードでは、マージング候補リスト中のどの候補が使用されるかを示すために、マージインデックスがシグナリングされる。インター予測インジケータ、参照インデックス、または動きベクトル差分は送信されない。マージモードでは、空間動きベクトル予測子(SMVP:spatial motion vector predictor)と時間動きベクトル予測子(TMVP:temporal motion vector predictor)とを含む、マージング候補の2つまたはそれ以上のタイプが考慮される。SMVP導出では、
図2に示されている位置にある候補の中から最大4つのマージ候補が選択される。導出の順序は、A
1→B
1→B
0→A
0→(B
2)である。HEVCでは、位置B
2は、位置A
1、B
1、B
0、A
0のPUが利用可能でないかまたはイントラコーディングされるとき、あるいは、位置A
1、B
1、B
0、A
0からの、プルーニングの後の候補の総数が4よりも小さいときのみ、考慮される。
【0066】
[0104]TMVPの導出では、シグナリングされた参照ピクチャリスト内の現在ピクチャの参照ピクチャのうちの1つに属するコロケートPUに基づいて、スケーリングされた動きベクトルが導出される。コロケートPUの導出のために使用される参照ピクチャリストは、現在ピクチャのスライスのスライスヘッダ中で明示的にシグナリングされ得る。時間マージ候補のためのスケーリングされた動きベクトルは、POC距離、tbおよびtdを使用して、コロケートPUのスケーリングされた動きベクトルを用いて取得され得、ここで、tbは現在ピクチャの参照ピクチャと現在ピクチャとの間のPOC差分であるように定義され、tdはコロケートピクチャの参照ピクチャとコロケートピクチャとの間のPOC差分であるように定義される。時間マージ候補の参照ピクチャインデックスは、0に等しく設定される。スケーリングプロセスの実際の実現は、https://www.itu.int/rec/T-REC-H.265から入手可能であるHEVCドラフト仕様において説明される。Bスライスについて、一方が参照ピクチャリスト0のための動きベクトルであり、他方が参照ピクチャリスト1のための動きベクトルである、2つの動きベクトルが取得され、双予測マージ候補を作るために組み合わせられる。
【0067】
[0105]コロケートPUの位置は、
図2に示されているように、2つの候補位置、CおよびHの間で選択される。位置HにおけるPUが利用可能でないか、イントラコーディングされるか、または現在CTU行(すなわち、現在PUを含んでいるCTU行)の外部にある場合、位置Cが使用される。他の場合、時間マージ候補の導出のために位置Hが使用される。
【0068】
[0106]SMVPおよびTMVPに加えて、2つのタイプの合成マージ候補、すなわち、(1)組合せ双予測MVPおよび(2)0MVPがあり得る。組合せ双予測MVPは、SMVPおよびTMVPを利用することによって生成される。HEVCでは、組合せ双予測マージ候補は、Bスライスのみについて使用される。たとえば、mvL0およびrefIdxL0またはmvL1およびrefIdxL1を有する、元のマージ候補リスト中の2つの候補が、組合せ双予測マージ候補を作成するために使用される。0MVPは、0の大きさをもつ1つまたは複数の動きベクトルを有する。
【0069】
[0107]候補選択のプロセスにおいて、処理順序の前の候補と同じ動きパラメータを有する複製された候補は、候補リストから削除され得る。このプロセスは、プルーニングプロセスとして定義される。また、並列マージ処理を助けるために、同じマージ推定領域(MER:merge estimation region)内の候補は考慮されない。仮想2N×2N区分をエミュレートしないために、冗長な区分形状が回避される。
【0070】
[0108]マージ候補リスト中でマージ候補を生成する各ステップの間で、導出プロセスは、マージ候補の数がMaxNumMergeCandに達した場合に停止され得る。HEVCおよび潜在的に他のコーデックでは、MaxNumMergeCandは5に等しく設定される。候補の数は一定であるので、最良のマージ候補のインデックスは、短縮単項(truncated unary)2値化を使用して符号化され得る。
【0071】
[0109]AMVPモードは、ビデオエンコーダ20が候補リストを生成し得、候補リストから候補を選択し得るという点で、マージモードと同様である。しかしながら、現在ブロック(すなわち、ビデオユニット)のための予測ブロックを決定する際に使用される各それぞれの参照ブロックについて、ビデオエンコーダ20は、現在ブロックのためのそれぞれの動きベクトル差分(MVD)と、現在ブロックのためのそれぞれの参照インデックスと、候補リスト中の選択された候補を示すそれぞれの候補インデックスとをシグナリングし得る。ブロックのためのMVDは、ブロックの動きベクトルと選択された候補の動きベクトルとの間の差分を示し得る。現在ブロックのための参照インデックスは、参照ブロックが決定される参照ピクチャを示す。
【0072】
[0110]さらに、AMVPモードが使用されるとき、現在ブロックのための予測ブロックを決定する際に使用される各それぞれの参照ブロックについて、ビデオデコーダ30は、現在ブロックのためのMVDと、現在ブロックのための参照インデックスと、候補インデックスと、動きベクトル予測(MVP)フラグとを決定し得る。ビデオデコーダ30は、同じ候補リストを生成し得、候補インデックスに基づいて、候補リスト中の選択された候補を決定し得る。前述のように、このリストは、同じ参照インデックス、ならびに、時間参照ピクチャ中のコロケートブロックの近隣ブロックの動きパラメータに基づいて導出された時間動きベクトル予測子に関連する近隣ブロックの動きベクトルを含み得る。ビデオデコーダ30は、MVDを、選択されたAMVP候補によって示される動きベクトルに加算することによって、現在PUの動きベクトルを復元し得る。すなわち、ビデオデコーダ30は、選択されたAMVP候補によって示される動きベクトルとMVDとに基づいて、現在PUの動きベクトルを決定し得る。ビデオデコーダ30は、次いで、現在PUのための予測ブロックを生成するために、復元された動きベクトル、または現在PUの動きベクトルを使用し得る。
【0073】
[0111]ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)が現在PUのためのAMVP候補リストを生成するとき、ビデオコーダは、現在PUに空間的に近隣するロケーションをカバーするPU(すなわち、空間的に近隣するPU)の動き情報に基づいて1つまたは複数のAMVP候補を導出し、現在PUに時間的に近隣するPUの動き情報に基づいて1つまたは複数のAMVP候補を導出し得る。本開示では、PU(あるいは他のタイプのビデオユニットまたはブロック)は、PUの予測ブロック(またはビデオユニットの他のタイプのサンプルブロック)がロケーションを含む場合、ロケーションを「カバーする」と言われ得る。候補リストは、同じ参照インデックス、ならびに、時間参照ピクチャ中のコロケートブロックの近隣ブロックの動きパラメータ(すなわち、動き情報)に基づいて導出された時間動きベクトル予測子に関連する近隣ブロックの動きベクトルを含み得る。現在PUに時間的に近隣するPU(すなわち、現在PUとは異なる時間インスタンス中にあるPU)の動き情報に基づくマージ候補リストまたはAMVP候補リスト中の候補は、TMVPと呼ばれることがある。TMVPは、HEVCのコーディング効率を改善するために使用され、他のコーディングツールとは異なり得、TMVPは、復号ピクチャバッファ中の、より詳細には、参照ピクチャリスト中のフレームの動きベクトルにアクセスする必要があり得る。
【0074】
[0112]AMVPモードでは、リスト0予測、リスト1予測、または双予測を示すために、インター予測インジケータが送信される。次に、複数の参照ピクチャがあるとき、1つまたは2つの参照インデックスが送信される。候補リストから1つの動き候補を選択するために、各予測方向についてインデックスが送信される。
図2に示されているように、インターモードのための候補リストは、2つの空間動き候補と1つの時間動き候補とを含む。
【0075】
1.左候補(A0、A1から最初に利用可能なもの)
2.上候補(B0、B1、B2から最初に利用可能なもの)
3.時間候補(HおよびCから最初に利用可能なもの)
[0113]HEVCでは、ビデオコーダは、左下から左に左空間動き候補を探索し(すなわち、A0およびA1)、ビデオコーダは、左候補として最初に利用可能な候補を選択する。ビデオコーダは、右上から左上に上空間動き候補を探索し(すなわち、B0、B1およびB2)、ビデオコーダは、上候補として最初に利用可能な候補を選択する。ビデオコーダは、時間コロケートピクチャと呼ばれる、参照ピクチャ中に位置するブロック(HまたはC)から時間動き候補を選択し得る。時間コロケートピクチャは、どの参照ピクチャリストかを指定するためにスライスヘッダ中で1つのフラグを送信し、参照リスト中のどの参照ピクチャがコロケート参照ピクチャとして使用されるかを示すためにスライスヘッダ中で1つの参照インデックスを送信することによって、示される。HEVCでは、インデックスが送信された後に、1つまたは2つの対応する動きベクトル差分(MVD)が送信される。
【0076】
[0114]さらに、HEVCおよび潜在的に他のコーデックでは、候補リスト構築とインデックスのパースとを分離するために、固定候補リストサイズが使用される。固定リストサイズによって引き起こされるコーディング性能損失を補償するために、追加の候補が候補リスト中の空の位置に割り当てられる。このプロセスでは、インデックスは最大長の短縮単項コードでコーディングされ、ここで、最大長は、スキップモードおよびマージモードではスライスヘッダ中で送信され、インターモードでは2に固定される。上記で説明されたように、スキップモードおよびマージモードでは、4つの空間動き候補および1つの時間動き候補の導出およびプルーニングの後に、利用可能な候補の数が固定候補リストサイズよりも小さい場合、追加の合成候補が導出され、マージング候補リスト中の空の位置を埋めるために追加される。AMVPモードでは、2つの空間動き候補および1つの時間動き候補の導出およびプルーニングの後にAMVP候補リスト中の空の位置を埋めるために、ゼロベクトル動き候補が追加される。
【0077】
[0115]JEM参照ソフトウェアでは、デコーダ側で現在ブロックのための動きベクトル(MV)を導出および/または改良するか、あるいはアフィン動きモデルを利用するいくつかのインターコーディングツールがある。これらの新しいインター予測手法は、以下で詳述される。
【0078】
[0116]パターンマッチングされた動きベクトル導出(PMMVD:pattern matched motion vector derivation)モードは、フレームレートアップコンバージョン(FRUC)技法に基づく特殊なマージモードである。PMMVDモードでは、ブロックの動き情報は、シグナリングされないが、代わりに、デコーダ側で導出される。FRUCフラグは、ブロック(たとえば、CU)について、それのマージフラグが真であるとき、シグナリングされる。FRUCフラグが偽であるとき、マージインデックスがシグナリングされ、通常のマージモードが使用される。FRUCフラグが真であるとき、ブロックのための動き情報を導出するためにどちらの方法(両方向マッチングまたはテンプレートマッチング)が使用されるべきであるかを示すために、追加のFRUCモードフラグがシグナリングされる。
【0079】
[0117]エンコーダ側では、CUのためにFRUCマージモードを使用すべきかどうかに関する決定は、通常マージ候補のために行われるようにレート/ひずみ(RD)コスト選択に基づき得る。すなわち、2つのマッチングモード(両方向マッチングおよびテンプレートマッチング)は両方とも、RDコスト選択を使用することによってCUについて検査され得る。さらに、最小コストにつながるモードが、他のCUモードと比較される。FRUCマッチングモードが最も効率的なモードである場合、FRUCフラグはCUについて真に設定され、関係するマッチングモードが使用される。
【0080】
[0118]FRUCマージモードにおける動き導出プロセスは、2つのステップを含む。CUレベル動き探索が最初に実施され得、その後に、サブCUレベル動き改良が続く。CUレベルにおいて、初期動きベクトル(すなわち、開始MV)が、両方向マッチングまたはテンプレートマッチングに基づいて全CUについて導出される。最初に、MV候補のリストが生成され(FRUC MV候補)、最小マッチングコストにつながる候補が、さらなるCUレベル改良のための開始点として選択される。次いで、開始点の周りの両方向マッチングまたはテンプレートマッチングに基づくローカル探索が実施され、最小マッチングコストを生じるMVが、全CUのためのMVとしてとられる。その後、動き情報は、開始点としての導出されたCU動きベクトルを用いてサブCUレベルにおいてさらに改良される。
【0081】
[0119]たとえば、以下の導出プロセスは、W×H CU動き情報導出のために実施され得、ここで、Wは幅であり、Hは高さである。第1の段において、全W×H CUのためのMVが導出される。第2の段において、CUは、さらに、M×MサブCUにスプリットされる。Mの値は、以下で、式(1)の場合のように計算され、Dは、JEMにおいてデフォルトで3に設定された、あらかじめ定義されたスプリッティング深度(splitting depth)である。次いで、各サブCUのためのMVが導出される。
【0082】
【0083】
[0120]
図3に示されているように、両方向マッチングは、2つの異なる参照ピクチャ中の現在CUの動き軌道に沿った2つのブロック間の最良のマッチを見つけることによって、現在CUの動き情報を導出するために使用される。連続的動き軌道の仮定の下では、2つの参照ブロックを指す動きベクトルMV0およびMV1は、現在ピクチャと2つの参照ピクチャとの間の時間距離、すなわち、TD0およびTD1に比例する。特殊な場合として、現在ピクチャが時間的に2つの参照ピクチャ間にあり、現在ピクチャから2つの参照ピクチャまでの時間距離が同じであるとき、両方向マッチングはミラーベースの双方向MVになる。
【0084】
[0121]
図4に示されているように、テンプレートマッチングは、現在ピクチャ中のテンプレート(現在CUの上および/または左近隣ブロック)と参照ピクチャ中のブロック(テンプレートと同じサイズ)との間の最良のマッチを見つけることによって、現在CUの動き情報を導出するために使用される。上述のFRUCマージモードを除いて、テンプレートマッチングは、AMVPモードにも適用される。JEMでは、HEVCの場合のように、AMVPは2つの候補を有する。テンプレートマッチング方法では、新しい候補が導出される。テンプレートマッチングによる新たに導出された候補が第1の既存のAMVP候補とは異なる場合、新たに導出された候補はAMVP候補リストのまさに始まりにおいて挿入され、次いで、リストサイズは2に設定される(第2の既存のAMVP候補を削除するを意味する)。AMVPモードに適用されるとき、CUレベル探索のみが適用される。
【0085】
[0122]CUレベルFRUC MV候補セット中で、CUレベルにおけるMV候補セットは、以下を備えるか、または以下からなる。
【0086】
(i)現在CUがAMVPモードにある場合、元のAMVP候補
(ii)すべてのマージ候補、
(iii)本開示の他の場所で紹介される、補間MVフィールド(interpolated MV field)中のいくつかのMV
(iv)上および左近隣動きベクトル
[0123]両方向マッチングを使用するとき、マージ候補の各有効なMVが、両方向マッチングの仮定を用いてMVペアを生成するために、入力として使用される。たとえば、マージ候補の1つの有効なMVは、参照リストAにおける(MVa,refa)である。次いで、それのペアにされた両方向MVの参照ピクチャrefbが、refaとrefbとが時間的に現在ピクチャの異なる側にあるように、他の参照リストB中で見つけられる。そのようなrefbが参照リストB中で利用可能でない場合、refbは、refaとは異なる参照として決定され、現在ピクチャまでのそれの時間距離は、リストB中の最小時間距離である。refbが決定された後に、MVbは、現在ピクチャとrefa、refbとの間の時間距離に基づいてMVaをスケーリングすることによって導出される。
【0087】
[0124]また、補間MVフィールドからの4つのMVが、CUレベル候補リストに追加され得る。より詳細には、現在CUの位置(0,0)、(W/2,0)、(0,H/2)および(W/2,H/2)における補間MVが追加され得る。FRUCがAMVPモードにおいて適用されるとき、元のAMVP候補もCUレベルMV候補セットに追加され得る。CUレベルにおいて、AMVP CUについての最高15個のMVとマージCUについての最高13個のMVとが候補リストに追加される。本開示では、AMVP CUは、AMVPモードを使用して動き情報が予測されるCUである。さらに、本開示では、マージCUは、マージモードを使用して動き情報が予測されるCUである。
【0088】
[0125]いくつかの例では、サブCUレベルにおけるMV候補セットは、以下からなるか、または以下を備える。
【0089】
(i)CUレベル探索から決定されたMV、
(ii)上、左、左上および右上近隣MV、
(iii)参照ピクチャからのコロケートMVのスケーリングされたバージョン、
(iv)最高4つの高度時間動きベクトル予測(ATMVP:advanced temporal motion vector prediction)候補、
(v)最高4つの時空間動きベクトル予測(STMVP:spatial-temporal motion vector prediction)候補。
【0090】
[0126]参照ピクチャからのスケーリングされたMVは、以下のように導出され得る。両方のリスト中のすべての参照ピクチャが横断される。参照ピクチャ中のサブCUのコロケート位置におけるMVは、開始CUレベルMVの参照にスケーリングされる。すなわち、HEVCにおけるTMVPのように、コロケート位置におけるMVは、POC距離に従ってスケーリングされ得る。ATMVP候補およびSTMVP候補は、最高4つのATMV候補およびSTMVP候補に限定される。サブCUレベルにおいて、最高17個のMVが候補リストに追加される。
【0091】
[0127]上述のように、CUレベルFRUC MV候補セット中で、CUレベルにおけるMV候補セットは、補間MVフィールド中の1つまたは複数のMVを含み得る。フレームをコーディングする前に、補間動きフィールド(すなわち、補間MVフィールド)は、一方向動き推定に基づいて全ピクチャのために生成される。動きフィールドは、次いで、CUレベルMV候補またはサブCUレベルMV候補として後で使用され得る。最初に、両方の参照リスト中の各参照ピクチャの動きフィールドは、4×4ブロックレベルにおいて横断され得る。
図5は、フレームレートアップコンバージョンにおける一方向動き推定の一例である。
図5中のピクチャ500は、現在ピクチャのための参照ピクチャである。現在ピクチャは、ピクチャ502の出力時間に対応する出力時間を有する。ピクチャ504は、ピクチャ500のための参照ピクチャである。ビデオコーダは、現在ピクチャのサンプルを補間するために、ピクチャ504中のロケーションを指すピクチャ500中のブロックの動きベクトルを使用する。ピクチャ502は、得られた補間サンプルを含んでいる。いくつかの例では、
図5のピクチャ500中の各4×4ブロックについて、4×4ブロックに関連する動きが現在ピクチャ中の4×4ブロックを通過すること、4×4ブロックが補間動きを割り当てられなかった場合、参照ブロックの動きは、時間距離TD0およびTD1に従って(HEVCにおけるTMVPのMVスケーリングのやり方と同じやり方)現在ピクチャにスケーリングされ、スケーリングされた動きは、現在フレーム中のブロックに割り当てられる。スケーリングされたMVが現在フレーム中の4×4ブロックに割り当てられない場合、現在フレーム中のブロックの動きは、補間動きフィールド中で利用不可能としてマークされる。他の例では、他のブロックサイズが使用され得る。
【0092】
[0128]動きベクトルが分数サンプル位置を指すとき、動き補償補間が必要とされ得る。動き補償補間は、ピクチャの実際のサンプルからピクチャの実際のサンプル間のロケーションについてのサンプル値を補間し得る。動き補償補間の複雑さを低く保つために、通常の8タップHEVC補間の代わりに双線形補間が、両方向マッチングとテンプレートマッチングの両方のために使用され得る。マッチングコストの計算は異なるステップにおいて異なる。たとえば、CUレベルにおいて候補セットから最良の候補を選択するとき、マッチングコストは、両方向マッチングまたはテンプレートマッチングの絶対和差分(SAD)である。開始MVが決定された後に、マッチングコストCが、以下で、式(2)を使用して計算され得る。
【0093】
【0094】
式(2)では、wは、経験的に4に設定される重み付け係数であり、MVおよびMVSは、それぞれ、現在MVおよび開始MVを示し(MVxおよびMVx
sは、それぞれ、現在MVおよび開始MVの水平成分であり、MVyおよびMVy
sは、それぞれ、現在MVおよび開始MVの垂直成分である)、||は絶対値を示す。
【0095】
[0129]いくつかの例では、FRUCモードでは、MVは、ルーマサンプルのみを使用することによって導出される。そのような例では、導出された動きは、動き補償インター予測のためにルーマとクロマの両方について使用され得る。MVが導出された後に、ルーマについて8タップ補間フィルタを使用し、クロマについて4タップ補間フィルタを使用して、最終動き補償が実施される。
【0096】
[0130]MV改良は、両方向マッチングコストまたはテンプレートマッチングコストの基準をもつパターンベースのMV探索を含み得る。JEMでは、2つの探索パターン、すなわち、それぞれ、CUレベルおよびサブCUレベルにおけるMV改良についての、(1)無制約中心バイアスダイヤモンド探索(UCBDS:unrestricted center-biased diamond search)、および(2)適応型相互探索(adaptive cross search)がサポートされる。CUレベルとサブCUレベルの両方のMV改良について、MVは、1/4ルーマサンプルMV確度において直接探索され得、これの後に、次いで、1/8ルーマサンプルMV改良が続き得る。CUとサブCUの両方のステップについてのMV改良の探索範囲は、8つのルーマサンプルに等しく設定され得る。
【0097】
[0131]ビデオコーダは、以下のように、テンプレートマッチングFRUCマージモードにおいて予測方向を選択し得る。両方向マッチングマージモードでは、2つの異なる参照ピクチャ中の現在CUの動き軌道に沿った2つのブロック間の最良のマッチに基づいて、CUの動き情報が導出されるので、双予測が常に適用される。JEMでは、テンプレートマッチングマージモードについてのそのような限定はない。テンプレートマッチングマージモードでは、ビデオコーダは、list0からの単予測、list1からの単予測、またはCUのための双予測の中から選択し得る。選択は、以下のように、テンプレートマッチングコストに基づき得る。
【0098】
【0099】
上記の、シーケンス1の擬似コードでは、cost0はlist0テンプレートマッチングのSADであり、cost1はlist1テンプレートマッチングのSADであり、costBiは双予測テンプレートマッチングのSADである。ファクタの値は5/4に等しく、これは、選択プロセスが双予測にバイアスされることを意味する。JEMでは、インター予測方向選択は、CUレベルテンプレートマッチングプロセスのみに適用される。
【0100】
[0132]双予測テンプレートマッチング動作では、1つのブロック領域の予測の場合、それぞれ、list0のMVおよびlist1のMVを使用して形成された、2つの予測ブロックが、単一の予測信号を形成するために組み合わせられる。デコーダ側動きベクトル改良(DMVR:decoder-side motion vector refinement)方法では、双予測の2つの動きベクトルは、両方向テンプレートマッチングプロセス(bilateral template matching process)によってさらに改良される。両方向テンプレートマッチングは、追加の動き情報の送信なしに、改良されたMVを取得するために、両方向テンプレートと参照ピクチャ中の再構築サンプルとの間でひずみベースの探索を実施するためにビデオデコーダ30において適用され得る。
【0101】
[0133]DMVRでは、両方向テンプレートは、
図6に示されているように、それぞれ、list0の初期MV0およびlist1のMV1から、2つの予測ブロックの重み付き組合せ(すなわち平均)として生成される。テンプレートマッチング動作は、生成された両方向テンプレートと参照ピクチャ中の(初期予測ブロックの周りの)サンプル領域との間でコスト測度を計算することを含むか、またはそれからなり得る。2つの参照ピクチャの各々について、最小テンプレートコストを生じるMVが、元のMVに取って代わるためのそのリストの更新されたMVと見なされ得る。テンプレートコストは、現在テンプレートと参照サンプルとの間の絶対差分和(SAD:sum of absolute difference)または2乗差分和(SSD:sum of squared difference)として計算され得る。JEMでは、9つのMV候補が各リストについて探索される。9つのMV候補は、元のMVと、水平方向または垂直方向のいずれか、あるいはその両方における元のMVに対する1つのルーマサンプルオフセットをもつ8つの周囲MVとを含む。最終的に、2つの新しいMV、すなわち、
図6に示されているMV0’およびMV1’が、最終双予測結果を生成するために使用される。SADは、コスト測度として利用され得る。
図6は、両方向テンプレートマッチングに基づく提案されたDMVRである。
【0102】
[0134]したがって、
図6の例では、現在ピクチャ602中の現在ブロック600は、第1の動きベクトル604(MV0)と第2の動きベクトル606(MV1)とを有する。動きベクトル604は、list0参照ピクチャ610中の参照ブロック608を指す。動きベクトル606は、list1参照ピクチャ614中の参照ブロック612を指す。参照ブロック608と参照ブロック612とは、本明細書では予測ブロックと呼ばれることもある。参照ブロック608と参照ブロック612とを識別した後に、ビデオコーダが、参照ブロック608および参照ブロック612の重み付き平均として予測ブロック616を生成し得る。予測ブロック616は、本明細書では両方向テンプレートと呼ばれることもある。したがって、
図6の例では、ビデオコーダは、MV0およびMV1によって参照される予測ブロックから両方向テンプレートを生成し得る。さらに、ビデオコーダは、予測ブロック616に最も良くマッチするブロックについて参照ピクチャ610中で探索し得る。
図6の例では、ビデオコーダは、予測ブロック616のための最良のマッチとして、参照ピクチャ610のブロック618を識別した。ビデオコーダは、予測ブロック616に最も良くマッチするブロックについて参照ピクチャ614中でも探索し得る。
図6の例では、ビデオコーダは、予測ブロック616のための最良のマッチとして、ブロック620を識別した。動きベクトル622(MV0’)が、現在ブロック600とブロック618との間の空間変位を示す。動きベクトル624(MV1’)が、現在ブロック600とブロック620との間の空間変位を示す。
【0103】
[0135]DMVRは、追加のシンタックス要素の送信なしに、過去における参照ピクチャからのあるMVと将来における参照ピクチャからの別のMVとを用いる双予測のマージモードのために適用され得る。JEM5では、局所照明補償(LIC:local illumination compensation)、アフィン動き、FRUC、またはサブCUマージ候補がCUのために有効化されるとき、DMVRは適用されない。
【0104】
[0136]QTBTを用いるJEMでは、各CUは、各予測方向について、動きの多くとも1つのセットを有することができる。2つのサブCUレベル動きベクトル予測方法は、大きいCUをサブCUにスプリットし、大きいCUのすべてのサブCUのための動き情報を導出することによって与えられる。高度時間動きベクトル予測(ATMVP)方法は、各CUが、コロケート参照ピクチャ中の現在CUよりも小さい複数のブロックから動き情報の複数のセットをフェッチすることを可能にする。時空間動きベクトル予測(STMVP)方法では、サブCUの動きベクトルは、時間動きベクトル予測子と空間近隣動きベクトルとを使用することによって再帰的に導出される。サブCU動き予測のためのより正確な動きフィールドを保つために、参照フレームのための動き圧縮は、現在、JEMにおいてディセーブルされる。
【0105】
[0137]高度時間動きベクトル予測(ATMVP)方法では、動きベクトルの時間動きベクトル予測(TMVP)は、各CUが、現在CUよりも小さい複数のブロックから(動きベクトルと参照インデックスとを含む)動き情報の複数のセットをフェッチすることを可能にすることによって改善される。
図7に示されているように、サブCUは、正方形N×Nブロックである(Nはデフォルトで4に設定される)。
【0106】
[0138]ATMVPは、2つのステップにおいてCU内のサブCUの動きベクトルを予測する。第1のステップは、いわゆる時間ベクトルを用いて参照ピクチャ中の対応するブロックを識別することである。参照ピクチャは、動きソースピクチャと呼ばれる。第2のステップは、
図7に示されているように、現在CUをサブCUにスプリットし、各サブCUに対応するブロックから各サブCUの動きベクトルならびに参照インデックスを取得することである。
【0107】
[0139]
図7は、現在ピクチャ702中の現在CU700のためのATMVP動き予測を示す。第1のステップにおいて、参照ピクチャ704と、対応するブロック706とが、現在CU700の空間近隣ブロックの動き情報によって決定される。参照ピクチャ704は、ビデオコーダが動きソースピクチャ704を現在ピクチャ702中の現在CU700のための動き情報のソースとして使用するので、動きソースピクチャ704と呼ばれることもある。近隣ブロックの反復的な走査プロセスを回避するために、現在CU700のマージ候補リスト中の第1のマージ候補の動き情報が、参照ピクチャ704と、対応するブロック706とを決定するために使用される。第1の利用可能な動きベクトルならびにそれの関連する参照インデックスは、時間ベクトル708と動きソースピクチャ704へのインデックスとであるように設定される。このようにして、ATMVPでは、対応するブロック706は、TMVPと比較して、より正確に識別され得、ここにおいて、(コロケートブロックと呼ばれることがある)対応するブロックは、常に、現在CU700に対して右下または中心位置にある。
【0108】
[0140]第2のステップにおいて、現在CU700のサブCUの対応するブロックは、時間ベクトル708を現在CU700の(x,y)座標に加算することによって、動きソースピクチャ704中で時間ベクトル708によって識別される。現在CU700の各サブCUについて、それの対応するブロックの動き情報(中心ピクセルをカバーする最小動きグリッド)は、サブCUのための動き情報を導出するために使用される。対応するN×Nブロックの動き情報が識別された後に、対応するN×Nブロックの動き情報は、TMVPと同じやり方で、現在サブCUの動きベクトルおよび参照インデックスにコンバートされ、ここにおいて、動きスケーリングと他のプロシージャとが適用される。たとえば、ビデオデコーダ30は、低遅延条件が満たされるかどうかを検査し得、場合によっては、各サブCUについて動きベクトルMVyを予測するために動きベクトルMVx(参照ピクチャリストXに対応する動きベクトル)を使用する(Xは0または1に等しく、Yは1-Xに等しい)。これは、時間動きベクトル予測の場合と同じやり方で行われる。
【0109】
[0141]時空間動きベクトル予測では、サブCUの動きベクトルは、ラスタ走査順序に従って、再帰的に導出される。
図8は、この概念を示す。たとえば、
図8に示されているように、4つの4×4サブCU A、B、C、およびDを含んでいる(より太い輪郭をもつ正方形として
図8に示されている)8×8CUを考慮する。現在フレーム中の近隣N×Nブロックは、
図8においてa、b、c、およびdとしてラベリングされる。
【0110】
[0142]サブCU Aのための動き導出は、それの2つの空間ネイバーを識別することによって開始する。第1のネイバーは、サブCU Aの上のN×Nブロック(ブロックc)である。ブロックcが利用可能でないかまたはイントラコーディングされる場合、サブCU Aの上の他のN×Nブロックが検査される(左から右に、ブロックcにおいて開始する)。第2のネイバーは、サブCU Aの左のブロック(ブロックb)である。ブロックbが利用可能でないかまたはイントラコーディングされる場合、サブCU Aの左の他のブロックが検査される(上から下に、ブロックbを見つめる)。各リストについての近隣ブロックから取得された動き情報は、所与のリストについての第1の参照フレームにスケーリングされる。次に、サブブロックAの時間動きベクトル予測子(TMVP)が、HEVCにおいて指定され、本開示において上記で説明されたように、TMVP導出の同じプロシージャに従うことによって導出される。ロケーションDにおけるコロケートブロックの動き情報は、フェッチされ、それに応じてスケーリングされる。最後に、動き情報を取り出し、スケーリングした後に、すべての利用可能な動きベクトル(最高3つ)が、各参照リストについて別々に平均化される。平均化された動きベクトルは、現在サブCUの動きベクトルとして割り当てられる。
【0111】
[0143]サブCU動き予測モードシグナリングでは、サブCUモードが追加のマージ候補として有効化され、それらのモードをシグナリングするために必要とされる追加のシンタックス要素はない。ATMVPモードとSTMVPモードとを表すために、2つの追加のマージ候補が各CUのマージ候補リストに追加される。ATMVPとSTMVPとが有効化されることをシーケンスパラメータセットが示す場合、最高7つのマージ候補が使用される。符号化において、追加のマージ候補の論理は、HEVCテストモデル(HM)におけるマージ候補と同じであり、これは、PまたはBスライス中の各CUについて、2つの追加のマージ候補のために2つそれ以上のRD検査が必要とされることを意味する。マージインデックスコーディングを改善するために、JEMでは、マージインデックスのすべてのビンがCABACによってコンテキストコーディングされる。HEVCの間、第1のビンのみがコンテキストコーディングされ、残りのビンはコンテキストバイパスコーディングされる。
【0112】
[0144]ビンに対してバイパスCABACコーディングを実施することは、ビンに対して通常のCABACコーディングを実施することよりも、計算コストが高くないことがある。さらに、バイパスCABACコーディングを実施することは、より高度の並列化およびスループットを可能にし得る。バイパスCABACコーディングを使用して符号化されたビンは、「バイパスビン」と呼ばれることがある。一緒にバイパスビンをグループ化することは、ビデオエンコーダ20およびビデオデコーダ30のスループットを増加させ得る。バイパスCABACコーディングエンジンは、単一のサイクルにおいていくつかのビンをコーディングすることが可能であり得るが、通常のCABACコーディングエンジンは、サイクルにおいて単一のビンのみをコーディングすることが可能であり得る。バイパスCABACコーディングエンジンがコンテキストを選択せず、両方のシンボル(0および1)について1/2の確率を仮定し得るので、バイパスCABACコーディングエンジンは、より単純であり得る。したがって、バイパスCABACコーディングでは、間隔は、直接半分にスプリットされる。しかしながら、圧縮効率は低下され得る。
【0113】
[0145]HEVCでは、変換動きモデルのみが、動き補償予測(MCP)のために適用される。実世界では、多くの種類の動き、たとえばズームイン/アウト、回転、遠近法の動きおよび他の不規則な動きがある。JEMでは、アフィン変換動き補償予測が、コーディング効率を改善するために適用される。ブロックがアフィン動きモデルに従う場合、そのブロック中の位置(x,y)のMVは、アフィン動きモデルによって決定され得る。
【0114】
【0115】
式(3)では、a、b、c、d、eおよびfはアフィンパラメータである。さらに、式(3)では、vxは位置(x,y)のMVの水平成分であり、vyは位置(x,y)のMVの垂直成分である。
【0116】
[0146]
図9は、現在アフィンブロック900のための簡略化されたアフィン動きモデルのブロック図である。
図9に示されているように、6パラメータアフィン動きモデルは、左上制御点902(x
0,y
0)の動きベクトルv
0と、右上制御点904(x
1,y
1)の動きベクトルv
1と、左下制御点906(x
2,y
2)の動きベクトルv
2とによって表され得る。左上制御点902が座標系の原点であり、これが(x
0,y
0)=(0,0)を意味すると仮定して、現在アフィンブロック900中の位置(x,y)のMVは、以下で、式(4)によって表される。
【0117】
【0118】
式(4)では、(v0x,v0y)は左上隅制御点902の動きベクトルであり、(v1x,v1y)は右上隅制御点904の動きベクトルであり、(v2x,v2y)は左下隅制御点906の動きベクトルであり、w=(x1-x0)は左上制御点902と右上制御点904との間の水平距離であり、h=(y2-y0)は左上制御点902と左下制御点906との間の垂直距離である。式(4)では、vxは位置(x,y)のMVの水平成分であり、vyは位置(x,y)のMVの垂直成分である。
【0119】
[0147]しかしながら、JEMでは、アフィン動きモデルは、式(3)においてa=eおよびb=-dを仮定することによって、4パラメータアフィン動きモデルに簡略化され、これが、以下で、式(5)に示されているような、vxおよびvyの式を生じる。
【0120】
【0121】
4パラメータアフィン動きモデルは、次いで、起点として仮定される左上制御点902(x
0,y
0)の動きベクトルv
0と、右上制御点904(x
1,y
1)の動きベクトルv
1とによって表される。式(5)では、v
xは位置(x,y)のMVの水平成分であり、v
yは位置(x,y)のMVの垂直成分である。
図10は、現在アフィンブロック1000のための簡略化されたアフィン動きモデルの一例である。
図10に示されているように、ブロックのアフィン動きフィールドは、2つの制御点動きベクトル(control point motion vector)、v
0およびv
1によって表される。ブロックの動きベクトルフィールド(MVF:motion vector field)は、式(6)によって表される。
【0122】
【0123】
式(6)では、(v0x,v0y)は左上隅制御点1002の動きベクトルであり、(v1x,v1y)は右上隅制御点1004の動きベクトルであり、w=(x1-x0)は左上制御点1002と右上制御点1004との間の水平距離である。vxは位置(x,y)のMVの水平成分であり、vyは位置(x,y)のMVの垂直成分である。
【0124】
[0148]動き補償予測をさらに簡略化するために、ブロックベースのアフィン変換予測が適用され得る。各サブブロックの動きベクトルを導出するために、
図11に示されている、各サブブロックの中心サンプルの動きベクトルは、式(6)に従って計算され、1/16の分数確度に丸められる。次いで、ビデオコーダが、導出された動きベクトルを用いて各サブブロックの予測を生成するために動き補償補間フィルタを適用し得る。アフィンブロック内の各サブブロックのための補間動きベクトルは、以下のコンテキストにおいてMCP動きベクトルフィールド(MVF)と称される。サブブロックサイズは、制御点間のMV差分に応じて変動することができる。
図11は、各サブブロック(たとえば、4×4ブロック)のMVが制御点のMVによって補間される、例示的なMCP MVフィールドであり、MVは、次いで、各サブブロックについて動き補償予測(MCP)を実施するために使用される。各サブブロックの動きベクトルは、その組合せが予測ブロックを形成する、対応する参照ブロックを識別するために使用され得る。したがって、このようにして、ビデオコーダは、ブロックの動きベクトル(たとえば、ブロックの制御点の動きベクトル)に基づいて予測ブロックを生成し得る。
【0125】
[0149]動き補償予測の後に、各サブブロックの高確度動きベクトルは、通常動きベクトルと同じ確度のように丸められ、保存される。JEMでは、およびHEVCでは、各インター予測CUまたはPUのための動きベクトルは、他のインターブロックのMV予測のために記憶される。動きベクトルのための記憶ユニットは、4×4ブロックである。言い換えれば、JEMでは、アフィンブロックの補間MVが生成され、各4×4ブロックについて記憶される。しかしながら、制御点のMVは後続のブロックのために使用され得るので、隅4×4ブロックのための記憶されたMVは、
図12に示されているように、MCPのために使用される関連するMVではなく制御点のMVである。JEM6では、同じく、左下および右下制御点のMVが左上および右上制御点のMVによって生成されることに留意されたい。
【0126】
[0150]したがって、
図12では、CU1200は16個のサブブロックを含む。CU1200の隅にない12個のサブブロックの各それぞれのサブブロックについて、ビデオコーダは、それぞれのサブブロックの中心点について(1つまたは複数の)動きベクトルを記憶する。CU1200の隅における各それぞれのサブブロックについて、ビデオコーダは、それぞれのサブブロックの外側の隅について(1つまたは複数の)動きベクトルを記憶する。
【0127】
[0151]JEMでは、2つのアフィン動きモード、すなわち、アフィンインター(AF_INTER)モードおよびアフィンマージ(AF_MERGE)モードがある。8よりも大きい幅と高さの両方をもつCUの場合、AF_INTERモードが適用され得る。CUレベルにおけるアフィンフラグは、AF_INTERモードが使用されるかどうかを示すためにビットストリーム中でシグナリングされる。このモードでは、動きベクトルセット{(MVP
0,MVP
1)|MVP
0={v
A,v
B,v
c},MVP
1={v
D,v
E}}をもつ候補リストが、ネイバーブロックを使用して構築される。
図13に示されているように、MVP
0は、ブロックA、BまたはCの動きベクトルから選択される。
図13は、AF_INTERについてのMVPの一例を示す。ネイバーブロックからの動きベクトルは、参照リストと、ネイバーブロックのための参照のピクチャ順序カウント(POC:Picture Order Count)、現在CUのための参照のPOC、および現在CUのPOCの間の関係とに従ってスケーリングされる。ネイバーブロックDおよびEからMVP
1を選択するための手法は、同様である。JEMでは、候補リスト中の候補の数が2よりも小さい場合、リストは、AMVP候補{AMVP
0,AMVP
0}および{AMVP
1,AMVP
1}の各々を複製することによって作成された動きベクトルペアによってパディングされる。
【0128】
[0152]さらに、JEMでは、候補リスト中の候補の数が2よりも大きいとき、候補は、最初に、近隣動きベクトルの一貫性(ペア候補における2つの動きベクトルの類似度)に従ってソートされ、
図13の右部に示されているように、最初の2つの候補のみが保持される。ビデオコーダは、レートひずみ(RD)コスト検査を使用し得、どの動きベクトルセット候補が現在CUの制御点動きベクトル予測(CPMVP:control point motion vector prediction)として選択されるかを決定するために使用される。候補リスト中のCPMVPの位置を示すインデックスが、ビットストリーム中でシグナリングされる。現在アフィンCUのCPMVPが決定された後に、アフィン動き推定が適用され、制御点動きベクトル(CPMV:control point motion vector)が見つけられる。次いで、CPMVとCPMVPとの差分がビットストリーム中でシグナリングされ得る。
【0129】
[0153]CUがアフィンマージ(AF_MERGE)モードにおいて適用されるとき、CUは、訪問順序、A1→B1→B0→A0→B2に基づいて、有効なネイバーの再構築されたブロックから、アフィンモードを用いてコーディングされた第1のブロックを得る。候補ブロックのための選択順序は、
図14Aに示されているように、左、上、右上、左下から、左上への順序である。ネイバー左下ブロックAが、
図14Bに示されているようにアフィンモードにおいてコーディングされる場合、ブロックAを含んでいるCUの左上隅、右上隅および左下隅の動きベクトルv
2、v
3およびv
4が導出される。現在CU上の左上隅の動きベクトルv
0は、(x
2,y
2)が、(x
2,y
2)=(0,0)を意味する起点であると仮定することによって、以下で、式(7)を使用して、v
2、v
3およびv
4に従って外挿される。第2に、現在CUの右上の動きベクトルv
1が同様のやり方で計算される。式(7)は、以下で示される。
【0130】
【0131】
式(7)では、(v2x,v2y)は左上隅制御点(x2,y2)の動きベクトルであり、(v3x,v3y)は右上隅制御点(x3,y3)の動きベクトルであり、(v4x,v4y)はネイバーアフィンブロック中の左下隅制御点(x4,y4)の動きベクトルであり、w=(x3-x2)は左上制御点と右上制御点との間の水平距離であり、h=(y4-y2)は左上制御点と左下制御点との間の垂直距離であり、vxはロケーション(x,y)のための動きベクトルの水平成分であり、vyはロケーション(x,y)のための動きベクトルの垂直成分である。
【0132】
[0154]現在CUのCPMV、v0およびv1が導出された後に、アフィン動きモデル式(6)に従って、現在CUのMVFが生成される。現在CUがAF_MERGEモードを用いてコーディングされるかどうかを識別するために、アフィンモードにおいてコーディングされた少なくとも1つのネイバーブロックがあるとき、アフィンフラグがビットストリーム中でシグナリングされる。
【0133】
[0155]HEVCでは、(PUの動きベクトルと予測された動きベクトルとの間の)動きベクトル差分(MVD)は、1/4ルーマサンプルの単位でシグナリングされる。JEMでは、高度動きベクトル解像度(AMVR:Advanced Motion Vector Resolution)が導入される。JEM5では、MVDが、1/4ルーマサンプル、整数ルーマサンプルまたは4ルーマサンプルの単位でコーディングされ得る。JEM5では、MVD解像度がCUレベルにおいて制御され、MVD解像度フラグが、少なくとも1つの非0MVD成分を有する各CUについて条件付きでシグナリングされる。
【0134】
[0156]少なくとも1つの非0MVD成分を有するCUについて、1/4ルーマサンプルMV精度がCUにおいて使用されるかどうかを示すために、第1のフラグがシグナリングされる。(1に等しい)第1のフラグが、1/4ルーマサンプルMV精度が使用されないことを示すとき、整数ルーマサンプルMV精度が使用されるのか4ルーマサンプルMV精度が使用されるのかを示すために、別のフラグがシグナリングされる。
【0135】
[0157]CUの第1のMVD解像度フラグが0であるか、またはCUのためにコーディングされない(CU中のすべてのMVDが0であることを意味する)とき、そのCUのために、1/4ルーマサンプルMV解像度が使用される。CUが整数ルーマサンプルMV精度または4ルーマサンプルMV精度を使用するとき、CUのためのAMVP候補リスト中のMVPは、対応する精度に丸められる。
【0136】
[0158]エンコーダ側で、ビデオエンコーダ20は、どのMVD解像度がCUのために使用されるかを決定するために、CUレベルRD検査を使用し得る。すなわち、CUレベルRD検査は、各MVD解像度について、それぞれ、3回実施され得る。エンコーダ速度を加速するために、以下の符号化方式がJEMにおいて適用される。
【0137】
・ 通常1/4ルーマサンプルMVD解像度を用いるCUのRD検査中に、現在CUの動き情報(整数ルーマサンプル確度(accuracy))が記憶される。(丸めの後の)記憶された動き情報は、時間がかかる動き推定プロセスが3回複製されないように、整数ルーマサンプルおよび4ルーマサンプルMVD解像度を用いる同じCUのためのRD検査中に、さらに小さい範囲の動きベクトル改良のための開始点として使用される。
【0138】
・ 4ルーマサンプルMVD解像度を用いるCUのRD検査は、条件付きで呼び出される。CUについて、整数ルーマサンプルMVD解像度のためのRDコストが、1/4ルーマサンプルMVD解像度のRDコストよりもはるかに大きい(たとえば、整数ルーマサンプルMVD解像度のためのRDコストと、1/4ルーマサンプルMVD解像度のためのRDコストとの比がしきい値よりも大きい)とき、そのCUについての4ルーマサンプルMVD解像度のRD検査はスキップされる。
【0139】
[0159]再構築された動きベクトル情報は、HEVC/H.265、AVC/H.264、およびJEMなど、既存のビデオコーデックにおける動きベクトル予測の既存の方式において十分に利用されない。
【0140】
[0160]本開示は、動きベクトル予測(MVP)を実施するコンピューティングデバイスを改善し得る技法について説明する。技法は、以下で説明されるいくつかの異なる態様において詳述される。以下の技法が個々に適用され得る。代替的に、技法の任意の組合せが適用され得る。
【0141】
[0161]本開示の1つまたは複数の技法によれば、ビデオコーダは、特に空間動きベクトル間の相関が、現在ブロックの動き情報が、隣接しないブロックの動き情報と同様になるほど十分に強いとき、隣接しないブロックの動きベクトルが予測効率をさらに改善することができるので、現在ブロックに直接隣接しないブロックの動きベクトルを使用し得る。したがって、隣接しないブロックからの動き情報は、現在ブロックのための良好なMVP候補であり得る。本開示では、1つまたは複数の隣接しない空間動きベクトル予測子(NA-SMVP:non-adjacent spatial motion vector predictor)が、現在ブロックの動き情報のための動きベクトル予測子を導出するために使用されること、または、NA-SMVPが、インター予測を実施するために現在ブロックによって直接再使用され得ることが提案される。本開示は、MV予測のために他のMV予測子(たとえば、通常のSMVP、TMVP、合成MVP)とともにNA-SMVPを適応的に組み込むための技法について説明する。
【0142】
[0162]したがって、本開示の技法によれば、ビデオエンコーダ20が、ビデオデータの現在ピクチャの隣接しないブロックの動きベクトルを決定し得る。隣接しないブロックは、現在ピクチャの現在ブロックに隣接しない。さらに、ビデオエンコーダ20は、隣接しないブロックの動きベクトルに基づいて、現在ブロックのためのMVPを決定し得る。ビデオエンコーダ20は、現在ブロックの動きベクトルをも決定し得る。動きベクトルは、現在ブロックのためのMVPの動きベクトルに等しくなり得るか、または、現在ブロックのためのMVPの動きベクトル+ビットストリーム中でシグナリングされた動きベクトル差分(MVD)に等しくなり得る。さらに、ビデオエンコーダ20は、現在ブロックの動きベクトルに基づいて予測ブロックを決定し得る。ビデオエンコーダ20は、予測ブロックに基づいて、残差サンプル値を生成し得る。
【0143】
[0163]同様に、ビデオデコーダ30が、ビデオデータの現在ピクチャの隣接しないブロックの動きベクトルを決定し得る。隣接しないブロックは、現在ピクチャの現在ブロックに隣接しない。さらに、ビデオデコーダ30は、隣接しないブロックの動きベクトルに基づいて、現在ブロックのためのMVPを決定し得る。さらに、ビデオデコーダ30は、現在ブロックのためのMVPに基づいて、現在ブロックの動きベクトルを決定し得る。ビデオデコーダ30は、現在ブロックの動きベクトルに基づいて予測ブロックをも決定し得る。ビデオデコーダ30は、次いで、予測ブロックに基づいて、現在ピクチャのサンプル値を再構築し得る。
【0144】
[0164]いくつかの例では、隣接しない空間動きベクトル予測子(NA-SMVP)は、現在ブロックがその中に位置する同じピクチャ、スライス、またはあらかじめ定義された領域内に位置する空間的に隣接しないブロックの動き情報から導出される。隣接しないブロックの動き情報は現在ブロックのための動きベクトル予測子として再使用され得るので、動き情報が再構築された隣接しないブロックのみが、隣接しないMVP導出のために考慮される。本開示は、NAブロックと現在ブロックとの間の距離が範囲内にあるように制約するために、NAブロックに制約をさらに追加することを提案する。距離は、L1またはL2の観点でピクセル距離において測定され得るか、または、距離は、L1またはL2の観点でブロック距離において測定され得る。固定直交座標系をもつn次元実ベクトル空間中の2つの座標点間のL1距離は、座標軸上への点間のラインセグメントの投影(projection)の長さの和である。L1ピクセル距離の場合、投影の長さは、1つのピクセルの高さまたは幅である。L1ブロック距離の場合、投影の長さは、ブロックの幅または高さである。L2距離は、2つの点間のユークリッド距離である。距離は、ブロック中心、または各ブロック内の任意の指定された点間で測定され得る。いくつかの例では、NAブロックを、現在ブロックに隣接せず、現在ブロックに直接隣接するブロックに隣接しないブロックであるように制約する別の制約が、NAブロックに追加される。
【0145】
[0165]
図15は、本開示の技法による、例示的な隣接しないブロックを示すブロック図である。
図15に示されているように、隣接しないブロック1500は、現在ブロック1502に直接隣接しない再構築されたブロックである。隣接しないブロックのサイズは、動き情報を記憶するために使用される最小ユニットブロック(たとえば4×4ブロック)、またはインター予測のための基本ユニット(たとえば、HEVCではPU)、またはJEMにおけるアフィンモード、FRUCモードにおいて使用されるサブブロック、あるいは他の指定されたブロックサイズとして定義され得る。
図15は、隣接する、再構築されていないブロック1504、および、隣接しない、再構築されていないブロック1506をも示す。
【0146】
[0166]
図16は、本開示の技法による、隣接しないブロックの選択の一例を示すブロック図である。
図17は、本開示の技法による、親ブロックに基づく隣接しないブロックの選択の一例を示すブロック図である。潜在的にすべての隣接しないブロックがMVP導出のために使用され得るが、MVP導出のために限られた数の隣接しないブロック(NAブロック)のみを選択することが(実装複雑さの点で)より望ましいことがある。動きベクトル予測子(MVP)導出のためにN個の(ここでNは非負整数である)隣接しないブロックを選択するためのいくつかのやり方が、以下で詳述される。たとえば、MVP導出のためにN個の隣接しないブロックを選択することの一例では、隣接しないブロックの固定パターンが、NA-SMVP導出のために選択される。固定パターンは、現在ブロックの位置に対して配置される。
図16に示されている一例では、現在ブロック1600についてHEVCにおいて使用される通常のSMVPを導出するために使用される隣接するブロック(たとえばA
0、A
1、B
0、B
1およびB
2)のほかに、現在ブロック1600を囲む11個のNAブロック(NA
1,1、NA
1,2、NA
1,3、NA
1,4、NA
1,5、NA
1,6、NA
1,7、NA
1,8、NA
1,9、NA
1,10、NA
1,11)の固定パターンが、NA-SMVPを導出するために使用される。水平距離s
1と垂直距離t
1とが、このパターンの2つの記述子である。
【0147】
[0167]
図17に示されている別の例では。
図17の例では、HEVCにおいて使用される通常のSMVPを導出するために使用される隣接するブロックのほかに、ビデオコーダは、現在ブロック1702を含んでいる親ブロック1700の隣接するブロックをMVP導出のためにNAブロックとして使用する。
図17では、親ブロック1700の隣接するブロック(NA
1,1、NA
1,2、NA
1,3、NA
1,4、NA
1,5、NA
1,6、NA
1,7、NA
1,8、NA
1,9)が、現在ブロック1702を含む親ブロック1700内のブロックについての隣接しないブロックとして選択される。親ブロック1700のサイズは、事前決定されるか、ビットストリーム中でシグナリングされるか、現在ブロック1702のサイズに依存するか、または現在ブロック1702のコード化モード(たとえば、スキップ/マージ/AMVP)に依存し得る。本開示のNA-SMVPは、限定はしないが、隣接しない空間ブロックの開示されるパターンから導出され得る。
【0148】
[0168]マルチレベル周囲NAブロックの例が、以下のように与えられる。各レベルについて、NAブロックの数が異なり得ることに留意されたい。
【0149】
[0169]パターンA1:マルチレベル周囲NAブロック。各レベル(レベルi)は、距離パラメータ(s
iおよびt
i)によって表される。
図20、
図21および
図22は、2レベル周囲NAブロックの例を示すが、レベルの数は任意の非負整数であり得る。
図20、
図21、および
図22の例では、黒い正方形が第1のレベルにおけるNAブロックに対応し、グレーの正方形が第2のレベルにおけるNAブロックに対応する。t
1が、現在ブロック2000、2100、または2200から第1のレベルまでの垂直距離を示す。t
2が、現在ブロック2000、2100、または2200から第2のレベルまでの垂直距離を示す。s
1が、現在ブロック2000、2100、または2200から第1のレベルまでの水平距離を示す。s
2が、現在ブロック2000、2100、または2200から第2のレベルまでの水平距離を示す。
【0150】
[0170]パターンA2:親ブロックに基づくマルチレベル周囲NAブロック。各レベル(レベルi)は、距離パラメータ(s
iおよびt
i)によって表される。親ブロックのサイズは、事前決定されるか、またはビットストリーム中でシグナリングされ得る。
図23は、2レベル周囲NAブロックの例を示すが、レベルの数は任意の非負整数であり得る。
【0151】
[0171]さらに、いくつかの例では、現在ブロックと隣接しないブロックとの間の距離が、L1ノルム(すなわち、L1距離)またはL2ノルム(すなわち、ユークリッド距離)によって定義される。
【0152】
[0172]いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、逆コーディング順序に従ってN個の隣接しないブロックを選択する。たとえば、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、ビデオコーダがブロックをコーディングした順序の反対である順序に従ってブロックを走査することによって、隣接しないブロックを選択し得る。
【0153】
[0173]いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、あらかじめ定義された順序に従ってすべての再構築されたMVをこのリストに挿入することによって、グローバルMV候補リストを構築する。グローバルMV候補リストは、隣接するブロックから導出されたMVならびに隣接しないブロックから導出されたMVを含んでいることがある。次いで、現在ブロックのMV予測子が、このグローバルMV候補を使用して導出され得る。したがって、そのような例では、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、現在ピクチャ中にあり、現在ブロックより前に符号化される各ブロックについての動きベクトルを指定するMVP候補を備えるグローバル動きベクトル候補リストを決定し得る。さらに、ビデオコーダは、グローバル動きベクトル候補リスト中のMVP候補から隣接しないブロックの動きベクトルを決定し得る。
【0154】
[0174]いくつかの例では、隣接しないMV候補を直接フェッチすることがラインバッファのサイズを増加させ得るので、ビデオコーダは、再構築されたMVを記憶するための代替のやり方を適用する。たとえば、ビデオコーダは、先入れ先出し様式で履歴バッファに再構築されたMVを記憶し得る。隣接しないMV候補を模倣するために、履歴バッファ中のそれらの古いMVのみが、隣接しないMV候補としてとられる。履歴バッファ中の古いMVは、履歴バッファの最後に近いMVとして定義され得る。たとえば、履歴バッファのサイズがNである場合、(T=N/4などの)しきい値Tが、シグナリングされるか、または、履歴バッファ中の出口に最も近いT個のMVが古いMVとして定義されるように設定され得る。
【0155】
[0175]いくつかの例では、隣接しない動き情報(すなわち、隣接しないブロックの動き情報)を記憶するために使用されるバッファのバッファサイズを低減するために、隣接しない空間動きベクトル予測子を導出するために制約が追加される。隣接しないブロックと現在ブロック(または現在CTU)との間の距離がしきい値よりも大きい場合、隣接しないブロックの位置は変更され得る。言い換えれば、第1のロケーション(たとえば、NAブロックの固定パターンによって指定されたロケーション)におけるNAブロックに基づいてMV候補を決定するのではなく、ビデオコーダは、第1の位置から現在ブロックまでの距離がしきい値よりも大きいとき、第1の位置に基づいて第2の位置を決定し得る。いくつかの例では、第1のロケーション(たとえば、NAブロックの固定パターンによって指定されたロケーション)におけるNAブロックに基づいてMV候補を決定するのではなく、ビデオコーダは、第1の位置から現在ブロックまでの距離がしきい値よりも大きいとき、第1の位置が有効でないと決定し得る。しきい値は、水平距離および垂直距離について異なり得る。したがって、いくつかの例では、隣接しないブロックの動きベクトルを決定することより前に、および隣接しないブロックと現在ブロックとの間の距離がしきい値距離よりも大きいことに基づいて、ビデオコーダは、隣接しないブロックの位置を変更し得る。いくつかの例では、隣接しないブロックの動きベクトルを決定することより前に、および隣接しないブロックと現在コーディングツリーブロックとの間の距離がしきい値距離よりも大きいことに基づいて、ビデオコーダは、隣接しないブロックの位置を変更し得る。そのような例では、現在コーディングツリーブロックは現在ブロックを含んでいる。
【0156】
[0176]位置変更の一例は、第1の位置を粗いグリッドに丸めること、すなわち、記憶された隣接しない動きを低減することであり得る。したがって、この例では、ビデオコーダは、少なくとも部分的に、隣接しないブロックの位置を、現在ピクチャ中のブロックの第2のグリッドよりも粗い現在ピクチャ中のブロックの第1のグリッド上の位置に丸めることによって、隣接しないブロックの位置を変更し得る。
【0157】
[0177]位置変更の別の例は、第1の位置までの距離がしきい値よりも大きい場合、その位置をしきい値にクリッピングすることであり得る。その位置をしきい値にクリッピングすることは、その位置がしきい値を超える場合、その位置をしきい値になるように変更することを意味する。したがって、この例では、ビデオコーダは、少なくとも部分的に、隣接しないブロックの位置を距離しきい値にクリッピングすることによって、隣接しないブロックの位置を変更し得る。異なるしきい値を用いた複数の位置変更方法が組み合わせられ得る。
【0158】
[0178]
図18Aおよび
図18Bは、本開示の技法による、隣接しないブロックの位置変更の一例を示すブロック図である。
図19Aおよび
図19Bは、本開示の技法による、隣接しないブロックを変更するためのしきい値の例を示すブロック図である。位置を変更することのいくつかの例が、以下で与えられる。これらの例では、隣接しないブロックの位置が(xNA,yNA)であると仮定すると、隣接しないブロックの変更された位置は(xNA’,yNA’)であり、現在CTU1800、1900の左上グリッドの位置は(xCTU,yCTU)であり、現在CUの位置は(xCU,yCU)である。制約の例は、以下の通りであり得る。
【0159】
1.(yCTU-yNA)>(または≧)yThrdである場合、yNA’=yThrdである。(xCTU-xNA)>(または≧)xThrdである場合、xNA’=xThrdである。yThrdはxThrdよりも小さくなり得る。
図18Aは、yThrdを用いる一例を示し、ここで、Thrdはしきい値の省略形である。したがって、
図18Aでは、CTU1800は現在CU(curr)1802を含んでいる。隣接しないブロックの位置NA1804の垂直座標とCTU1800の垂直座標との間の差分がしきい値(yThrd)よりも大きい場合、ビデオコーダは、位置NA1804の垂直座標をしきい値にクリッピングし、位置NA’1806を生じる。
【0160】
2.(yCTU-yNA)>(または≧)yThrdおよび(または)(xCTU-xNA)>(または≧)xThrdである場合、abs(xNA’,yNA’)=((xNA>>CompressedLog2SizeX)<<CompressedLog2SizeX,(yNA>>CompressedLog2SizeY)<<CompressedLog2SizeY)である。CompressedLog2SizeXおよびCompressedLog2SizeYは、位置丸めを制御するための値である。たとえば、(xNA,yNA)が(36,18)であり、(CompressedLog2SizeX,CompressedLog2SizeY)が(4,4)である場合、丸められた位置(xNA’,yNA’)は、((36>>4)<<4,(18>>4)<<4)=(32,16)である。言い換えれば、隣接しないブロックの位置が現在ブロックから遠い場合、ビデオコーダは、その位置をより粗いグリッドに丸め得る。したがって、動きバッファは、より粗いグリッド上に、隣接しないブロックの動きを記憶するにすぎないことがある。
図18Bは一例を示す。したがって、
図18Bの例では、CTU1850は現在CU(curr)1852を含んでいる。位置NA1854の垂直(y)座標とCTU1850の位置の垂直座標との間の差分が垂直しきい値(yThrd)よりも大きく、および/または、位置NA1854の水平(x)座標の間の異なるが水平しきい値(xThrd)よりも大きい場合、ビデオコーダは、(xNA>>CompressedLog2SizeX)<<CompressedLog2SizeXへの変更された位置NA’1856の水平座標と、(yNA>>CompressedLog2SizeY)<<CompressedLog2SizeYへの変更された位置NA’1856の垂直座標とを決定し得る。いくつかの例では、xThrdは負の無限大である。したがって、そのような例では、(xCTU-xNA)は、常にxThrdよりも大きい。
【0161】
3.いくつかの例では、隣接しないブロックを変更することのしきい値が以下の通り、すなわち、(yCTU-yNA)>yThrdである場合、隣接しないブロックは変更される。
図19Aは一例を示し、影付きブロックは、変更されるべきである隣接しないブロック位置である。詳細には、
図19Aの例では、CTU1900は現在CU(curr)1902を含む。隣接しないブロックの垂直座標が、しきい値(yThrd)超だけCTU1900の垂直座標とは異なる場合、ビデオコーダは、隣接しないブロックの位置を変更し得る。
【0162】
4.隣接しないブロックを変更することのしきい値は、2つ以上のルールの組合せであり得る。一例は、以下の通りであり得る。(1)(yCTU-yNA)>yThrdである場合、隣接しないブロックは変更されるべきである。(2)(yCTU-yNA)>0および(xCTU-xNA)>0である場合、隣接しないブロックは変更されるべきである。
図19Bは2つのルールの組合せの例を示し、影付きブロックは、変更されるべきである隣接しないブロック位置である。詳細には、
図19Bの例では、CTU1950は現在CU(curr)1952を含む。隣接しないブロックの垂直座標が、垂直しきい値(yThrd)超だけCTU1950の垂直座標とは異なる場合、ビデオコーダは、隣接しないブロック垂直座標を変更し得る。さらに、隣接しないブロックの水平座標とCTU1950の水平座標との間の差分が0よりも大きく、隣接しないブロックの垂直座標とCTU1950の垂直座標との間の差分が0よりも大きい場合、ビデオコーダは、隣接しないブロックの水平座標を変更し得る。
一例では、現在ブロックと同じCTU行に位置する隣接しないブロックのみが選択され得る。別の例では、現在ブロックと同じCTUに位置する隣接しないブロックのみが選択され得る。
【0163】
[0179]ビデオコーダが、N個の隣接しないブロックが決定されると決定した後、ビデオコーダは、N個の隣接しないブロック(NAブロック)からM個の(ここでM≦N)隣接しない空間動きベクトル予測子(NA-SMVP)を導出し得る。ビデオコーデックにおいて使用されるインター予測機構に応じて隣接しないSMVPを利用するための異なるやり方がある。たとえば、競合的動き候補機構(たとえば、HEVCまたはJEMにおけるマージ/スキップモード)が使用されるとき、1つまたは複数の隣接しない空間MVP(NA-SMVP)は、導出され、あらかじめ定義された順序に従って候補リストに挿入される。
図16に示されている一例では、11個の隣接しないMVPが、従来の空間MVP、時間MVPの後に、および合成組合せ候補、合成0候補の前に、マージング候補リストに挿入される。
【0164】
[0180]いくつかの例では、全動き(full motion)プルーニングプロセスがNA-SMVPおよび他のマージング候補に適用され得るか、または、部分動き(partial motion)プルーニングがNA-SMVPおよび他のマージング候補に適用され得る。全動きプルーニングプロセスは、ある程度まで同等の候補を挿入することを回避するために、現在候補リスト中のある候補をすべての前に導出された候補と比較する。複雑さを低減するために、部分動きプルーニングプロセスは、各潜在的候補をすべての他の既存の候補と比較する代わりに、限られた数の候補のみを比較する。隣接しないブロックのより多くの挿入順序が、以下で、シーケンス2~シーケンス5において与えられる。本開示のNA-SMVPは、候補リストに挿入され得、限定はしないが、開示される挿入順序を含む。
【0165】
【0166】
[0181]競合的時空間動き候補方式は、利用可能な動き予測子のセットから動き予測子が選択されるシステムを含み得る。HEVCまたはJEMあるいは他のビデオコーデックにおけるAMVPモードなど、競合的時空間動き候補方式が使用されるとき、隣接しないMVP候補は、導出され、あらかじめ定義された順序に従って候補リストに挿入される。一例では、ビデオコーダは、
図16の11個の隣接しないMVPを、従来の空間MVP、時間MVPの後に、および任意の合成0候補の前に、AMVP候補リストに挿入する。NA-SMVP導出は、HEVCと同じ導出ルール、または、隣接するブロックから導出されたSMVPに適用される任意の他のルールに従うことができる。
【0167】
[0182]NA-SMVP候補の順序は、あるあらかじめ定義されたルールによって決定され得るか、または、適応可能なやり方で決定され得るかのいずれかである。たとえば、ビデオコーダは、本開示の他の場所で与えられる例のいずれかに従って、N個のNAブロックが選択されるのと同じ順序で、N個の隣接しないブロックからM個の候補を構成し得る。代替的に、一例では、ビデオコーダは、M個の候補の頻度(すなわち、すべてのMV候補の中のそれらの候補の発生回数)および/またはNAブロックと現在ブロックとの間の距離に従って、それらの候補を並べ替える。したがって、この例では、ビデオコーダは、NA-SMVP候補リスト(すなわち、NA-SMVP候補および場合によっては他の候補を含む候補リスト)中で前方に、より頻度が高い候補および/または現在ブロックにより近いNAブロックからの候補を配置し得る。さらに、ビデオコーダは、上記で、シーケンス2~シーケンス5において説明されたように、すべてのNA-SMVP候補を候補リスト中の固定位置において挿入し得、それらのNA-SMVP候補は、NA-SMVP候補のみの中で並べ替えられることを可能にされる。別の例では、ビデオコーダは、動き情報の頻度(すなわち、すべてのMV候補の中の動きベクトルの発生回数)あるいは現在ピクチャおよび/または前にコーディングされたピクチャからの任意の利用可能な動き統計値など、いくつかの基準に従って、(NA-SMVPおよび他の候補を含む)リスト中のすべての候補を並べ替え得る。候補リスト中のNA-SMVPの順序は、いくつかのコーディングモード、たとえばマージおよび/またはAMVPモードについて異なり得、必ずしも、開示される候補順序に限定されるとは限らない。たとえば、ビデオコーダは、第1の順序に従ってNA-SMVP候補をマージ候補リストに挿入し得、第1の順序とは異なる第2の順序に従ってNA-SMVP候補をAMVP候補リストに挿入し得る。
【0168】
[0183]いくつかの例では、プルーニングプロセスはブロックサイズに適応可能である。一例では、しきい値は、何がプルーニングされる必要があるかを定義するために使用され得る。たとえば、ブロックサイズが大きい(すなわち、あらかじめ定義されたブロックサイズよりも大きい)場合、ビデオコーダは、それに応じてしきい値を増加させ得る。(より早期にリストに追加された)動きベクトルMV0およびMV1をもつ2つの候補を考慮すると、一例では、MV0とMV1との間の距離のL1またはL2ノルムがしきい値よりも小さい場合、ビデオコーダはMV1の候補をプルーニングする。ビデオエンコーダ20は、SPS、PPS、スライスヘッダを通して、または別のシンタックス構造においてシグナリングされたしきい値をシグナリングし得る。
【0169】
[0184]別の例では、しきい値は、現在ブロックサイズに基づいて適応可能である。たとえば、この例では、第1のしきい値は、あらかじめ定義されたブロックサイズよりも小さいサイズを有するブロックのために適用され、第2の異なるしきい値は、あらかじめ定義されたブロックサイズよりも大きいサイズを有するブロックのために適用される。この例では、あらかじめ定義されたブロックサイズよりも小さいサイズを有するブロックのための候補リストを生成するとき、ビデオコーダは、ある候補の動きベクトルとリスト中の別の候補の動きベクトルとの間の距離のL1またはL2ノルムが第1のしきい値よりも小さい場合、その候補をリストからプルーニングし得る。この例では、あらかじめ定義されたブロックサイズよりも大きいサイズを有するブロックのための候補リストを生成するとき、ビデオコーダは、ある候補の動きベクトルとリスト中の別の候補の動きベクトルとの間の距離のL1またはL2ノルムが第2のしきい値よりも小さい場合、その候補をリストからプルーニングし得る。
【0170】
[0185]別の例示的なプルーニングプロセスでは、しきい値は、候補の空間的位置と現在ブロックの空間的位置との間の距離に基づいて適応可能である。ビデオコーダは、候補が現在ブロックからより遠くに離れて位置する場合、より大きいしきい値を使用し得る。たとえば、現在ブロックのための候補リストを生成するとき、ビデオコーダは、特定の隣接しないブロックに基づいて第1のNA-SMVPを決定し得る。この例では、ビデオコーダは、リスト中の第1のNA-SMVP候補の動きベクトルと第2の候補の動きベクトルとの間の距離のL1またはL2ノルムが特定のしきい値よりも小さい場合、第1のNA-SMVP候補をリストからプルーニングし得る。この例では、特定のしきい値は、特定の隣接しないブロックと現在ブロックとの間の距離に依存し得る。
【0171】
[0186]いくつかの例では、動きベクトルの分類は、限定はしないがK平均またはサポートベクターマシンを含む方法を使用して行われ得、Nc個のクラスの各々からの最初のMc個の候補のみが候補リスト中で保たれるべきであり、ここで、Mcとクラスの数Ncとは、あらかじめ定義されるか、または高レベルシンタックスにおいてシグナリングされ得る。
【0172】
[0187]JEMにおけるアフィンマージモードなど、単一のMVPのみが使用される方式では、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)はまた、他のMVPとともに候補セット中に1つまたは複数の隣接しないSMVP(NA-SMVP)を含め得る。次いで、最後のMVPが、あらかじめ定義された順序に従って最初の利用可能なMVPとして選択される。一例では、CUがアフィンマージ(AF_MERGE)モードにおいて適用されるとき、それは、訪問順序、A1→B1→B0→A0→B2→NAブロックに基づいて、有効なネイバーの再構築されたブロックから、アフィンモードを用いてコーディングされた第1のブロックを得る。したがって、この例では、ブロックA1、B1、B0、A0、またはB2のいずれもアフィンモードを用いてコーディングされない場合、ビデオコーダは、CUについてのMVPがアフィンモードにおいてコーディングされる隣接しないブロックの最初のMVPであると決定し得る。
【0173】
[0188]上記で手短に説明されたように、FRUCマージモードにおける動き導出プロセスは、2つのステップを含む。特に、CUレベル動き探索が最初に実施され、その後に、サブCUレベル動き改良が続く。CUレベルにおいて、ビデオコーダは、両方向マッチングまたはテンプレートマッチングに基づいて全CUについて初期動きベクトルを導出する。全CUについての初期動きベクトルを導出するために、ビデオコーダは、最初に、MV候補(FRUC CUレベルMV候補セット)のリストを生成し得、ビデオコーダは、さらなるCUレベル改良のための開始点として、最小マッチングコストにつながる候補を選択する。次いで、ビデオコーダは、開始点の周りの両方向マッチングまたはテンプレートマッチングに基づいてローカル探索を実施する。ビデオコーダは、次いで、最小マッチングコストを生じるMVを、全CUについてのMVとしてとる。その後、ビデオコーダは、導出されたCU動きベクトルを含んでいるFRUCサブCUレベルMV候補セットを用いてサブCUレベルにおいて、動き情報をさらに改良し得る。
【0174】
[0189]本開示は、FRUC CUレベルMV候補セット、FRUCサブCUレベルMV候補セット、またはその両方に、1つまたは複数のNA-SMVPを追加することを提案する。したがって、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、CUレベルFRUC動きベクトル候補のセットを決定し得る。本開示の技法によれば、CUレベルFRUC動きベクトル候補のセットは、1つまたは複数のNA-SMVPを含み得る。さらに、ビデオコーダは、CUレベルFRUC動きベクトル候補のセットからCUレベルFRUC動きベクトル候補を選択し得る。ビデオコーダは、次いで、少なくとも部分的に、選択されたCUレベルFRUC動きベクトル候補から開始するローカル探索を実施することによって、CUレベル動きベクトルを決定し得る。ビデオコーダはまた、FRUCサブCUレベル動きベクトル候補のセットを用いてサブCUレベルにおいてCUレベル動きベクトルを改良し得る。この例では、CUレベルFRUC動きベクトル候補のセットおよびFRUCサブCUレベル動きベクトル候補のセットのうちの少なくとも1つは、隣接しないブロックの動きベクトルを指定するNA-SMVPを含み得る。NA-SMVPは、本開示の他の場所で与えられる例のいずれかに従って決定され得る。
【0175】
[0190]隣接しないMVPに関係する高レベルシンタックスが、事前決定されるか、またはビットストリーム中に明示的にシグナリングされ得る。高レベルシンタックスは、限定はしないが、以下の制御パラメータを含む。
【0176】
1.隣接するブロックの数N。いくつかの例では、その数は、ブロックサイズなどのコーディング情報に従って適応可能である。いくつかの例では、数Nは、コード化モード(たとえば、スキップ/マージ/AMVP)、またはマージ/AMVP/スキップモードのための候補の最大許容数に依存する。
【0177】
2.距離s/t(複数のパラメータs/tが存在する場合、それらをシグナリングする)、ここで、
図20~
図23に示されているように、NAブロックについて、sは水平変位であり、tは垂直変位である。
【0178】
3.NAブロック決定のための親ブロックのサイズ。
【0179】
4.隣接しないMVPの有効化/無効化。
【0180】
5.
図20~
図22に関して上記で説明されたように、NAブロックの位置を特定するためのレベルの数。
【0181】
[0191]HEVCでは、マージング候補リストサイズは1から5に及び、AMVP候補リストサイズは2に固定される。JEMでは、マージング候補リストサイズは1から7に及び、AMVP候補リストサイズは2に固定される。NA-SMVPがMVPまたはマージング候補リスト中に含まれるとき、最大候補リストサイズは、それに応じて増加され得る。たとえば、マージング候補リストサイズは、1つまたは複数のNA-SMVPがマージング候補リストサイズに挿入されるとき、Nまで増加され得る(ここで、Nは正の整数であり、N>7である)。この例では、AMVP候補リストサイズは、1つまたは複数のNA-SMVPがマージング候補リストサイズに挿入されるとき、Mまで増加され得る(Mは正の整数であり、M>2である)。
【0182】
[0192]本開示はまた、HEVCにおいて与えられるものに加えて、合成MV候補を使用することを提案する。追加の合成MV候補の利用も、隣接しないMVPの使用に関して本開示の他の場所で与えられる例に従うことができる。すなわち、合成MV候補は、隣接しないブロックの動きパラメータに基づいて生成され得、ここで、隣接しないブロックは、上記で与えられた例のいずれかに従って決定される。
【0183】
[0193]いくつかの例では、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、A
1、B
1、B
0、A
0、B
2(
図2参照)など、あらかじめ定義された順序に従って、利用可能な双予測MV候補を2つの別々の単予測候補にスプリットすることによって、合成単予測候補を生成する。ビデオコーダは、次いで、作成された合成単予測候補を候補リストに挿入し得る。
【0184】
[0194]さらに、いくつかの例では、整数MVD(すなわち、1つのルーマサンプルの精度に指定されたMVD)または4ルーマサンプルMVD(すなわち、4つのルーマサンプルの精度に指定されたMVD)が有効化されるとき、ビデオコーダは、利用可能なMV候補を整数MVまたは4ルーマサンプルMV候補に丸めるかまたは切り捨てる(truncate)ことによって、合成整数MV候補(すなわち、1つのルーマサンプルの精度をもつ動きベクトルを有するMV候補)または4ルーマサンプルMV候補(すなわち、4つのルーマサンプルの精度をもつ動きベクトルを有するMV候補)を生成し得る。ビデオコーダは、次いで、生成された合成整数MV候補または4ルーマサンプルMV候補を候補リストに挿入し得る。
【0185】
[0195]本開示は、マージ候補リストまたはAMVP候補リスト中に複数のTMVP候補を含めるやり方をも提案する。一例では、1つのコロケートピクチャがシグナリングされるHEVC設計に続いて、ビデオコーダは、より多くのTMVP候補を導出するためにより多くの時間近隣ブロックを使用する。たとえば、ただ順序通り(
図2に示された)HブロックおよびCブロックを検査し、それらのうちの1つを選ぶことに加えて、ビデオコーダは、より多くのブロック(たとえば、現在ブロックの空間近隣ブロックのコロケートブロック)を検査し得る。一例では、ビデオコーダによって検査される空間近隣ブロックは、隣接するブロック、たとえば、
図16に示されているように、A
0、A
1、B
0、B
1およびB
2のみを含み得る。したがって、この例では、ビデオコーダは、(HブロックおよびCブロックを含むかまたはそれらに加えて)隣接するブロックの最高5つのコロケートブロックを考慮する。別の例では、ビデオコーダは、NAブロック(たとえば、
図16中の11個のNAブロック(NA
1,1、NA
1,2、NA
1,3、NA
1,4、NA
1,5、NA
1,6、NA
1,7、NA
1,8、NA
1,9、NA
1,10、NA
1,11))のコロケートブロックをも考慮し得る。
【0186】
[0196]いくつかの例では、ビデオコーダは、現在ブロックの反対側に位置するコロケートブロックを考慮する。たとえば、
図16中の((-4,-4)位置に位置する)NAブロックNA
1,6について、ビデオコーダは、対応するNA-col-ブロック(すなわち、隣接しないブロックとコロケートされ、参照ピクチャであるブロック)を(W+3,H+3)に位置するブロックとして選択し得、ここで、WおよびHは、動き情報のブロックサイズの基本ユニットにおける現在ブロックの幅および高さである(たとえば、4×4)。これは、現在ブロックの下位置および右位置にあるNA-col-ブロックのセットを作成する。いくつかの例では、ビデオコーダは、インターリービング様式で、NA-SMVPにMV候補(すなわち、NA-col-ブロックから定義されたMV候補)のこのセットを追加する。代替的に、いくつかの例では、ビデオコーダは、本開示の他の場所で説明される既存のAMVPまたはマージ導出プロセスの場合のように、MV候補のこのセットをTMVP候補のセットとして挿入し得る。
【0187】
[0197]いくつかの例では、ビデオコーダは、2つ以上のコロケートピクチャを選択し得る。言い換えれば、ビデオコーダは、TMVP候補をそこから導出すべき2つ以上の参照ピクチャを選択し得る。そのような例では、選択されたピクチャは、参照ピクチャリスト中に含まれるすべての参照ピクチャとして定義され得るか、または、選択されたピクチャはシグナリングされ得る。一例では、各選択された参照ピクチャについて、ビデオコーダは、HEVCにおいて使用されるのと同じ順序で(すなわち、右下、次いで中心)、選択された参照ピクチャ内のHブロックおよびCブロックを検査し得る。代替的に、一例では、各選択されたピクチャについて、ビデオコーダは、より多くのブロック(たとえば、現在ブロックの空間的に隣接するブロックおよび/またはNAブロックのコロケートブロック)を検査する。
【0188】
[0198]さらに、ビデオコーダが複数のTMVP候補を導出したとき、ビデオコーダは、それらの中の同等のTMVP候補を削除するためにプルーニングプロセスを適用し得る。代替的に、いくつかの例では、ビデオコーダは、制限付きプルーニングプロセスを適用し得、制限付きプルーニングプロセスは、TMVP候補のうちの1つが、他の候補のすべてではなく一定数の候補のみと比較され得ることを意味する。一例では、さらに、ビデオコーダはさらに、1つのTMVP候補と(空間マージング候補などの)他の候補との間でプルーニングプロセスを適用し得る。追加のTMVPを使用するための提案される技法は、マージおよび/またはAMVPモードなど、いくつかのコーディングモードに適用され得る。
【0189】
[0199]G.J.Sullivan、J.-R.Ohm、W.-J.Han、およびT.Wiegand、「Overview of the High Efficiency Video Coding (HEVC) Standard」、IEEE Transactions on Circuits and Systems for Video Technology、vol.22、no.12、1649~1668ページ、2012年12月において説明されているように、H.264/MPEG-4 AVCと比較してイントラ予測方向の増加された数により、HEVCは、H.264/MPEG-4 AVCにおいて考慮される1つの最確モードではなく、ルーマイントラ予測モードを予測的にコーディングするとき、3つの最確モード(MPM:most probable mode)を考慮する。MPMは、空間的に隣接するブロックのイントラモードから導出される。現在ルーマ予測モードが3つのMPMのうちの1つである場合、MPMインデックスのみがデコーダに送信される。他の場合、3つのMPMを除く現在ルーマ予測モードのインデックスが、5ビット固定長コードを使用することによってデコーダに送信される。JEMはまた、同じイントラモード予測方式に従う。ただし、JEMは4つ以上のMPMを含み得る。
【0190】
[0200]本開示は、より良い予測効率を達成するために1つまたは複数のMPMを導出するために隣接しないブロックのイントラモードを使用するための技法を提案する。前のセクションにおいて説明された技法が、MPM導出に適用され得る。隣接しないブロックからMPMを導出する例は、以下で、
図35および
図36に関して与えられる。
【0191】
[0201]
図24は、本開示の技法を実装し得る例示的なビデオエンコーダ20を示すブロック図である。
図24は、説明の目的で与えられており、本開示において広く例示され、説明される技法を限定するものと見なされるべきではない。本開示の技法は、様々なコーディング規格または方法に適用可能であり得る。
【0192】
[0202]処理回路がビデオエンコーダ20を含み、ビデオエンコーダ20は、本開示で説明される例示的な技法のうちの1つまたは複数を実施するように構成される。たとえば、ビデオエンコーダ20は集積回路を含み、
図24に示されている様々なユニットは、回路バスと相互接続されるハードウェア回路ブロックとして形成され得る。これらのハードウェア回路ブロックは別々の回路ブロックであり得るか、または、ユニットのうちの2つまたはそれ以上が組み合わせられて共通ハードウェア回路ブロックになり得る。ハードウェア回路ブロックは、算術論理ユニット(ALU:arithmetic logic unit)、初等関数ユニット(EFU:elementary function unit)、ならびに、AND、OR、NAND、NOR、XOR、XNOR、および他の同様の論理ブロックなどの論理ブロックなど、演算ブロックを形成する電気的構成要素の組合せとして形成され得る。
【0193】
[0203]いくつかの例では、
図24に示されているユニットのうちの1つまたは複数は、処理回路上で実行するソフトウェアユニットであり得る。そのような例では、これらのソフトウェアユニットのためのオブジェクトコードは、メモリに記憶される。オペレーティングシステムが、ビデオエンコーダ20にオブジェクトコードを取り出させ、オブジェクトコードを実行させ得、オブジェクトコードは、ビデオエンコーダ20に、例示的な技法を実装するための動作を実施させる。いくつかの例では、ソフトウェアユニットは、ビデオエンコーダ20が起動時に実行するファームウェアであり得る。したがって、ビデオエンコーダ20は、例示的な技法を実施するハードウェアを有する構造構成要素であるか、または、例示的な技法を実施するためにハードウェアを特殊化するためにハードウェア上で実行するソフトウェア/ファームウェアを有する。
【0194】
[0204]
図24の例では、ビデオエンコーダ20は、予測処理ユニット100と、ビデオデータメモリ101と、残差生成ユニット102と、変換処理ユニット104と、量子化ユニット106と、逆量子化ユニット108と、逆変換処理ユニット110と、再構築ユニット112と、フィルタユニット114と、復号ピクチャバッファ116と、エントロピー符号化ユニット118とを含む。予測処理ユニット100は、インター予測処理ユニット120と、イントラ予測処理ユニット126とを含む。インター予測処理ユニット120は、動き推定ユニットと、動き補償ユニットとを含み得る(図示せず)。
【0195】
[0205]ビデオデータメモリ101は、ビデオエンコーダ20の構成要素によって符号化されるべきビデオデータを記憶するように構成され得る。ビデオデータメモリ101に記憶されたビデオデータは、たとえば、ビデオソース18から取得され得る。復号ピクチャバッファ116は、たとえば、イントラコーディングモードまたはインターコーディングモードにおいてビデオエンコーダ20によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ101および復号ピクチャバッファ116は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗性RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ101および復号ピクチャバッファ116は、同じメモリデバイスまたは別々のメモリデバイスによって与えられ得る。様々な例では、ビデオデータメモリ101は、ビデオエンコーダ20の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。ビデオデータメモリ101は、
図1の記憶媒体19と同じであるかまたはそれの一部であり得る。
【0196】
[0206]ビデオエンコーダ20は、ビデオデータを受信する。ビデオエンコーダ20は、ビデオデータのピクチャのスライス中の各CTUを符号化し得る。CTUの各々は、等しいサイズのルーマコーディングツリーブロック(CTB)と、ピクチャの対応するCTBとに関連し得る。CTUを符号化することの一部として、予測処理ユニット100は、CTUのCTBを徐々により小さいブロックに分割するために区分を実施し得る。より小さいブロックはCUのコーディングブロックであり得る。たとえば、予測処理ユニット100は、ツリー構造に従ってCTUに関連するCTBを区分し得る。
【0197】
[0207]ビデオエンコーダ20は、CUの符号化表現(すなわち、コード化CU)を生成するためにCTUのCUを符号化し得る。CUを符号化することの一部として、予測処理ユニット100は、CUの1つまたは複数のPUの中でCUに関連するコーディングブロックを区分し得る。したがって、各PUは、ルーマ予測ブロックと、対応するクロマ予測ブロックとに関連し得る。ビデオエンコーダ20およびビデオデコーダ30は、様々なサイズを有するPUをサポートし得る。上記のように、CUのサイズはCUのルーマコーディングブロックのサイズを指すことがあり、PUのサイズはPUのルーマ予測ブロックのサイズを指すことがある。特定のCUのサイズが2N×2Nであると仮定すると、ビデオエンコーダ20およびビデオデコーダ30は、イントラ予測のための2N×2NまたはN×NのPUサイズと、インター予測のための2N×2N、2N×N、N×2N、N×N、または同様の対称PUサイズとをサポートし得る。ビデオエンコーダ20およびビデオデコーダ30は、インター予測のための2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズに対する非対称区分をもサポートし得る。
【0198】
[0208]インター予測処理ユニット120は、PUのための予測データを生成し得る。PUのための予測データを生成することの一部として、インター予測処理ユニット120は、PUに対してインター予測を実施する。PUのための予測データは、PUの予測ブロックとPUのための動き情報とを含み得る。インター予測処理ユニット120は、PUがIスライス中にあるのか、Pスライス中にあるのか、Bスライス中にあるのかに応じて、CUのPUについて異なる演算を実施し得る。Iスライス中では、すべてのPUがイントラ予測される。したがって、PUがIスライス中にある場合、インター予測処理ユニット120は、PUに対してインター予測を実施しない。したがって、Iモードにおいて符号化されたブロックの場合、予測されたブロックは、同じフレーム内の前に符号化された近隣ブロックからの空間予測を使用して形成される。PUがPスライス中にある場合、インター予測処理ユニット120は、PUの予測ブロックを生成するために単方向インター予測を使用し得る。PUがBスライス中にある場合、インター予測処理ユニット120は、PUの予測ブロックを生成するために単方向インター予測または双方向インター予測を使用し得る。
【0199】
[0209]インター予測処理ユニット120は、本開示の特定の技法を実施し得る。たとえば、インター予測処理ユニット120は、ビデオデータの現在ピクチャの隣接しないブロックの動きベクトルを決定し得、隣接しないブロックは、現在ピクチャの現在ブロックに隣接しない。さらに、インター予測処理ユニット120は、隣接しないブロックの動きベクトルに基づいて、現在ブロックのためのMVPを決定し得る。さらに、インター予測処理ユニット120は、現在ブロックの動きベクトルを決定し得、ここにおいて、動きベクトルは、現在ブロックのためのMVPの動きベクトルに等しいか、または、現在ブロックのためのMVPの動きベクトル+ビットストリーム中でシグナリングされたMVDに等しい。
【0200】
[0210]イントラ予測処理ユニット126は、PUに対してイントラ予測を実施することによって、PUのための予測データを生成し得る。PUのための予測データは、PUの予測ブロックと、様々なシンタックス要素とを含み得る。イントラ予測処理ユニット126は、Iスライス、Pスライス、およびBスライス中のPUに対してイントラ予測を実施し得る。
【0201】
[0211]PUに対してイントラ予測を実施するために、イントラ予測処理ユニット126は、PUのための予測データの複数のセットを生成するために複数のイントラ予測モードを使用し得る。イントラ予測処理ユニット126は、PUのための予測ブロックを生成するために近隣PUのサンプルブロックからのサンプルを使用し得る。近隣PUは、PU、CU、およびCTUについて左から右、上から下の符号化順序を仮定すると、PUの上、右上、左上、または左にあり得る。イントラ予測処理ユニット126は、様々な数のイントラ予測モード、たとえば、33個の方向性イントラ予測モードを使用し得る。いくつかの例では、イントラ予測モードの数は、PUに関連する領域のサイズに依存し得る。
【0202】
[0212]予測処理ユニット100は、PUのためにインター予測処理ユニット120によって生成された予測データ、またはPUのためにイントラ予測処理ユニット126によって生成された予測データの中からCUのPUのための予測データを選択し得る。いくつかの例では、予測処理ユニット100は、予測データのセットのレート/ひずみメトリックに基づいてCUのPUのための予測データを選択する。選択された予測データの予測ブロックは、本明細書では、選択された予測ブロックと呼ばれることがある。イントラ予測処理ユニット126は、MPMに関係する本開示の技法を実施し得る。
【0203】
[0213]残差生成ユニット102は、CUのためのコーディングブロック(たとえば、ルーマコーディングブロック、CbコーディングブロックおよびCrコーディングブロック)、ならびにCUのPUのための選択された予測ブロック(たとえば、予測ルーマブロック、予測Cbブロックおよび予測Crブロック)に基づいて、CUのための残差ブロック(たとえば、ルーマ残差ブロック、Cb残差ブロックおよびCr残差ブロック)を生成し得る。たとえば、残差生成ユニット102は、残差ブロック中の各サンプルが、CUのコーディングブロック中のサンプルとCUのPUの対応する選択された予測ブロック中の対応するサンプルとの間の差分に等しい値を有するように、CUの残差ブロックを生成し得る。
【0204】
[0214]変換処理ユニット104は、CUの残差ブロックをCUのTUの変換ブロックに区分し得る。たとえば、変換処理ユニット104は、CUの残差ブロックをCUのTUの変換ブロックに区分するために、4分木区分を実施し得る。したがって、TUは、ルーマ変換ブロックと2つのクロマ変換ブロックとに関連し得る。CUのTUのルーマ変換ブロックとクロマ変換ブロックとのサイズおよび位置は、CUのPUの予測ブロックのサイズおよび位置に基づくことも基づかないこともある。「残差4分木」(RQT:residual quad-tree)として知られる4分木構造は、領域の各々に関連するノードを含み得る。CUのTUはRQTのリーフノードに対応し得る。
【0205】
[0215]変換処理ユニット104は、TUの変換ブロックに1つまたは複数の変換を適用することによって、CUの各TUのための変換係数ブロックを生成し得る。変換処理ユニット104は、TUに関連する変換ブロックに様々な変換を適用し得る。たとえば、変換処理ユニット104は、離散コサイン変換(DCT)、方向変換、または概念的に同様の変換を変換ブロックに適用し得る。いくつかの例では、変換処理ユニット104は変換ブロックに変換を適用しない。そのような例では、変換ブロックは変換係数ブロックとして扱われ得る。
【0206】
[0216]量子化ユニット106は、係数ブロック中の変換係数を量子化し得る。量子化ユニット106は、CUに関連する量子化パラメータ(QP)値に基づいて、CUのTUに関連する係数ブロックを量子化し得る。ビデオエンコーダ20は、CUに関連するQP値を調整することによって、CUに関連する係数ブロックに適用される量子化の程度を調整し得る。量子化は情報の損失をもたらし得る。したがって、量子化された変換係数は、元の係数よりも低い精度を有し得る。
【0207】
[0217]逆量子化ユニット108および逆変換処理ユニット110は、係数ブロックから残差ブロックを再構築するために、それぞれ、係数ブロックに逆量子化および逆変換を適用し得る。再構築ユニット112は、TUに関連する再構築された変換ブロックを生成するために、再構築された残差ブロックを、予測処理ユニット100によって生成された1つまたは複数の予測ブロックからの対応するサンプルに加算し得る。このようにCUの各TUについて変換ブロックを再構築することによって、ビデオエンコーダ20は、CUのコーディングブロックを再構築し得る。
【0208】
[0218]フィルタユニット114は、CUに関連するコーディングブロック中のブロッキングアーティファクトを低減するために1つまたは複数のデブロッキング演算を実施し得る。復号ピクチャバッファ116は、フィルタユニット114が、再構築されたコーディングブロックに対して1つまたは複数のデブロッキング演算を実施した後に、再構築されたコーディングブロックを記憶し得る。インター予測処理ユニット120は、他のピクチャのPUに対してインター予測を実施するために、再構築されたコーディングブロックを含んでいる参照ピクチャを使用し得る。さらに、イントラ予測処理ユニット126は、CUと同じピクチャ中の他のPUに対してイントラ予測を実施するために、復号ピクチャバッファ116中の再構築されたコーディングブロックを使用し得る。
【0209】
[0219]エントロピー符号化ユニット118は、ビデオエンコーダ20の他の機能構成要素からデータを受信し得る。たとえば、エントロピー符号化ユニット118は、量子化ユニット106から係数ブロックを受信し得、予測処理ユニット100からシンタックス要素を受信し得る。エントロピー符号化ユニット118は、エントロピー符号化データを生成するために、データに対して1つまたは複数のエントロピー符号化演算を実施し得る。たとえば、エントロピー符号化ユニット118は、CABAC演算、コンテキスト適応型可変長コーディング(CAVLC:context-adaptive variable length coding)演算、可変対可変(V2V:variable-to-variable)長コーディング演算、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)演算、確率間隔区分エントロピー(PIPE:Probability Interval Partitioning Entropy)コーディング演算、指数ゴロム符号化演算、または別のタイプのエントロピー符号化演算をデータに対して実施し得る。ビデオエンコーダ20は、エントロピー符号化ユニット118によって生成されたエントロピー符号化データを含むビットストリームを出力し得る。たとえば、ビットストリームは、CUのための変換係数の値を表すデータを含み得る。
【0210】
[0220]
図25は、本開示の技法を実装するように構成された例示的なビデオデコーダ30を示すブロック図である。
図25は、説明の目的で与えられており、本開示において広く例示され、説明される技法を限定するものではない。説明の目的で、本開示は、HEVCコーディングのコンテキストにおいてビデオデコーダ30について説明する。ただし、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
【0211】
[0221]処理回路がビデオデコーダ30を含み、ビデオデコーダ30は、本開示で説明される例示的な技法のうちの1つまたは複数を実施するように構成される。たとえば、ビデオデコーダ30は集積回路を含み、
図25に示されている様々なユニットは、回路バスと相互接続されるハードウェア回路ブロックとして形成され得る。これらのハードウェア回路ブロックは別々の回路ブロックであり得るか、または、ユニットのうちの2つまたはそれ以上が組み合わせられて共通ハードウェア回路ブロックになり得る。ハードウェア回路ブロックは、算術論理ユニット(ALU)、初等関数ユニット(EFU)、ならびに、AND、OR、NAND、NOR、XOR、XNOR、および他の同様の論理ブロックなどの論理ブロックなど、演算ブロックを形成する電子的構成要素の組合せとして形成され得る。
【0212】
[0222]いくつかの例では、
図25に示されているユニットのうちの1つまたは複数は、処理回路上で実行するソフトウェアユニットであり得る。そのような例では、これらのソフトウェアユニットのためのオブジェクトコードは、メモリに記憶される。オペレーティングシステムが、ビデオデコーダ30にオブジェクトコードを取り出させ、オブジェクトコードを実行させ得、オブジェクトコードは、ビデオデコーダ30に、例示的な技法を実装するための動作を実施させる。いくつかの例では、ソフトウェアユニットは、ビデオデコーダ30が起動時に実行するファームウェアであり得る。したがって、ビデオデコーダ30は、例示的な技法を実施するハードウェアを有する構造構成要素であるか、または、例示的な技法を実施するためにハードウェアを特殊化するためにハードウェア上で実行するソフトウェア/ファームウェアを有する。
【0213】
[0223]
図25の例では、ビデオデコーダ30は、エントロピー復号ユニット150と、ビデオデータメモリ151と、予測処理ユニット152と、逆量子化ユニット154と、逆変換処理ユニット156と、再構築ユニット158と、フィルタユニット160と、復号ピクチャバッファ162とを含む。予測処理ユニット152は、動き補償ユニット164と、イントラ予測処理ユニット166とを含む。他の例では、ビデオデコーダ30は、より多数の、より少数の、または異なる機能構成要素を含み得る。
【0214】
[0224]ビデオデータメモリ151は、ビデオデコーダ30の構成要素によって復号されるべき、符号化ビデオビットストリームなどの符号化ビデオデータを記憶し得る。ビデオデータメモリ151に記憶されるビデオデータは、たとえば、コンピュータ可読媒体16から、たとえば、カメラなどのローカルビデオソースから、ビデオデータのワイヤードまたはワイヤレスネットワーク通信を介して、あるいは物理データ記憶媒体にアクセスすることによって取得され得る。ビデオデータメモリ151は、符号化ビデオビットストリームからの符号化ビデオデータを記憶するコード化ピクチャバッファ(CPB)を形成し得る。復号ピクチャバッファ162は、たとえば、イントラコーディングモードまたはインターコーディングモードにおいてビデオデコーダ30によってビデオデータを復号する際に使用するための、あるいは出力のための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ151および復号ピクチャバッファ162は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗性RAM(RRAM)、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ151および復号ピクチャバッファ162は、同じメモリデバイスまたは別々のメモリデバイスによって与えられ得る。様々な例では、ビデオデータメモリ151は、ビデオデコーダ30の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。ビデオデータメモリ151は、
図1の記憶媒体28と同じであるかまたはそれの一部であり得る。
【0215】
[0225]ビデオデータメモリ151は、ビットストリームの符号化ビデオデータ(たとえば、NALユニット)を受信し、記憶する。エントロピー復号ユニット150は、ビデオデータメモリ151から符号化ビデオデータ(たとえば、NALユニット)を受信し得、シンタックス要素を取得するためにNALユニットをパースし得る。エントロピー復号ユニット150は、NALユニット中のエントロピー符号化シンタックス要素をエントロピー復号し得る。予測処理ユニット152、逆量子化ユニット154、逆変換処理ユニット156、再構築ユニット158、およびフィルタユニット160は、ビットストリームから抽出されたシンタックス要素に基づいて復号ビデオデータを生成し得る。エントロピー復号ユニット150は、エントロピー符号化ユニット118のプロセスとは概して逆のプロセスを実施し得る。
【0216】
[0226]ビットストリームからシンタックス要素を取得することに加えて、ビデオデコーダ30は、区分されていないCUに対して再構築演算を実施し得る。CUに対して再構築演算を実施するために、ビデオデコーダ30はCUの各TUに対して再構築演算を実施し得る。CUの各TUについて再構築演算を実施することによって、ビデオデコーダ30はCUの残差ブロックを再構築し得る。
【0217】
[0227]CUのTUに対して再構築演算を実施することの一部として、逆量子化ユニット154は、TUに関連する係数ブロックを逆量子化、すなわち、量子化解除し得る。逆量子化ユニット154が係数ブロックを逆量子化した後に、逆変換処理ユニット156は、TUに関連する残差ブロックを生成するために係数ブロックに1つまたは複数の逆変換を適用し得る。たとえば、逆変換処理ユニット156は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT:Karhunen-Loeve transform)、逆回転変換、逆方向変換、または別の逆変換を係数ブロックに適用し得る。
【0218】
[0228]イントラ予測を使用してPUが符号化される場合、イントラ予測処理ユニット166は、PUの予測ブロックを生成するためにイントラ予測を実施し得る。イントラ予測処理ユニット166は、サンプル空間的に近隣するブロックに基づいてPUの予測ブロックを生成するためにイントラ予測モードを使用し得る。イントラ予測処理ユニット166は、ビットストリームから取得された1つまたは複数のシンタックス要素に基づいてPUのためのイントラ予測モードを決定し得る。イントラ予測処理ユニット166は、MPMに関係する本開示の技法を実施し得る。
【0219】
[0229]インター予測を使用してPUが符号化される場合、エントロピー復号ユニット150および/または動き補償ユニット164は、PUのための動き情報を決定し得る。動き補償ユニット164は、PUの動き情報に基づいて、1つまたは複数の参照ブロックを決定し得る。動き補償ユニット164は、1つまたは複数の参照ブロックに基づいて、PUのための予測ブロック(たとえば、予測ルーマブロック、予測Cbブロックおよび予測Crブロック)を生成し得る。
【0220】
[0230]本開示の技法によれば、動き補償ユニット164は、ビデオデータの現在ピクチャの隣接しないブロックの動きベクトルを決定し得、隣接しないブロックは、現在ピクチャの現在ブロックに隣接しない。さらに、動き補償ユニット164は、隣接しないブロックの動きベクトルに基づいて、現在ブロックのための動きMVPを決定し得る。動き補償ユニット164は、現在ブロックのためのMVPに基づいて、現在ブロックの動きベクトルをも決定し得る。
【0221】
[0231]再構築ユニット158は、CUのためのコーディングブロック(たとえば、ルーマコーディングブロック、CbコーディングブロックおよびCrコーディングブロック)を再構築するために、適用可能なとき、CUのTUのための変換ブロック(たとえば、ルーマ変換ブロック、Cb変換ブロックおよびCr変換ブロック)、ならびにCUのPUの予測ブロック(たとえば、ルーマブロック、CbブロックおよびCrブロック)、すなわち、イントラ予測データまたはインター予測データのいずれかを使用し得る。たとえば、再構築ユニット158は、CUのコーディングブロック(たとえば、ルーマコーディングブロック、CbコーディングブロックおよびCrコーディングブロック)を再構築するために、変換ブロック(たとえば、ルーマ変換ブロック、Cb変換ブロックおよびCr変換ブロック)のサンプルを、予測ブロック(たとえば、ルーマ予測ブロック、Cb予測ブロックおよびCr予測ブロック)の対応するサンプルに加算し得る。
【0222】
[0232]フィルタユニット160は、CUのコーディングブロックに関連するブロッキングアーティファクトを低減するためにデブロッキング演算を実施し得る。ビデオデコーダ30は、復号ピクチャバッファ162にCUのコーディングブロックを記憶し得る。復号ピクチャバッファ162は、後続の動き補償、イントラ予測、および
図1のディスプレイデバイス32などのディスプレイデバイス上での提示のために、参照ピクチャを与え得る。たとえば、ビデオデコーダ30は、復号ピクチャバッファ162中のブロックに基づいて、他のCUのPUについてイントラ予測演算またはインター予測演算を実施し得る。
【0223】
[0233]本開示のいくつかの態様は、説明の目的でHEVC規格の拡張に関して説明された。ただし、本開示で説明される技法は、まだ開発されていない他の規格またはプロプライエタリビデオコーディングプロセスを含む、他のビデオコーディングプロセスのために有用であり得る。
【0224】
[0234]本開示で説明されるビデオコーダは、ビデオエンコーダまたはビデオデコーダを指すことがある。同様に、ビデオコーディングユニットは、ビデオエンコーダまたはビデオデコーダを指すことがある。同様に、ビデオコーディングは、適用可能なとき、ビデオ符号化またはビデオ復号を指すことがある。本開示では、「に基づいて」という句は、のみに基づいて、に少なくとも部分的に基づいて、または、に何らかのやり方で基づいて、を示し得る。本開示は、1つまたは複数のサンプルブロックと、サンプルの1つまたは複数のブロックのサンプルをコーディングするために使用されるシンタックス構造とを指すために、「ビデオユニット」、または「ビデオブロック」、または「ブロック」という用語を使用し得る。例示的なタイプのビデオユニットは、CTU、CU、PU、変換ユニット(TU)、マクロブロック、マクロブロック区分などを含み得る。いくつかのコンテキストでは、PUの説明は、マクロブロックまたはマクロブロック区分の説明と交換され得る。例示的なタイプのビデオブロックは、コーディングツリーブロック、コーディングブロック、およびビデオデータの他のタイプのブロックを含み得る。
【0225】
[0235]
図26は、本開示の1つまたは複数の技法による、ビデオデータを符号化するためのビデオエンコーダの例示的な動作を示すフローチャートである。
図26の例では、ビデオエンコーダ20が、ビデオデータの現在ピクチャの隣接しないブロックの動きベクトルを決定し得る(2600)。隣接しないブロックは、現在ピクチャの現在ブロックに隣接しない。
【0226】
[0236]さらに、ビデオエンコーダ20は、隣接しないブロックの動きベクトルに基づいて、現在ブロックのためのMVPを決定し得る(2602)。いくつかの例では、現在ブロックのためのMVPはアフィンモードにある。言い換えれば、動きベクトルは、MVPにおける制御点について指定される。いくつかの例では、隣接しないブロックは、現在ブロックの位置に対する隣接しないブロックの固定パターンを定義するテンプレート中のブロックである。
【0227】
[0237]一例では、現在ブロックのためのMVPを決定することの一部として、ビデオエンコーダ20は、隣接しないブロックの動きベクトルに部分的に基づいて、MVP候補のリストを生成し得る。この例では、MVP候補のリストは、隣接しないブロックの動きベクトルを指定するMVP候補を含む。さらに、この例では、ビデオエンコーダ20は、MVP候補のリスト中のMVP候補の中から、現在ブロックのためのMVPを決定し得る。たとえば、ビデオエンコーダ20は、現在ブロックのためのMVPを決定するためにRDコスト分析を使用し得る。
【0228】
[0238]いくつかの例では、ビデオエンコーダ20は、MVP候補のリスト中で複数のNA-SMVP候補を順序付ける。そのような例では、複数のNA-SMVP候補の各それぞれのNA-SMVP候補について、それぞれのNA-SMVP候補は、複数の隣接しないブロックのそれぞれの隣接しないブロックに対応し、それぞれのNA-SMVPは、それぞれの隣接しないブロックの動きベクトルを指定する。複数の隣接しないブロックは第1の隣接しないブロックを含む。さらに、この例では、ビデオエンコーダ20は、現在ブロックからの対応する隣接しないブロックの距離に従ってリスト中で複数のNA-SMVP候補を順序付け得る。距離は、L1またはL2の観点であり得る。
【0229】
[0239]いくつかの例では、ビデオエンコーダ20は、第1の複数のNA-SMVP候補を決定する。第1の複数のNA-SMVP候補の各それぞれのNA-SMVP候補について、それぞれのNA-SMVP候補は、複数の隣接しないブロックのそれぞれの隣接しないブロックに対応する。それぞれのNA-SMVPは、それぞれの隣接しないブロックの動きベクトルを指定する。第1の複数の隣接しないブロックは第1の隣接しないブロックを含む。この例では、ビデオエンコーダ20は、リスト中に第2の複数のNA-SMVP候補を含め得、第2の複数のNA-SMVP候補は、第1の複数のNA-SMVP候補中の重複しない(non-duplicative)NA-SMVP候補を備える。このようにして、ビデオエンコーダ20は、重複(duplicate)NA-SMVP候補をリストから削除するプルーニングプロセスを実施し得る。第2の複数のNA-SMVP候補は、第2の複数のNA-SMVP候補中のNA-SMVP候補によって指定された動きベクトルが第1の複数のNA-SMVP候補中のNA-SMVP候補によって指定される、頻度(frequency)に従って、リスト中で順序付けられ得る。
【0230】
[0240]いくつかの例では、MVP候補のリストは、グローバル動きベクトル候補リストである。グローバル動きベクトル候補リストは、現在ピクチャ中にあり、現在ブロックより前に符号化される各ブロックについての動きベクトルを指定するMVP候補を備える。そのような例では、ビデオコーダは、グローバル動きベクトル候補リスト中のMVP候補から隣接しないブロックの動きベクトルを決定し得る。
【0231】
[0241]さらに、いくつかの例では、ビデオエンコーダ20は、FIFOバッファに複数の隣接しないMVP候補を記憶する。複数の隣接しないMVP候補は、隣接しないブロックの動きベクトルを指定する隣接しないMVP候補を含む。そのような例では、ビデオエンコーダ20は、最も早期に追加された隣接しないMVP候補をFIFOバッファから削除するためにFIFOバッファを更新し、FIFOバッファにMVP候補を追加する。
【0232】
[0242]いくつかの例では、ビデオエンコーダ20は、リストにプルーニングプロセスを適用する。プルーニングプロセスは、現在ブロックのブロックサイズに適応可能である。たとえば、本開示の他の場所で説明されたように、全動きプルーニングプロセスまたは部分動きプルーニングプロセスが適用され得る。
【0233】
[0243]ビデオエンコーダ20は、現在ブロックの動きベクトルをも決定し得る(2604)。マージモードが使用される場合など、いくつかの例では、現在ブロックの動きベクトルはMVPの動きベクトルに等しい。AMVPが使用されるときなど、いくつかの例では、現在ブロックの動きベクトルは、MVPの動きベクトル+ビットストリーム中でシグナリングされたMVDに等しい。
【0234】
[0244]さらに、ビデオエンコーダ20は、現在ブロックの動きベクトルに基づいて予測ブロックを決定し得る(2606)。ビデオエンコーダ20は、予測ブロックに基づいて、残差サンプル値を生成し得る(2608)。ビデオエンコーダ20は、本開示の他の場所で与えられる例のいずれかに従って、予測ブロックを決定し、残差サンプル値を生成し得る。
【0235】
[0245]
図27は、本開示の1つまたは複数の技法による、ビデオデータを復号するためのビデオデコーダ30の例示的な動作を示すフローチャートである。
図27の例では、ビデオデコーダ30が、ビデオデータの現在ピクチャの隣接しないブロックの動きベクトルを決定し得る(2700)。隣接しないブロックは、現在ピクチャの現在ブロックに隣接しない。いくつかの例では、隣接しないブロックは、現在ブロックの位置に対するブロックの固定パターンを定義するテンプレート中のブロックである。
【0236】
[0246]いくつかの例では、MVP候補のリストは、グローバル動きベクトル候補リストである。グローバル動きベクトル候補リストは、現在ピクチャ中にあり、現在ブロックより前に符号化される各ブロックについての動きベクトルを指定するMVP候補を備える。そのような例では、ビデオコーダは、グローバル動きベクトル候補リスト中のMVP候補から隣接しないブロックの動きベクトルを決定し得る。
【0237】
[0247]さらに、いくつかの例では、ビデオデコーダ30は、FIFOバッファに複数の隣接しないMVP候補を記憶する。複数の隣接しないMVP候補は、隣接しないブロックの動きベクトルを指定する隣接しないMVP候補を含む。そのような例では、ビデオエンコーダ20は、最も早期に追加された隣接しないMVP候補をFIFOバッファから削除するためにFIFOバッファを更新し、FIFOバッファにMVP候補を追加する。
【0238】
[0248]さらに、ビデオデコーダ30は、隣接しないブロックの動きベクトルに基づいて、現在ブロックのためのMVPを決定し得る(2702)。いくつかの例では、現在ブロックのためのMVPは、アフィンモード、非アフィンモード、または動き補償予測の別のモードにあり得る。一例では、現在ブロックのためのMVPを決定することの一部として、ビデオデコーダ30は、隣接しないブロックの動きベクトルに部分的に基づいて、MVP候補のリストを生成し得る。この例では、MVP候補のリストは、隣接しないブロックの動きベクトルを指定するMVP候補を含む。さらに、この例では、ビデオデコーダ30は、MVP候補のリスト中のMVP候補の中から、現在ブロックのためのMVPを決定し得る。たとえば、ビデオデコーダ30は、MVP候補のリスト中の最良のMVPを識別するためにレートひずみ分析を使用し得る。
【0239】
[0249]いくつかの例では、隣接しないブロックは第1の隣接しないブロックであり、ビデオデコーダ30は、リスト中で複数のNA-SMVP候補を順序付ける。言い換えれば、ビデオデコーダ30は、特定の順序に従って複数のNA-SMVP候補をリストに挿入する。そのような例では、複数のNA-SMVP候補の各それぞれのNA-SMVP候補について、それぞれのNA-SMVP候補は、複数の隣接しないブロックのそれぞれの隣接しないブロックに対応する。それぞれのNA-SMVPは、それぞれの隣接しないブロックの動きベクトルを指定する。いくつかの例では、ビデオデコーダ30は、現在ブロックからの対応する隣接しないブロックの(たとえば、L1またはL2の観点からの)距離に従ってリスト中で複数のNA-SMVP候補を順序付ける。いくつかの例では、ビデオデコーダ30は、本開示の他の場所で与えられる例のいずれかに従って、複数のNA-SMVP候補を順序付ける。
【0240】
[0250]いくつかの例では、隣接しないブロックは第1の隣接しないブロックであり、ビデオデコーダ30は、第1の複数のNA-SMVP候補をさらに決定する。たとえば、そのような例では、第1の複数のNA-SMVP候補の各それぞれのNA-SMVP候補について、それぞれのNA-SMVP候補は、複数の隣接しないブロックのそれぞれの隣接しないブロックに対応する。それぞれのNA-SMVPは、それぞれの隣接しないブロックの動きベクトルを指定する。第1の複数の隣接しないブロックは第1の隣接しないブロックを含む。さらに、そのような例では、ビデオデコーダ30は、リスト中で第2の複数のNA-SMVP候補を順序付け得る。言い換えれば、ビデオデコーダ30は、特定の順序に従ってリスト中に第2の複数のNA-SMVP候補を含め得る。第2の複数のNA-SMVP候補は、第1の複数のNA-SMVP候補中の重複しないNA-SMVP候補を備える。いくつかの例では、第2の複数のNA-SMVP候補は、第2の複数のNA-SMVP候補中のNA-SMVP候補によって指定された動きベクトルが第1の複数のNA-SMVP候補中のNA-SMVP候補によって指定される、頻度に従って、リスト中で順序付けられる。
【0241】
[0251]いくつかの例では、ビデオデコーダ30は、リストにプルーニング(pruning)プロセスを適用し得る。いくつかのそのような例では、プルーニングプロセスは、現在ブロックのブロックサイズに適応可能である。いくつかの例では、ビデオデコーダ30は、本開示の他の場所で説明されたように、NA-SMVPおよび他のマージング候補に全動きプルーニングプロセスを適用する。いくつかの例では、ビデオデコーダ30は、本開示の他の場所で説明されたように、NA-SMVPおよび他のマージング候補に部分動きプルーニングプロセスのみを適用する。
【0242】
[0252]さらに、ビデオデコーダ30は、現在ブロックのためのMVPに基づいて、現在ブロックの動きベクトルを決定し得る(2704)。いくつかの例では、MVP候補のリストがマージ候補リストである場合、ビデオデコーダ30は、現在ブロックのためのMVPがMVP候補のリスト中のMVP候補の動きベクトルを指定するように、現在ブロックのためのMVPを決定し得る。いくつかの例では、MVP候補のリストがAMVP候補リストである場合、ビデオデコーダ30は、現在ブロックのためのMVPの動きベクトルがMVP候補のリスト中のMVP候補の動きベクトル+MVDに等しくなるように、現在ブロックのためのMVPを決定し得る。
【0243】
[0253]ビデオデコーダ30は、現在ブロックの動きベクトルに基づいて予測ブロックをも決定し得る(2706)。たとえば、ビデオデコーダ30は、本開示の他の場所で詳細に説明されたように、動きベクトルによって示されたロケーションにおける参照ピクチャのサンプルに基づいて予測ブロックを決定し得る。ビデオデコーダ30は、次いで、予測ブロックに基づいて、現在ピクチャのサンプル値を再構築し得る(2708)。たとえば、ビデオデコーダ30は、予測ブロック中のサンプル値を残差サンプル値に加算することによって、現在ピクチャのサンプル値を再構築し得る。
【0244】
[0254]
図28は、本開示の技法による、FRUC動きベクトル候補を使用してNA-SMVPを決定するための例示的な動作を示すフローチャートである。
図28の例では、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、CUレベルフレームレートアップコンバージョン(FRUC)動きベクトル候補のセットを決定し得る(2800)。さらに、ビデオコーダは、CUレベルFRUC動きベクトル候補のセットからCUレベルFRUC動きベクトル候補を選択し得る(2802)。ビデオコーダは、少なくとも部分的に、選択されたCUレベルFRUC動きベクトル候補から開始するローカル探索を実施することによって、CUレベル動きベクトルを決定し得る(2804)。さらに、ビデオコーダは、FRUCサブCUレベル動きベクトル候補のセットを用いてサブCUレベルにおいてCUレベル動きベクトルを改良し得る(2806)。本開示の技法によれば、CUレベルFRUC動きベクトル候補のセットおよびFRUCサブCUレベル動きベクトル候補のセットのうちの少なくとも1つは、
図26および
図27の隣接しないブロックの動きベクトルを指定するNA-SMVPを含む。FRUCプロセスは、場合によっては、本開示の他の場所で与えられる例に従い得る。
【0245】
[0255]
図29は、本開示の1つまたは複数の技法による、現在ブロックのためのMVP候補のリスト中に合成候補を含めるビデオエンコーダ20の例示的な動作を示すフローチャートである。
図29の例では、ビデオエンコーダ20は、ビデオデータの現在ピクチャの現在ブロックのためのMVP候補のリストを決定し得る(2900)。MVP候補のリストは、双予測MVP候補と合成単予測MVP候補とを含む。さらに、
図29の例では、および本開示の技法によれば、ビデオエンコーダ20は、MVP候補のリストを決定することの一部として、双予測MVP候補によって指定された動きベクトルに基づいて合成単予測MVP候補を生成する(2902)。一例では、ビデオエンコーダ20は、あらかじめ定義された順序に従って、利用可能な双予測MV候補を2つの別々の単予測候補にスプリットすることによって、合成単予測候補を生成する。この例では、ビデオエンコーダ20は、次いで、作成された合成単予測候補を候補リストに挿入し得る。いくつかの例では、整数MVDまたは4ルーマサンプルMVDが有効化されるとき、ビデオエンコーダ20は、利用可能なMV候補を整数MV候補または4ルーマサンプルMV候補に丸めるかまたは切り捨てることによって、合成整数MV候補または4ルーマサンプルMV候補を生成し得る。そのような例では、ビデオエンコーダ20は、合成整数MV候補または4ルーマサンプルMV候補を候補リストに挿入する。
【0246】
[0256]さらに、
図29の例では、ビデオエンコーダ20は、MVP候補のリスト中の選択されたMVP候補の動きベクトルに基づいて、現在ブロックのためのMVPを決定し得る(2904)。さらに、ビデオエンコーダ20は、現在ブロックの動きベクトルを決定し得る(2906)。マージモードが使用される場合など、いくつかの例では、現在ブロックの動きベクトルはMVPの動きベクトルに等しい。AMVPが使用されるときなど、いくつかの例では、現在ブロックの動きベクトルは、MVPの動きベクトル+ビットストリーム中でシグナリングされたMVDに等しい。
【0247】
[0257]ビデオエンコーダ20は、現在ブロックの動きベクトルに基づいて予測ブロックをも決定し得る(2908)。さらに、ビデオエンコーダ20は、予測ブロックに基づいて、残差サンプル値を生成し得る(2910)。ビデオエンコーダ20は、本開示の他の場所で与えられる例のいずれかに従って、予測ブロックを決定し、残差サンプル値を生成し得る。
【0248】
[0258]
図30は、本開示の1つまたは複数の技法による、現在ブロックのためのMVP候補のリスト中に合成候補を含めるビデオデコーダ30の例示的な動作を示すフローチャートである。
図30の例では、ビデオデコーダ30は、ビデオデータの現在ピクチャの現在ブロックのためのMVP候補のリストを決定し得る(3000)。MVP候補のリストは、双予測MVP候補と合成単予測MVP候補とを含む。さらに、
図30の例では、および本開示の技法によれば、ビデオデコーダ30は、MVP候補のリストを決定することの一部として、双予測MVP候補によって指定された動きベクトルに基づいて合成単予測MVP候補を生成する(3002)。一例では、ビデオデコーダ30は、あらかじめ定義された順序に従って、利用可能な双予測MV候補を2つの別々の単予測候補にスプリットすることによって、合成単予測候補を生成する。この例では、ビデオデコーダ30は、次いで、作成された合成単予測候補を候補リストに挿入し得る。いくつかの例では、整数MVDまたは4ルーマサンプルMVDが有効化されるとき、ビデオデコーダ30は、利用可能なMV候補を整数MV候補または4ルーマサンプルMV候補に丸めるかまたは切り捨てることによって、合成整数MV候補または4ルーマサンプルMV候補を生成する。そのような例では、ビデオデコーダ30は、合成整数MV候補または4ルーマサンプルMV候補を候補リストに挿入する。
【0249】
[0259]
図30の例では、ビデオデコーダ30は、次いで、MVP候補のリスト中の選択されたMVP候補の動きベクトルに基づいて、現在ブロックのためのMVPを決定し得る(3004)。さらに、ビデオデコーダ30は、現在ブロックのためのMVPに基づいて、現在ブロックの動きベクトルを決定する(3006)。ビデオデコーダ30は、現在ブロックの動きベクトルに基づいて予測ブロックを決定し得る(3008)。さらに、ビデオデコーダ30は、予測ブロックに基づいて、現在ピクチャのサンプル値を再構築し得る(3010)。ビデオデコーダ30は、本開示の他の場所で与えられる例のいずれかに従って、MVP候補を選択し、動きベクトルを決定し、予測ブロックを決定し、現在ピクチャの値を再構築し得る。
【0250】
[0260]
図31は、本開示の技法による、ビデオデータを符号化するためのビデオエンコーダ20の例示的な動作を示すフローチャートである。
図31の例では、ビデオエンコーダ20は、ビデオデータの現在ピクチャの現在ブロックのためのMVP候補のリストを決定する(3100)。ビデオエンコーダ20は、本開示の他の場所で与えられる例のいずれかに従って、MVP候補のリストを決定し得る。さらに、本開示の技法によれば、ビデオエンコーダ20は、リスト中のMVP候補を整数解像度または4ルーマサンプル解像度に丸めるかまたは切り捨てることによって、合成MVP候補を決定する(3102)。ビデオエンコーダ20は、次いで、合成MVP候補をMVP候補のリストに挿入し得る(3104)。
【0251】
[0261]ビデオエンコーダ20は、次いで、MVP候補のリスト中の選択されたMVP候補の動きベクトルに基づいて、現在ブロックのための動きベクトル予測子(MVP)を決定し得る(3106)。たとえば、ビデオエンコーダ20は、現在ブロックのためのMVPを選択するためにレートひずみテストを使用し得る。さらに、ビデオエンコーダ20は、現在ブロックの動きベクトルを決定し得る(3108)。マージモードが使用される場合など、いくつかの例では、現在ブロックの動きベクトルはMVPの動きベクトルに等しい。AMVPが使用されるときなど、いくつかの例では、現在ブロックの動きベクトルは、MVPの動きベクトル+ビットストリーム中でシグナリングされたMVDに等しい。
【0252】
[0262]ビデオエンコーダ20は、現在ブロックの動きベクトルに基づいて予測ブロックを決定し得る(3110)。次に、ビデオエンコーダ20は、予測ブロックに基づいて、残差サンプル値を生成し得る(3112)。ビデオエンコーダ20は、本開示の他の場所で与えられる例のいずれかに従って、予測ブロックを決定し、残差サンプル値を生成し得る。
【0253】
[0263]
図32は、本開示の技法による、ビデオデータを復号するためのビデオデコーダ30の例示的な動作を示すフローチャートである。
図32の例では、ビデオデコーダ30は、ビデオデータの現在ピクチャの現在ブロックのためのMVP候補のリストを決定する(3200)。ビデオデコーダ30は、本開示の他の場所で与えられる例のいずれかに従って、MVP候補のリストを決定し得る。さらに、本開示の技法によれば、ビデオデコーダ30は、リスト中のMVP候補を整数解像度または4ルーマサンプル解像度に丸めるかまたは切り捨てることによって、合成MVP候補を決定し得る(3202)。ビデオデコーダ30は、次いで、合成MVP候補をMVP候補のリストに挿入し得る(3204)。
【0254】
[0264]その後、ビデオデコーダ30は、MVP候補のリスト中の選択されたMVP候補の動きベクトルに基づいて、現在ブロックのためのMVPを決定し得る(3206)。さらに、ビデオデコーダ30は、現在ブロックのためのMVPに基づいて、現在ブロックの動きベクトルを決定し得る(3208)。ビデオデコーダ30は、現在ブロックの動きベクトルに基づいて予測ブロックをも決定し得る(3210)。さらに、ビデオデコーダ30は、予測ブロックに基づいて、現在ピクチャのサンプル値を再構築し得る(3212)。ビデオデコーダ30は、本開示の他の場所で与えられる例のいずれかに従って、MVP候補を選択し、動きベクトルを決定し、予測ブロックを決定し、現在ピクチャの値を再構築し得る。
【0255】
[0265]
図33は、本開示の技法による、ビデオデータを符号化するためのビデオエンコーダ20の例示的な動作を示すフローチャートである。
図33の例では、ビデオエンコーダ20は、ビデオデータの現在ピクチャの現在ブロックのためのMVP候補のリストを決定し得る(3300)。概して、ビデオエンコーダ20は、本開示の他の場所で与えられる例のいずれかに従って、MVP候補のリストを決定し得る。ただし、本開示の技法によれば、MVP候補のリストは複数のTMVP候補を含む。MVP候補のリスト中の各それぞれのMVP候補は、それぞれの動きベクトルを指定する。複数のTMVP候補のそれぞれのTMVP候補は、1つまたは複数の参照ピクチャ(たとえば、単一の参照ピクチャ、複数の参照ピクチャなど)中の1つまたは複数のブロックの動きベクトルを指定する。
【0256】
[0266]いくつかの例では、複数のTMVP候補は、現在ピクチャ中のロケーション(たとえば、現在ブロックに隣接するロケーション、現在ブロックに隣接しないロケーション)とコロケートされた参照ブロックの動きベクトルを指定する2つまたはそれ以上のTMVP候補を含む。そのような例では、参照ブロックは、1つまたは複数の参照ピクチャのブロックである。
【0257】
[0267]いくつかの例では、ビデオエンコーダ20は、MVP候補のリストにプルーニングプロセスを適用する。たとえば、ビデオエンコーダ20は、MVP候補のリスト中の全部または一部の同等のMVP候補を削除するために、MVP候補のリストにプルーニングプロセスを適用し得る。
【0258】
[0268]さらに、
図33の例では、ビデオエンコーダ20は、MVP候補のリスト中の選択されたMVP候補の動きベクトルに基づいて、現在ブロックのためのMVPを決定し得る(3302)。たとえば、ビデオエンコーダ20は、現在ブロックのためのMVPを決定するためにレートひずみテストを使用し得る。ビデオエンコーダ20は、現在ブロックの動きベクトルをも決定し得る(3304)。マージモードが使用される場合など、いくつかの例では、現在ブロックの動きベクトルはMVPの動きベクトルに等しい。AMVPが使用されるときなど、いくつかの例では、現在ブロックの動きベクトルは、MVPの動きベクトル+ビットストリーム中でシグナリングされたMVDに等しい。
【0259】
[0269]さらに、ビデオエンコーダ20は、予測ブロックを決定するために現在ブロックの動きベクトルを使用し得る(3306)。さらに、ビデオエンコーダ20は、予測ブロックに基づいて、残差サンプル値を生成し得る(3308)。ビデオエンコーダ20は、本開示の他の場所で与えられる例のいずれかに従って、予測ブロックを決定し、残差サンプル値を生成し得る。
【0260】
[0270]
図34は、本開示の1つまたは複数の例による、ビデオデータを復号するためのビデオデコーダ30の例示的な動作を示すフローチャートである。
図34の例では、ビデオデコーダ30は、ビデオデータの現在ピクチャの現在ブロックのためのMVP候補のリストを決定し得る(3400)。概して、ビデオデコーダ30は、本開示の他の場所で与えられる例のいずれかに従って、MVP候補のリストを決定し得る。ただし、本開示の技法によれば、MVP候補のリストは複数のTMVP候補を含む。MVP候補のリスト中の各それぞれのMVP候補は、それぞれの動きベクトルを指定する。複数のTMVP候補のそれぞれのTMVP候補は、1つまたは複数の参照ピクチャ(たとえば、単一の参照ピクチャ、複数の参照ピクチャなど)中の1つまたは複数のブロックの動きベクトルを指定する。
【0261】
[0271]一例では、複数のTMVP候補は、現在ピクチャ中のロケーションとコロケートされた参照ブロックの動きベクトルを指定する2つまたはそれ以上のTMVP候補を含む。この例では、参照ブロックは、1つまたは複数の参照ピクチャ(たとえば、単一の参照ピクチャ、複数の参照ピクチャなど)のブロックである。この例のいくつかの事例では、ロケーションは現在ブロックに隣接する。この例のいくつかの事例では、ロケーションは現在ブロックに隣接しない。
【0262】
[0272]いくつかの例では、ビデオデコーダ30は、MVP候補のリストにプルーニングプロセスを適用し得る。たとえば、ビデオデコーダ30は、MVP候補のリスト中の全部または一部の同等のMVP候補を削除するために、MVP候補のリストにプルーニングプロセスを適用し得る。
【0263】
[0273]さらに、
図34の例では、ビデオデコーダ30は、MVP候補のリスト中の選択されたMVP候補の動きベクトルに基づいて、現在ブロックのためのMVPを決定し得る(3402)。ビデオデコーダ30は、現在ブロックのためのMVPに基づいて、現在ブロックの動きベクトルを決定し得る(3404)。さらに、ビデオデコーダ30は、現在ブロックの動きベクトルに基づいて予測ブロックを決定し得る(3406)。ビデオデコーダ30は、予測ブロックに基づいて、現在ピクチャのサンプル値を再構築し得る(3408)。ビデオデコーダ30は、本開示の他の場所で与えられる例のいずれかに従って、MVP候補を選択し、動きベクトルを決定し、予測ブロックを決定し、現在ピクチャの値を再構築し得る。
【0264】
[0274]
図35は、本開示の技法による、ビデオデータを符号化するためのビデオエンコーダ20の例示的な動作を示すフローチャートである。
図35の例では、ビデオエンコーダ20は、複数の最確モード(MPM)を決定し得る(3500)。複数のMPMの各それぞれのMPMは、それぞれのブロックのそれぞれのイントラ予測モードを指定する。
図35の例では、複数のMPMは、ビデオデータの現在ピクチャの隣接しないブロックのイントラ予測モードを指定する特定のMPMを含む。隣接しないブロックは、現在ピクチャの現在ブロックに隣接しない。いくつかの例では、隣接しないブロックは、現在ブロックの位置に対する隣接しないブロックの固定パターンを定義するテンプレート中のブロックである。他の例では、隣接しないブロックは、現在ブロックの特定の距離内にあるブロックである。隣接しないブロックは、本開示の他の場所で与えられる例のいずれかに従って決定され得る。
【0265】
[0275]いくつかの例では、複数のMPMを決定することの一部として、ビデオエンコーダ20は、MPMの順序付きリストを決定し得る。そのような例では、隣接しないブロックに基づくMPMは、イントラ予測モードが複数の隣接しないブロック中の隣接しないブロックによって指定される、頻度に従って、リスト中で順序付けられる。他の例では、隣接しないブロックに基づくMPMは、そのような頻度に従ってリスト中で順序付けられない。
【0266】
[0276]いくつかの例では、複数のMPMを決定するために、ビデオエンコーダ20は、現在ピクチャ中にあり、現在ブロックより前に符号化される各ブロックについての動き情報を指定するMPMを備えるグローバルMPMリストを決定し得る。そのような例では、ビデオエンコーダ20は、グローバル動きベクトル候補リスト中のMPMからMPMを決定し得る。いくつかの例では、ビデオエンコーダ20は、FIFOバッファに複数の隣接しないMPMを記憶し得る。そのような例では、複数の隣接しないMPMは、隣接しないブロックのイントラ予測モードを指定する隣接しないMPMを含む。さらに、そのような例では、ビデオエンコーダ20は、最も早期に追加された隣接しないMPMをFIFOバッファから削除するためにFIFOバッファを更新し得、FIFOバッファにMPMを追加し得る。複数のMPMは、FIFOバッファ中のMPMを含み得る。
【0267】
[0277]さらに、
図35の例では、ビデオエンコーダ20は、複数のMPMのうちのMPMによって指定されたイントラ予測モードに基づいて予測ブロックを生成し得る(3502)。さらに、ビデオエンコーダ20は、予測ブロックに基づいて、残差サンプル値を生成し得る(3504)。ビデオエンコーダ20は、本開示の他の場所で与えられる例のいずれかに従って、予測ブロックを決定し、残差サンプル値を生成し得る。
【0268】
[0278]
図36は、本開示の技法による、ビデオデータを復号するためのビデオデコーダ30の例示的な動作を示すフローチャートである。
図36の例では、ビデオデコーダ30は、複数のMPMを決定し得る(3600)。複数のMPMの各それぞれのMPMは、それぞれのブロックのそれぞれのイントラ予測モードを指定する。本開示の技法によれば、複数のMPMは、ビデオデータの現在ピクチャの隣接しないブロックのイントラ予測モードを指定する特定のMPMを含む。隣接しないブロックは、現在ピクチャの現在ブロックに隣接しない。いくつかの例では、隣接しないブロックは、現在ブロックの位置に対する隣接しないブロックの固定パターンを定義するテンプレート中のブロックである。他の例では、隣接しないブロックは、現在ブロックからの固定距離である。隣接しないブロックは、本開示の他の場所で与えられる例のいずれかに従って決定され得る。
【0269】
[0279]いくつかの例では、複数のMPMを決定することの一部として、ビデオデコーダ30は、MPMの順序付きリストを決定し得る。そのような例では、隣接しないブロックに基づくMPMは、イントラ予測モードが複数の隣接しないブロック中の隣接しないブロックによって指定される、頻度に従って、リスト中で順序付けられる。他の例では、隣接しないブロックに基づくMPMは、そのような頻度に従ってリスト中で順序付けられない。
【0270】
[0280]いくつかの例では、複数のMPMは、現在ピクチャ中にあり、現在ブロックより前に符号化される各ブロックについての動き情報を指定するMPMを備えるグローバルMPMリストである。そのような例では、ビデオデコーダ30は、グローバル動きベクトル候補リスト中のMPMからMPMを決定し得る。いくつかの例では、ビデオデコーダ30は、先入れ先出し(FIFO)バッファに複数の隣接しないMPMを記憶し得る。そのような例では、複数の隣接しないMPMは、隣接しないブロックのイントラ予測モードを指定する隣接しないMPMを含む。さらに、そのような例では、ビデオデコーダ30は、最も早期に追加された隣接しないMPMをFIFOバッファから削除するためにFIFOバッファを更新し得、FIFOバッファにMPMを追加する。複数のMPMは、FIFOバッファ中のMPMを含み得る。
【0271】
[0281]さらに、
図36の例では、ビデオデコーダ30は、複数のMPMのうちのMPMによって指定されたイントラ予測モードに基づいて予測ブロックを生成し得る(3602)。さらに、ビデオデコーダ30は、予測ブロックに基づいて、現在ピクチャのサンプル値を再構築し得る(3604)。ビデオデコーダ30は、本開示の他の場所で与えられる技法のいずれかに従って、予測ブロックを生成し、サンプル値を再構築し得る。
【0272】
[0282]本開示の技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH:dynamic adaptive streaming over HTTP)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。
【0273】
[0283]本開示では、「第1の」、「第2の」、「第3の」など、順序を示す用語は、必ずしも順序内の位置のインジケータであるとは限らず、むしろ、単に同じ物の異なるインスタンスを区別するために使用され得る。
【0274】
[0284]上記例に応じて、本明細書で説明された技法のいずれかのいくつかの行為またはイベントが、異なるシーケンスで実施され得、追加、マージ、または完全に除外され得る(たとえば、すべての説明された行為またはイベントが本技法の実施のために必要であるとは限らない)ことを認識されたい。その上、いくつかの例では、行為またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して同時に実施され得る。
【0275】
[0285]1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得るか、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、あるいは(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技法の実装のための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータまたは1つまたは複数の処理回路によってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【0276】
[0286]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD-ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、キャッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびBlu-rayディスク(disc)を含み、ここで、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【0277】
[0287]本開示で説明される機能は、固定機能および/またはプログラマブル処理回路によって実施され得る。たとえば、命令は、固定機能および/またはプログラマブル処理回路によって実行され得る。そのような処理回路は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、あるいは他の等価な集積回路またはディスクリート論理回路など、1つまたは複数のプロセッサを含み得る。したがって、本明細書で使用される「プロセッサ」という用語は、上記の構造、または本明細書で説明された技法の実装に好適な他の構造のいずれかを指すことがある。さらに、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用ハードウェアおよび/またはソフトウェアモジュール内に与えられるか、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素で十分に実装され得る。処理回路は、様々なやり方で他の構成要素に結合され得る。たとえば、処理回路は、内部デバイス相互接続、ワイヤードまたはワイヤレスネットワーク接続、あるいは別の通信媒体を介して他の構成要素に結合され得る。
【0278】
[0288]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示される技法を実施するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットが説明されたが、それらの構成要素、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上記で説明されたように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明された1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作可能なハードウェアユニットの集合によって与えられ得る。
【0279】
[0289]様々な例が説明された。これらおよび他の例は以下の特許請求の範囲内に入る。
以下に本願発明の当初の特許請求の範囲に記載された発明を付記する。
[C1]
ビデオデータを復号する方法であって、
ビデオデコーダによって、前記ビデオデータの現在ピクチャの隣接しないブロックの動きベクトルを決定することと、前記隣接しないブロックは、前記現在ピクチャの現在ブロックに隣接しない、
前記ビデオデコーダによって、前記隣接しないブロックの前記動きベクトルに基づいて、前記現在ブロックのための動きベクトル予測子(MVP)を決定することと、
前記ビデオデコーダによって、前記現在ブロックのための前記MVPに基づいて、前記現在ブロックの動きベクトルを決定することと、
前記ビデオデコーダによって、前記現在ブロックの前記動きベクトルに基づいて予測ブロックを決定することと、
前記ビデオデコーダによって、前記予測ブロックに基づいて、前記現在ピクチャのサンプル値を再構築することと、
を備える、方法。
[C2]
前記現在ブロックのための前記MVPを決定することは、
前記ビデオデコーダによって、前記隣接しないブロックの前記動きベクトルに部分的に基づいて、動きベクトル予測子(MVP)候補のリストを生成することと、ここにおいて、MVP候補の前記リストは、前記隣接しないブロックの前記動きベクトルを指定するMVP候補を含む、
前記ビデオデコーダによって、MVP候補の前記リスト中の前記MVP候補の中から、前記現在ブロックのための前記MVPを決定することと、
を備える、C1に記載の方法。
[C3]
前記隣接しないブロックは第1の隣接しないブロックであり、前記方法は、
前記ビデオデコーダによって、前記リスト中で複数の隣接しない空間MVP(NA-SMVP)候補を順序付けること、をさらに備え、
ここにおいて、前記複数のNA-SMVP候補の各それぞれのNA-SMVP候補について、前記それぞれのNA-SMVP候補は、複数の隣接しないブロックのそれぞれの隣接しないブロックに対応し、前記それぞれのNA-SMVPは、前記それぞれの隣接しないブロックの動きベクトルを指定し、
ここにおいて、前記複数の隣接しないブロックは前記第1の隣接しないブロックを含み、
ここにおいて、前記複数のNA-SMVP候補は、前記現在ブロックからの対応する隣接しないブロックの距離に従って前記リスト中で順序付けられる、
C2に記載の方法。
[C4]
前記隣接しないブロックは第1の隣接しないブロックであり、前記方法は、
前記ビデオデコーダによって、第1の複数の隣接しない空間MVP(NA-SMVP)候補を決定することと、
ここにおいて、前記第1の複数のNA-SMVP候補の各それぞれのNA-SMVP候補について、前記それぞれのNA-SMVP候補は、複数の隣接しないブロックのそれぞれの隣接しないブロックに対応し、前記それぞれのNA-SMVPは、前記それぞれの隣接しないブロックの前記動きベクトルを指定し、
ここにおいて、前記第1の複数の隣接しないブロックは前記第1の隣接しないブロックを含む、
前記ビデオデコーダによって、前記リスト中で第2の複数の隣接しない空間MVP(NA-SMVP)候補を順序付けることと、前記第2の複数のNA-SMVP候補は、前記第1の複数のNA-SMVP候補中の重複しないNA-SMVP候補を備え、
ここにおいて、前記第2の複数のNA-SMVP候補は、前記第2の複数のNA-SMVP候補中の前記NA-SMVP候補によって指定された動きベクトルが前記第1の複数のNA-SMVP候補中のNA-SMVP候補によって指定される、頻度に従って、前記リスト中で順序付けられる、
をさらに備える、C2に記載の方法。
[C5]
前記ビデオデコーダによって、前記リストにプルーニングプロセスを適用することをさらに備え、ここにおいて、前記プルーニングプロセスは前記現在ブロックのブロックサイズに適応可能である、C2に記載の方法。
[C6]
前記現在ブロックのための前記MVPはアフィンモードにある、C1に記載の方法。
[C7]
前記現在ブロックの前記動きベクトルを決定することは、
前記ビデオデコーダによって、前記現在ブロックの前記動きベクトルが前記現在ブロックのための前記MVPの動きベクトルを指定するように、前記現在ブロックの前記動きベクトルを決定すること、
を備える、C1に記載の方法。
[C8]
前記現在ブロックの前記動きベクトルを決定することは、
前記ビデオデコーダによって、前記現在ブロックの前記動きベクトルが前記現在ブロックのための前記MVPの動き情報の動きベクトル+動きベクトル差分(MVD)に等しくなるように、前記現在ブロックの前記動きベクトルを決定すること、
を備える、C1に記載の方法。
[C9]
前記隣接しないブロックは、前記現在ブロックの位置に対するブロックの固定パターンを定義するテンプレート中のブロックである、C1に記載の方法。
[C10]
前記ビデオデコーダによって、前記現在ピクチャ中にあり、前記現在ブロックより前に復号される各ブロックについての動きベクトルを指定するMVP候補を備えるグローバル動きベクトル候補リストを決定することと、
前記ビデオデコーダによって、前記グローバル動きベクトル候補リスト中のMVP候補から前記隣接しないブロックの前記動きベクトルを決定することと、
をさらに備える、C1に記載の方法。
[C11]
前記ビデオデコーダによって、先入れ先出し(FIFO)バッファに複数の隣接しないMVP候補を記憶することと、前記複数の隣接しないMVP候補は、前記隣接しないブロックの前記動きベクトルを指定する隣接しないMVP候補を含む、
前記ビデオデコーダによって、最も早期に追加された隣接しないMVP候補を前記FIFOバッファから削除するために前記FIFOバッファを更新し、前記FIFOバッファにMVP候補を追加することと、
をさらに備える、C1に記載の方法。
[C12]
前記ビデオデコーダによって、コーディングユニット(CU)レベルフレームレートアップコンバージョン(FRUC)動きベクトル候補のセットを決定することと、
前記ビデオデコーダによって、CUレベルFRUC動きベクトル候補の前記セットからCUレベルFRUC動きベクトル候補を選択することと、
前記ビデオデコーダによって、少なくとも部分的に、選択されたCUレベルFRUC動きベクトル候補から開始するローカル探索を実施することによって、CUレベル動きベクトルを決定することと、
前記ビデオデコーダによって、FRUCサブCUレベル動きベクトル候補のセットを用いてサブCUレベルにおいて前記CUレベル動きベクトルを改良することと、
をさらに備え、
CUレベルFRUC動きベクトル候補の前記セットおよびFRUCサブCUレベル動きベクトル候補の前記セットのうちの少なくとも1つは、前記隣接しないブロックの前記動きベクトルを指定する隣接しない空間動きベクトル予測子(NA-SMVP)を含む、
C1に記載の方法。
[C13]
前記隣接しないブロックの前記動きベクトルを決定することより前に、および前記隣接しないブロックと前記現在ブロックとの間の距離がしきい値距離よりも大きいことに基づいて、前記隣接しないブロックの位置を変更すること、
をさらに備える、C1に記載の方法。
[C14]
前記隣接しないブロックの前記位置を変更することは、前記隣接しないブロックの位置を、前記現在ピクチャ中のブロックの第2のグリッドよりも粗い前記現在ピクチャ中のブロックの第1のグリッド上の位置に丸めることを備える、C13に記載の方法。
[C15]
前記隣接しないブロックの前記位置を変更することは、前記隣接しないブロックの位置を前記距離しきい値にクリッピングすることを備える、C13に記載の方法。
[C16]
前記隣接しないブロックの前記動きベクトルを決定することより前に、および前記隣接しないブロックと現在コーディングツリーブロックとの間の距離がしきい値距離よりも大きいことに基づいて、前記隣接しないブロックの位置を変更することをさらに備え、前記現在コーディングツリーブロックは前記現在ブロックを含んでいる、
C1に記載の方法。
[C17]
ビデオデータを符号化する方法であって、
ビデオエンコーダによって、前記ビデオデータの現在ピクチャの隣接しないブロックの動きベクトルを決定することと、前記隣接しないブロックは、前記現在ピクチャの現在ブロックに隣接しない、
前記ビデオエンコーダによって、前記隣接しないブロックの前記動きベクトルに基づいて、前記現在ブロックのための動きベクトル予測子(MVP)を決定することと、
前記ビデオエンコーダによって、前記現在ブロックの動きベクトルを決定することと、ここにおいて、前記動きベクトルは、前記現在ブロックのための前記MVPの動きベクトルに等しいか、または、前記現在ブロックのための前記MVPの前記動きベクトル+ビットストリーム中でシグナリングされた動きベクトル差分(MVD)に等しい、
前記ビデオエンコーダによって、前記現在ブロックの前記動きベクトルに基づいて予測ブロックを決定することと、
前記ビデオエンコーダによって、前記予測ブロックに基づいて、残差サンプル値を生成することと、
を備える、方法。
[C18]
前記現在ブロックのための前記MVPを決定することは、
前記ビデオエンコーダによって、前記隣接しないブロックの前記動きベクトルに部分的に基づいて、動きベクトル予測子(MVP)候補のリストを生成することと、ここにおいて、MVP候補の前記リストは、前記隣接しないブロックの前記動きベクトルを指定するMVP候補を含む、
前記ビデオエンコーダによって、MVP候補の前記リスト中の前記MVP候補の中から、前記現在ブロックのための前記MVPを決定することと、
を備える、C17に記載の方法。
[C19]
前記隣接しないブロックは第1の隣接しないブロックであり、前記方法は、
前記ビデオエンコーダによって、前記リスト中で複数の隣接しない空間MVP(NA-SMVP)候補を順序付けること、をさらに備え、
ここにおいて、前記複数のNA-SMVP候補の各それぞれのNA-SMVP候補について、前記それぞれのNA-SMVP候補は、複数の隣接しないブロックのそれぞれの隣接しないブロックに対応し、前記それぞれのNA-SMVPは、前記それぞれの隣接しないブロックの動きベクトルを指定し、
ここにおいて、前記複数の隣接しないブロックは前記第1の隣接しないブロックを含み、
ここにおいて、前記複数のNA-SMVP候補は、前記現在ブロックからの対応する隣接しないブロックの距離に従って前記リスト中で順序付けられる、
C18に記載の方法。
[C20]
前記隣接しないブロックは第1の隣接しないブロックであり、前記方法は、
前記ビデオエンコーダによって、第1の複数の隣接しない空間MVP(NA-SMVP)候補を決定することと、
ここにおいて、前記第1の複数のNA-SMVP候補の各それぞれのNA-SMVP候補について、前記それぞれのNA-SMVP候補は、複数の隣接しないブロックのそれぞれの隣接しないブロックに対応し、前記それぞれのNA-SMVPは、前記それぞれの隣接しないブロックの動きベクトルを指定し、
ここにおいて、前記第1の複数の隣接しないブロックは前記第1の隣接しないブロックを含む、
前記ビデオエンコーダによって、前記リスト中に第2の複数の隣接しない空間MVP(NA-SMVP)候補を含めることと、前記第2の複数のNA-SMVP候補は、前記第1の複数のNA-SMVP候補中の重複しないNA-SMVP候補を備え、
ここにおいて、前記第2の複数のNA-SMVP候補は、前記第2の複数のNA-SMVP候補中の前記NA-SMVP候補によって指定された動きベクトルが前記第1の複数のNA-SMVP候補中のNA-SMVP候補によって指定される、頻度に従って、前記リスト中で順序付けられる、
をさらに備える、C18に記載の方法。
[C21]
前記ビデオエンコーダによって、前記リストにプルーニングプロセスを適用することをさらに備え、ここにおいて、前記プルーニングプロセスは前記現在ブロックのブロックサイズに適応可能である、C18に記載の方法。
[C22]
前記現在ブロックのための前記MVPはアフィンモードにある、C17に記載の方法。
[C23]
前記隣接しないブロックは、前記現在ブロックの位置に対するブロックの固定パターンを定義するテンプレート中のブロックである、C17に記載の方法。
[C24]
前記ビデオエンコーダによって、前記現在ピクチャ中にあり、前記現在ブロックより前に符号化される各ブロックについての動きベクトルを指定するMVP候補を備えるグローバル動きベクトル候補リストを決定することと、
前記ビデオエンコーダによって、前記グローバル動きベクトル候補リスト中のMVP候補から前記隣接しないブロックの前記動きベクトルを決定することと、
をさらに備える、C17に記載の方法。
[C25]
前記ビデオエンコーダによって、先入れ先出し(FIFO)バッファに複数の隣接しないMVP候補を記憶することと、前記複数の隣接しないMVP候補は、前記隣接しないブロックの前記動きベクトルを指定する隣接しないMVP候補を含む、
前記ビデオエンコーダによって、最も早期に追加された隣接しないMVP候補を前記FIFOバッファから削除するために前記FIFOバッファを更新し、前記FIFOバッファにMVP候補を追加することと、
をさらに備える、C17に記載の方法。
[C26]
前記ビデオエンコーダによって、コーディングユニット(CU)レベルフレームレートアップコンバージョン(FRUC)動きベクトル候補のセットを決定することと、
前記ビデオエンコーダによって、CUレベルFRUC動きベクトル候補の前記セットからCUレベルFRUC動きベクトル候補を選択することと、
前記ビデオエンコーダによって、少なくとも部分的に、選択されたCUレベルFRUC動きベクトル候補から開始するローカル探索を実施することによって、CUレベル動きベクトルを決定することと、
前記ビデオエンコーダによって、FRUCサブCUレベル動きベクトル候補のセットを用いてサブCUレベルにおいて前記CUレベル動きベクトルを改良することと、
をさらに備え、
CUレベルFRUC動きベクトル候補の前記セットおよびFRUCサブCUレベル動きベクトル候補の前記セットのうちの少なくとも1つは、前記隣接しないブロックの前記動きベクトルを指定する隣接しない空間動きベクトル予測子(NA-SMVP)を含む、
C17に記載の方法。
[C27]
前記隣接しないブロックの前記動きベクトルを決定することより前に、および前記隣接しないブロックと前記現在ブロックとの間の距離がしきい値距離よりも大きいことに基づいて、前記隣接しないブロックの位置を変更すること、
をさらに備える、C17に記載の方法。
[C28]
前記隣接しないブロックの前記位置を変更することは、前記隣接しないブロックの位置を、前記現在ピクチャ中のブロックの第2のグリッドよりも粗い前記現在ピクチャ中のブロックの第1のグリッド上の位置に丸めることを備える、C27に記載の方法。
[C29]
前記隣接しないブロックの前記位置を変更することは、前記隣接しないブロックの位置を前記距離しきい値にクリッピングすることを備える、C27に記載の方法。
[C30]
前記隣接しないブロックの前記動きベクトルを決定することより前に、および前記隣接しないブロックと現在コーディングツリーブロックとの間の距離がしきい値距離よりも大きいことに基づいて、前記隣接しないブロックの位置を変更することをさらに備え、前記現在コーディングツリーブロックは前記現在ブロックを含んでいる、
C17に記載の方法。
[C31]
ビデオデータを復号するための装置であって、
ビデオデータを記憶するように構成された1つまたは複数の記憶媒体と、
1つまたは複数のプロセッサと、
を備え、前記1つまたは複数のプロセッサは、
前記ビデオデータの現在ピクチャの隣接しないブロックの動きベクトルを決定することと、前記隣接しないブロックは、前記現在ピクチャの現在ブロックに隣接しない、
前記隣接しないブロックの前記動きベクトルに基づいて、前記現在ブロックのための動きベクトル予測子(MVP)を決定することと、
前記現在ブロックのための前記MVPに基づいて、前記現在ブロックの動きベクトルを決定することと、
前記現在ブロックの前記動きベクトルに基づいて予測ブロックを決定することと、
前記予測ブロックに基づいて、前記現在ピクチャのサンプル値を再構築することと、
を行うように構成された、装置。
[C32]
前記1つまたは複数のプロセッサは、前記現在ブロックのための前記MVPを決定することの一部として、前記1つまたは複数のプロセッサが、
前記隣接しないブロックの前記動きベクトルに部分的に基づいて、動きベクトル予測子(MVP)候補のリストを生成することと、ここにおいて、MVP候補の前記リストは、前記隣接しないブロックの前記動きベクトルを指定するMVP候補を含む、
MVP候補の前記リスト中の前記MVP候補の中から、前記現在ブロックのための前記MVPを決定することと、
を行うように構成された、C31に記載の装置。
[C33]
前記隣接しないブロックは第1の隣接しないブロックであり、前記1つまたは複数のプロセッサは、
前記リスト中で複数の隣接しない空間MVP(NA-SMVP)候補を順序付けるようにさらに構成され、
ここにおいて、前記複数のNA-SMVP候補の各それぞれのNA-SMVP候補について、前記それぞれのNA-SMVP候補は、複数の隣接しないブロックのそれぞれの隣接しないブロックに対応し、前記それぞれのNA-SMVPは、前記それぞれの隣接しないブロックの動きベクトルを指定し、
ここにおいて、前記複数の隣接しないブロックは前記第1の隣接しないブロックを含み、
ここにおいて、前記複数のNA-SMVP候補は、前記現在ブロックからの対応する隣接しないブロックの距離に従って前記リスト中で順序付けられる、
C32に記載の装置。
[C34]
前記隣接しないブロックは第1の隣接しないブロックであり、前記1つまたは複数のプロセッサは、
第1の複数の隣接しない空間MVP(NA-SMVP)候補を決定することと、
ここにおいて、前記第1の複数のNA-SMVP候補の各それぞれのNA-SMVP候補について、前記それぞれのNA-SMVP候補は、複数の隣接しないブロックのそれぞれの隣接しないブロックに対応し、前記それぞれのNA-SMVPは、前記それぞれの隣接しないブロックの前記動きベクトルを指定し、
ここにおいて、前記第1の複数の隣接しないブロックは前記第1の隣接しないブロックを含む、
前記リスト中で第2の複数の隣接しない空間MVP(NA-SMVP)候補を順序付けることと、前記第2の複数のNA-SMVP候補は、前記第1の複数のNA-SMVP候補中の重複しないNA-SMVP候補を備え、
ここにおいて、前記第2の複数のNA-SMVP候補は、前記第2の複数のNA-SMVP候補中の前記NA-SMVP候補によって指定された動きベクトルが前記第1の複数のNA-SMVP候補中のNA-SMVP候補によって指定される、頻度に従って、前記リスト中で順序付けられる、
を行うようにさらに構成された、C32に記載の装置。
[C35]
前記1つまたは複数のプロセッサは、前記リストにプルーニングプロセスを適用するようにさらに構成され、ここにおいて、前記プルーニングプロセスは前記現在ブロックのブロックサイズに適応可能である、C32に記載の装置。
[C36]
前記現在ブロックのための前記MVPはアフィンモードにある、C31に記載の装置。
[C37]
前記1つまたは複数のプロセッサは、前記現在ブロックの前記動きベクトルを決定することの一部として、前記1つまたは複数のプロセッサが、
前記現在ブロックの前記動きベクトルが前記現在ブロックのための前記MVP候補の動きベクトルを指定するように、前記現在ブロックの前記動きベクトルを決定する、
ように構成された、C31に記載の装置。
[C38]
前記1つまたは複数のプロセッサは、前記現在ブロックの前記動きベクトルを決定することの一部として、前記1つまたは複数のプロセッサが、
前記現在ブロックの前記動きベクトルが前記現在ブロックのための前記MVPの動き情報の動きベクトルに等しくなるように、前記現在ブロックの前記動きベクトルを決定する
ように構成された、C31に記載の装置。
[C39]
前記隣接しないブロックは、前記現在ブロックの位置に対するブロックの固定パターンを定義するテンプレート中のブロックである、C31に記載の装置。
[C40]
前記1つまたは複数のプロセッサは、
前記現在ピクチャ中にあり、前記現在ブロックより前に復号される各ブロックについての動きベクトルを指定するMVP候補を備えるグローバル動きベクトル候補リストを決定することと、
前記グローバル動きベクトル候補リスト中のMVP候補から前記隣接しないブロックの前記動きベクトルを決定することと、
を行うようにさらに構成された、C31に記載の装置。
[C41]
前記1つまたは複数のプロセッサは、
先入れ先出し(FIFO)バッファに複数の隣接しないMVP候補を記憶することと、前記複数の隣接しないMVP候補は、前記隣接しないブロックの前記動きベクトルを指定する隣接しないMVP候補を含む、
最も早期に追加された隣接しないMVP候補を前記FIFOバッファから削除するために前記FIFOバッファを更新し、前記FIFOバッファにMVP候補を追加することと、
を行うようにさらに構成された、C31に記載の装置。
[C42]
前記1つまたは複数のプロセッサは、
コーディングユニット(CU)レベルフレームレートアップコンバージョン(FRUC)動きベクトル候補のセットを決定することと、
CUレベルFRUC動きベクトル候補の前記セットからCUレベルFRUC動きベクトル候補を選択することと、
少なくとも部分的に、選択されたCUレベルFRUC動きベクトル候補から開始するローカル探索を実施することによって、CUレベル動きベクトルを決定することと、
FRUCサブCUレベル動きベクトル候補のセットを用いてサブCUレベルにおいて前記CUレベル動きベクトルを改良することと、
を行うようにさらに構成され、
CUレベルFRUC動きベクトル候補の前記セットおよびFRUCサブCUレベル動きベクトル候補の前記セットのうちの少なくとも1つは、前記隣接しないブロックの前記動きベクトルを指定する隣接しない空間動きベクトル予測子(NA-SMVP)を含む、
C31に記載の装置。
[C43]
前記1つまたは複数のプロセッサは、
前記隣接しないブロックの前記動きベクトルを決定することより前に、および前記隣接しないブロックと前記現在ブロックとの間の距離がしきい値距離よりも大きいことに基づいて、前記隣接しないブロックの位置を変更する、
ように構成された、C31に記載の装置。
[C44]
前記1つまたは複数のプロセッサは、前記隣接しないブロックの前記位置を変更することの一部として、前記1つまたは複数のプロセッサが、前記隣接しないブロックの位置を、前記現在ピクチャ中のブロックの第2のグリッドよりも粗い前記現在ピクチャ中のブロックの第1のグリッド上の位置に丸めるように構成された、C43に記載の装置。
[C45]
前記1つまたは複数のプロセッサは、前記隣接しないブロックの前記位置を変更することの一部として、前記1つまたは複数のプロセッサが、前記隣接しないブロックの位置を前記距離しきい値にクリッピングするように構成された、C43に記載の装置。
[C46]
前記1つまたは複数のプロセッサは、
前記隣接しないブロックの前記動きベクトルを決定することより前に、および前記隣接しないブロックと現在コーディングツリーブロックとの間の距離がしきい値距離よりも大きいことに基づいて、前記隣接しないブロックの位置を変更するように構成され、前記現在コーディングツリーブロックは前記現在ブロックを含んでいる、
C31に記載の装置。
[C47]
前記装置は、
集積回路、
マイクロプロセッサ、または
ワイヤレス通信デバイス
を備える、C31に記載の装置。
[C48]
ビデオデータを符号化するための装置であって、
ビデオデータを記憶するように構成された1つまたは複数の記憶媒体と、
1つまたは複数のプロセッサと、
を備え、前記1つまたは複数のプロセッサは、
前記ビデオデータの現在ピクチャの隣接しないブロックの動きベクトルを決定することと、前記隣接しないブロックは、前記現在ピクチャの現在ブロックに隣接しない、
前記隣接しないブロックの前記動きベクトルに基づいて、前記現在ブロックのための動きベクトル予測子(MVP)を決定することと、
前記現在ブロックの動きベクトルを決定することと、ここにおいて、前記動きベクトルは、前記現在ブロックのための前記MVPの動きベクトルに等しいか、または、前記現在ブロックのための前記MVPの前記動きベクトル+ビットストリーム中でシグナリングされた動きベクトル差分(MVD)に等しい、
前記現在ブロックの前記動きベクトルに基づいて予測ブロックを決定することと、
前記予測ブロックに基づいて、残差サンプル値を生成することと、
を行うように構成された、装置。
[C49]
前記1つまたは複数のプロセッサは、前記現在ブロックのための前記MVPを決定することの一部として、前記1つまたは複数のプロセッサが、
前記隣接しないブロックの前記動きベクトルに部分的に基づいて、動きベクトル予測子(MVP)候補のリストを生成することと、ここにおいて、MVP候補の前記リストは、前記隣接しないブロックの前記動きベクトルを指定するMVP候補を含む、
MVP候補の前記リスト中の前記MVP候補の中から、前記現在ブロックのための前記MVPを決定することと、
を行うように構成された、C48に記載の装置。
[C50]
前記隣接しないブロックは第1の隣接しないブロックであり、前記1つまたは複数のプロセッサは、
前記リスト中で複数の隣接しない空間MVP(NA-SMVP)候補を順序付けるようにさらに構成され、
ここにおいて、前記複数のNA-SMVP候補の各それぞれのNA-SMVP候補について、前記それぞれのNA-SMVP候補は、複数の隣接しないブロックのそれぞれの隣接しないブロックに対応し、前記それぞれのNA-SMVPは、前記それぞれの隣接しないブロックの動きベクトルを指定し、
ここにおいて、前記複数の隣接しないブロックは前記第1の隣接しないブロックを含み、
ここにおいて、前記複数のNA-SMVP候補は、前記現在ブロックからの対応する隣接しないブロックの距離に従って前記リスト中で順序付けられる、
C49に記載の装置。
[C51]
前記隣接しないブロックは第1の隣接しないブロックであり、前記1つまたは複数のプロセッサは、
第1の複数の隣接しない空間MVP(NA-SMVP)候補を決定することと、
ここにおいて、前記第1の複数のNA-SMVP候補の各それぞれのNA-SMVP候補について、前記それぞれのNA-SMVP候補は、複数の隣接しないブロックのそれぞれの隣接しないブロックに対応し、前記それぞれのNA-SMVPは、前記それぞれの隣接しないブロックの動きベクトルを指定し、
ここにおいて、前記第1の複数の隣接しないブロックは前記第1の隣接しないブロックを含む、
前記リスト中に第2の複数の隣接しない空間MVP(NA-SMVP)候補を含めることと、前記第2の複数のNA-SMVP候補は、前記第1の複数のNA-SMVP候補中の重複しないNA-SMVP候補を備え、
ここにおいて、前記第2の複数のNA-SMVP候補は、前記第2の複数のNA-SMVP候補中の前記NA-SMVP候補によって指定された動きベクトルが前記第1の複数のNA-SMVP候補中のNA-SMVP候補によって指定される、頻度に従って、前記リスト中で順序付けられる、
を行うようにさらに構成された、C50に記載の装置。
[C52]
前記1つまたは複数のプロセッサは、前記リストにプルーニングプロセスを適用するようにさらに構成され、ここにおいて、前記プルーニングプロセスは前記現在ブロックのブロックサイズに適応可能である、C49に記載の装置。
[C53]
前記現在ブロックのための前記MVPはアフィンモードにある、C48に記載の装置。
[C54]
前記隣接しないブロックは、前記現在ブロックの位置に対するブロックの固定パターンを定義するテンプレート中のブロックである、C48に記載の装置。
[C55]
前記1つまたは複数のプロセッサは、
前記現在ピクチャ中にあり、前記現在ブロックより前に符号化される各ブロックについての動きベクトルを指定するMVP候補を備えるグローバル動きベクトル候補リストを決定することと、
前記グローバル動きベクトル候補リスト中のMVP候補から前記隣接しないブロックの前記動きベクトルを決定することと、
を行うようにさらに構成された、C48に記載の装置。
[C56]
前記1つまたは複数のプロセッサは、
先入れ先出し(FIFO)バッファに複数の隣接しないMVP候補を記憶することと、前記複数の隣接しないMVP候補は、前記隣接しないブロックの前記動きベクトルを指定する隣接しないMVP候補を含む、
最も早期に追加された隣接しないMVP候補を前記FIFOバッファから削除するために前記FIFOバッファを更新し、前記FIFOバッファにMVP候補を追加することと、
を行うようにさらに構成された、C48に記載の装置。
[C57]
前記1つまたは複数のプロセッサは、
コーディングユニット(CU)レベルフレームレートアップコンバージョン(FRUC)動きベクトル候補のセットを決定することと、
CUレベルFRUC動きベクトル候補の前記セットからCUレベルFRUC動きベクトル候補を選択することと、
少なくとも部分的に、選択されたCUレベルFRUC動きベクトル候補から開始するローカル探索を実施することによって、CUレベル動きベクトルを決定することと、
FRUCサブCUレベル動きベクトル候補のセットを用いてサブCUレベルにおいて前記CUレベル動きベクトルを改良することと、
を行うようにさらに構成され、
CUレベルFRUC動きベクトル候補の前記セットおよびFRUCサブCUレベル動きベクトル候補の前記セットのうちの少なくとも1つは、前記隣接しないブロックの前記動きベクトルを指定する隣接しない空間動きベクトル予測子(NA-SMVP)を含む、
C48に記載の装置。
[C58]
前記1つまたは複数のプロセッサは、
前記隣接しないブロックの前記動きベクトルを決定することより前に、および前記隣接しないブロックと前記現在ブロックとの間の距離がしきい値距離よりも大きいことに基づいて、前記隣接しないブロックの位置を変更する、
ように構成された、C48に記載の装置。
[C59]
前記1つまたは複数のプロセッサは、前記隣接しないブロックの前記位置を変更することの一部として、前記1つまたは複数のプロセッサが、前記隣接しないブロックの位置を、前記現在ピクチャ中のブロックの第2のグリッドよりも粗い前記現在ピクチャ中のブロックの第1のグリッド上の位置に丸めるように構成された、C58に記載の装置。
[C60]
前記1つまたは複数のプロセッサは、前記隣接しないブロックの前記位置を変更することの一部として、前記1つまたは複数のプロセッサが、前記隣接しないブロックの位置を前記距離しきい値にクリッピングするように構成された、C58に記載の装置。
[C61]
前記1つまたは複数のプロセッサは、
前記隣接しないブロックの前記動きベクトルを決定することより前に、および前記隣接しないブロックと現在コーディングツリーブロックとの間の距離がしきい値距離よりも大きいことに基づいて、前記隣接しないブロックの位置を変更するように構成され、前記現在コーディングツリーブロックは前記現在ブロックを含んでいる、C48に記載の装置。
[C62]
前記装置は、
集積回路、
マイクロプロセッサ、または
ワイヤレス通信デバイス
を備える、C48に記載の装置。
[C63]
ビデオデータを復号するための装置であって、
前記ビデオデータの現在ピクチャの隣接しないブロックの動きベクトルを決定するための手段と、前記隣接しないブロックは、前記現在ピクチャの現在ブロックに隣接しない、
前記隣接しないブロックの前記動きベクトルに基づいて、前記現在ブロックのための動きベクトル予測子(MVP)を決定するための手段と、
前記現在ブロックのための前記MVPに基づいて、前記現在ブロックの動きベクトルを決定するための手段と、
前記現在ブロックの前記動きベクトルに基づいて予測ブロックを決定するための手段と、
前記予測ブロックに基づいて、前記現在ピクチャのサンプル値を再構築するための手段と、
を備える、装置。
[C64]
ビデオデータを符号化するための装置であって、
前記ビデオデータの現在ピクチャの隣接しないブロックの動きベクトルを決定するための手段と、前記隣接しないブロックは、前記現在ピクチャの現在ブロックに隣接しない、
前記隣接しないブロックの前記動きベクトルに基づいて、前記現在ブロックのための動きベクトル予測子(MVP)を決定するための手段と、
前記現在ブロックの動きベクトルを決定するための手段と、ここにおいて、前記動きベクトルは、前記現在ブロックのための前記MVPの動きベクトルに等しいか、または、前記現在ブロックのための前記MVPの前記動きベクトル+ビットストリーム中でシグナリングされた動きベクトル差分(MVD)に等しい、
前記現在ブロックの前記動きベクトルに基づいて予測ブロックを決定するための手段と、
前記予測ブロックに基づいて、残差サンプル値を生成するための手段と、
を備える、装置。
[C65]
実行されたとき、1つまたは複数のプロセッサに、
ビデオデータの現在ピクチャの隣接しないブロックの動きベクトルを決定することと、前記隣接しないブロックは、前記現在ピクチャの現在ブロックに隣接しない、
前記隣接しないブロックの前記動きベクトルに基づいて、前記現在ブロックのための動きベクトル予測子(MVP)を決定することと、
前記現在ブロックのための前記MVPに基づいて、前記現在ブロックの動きベクトルを決定することと、
前記現在ブロックの前記動きベクトルに基づいて予測ブロックを決定することと、
前記予測ブロックに基づいて、前記現在ピクチャのサンプル値を再構築することと、
を行わせる命令を記憶するコンピュータ可読記憶媒体。
[C66]
実行されたとき、1つまたは複数のプロセッサに、
ビデオデータの現在ピクチャの隣接しないブロックの動きベクトルを決定することと、前記隣接しないブロックは、前記現在ピクチャの現在ブロックに隣接しない、
前記隣接しないブロックの前記動きベクトルに基づいて、前記現在ブロックのための動きベクトル予測子(MVP)を決定することと、
前記現在ブロックの動きベクトルを決定することと、ここにおいて、前記動きベクトルは、前記現在ブロックのための前記MVPの動きベクトルに等しいか、または、前記現在ブロックのための前記MVPの前記動きベクトル+ビットストリーム中でシグナリングされた動きベクトル差分(MVD)に等しい、
前記現在ブロックの前記動きベクトルに基づいて予測ブロックを決定することと、
前記予測ブロックに基づいて、残差サンプル値を生成することと、
を行わせる命令を記憶するコンピュータ可読記憶媒体。