(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-17
(45)【発行日】2024-05-27
(54)【発明の名称】シンタックスエレメントを使用するビデオ処理
(51)【国際特許分類】
H04N 19/70 20140101AFI20240520BHJP
H04N 19/86 20140101ALI20240520BHJP
【FI】
H04N19/70
H04N19/86
(21)【出願番号】P 2022558150
(86)(22)【出願日】2021-01-27
(86)【国際出願番号】 SE2021050051
(87)【国際公開番号】W WO2021201739
(87)【国際公開日】2021-10-07
【審査請求日】2022-11-24
(32)【優先日】2020-03-31
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】598036300
【氏名又は名称】テレフオンアクチーボラゲット エルエム エリクソン(パブル)
(74)【代理人】
【識別番号】100109726
【氏名又は名称】園田 吉隆
(74)【代理人】
【識別番号】100150670
【氏名又は名称】小梶 晴美
(74)【代理人】
【識別番号】100194294
【氏名又は名称】石岡 利康
(72)【発明者】
【氏名】ショバーリ, リキャルド
(72)【発明者】
【氏名】ペッテション, マルティン
(72)【発明者】
【氏名】ダムガニアン, ミトラ
(72)【発明者】
【氏名】ストレム, ヤコブ
(72)【発明者】
【氏名】チャン, ヂィー
(72)【発明者】
【氏名】アンデション, ケネト
(72)【発明者】
【氏名】エンホーン, ジャック
【審査官】岩井 健二
(56)【参考文献】
【文献】米国特許出願公開第2019/0306502(US,A1)
【文献】米国特許出願公開第2014/0192892(US,A1)
【文献】国際公開第2016/056398(WO,A1)
【文献】Jizheng Xu, et al.,AHG9: On deblocking control parameters,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-Q0121-v1,17th Meeting: Brussels, BE,2020年01月,pp.1-7
【文献】Zhi Zhang, et al.,AHG9: Chroma deblocking strength signaling,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-R0081-v1,18th Meeting: by teleconference,2020年04月,pp.1-9
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00 - 19/98
(57)【特許請求の範囲】
【請求項1】
シンタックスエレメントを使用するコード化されたビデオのビットストリームの第1のシンタックスエレメントSyntax_Aについての値を導出するための、デコーダによって実施される方法であって、前記方法は、
Syntax_Aが
前記ビットストリーム中に存在するかどうかを決定することと、
少なくとも、第4のシンタックスエレメントSyntax_Dについての値から、値Dを導出することと、
Syntax_Aが前記ビットストリーム中に存在しないと決定したことの結果として、
少なくとも、第2のシンタックスエレメントSyntax_Bについての値から、値Bを導出し、
前記値DがXに等しい場合、Syntax_Aについての前記値を前記値Bに等しいと導出すること、または、
少なくとも、第3のシンタックスエレメントSyntax_Cについての値から、値Cを導出し、
前記値DがYに等しい場合、Syntax_Aについての前記値を前記値Cに等しいと導出することであって、ここで、YがXに等しくない、ことと、
Syntax_Aについての前記導出された値を使用して前記ビットストリームからピクチャを復号することと
含
み、
前記Syntax_Aは、前記ビットストリーム中でシグナリングされるクロマデブロッキングオフセットに対応し、
前記Syntax_Bは、ルーマデブロッキングオフセットに対応する、方法。
【請求項2】
前記値B、
前記値Cおよび
前記値Dのうちの少なくとも1つが、それぞれ、前記シンタックスエレメントSyntax_B、Syntax_C、およびSyntax_Dについての前記値に等しい、請求項1に記載の方法。
【請求項3】
Syntax_B、Syntax_CおよびSyntax_Dのうちの少なくとも1つが前記ビットストリームから復号される、請求項1または2に記載の方法。
【請求項4】
前記値Bを導出することは、
前記第2のシンタックスエレメントSyntax_Bが前記ビットストリーム中に存在するかどうかを決定することと、
Syntax_Bが前記ビットストリーム中に存在しないと決定したことの結果として、前記値Bを推論するか、さもなければ、Syntax_Bから前記値Bを復号することと
を含む、請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記値Dを導出することは、
前記第4のシンタックスエレメントSyntax_Dが前記ビットストリーム中に存在するかどうかを決定することと、
Syntax_Dが前記ビットストリーム中に存在すると決定された場合、
前記値Dを第3の値に等しくセットすることであって、前記第3の値が所定の値であるか、または前記第3の値が、Syntax_Dの前記復号された値に等しい、ことと
を含む、請求項1から4のいずれか一項に記載の方法。
【請求項6】
前記値Dを導出することは、Syntax_Dが前記ビットストリーム中に存在しないと決定された場合、
前記値Dを第4の値に等しくセットすることを含み、ここで、前記第4の値が所定の値であるか、または前記第4の値がSyntax_Dの推論された値に等しい、請求項5に記載の方法。
【請求項7】
前記シンタックスエレメントSyntax_A、Syntax_B、Syntax_CおよびSyntax_Dが、1つのヘッダまたはパラメータセット中にある、請求項1から
6のいずれか一項に記載の方法。
【請求項8】
前記シンタックスエレメントSyntax_A、Syntax_B、Syntax_CおよびSyntax_Dが、いくつかのヘッダまたはパラメータセット中にある、請求項1から
6のいずれか一項に記載の方法。
【請求項9】
処理回路(1202)によって実行されたとき、前記処理回路(1202)に、請求項1から
8のいずれか一項に記載の方法を実施させる命令(1244)を備える、コンピュータプログラム(1243)。
【請求項10】
請求項
9に記載のコンピュータプログラムを備える
コンピュータ可読記憶媒体。
【請求項11】
請求項1から
8のいずれか一項に記載の方法を実施するように適合された、装置(1200)。
【請求項12】
装置(1200)であって、前記装置が、
処理回路(1202)と、
メモリ(1242)と
を備え、前記メモリが、前記処理回路によって実行可能な命令(1244)を含んでおり、それにより、前記装置が、請求項1から
8のいずれか一項に記載の方法を実施するように動作可能である、装置(1200)。
【発明の詳細な説明】
【技術分野】
【0001】
ビデオデータの処理(たとえば、復号)に関係する実施形態が開示される。
【背景技術】
【0002】
1.HEVCおよびVVC
【0003】
高効率ビデオコーディング(HEVC)は、時間予測と空間予測の両方を利用する、ITU-TおよびMPEGによって規格化されたブロックベースビデオコーデックである。空間予測は、現在ピクチャ内からのイントラ(I)予測を使用して達成される。時間予測は、前に復号された参照ピクチャから、ブロックレベルでの単方向(P)予測または双方向インター(B)予測を使用して達成される。エンコーダでは、残差と呼ばれる、元のピクセルデータと予測されたピクセルデータとの間の差は、周波数ドメインに変換され、量子化され、次いで、同じくエントロピーコーディングされる、予測モードおよび動きベクトルなど、必要な予測パラメータとともに送信される前に、エントロピーコーディングされる。デコーダは、エントロピー復号と、逆量子化と、逆方向変換とを実施して残差を取得し、次いで、その残差をイントラ予測またはインター予測に追加してピクチャを再構築する。
【0004】
MPEGおよびITU-Tは、ジョイントビデオエキスプロラトリチーム(JVET:Joint Video Exploratory Team)内でHEVCの後継に取り組んでいる。開発中のこのビデオコーデックの名前は、多用途ビデオコーディング(VVC)である。本文を書いているときのVVCドラフト仕様の現在のバージョンは、JVET-Q2001-vDである。
【0005】
2.成分
【0006】
ビデオ(別名、ビデオシーケンス)は、各ピクチャ(別名、画像)が1つまたは複数の成分からなる一連のピクチャからなる。各成分は、サンプル値の2次元矩形アレイとして説明され得る。ビデオシーケンス中のピクチャは、3つの成分、すなわち、サンプル値がルーマ値である1つのルーマ成分Yと、サンプル値がクロマ値である2つのクロマ成分CbおよびCrとからなることが一般的である。また、クロマ成分の次元は、各次元においてルーマ成分よりも1/2だけ小さいことが一般的である。たとえば、HDピクチャのルーマ成分のサイズは1920×1080となり、クロマ成分は、各々、960×540の次元を有するであろう。成分は色成分と呼ばれることがある。
【0007】
3.ブロックおよびユニット
【0008】
ブロックは、サンプルの1つの2次元アレイである。ビデオコーディングでは、各成分がブロックにスプリットされ、コード化ビデオビットストリームは一連のコード化ブロックからなる。ビデオコーディングでは、ピクチャは、ピクチャの特定のエリアをカバーするユニットにスプリットされることが一般的である。各ユニットは、その特定のエリアをなす、すべての成分からのすべてのブロックからなり、各ブロックは、1つのユニットに完全に属する。H.264におけるマクロブロック、およびHEVCにおけるコーディングユニット(CU)が、ユニットの例である。
【0009】
ブロックは、代替的に、コーディングにおいて使用される変換が適用される2次元アレイとして規定され得る。これらのブロックは、「変換ブロック」という名前で知られている。代替的に、ブロックは、単一の予測モードが適用される2次元アレイとして規定され得る。これらのブロックは「予測ブロック」と呼ばれることがある。本出願では、ブロックという単語は、これらの規定のうちの1つに結び付けられないが、本明細書における説明は、いずれかの規定に適用され得る。
【0010】
4.残差、変換および量子化
【0011】
残差ブロックは、元のソースブロックのサンプル値と予測ブロックのサンプル値との間のサンプル値差を表すサンプルからなる。残差ブロックは、空間変換を使用して処理される。エンコーダでは、量子化係数の精度を制御する量子化パラメータ(QP)に従って、変換係数が量子化される。量子化係数は残差係数と呼ばれることがある。QP値が高いと、低い精度の係数、したがって低い忠実度の残差ブロックを生じることになる。デコーダは、残差係数を受信し、残差ブロックを導出するために逆量子化および逆方向変換を適用する。
【0012】
5.NALユニット
【0013】
HEVCとVVCの両方が、ネットワークアブストラクションレイヤ(NAL)を規定する。HEVCおよびVVCにおけるすべてのデータ(すなわち、ビデオコーディングレイヤ(VCL)データまたは非VCLデータの両方)が、NALユニット中にカプセル化される。VCL NALユニットは、ピクチャサンプル値を表すデータを含んでいる。非VCL NALユニットは、パラメータセットおよび補足エンハンスメント情報(SEI:supplemental enhancement information)メッセージなど、追加の関連するデータを含んでいる。HEVCにおけるNALユニットは、どんなタイプのデータがNALユニット中で搬送されるかを識別するNALユニットのNALユニットタイプ、NALユニットが属するレイヤIDおよび時間IDを指定するヘッダで始まる。NALユニットタイプは、NALユニットヘッダ中のnal_unit_typeコードワード中で送信され、そのタイプは、NALユニットがどのようにパースおよび復号されるべきであるかを示し、規定する。NALユニットのバイトの残りは、NALユニットタイプによって示されるタイプのペイロードである。ビットストリームは、一連の連結されたNALユニットからなる。
【0014】
HEVCについてのNALユニットヘッダについてのシンタックスが表1に示されている。
【0015】
VVCドラフトの現在のバージョンにおけるNALユニットヘッダについてのシンタックスが表2に示されている。
【0016】
現在のVVCドラフトのNALユニットタイプが表3に示されている。復号順序は、ビットストリーム内のNALユニットの順序と同じである、NALユニットが復号されるものとする順序である。復号順序は出力順序とは異なり得、出力順序は、復号されたピクチャがデコーダによって表示などのために出力されるべきである順序である。
【0017】
6.スライス
【0018】
HEVCにおけるスライスの概念は、ピクチャを独立してコーディングされたスライスに分割し、ここで、ピクチャ中の1つのスライスの復号は、同じピクチャの他のスライスから独立している。異なるコーディングタイプが同じピクチャのスライスのために使用され得る、すなわち、スライスは、Iスライス、Pスライス、またはBスライスのいずれかであり得る。スライスの1つの目的は、データ損失の場合に再同期を可能にすることである。HEVCでは、スライスは、CTUのセットである。
【0019】
VVCの現在のバージョンでは、ピクチャが、ラスタ走査スライスまたは矩形スライスのいずれかに区分され得る。ラスタ走査スライスは、ラスタ走査順序におけるいくつかの完全なタイルからなる。矩形スライスは、ピクチャ中の矩形領域、または1つのタイルの内部の連続する数のCTU行を一緒に占有する、タイルのグループからなる。各スライスは、シンタックスエレメントを備えるスライスヘッダを有する。これらのシンタックスエレメントからの復号されたスライスヘッダ値が、スライスを復号するときに使用される。各スライスは、1つのVCL NALユニット中で搬送される。VVCドラフト仕様の前のバージョンでは、スライスは、タイルグループと呼ばれた。
【0020】
7.ピクチャヘッダ
【0021】
現在のVVCドラフトは、PH_NUTに等しいnal_unit_typeを有する非VCL NALユニットである、ピクチャヘッダ(PH)を含む。ピクチャヘッダは、スライスヘッダと同様であるが、ピクチャヘッダ中のシンタックスエレメントの値が、1つのピクチャのすべてのスライスを復号するために使用される。
【0022】
VVCの現在のバージョンでは、コード化ピクチャのVCL NALユニットは、ピクチャヘッダによって先行され得る。ピクチャヘッダは、関連するピクチャのすべてのスライスについて共通であるパラメータを含んでいる。パラメータのうちのいくつかは、PPS中でシグナリングされる存在フラグを条件として、ピクチャヘッダ中で、またはピクチャ中の各スライスのスライスヘッダ中でのいずれかでシグナリングされ得る。HEVCは、ピクチャヘッダを有しない。VVCの現在のバージョンでは、各ピクチャについてピクチャヘッダNALユニットがあるか、またはピクチャヘッダシンタックスがスライスヘッダ中に存在するかのいずれかである。後者の場合、ピクチャごとに1つのスライスのみが可能にされる。VVCの現在のバージョンにおけるピクチャヘッダおよびピクチャヘッダ構造シンタックスが、以下で表4および表5に示されている。
【0023】
8.スライスヘッダ
【0024】
現在のVVCドラフトは、HEVCとまったく同様に、各スライスについてスライスヘッダ(SH)を含む。スライスヘッダは、スライスにおいて表されるすべてのタイルまたはタイル内のCTU行について共通であるパラメータを含む。VVCの現在のバージョンでは、いくつかのヘッダパラメータは、ピクチャパラメータセット中でシグナリングされる存在フラグを条件として、ピクチャヘッダ中で、またはスライスヘッダ中でのいずれかでシグナリングされ得る。VVCの現在のバージョンでは、ピクチャヘッダパラメータは、スライスヘッダ中でシグナリングされるフラグpicture_header_in_slice_header_flagを条件として、スライスヘッダ中でシグナリングされ得る。VVCの現在のバージョンにおけるスライスヘッダシンタックスが、以下で表6に示されている。
【0025】
9. パラメータセット
【0026】
HEVCは、3つのタイプのパラメータセット、すなわち、ピクチャパラメータセット(PPS)と、シーケンスパラメータセット(SPS)と、ビデオパラメータセット(VPS)とを指定する。PPSは、ピクチャ全体について共通であるデータを含んでおり、SPSは、コード化ビデオシーケンス(CVS)について共通であるデータを含んでおり、VPSは、複数のCVSについて共通であるデータを含んでいる。
【0027】
VVCも、これらのパラメータセットタイプを使用する。VVCでは、適応パラメータセット(APS)および復号能力情報(DCI)NALユニットもある。APSは、複数のスライスのために使用され得る情報を含んでいることがあり、同じピクチャの2つのスライスが、異なるAPSを使用することができる。DCIは、デコーダがビットストリーム全体中で遭遇することになるプロファイルおよびレベルに関して「ワーストケース」を指定する情報からなる。VVCの現在のバージョンにおけるピクチャパラメータセットシンタックスが、以下で示されている。
【0028】
2.1.10 VVCブロック構造
【0029】
ドラフトVVCビデオコーディング規格は、4分木プラス2分木プラス3分木ブロック構造(QTBT+TT)と呼ばれるブロック構造を使用し、ここで、各ピクチャが、最初に、コーディングツリーユニット(CTU)と呼ばれる正方形ブロックに区分される。すべてのCTUのサイズは同等である。各CTUが、正方形形状または長方形形状のいずれかを有することができるコーディングユニット(CU)にさらに区分される。CTUは、最初に、4分木構造によって区分され、次いで、CTUは、バイナリ構造において垂直方向にまたは水平方向にのいずれかで等しいサイズの区分でさらに区分されて、コーディングユニット(CU)を形成し得る。したがって、ブロックが、正方形形状または長方形形状のいずれかを有することができる。4分木および2分木の深度が、ビットストリームにおいてエンコーダによってセットされ得る。QTBTを使用してCTUを分割することの一例が、
図1に示されている。すなわち、
図1は、QTBTを使用してCTUをCUに区分することを示す。3分木(TT)部分は、CUを、2つの等しいサイズの区分ではなく3つの区分に分割する可能性を追加し、これは、ピクチャ中のコンテンツ構造により良く合うブロック構造を使用する可能性を増加させる。
【0030】
11.デブロッキングフィルタ
【0031】
ブロックが再構築された後に、コーディングされたブロック間の境界アーティファクトを低減するためにデブロッキングが適用される。
【0032】
デブロッキングは、最初に垂直境界に対して適用され、次いで、水平境界に対して適用される。境界は、変換ブロック境界または予測ブロック境界のいずれかである。各境界について、デブロッキングフィルタ境界強度パラメータ(bS)がセットされる。bSの値が0よりも大きい場合、デブロッキングが適用され得る。境界強度が大きくなるほど、適用されるフィルタ処理が強くなる。デブロッキングフィルタが境界に適用されるべきであると決定されたとき、デブロッキングプロセスは境界の各側の勾配を計算して、それぞれの側でいくつのサンプルが修正されるべきであるかの判断を行う。判断は、「強」、「弱」または「長いタップ」デブロッキングフィルタ判断のいずれかとして示される。たとえば、VVC強/弱フィルタ判断は、以下の表に示されており、互いの上/下の2つのブロック間の水平ボーダーをフィルタ処理するときにライン0およびライン3について検査される。
【0033】
デブロッキングフィルタ強度パラメータは、表インデックスとしての量子化パラメータQに基づく指定された表から決定される。量子化パラメータQは、Q=Clip3(0,63,qP+(slice_beta_offset_div2<<1))のように導出され、ここで、slice_beta_offset_div2は、サンプルq0,0を含んでいるスライスについてのシンタックスエレメントslice_beta_offset_div2の値である。
【0034】
デブロッキングフィルタ強度パラメータは、表インデックスとしての量子化パラメータQに基づく指定された表から決定される。
【0035】
Q=Clip3(0,65,qP+2*(bS-1)+(slice_tc_offset_div2<<1))であり、ここで、slice_tc_offset_div2は、サンプルq0,0を含んでいるスライスについてのシンタックスエレメントslice_tc_offset_div2の値である。
【0036】
さらに、qPは、サンプルq0,0およびp0,0を含んでいるコーディングブロックを含むコーディングユニットの平均qpを指定する。bSは、境界フィルタ処理強度を指定する。
【0037】
入力Qからのしきい変数β’およびtC’の導出が、以下の表に示されている。
【0038】
HEVCでは、Cb成分およびCr成分に適用されるβおよびtCについてのデブロッキングフィルタパラメータオフセットは、ビットストリーム中でシグナリングされず、ルーマ成分に適用されるオフセットに等しくなるようにセットされる。
【0039】
VVCでは、Y成分、Cb成分およびCr成分に適用されるβおよびtCについてのデブロッキングフィルタパラメータオフセットは、ビットストリーム中で別々にシグナリングされる。上記の表に示されているように、Cb成分およびCr成分に適用されるしきい変数β’およびtC’は、インデックスとして入力Qを使用することによって導出される。
【0040】
ここで、Cb成分に適用されるQは、それぞれβおよびtCから以下のように導出される。
Q=Clip3(0,63,qP+(slice_cb_beta_offset_div2<<1))
Q=Clip3(0,65,qP+2*(bS-1)+(slice_cb_tc_offset_div2<<1))。
【0041】
さらに、Cr成分に適用されるQは、それぞれβおよびtCから以下のように導出される。
Q=Clip3(0,63,qP+(slice_cr_beta_offset_div2<<1))
Q=Clip3(0,65,qP+2*(bS-1)+(slice_cr_tc_offset_div2<<1))。
【発明の概要】
【0042】
本明細書では、例としてピクチャパラメータセット(PPS)、ピクチャヘッダ(PH)およびスライスヘッダ(SH)中のシンタックスエレメントを使用する。それらのシンタックスエレメントは、1)3つの色成分Y、CbおよびCrに適用される(2で除算された)βおよびtCについてのデブロッキングパラメータオフセット(これらのシンタックスエレメントは「デブロッキングオフセット」と呼ばれる)と、2)Cb色成分およびCr色成分に適用される(2で除算された)βおよびtCについてのデブロッキングパラメータオフセット(これらのシンタックスエレメントは「クロマデブロッキングオフセット」と呼ばれる)と、3)ルーマ成分に適用される(2で除算された)βおよびtCについてのデブロッキングパラメータオフセット(これらのシンタックスエレメントは「ルーマデブロッキングオフセット」と呼ばれる)とを含む。
【0043】
1.一般的なシンタックス構成体問題
【0044】
VVCの現在のバージョンでは、(Syntax_Aと呼ばれる)第1のシンタックスエレメントがシグナリングされないとき、Syntax_Aの値は、第1の値に等しいと推論され得る。第1の値は、定数値、または(Syntax_Bと呼ばれる)第2のシンタックスエレメントの値のいずれかであり得る。言い換えれば、Syntax_Aがシグナリングされないとき、Syntax_Aの値は、(Syntax_Cと呼ばれる)第3のシンタックスエレメントの値に等しいと推論されないことがある。
【0045】
2.デブロッキング関係シンタックスエレメントをシグナリングすることの問題
【0046】
VVCの現在のバージョンでは、デブロッキングフィルタは、それぞれ、PPS、PHおよびSH中でシンタックスエレメントpps_deblocking_filter_disable_flag、ph_deblocking_filter_disabled_flagおよびslice_deblocking_filter_disabled_flagによって有効化/無効化され得る。フラグのうちの1つがシグナリングされ、値が0に等しいとき、デブロッキングオフセットは、それぞれ、PPS、PHおよびSH中でシグナリングされる。デブロッキングオフセットがストリーム中でシグナリングされないとき、デブロッキングオフセットの値は、以下の表に示されているように推論される。
【0047】
問題1:
【0048】
VVCの現在のバージョンでは、pps_deblocking_filter_disable_flagがPPS中に存在し、値が0に等しいとき、デブロッキングオフセットはPPS中でシグナリングされる。しかしながら、ビットストリームによって表されるビデオソースがルーマサンプル(モノクロームビデオ)のみを含むか、または3つの別個の色平面を使用してコーディングされる(separate_colour_plane_flagが1に等しい)とき、デブロッキングフィルタは、クロマ成分(CbおよびCr)に適用されない。VVCの現在のバージョンに伴う問題は、いくつかの場合には、クロマデブロッキングオフセットがPPS中でシグナリングされなければならないが、クロマデブロッキングオフセットが復号プロセスにおいて使用されないことになり、これが不要なビットレートコストであることである。
【0049】
問題2:
【0050】
VVCの現在のバージョンでは、デブロッキングオフセットは、色成分の各々についてデブロッキング強度を別々に制御するフレキシビリティを提供するために、3つの色成分について別々にシグナリングされる。しかしながら、1つの頻繁なデブロッキングフィルタセッティングは、すべての色成分について同じデブロッキング強度を使用する。たとえば、これは、VVCの開発において使用される共通テスト条件(CTC)についての場合であり、ここで、クロマデブロッキングオフセットは、ルーマデブロッキングオフセットと同じ値を有する。クロマデブロッキングオフセットを別々にシグナリングすることは、このセッティングのための不要なビットレートコストに至る。デブロッキングオフセットが、範囲[-12,12]をもつ符号付き整数0次指数ゴロムコード化(Exp-Golomb-coded)シンタックスエレメントであるとすれば、ビットレートコストは、以下の表に示されているようになる。
【0051】
デブロッキングオフセットがPPS、PHまたはSH中でシグナリングされるとき、クロマデブロッキングオフセットのビットコストは、少なくとも4ビットであり、多くとも36ビットである。
ビットコストは、ここで、上記の表に示されているデブロッキングオフセット値についてのビットコスト×4として計算され、これはクロマデブロッキングオフセットシンタックスエレメントの数である。
【0052】
問題3:
【0053】
VVCの現在のバージョンでは、デブロッキングフィルタが有効化されるとき、これは、デブロッキングフィルタがすべての色成分、たとえば、Y、CbおよびCrに関して有効化されることを暗示する。1つまたは複数の色成分に関してデブロッキングフィルタを有効化し、残りの色成分についてのデブロッキングフィルタを無効化することは可能でない。たとえば、ルーマ成分に関してデブロッキングフィルタを有効化するが、クロマ成分(CbおよびCr)に関してデブロッキングフィルタを無効化することは可能でない。
【0054】
本開示は、上記で説明された問題に対するソリューションを提案する。
【0055】
本開示の第1の態様によれば、第1のシンタックスエレメントSyntax_Aについての値を導出するための方法が提供される。本方法は、Syntax_Aがビットストリーム中に存在するかどうかを決定することを含む。本方法は、Syntax_Aがビットストリーム中に存在しないと決定したことの結果として、第1の条件が満たされた場合、Syntax_Aについての値を第1の値Bに等しいと導出すること、または第2の条件が満たされた場合、Syntax_Aについての値を第2の値Cに等しいと導出することを含む。
【0056】
本開示の第2の態様によれば、処理回路によって実行されたとき、処理回路に、第1の態様による方法を実施させる命令を備えるコンピュータプログラムが提供される。
【0057】
本開示の第3の態様によれば、第2の態様によるコンピュータプログラムを備えるキャリアが提供され、キャリアは、電子信号、光信号、無線信号、およびコンピュータ可読記憶媒体のうちの1つである。
【0058】
本開示の第4の態様によれば、装置が提供され、装置は、第1の態様による方法を実施するように適応される。
【0059】
実施形態の利点は、提案される推論方法を使用してシンタックスエレメントの値を推論することによってビットコストを低減することである。別の利点は、デブロッキングフィルタ有効化/無効化フラグによってデコーダ側におけるデブロッキングフィルタの動作コストを低減することである。別の利点は、デブロッキングフィルタ制御のフレキシビリティを増加させることである。
【0060】
本明細書に組み込まれ、明細書の一部をなす添付の図面は、様々な実施形態を示している。
【図面の簡単な説明】
【0061】
【
図1】CTUを分割することの一例を示す図である。
【
図2】例示的な一実施形態による、システムを示す図である。
【
図3】一実施形態による、エンコーダの概略ブロック図である。
【
図4】一実施形態による、エンコーダの概略ブロック図である。
【
図5】一実施形態による、プロセスを示すフローチャートである。
【
図6】一実施形態による、プロセスを示すフローチャートである。
【
図7】一実施形態による、プロセスを示すフローチャートである。
【
図8】一実施形態による、プロセスを示すフローチャートである。
【
図9】一実施形態による、プロセスを示すフローチャートである。
【
図10】一実施形態による、プロセスを示すフローチャートである。
【
図11】一実施形態による、プロセスを示すフローチャートである。
【
図12】一実施形態による、装置のブロック図である。
【発明を実施するための形態】
【0062】
図2は、例示的な一実施形態による、システム200を示す。システム200は、ネットワーク210(たとえば、インターネットまたは他のネットワーク)を介してデコーダ204と通信しているエンコーダ202を含む。
【0063】
図3は、一実施形態による、ビデオシーケンスのビデオフレーム(ピクチャ)中のピクセル値のブロック(以下「ブロック」)を符号化するためのエンコーダ202の概略ブロック図である。同じフレーム中のまたは前のフレーム中のすでに提供されたブロックから、動き推定器350によって動き推定を実施することによって、現在ブロックが予測される。動き推定の結果は、インター予測の場合、参照ブロックに関連する動きベクトルまたは変位ベクトルである。動きベクトルは、ブロックのインター予測を出力するために動き補償器350によって利用される。イントラ予測器349が、現在ブロックのイントラ予測を算出する。動き推定器/補償器350からの出力と、イントラ予測器349からの出力とは、現在ブロックについてイントラ予測またはインター予測のいずれかを選択するセレクタ351中に入力される。セレクタ351からの出力は、加算器341の形態の誤差計算器に入力され、加算器341は、現在ブロックのピクセル値をも受信する。加算器341は、ブロックとそのブロックの予測との間のピクセル値の差として残差誤差を計算および出力する。誤差は、離散コサイン変換などによって、変換器342中で変換され、量子化器343によって量子化され、その後、エントロピーエンコーダなどによるエンコーダ344におけるコーディングが続く。インターコーディングでは、推定された動きベクトルも、現在ブロックのコード化表現を生成するためにエンコーダ344にもたらされる。また、現在ブロックのための変換および量子化された残差誤差は、元の残差誤差を取り出すために、逆量子化器345と逆方向変換器346とに提供される。この誤差は、次のブロックの予測およびコーディングにおいて使用され得る参照ブロックを作成するために、動き補償器350またはイントラ予測器349から出力されたブロック予測に加算器347によって加算される。この新しい参照ブロックは、任意のブロッキングアーティファクトをなくすためにデブロッキングフィルタ処理を実施するために、実施形態に従って、デブロッキングフィルタユニット330によって最初に処理される。次いで、処理された新しい参照ブロックは、フレームバッファ348に一時的に記憶され、ここで、処理された新しい参照ブロックは、イントラ予測器349および動き推定器/補償器350にとって利用可能である。
【0064】
図4は、いくつかの実施形態による、デコーダ204の対応する概略ブロック図である。デコーダ204は、量子化および変換された残差誤差のセットを得るためにブロックの符号化表現を復号するための、エントロピーデコーダなどのデコーダ461を備える。これらの残差誤差は、逆量子化器462において量子化解除され、逆方向変換器463によって逆方向変換されて、残差誤差のセットを得る。これらの残差誤差は、加算器464において参照ブロックのピクセル値に加算される。参照ブロックは、インター予測が実施されるのかイントラ予測が実施されるのかに応じて、動き推定器/補償器467またはイントラ予測器466によって決定される。それにより、セレクタ468が加算器464と動き推定器/補償器467とイントラ予測器466とに相互接続される。加算器464から出力された得られた復号されたブロックは、任意のブロッキングアーティファクトをデブロッキングフィルタ処理するために、実施形態によるデブロッキングフィルタユニット330に入力される。フィルタ処理されたブロックは、デコーダ504から出力され、さらに、好ましくは、フレームバッファ465に一時的に提供され、復号されるべき後続のブロックのための参照ブロックとして使用され得る。フレームバッファ465は、それにより、動き推定器/補償器467に接続されて、ピクセルの記憶されたブロックを動き推定器/補償器467にとって利用可能にする。加算器464からの出力はまた、好ましくは、イントラ予測器466に入力されて、フィルタ処理されていない参照ブロックとして使用される。
【0065】
実施形態
【0066】
以下の説明では、上記で説明された問題のうちの1つまたは複数を解決する様々な実施形態が説明される。2つまたはそれ以上の実施形態、または実施形態の一部が組み合わせられて、依然として本開示によってカバーされる新しいソリューションを形成し得ることが、当業者によって理解されるべきである。
【0067】
実施形態1- シンタックスエレメント値を推論するための方法
【0068】
第1の実施形態では、シンタックスエレメントSyntax_Aについての値を決定するための方法が提案される。Syntax_Aが存在しないとき、第1の条件に応じて、Syntax_Aの値は、値Bに等しいと推論され、ここで、値Bは、少なくとも、シンタックスエレメントSyntax_Bについての値から導出され、第2の条件に応じて、Syntax_Aの値は、値Cであると推論され、ここで、値Cは、少なくとも、シンタックスエレメントSyntax_Cについての値から導出される。言い換えれば、Syntax_Aが存在しないとき、Syntax_Aの値は、少なくとも2つの異なるシンタックスエレメントの値から推論され得る。
【0069】
したがって、一実施形態では、本方法は、以下のステップを含む。
【0070】
第1のシンタックスエレメント(すなわち、Syntax_C)の値を決定するステップ。第2のシンタックスエレメント(すなわち、Syntax_B)の値を決定するステップ。第3のシンタックスエレメント(すなわち、Syntax_D)の値を決定するステップ。第4のシンタックスエレメント(すなわち、Syntax_A)がビットストリーム中に存在するか否かを決定するステップ。
【0071】
Syntax_Aがビットストリーム中に存在しないと決定されたとき、Syntax_Dの決定された値が第1の値に等しい場合、Syntax_Aの値は値Bであると推論され、ここで、値Bは、少なくとも、Syntax_Bの決定された値から導出され、Syntax_Dの決定された値が第2の値に等しい場合、Syntax_Aの値は値Cであると推論され、ここで、値Cは、少なくとも、Syntax_Cの値から導出される。
【0072】
一実施形態では、Syntax_BおよびSyntax_Cの値を決定することは、シンタックスエレメントがビットストリーム中に存在するか否かを決定することを含み、シンタックスエレメントがビットストリーム中に存在しないと決定された場合、シンタックスエレメントの値は推論されるか、さもなければ、シンタックスエレメントの値は復号される。
【0073】
一実施形態では、Syntax_Dの値を決定することは、シンタックスエレメントがビットストリーム中に存在するか否かを決定することを含む。Syntax_Dがビットストリーム中に存在すると決定された場合、Syntax_Dの決定された値は、第1の値であり、ここで、第1の値は、条件である(たとえば、Syntax_Dが存在する)か、または第1の値は、Syntax_Dの復号された値(たとえば、0)に等しい。Syntax_Dがビットストリーム中に存在しない場合、Syntax_Dの決定された値は、第2の値であり、ここで、第2の値は、条件である(たとえば、Syntax_Dは存在しない)か、または第2の値は、推論された値(たとえば、2)に等しい。
【0074】
シンタックスエレメントSyntax_A、Syntax_B、Syntax_C、およびSyntax_Dは、1つまたは複数のヘッダまたはパラメータセット中のシンタックスエレメントであり得る。
【0075】
図5は、上記の説明による、シンタックスエレメント(Syntax_A)についての値を導出するためのプロセス500を示すフローチャートである。プロセス500は、デコーダによって実施され得る。
【0076】
ステップs502は、値(D)を導出することを含む。一実施形態では、Dを導出することは、i)あるシンタックスエレメント(Syntax_D)がビットストリーム中に存在し、Syntax_Dが、Syntax_Aがビットストリーム中に含まれることを示す場合、D=X(たとえば、1)をセットすること、ii)Syntax_Dがビットストリーム中に存在し、Syntax_Dが、Syntax_Aがビットストリーム中に含まれないことを示す場合、D=Y(たとえば、0)をセットすること、あるいは、iii)他の場合、DがXまたはYのいずれかに等しくないようにDをセットすること(たとえば、DをZに等しくセットすること)を含む。
【0077】
ステップs504は、DがXに等しいかどうかを決定することを含む。DがXに等しい場合、プロセスはステップs506に進み、さもなければ、プロセスはステップs508に進む。
【0078】
ステップs506は、Syntax_Aについての値を値Aに等しくセットすることを含み、ここで、値Aは、Syntax_Aの復号された値である。
【0079】
ステップs508は、DがYに等しいかどうかを決定することを含む。DがYに等しい場合、プロセスはステップs510に進み、さもなければ、プロセスはステップs512に進む。
【0080】
ステップs510は、Syntax_Aについての値を値Bに等しくセットすることを含み、ここで、値Bは、Syntax_Bに関連する値である(たとえば、Bは、Syntax_Bの復号された値に等しくなり得る)。
【0081】
ステップs512は、Syntax_Aについての値を値Cに等しくセットすることを含み、ここで、値Cは、Syntax_Cに関連する値である(たとえば、Cは、Syntax_Cの復号された値に等しくなり得る)。
【0082】
図6は、シンタックスエレメント(Syntax_A)(別名「第6の」シンタックスエレメント)についての値を導出するためのプロセス600を示すフローチャートである。プロセス600は、デコーダによって実施され得る。
【0083】
ステップs602は、第1のシンタックスエレメントSyntax_Cがビットストリーム中に存在するか否かを決定することを含む。Syntax_Cが存在する場合、プロセスはステップs604に進み、さもなければ、プロセスはステップs606に進む。
【0084】
ステップs604(Syntax_Cが存在する)は、第1のシンタックスエレメントSyntax_Cを復号することと、第1の値を、復号された第1のシンタックスエレメントSyntax_Cの値に等しいものとして導出することとを含む。
【0085】
ステップs606(Syntax_Cが存在しない)は、第1の値を第2の値に等しいものとして導出することを含み、第2の値は定数値であり得るか、または第2の値は第2のシンタックスエレメントの値であり得る。
【0086】
ステップs608は、第3のシンタックスエレメントSyntax_Bがビットストリーム中に存在するか否かを決定することを含む。Syntax_Bが存在する場合、プロセスはステップs610に進み、さもなければ、プロセスはステップs612に進む。
【0087】
ステップs610(Syntax_Bが存在する)は、第3のシンタックスエレメントSyntax_Bを復号することと、第3の値を、復号された第3のシンタックスエレメントSyntax_Bの値に等しいものとして導出することとを含む。
【0088】
ステップs612(Syntax_Bが存在しない)は、第3の値を第4の値に等しいものとして導出することを含み、第4の値は定数値であり得るか、または第4の値は第4のシンタックスエレメントの値であり得る。
【0089】
ステップs614は、第5のシンタックスエレメントSyntax_Dがビットストリーム中に存在するか否かを決定することを含む。Syntax_Dが存在する場合、プロセスはステップs616に進み、さもなければ、プロセスはステップs624に進む。
【0090】
ステップs616(Syntax_Dが存在する)は、第5のシンタックスエレメントSyntax_Dを復号することと、第5の値を、復号された第5のシンタックスエレメントSyntax_Dの値に等しいものとして導出することとを含み、第5の値は、第6のシンタックスエレメントSyntax_Aがビットストリーム中に存在するか否かを示す。
【0091】
ステップs618は、第5の値に基づいて、Syntax_Aがビットストリーム中に存在するか否かを決定することを含む。Syntax_Aが存在する場合、プロセスはステップs620に進み、さもなければ、プロセスはステップs622に進む。
【0092】
ステップs620(Syntax_Aが存在する)は、第6のシンタックスエレメントSyntax_Aを復号することと、第6の値を、復号された第6のシンタックスエレメントSyntax_Aの値に等しいものとして導出することとを含む。
【0093】
ステップs622(Syntax_Aが存在しない)は、第6の値を第3の値に等しいものとして導出することを含み、第3の値は、第3のシンタックスエレメントSyntax_Bの値である。
【0094】
ステップs624(Syntax_Dが存在しない)は、第6の値を第1の値に等しいものとして導出することを含み、第1の値は、第1のシンタックスエレメントSyntax_Cの値である。
【0095】
ステップs626は、ピクチャを復号するためのプロセスにおいて第6の値を使用することを含み、Syntax_A、Syntax_B、Syntax_C、Syntax_Dは、4つの異なるシンタックスエレメントである。
【0096】
図7は、シンタックスエレメント(Syntax_A)についての値を推論するためのプロセス700を示すフローチャートである。プロセス700は、デコーダによって実施され得る。
【0097】
ステップs702は、第1のシンタックスエレメントSyntax_Cがビットストリーム中に存在するか否かを決定することを含む。Syntax_Cが存在する場合、プロセスはステップs704に進み、さもなければ、プロセスはステップs706に進む。
【0098】
ステップs704(Syntax_Cが存在する)は、第1のシンタックスエレメントSyntax_Cを復号することと、第1の値を、復号された第1のシンタックスエレメントSyntax_Cの値に等しいものとして導出することとを含む。
【0099】
ステップs706(Syntax_Cが存在しない)は、第1の値を第2の値に等しいものとして導出することを含み、第2の値は定数値であり得るか、または第2の値は第2のシンタックスエレメントの値であり得る。
【0100】
ステップs708は、第3のシンタックスエレメントSyntax_Bがビットストリーム中に存在するか否かを決定することを含む。Syntax_Bが存在する場合、プロセスはステップs710に進み、さもなければ、プロセスはステップs712に進む。
【0101】
ステップs710(Syntax_Bが存在する)は、第3のシンタックスエレメントSyntax_Bを復号することと、第3の値を、復号された第3のシンタックスエレメントSyntax_Bの値に等しいものとして導出することとを含む。
【0102】
ステップs712(Syntax_Bが存在しない)は、第3の値を第4の値に等しいものとして導出することを含み、第4の値は定数値であり得るか、または第4の値は第4のシンタックスエレメントの値であり得る。
【0103】
ステップs714は、第5のシンタックスエレメントSyntax_Dがビットストリーム中に存在するか否かを決定することを含む。Syntax_Dが存在する場合、プロセスはステップs716に進み、さもなければ、プロセスはステップs718に進む。
【0104】
ステップs716(Syntax_Dが存在する)は、第5のシンタックスエレメントSyntax_Dを復号することと、第5の値を、復号された第5のシンタックスエレメントSyntax_Dの値に等しいものとして導出することとを含み、第5の値は、第6のシンタックスエレメントSyntax_Aがビットストリーム中に存在するか否かを示す。
【0105】
ステップs718(Syntax_Dが存在しない)は、第5の値を第6の値に等しいものとして導出することを含み、第6の値は定数値であり得るか、または第6の値は第6のシンタックスエレメントの値であり得る。
【0106】
ステップs702は、第5の値に基づいて、第7のシンタックスエレメントSyntax_Aがビットストリーム中に存在するか否かを決定することを含む(たとえば、第5の値がXの値(たとえば、X=1)に等しい場合、これは、Syntax_Aがビットストリーム中に存在することを指定する)。Syntax_Aが存在する場合、プロセスはステップs722に進み、さもなければ、プロセスはs724に進む。
【0107】
ステップs722(Syntax_Aが存在する)は、第7のシンタックスエレメントSyntax_Aを復号することと、第7の値を、復号された第7のシンタックスエレメントSyntax_Aの値に等しいものとして導出することとを含む。
【0108】
ステップs724(Syntax_Aが存在しない)は、第5の値が(Yで示される)第9の値に等しいかどうかを決定することを含む。第5の値がYに等しい場合、第7のシンタックスエレメントSyntax_Aの値は、第3のシンタックスエレメントSyntax_Bの値に等しいものとして推論されるべきである。第5の値がYに等しい場合、プロセスはステップs726に進み、さもなければ、プロセスはステップs728に進む。
【0109】
ステップs726は、第7の値を第3の値に等しいものとして導出することを含み、第3の値は、第3のシンタックスエレメントSyntax_Bの値である。
【0110】
ステップs728は、第7の値を第1の値に等しいものとして導出することを含み、第1の値は、第1のシンタックスエレメントSyntax_Cの値である。
【0111】
ステップs730は、ピクチャを復号するためのプロセスにおいて第7の値を使用することを含み、Syntax_A、Syntax_B、Syntax_C、Syntax_Dは、4つの異なるシンタックスエレメントである。
【0112】
使用事例1(
図8) PH中のクロマデブロッキングオフセットの値を推論すること
【0113】
この使用事例では、(Syntax_Aに対応する)クロマデブロッキングオフセットがPH中に存在するか否かを示す(上記で説明されたSyntax_Dに対応する)存在フラグが、PHに追加される。フラグは、たとえば、ph_deblocking_chroma_offsets_present_flagと呼ばれることがある。提案されるフラグが第1の値(たとえば、1)に等しいとき、クロマデブロッキングオフセットがビットストリーム中でシグナリングされると決定される。提案されるフラグが存在し、フラグの値が第2の値(たとえば、0)に等しいとき、クロマデブロッキングオフセットがシグナリングされないが、PH中のルーマデブロッキングオフセットの値に等しくなるようにセットされると決定される。提案されるフラグが存在しないとき、クロマデブロッキングオフセットがシグナリングされないが、PPS中のクロマデブロッキングオフセットの値に等しくなるようにセットされるべきであると決定される。
【0114】
この使用事例における提案される方法は、Syntax_Aが存在せず、Syntax_Dの決定された値が第1の値に等しい(たとえば、第1の値が、Syntax_Dが存在するということである)とき、Syntax_Aの値がSyntax_Bの値であると推論され、Syntax_Dの決定された値が第2の値に等しい(たとえば、第2の値が、Syntax_Dが存在しないということである)場合、Syntax_Aの値がSyntax_Cの値であると推論され、Syntax_Aが4つのシンタックスエレメント、すなわち、ph_cb_beta_offset_div2、ph_cb_tc_offset_div2、ph_cr_beta_offset_div2またはph_cr_tc_offset_div2のうちの1つを表す、やり方で、実施形態1に基づく。以下で、シンタックス構成体擬似コードを示すための一例として、Syntax_Aをph_cb_beta_offset_div2シンタックスエレメントに等しくセットした。
【0115】
この実施形態の別のバージョンでは、Syntax_B、Syntax_CおよびSyntax_Dのうちの少なくとも1つは、定数値である。
【0116】
この実施形態の別のバージョンでは、Syntax_B、Syntax_CおよびSyntax_Dのうちの少なくとも1つは、ビットストリーム中の1つまたは複数のシンタックスエレメントから導出された値である。
【0117】
以下は、使用事例1についての例示的なシンタックスおよびセマンティクスである。
【0118】
1に等しいdeblocking_filter_control_present_flagは、PPS中のデブロッキングフィルタ制御シンタックスエレメントの存在を指定する。0に等しいdeblocking_filter_control_present_flagは、PPS中のデブロッキングフィルタ制御シンタックスエレメントの不在を指定する。
【0119】
1に等しいdeblocking_filter_override_enabled_flagは、PPSを参照するPH中のph_deblocking_filter_override_flag、またはPPSを参照するスライスヘッダ中のslice_deblocking_filter_override_flagの存在を指定する。0に等しいdeblocking_filter_override_enabled_flagは、PPSを参照するPH中のph_deblocking_filter_override_flag、またはPPSを参照するスライスヘッダ中のslice_deblocking_filter_override_flagの不在を指定する。存在しないとき、deblocking_filter_override_enabled_flagの値は0に等しいと推論される。
【0120】
1に等しいpps_deblocking_filter_disabled_flagは、デブロッキングフィルタの動作が、slice_deblocking_filter_disabled_flagが存在しないPPSを参照するスライスのために適用されないことを指定する。0に等しいpps_deblocking_filter_disabled_flagは、デブロッキングフィルタの動作が、slice_deblocking_filter_disabled_flagが存在しないPPSを参照するスライスのために適用されることを指定する。存在しないとき、pps_deblocking_filter_disabled_flagの値は0に等しいと推論される。いくつかの実施形態では、pps_deblocking_filter_disabled_flagは、!pps_deblocking_filter_disabled_flagと等価であるpps_deblocking_filter_enabled_flagと交換される。したがって、0に等しいpps_deblocking_filter_enabled_flagは、デブロッキングフィルタの動作が、slice_deblocking_filter_disabled_flagが存在しないPPSを参照するスライスのために適用されないことを指定し、1に等しいpps_deblocking_filter_enabled_flagは、デブロッキングフィルタの動作が、slice_deblocking_filter_disabled_flagが存在しないPPSを参照するスライスのために適用されることを指定する。存在しないとき、pps_deblocking_filter_enabled_flagの値は1に等しいと推論される。
【0121】
pps_beta_offset_div2およびpps_tc_offset_div2は、PPSを参照するスライスについてのルーマ成分に適用される(2で除算された)βおよびtCについてのデフォルトデブロッキングパラメータオフセットが、PPSを参照するピクチャヘッダまたはスライスのスライスヘッダ中に存在するデブロッキングパラメータオフセットによってオーバーライドされない限り、そのデフォルトデブロッキングパラメータオフセットを指定する。pps_beta_offset_div2の値とpps_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、pps_beta_offset_div2の値とpps_tc_offset_div2の値とは、両方とも0に等しいと推論される。
【0122】
pps_cb_beta_offset_div2およびpps_cb_tc_offset_div2は、PPSを参照するスライスについてのCb成分に適用される(2で除算された)βおよびtCについてのデフォルトデブロッキングパラメータオフセットが、PPSを参照するピクチャヘッダまたはスライスのスライスヘッダ中に存在するデブロッキングパラメータオフセットによってオーバーライドされない限り、そのデフォルトデブロッキングパラメータオフセットを指定する。pps_cb_beta_offset_div2の値とpps_cb_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、pps_cb_beta_offset_div2の値とpps_cb_tc_offset_div2の値とは、両方とも0に等しいと推論される。
【0123】
pps_cr_beta_offset_div2およびpps_cr_tc_offset_div2は、PPSを参照するスライスについてのCr成分に適用される(2で除算された)βおよびtCについてのデフォルトデブロッキングパラメータオフセットが、PPSを参照するピクチャヘッダまたはスライスのスライスヘッダ中に存在するデブロッキングパラメータオフセットによってオーバーライドされない限り、そのデフォルトデブロッキングパラメータオフセットを指定する。pps_cr_beta_offset_div2の値とpps_cr_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、pps_cr_beta_offset_div2の値とpps_cr_tc_offset_div2の値とは、両方とも0に等しいと推論される。
【0124】
1に等しいph_deblocking_filter_override_flagは、デブロッキングパラメータがPH中に存在することを指定する。0に等しいph_deblocking_filter_override_flagは、デブロッキングパラメータがPH中に存在しないことを指定する。存在しないとき、ph_deblocking_filter_override_flagの値は0に等しいと推論される。
【0125】
1に等しいph_deblocking_filter_disabled_flagは、デブロッキングフィルタの動作が、PHに関連するスライスのために適用されないことを指定する。0に等しいph_deblocking_filter_disabled_flagは、デブロッキングフィルタの動作が、PHに関連するスライスのために適用されることを指定する。ph_deblocking_filter_disabled_flagが存在しないとき、ph_deblocking_filter_disabled_flagは、pps_deblocking_filter_disabled_flagに等しいと推論される。いくつかの実施形態では、ph_deblocking_filter_disabled_flagは、!ph_deblocking_filter_disabled_flagと等価であるph_deblocking_filter_enabled_flagと交換される。したがって、0に等しいph_deblocking_filter_enabled_flagは、デブロッキングフィルタの動作が、PHに関連するスライスのために適用されないことを指定し、1に等しいph_deblocking_filter_enabled_flagは、デブロッキングフィルタの動作が、PHに関連するスライスのために適用されることを指定する。ph_deblocking_filter_enabled_flagが存在しないとき、ph_deblocking_filter_enabled_flagは、!pps_deblocking_filter_disabled_flagに等しいと推論されるか、またはph_deblocking_filter_enabled_flagは、pps_deblocking_filter_enabled_flagに等しいと推論される。
【0126】
ph_beta_offset_div2およびph_tc_offset_div2は、PHに関連するスライスについてのルーマ成分に適用される(2で除算された)βおよびtCについてのデブロッキングパラメータオフセットを指定する。ph_beta_offset_div2の値とph_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、ph_beta_offset_div2の値およびph_tc_offset_div2の値は、それぞれ、pps_beta_offset_div2およびpps_tc_offset_div2に等しいと推論される。
【0127】
1に等しいph_deblocking_chroma_offsets_present_flagは、PH中のCb成分およびCr成分に適用される(2で除算された)βおよびtCについてのデブロッキングパラメータオフセットの存在を指定する。0に等しいph_deblocking_chroma_offsets_present_flagは、PH中のCb成分およびCr成分に適用される(2で除算された)βおよびtCについてのデブロッキングパラメータオフセットの不在を指定する。存在しないとき、ph_deblocking_chroma_offsets_present_flagの値は0に等しいと推論される。
【0128】
ph_cb_beta_offset_div2およびph_cb_tc_offset_div2は、PHに関連するスライスについてのCb成分に適用される(2で除算された)βおよびtCについてのデブロッキングパラメータオフセットを指定する。ph_cb_beta_offset_div2の値とph_cb_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、ph_cb_beta_offset_div2の値およびph_cb_tc_offset_div2の値は、以下のように推論される。1)ph_deblocking_chroma_offsets_present_flagが存在するとき、ph_cb_beta_offset_div2の値およびph_cb_tc_offset_div2の値は、それぞれ、ph_beta_offset_div2およびph_tc_offset_div2に等しいと推論され、2)ph_deblocking_chroma_offsets_present_flagが存在しないとき、ph_cb_beta_offset_div2の値およびph_cb_tc_offset_div2の値は、それぞれ、pps_cb_beta_offset_div2およびpps_cb_tc_offset_div2に等しいと推論される。
【0129】
ph_cr_beta_offset_div2およびph_cr_tc_offset_div2は、PHに関連するスライスについてのCr成分に適用される(2で除算された)βおよびtCについてのデブロッキングパラメータオフセットを指定する。ph_cr_beta_offset_div2の値とph_cr_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、ph_cr_beta_offset_div2の値およびph_cr_tc_offset_div2の値は、以下のように推論される。1)ph_deblocking_chroma_offsets_present_flagが存在するとき、ph_cr_beta_offset_div2の値およびph_cr_tc_offset_div2の値は、それぞれ、ph_beta_offset_div2およびph_tc_offset_div2に等しいと推論され、2)ph_deblocking_chroma_offsets_present_flagが存在しないとき、ph_cr_beta_offset_div2の値およびph_cr_tc_offset_div2の値は、それぞれ、pps_cr_beta_offset_div2およびpps_cr_tc_offset_div2に等しいと推論される。
【0130】
構成体は、上記のシンタックス表を参照して、
図8に示されている以下の復号フローチャートによって説明され得る。
【0131】
ステップs802は、pps_cb_beta_offset_div2の値を決定することを含む。
【0132】
ステップs804は、ph_beta_offset_div2がビットストリーム中に存在するかどうかを決定することを含む。ph_beta_offset_div2がビットストリーム中に存在する場合、プロセス800はステップs806に進み、さもなければ、プロセス800はステップs818に進む。代替実施形態では、ステップs804は、あるフラグ(たとえば、ph_deblocking_filter_disabled_flagまたはph_deblocking_filter_enabled_flag)がv1に等しいのかv2に等しいのかを決定することを含み、ここで、v1は第1の値であり、v2は第2の値であり、v2はv1に等しくない。あるフラグが存在し、v1に等しい値を有するとき、プロセス800はステップs806に進み、さもなければ(そのフラグが存在しないか、または存在するがv2に等しい値を有するかのいずれかである)、プロセス800はステップs818に進む。あるフラグがph_deblocking_filter_disabled_flagである実施形態では、v1=0、およびv2=1である。あるフラグがph_deblocking_filter_enabled_flagである実施形態では、v1=1、およびv2=0である。
【0133】
ステップs806は、ph_beta_offset_div2を復号することを含む。
【0134】
ステップs808は、ph_deblocking_chroma_offsets_present_flagがビットストリーム中に存在するかどうかを決定することを含む。ph_deblocking_chroma_offsets_present_flagがビットストリーム中に存在する場合、プロセス800はステップs810に進み、さもなければ、プロセス800はステップs818に進む。代替実施形態では、ステップs808は、chromaArrayTypeが0に等しいか否かを決定することを含む。chromaArrayTypeが0に等しいとき、プロセス800はステップs818に進み、さもなければ(chromaArrayTypeが0に等しくない)、プロセス800はs810に進む。
【0135】
ステップs810は、ph_deblocking_chroma_offsets_present_flagを復号することを含む。
【0136】
ステップs812は、ph_deblocking_chroma_offsets_present_flagが1に等しいかどうかを決定することを含む。ph_deblocking_chroma_offsets_present_flagが1に等しい場合、プロセス800はステップs814に進み、さもなければ、プロセス800はステップs816に進む。
【0137】
ステップs814は、ph_cb_beta_offset_div2を復号することを含む。
【0138】
ステップs816は、ph_cb_beta_offset_div2を、ph_beta_offset_div2の値に等しいものとして推論することを含む。
【0139】
ステップs818は、ph_cb_beta_offset_div2を、pps_cb_beta_offset_div2の値に等しいものとして推論することを含む。
【0140】
使用事例2(
図9):SH中のクロマデブロッキングオフセットの値を推論すること
【0141】
クロマデブロッキングオフセットがSH中に存在するか否かを示す存在フラグをSHに追加することが提案される。フラグは、たとえば、slice_deblocking_chroma_offsets_present_flagと呼ばれることがある。提案されるフラグが第1の値(たとえば、1)に等しいとき、クロマデブロッキングオフセットがビットストリーム中でシグナリングされると決定される。提案されるフラグが存在し、第2の値(たとえば、0)に等しいフラグの値であるとき、クロマデブロッキングオフセットがシグナリングされないが、SH中のルーマデブロッキングオフセットの値に等しくなるようにセットされると決定される。提案されるフラグが存在しないとき、クロマデブロッキングオフセットがシグナリングされないが、PH中のクロマデブロッキングオフセットの値に等しくなるようにセットされると決定される。
【0142】
提案される方法は、Syntax_Aが存在せず、Syntax_Dの決定された値が第1の値に等しい(たとえば、第1の値が、Syntax_Dが存在するということである)とき、Syntax_Aの値がSyntax_Bの値であると推論され、Syntax_Dの決定された値が第2の値に等しい(たとえば、第2の値が、Syntax_Dが存在しないということである)場合、Syntax_Aの値がSyntax_Cの値であると推論され、Syntax_Aが4つのシンタックスエレメント、すなわち、slice_cb_beta_offset_div2、slice_cb_tc_offset_div2、slice_cr_beta_offset_div2、またはslice_cr_tc_offset_div2のうちの1つを表す、やり方で、実施形態1に基づく。ここで、シンタックス構成体擬似コードを示すための一例として、slice_cb_beta_offset_div2を表すSyntax_Aを使用する。
【0143】
この実施形態の別のバージョンでは、Syntax_B、Syntax_CおよびSyntax_Dのうちの少なくとも1つは定数値であるか、またはビットストリーム中の1つまたは複数のシンタックスエレメントから導出された値である。以下は、この使用事例についての例示的なシンタックスおよびセマンティクスである。
【0144】
1に等しいdeblocking_filter_control_present_flagは、PPS中のデブロッキングフィルタ制御シンタックスエレメントの存在を指定する。0に等しいdeblocking_filter_control_present_flagは、PPS中のデブロッキングフィルタ制御シンタックスエレメントの不在を指定する。
【0145】
1に等しいdeblocking_filter_override_enabled_flagは、PPSを参照するPH中のph_deblocking_filter_override_flag、またはPPSを参照するスライスヘッダ中のslice_deblocking_filter_override_flagの存在を指定する。0に等しいdeblocking_filter_override_enabled_flagは、PPSを参照するPH中のph_deblocking_filter_override_flag、またはPPSを参照するスライスヘッダ中のslice_deblocking_filter_override_flagの不在を指定する。存在しないとき、deblocking_filter_override_enabled_flagの値は0に等しいと推論される。
【0146】
1に等しいpps_deblocking_filter_disabled_flagは、デブロッキングフィルタの動作が、slice_deblocking_filter_disabled_flagが存在しないPPSを参照するスライスのために適用されないことを指定する。0に等しいpps_deblocking_filter_disabled_flagは、デブロッキングフィルタの動作が、slice_deblocking_filter_disabled_flagが存在しないPPSを参照するスライスのために適用されることを指定する。存在しないとき、pps_deblocking_filter_disabled_flagの値は0に等しいと推論される。上述のように、pps_deblocking_filter_disabled_flagは、pps_deblocking_filter_enbabled_flagと交換され得る。上述のように、pps_deblocking_filter_disabled_flagは、pps_deblocking_filter_enbabled_flagと交換され得る。
【0147】
pps_beta_offset_div2およびpps_tc_offset_div2は、PPSを参照するスライスについてのルーマ成分に適用される(2で除算された)βおよびtCについてのデフォルトデブロッキングパラメータオフセットが、PPSを参照するピクチャヘッダまたはスライスのスライスヘッダ中に存在するデブロッキングパラメータオフセットによってオーバーライドされない限り、そのデフォルトデブロッキングパラメータオフセットを指定する。pps_beta_offset_div2の値とpps_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、pps_beta_offset_div2の値とpps_tc_offset_div2の値とは、両方とも0に等しいと推論される。
【0148】
pps_cb_beta_offset_div2およびpps_cb_tc_offset_div2は、PPSを参照するスライスについてのCb成分に適用される(2で除算された)βおよびtCについてのデフォルトデブロッキングパラメータオフセットが、PPSを参照するピクチャヘッダまたはスライスのスライスヘッダ中に存在するデブロッキングパラメータオフセットによってオーバーライドされない限り、そのデフォルトデブロッキングパラメータオフセットを指定する。pps_cb_beta_offset_div2の値とpps_cb_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、pps_cb_beta_offset_div2の値とpps_cb_tc_offset_div2の値とは、両方とも0に等しいと推論される。
【0149】
pps_cr_beta_offset_div2およびpps_cr_tc_offset_div2は、PPSを参照するスライスについてのCr成分に適用される(2で除算された)βおよびtCについてのデフォルトデブロッキングパラメータオフセットが、PPSを参照するピクチャヘッダまたはスライスのスライスヘッダ中に存在するデブロッキングパラメータオフセットによってオーバーライドされない限り、そのデフォルトデブロッキングパラメータオフセットを指定する。pps_cr_beta_offset_div2の値とpps_cr_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、pps_cr_beta_offset_div2の値とpps_cr_tc_offset_div2の値とは、両方とも0に等しいと推論される。
【0150】
1に等しいslice_deblocking_filter_override_flagは、デブロッキングパラメータがスライスヘッダ中に存在することを指定する。0に等しいslice_deblocking_filter_override_flagは、デブロッキングパラメータがスライスヘッダ中に存在しないことを指定する。存在しないとき、slice_deblocking_filter_override_flagの値は、ph_deblocking_filter_override_flagに等しいと推論される。
【0151】
1に等しいslice_deblocking_filter_disabled_flagは、デブロッキングフィルタの動作が、現在スライスのために適用されないことを指定する。0に等しいslice_deblocking_filter_disabled_flagは、デブロッキングフィルタの動作が、現在スライスのために適用されることを指定する。slice_deblocking_filter_disabled_flagが存在しないとき、slice_deblocking_filter_disabled_flagは、ph_deblocking_filter_disabled_flagに等しいと推論されるか、またはslice_deblocking_filter_disabled_flagは、!ph_deblocking_filter_enabled_flagに等しいと推論される。slice_deblocking_filter_disabled_flagは、!slice_deblocking_filter_disabled_flagと等価であるslice_deblocking_filter_enabled_flagと交換され得る。
【0152】
slice_beta_offset_div2およびslice_tc_offset_div2は、現在スライスについてのルーマ成分に適用される(2で除算された)βおよびtCについてのデブロッキングパラメータオフセットを指定する。slice_beta_offset_div2の値とslice_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、slice_beta_offset_div2の値およびslice_tc_offset_div2の値は、それぞれ、ph_beta_offset_div2およびph_tc_offset_div2に等しいと推論される。
【0153】
1に等しいslice_deblocking_chroma_offsets_present_flagは、スライスヘッダ中のCb成分およびCr成分に適用される(2で除算された)βおよびtCについてのデブロッキングパラメータオフセットの存在を指定する。0に等しいslice_deblocking_chroma_offsets_present_flagは、スライスヘッダ中のCb成分およびCr成分に適用される(2で除算された)βおよびtCについてのデブロッキングパラメータオフセットの不在を指定する。存在しないとき、slice_deblocking_chroma_offsets_present_flagの値は0に等しいと推論される。
【0154】
slice_cb_beta_offset_div2およびslice_cb_tc_offset_div2は、現在スライスについてのCb成分に適用される(2で除算された)βおよびtCについてのデブロッキングパラメータオフセットを指定する。slice_cb_beta_offset_div2の値とslice_cb_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、slice_cb_beta_offset_div2の値およびslice_cb_tc_offset_div2の値は、以下のように推論され、すなわち、i)slice_deblocking_chroma_offsets_present_flagが存在するとき、slice_cb_beta_offset_div2の値およびslice_cb_tc_offset_div2の値は、それぞれ、slice_beta_offset_div2およびslice_tc_offset_div2に等しいと推論され、2)slice_deblocking_chroma_offsets_present_flagが存在しないとき、slice_cb_beta_offset_div2の値およびslice_cb_tc_offset_div2の値は、それぞれ、ph_cb_beta_offset_div2およびph_cb_tc_offset_div2に等しいと推論される。
【0155】
slice_cr_beta_offset_div2およびslice_cr_tc_offset_div2は、現在スライスについてのCr成分に適用される(2で除算された)βおよびtCについてのデブロッキングパラメータオフセットを指定する。slice_cr_beta_offset_div2の値とslice_cr_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、slice_cr_beta_offset_div2の値およびslice_cr_tc_offset_div2の値は、以下のように推論され、すなわち、i)slice_deblocking_chroma_offsets_present_flagが存在するとき、slice_cr_beta_offset_div2の値およびslice_cr_tc_offset_div2の値は、それぞれ、slice_beta_offset_div2およびslice_tc_offset_div2に等しいと推論され、2)slice_deblocking_chroma_offsets_present_flagが存在しないとき、slice_cr_beta_offset_div2の値およびslice_cr_tc_offset_div2の値は、それぞれ、ph_cr_beta_offset_div2およびph_cr_tc_offset_div2に等しいと推論される。
【0156】
構成体は、上記のシンタックス表を参照して、
図9に示されている以下の復号フローチャートによって説明され得る。
【0157】
ステップs902は、ph_cb_beta_offset_div2の値を決定することを含む。
【0158】
ステップs904は、slice_beta_offset_div2がビットストリーム中に存在するかどうかを決定することを含む。slice_beta_offset_div2がビットストリーム中に存在する場合、プロセス900はステップs906に進み、さもなければ、プロセス900はステップs918に進む。代替実施形態では、ステップs804は、あるフラグ(たとえば、slice_deblocking_filter_disabled_flagまたはslice_deblocking_filter_enabled_flag)がv1に等しいのかv2に等しいのかを決定することを含み、ここで、v1は第1の値であり、v2は第2の値であり、v2はv1に等しくない。あるフラグが存在し、v1(たとえば、0)に等しい値を有するとき、プロセス900はステップs906に進み、さもなければ(そのフラグが存在しないか、または存在するがv2に等しい値を有するかのいずれかである)、プロセス900はステップs918に進む。あるフラグがslice_deblocking_filter_disabled_flagである実施形態では、v1=0、およびv2=1である。あるフラグがslice_deblocking_filter_enabled_flagである実施形態では、v1=1、およびv2=0である。
【0159】
ステップs906は、slice_beta_offset_div2を復号することを含む。
【0160】
ステップs908は、slice_deblocking_chroma_offsets_present_flagがビットストリーム中に存在するかどうかを決定することを含む。slice_deblocking_chroma_offsets_present_flagがビットストリーム中に存在する場合、プロセス900はステップs910に進み、さもなければ、プロセス900はステップs918に進む。代替実施形態では、ステップs904は、chromaArrayTypeが0に等しいのか1に等しいのかを決定することを含む。chromaArrayTypeが0に等しいとき、プロセス900はステップs918に進み、さもなければ(chromaArrayTypeが0に等しくない)、プロセス900はs910に進む。
【0161】
ステップs910は、slice_deblocking_chroma_offsets_present_flagを復号することを含む。
【0162】
ステップs912は、slice_deblocking_chroma_offsets_present_flagが1に等しいかどうかを決定することを含む。slice_deblocking_chroma_offsets_present_flagが1に等しい場合、プロセス900はステップs914に進み、さもなければ、プロセス900はステップs916に進む。
【0163】
ステップs914は、slice_cb_beta_offset_div2を復号することを含む。
【0164】
ステップs916は、slice_cb_beta_offset_div2を、slice_beta_offset_div2の値に等しいものとして推論することを含む。
【0165】
ステップs918は、slice_cb_beta_offset_div2を、ph_cb_beta_offset_div2の値に等しいものとして推論することを含む。
【0166】
使用事例3 - PPS中のクロマデブロッキングオフセットの値を推論すること
【0167】
クロマデブロッキングオフセットがPPS中に存在するか否かを示す存在フラグをPPSに追加することが提案される。フラグは、たとえば、pps_deblocking_chroma_offsets_present_flagと呼ばれることがある。提案されるフラグが第1の値(たとえば、1)に等しいとき、クロマデブロッキングオフセットがビットストリーム中でシグナリングされると決定される。提案されるフラグが存在し、値が第2の値(たとえば、0)に等しいとき、クロマデブロッキングオフセットがシグナリングされないが、PPS中のルーマデブロッキングオフセットの値に等しくなるようにセットされると決定される。提案されるフラグが存在しないとき、クロマデブロッキングオフセットがシグナリングされないが、0に等しくなるようにセットされると決定される。
【0168】
以下は、この使用事例についての例示的なシンタックスおよびセマンティクスである。
【0169】
1に等しいdeblocking_filter_control_present_flagは、PPS中のデブロッキングフィルタ制御シンタックスエレメントの存在を指定する。0に等しいdeblocking_filter_control_present_flagは、PPS中のデブロッキングフィルタ制御シンタックスエレメントの不在を指定する。
【0170】
1に等しいdeblocking_filter_override_enabled_flagは、PPSを参照するPH中のph_deblocking_filter_override_flag、またはPPSを参照するスライスヘッダ中のslice_deblocking_filter_override_flagの存在を指定する。0に等しいdeblocking_filter_override_enabled_flagは、PPSを参照するPH中のph_deblocking_filter_override_flag、またはPPSを参照するスライスヘッダ中のslice_deblocking_filter_override_flagの不在を指定する。存在しないとき、deblocking_filter_override_enabled_flagの値は0に等しいと推論される。
【0171】
1に等しいpps_deblocking_filter_disabled_flagは、デブロッキングフィルタの動作が、slice_deblocking_filter_disabled_flagが存在しないPPSを参照するスライスのために適用されないことを指定する。0に等しいpps_deblocking_filter_disabled_flagは、デブロッキングフィルタの動作が、slice_deblocking_filter_disabled_flagが存在しないPPSを参照するスライスのために適用されることを指定する。存在しないとき、pps_deblocking_filter_disabled_flagの値は0に等しいと推論される。
【0172】
pps_beta_offset_div2およびpps_tc_offset_div2は、PPSを参照するスライスについてのルーマ成分に適用される(2で除算された)βおよびtCについてのデフォルトデブロッキングパラメータオフセットが、PPSを参照するピクチャヘッダまたはスライスのスライスヘッダ中に存在するデブロッキングパラメータオフセットによってオーバーライドされない限り、そのデフォルトデブロッキングパラメータオフセットを指定する。pps_beta_offset_div2の値とpps_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、pps_beta_offset_div2の値とpps_tc_offset_div2の値とは、両方とも0に等しいと推論される。
【0173】
1に等しいpps_deblocking_chroma_offsets_present_flagは、PPS中のCb成分およびCr成分に適用される(2で除算された)βおよびtCについてのデブロッキングパラメータオフセットの存在を指定する。0に等しいpps_deblocking_chroma_offsets_present_flagは、PPS中のCb成分およびCr成分に適用される(2で除算された)βおよびtCについてのデブロッキングパラメータオフセットの不在を指定する。存在しないとき、pps_deblocking_chroma_offsets_present_flagの値は0に等しいと推論される。ChromaArrayTypeが0に等しいとき、pps_deblocking_chroma_offsets_present_flagの値は0に等しいものとする。
【0174】
pps_cb_beta_offset_div2およびpps_cb_tc_offset_div2は、PPSを参照するスライスについてのCb成分に適用される(2で除算された)βおよびtCについてのデフォルトデブロッキングパラメータオフセットが、PPSを参照するピクチャヘッダまたはスライスのスライスヘッダ中に存在するデブロッキングパラメータオフセットによってオーバーライドされない限り、そのデフォルトデブロッキングパラメータオフセットを指定する。pps_cb_beta_offset_div2の値とpps_cb_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、pps_cb_beta_offset_div2の値およびpps_cb_tc_offset_div2の値は、以下のように推論され、すなわち、i)pps_deblocking_chroma_offsets_present_flagが存在するとき、pps_cb_beta_offset_div2の値およびpps_cb_tc_offset_div2の値は、それぞれ、pps_beta_offset_div2およびpps_tc_offset_div2に等しいと推論され、2)pps_deblocking_chroma_offsets_present_flagが存在しないとき、pps_cb_beta_offset_div2の値とpps_cb_tc_offset_div2の値とは、両方とも0に等しいと推論される。
【0175】
pps_cr_beta_offset_div2およびpps_cr_tc_offset_div2は、PPSを参照するスライスについてのCr成分に適用される(2で除算された)βおよびtCについてのデフォルトデブロッキングパラメータオフセットが、PPSを参照するピクチャヘッダまたはスライスのスライスヘッダ中に存在するデブロッキングパラメータオフセットによってオーバーライドされない限り、そのデフォルトデブロッキングパラメータオフセットを指定する。pps_cr_beta_offset_div2の値とpps_cr_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、pps_cr_beta_offset_div2の値およびpps_cr_tc_offset_div2の値は、以下のように推論され、すなわち、1)pps_deblocking_chroma_offsets_present_flagが存在するとき、pps_cr_beta_offset_div2の値およびpps_cr_tc_offset_div2の値は、それぞれ、pps_beta_offset_div2およびpps_tc_offset_div2に等しいと推論され、2)pps_deblocking_chroma_offsets_present_flagが存在しないとき、pps_cr_beta_offset_div2の値とpps_cr_tc_offset_div2の値とは、両方とも0に等しいと推論される。
【0176】
この実施形態は、シンタックスエレメントが存在しないとき、値を推論するための新規のシンタックス構成体および方法を開示する。新規のエレメントは、ここでは、ビットストリーム中に存在しないシンタックスエレメントの値が推論されるやり方である。要するに、シンタックスエレメントが存在する場合、値は、復号されたシンタックスエレメントの値に等しいものとして導出される。ただし、シンタックスエレメントが存在しない場合、値は、別のシンタックスエレメントがビットストリーム中に存在する否かに応じて、値Aまたは値Bに等しくセットされる。
【0177】
新規の構成体が、上記でピクチャパラメータセット(PPS)において示されていたが、この構成体はPPSに限定されない。この構成体は、たとえば、シーケンスパラメータセット、ピクチャパラメータセット、スライスヘッダ、ビデオパラメータセット、復号能力情報、適応パラメータセット、補足エンハンスメント情報またはピクチャヘッダにおいて使用され得る。
【0178】
構成体は、上記のシンタックス表を参照して、
図10に示されている以下の復号方法フローチャートによって説明され得る。
図10は、一実施形態による、プロセス1000を示す。
【0179】
プロセス1000のステップs1002は、ルーマデブロッキングオフセットがPPS中に存在するか否かを決定することを含む。一実施形態では、ルーマデブロッキングオフセットがPPS中に存在するか否かを決定することは、pps_deblocking_filter_disabled_flagの値が0に等しいのか1に等しいのかを決定することを含む、ここで、0は、ルーマデブロッキングオフセットが存在することを意味するが、フラグは、代替的に反対のやり方で実装され得、ここで、値1は、ルーマデブロッキングオフセットが存在することを意味する。ルーマデブロッキングオフセットが存在する場合、プロセスはステップs1004に進み、さもなければ、プロセスはステップs1014に進む。
【0180】
ステップs1004は、ビットストリームからルーマデブロッキングオフセットを復号することを含み、存在フラグも復号される。
【0181】
ステップs1008は、存在フラグが、クロマデブロッキングオフセットが存在することを指定するかどうかを決定することを含む。存在フラグが、クロマデブロッキングオフセットが存在することを指定する場合、プロセスはステップs1010に進み、さもなければ、プロセスはステップs1012に進む。
【0182】
ステップs1010(すなわち、クロマデブロッキングオフセットが存在する)は、クロマデブロッキングオフセットを復号すること(たとえば、pps_cb_beta_offset_div2を復号すること)を含む。
【0183】
ステップs1012(すなわち、クロマデブロッキングオフセットが存在しない)は、クロマデブロッキングオフセットの値を、ルーマデブロッキングオフセットの値に等しいと推論すること(たとえば、pps_cb_beta_offset_div2を、pps_beta_offset_div2の値に等しいものとして推論すること)を含む。
【0184】
ステップs1014(すなわち、ルーマデブロッキングオフセットが存在しない)は、クロマデブロッキングオフセットを0に等しいと推論することを含む。
【0185】
ステップs1016は、ピクチャを復号するためのプロセスにおいてクロマデブロッキングオフセットを使用することを含む。
【0186】
この新規の構成体は、デブロッキングフィルタパラメータ以外の他の値のシグナリングのために使用され得る。一般化された構成体のフローチャートが、一実施形態による、プロセス1100を示すフローチャートである
図11に示されている。デコーダは、ビットストリームからピクチャを復号するために、この一般化された実施形態において、以下のステップのすべてまたはサブセットを実施し得る。
【0187】
ステップs1102は、第1のシンタックスエレメントS1がビットストリーム中に存在するか否かを決定することを含む。S1がビットストリーム中に存在する場合、プロセスはステップs1104に進み、さもなければ、プロセスはステップs1112に進む。
【0188】
ステップs1104(すなわち、S1がビットストリーム中に存在すると決定される)は、第1のシンタックスエレメントS1を復号することと、第1の値を、復号された第1のシンタックスエレメントS1の値に等しいものとして導出することとを含む。
【0189】
ステップs1106は、ビットストリーム中の第2のシンタックスエレメントS2から第1の存在フラグ値を復号することを含み、第1の存在フラグ値は、第3のシンタックスエレメントS3がビットストリーム中に存在するか否かを示す。
【0190】
ステップs1107は、第1の存在フラグを使用して、S3がビットストリーム中に存在するかどうかを決定することを含む。S3が存在する場合、プロセスはステップs1108に進み、さもなければ、プロセスはステップs1110に進む。
【0191】
ステップs1108(すなわち、第1の存在フラグ値が、第3のシンタックスエレメントS3がビットストリーム中に存在することを示す)は、第3のシンタックスエレメントS3を復号することと、第3の値を、復号された第3のシンタックスエレメントS3の値に等しいものとして導出することとを含む。
【0192】
ステップs1110(すなわち、第1の存在フラグ値が、第3のシンタックスエレメントS3がビットストリーム中に存在することを示す)は、第3の値を第2の値に等しいものとして導出することを含む。
【0193】
ステップs1112(すなわち、S1がビットストリーム中に存在しないと決定される)は、第3の値を第4の値に等しいものとして導出することを含む。
【0194】
ステップs1114は、ピクチャを復号するためのプロセスにおいて第3の値を使用することを含み、第1(S1)、第2(S2)および第3の(S3)シンタックスエレメントは、3つの異なるシンタックスエレメントである。
【0195】
使用事例5 - クロマデブロッキングオフセットの存在および推論を示すための代替的なやり方
【0196】
本明細書で説明される他の使用事例では、クロマデブロッキングオフセットの存在は、それぞれ、PPS、PHおよびSH中のpps_deblocking_chroma_offsets_present_flag、ph_deblocking_chroma_offsets_present_flagおよびslice_deblocking_chroma_offsets_present_flagの値に基づくことを条件とする。
【0197】
この使用事例では、クロマデブロッキングオフセットの存在および推論を示すための代替的なやり方が提案される。クロマデブロッキングオフセットがPPS、PH、SH中に存在するのかまったく存在しないのかを示すシンタックスエレメントを、PPS、PHおよびSHの各々に追加することが提案される。
【0198】
それらのシンタックスエレメントは、pps_deblocking_chroma_offsets_present_idc、ph_deblocking_chroma_offsets_present_idcおよびslice_deblocking_chroma_offsets_present_idcと呼ばれることがある。提案されるシンタックスエレメントが第1の値(たとえば、1)に等しいとき、クロマデブロッキングオフセットが、対応するシンタックス構造(PPS、PHまたはSH)中でシグナリングされると決定される。提案されるシンタックスエレメントが第2の値(たとえば、0)に等しいとき、クロマデブロッキングオフセットがシグナリングされないが、対応するシンタックス構造(PPS、PHまたはSH)のルーマデブロッキングオフセットの値に等しくセットされると決定される。提案されるシンタックスエレメントが第3の値(たとえば、2)に等しいとき、クロマデブロッキングオフセットがシグナリングされず、クロマデブロッキングオフセットの値が、現在のVVCドラフト規格の場合のように推論されると決定される。これは、SH中の値がPHから推論されることと、PHの値がPPSから推論されることとを意味し得る。代替的に、SH中の値はPPSから推論される。提案されるシンタックスエレメントが存在しないとき、値が2に等しいと推論されることを提案する。
【0199】
提案される方法は、Syntax_Aが存在せず、Syntax_Dの決定された値が第1の値(たとえば、0)に等しいとき、Syntax_Aの値がSyntax_Bの値であると推論され、Syntax_Dの決定された値が第2の値(たとえば、2)に等しい場合、Syntax_Aの値がSyntax_Cの値であると推論され、Syntax_Aがクロマデブロッキングオフセットのうちの1つを表す、やり方で、実施形態1に基づく。ここで、シンタックス構成体擬似コードを示すための一例として、ph_cb_beta_offset_div2を表すSyntax_Aを使用する。
【0200】
この実施形態の別のバージョンでは、Syntax_B、Syntax_CおよびSyntax_Dのうちの少なくとも1つは、定数値である。
【0201】
この実施形態の別のバージョンでは、Syntax_B、Syntax_CおよびSyntax_Dのうちの少なくとも1つは、ビットストリーム中の1つまたは複数のシンタックスエレメントから導出された値である。
【0202】
以下は、例示的なシンタックスおよびセマンティクスである。ここで、一例としてPHを使用する。
【0203】
1に等しいdeblocking_filter_control_present_flagは、PPS中のデブロッキングフィルタ制御シンタックスエレメントの存在を指定する。0に等しいdeblocking_filter_control_present_flagは、PPS中のデブロッキングフィルタ制御シンタックスエレメントの不在を指定する。
【0204】
1に等しいdeblocking_filter_override_enabled_flagは、PPSを参照するPH中のph_deblocking_filter_override_flag、またはPPSを参照するスライスヘッダ中のslice_deblocking_filter_override_flagの存在を指定する。0に等しいdeblocking_filter_override_enabled_flagは、PPSを参照するPH中のph_deblocking_filter_override_flag、またはPPSを参照するスライスヘッダ中のslice_deblocking_filter_override_flagの不在を指定する。存在しないとき、deblocking_filter_override_enabled_flagの値は0に等しいと推論される。
【0205】
1に等しいpps_deblocking_filter_disabled_flagは、デブロッキングフィルタの動作が、slice_deblocking_filter_disabled_flagが存在しないPPSを参照するスライスのために適用されないことを指定する。0に等しいpps_deblocking_filter_disabled_flagは、デブロッキングフィルタの動作が、slice_deblocking_filter_disabled_flagが存在しないPPSを参照するスライスのために適用されることを指定する。存在しないとき、pps_deblocking_filter_disabled_flagの値は0に等しいと推論される。
【0206】
pps_beta_offset_div2およびpps_tc_offset_div2は、PPSを参照するスライスについてのルーマ成分に適用される(2で除算された)βおよびtCについてのデフォルトデブロッキングパラメータオフセットが、PPSを参照するピクチャヘッダまたはスライスのスライスヘッダ中に存在するデブロッキングパラメータオフセットによってオーバーライドされない限り、そのデフォルトデブロッキングパラメータオフセットを指定する。pps_beta_offset_div2の値とpps_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、pps_beta_offset_div2の値とpps_tc_offset_div2の値とは、両方とも0に等しいと推論される。
【0207】
pps_cb_beta_offset_div2およびpps_cb_tc_offset_div2は、PPSを参照するスライスについてのCb成分に適用される(2で除算された)βおよびtCについてのデフォルトデブロッキングパラメータオフセットが、PPSを参照するピクチャヘッダまたはスライスのスライスヘッダ中に存在するデブロッキングパラメータオフセットによってオーバーライドされない限り、そのデフォルトデブロッキングパラメータオフセットを指定する。pps_cb_beta_offset_div2の値とpps_cb_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、pps_cb_beta_offset_div2の値とpps_cb_tc_offset_div2の値とは、両方とも0に等しいと推論される。
【0208】
pps_cr_beta_offset_div2およびpps_cr_tc_offset_div2は、PPSを参照するスライスについてのCr成分に適用される(2で除算された)βおよびtCについてのデフォルトデブロッキングパラメータオフセットが、PPSを参照するピクチャヘッダまたはスライスのスライスヘッダ中に存在するデブロッキングパラメータオフセットによってオーバーライドされない限り、そのデフォルトデブロッキングパラメータオフセットを指定する。pps_cr_beta_offset_div2の値とpps_cr_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、pps_cr_beta_offset_div2の値とpps_cr_tc_offset_div2の値とは、両方とも0に等しいと推論される。
【0209】
1に等しいph_deblocking_filter_override_flagは、デブロッキングパラメータがPH中に存在することを指定する。0に等しいph_deblocking_filter_override_flagは、デブロッキングパラメータがPH中に存在しないことを指定する。存在しないとき、ph_deblocking_filter_override_flagの値は0に等しいと推論される。
【0210】
1に等しいph_deblocking_filter_disabled_flagは、デブロッキングフィルタの動作が、PHに関連するスライスのために適用されないことを指定する。0に等しいph_deblocking_filter_disabled_flagは、デブロッキングフィルタの動作が、PHに関連するスライスのために適用されることを指定する。ph_deblocking_filter_disabled_flagが存在しないとき、ph_deblocking_filter_disabled_flagは、pps_deblocking_filter_disabled_flagに等しいと推論される。上述のように、いくつかの実施形態では、ph_deblocking_filter_disabled_flagは、ph_deblocking_filter_enabled_flagと交換される。
【0211】
ph_beta_offset_div2およびph_tc_offset_div2は、PHに関連するスライスについてのルーマ成分に適用される(2で除算された)βおよびtCについてのデブロッキングパラメータオフセットを指定する。ph_beta_offset_div2の値とph_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、ph_beta_offset_div2の値およびph_tc_offset_div2の値は、それぞれ、pps_beta_offset_div2およびpps_tc_offset_div2に等しいと推論される。
【0212】
1に等しいph_deblocking_chroma_offsets_present_idcは、PH中のCb成分およびCr成分に適用される(2で除算された)βおよびtCについてのデブロッキングパラメータオフセットの存在を指定する。0または2に等しいph_deblocking_chroma_offsets_present_idcは、PH中のCb成分およびCr成分に適用される(2で除算された)βおよびtCについてのデブロッキングパラメータオフセットの不在を指定する。存在しないとき、ph_deblocking_chroma_offsets_present_idcの値は2に等しいと推論される。
【0213】
ph_cb_beta_offset_div2およびph_cb_tc_offset_div2は、PHに関連するスライスについてのCb成分に適用される(2で除算された)βおよびtCについてのデブロッキングパラメータオフセットを指定する。ph_cb_beta_offset_div2の値とph_cb_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、ph_cb_beta_offset_div2の値およびph_cb_tc_offset_div2の値は、以下のように推論され、すなわち、i)ph_deblocking_chroma_offsets_present_idcが0に等しいとき、ph_cb_beta_offset_div2の値およびph_cb_tc_offset_div2の値は、それぞれ、ph_beta_offset_div2およびph_tc_offset_div2に等しいと推論され、2)ph_deblocking_chroma_offsets_present_idcが2に等しいとき、ph_cb_beta_offset_div2の値およびph_cb_tc_offset_div2の値は、それぞれ、pps_cb_beta_offset_div2およびpps_cb_tc_offset_div2に等しいと推論される。
【0214】
ph_cr_beta_offset_div2およびph_cr_tc_offset_div2は、PHに関連するスライスについてのCr成分に適用される(2で除算された)βおよびtCについてのデブロッキングパラメータオフセットを指定する。ph_cr_beta_offset_div2の値とph_cr_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、ph_cr_beta_offset_div2の値およびph_cr_tc_offset_div2の値は、以下のように推論され、すなわち、1)ph_deblocking_chroma_offsets_present_idcが0に等しいとき、ph_cr_beta_offset_div2の値およびph_cr_tc_offset_div2の値は、それぞれ、ph_beta_offset_div2およびph_tc_offset_div2に等しいと推論され、2)ph_deblocking_chroma_offsets_present_idcが2に等しいとき、ph_cr_beta_offset_div2の値およびph_cr_tc_offset_div2の値は、それぞれ、pps_cr_beta_offset_div2およびpps_cr_tc_offset_div2に等しいと推論される。
【0215】
実施形態2 - ルーマ成分に対するデブロッキングフィルタの動作が有効化される一方、クロマ成分に対するデブロッキングフィルタの動作を無効化する一例
【0216】
ルーマ成分に対するデブロッキングフィルタの動作が有効化される一方、クロマ成分に対するデブロッキングフィルタの動作を無効化するために、PPS、PHおよびSH中のシンタックスエレメントを追加することが提案される。実施形態2は、実施形態1と組み合わせられ得る。
【0217】
以下は、実施形態2における、例示的なシンタックスおよびセマンティクスである。
【0218】
1に等しいdeblocking_filter_control_present_flagは、PPS中のデブロッキングフィルタ制御シンタックスエレメントの存在を指定する。0に等しいdeblocking_filter_control_present_flagは、PPS中のデブロッキングフィルタ制御シンタックスエレメントの不在を指定する。
【0219】
1に等しいdeblocking_filter_override_enabled_flagは、PPSを参照するPH中のph_deblocking_filter_override_flag、またはPPSを参照するスライスヘッダ中のslice_deblocking_filter_override_flagの存在を指定する。0に等しいdeblocking_filter_override_enabled_flagは、PPSを参照するPH中のph_deblocking_filter_override_flag、またはPPSを参照するスライスヘッダ中のslice_deblocking_filter_override_flagの不在を指定する。存在しないとき、deblocking_filter_override_enabled_flagの値は0に等しいと推論される。
【0220】
1に等しいpps_deblocking_filter_disabled_flagは、デブロッキングフィルタの動作が、slice_deblocking_filter_disabled_flagが存在しないPPSを参照するスライスのために適用されないことを指定する。0に等しいpps_deblocking_filter_disabled_flagは、デブロッキングフィルタの動作が、slice_deblocking_filter_disabled_flagが存在しないPPSを参照するスライスのために適用されることを指定する。存在しないとき、pps_deblocking_filter_disabled_flagの値は0に等しいと推論される。上述のように、pps_deblocking_filter_diabled_flagは、pps_deblocking_filter_enbabled_flagと交換され得る。
【0221】
1に等しいpps_chroma_deblocking_filter_disabled_flagは、クロマ成分に対するデブロッキングフィルタの動作が、slice_chroma_deblocking_filter_disabled_flagが存在しないPPSを参照するスライスのために適用されないことを指定する。0に等しいpps_chroma_deblocking_filter_disabled_flagは、クロマ成分に対するデブロッキングフィルタの動作が、slice_chroma_deblocking_filter_disabled_flagが存在しないPPSを参照するスライスのために適用されることを指定する。存在しないとき、pps_chroma_deblocking_filter_disabled_flagの値は0に等しいと推論される。pps_chroma_deblocking_filter_disabled_flagは、pps_chroma_deblocking_filter_enbabled_flagと交換され得る。
【0222】
pps_beta_offset_div2およびpps_tc_offset_div2は、PPSを参照するスライスについてのルーマ成分に適用される(2で除算された)βおよびtCについてのデフォルトデブロッキングパラメータオフセットが、PPSを参照するピクチャヘッダまたはスライスのスライスヘッダ中に存在するデブロッキングパラメータオフセットによってオーバーライドされない限り、そのデフォルトデブロッキングパラメータオフセットを指定する。pps_beta_offset_div2の値とpps_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、pps_beta_offset_div2の値とpps_tc_offset_div2の値とは、両方とも0に等しいと推論される。
【0223】
pps_cb_beta_offset_div2およびpps_cb_tc_offset_div2は、PPSを参照するスライスについてのCb成分に適用される(2で除算された)βおよびtCについてのデフォルトデブロッキングパラメータオフセットが、PPSを参照するピクチャヘッダまたはスライスのスライスヘッダ中に存在するデブロッキングパラメータオフセットによってオーバーライドされない限り、そのデフォルトデブロッキングパラメータオフセットを指定する。pps_cb_beta_offset_div2の値とpps_cb_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、pps_cb_beta_offset_div2の値およびpps_cb_tc_offset_div2の値は、両方とも、それぞれ、pps_beta_offset_div2およびpps_tc_offset_div2に等しいと推論される。
【0224】
pps_cr_beta_offset_div2およびpps_cr_tc_offset_div2は、PPSを参照するスライスについてのCr成分に適用される(2で除算された)βおよびtCについてのデフォルトデブロッキングパラメータオフセットが、PPSを参照するピクチャヘッダまたはスライスのスライスヘッダ中に存在するデブロッキングパラメータオフセットによってオーバーライドされない限り、そのデフォルトデブロッキングパラメータオフセットを指定する。pps_cr_beta_offset_div2の値とpps_cr_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、pps_cr_beta_offset_div2の値およびpps_cr_tc_offset_div2の値は、両方とも、それぞれ、pps_beta_offset_div2およびpps_tc_offset_div2に等しいと推論される。
【0225】
1に等しいph_deblocking_filter_override_flagは、デブロッキングパラメータがPH中に存在することを指定する。0に等しいph_deblocking_filter_override_flagは、デブロッキングパラメータがPH中に存在しないことを指定する。存在しないとき、ph_deblocking_filter_override_flagの値は0に等しいと推論される。
【0226】
1に等しいph_deblocking_filter_disabled_flagは、デブロッキングフィルタの動作が、PHに関連するスライスのために適用されないことを指定する。0に等しいph_deblocking_filter_disabled_flagは、デブロッキングフィルタの動作が、PHに関連するスライスのために適用されることを指定する。ph_deblocking_filter_disabled_flagが存在しないとき、ph_deblocking_filter_disabled_flagは、pps_deblocking_filter_disabled_flagに等しいと推論される。上述のように、いくつかの実施形態では、ph_deblocking_filter_disabled_flagは、ph_deblocking_filter_enabled_flagと交換される。
【0227】
1に等しいph_chroma_deblocking_filter_disabled_flagは、クロマ成分に対するデブロッキングフィルタの動作が、PHに関連するスライスのために適用されないことを指定する。0に等しいph_chroma_deblocking_filter_disabled_flagは、クロマ成分に対するデブロッキングフィルタの動作が、PHに関連するスライスのために適用されることを指定する。ph_chroma_deblocking_filter_disabled_flagが存在しないとき、ph_chroma_deblocking_filter_disabled_flagは、pps_chroma_deblocking_filter_disabled_flagに等しいと推論される。いくつかの実施形態では、ph_chroma_deblocking_filter_disabled_flagは、ph_chroma_deblocking_filter_enabled_flagと交換される。
【0228】
ph_beta_offset_div2およびph_tc_offset_div2は、PHに関連するスライスについてのルーマ成分に適用される(2で除算された)βおよびtCについてのデブロッキングパラメータオフセットを指定する。ph_beta_offset_div2の値とph_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、ph_beta_offset_div2の値およびph_tc_offset_div2の値は、それぞれ、pps_beta_offset_div2およびpps_tc_offset_div2に等しいと推論される。
【0229】
ph_cb_beta_offset_div2およびph_cb_tc_offset_div2は、PHに関連するスライスについてのCb成分に適用される(2で除算された)βおよびtCについてのデブロッキングパラメータオフセットを指定する。ph_cb_beta_offset_div2の値とph_cb_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、ph_cb_beta_offset_div2の値およびph_cb_tc_offset_div2の値は、それぞれ、pps_cb_beta_offset_div2およびpps_cb_tc_offset_div2に等しいと推論される。
【0230】
ph_cr_beta_offset_div2およびph_cr_tc_offset_div2は、PHに関連するスライスについてのCr成分に適用される(2で除算された)βおよびtCについてのデブロッキングパラメータオフセットを指定する。ph_cr_beta_offset_div2の値とph_cr_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、ph_cr_beta_offset_div2の値およびph_cr_tc_offset_div2の値は、それぞれ、pps_cr_beta_offset_div2およびpps_cr_tc_offset_div2に等しいと推論される。
【0231】
1に等しいslice_deblocking_filter_override_flagは、デブロッキングパラメータがスライスヘッダ中に存在することを指定する。0に等しいslice_deblocking_filter_override_flagは、デブロッキングパラメータがスライスヘッダ中に存在しないことを指定する。存在しないとき、slice_deblocking_filter_override_flagの値は、ph_deblocking_filter_override_flagに等しいと推論される。
【0232】
1に等しいslice_deblocking_filter_disabled_flagは、デブロッキングフィルタの動作が、現在スライスのために適用されないことを指定する。0に等しいslice_deblocking_filter_disabled_flagは、デブロッキングフィルタの動作が、現在スライスのために適用されることを指定する。slice_deblocking_filter_disabled_flagが存在しないとき、slice_deblocking_filter_disabled_flagは、ph_deblocking_filter_disabled_flagまたは!ph_deblocking_filter_enabled_flagに等しいと推論される。いくつかの実施形態では、slice_deblocking_filter_disabled_flagは、slice_deblocking_filter_enabled_flagと交換される。
【0233】
1に等しいslice_chroma_deblocking_filter_disabled_flagは、クロマ成分に対するデブロッキングフィルタの動作が、現在スライスのために適用されないことを指定する。0に等しいslice_chroma_deblocking_filter_disabled_flagは、クロマ成分に対するデブロッキングフィルタの動作が、現在スライスのために適用されることを指定する。slice_chroma_deblocking_filter_disabled_flagが存在しないとき、slice_chroma_deblocking_filter_disabled_flagは、ph_chroma_deblocking_filter_disabled_flagに等しいと推論される。いくつかの実施形態では、slice_chroma_deblocking_filter_disabled_flagは、slice_chroma_deblocking_filter_enabled_flagと交換される。
【0234】
slice_beta_offset_div2およびslice_tc_offset_div2は、現在スライスについてのルーマ成分に適用される(2で除算された)βおよびtCについてのデブロッキングパラメータオフセットを指定する。slice_beta_offset_div2の値とslice_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、slice_beta_offset_div2の値およびslice_tc_offset_div2の値は、それぞれ、ph_beta_offset_div2およびph_tc_offset_div2に等しいと推論される。
【0235】
slice_cb_beta_offset_div2およびslice_cb_tc_offset_div2は、現在スライスについてのCb成分に適用される(2で除算された)βおよびtCについてのデブロッキングパラメータオフセットを指定する。slice_cb_beta_offset_div2の値とslice_cb_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、slice_cb_beta_offset_div2の値およびslice_cb_tc_offset_div2の値は、それぞれ、ph_cb_beta_offset_div2およびph_cb_tc_offset_div2に等しいと推論される。
【0236】
slice_cb_beta_offset_div2およびslice_cb_tc_offset_div2は、現在スライスについてのCr成分に適用される(2で除算された)βおよびtCについてのデブロッキングパラメータオフセットを指定する。slice_cr_beta_offset_div2の値とslice_cr_tc_offset_div2の値とは、両方とも、両端値を含む-12~12の範囲内にあるものとする。存在しないとき、slice_cr_beta_offset_div2の値およびslice_cr_tc_offset_div2の値は、それぞれ、ph_cr_beta_offset_div2およびph_cr_tc_offset_div2に等しいと推論される。
【0237】
実施形態3
【0238】
上記のように、2つのクロマ成分に適用されるシンタックスエレメントの存在は、1ビットシンタックスエレメントによって制御され得る。別の言い方をすれば、いくつかの実施形態では、Crの存在はCbの存在に従う。
【0239】
この実施形態では、第1の1ビットシンタックスエレメントがCb成分のために使用され、第2の1ビットシンタックスエレメントがCr成分のために使用されて、別々に、Cb成分に適用されるシンタックスエレメントの存在およびCr成分に適用されるシンタックスエレメントの存在を制御する。
【0240】
この実施形態の変形態では、2ビットシンタックスエレメントが、以下で説明されるように、Cb成分に適用されるシンタックスエレメントの存在およびCr成分に適用されるシンタックスエレメントの存在を一緒に制御するために使用される。
【0241】
2ビットシンタックスエレメントの値が0に等しい場合、これは、Cb成分とCr成分とに適用されるシンタックスエレメントの不在を指定する。
【0242】
2ビットシンタックスエレメントの値が1に等しい場合、これは、Cbに適用されるシンタックスエレメントの存在と、Cr成分に適用されるシンタックスエレメントの不在とを指定する。
【0243】
2ビットシンタックスエレメントの値が2に等しい場合、これは、Cbに適用されるシンタックスエレメントの不在と、Cr成分に適用されるシンタックスエレメントの存在とを指定する。
【0244】
2ビットシンタックスエレメントの値が3に等しい場合、これは、Cb成分とCr成分とに適用されるシンタックスエレメントの存在を指定する。
【0245】
実施形態4 - Xに対する推論と、Xとしてのシグナリングとに基づいて区別すること
【0246】
この実施形態では、値Xに対するシンタックスエレメントAの値の推論と、値Xに等しいシンタックスエレメントAの明示的シグナリングとを区別する条件方法が提案される。現在の実施形態の一例では、Cb成分とCr成分との制御は、以下のように規定され得る。
【0247】
シンタックスエレメントAの値が第1の値としてシグナリングされる場合、これは、Cb成分とCr成分とに適用されるシンタックスエレメントの不在を指定する。
【0248】
シンタックスエレメントAの値が第1の値として推論される場合、これは、Cbに適用されるシンタックスエレメントの存在と、Cr成分に適用されるシンタックスエレメントの不在とを指定する。
【0249】
シンタックスエレメントAの値が第2の値としてシグナリングされる場合、これは、Cbに適用されるシンタックスエレメントの不在と、Cr成分に適用されるシンタックスエレメントの存在とを指定する。
【0250】
シンタックスエレメントAの値が第2の値として推論される場合、これは、Cb成分とCr成分とに適用されるシンタックスエレメントの存在を指定する。
【0251】
図12は、いくつかの実施形態による、デコーダ204および/またはエンコーダ202を実装するための装置1200のブロック図である。装置1200がデコーダを実装するとき、装置1200は「復号装置1200」と呼ばれることがあり、装置1200がエンコーダを実装するとき、装置1200は「符号化装置1200」と呼ばれることがある。
図12に示されているように、装置1200は、1つまたは複数のプロセッサ(P)1255(たとえば、汎用マイクロプロセッサ、および/または、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)など、1つまたは複数の他のプロセッサなど)を含み得る処理回路(PC)1202であって、そのプロセッサが、単一のハウジングにおいてまたは単一のデータセンタにおいて共同サイト式であり得るかあるいは地理的に分散され得る(すなわち、装置1200が分散コンピューティング装置であり得る)、処理回路(PC)1202と、少なくとも1つのネットワークインターフェース1248であって、装置1200が、ネットワークインターフェース1248が(直接または間接的に)接続されるネットワーク110(たとえば、インターネットプロトコル(IP)ネットワーク)に接続された他のノードにデータを送信し、他のノードからデータを受信することを可能にするための送信機(Tx)1245および受信機(Rx)1247を備える(たとえば、ネットワークインターフェース1248はネットワーク110に無線で接続され得、その場合、ネットワークインターフェース1248はアンテナ構成に接続される)、少なくとも1つのネットワークインターフェース1248と、1つまたは複数の不揮発性記憶デバイスおよび/または1つまたは複数の揮発性記憶デバイスを含み得る記憶ユニット(別名「データ記憶システム」)1208とを備え得る。PC1202がプログラマブルプロセッサを含む実施形態では、コンピュータプログラム製品(CPP)1241が提供され得る。CPP1241はコンピュータ可読媒体(CRM)1242を含み、CRM1242は、コンピュータ可読命令(CRI)1244を備えるコンピュータプログラム(CP)1243を記憶する。CRM1242は、磁気媒体(たとえば、ハードディスク)、光媒体、メモリデバイス(たとえば、ランダムアクセスメモリ、フラッシュメモリ)など、非一時的コンピュータ可読媒体であり得る。いくつかの実施形態では、コンピュータプログラム1243のCRI1244は、PC1202によって実行されたとき、CRIが、装置1200に、本明細書で説明されるステップ(たとえば、フローチャートを参照しながら本明細書で説明されるステップ)を実施させるように設定される。他の実施形態では、装置1200は、コードの必要なしに本明細書で説明されるステップを実施するように設定され得る。すなわち、たとえば、PC1202は、単に1つまたは複数のASICからなり得る。したがって、本明細書で説明される実施形態の特徴は、ハードウェアおよび/またはソフトウェアで実装され得る。
【0252】
様々な実施形態が本明細書で説明されたが、それらの実施形態は、限定ではなく、例として提示されたにすぎないことを理解されたい。したがって、本開示の広さおよび範囲は、上記で説明された例示的な実施形態のいずれによっても限定されるべきでない。その上、本明細書で別段に指示されていない限り、またはコンテキストによって明確に否定されていない限り、上記で説明されたエレメントのそれらのすべての考えられる変形形態における任意の組合せが、本開示によって包含される。
【0253】
さらに、上記で説明され、図面に示されたプロセスは、ステップのシーケンスとして示されたが、これは、説明のためにのみ行われた。したがって、いくつかのステップが追加され得、いくつかのステップが省略され得、ステップの順序が並べ替えられ得、いくつかのステップが並行して実施され得ることが企図される。