JP2023512694A - 高レベルシンタックスのシグナリングについてのエンコーダ、デコーダ、および対応する方法 - Google Patents
高レベルシンタックスのシグナリングについてのエンコーダ、デコーダ、および対応する方法 Download PDFInfo
- Publication number
- JP2023512694A JP2023512694A JP2022547752A JP2022547752A JP2023512694A JP 2023512694 A JP2023512694 A JP 2023512694A JP 2022547752 A JP2022547752 A JP 2022547752A JP 2022547752 A JP2022547752 A JP 2022547752A JP 2023512694 A JP2023512694 A JP 2023512694A
- Authority
- JP
- Japan
- Prior art keywords
- slice
- offset
- picture
- equal
- div2
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 211
- 230000011664 signaling Effects 0.000 title description 11
- 230000008569 process Effects 0.000 claims description 121
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 claims description 117
- 241000023320 Luma <angiosperm> Species 0.000 claims description 111
- 238000012545 processing Methods 0.000 claims description 57
- 238000004590 computer program Methods 0.000 claims description 5
- 238000013139 quantization Methods 0.000 description 87
- 238000001914 filtration Methods 0.000 description 49
- 239000013598 vector Substances 0.000 description 43
- 230000000875 corresponding effect Effects 0.000 description 38
- 238000003491 array Methods 0.000 description 36
- 238000004891 communication Methods 0.000 description 36
- 238000000638 solvent extraction Methods 0.000 description 32
- 238000005192 partition Methods 0.000 description 25
- 239000000872 buffer Substances 0.000 description 24
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 22
- 230000006870 function Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 16
- 230000005540 biological transmission Effects 0.000 description 15
- 238000013507 mapping Methods 0.000 description 12
- 239000011449 brick Substances 0.000 description 11
- 238000009795 derivation Methods 0.000 description 9
- 101150039623 Clip1 gene Proteins 0.000 description 8
- 230000003044 adaptive effect Effects 0.000 description 8
- 230000006835 compression Effects 0.000 description 8
- 238000007906 compression Methods 0.000 description 8
- 230000002123 temporal effect Effects 0.000 description 8
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 5
- 230000000295 complement effect Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000007781 pre-processing Methods 0.000 description 5
- 230000011218 segmentation Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 239000000835 fiber Substances 0.000 description 4
- 238000012805 post-processing Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000001629 suppression Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 238000012935 Averaging Methods 0.000 description 2
- 101150114515 CTBS gene Proteins 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000007620 mathematical function Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 230000007727 signaling mechanism Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000012952 Resampling Methods 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 229910052785 arsenic Inorganic materials 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/117—Filters, e.g. for pre-processing or post-processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/174—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/186—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
- H04N19/86—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Analogue/Digital Conversion (AREA)
Abstract
Description
シンタックス要素の値が予め設定された値に等しくないとき、スライスのルマ成分のためのデブロッキング制御パラメータの値に等しいスライスのクロマ成分のためのデブロッキング制御パラメータの値を設定するステップをさらに含む。
シンタックス要素の値が予め設定された値に等しくないとき、スライスのルマ成分のためのデブロッキング制御パラメータの値に等しいスライスのクロマ成分のためのデブロッキング制御パラメータの値を設定するようにさらに構成される。
コーディングされたピクチャのスライスに関するシンタックス要素の値を判定するステップであって、シンタックス要素の値が、スライスのクロマ成分のためのデブロッキング制御パラメータに関連する、ステップと、シンタックス要素の値が予め設定された値に等しいと判定されるとき、コーディングブロックのクロマ成分のためのデブロッキング制御パラメータの値をビットストリームに符号化するステップであって、予め設定された値が、整数値である、ステップとを含む、方法を提供する。例において、予め設定された値は、0に等しくない。例において、予め設定された値は、1である。
図2は、本出願の技術を実装するように構成される例示的なビデオエンコーダ20の概略的なブロック図を示す。図2の例において、ビデオエンコーダ20は、入力201(または入力インターフェース201)、残差計算ユニット204、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210、逆変換処理ユニット212、再構築ユニット214、ループフィルタユニット220、復号ピクチャバッファ(DPB: decoded picture buffer)230、モード選択ユニット260、エントロピー符号化ユニット270、および出力272(または出力インターフェース272)を含む。モード選択ユニット260は、インター予測ユニット244、イントラ予測ユニット254、および区分けユニット262を含む可能性がある。インター予測ユニット244は、動き推定ユニットおよび動き補償ユニット(図示せず)を含む可能性がある。図2に示されたビデオエンコーダ20は、ハイブリッドビデオエンコーダまたはハイブリッドビデオコーデックによるビデオエンコーダとも呼ばれる可能性がある。
エンコーダ20は、たとえば、入力201を介してピクチャ17(またはピクチャデータ17)、たとえば、ビデオまたはビデオシーケンスを形成するピクチャのシーケンスのピクチャを受け取るように構成される可能性がある。受け取られたピクチャまたはピクチャデータは、前処理されたピクチャ19(または前処理されたピクチャデータ19)である可能性もある。簡単にするために、以下の説明は、ピクチャ17に言及する。ピクチャ17は、(特に、ビデオコーディングにおいて、現在のピクチャをその他のピクチャ、たとえば、同じビデオシーケンス、つまり、現在のピクチャも含むビデオシーケンスの既に符号化されたおよび/または復号されたピクチャと区別するために)現在のピクチャまたはコーディングされるピクチャとも呼ばれる可能性がある。
残差計算ユニット204は、たとえば、サンプル毎に(ピクセル毎に)ピクチャブロック203のサンプル値から予測ブロック265のサンプル値を差し引いてサンプル領域において残差ブロック205を取得することによって、ピクチャブロック203および予測ブロック265(予測ブロック265についてのさらなる詳細は後で与えられる)に基づいて残差ブロック205(残差205とも呼ばれる)を計算するように構成される可能性がある。
変換処理ユニット206は、残差ブロック205のサンプル値に対して変換、たとえば、離散コサイン変換(DCT)または離散サイン変換(DST)を適用して変換領域において変換係数207を取得するように構成される可能性がある。変換係数207は、変換残差係数とも呼ばれ、変換領域において残差ブロック205を表現する可能性がある。
量子化ユニット208は、たとえば、スカラー量子化またはベクトル量子化を適用することによって変換係数207を量子化して量子化された係数209を取得するように構成される可能性がある。量子化された係数209は、量子化された変換係数209または量子化された残差係数209とも呼ばれる可能性がある。
逆量子化ユニット210は、たとえば、量子化ユニット208と同じ量子化ステップサイズに基づいてまたはそれを使用して、量子化ユニット208により適用された量子化方式の逆を適用することによって、量子化された係数に量子化ユニット208の逆量子化を適用して量子化解除された係数211を取得するように構成される。量子化解除された係数211は、量子化解除された残差係数211とも呼ばれ、--量子化による損失が原因で概して変換係数と同一ではないが--変換係数207に対応する可能性がある。
逆変換処理ユニット212は、変換処理ユニット206によって適用された変換の逆変換、たとえば、逆離散コサイン変換(DCT)または逆離散サイン変換(DST)またはその他の逆変換を適用してサンプル領域において再構築された残差ブロック213(または対応する量子化解除された係数213)を取得するように構成される。再構築された残差ブロック213は、変換ブロック(transform block)213とも呼ばれる可能性がある。
再構築ユニット214(たとえば、加算器または合算器214)は、たとえば、再構築された残差ブロック213のサンプル値と予測ブロック265のサンプル値とを--サンプル毎に--足すことによって予測ブロック265に変換ブロック213(すなわち、再構築された残差ブロック213)を足してサンプル領域において再構築されたブロック215を取得するように構成される。
ループフィルタユニット220(または短く「ループフィルタ」220)は、再構築されたブロック215をフィルタリングしてフィルタリングされたブロック221を取得する、または概して、再構築されたサンプルをフィルタリングしてフィルタリングされたサンプル値を取得するように構成される。ループフィルタユニットは、たとえば、ピクセルの遷移を平滑化するかまたはそれ以外の方法でビデオの品質を改善するように構成される。ループフィルタユニット220は、デブロッキングフィルタ、サンプル適応オフセット(SAO: sample-adaptive offset)フィルタ、または1つもしくは複数のその他のフィルタ、たとえば、適応ループフィルタ(ALF: adaptive loop filter)、雑音抑制フィルタ(NSF: noise suppression filter)、もしくはこれらの任意の組合せなどの1つまたは複数のループフィルタを含む可能性がある。例において、ループフィルタユニット220は、デブロッキングフィルタ、SAOフィルタ、およびALFフィルタを含む可能性がある。フィルタリングプロセスの順序は、デブロッキングフィルタ、SAO、およびALFである可能性がある。別の例においては、クロマスケーリングをともなうルママッピング(LMCS: luma mapping with chroma scaling)(つまり、適応的なループ内再整形器(reshaper))と呼ばれるプロセスが、追加される。このプロセスは、デブロッキングの前に実行される。別の例において、デブロッキングフィルタプロセスは、内部の下位ブロックのエッジ、たとえば、アフィンの下位ブロックのエッジ、ATMVPの下位ブロックのエッジ、下位ブロック変換(SBT: sub-block transform)のエッジ、およびイントラ下位区画(ISP: intra sub-partition)のエッジに適用される可能性もある。
復号ピクチャバッファ(DPB)230は、ビデオエンコーダ20によってビデオデータを符号化するための参照ピクチャまたは概して参照ピクチャデータを記憶するメモリである可能性がある。DPB230は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗変化型RAM(RRAM: resistive RAM)、またはその他の種類のメモリデバイスなどの様々なメモリデバイスのいずれかによって形成される可能性がある。復号ピクチャバッファ(DPB)230は、1つまたは複数のフィルタリングされたブロック221を記憶するように構成される可能性がある。復号ピクチャバッファ230は、同じ現在のピクチャまたは異なるピクチャ、たとえば、既に再構築されたピクチャのその他の既にフィルタリングされたブロック、たとえば、既に再構築され、フィルタリングされたブロック221を記憶するようにさらに構成される可能性があり、たとえば、インター予測のために、完全な既に再構築された、つまり、復号されたピクチャ(および対応する参照ブロックおよびサンプル)ならびに/または部分的に再構築された現在のピクチャ(および対応する参照ブロックおよびサンプル)を提供する可能性がある。復号ピクチャバッファ(DPB)230は、たとえば、再構築されたブロック215がループフィルタユニット220によってフィルタリングされない場合、1つもしくは複数のフィルタリングされていない再構築されたブロック215もしくは概してフィルタリングされていない再構築されたサンプルを記憶し、または再構築されたブロックもしくはサンプルの任意のその他のさらに処理されたバージョンを記憶するようにも構成される可能性がある。
モード選択ユニット260は、区分けユニット262、インター予測ユニット244、およびイントラ予測ユニット254を含み、元のピクチャデータ、たとえば、元のブロック203(現在のピクチャ17の現在のブロック203)と、再構築されたピクチャデータ、たとえば、同じ(現在の)ピクチャの、および/またはたとえば復号ピクチャバッファ230もしくはその他のバッファ(たとえば、図示されていないラインバッファ)からの1つもしくは複数の既に復号されたピクチャからのフィルタリングされたおよび/またはフィルタリングされていない再構築されたサンプルまたはブロックとを受け取るかまたは取得するように構成される。再構築されたピクチャデータは、予測ブロック265または予測子(predictor)265を取得するための予測、たとえば、インター予測またはイントラ予測のための参照ピクチャデータとして使用される。
区分けユニット262は、ビデオシーケンスのピクチャをコーディングツリーユニット(CTU)のシーケンスに区分けするように構成される可能性があり、区分けユニット262は、コーディングツリーユニット(CTU)203をより小さな区画、たとえば、正方形または長方形のサイズのより小さなブロックに区分けする(または分割する)可能性がある。3つのサンプル配列を有するピクチャに関して、CTUは、ルマサンプルのN×Nのブロックと、クロマサンプルの2つの対応するブロックとからなる。CTUのルマブロックの最大の許容されるサイズは、開発中の多目的ビデオコーディング(VVC)においては128×128であるように規定されるが、将来は128×128よりも大きな値、たとえば、256×256であるように規定され得る。ピクチャのCTUは、スライス/タイルグループ、タイル、またはブリックとしてクラスタリングされる/グループ化される可能性がある。タイルは、ピクチャの長方形の領域を包含し、タイルは、1つまたは複数のブリックに分割され得る。ブリックは、タイル内のいくつかのCTUの行からなる。複数のブリックに区分けされないタイルは、ブリックと呼ばれ得る。しかし、ブリックは、タイルの純粋なサブセットであり、タイルとは呼ばれない。VVCにおいてサポートされるタイルグループの2つのモード、すなわち、ラスタスキャンスライス/タイルグループモードおよび長方形スライスモードが、存在する。ラスタ・スキャン・タイル・グループ・モードにおいて、スライス/タイルグループは、ピクチャのタイルのラスタスキャンのタイルのシーケンスを含む。長方形スライスモードにおいて、スライスは、ピクチャの長方形の領域を集合的に形成するピクチャのいくつかのブリックを含む。長方形スライス内のブリックは、スライスのブリックのラスタスキャンの順序になっている。これらのより小さなブロック(下位ブロックとも呼ばれる可能性がある)は、より一層小さな区画にさらに区分けされる可能性がある。これは、木区分けまたは階層的木区分けとも呼ばれ、たとえば、ルートツリーレベル0(階層レベル0、深さ0)のルートブロックが、再帰的に区分けされ、たとえば、次に低いツリーレベルの2つ以上のブロック、たとえば、ツリーレベル1(階層レベル1、深さ1)のノードに区分けされる可能性があり、これらのブロックが、次に低いレベル、たとえば、ツリーレベル2(階層レベル2、深さ2)の2つ以上のブロックに再び区分けされる可能性があり、たとえば、終了基準が満たされる、たとえば、最大のツリーの深さまたは最小のブロックサイズが達せられるので区分けが終了されるまで以下同様である。さらに区分けされないブロックは、木の葉ブロックまたは葉ノードとも呼ばれる。2つの区画への区分けを使用する木は、二分木(BT)と呼ばれ、3つの区画への区分けを使用する木は、三分木(TT)と呼ばれ、4つの区画への区分けを使用する木は、四分木(QT)と呼ばれる。
1組のイントラ予測モードは、たとえばHEVCにおいて定義された35個の異なるイントラ予測モード、たとえば、DC(もしくは平均)モードおよび平面モードのような非方向性モード、または方向性モードを含む可能性があり、あるいはたとえばVVCのために定義された67個の異なるイントラ予測モード、たとえば、DC(もしくは平均)モードおよび平面モードのような非方向性モード、または方向性モードを含む可能性がある。例として、いくつかの通常の角度性イントラ予測モード(angular intra prediction mode)が、たとえば、VVCにおいて定義される、非正方形ブロックのための広角イントラ予測モード(wide-angle intra prediction mode)によって適応的に置き換えられる。別の例として、DC予測のための分割動作を避けるために、長辺のみが、非正方形ブロックに関して平均を計算するために使用される。また、平面モードのイントラ予測の結果が、位置依存イントラ予測組合せ(PDPC: position dependent intra prediction combination)の方法によってさらに修正される可能性がある。
1組の(または可能な)インター予測モードは、利用可能な参照ピクチャ(つまり、たとえば、DBP230に記憶された前の少なくとも部分的に復号されたピクチャ)ならびにその他のインター予測パラメータ、たとえば、最もよく一致する参照ブロックを探索するために参照ピクチャ全体が使用されるのかもしくは参照ピクチャの一部のみ、たとえば、現在のブロックのエリアの周りの探索窓(search window)エリアのみが使用されるか、ならびに/またはたとえば、ピクセル補間、たとえば、半/セミペル(half/semi-pel)、4分の1ペルおよび/もしくは1/16ペル補間が適用されるか否かに依存する。
エントロピー符号化ユニット270は、たとえば、ビデオデコーダ30がパラメータを受信し、復号のために使用する可能性があるように、たとえば、符号化されたビットストリーム21の形態で出力272を介して出力され得る符号化されたピクチャデータ21を得るために、量子化された係数209、インター予測パラメータ、イントラ予測パラメータ、ループフィルタパラメータ、および/またはその他のシンタックス要素に対して、たとえば、エントロピー符号化アルゴリズムもしくは方式(たとえば、可変長コーディング(VLC: variable length coding)方式、コンテキスト適応VLC方式(CAVLC: context adaptive VLC)、算術コーディング方式、2値化、コンテキスト適応2値算術コーディング(CABAC: context adaptive binary arithmetic coding)、シンタックスに基づくコンテキスト適応2値算術コーディング(SBAC: syntax-based context-adaptive binary arithmetic coding)、確率間隔区分エントロピー(PIPE: probability interval partitioning entropy)コーディング、もしくは別のエントロピー符号化方法もしくは技術)またはバイパス(bypass)(非圧縮)を適用するように構成される。符号化されたビットストリーム21は、ビデオデコーダ30に送信されるか、または後の送信またはビデオデコーダ30による取り出しのためにメモリに記憶される可能性がある。
図3は、本出願の技術を実装するように構成されるビデオデコーダ30の例を示す。ビデオデコーダ30は、復号されたピクチャ331を取得するために、たとえば、エンコーダ20によって符号化された符号化されたピクチャデータ21(たとえば、符号化されたビットストリーム21)を受信するように構成される。符号化されたピクチャデータまたはビットストリームは、符号化されたピクチャデータ、たとえば、符号化されたビデオスライス(および/またはタイルグループもしくはタイル)のピクチャブロックならびに関連するシンタックス要素を表すデータを復号するための情報を含む。
エントロピー復号ユニット304は、ビットストリーム21(または概して符号化されたピクチャデータ21)を解析し、たとえば、符号化されたピクチャデータ21にエントロピー復号を実行して、たとえば、量子化された係数309ならびに/あるいは復号されたコーディングパラメータ(図3に示さず)、たとえば、インター予測パラメータ(たとえば、参照ピクチャインデックスおよび動きベクトル)、イントラ予測パラメータ(たとえば、イントラ予測モードもしくはインデックス)、変換パラメータ、量子化パラメータ、ループフィルタパラメータ、および/またはその他のシンタックス要素のいずれかまたはすべてを取得するように構成される。エントロピー復号ユニット304は、エンコーダ20のエントロピー符号化ユニット270に関連して説明された符号化方式に対応する復号アルゴリズムまたは方式を適用するように構成される可能性がある。エントロピー復号ユニット304は、インター予測パラメータ、イントラ予測パラメータ、および/またはその他のシンタックス要素をモード適用ユニット360に提供し、その他のパラメータをデコーダ30のその他のユニットに提供するようにさらに構成される可能性がある。ビデオデコーダ30は、ビデオスライスのレベルおよび/またはビデオブロックのレベルでシンタックス要素を受信する可能性がある。スライスおよびそれぞれのシンタックス要素に加えて、またはスライスおよびそれぞれのシンタックス要素の代替として、タイルグループおよび/またはタイルならびにそれぞれのシンタックス要素が、受信されるおよび/または使用される可能性がある。
逆量子化ユニット310は、(たとえば、エントロピー復号ユニット304によって、たとえば、解析および/または復号することによって)符号化されたピクチャデータ21から量子化パラメータ(QP)(または概して逆量子化に関連する情報)および量子化された係数を受け取り、復号された量子化された係数309に対して量子化パラメータに基づいて逆量子化を適用して、変換係数311とも呼ばれる可能性がある量子化解除された係数311を取得するように構成される可能性がある。逆量子化プロセスは、量子化の度合いと、同様に、適用されるべき逆量子化の度合いとを決定するために、ビデオスライス(またはタイルまたはタイルグループ)内の各ビデオブロックに関してビデオエンコーダ20によって決定された量子化パラメータを使用することを含む可能性がある。
逆変換処理ユニット312は、変換係数311とも呼ばれる量子化解除された係数311を受け取り、サンプル領域において再構築された残差ブロック213を取得するために、量子化解除された係数311に変換を適用するように構成される可能性がある。再構築された残差ブロック213は、変換ブロック213とも呼ばれる可能性がある。変換は、逆変換、たとえば、逆DCT、逆DST、逆整数変換、または概念的に同様の逆変換プロセスである可能性がある。逆変換処理ユニット312は、量子化解除された係数311に適用される変換を決定するために、(たとえば、エントロピー復号ユニット304によって、たとえば、解析および/または復号することによって)符号化されたピクチャデータ21から変換パラメータまたは対応する情報を受け取るようにさらに構成される可能性がある。
再構築ユニット314(たとえば、加算器または合算器314)は、たとえば、再構築された残差ブロック313のサンプル値と予測ブロック365のサンプル値とを足すことによって予測ブロック365に再構築された残差ブロック313を足してサンプル領域において再構築されたブロック315を取得するように構成される可能性がある。
(コーディングループ内かまたはコーディングループの後かのどちらかの)ループフィルタユニット320は、たとえば、ピクセルの遷移を平滑化するかまたはそれ以外の方法でビデオの品質を改善するために再構築されたブロック315をフィルタリングしてフィルタリングされたブロック321を取得するように構成される。ループフィルタユニット320は、デブロッキングフィルタ、サンプル適応オフセット(SAO)フィルタ、または1つもしくは複数のその他のフィルタ、たとえば、適応ループフィルタ(ALF)、雑音抑制フィルタ(NSF)、もしくはこれらの任意の組合せなどの1つまたは複数のループフィルタを含む可能性がある。例において、ループフィルタユニット220は、デブロッキングフィルタ、SAOフィルタ、およびALFフィルタを含む可能性がある。フィルタリングプロセスの順序は、デブロッキングフィルタ、SAO、およびALFである可能性がある。別の例においては、クロマスケーリングをともなうルママッピング(LMCS)(つまり、適応的なループ内再整形器)と呼ばれるプロセスが、追加される。このプロセスは、デブロッキングの前に実行される。別の例において、デブロッキングフィルタプロセスは、内部の下位ブロックのエッジ、たとえば、アフィンの下位ブロックのエッジ、ATMVPの下位ブロックのエッジ、下位ブロック変換(SBT)のエッジ、およびイントラ下位区画(ISP)のエッジに適用される可能性もある。ループフィルタユニット320は図3にループ内フィルタであるものとして示されるが、その他の構成において、ループフィルタユニット320は、ループ後フィルタとして実装される可能性がある。
それから、ピクチャの復号されたビデオブロック321は、その他のピクチャに関するその後の動き補償のための参照ピクチャとしておよび/またはディスプレイ上にそれぞれ出力するために復号されたピクチャ331を記憶する復号ピクチャバッファ330に記憶される。
インター予測ユニット344は、インター予測ユニット244と(特に動き補償ユニットと)同一である可能性があり、イントラ予測ユニット354は、インター予測ユニット254と機能的に同一である可能性があり、(たとえば、エントロピー復号ユニット304によって、たとえば、解析および/または復号することによって)符号化されたピクチャデータ21から受け取られた区分けおよび/または予測パラメータまたはそれぞれの情報に基づいて分割または区分けの判断および予測を実行する。モード適用ユニット360は、予測ブロック365を得るために、(フィルタリングされたまたはフィルタリングされていない)再構築されたピクチャ、ブロック、またはそれぞれのサンプルに基づいてブロック毎に予測(イントラまたはインター予測)を実行するように構成される可能性がある。
- tu_joint_cbcr_residual_flagが0に等しい場合、変数TuCResModeは、0に等しいように設定される。
- そうではなく、tu_cbf_cbが1に等しく、tu_cbf_crが0に等しい場合、変数TuCResModeは、1に等しいように設定される。
- そうではなく、tu_cbf_cbが1に等しい場合、変数TuCResModeは、2に等しいように設定される。
- それ以外の場合、変数TuCResModeは、3に等しいように設定される。
qpInVal[ i ][ 0 ] = -QpBdOffsetC + delta_qp_in_val_minus1[ i ][ 0 ]
qpOutVal[ i ][ 0 ] = -QpBdOffsetC + delta_qp_out_val[ i ][ 0 ]
for( j = 1; j <= num_points_in_qp_table_minus1[ i ]; j++ ) {
qpInVal[ i ][ j ] = qpInVal[ i ][ j - 1 ] + delta_qp_in_val_minus1[ i ][ j ]+1
qpOutVal[ i ][ j ] = qpOutVal[ i ][ j - 1 ] + delta_qp_out_val[ i ][ j ]
}
ChromaQpTable[ i ][ qpInVal[ i ][ 0 ] ] = qpOutVal[ i ][ 0 ]
for( k = qpInVal[ i ][ 0 ] - 1; k >= -QpBdOffsetC; k-- )
ChromaQpTable[ i ][ k ] = Clip3( -QpBdOffsetC, 63, ChromaQpTable[ i ][ k + 1 ] - 1 ) (7-31)
for( j = 0; j < num_points_in_qp_table_minus1[ i ]; j++ ) {
sh = ( delta_qp_in_val_minus1[ i ][j + 1 ] + 2 ) >> 1
for( k = qpInVal[ i ][ j ] + 1, m = 1; k <= qpInval[ i ][ j + 1 ]; k++, m++)
ChromaQpTable[ i ][ k ] = ChromaQpTable[ i ][ qpInVal[ i ][ j ] ] +
( delta_qp_out_val[ i ][j + 1] * m + sh ) / ( delta_qp_in_val_minus1[ i ][j + 1] + 1 )
}
for( k = qpInVal[ i ][ num_points_in_qp_table_minus1[ i ] ] + 1; k <= 63; k++ )
ChromaQpTable[ i ][ k ] = Clip3( -QpBdOffsetC, 63, ChromaQpTable[ i ][ k - 1 ] + 1 )
QPc = QPi - x。ここで、xは、色成分値(cIdx)に依存する定数であり、xは、合同Cb-Cr成分を含む異なる色成分インデックスに関して異なる値を取り得る。
8.8.3.1 概要
このプロセスへの入力は、デブロッキング前の再構築されたピクチャ、すなわち、配列recPictureL、ならびに、ChromaArrayTypeが0に等しくないときには、配列recPictureCbおよびrecPictureCrである。
注- 本明細書においてはフィルタリングプロセスがピクチャ単位で規定されるが、デコーダが同じ出力値を生成するために処理の依存関係の順序を適切に考慮するならば、フィルタリングプロセスは、同等の結果を得ながらコーディングユニット単位で実施されることが可能である。
- ピクチャの境界にあるエッジ
- サブピクチャインデックスsubpicIdxを有し、loop_filter_across_subpic_enabled_flag[ subpicIdx ]が0に等しいサブピクチャの境界と一致するエッジ
- VirtualBoundariesPresentFlagが1に等しいときに、ピクチャの仮想境界(virtual boundary)と一致するエッジ
- loop_filter_across_tiles_enabled_flagが0に等しいときに、タイルの境界と一致するエッジ
- loop_filter_across_slices_enabled_flagが0に等しいときに、スライスの境界と一致するエッジ
- slice_deblocking_filter_disabled_flagが1に等しいスライスの上境界または左境界と一致するエッジ。
- slice_deblocking_filter_disabled_flagが1に等しいスライス内のエッジ
- ルマ成分の4×4サンプルグリッドの境界に対応しないエッジ
- クロマ成分の8×8サンプルグリッドの境界に対応しないエッジ
- エッジの両側が1に等しいintra_bdpcm_luma_flagを有するルマ成分内のエッジ
- エッジの両側が1に等しいintra_bdpcm_chroma_flagを有するクロマ成分内のエッジ
- 関連する変換ユニットのエッジでないクロマ下位ブロックのエッジ
- 変数treeTypeが、DUAL_TREE_LUMAに等しいように設定される。
- 変数treeType、デブロッキング前の再構築されたピクチャ、すなわち、配列recPictureL、およびEDGE_VERに等しいように設定された変数edgeTypeを入力とし、デブロッキング後の修正された再構築されたピクチャ、すなわち、配列recPictureLを出力として、8.8.3.2項において規定される一方向のためのデブロッキングフィルタプロセスを呼び出すことによって、垂直エッジがフィルタリングされる。
- 変数treeType、デブロッキング後の修正された再構築されたピクチャ、すなわち、配列recPictureL、およびEDGE_HORに等しいように設定された変数edgeTypeを入力とし、デブロッキング後の修正された再構築されたピクチャ、すなわち、配列recPictureLを出力として、8.8.3.2項において規定される一方向のためのデブロッキングフィルタプロセスを呼び出すことによって、水平エッジがフィルタリングされる。
- ChromaArrayTypeが0に等しくないとき、以下が適用される。
- 変数treeTypeが、DUAL_TREE_CHROMAに等しいように設定される。
- 変数treeType、デブロッキング前の再構築されたピクチャ、すなわち、配列recPictureCbおよび配列recPictureCr、ならびにEDGE_VERに等しいように設定された変数edgeTypeを入力とし、デブロッキング後の修正された再構築されたピクチャ、すなわち、配列recPictureCbおよびrecPictureCrを出力として、8.8.3.2項において規定される一方向のためのデブロッキングフィルタプロセスを呼び出すことによって、垂直エッジがフィルタリングされる。
- 変数treeType、デブロッキング後の修正された再構築されたピクチャ、すなわち、配列recPictureCbおよびrecPictureCr、ならびにEDGE_HORに等しいように設定された変数edgeTypeを入力とし、デブロッキング後の修正された再構築されたピクチャ、すなわち、配列recPictureCbおよびrecPictureCrを出力として、8.8.3.2項において規定される一方向のためのデブロッキングフィルタプロセスを呼び出すことによって、水平エッジがフィルタリングされる。
このプロセスへの入力は、以下である。
- ルマ成分(DUAL_TREE_LUMA)が現在処理されているのかまたはクロマ成分(DUAL_TREE_CHROMA)が現在処理されているのかを指定する変数treeType
- treeTypeがDUAL_TREE_LUMAに等しいとき、デブロッキング前の再構築されたピクチャ、すなわち、配列recPictureL
- ChromaArrayTypeが0に等しくなく、treeTypeがDUAL_TREE_CHROMAに等しいとき、配列recPictureCbおよびrecPictureCr
- 垂直(EDGE_VER)エッジがフィルタリングされるのかまたは水平(EDGE_HOR)エッジがフィルタリングされるのかを指定する変数edgeType
- treeTypeがDUAL_TREE_LUMAに等しいとき、配列recPictureL
- ChromaArrayTypeが0に等しくなく、treeTypeがDUAL_TREE_CHROMAに等しいとき、配列recPictureCbおよびrecPictureCr
firstCompIdx = ( treeType == DUAL_TREE_CHROMA ) ? 1 : 0 (1244)
lastCompIdx = ( treeType == DUAL_TREE_LUMA || ChromaArrayType == 0 ) ? 0 : 2 (1245)
- edgeTypeがEDGE_VERに等しく、下の条件のうちの1つまたは複数が真である場合、filterEdgeFlagは、0に等しいように設定される。
- 現在のコーディングブロックの左の境界が、ピクチャの左の境界である。
- 現在のコーディングブロックの左の境界が現在のサブピクチャの左の境界と一致し、loop_filter_across_subpic_enabled_flag[ CurrSubpicIdx ]またはloop_filter_across_subpic_enabled_flag[ subpicIdx ]が0に等しく、ここで、subpicIdxは、現在のコーディングブロックの左の境界がそのサブピクチャの右のサブピクチャ境界と一致するサブピクチャのサブピクチャインデックスである。
- 現在のコーディングブロックの左の境界が、タイルの左の境界であり、loop_filter_across_tiles_enabled_flagが、0に等しい。
- 現在のコーディングブロックの左の境界が、スライスの左の境界であり、loop_filter_across_slices_enabled_flagが、0に等しい。
- 現在のコーディングブロックの左の境界が、ピクチャの垂直仮想境界のうちの1つであり、VirtualBoundariesPresentFlagが、1に等しい。
- そうではなく、edgeTypeがEDGE_HORに等しく、下の条件のうちの1つまたは複数が真である場合、変数filterEdgeFlagは、0に等しいように設定される。
- 現在のルマコーディングブロックの上の境界が、ピクチャの上の境界である。
- 現在のコーディングブロックの上の境界が現在のサブピクチャの上の境界と一致し、loop_filter_across_subpic_enabled_flag[ CurrSubpicIdx ]またはloop_filter_across_subpic_enabled_flag[ subpicIdx ]が0に等しく、ここで、subpicIdxは、現在のコーディングブロックの上の境界がそのサブピクチャの下のサブピクチャ境界と一致するサブピクチャのサブピクチャインデックスである。
- 現在のコーディングブロックの上の境界が、タイルの上の境界であり、loop_filter_across_tiles_enabled_flagが、0に等しい。
- 現在のコーディングブロックの上の境界が、スライスの上の境界であり、loop_filter_across_slices_enabled_flagが、0に等しい。
- 現在のコーディングブロックの上の境界が、ピクチャの水平仮想境界のうちの1つであり、VirtualBoundariesPresentFlagが、1に等しい。
- それ以外の場合、filterEdgeFlagは、1に等しいように設定される。
- cIdxが0に等しい場合、recPictureは、デブロッキング前の再構築されたルマピクチャサンプル配列recPictureLに等しいように設定される。
- そうではなく、cIdxが1に等しい場合、recPictureは、デブロッキング前の再構築されたクロマピクチャサンプル配列recPictureCbに等しいように設定される。
- それ以外の場合(cIdxが2に等しい場合)、recPictureは、デブロッキング前の再構築されたクロマピクチャサンプル配列recPictureCrに等しいように設定される。
このプロセスへの入力は、以下である。
- 現在のピクチャの左上のサンプルを基準として現在のコーディングブロックの左上のサンプルを指定する位置( xCb, yCb )
- 現在のコーディングブロックの幅を指定する変数nCbW
- 現在のコーディングブロックの高さを指定する変数nCbH
- 現在のコーディングブロックの色成分を指定する変数cIdx
- 変数filterEdgeFlag
- (nCbW)x(nCbH)の2次元配列edgeFlags
- (nCbW)x(nCbH)の2次元配列maxFilterLengthQsおよびmaxFilterLengthPs
- 垂直(EDGE_VER)エッジがフィルタリングされるのかまたは水平(EDGE_HOR)エッジがフィルタリングされるのかを指定する変数edgeType
- 修正された(nCbW)x(nCbH)の2次元配列edgeFlags
- 修正された(nCbW)x(nCbH)の2次元配列maxFilterLengthQs、maxFilterLengthPs
- 変数gridSizeが、以下のように設定される。
gridSize = cIdx == 0 ? 4 : 8 (1246)
- edgeTypeがEDGE_VERに等しい場合、以下が適用される。
- 変数numEdgesが、Max( 1, nCbW / gridSize )に等しいように設定される。
- xEdge = 0..numEdges - 1およびy = 0..nCbH - 1に対して、以下が適用される。
- 現在のコーディングブロック内の水平位置xが、xEdge * gridSizeに等しいように設定される。
- edgeFlags[ x ][ y ]の値が、以下のように導出される。
- VirtualBoundariesPresentFlagが1に等しく、( xCb + x )が任意のn = 0..NumVerVirtualBoundaries - 1のVirtualBoundariesPosX[ n ]に等しい場合、edgeFlags[ x ][ y ]は、0に等しいように設定される。
- そうではなく、xが0に等しい場合、edgeFlags[ x ][ y ]は、filterEdgeFlagに等しいように設定される。
- そうではなく、位置( xCb + x, yCb + y )が変換ブロックのエッジにある場合、edgeFlags[ x ][ y ]は、1に等しいように設定される。
- edgeFlags[ x ][ y ]が1に等しいとき、以下が適用される。
- cIdxが0に等しい場合、以下が適用される。
- maxFilterLengthQs[ x ][ y ]の値が、以下のように導出される。
- ルマ位置( xCb + x, yCb + y )の変換ブロックのルマサンプル数で表された幅が4以下であるか、またはルマ位置( xCb + x - 1, yCb + y )の変換ブロックのルマサンプル数で表された幅が4以下である場合、maxFilterLengthQs[ x ][ y ]は、1に等しいように設定される。
- そうではなく、ルマ位置( xCb + x, yCb + y )の変換ブロックのルマサンプル数で表された幅が32以上である場合、maxFilterLengthQs[ x ][ y ]は、7に等しいように設定される。
- それ以外の場合、maxFilterLengthQs[ x ][ y ]は、3に等しいように設定される。
- maxFilterLengthPs[ x ][ y ]の値が、以下のように導出される。
- ルマ位置( xCb + x, yCb + y )の変換ブロックのルマサンプル数で表された幅が4以下であるか、またはルマ位置( xCb + x - 1, yCb + y )の変換ブロックのルマサンプル数で表された幅が4以下である場合、maxFilterLengthPs[ x ][ y ]は、1に等しいように設定される。
- そうではなく、ルマ位置( xCb + x - 1, yCb + y )の変換ブロックのルマサンプル数で表された幅が32以上である場合、maxFilterLengthPs[ x ][ y ]は、7に等しいように設定される。
- それ以外の場合、maxFilterLengthPs[ x ][ y ]は、3に等しいように設定される。
- それ以外の場合(cIdxが0に等しくない場合)、maxFilterLengthPs[ x][ y ]およびmaxFilterLengthQs[ x ][ y ]の値が、以下のように導出される。
- クロマ位置( xCb + x, yCb + y )の変換ブロックのクロマサンプル数で表された幅とクロマ位置( xCb + x - 1, yCb + y )の幅との両方が8以上である場合、maxFilterLengthPs[ x ][ y ]およびmaxFilterLengthQs[ x ][ y ]は、3に等しいように設定される。
- それ以外の場合、maxFilterLengthPs[ x ][ y ]およびmaxFilterLengthQs[ x ][ y ]は、1に等しいように設定される。
- それ以外の場合(edgeTypeがEDGE_HORに等しい場合)、以下が適用される。
- 変数numEdgesが、Max( 1, nCbH / gridSize )に等しいように設定される。
- yEdge = 0..numEdges - 1およびx = 0..nCbW - 1に対して、以下が適用される。
- 現在のコーディングブロック内の垂直位置yが、yEdge * gridSizeに等しいように設定される。
- edgeFlags[ x ][ y ]の値が、以下のように導出される。
- VirtualBoundariesPresentFlagが1に等しく、( yCb + y )が任意のn = 0..NumHorVirtualBoundaries - 1のVirtualBoundariesPosY[ n ]に等しい場合、edgeFlags[ x ][ y ]は、0に等しいように設定される。
- そうではなく、yが0に等しい場合、edgeFlags[ x ][ y ]は、filterEdgeFlagに等しいように設定される。
- そうではなく、位置( xCb + x, yCb + y )が変換ブロックのエッジにある場合、edgeFlags[ x ][ y ]は、1に等しいように設定される。
- edgeFlags[ x ][ y ]が1に等しいとき、以下が適用される。
- cIdxが0に等しい場合、以下が適用される。
- maxFilterLengthQs[ x ][ y ]の値が、以下のように導出される。
- ルマ位置( xCb + x, yCb + y )の変換ブロックのルマサンプル数で表された高さが4以下であるか、またはルマ位置( xCb + x, yCb + y - 1 )の変換ブロックのルマサンプル数で表された高さが4以下である場合、maxFilterLengthQs[ x ][ y ]は、1に等しいように設定される。
- そうではなく、ルマ位置( xCb + x, yCb + y )の変換ブロックのルマサンプル数で表された高さが32以上である場合、maxFilterLengthQs[ x ][ y ]は、7に等しいように設定される。
- それ以外の場合、maxFilterLengthQs[ x ][ y ]は、3に等しいように設定される。
- maxFilterLengthPs[ x ][ y ]の値が、以下のように導出される。
- ルマ位置( xCb + x, yCb + y )の変換ブロックのルマサンプル数で表された高さが4以下であるか、またはルマ位置( xCb + x, yCb + y - 1 )の変換ブロックのルマサンプル数で表された高さが4以下である場合、maxFilterLengthPs[ x ][ y ]は、1に等しいように設定される。
- そうではなく、ルマ位置( xCb + x, yCb + y - 1)の変換ブロックのルマサンプル数で表された高さが32以上である場合、maxFilterLengthPs[ x ][ y ]は、7に等しいように設定される。
- それ以外の場合、maxFilterLengthPs[ x ][ y ]は、3に等しいように設定される。
- それ以外の場合(cIdxが0に等しくない場合)、maxFilterLengthPs[ x][ y ]およびmaxFilterLengthQs[ x ][ y ]の値が、以下のように導出される。
- クロマ位置( xCb + x, yCb + y )の変換ブロックのクロマサンプル数で表された高さおよびクロマ位置( xCb + x, yCb + y - 1 )の変換ブロックのクロマサンプル数で表された高さが両方とも8以上である場合、以下が適用される。
- ( yCb + y ) % CtbHeightCが0より大きい場合、すなわち、水平エッジがクロマCTBの上の境界と重ならない場合、maxFilterLengthPs[ x ][ y ]とmaxFilterLengthQs[ x ][ y ]との両方は、3に等しいように設定される。
- それ以外の場合( ( yCb + y ) % CtbHeightCが0に等しい、すなわち、水平エッジがクロマCTBの上の境界と重なる場合)、maxFilterLengthPs[ x ][ y ]は1に等しいように設定され、maxFilterLengthQs[ x ][ y ]は、3に等しいように設定される。
- それ以外の場合、maxFilterLengthPs[ x][ y ]およびmaxFilterLengthQs[ x ][ y ]は、1に等しいように設定される。
このプロセスへの入力は、以下である。
- 現在のピクチャの左上のサンプルを基準として現在のコーディングブロックの左上のサンプルを指定する位置( xCb, yCb )
- 現在のコーディングブロックの幅を指定する変数nCbW
- 現在のコーディングブロックの高さを指定する変数nCbH
- (nCbW)x(nCbH)の2次元配列edgeFlags
- (nCbW)x(nCbH)の2次元配列maxFilterLengthQsおよびmaxFilterLengthPs
- 垂直(EDGE_VER)エッジがフィルタリングされるのかまたは水平(EDGE_HOR)エッジがフィルタリングされるのかを指定する変数edgeType
- 修正された(nCbW)x(nCbH)の2次元配列edgeFlags
- 修正された(nCbW)x(nCbH)の2次元配列maxFilterLengthQsおよびmaxFilterLengthPs
- inter_affine_flag[ xCb ][ yCb ]が1に等しいか、またはmerge_subblock_flag[ xCb ][ yCb ]が1に等しい場合、numSbXおよびnumSbYは、それぞれ、NumSbX[ xCb ][ yCb ]およびNumSbY[ xCb ][ yCb ]に等しいように設定される。
- それ以外の場合、numSbXおよびnumSbYは、両方とも1に等しいように設定される。
- edgeTypeがEDGE_VERに等しい場合、以下が適用される。
- 変数sbWが、Max( 8, nCbW / numSbX )に等しいように設定される。
- 配列edgeTbFlagsが、edgeFlagsに等しいように設定される。
- xEdge = 0..min( ( nCbW / 8 ) - 1, numSbX - 1)、y = 0..nCbH - 1に対して、
- 現在のコーディングブロック内の水平位置xが、xEdge * sbWに等しいように設定される。
- edgeFlags[ x ][ y ]の値が、以下のように導出される。
- VirtualBoundariesPresentFlagが1に等しく、xが任意のn = 0..NumVerVirtualBoundaries - 1のVirtualBoundariesPosX[ n ]に等しい場合、以下が適用される。
edgeFlags[ x ][ y ] = 0 (1247)
- それ以外の場合、以下が適用される。
edgeFlags[ x ][ y ] = 2 (1248)
- edgeFlags[ x ][ y ]が1または2に等しいとき、maxFilterLengthPs[ x ][ y ]およびmaxFilterLengthQs[ x ][ y ]の値が、以下のように修正される。
- xが0に等しい場合、以下が適用される。
- numSbXが1より大きいとき、以下が適用される。
maxFilterLengthQs[ x ][ y ] = Min( 5, maxFilterLengthQs[ x ][ y ] ) (1249)
- inter_affine_flag[ xCb - 1 ][ yCb + y ]が1に等しいか、またはmerge_subblock_flag[ xCb - 1 ][ yCb + y ]が1に等しいとき、以下が適用される。
maxFilterLengthPs[ x ][ y ] = Min( 5, maxFilterLengthPs[ x ][ y ] ) (1250)
- そうではなく、edgeTbFlags[ x ][ y ]が1に等しいとき、以下が適用される。
maxFilterLengthPs[ x ][ y ] = Min( 5, maxFilterLengthPs[ x ][ y ] ) (1251)
maxFilterLengthQs[ x ][ y ] = Min( 5, maxFilterLengthQs[ x ][ y ] ) (1252)
- そうではなく、以下の条件のうちの1つまたは複数が真である場合、
- ( x + 4 )がnCbW以上である
- edgeTbFlags[ x - 4 ][ y ]が1に等しい
- edgeTbFlags[ x + 4 ][ y ]が1に等しい
以下が、適用される。
maxFilterLengthPs[ x ][ y ] = 1 (1253)
maxFilterLengthQs[ x ][ y ] = 1 (1254)
- そうではなく、以下の条件のうちの1つまたは複数が真である場合、
- xEdgeが1に等しい
- xEdgeが( nCbW / 8 ) - 1に等しい
- edgeTbFlags[ x - sbW ][ y ]が1に等しい
- edgeTbFlags[ x + sbW ][ y ]が1に等しい
以下が、適用される。
maxFilterLengthPs[ x ][ y ] = 2 (1255)
maxFilterLengthQs[ x ][ y ] = 2 (1256)
- それ以外の場合、以下が適用される。
maxFilterLengthPs[ x ][ y ] = 3 (1257)
maxFilterLengthQs[ x ][ y ] = 3 (1258)
- そうではなく、edgeTypeがEDGE_HORに等しい場合、以下が適用される。
- 変数sbHが、Max( 8, nCbH / numSbY )に等しいように設定される。
- 配列edgeTbFlagsが、edgeFlagsに等しいように設定される。
- yEdge = 0..min( ( nCbH / 8 ) - 1, numSbY - 1 )、x = 0...nCbW - 1に対して、
- 現在のコーディングブロック内の垂直位置yが、yEdge * sbHに等しいように設定される。
- edgeFlags[ x ][ y ]の値が、以下のように導出される。
- VirtualBoundariesPresentFlagが1に等しく、yが任意のn = 0..NumHorVirtualBoundaries - 1のVirtualBoundariesPosY[ n ]に等しい場合、以下が適用される。
edgeFlags[ x ][ y ] = 0 (1259)
- それ以外の場合、以下が適用される。
edgeFlags[ x ][ y ] = 2 (1260)
- edgeFlags[ x ][ y ]が1または2に等しいとき、maxFilterLengthPs[ x][ y ]およびmaxFilterLengthQs[ x ][ y ]の値が、以下のように修正される。
- yが0に等しい場合、以下が適用される。
- numSbYが1より大きいとき、以下が適用される。
maxFilterLengthQs[ x ][ y ] = Min( 5, maxFilterLengthQs[ x ][ y ] ) (1261)
- inter_affine_flag[ xCb + x ][ yCb - 1 ] が1に等しいか、またはmerge_subblock_flag[ xCb + x ][ yCb - 1 ]が1に等しいとき、以下が適用される。
maxFilterLengthPs[ x ][ y ] = Min( 5, maxFilterLengthPs[ x ][ y ] ) (1262)
- そうではなく、edgeTbFlags[ x ][ y ]が1に等しいとき、以下が適用される。
maxFilterLengthPs[ x ][ y ] = Min( 5, maxFilterLengthPs[ x ][ y ] ) (1263)
maxFilterLengthQs[ x ][ y ] = Min( 5, maxFilterLengthQs[ x ][ y ] ) (1264)
- そうではなく、以下の条件のうちの1つまたは複数が真である場合、
- ( y + 4 )がnCbH以上である
- edgeTbFlags[ x ][ y - 4 ]が1に等しい
- edgeTbFlags[ x ][ y + 4 ]が1に等しい
以下が、適用される。
maxFilterLengthPs[ x ][ y ] = 1 (1265)
maxFilterLengthQs[ x ][ y ] = 1 (1266)
- そうではなく、以下の条件のうちの1つまたは複数が真である場合、
- yEdgeが1に等しい
- yEdgeが( nCbH / 8 ) - 1に等しい
- edgeTbFlags[ x ][ y - sbH ]が1に等しい
- edgeTbFlags[ x ][ y + sbH ]が1に等しい
以下が、適用される。
maxFilterLengthPs[ x ][ y ] = 2 (1267)
maxFilterLengthQs[ x ][ y ] = 2 (1268)
- それ以外の場合、以下が適用される。
maxFilterLengthPs[ x ][ y ] = 3 (1269)
maxFilterLengthQs[ x ][ y ] = 3 (1270)
このプロセスへの入力は、以下である。
- ピクチャサンプル配列recPicture
- 現在のピクチャの左上のサンプルを基準として現在のコーディングブロックの左上のサンプルを指定する位置( xCb, yCb )
- 現在のコーディングブロックの幅を指定する変数nCbW
- 現在のコーディングブロックの高さを指定する変数nCbH
- 垂直(EDGE_VER)エッジがフィルタリングされるのかまたは水平(EDGE_HOR)エッジがフィルタリングされるのかを指定する変数edgeType
- 現在のコーディングブロックの色成分を指定する変数cIdx
- (nCbW)x(nCbH)の2次元配列edgeFlags
- 変数gridSizeが、以下のように設定される。
gridSize = cIdx == 0 ? 4 : 8 (1271)
- edgeTypeがEDGE_VERに等しい場合、
xDi = ( i * gridSize ) (1272)
yDj = cIdx == 0 ? ( j << 2 ) : ( j << 1 ) (1273)
xNがMax( 0, ( nCbW / gridSize ) - 1 )に等しいように設定される (1274)
yN = cIdx == 0 ? ( nCbH / 4 ) - 1 : ( nCbH / 2 ) - 1 (1275)
- それ以外の場合(edgeTypeがEDGE_HORに等しい場合)、
xDi = cIdx == 0 ? ( i << 2 ) : ( i << 1 ) (1276)
yDj = j * gridSize (1277)
xN = cIdx == 0 ? ( nCbW / 4 ) - 1 : ( nCbW / 2 ) - 1 (1278)
yN = Max( 0, ( nCbH / gridSize ) - 1 ) (1279)
- edgeFlags[ xDi ][ yDj ]が0に等しい場合、変数bS[ xDi ][ yDj ]が、0に等しいように設定される。
- それ以外の場合、以下が適用される。
- サンプル値p0およびq0が、以下のように導出される。
- edgeTypeがEDGE_VERに等しい場合、p0は、recPicture[ xCb + xDi - 1 ][ yCb + yDj ]に等しいように設定され、q0は、recPicture[ xCb + xDi ][ yCb + yDj ]に等しいように設定される。
- それ以外の場合(edgeTypeがEDGE_HORに等しい場合)、p0は、recPicture[ xCb + xDi ][ yCb + yDj - 1 ]に等しいように設定され、q0は、recPicture[ xCb + xDi ][ yCb + yDj ]に等しいように設定される。
- 変数bS[ xDi ][ yDj ]が、以下のように導出される。
- cIdxが0に等しく、サンプルp0とq0との両方がintra_bdpcm_luma_flagが1に等しいコーディングブロック内にある場合、bS[ xDi ][ yDj ]は、0に等しいように設定される。
- そうではなく、cIdxが0より大きく、サンプルp0とq0との両方がintra_bdpcm_chroma_flagが1に等しいコーディングブロック内にある場合、bS[ xDi ][ yDj ]は、0に等しいように設定される。
- そうではなく、サンプルp0またはq0がイントラ予測モードでコーディングされたコーディングユニットのコーディングブロック内にある場合、bS[ xDi ][ yDj ]は、2に等しいように設定される。
- そうではなく、ブロックのエッジがコーディングブロックのエッジでもあり、サンプルp0またはq0がciip_flagが1に等しいコーディングブロック内にある場合、bS[ xDi ][ yDj ]は、2に等しいように設定される。
- そうではなく、ブロックのエッジが変換ブロックのエッジでもあり、サンプルp0またはq0が1つまたは複数の非ゼロの変換係数レベルを含む変換ブロック内にある場合、bS[ xDi ][ yDj ]は、1に等しいように設定される。
- そうではなく、サンプルp0を含むコーディング下位ブロックの予測モードがサンプルq0を含むコーディング下位ブロックの予測モードと異なる(すなわち、コーディング下位ブロックのうちの一方がIBC予測モードでコーディングされ、他方がインター予測モードでコーディングされる)場合、bS[ xDi ][ yDj ]は、1に等しいように設定される。
- そうではなく、cIdxが0に等しく、edgeFlags[ xDi ][ yDj ]が2に等しく、以下の条件のうちの1つまたは複数が真である場合、bS[ xDi ][ yDj ]は、1に等しいように設定される。
- サンプルp0を含むコーディング下位ブロックとサンプルq0を含むコーディング下位ブロックが、両方ともIBC予測モードでコーディングされ、2つのコーディング下位ブロックの予測に用いられるブロックベクトルの水平または垂直成分の間の絶対差が、1/16ルマサンプル単位で8以上である。
- サンプルp0を含むコーディング下位ブロックの予測のために、サンプルq0を含むコーディング下位ブロックの予測とは異なる参照ピクチャまたは異なる数の動きベクトルが使用される。
注1- 2つのコーディング下位ブロックのために使用される参照ピクチャが同じであるのかまたは異なるのかの判定は、予測が参照ピクチャリスト0のインデックスを使用して形成されるのかまたは参照ピクチャリスト1のインデックスを使用して形成されるのかに無関係に、および参照ピクチャリスト内のインデックスの位置が異なるかどうかにも無関係に、どのピクチャが参照されるかにのみ基づく。
注2- 左上のサンプルが( xSb, ySb )をカバーするコーディング下位ブロックの予測のために使用される動きベクトルの数は、PredFlagL0[ xSb ][ ySb ] + PredFlagL1[ xSb ][ ySb ]に等しい。
- 1つの動きベクトルが、サンプルp0を含むコーディング下位ブロックを予測するために使用され、1つの動きベクトルが、サンプルq0を含むコーディング下位ブロックを予測するために使用され、使用される動きベクトルの水平または垂直成分の間の絶対差が、1/16ルマサンプル単位で8以上である。
- 2つの動きベクトルおよび2つの異なる参照ピクチャが、サンプルp0を含むコーディング下位ブロックを予測するために使用され、同じ2つの参照ピクチャに関する2つの動きベクトルが、サンプルq0を含むコーディング下位ブロックを予測するために使用され、同じ参照ピクチャに関する2つのコーディング下位ブロックの予測に使用される2つの動きベクトルの水平または垂直成分の間の絶対差が、1/16ルマサンプル単位で8以上である。
- 同じ参照ピクチャに関する2つの動きベクトルが、サンプルp0を含むコーディング下位ブロックを予測するために使用され、同じ参照ピクチャに関する2つの動きベクトルが、サンプルq0を含むコーディング下位ブロックを予測するために使用され、以下の条件の両方が真である。
- 2つのコーディング下位ブロックの予測に使用されるリスト0の動きベクトルの水平もしくは垂直成分の間の絶対差が、1/16ルマサンプル単位で8以上であるか、または2つのコーディング下位ブロックの予測に使用されるリスト1の動きベクトルの水平もしくは垂直成分の間の絶対差が、1/16ルマサンプル単位で8以上である。
- サンプルp0を含むコーディング下位ブロックの予測に使用されるリスト0の動きベクトルと、サンプルq0を含むコーディング下位ブロックの予測に使用されるリスト1の動きベクトルとの水平もしくは垂直成分の間の絶対差が、1/16ルマサンプル単位で8以上であるか、またはサンプルp0を含むコーディング下位ブロックの予測に使用されるリスト1の動きベクトルと、サンプルq0を含むコーディング下位ブロックの予測に使用されるリスト0の動きベクトルとの水平もしくは垂直成分の間の絶対差が、1/16ルマサンプル単位で8以上である。
- それ以外の場合、変数bS[ xDi ][ yDj ]は、0に等しいように設定される。
このプロセスへの入力は、以下である。
- 垂直エッジ(EDGE_VER)が現在処理されているのかまたは水平エッジ(EDGE_HOR)が現在処理されているのかを指定する変数edgeType
- 現在の色成分を指定する変数cIdx
- デブロッキング前の再構築されたピクチャrecPicture
- 現在のピクチャの左上のサンプルを基準として現在のコーディングブロックの左上のサンプルを指定する位置( xCb, yCb )
- 現在のコーディングブロックの幅を指定する変数nCbW
- 現在のコーディングブロックの高さを指定する変数nCbH
- 境界の強度を指定する配列bS
- 配列maxFilterLengthPsおよびmaxFilterLengthQs
- 変数gridSizeが、以下のように設定される。
gridSize = cIdx == 0 ? 4 : 8 (1280)
- 変数subW、subH、xN、yNが、以下のように導出される。
subW = cIdx == 0 ? 1 : SubWidthC (1281)
subH = cIdx == 0 ? 1 : SubHeightC (1282)
xN = edgeType == EDGE_VER ? Max( 0, ( nCbW / gridSize ) - 1 ) : ( nCbW / 4 / subW ) - 1 (1283)
yN = edgeType == EDGE_VER ? ( nCbH / 4 / subH ) - 1 : Max( 0, ( nCbH / gridSize ) - 1 ) (1284)
- k = 0..xNである変数xDkおよびm = 0..yNである変数yDmが、以下のように導出される。
xDk = edgeType == EDGE_VER ? ( k * gridSize ) : ( k << ( 2 / subW ) ) (1285)
yDm = edgeType == EDGE_VER ? ( m << ( 2 / subH ) ) : ( m * gridSize ) (1286)
- k = 0..xNであるxDkおよびm = 0..yNであるyDmに関して、以下が適用される。
- bS[ xDk ][ yDm ]が0より大きいとき、以下の順序付けられたステップが適用される。
- cIdxが0に等しい場合、現在のコーディングユニットのルマコーディングブロック内のエッジのためのフィルタリングプロセスは、以下の順序付けられたステップからなる。
1. 8.8.3.6.1項において規定されるルマブロックのエッジのための判断プロセスが、ルマピクチャサンプル配列recPicture、ルマコーディングブロックの位置( xCb, yCb )、( xDk, yDm )に等しいように設定されたブロックのルマ位置( xBl, yBl )、エッジの方向edgeType、境界フィルタリング強度bS[ xDk ][ yDm ]、maxFilterLengthPs[ xDk ][ yDm ]に等しいように設定された最大フィルタ長maxFilterLengthP、およびmaxFilterLengthQs[ xDk ][ yDm ]に等しいように設定された最大フィルタ長maxFilterLengthQを入力とし、判断dE、dEp、およびdEq、修正された最大フィルタ長maxFilterLengthPおよびmaxFilterLengthQ、ならびに変数tCを出力として呼び出される。
2. 8.8.3.6.2項において規定されるブロックのエッジのためのフィルタリングプロセスが、ルマピクチャサンプル配列recPicture、ルマコーディングブロックの位置( xCb, yCb )、( xDk, yDm )に等しいように設定されたブロックのルマ位置( xBl, yBl )、エッジの方向edgeType、判断dE、dEp、およびdEq、最大フィルタ長maxFilterLengthPおよびmaxFilterLengthQ、ならびに変数tCを入力とし、修正されたルマピクチャサンプル配列recPictureを出力として呼び出される。
- それ以外の場合(cIdxが0に等しくない場合)、cIdxによって指定された現在のコーディングユニットのクロマコーディングブロック内のエッジのためのフィルタリングプロセスは、以下の順序付けられたステップからなる。
1. 8.8.3.6.3項において規定されるクロマブロックのエッジのための判断プロセスが、クロマピクチャサンプル配列recPicture、クロマコーディングブロックの位置( xCb, yCb )、( xDk, yDm )に等しいように設定されたクロマブロックの位置( xBl, yBl )、エッジの方向edgeType、変数cIdx、境界フィルタリング強度bS[ xDk ][ yDm ]、maxFilterLengthPs[ xDk ][ yDm ]に等しいように設定された最大フィルタ長maxFilterLengthP、およびmaxFilterLengthQs[ xDk ][ yDm ]に等しいように設定された最大フィルタ長maxFilterLengthQを入力とし、修正された最大フィルタ長maxFilterLengthPおよびmaxFilterLengthQ、ならびに変数tCを出力として呼び出される。
2. maxFilterLengthQが0より大きいとき、8.8.3.6.4項において規定されるクロマブロックのエッジのためのフィルタリングプロセスが、クロマピクチャサンプル配列recPicture、クロマコーディングブロックの位置( xCb, yCb )、( xDk, yDm )に等しいように設定されたブロックのクロマ位置( xBl, yBl )、エッジの方向edgeType、変数tC、最大フィルタ長maxFilterLengthPおよびmaxFilterLengthQを入力とし、修正されたクロマピクチャサンプル配列recPictureを出力として呼び出される。
このプロセスへの入力は、以下である。
- ピクチャサンプル配列recPicture
- 現在のピクチャの左上のサンプルを基準として現在のコーディングブロックの左上のサンプルを指定する位置( xCb, yCb )
- 現在のコーディングブロックの左上のサンプルを基準として現在のブロックの左上のサンプルを指定する位置( xBl, yBl )
- 垂直(EDGE_VER)エッジがフィルタリングされるのかまたは水平(EDGE_HOR)エッジがフィルタリングされるのかを指定する変数edgeType
- 境界フィルタリング強度を指定する変数bS
- 最大フィルタ長を指定する変数maxFilterLengthP
- 最大フィルタ長を指定する変数maxFilterLengthQ
- 判断を含む変数dE、dEp、およびdEq
- 修正されたフィルタ長変数maxFilterLengthPおよびmaxFilterLengthQ
- 変数tC
- edgeTypeがEDGE_VERに等しい場合、以下が適用される。
qj,k = recPicture[ xCb + xBl + j ][ yCb + yBl + k ] (1287)
pi,k = recPicture[ xCb + xBl - i - 1 ][ yCb + yBl + k ] (1288)
- それ以外の場合(edgeTypeがEDGE_HORに等しい場合)、以下が適用される。
qj,k = recPicture[ xCb + xBl + k ][ yCb + yBl + j ] (1289)
pi,k = recPicture[ xCb + xBl + k ][ yCb + yBl - i - 1 ] (1290)
- sps_ladf_enabled_flagが1に等しい場合、以下が適用される。
- 再構築されたルマレベルの変数lumaLevelが、以下のように導出される。
lumaLevel = ( ( p0,0 + p0,3 + q0,0 + q0,3 ) >> 2 ) (1291)
- 変数qpOffsetが、sps_ladf_lowest_interval_qp_offsetに等しいように設定され、以下のように修正される。
for( i = 0; i < sps_num_ladf_intervals_minus2 + 1; i++ ) {
if( lumaLevel > SpsLadfIntervalLowerBound[ i + 1 ] )
qpOffset = sps_ladf_qp_offset[ i ] (1292)
else
break
}
- それ以外の場合、qpOffsetが、0に等しいように設定される。
qP = ( ( QpQ + QpP + 1 ) >> 1 ) + qpOffset (1293)
Q = Clip3( 0, 63, qP + ( slice_beta_offset_div2 << 1 ) ) (1294)
式中、slice_beta_offset_div2は、サンプルq0,0を含むスライスに関するシンタックス要素slice_beta_offset_div2の値である。
β=β' * ( 1 << ( BitDepth - 8 ) ) (1295)
Q = Clip3( 0, 65, qP + 2 * ( bS - 1 ) + ( slice_tc_offset_div2 << 1 ) ) (1296)
式中、slice_tc_offset_div2は、サンプルq0,0を含むスライスに関するシンタックス要素slice_tc_offset_div2の値である。
tC = BitDepth < 10 ? ( tC' + 2 ) >> ( 10 - BitDepth ) : tC' * ( 1 << ( BitDepth - 10 ) ) (1297)
変数dp0、dp3、dq0、およびdq3が、以下のように導出される。
dp0 = Abs( p2,0 - 2 * p1,0 + p0,0 ) (1298)
dp3 = Abs( p2,3 - 2 * p1,3 + p0,3 ) (1299)
dq0 = Abs( q2,0 - 2 * q1,0 + q0,0 ) (1300)
dq3 = Abs( q2,3 - 2 * q1,3 + q0,3 ) (1301)
maxFilterLengthPおよびmaxFilterLengthQが両方とも3以上であるとき、変数sp0、sq0、spq0、sp3、sq3、およびspq3が、以下のように導出される。
sp0 = Abs( p3,0 - p0,0 ) (1302)
sq0 = Abs( q0,0 - q3,0 ) (1303)
spq0 = Abs( p0,0 - q0,0 ) (1304)
sp3 = Abs( p3,3 - p0,3 ) (1305)
sq3 = Abs( q0,3 - q3,3 ) (1306)
spq3 = Abs( p0,3 - q0,3 ) (1307)
1. 変数sidePisLargeBlkおよびsideQisLargeBlkが、0に等しいように設定される。
maxFilterLengthPが3より大きいとき、sidePisLargeBlkが、1に等しいように設定される。
maxFilterLengthQが3より大きいとき、sideQisLargeBlkが、1に等しいように設定される。
edgeTypeがEDGE_HORに等しく、(yCb + yBl ) % CtbSizeYが0に等しいとき、sidePisLargeBlkが、0に等しいように設定される。
変数dSam0およびdSam3が、0に初期化される。
sidePisLargeBlkまたはsideQisLargeBlkが0より大きいとき、以下が適用される。
a. 以下のように、変数dp0L、dp3Lが導出され、maxFilterLengthPが修正される。
- sidePisLargeBlkが1に等しい場合、以下が適用される。
dp0L = ( dp0 + Abs( p5,0 - 2 * p4,0 + p3,0 ) + 1 ) >> 1 (1308)
dp3L = ( dp3 + Abs( p5,3 - 2 * p4,3 + p3,3 ) + 1 ) >> 1 (1309)
- それ以外の場合、以下が適用される。
dp0L = dp0 (1310)
dp3L = dp3 (1311)
maxFilterLengthP = 3 (1312)
b. 変数dq0Lおよびdq3Lが、以下のように導出される。
- sideQisLargeBlkが1に等しい場合、以下が適用される。
dq0L = ( dq0 + Abs( q5,0 - 2 * q4,0 + q3,0 ) + 1 ) >> 1 (1313)
dq3L = ( dq3 + Abs( q5,3 - 2 * q4,3 + q3,3 ) + 1 ) >> 1 (1314)
- それ以外の場合、以下が適用される。
dq0L = dq0 (1315)
dq3L = dq3 (1316)
c. 変数sp0Lおよびsp3Lが、以下のように導出される。
- maxFilterLengthPが7に等しい場合、以下が適用される。
sp0L = sp0 + Abs( p7,0 - p6,0 - p5,0 + p4,0) (1317)
sp3L = sp3 + Abs( p7,3 - p6,3 - p5,3 + p4,3) (1318)
- それ以外の場合、以下が適用される。
sp0L = sp0 (1319)
sp3L = sp3 (1320)
d. 変数sq0Lおよびsq3Lが、以下のように導出される。
- maxFilterLengthQが7に等しい場合、以下が適用される。
sq0L = sq0 + Abs( q4,0 - q5,0 - q6,0 + q7,0 ) (1321)
sq3L = sq3 + Abs( q4,3 - q5,3 - q6,3 + q7,3 ) (1322)
- それ以外の場合、以下が適用される。
sq0L = sq0 (1323)
sq3L = sq3 (1324)
e. 変数dpq0L、dpq3L、およびdLが、以下のように導出される。
dpq0L = dp0L + dq0L (1325)
dpq3L = dp3L + dq3L (1326)
dL = dpq0L + dpq3L (1327)
f. dLがβより小さいとき、以下の順序付けられたステップが適用される。
i. 変数dpqが、2 * dpq0Lに等しいように設定される。
変数spが、sp0Lに等しいように設定され、変数sqが、sq0Lに等しいように設定され、変数spqが、spq0に等しいように設定される。
変数p0、p3、q0、およびq3が、まず0に初期化され、それから、以下のようにsidePisLargeBlkおよびsideQisLargeBlkに従って修正される。
- sidePisLargeBlkが1に等しいとき、以下が適用される。
p3 = p3,0 (1328)
p0 = pmaxFilterLengthP,0 (1329)
- sideQisLargeBlkが1に等しいとき、以下が適用される。
q3 = q3,0 (1330)
q0 = qmaxFilterLengthQ,0 (1331)
サンプル位置( xCb + xBl, yCb + yBl )に関して、8.8.3.6.5項において規定されるルマサンプルのための判断プロセスが、サンプル値p0、p3、q0、q3、変数dpq、sp、sq、spq、sidePisLargeBlk、sideQisLargeBlk、β、およびtCを入力として呼び出され、出力が、判断dSam0に割り当てられる。
変数dpqが、2 * dpq3Lに等しいように設定される。
変数spが、sp3Lに等しいように設定され、変数sqが、sq3Lに等しいように設定され、変数spqが、spq3に等しいように設定される。
変数p0、p3、q0、およびq3が、まず0に初期化され、それから、以下のようにsidePisLargeBlkおよびsideQisLargeBlkに従って修正される。
- sidePisLargeBlkが1に等しいとき、以下が適用される。
p3 = p3,3 (1332)
p0 = pmaxFilterLengthP,3 (1333)
- sideQisLargeBlkが1に等しいとき、以下が適用される。
q3 = q3,3 (1334)
q0 = qmaxFilterLengthQ,3 (1335)
サンプル位置( xCb + xBl, yCb + yBl + 3 )に関してedgeTypeがEDGE_VERに等しいか、またはサンプル位置( xCb + xBl + 3, yCb + yBl )に関してedgeTypeがEDGE_HORに等しいとき、8.8.3.6.5項において規定されるルマサンプルのための判断プロセスが、サンプル値p0、p3、q0、q3、変数dpq、sp、sq、spq、sidePisLargeBlk、sideQisLargeBlk、β、およびtCを入力として呼び出され、出力が、判断dSam3に割り当てられる。
2. 変数dE、dEp、およびdEqが、以下のように導出される。
- dSam0およびdSam3が両方とも1に等しい場合、変数dEは3に等しいように設定され、dEpは、1に等しいように設定され、dEqは、1に等しいように設定される。
- それ以外の場合、以下の順序付けられたステップが適用される。
変数dpq0、dpq3、dp、dq、およびdが、以下のように導出される。
dpq0 = dp0 + dq0 (1336)
dpq3 = dp3 + dq3 (1337)
dp = dp0 + dp3 (1338)
dq = dq0 + dq3 (1339)
d = dpq0 + dpq3 (1340)
変数dE、dEp、dEq、sidePisLargeBlk、およびsideQisLargeBlkが、0に等しいように設定される。
dがβより小さく、maxFilterLengthPとmaxFilterLengthQとの両方が2より大きい場合、以下の順序付けられたステップが適用される。
変数dpqが、2 * dpq0に等しいように設定される。
変数spが、sp0に等しいように設定され、変数sqが、sq0に等しいように設定され、変数spqが、spq0に等しいように設定される。
サンプル位置( xCb + xBl, yCb + yBl )に関して、8.8.3.6.5項において規定されるルマサンプルのための判断プロセスが、すべて0に等しいように設定された変数p0、p3、q0、q3、変数dpq、sp、sq、spq、sidePisLargeBlk、sideQisLargeBlk、β、およびtCを入力として呼び出され、出力が、判断dSam0に割り当てられる。
変数dpqが、2 * dpq3に等しいように設定される。
変数spが、sp3に等しいように設定され、変数sqが、sq3に等しいように設定され、変数spqが、spq3に等しいように設定される。
サンプル位置( xCb + xBl, yCb + yBl + 3 )に関してedgeTypeがEDGE_VERに等しいか、またはサンプル位置( xCb + xBl + 3, yCb + yBl )に関してedgeTypeがEDGE_HORに等しいとき、8.8.3.6.5項において規定されるサンプルのための判断プロセスが、すべて0に等しいように設定された変数p0、p3、q0、q3、変数dpq、sp、sq、spq、sidePisLargeBlk、sideQisLargeBlk、β、およびtCを入力として呼び出され、出力が、判断dSam3に割り当てられる。
dがβより小さいとき、以下の順序付けられたステップが適用される。
変数dEが、1に等しいように設定される。
dSam0が1に等しく、dSam3が1に等しいとき、変数dEが、2に等しいように設定され、maxFilterLengthPとmaxFilterLengthQとの両方が、3に等しいように設定される。
maxFilterLengthPが1より大きく、maxFilterLengthQが1より大きく、dpが(β+ (β>> 1 ) ) >> 3より小さいとき、変数dEpが、1に等しいように設定される。
maxFilterLengthPが1より大きく、maxFilterLengthQが1より大きく、dqが(β+ (β>> 1 ) ) >> 3より小さいとき、変数dEqが、1に等しいように設定される。
dEが1に等しいとき、maxFilterLengthPが、1 + dEpに等しいように設定され、maxFilterLengthQが、1 + dEqに等しいように設定される。
このプロセスへの入力は、以下である。
- ピクチャサンプル配列recPicture
- 現在のピクチャの左上のサンプルを基準として現在のコーディングブロックの左上のサンプルを指定する位置( xCb, yCb )
- 現在のコーディングブロックの左上のサンプルを基準として現在のブロックの左上のサンプルを指定する位置( xBl, yBl )
- 垂直(EDGE_VER)エッジがフィルタリングされるのかまたは水平(EDGE_HOR)エッジがフィルタリングされるのかを指定する変数edgeType
- 判断を含む変数dE、dEp、およびdEq
- 最大フィルタ長を含む変数maxFilterLengthPおよびmaxFilterLengthQ
- 変数tC
- edgeTypeがEDGE_VERに等しい場合、以下の順序付けられたステップが適用される。
i = 0..maxFilterLengthP、j = 0..maxFilterLengthQ、およびk = 0..3であるサンプル値pi,kおよびqj,kが、以下のように導出される。
qj,k = recPicture[ xCb + xBl + j ][ yCb + yBl + k ] (1341)
pi,k = recPicture[ xCb + xBl - i - 1 ][ yCb + yBl + k ] (1342)
dEが0に等しくなく、dEが3に等しくないとき、各サンプル位置( xCb + xBl, yCb + yBl + k )、k = 0..3に関して、以下の順序付けられたステップが適用される。
8.8.3.6.6項において規定される短いフィルタを使用するルマサンプルのためのフィルタリングプロセスが、変数maxFilterLengthP、maxFilterLengthQ、i = 0..maxFilterLengthPおよびj = 0..maxFilterLengthQであるサンプル値pi,k、qj,k、判断dE、変数dEpおよびdEq、ならびに変数tCを入力とし、ブロックの境界の各側からのフィルタリングされたサンプルの数nDpおよびnDq、ならびにフィルタリングされたサンプル値pi'およびqj'を出力として呼び出される。
nDpが0より大きいとき、i = 0..nDp - 1であるフィルタリングされたサンプル値pi'が、以下のようにサンプル配列recPicture内の対応するサンプルを置き換える。
recPicture[ xCb + xBl - i - 1 ][ yCb + yBl + k ] = pi' (1343)
nDqが0より大きいとき、j = 0..nDq - 1であるフィルタリングされたサンプル値qj'が、以下のようにサンプル配列recPicture内の対応するサンプルを置き換える。
recPicture[ xCb + xBl + j ][ yCb + yBl + k ] = qj' (1344)
dEが3に等しいとき、各サンプル位置( xCb + xBl, yCb + yBl + k )、k = 0..3に関して、以下の順序付けられたステップが適用される。
8.8.3.6.7項において規定される長いフィルタを使用するルマサンプルのためのフィルタリングプロセスが、変数maxFilterLengthP、maxFilterLengthQ、i = 0..maxFilterLengthPおよびj = 0..maxFilterLengthQであるサンプル値pi,k、qj,k、およびtCを入力とし、フィルタリングされたサンプル値pi'およびqj'を出力として呼び出される。
i = 0..maxFilterLengthP - 1であるフィルタリングされたサンプル値pi'が、以下のようにサンプル配列recPicture内の対応するサンプルを置き換える。
recPicture[ xCb + xBl - i - 1 ][ yCb + yBl + k ] = pi' (1345)
j = 0..maxFilterLengthQ - 1であるフィルタリングされたサンプル値qj'が、以下のようにサンプル配列recPicture内の対応するサンプルを置き換える。
recPicture[ xCb + xBl + j ][ yCb + yBl + k ] = qj' (1346)
- それ以外の場合(edgeTypeがEDGE_HORに等しい場合)、以下の順序付けられたステップが適用される。
1. i = 0..maxFilterLengthP、j = 0..maxFilterLengthQ、およびk = 0..3であるサンプル値pi,kおよびqj,kが、以下のように導出される。
qj,k = recPicture[ xCb + xBl + k ][ yCb + yBl + j ] (1347)
pi,k = recPicture[ xCb + xBl + k ][ yCb + yBl - i - 1 ] (1348)
2. dEが0に等しくなく、dEが3に等しくないとき、各サンプル位置( xCb + xBl + k, yCb + yBl )、k = 0..3に関して、以下の順序付けられたステップが適用される。
8.8.3.6.6項において規定される短いフィルタを使用するルマサンプルのためのフィルタリングプロセスが、変数maxFilterLengthP、maxFilterLengthQ、i = 0..maxFilterLengthPおよびj = 0..maxFilterLengthQであるサンプル値pi,k、qi,k、判断dE、変数dEpおよびdEq、ならびに変数tCを入力とし、ブロックの境界の各側からのフィルタリングされたサンプルの数nDpおよびnDq、ならびにフィルタリングされたサンプル値pi'およびqj'を出力として呼び出される。
nDpが0より大きいとき、i = 0..nDp - 1であるフィルタリングされたサンプル値pi'が、以下のようにサンプル配列recPicture内の対応するサンプルを置き換える。
recPicture[ xCb + xBl + k ][ yCb + yBl - i - 1 ] = pi' (1349)
nDqが0より大きいとき、j = 0..nDq - 1であるフィルタリングされたサンプル値qj'が、以下のようにサンプル配列recPicture内の対応するサンプルを置き換える。
recPicture[ xCb + xBl + k ][ yCb + yBl + j ] = qj' (1350)
3. dEが3に等しいとき、各サンプル位置( xCb + xBl + k, yCb + yBl )、k = 0..3に関して、以下の順序付けられたステップが適用される。
8.8.3.6.7項において規定される長いフィルタを使用するルマサンプルのためのフィルタリングプロセスが、変数maxFilterLengthP、maxFilterLengthQ、i = 0..maxFilterLengthPおよびj = 0..maxFilterLengthQであるサンプル値pi,k、qj,k、ならびに変数tCを入力とし、フィルタリングされたサンプル値pi'およびqj'を出力として呼び出される。
i = 0..maxFilterLengthP - 1であるフィルタリングされたサンプル値pi'が、以下のようにサンプル配列recPicture内の対応するサンプルを置き換える。
recPicture[ xCb + xBl + k ][ yCb + yBl - i - 1 ] = pi' (1351)
j = 0..maxFilterLengthQ - 1であるフィルタリングされたサンプル値qj'が、以下のようにサンプル配列recPicture内の対応するサンプルを置き換える。
recPicture[ xCb + xBl + k ][ yCb + yBl + j ] = qj' (1352)
このプロセスは、ChromaArrayTypeが0に等しくないときにのみ呼び出される。
- クロマピクチャサンプル配列recPicture
- 現在のピクチャの左上のクロマサンプルを基準として現在のクロマコーディングブロックの左上のサンプルを指定するクロマ位置( xCb, yCb )
- 現在のクロマコーディングブロックの左上のサンプルを基準として現在のクロマブロックの左上のサンプルを指定するクロマ位置( xBl, yBl )
- 垂直(EDGE_VER)エッジがフィルタリングされるのかまたは水平(EDGE_HOR)エッジがフィルタリングされるのかを指定する変数edgeType
- 色成分インデックスを指定する変数cIdx
- 境界フィルタリング強度を指定する変数bS
- 最大フィルタ長を指定する変数maxFilterLengthP
- 最大フィルタ長を指定する変数maxFilterLengthQ
- 修正されたフィルタ長変数maxFilterLengthPおよびmaxFilterLengthQ
- 変数tC
- edgeTypeがEDGE_VERに等しい場合、以下が適用される。
maxK = ( SubHeightC == 1 ) ? 3 : 1 (1353)
- それ以外の場合(edgeTypeがEDGE_HORに等しい場合)、以下が適用される。
maxK = ( SubWidthC == 1 ) ? 3 : 1 (1354)
- edgeTypeがEDGE_VERに等しい場合、以下が適用される。
qj,k = recPicture[ xCb + xBl + j ][ yCb + yBl + k ] (1355)
pi,k = recPicture[ xCb + xBl - i - 1 ][ yCb + yBl + k ] (1356)
subSampleC = SubHeightC (1357)
- それ以外の場合(edgeTypeがEDGE_HORに等しい場合)、以下が適用される。
qj,k = recPicture[ xCb + xBl + k ][ yCb + yBl + j ] (1358)
pi,k = recPicture[ xCb + xBl + k ][ yCb + yBl - i - 1 ] (1359)
subSampleC = SubWidthC (1360)
- ルマ位置( xTbP, yTbP )が、ピクチャの左上のルマサンプルを基準とする、サンプルp0,0を含む変換ブロックの左上ルマサンプル位置として設定される。
- TuCResMode[ xTbP ][ yTbP ]が2に等しい場合、QpPは、サンプルp0,0を含む変換ブロックのQp'CbCrに等しいように設定される。
- そうではなく、cIdxが1に等しい場合、QpPは、サンプルp0,0を含む変換ブロックのQp'Cbに等しいように設定される。
- それ以外の場合、QpPは、サンプルp0,0を含む変換ブロックのQp'Crに等しいように設定される。
- ルマ位置( xTbQ, yTbQ )が、ピクチャの左上のルマサンプルを基準とする、サンプルq0,0を含む変換ブロックの左上ルマサンプル位置として設定される。
- TuCResMode[ xTbQ ][ yTbQ ]が2に等しい場合、QpQは、サンプルq0,0を含む変換ブロックのQp'CbCrに等しいように設定される。
- そうではなく、cIdxが1に等しい場合、QpQは、サンプルq0,0を含む変換ブロックのQp'Cbに等しいように設定される。
- それ以外の場合、QpQは、サンプルq0,0を含む変換ブロックのQp'Crに等しいように設定される。
QpC = ( QpQ - QpBdOffset + QpP - QpBdOffset + 1 ) >> 1 (1361)
sliceBetaOffsetDiv2 = ( cIdx == 1 ? slice_cb_beta_offset_div2 : slice_cr_beta_offset_div2 )
Q = Clip3( 0, 63, QpC + ( sliceBetaOffsetDiv2 << 1 ) ) (1362)
式中、slice_cb_beta_offset_div2およびslice_cr_beta_offset_div2は、それぞれ、サンプルq0,0を含むスライスに関するシンタックス要素slice_cb_beta_offset_div2およびslice_cr_beta_offset_div2の値である。
β=β' * ( 1 << ( BitDepth - 8 ) ) (1363)
sliceTcOffsetDiv2 = ( cIdx == 1 ? slice_cb_tc_offset_div2 : slice_cr_beta_offset_div2 )
Q = Clip3( 0, 65, QpC + 2 * ( bS - 1 ) + ( sliceTcOffsetDiv2 << 1 ) ) (1364)
式中、slice_cb_tc_offset_div2およびslice_cr_beta_offset_div2は、それぞれ、サンプルq0,0を含むスライスに関するシンタックス要素slice_cb_tc_offset_div2およびslice_cr_beta_offset_div2の値である。
tC = ( BitDepth < 10 ) ? ( tC' + 2 ) >> ( 10 - BitDepth ) : tC' * ( 1 << ( BitDepth - 10 ) ) (1365)
1. 変数n1が、以下のように導出される。
n1 = subSampleC == 2 ? 1 : 3 (1366)
2. maxFilterLengthPが1に等しいとき、サンプルp3,0およびp2,0は、両方ともp1,0に等しいように設定され、サンプルp3,n1、p2,n1は、両方ともp1,n1に等しいように設定される。
3. 変数dpq0、dpq1、dp、dq、およびdが、以下のように導出される。
dp0 = Abs( p2,0 - 2 * p1,0 + p0,0 ) (1367)
dp1 = Abs( p2,n1 - 2 * p1,n1 + p0,n1 ) (1368)
dq0 = Abs( q2,0 - 2 * q1,0 + q0,0 ) (1369)
dq1 = Abs( q2,n1 - 2 * q1,n1 + q0,n1 ) (1370)
dpq0 = dp0 + dq0 (1371)
dpq1 = dp1 + dq1 (1372)
dp = dp0 + dp1 (1373)
dq = dq0 + dq1 (1374)
d = dpq0 + dpq1 (1375)
4. 変数dSam0およびdSam1は、両方とも0に等しいように設定される。
5. dがβより小さいとき、以下の順序付けられたステップが適用される。
a. 変数dpqが、2 * dpq0に等しいように設定される。
b. 変数dSam0が、サンプル値p0,0、p3,0、q0,0、およびq3,0、変数dpq、β、およびtCを入力として、サンプル位置( xCb + xBl, yCb + yBl )に関して、8.8.3.6.8項において規定されるクロマサンプルのための判断プロセスを呼び出すことによって導出され、出力が、判断dSam0に割り当てられる。
c. 変数dpqが、2 * dpq1に等しいように設定される。
d. 変数dSam1が、以下のように修正される。
- edgeTypeがEDGE_VERに等しい場合、サンプル位置( xCb + xBl, yCb + yBl + n1 )に関して、8.8.3.6.8項において規定されるクロマサンプルのための判断プロセスが、サンプル値p0,n1、p3,n1、q0,n1、およびq3,n1、変数dpq、β、およびtCを入力として呼び出され、出力が、判断dSam1に割り当てられる。
- それ以外の場合(edgeTypeがEDGE_HORに等しい場合)、サンプル位置( xCb + xBl + n1, yCb + yBl )に関して、8.8.3.6.8項において規定されるクロマサンプルのための判断プロセスが、サンプル値p0,n1、p3,n1、q0,n1、およびq3,n1、変数dpq、β、およびtCを入力として呼び出され、出力が、判断dSam1に割り当てられる。
6. dSam0が0に等しいか、またはdSam1が0に等しいとき、maxFilterLengthPおよびmaxFilterLengthQは、両方とも1に等しいように設定される。
このプロセスは、ChromaArrayTypeが0に等しくないときにのみ呼び出される。
- クロマピクチャサンプル配列recPicture
- 現在のピクチャの左上のクロマサンプルを基準として現在のクロマコーディングブロックの左上のサンプルを指定するクロマ位置( xCb, yCb )
- 現在のクロマコーディングブロックの左上のサンプルを基準として現在のクロマブロックの左上のサンプルを指定するクロマ位置( xBl, yBl )
- 垂直(EDGE_VER)エッジがフィルタリングされるのかまたは水平(EDGE_HOR)エッジがフィルタリングされるのかを指定する変数edgeType
- 最大フィルタ長を指定する変数maxFilterLengthP
- 最大フィルタ長を指定する変数maxFilterLengthQ
- 変数tC
- edgeTypeがEDGE_VERに等しい場合、以下が適用される。
maxK = ( SubHeightC == 1 ) ? 3 : 1 (1376)
- それ以外の場合(edgeTypeがEDGE_HORに等しい場合)、以下が適用される。
maxK = ( SubWidthC == 1 ) ? 3 : 1 (1377)
- edgeTypeがEDGE_VERに等しい場合、以下が適用される。
qj,k = recPicture[ xCb + xBl + j ][ yCb + yBl + k ] (1378)
pi,k = recPicture[ xCb + xBl - i - 1 ][ yCb + yBl + k ] (1379)
- それ以外の場合(edgeTypeがEDGE_HORに等しい場合)、以下が適用される。
qj,k = recPicture[ xCb + xBl + k ][ yCb + yBl + j ] (1380)
pi,k = recPicture[ xCb + xBl + k ][ yCb + yBl - i - 1 ] (1381)
- edgeTypeがEDGE_VERに等しいとき、各サンプル位置( xCb + xBl, yCb + yBl + k )、k = 0..maxKに関して、以下の順序付けられたステップが適用される。
1. 8.8.3.6.9項において規定されるクロマサンプルのためのフィルタリングプロセスが、変数maxFilterLengthPおよびmaxFilterLengthQ、i = 0..maxFilterLengthPおよびj = 0..maxFilterLengthQであるサンプル値pi,k、qj,k、ならびに変数tCを入力とし、i = 0..maxFilterLengthP - 1およびj = 0..maxFilterLengthQ - 1であるフィルタリングされたサンプル値pi'およびqj'を出力として呼び出される。
2. i = 0..maxFilterLengthP - 1およびj = 0..maxFilterLengthQ - 1であるフィルタリングされたサンプル値pi'およびqj'が、以下のようにサンプル配列recPicture内の対応するサンプルを置き換える。
recPicture[ xCb + xBl + j ][ yCb + yBl + k ] = qj' (1382)
recPicture[ xCb + xBl - i - 1 ][ yCb + yBl + k ] = pi' (1383)
- それ以外の場合(edgeTypeがEDGE_HORに等しい場合)、各サンプル位置( xCb + xBl + k, yCb + yBl )、k = 0..maxKに関して、以下の順序付けられたステップが適用される。
1. 8.8.3.6.9項において規定されるクロマサンプルのためのフィルタリングプロセスが、変数maxFilterLengthPおよびmaxFilterLengthQ、i = 0..maxFilterLengthPおよびj = 0..maxFilterLengthQであるサンプル値pi,k、qj,k、ならびに変数tCを入力とし、i = 0..maxFilterLengthP - 1およびj = 0..maxFilterLengthQ - 1であるフィルタリングされたサンプル値pi'およびqj'を出力として呼び出される。
2. i = 0..maxFilterLengthP - 1およびj = 0..maxFilterLengthQ - 1であるフィルタリングされたサンプル値pi'およびqj'が、以下のようにサンプル配列recPicture内の対応するサンプルを置き換える。
recPicture[ xCb + xBl + k ][ yCb + yBl + j ] = qj' (1384)
recPicture[ xCb + xBl + k ][ yCb + yBl - i - 1 ] = pi' (1385)
このプロセスへの入力は、以下である。
- サンプル値p0、p3、q0、およびq3
- 変数dpq、sp、sq、spq、sidePisLargeBlk、sideQisLargeBlk、β、およびtC
- sidePisLargeBlkが1に等しいとき、以下が適用される。
sp = ( sp + Abs( p3 - p0 ) + 1 ) >> 1 (1386)
- sideQisLargeBlkが1に等しいとき、以下が適用される。
sq = ( sq + Abs( q3 - q0 ) + 1 ) >> 1 (1387)
- sidePisLargeBlkが1に等しいか、またはsideQisLargeBlkが1に等しい場合、以下が適用される。
sThr1 = 3 *β>> 5 (1388)
sThr2 =β>> 4 (1389)
- それ以外の場合、以下が適用される。
sThr1 =β>> 3 (1390)
sThr2 =β>> 2 (1391)
- 以下の条件のすべてが真である場合、dSamは、1に等しいように設定される。
- dpqが、sThr2より小さい
- sp + sqが、sThr1よりも小さい
- spqが、( 5 * tC + 1 ) >> 1より小さい
- それ以外の場合、dSamは、0に等しいように設定される。
このプロセスへの入力は、以下である。
- 変数maxFilterLengthPおよびmaxFilterLengthQ
- i = 0..maxFilterLengthPおよびj = 0..maxFilterLengthQであるサンプル値piおよびqj
- 変数dE
- それぞれ、サンプルp1およびq1をフィルタリングするための判断を含む変数dEpおよびdEq
- 変数tC
- フィルタリングされたサンプルの数nDpおよびnDq
- i = 0..nDp - 1、j = 0..nDq - 1であるフィルタリングされたサンプル値pi'およびqj'
- 変数dEが2に等しい場合、nDpおよびnDqが、両方とも3に等しいように設定され、以下の強いフィルタリングが適用される。
p0' = Clip3( p0 - 3 * tC, p0 + 3 * tC, ( p2 + 2 * p1 + 2 * p0 + 2 * q0 + q1 + 4 ) >> 3 ) (1392)
p1' = Clip3( p1 - 2 * tC, p1 + 2 * tC, ( p2 + p1 + p0 + q0 + 2 ) >> 2 ) (1993)
p2' = Clip3( p2 - 1 * tC, p2 + 1 * tC, ( 2 * p3 + 3 * p2 + p1 + p0 + q0 + 4 ) >> 3 ) (1394)
q0' = Clip3( q0 - 3 * tC, q0 + 3 * tC, ( p1 + 2 * p0 + 2 * q0 + 2 * q1 + q2 + 4 ) >> 3 ) (1395)
q1' = Clip3( q1 - 2 * tC, q1 + 2 * tC, ( p0 + q0 + q1 + q2 + 2 ) >> 2 ) (1396)
q2' = Clip3( q2 - 1 * tC, q2 + 1 * tC, ( p0 + q0 + q1 + 3 * q2 + 2 * q3 + 4 ) >> 3 ) (1397)
- それ以外の場合、nDpおよびnDqは、両方とも0に等しいように設定され、以下の弱いフィルタリングが適用される。
- 以下が、適用される。
Δ= ( 9 * ( q0 - p0 ) - 3 * ( q1 - p1 ) + 8 ) >> 4 (1398)
- Abs(Δ)がtC * 10より小さいとき、以下の順序付けられたステップが適用される。
- フィルタリングされたサンプル値p0'およびq0'が、以下のように指定される。
Δ= Clip3( -tC, tC,Δ) (1399)
p0' = Clip1( p0 +Δ) (1400)
q0' = Clip1( q0 -Δ) (1401)
- dEpが1に等しいとき、フィルタリングされたサンプル値p1'が、以下のように指定される。
Δp = Clip3( -( tC >> 1 ), tC >> 1, ( ( ( p2 + p0 + 1 ) >> 1 ) - p1 +Δ) >> 1 ) (1402)
p1' = Clip1( p1 +Δp ) (1403)
- dEqが1に等しいとき、フィルタリングされたサンプル値q1'が、以下のように指定される。
Δq = Clip3( -( tC >> 1 ), tC >> 1, ( ( ( q2 + q0 + 1 ) >> 1 ) - q1 -Δ) >> 1 ) (1404)
q1' = Clip1( q1 +Δq ) (1405)
- nDpが、dEp + 1に等しいように設定され、nDqが、dEq + 1に等しいように設定される。
このプロセスへの入力は、以下である。
- 変数maxFilterLengthPおよびmaxFilterLengthQ
- i = 0..maxFilterLengthPおよびj = 0..maxFilterLengthQであるサンプル値piおよびqj
- 変数tC
- i = 0..maxFilterLengthP - 1、j = 0..maxFilterLenghtQ - 1であるフィルタリングされたサンプル値pi'およびqj'
- maxFilterLengthPがmaxFilterLengthQに等しく、maxFilterLengthPが5に等しい場合、以下が適用される。
refMiddle = ( p4 + p3 + 2 * ( p2 + p1 + p0 + q0 + q1 + q2 ) + q3 + q4 + 8 ) >> 4 (1406)
- そうではなく、maxFilterLengthPがmaxFilterLengthQに等しく、maxFilterLengthPが5に等しくない場合、以下が適用される。
refMiddle = ( p6 + p5 + p4 + p3 + p2 + p1 + 2 * ( p0 + q0 ) + q1 + q2 + q3 + q4 + q5 + q6 + 8 ) >> 4 (1407)
- そうではなく、以下の条件のうちの1つが真である場合、
- maxFilterLengthQが7に等しく、maxFilterLengthPが5に等しい。
- maxFilterLengthQが5に等しく、maxFilterLengthPが7に等しい。
以下が、適用される。
refMiddle = ( p5 + p4 + p3 + p2 + 2 * ( p1 + p0 + q0 + q1 ) + q2 + q3 + q4 + q5 + 8 ) >> 4 (1408)
- そうではなく、以下の条件のうちの1つが真である場合、
- maxFilterLengthQが5に等しく、maxFilterLengthPが3に等しい。
- maxFilterLengthQが3に等しく、maxFilterLengthPが5に等しい。
以下が、適用される。
refMiddle = ( p3 + p2 + p1 + p0 + q0 + q1 + q2 + q3 + 4) >> 3 (1409)
- そうではなく、maxFilterLengthQが7に等しく、maxFilterLengthPが3に等しい場合、以下が適用される。
refMiddle = ( 2 * ( p2 + p1 + p0 + q0 ) + p0 + p1 + q1 + q2 + q3 + q4 + q5 + q6 + 8 ) >> 4 (1410)
- それ以外の場合、以下が適用される。
refMiddle = ( p6 + p5 + p4 + p3 + p2 + p1 + 2 *( q2 + q1 + q0 + p0) + q0 + q1 + 8 ) >> 4 (1411)
refP = (pmaxFilterLengtP + pmaxFilterLengthP-1 + 1 ) >> 1 (1412)
refQ = ( qmaxFilterLengtQ + qmaxFilterLengthQ-1 + 1 ) >> 1 (1413)
- maxFilterLengthPが7に等しい場合、以下が適用される。
f0..6 = { 59, 50, 41, 32, 23, 14, 5 } (1414)
tCPD0..6 = { 6, 5, 4, 3, 2, 1, 1 } (1415)
- そうではなく、maxFilterLengthPが5に等しい場合、以下が適用される。
f0..4 = { 58, 45, 32, 19, 6 } (1416)
tCPD0..4 = { 6, 5, 4, 3, 2 } (1417)
- それ以外の場合、以下が適用される。
f0..2 = { 53, 32, 11 } (1418)
tCPD0..2 = { 6, 4, 2 } (1419)
- maxFilterLengthQが7に等しい場合、以下が適用される。
g0..6 = { 59, 50, 41, 32, 23, 14, 5 } (1420)
tCQD0..6 = { 6, 5, 4, 3, 2, 1, 1 } (1421)
- そうではなく、maxFilterLengthQが5に等しい場合、以下が適用される。
g0..4 = { 58, 45, 32, 19, 6 } (1422)
tCQD0..4 = { 6, 5, 4, 3, 2 } (1423)
- それ以外の場合、以下が適用される。
g0..2 = { 53, 32, 11 } (1424)
tCQD0..2 = { 6, 4, 2 } (1425)
pi' = Clip3( pi - ( tC*tCPDi ) >> 1, pi + ( tC*tCPDi ) >> 1, ( refMiddle*fi + refP*( 64 - fi ) + 32) >> 6 ) (1426)
qj' = Clip3( qj - ( tC*tCQDj ) >> 1, qj + ( tC*tCQDj ) >> 1, ( refMiddle*gj + refQ*( 64 - gj ) + 32) >> 6 ) (1427)
このプロセスへの入力は、以下である。
- サンプル値p0、p3、q0、およびq3
- 変数dpq、β、およびtC
- 以下の条件のすべてが真である場合、dSamは、1に等しいように設定される。
- dpqが(β>> 2 )未満である。
- Abs( p3 - p0 ) + Abs( q0 - q3 )が(β>> 3 )未満である。
- Abs( p0 - q0 )が( 5 * tC + 1 ) >> 1未満である。
- それ以外の場合、dSamは、0に等しいように設定される。
このプロセスは、ChromaArrayTypeが0に等しくないときにのみ呼び出される。
- 変数maxFilterLengthPおよびmaxFilterLengthQ
- i = 0..maxFilterLengthP - 1およびj = 0..maxFilterLengthQ - 1であるクロマサンプル値piおよびqj
- 変数tC
- maxFilterLengthPとmaxFilterLengthQとの両方が3に等しい場合、以下の強いフィルタリングが適用される。
p0' = Clip3( p0 - tC, p0 + tC, ( p3 + p2 + p1 + 2 * p0 + q0 + q1 + q2 + 4 ) >> 3 ) (1428)
p1' = Clip3( p1 - tC, p1 + tC, ( 2 * p3 + p2 + 2 * p1 + p0 + q0 + q1 + 4 ) >> 3 ) (1429)
p2' = Clip3( p2 - tC, p2 + tC, ( 3 * p3 + 2 * p2 + p1 + p0 + q0 + 4 ) >> 3 ) (1430)
q0' = Clip3( q0 - tC, q0 + tC, ( p2 + p1 + p0 + 2 * q0 + q1 + q2 + q3 + 4 ) >> 3 ) (1431)
q1' = Clip3( q1 - tC, q1 + tC, ( p1 + p0 + q0 + 2 * q1 + q2 + 2 * q3 + 4 ) >> 3 ) (1432)
q2' = Clip3( q2 - tC, q2 + tC, ( p0 + q0 + q1 + 2 * q2 + 3 * q3 + 4 ) >> 3 ) (1433)
- そうではなく、変数maxFilterLengthPが1に等しく、maxFilterLengthQが3に等しい場合、以下のフィルタリングが適用される。
p0' = Clip3( p0 - tC, p0 + tC, ( 3 * p1 + 2 * p0 + q0 + q1 + q2 + 4 ) >> 3 ) (1434)
q0' = Clip3( q0 - tC, q0 + tC, ( 2 * p1 + p0 + 2 * q0 + q1 + q2 + q3 + 4 ) >> 3 ) (1435)
q1' = Clip3( q1 - tC, q1 + tC, ( p1 + p0 + q0 + 2 * q1 + q2 + 2 * q3 + 4 ) >> 3 ) (1436)
q2' = Clip3( q2 - tC, q2 + tC, ( p0 + q0 + q1 + 2 * q2 + 3 * q3 + 4 ) >> 3 ) (1437)
- それ以外の場合、以下の弱いフィルタリングが適用される。
Δ= Clip3( -tC, tC, ( ( ( ( q0 - p0 ) << 2 ) + p1 - q1 + 4 ) >> 3 ) ) (1438)
p0' = Clip1( p0 +Δ) (1439)
q0' = Clip1( q0 -Δ) (1440)
この実施形態において、CbおよびCrのデブロッキングのベータおよびTcオフセット(簡単にするために、本出願において、我々は、さらに、それらのオフセットをデブロッキング制御パラメータと呼ぶ)は、ChromaArrayTypeの値が0に等しくないときに(のみ)シグナリングされる。
この実施形態においては、新しいシンタックス要素が、シグナリングされる。このシンタックスは、ルマおよびクロマのデブロッキング制御パラメータが同じであるか否かを示すために導入される。ルマおよびクロマのデブロッキング制御パラメータの値が異なるとき、CbおよびCrのデブロッキング制御パラメータが、さらにシグナリングされる。この実施形態では、デブロッキングパラメータがルマ成分とクロマ成分とにまたがって同じであるときの冗長なシグナリングを取り除く。
この実施形態においては、合同cb-crコーディングされたブロック(joint cb-cr coded block)のために、別個のβおよびtcオフセットパラメータが導入される。
sliceBetaOffsetDiv2 = ((TuCResMode[ xTbQ ][ yTbQ ] == 2) || (TuCResMode[ xTbp ][ yTbp ] == 2) ? slice_cbcr_beta_offset_div2 : (cIdx == 1 ? slice_cb_beta_offset_div2 : slice_cr_beta_offset_div2 ))
Q = Clip3( 0, 63, QpC + ( sliceBetaOffsetDiv2 << 1 ) ) (1355)
式中、slice_cb_beta_offset_div2、slice_cr_beta_offset_div2、およびslice_cbcr_beta_offset_div2は、それぞれ、サンプルq0,0を含むスライスに関するシンタックス要素slice_cb_beta_offset_div2、slice_cr_beta_offset_div2、およびslice_cbcr_beta_offset_div2の値である。
sliceTcOffsetDiv2 = ((TuCResMode[ xTbQ ][ yTbQ ] || TuCResMode[ xTbp ][ yTbp ] == 2) ? slice_cbcr_tc_offset_div2 : (cIdx == 1 ? slice_cb_tc_offset_div2 : slice_cr_tc_offset_div2 ))
Q = Clip3( 0, 65, QpC + 2 * ( bS - 1 ) + ( sliceTcOffsetDiv2 << 1 ) ) (1357)
式中、slice_cb_tc_offset_div2、slice_cr_beta_offset_div2、およびslice_cr_tc_offset_div2は、それぞれ、サンプルq0,0を含むスライスに関するシンタックス要素slice_cb_tc_offset_div2、slice_cr_tc_offset_div2、およびslice_cbcr_tc_offset_div2の値である。
- ルマ(Y)のみ(モノクロ)
- ルマおよび2つのクロマ(YCbCrまたはYCgCo)
- 緑、青、および赤(GBR、RGBとも呼ばれる)
- その他の不特定のモノクロまたは3刺激色サンプリング(たとえば、YZX、XYZとも呼ばれる)を表す配列
ビットストリームを取得するように構成される受信モジュール901を含み、
解析モジュール902が、ビットストリームからシンタックス要素の値を取得するように構成され、シンタックス要素の値が、コーディングされたピクチャのスライスのクロマ成分のためのデブロッキング制御パラメータに関連し(たとえば、シンタックス要素の値は、クロマツールオフセットに関連するシンタックス要素がピクチャパラメータセットPPS生バイトシーケンスペイロードRBSP構造内に存在するか否かを示す)、解析モジュール902は、シンタックス要素の値が予め設定された値に等しいとき、ビットストリームからスライスのクロマ成分のためのデブロッキング制御パラメータの値を取得するように構成され、予め設定された値は、整数値である。
- ルマ(Y)のみ(モノクロ)
- ルマおよび2つのクロマ(YCbCrまたはYCgCo)
- 緑、青、および赤(GBR、RGBとも呼ばれる)
- その他の不特定のモノクロまたは3刺激色サンプリング(たとえば、YZX、XYZとも呼ばれる)を表す配列
コーディングブロックに関するビットストリームを取得するステップと、
ビットストリームからシンタックスの値を取得するステップと、
シンタックスの値が予め設定された値に等しいとき(例において、予め設定された値は0に等しくない)、ビットストリームからデブロッキング制御パラメータの値を取得するステップとを含む、方法。
プロセッサに結合され、プロセッサによる実行のためにプログラミングを記憶する非一時的コンピュータ可読ストレージ媒体であって、プログラミングが、プロセッサによって実行されるときに、実施例1から15のいずれか1つによる方法を実行するようにデコーダを構成する、非一時的コンピュータ可読ストレージ媒体とを含むデコーダ。
本出願において使用される数学演算子は、Cプログラミング言語において使用される数学演算子に似ている。しかし、整数の除算および算術シフト演算の結果は、より厳密に定義され、累乗および実数値の除算などの追加の演算が、定義される。付番およびカウントの規則は、概して0から始まり、たとえば、「第1」は、0番と等価であり、「第2」は、1番と等価であり、以下同様である。
以下の算術演算子が、以下の通り定義される。
+ 加算
- 減算(2引数の演算子として)または否定(単項前置演算子として)
* 行列の乗算を含む乗算
xy 累乗。xのy乗を規定する。その他の文脈で、そのような表記は、累乗として解釈されるように意図されない上付きの書き込みのために使用される。
/ 結果のゼロへの切り捨てを行う整数の除算。たとえば、7 / 4および-7 / -4は、1に切り捨てられ、-7 / 4および7 / -4は、-1に切り捨てられる。
÷ 切り捨てまたは丸めが意図されない数学的方程式の除算を表すために使用される。
x % y 法。x >= 0およびy > 0である整数xおよびyに関してのみ定義されるx割るyの余り。
以下の論理演算子が、以下の通り定義される。
x && y xおよびyのブール論理「積」
x || y xおよびyのブール論理「和」
! ブール論理「否定」
x ? y : z xが真であるかまたは0に等しくない場合、値yと評価され、そうでない場合、値zと評価される。
以下の関係演算子が、以下の通り定義される。
> より大きい
>= 以上
< 未満
<= 以下
== 等しい
!= 等しくない
以下のビット演算子が、以下の通り定義される。
& ビット毎の「論理積」。整数引数に対する演算のとき、整数値の2の補数表現に対して作用する。別の引数よりも少ないビットを含む2進数引数に対する演算のとき、より短い引数が、0に等しいさらに上位桁のビットを追加することによって拡張される。
ビット毎の「論理和」。整数引数に対する演算のとき、整数値の2の補数表現に対して作用する。別の引数よりも少ないビットを含む2進数引数に対する演算のとき、より短い引数が、0に等しいさらに上位桁のビットを追加することによって拡張される。
^ ビット毎の「排他的論理和」。整数引数に対する演算のとき、整数値の2の補数表現に対して作用する。別の引数よりも少ないビットを含む2進数引数に対する演算のとき、より短い引数が、0に等しいさらに上位桁のビットを追加することによって拡張される。
x>>y xの2の補数による整数の表現の、2進数のy桁分の算術右シフト。この関数は、yの非負の整数値に対してのみ定義される。右シフトの結果として最上位ビット(MSB)にシフトされるビットは、シフト演算の前のxのMSBに等しい値を有する。
x<<y xの2の補数による整数の表現の、2進数のy桁分の算術左シフト。この関数は、yの非負の整数値に対してのみ定義される。左シフトの結果として最下位ビット(LSB)にシフトされるビットは、0に等しい値を有する。
以下の算術演算子が、以下の通り定義される。
= 代入演算子
++ インクリメント、つまり、x++は、x = x + 1と等価であり、配列のインデックスに使用されるとき、インクリメント演算の前に変数の値と評価される。
-- デクリメント、つまり、x--は、x = x - 1と等価であり、配列のインデックスに使用されるとき、デクリメント演算の前に変数の値と評価される。
+= 指定された量のインクリメント、つまり、x += 3は、x = x + 3と等価であり、x += (-3)は、x = x + (-3)と等価である。
-= 指定された量のデクリメント、つまり、x -= 3は、x = x - 3と等価であり、x -= (-3)は、x = x - (-3)と等価である。
以下の表記が、値の範囲を指定するために使用される。
x = y..z xは、x、y、およびzが整数値であり、zがyよりも大きいものとして、yおよびzを含んでyからzまでの整数値を取る。
以下の数学関数が、定義される。
Atan( x ) 引数xに作用し、ラジアンを単位として-π÷2およびπ÷2を含んで-π÷2からπ÷2までの範囲の出力値を有する三角法の逆正接関数
Clip1Y( x ) = Clip3( 0, ( 1 << BitDepthY ) - 1, x )
Clip1C( x ) = Clip3( 0, ( 1 << BitDepthC ) - 1, x )
Floor(x) x以下の最大の整数。
Log2( x ) xの2を底とする対数。
Log10( x ) xの10を底とする対数。
Tan( x ) ラジアンを単位とする引数xに作用する三角法の正接関数
式中の優先順位が括弧を使用して明示されないとき、以下の規則が、適用される。
より高い優先度の演算は、より低い優先度のいかなる演算よりも前に評価される。
同じ優先度の演算は、左から右に順に評価される。
本文中、以下の形態で、すなわち、
if( 条件0 )
ステートメント0
else if( 条件1 )
ステートメント1
else /* 残りの条件に関する情報を伝えるコメント */
ステートメントn
の形態で数学的に記述される論理演算のステートメントは、以下のように記述される可能性がある。
以下のように / ...以下が適用される。
- 条件0の場合、ステートメント0
- そうではなく、条件1の場合、ステートメント1
- ...
- それ以外の場合(残りの条件に関する情報を伝えるコメント)、ステートメントn
if( 条件0a && 条件0b )
ステートメント0
else if( 条件1a || 条件1b )
ステートメント1
...
else
ステートメントn
の形態で数学的に記述される論理演算のステートメントは、以下のようにして記述される可能性がある。
以下のように.../...以下が適用される。
- 以下の条件のすべてが真である場合、ステートメント0
- 条件0a
- 条件0b
- そうではなく、以下の条件のうちの1つまたは複数が真である場合、ステートメント1
- 条件1a
- 条件1b
- ...
- それ以外の場合、ステートメントn
if( 条件0 )
ステートメント0
if( 条件1 )
ステートメント1
の形態で数学的に記述される論理演算のステートメントは、以下のように記述される可能性がある。
条件0のとき、ステートメント0
条件1のとき、ステートメント1
12 送信元デバイス
13 通信チャネル
14 送信先デバイス
16 ピクチャソース
17 ピクチャ、ピクチャデータ、生ピクチャ、生ピクチャデータ、モノクロピクチャ、カラーピクチャ、現在のピクチャ
18 プリプロセッサ、前処理ユニット、ピクチャプリプロセッサ
19 前処理されたピクチャ、前処理されたピクチャデータ
20 ビデオエンコーダ、エンコーダ
21 符号化されたピクチャデータ、符号化されたビットストリーム
22 通信インターフェース、通信ユニット
28 通信インターフェース、通信ユニット
30 デコーダ、ビデオデコーダ
31 復号されたピクチャデータ、復号されたピクチャ
32 ポストプロセッサ、後処理ユニット
33 後処理されたピクチャデータ、後処理されたピクチャ
34 ディスプレイデバイス
46 処理回路
100 ビデオエンコーダ
201 入力、入力インターフェース
203 ピクチャブロック、元のブロック、現在のブロック、現在のピクチャブロック、CTU
204 残差計算ユニット、残差計算
205 残差ブロック、残差
206 変換処理ユニット、変換
207 変換係数
208 量子化ユニット、量子化
209 量子化された係数、量子化された変換係数、量子化された残差係数
210 逆量子化ユニット、逆量子化
211 量子化解除された係数、量子化解除された残差係数
212 逆変換処理ユニット、(逆)変換
213 再構築された残差ブロック
214 再構築ユニット、加算器、合算器
215 再構築されたブロック
216 バッファ
220 ループフィルタユニット、ループフィルタ、ループフィルタリング
221 フィルタリングされたブロック、フィルタリングされた再構築されたブロック
230 復号ピクチャバッファ(DPB)
231 復号されたピクチャ
244 インター予測ユニット(エンコーダ)
254 イントラ予測ユニット、インター予測ユニット、イントラ予測
260 モード選択ユニット
262 区分けユニット、区分け
265 予測ブロック、予測子
266 シンタックス要素
270 エントロピー符号化ユニット
272 出力、出力インターフェース
304 エントロピー復号ユニット、残差計算
309 量子化された係数
310 逆量子化ユニット、逆量子化
311 量子化解除された係数、変換係数
312 逆変換処理ユニット、(逆)変換、出力
313 再構築された残差ブロック
314 再構築ユニット、合算器、加算器
315 再構築されたブロック
320 ループフィルタ、ループフィルタユニット、ループフィルタリングユニット、ループフィルタリング
321 フィルタリングされたブロック、復号されたビデオブロック
330 復号ピクチャバッファ(DPB)
331 復号されたピクチャ
344 インター予測ユニット(デコーダ)
354 イントラ予測ユニット、イントラ予測
360 モード適用ユニット
362 区分け
365 予測ブロック
400 ビデオコーディングデバイス
410 着信ポート、入力ポート
420 受信機ユニット(Rx)
430 プロセッサ、論理ユニット、中央演算処理装置(CPU)
440 送信機ユニット(Tx)
450 発信ポート、出力ポート
460 メモリ
470 コーディングモジュール
500 装置
502 プロセッサ
504 メモリ
506 データ
508 オペレーティングシステム
510 アプリケーションプログラム
512 バス
514 二次ストレージ
518 ディスプレイ
900 ビデオ復号装置
901 受信モジュール
902 解析モジュール
3100 コンテンツ供給システム
3102 キャプチャデバイス
3104 通信リンク
3106 端末デバイス
3108 スマートフォン、スマートパッド
3110 コンピュータ、ラップトップ
3112 ネットワークビデオレコーダ(NVR)/デジタルビデオレコーダ(DVR)
3114 TV
3116 セットトップボックス(STB)
3118 テレビ会議システム
3120 ビデオ監視システム
3122 携帯情報端末(PDA)
3124 車載デバイス
3126 ディスプレイ
3202 プロトコル進行ユニット
3204 多重分離ユニット
3206 ビデオデコーダ
3208 オーディオデコーダ
3210 字幕デコーダ
3212 同期ユニット
3214 ビデオ/オーディオディスプレイ
3216 ビデオ/オーディオ/字幕ディスプレイ
Claims (14)
- 復号デバイスによって実施されるコーディングの方法であって、
ビットストリームからシンタックス要素の値を取得するステップであって、前記シンタックス要素の前記値が、コーディングされたピクチャのスライスのクロマ成分のためのデブロッキング制御パラメータに関連する、ステップと、
前記シンタックス要素の前記値が予め設定された値に等しいとき、前記ビットストリームから前記スライスの前記クロマ成分のための前記デブロッキング制御パラメータの値を解析するステップであって、前記予め設定された値が、整数値である、ステップと、
前記デブロッキング制御パラメータの前記値に従って前記スライス内のブロックに対してデブロッキングプロセスを実行するステップとを含む、方法。 - 前記シンタックス要素の前記値が、ピクチャパラメータセットPPSから取得される請求項1に記載の方法。
- 前記スライスのクロマ成分のための前記デブロッキング制御パラメータの前記値が、前記PPSから取得される請求項1または2に記載の方法。
- 前記スライスのクロマ成分のための前記デブロッキング制御パラメータの前記値が、ピクチャヘッダPHから取得される請求項1または2に記載の方法。
- 前記スライスのクロマ成分のための前記デブロッキング制御パラメータの前記値が、スライスヘッダSHから取得される請求項1または2に記載の方法。
- ビデオシーケンスに色成分が存在しないとき、前記シンタックス要素の前記値が0に等しい請求項1から5のいずれか一項に記載の方法。
- 前記ビデオシーケンスが色成分を有するときに、前記スライスのクロマ成分のための前記デブロッキング制御パラメータがシグナリングされる請求項1から6のいずれか一項に記載の方法。
- 前記シンタックス要素の前記値が、前記スライスのルマ成分のためのデブロッキング制御パラメータが前記スライスのクロマ成分のための前記デブロッキング制御パラメータと同じであるかどうかを判定するために使用される請求項1から7のいずれか一項に記載の方法。
- 前記シンタックス要素の前記値が前記予め設定された値に等しくないとき、前記スライスのルマ成分のためのデブロッキング制御パラメータの値に等しい前記スライスのクロマ成分のための前記デブロッキング制御パラメータの前記値を設定するステップをさらに含む請求項1から8のいずれか一項に記載の方法。
- 前記デブロッキング制御パラメータの前記値が、前記スライスの合同Cb-Cr成分に適用される予め設定されたデブロッキングパラメータオフセットである請求項1から9のいずれか一項に記載の方法。
- 請求項1から10のいずれか一項に記載の方法を実行するための処理回路を含むデコーダ(30)。
- コンピュータまたはプロセッサ上で実行されるときに請求項1から10のいずれか一項に記載の方法を実行するためのプログラムコードを含むコンピュータプログラム製品。
- 1つまたは複数のプロセッサと、
前記プロセッサに結合され、前記プロセッサによって実行するためのプログラミングを記憶する非一時的コンピュータ可読ストレージ媒体であって、前記プログラミングが、前記プロセッサによって実行されるときに、請求項1から10のいずれか一項に記載の方法を実行するようにデコーダを構成する、非一時的コンピュータ可読ストレージ媒体とを含むデコーダ。 - コンピュータデバイスによって実行されるとき、前記コンピュータデバイスに請求項1から10のいずれか一項に記載の方法を実行させるプログラムコードを運ぶ非一時的コンピュータ可読媒体。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EPPCT/EP2020/052682 | 2020-02-04 | ||
EP2020052682 | 2020-02-04 | ||
EPPCT/EP2020/059031 | 2020-03-31 | ||
EP2020059031 | 2020-03-31 | ||
PCT/CN2021/071969 WO2021155740A1 (en) | 2020-02-04 | 2021-01-15 | An encoder, a decoder and corresponding methods about signaling high level syntax |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023512694A true JP2023512694A (ja) | 2023-03-28 |
Family
ID=77199145
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022547752A Pending JP2023512694A (ja) | 2020-02-04 | 2021-01-15 | 高レベルシンタックスのシグナリングについてのエンコーダ、デコーダ、および対応する方法 |
Country Status (11)
Country | Link |
---|---|
US (1) | US20220394247A1 (ja) |
EP (1) | EP4088465A4 (ja) |
JP (1) | JP2023512694A (ja) |
KR (1) | KR20220127351A (ja) |
CN (2) | CN115023953A (ja) |
AU (1) | AU2021215741A1 (ja) |
BR (1) | BR112022015242A2 (ja) |
CA (1) | CA3167088A1 (ja) |
CL (1) | CL2022002087A1 (ja) |
MX (1) | MX2022009555A (ja) |
WO (1) | WO2021155740A1 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115152235A (zh) * | 2020-02-26 | 2022-10-04 | 寰发股份有限公司 | 图像或视频处理系统中传送回路滤波器参数的方法及装置 |
JP2021158633A (ja) * | 2020-03-30 | 2021-10-07 | Kddi株式会社 | 画像復号装置、画像復号方法及びプログラム |
WO2021201551A1 (ko) * | 2020-04-02 | 2021-10-07 | 엘지전자 주식회사 | 비디오 또는 영상 코딩 시스템에서의 흑백 영상에 대한 크로마 디블록킹 파라미터 정보에 기반한 영상 코딩 방법 |
EP4128763A4 (en) | 2020-04-29 | 2023-08-30 | ByteDance Inc. | REPORTING FILTER PARAMETERS IN VIDEO IMAGE HEADER |
Family Cites Families (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9001899B2 (en) * | 2006-09-15 | 2015-04-07 | Freescale Semiconductor, Inc. | Video information processing system with selective chroma deblock filtering |
JP5818800B2 (ja) * | 2009-10-05 | 2015-11-18 | トムソン ライセンシングThomson Licensing | 符号化方法及び復号化方法 |
US9872019B2 (en) * | 2010-07-20 | 2018-01-16 | Sk Telecom Co., Ltd. | Method and device for deblocking-filtering, and method and device for encoding and decoding using same |
US9185404B2 (en) * | 2011-10-07 | 2015-11-10 | Qualcomm Incorporated | Performing transform dependent de-blocking filtering |
US9451252B2 (en) * | 2012-01-14 | 2016-09-20 | Qualcomm Incorporated | Coding parameter sets and NAL unit headers for video coding |
JP2013229865A (ja) * | 2012-03-30 | 2013-11-07 | Jvc Kenwood Corp | 画像符号化装置、画像符号化方法、画像符号化プログラム、送信装置、送信方法、及び送信プログラム |
CN107509078B (zh) * | 2012-04-16 | 2021-07-20 | 韩国电子通信研究院 | 用于解码视频信号的方法 |
WO2013159335A1 (en) * | 2012-04-27 | 2013-10-31 | Mediatek Singapore Pte. Ltd. | Modifications related to sao and deblocking in hevc |
US9414054B2 (en) * | 2012-07-02 | 2016-08-09 | Microsoft Technology Licensing, Llc | Control and use of chroma quantization parameter values |
US9591302B2 (en) * | 2012-07-02 | 2017-03-07 | Microsoft Technology Licensing, Llc | Use of chroma quantization parameter offsets in deblocking |
US20140044168A1 (en) * | 2012-08-13 | 2014-02-13 | Qualcomm Incorporated | Device and method for scalable coding of video information |
US20140079135A1 (en) * | 2012-09-14 | 2014-03-20 | Qualcomm Incoporated | Performing quantization to facilitate deblocking filtering |
CN104704824B (zh) * | 2012-10-04 | 2018-05-11 | 瑞典爱立信有限公司 | 分层去块参数适配 |
WO2014107709A2 (en) * | 2013-01-07 | 2014-07-10 | Vid Scale, Inc. | Enhanced deblocking filters for video coding |
US10412419B2 (en) * | 2013-07-12 | 2019-09-10 | Qualcomm Incorporated | Adaptive filtering in video coding |
US9762927B2 (en) * | 2013-09-26 | 2017-09-12 | Qualcomm Incorporated | Sub-prediction unit (PU) based temporal motion vector prediction in HEVC and sub-PU design in 3D-HEVC |
FR3018417B1 (fr) * | 2014-03-04 | 2017-07-28 | Sagemcom Broadband Sas | Procede de modification d'un flux video binaire. |
KR102073930B1 (ko) * | 2014-03-14 | 2020-02-06 | 브이아이디 스케일, 인크. | Rgb 비디오 코딩 향상을 위한 시스템 및 방법 |
US10404988B2 (en) * | 2014-03-16 | 2019-09-03 | Vid Scale, Inc. | Method and apparatus for the signaling of lossless video coding |
JP2016046641A (ja) * | 2014-08-21 | 2016-04-04 | 三菱電機株式会社 | 画像符号化装置、画像復号装置、画像符号化方法及び画像復号方法 |
WO2016056398A1 (ja) * | 2014-10-06 | 2016-04-14 | ソニー株式会社 | 画像処理装置および方法 |
CN107251555B (zh) * | 2015-02-17 | 2020-02-07 | 寰发股份有限公司 | 编解码视频数据的方法和装置 |
TW201642655A (zh) * | 2015-04-21 | 2016-12-01 | Vid衡器股份有限公司 | 基於藝術意向之視訊編碼 |
US20160360234A1 (en) * | 2015-06-03 | 2016-12-08 | Apple Inc. | Techniques For Resource Conservation During Performance Of Intra Block Copy Prediction Searches |
US10136146B1 (en) * | 2016-03-23 | 2018-11-20 | Amazon Technologies, Inc. | Metadata optimizations for encoding of media content |
US11575885B2 (en) * | 2016-10-11 | 2023-02-07 | Electronics And Telecommunications Research Institute | Image encoding/decoding method and apparatus and recording medium for storing bitstream |
WO2018122092A1 (en) * | 2016-12-30 | 2018-07-05 | Telefonaktiebolaget Lm Ericsson (Publ) | Methods, apparatus, and computer programs for decoding media |
JP2020072277A (ja) * | 2017-03-03 | 2020-05-07 | シャープ株式会社 | 動画像符号化装置及び動画像復号装置 |
US10708591B2 (en) * | 2017-03-20 | 2020-07-07 | Qualcomm Incorporated | Enhanced deblocking filtering design in video coding |
US10708592B2 (en) * | 2018-04-02 | 2020-07-07 | Qualcomm Incorporated | Deblocking filter for video coding and processing |
GB2573797A (en) * | 2018-05-17 | 2019-11-20 | Canon Kk | A filter |
CN115567707A (zh) * | 2019-05-30 | 2023-01-03 | 抖音视界有限公司 | 色度分量的自适应环路滤波 |
US20210058620A1 (en) * | 2019-08-23 | 2021-02-25 | Qualcomm Incorporated | Chroma quantization parameter (qp) derivation for video coding |
EP4047933A4 (en) * | 2019-11-18 | 2022-12-14 | LG Electronics Inc. | APPARATUS AND METHOD FOR FILTER BASED IMAGE CODING |
CN114930818A (zh) * | 2020-01-01 | 2022-08-19 | 字节跳动有限公司 | 用于色度编解码的比特流语法 |
-
2021
- 2021-01-15 AU AU2021215741A patent/AU2021215741A1/en active Pending
- 2021-01-15 KR KR1020227030324A patent/KR20220127351A/ko unknown
- 2021-01-15 MX MX2022009555A patent/MX2022009555A/es unknown
- 2021-01-15 WO PCT/CN2021/071969 patent/WO2021155740A1/en unknown
- 2021-01-15 CN CN202180011420.8A patent/CN115023953A/zh active Pending
- 2021-01-15 CN CN202211557624.4A patent/CN116233470B/zh active Active
- 2021-01-15 EP EP21750945.4A patent/EP4088465A4/en active Pending
- 2021-01-15 JP JP2022547752A patent/JP2023512694A/ja active Pending
- 2021-01-15 BR BR112022015242A patent/BR112022015242A2/pt unknown
- 2021-01-15 CA CA3167088A patent/CA3167088A1/en active Pending
-
2022
- 2022-08-02 US US17/879,337 patent/US20220394247A1/en active Pending
- 2022-08-03 CL CL2022002087A patent/CL2022002087A1/es unknown
Also Published As
Publication number | Publication date |
---|---|
CL2022002087A1 (es) | 2023-01-27 |
US20220394247A1 (en) | 2022-12-08 |
CN115023953A (zh) | 2022-09-06 |
EP4088465A1 (en) | 2022-11-16 |
BR112022015242A2 (pt) | 2022-09-20 |
CA3167088A1 (en) | 2021-08-12 |
WO2021155740A1 (en) | 2021-08-12 |
MX2022009555A (es) | 2022-11-16 |
AU2021215741A1 (en) | 2022-09-08 |
CN116233470B (zh) | 2024-01-09 |
EP4088465A4 (en) | 2023-11-29 |
CN116233470A (zh) | 2023-06-06 |
KR20220127351A (ko) | 2022-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7343573B2 (ja) | 逆量子化のための装置及び方法 | |
KR102628895B1 (ko) | 조인트 크로마 코딩을 사용하는 블록에 대해 크로마 디블로킹을 수행하기 위한 인코더, 디코더 및 대응 방법 | |
WO2021129690A1 (en) | Cross-component adaptive loop filtering for video coding | |
JP7391991B2 (ja) | イントラ平滑化のための方法および装置 | |
CA3131311A1 (en) | An encoder, a decoder and corresponding methods for inter prediction | |
WO2021155740A1 (en) | An encoder, a decoder and corresponding methods about signaling high level syntax | |
JP2022541700A (ja) | イントラ予測モードに関連するエンコーダ、デコーダ、および対応する方法 | |
US11729391B2 (en) | Encoder, a decoder and corresponding methods simplifying signaling slice header syntax elements | |
JP2022552727A (ja) | シーケンスパラメータセット内でのサブピクチャのシグナリングのためのエンコーダ、デコーダ、および対応する方法 | |
JP2023515626A (ja) | エンコーダ、デコーダ、および対応するシグナリングの方法、ならびにパラメータセット内のセマンティクス | |
US11973953B2 (en) | Method and apparatus of still picture and video coding with shape-adaptive resampling of residual blocks | |
JP7328446B2 (ja) | クロミナンス量子化パラメータのシグナリングのための方法及び装置 | |
KR20220059549A (ko) | 향상된 보간 필터로써 하나의 블록 행의 처리 동안 페치되는 참조 라인의 수를 감소시키는 아핀 모션 모델 제약 | |
KR20220065880A (ko) | 아핀 모션 보상에서 dct 기반 보간 필터 및 향상된 쌍선형 보간 필터의 사용 | |
JP2023100701A (ja) | イントラ予測のためのイントラモードコーディングを使用するエンコーダ、デコーダ、および対応する方法 | |
WO2021063389A1 (en) | Encoder, decoder and corresponding methods using interpolation filtering | |
JP2023515189A (ja) | スライス用のピクチャパーティション情報をシグナリングするためのデコーダ及び対応する方法 | |
KR20220109464A (ko) | 유연한 프로파일 구성의 인코더, 디코더 및 대응하는 방법들 | |
WO2021025597A1 (en) | Method and apparatus of sample adaptive offset in-loop filter with application region size constraint | |
US20220217346A1 (en) | Method and Apparatus for Chrominance QP Offsets Tables Signaling and Derivation | |
WO2021008470A1 (en) | An encoder, a decoder and corresponding methods | |
JP2023509052A (ja) | エンコーダ、デコーダ、および対応する方法 | |
JP2022550989A (ja) | エンコーダ、デコーダ、および、対応する方法 | |
WO2020085953A1 (en) | An encoder, a decoder and corresponding methods for inter prediction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220922 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220922 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20231108 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20231120 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20240220 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20240513 |