JP2023511206A - 適応ループフィルタリングのためのエンコーダ、デコーダ、および対応する方法 - Google Patents
適応ループフィルタリングのためのエンコーダ、デコーダ、および対応する方法 Download PDFInfo
- Publication number
- JP2023511206A JP2023511206A JP2022544809A JP2022544809A JP2023511206A JP 2023511206 A JP2023511206 A JP 2023511206A JP 2022544809 A JP2022544809 A JP 2022544809A JP 2022544809 A JP2022544809 A JP 2022544809A JP 2023511206 A JP2023511206 A JP 2023511206A
- Authority
- JP
- Japan
- Prior art keywords
- block
- sample
- picture
- samples
- value
- 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 241
- 238000001914 filtration Methods 0.000 title claims abstract description 119
- 230000003044 adaptive effect Effects 0.000 title claims abstract description 60
- 241000023320 Luma <angiosperm> Species 0.000 claims description 148
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 claims description 145
- 230000008569 process Effects 0.000 claims description 131
- 238000004364 calculation method Methods 0.000 claims description 16
- 238000004458 analytical method Methods 0.000 claims description 4
- 238000013139 quantization Methods 0.000 description 80
- 238000012545 processing Methods 0.000 description 58
- 239000000872 buffer Substances 0.000 description 49
- 238000010586 diagram Methods 0.000 description 42
- 230000006854 communication Effects 0.000 description 36
- 238000004891 communication Methods 0.000 description 36
- 238000000638 solvent extraction Methods 0.000 description 33
- 238000009795 derivation Methods 0.000 description 25
- 239000013598 vector Substances 0.000 description 23
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 20
- 238000003491 array Methods 0.000 description 20
- 230000005540 biological transmission Effects 0.000 description 14
- 230000006870 function Effects 0.000 description 14
- 238000005192 partition Methods 0.000 description 14
- 230000008901 benefit Effects 0.000 description 9
- 230000006835 compression Effects 0.000 description 8
- 238000007906 compression Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 7
- 230000009466 transformation Effects 0.000 description 7
- 238000007781 pre-processing Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 238000010606 normalization Methods 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000012805 post-processing Methods 0.000 description 4
- 230000002123 temporal effect Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 3
- 230000006837 decompression Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 229910003460 diamond Inorganic materials 0.000 description 3
- 239000010432 diamond Substances 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000000835 fiber Substances 0.000 description 3
- 238000009499 grossing Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 238000000844 transformation Methods 0.000 description 3
- 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 2
- 101150114515 CTBS gene Proteins 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 229910052757 nitrogen Inorganic materials 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 241000208140 Acer Species 0.000 description 1
- 241000473391 Archosargus rhomboidalis Species 0.000 description 1
- 206010011878 Deafness Diseases 0.000 description 1
- 238000012952 Resampling Methods 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 229910052698 phosphorus Inorganic materials 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon 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
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/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
- H04N19/82—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
-
- 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/132—Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
-
- 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/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/167—Position within a video image, e.g. region of interest [ROI]
-
- 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/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
-
- 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/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/96—Tree coding, e.g. quad-tree coding
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)
Abstract
Description
本特許出願は、2020年1月24日に出願したPCT出願第PCT/EP2020/051788号に対する優先権を主張するものである。前述の特許出願の開示は、全体が参照により本明細書に組み込まれる。
y==CtbSizeY-t-1、またはy==CtbSizeY-t、またはy==ctbHeightC-t、またはy==ctbHeightC-t-1、ただし、yはサンプルの垂直位置であり、CtbSizeYはコーディングツリーブロック、CTB、のサイズであり、ctbHeightCはCTBの高さであり、tは整数値である。
y==CtbSizeY-t-1、またはy==CtbSizeY-t、またはy==ctbHeightC-t、またはy==ctbHeightC-t-1、ただし、yはサンプルの垂直位置であり、CtbSizeYはコーディングツリーブロック、CTB、のサイズであり、ctbHeightCはCTBの高さであり、tは整数値である。
y==CtbSizeY-t-1、またはy==CtbSizeY-t、またはy==ctbHeightC-t、またはy==ctbHeightC-t-1、ただし、yはサンプルの垂直位置であり、CtbSizeYはコーディングツリーブロック、CTB、のサイズであり、ctbHeightCはCTBの高さであり、tは整数値である。
y==CtbSizeY-t-1、またはy==CtbSizeY-t、またはy==ctbHeightC-t、またはy==ctbHeightC-t-1、ただし、yはサンプルの垂直位置であり、CtbSizeYはコーディングツリーブロック、CTB、のサイズであり、ctbHeightCはCTBの高さであり、tは整数値である。
y==CtbSizeY-t-1、またはy==CtbSizeY-t、またはy==ctbHeightC-t、またはy==ctbHeightC-t-1、ただし、yはサンプルの垂直位置であり、CtbSizeYはコーディングツリーブロック、CTB、のサイズであり、ctbHeightCはCTBの高さであり、tは整数値である。
y==CtbSizeY-t-1、またはy==CtbSizeY-t、またはy==ctbHeightC-t、またはy==ctbHeightC-t-1、ただし、yはサンプルの垂直位置であり、CtbSizeYはコーディングツリーブロック、CTB、のサイズであり、ctbHeightCはCTBの高さであり、tは整数値である。
y==CtbSizeY-t-1、またはy==CtbSizeY-t、またはy==ctbHeightC-t、またはy==ctbHeightC-t-1、ただし、yはサンプルの垂直位置であり、CtbSizeYはコーディングツリーブロック、CTB、のサイズであり、ctbHeightCはCTBの高さであり、tは整数値である。
y==CtbSizeY-t-1、またはy==CtbSizeY-t、またはy==ctbHeightC-t、またはy==ctbHeightC-t-1、ただし、yはサンプルの垂直位置であり、CtbSizeYはコーディングツリーブロック、CTB、のサイズであり、ctbHeightCはCTBの高さであり、tは整数値である。
図2は、本出願の技術を実装するように構成されている例示的なビデオエンコーダ20の概略ブロック図を示している。図2の例では、ビデオエンコーダ20は、入力201(または入力インターフェース201)と、残差計算ユニット204と、変換処理ユニット206と、量子化ユニット208と、逆量子化ユニット210と、逆変換処理ユニット212と、再構成ユニット214と、ループフィルタユニット220と、デコード済みピクチャバッファ(DPB)230と、モード選択ユニット260と、エントロピーエンコードユニット270と、出力272(または出力インターフェース272)とを備える。モード選択ユニット260は、フレーム間予測ユニット244と、フレーム内予測ユニット254と、パーティション分割ユニット262とを備え得る。フレーム間予測ユニット244は、動き推定ユニットおよび動き補償ユニット(図示せず)を備え得る。図2に示されているようなビデオエンコーダ20は、また、ハイブリッドビデオエンコーダまたはハイブリッドビデオコーデックによるビデオエンコーダとも称され得る。
エンコーダ20は、たとえば、入力201を介して、ピクチャ17(またはピクチャデータ17)、たとえば、ビデオまたはビデオシーケンスを形成するピクチャのシーケンスのピクチャを受信するように構成され得る。受信済みピクチャまたはピクチャデータは、前処理済みピクチャ19(または前処理済みピクチャデータ19)であってもよい。簡単のため、次の説明は、ピクチャ17を参照する。ピクチャ17は、現在のピクチャまたはコーディングされるべきピクチャとも称され得る(特に、ビデオコーディングでは現在のピクチャを他のピクチャ、たとえば同じビデオシーケンス、すなわち現在のピクチャも含んでいるビデオシーケンスの以前にエンコードされたおよび/またはデコードされたピクチャから区別するためである)。
残差計算ユニット204は、たとえば、ピクチャブロック203のサンプル値から予測ブロック265のサンプル値をサンプル毎(ピクセル毎)に減算することによってピクチャブロック203および予測ブロック265(予測ブロック265についてのさらなる詳細は後で提示される)に基づき残差ブロック205(残差205とも称される)を計算し、サンプル領域内の残差ブロック205を取得するように構成され得る。
変換処理ユニット206は、変換、たとえば離散コサイン変換(DCT)または離散サイン変換(DST)を、残差ブロック205のサンプル値に適用して、変換領域内の変換係数207を取得するように構成され得る。変換係数207は、変換残差係数とも称され、変換領域内の残差ブロック205を表し得る。
量子化ユニット208は、たとえば、スカラー量子化またはベクトル量子化を適用することによって、変換係数207を量子化し、量子化済み変換係数209を取得するように構成され得る。量子化済み変換係数209は、量子化済み変換係数209または量子化済み残差係数209とも称され得る。
逆量子化ユニット210は、量子化ユニット208の逆量子化を量子化済み係数に適用して量子化解除済み係数211を取得することを、たとえば、量子化ユニット208と同じ量子化ステップサイズに基づき、または量子化ユニット208と同じ量子化ステップサイズを使用して量子化ユニット208によって適用される量子化方式の逆を適用することによって行うように構成される。量子化解除済み係数211は、量子化解除済み残差係数211とも称され、変換係数207に--典型的には量子化による損失により変換係数と同一ではないが--対応し得る。
逆変換処理ユニット212は、変換処理ユニット206によって適用される変換の逆変換、たとえば、逆離散コサイン変換(DCT)または逆離散サイン変換(DST)または他の逆変換を適用して、サンプル領域内の再構成済み残差ブロック213(または対応する量子化解除済み係数213)を取得するように構成される。再構成済み残差ブロック213は、変換ブロック213とも称され得る。
再構成ユニット214(たとえば、加算器または総和器214)は、変換ブロック213(すなわち、再構成済み残差ブロック213)を予測ブロック265に加算してサンプル領域内の再構成済みブロック215を取得することを、たとえば、再構成済み残差ブロック213のサンプル値および予測ブロック265のサンプル値を--サンプル毎に--加算することによって行うように構成される。
ループフィルタユニット220(または省略形の「ループフィルタ」220)は、再構成済みブロック215をフィルタリングしてフィルタリング済みブロック221を取得するか、または一般に、再構成済みサンプルをフィルタリングしてフィルタリング済みサンプルを取得するように構成される。ループフィルタユニットは、たとえば、ピクセル遷移を滑らかにするように構成され、またはそうでなければ、ビデオ画質を改善するように構成される。ループフィルタユニット220は、デブロッキングフィルタ、サンプル適応オフセット(SAO)フィルタ、または1つもしくは複数の他のフィルタ、たとえば、双方向フィルタ、適応ループフィルタ(ALF)、鮮鋭化、平滑化フィルタもしくは協調フィルタ、またはそれらの任意の組合せなどの1つもしくは複数のループフィルタを含み得る。フィルタユニット220は、ループフィルタであるものとして図2に示されているが、他の構成では、ループフィルタユニット220は、ポストループフィルタとして実装されてもよい。フィルタリング済みブロック221は、フィルタリングされた再構成済みブロック221とも称され得る。
デコード済みピクチャバッファ(DPB)230は、ビデオエンコーダ20によりビデオデータをエンコードするために、参照ピクチャ、または一般に参照ピクチャデータを記憶するメモリであってよい。DPB230は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。デコード済みピクチャバッファ(DPB)230は、1つまたは複数のフィルタリング済みブロック221を記憶するように構成され得る。デコード済みピクチャバッファ230は、同じ現在のピクチャの、または異なるピクチャ、たとえば、以前に再構成されたピクチャの、他の以前にフィルタリングされたブロック、たとえば、以前に再構成されフィルタリングされたブロック221、を記憶するようにさらに構成されてよく、たとえば、フレーム間予測のために、完全な以前に再構成された、すなわち、デコードされた、ピクチャ(および対応する参照ブロックおよびサンプル)および/または部分的に再構成された現在のピクチャ(および対応する参照ブロックおよびサンプル)を提供し得る。デコード済みピクチャバッファ(DPB)230は、また、たとえば再構成済みブロック215がループフィルタユニット220によってフィルタリングされていない場合に、1つもしくは複数のフィルタリングされていない再構成済みブロック215、もしくは一般に、フィルタリングされていない再構成済みサンプル、または再構成済みブロックもしくはサンプルの任意の他のさらに処理されたバージョンを記憶するように構成され得る。
モード選択ユニット260は、パーティション分割ユニット262、フレーム間予測ユニット244、およびフレーム内予測ユニット254を備え、元のピクチャデータ、たとえば、元のブロック203(現在のピクチャ17の現在のブロック203)、および再構成済みピクチャデータ、たとえば、同じ(現在の)ピクチャの、および/または1つもしくは複数の以前にデコードされたピクチャからの、たとえば、デコード済みピクチャバッファ230もしくは他のバッファ(たとえば、ラインバッファ、図示せず)からの、フィルタリングされたおよび/またはフィルタリングされていない再構成済みサンプルもしくはブロックを受信するか、または取得するように構成される。再構成済みピクチャデータは、予測、たとえばフレーム間予測またはフレーム内予測のための参照ピクチャデータとして使用され、予測ブロック265または予測因子265を得る。
パーティション分割ユニット262は、現在のブロック203をより小さなパーティション、たとえば、正方形または長方形のサイズのより小さなブロックにパーティション分割(または分割)し得る。これらの小さいブロック(サブブロックとも称され得る)は、なおいっそう小さいパーティションにさらにパーティション分割されてもよい。これは、木パーティション分割または階層的木パーティション分割とも称され、たとえば、ルート木レベル0(階層レベル0、深さ0)の、ルートブロックは、再帰的にパーティション分割され、たとえば、次に低い木レベルの2つ以上のブロック、たとえば、木レベル1(階層レベル1、深さ1)のノードにパーティション分割されるものとしてよく、これらのブロックは、たとえば終了基準が満たされる、たとえば、最大木深さもしくは最小ブロックサイズに達したという理由でパーティション分割が終了するまで、次に低いレベル、たとえば、木レベル2(階層レベル2、深さ2)の2つ以上のブロックに再び分割される、などのように続き得る。もうパーティション分割されないブロックは、木の葉ブロックまたは葉ノードとも称される。2つのパーティションへのパーティション分割を使用する木は、二分木(BT)と称され、3つのパーティションへのパーティション分割を使用する木は、三分木(TT)と称され、4つのパーティションへのパーティション分割を使用する木は、四分木(QT)と称される。
フレーム内予測モードのセットは、35個の異なるフレーム内予測モード、たとえば、DC(もしくは平均)モードおよび平面モードのような非方向性モード、もしくはたとえばHEVCで定義されているような方向性モードを含み得るか、または67個の異なるフレーム内予測モード、たとえば、DC(もしくは平均)モードおよび平面モードのような非方向性モード、もしくはたとえばVVCに対して定義されているような、方向性モードを含み得る。
フレーム間予測モードのセット(または可能なフレーム間予測モード)は、利用可能な参照ピクチャ(すなわち、たとえばDBP230に記憶されている、以前の少なくとも部分的にデコードされたピクチャ)および他のフレーム間予測パラメータ、たとえば参照ピクチャ全体もしくは、参照ピクチャの一部のみ、たとえば、現在のブロックの領域の周りの探索ウィンドウ領域が、最良一致参照ブロックを探索するために使用されるかどうか、および/またはたとえば、ピクセル補間、たとえば、半/セミペルおよび/もしくは1/4ペル補間が適用されるかどうか、に依存する。
エントロピー符号化ユニット270は、たとえば、エントロピー符号化アルゴリズムもしくはスキーム(たとえば、可変長コーディング(VLC)スキーム、コンテキスト適応型VLC(CAVLC)スキーム、算術コーディングスキーム、2値化、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベース文脈適応型バイナリ算術コーディング(SBAC)、確率区間区分エントロピー(PIPE)コーディング、または別のエントロピーエンコード方法もしくは技術)またはバイパス(圧縮なし)を、量子化済み係数209、フレーム間予測パラメータ、フレーム内予測パラメータ、ループフィルタパラメータ、および/または他のシンタックス要素上で適用し、たとえば、エンコード済みビットストリーム21の形態で出力272を介して出力され得るエンコード済みピクチャデータ21を取得するように構成され、したがって、たとえば、ビデオデコーダ30はそれらのパラメータを受信しデコードに使用し得る。エンコード済みビットストリーム21は、ビデオデコーダ30に伝送されるか、またはビデオデコーダ30によるその後の伝送もしくは取り出しのためにメモリに記憶され得る。
図3は、本出願の技術を実装するように構成されているビデオデコーダ30の一例を示している。ビデオデコーダ30は、たとえば、エンコーダ20によってエンコードされた、エンコード済みピクチャデータ21(たとえば、エンコード済みビットストリーム)21を受信して、デコード済みピクチャ331を取得するように構成される。エンコード済みピクチャデータまたはビットストリームは、エンコード済みピクチャデータをデコードするための情報、たとえば、エンコード済みビデオスライスのピクチャブロックおよび関連するシンタックス要素を表すデータを含む。
エントロピーデコードユニット304は、ビットストリーム21(または一般にエンコード済みピクチャデータ21)を解析し、たとえばエンコード済みピクチャデータ21に対してエントロピーデコードを実行して、たとえば量子化係数309および/またはデコード済みコーディングパラメータ(図3には示されていない)、たとえばフレーム間予測パラメータ(たとえば、参照ピクチャインデックスおよび動きベクトル)、フレーム内予測パラメータ(たとえば、フレーム内予測モードまたはインデックス)、変換パラメータ、量子化パラメータ、ループフィルタパラメータ、および/または他のシンタックス要素のいずれかもしくはすべて、を取得するように構成される。エントロピーデコードユニット304は、エンコーダ20のエントロピーエンコードユニット270に関して説明されているようにエンコードスキームに対応するデコードアルゴリズムまたはスキームを適用するように構成され得る。エントロピーデコードユニット304は、フレーム間予測パラメータ、フレーム内予測パラメータ、および/または他のシンタックス要素をモード選択ユニット360に提供し、他のパラメータをデコーダ30の他のユニットに提供するようにさらに構成され得る。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルにおいてシンタックス要素を受信し得る。
逆量子化ユニット310は、エンコード済みピクチャデータ21から量子化パラメータ(QP)(または一般に逆量子化に関係する情報)および量子化済み係数を受け取り(たとえば、解析および/またはデコードによって、たとえば、エントロピーデコードユニット304によって)、量子化パラメータに基づきデコード済み量子化係数309に逆量子化を適用して、変換係数311とも称され得る、量子化解除済み係数311を取得するように構成され得る。逆量子化プロセスは、ビデオスライス内の各ビデオブロックについてビデオエンコーダ20によって決定された量子化パラメータを使用して、量子化の程度、また同様に、適用されるべき逆量子化の程度を決定することを含み得る。
逆変換処理ユニット312は、変換係数311とも称される、量子化解除済み係数311を受信し、サンプル領域において再構成済み残差ブロック213を取得するために量子化解除済み係数311に変換を適用するように構成され得る。再構成済み残差ブロック213は、変換ブロック313とも称され得る。変換は、逆変換、たとえば、逆DCT、逆DST、逆整数変換、または概念的に類似する逆変換プロセスであってもよい。逆変換処理ユニット312は、変換パラメータまたは対応する情報をエンコード済みピクチャデータ21から(たとえば、解析および/またはデコード、たとえば、エントロピーデコードユニット304によって)受け取り、量子化解除済み係数311に適用されるべき変換を決定するようにさらに構成され得る。
再構成ユニット314(たとえば、加算器または総和器314)は、再構成済み残差ブロック313を予測ブロック365に加算してサンプル領域内の再構成済みブロック315を取得することを、たとえば、再構成済み残差ブロック313のサンプル値および予測ブロック365のサンプル値を加算することによって行うように構成され得る。
ループフィルタユニット320(コーディングループ内またはコーディングループ後の)は、再構成済みブロック315をフィルタリングしてフィルタリング済みブロック321を取得し、たとえば、ピクセル遷移を平滑化するか、または他の何らかの形でビデオ画質を改善するように構成される。ループフィルタユニット320は、デブロッキングフィルタ、サンプル適応オフセット(SAO)フィルタ、または1つもしくは複数の他のフィルタ、たとえば、双方向フィルタ、適応ループフィルタ(ALF)、鮮鋭化、平滑化フィルタもしくは協調フィルタ、またはそれらの任意の組合せなどの1つもしくは複数のループフィルタを含み得る。ループフィルタユニット320は、ループフィルタであるものとして図3に示されているが、他の構成では、ループフィルタユニット320は、ポストループフィルタとして実装されてもよい。
ピクチャのデコード済みビデオブロック321は、次いで、デコード済みピクチャバッファ330に記憶され、これは、デコード済みピクチャ331を、他のピクチャおよび/または出力されるそれぞれの表示のための後続の動き補償の参照ピクチャとして記憶する。
フレーム間予測ユニット344は、フレーム間予測ユニット244と(特に動き補償ユニットと)同一であり得、フレーム内予測ユニット354は、フレーム間予測ユニット254と機能が同一であってよく、エンコード済みピクチャデータ21から受け取ったパーティション分割および/または予測パラメータまたはそれぞれの情報に基づき(たとえば、解析および/またはデコード、たとえばエントロピーデコードユニット304によって)分割またはパーティション分割決定および予測を実行する。モード選択ユニット360は、再構成済みピクチャ、ブロック、またはそれぞれのサンプル(フィルタリングもしくは未フィルタリング)に基づきブロック毎に予測(フレーム内またはフレーム間予測)を実行し、予測ブロック365を取得するように構成され得る。
ux=(mvx+2bitDepth)%2bitDepth (1)
mvx=(ux>=2bitDepth-1)?(ux-2bitDepth):ux (2)
uy=(mvy+2bitDepth)%2bitDepth (3)
mvy=(uy>=2bitDepth-1)?(uy-2bitDepth):uy (4)
mvxは画像ブロックまたはサブブロックの動きベクトルの水平成分であり、mvyは画像ブロックまたはサブブロックの動きベクトルの垂直成分であり、uxおよびuyは中間値を示す。
ux=(mvpx+mvdx+2bitDepth)%2bitDepth (5)
mvx=(ux>=2bitDepth-1)?(ux-2bitDepth):ux (6)
uy=(mvpy+mvdy+2bitDepth)%2bitDepth (7)
mvy=(uy>=2bitDepth-1)?(uy-2bitDepth):uy (8)
これらの演算は、式(5)から(8)に示されているように、mvpとmvdとの和において適用され得る。
vx=Clip3(-2bitDepth-1,2bitDepth-1-1,vx)
vy=Clip3(-2bitDepth-1,2bitDepth-1-1,vy)
vxは画像ブロックまたはサブブロックの動きベクトルの水平成分であり、vyは画像ブロックまたはサブブロックの動きベクトルの垂直成分であり、x、y、およびzはそれぞれMVクリッピングプロセスの3入力値に対応し、関数Clip3の定義は次の通りである。
VTM3には、全部で3種類のループ内フィルタがある。VTM3では、デブロッキングフィルタおよびSAO(HEVCにおける2つのループフィルタ)の他に、適応ループフィルタ(ALF)が適用される。VTM3におけるフィルタリングプロセスの順序は、デブロッキングフィルタ、SAO、およびALFである。
VTM3では、ブロックベースのフィルタ適応を有する適応ループフィルタ(ALF)が適用される。ルーマ成分に対しては、25個のフィルタのうちの1つが、局所的勾配の方向とアクティビティに基づき各4×4ブロックについて選択される。
JEMでは、2つのダイヤモンドフィルタ形状(図6に示されているような)が、ルーマ成分に使用される。7×7のダイヤモンド形状はルーマ成分について適用され、5×5のダイヤモンド形状はクロマ成分について適用される。
ステップ1。
ステップ2。
ステップ3。
ステップ4。
各4×4ルーマブロックをフィルタリングする前に、回転または対角線および垂直反転などの幾何学的変換が、そのブロックについて計算された勾配値に応じてフィルタ係数f(k,l)に適用される。これは、フィルタサポート領域内のサンプルにこれらの変換を適用することと等価である。これは、ALFが適用される異なるブロックをその方向性を揃えることによって類似性を高めるという考え方である。
対角線:fD(k,l)=f(l,k) (17)
垂直反転:fV(k,l)=f(k,K-l-1) (18)
回転:fR(k,l)=f(K-l-1,k) (19)
Kはフィルタのサイズであり、0≦k、l≦K-1は係数座標であり、配置(0,0)が左上隅にあり、配置(K-1,K-1)が右下隅にある。変換は、そのブロックについて計算された勾配値に応じて、フィルタ係数f(k,l)に適用される。変換と4方向の4つの勾配との間の関係が、次の表に要約されている。
VTM3では、ALFフィルタパラメータはスライスヘッダで信号により伝えられる。ルーマフィルタ係数の最大25セットが信号により伝えられ得る。ビットオーバーヘッドを低減するために、異なる分類のフィルタ係数がマージされ得る。
デコーダ側では、ALFがCTBについて有効化されたときに、CU内の各サンプルR(i,j)は、フィルタリングされ、その結果、以下に示されているようなサンプル値R'(i,j)が得られ、Lはフィルタ長であり、fm,nはフィルタ係数であり、f(k,l)はデコード済みフィルタ係数を表す。
適応ループフィルタプロセス
1.1 概要
このプロセスの入力は、適応ループフィルタrecPictureL、recPictureCb、およびrecPictureCrの前の再構成済みピクチャサンプル配列である。
このプロセスの入力は、以下の通りである。
適応ループフィルタプロセスの前の再構成済みルーマピクチャサンプル配列recPictureL、
フィルタリングされた再構成済みルーマピクチャサンプル配列alfPictureL、
現在のピクチャの左上サンプルに関する現在のルーマコーディングツリーブロックの左上サンプルを指定するルーマ配置(xCtb,yCtb)。
f[j]=AlfCoeffL[filtIdx[x][y]][j]。
transposeIndex[x][y]==1の場合、
filterCoeff[]={f[9],f[4],f[10],f[8],f[1],f[5],f[11],f[7],f[3],f[0],f[2],f[6],f[12]}
そうでなければ、transposeIndex[x][y]==2の場合、
filterCoeff[]={f[0],f[3],f[2],f[1],f[8],f[7],f[6],f[5],f[4],f[9],f[10],f[11],f[12]}
そうでなければ、transposeIndex[x][y]==3の場合、
filterCoeff[]={f[9],f[8],f[10],f[4],f[3],f[7],f[11],f[5],f[1],f[0],f[2],f[6],f[12]}
そうでなければ、
filterCoeff[]={f[0],f[1],f[2],f[3],f[4],f[5],f[6],f[7],f[8],f[9],f[10],f[11],f[12]}
hx=Clip3(0,pic_width_in_luma_samples-1,xCtb+x)
vy=Clip3(0,pic_height_in_luma_samples-1,yCtb+y)
sum=filterCoeff[0]*(recPictureL[hx,vy+3]+recPictureL[hx,vy-3])+
filterCoeff[1]*(recPictureL[hx+1,vy+2]+recPictureL[hx-1,vy-2])+
filterCoeff[2]*(recPictureL[hx,vy+2]+recPictureL[hx,vy-2])+
filterCoeff[3]*(recPictureL[hx-1,vy+2]+recPictureL[hx+1,vy-2])+
filterCoeff[4]*(recPictureL[hx+2,vy+1]+recPictureL[hx-2,vy-1])+
filterCoeff[5]*(recPictureL[hx+1,vy+1]+recPictureL[hx-1,vy-1])+
filterCoeff[6]*(recPictureL[hx,vy+1]+recPictureL[hx,vy-1])+
filterCoeff[7]*(recPictureL[hx-1,vy+1]+recPictureL[hx+1,vy-1])+
filterCoeff[8]*(recPictureL[hx-2,vy+1]+recPictureL[hx+2,vy-1])+
filterCoeff[9]*(recPictureL[hx+3,vy]+recPictureL[hx-3,vy])+
filterCoeff[10]*(recPictureL[hx+2,vy]+recPictureL[hx-2,vy])+
filterCoeff[11]*(recPictureL[hx+1,vy]+recPictureL[hx-1,vy])+
filterCoeff[12]*recPictureL[hx,vy]
sum=(sum+64)>>7
alfPictureL[xCtb+x][yCtb+y]=Clip3(0,(1<<BitDepthY)-1,sum)。
このプロセスの入力は、以下の通りである。
現在のピクチャの左上サンプルに関する現在のルーマコーディングツリーブロックの左上サンプルを指定するルーマ配置(xCtb,yCtb)、
適応ループフィルタプロセスの前の再構成済みルーマピクチャサンプル配列recPictureL。
x,y=0..CtbSizeY-1として、分類フィルタインデックス配列filtIdx[x][y]、
x,y=0..CtbSizeY-1として、転置インデックス配列transposeIdx[x][y]。
hx=Clip3(0,pic_width_in_luma_samples-1,x)
vy=Clip3(0,pic_height_in_luma_samples-1,y)
filtH[x][y]=Abs((recPicture[hxCtb+x,vyCtb+y]<<1)-recPicture[hxCtb+x-1,vyCtb+y]-recPicture[hxCtb+x+1,vyCtb+y])
filtV[x][y]=Abs((recPicture[hxCtb+x,vyCtb+y]<<1)-recPicture[hxCtb+x,vyCtb+y-1]-recPicture[hxCtb+x,vyCtb+y+1])
filtD0[x][y]=Abs((recPicture[hxCtb+x,vyCtb+y]<<1)-recPicture[hxCtb+x-1,vyCtb+y-1]-recPicture[hxCtb+x+1,vyCtb+y+1])
filtD1[x][y]=Abs((recPicture[hxCtb+x,vyCtb+y]<<1)-recPicture[hxCtb+x+1,vyCtb+y-1]-recPicture[hxCtb+x-1,vyCtb+y+1])
そうでなければ、filtH[x][y]、filtV[x][y]、filtD0[x][y]、およびfiltD1[x][y]は0に等しくなるように設定される。
sumH[x][y]=ΣiΣj filtH[(x<<2)+i][(y<<2)+j]、i,j=-2..5
sumV[x][y]=ΣiΣj filtV[(x<<2)+i][(y<<2)+j]、i,j=-2..5
sumD0[x][y]=ΣiΣj filtD0[(x<<2)+i][(y<<2)+j]、i,j=-2..5
sumD1[x][y]=ΣiΣj filtD1[(x<<2)+i][(y<<2)+j]、i,j=-2..5
sumOfHV[x][y]=sumH[x][y]+sumV[x][y]
sumV[x>>2][y>>2]がsumH[x>>2][y>>2]より大きい場合、次の式が適用される。
hv1=sumV[x>>2][y>>2]
hv0=sumH[x>>2][y>>2]
dirHV=1
そうでなければ、次が適用される。
hv1=sumH[x>>2][y>>2]
hv0=sumV[x>>2][y>>2]
dirHV=3
sumD0[x>>2][y>>2]がsumD1[x>>2][y>>2]より大きい場合、次が適用される。
d1=sumD0[x>>2][y>>2]
d0=sumD1[x>>2][y>>2]
dirD=0
そうでなければ、次が適用される。
d1=sumD1[x>>2][y>>2]
d0=sumD0[x>>2][y>>2]
dirD=2
hvd1=(d1*hv0>hv1*d0) ? d1:hv1
hvd0=(d1*hv0>hv1*d0) ? d0:hv0
dir1[x][y]=(d1*hv0>hv1*d0) ? dirD:dirHV
dir2[x][y]=(d1*hv0>hv1*d0) ? dirHV:dirD
dirS[x][y]=(hvd1>2*hvd0) ? 1:((hvd1*2>9*hvd0) ? 2 :0)
varTab[]={0, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4}
avgVar[x][y]=varTab[Clip3(0, 15, (sumOfHV[x>>2][y>>2]*64)>>(3+BitDepthY))]
transposeTable[]={0, 1, 0, 2, 2, 3, 1, 3}
transposeIdx[x][y]=transposeTable[dir1[x][y]*2+(dir2[x][y]>>1)]
filtIdx[x][y]=avgVar[x][y]
filtIdx[x][y]+=(((dir1[x][y]&0x1)<<1)+dirS[x][y])*5。
このプロセスの入力は、以下の通りである。
適応ループフィルタプロセスの前の再構成済みクロマピクチャサンプル配列recPicture、
フィルタリングされた再構成済みクロマピクチャサンプル配列alfPicture、
現在のピクチャの左上サンプルに関する現在のクロマコーディングツリーブロックの左上サンプルを指定するクロマ配置(xCtbC,yCtbC)。
ctbSizeC=CtbSizeY/SubWidthC
hx=Clip3(0,pic_width_in_luma_samples/SubWidthC-1,xCtbC+x)
vy=Clip3(0,pic_height_in_luma_samples/SubHeightC-1,yCtbC+y)
sum=AlfCoeffC[0]*(recPicture[hx,vy+2]+recPicture[hx,vy-2])+
AlfCoeffC[1]*(recPicture[hx+1,vy+1]+recPicture[hx-1,vy-1])+
AlfCoeffC[2]*(recPicture[hx,vy+1]+recPicture[hx,vy-1])+
AlfCoeffC[3]*(recPicture[hx-1,vy+1]+recPicture[hx+1,vy-1])+
AlfCoeffC[4]*(recPicture[hx+2,vy]+recPicture[hx-2,vy])+
AlfCoeffC[5]*(recPicture[hx+1,vy]+recPicture[hx-1,vy])+
AlfCoeffC[6]*recPicture[hx,vy]
sum=(sum+64)>>7
alfPicture[xCtbC+x][yCtbC+y]=Clip3(0,(1<<BitDepthC)-1,sum)。
・ ラインK~N(水平DFピクセル)-4
・ ラインD~J(SAOフィルタリング済みピクセル)-7
・ ラインJとラインKとの間のSAOエッジオフセット分類子値-0.25
・ したがって、ルーマラインの総数は7+4+0.25=11.25である
図9は、仮想境界より上および下のラインについてALFブロック分類がどのように実行されるかを示している。
図9では、ALFルーマラインバッファ(非対称バリアント)を回避するための修正済みALF分類を参照する例を開示している。
・ 分類においてVBより上のサンプルのみを使用する(EからIまでのライン内のサンプル)
・ 分類においてVBより下のサンプルのみを使用する(PからLまでのライン内のサンプル)
ラインJをラインK、L、Mにパディングする。
ラインKをラインJ、I、Hにパディングする。
・ VBより上の4×4ブロックについて:
・ VBより上のサンプルのみがALFブロックの分類に寄与し、その逆もある
・ ラインJ内のサンプルの勾配計算のために、ラインKは、ラインJをパディングされる
・ VBより下の4×4ブロックについて:
・ VBより下のサンプルのみがALFブロックの分類に寄与し、その逆もある
・ ラインJ内のサンプルの勾配計算のために、ラインKは、ラインJをパディングされる
・ アクティビティ計算では、ブロック分類に使用されるサンプルは少ないので、異なる正規化を使用する。
・ したがって、次の式が、アクティビティを計算する際に使用される:
・ avgVar[x][y]=varTab[Clip3(0, 15, (sumOfHV[x>>2][y>>2]*Ac)>>(3+BitDepthY))]、ここで、Acの値は、仮想境界付近のブロックに対して96であり、他のブロックに対しては64である。
avgVar[x][y]=varTab[Clip3(0,15,(sumOfHV[x>>2][y>>2]*Ac)>>(3+BitDepthY))]、ここで、Acの値は、仮想境界付近のブロックに対して96であり、他のブロックに対しては64である。
・ 分類においてVBより上のサンプルのみを使用する(EからHまでのライン内のサンプル)
・ ラインIおよびJは、VTM-3.0では一緒に考えられ、したがってラインHまでしか使用されない。
・ ラインJをラインKにパディングしてラインIおよびJも分類に使用する
・ 分類においてVBより下のサンプルのみを使用する(PからMまでのライン内のサンプル)
・ ラインKおよびLは、VTM-3.0では一緒に考えられ、したがってラインMまでしか使用されない。
・ ラインKをラインJにパディングしてラインIおよびJも分類に使用する
図10に示されているように、ALFルーマラインバッファ(対称バリアント)を回避するための修正済みALF分類を参照する実装形態が開示されており、対称切り捨てALFブロック分類は、所与のブロックを分類するために内側の4サンプル(a、b、c、d)のみを使用する。
解決方法1:
分類においてVBより上のサンプルのみを使用する。主にサンプルa、b、c、dが使用される。
分類においてVBより下のサンプルのみを使用する。主にサンプルa、b、c、dが使用される。
解決方法1:
VBより下のSAOフィルタリング済みラインK、Lが、さらに使用され得る
VBより上のSAOフィルタリング済みラインI、Jが、さらに使用され得る
解決方法2:
ラインLをラインMにパディングする
ラインIをラインHにパディングする
図12aおよび図12bは、ALFルーマラインバッファを回避するための修正済みALFフィルタリングを参照する実装形態を開示している。ラインH、J、I(仮想境界より上の)およびラインK、L、M(仮想境界より下の)のフィルタリングのために、7×7ルーマフィルタの歪んだバージョンが使用される。
c5'=c5+c1
c6'=c6+c2+c0
c7'=c7+c3
c10'=c10+c4+c8
c11'=c11+c5+c7+c1+c3
c12'=c12+2*c6+2*c2+2*c0
このプロセスの入力は、適応ループフィルタrecPictureL、recPictureCb、およびrecPictureCrの前の再構成済みピクチャサンプル配列である。
このプロセスの入力は、以下の通りである。
適応ループフィルタプロセスの前の再構成済みルーマピクチャサンプル配列recPictureL、
フィルタリングされた再構成済みルーマピクチャサンプル配列alfPictureL、
現在のピクチャの左上サンプルに関する現在のルーマコーディングツリーブロックの左上サンプルを指定するルーマ配置(xCtb,yCtb)。
f[j]=AlfCoeffL[filtIdx[x][y]][j]
transposeIndex[x][y]==1の場合、
filterCoeff[]={f[9],f[4],f[10],f[8],f[1],f[5],f[11],f[7],f[3],f[0],f[2],f[6],f[12]}
そうでなければ、transposeIndex[x][y]==2の場合、
filterCoeff[]={f[0],f[3],f[2],f[1],f[8],f[7],f[6],f[5],f[4],f[9],f[10],f[11],f[12]}
そうでなければ、transposeIndex[x][y]==3の場合、
filterCoeff[]={f[9],f[8],f[10],f[4],f[3],f[7],f[11],f[5],f[1],f[0],f[2],f[6],f[12]}
そうでなければ、
filterCoeff[]={f[0],f[1],f[2],f[3],f[4],f[5],f[6],f[7],f[8],f[9],f[10],f[11],f[12]}
hx=Clip3(0,pic_width_in_luma_samples-1,xCtb+x)
vy=y
sum=filterCoeff[0]*(recPictureL[hx, vy+r5 ]+recPictureL[hx, vy-r6 ])+
filterCoeff[1]*(recPictureL[hx+1, vy+r3]+recPictureL[hx-1, vy - r4 ])+
filterCoeff[2]*(recPictureL[hx, vy+r3 ]+recPictureL[hx, vy - r4 ])+
filterCoeff[3]*(recPictureL[hx-1, vy+r3 ]+recPictureL[hx+1, vy - r4])+
filterCoeff[4]*(recPictureL[hx+2, vy+r1 ]+recPictureL[hx-2, vy - r2 ])+
filterCoeff[5]*(recPictureL[hx+1, vy+r1 ]+recPictureL[hx-1, vy - r2 ])+
filterCoeff[6]*(recPictureL[hx, vy+r1]+recPictureL[hx, vy - r2])+ (8-1155)
filterCoeff[7]*(recPictureL[hx-1, vy+r1 ]+recPictureL[hx+1, vy - r2])+
filterCoeff[8]*(recPictureL[hx-2, vy+r1 ]+recPictureL[hx+2, vy - r2])+
filterCoeff[9]*(recPictureL[hx+3, vy]+recPictureL[hx-3, vy])+
filterCoeff[10]*(recPictureL[hx+2, vy]+recPictureL[hx-2, vy])+
filterCoeff[11]*(recPictureL[hx+1, vy]+recPictureL[hx-1, vy])+
filterCoeff[12]*recPictureL[hx, vy]
sum=(sum+64)>>7
alfPictureL[xCtb+x][yCtb+y]=Clip3(0, (1<<BitDepthY)-1, sum)。
このプロセスの入力は、以下の通りである。
現在のピクチャの左上サンプルに関する現在のルーマコーディングツリーブロックの左上サンプルを指定するルーマ配置(xCtb,yCtb)、
適応ループフィルタプロセスの前の再構成済みルーマピクチャサンプル配列recPictureL。
x,y=0..CtbSizeY-1として、分類フィルタインデックス配列filtIdx[x][y]、
x,y=0..CtbSizeY-1として、転置インデックス配列transposeIdx[x][y]。
hx=Clip3(0,pic_width_in_luma_samples-1,x)
yCtb+CtbSizeY>=pic_height_in_luma_samplesならば
vy=Clip3(0,pic_height_in_luma_samples-1,y)
そうでなければ、y<(CtbSizeY-4)の場合、
vy=Clip3(0, yCtb+CtbSizeY-5, yCtb+y)
そうでなければ、
vy=Clip3(yCtb+CtbSizeY - 4, pic_height_in_luma_samples - 1, yCtb+y)。
filtH[x][y]=Abs((recPicture[hxCtb+x, vyCtb+y]<<1)-recPicture[hxCtb+x-1, vyCtb+y]- recPicture[hxCtb+x+1, vyCtb+y])
filtV[x][y]=Abs((recPicture[hxCtb+x, vyCtb+y]<<1)-recPicture[hxCtb+x, vyCtb+y-1]- recPicture[hxCtb+x, vyCtb+y+1])
filtD0[x][y]=Abs((recPicture[hxCtb+x, vyCtb+y]<<1)-recPicture[hxCtb+x-1, vyCtb+y-1]-recPicture[hxCtb+x+1, vyCtb+y+1])
filtD1[x][y]=Abs((recPicture[hxCtb+x, vyCtb+y]<<1)-recPicture[hxCtb+x+1, vyCtb+y-1]-recPicture[hxCtb+x-1, vyCtb+y+1])
そうでなければ、filtH[x][y]、filtV[x][y]、filtD0[x][y]、およびfiltD1[x][y]は0に等しくなるように設定される。
(y<<2)==CtbSizeY-8およびyCtb+CtbSizeY<pic_height_in_luma_samples-1ならば
sumH[x][y]=ΣiΣj filtH[(x<<2)+i][(y<<2)+j]、i=-2..5およびj=-2..3
sumV[x][y]=ΣiΣj filtV[(x<<2)+i][(y<<2)+j]、i=-2..5およびj=-2..3
sumD0[x][y]=ΣiΣj filtD0[(x<<2)+i][(y<<2)+j]、i=-2..5およびj=-2..3
sumD1[x][y]=ΣiΣj filtD1[(x<<2)+i][(y<<2)+j]、i=-2..5およびj=-2..3
変数Acは96に設定される
そうでなければ、(y<<2)==CtbSizeY-4およびyCtb+CtbSizeY<pic_height_in_luma_samples-1ならば
sumH[x][y]=ΣiΣj filtH[(x<<2)+i][(y<<2)+j]、i=-2..5およびj=-0..5
sumV[x][y]=ΣiΣj filtV[(x<<2)+i][(y<<2)+j]、i=-2..5およびj=-0..5
sumD0[x][y]=ΣiΣj filtD0[(x<<2)+i][(y<<2)+j]、i=-2..5およびj=0..5
sumD1[x][y]=ΣiΣj filtD1[(x<<2)+i][(y<<2)+j]、i=-2..5およびj=-0..5
変数Acは96に設定される
そうでなければ、
sumH[x][y]=ΣiΣj filtH[(x<<2)+i][(y<<2)+j]、i,j=-2..5
sumV[x][y]=ΣiΣj filtV[(x<<2)+i][(y<<2)+j]、i,j=-2..5
sumD0[x][y]=ΣiΣj filtD0[(x<<2)+i][(y<<2)+j]、i,j=-2..5
sumD1[x][y]=ΣiΣj filtD1[(x<<2)+i][(y<<2)+j]、i,j=-2..5
sumOfHV[x][y]=sumH[x][y]+sumV[x][y](8-1168)
変数Acは64に設定される
sumV[x>>2][y>>2]がsumH[x>>2][y>>2]より大きい場合、次が適用される。
hv1=sumV[x>>2][y>>2]
hv0=sumH[x>>2][y>>2]
dirHV=1、
そうでなければ、次が適用される。
hv1=sumH[x>>2][y>>2]
hv0=sumV[x>>2][y>>2]
dirHV=3
sumD0[x>>2][y>>2]がsumD1[x>>2][y>>2]より大きい場合、次が適用される。
d1=sumD0[x>>2][y>>2]
d0=sumD1[x>>2][y>>2]
dirD=0、
そうでなければ、次が適用される。
d1=sumD1[x>>2][y>>2]
d0=sumD0[x>>2][y>>2]
dirD=2
hvd1=(d1*hv0>hv1*d0) ? d1:hv1
hvd0=(d1*hv0>hv1*d0) ? d0:hv0
dir1[x][y]=(d1*hv0>hv1*d0) ? dirD:dirHV
dir2[x][y]=(d1*hv0>hv1*d0) ? dirHV:dirD
dirS[x][y]=(hvd1>2*hvd0) ? 1:((hvd1*2>9*hvd0) ? 2:0)
varTab[]={0, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4}
avgVar[x][y]=varTab[Clip3(0,15,(sumOfHV[x>>2][y >>2]*Ac)>>(3+BitDepthY))]。
transposeTable[]={0, 1, 0, 2, 2, 3, 1, 3}
transposeIdx[x][y]=transposeTable[dir1[x][y]*2+(dir2[x][y]>>1)]
filtIdx[x][y]=avgVar[x][y]
filtIdx[x][y]+=(((dir1[x][y]&0x1)<<1)+dirS[x][y])*5。
このプロセスの入力は、以下の通りである。
適応ループフィルタプロセスの前の再構成済みクロマピクチャサンプル配列recPicture、
フィルタリングされた再構成済みクロマピクチャサンプル配列alfPicture、
現在のピクチャの左上サンプルに関する現在のクロマコーディングツリーブロックの左上サンプルを指定するクロマ配置(xCtbC,yCtbC)。
ctbSizeC=CtbSizeY/SubWidthC。
hx=Clip3(0,pic_width_in_luma_samples/SubWidthC-1,xCtbC+x)
vy=y
以下の表2.4に示されているように、フィルタ入力サンプル位置オフセットr=0...4は、クロマサンプル位置yに応じて導出される。
sum=AlfCoeffC[0] * (recPicture[hx, vy+r3]+recPicture[hx, vy - r4])+
AlfCoeffC[1] * (recPicture[hx+1, vy+r1]+recPicture[hx-1, vy - r2])+
AlfCoeffC[2] * (recPicture[hx, vy+r1]+recPicture[hx, vy - r2])+
AlfCoeffC[3] * (recPicture[hx-1, vy+r1]+recPicture[hx+1, vy - r2])+
AlfCoeffC[4]*(recPicture[hx+2,vy]+recPicture[hx-2,vy])+
AlfCoeffC[5]*(recPicture[hx+1,vy]+recPicture[hx-1,vy])+
AlfCoeffC[6]*recPicture[hx,vy]
sum=(sum+64)>>7
alfPicture[xCtbC+x][yCtbC+y]=Clip3(0,(1<<BitDepthC)-1,sum)。
c12'=c12+2*c0+2*c1+2*c2+2*c3+2*c4+2*c5+2*c6+2*c7+2*c8
である。
8.8.5.1 概要
このプロセスの入力は、適応ループフィルタrecPictureLの前の再構成済みピクチャサンプル配列であり、ChromaArrayTypeが0に等しくないときには、配列recPictureCbおよびrecPictureCrである。
このプロセスの入力は、以下の通りである。
適応ループフィルタプロセスの前の再構成済みルーマピクチャサンプル配列recPicture、
- フィルタリングされた再構成済みルーマピクチャサンプル配列alfPictureL、
- 現在のピクチャの左上サンプルに関する現在のルーマコーディングツリーブロックの左上サンプルを指定するルーマ配置(xCtb,yCtb)。
AlfCtbFiltSetIdxY[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]が16より小さい場合、次が適用される:
i=AlfCtbFiltSetIdxY[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY] (1411)
f[j]=AlfFixFiltCoeff[AlfClassToFiltMap[i][filtIdx[x][y]]][j] (1412)
c[j]=2BitDepth (1413)
そうでなければ、(AlfCtbFiltSetIdxY[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]が16以上である場合、次が適用される:
i=slice_alf_aps_id_luma[AlfCtbFiltSetIdxY[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]-16] (1414)
f[j]=AlfCoeffL[i][filtIdx[x][y]][j] (1415)
c[j]=AlfClipL[i][filtIdx[x][y]][j] (1416)
transposeIndex[x][y]が1に等しい場合、次が適用される:
idx[]={9, 4, 10, 8, 1, 5, 11, 7, 3, 0, 2, 6} (1417)
そうでなければ、transposeIndex[x][y]が2に等しい場合、次が適用される:
idx[]={0, 3, 2, 1, 8, 7, 6, 5, 4, 9, 10, 11} (1418)
そうでなければ、transposeIndex[x][y]が3に等しい場合、次が適用される:
idx[]={9, 8, 10, 4, 3, 7, 11, 5, 1, 0, 2, 6} (1419)
そうでなければ、次が適用される。
idx[]={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11} (1420)
hx+i=Clip3(0, pic_width_in_luma_samples-1, xCtb+x+i) (1421)
vy+j=Clip3(0, pic_height_in_luma_samples-1, yCtb+y+j) (1422)
現在のコーディングツリーブロックの底部境界が、現在のピクチャの底部境界であり、pic_height_in_luma_samples-yCtb<=CtbSizeY-4である場合に、applyAlfLineBufBoundaryは0に等しくなるように設定される:
そうでなければ、applyAlfLineBufBoundaryは1に等しくなるように設定される。
curr=recPicture[hx][vy] (1423)
sum=f[idx[0]] * (Clip3(-c[idx[0]],c[idx[0]], recPicture[hx][vy+y3]-curr) +
Clip3(-c[idx[0]],c[idx[0]], recPicture[hx][vy-y3]-curr))+
f[idx[1]] * (Clip3(-c[idx[1]],c[idx[1]], recPicture[hx+1][vy+y2]-curr) +
Clip3(-c[idx[1]],c[idx[1]], recPicture[hx-1][vy-y2]-curr)) +
f[idx[2]] * (Clip3(-c[idx[2]],c[idx[2]], recPicture[hx][vy+y2]-curr) +
Clip3(-c[idx[2]],c[idx[2]], recPicture[hx][vy-y2]-curr)) +
f[idx[3]] * (Clip3(-c[idx[3]],c[idx[3]], recPicture[hx-1][vy+y2]-curr) +
Clip3(-c[idx[3]],c[idx[3]], recPicture[hx+1][vy-y2]-curr)) +
f[idx[4]] * (Clip3(-c[idx[4]],c[idx[4]], recPicture[hx+2][vy+y1]-curr) +
Clip3(-c[idx[4]],c[idx[4]], recPicture[hx-2][vy-y1]-curr)) +
f[idx[5]] * (Clip3(-c[idx[5]],c[idx[5]], recPicture[hx+1][vy+y1]-curr) +
Clip3(-c[idx[5]],c[idx[5]], recPicture[hx-1][vy-y1]-curr)) +
f[idx[6]] * (Clip3(-c[idx[6]],c[idx[6]], recPicture[hx][vy+y1]-curr) +
Clip3(-c[idx[6]],c[idx[6]], recPicture[hx][vy-y1]-curr))+(1424)
f[idx[7]] * (Clip3(-c[idx[7]],c[idx[7]], recPicture[hx-1][vy+y1]-curr) +
Clip3(-c[idx[7]],c[idx[7]], recPicture[hx+1][vy-y1]-curr)) +
f[idx[8]] * (Clip3(-c[idx[8]],c[idx[8]], recPicture[hx-2][vy+y1]-curr) +
Clip3(-c[idx[8]],c[idx[8]], recPicture[hx+2][vy-y1]-curr)) +
f[idx[9]] * (Clip3(-c[idx[9]],c[idx[9]], recPicture[hx+3][vy]-curr) +
Clip3(-c[idx[9]],c[idx[9]], recPicture[hx-3][vy]-curr)) +
f[idx[10]] * (Clip3(-c[idx[10]],c[idx[10]],recPicture[hx+2][vy]-curr) +
Clip3(-c[idx[10]],c[idx[10]],recPicture[hx-2][vy]-curr)) +
f[idx[11]] * (Clip3(-c[idx[11]],c[idx[11]],recPicture[hx+1][vy]-curr) +
Clip3(-c[idx[11]],c[idx[11]],recPicture[hx-1][vy]-curr))
sum=curr+((sum+64)>>7) (1425)
alfPictureL[xCtb+x][yCtb+y]=Clip3(0, (1<<BitDepth)-1, sum) (1426)
このプロセスの入力は、以下の通りである。
現在のピクチャの左上サンプルに関する現在のルーマコーディングツリーブロックの左上サンプルを指定するルーマ配置(xCtb,yCtb)、
適応ループフィルタプロセスの前の再構成済みルーマピクチャサンプル配列recPicture。
x,y=0..CtbSizeY-1として、分類フィルタインデックス配列filtIdx[x][y]、
- x,y=0..CtbSizeY-1として、転置インデックス配列transposeIdx[x][y]。
現在のコーディングツリーブロックの底部境界は、ピクチャの底部境界であり、pic_height_in_luma_samples-yCtb>CtbSizeY-4である。
現在のコーディングツリーブロックの底部境界は、ピクチャの底部境界ではない。
そうでなければ、y4が(CtbSizeY-4)に等しく、次の条件のうちの1つが真である場合に、minYは0に等しくなるように設定され、maxYは5に等しくなるように設定され、ac[x][y]は3に等しくなるように設定される。
現在のコーディングツリーブロックの底部境界は、ピクチャの底部境界であり、pic_height_in_luma_samples-yCtb>CtbSizeY-4である。
現在のコーディングツリーブロックの底部境界は、ピクチャの底部境界ではない。
- そうでなければ、minYは-2に等しくなるように設定され、maxYは5に等しくなるように設定され、ac[x][y]は2に等しくなるように設定される。
- 変数clipLeftPos、clipRightPos、clipTopPos、clipBottomPos、clipTopLeftFlag、およびclipBotRightFlagは、(xCtb, yCtb)および(x4, y4)を入力として節8.8.5.5で指定されているようなALF境界位置導出プロセスを呼び出すことによって導出される。
- i,j=-3..6に対して、ルーマサンプルの所与の配列recPictureの内側の対応するルーマサンプルの各々に対する配置(hx4+i, vy4+j)は、次のように導出される。
hx4+i=Clip3(0, pic_width_in_luma_samples-1, xCtb+x4+i) (1427)
vy4+j=Clip3(0, pic_height_in_luma_samples-1, yCtb+y4+j) (1428)
変数hx4+iおよびvy4+jは、(xCtb, yCtb)、(hx4+i, vy4+j)、0に等しくなるように設定されている変数isChroma、clipLeftPos、clipRightPos、clipTopPos、clipBottomPos、clipTopLeftFlag、およびclipBotRightFlagを入力として節8.8.5.6で指定されているようなALFサンプルパディングプロセスを呼び出すことによって修正される。
i,j=-2..5として、変数filtH[i][j]、filtV[i][j]、filtD0[i][j]、およびfiltD1[i][j]は、次のように導出される。
iおよびjが両方とも偶数であるか、またはiおよびjが両方とも偶数でない場合に、次が適用される。
filtH[i][j]=Abs((recPicture[hx4+i][vy4+j]<<1)-recPicture[hx4+ i-1][vy4 +j] -recPicture[hx4+i+1][vy4+j]) (1429)
filtV[i][j]=Abs((recPicture[hx4+i][vy4+j]<<1)-recPicture[hx4+i][vy4+j-1] -recPicture[hx4+i][vy4+j+1]) (1430)
filtD0[i][j]=Abs((recPicture[hx4+i][vy4+j]<<1)-recPicture[hx4+i-1][vy4+j-1]-recPicture[hx4+i+1][vy4+j+1]) (1431)
filtD1[i][j]=Abs((recPicture[hx4+i][vy4+j]<<1)-recPicture[hx4+i+1][vy4+j-1]-recPicture[hx4+i-1][vy4+j+1]) (1432)
そうでなければ、filtH[i][j]、filtV[i][j]、filtD0[i][j]、およびfiltD1[i][j]は0に等しくなるように設定される。
変数sumH[x][y]、sumV[x][y]、sumD0[x][y]、sumD1[x][y]、およびsumOfHV[x][y]は、次のように導出される。
sumH[x][y]=ΣiΣjfiltH[i][j]、i=-2..5, j=minY..maxY (1433)
sumV[x][y]=ΣiΣjfiltV[i][j]、i=-2..5, j=minY..maxY (1434)
sumD0[x][y]=ΣiΣjfiltD0[i][j]、i=-2..5, j=minY..maxY (1435)
sumD1[x][y]=ΣiΣjfiltD1[i][j]、i=-2..5, j=minY..maxY (1436)
sumOfHV[x][y]=sumH[x][y]+sumV[x][y] (1437)
1. x,y=0..CtbSizeY-1として、変数dir1[x][y]、dir2[x][y]、およびdirS[x][y]は、次のように導出される。
- 変数hv1、hv0、dirHVは、次のように導出される。
- sumV[x>>2][y>>2]がsumH[x>>2][y>>2]より大きい場合、次の式が適用される。
hv1=sumV[x>>2][y>>2] (1438)
hv0=sumH[x>>2][y>>2] (1439)
dirHV=1 (1440)
- そうでなければ、次が適用される。
hv1=sumH[x>>2][y>>2] (1441)
hv0=sumV[x>>2][y>>2] (1442)
dirHV=3 (1443)
- 変数d1、d0、dirDは、次のように導出される。
- sumD0[x>>2][y>>2]がsumD1[x>>2][y>>2]より大きい場合、次が適用される。
d1=sumD0[x>>2][y>>2] (1444)
d0=sumD1[x>>2][y>>2] (1445)
dirD=0 (1446)
- そうでなければ、次が適用される。
d1=sumD1[x>>2][y>>2] (1447)
d0=sumD0[x>>2][y>>2] (1448)
dirD=2 (1449)
- 変数hvd1、hvd0は、次のように導出される。
hvd1=(d1*hv0 > hv1*d0) ? d1:hv1 (1450)
hvd0=(d1*hv0 > hv1*d0) ? d0:hv0 (1451)
- 変数dirS[x][y]、dir1[x][y]、およびdir2[x][y]は、次のように導出される。
dir1[x][y]=(d1*hv0>hv1*d0) ? dirD:dirHV (1452)
dir2[x][y]=(d1*hv0>hv1*d0) ? dirHV:dirD (1453)
dirS[x][y]=(hvd1*2 > 9*hvd0) ? 2:((hvd1 > 2*hvd0) ? 1:0) (1454)
x,y=0..CtbSizeY-1として、変数avgVar[x][y]は、次のように導出される。
varTab[]={0, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4} (1455)
avgVar[x][y]=varTab[Clip3(0, 15, (sumOfHV[x>>2][y>>2] * (1456)
ac[x>>2][y>>2])>>(BitDepth-1))]
transposeTable[]={0, 1, 0, 2, 2, 3, 1, 3}
transposeIdx[x][y]=transposeTable[dir1[x][y]*2+(dir2[x][y]>>1)]
filtIdx[x][y]=avgVar[x][y]
dirS[x][y]が0に等しくないときに、filtIdx[x][y]は次のように修正される。
filtIdx[x][y] +=(((dir1[x][y] & 0x1)<<1)+dirS[x][y]) * 5 (1457)
このプロセスの入力は、以下の通りである。
- 適応ループフィルタプロセスの前の再構成済みクロマピクチャサンプル配列recPicture、
- フィルタリングされた再構成済みクロマピクチャサンプル配列alfPicture、
- 現在のピクチャの左上サンプルに関する現在のクロマコーディングツリーブロックの左上サンプルを指定するクロマ配置(xCtbC,yCtbC)、
- 代替的クロマフィルタインデックスaltIdx。
ctbWidthC=CtbSizeY/SubWidthC (1458)
ctbHeightC=CtbSizeY/SubHeightC (1459)
- i,j=-2..2に対して、クロマサンプルの所与の配列recPictureの内側の対応するクロマサンプル(x,y)の各々に対する配置(hx+i, vy+j)は、次のように導出される。
hx+i=Clip3(0, pic_width_in_luma_samples / SubWidthC-1, xCtbC+x+i) (1460)
vy+j=Clip3(0, pic_height_in_luma_samples / SubHeightC-1, yCtbC+y+j) (1461)
- 変数clipLeftPos、clipRightPos、clipTopPos、clipBottomPos、clipTopLeftFlag、およびclipBotRightFlagは、(xCtbC*SubWidthC, yCtbC*SubHeightC)および(x*SubWidthC, y*SubHeightC)を入力として節8.8.5.5で指定されているようなALF境界位置導出プロセスを呼び出すことによって導出される。
- 変数hx+iおよびvy+jは、(xCtb, yCtb)、(hx+i, vy+j)、1に等しくなるように設定されている変数isChroma、clipLeftPos、clipRightPos、clipTopPos、clipBottomPos、clipTopLeftFlag、およびclipBotRightFlagを入力として節8.8.5.6で指定されているようなALFサンプルパディングプロセスを呼び出すことによって修正される。
- 変数applyAlfLineBufBoundaryは、次のように導出される。
- 現在のコーディングツリーブロックの底部境界が、現在のピクチャの底部境界であり、pic_height_in_luma_samples-(yCtbC*SubHeightC)<CtbSizeY-4である場合に、applyAlfLineBufBoundaryは0に等しくなるように設定される。
- そうでなければ、applyAlfLineBufBoundaryは1に等しくなるように設定される。
- 垂直サンプル位置オフセットy1およびy2は、垂直クロマサンプル位置yおよびapplyAlfLineBufBoundaryに従って表43において指定されている。
- 変数currは、次のように導出される。
curr=recPicture[hx][vy] (1462)
- クロマフィルタ係数f[j]の配列およびクロマクリッピング値c[j]の配列は、j=0..5として、次のように導出される。
f[j]=AlfCoeffC[slice_alf_aps_id_chroma][altIdx][j] (1463)
c[j]=AlfClipC[slice_alf_aps_id_chroma][altIdx][j] (1464)
- 変数sumは、次のように導出される。
sum=f[0] * (Clip3(-c[0],c[0],recPicture[hx][vy+y2]-curr) +
Clip3(-c[0],c[0],recPicture[hx][vy-y2]-curr)) +
f[1] * (Clip3(-c[1],c[1],recPicture[hx+1][vy+y1]-curr) +
Clip3(-c[1],c[1],recPicture[hx-1][vy-y1]-curr)) +
f[2] * (Clip3(-c[2],c[2],recPicture[hx][vy+y1]-curr) +
Clip3(-c[2],c[2],recPicture[hx][vy-y1]-curr))+ (1465)
f[3] * (Clip3(-c[3],c[3],recPicture[hx-1][vy+y1]-curr) +
Clip3(-c[3],c[3],recPicture[hx+1][vy-y1]-curr)) +
f[4] * (Clip3(-c[4],c[4],recPicture[hx+2][vy]-curr) +
Clip3(-c[4],c[4],recPicture[hx-2][vy]-curr)) +
f[5] * (Clip3(-c[5],c[5],recPicture[hx+1][vy]-curr) +
Clip3(-c[5],c[5],recPicture[hx-1][vy]-curr))
sum=curr+((sum+64)>>7) (1466)
- 修正されフィルタリングされた再構成済みクロマピクチャサンプルalfPicture[xCtbC+x][yCtbC+y]は、次のように導出される。
alfPicture[xCtbC+x][yCtbC+y]=Clip3(0, (1<<BitDepth)-1, sum) (1467)
このプロセスの入力は、以下の通りである。
- 現在のピクチャの左上サンプルに関する現在のルーマコーディングツリーブロックの左上サンプルを指定するルーマ配置(xCtb,yCtb)、
- 現在のルーマコーディングツリーブロックの左上サンプルに関する現在のサンプルを指定するルーマ配置(x,y)。
- 左垂直境界位置clipLeftPos、
- 右垂直境界位置clipRightPos、
- 上水平境界位置clipTopPos、
- 下水平境界位置clipBottomPos、
- 左上境界フラグclipTopLeftFlag、
- 右下境界フラグclipBotRightFlag。
- y-(CtbSizeY-4)が0以上である場合、変数clipTopPosはyCtb+CtbSizeY-4に等しくなるように設定される。
- そうでなければ、VirtualBoundariesDisabledFlagが1に等しく、任意のn=0..VirtualBoundariesNumHor-1についてyCtb+y-VirtualBoundariesPosY[n]が0以上、3未満である場合、次が適用される:
clipTopPos=VirtualBoundariesPosY[n] (1468)
- そうでなければ、yが3より小さく、次の条件のうちの1つまたは複数が真である場合、変数clipTopPosはyCtbに等しくなるように設定される:
- 現在のコーディングツリーブロックの頂部境界は、タイルの頂部境界であり、loop_filter_across_tiles_enabled_flagは0に等しい。
- 現在のコーディングツリーブロックの頂部境界は、スライスの頂部境界であり、loop_filter_across_slices_enabled_flagは0に等しい。
- 現在のコーディングツリーブロックの頂部境界は、サブピクチャの頂部境界であり、loop_filter_across_subpic_enabled_flag[SubPicIdx]は0に等しい。
- VirtualBoundariesDisabledFlagが1に等しく、任意のn=0..VirtualBoundariesNumHor-1についてVirtualBoundariesPosY[n]がpic_height_in_luma_samples-1または0に等しくなく、VirtualBoundariesPosY[n]-yCtb-yが0より大きく5より小さい場合、次が適用される:
clipBottomPos=VirtualBoundariesPosY[n] (1469)
- そうでなければ、CtbSizeY-4-yが0より大きく、5より小さい場合、変数clipBottomPosはyCtb+CtbSizeY-4に等しくなるように設定される。
- そうでなければ、CtbSizeY-yが5より小さく、次の条件のうちの1つまたは複数が真である場合、変数clipBottomPosはyCtb+CtbSizeYに等しくなるように設定される:
- 現在のコーディングツリーブロックの底部境界は、タイルの底部境界であり、loop_filter_across_tiles_enabled_flagは0に等しい。
- 現在のコーディングツリーブロックの底部境界は、スライスの底部境界であり、loop_filter_across_slices_enabled_flagは0に等しい。
- 現在のコーディングツリーブロックの底部境界は、サブピクチャの底部境界であり、loop_filter_across_subpic_enabled_flag[SubPicIdx]は0に等しい。
- VirtualBoundariesDisabledFlagが1に等しく、任意のn=0..VirtualBoundariesNumVer-1についてxCtb+x-VirtualBoundariesPosX[n]が0以上、3未満である場合、次が適用される:
clipLeftPos=VirtualBoundariesPosX[n] (1470)
- そうでなければ、xが3より小さく、次の条件のうちの1つまたは複数が真である場合、変数clipLeftPosはxCtbに等しくなるように設定される:
- 現在のコーディングツリーブロックの左境界は、タイルの左境界であり、loop_filter_across_tiles_enabled_flagは0に等しい。
- 現在のコーディングツリーブロックの左境界は、スライスの左境界であり、loop_filter_across_slices_enabled_flagは0に等しい。
- 現在のコーディングツリーブロックの左境界は、サブピクチャの左境界であり、loop_filter_across_subpic_enabled_flag[SubPicIdx]は0に等しい。
VirtualBoundariesDisabledFlagが1に等しく、任意のn=0..VirtualBoundariesNumVer-1についてVirtualBoundariesPosX[n]-xCtb-xが0より大きく、5より小さい場合、次が適用される:
clipRightPos=VirtualBoundariesPosX[n] (1471)
そうでなければ、CtbSizeY-xが5より小さく、次の条件のうちの1つまたは複数が真である場合、変数clipRightPosはxCtb+CtbSizeYに等しくなるように設定される:
現在のコーディングツリーブロックの右境界は、タイルの右境界であり、loop_filter_across_tiless_enabled_flagは0に等しい。
現在のコーディングツリーブロックの右境界は、スライスの右境界であり、loop_filter_across_slices_enabled_flagは0に等しい。
現在のコーディングツリーブロックの右境界は、サブピクチャの右境界であり、loop_filter_across_subpic_enabled_flag[SubPicIdx]は0に等しい。
ルーマ位置(xCtb,yCtb)をカバーするコーディングツリーブロックおよびルーマ位置(xCtb-CtbSizeY,yCtb-CtbSizeY)をカバーするコーディングツリーブロックが異なるスライスに属し、loop_filter_across_slices_enabled_flagが0に等しい場合、clipTopLeftFlagは1に等しくなるように設定される。
ルーマ位置(xCtb,yCtb)をカバーするコーディングツリーブロックおよびルーマ位置(xCtb+CtbSizeY,yCtb+CtbSizeY)をカバーするコーディングツリーブロックが異なるスライスに属し、loop_filter_across_slices_enabled_flagが0に等しい場合、clipBotRightFlagは1に等しくなるように設定される。
このプロセスの入力は、以下の通りである。
現在のピクチャの左上サンプルに関する現在のルーマコーディングツリーブロックの左上サンプルを指定するルーマ配置(xCtb,yCtb)、
現在のピクチャの左上サンプルに関する隣接するサンプルを指定するルーマ配置(x,y)、
色成分がクロマ成分であるか否かを指定するフラグisChroma、
左垂直境界位置clipLeftPos、
右垂直境界位置clipRightPos、
上水平境界位置clipTopPos、
下水平境界位置clipBottomPos、
左上境界フラグclipTopLeftFlag、
右下境界フラグclipBotRightFlag。
現在のピクチャの左上サンプルに関する隣接するサンプルを指定する修正済みルーマ配置(x,y)
picWidth=isChroma ? pic_width_in_luma_samples / SubWidthC : pic_width_in_luma_samples (1472)
picHeight=isChroma ? pic_height_in_luma_samples / SubHeightC : pic_height_in_luma_samples (1473)
xCtbCur=isChroma ? xCtb / SubWidthC : xCtb (1474)
yCtbCur=isChroma ? yCtb / SubHeightC : yCtb (1475)
ctbSizeHor=isChroma ? CtbSizeY / SubWidthC : CtbSizeY (1476)
ctbSizeVer=isChroma ? CtbSizeY / SubHeightC : CtbSizeY (1477)
topBryPos=isChroma ? clipTopPos / SubHeightC : clipTopPos (1478)
botBryPos=isChroma ? clipBottomPos / SubHeightC : clipBottomPos (1479)
leftBryPos=isChroma ? clipLeftPos / SubWidthC : clipLeftPos (1480)
rightBryPos=isChroma ? clipRightPos / SubWidthC : clipRightPos (1481)
topBryPosが0以上であるときに、次が適用される:
y=Clip3(topBryPos, picHeight-1, y) (1482)
botBryPosが0以上であるときに、次が適用される:
y=Clip3(0, botBryPos-1, y) (1483)
leftBryPosが0以上であるときに、次が適用される:
x=Clip3(leftBryPos, picWidth-1, x) (1484)
rightBryPosが0以上であるときに、次が適用される:
x=Clip3(0, rightBryPos-1, x) (1485)
(x, y)は、次の条件のうちのすべてが真である場合に、(xCtbCur, y)に等しくなるように設定される:
clipTopLeftFlagは真に等しい
topBryPosは0より小さく、leftBryPosは0より小さい
xはxCtbCurより小さく、yはyCtbCurより小さい
(x,y)は、次の条件のうちのすべてが真である場合に、(xCtbCur+CtbSizeHor-1, y)に等しくなるように設定される:
clipBotRightFlagは真に等しい
botBryPosは0より小さく、rightBryPosは0より小さい
xはxCtbCur+CtbSizeHor-1より大きく、yはyCtbCur+CtbSizeVer-1より大きい。
1. sum=curr+((sum+64)>>alfShiftY). (1425)
1. sum=curr+((sum+roundY)>>alfShiftY) (1425)
S2501:ピクチャのブロックに対する再構成済みサンプル値を取得する。
- ルーマ(Y)のみ(モノクロ)。
- ルーマおよび2つのクロマ(YCbCrまたはYCgCo)。
- 緑色、青色、および赤色(GBR、RGBとしても知られている)。
- 他の未指定のモノクロまたは3刺激カラーサンプリングを表す配列(たとえば、YZX、XYZとしても知られている)。
- 変数currは、次のように導出される。
curr=recPicture[hx][vy]
sum=f[idx[0]]*(Clip3(-c[idx[0]],c[idx[0]], recPicture[hx][vy+y3]-curr)+
Clip3(-c[idx[0]],c[idx[0]], recPicture[hx][vy-y3]-curr))+
f[idx[1]]*(Clip3(-c[idx[1]],c[idx[1]], recPicture[hx+1][vy+y2]-curr) +
Clip3(-c[idx[1]],c[idx[1]], recPicture[hx-1][vy-y2]-curr))+
f[idx[2]]*(Clip3(-c[idx[2]],c[idx[2]], recPicture[hx][vy+y2]-curr) +
Clip3(-c[idx[2]],c[idx[2]], recPicture[hx][vy-y2]-curr))+
f[idx[3]]*(Clip3(-c[idx[3]],c[idx[3]], recPicture[hx-1][vy+y2]-curr) +
Clip3(-c[idx[3]],c[idx[3]], recPicture[hx+1][vy-y2]-curr))+
f[idx[4]]*(Clip3(-c[idx[4]],c[idx[4]], recPicture[hx+2][vy+y1]-curr) +
Clip3(-c[idx[4]],c[idx[4]], recPicture[hx-2][vy-y1]-curr))+
f[idx[5]]*(Clip3(-c[idx[5]],c[idx[5]], recPicture[hx+1][vy+y1]-curr) +
Clip3(-c[idx[5]],c[idx[5]], recPicture[hx-1][vy-y1]-curr))+
f[idx[6]]*(Clip3(-c[idx[6]],c[idx[6]], recPicture[hx][vy+y1]-curr) +
Clip3(-c[idx[6]],c[idx[6]], recPicture[hx][vy-y1]-curr))+
f[idx[7]]*(Clip3(-c[idx[7]],c[idx[7]], recPicture[hx-1][vy+y1]-curr) +
Clip3(-c[idx[7]],c[idx[7]], recPicture[hx+1][vy-y1]-curr))+
f[idx[8]]*(Clip3(-c[idx[8]],c[idx[8]], recPicture[hx-2][vy+y1]-curr) +
Clip3(-c[idx[8]],c[idx[8]], recPicture[hx+2][vy-y1]-curr))+
f[idx[9]]*(Clip3(-c[idx[9]],c[idx[9]], recPicture[hx+3][vy]-curr) +
Clip3(-c[idx[9]],c[idx[9]], recPicture[hx-3][vy]-curr))+
f[idx[10]]*(Clip3(-c[idx[10]],c[idx[10]], recPicture[hx+2][vy]-curr) +
Clip3(-c[idx[10]],c[idx[10]], recPicture[hx-2][vy]-curr))+
f[idx[11]]*(Clip3(-c[idx[11]],c[idx[11]], recPicture[hx+1][vy]-curr) +
Clip3(-c[idx[11]],c[idx[11]], recPicture[hx-1][vy]-curr))
- 変数currは、次のように導出される。
curr=recPicture[hx][vy]
- クロマフィルタ係数f[j]の配列およびクロマクリッピング値c[j]の配列は、j=0..5として、次のように導出される。
f[j]=AlfCoeffC[slice_alf_aps_id_chroma][altIdx][j]
c[j]=AlfClipC[slice_alf_aps_id_chroma][altIdx][j]
- 変数sumは、次のように導出される。
sum=f[0] * (Clip3(-c[0],c[0],recPicture[hx][vy+y2]-curr)+
Clip3(-c[0],c[0],recPicture[hx][vy-y2]-curr)) +
f[1] * (Clip3(-c[1],c[1],recPicture[hx+1][vy+y1]-curr) +
Clip3(-c[1],c[1],recPicture[hx-1][vy-y1]-curr)) +
f[2] * (Clip3(-c[2],c[2],recPicture[hx][vy+y1]-curr) +
Clip3(-c[2],c[2],recPicture[hx][vy-y1]-curr))+
f[3] * (Clip3(-c[3],c[3],recPicture[hx-1][vy+y1]-curr) +
Clip3(-c[3],c[3],recPicture[hx+1][vy-y1]-curr)) +
f[4] * (Clip3(-c[4],c[4],recPicture[hx+2][vy]-curr) +
Clip3(-c[4],c[4],recPicture[hx-2][vy]-curr)) +
f[5] * (Clip3(-c[5],c[5],recPicture[hx+1][vy]-curr) +
Clip3(-c[5],c[5],recPicture[hx-1][vy]-curr))
y==CtbSizeY-t-1、またはy==CtbSizeY-t、またはy==ctbHeightC-t、またはy==ctbHeightC-t-1、ただし、yはサンプルの垂直位置であり、CtbSizeYはコーディングツリーブロック、CTB、のサイズであり、ctbHeightCはCTBの高さであり、tは整数値である。いくつかの例では、tは2、3、4、5、6、などである。
y==CtbSizeY-t-1、またはy==CtbSizeY-t、またはy==ctbHeightC-t、またはy==ctbHeightC-t-1、ただし、yはサンプルの垂直位置であり、CtbSizeYはコーディングツリーブロック、CTB、のサイズであり、ctbHeightCはCTBの高さであり、tは整数値である。
このプロセスの入力は、以下の通りである。
- 適応ループフィルタリングプロセスの前の再構成済みルーマピクチャサンプル配列recPicture、
- フィルタリングされた再構成済みルーマピクチャサンプル配列alfPictureL、
- 現在のピクチャの左上サンプルに関する現在のルーマコーディングツリーブロックの左上サンプルを指定するルーマ配置(xCtb,yCtb)。
- filtIdx[x][y]によって指定されたフィルタに対応するルーマフィルタ係数f[j]の配列およびルーマクリッピング値c[j]の配列は、j=0..11として、次のように導出される。
- AlfCtbFiltSetIdxY[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]が16より小さい場合、次が適用される:
i=AlfCtbFiltSetIdxY[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]
f[j]=AlfFixFiltCoeff[AlfClassToFiltMap[i][filtIdx[x][y]]][j]
c[j]=2BitDepth
- そうでなければ、(AlfCtbFiltSetIdxY[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]が16以上である場合、次が適用される:
i=sh_alf_aps_id_luma[AlfCtbFiltSetIdxY[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]-16]
f[j]=AlfCoeffL[i][filtIdx[x][y]][j]
c[j]=AlfClipL[i][filtIdx[x][y]][j]
- ルーマフィルタ係数およびクリッピング値インデックスidxは、transposeIdx[x][y]に応じて次のように導出される。
- transposeIdx[x][y]が1に等しい場合、次が適用される:
idx[]={9, 4, 10, 8, 1, 5, 11, 7, 3, 0, 2, 6}
- そうでなければ、transposeIdx[x][y]が2に等しい場合、次が適用される:
idx[]={0, 3, 2, 1, 8, 7, 6, 5, 4, 9, 10, 11}
- そうでなければ、transposeIdx[x][y]が3に等しい場合、次が適用される:
idx[]={9, 8, 10, 4, 3, 7, 11, 5, 1, 0, 2, 6}
- そうでなければ、次が適用される。
idx[]={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
- i,j=-3..3に対して、ルーマサンプルの所与の配列recPictureの内側の対応するルーマサンプル(x,y)の各々に対する配置(hx+i, vy+j)は、次のように導出される。
hx+i=Clip3(0, pps_pic_width_in_luma_samples-1, xCtb+x+i)
vy+j=Clip3(0, pps_pic_height_in_luma_samples-1, yCtb+y+j)
- 変数clipLeftPos、clipRightPos、clipTopPos、clipBottomPos、clipTopLeftFlag、およびclipBotRightFlagは、(xCtb, yCtb)、(x, y)、および4に等しくなるように設定されている変数vbOffsetを入力としてALF境界位置導出プロセスを呼び出すことによって導出される。
- 変数hx+iおよびvy+jは、(xCtb, yCtb)、(hx+i, vy+j)、0に等しくなるように設定されている変数isChroma、clipLeftPos、clipRightPos、clipTopPos、clipBottomPos、clipTopLeftFlag、およびclipBotRightFlagを入力としてALFサンプルパディングプロセスを呼び出すことによって修正される。
- 変数applyAlfLineBufBoundaryisは、次のように導出される。
- 現在のコーディングツリーブロックの底部境界が、現在のピクチャの底部境界であり、pps_pic_height_in_luma_samples-yCtb <= CtbSizeY-4である場合に、applyAlfLineBufBoundaryは0に等しくなるように設定される:
- そうでなければ、applyAlfLineBufBoundaryは1に等しくなるように設定される。
- 垂直サンプル位置オフセットy1、y2、y3、および変数alfShiftYは、垂直ルーマサンプル位置yおよびapplyAlfLineBufBoundaryに従って表45において指定されている。
- 変数currは、次のように導出される。
curr=recPicture[hx][vy]
- 変数sumは、次のように導出される。
sum=f[idx[0]]*(Clip3(-c[idx[0]],c[idx[0]], recPicture[hx][vy+y3]-curr)+
Clip3(-c[idx[0]],c[idx[0]], recPicture[hx][vy-y3]-curr))+
f[idx[1]]*(Clip3(-c[idx[1]],c[idx[1]], recPicture[hx+1][vy+y2]-curr) +
Clip3(-c[idx[1]],c[idx[1]], recPicture[hx-1][vy-y2]-curr))+
f[idx[2]]*(Clip3(-c[idx[2]],c[idx[2]], recPicture[hx][vy+y2]-curr) +
Clip3(-c[idx[2]],c[idx[2]], recPicture[hx][vy-y2]-curr))+
f[idx[3]]*(Clip3(-c[idx[3]],c[idx[3]], recPicture[hx-1][vy+y2]-curr) +
Clip3(-c[idx[3]],c[idx[3]], recPicture[hx+1][vy-y2]-curr))+
f[idx[4]]*(Clip3(-c[idx[4]],c[idx[4]], recPicture[hx+2][vy+y1]-curr) +
Clip3(-c[idx[4]],c[idx[4]], recPicture[hx-2][vy-y1]-curr))+
f[idx[5]]*(Clip3(-c[idx[5]],c[idx[5]], recPicture[hx+1][vy+y1]-curr) +
Clip3(-c[idx[5]],c[idx[5]], recPicture[hx-1][vy-y1]-curr))+
f[idx[6]]*(Clip3(-c[idx[6]],c[idx[6]], recPicture[hx][vy+y1]-curr) +
Clip3(-c[idx[6]],c[idx[6]], recPicture[hx][vy-y1]-curr))+
f[idx[7]]*(Clip3(-c[idx[7]],c[idx[7]], recPicture[hx-1][vy+y1]-curr) +
Clip3(-c[idx[7]],c[idx[7]], recPicture[hx+1][vy-y1]-curr))+
f[idx[8]]*(Clip3(-c[idx[8]],c[idx[8]], recPicture[hx-2][vy+y1]-curr) +
Clip3(-c[idx[8]],c[idx[8]], recPicture[hx+2][vy-y1]-curr))+
f[idx[9]]*(Clip3(-c[idx[9]],c[idx[9]], recPicture[hx+3][vy]-curr) +
Clip3(-c[idx[9]],c[idx[9]], recPicture[hx-3][vy]-curr))+
f[idx[10]]*(Clip3(-c[idx[10]],c[idx[10]], recPicture[hx+2][vy]-curr) +
Clip3(-c[idx[10]],c[idx[10]], recPicture[hx-2][vy]-curr))+
f[idx[11]]*(Clip3(-c[idx[11]],c[idx[11]], recPicture[hx+1][vy]-curr) +
Clip3(-c[idx[11]],c[idx[11]], recPicture[hx-1][vy]-curr))
sum=curr+((sum+(1<<(alfShiftY-1)))>>alfShiftY)
- 修正されフィルタリングされた再構成済みルーマピクチャサンプルalfPictureL[xCtb+x][yCtb+y]は、次のように導出される。
alfPictureL[xCtb+x][yCtb+y]=Clip3(0, (1<<BitDepth)-1, sum)
このプロセスの入力は、以下の通りである。
- 適応ループフィルタリングプロセスの前の再構成済みクロマピクチャサンプル配列recPicture、
- フィルタリングされた再構成済みクロマピクチャサンプル配列alfPicture、
- 現在のピクチャの左上サンプルに関する現在のクロマコーディングツリーブロックの左上サンプルを指定するクロマ配置(xCtbC,yCtbC)、
- 代替的クロマフィルタインデックスaltIdx。
ctbWidthC=CtbSizeY/SubWidthC
ctbHeightC=CtbSizeY/SubHeightC
フィルタリングされた再構成済みクロマサンプルalfPicture[xCtbC+x][yCtbC+y]の導出のために、現在のクロマコーディングツリーブロックrecPicture[xCtbC+x][yCtbC+y]の内側の各再構成済みクロマサンプルは、x=0..ctbWidthC-1、y=0..ctbHeightC-1として次のようにフィルタリングされる。
- i,j=-2..2に対して、クロマサンプルの所与の配列recPictureの内側の対応するクロマサンプル(x,y)の各々に対する配置(hx+i, vy+j)は、次のように導出される。
hx+i=Clip3(0, pps_pic_width_in_luma_samples / SubWidthC-1, xCtbC+x+i)
vy+j=Clip3(0, pps_pic_height_in_luma_samples / SubHeightC-1, yCtbC+y+j)
- 変数clipLeftPos、clipRightPos、clipTopPos、clipBottomPos、clipTopLeftFlag、およびclipBotRightFlagは、(xCtbC * SubWidthC, yCtbC * SubHeightC)、(x * SubWidthC, y *SubHeightC)、および2*SubHeightCに等しくなるように設定されている変数vbOffsetを入力としてALF境界位置導出プロセスを呼び出すことによって導出される。
- 変数hx+iおよびvy+jは、(xCtbC*SubWidthC, yCtbC*SubHeightC), (hx+i, vy+j)、1に等しくなるように設定されている変数isChroma、clipLeftPos、clipRightPos、clipTopPos、clipBottomPos、clipTopLeftFlag、およびclipBotRightFlagを入力としてALFサンプルパディングプロセスを呼び出すことによって修正される。
- 変数applyAlfLineBufBoundaryは、次のように導出される。
- 現在のコーディングツリーブロックの底部境界が、現在のピクチャの底部境界であり、pps_pic_height_in_luma_samples-(yCtbC*SubHeightC)<CtbSizeY-4である場合に、applyAlfLineBufBoundaryは0に等しくなるように設定される。
- そうでなければ、applyAlfLineBufBoundaryは1に等しくなるように設定される。
- 垂直サンプル位置オフセットy1、y2、および変数alfShiftCは、垂直クロマサンプル位置yおよびapplyAlfLineBufBoundaryに従って表46において指定されている。
- 変数currは、次のように導出される。
curr=recPicture[hx][vy]
- クロマフィルタ係数f[j]の配列およびクロマクリッピング値c[j]の配列は、j=0..5として、次のように導出される。
f[j]=AlfCoeffC[sh_alf_aps_id_chroma][altIdx][j]
c[j]=AlfClipC[sh_alf_aps_id_chroma][altIdx][j]
- 変数sumは、次のように導出される。
sum=f[0] * (Clip3(-c[0],c[0],recPicture[hx][vy+y2]-curr)+
Clip3(-c[0],c[0],recPicture[hx][vy-y2]-curr)) +
f[1] * (Clip3(-c[1],c[1],recPicture[hx+1][vy+y1]-curr) +
Clip3(-c[1],c[1],recPicture[hx-1][vy-y1]-curr)) +
f[2] * (Clip3(-c[2],c[2],recPicture[hx][vy+y1]-curr) +
Clip3(-c[2],c[2],recPicture[hx][vy-y1]-curr))+
f[3] * (Clip3(-c[3],c[3],recPicture[hx-1][vy+y1]-curr) +
Clip3(-c[3],c[3],recPicture[hx+1][vy-y1]-curr)) +
f[4] * (Clip3(-c[4],c[4],recPicture[hx+2][vy]-curr) +
Clip3(-c[4],c[4],recPicture[hx-2][vy]-curr)) +
f[5] * (Clip3(-c[5],c[5],recPicture[hx+1][vy]-curr) +
Clip3(-c[5],c[5],recPicture[hx-1][vy]-curr))
sum=curr+((sum+(1<<(alfShiftC-1)))>>alfShiftC)
- 修正されフィルタリングされた再構成済みクロマピクチャサンプルalfPicture[xCtbC+x][yCtbC+y]は、次のように導出される。
alfPicture[xCtbC+x][yCtbC+y]=Clip3(0, (1<<BitDepth)-1, sum)
y==CtbSizeY-t-1、またはy==CtbSizeY-t、またはy==ctbHeightC-t、またはy==ctbHeightC-t-1、ただし、yはサンプルの垂直位置であり、CtbSizeYはコーディングツリーブロック、CTB、のサイズであり、ctbHeightCはCTBの高さであり、tは整数値である。
ラインMおよびHについてはc3'=c3+c0
ラインLおよびIについてはc6'=c6+c1
c7'=c7+c2
c8'=c3+c8+c0
ラインJおよびKについて:
c9'=c9+c8+c3+c0
c10'=c10+c7+c2
c11'=c1+c6+c11+c4
c12'=c12+2*c5
その一方で、gd2がgd1より大きい場合、図12cの部分図aに描かれているように、修正済みフィルタリングが次のように実行される。
ラインMおよびHについてはc1'=c1+c0
ラインLおよびIについてはc4'=c1+c4+c0
c5'=c5+c2
c6'=c6+c3
ラインJおよびKについて:
c9'=c9+c4+c1+c0
c10'=c10+c5+c2
c11'=c8+c7+c6+c3+c11
c12'=c12+2*c7
所与のフィルタが表1に与えられているように変換される場合、上記の解決方法はすべてそれでも使用することができる。上記の解決方法における式は、変換が適用されない場合に与えられる。変換済みフィルタについては、式中の係数は、それぞれ、式17、18、19に基づき置き換えることができる。
ラインMおよびLについて、((2*(abs (c0)+ abs (c1) +abs (c2)+ abs (c3))>(T*(2*(abs(c4)+abs(c5))+abs(c6))))である場合、ALFフィルタリングは、ラインMおよびLに対して無効にされる。
1. Nが所定の閾値より小さい場合、すなわちthrである、
2. そして、transformation_Xが、ビットストリームにおいて事前決定されているか、または示されている変換のセットの中にある場合。
図13は、クロマサンプルに対するラインバッファ要件を示している。デブロッキングは、2つのサンプルしか使用せず、最大1つのサンプルを修正するときに、クロマALFラインバッファ要件は、6.25ラインまで下がる。クロマサンプルに対しては明示的なブロック分類が実行されないので、フィルタリングのみが仮想境界(VB)のところで修正されなければならない。図14では、パディングを使用すること(解決方法1)、または破棄された係数を中心係数に加えること(解決方法2)のいずれかによって生成されたフィルタの歪んだバージョンを示す、クロマに対する修正済みALFフィルタを参照している。
図15は、デブロッキングフィルタがラインバッファの6つのラインを使用するときのALFラインバッファ要件を示している。したがって、仮想境界は、CTU境界より6ライン上にある。この場合、全ループフィルタラインバッファ要件は、15.25ラインに増える。
ラインG、Hは、ブロックC、D、E、Fからのブロック分類決定を再利用する。
ラインI、Jは、ブロックK、L、M、Nからのブロック分類決定を使用する。
フィルタの切り捨てられたバージョン(スライド8および9)は、ラインF、G、H、I、J、Kをフィルタリングするために使用される。
((仮想境界サイズ)/4)-4。実際のフィルタリングそれ自体については、図12a、図12b、および図12cで説明されているフィルタの歪んだバージョンが使用され得る。図17を参照すると、仮想境界がCTU境界より6ライン上にあるときに、解決方法は「グリッドシフト」アプローチを使用する。
ALFフィルタグリッドは、所与の4×4ブロック分類ウィンドウが所与の仮想境界を横切らないことを確実にするように、Y軸においてライン2つ分シフトされる。
一般に、仮想境界サイズが4の倍数(ALFブロック分類サイズ)でないときに、グリッドは、Y軸上で次の値によってシフトされ得る。
((仮想境界サイズ)/4)-4。
フレーム境界において、
頂部フレーム境界ラインA'、B'では、第3のラインから始まる4×4ブロックのブロック分類決定を再利用する。
同様に、底部フレーム境界の最後の2つのラインについては、ブロック分類は、すぐ上の4×4ブロック分類ウィンドウからの決定を再利用する。
ピクチャのサンプル値をフィルタリングする方法であって、ピクチャは第1のブロックと第2のブロックとを備え、第1のブロックおよび第2のブロックはブロック境界において互いに隣接し、ピクチャは、n行およびm列に配置構成されている少なくともn×mサンプルp(i,j)を含み、iは、1からnまでの値を取る行インデックスであり、jは、1からmまでの値を取る列インデックスであり、iが1からkまでの値を取るサンプルp(i,j)は、第1のブロックに属し、iがk+1からnまでの値を取るサンプルは、第2のブロックに属し、kは、nより小さい整数であり、
この方法は、kより小さい整数tおよび1からmまでの範囲内の整数jにより、
iを1からk-t-1の範内の整数として、サンプルp(i,j)の値にフィルタを適用することによってフィルタリング済みサンプル値を生成することであって、フィルタは、フィルタサポートサンプルのセットによってサポートされ、フィルタサポートサンプルのセットは、サンプルp(i,j)および1つまたは複数のさらなるサンプルを含み、フィルタサポートサンプルのセットは、i'をk-t-1より大きい行インデックスとする任意のサンプルp(i',j')を含まない、生成すること、および/または
iをk-tからkの範内の整数として、サンプルp(i,j)の値にフィルタを適用することによってフィルタリング済みサンプル値を生成することであって、フィルタは、フィルタサポートサンプルのセットによってサポートされ、フィルタサポートサンプルのセットは、サンプルp(i,j)および1つまたは複数のさらなるサンプルを含み、フィルタサポートサンプルのセットは、i'をk-tより小さい行インデックスとする任意のサンプルp(i',j')を含まない、生成することを含む、方法。
ピクチャのサンプル値をフィルタリングする方法であって、ピクチャは第1のブロックと第2のブロックとを備え、第1のブロックおよび第2のブロックはブロック境界において互いに隣接し、
ピクチャは、n行およびm列に配置構成されている少なくともn×mサンプルp(i,j)を含み、iは、1からnまでの値を取る行インデックスであり、jは、1からmまでの値を取る列インデックスであり、iが1からkまでの値を取るサンプルp(i,j)は、第1のブロックに属し、iがk+1からnまでの値を取るサンプルは、第2のブロックに属し、kは、nより小さい整数であり、
この方法は、tをkより小さい整数とし、1からkまでの各iおよび1からmまでの各jについて、
フィルタをサンプルp(i,j)の値に適用することによってフィルタリング済みサンプル値を生成することであって、フィルタは、フィルタサポートサンプルのセットによってサポートされ、フィルタサポートサンプルのセットは、サンプルp(i,j)および1つまたは複数のさらなるサンプルを含み、iが1からk-t-1の範囲内にある場合に、フィルタサポートサンプルのセットは、i'をk-t-1より大きい行インデックスとする任意のサンプルp(i',j')を含まず、iがk-tからkまでの範囲内にある場合に、フィルタサポートサンプルのセットは、i'をk-tより小さい行インデックスとする任意のサンプルp(i',j')を含まない、生成することを含む、方法。
第1のブロックは、第1のコーディングツリーユニットCTUであり、第2のブロックは、第2のCTUである、実施例1または2に記載の方法。
tは2、3、4、5、または6である、実施例1から3のいずれか一項に記載の方法。
1からk-t-1の範囲内の各iおよび1からmの範囲内の各jについて、フィルタサポートサンプルのセットは、i'が1からk-t-1の範囲内にある複数のサンプルp(i',j')を含み、
k-tからkの範囲内の各iおよび1からmの各jについて、フィルタサポートサンプルのセットは、i'がk-t以上である複数のサンプルp(i',j')を含む、実施例1から4のいずれか一項に記載の方法。
k-tからkの範囲内の各iおよび1からmの各jについて、フィルタサポートサンプルのセットは、i'がkより大きい1つまたは複数のサンプルp(i',j')を含む、実施例5に記載の方法。
フィルタは、インループフィルタである、実施例1から6のいずれか一項に記載の方法。
フィルタは、デブロッキングフィルタを含む、実施例1から7のいずれか一項に記載の方法。
フィルタは、デブロッキングフィルタ、サンプル適応オフセットフィルタSAO、適応ループフィルタALF、またはクロスコンポーネント適応ループフィルタ(CCALF)を含む、実施例1から8のいずれか一項に記載の方法。
第1のブロックのサンプル値を決定することと、
行1からk-t-1における第1のブロックのサンプル値にフィルタを適用することと、
行k-tからkの第1のブロックのサンプル値をバッファに記憶することと、
第2のブロックのサンプル値を決定することと、
バッファに記憶された行k-tにおける第1のブロックのサンプル値にフィルタを適用することとを含む、実施例1から9のいずれか一項に記載の方法。
フィルタは、適応ループフィルタもしくはクロスコンポーネント適応ループフィルタであるか、または適応フィルタは、現在のブロックのサンプルに、またそのブロックを囲むサンプルにもアクセスする分類ステップを使用することによって決定される、実施例1から10のいずれか一項に記載の方法。
ブロックを囲むサンプルが利用可能でないときに、適応フィルタは、正規化値を使用することによって決定され、正規化値は、正整数値であり、所与のブロックを囲むアクセス可能なサンプルの数に依存する、実施例11に記載の方法。
正規化値は、アクセス可能なサンプルの数と逆比例の関係にある、実施例11または12に記載の方法。
ブロックを囲むすべてのサンプルが利用可能であるとは限らないときに正規化において値は96である、実施例10から13のいずれか一項に記載の方法。
ブロックを囲むすべてのサンプルが利用可能であるときに正規化において値は64である、実施例10から14のいずれか一項に記載の方法。
フィルタは、適応ループフィルタである、実施例1から10のいずれか一項に記載の方法。
対称パディング演算は、要求されたサンプルが所与のサンプルをフィルタリングするのにアクセス可能でないときに適用される、実施例1から10のいずれか一項に記載の方法。
対称パディング演算は、フィルタリング演算に利用可能である直に隣接するサンプルによって利用不可能なサンプルを置き換えることとして定義される、実施例17に記載の方法。
対称パディング演算は、フィルタの両側に片側であってもパディング演算を適用することによってフィルタが対称的にされる方法として定義され、フィルタサンプルはそれでもアクセス可能であり得る、実施例17または18のいずれか一項に記載の方法。
ピクチャは、ビデオシーケンスのフレームに含まれる、実施例1から19のいずれか一項に記載の方法。
ピクチャをエンコードもしくはデコードするために実行されるか、またはピクチャを含むビデオシーケンスをエンコードもしくはデコードするために実行される、実施例1から20のいずれか一項に記載の方法。
フィルタリングプロセスで使用される丸め値は、サンプルp(i,j)の垂直位置(y座標)に依存する、実施例1から21のいずれか一項に記載の方法。
フィルタプロセスで使用される丸め値は、サンプルp(i,j)の垂直位置(y座標)およびフィルタリングプロセスで使用される量子化値(たとえば、>>右シフト値)に依存する、実施例1から22のいずれか一項に記載の方法。
量子化値は、変数Qによって示されるときに、丸め値は、pow(2,Q-1)に等しく、変数は、サンプルp(i,j)の垂直位置(y座標)に従って取得される、実施例23に記載の方法。
丸め値は、サンプルp(i,j)の垂直位置(y座標)が以下の条件のうちのいずれか1つで満たされているときに、512に等しい、実施例22から24のいずれか一項に記載の方法。
y==CtbSizeY-t-1、またはy==CtbSizeY-t、またはy==ctbHeightC-t、またはy==ctbHeightC-t-1(いくつかの例では、クロマについて、tは2に等しく、ルーマについて、tは4に等しい)。
丸め値は、サンプルp(i,j)の垂直位置(y座標)が以下の条件のうちのいずれか1つで満たされないときに、64に等しい、実施例22から25のいずれか一項に記載の方法。
y==CtbSizeY-t-1、またはy==CtbSizeY-t、またはy==ctbHeightC-t、またはy==ctbHeightC-t-1。
実施例1から26のいずれか一項に記載の方法を実行するための処理回路を備えるエンコーダ(20)。
実施例1から26のいずれか一項に記載の方法を実行するための処理回路を備えるデコーダ(30)。
実施例1から26のいずれか一項に記載の方法を実行するためのプログラムコードを含むコンピュータプログラム。
デコーダであって、
1つまたは複数のプロセッサと、
プロセッサに結合され、プロセッサによる実行のためのプログラミングを記憶する非一時的コンピュータ可読記憶媒体であって、プログラミングは、プロセッサによって実行されたときに、実施例1から26のいずれか一項に記載の方法を実行するようにデコーダを構成する、非一時的コンピュータ可読記憶媒体とを備える、デコーダ。
エンコーダであって、
1つまたは複数のプロセッサと、
プロセッサに結合され、プロセッサによる実行のためのプログラミングを記憶する非一時的コンピュータ可読記憶媒体であって、プログラミングは、プロセッサによって実行されたときに、実施例1から26のいずれか一項に記載の方法を実行するようにエンコーダを構成する、非一時的コンピュータ可読記憶媒体とを備える、エンコーダ。
12 ソースデバイス
13 エンコード済みピクチャデータ
13 通信チャネル
14 デスティネーションデバイス
16 ピクチャソース
17 ピクチャまたはピクチャデータ
17 生のピクチャまたは生のピクチャデータ
18 プリプロセッサ(または前処理ユニット)
18 ピクチャプリプロセッサ
18 前処理ユニット
19 前処理済みピクチャ
19 前処理済みピクチャデータ
20 ビデオエンコーダ
21 エンコード済みピクチャデータ
22 通信インターフェースまたは通信ユニット
28 通信インターフェースまたは通信ユニット
30 ビデオデコーダ
31 デコード済みピクチャデータ
32 ポストプロセッサ
32 後処理ユニット
33 後処理済みピクチャ
34 ディスプレイデバイス
201 入力
203 ピクチャブロック
204 残差計算ユニット
205 残差ブロック
206 変換処理ユニット
207 変換係数
208 量子化ユニット
209 量子化済み変換係数
210 逆量子化ユニット
211 量子化解除済み係数
212 逆変換処理ユニット
213 再構成済み残差ブロック
214 再構成ユニット
220 ループフィルタユニット
221 フィルタリング済みブロック
230 デコード済みピクチャバッファ(DPB)
231 以前にデコードされたピクチャ
244 フレーム間予測ユニット
254 フレーム内予測ユニット
260 モード選択ユニット
262 パーティション分割ユニット
265 予測ブロック
265 予測因子
266 シンタックス要素
270 エントロピーエンコードユニット
272 出力
304 エントロピーデコードユニット
309 量子化係数
310 逆量子化ユニット
311 量子化解除済み係数
312 逆変換処理ユニット
313 変換ブロック
314 再構成ユニット
315 再構成済みブロック
320 ループフィルタ
321 フィルタリング済みブロック
330 デコード済みピクチャバッファ(DPB)
331 デコード済みピクチャ
344 フレーム間予測ユニット
354 フレーム内予測ユニット
360 モード選択ユニット
365 予測ブロック
400 ビデオコーディングデバイス
410 受信ポート
420 受信機ユニット(Rx)
430 プロセッサ、論理ユニット、または中央演算処理装置(CPU)
440 送信機ユニット(Tx)
450 送信ポート
460 メモリ
470 コーディングモジュール
500 装置
502 プロセッサ
504 メモリ
506 データ
508 オペレーティングシステム
510 アプリケーションプログラム
512 バス
514 二次記憶装置
518 ディスプレイ
2600 ビデオデコード装置
2601 再構成モジュール
2602 解析モジュール
2603 計算モジュール
2604 丸めモジュール
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 ビデオ/オーディオ/サブタイトルディスプレイ
VirtualBoundariesDisabledFlagが1に等しく、任意のn=0..VirtualBoundariesNumVer-1についてVirtualBoundariesPosX[n]-xCtb-xが0より大きく、5より小さい場合、次が適用される:
clipRightPos=VirtualBoundariesPosX[n] (1471)
そうでなければ、CtbSizeY-xが5より小さく、次の条件のうちの1つまたは複数が真である場合、変数clipRightPosはxCtb+CtbSizeYに等しくなるように設定される:
現在のコーディングツリーブロックの右境界は、タイルの右境界であり、loop_filter_across_tiles_enabled_flagは0に等しい。
現在のコーディングツリーブロックの右境界は、スライスの右境界であり、loop_filter_across_slices_enabled_flagは0に等しい。
現在のコーディングツリーブロックの右境界は、サブピクチャの右境界であり、loop_filter_across_subpic_enabled_flag[SubPicIdx]は0に等しい。
Claims (18)
- ピクチャのサンプル値をフィルタリングする方法であって、
前記方法は、
前記ピクチャのブロックに対する再構成済みサンプル値を取得するステップと、
ビットストリームに従って適応ループフィルタリングのためのフィルタ係数を取得するステップと、
前記フィルタ係数および前記ブロックに対する前記再構成済みサンプル値に従って総和値を取得するステップと、
前記ブロック内のサンプルの垂直位置に従って前記総和値を丸め、丸められた総和値を取得するステップと、
前記丸められた総和値に従って前記ブロックに対するフィルタ再構成済みサンプル値を取得するステップとを含む方法。 - 前記丸められた総和値は、(sum+(1<<(alfShiftY-1)))>>alfShiftYに等しく、sumは前記総和値であり、alfShiftYは前記サンプルの前記垂直位置に基づき決定される変数である請求項1に記載の方法。
- 前記サンプルの前記垂直位置が条件、
y==CtbSizeY-t-1、または
y==CtbSizeY-t、または
y==ctbHeightC-t、または
y==ctbHeightC-t-1
のうちのいずれか1つで満たされたときに、alfShiftYは10に等しく、
yは前記サンプルの前記垂直位置であり、CtbSizeYはコーディングツリーブロック、CTB、のサイズであり、ctbHeightCはCTBの高さであり、tは整数値である請求項2に記載の方法。 - 前記サンプルの前記垂直位置が条件、
y==CtbSizeY-t-1、または
y==CtbSizeY-t、または
y==ctbHeightC-t、または
y==ctbHeightC-t-1
のうちのいずれか1つで満たされないときに、alfShiftYは7に等しく、
yは前記サンプルの前記垂直位置であり、CtbSizeYはコーディングツリーブロック、CTB、のサイズであり、ctbHeightCはCTBの高さであり、tは整数値である請求項2または3に記載の方法。 - yは0に等しく、alfShiftYは10に等しい請求項2から4のいずれか一項に記載の方法。
- yは0に等しくなく、alfShiftYは7に等しい請求項2から5のいずれか一項に記載の方法。
- 前記ブロック内の前記サンプルの前記垂直位置は、クロマサンプル位置であるか、またはルーマサンプル位置である請求項1から6のいずれか一項に記載の方法。
- 前記丸めプロセスは、
加えられた総和値を取得するために前記垂直位置に基づき決定された値を前記総和値に加えるステップと、
前記垂直位置に基づき前記加えられた総和値をシフトするステップとを含む請求項1から7のいずれか一項に記載の方法。 - ビデオデコード装置であって、
ピクチャのブロックに対する再構成済みサンプル値を取得するように構成されている、再構成モジュールと、
ビットストリームに従って適応ループフィルタリングのためのフィルタ係数を取得するように構成されている、解析モジュールと、
前記フィルタ係数および前記ブロックに対する前記再構成済みサンプル値に従って総和値を取得するように構成されている、計算モジュールと、
前記ブロック内のサンプルの垂直位置に従って前記総和値を丸め、丸められた総和値を取得するように構成されている、丸めモジュールと、
前記丸められた総和値に従って前記ブロックに対するフィルタ再構成済みサンプル値を取得するように構成されている、フィルタリングモジュールとを備えるビデオデコード装置。 - 前記丸められた総和値は、(sum+(1<<(alfShiftY-1)))>>alfShiftYに等しく、sumは前記総和値であり、alfShiftYは前記サンプルの前記垂直位置に基づき決定される変数である請求項9に記載のビデオデコード装置。
- 前記サンプルの前記垂直位置が条件、
y==CtbSizeY-t-1、または
y==CtbSizeY-t、または
y==ctbHeightC-t、または
y==ctbHeightC-t-1
のうちのいずれか1つで満たされるときに、alfShiftYは10に等しく、
yは前記サンプルの前記垂直位置であり、CtbSizeYはコーディングツリーブロック、CTB、のサイズであり、ctbHeightCはCTBの高さであり、tは整数値である請求項10に記載のビデオデコード装置。 - 前記サンプルの前記垂直位置が条件、
y==CtbSizeY-t-1、または
y==CtbSizeY-t、または
y==ctbHeightC-t、または
y==ctbHeightC-t-1
のうちのいずれか1つで満たされないときに、alfShiftYは7に等しく、
yは前記サンプルの前記垂直位置であり、CtbSizeYはコーディングツリーブロック、CTB、のサイズであり、ctbHeightCはCTBの高さであり、tは整数値である請求項10または11に記載のビデオデコード装置。 - yは0に等しく、alfShiftYは10に等しい請求項10から12のいずれか一項に記載のビデオデコード装置。
- yは0に等しくなく、alfShiftYは7に等しい請求項10から14のいずれか一項に記載のビデオデコード装置。
- 前記ブロック内の前記サンプルの前記垂直位置は、クロマサンプル位置であるか、またはルーマサンプル位置である請求項9から14のいずれか一項に記載のビデオデコード装置。
- 前記丸めモジュールは、
前記垂直位置に基づき決定される値を前記総和値に加えて、加えられた総和値を取得し、前記垂直位置に基づき前記加えられた総和値をシフトして、前記丸められた総和値を取得するように構成される請求項9から15のいずれか一項に記載のビデオデコード装置。 - デコーダであって、
1つまたは複数のプロセッサと、
前記プロセッサに結合され、前記プロセッサによる実行のためのプログラミングを記憶する非一時的コンピュータ可読記憶媒体であって、前記プログラミングは、前記プロセッサによって実行されたときに、請求項1から8のいずれか一項に記載の前記方法を実行するように前記デコーダを構成する、非一時的コンピュータ可読記憶媒体とを備えるデコーダ。 - プログラムコードを収めた非一時的コンピュータ可読媒体であって、前記プログラムコードは、コンピュータデバイスによって実行されたときに、請求項1から8のいずれか一項に記載の前記方法を前記コンピュータデバイスに実行させる非一時的コンピュータ可読媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EPPCT/EP2020/051788 | 2020-01-24 | ||
EP2020051788 | 2020-01-24 | ||
PCT/CN2021/073233 WO2021147981A1 (en) | 2020-01-24 | 2021-01-22 | An encoder, a decoder and corresponding methods for adaptive loop filtering |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023511206A true JP2023511206A (ja) | 2023-03-16 |
Family
ID=76993179
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022544809A Pending JP2023511206A (ja) | 2020-01-24 | 2021-01-22 | 適応ループフィルタリングのためのエンコーダ、デコーダ、および対応する方法 |
Country Status (13)
Country | Link |
---|---|
US (1) | US20220377326A1 (ja) |
EP (1) | EP4085639A4 (ja) |
JP (1) | JP2023511206A (ja) |
KR (1) | KR20220127314A (ja) |
CN (2) | CN116208773B (ja) |
AU (1) | AU2021210471A1 (ja) |
BR (1) | BR112022014636A2 (ja) |
CA (1) | CA3165820A1 (ja) |
CL (1) | CL2022001991A1 (ja) |
IL (1) | IL295013A (ja) |
MX (1) | MX2022009122A (ja) |
WO (1) | WO2021147981A1 (ja) |
ZA (1) | ZA202208537B (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7467617B2 (ja) | 2020-04-26 | 2024-04-15 | テンセント・アメリカ・エルエルシー | 幾何学的クロスコンポーネントフィルタリング |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20240006699A (ko) | 2019-12-11 | 2024-01-15 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 크로스 컴포넌트 적응적 루프 필터링을 위한 샘플 패딩 |
EP4173290A4 (en) * | 2020-06-30 | 2024-01-10 | Beijing Bytedance Network Technology Co., Ltd. | BOUNDARY LOCATION FOR ADAPTIVE LOOP FILTERING |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10694214B2 (en) * | 2012-12-21 | 2020-06-23 | Qualcomm Incorporated | Multi-type parallelized sample adaptive offset in video coding |
GB2516424A (en) * | 2013-07-15 | 2015-01-28 | Nokia Corp | A method, an apparatus and a computer program product for video coding and decoding |
KR20180014675A (ko) * | 2016-08-01 | 2018-02-09 | 한국전자통신연구원 | 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 |
EP3750307B1 (en) * | 2018-03-09 | 2023-10-04 | Huawei Technologies Co., Ltd. | Method and apparatus for image filtering with adaptive multiplier coefficients |
US11451773B2 (en) * | 2018-06-01 | 2022-09-20 | Qualcomm Incorporated | Block-based adaptive loop filter (ALF) design and signaling |
WO2020007489A1 (en) * | 2018-07-06 | 2020-01-09 | Huawei Technologies Co., Ltd. | A picture encoder, a picture decoder and corresponding methods |
GB2582029A (en) * | 2019-03-08 | 2020-09-09 | Canon Kk | An adaptive loop filter |
CA3129687A1 (en) * | 2019-12-24 | 2021-07-01 | Telefonaktiebolaget Lm Ericsson (Publ) | Virtual boundary processing for adaptive loop filtering |
US11303892B2 (en) * | 2020-01-23 | 2022-04-12 | Qualcomm Incorporated | Adaptive rounding for loop filters |
-
2021
- 2021-01-22 CN CN202211584669.0A patent/CN116208773B/zh active Active
- 2021-01-22 AU AU2021210471A patent/AU2021210471A1/en active Pending
- 2021-01-22 IL IL295013A patent/IL295013A/en unknown
- 2021-01-22 MX MX2022009122A patent/MX2022009122A/es unknown
- 2021-01-22 CN CN202180010062.9A patent/CN115836527A/zh active Pending
- 2021-01-22 JP JP2022544809A patent/JP2023511206A/ja active Pending
- 2021-01-22 KR KR1020227028861A patent/KR20220127314A/ko unknown
- 2021-01-22 WO PCT/CN2021/073233 patent/WO2021147981A1/en unknown
- 2021-01-22 BR BR112022014636A patent/BR112022014636A2/pt unknown
- 2021-01-22 EP EP21745201.0A patent/EP4085639A4/en active Pending
- 2021-01-22 CA CA3165820A patent/CA3165820A1/en active Pending
-
2022
- 2022-07-22 US US17/871,753 patent/US20220377326A1/en active Pending
- 2022-07-22 CL CL2022001991A patent/CL2022001991A1/es unknown
- 2022-07-29 ZA ZA2022/08537A patent/ZA202208537B/en unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7467617B2 (ja) | 2020-04-26 | 2024-04-15 | テンセント・アメリカ・エルエルシー | 幾何学的クロスコンポーネントフィルタリング |
Also Published As
Publication number | Publication date |
---|---|
AU2021210471A1 (en) | 2022-08-25 |
IL295013A (en) | 2022-09-01 |
CN116208773B (zh) | 2024-07-05 |
EP4085639A4 (en) | 2023-03-22 |
CN115836527A (zh) | 2023-03-21 |
WO2021147981A1 (en) | 2021-07-29 |
ZA202208537B (en) | 2023-05-31 |
KR20220127314A (ko) | 2022-09-19 |
CA3165820A1 (en) | 2021-07-29 |
US20220377326A1 (en) | 2022-11-24 |
MX2022009122A (es) | 2022-10-27 |
CL2022001991A1 (es) | 2023-01-27 |
BR112022014636A2 (pt) | 2022-10-11 |
EP4085639A1 (en) | 2022-11-09 |
CN116208773A (zh) | 2023-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7106744B2 (ja) | ルーマおよびクロマ成分についてibc専用バッファおよびデフォルト値リフレッシュを使用するエンコーダ、デコーダおよび対応する方法 | |
JP7271683B2 (ja) | エンコーダ、デコーダ、および対応するイントラ予測方法 | |
JP7521057B2 (ja) | エンコーダ、デコーダ、及びデブロッキングフィルタの境界強度導出の対応する方法 | |
JP7250917B2 (ja) | 補間フィルタを使用するイントラ予測のための方法および装置 | |
US11856228B2 (en) | Deblocking filter for sub-partition boundaries caused by intra sub-partition coding tool | |
US11876997B2 (en) | Encoder, decoder and corresponding methods of most probable mode list construction for blocks with multi-hypothesis prediction | |
US20220014793A1 (en) | Encoder, a decoder and corresponding methods of deblocking filter adaptation | |
WO2021147981A1 (en) | An encoder, a decoder and corresponding methods for adaptive loop filtering | |
JP2022551313A (ja) | ピクチャヘッダのシグナリングを簡略化するためのエンコーダ、デコーダ及び対応する方法 | |
US20220264094A1 (en) | Usage of DCT Based Interpolation Filter and Enhanced Bilinear Interpolation Filter in Affine Motion Compensation | |
JP2024055893A (ja) | 非線形適応ループフィルタのためのクリッピングレベル | |
AU2024201152A1 (en) | An encoder, a decoder and corresponding methods using intra mode coding for intra prediction | |
US20220217346A1 (en) | Method and Apparatus for Chrominance QP Offsets Tables Signaling and Derivation | |
EP4029254B1 (en) | Encoder, decoder and corresponding methods using interpolation filtering | |
WO2020211849A1 (en) | Method and apparatus for division-free intra-prediction | |
JP2023515189A (ja) | スライス用のピクチャパーティション情報をシグナリングするためのデコーダ及び対応する方法 | |
WO2021008470A1 (en) | An encoder, a decoder and corresponding methods | |
WO2021057755A1 (en) | An encoder, a decoder and corresponding methods of complexity reduction on intra prediction for the planar mode | |
WO2020182079A1 (en) | An encoder, a decoder and corresponding methods using intra mode coding for intra prediction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220902 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220902 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20231031 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20231113 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20240209 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20240513 |