[0045]次に、例示的な実施形態を詳細に参照し、その例を添付の図面に示す。以下の説明は添付の図面を参照しており、別段の記載がない限り、異なる図面における同じ番号は同じまたは類似の要素を表す。例示的な実施形態の以下の説明に記載される実装は、本開示と一致するすべての実装を表すものではない。むしろ、それらは、添付の特許請求の範囲に記載される本開示に関連する態様と一致する装置および方法の単なる例にすぎない。
[0046]本開示で使用される用語は、特定の実施形態を説明することのみを目的としており、本開示を限定することを意図したものではない。本開示および添付の特許請求の範囲で使用される場合、単数形「a」、「an」、および「the」は、文脈上明らかに別段の指示がない限り、複数形も含むものとする。本明細書で使用される用語「および/または」は、関連する列挙された項目の1つまたは複数の任意またはすべての可能な組み合わせを意味し、含むことを意図していることも理解されたい。
[0047]「第1」、「第2」、「第3」などの用語は、本明細書ではさまざまな情報を説明するために使用され得るが、情報はこれらの用語によって限定されるべきではないことを理解されたい。これらの用語は、情報の1つのカテゴリを別のカテゴリから区別するためにのみ使用される。例えば、本開示の範囲から逸脱することなく、第1の情報を第2の情報と呼ぶこともできる。同様に、第2の情報を第1の情報と呼ぶこともできる。本明細書で使用される「場合」という用語は、文脈に応じて、「いつ」、「その際に」、または「判断に応じて」を意味すると理解され得る。
[0048]HEVC規格の第1のバージョンは2013年10月に完成し、前世代のビデオコーディング規格H.264/MPEG AVCと比較して約50%のビットレート節約または同等の知覚品質を提供する。HEVC規格では、以前の規格に比べてコーディングが大幅に改善されているが、追加のコーディングツールを使用すると、HEVCよりも優れた符号化効率が達成できるという証拠がある。それに基づいて、VCEGとMPEGの両社は、将来のビデオコーディング規格化に向けた新しいコーディング技術の探索作業を開始し、2015年10月にITU-TVECGとISO/IEC MPEGによって共同ビデオ探索チーム(JVET)が結成され、符号化効率の大幅な向上を可能にし得る先進技術の重要な研究を開始した。共同探査モデル(JEM)と呼ばれる1つの参照ソフトウェアは、HEVCテストモデル(HM)の上にいくつかの追加のコーディングツールを統合することによってJVETによって維持された。
[0049]2017年10月に、HEVCを超える機能を備えたビデオ圧縮に関する共同提案募集(CfP)がITU-TおよびISO/IECによって発行された。2018年4月、第10回JVET会議で23件のCfP回答が受領され、評価され、HEVCよりも約40%圧縮効率が向上することが実証された。このような評価結果に基づいて、JVETはVersatile Video Coding(VVC)と名付けられた新世代のビデオコーディング規格を開発する新しいプロジェクトを立ち上げた。同月、VVCテストモデル(VTM)と呼ばれる1つの参照ソフトウェアコードベースが、VVC規格の参照実装を実証するために確立された。
[0050]HEVCと同様に、VVCは、ブロックベースのハイブリッド型ビデオコーディングのフレームワークに基づいて構築される。
[0051]図1は、VVC用のブロックベースのビデオエンコーダ(ビデオ符号化器)の一般的な図を示す。具体的には、図1は、典型的なエンコーダ100を示す。エンコーダ100は、ビデオ入力110、動き補償112、動き推定114、イントラ/インターモード決定116、ブロック予測子140、加算器128、変換130、量子化132、予測関連情報142、イントラ予測118、ピクチャバッファ120、逆量子化134、逆変換136、加算器126、メモリ124、ループ内フィルタ122、エントロピー符号化138、およびビットストリーム144を有する。
[0052]エンコーダ100では、ビデオフレームは処理のために複数のビデオブロックに分割される。所定のビデオブロックごとに、インター予測アプローチまたはイントラ予測アプローチのいずれかに基づいて予測が形成される。
[0053]ビデオ入力110の一部である現在のビデオブロックと、ブロック予測子140の一部であるその予測子との間の差を表す予測残差は、加算器128から変換130に送信される。次に、変換係数は、エントロピー削減のために変換130から量子化132に送られる。次いで、量子化された係数がエントロピー符号化138に供給されて、圧縮ビデオビットストリームが生成される。図1に示すように、ビデオブロック分割情報、動きベクトル(MV)、参照ピクチャインデックス、およびイントラ予測モードなどの、イントラ/インターモード決定116からの予測関連情報142はまた、エントロピー符号化138を通じて供給され、圧縮ビットストリーム144に保存される。圧縮ビットストリーム144はビデオビットストリームを含む。
[0054]エンコーダ100では、予測の目的でピクセルを再構成するためにデコーダ(復号器)関連回路も必要である。逆量子化134および逆変換136を通じて予測残差が再構成される。この再構成された予測残差は、ブロック予測器140と結合されて、現在のビデオブロックのフィルタリングされていない再構成ピクセルを生成する。
[0055]空間予測(または「イントラ予測」)は、現在のビデオブロックと同じビデオフレーム内の既に符号化された隣接ブロックのサンプル(参照サンプルと呼ばれる)からのピクセルを使用して、現在のビデオブロックを予測する。
[0056]時間予測(「インター予測」とも呼ばれる)は、既に符号化されたビデオピクチャから再構成されたピクセルを使用して、現在のビデオブロックを予測する。時間予測は、ビデオ信号に固有の時間的冗長性を軽減する。特定の符号化ユニット(CU)または符号化ブロックの時間予測信号は、通常、現在のCUとその時間参照の間の動きの量と方向を示す1つまたは複数のMVによって伝送される。さらに、複数の参照ピクチャがサポートされている場合、時間予測信号が参照ピクチャストレージ内のどの参照ピクチャからのものであるかを識別するために使用される、1つの参照ピクチャインデックスが追加で送信される。
[0057]動き推定114は、ビデオ入力110およびピクチャバッファ120からの信号を取り込み、動き補償112に動き推定信号を出力する。動き補償112は、ビデオ入力110、画像バッファ120からの信号、および動き推定114からの動き推定信号を取り込み、動き補償信号をイントラ/インターモード決定116に出力する。
[0058]空間的および/または時間的予測が実行された後、エンコーダ100内のイントラ/インターモード決定116は、例えば定格歪み最適化方法に基づいて最良の予測モードを選択する。次いで、ブロック予測子140が現在のビデオブロックから減算され、その結果得られる予測残差が、変換130および量子化132を使用して相関解除される。結果として得られる量子化残差係数は、逆量子化134によって逆量子化され、逆変換136によって逆変換されて再構成残差が形成され、その後、予測ブロックに戻って加算されてCUの再構成信号が形成される。デブロッキングフィルタ、サンプル適応オフセット(SAO)、および/または適応ループ内フィルタ(ALF)などのさらなるループ内フィルタリング122は、再構成されたCUがピクチャバッファ120の参照ピクチャストレージに入れられ、将来のビデオブロックを符号化するために使用される前に、再構成されたCUに適用することができる。出力ビデオビットストリーム144を形成するために、符号化モード(インターまたはイントラ)、予測モード情報、動き情報、および量子化された残差係数はすべてエントロピー符号化ユニット138に送られ、さらに圧縮およびパックされてビットストリームが形成される。
[0059]図1は、一般的なブロックベースのハイブリッド型ビデオコーディングシステムのブロック図を示す。入力ビデオ信号はブロックごとに処理される(符号化ユニット(CU)と呼ばれる)。VTM-1.0では、CUは最大128×128ピクセルになり得る。しかし、4値ツリーのみに基づいてブロックを分割するHEVCとは異なり、VVCでは1つの符号化ツリーユニット(CTU)がCUに分割され、4値/2値/3値ツリーに基づいてさまざまな局所特性に適応する。定義により、符号化ツリーブロック(CTB)は、成分をCTBに分割することが分割となる、Nのある値に対するサンプルのNxNブロックである。CTUには、輝度(luma)サンプルのCTB、3つのサンプル配列を持つピクチャの色差(chroma)サンプルの2つの対応するCTB、またはモノクロピクチャもしくはサンプルの符号化に使用される3つの別個のカラープレーンとシンタックス構造を使用して符号化されるピクチャのサンプルのCTBが含まれる。さらに、HEVCにおける複数の分割ユニットタイプの概念が削除される。つまり、CU、予測ユニット(PU)、および変換ユニット(TU)の分離はVVCにはもう存在しない。代わりに、各CUは、さらに分割することなく、予測と変換の両方の基本単位として常に使用される。多重ツリー構造では、まず、1つのCTUが4値ツリー構造で分割される。次に、各4値ツリーリーフノードは、2値ツリーおよび3値ツリー構造によってさらに分割できる。図3A、3B、3C、3D、および3Eに示すように、4分割、水平2分割、垂直2分割、水平3分割、および垂直3分割の5つの分割タイプがある。
[0060]図3Aは、本開示による、多重ツリー構造におけるブロックの4分割を表す図を示している。
[0061]図3Bは、本開示による、多重ツリー構造におけるブロック垂直2分割を表す図を示している。
[0062]図3Cは、本開示による、多重ツリー構造におけるブロック水平2分割を表す図を示している。
[0063]図3Dは、本開示による、多重ツリー構造におけるブロック垂直3分割を表す図を示している。
[0064]図3Eは、本開示による、多重ツリー構造におけるブロック水平3分割を表す図を示している。
[0065]図1において、空間予測および/または時間予測を実行することができる。空間予測(または「イントラ予測」)は、同じビデオピクチャ/スライス内の既に符号化された隣接ブロックのサンプル(参照サンプルと呼ばれる)のピクセルを使用して、現在のビデオブロックを予測する。空間予測は、ビデオ信号に固有の空間的冗長性を軽減する。時間予測(「インター予測」または「動き補償予測」とも呼ばれる)は、既に符号化されたビデオピクチャから再構成されたピクセルを使用して、現在のビデオブロックを予測する。時間予測は、ビデオ信号に固有の時間的冗長性を軽減する。特定のCUの時間予測信号は、通常、現在のCUとその時間参照の間の動きの量と方向を示す1つまたは複数の動きベクトル(MV)によって伝送される。また複数の参照ピクチャがサポートされている場合、時間予測信号が参照ピクチャストア内のどの参照ピクチャから来たのかを識別するために使用される、1つの参照ピクチャインデックスが追加で送信される。空間的および/または時間的予測の後、エンコーダ内のモード決定ブロックは、例えば定格歪み最適化方法に基づいて、最適な予測モードを選択する。次に、予測ブロックが現在のビデオブロックから減算される。予測残差は、変換を使用して相関が解除され、量子化される。量子化された残差係数は逆量子化され、逆変換されて再構成された残差が形成され、その後、予測ブロックに戻って加算されてCUの再構成された信号が形成される。デブロッキングフィルタ、サンプル適応オフセット(SAO)、および適応ループ内フィルタ(ALF)などのさらなるループ内フィルタ処理を、再構成されたCUが参照ピクチャストアに置かれ、将来のビデオブロックの符号化に使用される前に、再構成されたCUに適用することができる。出力ビデオビットストリームを形成するには、符号化モード(インターまたはイントラ)、予測モード情報、動き情報、および量子化された残差係数がすべてエントロピー符号化ユニットに送信され、さらに圧縮およびパックされてビットストリームが形成される。
[0066]図2は、VVC用のビデオデコーダ(ビデオ復号器)の一般的なブロック図を示す。具体的には、図2は、典型的なデコーダ200のブロック図を示す。デコーダ200は、ビットストリーム210、エントロピー復号212、逆量子化214、逆変換216、加算器218、イントラ/インターモード選択220、イントラ予測222、メモリ230、ループ内フィルタ228、動き補償224、ピクチャバッファ226、予測関連情報234、およびビデオ出力232を有する。
[0067]デコーダ200は、図1のエンコーダ100内に存在する再構成関連セクションと同様である。デコーダ200では、入力ビデオビットストリーム210がまずエントロピー復号212を通じて復号され、量子化された係数レベルおよび予測関連情報が導出される。次に、量子化された係数レベルは、逆量子化214および逆変換216を通じて処理されて、再構成された予測残差が得られる。イントラ/インターモードセレクタ220に実装されるブロック予測機構は、復号された予測情報に基づいて、イントラ予測222または動き補償224のいずれかを実行するように構成される。フィルタリングされていない再構成ピクセルのセットは、加算器218を使用して、逆変換216からの再構成予測残差と、ブロック予測機構によって生成された予測出力とを合計することによって得られる。
[0068]再構成されたブロックは、参照ピクチャストアとして機能するピクチャバッファ226に記憶される前に、ループ内フィルタ228をさらに通過することができる。ピクチャバッファ226内の再構成されたビデオは、表示デバイスを駆動するために送信されるだけでなく、将来のビデオブロックを予測するために使用されることもある。ループ内フィルタ228がオンになっている状況では、これらの再構成されたピクセルに対してフィルタリング操作が実行され、最終的な再構成されたビデオ出力232が導出される。
[0069]図2は、ブロックベースのビデオデコーダの一般的なブロック図を示す。ビデオビットストリームは、まずエントロピー復号ユニットでエントロピー復号される。符号化モードと予測情報は、空間予測ユニット(イントラ符号化の場合)または時間予測ユニット(インター符号化の場合)に送信されて、予測ブロックが形成される。残差変換係数は逆量子化ユニットおよび逆変換ユニットに送信され、残差ブロックが再構成される。次に、予測ブロックと残差ブロックが加算される。再構成されたブロックは、参照ピクチャストアに記憶される前に、さらにループ内フィルタリングを通過し得る。参照ピクチャストア内の再構成されたビデオは、表示デバイスを駆動するために送信されるだけでなく、将来のビデオブロックを予測するために使用される。
[0070]一般に、VVCに適用される基本的なイントラ予測方式は、いくつかのモジュールがさらに拡張および/または改良されている点を除いて、HEVCのそれと同じに保たれ、例えば、イントラサブ分割(ISP)符号化モード、広角イントラ方向による拡張イントラ予測、位置依存イントラ予測組み合わせ(PDPC)、および4タップイントラ内挿などである。
[0071]<VVCにおけるピクチャ、タイルグループ、タイル、およびCTUの分割>
[0072]VVCでは、タイルは、ピクチャ内の特定のタイル列および特定のタイル行内のCTUの長方形領域として定義される。タイルグループは、単一のNALユニットに排他的に含まれるピクチャの整数のタイルのグループである。基本的に、タイルグループの概念は、HEVCで定義されているスライスと同じである。例えば、ピクチャはタイルグループとタイルに分割される。タイルは、ピクチャの長方形の領域をカバーする一連のCTUである。タイルグループには、ピクチャの多数のタイルが含まれる。タイルグループの2つのモード、つまりラスタスキャンタイルグループモードと長方形タイルグループモードがサポートされている。ラスタスキャンタイルグループモードでは、タイルグループには、ピクチャのタイルラスタスキャン内の一連のタイルが含まれる。長方形タイルグループモードでは、タイルグループには、集合的にピクチャの長方形領域を形成するピクチャの多数のタイルが含まれる。長方形タイルグループ内のタイルは、タイルグループのタイルラスタスキャンの順序になる。
[0073]図4は、ピクチャのラスタスキャンタイルグループ分割の一例を示しており、ピクチャは12個のタイルと3個のラスタスキャンタイルグループに分割されている。図4には、タイル410、412、414、416、および418が含まれる。各タイルには18個のCTUがある。より具体的には、図4は、12個のタイルと3個のタイルグループに分割された18×12輝度CTUを含むピクチャを示している(参考)。3つのタイルグループは次のとおりである。(1)第1のタイルグループはタイル410と412を含み、(2)第2のタイルグループはタイル414、416、418、420、および422を含み、(3)第3のタイルグループはタイル424、426、428、430、432を含む。
[0074]図5は、ピクチャを長方形タイルグループに分割する例を示している。ピクチャは、24個のタイル(タイル列6個、タイル行4個)と9個の長方形タイルグループに分割されている。図5には、タイル510、512、514、516、518、520、522、524、526、528、530、532、534、536、538、540、542、544、546、548、550、552、554、および556が含まれる。より具体的には、図5は、24個のタイルと9個のタイルグループに分割された18×12輝度CTUを有するピクチャを示す(参考)。タイルグループにはタイルが含まれ、タイルにはCTUが含まれる。9つの長方形タイルグループには、(1)2つのタイル510および512、(2)2つのタイル514および516、(3)2つのタイル518および520、(4)4つのタイル522、524、534、および536、(5)4つのタイルグループ526、528、538、540、(6)4つのタイル530、532、542、544、(7)2つのタイル546、548、(8)2つのタイル550、552、(9)2つのタイル554および556が含まれる。
[0075]<VVCにおける高周波数ゼロアウトを伴う大きなブロックサイズの変換>
[0076]VTM4では、最大64×64サイズの大きなブロックサイズの変換が可能であり、これは主に、より高解像度のビデオ、例えば1080pおよび4Kシーケンスに有用である。サイズ(幅もしくは高さ、または幅と高さの両方)が64に等しい変換ブロックの高周波変換係数はゼロに設定されるため、低周波係数のみが保持される。例えば、ブロック幅がM、ブロック高さがNであるM×N変換ブロックの場合、Mが64に等しい場合、変換係数の左32列のみが保持される。同様に、Nが64に等しい場合、変換係数の上位32行のみが保持される。変換スキップモードが大きなブロックに使用される場合、値をゼロにすることなくブロック全体が使用される。
[0077]<VVCにおける仮想パイプラインデータユニット(VPDU)>
[0078]仮想パイプラインデータユニット(VPDU)は、ピクチャ内の非重複ユニットとして定義される。ハードウェアデコーダでは、連続するVPDUが複数のパイプラインステージによって同時に処理される。VPDUサイズは、ほとんどのパイプラインステージのバッファサイズにほぼ比例するため、VPDUサイズを小さく保つことが重要である。ほとんどのハードウェアデコーダでは、VPDUサイズを最大変換ブロック(TB)サイズに設定できる。しかし、VVCでは、3値ツリー(TT)と2値ツリー(BT)の分割によってVPDUサイズが増加し得る。
[0079]VPDUサイズを64×64輝度(luma)サンプルとして維持するために、(シンタックスの伝送の変更を伴う)以下の規範的な分割制限がVTM5に適用される。
[0080]TT分割は、幅もしくは高さのいずれか、または幅と高さの両方が128に等しいCUでは許可されない。
[0081]N≦64(すなわち、幅が128に等しく、高さが128より小さい)の128×N CUの場合、水平BTは許可されない。
[0082]N≦64のN×128CU(すなわち、高さが128に等しく、幅が128より小さい)の場合、垂直BTは許可されない。
[0083]図6A、6B、6C、6D、6E、6F、6G、および6Hは、VTMにおいて許可されないTTおよびBT分割の例を示す。
[0084]<VVCにおける変換係数コーディング>
[0085]VVCにおける変換係数コーディングは、両方とも非重複係数グループ(CGまたはサブブロックとも呼ばれる)を使用するという意味でHEVCに類似している。しかし、それらの間にはいくつかの違いもある。HEVCでは、係数の各CGのサイズは4×4に固定されている。VVCドラフト6では、CGサイズがTBサイズに依存するようになる。その結果、VVCではさまざまなCGサイズ(1×16、2×8、8×2、2×4、4×2、および16×1)が使用可能になる。符号化ブロック内のCGとCG内の変換係数は、事前に定義されたスキャン順序に従って符号化される。
[0086]ピクセルあたりのコンテキスト符号化ビンの最大数を制限するには、TBの面積とビデオ成分のタイプ(例えば、輝度(luma)成分と色差(chroma)成分)を使用して、TBのコンテキスト符号化ビン(CCB)の最大数が導出される。コンテキスト符号化されたビンの最大数は、TB_zosize*1.75に等しくなる。ここで、TB_zosizeは、係数ゼロアウト後のTB内のサンプル数を示す。なお、coded_sub_block_flagは、CGに非ゼロ係数が含まれているか否かを示すフラグであり、CCBカウントには考慮されない。
[0087]係数ゼロアウトは、変換ブロックの特定の領域に位置する係数を強制的に0にするために変換ブロックに対して実行される演算である。例えば、現在のVVCでは、64×64変換にゼロアウト演算が関連付けられている。その結果、64×64変換ブロック内の左上の32×32領域の外側に位置する変換係数はすべて強制的に0になる。実際、現在のVVCでは、特定の次元に沿ったサイズが32を超える変換ブロックについては、その次元に沿って係数ゼロアウト演算が実行され、左上の32×32領域を超えて位置する係数が強制的に0になる。
[0088]VVCにおける変換係数コーディングでは、変数remBinsPasslが、最初に、許容されるコンテキスト符号化ビン(MCCB)の最大数に設定される。符号化プロセスでは、コンテキストで符号化されたビンが伝送されるたびに変数が1ずつ減る。remBinsPasslが4以上である間、係数は最初にsig_coeff_flag、abs_level_gtl_flag、par_level_flag、およびabs_level_gt3_flagのシンタックスを通じて伝送され、すべて第1のパスでコンテキスト符号化されたビンを使用する。係数のレベル情報の残りの部分は、第2のパスでゴロムライスコードとバイパス符号化されたビンを使用して、abs_remainderのシンタックス要素で符号化される。第1のパスの符号化中にremBinsPasslが4より小さくなった場合、現在の係数は第1のパスでは符号化されないが、ゴロムライスコードとバイパス符号化されたビンを使用してdec_abs_levelのシンタックス要素で第2のパスで直接符号化される。dec_abs_level[ ]のライスパラメータ導出プロセスは、テーブル3に指定されているように導出される。上記のすべてのレベル符号化の後、sig_coeff_flagが1に等しいすべてのスキャン位置の符号(符号フラグ)が最終的にバイパスビンとして符号化される。このようなプロセスを図7に示す。remBinsPasslはTBごとにリセットされる。sig_coeff_flag、abs_level_gtl_flag、par_level_flag、およびabs_level_gt3_flagのコンテキスト符号化されたビンの使用から、残りの係数のバイパス符号化されたビンの使用への移行は、TBごとに最大1回のみ発生する。係数サブブロックの場合、第1の係数を符号化する前にremBinsPasslが4より小さい場合、係数サブブロック全体がバイパス符号化されたビンを使用して符号化される。
[0089]図7は、変換ブロックの残差符号化構造を示す。
[0090]統一された(同じ)ライスパラメータ(RicePara)導出は、abs_remainderおよびdec_abs_levelのシンタックスを伝送するために使用される。唯一の違いは、ベースレベル(baseLevel)が、abs_remainderとdec_abs_levelの符号化に対してそれぞれ4と0に設定されていることである。ライスパラメータは、ローカルテンプレート内の隣接する5つの変換係数の絶対レベルの合計だけでなく、次のように対応するベースレベルにも基づいて決定される。
[0091]RicePara=RiceParTable[max(min(31,sumAbs-5*baseLevel),0)]
[0092]現在のVVCドラフト仕様における残差コーディングのシンタックスおよび関連するセマンティクス(意味内容)を、それぞれテーブル1およびテーブル2に示す。テーブル1の読み方は、本開示の付録セクションに示されており、VVC仕様にも記載されている。
[0093]<VVCにおける変換スキップモードの残差コーディング>
[0094]単一の残差コーディング方式が変換係数と変換スキップ係数の両方を符号化するために設計されるHEVCとは異なり、VVCでは、2つの別個の残差コーディング方式がそれぞれ変換係数および変換スキップ係数(すなわち、残差)に使用される。
[0095]変換スキップモードでは、残差信号の統計的特性は変換係数の統計的特性とは異なり、低周波成分の周囲のエネルギー圧縮は観察されない。残差コーディングは、次のような(空間)変換スキップ残差のさまざまな信号特性を考慮して変更される。
[0096]最後のx/y位置の伝送がない。
[0097]前のすべてのフラグが0に等しい場合、DCサブブロックを除くすべてのサブブロックに対して符号化されたcoded_sub_block_flag。
[0098]2つの隣接する係数を使用したsig_coeff_flagコンテキストモデリング。
[0099]1つのコンテキストモデルのみを使用するpar_level_flag。
[00100]5、7、9を超える追加のフラグ。
[00101]剰余2値化のための修正されたライスパラメータ導出。
[00102]符号フラグのコンテキストモデリングは、左および上の隣接する係数値に基づいて決定され、符号フラグは、すべてのコンテキスト符号化ビンをまとめて維持するために、sig_coeff_flagの後に解析される。
[00103]図8に示すように、シンタックス要素sig_coeff_flag、coeff_sign_flag、abs_level_gtl_flag、par_level_flagは、第1のパスで残差サンプルごとにインターリーブ方式で符号化され、続いて第2のパスでabs_level_gtX_flagビットプレーンが続き、第3のパスでabs_remainder符号化が続く。
[00104]パス1:sig_coeff_flag、coeff_sign_flag、abs_level_gtl_flag、par_level_flag
[00105]パス2:abs_level_gt3_flag、abs_level_gt5_flag、abs_level_gt7_flag、abs_level_gt9_flag
[00106]パス3:abs_remainder
[00107]図8は、変換スキップブロックの残差符号化構造を示す。
[00108]現在のVVCドラフト仕様における変換スキップモードの残差コーディングのシンタックスおよび関連するセマンティクス(意味内容)を、それぞれテーブル5およびテーブル2に示す。テーブル5の読み方は、本開示の付録セクションに示されており、VVC仕様にも記載されている。
[00109]<量子化>
[00110]現在のVVCでは、最大QP値が51から63に拡張され、それに応じて初期QPの伝送が変更された。SliceQpYの初期値は、slice_qp_deltaの非ゼロ値が符号化されるときにスライスセグメント層で変更できる。変換スキップブロックの場合、QPが4に等しい場合、量子化ステップサイズは1になるため、最小許容量子化パラメータ(QP)は4として定義される。
[00111]さらに、同じHEVCスカラー量子化が、依存スカラー量子化と呼ばれる新しい概念とともに使用される。依存スカラー量子化とは、変換係数の許容可能な再構成値のセットが、再構成順序で現在の変換係数レベルより前の変換係数レベルの値に依存するアプローチを指す。このアプローチの主な効果は、HEVCで使用される従来の独立したスカラー量子化と比較して、許容される再構成ベクトルがN次元ベクトル空間でより高密度にパックされることである(Nは変換ブロック内の変換係数の数を表す)。つまり、N次元単位体積あたりの許容再構成ベクトルの平均数が一定である場合、入力ベクトルと最も近い再構成ベクトルとの間の平均歪みが減少する。依存スカラー量子化のアプローチは、(a)異なる再構成レベルを持つ2つのスカラー量子化器を定義し、(b)2つのスカラー量子化器間で切り替えるプロセスを定義することによって実現される。
[00112]Q0およびQ1で示される、使用される2つのスカラー量子化器が図9に示されている。利用可能な再構成レベルの位置は、量子化ステップサイズΔによって一意に指定される。使用されるスカラー量子化器(Q0またはQ1)は、ビットストリーム内で明示的に伝送されない。代わりに、現在の変換係数に使用される量子化器は、符号化/再構成の順序で現在の変換係数に先行する変換係数レベルのパリティによって決定される。
[00113]図9は、提案された依存量子化アプローチで使用される2つのスカラー量子化器の図を示す。
[00114]図10Aおよび10Bに示されるように、2つのスカラー量子化器(Q0およびQ1)間の切り替えは、4つの量子化器状態(QState)を有するステートマシンを介して実現される。QStateは、0、1、2、3の4つの異なる値を取ることができる。これは、符号化/再構成順序で現在の変換係数に先行する変換係数レベルのパリティによって一意に決定される。変換ブロックの逆量子化の開始時に、状態は0に設定される。変換係数は、スキャン順序で(つまり、エントロピー復号と同じ順序で)再構成される。現在の変換係数が再構成された後、状態は図10に示すように更新される。ここで、kは変換係数レベルの値を示す。
[00115]図10Aは、提案された依存量子化の状態遷移を示す遷移図を示す。
[00116]図10Bは、提案された依存量子化のための量子化器の選択を示す表を示す。
[00117]デフォルトおよびユーザ定義のスケーリング行列を伝送することもサポートされている。DEFAULTモードのスケーリング行列はすべてフラットであり、すべてのTBサイズで要素が16に相当する。IBCおよびイントラ符号化モードは現在、同じスケーリング行列を共有している。したがって、USER_DEFINED行列の場合、MatrixTypeとMatrixType_DCの数は次のように更新される。
[00118]MatrixType:30=2(イントラ&IBC/インターの場合は2)×3(Y/Cb/Cr成分)×5(正方形のTBサイズ:輝度(luma)については4×4から64×64まで、色差(chroma)については2×2から32×32まで)。
[00119]MatrixType_DC:14=2(イントラ&IBC/インターの2×Y成分の1)×3(TBサイズ:16×16、32×32、64×64)+4(イントラ&IBC/インターの2×Cb/Cr成分の2)×2(TBサイズ:16×16、32×32)。
[00120]DC値は、次のスケーリング行列、16×16、32×32、および64×64に対して個別に符号化される。8×8より小さいサイズのTBの場合、1つのスケーリング行列のすべての要素が伝送される。TBのサイズが8×8以上の場合、1つの8×8スケーリング行列の64要素のみがベーススケーリング行列として伝送される。8×8を超えるサイズの正方行列を取得するには、8×8のベーススケーリング行列が(要素の複製によって)対応する正方形サイズ(つまり、16×16、32×32、64×64)にアップサンプリングされる。64点変換の高周波係数のゼロアウトが適用されると、スケーリング行列の対応する高周波もゼロアウトされる。つまり、TBの幅または高さが32以上の場合、係数の左半分または上半分のみが保持され、残りの係数には0が割り当てられる。さらに、右下の4×4要素は決して使用されないため、64×64スケーリング行列について伝送される要素の数も8×8から3つの4×4部分行列に減る。
[00121]<変換係数コーディングのためのコンテキストモデリング>
[00122]変換係数レベルの絶対値に関連するシンタックス要素の確率モデルの選択は、ローカル近傍における絶対レベルまたは部分的に再構成された絶対レベルの値に依存する。使用したテンプレートを図11に示す。
[00123]図11は、確率モデルを選択するために使用されるテンプレートの図を示す。黒い四角形は現在のスキャン位置を指定し、「x」の付いた四角形は使用されるローカル近傍を表す。
[00124]選択される確率モデルは、ローカル近傍内の絶対レベル(または部分的に再構成された絶対レベル)の合計と、ローカル近傍内の0より大きい絶対レベルの数(1に等しいsig_coeff_flagの数によって与えられる)に依存する。コンテキストモデリングと2値化は、ローカル近傍に対する次の尺度に依存する。
[00125]numSig:ローカル近傍内の非ゼロレベルの数。
[00126]sumAbs1:ローカル近傍における第1のパス後の部分的に再構成された絶対レベル(absLevel1)の合計。
[00127]sumAbs:ローカル近傍における再構成された絶対レベルの合計。
[00128]対角位置(d):変換ブロック内の現在のスキャン位置の水平座標と垂直座標の合計。
[00129]numSig、sumAbs1、およびdの値に基づいて、sig_coeff_flag、abs_level_gt1_flag、par_level_flag、およびabs_level_gt3_flagを符号化するための確率モデルが選択される。abs_remainderとdec_abs_levelを2値化するためのライスパラメータは、sumAbsとnumSigの値に基づいて選択される。
[00130]現在のVVCでは、縮小32ポイントMTS(RMTS32とも呼ばれる)は、高周波係数のスキップに基づいており、32ポイントDST-7/DCT-8の計算の複雑さを軽減するために使用される。また、これには、あらゆるタイプのゼロアウト(つまり、RMTS32およびDCT2の高周波成分用の既存のゼロアウト)を含む係数コーディングの変更が伴う。具体的には、最後の非ゼロ係数位置コーディングの2値化は、縮小されたTUサイズに基づいて符号化され、最後の非ゼロ係数位置コーディングのためのコンテキストモデルの選択は、元のTUサイズによって決定される。さらに、変換係数のsig_coeff_flagを符号化するために60のコンテキストモデルが使用される。コンテキストモデルインデックスの選択は、次のように、locSumAbsPass1と呼ばれる、事前に部分的に再構成された最大5つの絶対レベルの合計と、依存する量子化の状態QStateに基づいて行われる。
[00131]cldxが0に等しい場合、ctxlncは次のように導出される:
ctxlnc=12*Max(0、QState-1)+
Min((locSumAbsPassl+1)>>1,3)+
(d<2?8:(d<5?4:0))
[00132]それ以外の場合(cldxが0より大きい)、ctxlncは次のように導出される:
ctxlnc=36+8*Max(0,QState-1)+
Min((locSumAbsPass1+1)>>1,3)+(d<2?4:0)
[00133]<パレットモード>
[00134]パレットモードの背後にある基本的な考え方は、CU内のサンプルが代表的な色値の小さなセットによって表されるということである。このセットをパレットと呼ぶ。また、3つの色成分の値がビットストリームで直接伝送されるエスケープカラーとして伝送することで、パレットから除外されるカラー値を示すこともできる。これを図12に示す。
[00135]図12は、パレットモードで符号化されたブロックの例を示す。図12は、パレットモードで符号化された1210のブロックと1220のパレットを含む。
[00136]図12において、パレットサイズは4である。第1の3つのサンプルは、再構成にそれぞれパレットエントリ2、0、および3を使用する。青いサンプルはエスケープ記号を表す。CUレベルフラグpalette_escape_val_present_flagは、エスケープ記号がCU内に存在するかどうかを示す。エスケープ記号が存在する場合、パレットサイズは1だけ増加し、最後のインデックスがエスケープ記号を示すために使用される。したがって、図12では、インデックス4がエスケープ記号に割り当てられている。
[00137]パレット符号化されたブロックを復号するために、デコーダは以下の情報を有する必要がある。
[00138]パレットテーブル
[00139]パレットインデックス
[00140]パレットインデックスがエスケープ記号に対応する場合、サンプルの対応するカラー値を示すために追加のオーバーヘッドが伝送される。
[00141]さらに、エンコーダ側では、そのCUで使用される適切なパレットを導出する必要がある。
[00142]非可逆符号化用のパレットを導出するために、修正されたk平均クラスタリングアルゴリズムが使用される。ブロックの第1のサンプルがパレットに追加される。次に、ブロックからの後続の各サンプルについて、サンプルと現在のパレットカラーのそれぞれの間の絶対差の合計(SAD)が計算される。各成分の歪みが最小SADに対応するパレットエントリの閾値よりも小さい場合、サンプルはそのパレットエントリに属するクラスタに追加される。それ以外の場合、サンプルは新しいパレットエントリとして追加される。クラスタにマッピングされたサンプルの数が閾値を超えると、そのクラスタの重心が更新され、そのクラスタのパレットエントリになる。
[00143]次のステップでは、クラスタは使用量の降順にソートされる。そして、各エントリに対応するパレットエントリが更新される。通常、クラスタの重心がパレットのエントリとして使用される。しかし、パレットエントリの符号化のコストを考慮した場合、パレット予測子からのエントリが重心の代わりに更新されたパレットエントリとして使用するのに適しているかどうかを分析するために、レート歪み分析が実行される。このプロセスは、すべてのクラスタが処理されるか、パレットの最大サイズに達するまで継続される。最後に、クラスタにサンプルが1つしかなく、対応するパレットエントリがパレット予測子にない場合、サンプルはエスケープ記号に変換される。さらに、重複したパレットエントリが削除され、それらのクラスタがマージされる。
[00144]パレット導出後、ブロック内の各サンプルには、最も近い(SAD内の)パレットエントリのインデックスが割り当てられる。次に、サンプルは「INDEX」または「COPY_ABOVE」モードに割り当てられる。「INDEX」または「COPY_ABOVE」モードのいずれかが可能なサンプルごとに。次に、モードを符号化するコストが計算される。コストの低いモードが選択される。
[00145]パレットエントリの符号化のために、パレット予測子が維持される。パレットの最大サイズとパレット予測子は、SPSで伝送される。パレット予測子は、各CTU行、各スライス、および各タイルの先頭で初期化される。
[00146]パレット予測子内のエントリごとに、それが現在のパレットの一部であるかどうかを示す再利用フラグが伝送される。これを図13に示す。
[00147]図13は、パレットエントリを伝送するためのパレット予測子の使用を示す。図13は、前のパレット1310と現在のパレット1320を含む。
[00148]再利用フラグは、ゼロのランレングス符号化を使用して送信される。この後、次数0の指数ゴロムコードを使用して、新しいパレットエントリの数が伝送される。最後に、新しいパレットエントリの成分値が伝送される。
[00149]パレットインデックスは、図14Aおよび14Bに示すように、水平および垂直トラバーススキャンを使用して符号化される。スキャン順序は、palette_transpose_flagを使用してビットストリーム内で明示的に伝送される。
[00150]図14Aは、水平トラバーススキャンを示す。
[00151]図14Bは、垂直トラバーススキャンを示す。
[00152]パレットインデックスを符号化するために、ライン係数グループ(CG)ベースのパレットモードが使用され、これは、図15Aおよび15Bに示すように、トラバーススキャンモードに基づいてCUを16サンプルを有する複数のセグメントに分割し、インデックスラン、パレットインデックス値、およびエスケープモードの量子化されたカラーは、CGごとに順番に符号化/解析される。
[00153]図15Aは、パレットをスキャンするサブブロックベースのインデックスマップを示す。
[00154]図15Bは、パレットをスキャンするサブブロックベースのインデックスマップを示す。
[00155]パレットインデックスは、2つの主要なパレットサンプルモード、「INDEX」および「COPY_ABOVE」を使用して符号化される。前に説明したように、エスケープ記号には最大パレットサイズに等しいインデックスが割り当てられる。「COPY_ABOVE」モードでは、上の行のサンプルのパレットインデックスがコピーされる。「INDEX」モードでは、パレットインデックスが明示的に伝送される。各セグメントのパレットラン符号化の符号化順序は次のとおりである。
[00156]各ピクセルに対して、1つのコンテキスト符号化ビンrun_copy_flag=0が伝送され、ピクセルが前のピクセルと同じモードであるかどうかを示し、つまり、以前にスキャンされたピクセルと現在のピクセルが両方ともランタイプCOPY_ABOVEである場合、または以前にスキャンされたピクセルと現在のピクセルが両方ともランタイプINDEXで同じインデックス値である場合である。それ以外の場合は、run_copy_flag=1が伝送される。
[00157]ピクセルと前のピクセルが異なるモードである場合、1つのコンテキスト符号化ビンcopy_above_palett_indices_flagが伝送され、ピクセルのランタイプ、すなわちINDEXまたはCOPY_ABOVEを示す。デフォルトでINDEXモードが使用されるため、サンプルが第1の行(水平トラバーススキャン)または第1の列(垂直トラバーススキャン)にある場合、デコーダはランタイプを解析する必要はない。また、以前に解析されたランタイプがCOPY_ABOVEである場合、デコーダはランタイプを解析する必要はない。
1つのセグメント内のピクセルのパレットラン符号化の後、INDEXモードのインデックス値(palette_idx_idc)と量子化されたエスケープカラー(palette_escape_val)がバイパス符号化される。
[00158]<残差および係数のコーディングの改善>
[00159]VVCでは、変換係数を符号化するとき、統一された(同じ)ライスパラメータ(RicePara)導出が、abs_remainderおよびdec_abs_levelのシンタックスを伝送するために使用される。唯一の違いは、ベースレベル(baseLevel)が、abs_remainderとdec_abs_levelの符号化に対してそれぞれ4と0に設定されていることである。ライスパラメータは、次のように、ローカルテンプレート内の隣接する5つの変換係数の絶対レベルの合計だけでなく、対応するベースレベルにも基づいて決定される。
[00160]RicePara=RiceParTable[max(min(31,sumAbs-5*baseLevel),0)]
[00161]言い換えれば、シンタックス要素abs_remainderおよびdec_abs_levelの2値符号語は、隣接する係数のレベル情報に従って適応的に決定される。この符号語の決定はサンプルごとに実行されるため、係数コーディングに対するこの符号語の適応を処理するには追加のロジックが必要である。
[00162]同様に、変換スキップモードの下で残差ブロックを符号化するとき、シンタックス要素abs_remainderの2値符号語は、隣接する残差サンプルのレベル情報に従って適応的に決定される。
[00163]さらに、残差コーディングまたは変換係数コーディングに関連するシンタックス要素を符号化する場合、確率モデルの選択は、追加のロジックおよび追加のコンテキストモデルを必要とする隣接レベルのレベル情報に依存する。
[00164]現在の設計では、エスケープサンプルの2値化は、3次のExp-Golomb2値化プロセスを呼び出すことによって導出される。その性能にはさらに改善の余地がある。
[00165]現在のVVCでは、2つの異なるレベルマッピング方式が利用可能であり、それぞれ通常の変換および変換スキップに適用される。各レベルマッピング方式は、異なる条件、マッピング関数、およびマッピング位置に関連付けられている。通常の変換が適用されるブロックの場合、コンテキスト符号化ビン(CCB)の数が制限を超えた後、レベルマッピング方式が使用される。ZeroPosf[n]で示されるマッピング位置、およびAbsLevel[xC][yC]で示されるマッピング結果は、表2に指定されているように導出される。変換スキップが適用されるブロックの場合、コンテキスト符号化ビン(CCB)の数が制限を超える前に、別のレベルマッピング方式が使用される。predCoeffとして示されるマッピング位置、およびAbsLevel[xC][yC]として示されるマッピング結果は、テーブル5に指定されているように導出される。このような統一されていない設計は、標準化の観点からは最適ではない可能性がある。
[00166]HEVCにおける10ビットを超えるプロファイルの場合、1に等しいextended_precision_processing_flagは、拡張ダイナミックレンジが係数解析および逆変換処理に使用されることを指定する。現在のVVCでは、10ビットを超える変換係数の残差コーディングまたは変換スキップコーディングが性能の大幅な低下の原因として報告されている。その性能にはさらに改善の余地がある。
[00167]<提案方法>
[00168]本開示では、残差および係数のコーディングの改善のセクションで述べた問題に対処するために、いくつかの方法が提案される。以下の方法は、独立してまたは組み合わせて適用できることに留意されたい。
[00169]本開示の第1の態様によれば、残差コーディングにおいて特定のシンタックス要素、例えば、abs_remainderを符号化するために2値符号語の固定セットを使用することが提案される。2値符号語は、さまざまな方法を使用して形成できる。いくつかの例示的な方法を以下に挙げる。
[00170]まず、現在のVVCで使用されるのと同じabs_remainderの符号語を決定する手順が使用されるが、常に固定ライスパラメータ(例えば、1、2、または3)が選択される。
[00171]第2に、固定長の2値化。
[00172]第3に、切り捨てライス2値化。
[00173]第4に、切り捨て2値(TB)2値化プロセス。
[00174]第5、k次のExp-Golomb2値化プロセス(EGk)。
[00175]第6の、限定されたk次のExp-Golomb2値化。
[00176]本開示の第2の態様によれば、変換係数コーディングにおいて、あるシンタックス要素、例えば、abs_remainderおよびdec_abs_levelを符号化するために固定セットの符号語を使用することが提案される。2値符号語は、さまざまな方法を使用して形成できる。いくつかの例示的な方法を以下に挙げる。
[00177]第1に、現在のVVCで使用されるのと同じ、abs_remainderおよびdec_abs_levelの符号語を決定するための同じ手順が使用されるが、固定ライスパラメータ、例えば、1、2または3が使用される。現在のVVCで使用されているように、baseLevelの値は、abs_remainderとdec_abs_levelで依然として異なり得る(例えば、abs_remainderとdec_abs_levelを符号化する場合、baseLevelはそれぞれ4と0に設定される)。
[00178]第2に、現在のVVCで使用されるのと同じ、abs_remainderおよびdec_abs_levelの符号語を決定するための同じ手順が使用されるが、固定ライスパラメータ、例えば、1、2または3が使用される。abs_remainderとdec_abs_levelのbaseLevelsの値は同じになるように選択される。例えば、両方とも0を使用するか、両方とも4を使用する。
[00179]第3に、固定長の2値化。
[00180]第4に、切り捨てライス2値化。
[00181]第5に、切り捨て2値(TB)2値化プロセス。
[00182]第6に、k次のExp-Golomb2値化プロセス(EGk)。
[00183]第7の限定されたk次のExp-Golomb2値化
[00184]本開示の第3の側面によれば、残差コーディングまたは係数コーディング(例えば、abs_level_gtx_flag)に関連するシンタックス要素の符号化に単一のコンテキストを使用することが提案されており、隣接する復号レベル情報に基づくコンテキスト選択は削除できる。
[00185]本開示の第4の態様によれば、残差コーディングにおいて、特定のシンタックス要素、例えばabs_remainderを符号化するために2値符号語の可変セットを使用することが提案され、2値符号語のセットの選択は、現在のブロックの特定の符号化情報、例えばTB/CBおよび/またはスライス、CUの予測モード(例えば、IBCモードまたはイントラもしくはインター)ならびに/あるいはスライスタイプ(例えば、Iスライス、Pスライス、またはBスライス)に関連付けられた量子化パラメータ(QP)に従って決定される。2値符号語の変数セットを導出するには、さまざまな方法を使用できる。いくつかの例示的な方法を以下に示す。
[00186]第1に、現在のVVCで使用されるのと、abs_remainderの符号語を決定するための同じ手順が使用されるが、ライスパラメータが異なる。
[00187]第2、k次のExp-Golomb2値化プロセス(EGk)
[00188]第3の、限定されたk次のExp-Golomb2値化
[00189]第4の態様で説明したのと同じ方法は、変換効率の高いコーディングにも適用できる。本開示の第5の態様によれば、変換係数コーディングにおいて、特定のシンタックス要素、例えばabs_remainderとdec_abs_levelを符号化するために2値符号語の変数セットを使用することが提案され、2値符号語のセットの選択は、現在のブロックの特定の符号化情報、例えばTB/CBおよび/またはスライス、CUの予測モード(例えば、IBCモードまたはイントラもしくはインター)ならびに/あるいはスライスタイプ(例えば、Iスライス、Pスライス、またはBスライス)に関連付けられた量子化パラメータ(QP)に従って決定される。ここでも、2値符号語の変数セットを導出するためにさまざまな方法が使用される。いくつかの例示的な方法を以下に示す。
[00190]第1に、現在のVVCで使用されるのと、abs_remainderの符号語を決定するための同じ手順が使用されるが、ライスパラメータが異なる。
[00191]第2に、k次Exp-Golomb2値化プロセス(EGk)。
[00192]第3に、限定されたk次のExp-Golomb2値化。
[00193]上記のこれらの方法では、異なるライスパラメータを使用して、2値符号語の異なるセットを導出することができる。残差サンプルの特定のブロックについて、使用されるライスパラメータは、隣接レベル情報ではなく、QPCUとして示されるCU QPに従って決定される。具体的な一例をテーブル6に示す。ここで、TH1~TH4は(TH1<TH2<TH3<TH4)を満たす所定の閾値であり、K0~K4は所定のライスパラメータである。実際には、同じロジックが異なる方法で実装され得ることは注目に値する。例えば、特定の方程式またはルックアップテーブルを使用して、テーブル6に示すように、現在のCUのQP値から同じライスパラメータを導出することもできる。
[00194]本開示の第5の態様によれば、変換係数コーディングおよび/または変換スキップ残差コーディングのシンタックス要素の符号語決定に関連するパラメータおよび/または閾値のセットがビットストリームに伝送される。決定された符号語は、エントロピーコーダ、例えば算術符号化を通じてシンタックス要素を符号化するときに、2値化符号語として使用される。
[00195]パラメータおよび/または閾値のセットは、シンタックス要素の符号語決定に関連するすべてのパラメータおよび閾値の完全なセット、またはサブセットであり得ることに留意されたい。パラメータおよび/または閾値のセットは、ビデオビットストリーム内のさまざまなレベルで伝送できる。例えば、シーケンスレベル(例えば、シーケンスパラメータセット)、ピクチャレベル(例えば、ピクチャパラメータセットおよび/またはピクチャヘッダ)、スライスレベル(例えば、スライスヘッダ)、符号化ツリーユニット(CTU)レベルまたは符号化ユニット(CU)レベルで伝送することができる。
[00196]一例では、変換スキップ残差コーディングにおけるabs_remainderのシンタックスを符号化するための符号語を決定するために使用されるライスパラメータは、スライスヘッダ、ピクチャヘッダ、PPS、および/またはSPSで伝送される。伝送用のライスパラメータは、CUが変換スキップモードとして符号化され、CUが上述のスライスヘッダ、ピクチャヘッダ、PPSおよび/またはSPSなどに関連付けられている場合に、シンタックスabs_remainderを符号化するための符号語を決定するために使用される。
[00197]本開示の第6の態様によれば、第1および第2の態様に示される符号語決定に関連するパラメータおよび/または閾値のセットは、変換係数コーディングおよび/または変換スキップ残差コーディングのシンタックス要素に使用される。また、現在のブロックに輝度残差/係数が含まれているか色差残差/係数が含まれているかに応じて、異なるセットを使用できる。決定された符号語は、エントロピーコーダ、例えば算術符号化を通じてシンタックス要素を符号化するときに、2値化符号語として使用される。
[00198]一例では、現在のVVCで使用される変換残差コーディングに関連付けられたabs_remainderの符号語は、輝度ブロックと色差ブロックの両方に使用されるが、異なる固定ライスパラメータが輝度ブロックと色差ブロックによってそれぞれ使用される(例えば、輝度ブロックの場合はK1、色差ブロックの場合はK2、K1とK2は整数である)
[00199]本開示の第7の態様によれば、変換係数コーディングおよび/または変換スキップ残差コーディングのシンタックス要素の符号語決定に関連するパラメータおよび/または閾値のセットがビットストリームに伝送される。また、輝度ブロックと色差ブロックに対して異なるセットを伝送できる。決定された符号語は、エントロピーコーダ、例えば算術符号化を通じてシンタックス要素を符号化するときに、2値化符号語として使用される。上記の態様で説明したのと同じ方法は、パレットモードでのエスケープ値符号化、例えばpalette_escape_valにも適用できる。
[00200]本開示の第8の態様によれば、パレットモードであるエスケープ値を符号化するための2値符号語の異なるセットを導出するために、異なるk次のExp-Golomb2値化を使用することができる。一例では、エスケープサンプルの所与のブロックについて、使用されるExp-Golombパラメータ、すなわちkの値は、QPCUとして示されるブロックのQP値に従って決定される。テーブル6に示されているのと同じ例を、ブロックの所与のQP値に基づいてパラメータkの値を導出する際に使用することができる。この例では、4つの異なる閾値(TH1からTH4)がリストされており、これらの閾値とQPCUに基づいて5つの異なるk値(K0からK4)が導出されるが、閾値の数は説明のみを目的としていることは注目に値する。実際には、異なる数の閾値を使用して、QP値範囲全体を異なる数のQP値セグメントに分割することができ、各QP値セグメントに対して、異なるk値を使用して、パレットモードで符号化されるブロックのエスケープ値を符号化するための対応する2値符号語を導出することができる。実際には、同じロジックが異なる方法で実装され得ることも注目に値する。例えば、特定の方程式またはルックアップテーブルを使用して、同じライスパラメータを導出することができる。
[00201]本開示の第9の態様によれば、エスケープサンプルのシンタックス要素の符号語決定に関連するパラメータおよび/または閾値のセットがビットストリームに伝送される。決定された符号語は、エントロピーコーダ、例えば算術符号化を通じてエスケープサンプルのシンタックス要素を符号化するときに、2値化符号語として使用される。
[00202]パラメータおよび/または閾値のセットは、シンタックス要素の符号語決定に関連するすべてのパラメータおよび閾値の完全なセット、またはサブセットであり得ることに留意されたい。パラメータおよび/または閾値のセットは、ビデオビットストリーム内のさまざまなレベルで伝送できる。例えば、シーケンスレベル(例えば、シーケンスパラメータセット)で、ピクチャレベル(例えば、ピクチャパラメータセットおよび/またはピクチャヘッダ)、スライスレベル(例えば、スライスヘッダ)、符号化ツリーユニット(CTU)レベルまたは符号化ユニット(CU)レベルで伝送することができる。
[00203]本態様による一例では、k次のExp-Golomb2値化を使用して、パレットモードでpalette_escape_valのシンタックスを符号化するための符号語を決定し、kの値がビットストリームでデコーダに伝送される。kの値は、異なるレベルで伝送されてもよく、例えば、スライスヘッダ、ピクチャヘッダ、PPS、および/またはSPSなどで伝送されてもよい。伝送されたExp-Golombパラメータは、CUがパレットモードとして符号化され、CUが前述のスライスヘッダ、ピクチャヘッダ、PPSおよび/またはSPSなどに関連付けられている場合に、シンタックスpalette_escape_valを符号化するための符号語を決定するために使用される。
[00204]<変換スキップモードと通常変換モードのレベルマッピングの調和>
[00205]本開示の第10の態様によれば、レベルマッピングを適用するための同じ条件が、変換スキップモードと通常変換モードの両方に使用される。一例では、コンテキスト符号化ビン(CCB)の数が変換スキップモードと通常変換モードの両方の制限を超えた後にレベルマッピングを適用することが提案される。別の例では、コンテキスト符号化ビン(CCB)の数が変換スキップモードと通常変換モードの両方の制限を超える前にレベルマッピングを適用することが提案されている。
[00206]本開示の第11の態様によれば、レベルマッピングにおけるマッピング位置を導出する同じ方法が、変換スキップモードと通常変換モードの両方に使用される。一例では、変換スキップモードで使用されるレベルマッピングにおけるマッピング位置の導出方法を通常変換モードにも適用することが提案される。別の例では、通常変換モードで使用されるレベルマッピングにおけるマッピング位置の導出方法を変換スキップモードにも適用することが提案されている。
[00207]本開示の第12の態様によれば、同じレベルのマッピング方法が変換スキップモードと通常変換モードの両方に適用される。一例では、変換スキップモードで使用されるレベルマッピング関数を通常変換モードにも適用することが提案される。別の例では、通常変換モードで使用されるレベルマッピング関数を変換スキップモードにも適用することが提案されている。
[00208]<残差コーディングにおけるライスパラメータ導出の簡略化>
[00209]本開示の第13の態様によれば、Golomb-Riceコードを使用してabs_remainder/dec_abs_levelのシンタックス要素を符号化する際に、ライスパラメータを導出するルックアップテーブルの代わりに、シフト演算や除算演算などの単純なロジックを使用することが提案されている。現在の開示によれば、テーブル4に指定されているルックアップテーブルは削除されてもよい。一例では、ライスパラメータcRiceParamは、cRiceParam=(locSumAbs>>n)として導出され、nは正の数、例えば3である。実際には、同じ結果を達成するために他の異なるロジック、例えば2のn乗に等しい値による除算演算を使用できることは注目に値する。VVCドラフトに基づく対応する復号プロセスの例を以下に示す。変更は太字と斜体のフォントで示され、削除された内容は取り消し線のフォントで示されている。
[00210]本開示の第14の態様によれば、Golomb-Riceコードを使用してabs_remainder/dec_abs_levelのシンタックス要素を符号化する際に、ライスパラメータの導出のためにより少ない隣接位置を使用することが提案される。一例では、abs_remainder/dec_abs_levelのシンタックス要素を符号化する際のライスパラメータの導出に2つの隣接位置のみを使用することが提案される。VVCドラフトに基づく対応する復号プロセスを以下に示す。変更は太字および斜体のフォントで、削除された内容は取り消し線のフォントで示されている。
[00211]別の例では、abs_remainder/dec_abs_levelのシンタックス要素を符号化する際のライスパラメータの導出のために、1つの隣接位置のみを使用することが提案される。VVCドラフトに基づく対応する復号プロセスを以下に示す。変更は太字および斜体のフォントで、削除された内容は取り消し線のフォントで示されている。
[00212]本開示の第15の態様によれば、Golomb-Riceコードを使用してabs_remainder/dec_abs_levelのシンタックス要素を符号化する際に、ライスパラメータを導出するために、baseLevelの値に基づいてlocSumAbsの値を調整するために異なるロジックを使用することが提案されている。一例では、追加のスケールおよびオフセット演算が「(locSumAbs-baseLevel*5)*alpha+beta」の形式で適用される。alphaの値が1.5、betaの値が1の場合、VVCドラフトに基づく対応する復号プロセスは次のように示される。変更は太字の斜体フォントで、削除された内容は取り消し線のフォントで示されている。
[00213]本開示の第16の態様によれば、Golomb-Riceコードを使用して、abs_remainder/dec_abs_levelのシンタックス要素におけるライスパラメータの導出のためのクリップ演算を除去することが提案される。現在の開示によれば、VVCドラフトの復号プロセスの例は以下のように示されており、変更は太字および斜体のフォントで示され、削除された内容は取り消し線のフォントで示されている。
[00214]本開示によれば、VVCドラフトの復号プロセスの一例が以下に示されており、変更は太字および斜体のフォントで示され、削除された内容は取り消し線のフォントで示されている。
[00215]本開示の第17の態様によれば、Golomb-Riceコードを使用してabs_remainder/dec_abs_levelのシンタックス要素を符号化する際のライスパラメータの導出のために、locSumAbsの初期値を0から非ゼロの整数に変更することが提案されている。一例では、初期値1がlocSumAbsに割り当てられ、VVCドラフトに基づく対応する復号プロセスが以下に示される。変更は太字の斜体フォントで、削除された内容は取り消し線フォントで示されている。
[00216]本開示の第18の態様によれば、Golomb-Riceコードを使用してabs_remainder/dec_abs_levelのシンタックス要素を符号化する際のライスパラメータの導出には、隣接位置レベル値の合計値の代わりにその最大値を使用することが提案されている。VVCドラフトに基づく対応する復号プロセスの例を以下に示す。変更は太字および斜体のフォントで示され、削除された内容は取り消し線のフォントで示されている。
[00217]本開示の第19の態様によれば、Golomb-Riceコードを使用してabs_remainder/dec_abs_levelのシンタックス要素を符号化する際に、隣接する位置の各AbsLevel値とベースレベル値の相対振幅に基づいてライスパラメータを導出することが提案されている。一例では、ライスパラメータは、隣接する位置のAbsLevel値のうちのどれだけがベースレベルよりも大きいかに基づいて導出される。VVCドラフトに基づく対応する復号プロセスの例を以下に示す。変更は太字および斜体のフォントで示され、削除された内容は取り消し線のフォントで示されている。
[00218]別の例では、ライスパラメータは、AbsLevel値がベースレベルより大きい隣接位置の(AbsLevel-baseLevel)値の合計に基づいて導出される。VVCドラフトに基づく対応する復号プロセスの例を以下に示す。変更は太字および斜体のフォントで示され、削除された内容は取り消し線のフォントで示されている。
[00219]本開示によれば、VVCドラフトの復号プロセスの一例が以下に示されており、変更は太字および斜体のフォントで示され、削除された内容は取り消し線のフォントで示されている。
[00220]<残差コーディングにおけるレベルマッピング位置導出の簡略化>
[00221]本開示の第20の態様によれば、ZeroPos[n]の導出からQStateを除去し、ZeroPos[n]がcRiceParamのみから導出されるようにすることが提案される。VVCドラフトに基づく対応する復号プロセスの例を以下に示す。変更は太字および斜体のフォントで示され、削除された内容は取り消し線のフォントで示されている。
[00222]本開示の第21の態様によれば、locSumAbsの値に基づいてZeroPos[n]を導出することが提案される。VVCドラフトに基づく対応する復号プロセスの例を以下に示す。変更は太字および斜体のフォントで示され、削除された内容は取り消し線のフォントで示されている。
[00223]本開示の第22の態様によれば、隣接する位置のAbsLevelの値に基づいてZeroPos[n]を導出することが提案される。一例では、ZeroPos[n]は、AbsLevelf[xC+1][yC]およびAbsLevelf[xC][yC+1]のうちの最大値に基づいて導出される。VVCドラフトに基づく対応する復号プロセスの例を以下に示す。変更は太字および斜体のフォントで示され、削除された内容は取り消し線のフォントで示されている。
[00224]本開示の第23の態様によれば、隣接する位置のすべてのAbsLevel値の最大値に基づいて、cRiceParamおよびZeroPos[n]の両方を導出することが提案される。VVCドラフトに基づく対応する復号プロセスの例を以下に示す。変更は太字および斜体のフォントで示され、削除された内容は取り消し線のフォントで示されている。
[00225]上記の態様で説明したのと同じ方法は、変換スキップモードの残差コーディングにおけるpredCoeffの導出にも適用できる。一例では、変数predCoeffは次のように導出される。
[00226]predCoeff=Max(absLeftCoeff,absAboveCoeff)+1
[00227]<変換係数の残差コーディング>
[00228]本開示では、「残差および係数のコーディングの改善」セクションで指摘した問題に対処するために、残差コーディングの既存の設計を簡素化および/またはさらに改善する方法が提供される。一般に、本開示で提案される技術の主な特徴は、次のように要約される。
[00229]第1に、現在の設計に基づいて、正規の残差コーディングの下で使用されるライスパラメータ導出を調整する。
[00230]第2に、正規の残差コーディングの下で使用される2値方法を変更する。
[00231]第3に、正規の残差コーディングの下で使用されるライスパラメータ導出を変更する。
[00232]<現在の設計に基づく残差コーディングにおけるライスパラメータ導出>
[00233]本開示の第24の態様によれば、残差コーディングにおいて、特定のシンタックス要素、例えばabs_remainder/dec_abs_levelを符号化するためにライスパラメータ導出の可変方法を使用することが提案され、選択は現在のブロックの特定の符号化情報、例えばTB/CBおよび/またはスライス/プロファイルに関連付けられた量子化パラメータもしくは符号化ビット深度に従って、ならびに/あるいはTB/CB/スライス/ピクチャ/シーケンスレベルに関連付けられた新しいフラグ、例えばextended_precision_processing_flagに従って決定される。ライスパラメータを導出するためにさまざまな方法を使用できる。いくつかの例示的な方法を以下に列挙する。
[00234]第1に、cRiceParam=(cRiceParam<<a)+(cRiceParam>>b)+c、ここでa、bおよびcは正の数、例えば{a,b,c}={1,1,0}である。実際には、同じ結果を達成するために他の異なるロジック、例えば2のn乗に等しい値による乗算演算を使用できることは注目に値する。
[00235]第2に、cRiceParam=(cRiceParam<<a)+b、ここでaおよびbは正の数、例えば{a,b}={1,1}である。実際には、同じ結果を達成するために他の異なるロジック、例えば2のn乗に等しい値による乗算演算を使用できることは注目に値する。
[00236]第3に、cRiceParam=(cRiceParam*a)+b、ここでaおよびbは正の数、例えば{a,b}={1.5,0}である。実際には、同じ結果を達成するために他の異なるロジック、例えば2のn乗に等しい値による乗算演算を使用できることは注目に値する。
[00237]VVCドラフトに基づく対応する復号プロセスの例を以下に示す。変更は太字および斜体のフォントで示され、削除された内容は取り消し線のフォントで示される。VVCドラフトへの変更は、テーブル22に太字および斜体のフォントで示されている。実際には、同じロジックが異なる方法で実装され得ることは注目に値する。例えば、特定の方程式またはルックアップテーブルを使用して、現在のCU/シーケンスのBitDepth値から同じライスパラメータを導出することもできる。
[00238]別の例では、BitDepthが所定の閾値(例えば、10、11、12、13、14、15、または16)以上である場合、ライスパラメータcRiceParamは次のように導出される:cRiceParam=(cRiceParam<<a))+(cRiceParam>>b)+c、ここで、a、b、cは正の数、例えば1である。VVCドラフトに基づく対応する復号プロセスを以下に示す。変更は太字および斜体のフォントで、削除された内容は取り消し線のフォントで示されている。VVCドラフトへの変更は、テーブル23に太字および斜体のフォントで示されている。実際には、同じロジックが異なる方法で実装され得ることは注目に値する。例えば、特定の方程式またはルックアップテーブルを使用して、現在のCU/シーケンスのBitDepth値から同じライスパラメータを導出することもできる。
[00239]<10ビットを超えるプロファイルの残差コーディングにおける2値化法>
[00240]本開示の第25の態様によれば、残差コーディングにおいて、特定のシンタックス要素、例えばabs_remainder/dec_abs_levelを符号化するために2値符号語の変数セットを使用することが提案され、選択は現在のブロックの特定の符号化情報、例えばTB/CBおよび/またはスライス/プロファイルに関連付けられた量子化パラメータもしくは符号化ビット深度に従って、ならびに/あるいはTB/CB/スライス/ピクチャ/シーケンスレベルに関連付けられた新しいフラグ、例えばextended_precision_processing_flagに従って決定される。2値符号語の変数セットを導出するには、さまざまな方法を使用できる。いくつかの例示的な方法を以下に示す。
[00241]まず、現在のVVCで使用されるのと、abs_remainderの符号語を決定するための同じ手順が使用されるが、常に固定ライスパラメータ(例えば、2、3、4、5、6、7または8)が選択される。固定値は、現在のブロックの特定の符号化情報、例えば、TB/CBおよび/またはスライス/プロファイルに関連付けられた量子化パラメータもしくは符号化ビット深度に従って、ならびに/あるいはTB/CB/スライス/ピクチャ/シーケンスレベルに関連付けられたシンタックス要素、例えば、rice_parameter_valueに従って、異なる条件では異なり得る。具体的な一例をテーブル24に示す。ここで、TH1~TH4は(TH1<TH2<TH3<TH4)を満たす所定の閾値であり、K0~K4は所定のライスパラメータである。実際には、同じロジックが異なる方法で実装され得ることは注目に値する。例えば、特定の方程式またはルックアップテーブルを使用して、テーブル24に示すように、現在のCU/シーケンスのBitDepth値から同じライスパラメータを導出することもできる。
[00242]第2に、固定長の2値化。
[00243]第3に、切り捨てライス2値化。
[00244]第4に、切り捨て2値(TB)2値化プロセス。
[00245]第5に、k次のExp-Golomb2値化プロセス(EGk)。
[00246]第6に、限定されたk次のExp-Golomb2値化
[00247]一例では、新しいフラグ、例えばextended_precision_processing_flagが1に等しい場合、ライスパラメータcRiceParamはnに固定される。ここで、nは正の数(例えば、2、3、4、5、6、7または8)である。条件により固定値が異なり得る。VVCドラフトに基づく対応する復号プロセスの例を以下に示す。変更は太字および斜体のフォントで示され、削除された内容は取り消し線のフォントで示されている。VVCドラフトへの変更は、テーブル25に太字および斜体のフォントで示されている。
[00248]別の例では、新しいフラグ、例えばextended_precision_processing_flagが1に等しい場合、abs_remainder/dec_abs_levelのシンタックス要素を符号化する際にライスパラメータに対して1つの固定値のみを使用することが提案される。VVCドラフトに基づく対応する復号プロセスを以下に示す。変更は太字および斜体のフォントで、削除された内容は取り消し線のフォントで示されている。VVCドラフトへの変更は、テーブル26に太字および斜体のフォントで示されている。
[00249]さらに別の例では、BitDepthが所定の閾値(例えば、10、11、12、13、14、15、または16)以上である場合、ライスパラメータcRiceParamはnに固定される。ここで、nは正の数、例えば、4、5、6、7、または8である。条件により固定値が異なり得る。VVCドラフトに基づく対応する復号プロセスの例を以下に示す。ここで、THは、所定の閾値(例えば、10、11、12、13、14、15、または16)である。VVCドラフトへの変更はテーブル27に太字および斜体で示されており、変更は太字および斜体で示され、削除された内容は取り消し線で示されている。
[00250]さらに別の例では、BitDepthが所定の閾値(例えば、10、11、12、13、14、15、または16)より大きい場合、abs_remainder/dec_abs_levelのシンタックス要素を符号化する際に、ライスパラメータに対して1つの固定値のみを使用することが提案される。VVCドラフトに基づく対応する復号プロセスを以下に示し、THは所定の閾値(例えば、10、11、12、13、14、15、または16)であり、変更は太字および斜体のフォントで示され、削除された内容は取り消し線のフォントで示される。VVCドラフトへの変更は、テーブル28に太字および斜体のフォントで示されている。
[00251]<残差コーディングにおけるライスパラメータ導出>
[00252]本開示の第26の態様によれば、残差コーディングにおいて、特定のシンタックス要素、例えばabs_remainder/dec_abs_levelを符号化するためにライスパラメータ導出の可変方法を使用することが提案され、選択は現在のブロックの特定の符号化情報、例えばTB/CBおよび/またはスライス/プロファイルに関連付けられた量子化パラメータもしくは符号化ビット深度に従って、ならびに/あるいはTB/CB/スライス/ピクチャ/シーケンスレベルに関連付けられた新しいフラグ、例えば、extended_precision_processing_flagに従って決定される。ライスパラメータを導出するためにさまざまな方法を使用できる。いくつかの例示的な方法を以下に示す。
[00253]第1に、カウンタを使用してライスパラメータを導出することが提案される。カウンタは、符号化された係数の値と、現在のブロックの特定の符号化された情報、例えば、成分IDに従って決定される。具体的な例の1つは、riceParameter=counter/aである。ここで、aは正の数(例えば、4)であり、2つのカウンタ(輝度/色差で分割)を維持する。これらのカウンタは、各スライスの開始時に0にリセットされる。符号化されると、これがサブTU内で符号化された第1の係数である場合、次のようにカウンタが更新される。
if(coeffValue>=(3<<rice))counter++
if(((coeffValue<<1)<(1<<riceParameter))&&(counter>0))counter--;
[00254]第2に、VVCにおけるライスパラメータの導出においてシフト演算を追加することが提案される。シフトは、符号化係数の値に応じて決定される。VVCドラフトに基づく対応する復号プロセスの例を以下に示す。シフトは方法1のカウンタに従って決定され、変更は太字および斜体のフォントで、削除された内容は取り消し線のフォントで示される。VVCドラフトへの変更は、テーブル29に太字および斜体のフォントで示されている。
[00255]第1に、VVCにおけるライスパラメータの導出においてシフト演算を追加することが提案される。シフトは、現在のブロックの特定の符号化情報、例えばTB/CBおよび/またはスライスプロファイル(例えば14ビットプロファイルまたは16ビットプロファイル)に関連する符号化ビット深度に従って決定される。VVCドラフトに基づく対応する復号プロセスの例を以下に示す。シフトは方法1のカウンタに従って決定され、変更は太字および斜体のフォントで、削除された内容は取り消し線のフォントで示される。VVCドラフトへの変更は、テーブル30に太字および斜体のフォントで示されている。
[00256]<変換スキップのための残差コーディング>
[00257]本開示の第27の態様によれば、変換スキップの残差コーディングにおいて、特定のシンタックス要素、例えばabs_remainderを符号化するために2値符号語の変数セットを使用することが提案され、選択は現在のブロックの特定の符号化情報、例えばTB/CBおよび/またはスライス/プロファイルに関連付けられた量子化パラメータもしくは符号化ビット深度に従って、ならびに/あるいはTB/CB/スライス/ピクチャ/シーケンスレベルに関連付けられた新しいフラグ、例えば、extended_precision_processing_flagに従って決定される。2値符号語の変数セットを導出するには、さまざまな方法を使用できる。いくつかの例示的な方法を以下に示す。
[00258]まず、現在のVVCで使用されるのと、abs_remainderの符号語を決定するための同じ手順が使用されるが、常に固定ライスパラメータ(例えば、2、3、4、5、6、7または8)が選択される。固定値は、現在のブロックの特定の符号化情報、例えば、量子化パラメータ、フレームタイプ(例えば、I、PもしくはB)、成分ID(例えば、輝度もしくは色差)、カラーフォーマット(例えば、420、422、もしくは444)、またはTB/CBおよび/もしくはスライス/プロファイルに関連付けられた符号化ビット深度に従って、ならびに/あるいはTB/CB/スライス/ピクチャ/シーケンスレベルに関連付けられたシンタックス要素、例えば、rice_parameter_valueに従って、異なる条件では異なり得る。具体例をテーブル7に示す。ここで、TH1~TH4は(TH1<TH2<TH3<TH4)を満たす所定の閾値であり、K0~K4は所定のライスパラメータである。実際には、同じロジックが異なる方法で実装され得ることは注目に値する。例えば、特定の方程式またはルックアップテーブルを使用して、テーブル7に示すように、現在のCU/シーケンスのBitDepth値から同じライスパラメータを導出することもできる。
[00259]第2に、固定長の2値化。
[00260]第3に、切り捨てライス2値化。
[00261]第4に、切り捨て2値(TB)2値化プロセス。
[00262]第5に、k次のExp-Golomb2値化プロセス(EGk)。
[00263]第6に、限定されたk次のExp-Golomb2値化
[00264]VVCドラフトに基づく対応する復号プロセスの例を以下に示す。VVCドラフトへの変更はテーブル31に太字および斜体フォントで示され、削除された内容は取り消し線フォントで示される。実際には、同じロジックが異なる方法で実装され得ることは注目に値する。例えば、特定の方程式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
[00265]別の例では、新しいフラグ、例えばextended_precision_processing_flagが1に等しい場合、abs_remainderのシンタックス要素を符号化する際にライスパラメータに対して1つの固定値のみを使用することが提案される。VVCドラフトに基づく対応する復号プロセスを以下に示す。変更は太字および斜体のフォントで、削除された内容は取り消し線のフォントで示されている。VVCドラフトへの変更は、テーブル32に太字および斜体のフォントで示されている。
[00266]さらに別の例では、新しいフラグ、例えばextended_precision_processing_flagが1に等しい場合、ライスパラメータcRiceParamはnに固定される。ここで、nは正の数(例えば、2、3、4、5、6、7、または8)である。条件により固定値が異なり得る。VVCドラフトに基づく対応する復号プロセスの例を以下に示す。変更は太字および斜体のフォントで示され、削除された内容は取り消し線のフォントで示されている。VVCドラフトへの変更は、テーブル33に太字および斜体のフォントで示されている。
[00267]さらに別の例では、BitDepthが所定の閾値(例えば、10、11、12、13、14、15、または16)以上である場合、ライスパラメータcRiceParamはnに固定される。ここで、nは正の数、例えば、4、5、6、7、または8である。条件により固定値が異なり得る。VVCドラフトに基づく対応する復号プロセスの例を以下に示し、THは所定の閾値(例えば、10、11、12、13、14、15、または16)であり、変更は太字および斜体のフォントで示され、削除された内容は取り消し線のフォントで示される。VVCドラフトへの変更は、テーブル34に太字および斜体のフォントで示されている。
[00268]さらに別の例では、変換スキップブロックのライスパラメータの伝送が有効であるか無効であるかを示すために、1つの制御フラグがスライスヘッダ内で伝送される。制御フラグが有効として伝送されると、変換スキップスライスごとに1つのシンタックス要素がさらに伝送されて、そのスライスのライスパラメータが示される。制御フラグが無効として伝送されると(例えば、「0」に設定される)、変換スキップスライスのライスパラメータを示すために下位レベルでそれ以上のシンタックス要素は伝送されず、デフォルトのライスパラメータ(例えば、1)がすべての変換スキップスライスに使用される。VVCドラフトに基づく対応する復号プロセスの例を以下に示す。ここで、THは所定の値(例えば、0、1、2)であり、変更は太字および斜体のフォントで示され、削除された内容は取り消し線のフォントで示される。VVCドラフトへの変更は、テーブル35に太字および斜体のフォントで示されている。sh_ts_residual_coding_rice_indexはさまざまな方法で符号化でき、および/または最大値を有し得ることは注目に値する。例えば、u(n)、nビットを使用する符号なし整数、またはf(n)、左ビットを最初に(左から右に)書き込まれたnビットを使用する固定パターンビット文字列も、同じシンタックス要素の符号化/復号に使用できる。
[00269]<スライスヘッダのシンタックス>
[00270]1に等しいsh_ts_residual_coding_rice_flagは、sh_ts_residual_coding_rice_indexが現在のスライスに存在し得ることを指定し、0に等しいsh_ts_residual_coding_rice_flagは、sh_ts_residual_coding_rice_indexが現在のスライスに存在しないことを指定する。sh_ts_residual_coding_rice_flagが存在しない場合、sh_ts_residual_coding_rice_flagの値は0に等しいと推定される。sh_ts_residual_coding_rice_indexは、residual_ts_coding()シンタックス構造に使用されるライスパラメータを指定する。
[00271]さらに別の例では、1つの制御フラグがシーケンスパラメータセット(またはシーケンスパラメータセット範囲拡張シンタックス)内で伝送され、変換スキップブロックに対するライスパラメータの伝送が有効であるか無効であるかを示す。制御フラグが有効として伝送されると、変換スキップスライスごとに1つのシンタックス要素がさらに伝送されて、そのスライスのライスパラメータが示される。制御フラグが無効として伝送されると(例えば、「0」に設定される)、変換スキップスライスのライスパラメータを示すために下位レベルでそれ以上のシンタックス要素は伝送されず、デフォルトのライスパラメータ(例えば、1)がすべての変換スキップスライスに使用される。VVCドラフトに基づく対応する復号プロセスの例を以下に示す。ここで、THは、所定の値(例えば、0、1、2)である。VVCドラフトへの変更はテーブル37に太字および斜体のフォントで示され、削除された内容は取り消し線のフォントで示されている。sh_ts_residual_coding_rice_idxはさまざまな方法で符号化できること、および/または最大値を有し得ることは注目に値する。例えば、u(n)、nビットを使用する符号なし整数、またはf(n)、左ビットを最初に(左から右に)書き込まれたnビットを使用する固定パターンビット文字列も、同じシンタックス要素の符号化/復号に使用できる。
[00272]<シーケンスパラメータセットRBSPシンタックス>
[00273]1に等しいsps_ts_residual_coding_rice_present_in_sh_flagは、SPSを参照するSHシンタックス構造内にsh_ts_residual_coding_rice_idxが存在し得ることを指定する。0に等しいsps_ts_residual_coding_rice_present_in_sh_flagは、SPSを参照するSHシンタックス構造内にsh_ts_residual_coding_rice_idxが存在しないことを指定する。sps_ts_residual_coding_rice_present_in_sh_flagが存在しない場合、sps_ts_residual_coding_rice_present_in_sh_flagの値は0に等しいと推定される。
[00274]<スライスヘッダのシンタックス>
[00275]sh_ts_residual_coding_rice_idxは、residual_ts_coding()シンタックス構造に使用されるライスパラメータを指定する。
[00276]さらに別の例では、各変換スキップスライスに対して1つのシンタックス要素が伝送されて、そのスライスのライスパラメータを示す。VVCドラフトに基づく対応する復号プロセスの例を以下に示す。VVCドラフトへの変更は、テーブル40に太字および斜体のフォントで示されている。sh_ts_residual_coding_rice_idxはさまざまな方法で符号化できること、および/または最大値を有し得ることは注目に値する。例えば、u(n)、nビットを使用する符号なし整数、またはf(n)、左ビットを最初に(左から右に)書き込まれたnビットを使用する固定パターンビット文字列も、同じシンタックス要素の符号化/復号に使用できる。
[00277]<スライスヘッダのシンタックス>
[00278]sh_ts_residual_coding_rice_idxは、residual_ts_coding()シンタックス構造に使用されるライスパラメータを指定する。sh_ts_residual_coding_rice_idxが存在しない場合、sh_ts_residual_coding_rice_idxの値は0に等しいと推定される。
[00279]さらに別の例では、変換スキップブロックのライスパラメータの伝送が有効か無効かを示すために、ピクチャパラメータセット範囲拡張シンタックスで1つの制御フラグが伝送される。制御フラグが有効として伝送されると、そのピクチャのライスパラメータを示すために1つのシンタックス要素がさらに伝送される。制御フラグが無効として伝送されると(例えば、「0」に設定される)、変換スキップスライスのライスパラメータを示すために下位レベルでそれ以上のシンタックス要素は伝送されず、デフォルトのライスパラメータ(例えば、1)がすべての変換スキップスライスに使用される。VVCドラフトに基づく対応する復号プロセスの例を以下に示す。ここで、THは、所定の値(例えば、0、1、2)である。VVCドラフトへの変更は、テーブル42に太字および斜体のフォントで示されている。pps_ts_residual_coding_rice_idxはさまざまな方法で符号化できること、および/または最大値を有し得ることは注目に値する。例えば、u(n)、nビットを使用する符号なし整数、またはf(n)、左ビットを最初に(左から右に)書き込まれたnビットを使用する固定パターンビット文字列も、同じシンタックス要素の符号化/復号に使用できる。
[00280]<ピクチャパラメータセット範囲の拡張シンタックス>
[00281]1に等しいpps_ts_residual_coding_rice_flagは、現在のピクチャにpps_ts_residual_coding_rice_indexが存在し得ることを指定し、0に等しいpps_ts_residual_coding_rice_flagは、pps_ts_residual_coding_rice_idxが現在のピクチャに存在しないことを指定する。pps_ts_residual_coding_rice_flagが存在しない場合、pps_ts_residual_coding_rice_flagの値は0に等しいと推定される。
[00282]pps_ts_residual_coding_rice_idxは、residual_ts_coding()シンタックス構造に使用されるライスパラメータを指定する。
[00283]さらに別の例では、シンタックス要素abs_remainderの符号化に可変ライスパラメータのみを使用することが提案される。適用されるライスパラメータの値は、現在のブロックの特定の符号化情報、例えば、ブロックサイズ、量子化パラメータ、ビット深度、変換タイプなどに従って決定され得る。1つの特定の実施形態では、符号化ビット深度および1つのCUに適用される量子化パラメータに基づいてライスパラメータを調整することが提案される。VVCドラフトに基づく対応する復号プロセスを以下に示す。VVCドラフトへの変更はテーブル44に太字および斜体フォントで示され、削除された内容は取り消し線フォントで示される。実際には、同じロジックが異なる方法で実装され得ることは注目に値する。例えば、特定の方程式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
[00284]さらに別の例では、VVCドラフトに基づく対応する復号プロセスが以下のように示され、ここで、THは、所定の閾値(例えば、33または34)である。VVCドラフトへの変更はテーブル45に太字および斜体のフォントで示され、削除された内容は取り消し線のフォントで示されている。実際には、同じロジックが異なる方法で実装され得ることは注目に値する。例えば、特定の方程式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
[00285]さらに別の例では、VVCドラフトに基づく対応する復号プロセスが以下のように示され、THAおよびTHBは所定の閾値(例えば、THA=8、THB=33または34)である。VVCドラフトへの変更はテーブル46に太字および斜体のフォントで示され、削除された内容は取り消し線のフォントで示されている。実際には、同じロジックが異なる方法で実装され得ることは注目に値する。例えば、特定の方程式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
[00286]さらに別の例では、新しいフラグ、例えばextended_precision_processing_flagが1に等しい場合、abs_remainderのシンタックス要素の符号化に可変ライスパラメータのみを使用することが提案される。変動する値は、現在のブロックの特定の符号化情報、例えば、ブロックサイズ、量子化パラメータ、ビット深度、変換タイプなどに従って決定され得る。1つの特定の実施形態では、符号化ビット深度および1つのCUに適用される量子化パラメータに基づいてライスパラメータを調整することが提案される。VVCドラフトに基づく対応する復号プロセスを以下に示す。VVCドラフトへの変更は、テーブル47に太字および斜体のフォントで示されている。実際には、同じロジックが異なる方法で実装され得ることは注目に値する。例えば、特定の方程式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
[00287]さらに別の例では、VVCドラフトに基づく対応する復号プロセスが以下のように示され、ここで、THは、所定の閾値(例えば、18、19)である。VVCドラフトへの変更は、テーブル48に太字および斜体のフォントで示されている。実際には、同じロジックが異なる方法で実装され得ることは注目に値する。例えば、特定の方程式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
[00288]さらに別の例では、VVCドラフトに基づく対応する復号プロセスが以下のように示され、THAおよびTHBは所定の閾値(例えば、THA=8、THB=18または19)である。VVCドラフトへの変更は、テーブル49に太字および斜体のフォントで示されている。実際には、同じロジックが異なる方法で実装され得ることは注目に値する。例えば、特定の方程式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
[00289]図16はビデオ符号化の方法を示す。この方法は、例えばエンコーダに適用することができる。
[00290]ステップ1610で、エンコーダはビデオ入力を受信することができる。例えば、ビデオ入力はライブストリームであり得る。
[00291]ステップ1612で、エンコーダはビデオ入力に基づいて量子化パラメータを取得することができる。量子化パラメータは、例えば、エンコーダ内の量子化ユニットによって計算され得る。
[00292]ステップ1614で、エンコーダは、少なくとも1つの所定の閾値、符号化ビット深度、および量子化パラメータに基づいてライスパラメータを導出することができる。例えば、ライスパラメータは、abs_remainderとdec_abs_levelのシンタックスを伝送するために使用される。
[00293]ステップ1616で、エンコーダは、ライスパラメータに基づいてビデオビットストリームをエントロピー符号化することができる。例えば、ビデオビットストリームは、圧縮されたビデオビットストリームを生成するためにエントロピー符号化されてもよい。
[00294]さらに別の例では、BitDepthが10より大きい場合、abs_remainderのシンタックス要素を符号化する際に、ライスパラメータに固定値(例えば、2、3、4、5、6、7、または8)のみを使用することが提案されている。固定値は、現在のブロックの特定の符号化情報、例えば量子化パラメータに従って、異なる条件では異なり得る。VVCドラフトに基づく対応する復号プロセスは以下のように示される。ここで、THは、所定の閾値(例えば、18、19)である。VVCドラフトへの変更は、テーブル50に太字および斜体のフォントで示されている。実際には、同じロジックが異なる方法で実装され得ることは注目に値する。例えば、特定の方程式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
[00295]さらに別の例では、VVCドラフトに基づく対応する復号プロセスが以下のように示され、THAおよびTHBは所定の閾値(例えば、THA=8、THB=18または19)である。VVCドラフトへの変更は、テーブル51に太字および斜体のフォントで示されている。実際には、同じロジックが異なる方法で実装され得ることは注目に値する。例えば、特定の方程式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
[00296]さらに別の例では、VVCドラフトに基づく対応する復号プロセスが以下のように示され、ここで、THは、所定の閾値(例えば、33または34)である。VVCドラフトへの変更は、テーブル52に太字と斜体のフォントで示されている。実際には、同じロジックが異なる方法で実装され得ることは注目に値する。例えば、特定の方程式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
[00297]さらに別の例では、VVCドラフトに基づく対応する復号プロセスが以下のように示され、THAおよびTHBは所定の閾値(例えば、THA=8、THB=33または34)である。VVCドラフトへの変更は、テーブル53に太字および斜体のフォントで示されている。実際には、同じロジックが異なる方法で実装され得ることは注目に値する。例えば、特定の方程式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
[00298]上記の図では、特定のライスパラメータを計算するために使用される方程式は、提案されたアイデアを説明するための例としてのみ使用されることに言及する価値がある。現代のビデオコーディング技術の当業者にとって、他のマッピング関数(または同等のマッピング方程式)は、提案されたアイデア(すなわち、符号化ビットおよび適用される量子化パラメータに基づいて変換スキップモードのライスパラメータを決定する)に既に適用可能である。一方、現在のVVC設計では、適用される量子化パラメータの値が符号化ブロックグループレベルで変更できることにも言及する必要がある。したがって、提案されたライスパラメータ調整方式は、符号化ブロックグループレベルでの変換スキップモードのライスパラメータの柔軟な適応を提供することができる。
[00299]<正規の残差コーディングおよび変換スキップ残差コーディングのための伝送情報>
[00300]本開示の第28の態様によれば、正規の残差コーディングにおいて、特定のシンタックス要素、例えば変換スキップ残差コーディングのabs_remainder、abs_remainder/dec_abs_levelに使用されるライスパラメータを導出するためのシフトパラメータとオフセットパラメータを符号化するために2値符号語のライスパラメータを伝送することと、現在のブロックの特定の符号化情報、例えばTB/CBおよび/またはスライス/プロファイルに関連付けられた量子化パラメータもしくは符号化ビット深度に従って、ならびに/あるいはTB/CB/スライス/ピクチャ/シーケンスレベルに関連付けられた新しいフラグ、例えば、sps_residual_coding_info_present_in_sh_flagに従って伝送するかどうかを決定することとが提案されている。
[00301]一例では、1つの制御フラグは、変換スキップブロックのライスパラメータの伝送と、変換ブロックのライスパラメータ導出用のシフトパラメータおよび/またはオフセットパラメータの伝送が有効か無効かを示すために、スライスヘッダで伝送される。制御フラグが有効であると伝送されると、1つのシンタックス要素は、各変換スキップスライスに対してさらに伝送されて、そのスライスのライスパラメータを示し、2つのシンタックス要素は、各変換スライスに対してさらに伝送されて、そのスライスのライスパラメータを導出するためのシフトパラメータおよび/またはオフセットパラメータを示す。制御フラグが無効として伝送されると(例えば、「0」に設定される)、変換スキップスライスのライスパラメータを示すために下位レベルでそれ以上のシンタックス要素は伝送されず、デフォルトのライスパラメータ(例えば、1)がすべての変換スキップスライスに使用され、変換スライスのライスパラメータ導出のためのシフトパラメータおよびオフセットパラメータを示すために、下位レベルでそれ以上のシンタックス要素は信号送信されず、デフォルトのシフトパラメータおよび/またはオフセットパラメータ(例えば、0)がすべての変換スライスに使用される。VVCドラフトに基づく対応する復号プロセスの例を以下に示す。ここで、THは、所定の値(例えば、0、1、2)である。VVCドラフトへの変更は、テーブル54に太字および斜体のフォントで示されている。sh_residual_coding_rice_shift、sh_residual_coding_rice_offset、およびsh_ts_residual_coding_rice_indexは、異なる方法で符号化することができ、および/または最大値を有することができることは注目に値する。例えば、u(n)、nビットを使用する符号なし整数、またはf(n)、左ビットを最初に(左から右に)書き込まれたnビットを使用する固定パターンビット文字列も使用でき、同じシンタックス要素を符号化/復号する。
[00302]図17は、ビデオ復号の方法を示す。この方法は、例えばエンコーダに適用することができる。
[00303]ステップ1710で、エンコーダはビデオ入力を受信することができる。
[00304]ステップ1712で、エンコーダは、シンタックス要素を符号化するための2値符号語のライスパラメータを伝送することができる。符号化シンタックス要素には、変換スキップ残差コーディングのabs_remainderが含まれ得る。
[00305]ステップ1714で、エンコーダは、ライスパラメータおよびビデオ入力に基づいてビデオビットストリームをエントロピー符号化することができる。
[00306]<スライスヘッダのシンタックス>
[00307]1に等しいsh_residual_coding_rice_flagは、sh_residual_coding_rice_shift、sh_residual_coding_rice_offset、sh_residual_coding_rice_indexが現在のスライスに存在し得ることを指定し、0に等しいsh_residual_coding_rice_flagは、sh_residual_coding_rice_shift、sh_residual_coding_rice_offset、sh_residual_coding_rice_indexが現在のスライスに存在しないことを指定する。
[00308]sh_residual_coding_rice_shiftは、abs_remainder[ ]およびdec_abs_level[ ]のライスパラメータ導出プロセスに使用されるシフトパラメータを指定する。sh_residual_coding_rice_shiftが存在しない場合、sh_residual_coding_rice_shiftの値は0に等しいと推定される。
[00309]sh_residual_coding_rice_offsetは、abs_remainder[ ]およびdec_abs_level[ ]のライスパラメータ導出プロセスに使用されるオフセットパラメータを指定する。sh_residual_coding_rice_offsetが存在しない場合、sh_residual_coding_rice_offsetの値は0に等しいと推定される。
[00310]sh_ts_residual_coding_rice_indexは、residual_ts_coding()シンタックス構造に使用されるライスパラメータを指定する。sh_ts_residual_coding_rice_indexが存在しない場合、sh_ts_residual_coding_rice_indexの値は0に等しいと推定される。
[00311]別の例では、1つの制御フラグがシーケンスパラメータセット(またはシーケンスパラメータセット範囲の拡張シンタックス)で伝送され、変換スキップブロックのライスパラメータの伝送と、変換ブロック内のライスパラメータの導出のためのシフトパラメータおよび/またはオフセットパラメータの伝送が有効か無効かを示す。制御フラグが有効であると伝送されると、1つのシンタックス要素は、各変換スキップスライスに対してさらに伝送されて、そのスライスのライスパラメータを示し、2つのシンタックス要素は、各変換スライスに対してさらに伝送されて、そのスライスのライスパラメータを導出するためのシフトパラメータおよび/またはオフセットパラメータを示す。制御フラグが無効として伝送されると(例えば、「0」に設定される)、変換スキップスライスのライスパラメータを示すために下位レベルでそれ以上のシンタックス要素は伝送されず、デフォルトのライスパラメータ(例えば、1)がすべての変換スキップスライスに使用され、変換スライスのライスパラメータ導出のためのシフトパラメータおよび/またはオフセットパラメータを示すために下位レベルでそれ以上のシンタックス要素は信号送信されず、デフォルトのシフトパラメータおよび/またはオフセットパラメータ(例えば、0)がすべての変換スライスに使用される。VVCドラフトに基づく対応する復号プロセスの例を以下に示す。ここで、THは、所定の値(例えば、0、1、2)である。VVCドラフトへの変更は、テーブル57に太字および斜体のフォントで示されている。sh_residual_coding_rice_shift、sh_residual_coding_rice_offset、およびsh_ts_residual_coding_rice_idxは、異なる方法で符号化することができ、および/または最大値を有することができることは注目に値する。例えば、u(n)、nビットを使用する符号なし整数、またはf(n)、左ビットを最初に(左から右に)書き込まれたnビットを使用する固定パターンビット文字列も、同じシンタックス要素の符号化/復号に使用できる。
[00312]<シーケンスパラメータセットRBSPシンタックス>
[00313]1に等しいsps_residual_coding_info_present_in_sh_flagは、SPSを参照するSHシンタックス構造内にsh_residual_coding_rice_shift、sh_residual_coding_rice_offset、sh_ts_residual_coding_rice_idxが存在し得ることを指定し、0に等しいsps_residual_coding_info_present_in_sh_flagは、SPSを参照するSHシンタックス構造内にsh_residual_coding_rice_shift、sh_residual_coding_rice_offset、sh_ts_residual_coding_rice_idxが存在しないことを指定する。sps_residual_coding_info_present_in_sh_flagが存在しない場合、sps_residual_coding_info_present_in_sh_flagの値は0に等しいと推定される。
[00314]<スライスヘッダのシンタックス>
[00315]sh_residual_coding_rice_shiftは、abs_readinder[ ]およびdec_abs_level[ ]のライスパラメータ導出プロセスに使用されるシフトパラメータを指定する。sh_residual_coding_rice_shiftが存在しない場合、sh_residual_coding_rice_shiftの値は0に等しいと推定される。
[00316]sh_residual_coding_rice_offsetは、abs_remainder[ ]およびdec_abs_level[ ]のライスパラメータ導出プロセスに使用されるオフセットパラメータを指定する。sh_residual_coding_rice_offsetが存在しない場合、sh_residual_coding_rice_offsetの値は0に等しいと推定される。
[00317]sh_ts_residual_coding_rice_idxは、residual_ts_coding()シンタックス構造に使用されるライスパラメータを指定する。sh_ts_residual_coding_rice_indexが存在しない場合、sh_ts_residual_coding_rice_indexの値は0に等しいと推定される。
[00318]さらに別の例では、1つのシンタックス要素は、各変換スキップスライスに対して伝送されて、そのスライスのライスパラメータを示し、2つのシンタックス要素は、各変換スライスに対して伝送されて、そのスライスのライスパラメータを導出するためのシフトパラメータおよび/またはオフセットパラメータを示す。VVCドラフトに基づく対応する復号プロセスの例を以下に示す。VVCドラフトへの変更は、テーブル61に太字と斜体のフォントで示されている。sh_residual_coding_rice_shift、sh_residual_coding_rice_offset、およびsh_ts_residual_coding_rice_idxは、異なる方法で符号化することができ、ならびに/または最大値を有することができることは注目に値する。例えば、u(n)、nビットを使用する符号なし整数、またはf(n)、左ビットを最初に(左から右に)書き込まれたnビットを使用する固定パターンビット文字列も、同じシンタックス要素の符号化/復号に使用できる。
[00319]<スライスヘッダのシンタックス>
[00320]sh_ts_residual_coding_rice_idxは、residual_ts_coding()シンタックス構造に使用されるライスパラメータを指定する。sh_ts_residual_coding_rice_idxが存在しない場合、sh_ts_residual_coding_rice_idxの値は0に等しいと推定される。
[00321]sh_residual_coding_rice_offsetは、abs_remainder[ ]およびdec_abs_level[ ]のライスパラメータ導出プロセスに使用されるオフセットパラメータを指定する。sh_residual_coding_rice_offsetが存在しない場合、sh_residual_coding_rice_offsetの値は0に等しいと推定される。
[00322]sh_ts_residual_coding_rice_idxは、residual_ts_coding()シンタックス構造に使用されるライスパラメータを指定する。sh_ts_residual_coding_rice_indexが存在しない場合、sh_ts_residual_coding_rice_indexの値は0に等しいと推定される。
[00323]さらに別の例では、1つの制御フラグは、ピクチャパラメータセット範囲の拡張シンタックスで伝送され、変換スキップブロックのライスパラメータの伝送と、変換ブロック内のライスパラメータの導出のためのシフトパラメータおよび/またはオフセットパラメータの伝送が有効であるか無効であるかを示す。制御フラグが有効であると伝送されると、1つのシンタックス要素は、そのピクチャの変換スキップ残差コーディングのためのライスパラメータを示すためにさらに伝送され、2つのシンタックス要素はさらに、そのピクチャのライスパラメータを導出するためのシフトパラメータおよび/またはオフセットパラメータを示すために正規の残差コーディングのために伝送される。制御フラグが無効として伝送されると(例えば、「0」に設定される)、変換スキップ残差コーディングのライスパラメータを示すために下位レベルでそれ以上のシンタックス要素は伝送されず、デフォルトのライスパラメータ(例えば、1)がすべての変換スキップ残差コーディングに使用され、正規の残差コーディングのライスパラメータを導出するためのシフトパラメータおよび/またはオフセットパラメータを示すために、下位レベルでそれ以上のシンタックス要素が伝送されることはなく、デフォルトのシフトパラメータおよび/またはオフセットパラメータ(例えば0)がすべての正規の残差コーディングに使用される。VVCドラフトに基づく対応する復号プロセスの例を以下に示す。ここで、THは、所定の値(例えば、0、1、2)である。VVCドラフトへの変更は、テーブル64に太字および斜体のフォントで示されている。pps_residual_coding_rice_shift、pps_residual_coding_rice_offset、およびpps_ts_residual_coding_rice_idxは、異なる方法で符号化することができ、および/または最大値を有することができることは注目に値する。例えば、u(n)、nビットを使用する符号なし整数、またはf(n)、nビットを使用し、左ビットから順に(左から右に)書き込まれた固定パターンのビット文字列は、同じシンタックス要素を符号化/復号するために使用することもできる。
[00324]<ピクチャパラメータセット範囲の拡張シンタックス>
[00325]1に等しいpps_residual_coding_info_flagは、pps_residual_coding_rice_shift、pps_residual_coding_rice_offset、pps_ts_residual_coding_rice_indexが現在のピクチャに存在し得ることを指定し、0に等しいpps_residual_coding_info_flagは、pps_residual_coding_rice_shift、pps_residual_coding_rice_offset、およびpps_ts_residual_coding_rice_idxが現在のピクチャに存在しないことを指定する。pps_residual_coding_info_flagが存在しない場合、pps_residual_coding_info_flagの値は0に等しいと推定される。
[00326]pps_residual_coding_rice_shiftは、abs_remainder[ ]およびdec_abs_level[ ]のライスパラメータ導出プロセスに使用されるシフトパラメータを指定する。pps_residual_coding_rice_shiftが存在しない場合、pps_residual_coding_rice_shiftの値は0に等しいと推定される。
[00327]pps_residual_coding_rice_offsetは、abs_remainder[ ]およびdec_abs_level[ ]のライスパラメータ導出プロセスに使用されるオフセットパラメータを指定する。pps_residual_coding_rice_offsetが存在しない場合、pps_residual_coding_rice_offsetの値は0に等しいと推定される。
[00328]pps_ts_residual_coding_rice_idxは、residual_ts_coding()シンタックス構造に使用されるライスパラメータを指定する。pps_ts_residual_coding_rice_indexが存在しない場合、pps_ts_residual_coding_rice_indexの値は0に等しいと推定される。
[00329]本開示の第29の態様によれば、正規の残差コーディングにおいて、特定のシンタックス要素、例えば変換スキップ残差コーディングのabs_remainder、abs_remainder/dec_abs_levelに使用されるライスパラメータを導出するためのシフトパラメータとオフセットパラメータを符号化するために異なるライスパラメータを使用することと、現在のブロックの特定の符号化情報、例えばTB/CBおよび/またはスライス/プロファイルに関連付けられた量子化パラメータもしくは符号化ビット深度に従って、ならびに/あるいはTB/CB/スライス/ピクチャ/シーケンスレベルに関連付けられた新しいフラグ、例えば、sps_residual_coding_infoj>resent_in_sh_flagに従ってどれを使用するかを決定することとが提案されている。
[00330]一例では、1つの制御フラグはスライスヘッダで伝送され、変換スキップブロックのライスパラメータの導出プロセスと、変換ブロックのライスパラメータのシフトパラメータおよび/またはオフセットパラメータの導出プロセスが有効か無効かを示す。制御フラグが有効として伝送されると、ライスパラメータは、現在のブロックの特定の符号化情報、例えば、量子化パラメータおよびビット深度に従って、異なる条件で異なる可能性がある。そして、正規の残差コーディングにおけるライスパラメータ導出のためのシフトパラメータおよび/またはオフセットパラメータは、現在のブロックの特定の符号化情報、例えば、量子化パラメータおよびビット深度に従って、異なる条件で異なり得る。制御フラグが無効として伝送されると(例えば、「0」に設定される)、デフォルトのライスパラメータ(例えば、1)がすべての変換スキップスライスに使用され、デフォルトのシフトパラメータおよび/またはオフセットパラメータ(例えば、0)がすべての変換スライスに使用される。VVCドラフトに基づく対応する復号プロセスの例を以下に示す。ここで、THAおよびTHBは、所定の閾値(例えば、THA=8、THB=18または19)である。VVCドラフトへの変更は、テーブル67に太字と斜体のフォントで示されている。実際には、同じロジックが異なる方法で実装され得ることは注目に値する。例えば、特定の方程式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
[00331]<スライスヘッダシンタックス>
[00332]1に等しいsh_residual_coding_rice_flagは、ビット深度に依存するライスパラメータ導出プロセスが現在のスライスにおいて使用されることを指定し、0に等しいsh_residual_coding_rice_flagは、ビット深度に依存するライスパラメータ導出プロセスが現在のスライスにおいて使用されないことを指定する。
[00333]さらに別の例では、VVCドラフトに基づく対応する復号プロセスが以下のように示される。ここで、THは、所定の閾値(例えば、18、19)である。VVCドラフトへの変更は、テーブル70に太字および斜体のフォントで示されている。実際には、同じロジックが異なる方法で実装され得ることは注目に値する。例えば、特定の方程式またはルックアップテーブルを使用して、同じライスパラメータを導出することもできる。
[00334]本開示の別の態様によれば、これらの上記のコーディングツールの値が、一般的な制約情報における他のものと同じ一般的な制約制御を提供するフラグを立てるという制約を追加することが提案される。
[00335]例えば、1に等しいsps_ts_residual_coding_rice_present_in_sh_flagは、SPSを参照するSHシンタックス構造内にsh_ts_residual_coding_rice_idxが存在し得ることを指定する。0に等しいsps_ts_residual_coding_rice_present_in_sh_flagは、SPSを参照するSHシンタックス構造内にsh_ts_residual_coding_rice_idxが存在しないことを指定する。この開示によれば、他のフラグと同じ一般的な制約制御を提供するために、一般的な制約情報シンタックスにシンタックス要素gci_no_ts_residual_coding_rice_constraint_flagを追加することが提案されている。VVCドラフトの復号プロセスの例を以下に示す。VVCドラフトへの変更が強調表示される。追加された部分は斜体で強調表示される。
[00336]図19は、本開示の一例によるビデオコーディングのための方法を示す。この方法は、例えば、デコーダに適用することができる。ステップ1902において、デコーダは、シーケンスパラメータセット(SPS)を参照するSHシンタックス構造内にインデックスsh_ts_residual_coding_rice_idxが存在するかどうかを示すSPS残差符号化フラグを受信することができる。
[00337]ステップ1904において、SPS残差符号化フラグの値が1に等しいとの決定に応答して、デコーダは、SPSを参照するスライスヘッド(SH)シンタックス構造内にsh_ts_residual_coding_rice_idxが存在すると決定することができる。
[00338]ステップ1906において、残差符号化フラグの値が0に等しいとの決定に応答して、デコーダは、SPSを参照するSHシンタックス構造内にsh_ts_residual_coding_rice_idxが存在しないと決定することができる。
[00339]別の例では、pps_ts_residual_coding_rice_flagが1に等しい場合は、pps_ts_residual_coding_rice_indexが現在のピクチャに存在し得ることを指定し、pps_ts_residual_coding_rice_flagが0に等しい場合は、pps_ts_residual_coding_rice_idxが現在のピクチャに存在しないことを指定する。この開示によれば、他のフラグと同じ一般的な制約制御を提供するために、一般的な制約情報シンタックスにシンタックス要素gci_no_ts_residual_coding_rice_constraint_flagを追加することが提案されている。VVCドラフトの復号プロセスの例を以下に示す。VVCドラフトへの変更が強調表示される。追加された部分は斜体で強調表示される。
[00340]さらに別の例では、1に等しいsps_rice_adaptation_enabled_flagは、abs_remaining[ ]およびdec_abs_levelの2値化のためのライスパラメータが式によって導出され得ることを示す。
[00341]式には、RiceParam=RiceParam+shiftValおよびshiftVal=(localSumAbs<Tx[0])?Rx[0]:((localSumAbs<Tx[1])?Rx[1]:((localSumAbs<Tx[2])?Rx[2]:((localSumAbs<Tx[3])?Rx[3]:Rx[4])))が含まれ得、リストTx[ ]およびRx[ ]は次のように指定される:Tx[ ]={32,128,512,2048}>>(1523)Rx[ ]={0、2、4、6、8}
[00342]図20は、本開示の一例によるビデオコーディングのための方法を示す。この方法は、例えば、デコーダに適用することができる。ステップ2002において、デコーダは、シンタックスabs_remainingおよびdec_abs_levelの2値化のための代替ライスパラメータ導出が使用されるかどうかを示すシーケンスパラメータセット(SPS)適応可能フラグを受信することができる。
[00343]ステップ2004において、SPS適応可能フラグの値が1に等しいとの決定に応答して、デコーダは、シンタックスの2値化のための代替ライスパラメータ導出が使用されると決定することができる。
[00344]ステップ2006において、SPS適応可能フラグの値が0に等しいとの決定に応答して、デコーダは、シンタックスの2値化のための代替ライスパラメータ導出が使用されないと決定することができる。
[00345]本開示によれば、他のフラグと同じ一般的な制約制御を提供するために、一般的な制約情報シンタックスにシンタックス要素gci_no_rice_adaptation_constraint_flagを追加することが提案される。VVCドラフトの復号プロセスの例を以下に示す。VVCドラフトへの変更が強調表示される。追加された部分は斜体で強調表示される。
[00346]図21は、本開示の一例によるビデオコーディングのための方法を示す。この方法は、例えば、デコーダに適用することができる。ステップ2102において、デコーダは、他のフラグに対する一般的な制約制御を提供するために残差符号化ライス制約フラグを受信することができる。
[00347]ステップ2104において、残差符号化ライス制約フラグの値が1に等しいとの決定に応答して、デコーダは、他のフラグの値が0に等しいと決定することができる。
[00348]提案されたライスパラメータ適応方式は変換スキップ残差コーディング(TSRC)にのみ使用されるため、提案された方法は、TSRCが有効化されている場合にのみ有効となり得る。同様に、本開示の1つまたは複数の実施形態では、変換スキップモードが一般的な制約情報レベルから無効になっている場合、例えば、gci_no_transform_skip_constraint_flagの値が1に設定されている場合に、gci_no_rice_adaptation_constraint_flagの値が1であることを要求する1つのbtiストリーム制約を追加することが提案されている。
[00349]上記の方法は、1つまたは複数の回路を含む装置を使用して実装することができ、これには、特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)、デジタル信号処理デバイス(DSPD)、プログラマブルロジックデバイス(PLD)、フィールドプログラマブルゲート配列(FPGA)、コントローラ、マイクロコントローラ、マイクロプロセッサ、またはその他の電子構成要素が含まれる。この装置は、上述の方法を実行するために、他のハードウェアまたはソフトウェア構成要素と組み合わせて回路を使用することができる。上記で開示された各モジュール、サブモジュール、ユニット、またはサブユニットは、1つまたは複数の回路を使用して少なくとも部分的に実装され得る。
[00350]本開示の他の例は、本明細書に開示される本開示の明細書および実施を考慮することにより、当業者には明らかとなるであろう。本出願は、その一般原理に従い、当技術分野で既知または慣例の範囲内にある本開示からのそのような逸脱を含む、本開示のあらゆる変形、使用、または適応を網羅することを意図している。明細書および実施例は、例示としてのみ考慮されることを意図している。
本開示は、上で説明し、添付の図面に示した正確な例に限定されず、本開示の範囲から逸脱することなくさまざまな修正および変更を行うことができることが理解されるであろう。
[00351]図18は、ユーザインターフェース1860と結合されたコンピューティング環境1810を示す。コンピューティング環境1810は、データ処理サーバーの一部とすることができる。コンピューティング環境1810は、プロセッサ1820、メモリ1840、およびI/Oインターフェース1850を含む。
[00352]プロセッサ1820は、通常、表示、データ取得、データ通信、および画像処理に関連する操作など、コンピューティング環境1810の全体的な操作を制御する。プロセッサ1820は、上述の方法におけるステップのすべてまたは一部を実行するための命令を実行する1つまたは複数のプロセッサを含み得る。さらに、プロセッサ1820は、プロセッサ1820と他の構成要素との間の対話を容易にする1つまたは複数のモジュールを含み得る。プロセッサは、中央処理装置(CPU)、マイクロプロセッサ、シングルチップマシン、GPUなどであってもよい。
[00353]メモリ1840は、コンピューティング環境1810の操作をサポートするために、さまざまなタイプのデータを記憶するように構成されている。メモリ1840は、所定のソフトウェア1842を含み得る。そのようなデータの例には、コンピューティング環境1810上で操作する任意のアプリケーションまたは方法のための命令、ビデオデータセット、画像データなどが含まれる。メモリ1840は、スタティックランダムアクセスメモリ(SRAM)、電気的に消去可能プログラマブル読み取り専用メモリ(EEPROM)、消去可能プログラマブル読み取り専用メモリ(EPROM)、プログラマブル読み取り専用メモリ(PROM)、読み取り専用メモリ(ROM)、磁気メモリ、フラッシュメモリ、磁気ディスクまたは光ディスクなどの任意のタイプの揮発性もしくは不揮発性メモリデバイス、またはそれらの組み合わせを使用することによって実装され得る。
[00354]I/Oインターフェース1850は、プロセッサ1820と、キーボード、クリックホイール、ボタンなどの周辺インターフェースモジュールとの間のインターフェースを提供する。ボタンには、ホームボタン、スキャン開始ボタン、スキャン停止ボタンが含まれるが、これらに限定されない。I/Oインターフェース1850は、エンコーダおよびデコーダと結合することができる。
[00355]いくつかの実施形態では、上記の方法を実行するための、コンピューティング環境1810内のプロセッサ1820によって実行可能な、メモリ1840に含まれるような複数のプログラムを含む非一時的なコンピュータ可読記憶媒体も提供される。例えば、非一時的なコンピュータ可読記憶媒体は、ROM、RAM、CD-ROM、磁気テープ、フロッピーディスク、光データ記憶デバイスなどであってもよい。
[00356]非一時的なコンピュータ可読記憶媒体は、1つまたは複数のプロセッサを有するコンピューティングデバイスによって実行される複数のプログラムを記憶しており、複数のプログラムは、1つまたは複数のプロセッサによって実行されると、コンピューティングデバイスに、上述の動き予測方法を実行させる。
[00357]いくつかの実施形態では、コンピューティング環境1810は、上記の方法を実行するため1つまたは複数の特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)、デジタル信号処理デバイス(DSPD)、プログラマブルロジックデバイス(PLD)、フィールドプログラマブルゲート配列(FPGA)、グラフィック処理ユニット(GPU)、コントローラ、マイクロコントローラ、マイクロプロセッサ、またはその他の電子構成要素を用いて実装され得る。
[00358]本開示の説明は、例示を目的として提示されたものであり、網羅的であること、または本開示に限定されることを意図したものではない。前述の説明および関連する図面に提示された教示の恩恵を受ける当業者には、多くの修正、変形、および代替の実装が明らかとなるであろう。
[00359]実施例は、本開示の原理を説明し、他の当業者がさまざまな実装に関して本開示を理解できるようにするため、基礎となる原理とさまざまな実装を、企図される特定の用途に適したようにさまざまな変更を加えて最大限に利用するために選択され、説明されたものである。したがって、本開示の範囲は、開示された実装の特定の例に限定されるものではなく、修正および他の実装も本開示の範囲内に含まれることが意図されることが理解されるべきである。