Sample Padding for Cross-Component Adaptive Loop Filtering

The improved cross-component adaptive loop filtering with optimized padding methods addresses inefficiencies in handling virtual boundaries and video unit boundaries, enhancing video encoding and decoding quality, particularly in 4:2:0 formats.

JP7701427B2Active Publication Date: 2025-07-01DOUYIN VISION CO LTD +1
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
JP2023198422
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2019-12-11
Filing Date
2023-11-22
Publication Date
2025-07-01
Estimated Expiration
2040-12-10

AI Technical Summary

Technical Problem

Existing video coding technologies face inefficiencies in handling virtual boundaries and cross-component adaptive loop filtering, particularly in 4:2:0 formats, where multiple luminance samples are involved in filtering one chroma sample, and different padding methods are used for various video unit boundaries, leading to sub-optimal performance.

Method used

The implementation of cross-component adaptive loop filtering (CC-ALF) with improved padding methods, such as mirror and iterative padding, to handle virtual boundaries and video unit boundaries more efficiently, ensuring consistent filtering across different video formats.

Benefits of technology

Enhances the filtering process by optimizing the use of padding methods, improving the quality of video encoding and decoding, especially in 4:2:0 formats, by reducing computational complexity and enhancing visual quality.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007701427000050
    Figure 0007701427000050
  • Figure 0007701427000051
    Figure 0007701427000051
  • Figure 0007701427000052
    Figure 0007701427000052
Patent Text Reader

Abstract

To provide a video processing method that performs cross-component adaptive loop filtering for use in a video encoder and a decoder.SOLUTION: A video processing method includes determining whether to enable mirror padding processing for padding an unavailable luminance sample while applying a cross-component adaptive loop filter to a video unit for conversion between the video unit of the video and the bitstream representation of the video, and making the transformation on the basis of the determination.SELECTED DRAWING: Figure 34
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application is a divisional application of Japanese Patent Application No. 2022-535772, which is based on International Patent Application No. PCT / CN2020 / 135134 filed on December 10, 2020. This application claims priority to and the benefit of International Patent Application No. PCT / CN2019 / 124481, filed December 11, 2019. All of the aforementioned patent applications are hereby incorporated by reference in their entirety.

[0002] This patent specification relates to image and video encoding and decoding. [Background technology]

[0003] Digital video is the largest bandwidth used on the Internet and other digital communications networks. A connected user device capable of receiving and displaying video. As the number of devices increases, the bandwidth demands for digital video usage will continue to grow. Predicted. Summary of the Invention

[0004] This specification describes a method for performing cross-component adaptive loop filtering during video encoding or decoding. To this end, techniques are disclosed that may be used by video encoders and decoders.

[0005] In one exemplary embodiment, a method of image processing is disclosed. The method includes: Loop-filling is done on the video unit to convert between the unit and the bitstream representation of the video. Mirror to pad unavailable luminance samples while applying the filtering tool determining whether to enable padding processing; and performing the conversion based on the determination. The present invention also includes:

[0006] In another exemplary aspect, a method of video processing is disclosed. The method includes: For the conversion between the knit and the bitstream representation of the video, based on the coding information of the video unit, to determine whether to apply an iterative padding process and / or a mirror padding process to pad the samples located at the virtual boundary, and to perform the conversion based on the determination. Based on the coding information of the video unit, to determine whether to apply an iterative padding process and / or a mirror padding process to pad the samples located at the virtual boundary, and to perform the conversion based on the determination. Based on the coding information of the video unit, to determine whether to apply an iterative padding process and / or a mirror padding process to pad the samples located at the virtual boundary, and to perform the conversion based on the determination. Based on the coding information of the video unit, to determine whether to apply an iterative padding process and / or a mirror padding process to pad the samples located at the virtual boundary, and to perform the conversion based on the determination.

[0007] In yet another exemplary aspect, a video encoder device is disclosed. This video encoder includes a processing device configured to implement the method described above. In yet another exemplary aspect, a video encoder device is disclosed. This video encoder includes a processing device configured to implement the method described above.

[0008] In yet another exemplary aspect, a video decoder device is disclosed. This video decoder includes a processor configured to implement the method described above. In yet another exemplary aspect, a video decoder device is disclosed. This video decoder includes a processor configured to implement the method described above.

[0009] In yet another exemplary aspect, a computer-readable medium storing code is disclosed. This code is implemented in a form executable by a processor for one of the methods described herein. In yet another exemplary aspect, a computer-readable medium storing code is disclosed. This code is implemented in a form executable by a processor for one of the methods described herein. In yet another exemplary aspect, a computer-readable medium storing code is disclosed. This code is implemented in a form executable by a processor for one of the methods described herein.

[0010] These and other features are described throughout this document.

Brief Description of the Drawings

[0011]

Figure 1

Figure 2

Figure 3

Figure 4

Figure 5

Figure 6

Figure 7A

Figure 7B

Figure 7C

Figure 8

Figure 9

Figure 10

Figure 11

Figure 12A

Figure 12B

Figure 12C

Figure 12D

Figure 13

Figure 14

Figure 15

Figure 16

Figure 17A

Figure 17B

Figure 17C

Figure 18

Figure 19

Figure 20

Figure 21A

Figure 21B

Figure 22

Figure 23

Figure 24

Figure 25

Figure 26

Figure 27

Figure 28

Figure 29

Figure 30

Figure 31

Figure 32

Figure 33

Figure 34

Figure 35

Figure 36

Figure 37

Figure 38A

Figure 38B

DETAILED DESCRIPTION OF THE INVENTION

[0012] In this specification, chapter headings are used for ease of understanding, and the technology and each The applicability of the embodiments described in the chapter is not limited to that chapter only. Further, H . The term 266 is used only for ease of understanding in a certain description and is not used to limit the scope of the disclosed technology. Thus, the technology described in this specification is applicable to other video codec protocols and designs as well.

[0013] 1. Summary of the Invention This specification relates to video coding technology. Specifically, the present invention relates to picture / sub-picture / slice / tile boundaries, 360-degree video virtual boundaries, and ALF virtual boundary coding, and in particular, to cross-component adaptive loop filters (C C-ALF) and other coding tools in image / video coding. It may be applied to existing video coding standards such as HEVC, or may be applied to finalize the standard (Versatile Video Codin g). The present invention is also applicable to future video coding standards or video codecs.

[0014] 2. Introduction to Video Coding Video coding standards have mainly evolved through the development of well-known ITU-T and ISO / IEC standards. ITU-T created H.261 and H.263, ISO / IEC created MP EG-1 and MPEG-4 Visual, and both organizations jointly created H.262 / MPEG-2 V ideo and H.264 / MPEG-4 AVC (Advanced Video Cod ing) and H.265 / HEVC standards. Since H.262, video coding standards have utilized a hybrid video coding structure where temporal prediction and transform coding are used. Based on this, in order to explore future video coding technologies beyond HEVC, in 2015 VCEG and MPEG jointly established the JVET (Joint Video Exploration ion Team). Since then, many new methods have been adopted by JVET and incorporated into the reference software called JEM (Joint Exploration Mode). In April 2018, the Joint Video Exp ert Team (JVET) was established between VCEG (Q6 / 16) and ISO / IEC JTC1 SC29 / WG11 (MPEG), and is working on formulating the VVC standard with the goal of reducing the bitrate by 50% compared to HEVC.

[0015] 2.1. Color Space and Chroma Subsampling A color space, also known as a color model (or color system), is an abstract mathematical model that simply describes the range of colors as a digital tuple, typically three or four values or color components (e.g., RGB). Basically, a color space is a refined version of a coordinate system and a subspace.

[0016] In video compression, the most frequently used color spaces are YCbCr and RGB.

[0017] YCbCr, Y’CbCr, or Y Pb / Cb Pr / Cr, also described as YCBCR or Y’CBCR, is a family of color spaces used as part of the pipeline video of color images and digital photo systems. Y’ is the luminance component, and CB and CR are the chroma components of the blue difference and red difference. Y’ (with a prime) is distinguished from Y which is luminance, meaning that the light intensity is non-linearly encoded based on gamma-corrected RGB primaries.

[0018] ​​​​Chroma subsampling occurs because the human visual system has a lower perception of color difference than it does of luminance. Taking advantage of this, the chrominance information is implemented with a lower resolution than the luminance information to produce an image. This is a method of encoding the above.

[0019] 2.1.1. 4:4:4 Each of the three Y'CbCr components has the same sample rate and therefore This method is used in high-end film scanners and cinematic projection scanners. It is sometimes used in photo production.

[0020] 2.1.2. 4:4:4 The two chrominance components are sampled at half the luma sample rate, resulting in a horizontal chrominance resolution of The image resolution is halved and the vertical chroma resolution is unchanged. This results in almost no visible difference. There is no difference between the two and the bandwidth of the uncompressed video signal can be reduced by a factor of three. Examples of nominal vertical and horizontal positions for two-color formats are given, for example, in the VVC working draft This is shown in Figure 1.

[0021] 2.1.3. 4:2:0 In 4:2:0, the horizontal sampling is doubled compared to 4:1:1, but in this method Cb and Cr channels are sampled only on each alternating line, resulting in half the vertical resolution Therefore, the data rate is the same. Cb and Cr are the horizontal and vertical 4:2:0 with different horizontal and vertical positions. There are three variants of the scheme. In MPEG-2, Cb and Cr are horizontally aligned. Cb and Cr are vertically aligned. They are located between pixels in the perpendicular direction (located between the grid lines). In JPEG / JFIF, H.261, and MPEG-1, Cb and Cr are interleaved and are positioned intermittently among the luminance samples. In 4:2:0 DV, Cb and Cr are co-located horizontally. Vertically, they are co-located alternately.

[0022] [Table 1]

[0023] 2.2. Coding Flow of Typical Video Codecs Figure 2 shows an example of an encoder block diagram of VVC that includes three in-loop filtering blocks, namely the deblocking filter (DF), sample adaptive offset (SAO), and ALF. Different from DF (which uses predefined filters), SAO and ALF utilize the original samples of the current picture and add offsets and apply finite impulse response (FIR) filters using coding side information that signals offset and filter coefficients, respectively, to reduce the mean squared error between the original samples and the reconstructed samples. ALF is located at the last processing stage of each picture and can be regarded as a tool that attempts to capture and correct artifacts generated in the previous stage.

[0024] 2.3. Example of Definition of Video Unit One picture is divided into one or more tile rows and one or more tile columns. One tile is a sequence of CTUs that cover a rectangular area of one image. The CTUs in one tile are scanned in raster scan order within that tile.

[0025] One slice consists of an integer number of complete tiles or an integer number of consecutive complete CTU rows within a tile of a picture.

[0026] Two modes of slices, namely the raster scan slice mode and the rectangular slice mode, are supported. In the raster scan slice mode, one slice contains a sequence of one complete tile in the tile raster scan of a picture. In the rectangular slice mode, one slice contains either a plurality of complete tiles that collectively form a rectangular region of the picture, or a plurality of consecutive complete CTU rows of one tile that collectively form a rectangular region of the picture. The tiles within a rectangular slice are scanned in the order of the tile raster scan within the rectangular region corresponding to that slice.

[0027] One sub - picture contains one or more slices that collectively cover a rectangular region of a picture.

[0028] Figure 3 shows an example of the raster scan slice division of a picture, where the picture is divided into 12 tiles and 3 raster scan slices.

[0029] Figure 4 in the VVC specification shows an example of the rectangular slice division of a picture, where the picture is divided into 24 tiles (6 tile columns and 4 tile rows) and 9 rectangular slices.

[0030] Figure 4 is an image with 18×12 luma CTUs divided into 24 tiles and 9 rectangular slices.

[0031] Figure 5 shows an example of a picture divided into tiles and rectangular slices, and this picture is divided into four tiles (a column of two tiles and a row of two tiles) and four rectangular slices .

[0032] Figure 6 shows an example of dividing a picture into sub - pictures, and the picture is divided into 15 tiles containing 4×4 CTUs , 24 slices, and 24 sub - pictures of different dimensions .

[0033] 2.3.1. CTU / CTB Size In VVC, the size of the CTU signaled in the SPS by the syntax element log2_ctu_size_minus2 may be as small as 4×4 .

[0034] [Table 2] [Table 3]

[0035] log2_ctu_size_minus2 + 2 defines the size of the luminance coding tree block of each CTU . log2_min_luma_coding_block_size_minus2 + 2 defines the minimum luminance coding block size The variables CtbLog2SizeY, CtbSizeY, MinCbLog2SizeY, MinCbSizeY, MinTbLog2SizeY, MaxTbLog2SizeY , MinTbSizeY, MaxTbSizeY, PicWidthInCtbsY, P icHeightInCtbsY, PicSizeInCtbsY, PicWidthI nMinCbsY, PicHeightInMinCbsY, PicSizeInMin CbsY, PicSizeInSamplesY, PicWidthInSamples C and PicHeightInSamplesC are derived as follows. CtbLog2SizeY = log2_ctu_size_minus2 + 2 (7 -9) CtbSizeY = 1 << CtbLog2SizeY (7-10) MinCbLog2SizeY = log2_min_luma_coding_blo ck_size_minus2 + 2 (7-11) MinCbSizeY = 1 << MinCbLog2SizeY (7-12) MinTbLog2SizeY = 2 (7-13) MaxTbLog2SizeY = 6 (7-14) MinTbSizeY = 1 << MinTbLog2SizeY (7-15) MaxTbSizeY = 1 << MaxTbLog2SizeY (7-16) PicWidthInCtbsY = Ceil(pic_width_in_luma_ samples÷CtbSizeY) (7-17) PicHeightInCtbsY = Ceil(pic_height_in_lum a_samples÷CtbSizeY) (7-18) PicSizeInCtbsY = PicWidthInCtbsY * PicHeigh tInCtbsY (7-19) PicWidthInMinCbsY = pic_width_in_luma_sam ples / MinCbSizeY (7-20) PicHeightInMinCbsY = pic_height_in_luma_s amples / MinCbSizeY (7-21) PicSizeInMinCbsY=PicWidthInMinCbsY*PicH eightInMinCbsY (7-22) PicSizeInSamplesY=pic_width_in_luma_sam ples*pic_height_in_luma_samples (7-23) PicWidthInSamplesC=pic_width_in_luma_sa mples / SubWidthC (7-24) PicHeightInSamplesC=pic_height_in_luma_ samples / SubHeightC (7-25)

[0036] 2.3.2. CTU in a picture By M × N (generally, M is equal to N as defined in HEVC / VVC) Assume the CTB / LCU size indicated and use the picture (or tile, or slice, or There are other types of Cs located on the border (take the border of a picture as an example). In the case of TB, the K × L samples are <MまたはL<Nの場合、ピクチャの境界内にあ In the case of the CTB shown in Figures 7A to 7C, the size of the CTB is still equal to M x N. but the bottom / right border of the CTB is outside the picture.

[0037] FIG. 7 shows an example of a CTB crossing a picture boundary, where (a) K=M,L <N; (b)K <M,L=N;(c)K<M,L<Nである。また、(a)CTBが下側のピク (b) the CTB crosses the right picture boundary. (c) shows the CTB crossing the bottom right picture boundary.

[0038] 2.4. Deblocking Filter (DB) The input to the DB is the sample reconstructed before the in-loop filter.

[0039] First, the vertical edges of the picture are selected. Then, using the samples modified by the vertical edge filtering process as input, the horizontal edges of the picture are filtered. The vertical and horizontal edges in each CTB of each CTU are processed separately for each coding unit. The vertical edges of the coding blocks in a coding unit start from the left edge of the coding block and are filtered to proceed through those edges in their geometric order towards the right side of the coding block. The horizontal edges of the coding blocks in a coding unit start from the upper edge of the coding block and are filtered to proceed through those edges in their geometric order towards the lower side of the coding block.

[0040] Figure 8 shows a picture sample, the horizontal and vertical block boundaries on an 8×8 grid, and the non - overlapping blocks of 8×8 samples, which can be deblocked in parallel.

[0041] 2.4.1. Boundary Determination Filtering is applied to the 8×8 block boundaries. Further, it must be at the boundary of the transform block or the coding sub - block (for example, because it is using affine motion prediction, ATMVP). If it is not such a boundary, the filter is disabled

[0042] 2.4.2. Boundary Strength Calculation ​​​​​​​​For the boundary of the transformation block / coding sub - block, if it is located in an 8×8 grid, it may be filtered, and the setting of bS[xDi [yDj]([xDi][yDj] represents coordinates) is defined in Table 2 - 2 and Table 2 - 3 respectively.

[0043] [Table 4]

[0044] [Table 5]

[0045] 2.4.3. Luminance Component Deblocking Decision The deblocking decision process is described in this subsection.

[0046] More broadly, a strong luminance filter is a filter that is used only when all of Condition 1, Condition 2, and Condition 3 are TRUE. Condition 1 is the "large block condition". This condition detects whether the samples on the P - side and Q - side belong to large blocks represented by the variables bSidePisLargeBlk and bSideQisLargeB lk respectively. bSidePis LargeBlk and bSideQisLargeBlk are defined as follows . bSidePisLargeBlk = ((edge type is vertica l and p0 belongs to CU with width >= 32) || (edge type is horizontal and p0 belongs to CU with height >= 32))? TRUE : FALSE​ bSideQisLargeBlk = ((edge type is vertical and q0 belongs to CU with width >= 32) || ( edge type is horizontal and q0 belongs t o CU with height >= 32))? TRUE : FALSE Based on bSidePisLargeBlk and bSideQisLargeBlk, define Condition 1 as follows. Condition1 = (bSidePisLargeBlk || bSidePi sLargeBlk)? TRUE : FALSE Next, if Condition 1 is true, check Condition 2. First, derive the following variables . - First, derive dp0, dp3, dq0, dq3 as HEVC - if (the p side is 32 or more) dp0 = (dp0 + Abs(p50 - 2 * p40 + p30) + 1) >> 1 dp3 = (dp3 + Abs(p53 - 2 * p43 + p33) + 1) >> 1 - if (the q side is 32 or more) dq0 = (dq0 + Abs(q50 - 2 * q40 + q30) + 1) >> 1 dq3 = (dq3 + Abs(q53 - 2 * q43 + q33) + 1) >> 1 Condition2 = (d < β)? TRUE : FALSE where d = dp0 + dq0 + dp3 + dq3. If Conditions 1 and 2 are valid, further check whether any block uses sub - blocks . If (bSidePisLargeBlk) { If (mode block P == SUBBLOCKMODE) Sp = 5 else Sp = 7 } else Sp = 3 If (bSideQisLargeBlk) { If (mode block Q == SUBBLOCKMODE) Sq = 5 else Sq = 7 } else Sq = 3 Finally, if both Condition 1 and Condition 2 are valid, the proposed deblocking method checks Condition 3 (Strong Filter Condition for large blocks) defined as follows . In StrongFilterCondition of Condition 3, the following variables are derived . dpq is derived in the same way as HEVC sp3 = Abs(p3 - p0), derived in the same way as HEVC if (p side is 32 or more) if (Sp == 5) sp3 = (sp3 + Abs(p5 - p3) + 1) >> 1 else sp3 = (sp3 + Abs(p7 - p3) + 1) >> 1 sq3 = Abs(q0 - q3) is derived in the same way as HEVC if (q side is 32 or more) If (Sq == 5) sq3 = (sq3 + Abs(q5 - q3) + 1) >> 1 else sq3 = (sq3 + Abs(q7 - q3) + 1) >> 1 Similar to HEVC, StrongFilterCondition = (dpq is less than (β > > 2), sp3 + sq3 is less than (3 * β >> 5), and Abs(p0 - q0) is ([[]] 5 * t C(+1) >> 1)? TRUE : FALSE.

[0047] 2.4.4. Stronger Deblocking Filter for Luminance (designed for larger blocks) )(designed for larger blocks) The bilinear filter is used when samples on both sides of the boundary belong to one large block. One sample belonging to one large block is defined as having a width ≥ 32 in the case of a vertical edge and a height ≥ 32 in the case of a horizontal edge. One sample belonging to one large block is defined as having a width ≥ 32 in the case of a vertical edge and a height ≥ 32 in the case of a horizontal edge.

[0048] The bilinear filter is shown below.

[0049] Next, in the above-mentioned HEVC deblocking, for i = 0 to Sp - 1, at the block boundary sample p and for j = 0 to Sq - 1 at q i (pi, qi are the i-th sample in the row filtering the vertical edge or the i-th sample in the column filtering the horizontal edge) are replaced by linear interpolation as follows. i (pi, qi are the i-th sample in the row filtering the vertical edge or the i-th sample in the column filtering the horizontal edge) or the i-th sample in the column filtering the horizontal edge) are replaced by linear interpolation as follows. (pi, qi are the i-th sample in the row filtering the vertical edge or the i-th sample in the column filtering the horizontal edge) are replaced by linear interpolation as follows.

[0050] [Equation]

[0051] tcPD i and tcPD j terms are the position-dependent clipping described in Section 2.4.7 and g j , f i , Middle s,t , P s and Q s are shown below.

[0052] 2.4.5. Chroma Deblocking Control The strong chroma filter is used on both sides of the block boundary. Here, the chroma filter T is selected when both sides of the chroma edge are 8 (chroma position) or more, and a decision is made that satisfies the following three conditions. The first is the determination of the boundary strength, similar to that of the large block. The proposed filter can be applied when the width or height of the block perpendicular to the edge of the block in the chroma sampled domain is 8 or more. The second and third are basically the same as the determination of HEVC luminance deblocking, which are the on / off determination and the determination of the strong filter, respectively. In the first determination, the boundary strength (bS) is modified for chroma filtering, and the conditions are sequentially checked. If the conditions are met, the remaining conditions with lower priorities are skipped. When the boundary of the large block is detected, chroma deblocking is performed when bS is equal to 2 or bS is equal to 1. In the second determination, d is derived in the same way as HEVC luminance deblocking. The second condition becomes TRUE when d is smaller than β. In the third determination, StrongFilterCondition is derived as follows. dpq is derived in the same way as HEVC.

[0053] sp3 = Abs(p3 - p0) is derived in the same way as HEVC. sq3 = Abs(q0 - q3) is derived in the same way as HEVC.

[0054]

[0055] The second and third conditions are basically the same as the determination of the strong filter of HEVC luminance as follows. In the second condition, then d is derived in the same way as HEVC luminance deblocking. The second condition becomes TRUE when d is smaller than β. In the third condition, StrongFilterCondition is derived as follows dpq is derived in the same way as HEVC. sp3 = Abs(p3 - p0) is derived in the same way as HEVC sq3 = Abs(q0 - q3) is derived in the same way as HEVC

[0056] As in the HEVC design, StrongFilterCondition = (dp q is less than (β >> 2), sp3 + sq3 is less than (β >> 3), and Abs(p0 - q0) is less than (5 * t C + 1) >> 1).) 2.4.6. Strong Deblocking Filter for Chroma

[0057] The following strong deblocking filter for chroma is defined. p2’ = (3 * p3 + 2 * p2 + p1 + p0 + q0 + 4) >> 3 p1’ = (2 * p3 + p2 + 2 * p1 + p0 + q0 + q1 + 4) >> 3 p0’ = (p3 + p2 + p1 + 2 * p0 + q0 + q1 + q2 + 4) >> 3

[0058] The proposed chroma filter performs deblocking on a 4×4 chroma sample grid.

[0059] 2.4.7. Position-Dependent Clipping The position-dependent clipping tcPD is applied to the output samples of the luminance filtering process that includes strongly long filters that modify 7, 5, and 3 samples at the boundaries. Assuming a quantization error distribution, it is proposed to increase the clipping value for samples expected to have higher quantization noise, and thus, to have a higher deviation from the true sample value of the reconstructed sample value. For each P or Q boundary filtered with an asymmetric filter, based on the result of the decision-making process in Section 2.4.2, a position-dependent threshold table is selected from two tables (i.e., Tc7 and Tc3 summarized below) provided to the decoder as side information .

