本明細書で使用される用語は本発明における機能を考慮しながらできるだけ現在広く使用されている一般的な用語を選択したが、これは当分野に携わる技術者の意図、慣例または新たな技術の出現などによって異なり得る。また、特定の場合は出願人が任意に選定した用語もあるが、この場合、該当の発明を実施する形態の部分においてその意味を記載する。よって、本明細書で使用される用語は、単なる用語の名称ではなく、その用語の有する実質的な意味と本明細書全般にわたる内容に基づいて解釈すべきであることを明らかにする。
本明細書において、一部用語は以下のように解釈される。コーディングは、場合によってはエンコーディングまたはでコーディングに解釈される。本明細書において、ビデオ信号のエンコーディング(符号化)を行ってビデオ信号のビットストリームを生成する装置はエンコーディング装置またはエンコーダと称され、ビデオ信号ビットストリームのデコーディング(復号化)を行ってビデオ信号を復元する装置はデコーディング装置またはデコーダと称される。また、本明細書において、ビデオ信号処理装置はエンコーダ及びデコーダをいずれも含む概念の用語として使用される。情報(information)は値(values)、パラメータ(parameter)、係数(coefficients)、成分(elements)などをいずれも含む用語であって、場合によっては意味が異なるように解釈されることがあるため、本発明はこれに限らない。 ‘ユニット’は、映像処理の基本単位又はピクチャの特定位置を表す意味で使われ、ルーマ(luma)成分及びクロマ(chroma)成分のうち少なくとも一つを含むイメージ領域のことを指す。また、「ブロック」は輝度成分及び色差成分(つまり、Cb及びCr)のうち特定成分を含むイメージ領域を指す。但し、実施例によって「ユニット」、「ブロック」、「パーティション」、及び「領域」などの用語は互いに混合して使用されてもよい。また、本明細書において、ユニットはコーディングユニット、予測ユニット、変換ユニットをいずれも含む概念として使用される。ピクチャはフィールドまたはフレームを指し、実施例よっては前記用語は互いに混用して使用される。
図1は、本発明の一実施例によるビデオ信号エンコーディング装置100の概略的なブロック図である。図1を参照すると、本明細書のエンコーディング装置100は、変換部110、量子化部115、逆量子化部120、逆変換部125、フィルタリング部130、予測部150、及びエントロピーコーディング部160を含む。
変換部110は、入力されたビデオ信号と予測部150で生成された予測信号の差であるレジデュアル信号を変換して変換系数値を獲得する。例えば、離散コサイン変換(Discrete Cosine Transform、DCT)、離散サイン変換(Discrete Sine Transform、DST)、またはウェーブレット変換(Wavelet Transform)などが使用される。離散コサイン変換及び離散サイン変換は、入力されたピクチャ信号をブロックの形態に分けて変換を行うようになる。変換において、変換領域内の値の分布と特性によってコーディング効率が異なり得る。量子化部115は、変換部110内で出力された変換係数の値を量子化する。
コーディング効率を上げるために、ピクチャ信号をそのままコーディングするのではなく、予測部150を介して予めコーディングされた領域を利用してピクチャを予測し、予測されたピクチャに原本ピクチャと予測ピクチャの間のレジデュアル値を足して復元ピクチャを獲得する方法が使用される。エンコーダとデコーダでミスマッチが発生しないように、エンコーダで予測を行う際にはデコーダでも使用可能な情報を使用すべきである。そのために、エンコーダでは符号化した現在ブロックを更に復元する過程を行う。逆量子化部120では変換係数値を逆量子化し、逆変換部125では逆量子化された変換系数値を利用してレジデュアル値を復元する。一方、フィルタリング部130は、復元されたピクチャの品質改善及び符号化効率の向上のためのフィルタリング演算を行う。例えば、デブロッキングフィルタ、サンプル適応的オフセット(Sample Adpative Offset、SAO)、及び適応的ループフィルタなどが含まれてもよい。フィルタリングを経たピクチャは、出力されるか参照ピクチャとして利用するために復号ピクチャバッファ(Decoded Picture Buffer、DPB)156に貯蔵される。
コーディング効率を上げるために、ピクチャ信号をそのままコードせず、予測部150で既にコードされた領域を用いてピクチャを予測し、予測されたピクチャに原ピクチャと予測ピクチャ間のレジデュアル値を足して復元ピクチャを取得する方法が用いられる。イントラ予測部152では、現在ピクチャ内で画面内予測を行い、インター予測部154では、復号ピクチャバッファ156に保存された参照ピクチャを用いて現在ピクチャを予測する。イントラ予測部152は、現在ピクチャ内の復元された領域から画面内予測を行い、画面内符号化情報をエントロピーコーディング部160に伝達する。インター予測部154はさらに、モーション推定部154a及びモーション補償部154bを含んで構成されてよい。モーション推定部154aでは、復元された特定領域を参照して現在領域のモーションベクトル値を取得する。モーション推定部154aでは、参照領域の位置情報(参照フレーム、モーションベクトルなど)などをエントロピーコーディング部160に伝達してビットストリームに含まれ得るようにする。モーション推定部154aから伝達されたモーションベクトル値を用いて、モーション補償部154bでは画面間モーション補償を行う。
予測部150は、イントラ予測部152とインター予測部154を含む。イントラ予測部152は現在ピクチャ内でイントラ(intra)予測を行い、インター予測部154は復号ピクチャバッファ156に貯蔵された参照バッファを利用して現在ピクチャを予測するインター(inter)予測を行う。イントラ予測部152は、現在ピクチャ内の復元されたサンプルからイントラ予測を行い、イントラ符号化情報をエントロピーコーディング部160に伝達する。イントラ符号化情報は、イントラ予測モード、MPM(Most Probable Mode)フラッグ、MPMインデックスのうち少なくとも一つを含む。 イントラ符号化情報は、参照サンプルに関する情報を含むことができる。 イントラ符号化情報は参照サンプルに関する情報を含む。インター予測部154は、モーション推定部154a及びモーション補償部154bを含んで構成される。モーション推定部154aは、復元された参照信号ピクチャの特定領域を参照して現在領域のモーションベクトル値を獲得する。モーション推定部154aは、参照領域に対するモーション情報セット(参照ピクチャインデックス、モーションベクトル情報)をエントロピーコーディング部160に伝達する。モーション補償部154bは、モーション補償部154aから伝達されたモーションベクトル値を利用してモーション補償を行う。インター予測部154は、参照領域に対するモーション情報を含むインター符号化情報をエントロピーコーディング部160に伝達する。
更なる実施例によって、予測部150はイントラブロックコピー(block copy、BC)予測部(図示せず)を含む。イントラBC予測部は、現在ピクチャ内の復元されたサンプルからイントラBC予測を行い、イントラBC符号化情報をエントロピーコーディング部160に伝達する。イントラBC予測部は、現在ピクチャ内の特定領域を参照して現在領域の予測に利用される参照領域を示すブロックベクトル値を獲得する。イントラBC予測部は、獲得されたブロックベクトル値を利用してイントラBC予測を行う。イントラBC予測部は、イントラBC符号化情報をエントロピーコーディング部160に伝達する。イントラBC予測部はブロックベクトル情報を含む。
上述したピクチャ予測が行われれば、変換部110は原本ピクチャと予測ピクチャの間のレジデュアル値を変換して変換係数値を獲得する。この際、変換はピクチャ内で特定ブロック単位で行われるが、特定ブロックのサイズは予め設定された範囲内で可変する。量子化部115は、変換部110で生成された変換係数の値を量子化してエントロピーコーディング部160に伝達する。
エントロピーコーディング部160は、量子化された変換係数を示す情報、イントラ符号化情報、及びインター符号化情報などをエントロピーコーディングしてビデオ信号ビットストリームを生成する。 エントロピーコーディング部160では、可変長コーディング(Variable Length Codeing、VLC)方式と算術コーディング(arithmetic coding)方式などが使用される。可変長コーディング(VLC)方式は入力されるシンボルを連続したコードワードにへ難するが、コードワードの長さは可変的である。例えば、よく発生するシンボルは短いコードワードで、よく発生しないシンボルは長いコードワードで表現する。可変長コーディング方式として、コンテキスト基盤適応型可変長コーディング(Context-based Adaptive Variable Length Coding、CAVLC)方式が使用される。算術コーディングは連続したデータシンボルを一つの素数に変換するが、算術コーディングは各シンボルを表現するために必要な最適の素数ビットを得る。算術コーディングとして、コンテキスト基盤適合型算術符号化(Context-based Adaptive Binary Arithmetic Coding、CABAC)方式が使用される。 例えば、エントロピーコーディング部160は、量子化された変換係数を示す情報を二進化することができる。また、エントロピーコーディング部160は、二進化された情報を算術コーディングしてビットストリームを生成することができる。
前記生成されたビットストリームは、NAL(Network Abstraction Layer)ユニットを基本単位にカプセル化される。NALユニットは、符号化された整数個のコーディングツリーユニット(coding tree unit)を含む。ビデオデコーダでビットストリームを復号化するためには、まずビットストリームをNALユニット単位に分離した後、分離されたそれぞれのNALユニットを復号化すべきである。 一方、ビデオ信号ビットストリームの復号化のために必要な情報は、ピクチャーパラメータセット(Picture Parameter Set,PPS)、シーケンスパラメータセット(Sequence Parameter Set,SPS)、ビデオパラメータセット(Video Parameter Set,VPS)、デコーディングケイパビリティ情報(Decoding Capability Information,DCI)などのような上位レベルセットのRBSP(Raw Byte Sequence Payload)で送信されてよい。
一方、図1のブロック図は本発明の一実施例によるエンコーディング装置100を示し、分離して示したブロックはエンコーディング装置100のエレメントを論理的に区別して示している。よって、上述したエンコーディング装置100のエレメントは、ディバイスの設計に応じて一つのチップまたは複数のチップに取り付けられる。一実施例によると、上述したエンコーディング装置100のの各エレメントの動作はプロセッサ(図示せず)によって行われる。
図2は、本発明の実施例によるビデオ信号デコーディング装置の200概略的なブロック図である。図2を参照すると、本明細書のデコーディング装置200は、エントロピーデコーディング部210、逆量子化部220、逆変換部225、フィルタリング部230、及び予測部250を含む。
エントロピーデコーディング部210は、ビデオ信号ビットストリームをエントロピーデコードし、各領域に対する変換係数情報、イントラ符号化情報、インター符号化情報などを抽出する。例えば、エントロピーデコーディング部210は、ビデオ信号ビットストリームから特定領域の変換係数情報に対する二進化コードを取得することができる。また、エントロピーデコーディング部210は二進化コードを逆二進化し、量子化された変換係数を取得する。逆量子化部220は量子化された変換係数を逆量子化し、逆変換部225は、逆量子化された変換係数を用いてレジデュアル値を復元する。ビデオ信号処理装置200は、逆変換部225から取得したレジデュアル値を、予測部250から取得した予測値と合算して、元来の画素値を復元する。
一方、フィルタリング部230は、ピクチャに対するフィルタリングを行って画質を向上させる。ここには、ブロック歪曲現象を減少させるためのデブロッキングフィルタ及び/またはピクチャ全体の歪曲を除去するための適応的ループフィルタなどが含まれる。フィルタリングを経たピクチャは出力されるか、次のピクチャに対する参照ピクチャとして利用するために復号ピクチャバッファ(DPB)256に貯蔵される。
予測部250は、イントラ予測部252及びインター予測部254を含む。予測部250は、前述したエントロピーデコーディング部210を通じて復号化された符号化タイプ、各領域に対する変換係数、イントラ/インター符号化情報などを活用して予測ピクチャを生成する。復号化が遂行される現在ブロックを復元するために、現在ブロックが含まれた現在ピクチャまたは他のピクチャの復号化された領域が利用できる。 復元に現在ピクチャだけを用いる、すなわち、イントラ予測又はイントラBC予測を行うピクチャ(又は、タイル/スライス)をイントラピクチャ又はIピクチャ(又は、タイル/スライス)、イントラ予測、インター予測及びイントラBC予測を全て行うことができるピクチャ(又は、タイル/スライス)を、インターピクチャ(又は、タイル/スライス)という。インターピクチャ(又は、タイル/スライス)のうち、各ブロックのサンプル値を予測するために、最大で1つのモーションベクトル及び参照ピクチャインデックスを用いるピクチャ(又は、タイル/スライス)を、予測ピクチャ(predictive picture)又はPピクチャ(又は、タイル/スライス)といい、最大で2つのモーションベクトル及び参照ピクチャインデックスを用いるピクチャ(又は、タイル/スライス)を、双予測ピクチャ(Bi-predictive picture)又はBピクチャ(又は、タイル/スライス)という。 言い換えると、Pピクチャ(または、タイル/スライス)は各ブロックを予測するために最大1つの動き情報セットを用いて、Bピクチャ(または、タイル/スライス)は各ブロックを予測するために最大2つの動き情報セットを用いる。ここで、動き情報セットは1つ以上の動きベクトルと1つの参照ピクチャインデックスを含む。
イントラ予測部252は、イントラ符号化情報及び現在ピクチャ内の復元されたサンプルを利用して予測ブロックを生成する。上述したように、イントラ符号化情報は、イントラ予測モード、MPM(MOST Probable Mode)フラッグ、MPMインデックスのうち少なくとも一つを含む。イントラ予測部252は、現在ブロックの左側及び/または上側に位置する復元されたサンプルを参照サンプルとして利用して、現在ブロックのサンプル値を予測する。本開示において、復元されたサンプル、参照サンプル、及び現在ブロックのサンプルはピクセルを示す。また、サンプル値(sample value)はピクセル値を示す。
一実施例において、参照サンプルは現在ブロックの周辺ブロックに含まれたサンプルである。例えば、参照サンプルは現在ブロックの左側境界に隣接したサンプル及び/または上側境界に隣接したサンプルである。また、参照サンプルは現在ブロックの周辺ブロックのサンプルのうち、現在ブロックの左側境界から予め設定された距離以内のライン上に位置するサンプル及び/または現在ブロックの上側境界から予め設定された距離以内のライン上に位置するサンプルである。この際、現在ブロックの周辺ブロックは、現在ブロックに隣接した左側(L)ブロック、上側(A)ブロック、下左側(Below Left、BL)ブロック、右上側(Above Right、AR)ブロック、または左上側(Above Left、AL)ブロックのうち少なくとも一つを含む。
インター予測部254は、復号ピクチャバッファ256に貯蔵された参照ピクチャ及びインター符号化情報を利用して予測ブロックを生成する。インター符号化情報は、参照ブロックに対する現在ブロックのモーション情報セット(参照ピクチャインデックス、モーションベクトルなど)を含む。インター予測には、L0予測、L1予測、及び双予測(Bi-prediction)がある。L0予測はL0ピクチャリストに含まれた一つの参照ピクチャを利用した予測であり、L1予測はL1ピクチャリストに含まれた一つの参照ピクチャを利用した予測を意味する。そのためには、1セットのモーション情報(例えば、モーションベクトル及び参照ピクチャインデックス)が必要である。双予測方式では最大2つの参照領域を利用するが、この2つの参照領域は同じ参照ピクチャに存在してもよく、互いに異なるピクチャにそれぞれ存在してもよい。つまり、双予測方式では最大2セットのモーション情報(例えば、モーションベクトル及び参照ピクチャインデックス)が利用されるが、2つのモーションベクトルが同じ参照ピクチャインデックスに対応してもよく、互いに異なる参照ピクチャインデックスに対応してもよい。この際、参照ピクチャは時間的に現在ピクチャの以前や以降のいずれにも表示(または出力)される。 一実施例によって、双予測方式では、使用される2個の参照領域は、L0ピクチャリスト及びL1ピクチャリストのそれぞれから選択された領域であってよい。
インター予測部254は、モーションベクトル及び参照ピクチャインデックスを利用して現在の参照ブロックを獲得する。前記参照ブロックは、参照ピクチャインデックスに対応する参照ピクチャ内に存在する。また、モーションベクトルによって特定されたブロックのサンプル値またはこれの補間(interpolation)された値が現在ブロックの予測子(predictor)として利用される。サブペル(sub-pel)単位のピクセル正確度を有するモーション予測のために、例えば、輝度信号に対して8-タブ補間フィルタが、色差信号に対して4-タブ補間フィルタが使用される。但し、サブペル単位のモーション予測のための補間フィルタはこれに限らない。このように、インター予測部254は、以前復元されたピクチャから現在ユニットのテクスチャを予測するモーション補償(motion compensation)を行う。この際、インター予測部はモーション情報セットを利用する。
更なる実施例によって、予測部250は、イントラBC予測部(図示せず)を含むことができる。イントラBC予測部は、現在ピクチャ内の復元されたサンプルを含む特定領域を参照して現在領域を復元することができる。イントラBC予測部は、エントロピーデコーディング部210から、現在領域に対するイントラBC符号化情報を取得する。イントラBC予測部は、現在ピクチャ内の特定領域を指示する現在領域のブロックベクトル値を取得する。イントラBC予測部は、取得されたブロックベクトル値を用いてイントラBC予測を行うことができる。イントラBC符号化情報は、ブロックベクトル情報を含むことができる。
前記イントラ予測部252又はインター予測部254から出力された予測値、及び逆変換部225から出力されたレジデュアル値が合算されて復元されたビデオピクチャが生成される。すなわち、ビデオ信号デコーディング装置200は、予測部250で生成された予測ブロックと逆変換部225から取得されたレジデュアルを用いて現在ブロックを復元する。
一方、図2のブロック図は本発明の一実施例によるデコーディング装置200を示し、分離して示したブロックはデコーディング装置200のエレメントを論理的に区別して示している。よって、上述したデコーディング装置200のエレメントは、ディバイスの設計に応じて一つのチップまたは複数のチップに取り付けられる。一実施り例によると、上述したデコーディング装置200のの各エレメントの動作はプロセッサ(図示せず)によって行われる。
図3は、ピクチャ内でコーディングツリーユニット(Coding Tree Unit、CTU)がコーディングユニット(Coding Units、CUs)に分割される実施例を示している。ビデオ信号のコーディング過程において、ピクチャはコーディングツリーユニット(CTU)のシーケンスに分割される。コーディングツリーユニットは、輝度サンプルのNXNブロックと、それに対応する色差サンプルの2つのブロックからなる。コーディングツリーユニットは、複数のコーディングユニットに分割される。コーディングツリーユニットは分割されずにリーフノードになってもよい。この場合、コーディングツリーユニット自体がコーディングユニットになり得る。コーディングユニットは上述したビデオ信号の処理過程、つまり、イントラ/インター予測、変換、量子化及び/またはエントロピーコーディングなどの過程でピクチャを処理するための基本単位を指す。一つのピクチャ内において、コーディングユニットのサイズ及び模様は一定ではない。コーディングユニットは正方形または長方形の模様を有する。長方形コーディングユニット(または、長方形ブロック)は垂直コーディングユニット(または、垂直ブロック)と水平コーディングユニット(または、水平ブロック)を含む。本明細書において、垂直ブロックは高さが幅より大きいブロックであり、水平ブロックは幅が高さより大きいブロックである。また、本明細書において、正方形ではない(non-square)ブロックは長方形ブロックを指すが、本発明はこれに限らない。
図3を参照すると、コーディングツリーユニットは、まずクォードツリー(Quad Tree、QT)構造に分割される。つまり、クォードツリー構造において、2N×2Nのサイズを有する一つのノードはN×Nのサイズを有する4つのノードに分割される。本明細書において、クォードツリーは4進(quaternary)ツリーとも称される。クォードツリー分割は再帰的に行われ、全てのノードが同じ深さに分割される必要はない。
一方、上述したクォードツリーのリーフノード(leaf node)は、マルチ-タイプツリー(Multi-Type Tree、MTT)構造に更に分割される。本発明の実施例によると、マルチタイプツリー構造では一つのノードが水平または垂直分割の2進(binary、バイナリー)または3進(ternary、ターナリー)ツリー構造に分割される。つまり、マルチ-タイプツリー構造には、垂直バイナリー分割、水平バイナリー分割、垂直ターナリー分割、及び水平ターナリー分割の4つの分割構造が存在する。本発明の実施例によると、前記各ツリー構造において、ノードの幅及び高さはいずれも2の累乗値を有する。例えば、バイナリーツリー(binary Tree、BT)構造において、2N×2Nのサイズのノードは垂直バイナリー分割によって2つのN×2Nノードに分割され、水平バイナリー分割によって2つの2N×Nノードに分割される。また、ターナリーツリー(Ternary Tree、TT)構造において、2N×2Nのサイズのノードは垂直ターナリー分割によって(N/2)×2N、N×2N及び(N/2)×2Nのノードに分割され、水平ターナリー分割によって2N×(N/2)、2N×N及び2N×(N/2)のノードに分割される。このようなマルチ-タイプツリー分割は再帰的に行われる。
マルチタイプツリーのリーフノードは、コーディングユニットになり得る。コーディングユニットが最大変換長に比べて大きくない場合、当該コーディングユニットはそれ以上の分割無しで予測及び/又は変換の単位として用いられてよい。一実施例として、現在コーディングユニットの幅又は高さが最大変換長よりも大きい場合に、現在コーディングユニットは、分割に関する明示的シグナリング無しで複数の変換ユニットに分割されてよい。 一方、上述したクォードツリー及びマルチ-タイプツリーにおいて、次のパラメータのうち少なくとも一つが事前に定義されるか、PPS、SPS、VPSなどのような上位レベルセットのRBSPを介して伝送される。1)CTUサイズ:クォードツリーのルートノード(root node)のサイズ、2)最小QTサイズ(MinQtSize):許容された最小QTリーフノードのサイズ、3)最大BTサイズ(MaxBtSize):許容された最大BTルートノードのサイズ、4)最大TTサイズ(MaxTtSize):許容された最大TTルートノードのサイズ、5)最大MTT深さ(MaxMttDepth):QTのリーフノードからのMTT分割の最大許容深さ、6)最小BTサイズ(MinBtSize):許容された最小BTリーフノードのサイズ、7)最小TTサイズ:許容された最小TTリーフノードのサイズ。
図4は、クアッドツリー及びマルチタイプツリーの分割をシグナルする方法の一実施例を示す。前述したクアッドツリー及びマルチタイプツリーの分割をシグナルするために、既に設定されたフラグが用いられてよい。図4を参照すると、ノードの分割されるか否かを示すフラグ‘split_cu_flag’、クアッドツリーノードの分割されるか否かを示すフラグ‘split_qt_flag’、マルチタイプツリーノードの分割方向を示すフラグ‘mtt_split_cu_vertical_flag’、又はマルチタイプツリーノードの分割形態を示すフラグ‘mtt_split_cu_binary_flag’のうち少なくとも一つが用いられてよい。
本発明の実施例によれば、現在ノードの分割されるか否かを示すフラグである‘split_cu_flag’がまずシグナルされてよい。‘split_cu_flag’の値が0である場合、現在ノードが分割されないことを示し、現在ノードはコーディングユニットになる。現在ノードがコーティングツリーユニットである場合、コーディングツリーユニットは、分割されていない一つのコーディングユニットを含む。現在ノードがクアッドツリーノード‘QT node’である場合、現在ノードはクアッドツリーのリーフノード‘QT leaf node’であり、コーディングユニットになる。現在ノードがマルチタイプツリーノード‘MTT node’である場合、現在ノードはマルチタイプツリーのリーフノード‘MTT leaf node’であり、コーディングユニットになる。
‘split_cu_flag’の値が1である場合、現在ノードは‘split_qt_flag’の値によってクアッドツリー又はマルチタイプツリーのノードに分割されてよい。コーディングツリーユニットは、クアッドツリーのルートノードであり、クアッドツリー構造にまず分割されてよい。クアッドツリー構造では、それぞれのノード‘QT node’別に‘split_qt_flag’がシグナルされる。‘split_qt_flag’の値が1である場合、当該ノードは4個の正方形ノードに分割され、‘qt_split_flag’の値が0である場合、当該ノードはクアッドツリーのリーフノード‘QT leaf node’になり、当該ノードはマルチタイプノードに分割される。本発明の実施例によれば、現在ノードの種類によってクアッドツリー分割は制限されることがある。現在ノードがコーディングツリーユニット(クアッドツリーのルートノード)又はクアッドツリーノードである場合に、クアッドツリー分割が許容されてよく、現在ノードがマルチタイプツリーノードである場合に、クアッドツリー分割は許容されなくてよい。それぞれのクアッドツリーリーフノード‘QT leaf node’は、マルチタイプツリー構造にさらに分割されてよい。上述したように、‘split_qt_flag’が0である場合に、現在ノードはマルチタイプノードに分割されてよい。分割方向及び分割形態を示すために、‘mtt_split_cu_vertical_flag’及び‘mtt_split_cu_binary_flag’がシグナルされてよい。‘mtt_split_cu_vertical_flag’の値が1である場合、ノード‘MTT node’の垂直分割を示し、‘mtt_split_cu_vertical_flag’の値が0である場合、ノード‘MTT node’の水平分割を示す。また、‘mtt_split_cu_binary_flag’の値が1である場合、ノード‘MTT node’は2個の長方形ノードに分割され、‘mtt_split_cu_binary_flag’の値が0である場合、ノード‘MTT node’は3個の長方形ノードに分割される。
コーティングのためのピクチャ予測(モーション補償)はそれ以上分けられないコーディングユニット(つまり、コーディングユニットツリーのリーフノード)を対象に行われる。このような予測を行う基本単位を、以下では予測ユニット(prediction unit)または予測ブロック(prediction block)という。
以下、本明細書で使用されるユニットという用語は、予測を行う基本単位である前記予測ユニットを代替する用語として使用される。但し、本発明はこれに限らず、より広い意味では、前記コーディングユニットを含む概念として理解される。
図5及び図6は、本発明の実施例によるイントラ予測方法をより詳しく示す図である。上述したように、イントラ予測部は、現在ブロックの左側及び/または上側に位置する復元されたサンプルを参照サンプルとして利用して、現在ブロックのサンプル値を予測する。
まず、図5はイントラ予測モードで現在ブロックを予測するために使用される参照サンプルの一実施例を示す。一実施例によると、参照サンプルは現在ブロックの左側境界に隣接したサンプル及び/または上側境界に隣接したサンプルである。図5に示したように、現在ブロックのサイズがW×Hで現在ブロックに隣接した単一参照ライン(line)のサンプルがイントラ予測に使用されれば、現在ブロックの左側及び/または上側に位置した最大2W+2H+1個の周辺サンプルを使用して参照サンプルが設定される。
また、参照サンプルとして使用される少なくとも一部のサンプルがまだ復元されていなければ、イントラ予測部は参照サンプルパッディング過程を行って参照サンプルを獲得する。また、イントラ予測部は、イントラ予測の誤差を減らすために参照サンプルフィルタリング過程を行う。つまり、周辺サンプル及び/または参照サンプルパッディング過程によって獲得された参照サンプルにフィルタリングを行って、フィルタリングされた参照サンプルを獲得する。 イントラ予測部は、このように取得された参照サンプルを用いて現在ブロックのサンプルを予測する。イントラ予測部は、フィルタリングされない参照サンプル又はフィルタリングされた参照サンプルを用いて現在ブロックのサンプルを予測する。本開示において、周辺サンプルは、少なくとも一つの参照ライン上のサンプルを含むことができる。例えば、周辺サンプルは、現在ブロックの境界に隣接したライン上の隣接サンプルを含むことができる。
次に、図6はイントラ予測に使われる予測モードの一実施形態を図示する。イントラ予測のために、イントラ予測方向を指示するイントラ予測モード情報がシグナリングできる。イントラ予測モード情報は、イントラ予測モードセットを構成する複数のイントラ予測モードのうち、いずれか1つを指示する。現在ブロックがイントラ予測されたブロックである場合、デコーダーはビットストリームから現在ブロックのイントラ予測モード情報を受信する。デコーダのイントラ予測部は、抽出されたイントラ予測モード情報に基づいて現在ブロックに対するイントラ予測を遂行する。
本発明の実施例によると、イントラ予測モードセットは、イントラ予測に使用される全てのイントラ予測モード(例えば、総67個のイントラ予測モード)を含む。より詳しくは、イントラ予測モードセットは、平面モード、DCモード、及び複数の(例えば、65個の)角度モード(つまり、方向モード)を含む。 それぞれのイントラ予測モードは、予め設定されたインデックス(つまり、イントラ予測モードインデックス)を介して指示される。例えば、図6に示したように、イントラ予測モードインデックス0は平面(planar)モードを指示し、イントラ予測モードインデックス1はDCモードを指示する。また、イントラ予測モードインデックス2乃至66は、互いに異なる角度モードをそれぞれ指示する。 角度モードは、既に設定された角度範囲以内の異なる角度をそれぞれ指示する。例えば、角度モードは時計回り方向に45°~-135°の角度範囲(すなわち、第1角度範囲)以内の角度を指示できる。前記角度モードは12時方向を基準に定義されてよい。この際、イントラ予測モードインデックス2は水平対角(Horizontal Diagonal、HDIA)モードを指示し、イントラ予測モードインデックス18は水平(Horizontal、HOR)モードを指示し、イントラ予測モードインデックス34は対角(Diagonal、DIA)モードを指示し、イントラ予測モードインデックス50は水直(Vertical、VER)モードを指示し、イントラ予測モードインデックス66は垂直対角(Vertical Diagonal、VDIA)モードを指示する。
一方、既に設定された角度範囲は、現在ブロックの形態によって個別に設定されてよい。例えば、現在ブロックが長方形ブロックであれば、時計回り方向に45°を超える或いは-135°未満の角度を示す広角モードがさらに用いられてよい。現在ブロックが水平ブロックであれば、角度モードは、時計回り方向に(45+offset 1)°~(-135+offset 1)°の角度範囲(すなわち、第2角度範囲)以内の角度を示すことができる。このとき、第1角度範囲を外れる角度モード67~76がさらに用いられてよい。また、現在ブロックが垂直ブロックであれば、角度モードは、時計回り方向に(45-offset 2)°~(-135-offset 2)の角度範囲(すなわち、第3角度範囲)以内の角度を示すことができる。このとき、第1角度範囲を外れる角度モード-10~-1がさらに用いられてよい。本発明の実施例によれば、offset 1及びoffset 2の値は、長方形ブロックの幅と高さとの比率によって個別に決定されてよい。また、offset 1及びoffset 2は正数であってよい。
本発明の更なる実施例によれば、イントラ予測モードセットを構成する複数の角度モードは、基本角度モードと拡張角度モードを含むことができる。このとき、拡張角度モードは基本角度モードに基づいて決定されてよい。
一実施例によれば、基本角度モードは、既存HEVC(High Efficiency Video Coding)標準のイントラ予測で用いられる角度に対応するモードであり、拡張角度モードは、次世代ビデオコーデック標準のイントラ予測で新しく追加される角度に対応するモードであってよい。より具体的に、基本角度モードは、イントラ予測モード{2,4,6,…,66}のいずれか一つに対応する角度モードであり、拡張角度モードは、イントラ予測モード{3,5,7,…,65}のいずれか一つに対応する角度モードであってよい。すなわち、拡張角度モードは、第1角度範囲内で基本角度モード間の角度モードであってよい。したがって、拡張角度モードが示す角度は、基本角度モードが示す角度に基づいて決定されてよい。
他の実施例によれば、基本角度モードは、既に設定された第1角度範囲以内の角度に対応するモードであり、拡張角度モードは、前記第1角度範囲を外れる広角モードであってよい。すなわち、基本角度モードは、イントラ予測モード{2,3,4,…,66}のいずれか一つに対応する角度モードであり、拡張角度モードは、イントラ予測モード{-10,-9,…,-1}及び{67,68,…,76}のいずれか一つに対応する角度モードであってよい。拡張角度モードが示す角度は、対応する基本角度モードが示す角度の反対側の角度と決定されてよい。したがって、拡張角度モードが示す角度は、基本角度モードが示す角度に基づいて決定されてよい。一方、拡張角度モードの個数はこれに限定されず、現在ブロックのサイズ及び/又は形態によって更なる張角度が定義されてよい。例えば、拡張角度モードは、イントラ予測モード{-14,-13,…,-1}及び{67,68,…,80}のいずれか一つに対応する角度モードと定義されてよい。一方、イントラ予測モードセットに含まれるイントラ予測モードの総個数は、前述した基本角度モードと拡張角度モードの構成によって可変してよい。
上記の実施例において、拡張角度モード間の間隔は、対応する基本角度モード間の間隔に基づいて設定されてよい。例えば、拡張角度モード{3,5,7,…,65}間の間隔は、対応する基本角度モード{2,4,6,…,66}間の間隔に基づいて決定されてよい。また、拡張角度モード{-10,-9,…,-1}間の間隔は、対応する反対側の基本角度モード{56,57,…,65}間の間隔に基づいて決定され、拡張角度モード{67,68,…,76}間の間隔は、対応する反対側の基本角度モード{3,4,…,12}間の間隔に基づいて決定されてよい。拡張角度モード間の角度間隔は、対応する基本角度モード間の角度間隔と同一となるように設定されてよい。また、イントラ予測モードセットにおいて拡張角度モードの個数は、基本角度モードの個数以下に設定されてよい。
本発明の実施例によれば、拡張角度モードは、基本角度モードに基づいてシグナルされてよい。例えば、広角モード(すなわち、拡張角度モード)は、第1角度範囲以内の少なくとも一つの角度モード(すなわち、基本角度モード)を代替することができる。代替される基本角度モードは、広角モードの反対側に対応する角度モードであってよい。すなわち、代替される基本角度モードは、広角モードが示す角度の反対方向の角度に対応するか或いは前記反対方向の角度から既に設定されたオフセットインデックスだけの差を有する角度に対応する角度モードである。本発明の実施例によれば、既に設定されたオフセットインデックスは、1である。代替される基本角度モードに対応するイントラ予測モードインデックスは、広角モードに再びマップされ、当該広角モードをシグナリングできる。例えば、広角モード{-10,-9,…,-1}は、イントラ予測モードインデックス{57,58,…,66}によってそれぞれシグナルされてよく、広角モード{67,68,…,76}は、イントラ予測モードインデックス{2,3,…,11}によってそれぞれシグナルされてよい。このように基本角度モードのためのイントラ予測モードインデックスで拡張角度モードをシグナルすることにより、各ブロックのイントラ予測に用いられる角度モードの構成が互いに異なっても、同じセットのイントラ予測モードインデックスがイントラ予測モードのシグナリングに用いられてよい。したがって、イントラ予測モード構成の変化によるシグナリングオーバーヘッドが最小化し得る。
一方、拡張角度モードの使用されるか否かは、現在ブロックの形態及びサイズのうち少なくとも一つに基づいて決定されてよい。一実施例によれば、現在ブロックのサイズが既に設定されたサイズよりも大きい場合、拡張角度モードが現在ブロックのイントラ予測のために用いられ、そうでない場合、基本角度モードのみが現在ブロックのイントラ予測のために用いられてよい。他の実施例によれば、現在ブロックが正方形以外のブロックである場合、拡張角度モードが現在ブロックのイントラ予測のために用いられ、現在ブロックが正方形ブロックである場合、基本角度モードのみが現在ブロックのイントラ予測のために用いられてよい。
図7は、本発明の一実施例に係るビットストリームを構成する基本単位であるネットワーク抽象化階層(Network Abstract Layer,NAL)ユニット(unit)を示す図である。ビデオ映像がエンコーダを経てビットストリーム(bitstream)として符号化して保存されるとき、前記ビットストリームはネットワーク抽象化階層単位で構成されてよい。NALユニットは、その目的に応じて様々な形態と定義されてよく、固有のIDで区分されてよい。NALユニットは、大きく、実際の映像データ情報を含む部分と、このようなビデオ映像を復号化するのに必要な情報を含む部分とに区分できる。図7は、種々のNALユニットのうち一部を示す図である。NALユニットは、あらかじめ定義された順序に基づいて構成され、当該NALユニットに含まれる情報も、既に設定された順序に基づいて構成されてよい。それぞれのNALユニットは、相互参照関係にあってよい。図7に示すように、NALユニットDPS(NAL unit DPS)は、デコーディングパラメータセット(Decoding parameter set,DPS)RBSPシンタックス(syntax)を示す。NALユニットVPS(NAL unit VPS)は、ビデオパラメータセット(Video parameter set,VPS)RBSPシンタックスを表す。NALユニットSPS(NAL unit SPS)は、シーケンスパラメータセット(Sequence parameter set,SPS)RBSPシンタックスを表す。NALユニットPPS(unit PPS)は、ピクチャーパラメータセット(Picture parameter set,PPS)RBSPシンタックスを表す。DPS RBSPシンタックスは、デコーダがビデオ復号化を行うために必要な情報(シンタックス要素)を含むシンタックスである。DPS RBSPシンタックスは、デコーディング能力情報(Decoding capability information,DCI)RBSPシンタックスと記述されてよい。VPS RBSPシンタックスは、基本レイヤ及び向上レイヤ符号化データを復号化するために共通に用いられる情報(シンタックス要素)を含むシンタックスである。SPS RBSPシンタックスは、シーケンス単位のレベルで送信されるシンタ
ックス要素を含むシンタックスである。SPS RBSPシンタックスは、VPSを参照してピクチャーを復号化するために共通に用いられる情報(シンタックス要素)を含むことができる。このとき、シーケンスは、一つ以上のピクチャーの集合を意味する。PPS RBSPシンタックスは、一つ以上のピクチャーを復号化するために共通に用いられる情報(シンタックス要素)を含むシンタックスである。上述したRBSPは、ローバイトシーケンスペイロード(Raw Byte Sequence Payload,RBSP)であって、バイト整列(byte aligned)されたNALユニットにカプセル化されるシンタックスを意味するものでよい。以下では、上述したシンタックスについて説明する。
図8は、本発明の一実施例に係るシンタックスを示す図である。
図8(a)は、デコーディングパラメータセット(Decoding parameter set,DPS)RBSPシンタックスを例示する図であり、図8(b)は、シーケンスパラメータセット(Sequence parameter set,SPS)RBSPシンタックスを例示する図であり、図8(c)は、プロファイルティアレベルシンタックス(profile tier level syntax)‘profile_tier_level()’を例示する図である。
図8(a)、(b)に示すように、プロファイルティアレベルシンタックス(profile tier level syntax)は、DPS RBSPシンタックスとSPS RBSPシンタックスに含まれて(呼び出されて)よい。プロファイルティアレベルシンタックスは、プロファイル、ティア、及びレベルに関連した情報を含むことができる。このとき、プロファイルティアレベルシンタックス(profile tier level syntax)は、一般制約情報(General constraint inforamtion,GCI)に対するシンタックス‘general_constraint_info()’を含むことができる。GCIに対するシンタックス(以下、GCIシンタックス)は、相互運用性(interoperability)のためにGCIシンタックス及び/又は他のシンタックス(例えば、DPS RBSPシンタックス、VPS RBSPシンタックス、SPS RBSPシンタックス、PPS RBSPシンタックス、Sliceheaderシンタックスなど)に含まれたツール及び/又は機能などを非活性化(disable)するよう制御できる。GCIシンタックスが、ツール及び/又は機能などを非活性化することを示す場合、下位シンタックスに宣言されたツール及び/又は機能は非活性化されてよい。このとき、デコーダがパースするNALユニットの位置によって、前記GCIシンタックスによって非活性化(disable)されるツール及び/又は機能などが全体ビットストリームに適用されるか或いは部分ビットストリームに適用されるかが決定されてよい。例えば、プロファイルティアレベルシンタックス‘profile_tier_level()’は、DPS RBSPシンタックス及び/又はSPS RBSPシンタックスに含まれてよく、プロファイルティアレベルシンタックスがDPS RBSPシンタックスに含まれる場合、前記プロファイルティアレベルシンタックスに含まれたGCIシンタックスは、全体ビットストリームに適用されてよい。さらに他の例として、プロファイルティアレベルシンタックスがSPS RBSPシンタックスに含まれる場合、前記プロファイルティアレベルシンタックスに含まれたGCIシンタックスは、コードされたレイヤビデオシーケンス(coded layer
video sequence,CLVS)に適用されてよい。
図9~図11は、本発明の一実施例に係るシンタックスを示す図である。
図9(a)は、本発明の一実施例に係る、ビデオパラメータセット(Video parameter set,VPS)RBSPシンタックスを例示する図であり、図9(b)は、本発明の一実施例に係る、一般制約情報(General constraint information,GCI)シンタックスを示す図である。図9(a)に示すように、GCIシンタックス‘general_constraint_info()’は、VPSシンタックスに含まれてよい。また、図9(a)に示してはいないが、上述したプロファイルティアレベルシンタックスは、VPSシンタックスに含まれてよく、GCIシンタックスは、VPSシンタックスに含まれたプロファイルティアレベルシンタックスに含まれてよい。GCIシンタックスは、一つ以上のシンタックス要素を含むことができる。図10、図11は、本発明の一実施例に係る、シーケンスパラメータセット(Sequence parameter set,SPS)RBSPシンタックスを示す図である。以下、図9~図11を参照して、GCIシンタックスに含まれるシンタックス要素である制約フラグについて説明する。
- no_qtbtt_dual_tree_intra_constraint_flag
no_qtbtt_dual_tree_intra_constraint_flagは、qtbtt_dual_tree_intra_flagを制御するフラグである。例えば、no_qtbtt_dual_tree_intra_constraint_flagの値が1であれば、qtbtt_dual_tree_intra_flagの値は0に設定されてよい。一方、no_qtbtt_dual_tree_intra_constraint_flagの値が0であれば、qtbtt_dual_tree_intra_flagの値に対する制約がない。すなわち、qtbtt_dual_tree_intra_flagの値は、SPS RBSPシンタックスのパッシング結果によって決定されてよい。
このとき、qtbtt_dual_tree_intra_flagは、coding_treeシンタックス構造にIスライスが用いられたか否かを示すフラグである。例えば、qtbtt_dual_tree_intra_flagの値が1であれば、Iスライスに対して各コーディングツリーユニット(coding tree unit,CTU)が暗示的(implicit)クアッドツリー分割により、64×64ルーマサンプルを有するコーディングユニットに分割されてよく、このとき、コーディングユニットは、ルーマ及びクロマ2個に対する別途のcoding_treeシンタックス構造のルートノード(最上位コーディングユニット)であることを示す。qtbtt_dual_tree_intra_flagの値が0であれば、Iスライスに対してcoding_treeシンタックス構造が用いられていないことを示す。上述したqtbtt_dual_tree_intra_flagは、sps_qtbtt_dual_tree_intra_flagと呼ぶことができる。
図10について説明すると、log2_ctu_size_minus5は、各コーディングツリーユニットのルーマコーディングツリーブロックのサイズ情報を示すシンタックス要素である。log2_ctu_size_minus5に5を足すと、log2段上のルーマコーディングツリーブロックのサイズ(CtbLog2SizeY)が分かる。これを式で表すと、下記の式1の通りである。下記の式1においてCtbSizeYは、各ルーマコーディングツリーブロックのサイズを意味する。
- no_partition_constraints_override_constraint_flag
no_partition_constraints_override_constraint_flagは、partition_constraints_override_enabled_flagを制御するフラグである。例えば、no_partition_constraints_override_constraint_flagの値が1であれば、partition_constraints_override_enabled_flagの値は、0に設定されてよい。一方、no_partition_constraints_override_constraint_flagの値が0であれば、partition_constraints_override_enabled_flagの値に対する制約がない。すなわち、partition_constraints_override_enabled_flagの値は、SPS RBSPシンタックスのパッシング結果によって決定されてよい。
このとき、partition_constraints_override_enabled_flagは、ピクチャーヘッダー(picture header,PH)内のph_partition_constraints_override_flagが存在するか否かを示すフラグである。partition_constraints_override_enabled_flagの値が1であれば、ph_partition_constraints_override_flagが存在することを示し、partition_constraints_override_enabled_flagの値が0であれば、ph_partition_constraints_override_flagが存在しないことを示す。上述したpartition_constraints_override_enabled_flagは、sps_partition_constraints_override_enabled_flagと呼ぶことができる。
- no_sao_constraint_flag
no_sao_constraint_flagは、sps_sao_enabled_flagを制御するフラグである。例えば、no_sao_constraint_flagの値が1であれば、sps_sao_enabled_flagの値は、0に設定されてよい。一方、no_sao_constraint_flagの値が0であれば、sps_sao_enabled_flagの値に対する制約がない。すなわち、sps_sao_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_sao_enabled_flagは、サンプル適応オフセットプロセス(sample adaptive offset process)が、CLVS(coded layer video sequence)に対するデブロッキングフィルタープロセス(deblocking filter process)後に復元されたピクチャーに適用されるか否かを示すフラグである。例えば、sps_sao_enabled_flagの値が1であれば、CLVSに対するデブロッキングフィルタープロセス後に復元されたピクチャーにサンプル適応オフセットプロセスは活性化され、CLVSに対するデブロッキングフィルタープロセス後に復元されたピクチャーにサンプル適応オフセットプロセスが適用されることを示す。sps_sao_enabled_flagの値が0であれば、CLVSに対するデブロッキングフィルタープロセス後に復元されたピクチャーにサンプル適応オフセットプロセスは非活性化され、CLVSに対するデブロッキングフィルタープロセス後に復元されたピクチャーにサンプル適応オフセットプロセスが適用されないことを示す。
- no_alf_constraint_flag
no_alf_constraint_flagは、sps_alf_enabled_flagを制御するフラグである。例えば、no_alf_constraint_flagの値が1であれば、sps_alf_enabled_flagの値は、0に設定されてよい。一方、no_alf_constraint_flagの値が0であれば、sps_alf_enabled_flagの値に対する制約がない。すなわち、sps_alf_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_alf_enabled_flagは、CLVSにおいてピクチャーのデコーディングに適用される適応ループフィルター(adaptive loop filter)の活性化されるか否かを示すフラグである。例えば、sps_alf_enabled_flagの値が1であれば、適応ループフィルターは活性化され、CLVSにおいてピクチャーのデコーディングに適応ループフィルターが適用されてよいことを示す。sps_alf_enabled_flagの値が0であれば、適応ループフィルターは非活性化され、CLVSにおいてピクチャーのデコーディングに適応ループフィルターが適用されないことを示す。
- no_joint_cbcr_constraint_flag
no_joint_cbcr_constraint_flagは、sps_joint_cbcr_enabled_flagを制御するフラグである。例えば、no_joint_cbcr_constraint_flagの値が1であれば、sps_joint_cbcr_enabled_flagの値は、0に設定されてよい。一方、no_joint_cbcr_constraint_flagの値が0であれば、sps_joint_cbcr_enabled_flag値に対する制約がない。すなわち、sps_joint_cbcr_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_joint_cbcr_enabled_flagは、CLVSにおいてピクチャーのデコーディングに用いられるクロマ残差の結合コーディング(joint coding of chroma residuals)が活性化されるか否かを示すフラグである。例えば、sps_joint_cbcr_enabled_flagの値が1であれば、クロマ残差の結合コーディングは活性化され、CLVSにおいてピクチャーのデコーディングにクロマ残差の結合コーディングが用いられてよいことを示す。sps_joint_cbcr_enabled_flagの値が0であれば、クロマ残差の結合コーディングは非活性化され、CLVSにおいてピクチャーのデコーディングにクロマ残差の結合コーディングは用いられないことを示す。一方、sps_joint_cbcr_enabled_flagが存在しなくてもよいが、この時には、sps_joint_cbcr_enabled_flagの値は0と推論されてよい。
- no_ref_wraparound_constraint_flag
no_ref_wraparound_constraint_flagは、sps_ref_wraparound_enabled_flagを制御するフラグである。例えば、no_ref_wraparound_constraint_flagの値が1であれば、sps_ref_wraparound_enabled_flagの値は、0に設定されてよい。一方、no_ref_wraparound_constraint_flagの値が0であれば、sps_ref_wraparound_enabled_flagの値に対する制約がない。すなわち、sps_ref_wraparound_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_ref_wraparound_enabled_flagは、CLVSにおいてピクチャーのデコーディングに適用される水平ラップ-アラウンドモーション補償(horizontal wrap-around motion compensation)の活性化されるか否かを示すフラグである。例えば、sps_ref_wraparound_enabled_flagの値が1であれば、水平ラップ-アラウンドモーション補償は活性化され、CLVSにおいてピクチャーのデコーディングに水平ラップ-アラウンドモーション補償が適用されてよいことを示す。sps_ref_wraparound_enabled_flagの値が0であれば、水平ラップ-アラウンドモーション補償は非活性化され、CLVSにおいてピクチャーのデコーディングに水平ラップ-アラウンドモーション補償は適用されないことを示す。
- no_temporal_mvp_constraint_flag
no_temporal_mvp_constraint_flagは、sps_temporal_mvp_enabled_flagを制御するフラグである。例えば、no_temporal_mvp_constraint_flagの値が1であれば、sps_temporal_mvp_enabled_flagの値は0に設定されてよい。一方、no_temporal_mvp_constraint_flagの値が0であれば、sps_temporal_mvp_enabled_flagの値に対する制約がない。すなわち、sps_temporal_mvp_enabled_flag値はSPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_temporal_mvp_enabled_flagは、CLVSにおいてピクチャーのデコーディングに用いられる時間的モーションベクトル予測子(temporal motion vector predictors)の活性化されるか否かを示すフラグである。例えば、sps_temporal_mvp_enabled_flagの値が1であれば、時間的モーションベクトル予測子は活性化され、CLVSにおいてピクチャーのデコーディングに時間的モーションベクトル予測子が用いられてよいことを示す。sps_temporal_mvp_enabled_flagの値が0であれば、時間的モーションベクトル予測子は非活性化され、CLVSにおいてピクチャーのデコーディングに時間的モーションベクトル予測子は用いられないことを示す。
- no_sbtmvp_constraint_flag
no_sbtmvp_constraint_flagは、sps_sbtmvp_enabled_flagを制御するフラグである。例えば、no_sbtmvp_constraint_flagの値が1であれば、sps_sbtmvp_enabled_flagの値は0に設定されてよい。一方、no_sbtmvp_constraint_flagの値が0であれば、sps_sbtmvp_enabled_flagの値に対する制約がない。すなわち、sps_sbtmvp_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_sbtmvp_enabled_flagは、CLVSにおいてピクチャーのデコーディングに用いられるサブブロックベースの時間的モーションベクトル予測子(subblock-based temporal motion vector predictors)の活性化されるか否かを示すフラグである。例えば、sps_sbtmvp_enabled_flagの値が1であれば、サブブロックベースの時間的モーションベクトル予測子は活性化され、CLVSにおいてピクチャーのデコーディングにサブブロックベースの時間的モーションベクトル予測子が用いられてよいことを示す。このとき、ピクチャーのスライスタイプ(type)は、Iスライス以外のタイプ(例えば、Bスライス、Pスライス)であってよい。sps_sbtmvp_enabled_flagの値が0であれば、サブブロックベースの時間的モーションベクトル予測子は非活性化され、CLVSにおいてピクチャーのデコーディングにサブブロックベースの時間的モーションベクトル予測子は用いられないことを示す。
- no_amvr_constraint_flag
no_amvr_constraint_flagは、sps_amvr_enabled_flagを制御するフラグである。例えば、no_amvr_constraint_flagの値が1であれば、sps_amvr_enabled_flagの値は0に設定されてよい。一方、no_amvr_constraint_flagの値が0であれば、sps_amvr_enabled_flagの値に対する制約がない。すなわち、sps_amvr_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_amvr_enabled_flagは、CLVSにおいてピクチャーのデコーディングに用いられるモーションベクトル差解像度(motion vector difference resolution)の活性化されるか否かを示すフラグである。例えば、sps_amvr_enabled_flagの値が1であれば、モーションベクトル差解像度は活性化され、CLVSにおいてピクチャーのデコーディングにモーションベクトル差解像度が用いられてよいことを示す。sps_amvr_enabled_flagの値が0であれば、モーションベクトル差解像度は非活性化され、CLVSにおいてピクチャーのデコーディングにモーションベクトル差解像度は用いられないことを示す。
- no_bdof_constraint_flag
no_bdof_constraint_flagは、sps_bdof_enabled_flagを制御するフラグである。例えば、no_bdof_constraint_flagの値が1であれば、sps_bdof_enabled_flagの値は0に設定されてよい。一方、no_bdof_constraint_flagの値が0であれば、sps_bdof_enabled_flagの値に対する制約がない。すなわち、sps_bdof_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_bdof_enabled_flagは、CLVSにおいてピクチャーのデコーディングに用いられる両方向オプティカルフローインター予測(bi-directional optical flow inter prediction)の活性化されるか否かを示すフラグである。例えば、sps_bdof_enabled_flagの値が1であれば、両方向オプティカルフローインター予測は活性化され、CLVSにおいてピクチャーのデコーディングに両方向オプティカルフローインター予測は用いられてよいことを示す。sps_bdof_enabled_flagの値が0であれば、両方向オプティカルフローインター予測は非活性化され、CLVSにおいてピクチャーのデコーディングに両方向オプティカルフローインター予測は用いられないことを示す。
- no_dmvr_constraint_flag
no_dmvr_constraint_flagは、sps_dmvr_enabled_flagを制御するフラグである。例えば、no_dmvr_constraint_flagの値が1であれば、sps_dmvr_enabled_flagの値は0に設定されてよい。一方、no_dmvr_constraint_flagの値が0であれば、sps_dmvr_enabled_flagの値に対する制約がない。すなわち、sps_dmvr_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_dmvr_enabled_flagは、CLVSにおいてピクチャーのデコーディングに用いられるデコーダモーションベクトルリファインメント(decoder motion vector refinement)に基づく両方向予測(bi-prediction)の活性化されるか否かを示すフラグである。例えば、sps_dmvr_enabled_flagの値が1であれば、デコーダモーションベクトルリファインメントに基づく両方向予測は活性化され、CLVSにおいてピクチャーのデコーディングにデコーダモーションベクトルリファインメントに基づく両方向予測が用いられてよいことを示す。sps_dmvr_enabled_flagの値が0であれば、デコーダモーションベクトルリファインメントに基づく両方向予測は非活性化され、CLVSにおいてピクチャーのデコーディングにデコーダモーションベクトルリファインメントに基づく両方向予測は用いられないことを示す。
- no_cclm_constraint_flag
no_cclm_constraint_flagは、sps_cclm_enabled_flagを制御するフラグである。例えば、no_cclm_constraint_flagの値が1であれば、sps_cclm_enabled_flagの値は0に設定されてよい。一方、no_cclm_constraint_flagの値が0であれば、sps_cclm_enabled_flagの値に対する制約がない。すなわち、sps_cclm_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_cclm_enabled_flagは、CLVSにおいてピクチャーのデコーディングに用いられるルーマ成分からクロマ成分への交差-成分線形モデルイントラ予測(cross-component linear model intra prediction)の活性化されるか否かを示すフラグである。例えば、sps_cclm_enabled_flagの値が1であれば、ルーマ成分からクロマ成分への交差-成分線形モデルイントラ予測は活性化され、CLVSにおいてピクチャーのデコーディングにルーマ成分からクロマ成分への交差-成分線形モデルイントラ予測が用いられてよいことを示す。sps_cclm_enabled_flagの値が0であれば、ルーマ成分からクロマ成分への交差-成分線形モデルイントラ予測は非活性化され、CLVSにおいてピクチャーのデコーディングにルーマ成分からクロマ成分への交差-成分線形モデルイントラ予測は用いられないことを示す。一方、sps_cclm_enabled_flagが存在しなくてもよいが、この時には、sps_cclm_enabled_flagの値は0と推論されてよい。
- no_mts_constraint_flag
no_mts_constraint_flagは、sps_mts_enabled_flagを制御するフラグである。例えば、no_mts_constraint_flagの値が1であれば、sps_mts_enabled_flagの値は0に設定されてよい。一方、no_mts_constraint_flagの値が0であれば、sps_mts_enabled_flag値に対する制約がない。すなわち、sps_mts_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_mts_enabled_flagは、シーケンスパラメータセット(sequence parameter set,SPS)にsps_explicit_mts_intra_enabled_flag及びsps_explicit_mts_inter_enabled_flagが存在するか否かを示すフラグである。例えば、sps_mts_enabled_flagの値が1であれば、SPSにsps_explicit_mts_intra_enabled_flag及びsps_explicit_mts_inter_enabled_flagが存在することを示す。sps_mts_enabled_flagの値が0であれば、SPSにsps_explicit_mts_intra_enabled_flag及びsps_explicit_mts_inter_enabled_flagが存在しないことを示す。
このとき、sps_explicit_mts_intra_enabled_flag及びsps_explicit_mts_inter_enabled_flagは、mts_idxがCLVSのイントラコーディングユニットシンタックスに存在するか否かを示すフラグである。例えば、sps_explicit_mts_intra_enabled_flag/sps_explicit_mts_inter_enabled_flagの値が1であれば、mts_idxがCLVSのイントラ/インターコーディングユニットシンタックスに存在してよいことを示す。sps_explicit_mts_intra_enabled_flag/sps_explicit_mts_inter_enabled_flagの値が0であれば、mts_idxがCLVSのイントラ/インターコーディングユニットシンタックスに存在しないことを示す。一方、sps_explicit_mts_intra_enabled_flag/sps_explicit_mts_inter_enabled_flagが存在しなくてもよいがこの時には、sps_explicit_mts_intra_enabled_flag/sps_explicit_mts_inter_enabled_flagの値は0と推論されてよい。
上述したmts_idxは、現在コーディングユニットにおいて関連しているルーマ変換ブロックの水平及び垂直方向に沿って適用される変換カーネルを示すシンタックス要素である。
- no_sbt_constraint_flag
no_sbt_constraint_flagは、sps_sbt_enabled_flagを制御するフラグである。例えば、no_sbt_constraint_flagの値が1であれば、sps_sbt_enabled_flagの値は0に設定されてよい。一方、no_sbt_constraint_flagの値が0であれば、sps_sbt_enabled_flag値に対する制約がない。すなわち、sps_sbt_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_sbt_enabled_flagは、CLVSにおいてピクチャーのデコーディングに用いられるインター予測されたコーディングユニット(inter-predicted coding unit(CU)s)に対するサブブロック変換の活性化されるか否かを示すフラグである。例えば、sps_sbt_enabled_flagの値が1であれば、インター予測されたコーディングユニットに対するサブブロック変換は活性化され、CLVSにおいてピクチャーのデコーディングにインター予測されたコーディングユニットに対するサブブロック変換が用いられてよいことを示す。sps_sbt_enabled_flagの値が0であれば、インター予測されたコーディングユニットに対するサブブロック変換は非活性化され、CLVSにおいてピクチャーのデコーディングにインター予測されたコーディングユニットに対するサブブロック変換は用いられないことを示す。
- no_affine_motion_constraint_flag
no_affine_motion_constraint_flagは、sps_affine_enabled_flagを制御するフラグである。例えば、no_affine_motion_constraint_flagの値が1であれば、sps_affine_enabled_flagの値は0に設定されてよい。一方、no_affine_motion_constraint_flagの値が0であれば、sps_affine_enabled_flagの値に対する制約がない。すなわち、sps_affine_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_affine_enabled_flagは、CLVSにおいてピクチャーのデコーディングに用いられるアフィンモデルベースのモーション補償(affine model based motion compensation)の活性化されるか否かを示すフラグである。また、sps_affine_enabled_flagは、CLVSのコーディングユニットシンタックスにinter_affine_flag及びcu_affine_type_flagが存在するか否かを示す。例えば、sps_affine_enabled_flagの値が1であれば、アフィンモデルベースのモーション補償は活性化され、CLVSにおいてピクチャーのデコーディングにアフィンモデルベースのモーション補償が用いられてよいことを示す。また、sps_affine_enabled_flagの値が1であれば、CLVSのコーディングユニットシンタックスにinter_affine_flag及びcu_affine_type_flagが存在してよいことを示す。sps_affine_enabled_flagの値が0であれば、アフィンモデルベースのモーション補償は非活性化され、CLVSにおいてピクチャーのデコーディングにアフィンモデルベースのモーション補償が用いられないことを示す。sps_affine_enabled_flagの値が0であれば、CLVSのコーディングユニットシンタックスにinter_affine_flag及びcu_affine_type_flagが存在しないことを示す。
このとき、inter_affine_flagは、現在コーディングユニットをデコードする時に、現在コーディングユニットの予測サンプルを生成するためにアフィンモデルベースのモーション補償が用いられるか否かを示すフラグである。cu_affine_type_flagは、現在コーディングユニットをデコードする時に、4個のパラメータを使用するアフィンモデルベースのモーション補償が用いられるか、6個のパラメータを使用するアフィンモデルベースのモーション補償が用いられるかを示すフラグである。
- no_bcw_constraint_flag
no_bcw_constraint_flagは、sps_bcw_enabled_flagを制御するフラグである。例えば、no_bcw_constraint_flagの値が1であれば、sps_bcw_enabled_flagの値は0に設定されてよい。一方、no_bcw_constraint_flagの値が0であれば、sps_bcw_enabled_flagの値に対する制約がない。すなわち、sps_bcw_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_bcw_enabled_flagは、CLVSにおいてピクチャーのデコーディングに用いられるコーディングユニット加重値(weights)を使用した両方向予測の活性化されるか否かを示すフラグである。また、sps_bcw_enabled_flagは、CLVSのコーディングユニットシンタックスにbcw_idxが存在するか否かを示すことができる。例えば、sps_bcw_enabled_flagの値が1であれば、コーディングユニット加重値を使用した両方向予測は活性化され、CLVSにおいてピクチャーのデコーディングにコーディングユニット加重値を使用した両方向予測が用いられてよいことを示す。また、sps_bcw_enabled_flag値が1であれば、CLVSのコーディングユニットシンタックスにbcw_idxが存在してよいことを示す。sps_bcw_enabled_flagの値が0であれば、コーディングユニット加重値を使用した両方向予測は非活性化され、CLVSにおいてピクチャーのデコーディングにコーディングユニット加重値を使用した両方向予測は用いられないことを示す。また、sps_bcw_enabled_flagの値が0であれば、CLVSのコーディングユニットシンタックスにbcw_idxが存在しないことを示す。
このとき、bcw_idxは、コーディングユニット加重値を使用した両方向予測と関連したインデックスを示すシンタックス要素である。
- no_ibc_constraint_flag
no_ibc_constraint_flagは、sps_ibc_enabled_flagを制御するフラグである。例えば、no_ibc_constraint_flagの値が1であれば、sps_ibc_enabled_flagの値は0に設定されてよい。一方、no_ibc_constraint_flagの値が0であれば、sps_ibc_enabled_flag値に対する制約がない。すなわち、sps_ibc_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_ibc_enabled_flagは、CLVSにおいてピクチャーのデコーディングに用いられるIBC(intra block copy)予測モードの活性化されるか否かを示すフラグである。例えば、sps_ibc_enabled_flagの値が1であれば、IBC予測モードは活性化され、CLVSにおいてピクチャーのデコーディングにIBC予測モードが用いられてよいことを示す。sps_ibc_enabled_flagの値が0であれば、IBC予測モードは非活性化され、CLVSにおいてピクチャーのデコーディングにIBC予測モードは用いられないことを示す。
- no_ciip_constraint_flag
no_ciip_constraint_flagは、sps_ciip_enabled_flagを制御するフラグである。例えば、no_ciip_constraint_flagの値が1であれば、sps_ciip_enabled_flagの値は0に設定されてよい。一方、no_ciip_constraint_flagの値が0であれば、sps_ciip_enabled_flagの値に対する制約がない。すなわち、sps_ciip_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_ciip_enabled_flagは、ciip_flagがインターコーディングユニットに対するコーディングユニットシンタックスに存在するか否かを示すフラグである。例えば、sps_ciip_enabled_flagの値が0であれば、ciip_flagがインターコーディングユニットに対するコーディングユニットシンタックスに存在しないことを示す。sps_ciip_enabled_flagの値が1であれば、ciip_flagがインターコーディングユニットに対するコーディングユニットシンタックスに存在してもよいことを示す。
ciip_flagは、結合されたインター-ピクチャーマージ(inter-picture merge)及びイントラ-ピクチャー予測(intra-picture prediction)が現在コーディングユニットに対して適用されるか否かを示すフラグである。
- no_fpel_mmvd_constraint_flag
no_fpel_mmvd_constraint_flagは、sps_fpel_mmvd_enabled_flagを制御するフラグである。例えば、no_fpel_mmvd_constraint_flagの値が1であれば、sps_fpel_mmvd_enabled_flagの値は0に設定されてよい。一方、no_fpel_mmvd_constraint_flag値が0であれば、sps_fpel_mmvd_enabled_flagの値に対する制約がない。すなわち、sps_fpel_mmvd_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_fpel_mmvd_enabled_flagは、モーションベクトル差(motion vector difference)を使用するマージモード(merge mode)で用いられるサンプル精密度のタイプを示すフラグである。例えば、sps_fpel_mmvd_enabled_flagの値が1であれば、モーションベクトル差を使用するマージモードで用いられるサンプル精密度が整数サンプル精密度(integer sample precision)であることを示す。sps_fpel_mmvd_enabled_flagの値が0であれば、モーションベクトル差を使用するマージモードで用いられるサンプル精密度が分数サンプル精密度(fractional sample precision)であることを示す。一方、sps_fpel_mmvd_enabled_flagが存在しなくてもよいが、この時には、sps_fpel_mmvd_enabled_flagの値は0と推論されてよい。sps_fpel_mmvd_enabled_flagは、sps_mmvd_fullpel_only_flagと呼ぶこともできる。
- no_triangle_constraint_flag
no_triangle_constraint_flagは、sps_triangle_enabled_flagを制御するフラグである。例えば、no_triangle_constraint_flagの値が1であれば、sps_triangle_enabled_flagの値は0に設定されてよい。一方、no_triangle_constraint_flagの値が0であれば、sps_triangle_enabled_flagの値に対する制約がない。すなわち、sps_triangle_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_triangle_enabled_flagは、三角形形態ベースモーション補償が適用されるか否かを示すフラグである。三角形形態ベースモーション補償予測方法は、インターコーディングユニットの斜線を基準に2つの三角形模型に区分されてよく、各三角形領域のモーション情報セットが異なり得るが、これに基づいてモーション補償を行い、予測サンプルを生成することができる
- no_ladf_constraint_flag
no_ladf_constraint_flagは、sps_ladf_enabled_flagを制御するフラグである。例えば、no_ladf_constraint_flagの値が1であれば、sps_ladf_enabled_flagの値は0に設定されてよい。一方、no_ladf_constraint_flagの値が0であれば、sps_ladf_enabled_flagの値に対する制約がない。すなわち、sps_ladf_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_ladf_enabled_flagは、SPS内にsps_num_ladf_intervals_minus2、sps_ladf_lowest_interval_qp_offset、sps_ladf_qp_offset[i]、及びsps_ladf_delta_threshold_minus1[i]が存在するか否かを示すフラグである。例えば、sps_ladf_enabled_flagの値が1であれば、SPS内にsps_num_ladf_intervals_minus2、sps_ladf_lowest_interval_qp_offset、sps_ladf_qp_offset[i]、及びsps_ladf_delta_threshold_minus1[i]が存在することを示す。sps_ladf_enabled_flagの値が0であれば、SPS内にsps_num_ladf_intervals_minus2、sps_ladf_lowest_interval_qp_offset、sps_ladf_qp_offset[i]、及びsps_ladf_delta_threshold_minus1[i]が存在しないことを示す。
sps_num_ladf_intervals_minus2は、SPSに存在するシンタックス要素であるsps_ladf_delta_threshold_minus1[i]、及びsps_ladf_qp_offset[i]の個数を示すシンタックス要素である。sps_num_ladf_intervals_minus2は、0~3の範囲の値を有してよい。
sps_ladf_lowest_interval_qp_offsetは、変数である量子化パラメータ(quantization parameter,QP)を導出するために用いられるオフセットを示すシンタックス要素である。sps_ladf_lowest_interval_qp_offsetは、-63~63の範囲の値を有してよい。
sps_ladf_qp_offset[i]は、変数である量子化パラメータを導出するために用いられるオフセット配列を示すシンタックス要素である。sps_ladf_qp_offset[i]は、-63~63の範囲の値を有してよい。
sps_ladf_delta_threshold_minus1[i]は、i番目のルーマ強度レベルインターバル(luma intensity level inderval)の下限を指定するシンタックス要素であるSpsLadfIntervalLowerBound[i]の値を計算するために用いられるシンタックス要素である。sps_ladf_delta_threshold_minus1[i]は、0~2BitDepth-3の範囲の値を有してよい。BitDepthは、ビット深度を示すものであって、映像の明るさを表現するために必要なビット数を意味する。
- no_transform_skip_constraint_flag
no_transform_skip_constraint_flagは、sps_transform_skip_enabled_flagを制御するフラグである。例えば、no_transform_skip_constraint_flagの値が1であれば、sps_transform_skip_enabled_flagの値は0に設定されてよい。一方、no_transform_skip_constraint_flagの値が0であれば、sps_transform_skip_enabled_flagの値に対する制約がない。すなわち、sps_transfrom_skip_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_transform_skip_enabled_flagは、変換ユニット(transform unit)シンタックス内にtransform_skip_flagが存在するか否かを示すフラグである。例えば、sps_transform_skip_enabled_flagの値が1であれば、変換ユニットシンタックス内にtransform_skip_flagが存在してよいことを示す。sps_transform_skip_enabled_flagの値が0であれば、変換ユニットシンタックス内にtransform_skip_flagが存在しないことを示す。
transform_skip_flagは、変換ブロックに変換が適用されたか否かを示すフラグである。
- no_bdpcm_constraint_flag
no_bdpcm_constraint_flagは、sps_bdpcm_enabled_flagを制御するフラグである。例えば、no_bdpcm_constraint_flagの値が1であれば、sps_bdpcm_enabled_flagの値は0に設定されてよい。一方、no_bdpcm_constraint_flagの値が0であれば、sps_bdpcm_enabled_flagの値に対する制約がない。すなわち、sps_bdpcm_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_bdpcm_enabled_flagは、intra_bdpcm_luma_flag及びintra_bdpcm_chroma_flagがイントラコーディングユニットに対するコーディングユニットシンタックスに存在するか否かを示すフラグである。例えば、sps_bdpcm_enabled_flagの値が1であれば、intra_bdpcm_luma_flag及びintra_bdpcm_chroma_flagがイントラコーディングユニットに対するコーディングユニットシンタックスに存在してよいことを示す。sps_bdpcm_enabled_flagの値が0であれば、intra_bdpcm_luma_flag及びintra_bdpcm_chroma_flagがイントラコーディングユニットに対するコーディングユニットシンタックスに存在しないことを示す。一方、sps_bdpcm_enabled_flagが存在しなくてもよいが、この時には、sps_bdpcm_enabled_flagの値は0と推論されてよい。
intra_bdpcm_luma_flag/intra_bdpcm_chroma_flagは、bdpcm(Block-based Delta Pulse Code Modulation)が特定位置(x0,y0)のルーマ/クロマコーディングブロックに適用されるか否かを示すフラグである。
- no_qp_delta_constraint_flag
no_qp_delta_constraint_flagは、cu_qp_delta_enabled_flagを制御するフラグである。例えば、no_qp_delta_constraint_flag値が1であれば、cu_qp_delta_enabled_flagの値は0に設定されてよい。一方、no_qp_delta_constraint_flagの値が0であれば、cu_qp_delta_enabled_flagの値に対する制約がない。すなわち、cu_qp_delta_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、cu_qp_delta_enabled_flagは、PPSを参照するPH内に、シンタックス要素であるph_cu_qp_delta_subdiv_intra_slice及びph_cu_qp_delta_subdiv_inter_sliceが存在するか否かを示すフラグである。また、cu_qp_delta_enabled_flagは、変換ユニットシンタックス及びパレットコーディングシンタックス内に含まれるシンタックス要素であるcu_qp_delta_abs及びcu_qp_delta_sign_flagが存在するか否かを示す。例えば、cu_qp_delta_enabled_flagの値が1であれば、PPSを参照するPH内に、シンタックス要素であるph_cu_qp_delta_subdiv_intra_slice及びph_cu_qp_delta_subdiv_inter_sliceが存在してよいことを示す。また、cu_qp_delta_enabled_flagの値が1であれば、変換ユニットシンタックス及びパレットコーディングシンタックス内に、シンタックス要素であるcu_qp_delta_abs及びcu_qp_delta_sign_flagが存在してよいことを示す。cu_qp_delta_enabled_flagの値が0であれば、PPSを参照するPH内に、シンタックス要素であるph_cu_qp_delta_subdiv_intra_slice及びph_cu_qp_delta_subdiv_inter_sliceが存在しないことを示す。またcu_qp_delta_enabled_flagの値が0であれば、変換ユニットシンタックス及びパレットコーディングシンタックス内に、シンタックス要素であるcu_qp_delta_abs及びcu_qp_delta_sign_flagが存在しないことを示す。
ph_cu_qp_delta_subdiv_intra_slice/ph_cu_qp_delta_subdiv_inter_sliceは、cu_qp_delta_abs及びcu_qp_delta_sign_flagを伝達(convey)するイントラ/インタースライス内のコーディングユニットの最大値‘cbSubdiv’を示すシンタックス要素である。このとき、‘cbSubdiv’は、ブロックの下位分割値を表す。
cu_qp_delta_absは、現在コーディングユニットの量子化パラメータと現在コーディングユニットの量子化パラメータ予測値との差‘CuQpDeltaVal’の絶対値を示すシンタックス要素である。
cu_qp_delta_sign_flagは、前記‘CuQpDeltaVal’の符号(sign)を示すフラグである。
- no_dep_quant_constraint_flag
no_dep_quant_constraint_flagは、sps_dep_quant_enabled_flagを制御するフラグである。例えば、no_dep_quant_constraint_flagの値が1であれば、sps_dep_quant_enabled_flagの値は0に設定されてよい。一方、no_dep_quant_constraint_flagの値が0であれば、sps_dep_quant_enabled_flagの値に対する制約がない。すなわち、sps_dep_quant_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_dep_quant_enabled_flagは、SPSを参照するピクチャーに用いられる従属量子化(dependent quantization)の活性化されるか否かを示すフラグである。例えば、sps_dep_quant_enabled_flagの値が1であれば、従属量子化は活性化され、SPSを参照するピクチャーに従属量子化が用いられてよいことを示す。sps_dep_quant_enabled_flagの値が0であれば、従属量子化は非活性化され、SPSを参照するピクチャーに従属量子化は用いられないことを示す。
- no_sign_data_hiding_constraint_flag
no_sign_data_hiding_constraint_flagは、sps_sign_data_hiding_enabled_flagを制御するフラグである。例えば、no_sign_data_hiding_constraint_flagの値が1であれば、sps_sign_data_hiding_enabled_flagの値は0に設定されてよい。一方、no_sign_data_hiding_constraint_flagの値が0であれば、sps_sign_data_hiding_enabled_flagの値に対する制約がない。すなわち、sps_sign_data_hiding_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_sign_data_hiding_enabled_flagは、SPSを参照するピクチャーに用いられる符号ビット隠し(sign bit hiding)の活性化されるか否かを示すフラグである。例えば、sps_sign_data_hiding_enabled_flagの値が1であれば、SPSを参照するピクチャーに用いられる符号ビット隠しは活性化され、SPSを参照するピクチャーに符号ビット隠しが用いられてよいことを示す。sps_sign_data_hiding_enabled_flagの値が0であれば、SPSを参照するピクチャーに用いられる符号ビット隠しは非活性化され、SPSを参照するピクチャーに符号ビット隠しが用いられないことを示す。
図12は、本発明の一実施例に係る、シーケンスパラメータセット(Sequence parameter set,SPS)RBSPシンタックス(syntax)を示す図である。
図12について説明すると、SPS RBSPシンタックス構造には、sps_scaling_list_enabled_flagを含め、高い動的範囲(high dynamic range,hdr)に関連したパラメータ情報及び後述するspsパラメータを追加するための拡張空間も含まれている。図12に開示されたhrd_parameters_present_flag以下のif節が、hdrに関連したパラメータ情報であってよい。
図13は、本発明の一実施例に係る、一般制約情報(General constraint information,GCI)シンタックス(syntax)を示す図である。図13に示すように、GCIシンタックスは、変換スキップ(transform skip)及びbdpcm(Block-based Delta Pulse Code Modulation)と関連したフラグを含むことができ、前記フラグをシグナルすることができる。
前述した、no_transform_skip_constraint_flag、no_bdpcm_constraint_flagについて、図11、図13を用いてより詳細に説明する。図11に示すように、SPS RBSPシンタックスは、sps_transform_skip_enabled_flagの値が1である場合に、sps_bdpcm_enabled_flagをシグナルする構造を有する。このような構造は、bdpcmの活性化されるか否かを示すためには変換スキップ(transform skip)に対する活性化条件が先行されるべきであることを意味する。
したがって、GCIシンタックスにおいてもSPS RBSPシンタックスと同じ方法のシグナリング構造が必要である。例えば、no_tranform_skip_coanstraint_flagの値が1であれば、sps_transform_skip_enabled_flagは、0の値を有し、よって、変換スキップ(transform skip)は非活性化される。このとき、no_bdpcm_constraint_flagが1又は0に設定されることは、無意味に1ビットを使用することである。言い換えると、変換スキップ(transform skip)が活性化される場合(sps_transform_skip_enabled_flag ==1)に、bdpcmの活性化されるか否かを示すためのシンタックス要素(sps_bdpcm_enabled_flag)がシグナルされるため、変換スキップ(transform skip)が非活性化される場合には、bdpcmを制約するフラグ(no_bdpcm_constraint_flag)をシグナルすることは、余計なビットの浪費である。
したがって、図13に示すように、no_transform_skip_constraint_flagの値が0のときに、no_bdpcm_constraint_flagがシグナルされてよい。これは、下記の式2のように表現されてよい。
図14は、本発明の一実施例に係る、一般制約情報(General constraint information,GCI)シンタックス(syntax)を示す図である。図14に示すように、GCIシンタックスは、時間的モーションベクトル予測子(temporal motion vector predictors,temporal mvp)及びサブブロックベースの時間的モーションベクトル予測子(subblock-based temporal motion vector predictors,sbtmvp)に関連したフラグを含むことができ、前記フラグをシグナルすることができる。
前述した、no_temporal_mvp_constraint_flag、no_sbtmvp_constraint_flagについて、図11、図14を用いてより詳細に説明する。図11に示すように、SPS RBSPシンタックスは、sps_temporal_mvp_enabled_flagの値が1である場合にsps_sbtmvp_enabled_flagをシグナルする構造を有する。このような構造は、サブブロックベースの時間的モーションベクトル予測子(sbtmvp)を示すためには時間的モーションベクトル予測子(temporal mvp)の活性化条件が先行されるべきであることを意味する。
したがって、図9で説明した通り、no_temporal_mvp_constraint_flagの値が1であれば、sps_temporal_mvp_enabled_flagの値は0に設定されて非活性化され、sps_sbtmvp_enabled_flagはシグナルされないので、sps_sbtmvp_enabled_flagを制御するno_sbtmvp_constraint_flagはシグナルされる必要がない。一方、no_temporal_mvp_constraint_flagの値が0であれば、sps_temporal_mvp_enabled_flagの値は制約されないので、sps_sbtmvp_enabled_flagはシグナルされてよく、よって、sps_sbtmvp_enabled_flagの活性化されるか否かを知らせるno_sbtmvp_constraint_flagはシグナルされてよい。これは、下記の式3のように表現できる。
したがって、図14に示すように、no_temporal_mvp_constraint_flagの値が0のときにno_sbtmvp_constraint_flagがシグナルされてよい。これは、下記の式3のように表現できる。
図15は、一般制約情報(General constraint information,GCI)シンタックス(syntax)を示す図である。図15に示すように、GCIシンタックスはモーションベクトル差を使用するマージモード(merge with motion vector difference,mmvd)及び全体PEL(full pel,fpel)mmvdに関連したフラグを含むことができ、前記フラグをシグナルすることができる。
前述した、no_mmvd_constraint_flag、no_fpel_mmvd_constraint_flagについて図11、図15を用いてより詳細に説明する。具体的に、図11に示すように、SPS RBSPシンタックスは、sps_mmvd_enabled_flagの値が1である場合にsps_fpel_mmvd_enabled_flagをシグナルする構造を有する。このような構造は、全体PEL mmvdを示すためにはmmvdの活性化条件が先行されるべきであることを意味する。
sps_mmvd_enabled_flagは、インター予測(inter prediction)でモーションベクトル差を使用するマージモード(merge with motion vector difference,mmvd)の活性化されるか否かを示すことができる。例えば、sps_mmvd_enabled_flagの値が1であれば、モーションベクトル差を使用するマージモードは活性化され、CLVSにおいてピクチャーのデコーディングに用いられてよいことを示す。sps_mmvd_enabled_flagの値が0であれば、モーションベクトル差を使用するマージモードは非活性化され、CLVSにおいてピクチャーのデコーディングに用いられないことを示す。
また、上述したように、sps_fpel_mmvd_enabled_flagは、mmvdを使用するとき、整数サンプル精密度(integer sample precision)を有するモーションベクトル差(motion vector difference)の使用されるか否かを示すことができる。
このとき、no_mmvd_constraint_flagは、sps_mmvd_enabled_flagを制御するフラグである。例えば、no_mmvd_constraint_flagの値が1であれば、sps_mmvd_enabled_flagの値は0に設定されてよい。一方、no_mmvd_constraint_flagの値が0であれば、sps_mmvd_enabled_flagの値に対する制約がない。すなわち、sps_mmvd_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
したがって、no_mmvd_constraint_flagの値が1であれば、sps_mmvd_enabled_flagの値は0に設定されて非活性化され、sps_fpel_mmvd_enabled_flagはシグナルされないので、sps_fpel_mmvd_enabled_flagを制御するno_fpel_mmvd_constraint_flagはシグナルされる必要がない。一方、no_mmvd_constraint_flagの値が0であれば、sps_mmvd_enabled_flagの値は制約されないので、sps_fpel_mmvd_enabled_flagはシグナルされてよく、よって、sps_fpel_mmvd_enabled_flagの活性化されるか否かを知らせるno_fpel_mmvd_constraint_flagはシグナルされてよい。これは、下記の式4のように表現できる。
図16は、一般制約情報(General constraint information,GCI)シンタックス(syntax)を示す図である。図16に示すように、GCIシンタックスは、アフィンモデルベースのモーション補償(affine model based motion compensation)に関連したフラグを含むことができ、前記フラグをシグナルすることができる。アフィンモデルベースのモーション補償に関連したフラグの一例に、sps_affine_enabled_flag、sps_affine_type_flag、sps_affine_amvr_enabled_flag、sps_affine_prof_enabled_flagなどがあり得る。
具体的に、図11に示すように、SPS RBSPシンタックスは、sps_affine_enabled_flagの値が1である場合にsps_affine_type_flag、sps_affine_amvr_enabled_flag、sps_affine_prof_enabled_flagをシグナルする構造を有する。このような構造は、sps_affine_type_flag、sps_affine_amvr_enabled_flag、sps_affine_prof_enabled_flagがシグナルされるためにはアフィンモデルベースのモーション補償の活性化条件が先行されるべきであることを意味する。
sps_affine_type_flagは、6個のパラメータを使用するアフィンモデルベースのモーション補償が用いられるか否かを示すフラグであり、sps_affine_type_flagの値が0であれば、6個のパラメータを使用するアフィンモデルベースのモーション補償は用いられない。sps_affine_type_flagの値が1であれば、6個のパラメータを使用するアフィンモデルベースのモーション補償が用いられてよいことを示すことができる。
sps_affine_amvr_enabled_flagは、アフィンモデルベースのモーション補償に用いられる適応的モーションベクトル解像度(motion vector resolution)の使用されるか否かを示すフラグである。
sps_affine_prof_enabled_flagは、アフィンモデルベースのモーション補償に対してオプティカルフロー(optical flow)を適用する補正が用いられか否かを示すフラグである。
したがって、図9で説明した通り、no_affine_motion_constraint_flagの値が1であれば、sps_affine_enabled_flagの値は0に設定されて非活性化され、sps_affine_type_flag、sps_affine_amvr_enabled_flag、sps_affine_prof_enabled_flagはシグナルされないので、sps_affine_type_flag、sps_affine_amvr_enabled_flag、sps_affine_prof_enabled_flagをそれぞれ制御するno_affine_type_constraint_flag、no_affine_amvr_constraint_flag、no_affine_prof_constraint_flagはシグナルされる必要がない。一方、no_affine_motion_constraint_flagの値が0であれば、sps_affine_enabled_flagの値は制約されないので、sps_affine_type_flag、sps_affine_amvr_enabled_flag、sps_affine_prof_enabled_flagはシグナルされてよく、よって、sps_affine_type_flag、sps_affine_amvr_enabled_flag、sps_affine_prof_enabled_flagのシグナリングされるか否かを知らせるno_affine_type_constraint_flag、no_affine_amvr_constraint_flag、no_affine_prof_constraint_flagはシグナルされてよい。これは、下記の式5のようで表現できる。
図17は、本発明の一実施例に係るシンタックスを示す図である。
図17(a)は、スライスヘッダーシンタックスを示す図であり、図17(b)は、一般制約情報(General constraint information,GCI)シンタックス(syntax)を示す図である。図17(b)について説明すると、GCIシンタックスは、従属量子化(dependent quantization)に関連したフラグ、及び符号データ隠し(sign data hiding)に関連したフラグを含むことができ、前記フラグをシグナルすることができる。図17(a)は、スライスヘッダーシンタックス(slice header syntax)において従属量子化に関連したフラグ(dep_quant_enabled_flag)と符号データ隠しに関連したフラグ(sign_data_hiding_enabled_flag)をシグナルするための構造を示す図である。図17(a)に示すように、dep_quant_enabled_flagが非活性化された(用いられない)場合にのみ、sign_data_hiding_enabled_flagはシグナルされてよい。
したがって、図9で説明した通り、no_dep_quant_constraint_flagの値が1であれば、dep_quant_enabled_flagの値は0に設定されて非活性化され、sign_data_hiding_enabled_flagはシグナルされてよい。no_dep_quant_constraint_flagの値が0であれば、dep_quant_enabled_flagの値は制約されないので、sign_data_hiding_enabled_flagの活性化されるか否かを知らせるno_sign_data_hiding_constraint_flagは、シグナルされる必要がある。これは、下記の式6のように表現できる。上述したsps_dep_quant_enabled_flagは、dep_quant_enabled_flagと同一であり、sps_sign_data_hiding_enabled_flagは、sign_data_hiding_enabled_flagと同一であってよい。
図18は、一般制約情報(General constraint information,GCI)シンタックス(syntax)を示す図である。図18に示すように、GCIシンタックスは、多重変換セット(multiple transform set,mts)に関連したフラグを含むことができ、前記フラグをシグナルすることができる。多重変換セットに関連したフラグの一例に、sps_mts_enabled_flag、sps_explicit_mts_intra_enabled_flag、sps_explicit_mts_inter_enabled_flagなどがあり得る。
前述した、no_mts_constraint_flag、sps_explicit_mts_intra_enabled_flag、sps_explicit_mts_inter_enabled_flagについて図11、図18を用いてより詳細に説明する。SPS RBSPシンタックスは、sps_mts_enabled_flagの値が1である場合にsps_explicit_mts_intra_enabled_flag及びsps_explicit_mts_inter_enabled_flagをシグナルする構造を有する。例えば、sps_mts_enabled_flagの値が0であれば、変換カーネルをDCT2-DCT2のみ使用できる。sps_mts_enabled_flagの値が1であれば、DCT2以外の他のカーネルを暗示的に(implicit)使用するように示すことができる。また、sps_mts_enabled_flagの値が1であり、sps_explicit_mts_intra_enabled_flag及びsps_explicit_mts_inter_enabled_flagの値がいずれも1であれば、暗示的に多重変換セットを指示する他、イントラモードに対して多重変換セットを指示することもでき、インターモードに対しても多重変換セットを別個に指示できる。
したがって、図9で説明した通り、no_mts_constraint_flagの値が1であれば、sps_mts_enabled_flagの値は0に設定されて非活性化され、sps_explicit_mts_intra_enabled_flag及びsps_explicit_mts_inter_enabled_flagは、シグナルされない。一方、no_mts_constraint_flagの値が0であれば、sps_mts_enabled_flagの値は制約されないので、sps_explicit_mts_intra_enabled_flag及びsps_explicit_mts_inter_enabled_flagはシグナルされてよい。これは、下記の式7のように表現できる。
図19は、本発明の一実施例に係る一般制約情報(General constraint information,GCI)シンタックス(syntax)を示す図である。図19に示すように、図11で例示したシーケンスパラメータセット(sequence parameter set,SPS)RBSPシンタックスに定義されたツール/機能に関連したシンタックス要素のうち一部を制御するシンタックス要素をGCIシンタックスに追加し、その機能を拡張することができる。追加されるシンタックス要素は、下記の通りである。
- no_smvd_constraint_flag
no_smvd_constraint_flagは、sps_smvd_enabled_flagを制御するフラグである。例えば、no_smvd_constraint_flagの値が1であれば、sps_smvd_enabled_flagの値は0に設定されてよい。一方、no_smvd_constraint_flagの値が0であれば、sps_smvd_enabled_flagの値に対する制約がない。すなわち、sps_smvd_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_smvd_enabled_flagは、CLVSにおいてピクチャーのデコーディングに用いられる対称モーションベクトル(symmetric motion vector difference)の活性化されるか否かを示すフラグである。例えば、sps_smvd_enabled_flagの値が1であれば、CLVSにおいてピクチャーのデコーディングに用いられる対称モーションベクトルは活性化され、CLVSにおいてピクチャーのデコーディングに対称モーションベクトルが用いられてよいことを示す。sps_smvd_enabled_flagの値が0であれば、CLVSにおいてピクチャーのデコーディングに用いられる対称モーションベクトルは非活性化され、CLVSにおいてピクチャーのデコーディングに対称モーションベクトルは用いられないことを示す。
- no_isp_constraint_flag
no_isp_constraint_flagは、sps_isp_enabled_flagを制御するフラグである。例えば、no_isp_constraint_flagの値が1であれば、sps_isp_enabled_flagの値は0に設定されてよい。一方、no_isp_constraint_flagの値が0であれば、sps_isp_enabled_flagの値に対する制約がない。すなわち、sps_isp_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_isp_enabled_flagは、CLVSにおいてピクチャーのデコーディングに使用されるサブパーティション(subpartitions)が用いられるイントラ予測の活性化されるか否かを示すフラグである。例えば、sps_isp_enabled_flagの値が1であれば、CLVSにおいてピクチャーのデコーディングに使用されるサブパーティションが用いられるイントラ予測は活性化され、CLVSにおいてピクチャーのデコーディングにサブパーティションが使用されるイントラ予測は用いられてよいことを示す。sps_isp_enabled_flagの値が0であれば、CLVSにおいてピクチャーのデコーディングに使用されるサブパーティションが用いられるイントラ予測は非活性化され、CLVSにおいてピクチャーのデコーディングにサブパーティションが使用されるイントラ予測は用いられないことを示す。
- no_mrl_constraint_flag
no_mrl_constraint_flagは、sps_mrl_enabled_flagを制御するフラグである。例えば、no_mrl_constraint_flagの値が1であれば、sps_mrl_enabled_flagの値は0に設定されてよい。一方、no_mrl_constraint_flagの値が0であれば、sps_mrl_enabled_flagの値に対する制約がない。すなわち、sps_mrl_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_mrl_enabled_flagは、CLVSにおいてピクチャーのデコーディングに用いられる多重参照ライン(multiple reference lines)を使用するイントラ予測の活性化されるか否かを示すフラグである。例えば、sps_mrl_enabled_flagの値が1であれば、CLVSにおいてピクチャーのデコーディングに用いられる多重参照ラインを使用するイントラ予測は活性化され、CLVSにおいてピクチャーのデコーディングに多重参照ラインを使用するイントラ予測は用いられてよいことを示す。sps_mrl_enabled_flagの値が0であれば、CLVSにおいてピクチャーのデコーディングに用いられる多重参照ラインを使用するイントラ予測は非活性化され、CLVSにおいてピクチャーのデコーディングに多重参照ラインを使用するイントラ予測は用いられないことを示す。
- no_mip_constraint_flag
no_mip_constraint_flagは、sps_mip_enabled_flagを制御するフラグである。例えば、no_mip_constraint_flagの値が1であれば、sps_mip_enabled_flagの値は0に設定されてよい。一方、no_mip_constraint_flagの値が0であれば、sps_mip_enabled_flagの値に対する制約がない。すなわち、sps_mip_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_mip_enabled_flagは、CLVSにおいてピクチャーのデコーディングに用いられるメトリックスベースイントラ予測(matrix-based intra prediction)の活性化されるか否かを示すフラグである。例えば、sps_mip_enabled_flagの値が1であれば、CLVSにおいてピクチャーのデコーディングに用いられるメトリックスベースイントラ予測は活性化され、CLVSにおいてピクチャーのデコーディングにメトリックスベースイントラ予測は用いられてよいことを示す。sps_mip_enabled_flagの値が0であれば、CLVSにおいてピクチャーのデコーディングに用いられるメトリックスベースイントラ予測は非活性化され、CLVSにおいてピクチャーのデコーディングにメトリックスベースイントラ予測は用いられないことを示す。
- no_lfnst_constraint_flag
no_lfnst_constraint_flagは、sps_lfnst_enabled_flagを制御するフラグである。例えば、no_lfnst_constraint_flagの値が1であれば、sps_lfnst_enabled_flagの値は0に設定されてよい。一方、no_lfnst_constraint_flagの値が0であれば、sps_lfnst_enabled_flagの値に対する制約がない。すなわち、sps_lfnst_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_lfnst_enabled_flagは、lfnst_idxがイントラコーディングユニットシンタックスに存在するか否かを示すフラグである。例えば、sps_lfnst_enabled_flagの値が1であれば、lfnst_idxがイントラコーディングユニットシンタックスに存在してよいことを示す。sps_lfnst_enabled_flagの値が0であれば、lfnst_idxがイントラコーディングユニットシンタックスに存在しないことを示す。
このとき、lfnst_idxは、現在ブロックに低帯域非分離変換(low frequency non-separable transform)が適用されるか否かを示すシンタックス要素である。
- no_lmcs_constraint_flag
no_lmcs_constraint_flagは、sps_lmcs_enabled_flagを制御するフラグである。例えば、no_lmcs_constraint_flagの値が1であれば、sps_lmcs_enabled_flagの値は0に設定されてよい。一方、no_lmcs_constraint_flagの値が0であれば、sps_lmcs_enabled_flagの値に対する制約がない。すなわち、sps_lmcs_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_lmcs_enabled_flagは、CLVSにおいてピクチャーのデコーディングに用いられるクロマスケーリング及びルーママッピング(luma mapping with chroma scaling)の活性化されるか否かを示すフラグである。例えば、sps_lmcs_enabled_flagの値が1であれば、CLVSにおいてピクチャーのデコーディングに用いられるクロマスケーリング及びルーママッピングは活性化され、CLVSにおいてピクチャーのデコーディングにクロマスケーリング及びルーママッピングは用いられてよいことを示す。sps_lmcs_enabled_flagの値が0であれば、CLVSにおいてピクチャーのデコーディングに用いられるクロマスケーリング及びルーママッピングは非活性化され、CLVSにおいてピクチャーのデコーディングにクロマスケーリング及びルーママッピングは用いられないことを示す。
- no_palette_constraint_flag
no_palette_constraint_flagは、sps_palette_enabled_flagを制御するフラグである。例えば、no_palette_constraint_flagの値が1であれば、sps_palette_enabled_flagの値は0に設定されてよい。一方、no_palette_constraint_flagの値が0であれば、sps_palette_enabled_flagの値に対する制約がない。すなわち、sps_palette_enabled_flagの値は、SPS RBSPシンタックスのパーシング結果によって決定されてよい。
このとき、sps_palette_enabled_flagは、CLVSのコーディングユニットシンタックス内にpred_mode_plt_flagが存在するかを示すフラグである。例えば、sps_palette_enabled_flagの値が1であれば、CLVSのコーディングユニットシンタックス内にpred_mode_plt_flagが存在してよいことを示す。sps_palette_enabled_flagの値が0であれば、CLVSのコーディングユニットシンタックス内にpred_mode_plt_flagが存在しないことを示す。
このとき、pred_mode_plt_flagは、現在コーディングユニットにパレットモード(palette mode)が適用されるか否かを示すフラグである。
より具体的に、no_palette_constraint_flagについて説明すると、no_palette_constraint_flagがシグナルされるためにはchroma_format_idcの変数値が事前に取得される必要がある。chroma_format_idcは、ルーマサンプリングに対するクロマサンプリングを示す。したがって、GCIシンタックスである‘general_constraint_info()’内に、シンタックス要素chroma_format_idcが含まれる必要がある。この場合は、DPSシンタックスとVPSシンタックス内では必要な構造である。他の場合として、SPSシンタックスに含まれるプロファイルティアレベルシンタックス(profile_tier_level syntax)にGCIシンタックスが含まれる場合は、前記プロファイルティアレベルシンタックスに含まれたGCIシンタックスがパースされ、後でchroma_format_idcシンタックス要素がもう一度パースされ得るため、chroma_format_idcが重複して呼び出されることがある。言い換えると、DPSシンタックス又はVPSシンタックスに含まれるGCIシンタックスはchroma_format_idcを含み、プロファイルティアレベルシンタックスに含まれるGCIシンタックスにchroma_format_idcが含まれ、chroma_format_idcは重複してパースされることがある。このため、プロファイルティアレベルシンタックスにGCIシンタックスが含まれる場合、chroma_format_idxシンタックス要素はシグナルされなくてもよい。または、デコーダが常にGCIシンタックスをパースするシステムでは、SPS RBSPシンタックスにchroma_format_idcシンタックス要素は含まれないように設定されてもよい。
図19で説明したそれぞれの制約フラグは、前記制約フラグ(no_x_constraint)flag)に対応するSPS活性化フラグ(sps_x_enabled_flag)を制御することができる。
図20は、本発明の一実施例に係る、一般制約情報(General constraint information,GCI)シンタックス(syntax)を示す図である。図20に示すように、GCIシンタックスは、cclmに関連したシンタックス要素を含むことができる。図20を参照して、図9で説明したno_cclm_constraint_flagについてより具体的に説明する。
no_cclm_constraint_flagは、変数ChromaArrayTypeの値が0と同じでない場合(ChromaArrayType !=0)にシグナルされてよい。ChromaArrayTypeは、デコードされたビデオデータの輝度及び色差成分のフォーマット値を指定する役割を担う。上述したように、no_cclm_constraint_flagは、sps_cclm_enabled_flagを制御する役割を担うことができる。
no_cclm_constraint_flagの値が0と同じである、或いはchroma_format_idcの値が1と同じであるとき、no_cclm_colocated_chroma_constraint_flagはシグナルされてよい。このとき、no_cclm_colocated_chroma_constraint_flagは、sps_cclm_colocated_chroma_flagを制御する役割を担うフラグである。
図9で詳述したように、sps_cclm_enabled_flagは、CLVSにおいてピクチャーのデコーディングに用いられるルーマ成分からクロマ成分への交差-成分線形モデルイントラ予測(cross-component linear model intra prediction)の活性化されるか否かを示すフラグである。
sps_cclm_colocated_chroma_flagは、交差-成分線形モデルイントラ予測での左-上端ダウンサンプルされたルーマサンプル(top-left downsampled luma sample in cross-component linear model intra prediction)が左-上端ルーマサンプル(top-left luma sample)と同じ位置であるか、特定した他の位置であるかを示すフラグである。sps_cclm_colocated_chroma_flagがシグナルされるためには変数ChromaArrayTypeに関する情報が必要である。変数ChromaArrayTypeの値は、chroma_format_idcに関する情報及びseparate_colour_plane_flagに関する情報の組合せで取得されてよい。したがって、シンタックス要素chroma_format_idc及びseparate_colour_plane_flagは、SPS RBSP syntaxに含まれるように定義されてよい。
separate_colour_plane_flagは、ピクチャーをコードするときに、3種の個別構成要素(Y,Cb,Cr)が別個にコードされるか否かを示すフラグである。
図21は、本発明の一実施例に係る一般制約情報(General constraint information,GCI)シンタックス(syntax)を示す図である。図21に示すように、GCIシンタックスは、シンタックス要素no_palette_constraint_flagを含むことができる。
以下、図21を参考にして、図19で説明したシンタックス要素no_palette_constraint_flagについて具体的に説明する。図11に示すように、chroma_format_idcの値が3であれば(chroma_format_idc==3)、sps_palette_enabled_flagは送信されてよい。
no_palette_constraint_flagが制御するシンタックス要素である、現在コーディングユニットにパレットモード(palette mode)が適用され得るか否かに関連したsps_palette_enabled_flagは、SPS RBSPシンタックス内に含まれてよい。パレットモードは、色情報をあらかじめテーブルとして構成した後、実際のピクセル値をテーブルのインデックス値にマップする方法である。chroma_format_idcの値が3と同じであれば、クロマフォーマットは4:4:4でよい。GCIシンタックスがパースされると、GCIシンタックス内に含まれたシンタックス要素は、それに対応するシンタックス要素に関連した機能を個別的に制御することができる。図19のようにsps_palette_enabled_flagに対応する、すなわちsps_palette_enabled_flagを制御するno_palette_constraint_flagがGCIシンタックス内に含まれてよい。上述したように、GCIシンタックスがパースされ、GCIシンタックス内に含まれたno_palette_constraint_flagの値が1であれば、sps_palette_enabled_flagは、0に設定されてよい。言い換えると、sps_palette_enabled_flagが1に設定されて活性化されていても、no_palette_constraint_flagの値が1であれば、sps_palette_enabled_flagの値は0に設定されてよい。一方、no_palette_constraint_flagの値が0であれば、sps_palette_enabled_flagは設定された値を有してよく、これによってデコーディング動作は行われてよい。また、sps_palette_enabled_flagがシグナル又はパースされるための条件は、chroma_format_idcの値が3である場合(chroma_format_idc==3)であってよい。
図22は、本発明の一実施例に係るコーディングツリーユニットシンタックスを示す図である。
図22に示すように、コーディングツリーユニットシンタックスにパレットコーディングシンタックス(palette coding syntax)が含まれてよい。pred_mode_plt_flagが真てあれば、デコーダは、パレットコーディングシンタックス‘palette_coding()’をパースすることができる。言い換えると、pred_mode_plt_flagの値が1であれば、現在コーディングブロックがパレットモードにコードされるということを示す。pred_mode_plt_flagは、現在ブロックがibcコードされたブロックでなく、sps_plt_enabled_flagが真てあれば(1の値を有する場合)、シグナル/パースされてよい。このとき、前記sps_plt_enabled_flagは、図19などで説明したsps_palette_enabled_flagと同一である。パレットモードは、色情報をあらかじめテーブルとして構成した後、実際ピクセル値をテーブルのインデックス値にマップする方法であり、一般の画面内予測方法と異なる。sps_plt_enabled_flagは、図19に示すように、chroma_format_idcの値が3であれば(chroma_format_idc==3のような場合)、すなわち、chroma format4:4:4である場合にシグナル/パースされてよい。
図23は、本発明の実施例に係る、画面内予測モードに必要なMPM(Most Probable Modes)誘導のための位置関係を示す図である。
図23の現在コーディングブロックの周辺であるL位置とA位置のルーマ予測モードに基づいてMPMが誘導されてよい。パレットモードが活性化された場合、現在コーディングブロックの隣ブロックには、パレットモードにコードされたブロックが存在してよい。図23に示すように、A位置の隣ブロックに対するpred_mode_plt_flagの値が1と同じであれば、A位置の隣ブロックは、パレットモードにコードされたブロックを意味する。一方、A位置の隣ブロックは、一般の予測モードにコードされたブロックでないので、保存された画面内予測モード値がなくてもよい。このとき、画面内予測モード値は、既に設定された予測モードに設定されてよい。例えば、既に設定された予測モードは、平面モード(planar mode)であってよい。ただし、これに限定されず、DC(direact current)、垂直(Vertical)、水平(Horizontal)、角度モードのいずれか一つに設定されてよい。
以下、MPM(IntraPredModeY[xCb][yCb])誘導の一実施例を説明する。
- intra_luma_not_planar_flag[xCb][yCb]の値が0であれば、IntraPredModeY[xCb][yCb」は平面モードに設定される。
- BdpcmFlag[xCb][yCb]の値が1であれば、IntraPredModeY[xCb][yCb」は、次の式8のように設定されてよい。
- intra_luma_not_planar_flag[xCb][yCb]の値が1であれば、後述する段階にしたがってintra_luma_not_planar_flag[xCb][yCb]のモードが設定されてよい。
(段階1)隣ブロックの位置(xNbA,yNbA)及び(xNbB,yNbB)はそれぞれ、(xCb-1,yCb+cbHeight-1)及び(xCb+cbWidth-1,yCb-1)に設定されてよい。このとき、xCbは現在ブロックのx座標、yCbは現在ブロックのy座標、cbHeightは現在ブロックの高さ、cbWidthは現在ブロックの幅、を意味する。
(段階2)XがA又はBのいずれか一つに代替される場合に、candIntraPredModeXは、後述する段階にしたがって設定されてよい。
(段階2-1)ブロックに対する可用性導出過程は、入力である位置(xCurr,yCurr)は(xCb,yCb)に設定され、周辺ブロック位置(xNbY,yNbY)は(xNbX,yNbX)に設定され、available出力に割り当てられる。
(段階2-2)イントラ予測モードの候補candIntraPredModeXは、下記のように設定されてよい。
(段階2-2-1)後述する条件らの一つ以上が真であれば、candIntraPredModeXは平面モードに設定されてよい。
(条件1)変数availableXは、FALSEに設定される。
(条件2)CuPredMode[xNbX][yNbX」は、イントラモードに設定されない。
(条件3)intra_mip_flag[xNbX][yNbX]の値は、1と同じである。
(条件4)pred_mode_plt_flag[xNbX][yNbX]の値は、1と同じである。
(条件5)XはBと同一であり、yCb-1は((yCb>>CtbLog2SizeY)<<CtbLog2SizeY)よりも小さい。
(段階2-2-2)それとも、candIntraPredModeXは、IntraPredModeY[xNbX][yNbX]と同一に設定されてよい。
図24は、本発明の一実施例に係る、クロマDMモード誘導に必要な対応するルーマブロックとの関係を示す図である。図24(a)は、デュアルツリー(DUAL tree)構造を有するルーマブロックの分割を示す図であり、図24(b)は、デュアルツリー構造を有するクロマブロックの分割を示す図である。図24(a)、(b)について説明すると、デュアルツリー(DUAL tree)構造を有するルーマとクロマブロックの分割はそれぞれ異なるようになされてよい。クロマフォーマット4:4:4の場合に、ルーマとクロマは1対1の割合でサンプルが構成される。したがって、ブロックサイズが同一である。例えば、図24(b)のクロマブロック構造においてAに該当するブロックに対応するルーマブロックは、図24(a)のAに該当するブロックであってよい。図24(a)及び図24(b)のAブロックは、横×縦がW/2×Hである。デュアルツリー構造では、クロマの予測方法とルーマの予測方法とが異なってよい。クロマの予測方法がルーマの画面内予測モードをそのまま使用するDMモードである場合に、対応するルーマブロックの既に設定された位置におけるルーマモードに基づいてクロマモードシグナリングが決定されてよい。このとき、既に設定された位置は、[xCb+cbWidth/2][yCb+cbHeight/2]又は(xCb,yCb)であってよい。(xCb,yCb)は、対応するルーマの左上端の角の位置でよい。cbWidthとcbHeightは、対応するルーマの幅(width)と高さ(height)を意味する。したがって、図24(a)のルーマブロックにおいて、Cの位置に該当する既に設定された位置でpred_mode_plt_flag値が1であれば、クロマブロックの予測方法は、既に設定されたモードに設定されてよい。このとき、既に設定されたモードは、平面(PLANAR)、DC、垂直(VERTICAL)、水平(HORIZONTAL)、及び角度モードのいずれか一つであってよい。
以下ではクロマブロックのDMモード誘導過程について説明する。また、mip flagとibc flagを確認するブロックの位置は、既に設定された[xCb+cbWidth/2][yCb+cbHeight/2]に設定されてよい。
クロマ予測モードIntraPredModeC[xCb][yCb]誘導過程:
変数CclmEnabledは、ルーマ位置(xCb,yCb)を入力として交差-成分クロマイントラ予測モード(cross-component chroma intra prediction)検査過程をインボーク(invoke)し、クロマ予測モードが誘導されてよい。
クロマブロックに対応するルーマブロックのルーマイントラ予測モードlumaIntraPredModeの誘導過程:
(段階1)intra_mip_flag[xCb+cbWidth/2][yCb+cbHeight/2]の値が1であれば、lumaIntraPredModeは平面モードに設定される。
(段階2)そうでなければ、pred_mode_plt_flag[xCb+cbWidth/2][yCb+cbHeight/2]の値が1であれば、lumaIntraPredModeは、既に設定されたモード(PRE_DEFINED_MODE)に設定される。
(段階3)そうでなければ、CuPredMode[xCb+cbWidth/2][yCb+cbHeight/2]がIBCモードであれば、lumaIntraPredModeはDCモードに設定される。
(段階4)そうでなければ、lumaIntraPredModeは、IntraPredModeY[xCb+cbWidth/2][yCb+cbHeight/2]と同一に設定される。
本明細書は主にデコーダの観点で記述されたが、エンコーダでも同一に動作されてよい。本明細書におけるパーシングという用語は、ビットストリームから情報を取得する過程を重点にして説明されたが、エンコーダ側面では、ビットストリームに当該情報を構成することと解釈されてよい。したがって、パーシングという用語は、デコーダ動作に限定されず、エンコーダではビットストリームを構成する行為とも解釈されてよい。すなわち、エンコーダは、上述したGCIシンタックスに含まれるフラグ(シンタックス要素)を取得し、これを含むビットストリームを構成することができる。また、このようなビットストリームは、コンピュータ可読記録媒体に保存されて構成されてよい。
上述した本発明の実施例は多様な手段を介して具現される。例えば、本発明の実施例は、ハードウェア、ファームウェア(firmware)、ソフトフェアまたはそれらの組み合わせによって具現される。
ハードウェアによる具現の場合、本発明の実施例による方法は、一つまたはそれ以上のASICs(Application Specific Integrated Circuits)、DSPs(Digital Signal Processors)、DSDPs(Digital Signal Processing Devices)、PDLs(Programmable Logic Devices)、FPGAs(Field Programmable Gate Arrays)、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサなどによって具現される。
ファームフェアやソフトウェアによる具現の場合、本発明の実施例による方法は、上述した機能または動作を行うモジュール、手順または関数などの形態で具現される。ソフトウェアコードは、メモリに貯蔵されてプロセッサによって具現される。前記メモリはプロセッサの内部または外部に位置し、既に公知の多様な手段によってプロセッサとデータを交換する。
一部の実施例はコンピュータによって実行されるプログラムモジュールのようなコンピュータで実行可能な命令語を含む記録媒体の形態にも具現される。コンピュータで判読可能な媒体は、コンピュータでアクセスされ得る任意の利用可能な媒体であり、揮発性及び非揮発性媒体、分離型及び非分離型媒体をいずれも含む。また、コンピュータ読取可能媒体は貯蔵媒体及び通信媒体をいずれも含む。コンピュータ貯蔵媒体は、コンピュータ判読可能な命令語、データ構造、プログラムモジュール、またはその他のデータのような情報の貯蔵のための任意の方法または技術で具現された揮発性及び非揮発性媒体、分離型及び非分離型媒体をいずれも含む。通信媒体は、典型的にコンピュータ読取可能な命令語、データ構造、またはプログラムモジュールのような変調されたデータ信号のその他のデータ、またはその他の伝送メカニズムを含み、任意の情報伝達媒体を含む。
上述した本発明の説明は例示のためのものであって、本発明が属する技術分野における通常の知識を有する者は、本発明の技術的思想や必須的特徴を変更せずも他の具体的な形態に容易に変更可能であることを理解できるはずである。よって、上述した実施例は全ての面で例示的なものであり、限定的なものではないと理解すべきである。例えば、単一型として説明されている各構成要素は分散されて実施されてもよく、同じく分散されていると説明されている構成要素も結合された形態で実施されてもよい。
本発明の範囲は、上述した詳細な説明よりは後述する特許請求の範囲によって示され、特許請求の範囲の意味及び範囲、そしてその均等概念から導き出される全ての変更または変形された形態が本発明の範囲に含まれると解釈すべきである。