(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-24
(45)【発行日】2024-06-03
(54)【発明の名称】異なるパーティション構造をもつパレット・モード
(51)【国際特許分類】
H04N 19/593 20140101AFI20240527BHJP
H04N 19/186 20140101ALI20240527BHJP
H04N 19/11 20140101ALI20240527BHJP
H04N 19/119 20140101ALI20240527BHJP
H04N 19/157 20140101ALI20240527BHJP
H04N 19/176 20140101ALI20240527BHJP
【FI】
H04N19/593
H04N19/186
H04N19/11
H04N19/119
H04N19/157
H04N19/176
(21)【出願番号】P 2022509098
(86)(22)【出願日】2020-08-15
(86)【国際出願番号】 US2020046574
(87)【国際公開番号】W WO2021030786
(87)【国際公開日】2021-02-18
【審査請求日】2022-03-03
(31)【優先権主張番号】PCT/CN2019/100850
(32)【優先日】2019-08-15
(33)【優先権主張国・地域又は機関】CN
(31)【優先権主張番号】PCT/CN2019/113931
(32)【優先日】2019-10-29
(33)【優先権主張国・地域又は機関】CN
【前置審査】
(73)【特許権者】
【識別番号】520477474
【氏名又は名称】バイトダンス インコーポレイテッド
【氏名又は名称原語表記】BYTEDANCE INC.
【住所又は居所原語表記】12655 West Jefferson Boulevard, Sixth Floor, Suite No. 137 Los Angeles, California 90066 United States of America
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ズゥー,ウェイジア
(72)【発明者】
【氏名】シュイ,ジィジォン
(72)【発明者】
【氏名】ザン,リー
(72)【発明者】
【氏名】チュアン,シャオ チアン
【審査官】久保 光宏
(56)【参考文献】
【文献】Jizheng Xu, et al.,"Overview of the Emerging HEVC Screen Content Coding Extension",IEEE Transactions on Circuits and Systems for Video Technology,IEEE,2015年09月14日,Vol.26, No.1,Pages 50-62,ISSN: 1051-8215, <DOI: 10.1109/TCSVT.2015.2478706>.
【文献】Yu-Chen Sun, et al.,"Analysis of Palette Mode on Versatile Video Coding",Proceedings of 2019 IEEE Conference on Multimedia Information Processing and Retrieval (MIPR),IEEE,2019年03月30日,Pages 455-458,ISBN: 978-1-7281-1198-8, <DOI: 10.1109/MIPR.2019.00091>.
(58)【調査した分野】(Int.Cl.,DB名)
H04N19/00-19/98
CSDB(日本国特許庁)
学術文献等データベース(日本国特許庁)
IEEEXplore(IEEE)
(57)【特許請求の範囲】
【請求項1】
ビデオ・データを処理する方法であって:
ビデオの現在のルーマ・ブロックと、該ビデオのビットストリームとの間の変換のために、ある予測モードが現在のルーマ・ブロックのために適用されることを決定する段階であって、前記予測モードでは、再構成されたサンプル
はパレット予測子
、エスケープされたサンプルのうちの少なくとも1つ
によって表現される、段階と;
現在のルーマ・ブロックについて、パレット予測テーブルから導出される一つまたは複数のパレット予測子を含む現在のパレットを構築する段階と;
前記現在のパレットに基づいて前記変換を実行する段階と;
現在のルーマ・ブロックにローカル・デュアル・ツリーコーディングが適用されるという決定をする段階と;
前記決定に基づいて、前記パレット予測テーブルを修正する段階であって、該修正はリセット・プロセスを含む、段階とを含む、
方法。
【請求項2】
前記ローカル・デュアル・ツリーコーディングは、クロマ親ブロックのサイズに基づいて、対応するルーマ親ブロックのパーティション分割を有効にし、前記クロマ親ブロックのパーティション分割を無効にするものであり、
前記ルーマ親ブロックは、再帰的パーティション動作を含むルーマ・パーティション方式に基づいてルーマコーディングツリー・ブロックから生成され、前記クロマ親ブロックは、前記ルーマ・パーティション方式と同じ再帰的パーティション動作を有するクロマ・パーティション方式に基づいてクロマコーディングツリー・ブロックから生成される、
請求項1に記載の方法。
【請求項3】
前記リセット・プロセスが、前記パレット予測テーブルの項目を固定値にリセットすることを含む、請求項1または2に記載の方法。
【請求項4】
前記エスケープされたサンプルは、クリップ関数と、前記エスケープされたサンプルの量子化された値とに基づいて再構成される、請求項1ないし3のうちいずれか一項に記載の方法。
【請求項5】
再構成されたエスケープ・サンプルが、Clip3(0,(1<<BitDepth)-1,tmpVal)に基づいて決定され、
tmpValは、m<<((qP/6)+32)>>6に基づいて決定され、
qPは量子化パラメータを指定し、
mは前記エスケープされたサンプルの前記量子化された値に基づいて決定される、
請求項4に記載の方法。
【請求項6】
前記qPは、Max(QpPrimeTsMin,Qp'Y)に基づいて決定され、
QpPrimeTsMinは、変換スキップ・モードのための最小の許容される量子化パラメータを表し、
Qp'Yは、ルーマ量子化パラメータを表す、
請求項5に記載の方法。
【請求項7】
QpPrimeTsMinは6*n+4として定義され、ここで、nは前記ビットストリームに含まれる第2の構文要素の値である、請求項6に記載の方法。
【請求項8】
前記第2の構文要素は前記ビットストリームのシーケンス・レベルで含まれる、請求項7に記載の方法。
【請求項9】
前記変換は、現在のルーマ・ブロックを前記ビットストリームにエンコードすることを含む、請求項1ないし8のうちいずれか一項に記載の方法。
【請求項10】
前記変換は、現在のルーマ・ブロックを前記ビットストリームからデコードすることを含む、請求項1ないし8のうちいずれか一項に記載の方法。
【請求項11】
プロセッサおよび命令を有する非一時的なメモリを有する、ビデオ・データを処理する装置であって、前記命令は、前記プロセッサによって実行されると、前記プロセッサに:
ビデオの現在のルーマ・ブロックと、該ビデオのビットストリームとの間の変換のために、ある予測モードが現在のルーマ・ブロックのために適用されることを決定する段階であって、前記予測モードでは、再構成されたサンプル
はパレット予測子、また
はエスケープされたサンプルのうちの少なくとも1つ
によって表現される、段階と;
現在のルーマ・ブロックについて、パレット予測テーブルから導出される一つまたは複数のパレット予測子を含む現在のパレットを構築する段階と;
前記現在のパレットに基づいて前記変換を実行する段階と;
現在のルーマ・ブロックにローカル・デュアル・ツリーコーディングが適用されるという決定をする段階と;
前記決定に基づいて、前記パレット予測テーブルを修正する段階であって、該修正はリセット・プロセスを含む、段階とを実行させるものである、
装置。
【請求項12】
命令を記憶している非一時的なコンピュータ読み取り可能な記憶媒体であって、前記命令は、プロセッサに:
ビデオの現在のルーマ・ブロックと、該ビデオのビットストリームとの間の変換のために、ある予測モードが現在のルーマ・ブロックのために適用されることを決定する段階であって、前記予測モードでは、再構成されたサンプル
はパレット予測子、また
はエスケープされたサンプルのうちの少なくとも1つ
によって表現される、段階と;
現在のルーマ・ブロックについて、パレット予測テーブルから導出される一つまたは複数のパレット予測子を含む現在のパレットを構築する段階と;
前記現在のパレットに基づいて前記変換を実行する段階と;
現在のルーマ・ブロックにローカル・デュアル・ツリーコーディングが適用されるという決定をする段階と;
前記決定に基づいて、前記パレット予測テーブルを修正する段階であって、該修正はリセット・プロセスを含む、段階とを実行させるものである、
記憶媒体。
【請求項13】
ビデオのビットストリームを記憶する方法であって、前記方法は:
ビデオの現在のルーマ・ブロックについて、ある予測モードが現在のルーマ・ブロックに適用されることを決定する段階であって、前記予測モードでは、再構成されたサンプル
はパレット予測子、また
はエスケープされたサンプルのうちの少なくとも1つ
によって表現される、段階と;
現在のルーマ・ブロックについて、パレット予測テーブルから導出される一つまたは複数のパレット予測子を含む現在のパレットを構築する段階と;
前記現在のパレットに基づいて前記ビットストリームを生成する段階と;
生成された前記ビットストリームを非一時的なコンピュータ読み取り可能な記録媒体に記憶する段階と;
現在のルーマ・ブロックにローカル・デュアル・ツリーコーディングが適用されるという決定をする段階と;
前記決定に基づいて、前記パレット予測テーブルを修正する段階であって、該修正はリセット・プロセスを含む、段階とを含む、
方法。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願への相互参照
この出願は、2020年8月15日に出願された国際特許出願第PCT/US2020/046574号に基づく。同出願は、2019年8月15日に出願された国際特許出願第PCT/CN2019/100850号および2019年10月29日に出願された同PCT/CN2019/113931の優先権および利益を適時に主張してなされる。前述したすべての特許出願は、ここに参照によりその全体において組み込まれる。
【0002】
技術分野
本稿は、ビデオおよび画像の符号化・復号技術に関する。
【背景技術】
【0003】
デジタル・ビデオは、インターネットおよび他のデジタル通信ネットワークにおける最大の帯域幅使用を占める。ビデオを受信および表示できる接続されたユーザー装置の数が増加するにつれて、デジタル・ビデオの利用のための帯域幅需要は増加し続けることが予想される。
【発明の概要】
【課題を解決するための手段】
【0004】
開示される技法は、異なるパーティション構造をもつパレット・モードを使用するために、ビデオまたは画像のデコーダまたはエンコーダの実施形態によって使用されうる。
【0005】
ある例示的側面では、ビデオ処理の方法が開示される。本方法は、現在のビデオ・ブロックを含む一つまたは複数のビデオ領域を含むビデオと、該ビデオのビットストリーム表現との間の変換のために、現在のビデオ・ブロックのために使用されるパレット・モード符号化ツールにおいて使用されるパレットの予測のためのパレット予測テーブルを維持し、前記変換にローカル・デュアル・ツリー符号化が適用されることを決定し、前記決定に基づいて、前記パレット予測テーブルを修正し、前記修正の後の前記パレット予測テーブルに基づいて、前記変換を実行することを含み、前記パレット・モード符号化ツールは、代表的な色値のパレットを使用して現在のビデオ・ブロックを表現し、前記ローカル・デュアル・ツリー符号化は、ブロック・サイズに基づいて、対応するルーマ・ブロックとは独立してクロマ・ブロックのパーティション分割を可能にする。
【0006】
別の例示的側面では、ビデオ処理の方法が開示される。本方法は、現在のビデオ・ブロックを含む一つまたは複数のビデオ領域を含むビデオと、該ビデオのビットストリーム表現との間の変換を実行することを含み、前記ビットストリーム表現は、パレット・モード符号化とローカル・デュアル・ツリー符号化の同時使用が現在のビデオ・ブロックについて無効にされるというフォーマット規則に適合し、前記パレット・モード符号化ツールは、代表的な色値のパレットを使用して現在のビデオ・ブロックを表現し、前記ローカル・デュアル・ツリー符号化は、ブロック・サイズに基づいて、対応するルーマ・ブロックとは独立してクロマ・ブロックのパーティション分割を可能にする。
【0007】
さらに別の例示的側面では、ビデオ処理の方法が開示される。本方法は、現在のビデオ・ブロックを含む一つまたは複数のビデオ領域を含むビデオと、該ビデオのビットストリーム表現との間の変換を実行することを含み、前記ビデオ・ブロックは、前記ビットストリーム表現において、前記ビデオ・ブロックが代表的な色値のパレットを使用して表現されるパレット符号化モードを使って符号化され、前記パレットを予測するパレット予測テーブルが、ある条件に基づいて前記変換のために選択的に使用される。
【0008】
さらに別の例示的側面では、上述の方法は、プロセッサを備えるビデオ・エンコーダ装置によって実装されてもよい。
【0009】
さらに別の例示的側面では、上述の方法は、プロセッサを備えるビデオ・デコーダ装置によって実装されてもよい。
【0010】
さらに別の例示的側面では、これらの方法は、プロセッサ実行可能命令の形で具現され、コンピュータ読み取り可能なプログラム媒体に記憶されてもよい。
【0011】
これらおよび他の側面は、本稿においてさらに説明される。
【図面の簡単な説明】
【0012】
【
図1】パレット・モードで符号化されるブロックの例を示す図である。
【0013】
【
図2】パレット項目を信号伝達するためのパレット予測子の使用例を示す。
【0014】
【0015】
【
図4】パレット・インデックスの例示的な符号化を示す。
【0016】
【
図5】AおよびBは、最小クロマ・イントラ予測単位(SCIPU)の例を示す。
【0017】
【
図6】ビデオ処理におけるループ内フィルタリングの一例のブロック図を示す。
【0018】
【
図7】ローカル・デュアル・ツリーの場合における反復されるパレット項目の例を示す。
【0019】
【
図8】コンテキスト導出のプロセスにおける左および上のブロックの例を示す。
【0020】
【
図9】本稿に記載される技法を実装するために使用されるハードウェア・プラットフォームの例のブロック図である。
【0021】
【
図10】開示された技法が実装されうる例示的なビデオ処理システムのブロック図である。
【0022】
【
図11】本開示のいくつかの実施形態によるビデオ符号化システムを示すブロック図である。
【0023】
【
図12】本開示のいくつかの実施形態によるエンコーダを示すブロック図である。
【0024】
【
図13】本開示のいくつかの実施形態によるデコーダを示すブロック図である。
【0025】
【
図14】ビデオ処理の例示的方法のフローチャートを示す。
【
図15】ビデオ処理の例示的方法のフローチャートを示す。
【
図16】ビデオ処理の例示的方法のフローチャートを示す。
【発明を実施するための形態】
【0026】
本稿は、圧縮解除または復号されたデジタル・ビデオまたは画像の品質を改善するために、画像またはビデオ・ビットストリームのデコーダによって使用されることのできるさまざまな技法を提供する。簡潔のため、本明細書では、用語「ビデオ」は、ピクチャーのシーケンス(伝統的にビデオと呼ばれる)および個々の画像の両方を含むために使用される。さらに、ビデオ・エンコーダも、さらなるエンコードのために使用されるデコードされたフレームを再構成するために、エンコードのプロセス中にこれらの技法を実装しうる。
【0027】
セクション見出しは、理解の容易のために本稿で使用されており、実施形態および技法を対応するセクションに限定するものではない。よって、あるセクションからの実施形態は、他のセクションからの実施形態と組み合わせることができる。
【0028】
1. 概要
本稿は、ビデオ符号化〔コーディング〕技術に関する。具体的には、パレット符号化〔コーディング〕におけるインデックスおよびエスケープ・シンボル符号化〔コーディング〕に関する。これは、HEVCのような既存のビデオ符号化〔コーディング〕規格、またはこれから最終化される規格(多用途ビデオ符号化〔コーディング〕)に適用されてもよい。これは、将来のビデオ符号化〔コーディング〕規格またはビデオ・コーデックにも適用可能でありうる。
【0029】
2. 背景
ビデオ符号化規格は、主に、周知のITU-TおよびISO/IEC規格の開発を通じて発展してきた。ITU-TはH.261とH.263を生み出し、ISO/IECはMPEG-1とMPEG-4 Visualを生み出し、両組織は合同して、H.262/MPEG-2 VideoとH.264/MPEG-4 Advanced Video Coding(AVC)とH.265/HEVC規格とを生み出した。H.262以来、ビデオ符号化規格は、時間的予測と変換符号化が利用されるハイブリッドビデオ符号化構造に基づいている。HEVCを越えた将来のビデオ符号化技術を探求するため、2015年にVCEGとMPEGが合同で合同ビデオ探査チーム(JVET)を設立した。それ以来、JVETによって多くの新しい方法が採用され、合同探査モデル(Joint Exploration Model、JEM)と名付けられた参照ソフトウェアに入れられた。2018年4月には、VCEG(Q6/16)とISO/IEC JTC1 SC29/WG11(MPEG)の間の合同ビデオエキスパートチーム(JVET)が発足し、HEVCに比べ50%のビットレート削減を目指すVVC規格に取り組んでいる。
【0030】
VVCドラフトの最新バージョン、すなわち、Versatile Video Coding(Draft 6)は下記の場所に見出せる:
http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/15_Gothenburg/wg11/JVET-O2001-v14.zip
【0031】
VVCの最新の参照ソフトウェア(VTM)は、下記の場所に見出せる:
https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/tags/VTM-5.0
【0032】
2.1 HEVCスクリーン・コンテンツ符号化拡張(HEVC-SCC)におけるパレット・モード
2.1.1 パレット・モードの概念
【0033】
パレット・モードの背後にある基本的な発想は、CU内のピクセルが代表的な色値の小さな集合によって表現されるということである。この集合はパレットと呼ばれる。エスケープ・シンボルおよびそれに続く(可能性としては量子化された)成分値を信号伝達することによって、パレットの外側にあるサンプルを示すことも可能である。この種のピクセルはエスケープ・ピクセルと呼ばれる。パレット・モードは
図1に示されている。
図1に示されるように、3つの色成分(ルーマおよび2つのクロマ成分)を有する各ピクセルについて、パレットへのインデックスが設立され、ブロックは、パレットにおける設立された値に基づいて再構成されることができる。
【0034】
2.1.2 パレット項目の符号化
パレット項目の符号化のために、パレット予測子が維持される。パレットの最大サイズとパレット予測子は、SPSにおいて信号伝達される。HEVC-SCCでは、palette_predictor_initializer_present_flagがPPSにおいて導入される。このフラグが1である場合、パレット予測子を初期化するための項目が、ビットストリームにおいて信号伝達される。パレット予測子は、各CTU行、各スライスおよび各タイルの先頭において初期化される。palette_predictor_initializer_present_flagの値に依存して、パレット予測子は0にリセットされるか、PPSにおいて信号伝達されたパレット予測子初期化子項目(palette predictor initializer entries)を使用して初期化される。HEVC-SCCでは、サイズ0のパレット予測子初期化子により、PPSレベルでパレット予測子初期化の明示的な無効化を許容することができるようにされた。
【0035】
パレット予測子における各項目について、再利用フラグは、それが現在のパレットの一部であるかどうかを示すために信号伝達される。これは
図2に示される。再利用フラグは、ゼロのランレングス符号化を使用して送信される。その後、新しいパレット項目の数が、次数0の指数ゴロム(Exponential Golomb、EG)符号、すなわちEG-0を使用して信号伝達される。最後に、新しいパレット項目のための成分値が信号伝達される。
【0036】
2.1.3 パレット・インデックスの符号化
パレット・インデックスは、
図3に示されるように水平および垂直横断走査を用いて符号化される。走査順序は、palette_transpose_flagを使用してビットストリームにおいて明示的に信号伝達される。サブセクションの残りについては、走査は水平であると想定される。
【0037】
パレット・インデックスは、'COPY_LEFT'〔左をコピー〕と'COPY_ABOVE'〔上をコピー〕という2つのパレット・サンプル・モードを使用して符号化される。'COPY_LEFT'モードでは、パレット・インデックスはデコードされたインデックスに割り当てられる。'COPY_ABOVE'モードでは、上の行のサンプルのパレット・インデックスがコピーされる。'COPY_LEFT'モードと'COPY_ABOVE'モードの両方について、やはり同じモードで符号化される後続のサンプルの数を指定するラン値が信号伝達される。
【0038】
パレット・モードでは、エスケープ・シンボルについてのインデックスの値は、パレット項目の数である。また、エスケープ・シンボルが'COPY_LEFT'または'COPY_ABOVE'モードにおけるランの一部である場合、エスケープ成分値は、各エスケープ・シンボルについて信号伝達される。パレット・インデックスの符号化が
図4に示される。
【0039】
この構文順序(syntax order)は、次のように達成される。まず、CUについてのインデックス値の数が信号伝達される。これに続いて、打ち切りされたバイナリ符号化を使用して、CU全体についての実際のインデックス値が信号伝達される。インデックスの数とインデックス値の両方がバイパス・モードで符号化される。これは、インデックスに関連したバイパス・ビンをグループ化する。次いで、パレット・サンプル・モード(必要な場合)およびランが、インターリーブされた仕方で信号伝達される。最後に、CU全体についての諸エスケープ・シンボルのための成分エスケープ値が一緒にグループ化され、バイパス・モードで符号化される。エスケープ・シンボルのバイナリ化は、3次のEG符号化、すなわちEG-3である。
【0040】
追加的な構文要素last_run_type_flagが、インデックス値を信号伝達した後に信号伝達される。この構文要素は、インデックスの数とともに、ブロックにおける最後のランに対応するラン値を信号伝達する必要をなくす。
【0041】
HEVC-SCCでは、パレット・モードは4:2:2、4:2:0、およびモノクロ・クロマ・フォーマットについても有効にされる。パレット項目とパレット・インデックスの信号伝達は、すべてのクロマ・フォーマットについてほぼ同一である。非モノクロ・フォーマットの場合、各パレット項目は3つの成分で構成される。モノクロ・フォーマットの場合、各パレット項目は単一の成分で構成される。サブサンプリングされたクロマ方向については、クロマ・サンプルは2で割れるルーマ・サンプル・インデックスと関連付けられる。CUのためのパレット・インデックスを再構成した後、サンプルが、それに関連する単一の成分をもつだけである場合、パレット項目の最初の成分のみが使用される。信号伝達における唯一の違いは、エスケープ成分値についてである。各エスケープ・シンボルについて、信号伝達されるエスケープ成分値の数は、そのシンボルに関連する成分の数に依存して異なる可能性がある。
【0042】
さらに、パレット・インデックス符号化にはインデックス調整プロセスがある。パレット・インデックスを信号伝達するとき、左近傍インデックスまたは上近傍インデックスは、現在インデックスとは異なるはずである。よって、1つの可能性を除去することにより、現在のパレット・インデックスの範囲を1だけ減らすことができる。その後、インデックスは、打ち切りされたバイナリ(truncated binary、TB)バイナリ化で信号伝達される。
【0043】
この部分に関連するテキストは次のように示される。ここで、CurrPaletteIndexは現在のパレット・インデックスであり、adjustedRefPaletteIndexは予測インデックスである。
【0044】
変数PaletteIndexMap[xC][yC]は、パレット・インデックスを指定する。これは、CurrentPaletteEntries
によって表現される配列へのインデックスである。配列インデックスxC、yCは、ピクチャーの左上のルーマ・サンプルに対するサンプルの位置(xC,yC)を指定する。PaletteIndexMap[xC][yC]の値は、0からMaxPaletteIndexの範囲である(両端含む)。変数adjustedRefPaletteIndexは次のように導出される:
adjustedRefPaletteIndex=MaxPaletteIndex+1
if(PaletteScanPos>0){
xcPrev=x0+TraverseScanOrder[log2CbWidth][log2bHeight][PaletteScanPos-1][0]
ycPrev=y0+TraverseScanOrder[log2CbWidth][log2bHeight][PaletteScanPos-1][1]
if(CopyAboveIndicesFlag[xcPrev][ycPrev]==0){
adjustedRefPaletteIndex=PaletteIndexMap[xcPrev][ycPrev]{ (7-157)
else{
if(!palette_transpose_flag)
adjustedRefPaletteIndex=PaletteIndexMap[xC][yC-1]
else
adjustedRefPaletteIndex=PaletteIndexMap[xC-1][yC]
}
}
【0045】
CopyAboveIndicesFlag[xC][yC]が0に等しい場合、変数CurrPaletteIndexは次のように導出される:
if(CurrPaletteIndex>=adjustedRefPaletteIndex)
CurrPaletteIndex++
【0046】
さらに、パレット・モードにおけるランレングス要素はコンテキスト符号化される。JVET-O2011-vEにおいて記載される関連するコンテキスト導出プロセスは、以下のように示される。
構文要素palette_run_prefixについてのctxIncの導出プロセス
このプロセスへの入力は、ビン・インデックスbinIdxならびに構文要素copy_above_palette_indices_flagおよびpalette_idx_idcである。
このプロセスの出力は変数ctxIncである。
変数ctxIncは次のように導出される:
・copy_above_palette_indices_flagが0に等しく、binIdxが0に等しい場合、ctxIncは以下のように導出される:
ctxInc=(palette_idx_idc<1)? 0:((palette_idx_idc<3)?1:2) (9-69)
・それ以外の場合、ctxIncは表1によって与えられる:
【表1】
【0047】
2.2 VVCにおけるパレット・モード
2.2.1 デュアル・ツリーにおけるパレット
VVCでは、デュアル・ツリー符号化構造がイントラスライスの符号化に使用されるため、ルーマ成分と2つのクロマ成分は、異なるパレットおよびパレット・インデックスをもつことがある。さらに、2つのクロマ成分は、同じパレットおよびパレット・インデックスを共有する。
【0048】
2.2.2 別個のモードとしてのパレット
JVET-N0258および現在のVTMでは、符号化単位についての予測モードはMODE_INTRA、MODE_INTER、MODE_IBC、MODE_PLTとすることができる。予測モードのバイナリ化はそれに応じて変更される。
【0049】
IBCがオフにされるときは、Iタイル上で、最初の1ビンが、現在の予測モードがMODE_PLTであるか否かを示すために使用される。P/Bタイル上では、最初のビンは現在の予測モードがMODE_INTRAであるか否かを示すために使用される。そうでない場合、現在の予測モードがMODE_PLTまたはMODE_INTERであることを示すために、1つの追加的なビンが使用される。IBCがオンにされるときは、Iタイル上で、最初のビンが、現在の予測モードがMODE_IBCであるか否かを示すために使用される。もしそうでなければ、現在の予測モードがMODE_PLTかMODE_INTRAかを示すために第2のビンが使われる。P/Bタイル上では、最初のビンは現在の予測モードがMODE_INTRAであるか否かを示すために使用される。イントラモードである場合、現在の予測モードがMODE_PLTまたはMODE_INTRAであることを示すために第2のビンが使用される。もしそうでなければ、現在の予測モードがMODE_IBCまたはMODE_INTERであることを示すために第2のビンが使用される。
【0050】
JVET-O2001-vEにおける関連するテキストを以下に示す。
【0051】
【0052】
【0053】
2.2.4 パレット・モードのセマンティクス
以下のセマンティクスでは、配列インデックスx0、y0は、ピクチャーの左上のルーマ・サンプルに対する、考慮される符号化ブロックの左上のルーマ・サンプルの位置(x0,y0)を指定する。配列インデックスxC、yCは、ピクチャーの左上のルーマ・サンプルに対する、サンプルの位置(xC,yC)を指定する。配列インデックスstartCompは、現在のパレット・テーブルの最初の色成分を指定する。0に等しいstartCompはY成分を示し、1に等しいstartCompはCb成分を示し、2に等しいstartCompはCr成分を示す。numCompsは、現在のパレット・テーブルにおける色成分の数を指定する。
【0054】
予測子パレットは、現在のパレット内の項目を予測するために使用される、以前の符号化単位からのパレット項目で構成される。
変数PredictorPaletteSize[startComp]は、現在のパレット・テーブルの最初の色成分startCompについての予測子パレットのサイズを指定する。PredictorPaletteSizeは、節8.4.5.3において規定されるように導出される。
変数PalettePredictorEntryReuseFlags[i]が1に等しいことは、予測子パレットにおけるi番目の項目が現在のパレットにおいて再利用されることを指定する。PalettePredictorEntryReuseFlags[i]が0に等しいことは、予測子パレットのi番目の項目が現在のパレットにおける項目ではないことを指定する。配列PalettePredictorEntryReuseFlags[i]のすべての要素が0に初期化される。
【0055】
palette_predictor_runは、配列PalettePredictorEntryReuseFlagsにおけるゼロでない項目の前にあるゼロの数を決定するために使用される。
palette_predictor_runの値は、0から(PredictorPaletteSize-predictorEntryIdx)の範囲内(両端含む)であることがビットストリーム適合性の要件である。ここで、predictorEntryIdxは、配列PalettePredictorEntryReuseFlagsにおける現在位置に対応する。変数NumPredictedPaletteEntriesは、予測子パレットから再利用される現在のパレットにおける項目数を指定する。NumPredictedPalletteEntriesの値は、0からpalette_max_sizeの範囲内(両端含む)である。
【0056】
num_signalled_palette_entriesは、現在のパレット・テーブルの最初の色成分startCompについて明示的に信号伝達される、現在のパレットにおける項目の数を指定する。
num_signalled_palette_entriesが存在しない場合、0に等しいと推定される。
変数CurrentPaletteSize[startComp]は、現在のパレット・テーブルの最初の色成分startCompについての現在のパレットのサイズを指定し、次のように導出される:
CurrentPaletteSize[startComp]=NumPredictedPaletteEntries+num_signalled_palette_entries (7-155)
CurrentPaletteSize[startComp]の値は、0からpalette_max_sizeの範囲内(両端含む)である。
【0057】
new_palette_entries[cIdx][i]は、色成分cIdxについてのi番目の信号伝達されるパレット項目についての値を指定する。
変数PredictorPaletteEntries[cIdx][i]は、色成分cIdxについての予測子パレットにおけるi番目の要素を指定する。
変数CurrentPaletteEntries[cIdx][i]は、色成分cIdxについての現在のパレットにおけるi番目の要素を指定し、次のように導出される:
【表4】
【0058】
palette_escape_val_present_flagが1に等しいことは、現在の符号化単位が少なくとも1つのエスケープ符号化サンプルを含むことを指定する。escape_val_present_flagが0に等しいことは、現在の符号化単位においてエスケープ符号化されたサンプルがないことを指定する。存在しない場合、palette_escape_val_present_flagの値は1に等しいと推定される。
変数MaxPaletteIndexは、現在の符号化単位についてのパレット・インデックスの可能な最大値を指定する。MaxPaletteIndexの値は
CurrentPaletteSize[startComp]-1+palette_escape_val_presen_flag
に等しく設定される。
【0059】
num_palette_indices_minus1に1を加えたものは、現在のブロックについて明示的に信号伝達されるまたは推定されるパレット・インデックスの数である。num_palette_indices_minus1が存在しない場合、0に等しいと推定される。
palette_idx_idcは、パレット・テーブル、CurrentPaletteEntriesへのインデックスの指示である。palette_idx_idcの値は、ブロック内の最初のインデックスについては0からMaxPaletteIndexの範囲内(両端含む)であり、ブロック内の残りのインデックスについては0から(MaxPaletteIndex-1)の範囲内(両端含む)である。
palette_idx_idcが存在しない場合、0に等しいと推定される。
変数PaletteIndexIdc[i]は、明示的に信号伝達されるまたは推定されるi番目のpalette_idx_idcを格納する。配列PaletteIndexIdc[i]のすべての要素は0に初期化される。
【0060】
copy_above_indices_for_final_run_flagが1に等しいことは、符号化単位の最後の諸位置のパレット・インデックスが、水平横断走査が使用される場合は上の行におけるパレット・インデックスから、垂直横断走査が使用される場合は左の列におけるパレット・インデックスから、コピーされることを指定する。
copy_above_indices_for_final_run_flagが0に等しいことは、符号化単位における最後の諸位置のパレット・インデックスがPaletteIndexIdc[num_palette_indices_minus1]からコピーされることを指定する。
copy_above_indices_for_final_run_flagが存在しない場合、0に等しいと推定される。
【0061】
palette_transpose_flagが1に等しいことは、現在の符号化単位内のサンプルについてのインデックスを走査するために垂直横断走査が適用されることを指定する。palette_transpose_flagが0に等しいことは、現在の符号化単位内のサンプルについてのインデックスを走査するために水平横断走査が適用されることを指定する。存在しない場合、palette_transpose_flagの値は0に等しいと推定される。
配列TraverseScanOrderは、パレット符号化のための走査順序配列を指定する。palette_transpose_flagが0に等しい場合、TraverseScanOrderは水平走査順序HorTravScanOrderを割り当てられ、palette_transpose_flagが1に等しい場合、TraverseScanOrderは垂直走査順序VerTravScanOrderを割り当てられる。
【0062】
copy_above_palette_indices_flagが1に等しいことは、パレット・インデックスが、水平横断走査が使用される場合には、上の行における同じ位置、または垂直横断走査が使用される場合には、左の列における同じ位置にあるパレット・インデックスに等しいことを指定する。copy_above_palette_indices_flagが0に等しいことは、サンプルのパレット・インデックスの指示がビットストリームにおいて符号化されるか、または推定されることを指定する。
【0063】
変数CopyAboveIndicesFlag[xC][yC]が1に等しいことは、パレット・インデックスが上の行(水平走査)または左の列(垂直走査)におけるパレット・インデックスからコピーされることを指定する。
CopyAboveIndicesFlag[xC][yC]が0に等しいことは、パレット・インデックスがビットストリームにおいて明示的に符号化されるか、推定されることを指定する。配列インデックスxC、yCは、ピクチャーの左上のルーマ・サンプルに対する、サンプルの位置(xC,yC)を指定する。PaletteIndexMap[xC][yC]の値は、0から(MaxPaletteIndex-1)の範囲内(両端含む)とする。
【0064】
変数PaletteIndexMap[xC][yC]は、CurrentPaletteEntriesによって表される配列へのインデックスであるパレット・インデックスを指定する。配列インデックスxC、yCは、ピクチャーの左上のルーマ・サンプルに対するサンプルの位置(xC,yC)を指定する。PaletteIndexMap[xC][yC]の値は、0からMaxPaletteIndexの範囲内(両端含む)である。
【0065】
変数adjustedRefPaletteIndexは次のように導出される:
【表5】
CopyAboveIndicesFlag[xC][yC]が0に等しい場合、変数CurrPaletteIndexは次のように導出される:
if(CurrPaletteIndex>=adjustedRefPaletteIndex)
CurrPaletteIndex++ (7-158)
【0066】
palette_run_prefixは、存在する場合、PaletteRunMinus1のバイナリ化におけるプレフィックス部分を指定する。
【0067】
palette_run_suffixは、変数PaletteRunMinus1の導出において使用される。存在しない場合、palette_run_suffixの値は0に等しいと推定される。
【0068】
RunToEndが0に等しい場合、変数PaletteRunMinus1は次のように導出される:
・PaletteMaxRunMinus1が0に等しい場合、PaletteRunMinus1は0に等しく設定される。
・それ以外の場合(PaletteMaxRunMinus1が0より大きい場合)、次が適用される:
・palette_run_prefixが2より小さい場合、次が適用される:
PaletteRunMinus1=palette_run_prefix (7-159)
・それ以外の場合(palette_run_prefixが2以上)、次が適用される:
PrefixOffset=1<<(palette_run_prefix-1)
PaletteRunMinus1=PrefixOffset+palette_run_suffix (7-160)
【0069】
変数PaletteRunMinus1は次のように使用される:
・CopyAboveIndicesFlag[xC][yC]が0に等しい場合、PaletteRunMinus1は、同じパレット・インデックスをもつ連続する位置の数から1を引いた数を指定する。
・それ以外の場合、palette_transpose_flagが0に等しい場合、PaletteRunMinus1は、上の行における対応する位置で使用されるのと同じパレット・インデックスをもつ、連続する位置の数から1を引いた数を指定する。
・それ以外の場合、PaletteRunMinus1は、左の列における対応する位置で使用されるのと同じパレット・インデックスをもつ、連続する位置の数から1を引いた数を指定する。
RunToEndが0に等しい場合、変数PaletteMaxRunMinus1はPaletteRunMinus1について可能な最大値を表し、PaletteMaxRunMinus1の値が0以上であることはビットストリーム適合性の要件である。
【0070】
palette_escape_valは、ある成分についての量子化されたエスケープ符号化されたサンプル値を指定する。
変数PaletteEscapeVal[cIdx][xC][yC]は、PaletteIndexMap[xC][yC]がMaxPaletteIndexに等しく、palette_escape_val_present_flagが1に等しいサンプルのエスケープ値を指定する。配列インデックスcIdxは、色成分を指定する。配列インデックスxC、yCは、ピクチャーの左上のルーマ・サンプルに対するサンプルの位置(xC,yC)を指定する。
PaletteEscapeVal[cIdx][xC][yC]が、0に等しいcIdxについては0から(1<<(BitDepthY+1)-1の範囲内(両端含む)であり、0に等しくないcIdxについては0から(1<<((BitDepthC+1))-1)の範囲内(両端含む)であることがビットストリーム適合性の要件である。
【0071】
1.1.1 ライン・ベースのCGパレット・モード
ライン・ベースのCGパレット・モードがVVCに採用された。この方法では、パレット・モードの各CUは、横断走査モードに基づいて複数のサンプル・セグメント(この試験では)に分割される。各セグメントにおけるパレット・ラン符号化のためのエンコード順序は、次のとおり:各ピクセルについて、1つのコンテキスト符号化されたビンrun_copy_flag=0が信号伝達されて、ピクセルが前のピクセルと同じモードであるかどうか、すなわち前の走査されたピクセルと現在のピクセルが両方ともラン・タイプCOPY_ABOVEであるかどうか、または前の走査されたピクセルと現在のピクセルが両方ともラン・タイプINDEXであり、同じインデックス値であるかどうかを示す。そうでない場合、run_copy_flag=1が信号伝達される。ピクセルと前のピクセルが異なるモードである場合、1つのコンテキスト符号化されたビンcopy_above_palette_indices_flagが信号伝達されて、ピクセルのラン・タイプ、すなわち、INDEXまたはCOPY_ABOVEを示す。VTM6.0におけるパレット・モードと同じく、サンプルが最初の行(水平横断走査)または最初の列(垂直横断走査)にある場合、デフォルトでINDEXモードが使用されるため、デコーダはラン・タイプをパースする必要はない。また、前にパースされたラン・タイプがCOPY_ABOVEである場合も、デコーダはラン・タイプをパースする必要はない。1つのセグメントにおけるピクセルのパレット・ラン符号化の後、インデックス値(INDEXモードについて)および量子化されたエスケープ色は、各ラインCG内のスループットを改善するために、コンテキスト符号化されたビンのエンコード/パースとは別に、バイパス符号化およびグループ化される。インデックス値は、VTMのようにパレット・ラン符号化の前に処理されるのではなく、今やラン符号化の後に符号化/パースされるので、エンコーダは、インデックス値の数num_palette_indices_minus1と最後のラン・タイプcopy_above_indices_for_final_run_flagを信号伝達する必要はない。
JVET-P0077におけるライン・ベースのCGパレット・モードのテキストを以下に示す。
【0072】
【0073】
7.4.9.6 パレット符号化のセマンティクス
以下のセマンティクスでは、配列インデックスx0、y0は、ピクチャーの左上のルーマ・サンプルに対する、考慮される符号化ブロックの左上のルーマ・サンプルの位置(x0,y0)を指定する。配列インデックスxC、yCは、ピクチャーの左上のルーマ・サンプルに対するサンプルの位置(xC,yC)を指定する。配列インデックスstartCompは、現在のパレット・テーブルの最初の色成分を指定する。0に等しいstartCompはY成分を示し、1に等しいstartCompはCb成分を示し、2に等しいstartCompはCr成分を示す。numCompsは、現在のパレット・テーブルにおける色成分の数を指定する。
予測子パレットは、現在のパレット内の項目を予測するために使用される、以前の符号化単位からのパレット項目で構成される。
変数PredictorPaletteSize[startComp]は、現在のパレット・テーブルの最初の色成分startCompについての予測子パレットのサイズを指定する。PredictorPaletteSizeは、節8.4.5.3において規定されるように導出される。
変数PalettePredictorEntryReuseFlags[i]が1に等しいことは、予測子パレットにおけるi番目の項目が現在のパレットにおいて再利用されることを指定する。PalettePredictorEntryReuseFlags[i]が0に等しいことは、予測子パレットのi番目の項目が現在のパレットにおける項目ではないことを指定する。配列PalettePredictorEntryReuseFlags[i]のすべての要素が0に初期化される。
【0074】
palette_predictor_runは、配列PalettePredictorEntryReuseFlagsにおけるゼロでない項目の前にあるゼロの数を決定するために使用される。
palette_predictor_runの値は、0から(PredictorPaletteSize-predictorEntryIdx)の範囲内(両端含む)であることがビットストリーム適合性の要件である。ここで、predictorEntryIdxは、配列PalettePredictorEntryReuseFlagsにおける現在位置に対応する。変数NumPredictedPaletteEntriesは、予測子パレットから再利用される現在のパレットにおける項目数を指定する。NumPredictedPalletteEntriesの値は、0からpalette_max_sizeの範囲内(両端含む)である。
【0075】
num_signalled_palette_entriesは、現在のパレット・テーブルの最初の色成分startCompについて明示的に信号伝達される、現在のパレットにおける項目の数を指定する。
num_signalled_palette_entriesが存在しない場合、0に等しいと推定される。
変数CurrentPaletteSize[startComp]は、現在のパレット・テーブルの最初の色成分startCompについての現在のパレットのサイズを指定し、次のように導出される:
CurrentPaletteSize[startComp]=NumPredictedPaletteEntries+num_signalled_palette_entries (7-155)
CurrentPaletteSize[startComp]の値は、0からpalette_max_sizeの範囲内(両端含む)である。
【0076】
new_palette_entries[cIdx][i]は、色成分cIdxについてのi番目の信号伝達されるパレット項目についての値を指定する。
変数PredictorPaletteEntries[cIdx][i]は、色成分cIdxについての予測子パレットにおけるi番目の要素を指定する。
変数CurrentPaletteEntries[cIdx][i]は、色成分cIdxについての現在のパレットにおけるi番目の要素を指定し、次のように導出される:
【表7】
【0077】
palette_escape_val_present_flagが1に等しいことは、現在の符号化単位が少なくとも1つのエスケープ符号化サンプルを含むことを指定する。escape_val_present_flagが0に等しいことは、現在の符号化単位においてエスケープ符号化されたサンプルがないことを指定する。存在しない場合、palette_escape_val_present_flagの値は1に等しいと推定される。
変数MaxPaletteIndexは、現在の符号化単位についてのパレット・インデックスの可能な最大値を指定する。MaxPaletteIndexの値は
CurrentPaletteSize[startComp]-1+palette_escape_val_presen_flag
に等しく設定される。
【0078】
palette_idx_idcは、パレット・テーブル、CurrentPaletteEntriesへのインデックスの指示である。palette_idx_idcの値は、ブロック内の最初のインデックスについては0からMaxPaletteIndexの範囲内(両端含む)であり、ブロック内の残りのインデックスについては0から(MaxPaletteIndex-1)の範囲内(両端含む)である。
palette_idx_idcが存在しない場合、0に等しいと推定される。
【0079】
palette_transpose_flagが1に等しいことは、現在の符号化単位内のサンプルについてのインデックスを走査するために垂直横断走査が適用されることを指定する。palette_transpose_flagが0に等しいことは、現在の符号化単位内のサンプルについてのインデックスを走査するために水平横断走査が適用されることを指定する。存在しない場合、palette_transpose_flagの値は0に等しいと推定される。
配列TraverseScanOrderは、パレット符号化のための走査順序配列を指定する。palette_transpose_flagが0に等しい場合、TraverseScanOrderは水平走査順序HorTravScanOrderを割り当てられ、palette_transpose_flagが1に等しい場合、TraverseScanOrderは垂直走査順序VerTravScanOrderを割り当てられる。
【0080】
run_copy_flagが1に等しいことは、copy_above_palette_indices_flagが0に等しい場合、パレット・ラン・タイプが前に走査された位置でのラン・タイプと同じであり、パレット・ラン・インデックスが前の位置でのインデックスと同じであることを指定する。それ以外の場合は、run_copy_flagは0に等しい。
【0081】
copy_above_palette_indices_flagが1に等しいことは、パレット・インデックスが、水平横断走査が使用される場合には、上の行における同じ位置、または垂直横断走査が使用される場合には、左の列における同じ位置にあるパレット・インデックスに等しいことを指定する。copy_above_palette_indices_flagが0に等しいことは、サンプルのパレット・インデックスの指示がビットストリームにおいて符号化されるか、または推定されることを指定する。
【0082】
変数CopyAboveIndicesFlag[xC][yC]が1に等しいことは、パレット・インデックスが上の行(水平走査)または左の列(垂直走査)におけるパレット・インデックスからコピーされることを指定する。
CopyAboveIndicesFlag[xC][yC]が0に等しいことは、パレット・インデックスがビットストリームにおいて明示的に符号化されるか、推定されることを指定する。配列インデックスxC、yCは、ピクチャーの左上のルーマ・サンプルに対する、サンプルの位置(xC,yC)を指定する。
【0083】
変数PaletteIndexMap[xC][yC]は、CurrentPaletteEntriesによって表される配列へのインデックスであるパレット・インデックスを指定する。配列インデックスxC、yCは、ピクチャーの左上のルーマ・サンプルに対するサンプルの位置(xC,yC)を指定する。PaletteIndexMap[xC][yC]の値は、0からMaxPaletteIndexの範囲内(両端含む)である。
【0084】
変数adjustedRefPaletteIndexは次のように導出される:
【表8】
CopyAboveIndicesFlag[xC][yC]が0に等しい場合、変数CurrPaletteIndexは次のように導出される:
if(CurrPaletteIndex>=adjustedRefPaletteIndex)
CurrPaletteIndex++ (7-158)
【0085】
palette_escape_valは、ある成分についての量子化されたエスケープ符号化されたサンプル値を指定する。
変数PaletteEscapeVal[cIdx][xC][yC]は、PaletteIndexMap[xC][yC]がMaxPaletteIndexに等しく、palette_escape_val_present_flagが1に等しいサンプルのエスケープ値を指定する。配列インデックスcIdxは、色成分を指定する。配列インデックスxC、yCは、ピクチャーの左上のルーマ・サンプルに対するサンプルの位置(xC,yC)を指定する。
PaletteEscapeVal[cIdx][xC][yC]が、0に等しいcIdxについては0から(1<<(BitDepthY+1)-1の範囲内(両端含む)であり、0に等しくないcIdxについては0から(1<<((BitDepthC+1))-1)の範囲内(両端含む)であることがビットストリーム適合性の要件である。
【0086】
2.3 VVCにおけるローカル・デュアル・ツリー
典型的なハードウェア・ビデオ・エンコーダおよびデコーダでは、ピクチャーがより多くの小さなイントラブロックを有する場合、近傍のイントラブロック間のサンプル処理データ依存性のため、処理スループットが低下する。イントラブロックの予測子生成は、近傍ブロックからの上部および左の境界の再構成されたサンプルを必要とする。よって、イントラ予測はブロックごとに順次処理されなければならない。
【0087】
HEVCでは、最小のCUは8×8ルーマ・サンプルである。最小のイントラCUのルーマ成分は、4つの4×4ルーマ・イントラ予測単位(PU)にさらに分割できるが、最小のイントラCUのクロマ成分はそれ以上分割できない。したがって、最悪ケースのハードウェア処理スループットは、4×4クロマ・イントラブロックまたは4×4ルーマ・イントラブロックが処理されるときに発生する。
【0088】
VTM5.0では、単一符号化ツリーでは、クロマ・パーティションは常にルーマに従い、最小のイントラCUは4×4ルーマ・サンプルであるため、最小のクロマ・イントラCBは2×2である。したがって、VTM5.0では、単一符号化ツリーにおける最小のクロマ・イントラCBは2×2である。VVC復号のための最悪ケースのハードウェア処理スループットは、HEVC復号の場合の1/4だけである。さらに、クロマ・イントラCBの再構成プロセスは、成分横断線形モデル(cross-component linear model、CCLM)、4タップ補間フィルタ、位置依存イントラ予測結合(position-dependent intra prediction combination、PDPC)、および復号インター・イントラ予測(combined inter intra prediction、CIIP)を含むツールを採用した後、HEVCの場合よりはるかに複雑になる。ハードウェア・デコーダにおいて高い処理スループットを達成することは困難である。本節では、最悪ケースのハードウェア処理スループットを改善する方法が提案される。
【0089】
この方法の目標は、クロマ・イントラCBのパーティション分割を制約することにより、16クロマ・サンプルより小さいクロマ・イントラCBを禁止することである。
【0090】
単一符号化ツリーでは、SCIPUは、クロマ・ブロック・サイズがTHクロマ・サンプル以上であり、4THルーマ・サンプルより小さい少なくとも1つの子ルーマ・ブロックをもつ符号化ツリー・ノードとして定義される。ここで、THはこの寄稿では16に設定される。各SCIPUでは、すべてのCBがインターであるか、またはすべてのCBが非インターである、すなわちイントラまたはIBCのいずれかであることが要求される。非インターSCIPUの場合、さらに、非インターSCIPUのクロマがそれ以上分割されず、SCIPUのルーマがさらに分割されることが許されることが要求される。このようにして、最小のクロマ・イントラCBサイズは16クロマ・サンプルであり、2×2、2×4、および4×2クロマCBが除去される。さらに、クロマ・スケーリングは、非インターSCIPUの場合には適用されない。さらに、ルーマ・ブロックがさらに分割され、クロマ・ブロックが分割されない場合、ローカルのデュアル・ツリー符号化構造が構築される。
【0091】
2つのSCIPUの例を
図5のAおよびBに示されている。
図5のAにおいては、8×4クロマ・サンプルの1つのクロマCBと3つのルーマCB(4×8、8×8、4×8のルーマCB)が1つのSCIPUを形成するが、これは、8×4クロマ・サンプルからの三分木(TT)分割は、16クロマ・サンプルより小さなクロマCBを生じるためである。
図5のBでは、4×4クロマ・サンプルの一方のクロマCB(8×4クロマ・サンプルの左側)と3つのルーマCB(8×4、4×4、4×4のルーマCB)が1つのSCIPUを形成し、4×4サンプルの他方のクロマCB(8×4クロマ・サンプルの右側)と2つのルーマCB(8×4、8×4のルーマCB)が1つのSCIPUを形成する。これは、4×4クロマ・サンプルからの二分木(BT)分割は、16のクロマ・サンプルよりも小さなクロマCBを生じるためである。
【0092】
提案される方法では、現在のスライスがIスライスであるか、または現在のSCIPUがさらに1回分割した後に4×4ルーマ・パーティションをその中に有する場合、SCIPUのタイプは非インターであると推定される(VVCではインター4×4は許可されないため);それ以外の場合、SCIPUのタイプ(インターまたは非インター)は、SCIPUにおいてCUをパースする前に、1つの信号伝達されるフラグによって示される。
【0093】
上記の方法を適用することにより、2×2のクロマ・ブロックの代わりに4×4、2×8、または8×2のクロマ・ブロックが処理する場合に、最悪ケースのハードウェア処理スループットが発生する。最悪ケースのハードウェア処理スループットはHEVCの場合と同じであり、VTM5.0の場合の4倍である。
【0094】
2.4 変換スキップ(TS)
HEVCの場合と同様に、ブロックの残差は変換スキップ・モードで符号化されることができる。構文符号化の冗長性を避けるために、CUレベルMTS_CU_flagがゼロに等しくない場合、変換スキップ・フラグは信号伝達されない。変換スキップのためのブロック・サイズ制限は、JEM4におけるMTSについての場合と同じである。このことは、ブロック幅と高さの両方が32以下の場合に、変換スキップがCUに適用できることを示している。現在のCUについてLFNSTまたはMIPがアクティブ化される場合、暗黙的なMTS変換がDCT2に設定されることに注意されたい。また、暗黙的なMTSは、インター符号化されたブロックについてMTSが有効にされている場合でも、有効にされることができる。
【0095】
また、変換スキップ・ブロックについて、最小の許容される量子化パラメータ(QP)は6*(internalBitDepth-inputBitDepth)+4と定義される。
【0096】
2.5 代替的なルーマ半画素補間フィルタ
JVET-N0309では、代替的な半画素補間フィルタが提案されている。
【0097】
半画素ルーマ補間フィルタのスイッチングは、動きベクトル精度に依存して行われる。既存の1/4画素、フル画素、および4画素AMVRモードに加えて、新しい半画素精度AMVRモードが導入される。半画素動きベクトル精度の場合にのみ、代替的な半画素ルーマ補間フィルタが選択されることができる。
【0098】
半画素動きベクトル精度(すなわち、半画素AMVRモード)を使用する非アフィン非マージ・インター符号化されるCUについて、HEVC/VVC半画素ルーマ補間フィルタと一つまたは複数の代替的な半画素補間との間の切り換えが、新しい構文要素hpelIfIdxの値に基づいて行われる。構文要素hpelIfIdxは、半画素AMVRモードの場合にのみ信号伝達される。空間的マージ候補を使用するスキップ/マージ・モードの場合、構文要素hpelIfIdxの値は近傍ブロックから継承される。
【0099】
2.6 適応色変換(Adaptive Color Transform、ACT)
図6は、ACTが適用される復号フローチャートを示す。
図6に示されるように、色空間変換は、残差ドメインで実行される。具体的には、1つの追加的な復号モジュール、すなわち逆ACTが、YCgCoドメインからの残差をもとのドメインに戻す変換をするための逆変換の後に、導入される。
【0100】
VVCでは、最大変換サイズが1符号化単位(CU)の幅または高さより小さいのでない限り、1つのCUリーフノードも、変換処理の単位として使用される。よって、提案される実装では、ACTフラグは、残差を符号化するための色空間を選択するために、1つのCUについて信号伝達される。さらに、HEVC ACT設計に従い、インターおよびIBC CUについて、ACTは、CU内に少なくとも1つのゼロでない係数がある場合にのみ有効にされる。イントラCUについては、ACTは、クロマ成分がルーマ成分の同じイントラ予測モード、すなわちDMモードを選択する場合にのみ、有効にされる。
色空間変換のために使用されるコア変換は、HEVCのために使用されるものと同じに保たれる。具体的には、以下の順方向および逆方向YCgCo色変換行列が適用される。
【数1】
【0101】
さらに、色変換前後の残差信号のダイナミックレンジ変化を補償するために、(-5,-5,-3)のQP調整が変換残差に適用される。
他方、順色変換と逆色変換は、3つの成分すべての残差にアクセスする必要がある。対応して、提案される実装では、ACTは、3つの成分のすべての残差が利用可能ではない以下の2つのシナリオでは無効にされる。
1.別個木パーティション(separate-tree partition):別個の木が適用される場合、1つのCTU内のルーマおよびクロマ・サンプルは、異なる構造によって分割される。その結果、ルーマ・ツリー内のCUはルーマ成分のみを含み、クロマ・ツリー内のCUは2つのクロマ成分のみを含むことになる。イントラ・サブパーティション予測(Intra sub-partition prediction、ISP):ISPサブパーティションはルーマに適用されるだけであり、一方、クロマ信号は分割なしに符号化される。現在のISP設計では、最後の諸ISPサブパーティションを除いて、他のサブパーティションはルーマ成分だけを含む。
【0102】
3. 本明細書に記載される技術的解決策および実施形態によって解決される技術的問題
1. エスケープ・シンボルの現在のバイナリ化は固定長ではなく、このことは、一様分布をもつ源に好適でありうる。
2. 現在のパレット符号化設計は、可能性のある冗長性を除去するためにインデックス調整プロセスを実行し、これは、たとえばエスケープ値インデックスが誤って導出された場合に、パース依存性(parsing dependency)を導入する可能性がある。
3. 現在インデックスを導出するために使用される参照インデックスは、エンコーダ制約条件を必要とすることがあり、これは、現在の設計では考慮されず、コーデック設計のために望ましくない。
4. ローカル・デュアル・ツリーが有効にされる場合、前のブロックと現在のブロックのパレット項目は、異なる数の色成分をもつ可能性がある。そのような場合の対処方法は不明である。
5. ローカル・デュアル・ツリーとPLTは、単一ツリー領域からデュアル・ツリー領域に符号化する際に、いくつかのパレット項目が繰り返される可能性があるため、同時に適用できなかった。一例が
図7に示される。
6. joint_cbcrモードのためのクロマQPテーブルが制約される可能性がある。
7. ある種の条件下では、エスケープ・サンプルが冗長になることがある。
8. ライン・ベースのCGモードは、高スループットで処理できなかった。
【0103】
4. 実施形態および解決策のリスト
以下のリストは、一般的な概念を説明するための例として考慮されるべきである。これらの項目は狭義に解釈すべきではない。さらに、これらの項目は、任意の仕方で組み合わせることができる。
【0104】
以下の例は、VVCにおけるパレット方式および他のすべてのパレット関連方式に適用されうる。
【0105】
Modulo(x,M)は、xが正の整数の場合は(x%M)として定義され、そうでない場合はM-(-x)%Mとして定義される。
【0106】
以下では、無損失モードで符号化されたブロックは、1に等しいtranquant_bypass_flagで符号化されたブロック、または所与の閾値より大きくないQPおよび1に等しいtransform_skip_flagで符号化されたブロックを意味しうる。
【0107】
以下の例は、VVCにおけるパレット方式および他のすべてのパレット関連方式に適用されうる。
【0108】
1.固定長符号化が、エスケープ・シンボルを符号化するために適用されてもよい。
a.一例では、エスケープ・シンボルは、固定長バイナリ化で信号伝達されてもよい。
b.一例では、エスケープ・シンボルは、Nビットを使用して固定長バイナリ化で信号伝達されてもよい。
c.一例では、エスケープ・シンボルを信号伝達するための符号長(たとえば、項目1.bで言及されているN)は、内部ビット深さに依存しうる。
i.あるいはまた、エスケープ・シンボルを信号伝達するための符号長は、入力ビット深さに依存してもよい。
ii.あるいはまた、エスケープ・シンボルを信号伝達するための符号長は、内部ビット深さと入力ビット深さとの間の差に依存してもよい。
iii.一例では、Nは入力/内部ビット深さに等しく設定される。
d.一例では、エスケープ・シンボルを信号伝達するための符号長(たとえば、項目1.bで言及されているN)は、量子化パラメータ、すなわちQpに依存してもよい。
i.一例では、エスケープ・シンボルを信号伝達するための符号長は、f(Qp)で示されるような量子化パラメータの関数であってもよい。
1.一例では、関数fは(内部ビット深さ-g(Qp))と定義されてもよい。
2.一例では、Nは(内部ビット深さ-max(16,(Qp-4)/6))に設定されてもよい。
3.一例では、Nは(内部ビット深さ-max(QpPrimeTsMin,(Qp-4)/6))に設定されてもよい。ここで、qPは、デコードされた量子化パラメータであり、QpPrimeTsMinは、変換スキップ・モードのための最小の許容される量子化パラメータである。
4.あるいはまた、さらに、符号長Nは、max(A,内部ビット深さ-(Max(QpPrimeTsMin,Qp)-4)/6)に設定されてもよく、ここで、Aは、0または1のような負でない整数値である。
e.上記の諸例において、Nは、0以上であってもよい。
【0109】
2.一つのビデオ単位(たとえば、CU)におけるエスケープ・シンボルの使用を無効にすることが提案される。
a.あるいはまた、さらに、エスケープ・シンボルの存在 の指示を信号伝達することはスキップされる。
b.一例では、エスケープ・シンボルの使用を有効/無効にするかどうかは、量子化パラメータおよび/またはビット深さに依存してもよい。
i.一例では、(内部ビット深さ-(Max(QpPrimeTsMin,Qp)-4)/6)が0より大きくない場合、エスケープ・シンボルの使用は無効にされてもよい。
【0110】
3.3次のEGを除く可変長符号化が、エスケープ・シンボルを符号化するために適用されてもよい。
a.一例では、エスケープ・シンボルのバイナリ化は、入力パラメータKをもつ打ち切りされたバイナリ(truncated binary、TB)であってもよい。
b.一例では、エスケープ・シンボルのバイナリ化は、K次のEGであってもよい。ここで、Kは3に等しくない。
i.一例では、エスケープ・シンボルのバイナリ化は、0次のEGであってもよい。
1.あるいはまた、一例では、エスケープ・シンボルのバイナリ化は、1次のEGであってもよい。
2.あるいはまた、一例では、エスケープ・シンボルのバイナリ化は、2次のEGであってもよい。
c.上記の諸例では、Kは整数であってもよく、以下に依存してもよい。
i.SPS/VPS/PPS/ピクチャー・ヘッダ/スライス・ヘッダ/タイル・グループ・ヘッダ/LCU行/LCUのグループ/ブリックにおいて信号伝達されるメッセージ。
ii.内部ビット深さ
iii.入力ビット深さ
iv.内部ビット深さと入力深さの差
v.現在ブロックのブロック寸法
vi.現在ブロックの現在の量子化パラメータ
vii.カラー・フォーマットの指示(4:2:0、4:4:4、RGBまたはYUVなど)
viii.符号化構造(単一ツリーまたはデュアル・ツリーなど)
ix.色成分(ルーマ成分および/またはクロマ成分など)
【0111】
4.エスケープ・シンボルを符号化するための複数のバイナリ化方法が、ビデオ単位(たとえば、シーケンス/ピクチャー/スライス/タイル/ブリック/サブピクチャー/CTU行/CTU/CTB/CB/CU/ピクチャー内のサブ領域)および/またはエスケープ・シンボルの一つまたは複数の値に対して適用されてもよい。
a.一例では、複数のバイナリ化方法のうちの1つをどのようにして選択するかが、ビデオ単位および/またはエスケープ・シンボルの一つまたは複数の値について信号伝達されてもよい。
b.一例では、複数のバイナリ化方法のうちの1つをどのようにして選択するかが、ビデオ単位および/またはエスケープ・シンボルの一つまたは複数の値について導出されてもよい。
c.一例では、1つのビデオ単位および/またはエスケープ・シンボルの一つまたは複数の値について、2つ以上のバイナリ化方法が適用されてもよい。
i.一例では、インデックスまたはフラグが、選択されたバイナリ化方法を知らせるためにエンコード/デコードされてもよい。
【0112】
以下の項目では、pは色成分のシンボル値を表してもよく、bdはビット深さ(たとえば、内部ビット深さまたは入力ビット深さ)を表してもよく、ibdは入力ビット深さを表してもよく、Qpは変換スキップ・ブロックまたは変換ブロックについての量子化パラメータを表してもよい。さらに、ルーマ成分とクロマ成分についてのQPは、異なっていても、同じであってもよい。ビット深さは、所与の色成分に関連付けられていてもよい。
【0113】
5.量子化および/または逆量子化プロセスをどのように適用するかは、ブロックがパレット・モードで符号化されるか否かに依存してもよい。
a.一例では、エスケープ・シンボルについての量子化および/または逆量子化プロセスは、量子化が適用された通常のイントラ/インター符号化されたブロックについて使用されるものとは異なっていてもよい。
【0114】
6.エスケープ・シンボルについての量子化および/または逆量子化プロセスは、ビットシフトを使用してもよい。
a.一例では、エスケープ・シンボルを量子化するために右ビットシフトが使用されてもよい。
i.一例では、エスケープ・シンボルは、f(p,Qp)として信号伝達されてもよく、ここで、pは入力シンボル値(たとえば、入力ルーマ/クロマ・サンプル値)であり、Qpは、対応する色成分についての導出された量子化パラメータである。
1.一例では、関数fはp>>g(Qp)として定義されてもよい。
2.一例では、関数fは(p+(1<<(g(QP)-1))>>g(Qp))として定義されてもよい。
3.一例では、関数fは、(0,(1<<bd)-1,(p+(1<<(g(QP)-1)))>g(Qp))として定義されてもよい。
ii.一例では、エスケープ・シンボルは、h(p)として信号伝達されてもよい。
1.一例では、関数hは、p>>Nとして定義されてもよい。
2.一例では、関数hは、(p+(1<<(N-1)))>>Nとして定義されてもよい。
3.一例では、cu_transquant_bypass_flagが1に等しい場合、Nは0に設定されてもよい。
4.一例では、cu_transquant_bypass_flagが1に等しい場合、Nは(bd-ibd)に等しくてもよい。ここで、bdは内部ビット深さであり、ibdは入力ビット深さである。
5.一例では、関数hはclip(0,(1<<(bd-N)-1,p>>N)として定義されてもよく、ここで、bdは現在の色成分についての内部ビット深さである。
6.一例では、関数hはclip(0,(1<<(bd-N)-1,(p+(1<<(N-1)))>>N)として定義されてもよく、ここで、bdは現在の色成分についての内部ビット深さである。
7.上記の例において、Nは[0,(bd-1)]の範囲であってもよい。
b.一例では、左ビットシフトは、エスケープ・シンボルを逆量子化するために使用されてもよい。
i.一例では、エスケープ・シンボルは、f(p,Qp)として脱量子化されてもよい。ここで、pは、復号されたエスケープ・シンボルであり、Qpは、対応する色成分についての導出された量子化パラメータである。
1.一例では、fはp<<g(Qp)として定義されてもよい。
2.一例では、fは(p<<g(Qp))+(1<<(g(Qp)-1))として定義されてもよい。
ii.一例では、エスケープ・シンボルは、f(p,Qp)として再構成されてもよい。ここで、pは、復号されたエスケープ・シンボルである。
1.一例では、fはclip(0,(1<<bd)-1,p<<g(Qp))として定義されてもよい。
2.一例では、fは、clip(0,(1<<bd)-1,(p<<g(Qp))+(1<<(g(Qp)-1)))として定義されてもよい。
iii.一例では、エスケープ・シンボルはh(p)として再構成されてもよい。
1.一例では、関数hはp<<Nとして定義されてもよい。
2.一例では、関数hは、(p<<N)+(1<<(N-1))として定義されてもよい。
3.一例では、cu_transquant_bypass_flagが1に等しい場合、Nは0に設定されてもよい。
4.一例では、cu_transquant_bypass_flagが1に等しい場合、Nは(bd-ibd)に等しくてもよく、ここで、bdは内部ビット深さであり、ibdは入力ビット深さである。
5.一例では、Nは(max(QpPrimeTsMin,qP)-4)/6に設定され、ここで、qPは復号された量子化パラメータであり、QpPrimeTsMinは変換スキップ・モードのための最小の許容される量子化パラメータである。
a)上記の例では、ルーマとクロマの両方が変換スキップ・モードをもつ場合、変換スキップ・モードのための異なる最小の許容される量子化パラメータが、異なる色成分について適用されてもよい。
6.あるいはまた、上記の諸例について、Nは、min(bd-1,N)のように、さらにクリップされてもよい。
7.上記の例では、Nは[0,(bd-1)]の範囲であってもよい。
【0115】
7.脱量子化として左シフトを適用する場合、エスケープ・シンボルpの再構成オフセットはビット深さ情報に依存してもよい。
a.一例では、それは、内部ビット深さと入力ビット深さの間の差、すなわち、deltaBD=内部ビット深さ-入力ビット深さに依存してもよい。
b.KがdeltaBD以下である場合、再構成された値はp<<Kであってもよい。
c.KがdeltaBDより大きい場合、再構成値は(p<<K)+(1<<(K-1))であってもよい。
d.KがT0以下である場合(たとえば、T0=2)、再構成された値はp<<Kであってもよい。
e.KがT1より大きい場合(たとえば、T1=2)、再構成値は(p<<K)+(1<<(K-1))であってもよい。
f.一例では、項目dおよびeにおけるT0およびT1は、シーケンス/ピクチャー/スライス/タイル/ブリック/サブピクチャー・レベルなどで、ビットストリームにおいて信号伝達されてもよい。
g.一例では、再構成値は、(p<<K)+((1<<(K-1)>>deltaBD<<deltaBD))であってもよい。
h.一例では、再構成値は、((p<<(K+1))+(1<<K))>>(deltaBD+1)<<deltaBD)であってもよい。
i.一例では、deltaBDは、シーケンス/ピクチャー/スライス/タイル/ブリック/サブピクチャー・レベルなどでビットストリームにおいて信号伝達されてもよい。
j.一例では、どの再構成値が使用されるか(たとえば、項目bないしe)は、現在のブロックの量子化パラメータに依存してもよい。
k.一例では、どの再構成値が使用されるか(たとえば、項目bないしe)は、deltaBDの値に依存してもよい。
l.一例では、Kは、g(Qp)に設定されてもよい。
【0116】
8.上記の諸例では、以下が適用されてもよい:
a.一例では、エスケープ・シンボルは、コンテキスト符号化されてもよい。
b.一例では、エスケープ・シンボルはバイパス符号化されてもよい。
c.一例では、g(Qp)は、(Qp-4)/6またはQP/8として定義されてもよい。
i.あるいはまた、g(Qp)はQp/6またはQP/8として定義されてもよい。
ii.あるいはまた、g(Qp)はmax(16,Qp/6)として定義されてもよい。
iii.あるいはまた、g(Qp)はmax(16,(Qp-4)/6)として定義されてもよい。
iv.あるいはまた、g(Qp)はmax((bd-ibd)*6+4,(Qp-4)/6)として定義されてもよい。
v.あるいはまた、g(Qp)はmax(M,(Qp-4)/6)として定義されてもよい。
1.一例では、Mはデコーダに信号伝達されてもよい。
vi.あるいはまた、g(Qp)はmax((M,Qp)-4)/6として定義されてもよい。
1.一例では、MはSPSにおいて示されてもよい。
2.一例では、ルーマ成分およびクロマ成分に同じMまたは異なるMが適用されうる。
3.一例では、Mは(bd-ibd)*6+4に等しくてもよい。
vii.あるいはまた、g(Qp)はQp/6またはQP/8として定義されてもよい。
viii.あるいはまた、g(Qp)は(max(16,Qp)/6)として定義されてもよい。
ix.あるいはまた、g(Qp)は(max(16,Qp)-4)/6として定義されてもよい。
d.一例では、g(Qp)の値は[0,(bd-1)]の範囲であってもよい。
e.一例では、最大関数max(a,i)は(i<=a?a:i)として定義されてもよい。
i.あるいはまた、一例では、最大関数max(a,i)は(i<a?a:i)として定義されてもよい。
f.一例では、Nは整数(たとえば、8または10)であってもよく、以下に依存してもよい。
i.SPS/VPS/PPS/ピクチャー・ヘッダ/スライス・ヘッダ/タイル・グループ・ヘッダ/LCU行/LCUのグループ/ブリックにおいて信号伝達されるメッセージ
ii.内部ビット深さ
iii.入力ビット深さ
iv.内部ビット深さと入力深さの差
v.現在ブロックのブロック寸法
vi.現在ブロックの現在の量子化パラメータ
vii.カラー・フォーマットの指示(4:2:0、4:4:4、RGB、またはYUVなど)
viii.符号化構造(単一ツリーまたはデュアル・ツリーなど)
ix.色成分(ルーマ成分および/またはクロマ成分など)
x.スライス/タイル・グループ・タイプおよび/またはピクチャー・タイプ
g.一例では、Nはデコーダに信号伝達されてもよい。
【0117】
9.エスケープ値についてのQpはクリップされてもよい。
a.一例では、エスケープ値に適用される最低のQpは、min_qp_prime_ts_minus4と等しくてもよい。
b.一例では、エスケープ値に適用される最低のQpは、min_qp_prime_ts_minus4に関係してもよい。
i.一例では、エスケープ値に適用される最低のQpは、min_qp_prime_ts_minus4+4と等しくてもよい。
c.一例では、各色成分についての最低のQpは、SPS/PPS/VPD/DPS/タイル/スライス・ヘッダにおいて示されてもよい。
d.一例では、エスケープ値に適用される最低のQpは、(bd-ibd)*6+4であってもよい。ここで、bdは、内部ビット深さであり、ibdは、ある色成分についての入力ビット深さを示す。
e.一例では、上記の諸例は、ある色成分に適用されてもよい。
【0118】
10.上記の諸例では、エスケープ値についてのクロマQpは、マッピングの前/後にQpを使用してもよい。
【0119】
11.パレット・モードで現在のパレット・インデックスを導出する際に参照インデックスを使用しないことが提案される。
a.一例では、パレット・インデックスは、参照インデックス(たとえば、adjustedRefPaletteIndex)の可能性を排除することなく、直接的に信号伝達されてもよい。
i.あるいはまた、一例では、エンコーダは、参照インデックスが常に現在インデックスと異なることを可能にするように制約されてもよい。そのような場合、パレット・インデックスは、参照インデックスの可能性を排除することによって、信号伝達されてもよい。
b.一例では、パレット・インデックスのバイナリ化は、バイナリ化入力パラメータとして最大パレット・インデックスを用いることを伴う打ち切りされたバイナリ(TB)であってもよい。
c.一例では、パレット・インデックスのバイナリ化は固定長であってもよい。
d.一例では、パレット・インデックスのバイナリ化は、K次のEGであってもよい。
i.一例では、Kは整数(たとえば、1、2または3)であってもよく、以下に依存してもよい
1.SPS/VPS/PPS/ピクチャー・ヘッダ/スライス・ヘッダ/タイル・グループ・ヘッダ/LCU行/LCUのグループ/ブリックにおいて信号伝達されるメッセージ
2.内部ビット深さ
3.入力ビット深さ
4.内部ビット深さと入力深さの差
5.現在ブロックのブロック寸法
6.現在ブロックの現在の量子化パラメータ
7.カラー・フォーマットの指示(4:2:0、4:4:4、RGB、またはYUVなど)
8.符号化構造(単一ツリーまたはデュアル・ツリーなど)
9.色成分(ルーマ成分および/またはクロマ成分など)
e.一例では、上記の諸例は、現在のブロックが少なくとも、1つのエスケープ・サンプルを有する場合にのみ適用されうる。
【0120】
12.現在のパレット・インデックスは、以前の諸パレット・インデックスとは独立して信号伝達されてもよい。
a.一例では、以前の諸パレット・インデックスを使用するかどうか、および/または、どのように使用するかは、現在のブロックにおいてエスケープ・サンプル(単数または複数)があるかどうかに依存してもよい。
【0121】
13.エスケープ・シンボルについてのインデックスから非エスケープ・シンボルについてのインデックスへの導出は許可されなくてもよい。
a.一例では、エスケープ・シンボルが適用され、パレット・インデックスがエスケープ・シンボルについてのインデックスと等しくない場合、それらのシンボルをエスケープ・シンボルとしてデコードすることは許されなくてもよい。
【0122】
14.非エスケープ・シンボルについてのインデックスからエスケープ・シンボルについてのインデックスへの導出は、許されなくてもよい。
a.一例では、エスケープ・シンボルが適用され、パレット・インデックスがエスケープ・シンボルについてのインデックスと等しい場合、それらのシンボルを非エスケープ・シンボルとしてデコードすることは許されなくてもよい。
【0123】
15.導出されたパレット・インデックスは、現在のパレット・テーブル・サイズによってキャップされてもよい。
a.一例では、パレット・インデックスがMaxPaletteIndexより大きい場合、MaxPaletteIndexと等しくなるように修正されてもよい。
【0124】
16.導出されたパレット・インデックスは、エスケープ・シンボルについてのインデックスを除き、現在のパレット・テーブル・サイズによってキャップされてもよい。
a.一例では、エスケープ・シンボルが適用されず、パレット・インデックスがMaxPaletteIndexより大きい場合、MaxPaletteIndexと等しくなるように修正されてもよい。
b.一例では、エスケープ・シンボルが適用され、パレット・インデックスが(MaxPaletteIndex-1)より大きい場合、(MaxPaletteIndex-1)と等しくなるように修正されてもよい。
【0125】
17.エスケープ・シンボルを示すインデックスは、修正されることが許されなくてもよい。
a.一例では、インデックスがMaxPaletteIndexと等しいことは、現在のブロックにエスケープ・シンボルが存在する場合、常に、エスケープ・シンボルを示してもよい。
b.一例では、MaxPaletteIndexと等しくないインデックスは、エスケープ・シンボルを示すインデックスとしてデコードされることはできない。
【0126】
18.参照インデックスと現在のインデックスとの間の差を符号化することが提案される。
a.一例では、0に等しい差は、符号化されることが許されなくてもよい。
b.あるいはまた、パレット符号化されたブロック内の最初のインデックスについて、インデックスは直接符号化されてもよい。
【0127】
19.参照インデックス(Rと記される)と現在のインデックス(Cと記される)との間の差のモジュロを符号化することが提案される。
a.一例では、I=Modulo(C-R,MaxPaletteIndex)が符号化されてもよい。
i.一例では、インデックスは、Modulo(I+R,MaxPaletteIndex)として再構成されてもよい。
ii.一例では、0に等しいModulo(C-R,MaxPaletteIndex)は、ビットストリームにおいて許されなくてもよい。
iii.一例では、cMax=MaxPaletteIndexである打ち切りされたバイナリ符号が、前記値を符号化するために使用されてもよい。
iv.あるいはまた、パレット符号化されたブロック内の最初のインデックスについては、インデックスは直接符号化されてもよい。
b.一例では、I=Modulo(C-R,MaxPaletteIndex)-1が符号化されてもよい。
i.一例では、インデックスは、Modulo(I+1+R,MaxPaletteIndex)として再構成されてもよい。
ii.一例では、0より小さいModulo(C-R,MaxPaletteIndex)-1は、ビットストリームにおいて許されなくてもよい。
iii.一例では、cMax=(MaxPaletteIndex-1)である打ち切りされたバイナリ符号が、値Iを符号化するために使用されてもよい。
iv.あるいはまた、パレット符号化されたブロック内の最初のインデックスについて、Modulo(C-R,MaxPaletteIndex)が符号化されてもよい。
v.あるいはまた、パレット符号化されたブロック内の最初のインデックスについては、インデックスは直接符号化されてもよい。
【0128】
20.パレット・ブロックのデコードの開始時には、参照インデックスRは-1に等しく設定されてもよい。
a.あるいはまた、参照インデックスRは0に等しく設定されてもよい。
【0129】
21.パレット・モードとローカル・デュアル・ツリーを排他的に有効にすることが提案される。
a.一例では、パレット・モードが有効にされている場合、ローカル・デュアル・ツリーは許容されなくてもよい。
i.あるいはまた、一例では、ローカル・デュアル・ツリーが有効にされている場合、パレット・モードは許容されなくてもよい。
b.一例では、ローカル・デュアル・ツリーは、4:4:4のような特定のカラー・フォーマットでは有効にされない。
c.一例では、パレット・モードは、符号化ツリーがMODE_TYPE_INTRAの場合には、許されなくてもよい。
d.ローカル・デュアル・ツリーの使用に基づいてパレット予測子をリセットすることが提案される。
i.一例では、パレット予測子は、単一ツリーがローカル・デュアル・ツリーに切り換えられるときにリセットされてもよい。
ii.一例では、パレット予測子は、ローカル・デュアル・ツリーが単一ツリーに切り換えられるときにリセットされてもよい。
iii.あるいはまた、さらに、パレット予測子における諸項目の使用(たとえば、palette_predictor_run)を信号伝達するかどうかは、ツリー・タイプに依存してもよい。
1.一例では、ローカル・デュアル・ツリーと単一ツリーとの間の切り換えに出会うとき、パレット予測子における諸項目の使用(たとえば、palette_predictor_run)の信号伝達は省略される。
【0130】
22.ローカル・デュアル・ツリーが適用されるとき、パレット予測テーブルにおける反復されるパレット項目を除去することが提案される。
a.一例では、パレット予測テーブルは、ローカル・デュアル・ツリーが適用される場合にリセットされてもよい。
i.あるいはまた、一例では、デコーダは、ローカル・デュアル・ツリーが適用されるときに、予測テーブル内のすべてのパレット項目をチェックし、反復される項目を除去してもよい。
ii.あるいはまた、一例では、デコーダは、ローカル・デュアル・ツリーが適用されるときに、予測テーブル内の部分的なパレット項目をチェックし、反復された項目を除去してもよい。
iii.一例では、パレット項目をチェックする際に、フル剪定(full pruning)または部分剪定(partial pruning)が適用されてもよい。
1.一例では、選択された項目の集合がチェックされてもよい(たとえば、該集合は、パレット予測子における全部のパレット項目または部分的なパレット項目を含む)。
a)一例では、フル剪定または部分剪定は、選択された項目に対して適用されてもよい。
2.一例では、フル剪定は、1つの項目が、追加されうるすべての項目と比較されることを表してもよい。
3.一例では、部分剪定は、1つの項目が、追加されうる部分的な項目と比較されることを表してもよい。
iv.一例では、2つのパレット項目が同じであるかどうかは、それらのルーマ成分値が同じであるかどうかだけに基づいていてもよい。
1.あるいはまた、一例では、2つのパレット項目が同じであるかどうかは、それらのクロマ成分値が同じであるかどうかのみに基づいていてもよい。
2.あるいはまた、一例では、2つのパレット項目が同じであるかどうかは、それらのルーマとクロマ成分値の両方が同じであるかどうかに基づいていてもよい。
v.一例では、上記の方法は、ローカル・デュアル・ツリーがルーマ成分を処理し始めるときにのみ、ルーマ・ブロックに対して適用されてもよい。
1.あるいはまた、一例では、上記の方法は、ローカル・デュアル・ツリーがクロマ成分を処理し始めるときにのみ、クロマ・ブロックに適用されてもよい。
vi.あるいはまた、一例では、エンコーダは、項目の3つの成分が異なる場合に、2つのパレット項目を異なると考える制約条件を追加してもよい。
【0131】
23.現在のパレット項目が、パレット予測テーブルの項目と異なる数の色成分をもつ場合、パレット予測テーブルは使用されることが許されなくてもよい。
a.一例では、パレット予測テーブル内のすべての項目についての再利用フラグ(reused flag)が真であるとマークされることがありうるが、現在のパレット項目が予測とは異なる数の色成分を有する場合には、現在のブロックについては使用されなくてもよい。
b.一例では、パレット予測テーブル内のすべての項目についての再利用フラグは、現在のパレット項目が予測とは異なる数の色成分を有する場合には、偽としてマークされてもよい。
【0132】
24.予測テーブルと現在のパレット・テーブルが異なる色成分(単数または複数)をもつ場合、パレット予測テーブルは使用されることが許されなくてもよい。
a.一例では、パレット予測テーブル内のすべての項目についての再利用フラグが真であるとマークされることがありうるが、予測テーブルと現在のパレット・テーブルが異なる色成分を有する場合には、現在のブロックについては使用されなくてもよい。
b.一例では、パレット予測テーブル内のすべての項目についての再利用フラグは、予測テーブルと現在のパレット・テーブルが異なる色成分を有する場合には、偽としてマークされてもよい。
【0133】
25.エスケープ・シンボルは、たとえば以前に符号化されたエスケープ・シンボルに基づいて、予測的に符号化されてもよい。
a.一例では、ある成分のエスケープ・シンボルは、同じ色成分における符号化された値によって予測されてもよい。
i.一例では、エスケープ・シンボルは、同じ成分における前に符号化されたあるエスケープ・シンボルを予測子として使用してもよく、それらの間の残差が信号伝達されてもよい。
ii.代替的に、エスケープ・シンボルは、同じ成分における前に符号化されたK番目のエスケープ・シンボルを予測子として使用してもよく、それらの間の残差が信号伝達されてもよい。
iii.あるいはまた、エスケープ・シンボルは、同じ成分における複数の(たとえば、K個の)符号化されたエスケープ・シンボルから予測されてもよい。
1.一例では、Kは整数(たとえば、1、2または3)であってもよく、以下に依存してもよい
a)SPS/VPS/PPS/ピクチャー・ヘッダ/スライス・ヘッダ/タイル・グループ・ヘッダ/LCU行/LCUのグループ/ブリックにおいて信号伝達されるメッセージ
b)内部ビット深さ
c)入力ビット深さ
d)内部ビット深さと入力深さの差
e)現在ブロックのブロック寸法
f)現在ブロックの現在の量子化パラメータ
g)カラー・フォーマットの指示(4:2:0、4:4:4、RGB、またはYUVなど)
h)符号化構造(単一ツリーまたはデュアル・ツリーなど)
i)色成分(ルーマ成分および/またはクロマ成分など)
b.一例では、ある成分のエスケープ・シンボルは、別の成分の符号化された値によって予測されてもよい。
c.一例では、ピクセルは複数の色成分を有してもよく、ピクセルがエスケープ・シンボルとして扱われる場合、ある成分の値は、他の成分のサンプルの値によって予測されてもよい。
i.一例では、エスケープ・シンボルのU成分が、そのシンボルのV成分によって予測されてもよい。
d.一例では、上記の諸方法は、ある色成分に対して(たとえば、ルーマ成分またはクロマ成分に対して)、または符号化された情報などに基づくある種の条件のもとで適用されるだけであってもよい。
【0134】
26.パレットに関連する構文要素の信号伝達は、パレットの最大サイズ、および/またはブロック寸法、および/または無損失モードの使用および/または量子化パラメータ(QP)に依存してもよい。
a.一例では、無損失符号ブロックの場合および/またはQPが閾値以下である場合および/または変換スキップが適用される場合、ブロックのパレット・サイズはブロック寸法と等しいと推定される。
i.あるいはまた、無損失符号ブロックの場合および/またはQPが閾値以下である場合、ブロックのパレット・サイズはmin(ブロック寸法,最大パレット・サイズ)に等しいと推定される。
b.ブロック内のエスケープ・サンプルの使用を信号伝達するかどうかは、ブロック寸法および/または無損失符号化モードの使用(たとえば、QPが所与の値(たとえば4)に等しいか否か;および/またはtransform_skip_flagが1に等しいか;またはtransquant_bypass_flagがtrueに等しいか否か)および/またはQPに依存してもよい。
i.あるいはまた、さらに、エスケープ・サンプルの使用を信号伝達するかどうかは、現在のブロックのブロック寸法と現在のパレット・サイズとの間の関係に依存してもよい。
1.一例では、それを信号伝達するかどうかは、ブロック寸法が現在のパレット・サイズに等しいかどうかに依存してもよい。
a)あるいはまた、さらに、ブロック寸法が現在のパレット・サイズに等しい場合、それは信号伝達されず、偽であると推定される。
2.あるいはまた、それを信号伝達するかどうかは、ブロック寸法が現在のパレット・サイズより小さくないかどうかに依存してもよい。
a)あるいはまた、さらに、ブロック寸法が現在のパレット・サイズよりも小さくない場合、それは信号伝達されず、偽であると推定される。
ii.あるいはまた、さらに、エスケープ・サンプルの使用を信号伝達するかどうかは、ブロック寸法、パレットの最大サイズ、および/または無損失モードの間の関係に依存してもよい。
1.一例では、あるブロックが無損失モードで符号化され、かつブロック寸法がパレットの最大サイズより小さい場合、エスケープ・サンプルの使用の信号伝達は省略されてもよく、それは偽であると推定される。
2.一例では、あるブロックが閾値より大きくないQPで符号化され、かつブロック寸法がパレットの最大サイズより小さい場合、エスケープ・サンプルの使用の信号伝達は省略されてもよく、それは偽であると推定される。
iii.エスケープ・サンプルの使用の指示(たとえば、palette_escape_val_present_flag)は、ある種の条件下では推定されてもよい。
1.一例では、現在のブロック・サイズが最大許容されるパレット・サイズ(たとえば、palette_max_size)以下である場合、エスケープ・サンプルの使用の指示は偽に推定されてもよい。
a)あるいはまた、一例では、現在のブロック・サイズが最大許容されるパレット・サイズより大きい場合、エスケープ・サンプルの使用の指示が信号伝達されてもよい。
b)あるいはまた、一例では、現在のブロック・サイズが最大許容されるパレット・サイズより大きい場合、エスケープ・サンプルの使用の指示は偽に推定されてもよい。
2.一例では、上記の諸方法は、無損失符号化条件の下で適用されうる。
3.一例では、上記の諸方法は、無損失符号化されるCUに適用されうる。
4.一例では、現在のブロック・サイズが現在のブロックのパレット・サイズ以下である場合、エスケープ・サンプルの使用の指示は偽に推定されてもよい。
5.一例では、エスケープ・サンプルの使用フラグが推定されるとき、対応する構文要素、たとえばpalette_escape_val_present_flagはビットストリームにおいてスキップされてもよい。
【0135】
27.パレット・モードにおけるランレングス符号化のためのコンテキストは、パレット項目をインデックス付けするためのパレット・インデックスに依存してもよい。
a.一例では、デコーダでのインデックス調整プロセス(セクション2.1.3において述べた)の後のパレット・インデックスが、長さ要素のプレフィックス(たとえば、palette_run_prefix)のためのコンテキストを導出するために用いられてもよい。
b.あるいはまた、一例では、項目13で定義されたIは、長さ要素のプレフィックス(たとえば、palette_run_prefix)のためのコンテキストを導出するために、パレット・インデックスを置き換えてもよい。
【0136】
28.量子化パラメータ予測子のための導出プロセスにおいて使用される左近傍ブロックおよび/または上近傍ブロックの位置を、モード/MV(たとえばMPM)導出において使用される近傍左ブロックおよび/または上近傍ブロックの位置と整列させることが提案される。
a.量子化パラメータのための導出プロセスで使用される左近傍ブロックおよび/または上近傍ブロックの位置は、マージ/AMVP候補リスト導出プロセスにおいて使用される位置と整列されてもよい。
b.一例では、量子化パラメータのための導出プロセスにおいて使用される近傍左ブロックおよび/または上ブロックの位置は、
図8に示される左/上の隣接ブロックであってもよい。
【0137】
29.ブロック・レベルのQP差は、エスケープ・サンプルが現在のブロックに存在するかどうかに関係なく、送信されてもよい。
a.一例では、ブロック・レベルのQP差を送信するかどうか、および/またはどのように送信するかは、パレット以外のモードで符号化されたブロックに従うことができる。
b.一例では、ブロック・レベルのQP差は、あるパレット・ブロックについて常に送信されないのでもよい。
c.一例では、ブロック幅が閾値よりも大きい場合、ブロック・レベルのQP差がパレット・ブロックについて送信されてもよい。
d.一例では、ブロック高さが閾値よりも大きい場合、ブロック・レベルのQP差がパレット・ブロックについて送信されてもよい。
e.一例では、ブロック・サイズが閾値より大きい場合、ブロック・レベルのQP差がパレット・ブロックについて送信されてもよい。
f.一例では、上記の諸例はルーマ・ブロックまたはクロマ・ブロックにのみ適用されうる。
【0138】
30.パレット・ブロックについての符号化ブロック・フラグ(coded block flag、CBF)(たとえば、cbf_luma、cbf_cb、cbf_cr)のうちの一つまたは複数が1に設定されてもよい。
a.一例では、パレット・ブロックについてのCBFは、常に1に等しく設定されてもよい。
b.パレット・ブロックについてのCBFのうちの一つまたは複数は、エスケープ・ピクセルが現在のブロックに存在するかどうかに依存してもよい。
i.一例では、パレット・ブロックがエスケープ・サンプルを有する場合、そのcbfを1に設定されてもよい。
ii.あるいはまた、パレット・ブロックがエスケープ・サンプルを有しない場合、そのcbfは0に設定されてもよい。
c.あるいはまた、近傍のパレット符号化されたブロックにアクセスするとき、それは、1に等しいCBFを有するイントラ符号化されたブロックとして扱われてもよい。
【0139】
31.パレット・ブロックに適用されるルーマおよび/またはクロマQPと、そのブロックについて導出されるQP(たとえば、JVET-O2001-vE仕様におけるQpYまたはQp'Y)との間の差は、諸パレット・ブロックのための固定された値に等しく設定されてもよい。
a.一例では、ルーマおよび/またはクロマQPオフセットが0に設定されてもよい。
b.一例では、CbとCrについてのクロマQPオフセットが異なっていてもよい。
c.一例では、ルーマQPオフセットとクロマQPオフセットは異なっていてもよい。
d.一例では、クロマQPオフセット(単数または複数)がDPS/VPS/SPS/PPS/スライス/ブリック/タイル・ヘッダにおいて示されてもよい。
【0140】
32.NumPltIdxで示される、現在のブロックについて明示的に信号伝達されるまたは推測されるパレット・インデックスの数(たとえば、num_palette_indices_minus1+1)は、K以上に制約されてもよい。
a.一例では、Kは、現在のパレット・サイズ、エスケープ・フラグ、および/またはパレット符号化されたブロックの他の情報に基づいて決定されてもよい。Sを現在のブロックの現在のパレット・サイズ、Eをエスケープ存在フラグ(たとえば、palette_escape_val_present_flag)の値とする。BlkSを現在のブロック・サイズとする。
i.一例では、KはSに等しく設定されてもよい。
ii.あるいはまた、一例では、Kは、S+Eに等しく設定されてもよい。
iii.あるいはまた、一例では、Kは(予測されたパレット項目の数+信号伝達されたパレット項目の数+palette_escape_val_present_flag)(たとえば、NumPredictedPaletteEntries+num_signalled_palette_entries+palette_escape_val_present_flag)に等しく設定されてもよい。
iv.あるいはまた、一例では、Kは、(パレット・インデックスの最大値(たとえば、MaxPaletteIndex)+1)に等しく設定されてもよい。
v.あるいはまた、一例では、Kはデコーダに信号伝達されてもよい。
i.一例では、Kは固定された整数値であってもよい。
ii.一例では、Kは整数であり、以下に基づいて決定されてもよい
1.以前に符号化されたブロック/現在のブロックのデコードされた情報
2.現在ブロック/近傍(隣接または非隣接)ブロックの量子化パラメータ
3.ビデオ・コンテンツ(たとえば、スクリーン・コンテンツまたは自然コンテンツ)
4.DPS/SPS/VPS/PPS/APS/ピクチャー・ヘッダ/スライス・ヘッダ/タイル・グループ・ヘッダ/最大符号化単位(Largest coding unit、LCU)/符号化単位(CU)/LCU行/LCUのグループ/TU/PUブロック/ビデオ符号化単位において信号伝達されるメッセージ
5.CU/PU/TU/ブロック/ビデオ符号化単位の位置
6.現在ブロックおよび/またはその近傍ブロックのブロック寸法
7.現在ブロックおよび/またはその近傍ブロックのブロック形状
8.カラー・フォーマットの指示(4:2:0、4:4:4、RGB、またはYUVなど)
9.符号化ツリー構造(デュアル・ツリーまたは単一ツリーなど)
10.スライス/タイル・グループ・タイプおよび/またはピクチャー・タイプ
11.色成分(たとえば、ルーマ成分および/またはクロマ成分に対してのみ適用されうる)
12.時間的レイヤーID
13.規格のプロファイル/レベル/層(Tier)
b.一例では、num_palette_indices_minus1の代わりに(NumPltIdx-K)が信号伝達/パースされてもよい。
i.あるいはまた、さらに、それは、(S+E)が1より小さくない場合にのみ、信号伝達されてもよい。
ii.一例では、(NumPltIdx-K)の値は、バイナリ化されたビン・ストリングがプレフィックス(たとえば、打ち切りされた単進(truncated unary))および/または第m EG符号をもつサフィックスを有していてもよいというバイナリ化方法で信号伝達されてもよい。
iii.一例では、(NumPltIdx-K)の値は、打ち切りされたバイナリ・バイナリ化法(truncated binary binarization method)で信号伝達されてもよい。
iv.一例では、(NumPltIdx-K)の値は、打ち切りされた単進バイナリ化法(truncated unary binarization method)で信号伝達されてもよい。
v.一例では、(NumPltIdx-K)の値は、第m EGバイナリ化法(m-th EG binarization method)で信号伝達されてもよい。
vi.一例では、BlkS-Kの値は、打ち切りされた単進/打ち切りされたバイナリ・バイナリ化方法に対する最大値として使用されるなど、上記の諸バイナリ化方法における入力パラメータ(たとえば、cMax)として使用されてもよい。
c.一例では、適合ビットストリームは、NumPltIdxがK以上であることを満たす。
d.一例では、適合ビットストリームは、NumPltIdxがK'以下であることを満たす。
i.一例では、K'は(ブロック幅*ブロック高さ)に設定される。
ii.一例では、K'は(ブロック幅*ブロック高さ-K)に設定される。
【0141】
33.上記の諸方法を適用するかどうか、および/または、どのように適用するかは、下記に基づいていてもよい:
a.ビデオ・コンテンツ(たとえば、スクリーン・コンテンツまたは自然コンテンツ)
b.DPS/SPS/VPS/PPS/APS/ピクチャー・ヘッダ/スライス・ヘッダ/タイル・グループ・ヘッダ/最大符号化単位(Largest coding unit、LCU)/符号化単位(CU)/LCU行/LCUのグループ/TU/PUブロック/ビデオ符号化単位において信号伝達されるメッセージ
c.CU/PU/TU/ブロック/ビデオ符号化単位の位置
d.現在ブロックおよび/またはその近傍ブロックのブロック寸法
e.現在ブロックおよび/またはその近傍ブロックのブロック形状
f.カラー・フォーマットの指示(4:2:0、4:4:4、RGB、またはYUVなど)
g.符号化ツリー構造(デュアル・ツリーまたは単一ツリーなど)
h.スライス/タイル・グループ・タイプおよび/またはピクチャー・タイプ
i.色成分(たとえば、ルーマ成分および/またはクロマ成分に対してのみ適用されうる)
j.時間的レイヤーID
k.規格のプロファイル/レベル/層(Tier)
l.現在のブロックが1つのエスケープ・サンプルをもつか否か
i.一例では、上記の諸方法は、現在のブロックが少なくとも、1つのエスケープ・サンプルを有する場合にのみ適用されうる。
m.現在のブロックが無損失モードで符号化されるか否か(たとえば、cu_transquant_bypass_flag)
i.一例では、上記の諸方法は、現在のブロックが無損失モードで符号化されない場合にのみ適用されうる。
n.無損失符号化が有効にされているか否か(たとえば、transquant_bypass_enabled、cu_transquant_bypass_flag)
i.一例では、上記の諸方法は、無損失符号化が無効にされている場合にのみ適用されうる。
【0142】
ライン・ベースのCGパレット・モード関連
34.これらがエスケープ・サンプルであるかどうかは、各CGについて示されてもよい。
a.一例では、各CGについて、構文要素、たとえばpalette_escape_val_present_flagが、エスケープ・サンプルが存在するか否かを示すためにビットストリームにおいて送られてもよい。
i.一例では、palette_escape_val_present_flagは、CGサイズ、現在のブロック中のデコードされたサンプルの数、および/または現在のブロックのパレット・サイズに基づいて推定される、または信号伝達されるのでもよい。
b.一例では、現在のCGについて、エスケープ・サンプルが存在しない場合、インデックス調整が適用されてもよい。
c.一例では、現在のCGについて、エスケープ・サンプルが存在する場合、インデックス調整は適用されるべきではない。
d.あるいはまた、上記の諸方法は、現在のブロックがエスケープ・サンプルを含む場合にのみ適用されうる。
【0143】
35.ライン・ベースのCGパレット・モードでは、上のインデックスをコピーの使用の指示(たとえばcopy_above_palette_indices_flag)は、コンテキスト符号化されなくてもよい。
e.あるいはまた、一例では、上のインデックスをコピーの使用の指示(たとえば、copy_above_palette_indices_flag)は、いかなるコンテキストも使用することなくバイパス符号化されてもよい。
i.一例では、上のインデックスをコピーの使用の指示(たとえば、copy_above_palette_indices_flag)および現在のセグメントにおけるコピー・フラグ(たとえば、run_copy_flag)は、インターリーブされて信号伝達されてもよい。
f.一例では、上のインデックスをコピーの使用の指示(たとえば、copy_above_palette_indices_flag)は、現在のセグメントにおけるすべてのコピー・フラグ(たとえば、run_copy_flag)の後に符号化されてもよい。
g.一例では、上のインデックスをコピーの使用の指示(たとえば、copy_above_palette_indices_flag)および信号伝達されるインデックスは、インターリーブされて符号化されてもよい。
h.上記の諸方法は、他のパレット・ベースの符号化モードにも適用されうる。
【0144】
36.コピー・フラグ、ラン・タイプ、上のインデックスをコピーの使用の指示、およびエスケープ値は、インターリーブされて信号伝達されてもよい。
i.一例では、第1のコピー・フラグ、ラン・タイプ、上のインデックスをコピーの使用の指示、およびエスケープ値が順に符号化されてもよく;続いて第2のコピー・フラグ、ラン・タイプ、上のインデックスをコピーの使用の指示、およびエスケープ値が符号化されてもよい。
j.あるいはまた、さらに、所与のCGについて、上記の方法が適用されてもよい。
【0145】
37.ライン・ベースのCGパレット・モードは、Thと記される所与の閾値以下のサイズのブロックについては無効にされてもよい。
k.一例では、Thは、ライン・ベースのCGパレット・モードにおけるセグメントのサンプル数に等しい。
l.一例では、Thは固定した数(たとえば16)であり、以下に基づいてもよい
i.ビデオ・コンテンツ(たとえば、スクリーン・コンテンツまたは自然コンテンツ)
ii.DPS/SPS/VPS/PPS/APS/ピクチャー・ヘッダ/スライス・ヘッダ/タイル・グループ・ヘッダ/最大符号化単位(Largest coding unit、LCU)/符号化単位(CU)/LCU行/LCUのグループ/TU/PUブロック/ビデオ符号化単位において信号伝達されるメッセージ
iii.CU/PU/TU/ブロック/ビデオ符号化単位の位置
iv.現在ブロックおよび/またはその近傍ブロックのブロック寸法
v.現在ブロックおよび/またはその近傍ブロックのブロック形状
vi.カラー・フォーマットの指示(4:2:0、4:4:4、RGB、またはYUVなど)
vii.符号化ツリー構造(デュアル・ツリーまたは単一ツリーなど)
viii.スライス/タイル・グループ・タイプおよび/またはピクチャー・タイプ
ix.色成分(たとえば、ルーマ成分および/またはクロマ成分に対してのみ適用されうる)
x.時間的レイヤーID
xi.規格のプロファイル/レベル/層(Tier)
xii.現在のブロックの量子化パラメータ
xiii.現在のブロックが1つのエスケープ・サンプルをもつか否か
xiv.無損失符号化が有効にされているか否か(たとえば、transquant_bypass_enabled、cu_transquant_bypass_flag)
【0146】
BDPCM関連
38.1つのブロックがBDPCMで符号化され、それが複数の変換ブロックまたはサブブロックに分割される場合、残差予測はブロック・レベルで行われてもよく、残差の信号伝達はサブブロック/変換ブロック・レベルで行われる。
a.あるいはまた、さらに、あるサブブロックの再構成は、別のサブブロックの再構成プロセスにおいては許可されない。
b.あるいはまた、残差予測および残差の信号伝達は、サブブロック/変換ブロック・レベルで行われる。
i.このようにして、あるサブブロックの再構成は、別のサブブロックの再構成プロセスにおいて利用されうる。
【0147】
クロマQPテーブル関連
39.所与のインデックスについて、joint_cb_crモードについてのクロマQPテーブルの値は、CbについてのクロマQPテーブルの値とCrについてのクロマQPテーブルの値の両方によって制約されうる。
c.一例では、joint_cb_crモードについてのクロマQPテーブルの値の値は、CbについてのクロマQPテーブルの値とCrについてのクロマQPテーブルの値との間(両端含む)に制約されうる。
【0148】
ブロッキング解除関連
40.ブロッキング解除におけるMVの比較は、代替的な半画素補間フィルタが使用されるかどうか(たとえば、JVET-O2001-vE仕様におけるhpelIfIdxによって示される)に依存してもよい。
d.一例では、異なる補間フィルタを使用するブロックは、異なるMVを有するものとして扱われてもよい。
e.一例では、代替的な半画素補間フィルタが関与する場合、ブロッキング解除比較のためにMV差に一定のオフセットが加算されてもよい。
【0149】
一般的なクレーム
41.上記の諸方法を適用するかどうか、および/または、どのように適用するかは下記に基づいていてもよい:
a.ビデオ・コンテンツ(たとえば、スクリーン・コンテンツまたは自然コンテンツ)
b.DPS/SPS/VPS/PPS/APS/ピクチャー・ヘッダ/スライス・ヘッダ/タイル・グループ・ヘッダ/最大符号化単位(Largest coding unit、LCU)/符号化単位(CU)/LCU行/LCUのグループ/TU/PUブロック/ビデオ符号化単位において信号伝達されるメッセージ
c.CU/PU/TU/ブロック/ビデオ符号化単位の位置
d.現在ブロックおよび/またはその近傍ブロックのブロック寸法
e.現在ブロックおよび/またはその近傍ブロックのブロック形状
f.現在ブロックの量子化パラメータ
g.カラー・フォーマットの指示(4:2:0、4:4:4、RGB、またはYUVなど)
h.符号化ツリー構造(デュアル・ツリーまたは単一ツリーなど)
i.スライス/タイル・グループ・タイプおよび/またはピクチャー・タイプ
j.色成分(たとえば、ルーマ成分および/またはクロマ成分に対してのみ適用されうる)
k.時間的レイヤーID
l.規格のプロファイル/レベル/層(Tier)
m.現在のブロックが1つのエスケープ・サンプルをもつか否か
i.一例では、上記の諸方法は、現在のブロックが少なくとも、1つのエスケープ・サンプルを有する場合にのみ適用されうる。
n.現在のブロックが無損失モードで符号化されるか否か(たとえば、cu_transquant_bypass_flag)
ii.一例では、上記の諸方法は、現在のブロックが無損失モードで符号化されない場合にのみ適用されうる。
o.無損失符号化が有効にされているか否か(たとえば、transquant_bypass_enabled、cu_transquant_bypass_flag)
【0150】
5. 実施形態
実施形態は、JVET-O2001-vEに基づく。新しく追加されたテキストは、二重括弧で囲まれる。たとえば、{{a}}は、"a"が追加されたことを示す。削除されるテキストは、二重ブラケットで囲まれる。たとえば、[[b]]は、"b"が削除されることを示す。
【0151】
5.1 実施形態#1
パレット・モードについてのデコード・プロセス
このプロセスへの入力は以下の通り:
・現在のピクチャーの左上のルーマ・サンプルに対して現在のブロックの左上のルーマ・サンプルを指定する位置(xCb,yCb)
・パレット・テーブルにおける最初の色成分を指定する変数startComp
・現在のブロックの色成分を指定する変数cIdx、
・現在のブロックの幅と高さをそれぞれ指定する2つの変数nCbWとnCbH
このプロセスの出力は、ブロックについての再構成されたサンプル値を指定する配列recSamples[x][y]であり、x=0..nCbW-1、y=0..nCbH-1
【0152】
cIdxの値に依存して、変数nSubWidthおよびnSubHeightは次のように導出される:
・cIdxが0に等しい場合、nSubWidthは1に設定され、nSubHeightは1に設定される。
・それ以外の場合、nSubWidthはSubWidthCに設定され、nSubHeightはSubHeightCに設定される。
【0153】
位置(xCb,yCb)における再構成されたサンプル配列recSamplesの(nCbW×nCbH)ブロックは、recSamples[x][y](x=0..nCTbW-1およびy=0..nCbH-1)によって表され、0からnCTbW-1の範囲(両端含む)における各xおよび0からnCbH-1の範囲(両端含む)における各yについてのrecSamples[x][y]の値は、以下のように導出される:
・変数xLおよびyLは次のように導出される:
xL=palette_transpose_flag ? x*nSubHeight : x*nSubWidth (8-268)
yL=palette_transpose_flag ? y*nSubWidth : y*nSubHeight (8-269)
・変数bIsEscapeSampleは、次のように導出される:
・PaletteIndexMap[xCb+xL][yCb+yL]がMaxPaletteIndexに等しく、palette_escape_val_present_flagが1に等しい場合、bIsEscapeSampleは1に等しく設定される。
・それ以外の場合、bIsEscapeSampleは0に等しく設定される。
・bIsEscapeSampleが0に等しい場合、以下が適用される:
recSamples[x][y]=CurrentPaletteEntries[cIdx][PaletteIndexMap[xCb+xL][yCb+yL]] (8-270)
・それ以外の場合、cu_transquant_bypass_flagが1に等しい場合、以下が適用される:
recSamples[x][y]=PaletteEscapeVal[cIdx][xCb+xL][yCb+yL] (8-271)
・それ以外の場合(bIsEscapeSampleが1に等しく、cu_transquant_bypass_flagが0に等しい)、次の順序付けられたステップが適用される:
【0154】
1.量子化パラメータqPは次のように導出される:
・cIdxが0に等しい場合、
qP=Max(0,Qp'Y) (8-272)
・それ以外で、cIdxが1に等しい場合、
qP=Max(0,Qp'Cb) (8-273)
・それ以外の場合(cIdxが2に等しい)、
qP=Max(0,Qp'Cr) (8-274)
2.変数bitDepthは次のように導出される:
bitDepth=(cIdx==0) ? BitDepthY : BitDepthC (8-275)
3.[[リストlevelScale[]はlevelScale[k]={40,45,51,57,64,72}として指定される。ここで、k=0..5]]
4.下記が適用される:
[[tmpVal=(PaletteEscapeVal[cIdx][xCb+xL][yCb+yL]*levelScale[qP%6])<<(qP/6)+32)>>6 (8-276)]]
{{Tは、成分cIdxについて(internal_bit_depth-input_bit_depth)〔内部ビット深さ-入力ビット深さ〕に等しく設定される。
Nbits=max(T,(qP-4)/6)
・NbitsがTに等しい場合、
recSamples[x][y]=PaletteEscapeVal[cIdx][xCb+xL][yCb+yL]<<Nbits
・それ以外の場合、
recSamples[x][y]=(PaletteEscapeVal[cIdx][xCb+xL][yCb+yL]<<Nbits)+(1<<(Nbits-1)}}
[[recSamples[x][y]=Clip3(0,(1<<bitDepth)-1,tmpVal) (8-277)]]
【0155】
以下の条件:
・cIdxが0に等しく、numCompsが1に等しい;
・cIdxが2に等しい
のいずれかが真である場合、
変数PredictorPaletteSize[startComp]と配列PredictorPaletteEntriesは次のように導出または修正される:
【表9】
PredictorPaletteSize[startComp]の値が0からPaletteMaxPredictorSizeまでの範囲(両端含む)であることはビットストリーム適合性の要件である。
【0156】
5.2 実施形態#2
この実施形態は、パレット・インデックス導出を記載する。
パレット符号化のセマンティクス
[[変数adjustedRefPaletteIndex]は次のように導出される:
【表10】
CopyAboveIndicesFlag[xC][yC]が0に等しい場合、変数CurrPaletteIndexは次のように導出される:
if(CurrPaletteIndex>=adjustedRefPaletteIndex)
CurrPaletteIndex++]]
【0157】
palette_idx_idcについてのバイナリ化プロセス
このプロセスへの入力は、構文要素palette_idx_idcについてのバイナリ化の要求と変数MaxPaletteIndexである。
このプロセスの出力は、前記構文要素のバイナリ化である。
変数cMaxは次のように導出される:
・[[このプロセスが現在のブロックについて初めて呼び出される場合、]]cMaxはMaxPaletteIndexに等しく設定される。
・[[それ以外の場合(このプロセスが現在のブロックについて初めて呼び出されたのでない)、cMaxはMaxPaletteIndexから1を引いたものに等しく設定される。]]
palette_idx_idcについてのバイナリ化は、cMaxで節9.3.3.4で規定されているTBバイナリ化プロセスを呼び出すことによって導出される。
【0158】
【0159】
8.4.5.3 パレット・モードについてのデコード・プロセス
このプロセスへの入力は以下の通り:
・現在のピクチャーの左上のルーマ・サンプルに対して現在のブロックの左上のルーマ・サンプルを指定する位置(xCb,yCb)
・パレット・テーブルにおける最初の色成分を指定する変数startComp
・現在のブロックの色成分を指定する変数cIdx、
・現在のブロックの幅と高さをそれぞれ指定する2つの変数nCbWとnCbH
このプロセスの出力は、ブロックについての再構成されたサンプル値を指定する配列recSamples[x][y]であり、x=0..nCbW-1、y=0..nCbH-1
【0160】
cIdxの値に依存して、変数nSubWidthおよびnSubHeightは次のように導出される:
……
・それ以外の場合(bIsEscapeSampleが1に等しく、cu_transquant_bypass_flagが0に等しい)、次の順序付けられたステップが適用される:
【0161】
5.量子化パラメータqPは次のように導出される:
・cIdxが0に等しい場合、
qP=Max(0,Qp'Y) (8-272)
・それ以外で、cIdxが1に等しい場合、
qP=Max(0,Qp'Cb) (8-273)
・それ以外の場合(cIdxが2に等しい)、
qP=Max(0,Qp'Cr) (8-274)
6.変数bitDepthは次のように導出される:
bitDepth=(cIdx==0) ? BitDepthY : BitDepthC (8-275)
3.[[リストlevelScale[]はlevelScale[k]={40,45,51,57,64,72}として指定される。ここで、k=0..5]]
4.下記が適用される:
[[tmpVal=(PaletteEscapeVal[cIdx][xCb+xL][yCb+yL]*levelScale[qP%6])<<(qP/6)+32)>>6 (8-276)]]
{{shift=(max(QpPrimeTsMin,qP)-4)/6
tmpVal=(PaletteEscapeVal[cIdx][xCb+xL][yCb+yL]<<shift)}}
recSamples[x][y]=Clip3(0,(1<<bitDepth)-1,tmpVal) (8-277)
【0162】
5.4 実施形態#4
copy_above_palette_indices_flagが1に等しいことは、パレット・インデックスが、水平横断走査が使用される場合は上の行における同じ位置、または垂直横断走査が使用される場合は左の列における同じ位置にあるパレット・インデックスに等しいことを指定する。copy_above_palette_indices_flagが0に等しいことは、サンプルのパレット・インデックスの指示がビットストリームにおいて符号化されるか、または推定されることを指定する。
……
変数adjustedRefPaletteIndexは次のように導出される:
【表12】
CopyAboveIndicesFlag[xC][yC]が0に等しい場合、変数CurrPaletteIndexは次のように導出される:
if(CurrPaletteIndex>=adjustedRefPaletteIndex)
CurrPaletteIndex++ (7-158)
【0163】
5.5 実施形態#5
【表13】
8.4.5.3 パレット・モードについてのデコード・プロセス
このプロセスへの入力は以下の通り:
・現在のピクチャーの左上のルーマ・サンプルに対して現在のブロックの左上のルーマ・サンプルを指定する位置(xCb,yCb)
・パレット・テーブルにおける最初の色成分を指定する変数startComp
・現在のブロックの色成分を指定する変数cIdx、
・現在のブロックの幅と高さをそれぞれ指定する2つの変数nCbWとnCbH
このプロセスの出力は、ブロックについての再構成されたサンプル値を指定する配列recSamples[x][y]であり、x=0..nCbW-1、y=0..nCbH-1
【0164】
cIdxの値に依存して、変数nSubWidthおよびnSubHeightは次のように導出される:
……
・それ以外の場合(bIsEscapeSampleが1に等しく、cu_transquant_bypass_flagが0に等しい)、次の順序付けられたステップが適用される:
【0165】
9.量子化パラメータqPは次のように導出される:
・cIdxが0に等しい場合、
qP=Max(0,Qp'Y) (8-272)
・それ以外で、cIdxが1に等しい場合、
qP=Max(0,Qp'Cb) (8-273)
・それ以外の場合(cIdxが2に等しい)、
qP=Max(0,Qp'Cr) (8-274)
10.変数bitDepthは次のように導出される:
bitDepth=(cIdx==0) ? BitDepthY : BitDepthC (8-275)
11.[[リストlevelScale[]はlevelScale[k]={40,45,51,57,64,72}として指定される。ここで、k=0..5]]
12.下記が適用される:
[[tmpVal=(PaletteEscapeVal[cIdx][xCb+xL][yCb+yL]*levelScale[qP%6])<<(qP/6)+32)>>6 (8-276)]]
{{shift=min(bitDepth-1,(max(QpPrimeTsMin,qP)-4)/6)
tmpVal=(PaletteEscapeVal[cIdx][xCb+xL][yCb+yL]<<shift)}}
recSamples[x][y]=Clip3(0,(1<<bitDepth)-1,tmpVal) (8-277)
【0166】
5.6 実施形態#6
この実施形態は、変換スキップのための変換シフトをスキップするための設計を示しており、JVET-O2001-vEに基づいている。
【0167】
8.7.2 スケーリングおよび変換プロセス
このプロセスへの入力は以下の通りである:
・現在のピクチャーの左上のルーマ・サンプルに対して現在のルーマ変換ブロックの左上のサンプルを指定するルーマ位置(xTbY,yTbY)
・現在のブロックの色成分を指定する変数cIdx
・変換ブロック幅を指定する変数nTbW
・変換ブロック高さを指定する変数nTbH。
このプロセスの出力は、x=0..nTbW-1、y=0..nTbH-1として、残差サンプルの(nTbW)×(nTbH)配列resSamples[x][y]である。
変数bitDepth、bdShiftおよびtsShiftは、次のように導出される:
bitDepth=(cIdx==0) ? BitDepthY : BitDepthC (8-942)
bdShift=Max(20-bitDepth,0) (8-943)
[[tsShift=5+((Log2(nTbW)+Log2(nTbH))/2) (8-944)
変数codedCIdxは次のように導出される:
・cIdxが0に等しい、またはTuCResMode[xTbY][yTbY]が0に等しい場合、codedCIdxはcIdxに等しく設定される。
・それ以外で、TuCResMode[xTbY][yTbY]が1または2に等しい場合、codedCIdxは1に等しく設定される。
・それ以外の場合、codedCIdxは2に等しく設定される。
変数cSignは(1-2*slice_joint_cbcr_sign_flag)に等しく設定される。
残差サンプルの(nTbW)×(nTbH)配列resSampleは以下のように導出される:
【0168】
1.節8.7.3に規定される変換係数についてのスケーリング・プロセスは、変換ブロック位置(xTbY,yTbY)、変換ブロック幅nTbW、変換ブロック高さnTbH、codedCIdxに等しく設定された色成分変数cIdx、および現在の色成分ビット深さbitDepthを入力として呼び出され、出力はスケーリングされた変換係数dの(nTbW)×(nTbH)配列である。
2.残差サンプルrの(nTbW)×(nTbH)配列は以下のように導出される:
・[[transform_skip_flag[xTbY][yTbY]が1に等しく、cIdxが0に等しい場合、x=0..nTbW-1、y=0..nTbH-1として、残差サンプル配列値r[x][y]は次のように導出される:
r[x][y]=d[x][y]<<tsShift (8-945)]]
・[[それ以外の場合(transform_skip_flag[xTbY][yTbY]が0に等しい、またはおよびcIdxが0に等しくない場合]]節8.7.4.1で規定されたスケーリングされた変換係数のための変換プロセスが、変換ブロック位置(xTbY,yTbY)、変換ブロック幅nTbWおよび変換ブロック高さnTbH、色成分変数cIdxならびにスケーリングされた変換係数dの(nTbW)×(nTbH)配列を入力として呼び出され、出力は、残差サンプルrの(nTbW)×(nTbH)配列である。
3.x=0..nTbW-1、y=0..nTbH-1として、中間残差サンプルres[x][y]は、次のように導出される:
・{{transform_skip_flag[xTbY][yTbY]が1に等しく、かつcIdxが0に等しい場合、次が適用される:
res[x][y]=d[x][y]}}
・{{それ以外の場合(transform_skip_flag[xTbY][yTbY]が0に等しい、またはおよびcIdxが0に等しくない)、次が適用される:}}
res[x][y]=(r[x][y]+(1<<(bdShift-1)))>>bdShift (8-946)
4.x=0..nTbW-1、y=0..nTbH-1として、残差サンプルresSamples[x][y]は次のように導出される:
・cIdxがcodedCIdxに等しい場合、次が適用される:
resSamples[x][y]=res[x][y] (8-947)
・それ以外で、TuCResMode[xTbY][yTbY]が2に等しい場合、次が適用される:
resSamples[x][y]=cSign*res[x][y] (8-948)
・それ以外の場合、次が適用される:
resSamples[x][y]=(cSign*res[x][y])>>1
【0169】
8.7.3 変換係数のためのスケーリング・プロセス
……
変数rectNonTsFlagは次のように導出される:
rect[[NonTs]]Flag=(((Log2(nTbW)+Log2(nTbH))&1)==1[[&&]]
(8-955)
[[transform_skip_flag[xTbY][yTbY]=]]=0)
変数bdShift、rectNormおよびbdOffsetは次のように導出される:
・{{transform_skip_flag[xTbY][yTbY]が1に等しく、かつcIdxが0に等しい場合、次が適用される:
bdShift=10}}
・{{それ以外の場合、次が適用される:}}
bdShift=bitDepth+((rect[[NonTs]]Flag ? 1 : 0)+
(Log2(nTbW)+Log2(nTbH))/2)-5+dep_quant_enabled_flag (8-956)
dOffset=(1<<bdShift)>>1 (8-957)
リストlevelScale[][]は、levelScale[j][k]={{40,45,51,57,64,72},{57,64,72,80,90,102}として指定される。ここで、j=0..1、k=0..5。
(nTbW)×(nTbH)配列dzは、(nTbW)×(nTbH)配列TransCoeffLevel[xTbY][yTbY][cIdx]に等しく設定される。
x=0..nTbW-1、y=0..nTbH-1として、スケーリングされた変換係数d[x][y]の導出については、以下が適用される:
・中間スケーリング因子m[x][y]は以下のように導出される:
・次の条件のうちの一つまたは複数が真である場合、m[x][y]は16に等しく設定される:
・sps_scaling_list_enabled_flagが0に等しい。
・transform_skip_flag[xTbY][yTbY]が1に等しい。
・それ以外の場合、次が適用される:
m[x][y]=ScalingFactor[Log2(nTbW)][Log2(nTbH)][matrixId][x][y]
ここで、matrixIdはテーブル7において指定される (8-958)
・スケーリング因子ls[x][y]は次のように導出される:
・dep_quant_enabled_flagが1に等しい場合、次が適用される:
ls[x][y]=(m[x][y]*levelScale[rect[[NonTs]]Flag][(qP+1)%6])<<((qP+1)/6) (8-960)
・それ以外の場合(dep_quant_enabled_flagが0に等しい)、次が適用される:
ls[x][y]=(m[x][y]*levelScale[rect[[NonTs]]Flag][qP%6])<<(qP/6) (8-961)
・BdpcmFlag[xTbY][yYbY]が1に等しい場合、dz[x][y]は次のように修正される:
・BdpcmDir[xTbY][yYbY]が0に等しく、xが0より大きい場合、次が適用される:
dz[x][y]=Clip3(CoeffMin,CoeffMax,dz[x-1][y]+dz[x][y]) (8-961)
・それ以外で、BdpcmDir[xTbY][yYbY]が1に等しく、yが0より大きい場合、次が適用される:
dz[x][y]=Clip3(CoeffMin,CoeffMax,dz[x][y-1]+dz[x][y]) (8-962)
・値dnc[x][y]は次のように導出される:
dnc[x][y]=(dz[x][y]*ls[x][y]+bdOffset)>>bdShift (8-963)
・スケーリングされた変換係数d[x][y]は次のように導出される:
d[x][y]=Clip3(CoeffMin,CoeffMax,dnc[x][y]) (8-964)
【0170】
5.7 実施形態#7
この実施形態は、パレット・インデックスの数を信号伝達するための設計を示す。
【0171】
7.3.8.6 パレット符号化構文
【表14】
num_palette_indices{{_diff}}[[_minus1]]に[[1]]({{MaxPaletteIndex+1}})を加えたものは、現在のブロックについて明示的に信号伝達されるまたは推定されるパレット・インデックスの数である。
{{NumPaletteIndicesは(num_palette_indices_diff+MaxPaletteIndex+1)に設定される。}}
num_palette_indices{{_diff}}[[_minus1]]が存在しない場合は、0に等しいと推定される。
{{num_palette_indices_diffの値は、0からcbWidth*cbHeight-(MaxPaletteIndex+1)(両端含む)の範囲とする。}}
copy_above_indices_for_final_run_flagが1に等しいことは、符号化単位における最後の諸位置のパレット・インデックスが、水平横断走査が使用される場合は上の行におけるパレット・インデックスから、垂直横断走査が使用される場合は左の列におけるパレット・インデックスからコピーされることを指定する。
copy_above_indices_for_final_run_flagが0に等しいことは、符号化単位における最後の諸位置のパレット・インデックスがPaletteIndexIdc[ [[num_palette_indices_minus1]]{{NumPaletteIndices-1}} ]からコピーされることを指定する。
【0172】
9.5.3.13 num_palette_indices{{_diff}}[[_minus1]]についてのバイナリ化プロセス
このプロセスへの入力は、構文要素num_palette_indices{{_diff}}[[_minus1]]についてのバイナリ化の要求およびMaxPaletteIndexである。
このプロセスの出力は、前記構文要素のバイナリ化である。
変数cRiceParamは次のように導出される:
cRiceParam=3+((MaxPaletteIndex+1)>>3) (9-26)
変数cMaxは、cRiceParamから次のように導出される:
cMax=4<<cRiceParam (9-27)
構文要素num_palette_indices{{_diff}}[[_minus1]]のバイナリ化は、プレフィックスのビン・ストリングと(存在する場合は)サフィックスのビン・ストリングの連結である。
プレフィックス・ビン・ストリングの導出のためには、次が適用される:
・num_palette_indices{{_diff}}[[_minus1]]のプレフィックス値prefixValは次のように導出される:
prefixVal=Min(cMax,num_palette_indices{{_diff}}[[_minus1]]) (9-28)
・プレフィックス・ビン・ストリングは、prefixValについて節9.3.3.3で規定されるTRバイナリ化プロセスを、変数cMaxとcRiceParamを入力として呼び出すことによって指定される。
プレフィックス・ビン・ストリングが長さ4ですべてのビットが1に等しいビット・ストリングに等しい場合、サフィックス・ビン・ストリングが存在し、それは次のように導出される:
・num_palette_indices{{_diff}}[[_minus1]]のサフィックス値suffixValは次のように導出される:
suffixVal=num_palette_indices{{_diff}}[[_minus1]]-cMax (9-29)
・サフィックス・ビン・ストリングは、指数ゴロム次数kをcRiceParam+1に等しく設定して、suffixValのバイナリ化について節9.3.3.5で規定されたk次のEGkバイナリ化プロセスを呼び出すことによって指定される。
【表15】
【0173】
5.8 実施形態#8
この実施形態は、ライン・ベースのCGパレット・モードにおけるインターリーブされた信号伝達の設計を示す。本実施形態は、JVET-P2001-v4で提供されるドラフトに基づく。
【表16】
【0174】
図9は、ビデオ処理装置900のブロック図である。装置900は、本明細書に記載される方法のうちの一つまたは複数を実装するために使用されてもよい。装置900は、スマートフォン、タブレット、コンピュータ、モノのインターネット(IoT)受信機などにおいて具現されてもよい。装置900は、一つまたは複数のプロセッサ902、一つまたは複数のメモリ904、およびビデオ処理ハードウェア906を含んでいてもよい。プロセッサ902は、本稿に記載される一つまたは複数の方法を実装するように構成されてもよい。メモリ(単数または複数)904は、本明細書に記載される方法および技法を実装するために使用されるデータおよびコードを記憶するために使用されてもよい。ビデオ処理ハードウェア906は、ハードウェア回路において、本稿に記載されるいくつかの技法を実装するために使用されてもよい。いくつかの実施形態では、ハードウェア906は、プロセッサ902、たとえばグラフィックスコプロセッサに対して少なくとも部分的に内部であってもよい。
【0175】
開示された技術のいくつかの実施形態は、ビデオ処理ツールまたはモードを有効にする判断または決定を行うことを含む。一例では、ビデオ処理ツールまたはモードが有効にされている場合、エンコーダは、ビデオのブロックの処理においてそのツールまたはモードを使用または実装するが、必ずしもそのツールまたはモードの使用に基づく、結果として生じるビットストリームを修正しなくてもよい。すなわち、ビデオのブロックからビデオのビットストリーム表現への変換は、前記判断または決定に基づいて有効にされているとき、そのビデオ処理ツールまたはモードを使用する。別の例では、ビデオ処理ツールまたはモードが有効にされている場合、デコーダは、ビットストリームがそのビデオ処理ツールまたはモードに基づいて修正されているという知識を用いて、そのビットストリームを処理する。すなわち、ビデオのビットストリーム表現からビデオのブロックへの変換は、前記判断または決定に基づいて有効にされたビデオ処理ツールまたはモードを使用して実行される。
【0176】
開示された技術のいくつかの実施形態は、ビデオ処理ツールまたはモードを無効にする判断または決定を行うことを含む。一例では、ビデオ処理ツールまたはモードが無効にされている場合、エンコーダは、ビデオのブロックをビデオのビットストリーム表現に変換する際に、そのツールまたはモードを使用しない。別の例では、ビデオ処理ツールまたはモードが無効にされている場合、デコーダは、ビットストリームが、判断または決定に基づいて有効にされたビデオ処理ツールまたはモードを使用して修正されていないという知識を用いて、そのビットストリームを処理する。
【0177】
図10は、本明細書に開示されるさまざまな技法が実装されうる例示的なビデオ処理システム1000を示すブロック図である。さまざまな実装は、システム1000の構成要素の一部または全部を含んでいてもよい。システム1000は、ビデオ・コンテンツを受信するための入力1002を含んでいてもよい。ビデオ・コンテンツは、生または非圧縮フォーマット、たとえば、8または10ビットの多成分ピクセル値の形で受領されてもよく、または圧縮またはエンコードされたフォーマットで受領されてもよい。入力1002は、ネットワークインターフェース、周辺バスインターフェース、または記憶インターフェースを表すことができる。ネットワークインターフェースの例は、イーサネット、受動光ネットワーク(PON)などの有線インターフェース、およびWi-Fiまたはセルラーインターフェースなどの無線インターフェースを含む。
【0178】
システム1000は、本稿に記載されるさまざまな符号化またはエンコード方法を実装しうる符号化コンポーネント1004を含んでいてもよい。符号化コンポーネント1004は、入力1002から符号化コンポーネント1004の出力へ、ビデオの平均ビットレートを低減して、ビデオの符号化表現を生成してもよい。よって、符号化技法は、時に、ビデオ圧縮またはビデオトランスコード技法と呼ばれる。符号化コンポーネント1004の出力は、コンポーネント1006によって表されるように接続された通信を介して、記憶されるか、または送信されてもよい。入力1002で受信されたビデオの記憶されたまたは通信されたビットストリーム(または符号化された)表現は、ディスプレイインターフェース1010に送られるピクセル値または表示可能なビデオを生成するために、コンポーネント1008によって使用されうる。ビットストリーム表現からユーザーが見ることができるビデオを生成するプロセスは、時に、ビデオ圧縮解除と呼ばれる。さらに、ある種のビデオ処理動作は、「符号化」操作またはツールと称されるが、符号化ツールまたは操作は、エンコーダにおいて使用され、符号化の結果を反転させる対応する復号ツールまたは操作がデコーダにおいて実行されることが理解されるであろう。
【0179】
周辺バスインターフェースまたはディスプレイインターフェースの例は、ユニバーサルシリアルバス(USB)または高精細度マルチメディアインターフェース(MDMI)またはディスプレイポートなどを含む。記憶インターフェースの例は、SATA(シリアルアドバンストテクノロジーアタッチメント)、PCI、IDEインターフェースなどを含む。本稿に記載される技法は、携帯電話、ラップトップ、スマートフォン、またはデジタルデータ処理および/またはビデオ表示を実行することができる他の装置のようなさまざまな電子装置において具現されうる。
【0180】
図11は、本開示の技表を利用することができる例示的なビデオ符号化システム100を示すブロック図である。
【0181】
図11に示されるように、ビデオ符号化システム100は、源装置110および宛先装置120を含んでいてもよい。源装置110は、ビデオ・エンコード装置と称されてもよく、エンコードされたビデオ・データを生成する。宛先装置120は、ビデオ・デコード装置と称されてもよく、源装置110によって生成されたエンコードされたビデオ・データをデコードしてもよい。
【0182】
源装置110は、ビデオ源112、ビデオ・エンコーダ114、および入出力(I/O)インターフェース116を含むことができる。
【0183】
ビデオ源112は、ビデオ捕捉装置のような源、ビデオ・コンテンツ・プロバイダーからビデオ・データを受信するためのインターフェース、および/またはビデオ・データを生成するためのコンピュータ・グラフィックス・システム、またはそのような源の組み合わせを含んでいてもよい。ビデオ・データは、一つまたは複数のピクチャーを含んでいてもよい。ビデオ・エンコーダ114は、ビデオ源112からのビデオ・データをエンコードしてビットストリームを生成する。ビットストリームは、ビデオ・データの符号化表現を形成するビットのシーケンスを含んでいてもよい。ビットストリームは、符号化されたピクチャーおよび関連するデータを含んでいてもよい。符号化ピクチャーは、ピクチャーの符号化表現である。関連するデータは、シーケンスパラメータセット、ピクチャーパラメータセット、および他の構文構造を含んでいてもよい。I/Oインターフェース116は、変調器/復調器(モデム)および/または送信器を含んでいてもよい。エンコードされたビデオ・データは、ネットワーク130aを通じてI/Oインターフェース116を介して宛先装置120に直接送信されてもよい。エンコードされたビデオ・データはまた、宛先装置120によるアクセスのために記憶媒体/サーバー130b上に記憶されてもよい。
【0184】
宛先装置120は、I/Oインターフェース126、ビデオ・デコーダ124、および表示装置122を含んでいてもよい。
【0185】
I/Oインターフェース126は、受信機および/またはモデムを含んでいてもよい。I/Oインターフェース126は、源装置110または記憶媒体/サーバー130bから、エンコードされたビデオ・データを取得してもよい。ビデオ・デコーダ124は、エンコードされたビデオ・データをデコードしてもよい。表示装置122は、デコードされたビデオ・データをユーザーに対して表示してもよい。表示装置122は、宛先装置120と一体化されてもよく、または外部表示装置とインターフェースするように構成された宛先装置120の外部にあってもよい。
【0186】
ビデオ・エンコーダ114およびビデオ・デコーダ124は、高効率ビデオ符号化(HEVC)標準、多用途ビデオ符号化(VVC)標準、およびその他の現行のおよび/またはさらなる標準のようなビデオ圧縮標準に従って動作してもよい。
【0187】
図12は、
図11に示されるシステム100内のビデオ・エンコーダ114であってもよいビデオ・エンコーダ200の一例を示すブロック図である。
【0188】
ビデオ・エンコーダ200は、本開示の技法のいずれかまたはすべてを実行するように構成されてもよい。
図12の例では、ビデオ・エンコーダ200は、複数の機能コンポーネントを含む。本開示に記載される技法は、ビデオ・エンコーダ200のさまざまなコンポーネント間で共有されてもよい。いくつかの例では、プロセッサが、本開示に記載される技法のいずれかまたはすべてを実行するように構成されてもよい。
【0189】
ビデオ・エンコーダ200の機能コンポーネントは、分割部201と、モード選択部203、動き推定部204、動き補償部205、およびイントラ予測部206を含みうる予測部202と、残差生成部207と、変換部208と、量子化部209と、逆量子化部210と、逆変換部211と、再構成部212と、バッファ213と、エントロピー符号化部214とを含んでいてもよい。
【0190】
他の例では、ビデオ・エンコーダ200は、より多くの、より少ない、または異なる機能コンポーネントを含んでいてもよい。一例では、予測部202は、イントラブロックコピー(IBC)部を含んでいてもよい。IBC部は、少なくとも1つの参照ピクチャーが現在のビデオ・ブロックが位置するピクチャーであるIBCモードで予測を実行することができる。
【0191】
さらに、動き推定部204や動き補償部205のようないくつかのコンポーネントは、高度に統合されてもよいが、説明のために
図12の例では別個に表現されている。
【0192】
分割部201は、ピクチャーを一つまたは複数のビデオ・ブロックにパーティション分割することができる。ビデオ・エンコーダ200およびビデオ・デコーダ300は、さまざまなビデオ・ブロック・サイズをサポートすることができる。
【0193】
モード選択部203は、たとえば誤差結果に基づいて、符号化モードのうちの1つ、イントラまたはインターを選択し、結果として得られるイントラまたはインター符号化されたブロックを、残差ブロック・データを生成する残差生成部207に、また、参照ピクチャーとして使用するためにエンコードされたブロックを再構成する再構成部212に提供することができる。いくつかの例では、モード選択部203は、予測がインター予測信号およびイントラ予測信号に基づく、イントラおよびインター予測の組み合わせ(CIIP)モードを選択してもよい。モード選択部203は、また、インター予測の場合、ブロックについての動きベクトルの分解能(たとえば、サブピクセルまたは整数ピクセル精度)を選択してもよい。
【0194】
現在のビデオ・ブロックに対してインター予測を実行するために、動き推定部204は、バッファ213からの一つまたは複数の参照フレームを現在のビデオ・ブロックと比較することによって、現在のビデオ・ブロックについての動き情報を生成してもよい。動き補償部205は、現在のビデオ・ブロックに関連するピクチャー以外のバッファ213からのピクチャーのデコードされたサンプルと前記動き情報とに基づいて、現在のビデオ・ブロックについて予測されるビデオ・ブロックを決定することができる。
【0195】
動き推定部204と動き補償部205は、たとえば、現在のビデオ・ブロックがIスライス内にあるか、Pスライス内にあるか、Bスライス内にあるかによって、現在のビデオ・ブロックについて異なる動作を実行してもよい。
【0196】
いくつかの例では、動き推定部204は、現在のビデオ・ブロックについて一方向の予測を実行してもよく、動き推定部204は、現在のビデオ・ブロックについての参照ビデオ・ブロックを求めて、リスト0またはリスト1の参照ピクチャーを探索してもよい。次いで、動き推定部204は、参照ビデオ・ブロックを含むリスト0またはリスト1内の参照ピクチャーを示す参照インデックスと、現在のビデオ・ブロックと参照ビデオ・ブロックとの間の空間的変位を示す動きベクトルとを生成することができる。動き推定部204は、参照インデックス、予測方向指示子、および動きベクトルを現在のビデオ・ブロックの動き情報として出力することができる。動き補償部205は、現在のビデオ・ブロックの動き情報によって示される参照ビデオ・ブロックに基づいて、現在のブロックの予測されたビデオ・ブロックを生成することができる。
【0197】
他の例では、動き推定部204は、現在のビデオ・ブロックについて双方向予測を実行してもよく、動き推定部204は、現在のビデオ・ブロックについての参照ビデオ・ブロックを求めてリスト0内の参照ピクチャーを探索してもよく、現在のビデオ・ブロックについての別の参照ビデオ・ブロックを求めてリスト1内の参照ピクチャーをも探索してもよい。次いで、動き推定部204は、参照ビデオ・ブロックを含むリスト0およびリスト1における参照ピクチャーを示す参照インデックスと、参照ビデオ・ブロックと現在のビデオ・ブロックとの間の空間的変位を示す動きベクトルとを生成してもよい。動き推定部204は、現在のビデオ・ブロックの参照インデックスおよび動きベクトルを、現在のビデオ・ブロックの動き情報として、出力することができる。動き補償部205は、現在のビデオ・ブロックの動き情報によって示される参照ビデオ・ブロックに基づいて、現在のビデオ・ブロックの予測ビデオ・ブロックを生成することができる。
【0198】
いくつかの例では、動き推定部204は、デコーダのデコード処理のための動き情報のフルセットを出力してもよい。
【0199】
いくつかの例では、動き推定部204は、現在のビデオについての動き情報のフルセットは出力しなくてもよい。むしろ、動き推定部204は、別のビデオ・ブロックの動き情報を参照して現在のビデオ・ブロックの動き情報を信号伝達してもよい。たとえば、動き推定部204は、現在のビデオ・ブロックの動き情報が近傍のビデオ・ブロックの動き情報と十分に類似していると判断することができる。
【0200】
一例では、動き推定部204は、現在のビデオ・ブロックに関連する構文構造において、現在のビデオ・ブロックが別のビデオ・ブロックと同じ動き情報を有することをビデオ・デコーダ300に対して示す値を示してもよい。
【0201】
別の例では、動き推定部204は、現在のビデオ・ブロックに関連する構文構造において、別のビデオ・ブロックおよび動きベクトル差(MVD)を同定してもよい。動きベクトル差は、現在のビデオ・ブロックの動きベクトルと示されたビデオ・ブロックの動きベクトルとの間の差を示す。ビデオ・デコーダ300は、示されたビデオ・ブロックの動きベクトルと動きベクトル差とを使用して、現在のビデオ・ブロックの動きベクトルを決定することができる。
【0202】
上述のように、ビデオ・エンコーダ200は、動きベクトルを予測的に信号伝達してもよい。ビデオ・エンコーダ200によって実装されうる予測的な信号伝達技法の2つの例は、先進動きベクトル予測(AMVP)およびマージ・モード信号伝達を含む。
【0203】
イントラ予測部206は、現在のビデオ・ブロックに対してイントラ予測を実行することができる。イントラ予測部206が現在のビデオ・ブロックに対してイントラ予測を実行するとき、イントラ予測部206は、同じピクチャー内の他のビデオ・ブロックのデコードされたサンプルに基づいて、現在のビデオ・ブロックのための予測データを生成することができる。現在のビデオ・ブロックのための予測データは、予測されるビデオ・ブロックおよびさまざまな構文要素を含んでいてもよい。
【0204】
残差生成部207は、現在のビデオ・ブロックから現在のビデオ・ブロックの予測ビデオ・ブロックを差し引くことによって(たとえば、マイナス記号によって示される)、現在のビデオ・ブロックのための残差データを生成することができる。現在のビデオ・ブロックの残差データは、現在のビデオ・ブロック内のサンプルの異なるサンプル成分に対応する残差ビデオ・ブロックを含んでいてもよい。
【0205】
他の例では、たとえばスキップ・モードにおいて、現在のビデオ・ブロックのための現在のビデオ・ブロックのための残差データが存在しないことがあり、残差生成部207は減算演算を実行しないことがある。
【0206】
変換処理部208は、現在のビデオ・ブロックに関連する残差ビデオ・ブロックに一つまたは複数の変換を適用することによって、現在のビデオ・ブロックのための一つまたは複数の変換係数ビデオ・ブロックを生成することができる。
【0207】
変換処理部208が現在のビデオ・ブロックに関連する変換係数ビデオ・ブロックを生成した後、量子化部209は、現在のビデオ・ブロックに関連する一つまたは複数の量子化パラメータ(QP)値に基づいて、現在のビデオ・ブロックに関連する変換係数ビデオ・ブロックを量子化することができる。
【0208】
逆量子化部210および逆変換部211は、変換係数ビデオ・ブロックから残差ビデオ・ブロックを再構成するために、変換係数ビデオ・ブロックに対してそれぞれ逆量子化および逆変換を適用することができる。再構成部212は、再構成された残差ビデオ・ブロックを、予測部202によって生成された一つまたは複数の予測ビデオ・ブロックからの対応するサンプルに加算して、バッファ213に記憶するために現在のブロックに関連する再構成されたビデオ・ブロックを生成する。
【0209】
再構成部212がビデオ・ブロックを再構成した後、ビデオ・ブロック内のビデオ・ブロッキング・アーチファクトを低減するためにループ・フィルタリング動作が実行されてもよい。
【0210】
エントロピー符号化部214は、ビデオ・エンコーダ200の他の機能コンポーネントからデータを受領することができる。エントロピー符号化部214がデータを受領すると、エントロピー符号化部214は、一つまたは複数のエントロピー符号化動作を実行してエントロピー符号化データを生成し、エントロピー符号化データを含むビットストリームを出力することができる。
【0211】
図13は、
図11に示されるシステム100内のビデオ・デコーダ114であってもよいビデオ・デコーダ300の例を示すブロック図である。
【0212】
ビデオ・デコーダ300は、本開示の技法のいずれかまたはすべてを実行するように構成されうる。
図13の例では、ビデオ・デコーダ300は、複数の機能的コンポーネントを含む。本開示に記載される技法は、ビデオ・デコーダ300のさまざまなコンポーネント間で共有されてもよい。いくつかの例では、プロセッサが、本開示に記載される技法のいずれかまたはすべてを実行するように構成されてもよい。
【0213】
図13の例では、ビデオ・デコーダ300は、エントロピー復号部301、動き補償部302、イントラ予測部303、逆量子化部304、逆変換部305、再構成部306、バッファ307を含む。ビデオ・デコーダ300は、いくつかの例では、ビデオ・エンコーダ200(
図12)に関して説明したエンコード・パス(pass)とおおむね逆のデコード・パスを実行することができる。
【0214】
エントロピー復号部301は、エンコードされたビットストリームを取り出すことができる。エンコードされたビットストリームはエントロピー符号化されたビデオ・データ(たとえば、ビデオ・データのエンコードされたブロック)を含むことができる。エントロピー復号部301はエントロピー符号化されたビデオ・データを復号することができ、エントロピー復号されたビデオ・データから、動き補償部302は、動きベクトル、動きベクトル精度、参照ピクチャー・リスト・インデックス、および他の動き情報を含む動き情報を決定することができる。動き補償部302は、たとえば、AMVPおよびマージ・モードを実行することによって、そのような情報を決定することができる。
【0215】
動き補償部302は、可能性としては補間フィルタに基づく補間を実行して、動き補償されたブロックを生成することができる。サブピクセル精度で使用される補間フィルタのための識別子が、構文要素に含まれてもよい。
【0216】
動き補償部302は、ビデオ・ブロックのエンコード中にビデオ・エンコーダ20によって使用される補間フィルタを使用して、参照ブロックの整数未満ピクセルについての補間された値を計算することができる。動き補償部302は、受領された構文情報に従ってビデオ・エンコーダ200によって使用される補間フィルタを決定し、該補間フィルタを使用して予測ブロックを生成することができる。
【0217】
動き補償部302は、構文情報の一部を使用して、エンコードされたビデオ・シーケンスのフレームおよび/またはスライスをエンコードするために使用されるブロックのサイズ、エンコードされたビデオ・シーケンスのピクチャーの各マクロブロックがどのようにパーティション分割されるかを記述する分割情報、各パーティションがどのようにエンコードされるかを示すモード、各インター符号化されたブロックについての一つまたは複数の参照フレーム(および参照フレーム・リスト)、およびエンコードされたビデオ・シーケンスをデコードするための他の情報を決定することができる。
【0218】
イントラ予測部303は、たとえばビットストリームにおいて受領されたイントラ予測モードを使用して、空間的に隣接するブロックから予測ブロックを形成してもよい。逆量子化部303は、ビットストリーム内で提供され、エントロピー復号部301によって復号された量子化ビデオ・ブロック係数を逆量子化する、すなわち、脱量子化する。逆変換部303は、逆変換を適用する。
【0219】
再構成部306は、残差ブロックを、動き補償部202またはイントラ予測部303によって生成された対応する予測ブロックと加算して、デコードされたブロックを形成することができる。所望であれば、ブロック性アーチファクトを除去するために、デコードされたブロックをフィルタリングするようブロッキング解除フィルタも適用されてもよい。次いで、デコードされたビデオ・ブロックはバッファ307に格納され、バッファ307は、その後の動き補償/イントラ予測のための参照ブロックを提供し、表示装置上に提示するためのデコードされたビデオをも生成する。
【0220】
いくつかの実施形態では、以下の方法は、上記に列挙した例および実施形態のリストに基づく。一例では、これらの方法は、
図9~
図13に示される実装を使用して実施できるが、これに限定されない。
【0221】
図14は、ビデオ処理のための例示的方法のフローチャートである。そこに示されるように、方法1400は、動作1410において、現在のビデオ・ブロックを含む一つまたは複数のビデオ領域を含むビデオと、該ビデオのビットストリーム表現との間の変換のために、現在のビデオ・ブロックのために使用されるパレット・モード符号化ツールにおいて使用されるパレットの予測のためのパレット予測テーブルを維持することを含む。
方法1400は、動作1420において、前記変換にローカル・デュアル・ツリー符号化が適用されることを決定することを含む。
方法1400は、動作1430において、前記決定に基づいて、前記パレット予測テーブルを修正することを含む。
方法1400は、動作1440において、前記修正の後の前記パレット予測テーブルに基づいて、前記変換を実行することを含む。いくつかの実施形態では、前記パレット・モード符号化ツールは、代表的な色値のパレットを使用して現在のビデオ・ブロックを表現し、前記ローカル・デュアル・ツリー符号化は、ブロック・サイズに基づいて、対応するルーマ・ブロックとは独立してクロマ・ブロックのパーティション分割を可能にする。
【0222】
図15は、ビデオ処理のための例示的方法のフローチャートである。そこに示されるように、方法1500は、動作1510において、現在のビデオ・ブロックを含む一つまたは複数のビデオ領域を含むビデオと、該ビデオのビットストリーム表現との間の変換を実行することを含み、前記ビットストリーム表現は、パレット・モード符号化とローカル・デュアル・ツリー符号化の同時使用が現在のビデオ・ブロックについて無効にされるというフォーマット規則に適合する。いくつかの実施形態では、前記パレット・モード符号化ツールは、代表的な色値のパレットを使用して現在のビデオ・ブロックを表現し、前記ローカル・デュアル・ツリー符号化は、ブロック・サイズに基づいて、対応するルーマ・ブロックとは独立してクロマ・ブロックのパーティション分割を可能にする。
【0223】
図16は、ビデオ処理のための例示的方法のフローチャートである。そこに示されるように、方法1600は、動作1610において、現在のビデオ・ブロックを含む一つまたは複数のビデオ領域を含むビデオと、該ビデオのビットストリーム表現との間の変換を実行することを含み、前記ビデオ・ブロックは、前記ビットストリーム表現において、パレット符号化モードを使って符号化され、前記パレットを予測するパレット予測テーブルが、ある条件に基づいて前記変換のために選択的に使用される。
【0224】
以下の解決策は、いくつかの実施形態の好ましい特徴として、前のセクションに列挙されている項目(たとえば、項目1)に記載されている追加の技法とともに実装されてもよい。
【0225】
1.ビデオ処理の方法であって、現在のビデオ・ブロックを含む一つまたは複数のビデオ領域を含むビデオと、該ビデオのビットストリーム表現との間の変換のために、現在のビデオ・ブロックのために使用されるパレット・モード符号化ツールにおいて使用されるパレットの予測のためのパレット予測テーブルを維持し、前記変換にローカル・デュアル・ツリー符号化が適用されることを決定し、前記決定に基づいて、前記パレット予測テーブルを修正し、前記修正の後の前記パレット予測テーブルに基づいて、前記変換を実行することを含み、前記パレット・モード符号化ツールは、代表的な色値のパレットを使用して現在のビデオ・ブロックを表現し、前記ローカル・デュアル・ツリー符号化は、ブロック・サイズに基づいて、対応するルーマ・ブロックとは独立してクロマ・ブロックのパーティション分割を可能にする、方法。
【0226】
2.前記修正することは、前記ローカル・デュアル・ツリー符号化の適用に起因して前記パレット予測テーブルをリセットすることを含む、解決策1の方法。
【0227】
前記修正することは、前記ローカル・デュアル・ツリー符号化の適用に起因して、前記パレット予測テーブルから、繰り返されるパレット項目を除去することを含む、解決策1の方法。
【0228】
4.前記修正することは、前記パレット予測テーブルの2つの項目の3つの構成要素が異なる場合に、前記パレット予測テーブルの該2つの項目が異なると判断する制約条件を追加することを含む、解決策1の方法。
【0229】
5.前記修正することは、前記パレット予測テーブルにおけるパレット項目をチェックし、前記ローカル・デュアル・ツリー符号化の適用に起因して、前記パレット予測テーブルから、繰り返されるパレット項目を除去することを含む、解決策1の方法。
【0230】
6.前記修正することは、前記パレット項目をチェックする際に、前記パレット予測テーブルにおけるパレット項目に対してフル剪定または部分剪定を適用することを含む、解決策1の方法。
【0231】
7.前記修正することは、前記パレット予測テーブルの2つの項目のルーマ成分値が同一である場合に、前記パレット予測テーブルの該2つの項目が同一であると判断することを含む、解決策1の方法。
【0232】
8.前記修正することが、前記ローカル・デュアル・ツリー符号化が前記ビデオのルーマ成分に適用されることに起因して、ルーマ・ブロックに対してのみ実行される、解決策1の方法。
【0233】
9.前記修正することが、前記ローカル・デュアル・ツリー符号化が前記ビデオのクロマ成分に適用されることに起因して、クロマ・ブロックに対してのみ実行される、解決策1の方法。
【0234】
10.前記パレット・モード符号化ツールのパレット予測子が、単一ツリー符号化が前記ローカル・デュアル・ツリー符号化に切り換えられることに起因してリセットされる、解決策1の方法。
【0235】
11.前記パレット・モード符号化ツールのパレット予測子が、前記ローカル・デュアル・ツリー符号化が単一ツリー符号化に切り換えられることに起因してリセットされる、解決策1の方法。
【0236】
12.ビデオ処理の方法であって、現在のビデオ・ブロックを含む一つまたは複数のビデオ領域を含むビデオと、該ビデオのビットストリーム表現との間の変換を実行することを含み、前記ビットストリーム表現は、パレット・モード符号化とローカル・デュアル・ツリー符号化の同時使用が現在のビデオ・ブロックについて無効にされるというフォーマット規則に適合し、前記パレット・モード符号化ツールは、代表的な色値のパレットを使用して現在のビデオ・ブロックを表現し、前記ローカル・デュアル・ツリー符号化は、ブロック・サイズに基づいて、対応するルーマ・ブロックとは独立してクロマ・ブロックのパーティション分割を可能にする、方法。
【0237】
13.前記パレット・モード符号化が有効にされ、前記ローカル・デュアル・ツリー符号化が無効にされる、解決策12の方法。
【0238】
14.前記パレット・モード符号化が無効にされ、前記ローカル・デュアル・ツリー符号化が有効にされる、解決策12の方法。
【0239】
15.前記ビデオが所定のカラー・フォーマットを有する場合、前記ローカル・デュアル・ツリー符号化は、現在のビデオ・ブロックについて無効にされる、解決策12の方法。
【0240】
16.前記所定のカラー・フォーマットが4:4:4である、解決策15の方法。
【0241】
17.前記ローカル・デュアル・ツリー符号化のタイプがMODE_TYPE_INTRAである場合、前記パレット・モード符号化は無効にされる、解決策12の方法。
【0242】
18.前記パレット・モード符号化ツールのパレット予測子が、前記ローカル・デュアル・ツリー符号化の適用に起因してリセットされる、解決策12の方法。
【0243】
19.前記パレット・モード符号化ツールのパレット予測子の項目の使用の信号伝達が、ローカル・ツリー符号化のタイプに基づく、解決策12の方法。
【0244】
20.ビデオ処理の方法であって、現在のビデオ・ブロックを含む一つまたは複数のビデオ領域を含むビデオと、該ビデオのビットストリーム表現との間の変換を実行することを含み、前記ビデオ・ブロックは、前記ビデオ・ブロックが代表的な色値のパレットを使用して表現されるパレット符号化モードを使って、前記ビットストリーム表現において符号化され、前記パレットを予測するパレット予測テーブルが、ある条件に基づいて前記変換のために選択的に使用される、方法。
【0245】
21.前記条件は、現在のパレット項目が、前記パレット予測テーブルの項目の色成分の数とは異なる数の色成分を含むことを規定する、解決策20の方法。
【0246】
22.前記パレット予測テーブルの各項目についての再利用フラグが、真であるとマークされる、解決策21の方法。
【0247】
23.前記条件は、現在のパレット項目が、前記パレット予測テーブルの項目の色成分の数とは異なる数の色成分を含む場合、前記パレット予測テーブルの各項目についての再利用フラグが、偽としてマークされることを規定する、解決策20の方法。
【0248】
24.前記条件は、前記パレット予測テーブルおよび現在のパレット・テーブルが異なる色成分を有することを規定する、解決策20の方法。
【0249】
25.前記パレット予測テーブルの各項目についての再利用フラグが、真であるとマークされる、解決策24の方法。
【0250】
26.前記条件は、前記パレット予測テーブルと現在のパレット・テーブルが異なる色成分を有する場合に、前記パレット予測テーブルの各項目についての再利用フラグが偽としてマークされることを規定する、解決策20の方法。
【0251】
27.前記変換を実行することが、前記一つまたは複数のビデオ領域から前記ビットストリーム表現を生成することを含む、解決策1ないし26のうちいずれか一項の方法。
【0252】
28.前記変換を実行することが、前記ビットストリーム表現から前記一つまたは複数のビデオ領域を生成することを含む、解決策1ないし26のうちいずれか一項の方法。
【0253】
29.プロセッサと、命令を有する非一時メモリとを備えるビデオ・システム内の装置であって、前記命令は、前記プロセッサによる実行の際に、前記プロセッサに、解決策1ないし28のうちいずれか一項の方法を実施させる、装置。
【0254】
30.非一時的なコンピュータ読み取り可能媒体に記憶されたコンピュータ・プログラム・プロダクトであって、解決策1ないし28のうちいずれか一項の方法を実行するためのプログラム・コードを含む、コンピュータ・プログラム・プロダクト。
【0255】
本明細書に記載された、開示されたおよびその他の解決策、例、実施形態、モジュール、および機能的な動作は、デジタル電子回路において、または本明細書に開示された構造およびそれらの構造的等価物を含むコンピュータ・ソフトウェア、ファームウェア、またはハードウェアにおいて、またはそれらの一つまたは複数の組み合わせにおいて実装されることができる。開示されたおよびその他の実施形態は、一つまたは複数のコンピュータ・プログラム・プロダクト、すなわち、データ処理装置による実行のため、またはデータ処理装置の動作を制御するために、コンピュータ読み取り可能媒体上にエンコードされたコンピュータ・プログラム命令の一つまたは複数のモジュールとして実装されることができる。コンピュータ読み取り可能媒体は、機械読み取り可能な記憶デバイス、機械読み取り可能な記憶基板、メモリ装置、機械読み取り可能な伝搬信号を実現する物質の組成、またはそれらの一つまたは複数の組み合わせでありうる。用語「データ処理装置」は、たとえば、プログラム可能なプロセッサ、コンピュータ、または複数のプロセッサまたはコンピュータを含む、データを処理するためのすべての装置、デバイス、および機械を包含する。装置は、ハードウェアに加えて、問題のコンピュータ・プログラムのための実行環境を生成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらの一つまたは複数の組み合わせを構成するコードを含むことができる。伝搬信号は、人工的に生成された信号、たとえば、好適な受信器装置に送信するための情報をエンコードするために生成される機械生成された電気信号、光信号、または電磁信号である。
【0256】
コンピュータ・プログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られる)は、コンパイルされるまたはインタープリットされる言語を含む、任意の形のプログラミング言語で書くことができ、それは、スタンドアローン・プログラムとして、またはコンピューティング環境での使用に好適なモジュール、コンポーネント、サブルーチン、または他のユニットとして展開することを含め、任意の形で展開できる。コンピュータ・プログラムは、必ずしもファイルシステム内のファイルに対応するものではない。プログラムは、他のプログラムまたはデータを保持するファイルの一部分に(たとえば、マークアップ言語文書に格納される一つまたは複数のスクリプト)、問題のプログラム専用の単一のファイルに、または複数の協調させられるファイル(たとえば、一つまたは複数のモジュール、サブプログラム、またはコード部分を格納するファイル)に格納されることができる。コンピュータ・プログラムは、1つのコンピュータ上で、または1つのサイトに位置するか、または複数のサイトに分散され、通信ネットワークによって相互接続される複数のコンピュータ上で実行されるように展開されることができる。
【0257】
本稿に記載されるプロセスおよび論理フローは、一つまたは複数のコンピュータ・プログラムを実行する一つまたは複数のプログラム可能なプロセッサによって実行されて、入力データに対して作用し、出力を生成することによって機能を実行することができる。プロセスおよび論理フローは、特殊目的の論理回路、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実行されることもでき、装置もそのようなものとして実装されることができる。
【0258】
コンピュータ・プログラムの実行に好適なプロセッサは、たとえば、汎用および専用マイクロプロセッサの両方、および任意の種類のデジタル・コンピュータの任意の一つまたは複数のプロセッサを含む。一般に、プロセッサは、読み出し専用メモリまたはランダムアクセスメモリまたはその両方から命令およびデータを受領する。コンピュータの必須の要素は、命令を実行するためのプロセッサと、命令およびデータを記憶するための一つまたは複数のメモリデバイスである。一般に、コンピュータはまた、データを記憶するための一つまたは複数の大容量記憶装置、たとえば、磁気ディスク、磁気光ディスク、または光ディスクをも含む、またはそれらからデータを受領したり、またはそれにデータを転送したり、またはその両方をしたりするよう、動作上結合される。しかしながら、コンピュータは、そのような装置を有する必要はない。コンピュータ・プログラム命令およびデータを記憶するのに好適なコンピュータ読み取り可能媒体は、あらゆる形の不揮発性メモリ、媒体およびメモリデバイスを含み、たとえば、半導体メモリデバイス、たとえばEPROM、EEPROM、およびフラッシュメモリデバイス;磁気ディスク、たとえば、内蔵ハードディスクまたはリムーバブルディスク;光磁気ディスク;ならびにCD-ROMおよびDVD-ROMディスクを含む。プロセッサおよびメモリは、特殊目的論理回路によって補足されるか、またはそれに組み込まれることができる。
【0259】
この特許文献は多くの個別的事項を含んでいるが、これらは、いずれかの主題の範囲または特許請求されうるものの範囲に対する限定として解釈されるべきではなく、むしろ特定の技法の特定の実施形態に特有でありうる特徴の記述と解釈されるべきである。この特許文献において別個の実施形態の文脈で記載されているある種の特徴は、単一の実施形態において組み合わせて実施されることもできる。逆に、単一の実施形態の文脈において記載されるさまざまな特徴が、複数の実施形態において別個に、または任意の好適なサブコンビネーションにおいて実施されることもできる。さらに、特徴は、ある種の組み合わせにおいて作用するものとして上述され、さらには当初はそのようなものとして請求項に記載されることがあるが、請求項に記載された組み合わせからの一つまたは複数の特徴が、場合によっては、組み合わせから削除されてもよく、請求項に記載された組み合わせは、サブコンビネーションまたはサブコンビネーションの変形に向けられてもよい。
【0260】
同様に、図面には特定の順序で動作が示されているが、これは、所望の結果を達成するために、そのような動作が示されている特定の順序で、あるいは逐次順に実行されること、あるいはすべての示されている動作が実行されることを要求すると解釈されるべきではない。さらに、この特許文献に記載されている実施形態におけるさまざまなシステムコンポーネントの分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではない。
【0261】
少数の実装および例のみが記述されており、この特許文献に記載され、説明されている内容に基づいて、他の実装、向上および変形がなされてもよい。