[0060] . ​​​​Tc7 = {6, 5, 4, 3, 2, 1, 1}; Tc3 = {6, 4, 2}; tcPD = (Sp == 3)? Tc3 : Tc7; tcQD = (Sq == 3)? Tc3 : Tc7;

[0061] For the P or Q boundary filtered with a short symmetric filter, a smaller position dependent threshold is applied. Tc3 = {3, 2, 1};

[0062] After defining the threshold, filter according to the tcP and tcQ clipping values the filtered p’ i and q’ i sample values are clipped. p’’ i = Clip3(p’ i + tcP i , p’ i - tcP i , p’ i ); q’’ j = Clip3(q’ j + tcQ j , q’ j - tcQ j , q’ j );

[0063] Here, p’ i , q’ i are the filtered sample values, p” i , q” j are the output sample values after clipping, and tcP i tcP i is the clipping threshold derived from the VVC tc parameter , tcPD, tcQD. The function Clip3 is a clipping function as defined in VV C.

[0064] 2.4.8. Deblocking Adjustment of Sub - blocks Parallel-friendly Deblocking and Sub-blocks Using Both Long Filters To enable deblocking, the long filter has a luminance control for the long filter As shown, the sample modification on the side using sub-block deblocking (AFFINE, ATMVP, or DM VR) is limited to a maximum of 5. Further, the deblocking of the sub block is adjusted such that the modification of the sub-block boundary on an 8×8 grid close to the CU or implicit TU boundary is limited to a maximum of 2 samples on each side. The following applies to sub-block boundaries not aligned with the CU boundary. If(mode block Q==SUBBLOCKMODE && edge! =0){ if(!(implicitTU && (edge==(64 / 4)))) if(edge==2 || edge==(orthogonalLength -2) || edge==(56 / 4) || edge==(72 / 4)) Sp=Sq=2; else Sp=Sq=3; else Sp=Sq=bSideQisLargeBlk?5:3 }

[0065] In this case, an edge equal to 0 corresponds to the CU boundary, and an edge equal to 2 or orthogonalLength - 2 corresponds to the sub-block boundary 8 samples from the CU boundary. Here, when the implicit splitting of the TU is used, the implicit TU is true.

[0066] 2.5. Sample Adaptive Offset (SAO) :SAO) ​​​​The input of SAO is the sample reconstructed after the DB. The concept of SAO is first to classify the region samples into multiple categories using the selected classifier, obtain the offset for each category, and then reduce the average sample distortion of the region by adding the offset to each sample in the category. Here, the index of the classifier and the offset of the region are coded in the bitstream. In HEVC and VVC, this region (the unit of SAO parameter signal notification) is defined as a CTU. Two SAO types that can meet the requirements of low complexity are adopted in HEVC. These two types are Edge Offset (EO) and Band Offset (BO), which will be described in more detail below. The index of the SAO type is coded (which is within the range of [0,2]). In the case of EO, the sample classification is based on comparing the current sample with neighboring samples according to one-dimensional direction patterns such as horizontal, vertical, 135° diagonal, and 45° diagonal directions. Figures 10A to 10D show the four one-dimensional direction patterns for the classification of EO samples, namely horizontal (EO class = 0), vertical (EO class = 1), diagonal 135° (EO class = 2), and diagonal 45° (EO class = 3). For a given EO class, each sample in the CTB is classified into one of five categories. The current sample value labeled "c" is compared with its two neighboring parts (labeled "a" and "b") along the selected one-dimensional pattern. For each sample, the offset corresponding to the category it belongs to is determined. In HEVC, this region (the unit of SAO parameter signal notification) is defined as a CTU.

[0067] Two SAO types that can meet the requirements of low complexity are adopted in HEVC. These two types are Edge Offset (EO) and Band Offset (BO), which will be described in more detail below. The index of the SAO type is coded (which is within the range of [0,2]). In the case of EO, the sample classification is based on comparing the current sample with neighboring samples according to one-dimensional direction patterns such as horizontal, vertical, 135° diagonal, and 45° diagonal directions. Figures 10A to 10D show the four one-dimensional direction patterns for the classification of EO samples, namely horizontal (EO class = 0), vertical (EO class = 1), diagonal 135° (EO class = 2), and diagonal 45° (EO class = 3). For a given EO class, each sample in the CTB is classified into one of five categories.

[0068] Figures 10A to 10D show the four one-dimensional direction patterns for the classification of EO samples, namely horizontal (EO class = 0), vertical (EO class = 1), diagonal 135° (EO class = 2), and diagonal 45° (EO class = 3). Figures 10A to 10D show the four one-dimensional direction patterns for the classification of EO samples, namely horizontal (EO class = 0), vertical (EO class = 1), diagonal 135° (EO class = 2), and diagonal 45° (EO class = 3). Figures 10A to 10D show the four one-dimensional direction patterns for the classification of EO samples, namely horizontal (EO class = 0), vertical (EO class = 1), diagonal 135° (EO class = 2), and diagonal 45° (EO class = 3).

[0069] For a given EO class, each sample in the CTB is classified into one of five categories. The current sample value labeled "c" is compared with its two neighboring parts (labeled "a" and "b") along the selected one-dimensional pattern. For each sample, the offset corresponding to the category it belongs to is determined. The classification rules are summarized in Table 2-4. Categories 1 and 4 are associated with local valleys and local peaks along the selected one-dimensional pattern, respectively. Categories 2 and 3 are associated with concave and convex corners along the selected one-dimensional pattern, respectively. If the current sample does not belong to EO Categories 1 to 4, it is Category 0 and SAO is not applied.

[0070] [Table 6]

[0071] 2.6. Adaptive Loop Filter (ALF) In VVC, an Adaptive Loop Filter (ALF) with block-based filter adaptation is applied. For the luminance component, one of 25 filters is selected for each 4×4 block based on the direction and action of the local gradient.

[0072] 2.6.1. Filter Shape Two rhombus filter shapes (shown in Figure 11) are used. A 7×7 rhombus is applied to the luminance component, and a 5×5 rhombus is applied to the chroma component.

[0073] Figure 11 shows the shape of the ALF filter (chroma: 5×5 rhombus, luminance: 7×7 rhombus).

[0074] 2.6.2. Block Classification For the luminance component, each 4×4 block is classified into one of 25 classes. The classification index C is derived as follows based on the quantization values of its direction D and activity A^.

[0075] [Equation] ​​​​​​​

[0076] To calculate D and A^, first use a 1-D Laplacian to calculate the gradients in the horizontal, vertical, and two diagonal directions.

[0077]

Equation

[0078] Here, the indices i and j represent the coordinates of the upper-left sample within a 4×4 block, and R(i, j) indicates the reconstructed sample at the coordinates R(i, j).

[0079] To reduce the complexity of block partitioning, a subsampled 1-D Laplacian calculation is applied. Figure 12 shows the subsampled Laplacian calculation. Figure 12A shows the subsampling positions for the vertical gradient, Figure 12B shows the subsampling positions for the horizontal gradient, Figure 12C shows the subsampling positions for the diagonal gradient, and Figure 12D shows the subsampling positions for the diagonal gradient.

[0080] Then, set the D maximum and minimum values of the horizontal and vertical gradients as follows .

[0081]

Equation

[0082] The maximum and minimum values of the two diagonal gradients are set as follows.

[0083]

Equation

[0084] To derive the value of the directivity D, these values are compared with each other and with two threshold values t1 and t2. Compare.

[0085]

Number

[0086] The activity value A is calculated as follows.

[0087]

Number

[0088] A is further quantized into the range of 0 to 4, and the quantized value is denoted as A^.

[0089] For the chroma components in the picture, the classification method is not applied, that is, a single set of ALF coefficients is applied to each chroma component. A set of numbers is applied to each chroma component.

[0090] 2.6.3. Geometric Transformations of Filter Coefficients and Clipping Values Before filtering each 4×4 luminance block, based on the gradient value calculated for that block, geometric transformations such as rotation or flipping in the diagonal and vertical directions are applied to the filter coefficients f(k,l) and the corresponding filter clipping values c(k,l). This is equivalent to applying these transformations to the samples within the filter support region. The idea is to make the different blocks to which ALF is applied more similar by aligning their directions. Based on the gradient value calculated for that block, geometric transformations such as rotation or flipping in the diagonal and vertical directions are applied to the filter coefficients f(k,l) and the corresponding filter clipping values c(k,l). For the filter coefficients f(k,l) and the corresponding filter clipping values c(k,l), geometric transformations such as rotation or flipping in the diagonal and vertical directions are applied. This is equivalent to applying these transformations to the samples within the filter support region. The idea is to make the different blocks to which ALF is applied more similar by aligning their directions. This is equivalent to applying these transformations to the samples within the filter support region. The idea is to make the different blocks to which ALF is applied more similar by aligning their directions. The idea is to make the different blocks to which ALF is applied more similar by aligning their directions. Is to make them more similar. Three geometric transformations including diagonal, vertical flipping, and rotation are introduced.

[0091]

Number

[0092] Here, K is the size of the filter, 0 ≦ k, l ≦ K - 1 are the coefficient coordinates, and the position ( 0, 0) is at the upper left corner, and the position (K - 1, K - 1) is at the lower right corner. This transformation is based on the gradient values calculated for that block and is applied to the filter coefficients f(k, l) and the clipping values c(k, l). The relationship between the transformation and the four gradients in four directions is summarized in the following table.

[0093]

Table 7

[0094] 2.6.4. Filter Parameter Signal Notification The ALF filter parameters are signaled in the Adaptive Parameter Set (APS). In one APS, up to 25 sets of luminance filter coefficients and clipping value indexes, as well as up to 8 sets of chroma filter coefficients and clipping value indexes, can be signaled. To reduce the bit overhead, the filter coefficients of different classifications of the luminance component can be merged. In the slice header, the index of the APS used for the current slice is signaled. The clipping value indexes decoded from the APS make it possible to determine the clipping values using a table of clipping values for both the luminance and chroma components.

[0095] These clipping values depend on the internal bit depth. More precisely, the clipping values are obtained by the following formula.

[0096]

Equation

[0097] Here, B is equal to the internal bit depth, α is equal to a predefined constant 2.35, and N is equal to 4, which is the number of clipping values allowed in VVC.

[0098] In the slice header, up to seven APS indices can be signaled to specify the set of luminance filters used for the current slice. The filtering process may be further controlled at the CTB level. To indicate whether ALF is applied to a luminance CTB, one flag is always signaled. One luminance CTB can select one filter set from 16 fixed filter sets and filter sets from multiple APSs. A filter set index is signaled for the luminance CTB to indicate which filter set is applied. In both the encoder and decoder, 16 fixed filter sets are predefined and hard-coded.

[0099]

[0100] For the chroma component, an APS index is signaled in the slice header to indicate the chroma filter set used for the current slice. At the CTB level, if there are multiple chroma filter sets in APS, a filter index is signaled for each chroma CTB.

[0100]

[0100] The filter coefficients are quantized with a norm equal to 128. To reduce the complexity of multiplication, bitstream conformance is applied so that the coefficient values at non-central positions are included in the range of -2 7 ~2 7 -1. The central position coefficient is not signaled in the bitstream and is 128 ​is considered equal to.

[0101] 2.6.5. Filtering Process On the decoder side, when ALF is enabled for CTB, each sample R in the CU (i,j) is filtered, and as a result, as shown below, the sample value R’(i, j) is obtained.

[0102]

Equation

[0103] In this case, f(k,l) represents the decoded filter coefficient, K(x,y) is the clipping function, and c(k,l) represents the decoded clipping parameter. The variables k and l vary between -L / 2 and L / 2, where L represents the filter length. The function The clipping function K(x,y)=min(y, max(-y,x)) corresponding to Clip3(-y,y,x).

[0104] 2.6.6. Virtual Boundary Filtering Process for Row Buffer Reduction In hardware and embedded software, picture-based processing is not actually acceptable due to its high picture buffer requirements. The use of on-chip picture buffers is very expensive, and the use of off-chip picture buffers significantly increases external memory accesses, power consumption, and data access latency. Therefore, in actual products, DF, SAO, and ALF will be changed from picture-based decoding to LCU-based decoding. When using LCU-based processing for DF, SAO, and ALF, to process multiple LCUs in parallel, a raster scan using the LCU pipeline method is used for each LCU ​​Thus, the overall decoding process can be performed. In this case, since pixels from the upper LCU line are required to process one LCU line, line buffers are needed for DF, SAO, and ALF. When using an off-chip line buffer (e.g., DRAM), the bandwidth and power consumption of the external memory increase, and when using an on-chip line buffer (e.g., S RAM), the chip area increases. Therefore, although the line buffer is already much smaller than the picture buffer, it is still desirable to reduce the line buffer. .

[0105] In VTM-4.0, as shown in FIG. 13, the total number of line buffers required for the luminance component is 11.25 lines. The explanation of the line buffer requirements is as follows. Deblocking of horizontal edges overlapping with the CTU edge requires lines K, L, M, M from the first CTU and lines O, P from the bottom CTU for determination and filtering, so it cannot be performed. Therefore, deblocking of horizontal edges overlapping with the CTU boundary is postponed until the lower CTU arrives. Thus, for lines K, L, M, N, the reconstructed luminance samples must be stored in a line buffer (4 lines). Next, SAO filtering can be performed on lines A to J. Line J can be SAO filtered because the samples at line K do not change due to deblocking. In the case of SAO filtering of line K, the edge offset classification decision is stored only in the line buffer (this is 0.25 luminance lines). ALF filtering can be performed only on lines A to F. As shown in FIG. 13, for 4×4 blocks The deblocking of horizontal edges overlapping with the CTU edge requires lines K, L, M, M from the first CTU and lines O, P from the bottom CTU for determination and filtering, so it cannot be performed. Therefore, deblocking of horizontal edges overlapping with the CTU boundary is postponed until the lower CTU arrives. Thus, for lines K, L, M, N, the reconstructed luminance samples must be stored in a line buffer (4 lines). Next, SAO filtering can be performed on lines A to J. Line J can be SAO filtered because the samples at line K do not change due to deblocking. In the case of SAO filtering of line K, the edge offset classification decision is stored only in the line buffer (this is 0.25 luminance lines). ALF filtering can be performed only on lines A to F. As shown in FIG. 13, for 4×4 blocks The deblocking of horizontal edges overlapping with the CTU boundary is postponed until the lower CTU arrives. Therefore, for lines K, L, M, N, the reconstructed luminance samples must be stored in a line buffer (4 lines). Next, SAO filtering can be performed on lines A to J. Line J can be SAO filtered because the samples at line K do not change due to deblocking. In the case of SAO filtering of line K, the edge offset classification decision is stored only in the line buffer (this is 0.25 luminance lines). ALF filtering can be performed only on lines A to F. As shown in FIG. 13, for 4×4 blocks The deblocking of horizontal edges overlapping with the CTU boundary is postponed until the lower CTU arrives. Therefore, for lines K, L, M, N, the reconstructed luminance samples must be stored in a line buffer (4 lines). Next, SAO filtering can be performed on lines A to J. Line J can be SAO filtered because the samples at line K do not change due to deblocking. In the case of SAO filtering of line K, the edge offset classification decision is stored only in the line buffer (this is 0.25 luminance lines). ALF filtering can be performed only on lines A to F. As shown in FIG. 13, for 4×4 blocks The deblocking of horizontal edges overlapping with the CTU boundary is postponed until the lower CTU arrives. Therefore, for lines K, L, M, N, the reconstructed luminance samples must be stored in a line buffer (4 lines). Next, SAO filtering can be performed on lines A to J. Line J can be SAO filtered because the samples at line K do not change due to deblocking. In the case of SAO filtering of line K, the edge offset classification decision is stored only in the line buffer (this is 0.25 luminance lines). ALF filtering can be performed only on lines A to F. As shown in FIG. 13, for 4×4 blocks SAO filtering can be performed on lines A to J. Line J can be SAO filtered because the samples at line K do not change due to deblocking. In the case of SAO filtering of line K, the edge offset classification decision is stored only in the line buffer (this is 0.25 luminance lines). ALF filtering can be performed only on lines A to F. As shown in FIG. 13, for 4×4 blocks Line J can be SAO filtered because the samples at line K do not change due to deblocking. In the case of SAO filtering of line K, the edge offset classification decision is stored only in the line buffer (this is 0.25 luminance lines). ALF filtering can be performed only on lines A to F. As shown in FIG. 13, for 4×4 blocks In the case of SAO filtering of line K, the edge offset classification decision is stored only in the line buffer (this is 0.25 luminance lines). ALF filtering can be performed only on lines A to F. As shown in FIG. 13, for 4×4 blocks In the case of SAO filtering of line K, the edge offset classification decision is stored only in the line buffer (this is 0.25 luminance lines). ALF filtering can be performed only on lines A to F. As shown in FIG. 13, for 4×4 blocks ALF filtering can be performed only on lines A to F. As shown in FIG. 13, for 4×4 blocks ALF classification is performed for each block. Each 4x4 block classification is an 8x8 activity block. We need an activity window, which is calculated by computing the 1d Laplacian to determine the gradient. A 9x9 window is required to fit the image.

[0106] Therefore, for block classification of 4x4 blocks overlapping with lines G, H, I, and J, J is , we need SAO filtered samples below the virtual boundary. Furthermore, ALF For classification, the SAO filtered samples of lines D, E, and F are needed. In addition, the ALF filtering of line G is achieved by subtracting three SAO filters from the upper line. Therefore, the total line buffer requirement is: It is. -Line KN (horizontal DF pixels): 4 lines - Line DJ (SAO filtered pixels): 7 lines -SAO edge offset classifier value between line J and line K: 0.25 line

[0107] Therefore, the total number of luminance lines required is 7+4+0.25=11.25.

[0108] Similarly, the line buffer requirements for the chroma components are illustrated in Figure 14. The line buffer requirement for this is estimated to be 6.25 lines.

[0109] FIG. 13 shows the loop filter line buffer requirements in VTM-4.0 for the luma component.

[0110] Figure 14 shows the loop filter line buffer requirements in VTM-4.0 for the chroma components. vinegar.

[0111] To eliminate the line buffer requirements of SAO and ALF, in the recent VVC, the concept of virtual boundary (VB) is introduced to reduce the line buffer requirements of ALF. For horizontal CT modified block partitioning and filtering are used for samples near the U boundary as shown in Fig. 13, the VB is shifted upward by only N pixels at the horizontal LCU boundary. For each LCU, SAO and ALF can process pixels above the VB before the lower LCU arrives, but cannot process pixels below the VB until the lower LCU arrives, which is caused by DF. Considering the hardware implementation cost, the space between the proposed VB and the horizontal LCU boundary is set such that the luminance component is 4 pixels ( i.e., N = 4 in Fig. 13 or Fig. 15), and the chroma component is 2 pixels (i.e., N = 2) as shown in Fig. 13, the VB is shifted upward by only N pixels at the horizontal LCU boundary. For each LCU, SAO and ALF can process pixels above the VB before the lower LCU arrives, but cannot process pixels below the VB until the lower LCU arrives, which is caused by DF. Considering the hardware implementation cost, the space between the proposed VB and the horizontal LCU boundary is set such that the luminance component is 4 pixels ( i.e., N = 4 in Fig. 13 or Fig. 15), and the chroma component is 2 pixels (i.e., N = 2) i.e., N = 4 in Fig. 13 or Fig. 15), and the chroma component is 2 pixels (i.e., N = 2) i.e., N = 4 in Fig. 13 or Fig. 15), and the chroma component is 2 pixels (i.e., N = 2) until the lower LCU arrives, which is caused by DF. Considering the hardware implementation cost, the space between the proposed VB and the horizontal LCU boundary is set such that the luminance component is 4 pixels (

[0112] Fig. 15 shows the modified partitioning at the virtual boundary.

[0113] As shown in Fig. 16, the modified block partitioning for the luminance component is applied. For the 1D Laplacian gradient calculation of 4×4 blocks above the virtual boundary, only samples above the virtual boundary are used. Similarly, for the 1D Laplacian gradient calculation of 4×4 blocks below the virtual boundary, only samples below the virtual boundary are used. Therefore, by taking into account the reduced number of samples used in the 1D Laplacian gradient calculation, the quantization of the activity value A is scaled. For the 1D Laplacian gradient calculation of 4×4 blocks above the virtual boundary, only samples above the virtual boundary are used. Similarly, for the 1D Laplacian gradient calculation of 4×4 blocks below the virtual boundary, only samples below the virtual boundary are used. Therefore, by taking into account the reduced number of samples used in the 1D Laplacian gradient calculation, the quantization of the activity value A is scaled. For the 1D Laplacian gradient calculation of 4×4 blocks above the virtual boundary, only samples above the virtual boundary are used. Similarly, for the 1D Laplacian gradient calculation of 4×4 blocks below the virtual boundary, only samples below the virtual boundary are used. Therefore, by taking into account the reduced number of samples used in the 1D Laplacian gradient calculation, the quantization of the activity value A is scaled. For the 1D Laplacian gradient calculation of 4×4 blocks above the virtual boundary, only samples above the virtual boundary are used. Similarly, for the 1D Laplacian gradient calculation of 4×4 blocks below the virtual boundary, only samples below the virtual boundary are used. Therefore, by taking into account the reduced number of samples used in the 1D Laplacian gradient calculation, the quantization of the activity value A is scaled. For the 1D Laplacian gradient calculation of 4×4 blocks above the virtual boundary, only samples above the virtual boundary are used. Similarly, for the 1D Laplacian gradient calculation of 4×4 blocks below the virtual boundary, only samples below the virtual boundary are used. Therefore, by taking into account the reduced number of samples used in the 1D Laplacian gradient calculation, the quantization of the activity value A is scaled. For the 1D Laplacian gradient calculation of 4×4 blocks above the virtual boundary, only samples above the virtual boundary are used. Similarly, for the 1D Laplacian gradient calculation of 4×4 blocks below the virtual boundary, only samples below the virtual boundary are used. Therefore, by taking into account the reduced number of samples used in the 1D Laplacian gradient calculation, the quantization of the activity value A is scaled.

[0114] For the filtering process, the mirrored (symmetric) padding operation at the virtual boundary is used for both the luminance and chroma components. As shown in Fig. 16, for filtering For the filtering process, the mirrored (symmetric) padding operation at the virtual boundary is used for both the luminance and chroma components. As shown in Fig. 16, for filtering When the sample to be tiled is located below the virtual boundary, padding is applied to the neighboring sample located above the virtual boundary. On the other hand, the corresponding sample on the other side is also padded symmetrically.

[0115] Figure 16 shows the modified ALF filtering for the luminance component at the virtual boundary.

[0116] As another example, when padding one sample located at (i,j) (e.g., P0A having a dotted line in Figure 17B), as shown in Figures 17A to 17C, the corresponding sample located at (m,n) sharing the same filter coefficients (e.g., P3B having a dotted line in Figure 17B) is also padded even if the sample is available.

[0117] Figure 17A shows that it is necessary to pad one required line (for each side) above / below the VB.

[0118] Figure 17B shows that it is necessary to pad two required lines (for each side) above / below the VB.

[0119] Figure 17C shows that it is necessary to pad three required lines (for each side) above / below the VB.

[0120] Figure 27 shows an example of the modified luminance ALF filtering at the virtual boundary.

[0121] Unlike the mirror (symmetric) padding method used at the horizontal CTU boundary, when filtering across the boundary is disabled, iterative (one-sided) padding processing is applied to the boundaries of slices, tiles, and sub-pictures. At the picture boundary as well, iterative (one-sided) ​​​​​​​​​​​ ) Padding processing is applied. The padded samples are used for both classification and filtering processing. FIG. 18 shows an example of the iterative padding method for luminance ALF filtering at picture / sub-picture / slice / tile boundaries .

