(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-13
(45)【発行日】2023-10-23
(54)【発明の名称】履歴ベースの動きベクトル予測の簡略化
(51)【国際特許分類】
H04N 19/52 20140101AFI20231016BHJP
【FI】
H04N19/52
(21)【出願番号】P 2021527072
(86)(22)【出願日】2019-11-27
(86)【国際出願番号】 US2019063674
(87)【国際公開番号】W WO2020113052
(87)【国際公開日】2020-06-04
【審査請求日】2022-10-28
(32)【優先日】2018-11-27
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-11-26
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】595020643
【氏名又は名称】クゥアルコム・インコーポレイテッド
【氏名又は名称原語表記】QUALCOMM INCORPORATED
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(74)【代理人】
【識別番号】100108855
【氏名又は名称】蔵田 昌俊
(74)【代理人】
【識別番号】100158805
【氏名又は名称】井関 守三
(74)【代理人】
【識別番号】100112807
【氏名又は名称】岡田 貴志
(72)【発明者】
【氏名】ハン、ユ
(72)【発明者】
【氏名】チェン、ウェイ-ジュン
(72)【発明者】
【氏名】ファン、ハン
(72)【発明者】
【氏名】カルチェビチ、マルタ
【審査官】岩井 健二
(56)【参考文献】
【文献】国際公開第2020/003275(WO,A1)
【文献】国際公開第2020/065517(WO,A1)
【文献】Li Zhang, et al.,CE4: History-based Motion Vector Prediction (Test 4.4.7),Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-L0266-v2,12th Meeting: Macao, CN,2018年10月,pp.1-6
【文献】Jie Zhao, Seethal Paluri, and Seung Hwan Kim,CE4-related: Simplification to History Based Motion Vector Prediction,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-L0309,12th Meeting: Macao, CN,2018年10月,pp.1-5
【文献】Wei-Jung Chien, et al.,CE4-related: Modification on History-based Mode Vector Prediction,Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-L0401,12th Meeting: Macao, CN,2018年10月,pp.1-5
【文献】Weiwei Xu, et al.,CE4-related: Constraint of Pruning in History-based Motion Vector Prediction,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-L0448-v2,12th Meeting: Macao, CN,2018年10月,pp.1-4
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00 - 19/98
(57)【特許請求の範囲】
【請求項1】
ビデオデータを
デコーディングする方法
であって、
前記ビデオデータの現在ブロックの近接する隣接ブロックを越えて延在する以前にコード化されたブロックの動きベクトル情報を含む履歴ベース動きベクトル予測(HMVP)候補履歴テーブルを構築することと、
動きベクトル予測子リストを構築することと、
前記HMVP候補履歴テーブルからの1つ以上のHMVP候補を前記動きベクトル予測子リストに追加することと、
ここにおいて、前記HMVP候補履歴テーブルからの前記1つ以上のHMVP候補を追加することは、
前記HMVP候補履歴テーブル中の第1のHMVP候補を前記動きベクトル予測子リスト中の2つのエントリと比較し、前記動きベクトル予測子リスト中の他のエントリとは比較しないことと、
前記第1のHMVP候補が前記動きベクトル予測子リスト中の前記2つのエントリの両方と異なるとき、前記第1のHMVP候補を前記動きベクトル予測子リストに追加することと、を備える、
前記動きベクトル予測子リストを使用して、ビデオデータの
前記現在ブロックを
デコーディングすること
と、
を備え、
前記動きベクトル予測子リスト中の前記2つのエントリは、前記現在ブロックの左隣接ブロックに対する第1のエントリと、前記現在ブロックの上隣接ブロックに対する第2のエントリとを備えることを特徴とする、方法。
【請求項2】
前記1つ以上のHMVP候補を追加することは、
前記HMVP候補履歴テーブル中の第2のHMVP候補を前記動きベクトル予測子リスト中の前記2つのエントリと比較し、前記動きベクトル予測子リスト中の他のエントリとは比較しないことと、
前記第2のHMVP候補が前記動きベクトル予測子リスト中の前記2つのエントリの両方と異なるとき、前記第2のHMVP候補を前記動きベクトル予測子リストに追加することと
、をさらに
備える、または、
前記1つ以上のHMVP候補を前記追加することは、マージモード、高度動きベクトル予測(AMVP)モード、または、イントラブロックコピー(IBC)マージモードのうちの1つにおいてコード化されている前記現在ブロックに対する前記1つ以上のHMVP候補を追加すること、を備える、請求項1記載の方法。
【請求項3】
前記1つ以上のHMVP候補を追加することは、1つ以上のHMVP候補の第1のサブセットを追加することを
備え、
前記方法は、
前記HMVP候補履歴テーブル中の1つ以上のHMVP候補の前記第1のサブセットに続く1つ以上のHMVP候補の第2のサブセットからの1つ以上のHMVP候補を
、前記動きベクトル予測子リスト中のエントリと
前記第2のサブセットからの前記1つ以上のHMVP候補とを比較することなく
、前記動きベクトル予測子リストに追加すること
、をさらに
備える、
請求項1記載の方法。
【請求項4】
前記動きベクトル予測子リストを構築することは、1つ以上の空間的に隣接するブロックまたはコロケートされたブロックの動き情報により、前記動きベクトル予測子リストを構築すること
、を備える、請求項1記載の方法。
【請求項5】
前記現在ブロックをデコーディングすることは、
前記動きベクトル予測子リストのエントリから動きベクトル情報を取り出すことと、
前記取り出された動きベクトル情報に基づいて、前記現在ブロックに対する動きベクトルを決定することと、
前記動きベクトルに基づいて、予測ブロックを決定することと、
前記現在ブロックを再構築するために、前記予測ブロックと前記現在ブロックとの間の差分を示す受信された残差情報に前記予測ブロックを追加す
ることと、
を備える、請求項1記載の方法。
【請求項6】
ビデオデータを
デコーディングするデバイス
であって、
メモリと、処理回路と、を備え、
前記メモリは、
前記ビデオデータの現在ブロックの近接する隣接ブロックを越えて延在する以前にコード化されたブロックの動きベクトル情報を含む履歴ベース動きベクトル予測(HMVP)候補履歴テーブルと、
動きベクトル予測子リストと、
を記憶するように構成
され、
前記処理回路は、
前記メモリ中に記憶させるため
の前記HMVP候補履歴テーブルを構築する
ことと、
前記メモリ中に記憶させるため
の前記動きベクトル予測子リストを構築する
ことと、
前記HMVP候補履歴テーブルからの1つ以上のHMVP候補を前記動きベクトル予測子リストに追加する
ことと、
前記メモリ中に記憶されている前記動きベクトル予測子リストを使用して、
ビデオデータの
前記現
在ブロックを
デコーディングする
ことと、
を行うように構成さ
れ、
ここにおいて、前記HMVP候補履歴テーブルからの1つ以上のHMVP候補を追加するために、前記処理回路は、
前記HMVP候補履歴テーブル中の第1のHMVP候補を前記動きベクトル予測子リスト中の2つのエントリと比較し、前記動きベクトル予測子リスト中の他のエントリとは比較しないことと、
前記第1のHMVP候補が前記動きベクトル予測子リスト中の前記2つのエントリの両方と異なるとき、前記第1のHMVP候補を前記動きベクトル予測子リストに追加することと、を行うように構成され、
前記動きベクトル予測子リスト中の前記2つのエントリは、前記現在ブロックの左隣接ブロックに対する第1のエントリと、前記現在ブロックの上隣接ブロックに対する第2のエントリとを備えることを特徴とする、デバイス。
【請求項7】
前記1つ以上のHMVP候補を追加するために、前記処理回路は、
前記HMVP候補履歴テーブル中の第2のHMVP候補を前記動きベクトル予測子リスト中の前記2つのエントリと比較し、前記動きベクトル予測子リスト中の他のエントリとは比較しない
ことと、
前記第2のHMVP候補が前記動きベクトル予測子リスト中の前記2つのエントリの両方と異なるとき、前記第2のHMVP候補を前記動きベクトル予測子リストに追加する
ことと、を行うように構成されている
、または、
前記1つ以上のHMVP候補を追加するために、前記処理回路は、マージモード、高度動きベクトル予測(AMVP)モード、または、イントラブロックコピー(IBC)マージモードのうちの1つにおいてコード化されている前記現在ブロックに対する前記1つ以上のHMVP候補を追加すること、を行うように構成されている、
請求項
6記載のデバイス。
【請求項8】
前記1つ以上のHMVP候補を追加するために、前記処理回路は、1つ以上のHMVP候補の第1のサブセットを追加するように構成され、
前記処理回路は、
前記HMVP候補履歴テーブル中の1つ以上のHMVP候補の前記第1のサブセットに続く1つ以上のHMVP候補の第2のサブセットからの1つ以上のHMVP候補を
、前記動きベクトル予測子リスト中のエントリと
前記第2のサブセットからの1つ以上のHMVP候補を比較することなく
、前記動きベクトル予測子リストに追加するように
さらに構成されている、
請求項
6記載のデバイス。
【請求項9】
前記動きベクトル予測子リストを構築するために、前記処理回路は、1つ以上の空間的に隣接するブロックまたはコロケートされたブロックの動き情報により、前記動きベクトル予測子リストを構築するように構成されている請求項
6記載のデバイス。
【請求項10】
前記現在ブロックをデコーディングするために、前記処理回路は、
前記動きベクトル予測子リストのエントリから動きベクトル情報を取り出す
ことと、
前記取り出された動きベクトル情報に基づいて、前記現在ブロックに対する動きベクトルを決定する
ことと、
前記動きベクトルに基づいて、予測ブロックを決定する
ことと、
前記現在ブロックを再構築するために、前記予測ブロックと前記現在ブロックとの間の差分を示す受信された残差情報に前記予測ブロックを追加す
ることと、
を行うように構成されている
、請求項
6記載のデバイス。
【請求項11】
前記デバイスは、ワイヤレス通信デバイスである請求項
6記載のデバイス。
【請求項12】
命令を記憶する非一時的コンピュータ読取可能記憶媒体
であって、前記命令は、実行される
と、1つ以上のプロセッサに、
ビデオデータの現在ブロックの近接する隣接ブロックを越えて延在する以前にコード化されたブロックの動きベクトル情報を含む履歴ベース動きベクトル予測(HMVP)候補履歴テーブルを構築
することと、
動きベクトル予測子リストを構築
することと、
前記HMVP候補履歴テーブルからの1つ以上のHMVP候補を前記動きベクトル予測子リストに追加
することと、
前記動きベクトル予測子リストを使用して
、ビデオデータの
前記現在ブロックを
デコーディングすることと、
を行わせ、
ここにおいて、前記1つ以上のプロセッサに、前記HMVP候補履歴テーブルからの1つ以上のHMVP候補を追加させる前記命令は、前記1つ以上のプロセッサに、
前記HMVP候補履歴テーブル中の第1のHMVP候補を前記動きベクトル予測子リスト中の2つのエントリと比較し、前記動きベクトル予測子リスト中の他のエントリとは比較しないことと、
前記第1のHMVP候補が前記動きベクトル予測子リスト中の前記2つのエントリの両方と異なるとき、前記第1のHMVP候補を前記動きベクトル予測子リストに追加することと、
を行わせる命令を備え、
前記動きベクトル予測子リスト中の前記2つのエントリは、前記現在ブロックの左隣接ブロックに対する第1のエントリと、前記現在ブロックの上隣接ブロックに対する第2のエントリとを備えることを特徴とする、コンピュータ読取可能記憶媒体。
【請求項13】
前記1つ以上のプロセッサに、前記1つ以上のHMVP候補を追加させる命令は、前記1つ以上のプロセッサに、
前記HMVP候補履歴テーブル中の第2のHMVP候補を前記動きベクトル予測子リスト中の前記2つのエントリと比較
し、前記動きベクトル予測子リスト中の他のエントリとは比較
しないことと、
前記第2のHMVP候補が前記動きベクトル予測子リスト中の前記2つのエントリの両方と異なるとき、前記第2のHMVP候補を前記動きベクトル予測子リストに追加するこ
とと、を行わせる命令を
備える、または、
前記1つ以上のプロセッサに、前記1つ以上のHMVP候補を追加させる前記命令は、前記1つ以上のプロセッサに、マージモード、高度動きベクトル予測(AMVP)モード、または、イントラブロックコピー(IBC)マージモードのうちの1つにおいてコード化されている前記現在ブロックに対する前記1つ以上のHMVP候補を追加すること、を行わせる命令を備える、
請求項
12記載のコンピュータ読取可能記憶媒体。
【請求項14】
前記1つ以上のプロセッサに、前記1つ以上のHMVP候補を追加させる
前記命令は、前記1つ以上のプロセッサに、1つ以上のHMVP候補の第1のサブセットを追加させる命令を
備え、前記命令は、前記1つ以上のプロセッサに、
前記HMVP候補履歴テーブル中の1つ以上のHMVP候補の前記第1のサブセットに続く1つ以上のHMVP候補の第2のサブセットからの1つ以上のHMVP候補を
、前記動きベクトル予測子リスト中のエントリと
前記第2のサブセットからの1つ以上のHMVP候補を比較させることなく
、前記動きベクトル予測子リストに追加する
こと、を行わせる命令をさらに
備える、請求項
12記載のコンピュータ読取可能記憶媒体。
【請求項15】
前記1つ以上のプロセッサに、前記動きベクトル予測子リストを構築させる
前記命令は、前記1つ以上のプロセッサに、1つ以上の空間的に隣接するブロックまたはコロケートされたブロックの動き情報により、前記動きベクトル予測子リストを構築させる命令
を備える、または、
前記1つ以上のプロセッサに、前記現在ブロックをデコーディングさせる前記命令は、前記1つ以上のプロセッサに、
前記動きベクトル予測子リストのエントリから動きベクトル情報を取り出すことと、
前記取り出された動きベクトル情報に基づいて、前記現在ブロックに対する動きベクトルを決定することと、
前記動きベクトルに基づいて、予測ブロックを決定することと、
前記現在ブロックを再構築するために、前記予測ブロックと前記現在ブロックとの間の差分を示す受信された残差情報に前記予測ブロックを追加することと、
を行わせる命令を備える、
請求項
12記載のコンピュータ読取可能記憶媒体。
【発明の詳細な説明】
【優先権の主張】
【0001】
[0001]
本出願は、2018年11月27日に出願された米国仮出願第62/771981号の利益を主張する2019年11月26日に出願された米国出願第16/696008号に対する優先権を主張し、その全内容は参照により本明細書に組み込まれている。
【技術分野】
【0002】
[0002]
本開示は、ビデオエンコーディングおよびビデオデコーディングに関連する。
【背景】
【0003】
[0003]
デジタルビデオ能力は、デジタルテレビ、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、パーソナルデジタルアシスタント(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、e-ブックリーダ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラまたは衛星無線電話機、いわゆる「スマートフォン」、ビデオテレビ会議デバイス、ビデオストリーミングデバイス、および、これらに類するものを含む、幅広い範囲のデバイスに組み込むことができる。デジタルビデオデバイスは、MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4、Part 10、高度ビデオコーディング(AVC)、高効率ビデオコーディング(HEVC)標準規格、ITU-T H.265/高効率ビデオコーディング(HEVC)、および、このような標準規格の拡張によって規定される標準規格に記述されているもののような、ビデオコーディング技法を実現する。ビデオデバイスは、このようなビデオコーディング技法を実現することによって、より効率的にデジタルビデオ情報を送信、受信、エンコード、デコード、および/または、記憶してもよい。
【0004】
[0004]
ビデオコーディング技法は、ビデオシーケンスに内在する冗長を低減または取り除くために、空間的(イントラピクチャー)予測、および/または、時間的(インターピクチャー)予測を含んでいる。ブロックベースのビデオコーディングに対して、ビデオスライス(例えば、ビデオピクチャーまたはビデオピクチャーの一部分)は、コーディングツリーユニット(CTU)、コーディングユニット(CU)および/またはコーディングノードとして呼ばれることもあるかもしれないビデオブロックに区分してもよい。ピクチャーのイントラコード化された(I)スライスにおけるビデオブロックは、同じピクチャーにおける隣接ブロック中の参照サンプルに関する空間的予測を使用してエンコードされる。ピクチャーのインターコード化された(PまたはB)スライスにおけるビデオブロックは、同じピクチャーにおける隣接ブロック中の参照サンプルに関する空間的予測、または、他の参照ピクチャーにおける参照サンプルに関する時間的予測を使用してもよい。ピクチャーは、フレームとして呼ばれることがあり、参照ピクチャーは参照フレームとして呼ばれることがある。
【概要】
【0005】
[0005]
一般的に、本開示は、ビデオコーディングにおけるインター予測および動きベクトル再構築に対する技法を説明している。より詳細に説明すると、本開示は、履歴ベース動きベクトル予測(HMVP)に基づく、インター予測動きベクトル候補リスト(動きベクトル予測子リストとしても呼ばれる)構築に対する技法を説明している。さらに詳細に説明すると、ビデオコーダ(例えば、ビデオエンコーダまたはビデオデコーダ)は、簡略化された、余分な部分を取り除く動作を実行するように構成されていてもよい。本開示では、余分な部分を取り除く動作は、一般的に、HMVP候補履歴テーブルからのHMVP候補が動きベクトル予測子リストに追加されるべきか否かを決定する動作を指している。いくつかのケースでは、余分な部分を取り除く動作は、動きベクトル候補予測子リストからHMVP候補を除去することを指しているかもしれない。簡略化された、余分な部分を取り除く動作の例として、ビデオコーダは、HMVP候補履歴テーブル中のHMVP候補のサブセットを、動きベクトル予測子リスト中のエントリのサブセットのみと比較して、HMVP候補のサブセットが、動きベクトル予測子リスト中のエントリのサブセットと同じであるかまたは異なるかを決定してもよい。
【0006】
[0006]
ビデオコーダは、HMVP候補のサブセット中のHMVP候補のうちの1つ以上が動きベクトル予測子リスト中のエントリのサブセットと異なる場合のみ、HMVP候補のサブセット中のHMVP候補のうちの1つ以上を動きベクトル予測子リストに追加してもよい。この方法では、ビデオコーダは、どのHMVP候補が動きベクトル予測子リストに追加されるべきかを決定するのに必要である比較動作の数を制限するかもしれない。比較動作の数を制限することは、動きベクトル予測子リストを構築するのに必要とされる時間量を低減させ、それにより、ビデオデータをエンコードまたはデコードするのに必要とされる時間量を低減させ、ビデオコーダの全体的な動作を改善させるかもしれない。
【0007】
[0007]
1つの例では、本開示は、ビデオデータをコード化するための方法を説明し、方法は、ビデオデータの現在ブロックの近接する隣接ブロックを越えて延在する以前にコード化されたブロックの動きベクトル情報を含む履歴ベース動きベクトル予測(HMVP)候補履歴テーブルを構築することと、動きベクトル予測子リストを構築することと、HMVP候補履歴テーブルからの1つ以上のHMVP候補を動きベクトル予測子リストに追加することと、動きベクトル予測子リストを使用して、ビデオデータの現在ブロックをコード化することとを含み、HMVP候補履歴テーブルからの1つ以上のHMVP候補を追加することは、HMVP候補履歴テーブル中の第1のHMVP候補を動きベクトル予測子リスト中の2つのエントリと比較し、動きベクトル予測子リスト中の他のエントリとは比較しないことと、第1のHMVP候補が動きベクトル予測子リスト中の2つのエントリの両方と異なるとき、第1のHMVP候補を動きベクトル予測子リストに追加することとを含んでいる。
【0008】
[0008]
1つの例では、本開示は、ビデオデータをコード化するデバイスを説明し、デバイスは、ビデオデータの現在ブロックの近接する隣接ブロックを越えて延在する以前にコード化されたブロックの動きベクトル情報を含む履歴ベース動きベクトル予測(HMVP)候補履歴テーブルと、動きベクトル予測子リストとを記憶するように構成されているメモリを具備する。デバイスは、メモリ中に記憶させるために、HMVP候補履歴テーブルを構築するようにと、メモリ中に記憶させるために、動きベクトル予測子リストを構築するようにと、HMVP候補履歴テーブルからの1つ以上のHMVP候補を動きベクトル予測子リストに追加するようにと、メモリ中に記憶されている動きベクトル予測子リストを使用して、ビデオデータの現在のブロックをコード化するように構成されている処理回路を含んでいる。HMVP候補履歴テーブルからの1つ以上のHMVP候補を追加するために、処理回路は、HMVP候補履歴テーブル中の第1のHMVP候補を動きベクトル予測子リスト中の2つのエントリと比較し、動きベクトル予測子リスト中の他のエントリとは比較しないようにと、第1のHMVP候補が動きベクトル予測子リスト中の2つのエントリの両方と異なるとき、第1のHMVP候補を動きベクトル予測子リストに追加するように構成されている。
【0009】
[0009]
1つの例では、本開示は、命令を記憶する非一時的コンピュータ読取可能記憶媒体を説明し、命令は、実行されるとき、1つ以上のプロセッサに、ビデオデータの現在ブロックの近接する隣接ブロックを越えて延在する以前にコード化されたブロックの動きベクトル情報を含む履歴ベース動きベクトル予測(HMVP)候補履歴テーブルを構築させ、動きベクトル予測子リストを構築させ、HMVP候補履歴テーブルからの1つ以上のHMVP候補を動きベクトル予測子リストに追加させ、動きベクトル予測子リストを使用して、ビデオデータの現在ブロックをコード化させ、1つ以上のプロセッサに、HMVP候補履歴テーブルからの1つ以上のHMVP候補を追加させる命令は、1つ以上のプロセッサに、HMVP候補履歴テーブル中の第1のHMVP候補を動きベクトル予測子リスト中の2つのエントリと比較させ、動きベクトル予測子リスト中の他のエントリとは比較させず、第1のHMVP候補が動きベクトル予測子リスト中の2つのエントリの両方と異なるとき、第1のHMVP候補を動きベクトル予測子リストに追加させる命令を含んでいる。
【0010】
[0010]
1つ以上の例の詳細は、添付の図面および以下の説明に記載されている。他の特徴、目的および利点は、説明、図面および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0011】
【
図1】[0011]
図1は、本開示の技法を実行してもよい、例示的なビデオエンコーディングおよびデコーディングシステムを図示するブロック図である。
【
図2】[0012]
図2は、本開示の技法を実行してもよい、例示的なビデオエンコーダを図示するブロック図である。
【
図3】[0013]
図3は、本開示の技法を実行してもよい、例示的なビデオデコーダを図示するブロック図である。
【
図4A】[0014]
図4Aは、マージモードに対する空間的隣接候補を図示する概念図である。
【
図4B】[0015]
図4Bは、高度動きベクトル予測(AMVP)モードに対する空間的隣接候補を図示する概念図である。
【
図5】[0016]
図5は、時間動きベクトル予測子(TMVP)候補および動きベクトルスケーリングを図示する概念図である。
【
図6】[0017]
図6は、非隣接空間マージ候補のフェッチを図示する概念図である。
【
図7】[0018]
図7は、例示的なエンコーディング方法を図示するフローチャートである。
【
図8】[0019]
図8は、例示的なデコーディング方法を図示するフローチャートである。
【
図9】[0020]
図9は、例示的なコーディング方法を図示するフローチャートである。
【詳細な説明】
【0012】
[0021]
ビデオコーディング(例えば、ビデオエンコーディングまたはビデオデコーディング)は、インター予測またはイントラブロックコピー(IBC)を含んでいる。インター予測またはIBCの両方において、ビデオエンコーダは、現在ブロックに対する動きベクトル(IBCに対して、動きベクトルはブロックベクトルであってもよい)に基づいて、予測ブロックを決定し、予測ブロックと現在ブロックとの間の残差情報(例えば、差分)を決定し、残差情報をシグナリングする。ビデオデコーダは、残差情報を受け取る。加えて、ビデオデコーダは、現在ブロックに対する動きベクトルを決定し、動きベクトルに基づいて、予測ブロックを決定する。ビデオデコーダは、残差情報を予測ブロックに追加して、現在ブロックを再構築する。
【0013】
[0022]
ビデオデコーダが現在ブロックに対する動きベクトルを決定する1つの方法は、動きベクトル予測子リストに基づいている。ビデオエンコーダとビデオデコーダの両方は、ビデオエンコーダにより構築された動きベクトル予測子リストと、ビデオデコーダにより構築された動きベクトル予測子リストが同じであるように、類似するプロセスを利用して、それぞれの動きベクトル予測子リストを構築する。動きベクトル予測子リストは、空間的に隣接するブロック(例えば、現在ブロックと同じピクチャー中の現在ブロックに隣接するブロック)およびコロケートされたブロック(例えば、他のピクチャー中の特定のロケーションに配置されているブロック)のような、以前にコード化されたブロックの動きベクトル情報を含んでいる。
【0014】
[0023]
ビデオエンコーダは、動きベクトル予測子リスト中のエントリを決定し、エントリを示す情報をシグナリングする。ビデオデコーダは、エントリに基づいて、動きベクトル予測子リストから動きベクトル情報を決定し、決定された動きベクトル情報に基づいて、現在ブロックに対する動きベクトルを決定する。1つの例として、ビデオデコーダは、現在ブロックに対する動きベクトルを、(例えば、マージモードにおけるような)決定された動きベクトル情報と等しいように設定してもよい。別の例として、ビデオデコーダは、ビデオエンコーダによりシグナリングされた動きベクトル差分(MVD)を、決定された動きベクトル情報に追加して、(例えば、高度動きベクトル予測(AMVP)モードにおけるように)現在ブロックに対する動きベクトルを決定してもよい。
【0015】
[0024]
空間的に隣接するブロックまたはコロケートされたブロックに加えて、ビデオエンコーダおよびビデオデコーダは、履歴ベース動きベクトル予測(HMVP)候補を使用して、動きベクトル予測子リストを構築してもよい。ビデオエンコーダおよびビデオデコーダが、HMVP候補を含むHMVP候補履歴テーブルを構築するHMVP予測の一部として、HMVP候補を使用してもよい。HMVP候補は、空間的に隣接するブロックよりもさらに延在する(例えば、空間的に隣接するブロックよりも現在ブロックからさらに離れている)以前にコード化されたブロックの動きベクトル情報を含んでいてもよい。
【0016】
[0025]
いくつかの技法では、ビデオエンコーダおよびビデオデコーダは、HMVP候補履歴テーブルからのHMVP候補を動きベクトル予測子リストに追加する。しかしながら、HMVP候補を動きベクトル予測子リストに追加することは、結果的に、動きベクトル予測子リスト中のエントリを重複させることになるかもしれない。例として、HMVP候補の動きベクトル情報は、既に動きベクトル予測子リスト中にある、空間的に隣接するブロックに対する動きベクトル情報と同じであるかもしれない。したがって、いくつかの例では、ビデオエンコーダおよびビデオデコーダは、HMVP候補が動きベクトル予測子リスト中に既にあるエントリとは異なる場合のみ、HMVP候補が追加される、余分な部分を取り除く動作を実行する。例えば、ビデオエンコーダおよびビデオデコーダは、HMVP候補を動きベクトル予測子リスト中のエントリと比較し、HMVP候補が動きベクトル予測子リスト中のエントリとは異なる場合のみ、HMVP候補を追加する。
【0017】
[0026]
このような余分な部分を取り除く動作にはいくつかの技術的問題があるかもしれない。例えば、HMVP候補のそれぞれを動きベクトル予測子リスト中の各エントリと比較することは、多くの比較動作を必要とすることがあり、これはコーディングプロセスを減速させることがある。しかしながら、動きベクトル予測子リスト中に重複候補を有することは、コーディング効率に影響を与えることもある。動きベクトル予測子リストの最大サイズは固定されているかもしれない。したがって、動きベクトル予測子リストが重複エントリを含み、動きベクトル予測子リストがフル(例えば、エントリの数が最大サイズに等しい)である場合、より良好なコーディング効率を提供する可能性のあるエントリが除外されてしまっているが、同じエントリの重複が存在する可能性があり、これは、コーディング利得に悪影響を与えることがある。
【0018】
[0027]
本開示は、比較動作を低減することの利得と、動きベクトル予測子リスト中に重複エントリを有することのコストとをバランスさせる方法で、HMVP候補を使用して、動きベクトル予測子リストを構築する例示的な技法を説明する。残りのHMVP候補および動きベクトル予測子リスト中の残りのエントリと比較して、重複しているより高い可能性がある、HMVP候補のサブセットと、動きベクトル予測子リスト中のエントリのサブセットとがあるかもしれない。
【0019】
[0028]
本開示で説明されている1つ以上の例では、ビデオエンコーダおよびビデオデコーダは、HMVP候補のサブセットを動きベクトル予測子リスト中のエントリのサブセットのみと比較して、HMVP候補のサブセットのHMVP候補を追加するか否かを決定するかもしれない。残りのHMVP候補に対して、ビデオエンコーダおよびビデオデコーダは、HMVP候補を動きベクトル予測子リスト中のエントリのいずれとも比較しないかもしれない。
【0020】
[0029]
例として、動きベクトル予測子リスト中のエントリは、現在ブロックの左隣接ブロックの動きベクトル情報を含んでいてもよい。第1のHMVP候補は、左隣接ブロックに左で隣接する第1のブロックの動きベクトル情報を含んでいてもよく、第2のHMVP候補は、第1のブロックに左で隣接する第2のブロックの動きベクトル情報を含んでいてもよい。
【0021】
[0030]
この例では、第1のブロック(例えば、第1のHMVP候補)の動き情報が左隣接ブロックの動き情報と同じであるより高い可能性があり、そして、第2のブロック(例えば、第2のHMVP候補)の動き情報が左隣接ブロックの動き情報と同じである可能性がある。また、第1のHMVP候補が動きベクトル予測子リスト中の他の何らかのエントリと同じである可能性は、比較的小さい。その理由は、動きベクトル予測子リスト中の他のエントリは、第1のHMVPの隣ではなく、または、第1のHMVPに比較的近接していないかもしれないからである。
【0022】
[0031]
第1のHMVP候補が左隣接ブロックと同じ動きベクトル情報を有するより高い可能性を持つのは、左隣接ブロックに対する第1のブロックの近接性によるものであるかもしれない。一般的に、さらに離れているブロックの動きベクトル情報が同じである可能性よりも、互いにより近いブロックの動きベクトル情報が同じである可能性はより高い。
【0023】
[0032]
いくつかの例では、ビデオエンコーダおよびビデオデコーダは、第1のHMVP候補を、左隣接ブロックの動きベクトル情報に対する動きベクトル予測子リスト中のエントリと、場合によっては、動きベクトル予測子リスト中の限定されたさらにいくつかのエントリ(例えば、さらに1つのエントリ)と比較するかもしれないが、第1のHMVP候補を、動きベクトル予測子リスト中の残りのエントリのいずれとも比較しないかもしれない。第1のHMVP候補が、動きベクトル予測子リスト中のサブセット中のエントリと異なる場合には、ビデオエンコーダおよびビデオデコーダは、第1のHMVP候補を動きベクトル予測子リスト中に追加するかもしれない。第1のHMVP候補が動きベクトル予測子リストのサブセット中のエントリのいずれかと同じである場合には、ビデオエンコーダおよびビデオデコーダは、第1のHMVP候補を動きベクトル予測子リスト中に追加しないかもしれない。
【0024】
[0033]
このようにして、比較動作の数が低減される(例えば、ビデオエンコーダおよびビデオデコーダは、第1のHMVP候補を動きベクトル予測子リスト中のエントリのサブセットのみと比較してもよい)。いくつかの例では、動きベクトル予測子リスト中に重複エントリがある偶然があるかもしれない。例として、動きベクトル予測子リスト中のエントリのうちの第1のHMVP候補と比較されなかったエントリの1つが第1のHMVP候補と同じ動きベクトル情報を有する可能性がある。このケースでは、動きベクトル予測子リスト中に重複動きベクトル情報があるかもしれない。しかしながら、いくつかの例では、第1のHMVP候補が比較されなかった動きベクトル予測子リスト中のエントリは、第1のHMVP候補から比較的遠く離れているブロックに対するものであるかもしれない。したがって、第1のHMVP候補が、第1のHMVP候補が比較されていない動きベクトル予測子リスト中の残りのエントリのいずれかと同じである可能性は比較的低いかもしれない。
【0025】
[0034]
したがって、重複動きベクトル情報の可能性を低く保ちながら、余分な部分を取り除くために実行される動作の数が低減されるかもしれない。例えば、動きベクトル予測子リストの余分な部分を取り除く動作の一部として、ビデオエンコーダおよびビデオデコーダは、HMVP候補履歴テーブル中の第1のHMVP候補を動きベクトル予測子リスト中の2つのエントリと比較し、動きベクトル予測子リスト中の他のエントリとは比較せず、第1のHMVP候補が動きベクトル予測子リスト中の2つのエントリの両方と異なるとき、第1のHMVP候補を動きベクトル予測子リストに追加してもよい。この例では、第1のHMVP候補は動きベクトル予測子リスト中の残りのエントリと比較されないが、動きベクトル予測子リスト中の残りのエントリのうちの1つが第1のHMVP候補の重複である可能性は、第1のHMVP候補が、動きベクトル予測子リスト中の残りのエントリを構築するためにその動きベクトル情報が使用されるブロックに近接しないブロックに対するものであることに起因して低い。
【0026】
[0035]
図1は、本開示の技法を実行してもよい、例示的なビデオエンコーディングおよびデコーディングシステム100を図示するブロック図である。本開示の技法は、一般的に、ビデオデータをコード化(エンコードおよび/またはデコード)することに向けられている。一般的に、ビデオデータは、ビデオを処理するための任意のデータを含んでいる。したがって、ビデオデータは、生のコード化されていないビデオ、エンコードされたビデオ、デコードされた(例えば、再構築された)ビデオ、および、シグナリングデータのようなビデオメタデータを含んでいてもよい。
【0027】
[0036]
図1に示すように、システム100は、この例では、宛先デバイス116によってデコードされ、表示されるべきエンコードされたビデオデータを提供する、発信元デバイス102を含んでいる。特に、発信元デバイス102は、コンピュータ読取可能媒体110を介して、ビデオデータを宛先デバイス116に提供する。発信元デバイス102および宛先デバイス116は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、スマートフォンのような電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス、または、これらに類するものを含む、広範囲のデバイスのうちのいずれを含んでいてもよい。いくつかのケースでは、発信元デバイス102および宛先デバイス116は、ワイヤレス通信のために備えられてもよく、したがって、ワイヤレス通信デバイスとして呼ばれることがある。
【0028】
[0037]
図1の例では、発信元デバイス102は、ビデオソース104と、メモリ106と、ビデオエンコーダ200と、出力インターフェース108とを含んでいる。宛先デバイス116は、入力インターフェース122と、ビデオデコーダ300と、メモリ120と、ディスプレイデバイス118とを含んでいる。本開示によれば、発信元デバイス102のビデオエンコーダ200および宛先デバイス116のビデオデコーダ300は、履歴ベース動きベクトル予測のための技法を適用するように構成されていてもよい。したがって、発信元デバイス102はビデオエンコーディングデバイスの例を表す一方で、宛先デバイス116はビデオデコーディングデバイスの例を表している。他の例では、発信元デバイスおよび宛先デバイスは、他のコンポーネントまたは構成を含んでいてもよい。例えば、発信元デバイス102は、外部カメラのような外部ビデオソースからビデオデータを受け取ってもよい。同様に、宛先デバイス116は、統合されたディスプレイデバイスを含むよりもむしろ、外部ディスプレイデバイスとインターフェースしていてもよい。
【0029】
[0038]
図1に示されるシステム100は1つの例にすぎない。一般的に、任意のデジタルビデオエンコーディングおよび/またはデコーディングデバイスが、履歴ベース動きベクトル予測のための技法を実行してもよい。発信元デバイス102および宛先デバイス116は、発信元デバイス102が宛先デバイス116への送信のためにコード化されたビデオデータを発生させる、このようなコーディングデバイスの例にすぎない。本開示は、データのコーディング(エンコーディングおよび/またはデコーディング)を実行するデバイスとして「コーディング」デバイスに言及する。したがって、ビデオエンコーダ200およびビデオデコーダ300は、コーディングデバイスの例を、特に、それぞれビデオエンコーダおよびビデオデコーダを表している。いくつかの例では、デバイス102、116は、デバイス102、116のそれぞれがビデオエンコーディングコンポーネントとビデオデコーディングコンポーネントとを含むように、実質的に対称的に動作してもよい。したがって、システム100は、例えば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、または、ビデオ電話に対する、デバイス102とデバイス116との間の一方向または双方向ビデオ送信をサポートしてもよい。
【0030】
[0039]
一般的に、ビデオソース104は、ビデオデータ(すなわち、生のコード化されていないビデオデータ)のソースを表し、ビデオデータのシーケンシャルな一連のピクチャー(「フレーム」としても呼ばれる)を、ピクチャーに対するデータをエンコードするビデオエンコーダ200に提供する。発信元デバイス102のビデオソース104は、ビデオカメラのようなビデオキャプチャデバイス、以前にキャプチャされた生のビデオを含んでいるビデオアーカイブ、および/または、ビデオコンテンツプロバイダからビデオを受け取るためのビデオフィードインターフェースを含んでいてもよい。さらなる代替として、ビデオソース104は、ソースビデオとしてのコンピュータグラフィックスベースのデータを、または、ライブビデオとアーカイブビデオとコンピュータ発生ビデオとの組み合わせを発生させてもよい。各ケースにおいて、ビデオエンコーダ200は、キャプチャされた、事前キャプチャされた、または、コンピュータが発生させたビデオデータをエンコードする。ビデオエンコーダ200は、(ときには「表示順序」として呼ばれる)受け取った順序から、コーディングのためのコーディング順序にピクチャーを再構成してもよい。ビデオエンコーダ200は、エンコードされたビデオデータを含むビットストリームを発生させてもよい。発信元デバイス102は、その後、例えば、宛先デバイス116の入力インターフェース122による受け取りおよび/または取り出しのために、出力インターフェース108を介して、コンピュータ読取可能媒体110上に、エンコードされたビデオデータを出力してもよい。
【0031】
[0040]
発信元デバイス102のメモリ106および宛先デバイス116のメモリ120は、汎用メモリを表している。いくつかの例では、メモリ106、120は、生のビデオデータ、例えば、ビデオソース104からの生ビデオと、ビデオデコーダ300からの生のデコードされたビデオデータとを記憶してもよい。追加的にまたは代替的に、メモリ106、120は、例えば、ビデオエンコーダ200およびビデオデコーダ300それぞれによって実行可能なソフトウェア命令を記憶していてもよい。この例では、ビデオエンコーダ200およびビデオデコーダ300とは別個に示されているが、ビデオエンコーダ200およびビデオデコーダ300はまた、機能的に同様または同等の目的のために内部メモリを含んでいてもよいことを理解すべきである。さらに、メモリ106、120は、例えば、ビデオエンコーダ200から出力され、ビデオデコーダ300に入力される、エンコードされたビデオデータを記憶してもよい。いくつかの例では、メモリ106、120の一部分は、1つ以上のビデオバッファとして割り振られ、例えば、生のデコードされたおよび/またはエンコードされたビデオデータを記憶してもよい。
【0032】
[0041]
コンピュータ読取可能媒体110は、発信元デバイス102から宛先デバイス116へとエンコードされたビデオデータを転送することが可能な任意のタイプの媒体またはデバイスを表していてもよい。1つの例では、コンピュータ読取可能媒体110は、発信元デバイス102が、例えば、無線周波数ネットワークまたはコンピュータベースのネットワークを介して、エンコードされたビデオデータをリアルタイムで宛先デバイス116に直接送信することを可能にする通信媒体を表している。ワイヤレス通信プロトコルのような通信標準規格にしたがって、出力インターフェース108は、エンコードされたビデオデータを含む送信信号を変調してもよく、入力インターフェース122は、受け取った送信信号を変調してもよい。通信媒体は、無線周波数(RF)スペクトルまたは1つ以上の物理送信ラインのような、何らかのワイヤレスおよび/またはワイヤード通信媒体を備えていてもよい。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、または、インターネットのようなグローバルネットワークのような、パケットベースのネットワークの一部を形成していてもよい。通信媒体は、ルータ、スイッチ、基地局、または、発信元デバイス102から宛先デバイス116への通信を容易にするのに役立つかもしれない他の何らかの機器を含んでいてもよい。
【0033】
[0042]
いくつかの例では、発信元デバイス102は、出力インターフェース108から記憶デバイス112にエンコードされたデータを出力してもよい。同様に、宛先デバイス116は、入力インターフェース122を介して、記憶デバイス112からのエンコードされたデータにアクセスしてもよい。記憶デバイス112の例は、ハードドライブ、ブルーレイ(登録商標)ディスク、DVD、CD-ROM、フラッシュメモリ、揮発性または不揮発性メモリ、または、エンコードされたビデオデータを記憶するための他の何らかの適切なデジタル記憶媒体のような、さまざまな分散またはローカルにアクセスされるデータ記憶媒体のいずれかを含んでいてもよい。
【0034】
[0043]
いくつかの例では、発信元デバイス102は、エンコードされたビデオデータを、ファイルサーバ114に、または、発信元デバイス102によって発生させたエンコードされたビデオを記憶してもよい別の中間記憶デバイスに出力してもよい。宛先デバイス116は、ストリーミングまたはダウンロードを介して、ファイルサーバ114からの記憶されているビデオデータにアクセスしてもよい。ファイルサーバ114は、エンコードされたビデオを記憶することと、宛先デバイス116にエンコードされたビデオを送信することとができる、任意のタイプのサーバデバイスであってもよい。ファイルサーバ114は、(例えば、ウェブサイトに対する)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、コンテンツ配信ネットワークデバイス、または、ネットワーク接続記憶(NAS)デバイスを表していてもよい。宛先デバイス116は、インターネット接続を含む任意の標準的なデータ接続を通して、ファイルサーバ114からのエンコードされたビデオデータにアクセスしてもよい。これは、ファイルサーバ114に記憶されている、エンコードされたビデオデータにアクセスするのに適している、ワイヤレスチャネル(例えば、Wi-Fi接続)、ワイヤード接続(例えば、DSL、ケーブルモデム等)、または、その両方の組み合わせを含んでいてもよい。ファイルサーバ114および入力インターフェース122は、ストリーミング送信プロトコル、ダウンロード送信プロトコル、または、これらの組み合わせにしたがって動作するように構成されていてもよい。
【0035】
[0044]
出力インターフェース108および入力インターフェース122は、ワイヤレス送信機/受信機、モデム、ワイヤードネットワーキングコンポーネント(例えば、イーサネット(登録商標)カード)、さまざまなIEEE802.11標準規格のいずれかにしたがって動作するワイヤレス通信コンポーネント、または、他の物理コンポーネントを表していてもよい。出力インターフェース108および入力インターフェース122がワイヤレスコンポーネントを備えている例では、出力インターフェース108および入力インターフェース122は、4G、4G-LTE(登録商標)(ロングタームエボリューション)、LTEアドバンスト、5G、または、これらに類するもののようなセルラ通信標準規格にしたがって、エンコードされたビデオデータのようなデータを転送するように構成されていてもよい。出力インターフェース108がワイヤレス送信機を備えているいくつかの例では、出力インターフェース108および入力インターフェース122は、IEEE802.11仕様、IEEE802.15仕様(例えば、ZigBee(商標))、Bluetooth(登録商標)(商標)標準規格、または、これらに類するもののような他のワイヤレス標準規格にしたがって、エンコードされたビデオデータのようなデータを転送するように構成されていてもよい。いくつかの例では、発信元デバイス102および/または宛先デバイス116は、それぞれのシステムオンチップ(SoC)デバイスを含んでいてもよい。例えば、発信元デバイス102は、ビデオエンコーダ200および/または出力インターフェース108に備わる機能性を実行するためのSoCデバイスを含んでいてもよく、宛先デバイス116は、ビデオデコーダ300および/または入力インターフェース122に備わる機能性を実行するSoCデバイスを含んでいてもよい。
【0036】
[0045]
本開示の技法は、無線テレビ放送、ケーブルテレビ送信、衛星テレビ送信、HTTPを通した動的アダプティブストリーミング(DASH)のようなインターネットストリーミングビデオ送信、データ記憶媒体上にエンコードされたデジタルビデオ、データ記憶媒体上に記憶されているデジタルビデオのデコーディング、または、他のアプリケーションのような、さまざまなマルチメディアアプリケーションのうちのいずれかをサポートするビデオコーディングに適用してもよい。
【0037】
[0046]
宛先デバイス116の入力インターフェース122は、コンピュータ読取可能媒体110(例えば、記憶デバイス112、ファイルサーバ114、または、これらに類するもの)からエンコードされたビデオビットストリームを受け取る。コンピュータ読取可能媒体110からのエンコードされたビデオビットストリームは、ビデオブロックまたは他のコード化されたユニット(例えば、スライス、ピクチャー、ピクチャーのグループ、シーケンス、または、これらに類するもの)の特性および/または処理を記述する値を有するシンタックス要素のような、ビデオエンコーダ200によって規定され、ビデオデコーダ300によっても使用されるシグナリング情報を含んでいてもよい。ディスプレイデバイス118は、デコードされたビデオデータのデコードされたピクチャーをユーザに表示する。ディスプレイデバイス118は、ブラウン管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または、別のタイプのディスプレイデバイスのような、さまざまなディスプレイデバイスのうちのいずれかを表していてもよい。
【0038】
[0047]
図1には示されていないが、いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、それぞれオーディオエンコーダおよび/またはオーディオデコーダと統合されていてもよく、適切なMUX-DEMUXユニットあるいは他のハードウェアおよび/またはソフトウェアを含んでいて、共通のデータストリームにおけるオーディオおよびビデオの両方を含む多重化されたストリームを取り扱ってもよい。適用可能である場合、MUX-DEMUXユニットは、ITU.H.223マルチプレクサプロトコル、または、ユーザデータグラムプロトコル(UDP)のような他のプロトコルにしたがっていてもよい。
【0039】
[0048]
ビデオエンコーダ200およびビデオデコーダ300はそれぞれ、1つ以上のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、または、これらの組み合わせのような、さまざまな適したエンコーダおよび/またはデコーダ回路のいずれかとして実現してもよい。技法が部分的にソフトウェアで実現されるとき、デバイスは、適切な、非一時的コンピュータ読取可能媒体においてソフトウェアに対する命令を記憶していてもよく、1つ以上のプロセッサを使用して、ハードウェアにおいて命令を実行して、本開示の技法を実行してもよい。ビデオエンコーダ200およびビデオデコーダ300のそれぞれは、1つ以上のエンコーダまたはデコーダに含まれていてもよく、エンコーダまたはデコーダのどちらかは、それぞれのデバイスにおいて、組み合わされたエンコーダ/デコーダ(CODEC)の一部として統合されていてもよい。ビデオエンコーダ200および/またはビデオデコーダ300を含むデバイスは、集積回路、マイクロプロセッサ、および/または、セルラ電話機のようなワイヤレス通信デバイスを備えていてもよい。
【0040】
[0049]
ビデオコーディング標準規格は、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および(ISO/IEC MPEG-4 AVCとしても知られる)ITU-T H.264を含み、そのスケーラブルビデオコーディング(SVC)およびマルチビュービデオコーディング(MVC)拡張を含んでいる。
【0041】
[0050]
高効率ビデオコーディング(HEVC)またはITU-T H.265(G.J.Sullivan,J.-R.Ohm,W.-J.Han,T.Wiegand「高効率ビデオコーディング(HEVC)標準規格の概要」,ビデオ技術のための回路およびシステムにおけるIEEEトランザクション,vol.22,no.12.pp.1649-1668,2012年12月)は、その範囲拡張、マルチビュー拡張(MV-HEVC)およびスケーラブル拡張(SHVC)を含み、ビデオコーディングにおける共同作業チーム(JCT-VC)とともに、ITU-T ビデオコーディングエキスパートグループ(VCEG)およびISO/IEC動画エキスパートグループ(MPEG)の3Dビデオコーディング拡張開発における共同作業チーム(JCT-3V)により開発されている。以下でHEVC WDとして呼ばれるHEVCドラフト仕様は、http://phenix.int-evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1003-v1.zipから入手可能である。HEVCの国際標準規格の最終ドラフト(FDIS)の最新バージョンは、http://phenix.it-sudparis.eu/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v34.zip中で見つけられるかもしれない。
【0042】
[0051]
ITU-T VCEG(Q6/16)およびISO/IEC MPEG(JTC 1/SC 29/WG 11)は、(スクリーンコンテンツコーディングおよび高ダイナミックレンジコーディングに対するその現在の拡張および短期拡張を含む)現在のHEVC標準規格の圧縮能力を著しく超える圧縮能力を持つ将来のビデオコーディングテクノロジーの標準化に対する潜在的必要性を現在研究している。グループは、この分野のエキスパートによって提案された圧縮テクノロジー設計を評価するために、ジョイントビデオ調査チーム(JVET)として知られている共同作業の取り組みにおいて、この調査活動に関して共に取り組んでいる。JVETは、2015年10月19~21日の間に最初に会った。基準ソフトウェアのバージョン、すなわち、共同調査モデル7(JEM7)は、以下からダウンロードすることができる:https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/HM-16.6-JEM-7.2/。共同調査テストモデル7(JEM-7)のアルゴリズム解説は、J.Chen,E.Alshina,G.J.Sullivan,J.-R.Ohm,J.Boyce,「共同調査テストモデル7のアルゴリズム解説」,JVET-G1001,2017年7月において説明されている。
【0043】
[0052]
ビデオエンコーダ200およびビデオデコーダ300は、高効率ビデオコーディング(HEVC)としても呼ばれるITU-T H.265のようなビデオコーディング標準規格に、または、マルチビューおよび/またはスケーラブルビデオコーディング拡張のような、高効率ビデオコーディング(HEVC)に対する拡張にしたがって動作してもよい。代替的に、ビデオエンコーダ200およびビデオデコーダ300は、共同調査テストモデル(JEM)および/またはバータイルビデオコーディング(VVC)のような、他のプロプライエタリまたは業界標準規格にしたがって動作してもよい。しかしながら、本開示の技術は、何らかの特定のコーディング標準規格には限定されない。
【0044】
[0053]
一般的に、ビデオエンコーダ200およびビデオデコーダ300は、ピクチャーのブロックベースコーディングを実行してもよい。「ブロック」という用語は、一般的に、処理される(例えば、エンコードされる、デコードされる、または、そうでなければ、エンコーディングおよび/またはデコーディングプロセスにおいて使用される)データを含む構造を指している。例えば、ブロックは、ルミナンスデータおよび/またはクロミナンスデータのサンプルの2次元行列を含んでいてもよい。一般的に、ビデオエンコーダ200およびビデオデコーダ300は、YUV(例えば、Y、Cb、Cr)フォーマットで表されるビデオデータをコード化してもよい。すなわち、ピクチャーのサンプルに対する赤、緑および青(RGB)データをコード化するよりもむしろ、ビデオエンコーダ200およびビデオデコーダ300は、ルミナンス成分とクロミナンス成分とをコード化してもよく、ここで、クロミナンス成分は、赤の色相と青の色相の両方のクロミナンス成分を含んでいてもよい。いくつかの例では、ビデオエンコーダ200は、エンコーディングの前に、受け取ったRGBフォーマットされたデータをYUV表現に変換し、ビデオデコーダ300は、YUV表現をRGBフォーマットに変換する。代替的に、(図示されていない)前処理ユニットおよび後処理ユニットがこれらの変換を実行してもよい。
【0045】
[0054]
本開示は、一般的に、ピクチャーのデータをエンコードまたはデコードするプロセスを含むように、ピクチャーのコーディング(例えば、エンコーディングおよびデコーディング)に関連しているかもしれない。同様に、本開示は、ブロックに対するデータをエンコーディングまたはデコーディングするプロセス、例えば、予測および/または残差コーディングを含むように、ピクチャーのブロックのコーディングに関連しているかもしれない。エンコードされたビデオビットストリームは、一般的に、コーディング決定(例えば、コーディングモード)とブロックへのピクチャーの区分とを表す、シンタックス要素に対する一連の値を含んでいる。したがって、ピクチャーまたはブロックをコード化することへの言及は、一般的に、ピクチャーまたはブロックを形成するシンタックス要素に対するコーディング値として理解すべきである。
【0046】
[0055]
HEVCは、コーディングユニット(CU)、予測ユニット(PU)および変換ユニット(TU)を含む、さまざまなブロックを規定する。HEVCにしたがうと、(ビデオエンコーダ200のような)ビデオコーダは、4分ツリー構造にしたがって、コーディングツリーユニット(CTU)をCUに区分する。すなわち、ビデオコーダは、CTUおよびCUを4つの等しい、オーバーラップしない正方形に区分し、4分ツリーの各ノードは、ゼロまたは4つの子ノードのいずれかを有する。子ノードのないノードは、「リーフノード」として呼ばれることがあり、このようなリーフノードのCUは、1つ以上のPUおよび/または1つ以上のTUを含んでいてもよい。ビデオコーダは、PUとTUとをさらに区分してもよい。例えば、HEVCでは、残差4分ツリー(RQT)はTUの区分を表している。HEVCでは、PUはインター予測データを表す一方で、TUは残差データを表している。イントラ予測されるCUは、イントラモード表示のようなイントラ予測情報を含んでいる。
【0047】
[0056]
別の例として、ビデオエンコーダ200およびビデオデコーダ300は、JEMおよび/またはVVCの例にしたがって動作するように構成されていてもよい。JEMおよび/またはVVCの例によれば、(ビデオエンコーダ200のような)ビデオコーダは、ピクチャーを複数のコーディングツリーユニット(CTU)に区分する。ビデオエンコーダ200は、4分ツリー-2分ツリー(QTBT)構造のようなツリー構造にしたがって、CTUを区分してもよい。JEMおよび/またはVVCの例のQTBT構造は、HEVCのCUとPUとTUとの間の分離のような、複数の区分タイプの概念を除去する。JEM/VVCの例のQTBT構造は、4分ツリー区分にしたがって区分される第1のレベルと、2分ツリー区分にしたがって区分される第2のレベルと、の2つのレベルを含んでいる。QTBT構造のルートノードはCTUに対応する。2分ツリーのリーフノードは、コーディングユニット(CU)に対応する。
【0048】
[0057]
いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、単一のQTBT構造を使用して、ルミナンス成分とクロミナンス成分のそれぞれを表してもよい一方で、他の例では、ビデオエンコーダ200およびビデオデコーダ300は、ルミナンス成分のために1つのQTBT構造と、両方のクロミナンス成分のために別のQTBT構造(または、それぞれのクロミナンス成分のために2つのQTBT構造)のように、2つ以上のQTBT構造を使用してもよい。
【0049】
[0058]
ビデオエンコーダ200およびビデオデコーダ300は、HEVC毎の4分ツリー区分、JEM/VVCの例にしたがうQTBT区分、または、他の区分構造を使用するように構成されていてもよい。説明のために、本開示の技法の説明は、QTBT区分に関して提示する。しかしながら、本開示の技法はまた、4分ツリー区分、または、他のタイプの区分も同様に使用するように構成されているビデオコーダに適用してもよいことを理解されたい。
【0050】
[0059]
本開示は、「N×N」および「NバイN」を交換可能に使用して、垂直寸法および水平寸法に関する(CUまたは他のビデオブロックのような)ブロックのサンプル寸法、例えば、16×16サンプルまたは16バイ16サンプルを指すかもしれない。一般的に、16×16のCUは、垂直方向に16個のサンプルを有し(y=16)、水平方向に16個のサンプルを有する(x=16)。同様に、N×NのCUは、一般的に、垂直方向にN個のサンプルを有し、水平方向にN個のサンプルを有し、ここで、Nは非負整数値を表している。CU中のサンプルは、行および列に配置されていてもよい。さらに、CUは、必ずしも水平方向に垂直方向と同じ数のサンプルを有する必要はない。例えば、CUはN×Mのサンプルを備えていてもよく、ここで、Mは必ずしもNに等しいとは限らない。
【0051】
[0060]
ビデオエンコーダ200は、予測および/または残差情報を、ならびに、他の情報を表す、CUに対するビデオデータをエンコードする。予測情報は、CUに対する予測ブロックを形成するために、CUがどのように予測されるべきかを示している。残差情報は、一般的に、エンコーディング前のCUのサンプルと予測ブロックとの間のサンプル毎の差分を表している。
【0052】
[0061]
CUを予測するために、ビデオエンコーダ200は、一般的に、インター予測またはイントラ予測を通して、CUに対する予測ブロックを形成してもよい。インター予測は、一般的に、以前にコード化されたピクチャーのデータからCUを予測することを指す一方で、イントラ予測は、一般的に、同じピクチャーの以前にコード化されたデータからCUを予測することを指している。インター予測を実行するために、ビデオエンコーダ200は、1つ以上の動きベクトルを使用して、予測ブロックを発生させてもよい。ビデオエンコーダ200は、一般的に、動きサーチを実行して、例えば、CUと参照ブロックとの間の差分に関して、CUに密接に一致する参照ブロックを識別してもよい。ビデオエンコーダ200は、絶対差分の和(SAD)、二乗差分の和(SSD)、平均絶対差分(MAD)、平均二乗差分(MSD)、または、他のこのような差分計算を使用して、差分メトリックを計算し、参照ブロックが現在CUに密接に一致するか否かを決定してもよい。いくつかの例では、ビデオエンコーダ200は、単方向予測または双方向予測を使用して、現在CUを予測してもよい。
【0053】
[0062]
JEMまたはVVCはまた、インター予測モードと見なしてもよいアフィン動き補償モードを提供する。アフィン動き補償モードでは、ビデオエンコーダ200は、ズームインまたはズームアウト、回転、透視動き、または、他の不規則な動きタイプのような、並進しない動きを表す2つ以上の動きベクトルを決定してもよい。
【0054】
[0063]
イントラ予測を実行するために、ビデオエンコーダ200は、イントラ予測モードを選択して、予測ブロックを発生させてもよい。JEMまたはVVCは、さまざまな方向性モードとともに、平面モードおよびDCモードを含む、67個のイントラ予測モードを提供する。一般的に、ビデオエンコーダ200は、現在ブロックのサンプルを予測する、現在ブロック(例えば、CUのブロック)に隣接するサンプルを記述するイントラ予測モードを選択する。ビデオエンコーダ200がラスター走査順序(左から右、上から下)でCTUおよびCUをコード化すると仮定すると、このようなサンプルは、一般的に、現在ブロックと同じピクチャー中で、現在ブロックの上、左上または左にあってもよい。
【0055】
[0064]
ビデオエンコーダ200は、現在ブロックに対する予測モードを表すデータをエンコードする。例えば、インター予測モードに対して、ビデオエンコーダ200は、さまざまな利用可能なインター予測モードのうちのどれが使用されるかを表すデータとともに、対応するモードに対する動き情報をエンコードしてもよい。単方向または双方向インター予測に対して、例えば、ビデオエンコーダ200は、高度動きベクトル予測(AMVP)またはマージモードを使用して、動きベクトルをエンコードしてもよい。ビデオエンコーダ200は、類似するモードを使用して、アフィン動き補償モードに対する動きベクトルをエンコードしてもよい。
【0056】
[0065]
ブロックのイントラ予測またはインター予測のような予測に続いて、ビデオエンコーダ200は、ブロックに対する残差データを計算してもよい。残差ブロックのような残差データは、ブロックと、対応する予測モードを使用して形成された、ブロックに対する予測ブロックとの間の、サンプル毎の差分を表している。ビデオエンコーダ200は、1つ以上の変換を残差ブロックに適用して、サンプルドメインの代わりに変換ドメインにおいて、変換されたデータを生成させてもよい。例えば、ビデオエンコーダ200は、離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または、概念的に類似する変換を残差ビデオデータに適用してもよい。さらに、ビデオエンコーダ200は、モード依存分離不可能2次変換(MDNSST)、信号依存変換、カルーネンレーベ変換(KLT)、または、これらに類するもののような、第1の変換に続く2次変換を適用してもよい。ビデオエンコーダ200は、1つ以上の変換の適用に続いて、変換係数を生成させる。
【0057】
[0066]
上述のように、変換係数を生成させるための任意の変換に続いて、ビデオエンコーダ200は、変換係数の量子化を実行してもよい。量子化は、一般的に、変換係数が量子化されて、係数を表すために使用されるデータの量を場合によっては低減させ、さらなる圧縮を提供するプロセスを指している。量子化プロセスを実行することによって、ビデオエンコーダ200は、係数のいくつか、または、すべてに関係するビット深度を低減させてもよい。例えば、ビデオエンコーダ200は、量子化の間にn-ビット値をm-ビット値に切り捨ててもよく、ここで、nはmよりも大きい。いくつかの例では、量子化を実行するために、ビデオエンコーダ200は、量子化されるべき値のビット単位の右シフトを実行してもよい。
【0058】
[0067]
量子化に続いて、ビデオエンコーダ200は、変換係数を走査し、量子化された変換係数を含む2次元行列から1次元ベクトルを生成させてもよい。走査は、より高いエネルギー(したがって、より低い周波数)の係数をベクトルの前部に配置し、より低いエネルギー(したがって、より高い周波数)の変換係数をベクトルの後部に配置するように設計されていてもよい。いくつかの例では、ビデオエンコーダ200は、予め規定された走査順序を利用して、量子化変換係数を走査し、シリアル化ベクトルを生成させ、その後、ベクトルの量子化変換係数をエントロピーエンコードしてもよい。他の例では、ビデオエンコーダ200は、適応走査を実行してもよい。量子化変換係数を走査して1次元ベクトルを形成した後、ビデオエンコーダ200は、例えば、コンテキスト適応2値算術コーディング(CABAC)にしたがって、1次元ベクトルをエントロピーエンコードしてもよい。ビデオエンコーダ200はまた、ビデオデータをデコードする際に、ビデオデコーダ300によって使用するために、エンコードされたビデオデータに関係するメタデータを記述するシンタックス要素に対する値をエントロピーエンコードしてもよい。
【0059】
[0068]
CABACを実行するために、ビデオエンコーダ200は、コンテキストモデル内のコンテキストを送信されるべきシンボルに割り当ててもよい。コンテキストは、例えば、シンボルの隣接する値がゼロ値にされているか否かに関連していてもよい。確率決定は、シンボルに割り当てられているコンテキストに基づいていてもよい。
【0060】
[0069]
ビデオエンコーダ200はさらに、例えば、ピクチャーヘッダ中で、ブロックヘッダ中で、スライスヘッダ中で、あるいは、シーケンスパラメータセット(SPS)、ピクチャーパラメータセット(PPS)、または、ビデオパラメータセット(VPS)のような他のシンタックスデータ中で、ビデオデコーダ300への、ブロックベースのシンタックスデータ、ピクチャーベースのシンタックスデータ、および、シーケンスベースのシンタックスデータのようなシンタックスデータを発生させてもよい。ビデオデコーダ300は、同様に、このようなシンタックスデータをデコードして、対応するビデオデータをどのようにデコードするかを決定してもよい。
【0061】
[0070]
このようにして、ビデオエンコーダ200は、エンコードされたビデオデータを含む、例えば、ブロック(例えば、CU)へのピクチャーの区分と、ブロックに対する予測および/または残差情報とを記述する、シンタックス要素を含むビットストリームを発生させてもよい。最終的に、ビデオデコーダ300は、ビットストリームを受け取り、エンコードされたビデオデータをデコードしてもよい。
【0062】
[0071]
一般的に、ビデオデコーダ300は、ビデオエンコーダ200によって実行されたプロセスとは逆のプロセスを実行して、ビットストリームのエンコードされたビデオデータをデコードする。例えば、ビデオデコーダ300は、ビデオエンコーダ200のCABACエンコーディングプロセスと、逆ではあるが、実質的に類似する方法で、CABACを使用して、ビットストリームのシンタックス要素に対する値をデコードしてもよい。シンタックス要素は、CTUへのピクチャーの区分情報と、QTBT構造のような、対応する区分構造にしたがって、各CTUを区分することとを規定して、CTUのCUを規定していてもよい。シンタックス要素は、ビデオデータのブロック(例えば、CU)に対する予測および残差情報をさらに規定していてもよい。
【0063】
[0072]
残差情報は、例えば、量子化変換係数によって表されていてもよい。ビデオデコーダ300は、ブロックの量子化された変換係数を逆量子化および逆変換して、ブロックに対する残差ブロックを再生させてもよい。ビデオデコーダ300は、シグナリングされた予測モード(イントラ予測またはインター予測)と、関連する予測情報(例えば、インター予測に対する動き情報)とを使用して、ブロックに対する予測ブロックを形成する。ビデオデコーダ300は、その後、(サンプル毎のベースで)予測ブロックと残差ブロックとを組み合わせて、元のブロックを再生させてもよい。ビデオデコーダ300は、デブロッキングプロセスを実行することのような、追加の処理を実行して、ブロックの境界に沿った視覚的アーティファクトを低減させてもよい。
【0064】
[0073]
上記で説明したように、いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、インター予測を使用して、現在ブロックをエンコードまたはデコードするように構成されていてもよい。インター予測では、ビデオエンコーダ200およびビデオデコーダ300は、現在ブロックに対する動きベクトルに基づいて、予測ブロックを決定する。例えば、現在ブロックに対する動きベクトルは、イントラブロックコピー(IBC)モードに対して、別のピクチャー中の、または、場合によっては、同じピクチャー中の予測ブロックを指している。
【0065】
[0074]
いくつかの例では、ビデオエンコーダ200が現在ブロックに対する動きベクトルの値をシグナリングするのではなく、ビデオエンコーダ200は、ビデオデコーダ300が現在ブロックに対する動きベクトルを決定するのに使用する動きベクトル予測子の情報をシグナリングしてもよい。例えば、ビデオエンコーダ200およびビデオデコーダ300は、以前にエンコードされたまたはデコードされたブロックの動きベクトル情報を含む動きベクトル予測子リストを構築するように構成されていてもよい。以前にエンコードされたまたはデコードされたブロックの動きベクトル情報は、動きベクトル予測子として見なしてもよい。ビデオエンコーダ200およびビデオデコーダ300は、同様の動作を実行して、動きベクトル予測子リストを構築してもよい。
【0066】
[0075]
ビデオエンコーダ200は、特定の動きベクトル予測子を識別する動きベクトル予測子リストへのエントリを示す情報をシグナリングしてもよい。ビデオデコーダ300は、動きベクトル予測子リストへのエントリに基づいて、動きベクトル予測子を決定してもよい。マージモードに対して、ビデオデコーダ300は、動きベクトル予測子を、現在ブロックに対する動きベクトルに等しくなるように設定してもよい。AMVPモードに対して、ビデオデコーダ300は、動きベクトル予測子と現在ブロックに対する動きベクトルとの間の動きベクトル差分(MVD)をビデオエンコーダ200からさらに受信してもよい。ビデオデコーダ300は、MVDを動きベクトル予測子に追加して、現在ブロックに対する動きベクトルを決定してもよい。
【0067】
[0076]
動きベクトル予測子リストは、動きベクトル予測子として、空間的に隣接するブロック(例えば、現在ブロックに近接し、現在ブロックと同じピクチャー中にあるブロック)の動きベクトル情報と、コロケートされたブロック(例えば、特定のロケーションにおける別のピクチャー中にあるブロック)の動きベクトル情報とを含んでいてもよい。コロケートされたブロックは、時間的に隣接するブロックとして呼ばれることがある。
【0068】
[0077]
ビデオエンコーダ200およびビデオデコーダ300は、空間的に隣接するブロックとコロケートされたブロックとの動きベクトル情報を動きベクトル候補リスト中に追加して、動きベクトル候補リストを構築してもよい。1つ以上の例では、ビデオエンコーダ200およびビデオデコーダ300は、HMVP候補履歴テーブルからの履歴ベース動きベクトル予測(HMVP)候補を動きベクトル候補リスト中にさらに追加するように構成されていてもよい。
【0069】
[0078]
HMVP候補は、現在ブロックの近接する隣接ブロックを越えて延在するブロックの動きベクトル情報を指している。例えば、現在ブロックに、そして現在ブロックの左に近接するブロックは、空間的に隣接するブロックである左隣接ブロックの例であるかもしれない。左隣接ブロックの動き情報は、動きベクトル候補リスト中に含まれているかもしれない。左隣接ブロックに近接するブロックは、空間的に隣接するブロックではなく、このようなブロックの動きベクトル情報は、HMVP候補履歴テーブルの一部であるHMVP候補の例である。
【0070】
[0079]
本開示は、ビデオエンコーダ200およびビデオデコーダ300が、HMVP候補履歴テーブルからのHMVP候補を動きベクトル予測子リストに追加するために実行してもよい例示的な技法を説明する。1つの例として、HMVP候補履歴テーブルは、HMVP候補の第1のサブセットとHMVP候補の第2のサブセットとを含むとして見なしてもよい。1つの例では、HMVP候補の第1のサブセットは、HMVP候補履歴テーブルからの2つの(例えば、最初の2つの)HMVP候補を含み、HMVP候補の第2のサブセットは、HMVP候補履歴テーブル中の残りのHMVP候補を含んでいる。
【0071】
[0080]
ビデオエンコーダ200およびビデオデコーダ300は、HMVP候補の第1のサブセット中のHMVP候補のそれぞれを、動きベクトル候補リスト中のエントリのサブセット(例えば、すべてのエントリよりも少ない)と比較するように構成されていてもよい。例として、ビデオエンコーダ200およびビデオデコーダ300は、空間的に隣接するブロックとコロケートされたブロックとの動きベクトル情報に基づいて、動きベクトル候補リストを構築していてもよい。ビデオエンコーダ200およびビデオデコーダ300は、HMVP候補の第1のサブセット中のHMVP候補のそれぞれを、動きベクトル候補リストの2つのエントリと比較し、HMVP候補が動きベクトル候補リスト中のエントリと異なる場合には、HMVP候補の第1のサブセット中のHMVP候補を追加するかもしれない。
【0072】
[0081]
例えば、HMVP候補の第1のサブセットは、第1のHMVP候補と第2のHMVP候補とを含むことができる。この例では、ビデオエンコーダ200およびビデオデコーダ300は、第1のHMVP候補を、動きベクトル候補リスト中の第1のエントリおよび動きベクトル候補リスト中の第2のエントリと比較し、動きベクトル候補リスト中の他のエントリとは比較しないかもしれない。第1のHMVP候補が第1のエントリおよび第2のエントリと異なる場合には、ビデオエンコーダ200およびビデオデコーダ300は、第1のHMVP候補を動きベクトル候補リストに追加するかもしれない。
【0073】
[0082]
ビデオエンコーダ200およびビデオデコーダ300は、第2のHMVP候補を、動きベクトル候補リスト中の第1のエントリおよび動きベクトル候補リスト中の第2のエントリと比較して、動きベクトル候補リスト中の他のエントリとは比較しないかもしれない。第2のHMVP候補が第1のエントリおよび第2のエントリと異なる場合には、ビデオエンコーダ200およびビデオデコーダ300は、第2のHMVP候補を動きベクトル候補リストに追加するかもしれない。
【0074】
[0083]
第1のHMVP候補および第2のHMVP候補を使用して、2つのHMVP候補がHMVP候補から選択されることが示される。第1のHMVP候補および第2のHMVP候補は、HMVP候補履歴テーブル中の最初の2つの候補であってもよいが、例示的な技法はそのようには限定されない。同様に、動きベクトル予測子リスト中の第1のエントリおよび第2のエントリは、動きベクトル予測子リスト中の最初の2つのエントリであってもよいが、例示的な技法はそのようには限定されない。
【0075】
[0084]
HMVP候補の第1のサブセットの1つ以上(例えば、一方または両方)のHMVP候補を追加した後、動きベクトル予測子リスト中のエントリの総数が動きベクトル予測子リスト中のエントリの最大数未満である場合には、ビデオエンコーダ200およびビデオデコーダ300は、動きベクトル予測子リストのサイズが最大サイズに達するか、または、HMVP候補の第2のサブセット中に残っているHMVP候補がなくなるまで、HMVP候補の第2のサブセットからのHMVP候補を追加してもよい。1つ以上の例では、ビデオエンコーダ200およびビデオデコーダ300は、HMVP候補の第2のサブセットからのHMVP候補を動きベクトル予測子リスト中のエントリと比較することなく、HMVP候補の第2のサブセットからのHMVP候補を追加してもよい。
【0076】
[0085]
ビデオエンコーダ200およびビデオデコーダ300は、比較動作を実行するコストと、動きベクトル予測子リスト中のエントリの重複を最小限にすることの利益とのバランスをとりながら、HMVP候補を含めるように動きベクトル予測子リストを構築してもよい。例えば、ビデオエンコーダ200およびビデオデコーダ300は、HMVP候補が動きベクトル予測子リスト中の既存のエントリの重複であるか否かを決定する何らかの比較動作を実行することなく、HMVP候補を動きベクトル予測子リストに追加してもよい。このケースでは、動きベクトル予測子リストは満杯になる可能性があるが、潜在的に良好な動きベクトル予測子候補(例えば、実際の動きベクトルに近い動きベクトル)が除外される。その理由は、重複動きベクトルが動きベクトル予測子リスト中に存在し、動きベクトル予測子リストが満杯であるからである。しかしながら、各HMVP候補を動きベクトル予測子リスト中の各エントリと比較して、何らかの重複を除外することは、動きベクトル予測子リストを構築するのに要求される処理時間を増加させ、これは次に、エンコーディングおよびデコーディングプロセスの時間を増加させるかもしれない。
【0077】
[0086]
本開示で説明されている1つ以上の例によれば、重複があるか否かを決定するために、HMVP候補と動きベクトル予測子リスト中のエントリとの間の比較の数を制限することにより、実行する必要がある比較動作の数が制限される。例えば、上記で説明したように、ビデオエンコーダ200およびビデオデコーダ300は、HMVP候補の第1のサブセット(例えば、2つのHMVP候補)を動きベクトル予測子リスト中のエントリのサブセット(例えば、動きベクトル予測子リスト中の2つのエントリ)と比較してもよい。ビデオエンコーダ200およびビデオデコーダ300は、動きベクトル予測子リストのエントリのサブセットとは異なっている、第1のサブセットからのHMVP候補のうちの1つ以上を追加し、動きベクトル予測子リストのエントリのサブセット中のエントリのうちの1つと同じである、第1のサブセットからのHMVP候補のうちの1つ以上を除外してもよい。このように、すべてのHMVP候補が動きベクトル予測子リスト中のすべてのエントリと比較されるケースと比較して、比較の数は低減され、これにより、動きベクトル予測子リストを構築するのに必要とされる時間量を低減させる。
【0078】
[0087]
さらに、特定のHMVP候補が動きベクトル予測子リスト中のエントリの重複である可能性は、HMVP候補のブロックと、動きベクトル情報が動きベクトル予測子リスト中に含まれているブロックと、のロケーションに基づいていてもよい。例えば、動きベクトル予測子リスト中の第1のエントリは、左隣接ブロックの動きベクトル情報を含んでいてもよく、動きベクトル予測子リスト中の第2のエントリは、上隣接ブロックの動きベクトル情報を含んでいてもよい。いくつかの例では、第1のHMVP候補は、左隣接ブロックの左に隣接するブロックの動きベクトル情報であってもよく、第2のHMVP候補は、上隣接ブロックの上であるブロックの動きベクトル情報であってもよい。
【0079】
[0088]
左および上の隣接ブロックに関する第1のHMVP候補に対するブロックの相対ロケーションに起因して、第1のHMVP候補が、動きベクトル予測子リスト中の他の何らかのエントリ以外の、動きベクトル予測子リストの第1のエントリまたは第2のエントリに類似している可能性がより高い。同様に、左および上の隣接ブロックに関する第2のHMVP候補に対するブロックの相対ロケーションに起因して、第2のHMVP候補が、動きベクトル予測子リスト中の他の何らかのエントリ以外の、動きベクトル予測子リストの第1のエントリまたは第2のエントリに類似している可能性がより高い。
【0080】
[0089]
第2のHMVPに対するブロックに関する第1のHMVP候補に対するブロックの相対的ロケーションに起因して、第1のHMVP候補および第2のHMVP候補が動きベクトル予測子リスト中の(例えば、第1のエントリおよび第2のエントリを除く)他のエントリのいずれかと同じである可能性は比較的低いかもしれない。また、これらそれぞれのブロックの相対的ロケーションに起因して、(例えば、第1および第2のHMVP候補を除く)残りのHMVP候補が動きベクトル予測子リスト中のエントリのいずれかと同じである可能性は比較的低いかもしれない。したがって、1つ以上の例では、ビデオエンコーダ200およびビデオデコーダ300は、動きベクトル予測子リストが満杯になるか、または、利用可能なHMVP候補がなくなるまで、HMVP候補を動きベクトル予測子リスト中のエントリのいずれかと比較することなく、HMVP候補の第2のサブセットを動きベクトル予測子リストに追加してもよい。
【0081】
[0090]
再度説明すると、上記の例では、第1および第2のHMVP候補を含むHMVP候補の第1のサブセットは、HMVP候補履歴テーブル中の最初の2つのHMVP候補であってもよいが、例示的な技法はそのようには限定されない。また、HMVP候補の第2のサブセットは、第1および第2のHMVP候補を除く、残りのHMVP候補を含んでいてもよい。さらに、動きベクトル予測子リスト中のエントリのサブセットは、動きベクトル予測子リスト中の最初の2つのエントリであってもよいが、例示的な技法はそのようには限定されない。
【0082】
[0091]
本開示は、一般的に、シンタックス要素のような、ある情報を「シグナリングすること」に関連しているかもしれない。「シグナリング」という用語は、一般的に、シンタックス要素に対する値のおよび/またはエンコードされたビデオデータをデコードするのに使用される他のデータの通信に関連しているかもしれない。すなわち、ビデオエンコーダ200は、ビットストリーム中でシンタックス要素に対する値をシグナリングしてもよい。一般的に、シグナリングは、ビットストリーム中で値を発生させることを指している。上述のように、発信元デバイス102は、実質的にリアルタイムで、または、宛先デバイス116による後の取り出しのために、シンタックス要素を記憶デバイス112に記憶させるときに起こるかもしれないような、リアルタイムではなく、ビットストリームを宛先デバイス116に転送してもよい。
【0083】
[0092]
ビデオエンコーダ200およびビデオデコーダ300の例は、
図2および
図3に関してより詳細に示され説明されている。
図2および
図3を説明する前に、以下では、
図4A、
図4B、
図5および
図6に関して、動きベクトル予測のような、ビデオコーディングプロセスのいくつかの追加の詳細を説明する。
【0084】
[0093]
以下で、HEVCにおけるCU構造および動きベクトル予測をレビューする。HEVCでは、スライス中の最大コーディングユニットが、コーディングツリーブロック(CTB)またはコーディングツリーユニット(CTU)として呼ばれる。CTBは、ノードがコーディングユニットである、4分ツリーを含んでいる。
【0085】
[0094]
CTBのサイズは、(技術的には8×8CTBサイズをサポートすることができるが)HEVCメインプロファイルにおいて16×16から64×64の範囲をとることができる。コーディングユニット(CU)は、CTBと同じサイズから8×8までの小ささであってもよい。各コーディングユニットは、インターコード化またはイントラコード化のような1つのモードでコード化される。インターコード化はまた、インター予測コード化またはインター予測されたとして呼ばれることがあり、イントラコード化はまた、イントラ予測コード化またはイントラ予測されたとして呼ばれることがある。
【0086】
[0095]
CUがインターコード化されるとき、CUは、2つまたは4つの予測ユニット(PU)にさらに区分されてもよく、または、さらなる区分が適用されないときには、1つのPUであってもよい。2つのPUが1つのCU中に存在するときには、PUは、半分のサイズの長方形、あるいは、CUの1/4または3/4のサイズを有する2つの長方形サイズとすることができる。CUがインターコード化されるとき、各PUは、インター予測モードで導出される、1つのセットの動き情報を有する。
【0087】
[0096]
以下で、動きベクトル予測をレビューする。HEVC標準規格では、予測ユニット(PU)に対して、それぞれマージ(スキップはマージの特別なケースと見なされる)モードおよび高度動きベクトル予測(AMVP)モードという名の、2つのインター予測モードがある。AMVPモードまたはマージモードのいずれかにおいて、複数の動きベクトル予測子に対して、動きベクトル(MV)候補リストが維持される。MV候補リストは、動きベクトル予測子リストとして呼ばれることもある。MV候補リストから1つの候補を取り出すことによって、現在PUの、動きベクトルとともに、マージモードにおける参照インデックスが発生される。MV候補リストは、マージモードに対して5つまでの候補と、AMVPモードに対して2つだけの候補とを含んでいてもよい。マージ候補は、動き情報のセット、例えば、両参照ピクチャーリスト(リスト0およびリスト1)に対応する動きベクトルと、参照インデックスとを含んでいてもよい。マージ候補がマージインデックスによって識別される場合には、現在ブロックの予測のために使用される参照ピクチャーとともに、関係する動きベクトルが決定される。言い換えると、マージインデックスにより、動きベクトル予測子リスト中で識別される動きベクトルおよび参照ピクチャーは、現在ブロックの動きベクトルおよび参照ピクチャーと等しいように設定される。
【0088】
[0097]
一方、AMVPモード下では、AMVP候補が動きベクトルのみを含むことから、リスト0またはリスト1のいずれかからの各潜在的予測方向に対して、MV候補リストへのMV予測子(MVP)インデックスとともに、参照インデックスが、明示的にシグナリングされる必要がある。AMVPモードでは、(例えば、上記で説明した動きベクトル差分(MVD)に基づいて、)予測された動きベクトルをさらに改善することができる。両方のモードに対する候補は、同じ空間的および時間的に隣接するブロックから同様に導出される。
【0089】
[0098]
以下では、その動きベクトル情報が動きベクトル予測子として形成される空間的に隣接するブロックをレビューする。いくつかの例では、空間MV候補(例えば、空間動きベクトル予測子)は、それぞれ、特定のPU(PU
0)434および438に対する
図4Aおよび
図4B中に示されている隣接ブロックから導出されるが、ブロックから候補を発生させるための方法は、マージモードとAMVPモードとでは異なる。
図4Aは、マージモードに対する空間的隣接候補を示す概念図である。
図4Bは、AMVPモードに対する空間的隣接候補を示す概念図である。
【0090】
[0099]
マージモードでは、いくつかの例では、5つまでの空間MV候補を、
図4Aに示されている順序で導出でき、順序は
図4Aに示すように、以下の通りである:左(0、A1)、上(1、B1)、右上(2、B0)、左下(3、A0)および左上(4、B2)。例えば、PU0 434に対して、ブロックA1は0として識別され、PU0 434の左にあり、ブロックB1は1として識別され、PU0 434の上にあり、ブロックB0は2として識別され、PU0 434の右上にあり、PU1 436の上にあり、ブロックA0は3として識別され、PU0 434の左下にあり、ブロックB2は4として識別され、PU0 434の左上にある。
【0091】
[0100]
AMVPモードでは、いくつかの例では、隣接するブロックは、
図4Bに示されるように、それぞれPU0 438の左下および左にあるブロック0および1を含む左グループと、PU0 438の右上、上および左上にあるブロック2、3および4を含む上グループとの、2つのグループに分割される。ブロック2は、PU1 440の上にある。各グループに対して、シグナリングされた参照インデックスによって示されるものと同じ参照ピクチャーを参照する隣接するブロック中の潜在的候補は、グループの最終候補を形成するために選択されるべき最高の優先度を有する。すべての隣接するブロックが、同じ参照ピクチャーを指す動きベクトルを含まないかもしれない。したがって、このような候補を見つけることができない場合には、最終候補を形成するために、最初の利用可能な候補をスケーリングしてもよく、したがって、時間的距離差分を補償できる。
【0092】
[0101]
以下では、
図5により時間動きベクトル予測をレビューする。
図5は、時間動きベクトル予測子(TMVP)候補とTMVPに対する動きベクトルスケーリングとを示す概念図である。
【0093】
[0102]
いくつかの例では、TMVP候補は、有効にされて利用可能である場合には、空間動きベクトル候補(例えば、空間的に隣接するブロックの動きベクトル情報)の後にMV候補リスト(例えば、動きベクトル予測子リスト)に追加される。TMVP候補に対する動きベクトル導出のプロセスは、マージモードとAMVPモードの両方に対して同じであるが、マージモードにおけるTMVP候補に対するターゲット参照インデックスは常に0に設定される。
【0094】
[0103]
いくつかの例では、TMVP候補導出に対する1次ブロックロケーションは、ブロックT540として
図5中に示されているように、コロケートされたPUの外側の右下ブロックである。ブロックT540のロケーションは、空間的に隣接する候補を発生させるために使用される上ブロックおよび左ブロックへのバイアスを補償するためのものであってもよい。しかしながら、ブロックT540が現在CTB行の外側に位置するか、または、動き情報がブロックT540に対して利用可能でない場合には、ブロックT540は、PUの中央ブロック541で置換される。
【0095】
[0104]
図5では、現在ピクチャー550中のTMVP候補に対する動きベクトル548は、スライスレベルにおいて示される、コロケートされたピクチャー546のコロケートされたPUから導出される。コロケートされたPUに対する動きベクトル(MV)は、コロケートされたMV542として呼ばれる。TMVP候補動きベクトルを導出するために、コロケートされたMV542は、
図5に示されるように、時間距離差分を補償するようにスケーリングされてもよい。例えば、コロケートされたピクチャー546とコロケートされた参照ピクチャー544との間の時間差分、および、現在ピクチャー550と現在参照ピクチャー552との間の時間差分を使用して、コロケートされたMV542をスケーリングして、動きベクトル548を発生させる。
【0096】
[0105]
以下で、HEVCにおける動き予測のいくつかの他の態様をレビューする。マージモードおよびAMVPモードのいくつかの態様を以下で説明する。
【0097】
[0106]
動きベクトルスケーリング:動きベクトルの値は、プレゼンテーション時間におけるピクチャーの距離に比例することがある。動きベクトルは、2つのピクチャー、参照ピクチャーと、動きベクトルを含むピクチャー(すなわち、包含ピクチャー)とを関係付ける。動きベクトルを利用して、他の動きベクトルを予測するとき、ピクチャー順序カウント(POC)値に基づいて、包含ピクチャーと参照ピクチャーとの距離が計算される。
【0098】
[0107]
予測されるべき動きベクトルに対して、その関係付けられた包含ピクチャーと参照ピクチャーの両方は異なるかもしれない。したがって、(POCに基づく)新しい距離が計算され、そして、動きベクトルは、これら2つのPOC距離に基づいて、スケーリングされる。空間的に隣接する候補に対して、2つの動きベクトルに対する包含ピクチャーは同じである一方で、参照ピクチャーは異なる。HEVCにおいて、動きベクトルスケーリングは、空間的におよび時間的に隣接する候補に対して、TMVPとAMVPの両方に適用される。
【0099】
[0108]
人工動きベクトル候補発生:動きベクトル候補リストが完全でない(例えば、予め定められた数よりも少ない候補)場合には、人工動きベクトル候補を発生させ、候補リストがすべての候補を有するまで、候補リストの最後に挿入される。マージモードでは、2つのタイプの人工MV候補:Bスライスのみに対して導出される組み合わされた候補と、Bスライスのみに対して導出される組み合わされた候補が候補リストを満たすのに十分な人工候補を提供しない場合に、AMVPのみに対して使用されるゼロ候補とがある。
【0100】
[0109]
候補リスト中に既にあり、必要な動き情報を有する候補の各ペアに対して、リスト0中のピクチャーを参照する第1の候補の動きベクトルと、リスト1中のピクチャーを参照する第2の候補の動きベクトルとの組み合わせによって、双方向に組み合わされた動きベクトル候補が導出される。
【0101】
[0110]
候補挿入に対する、余分な部分を取り除くプロセス:異なるブロックからの候補が、たまたま同じであるかもしれず、これはマージ/AMVPの候補リストの効率を低下させる。この問題に対処するために、余分な部分を取り除くプロセスを適用する。余分な部分を取り除くプロセスは、同一の候補を挿入することを回避するために、現在の候補リスト中の1つの候補を他の候補と比較する。複雑さを低減させるために、各潜在的候補をリスト中の他のすべての既存の候補と比較することを回避するように、限られた数の余分な部分を取り除くプロセスだけを適用する。
【0102】
[0111]
VVCの開発は、拡張動きベクトル予測を含んでいる。例えば、現在ブロックに対する動きベクトル予測またはマージ予測の候補リストを導出または改善するいくつかのインターコーディングツールが提案されている。いくつかの例を以下で説明する。
【0103】
[0112]
以下では、L.Zhang,K.Zhang,H.Liu,Y.Wang,P.Zhao,およびD.Hong,「CE4-関連:履歴ベース動きベクトル予測」,JVET-K0104,2018年7月中で説明されているような履歴ベース動き予測(HMVP)を説明する。HMVPは、ビデオエンコーダ200およびビデオデコーダ300が、直近の原因となる隣接する動きフィールド中のMVに加えて、過去からのデコードされたMVのリストから、各ブロックに対するMV予測子を決定する履歴ベースの方法である(例えば、直近の空間的に隣接するブロックのMVは、直近の原因となる隣接する動きフィールド中のMVの例である)。HMVPは、ビデオエンコーダ200およびビデオデコーダ300が、HMVP候補として以前にデコードされた動きベクトルに対するテーブルを構築することを含んでいる。
【0104】
[0113]
いくつかの実施形態では、ビデオエンコーダ200およびビデオデコーダ300は、エンコーディング/デコーディングプロセスの間に、複数のHMVP候補によりテーブルを構築することができる。テーブルを構築することは、HMVP候補をテーブルに追加することとともに、HMVP候補をテーブルから除去することとを含んでいてもよい。ビデオエンコーダ200およびビデオデコーダ300は、エンコーディングまたはデコーディングのために新しいスライスに遭遇したとき、テーブルを空にする(例えば、HMVP候補を除去する)ように構成されていてもよい。インターコード化されたブロックがあるときはいつでも、ビデオエンコーダ200およびビデオデコーダ300は、新しいHMVP候補として、先入れ先出し(FIFO)方式で、関係する動き情報をテーブルに挿入するように構成されていてもよい。したがって、ビデオエンコーダ200およびビデオデコーダ300は、制約FIFOルールを適用するように構成されていてもよい。いくつかの技法では、HMVP候補をテーブルに挿入するとき、ビデオエンコーダ200およびビデオデコーダ300は、最初に冗長検査(例えば、余分な部分を取り除く)を適用して、テーブル中に同一のHMVP候補があるか否かを決定するように構成されていてもよい。見つかった場合、ビデオエンコーダ200およびビデオデコーダ300は、その特定のHMVP候補をテーブルから除去するように構成されていてもよく、その候補の後のすべてのHMVP候補が移動される。
【0105】
[0114]
ビデオエンコーダ200およびビデオデコーダ300は、マージ候補リスト構築プロセスにおいてHMVP候補を使用するように構成されていてもよい。例えば、ビデオエンコーダ200およびビデオデコーダ300は、TMVP候補の後に、最後のエントリから最初のエントリまですべてのHMVP候補をテーブル中に挿入するように構成されていてもよい。ビデオエンコーダ200およびビデオデコーダ300は、HMVP候補上で、余分な部分を取り除くことを適用するように構成されていてもよい。いったん、利用可能なマージ候補の総数が、許容されたマージ候補のシグナリングされたまたは予め定められた最大数に達すると、ビデオエンコーダ200およびビデオデコーダ300は、マージ候補リスト構築プロセスを終了するように構成されていてもよい。マージ候補リスト構築は、動きベクトル予測子リストを構築する1つの例である。
【0106】
[0115]
同様に、ビデオエンコーダ200およびビデオデコーダ300は、AMVP候補リスト構築プロセスにおいて、HMVP候補を使用して、AMVP候補リストを構築するように構成されていてもよい。ビデオエンコーダ200およびビデオデコーダ300は、TMVP候補の後に、テーブル中に、最後のK個のHMVP候補の動きベクトルを挿入するように構成されていてもよい。ビデオエンコーダ200およびビデオデコーダ300は、AMVPターゲット参照ピクチャーと同じ参照ピクチャーを持つHMVP候補のみを使用して、AMVP候補リストを構築するように構成されていてもよい。ビデオエンコーダ200およびビデオデコーダ300は、HMVP候補において余分な部分を取り除くことを適用するように構成されていてもよい。AMVP候補リスト構築は、動きベクトル予測子リストを構築する別の例である。
【0107】
[0116]
以下では、非近接空間マージ候補を説明する。R.Yu氏らによる「CE4 2.1:非近接空間マージ候補の追加」ITU-T SG16WP3およびISO/IEC JTC1/SC29/WG11のジョイントビデオエキスパートチーム(JVET)、第11回会議:2018年7月10~18日スロベニア、リュブリャナ(以下、「JVET-K0228」)において説明されている非近接空間マージ候補の構築は、2つの非近接隣接位置からの新たな空間候補の導出を含んでいる。例えば、
図6中に示されているように、ビデオエンコーダ200およびビデオデコーダ300は、現在ブロック648の上の最も近い非近接ブロック650から、および/または、現在ブロック648の左である最も近い非近接ブロック652から、新しい空間候補を導出してもよい。例えば、
図6は、隣接するブロックA0、A1、B2、B1およびB0を有する現在ブロック648を図示している。いくつかの例では、非近接空間マージ候補は、現在ブロック648に空間的に隣接しない、
図6のブロックHN652およびブロックVN650の動き情報を含んでいる。すなわち、
図6は、HMVP候補履歴テーブルを構築するのに、その動きベクトル情報を使用してもよいブロックの例を図示している。
【0108】
[0117]
ブロック650および652は、現在ブロック648まで1CTUの最大距離内に制限される。非近接候補のフェッチプロセスは、垂直方向に以前にデコードされたブロックをトレースすることにより開始する。垂直逆トレースは、インターブロックに遭遇したとき、または、トレースバック距離が1CTUサイズに達したときに停止する。
【0109】
[0118]
その後、フェッチプロセスは、水平方向に、以前にデコードされたブロックをトレースする。水平フェッチプロセスを停止するための基準は、垂直非近接候補のフェッチに成功したか否かに依存する。垂直非近接候補がフェッチされない場合には、水平フェッチプロセスは、インターコード化されたブロックに遭遇したときに、または、トレースバック距離が1CTUサイズしきい値を超えるときに停止する。フェッチされた垂直非近接候補がある場合には、水平フェッチプロセスは、垂直非近接候補とは異なるMVを含むインターコード化されたブロックに遭遇したときに、または、トレースバック距離が1CTUサイズしきい値を超えるときに停止する。フェッチされた非近接隣接候補は、マージ候補リスト中のTMVP候補の前に追加される。
【0110】
[0119]
以下では、ペアワイズ平均候補を説明する。ペアワイズ平均候補は、VTM3.0(VVCテストモデル3.0)において使用される。ビデオエンコーダ200およびビデオデコーダ300は、(空間候補、TMVPおよびHMVPを含む)現在のマージ候補リスト中の候補の予め規定されたペアを平均することにより、ペアワイズ平均候補を発生させるように構成されていてもよい。1つの例では、予め規定されたペアは、{(0,1),(0,2),(1,2),(0,3),(1,3),(2,3)}として規定され、ここで、数は、マージ候補リストへのマージインデックスを示している。ビデオエンコーダ200およびビデオデコーダ300は、各参照リストに対して別々に平均動きベクトルを計算するように構成されていてもよい。両方の動きベクトルが1つのリスト中で利用可能である場合には、ビデオエンコーダ200およびビデオデコーダ300は、2つの動きベクトルが異なる参照ピクチャーを指していたとしても、これら2つの動きベクトルを平均化するように構成されていてもよい。1つの動きベクトルのみが利用可能である場合には、ビデオエンコーダ200およびビデオデコーダ300は、1つの動きベクトルを直接使用するように構成されていてもよい。動きベクトルが利用可能でない場合には、ビデオエンコーダ200およびビデオデコーダ300は、参照ピクチャーリスト(例えば、リスト0とリスト1の一方または両方)を無効に維持するように構成されていてもよい。ペアワイズ平均候補は、HEVC標準規格における組み合わされた候補を置換する。
【0111】
[0120]
例えば、双方向予測では、動きベクトル候補は、リスト0およびリスト1中の2つの参照を指す2つの動きベクトルを含んでいてもよく、または、動きベクトル候補は、リスト0(または、リスト1)を指す1つの動きベクトルのみを含んでいてもよい。したがって、単方向候補に対して、1つのリストは無効である(例えば、動きベクトルがリスト0を指している場合、リスト1は無効であり、逆も同様である)。
【0112】
[0121]
以下では、候補0および候補1に対するペアワイズ平均候補を決定する例を説明し、候補0は双予測候補であり、2つの動きベクトル(MV0_list0(x_list0,y_list0))および(MV0_list1(x_list1,y_list1))を含み、候補1は、1つの動きベクトル(MV1_list0(x_list0,y_list0))のみを含む単方向予測である。この例では、候補1に対してリスト1は無効であり、発生されたペアワイズ候補は双方向MV((MV0_list0+MV1_list0/2),MV0_list1)である。
【0113】
[0122]
上記で説明したように、HMVP予測モードは、過去からのデコードされたMVを記憶する履歴ベースのルックアップテーブルを使用する。(HMVP候補履歴テーブルとしても呼ばれる)HMVPルックアップテーブルは、マージモードおよびAMVPモードのような、インター予測モードにおいて適用することができる。履歴テーブルからのHMVP候補をマージリストまたはAMVPリストに追加するとき、ビデオエンコーダ200およびビデオデコーダ300は、冗長検査を適用して、リスト中に同一の(例えば、重複する)候補があるか否かを見つけるように構成されていてもよい。いくつかの例では、上記で説明したように、完全冗長検査を適用することは、特にハードウェアインプリメンテーションでは複雑すぎる(例えば、多くの計算リソースまたはクロックサイクルを必要とする)かもしれない。いくつかの例では、HMVP候補履歴テーブルは、インターCUをエンコーディング/デコーディングした後に更新すべきである。また、新たなHMVP候補をHMVP候補履歴テーブルに追加するときには、冗長検査も適用される。
【0114】
[0123]
これらの欠点に鑑みて、本開示は、ビデオエンコーダ200およびビデオデコーダ300が、修正された構築プロセスを使用して、HMVP候補履歴テーブルを構築するように構成されていてもよいいくつかの技法を説明する。加えて、本開示は、ビデオエンコーダ200およびビデオデコーダ300が、(例えば、マージ動きベクトル予測子リストのために、アフィン動きベクトル予測子リストのために、および/または、AMVP動きベクトル予測子リストのために)動きベクトル予測子リストにおいて使用すべき候補をHMVP候補履歴テーブルから決定するように構成されていてもよい追加の技法を説明する。
【0115】
[0124]
本開示の1つの例では、ビデオエンコーダ200およびビデオデコーダ300は、冗長検査を実行することなく、新しいHMVP候補をHMVP候補履歴テーブルに追加するように構成されていてもよい。HMVP候補の数がHMVP候補履歴テーブルの最大許容サイズに達した場合には、ビデオエンコーダ200およびビデオデコーダ300は、テーブル中の最も古いHMVP候補を除去し、その後、新しいHMVP候補を追加するように構成されていてもよい。
【0116】
[0125]
本開示の別の例では、ビデオエンコーダ200およびビデオデコーダ300は、HMVP候補履歴テーブルからの1つ以上のHMVP候補を、マージ候補リスト、AMVP候補リスト、または、アフィン候補リストのような、動きベクトル予測子リストに追加するときに、HMVP候補履歴テーブルをサブサンプリングするように構成されていてもよい。例えば、HMVP候補履歴テーブルのサイズはNであってもよく、サブサンプリングレートはRであってもよく、HMVP候補履歴テーブル中の最初の位置はSであってもよい。1つの例では、N=10、R=3、S=1である。このような場合、HMVP候補履歴テーブルは{c1,c2,c3,c4,c5,c6,c7,c8,c9,c10}である。順方向順序では、選択されたHMVP候補は{c1,c4,c7,c10}である。候補を選択するために逆方向順序を使用する場合、選択されたHMVP候補は{c10,c7,c4,c1}である。
【0117】
[0126]
すなわち、1つの例では、HMVP候補は{c1,c2,c3,c4,c5,c6,c7,c8,c9,c10}を含んでいる。サブサンプリングレートが3である場合、ビデオエンコーダ200およびビデオデコーダ300は、3つ目毎のサンプルを選択してもよい。サブサンプリングの位置が1である場合、ビデオエンコーダ200およびビデオデコーダ300は、第1のHMVP候補を選択し、その後、3つ目毎のサンプルを選択する。例えば、順方向では、第1のサンプルはc1であり、その後、c4(c1後の3つ目のサンプル)であり、その後、c7(c4後の3つ目のサンプル)であり、そして、c10である。c10から始まる逆方向では、サブサンプリングの結果は{c10,c7,c4,c1}である。
【0118】
[0127]
サブサンプリングは1つの例として提供され、本技法はこのようには限定されない。いくつかの例では、HMVP候補履歴テーブルのサブサンプリングはないかもしれない。
【0119】
[0128]
本開示の別の例では、ビデオエンコーダ200およびビデオデコーダ300は、HMVP候補履歴テーブルからのHMVP候補を(マージ候補リスト、AMVP候補リスト、または、アフィン候補リストのような)動きベクトル予測子リストに追加するための簡略化された余分な部分を取り除くアルゴリズムを使用するように構成されていてもよい。1つの例では、HMVP候補履歴テーブルからのHMVP候補を動きベクトル予測子リスト(例えば、マージリスト)に追加するとき、ビデオエンコーダ200およびビデオデコーダ300は、予め規定された候補により、HMVP候補の余分な部分を取り除くように構成されていてもよい。ビデオエンコーダ200およびビデオデコーダ300は、同じ予め規定された候補によりまたは異なる予め規定された候補により、各HMVP候補の余分な部分を取り除くように構成されていてもよい。予め規定された候補は、候補の位置またはタイプにより特定することができる。
【0120】
[0129]
例えば、予め規定された候補の数はY個である。HMVP候補を動きベクトル予測リストに追加するとき、ビデオエンコーダ200およびビデオデコーダ300は、Y個の候補のサブセットを使用して、HMVP候補の余分な部分を取り除くように構成されていてもよい。例えば、VTMおよびベンチマークセット(BMS)ソフトウェアでは、
図4A、4Bおよび5に示されているように、空間および時間の候補のセットは、{A1,B1,B0,A0,B2,TMVP}である。上述したように、A1は
図4A中の番号0により識別され、B1は
図4A中の番号1として識別され、B0は
図4A中の番号2として識別され、A0は
図4A中の番号3として識別され、B2は
図4A中の番号4として識別される。TMVPブロックは
図5中のブロックT540として識別される。
【0121】
[0130]
候補HMVPiは、Y個の候補のサブセットiとの比較により余分な部分を取り除くことができる。Yはまた、HMVP候補を含むことができる。例として、ビデオエンコーダ200およびビデオデコーダ300は、第1のHMVP候補(例えば、HMVP1)を動きベクトル予測子リスト中のY個の候補の第1のサブセット(例えば、サブセット1)と比較し、第2のHMVP候補(例えば、HMVP2)を動きベクトル予測子リスト中のY個の候補の第1のサブセットと比較してもよい。この例では、サブセット1は、動きベクトル予測子リスト中の2つのエントリを含んでいてもよい(例えば、動きベクトル予測子リスト中のY個の候補は、動きベクトル予測子リスト中の2つのエントリに等しい)。
【0122】
[0131]
例として、Yは{A1,B1,B0,A0,B2,TMVP,HMVPi}である。別の例として、Yは{A1,B1,B0,A0,B2,TMVP}である(例えば、動きベクトル予測子リストは、空間的および時間的に隣接するブロックの動きベクトル情報に基づいて構築される)。
【0123】
[0132]
Y個のサブセット
1は{A1およびB1}であり、動きベクトル予測子リスト中の2つのエントリを示している。例えば、ブロックA1(例えば、
図4A中のブロック0)の動きベクトル情報およびブロックB1(例えば、
図4A中のブロック1)の動きベクトル情報は、動きベクトル予測子リスト中の2つのエントリ、場合によっては、最初の2つのエントリであってもよい。
【0124】
[0133]
この例では、ビデオエンコーダ200およびビデオデコーダ300は、第1のHMVP候補をブロックA1(例えば、
図4A中のブロック0)の動きベクトル情報およびブロックB1(例えば、
図4A中のブロック1)の動きベクトル情報と比較してもよい。第1のHMVP候補が、ブロックA1の動きベクトル情報およびブロックB1の動きベクトル情報と異なる場合には、ビデオエンコーダ200およびビデオデコーダ300は、第1のHMVPを動きベクトル予測子リストに追加してもよい。第1のHMVP候補が、ブロックA1またはブロックB1のいずれかの動きベクトル情報と同じである場合には、ビデオエンコーダ200およびビデオデコーダ300は、第1のHMVPを動きベクトル予測子リストに追加しないかもしれない。
【0125】
[0134]
同様に、この例では、ビデオエンコーダ200およびビデオデコーダ300は、第2のHMVP候補をブロックA1(例えば、
図4A中のブロック0)の動きベクトル情報およびブロックB1(例えば、
図4A中のブロック1)の動きベクトル情報と比較してもよい。第2のHMVP候補が、ブロックA1の動きベクトル情報およびブロックB1の動きベクトル情報と異なる場合には、ビデオエンコーダ200およびビデオデコーダ300は、第2のHMVPを動きベクトル予測子リストに追加するかもしれない。第2のHMVP候補が、ブロックA1またはブロックB1のいずれかの動きベクトル情報と同じである場合には、ビデオエンコーダ200およびビデオデコーダ300は、第2のHMVPを動きベクトル予測子リストに追加しないかもしれない。
【0126】
[0135]
上記の例では、第1および第2のHMVP候補は、{A1,B1}により「余分な部分を取り除かれている」と見なされるかもしれない。例えば、第1のHMVP候補がA1およびB1の動きベクトル情報と異なる場合のみ、第1のHMVP候補が動きベクトル予測子リストに追加され、第2のHMVP候補がA1およびB1の動きベクトル情報と異なる場合のみ、第2のHMVP候補が動きベクトル予測子リストに追加される。
【0127】
[0136]
いくつかの例では、すべてのHMVP候補が、{A1,B1}により余分な部分が取り除かれる。別の例では、HMVP候補が、{A1,B1,B0,A0}により余分な部分が取り除かれる。別の例では、異なるHMVP候補は、異なる候補により、余分な部分を取り除くことができる。例えば、上記のケースでは、HMVP候補履歴テーブルのサイズは10である。ビデオエンコーダ200およびビデオデコーダ300は、3つのHMVP候補毎から1つを選択して、マージリスト{c1,c4,c7,c10}中に追加してもよい。候補c1は{A1,B1,B0}により余分な部分が取り除かれる。候補c4は{A1,B1}により余分な部分が取り除かれる。候補c7は{A1}により余分な部分が取り除かれる。c10の候補は余分な部分が取り除かれない。別の例では、HMVP候補は、他のHMVP候補により、余分な部分を取り除くことができる。
【0128】
[0137]
別の例では、HMVP候補履歴テーブルからのHMVP候補を動きベクトル予測子リストに追加するとき、ビデオエンコーダ200およびビデオデコーダ300は、(マージ候補リスト、AMVP候補リスト、または、アフィン候補リストのような)動きベクトル予測子リスト中の予め規定された候補により、HMVP候補の余分な部分を取り除くように構成されていてもよい。例えば、上記で説明したように、HMVP候補をマージリストに追加するとき、ビデオエンコーダ200およびビデオデコーダ300は、マージリスト中の最初のM個の候補により、HMVP候補の余分な部分を取り除くように構成されていてもよい。例えば、M=2。HMVP候補履歴テーブルからのHMVP候補をマージリストに追加するとき、ビデオエンコーダ200およびビデオデコーダ300は、マージリスト中の最初の2個の候補により、HMVP候補の余分な部分を取り除くように構成されていてもよい。
【0129】
[0138]
別の言い方をすると、ビデオエンコーダ200およびビデオデコーダ300は、動きベクトル予測子リスト(例えば、マージリストまたはAMVPリスト)を構築してもよい。ビデオエンコーダ200およびビデオデコーダ300は、HMVP候補履歴テーブル中の第1のHMVP候補を動きベクトル予測子リスト中の2つのエントリと比較し(例えば、M=2であり、2つのエントリは動きベクトル予測子リスト中の最初の2つのエントリである)、動きベクトル予測子リスト中の他のエントリとは比較せず、第1のHMVP候補が動きベクトル予測子リスト中の2つのエントリの両方と異なるとき、第1のHMVP候補を動きベクトル予測子リストに追加してもよい。ビデオエンコーダ200およびビデオデコーダ300は、HMVP候補履歴テーブル中の第2のHMVP候補を動きベクトル予測子リスト中の2つのエントリと比較し、動きベクトル予測子リスト中の他のエントリとは比較せず、第2のHMVP候補が動きベクトル予測子リスト中の2つのエントリの両方と異なるとき、第2のHMVP候補を動きベクトル予測子リストに追加してもよい。
【0130】
[0139]
別の例では、HMVP候補をマージリストに追加するとき、ビデオエンコーダ200およびビデオデコーダ300は、マージリスト中の指定されたタイプの候補により、HMVP候補の余分な部分を取り除くように構成されていてもよい。例えば、ビデオエンコーダ200およびビデオデコーダ300は、マージリスト中の以前に追加された空間候補により、新たなHMVP候補の余分な部分を取り除くように構成されていてもよい。別の例として、ビデオエンコーダ200およびビデオデコーダ300は、マージリスト中の、空間候補、および/または、TMVP候補、および/または、HMVP候補により、新しいHMVP候補の余分な部分を取り除くように構成されていてもよい。
【0131】
[0140]
別の例として、HMVP候補をマージリストに追加するとき、ビデオエンコーダ200およびビデオデコーダ300は、マージリスト中の指定されたタイプ候補の指定された数により、HMVP候補の余分な部分を取り除くように構成されていてもよい。例えば、ビデオエンコーダ200およびビデオデコーダ300は、マージリスト中の最初のM個の空間候補により、HMVP候補の余分な部分を取り除くように構成されていてもよい。
【0132】
[0141]
別の例に対して、HMVP候補をマージリストに追加するとき、ビデオエンコーダ200およびビデオデコーダ300は、マージリスト中の最も近いW個の候補により、HMVP候補の余分な部分を取り除くように構成されていてもよい。例えば、W=2で、4つの候補がマージリストに追加されていてもよい。新しいHMVP候補をマージリストに追加するとき、ビデオエンコーダ200およびビデオデコーダ300は、マージリスト中の3つ目および4つ目の候補により、新しいHMVP候補の余分な部分を取り除くように構成されていてもよい。
【0133】
[0142]
別の例に対して、HMVP候補をAMVPリスト0(例えば、参照ピクチャーリスト0)に追加するとき、ビデオエンコーダ200およびビデオデコーダ300は、現在のコーディングブロックと同じ参照(同じ参照インデックス、または、同じPOC)を使用して、HMVP候補を選択するように構成されていてもよい。ビデオエンコーダ200およびビデオデコーダ300は、上記で説明したように、順方向または逆方向でHMVP候補を検査してもよい。ビデオエンコーダ200およびビデオデコーダ300は、リスト中の特定された数N個のAMVP候補により、最初のM個のHMVP候補の余分な部分を取り除くように構成されていてもよい。双方向予測に対して、AMVPリスト1は、リスト0と同じ方法で発生させることができる。例えば、仮想テストモデル(VTM)では、AMVPリストのサイズは2である。M=1およびN=1である場合、1つ目のHMVP候補のみが、リスト中の最初のAMVP候補により、余分な部分が取り除かれる。M=0である場合、余分な部分を取り除くことは適用されない。
【0134】
[0143]
別の例では、ビデオエンコーダ200およびビデオデコーダ300は、サイズWxHのブロック(領域)を規定するように構成されていてもよい。ビデオエンコーダ200およびビデオデコーダ300は、同じWxH領域内のブロックをコード化するために、同じHMVP候補履歴テーブルを使用するように構成されていてもよい。
【0135】
[0144]
次のセクションは、マージリスト編成に関する。1つの例では、ビデオエンコーダ200およびビデオデコーダ300は、ペアワイズ平均候補発生のためにHMVP候補を使用しないように構成されていてもよい。例えば、予め規定されたペアは、{(0,1),(0,2),(1,2),(0,3),(1,3),(2,3)}として規定され、数は、マージ候補リストへのマージインデックスを示している。ペア中の候補のいずれかがHMVP候補である場合には、ビデオエンコーダ200およびビデオデコーダ300は、ペアワイズ候補を発生させるためにこのペアを使用しないように構成されていてもよい。
【0136】
[0145]
別の例では、ビデオエンコーダ200およびビデオデコーダ300は、ペアワイズ平均候補をHMVP候補の前部に配置するように構成されていてもよい。例えば、ビデオエンコーダ200およびビデオデコーダ300は、ペアワイズ候補のペアの数をN個に低減させ、HMVP候補の前部にN個のペアワイズ候補を置くように構成されていてもよい。例えば、N=2であるとき、ビデオエンコーダ200およびビデオデコーダ300は、{(0,1),(0,2)}のみを使用して、ペアワイズ候補を発生させ、それらをHMVP候補の前部に置いてもよい。別の例として、N=1であるとき、ビデオエンコーダ200およびビデオデコーダ300は、{(0,1)}のみを使用して、ペアワイズ候補を発生させ、それらをHMVP候補の前部に置いてもよい。
【0137】
[0146]
1つの例では、ビデオエンコーダ200およびビデオデコーダ300は、2つの動きベクトル予測子間で、参照方向、および/または、参照インデックス、および/または、POC、および/または、動きベクトル(スケーリングあり/なし)を比較することにより、余分な部分を取り除くことを実行するように構成されていてもよい。比較のうちの1つ以上が一致する場合、ビデオエンコーダ200およびビデオデコーダ300は、この動きベクトル予測子を候補リストに追加しないように構成されていてもよい。
【0138】
[0147]
別の例では、HMVPテーブルのサイズ(N)、サブサンプリングレート(R)、初期位置(S)、HMVPテーブルの数、選択方法、余分な部分を取り除く方法、および/または、コーディングブロックが同じ履歴テーブルを共有するWxHの領域サイズは、ビデオエンコーダ200とビデオデコーダ300の両方において予め規定することができ、あるいは、シーケンスレベル、ピクチャーレベル、スライスレベル、または、ブロックレベルにおいて、ビデオエンコーダ200からビデオデコーダ300にシグナリングされる値として設定することができる。例えば、このような例示的な情報は、シーケンスパラメータセット(SPS)、ピクチャーパラメータセット(PPS)、スライスヘッダ(SH)、コーディングツリーユニット(CTU)、または、コーディングユニット(CU)中でシグナリングすることができる。
【0139】
[0148]
図2は、本開示の技法を実行してもよい、例示的なビデオエンコーダ200を図示するブロック図である。
図2は、説明の目的のために提供されており、本開示において広く例示され説明されているような技法の限定と見なすべきではない。説明の目的のために、本開示は、開発中のHEVCビデオコーディング標準規格およびH.266/VVCビデオコーディング標準規格のような、ビデオコーディング標準規格のコンテキストで、ビデオエンコーダ200を説明する。しかしながら、本開示の技法は、これらのビデオコーディング標準規格には限定されず、一般的に、ビデオエンコーディングおよびデコーディングに適用可能である。
【0140】
[0149]
図2の例では、ビデオエンコーダ200は、ビデオデータメモリ230と、モード選択ユニット202と、残差発生ユニット204と、変換処理ユニット206と、量子化ユニット208と、逆量子化ユニット210と、逆変換処理ユニット212と、再構築ユニット214と、フィルタユニット216と、デコードされたピクチャーバッファ(DBP)218と、エントロピーエンコーディングユニット220とを含んでいる。
【0141】
[0150]
ビデオデータメモリ230は、ビデオエンコーダ200のコンポーネントによってエンコードされるべきビデオデータを記憶していてもよい。ビデオエンコーダ200は、例えば、ビデオソース104(
図1)からのビデオデータメモリ230に記憶されているビデオデータを受け取ってもよい。DPB218は、ビデオエンコーダ200による後続のビデオデータの予測において使用するための参照ビデオデータを記憶する参照ピクチャーメモリとして機能してもよい。ビデオデータメモリ230およびDPB218は、同期ダイナミックランダムアクセスメモリ(DRAM)(SDRAM)を含むDRAM、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または、他のタイプのメモリデバイスのような、さまざまなメモリデバイスのうちのいずれかによって形成されていてもよい。ビデオデータメモリ230およびDPB218は、同じメモリデバイスまたは別個のメモリデバイスによって提供されていてもよい。さまざまな例では、ビデオデータメモリ230は、図示するように、ビデオエンコーダ200の他のコンポーネントとともにオンチップであってもよく、または、これらのコンポーネントに対してオフチップであってもよい。
【0142】
[0151]
本開示では、ビデオデータメモリ230への参照は、そのように具体的に説明されない限り、ビデオエンコーダ200に対して内部であるメモリ、または、そのように具体的に説明されない限り、ビデオエンコーダ200に対して外部であるメモリに限定されるものとして解釈すべきではない。むしろ、ビデオデータメモリ230への参照は、ビデオエンコーダ200がエンコードするために受け取るビデオデータ(例えば、エンコードされるべき現在ブロックに対するビデオデータ)を記憶する参照メモリとして理解すべきである。
図1のメモリ106はまた、ビデオエンコーダ200のさまざまなユニットからの出力の一時記憶装置を提供してもよい。
【0143】
[0152]
図2のさまざまなユニットは、ビデオエンコーダ200によって実行される動作の理解を助けるために示されている。ユニットは、固定機能回路、プログラマブル回路、または、これらの組み合わせとして実現してもよい。固定機能回路は、特定の機能性を提供する回路を指し、実行できる動作に対して予め設定される。プログラマブル回路は、さまざまなタスクを実行するようにプログラムでき、実行できる動作において柔軟な機能性を提供できる回路を指している。例えば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって規定される方法でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行してもよい。固定機能回路は、(例えば、パラメータを受け取るまたはパラメータを出力するために)ソフトウェア命令を実行するかもしれないが、固定機能回路が実行する動作のタイプは一般的に不変である。いくつかの例では、ユニットのうちの1つ以上は、別個の回路ブロック(固定機能またはプログラマブル)であってよく、いくつかの例では、1つ以上のユニットは集積回路であってよい。
【0144】
[0153]
ビデオエンコーダ200は、プログラマブル回路から形成される、算術論理ユニット(ALU)、基本機能ユニット(EFU)、デジタル回路、アナログ回路、および/または、プログラマブルコアを含んでいてもよい。ビデオエンコーダ200の動作がプログラマブル回路によって実行されるソフトウェアを使用して実施される例では、メモリ106(
図1)は、ビデオエンコーダ200が受け取って実行するソフトウェアのオブジェクトコードを記憶していてもよく、または、ビデオエンコーダ200内の(図示されていない)別のメモリがこのような命令を記憶していてもよい。
【0145】
[0154]
ビデオデータメモリ230は、受け取ったビデオデータを記憶するように構成されている。ビデオエンコーダ200は、ビデオデータメモリ230からビデオデータのピクチャーを取り出し、ビデオデータを残差発生ユニット204およびモード選択ユニット202に提供してもよい。ビデオデータメモリ230中のビデオデータは、エンコードされるべき生のビデオデータであってもよい。
【0146】
[0155]
モード選択ユニット202は、動き推定ユニット222と、動き補償ユニット224と、イントラ予測ユニット226とを含んでいる。モード選択ユニット202は、他の予測モードにしたがってビデオ予測を実行するための追加の機能ユニットを含んでいてもよい。例として、モード選択ユニット202は、パレットユニット、(動き推定ユニット222および/または動き補償ユニット224の一部であってもよい)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニット、または、これらに類するものを含んでいてもよい。
【0147】
[0156]
モード選択ユニット202は、一般的に、複数のエンコーディングパスを調整して、エンコーディングパラメータの組み合わせをテストし、結果として、このような組み合わせに対するレート歪み値を得る。エンコーディングパラメータは、CTUのCUへの区分、CUに対する予測モード、CUの残差データに対する変換タイプ、CUの残差データに対する量子化パラメータ等を含んでいてもよい。モード選択ユニット202は、最終的に、他のテストされた組み合わせよりも良好なレート歪み値を有するエンコーディングパラメータの組み合わせを選択してもよい。
【0148】
[0157]
ビデオエンコーダ200は、ビデオデータメモリ230から取り出されたピクチャーを一連のCTUに区分し、スライス内に1つ以上のCTUをカプセル化してもよい。モード選択ユニット202は、上記で説明したQTBT構造またはHEVCの4分ツリー構造のようなツリー構造にしたがって、ピクチャーのCTUを区分してもよい。上記で説明したように、ビデオエンコーダ200は、ツリー構造にしたがってCTUを区分することから1つ以上のCUを形成してもよい。このようなCUは、一般的に、「ビデオブロック」または「ブロック」として呼ばれることもある。
【0149】
[0158]
一般的に、モード選択ユニット202はまた、そのコンポーネント(例えば、動き推定ユニット222、動き補償ユニット224、および、イントラ予測ユニット226)を制御して、現在ブロック(例えば、現在CU、または、HEVCでは、PUとTUとのオーバーラップする部分)に対する予測ブロックを発生させる。現在ブロックのインター予測のために、動き推定ユニット222は、動きサーチを実行して、1つ以上の参照ピクチャー(例えば、DPB218中に記憶されている1つ以上の以前にコード化されたピクチャー)中の1つ以上の密接に一致する参照ブロックを識別してもよい。特に、動き推定ユニット222は、例えば、絶対差分の和(SAD)、二乗差分の和(SSD)、平均絶対差分(MAD)、平均二乗差分(MSD)、または、これらに類するものにしたがって、潜在的参照ブロックが現在ブロックにどれだけ類似しているかを表す値を計算してもよい。動き推定ユニット222は、一般的に、現在ブロックと考慮されている参照ブロックとの間のサンプル毎の差分を使用して、これらの計算を実行してもよい。動き推定ユニット222は、現在ブロックに最も密接に一致する参照ブロックを示す、これらの計算から結果的に生じる最低値を有する参照ブロックを識別してもよい。
【0150】
[0159]
動き推定ユニット222は、現在ピクチャー中の現在ブロックの位置に対する、参照ピクチャー中の参照ブロックの位置を規定する、1つ以上の動きベクトル(MV)を形成してもよい。動き推定ユニット222は、その後、動きベクトルを動き補償ユニット224に提供してもよい。例えば、単方向インター予測に対して、動き推定ユニット222は単一の動きベクトルを提供するかもしれない一方で、双方向インター予測に対して、動き推定ユニット222は2つの動きベクトルを提供するかもしれない。動き補償ユニット224は、その後、動きベクトルを使用して、予測ブロックを発生させてもよい。例えば、動き補償ユニット224は、動きベクトルを使用して、参照ブロックのデータを取り出してもよい。別の例として、動きベクトルがわずかなサンプル精度を有する場合には、動き補償ユニット224は、1つ以上の補間フィルタにしたがって、予測ブロックに対する値を補間してもよい。さらに、双方向インター予測に対して、動き補償ユニット224は、それぞれの動きベクトルによって識別された2つの参照ブロックに対するデータを取り出し、例えば、サンプル毎の平均化または重み付き平均化を通して、取り出されたデータを組み合わせてもよい。
【0151】
[0160]
本開示の技法によれば、動き推定ユニット222および動き補償ユニット224は、HMVP候補履歴テーブルを使用して、インター予測および動きベクトル予測技法を実行してもよい。例えば、以下でより詳細に説明するように、動き推定ユニット222および動き補償ユニット224は、履歴ベース動きベクトル予測(HMVP)候補履歴テーブルを構築し、HMVP候補履歴テーブルからの1つ以上のHMVP候補を動きベクトル予測子リストに追加し、動きベクトル予測子リストを使用して、ビデオデータのブロックをコード化するように構成されていてもよい。
【0152】
[0161]
例えば、動き推定ユニット222および動き補償ユニット224は、現在ブロックの近接する隣接ブロックを越えて延在する以前にコード化されたブロックの動きベクトル情報を含む、履歴ベース動きベクトル予測(HMVP)候補履歴テーブルを構築するように構成されていてもよい。例えば、HMVP候補履歴テーブルは、現在ブロックに直に近接していないブロックの動きベクトル情報のような、HMVP候補を含んでいる。現在ブロックは、マージモードでエンコードされるかもしれないが、AMVPおよび/またはイントラブロックコピー(IBC)モードのような他のモードも可能である。
【0153】
[0162]
動き推定ユニット222および動き補償ユニット224はまた、動きベクトル予測子リストを構築してもよい。動きベクトル予測子リストは、空間的に隣接するブロックまたはコロケートされたブロック(例えば、時間的に隣接するブロック)の動きベクトル情報を含んでいる。1つの例として、動きベクトル予測子リストは、空間的に隣接するブロックA1、B1、B0、A0およびB2のうちの1つ以上の動きベクトル情報を含んでいてもよく、
図4Aでは、ブロックA1は0として識別され、PU0 434の左であり、ブロックB1は1として識別され、PU0 434の上であり、ブロックB0は2として識別され、PU0 434の右上であり、PU1 436の上であり、ブロックA0は3として識別され、PU0 434の左下であり、ブロックB2は4として識別され、PU0 434の左上である。動きベクトル予測子リストはまた、時間的に隣接するブロックT540の動きベクトル情報を含んでいてもよい。
【0154】
[0163]
動き推定ユニット222および動き補償ユニット224は、HMVP候補履歴テーブルからの1つ以上のHMVP候補を動きベクトル予測子リストに追加してもよい。例えば、HMVP候補履歴テーブルからの1つ以上のHMVP候補を追加するために、動き推定ユニット222および動き補償ユニット224は、HMVP候補履歴テーブル中の第1のHMVP候補を動きベクトル予測子リスト中の2つのエントリと比較し、動きベクトル予測子リスト中の他のエントリとは比較せず、第1のHMVP候補が動きベクトル予測子リスト中の2つのエントリの両方と異なるとき、第1のHMVP候補を動きベクトル予測子リストに追加するように構成されていてもよい。動き推定ユニット222および動き補償ユニット224はまた、HMVP候補履歴テーブル中の第2のHMVP候補を動きベクトル予測子リスト中の2つのエントリと比較し、動きベクトル予測子リスト中の他のエントリとは比較せず、第2のHMVP候補が動きベクトル予測子リスト中の2つのエントリの両方と異なるとき、第2のHMVP候補を動きベクトル予測子リストに追加するように構成されていてもよい。
【0155】
[0164]
いくつかの例では、動きベクトル予測子リスト中の2つのエントリのうちの第1のエントリは、左隣接ブロック(例えば、
図4Aにおいて0として表されているブロックA1)の動きベクトル情報を含んでいてもよい。動きベクトル予測子リスト中の2つのエントリのうちの第2のエントリは、上隣接ブロック(例えば、
図4Aにおいて1として表されているブロックB1)の動きベクトル情報を含んでいてもよい。動きベクトル予測子リスト中の第1のエントリおよび第2のエントリは、動きベクトル予測子リスト中の最初の2つのエントリであってもよいが、本技法はそのようには限定されない。また、第1のHMVP候補および第2のHMVP候補は、HMVP候補履歴テーブル中の最初の2つの候補であってもよい。
【0156】
[0165]
いくつかの例では、動き推定ユニット222および動き補償ユニット224が第1および第2のHMVP候補の一方または両方を動きベクトル予測子リストに含めた後でさえも、動きベクトル予測子リストのサイズはその最大サイズに達していないかもしれない。このようなケースでは、さらに多くのHMVP候補が、HMVP候補の第1のサブセット中に含まれているかもしれないが、第1および第2のHMVP候補は、HMVP候補の第1のサブセットの例として見なされるかもしれない。動き推定ユニット222および動き補償ユニット224は、HMVP候補履歴テーブル中の1つ以上のHMVP候補の第1のサブセットに続く1つ以上のHMVP候補の第2のサブセットからの1つ以上のHMVP候補を動きベクトル予測子リスト中のエントリと比較することなく、第2のサブセットからの1つ以上のHMVP候補を、動きベクトル予測子リストに追加してもよい。
【0157】
[0166]
動き推定ユニット222および動き補償ユニット224は、予測ブロックを識別するのに使用される現在ブロックに対する動きベクトルを決定するように構成されていてもよい。動き推定ユニット222および動き補償ユニット224は、現在ブロックに対する決定された動きベクトルに基づいて、動きベクトル予測子リストへのエントリを決定してもよい。例えば、マージモードに対して、動き推定ユニット222および動き補償ユニット224は、決定された動きベクトルの動きベクトル情報と同じ動きベクトル情報を有する動きベクトル予測子リスト中のエントリを決定してもよい。AMVPモードに対して、動き推定ユニット222および動き補償ユニット224は、決定された動きベクトルの動きベクトル情報と類似する動きベクトル情報を有する動きベクトル予測子リスト中のエントリを決定してもよい。動き推定ユニット222および動き補償ユニット224はまた、エントリの動きベクトル情報と、現在ブロックに対する決定された動きベクトルとの間の動きベクトル差分(MVD)を決定してもよい。
【0158】
[0167]
別の例として、イントラ予測、または、イントラ予測コーディングに対して、イントラ予測ユニット226は、現在ブロックに隣接するサンプルから予測ブロックを発生させてもよい。例えば、方向性モードに対して、イントラ予測ユニット226は、一般的に、現在ブロックに渡る規定された方向で、隣接するサンプルの値を数学的に組み合わせ、これらの計算された値を格納して、予測ブロックを生成させてもよい。別の例として、DCモードに対して、イントラ予測ユニット226は、現在ブロックに対する隣接するサンプルの平均を計算し、予測ブロックの各サンプルに対して、この結果として生じた平均を含むように予測ブロックを発生させてもよい。
【0159】
[0168]
モード選択ユニット202は、予測ブロックを残差発生ユニット204に提供する。残差発生ユニット204は、ビデオデータメモリ230から現在ブロックの生のコード化されていないバージョンを受け取り、モード選択ユニット202から予測ブロックを受け取る。残差発生ユニット204は、現在ブロックと予測ブロックとの間のサンプル毎の差分を計算する。結果として生じるサンプル毎の差分は、現在ブロックに対する残差ブロックを規定する。いくつかの例では、残差発生ユニット204はまた、残差ブロック中のサンプル値間の差分を決定し、残差パルスコード変調(RDPCM)を使用して、残差ブロックを発生させてもよい。いくつかの例では、残差発生ユニット204は、バイナリ減算を実行する1つ以上の減算器回路を使用して形成されていてもよい。
【0160】
[0169]
モード選択ユニット202がCUをPUに区分する例では、各PUは、ルーマ予測ユニットおよび対応するクロマ予測ユニットに関係していてもよい。ビデオエンコーダ200およびビデオデコーダ300は、さまざまなサイズを有するPUをサポートしていてもよい。上で示されているように、CUのサイズは、CUのルーマコーディングブロックのサイズを指してもよく、PUのサイズは、PUのルーマ予測ユニットのサイズを指していてもよい。特定のCUのサイズが2N×2Nであると仮定すると、ビデオエンコーダ200は、イントラ予測に対する2N×2NまたはN×NのPUサイズと、インター予測に対する2N×2N、2N×N、N×2N、N×N、または、これらに類する対称PUサイズとをサポートしていてもよい。ビデオエンコーダ200およびビデオデコーダ300はまた、インター予測に対する2N×nU、2N×nD、nL×2N、および、nR×2NのPUサイズに対する非対称区分をサポートしていてもよい。
【0161】
[0170]
モード選択ユニット202がCUをPUにさらに区分しない例では、各CUは、ルーマコーディングブロックおよび対応するクロマコーディングブロックに関係しているかもしれない。上記のように、CUのサイズは、CUのルーマコーディングブロックのサイズを指していてもよい。ビデオエンコーダ200およびビデオデコーダ300は、2N×2N、2N×N、または、N×2NのCUサイズをサポートしていてもよい。
【0162】
[0171]
イントラブロックコピーモードコーディング、アフィンモードコーディング、および、線形モデル(LM)モードコーディングのような、他のビデオコーディング技法に対して、いくつかの例として、モード選択ユニット202は、コーディング技法に関係するそれぞれのユニットを介して、エンコードされている現在ブロックに対する予測ブロックを発生させる。パレットモードコーディングのようないくつかの例では、モード選択ユニット202は、予測ブロックを発生させず、代わりに、選択されたパレットに基づいて、ブロックを再構築する方法を示すシンタックス要素を発生させてもよい。このようなモードでは、モード選択ユニット202は、これらのシンタックス要素を、エンコードされるようにエントロピーエンコーディングユニット220に提供してもよい。
【0163】
[0172]
上記で説明したように、残差発生ユニット204は、現在ブロックと対応する予測ブロックとに対するビデオデータを受け取る。残差発生ユニット204は、その後、現在ブロックに対する残差ブロックを発生させる。残差ブロックを発生させるために、残差発生ユニット204は、予測ブロックと現在ブロックとの間のサンプル毎の差分を計算する。
【0164】
[0173]
変換処理ユニット206は、残差ブロックに1つ以上の変換を適用して、変換係数のブロック(ここでは「変換係数ブロック」として呼ばれる)を発生させる。変換処理ユニット206は、残差ブロックにさまざまな変換を適用して、変換係数ブロックを形成してもよい。例えば、変換処理ユニット206は、離散コサイン変換(DCT)、方向変換、カルーネンレーベ変換(KLT)、または、概念的に類似する変換を、残差ブロックに適用してもよい。いくつかの例では、変換処理ユニット206は、残差ブロックに対して複数の変換、例えば、回転変換のような、1次変換と2次変換とを実行してもよい。いくつかの例では、変換処理ユニット206は、残差ブロックに変換を適用しない。
【0165】
[0174]
量子化ユニット208は、変換係数ブロック中の変換係数を量子化して、量子化された変換係数ブロックを生成させてもよい。量子化ユニット208は、現在ブロックに関係する量子化パラメータ(QP)値にしたがって、変換係数ブロックの変換係数を量子化してもよい。ビデオエンコーダ200は(例えば、モード選択ユニット202を介して)、CUに関係するQP値を調節することによって、現在ブロックに関係する係数ブロックに適用される量子化の程度を調節してもよい。量子化は、情報の損失をもたらすかもしれず、したがって、量子化された変換係数は、変換処理ユニット206によって生成された元の変換係数よりも低い精度を有するかもしれない。
【0166】
[0175]
逆量子化ユニット210および逆変換処理ユニット212は、逆量子化および逆変換をそれぞれ量子化された変換係数ブロックに適用して、変換係数ブロックから残差ブロックを再構築してもよい。再構築ユニット214は、再構築された残差ブロックと、モード選択ユニット202によって発生させた予測ブロックとに基づいて、(潜在的にある程度の歪みを有するが)現在ブロックに対応する再構築されたブロックを生成させてもよい。例えば、再構築ユニット214は、再構築された残差ブロックのサンプルを、モード選択ユニット202によって発生させた予測ブロックからの対応するサンプルに追加して、再構築されたブロックを生成させてもよい。
【0167】
[0176]
フィルタユニット216は、再構築されたブロックに対して1つ以上のフィルタ動作を実行してもよい。例えば、フィルタユニット216は、デブロッキング動作を実行して、CUのエッジに沿ったブロッキネスアーティファクトを低減させてもよい。いくつかの例では、フィルタユニット216の動作はスキップしてもよい。
【0168】
[0177]
ビデオエンコーダ200は、再構築されたブロックをDPB218に記憶させる。例えば、フィルタユニット216の動作が必要とされない例では、再構築ユニット214は、再構築されたブロックをDPB218に記憶させてもよい。フィルタユニット216の動作が必要とされる例では、フィルタユニット216は、再構築されフィルタされたブロックをDPB218に記憶させてもよい。動き推定ユニット222および動き補償ユニット224は、再構築された(そして、潜在的にフィルタ処理された)ブロックから形成された参照ピクチャーをDPB218から取り出して、後にエンコードされるピクチャーのブロックをインター予測してもよい。加えて、イントラ予測ユニット226は、現在ピクチャーのDPB218中の再構築されたブロックを使用して、現在ピクチャー中の他のブロックをイントラ予測してもよい。
【0169】
[0178]
一般的に、エントロピーエンコーディングユニット220は、ビデオエンコーダ200の他の機能的なコンポーネントから受け取ったシンタックス要素をエントロピーエンコードしてもよい。例えば、エントロピーエンコーディングユニット220は、量子化ユニット208からの量子化された変換係数ブロックをエントロピーエンコードしてもよい。別の例として、エントロピーエンコーディングユニット220は、モード選択ユニット202からの予測シンタックス要素(例えば、インター予測に対する動き情報またはイントラ予測に対するイントラモード情報)をエントロピーエンコードしてもよい。エントロピーエンコーディングユニット220は、ビデオデータの別の例であるシンタックス要素に関して、1つ以上のエントロピーエンコーディング動作を実行して、エントロピーエンコードされたデータを発生させてもよい。例えば、エントロピーエンコーディングユニット220は、データに、コンテキスト適応可変長コーディング(CAVLC)動作、CABAC動作、可変対可変(V2V)長コーディング動作、シンタックスベースのコンテキスト適応2値算術コードディング(SBAC)動作、確率区間区分化エントロピー(PIPE)コーディング動作、指数ゴロムエンコーディング動作、または、別のタイプのエントロピーエンコーディング動作を実行してもよい。いくつかの例では、エントロピーエンコーディングユニット220は、シンタックス要素がエントロピーエンコードされないバイパスモードで動作してもよい。
【0170】
[0179]
図示されているように、いくつかの例では、エントロピーエンコーディングユニット220は、モード選択ユニット202から情報を受け取ってもよい。1つの例として、動き推定ユニット222および動き補償ユニット224は、(例えば、上記で説明した例示的な技法を使用して構築されたような)動きベクトル予測子リストへのエントリを示す情報を出力するように構成されていてもよい。エントロピーエンコーディングユニット220は、動きベクトル予測子リストへのエントリを示す情報をエンコードしてシグナリングしてもよい。エントロピーエンコーディングユニット220はまた、現在ブロックに対する動きベクトルにより識別された予測ブロックと現在ブロックとの間の差分を示す情報をエンコードしてシグナリングしてもよい。
【0171】
[0180]
ビデオエンコーダ200は、スライスまたはピクチャーのブロックを再構築するのに必要とされるエントロピーエンコードされたシンタックス要素を含むビットストリームを出力してもよい。特に、エントロピーエンコーディングユニット220は、ビットストリームを出力してもよい。
【0172】
[0181]
上記で説明されている動作は、ブロックに関して説明されている。このような説明は、ルーマコーディングブロックおよび/またはクロマコーディングブロックに対する動作として理解すべきである。上述したように、いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、CUのルーマ成分およびクロマ成分である。いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、PUのルーマ成分およびクロマ成分である。
【0173】
[0182]
いくつかの例では、ルーマコーディングブロックに関して実行される動作は、クロマコーディングブロックに対して繰り返す必要はない。1つの例として、ルーマコーディングブロックに対する動きベクトル(MV)および参照ピクチャーを識別する動作は、クロマブロックに対するMVおよび参照ピクチャーを識別するために繰り返す必要はない。むしろ、ルーマコーディングブロックに対するMVをスケーリングして、クロマブロックに対するMVを決定してもよく、参照ピクチャーは同じであってもよい。別の例として、イントラ予測プロセスは、ルーマコーディングブロックおよびクロマコーディングブロックに対して同じであってもよい。
【0174】
[0183]
図3は、本開示の技法を利用してもよい、例示的なビデオデコーダ300を図示するブロック図である。
図3は、説明の目的のために提供されており、本開示で広く例示され説明されているような技法には限定されない。説明の目的で、本開示は、H.266/VVC、JEMおよびHEVCの技法にしたがうビデオデコーダ300を説明する。しかしながら、本開示の技法は、他のビデオコーディング標準規格に構成されているビデオコーディングデバイスによって実行してもよい。
【0175】
[0184]
図3の例では、ビデオデコーダ300は、コード化されたピクチャーバッファ(CPB)メモリ320と、エントロピーデコーディングユニット302と、予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構築ユニット310と、フィルタユニット312と、デコードされたピクチャーバッファ(DPB)314とを含んでいる。予測処理ユニット304は、動き補償ユニット316とイントラ予測ユニット318とを含んでいる。予測処理ユニット304は、他の予測モードにしたがって予測を実行するための追加ユニットを含んでいてもよい。例として、予測処理ユニット304は、パレットユニット、(動き補償ユニット316の一部を形成していてもよい)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニット、または、これらに類するものを含んでいてもよい。他の例では、ビデオデコーダ300は、より多い、より少ない、または、異なる機能的コンポーネントを含んでいてもよい。
【0176】
[0185]
CPBメモリ320は、ビデオデコーダ300のコンポーネントによってデコードされるべき、エンコードされたビデオビットストリームのようなビデオデータを記憶してもよい。CPBメモリ320中に記憶されているビデオデータは、例えば、コンピュータ読取可能媒体110(
図1)から取得されてもよい。CPBメモリ320は、エンコードされたビデオビットストリームからのエンコードされたビデオデータ(例えば、シンタックス要素)を記憶するCPBを含んでいてもよい。また、CPBメモリ320は、ビデオデコーダ300のさまざまなユニットからの出力を表す一時データのような、コード化されたピクチャーのシンタックス要素以外のビデオデータを記憶してもよい。DPB314は、一般的に、デコードされたピクチャーを記憶し、エンコードされたビデオビットストリームの後続のデータまたはピクチャーをデコードするときに、ビデオデコーダ300が、このデコードされたピクチャーを、参照ビデオデータとして出力および/または使用してもよい。CPBメモリ320およびDPB314は、同期ダイナミックランダムアクセスメモリ(DRAM)(SDRAM)を含むDRAM、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または、他のタイプのメモリデバイスのような、さまざまなメモリデバイスのいずれかによって形成されていてもよい。CPBメモリ320およびDPB314は、同じメモリデバイスまたは別個のメモリデバイスによって提供されてもよい。さまざまな例では、CPBメモリ320は、ビデオデコーダ300の他のコンポーネントとともにオンチップであるか、または、これらのコンポーネントに対してオフチップであってもよい。
【0177】
[0186]
追加的にまたは代替的に、いくつかの例では、ビデオデコーダ300は、メモリ120(
図1)からコード化されたビデオデータを取り出してもよい。すなわち、メモリ120は、CPBメモリ320を用いて上記で説明したようにデータを記憶していてもよい。同様に、ビデオデコーダ300の機能の一部またはすべてが、ビデオデコーダ300の処理回路によって実行されるソフトウェアで実現されるとき、メモリ120は、ビデオデコーダ300によって実行されるべき命令を記憶していてもよい。
【0178】
[0187]
図3に示されているさまざまなユニットは、ビデオデコーダ300によって実行される動作の理解を助けるために図示されている。ユニットは、固定機能回路、プログラマブル回路、または、これらの組み合わせとして実現してもよい。
図2と同様に、固定機能回路は、特定の機能性を提供する回路を指し、実行できる動作に対して予め設定される。プログラマブル回路は、さまざまなタスクを実行するようにプログラムでき、実行できる動作において柔軟な機能性を提供できる回路を指している。例えば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって規定される方法でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行してもよい。固定機能回路は、(例えば、パラメータを受け取るまたはパラメータを出力するために)ソフトウェア命令を実行してもよいが、固定機能回路が実行する動作のタイプは一般的に不変である。いくつかの例では、ユニットのうちの1つ以上は、別個の回路ブロック(固定機能またはプログラマブル)であってもよく、いくつかの例では、1つ以上のユニットは集積回路であってもよい。
【0179】
[0188]
ビデオデコーダ300は、ALU、EFU、デジタル回路、アナログ回路、および/または、プログラマブル回路から形成されているプログラマブルコアを含んでいてもよい。ビデオデコーダ300の動作がプログラマブル回路上で実行するソフトウェアによって実行される例では、オンチップまたはオフチップメモリが、ビデオデコーダ300が受け取って実行するソフトウェアの命令(例えば、オブジェクトコード)を記憶していてもよい。
【0180】
[0189]
エントロピーデコーディングユニット302は、CPBからエンコードされたビデオデータを受け取り、ビデオデータをエントロピーデコードして、シンタックス要素を再生させてもよい。予測処理ユニット304、逆量子化ユニット306、逆変換処理ユニット308、再構築ユニット310、および、フィルタユニット312は、ビットストリームから抽出されたシンタックス要素に基づいて、デコードされたビデオデータを発生させてもよい。
【0181】
[0190]
一般的に、ビデオデコーダ300は、ブロック毎のベースでピクチャーを再構築する。ビデオデコーダ300は、各ブロックに対して個別に再構築動作を実行してもよい(現在再構築されている、すなわち、デコードされているブロックは、「現在ブロック」として呼ばれることがある)。
【0182】
[0191]
エントロピーデコーディングユニット302は、量子化された変換係数ブロックの量子化された変換係数を規定するシンタックス要素とともに、量子化パラメータ(QP)および/または変換モード表示のような変換情報をエントロピーデコードしてもよい。逆量子化ユニット306は、量子化変換係数ブロックに関係するQPを使用して、量子化の程度を、そして、同様に逆量子化ユニット306が適用する逆量子化の程度を決定してもよい。逆量子化ユニット306は、例えば、ビット単位の左シフト演算を実行して、量子化変換係数を逆量子化してもよい。それによって、逆量子化ユニット306は、変換係数を含む変換係数ブロックを形成してもよい。
【0183】
[0192]
逆量子化ユニット306が変換係数ブロックを形成した後、逆変換処理ユニット308は、変換係数ブロックに1つ以上の逆変換を適用して、現在ブロックに関係する残差サンプルブロックを発生させてもよい。例えば、逆変換処理ユニット308は、係数ブロックに、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向変換、または、別の逆変換を適用してもよい。
【0184】
[0193]
さらに、予測処理ユニット304は、エントロピーデコーディングユニット302によってエントロピーデコードされた予測情報シンタックス要素にしたがって、予測ブロックを発生させる。例えば、現在ブロックがインター予測されることを予測情報シンタックス要素が示す場合、動き補償ユニット316は予測ブロックを発生させてもよい。このケースでは、予測情報シンタックス要素は、参照ブロックを取り出すべきDPB314中の参照ピクチャーとともに、現在ピクチャー中の現在ブロックのロケーションに対する、参照ピクチャー中の参照ブロックのロケーションを識別する動きベクトルを示していてもよい。動き補償ユニット316は、一般的に、動き補償ユニット224(
図2)に関して説明した方法と実質的に類似する方法で、インター予測プロセスを実行してもよい。
【0185】
[0194]
本開示の技法によれば、動き補償ユニット316は、HMVP候補履歴テーブルを使用してブロックをコード化するとき、インター予測技法と動きベクトル予測技法とを実行してもよい。例えば、以下でより詳細に説明するように、動き補償ユニット316は、履歴ベース動きベクトル予測(HMVP)候補履歴テーブルを構築し、HMVP候補履歴テーブルからの1つ以上のHMVP候補を動きベクトル予測子リストに追加し、動きベクトル予測子リストを使用して、ビデオデータのブロックをコード化するように構成されていてもよい。
【0186】
[0195]
例えば、動き補償ユニット316は、現在ブロックの近接する隣接ブロックを越えて延在する以前にコード化されたブロックの動きベクトル情報を含む履歴ベース動きベクトル予測(HMVP)候補履歴テーブルを構築するように構成されていてもよい。例えば、HMVP候補履歴テーブルは、現在ブロックに直に近接していないブロックの動きベクトル情報のような、HMVP候補を含んでいる。以下で説明するように、現在ブロックはマージモードでエンコードされるかもしれないが、AMVPおよび/またはイントラブロックコピー(IBC)モードのような他のモードも可能である。
【0187】
[0196]
動き補償ユニット316はまた、動きベクトル予測子リストを構築してもよい。動きベクトル予測子リストは、空間的に隣接するブロックまたはコロケートされたブロック(例えば、時間的に隣接するブロック)の動きベクトル情報を含んでいる。1つの例として、動きベクトル予測子リストは、空間的に隣接するブロックA1、B1、B0、A0およびB2のうちの1つ以上の動きベクトル情報を含んでいてもよく、
図4Aでは、ブロックA1は0として識別され、PU0 434の左であり、ブロックB1は1として識別され、PU0 434の上であり、ブロックB0は2として識別され、PU0 434の右上であり、PU1 436の上であり、ブロックA0は3として識別され、PU0 434の左下であり、ブロックB2は4として識別され、PU0 434の左上である。動きベクトル予測子リストはまた、時間的に隣接するブロックT540の動きベクトル情報を含んでいてもよい。
【0188】
[0197]
動き補償ユニット316は、HMVP候補履歴テーブルからの1つ以上のHMVP候補を動きベクトル予測子リストに追加してもよい。例えば、HMVP候補履歴テーブルからの1つ以上のHMVP候補を追加するために、動き補償ユニット316は、HMVP候補履歴テーブル中の第1のHMVP候補を動きベクトル予測子リスト中の2つのエントリと比較し、動きベクトル予測子リスト中の他のエントリとは比較せず、第1のHMVP候補が動きベクトル予測子リスト中の2つのエントリの両方と異なるとき、第1のHMVP候補を動きベクトル予測子リストに追加するように構成されていてもよい。動き補償ユニット316はまた、HMVP候補履歴テーブル中の第2のHMVP候補を動きベクトル予測子リスト中の2つのエントリと比較し、動きベクトル予測子リスト中の他のエントリとは比較せず、第2のHMVP候補が動きベクトル予測子リスト中の2つのエントリの両方と異なるとき、第2のHMVP候補を動きベクトル予測子リストに追加するように構成されていてもよい。
【0189】
[0198]
いくつかの例では、動きベクトル予測子リスト中の2つのエントリのうちの第1のエントリは、左隣接ブロック(例えば、
図4Aにおいて0として表されるブロックA1)の動きベクトル情報を含んでいてもよい。動きベクトル予測子リスト中の2つのエントリのうちの第2のエントリは、上隣接ブロック(例えば、
図4Aにおいて1として表されるブロックB1)の動きベクトル情報を含んでいてもよい。動きベクトル予測子リスト中の第1のエントリおよび第2のエントリは、動きベクトル予測子リスト中の最初の2つのエントリであってもよいが、本技法はそのようには限定されない。また、第1のHMVP候補および第2のHMVP候補は、HMVP候補履歴テーブル中の最初の2つの候補であってもよい。
【0190】
[0199]
いくつかの例では、動き補償ユニット316が第1および第2のHMVP候補の一方または両方を動きベクトル予測子リストに含めた後でさえも、動きベクトル予測子リストのサイズはその最大サイズに達していないかもしれない。このようなケースでは、さらに多くのHMVP候補が、HMVP候補の第1のサブセット中に含まれているかもしれないが、第1および第2のHMVP候補は、HMVP候補の第1のサブセットの例として見なされるかもしれない。
【0191】
[0200]
動き補償ユニット316は、HMVP候補履歴テーブル中の1つ以上のHMVP候補の第1のサブセットに続く1つ以上のHMVP候補の第2のサブセットからの1つ以上のHMVP候補を動きベクトル予測子リスト中のエントリと比較することなく、第2のサブセットからの1つ以上のHMVP候補を動きベクトル予測子リストに追加してもよい。
【0192】
[0201]
いくつかの例では、エントロピーデコーディングユニット302は、動きベクトル予測子リストへのエントリを示す情報をデコードしてもよい。動き補償ユニット316は、動きベクトル予測子リストへのエントリを示す情報を受け取り、動きベクトル予測子リストのエントリから動きベクトル情報を取り出してもよい。
【0193】
[0202]
動き補償ユニット316は、取り出された動きベクトル情報に基づいて、現在ブロックに対する動きベクトルを決定してもよい。例えば、マージモードでは、動き補償ユニット316は、現在ブロックに対する動きベクトルを、取り出された動きベクトル情報と等しくなるように設定してもよい。AMVPモードでは、動き補償ユニット316はまた、取り出された動きベクトル情報と実際の動きベクトルとの間の動きベクトル差分(MVD)を受け取ってもよい。動き補償ユニット316は、MVDを取り出された動きベクトル情報に追加して、現在ブロックに対する動きベクトルを決定してもよい。
【0194】
[0203]
動き補償ユニット316は、現在ブロックに対する動きベクトルに基づいて、現在ブロックに対する予測ブロックを決定してもよい。例えば、動き補償ユニット316は、動きベクトルにより識別された参照ブロックを含む参照ピクチャーからサンプル値を取り出してもよい。動き補償ユニット316は、取り出されたサンプルに基づいて、予測ブロックを決定してもよい。
【0195】
[0204]
別の例として、現在ブロックがイントラ予測されることを予測情報シンタックス要素が示している場合、イントラ予測ユニット318は、予測情報シンタックス要素によって示されるイントラ予測モードにしたがって、予測ブロックを発生させてもよい。再度説明すると、イントラ予測ユニット318は、一般的に、イントラ予測ユニット226(
図2)に関して説明した方法と実質的に類似する方法で、イントラ予測プロセスを実行してもよい。イントラ予測ユニット318は、現在ブロックに対する隣接するサンプルのデータをDPB314から取り出してもよい。
【0196】
[0205]
再構築ユニット310は、予測ブロックと残差ブロックとを使用して、現在ブロックを再構築してもよい。例えば、再構築ユニット310は、残差ブロックのサンプルを予測ブロックの対応するサンプルに追加して、現在ブロックを再構築してもよい。言い換えると、再構築ユニット310は、予測ブロックと現在ブロックとの間の差分を示す受信された残差情報に予測ブロックを追加して、現在ブロックを再構築してもよい。
【0197】
[0206]
フィルタユニット312は、再構築されたブロックに対して1つ以上のフィルタ動作を実行してもよい。例えば、フィルタユニット312は、デブロッキング動作を実行して、再構築されたブロックのエッジに沿ってブロッキネスアーティファクトを低減させてもよい。フィルタユニット312の動作は、必ずしもすべての例において実行される必要はない。
【0198】
[0207]
ビデオデコーダ300は、再構築されたブロックをDPB314中に記憶させてもよい。上記で説明したように、DPB314は、イントラ予測に対する現在のピクチャーと、後続の動き補償に対する以前にデコードされたピクチャーとのサンプルのような参照情報を、予測処理ユニット304に提供してもよい。さらに、ビデオデコーダ300は、
図1のディスプレイデバイス118のようなディスプレイデバイス上での後続の提示のために、DPBからデコードされたピクチャーを出力してもよい。
【0199】
[0208]
このようにして、ビデオデコーダ300は、ビデオデータを記憶するように構成されているメモリと、回路中で実現され、履歴ベース動きベクトル予測(HMVP)候補履歴テーブルを構築し、HMVP候補履歴テーブルからの1つ以上のHMVP候補を動きベクトル予測子リストに追加し、動きベクトル予測子リストを使用して、ビデオデータのブロックをコード化するように構成されている1つ以上の処理ユニットとを含むビデオデコーディングデバイスの例を表している。
【0200】
[0209]
図7は、現在ブロックをエンコーディングするための例示的な方法を示しているフローチャートである。現在ブロックは、現在CUを含んでいてもよい。ビデオエンコーダ200(
図1および
図2)に関して説明したが、
図7のものと類似する方法を実行するように他のデバイスが構成されていてもよいことを理解されたい。
【0201】
[0210]
この例では、ビデオエンコーダ200は、最初に現在ブロックを予測する(350)。例えば、ビデオエンコーダ200は、現在ブロックに対する予測ブロックを形成してもよい。1つ以上の例では、ビデオエンコーダ200は、動きベクトルに基づいて、予測ブロックを形成するように構成されていてもよい。ビデオエンコーダ200は、本開示で説明されている例示的な技法を利用して動きベクトル予測子リストを構築し、ビデオデコーダ300が動きベクトルを決定するために利用する動きベクトル予測子リストへのエントリに対する情報をシグナリングするように構成されていてもよい。
【0202】
[0211]
ビデオエンコーダ200は、その後、現在ブロックに対する残差ブロックを計算してもよい(352)。残差ブロックを計算するために、ビデオエンコーダ200は、元のコード化されていないブロックと現在ブロックに対する予測ブロックとの間の差分を計算してもよい。ビデオエンコーダ200は、その後、残差ブロックの係数を変換して量子化してもよい(354)。次に、ビデオエンコーダ200は、残差ブロックの量子化された変換係数を走査してもよい(356)。走査間に、または、走査に続いて、ビデオエンコーダ200は、係数をエントロピーエンコードしてもよい(358)。例えば、ビデオエンコーダ200は、CAVLCまたはCABACを使用して、係数をエンコードしてもよい。その後、ビデオエンコーダ200は、ブロックのエントロピーコード化されたデータを出力してもよい(360)。
【0203】
[0212]
図8は、ビデオデータの現在ブロックをデコーディングするための例示的な方法を示しているフローチャートである。現在ブロックは、現在CUを含んでいてもよい。ビデオデコーダ300(
図1および
図3)に関して説明したが、
図8の方法と類似する方法を実行するように他のデバイスが構成されていてもよいことを理解されたい。
【0204】
[0213]
ビデオデコーダ300は、現在ブロックに対応する残差ブロックの係数に対するエントロピーコード化された予測情報およびエントロピーコード化されたデータのような、現在ブロックに対するエントロピーコード化されたデータを受信してもよい(370)。ビデオデコーダ300は、エントロピーコード化されたデータをエントロピーデコードして、現在ブロックに対する予測情報を決定し、残差ブロックの係数を再生してもよい(372)。ビデオデコーダ300は、例えば、現在ブロックに対する予測情報により示されるイントラ予測モードまたはインター予測モードを使用して、現在ブロックを予測して、現在ブロックに対する予測ブロックを計算してもよい(374)。
【0205】
[0214]
1つの例として、ビデオデコーダ300は、本開示で説明されている例示的な技法を使用して、動きベクトル予測子リストを構築するように構成されていてもよい。ビデオデコーダ300は、その後、動きベクトル予測子リストへのエントリを受け取ってもよく、動きベクトル予測子リストのエントリ中の動きベクトル情報に基づいて、現在ブロックに対する動きベクトルを決定してもよい。ビデオデコーダ300は、その後、決定された動きベクトルに基づいて、予測ブロックを計算してもよい。
【0206】
[0215]
ビデオデコーダ300は、その後、再生された係数を逆走査して、量子化された変換係数のブロックを作成してもよい(376)。ビデオデコーダ300は、その後、係数を逆量子化および逆変換して、残差ブロックを生成させてもよい(378)。ビデオデコーダ300は、最終的に、予測ブロックと残差ブロックとを組み合わせることにより、現在ブロックをデコードしてもよい(380)。
【0207】
[0216]
図9は、例示的なコーディング方法を図示するフローチャートである。説明を容易にするために、
図9の例は処理回路に関して説明されている。処理回路の例は、ビデオエンコーダ200またはビデオデコーダ300を形成する固定機能および/またはプログラマブルの処理回路を含んでいる。例えば、ビデオエンコーダ200とビデオデコーダ300の両方が、本開示で説明されている例示的な技法を実行するように構成されていてもよい。
【0208】
[0217]
処理回路は、現在ブロックの近接する隣接ブロックを越えて延在する以前にコード化されたブロックの動きベクトル情報を含む履歴ベース動きベクトル予測(HMVP)候補履歴テーブルを構築するように構成されていてもよい(400)。例えば、処理回路は、現在ブロックに直に隣接しない以前にコード化されたブロックの動きベクトル情報のために、メモリ(例えば、ビデオデータメモリ230またはDPB314)にアクセスしてもよい。処理回路は、これらの以前にコード化されたブロックの動きベクトル情報をHMVP候補履歴テーブルに追加してもよい。
【0209】
[0218]
処理回路は、動きベクトル予測子リストを構築してもよい(402)。処理回路は、1つ以上の空間的に隣接するブロックまたはコロケートされたブロック(例えば、時間的に隣接するブロック)の動き情報で、動きベクトル予測子リストを構築してもよい。例えば、処理回路は、空間的に隣接するブロックまたはコロケートされたブロックの動きベクトル情報を動きベクトル予測子リストに追加して、動きベクトル予測子リストを構築してもよい。
【0210】
[0219]
本開示で説明されている技法では、処理回路はさらに、HMVP候補履歴テーブルからの1つ以上のHMVP候補を現在ブロックに対する動きベクトル予測子リストに追加してもよい(404)。処理回路は、マージモードでコード化された現在ブロックに対する1つ以上のHMVP候補を追加してもよく、一般的に、処理回路は、マージモード、高度動きベクトル予測(AMVP)モード、または、イントラブロックコピー(IBC)マージモードのうちの1つでコード化された現在ブロックに対する1つ以上のHMVP候補を追加してもよい。
【0211】
[0220]
HMVP候補履歴テーブルから1つ以上のHMVP候補を追加するために、処理回路は、HMVP候補履歴テーブル中の第1のHMVP候補を、動きベクトル予測子リスト中の2つのエントリと比較し、動きベクトル予測子リスト中の他のエントリとは比較せず、第1のHMVP候補が動きベクトル予測子リスト中の2つのエントリの両方と異なるとき、第1のHMVP候補を動きベクトル予測子リストに追加するように構成されていてもよい。また、処理回路は、HMVP候補履歴テーブル中の第2のHMVP候補を、動きベクトル予測子リスト中の2つのエントリと比較し、動きベクトル予測子リスト中の他のエントリとは比較せず、第2のHMVP候補が動きベクトル予測子リスト中の2つのエントリの両方と異なるとき、第2のHMVP候補を動きベクトル予測子リストに追加するように構成されていてもよい。いくつかの例では、動きベクトル予測子リスト中の2つのエントリは、現在ブロックの左隣接ブロックに対する第1のエントリと、現在ブロックの上隣接ブロックに対する第2のエントリとであってもよい。
【0212】
[0221]
いくつかの例では、第1および第2のHMVP候補は、HMVP候補の第1のサブセットと見なされるかもしれない。しかしながら、候補の第1のサブセット中には2つより多いHMVP候補があるかもしれない。処理回路は、HMVP候補履歴テーブル中の1つ以上のHMVP候補の第1のサブセットに続く1つ以上のHMVP候補の第2のサブセットからの1つ以上のHMVP候補を動きベクトル予測子リスト中のエントリと比較することなく、第2のサブセットからの1つ以上のHMVP候補を動きベクトル予測子リストに追加するようにさらに構成されていてもよい。
【0213】
[0222]
処理回路は、動きベクトル予測子リストを使用して、ビデオデータの現在ブロックをコード化するように構成されていてもよい(406)。1つの例として、処理回路がビデオデコーダ300を表している場合、処理回路は、動きベクトル予測子リストのエントリから動きベクトル情報を取り出し、取り出された動きベクトル情報に基づいて、現在ブロックに対する動きベクトルを決定し、動きベクトルに基づいて、予測ブロックを決定し、予測ブロックと現在ブロックとの間の差分を示す受信された残差情報に予測ブロックを追加して、現在ブロックを再構築するように構成されていてもよい。別の例として、処理回路がビデオエンコーダ200を表している場合、処理回路は、予測ブロックを識別するのに使用される現在ブロックに対する動きベクトルを決定し、現在ブロックに対する決定された動きベクトルに基づいて、動きベクトル予測子リストへのエントリを示す情報をシグナリングし、予測ブロックと現在ブロックとの間の差分を示す残差情報をシグナリングするように構成されていてもよい。
【0214】
[0223]
例に依存して、ここで説明した技法のうちのいずれかのある動作またはイベントは、異なるシーケンスで実行でき、追加してもよく、マージしてもよく、または、完全に省略してもよい(例えば、説明した動作またはイベントのすべてが本技法の実施のために必要であるとは限らない)ことを認識されたい。さらに、ある例では、行為またはイベントは、シーケンシャルによりもむしろ、例えば、マルチスレッド処理、割り込み処理、または、複数のプロセッサを通して、同時に実行してもよい。
【0215】
[0224]
1つ以上の例において、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、または、これらの任意の組み合わせで実現してもよい。ソフトウェアで実現される場合には、機能は、1つ以上の命令またはコードとしてコンピュータ読取可能媒体上に記憶されていてもよく、あるいは、1つ以上の命令またはコードとしてコンピュータ読取可能媒体上で送信されてもよく、ハードウェアベースの処理ユニットによって実行してもよい。コンピュータ読取可能媒体はまた、例えば、通信プロトコルにしたがって、コンピュータプログラムの1つの場所から別の場所への転送を容易にする何らかの媒体を含む通信媒体、または、データ記憶媒体のような有形の媒体に対応するコンピュータ読取可能記憶媒体を含んでいてもよい。このように、コンピュータ読取可能媒体は、一般的に、(1)有形コンピュータ読取可能記憶媒体、または、(2)信号または搬送波のような通信媒体に対応していてもよい。データ記憶媒体は、本開示で説明した技法を実現するための命令、コードおよび/またはデータ構造を取り出すために、1つ以上のコンピュータまたは1つ以上のプロセッサによってアクセスすることができる任意の利用可能な媒体であってもよい。コンピュータプログラム製品は、コンピュータ読取可能媒体を含んでいてもよい。
【0216】
[0225]
限定ではなく例として、このようなコンピュータ読取可能記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD-ROMまたは他の光学ディスク記憶媒体、磁気ディスク記憶媒体または他の磁気記憶デバイス、フラッシュメモリ、あるいは、命令またはデータ構造の形態で望ましいプログラムコードを記憶するために使用され、コンピュータによってアクセスすることができる他の何らかの媒体を備えることができる。また、任意の接続は、コンピュータ読取可能媒体と適切に呼ばれる。例えば、命令が、ウェブサイトから、サーバから、あるいは、同軸ケーブル、光ファイバケーブル、撚り対、デジタル加入者線(DSL)、または、赤外線、無線、マイクロ波のようなワイヤレステクノロジーを使用している他の遠隔ソースから送信される場合、同軸ケーブル、光ファイバケーブル、撚り対、DSL、または、赤外線、無線およびマイクロ波のようなワイヤレステクノロジーは、媒体の定義に含まれる。しかしながら、コンピュータ読取可能記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または、他の一時的な媒体を含まないが、代わりに、非一時的な、有形の記憶媒体に向けられていることを理解すべきである。ここで使用するようなディスク(diskおよびdisc)は、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル汎用ディスク(DVD)、フロッピー(登録商標)ディスク、および、ブルーレイ(登録商標)ディスクを含むが、通常、ディスク(disk)はデータを磁気的に再生する一方で、ディスク(disc)はデータをレーザにより光学的に再生する。上記の組み合わせも、コンピュータ読取可能媒体の範囲内に含むべきである。
【0217】
[0226]
命令は、1つ以上のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または、他の同等な集積またはディスクリート論理回路のような1つ以上のプロセッサによって実行してもよい。したがって、ここで使用されるように、用語「プロセッサ」は、前述の構造、または、ここで説明した技術のインプリメンテーションに適した他の何らかの構造のいずれかを指していてもよい。加えて、いくつかの態様では、ここで説明した機能性は、エンコードおよびデコードするように構成されている専用のハードウェアおよび/またはソフトウェアモジュール内に提供してもよく、あるいは、組み合わされたコーデック中に組み込んでもよい。また、技法は、1つ以上の回路または論理エレメントにおいて、完全に実現することができる。
【0218】
[0227]
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(例えば、チップセット)を含む、幅広い種類のデバイスまたは装置において実施してもよい。さまざまなコンポーネント、モジュール、または、ユニットは、開示した技法を実行するように構成されているデバイスの機能的な態様を強調するためにここ説明されているが、それらは、異なるハードウェアユニットによる実現を必ずしも要求するわけではない。むしろ、上記で説明したように、さまざまなユニットは、コーデックハードウェアユニットにおいて組み合わされるか、または、適切なソフトウェアおよび/またはファームウェアとともに、上記で説明したような1つ以上のプロセッサを含む、相互動作可能ハードウェアユニットの集合によって提供されてもよい。
【0219】
[0228]
さまざまな例を説明してきた。これらおよび他の例は、以下の特許請求の範囲の範囲内にある。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
ビデオデータをコード化する方法において、
前記ビデオデータの現在ブロックの近接する隣接ブロックを越えて延在する以前にコード化されたブロックの動きベクトル情報を含む履歴ベース動きベクトル予測(HMVP)候補履歴テーブルを構築することと、
動きベクトル予測子リストを構築することと、
前記HMVP候補履歴テーブルからの1つ以上のHMVP候補を前記動きベクトル予測子リストに追加することと、
前記動きベクトル予測子リストを使用して、前記ビデオデータの現在ブロックをコード化することとを含み、
前記HMVP候補履歴テーブルからの1つ以上のHMVP候補を追加することは、
前記HMVP候補履歴テーブル中の第1のHMVP候補を前記動きベクトル予測子リスト中の2つのエントリと比較し、前記動きベクトル予測子リスト中の他のエントリとは比較しないことと、
前記第1のHMVP候補が前記動きベクトル予測子リスト中の前記2つのエントリの両方と異なるとき、前記第1のHMVP候補を前記動きベクトル予測子リストに追加することとを含む方法。
[C2]
前記1つ以上のHMVP候補を追加することは、
前記HMVP候補履歴テーブル中の第2のHMVP候補を前記動きベクトル予測子リスト中の前記2つのエントリと比較し、前記動きベクトル予測子リスト中の他のエントリとは比較しないことと、
前記第2のHMVP候補が前記動きベクトル予測子リスト中の前記2つのエントリの両方と異なるとき、前記第2のHMVP候補を前記動きベクトル予測子リストに追加することとをさらに含むC1記載の方法。
[C3]
前記1つ以上のHMVP候補を追加することは、マージモード、高度動きベクトル予測(AMVP)モード、または、イントラブロックコピー(IBC)マージモードのうちの1つにおいてコード化されている前記現在ブロックに対する前記1つ以上のHMVP候補を追加することを含むC1記載の方法。
[C4]
前記動きベクトル予測子リスト中の前記2つのエントリは、前記現在ブロックの左隣接ブロックに対する第1のエントリと、前記現在ブロックの上隣接ブロックに対する第2のエントリとを含むC1記載の方法。
[C5]
前記1つ以上のHMVP候補を追加することは、1つ以上のHMVP候補の第1のサブセットを追加することを含み、
前記方法は、
前記HMVP候補履歴テーブル中の1つ以上のHMVP候補の前記第1のサブセットに続く1つ以上のHMVP候補の第2のサブセットからの1つ以上のHMVP候補を前記動きベクトル予測子リスト中のエントリと比較することなく、前記第2のサブセットからの1つ以上のHMVP候補を前記動きベクトル予測子リストに追加することとをさらに含むC1記載の方法。
[C6]
前記動きベクトル予測子リストを構築することは、1つ以上の空間的に隣接するブロックまたはコロケートされたブロックの動き情報により、前記動きベクトル予測子リストを構築することを含むC1記載の方法。
[C7]
前記現在ブロックをコード化することは、前記現在ブロックをデコーディングすることを含み、
前記現在ブロックをデコーディングすることは、
前記動きベクトル予測子リストのエントリから動きベクトル情報を取り出すことと、
前記取り出された動きベクトル情報に基づいて、前記現在ブロックに対する動きベクトルを決定することと、
前記動きベクトルに基づいて、予測ブロックを決定することと、
前記予測ブロックと前記現在ブロックとの間の差分を示す受信された残差情報に前記予測ブロックを追加して、前記現在ブロックを再構築することとを含むC1記載の方法。
[C8]
前記現在ブロックをコード化することは、前記現在ブロックをエンコーディングすることを含み、
前記現在ブロックをエンコーディングすることは、
予測ブロックを識別するのに使用される前記現在ブロックに対する動きベクトルを決定することと、
前記現在ブロックに対する前記決定された動きベクトルに基づいて、前記動きベクトル予測子リストへのエントリを示す情報をシグナリングすることと、
前記予測ブロックと前記現在ブロックとの間の差分を示す残差情報をシグナリングすることとを含むC1記載の方法。
[C9]
ビデオデータをコード化するデバイスにおいて、
前記ビデオデータの現在ブロックの近接する隣接ブロックを越えて延在する以前にコード化されたブロックの動きベクトル情報を含む履歴ベース動きベクトル予測(HMVP)候補履歴テーブルと、
動きベクトル予測子リストとを記憶するように構成されているメモリと、
前記メモリ中に記憶させるために、前記HMVP候補履歴テーブルを構築するようにと、
前記メモリ中に記憶させるために、前記動きベクトル予測子リストを構築するようにと、
前記HMVP候補履歴テーブルからの1つ以上のHMVP候補を前記動きベクトル予測子リストに追加するようにと、
前記メモリ中に記憶されている前記動きベクトル予測子リストを使用して、前記ビデオデータの現在のブロックをコード化するように構成されている処理回路とを具備し、
前記HMVP候補履歴テーブルからの1つ以上のHMVP候補を追加するために、前記処理回路は、
前記HMVP候補履歴テーブル中の第1のHMVP候補を前記動きベクトル予測子リスト中の2つのエントリと比較し、前記動きベクトル予測子リスト中の他のエントリとは比較しないようにと、
前記第1のHMVP候補が前記動きベクトル予測子リスト中の前記2つのエントリの両方と異なるとき、前記第1のHMVP候補を前記動きベクトル予測子リストに追加するように構成されているデバイス。
[C10]
前記1つ以上のHMVP候補を追加するために、前記処理回路は、
前記HMVP候補履歴テーブル中の第2のHMVP候補を前記動きベクトル予測子リスト中の前記2つのエントリと比較し、前記動きベクトル予測子リスト中の他のエントリとは比較しないようにと、
前記第2のHMVP候補が前記動きベクトル予測子リスト中の前記2つのエントリの両方と異なるとき、前記第2のHMVP候補を前記動きベクトル予測子リストに追加するように構成されているC9記載のデバイス。
[C11]
前記1つ以上のHMVP候補を追加するために、前記処理回路は、マージモード、高度動きベクトル予測(AMVP)モード、または、イントラブロックコピー(IBC)マージモードのうちの1つにおいてコード化されている前記現在ブロックに対する前記1つ以上のHMVP候補を追加するように構成されているC9記載のデバイス。
[C12]
前記動きベクトル予測子リスト中の前記2つのエントリは、前記現在ブロックの左隣接ブロックに対する第1のエントリと、前記現在ブロックの上隣接ブロックに対する第2のエントリとを含むC9記載のデバイス。
[C13]
前記1つ以上のHMVP候補を追加するために、前記処理回路は、1つ以上のHMVP候補の第1のサブセットを追加するように構成され、
前記処理回路は、
前記HMVP候補履歴テーブル中の1つ以上のHMVP候補の前記第1のサブセットに続く1つ以上のHMVP候補の第2のサブセットからの1つ以上のHMVP候補を前記動きベクトル予測子リスト中のエントリと比較することなく、前記第2のサブセットからの1つ以上のHMVP候補を前記動きベクトル予測子リストに追加するように構成されているC9記載のデバイス。
[C14]
前記動きベクトル予測子リストを構築するために、前記処理回路は、1つ以上の空間的に隣接するブロックまたはコロケートされたブロックの動き情報により、前記動きベクトル予測子リストを構築するように構成されているC9記載のデバイス。
[C15]
前記現在ブロックをコード化するために、前記処理回路は、前記現在ブロックをデコーディングするように構成され、
前記現在ブロックをデコーディングするために、前記処理回路は、
前記動きベクトル予測子リストのエントリから動きベクトル情報を取り出すようにと、
前記取り出された動きベクトル情報に基づいて、前記現在ブロックに対する動きベクトルを決定するようにと、
前記動きベクトルに基づいて、予測ブロックを決定するようにと、
前記予測ブロックと前記現在ブロックとの間の差分を示す受信された残差情報に前記予測ブロックを追加して、前記現在ブロックを再構築するように構成されているC9記載のデバイス。
[C16]
前記現在ブロックをコード化するために、前記処理回路は、前記現在ブロックをエンコーディングするように構成され、
前記現在ブロックをエンコーディングするために、前記処理回路は、
予測ブロックを識別するのに使用される前記現在ブロックに対する動きベクトルを決定するようにと、
前記現在ブロックに対する前記決定された動きベクトルに基づいて、前記動きベクトル予測子リストへのエントリを示す情報をシグナリングするようにと、
前記予測ブロックと前記現在ブロックとの間の差分を示す残差情報をシグナリングするように構成されているC9記載のデバイス。
[C17]
前記デバイスは、ワイヤレス通信デバイスであるC9記載のデバイス。
[C18]
命令を記憶する非一時的コンピュータ読取可能記憶媒体において、
前記命令は、実行されるとき、1つ以上のプロセッサに、
ビデオデータの現在ブロックの近接する隣接ブロックを越えて延在する以前にコード化されたブロックの動きベクトル情報を含む履歴ベース動きベクトル予測(HMVP)候補履歴テーブルを構築させ、
動きベクトル予測子リストを構築させ、
前記HMVP候補履歴テーブルからの1つ以上のHMVP候補を前記動きベクトル予測子リストに追加させ、
前記動きベクトル予測子リストを使用して、前記ビデオデータの現在ブロックをコード化させ、
前記1つ以上のプロセッサに、前記HMVP候補履歴テーブルからの1つ以上のHMVP候補を追加させる命令は、
前記1つ以上のプロセッサに、
前記HMVP候補履歴テーブル中の第1のHMVP候補を前記動きベクトル予測子リスト中の2つのエントリと比較させ、前記動きベクトル予測子リスト中の他のエントリとは比較させず、
前記第1のHMVP候補が前記動きベクトル予測子リスト中の前記2つのエントリの両方と異なるとき、前記第1のHMVP候補を前記動きベクトル予測子リストに追加させる命令を含むコンピュータ読取可能記憶媒体。
[C19]
前記1つ以上のプロセッサに、前記1つ以上のHMVP候補を追加させる命令は、
前記1つ以上のプロセッサに、
前記HMVP候補履歴テーブル中の第2のHMVP候補を前記動きベクトル予測子リスト中の前記2つのエントリと比較させ、前記動きベクトル予測子リスト中の他のエントリとは比較させず、
前記第2のHMVP候補が前記動きベクトル予測子リスト中の前記2つのエントリの両方と異なるとき、前記第2のHMVP候補を前記動きベクトル予測子リストに追加させる命令を含むC18記載のコンピュータ読取可能記憶媒体。
[C20]
前記1つ以上のプロセッサに、前記1つ以上のHMVP候補を追加させる命令は、前記1つ以上のプロセッサに、マージモード、高度動きベクトル予測(AMVP)モード、または、イントラブロックコピー(IBC)マージモードのうちの1つにおいてコード化されている前記現在ブロックに対する前記1つ以上のHMVP候補を追加させる命令を含むC18記載のコンピュータ読取可能記憶媒体。
[C21]
前記動きベクトル予測子リスト中の前記2つのエントリは、前記現在ブロックの左隣接ブロックに対する第1のエントリと、前記現在ブロックの上隣接ブロックに対する第2のエントリとを含むC18記載のコンピュータ読取可能記憶媒体。
[C22]
前記1つ以上のプロセッサに、前記1つ以上のHMVP候補を追加させる命令は、前記1つ以上のプロセッサに、1つ以上のHMVP候補の第1のサブセットを追加させる命令を含み、
前記命令は、
前記1つ以上のプロセッサに、
前記HMVP候補履歴テーブル中の1つ以上のHMVP候補の前記第1のサブセットに続く1つ以上のHMVP候補の第2のサブセットからの1つ以上のHMVP候補を前記動きベクトル予測子リスト中のエントリと比較させることなく、前記第2のサブセットからの1つ以上のHMVP候補を前記動きベクトル予測子リストに追加させる命令をさらに含むC18記載のコンピュータ読取可能記憶媒体。
[C23]
前記1つ以上のプロセッサに、前記動きベクトル予測子リストを構築させる命令は、前記1つ以上のプロセッサに、1つ以上の空間的に隣接するブロックまたはコロケートされたブロックの動き情報により、前記動きベクトル予測子リストを構築させる命令を含むC18記載のコンピュータ読取可能記憶媒体。
[C24]
前記1つ以上のプロセッサに、前記現在ブロックをコード化させる命令は、前記1つ以上のプロセッサに、前記現在ブロックをデコーディングさせる命令を含み、
前記1つ以上のプロセッサに、前記現在ブロックをデコーディングさせる命令は、
前記1つ以上のプロセッサに、
前記動きベクトル予測子リストのエントリから動きベクトル情報を取り出させ、
前記取り出された動きベクトル情報に基づいて、前記現在ブロックに対する動きベクトルを決定させ、
前記動きベクトルに基づいて、予測ブロックを決定させ、
前記予測ブロックと前記現在ブロックとの間の差分を示す受信された残差情報に前記予測ブロックを追加させて、前記現在ブロックを再構築させる命令を含むC18記載のコンピュータ読取可能記憶媒体。
[C25]
前記1つ以上のプロセッサに、前記現在ブロックをコード化させる命令は、前記1つ以上のプロセッサに、前記現在ブロックをエンコーディングさせる命令を含み、
前記1つ以上のプロセッサに、前記現在ブロックをエンコーディングさせる命令は、
前記1つ以上のプロセッサに、
予測ブロックを識別するのに使用される前記現在ブロックに対する動きベクトルを決定させ、
前記現在ブロックに対する前記決定された動きベクトルに基づいて、前記動きベクトル予測子リストへのエントリを示す情報をシグナリングさせ、
前記予測ブロックと前記現在ブロックとの間の差分を示す残差情報をシグナリングさせる命令を含むC18記載のコンピュータ読取可能記憶媒体。