関連出願の相互参照
[0001] 本願は、2019年2月7日に出願された米国仮特許出願第62/802,573号の優先権を主張する、2020年2月5日に出願された米国特許出願第16/782,735号の優先権を主張し、それらの内容全体が、参照により本明細書に組み込まれている。
[0002] 本開示は、ビデオ符号化およびビデオ復号に関する。
[0003] デジタルビデオ能力は、デジタルテレビ、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲーム機器、セルラ式または衛星無線電話、いわゆる「スマートフォン」、ビデオテレビ会議デバイス、ビデオストリーミングデバイス、および同様のものを含む、幅広い範囲のデバイスに組み込まれ得る。デジタルビデオデバイスは、MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4、パート10、アドバンストビデオコーディング(AVC)、高効率ビデオコーディング(HEVC)規格、ITU-T H.265/高効率ビデオコーディング(HEVC)によって定義された規格、およびこのような規格の拡張に記載されているものなどの、ビデオコーディング技法をインプリメントする。ビデオデバイスは、このようなビデオコーディング技法をインプリメントすることによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、および/または記憶し得る。
[0004] ビデオコーディング技法は、ビデオシーケンスに固有の冗長性を低減または除去するための、空間的(イントラピクチャ)予測および/または時間的(インターピクチャ)予測を含む。ブロックベースのビデオコーディングの場合、ビデオスライス(例えば、ビデオピクチャまたはビデオピクチャの一部分)が、ビデオブロックに区分され得、これは、コーディングツリーユニット(CTU:coding tree unit)、コーディングユニット(CU:coding unit)、および/またはコーディングノードとも呼ばれ得る。ピクチャのイントラコーディングされた(I)スライス中のビデオブロックは、同じピクチャ内の隣接ブロックにおける参照サンプルに対して空間的予測を使用して符号化される。ピクチャのインターコーディングされた(PまたはB)スライス中のビデオブロックは、同じピクチャ内の隣接ブロックにおける参照サンプルに対して空間的予測を使用し得、または他の参照ピクチャ内の参照サンプルに対して時間的予測を使用し得る。ピクチャは、フレームと呼ばれ得、参照ピクチャは、参照フレームと呼ばれ得る。
[0005] 一例では、ビデオデータ(video data)をコーディングする方法が、イントラブロックコピー(IBC:intra block copy)を使用してビデオデータの現在のピクチャ(current picture)の現在のブロック(current block)を予測すると決定することに応答して、現在のブロックのための動きベクトル(MV:motion vector)候補リスト(candidate list)を生成することと、ここにおいて、MV候補リストを生成することは、1つまたは複数の履歴ベースの動きベクトル予測(HMVP:history-based motion vector prediction)候補を決定することと、MV候補リスト中の最後の候補(last candidate)として、1つまたは複数のHMVP候補のうちの1つのHMVP候補を含めることと、を備えており、MV候補リストから、現在のピクチャ内の予測子ブロック(predictor block)を識別する特定のMVを選択することと、予測子ブロックのピクセル(pixel)に基づいて、現在のブロックのピクセルを再構成(reconstruct)することと、を含む。
[0006] 別の例では、ビデオデータをコーディングするためのデバイスが、ビデオデータを記憶するように構成されたメモリと、回路においてインプリメントされる1つまたは複数のプロセッサ(processor)であって、かつ、IBCを使用してビデオデータの現在のピクチャの現在のブロックを予測すると決定することに応答して、現在のブロックのためのMV候補リストを生成することと、ここにおいて、MV候補リストを生成するために、1つまたは複数のプロセッサは、1つまたは複数のHMVP候補を決定することと、MV候補リスト中の最後の候補として、1つまたは複数のHMVP候補のうちの1つのHMVP候補を含めることと、を行うように構成されており、MV候補リストから、現在のピクチャ内の予測子ブロックを識別する特定のMVを選択することと、予測子ブロックのピクセルに基づいて、現在のブロックのピクセルを再構成することと、を行うように構成された1つまたは複数のプロセッサと、を含む。
[0007] 別の例では、命令(instruction)を記憶したコンピュータ可読記憶媒体(computer-readable storage medium)であって、命令は、実行されると、ビデオコーダ(video coder)の1つまたは複数のプロセッサに、IBCを使用してビデオデータの現在のピクチャの現在のブロックを予測すると決定することに応答して、現在のブロックのためのMV候補リストを生成することと、ここにおいて、1つまたは複数のプロセッサに、MV候補リストを生成することを行わせる命令は、1つまたは複数のプロセッサに、1つまたは複数のHMVP候補を決定することと、MV候補リスト中の最後の候補として、1つまたは複数のHMVP候補のうちの1つのHMVP候補を含めることと、を行わせる命令を備えており、MV候補リストから、現在のピクチャ内の予測子ブロックを識別する特定のMVを選択することと、予測子ブロックのピクセルに基づいて、現在のブロックのピクセルを再構成することと、を行わせる。
[0008] 本開示の1つまたは複数の態様の詳細が、添付の図面および以下の説明において示される。本開示で説明される技法の他の特徴、目的、および利点が、説明および図面から、ならびに特許請求の範囲から明らかになるであろう。
[0009] 図1Aは、HEVCにおける空間的隣接候補(spatial neighboring candidate)を例示する概念図である。
図1Bは、HEVCにおける空間的隣接候補を例示する概念図である。
[0010] 図2Aは、例となる時間的動きベクトル予測子(TMVP:temporal motion vector predictor)候補および動きベクトル(MV)スケーリング(scaling)を例示する概念図である。
図2Bは、例となる時間的動きベクトル予測子(TMVP)候補および動きベクトル(MV)スケーリングを例示する概念図である。
[0011] 図3は、本開示の技法を実行し得る、例となるビデオ符号化および復号システムを例示するブロック図である。
[0012] 図4Aは、例となる4分木2分木(QTBT:quadtree binary tree)構造を例示する概念図である。
図4Bは、対応するコーディングツリーユニット(CTU)を例示する概念図である。
[0013] 図5は、本開示の技法を実行し得る、例となるビデオエンコーダ(video encoder)を例示するブロック図である。
[0014] 図6は、本開示の技法を実行し得る、例となるビデオデコーダ(video decoder)を例示するブロック図である。
[0015] 図7は、現在のブロックを符号化するための例となる方法を例示するフローチャートである。
[0016] 図8は、ビデオデータの現在のブロックを復号するための例となる方法を例示するフローチャートである。
[0017] 図9は、本開示の1つまたは複数の技法による、動きベクトル予測子候補リスト(motion vector predictor candidate list)を生成するための例となる方法を例示するフローチャートである。
詳細な説明
[0018] 一般に、本開示は、イントラブロックコピー(IBC)を使用してビデオデータのブロックを予測するための技法を説明する。IBCを使用してビデオデータの現在のピクチャ内の、ビデオデータの現在のブロックを予測するために、ビデオコーダが、現在のピクチャ内の予測子ブロックに残差データ(residual data)を加算し得る。ビデオコーダは、現在のブロックと予測子ブロックとの間の変位を表す、ブロックベクトル(block vector)と呼ばれ得る動きベクトルを使用して、予測子ブロックを識別し得る。ビデオデコーダが動きベクトルを取得することを可能にするために、ビデオエンコーダとビデオデコーダとの両方が、動きベクトル候補リスト(motion vector candidate list)を構築し得、ビデオエンコーダは、現在のブロックのための動きベクトルを構築するために、動きベクトルリストからのどの候補が動きベクトル予測子として使用されるべきかを示す1つまたは複数のシンタックス要素を符号化し得る。いくつかの例では、ビデオエンコーダは、動きベクトル予測子と現在のブロックのための動きベクトルとの間の差分を表す1つまたは複数のシンタックス要素(例えば、動きベクトル差分(MVD:motion vector difference)を表すシンタックス要素)をさらに符号化し得る。
[0019] ビデオコーダは、様々なソースから動きベクトル候補リストのための候補を取得し得る。いくつかの例となるソースは、限定はしないが、空間的候補、時間的動きベクトル予測子(TMVP)候補、履歴ベースの動きベクトル予測(HMVP)候補、およびペアワイズ候補(pairwise candidates)を含む。動きベクトル候補リストを生成するために、ビデオコーダは、所望の量の候補がリストに含まれるまで、ソースからの候補を評価(evaluate)し得る。動きベクトル候補リストに含めるために特定の候補を評価するために、ビデオコーダは、特定の候補が利用可能であるかどうか、および/または、特定の候補の値が、動きベクトル候補リストに既に含まれている候補と同じであるかどうか、を決定し得る。ビデオコーダは、特定の順序でソースからの候補を評価し得る。
[0020] いくつかのケースでは、ビデオコーダは、現在のブロックが、インターモードを使用して(例えば、現在のブロックとは異なるピクチャ内に位置する予測子ブロックを使用して)予測されるか、あるいはIBCを使用して(例えば、現在のブロックと同じピクチャ内に位置する予測子ブロックを使用して)予測されるかにかかわらず、現在のブロックのための動きベクトル候補リストを生成するために、ソースの順序を利用し得る。他のケースでは、ビデオコーダは、インターモードを使用して予測するブロックおよびIBCを使用して予測されるブロックのための動きベクトル候補リストを生成するために、ソースの異なる順序を利用し得る。ビデオコーダが異なる順序を使用する場合には、依然として、考慮される候補における何らかの重複があり得る。例えば、ビデオコーダは、動きベクトル候補リスト中の最後の候補がHMVP候補であってはならないという条件で、インターを使用してコーディングされるブロックと、IBCを使用してコーディングされるブロックとの両方について、動きベクトル候補リストに含めるためにHMVP候補を評価し得る。
[0021] 本開示の1つまたは複数の技法によれば、ビデオコーダは、HMVP候補を動きベクトル候補リスト中の最後の候補として、IBCを使用して予測されるビデオデータのブロックのための動きベクトル候補リストを生成し得る。例えば、ビデオコーダは、IBCを使用して予測される現在のブロックのための動きベクトル候補リスト中の最後の候補として、HMVP候補を含み得る。
[0022] いくつかの例では、HMVP候補が動きベクトル候補リスト中の最後の候補であることを可能にすることに加えて、ビデオコーダは、インター候補リスト(inter candidate list)のために使用されるいくつかの候補ソースを、IBC候補リストのためには利用しないことがあり得る。例えば、ビデオコーダは、IBCを使用してコーディングされるブロックのための候補リストを生成するときに、ペアワイズ候補を評価しないことがあり得、インターを使用してコーディングされるブロックのための候補リストを生成するときに、ペアワイズ候補を評価し得る。
[0023] 本開示の技法は、イントラブロックコピー(IBC)モードおよび共有動きベクトル予測子リスト設計(shared motion vector predictor list design)に関する。これら技法は、HEVC(高効率ビデオコーディング:High Efficiency Video Coding)、VVC(汎用のビデオコーディング:Versatile Video Coding)などの、既存のビデオコーデックの任意のものに適用され得るか、または任意の将来のビデオコーディング規格における効率的なコーディングツールになり得る。以下では、本開示に関連するHEVCおよびJEM技法ならびに汎用のビデオコーディング(VVC)における進行中の取り組みが最初に概説される。
[0024] ビデオコーディング規格は、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、その範囲拡張と、マルチビュー拡張(MV-HEVC)と、スケーラブル拡張(SHVC)とを含む、高効率ビデオコーディング(HEVC)またはITU-T H.265を含む。
[0025] ITU-T VCEG(Q6/16)およびISO/IEC MPEG(JTC1/SC29/WG11)は、現在、(スクリーンコンテンツコーディングおよびハイダイナミックレンジコーディングについてのその現在の拡張と近い将来の拡張とを含む)現在のHEVC規格のそれを著しく超過する圧縮能力を有する将来のビデオコーディング技術の標準化についての潜在的な必要性を研究している。これらグループは、この分野におけるそれらの専門家によって提案された圧縮技術設計を評価するために、JVET(Joint Video Exploration Team)として知られる共同コラボレーションの取り組みにおいて、この調査活動で協働している。JVETは、2015年10月19日~21日にわたって最初の会合を行った。最新のバージョンの参照ソフトウェア、すなわち、JEM7(Joint Exploration Model 7)が、jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/HM-16.6-JEM-7.0/において入手可能である。JEM7(Joint Exploration Test Model 7)のアルゴリズム記述、以下、「JVET-G1001」は、phenix.it-sudparis.eu/jvet/doc_end_user/current_document.php?id=3286において入手可能である。
[0026] HEVCにおけるCU構造および動きベクトル予測。HEVCでは、スライス中の最大コーディングユニットは、コーディングツリーブロック(CTB:coding tree block)またはコーディングツリーユニット(CTU)と呼ばれる。CTBは、4分木を含み、そのノードは、コーディングユニットである。CTBのサイズは、(8×8CTBサイズもサポートされ得るが)HEVCメインプロファイルでは、16×16から64×64までの範囲であり得る。コーディングユニット(CU)は、8×8という小ささまでの(to as small as)CTBと同じサイズであり得る。各コーディングユニットは、1つのモード、すなわち、インターまたはイントラでコーディングされる。CUがインターコーディングされるとき、CUは、2つまたは4つの予測ユニット(PU:prediction unit)へとさらに区分され得るか、またはさらなる区分が適用されない場合、単一のPUになり得る。1つのCUに2つのPUが存在するとき、それらは、2分の1のサイズの矩形であり得るか、またはCUの1/4または3/4のサイズを有する2つの矩形サイズであり得る。CUがインターコーディングされるとき、各PUは、1セットの動き情報を有し、これは、一意のインター予測モード(inter prediction mode)で導出される。
[0027] 動き予測(Motion prediction)。HEVC規格では、予測ユニット(PU)について、それぞれマージモード(スキップは特殊なケースのマージと見なされる)およびアドバンスト動きベクトル予測(AMVP:advanced motion vector prediction)モードと名付けられた、2つのインター予測モードが存在する。
[0028] AMVPモードまたはマージモード(merge mode)のいずれにおいても、動きベクトル(MV)候補リストが、複数の動きベクトル予測子のために維持される。現在のPUの(1つまたは複数の)動きベクトル、ならびにマージモードにおける参照インデックスは、MV候補リストから1つの候補を選び出すこと(taking)によって生成される。
[0029] MV候補リストは、マージモードでは、最大5つの候補を含み、AMVPモードでは、2つの候補のみを含み得る。マージ候補は、動き情報のセット、例えば、両方の参照ピクチャリスト(リスト0およびリスト1)に対応する動きベクトルと、参照インデックスとを含み得る。マージ候補がマージインデックスによって識別される場合、参照ピクチャは、現在のブロックの予測のために使用され、ならびに関連する動きベクトルが決定される。しかしながら、AMVPモード下では、リスト0またはリスト1のいずれかからの各潜在的な予測方向について、AMVP候補が1つの動きベクトルしか含まないので、MV候補リストに対するMVPインデックスと共に、参照インデックスが明示的にシグナリングされる必要がある。AMVPモードでは、予測された動きベクトルは、さらに改良され得る。
[0030] 上記から分かるように、マージ候補は、動き情報のフルセットに対応する一方で、AMVP候補は、特定の予測方向についての1つの動きベクトルのみと、参照インデックスとを含む。両方のモードについての候補は、同じ空間的および時間的隣接ブロックから同様に導出される。
[0031] 図1Aおよび図1Bは、HEVCにおける空間的隣接候補を例示する概念図である。空間的MV候補は、特定のPU(PU0)について、図1Aおよび図1Bに示される隣接ブロックから導出されるが、これらブロックから候補を生成する方法は、マージモードとAMVPモードで異なる。
[0032] マージモードでは、最大4つの空間的MV候補が、図1Aに番号で示される順序で導出され得、その順序は、次の通りである:図1Aに示されるように、左(0,A1)、上(1,B1)、右上(2,B0)、左下(3,A0)、および左上(4,B2)。すなわち、図1Aでは、ブロック1000は、PU0 1040AとPU1 1040Bとを含む。ビデオコーダがマージモードを使用してPU0 1040Aについての動き情報をコーディングすべきであるとき、ビデオコーダは、空間的隣接ブロック1080A、1080B、1080C、1080D、および1080Eからの動き情報を、その順序で候補リストに追加する。ブロック1080A、1080B、1080C、1080D、および108Eは、HEVCでと同様に、それぞれブロックA1、B1、B0、A0、およびB2とも呼ばれ得る。
[0033] AVMPモードでは、隣接ブロックは、図1Bに示されるように、2つのグループ、すなわち、ブロック0および1を含む左グループと、ブロック2、3、および4を含む上グループとに分割される。これらのブロックは、それぞれ、図1Bにおいて、ブロック1100A、1100B、1100C、1100D、および1100Eとラベル付けされている。特に、図1Bでは、ブロック1020は、PU0 1060AとPU1 1060Bとを含み、ブロック1100A、1100B、1100C、1100D、および1100Eは、PU0 1060Aに対して空間的に隣接するもの(spatial neighbors)を表す。各グループについて、シグナリングされた参照インデックスによって示されたものと同じ参照ピクチャを参照する隣接ブロック中の潜在的な候補は、グループの最終候補を形成するために選ばれる最も高い優先度を有する。全ての隣接ブロックが、同じ参照ピクチャを指す動きベクトルを含むとは限らない可能性がある。したがって、そのような候補が見出されることができない場合、第1の利用可能な候補が、最終候補を形成するためにスケーリングされることになり、したがって、時間的距離差分(temporal distance difference)が補償され得る。
[0034] 有効かつ利用可能である場合、時間的動きベクトル予測子(TMVP)候補が、空間的動きベクトル候補の後にMV候補リストに追加される。TMVP候補についての動きベクトル導出のプロセスは、マージモードとAMVPモードとの両方について同じであるが、マージモードにおけるTMVP候補についてのターゲット参照インデックスは、常に0に設定される。TMVP候補導出のための主要なブロックロケーション(primary block location)は、空間的隣接候補を生成するために使用される上ブロックおよび左ブロックに対するバイアス(bias)を補償するための、(図2Aにブロック「T」として示されている)コロケート(collocate)されたPUの外側の右下ブロックである。しかしながら、そのブロックが現在のCTB行の外側に位置するか、または動き情報が利用可能でない場合、そのブロックは、PUの中央ブロックで置き換えられる。
[0035] 図2Bに示されるように、TMVP候補のための動きベクトルは、スライスレベルで示される、コロケートされたピクチャのコロケートされたPUから導出される。AVCにおける時間的ダイレクトモード(temporal direct mode)と同様に、TMVP候補の動きベクトルは、距離差分(distance difference)を補償するために、動きベクトルスケーリングを実行され得る。
[0036] 次に、HEVCにおける動き予測の他の態様が説明される。1つのそのような態様が、動きベクトルスケーリングである。動きベクトルの値は、表示時間(presentation time)におけるピクチャの距離に比例すると仮定される。動きベクトルは、2つのピクチャ、すなわち、参照ピクチャと、動きベクトルを含んでいるピクチャ(すなわち、含有ピクチャ(the containing picture))とを関連付ける。動きベクトルが他の動きベクトルを予測するために使用されるとき、含有ピクチャと参照ピクチャの距離は、ピクチャ順序カウント(POC:Picture Order Count)値に基づいて算出される。
[0037] 予測されるべき動きベクトルについては、その関連する含有ピクチャと、参照ピクチャとの両方が異なり得る。したがって、(POCに基づく)新しい距離が算出される。そして、動きベクトルは、これらの2つのPOC距離に基づいてスケーリングされる。空間的隣接候補については、2つの動きベクトルのための含有ピクチャは同じであるが、参照ピクチャは異なる。HEVCでは、動きベクトルスケーリングは、空間的隣接候補および時間的隣接候補(temporal neighboring candidate)のためのTMVPとAMVPとの両方に適用される。
[0038] HEVCにおける動き予測の別の態様が、人工的動きベクトル候補生成(artificial motion vector candidate generation)である。動きベクトル候補リストが完全でない場合、それが全ての候補を有することになるまで、人工的動きベクトル候補が生成され、リストの最後に挿入される。マージモードでは、2つのタイプの人工的MV候補が存在し、すなわち、Bスライスのためにのみ導出される組み合わされた候補(combined candidate)と、第1のタイプが十分な人工的候補を提供しない場合にAMVPのためにのみ使用されるゼロ候補とである。既に候補リスト中に存在しかつ必要な動き情報を有する候補の各ペアについては、双方向の組み合わされた動きベクトル候補が、リスト0中のピクチャを参照する第1の候補の動きベクトルと、リスト1中のピクチャを参照する第2の候補の動きベクトルとの組合せによって導出される。
[0039] HEVCにおける動き予測の別の態様が、候補挿入のためのプルーニング(pruning)プロセスである。異なるブロックからの候補は、偶然同じであることがあり得、これは、マージモードまたはAMVPモードの候補リストの効率を低下させる。プルーニングプロセスは、この問題を解決するために適用され得る。プルーニングプロセスは、ある程度、同一の候補を挿入することを回避するために、1つの候補を現在の候補リスト中の他の候補と比較する。複雑さを低減するために、各潜在的な候補をその他全ての既存の候補と比較する代わりに、限られた数のプルーニングプロセスのみが適用される。
[0040] 拡張された動きベクトル予測(Enhanced motion vector prediction)。VVC(Versatile Video Coding)の開発において、現在のブロックについての動きベクトル予測またはマージ予測の候補リストを導出または改良するいくつかのインターコーディングツールが存在する。これらのアプローチのうちのいくつかが、以下で説明される。これらのアプローチは、履歴ベースの動きベクトル予測、ペアワイズ平均候補(「ペアワイズ候補(pairwise candidates)」とも呼ばれる)、およびVTM3.0におけるマージリストを含む。
[0041] 履歴ベースの動きベクトル予測(History-based motion vector prediction)。履歴ベースの動きベクトル予測(HMVP)[JVET-K0104、phenix.it-sudparis.eu/jvet/doc_end_user/documents/11_Ljubljana/wg11/JVET-K0104-v5.zipにおいて入手可能] は、各ブロックが、直接隣接した(immediately adjacent)因果的な隣接動きフィールド(causal neighboring motion fields)内のものに加えて、過去からの復号されたMVのリストからそのMV予測子を見つけることを可能にする履歴ベースの方法である。複数のHMVP候補を有するテーブルが、符号化/復号プロセス中に維持される。テーブルは、新しいスライスに遭遇すると空にされる。インターコーディングされたブロックがあるたびに、関連する動き情報が、新しいHMVP候補として先入れ先出し(FIFO)方式でテーブルに挿入される。次いで、制約FIFO規則が適用され得る。HMVPをテーブルに挿入するとき、テーブル内に同一のHMVPが存在するかどうかを調べるために、冗長検査が最初に適用される。見つかった場合、その特定のHMVPは、テーブルから除去され、それ以降の全てのHMVP候補が移動される。
[0042] HMVP候補は、マージ候補リスト構築プロセスにおいて使用され得る。テーブル中の最後のエントリから最初のエントリまでの全てのHMVP候補は、TMVP候補の後に挿入され得る。プルーニングが、HMVP候補に適用され得る。利用可能なマージ候補の総数が、シグナリングされた最大許容マージ候補に達すると、マージ候補リスト構築プロセスは終了する。
[0043] 同様に、HMVP候補はまた、AMVP候補リスト構築プロセスにおいても使用され得る。テーブル中の最後のK個のHMVP候補の動きベクトルは、TMVP候補の後に挿入される。AMVPターゲット参照ピクチャと同じ参照ピクチャを有するHMVP候補のみが、AMVP候補リストを構築するために使用される。プルーニングが、HMVP候補に適用される。
[0044] ペアワイズ平均候補(Pairwise average candidates)。ペアワイズ平均候補が、VTM3.0において使用される。ペアワイズ平均候補は、(空間的候補、TMVP、およびHMVPを含む)現在のマージ候補リスト中の候補の事前に定義されたペアを平均することによって生成され、事前に定義されたペアは、{(0,1),(0,2),(1,2),(0,3),(1,3),(2,3)}として定義され、ここで、番号は、マージ候補リストへのマージインデックスを示す。平均化された動きベクトルは、各参照リストについて別々に算出される。両方の動きベクトルが1つのリスト中で利用可能である場合、これらの2つの動きベクトルは、それらが異なる参照ピクチャを指すときでさえも平均化され、1つの動きベクトルのみが利用可能である場合、その1つを直接使用し、利用可能な動きベクトルがない場合、このリストを無効に保つ。ペアワイズ平均候補は、HEVC規格における組み合わされた候補に置き換わる。
[0045] VTM3.0におけるマージリスト(Merge list in VTM3.0)。VTM4.0では、通常のインターマージモードの場合、マージリストのサイズは6であり、マージ候補リストの順序は、以下の通りであり得る:
1.ブロックA1、B1、B0およびA0のための空間的候補。
2.候補の数が4未満である場合、B2を追加する。
3.TMVP候補。
4.HMVP候補(リスト中の最後の候補であってはならない)。
5.ペアワイズ候補。
6.ゼロ候補。
[0046] VTM4.0では、IBCモードの場合、マージリストのサイズは6であり、マージ候補リストの順序は、以下の通りであり得る:
1.ブロックA1、B1、B0およびA0のための空間的候補。
2.候補の数が4未満である場合、B2を追加する。
3.HMVP候補(リスト中の最後の候補であってはならない)。
4.ペアワイズ候補。
[0047] IBCモードでは、候補が有効である場合、ビデオコーダは、それらをマージ/スキップリスト(merge/skip list)に追加し得る。候補は、以下の条件が満たされる場合に有効と見なされ得る:B1がA1によってプルーニングされ、B1がA1とは異なる場合、マージ/スキップリストにB1を追加する;B0がB1によってプルーニングされ、A0がA1によってプルーニングされる;候補の数が4未満である場合、B2をチェックする。B2がA1およびB1によってプルーニングされる;最初の2つのHMVP候補が、A1およびB1によってプルーニングされる;ペアワイズ候補は、プルーニングされる必要がない。
[0048] イントラブロックコピー(IBC)は、時に、現在のピクチャ参照(CPR:current picture referencing)と呼ばれ、ここで、動きベクトルは、現在のピクチャ内の既に再構成された参照サンプルを指す。IBCは、HEVCスクリーンコンテンツコーディング拡張(HEVC SCC)においてサポートされた。IBCコーディングされたCUは、インターコーディングされたブロックとしてシグナリングされる。IBCコーディングされたCUのルーマ動き(またはブロック)ベクトルは、整数精度でなければならない。クロマ動きベクトルも、整数精度にクリッピングされる。AMVRと組み合わされたとき、IBCモードは、1ペル(pel)と4ペルの動きベクトル精度の間で切り替わり得る。現在のピクチャは、参照ピクチャリストL0の末尾に配置される。メモリ消費およびデコーダの複雑さを低減するために、VTM-3.0におけるIBCは、現在のCTUの再構成された部分のみが使用されることを可能にする。この制限は、IBCモードがハードウェアインプリメンテーションのためのローカルオンチップメモリを使用してインプリメントされることを可能にする。
[0049] エンコーダ側では、ハッシュベース動き推定が、IBCのために実行され得る。エンコーダは、16ルーマサンプルよりも大きくない幅または高さのいずれかをもつブロックについてRDチェックを実行する。非マージモードの場合、ブロックベクトル探索は、最初にハッシュベース探索を使用して実行される。ハッシュ探索が有効な候補を返さない場合、ブロックマッチングベースのローカル探索が実行されることになる。
[0050] VTM4.0では、IBCモードは、ブロックレベルフラグを用いてシグナリングされ、IBC AMVPモードまたはIBCスキップ/マージモードとしてシグナリングされ得る。IBCモードは、イントラまたはインター予測モード以外の第3の予測モードとして扱われる(例えば、IBCモードは、イントラおよびインターとは異なる独立した予測モードである)。現在のピクチャは、参照ピクチャリスト0中の参照ピクチャのうちの1つとしてもはや含まれないことがあり得る。IBCモードのための動きベクトルの導出プロセスは、インターモードにおける全ての隣接ブロックを除外し、その逆もまた同様である。ビットストリーム適合性チェックは、エンコーダにおいてもはや必要とされず、冗長モードシグナリングが除去される。
[0051] JVETにおける現在のIBC技法は、1つまたは複数の問題を提示し得る。独立したモードとしてのIBCモードが、第13回JVET会合において採用された。IBCマージ/スキップモードのためのマージ/スキップ候補リスト生成の現在の方法は、通常のインターマージ/スキップモードと同様であるが、IBCモードは、通常のインター予測とは異なる。
[0052] 1つの例となる問題として、インターマージ/スキップリスト生成では、候補の数が4に達した場合、候補B2はチェックされないことになる。しかし、IBCモードは、TMVP候補を除去し、これは、潜在的な候補の数を低減させた。したがって、候補の数が4に達していたとしても、候補B2がチェックされることが望ましくあり得る。本開示の1つまたは複数の技法によれば、マージ/スキップリストは、IBCモードのために再設計され得る。
[0053] 別の例となる問題として、インター予測のプルーニングオペレーションは、異なる候補間で、動き方向、参照idx/POC、および動きベクトル(MV)を比較する必要がある。しかしながら、IBCモードの場合、動き方向および参照idx/POCは、常に同じであり得る。本開示の1つまたは複数の技法によれば、プルーニングアルゴリズムは、簡略化され得る。
[0054] 別の例となる問題として、HMVP候補は、VTMでのマージ/スキップリスト中の最後の候補になることができない。本開示の1つまたは複数の技法によれば、この制限は除去され得る。
[0055] 別の例となる問題として、1つのペアワイズ候補のみが、IBCマージ/スキップモードのために使用され得る。しかしながら、インターマージ/スキップモードとしてゼロMVがないので、リストは6未満になり得る。
[0056] 別の例となる問題として、インター予測のためのMV丸めアルゴリズムは統一されているが、IBCモード(IBC AMVPモード、IBCマージ/スキップなど)は、クロマMVのために異なるMV丸め方法を使用し得る。これは、IBCマージ/スキップモードだけでなく、他のIBCモードについても同様である。本開示の1つまたは複数の技法によれば、丸め方法は統一され得る。
[0057] 本開示の1つまたは複数の技法によれば、ビデオコーダ(例えば、図3および/または図5のビデオエンコーダ200などのビデオエンコーダ、あるいは図3および/または図6のビデオデコーダ300などのビデオデコーダ)は、B2候補をチェックすることの候補数制限を除去するように構成され得る。一例として、IBCマージ/スキップリストを生成するとき、ビデオコーダは、常にB2の候補をチェックし得る。B2の候補が有効である場合、ビデオコーダは、B2の候補を候補リストに追加し得る。別の例として、IBCマージ/スキップリスト(IBC merge/skip list)を生成するとき、ビデオコーダは、候補が(例えば、現在のVTMにおける)しきい値(例えば、2、3、4、5、6)未満であるときにのみ、B2をチェックすることの制限を除去し得る。ビデオコーダは、B2が、1)有効である、2)IBCモードでコーディングされている、および3)A1およびB1によってプルーニングされている場合(例えば、B2がA1およびB1とは異なる場合)、常にB2をチェックし得、ビデオコーダは、B2をリストに追加し得る。
[0058] 本開示の1つまたは複数の技法によれば、ビデオコーダは、HMVP候補がマージ/スキップリスト中の最後の候補であってはならないという制限を除去し得る。例えば、VTMでは、ビデオコーダは、HMVP候補が最後のIBCマージ/スキップ候補であってはならないという制限を除去し得る。ビデオコーダは、候補の数がマージ/スキップリストのサイズに達するか、またはHMVPテーブル中の全ての候補がチェックされるまで、HMVPテーブル中の利用可能なHMVP候補をチェックし得る。
[0059] 本開示の1つまたは複数の技法によれば、ビデオコーダは、IBCモードについてペアワイズ候補を除去し得る。例えば、ビデオコーダは、IBCマージ/スキップモードにおいてペアワイズ候補を使用しない場合がある。一例として、ビデオコーダは、1つのペアワイズ候補のみが使用され得るという制限を除去し得る。一例として、ビデオコーダは、マージ/スキップ候補リスト中の利用可能な候補を使用して、ペアワイズ候補を生成し、候補の数がリストの最大サイズに達するまで、リストに追加し得る。別の例として、ビデオコーダは、マージ/スキップ候補リスト中の最初のN個の利用可能な候補を使用して、ペアワイズ候補を生成し、候補の数がリストのサイズに達するまで、リストに追加し得る。例えば、N=3の場合、ペアは、{(0,1),(0,2),(1,2),(0,3),(1,3),(2,3)}となる。一例では、ビデオコーダは、ペアワイズ候補を生成するために、HMVP候補を使用しない場合がある。
[0060] 本開示の1つまたは複数の技法によれば、ビデオコーダは、MV予測子リストに新しいMV候補を追加することから、プルーニングオペレーションを除去し得る。例えば、IBCマージ/スキップリスト、および/またはAMVPリストを生成するために、IBCモードでコーディングされたブロックから導出された新しいMV候補をチェックするとき、ビデオコーダは、新しいMV候補を他の候補と比較する必要がなく、新しい候補をリストに直接追加し得る。
[0061] 別の例として、ビデオコーダは、動きベクトルのみを比較することによって、プルーニングオペレーションを簡略化し得る。例えば、IBCマージ/スキップリスト、および/またはAMVPリストを生成するために、IBCモードでコーディングされたブロックから導出された新しいMV候補をチェックするとき、ビデオコーダは、動きベクトルのみを比較することによって実行し得る。動きベクトル予測子リスト(motion vector predictor list)は、マージ/スキップリスト、またはAMVPリスト、または他の動きベクトル予測子候補リストであり得る。
[0062] 別の例として、ビデオコーダは、統一されたMV丸め方法を利用し得る。例えば、ビデオコーダは、以下に示されるようなIBCの修正されたクロマMV丸め方法を利用し得、ここで、iは、xまたはy(水平方向および垂直方向におけるMV成分)に等しい。shiftiは、目的に関連付けられ得るか、事前に定義され得るか、またはMVビット精度の、クロマフォーマットに依存し得る。
[0063] 例えば、入力MViは、1/16精度で内部ビット精度が4である(which 1/16 precision with the internal bit precision is 4)ルーマMVであり、クロマフォーマットは、4:2:0である。整数精度のクロマMVを生成するために、shiftiは、5=4+1に等しく、MVChromaiは、以下に示されるように決定され得る:
[0064] 例えば、入力MViは、1/16精度で内部ビット精度が4であるルーマMVであり、クロマフォーマットは、4:4:4である。整数精度のクロマMVを生成するために、shiftiは、4に等しく、MVChromaiは、以下に示されるように決定され得る:
[0065] 図3は、本開示の技法を実行し得る、例となるビデオ符号化および復号システム100を例示するブロック図である。本開示の技法は、一般に、ビデオデータをコーディング(符号化および/または復号)することを対象とする。一般に、ビデオデータは、ビデオを処理するための任意のデータを含む。したがって、ビデオデータは、生のコーディングされていないビデオ、符号化されたビデオ、復号された(例えば、再構成された)ビデオ、およびシグナリングデータなどのビデオメタデータを含み得る。
[0066] 図3に示されるように、システム100は、この例では、宛先デバイス116によって復号および表示されることになる符号化されたビデオデータを提供するソースデバイス102を含む。特に、ソースデバイス102は、コンピュータ可読媒体110を介して、宛先デバイス116にビデオデータを提供する。ソースデバイス102および宛先デバイス116は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス(set-top box)、スマートフォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス、または同様のものを含む、幅広い範囲のデバイスのうちの任意のものを備え得る。いくつかのケースでは、ソースデバイス102および宛先デバイス116は、ワイヤレス通信のために装備され得、したがって、ワイヤレス通信デバイスと呼ばれ得る。
[0067] 図3の例では、ソースデバイス102は、ビデオソース104、メモリ106、ビデオエンコーダ200、および出力インターフェース108を含む。宛先デバイス116は、入力インターフェース122、ビデオデコーダ300、メモリ120、およびディスプレイデバイス118を含む。本開示によれば、ソースデバイス102のビデオエンコーダ200および宛先デバイス116のビデオデコーダ300は、局所照明補償(local illumination compensation)のための技法を適用するように構成され得る。したがって、ソースデバイス102は、ビデオ符号化デバイスの一例を表し、一方、宛先デバイス116は、ビデオ復号デバイスの一例を表す。他の例では、ソースデバイスおよび宛先デバイスは、他の構成要素または配置を含み得る。例えば、ソースデバイス102は、外部カメラなどの外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイス116は、一体化されたディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
[0068] 図3に示されるようなシステム100は、単なる一例に過ぎない。一般に、任意のデジタルビデオ符号化および/または復号デバイスが、局所照明補償のための技法を実行し得る。ソースデバイス102および宛先デバイス116は、ソースデバイス102が宛先デバイス116への送信のためのコーディングされたビデオデータを生成する、そのようなコーディングデバイスの単なる例に過ぎない。本開示は、「コーディング(coding)」デバイスを、データのコーディング(符号化および/または復号)を実行するデバイスとして参照する。したがって、ビデオエンコーダ200およびビデオデコーダ300は、コーディングデバイスの例を表し、特に、それぞれビデオエンコーダおよびビデオデコーダを表す。いくつかの例では、デバイス102、116は、デバイス102、116の各々がビデオ符号化および復号構成要素を含むように、実質的に対称的な方法で動作し得る。したがって、システム100は、例えば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオテレフォニーのために、ビデオデバイス102、116間の一方向または双方向のビデオ送信をサポートし得る。
[0069] 一般に、ビデオソース104は、ビデオデータ(すなわち、生のコーディングされていないビデオデータ)のソースを表し、ビデオデータの連続する一連のピクチャ(「フレーム」とも呼ばれる)を、ピクチャのためのデータを符号化するビデオエンコーダ200に提供する。ソースデバイス102のビデオソース104は、ビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされた生ビデオを含むビデオアーカイブ、および/またはビデオコンテンツプロバイダからのビデオを受信するためのビデオフィードインターフェースを含み得る。さらなる代替として、ビデオソース104は、ソースビデオとしてコンピュータグラフィックスベースのデータ、または、ライブビデオ、アーカイブされたビデオ、およびコンピュータ生成されたビデオの組合せを生成し得る。各ケースにおいて、ビデオエンコーダ200は、キャプチャされた、事前にキャプチャされた、またはコンピュータ生成されたビデオデータを符号化する。ビデオエンコーダ200は、ピクチャを、受信された順序(「表示順序」と呼ばれることもある)から、コーディングのためのコーディング順序に並べ替え得る。ビデオエンコーダ200は、符号化されたビデオデータを含むビットストリームを生成し得る。次いで、ソースデバイス102は、例えば、宛先デバイス116の入力インターフェース122による、受信および/または取り出しのために、符号化されたビデオデータを、出力インターフェース108を介してコンピュータ可読媒体110上に出力し得る。
[0070] ソースデバイス102のメモリ106および宛先デバイス116のメモリ120は、汎用メモリを表す。いくつかの例では、メモリ106、120は、生ビデオデータ、例えば、ビデオソース104からの生ビデオおよびビデオデコーダ300からの生の復号されたビデオデータを記憶し得る。追加または代替として、メモリ106、120は、例えば、それぞれ、ビデオエンコーダ200およびビデオデコーダ300によって実行可能なソフトウェア命令を記憶し得る。この例では、ビデオエンコーダ200およびビデオデコーダ300とは別個に示されているが、ビデオエンコーダ200およびビデオデコーダ300はまた、機能的に類似したまたは同等の目的のために内部メモリを含み得ることが理解されるべきである。さらに、メモリ106、120は、符号化されたビデオデータ、例えば、ビデオエンコーダ200からの出力およびビデオデコーダ300への入力を記憶し得る。いくつかの例では、メモリ106、120の一部は、例えば、生の復号されたおよび/または符号化されたビデオデータを記憶するための、1つまたは複数のビデオバッファとして割り振られ得る。
[0071] コンピュータ可読媒体110は、符号化されたビデオデータをソースデバイス102から宛先デバイス116にトランスポートすることが可能な任意のタイプの媒体またはデバイスを表し得る。一例では、コンピュータ可読媒体110は、ソースデバイス102が、例えば、無線周波数ネットワークまたはコンピュータベースのネットワークを介して、符号化されたビデオデータをリアルタイムで宛先デバイス116に直接送信することを可能にする通信媒体を表す。出力インターフェース108は、符号化されたビデオデータを含む送信信号を変調し得、入力インターフェース122は、ワイヤレス通信プロトコルなどの通信規格に従って、受信された送信信号を変調し得る。通信媒体は、無線周波数(RF)スペクトルあるいは1つまたは複数の物理伝送線などの、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットのようなグローバルネットワークなどの、パケットベースのネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス102から宛先デバイス116への通信を容易にするのに有用であり得るその他任意の機器を含み得る。
[0072] いくつかの例では、ソースデバイス102は、符号化されたデータを出力インターフェース108から記憶デバイス116に出力し得る。同様に、宛先デバイス116は、入力インターフェース122を介して、記憶デバイス116からの符号化されたデータにアクセスし得る。記憶デバイス116は、ハードドライブ、ブルーレイディスク、DVD、CD-ROM、フラッシュメモリ、揮発性もしくは不揮発性メモリ、または符号化されたビデオデータを記憶するためのその他任意の好適なデジタル記憶媒体などの、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のうちの任意のものを含み得る。
[0073] いくつかの例では、ソースデバイス102は、ソースデバイス102によって生成された符号化されたビデオを記憶し得るファイルサーバ114または別の中間記憶デバイスに、符号化されたビデオデータを出力し得る。宛先デバイス116は、ストリーミングまたはダウンロードを介して、ファイルサーバ114からの記憶されたビデオデータにアクセスし得る。ファイルサーバ114は、符号化されたビデオデータを記憶し、その符号化されたビデオデータを宛先デバイス116に送信することが可能な任意のタイプのサーバデバイスであり得る。ファイルサーバ114は、(例えば、ウェブサイトのための)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、コンテンツ配信ネットワークデバイス、またはネットワーク接続ストレージ(NAS)デバイスを表し得る。宛先デバイス116は、インターネット接続を含む任意の標準的なデータ接続を通じて、ファイルサーバ114からの符号化されたビデオデータにアクセスし得る。これは、ファイルサーバ114上に記憶された符号化されたビデオデータにアクセスするのに好適である、ワイヤレスチャネル(例えば、Wi-Fi接続)、ワイヤード接続(例えば、DSL、ケーブルモデム、等)、または両方の組合せを含み得る。ファイルサーバ114および入力インターフェース122は、ストリーミング送信プロトコル、ダウンロード送信プロトコル、またはこれらの組合せに従って動作するように構成され得る。
[0074] 出力インターフェース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に帰属する(attributed to)機能を実行するためのSoCデバイスを含み得、宛先デバイス116は、ビデオデコーダ300および/または入力インターフェース122に帰属する機能を実行するためのSoCデバイスを含み得る。
[0075] 本開示の技法は、無線テレビ放送、ケーブルテレビ送信、衛星テレビ送信、HTTPを介した動的適応型ストリーミング(DASH)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されるデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他のアプリケーションなどの、様々なマルチメディアアプリケーションのうちの任意のものをサポートするビデオコーディングに適用され得る。
[0076] 宛先デバイス116の入力インターフェース122は、コンピュータ可読媒体110(例えば、記憶デバイス112、ファイルサーバ114、または同様のもの)から符号化されたビデオビットストリームを受信する。符号化されたビデオビットストリームコンピュータ可読媒体110は、ビデオブロックまたは他のコーディングされたユニット(例えば、スライス、ピクチャ、ピクチャのグループ、シーケンス、または同様のもの)の特性および/または処理を記述する値を有するシンタックス要素などの、ビデオエンコーダ200によって定義されるシグナリング情報を含み得、これはまた、ビデオデコーダ300によっても使用される。ディスプレイデバイス118は、復号されたビデオデータの復号されたピクチャをユーザに表示する。ディスプレイデバイス118は、ブラウン管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの様々なディスプレイデバイスのうちの任意のものを表し得る。
[0077] 図3には示されていないが、いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、オーディオエンコーダおよび/またはオーディオデコーダとそれぞれ一体化され得、共通のデータストリーム中にオーディオとビデオとの両方を含む多重化ストリームを処理するために、適切なMUX-DEMUXユニット、あるいは他のハードウェアおよび/またはソフトウェアを含み得る。適用可能な場合、MUX-DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
[0078] ビデオエンコーダ200およびビデオデコーダ300は、1つまたは複数のマイクロプロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理回路、ソフトウェア、ハードウェア、ファームウェア、またはこれらの任意の組合せなどの、様々な好適なエンコーダおよび/またはデコーダ回路のうちの任意のものとしてそれぞれインプリメントされ得る。本技法が部分的にソフトウェアにおいてインプリメントされるとき、デバイスは、好適な非一時的なコンピュータ可読媒体にソフトウェアのための命令を記憶し、本開示の技法を実行するために、1つまたは複数のプロセッサを使用してハードウェアにおいて命令を実行し得る。ビデオエンコーダ200およびビデオデコーダ300の各々は、1つまたは複数のエンコーダまたはデコーダに含まれ得、これらのいずれもが、それぞれのデバイスにおいて複合エンコーダ/デコーダ(CODEC)の一部として一体化され得る。ビデオエンコーダ200および/またはビデオデコーダ300を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラ電話などのワイヤレス通信デバイスを備え得る。
[0079] ビデオエンコーダ200およびビデオデコーダ300は、高効率ビデオコーディング(HEVC)とも呼ばれる、ITU-T H.265などのビデオコーディング規格、またはマルチビューおよび/またはスケーラブルビデオコーディング拡張などの、それに対する拡張に従って動作し得る。代替として、ビデオエンコーダ200およびビデオデコーダ300は、JEM(Joint Exploration Test Model)などの、他のプロプライエタリ規格または業界標準規格に従って動作し得る。しかしながら、本開示の技法は、いかなる特定のコーディング規格にも限定されない。
[0080] 一般に、ビデオエンコーダ200およびビデオデコーダ300は、ピクチャのブロックベースのコーディングを実行し得る。「ブロック」という用語は、一般に、処理される(例えば、符号化される、復号される、あるいは、符号化および/または復号プロセスにおいて別様に使用される)べきデータを含む構造を指す。例えば、ブロックは、ルミナンスおよび/またはクロミナンスデータのサンプルの2次元行列を含み得る。一般に、ビデオエンコーダ200およびビデオデコーダ300は、YUV(例えば、Y、Cb、Cr)フォーマットで表されるビデオデータをコーディングし得る。すなわち、ピクチャのサンプルについての赤、緑、および青(RGB)データをコーディングするのではなく、ビデオエンコーダ200およびビデオデコーダ300は、ルミナンス成分およびクロミナンス成分をコーディングし得、ここで、クロミナンス成分は、赤の色相クロミナンス成分と青の色相クロミナンス成分との両方を含み得る。いくつかの例では、ビデオエンコーダ200は、受信されたRGBフォーマットされたデータを、符号化する前にYUV表現に変換し、ビデオデコーダ300は、YUV表現をRGBフォーマットに変換する。代替として、前処理ユニットおよび後処理ユニット(図示せず)が、これらの変換を実行し得る。
[0081] 本開示は、一般に、ピクチャのデータを符号化または復号するプロセスを含むように、ピクチャのコーディング(例えば、符号化および復号)を参照し得る。同様に、本開示は、ブロックのためのデータを符号化または復号するプロセス、例えば、予測および/または残差コーディングを含むように、ピクチャのブロックのコーディングを参照し得る。符号化されたビデオビットストリームは、一般に、コーディング決定(例えば、コーディングモード)と、ピクチャのブロックへの区分とを表すシンタックス要素についての一連の値を含む。したがって、ピクチャまたはブロックをコーディングすることへの参照は、一般に、ピクチャまたはブロックを形成するシンタックス要素の値をコーディングすることとして、理解されるべきである。
[0082] HEVCは、コーディングユニット(CU)、予測ユニット(PU)、および変換ユニット(TU)を含む、様々なブロックを定義する。HEVCによれば、ビデオコーダ(ビデオエンコーダ200など)は、4分木構造に従って、コーディングツリーユニット(CTU)をCUに区分する。すなわち、ビデオコーダは、CTUおよびCUを4つの等しい重複しない正方形に区分し、4分木の各ノードは、0か4つのいずれかの子ノードを有する。子ノードを有さないノードは、「リーフノード」と呼ばれ得、そのようなリーフノードのCUは、1つまたは複数のPU、および/または、1つまたは複数のTUを含み得る。ビデオコーダは、PUおよびTUをさらに区分し得る。例えば、HEVCでは、残差4分木(RQT)は、TUの区分を表す。HEVCでは、PUは、インター予測データを表し、一方、TUは、残差データを表す。イントラ予測されるCUは、イントラモードインジケーションなどのイントラ予測情報を含む。
[0083] 別の例として、ビデオエンコーダ200およびビデオデコーダ300は、JEMに従って動作するように構成され得る。JEMによれば、ビデオコーダ(ビデオエンコーダ200など)は、ピクチャを複数のコーディングツリーユニット(CTU)に区分する。ビデオエンコーダ200は、4分木2分木(QTBT)構造などのツリー構造に従ってCTUを区分し得る。JEMのQTBT構造は、HEVCのCU、PU、およびTU間の分離などの、複数の区分タイプの概念を除去する。JEMのQTBT構造は、4分木区分に従って区分された第1のレベルと、2分木区分に従って区分された第2のレベルとの2つのレベルを含む。QTBT構造のルートノードは、CTUに対応する。2分木のリーフノードは、コーディングユニット(CU)に対応する。
[0084] いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、ルミナンス成分およびクロミナンス成分の各々を表すために、単一のQTBT構造を使用し得、一方、他の例では、ビデオエンコーダ200およびビデオデコーダ300は、ルミナンス成分のための1つのQTBT構造および両方のクロミナンス成分のための別のQTBT構造(または、それぞれのクロミナンス成分のための2つのQTBT構造)などの、2つ以上のQTBT構造を使用し得る。
[0085] ビデオエンコーダ200およびビデオデコーダ300は、HEVCによる4分木区分、JEMによるQTBT区分、または他の区分構造を使用するように構成され得る。説明を目的として、本開示の技法の説明は、QTBT区分に関して提示される。しかしながら、本開示の技法はまた、4分木区分、または他のタイプの区分も使用するように構成されたビデオコーダに適用され得ることが理解されるべきである。
[0086] 本開示は、「N×N(NxN)」および「N×N(N by N)」を交換可能に使用して、垂直寸法および水平寸法に関するブロック(CUまたは他のビデオブロックなど)のサンプル寸法、例えば、16×16(16x16)サンプルまたは16×16(16 by 16)サンプルを参照し得る。一般に、16×16 CUは、垂直方向に16個のサンプル(y=16)と、水平方向に16個のサンプル(x=16)とを有することになる。同様に、N×N CUは、一般に、垂直方向にN個のサンプルと、水平方向にN個のサンプルとを有し、ここで、Nは、非負整数値を表す。CU中のサンプルは、行および列に配置され得る。さらに、CUは、水平方向に、垂直方向と同じ数のサンプルを必ずしも有する必要はない。例えば、CUは、N×M個のサンプルを備え得、ここで、Mは、必ずしもNに等しいとは限らない。
[0087] ビデオエンコーダ200は、予測情報および/または残差情報、ならびに他の情報を表す、CUについてのビデオデータを符号化する。予測情報は、CUについての予測ブロックを形成するために、どのようにCUが予測されるべきかを示す。残差情報は、一般に、予測ブロックおよび符号化する前のCUのサンプル間のサンプルごとの差分を表す。
[0088] CUを予測するために、ビデオエンコーダ200は、一般に、インター予測またはイントラ予測を通じて、CUのための予測ブロックを形成し得る。インター予測は、一般に、以前にコーディングされたピクチャのデータからCUを予測することを指し、一方、イントラ予測は、一般に、同じピクチャの以前にコーディングされたデータからCUを予測することを指す。インター予測を実行するために、ビデオエンコーダ200は、1つまたは複数の動きベクトルを使用して予測ブロックを生成し得る。ビデオエンコーダ200は、一般に、例えば、CUと参照ブロックとの間の差分に関して、CUに密接にマッチする参照ブロックを識別するために、動き探索を実行し得る。ビデオエンコーダ200は、参照ブロックが現在のCUに密接にマッチするかどうかを決定するために、絶対差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of squared differences)、平均絶対差分(MAD:mean absolute difference)、平均2乗差分(MSD:mean squared differences)、または他のそのような差分算出を使用して、差分メトリックを算出し得る。いくつかの例では、ビデオエンコーダ200は、単方向予測または双方向予測を使用して、現在のCUを予測し得る。
[0089] JEMはまた、アフィン動き補償モード(affine motion compensation mode)を提供し、これは、インター予測モードとみなされ得る。アフィン動き補償モードでは、ビデオエンコーダ200は、ズームインまたはズームアウト、回転、遠近動き(perspective motion)、または他の不規則な動きタイプなどの、非並進動きを表す2つ以上の動きベクトルを決定し得る。
[0090] イントラ予測を実行するために、ビデオエンコーダ200は、予測ブロックを生成するためのイントラ予測モードを選択し得る。JEMは、様々な方向性モード、ならびにプレーナモード(planar mode)およびDCモードを含む、67個のイントラ予測モードを提供する。一般に、ビデオエンコーダ200は、現在のブロック(例えば、CUのブロック)のサンプルをそこから予測するための、現在のブロックに隣接するサンプルを記述(describe)するイントラ予測モードを選択する。このようなサンプルは、一般に、ビデオエンコーダ200がラスタ走査順(左から右、上から下)でCTUおよびCUをコーディングすると仮定すると、現在のブロックと同じピクチャ内の、現在のブロックの上、左上、または左にあり得る。
[0091] ビデオエンコーダ200は、現在のブロックのための予測モードを表すデータを符号化する。例えば、インター予測モードの場合、ビデオエンコーダ200は、様々な利用可能なインター予測モードのうちのどれが使用されるかを表すデータ、ならびに対応するモードについての動き情報を符号化し得る。単方向または双方向インター予測の場合、例えば、ビデオエンコーダ200は、アドバンスト動きベクトル予測(AMVP:advanced motion vector prediction)またはマージモードを使用して、動きベクトルを符号化し得る。ビデオエンコーダ200は、アフィン動き補償モードのための動きベクトルを符号化するために、同様のモードを使用し得る。
[0092] ブロックのイントラ予測またはインター予測などの予測に続いて、ビデオエンコーダ200は、ブロックについての残差データを算出し得る。残差ブロックなどの残差データは、ブロックと、対応する予測モードを使用して形成されたブロックについての予測ブロックとの間のサンプルごとの差分を表す。ビデオエンコーダ200は、変換されたデータを、サンプルドメインの代わりに変換ドメインにおいて生成するために、残差ブロックに1つまたは複数の変換を適用し得る。例えば、ビデオエンコーダ200は、残差ビデオデータに、離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換を適用し得る。加えて、ビデオエンコーダ200は、第1の変換に続いて、モード依存非分離型2次変換(MDNSST:mode-dependent non-separable secondary transform)、信号依存変換、カルーネンレーベ変換(KLT:affine motion compensation mode)、または同様のものなどの2次変換を適用し得る。ビデオエンコーダ200は、1つまたは複数の変換の適用に続いて、変換係数を生成する。
[0093] 上述されたように、変換係数を生成するための任意の変換に続いて、ビデオエンコーダ200は、変換係数の量子化を実行し得る。量子化は、一般に、変換係数が量子化されて、係数を表すために使用されるデータ量をできる限り(possibly)低減し、さらなる圧縮を提供するプロセスを指す。量子化プロセスを実行することによって、ビデオエンコーダ200は、係数のうちのいくつかまたは全てに関連付けられたビット深度を低減し得る。例えば、ビデオエンコーダ200は、量子化中にnビット値をmビット値に切り捨て得、ここで、nはmよりも大きい。いくつかの例では、量子化を実行するために、ビデオエンコーダ200は、量子化されるべき値のビット単位の右シフトを実行し得る。
[0094] 量子化に続いて、ビデオエンコーダ200は、変換係数を走査し得、量子化された変換係数を含む2次元行列から1次元ベクトルを生成する。走査は、ベクトルの前方により高いエネルギー(したがって、より低い周波数)係数を置き、ベクトルの後方により低いエネルギー(したがって、より高い周波数)変換係数を置くように設計され得る。いくつかの例では、ビデオエンコーダ200は、直列化されたベクトルを生成するために、量子化された変換係数を走査するための事前に定義された走査順序を利用し、次いで、ベクトルの量子化された変換係数をエントロピー符号化し得る。他の例では、ビデオエンコーダ200は、適応走査を実行し得る。1次元ベクトルを形成するために、量子化された変換係数を走査した後、ビデオエンコーダ200は、例えば、コンテキスト適応型バイナリ算術コーディング(CABAC)に従って、1次元ベクトルをエントロピー符号化し得る。ビデオエンコーダ200はまた、ビデオデータを復号する際にビデオデコーダ300による使用のための、符号化されたビデオデータに関連付けられたメタデータを記述するシンタックス要素の値をエントロピー符号化し得る。
[0095] CABACを実行するために、ビデオエンコーダ200は、送信されることになるシンボルに、コンテキストモデル内のコンテキストを割り当て得る。コンテキストは、例えば、シンボルの隣接値がゼロ値であるか否かに関連し得る。確率の決定は、シンボルに割り当てられたコンテキストに基づき得る。
[0096] ビデオエンコーダ200は、例えば、ピクチャヘッダ、ブロックヘッダ、スライスヘッダ、またはシーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、もしくはビデオパラメータセット(VPS)などの他のシンタックスデータの中で、ビデオデコーダ300へのブロックベースのシンタックスデータ、ピクチャベースのシンタックスデータ、およびシーケンスベースのシンタックスデータなどの、シンタックスデータをさらに生成し得る。ビデオデコーダ300は、対応するビデオデータをどのように復号すべきかを決定するために、そのようなシンタックスデータを同様に復号し得る。
[0097] このようにして、ビデオエンコーダ200は、符号化されたビデオデータ、例えば、ピクチャのブロック(例えば、CU)への区分と、ブロックについての予測情報および/または残差情報とを記述するシンタックス要素を含むビットストリームを生成し得る。最終的に、ビデオデコーダ300は、ビットストリームを受信し、符号化されたビデオデータを復号し得る。
[0098] 一般に、ビデオデコーダ300は、ビットストリームの符号化されたビデオデータを復号するために、ビデオエンコーダ200によって実行されたものとは逆のプロセスを実行する。例えば、ビデオデコーダ300は、ビデオエンコーダ200のCABAC符号化プロセスと逆ではあるが、実質的に同様の方法でCABACを使用して、ビットストリームのシンタックス要素の値を復号し得る。シンタックス要素は、CTUへのピクチャの区分情報と、CTUのCUを定義するための、QTBT構造などの対応する区分構造に従う各CTUの区分とを定義し得る。シンタックス要素は、ビデオデータのブロック(例えば、CU)についての予測情報および残差情報をさらに定義し得る。
[0099] 残差情報は、例えば、量子化された変換係数によって表され得る。ビデオデコーダ300は、ブロックについての残差ブロックを再生するために、ブロックの量子化された変換係数を逆量子化および逆変換し得る。ビデオデコーダ300は、ブロックについての予測ブロックを形成するために、シグナリングされた予測モード(イントラ予測またはインター予測)および関連する予測情報(例えば、インター予測のための動き情報)を使用する。次いで、ビデオデコーダ300は、元のブロックを再生するために、(サンプルごとの単位で)予測ブロックと残差ブロックとを組み合わせ得る。ビデオデコーダ300は、ブロックの境界に沿った視覚的アーティファクトを低減するために、デブロッキングプロセスを実行することなど、追加の処理を実行し得る。
[0100] 本開示は、一般に、シンタックス要素などの、ある特定の情報の「シグナリング」に言及し得る。「シグナリング」という用語は、一般に、符号化されたビデオデータを復号するために使用されるシンタックス要素の値および/または他のデータの通信を指し得る。すなわち、ビデオエンコーダ200は、ビットストリーム中でシンタックス要素の値をシグナリングし得る。一般に、シグナリングは、ビットストリーム中で値を生成することを指す。上述されたように、ソースデバイス102は、実質的にリアルタイムで、または、宛先デバイス116による後の取り出しのために記憶デバイス112にシンタックス要素を記憶するときに起こり得るなど、リアルタイムではなく、宛先デバイス116にビットストリームをトランスポートし得る。
[0101] 図4Aおよび図4Bは、例となる4分木2分木(QTBT)構造130、および対応するコーディングツリーユニット(CTU)132を例示する概念図である。実線は、4分木分割を表し、点線は、2分木分割を示す。2分木の各分割(すなわち、非リーフ)ノードでは、1つのフラグが、どの分割タイプ(すなわち、水平または垂直)が使用されているかを示すためにシグナリングされ、ここで、この例では、0は、水平分割を示し、1は、垂直分割を示す。4分木分割の場合、4分木ノードが、ブロックを等しいサイズを有する4つのサブブロックへと水平および垂直に分割するので、分割タイプを示す必要はない。したがって、QTBT構造130の領域ツリーレベル(すなわち、実線)についての(分割情報などの)シンタックス要素と、QTBT構造130の予測ツリーレベル(すなわち、破線)についての(分割情報などの)シンタックス要素とを、ビデオエンコーダ200は符号化し得、ビデオデコーダ300は復号し得る。QTBT構造130の終端リーフノードによって表されるCUについての、予測および変換データなどのビデオデータを、ビデオエンコーダ200は符号化し得、ビデオデコーダ300は復号し得る。
[0102] 一般に、図17BのCTU132は、第1および第2のレベルにおけるQTBT構造130のノードに対応するブロックのサイズを定義するパラメータに関連付けられ得る。これらのパラメータは、CTUサイズ(サンプル中のCTU132のサイズを表す)、最小4分木サイズ(MinQTSize、最小許容4分木リーフノードサイズを表す)、最大2分木サイズ(MaxBTSize、最大許容2分木ルートノードサイズを表す)、最大2分木深度(MaxBTDepth、最大許容2分木深度を表す)、および最小2分木サイズ(MinBTSize、最小許容2分木リーフノードサイズを表す)を含み得る。
[0103] CTUに対応するQTBT構造のルートノードは、QTBT構造の第1のレベルにおいて4つの子ノードを有し得、その各々は、4分木区分に従って区分され得る。すなわち、第1のレベルのノードは、リーフノード(子ノードを有さない)であるか、または4つの子ノードを有するかのいずれかである。QTBT構造130の例は、そのようなノードを、分岐について実線を有する親ノードおよび子ノードを含むものとして表す。第1のレベルのノードが最大許容2分木ルートノードサイズ(MaxBTSize)よりも大きくない場合、それらは、それぞれの2分木によってさらに区分され得る。1つのノードの2分木分割は、分割の結果として生じるノードが、最小許容2分木リーフノードサイズ(MinBTSize)または最大許容2分木深度(MaxBTDepth)に達するまで、繰り返され得る。QTBT構造130の例は、そのようなノードを、分岐について破線を有するものとして表す。2分木リーフノードは、コーディングユニット(CU)と呼ばれ、これは、それ以上の区分なしに(without any further partitioning)、予測(例えば、イントラピクチャ予測またはインターピクチャ予測)および変換のために使用される。上記で説明されたように、CUは、「ビデオブロック」または「ブロック」とも呼ばれ得る。
[0104] QTBT区分構造の一例では、CTUサイズは、128×128(ルーマサンプルおよび2つの対応する64×64クロマサンプル)として設定され、MinQTSizeは、16×16として設定され、MaxBTSizeは、64×64として設定され、MinBTSizeは(幅と高さの両方について)、4として設定され、MaxBTDepthは、4として設定される。4分木リーフノードを生成するために、最初に4分木区分がCTUに適用される。4分木リーフノードは、16×16(すなわち、MinQTSize)から128×128(すなわち、CTUサイズ)までのサイズを有し得る。リーフ4分木ノードが128×128である場合、サイズがMaxBTSize(すなわち、この例では、64×64)を超えるので、それは、2分木によってそれ以上分割されないことになる。そうでない場合、リーフ4分木ノードは、2分木によってさらに区分されることになる。したがって、4分木リーフノードはまた、2分木のためのルートノードであり、0の2分木深度を有する。2分木深度がMaxBTDepth(この例では、4)に達したとき、それ以上の分割は許可されない。2分木ノードがMinBTSize(この例では、4)に等しい幅を有するとき、それは、それ以上の垂直分割が許可されないことを暗示する。同様に、MinBTSizeに等しい高さを有する2分木ノードは、その2分木ノードに対してそれ以上の水平分割が許可されないことを暗示する。上述されたように、2分木のリーフノードは、CUと呼ばれ、それ以上の区分なしに、予測および変換に従ってさらに処理される。
[0105] 図5は、本開示の技法を実行し得る、例となるビデオエンコーダ200を例示するブロック図である。図5は、説明を目的として提供されており、本開示において広く実証および説明される技法を限定するものとみなされるべきではない。説明を目的として、本開示は、HEVCビデオコーディング規格および開発中のH.266ビデオコーディング規格などのビデオコーディング規格のコンテキストにおいて、ビデオエンコーダ200を説明する。しかしながら、本開示の技法は、これらのビデオコーディング規格に限定されず、一般にビデオ符号化および復号に適用可能である。
[0106] 図5の例では、ビデオエンコーダ200は、ビデオデータメモリ230、モード選択ユニット202、残差生成ユニット204、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット(reconstruction unit)214、フィルタユニット216、復号ピクチャバッファ(DPB)218、およびエントロピー符号化ユニット220を含む。ビデオデータメモリ230、モード選択ユニット202、残差生成ユニット204、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、フィルタユニット216、DPB218、およびエントロピー符号化ユニット220のいずれかまたは全てが、1つまたは複数のプロセッサにおいて、または処理回路においてインプリメントされ得る。さらに、ビデオエンコーダ200は、これらおよび他の機能を実行するために、追加または代替のプロセッサまたは処理回路を含み得る。
[0107] ビデオデータメモリ230は、ビデオエンコーダ200の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオエンコーダ200は、例えば、ビデオソース104(図3)から、ビデオデータメモリ230に記憶されたビデオデータを受信し得る。DPB218は、ビデオエンコーダ200による後続のビデオデータの予測において使用するための参照ビデオデータを記憶する参照ピクチャメモリとして機能し得る。ビデオデータメモリ230およびDPB218は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのうちの任意のものによって形成され得る。ビデオデータメモリ230およびDPB218は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ230は、例示されるように、ビデオエンコーダ200の他の構成要素とともにオンチップであり得、またはそれらの構成要素に対してオフチップであり得る。
[0108] 本開示では、ビデオデータメモリ230への参照は、そのように明記されていない限り、ビデオエンコーダ200の内部にあるメモリに、またはそのように明記されていない限り、ビデオエンコーダ200の外部にあるメモリに、限定されると解釈されるべきではない。むしろ、ビデオデータメモリ230への参照は、ビデオエンコーダ200が符号化のために受信するビデオデータ(例えば、符号化されるべき現在のブロックについてのビデオデータ)を記憶する参照メモリとして理解されるべきである。図3のメモリ106はまた、ビデオエンコーダ200の様々なユニットからの出力の一時記憶(temporary storage)を提供し得る。
[0109] 図5の様々なユニットは、ビデオエンコーダ200によって実行される動作の理解を助けるために例示される。これらユニットは、固定機能回路、プログラマブル回路、またはこれらの組合せとしてインプリメントされ得る。固定機能回路は、特定の機能を提供する回路を指し、実行され得る動作で予め設定されている。プログラマブル回路は、様々なタスクを実行するようにプログラムされ得る回路を指し、実行され得る動作において柔軟な機能を提供する。例えば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義された方法でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(例えば、パラメータを受け取るまたはパラメータを出力するために)ソフトウェア命令を実行し得るが、固定機能回路が実行する動作のタイプは、一般に不変である。いくつかの例では、これらユニットのうちの1つまたは複数は、個別の回路ブロック(固定機能またはプログラムマブル)であり得、いくつかの例では、1つまたは複数のユニットは、集積回路であり得る。
[0110] ビデオエンコーダ200は、プログラマブル回路から形成された、演算論理ユニット(ALU)、初等関数ユニット(EFU)、デジタル回路、アナログ回路、および/またはプログラマブルコアを含み得る。ビデオエンコーダ200の動作が、プログラマブル回路によって実行されるソフトウェアを使用して実行される例では、メモリ106(図3)が、ビデオエンコーダ200が受信および実行するソフトウェアのオブジェクトコードを記憶し得るか、またはビデオエンコーダ200内の別のメモリ(図示せず)が、そのような命令を記憶し得る。
[0111] ビデオデータメモリ230は、受信されたビデオデータを記憶するように構成される。ビデオエンコーダ200は、ビデオデータメモリ230からビデオデータのピクチャを取り出し、ビデオデータを残差生成ユニット204およびモード選択ユニット202に提供し得る。ビデオデータメモリ230内のビデオデータは、符号化されるべき生ビデオデータであり得る。
[0112] モード選択ユニット202は、動き推定ユニット222、動き補償ユニット224、およびイントラ予測ユニット226を含む。モード選択ユニット202は、他の予測モードに従ってビデオ予測を実行するための追加の機能ユニットを含み得る。例として、モード選択ユニット202は、パレットユニット、イントラブロックコピーユニット(これは、動き推定ユニット222および/または動き補償ユニット224の一部であり得る)、アフィンユニット(affine unit)、線形モデル(LM:linear model)ユニット、または同様のものを含み得る。
[0113] モード選択ユニット202は、一般に、複数の符号化パスを調整して、符号化パラメータの組合せと、そのような組合せについての結果として得られるレート歪み値とをテストする。符号化パラメータは、CTUのCUへの区分、CUのための予測モード、CUの残差データのための変換タイプ、CUの残差データのための量子化パラメータなどを含み得る。モード選択ユニット202は、最終的に、他のテストされた組合せよりも良好なレート歪み値を有する符号化パラメータの組合せを選択し得る。
[0114] ビデオエンコーダ200は、ビデオデータメモリ230から取り出されたピクチャを一連のCTUに区分し、スライス内に1つまたは複数のCTUをカプセル化し得る。モード選択ユニット202は、上記で説明されたQTBT構造またはHEVCの4分木構造などの、ツリー構造に従ってピクチャのCTUを区分し得る。上記で説明されたように、ビデオエンコーダ200は、ツリー構造に従ってCTUを区分することから1つまたは複数のCUを形成し得る。このようなCUは、一般に「ビデオブロック」または「ブロック」とも呼ばれ得る。
[0115] 一般に、モード選択ユニット202はまた、現在のブロック(例えば、現在のCU、またはHEVCでは、PUとTUとの重複部分)についての予測ブロックを生成するように、その構成要素(例えば、動き推定ユニット222、動き補償ユニット224、およびイントラ予測ユニット226)を制御する。現在のブロックのインター予測のために、動き推定ユニット222は、1つまたは複数の参照ピクチャ(例えば、DPB218に記憶された1つまたは複数の以前にコーディングされたピクチャ)内の、1つまたは複数の密接にマッチする参照ブロックを識別するために、動き探索を実行し得る。特に、動き推定ユニット222は、例えば、絶対差分和(SAD)、2乗差分和(SSD)、平均絶対差分(MAD)、平均2乗差分(MSD)、または同様のものに従って、潜在的な参照ブロックが現在のブロックにどれだけ類似しているかを表す値を算出し得る。動き推定ユニット222は、一般に、現在のブロックと考慮されている参照ブロックとの間のサンプルごとの差分を使用して、これらの算出を実行し得る。動き推定ユニット222は、現在のブロックに最も密接にマッチする参照ブロックを示す、これらの算出の結果として生じる最低値を有する参照ブロックを識別し得る。
[0116] 動き推定ユニット222は、現在のピクチャ内の現在のブロックの位置に対する参照ピクチャ内の参照ブロックの位置を定義する、1つまたは複数の動きベクトル(MV)を形成し得る。次いで、動き推定ユニット222は、動きベクトルを動き補償ユニット224に提供し得る。例えば、単方向インター予測の場合、動き推定ユニット222は、単一の動きベクトルを提供し得る一方で、双方向インター予測の場合、動き推定ユニット222は、2つの動きベクトルを提供し得る。次いで、動き補償ユニット224は、動きベクトルを使用して予測ブロックを生成し得る。例えば、動き補償ユニット224は、動きベクトルを使用して参照ブロックのデータを取り出し得る。別の例として、動きベクトルが分数サンプル精度(fractional sample precision)を有する場合、動き補償ユニット224は、1つまたは複数の補間フィルタに従って、予測ブロックについての値を補間し得る。さらに、双方向インター予測の場合、動き補償ユニット224は、それぞれの動きベクトルによって識別された2つの参照ブロックについてのデータを取り出し、例えば、サンプルごとの平均化または重み付け平均化を通じて、取り出されたデータを組み合わせ得る。
[0117] 別の例として、イントラ予測、またはイントラ予測コーディングの場合、イントラ予測ユニット226は、現在のブロックに隣接するサンプルから予測ブロックを生成し得る。例えば、方向性モードの場合、イントラ予測ユニット226は、一般に、隣接サンプルの値を数学的に組み合わせ、これらの算出された値を現在のブロックにわたって定義された方向にポピュレート(populate)して、予測ブロックを生成し得る。別の例として、DCモードの場合、イントラ予測ユニット226は、現在のブロックに対する隣接サンプルの平均を算出し、予測ブロックの各サンプルについてのこの結果として得られる平均を含むように予測ブロックを生成し得る。
[0118] モード選択ユニット202は、予測ブロックを残差生成ユニット204に提供する。残差生成ユニット204は、ビデオデータメモリ230から現在のブロックの生のコーディングされていないバージョンを受信し、モード選択ユニット202から予測ブロックを受信する。残差生成ユニット204は、現在のブロックと予測ブロックとの間のサンプルごとの差分を算出する。結果として得られるサンプルごとの差分は、現在のブロックについての残差ブロックを定義する。いくつかの例では、残差生成ユニット204はまた、残差差分パルスコード変調(RDPCM:residual differential pulse code modulation)を使用して残差ブロックを生成するために、残差ブロック中のサンプル値間の差分を決定し得る。いくつかの例では、残差生成ユニット204は、バイナリ減算を実行する1つまたは複数の減算器回路を使用して形成され得る。
[0119] モード選択ユニット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サイズをサポートし得る。ビデオエンコーダ20およびビデオデコーダ30はまた、インター予測の場合、2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズについての非対称区分をサポートし得る。
[0120] モード選択ユニットがCUをPUにそれ以上区分しない例では、各CUは、ルーマコーディングブロックおよび対応するクロマコーディングブロックに関連付けられ得る。上記のように、CUのサイズは、CUのルーマコーディングブロックのサイズを指し得る。ビデオエンコーダ200およびビデオデコーダ120は、2N×2N、2N×N、またはN×2NのCUサイズをサポートし得る。
[0121] ほんの一例として、イントラブロックコピーモードコーディング、アフィンモードコーディング、および線形モデル(LM)モードコーディングなどの他のビデオコーディング技法の場合、モード選択ユニット202は、これらコーディング技法に関連付けられたそれぞれのユニットを介して、符号化されている現在のブロックについての予測ブロックを生成する。パレットモードコーディングなどのいくつかの例では、モード選択ユニット202は、予測ブロックを生成せず、代わりに、選択されたパレットに基づいてブロックを再構成する方法を示すシンタックス要素を生成し得る。このようなモードでは、モード選択ユニット202は、これらのシンタックス要素をエントロピー符号化ユニット220に提供して、符号化されるようにし得る。
[0122] 上記で説明されたように、残差生成ユニット204は、現在のブロックについてのビデオデータと、対応する予測ブロックとを受信する。次いで、残差生成ユニット204は、現在のブロックについての残差ブロックを生成する。残差ブロックを生成するために、残差生成ユニット204は、予測ブロックと現在のブロックとの間のサンプルごとの差分を算出する。
[0123] 変換処理ユニット206は、変換係数のブロック(本明細書では「変換係数ブロック」と呼ばれる)を生成するために、残差ブロックに1つまたは複数の変換を適用する。変換処理ユニット206は、変換係数ブロックを形成するために、残差ブロックに様々な変換を適用し得る。例えば、変換処理ユニット206は、残差ブロックに、離散コサイン変換(DCT)、方向性変換、カルーネンレーベ変換(KLT)、または概念的に同様の変換を適用し得る。いくつかの例では、変換処理ユニット206は、残差ブロックに複数の変換、例えば、回転変換などの1次変換および2次変換を実行し得る。いくつかの例では、変換処理ユニット206は、残差ブロックに変換を適用しない。
[0124] 量子化ユニット208は、量子化された変換係数ブロックを生成するために、変換係数ブロックにおける変換係数を量子化し得る。量子化ユニット208は、現在のブロックに関連付けられた量子化パラメータ(QP)値に従って、変換係数ブロックの変換係数を量子化し得る。ビデオエンコーダ200は(例えば、モード選択ユニット202を介して)、CUに関連付けられたQP値を調整することによって、現在のブロックに関連付けられた係数ブロックに適用される量子化の程度を調整し得る。量子化は、情報の損失をもたらし得、したがって、量子化された変換係数は、変換処理ユニット206によって生成された元の変換係数よりも低い精度を有し得る。
[0125] 逆量子化ユニット210および逆変換処理ユニット212は、変換係数ブロックから残差ブロックを再構成するために、それぞれ、量子化された変換係数ブロックに逆量子化および逆変換を適用し得る。再構成ユニット214は、再構成された残差ブロックと、モード選択ユニット202によって生成された予測ブロックとに基づいて、(潜在的にある程度の歪みを伴ってではあるが)現在のブロックに対応する再構成されたブロックを生成し得る。例えば、再構成ユニット214は、再構成されたブロックを生成するために、再構成された残差ブロックのサンプルを、モード選択ユニット202によって生成された予測ブロックからの対応するサンプルに加算し得る。
[0126] フィルタユニット216は、再構成されたブロックに対して1つまたは複数のフィルタ動作を実行し得る。例えば、フィルタユニット216は、CUのエッジに沿ったブロッキネスアーティファクトを低減するために、デブロッキング動作を実行し得る。いくつかの例では、フィルタユニット216の動作は、スキップされ得る。
[0127] ビデオエンコーダ200は、再構成されたブロックをDPB218に記憶する。例えば、フィルタユニット216の動作が必要とされない例では、再構成ユニット214が、再構成されたブロックをDPB218に記憶し得る。フィルタユニット216の動作が必要とされる例では、フィルタユニット216が、フィルタリングされた再構成されたブロックをDPB218に記憶し得る。動き推定ユニット222および動き補償ユニット224は、後に符号化されるピクチャのブロックをインター予測するために、再構成された(および潜在的にフィルタリングされた)ブロックから形成された参照ピクチャを、DPB218から取り出し得る。加えて、イントラ予測ユニット226は、現在のピクチャ内の他のブロックをイントラ予測するために、現在のピクチャのDPB218中の再構成されたブロックを使用し得る。
[0128] 一般に、エントロピー符号化ユニット220は、ビデオエンコーダ200の他の機能的構成要素から受信されたシンタックス要素をエントロピー符号化し得る。例えば、エントロピー符号化ユニット220は、量子化ユニット208からの量子化された変換係数ブロックをエントロピー符号化し得る。別の例として、エントロピー符号化ユニット220は、モード選択ユニット202からの予測シンタックス要素(例えば、インター予測のための動き情報またはイントラ予測のためのイントラモード情報)をエントロピー符号化し得る。エントロピー符号化ユニット220は、エントロピー符号化されたデータを生成するために、ビデオデータの別の例であるシンタックス要素に対して1つまたは複数のエントロピー符号化オペレーションを実行し得る。例えば、エントロピー符号化ユニット220は、データに対して、コンテキスト適応型可変長コーディング(CAVLC)オペレーション、CABACオペレーション、V2V(variable-to-variable)長コーディングオペレーション、シンタックスベースのコンテキスト適応型バイナリ算術コーディング(SBAC)オペレーション、確率間隔区分エントロピー(PIPE)コーディングオペレーション、指数ゴロム符号化オペレーション、または別のタイプのエントロピー符号化オペレーションを実行し得る。いくつかの例では、エントロピー符号化ユニット220は、シンタックス要素がエントロピー符号化されないバイパスモードで動作し得る。
[0129] ビデオエンコーダ200は、スライスまたはピクチャのブロックを再構成するために必要とされるエントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。特に、エントロピー符号化ユニット220が、ビットストリームを出力し得る。
[0130] 上記で説明された動作は、ブロックに関して説明されたものである。このような説明は、ルーマコーディングブロックおよび/またはクロマコーディングブロックのための動作であると理解されるべきである。上記で説明されたように、いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、CUのルーマ成分およびクロマ成分である。いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、PUのルーマ成分およびクロマ成分である。
[0131] いくつかの例では、ルーマコーディングブロックに関して実行される動作は、クロマコーディングブロックに対して繰り返される必要はない。一例として、ルーマコーディングブロックのための動きベクトル(MV)および参照ピクチャを識別するための動作は、クロマブロックのためのMVおよび参照ピクチャを識別するために繰り返される必要はない。むしろ、ルーマコーディングブロックのためのMVは、クロマブロックのためのMVを決定するためにスケーリングされ得、参照ピクチャは、同じであり得る。別の例として、イントラ予測プロセスは、ルーマコーディングブロックとクロマコーディングブロックとで同じであり得る。
[0132] 図6は、本開示の技法を実行し得る、例となるビデオデコーダ300を例示するブロック図である。図6は、説明を目的として提供されており、本開示において広く実証および説明される技法を限定するものではない。説明を目的として、本開示は、JEMおよびHEVCの技法に従って説明されるビデオデコーダ300を説明する。しかしながら、本開示の技法は、他のビデオコーディング規格に合わせて構成されたビデオコーディングデバイスによっても実行され得る。
[0133] 図6の例では、ビデオデコーダ300は、コーディングされたピクチャバッファ(CPB)メモリ320、エントロピー復号ユニット302、予測処理ユニット304、逆量子化ユニット306、逆変換処理ユニット308、再構成ユニット310、フィルタユニット312、および復号ピクチャバッファ(DPB)314を含む。CPBメモリ320、エントロピー復号ユニット302、予測処理ユニット304、逆量子化ユニット306、逆変換処理ユニット308、再構成ユニット310、フィルタユニット312、およびDPB314のいずれかまたは全てが、1つまたは複数のプロセッサにおいて、または処理回路においてインプリメントされ得る。さらに、ビデオデコーダ300は、これらおよび他の機能を実行するために、追加または代替のプロセッサまたは処理回路を含み得る。
[0134] 予測処理ユニット304は、動き補償ユニット316およびイントラ予測ユニット318を含む。予測処理ユニット304は、他の予測モードに従って予測を実行するための追加のユニットを含み得る。例として、予測処理ユニット304は、パレットユニット、イントラブロックコピーユニット(これは、動き補償ユニット316の一部を形成し得る)、アフィンユニット、線形モデル(LM)ユニット、または同様のものを含み得る。他の例では、ビデオデコーダ300は、より多い数の、より少ない数の、または異なる機能的構成要素を含み得る。
[0135] CPBメモリ320は、ビデオデコーダ300の構成要素によって復号されることになる、符号化されたビデオビットストリームなどのビデオデータを記憶し得る。CPBメモリ320に記憶されるビデオデータは、例えば、コンピュータ可読媒体110(図3)から取得され得る。CPBメモリ320は、符号化されたビデオビットストリームからの符号化されたビデオデータ(例えば、シンタックス要素)を記憶するCPBを含み得る。また、CPBメモリ320は、ビデオデコーダ300の様々なユニットからの出力を表す一時データなど、コーディングされたピクチャのシンタックス要素以外のビデオデータを記憶し得る。DPB314は、一般に、ビデオデコーダ300が、出力し得、および/または符号化されたビデオビットストリームの後続のデータまたはピクチャを復号するときに、参照ビデオデータとして使用し得る、復号されたピクチャを記憶する。CPBメモリ320およびDPB314は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのうちの任意のものによって形成され得る。CPBメモリ320およびDPB314は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、CPBメモリ320は、ビデオデコーダ300の他の構成要素とともにオンチップであり得、またはそれらの構成要素に対してオフチップであり得る。
[0136] 追加または代替として、いくつかの例では、ビデオデコーダ300は、メモリ120(図3)からコーディングされたビデオデータを取り出し得る。すなわち、メモリ120は、CPBメモリ320について上記で説明されたようなデータを記憶し得る。同様に、メモリ120は、ビデオデコーダ300の機能のうちのいくつかまたは全てが、ビデオデコーダ300の処理回路によって実行されるソフトウェアにおいてインプリメントされるとき、ビデオデコーダ300によって実行されることになる命令を記憶し得る。
[0137] 図6に示される様々なユニットは、ビデオデコーダ300によって実行される動作の理解を助けるために例示される。これらユニットは、固定機能回路、プログラマブル回路、またはこれらの組合せとしてインプリメントされ得る。図5と同様に、固定機能回路は、特定の機能を提供する回路を指し、実行され得る動作で予め設定されている。プログラマブル回路は、様々なタスクを実行するようにプログラムされ得る回路を指し、実行され得る動作において柔軟な機能を提供する。例えば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義された方法でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(例えば、パラメータを受け取るまたはパラメータを出力するために)ソフトウェア命令を実行し得るが、固定機能回路が実行する動作のタイプは、一般に不変である。いくつかの例では、これらユニットのうちの1つまたは複数は、個別の回路ブロック(固定機能またはプログラムマブル)であり得、いくつかの例では、1つまたは複数のユニットは、集積回路であり得る。
[0138] ビデオデコーダ300は、プログラマブル回路から形成される、ALU、EFU、デジタル回路、アナログ回路、および/またはプログラマブルコアを含み得る。ビデオデコーダ300の動作がプログラマブル回路で実行中のソフトウェアによって実行される例では、オンチップまたはオフチップメモリが、ビデオデコーダ300が受信および実行するソフトウェアの命令(例えば、オブジェクトコード)を記憶し得る。
[0139] エントロピー復号ユニット302は、CPBから符号化されたビデオデータを受信し、ビデオデータをエントロピー復号して、シンタックス要素を再生し得る。予測処理ユニット304、逆量子化ユニット306、逆変換処理ユニット308、再構成ユニット310、およびフィルタユニット312は、ビットストリームから抽出されたシンタックス要素に基づいて、復号されたビデオデータを生成し得る。
[0140] 一般に、ビデオデコーダ300は、ブロックごとの単位でピクチャを再構成する。ビデオデコーダ300は、各ブロックに対して個々に再構成動作を実行し得る(ここで、現在再構成されている、すなわち、復号されているブロックは、「現在のブロック」と呼ばれ得る)。
[0141] エントロピー復号ユニット302は、量子化された変換係数ブロックの量子化された変換係数を定義するシンタックス要素、ならびに量子化パラメータ(QP)および/または(1つまたは複数の)変換モードインジケーションなどの、変換情報をエントロピー復号し得る。逆量子化ユニット306は、量子化の程度、また同様に、逆量子化ユニット306が適用すべき逆量子化の程度を決定するために、量子化された変換係数ブロックに関連付けられたQPを使用し得る。逆量子化ユニット306は、例えば、量子化された変換係数を逆量子化するために、ビット単位の左シフト演算を実行し得る。逆量子化ユニット306は、それによって、変換係数を含む変換係数ブロックを形成し得る。
[0142] 逆量子化ユニット306が変換係数ブロックを形成した後、逆変換処理ユニット308は、現在のブロックに関連付けられた残差ブロックを生成するために、変換係数ブロックに1つまたは複数の逆変換を適用し得る。例えば、逆変換処理ユニット308は、係数ブロックに、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向性変換、または別の逆変換を適用し得る。
[0143] さらに、予測処理ユニット304は、エントロピー復号ユニット302によってエントロピー復号された予測情報シンタックス要素に従って、予測ブロックを生成する。例えば、現在のブロックがインター予測されることを予測情報シンタックス要素が示す場合、動き補償ユニット316が、予測ブロックを生成し得る。このケースでは、予測情報シンタックス要素は、参照ブロックをそこから取り出す、DPB314中の参照ピクチャ、ならびに、現在のピクチャ内の現在のブロックのロケーションに対する参照ピクチャ内の参照ブロックのロケーションを識別する動きベクトルを示し得る。動き補償ユニット316は、一般に、動き補償ユニット224(図5)に関して説明されたのと実質的に同様の方法で、インター予測プロセスを実行し得る。
[0144] 別の例として、現在のブロックがイントラ予測されることを予測情報シンタックス要素が示す場合、イントラ予測ユニット318が、予測情報シンタックス要素によって示されるイントラ予測モードに従って、予測ブロックを生成し得る。この場合も、イントラ予測ユニット318は、一般に、イントラ予測ユニット226(図5)に関して説明されたのと実質的に同様の方法で、イントラ予測プロセスを実行し得る。イントラ予測ユニット318は、DPB314から、現在のブロックに隣接するサンプルのデータを取り出し得る。
[0145] 再構成ユニット310は、予測ブロックおよび残差ブロックを使用して、現在のブロックを再構成し得る。例えば、再構成ユニット310は、現在のブロックを再構成するために、残差ブロックのサンプルを予測ブロックの対応するサンプルに加算し得る。
[0146] フィルタユニット312は、再構成されたブロックに対して1つまたは複数のフィルタ動作を実行し得る。例えば、フィルタユニット312は、再構成されたブロックのエッジに沿ったブロッキネスアーティファクトを低減するために、デブロッキング動作を実行し得る。フィルタユニット312の動作は、必ずしも全ての例において実行されるわけではない。
[0147] ビデオデコーダ300は、再構成されたブロックをDPB314に記憶し得る。上記で説明されたように、DPB314は、予測処理ユニット304に、後続の動き補償のための以前に復号されたピクチャおよびイントラ予測のための現在のピクチャのサンプルなどの、参照情報を提供し得る。さらに、ビデオデコーダ300は、図3のディスプレイデバイス118などの、ディスプレイデバイス上での後続の表示のために、復号されたピクチャをDPBから出力し得る。
[0148] 図7は、現在のブロックを符号化するための例となる方法を例示するフローチャートである。現在のブロックは、現在のCUを備え得る。ビデオエンコーダ200(図3および図5)に関して説明されるが、他のデバイスが図7と同様の方法を実行するように構成され得ることが理解されるべきである。
[0149] この例では、ビデオエンコーダ200は、最初に現在のブロックを予測する(350)。例えば、ビデオエンコーダ200は、現在のブロックについての予測ブロックを形成し得る。次いで、ビデオエンコーダ200は、現在のブロックについての残差ブロックを算出し得る(352)。残差ブロックを算出するために、ビデオエンコーダ200は、元のコーディングされていないブロックと、現在のブロックについての予測ブロックとの間の差分を算出し得る。次いで、ビデオエンコーダ200は、残差ブロックの係数を変換および量子化し得る(354)。次に、ビデオエンコーダ200は、残差ブロックの量子化された変換係数を走査し得る(356)。走査中、または走査に続いて、ビデオエンコーダ200は、係数をエントロピー符号化し得る(358)。例えば、ビデオエンコーダ200は、CAVLCまたはCABACを使用して、係数を符号化し得る。次いで、ビデオエンコーダ200は、ブロックのエントロピーコーディングされたデータを出力し得る(360)。
[0150] 図8は、ビデオデータの現在のブロックを復号するための例となる方法を例示するフローチャートである。現在のブロックは、現在のCUを備え得る。ビデオデコーダ300(図16および図19)に関して説明されるが、他のデバイスが図8と同様の方法を実行するように構成され得ることが理解されるべきである。
[0151] ビデオデコーダ300は、現在のブロックに対応する残差ブロックの係数についてのエントロピーコーディングされたデータおよびエントロピーコーディングされた予測情報などの、現在のブロックについてのエントロピーコーディングされたデータを受信し得る(370)。ビデオデコーダ300は、現在のブロックについての予測情報を決定し、残差ブロックの係数を再生するために、エントロピーコーディングされたデータをエントロピー復号し得る(372)。ビデオデコーダ300は、現在のブロックについての予測ブロックを算出するために、例えば、現在のブロックについての予測情報によって示されるようなイントラ予測モードまたはインター予測モードを使用して、現在のブロックを予測し得る(374)。次いで、ビデオデコーダ300は、量子化された変換係数のブロックを作成するために、再生された係数を逆走査し得る(376)。次いで、ビデオデコーダ300は、残差ブロックを生成するために、係数を逆量子化および逆変換し得る(378)。ビデオデコーダ300は、最終的に、予測ブロックと残差ブロックとを組み合わせること(380)によって、現在のブロックを復号し得る。
[0152] 図9は、本開示の1つまたは複数の技法による、動きベクトル予測子候補リストを生成するための例となる方法を例示するフローチャートである。現在のブロックは、現在のCUを備え得る。ビデオデコーダ300(図16および図19)に関して説明されるが、ビデオエンコーダ200(図3および図5)などの、他のデバイスが図9と同様の方法を実行するように構成され得ることが理解されるべきである。
[0153] 上記で説明されたように、ビデオデコーダ300などのビデオコーダが、ビデオデータの現在のブロックのための動きベクトル候補リストを構築し得る。ビデオコーダは、様々なソースから動きベクトル候補リストのための候補を取得し得る。いくつかの例となるソースは、限定はしないが、空間的候補、時間的動きベクトル予測子(TMVP)候補、履歴ベースの動きベクトル予測(HMVP)候補、およびペアワイズ候補を含む。動きベクトル候補リストを生成するために、ビデオコーダは、所望の量の候補がリストに含まれるまで、ソースからの候補を評価し得る。図9に示されるように、ビデオデコーダ300は、現在のブロックのための動きベクトル(MV)リストに含めるべき候補の最大数(a maximum number of candidates)(MAX)を決定し得る(902)。MAXの値は、固定され得るか、または1つまたは複数のパラメータに基づいて可変であり得る。
[0154] 動きベクトル候補リストに含めるために特定の候補を評価するために、ビデオコーダは、特定の候補が利用可能であるかどうか、および/または特定の候補の値が動きベクトル候補リストに既に含まれている候補と同じであるかどうかを決定し得る。ビデオコーダは、特定の順序でソースからの候補を評価し得る。
[0155] 上記で説明されたように、および本開示の1つまたは複数の技法によれば、ビデオデコーダ300などのビデオデコーダは、ブロックがイントラブロックコピー(IBC)を使用してコーディングされるか、またはインターコーディングを使用してコーディングされるかに基づいて、異なるソースおよび/または異なる制限を使用して、ブロックのための動きベクトル候補リストを生成し得る。ビデオデコーダ30は、現在のブロックがIBCを使用してコーディングされるかどうかを決定し得る(902)。現在のブロックがIBCを使用してコーディングされると決定することに応答して(902の「Yes」分岐)、ビデオデコーダ300は、MV候補リストに含めるために1つまたは複数の空間的候補を評価し得る(906)。例えば、ビデオデコーダ300は、図1Aおよび図1Bを参照して上記で説明されたように、空間的候補A1、B1、B0、およびA0を評価し得る。
[0156] 上記で説明されたように、および本開示の1つまたは複数の技法によれば、ビデオデコーダ300は、履歴ベースの動きベクトル予測子(HMVP)が、MV候補リストに含まれる最後の候補(例えば、MV候補リストに追加される最終候補、これは、最も高いインデックス値を有し得る)であることを可能にし得る。例えば、図9に示されるように、MVリストに含まれている候補の数が、MV候補リストに含めるべき候補の最大数マイナス1(例えば、MAX-1)以下であるかどうかにかかわらず(908の両方の分岐)、ビデオデコーダ300は、MV候補リストに含めるためにHMVP候補を評価し得る(910)。上記で説明されたように、ビデオデコーダ300は、過去に復号されたMVのリストからHMVP候補を取得し得る(例えば、ビデオデコーダ300は、復号プロセスの間、MVのテーブルまたはリストを維持し得る)。
[0157] 現在のブロックがIBCを使用してコーディングされない(例えば、インター予測を使用してコーディングされる)と決定することに応答して(902の「No」分岐)、ビデオデコーダ300は、MV候補リストに含めるために1つまたは複数の空間的候補を評価し得る(912)。例えば、ビデオデコーダ300は、図1Aおよび図1Bを参照して上記で説明されたように、空間的候補A1、B1、B0、およびA0を評価し得る。
[0158] IBCを使用してコーディングされるブロックとは対照的に、ビデオデコーダ300は、インターコーディングを使用してコーディングされるブロックについては、HMVPがMV候補リストに含まれる最後の候補であることを可能にしない場合がある。例えば、図9に示されるように、ビデオデコーダ300は、MVリストに含まれている候補の数が、MV候補リストに含めるべき候補の最大数マイナス1(例えば、MAX-1)以上ではないと決定することに応答して(914の「No」分岐)、MV候補リストに含めるためにHMVP候補を評価し得る(916)。しかしながら、MVリストに含まれている候補の数が、MV候補リストに含めるべき候補の最大数マイナス1(例えば、MAX-1)以上であると決定することに応答して(914の「Yes」分岐)、ビデオデコーダ300は、代わりに、MV候補リストに含めるためにペアワイズ候補を評価し得る(918)。
[0159] ビデオデコーダ300は、現在のブロックのサンプルを再構成するために、MV候補リストを利用し得る。例えば、ビデオデコーダ300は、MV候補リストから、候補MVを選択し得る。いくつかの例では、ビデオデコーダ300は、MV候補リスト中のインデックス値を示す1つまたは複数のシンタックス要素に基づいて、候補MVを選択し得る。ビデオデコーダ300は、選択された候補MV予測子に基づいて、現在のブロックのためのMVを生成し得る。例えば、ビデオデコーダ300は、選択された候補MV予測子の値と、現在のブロックのためのMVとの間の差分を表す1つまたは複数のシンタックス要素を復号し得る(例えば、そして、現在のブロックのためのMVを取得するために、選択された候補MV予測子の値に差分を加算する)。現在のブロックのためのMVは、現在のブロックのための予測子ブロックを識別し得る。現在のブロックがIBCを使用してコーディングされる場合、予測子ブロックは、現在のブロックと同じピクチャ内にあり得る。逆に、現在のブロックがインター予測を使用してコーディングされる場合、予測子ブロックは、現在のブロックとは異なるピクチャ内にあり得る。ビデオデコーダ300は、残差データを取得し、現在のブロックのサンプルを再構成するために、残差データを予測子ブロックに加算し得る(例えば、図8の372~380)。ビデオエンコーダ200は、(例えば、再構成ループの一部として)同様の動作を実行し得ることに留意されたい。
[0160] 以下の番号付けされた例は、本開示の1つまたは複数の態様を例示し得る。
[0161] [例1] ビデオデータをコーディングする方法であって、前記方法は、イントラブロックコピー(IBC)を使用してビデオデータの現在のピクチャの現在のブロックを予測すると決定することに応答して、前記現在のブロックのための動きベクトル(MV)候補リストを生成することと、ここにおいて、前記MV候補リストを生成することは、1つまたは複数の履歴ベースの動きベクトル予測(HMVP)候補を決定することと、前記MV候補リスト中の最後の候補として、前記1つまたは複数のHMVP候補のうちの1つのHMVP候補を含めることと、を備えており、前記MV候補リストから、前記現在のピクチャ内の予測子ブロックを識別する特定のMV候補(particular MV candidate)を選択することと、前記予測子ブロックのピクセルに基づいて、前記現在のブロックのピクセルを再構成することと、を備える、方法。
[0162] [例2] 前記現在のブロックは、前記現在のピクチャの第1のブロック(first block)であり、前記方法は、インター予測を使用してビデオデータの前記現在のピクチャの第2のブロック(second block)を予測すると決定することに応答して、前記第2のブロックのためのMV候補リストを生成することと、ここにおいて、前記第2のブロックのための前記MV候補リストを生成することは、前記第2のブロックのための前記MV候補リストに含めるべき候補の最大数を決定することと、前記第2のブロックのための前記MV候補リスト中の候補の数量(a quantity of candidates)が、前記第2のブロックのための前記MV候補リストに含めるべき候補の前記最大数マイナス1に等しいと決定することに応答して、前記第2のブロックのための前記MV候補リスト中の最後の候補が、HMVP候補ではないように、前記第2のブロックのための追加のHMVP候補を、前記第2のブロックのための前記MV候補リストに含めることを控えることと、を備えており、前記第2のブロックのための前記MV候補リストから、前記現在のピクチャと同じではない前記ビデオデータのピクチャ内の、前記第2のブロックのための予測子ブロックを識別する特定のMV候補を選択することと、前記第2のブロックのための前記予測子ブロックのピクセルに基づいて、前記第2のブロックのピクセルを再構成することと、をさらに備える、例1に記載の方法。
[0163] [例3] 前記第1のブロックのための前記MV候補リストを生成することは、前記第1のブロックのための前記MV候補リストに含めるためにいかなるペアワイズ候補も評価しないことを備える、例2に記載の方法。
[0164] [例4] 前記第2のブロックのための前記MV候補リストを生成することは、前記第2のブロックのための前記MV候補リストに含めるために1つまたは複数のペアワイズ候補を評価することを備える、例3に記載の方法。
[0165] [例5] 前記第1のブロックのための前記MV候補リストを生成することは、前記第1のブロックのための前記MV候補リストに含まれている候補の現在の数が4以上である場合に、前記第1のブロックのための前記MV候補リストに含めるために左上隣接B2候補(above-left neighboring B2 candidate)を評価することをさらに備える、例4に記載の方法。
[0166] [例6] 前記第1のブロックのための前記MV候補リストは、IBCマージ/スキップリストを備える、例4または5に記載の方法。
[0167] [例7] ビデオデータをコーディングするためのデバイスであって、前記デバイスは、前記ビデオデータを記憶するように構成されたメモリと、回路においてインプリメントされる1つまたは複数のプロセッサであって、かつ、イントラブロックコピー(IBC)を使用してビデオデータの現在のピクチャの現在のブロックを予測すると決定することに応答して、前記現在のブロックのための動きベクトル(MV)候補リストを生成することと、ここにおいて、前記MV候補リストを生成するために、前記1つまたは複数のプロセッサは、1つまたは複数の履歴ベースの動きベクトル予測(HMVP)候補を決定することと、前記MV候補リスト中の最後の候補として、前記1つまたは複数のHMVP候補のうちの1つのHMVP候補を含めることと、を行うように構成されており、前記MV候補リストから、前記現在のピクチャ内の予測子ブロックを識別する特定のMV候補を選択することと、前記予測子ブロックのピクセルに基づいて、前記現在のブロックのピクセルを再構成することと、を行うように構成された1つまたは複数のプロセッサと、を備える、デバイス。
[0168] [例8] 前記現在のブロックは、前記現在のピクチャの第1のブロックであり、前記1つまたは複数のプロセッサは、インター予測を使用してビデオデータの前記現在のピクチャの第2のブロックを予測すると決定することに応答して、前記第2のブロックのためのMV候補リストを生成することと、ここにおいて、前記第2のブロックのための前記MV候補リストを生成するために、前記1つまたは複数のプロセッサは、前記第2のブロックのための前記MV候補リストに含めるべき候補の最大数を決定することと、前記第2のブロックのための前記MV候補リスト中の候補の数量が、前記第2のブロックのための前記MV候補リストに含めるべき候補の前記最大数マイナス1に等しいと決定することに応答して、前記第2のブロックのための前記MV候補リスト中の最後の候補が、HMVP候補ではないように、前記第2のブロックのための追加のHMVP候補を、前記第2のブロックのための前記MV候補リストに含めることを控えることと、を行うように構成されており、前記第2のブロックのための前記MV候補リストから、前記現在のピクチャと同じではない前記ビデオデータのピクチャ内の、前記第2のブロックのための予測子ブロックを識別する特定のMV候補を選択することと、前記第2のブロックのための前記予測子ブロックのピクセルに基づいて、前記第2のブロックのピクセルを再構成することと、を行うようにさらに構成される、例7に記載のデバイス。
[0169] [例9] 前記第1のブロックのための前記MV候補リストを生成するために、前記1つまたは複数のプロセッサは、前記第1のブロックのための前記MV候補リストに含めるためにいかなるペアワイズ候補も評価しないように構成される、例8に記載のデバイス。
[0170] [例10] 前記第2のブロックのための前記MV候補リストを生成するために、前記1つまたは複数のプロセッサは、前記第2のブロックのための前記MV候補リストに含めるために1つまたは複数のペアワイズ候補を評価するように構成される、例9に記載のデバイス。
[0171] [例11] 前記第1のブロックのための前記MV候補リストを生成するために、前記1つまたは複数のプロセッサは、前記第1のブロックのための前記MV候補リストに含まれている候補の現在の数が4以上である場合に、前記第1のブロックのための前記MV候補リストに含めるためにB2候補を評価するように構成される、例10に記載のデバイス。
[0172] [例12] 前記第1のブロックのための前記MV候補リストは、IBCマージ/スキップリストを備える、例10に記載のデバイス。
[0173] [例13] 前記ビデオコーダは、ビデオデコーダを備える、例7~12のいずれかに記載のデバイス。
[0174] [例14] 復号されたビデオデータを表示するように構成されたディスプレイをさらに備える、例13に記載のデバイス。
[0175] [例15] 前記デバイスは、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス(broadcast receiver device)、またはセットトップボックスのうちの1つまたは複数を備える、例13に記載のデバイス。
[0176] [例16] 前記デバイスは、ビデオエンコーダを備える、例7~15のいずれかに記載のデバイス。
[0177] [例17] 命令を記憶したコンピュータ可読記憶媒体であって、前記命令は、実行されると、ビデオコーダの1つまたは複数のプロセッサに、イントラブロックコピー(IBC)を使用してビデオデータの現在のピクチャの現在のブロックを予測すると決定することに応答して、前記現在のブロックのための動きベクトル(MV)候補リストを生成することと、ここにおいて、前記1つまたは複数のプロセッサに、前記MV候補リストを生成することを行わせる前記命令は、前記1つまたは複数のプロセッサに、1つまたは複数の履歴ベースの動きベクトル予測(HMVP)候補を決定することと、前記MV候補リスト中の最後の候補として、前記1つまたは複数のHMVP候補のうちの1つのHMVP候補を含めることと、を行わせる命令を備えており、前記MV候補リストから、前記現在のピクチャ内の予測子ブロックを識別する特定のMV候補を選択することと、前記予測子ブロックのピクセルに基づいて、前記現在のブロックのピクセルを再構成することと、を行わせる、コンピュータ可読記憶媒体。
[0178] [例18] 前記現在のブロックは、前記現在のピクチャの第1のブロックであり、前記1つまたは複数のプロセッサに、インター予測を使用してビデオデータの前記現在のピクチャの第2のブロックを予測すると決定することに応答して、前記第2のブロックのためのMV候補リストを生成することと、ここにおいて、前記1つまたは複数のプロセッサに、前記第2のブロックのための前記MV候補リストを生成することを行わせる前記命令は、前記1つまたは複数のプロセッサに、前記第2のブロックのための前記MV候補リストに含めるべき候補の最大数を決定することと、前記第2のブロックのための前記MV候補リスト中の候補の数量が、前記第2のブロックのための前記MV候補リストに含めるべき候補の前記最大数マイナス1に等しいと決定することに応答して、前記第2のブロックのための前記MV候補リスト中の最後の候補が、HMVP候補ではないように、前記第2のブロックのための追加のHMVP候補を、前記第2のブロックのための前記MV候補リストに含めることを控えることと、を行わせる命令を備えており、前記第2のブロックのための前記MV候補リストから、前記現在のピクチャと同じではない前記ビデオデータのピクチャ内の、前記第2のブロックのための予測子ブロックを識別する特定のMV候補を選択することと、前記第2のブロックのための前記予測子ブロックのピクセルに基づいて、前記第2のブロックのピクセルを再構成することと、を行わせる命令をさらに備える、例17に記載のコンピュータ可読記憶媒体。
[0179] [例19] 前記1つまたは複数のプロセッサに、前記第1のブロックのための前記MV候補リストを生成することを行わせる前記命令は、前記1つまたは複数のプロセッサに、前記第1のブロックのための前記MV候補リストに含めるためにいかなるペアワイズ候補も評価しないようにさせる命令を備える、例18に記載のコンピュータ可読記憶媒体。
[0180] [例20] 前記1つまたは複数のプロセッサに、前記第2のブロックのための前記MV候補リストを生成することを行わせる前記命令は、前記1つまたは複数のプロセッサに、前記第2のブロックのための前記MV候補リストに含めるために1つまたは複数のペアワイズ候補を評価することを行わせる命令を備える、例19に記載のコンピュータ可読記憶媒体。
[0181] [例21] ビデオデータをコーディングする方法であって、前記方法は、本開示で説明された技法の任意の組合せを備える、方法。
[0182] [例22] ビデオデータをコーディングする方法であって、前記方法は、ビデオデータの現在のピクチャの現在のブロックのための動きベクトル(MV)候補リストを生成することと、ここにおいて、前記MV候補リストを生成することは、前記MV候補リストの最大サイズを決定することと、前記MV候補リストに含まれている候補の現在の数が、前記MV候補リストの前記最大サイズ未満であると決定することに応答して、前記MV候補リストに含まれている候補の前記現在の数にかかわらず、前記MV候補リストに含めるためにB2候補を評価することと、を備えており、前記MV候補リストから、前記現在のピクチャ内の予測子ブロックを識別する特定のMVを選択することと、前記予測子ブロックのピクセルに基づいて、前記現在のブロックのピクセルを再構成することと、を備える、方法。
[0183] [例23] 前記B2候補は、左上候補である、例22に記載の方法。
[0184] [例24] 前記MV候補リストは、イントラブロックコピー(IBC)マージ/スキップリストを備える、例22~23のいずれかに記載の方法。
[0185] [例25] 前記B2候補を評価することは、前記B2候補が有効であるかどうかを決定することを備え、前記方法は、前記B2候補が有効であると決定することに応答して、前記B2候補を前記MV候補リストに追加することをさらに備える、例23~24のいずれかに記載の方法。
[0186] [例26] 前記B2候補を評価することは、前記B2候補が前記MV候補リストに既に含まれている他の候補と異なるかどうかを決定することを備え、前記方法は、前記B2候補が前記MV候補リストに既に含まれている前記他の候補と異なると決定することに応答して、前記B2候補を前記MV候補リストに追加することをさらに備える、例23~25のいずれかに記載の方法。
[0187] [例27] ビデオデータをコーディングする方法であって、前記方法は、ビデオデータの現在のピクチャの現在のブロックのための動きベクトル(MV)候補リストを生成することと、ここにおいて、前記MV候補リストを生成することは、1つまたは複数の履歴ベースの動きベクトル予測(HMVP)候補を決定することと、前記MV候補リスト中の最後の候補として、前記1つまたは複数のHMVP候補のうちの1つのHMVP候補を含めることと、を備えており、前記MV候補リストから、前記現在のピクチャ内の予測子ブロックを識別する特定のMVを選択することと、前記予測子ブロックのピクセルに基づいて、前記現在のブロックのピクセルを再構成することと、を備える、方法。
[0188] [例28] 前記MV候補リストは、イントラブロックコピー(IBC)マージ/スキップリストを備える、例22~27のいずれかに記載の方法。
[0189] [例29] ビデオデータをコーディングする方法であって、前記方法は、ビデオデータの現在のピクチャの現在のブロックのための動きベクトル(MV)候補リストを生成することと、ここにおいて、前記MV候補リストを生成することは、前記MV候補リストに含めるために、1つまたは複数のMV候補を評価することを備えており、ここにおいて、前記1つまたは複数のMV候補は、いかなるペアワイズ候補も含まず、前記MV候補リストから、前記現在のピクチャ内の予測子ブロックを識別する特定のMVを選択することと、前記予測子ブロックのピクセルに基づいて、前記現在のブロックのピクセルを再構成することと、を備える、方法。
[0190] [例30] 前記MV候補リストは、イントラブロックコピー(IBC)マージ/スキップリストを備える、例22~29のいずれかに記載の方法。
[0191] [例31] ビデオデータをコーディングする方法であって、前記方法は、ビデオデータの現在のピクチャの現在のブロックのための動きベクトル(MV)候補リストを生成することと、ここにおいて、前記MV候補リストを生成することは、複数のペアワイズ候補を決定することと、前記複数のペアワイズ候補のうちの少なくとも2つを前記MV候補リストに含めることと、を備えており、前記MV候補リストから、前記現在のピクチャ内の予測子ブロックを識別する特定のMVを選択することと、前記予測子ブロックのピクセルに基づいて、前記現在のブロックのピクセルを再構成することと、を備える、方法。
[0192] [例32] 前記複数のペアワイズ候補を決定することは、前記MV候補リストに含まれている候補に基づいて、前記複数のペアワイズ候補のペアワイズ候補を生成することを備え、前記少なくとも2つのペアワイズ候補を含めることは、前記MV候補リストに含まれている候補の数が最大サイズに達するまで、前記複数のペアワイズ候補のペアワイズ候補を、前記MV候補リストに含めることを備える、例31に記載の方法。
[0193] [例33] 前記複数のペアワイズ候補を決定することは、履歴ベースの動きベクトル予測(HMVP)候補以外の、前記MV候補リストに含まれている候補に基づいて、前記複数のペアワイズ候補のペアワイズ候補を生成することを備える、例31~32のいずれかに記載の方法。
[0194] [例34] ビデオデータをコーディングする方法であって、前記方法は、ビデオデータの現在のピクチャの現在のブロックのための動きベクトル(MV)候補リストを生成することと、ここにおいて、前記MV候補リストを生成することは、複数のMV候補を決定することと、前記複数のMV候補のうちの少なくとも1つのMV候補を、前記少なくとも1つのMV候補が前記MV候補リストに既に含まれているMV候補と異なるかどうかを評価することなしに、前記MV候補リストに含めることと、を備えており、前記MV候補リストから、前記現在のピクチャ内の予測子ブロックを識別する特定のMVを選択することと、前記予測子ブロックのピクセルに基づいて、前記現在のブロックのピクセルを再構成することと、を備える、方法。
[0195] [例35] 前記少なくとも1つのMV候補が、イントラブロックコピー(IBC)を使用してコーディングされたブロックから導出されると決定することに応答して、前記複数のMV候補のうちの前記少なくとも1つのMV候補を、前記少なくとも1つのMV候補が前記MV候補リストに既に含まれているMV候補と異なるかどうかを評価することなしに、前記MV候補に含めることを決定することをさらに備える、例34に記載の方法。
[0196] [例36] ビデオデータをコーディングする方法であって、前記方法は、ビデオデータの現在のピクチャの現在のブロックのための動きベクトル(MV)候補リストを生成することと、ここにおいて、前記MV候補リストを生成することは、複数のMV候補のそれぞれのMV候補を、前記それぞれのMV候補の動きベクトルに基づいて、前記MV候補リストに含めるために評価することを備えており、前記MV候補リストから、前記現在のピクチャ内の予測子ブロックを識別する特定のMVを選択することと、前記予測子ブロックのピクセルに基づいて、前記現在のブロックのピクセルを再構成することと、を備える、方法。
[0197] [例37] 前記それぞれのMV候補の前記動きベクトルに基づいて、前記それぞれのMV候補を評価することは、前記それぞれのMV候補の前記動きベクトルと、前記MV候補リストに含まれている候補の動きベクトルとの間の比較に基づいて、前記それぞれのMV候補をプルーニングすることを備える、例36に記載の方法。
[0198] [例38] 前記それぞれのMV候補の前記動きベクトルと、前記MV候補リストに含まれている候補の動きベクトルとの間の比較に基づいて、前記それぞれのMV候補をプルーニングすることは、前記それぞれのMV候補の前記動きベクトルが、前記MV候補リストに含まれている候補の動きベクトルと異なるかどうかを決定することと、前記それぞれのMV候補の前記動きベクトルが、前記MV候補リストに含まれている候補の動きベクトルと異なると決定することに応答して、前記それぞれのMV候補を前記MV候補リストに含めることと、を備える、例36~37のいずれかに記載の方法。
[0199] [例39] 前記それぞれのMV候補の前記動きベクトルと、前記MV候補リストに含まれている候補の動きベクトルとの間の比較に基づいて、前記それぞれのMV候補をプルーニングすることは、前記それぞれのMV候補の前記動きベクトルと、前記MV候補リストに含まれている候補の動きベクトルとの間の比較のみに基づいて、前記それぞれのMV候補をプルーニングすることを備える、例36~38のいずれかに記載の方法。
[0200] [例40] 前記それぞれのMV候補の前記動きベクトルと、前記MV候補リストに含まれている候補の動きベクトルとの間の比較に基づいて、前記それぞれのMV候補をプルーニングすることは、前記それぞれのMV候補の参照インデックスと、前記MV候補リストに含まれている候補の参照インデックスとの間の比較に基づいて、前記それぞれのMV候補をプルーニングしないことを備える、例36~39のいずれかに記載の方法。
[0201] [例41] 前記MV候補リストは、イントラブロックコピー(IBC)マージ/スキップリスト、またはアドバンスト動きベクトル予測(AMVP)リストのうちの1つを備える、例32~40のいずれかに記載の方法。
[0202] [例42] ビデオデータをコーディングする方法であって、前記方法は、ビデオデータの現在のピクチャの現在のブロックのための動きベクトルを取得することと、ここにおいて、前記動きベクトルは、前記現在のピクチャ内の予測子ブロックを識別し、クロマ動きベクトルを取得するために、前記動きベクトルを丸めることと、前記予測子ブロックのピクセルに基づいて、前記現在のブロックのピクセルを再構成することと、を備える、方法。
[0203] [例43] クロマ動きベクトルを取得するために、前記動きベクトルは、以下の式に従って、前記動きベクトルを丸めることを備え、
ここにおいて、MViは、前記動きベクトルを表し、MVChormaiは、前記クロマ動きベクトルを表し、iは、xまたはy(水平方向および垂直方向におけるMV成分)に等しく、shiftiは、シフト値を表す、例42に記載の方法。
[0204] [例44] 前記シフト値は、MVビット精度およびクロマフォーマットのうちの1つまたは複数に基づいて決定される、例43に記載の方法。
[0205] [例45] 前記シフト値は、予め決定されている、例43~44のいずれかに記載の方法。
[0206] [例46] コーディングすることは、復号することを備える、例21~45の任意の組合せに記載の方法。
[0207] [例47] コーディングすることは、符号化することを備える、例21~45の任意の組合せに記載の方法。
[0208] [例48] ビデオデータをコーディングするためのデバイスであって、前記デバイスは、例21~45の任意の組合せに記載の方法を実行するための1つまたは複数の手段を備える、デバイス。
[0209] [例49] 前記1つまたは複数の手段は、回路においてインプリメントされる1つまたは複数のプロセッサを備える、例48に記載のデバイス。
[0210] [例50] 前記ビデオデータを記憶するためのメモリをさらに備える、例48および49の任意の組合せに記載のデバイス。
[0211] [例51] 復号されたビデオデータを表示するように構成されたディスプレイをさらに備える、例48~50の任意の組合せに記載のデバイス。
[0212] [例52] 前記デバイスは、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、またはセットトップボックスのうちの1つまたは複数を備える、例48~51の任意の組合せに記載のデバイス。
[0213] [例53] 前記デバイスは、ビデオデコーダを備える、例48~52の任意の組合せに記載のデバイス。
[0214] [例54] 前記デバイスは、ビデオエンコーダを備える、例48~53の任意の組合せに記載のデバイス。
[0215] [例55] 命令を記憶したコンピュータ可読記憶媒体であって、前記命令は、実行されると、1つまたは複数のプロセッサに、例1~55の任意の組合せに記載の方法を実行させる、コンピュータ可読記憶媒体。
[0216] [例56] 例1~55の任意の組合せ。
[0217] 例に依存して、本明細書で説明された技法のうちの任意のもののある特定の動作(act)またはイベントは、異なる順序で実行され得、追加、併合、または完全に省略され得る(例えば、全ての説明された動作またはイベントが本技法の実施に必ずしも必要ではない)ことを認識されたい。さらに、ある特定の例では、動作またはイベントは、シーケンシャル順ではなく、例えば、マルチスレッド処理、割込み処理、または複数のプロセッサを通じて、同時並行(concurrently)に実行され得る。
[0218] 1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組合せでインプリメントされ得る。ソフトウェアでインプリメントされる場合、これら機能は、コンピュータ可読媒体上で1つまたは複数の命令またはコードとして記憶または送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形の媒体に対応するコンピュータ可読記憶媒体、または、例えば、通信プロトコルに従って、1つの場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含み得る。このように、コンピュータ可読媒体は、一般に、(1)非一時的である有形のコンピュータ可読記憶媒体、または(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技法のインプリメンテーションのための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
[0219] 限定ではなく例として、このようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD-ROMまたは他の光ディスク記憶装置、磁気ディスク記憶装置、または他の磁気記憶デバイス、フラッシュメモリ、あるいは、データ構造または命令の形で所望のプログラムコードを記憶するために使用され得、かつコンピュータによってアクセスされ得る、その他任意の媒体を備え得る。また、任意の接続が、厳密にはコンピュータ可読媒体と称される。例えば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、またはその他の遠隔ソースから送信される場合には、この同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的な媒体を含まないが、代わりに、非一時的な有形の記憶媒体に向けられることが理解されるべきである。本明細書で使用される場合、ディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル多目的ディスク(DVD)、フロッピー(登録商標)ディスク、およびブルーレイ(登録商標)ディスクを含み、ここでディスク(disks)は、通常磁気的にデータを再生し、一方、ディスク(discs)は、レーザーを用いて光学的にデータを再生する。上記の組合せもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
[0220] 命令は、1つまたは複数のデジタルシグナルプロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他の同等の集積されたまたはディスクリートロジック回路などの、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される場合、「プロセッサ」および「処理回路」という用語は、任意の前述の構造または本明細書で説明された技法のインプリメンテーションに好適なその他任意の構造を指し得る。加えて、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用のハードウェアおよび/またはソフトウェアモジュール内で提供され得、または、複合コーデックに組み込まれ得る。また、これら技法は、1つまたは複数の回路または論理要素において完全にインプリメントされ得る。
[0221] 本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(例えば、チップセット)を含む、幅広い様々なデバイスまたは装置でインプリメントされ得る。様々な構成要素、モジュール、またはユニットは、開示された技法を実行するように構成されたデバイスの機能的な態様を強調するために、本開示において説明されているが、必ずしも異なるハードウェアユニットによる実現を必要とするわけではない。むしろ、上記で説明されたように、様々なユニットは、コーデックハードウェアユニットにおいて組み合わされ得るか、または、好適なソフトウェアおよび/またはファームウェアと併せて、上記で説明されたような1つまたは複数のプロセッサを含む、相互運用のハードウェアユニット(interoperative hardware units)の集合によって提供され得る。
[0222] 様々な例が説明された。これらおよび他の例は、以下の特許請求の範囲の範囲内にある。
以下に、本願の出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
ビデオデータをコーディングする方法であって、前記方法は、
イントラブロックコピー(IBC)を使用してビデオデータの現在のピクチャの現在のブロックを予測すると決定することに応答して、前記現在のブロックのための動きベクトル(MV)候補リストを生成することと、ここにおいて、前記MV候補リストを生成することは、
1つまたは複数の履歴ベースの動きベクトル予測(HMVP)候補を決定することと、
前記MV候補リスト中の最後の候補として、前記1つまたは複数のHMVP候補のうちの1つのHMVP候補を含めることと、
を備えており、
前記MV候補リストから、前記現在のピクチャ内の予測子ブロックを識別する特定のMV候補を選択することと、
前記予測子ブロックのピクセルに基づいて、前記現在のブロックのピクセルを再構成することと、
を備える、方法。
[C2]
前記現在のブロックは、前記現在のピクチャの第1のブロックであり、前記方法は、 インター予測を使用してビデオデータの前記現在のピクチャの第2のブロックを予測すると決定することに応答して、前記第2のブロックのためのMV候補リストを生成することと、ここにおいて、前記第2のブロックのための前記MV候補リストを生成することは、
前記第2のブロックのための前記MV候補リストに含めるべき候補の最大数を決定することと、
前記第2のブロックのための前記MV候補リスト中の候補の数量が、前記第2のブロックのための前記MV候補リストに含めるべき候補の前記最大数マイナス1に等しいと決定することに応答して、前記第2のブロックのための前記MV候補リスト中の最後の候補が、HMVP候補ではないように、前記第2のブロックのための追加のHMVP候補を、前記第2のブロックのための前記MV候補リストに含めることを控えることと、
を備えており、
前記第2のブロックのための前記MV候補リストから、前記現在のピクチャと同じではない前記ビデオデータのピクチャ内の、前記第2のブロックのための予測子ブロックを識別する特定のMV候補を選択することと、
前記第2のブロックのための前記予測子ブロックのピクセルに基づいて、前記第2のブロックのピクセルを再構成することと、
をさらに備える、C1に記載の方法。
[C3]
前記第1のブロックのための前記MV候補リストを生成することは、前記第1のブロックのための前記MV候補リストに含めるためにいかなるペアワイズ候補も評価しないことを備える、C2に記載の方法。
[C4]
前記第2のブロックのための前記MV候補リストを生成することは、前記第2のブロックのための前記MV候補リストに含めるために1つまたは複数のペアワイズ候補を評価することを備える、C3に記載の方法。
[C5]
前記第1のブロックのための前記MV候補リストを生成することは、
前記第1のブロックのための前記MV候補リストに含まれている候補の現在の数が4以上である場合に、前記第1のブロックのための前記MV候補リストに含めるために左上隣接B2候補を評価すること
をさらに備える、C4に記載の方法。
[C6]
前記第1のブロックのための前記MV候補リストは、IBCマージ/スキップリストを備える、C4に記載の方法。
[C7]
ビデオデータをコーディングするためのデバイスであって、前記デバイスは、
前記ビデオデータを記憶するように構成されたメモリと、
回路においてインプリメントされる1つまたは複数のプロセッサであって、かつ、
イントラブロックコピー(IBC)を使用してビデオデータの現在のピクチャの現在のブロックを予測すると決定することに応答して、前記現在のブロックのための動きベクトル(MV)候補リストを生成することと、ここにおいて、前記MV候補リストを生成するために、前記1つまたは複数のプロセッサは、
1つまたは複数の履歴ベースの動きベクトル予測(HMVP)候補を決定することと、
前記MV候補リスト中の最後の候補として、前記1つまたは複数のHMVP候補のうちの1つのHMVP候補を含めることと、
を行うように構成されており、
前記MV候補リストから、前記現在のピクチャ内の予測子ブロックを識別する特定のMV候補を選択することと、
前記予測子ブロックのピクセルに基づいて、前記現在のブロックのピクセルを再構成することと、
を行うように構成された1つまたは複数のプロセッサと、
を備える、デバイス。
[C8]
前記現在のブロックは、前記現在のピクチャの第1のブロックであり、前記1つまたは複数のプロセッサは、
インター予測を使用してビデオデータの前記現在のピクチャの第2のブロックを予測すると決定することに応答して、前記第2のブロックのためのMV候補リストを生成することと、ここにおいて、前記第2のブロックのための前記MV候補リストを生成するために、前記1つまたは複数のプロセッサは、
前記第2のブロックのための前記MV候補リストに含めるべき候補の最大数を決定することと、
前記第2のブロックのための前記MV候補リスト中の候補の数量が、前記第2のブロックのための前記MV候補リストに含めるべき候補の前記最大数マイナス1に等しいと決定することに応答して、前記第2のブロックのための前記MV候補リスト中の最後の候補が、HMVP候補ではないように、前記第2のブロックのための追加のHMVP候補を、前記第2のブロックのための前記MV候補リストに含めることを控えることと、
を行うように構成されており、
前記第2のブロックのための前記MV候補リストから、前記現在のピクチャと同じではない前記ビデオデータのピクチャ内の、前記第2のブロックのための予測子ブロックを識別する特定のMV候補を選択することと、
前記第2のブロックのための前記予測子ブロックのピクセルに基づいて、前記第2のブロックのピクセルを再構成することと、
を行うようにさらに構成される、C7に記載のデバイス。
[C9]
前記第1のブロックのための前記MV候補リストを生成するために、前記1つまたは複数のプロセッサは、前記第1のブロックのための前記MV候補リストに含めるためにいかなるペアワイズ候補も評価しないように構成される、C8に記載のデバイス。
[C10]
前記第2のブロックのための前記MV候補リストを生成するために、前記1つまたは複数のプロセッサは、前記第2のブロックのための前記MV候補リストに含めるために1つまたは複数のペアワイズ候補を評価するように構成される、C9に記載のデバイス。
[C11]
前記第1のブロックのための前記MV候補リストを生成するために、前記1つまたは複数のプロセッサは、
前記第1のブロックのための前記MV候補リストに含まれている候補の現在の数が4以上である場合に、前記第1のブロックのための前記MV候補リストに含めるためにB2候補を評価すること
を行うように構成される、C10に記載のデバイス。
[C12]
前記第1のブロックのための前記MV候補リストは、IBCマージ/スキップリストを備える、C10に記載のデバイス。
[C13]
前記ビデオコーダは、ビデオデコーダを備える、C7に記載のデバイス。
[C14]
復号されたビデオデータを表示するように構成されたディスプレイをさらに備える、C13に記載のデバイス。
[C15]
前記デバイスは、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、またはセットトップボックスのうちの1つまたは複数を備える、C13に記載のデバイス。
[C16]
前記デバイスは、ビデオエンコーダを備える、C7に記載のデバイス。
[C17]
命令を記憶したコンピュータ可読記憶媒体であって、前記命令は、実行されると、ビデオコーダの1つまたは複数のプロセッサに、
イントラブロックコピー(IBC)を使用してビデオデータの現在のピクチャの現在のブロックを予測すると決定することに応答して、前記現在のブロックのための動きベクトル(MV)候補リストを生成することと、ここにおいて、前記1つまたは複数のプロセッサに、前記MV候補リストを生成することを行わせる前記命令は、前記1つまたは複数のプロセッサに、
1つまたは複数の履歴ベースの動きベクトル予測(HMVP)候補を決定することと、
前記MV候補リスト中の最後の候補として、前記1つまたは複数のHMVP候補のうちの1つのHMVP候補を含めることと、
を行わせる命令を備えており、
前記MV候補リストから、前記現在のピクチャ内の予測子ブロックを識別する特定のMV候補を選択することと、
前記予測子ブロックのピクセルに基づいて、前記現在のブロックのピクセルを再構成することと、
を行わせる、コンピュータ可読記憶媒体。
[C18]
前記現在のブロックは、前記現在のピクチャの第1のブロックであり、前記1つまたは複数のプロセッサに、
インター予測を使用してビデオデータの前記現在のピクチャの第2のブロックを予測すると決定することに応答して、前記第2のブロックのためのMV候補リストを生成することと、ここにおいて、前記1つまたは複数のプロセッサに、前記第2のブロックのための前記MV候補リストを生成することを行わせる前記命令は、前記1つまたは複数のプロセッサに、
前記第2のブロックのための前記MV候補リストに含めるべき候補の最大数を決定することと、
前記第2のブロックのための前記MV候補リスト中の候補の数量が、前記第2のブロックのための前記MV候補リストに含めるべき候補の前記最大数マイナス1に等しいと決定することに応答して、前記第2のブロックのための前記MV候補リスト中の最後の候補が、HMVP候補ではないように、前記第2のブロックのための追加のHMVP候補を、前記第2のブロックのための前記MV候補リストに含めることを控えることと、
を行わせる命令を備えており、
前記第2のブロックのための前記MV候補リストから、前記現在のピクチャと同じではない前記ビデオデータのピクチャ内の、前記第2のブロックのための予測子ブロックを識別する特定のMV候補を選択することと、
前記第2のブロックのための前記予測子ブロックのピクセルに基づいて、前記第2のブロックのピクセルを再構成することと、
を行わせる命令をさらに備える、C17に記載のコンピュータ可読記憶媒体。
[C19]
前記1つまたは複数のプロセッサに、前記第1のブロックのための前記MV候補リストを生成することを行わせる前記命令は、前記1つまたは複数のプロセッサに、前記第1のブロックのための前記MV候補リストに含めるためにいかなるペアワイズ候補も評価しないようにさせる命令を備える、C18に記載のコンピュータ可読記憶媒体。
[C20]
前記1つまたは複数のプロセッサに、前記第2のブロックのための前記MV候補リストを生成することを行わせる前記命令は、前記1つまたは複数のプロセッサに、前記第2のブロックのための前記MV候補リストに含めるために1つまたは複数のペアワイズ候補を評価することを行わせる命令を備える、C19に記載のコンピュータ可読記憶媒体。