[0122] FIG. 18 shows an example of iterative padding for luminance ALF filtering at the boundaries of pictures / sub-pictures / slices / tiles .

[0123] 2.7. 360-degree video coding The motion compensation of horizontal wraparound in VTM5 is a 360-degree specific coding tool designed to improve the visual quality of the reconstructed 360-degree video in the equirectangular (ERP) projection format . In conventional motion compensation, when the motion vector points to samples beyond the picture boundary in the reference picture, iterative padding is applied and the value of the out-of-boundary sample is derived by copying from the nearest neighbor at the corresponding picture boundary . In the case of 360-degree video, this iterative padding method is not suitable and may cause a visual artifact called a "seam artifact" in the reconstructed viewport video . Since 360-degree video is captured on a spherical surface and essentially has no "boundary", the reference samples outside the reference picture boundary in the projected domain can always be obtained from the neighboring samples in the spherical domain . In the case of a general projection format, since it includes coordinate conversion from 2D to 3D and from 3D to 2D, as well as sample interpolation for the position of fractional samples, the corresponding neighboring samples in the spherical domain can always be obtained from the neighboring samples in the spherical domain . . . . . . Deriving samples can be difficult. This problem is much easier in the case of the left and right boundaries of the ERP projection format. Because the spherical neighborhood outside the boundary of the left picture can be obtained from the samples inside the boundary of the right picture, and vice versa. Fig. 19 shows an example of motion compensation for horizontal wrap-around in VVC. In the case of the left and right boundaries of the ERP projection format, it is much easier. Because the spherical neighborhood outside the boundary of the left picture can be obtained from the samples inside the boundary of the right picture, and vice versa. The part outside the boundary of the left picture can be obtained from the samples inside the boundary of the right picture, and vice versa. Fig. 19 shows an example of motion compensation for horizontal wrap-around in VVC.

[0124] The motion compensation process for horizontal wrap-around is performed as shown in Fig. 19. When a part of the reference block is outside the left (or right) boundary of the reference picture in the projected domain, instead of repetitive padding, the "outside the boundary" part is obtained from the corresponding spherical neighborhood located inside the reference picture and is directed towards the right (or left) boundary in the projected domain. Repetitive padding is only used for the boundaries of the upper picture and the lower picture. As shown in Fig. 19, the motion compensation for horizontal wrap-around can be combined with a non-standard padding method often used in 360-degree video coding. In VVC, this is achieved by signaling a high-level syntax element to indicate the wrap-around offset, which should be set to the ERP picture width before padding. That is, this syntax is used to appropriately adjust the position of the horizontal wrap-around. This syntax is not affected by the specific padding amount at the boundaries of the left and right pictures, so it naturally can handle the asymmetric padding of the ERP picture, that is, it can also handle the case where the left and right padding is different. The motion compensation for horizontal wrap-around provides more meaningful information for motion compensation when the reference samples are outside the left and right boundaries of the reference picture. When a part of the reference block is outside the left (or right) boundary of the reference picture in the projected domain Instead of repetitive padding, the "outside the boundary" part is obtained from the corresponding spherical neighborhood located inside the reference picture and is directed towards the right (or left) boundary in the projected domain. The part outside the boundary of the left picture can be obtained from the samples inside the boundary of the right picture, and vice versa. Repetitive padding is only used for the boundaries of the upper picture and the lower picture. As shown in Fig. 19, the motion compensation for horizontal wrap-around can be combined with a non-standard padding method often used in 360-degree video coding. In VVC, this is achieved by signaling a high-level syntax element to indicate the wrap-around offset, which should be set to the ERP picture width before padding. That is, this syntax is used to appropriately adjust the position of the horizontal wrap-around. This syntax is not affected by the specific padding amount at the boundaries of the left and right pictures, so it naturally can handle the asymmetric padding of the ERP picture, that is, it can also handle the case where the left and right padding is different. The motion compensation for horizontal wrap-around provides more meaningful information for motion compensation when the reference samples are outside the left and right boundaries of the reference picture. That is, this syntax is used to appropriately adjust the position of the horizontal wrap-around. This syntax is not affected by the specific padding amount at the boundaries of the left and right pictures, so it naturally can handle the asymmetric padding of the ERP picture, that is, it can also handle the case where the left and right padding is different. The motion compensation for horizontal wrap-around provides more meaningful information for motion compensation when the reference samples are outside the left and right boundaries of the reference picture. The motion compensation for horizontal wrap-around provides more meaningful information for motion compensation when the reference samples are outside the left and right boundaries of the reference picture. The motion compensation for horizontal wrap-around provides more meaningful information for motion compensation when the reference samples are outside the left and right boundaries of the reference picture.

[0125] In the case of a projection format consisting of multiple faces, no matter which kind of compact frame packing array is used, in the frame-packed picture, there will be discontinuities between two or more adjacent faces. For example, considering the 3×2 frame packing configuration shown in FIG. 20, the three upper faces are continuous in the 3D shape, and the three lower faces are continuous in the 3D shape, but the upper half and the lower half of the frame-packed picture are discontinuous in the 3D shape. Performing an in-loop filtering operation across this discontinuity may cause visible seam artifacts in the reconstructed video.

[0126] To reduce the seam artifacts of the faces, the in-loop filtering operation can be disabled across the discontinuities in the frame-packed picture. Syntax has been proposed to signal the virtual boundaries in the vertical and / or horizontal directions where the in-loop filtering operation is disabled. Comparing with using two tiles (one for each set of continuous faces) and disabling the in-loop filtering operation between the tiles, the proposed signaling method is more flexible because the size of the face does not need to be a multiple of the size of the CTU.

[0127] FIG. 20 shows an image of the HEC in a 3×2 layout.

[0128] 2.8. JVET-P0080:CE5-2.1,CE5-2.2: Cross-component adaptive loop filter FIG. 21A shows the placement of CC-ALF[1] with respect to other loop filters. CC-ALF is , by applying the linear diamond filter of FIG. 21B to the luminance channel for each chroma component, the operation is performed and is expressed as follows. Here

[0129]

Equation

[0130] where (x, y) is the position of the finely adjusted chroma component i. (x C , y C ) is the luminance position based on (x, y). S i is the filter support in luminance for chroma component i. c i (x0, y0) represents the filter coefficient. (2-14)

[0131] FIG. 21A shows the arrangement of CC-ALF with respect to other loop filters. FIG. 21B shows the diamond filter. Here

[0132] Based on the spatial magnification between the luminance plane and the chroma plane, the luminance position (x , y C , y C ) that is the center of the support area is calculated. All filter coefficients are transmitted by APS and have an 8-bit dynamic range. In the slice header, APS may be referenced. The CC-ALF coefficients used for each chroma component of the slice are also stored in a buffer corresponding to the temporal sublayer. The reuse of these sets of temporal sublayer filter coefficients is facilitated using the slice level flag. The application of the CC-ALF filter is controlled with variable block sizes (i.e., 16×16, 32×32, 64×64, 128×128) and is signaled by the context encoding flag received for each block of the sample. Here The CC-ALF coefficients used for each chroma component of the slice are also stored in a buffer corresponding to the temporal sublayer. The reuse of these sets of temporal sublayer filter coefficients is facilitated using the slice level flag. The application of the CC-ALF filter is controlled with variable block sizes (i.e., 16×16, 32×32, 64×64, 128×128) and is signaled by the context encoding flag received for each block of the sample. Here The reuse of these sets of temporal sublayer filter coefficients is facilitated using the slice level flag. The application of the CC-ALF filter is controlled with variable block sizes (i.e., 16×16, 32×32, 64×64, 128×128) and is signaled by the context encoding flag received for each block of the sample. Here The reuse of these sets of temporal sublayer filter coefficients is facilitated using the slice level flag. The application of the CC-ALF filter is controlled with variable block sizes (i.e., 16×16, 32×32, 64×64, 128×128) and is signaled by the context encoding flag received for each block of the sample. The lock size, together with the CC-ALF activation flag, is received at slice level for each chroma component. For the virtual boundaries in the horizontal direction, boundary padding uses repetition. For the remaining boundaries, the same type of padding as the normal ALF is used. For the virtual boundaries in the horizontal direction, boundary padding uses repetition. For the remaining boundaries, the same type of padding as the normal ALF is used. For the remaining boundaries, the same type of padding as the normal ALF is used.

