セクション見出しは、理解を簡単にするために本文書中で使用されており、各セクションで開示されている技術及び実施形態の適用可能性をそのセクションにのみ限定しない。
[1.概要]
本特許文献は、ビデオ/画像コーディング技術に関係がある。具体的には、ビデオ/画像コーディングにおけるいくつかのコーディングツールのバンド幅及びラインバッファを低減することに関係がある。それは、HEVCのような既存のビデオコーディング規格、又は完成されるべき規格(バーサタイル・ビデオ・コーディング(Versatile Video Coding))に適用されてよい。それはまた、将来のビデオ/画像コーディング規格又はビデオ/画像コーデックにも適用可能であり得る。
[2.背景]
ビデオコーディング規格は、主として、よく知られているITU-T及びISO/IEC規格の開発を通じて、進化してきた。ITU-Tは、H.261及びH.263を生み出し、ISO/IECは、MPEG-1及びMPEG-4 Visualを作り出し、2つの組織は共同で、H.262/MPEG-2 Video及びH264/MPEG-4 AVC(Advanced Video Coding)並びにH.265/HEVC規格を作り出した。H.262以降、ビデオコーディング規格は、ハイブリッドビデオコーディング構造に基づいており、時間予測及び変換コーディングが利用される。HEVCを越える将来のビデオコーディング技術を探るために、JVET(Joint Video Exploration Team)が2015年にVCEG及びMPEGによって共同設立された。それ以来、多くの新しい方法がJVETによって導入され、JEM(Joint Exploration Model)と名付けられた参照ソフトウェアに置かれてきた。2018年4月に、VCEG(Q6/16)とISO/IEC JTC1 SC29/WG11(MPEG)との間のJVET(Joint Video Expert Team)が、HEVCと比較してビットレート50%減を目指すVVC規格に取り組むために作られた。
[2.1 HEVC/VVCでのインター予測]
<補間フィルタ>
HEVCでは、ルーマサブサンプルが、8タップ補間フィルタによって生成され、クロマサブサンプルが、4タップ補間フィルタによって生成される。
フィルタは、2つの次元で分離可能である。サンプルは、最初に水平方向で、それから垂直方向でフィルタリングされる。
[2.2 サブブロックベースの予測技術]
サブブロックベースの予測は、最初に、HEVC Annex I(3D-HEVC)によってビデオコーディング規格に導入される。サブブロックベースの予測によれば、コーディングユニット(Coding Unit,CU)又は予測ユニット(Prediction Unit,PU)などのブロックは、いくつかの重なり合わないサブブロックに分割される。異なるサブブロックは、参照インデックス又は動きベクトル(Motion Vector,MV)などの異なる動き情報を割り当てられてよく、動き補償(Motion Compensation,MC)は、サブブロックごとに個別に実行される。図1は、サブブロックベースの予測の概念を示す。
HEVCを越える将来のビデオコーディング技術を探るために、JVET(Joint Video Exploration Team)が2015年にVCEG及びMPEGによって共同設立された。それ以来、多くの新しい方法がJVETによって導入され、JEM(Joint Exploration Model)と名付けられた参照ソフトウェアに置かれてきた。
JEMでは、サブブロックベースの予測は、アフィン予測、代替時間動きベクトル予測(Alternative Temporal Motion Vector Prediction,ATMVP)、空間時間動きベクトル予測(Spatial-Temporal Motion Vector Prediction,STMVP)、双予測オプティカルフロー(Bi-directional Optical flow,BIO)及びフレームレートアップコンバージョン(Frame-Rate Up Conversion,FRUC)などのいくつかのコーディングツールで採用されている。アフィン予測は、VVCにも採用されている。
[2.3 アフィン予測]
HEVCでは、並進動きモデルのみが動き補償予測(Motion Compensation Prediction,MCP)のために適用される。一方で、現実世界では、多くの種類の動き、例えば、ズームイン/アウト、回転、射影運動、及び他の不規則な動きがある。VVCでは、簡単化されたアフィン変換動き補償予測が適用される。図2A~2Cに示されるように、ブロックのアフィン運動場は、(4パラメータアフィンモデルでは)2つ又は(6パラメータアフィンモデルでは)3つの制御点動きベクトルによって表される。
ブロックの動きベクトル場(Motion Vector Field,MVF)は、式(1)における4パラメータアフィンモデル(4パラメータは、変数a、b、e及びfと定義される。)及び式(2)における6パラメータアフィンモデル(6パラメータは、変数a、b、c、d、e及びfと定義される。)により夫々、次の式によって表される:
ここで、(mvh
0,mvv
0)は、左上角の制御点の動きベクトルであり、(mvh
1,mvv
1)は、右上角の制御点の動きベクトルであり、(mvh
2,mvv
2)は、左下角の制御点の動きベクトルであり、これら3つの動きベクトル全てが制御点動きベクトル(Control Point Motion Vectors,CPMV)と呼ばれ、(x,y)は、現在のブロック内の左上サンプルに対する代表点の座標を表す。CP動きベクトルは、(アフィンAMVPモードでのように)通知されるか、あるいは、(アフィンマージモードでのように)オンザフライで導出されてよい。w及びhは、現在のブロックの幅及び高さである。実際に、分割は、丸め演算による右シフトによって実装される。VTMでは、代表点は、サブブロックの中心位置であるよう定義され、例えば、現在のブロック内の左上サンプルに対するサブブロックの左上角の座標が(xs,ys)である場合に、代表点の座標は、(xs+2,ys+2)であるよう定義される。
分割がない設計では、式(1)及び式(2)は:
として実装される。
式(1)に示される4パラメータアフィンモデルの場合には:
式(2)に示される6パラメータアフィンモデルの場合には:
ここで、Sは、計算精度を表し、例えば、VVCでは、S=7である。VVCでは、(xs、ys)にある左上サンプルによるサブブロックのためのMCにおいて使用されるMVは、x=xs+2及びy=ys+2を用いて式(6)によって計算される。
各4×4サブブロックの動きベクトルを導出するよう、図3に示されるような、各サブブロックの中心サンプルの動きベクトルは、式(1)又は式(2)に従って計算され、1/16分数精度に丸められる。次いで、動き補償補間フィルタが、導出された動きベクトルにより各サブブロックの予測を生成するよう適用される。
アフィンモデルは、図4Aに示されるような左、上、右上、左下及び左上隣接ブロックなどの空間隣接アフィンコーディングブロックから引き継がれ得る。例えば、図4における左下隣接ブロックAが、図4BでA0によって表されるようにアフィンモードでコーディングされる場合に、ブロックAを含む隣接CU/PUの左上角、右上角及び左下角の制御点(CP)動きベクトルmv0
N、mv1
N及びmv2
Nがフェッチされる。そして、現在のCU/PU上の左下角/右上/左下の動きベクトルmv0
C、mv1
C及びmv2
Cは、mv0
N、mv1
N及びmv2
Nに基づいて計算される。留意されるべきは、VTM-2.0では、現在のブロックがアフィンコーディングされる場合に、サブブロック(例えば、VTMでは、4×4ブロック)LTはmv0を保存し、RTはmv1を保存する点である。現在のブロックが6パラメータアフィンモデルによりコーディングされる場合に、LBはmv2を保存し、そうでない(4パラメータアフィンモデルによる)場合には、LBはmv2’を保存する。他のサブブロックは、MCに使用されたMVを保存する。
留意されるべきは、CUがアフィンマージモードにより、例えば、AF_MERGEモードで、コーディングされる場合に、それは、有効な隣接再構成ブロックからアフィンモードによりコーディングされた最初のブロックを得る点である。そして、候補ブロックの選択順序は、図4Aに示されるように、左から、上、右上、左下、左上へである。
現在のブロックの導出されたCP MV mv0
C、mv1
C及びmv2
Cは、アフィンマージモードにおけるCP MVとして使用可能である。あるいは、それらは、VVCではアフィンインターモードのためのMVPとして使用可能である。留意されるべきは、マージモードについては、現在のブロックがアフィンモードによりコーディングされる場合には、現在のブロックのCP MVを導出した後、現在のブロックは複数のサブブロックに更に分割されてよく、各ブロックは、現在のブロックの導出されたCP MVに基づいてその動き情報を導出する。
[2.4 JVETにおける例となる実施形態]
ただ1つのアフィン空間隣接ブロックがブロックのアフィン運動を導出するために使用され得るVTMとは異なり、いくつかの実施形態において、アフィン候補の別々のリストがAF_MERGEモードのために構成される。
1)引き継がれたアフィン候補を候補リストに挿入
引き継がれたアフィン候補とは、アフィンモードによりコーディングされた有効な隣接再構成ブロックから候補が導出されることを意味する。図5に示されるように、候補ブロックの走査順序は、A1、B1、B0、A0、及びB2である。ブロックが選択される場合に(例えば、A1)、2段階プロシージャが適用される。
1.a 最初に、現在のブロックの2つ/3つの制御点を導出するために、ブロックをカバーするCUの3つの角の動きベクトルを使用する。
1.b 現在のブロック内の各サブブロックのサブブロック運動を導出するよう現在のブロックの制御点に基づく。
2)構成されたアフィン候補を挿入
アフィンマージ候補リスト内の候補の数がMaxNumAffineCandに満たない場合に、構成されたアフィン候補が候補リストに挿入される。
構成されたアフィン候補とは、各制御点の隣接動き情報を結合することによって候補が構成されることを意味する。
制御点の動き情報は、最初に、図5に示される指定された空間近傍及び時間近傍から導出される。CPk(k=1,2,3,4)は、k番目の制御点を表す。A0、A1、A2、B0、B1、B2及びB3は、CPk(k=1,2,3)を予測するための空間位置であり、Tは、CP4を予測するための時間位置である。
CP1、CP2、CP3及びCP4の座標は、夫々、(0,0)、(W,0)、(H,0)及び(W,H)であり、ここで、W及びHは、現在のブロックの幅及び高さである。
各制御点の動き情報は、次の優先順序に従って取得される。
2.a CP1については、チェック優先度はB2->B3->A2である。B2は、それが利用可能である場合に使用される。そうではない場合に、B3が利用可能であるならば、B3が使用される。B2及びB3の両方が利用不可能である場合には、A2が使用される。3つ全ての候補が利用不可能である場合には、CP1の動き情報は取得不可能である。
2.b CP2については、チェック優先度はB1->B0である。
2.c CP3については、チェック優先度はA1->A0である。
2.d CP4については、Tが使用される。
第2に、制御点の組み合わせが、運動モデルを構成するために使用される。
3つの制御点の動きベクトルが、6パラメータアフィンモデルにおける変換パラメータを計算するために必要とされる。3つの制御点は、次の4つの組み合わせ({CP1,CP2,CP4},{CP1,CP2,CP3},{CP2,CP3,CP4},{CP1,CP3,CP4})のうちの1つから選択され得る。例えば、CP1、CP2、及びCP3制御点を使用して、Affine(CP1,CP2,CP3)と表される6パラメータアフィン運動モデルを構成する。
2つの制御点の動きベクトルが、4パラメータアフィンモデルにおける変換パラメータを計算するために必要とされる。2つの制御点は、次の6つの組み合わせ({CP1,CP4},{CP2,CP3},{CP1,CP2},{CP2,CP4},{CP1,CP3},{CP3,CP4})のうちの1つから選択され得る。例えば、CP1及びCP2制御点を使用して、Affine(CP1,CP2)と表される4パラメータアフィン運動モデルを構成する。
構成されたアフィン候補の組み合わせは、次の順序:{CP1,CP2,CP3},{CP1,CP2,CP4},{CP1,CP3,CP4},{CP2,CP3,CP4},{CP1,CP2},{CP1,CP3},{CP2,CP3},{CP1,CP4},{CP2,CP4},{CP3,CP4}として候補リストに挿入される。
3)ゼロ動きベクトルを挿入
アフィンマージ候補リスト内の候補の数がMaxNumAffineCandに満たない場合に、リストが一杯になるまで、ゼロ動きベクトルが候補リストに挿入される。
[2.5 アフィンマージ候補リスト]
[2.5.1 アフィンマージモード]
VTM-2.0.1のアフィンマージモードでは、第1の利用可能なアフィン近傍のみが、アフィンマージモードの動き情報を導出するために使用可能である。いくつかの実施形態において、アフィンマージモードのための候補リストは、有効なアフィン近傍を探索し、各制御点の隣接動き情報を結合することによって、構成される。
アフィンマージ候補リストは、以下のステップとして構成される。
1)引き継がれたアフィン候補を挿入
引き継がれたアフィン候補とは、候補がその有効な隣接するアフィンコーディングブロックのアフィン運動モデルから導出されることを意味する。一般的な基礎において、図5に示されるように、候補位置の走査順序は、A1、B1、B0、A0、及びB2である。
候補が導出された後、同じ候補がリストに挿入されているかどうかをチェックするために完全プルーニングプロセスが実行される。同じ候補が存在する場合には、導出された候補は捨てられる。
2)構成されたアフィン候補を挿入
アフィンマージ候補リスト内の候補の数がMaxNumAffineCand(本願では、5にセットされる。)に満たない場合に、構成されたアフィン候補が候補リストに挿入される。構成されたアフィン候補とは、各制御点の隣接動き情報を結合することによって候補が構成されることを意味する。
制御点の動き情報は、最初に、指定された空間近傍及び時間近傍から導出される。CPk(k=1,2,3,4)は、k番目の制御点を表す。A0、A1、A2、B0、B1、B2及びB3は、CPk(k=1,2,3)を予測するための空間位置であり、Tは、CP4を予測するための時間位置である。
CP1、CP2、CP3及びCP4の座標は、夫々、(0,0)、(W,0)、(H,0)及び(W,H)であり、ここで、W及びHは、現在のブロックの幅及び高さである。
各制御点の動き情報は、次の優先順序に従って取得される。
CP1については、チェック優先度はB2->B3->A2である。B2は、それが利用可能である場合に使用される。そうではない場合に、B3が利用可能であるならば、B3が使用される。B2及びB3の両方が利用不可能である場合には、A2が使用される。3つ全ての候補が利用不可能である場合には、CP1の動き情報は取得不可能である。
CP2については、チェック優先度はB1->B0である。
CP3については、チェック優先度はA1->A0である。
CP4については、Tが使用される。
第2に、制御点の組み合わせが、アフィンマージ候補を構成するために使用される。
3つの制御点の動き情報が、6パラメータアフィン候補を構成するために必要とされる。3つの制御点は、次の4つの組み合わせ({CP1,CP2,CP4},{CP1,CP2,CP3},{CP2,CP3,CP4},{CP1,CP3,CP4})のうちの1つから選択され得る。組み合わせ{CP1,CP2,CP3}、{CP2,CP3,CP4}、{CP1,CP3,CP4}は、左上、右上、及び左下制御点によって表される6パラメータ運動モデルへ変換される。
2つの制御点の動きベクトルが、4パラメータアフィン候補を構成するために必要とされる。2つの制御点は、次の6つの組み合わせ({CP1,CP4},{CP2,CP3},{CP1,CP2},{CP2,CP4},{CP1,CP3},{CP3,CP4})のうちの1つから選択され得る。組み合わせ{CP1,CP4}、{CP2,CP3}、{CP2,CP4}、{CP1,CP3}、{CP3,CP4}は、左上及び右上制御点によって表される4パラメータ運動モデルへ変換される。
構成されたアフィン候補の組み合わせは、次の順序:{CP1,CP2,CP3},{CP1,CP2,CP4},{CP1,CP3,CP4},{CP2,CP3,CP4},{CP1,CP2},{CP1,CP3},{CP2,CP3},{CP1,CP4},{CP2,CP4},{CP3,CP4}として候補リストに挿入される。
組み合わせの参照リストX(Xは0又は1である。)については、制御点の中で最大利用率を有する参照インデックスが、リストXの参照インデックスとして選択され、差分参照ピクチャを指し示す動きベクトルはスケーリングされる。
候補が導出された後、同じ候補がリストに挿入されているかどうかをチェックするために完全プルーニングプロセスが実行される。同じ候補が存在する場合には、導出された候補は捨てられる。
3)ゼロ動きベクトルによるパディング
アフィンマージ候補リスト内の候補の数が5よりも少ない場合に、リストが一杯になるまで、ゼロ参照インデックスを有するゼロ動きベクトルが候補リストに挿入される。
[2.5.2 例となるアフィンマージモード]
いくつかの実施形態において、アフィンマージモードは、次のように簡単化され得る。
1)引き継がれたアフィン候補に対するプルーニングプロセスは、VTM-2.0.1において導出されたアフィン候補を比較することに代えて、隣接位置をカバーするコーディングユニットを比較することによって簡単化される。最大で2つまでの引き継がれたアフィン候補がアフィンマージリストに挿入される。構成されたアフィン候補に対するプルーニングプロセスは、全体として削除される。
2)構成されたアフィン候補におけるMVスケーリング動作は、削除される。制御点の参照インデックスが異なる場合に、構成された運動モデルは捨てられる。
3)構成されたアフィン候補の数は、10から6まで減らされる。
4)いくつかの実施形態において、ATMVPのようなサブブロック予測による他のマージ候補も、アフィンマージ候補リスト内に入れられる。その場合に、アフィンマージ候補リストは、サブブロックマージ候補リストなどの何らかの他の名称により改名されてよい。
[2.6 アフィンマージモードのための例となる制御点MVオフセット]
新しいアフィンマージ候補は、第1アフィンマージ候補のCPMVオフセットに基づいて生成される。第1アフィンマージ候補が4パラメータアフィンモデルを有効にする場合に、新しいアフィンマージ候補ごとの2つのCPMVが、第1アフィンマージ候補の2つのCPMVをオフセットすることによって導出され、そうでない場合(6パラメータアフィンモデルが有効にされる)には、新しいアフィンマージ候補ごとの3つのCPMVが、第1アフィンマージ候補の3つのCPMVをオフセットすることによって導出される。片予測では、CPMVオフセットは第1候補のCPMNに適用される。同じ方向でのリスト0及びリスト1による双予測では、CPMNオフセットは、次の通りに第1候補に適用される:
MVnew(L0),i=MVold(L0)+MVoffset(i) 式(8)
MVnew(L1),i=MVold(L1)+MVoffset(i) 式(9)
逆方向でのリスト0及びリスト1による双予測では、CPMVオフセットは、次の通りに第1候補に適用される:
MVnew(L0),i=MVold(L0)+MVoffset(i) 式(10)
MVnew(L1),i=MVold(L1)-MVoffset(i) 式(11)
様々なオフセットの大きさによる様々なオフセット方向が、新しいアフィンマージ候補を生成するために使用可能である。2つの実施が試験された。
(1)2つの異なるオフセットの大きさで8つの異なるオフセット方向による16個の新しいアフィンマージ候補が、次のオフセットの組:
オフセットの組={(4,0),(0,4),(-4,0),(0,-4),(-4,-4),(4,-4),(4,4),(-4,4),(8,0),(0,8),(-8,0),(0,-8),(-8,-8),(8,-8),(8,8),(-8,8)}
で示されるように、生成される。
アフィンマージリストは、この設計については20まで増やされる。可能性があるアフィンマージ候補の数は全部で31である。
(2)1つのオフセットの大きさで4つの異なるオフセット方向による4つのアフィンマージ候補が、次のオフセットの組:
オフセットの組={(4,0),(0,4),(-4,0),(0,-4)}
で示されるように、生成される。
アフィンマージリストは、VTM2.0.1がそうするように5に保たれる。4つの時間再構成アフィンマージ候補は、可能性があるアフィンマージ候補の数(例えば、全部で15)を変えないように、除かれる。CPMV1、CPMV2、CPMV3、及びCPMV4の座標は、(0,0)、(W,0)、(H,0)、及び(W,H)である、とする。CPMV4は、図6に示されるように時間的MVから導出される点に留意されたい。除かれた候補は、次の4つの、時間に関連した再構成されたアフィンマージ候補:{CP2,CP3,CP4}、{CP1,CP4}、{CP2,CP4}、{CP3,CP4}である。
[2.7 アフィン動き補償のバンド幅問題]
現在のブロックは、動き補償を行うために、ルーマ成分についての4×4サブブロック及び2つのクロマ成分についての2×2サブブロックに分けられるので、総バンド幅要件は、非サブブロックインター予測よりもずっと高い。バンド幅問題に対処するために、いくつかのアプローチが提案される。
[2.7.1 例1]
4×4ブロックは、一方向アフィンコーディングされたCUのサブブロックサイズとして使用され、一方、8×4/4×8ブロックは、双方向予測アフィンコーディングされたCUのサブブロックサイズとして使用される。
[2.7.2 例2]
アフィンモードについては、アフィンCUのサブブロック動きベクトルは、予め定義された動きベクトル場内にあるよう制約される。第1(左上)サブブロックの動きベクトルが(v0x,v0y)であり、第2サブブロックが(vix,viy)であるとすれば、vix及びviyの値は次の制約を示す:
vix∈[v0x-H,v0x+H] 式(12)
viy∈[v0y-V,v0y+V] 式(13)
いずれかのサブブロックの動きベクトルが予め定義された動きベクトル場を越える場合には、動きベクトルはクリッピングされる。制約されたサブブロック動きベクトルの考えの実例は図6に与えられている。
メモリがサブブロックごとではなくCUごとに読み出されるとすれば、値H及びVは、アフィンCUの最悪のメモリバンド幅が8×8双予測ブロックの通常のインターMCのそれを越えないように選択される。H及びVの値は、CUサイズ及び片予測又は双予測に適応できる点に留意されたい。
[2.7.3 例3]
アフィン予測におけるメモリバンド幅要件を低減するために、ブロック内の各8×8ブロックが基本ユニットとして見なされる。8×8ブロック内の4つ全ての4×4サブブロックのMVは、4つの4×4サブブロックの整数部の間の最大差が1ピクセルよりも大きくないように制約される。それにより、バンド幅は、(8+7+1)×(8+7+1)/(8×8)=4サンプル/ピクセルである。
いくつかの場合に、現在のブロック内の全てのサブブロックのMVがアフィンモデルにより計算された後、制御点を含むサブブロックのMVは、最初に、対応する制御点MVで置換される。これは、左上、右上、及び左下サブブロックのMVが、左上、右上、及び左下制御点MVによって夫々置換されることを意味する。次いで、現在のブロック内の各8×8ブロックについて、4つ全ての4×4サブブロックのMVが、それら4つのMVの整数部の間の最大差が1ピクセルよりも大きくないことを保証するようクリッピングされる。ここで、留意されるべきは、制御点を含むサブブロック(左上、右上及び左下サブブロック)は、MVクリッピングプロセスに関わるために、対応する制御点MVを使用することである。クリッピングプロセス中に、右上制御点のMVは不変である。
各8×8ブロックに適用されるクリッピングプロセスは、次の通りに説明される。
1.MV成分の最小及び最大値MVminx、MVminy、MVmaxx、MVmaxyは、最初に、次の通りに各8×8ブロックについて決定される:
a)4つの4×4サブブロックMVの中で最小のMV成分を得る
MVminx=min(MVx0,MVx1,MVx2,MVx3)
MVminy=min(MVy0,MVy1,MVy2,MVy3)
b)MVminx及びMVminyの整数部を最小MV成分として使用する
MVminx=MVminx>>MV_precision<<MV_precision
MVminy=MVminy>>MV_precision<<MV_precision
c)最大MV成分は次の通りに計算される:
MVmaxx=MVminx+(2<<MV_precision)-1
MVmaxy=MVminy+(2<<MV_precision)-1
d)右上制御点が現在の8×8ブロックにある場合
MV1x>MVmaxxならば
MVminx=(MV1x>>MV_precision<<MV_precision)-(1<<MV_precision)
MVmaxx=MVminx+(2<<MV_precision)-1
MV1y>MVmaxyならば、
MVminy=(MV1y>>MV_precision<<MV_precision)-(1<<MV_precision)
MVmaxy=MVminy+(2<<MV_precision)-1
2.この8×8ブロック内の各4×4ブロックのMV成分は、次の通りにクリッピングされる:
MVxi=max(MVminx,min(MVmaxx,MVxi))
MVyi=max(MVminy,min(MVmaxy,MVyi))
ここで、(MVxi,MVyi)は、1つの8×8ブロック内のi番目のサブブロックのMVであり、iは0、1、2、3であり、(MV1x,MV1y)は、右上制御点のMVであり、MV_precisionは、1/16動きベクトル分数精度に対応する4に等しい。MVminx及びMVmaxx(MVminy及びMVmaxy)の整数部の間の差は1ピクセルであるから、4つの4×4サブブロックMVの整数部の間の最大差は1ピクセルよりも大きくない。
同様の方法は、いくつかの実施形態において、プレーナーモードを扱うためにも使用されてよい。
[2.7.4 例4]
いくつかの実施形態において、最悪の場合のバンド幅低減のためのアフィンモードへの制限。アフィンブロックの最悪の場合のバンド幅がINTER_4×8/INTER_8×4ブロック又はINTER_9×9ブロックよりも悪くないことを確かにするために、アフィン制御点間の動きベクトル差は、アフィンブロックのサブブロックサイズが4×4又は8×8であるかどうかを決定するために使用される。
<最悪の場合のバンド幅低減のための一般的なアフィン制限>
アフィンモードのためのメモリバンド幅低減は、アフィン制御点の間の動きベクトル差(制御点差とも称される。)を制限することによって制御される。一般に、制御点差が以下の制限を満足する場合には、アフィン運動は4×4サブブロックを使用している(すなわち、4×4アフィンモード)。そうでない場合には、それは8×8サブブロックを使用している(8×8アフィンモード)。6パラメータ及び4パラメータモデルのための制限は、次の通りに与えられる。
異なるブロックサイズ(w×h)についての制約を導出するために、制御点の動きベクトル差は:
Norm(v1x-v0x)=(v1x-v0x)×(128/w)
Norm(v1y-v0y)=(v1y-v0y)×(128/w)
Norm(v2x-v0x)=(v2x-v0x)×(128/h)
Norm(v2y-v0y)=(v2y-v0y)×(128/h) 式(14)
として正規化される。
4パラメータアフィンモデルでは、(v2x-v0x)及び(v2y-v0y)は次の通りにセットされる:
(v2x-v0x)=-(v1y-v0y)
(v2y-v0y)=-(v1x-v0x) 式(15)
従って、(v2x-v0x)及び(v2y-v0y)のノルムは:
Norm(v2x-v0x)=-Norm(v1y-v0y)
Norm(v2y-v0y)=Norm(v1x-v0x) 式(16)
と与えられる。
最悪の場合のバンド幅を確保するための制限は、INTER_4×8又はINTER_8×4を達成することである:
|Norm(v1x-v0x)+Norm(v2x-V0x)+128|+
|Norm(v1y-v0y)+Norm(v2y-v0y)+128|+
|Norm(v1x-v0x)-Norm(v2x-v0x)|+
|Norm(v1y-v0y)-Norm(v2y-v0y)|
<128×3.25 式(17)
ここで、式(17)の左側は、サブアフィンブロックのシュリンク又はスパンレベルを表し、一方、(3.25)は、3.25のピクセルシフトを示す。
最悪の場合のバンド幅を確保するための制限は、INTER_9×9を達成することである:
(4×Norm(v1x-v0x)>-4×pel&&+4×Norm(v1x-v0x)<pel)&&
(4×Norm(v1y-v0y)>-pel&&4×Norm(v1y-v0y)<pel)&&
(4×Norm(v2x-v0x)>-pel&&4×Norm(v2x-v0x)<pel)&&
(4×Norm(v2y-v0y)>-4×pel&&4×Norm(v2y-v0y)<pel)&&
((4×Norm(v1x-v0x)+4×Norm(v2y-v0y)>-4×pel)&&
(4×Norm(v1x-v0x)+4×Norm(v2x-v0x)<pel))&&
((4×Norm(v1y-v0y)+4×Norm(v2x-v0x)>-4×pel)&&
(4×Norm(v1y-v0y)+4×Norm(v2y-v0yx)<pel))
式(18)
ここで、pel=128×16である(128及び16は、夫々、正規化係数及び動きベクトル精度である。)。
[2.8 一般化された双予測改善]
いくつかの実施形態は、GBiについてのゲインと複雑性との間トレードオフを改善し、BMS2.1に採用された。GBiは、CUレベル重みによる双予測(Bi-prediction with CU-level Weight,BCW)とも呼ばれる。BMS2.1 GBiは、等しくない重みを双予測モードにおけるL0及びL1からの予測子に適用する。インター予測モードでは、等しい重み対(1/2,1/2)を含む複数の重み対が、レート歪み最適化(Rate-Distortion Optimization,RDO)に基づいて評価され、選択された重み対のGBiインデックスがデコーダへ通知される。マージモードでは、GBiインデックスは、隣接CUから引き継がれる。BMS2.1 GBiでは、双予測モードでの予測子生成が式(19)に示される:
PGBi=(w0×PL0+w1×PL1+RoundingOffsetGBi)
>>shiftNumGBi 式(19)
ここで、PGBiはGBiの最終的な予測子である。w0及びw1は、選択されたGBi重み対であり、リスト0(L0)及びリスト1(L1)に夫々適用される。RoundingOffsetGBi及びshiftNumGBiは、GBiにおける最終的な予測子を正規化するために使用される。サポートされるw1は{-1/4,3/8,1/2,5/8,5/4}にセットされ、これら5つの重みは、1つの等しい重み対及び4つの等しくない重み対に対応する。ブレンディングゲイン、例えば、w1及びw0の和は1.0に固定される。従って、対応するw0重みセットは、{5/4,5/8,1/2,3/8,-1/4}である。重み対選択はCUレベルにある。
非低遅延ピクチャについては、重みセットサイズは5から3に低減される。このとき、w1重みセットは{3/8,1/2,5/8}であり、w0重みセットは{5/8,1/2,3/8}である。非低遅延ピクチャの重みセットサイズ低減は、BMS2.1 GBi及びこの寄与における全てのGBiテストに適用される。
いくつかの実施形態において、次の変更は、GBiパフォーマンスを更に改善するためにBMS2.1における既存のGBi設計の上に適用される。
[2.8.1 GBiエンコーダバグ修正]
GBiエンコーディング時間を低減するために、現在のエンコーダ設計では、エンコーダは、4/8に等しいGBi重みから推定された片予測動きベクトルを保存し、それらを、他のGBi重みの片予測探索のために再利用する。この高速エンコーディング法は、並進運動モデル及びアフィン運動モデルの両方に適用される。VTM2.0では、6パラメータアフィンモデルが、4パラメータアフィンモデルとともに採用された。BMS2.1エンコーダは、GBi重みが4/8に等しい場合に、それが片予測アフィンMVを保持するとき、4パラメータアフィンモデル及び6パラメータアフィンモデルを区別しない。その結果、4パラメータアフィンMVは、GBi重み4/8によるエンコーディング後に、6パラメータアフィンMVによって上書きされ得る。保存された6パラメータアフィンMVは、他のGBi重みについての4パラメータアフィンMEのために使用される可能性があり、あるいは、保存された4パラメータアフィンMVは、6パラメータアフィンMEのために使用される可能性がある。提案されているGBiエンコーダバグ修正は、4パラメータ及び6パラメータアフィンMV保存を分離することである。エンコーダは、GBi重みが4/8に等しい場合にアフィンモデルタイプに基づいてこれらのアフィンMVを保存し、対応するアフィンMVを、他のGBi重みのアフィンモデルタイプに基づいて再利用する。
[2.8.2 GBiのためのCUサイズ制約]
この方法では、GBiは、小さいCUについては無効化される。インター予測モードでは、双予測が使用され、CUエリアが128個のルーマサンプルよりも小さい場合に、GBiは、如何なるシグナリングにも知らずに無効化される。
[2.8.3 GBiによるマージモード]
マージモードによれば、GBiインデックスは通知されない。代わりに、それは、それがマージされる隣接ブロックから引き継がれる。TMVP候補が選択される場合に、GBiはこのブロックではオフされる。
[2.8.4 GBiによるアフィン予測]
現在のブロックがアフィン予測によりコーディングされる場合に、GBiは使用可能である。アフィンインターモードについては、GBiインデックスが通知される。アフィンマージモードについては、GBiインデックスは、それがマージされる隣接ブロックから引き継がれる。構成されたアフィンモデルが選択される場合には、GBiはこのブロックではオフされる。
[2.9 例となるインター-イントラ予測モード(IIP)]
インター及びイントラ複合予測(CIIP)とも呼ばれるインター-イントラ予測モードによれば、多重仮説(multi-hypothesis)予測が1つのイントラ予測及び1つのマージインデキシング予測を組み合わせる。そのようなブロックは、特別なインターコーディングブロックとして扱われる。マージCUでは、1つのフラグが、フラグが真である場合にイントラ候補リストからイントラモードを選択するために、マージモードについて通知される。ルーマ成分については、イントラ候補リストは、DC、プレーナー、水平、及び垂直モードを含む4つのイントラ予測モードから導出され、イントラ候補リストのサイズは、ブロック形状に応じて3又は4であることができる。CU幅がCU高さの2倍よりも大きい場合に、水平モードはイントラモードリストから除かれ、CU高さがCU幅の2倍よりも大きい場合に、垂直モードはイントラリストモードから除かれる。イントラモードインデックスによって選択された1つのイントラ予測モード、及びマージインデックスによって選択された1つのマージインデキシング予測は、加重平均を用いて組み合わされる。クロマ成分については、余分のシグナリングによらずに、常にDMが適用される。
予測を組み合わせるための重みは、次の通りに説明される。DC又はプレーナーモードが選択されるか、あるいは、CB幅又は高さが4よりも小さい場合に、等しい重みが適用される。CB幅及び高さが4以上であるようなCBについては、水平/垂直モードが選択される場合に、1つのCBが最初に、垂直方向/水平方向に、4つの等しい面積の領域に分けられる。iが1から4であり、(w_intra1,w_inter1)=(6,2)、(w_intra1,w_inter2)=(5,3)、(w_intra3,w_inter3)=(3,5)、及び(w_intra4,w_inter4)=(2,6)であるとして、(w_intrai,w_interi)と表される各重みセットは、対応する領域に適用されることになる。(w_intra1,w_inter1)は、参照サンプルに最も近い領域用であり、(w_intra4,w_inter4)は、参照サンプルから最も遠い領域用である。次いで、組み合わされた予測は、2つの重み付けされた予測を合計し、3ビット右シフトすることによって、計算され得る。更に、予測子のイントラ仮説のためのイントラ予測モードは、次の隣接CUの参照のためにセーブされ得る。
イントラ及びインター予測値がPIntra及びPInterであり、重み係数が夫々w_intra及びw_interであるとする。位置(x,y)での予測値は、(PIntra(x,y)×w_intra(x,y)+PInter(x,y)×w_inter(x,y))>>Nと計算される。ここで、w_intra(x,y)+w_inter(x,y)=2Nである。
<IIPコーディングブロックにおけるイントラ予測モードのシグナリング>
インター-イントラモードが使用される場合に、4つの許可されたイントラ予測モード、DC、プレーナー、水平及び垂直、のうちの1つが選択され通知される。3つの最確モード(Most Probable Mode(s),MPM)は、左及び上隣接ブロックから構成される。イントラコーディングされた隣接ブロック又はIIPコーディングされた隣接ブロックのイントラ予測モードは、1つのMPMとして扱われる。イントラ予測モードが4つの許可されたイントラ予測モードのうちの1つでない場合に、それは、角度差に応じて垂直モード又は水平モードに丸められることになる。隣接ブロックは、現在のブロックと同じCTUラインにあるべきである。
現在のブロックの幅及び高さはW及びHであるとする。W>2×H又はH>2×Wの場合に、3つのMPMのうちの1つのみがインター-イントラモードで使用可能である。そうでない場合には、4つ全ての有効なイントラ予測モードがインター-イントラモードで使用可能である。
留意されるべきは、インター-イントラモードにおけるイントラ予測モードは、通常のイントラコーディングされたブロックにおいてイントラ予測モードを予測するために使用不可能であることである。
インター-イントラ予測は、W×H>=64の場合にのみ使用可能である。
[2.10 例となる三角予測モード]
三角予測モード(Triangular Prediction Mode,TPM)の概念は、動き補償付き予測のための新しい三角パーティションを導入することである。図7A~7Bに示されるように、それはCUを対角又は逆対角方向のどちらか一方で2つの三角予測ユニットに分割する。CU内の各三角予測ユニットは、片予測候補リストから導出されるそれ自体の片予測動きベクトル及び参照フレームインデックスを用いてインター予測される。適応重み付けプロセスは、三角予測ユニットを予測した後に、対角辺に対して実行される。次いで、変換及び量子化プロセスがCU全体に適用される。このモードは、スキップ及びマージモードにのみ適用されることが知られる。
[2.10.1 TPMのための片予測候補リスト]
片予測候補リストは、5つの片予測動きベクトル候補から成る。それは、図8に示されるように、5つの空間隣接ブロック(1から5)及び2つの時間同一位置ブロック(6から7)を含む7つの隣接ブロックから導出される。7つの隣接ブロックの動きベクトルは集められ、片予測動きベクトルの順序、双予測動きベクトルのL0動きベクトル、双予測動きベクトルのL1動きベクトル、並びに双予測動きベクトルのL0及びL1動きベクトルの平均化された動きベクトルに従って片予測候補リストに置かれる。候補の数が5に満たない場合には、ゼロ動きベクトルがリストに加えられる。このリストに加えられた動き候補は、TPM動き候補と呼ばれる。
より具体的には、次のステップが含まれる。
1)如何なるプルーニング動作にもよらずに、A1、B1、B0、A0、B2、Col及びCol2(図8のブロック1~7に対応)から動き候補を取得する。
2)変数numCurrMergeCand=0をセットする。
3)A1、B1、B0、A0、B2、Col及びCol2から各動き候補が導出され、numCurrMergeCandが5よりも小さい場合に、動き候補が片予測(リスト0又はリスト1のどちらか一方から)であるならば、それは、numCurrMergeCandを1増やしてマージリストに追加される。そのような追加された動き候補は、「元々片予測された候補」(originally uni-predicted candidate)と呼ばれる。完全プルーニングが適用される。
4)A1、B1、B0、A0、B2、Col及びCol2から各動き候補が導出され、numCurrMergeCandが5よりも小さい場合に、動き候補が双予測であるならば、リスト0からの動き情報がマージリストに追加され(すなわち、リスト0からの片予測であるよう変更され)、numCurrMergeCandは1だけ増やされる。そのような追加された候補は、「切り捨てられたリスト0予測候補」(Truncated List0-predicted candidate)と呼ばれる。完全プルーニングが適用される。
5)A1、B1、B0、A0、B2、Col及びCol2から各動き候補が導出され、numCurrMergeCandが5よりも小さい場合に、動き候補が双予測であるならば、リスト1からの動き情報がマージリストに追加され(すなわち、リスト1からの片予測であるよう変更され)、numCurrMergeCandは1だけ増やされる。そのような追加された候補は、「切り捨てられたリスト1予測候補」」(Truncated List1-predicted candidate)と呼ばれる。完全プルーニングが適用される。
6)A1、B1、B0、A0、B2、Col及びCol2から各動き候補が導出され、numCurrMergeCandが5よりも小さい場合に、動き候補が双予測であるならば、
- リスト0参照ピクチャのスライス量子化パラメータ(QP)がリスト1参照ピクチャのスライスQPよりも小さい場合には、リスト1の動き情報が最初にリスト0参照ピクチャにスケーリングされ、2つのMV(一方は元のリスト0からであり、他方はリスト1からのスケーリングされたMVである。)の平均がマージリストに追加される。これは、リスト0動き候補からの平均された片予測であり、numCurrMergeCandは1だけ増やされる。
- そうでない場合には、リスト0の動き情報が最初にリスト1参照ピクチャにスケーリングされ、2つのMV(一方は元のリスト1からであり、他方はリスト0からのスケーリングされたMVである。)の平均がマージリストに加えられる。これは、リスト1動き候補からの平均された片予測であり、numCurrMergeCandは1だけ増やされる。
完全プルーニングが適用される。
7)numCurrMergeCandが5よりも小さい場合に、ゼロ動きベクトル候補が加えられる。
[2.11 VVCにおけるデコーダ側動きベクトル精緻化(DMVR)]
VVCにおけるDMVRのために、リスト0とリスト1との間のMVDミラーリングは図13に示されるように考えられ、バイラテラルマッチングが、MVを精緻化するために、例えば、いくつかのMVD候補の中から最良のMVDを見つけるために、実行される。2つの参照ピクチャのMVをMVL0(L0X,L0Y)及びMVL1(L1X,L1Y)によって表す。コスト関数(例えば、SAD)を最小化し得るリスト0のための(MvdX,MvdY)によって表されるMVDは、最良のMVDとして定義される。SAD関数については、それは、リスト0参照ピクチャにおいて動きベクトル(L0X+MvdX,L0Y+MvdY)により導出されたリスト0の参照ブロックと、リスト1参照ピクチャにおいて動きベクトル(L1X-MvdX,L1Y-MvdY)により導出されたリスト1の参照ブロックとの間のSADとして定義される。
動きベクトル精緻化プロセスは、2回繰り返してよい。各繰り返しにおいて、多くても6個のMVD(整数ペル精度による)が、図14に示されるように、2つのステップでチェックされる。第1ステップで、MVD(0,0)、(-1,0)、(1,0)、(0,-1)、(0,1)がチェックされる。第2ステップで、MVD(-1,-1)、(-1,1)、(1,-1)、又は(1,1)のうちの1つが選択され、更にチェックされてよい。関数Sad(x,y)がMVD(x,y)のSAD値を返すとする。第2ステップでチェックされた、(MvdX,MvdY)によって表されるMVDが、次の通りに決定される:
MvdX=-1;
MvdY=-1;
if(Sad(1,0)<Sad(-1,0))
MvdX=1;
if(Sad(0,1)<Sad(0,-1))
MvdY=1
最初の繰り返しでは、開始点は、通知されたMVであり、2回目の繰り返しでは、開始点は、通知されたMVに、最初の繰り返しにおける選択された最良のMVDを加えたものである。DMVRは、1つの参照ピクチャが先行ピクチャであり、他の参照ピクチャが後続ピクチャであり、それら2つの参照ピクチャが現在のピクチャから同じピクチャ・オーダー・カウント距離にある場合にのみ適用される。
DMVRのプロセスを更に簡単にするために、次の主な特徴が、いくつかの実施形態において実装可能である。
1.リスト0とリスト1との間の(0,0)位置SADが閾値よりも小さい場合の早期終了。
2.リスト0とリスト1との間のSADがある位置についてゼロである場合の早期終了。
3.W及びHがブロックの幅及び高さであるとして、DMVRのブロックサイズ:W×N>=64&&H>=8。
4.CUサイズ>16×16のDMVRの場合に、CUを複数の16×16サブブロックに分割する。CUの幅又は高さのみが16よりも大きい場合には、それは垂直又は水平方向においてのみ分割される。
5.参照ブロックサイズ(W+7)×(H+7)(ルーマについて)。
6.25ポイントのSADベースの整数ペル探索(例えば、(+-)2絞り込み探索範囲、単一ステージ)。
7.双線形補間ベースのDMVR。
8.「パラメトリック誤差表面方程式」に基づくサブペル精緻化。このプロシージャは、最小SASコストがゼロに等しくなく、最良のMVDは最後のMV精緻化繰り返しにおいて(0,0)である場合にのみ実行される。
9.参照ブロックパディング付きのルーマ/クロマMC(必要な場合)。
10.MC及びTMVPにのみ使用される精緻化されたMV。
[2.11.1 DMVRの利用]
次の条件が全て当てはまる場合に、DMVRは有効にされ得る:
- SPS内のDMVR有効化フラグ(例えば、sps_dmvr_enabled_flag)が1に等しい。
- TPMフラグ、インターアフィンフラグ及びサブブロックマージフラグ(ATMVP又はアフィンマージのどちらか一方)、MMVDフラグが全て0に等しい。
- マージフラグが1に等しい。
- 現在のブロックが双予測され、現在のピクチャとリスト1内の参照ピクチャとの間のピクチャ・オーダー・カウント(Picture Order Count,POC)距離が、リスト0内の参照ピクチャと現在のピクチャとの間のPOC距離に等しい。
- 現在のCUの高さが8以上である。
- ルーマサンプルの数(CU幅×高さ)が64以上である。
[2.11.2 「パラメトリック誤差表面方程式」に基づくサブペル精緻化]
方法は、以下で要約される。
1.パラメトリック誤差表面当てはめ(parametric error surface fit)は、中心位置が所与の繰り返しにおいて最良コスト位置である場合にのみ計算される。
2.中心位置コスト並びに中心から(-1,0)、(0,-1)、(1,0)、及び(0,1)位置にあるコストは、次の
E(x,y)=A(x-x0)2+B(y-y0)2+C
の2次元放射物誤差表面方程式を適合させるために使用される。ここで、(x0,y0)は、最小コストを有する位置に対応し、Cは、最小コスト値に対応する。5つの未知数の5つの式を解くことによって、(x0,y0)は:
x0=(E(-1,0)-E(1,0))/(2E(-1,0)+E(1,0)-2E(0,0))
y0=(E(0,-1)-E(0,1))/(2E(0,-1)+E(0,1)-2E(0,0))
と計算される。(x0,y0)は、除算が実行される精度(例えば、商のいくつのビットが計算されるか)を調整することによって、如何なる必要とされるサブピクセル精度にも計算可能である。1/16ペル精度については、商の絶対値の4ビットのみが計算される必要がある。これは、CUごとに必要な2つの除算の高速シフト減算ベースの実装に役立つ。
3.計算された(x0,y0)は、サブピクセルの正確な精緻化デルタMVを得るために、整数距離精緻化MVに加えられる。
[2.11.3 DMVRにおける必要とされる参照サンプル]
サイズW×Hのブロックについて、最大許容MVD値は±offSet(例えば、VVCでは2)であり、フィルタサイズはfilterSize(例えば、VVCでは、ルーマについては8、クロマについては4)であると仮定して、(W+2×offSet+filterSize-1)×(H+2×offSet+filterSize-1)個の参照サンプルが必要とされる。メモリバンド幅を低減するために、中心の(W+filterSize-1)×(H+filterSize-1)個の参照サンプルがフェッチされ、残りのピクセルは、フェッチされたサンプルの境界を繰り返すことによって生成される。8×8ブロックの例が図15に示されており、15×15個の参照サンプルがフェッチされ、フェッチされたサンプルの境界は、17×17領域を生成するよう繰り返される。
動きベクトル精緻化の間、双線形動き補償が、それらの参照サンプルを用いて実行される。一方、最終的な動き補償も、それらの参照サンプルを用いて実行される。
[2.12 異なるブロックサイズごとのバンド幅計算]
現在の8タップルーマ補間フィルタ及び4タップクロマ補間フィルタに基づいて、各ブロックユニットのメモリバンド幅(4:2:0カラーフォーマット、2つのM/2×N/2クロマブロックを伴った1つのM×Nルーマブロック)は、以下の表1で表示される。
同様に、現在の8タップルーマ補間フィルタ及び4タップクロマ補間フィルタに基づいて、各M×Nルーマブロックユニットのメモリバンド幅は、以下の表2で表にされる。
従って、カラーフォーマットにかかわらず、降順でのブロックサイズごとのバンド幅要件は:
4×4Bi>4×8Bi>4×16Bi>4×4Uni>8×8Bi>4×32Bi>4×64Bi>4×128Bi>8×16Bi>4×8Uni>8×32Bi>・・・
である。
[2.13 VTM-3.0における動きベクトル精度問題]
VTM-3.0では、MV精度は、ストレージにおいて1/16ルーマピクセルである。MVがシグナリングであるとき、最も細かい精度は1/4ルーマピクセルである。
[3.開示されている実施形態によって解決される課題の例]
1.アフィン精度に対するバンド幅制御方法は、十分に明らかではなく、より柔軟であるべきである。
2.HEVC設計では、メモリバンド幅要件の最悪の場合は、たとえコーディングユニット(CU)が非対称な精度モードにより分割され得たとしても(例えば、4×16及び12×16に等しいサイズのPUに分割される1つの16×16を)、8×8双予測である。VVCでは、新しいQTBTパーティション構造により、1つのCUは4×16にセット可能であり、双予測は有効にされ得た。双予測された4×16CUは、双予測された8×8CUと比較して、よりずっと高いメモリバンド幅を必要とする。より高いバンド幅を必要とするブロックサイズ(例えば、4×16又は16×4)を扱う方法は知られていない。
3.GBiなどの新しいコーディングツールは、より多くのラインバッファ問題を導入する。
4.インター-イントラモードは、インターコーディングされたブロックで使用されたイントラ予測モードを伝えるために、より多くのメモリ及びロジックを必要とする。
1/16ルーマピクセルMV精度は、より高いメモリストレージを必要とする。
6.1つの8×8ブロック内で4つの4×4ブロックを補間するために、(8+7+1)×(8+7+1)個の参照ピクセルをフェッチする必要があり、非アフィン/非プレーナーモード8×8ブロックと比較したときに、約14%多いピクセルを必要とする。
7.イントラ及びインター複合予測における平均化動作は、他のコーディングツール、例えば、重み付き予測、局所輝度補償、OBMC及び三角予測とアライメントされるべきであり、オフセットはシフト前に加えられる。
[4.実施形態の例]
本明細書で開示されている技術は、アフィン予測及び他の新しいコーディングツールで必要とされるバンド幅及びラインバッファを低減することができる。
以下の記載は、一般概念を説明するための例と見なされるべきであり、狭い意味で解釈されるべきではない。更に、実施形態は、如何なる方法でも組み合わせ可能である。
以下の議論では、アフィンコーディングされた現在のCUの幅及び高さは、夫々、w及びhである。(動き補償における)補間フィルタタップはN(例えば、8、6、4又は2)であり、現在のブロックサイズはW×Hであると仮定される。
<アフィン予測のためのバンド幅制御>
例1:アフィンコーディングされたブロック内のサブブロックSBの動きベクトルがMVSB((MVx,MVy)と表される。)であるとすれば、MVSBは、代表的な動きベクトルMV’(MV’x,MV’y)に対して特定の範囲内にあることができる。
いくつかの実施形態において、MVx>=MV’x-DH0及びMVx<=MV’x+DH1並びにMVy>=MV’y-DV0及びMVy<=MV’y+DV1であり、ここで、MV’=(MV’x,MV’y)である。いくつかの実施形態において、DH0はDH1に等しくても等しくなくてもよく、DV0はDV1に等しくても等しくなくてもよい。いくつかの実施形態において、DH0はDV0に等しくても等しくなくてもよく、DH1はDV1に等しくても等しくなくてもよい。いくつかの実施形態において、DH0はDH1と等しくなくてもよく、DV0はDV1と等しくなくてもよい。いくつかの実施形態において、DH0、DH1、DV0及びDV1は、エンコーダからデコーダへ、例えば、VPS/SPS/PPS/スライスヘッダ/タイルグループヘッダ/タイル/CTU/CU/PUにおいて、通知されてよい。いくつかの実施形態において、DH0、DH1、DV0及びDV1は、異なった標準的プロファイル/レベル/ティアごとに異なるように指定されてもよい。いくつかの実施形態において、DH0、DH1、DV0及びDV1は、現在のブロックの幅及び高さに依存してよい。いくつかの実施形態において、DH0、DH1、DV0及びDV1は、現在のブロックが片予測又は双予測であるかどうかに依存してよい。いくつかの実施形態において、DH1、DH1、DV0及びDV1は、サブブロックSBの位置に依存してよい。いくつかの実施形態において、DH0、DH1、DV0及びDV1は、MV’を得る方法に依存してよい。
いくつかの実施形態において、MV’は、MV0、MV1又はMV2などの1つのCPMVであることができる。
いくつかの実施形態において、MV’は、図3のMV0’、MV1’、又はMV2’などの、コーナーサブブロックの1つについてのMCで使用されたMVであることができる。
いくつかの実施形態において、MV’は、現在のブロックの内側又は外側のいずれかの位置について現在のブロックのアフィンモデルを用いて導出されたMVであることができる。例えば、それは、現在のブロックの中心位置(例えば、x=w/2及びy=h/2)について導出されてよい。
いくつかの実施形態において、MV’は、中心サブブロックの1つ(図3に示されるC0、C1、C2又はC3)などの、現在のブロックのいずれかのサブブロックについてのMCで使用されたMVであることができる。
いくつかの実施形態において、MVSBが制約を満足しない場合に、MVSBは、有効な領域にクリッピングされるべきである。いくつかの実施形態において、クリッピングされたMVSBはMVバッファ内に保存され、続いてコーディングされたブロックのMVを予測するために使用されることになる。いくつかの実施形態において、クリッピングされる前のMVSBはMVバッファに保存される。
いくつかの実施形態において、MVSBが制約を満足しない場合に、ビットストリームは、規格に従わない(無効である)と見なされる。一例では、MVSBは、制約を満足しなければならいか又はすべきであることが規格で指定され得る。この制約は、任意の適合エンコーダによって従われるべきである、さもなければ、エンコーダは、規格に従わないものと見なされる。
いくつかの実施形態において、MVSB及びMV’は、シグナリングMV精度(例えば、1/4ピクセル精度)により表され得る。いくつかの実施形態において、MVSB及びMV’は、ストレージMV精度(例えば、1/16精度)により表され得る。いくつかの実施形態において、MVSB及びMV’は、シグナリング又はストレージ精度とは異なる精度(例えば、整数精度)に丸められてもよい。
例2:アフィンコーディングされたブロックについては、ブロック内の各M×N(例えば、8×4、4×8又は8×8)ブロックが基本ユニットと見なされる。M×N内の全ての4×4サブブロックのMVは、4つの4×4サブブロックMVの整数部の間の最大差がKピクセルよりも大きくないように制約される。
いくつかの実施形態において、この制約を適用すべきかどうか及びどのように適用すべきかは、現在のブロックが双予測又は片予測を適用するかどうかに依存する。例えば、制約は、双予測にのみ適用され、片予測には適用されない。他の例として、M、N及びKは、双予測及び片予測について異なっている。
いくつかの実施形態において、M、N及びKは、現在のブロックの幅及び高さに依存してよい。
いくつかの実施形態において、制約を適用すべきかどうかは、エンコーダからデコーダへ、例えば、VPS/SPS/PPS/スライスヘッダ/タイルグループヘッダ/タイル/CTU/CU/PUにおいて、通知されてよい。例えば、オン/オフフラグが、制約を適用すべきかどうかを示すために通知される。他の例として、M、N及びKは通知される。
いくつかの実施形態において、M、N及びKは、異なった標準的プロファイル/レベル/ティアごとに異なるように指定されてもよい。
例3:サブブロックの幅及び高さは、異なった、アフィンコーディングされたブロックごとに、異なるように計算されてよい。
いくつかの実施形態において、計算方法は、片予測及び双予測によるアフィンコーディングされたブロックごとに異なる。一例では、サブブロックサイズは、片予測によるブロックについては固定である(例えば、4×4、4×8又は8×4)。他の例では、サブブロックサイズは、双予測によるブロックについては計算される。この場合に、サブブロックサイズは、2つの異なった、双予測されたアフィンブロックごとに、異なってよい。
いくつかの実施形態において、双予測されたアフィンブロックについて、参照リスト0からのサブブロックの幅及び/又は高さ並びに参照リスト1からのサブブロックの幅及び/又は高さは、異なってよい。一例では、参照リスト0からのサブブロックの幅及び高さは、夫々、Wsb0及びHsb0であり、参照リスト1からのサブブロックの幅及び高さは、夫々、Wsb1及びHsb1である。その場合に、参照リスト0及び参照リスト1の両方についてのサブブロックの最終的な幅及び高さは、夫々、Max(Wsb0,Wsb1)及びMax(Hsb0,Hsb1)として計算される。
いくつかの実施形態において、サブブロックの計算された幅及び高さは、ルーマ成分に対してしか適用されない。クロマ成分については、それは常に固定であり、例えば、4:2:0カラーフォーマットによる8×8ルーマブロックに対応する4×4クロマサブブロックである。
いくつかの実施形態において、MVx-MV’x及びMVy-MV’yは、サブブロックの幅及び高さを決定するよう計算される。(MVx、MVy)及び(MV’x,MV’y)は例1で定義されている。
いくつかの実施形態において、計算に関与するMVは、シグナリングMV精度(例えば、1/4ピクセル精度)により表され得る。一例では、これらのMVは、ストレージMV精度(例えば、1/16精度)により表され得る。他の例として、これらのMVは、シグナリング又はストレージ精度とは異なる精度(例えば、整数精度)に丸められてもよい。
いくつかの実施形態において、サブブロックの幅及び高さを決定するために計算で使用される閾値は、エンコーダからデコーダへ、例えば、VPS/SPS/PPS/スライスヘッダ/タイルグループヘッダ/タイル/CTU/CU/PUにおいて、通知されてよい。
いくつかの実施形態において、サブブロックの幅及び高さを決定するために計算に使用される閾値は、異なった標準的プロファイル/レベル/ティアごとに異なってもよい。
例4:1つW2×H2サブブロック/ブロック内でW1×H1サブブロックを補間するために、(W2+N-1-PW)×(H2+N-1-PH)ブロックが最初にフェッチされ、それから、例6で説明されるピクセルパディング法(例えば、境界ピクセル繰り返し法)が、より大きいブロックを生成するために適用される。より大きいブロックは、それから、W1×H1サブブロックを補間するために使用される。例えば、W2=H2=8、W1=H1=4及びPW=PH=0である。
いくつかの実施形態において、いずれかのW1×H1サブブロックのMVの整数部は、W2×H2サブブロック/ブロックの全体をフェッチするために使用されてよく、異なった境界ピクセル繰り返し法がそれに応じて必要とされ得る。例えば、全てのW1×H1サブブロックのMVの整数部の間の最大差が1ピクセルよりも大きくない場合に、左上のW1×H1サブブロックのMVの整数部が、W2×H2サブブロック/ブロックの全体をフェッチするために使用される。参照ブロックの右及び下境界は一度繰り返される。他の例として、全てのW1×H1サブブロックのMVの整数部の間の最大差が1ピクセルよりも大きくない場合に、右下のW1×H1サブブロックのMVの整数部が、W2×H2サブブロック/ブロックの全体をフェッチするために使用される。参照ブロックの左及び上境界は一度繰り返される。
いくつかの実施形態において、いずれかのW1×H1サブブロックのMVは、最初に変更され、それから、W2×H2サブブロック/ブロックの全体をフェッチするために使用されてよく、異なった境界ピクセル繰り返し法がそれに応じて必要とされ得る。例えば、全てのW1×H1サブブロックのMVの整数部の間の最大差が2ピクセルよりも大きくない場合に、左上のW1×H1サブブロックのMVの整数部は、(1,1)だけ増やされてよく(ここで、1は、1整数ピクセル距離を意味する。)、それから、W2×H2サブブロック/ブロックの全体をフェッチするために使用される。この場合に、参照ブロックの左、右、上及び下境界は一度繰り返される。他の例として、全てのW1×H1サブブロックのMVの整数部の間の最大差が2ピクセルよりも大きくない場合に、右下のW1×H1サブブロックのMVの整数部は、(-1,-1)だけ増やされてよく(ここで、1は、1整数ピクセル距離を意味する。)、それから、W2×H2サブブロック/ブロックの全体をフェッチするために使用される。この場合に、参照ブロックの左、右、上及び下境界は一度繰り返される。
<特定のブロックサイズのためのバンド幅制御>
例5:現在のブロックのw及びhが次のような条件の1つ以上を満足する場合に、双予測は許されない。
A.wがT1に等しく且つhがT2に等しいか、あるいは、hがT1に等しく且つwがT2に等しい。一例では、T1=4及びT2=16である。
B.wがT1に等しくかつhがTよりも大きくなく、あるいは、hがT1に等しくかつwがT2よりも大きくない。一例では、T1=4及びT2=16である。
C.wはT1よりも大きくなく且つhはT2よりも大きくなく、あるいは、hはT1よりも大きくなく且つwはT2よりも大きくない。一例では、T1=8及びT2=8である。他の例では、T1==8、T2==4である。別の他の例では、T1==4及びT2==4である。
いくつかの実施形態において、双予測は4×8ブロックについて無効にされてよい。いくつかの実施形態において、双予測は8×4ブロックについて無効にされてよい。いくつかの実施形態において、双予測は4×16ブロックについて無効にされてよい。いくつかの実施形態において、双予測は16×4ブロックについて無効にされてよい。いくつかの実施形態において、双予測は4×8、8×4ブロックについて無効にされてよい。いくつかの実施形態において、双予測は、4×16、16×4ブロックについて無効にされてよい。いくつかの実施形態において、双予測は、4×8、16×4ブロックについて無効にされてよい。いくつかの実施形態において、双予測は、4×16、8×4ブロックについて無効にされてよい。いくつかの実施形態において、双予測は、4×Nブロック、例えば、N<=16について無効にされてよい。いくつかの実施形態において、双予測は、N×4ブロック、例えば、N<=16について無効にされてよい。いくつかの実施形態において、双予測は、8×Nブロック、例えば、N<=16について無効にされてよい。いくつかの実施形態において、双予測は、N×8ブロック、例えば、N<=16について無効にされてよい。いくつかの実施形態において、双予測は、4×8、8×4、4×16ブロックについて無効にされてよい。いくつかの実施形態において、双予測は、4×8、8×4、16×4ブロックについて無効にされてよい。いくつかの実施形態において、双予測は、8×4、4×16、16×4ブロックについて無効にされてよい。いくつかの実施形態において、双予測は、4×8、8×4、4×16、16×4ブロックについて無効にされてよい。
いくつかの実施形態において、本明細書で開示されているブロックサイズは、ルーマ成分などの1つの色成分を参照してよく、双予測が無効にされるかどうかに関する決定は、全ての色成分に適用され得る。例えば、双予測が、ブロックのルーマ成分のブロックサイズに従って無効にされる場合に、双予測は、他の色成分の対応するブロックについても無効にされる。いくつかの実施形態において、本明細書で開示されているブロックサイズは、ルーマ成分などの1つの色成分を参照してよく、双予測が無効にされるかどうかに関する決定は、その色成分にのみ適用され得る。
いくつかの実施形態において、双予測がブロックについて無効にされ、選択されたマージ候補が双予測される場合に、そのマージ候補の参照リスト0又は参照リスト1からのただ1つのMVのみがそのブロックに割り当てられる。
いくつかの実施形態において、三角予測モード(TPM)は、双予測がブロックについて無効にされる場合に、そのブロックについて許されない。
いくつかの実施形態において、予測方向(リスト0/1からの片予測、双予測)を通知する方法は、ブロック寸法に依存してよい。一例では、1)ブロック幅×ブロック高さ<62であるか、あるいは、2)ブロック幅×ブロック高さ=64であるが幅が高さに等しくない場合に、リスト0/1からの片予測の指示が通知されてよい。他の例として、1)ブロック幅×ブロック高さ>64であるか、あるいは、2)n幅×ブロック高さ=64であり且つ幅が高さに等しい場合に、リスト0/1からの片予測又は双予測の指示が通知されてよい。
いくつかの実施形態において、片予測及び双予測は両方とも、4×4ブロックについて無効にされてよい。いくつかの実施形態において、それは、アフィンコーディングされたブロックについて無効にされてよい。代替的に、それは、非アフィンコーディングされたブロックについて無効にされてよい。いくつかの実施形態において、8×8ブロックに対する四分木分割、8×4又は4×8ブロックに対する二分木分割、4×16又は16×4ブロックに対する三分木分割の指示は、スキップされてよい。いくつかの実施形態において、4×4ブロックは、イントラブロックとしてコーディングされるべきである。いくつかの実施形態において、4×4ブロックのMVは、整数精度にあるべきである。例えば、4×4ブロックに対するIMVフラグは1であるべきである。他の例として、4×4ブロックのMVは、整数精度に丸められるべきである。
いくつかの実施形態において、双予測は許可される。しかし、補間フィルタタップがNであるとすれば、(W+N-1)×(H+N-1)個の参照ピクセルをフェッチする代わりに、(W+N-1-PW)×(H+N-1-PH)個の参照ピクセルのみがフェッチされる。一方、参照ブロック境界(上、左、下及び右境界)にあるピクセルは、最終的な補間のために使用される、図9に示されるような(W+N-1)×(H+N-1)ブロックを生成するよう、繰り返される。いくつかの実施形態において、PHはゼロであり、左又は/及び右境界のみが繰り返される。いくつかの実施形態において、PWはゼロであり、上又は/及び下境界のみが繰り返される。いくつかの実施形態において、PW及びPHの両方がゼロよりも大きく、最初に、左又は/及び右境界が繰り返され、次いで、上又は/及び下境界が繰り返される。いくつかの実施形態において、PW及びPHの両方がゼロよりも大きく、最初に、上又は/及び下境界が繰り返され、次いで、左又は/及び右境界が繰り返される。いくつかの実施形態において、左境界は、M1回繰り返され、右境界は、PW-M1回繰り返される。いくつかの実施形態において、上境界は、M2回繰り返され、下境界は、PH-M2回繰り返される。いくつかの実施形態において、そのような境界ピクセル繰り返し法は、一部又は全ての参照ピクセルに適用されてよい。いくつかの実施形態において、PW及びPHは、Y、Cb及びCrなどの異なる色成分ごとに異なってよい。
図9は、補間前の参照ブロックの繰り返し境界ピクセルの例を示す。
例6:いくつかの実施形態において、(W+N-1-PW)×(H+N-1-PH)個の参照ピクセルは、((W+N-1)×(H+N-1)個の参照ピクセルの代わりに)W×Hブロックの動き補償のためにフェッチされてよい。範囲(W+N-1-PW)×(H+N-1-PH)の外にあるが(W+N-1)×(H+N-1)の中にあるサンプルは、補間プロセスを行うようパディングされる。1つのパディング法では、参照ブロック境界(上、左、下及び右境界)にあるピクセルは、最終的な補間のために使用される、図11に示されるような(W+N-1)×(H+N-1)ブロックを生成するよう、繰り返される。
いくつかの実施形態において、PHはゼロであり、左又は/及び右境界のみが繰り返される。
いくつかの実施形態において、PWはゼロであり、上又は/及び下境界のみが繰り返される。
いくつかの実施形態において、PW及びPHの両方がゼロよりも大きく、最初に、左又は/及び右境界が繰り返され、次いで、上又は/及び下境界が繰り返される。
いくつかの実施形態において、PW及びPHの両方がゼロよりも大きく、最初に、上又は/及び下境界が繰り返され、次いで、左又は/及び右境界が繰り返される。
いくつかの実施形態において、左境界は、M1回繰り返され、右境界は、PW-M1回繰り返される。
いくつかの実施形態において、上境界は、M2回繰り返され、下境界は、PH-M2回繰り返される。
いくつかの実施形態において、そのような境界ピクセル繰り返し法は、一部又は全ての参照ピクセルに適用されてよい。
いくつかの実施形態において、PW及びPHは、Y、Cb及びCrなどの異なる色成分ごとに異なってよい。
いくつかの実施形態において、PW及びPHは、異なるブロックサイズ又は形状ごとに異なってよい。
いくつかの実施形態において、PW及びPHは、片予測及び双予測について異なってよい。
いくつかの実施形態において、パディングは、アフィンモードでは実行されなくてもよい。
いくつかの実施形態において、範囲(W+N-1-PW)×(H+N-1-PH)の外にあるが(W+N-1)×(H+N-1)の中にあるサンプルは、単一値であるようセットされる。いくつかの実施形態において、単一値は1<<(BD-1)であり、BDはサンプルのビットデプスであり、例えば、8又は10である。いくつかの実施形態において、単一値は、エンコーダからデコーダへVPS/SPS/PPS/スライスヘッダ/タイルグループヘッダ/タイル/CTU/CU/PUにおいて通知される。いくつかの実施形態において、単一値は、範囲(W+N-1-PW)×(H+N-1-PH)内のサンプルから導出される。
例7:DMVRにおいて(W+filterSize-1)×(H+filterSize-1)個のサンプルをフェッチする代わりに、(W+filterSize-1-PW)×(H+filterSize-1-PH)個の参照サンプルがフェッチされてよく、全ての他の必要とされるサンプルは、フェッチされた参照サンプルの境界を繰り返すことによって生成されてよく、このとき、PW>=0及びPH>=0である。
いくつかの実施形態において、例6で提案されている方法が、フェッチされていないサンプルをパディングするために使用されてよい。
いくつかの実施形態において、DMVRの最終的な動き補償において、パディングは再び実行されなくてもよい。
いくつかの実施形態において、上記の方法を適用すべきかどうかは、ブロック寸法に依存してよい。
例8:inter_pred_odcのシグナリング方法は、w及びhが例5の条件を満足するかどうかに依存してよい。一例は、以下の表3に示される。
例9:マージ候補リスト構成プロセスは、w及びhが例4の条件を満足するかどうかに依存してよい。次の実施形態は、w及びhが条件を満足する場合について説明する。
いくつかの実施形態において、1つのマージ候補が双予測を使用する場合に、参照リスト0からの予測のみが保持され、マージ候補は、参照リスト0を参照する片予測として扱われる。
いくつかの実施形態において、1つのマージ候補が双予測を使用する場合に、参照リスト1からの予測のみが保持され、マージ候補は、参照リスト1を参照する片予測として扱われる。
いくつかの実施形態において、1つのマージ候補が双予測を使用する場合に、候補は使用不可として扱われる。すなわち、そのようなマージ候補はマージリストから除かれる。
いくつかの実施形態において、三角予測モードのためのマージ候補リスト構成プロセスが代わりに使用される。
例10:コーディングツリー分割プロセスは、分割後の子CUの幅及び高さが例5の条件を満足するかどうかに依存してよい。
いくつかの実施形態において、分割後の子CUの幅及び高さが例5の条件を満足する場合に、分割は許可されない。いくつかの実施形態において、コーディングツリー分割のシグナリングは、一種類の分割が許可されるか否かに依存してよい。一例では、一種類の分割が許可されない場合に、分割を表すコードワードは削除される。
例11:スキップフラグ又は/及びイントラブロックコピー(Intra Block Copy,IBC)フラグのシグナリングは、ブロックの幅及び/又は高さが特定の条件(例えば、例5に説明された条件)を満足するかどうかに依存してよい。
いくつかの実施形態において、条件は、ルーマブロックがXよりも多くないサンプルを含むことである。例えば、X=16である。
いくつかの実施形態において、条件は、ルーマブロックがX個のサンプルを含むことである。例えば、X=16である。
いくつかの実施形態において、条件は、ルーマブロックの幅及び高さが両方ともXに等しいことである。例えば、X=4である。
いくつかの実施形態において、上記の条件の1つ又はいくつかが当てはまる場合に、インターモード及び/又はIBCモードは、そのようブロックに対して許可されない。
いくつかの実施形態において、インターモードがブロックに対して許可されない場合に、スキップフラグはそれについて通知されなくてよい。代替的に、更に、スキップフラグは、偽であると推測され得る。
いくつかの実施形態において、インターモード及びIBCモードがブロックに対して許可されない場合に、スキップフラグはそれについて通知されなくてよく、暗黙的に偽であると導出され得る(例えば、ブロックは、非スキップモードでコーディングされる、と導出される。)。
いくつかの実施形態において、インターモードはブロックに対して許可されないが、IBCモードはそのブロックに対して許可される場合に、スキップフラグは依然として通知されてよい。いくつかの実施形態において、IBCフラグは、ブロックがスキップモードでコーディングされる場合には通知されなくてよく、IBCフラグは、暗黙的に真であると導出される(例えば、ブロックは、IBCモードでコーディングされる、と導出される。)。
例12:予測モードのシグナリングは、ブロックの幅及び/又は高さが特定の条件(例えば、例5で説明された条件)を満足するかどうかに依存してよい。
いくつかの実施形態において、条件は、ルーマブロックがXよりも多くないサンプルを含むことである。例えば、X=16である。
いくつかの実施形態において、条件は、ルーマブロックがX個のサンプルを含むことである。例えば、X=16である。
いくつかの実施形態において、条件は、ルーマブロックの幅及び高さが両方ともXに等しいことである。例えば、X=4である。
いくつかの実施形態において、上記の条件の1つ又はいくつかが当てはまる場合に、インターモード及び/又はIBCモードは、そのようブロックに対して許可されない。
いくつかの実施形態において、特定のモードの指示のシグナリングはスキップされてよい。
いくつかの実施形態において、インターモード及びIBCモードがブロックに対して許可されない場合に、インター及びIBCモードの指示のシグナリングはスキップされ、残りの許可されたモード(例えば、それがイントラモード又はパレットモードであるかどうか)は依然として通知されてよい。
いくつかの実施形態において、インターモード及びIBCモードがブロックに対して許可されない場合に、予測モードは通知されなくてよい。代替的に、更に、予測モードは、暗黙的にイントラモードであると導出され得る。
いくつかの実施形態において、インターモードがブロックに対して許可されない場合に、インターモードの指示のシグナリングはスキップされ、残りの許可されたモード(例えば、それがイントラモード又はIBCモードであるかどうか)は依然として通知されてよい。代替的、残りの許可されたモード(例えば、それがイントラモード又はIBCモード又はパレットモードであるかどうか)は依然として通知されてよい。
いくつかの実施形態において、インターモードはブロックに対して許可されないが、IBCモード及びイントラモードはそれに対して許可される場合に、IBCフラグは、そのブロックがIBCモードでコーディングされるか否かを示すよう通知されてよい。代替的に、更に、予測モードは通知されなくてもよい。
例13:三角モードのシグナリングは、ブロックの幅及び/又は高さが特定の条件(例えば、図5で説明された条件)を満足するかどうかに依存してよい。
いくつかの実施形態において、条件は、ルーマブロックサイズが、いくつかの特定のサイズの1つであることである。例えば、特定のサイズは、4×16又は/及び16×4を含んでよい。
いくつかの実施形態において、上記の条件が当てはまる場合に、三角モードは許可され得ず、現在のブロックが三角モードでコーディングされるかどうかを示すフラグは、通知されなくてよく、そして、偽であると導出され得る。
例14:インター予測方向のシグナリングは、ブロックの幅及び/又は高さが特定の条件(例えば、図5に記載された条件)を満足するかどうかに依存してよい。
いくつかの実施形態において、条件は、条件は、ルーマブロックサイズが、いくつかの特定のサイズの1つであることである。例えば、特定のサイズは、8×4又は/及び4×8又は/及び4×16又は/及び16×4を含んでよい。
いくつかの実施形態において、上記の条件が当てはまる場合に、ブロックは、単に、片予測されてよく、現在のブロックが双予測されるかどうかを示すフラグは通知されなくてよく、そして、偽であると導出され得る。
例15:SMVD(対称MVD)フラグのシグナリングは、ブロックの幅及び/又は高さが特定の条件(例えば、例5で説明された条件)を満足するかどうかに依存してよい。
いくつかの実施形態において、条件は、条件は、ルーマブロックサイズが、いくつかの特定のサイズの1つであることである。いくつかの実施形態において、条件は、ブロックサイズが32個よりも多くないサンプルを有するかどうかとして定義される。いくつかの実施形態において、条件は、ブロックサイズが4×8又は8×4であるかどうかとして定義される。いくつかの実施形態において、条件は、ブロックサイズが4×4、4×8又は8×4であるかどうかとして定義される。いくつかの実施形態において、特定のサイズは、8×4又は/及び4×8又は/及び4×16又は/及び16×4を含んでよい。
いくつかの実施形態において、特定の条件が当てはまる場合に、SMVDの使用の指示(例えば、SMVDフラグ)は通知されなくてよく、そして、偽であると導出され得る。例えば、ブロックは、片予測されるとセットされてよい。
いくつかの実施形態において、特定の条件が当てはまる場合に、SMVDの使用の指示(例えば、SMVDフラグ)は、依然として通知されてよいが、リスト0又はリスト1の動き情報のみが動き補償プロセスで利用され得る。
例16:IBCに使用される(レギュラーマージモード、ATMVPモード、MMVDマージモード、MMVDスキップモード、などで導出された動きベクトルのような)動きベクトル又はブロックベクトルは、ブロックの幅及び/又は高さが特定の条件を満足するかどうかに応じて変更されてよい。
いくつかの実施形態において、条件は、ルーマブロックがいくつかの特定のサイズの1つであることである。例えば、特定のサイズは、8×4又は/及び4×8又は/及び4×16又は/及び16×4を含んでよい。
いくつかの実施形態において、上記の条件が当てはまる場合に、ブロックの動きベクトル又はブロックベクトルは、導出された動き情報が双方向である(例えば、いくつかオフセットを有して隣接ブロックから引き継がれる。)ならば、一方向動きベクトルに変更されてよい。そのようなプロセスは変換プロセスと呼ばれ、最終的な一方向動きベクトルは「変換された一方向」動きベクトルと称される。いくつかの実施形態において、参照ピクチャリストX(例えば、Xは0又は1である。)の動き情報は保持されてよく、リストY(Yは1-Xである。)の動き情報は捨てられてよい。いくつかの実施形態において、参照ピクチャリストX(例えば、Xは0又は1である。)の動き情報及びリストY(Yは1-Xである。)のそれは連帯して、リストXへの新しい動き候補点を導出するために利用されてよい。一例では、新しい動き候補の動きベクトルは、2つの参照ピクチャリストの平均化された動きベクトルであってよい。他の例として、リストYの動き情報は、最初に、リストXにスケーリングされてよい。次いで、新しい動き候補の動きベクトルは、2つの参照ピクチャリストの平均化された動きベクトルであってよい。いくつかの実施形態において、予測方向Xでの動きベクトルは、使用されなくてもよく(例えば、予測方向Xでの動きベクトルは(0,0)に変更され、予測方向Xでの参照インデックスは-1に変更される。)、予測方向は1-X(X=0又は1)に変更されてよい。いくつかの実施形態において、変換された一方向動きベクトルは、HMVPルックアップテーブルを更新するために使用されてよい。いくつかの実施形態において、導出された双方向動き情報、例えば、一方向MVに変換される前の双方向MVは、HMVPルックアップテーブルを更新するために使用されてよい。いくつかの実施形態において、変換された一方向動きベクトルは、保存されてよく、次にコーディングされたブロックの動き予測、TMVP、デブロッキングなどのために使用されてよい。いくつかの実施形態において、導出された双方向動き情報、例えば、一方向MVに変換される前の双方向MVは、保持されてよく、次にコーディングされたブロックの動き予測、TMVP、デブロッキングなどのために使用されてよい。いくつかの実施形態において、変換された一方向動きベクトルは、動き精緻化のために使用されてよい。いくつかの実施形態において、導出された双方向動き情報は、動き精緻化及び/又はサンプル精緻化のために、例えば、オプティカルフロー法により、使用されてよい。いくつかの実施形態において、導出された双方向動き情報に従って生成された予測ブロックは、最初に精緻化されてよく、その後に、ただ1つの予測ブロックが、1つのブロックの最終的な予測及び/又は再構成ブロックを導出するために利用されてよい。
いくつかの実施形態において、特定の条件が当てはまる場合に、(双予測された)動きベクトルは、MMVDにおいて基本マージ候補として使用される前に、一方向動きベクトルに変換されてよい。
いくつかの実施形態において、特定の条件が当てはまる(例えば、ブロックの寸法が、上記の例5で指定された条件を満足する)場合に、(双予測された)動きベクトルは、マージリストに挿入される前に、一方向動きベクトルに変換されてよい。
いくつかの実施形態において、変換された一方向動きベクトルは、参照リスト0のみからであってよい。いくつかの実施形態において、現在のスライス/タイルグループ/ピクチャが双予測される場合に、変換された一方向動きベクトルは、参照リスト0又はリスト1からであってよい。いくつかの実施形態において、現在のスライス/タイルグループ/ピクチャが双予測される場合に、参照リスト0及びリスト1からの変換された一方向動きベクトルは、マージリスト又は/及びMMVDベースマージ候補リストにインターリービングされてよい。
いくつかの実施形態において、動き情報を一方向動きベクトルに変換する方法は、参照ピクチャに依存してよい。いくつかの実施形態において、1つのビデオデータユニット(例えば、タイル/タイルグループ)の全ての参照ピクチャが表示順序において過去のピクチャである場合に、リスト1の動き情報が利用されてよい。いくつかの実施形態において、表示順序において、1つのビデオデータユニット(例えば、タイル/タイルグループ)の参照ピクチャの少なくとも1つが過去のピクチャであり、少なくとも1つが未来のピクチャである場合に、リスト0の動き情報が利用されてよい。いくつかの実施形態において、動き情報を一方向動きベクトルに変換する方法は、低遅延チェックフラグに依存してよい。
いくつかの実施形態において、変換プロセスは、動き補償プロセスの直前に呼び出されてよい。いくつかの実施形態において、変換プロセスは、動き候補リスト(例えば、マージリスト)構成プロセスの直後に呼び出されてよい。いくつかの実施形態において、変換プロセスは、MMVDプロセスにおいて追加MVDプロセスを呼び出す前に呼び出されてよい。すなわち、追加MVDプロセスは、双予測ではなく片予測の設計に続く。いくつかの実施形態において、変換プロセスは、PROFプロセスにおいてサンプル精緻化プロセスを呼び出す前に呼び出されてよい。すなわち、サンプル精緻化プロセスは、双予測ではなく片予測の設計に続く。いくつかの実施形態において、変換プロセスは、BIO(別名、BDOF)プロセスを呼び出す前に呼び出されてよい。すなわち、いくつかの場合について、BIOは、片予測に変換されているので無効にされることがある。いくつかの実施形態において、変換プロセスは、DMVRプロセスを呼び出す前に呼び出されてよい。すなわち、いくつかの場合について、DMVRは、片予測に変換されているので無効にされることがある。
例17:いくつかの実施形態において、動き候補リストを生成する方法は、例えば、上記の例5で説明されるように、ブロック寸法に依存してよい。
いくつかの実施形態において、特定のブロック寸法について、空間ブロック及び/又は時間ブロック及び/又はHMVP及び/又は他の種類の動き候補から導出された動き候補、は、片予測されるよう制限されてよい。
いくつかの実施形態において、特定のブロック寸法について、空間ブロック及び/又は時間ブロック及び/又はHMVP及び/又は他の種類の動き候補から導出された1つの動き候補が双予測である場合に、それは最初に、候補リストに加えられる場合に、片予測されるよう変換されてよい。
例18:共有マージリストが許可されるかどうかは、エンコーディングモードに依存してよい。
いくつかの実施形態において、共有マージリストは、レギュラーマージモードによりコーディングされたブロックについて許可されなくてよく、ICBモードによりコーディングされたブロックについて許可されてよい。
いくつかの実施形態において、親共有ノードから分割された1つのブロックがレギュラーマージモードによりコーディングされる場合に、HMVPテーブルの更新は、ブロックをエンコーディング/デコーディングした後に無効にされてよい。
例19:開示されている上記の例では、ルーマブロックのブロックサイズ/幅/高さも、Cb、Cr、又はG/B/Rなどのクロマブロックのブロックサイズ/幅/高さに変更され得る。
<GBiモードのためのラインバッファ低減>
例20:GBi重み付きインデックスが隣接ブロックから引き継がれ得るか又は予測(CABCコンテキスト選択を含む。)され得るかどうかは、現在のブロックの位置に依存する。
いくつかの実施形態において、GBi重み付きインデックスは、現在のブロックと同じコーディングツリーユニット(CTU,別名、最大コーディングユニットLCU)にない隣接ブロックから引き継がれること又は予測されることができない。
いくつかの実施形態において、GBi重み付きインデックスは、現在のブロックと同じCTUライン又はCTU行にない隣接ブロックから引き継がれること又は予測されることができない。
いくつかの実施形態において、GBi重み付きインデックスは、現在のブロックと同じM×N領域にない隣接ブロックから引き継がれること又は予測されることができない。例えば、M=N=64である。この場合に、タイル/スライス/ピクチャは、複数の重なり合わないM×N領域に分割される。
いくつかの実施形態において、GBi重み付きインデックスは、現在のブロックと同じM×N領域ライン又はM×N領域行にない隣接ブロックから引き継がれること又は予測されることができない。例えば、M=N=64である。CTUライン/行及び領域ライン/行は図10に表されている。
いくつかの実施形態において、現在のブロックの左上角(又はその他の位置)が(x,y)であり、隣接ブロックの左上角(又はその他の位置)が(x’,y’)であるとして、それは、次の条件が満足される場合には、隣接ブロックから引き継がれること又は予測されることができない:
(1)x/M!=x’/M。例えば、M=128又は64である。
(2)y/N!=y’/N。例えば、N=128又は64である。
(3)((x/M!=x’/M)&&(y/N!=y’/N))。例えば、M=N=128又はM=N=64である。
(4)((x/M!=x’/M)||(y/N!=y’/N))。例えば、M=N=128又はM=N=64である。
(5)x>>M!=x’>>M。例えば、M=7又は6である。
(6)y>>N!=y’>>N。例えば、N=7又は6である。
(7)((x>>M!=x’>>M)&&(y>>N!=y’>>N))。例えば、M=N=7又はM=N=6である。
(8)((x>>M!=x’>>M)||(y>>N!=y’>>N))。例えば、M=N=7又はM=N=6である。
いくつかの実施形態において、フラグは、GBiがピクチャ/スライス/タイルグループ/タイルにおいて適用可能であるか否かを示すために、PPS又はスライスヘッダ又はタイルグループヘッダ又はタイルにおいて通知される。いくつかの実施形態において、CBiが使用されるかどうか、及びどのようにGBiが使用されるか(例えば、候補重み及び重み値はいくつか)は、ピクチャ/スライス/タイルグループ/タイルについて導出されてよい。いくつかの実施形態において、導出は、QP、時間レイヤ、POC距離、などのような情報に依存してよい。
図10は、CTU(領域)ラインの例を示す。共有CTU(領域)は、1つのCUT(領域)ラインにあり、非共有CTU(領域)は、他のCUT(領域)ラインにある。
<インター-イントラ予測(IIP)の簡単化>
例21:IIPコーディングされたブロックにおけるイントラ予測モードのコーディングは、IIPコーディングされた隣接ブロックのイントラ予測モードとは無関係に行われる。
いくつかの実施形態において、イントラコーディングされたブロックのイントラ予測モードのみが、例えば、MPMリスト構成プロセス中に、IIPコーディングされたブロックのイントラ予測モードのコーディングにおいて使用可能である。
いくつかの実施形態において、IIPコーディングされたブロックにおけるイントラ予測モードは、如何なる隣接ブロックからのモード予測もなしでコーディングされる。
例22:IIPコーディングされたブロックのイントラ予測モードは、イントラコーディングされたブロックのそれよりも、それらが両方とも新しいIIPコーディングされたブロックのイントラ予測モードをコーディングするために使用される場合に、低い優先度を有してよい。
いくつかの実施形態において、IIPコーディングされたブロックのMPMを導出する場合に、IIPコーディングされたブロック及びイントラコーディングされたブロックの両方のイントラ予測モードが利用される。しかし、イントラコーディングされた隣接ブロックからのイントラ予測モードは、IIPコーディングされた隣接ブロックからのそれらより前にMPMに挿入されてよい。
いくつかの実施形態において、イントラコーディングされた隣接ブロックからのイントラ予測モードは、IIPコーディングされた隣接ブロックからのそれらよりも後にMPMに挿入されてよい。
例23:IIPコーディングされたブロックにおけるイントラ予測モードは、イントラコーディングされたブロックのそれを予測するためにも使用され得る。
いくつかの実施形態において、IIPコーディングされたブロックにおけるイントラ予測モードは、通常のイントラコーディングされたブロックについてMPMを導出するために使用され得る。いくつかの実施形態において、IIPコーディングされたブロックにおけるイントラ予測モードは、イントラコーディングされたブロックにおけるイントラ予測モードよりも、それらが通常のイントラコーディングされたブロックについてMPMを導出するために使用される場合に、低い優先度を有してよい。
いくつかの実施形態において、IIPコーディングされたブロックにおけるイントラ予測モードは、次の条件の1つ以上が満足される場合にのみ、通常のイントラコーディングされたブロック又はIIPコーディングされたブロックのイントラ予測モードを予測するためにも使用され得る:
1.2つのブロックが同じCTUラインにある。
2.2つのブロックが同じCTUにある。
3.2つのブロックが同じM×N領域(例えば、M=N=64)にある。
4.2つのブロックが同じM×N領域ライン(例えば、M=N=64)にある。
例24:いくつかの実施形態において、IIPコーディングされたブロックのためのMPM構成プロセスは、通常のイントラコーディングされたブロックのためのそれと同じであるべきである。
同じ実施形態において、6つのMPMが、インター-イントラ予測により、インターコーディングされたブロックに使用される。
いくつかの実施形態において、MPMの一部のみが、IIPコーディングされたブロックに使用される。いくつかの実施形態において、最初の1つが常に使用される。代替的に、更に、MPMフラグ及びMPMインデックスのどちらも通知する必要がない。いくつかの実施形態において、最初の4つのMPMが利用されてよい。代替的に、更に、MPMフラグを通知する必要はないが、MPMインデックスは通知される必要がある。
いくつかの実施形態において、各ブロックは、MPMリストに含まれるイントラ予測モードに従ってMPMリストから1つを選択してよく、例えば、所与のモード(例えば、プレーナー)と比較して最小のインデックスを有するモードを選択する。
いくつかの実施形態において、各ブロックは、MPMリストからモードのサブセットを選択し、そのサブセット内のモードインデックスを通知してよい。
いくつかの実施形態において、イントラMPMモードをコーディングするために使用されるコンテキストは、IIPコーディングされたブロックにおけるイントラモードをコーディングするために再利用される。いくつかの実施形態において、イントラMPMモードをコーディングするために使用される異なるコンテキストは、IIPコーディングされたブロックにおけるイントラモードをコーディングするために用いられる。
例25:いくつかの実施形態において、水平及び垂直方向を除く角度イントラ予測モードについては、等しい重みが、IIPコーディングされたブロックについて生成されたイントラ予測ブロック及びインター予測ブロックに利用される。
例26:いくつかの実施形態において、特定の位置については、ゼロ重みが、IIPコーディングプロセスで適用されてよい。
いくつかの実施形態において、ゼロ重みは、IIPコーディングプロセスで使用されたイントラ予測ブロックに適用されてよい。
いくつかの実施形態において、ゼロ重みは、IIPコーディングプロセスで使用されたインター予測ブロックに適用されてよい。
例27:いくつかの実施形態において、IIPコーディングされたブロックのイントラ予測モードは、現在のブロックのサイズが何であろうとも、MPMの1つとしてしか選択され得ない。
いくつかの実施形態において、MPMフラグは通知されず、現在のブロックのサイズが何であろうとも、1であると推測される。
例28:IIPコーディングされたブロックについては、ルーマ予測クロマモード(LM)モードが、クロマ成分についてイントラ予測を行うために、導出モード(Derived Mode,DM)モードの代わりに使用される。
いくつかの実施形態において、DM及びLMの両方が許可されてよい。
いくつかの実施形態において、複数のイントラ予測モードがクロマ成分について許可されてよい。
いくつかの実施形態において、クロマ成分について複数のモードを許可すべきかどうかは、カラーフォーマットに依存してよい。一例では、4:4:4カラーフォーマットについて、許可されたクロマイントラ予測モードは、ルーマ成分についてのそれと同じであってよい。
例29:インター-イントラ予測は、次のような1つ以上の特定の場合に許可され得ない:
A.w==T1||h==T1、例えば、T=4である。
B.w>T1||h_T1、例えば、T1=64である。
C.(w==T1&&h==T2)||(w==T2&&h==T1)、例えば、T1=4、T2=16である。
例30:インター-イントラ予測は、双予測を使用するブロックについて許可され得ない。
いくつかの実施形態において、IIPコーディングされたブロックの選択されたマージ候補が双予測を使用する場合に、それは片予測マージ候補に変換される。いくつかの実施形態において、参照リスト0からの予測のみが保持され、マージ候補は、参照リスト0を参照する片予測として扱われる。いくつかの実施形態において、参照リスト1からの予測のみが保持され、マージ候補は、参照リスト1を参照する片予測として扱われる。
いくつかの実施形態において、選択されたマージ候補は片予測マージ候補であるべきであるという制限が加えられる。代替的に、IIPコーディングされたブロックの通知されたマージインデックスは、片予測マージ候補のインデックスを示す(すなわち、双予測マージ候補はカウントされない。)。
いくつかの実施形態において、三角予測モードで使用されるマージ候補リスト構成プロセスは、IIPコーディングされたブロックのための動き候補リストを導出するために利用されてよい。
例31:インター-イントラ予測が適用される場合に、いくつかのコーディングツールは許可され得ない。
いくつかの実施形態において、双方向オプティカルフロー(Bi-directional Optical flow,BIO)は、双予測に適用されない。
いくつかの実施形態において、オーバーラップブロック動き補償(Overlapped Block Motion Compensation,OBMC)は適用されない。
いくつかの実施形態において、デコーダ側の動きベクトル導出/精緻化プロセスは許可されない。
例32:インター-イントラ予測で使用されるイントラ予測プロセスは、通常のイントラコーディングされたブロックで使用されるそれとは異なってよい。
いくつかの実施形態において、隣接サンプルは、種々の方法でフィルタリングされてよい。いくつかの実施形態において、隣接サンプルは、インター-イントラ予測で使用されるイントラ予測を構成する前にフィルタリングされない。
いくつかの実施形態において、位置依存のイントラ予測サンプルフィルタリングプロセスは、インター-イントラ予測で使用されるイントラ予測のために構成されない。いくつかの実施形態において、マルチラインイントラ予測は、インター-イントラ予測で許可されない。いくつかの実施形態において、ワイドアングルイントラ予測は、インター-イントラ予測で許可されない。
例33:イントラ及びインター複合予測におけるイントラ及びインター予測値はPIntra及びPInterであり、重み係数は夫々w_intra及びw_interであるとする。位置(x,y)での予測値は、(PIntra(x,y)×w_intra(x,y)+PInter(x,y)×w_inter(x,y)+offset(x,y))>>Nと計算され、このとき、w_inter(x,y)+w_inter(x,y)=2N及びoffset(x,y)=2(N-1)である。一例では、N=3である。
例34:いくつかの実施形態において、通常のイントラコーディングされたブロックで、及びIIPコーディングされたブロックで通知されたMPMフラグは、同じ算術コーディングコンテキストを共有すべきである。
例35:いくつかの実施形態において、MPMは、IIPコーディングされたブロックにおけるイントラ予測モードをコーディングするために必要とされない(ブロック幅及び高さはw及びhであるとする。)。
いくつかの実施形態において、4つのモード{プレーナー,DC,垂直,水平}は、00、01、10及び11と2値化される(00-プレーナー、01-DC、10-垂直、11-水平などの任意のマッピング規則を使用によることができる)。
いくつかの実施形態において、4つのモード{プレーナー,DC,垂直,水平}は、0、10、110及び111と2値化される(0-プレーナー、10-DC、110-垂直、111-水平などの任意のマッピング規則によることができる)。
いくつかの実施形態において、4つのモード{プレーナー,DC,垂直,水平}は、1、01、001及び000と2値化される(1-プレーナー、01-DC、001-垂直、000-水平などの任意のマッピング規則によることができる)。
いくつかの実施形態において、W>N×H(Nは2などの整数である。)が使用され得る場合に、3つのモード{プレーナー,DC,垂直}しか使用され得ない。3つのモードは、1、01及び11と2値化される(1-プレーナー、01-DC、11-垂直などの任意のマッピング規則によることができる)。
いくつかの実施形態において、W>N×H(Nは2などの整数である。)が使用され得る場合に、3つのモード{プレーナー,DC,垂直}しか使用され得ない。3つのモードは、0、10及び00と2値化される(0-プレーナー、10-DC、00-垂直などの任意のマッピング規則によることができる)。
いくつかの実施形態において、H>N×W(Nは2などの整数である。)が使用され得る場合に、3つのモード{プレーナー,DC,水平}しか使用され得ない。3つのモードは、1、01及び11と2値化される(1-プレーナー、01-DC、11-水平などの任意のマッピング規則によることができる)。
いくつかの実施形態において、H>N×W(Nは2などの整数である。)が使用され得る場合に、3つのモード{プレーナー,DC,水平}しか使用され得ない。3つのモードは、0、10及び00と2値化される(0-プレーナー、10-DC、00-水平などの任意のマッピング規則によることができる)。
例36:いくつかの実施形態において、DC及びプレーナーモードのみが、IPコーディングされたブロックにおいて使用される。いくつかの実施形態において、DC又はプレーナーが使用されるかどうかを示すために、1つのフラグが通知される。
例37:いくつかの実施形態において、IIPは、異なる色成分ごとに異なるように構成される。
いくつかの実施形態において、インター-イントラ予測は、クロマ成分(例えば、Cb及びCr)に対して行われない。
いくつかの実施形態において、クロマ成分のイントラ予測モードは、IIPコーディングされたブロックにおけるルーマ成分のそれとは異なる。いくつかの実施形態において、DCモードが常にクロマには使用される。いくつかの実施形態において、プレーナーモードが常にクロマには使用される。いくつかの実施形態において、LMモードが常にクロマには使用される。
いくつかの実施形態において、異なる色成分についてIIPをどのように行うべきかは、カラーフォーマット(例えば、4:2:0又は4:4:4)に依存してよい。
いくつかの実施形態において、異なる色成分についてIIPをどのように行うべきかは、ブロックサイズに依存してよい。例えば、インター-イントラ予測は、現在のブロックの幅又は高さが4以下である場合に、クロマ成分(例えば、Cb及びCr)に対して行われない。
<MV予測問題>
以下の議論では、空間動き予測のために保存されたMVに使用される精度はP1と表され、時間動き予測のために保存されたMVに使用される精度はP2と表される。
例38:P1及びP2は同じであってよく、あるいは、それらは異なってよい。
いくつかの実施形態において、P1は1/16ルーマピクセルであり、P2は1/4ルーマピクセルである。いくつかの実施形態において、P1は1/16ルーマピクセルであり、P2は1/8ルーマピクセルである。いくつかの実施形態において、P1は1/8ルーマピクセルであり、P2は1/4ルーマピクセルである。いくつかの実施形態において、P1は1/8ルーマピクセルであり、P2は1/8ルーマピクセルである。いくつかの実施形態において、P2は1/16ルーマピクセルであり、P1は1/4ルーマピクセルである。いくつかの実施形態において、P2は1/16ルーマピクセルであり、P1は1/8ルーマピクセルである。いくつかの実施形態において、P2は1/8ルーマピクセルであり、P1は1/4ルーマピクセルである。
例39:P1及びP2は固定でなくてよい。いくつかの実施形態において、P1/P2は、異なる標準のプロファイル/レベル/ティアごとに異なってよい。いくつかの実施形態において、P1/P2は、異なる時間レイヤ内のピクチャごとに異なってよい。いくつかの実施形態において、P1/P2は、異なる幅/高さのピクチャごとに異なってよい。いくつかの実施形態において、P1/P2は、エンコーダからデコーダへVPS/SPS/PPS/スライスヘッダ/タイルグループヘッダ/タイル/CTU/CUにおいて通知されてよい。
例40:MV(MVx,MVy)について、MVx及びMVyの精度は異なってよく、Px及びPyと表される。
いくつかの実施形態において、Px/Pyは、異なる標準のプロファイル/レベル/ティアごとに異なってよい。Px/Pyは、異なる時間レイヤ内のピクチャごとに異なってよい。いくつかの実施形態において、Pxは、異なる幅のピクチャごとに異なってよい。いくつかの実施形態において、Pyは、異なる高さのピクチャごとに異なってよい。いくつかの実施形態において、Px/Pyは、エンコーダからデコーダへVPS/SPS/PPS/スライスヘッダ/タイルグループヘッダ/タイル/CTU/CUにおいて通知されてよい。
例41:MV(MVx,MVy)を時間動き予測のためにストレージに置く前に、それは正確な精度に変更されるべきである。
いくつかの実施形態において、P1>=P2の場合に、MVx=Shift(MVx,P1-P2)、MVy=Shift(MVy,P1-P2)である。いくつかの実施形態において、P1>=P2の場合に、MVx=SignShift(MVx、P1-P2)、MVy=SignShfit(MVy,P1-P2)である。いくつかの実施形態においてP1<P2の場合に、MVx=MVx<<(P2-P1)、MVy=MVy<<(P2-P1)である。
例42:MV(MVx,MVy)の精度がPx及びPzであり、MVx又はMVyはNビットを有する整数によって保存されるとする。MV(MVx,MVy)の範囲は、MinX<=MVx<=MaxX及びMinY<=MVy<=MaxYである。
いくつかの実施形態において、MinXはMinYに等しくてよく、あるいは、それはMinYに等しくなくてもよい。いくつかの実施形態において、MaxXは、MaxYに等しくてよく、あるいは、それは、MaxYに等しくなくてもよい。いくつかの実施形態において、{MinX,MaxX}はPxに依存してよい。いくつかの実施形態において、{MinY,MaxY}はPyに依存してよい。いくつかの実施形態において、{MinX、MaxX、MinY、MaxY}はNに依存してよい。いくつかの実施形態において、{MinX,MaxX,MinY,MaxY}は、空間動き予測のために保存されたMV及び時間動き予測のために保存されたMVについて異なってよい。いくつかの実施形態において、{MinX,MaxX,MinY,MaxY}は、異なる標準のプロファイル/レベル/ティアごとに異なってよい。いくつかの実施形態において、{MinX,MaxX,MinY,MaxY}は、異なる時間レイヤ内のピクチャごとに異なってよい。いくつかの実施形態において、{MinX,MaxX,MinY,MaxY}は、異なる幅/高さのピクチャごとに異なってよい。いくつかの実施形態において、{MinX,MaxX,MinY,MaxY}は、エンコーダからデコーダへVPS/SPS/PPS/スライスヘッダ/タイルグループヘッダ/タイル/CTU/CUにおいて通知されてよい。いくつかの実施形態において、{MinX,MaxX}は、異なる幅のピクチャごとに異なってよい。いくつかの実施形態において、{MinY,MaxY}は、異なる高さのピクチャごとに異なってよい。いくつかの実施形態において、MVxは、空間動き予測のためのストレージに置かれる前に[MinX,MaxX]にクリッピングされる。いくつかの実施形態において、MVxは、時間動き予測のためのストレージに置かれる前に[MinX,MaxX]にクリッピングされる。いくつかの実施形態において、MVyは、空間動き予測のためのストレージに置かれる前に[MinY,MaxY]にクリッピングされる。いくつかの実施形態において、MVyは、時間動き予測のためのストレージに置かれる前に[MinY,MaxY]にクリッピングされる。
<アフィンマージモードのためのラインバッファ低減>
例43:隣接ブロックからアフィンマージ候補によって引き継がれたアフィンモデル(導出されたCPMV又はアフィンパラメータ)は常に、6パラメータアフィンモデルである。
いくつかの実施形態において、隣接ブロックが4パラメータアフィンモデルによりコーディングされる場合に、アフィンモデルは依然として、6パラメータアフィンモデルとして引き継がれる。
いくつかの実施形態において、隣接ブロックからの4パラメータアフィンモデルが6パラメータアフィンモデル又は4パラメータアフィンモデルとして引き継がれるかどうかは、現在のブロックの位置に依存してよい。いくつかの実施形態において、隣接ブロックからの4パラメータアフィンモデルは、その隣接ブロックが現在のブロックと同じコーディングツリーユニット(CTU、別名、最大コーディングユニットLCU)にない場合に、6パラメータアフィンモデルとして引き継がれる。いくつかの実施形態において、隣接ブロックからの4パラメータアフィンモデルは、その隣接ブロックが現在のブロックと同じCTUライン又はCTU行にない場合に、6パラメータアフィンモデルとして引き継がれる。いくつかの実施形態において、隣接ブロックからの4パラメータアフィンモデルは、その隣接ブロックが現在のブロックと同じM×N領域にない場合に、6パラメータアフィンモデルとして引き継がれる。例えば、M=N=64である。この場合に、タイル/スライス/ピクチャは、複数の重なり合わないM×N領域に分割される。いくつかの実施形態において、隣接ブロックからの4パラメータアフィンモデルは、その隣接ブロックが現在のブロックと同じM×N領域ライン又はM×N領域行にない場合に、6パラメータアフィンモデルとして引き継がれる。例えば、M=N=64である。CTUライン/行及び領域ライン/行は図10に表されている。
いくつかの実施形態において、現在のブロックの左上角(又はその他の位置)が(x,y)であり、隣接ブロックの左上角(又はその他の位置)が(x’,y’)であるとして、隣接ブロックからの4パラメータアフィンモデルは、隣接ブロックが次の条件の1つ以上を満足する場合に、6パラメータアフィンモデルとして引き継がれる:
(a)x/M!=x’/M。例えば、M=128又は64である。
(b)y/N!=y’/N。例えば、N=128又は64である。
(c)((x/M!=x’/M)&&(y/N!=y’/N))。例えば、M=N=128又はM=N=64である。
(d)((x/M!=x’/M)||(y/N!=y’/N))。例えば、M=N=128又はM=N=64である。
(e)x>>M!=x’>>M。例えば、M=7又は6である。
(f)y>>N!=y’>>N。例えば、N=7又は6である。
(g)((x>>M!=x’>>M)&&(y>>N!=y’>>N))。例えば、M=N=7又はM=N=6である。
(h)((x>>M!=x’>>M)||(y>>N!=y’>>N))。例えば、M=N=7又はM=N=6である。
[5.実施形態]
以下の説明は、開示されている技術が現在のVVC規格のシンタックス構造内でどのように実装され得るかの例を示す。新しい追加は太字(又は下線)で示され、削除はイタリック体で示される。
<実施形態#1(4×4インター予測を無効にし、4×8、8×4、4×16及び16×4ブロックについて双予測を無効にする)>
7.4.7.6 コーディングユニットセマンティクス
pred_mode_flagが0に等しいことは、現在のコーディングユニットがインター予測モードでコーディングされることを指定する。pred_mode_flagが1に等しいことは、現在のコーディングユニットがイントラ予測モードでコーディングされることを指定する。変数CuPredMode[x][y]は、x=x0・・x0+cbWidth-1及びy=y0・・y0+cbHeight-1の場合に、次のように導出される:
- pred_mode_flagが0に等しい場合には、CuPredMode[x][y]は、MODE_INTERに等しくセットされる。
- そうでない(pred_mode_flagが1に等しい)場合には、CuPredMode[x][y]はMODE_INTRAに等しくセットされる。
pred_mode_flagが存在しない場合に、それは、Iタイルグループをデコーディングするときには、又はcbWidthが4に等しくかつcbHeightが4に等しいコーディングユニットをデコーディングするときには、1に等しいと推測され、P若しくはBタイルグループをデコーディングするときには、0に等しいと推測される。
pred_mode_ibc_flagが1に等しいことは、現在のコーディングユニットがIBC予測モードでコーディングされることを指定する。pred_mode_ibc_flagが0に等しいことは、現在のコーディングユニットがIBC予測モードでコーディングされないことを指定する。
pred_mode_ibc_flagが存在しない場合に、それは、Iタイルグループをデコーディングするときには、又はスキップモードでコーディングされた、cbWidthが4に等しくかつcbHeightが4に等しいコーディングユニットをデコーディングするときには、sps_ibc_enabled_flagの値に等しいと推測され、P若しくはBタイルグループをデコーディングするときには、0に等しいと推測される。
pred_mode_ibc_flagが1に等しい場合に、変数CuPredMode[x][y]は、x=x0・・x0+cbWidth-1及びy=y0・・y0+cbHeight-1の場合に、MODE_IBCに等しくセットされる。
inter_pred_idc[x0][y0]は、リスト0、リスト1、又は双予測が表7-9に従って現在のコーディングユニットに使用されるかどうかを指定する。アレイインデックスx0、y0は、ピクチャの左上ルーマサンプルに対する検討中のコーディングブロックの左上ルーマサンプルの位置(x0,y0)を特定する。
inter_pred_idc[x0][y0]が存在しない場合に、それはPRED_L0に等しいと推測される。
8.5.2.1 概要
このプロセスへの入力は:
- 現在のピクチャの左上ルーマサンプルに対する現在のルーマコーディングブロックの左上サンプルのルーマ位置(xCb,yCb)、
- ルーマサンプル内の現在のコーディングブロックの幅を指定する変数cbWidth、
- ルーマサンプル内の現在のコーディングブロックの高さを指定する変数cbHeight
である。
このプロセスの出力は:
- 1/16分数サンプル精度mvL0[0][0]及びmvL1[0][0]でのルーマ動きベクトル、
- 参照インデックスrefIdxL0及びrefIdxL1、
- 予測リスト利用フラグpredFlagL0[0][0]及びpredFlagL1[0][0]、
- 双予測重みインデックスgbiIdx
である。
Xが0又は1であるとして、変数LXを現在のピクチャのRefPicList[X]であるとする。
変数mvL0[0][0]及びmvL1[0][0]と、refIdxL0及びrefIdxL1と、predFlagL0[0][0]及びpredFlagL1[0][0]の導出のために、次が適用される:
-merge_flag[xCb][yCb]が1に等しい場合に、8.5.2.2節で明記されているマージモードのためのルーマ動きベクトルの導出プロセスは、ルーマ位置(xCb,yCb)、変数cbWidth及びcbHeightの入力、並びにルーマ動きベクトルmvL0[0][0]、mvL1[0][0]、参照インデックスrefIdxL0、refIdxL1、予測リスト利用フラグpredFlagL0[0][0]、predFlagL1[0][0]、及び双予測重みインデックスgbiIdxである出力により、呼び出される。
-そうでない場合に、次が適用される:
- 変数predFlagLX[0][0]、mvLX[0][0]及びrefIdxLXにおいて、PRED_LXにおいて並びにシンタックス要素ref_idx_lX及びmvdLXにおいてXが0又は1のどちらか一方によって置換される場合に、次の順序づけられたステップが適用される:
1.変数refIdxLX及びpredFlagLX[0][0]は次のように導出される:
・inter_pred_idc[xCb][yCb]がPRED_LX又はPRED_BIに等しい場合に、
refIdxLX=ref_idx_lX[xCb][yCb] (8-266)
predFlagLX[0][0]=1 (8-267)
・そうでない場合に、変数refIdxLX及びpredFlagLX[0][0]は、
refIdxLX=1 (8-268)
predFlagLX[0][0]=0 (8-269)
によって指定される。
2.変数mvdLXは、次のように導出される:
mvdLX[0]=MvdLX[xCb][yCb][0] (8-270)
mvdLX[1]=mvdLX[xCb][yCb][1] (8-271)
3.predFlagLX[0][0]が1に等しい場合に、8.5.2.8節でのルーマ動きベクトル予測の導出プロセスは、ルーマコーディングブロック位置(xCb,yCb)、入力としてのコーディングブロック幅cbWidth、コーディングブロック高さcbHeight、及び変数refIdxLX、並びにmvpLXである出力により、呼び出される。
4.predFlagLX[0][0]が1に等しい場合に、ルーマ動きベクトルmvLX[0][0]は、次のように導出される:
uLX[0]=(mvpLX[0]+mvdLX[0]+218)%218 (8-272)
mvLX[0][0][0]=(uLX[0]>=217)?(uLX[0]-218):uLX[0] (8-273)
uLX[1]=(mvpLX[1]+mvdLX[1]+218)%218 (8-274)
mvLX[0][0][1]=(uLX[1]>=217)?(uLX[1]-218):uLX[1] (8-275)
注記1-上記のmvLX[0][0][0]及びmvLX[0][0][1]の結果として得られる値は、常に-217以上217-1以下の範囲内にある。
- 双予測重みインデックスgbiIdxは、gbi_idx[xCb][yCbに等しくセットされる。
次の全ての条件が真である場合に、refIdxL1が-1に等しくセットされ、predFlagL1は0に等しくセットされ、gbiIdxは0に等しくセットされる:
- predFlagL0[0][0]は1に等しい。
- predFlagL1[0][0]は1に等しい。
- (cbWidth+cbHeight==8)||(cbWidth+cbHeight==12)||(cbWidth+cbHeight==20)
(“cbWidthは4に等しい”及び“cbHeightは4に等しい”との条件は削除された。)
8.5.2.16節で明記されている履歴に基づく動きベクトル予測子リストの更新プロセスは、ルーマ動きベクトルmvL0[0][0]及びmvL1[0][0]、参照インデックスrefIdxL0及びrefIdxL1、予測リスト利用フラグpredFlagL0[0][0]及びpredFlagL1[0][0]、並びに双予測重みインデックスgbiIdxを用いて呼び出される。
9.5.3.8 inter_pred_idcのための二値化プロセス
このプロセスへの入力は、シンタックス要素inter_pred_idcの二値化に対する要求、現在のルーマコーディングブロックの幅cbWidth及び現在のルーマコーディングブロックの高さcbHeightである。このプロセスの出力は、シンタックス要素の二値化である。シンタックス要素inter_pred_idcの二値化は、表9-9で明確に述べられている。
<実施形態#2(4×4インター予測の無効化)>
7.4.7.6 コーディングユニットセマンティクス
pred_mode_flagが0に等しいことは、現在のコーディングユニットがインター予測モードでコーディングされることを指定する。pred_mode_flagが1に等しいことは、現在のコーディングユニットがイントラ予測モードでコーディングされることを指定する。変数CuPredMode[x][y]は、x=x0・・x0+cbWidth-1及びy=y0・・y0+cbHeight-1の場合に、次のように導出される:
- pred_mode_flagが0に等しい場合には、CuPredMode[x][y]は、MODE_INTERに等しくセットされる。
- そうでない(pred_mode_flagが1に等しい)場合には、CuPredMode[x][y]はMODE_INTRAに等しくセットされる。
pred_mode_flagが存在しない場合に、それは、Iタイルグループをデコーディングするときには、又はcbWidthが4に等しくかつcbHeightが4に等しいコーディングユニットをデコーディングするときには、1に等しいと推測され、P若しくはBタイルグループをデコーディングするときには、0に等しいと推測される。
pred_mode_ibc_flagが1に等しいことは、現在のコーディングユニットがIBC予測モードでコーディングされることを指定する。pred_mode_ibc_flagが0に等しいことは、現在のコーディングユニットがIBC予測モードでコーディングされないことを指定する。
pred_mode_ibc_flagが存在しない場合に、それは、Iタイルグループをデコーディングするときには、又はスキップモードでコーディングされた、cbWidthが4に等しくかつcbHeightが4に等しいコーディングユニットをデコーディングするときには、sps_ibc_enabled_flagの値に等しいと推測され、P若しくはBタイルグループをデコーディングするときには、0に等しいと推測される。
pred_mode_ibc_flagが1に等しい場合に、変数CuPredMode[x][y]は、x=x0・・x0+cbWidth-1及びy=y0・・y0+cbHeight-1の場合に、MODE_IBCに等しくセットされる。
<実施形態#3(4×8、8×4、4×16及び16×4ブロックについての双予測の無効化)>
7.4.7.6 コーディングユニットセマンティクス
inter_pred_idc[x0][y0]は、リスト0、リスト1、又は双予測が表7-9に従って現在のコーディングユニットに使用されるかどうかを指定する。アレイインデックスx0、y0は、ピクチャの左上ルーマサンプルに対する検討中のコーディングブロックの左上ルーマサンプルの位置(x0,y0)を特定する。
inter_pred_idc[x0][y0]が存在しない場合に、それはPRED_L0に等しいと推測される。
8.5.2.1 概要
このプロセスへの入力は:
- 現在のピクチャの左上ルーマサンプルに対する現在のルーマコーディングブロックの左上サンプルのルーマ位置(xCb,yCb)、
- ルーマサンプル内の現在のコーディングブロックの幅を指定する変数cbWidth、
- ルーマサンプル内の現在のコーディングブロックの高さを指定する変数cbHeight
である。
このプロセスの出力は:
- 1/16分数サンプル精度mvL0[0][0]及びmvL1[0][0]でのルーマ動きベクトル、
- 参照インデックスrefIdxL0及びrefIdxL1、
- 予測リスト利用フラグpredFlagL0[0][0]及びpredFlagL1[0][0]、
- 双予測重みインデックスgbiIdx
である。
Xが0又は1であるとして、変数LXを現在のピクチャのRefPicList[X]であるとする。
変数mvL0[0][0]及びmvL1[0][0]と、refIdxL0及びrefIdxL1と、predFlagL0[0][0]及びpredFlagL1[0][0]の導出のために、次が適用される:
-merge_flag[xCb][yCb]が1に等しい場合に、8.5.2.2節で明記されているマージモードのためのルーマ動きベクトルの導出プロセスは、ルーマ位置(xCb,yCb)、変数cbWidth及びcbHeightの入力、並びにルーマ動きベクトルmvL0[0][0]、mvL1[0][0]、参照インデックスrefIdxL0、refIdxL1、予測リスト利用フラグpredFlagL0[0][0]、predFlagL1[0][0]、及び双予測重みインデックスgbiIdxである出力により、呼び出される。
-そうでない場合に、次が適用される:
- 変数predFlagLX[0][0]、mvLX[0][0]及びrefIdxLXにおいて、PRED_LXにおいて並びにシンタックス要素ref_idx_lX及びmvdLXにおいてXが0又は1のどちらか一方によって置換される場合に、次の順序づけられたステップが適用される:
5.変数refIdxLX及びpredFlagLX[0][0]は次のように導出される:
・inter_pred_idc[xCb][yCb]がPRED_LX又はPRED_BIに等しい場合に、
refIdxLX=ref_idx_lX[xCb][yCb] (8-266)
predFlagLX[0][0]=1 (8-267)
・そうでない場合に、変数refIdxLX及びpredFlagLX[0][0]は、
refIdxLX=1 (8-268)
predFlagLX[0][0]=0 (8-269)
によって指定される。
6.変数mvdLXは、次のように導出される:
mvdLX[0]=MvdLX[xCb][yCb][0] (8-270)
mvdLX[1]=mvdLX[xCb][yCb][1] (8-271)
3.predFlagLX[0][0]が1に等しい場合に、8.5.2.8節でのルーマ動きベクトル予測の導出プロセスは、ルーマコーディングブロック位置(xCb,yCb)、入力としてのコーディングブロック幅cbWidth、コーディングブロック高さcbHeight、及び変数refIdxLX、並びにmvpLXである出力により、呼び出される。
8.predFlagLX[0][0]が1に等しい場合に、ルーマ動きベクトルmvLX[0][0]は、次のように導出される:
uLX[0]=(mvpLX[0]+mvdLX[0]+218)%218 (8-272)
mvLX[0][0][0]=(uLX[0]>=217)?(uLX[0]-218):uLX[0] (8-273)
uLX[1]=(mvpLX[1]+mvdLX[1]+218)%218 (8-274)
mvLX[0][0][1]=(uLX[1]>=217)?(uLX[1]-218):uLX[1] (8-275)
注記1-上記のmvLX[0][0][0]及びmvLX[0][0][1]の結果として得られる値は、常に-217以上217-1以下の範囲内にある。
- 双予測重みインデックスgbiIdxは、gbi_idx[xCb][yCbに等しくセットされる。
次の全ての条件が真である場合に、refIdxL1が-1に等しくセットされ、predFlagL1は0に等しくセットされ、gbiIdxは0に等しくセットされる:
- predFlagL0[0][0]は1に等しい。
- predFlagL1[0][0]は1に等しい。
- (cbWidth+cbHeight==8)||(cbWidth+cbHeight==12)||(cbWidth+cbHeight==20)
(“cbWidthは4に等しい”及び“cbHeightは4に等しい”との条件は削除された。)
8.5.2.16節で明記されている履歴に基づく動きベクトル予測子リストの更新プロセスは、ルーマ動きベクトルmvL0[0][0]及びmvL1[0][0]、参照インデックスrefIdxL0及びrefIdxL1、予測リスト利用フラグpredFlagL0[0][0]及びpredFlagL1[0][0]、並びに双予測重みインデックスgbiIdxを用いて呼び出される。
9.5.3.8 inter_pred_idcのための二値化プロセス
このプロセスへの入力は、シンタックス要素inter_pred_idcの二値化に対する要求、現在のルーマコーディングブロックの幅cbWidth及び現在のルーマコーディングブロックの高さcbHeightである。このプロセスの出力は、シンタックス要素の二値化である。シンタックス要素inter_pred_idcの二値化は、表9-9で明確に述べられている。
<実施形態#4(4×4インター予測を無効にし、4×8、8×4ブロックについて双予測を無効にする)>
7.4.7.6 コーディングユニットセマンティクス
pred_mode_flagが0に等しいことは、現在のコーディングユニットがインター予測モードでコーディングされることを指定する。pred_mode_flagが1に等しいことは、現在のコーディングユニットがイントラ予測モードでコーディングされることを指定する。変数CuPredMode[x][y]は、x=x0・・x0+cbWidth-1及びy=y0・・y0+cbHeight-1の場合に、次のように導出される:
- pred_mode_flagが0に等しい場合には、CuPredMode[x][y]は、MODE_INTERに等しくセットされる。
- そうでない(pred_mode_flagが1に等しい)場合には、CuPredMode[x][y]はMODE_INTRAに等しくセットされる。
pred_mode_flagが存在しない場合に、それは、Iタイルグループをデコーディングするときには、又はcbWidthが4に等しくかつcbHeightが4に等しいコーディングユニットをデコーディングするときには、1に等しいと推測され、P若しくはBタイルグループをデコーディングするときには、0に等しいと推測される。
pred_mode_ibc_flagが1に等しいことは、現在のコーディングユニットがIBC予測モードでコーディングされることを指定する。pred_mode_ibc_flagが0に等しいことは、現在のコーディングユニットがIBC予測モードでコーディングされないことを指定する。
pred_mode_ibc_flagが存在しない場合に、それは、Iタイルグループをデコーディングするときには、又はスキップモードでコーディングされた、cbWidthが4に等しくかつcbHeightが4に等しいコーディングユニットをデコーディングするときには、sps_ibc_enabled_flagの値に等しいと推測され、P若しくはBタイルグループをデコーディングするときには、0に等しいと推測される。
pred_mode_ibc_flagが1に等しい場合に、変数CuPredMode[x][y]は、x=x0・・x0+cbWidth-1及びy=y0・・y0+cbHeight-1の場合に、MODE_IBCに等しくセットされる。
inter_pred_idc[x0][y0]は、リスト0、リスト1、又は双予測が表7-9に従って現在のコーディングユニットに使用されるかどうかを指定する。アレイインデックスx0、y0は、ピクチャの左上ルーマサンプルに対する検討中のコーディングブロックの左上ルーマサンプルの位置(x0,y0)を特定する。
inter_pred_idc[x0][y0]が存在しない場合に、それはPRED_L0に等しいと推測される。
8.5.2.1 概要
このプロセスへの入力は:
- 現在のピクチャの左上ルーマサンプルに対する現在のルーマコーディングブロックの左上サンプルのルーマ位置(xCb,yCb)、
- ルーマサンプル内の現在のコーディングブロックの幅を指定する変数cbWidth、
- ルーマサンプル内の現在のコーディングブロックの高さを指定する変数cbHeight
である。
このプロセスの出力は:
- 1/16分数サンプル精度mvL0[0][0]及びmvL1[0][0]でのルーマ動きベクトル、
- 参照インデックスrefIdxL0及びrefIdxL1、
- 予測リスト利用フラグpredFlagL0[0][0]及びpredFlagL1[0][0]、
- 双予測重みインデックスgbiIdx
である。
Xが0又は1であるとして、変数LXを現在のピクチャのRefPicList[X]であるとする。
変数mvL0[0][0]及びmvL1[0][0]と、refIdxL0及びrefIdxL1と、predFlagL0[0][0]及びpredFlagL1[0][0]の導出のために、次が適用される:
-merge_flag[xCb][yCb]が1に等しい場合に、8.5.2.2節で明記されているマージモードのためのルーマ動きベクトルの導出プロセスは、ルーマ位置(xCb,yCb)、変数cbWidth及びcbHeightの入力、並びにルーマ動きベクトルmvL0[0][0]、mvL1[0][0]、参照インデックスrefIdxL0、refIdxL1、予測リスト利用フラグpredFlagL0[0][0]、predFlagL1[0][0]、及び双予測重みインデックスgbiIdxである出力により、呼び出される。
-そうでない場合に、次が適用される:
- 変数predFlagLX[0][0]、mvLX[0][0]及びrefIdxLXにおいて、PRED_LXにおいて並びにシンタックス要素ref_idx_lX及びmvdLXにおいてXが0又は1のどちらか一方によって置換される場合に、次の順序づけられたステップが適用される:
1.変数refIdxLX及びpredFlagLX[0][0]は次のように導出される:
・inter_pred_idc[xCb][yCb]がPRED_LX又はPRED_BIに等しい場合に、
refIdxLX=ref_idx_lX[xCb][yCb] (8-266)
predFlagLX[0][0]=1 (8-267)
・そうでない場合に、変数refIdxLX及びpredFlagLX[0][0]は、
refIdxLX=1 (8-268)
predFlagLX[0][0]=0 (8-269)
によって指定される。
2.変数mvdLXは、次のように導出される:
mvdLX[0]=MvdLX[xCb][yCb][0] (8-270)
mvdLX[1]=mvdLX[xCb][yCb][1] (8-271)
3.predFlagLX[0][0]が1に等しい場合に、8.5.2.8節でのルーマ動きベクトル予測の導出プロセスは、ルーマコーディングブロック位置(xCb,yCb)、入力としてのコーディングブロック幅cbWidth、コーディングブロック高さcbHeight、及び変数refIdxLX、並びにmvpLXである出力により、呼び出される。
4.predFlagLX[0][0]が1に等しい場合に、ルーマ動きベクトルmvLX[0][0]は、次のように導出される:
uLX[0]=(mvpLX[0]+mvdLX[0]+218)%218 (8-272)
mvLX[0][0][0]=(uLX[0]>=217)?(uLX[0]-218):uLX[0] (8-273)
uLX[1]=(mvpLX[1]+mvdLX[1]+218)%218 (8-274)
mvLX[0][0][1]=(uLX[1]>=217)?(uLX[1]-218):uLX[1] (8-275)
注記1-上記のmvLX[0][0][0]及びmvLX[0][0][1]の結果として得られる値は、常に-217以上217-1以下の範囲内にある。
- 双予測重みインデックスgbiIdxは、gbi_idx[xCb][yCbに等しくセットされる。
次の全ての条件が真である場合に、refIdxL1が-1に等しくセットされ、predFlagL1は0に等しくセットされ、gbiIdxは0に等しくセットされる:
- predFlagL0[0][0]は1に等しい。
- predFlagL1[0][0]は1に等しい。
- (cbWidth+cbHeight==8)||(cbWidth+cbHeight==12)
(“cbWidthは4に等しい”及び“cbHeightは4に等しい”との条件は削除された。)
8.5.2.16節で明記されている履歴に基づく動きベクトル予測子リストの更新プロセスは、ルーマ動きベクトルmvL0[0][0]及びmvL1[0][0]、参照インデックスrefIdxL0及びrefIdxL1、予測リスト利用フラグpredFlagL0[0][0]及びpredFlagL1[0][0]、並びに双予測重みインデックスgbiIdxを用いて呼び出される。
9.5.3.8 inter_pred_idcのための二値化プロセス
このプロセスへの入力は、シンタックス要素inter_pred_idcの二値化に対する要求、現在のルーマコーディングブロックの幅cbWidth及び現在のルーマコーディングブロックの高さcbHeightである。このプロセスの出力は、シンタックス要素の二値化である。シンタックス要素inter_pred_idcの二値化は、表9-9で明確に述べられている。
<5.5 実施形態#5(4×4インター予測を無効にし、4×8、8×4ブロックについて双予測を無効にし、レギュラーマージモードについて共有マージリストを無効にする)>
7.4.7.6 コーディングユニットセマンティクス
pred_mode_flagが0に等しいことは、現在のコーディングユニットがインター予測モードでコーディングされることを指定する。pred_mode_flagが1に等しいことは、現在のコーディングユニットがイントラ予測モードでコーディングされることを指定する。変数CuPredMode[x][y]は、x=x0・・x0+cbWidth-1及びy=y0・・y0+cbHeight-1の場合に、次のように導出される:
- pred_mode_flagが0に等しい場合には、CuPredMode[x][y]は、MODE_INTERに等しくセットされる。
- そうでない(pred_mode_flagが1に等しい)場合には、CuPredMode[x][y]はMODE_INTRAに等しくセットされる。
pred_mode_flagが存在しない場合に、それは、Iタイルグループをデコーディングするときには、又はcbWidthが4に等しくかつcbHeightが4に等しいコーディングユニットをデコーディングするときには、1に等しいと推測され、P若しくはBタイルグループをデコーディングするときには、0に等しいと推測される。
pred_mode_ibc_flagが1に等しいことは、現在のコーディングユニットがIBC予測モードでコーディングされることを指定する。pred_mode_ibc_flagが0に等しいことは、現在のコーディングユニットがIBC予測モードでコーディングされないことを指定する。
pred_mode_ibc_flagが存在しない場合に、それは、Iタイルグループをデコーディングするときには、又はスキップモードでコーディングされた、cbWidthが4に等しくかつcbHeightが4に等しいコーディングユニットをデコーディングするときには、sps_ibc_enabled_flagの値に等しいと推測され、P若しくはBタイルグループをデコーディングするときには、0に等しいと推測される。
pred_mode_ibc_flagが1に等しい場合に、変数CuPredMode[x][y]は、x=x0・・x0+cbWidth-1及びy=y0・・y0+cbHeight-1の場合に、MODE_IBCに等しくセットされる。
inter_pred_idc[x0][y0]は、リスト0、リスト1、又は双予測が表7-9に従って現在のコーディングユニットに使用されるかどうかを指定する。アレイインデックスx0、y0は、ピクチャの左上ルーマサンプルに対する検討中のコーディングブロックの左上ルーマサンプルの位置(x0,y0)を特定する。
inter_pred_idc[x0][y0]が存在しない場合に、それはPRED_L0に等しいと推測される。
8.5.2.1 概要
このプロセスへの入力は:
- 現在のピクチャの左上ルーマサンプルに対する現在のルーマコーディングブロックの左上サンプルのルーマ位置(xCb,yCb)、
- ルーマサンプル内の現在のコーディングブロックの幅を指定する変数cbWidth、
- ルーマサンプル内の現在のコーディングブロックの高さを指定する変数cbHeight
である。
このプロセスの出力は:
- 1/16分数サンプル精度mvL0[0][0]及びmvL1[0][0]でのルーマ動きベクトル、
- 参照インデックスrefIdxL0及びrefIdxL1、
- 予測リスト利用フラグpredFlagL0[0][0]及びpredFlagL1[0][0]、
- 双予測重みインデックスgbiIdx
である。
Xが0又は1であるとして、変数LXを現在のピクチャのRefPicList[X]であるとする。
変数mvL0[0][0]及びmvL1[0][0]と、refIdxL0及びrefIdxL1と、predFlagL0[0][0]及びpredFlagL1[0][0]の導出のために、次が適用される:
-merge_flag[xCb][yCb]が1に等しい場合に、8.5.2.2節で明記されているマージモードのためのルーマ動きベクトルの導出プロセスは、ルーマ位置(xCb,yCb)、変数cbWidth及びcbHeightの入力、並びにルーマ動きベクトルmvL0[0][0]、mvL1[0][0]、参照インデックスrefIdxL0、refIdxL1、予測リスト利用フラグpredFlagL0[0][0]、predFlagL1[0][0]、及び双予測重みインデックスgbiIdxである出力により、呼び出される。
-そうでない場合に、次が適用される:
- 変数predFlagLX[0][0]、mvLX[0][0]及びrefIdxLXにおいて、PRED_LXにおいて並びにシンタックス要素ref_idx_lX及びmvdLXにおいてXが0又は1のどちらか一方によって置換される場合に、次の順序づけられたステップが適用される:
5.変数refIdxLX及びpredFlagLX[0][0]は次のように導出される:
・inter_pred_idc[xCb][yCb]がPRED_LX又はPRED_BIに等しい場合に、
refIdxLX=ref_idx_lX[xCb][yCb] (8-266)
predFlagLX[0][0]=1 (8-267)
・そうでない場合に、変数refIdxLX及びpredFlagLX[0][0]は、
refIdxLX=1 (8-268)
predFlagLX[0][0]=0 (8-269)
によって指定される。
6.変数mvdLXは、次のように導出される:
mvdLX[0]=MvdLX[xCb][yCb][0] (8-270)
mvdLX[1]=mvdLX[xCb][yCb][1] (8-271)
7.predFlagLX[0][0]が1に等しい場合に、8.5.2.8節でのルーマ動きベクトル予測の導出プロセスは、ルーマコーディングブロック位置(xCb,yCb)、入力としてのコーディングブロック幅cbWidth、コーディングブロック高さcbHeight、及び変数refIdxLX、並びにmvpLXである出力により、呼び出される。
8.predFlagLX[0][0]が1に等しい場合に、ルーマ動きベクトルmvLX[0][0]は、次のように導出される:
uLX[0]=(mvpLX[0]+mvdLX[0]+218)%218 (8-272)
mvLX[0][0][0]=(uLX[0]>=217)?(uLX[0]-218):uLX[0] (8-273)
uLX[1]=(mvpLX[1]+mvdLX[1]+218)%218 (8-274)
mvLX[0][0][1]=(uLX[1]>=217)?(uLX[1]-218):uLX[1] (8-275)
注記1-上記のmvLX[0][0][0]及びmvLX[0][0][1]の結果として得られる値は、常に-217以上217-1以下の範囲内にある。
- 双予測重みインデックスgbiIdxは、gbi_idx[xCb][yCbに等しくセットされる。
次の全ての条件が真である場合に、refIdxL1が-1に等しくセットされ、predFlagL1は0に等しくセットされ、gbiIdxは0に等しくセットされる:
- predFlagL0[0][0]は1に等しい。
- predFlagL1[0][0]は1に等しい。
- (cbWidth+cbHeight==8)||(cbWidth+cbHeight==12)
(“cbWidthは4に等しい”及び“cbHeightは4に等しい”との条件は削除された。)
8.5.2.16節で明記されている履歴に基づく動きベクトル予測子リストの更新プロセスは、ルーマ動きベクトルmvL0[0][0]及びmvL1[0][0]、参照インデックスrefIdxL0及びrefIdxL1、予測リスト利用フラグpredFlagL0[0][0]及びpredFlagL1[0][0]、並びに双予測重みインデックスgbiIdxを用いて呼び出される。
8.5.2.2 マージモードのためのルーマ動きベクトル導出プロセス
このプロセスは、merge_flag[xCb][yCb]が1に等しい場合にのみ呼び出される。(xCb,yCb)は、現在のピクチャの左上ルーマサンプルに対して現在のルーマコーディングブロックの左上サンプルを特定する。
このプロセスへの入力は:
- 現在のピクチャの左上ルーマサンプルに対する現在のルーマコーディングブロックの左上サンプルのルーマ位置(xCb,yCb)、
- ルーマサンプル内の現在のコーディングブロックの幅を指定する変数cbWidth、
- ルーマサンプル内の現在のコーディングブロックの高さを指定する変数cbHeight
である。
このプロセスの出力は:
- 1/16分数サンプル精度mvL0[0][0]及びmvL1[0][0]でのルーマ動きベクトル、
- 参照インデックスrefIdxL0及びrefIdxL1、
- 予測リスト利用フラグpredFlagL0[0][0]及びpredFlagL1[0][0]、
- 双予測重みインデックスgbiIdx
である。
双予測重みインデックスgbiIdxは0に等しくセットされる。
変数xSmr、ySmr、smrWidth、smrHeight、及びえmrNumHmvpCandは、次の通りに導出される:
8.5.2.6 履歴に基づくマージ候補の導出プロセス
このプロセスへの入力は:
- マージ候補リストmergeCandList、
- 現在のコーディングユニットが共有マージ候補領域内にあるかどうかを指示する変数isInSmr、
- リスト内の利用可能マージ候補の数numCurrMergeCand
である。
このプロセスの出力は:
- 変更後のマージ候補リストmergeCandList、
- リスト内のマージ候補の変更後の数numCurrMergeCand
である。
変数isPrunedA1及びisPrunedB1は両方ともFALSEに等しくセットされる。
アレイsmrHmvpCandList及び変数smrNumHmvpCandは、次のように導出される:
インデックスhMVpIdx=1・・smrNumHmvpCandを有するsmrHmvpCandList[hMvpIdx]内の各候補について、numCurrMergeCandが(MaxNumMergeCand-1)に等しくなるまで、次の順序づけられたステップが繰り返される:
1.変数sameMotionは次のように導出される:
・NがA1又はB1である任意のマージ候補Nについて、次の全ての条件が当てはまる場合に、sameMotion及びisPrunedNは両方ともTRUEに等しくセットされる:
- hMvpIdxが2以下である。
- 候補smrHmvpCandList[smrNumHmvpCand-hMvpIdx]がマージ候補Nに等しい。
- isPrunedNがFALSEに等しい。
・そうでない場合に、sameMotionはFALSEに等しくセットされる。
2.sameMotionがFALSEに等しい場合に、候補smrHmvpCandList[smrNumHmvpCand-hMvpIdx]は、次の通りにマージ候補リストに加えられる:
mergeCandList[numCurrMergeCand++]=
smrHmvpCandList[smrNumHmvpCand-hMvpIdx] (8-355)
9.5.3.8 inter_pred_idcのための二値化プロセス
このプロセスへの入力は、シンタックス要素inter_pred_idcの二値化に対する要求、現在のルーマコーディングブロックの幅cbWidth及び現在のルーマコーディングブロックの高さcbHeightである。このプロセスの出力は、シンタックス要素の二値化である。シンタックス要素inter_pred_idcの二値化は、表9-9で明確に述べられている。
図11は、ビデオ処理装置1100のブロック図である。装置1100は、本明細書で記載される方法の1つ以上を実装するために使用されてよい。装置1100は、スマートフォン、タブレット、コンピュータ、インターネット・オブ・シングス(IoT)レシーバ、などで具現されてよい。装置1100は、1つ以上のプロセッサ1102、1つ以上のメモリ1104、及びビデオ処理ハードウェア1106を含んでよい。プロセッサ1102は、本明細書で記載される1つ以上の方法を実装するよう構成されてよい。メモリ1104は、本明細書で記載される方法及び技術を実装するために使用されるデータ及びコードを記憶するために使用されてよい。ビデオ処理ハードウェア1106は、ハードウェア回路において、本明細書で記載されるいくつかの技術を実装するために使用されてよい。
図12は、ビデオ処理の例示的な方法1200のフローチャートである。方法1200は、アフィンコーディングされる現在のビデオブロックの代表動きベクトルと、現在のビデオブロックのサブブロックの動きベクトルとの間のサイズ制限を決定するステップ(1202)と、そのサイズ制限を使用することによって、現在のビデオブロック又はサブブロックのピクセル値とビットストリーム表現との間の変換を実行するステップ(1204)とを含む。
本明細書では、「ビデオ処理」との用語は、ビデオエンコーディング、ビデオデコーディング、ビデオ圧縮又はビデオ圧縮解除を指し得る。例えば、ビデオ圧縮アルゴリズムは、ビデオのピクセル表現から対応するビットストリーム表現への変換中に適用されてよく、あるいは、その逆も同様である。現在のビデオブロックのビットストリーム表現は、例えば、シンタックスによって定義されるような、ビットストリーム内の異なる場所に拡散されるか又は同一位置にあるビットに対応してよい。例えば、マクロブロックは、変換され及びコーディングされた誤差残余に関して、ビットストリーム内のヘッダ及び他のフィールドにあるビットも用いてエンコーディングされてよい。
明らかなように、開示されている技術は、ビデオ処理の実施複雑性がメモリ要件又はラインバッファサイズ要件の低減によって低減される実施形態を実装するのに有用である。目下開示されているいくつかの技術は、次の箇条書きを用いて記載され得る。
1.ビデオ処理の方法であって、
アフィンコーディングされる現在のビデオブロックの代表動きベクトルと前記現在のビデオブロックのサブブロックの動きベクトルとの間のサイズ制限を決定するステップと、
前記サイズ制限を使用することによって、前記現在のビデオブロック又は前記サブブロックのビットストリーム表現及びピクセル値の間の変換を実行するステップと
を有する方法。
2.前記変換を実行するステップは、前記ピクセル値から前記ビットストリーム表現を生成することを含む、
箇条1に記載の方法。
3.前記変換を実行するステップは、前記ビットストリーム表現から前記ピクセル値を生成することを含む、
箇条1に記載の方法。
4.前記サイズ制限は、MVx>=MV’x-DH0及びMVx<=MV’x+DH1並びにMVy>=MV’y-DV0及びMVy<=MV’y+DV1に従ってサブブロックの動きベクトル(MVx,MVy)の値を制約することを含み、MV’=(MV’x,MV’y)であり、
MV’は、前記代表動きベクトルを表し、DH0、DH1、DV0及びDV1は正の数を表す、
箇条1乃至3のいずれかに記載の方法。
5.前記サイズ制限は、次の:
i.DH0がDH1に等しいか、又はDV0がDV1に等しい、
ii.DH0がDV0に等しいか、又はDH1がDV1に等しい、
iii.DH0及びDH1は異なるか、又はDV0及びDV1は異なる、
iv.DH0、DH1、DV0及びDV1は、ビデオパラメータセットレベル又はシーケンスパラメータセットレベル又はピクチャパラメータセットレベル又はスライスヘッダレベル又はタイルグループヘッダレベル又はタイルレベル又はコーディングツリーユニットレベル又はコーディングユニットレベル又は予測ユニットレベルでビットストリーム表現において通知される、
v.DH0、DH1、DV0及びDV1は、ビデオ処理のモードの関数である、
vi.DH0、DH1、DV0及びDV1は、前記現在のビデオブロックの幅及び高さに依存する、
vii.DH0、DH1、DV0及びDV1は、前記現在のビデオブロックが片予測又は双予測を用いてコーディングされるかどうかに依存する、
viii.DH0、DH1、DV0及びDV1は、前記サブブロックの位置に依存する、
のうちの少なくとも1つを含む、
箇条4に記載の方法。
6.前記代表動きベクトルは、前記現在のビデオブロックの制御点動きベクトルに対応する、
箇条1乃至5のうちいずれかに記載の方法。
7.前記代表動きベクトルは、前記現在のビデオブロックのコーナーサブブロックの動きベクトルに対応する、
箇条1乃至5のうちいずれかに記載の方法。
8.前記サブブロックの動きベクトル及び前記代表動きベクトルに使用される精度は、前記ビットストリーム表現における動きベクトルシグナリング精度に対応する、
箇条1乃至7のうちいずれかに記載の方法。
9.前記サブブロックの動きベクトル及び前記代表動きベクトルに使用される精度は、前記動きベクトルを保存するためのストレージ精度に対応する、
箇条1乃至7のうちいずれかに記載の方法。
10.ビデオ処理の方法であって、
アフィンコーディングされる現在のビデオブロックについて、該現在のビデオブロックの1つ以上のサブブロックを決定するステップであり、各サブブロックは、M及びNが2又は4の倍数であるとして、M×Nピクセルのサイズを有する、前記決定するステップと、
前記サブブロックの動きベクトルをサイズ制限に合わせるステップと、
トリガに基づいて条件付きで、前記サイズ制限を使用することによって、前記現在のビデオブロックのビットストリーム表現及びピクセル値の間の変換を実行するステップと
を有する方法。
11.前記変換を実行するステップは、前記ピクセル値から前記ビットストリーム表現を生成することを含む、
箇条10に記載の方法。
12.前記変換を実行するステップは、前記ビットストリーム表現から前記ピクセル値を生成することを含む、
箇条10に記載の方法。
13.前記サイズ制限は、前記現在のビデオブロックのサブブロック動きベクトルの整数部の間の最大差がKピクセル以下であるよう制限し、Kは整数である、
箇条10乃至12のうちいずれかに記載の方法。
14.方法は、前記現在のビデオブロックが双予測を用いてコーディングされる場合にのみ適用される、
箇条10乃至13のうちいずれかに記載の方法。
15.方法は、前記現在のビデオブロックが片予測を用いてコーディングされる場合にのみ適用される、
箇条10乃至13のうちいずれかに記載の方法。
16.M、N、又はKの値は、前記現在のビデオブロックの片予測又は双予測モードの関数である、
箇条10乃至13のうちいずれかに記載の方法。
17.M、N、又はKの値は、前記現在のビデオブロックの高さ又は幅の関数である、
箇条10乃至13のうちいずれかに記載の方法。
18.前記トリガは、ビデオパラメータセットレベル又はシーケンスパラメータセットレベル又はピクチャパラメータセットレベル又はスライスヘッダレベル又はタイルグループヘッダレベル又はタイルレベル又はコーディングツリーユニットレベル又はコーディングユニットレベル又は予測ユニットレベルで前記ビットストリーム表現に含まれる、
箇条10乃至17のうちいずれかに記載の方法。
19.前記トリガは、M、N、又はKの値を伝える、
箇条18に記載の方法。
20.前記現在のビデオブロックの前記1つ以上のサブブロックは、前記現在のビデオブロックに使用されるアフィンコーディングのタイプに基づいて計算される、
箇条10乃至19のうちいずれかに記載の方法。
21.2つの異なった方法が、片予測及び双予測アフィン予測モードのサブブロックを計算するために使用される、
箇条20に記載の方法。
22.前記現在のビデオブロックが双予測されたアフィンブロックである場合に、異なる参照リストからのサブブロックの幅又は高さは異なる、
箇条21に記載の方法。
23.前記1つ以上のサブブロックは、ルーマ成分に対応する、
箇条20乃至22のうちいずれかに記載の方法。
24.前記1つ以上のサブブロックのうちの1つの幅及び高さは、前記現在のビデオブロックの動きベクトル値と前記1つ以上のサブブロックのうちの当該1つのそれとの間の動きベクトル差を用いて決定される、
箇条10乃至23のうちいずれかに記載の方法。
25.前記計算するステップは、前記ビットストリーム表現で伝えられるピクセル精度に基づく、
箇条20乃至23のうちいずれかに記載の方法。
26.ビデオ処理の方法であって、
現在のビデオブロックがサイズ条件を満足することを決定するステップと、
前記決定に基づいて、前記現在のビデオブロックのための双予測エンコーディングモードを除くことによって、前記現在のビデオブロックのビットストリーム表現及びピクセル値の間の変換を実行するステップと
を有する方法。
27.ビデオ処理の方法であって、
現在のビデオブロックがサイズ条件を満足することを決定するステップと、
前記決定に基づいて、前記現在のビデオブロックのビットストリーム表現及びピクセル値の間の変換を実行するステップと
を有し、
インター予測モードが、前記サイズ条件に従って前記ビットストリーム表現において伝えられる、
方法。
28.ビデオ処理の方法であって、
現在のビデオブロックがサイズ条件を満足することを決定するステップと、
前記決定に基づいて、前記現在のビデオブロックのビットストリーム表現とピクセル値の間の変換を実行するステップと
を有し、
前記変換中のマージ候補リストの生成は、前記サイズ条件に依存する、
方法。
29.ビデオ処理の方法であって、
現在のビデオブロックの子コーディングユニットがサイズ条件を満足することを決定するステップと、
前記決定に基づいて、前記現在のビデオブロックのビットストリーム表現及びピクセル値の間の変換を実行するステップと
を有し、
前記子コーディングユニットを生成するために使用されるコーディングツリー分割プロセスは、前記サイズ条件に依存する、
方法。
30.wが幅であり、hが高さであるとして、前記サイズ条件は、次の
(a)wがT1に等しくかつhがT2に等しく、あるいは、hがT1に等しくかつwがT2に等しい、
(b)wがT1に等しくかつhがT2よりも大きくなく、あるいは、hがT1に等しくかつwがT2よりも大きくない、
(c)wがT1よりも大きくなくかつhがT2よりも大きくなく、あるいは、hがT1よりも大きくなくかつwがT2よりも大きくない、
のうちの1つである、
箇条26乃至29のうちいずれかに記載の方法。
31.T1=8及びT2=8、又はT1=8及びT2=4、又はT1=4及びT2=4、又はT1=4及びT2=16である、
箇条30に記載の方法。
32.前記変換は、前記現在のビデオブロックのピクセル値から前記ビットストリーム表現を生成すること、又は前記ビットストリーム表現から前記現在のビデオブロックのピクセル値を生成することを含む、
箇条26乃至29のうちいずれかに記載の方法。
33.ビデオ処理の方法であって、
現在のビデオブロックのための一般化された双予測(GBi)プロセスの重みインデックスを、前記現在のビデオブロックの位置に基づいて決定するステップと、
前記GBiプロセスを実装するよう前記重みインデックスを用いて前記現在のビデオブロックとそのビットストリーム表現との間の変換を実行するステップと
を有する方法。
34.前記変換は、前記現在のビデオブロックのピクセル値から前記ビットストリーム表現を生成すること、又は前記ビットストリーム表現から前記現在のビデオブロックのピクセル値を生成することを含む、
箇条33に記載の方法。
35.前記決定するステップは、第1の位置にある前記現在のビデオブロックについて、隣接ブロックの他の重みインデックスを引き継ぐこと又は予測することと、第2の位置にある前記現在のビデオブロックについて、前記隣接ブロックから引き継がずに前記GBiを計算することとを含む、
箇条33又は34のいずれかに記載の方法。
36.前記第2の位置は、前記隣接ブロックとは異なるコーディングツリーユニットに位置している前記現在のビデオブロックを有する、
箇条35に記載の方法。
37.前記第2の位置は、前記現在のビデオブロックが前記隣接ブロックとは異なるコーディングツリーユニットライン又は異なるコーディングツリーユニット行にあることに対応する、
箇条35に記載の方法。
38.ビデオ処理の方法であって、
現在のビデオブロックがイントラ-インター予測(IIP)コーディングブロックとしてコーディングされることを決定するステップと、
前記現在のビデオブロックのイントラ予測モード又は最確モード(MPM)を決定する平易化規則を用いて前記現在のビデオブロックとそのビットストリーム表現との間の変換を実行するステップと
を含む方法。
39.前記変換は、前記現在のビデオブロックのピクセル値から前記ビットストリーム表現を生成すること、又は前記ビットストリーム表現から前記現在のビデオブロックのピクセル値を生成することを含む、
箇条38に記載の方法。
40.前記平易化規則は、隣接ビデオブロックの他のイントラ予測コーディングモードから独立しているようにイントラ-インター予測(IIP)コーディングされる現在のビデオブロックのイントラ予測コーディングモードを決定することを定める、
箇条38乃至39のうちいずれかに記載の方法。
41.前記イントラ予測コーディングモードは、隣接ブロックのそれから独立しているコーディングを用いて前記ビットストリーム表現において表される、
箇条38乃至39のうちいずれかに記載の方法。
42.前記平易化規則は、イントラコーディングされたブロックのコーディングモードを優遇する選択を、イントラ予測コーディングされたブロックのそれよりも優先させることを定める、
箇条38乃至40のうちいずれかに記載の方法。
43.前記平易化規則は、IIPコーディングされた隣接ブロックからのイントラ予測モードを挿入する前に、イントラコーディングされた隣接ブロックからのイントラ予測モードを挿入することによって前記MPMを決定することを定める、
箇条38に記載の方法。
44.前記平易化規則は、他の通常のイントラコーディングされたブロックに使用されたのと同じ構成プロセスを、前記MPMを決定するために使用することを定める、
箇条38に記載の方法。
45.ビデオ処理の方法であって、
現在のビデオブロックが平易化基準を満足することを決定するステップと、
前記現在のビデオブロックとビットストリーム表現との間の変換を、前記変換のためのインター-イントラ予測モードの使用を無効にすることによって、又は前記変換に使用される追加のコーディングツールを無効にすることによって実行するステップと
を有する方法。
46.前記変換は、前記現在のビデオブロックのピクセル値から前記ビットストリーム表現を生成すること、又は前記ビットストリーム表現から前記現在のビデオブロックのピクセル値を生成することを含む、
箇条45に記載の方法。
47.前記平易化基準は、T1が整数であるとして、前記現在のビデオブロックの幅又は高さがT1に等しいことを含む、
箇条45乃至46のうちいずれかに記載の方法。
48.前記平易化基準は、T1が整数であるとして、前記現在のビデオブロックの幅又は高さがT1よりも大きいことを含む、
箇条45乃至46のうちいずれかに記載の方法。
49.前記平易化基準は、前記現在のビデオブロックの幅又は高さ幅がT1に等しく、前記現在のビデオブロックの高さがT2に等しいことを含む、
箇条45乃至46のうちいずれかに記載の方法。
50.前記平易化基準は、前記現在のビデオブロックが双予測モードを使用することを定める、
箇条45乃至46のうちいずれかに記載の方法。
51.前記追加のコーディングツールは、双方向オプティカルフロー(BIO)コーディングを含む、
箇条45乃至46のうちいずれかに記載の方法。
52.前記追加のコーディングツールは、オーバーラップブロック動き補償モードを含む、
箇条45乃至46のうちいずれかに記載の方法。
53.ビデオ処理の方法であって、
動きベクトルに基づくエンコーディングプロセスを用いて現在のビデオブロックと該現在のビデオブロックのビットストリーム表現との間の変換を実行するステップを有し、
(a)精度P1は、空間動き予測結果を保存するために使用され、精度P2は、前記変換プロセス中に時間動き予測結果を保存するために使用され、P1及びP2は分数であり、あるいは、
(b)精度Pxは、x動きベクトルを保存するために使用され、精度Pyは、y動きベクトルを保存するために使用され、Px及びPyは分数である、
方法。
54.P1、P2、Px及びPyは、異なる数である、
箇条53に記載の方法。
55.P1は1/16ルーマピクセルであり、P2は1/4ルーマピクセルであり、あるいは、
P1は1/16ルーマピクセルであり、P2は1/8ルーマピクセルであり、あるいは、
P1は1/8ルーマピクセルであり、P2は1/4ルーマピクセルであり、あるいは、
P1は1/8ルーマピクセルであり、P2は1/8ルーマピクセルであり、あるいは、
P2は1/16ルーマピクセルであり、P1は1/4ルーマピクセルであり、あるいは、
P2は1/16ルーマピクセルであり、P1は1/8ルーマピクセルであり、あるいは、
P2は1/8ルーマピクセルであり、P1は1/4ルーマピクセルである、
箇条54に記載の方法。
56.P1及びP2は、前記ビットストリーム表現に含まれる異なる時間レイヤ内の異なるピクチャごとに異なる、
箇条53乃至54に記載の方法。
57.計算された動きベクトルが、前記時間動き予測としての保存前に精度補正プロセスを通じて処理される、
箇条53乃至54に記載の方法。
58.前記保存は、前記x動きベクトル及び前記y動きベクトルをNビット整数として保存することを含み、x動きベクトルの値の範囲は、[MinX,Max]であり、y動きベクトルの値の範囲は、[MinY,MaxY]であり、それらの範囲は、
a.minXがMinYに等しい、
b.MaxXがMaxYに等しい、
c.{MinX,MaxX}がPxに依存する、
d.{MinY,MaxY}がPyに依存する、
e.{MinX,MaxX,MinY,MaxY}はNに依存する、
f.{MinX,MaxX,MinY,MaxY}は、空間動き予測のための保存されたMVと、時間動き予測のために保存された他のMVとについて異なる、
g.{MinX,MaxX,MinY,MaxY}は、異なる時間レイヤ内のピクチャごとに異なる、
h.{MinX,MaxX,MinY,MaxY}は、異なる幅又は高さを有するピクチャごとに異なる、
i.{MinX,MaxX}は、異なる幅を有するピクチャごとに異なる、
j.{MinY,MaxY}は、異なる高さを有するピクチャごとに異なる、
k.MVxは、空間動き予測のための保存の前に[MinX,MaxX]にクリッピングされる、
l.MVxは、時間動き予測のための保存の前に[MinX,MaxX]にクリッピングされる、
m.MVyは、空間動き予測のための保存の前に[MinY,MaxY]にクリッピングされる、
n.MVyは、時間動き予測のための保存の前に[MinY,MaxY]にクリッピングされる、
のうちの1つ以上を満足する、
箇条53乃至54に記載の方法。
59.ビデオ処理の方法であって、
W1、W2、H1、H2、並びにPW及びPHが整数であるとして、(W2+N-1-PW)×(H2+N-1-PH)ブロックをフェッチし、該フェッチされたブロックをピクセルパディングし、該ピクセルパディングされたブロックに対して境界ピクセル繰り返しを実行し、小さいサブブロックのピクセル値を取得することによって、現在のビデオブロックのW2×H2サイズの大きいサブブロック内でW1×H1サイズの前記小さいサブブロックを補間するステップと、
前記小さいサブブロックの前記補間されたピクセル値を用いて前記現在のビデオブロックと該現在のビデオブロックのビットストリーム表現との間の変換を実行するステップと
を有する方法。
60.前記変換は、前記ビットストリーム表現から前記現在のビデオブロックを生成すること、又は前記現在のサブブロックから前記ビットストリーム表現を生成することを含む、
箇条59に記載の方法。
61.W2=H2=8、W1=H1=4及びPW=PH=0である、
箇条59乃至60のうちいずれかに記載の方法。
62.ビデオ処理の方法であって、
W×H寸法の現在のビデオブロック及び該現在のビデオブロックのビットストリーム表現の変換中に、(W+N-1-PW)×(H+N-1-PH)個の参照ピクセルをフェッチし、動き補償動作中に前記フェッチされた参照ピクセルよりも大きい参照ピクセルをパディングすることによって、前記動き補償動作を実行するステップと、
前記動き補償動作の結果を用いて前記現在のビデオブロックと該現在のビデオブロックのビットストリーム表現との間の変換を実行するステップと
を有し、
W、H、N、PW及びPHは整数である、
方法。
63.前記変換は、前記ビットストリーム表現から前記現在のビデオブロックを生成すること、又は前記現在のサブブロックから前記ビットストリーム表現を生成することを含む、
箇条62に記載の方法。
64.前記パディングすることは、前記フェッチされたピクセルの左又は右境界を繰り返すことを含む、
箇条62乃至63のうちいずれかに記載の方法。
65.前記パディングすることは、前記フェッチされたピクセルの上又は下境界を繰り返すことを含む、
箇条62乃至63のうちいずれかに記載の方法。
66.前記パディングすることは、ピクセル値を定数にセットすることを含む、
箇条62乃至63のうちいずれかに記載の方法。
67.前記規則は、他のイントラコーディングされたブロックに使用されたのと同じ算術コーディングコンテキストが前記変換中に使用されることを定める、
箇条38に記載の方法。
68.前記現在のビデオブロックの前記変換は、前記現在のビデオブロックのMPMを使用することを除く、
箇条38に記載の方法。
69.前記平易化規則は、前記IIPコーディングされたブロックである前記現在のビデオブロックの前記ビットストリーム表現に対してDC及びプレーナーモードのみを使用することを定める、
箇条38に記載の方法。
70.前記平易化規則は、ルーマ成分及びクロマ成分について異なったイントラ予測モードを定める、
箇条38に記載の方法。
71.前記MPMのサブセットは、IIPコーディングされる前記現在のビデオブロックに使用される、
箇条44に記載の方法。
72.前記平易化規則は、前記MPMが、MPMリストに含まれるイントラ予測モードに基づいて選択されることを示す、
箇条38に記載の方法。
73.前記平易化規則は、MPMのサブセットがMPMリストから選択されるべきであることと、前記サブセットと関連付けられたモードインデックスを通知することとを示す、
箇条38に記載の方法。
74.イントラMPMモードをコーディングするために使用されるコンテキストは、IIPコーディングされる前記現在のビデオブロックのイントラモードをコーディングするために使用される、
箇条38に記載の方法。
75.等しい重みが、IIPコーディングされたブロックである前記現在のビデオブロックについて生成されるイントラ予測ブロック及びインター予測ブロックに使用される、
箇条44に記載の方法。
76.ゼロ重みが、前記現在のビデオブロックのためのIIPコーディングプロセスにおける位置に使用される、
箇条44に記載の方法。
77.前記ゼロ重みは、前記IIPコーディングプロセスで使用されるイントラ予測ブロックに適用される、
箇条76に記載の方法。
78.前記ゼロ重みは、前記IIPコーディングプロセスで使用されるインター予測ブロックに適用される、
箇条76に記載の方法。
79.ビデオ処理の方法であって、
現在のビデオブロックのサイズに基づいて、該現在のビデオブロックの双予測又は片予測が許可されないことを決定するステップと、
前記決定に基づいて、双予測又は片予測モードを無効にすることによって前記現在のビデオブロックのビットストリーム表現及びピクセル値の間の変換を実行するステップと
を有する方法。例えば、許可されないモードは、現在のビデオブロックをエンコーディング又はデコーディングするために使用されない。変換動作は、ビデオコーディング若しくは圧縮、又はビデオデコーディング若しくは圧縮解除のいずれかを表し得る。
80.前記現在のビデオブロックは4×8であり、前記決定するステップは、双予測が許可されないことを決定することを含む、
箇条79に記載の方法。他の例は、例5で与えられる。
81.前記現在のビデオブロックは4×8又は8×4であり、前記決定するステップは、双予測が許可されないことを決定することを含む、
箇条79に記載の方法。
82.前記現在のビデオブロックは4×Nであり、Nは16以下の整数であり、前記決定するステップは、双予測が許可されないことを決定することを含む、
箇条79に記載の方法。
83.前記現在のビデオブロックのサイズは、前記現在のビデオブロックの色成分又はルーマ成分のサイズに対応する、
箇条26乃至29又は79乃至82のうちいずれかに記載の方法。
84.前記双予測またはか予測モードを無効にすることは、前記現在のビデオブロックの3つ全ての成分に適用される、
箇条83に記載の方法。
85.前記双予測またはか予測モードを無効にすることは、前記現在のビデオブロックのサイズとしてサイズが使用される色成分にのみ適用される、
箇条83に記載の方法。
86.前記変換は、双予測、更には、双予測されるマージ候補を使用することを無効にし、それから、ただ1つの参照リストからのただ1つの動きベクトルを前記現在のビデオブロックに割り当てることによって、実行される、
箇条79乃至85のうちいずれかに記載の方法。
87.前記現在のビデオブロックは4×4であり、前記決定するステップは、双予測及び片予測の両方が許可されないことを決定することを含む、
箇条79に記載の方法。
88.前記現在のビデオブロックはイントラブロックとしてコーディングされる、
箇条87に記載の方法。
89.前記現在のビデオブロックは、整数ピクセル動きベクトルを使用することに制限される、
箇条87に記載の方法。
箇条78乃至89についての更なる例及び実施形態は、例5で説明されている。
90.ビデオ処理の方法であって、
現在のビデオブロックのサイズに基づいて、該ビデオブロックのためのビデオコーディング条件を決定するステップと、
前記ビデオコーディング条件に基づいて、前記現在のビデオブロックと該現在のビデオブロックのビットストリーム表現との間の変換を実行するステップと
を有する方法。
91.前記ビデオコーディング条件は、前記ビットストリーム表現におけるスキップフラグ又はイントラブロックコーディングフラグの選択的なシグナリングを定める、
箇条90に記載の方法。
92.前記ビデオコーディング条件は、前記現在のビデオブロックのための予測モードの選択的なシグナリングを定める、
箇条90又は91に記載の方法。
93.前記ビデオコーディング条件は、前記現在のビデオブロックの三角モードコーディングの選択的なシグナリングを定める、
箇条90乃至92のうちいずれかに記載の方法。
94.前記ビデオコーディング条件は、前記現在のビデオブロックのためのインター予測方向の選択的なシグナリングを定める、
箇条90乃至93のうちいずれかに記載の方法。
95.前記ビデオコーディング条件は、前記現在のビデオブロックのイントラブロックコピーに使用される動きベクトル又はブロックベクトルを選択的に変更することを定める、
箇条90乃至94のうちいずれかに記載の方法。
96.前記ビデオコーディング条件は、前記現在のビデオブロックのピクセルにおける高さに依存する、
箇条90乃至95のうちいずれかに記載の方法。
97.前記ビデオコーディング条件は、前記現在のビデオブロックのピクセルにおける幅に依存する、
箇条90乃至96のうちいずれかに記載の方法。
98.前記ビデオコーディング条件は、前記現在のビデオブロックが正方形形状であるかどうかに依存する、
箇条90乃至95のうちいずれかに記載の方法。
箇条90乃至98の更なる例は、本明細書の「4.実施形態の例」で挙げられている例11乃至16で提供される。
99.箇条1乃至98のうちの1つ以上に記載される方法を実行するよう構成されたプロセッサを有するビデオエンコーダ装置。
100.箇条1乃至98のうちの1つ以上に記載される方法を実行するよう構成されたプロセッサを有するビデオデコーダ装置。
101.プロセッサによって実行される場合に、該プロセッサに、箇条1乃至98のうちのいずれか1つ以上に記載される方法を実施させるコードを記憶しているコンピュータ可読媒体。
図16は、本明細書で開示されている様々な技術が実装され得る例示的なビデオ処理システム1600を示すブロック図である。様々な実施には、システム1600のコンポーネントの一部又は全てが含まれ得る。システム1600は、ビデオコンテンツを受け取る入力部1602を含んでよい。ビデオコンテンツは、生の(raw)又は圧縮されていないフォーマットで受け取られてよく、例えば、8又は10ビットのマルチコンポーネントピクセル値であり、あるいは、圧縮された又はエンコーディングされたフォーマットであってもよい。入力部1602は、ネットワークインターフェース、ペリフェラルバスインターフェース、又はストレージインターフェースに相当し得る。ネットワークインターフェースの例には、Ethernet(登録商標)、受動光ネットワーク(PON)などの有線インターフェース、及びWi-Fi又はセルラーインターフェースなどの無線インターフェースが含まれる。
システム1600は、本明細書で説明されている様々なコーディング又はエンコーディング方法を実装し得るコーディングコンポーネント1604を含んでよい。コーディングコンポーネント1604は、ビデオのコーディングされた表現を生成するよう、入力部1602からコーディングコンポーネント1604の出力部へのビデオの平均ビットレートを低減し得る。従って、コーディング技術は、ビデオ圧縮又はビデオトランスコーディング技術と時々呼ばれる。コーディングコンポーネント1604の出力は、コンポーネント1606によって表されるように、保存されるか、あるいは、接続された通信を介して伝送されてよい。入力部1602で受け取られたビデオの保存又は通信されたビットストリーム(又はコーディングされた)表現は、ピクセル値又は表示インターフェース1610へ送られる表示可能なビデオを生成するコンポーネント1608によって使用されてよい。ユーザが見ることができるビデオをビットストリームから生成するプロセスは、ビデオ圧縮解除と時々呼ばれる。更に、特定のビデオ処理動作が「コーディング」動作又はツールと呼ばれる一方で、そのようなコーディングツール又は動作はエンコーダで使用され、コーディングの結果を入れ替える対応するデコーディングツール又は動作は、デコーダによって実行されることになることが理解されるだろう。
ペリフェラルバスインターフェース又は表示インターフェースの例には、ユニバーサルシリアルバス(USB)又は高精細マルチメディアインターフェース(HDMI(登録商標))又はDisplayport(登録商標)などが含まれ得る。ストレージインターフェースの例には、SATA(Serial Advanced Technology Attachment)、PCI、IDEインターフェース、などがある。本明細書で説明されている技術は、携帯電話機、ラップトップ、スマートフォン、又はデジタルデータ処理及び/又はビデオ表示を実行する能力がある他のデバイスなどの様々な電子デバイスで具現されてよい。
図17は、本開示に係るビデオ処理のための方法1700のフローチャート表現である。方法1700は、動作1702で、アフィンコーディングツールを使用する、ビデオの現在のブロックとビデオのビットストリーム表現との間の変換のために、現在のブロックのサブブロックの第1動きベクトル、及び現在のブロックの代表動きベクトルである第2動きベクトルがサイズ制約に従うことを決定するステップを含む。方法1700は、動作1704で、決定に基づいて変換を実行するステップも含む。
いくつかの実施形態において、サブブロックの第1動きベクトルは、(MVx,MVy)と表され、第2動きベクトルは、(MV’x,MV’y)と表される。サイズ制約は、MVx>=MV’x-DH0、MVx<=MV’x+DH1、MVy>=MV’y-DV0、及びMVy<=MV’y+DV1であることを示し、DH0、DH1、DV0及びDV1は正の数である。いくつかの実施形態において、DH0=DH1である。いくつかの実施形態において、DH0≠DH1である。いくつかの実施形態において、DV0=DV1である。いくつかの実施形態において、DV0≠DV1である。いくつかの実施形態において、DH0=DV0である。いくつかの実施形態において、DH0≠HV0である。いくつかの実施形態において、DH1=DV1である。いくつかの実施形態において、DH1≠DV1である。
いくつかの実施形態において、DH0、DH1、DV0及びDV1のうちの少なくとも1つは、ビデオパラメータセットレベル、シーケンスパラメータセットレベル、ピクチャパラメータセットレベル、スライスヘッダ、タイルグループヘッダ、タイルレベル、コーディングツリーユニットレベル、コーディングユニットレベル、又は予測ユニットレベルでビットストリーム表現において通知される。いくつかの実施形態において、DH0、DH1、DV0及びDV1は、変換の異なるプロファイル、レベル、又はティアごとに異なる。いくつかの実施形態において、DH0、DH1、DV0及びDV1は、現在のブロックの幅又は高さに基づく。いくつかの実施形態において、DH0、DH1、DV0及びDV1は、現在のブロックの予測モードに基づき、予測モードは、片予測モード又は双予測モードである。いくつかの実施形態において、DH0、DH1、DV0及びDV1は、現在のブロック内のサブブロックの位置に基づく。
いくつかの実施形態において、第2動きベクトルは、現在のブロックの制御点動きベクトルを有する。いくつかの実施形態において、第2動きベクトルは、現在のブロックの第2サブブロックの動きベクトルを有する。いくつかの実施形態において、第2サブブロックは、現在のブロックの中心サブブロックを有する。いくつかの実施形態において、第2サブブロックは、現在のブロックのコーナーサブブロックを有する。いくつかの実施形態において、第2動きベクトルは、現在のブロックの中又は外の位置について導出された動きベクトルを有し、その位置は、現在のブロックと同じアフィンモデルを用いてコーディングされる。いくつかの実施形態において、位置は、現在のブロックの中心位置を有する。
いくつかの実施形態において、第1動きベクトルは、サイズ制約を満足するよう調整される。いくつかの実施形態において、ビットストリームは、第1動きベクトルが第2動きベクトルに関してサイズ制約を満足することができない場合に妥当でない。いくつかの実施形態において、第1動きベクトル及び第2動きベクトルは、ビットストリーム表現における動きベクトルシグナリング精度に従って表現される。いくつかの実施形態において、第1動きベクトル及び第2動きベクトルは、動きベクトルを保存するためのストレージ精度に従って表現される。いくつかの実施形態において、第1動きベクトル及び第2動きベクトルは、動きベクトルシグナリング精度又は動きベクトルを保存するためのストレージ精度とは異なる精度に従って表現される。
図18は、本開示に係るビデオ処理の方法1800のフローチャート表現である。方法1800は、動作1802で、ビデオの現在のブロックとビデオのビットストリーム表現との間の変換のために、6つのパラメータを有するアフィンモデルを決定するステップを含む。アフィンモデルは、現在のブロックの隣接ブロックのアフィンコーディング情報から引き継がれる。方法1800は、動作1804で、そのアフィンモデルに基づいて変換を実行するステップを含む。
いくつかの実施形態において、隣接ブロックは、6つのパラメータを有する第2アフィンモデルを用いてコーディングされる。前記アフィンモデルは第2アフィンモデルと同じである。いくつかの実施形態において、隣接ブロックは、4つのパラメータを有する第3アフィンモデルを用いてコーディングされる。いくつかの実施形態において、前記アフィンモデルは、現在のブロックの位置に基づいて決定される。いくつかの実施形態において、前記アフィンモデルは、隣接ブロックが現在のブロックと同じコーディングツリーユニット(CTU)にない場合に、第3アフィンモデルに従って決定される。いくつかの実施形態において、前記アフィンモデルは、隣接ブロックが現在のブロックと同じCTUライン又は同じCTU行にない場合に、第3アフィンモデルに従って決定される。
いくつかの実施形態において、タイル、スライス、又はピクチャは、複数の重なり合わない領域に分けられる。いくつかの実施形態において、前記アフィンモデルは、隣接ブロックが現在のブロックと同じ領域にない場合に、第3アフィンモデルに従って決定される。いくつかの実施形態において、前記アフィンモデルは、隣接ブロックが現在のブロックと同じ領域ライン又は同じ領域行にない場合に、第3アフィンモデルに従って決定される。いくつかの実施形態において、各領域は、64×64のサイズを有する。いくつかの実施形態において、現在のブロックの左上角は、(x,y)と表され、隣接ブロックの左上角は、(x’,y’)と表され、前記アフィンモデルは、x、y、x’及びy’に関する条件が満足される場合に、第3アフィンモデルに従って決定される。いくつかの実施形態において、その条件は、x/M≠x’/Mであることを示し、Mは正の整数である。いくつかの実施形態において、Mは128又は64である。いくつかの実施形態において、条件は、y/N≠y’/Nであることを示し、Nは正の整数である。いくつかの実施形態において、Nは128又は64である。いくつかの実施形態において、条件は、x/M≠x’/Mかつy/N≠y’/Nであることを示し、M及びNは正の整数である。いくつかの実施形態において、M=N=128又はM=N=64である。いくつかの実施形態において、条件は、x>>M≠x’>>Mであることを示し、Mは正の整数である。いくつかの実施形態において、Mは6又は7である。いくつかの実施形態において、条件は、y>>N≠y’>>Nであることを示し、Nは正の整数である。いくつかの実施形態において、Nは6又は7である。いくつかの実施形態において、条件は、x>>M≠x’>>Mかつy>>N≠y’>>Nであることを示し、M及びNは正の整数である。いくつかの実施形態において、M=N=6又はM=N=7である。
図19は、本開示に係るビデオ処理の方法1900のフローチャート表現である。方法1900は、動作1902で、ビデオのブロックとビデオのビットストリーム表現との間の変換のために、双予測コーディング技術がそのブロックに適用可能であるかどうかを、幅W及び高さHを有するそのブロックのサイズに基づいて決定するステップを含み、W及びHは正の整数である。方法1900は、動作1904で、その決定に従って変換を実行するステップを含む。
いくつかの実施形態において、双予測コーディング技術は、W=T1かつH=T2である場合に適用不可能であり、T1及びT2は正の整数である。いくつかの実施形態において、双予測コーディング技術は、W=T2かつH=T1である場合に適用不可能であり、T1及びT2は正の整数である。いくつかの実施形態において、双予測コーディング技術は、W=T1かつH≦T2である場合に適用不可能であり、T1及びT2は正の整数である。いくつかの実施形態において、双予測コーディング技術は、W≦T2かつH=T1の場合に適用不可能であり、T1及びT2は正の整数である。いくつかの実施形態において、T1=4及びT2=16である。いくつかの実施形態において、双予測コーディング技術は、W≦T1かつH≦T2の場合に適用不可能であり、T1及びT2は正の整数である。いくつかの実施形態において、T1=T2=8である。いくつかの実施形態において、T1=8及びT2=4である。いくつかの実施形態において、T1=T2=4である。いくつかの実施形態において、T1=4及びT2=8である。
いくつかの実施形態において、双予測コーディング技術に関する情報を示すインジケータは、双予測コーディング技術が適用可能である場合に、ビットストリームにおいて通知される。いくつかの実施形態において、ブロックに対する双予測コーディング技術に関する情報を示すインジケータは、双予測コーディング技術がそのブロックに適用不可能である場合に、ビットストリームから除かれる。いくつかの実施形態において、双予測コーディング技術は、ブロックのサイズが4×8又は8×4のうちの1つである場合に、適用不可能である。いくつかの実施形態において、双予測コーディング技術は、ブロックサイズが4×N又はN×4である場合に適用不可能であり、Nは正の整数であり、N≦16である。いくつかの実施形態において、ブロックのサイズは、ブロックの第1色成分に対応し、双予測コーディング技術が適用可能であるかどうかは、ブロックの第1色成分及び残りの色成分に対して決定される。いくつかの実施形態において、ブロックサイズは、ブロックの第1色成分に対応し、双予測コーディング技術が適用可能であるかどうかは、第1色成分に対してのみ決定される。いくつかの実施形態において、第1色成分はルーマ成分を含む。
いくつかの実施形態において、方法は、双予測コーディング技術が現在のブロックに適用不可能である場合に、選択されたマージ候補が双予測コーディング技術を用いてコーディングされると決定するときに、第1参照リスト又は第2参照リストからの単一の動きベクトルを割り当てるステップを更に有する。いくつかの実施形態において、方法は、双予測コーディング技術が現在のブロックに適用不可能である場合に、三角予測モードがそのブロックに適用不可能であることを決定するステップを更に有する。いくつかの実施形態において、双予測コーディング技術が適用可能であるかどうかは、予測方向と関連付けられ、予測方向は、片予測コーディング技術と更に関連付けられ、予測方向は、ブロックのサイズに基づいてビットストリームにおいて通知される。いくつかの実施形態において、片予測コーディング技術に関する情報は、(1)W×H<64又は(2)W×H=64である場合にビットストリームにおいて通知され、WはHと等しくない。いくつかの実施形態において、片予測コーディング技術又は双予測コーディング技術に関する情報は、(1)W×H>64又は(2)W×H=64である場合にビットストリームにおいて通知され、WはHに等しい。
いくつかの実施形態において、制限は、双予測コーディング技術も片予測コーディング技術も、ブロックのサイズが4×4である場合にブロックに適用不可能であることを示す。いくつかの実施形態において、制限は、ブロックがアフィンコーディングされる場合に適用可能である。いくつかの実施形態において、制限は、ブロックがアフィンコーディングされない場合に適用可能である。実施形態において、制限は、ブロックがイントラコーディングされる場合に適用可能である。いくつかの実施形態において、制限は、ブロックの動きベクトルが整数精度を有する場合に適用可能でない。
いくつかの実施形態において、ブロックが親ブロックの分割に基づいて生成されることを通知することは、ビットストリームにおいてスキップされる。親ブロックは、(1)四分木分割については8×8、(2)二分木分割について8×4若しくは4×8、又は(3)三分木分割については4×16若しくは16×4、のサイズを有する。いくつかの実施形態において、動きベクトルが整数精度を有することを示すインジケータは、ビットストリームにおいて1にセットされる。いくつかの実施形態において、ブロックの動きベクトルは整数精度に丸められる。
いくつかの実施形態において、双予測コーディング技術は、ブロックに適用可能である。参照ブロックは、(W+N-1-PW)×(H+N-1-PH)のサイズを有し、参照ブロックの境界ピクセルは、補間動作のために(W+N-1)×(H+N-1)のサイズを有する第2ブロックを生成するよう繰り返され、Nは補間フィルタタップを表し、N、PW及びPHは整数である。いくつかの実施形態において、PH=0であり、少なくとも左境界又は右境界のピクセルは、第2ブロックを生成するよう繰り返される。いくつかの実施形態において、PW=0であり、少なくとも上境界又は下境界のピクセルは、第2ブロックを生成するよう繰り返される。いくつかの実施形態において、PW>0及びPH>0であり、第2ブロックは、少なくとも左境界又は右境界のピクセルを繰り返すことによって、続いて、少なくとも上境界又は下境界のピクセルを繰り返すことによって、生成される。いくつかの実施形態において、PW>0及びPH>0であり、第2ブロックは、少なくとも上境界又は下境界のピクセルを繰り返すことによって、続いて、少なくとも左境界又は右境界のピクセルを繰り返すことによって、生成される。いくつかの実施形態において、左境界のピクセルはM1回繰り返され、右境界のピクセルは(PW-M1)回繰り返される。いくつかの実施形態において、上境界のピクセルはM2回繰り返され、下境界のピクセルは(PH-M2)回繰り返される。いくつかの実施形態において、どのように参照ピクセルの境界ピクセルが繰り返されるかは、変換のために一部又は全ての参照ブロックに適用される。いくつかの実施形態において、PW及びPHは、ブロックの異なるコンポーネントごとに異なる。
いくつかの実施形態において、マージ候補リスト構成プロセスは、ブロックのサイズに基づいて実行される。いくつかの実施形態において、マージ候補は、(1)マージ候補が双予測コーディング技術を用いてコーディングされ、(2)双予測がブロックのサイズに従ってそのブロックに適用可能でない場合に、片予測コーディング技術において第1参照リストを参照する片予測候補と見なされる。いくつかの実施形態において、第1参照リストは、片予測コーディング技術の参照リスト0又は参照リスト1を有する。いくつかの実施形態において、マージ候補は、(1)マージ候補が双予測コーディング技術を用いてコーディングされ、(2)双予測がブロックのサイズに従ってそのブロックに適用可能でない場合に、利用不可と見なされる。いくつかの実施形態において、利用不可のマージ候補は、マージ候補リスト構成プロセスにおいてマージ候補リストから除かれる。いくつかの実施形態において、三角予測モードのためのマージ候補リスト構成プロセスは、双予測がブロックのサイズに従ってそのブロックに適用可能でない場合に呼び出される。
図20は、本開示に係るビデオ処理の方法2000のフローチャート表現である。方法2000は、動作2002で、ビデオのブロックとビデオのビットストリーム表現との間の変換のために、コーディングツリー分割プロセスがブロックに適用可能であるかどうかを、コーディングツリー分割プロセスに従ってブロックの子コーディングユニットであるサブブロックのサイズに基づいて決定するステップを含む。サブブロックは幅W及び高さHを有し、W及びHは正の整数である。方法2000は、動作2004で、決定に従って変換を実行するステップも含む。
いくつかの実施形態において、コーディングツリー分割プロセスは、W=T1かつH=T2である場合に適用不可能であり、T1及びT2は正の整数である。いくつかの実施形態において、コーディングツリー分割プロセスは、W=T2かつH=T1である場合に適用不可能であり、T1及びT2は正の整数である。いくつかの実施形態において、コーディングツリー分割プロセスは、W=T1かつH≦T2である場合に適用不可能であり、T1及びT2は正の整数である。いくつかの実施形態において、コーディングツリー分割プロセスは、W≦T2及びH=T1である場合に適用不可能であり、T1及びT2は正の整数である。いくつかの実施形態において、T=4及びT2=16である。いくつかの実施形態において、コーディングツリー分割プロセスは、W≦T1かつH≦T2である場合に適用不可能であり、T1及びT2は正の整数である。いくつかの実施形態において、T1=T2=8である。いくつかの実施形態において、T1=8及びT2=4である。いくつかの実施形態において、T1=T2=4である。いくつかの実施形態において、T1=4である。いくつかの実施形態において、T2=4である。いくつかの実施形態において、コーディングツリー分割プロセスのシグナリングは、コーディングツリー分割プロセスが現在のブロックに適用不可能である場合に、ビットストリームにから削除される。
図21は、本開示に係るビデオ処理の方法2100のフローチャート表現である。は、動作2102で、ビデオの現在のブロックとビデオのビットストリーム表現との間の変換のために、コーディングユニットレベル重み付き双予測(BCW)コーディングモードのインデックスが導出されるかどうかを、現在のブロックの位置に関する規則に基づいて決定するステップを含む。BCWコーディングモードでは、複数の重みを含む重みセットが、現在のブロックの双予測値を生成するために使用される。方法2100は、動作2104で、決定に従って変換を実行するステップも含む。
いくつかの実施形態において、現在のブロックの双予測値は、重みセット内の少なくとも1つの重みが適用される場合に、2つの動きベクトルの非平均加重和として生成される。いくつかの実施形態において、規則は、現在のブロック及び隣接ブロックが異なるコーディングツリーユニット又は最大コーディングユニットに位置している場合には、インデックスが隣接ブロックに従って導出されないことを定める。いくつかの実施形態において、規則は、現在のブロック及び隣接ブロックがコーディングツリーユニット内の異なるライン又は行に位置する場合には、インデックスが隣接ブロックに従って導出されないことを定める。いくつかの実施形態において、規則は、現在のブロック及び隣接ブロックがビデオのタイル、スライス、又はピクチャの異なった重なり合わない領域に位置している場合には、インデックスが隣接ブロックに従って導出されないことを定める。いくつかの実施形態において、規則は、現在のブロック及び隣接ブロックがビデオのタイル、スライス、又はピクチャの重なり合わない領域の異なる行に位置する場合には、インデックスが隣接ブロックに従って導出されないことを定める。いくつかの実施形態において、各領域は64×64のサイズを有する。
いくつかの実施形態において、現在のブロックの上角は(x,y)と表され、隣接ブロックの上角は(x’,y’)と表される。規則は、(x,y)及び(x’,y’)が条件を満足する場合には、インデックスが隣接ブロックに従って導出されないことを定める。いくつかの実施形態において、条件は、x/M≠x’/Mであることを示し、Mは正の整数である。いくつかの実施形態において、Mは128又は64である。いくつかの実施形態において、条件は、y/N≠y’/Nであることを示し、Nは正の整数である。いくつかの実施形態において、Nは128又は64である。いくつかの実施形態において、条件は、(x/M≠x’/M)かつ(y/N≠y’/N)であることを示し、M及びNは正の整数である。いくつかの実施形態において、M=N=128又はM=N=64である。いくつかの実施形態において、条件は、x>>M≠x’>>Mであることを示し、Mは正の整数である。いくつかの実施形態において、Mは6又は7である。いくつかの実施形態において、条件は、y>>N≠y’>>Nであることを示し、Nは正の整数である。いくつかの実施形態において、Nは6又は7である。いくつかの実施形態において、条件は、(x>>M≠x’>>M)かつ(y>>N≠y’>>N)であることを示し、M及びNは正の整数である。いくつかの実施形態において、M=N=6又はM=N=7である。
いくつかの実施形態において、BCWコーディングモードがピクチャ、スライス、タイルグループ、又はタイルに適用可能であるかどうかは、ビットストリーム内のピクチャパラメータセット、スライスヘッダ、タイルグループヘッダ、又はタイルにおいて夫々通知される。いくつかの実施形態において、BCWコーディングモードがピクチャ、スライス、タイルグループ、又はタイルに適用可能であるかどうかは、ピクチャ、スライス、タイルグループ、又はタイルと関連付けられた情報に基づいて導出される。いくつかの実施形態において、情報は、少なくとも量子化パラメータ(QP)、時間レイヤ、又はピクチャ・オーダー・カウント(POC)距離を有する。
図22は、本開示に係るビデオ処理の方法2200のフローチャート表現である。方法2200は、動作2202で、インター及びイントラ複合予測(Combined Inter and Intra Prediction,CIIP)コーディング技術を用いてコーディングされたビデオの現在のブロックとビデオのビットストリーム表現との間の変換のために、隣接ブロックのイントラ予測モードから独立して現在のブロックのイントラ予測モードを決定するステップを含む。CIIPコーディング技術は、現在のブロックの最終的な予測値を導出するよう中間インター予測値及び中間イントラ予測値を使用する。方法2200は、動作2204で、決定に基づいて変換を実行するステップも含む。
いくつかの実施形態において、現在のブロックのイントラ予測モードは、如何なる隣接ブロックのイントラ予測モードも参照せずに決定される。いくつかの実施形態において、隣接ブロックは、CIIPコーディング技術を用いてコーディングされる。いくつかの実施形態において、現在のブロックのイントラ予測は、イントラ予測コーディング技術を用いてコーディングされる第2隣接ブロックのイントラ予測モードに基づいて決定される。いくつかの実施形態において、第2イントラ予測モードに従って現在のブロックのイントラ予測モードを決定すべきかどうかは、第1ブロックとしての現在のブロックと第2ブロックとしての第2隣接ブロックとの間の関係を定める条件が満足されるかどうかに基づく。いくつかの実施形態において、決定は、MPMモードのリストを導出するための現在のブロックの最確モード(MPM)構成プロセスの部分である。
図23は、本開示に係るビデオ処理の方法2300のフローチャート表現である。方法2300は、動作2302で、インター及びイントラ複合予測(CIIP)コーディング技術を用いてコーディングされたビデオの現在のブロックとビデオのビットストリーム表現との間の変換のために、第1隣接ブロックの第1イントラ予測モード及び第2隣接ブロックの第2イントラ予測モードに従って前記現在のブロックのイントラ予測モードを決定するステップを含む。第1隣接ブロックは、イントラ予測コーディング技術を用いてコーディングされ、第2隣接ブロックは、CIIPコーディング技術を用いてコーディングされる。第1イントラ予測モードは、第2イントラ予測モードとは異なった優先度を与えられている。CIIPコーディング技術は、現在のブロックの最終的な予測値を導出するよう中間インター予測値及び中間イントラ予測値を使用する。方法2300は、動作2304で、決定に基づいて変換を実行するステップも含む。
いくつかの実施形態において、前記決定するステップは、MPMモードのリストを導出するための現在のブロックの最確モード(MPM)構成プロセスの部分である。いくつかの実施形態において、第1イントラ予測モードは、MPM候補リストにおいて、第2イントラ予測モードより前に位置する。いくつかの実施形態において、第1イントラ予測モードは、MPM候補リストにおいて、第2イントラ予測モードより後に位置する。いくつかの実施形態において、イントラ予測モードのコーディングは、現在のブロックの最確モード(MPM)構成プロセスをバイパスする。いくつかの実施形態において、方法は、現在のブロックのイントラ予測モードに従って、後続のブロックのイントラ予測モードを決定するステップも含む。ここで、前記後続のブロックは、イントラ予測コーディング技術を用いてコーディングされ、現在のブロックは、CIIPコーディング技術を用いてコーディングされる。いくつかの実施形態において、前記決定するステップは、前記後続のブロックの最確モード(MPM)構成プロセスの部分である。いくつかの実施形態において、後続のブロックのMPM構成プロセスでは、現在のブロックのイントラ予測モードは、イントラ予測コーディング技術を用いてコーディングされた他の隣接ブロックのイントラ予測モードよりも低い優先度を与えられる。いくつかの実施形態において、現在のブロックのイントラ予測モードに従って後続のブロックのイントラ予測モードを決定すべきかどうかは、第1ブロックとしての後続のブロックと第2ブロックとしての現在のブロックとの間の関係を定める条件が満足されるかどうかに基づく。いくつかの実施形態において、条件は、(1)第1ブロック及び第2ブロックがコーディングツリーユニットの同じラインに位置している、(2)第1ブロック及び第2ブロックが同じCTUに位置している、(3)第1ブロック及び第2ブロックが同じ領域に位置している、又は(4)第1ブロック及び第2ブロックが領域の同じラインにある、のうちの少なくとも1つを有する。いくつかの実施形態において、領域の幅は、領域の高さと同じである。いくつかの実施形態において、領域は64×64のサイズを有する。
いくつかの実施形態において、通常のイントラコーディング技術のための最確モード(MPM)のリストのサブセットのみが、現在のブロックに使用される。いくつかの実施形態において、サブセットは、通常のイントラコーディング技術のためのMPMモードのリスト内の単一のMPMモードを有する。いくつかの実施形態において、単一のMPMモードは、リスト内の最初のMPMモードである。いくつかの実施形態において、単一のMPMモードを示すインデックスは、ビットストリームにおいて省略される。いくつかの実施形態において、サブセットは、MPMモードのリスト内の最初の4つのMPMモードを有する。いくつかの実施形態において、サブセット内のMPMモードを示すインデックスはビットストリームにおいて通知される。いくつかの実施形態において、イントラコーディングされたブロックをコーディングするためのコーディングコンテキストは、現在のブロックをコーディングするために再利用される。いくつかの実施形態において、イントラコーディングされたブロックのための第1MPMフラグ及び現在のブロックのための第2MPMフラグは、ビットストリームにおいて同じコーディングコンテキストを共有する。いくつかの実施形態において、現在のブロックのイントラ予測モードは、現在のブロックのサイズにかかわらずMPMモードのリストから選択される。いくつかの実施形態において、MPM構成プロセスは、有効であることをデフォルトにされ、MPM構成プロセスを示すフラグはビットストリームにおいて省略される。いくつかの実施形態において、MPMリスト構成プロセスは、現在のブロックに対しては不要である。
いくつかの実施形態において、ルーマ予測クロマモードが、現在のブロックのクロマ成分を処理するために使用される。いくつかの実施形態において、導出モードが、現在のブロックのクロマ成分を処理するために使用される。いくつかの実施形態において、複数のイントラ予測モードが、現在のブロックのクロマ成分を処理するために使用される。いくつかの実施形態において、複数のイントラ予測モードは、クロマ成分のカラーフォーマットに基づいて使用される。いくつかの実施形態において、カラーフォーマットが4:4:4である場合に、複数のイントラ予測モードは、現在のブロックのルーマ成分のためのイントラ予測モードと同じである。いくつかの実施形態において、4つのイントラ予測モードの夫々が1つ以上のビットを用いてコーディングされ、それらの4つのイントラ予測モードは、プレーナーモード、DCモード、垂直モード、及び水平モードを含む。いくつかの実施形態において、4つのイントラ予測モードは、00、01、10及び11を用いてコーディングされる。いくつかの実施形態において、4つのイントラ予測モードは、0、
10、110、111を用いてコーディングされる。いくつかの実施形態において、4つのイントラ予測モードは、1、01、001、000を用いてコーディングされる。いくつかの実施形態において、現在のブロックの幅W及び高さHが条件を満足する場合に、4つのイントラ予測モードのサブセットのみが使用のために利用可能である。いくつかの実施形態において、サブセットは、W>N×Nである場合に、プレーナーモード、DCモード、及び垂直モードを有し、Nは整数である。いくつかの実施形態において、プレーナーモード、DCモード、及び垂直モードは、1、01、及び11を用いてコーディングされる。いくつかの実施形態において、プレーナーモード、DCモード、及び垂直モードは、0、10、及び00を用いてコーディングされる。いくつかの実施形態において、サブセットは、H>N×Wである場合に、プレーナーモード、DCモード、及び水平モードを有し、Nは整数である。いくつかの実施形態において、プレーナーモード、DCモード、及び水平モードは、1、01、及び11を用いてコーディングされる。いくつかの実施形態において、プレーナーモード、DCモード、及び水平モードは、0、10、及び00を用いてコーディングされる。いくつかの実施形態において、N=2である。いくつかの実施形態において、DCモード及びプレーナーモードのみが現在のブロックに使用される。いくつかの実施形態において、DCモード又はプレーナーモードを示すインジケータは、ビットストリームにおいて通知される。
図24は、本開示に係るビデオ処理の方法2400のフローチャート表現である。方法2400は、動作2402で、ビデオの現在のブロックとビデオのビットストリーム表現との間の変換のために、インター及びイントラ複合予測(CIIP)プロセスが現在のブロックの色成分に適用可能であるかどうかを、現在のブロックのサイズに基づいて決定するステップを含む。CIIPコーディング技術は、現在のブロックの最終的な予測値を導出するよう中間インター予測値及び中間イントラ予測値を使用する。方法2400は、動作2404で、決定に基づいて変換を実行するステップも含む。
いくつかの実施形態において、色成分は、クロマ成分を有し、CIIPプロセスは、現在のブロックの幅が4よりも小さい場合に、クロマ成分に対して実行されない。いくつかの実施形態において、色成分は、クロマ成分を有し、CIIPプロセスは、現在のブロックの高さが4よりも小さい場合に、クロマ成分に対して実行されない。いくつかの実施形態において、現在のブロックのクロマ成分のためのイントラ予測モードは、現在のブロックのルーマ成分のためのイントラ予測モードとは異なる。いくつかの実施形態において、クロマ成分は、DCモード、プレーナーモード、又はルーマ予測クロマモード、のうちの1つを使用する。いくつかの実施形態において、クロマ成分のためのイントラ予測モードは、クロマ成分のカラーフォーマットに基づいて決定される。いくつかの実施形態において、カラーフォーマットは4:2:0又は4:4:4を有する。
図25は、本開示に係るビデオ処理の方法2500のフローチャート表現である。方法2500は、動作2502で、ビデオの現在のブロックとビデオのビットストリーム表現との間の変換のために、インター及びイントラ複合予測(CIIP)コーディング技術が現在のブロックに適用されるべきであるかどうかを、現在のブロックの特性に基づいて決定するステップを含む。CIIPコーディング技術は、現在のブロックの最終的な予測値を導出するよう中間インター予測値及び中間イントラ予測値を使用する。方法2500は、動作2504で、決定に基づいて変換を実行するステップも含む。
いくつかの実施形態において、特性は、現在のブロックのサイズが幅W及び高さHであることを有し、W及びHは整数であり、インター-イントラ予測コーディング技術は、ブロックサイズが条件を満足する場合に、現在のブロックに対して無効にされる。いくつかの実施形態において、条件は、WがT1に等しいことを示し、T1は整数である。いくつかの実施形態において、条件は、HがT1に等しいことを示し、T1は整数である。いくつかの実施形態において、T1=4である。いくつかの実施形態において、T1=2である。いくつかの実施形態において、条件は、WがT1よりも大きいか、又はHがT1よりも大きいことを示し、T1は整数である。いくつかの実施形態において、T1=64又は128である。いくつかの実施形態において、条件は、WがT1に等しく且つHがT2に等しいことを示し、T1及びT2は整数である。いくつかの実施形態において、条件は、WがT2に等しく且つHがT1に等しいことを示し、T1及びT2は整数である。いくつかの実施形態において、T1=4及びT2=16である。
いくつかの実施形態において、特性は、現在のブロックに適用されているコーディング技術を有し、CIIPコーディング技術は、前記コーディング技術が条件を満足する場合に、現在のブロックに対して無効にされる。いくつかの実施形態において、条件は、コーディング技術が双予測コーディング技術であることを示す。いくつかの実施形態において、双予測コーディングされたマージ候補は、インター-イントラ予測コーディング技術が現在のブロックに適用されることを可能にするために、片予測コーディングされたマージ候補に変換される。いくつかの実施形態において、変換されたマージ候補は、片予測コーディング技術の参照リスト0と関連付けられる。いくつかの実施形態において、変換されたマージ候補は、片予測コーディング技術の参照リスト1と関連付けられる。いくつかの実施形態において、ブロックの片予測コーディングされたマージ候補のみが、変換のために選択される。いくつかの実施形態において、双予測コーディングされたマージ候補は、ビットストリーム表現においてマージ候補を示すマージインデックスを決定するために捨てられる。いくつかの実施形態において、インター-イントラ予測コーディング技術は、決定に従って現在のブロックに適用される。いくつかの実施形態において、三角予測モードのためのマージ候補リスト構成プロセスは、現在のブロックのための動き候補リストを導出するために使用される。
図26は、本開示に係るビデオ処理の方法2600のフローチャート表現である。方法2600は、動作2602で、ビデオの現在のブロックとビデオのビットストリーム表現との間の変換のために、コーディングツールが現在のブロックのために無効にされるべきであるかどうかを、現在のブロックがインター及びイントラ複合予測(CIIP)コーディング技術によりコーディングされるかどうかに基づいて決定するステップを含む。CIIPコーディング技術は、現在のブロックの最終的な予測値を導出するために中間インター予測値及び中間イントラ予測値を使用する。コーディングツールは、双方向オプティカルフロー(BDOF)、オーバーラップブロック動き補償(OBMC)、又はデコーダ側動きベクトル精緻化プロセス(DMVR)、のうちの少なくとも1つを有する。方法2500は、動作2504で、決定に基づいて変換を実行するステップも含む。
いくつかの実施形態において、現在のブロックのためのイントラ予測プロセスは、イントラ予測コーディング技術を用いてコーディングされる第2ブロックのためのイントラ予測プロセスとは異なる。いくつかの実施形態において、現在のブロックのためのイントラ予測プロセスでは、隣接サンプルのフィルタリングはスキップされる。いくつかの実施形態において、現在のブロックのためのイントラ予測プロセスでは、位置に依存したイントラ予測サンプルフィルタリングは無効にされる。いくつかの実施形態において、現在のブロックのためのイントラ予測プロセスでは、マルチラインイントラ予測プロセスは無効にされる。いくつかの実施形態において、現在のブロックのためのイントラ予測プロセスでは、ワイドアングルイントラ予測プロセスは無効にされる。
図27は、本開示に係るビデオ処理の方法2700のフローチャート表現である。方法2700は、動作2702で、ビデオのブロックとビデオのビットストリーム表現との間の変換のために、空間動き予測のための動きベクトルに使用される第1予測P1と、時間動き予測のための動きベクトルに使用される第2予測P2とを決定するステップを含む。P1及び/又はP2は分数であり、P1及びP2は互いに異なっている。方法2700は、動作2704で、決定に基づいて変換を実行するステップも含む。
いくつかの実施形態において、第1精度は1/16ルーマピクセルであり、第2精度は1/4ルーマピクセルである。いくつかの実施形態において、第1精度は1/16ルーマピクセルであり、第2精度は1/8ルーマピクセルである。いくつかの実施形態において、第1精度は1/8ルーマピクセルであり、第2精度は1/4ルーマピクセルである。いくつかの実施形態において、第1精度は1/16ルーマピクセルであり、第2精度は1/4ルーマピクセルである。いくつかの実施形態において、第1精度は1/16ルーマピクセルであり、第2精度は1/8ルーマピクセルである。いくつかの実施形態において、第1精度は1/8ルーマピクセルであり、第2精度は1/4ルーマピクセルである。いくつかの実施形態において、第1又は第2精度のうちの少なくとも一方は、1/16ルーマピクセルよりも低い。
いくつかの実施形態において、第1又は第2精度のうちの少なくとも一方は可変である。いくつかの実施形態において、第1精度又は第2精度は、ビデオのプロファイル、レベル、又はティアに従って可変である。いくつかの実施形態において、第1精度又は第2精度は、ビデオ内のピクチャの時間レイヤに従って可変である。いくつかの実施形態において、第1精度又は第2精度は、ビデオ内のピクチャのサイズに従って可変である。
いくつかの実施形態において、第1又は第2精度のうちの少なくとも一方は、ビットストリーム表現においてビデオパラメータセット、シーケンスパラメータセット、ピクチャパラメータセット、スライスヘッダ、タイルグループヘッダ、タイル、コーディングツリーユニット、又はコーディングユニットで通知される。いくつかの実施形態において、動きベクトルは(MVx,MVy)と表され、動きベクトルの精度は(Px,Py)と表され、PxはMVxと関連付けられ、PyはMVyと関連付けられる。いくつかの実施形態において、Px及びPyは、ビデオのプロファイル、レベル、又はティアに従って可変である。いくつかの実施形態において、Px及びPyは、ビデオ内のピクチャの時間レイヤに従って可変である。いくつかの実施形態において、Px及びPyは、ビデオ内のピクチャの幅に従って可変である。いくつかの実施形態において、Px及びPyは、ビットストリーム表現においてビデオパラメータセット、シーケンスパラメータセット、ピクチャパラメータセット、スライスヘッダ、タイルグループヘッダ、タイル、コーディングツリーユニット、又はコーディングユニットで通知される。いくつかの実施形態において、デコーディングされた動きベクトルは(MVx,MVy)と表され、動きベクトルは、その動きベクトルが時間動き予測動きベクトルとして保存される前に、第2制度に従って調整される。いくつかの実施形態において、時間動き予測動きベクトルは、(Shift(Mvx,P1-P2),Shift(MVy,P1-P2))であるよう調整され、P1及びP2は整数であり、P1≧P2であり、Shiftは、符号なしの数に対する右シフト演算を表す。いくつかの実施形態において、時間動き予測動きベクトルは、(SignShift(MVx,P1-P2),SignShift(MVy,P1-P2))であるよう調整され、P1及びP2は整数であり、P≧P2であり、SignShfitは、符号ありの数に対する右シフト演算を表す。いくつかの実施形態において、時間動き予測動きベクトルは、(MVx<<(P1-P2),MVy<<(P1-P2))であるよう調整され、P1及びP2は整数であり、P1≧P2であり、<<は、符号あり又は符号なしの数に対する左シフト演算を表す。
図28は、本開示に係るビデオ処理の方法2800のフローチャート表現である。方法2800は、動作2802で、ビデオのブロックとビデオのビットストリーム表現との間の変換のために、予測(Px,Py)により動きベクトル(Mvx,MVy)を決定するステップを含む。Pxは、MVxと関連付けられ、Pyは、MVyと関連付けられる。MVx及びMVyは、N個のビットを用いて表され、MinX≦MVx≦MaxX及びMinY≦MVy≦MaxYであり、MinX、MaxX、MinY、及びMaxYは実数である。方法2800は、動作2804で、決定に基づいて変換を実行するステップも含む。
いくつかの実施形態において、MinX=MinYである。いくつかの実施形態において、MinX≠MinYである。いくつかの実施形態において、MaxX=MaxYである、いくつかの実施形態において、MaxX≠MaxYである。
いくつかの実施形態において、MinX又はMaxXのうちの少なくとも一方はPxに基づく。いくつかの実施形態において、動きベクトルは、(Px,Py)と表される精度を有し、MinY又はMaxYのうちの少なくとも一方はPyに基づく。いくつかの実施形態において、MinX、MaxX、MinY、又はMaxYのうちの少なくとも1つは、Nに基づく。いくつかの実施形態において、空間動き予測動きベクトルのためのMinX、MaxX、MinY、又はMaxYのうちの少なくとも1つは、時間動き予測動きベクトルのための対応するMinX、MaxX、MinY、又はMaxYとは異なる。いくつかの実施形態において、MinX、MaxX、MinY、又はMaxYのうちの少なくとも1つは、ビデオのプロファイル、レベル、又はティアに従って可変である。いくつかの実施形態において、MinX、MaxX、MinY、又はMaxYのうちの少なくとも1つは、ビデオ内のピクチャの時間レイヤに従って可変である。いくつかの実施形態において、MinX、MaxX、MinY、又はMaxYのうちの少なくとも1つは、ビデオ内のピクチャのサイズに従って可変である。いくつかの実施形態において、MinX、MaxX、MinY、又はMaxYのうちの少なくとも1つは、ビットストリーム表現においてビデオパラメータセット、シーケンスパラメータセット、ピクチャパラメータセット、スライスヘッダ、タイルグループヘッダ、タイル、コーディングツリーユニット、又はコーディングユニットで通知される。いくつかの実施形態において、MVxは、空間動き予測又は時間動き予測のために使用される前に、[MinY,MaxX]にクリッピングされる。いくつかの実施形態において、MVyは、空間動き予測又は時間動き予測のために使用される前に、[MinY,MaxY]にクリッピングされる。
図29は、本開示に係るビデオ処理の方法2900のフローチャート表現である。方法2900は、動作2902で、ビデオの現在のブロックとビデオのビットストリーム表現との間の変換のために、共有マージリストが現在のブロックに適用可能であるかどうかを、現在のブロックのコーディングモードに従って決定するステップを含む。方法2900は、動作2904で、決定に基づいて変換を実行するステップも含む。
いくつかの実施形態において、共有マージリストは、現在のブロックがレギュラーマージモードを用いてコーディングされる場合に適用不可能である。いくつかの実施形態において、共有マージリストは、現在のブロックがイントラブロックコピー(Intra Block Copy,IBC)モードを用いてコーディングされる場合に適用可能である。いくつかの実施形態において、方法は、変換を実行するステップより前に、ビデオ及びビットストリーム表現の過去の変換に基づいて動き候補のテーブルを保持するステップと、変換を実行するステップの後に、現在のブロックが、共有マージリストが適用可能である親ブロックの子である場合に、動き候補のテーブルの更新を無効にするステップとを更に有し、現在のブロックはレギュラーマージモードを用いてコーディングされる。
図30は、本開示に係るビデオ処理の方法3000のフローチャート表現である。方法3000は、動作3002で、W×Hのサイズを有するビデオの現在のブロックとビデオのビットストリーム表現との間の変換のために、変換中の動き補償のための寸法(W+N-1)×(H+N-1)の第2ブロックを決定するステップを含む。第2ブロックは、寸法(W+N-1-PW)×(H+N-1-PH)の参照ブロックに基づいて決定される。Nはフィルタサイズを表し、W、H、N、PW及びPHは非負整数である。PW及びPHは両方とも0に等しくない。方法3000は、動作3004で、決定に基づいて変換を実行するステップも含む。
いくつかの実施形態において、参照ブロックの外に位置する第2ブロック内のピクセルは、参照ブロックの1つ以上の境界を繰り返すことによって決定される。いくつかの実施形態において、PH=0であり、参照ブロックの少なくとも左境界又は右境界が、第2ブロックを生成するために繰り返される。いくつかの実施形態において、PW=0であり、参照ブロックの少なくとも上境界又は下境界が、第2ブロックを生成するために繰り返される。いくつかの実施形態において、PW>0及びPH>0であり、第2ブロックは、参照ブロックの少なくとも左境界又は右境界を繰り返し、その後に参照ブロックの少なくとも上境界又は下境界を繰り返すことによって、生成される。いくつかの実施形態において、PW>0及びPH>0であり、第2ブロックは、参照ブロックの少なくとも上境界又は下境界を繰り返し、その後に参照ブロックの少なくとも左境界又は右境界を繰り返すことによって、生成される。
いくつかの実施形態において、参照ブロックの左境界はM1回繰り返され、参照ブロックの右境界は(PW-M1)回繰り返され、Mは正の整数である。いくつかの実施形態において、参照ブロックの上境界はM2回繰り返され、参照ブロックの下境界は(PH-M2)回繰り返され、M2は正の整数である。いくつかの実施形態において、PW又はPHのうちの少なくとも一方は、現在のブロックの異なった色成分ごとに異なり、色成分は、少なくともルーマ成分又は1つ以上のクロマ成分を含む。いくつかの実施形態において、PW又はPHのうちの少なくとも一方は、現在のブロックのサイズ又は形状に従って可変である。いくつかの実施形態において、PW又はPHのうちの少なくとも一方は、現在のブロックのコーディング特性に従って可変であり、コーディング特性は、片予測コーディング又は双予測コーディングを含む。
いくつかの実施形態において、参照ブロックの外に位置する第2ブロック内のピクセルは、単一値にセットされる。いくつかの実施形態において、単一値は1<<(BD-1)であり、BDは、参照ブロック内のピクセルサンプルのビットデプスである。いくつかの実施形態において、BDは8又は10である。いくつかの実施形態において、単一値は、参照ブロックのピクセルサンプルに基づいて導出される。いくつかの実施形態において、単一値は、ビデオパラメータセット、シーケンスパラメータセット、ピクチャパラメータセット、スライスヘッダ、タイルグループヘッダ、タイル、コーディングツリーユニット行、コーディングツリーユニット、コーディングユニット、又は予測ユニットで通知される。いくつかの実施形態において、参照ブロックの外に位置する第2ブロック内のピクセルのパディングは、現在のブロックがアフィンコーディングされる場合に無効にされる。
図31は、本開示に係るビデオ処理の方法3100のフローチャート表現である。方法3100は、動作3102で、W×Hのサイズを有するビデオの現在のブロックとビデオのビットストリーム表現との間の変換のために、変換中の動き補償のための寸法(W+N-1)×(H+N-1)の第2ブロックを決定するステップを含む。W及びHは非負整数であり、Nは非負整数であってフィルタサイズに基づく。変換中、精緻化された動きベクトルは、元の動きベクトルに対する動きベクトル精緻化動作に従ってマルチポイント探索に基づいて決定され、参照ブロックのピクセル長境界は、1つ以上の非境界ピクセルを繰り返すことによって決定される。方法3100は、動作3104で、決定に基づいて変換を実行するステップも含む。
いくつかの実施形態において、現在のブロックを処理することは、動きベクトル精緻化動作において現在のブロックにフィルタをかけることを有する。いくつかの実施形態において、参照ブロックが現在のブロックの処理に適用可能であるかどうかは、現在のブロックの寸法に基づいて決定される。いくつかの実施形態において、現在のブロックを補間することは、第2ブロックに基づいて現在のブロックの複数のサブブロックを補間することを有する。各サブブロックはW1×H1のサイズを有し、W1、H1は非負整数である。いくつかの実施形態において、W1=H1=4、W=H=8、PW=PH=0である。いくつかの実施形態において、第2ブロックは、複数のサブブロックの少なくとも1つの動きベクトルの整数部に基づいて全体として決定される。いくつかの実施形態において、全ての複数のサブブロックの動きベクトルの整数部の間の最大差が1ピクセル以下である場合に、参照ブロックは、現在のブロックの左上サブブロックの動きベクトルの整数部に基づいて決定され、参照ブロックの右境界及び下境界の夫々は、第2ブロックを取得するよう一度繰り返される。いくつかの実施形態において、全ての複数のサブブロックの動きベクトルの整数部の間の最大差が1ピクセル以下である場合に、参照ブロックは、現在のブロックの右下サブブロックの動きベクトルの整数に基づいて決定され、参照ブロックの左境界及び上境界の夫々は、第2ブロックを取得するよう一度繰り返される。いくつかの実施形態において、第2ブロックは、複数のサブブロックの1つの変更された動きベクトルに基づいて全体として決定される。
いくつかの実施形態において、全ての複数のサブブロックの動きベクトルの整数部の間の最大差が2ピクセル以下である場合に、現在のブロックの左上サブブロックの動きベクトルは、変更された動きベクトルを取得するよう、1整数ピクセル距離を各成分に加えることによって変更される。参照ブロックは、その変更された動きベクトルに基づいて決定され、参照ブロックの左境界、右境界、上境界、及び下境界の夫々は、第2ブロックを取得するよう一度繰り返される。
いくつかの実施形態において、全ての複数のサブブロックの動きベクトルの整数部の間の最大差が2ピクセル以下である場合に、現在のブロックの右下サブブロックの動きベクトルは、変更された動きベクトルを取得するよう、1整数ピクセル距離を各成分から減じることによって変更される。参照ブロックは、その変更された動きベクトルに基づいて決定され、参照ブロックの左境界、右境界、上境界、及び下境界の夫々は、第2ブロックを取得するよう一度繰り返される。
図32、本開示に係るビデオ処理の方法3200のフローチャート表現である。方法3200は、動作3202で、インター-イントラ複合予測(CIIP)コーディング技術を用いてコーディングされるビデオのブロックとビデオのビットストリーム表現との変換のために、ブロック内のある位置での予測値を、その位置でのインター予測値及びイントラ予測値の加重和に基づいて決定するステップを含む。加重和は、インター予測値及びイントラ予測値に基づいて得られた初期和にオフセットを加えることに基づき、オフセットは、加重和を決定するよう実行された右シフト操作の前に加えられる。方法3200は、動作3204で、決定に基づいて変換を実行するステップも含む。
いくつかの実施形態において、ブロック内の位置は(x,y)と表され、位置(x,y)でのインター予測値はPinter(x,y)と表され、位置(x,y)でのイントラ予測値はPintra(x,y)と表され、位置(x,y)でのインター予測重みはw_inter(x,y)と表され、位置(x,y)でのイントラ予測重みはw_intra(x,y)と表される。位置(x,y)での予測値は、(Pintra(x,y)×w_intra(x,y)+Pinter(x,y)×w_inter(x,y)+offset(x,y))>>Nであるよう決定される。ここで、w_intra(x,y)+w_inter(x,y)=2Nかつoffset(x,y)=2(N-1)であり、Nは正の整数である。いくつかの実施形態において、N=2である。
いくつかの実施形態において、加重和は、当該位置でのインター予測値及びイントラ予測値のために等しい重みを用いて決定される。いくつかの実施形態において、ゼロ重みは、加重和を決定するためにブロック内の位置に従って使用される。いくつかの実施形態において、ゼロ重みは、インター予測値に適用される。いくつかの実施形態において、ゼロ重みは、イントラ予測値に適用される。
図33は、本開示に係るビデオ処理の方法3300のフローチャート表現である。方法3300は、動作3302で、ビデオの現在のブロックとビデオのビットストリーム表現との間の変換のために、現在のブロックのサイズに関連した条件が満足されるかどうかに基づいて部分的に現在のブロックのコーディング情報がビットストリーム表現において表される様式を決定するステップを含む。方法3300はまた、動作3304で、決定に基づいて変換を実行するステップを含む。
いくつかの実施形態において、コーディング情報は、条件が満足される場合に、ビットストリーム表現においてシグナリングされる。いくつかの実施形態において、コーディング情報は、条件が満足される場合に、ビットストリーム表現において省略される。いくつかの実施形態において、条件が満足される場合に、イントラブロックコピー(Intra Block Copy,IBC)コーディングツール又はインター予測コーディングツールは現在のブロックに対して無効にされる。いくつかの実施形態において、コーディング情報は、IBCコーディングツール及びインター予測コーディングツールが無効にされる場合に、ビットストリーム表現において省略される。いくつかの実施形態において、コーディング情報は、IBCコーディングツールは有効にされ、インター予測コーディングツールは無効にされる場合に、ビットストリーム表現においてシグナリングされる。
いくつかの実施形態において、コーディング情報は、IBCコーディングツール及び/又はインター予測コーディングツールに関連した動作モードを有し、動作モードは、少なくとも通常モード又はスキップモードを有する。いくつかの実施形態において、コーディング情報は、コーディングツールに関連した予測モードの使用を示すインジケータを有する。いくつかの実施形態において、コーディングツールは、コーディング情報がビットストリーム表現において省略される場合に使用されない。いくつかの実施形態において、コーディングツールは、コーディング情報がビットストリーム表現において省略される場合に使用される。いくつかの実施形態において、コーディングツールは、イントラブロックコピー(IBC)コーディングツール又はインター予測コーディングツールを有する。
いくつかの実施形態において、インジケータがビットストリームにおいて省略される場合に、他の1つ以上のコーディングツールを示す1つ以上のインジケータがビットストリーム表現においてシグナリングされる。いくつかの実施形態において、他の1つ以上のコーディングツールは、少なくともイントラコーディングツール又はパレットコーディングツールを有する。いくつかの実施形態において、インジケータは、インターモードとイントラモードと識別し、1つ以上のインジケータは、IBCモードを示す第1インジケータと、パレットモードを示す第2インジケータとを含み、これらは、インター予測コーディングツールが無効にされ、IBCコーディングツールが有効にされる場合に、ビットストリームにおいてシグナリングされる。
いくつかの実施形態において、コーディング情報は、インタースキップモード又はIBCスキップモードであるスキップモードのための第3インジケータを有する。いくつかの実施形態において、スキップモードのための第3インジケータは、インター予測コーディングツールが無効にされるが、IBCコーディングツールが有効にされる場合に、シグナリングされる。いくつかの実施形態において、予測モードは、IBCモードの使用を示すインジケータがビットストリーム表現において省略されるにもかかわらず、インター予測コーディングツールが無効にされ、IBCコーディングツールが有効にされる場合に、IBCモードであると決定され、スキップモードは、現在のブロックに適用可能である。
いくつかの実施形態において、コーディング情報は、三角モードを有する。いくつかの実施形態において、コーディング情報は、インター予測方向を有する。いくつかの実施形態において、コーディング情報は、現在のブロックが片予測コーディングツールを用いてコーディングされる場合に、ビットストリーム表現において省略される。いくつかの実施形態において、コーディング情報は、対称モードベクトル差分(Symmetric Motion Vector Difference,SMVD)法の使用を示すインジケータを含む。いくつかの実施形態において、条件が満足される場合に、現在のブロックは、ビットストリーム表現におけるSMVD法の使用を示すインジケータにもかかわらず、片予測されているとセットされる。いくつかの実施形態において、片予測コーディングツールに関連したリスト0又はリスト1のみが、SMVD法の使用を示すインジケータがビットストリームから除かれる場合に、動き補償プロセスで使用される。
いくつかの実施形態において、条件は、現在のブロックの幅がT1であり、現在のブロックの高さがT2であることを示し、T1及びT2は正の整数である。いくつかの実施形態において、条件は、現在のブロックの幅がT2であり、現在のブロックの高さがT1であることを示し、T1及びT2は正の整数である。いくつかの実施形態において、条件は、現在のブロックの幅がT1であり、現在のブロックの高さがT2以下であることを示し、T1及びT2は正の整数である。いくつかの実施形態において、条件は、現在のブロックの幅がT2であり、現在のブロックの高さがT1以下であることを示し、T1及びT2は正の整数である。いくつかの実施形態において、条件は、現在のブロックの幅がT1以下であり、現在のブロックの高さがT2以下であることを示し、T1及びT2は正の整数である。いくつかの実施形態において、条件は、現在のブロックの幅がT1以上であり、現在のブロックの高さがT2以上であることを示し、T1及びT2は正の整数である。いくつかの実施形態において、条件は、現在のブロックの幅がT1以上であるか、あるいは、現在のブロックの高さがT2以上であることを示し、T1及びT2は正の整数である。いくつかの実施形態において、T1=4及びT2=16である。いくつかの実施形態において、T1=T2=8である。いくつかの実施形態において、T1=8及びT2=4である。いくつかの実施形態において、T1=T2=4である。いくつかの実施形態において、T1=T2=32である。いくつかの実施形態において、T1=T2=64である。いくつかの実施形態において、T1=T2=128である。
いくつかの実施形態において、条件は、現在のブロックが4×8、8×4、4×16、又は16×4のサイズを有していることを示す。いくつかの実施形態において、条件は、現在のブロックが4×8、8×4のサイズを有していることを示す。いくつかの実施形態において、条件は、現在のブロックのサイズが4×N又はN×4であることを示し、Nは正の整数であり、N≦16である。いくつかの実施形態において、条件は、現在のブロックのサイズが8×N又はN×8であることを示し、Nは正の整数であり、N≦16である。いくつかの実施形態において、条件は、現在のブロックの色成分がN個以下のサンプルを含むことを示す。いくつかの実施形態において、N=16である。いくつかの実施形態において、N=32である。
いくつかの実施形態において、条件は、現在のブロックの色成分が高さに等しい幅を有していることを示す。いくつかの実施形態において、条件は、現在のブロックの色成分が4×8、8×4、4×4、4×16、又は16×4のサイズを有していることを示す。いくつかの実施形態において、色成分はルーマ成分又は1つ以上のクロマ成分を有する。いくつかの実施形態において、インター予測ツールは、現在のブロックが4の幅及び4の高さを有していることを条件が示す場合に、無効にされる。いくつかの実施形態において、IBC予測ツールは、現在のブロックが4の幅及び4の高さを有していることを条件が示す場合に、無効にされる。
いくつかの実施形態において、片予測コーディングツールに関連したリスト0は、(1)現在のブロックが4の幅及び8の高さを有しているか、あるいは、(2)現在のブロックが8の幅及び4の高さを有している場合に、動き補償プロセスで使用される。双予測コーディングツールは、動き補償プロセスで無効にされる。
図34は、本開示に係るビデオ処理の方法3400のフローチャート表現である。方法3400は、動作3402で、ビデオの現在のブロックとビデオのビットストリーム表現との間の変換のために、変更された動きベクトルセットを決定するステップを含む。方法3400は、動作3404で、変更された動きベクトルセットに基づいて変換を実行するステップを含む。現在のブロックが条件を満足することにより、変更された動きベクトルセットは、現在のブロックに関連した動きベクトルセットの変更されたバージョンである。
いくつかの実施形態において、動きベクトルセットは、通常のマージコーディング技術(regular merge coring technique)、サブブロック時間動きベクトル予測コーディングツール(sab-block Temporal Motion Vector Prediction coding technique,sbTMVP)、又は動きベクトル差分によるマージ(Merge with Motion Vector Difference,MMVD)コーディング技術、のうちの1つを用いて導出される。いくつかの実施形態において、動きベクトルセットは、イントラブロックコピー(IBC)コーディング技術で使用されるブロックベクトルを有する。いくつかの実施形態において、条件は、現在のブロックのルーマ成分のサイズが予め定義されたサイズと同じであることを指定する。いくつかの実施形態において、予め定義されたサイズは、8×4又は4×8のうちの少なくとも1つを有する。
いくつかの実施形態において、動きベクトルセットを変更することは、現在のブロックの動き情報が、第1予測方向に対して第1参照ピクチャリスト内の第1参照ピクチャを参照する第1動きベクトルと、第2予測方向に対して第2参照ピクチャリスト内の第2参照ピクチャを参照する第2動きベクトルとを有する双方向であると決定する場合に、動きベクトルセットを一方向動きベクトルに変換することを有する。いくつかの実施形態において、現在のブロックの動き情報は、隣接するブロックの動き情報に基づいて導出される。いくつかの実施形態において、方法は、第1予測方向又は第2予測方向のうちの一方の情報を捨てることを含む。いくつかの実施形態において、情報を捨てることは、捨てられた予測方向における動きベクトルを(0,0)に変更することを有する。いくつかの実施形態において、情報を捨てることは、捨てられた予測方向における参照インデックスを-1に変更することを有する。いくつかの実施形態において、情報を捨てることは、捨てられた予測方向を他方の予測方向に変更することを有する。
いくつかの実施形態において、方法は、第1予測方向のための情報及び第2予測方向のための情報に基づいて、新しい動き候補を導出することを更に有する。いくつかの実施形態において、新しい動き候補を導出することは、第1予測方向における第1動きベクトルと第2予測方向における第2動きベクトルとの平均に基づいて、新しい動き候補の動きベクトルを決定することを有する。いくつかの実施形態において、新しい動き候補を導出することは、第2予測方向のための情報に従って第1予測方向における第1動きベクトルをスケーリングすることによって、スケーリングされた動きベクトル決定することと、スケーリングされた動きベクトルと第2予測方向における第2動きベクトルとの平均に基づいて、新しい動き候補の動きベクトルを決定することとを有する。
いくつかの実施形態において、第1参照ピクチャリストはリスト0(List 0)であり、第2参照ピクチャリストはリスト1(List 1)である。いくつかの実施形態において、第1参照ピクチャリストはリスト1であり、第2参照ピクチャリストはリスト0である。いくつかの実施形態において、方法は、変換された動きベクトルを用いて、過去の変換に基づいて決定された動き候補のテーブルを更新することを有する。いくつかの実施形態において、テーブルは、動きベクトル予測履歴(History Motion Vector Prediction,HMVP)テーブルを有する。
いくつかの実施形態において、方法は、動きベクトルセットを変更する前の第1予測方向及び第2予測方向のための情報を用いて、過去の変換に基づいて決定された動き候補のテーブルを更新することを有する。いくつかの実施形態において、変換された動きベクトルは、現在のブロックのための動き補償動作のために使用される。いくつかの実施形態において、変換された動きベクトルは、続くブロックの動きベクトルを予測するために使用される。いくつかの実施形態において、変換された動きベクトルは、現在のブロックのためのデブロッキングプロセスのために使用される。
いくつかの実施形態において、動きベクトルセットを変更する前の第1予測方向及び第2予測方向のための情報は、現在のブロックのための動き補償動作のために使用される。いくつかの実施形態において、動きベクトルセットを変更する前の情報は、続くブロックの動きベクトルを予測するために使用される。いくつかの実施形態において、動きベクトルセットを変更する前の第1予測方向及び第2予測方向のための情報は、現在のブロックのためのデブロッキングプロセスのために使用される。
いくつかの実施形態において、変換された動きベクトルは、現在のブロックのための動き精緻化動作のために使用される。いくつかの実施形態において、動きベクトルセットを変更する前の第1予測方向及び第2予測方向のための情報は、現在のブロックのための精緻化動作のために使用される。いくつかの実施形態において、精緻化動作は、少なくとも双方向オプティカルフロー(Bi-Directional Optical Flow,BDOF)動作又はオプティカルフローにより精緻化された予測(Prediction Refined with Optical Flow,PROF)動作を含むオプティカルフローコーディング動作を有する。
いくつかの実施形態において、方法は、第1予測方向のための情報及び第2予測方向のための情報に基づいて中間予測ブロックを生成することと、中間予測ブロックを精緻化することと、中間予測ブロックの1つに基づいて最終的な予測ブロックを決定することとを含む。
図35は、本開示に係るビデオ処理の方法3500のフローチャート表現である。方法3500は、動作3502で、ビデオの現在のブロックとビデオのビットストリーム表現との間の変換のために、ブロック寸法の条件が満足される場合に双方向動きベクトルから一方向動きベクトルを決定するステップを含む。一方向動きベクトルは、その後に、変換のためのマージ候補として使用される。方法3500はまた、動作3504で、決定に基づいて変換を実行するステップを含む。
いくつかの実施形態において、変換された一方向動きベクトルは、動きベクトル差分によるマージ(MMVD)コーディング技術で基本マージ候補として使用される。いくつかの実施形態において、変換された一方向動きベクトルは、その後に、マージリストに挿入される。いくつかの実施形態において、一方向動きベクトルは、双方向動きベクトルの1つの予測方向に基づいて変換される。いくつかの実施形態において、一方向動きベクトルは、ただ1つの予測方向に基づいて変換され、そのただ1つの予測方向は、参照ピクチャリスト0に関連する。いくつかの実施形態において、現在のブロックが位置しているビデオデータユニットが双予測されている場合に、候補リスト内の第1候補のための前記ただ1つの予測方向は参照ピクチャリスト0に関連し、候補リスト内の第2候補のための前記ただ1つの予測方向は参照ピクチャリスト1に関連する。候補リストは、マージ候補リスト又はMMVD基本候補リストを有する。
いくつかの実施形態において、ビデオデータユニットは、ビデオの現在のスライス、タイルグループ、又はピクチャを有する。いくつかの実施形態において、一方向動きベクトルは、ビデオデータユニットの全ての参照ピクチャが表示順序に従って過去のピクチャである場合に、参照ピクチャリスト1に基づいて決定される。いくつかの実施形態において、一方向動きベクトルは、ビデオデータユニットの参照ピクチャのうちの少なくとも第1参照ピクチャが過去のピクチャであり、ビデオデータユニットの参照ピクチャのうちの少なくとも第2参照ピクチャが表示順序に従って将来のピクチャである場合に、参照ピクチャリスト0に基づいて決定される。いくつかの実施形態において、異なった参照ピクチャリストに基づいて決定された一方向動きベクトルは、マージリストにおいてインターリーブ方式で位置付けられる。
いくつかの実施形態において、一方向動きベクトルは、低遅延チェックインジケータに基づいて決定される。いくつかの実施形態において、一方向動きベクトルは、変換中に動き補償プロセスより前に決定される。いくつかの実施形態において、一方向動きベクトルは、変換中に動き候補リスト構成プロセスの後で決定される。いくつかの実施形態において、一方向動きベクトルは、動きベクトル差分によるマージ(MMVD)コーディングプロセスで動きベクトル差分を付加する前に決定される。いくつかの実施形態において、一方向動きベクトルは、サンプル精緻化プロセスより前に決定される。いくつかの実施形態において、一方向動きベクトルは、双方向オプティカルフロー(BDOF)プロセスより前に決定される。いくつかの実施形態において、BDOFプロセスは、その後に、一方向動きベクトルを使用するとの決定に基づいて無効にされる。
いくつかの実施形態において、一方向動きベクトルは、オプティカルフローによる予測精緻化(Prediction Refinement with Optical Flow,PROF)プロセスより前に決定される。いくつかの実施形態において、一方向動きベクトルは、デコーダ側動きベクトル精緻化(Decoder-side Motion Vector Refinement,DMVR)プロセスより前に決定される。いくつかの実施形態において、DMVRプロセスは、その後に、一方向動きベクトルに基づいて無効にされる。
いくつかの実施形態において、ブロック寸法の条件は、現在のブロックの幅がT1であり、現在のブロックの高さがT2であることを示し、T1及びT2は正の整数である。いくつかの実施形態において、ブロック寸法の条件は、現在のブロックの幅がT2であり、現在のブロックの高さがT1であることを示し、T1及びT2は正の整数である。いくつかの実施形態において、ブロック寸法の条件は、現在のブロックの幅がT1であり、現在のブロックの高さがT2以下であることを示し、T1及びT2は正の整数である。いくつかの実施形態において、ブロック寸法の条件は、現在のブロックの幅がT2であり、現在のブロックの高さがT1以下であり、T1及びT2は正の整数である。
図36は、本開示に係るビデオ処理の方法3600のフローチャート表現である。方法3600は、動作3602で、ビデオの現在のブロックとビデオのビットストリーム表現との間の変換のために、現在のブロックの寸法に基づいて、現在のブロックの動き候補が一方向予測候補であるよう制限されることを決定するステップを含む。方法3600は、動作3604で、決定に基づいて変換を実行するステップを含む。
いくつかの実施形態において、現在のブロックの寸法が条件を満足する場合に、現在のブロックの全ての動き候補は、一方向予測候補であるよう制限される。いくつかの実施形態において、双方向動き候補は、現在のブロックの寸法が条件を満足する場合に、一方向予測候補であるよう変換される。いくつかの実施形態において、現在のブロックの寸法は、現在のブロックの幅がT1であり、現在のブロックの高さがT2であることを示し、T1及びT2は正の整数である。いくつかの実施形態において、ブロックの寸法が条件は、現在のブロックの幅がT2であり、現在のブロックの高さがT1であることを示し、T1及びT2は正の整数である。いくつかの実施形態において、現在のブロックの寸法は、現在のブロックの幅がT1であり、現在のブロックの高さがT2以下であることを示し、T1及びT2は正の整数である。いくつかの実施形態において、現在のブロックの寸法は、現在のブロックの幅がT2であり、現在のブロックの高さがT1以下であることを示し、T1及びT2は正の整数である。いくつかの実施形態において、T1は4に等しく、T2は8に等しい。いくつかの実施形態において、T1は4に等しく、T2は4に等しい。いくつかの実施形態において、T1は8に等しく、T2は8に等しい。
いくつかの実施形態において、上記の方法で変換を実行するステップは、ビデオの現在のブロックに基づいてビットストリーム表現を生成することを含む。いくつかの実施形態において、上記の方法で変換を実行するステップは、ビットストリーム表現からビデオの現在のブロックを生成することを含む。
本明細書中、「ビデオ処理」という用語は、ビデオエンコーディング、ビデオデコーディング、ビデオ圧縮又はビデオ圧縮解除を指し得る。例えば、ビデオ圧縮アルゴリズムは、ビデオのピクセル表現から、対応するビットストリーム表現への変換中に、又はその逆も同様に、適用されてよい。現在のビデオブロックのビットストリーム表現は、例えば、シンタックスによって定義されるような、ビットストリーム内で同一位置にあるか又は異なった場所に広がっているかのどちらかであるビットに対応してよい。例えば、マクロブロックは、変換及びコーディングされた誤差残余値に関して、更には、ビットストリーム内のヘッダ及び他のフィールドにおけるビットを用いて、エンコーディングされてよい。更には、変換中、デコーダは、上記の解決法で説明されているように、決定に基づいて、いくつかのフィールドの有無の可能性を分かった上でビットストリームをパースしてよい。同様に、エンコーダは、特定のシンタックスフィールドが含まれるべきか否かを決定し、それに応じて、コーディングされた表現からシンタックスフィールドを含めるか又は除くことによって、ビットストリーム表現を生成してよい。
本明細書で説明されている開示の及び他の解決法、例、実施形態、モジュール及び機能動作は、デジタル電子回路において、あるいは、本明細書で開示されている構造及びそれらの構造的同等物を含むコンピュータソフトウェア、ファームウェア、若しくはハードウェアにおいて、あるいは、それらの1つ以上の組み合わせにおいて実装可能である。開示の及び他の実施形態は、1つ以上のコンピュータプログラム製品、例えば、データ処理装置による実行のために又はその動作を制御するためにコンピュータ可読媒体上でエンコーディングされたコンピュータプログラム命令の1つ以上のモジュールとして、実装可能である。コンピュータ可読媒体は、機械読み出し可能な記憶デバイス、機械読み出し可能な記憶担体、メモリデバイス、機械読み出し可能な伝搬信号をもたらす組成物、又はそれらの1つ以上の組み合わせであることができる。「データ処理装置」との用語は、例として、プログラム可能なプロセッサ、コンピュータ、又は複数のプロセッサ若しくはコンピュータを含め、データを処理する全ての装置、デバイス、及び機械を包含する。装置は、ハードウェアに加えて、問題となっているコンピュータプログラムのための実行環境を作り出すコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、又はそれらの1つ以上の組み合わせを構成するコードを含むことができる。伝搬信号は、人工的に生成された信号、例えば、機械により生成された電気的、光学的、又は電磁気的信号であって、適切なレシーバ装置への伝送のために情報を符号化するよう生成される。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、又はコードとしても知られる。)は、コンパイル済み又は解釈済みの言語を含む如何なる形式のプログラミング言語でも記述可能であり、それは、スタンドアロンプログラムとして又はコンピューティング環境における使用に適したモジュール、コンポーネント、サブルーチン、若しくは他のユニットとしてを含め、如何なる形式でもデプロイ可能である。コンピュータプログラムは、必ずしもファイルシステムにおけるファイルに対応しない。プログラムは、問題となっているプログラムに専用の単一のファイルで、又は複数の協調したファイル(例えば、1つ以上のモジュール、サブプログラム、又はコードの部分を保存するファイル)で、他のプログラム又はデータ(例えば、マークアップ言語文書で保存された1つ以上のスクリプト)を保持するファイルの部分において保存可能である。コンピュータプログラムは、1つのコンピュータで、あるいは、1つの場所に位置しているか、又は複数の場所にわたって分布しており、通信ネットワークによって相互接続されている複数のコンピュータで実行されるようデプロイ可能である。
本文書で説明されているプロセス及びロジックフローは、入力データに作用して出力を生成することによって機能を実行するよう1つ以上のコンピュータプログラムを実行する1つ以上のプログラム可能なプロセッサによって実行可能である。プロセス及びロジックフローはまた、専用のロジック回路、例えば、フィールド・プログラマブル・ゲート・アレイ(FPGA)又は特定用途向け集積回路(ASIC)によっても実行可能であり、装置は、そのようなものとして実装可能である。
コンピュータプログラムの実行に適したプロセッサは、例として、汎用のマイクロプロセッサ及び専用のマイクロプロセッサの両方、並びにあらゆる種類のデジタルコンピュータのいずれか1つ以上のプロセッサを含む。一般に、プロセッサは、リード・オンリー・メモリ若しくはランダム・アクセス・メモリ又はその両方から命令及びデータを読み出すことになる。コンピュータの必須の要素は、命令を実行するプロセッサと、命令及びデータを保存する1つ以上のメモリデバイスとである。一般に、コンピュータはまた、データを保存する1つ以上の大容量記憶デバイス、例えば、磁気、光学磁気ディスク、又は光ディスクを含むか、あるいは、そのような1つ以上の大容量記憶デバイスからのデータの受信若しくはそれへのデータの転送又はその両方のために動作可能に結合されることになる。しかし、コンピュータは、そのようなデバイスを有する必要はない。コンピュータプログラム命令及びデータを保存するのに適したコンピュータ可読媒体は、例として、半導体メモリデバイス、例えば、EPROM、EEPROM、及びフラッシュメモリデバイス;磁気ディスク、例えば、内蔵ハードディスク又はリムーバブルディスク;光学磁気ディスク;並びにCDROM及びDVD-ROMディスクを含む全ての形式の不揮発性メモリ、媒体及びメモリデバイスを含む。プロセッサ及びメモリは、専用のロジック回路によって強化されるか、あるいは、それに組み込まれ得る。
本明細書は、多数の詳細を含むが、それらは、あらゆる対象の又は請求される可能性があるものの範囲に対する限定としてではなく、むしろ、特定の技術の特定の実施形態に特有であり得る特徴の説明として解釈されるべきである。別々の実施形態に関連して本明細書で説明されている特定の特徴は、単一の実施形態と組み合わせても実装可能である。逆に、単一の実施形態に関連して説明されている様々な特徴はまた、複数の実施形態で別々に、又は何らかの適切なサブコンビネーションで実装可能である。更に、特徴は、特定の組み合わせで動作するものとして先に説明され、更には、そのようなものとして最初に請求されることがあるが、請求されている組み合わせからの1つ以上の特徴は、いくつかの場合に、その組み合わせから削除可能であり、請求されている組み合わせは、サブコンビネーションまたはサブコンビネーションの変形に向けられてもよい。
同様に、動作は、特定の順序で図面において表されているが、これは、所望の結果を達成するために、そのような動作が示されているその特定の順序で又は順次的な順序で実行されること、あるいは、表されている全ての動作が実行されることを求めている、と理解されるべきではない。更に、本明細書で説明されている実施形態における様々なシステムコンポーネントの分離は、全ての実施形態でそのような分離を求めている、と理解されるべきではない。
ほんのわずかの実施及び例が説明されており、他の実施、強化及び変形は、本特許文献で記載及び例示されているものに基づいて行われ得る。
[関連出願の相互参照]
本願は、2019年3月6日付けで出願された国際特許出願第PCT/CN2019/077179号に対する優先権及びその利益を請求する、2020年3月6日付けで出願された国際特許出願第PCT/CN2020/078108号の国内移行である。上記の出願の全体の開示は、本願の開示の部分として参照により援用される。