[0133] 2.8.1. Specification of CC-ALF in JVET-P0080 x.x.x.x Cross-component filtering process for blocks of chroma samples The input to this process is as follows. - Luminance picture sample array recPicture reconstructed before the luminance adaptive loop filtering process recPicture L - Filtered reconstructed chroma picture sample array alfPicture C - Position (xC, yC) defining the top-left sample of the current block of chroma samples with respect to the top-left sample of the current picture - Position (xC, yC) defining the top-left sample of the current block of chroma samples with respect to the top-left sample of the current picture - Width ccAlfWidth of the block of chroma samples - Height ccAlfheight of the block of chroma samples - Cross-component filter coefficients CcAlfCoeff[j] for j = 0..13 The output of this process is the modified, filtered, and reconstructed chroma picture sample array ccAlfPicture. The output of this process is the modified, filtered, and reconstructed chroma picture sample array ccAlfPicture. The coding tree block luminance position (xCtb, yCtb) is derived as follows. The coding tree block luminance position (xCtb, yCtb) is derived as follows. xCtb = (((xC * SubWidthC) >> CtbLog2SizeY) << C tbLog2SizeY (8-1229) yCtb = (((yC * SubHeightC) >> CtbLog2SizeY) << CtbLog2SizeY (8-1229) To derive the filtered reconstructed chroma sample ccAlfPicture[xC + x][y C [xC + x][yC + y] C [xC + x][yC + y] (where x = 0..ccAlfWidth - 1, y = 0..ccAlfHeight - 1 ) each reconstructed chroma sample inside the current chroma block is filtered as follows . - The luminance position (xL, yL) corresponding to the current chroma sample at chroma position (xC + x, yC + y) is set equal to ((xC + x)*SubWidthC, (yC + y)*SubHe ightC). - For i = -2..2, j = -2..3, the luminance positions (h L ) within the array recPicture are derived as follows (h xL+i , v yL+j ). - If pps_loop_filter_across_virtual_boundar ies_disabled_flag equals 1, PpsVirtualBounda riesPosX[n]%CtbSizeY does not equal 0, and xL - PpsV irtualBoundariesPosX[n] is greater than or equal to 0 and less than 3 at n = 0..pps _num_ver_virtual_boundaries - 1, the following applies . h xL+i = Clip3(PpsVirtualBoundariesPosX[n], pic_width_in_luma_samples - 1, xL + i) (8 - 122 ) - Or, pps_loop_filter_across_virtual_bo The boundaries_disabled_flag is equal to 1, and PpsVirtualB oundariesPosX[n] % CtbSizeY is not equal to 0, and n = 0. .pps_num_ver_virtual_boundaries - 1, when Pps VirtualBoundariesPosX[n] is greater than 0 and less than 4, the following applies. h x+i = Clip3(0, PpsVirtualBoundariesPosX[n - 1, xL + i) (8 - 1230) - Otherwise, the following applies. h x+i = Clip3(0, pic_width_in_luma_samples - 1, xL + i) (8 - 1231) - pps_loop_filter_across_virtual_boundar ies_disabled_flag is equal to 1, PpsVirtualBounda riesPosY[n] % CtbSizeY is not equal to 0, and n = 0..pps_ num_hor_virtual_boundaries - 1, when yL - PpsVi rtualBoundariesPosY[n] is greater than or equal to 0 and less than 3, the following applies is applied. v y+j = Clip3(PpsVirtualBoundariesPosY[n], p ic_height_in_luma_samples - 1, yL + j) (8 - 123 2) - Or, pps_loop_filter_across_virtual_bo undaries_disabled_flag is equal to 1, PpsVirtualB When boundariesPosY[n] % CtbSizeY is not equal to 0 and n = 0. . At pps_num_hor_virtual_boundaries - 1 in Pps When VirtualBoundariesPosY[n] - yL is greater than 0 and less than 4 The following applies. v y+j = Clip3(0, PpsVirtualBoundariesPosY[n -1, yL + j) (8 - 1233) - Otherwise, the following applies. v y+j = Clip3(0, pic_height_in_luma_sample s - 1, yL + j) (8 - 1234) - The variables clipLeftPos, clipRightPos, clipTopPos, and clipBottomPos are derived by calling the ALF boundary position derivation process as specified in clause 8.8.5.5 with (xCtb, yCtb) and (xL - xCtb , yL - yCtb) as inputs. - The offsets yM2, yM1, yP1, yP2, yP3 of the vertical luminance sample positions corresponding to the vertical sample positions yL, clipLeftPos, and clipRigh tPos are specified in Table 2 - 6. - The horizontal sample position offsets xM1, xM2, xP1, xP2 corresponding to the horizontal luminance sample positions xL, clipLeftPos, and clipRi ghtPos are specified in Table 2 - 7. The variable curr is derived as follows. curr = alfPicture C [xC + x, yC + y] (8 - 1286) - The array of cross - component filter coefficients f[j] is derived as follows with j = 0..13 is output. f[j] = CcAlfCoeff[j] (8-1287) The variable sum is derived as follows. sum = f[0] * recPicture L [h x ,v y+yM2 + f[1] * recPicture L [h x+xM1 ,v y+yM1 + f[2] * recPicture L [h x ,v y+yM1 + f[3] * recPicture L [h x+xP1 ,v y+yM1 + f[4] * recPicture L [h x+xM2 ,v y + f[5] * recPicture L [h x+xM1 ,v y + f[6] * recPicture L [h x ,v y + f[7] * recPicture L [h x+xP1 ,v y + f[4] * recPicture L [h x+xP2 ,v y + (8-1289) f[4] * recPicture L [h x+xM2 ,v y+yP1 + f[8] * recPicture L [h x+xM1 ,v y+yP1 + f[9] * recPicture L [h x ,v y+yP1 + f

[10] * recPictureL [h x+xP1 ,v y+yP1 + f[4]*recPicture L [h x+xP2 ,v y+yP1 + f

[11] *recPicture L [h x+xM1 ,v y+yP2 + f

[12] *recPicture L [h x ,v y+yP2 + f

[13] *recPicture L [h x+xP1 ,v y+yP2 + f[0]*recPicture L [h x ,v y+yP3 sum=curr+(sum+64)>>7) (8-1290) -Corrected and filtered reconstructed chroma picture sample array ccAlfPi cture[xC+x][yC+y] is derived as follows. ccAlfPicture[xC+x][yC+y]=Clip3(0,(1<<Bi tDepth C )-1,sum) (8-1291)

[0134]

Table 8

[0135]

Table 9

[0136] 2.8.2. Padding method at virtual boundaries in JVET-P0080 Similar to the luminance ALF / chroma ALF, in the case of CC-ALF in JVET-P0080 ​At the ALF virtual boundary, iterative padding is used. As shown in Figure 22, for the ALF when the luminance samples above or below the virtual boundary are unavailable, the nearest sample line is used for padding. The detailed padding method is shown in Table 2-6.

[0137] 2.9. JVET-P1008:CE5 - Related: Design of CC-ALF In JVET-O0636[1] and CE5-2.1[2], the cross-component adaptive loop filter (CC-ALF) was introduced and investigated. This filter uses a linear filter to filter the luminance sample values and generates residual correction for the chroma channel from the juxtaposed and filtered outputs. This filter is designed to operate in parallel with the existing luminance ALF.

[0138] A simplified and more consistent CC-ALF design with the existing ALF is proposed. This design uses a 3×4 rhombus with eight unique coefficients. As a result, the number of multiplications is reduced by 43% compared to the 5×6 design considered in CE5-2.1. When imposing a restriction to enable either the chroma ALF or CC-ALF for the chroma component of the CTU, the multiplication count per pixel is limited to 16 (the current ALF is 15). The dynamic range of the filter coefficients is limited to 6-bit signed. The filter explanations for both the proposed solution and the CE5-2.1 solution are shown in Figure 23.

[0139] To align with the existing ALF design, the filter coefficients are signaled in the APS. Up to four filters are supported, and the filter selection at the CTU level is shown. A ​​​​​​​​​​​​To further harmonize with LF, symmetric line selection is used at the virtual boundary. Finally, to limit the required memory capacity for the corrected output, the CC-ALF residual output is clipped from -2 to 2 BitDepthC-1 minus 1. BitDepthC-1

[0140] Specification of CC-ALF in JVET-P1008 Cross-component filtering process for a block of x.x.x.x chroma samples The input to this process is as follows. - Luma picture sample array reconfigured before the luma adaptive loop filtering process recPicture L - Filtered reconfigured chroma picture sample array alfPicture C - Current chroma coding tree block for the top-left sample of the current picture The chroma position (xCtbC, yCtbC) that defines the top-left sample of the top-left sample of the block - Width ccAlfWidth of the block of chroma samples - Height ccAlfheight of the block of chroma samples - Cross-component filter coefficients CcAlfCoeff[j] for j = 0..7 The output of this process is the corrected, filtered, and reconfigured chroma picture sample array ccAlfPicture. The coding tree block luma position (xCtb, yCtb) is derived as follows follows. xCtb = (((xCtbC * SubWidthC) >> CtbLog2SizeY) < <ctblog2sizey (8-1229) yctb="(((yCtbC*SubHeightC)">>CtbLog2SizeY )<<CtbLog2SizeY (8 - 1229) To derive the filtered reconstructed chroma sample ccAlfPicture[xCtbC + x][yCtbC + y], the sample alfPicture C [xCtb C + x][yCtbC + y] (where x = 0..ccAlfWidth - 1, y = 0.. ccAlfHeight - 1) for each reconstructed chroma sample inside the current chroma block is filtered as follows. - For the current chroma sample at chroma position (xCtbC + x, yCtbC + y), the corresponding luminance position (xL, yL) is set equal to ((xCtbC + x)*SubWidthC, (yC tbC + y)*SubHeightC). For the luminance positions (h L , v ) where i = -1..1, j = -1..2 in the array recPicture xL+i ,v yL+j are derived as follows. - When pps_loop_filter_across_virtual_boundar ies_disabled_flag is equal to 1, PpsVirtualBounda riesPosX[n]%CtbSizeY is not equal to 0, and xL - PpsV irtualBoundariesPosX[n] is greater than or equal to 0 and less than 3 for n = 0..pps _num_ver_virtual_boundaries - 1, the following is applied. h xL+i =Clip3(PpsVirtualBoundariesPosX[n], pic_width_in_luma_samples - 1, xL + i) (8 - 122 9)​​ - Or, when pps_loop_filter_across_virtual_bo undaries_disabled_flag is equal to 1, PpsVirtualB oundariesPosX[n] % CtbSizeY is not equal to 0, and n = 0. .pps_num_ver_virtual_boundaries - 1, when Pps VirtualBoundariesPosX[n] is greater than 0 and less than 4, the following applies. The following applies. h x+i = Clip3(0, PpsVirtualBoundariesPosX[n - 1, xL + i) (8 - 1230) - Otherwise, the following applies. h x+i = Clip3(0, pic_width_in_luma_samples - 1, xL + i) (8 - 1231) - pps_loop_filter_across_virtual_boundar ies_disabled_flag is equal to 1, PpsVirtualBounda riesPosY[n] % CtbSizeY is not equal to 0, and n = 0..pps_ num_hor_virtual_boundaries - 1, when yL - PpsVi rtualBoundariesPosY[n] is greater than or equal to 0 and less than 3, the following applies The following applies. v y+j = Clip3(PpsVirtualBoundariesPosY[n], p ic_height_in_luma_samples - 1, yL + j) (8 - 123 2) - Or, when pps_loop_filter_across_virtual_bo The boundaries_disabled_flag is equal to 1, and PpsVirtualB oundariesPosY[n]%CtbSizeY is not equal to 0, and n = 0. .pps_num_hor_virtual_boundaries - 1 where Pps VirtualBoundariesPosY[n] - yL is greater than 0 and less than 4 If so, the following applies. v y+j =Clip3(0, PpsVirtualBoundariesPosY[n -1, yL + j) (8 - 1233) - Otherwise, the following applies. v y+j =Clip3(0, pic_height_in_luma_sample s - 1, yL + j) (8 - 1234) - The variables clipLeftPos, clipRightPos, clipTopPos, and clipBottomPos are derived by calling the ALF boundary position derivation process as specified in clause 8.8.5.5 with (xCtb, yCtb) and (xL - xCtb , yL - yCtb) as inputs. - The offsets yM1, yP1, yP2 of the vertical luminance sample positions corresponding to the vertical sample positions yL, clipLeftPos, and clipRigh tPos are specified in Table 2 - 8. - The horizontal sample position offsets xM1 and xP1 corresponding to the horizontal luminance sample positions xL, clipLeftPos, and clipRi ghtPos are specified in Table 2 - 9. - The variable curr is derived as follows. curr = alfPicture curr = alfPicture curr = alfPicture C [xCtbC + x, yCtbC + y] (8 - 1 286) - The array of cross-component filter coefficients f[j] is derived as follows for j = 0..7 as follows. f[j]=CcAlfCoeff[j] (8-1287) The variable sum is derived as follows. sum=f[0]*recPicture L [h x ,v y+yM1 + f[1]*recPicture L [h x+xM1 ,v y + f[2]*recPicture L [h x ,v y + f[3]*recPicture L [h x+xP1 ,v y + (8-1289) f[4]*recPicture L [h x+xM1 ,v y+yP1 + f[5]*recPicture L [h x ,v y+yP1 + f[6]*recPicture L [h x+xP1 ,v y+yP1 + f[7]*recPicture L [h x ,v y+yP2 sum=Clip3(-(1<<(BitDepth C -1)),(1<<(BitDe pth C -1))-1,sum) (8-1290) sum=curr+(sum+64)>>(7+(BitDepth Y -BitDept h C )) (8-1290) ​-Corrected and Filtered Reconstructed Chroma Picture Sample Array ccAlfPi cture[xCtbC+x][yCtbC+y] is derived as follows. ccAlfPicture[xCtbC+x][yCtbC+y]=Clip3(0,( 1<<BitDepth C )-1,sum) (8-1291)

[0141]

Table 10

[0142]

Table 11

[0143] 2.9.1 Padding Method at Virtual Boundary in JVET-P1008 For CC-ALF of JVET-P1008, mirror (symmetric) padding is used at the ALF virtual boundary. As shown in Figure 24, when the luminance samples above or below the ALF virtual boundary are unavailable, the nearest sample line is used for padding, and the corresponding samples also need to be padded. The detailed padding method is also shown in Table 2-9.

[0144] 2.10 Simple Method of CC-ALF in JVET-P2025 2.10.1 Alternative Filter Shapes The CC-ALF filter shape is modified to have 8 or 6 coefficients as shown in the following figure.

[0145] Figure 25 shows the CC-ALF filter shape with 8 coefficients in JVET-P0106.

[0146] ​​Figure 26 shows the CC-ALF filter shapes for six coefficients in JVET-P0173. Yes.

[0147] Figure 27 shows the CC-ALF filter shapes for six coefficients in JVET-P0251. Yes.

[0148] 2.10.2. Joint chroma cross-component adaptive filtering The joint chroma cross-component adaptive loop filter (JC-CCALF) uses only one CCALF filter coefficient trained at the encoder to generate a filtered output as a fine-tuning signal, which is directly added to the Cb component and then appropriately weighted and added to the Cr component after that. The filter is indicated at the CTU level or in block sizes and signaled for each slice. The joint chroma cross-component adaptive loop filter (JC-CCALF) uses only one CCALF filter coefficient trained at the encoder to generate a filtered output as a fine-tuning signal, which is directly added to the Cb component and then appropriately weighted and added to the Cr component after that. The filter is indicated at the CTU level or in block sizes and signaled for each slice. The joint chroma cross-component adaptive loop filter (JC-CCALF) uses only one CCALF filter coefficient trained at the encoder to generate a filtered output as a fine-tuning signal, which is directly added to the Cb component and then appropriately weighted and added to the Cr component after that. The filter is indicated at the CTU level or in block sizes and signaled for each slice. The joint chroma cross-component adaptive loop filter (JC-CCALF) uses only one CCALF filter coefficient trained at the encoder to generate a filtered output as a fine-tuning signal, which is directly added to the Cb component and then appropriately weighted and added to the Cr component after that. The filter is indicated at the CTU level or in block sizes and signaled for each slice. The joint chroma cross-component adaptive loop filter (JC-CCALF) uses only one CCALF filter coefficient trained at the encoder to generate a filtered output as a fine-tuning signal, which is directly added to the Cb component and then appropriately weighted and added to the Cr component after that. The filter is indicated at the CTU level or in block sizes and signaled for each slice.

[0149] Such chroma block sizes that are supported range from the minimum chroma CTU size to the current chroma CTU size. The minimum chroma CTU size is the minimum value between the possible minimum width and height of the chroma CTU, i.e., Min(32 / SubWidthC, 32 / SubHeightC), and the current chroma CTU size is the minimum value between the width and height of the current chroma CTU, i.e., Min(CtbWidthC, CtbHeightC). For example, when setting the CTU size to a maximum of 128×128, the JC-CCALF chroma block size for one slice is either 32×32, 64×64, 128×128 for 4:4:4 video, or 16×16, 32×32, 64×64 for 4:2:0, 4:2:2 video. Such chroma block sizes that are supported range from the minimum chroma CTU size to the current chroma CTU size. The minimum chroma CTU size is the minimum value between the possible minimum width and height of the chroma CTU, i.e., Min(32 / SubWidthC, 32 / SubHeightC), and the current chroma CTU size is the minimum value between the width and height of the current chroma CTU, i.e., Min(CtbWidthC, CtbHeightC). For example, when setting the CTU size to a maximum of 128×128, the JC-CCALF chroma block size for one slice is either 32×32, 64×64, 128×128 for 4:4:4 video, or 16×16, 32×32, 64×64 for 4:2:0, 4:2:2 video. Such chroma block sizes that are supported range from the minimum chroma CTU size to the current chroma CTU size. The minimum chroma CTU size is the minimum value between the possible minimum width and height of the chroma CTU, i.e., Min(32 / SubWidthC, 32 / SubHeightC), and the current chroma CTU size is the minimum value between the width and height of the current chroma CTU, i.e., Min(CtbWidthC, CtbHeightC). For example, when setting the CTU size to a maximum of 128×128, the JC-CCALF chroma block size for one slice is either 32×32, 64×64, 128×128 for 4:4:4 video, or 16×16, 32×32, 64×64 for 4:2:0, 4:2:2 video. Such chroma block sizes that are supported range from the minimum chroma CTU size to the current chroma CTU size. The minimum chroma CTU size is the minimum value between the possible minimum width and height of the chroma CTU, i.e., Min(32 / SubWidthC, 32 / SubHeightC), and the current chroma CTU size is the minimum value between the width and height of the current chroma CTU, i.e., Min(CtbWidthC, CtbHeightC). For example, when setting the CTU size to a maximum of 128×128, the JC-CCALF chroma block size for one slice is either 32×32, 64×64, 128×128 for 4:4:4 video, or 16×16, 32×32, 64×64 for 4:2:0, 4:2:2 video. Such chroma block sizes that are supported range from the minimum chroma CTU size to the current chroma CTU size. The minimum chroma CTU size is the minimum value between the possible minimum width and height of the chroma CTU, i.e., Min(32 / SubWidthC, 32 / SubHeightC), and the current chroma CTU size is the minimum value between the width and height of the current chroma CTU, i.e., Min(CtbWidthC, CtbHeightC). For example, when setting the CTU size to a maximum of 128×128, the JC-CCALF chroma block size for one slice is either 32×32, 64×64, 128×128 for 4:4:4 video, or 16×16, 32×32, 64×64 for 4:2:0, 4:2:2 video. Such chroma block sizes that are supported range from the minimum chroma CTU size to the current chroma CTU size. The minimum chroma CTU size is the minimum value between the possible minimum width and height of the chroma CTU, i.e., Min(32 / SubWidthC, 32 / SubHeightC), and the current chroma CTU size is the minimum value between the width and height of the current chroma CTU, i.e., Min(CtbWidthC, CtbHeightC). For example, when setting the CTU size to a maximum of 128×128, the JC-CCALF chroma block size for one slice is either 32×32, 64×64, 128×128 for 4:4:4 video, or 16×16, 32×32, 64×64 for 4:2:0, 4:2:2 video. Such chroma block sizes that are supported range from the minimum chroma CTU size to the current chroma CTU size. The minimum chroma CTU size is the minimum value between the possible minimum width and height of the chroma CTU, i.e., Min(32 / SubWidthC, 32 / SubHeightC), and the current chroma CTU size is the minimum value between the width and height of the current chroma CTU, i.e., Min(CtbWidthC, CtbHeightC). For example, when setting the CTU size to a maximum of 128×128, the JC-CCALF chroma block size for one slice is either 32×32, 64×64, 128×128 for 4:4:4 video, or 16×16, 32×32, 64×64 for 4:2:0, 4:2:2 video. Such chroma block sizes that are supported range from the minimum chroma CTU size to the current chroma CTU size. The minimum chroma CTU size is the minimum value between the possible minimum width and height of the chroma CTU, i.e., Min(32 / SubWidthC, 32 / SubHeightC), and the current chroma CTU size is the minimum value between the width and height of the current chroma CTU, i.e., Min(CtbWidthC, CtbHeightC). For example, when setting the CTU size to a maximum of 128×128, the JC-CCALF chroma block size for one slice is either 32×32, 64×64, 128×128 for 4:4:4 video, or 16×16, 32×32, 64×64 for 4:2:0, 4:2:2 video. Such chroma block sizes that are supported range from the minimum chroma CTU size to the current chroma CTU size. The minimum chroma CTU size is the minimum value between the possible minimum width and height of the chroma CTU, i.e., Min(32 / SubWidthC, 32 / SubHeightC), and the current chroma CTU size is the minimum value between the width and height of the current chroma CTU, i.e., Min(CtbWidthC, CtbHeightC). For example, when setting the CTU size to a maximum of 128×128, the JC-CCALF chroma block size for one slice is either 32×32, 64×64, 128×128 for 4:4:4 video, or 16×16, 32×32, 64×64 for 4:2:0, 4:2:2 video.

[0150] Figure 28 shows the workflow of JC-CCALF.

[0151] 3. Technical problems solved by the technical solutions disclosed in this specification The current design of the boundary padding for CC-ALF has the following problems. 1. The padding method at the ALF virtual boundary in CC-ALF is not very efficient. Potentially padded samples may be used, so it may be sub-optimal. 2. Different methods for processing the ALF virtual boundary and the boundaries of the video unit (e.g., picture / sub-picture / slice / tile boundaries) as well as the 360-degree virtual boundary, i.e., different padding methods exist. 3. In ALF, mirror padding is applied, the distance to the current sample is calculated, and it is determined which corresponding sample needs to be padded. However, in CC-ALF, especially in the case of 4:2:0, multiple luminance samples are involved in filtering one chroma sample. The method for determining which corresponding sample needs to be padded is unclear.

[0152] 4. List of examples of technologies and embodiments What is listed below should be considered as examples for explaining general concepts. These items should not be interpreted in a narrow sense. Furthermore, these items can be combined in any way.

[0153] In some embodiments described in this disclosure, the term "CC-ALF" refers to the second color component (e.g., Y) or a plurality of color components (e.g., both Y and Cr) in the A coding tool for refining samples in a first color component (e.g., Cb) using sample values. The present invention is not limited to the CC-ALF technology described in [1] to [4]. The "set of corresponding filtering samples" may be used to represent the samples included in the filter support. For example, in the case of CC-ALF, the "set of corresponding filtering samples" may be used to derive the fine adjustment / offset of the chroma samples. The juxtaposed luminance samples of the chroma samples and the luminance samples in the vicinity of the juxtaposed chroma samples used to derive the fine adjustment / offset of the chroma samples. The padding method used for the ALF virtual boundary may be referred to as "mirror padding". Padding is performed on the first unavailable sample located at (i,j), and even if the second sample is available, padding is also performed on the second sample (e.g., the corresponding sample located at (m,n) sharing the same distance from the current luminance sample) defined by the "corresponding sample of the first sample" in the filter support of ALF. The juxtaposed luminance samples of the chroma samples and the luminance samples in the vicinity of the juxtaposed chroma samples used to derive the fine adjustment / offset of the chroma samples. It may be used to represent the juxtaposed luminance samples of the chroma samples and the luminance samples in the vicinity of the juxtaposed chroma samples used to derive the fine adjustment / offset of the chroma samples.

[0154] The padding method used for the ALF virtual boundary may be referred to as "mirror padding". Padding is performed on the first unavailable sample located at (i,j), and even if the second sample is available, padding is also performed on the second sample (e.g., the corresponding sample located at (m,n) sharing the same distance from the current luminance sample) defined by the "corresponding sample of the first sample" in the filter support of ALF. Padding is performed on the first unavailable sample located at (i,j), and even if the second sample is available, padding is also performed on the second sample (e.g., the corresponding sample located at (m,n) sharing the same distance from the current luminance sample) defined by the "corresponding sample of the first sample" in the filter support of ALF. Even if the second sample is available, padding is also performed on the second sample (e.g., the corresponding sample located at (m,n) sharing the same distance from the current luminance sample) defined by the "corresponding sample of the first sample" in the filter support of ALF. The second sample (e.g., the corresponding sample located at (m,n) sharing the same distance from the current luminance sample) defined by the "corresponding sample of the first sample" in the filter support of ALF. Padding is also performed on the second sample (e.g., the corresponding sample located at (m,n) sharing the same distance from the current luminance sample) defined by the "corresponding sample of the first sample" in the filter support of ALF. Padding is also performed on the second sample (e.g., the corresponding sample located at (m,n) sharing the same distance from the current luminance sample) defined by the "corresponding sample of the first sample" in the filter support of ALF.

[0155] In one example, vertical padding is used. For example, the sample to be padded located at (x,y1) is set equal to the sample located at (x,y2). Here, y1 represents the y coordinate of the sample or the corresponding sample, and y2 represents the y coordinate of the sample used for padding. The sample to be padded located at (x,y1) is set equal to the sample located at (x,y2). Here, y1 represents the y coordinate of the sample or the corresponding sample, and y2 represents the y coordinate of the sample used for padding. For this purpose, y1 represents the y coordinate of the sample or the corresponding sample, and y2 represents the y coordinate of the sample used for padding. For this purpose, y1 represents the y coordinate of the sample or the corresponding sample, and y2 represents the y coordinate of the sample used for padding.

[0156] In one example, horizontal padding is used. For example, the sample to be padded located at (x1,y) is set equal to the sample located at (x2,y). The sample to be padded located at (x1,y) is set equal to the sample located at (x2,y). , x1 represents the x - coordinate of a sample or the corresponding sample, and x2 represents the x - coordinate of the sample used for padding.

[0157] For picture / sub - picture / slice / tile boundaries / virtual boundaries of 360 - degree video, usually the padding method used for the boundaries (e.g., the top and bottom boundaries) is sometimes called "repetitive padding". When one sample used is outside the boundary, that sample is copied from the available samples inside the picture.

[0158] In the present disclosure, neighboring (adjacent or non - adjacent) samples are "unavailable" if they are outside a different video processing unit ( e.g., the current picture, or the current sub - picture, or the current tile, or the current slice, or the current block, or the current CTU, or the current processing unit ( e.g., an ALF processing unit or a narrow ALF processing unit) or are in any other current video unit), or are not reconstructed, or when cross - filtering video processing units are not permitted. Processing of the ALF virtual boundary of CC-ALF 1. To pad the luminance samples that are unavailable at the ALF virtual boundary, mirror padding is used to derive the unavailable luminance samples and one or more corresponding luminance samples of the unavailable luminance samples and filter them in CC - ALF. That is, at least one corresponding luminance sample of the unavailable sample needs to be padded in the same way even if it is available. a. In one example, the mirror padding method is used to pair the unavailable luminance samples. The determined luminance sample as the corresponding sample may be padded. b. In one example, whether the luminance sample (in the set of corresponding filtering samples) is determined as the corresponding sample of the unavailable sample may depend on the distance of the sample to the representative luminance sample and / or the distance of the unavailable sample to the representative luminance sample. Here, the central row where the representative luminance sample is located is denoted by C. Suppose a K×L filter shape using the samples in the K-th row and the samples in the L-th column is used in CC-ALF. i. In one example, the representative luminance sample is defined as the juxtaposed luminance samples of the current chroma sample to be filtered. 1) In one example, the position of the juxtaposed luminance samples of the current chroma sample may depend on the color format. a) In one example, the juxtaposed luminance samples of the chroma sample located at (x, y) are defined as those located at (2x, 2y) in the 4:2:0 chroma format. b) In one example, the juxtaposed luminance samples of the chroma sample located at (x, y) are defined as those located at (2x, y) in the 4:2:2 chroma format. c) In one example, the juxtaposed luminance samples of the chroma sample located at (x, y) are defined as those located at (x, y) in the 4:4:4 chroma format. ii. In one example, this distance may refer to the vertical distance between the row containing the luminance sample and the row containing the representative luminance ​​​It may be calculated as the absolute y - coordinate difference from the zero sample. 1) As shown in FIG. 29, the central row where the representative luminance sample is located, the row of samples that are not available are represented as C, M, and N for the row of corresponding samples respectively, and M and N are not equal. Let d(x, y) represent the absolute y - coordinate difference between x and y, which means the distance between row x and row y. iii. In one example, in mirror padding, the determination of the corresponding sample of the padding target may also depend on the number of sample rows used according to the filter shape. iv. In one example, when the non - available sample is located in row M (for example, M < C < N or M > C > N), when d(C, M)=d(N, C), the sample located in row N is determined to be the corresponding sample of the padding target. 1) In one example, when the value K (for example, K×L CC - ALF filter shape) is odd the mirror padding method for ALF (for example, FIG. 16) can be used for CC - ALF, where the central luminance sample is selected as the representative luminance sample. a) In one example, let K = 5, and represent the y - coordinates of the five sample rows shown in Table 4 - 5 as yM2=-2, yM1=-1, yL = 0, yP1 = 1, yP2 = 2 respectively. The ALF virtual boundary is equal to CtbSizeY - 4. i. In one example, when the ALF virtual boundary is above the representative luminance sample the non - available samples may be padded using the closest row below the ALF virtual boundary. On the other hand, the corresponding sample may be padded using the closest row above the row where the corresponding sample is located. 1. In one example, when yL is equal to CtbSizeY - 3 and row yM2 is available If not available, the sample (x, yM2) in row yM2 may be padded using the sample (x, yM1) in row yM1. On the other hand, the sample (x, yP2) in the corresponding row yP2 may be padded using the sample (x, yP1) in row yP1. If not available, the sample (x, yM2) in row yM2 may be padded using the sample (x, yM1) in row yM1. On the other hand, the sample (x, yP2) in the corresponding row yP2 may be padded using the sample (x, yP1) in row yP1. If not available, the sample (x, yM2) in row yM2 may be padded using the sample (x, yM1) in row yM1. On the other hand, the sample (x, yP2) in the corresponding row yP2 may be padded using the sample (x, yP1) in row yP1. If not available, the sample (x, yM2) in row yM2 may be padded using the sample (x, yM1) in row yM1. On the other hand, the sample (x, yP2) in the corresponding row yP2 may be padded using the sample (x, yP1) in row yP1. 2. In one example, if yL is equal to CtbSizeY - 4 and rows yM2 and yM1 are not available, the samples (x, yM2) and (x, yM1) in rows yM2 and yM1 may be padded using the sample (x, yL) in row yL. On the other hand, the samples (x, yP2) and (x, yP1) in the corresponding rows yP2 and yP1 may be padded using the sample (x, yL) in row yL. 2. In one example, if yL is equal to CtbSizeY - 4 and rows yM2 and yM1 are not available, the samples (x, yM2) and (x, yM1) in rows yM2 and yM1 may be padded using the sample (x, yL) in row yL. On the other hand, the samples (x, yP2) and (x, yP1) in the corresponding rows yP2 and yP1 may be padded using the sample (x, yL) in row yL. 2. In one example, if yL is equal to CtbSizeY - 4 and rows yM2 and yM1 are not available, the samples (x, yM2) and (x, yM1) in rows yM2 and yM1 may be padded using the sample (x, yL) in row yL. On the other hand, the samples (x, yP2) and (x, yP1) in the corresponding rows yP2 and yP1 may be padded using the sample (x, yL) in row yL. 2. In one example, if yL is equal to CtbSizeY - 4 and rows yM2 and yM1 are not available, the samples (x, yM2) and (x, yM1) in rows yM2 and yM1 may be padded using the sample (x, yL) in row yL. On the other hand, the samples (x, yP2) and (x, yP1) in the corresponding rows yP2 and yP1 may be padded using the sample (x, yL) in row yL. 2. In one example, if yL is equal to CtbSizeY - 4 and rows yM2 and yM1 are not available, the samples (x, yM2) and (x, yM1) in rows yM2 and yM1 may be padded using the sample (x, yL) in row yL. On the other hand, the samples (x, yP2) and (x, yP1) in the corresponding rows yP2 and yP1 may be padded using the sample (x, yL) in row yL. 2. In one example, if yL is equal to CtbSizeY - 4 and rows yM2 and yM1 are not available, the samples (x, yM2) and (x, yM1) in rows yM2 and yM1 may be padded using the sample (x, yL) in row yL. On the other hand, the samples (x, yP2) and (x, yP1) in the corresponding rows yP2 and yP1 may be padded using the sample (x, yL) in row yL. ii. In one example, if the ALF virtual boundary is below the typical luminance samples, the unavailable samples may be padded using the closest row above the ALF virtual boundary. On the other hand, the corresponding samples may be padded using the closest row below the row where the corresponding samples are located. ii. In one example, if the ALF virtual boundary is below the typical luminance samples, the unavailable samples may be padded using the closest row above the ALF virtual boundary. On the other hand, the corresponding samples may be padded using the closest row below the row where the corresponding samples are located. ii. In one example, if the ALF virtual boundary is below the typical luminance samples, the unavailable samples may be padded using the closest row above the ALF virtual boundary. On the other hand, the corresponding samples may be padded using the closest row below the row where the corresponding samples are located. ii. In one example, if the ALF virtual boundary is below the typical luminance samples, the unavailable samples may be padded using the closest row above the ALF virtual boundary. On the other hand, the corresponding samples may be padded using the closest row below the row where the corresponding samples are located. 1. In one example, if yL is equal to CtbSizeY - 6 and row yP2 is not available, the sample (x, yP2) in row yP2 may be padded using the sample (x, yP1) in row yP1. On the other hand, the sample (x, yM2) in the corresponding row yM2 may be padded using the sample (x, yM1) in row yM1. 1. In one example, if yL is equal to CtbSizeY - 6 and row yP2 is not available, the sample (x, yP2) in row yP2 may be padded using the sample (x, yP1) in row yP1. On the other hand, the sample (x, yM2) in the corresponding row yM2 may be padded using the sample (x, yM1) in row yM1. 1. In one example, if yL is equal to CtbSizeY - 6 and row yP2 is not available, the sample (x, yP2) in row yP2 may be padded using the sample (x, yP1) in row yP1. On the other hand, the sample (x, yM2) in the corresponding row yM2 may be padded using the sample (x, yM1) in row yM1. 1. In one example, if yL is equal to CtbSizeY - 6 and row yP2 is not available, the sample (x, yP2) in row yP2 may be padded using the sample (x, yP1) in row yP1. On the other hand, the sample (x, yM2) in the corresponding row yM2 may be padded using the sample (x, yM1) in row yM1. 1. In one example, if yL is equal to CtbSizeY - 6 and row yP2 is not available, the sample (x, yP2) in row yP2 may be padded using the sample (x, yP1) in row yP1. On the other hand, the sample (x, yM2) in the corresponding row yM2 may be padded using the sample (x, yM1) in row yM1. 2. In one example, if yL is equal to CtbSizeY - 5 and rows yP2 and yP1 are not available, the samples (x, yP2) and (x, yP1) in rows yP2 and yP1 may be padded using the sample (x, yL) in row yL. 2. In one example, if yL is equal to CtbSizeY - 5 and rows yP2 and yP1 are not available, the samples (x, yP2) and (x, yP1) in rows yP2 and yP1 may be padded using the sample (x, yL) in row yL. And (x, yP1) may be padded using the sample (x, yL) in row yL. On the other hand, the samples (x, yM2) and (x, yM1) in the corresponding rows yM2 and yM1 may be padded using the sample (x, yL) in row yL. That's okay. 2) In one example, when the value K (e.g., K×L CC-ALF filter shape) is even the mirror padding method defined in FIG. 30 may be utilized. If the sample that cannot be used is located in row M (N) above (below) the ALF virtual boundary, it is padded from the nearest sample row below (above) the ALF virtual boundary. The corresponding sample located in row N (M) below (above) the ALF virtual boundary is proposed to be padded from the nearest sample row above (below) row N (M). If the sample that cannot be used is located in row M (N) above (below) the ALF virtual boundary, it is padded from the nearest sample row below (above) the ALF virtual boundary. The corresponding sample located in row N (M) below (above) the ALF virtual boundary may be padded from the nearest sample row above (below) row N (M). If the sample that cannot be used is located in row M (N) below (above) the ALF virtual boundary, it is padded from the nearest sample row below (above) the ALF virtual boundary. The corresponding sample located in row N (M) below (above) the ALF virtual boundary may be padded from the nearest sample row above (below) row N (M). If the sample that cannot be used is located in row M (N) below (above) the ALF virtual boundary, it is padded from the nearest sample row below (above) the ALF virtual boundary. The corresponding sample located in row N (M) below (above) the ALF virtual boundary may be padded from the nearest sample row above (below) row N (M). It is proposed that the corresponding sample located in row N (M) below (above) the ALF virtual boundary may be padded from the nearest sample row above (below) row N (M). a) In one example, let K = 2 and represent the y-coordinates of the two sample rows shown in Table 4-1 as yL = 0 and yP1 = 1 respectively. The ALF virtual boundary is equal to CtbSizeY - 4. Let the ALF virtual boundary be equal to CtbSizeY - 4. That's right. i. In one example, when the ALF virtual boundary is above the typical luminance sample the sample that cannot be used may be padded using the nearest row below the ALF virtual boundary. On the other hand, the corresponding sample may be padded using the nearest row above the row where the corresponding sample is located. 1. In one example, when yL is equal to CtbSizeY - 4 and the rows above yL are not available, the sample (x, yP1) in the corresponding row yP1 may be padded using the sample (x, yL) in row yL. That's okay. 1. In one example, when yL is equal to CtbSizeY - 4 and the rows above yL are not available, the sample (x, yP1) in the corresponding row yP1 may be padded using the sample (x, yL) in row yL. 1. In one example, when yL is equal to CtbSizeY - 4 and the rows above yL are not available, the sample (x, yP1) in the corresponding row yP1 may be padded using the sample (x, yL) in row yL. That's okay. ii. In one example, when the ALF virtual boundary is below the typical luminance sample the sample that cannot be used may be padded using the nearest row above the ALF virtual boundary. It may be padded. On the other hand, the corresponding sample may be padded using the nearest row below the row where the corresponding sample is located. 1. In one example, when yL is equal to CtbSizeY - 5 and the row yP1 is unavailable, the sample (x, yP1) in the row yP1 may be padded using the sample (x, yL) in the row yL. a) In one example, let K = 4, and represent the y - coordinates of the four sample rows shown in Table 4 - 3 as yM1 = - 1, yM1 = - 1, yL = 0, yP1 = 1, yP2 = 2 respectively. The ALF virtual boundary is equal to CtbSizeY - 4. i. In one example, when the ALF virtual boundary is above the typical luminance sample, the unavailable samples may be padded using the nearest row below the ALF virtual boundary. On the other hand, the corresponding sample may be padded using the nearest row above the row where the corresponding sample is located. 1. In one example, when yL is equal to CtbSizeY - 3 and the row above yM1 is unavailable, the sample (x, yP2) in the corresponding row yP2 may be padded using the sample (x, yP1) in the row yP1. 2. In one example, when yL is equal to CtbSizeY - 4 and the rows of yM1 and above yM1 are unavailable, the sample (x, yM1) in the row yM1 may be padded using the sample (x, yL) in the row yL. On the other hand, the samples (x, yP2) and (x, yP1) in the corresponding rows yP2 and yP1 may be padded using the sample (x, yL) in the row yL. ii. In one example, when the ALF virtual boundary is below the typical luminance sample ​​​​​​​​​​​​​If so, the nearest row above the ALF virtual boundary may be used to pad the unavailable samples. On the other hand, the corresponding samples may be padded using the nearest row below the row where the corresponding samples are located. In one example, if yL is equal to CtbSizeY - 6 and row yP2 is unavailable, the sample (x, yP2) in row yP2 may be padded using the sample (x, yP1) in row yP1. 1. In one example, if yL is equal to CtbSizeY - 6 and row yP2 is unavailable, the sample (x, yP2) in row yP2 may be padded using the sample (x, yP1) in row yP1. 2. In one example, if yL is equal to CtbSizeY - 5 and rows yP2 and yP1 are unavailable, the samples (x, yP2) and (x, yP1) in rows yP2 and yP1 may be padded using the sample (x, yL) in row yL. On the other hand, the sample (x, yM1) in the corresponding row yM1 may be padded using the sample (x, yL) in row yL. c) In one example, K = 6, and yM2 = -2, yM1 = -1, yL = 0, yP1 = 1, yP2 = 2, yP3 = 3 represent the y - coordinates of six sample rows shown in Table 4 - 6 respectively. The ALF virtual boundary is equal to CtbSizeY - 4. i. In one example, if the ALF virtual boundary is above the typical luminance samples, the nearest row below the ALF virtual boundary may be used to pad the unavailable samples. On the other hand, the corresponding samples may be padded using the nearest row above the row where the corresponding samples are located. 1. In one example, if yL is equal to CtbSizeY - 2 and the row above yM2 is unavailable, the sample (x, yP3) in the corresponding row yP3 may be padded using the sample (x, yP2) in row yP2. 2. In one example, when yL is equal to CtbSizeY - 3, and yM2 and the row above yM2 are unavailable, the sample (x, yM2) in row yM2 may be padded using the sample (x, yM1) in row yM1. On the other hand, the samples (x, yP3) and (x, yP2) in the corresponding rows yP3 and yP2 may be padded using the sample (x, yP1) in row yP1. 3. In one example, when yL is equal to CtbSizeY - 4, and the row above yM2, yM2, and yM1 are unavailable, the samples (x, yM2) and (x, yM1) in rows yM2 and yM1 may be padded using the sample (x, yL) in row yL. On the other hand, the samples (x, yP3), (x, yP2), and (x, yP1) in the corresponding rows yP3, yP2, yP1 may be padded using the sample (x, yL) in row yL. ii. In one example, when the ALF virtual boundary is below the representative luminance samples, the closest row above the ALF virtual boundary may be used to pad the unavailable samples. On the other hand, the corresponding samples may be padded using the closest row below the row where the corresponding sample is located. 1. In one example, when yL is equal to CtbSizeY - 7 and row yP3 is unavailable, the sample (x, yP3) in row yP3 may be padded using the sample (x, yP2) in row yP2. And (x, yP2) may be padded using the sample (x, yP1) in that row. On the other hand, the sample (x, yM2) in the corresponding row yM2 may be padded using the sample (x, yM1) in row yM1. 3. In one example, if yL is equal to CtbSizeY - 5 and rows yP3, y P2, yP1 are unavailable, the samples (x, yP3), (x, yP2), (x, yP1) in rows yP3, yP2, yP1 may be padded using the sample (x, yL) in row yL. On the other hand, the samples (x, yM2) and (x, yM1) in the corresponding rows yM2 and yM1 may be padded using the sample (x, yL) in that row. v. In one example, if an unavailable sample is located in row M (e.g., M < C), when d(C, M) = d(N, C) - offset (offset is an integer value, e.g., 1) or d(C, M) < d(N, C), the sample located in row N is determined to be the corresponding sample to be padded. 1) In one example, if an unavailable sample is located in row M (e.g., M < C), when d(C, M) = d(N, C) - offset (offset is an integer value, e.g. , 1) or d(C, M) < d(N, C), the sample located in row N is treated as the corresponding sample to be padded. 2) In one example, the mirror padding method defined in FIG. 31 can be utilized. When an unavailable sample is located in row M (N) above (below) the ALF virtual boundary, it is padded from the nearest sample row below (above) the ALF virtual boundary. ALF virtual ​​​​​​The corresponding samples located in row N (M) below (above) the imaginary boundary may be padded from the nearest sample row above (below) row N (M). It is proposed that padding may be done from the nearest sample row. a) In one example, let K = 2, and represent the y - coordinates of the two sample rows shown in Table 4 - 2 as yL = 0 and yP1 = 1 respectively. The ALF virtual boundary is equal to CtbSizeY - 4. i. In one example, when the ALF virtual boundary is below the typical luminance samples, the nearest row above the ALF virtual boundary may be used to pad the unavailable samples. On the other hand, the corresponding samples may be padded using the nearest row below the row where the corresponding samples are located. 1. In one example, when yL is equal to CtbSizeY - 5 and the row yP1 is unavailable, the sample (x, yP1) in row yP1 may be padded using the sample (x, yL) in row yL. b) In one example, let K = 4, and represent the y - coordinates of the four sample rows shown in Table 4 - 4 as yM1 = - 1, yL = 0, yP1 = 1, and yP2 = 2 respectively. The ALF virtual boundary is equal to CtbSizeY - 4. i. In one example, when the ALF virtual boundary is above the typical luminance samples, the nearest row below the ALF virtual boundary may be used to pad the unavailable samples. On the other hand, the corresponding samples may be padded using the nearest row above the row where the corresponding samples are located. 1. In one example, when yL is equal to CtbSizeY - 4 and the rows above yM1 and yM1 are unavailable, the sample (x, yM1) in row yM1 may be padded using the sample (x, yL) in row yL. On the other hand, for the corresponding row ​​​​​​​​​​​​​​The sample (x, yP2) of yP2 may be padded using the sample (x, yP1) of row yP1. padding. ii. In one example, if the ALF virtual boundary is below the representative luminance sample, the unavailable sample may be padded using the nearest row above the ALF virtual boundary. On the other hand, the corresponding sample may be padded using the nearest row below the row where the corresponding sample is located. nearest row. 1. In one example, if yL is equal to CtbSizeY - 6 and row yP2 is unavailable, the sample (x, yP2) in row yP2 may be padded using the sample (x, yP1) in row yP1. padding. 2. In one example, if yL is equal to CtbSizeY - 5 and rows yP2 and yP1 are unavailable, the samples (x, yP2) and (x, yP1) in rows yP2 and yP1 may be padded using the sample (x, yL) in row yL. padding. On the other hand, the sample (x, yM1) of the corresponding row yM1 may be padded using the sample (x , yL) in row yL. c) In one example, K = 6, yM2 = -2, yM1 = -1, yL = 0, yP1 = 1, yP2 = 2, yP3 = 3 are represented as the y - coordinates of six sample rows shown in Table 4 - 7 respectively. The ALF virtual boundary is equal to CtbSizeY - 4. i. In one example, if the ALF virtual boundary is above the representative luminance sample, the unavailable sample may be padded using the nearest row below the ALF virtual boundary. padding. On the other hand, the corresponding sample may be padded using the nearest row above the row where the corresponding sample is located. nearest row. 1. In one example, if yL is equal to CtbSizeY - 3, yM2 and If the row above yM2 is unavailable, the sample (x, yM2) in row yM2 may be padded using the sample (x, yM1) in row yM1. On the other hand, the corresponding sample (x, yP3) in row yP3 may be padded using the sample (x, yP2) in row yP2. 2. In one example, if yL is equal to CtbSizeY - 4 and the rows above yM2, yM2, and yM1 are unavailable, the samples (x, yM2) and (x, yM1) in rows yM2 and yM1 may be padded using the sample (x, yL) in row yL. On the other hand, the corresponding samples (x, yP3) and (x, yP2) in rows yP3 and yP2 may be padded using the sample (x, yP1) in row yP1. (x, yP3) and (x, yP2) may be padded using the sample (x, yP1) in row yP1. ii. In one example, if the ALF virtual boundary is below the representative luminance samples, the closest row above the ALF virtual boundary may be used to pad the unavailable samples. On the other hand, the corresponding samples may be padded using the closest row below the row where the corresponding samples are located. 1. In one example, if yL is equal to CtbSizeY - 7 and row yP3 is unavailable, the sample (x, yP3) in row yP3 may be padded using the sample (x, yP2) in row yP2. On the other hand, the corresponding sample (x, yM2) in row yM2 may be padded using the sample (x, yM1) in row yM1. 2. In one example, if yL is equal to CtbSizeY - 6 and rows yP3 and yP2 are unavailable, the samples (x, yP3) and (x, yP2) in rows yP3 and yP2 ​​​​​And (x, yP2) may be padded using the sample (x, yP1) in row yP1. On the other hand, the samples (x, yM2) and (x, yM1) in the corresponding rows yM2 and yM1 may be padded using the sample (x, yL) in row yL. 3. In one example, if yL is equal to CtbSizeY - 5 and the rows yP3, y P2, yP1 are unavailable, the samples (x, yP3), (x, yP2), (x, yP1) in the rows yP3, yP2, yP1 may be padded using the sample (x, yL) in yL. On the other hand, the samples ( x, yM2) and (x, yM1) in the corresponding rows yM2 and yM1 may be padded using the sample (x, yL) in row yL. c. FIG. 29 shows the positions of the unavailable samples (represented by C0 above the ALF virtual boundary) and c their corresponding samples (represented by C7) when filtering the current chroma sample located at (X c , Y). d. In one example, whether to enable or disable mirror padding at the ALF virtual boundary for CC - ALF / chroma ALF / luminance ALF / other types of filtering methods may be signaled at the sequence level / picture level / slice level / tile group level, such as in the sequence header / picture header / SPS / VPS / DPS / PPS / APS / slice header / tile group header. e. In one example, whether to enable or disable repetitive padding and / or mirror padding at the ALF virtual boundary may also depend on the coding information. ​​​​​​​i. In one example, the coding information may refer to block sizes such as CTU / CTB size. It may also refer to block sizes such as CTU / CTB size. 1) In one example, when the size of CTU / CTB is greater than or equal to T, for example, when T = 32 / 64 / 128, mirror padding may be used at the ALF virtual boundary. When the size of CTU / CTB is greater than or equal to T, for example, when T = 32 / 64 / 128, mirror padding may be used at the ALF virtual boundary. It may be used at the ALF virtual boundary. 2) In one example, when the size of CTU / CTB is less than or equal to T, for example, when T = 4 / 8 / 16, repetitive padding may be used at the ALF virtual boundary. When the size of CTU / CTB is less than or equal to T, for example, when T = 4 / 8 / 16, repetitive padding may be used at the ALF virtual boundary. 2. At the above black dot, the vertical padding may be replaced by horizontal padding. It may be replaced by horizontal padding. a. Additionally alternatively, which padding direction (vertical or horizontal) to use may depend on whether the boundary is a horizontal boundary or a vertical boundary. It may depend on whether the boundary is a horizontal boundary or a vertical boundary. b. Additionally alternatively, the vertical distance may be replaced by the horizontal distance. 3. The mirror padding method at black dot 1 may be used at the picture / sub-picture / slice / tile boundary and / or the 360-degree boundary. It may be used at the picture / sub-picture / slice / tile boundary and / or the 360-degree boundary. General solution 4. Whether to apply the above-disclosed method and / or how to apply it may be signaled at the sequence level / picture level / slice level / tile group level, for example, in the sequence header / picture header / SPS / VPS / DPS / PPS / APS / slice header / tile group header. Whether to apply the above-disclosed method and / or how to apply it may be signaled at the sequence level / picture level / slice level / tile group level, for example, in the sequence header / picture header / SPS / VPS / DPS / PPS / APS / slice header / tile group header. Whether to apply the above-disclosed method and / or how to apply it may be signaled at the sequence level / picture level / slice level / tile group level, for example, in the sequence header / picture header / SPS / VPS / DPS / PPS / APS / slice header / tile group header. It may be signaled at the sequence level / picture level / slice level / tile group level, for example, in the sequence header / picture header / SPS / VPS / DPS / PPS / APS / slice header / tile group header. 5. Whether to apply the above-disclosed method and / or how to apply it may depend on coding information such as color format, single / dual tree splitting, sample position (e.g., for CU / CTU), etc. Whether to apply the above-disclosed method and / or how to apply it may depend on coding information such as color format, single / dual tree splitting, sample position (e.g., for CU / CTU), etc. It may depend on coding information such as color format, single / dual tree splitting, sample position (e.g., for CU / CTU), etc.

[0159]

Table 12

[0160]

Table 13

[0161]

Table 14

[0162]

Table 15

[0163]

Table 16

[0164]

Table 17

[0165]

Table 18

[0166] 5. Embodiment The changes are emphasized by showing deletions and additions.

[0167] 5.1. Embodiment #1 The working draft defined in JVET-P0080 can be changed as follows. x.x.x.x Cross-component filtering process for chroma sample blocks The input of this process is as follows. - Luminance picture sample array reconstructed before the luminance adaptive loop filtering process recPicture L - Filtered reconstructed chroma picture sample array alfPicture C - The upper left sample of the current block of chroma samples for the upper left sample of the current picture The position (xC, yC) defining the sample - Width ccAlfWidth of the block of chroma samples - Height ccAlfheight of the block of chroma samples - Cross-component filter coefficients CcAlfCoeff[j] for j = 0..13 The output of this process is the modified, filtered, and reconstructed chroma picture sam ple array ccAlfPicture. The coding tree block luminance position (xCtb, yCtb) is derived as follows follows. xCtb = (((xC * SubWidthC) >> CtbLog2SizeY) << C tbLog2SizeY (8 - 1229) yCtb = (((yC * SubHeightC) >> CtbLog2SizeY) << CtbLog2SizeY (8 - 1229) To derive the filtered reconstructed chroma sample ccAlfPicture[xC + x] yC + y], the sample alfPicture C [xC + x][yC + y (where x = 0..ccAlfWidth - 1, y = 0..ccAlfHeight - 1) within the current chroma block, each reconstructed chroma sample is filtered as follows filtered. - The luminance position (xL, yL) corresponding to the current chroma sample at the chroma position (xC + x, yC + y) is set equal to ((xC + x) * SubWidthC, (yC + y) * SubHe ightC). ightC). - When i = -2..2 and j = -2..3, the luminance position within the array recPicture L is derived as follows. (h xL+i , v yL+j ) is derived as follows. - If pps_loop_filter_across_virtual_boundaries_disabled_flag equals 1, PpsVirtualBoundariesPosX[n] % CtbSizeY is not equal to 0, and n = 0..pps_num_ver_virtual_boundaries - 1 where xL - PpsVirtualBoundariesPosX[n] is 0 or more and less than 3, the following applies. ies_disabled_flag is equal to 1, PpsVirtualBounda riesPosX[n] % CtbSizeY is not equal to 0, and n = 0..pps _num_ver_virtual_boundaries - 1 where xL - PpsV irtualBoundariesPosX[n] is 0 or more and less than 3, the following applies. is applied. h xL+i = Clip3(PpsVirtualBoundariesPosX[n], pic_width_in_luma_samples - 1, xL + i) (8 - 122 9) - Or, if pps_loop_filter_across_virtual_boundaries_disabled_flag equals 1, PpsVirtualBoundariesPosX[n] % CtbSizeY is not equal to 0, and n = 0..pps_num_ver_virtual_boundaries - 1 where PpsVirtualBoundariesPosX[n] is greater than 0 and less than 4, the following applies. undaries_disabled_flag is equal to 1, PpsVirtualB oundariesPosX[n] % CtbSizeY is not equal to 0, and n = 0.. .pps_num_ver_virtual_boundaries - 1 where Pps VirtualBoundariesPosX[n] is greater than 0 and less than 4, the following applies. is applied. h x+i = Clip3(0, PpsVirtualBoundariesPosX[n - 1, xL + i) (8 - 1230) - Otherwise, the following applies. h x+i = Clip3(0, pic_width_in_luma_samples - (8 - 1231) in (1, xL + i) - pps_loop_filter_across_virtual_boundar ies_disabled_flag is equal to 1, PpsVirtualBounda riesPosY[n] % CtbSizeY is not equal to 0, and n = 0..pps_ num_hor_virtual_boundaries - 1 where yL - PpsVi rtualBoundariesPosY[n] is greater than or equal to 0 and less than 3, the following applies is applied. v y+j = Clip3(PpsVirtualBoundariesPosY[n], p ic_height_in_luma_samples - 1, yL + j) (8 - 123 2) - Or, pps_loop_filter_across_virtual_bo undaries_disabled_flag is equal to 1, PpsVirtualB oundariesPosY[n] % CtbSizeY is not equal to 0, and n = 0. .pps_num_hor_virtual_boundaries - 1 where Pps VirtualBoundariesPosY[n] - yL is greater than 0 and less than 4 the following applies. v y+j = Clip3(0, PpsVirtualBoundariesPosY[n - 1, yL + j) (8 - 1233) - Otherwise, the following applies. v y+j = Clip3(0, pic_height_in_luma_samples - 1, yL + j) (8 - 1234) - Variables clipLeftPos, clipRightPos, clipTopPos, and clipBottomPos is derived by calling the ALF boundary position derivation process as defined in Section 8.8.5.5 with (xCtb, yCtb) and (xL - xCtb , yL - yCtb) as inputs. - Table 4-1 defines the offsets yM2, yM1, yP1, yP 2, yP3 of the positions of the vertical samples. The position yL of the vertical luminance samples and applyAlf Definition of yP1 according to LineBundary

[0168] [Table 19]

[0169] [Table 20]

[0170] - Depending on the position yL, clipLeftPos, clipRight Pos of the vertical luminance samples - The offsets xM1, xM2, xP1, of the positions of the horizontal samples according to the position xL, clipLeftPos, and clipRi ghtPos of the horizontal luminance samples are defined in Table y-yyyy. - The variable curr is derived as follows. curr = alfPicture C [xC + x, yC + y] (8-1286) - The array of cross-component filter coefficients f[j] is derived as follows with j = 0..13. as follows. f[j] = CcAlfCoeff[j] (8-1287) - The variable sum is derived as follows. sum = f[0] * recPicture L [h x ,v y+yM2 + f[1]*recPicture L [h x+xM1 ,v y+yM1 + f[2]*recPicture L [h x ,v y+yM1 + f[3]*recPicture L [h x+xP1 ,v y+yM1 + f[4]*recPicture L [h x+xM2 ,v y + f[5]*recPicture L [h x+xM1 ,v y + f[6]*recPicture L [h x ,v y + f[7]*recPicture L [h x+xP1 ,v y + f[4]*recPicture L [h x+xP2 ,v y + (8 - 1289) f[4]*recPicture L [h x+xM2 ,v y+yP1 + f[8]*recPicture L [h x+xM1 ,v y+yP1 + f[9]*recPicture L [h x ,v y+yP1 + f

[10] *recPicture L [h x+xP1 ,v y+yP1 + f[4]*recPicture L [h x+xP2 ,v y+yP1 + f

[11] *recPicture L [h x+xM1 ,v y+yP2 + f

[12] *recPicture L [h x ,v y+yP2 + f

[13] *recPicture L [h x+xP1 ,v y+yP2 + f[0]*recPicture L [h x ,v y+yP3 + sum=curr+(sum+64)>>7) (8-1290) -Corrected and filtered reconstructed chroma picture sample array ccAlfPi cture[xC+x][yC+y] is derived as follows. ccAlfPicture[xC+x][yC+y]=Clip3(0,(1<<Bit Depth C )-1,sum) (8-1291) Table x-xx - Definition of yM1, yM2, yP1, yP2, yP3 according to the positions yL, clipTopPos, clipB ottomPos of the vertical luminance samples

[0171]

Table 21

[0172]

Table 22

[0173]

Table 23

[0174] 5.2. Embodiment #2 The working draft defined in JVET-P0080 can be changed as follows. Cross-component filtering process for the block of x.x.x.x chroma samples The input to this process is as follows. - Luminance picture sample array reconfigured before the luminance adaptive loop filtering process recPicture L - Filtered reconfigured chroma picture sample array alfPicture C - The top-left sample of the current block of chroma samples for the top-left sample of the current picture Position (xC, yC) defining the sample - Width ccAlfWidth of the block of chroma samples - Height ccAlfheight of the block of chroma samples - Cross-component filter coefficients CcAlfCoeff[j] where j = 0..13 The output of this process is the modified, filtered, and reconfigured chroma picture sample array ccAlfPicture. The coding tree block luminance position (xCtb, yCtb) is derived as follows as follows. xCtb = (((xC * SubWidthC) >> CtbLog2SizeY) << C tbLog2SizeY (8-1229) yCtb = (((yC * SubHeightC) >> CtbLog2SizeY) << CtbLog2SizeY (8-1229) To derive the filtered reconfigured chroma sample ccAlfPicture[xC + x][ yC + y], sample alfPicture C [xC + x][yC + y (where x = 0..ccAlfWidth - 1, y = 0..ccAlfHeight - Each of the reconstructed chroma samples within the current chroma block of (1) is as follows Filtered. - The luminance position (xL, yL) corresponding to the current chroma sample at the chroma position (xC + x, yC + y) is Set equal to ((xC + x) * SubWidthC, (yC + y) * SubHe ightC). - When i = -2..2 and j = -2..3, the luminance positions L within the array recPicture (h xL+i , v yL+j ) are derived as follows. - When pps_loop_filter_across_virtual_boundar ies_disabled_flag is equal to 1, PpsVirtualBounda riesPosX[n] % CtbSizeY is not equal to 0, and when n = 0..pps _num_ver_virtual_boundaries - 1 and xL - PpsV irtualBoundariesPosX[n] is greater than or equal to 0 and less than 3, the following applies . h xL+i = Clip3(PpsVirtualBoundariesPosX[n], pic_width_in_luma_samples - 1, xL + i) (8 - 122 ) - Or, when pps_loop_filter_across_virtual_bo undaries_disabled_flag is equal to 1, PpsVirtualB oundariesPosX[n] % CtbSizeY is not equal to 0, and when n = 0.. .pps_num_ver_virtual_boundaries - 1 and Pps VirtualBoundariesPosX[n] is greater than 0 and less than 4, The following applies. h x+i =Clip3(0, PpsVirtualBoundariesPosX[n -1, xL + i) (8 - 1230) - Otherwise, the following applies. h x+i =Clip3(0, pic_width_in_luma_samples - 1, xL + i) (8 - 1231) - pps_loop_filter_across_virtual_boundar ies_disabled_flag is equal to 1, PpsVirtualBounda riesPosY[n] % CtbSizeY is not equal to 0, and n = 0..pps_ num_hor_virtual_boundaries - 1 and yL - PpsVi rtualBoundariesPosY[n] is 0 or more and less than 3, the following applies and is as follows. v y+j =Clip3(PpsVirtualBoundariesPosY[n], p ic_height_in_luma_samples - 1, yL + j) (8 - 123 2) - Or, pps_loop_filter_across_virtual_bo undaries_disabled_flag is equal to 1, PpsVirtualB oundariesPosY[n] % CtbSizeY is not equal to 0, and n = 0. .pps_num_hor_virtual_boundaries - 1 and Pps VirtualBoundariesPosY[n] - yL is greater than 0 and less than 4 in which case the following applies. v y+j =Clip3(0, PpsVirtualBoundariesPosY[n -1, yL + j)(8 - 1233) - Otherwise, the following applies. v y+j = Clip3(0, pic_height_in_luma_samples -1, yL + j)(8 - 1234) - The variables clipLeftPos, clipRightPos, clipTopPos, and clipBottomPos are derived by calling the ALF boundary position derivation process as specified in clause 8.8.5.5 with (xCtb, yCtb) and (xL - xCtb , yL - yCtb) as inputs. - Table 4-1 defines the offsets yM2, yM1, yP1, yP 2, yP3 of the positions of the vertical samples. The definition of yP1 according to the vertical luminance sample position yL and applyAlf

[0175]

Table 24

[0176]

Table 25

[0177] - According to the vertical luminance sample positions yL, clipLeftPos, clipRight Pos - The offsets xM1, xM2, xP1, and xP2 of the horizontal sample positions according to the horizontal luminance sample positions xL, clipLeftPos, and clipRi ghtPos are defined in Table y-yyyy. curr = alfPicture C [xC + x, yC + y] (8 - 1286) - The array of cross - component filter coefficients f[j] is derived as follows for j = 0..13 . f[j]=CcAlfCoeff[j] (8 - 1287) The variable sum is derived as follows. sum = f[0] * recPicture L [h x , v y+yM2 + f[1] * recPicture L [h x+xM1 , v y+yM1 + f[2] * recPicture L [h x , v y+yM1 + f[3] * recPicture L [h x+xP1 , v y+yM1 + f[4] * recPicture L [h x+xM2 , v y + f[5] * recPicture L [h x+xM1 , v y + f[6] * recPicture L [h x , v y + f[7] * recPicture L [h x+xP1 , v y + f[4] * recPicture L [h x+xP2 , v y + (8 - 1289) f[4] * recPicture L [h x+xM2 , v y+yP1 + f[8] * recPicture L [h x+xM1 , v y+yP1 + f[9]*recPicture L [h x ,v y+yP1 + f

[10] *recPicture L [h x+xP1 ,v y+yP1 + f[4]*recPicture L [h x+xP2 ,v y+yP1 + f

[11] *recPicture L [h x+xM1 ,v y+yP2 + f

[12] *recPicture L [h x ,v y+yP2 + f

[13] *recPicture L [h x+xP1 ,v y+yP2 + f[0]*recPicture L [h x ,v y+yP3 + sum=curr+(sum+64)>>7) (8-1290) -Corrected and filtered reconstructed chroma picture sample array ccAlfPi cture[xC+x][yC+y] is derived as follows. ccAlfPicture[xC+x][yC+y]=Clip3(0,(1<<Bi tDepth C )-1,sum) (8-1291) Table x-xx - Definition of yM1, yM2, yP1, yP2, yP3 according to the positions yL, clipTopPos, clipB ottomPos of the vertical luminance samples

[0178]

Table 26

[0179]

Table 27

[0180]

Table 28

[0181] 5.3. Embodiment #3 The working draft defined in JVET-P1008 can be changed as follows. Cross-component filtering process for the block of x.x.x.x chroma samples The input of this process is as follows. - Luminance picture sample array reconfigured before the luminance adaptive loop filtering process recPicture L - Filtered reconfigured chroma picture sample array alfPicture C - Current chroma coding tree block for the top-left sample of the current picture Chroma position (xCtbC, yCtbC) defining the top-left sample of the top-left sample of the block - Width ccAlfWidth of the block of chroma samples - Height ccAlfheight of the block of chroma samples - Cross-component filter coefficient CcAlfCoeff[j] where j = 0..7 The output of this process is the modified, filtered, and reconfigured chroma picture sample array ccAlfPicture. The coding tree block luminance position (xCtb, yCtb) is derived as follows as follows. xCtb=(((xCtbC*SubWidthC)>>CtbLog2SizeY) < <ctblog2sizey (8-1229) yctb="(((yCtbC*SubHeightC)">>CtbLog2SizeY )<<CtbLog2SizeY (8 - 1229) To derive the filtered reconstructed chroma sample ccAlfPicture[xCtbC + x][yCtbC + y], the sample alfPicture C [xCtb C + x][yCtbC + y] (where x = 0..ccAlfWidth - 1, y = 0.. ccAlfHeight - 1) of each reconstructed chroma within the current chroma block is filtered as follows. - For the current chroma sample at chroma position (xCtbC + x, yCtbC + y), the corresponding luma position (xL, yL) is set equal to ((xCtbC + x)*SubWidthC, (yC tbC + y)*SubHeightC). - The luma positions (h , v ) in the array recPicture L for i = -1..1, j = -1..2 are derived as follows. - When pps_loop_filter_across_virtual_boundar xL+i ies_disabled_flag equals 1, PpsVirtualBounda yL+j riesPosX[n]%CtbSizeY is not equal to 0, and xL - PpsV irtualBoundariesPosX[n] is greater than or equal to 0 and less than 3 for n = 0..pps _num_ver_virtual_boundaries - 1, the following applies. - h = Clip3(PpsVirtualBoundariesPosX[n], pic_width_in_luma_samples - 1, xL + i) (8 - 122 ) - h xL+i = Clip3(PpsVirtualBoundariesPosX[n], pic_width_in_luma_samples - 1, xL + i) (8 - 122 9) - Or, when pps_loop_filter_across_virtual_bo undaries_disabled_flag is equal to 1, PpsVirtualB oundariesPosX[n] % CtbSizeY is not equal to 0, and n = 0.. .pps_num_ver_virtual_boundaries - 1, and Pps VirtualBoundariesPosX[n] is greater than 0 and less than 4, the following applies: The following applies: h x+i = Clip3(0, PpsVirtualBoundariesPosX[n - 1, xL + i) (8 - 1230) - Otherwise, the following applies: h x+i = Clip3(0, pic_width_in_luma_samples - 1, xL + i) (8 - 1231) - When pps_loop_filter_across_virtual_boundar ies_disabled_flag is equal to 1, PpsVirtualBounda riesPosY[n] % CtbSizeY is not equal to 0, and n = 0..pps_ num_hor_virtual_boundaries - 1, and yL - PpsVi rtualBoundariesPosY[n] is greater than or equal to 0 and less than 3, the following applies The following applies: v y+j = Clip3(PpsVirtualBoundariesPosY[n], p ic_height_in_luma_samples - 1, yL + j) (8 - 123 2) - Or, when pps_loop_filter_across_virtual_bo The boundaries_disabled_flag is equal to 1, and PpsVirtualB oundariesPosY[n] % CtbSizeY is not equal to 0, and n = 0. .pps_num_hor_virtual_boundaries - 1 where Pps VirtualBoundariesPosY[n] - yL is greater than 0 and less than 4 If the case applies, the following applies. v y+j = Clip3(0, PpsVirtualBoundariesPosY[n - 1, yL + j) (8 - 1233) - Otherwise, the following applies. v y+j = Clip3(0, pic_height_in_luma_samples - 1, yL + j) (8 - 1234) - The variables clipLeftPos, clipRightPos, clipTopPos, and clipBottomPos are derived by calling the ALF boundary position derivation process as specified in clause 8.8.5.5 with (xCtb, yCtb) and (xL - xCtb , yL - yCtb) as inputs. - Table 4 - 1 defines the offsets yM1, yP1, yP2 of the positions of the vertical samples The definition of yP1 according to the position yL of the vertical luma samples and applyAlfLineBund ary

[0182]

Table 29

[0183]

Table 30

[0184] - Positions yL, clipLeftPos, and clipRight of the luminance samples in the vertical direction Depending on Pos - Positions xL, clipLeftPos, and clipRi of the luminance samples in the horizontal direction Horizontal sample position offsets xM1 and xP1 corresponding to ghtPos are represented by y-yyyy as defined below - The variable curr is derived as follows curr = alfPicture C [xCtbC + x, yCtbC + y] (8 - 12 86) - An array of cross-component filter coefficients f[j] is derived as follows for j = 0..7 as follows f[j] = CcAlfCoeff[j] (8 - 1287) - The variable sum is derived as follows sum = f[0] * recPicture L [h x , v y+yM1 + f[1] * recPicture L [h x+xM1 , v y + f[2] * recPicture L [h x , v y + f[3] * recPicture L [h x+xP1 , v y + (8 - 1289) f[4] * recPicture L [h x+xM1 , v y+yP1 + f[5] * recPicture L [h x , v y+yP1 + f[6] * recPicture L [h x+xP1 , v y+yP1 + f[7] * recPicture L [h x ,v y+yP2 sum = Clip3(-(1 << (BitDepth C - 1)), (1 << (BitD epth C - 1)) - 1, sum) (8 - 1290) sum = curr+(sum + 64)>>(7+(BitDepth Y - BitDep th C )) (8 - 1290) - The reconstructed chroma picture sample array ccAlfPi cture[xCtbC + x][yCtbC + y] filtered and corrected is derived as follows. ccAlfPicture[xCtbC + x][yCtbC + y]=Clip3(0, (1 << BitDepth C ) - 1, sum) (8 - 1291) Table x - xx - Definition of yM1, yP1, yP2 according to the position yL, clipTopPos, clipB ottomPos of the luminance samples in the vertical direction

[0185]

Table 31

[0186]

Table 32

[0187]

Table 33

[0188] 5.4. Embodiment #4 The working draft defined in JVET - P1008 can be changed as follows. x.x.x.x Cross - component filtering process for blocks of chroma samples​ The input to this process is as follows. - The luminance picture sample array reconfigured before the luminance adaptation loop filtering process recPicture L - The filtered reconfigured chroma picture sample array alfPicture C - The current chroma coding tree block for the top left sample of the current picture The chroma position (xCtbC, yCtbC) that defines the top left sample of the top left sample of - The width ccAlfWidth of the block of chroma samples - The height ccAlfheight of the block of chroma samples - The cross-component filter coefficients CcAlfCoeff[j] for j = 0..7 The output of this process is the modified, filtered, and reconfigured chroma picture sample array ccAlfPicture. The coding tree block luminance position (xCtb, yCtb) is derived as follows. It is derived. xCtb = (((xCtbC * SubWidthC) >> CtbLog2SizeY) < <ctblog2sizey (8-1229) yctb="(((yCtbC*SubHeightC)">>CtbLog2SizeY ) << CtbLog2SizeY (8 - 1229) To derive the filtered reconstructed chroma sample ccAlfPicture[xCtbC + x][yCtbC + y], the sample alfPicture C [xCtb C + x][yCtbC + y] (where x = 0..ccAlfWidth - 1, y = 0.. ccAlfHeight - 1) for each reconstructed chroma sample within the current chroma block is filtered as follows. - For the current chroma sample at chroma position (xCtbC + x, yCtbC + y), the corresponding luma position (xL, yL) is set equal to ((xCtbC + x) * SubWidthC, (yC tbC + y) * SubHeightC). - For luma positions (h -i = -1..1, j = -1..2) within the array recPicture L are derived as follows. - When pps_loop_filter_across_virtual_boundar xL+i ,v yL+j ies_disabled_flag is equal to 1, PpsVirtualBounda riesPosX[n] % CtbSizeY is not equal to 0, and xL - PpsV irtualBoundariesPosX[n] is greater than or equal to 0 and less than 3 at n = 0..pps _num_ver_virtual_boundaries - 1, the following applies. h = Clip3(PpsVirtualBoundariesPosX[n], pic_width_in_luma_samples - 1, xL + i) (8 - 122 h xL+i = Clip3(PpsVirtualBoundariesPosX[n], pic_width_in_luma_samples - 1, xL + i) (8 - 122 9) - Or, when pps_loop_filter_across_virtual_boundaries_disabled_flag is equal to 1, PpsVirtualBoundariesPosX[n] % CtbSizeY is not equal to 0, and n = 0..pps_num_ver_virtual_boundaries - 1, and PpsVirtualBoundariesPosX[n] is greater than 0 and less than 4, the following applies. undaries_disabled_flag is equal to 1, PpsVirtualB oundariesPosX[n] % CtbSizeY is not equal to 0, and n = 0. .pps_num_ver_virtual_boundaries - 1 where Pps VirtualBoundariesPosX[n] is greater than 0 and less than 4, the following applies. h x+i = Clip3(0, PpsVirtualBoundariesPosX[n - 1, xL + i) (8 - 1230) - Otherwise, the following applies. h x+i = Clip3(0, pic_width_in_luma_samples - 1, xL + i) (8 - 1231) - pps_loop_filter_across_virtual_boundar ies_disabled_flag is equal to 1, PpsVirtualBounda riesPosY[n] % CtbSizeY is not equal to 0, and n = 0..pps_ num_hor_virtual_boundaries - 1 where yL - PpsVi rtualBoundariesPosY[n] is greater than or equal to 0 and less than 3, the following applies is applied. v y+j = Clip3(PpsVirtualBoundariesPosY[n], p ic_height_in_luma_samples - 1, yL + j) (8 - 123 2) - Or, when pps_loop_filter_across_virtual_bo The boundaries_disabled_flag is equal to 1, and PpsVirtualB oundariesPosY[n] % CtbSizeY is not equal to 0, and n = 0. .pps_num_hor_virtual_boundaries - 1 where Pps VirtualBoundariesPosY[n] - yL is greater than 0 and less than 4 In this case, the following applies. v y+j = Clip3(0, PpsVirtualBoundariesPosY[n - 1, yL + j) (8 - 1233) - Otherwise, the following applies. v y+j = Clip3(0, pic_height_in_luma_samples - 1, yL + j) (8 - 1234) - The variables clipLeftPos, clipRightPos, clipTopPos, and clipBottomPos are derived by calling the ALF boundary position derivation process as specified in clause 8.8.5.5 with (xCtb, yCtb) and (xL - xCtb , yL - yCtb) as inputs. - Table 4-1 defines the offsets yM1, yP1, yP2 of the positions of the samples in the vertical direction The definition of yP1 according to the position yL of the luminance samples in the vertical direction and applyAlfLineBund ary

[0189]

Table 34

[0190]

Table 35

[0191] - Positions yL, clipLeftPos, and clipRight of the luminance samples in the vertical direction Depending on Pos - Positions xL, clipLeftPos, and clipRi of the luminance samples in the horizontal direction Horizontal sample position offsets xM1 and xP1 corresponding to ghtPos are represented by y-yyyy It is defined by - The variable curr is derived as follows curr = alfPicture C [xCtbC + x, yCtbC + y] (8 - 1 286) - The array of cross-component filter coefficients f[j] is derived as follows for j = 0..7 It is derived f[j] = CcAlfCoeff[j] (8 - 1287) - The variable sum is derived as follows sum = f[0] * recPicture L [h x , v y+yM1 + f[1] * recPicture L [h x+xM1 , v y + f[2] * recPicture L [h x , v y + f[3] * recPicture L [h x+xP1 , v y + (8 - 1289) f[4] * recPicture L [h x+xM1 , v y+yP1 + f[5] * recPicture L [h x , v y+yP1 + f[6] * recPicture L [h x+xP1 , v y+yP1 + f[7] * recPicture L [h x ,v y+yP2 sum = Clip3(-(1 << (BitDepth C - 1)), (1 << (BitD epth C - 1)) - 1, sum) (8 - 1290) sum = curr+(sum + 64)>>(7+(BitDepth Y - BitDep th C )) (8 - 1290) - The corrected and filtered reconstructed chroma picture sample array ccAlfPi cture[xCtbC + x][yCtbC + y] is derived as follows. ccAlfPicture[xCtbC + x][yCtbC + y]=Clip3(0,( 1 << BitDepth C ) - 1, sum) (8 - 1291) Table x - xx - Definition of yM1, yP1, yP2 according to the position yL, clipTopPos, clip BottomPos of the vertical luminance samples

[0192]

Table 36

[0193]

Table 37

[0194]

Table 38

[0195] Figure 32 is a block diagram showing an exemplary video processing system 1900 in which various techniques disclosed in this specification can be implemented. Various implementations may involve the components of system 1900 ​It may include some or all of the input unit 1902 for receiving video content. The video content may be received in an raw or uncompressed format, for example, with 8 or 10-bit multi-component pixel values, or it may be received in a compressed or encoded format. The input unit 1902 may represent a network interface, a peripheral bus interface, or a memory interface. Examples of network interfaces include wired interfaces such as Ethernet (registered trademark), Passive Optical Network (PON), etc., and wireless interfaces such as Wi-Fi (registered trademark) or cellular interfaces.

[0196] System 1900 may include a coding component 1904 capable of implementing various coding or encoding methods described herein. The coding component 1904 may reduce the average bit rate of the video from the input unit 1902 and generate an encoded representation of the video. Accordingly, this coding technology may be referred to as video compression or video transcoding technology. The output of the coding component 1904 may be stored, as represented by component 1906, or transmitted via a connected communication. The bit stream (or encoded) representation of the video received, stored, or communicated at the input unit 1902 may be used by component 1908 to generate pixel values or a displayable video transmitted to the display interface 1910. The bit The process of generating a video that can be viewed by a user from a transport stream representation is sometimes called video expansion (video unfolding). Further, specific video processing operations are called "coding" operations or tools, but it is understood that the encoding tools or operations are used in an encoder and the corresponding decoding tools or operations that reverse the result of encoding are performed by a decoder as such.

[0197] Examples of a peripheral bus interface or a display interface may include a Universal Serial Bus (USB) or a High-Definition Multimedia Interface (HDMI (registered trademark)) or a DisplayPort, etc. Examples of a storage interface may include Serial Advanced Technology Attachment (SATA), PCI, an IDE interface and the like. The technology described in this specification may be implemented in various electronic devices such as mobile phones, notebook computers, smart phones, or other devices capable of performing digital data processing and / or video display and the like.

[0198] FIG. 33 is a block diagram of a video processing apparatus 3600. The apparatus 3600 may be used to implement one or more of the methods described in this specification. The apparatus 3600 may be implemented in a smart phone tablet, computer, Internet of Things (IoT) receiver for a single item, etc. The apparatus 3600 may include one or more processors 3602, one or more memories 3604, and video processing hardware 3606. One or more processors 36 02 may be configured to implement one or more of the methods described in this specification. The memory(ies) 3604 may be used to implement the methods and techniques described in this specification as such. ​​It may be used to store the data and code to be processed. Video processing hardware 360 6 may be used to implement the techniques described herein in a hardware circuit .

[0199] FIG. 35 shows an exemplary video coding system 100 that may utilize the techniques of the present disclosure which is a block diagram.

[0200] As shown in FIG. 35, the video coding system 100 may include a source device 110 and a destination device 120. The source device 110 generates encoded video data, which may also be referred to as an encoder video device . The destination device 120 may decode the encoded video data generated by the source device 110, which may be referred to as a decoder video device .

[0201] The source device 110 may include a video source 112, a video encoder 114, and an input / output (I / O) interface 116.

[0202] The video source 112 may include a source such as a video capture device, an interface for receiving video data from a video content provider , and / or a computer graphics system for generating video data, or a combination of these sources . The video data may include one or more pictures. The video encoder 1 14 encodes the video data from the video source 112 and generates a bitstream . The bitstream may include a bit sequence that forms an encoded representation of the video data . The bitstream may include encoded pictures and associated data ​A symbolized picture is an encoded representation of a picture. The associated data may include a sequence parameter set, a picture parameter set, and other syntax structures. The I / O interface 116 may include a modem and / or a transmitter. The encoded video data can be directly transmitted to the destination device 120 via the network 130a through the I / O interface 116. The encoded video data may be stored in the storage medium / server 130b for the destination device 120 to access.

[0203] The destination device 120 may include an I / O interface 126, a video decoder 124, and a video display device 122.

[0204] The I / O interface 126 may include a receiver and / or a modem. The I / O interface 126 may obtain the encoded video data from the source device 110 or the storage medium / server 130b. The video decoder 124 may decode the encoded video data. The display device 122 may display the decoded video data to the user. The display device 122 may be integrated with the destination device 120 or may be external to the destination device 120 configured to interface with an external display device.

[0205] The video encoder 114 and the video decoder 124 may operate according to video compression standards such as the High Efficiency Video Coding (HEVC) standard, the Versatile Video Coding (VVVM) standard, and other current and / or future standards.

[0206] FIG. 36 is a block diagram showing an example of the video encoder 114, and this video encoder 114 may be the video encoder 114 in the system 100 shown in FIG. 36 .

[0207] The video encoder 200 may be configured to execute any or all of the techniques of the present disclosure . In the example of FIG. 36, the video encoder 200 includes a plurality of functional components . The techniques described in the present disclosure may be shared among various components of the video encoder 200 . In some examples, the processor may be configured to perform any or all of the techniques described in the present disclosure .

[0208] The functional components of the video encoder 200 include a division unit 201, a mode selection unit 203, a motion estimation unit 204, a motion compensation unit 205, and a prediction unit 202 that may include an intra prediction unit 206, a residual generation unit 207, a conversion unit 208, a quantization unit 209, an inverse quantization unit 210, an inverse conversion unit 2 11, a reconstruction unit 212, a buffer 213, and an entropy encoding unit 21 4.

[0209] In other examples, the video encoder 200 may include more, fewer, or different functional components. In one example, the prediction unit 202 may include an intra block copy (IBC) unit. The IBC unit can perform prediction in the IBC mode where at least one reference picture is the picture in which the current video block is located .

[0210] Furthermore, some components such as the motion estimation unit 204 and the motion compensation unit 205 may be highly integrated, but for the sake of explanation, they are shown separately in the example of FIG. 36. The splitting unit 201 can split one picture into one or more video blocks. The video encoder 200 and the video decoder 300 may support various video block sizes.

[0211] The mode selection unit 203 selects one of the coding modes, either intra or inter, for example, based on the error result, and supplies the obtained intra or inter coding block to the residual generation unit 207 to generate residual block data, and may also supply it to the reconstruction unit 212 to reconstruct the coded block for use as a reference picture. In an embodiment of the present invention, the mode selection unit 203 may select a combination of intra and inter prediction (CIP) modes that perform prediction based on the inter prediction signal and the intra prediction signal. Also, in the case of inter prediction, the mode selection unit 203 may select the resolution of the motion vector (e.g., sub-pixel or integer pixel accuracy) for the block. To perform inter prediction on the current video block, the motion estimation unit 204 may compare one or more reference frames from the buffer 213 with the current video block to generate motion information for the current video block. The motion compensation unit 205 may use pictures from the buffer 213 other than the picture associated with the current video block.

[0212]

[0213] ​​​​​​​​​​​​​​​Based on the motion information and the decoded samples, a predicted video block for the current video block may be determined.

[0214] The motion estimation unit 204 and the motion compensation unit 205 may perform different operations on the current video block, for example, based on whether the current video block is an I slice, a P slice, or a B slice.

[0215] In some examples, the motion estimation unit 204 may perform uni - directional prediction on the current video block. The motion estimation unit 204 may search for a reference picture in list 0 or list 1 for the current video block to obtain a reference video block. Then, the motion estimation unit 204 may generate a reference index indicating the reference picture in list 0 or list 1, including the reference video block and a motion vector indicating the spatial displacement between the current video block and the reference video block. The motion estimation unit 204 may output the reference index, the prediction direction indicator, and the motion vector as the motion information of the current video block. The motion compensation unit 205 may generate a predicted video block of the current block based on the reference video block indicated by the motion information of the current video block.

[0216] In other examples, the motion estimation unit 204 may perform bi - directional prediction on the current video block. The motion estimation unit 204 may search for a reference video block for the current video block from among the reference pictures in list 0, and may also search for another reference video block for the current video block from among the reference pictures in list 1. Then, ​​​​​​​​​​​​​​​The motion estimation unit 204 may generate a reference index indicating a reference picture in lists 0 and 1 including a reference video block, and a motion vector indicating a spatial displacement between the reference video block and the current video block. The motion estimation unit 204 may output the reference index and the motion vector of the current video block as motion information of the current video block. The motion compensation unit 205 may generate a predicted video block of the current video block based on the reference video block indicated by the motion information of the current video block. In some examples, the motion estimation unit 204 may output a full set of motion information for decoder decoding processing. In some examples, the motion estimation unit 204 need not output a full set of motion information for the current video. Rather, the motion estimation unit 204 may signal the motion information of the current video block by referring to the motion information of another video block. For example, the motion estimation unit 204 may determine that the motion information of the current video block is sufficiently similar to the motion information of a neighboring video block. In one example, the motion estimation unit 204 may indicate a value to the video decoder 300 indicating that the current video block has the same motion information as another video block in the syntax structure associated with the current video block. In another example, the motion estimation unit 204 may identify another video block and a motion vector difference (MVD) in the syntax structure associated with the current video block.

[0217]

[0218]

[0219]

[0220] ​​​​​​​​​​​​​​ The difference in motion vectors indicates the difference between the motion vector of the current video block and the motion vector of the indicated video block. The video decoder 300 may determine the motion vector of the current video block using the motion vector of the indicated video block and the difference in motion vectors. It may also be good.

[0221] As described above, the video encoder 200 may also predictively signal motion vectors. Two examples of predictive signaling techniques that may be implemented by the video encoder 200 include advanced motion vector prediction (AMVP) and merge mode signaling.

[0222] The intra prediction unit 206 may perform intra prediction on the current video block. When the intra prediction unit 206 performs intra prediction on the current video block, the intra prediction unit 206 may generate prediction data for the current video block based on the decoded samples of other video blocks in the same picture. The prediction data for the current video block may include the predicted video block and various syntax elements. It may also be good.

[0223] The residual generation unit 207 may generate residual data for the current video block by subtracting the predicted video block of the current video block from the current video block (e.g., indicated by a negative sign). The residual data of the current video block may include residual video blocks corresponding to different sample components of the samples in the current video block. It may also be included.

[0224] In other examples, for example, in skip mode, the residual for the current video block The data may be missing and the residual generation unit 207 may not perform the subtraction operation.

[0225] The transform processing unit 208 performs the transform on the residual video block associated with the current video block. Applying one or more transformations to the current video block A number of image blocks may be generated.

[0226] The transform processing unit 208 generates a transform coefficient image block associated with the current image block. After generating, the quantization unit 209 quantizes one or more The transformation coefficients associated with the current video block are calculated based on the quantization parameter (QP) value of the Several image blocks may be quantized.

[0227] The inverse quantization unit 210 and the inverse transform unit 211 apply inverse quantization to the transform coefficient image block. and applying the inverse transform to reconstruct a residual image block from the transform coefficient image block. The reconstruction unit 212 may generate one or more predictions generated by the prediction unit 202. Add the reconstructed residual image block to the corresponding samples from the image block and subtract the current image block from the corresponding samples. The reconstructed image block associated with the block may be generated and stored in the buffer 213. Cut.

[0228] After the reconstruction unit 212 reconstructs the image block, To reduce filtering artifacts, a loop filtering operation may be performed.

[0229] The entropy encoding unit 214 is a component of the video encoder 200. The entropy encoding unit 214 may receive data from Then, one or more entropy encoding operations are performed to generate entropy encoded data, and a bitstream including the entropy encoded data may be output.

[0230] FIG. 37 is a block diagram showing an example of a video decoder 300, and this video decoder 30 0 may be the video decoder 114 in the system 100 shown in FIG. 35.

[0231] The video decoder 300 may be configured to execute any or all of the techniques of the present disclosure. In the embodiment of FIG. 37, the video decoder 300 includes a plurality of functional components. The techniques described in the present disclosure may be shared among various components of the video decoder 300. In some examples, the processor may be configured to perform any or all of the techniques described in the present disclosure.

[0232] In the embodiment of FIG. 37, the video decoder 300 includes an entropy decoding unit 301, a motion compensation unit 302, an intra prediction unit 303, an inverse quantization unit 304, an inverse transform unit 305, a reconstruction unit 306, and a buffer 307. The video decoder 300 may, in some examples, perform a decoding path that is substantially the reverse of the encoding path described with respect to the video encoder 200 (FIG. 36).

[0233] The entropy decoding unit 301 extracts the encoded bitstream. The encoded bit stream may include entropy encoded video data (e.g., an encoded block of video data). The entropy decoding unit 301 entropy decodes the Decode the input video data, and from the entropy-decoded video data, the motion compensation unit 30 2 may determine motion information including a motion vector, motion vector precision, reference picture list index, and other motion information. The motion compensation unit 302 may determine such information, for example, by executing AMV P and merge modes.

[0234] The motion compensation unit 302 may generate a motion-compensated block and, in some cases perform interpolation based on an interpolation filter. The syntax elements may include an identifier for the interpolation filter used with sub-pixel precision.

[0235] The motion compensation unit 302 may use an interpolation filter such as that used by the video encoder 20 during encoding of the video block to calculate interpolation values for sub-integer pixels of the reference block. The motion compensation unit 302 may determine, based on the received syntax information, the interpolation filter used by the video encoder 200 and use this interpolation filter to generate a prediction block.

[0236] The motion compensation unit 302 may use a part of the syntax information to determine the size of the block used to encode one or more frames and / or slices of the encoded video sequence, how each macroblock of the picture of the encoded video sequence is divided, the mode indicating how each division is encoded, each one or more reference frames (and reference frame lists) between inter-encoded blocks, and other information for decoding the encoded video sequence.

[0237] ​The intra prediction unit 303 may form a prediction block from spatially adjacent blocks using, for example, an intra prediction mode received in the bitstream. The inverse quantization unit 303 inverse quantizes (i.e., inverse quantizes ) the quantized video block coefficients provided in the bitstream and decoded by the entropy decoding unit 3 01. The inverse transform unit 303 applies an inverse transform.

[0238] The reconstruction unit 306 may sum the residual block and the corresponding prediction block generated by the motion compensation unit 202 or the intra prediction unit 303 to form a decoded block . Optionally, a deblocking filter may be applied to filter the decoded block to remove block artifacts. The decoded video block is stored in the buffer 307, and the buffer 307 provides reference blocks for subsequent motion compensation / intra prediction and generates a decoded video for display on a display device.

[0239] Some embodiments can be described using a format based on the following terms . The first set of terms shows exemplary embodiments of the technology described in the previous chapter (e.g., item 1 of the exemplary embodiments).

[0240] 1. Determining (3402) to use a cross-component adaptive loop filter operation based on a criterion for conversion between a video unit of a video and an encoded representation of the video, wherein the cross-component adaptive loop filter uses a mirror padding technique for unavailable luminance samples, and performing the conversion based on the determination (3404); ​​​​​ , including, a video processing method (e.g., method 3400 of FIG. 34). This specification discloses various embodiments of a cross-component adaptive loop filter, its operation and mirror padding techniques, and the relationship with virtual buffer boundaries.

[0241] 2. The method according to item 1, further using the mirror padding technique to derive one or more corresponding luminance samples among the unavailable luminance samples.

[0242] 3. The method according to item 2, wherein the one or more corresponding luminance samples are determined based on the distance of the one or more corresponding luminance samples from a representative luminance sample or the distance of the unavailable sample from the representative luminance sample.

[0243] 4. The method according to item 3, wherein the representative luminance sample corresponds to the position of a chroma sample where cross-component adaptive loop filtering technology is used.

[0244] 5. The method according to item 3, wherein the position of the representative luminance sample depends on the color format of the video.

[0245] 6. The method according to any one of items 3 to 4, wherein the distance corresponds to the distance in a first direction between a pixel line along a second direction including one or more luminance samples and a row including the representative sample.

[0246] 7. C represents a center line along a second direction where a representative luminance sample is located, M represents a line along a second direction where an unavailable sample is located, N represents a line along a second direction where one or more luminance samples are located, where C, M, N are positive integers, and M is not equal to N, and then, based on the size and shape of the cross-component adaptive loop filter The method according to item 6, which applies the mirror padding technique

[0247] 8. When the cross-component adaptive loop filter has a KxL filter shape where K is an even number and L is a positive integer, and the mirror padding technique is for padding unavailable samples located on a single line along the second direction M or N away from the virtual boundary of the cross-component adaptive loop filter from the nearest sample line near the virtual boundary, the method according to item 1. The method according to item 1, which includes padding unavailable samples located on a single line along the second direction M or N away from the virtual boundary of the cross-component adaptive loop filter from the nearest sample line near the virtual boundary

[0248] 9. When the virtual boundary of the cross-component adaptive loop filter is below the representative luminance sample in the second direction, using the nearest line in the second direction above the virtual boundary to pad the unavailable samples, the method according to item 3 The method according to item 3, which uses the nearest line in the second direction above the virtual boundary to pad the unavailable samples when the virtual boundary of the cross-component adaptive loop filter is below the representative luminance sample in the second direction

[0249] 10. When the unavailable samples are located in row M, where M is an integer less than C and C is an integer indicating the center line along the second direction of the representative luminance sample, if d(C,M)=d(N,C)-offset (offset is an integer value), or d(C,M)<d(N,C )(d() is a distance function), it is determined that the samples located on line N in the second direction are the corresponding samples, the method according to item 3 The method according to item 3, which determines that the samples located on line N in the second direction are the corresponding samples when the unavailable samples are located in row M, where M is an integer less than C and C is an integer indicating the center line along the second direction of the representative luminance sample, if d(C,M)=d(N,C)-offset (offset is an integer value), or d(C,M)<d(N,C )(d() is a distance function ).

[0250] The following items show exemplary embodiments of the technology described in the previous chapter (e.g., item 2).

[0251] 11. The method according to any one of items 1 to 10, where the first direction is the vertical direction and the second direction is the horizontal direction

[0252] 12. The method according to any one of items 1 to 10, wherein the first direction is a horizontal direction and the second direction is a vertical direction.

[0253] 13. The method according to any one of items 11 to 12, wherein the orientations of the first direction and the second direction depend on the orientation of the boundary of the virtual buffer.

[0254] The following items show exemplary embodiments of the technology described in the previous chapter (for example, item 3).

[0255] 14. The method according to any one of items 1 to 13, wherein the video unit includes a video picture, a video sub-picture, a video slice, a video tile, or a 360-degree boundary of the video.

[0256] 15. The method according to any one of items 1 to 14, wherein performing the conversion includes encoding the video to generate the encoded representation.

[0257] 16. The method according to any one of items 1 to 14, wherein performing the conversion includes parsing and decoding the encoded representation to generate the video.

[0258] In the above items, the orientation may be horizontal or vertical, and correspondingly, the first direction and the second direction may be vertical or horizontal directions called pixel columns and pixel rows.

[0259] 17. A video decoding apparatus comprising a processor configured to implement the method according to one or more of items 1 to 16.

[0260] 18. A video encoding apparatus comprising a processor configured to implement the method according to one or more of items 1 to 16.

[0261] 19. A computer program product having computer code stored therein, said computer program product comprising: When executed by a processor, the code causes the processor to A computer program product implementing the method described above.

[0262] 20. Any method, apparatus or system described herein.

[0263] The second set of items includes the techniques described in the previous section (e.g., items 1-3 of the exemplary embodiment). 1 illustrates an exemplary embodiment of the technique.

[0264] 1. A video unit is used to convert between video units and bitstream representations of video. Pad unavailable luminance samples while applying the loop filtering tool to the determining whether to enable mirror padding processing for mirroring (3812); and performing the conversion based on the determination (3814). For example, method 3810 of FIG. 38A.

[0265] 2. The loop filtering tool comprises a cross-component adaptive loop filter (CC-AL F) The method according to item 1, including a tool.

[0266] 3. The loop filtering tool is an adaptive loop filtering (ALF) tool. The method according to item 1, comprising:

[0267] 4. The mirror padding process is performed by filtering the loop filtering tool. A second sample is available that is the corresponding sample of the first sample within the support region. The second sample may be padded, and the first sample may be used. The method according to item 1, which is not padding target.

[0268] 5. Further use mirror padding processing to derive unavailable luminance samples, and the The method according to item 1, which derives one or more luminance samples of the unavailable luminance samples.

[0269] 6. Based on the distance between the corresponding luminance sample from the representative luminance sample and / or the distance between the unavailable sample from the representative luminance sample, determine the corresponding luminance sample, The method according to item 5.

[0270] 7. The representative luminance sample is defined as the juxtaposed luminance samples of the chroma samples to be filtered, the method according to item 6.

[0271] 8. The position of the juxtaposed luminance samples of the chroma samples depends on the color f ormat of the video, the method according to item 7.

[0272] 9. The juxtaposed luminance samples of the chroma samples located at (x, y) are defined as those located at (2x, 2y) in the color format of 4:2: 0, the method according to item 8. The method according to item 8.

[0273] 10. The juxtaposed luminance samples of the chroma samples located at (x, y) are defined as those located at (2x, y) in the color format of 4:2:2 is, the method according to item 8. The method according to item 8.

[0274] 11. The juxtaposed luminance samples of the chroma samples located at (x, y) are defined as those located at (x, y) in the color format of 4:4:4 is, the method according to item 8. The method according to the item.

[0275] 12. The method according to item 6, wherein the distance refers to the distance along a first direction between a first row including the corresponding luminance sample and a second row including the representative luminance sample.

[0276] 13. The method according to item 6, wherein the distance is calculated as a difference along a first direction between a pixel line along a second direction including the corresponding luminance sample and a row including the representative luminance sample.

[0277] 14. C represents a center line along a second direction where the representative luminance sample is located, M represents a line along the second direction where the unavailable sample is located, N represents a line along the second direction where the corresponding luminance sample is located, where C, M, and N are positive integers and M is not equal to N. The method according to item 13.

[0278] 15. In the mirror padding process, one or more corresponding luminance samples to be padded are utilized based on the number of rows of samples used by the filter shape used by the CC-ALF tool. The method according to item 5.

[0279] 16. An unavailable luminance sample is located in row M, the sample located in row N is determined as one or more corresponding luminance samples to be padded, and d(C, M) = d(N, C), where d(x, y) represents the distance between row x and row y, and M, C, and N are positive integers. The method according to item 5.

[0280] 17. The mirror padding process is as follows: 1) The central luminance sample is used as the representative luminance sample. Select, 2) When the CC-ALF tool has a filter shape of K×L, and for that reason, when K is odd and L is a positive integer, the method according to item 6 corresponding to the process used during the application of the adaptive loop filtering (ALF) tool.

[0281] 18. When the CC-ALF tool has a filter shape of K×L and the unavailable luminance samples are located in row M above the virtual boundary or row N below it, the mirror padding process includes padding the one or more corresponding luminance samples located in row N or M from the nearest sample row above row N or below row M away from the virtual boundary. For that reason, K is odd and L, M, and N are positive integers. The method according to item 6.

[0282] 19. When the virtual boundary is above the representative luminance sample, pad the unavailable luminance samples using the nearest row below the virtual boundary. When the virtual boundary is above the above-mentioned representative luminance sample, pad the one or more corresponding luminance samples using the nearest row above the row containing the one or more corresponding luminance samples. The method according to item 18.

[0283] 20. When the virtual boundary is below the representative luminance sample, pad the unavailable luminance samples using the nearest row above the virtual boundary. When the virtual boundary is below the above-mentioned representative luminance sample, pad the one or more corresponding luminance samples using the nearest row below the row containing the one or more corresponding luminance samples. The method according to item 18.

[0284] 21. K = 2, yL = 0, yP1 = 1, and the virtual boundary is equal to CtbSizeY - 4. For this purpose, yL and yP1 are the y - coordinates of two sample lines, and CtbS izeY represents the size of a coding tree unit (CTU), as described in item 19 or 2 0 of the method.

[0285] 22. When yL is equal to CtbSizeY - 4 and the lines above yL are unavailable, pad the sample (x, yP1) in the row of yP1 with the sample (x, yL) in the row of yL using the method described in item 21.

[0286] 23. K = 4, yM1 = - 1, yL = 0, yP1 = 1, yP2 = 2, and the virtual boundary is equal to CtbSizeY - 4. For this purpose, yM1, yL, yP1, and yP2 are the y - coordinates of four sample lines, and CtbSizeY represents the size of a coding tree unit (C TU), as described in item 19 or 20 of the method. TU), as described in item 19 or 20 of the method.

[0287] 24. When yL is equal to CtbSizeY - 3 and the lines above yM1 are unavailable , pad the sample (x, yP2) in the row of yP2 with the sample (x, y P1) in the row of yP1 using the method described in item 23.

[0288] 25. When yL is equal to CtbSizeY - 4 and the lines above yM1 are unavailable , pad the sample (x, yM1) in the row of yM1 with the sample (x, yL ) in the row of yL, and pad the samples (x, yP2) and (x, yP1) in the rows of yP2 and yP1 with the sample (x, yL) in the said row of yL using padding using the method described in item 23.

[0289] 26. K = 6, yM2 = -2, yM1 = -1, yL = 0, yP1 = 1, yP2 = 2, y P3 = 3, and the virtual boundary is equal to CtbSizeY - 4. Therefore, yM2, yM1, yL, yP1, yP2, yP3 are the y - coordinates of six sample rows, and CtbS izeY represents the size of a coding tree unit (CTU), as described in item 19 or 2 0 of the method.

[0290] 27. When yL is equal to CtbSizeY - 2 and the rows above yM2 are unavailable, pad the sample (x, yP3) in the row of yP3 with the sample (x, y P2) in the row of yP2, according to the method described in item 26.

[0291] 28. When yL is equal to CtbSizeY - 3 and the rows of yM2 and above yM2 are unavailable, pad the sample (x, yM2) in the row of yM2 with the sample (x, yM1) in the row of yM1, and pad the samples (x, yP3) and (x, yP2) in the rows of yP3 and yP2 with the sample (x, yP1) in the row of yP1, according to the method described in item 26. )

[0292] 29. When yL is equal to CtbSizeY - 4 and the rows above yM2, the row of yM2, and the row of y M1 are unavailable, pad the samples (x, yM2) and (x, yM1) in the rows of yM2 and yM1 with the sample (x, yL) in the row of yL, ) and pad the samples (x, yP3), (x, yP 2), and (x, yP1) in the rows of yP3, yP2, and yP1 with the sample (x, yL) in the row of yL, using the sample (x, yL) in the row of yL. The method according to item 26, for padding.

[0293] When 30.yL is equal to CtbSizeY - 5 and the row of yP1 is unavailable, sample (x, yP1) in the row of yP 1 is padded using sample (x, yL) in the row of yL, the method according to item 21. The method according to item 21, for padding using sample (x, yL) in the row of yL for sample (x, yP1) in the row of yP1.

[0294] When 31.yL is equal to CtbSizeY - 6 and the row of yP2 is unavailable, sample (x, yP2) in the row of yP 2 is padded using sample (x, yP1) in the row of yP1, the method according to item 23. The method according to item 23, for padding sample (x, yP2) in the row of yP2 using sample (x, yP1) in the row of yP1.

[0295] When 32.yL is equal to CtbSizeY - 5 and the rows of yP2 and yP1 are unavailable Sample (x, yP1) in the row of yP1 and sample (x, yP2) in the row of yP2 are padded using sample (x, yL) in the row of yL, and sample (x, yM1) in the row of y M1 is padded using sample (x, yL) in the row of yL, the method according to item 23. The method according to item 23, for padding sample (x, yM1) in the row of yM1 using sample (x, yL) in the row of yL.

[0296] When 33.yL is equal to CtbSizeY - 7 and the row of yP3 is unavailable, sample (x, yP3) in the row of yP 3 is padded using sample (x, yP2) in the row of yP2, the method according to item 26. The method according to item 26, for padding sample (x, yP3) in the row of yP3 using sample (x, yP2) in the row of yP2.

[0297] When 34.yL is equal to CtbSizeY - 6 and the rows of yP3 and yP2 are unavailable Sample (x, yP3) in the row of yP3 and sample in the row of yP2 are padded using sample (x, yP1) in the row of yP1, for padding Pad the sample (x, yM2) using the sample (x, yM1) in the row of yM1. The method according to item 26.

[0298] 35. When yL is equal to CtbSizeY - 5 and the rows of yP3, yP2, and yP1 are unavailable, pad the sample (x, yP3) in the row of yP3, the sample (x, yP2) in the row of yP2, and the sample (x, yP1) in the row of yP1 using the sample (x, yL) in the row of yL, the sample (x, yM2) in the row of yM2, and the sample (x, yM1) in the row of yM1. The method according to item 26. The method according to item 26. The method according to item 26. Pad the sample (x, yP3) in the row of yP3, the sample (x, yP2) in the row of yP2, and the sample (x, yP1) in the row of yP1 using the sample (x, yL) in the row of yL, the sample (x, yM2) in the row of yM2, and the sample (x, yM1) in the row of yM1.

[0299] 36. An unavailable luminance sample is located in row M, a sample located in row N is determined as one or more corresponding luminance samples to be padded, d(C, M) = d(N, C) - offset or d(C, M) < d(N, C), where d(x, y) represents the distance between row x and row y, offset is an integer, and M, C, N are positive integers. The method according to item 5. The method according to item 5. The method according to item 5. The method according to item 5.

[0300] 37. An unavailable luminance sample is located in row M, a sample located in row N is determined as one or more corresponding luminance samples to be padded, d(M, C) = d(C, N) - offset or d(C, M) < d(N, C), where d(x, y) represents the distance between row x and row y, offset is an integer, and M, C, N are positive integers. The method according to item 5. The method according to item 5. The method according to item 5. The method according to item 5.

[0301] 38. The method according to item 36 or 37, where the offset is equal to 1.

[0302] 39. When the unusable luminance sample is located in row M above the virtual boundary or row N below it, the mirror padding process includes padding the one or more corresponding luminance samples located in row M above the virtual boundary from the closest sample row above row N or below row M and below row N to row M above the virtual boundary. For this purpose, M and N are positive integers. The method according to item 36. When this is the case, the mirror padding process pads the one or more corresponding luminance samples located in row M above the virtual boundary from the closest sample row above row N or below row M and below row N to row M above the virtual boundary. For this purpose, M and N are positive integers. The method according to item 36. When this is the case, the mirror padding process pads the one or more corresponding luminance samples located in row M above the virtual boundary from the closest sample row above row N or below row M and below row N to row M above the virtual boundary. For this purpose, M and N are positive integers. The method according to item 36. When this is the case, the mirror padding process pads the one or more corresponding luminance samples located in row M above the virtual boundary from the closest sample row above row N or below row M and below row N to row M above the virtual boundary. For this purpose, M and N are positive integers. The method according to item 36. When this is the case, the mirror padding process pads the one or more corresponding luminance samples located in row M above the virtual boundary from the closest sample row above row N or below row M and below row N to row M above the virtual boundary. For this purpose, M and N are positive integers. The method according to item 36.

[0303] 40. When the virtual boundary is below the representative luminance sample, pad the unusable luminance sample using the closest row above the virtual boundary, and pad the one or more corresponding luminance samples using the closest row below the row containing the one or more corresponding luminance samples. The method according to item 39. When the virtual boundary is below the representative luminance sample, pad the unusable luminance sample using the closest row above the virtual boundary, and pad the one or more corresponding luminance samples using the closest row below the row containing the one or more corresponding luminance samples. The method according to item 39. When the virtual boundary is below the representative luminance sample, pad the unusable luminance sample using the closest row above the virtual boundary, and pad the one or more corresponding luminance samples using the closest row below the row containing the one or more corresponding luminance samples. The method according to item 39. When the virtual boundary is below the representative luminance sample, pad the unusable luminance sample using the closest row above the virtual boundary, and pad the one or more corresponding luminance samples using the closest row below the row containing the one or more corresponding luminance samples. The method according to item 39.

[0304] 41. When the virtual boundary is above the representative luminance sample, pad the unusable luminance sample using the closest row below the virtual boundary, and pad the one or more corresponding samples using the closest row above the row containing the one or more corresponding luminance samples. The method according to item 39. When the virtual boundary is above the representative luminance sample, pad the unusable luminance sample using the closest row below the virtual boundary, and pad the one or more corresponding samples using the closest row above the row containing the one or more corresponding luminance samples. The method according to item 39. When the virtual boundary is above the representative luminance sample, pad the unusable luminance sample using the closest row below the virtual boundary, and pad the one or more corresponding samples using the closest row above the row containing the one or more corresponding luminance samples. The method according to item 39. When the virtual boundary is above the representative luminance sample, pad the unusable luminance sample using the closest row below the virtual boundary, and pad the one or more corresponding samples using the closest row above the row containing the one or more corresponding luminance samples. The method according to item 39.

[0305] 42. K = 2, yL = 0, yP1 = 1, and the virtual boundary is equal to CtbSizeY - 4. For this purpose, yL and yP1 are the y - coordinates of two sample rows, and CtbSizeY represents the size of a coding tree unit (CTU). The method according to item 40 or 41. 42. K = 2, yL = 0, yP1 = 1, and the virtual boundary is equal to CtbSizeY - 4. For this purpose, yL and yP1 are the y - coordinates of two sample rows, and CtbSizeY represents the size of a coding tree unit (CTU). The method according to item 40 or 41. 42. K = 2, yL = 0, yP1 = 1, and the virtual boundary is equal to CtbSizeY - 4. For this purpose, yL and yP1 are the y - coordinates of two sample rows, and CtbSizeY represents the size of a coding tree unit (CTU). The method according to item 40 or 41. 42. K = 2, yL = 0, yP1 = 1, and the virtual boundary is equal to CtbSizeY - 4. For this purpose, yL and yP1 are the y - coordinates of two sample rows, and CtbSizeY represents the size of a coding tree unit (CTU). The method according to item 40 or 41.

[0306] 43. When yL is equal to CtbSizeY - 5 and the row of yP1 is unusable, yP Padding the sample (x, yP1) in the row of 1 using the sample (x, yL) in the row of yL The method according to item 42

[0307] 44. K = 4, yM1 = -1, yL = 0, yP1 = 1, yP2 = 2, and the virtual boundary is equal to CtbSizeY - 4. Therefore, yM1, yL, yP1, and yP2 are the y - coordinates of four sample rows, and CtbSizeY represents the size of the coding tree unit (CTU). The method according to item 40 or 41

[0308] 45. When yL is equal to CtbSizeY - 4 and the rows above yM1 and above yM1 are unavailable, padding the sample (x, yM1) in the row of yM1 using the sample (x, yL) in the row of yL, and padding the sample (x, yP2) in the row of yP2 using the sample (x, yP1) in the row of yP1. The method according to item 44

[0309] 46. When yL is equal to CtbSizeY - 6 and the row of yP2 is unavailable, padding the sample (x, yP2) in the said row of yP2 using the sample (x, yP1) in the row of yP1. The method according to item 44

[0310] 47. When yL is equal to CtbSizeY - 5 and the rows of yP2 and yP1 are unavailable, padding the sample (x, yP2) in the row of yP2 using the sample (x, yL) in the row of yL, and padding the sample (x, yM1) in the row of yM1 using the sample (x, yL) in the row of yL. The method according to item 44

[0311] ​​​​​​​​​​​​48. K = 6, yM2 = -2, yM1 = -1, yL = 0, yP1 = 1, yP2 = 2, y P3 = 3, and the virtual boundary is equal to CtbSizeY - 4, and for this reason, yM2, yM1, yL, yP1, yP2, yP3 are the y - coordinates of six sample lines, and CtbS izeY represents the size of a coding tree unit (CTU), the method according to item 40 or 4 1.

[0312] 49. When yL is equal to CtbSizeY - 3 and the lines above yM2 and the line above yM2 are not available, pad the sample (x, yM2) in the line of yM2 using the sample (x, yM1) in the line of yM1, and pad the sample (x, yP3) in the line of yP3 using the sample (x, yP2) in the line of yP2, the method according to item 48.

[0313] 50. When yL is equal to CtbSizeY - 4 and the lines above yM2, the line of yM2, and y M1 are not available, pad the samples (x, yM2) and (x, yM1) in the lines of yM2 and yM1 using the sample (x, yL) in the line of yL, and pad the samples (x, yP3) and (x, yP2) in the lines of yP3 and yP2 using the sample (x, yP1) in the line of yP1, the method according to item 48.

[0314] 51. When yL is equal to CtbSizeY - 7 and the line of yP3 is not available, pad the sample (x, yP3) in the line of yP3 using the sample (x, yP2) in the line of yP2, and pad the sample (x, yM2) in the line of yM2 using the sample (x, yM1) in the line of yM1 ​​​​​​The method according to item 48, padding using the sample (x, yM1).

[0315] 52. When yL is equal to CtbSizeY - 6 and the rows of yP3 and yP2 are unavailable padding the sample (x, yP3) in the row of yP3 and the sample in the row of yP2 (x, yP2) using the sample (x, yP1) in the row of yP1, and padding the sample (x, yM2) in the row of yM2 and the sample (x, yM1) in the row of yM1 using the sample (x, yL) in the row of yL, the method according to item 48.

[0316] 53. When yL is equal to CtbSizeY - 5 and the rows of yP3, yP2, and yP1 are unavailable padding the sample (x, yP3) in the row of yP3, the sample in the row of yP2 (x, yP2), and the sample (x, yP1) in the row of yP1 using the sample (x, yL) in the row of yL, the sample (x, yM2) in the row of yM2, and the sample (x, yM1) in the row of yM1, the method according to item 48.

[0317] 54. The result of the determination is included in the bitstream representation at the sequence level, picture level, slice level, or tile group level, the method according to item 1.

[0318] 55. The method according to any of the preceding items, where the first direction is the vertical direction and the second direction is the horizontal direction.

[0319] 56. The method according to any of the preceding items, where the first direction is the horizontal direction and the second direction is the vertical direction.

[0320] ​​ 57. The orientations of the first direction and the second direction depend on the orientation of the boundary of the virtual buffer. The method according to item 55 or 56.

[0321] 58. For the conversion between the video unit of a video and the bitstream representation of the video, padding samples located at the virtual boundary based on the coding information of the video unit, and determining whether to apply an iterative padding process and / or a mirror padding process (3822), and performing the conversion based on the determination (3824) A video processing method (e.g., the method 3820 shown in FIG. 38B).

[0322] 59. The method according to item 58, wherein the coding information includes the size of the video unit that is a coding tree unit (CTU) or a coding tree block (CTB).

[0323] 60. The method according to item 59, wherein the size of the CTU or CTB is greater than or equal to T, and thus, when T is a positive integer, a mirror padding process is applied.

[0324] 61. The method according to item 59, wherein the size of the CTU or CTB is less than or equal to T, and thus, when T is a positive integer, an iterative padding process is applied.

[0325] 62. The method according to any of the preceding items, wherein the video unit is a picture, sub-picture, slice, tile, or 360-degree boundary of the video.

[0326] 63. In the CC-ALF tool, samples of the video unit of a video component ​​​​​​​The luminance value is predicted from the sample values of the video unit of another video component, the preceding The method according to any of the items described above.

[0327] 64. The conversion includes encoding the video into the bitstream representation, the method according to any of items 1 to 63.

[0328] 65. The conversion includes decoding the video from the bitstream representation, the method according to any of items 1 to 63.

[0329] 66. A video processing apparatus comprising a processor configured to implement the method according to any one or more of items 1 to 65.

[0330] 67. A computer-readable medium storing program code that, when executed, causes a processor to implement the method according to any one or more of items 1 to 65.

[0331] 68. A computer-readable medium storing an encoded representation or a bitstream representation generated according to any of the methods described above.

[0332] In this specification, the term "video processing" can refer to video encoding, video decoding, video compression, or video expansion. For example, a video compression algorithm may be applied during the conversion from the pixel representation of a video to the corresponding bitstream representation, or vice versa. The bitstream representation of the current video block may correspond to bits that are spread to the same or different locations within the bitstream, for example, as defined by the syntax. For example, one macroblock, from the perspective of the transformed and encoded residual error values, and also Bits in headers and other fields in a bit stream may be used for encoding instead.

[0333] The disclosed and other solutions, examples, embodiments, modules and implementations of functional operations described herein may be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, or in combinations of one or more of them. The disclosed and other embodiments may be implemented as one or more computer program products i.e., as one or more modules of computer program instructions encoded on a computer-readable medium for being executed by, or to control the operation of, a data processing apparatus. The computer-readable medium may be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter that provides a machine-readable propagated signal, or a combination of one or more of them. The term “data processing apparatus” refers to, for example, a programmable processing apparatus, a computer, or multiple processing apparatuses, or computers, or all apparatus, devices, and machines for processing data, including those that contain the computer program. The apparatus may include, in addition to hardware, code that creates an execution environment for the computer program, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. A propagated signal is an artificially generated signal, e.g., an electrical, optical, or electromagnetic signal generated by a machine, that encodes information for transmission to an appropriate receiver device and may be implemented as one or more modules of computer program instructions encoded on a computer-readable medium for being executed by, or to control the operation of, a data processing apparatus. The computer-readable medium may be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter that provides a machine-readable propagated signal, or a combination of one or more of them. The term “data processing apparatus” refers to, for example, a programmable processing apparatus, a computer, or multiple processing apparatuses, or computers, or all apparatus, devices, and machines for processing data, including those that contain the computer program. The apparatus may include, in addition to hardware, code that creates an execution environment for the computer program, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. A propagated signal is an artificially generated signal, e.g., an electrical, optical, or electromagnetic signal generated by a machine, that encodes information for transmission to an appropriate receiver device and may be implemented as one or more modules of computer program instructions encoded on a computer-readable medium for being executed by, or to control the operation of, a data processing apparatus. The computer-readable medium may be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter that provides a machine-readable propagated signal, or a combination of one or more of them. The term “data processing apparatus” refers to, for example, a programmable processing apparatus, a computer, or multiple processing apparatuses, or computers, or all apparatus, devices, and machines for processing data, including those that contain the computer program. The apparatus may include, in addition to hardware, code that creates an execution environment for the computer program, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. A propagated signal is an artificially generated signal, e.g., an electrical, optical, or electromagnetic signal generated by a machine, that encodes information for transmission to an appropriate receiver device and may be implemented as one or more modules of computer program instructions encoded on a computer-readable medium for being executed by, or to control the operation of, a data processing apparatus. The computer-readable medium may be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter that provides a machine-readable propagated signal, or a combination of one or more of them. The term “data processing apparatus” refers to, for example, a programmable processing apparatus, a computer, or multiple processing apparatuses, or computers, or all apparatus, devices, and machines for processing data, including those that contain the computer program. The apparatus may include, in addition to hardware, code that creates an execution environment for the computer program, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. A propagated signal is an artificially generated signal, e.g., an electrical, optical, or electromagnetic signal generated by a machine, that encodes information for transmission to an appropriate receiver device and may be implemented as one or more modules of computer program instructions encoded on a computer-readable medium for being executed by, or to control the operation of, a data processing apparatus. The computer-readable medium may be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter that provides a machine-readable propagated signal, or a combination of one or more of them. The term “data processing apparatus” refers to, for example, a programmable processing apparatus, a computer, or multiple processing apparatuses, or computers, or all apparatus, devices, and machines for processing data, including those that contain the computer program. The apparatus may include, in addition to hardware, code that creates an execution environment for the computer program, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. A propagated signal is an artificially generated signal, e.g., an electrical, optical, or electromagnetic signal generated by a machine, that encodes information for transmission to an appropriate receiver device and may be implemented as one or more modules of computer program instructions encoded on a computer-readable medium for being executed by, or to control the operation of, a data processing apparatus. The computer-readable medium may be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter that provides a machine-readable propagated signal, or a combination of one or more of them. The term “data processing apparatus” refers to, for example, a programmable processing apparatus, a computer, or multiple processing apparatuses, or computers, or all apparatus, devices, and machines for processing data, including those that contain the computer program. The apparatus may include, in addition to hardware, code that creates an execution environment for the computer program, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. A propagated signal is an artificially generated signal, e.g., an electrical, optical, or electromagnetic signal generated by a machine, that encodes information for transmission to an appropriate receiver device and may be implemented as one or more modules of computer program instructions encoded on a computer-readable medium for being executed by, or to control the operation of, a data processing apparatus. The computer-readable medium may be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter that provides a machine-readable propagated signal, or a combination of one or more of them. The term “data processing apparatus” refers to, for example, a programmable processing apparatus, a computer, or multiple processing apparatuses, or computers, or all apparatus, devices, and machines for processing data, including those that contain the computer program. The apparatus may include, in addition to hardware, code that creates an execution environment for the computer program, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. A propagated signal is an artificially generated signal, e.g., an electrical, optical, or electromagnetic signal generated by a machine, that encodes information for transmission to an appropriate receiver device It is generated for...

[0334] A computer program (also referred to as a program, software, software application , script, or code) can be written in any form of programming language, including a compiled language or an interpreted language, and it can be developed in any form, including as a stand-alone program or as a module , component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. The program can be recorded in a part of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), or it can be stored in a single file dedicated to the program , or it can be stored in multiple adjustment files (e.g., files that hold parts of one or more modules, subprograms, or code segments). One computer program can be deployed to be executed on one computer located at one site or on multiple computers distributed across multiple sites and interconnected by a communication network .

[0335] The processes and logic flows described herein can be performed by one or more programmable processors that execute one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by specific-purpose logic circuitry, such as an FPGA (field-programmable gate array) It can be performed by an FPGA (Field Programmable Gate Array) or an ASIC (Application Specific Integrated Circuit), and the device can also be implemented as a special-purpose logic circuit.

[0336] A processor suitable for the execution of a computer program includes, for example, both general-purpose and special-purpose micro processors, as well as any one or more processors of any kind of digital computer. Generally, a processor receives instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memories for storing instructions and data. Generally, a computer may include one or more mass storage devices for storing data, such as magnetic, magneto-optical disks, or optical disks, or may be operatively coupled to receive data from or transfer data to these mass storage devices. However, a computer does not necessarily have such devices. A computer-readable medium suitable for storing computer program instructions and data includes any form of non-volatile memory, medium, and memory devices, including, for example, EPROM, EEPROM, flash memory devices, magnetic disks, such as internal hard disks or removable disks, magneto-optical disks, and semiconductor storage devices such as CD-ROM and DVD-ROM disks. The processor and memory may be supplemented by, or incorporated in, a special-purpose logic circuit.

[0337] This patent specification contains many details, but these should not be construed as limiting the scope of any subject matter or the claims, but rather as descriptions and interpretations of features that may be specific to particular embodiments of a particular technology. Specific features described in the context of separate embodiments in this patent document may be implemented in combination in one example. Conversely, the various features described in the context of one example may be implemented separately or in any suitable sub - combination in multiple embodiments. Further, features may be described and initially claimed above as acting in a particular combination, but one or more features from the claimed combination may, in some cases, be excised from the combination, and the claimed combination may be directed to variations of sub - combinations or sub - sub - combinations. Similarly, operations are shown in the drawings in a particular order, but this should not be understood as requiring that such operations be performed in the particular order shown or in a sequential order to achieve the desired result, nor that all of the operations shown be performed. Also, the separation of the components of the various systems described in the examples in this patent specification should not be understood as requiring such separation in all embodiments. Only some implementations and examples are described, and based on the content described and illustrated in this patent document, other embodiments, extensions, and variations are possible.

[0338]

[0339] ​ ​

Claims

Claim 1 A method for processing video data, comprising: When applying a virtual boundary to the conversion between a video unit of a video and the bitstream of the video, determining to use a mirror padding process for padding unavailable luminance samples made unavailable by the virtual boundary while applying a cross-component adaptive loop filter (CC-ALF) tool to the video unit; Performing the conversion based on the determination; The mirror padding process includes padding corresponding samples of the unavailable luminance samples and considering the corresponding samples as unavailable even if the corresponding samples were available at the virtual boundary, whereby the corresponding samples are located in the filter support region of the CC-ALF tool; The row position of the corresponding sample to be padded satisfies a distance condition, the distance condition is related to a first distance and a second distance, the first distance is the distance between the row where a representative luminance sample is located in the video unit and the row where the unavailable luminance sample is located, the second distance is the distance between the row where the representative luminance sample is located and the row where the corresponding luminance sample is located, and the representative luminance sample is a luminance sample juxtaposed with a chroma sample to be filtered in the video unit. Claim 2. The method according to claim 1, wherein the unavailable luminance sample is represented as being located in row M of the video unit, the corresponding sample to be padded is represented as being located in row N of the video unit, and the distance condition is d(C, M)=d(N, C), where d(x, y) in the formula represents the distance between row x and row y, C in the formula represents the row where the representative luminance sample is located in the video unit, and C, M, and N are integers and M is not equal to N. Claim 3 The method according to claim 1, wherein the position of the juxtaposed luminance sample of the chroma sample depends on the color format of the video. Claim 4 The juxtaposed luminance samples of the chroma sample located at (x, y) are defined as the luminance samples located at (2x, 2y) when the color format is 4:2:0, as the luminance samples located at (2x, y) when the color format is 4:2:2, and as the luminance samples located at (x, y) when the color format is 4:4:4, according to the method of claim 3.

5. The CC-ALF tool has a K×L filter shape, where K = 4 and L = 3, and yM1, yL, yP1, yP2 are the y coordinates of four sample rows in the K×L filter shape, where yM1 = -1, yL = 0, yP1 = 1, yP2 = 2, the representative luminance sample is in row yL = 0, and the virtual boundary is located at row CtbSizeY - 4 in the video unit, where CtbSizeY represents the size of the video unit that is a coding tree unit (CTU), according to the method of any one of claims 1 to 4.

6. When the virtual boundary is above the representative luminance sample, padding the unavailable luminance samples using the nearest available row below the virtual boundary and padding the corresponding samples using the nearest available row above the row containing the corresponding samples, according to the method of claim 5.

7. When yL is equal to CtbSizeY - 3 and the row above yM1 is unavailable, padding the corresponding sample (x, yP2) in the row of yP2 using the sample (x, yP1) in the row of yP1, according to the method of claim 6.

8. When yL is equal to CtbSizeY - 4 and the rows above and including the row of yM1 are unavailable, padding the unavailable luminance sample (x, yM1) in the row of yM1 using the sample (x, yL) in the row of yL, padding the corresponding sample (x, yP1) in the row of yP1 using the sample (x, yL) in the row of yL, and padding the corresponding sample (x, yP2) in the row of yP2 using the sample (x, yL) in the row of yL, according to the method of claim 6 or 7.

9. When the virtual boundary is below the representative luminance sample, padding the unavailable luminance sample using the nearest available row above the virtual boundary and padding the corresponding sample using the nearest available row below the row containing the corresponding sample, the method according to any one of claims 5 to 8.

10. The method according to claim 9, wherein when yL is equal to CtbSizeY - 6 and the row of yP2 is unavailable, padding the unavailable luminance sample (x, yP2) in the row of yP2 using the sample (x, yP1) in the row of yP1.

11. The method according to claim 9 or 10, wherein when yL is equal to CtbSizeY - 5 and the rows of yP2 and yP1 are unavailable, padding the unavailable luminance sample (x, yP2) in the row of yP2 using the sample (x, yL) in the row of yL, padding the unavailable luminance sample (x, yP1) in the row of yP1 using the sample (x, yL) in the row of yL, and padding the corresponding sample (x, yM1) in the row of yM1 using the sample (x, yL) in the row of yL.

12. The method according to any one of claims 1 to 11, wherein the conversion includes encoding the video into the bitstream.

13. The method according to any one of claims 1 to 11, wherein the conversion includes decoding the video from the bitstream.

14. An apparatus for processing video data including a processor and a non - transitory memory for holding instructions, which when executed by the processor, cause the instructions to cause the processor to, Regarding the conversion between the video unit of the video and the bitstream of the video, when applying a virtual boundary to the video unit, determine to use a mirror padding process for padding unavailable luminance samples made unavailable by the virtual boundary while applying a cross - component adaptive loop filter (CC - ALF) tool to the video unit, Perform the conversion based on the determination. The mirror padding process includes padding corresponding samples of the unavailable luminance samples, and regarding the corresponding samples as unavailable even if the corresponding samples were available at the virtual boundary, whereby the corresponding samples are located in the filter support region of the CC-ALF tool, The row position of the corresponding sample to be padded satisfies a distance condition, the distance condition is related to a first distance and a second distance, the first distance is the distance between the row where representative luminance samples are located in the video unit and the row where the unavailable luminance samples are located, the second distance is the distance between the row where the representative luminance samples are located and the row where the corresponding luminance samples are located, and the representative luminance samples are the juxtaposed luminance samples of the chroma samples to be filtered in the video unit. Device.

15. A non-transitory computer-readable storage medium storing instructions for causing a processor, the instructions cause the processor to, Regarding the conversion between the video unit of the video and the bitstream of the video, when applying a virtual boundary to the video unit, determine to use a mirror padding process for padding unavailable luminance samples made unavailable by the virtual boundary while applying a cross-component adaptive loop filter (CC-ALF) tool to the video unit; Perform the conversion based on the determination; The mirror padding process includes padding corresponding samples of the unavailable luminance samples, and regarding the corresponding samples as unavailable even if the corresponding samples were available at the virtual boundary, whereby the corresponding samples are located in the filter support region of the CC-ALF tool, A non-transitory computer-readable storage medium, wherein a row position of the corresponding sample to be padded satisfies a distance condition, the distance condition is related to a first distance and a second distance, the first distance is a distance between a row where a representative luminance sample is located and a row where the unavailable luminance sample is located in the video unit, the second distance is a distance between the row where the representative luminance sample is located and the row where the corresponding luminance sample is located, and the representative luminance sample is a juxtaposed luminance sample of a chroma sample to be filtered in the video unit.

16. A method for storing a bitstream of a video generated by a method executed by a video processing apparatus, the method comprising: determining to use a mirror padding process for padding unavailable luminance samples made unavailable by the virtual boundary while applying a cross-component adaptive loop filter (CC-ALF) tool to the video unit of the video when applying the virtual boundary to the video unit; generating the bitstream based on the determination; storing the bitstream in a non-transitory computer-readable recording medium, and the mirror padding process includes padding the corresponding sample of the unavailable luminance sample and considering the corresponding sample as unavailable even if the corresponding sample was available at the virtual boundary, whereby the corresponding sample is located in the filter support area of the CC-ALF tool; a method, wherein a row position of the corresponding sample to be padded satisfies a distance condition, the distance condition is related to a first distance and a second distance, the first distance is a distance between a row where a representative luminance sample is located and a row where the unavailable luminance sample is located in the video unit, the second distance is a distance between the row where the representative luminance sample is located and the row where the corresponding luminance sample is located, and the representative luminance sample is a juxtaposed luminance sample of a chroma sample to be filtered in the video unit.

Citation Information

Patent Citations

  • JPP7393550B