Boundary position for adaptive loop filtering
Patent Information
- Application Number
- CN202180046880.4
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-06-30
- Filing Date
- 2021-06-29
- Publication Date
- 2026-09-25
- Estimated Expiration
- 2041-06-29
Smart Images

Figure CN116325728B_ABST
Abstract
Description
[0001] Cross-references to related applications
[0002] This application is based on International Patent Application No. PCT / CN2021 / 102938, filed on June 29, 2021, which claims priority and interest in International Patent Application No. PCT / CN2020 / 099604, filed on June 30, 2020. All of the aforementioned patent applications are incorporated herein by reference in their entirety. Technical Field
[0003] This patent document relates to image and video encoding and decoding. Background Technology
[0004] Digital video consumes the largest share of bandwidth in the internet and other digital communication networks. As the number of connected user devices capable of receiving and displaying video increases, the bandwidth demand for digital video is expected to continue to grow. Summary of the Invention
[0005] This document discloses techniques that can be used by video encoders and decoders to perform adaptive loop filtering during video encoding or decoding.
[0006] In one example aspect, a video processing method is disclosed. The method includes: for a conversion between video units and a bitstream of video, making a first determination of a first luminance adaptive loop filter (ALF) boundary and a second luminance ALF boundary, wherein the luminance adaptive loop filter is selectively applied across the first luminance ALF boundary to the luminance component of the video unit; making a second determination of a chrominance ALF boundary from the second luminance ALF boundary, wherein a chrominance adaptive loop filter is selectively applied across the chrominance ALF boundary to the chrominance component of the video unit; and performing a conversion based on the first and second determinations.
[0007] In yet another example, a video encoder apparatus is disclosed. The video encoder includes a processor configured to implement the methods described above.
[0008] In yet another example, a video decoder apparatus is disclosed. The video decoder includes a processor configured to implement the methods described above.
[0009] In yet another example, a computer-readable medium storing code is disclosed. This code embodies one of the methods described herein in the form of processor-executable code.
[0010] These and other features will be described in this document. Attached Figure Description
[0011] Figure 1The nominal vertical and horizontal positions of the 4:2:2 luminance and chrominance samples in the image are shown;
[0012] Figure 2 Here is an example of an encoder block diagram;
[0013] Figure 3 An image of an 18x12 brightness CTU divided into 12 segments and 3 raster scan strips is shown;
[0014] Figure 4 An image of an 18x12 luminance CTU divided into 24 sections and 9 rectangular stripes is shown;
[0015] Figure 5 The image is shown divided into 4 pieces and 4 rectangular strips;
[0016] Figure 6 The image is shown as being divided into 15 slices, 24 strips, and 24 sub-images;
[0017] Figures 7A-7C It is shown that: Figure 7A It is the CTB that spans the bottom image boundary; Figure 7B It is the CTB that crosses the right edge of the image; Figure 7C It is the CTB that crosses the right bottom edge of the image;
[0018] Figure 8 It is an illustration of image samples on an 8×8 grid, as well as horizontal and vertical block boundaries, and non-overlapping blocks of 8×8 samples that can be de-blocked in parallel;
[0019] Figure 9 The pixels involved in filter on / off decisions and strong / weak filter selection are shown;
[0020] Figure 10 Four one-dimensional orientation patterns for EO sample point classification are shown: horizontal (EO classification = 0), vertical (EO classification = 1), 135° diagonal (EO classification = 2), and 45° diagonal (EO classification = 3);
[0021] Figure 11 An example of the ALF filter shape is shown (chroma: 5×5 rhombus, luminance: 7×7 rhombus);
[0022] Figures 12A-12D It is shown that: Figure 12A - Subsampling locations of the vertical gradient; Figure 12B - Subsampling locations of the horizontal gradient; Figure 12C - Subsampling locations of the diagonal gradient; and Figure 12D - Subsampling locations of the diagonal gradient;
[0023] Figure 13An example of the loop filter line buffer requirements for the luminance component in VTM-4.0 is shown;
[0024] Figure 14 An example of the loop filter line buffer requirements for chroma components in VTM-4.0 is shown;
[0025] Figure 15 An example of modified block classification at virtual boundaries is shown;
[0026] Figure 16 An example of modified ALF filtering for the luminance component at the virtual boundary is shown;
[0027] Figures 17A-17C It is shown that: Figure 17A - A required line (on each side) needs to be filled for VB and above / below; Figure 17B - VB and above / below require two fill lines (on each side); Figure 17C - VB and above / below require 3 fill lines (on each side);
[0028] Figure 18 An example of repeated padding of luminance ALF filtering at the boundaries of an image / sub-image / strip / piece is shown;
[0029] Figure 19 An example of horizontal orbital motion compensation in VVC is shown;
[0030] Figure 20 An image of the HEC in a 3×2 layout is shown;
[0031] Figure 21A The arrangement of the CC-ALF with respect to other loop filters is shown;
[0032] Figure 21B A diamond-shaped filter is shown;
[0033] Figure 22 An example of repeated padding at the virtual boundary of CC-ALF in JVET-P0080 is shown;
[0034] Figure 23 A 3×4 diamond filter with 8 unique coefficients is shown;
[0035] Figure 24 This is an example of repeated padding at the ALF virtual boundary of CC-ALF in JVET-P1008;
[0036] Figure 25 The shape of the CC-ALF filter with 8 coefficients in JVET-P0106 is shown;
[0037] Figure 26The shape of the CC-ALF filter with 6 coefficients in JVET-P0173 is shown;
[0038] Figure 27 The shape of the CC-ALF filter with 6 coefficients in the JVET-P0251 is shown;
[0039] Figure 28 An example of the JC-CCALF workflow is shown;
[0040] Figure 29 Example locations of sample points to be filled are shown for a CC-ALF filtering method with an 8-tap 4×3 filter shape;
[0041] Figure 30 An example of mirror fill method 1 is shown;
[0042] Figure 31 An example of mirror fill method 2 is shown;
[0043] Figure 32 This is a block diagram of an example video processing system that can implement the disclosed technology;
[0044] Figure 33 This is a block diagram of an example hardware platform used for video processing;
[0045] Figure 34 This is a flowchart of an example method for video processing based on some implementations of the disclosed technology;
[0046] Figure 35 This is a block diagram illustrating a video encoding / decoding system according to some embodiments of the present disclosure;
[0047] Figure 36 This is a block diagram illustrating an encoder according to some embodiments of the present disclosure;
[0048] Figure 37 This is a block diagram illustrating a decoder according to some embodiments of the present disclosure; and
[0049] Figure 38 A flowchart illustrating an example method for video processing based on some implementations of the disclosed technology is shown. Detailed Implementation
[0050] Chapter headings are used in this document for ease of understanding, not to limit the applicability of the techniques and embodiments disclosed in each chapter to that chapter only. Furthermore, the use of H.266 terminology in some descriptions is merely for ease of understanding, not to limit the scope of the disclosed techniques. Therefore, the techniques described herein are also applicable to other video codec protocols and designs.
[0051] 1. Brief Introduction
[0052] This article relates to video codec technology. Specifically, it covers image / sub-image / strip / piece boundaries, as well as 360-degree video virtual boundaries and ALF virtual boundaries, particularly for Cross-Component Adaptive Loop Filtering (CC-ALF) and other codec tools in image / video codecs. It can be applied to existing video codec standards such as HEVC, or to standards yet to be finalized (multi-functional video codecs). It can also be applied to future video codec standards or video codecs.
[0053] 2. Introduction to Video Encoding and Decoding
[0054] Video codec standards primarily evolved from well-known ITU-T and ISO / IEC standards. ITU-T developed H.261 and H.263, while ISO / IEC developed MPEG-1 and MPEG-4 video standards. These two organizations jointly developed the H.262 / MPEG-2 video standard, the H.264 / MPEG-4 Advanced Video Coding (AVC) standard, and the H.265 / HEVC standard. Starting with H.262, video codec standards are based on a hybrid video codec architecture, employing temporal prediction plus transform coding. To explore future video codec technologies beyond HEVC, VCEG and MPEG jointly established the Joint Video Exploration Team (JVET) in 2015. Since then, JVET has adopted many new methods and incorporated them into reference software called the Joint Exploration Model (JEM). In April 2018, the Joint Video Experts Group (JVET) between VCEG (Q6 / 16) and ISO / IEC JTC1 SC29 / WG11 (MPEG) was established to develop a VVC standard with a 50% lower bitrate compared to HEVC.
[0055] The latest version of the VVC draft (i.e., Multi-Functional Video Codec (Draft 7)) can be found at the following address:
[0056] http: / / phenix.it-sudparis.eu / jvet / doc_end_user / documents / 16_Geneva / wg11 / JVET-P2001-v14.zip
[0057] The latest reference software for VVC (called VTM) can be found at the following address:
[0058] https: / / vcgit.hhi.fraunhofer.de / jvet / VVCSoftware_VTM / - / tags / VTM-7.0
[0059] 2.1. Color Space and Chroma Subsampling
[0060] 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 tuples of numbers, typically 3 or 4 values or color components (e.g., RGB). Essentially, a color space is a refinement of a coordinate system and its subspaces.
[0061] For video compression, the most commonly used color spaces are YCbCr and RGB.
[0062] YCbCr, Y'CbCr, or Y Pb / Cb Pr / Cr (also written as YCBCR or Y'CBCR) are color space families used as part of the color image pipeline in video and digital photography systems. Y' is the luminance component, and CB and CR are the blue and red difference chromaticity components. Y' (with an apostrophe) is different from Y; it is luminance, meaning the light intensity is based on a gamma-corrected non-linear encoding of the RGB primary colors.
[0063] Chromatic subsampling is a practice of encoding images by achieving a lower resolution for chromatic information than for luminance information, taking advantage of the fact that the human visual system is less sensitive to color differences than to luminance differences. 2.1.1.4:4:4
[0065] Each of the three Y'CbCr components has the same sampling rate, so there is no chromaticity subsampling. This scheme is sometimes used in high-end film scanners and film post-production. 2.1.2.4:2:2
[0067] The two chroma components are sampled at half the luminance sampling rate: the horizontal chroma resolution is halved while the vertical chroma resolution remains unchanged. This reduces the bandwidth of the uncompressed video signal by one-third with almost no visual difference. An example of the nominal vertical and horizontal positions for the 4:2:2 color format is shown in the VVC working draft. Figure 1 As shown in the image. 2.1.3.4:2:0
[0069] In the 4:2:0 scheme, horizontal sampling is doubled compared to 4:1:1, but the vertical resolution is halved because the Cb and Cr channels are sampled only on each alternating line. Therefore, the data rate remains the same. Cb and Cr are subsampled in both the horizontal and vertical directions with a coefficient of 2. There are three variations of the 4:2:0 scheme with different horizontal and vertical positions.
[0070] In MPEG-2, Cb and Cr are located at the same position in the horizontal direction. In the vertical direction, Cb and Cr are located between pixels (in the gaps).
[0071] • In JPEG / JFIF, H.261, and MPEG-1, Cb and Cr are located in the gaps, in the middle of the alternating luminance samples.
[0072] In a 4:2:0 DV configuration, Cb and Cr are located at the same position in the horizontal direction. In the vertical direction, they are located at the same position on alternating lines.
[0073] Table 2-1. SubWidthC and SubHeightC values derived from chroma_format_idc and separate_colour_plane_flag
[0074]
[0075]
[0076] 2.2. Encoder / decoder streams of typical video codecs
[0077] Figure 2 An example of a VVC encoder block diagram is shown, containing three loop filtering blocks: Deblocking Filter (DF), Sample Adaptive Offset (SAO), and ALF. Unlike DF, which uses predefined filters, SAO and ALF reduce the mean square error between the original and reconstructed samples by adding an offset and applying a Finite Impulse Response (FIR) filter, respectively, using the original samples of the current image. Side information signaling from the encoder / decoder informs the offset and filter coefficients. ALF is located at the final processing stage of each image and can be viewed as a tool attempting to capture and resolve artifacts produced by previous stages.
[0078] 2.3. Example Definition of Video Unit
[0079] The image is divided into one or more slice rows and one or more slice columns. A slice is a sequence of CTUs that covers a rectangular area of the image. The CTUs in a slice are scanned in raster scan order within that slice.
[0080] A strip consists of an integer number of consecutive complete CTU lines within an integer number of complete slices or images.
[0081] Two stripe modes are supported: raster scan stripe mode and rectangular stripe mode. In raster scan stripe mode, the stripe contains a sequence of complete slices in a sheet raster scan of the image. In rectangular stripe mode, the stripe contains several complete slices that collectively form a rectangular area of the image, or several consecutive complete CTU rows of a slice that collectively forms a rectangular area of the image. Slices within a rectangular stripe are scanned in sheet raster scan order within the rectangular area corresponding to that stripe.
[0082] A sub-image contains one or more stripes that collectively cover a rectangular area of the image.
[0083] Figure 3 An example of raster scan strip segmentation of an image is shown, where the image is divided into 12 slices and 3 raster scan strips.
[0084] Figure 4 The VVC specification shows an example of rectangular strip segmentation for an image, where the image is divided into 24 slices (6 slice columns and 4 slice rows) and 9 rectangular strips.
[0085] Figure 4 The image in the image has 18 by 12 luminance CTUs, which are divided into 24 patches and 9 rectangular stripes (informative).
[0086] Figure 5 An example of an image divided into slices and rectangular strips is shown, where the image is divided into 4 slices (2 slice columns and 2 slice rows) and 4 rectangular strips.
[0087] Figure 6 An example of sub-image segmentation of an image is shown, where the image is segmented into 15 slices, covering 4x4 CTUs of different dimensions, 24 strips, and 24 sub-images.
[0088] 2.3.1. CTU / CTB Dimensions
[0089] In VVC, the CTU size, which is notified by the syntax element log2_ctu_size_minus2 signaling in SPS, can be as small as 4×4.
[0090] 7.3.2.3 Sequence Parameter Set (RBSP) Syntax
[0091]
[0092]
[0093]
[0094] The increment of 2 in log2_ctu_size_minus2 specifies the size of the luminance codec tree block for each CTU.
[0095] log2_min_luma_coding_block_size_minus2 plus 2 specifies the minimum luma encoding / decoding block size.
[0096] The variables CtbLog2SizeY, CtbSizeY, MinCbLog2SizeY, MinCbSizeY, MinTbLog2SizeY, MaxTbLog2SizeY, MinTbSizeY, MaxTbSizeY, PicWidthInCtbsY, PicHeightInCtbsY, PicSizeInCtbsY, PicWidthInMinCbsY, PicHeightInMinCbsY, PicSizeInMinCbsY, PicSizeInSamplesY, PicWidthInSamplesC, and PicHeightInSamplesC are derived as follows:
[0097] CtbLog2SizeY=log2_ctu_size_minus2+2 (7-9)
[0098] CtbSizeY = 1 <CtbLog2SizeY (7-10)
[0099] MinCbLog2SizeY=log2_min_luma_coding_block_size_minus2+2 (7-11)
[0100] MinCbSizeY=1< <MinCbLog2SizeY (7-12)
[0101] MinTbLog2SizeY=2 (7-13)
[0102] MaxTbLog2SizeY=6 (7-14)
[0103] MinTbSizeY=1< <MinTbLog2SizeY (7-15)
[0104] MaxTbSizeY = 1 <MaxTbLog2SizeY (7-16)
[0105] PicWidthInCtbsY=Ceil(pic_width_in_luma_samples÷CtbSizeY) (7-17)
[0106] PicHeightInCtbsY = Ceil(pic_height_in_luma_samples ÷ CtbSizeY) (7-18)
[0107] PicSizeInCtbsY = PicWidthInCtbsY * PicHeightInCtbsY (7-19)
[0108] PicWidthInMinCbsY = pic_width_in_luma_samples / MinCbSizeY (7-20)
[0109] PicHeightInMinCbsY = pic_height_in_luma_samples / MinCbSizeY (7-21)
[0110] PicSizeInMinCbsY = PicWidthInMinCbsY * PicHeightInMinCbsY (7-22)
[0111] PicSizeInSamplesY =
[0112] pic_width_in_luma_samples * pic_height_in_luma_samples (7-23)
[0113] PicWidthInSamplesC = pic_width_in_luma_samples / SubWidthC (7-24)
[0114] PicHeightInSamplesC = pic_height_in_luma_samples / SubHeightC (7-25)
[0115] 2.3.2. CTUs in a Picture
[0116] Assume that the CTB / LCU size is indicated by M×N (typically, M equals N, as defined in HEVC / VVC), and for a CTB located at the boundary of a picture (or a slice or a tile or other categories, with the picture boundary taken as an example), K×L samples are located within the picture boundary, where K < M or L < N. For those CTBs shown in Figures 7A-7C , the CTB size is still equal to M×N, however, the bottom / right boundary of the CTB is outside the picture.
[0117] Figure 7 shows examples of CTBs crossing picture boundaries, (a) K=M, L<N; (b) K<M, L=N; (c) K<M, L<N. Furthermore, (a) is a CTB crossing the bottom picture boundary, (b) is a CTB crossing the right picture boundary, and (c) is a CTB crossing the right-bottom picture boundary.
[0118] 2.4 Deblocking Filter (DB)
[0119] The input of DB is reconstructed samples before the in-loop filter.
[0120] Vertical edges in a picture are filtered first. Then horizontal edges in the picture are filtered with samples modified by the vertical edge filtering process as input. The vertical and horizontal edges in CTBs of each CTU are processed separately based on coding units. For vertical edges of coding blocks in a coding unit, filtering starts from the edge on the left-hand side of the coding block, and proceeds towards the right-hand side of the coding block through the edges in their geometric order. For horizontal edges of coding blocks in a coding unit, filtering starts from the edge on the top of the coding block, and proceeds towards the bottom of the coding block through the edges in their geometric order.
[0121] Figure 8 It is a diagram of picture samples on an 8×8 grid, horizontal and vertical block boundaries, and non-overlapping blocks of 8×8 samples, which can be deblocked in parallel.
[0122] 2.4.1 Boundary Decision
[0123] Filtering is applied to 8×8 block boundaries. In addition, it must be a transform block boundary or a coding sub-block boundary (e.g., due to the use of affine motion prediction, ATMVP). For boundaries that do not meet this requirement, the filter is disabled.
[0124] 2.4.2 Boundary Strength Calculation
[0125] For a transform block boundary / coding sub-block boundary, if it lies within an 8×8 grid, it can be filtered, and the settings of bS[xDi][yDj] (where [xDi][yDj] represents coordinates) for the edge are defined in Table 2-2 and Table 2-3 respectively.
[0126] Table 2-2 Boundary Strength (when SPS IBC is disabled)
[0127]
[0128]
[0129] Table 2-3 Boundary Strength (when SPS IBC is enabled)
[0130]
[0131] 2.4.3. Deblocking decision for the luminance component
[0132] The decision-making process for removing blocks is described in this subsection.
[0133] A wider-stronger brightness filter is used only when all conditions 1, 2, and 3 are true (TRUE).
[0134] Condition 1 is the "large block condition". This condition detects whether the samples on the P-side and Q-side belong to a large block, which are represented by the variables bSidePisLargeBlk and bSideQisLargeBlk, respectively. bSidePisLargeBlk and bSideQisLargeBlk are defined as follows.
[0135] bSidePisLargeBlk = ((edge type is vertical and p0 belongs to CU with width >= 32) || (edge type is horizontal and p0 belongs to CU with height >= 32)) ? TRUE: FALSE
[0136] bSideQisLargeBlk = ((edge type is vertical and q0 belongs to CU with width >= 32) || (edge type is horizontal and q0 belongs to CU with height >= 32)) ? TRUE: FALSE
[0137] Based on bSidePisLargeBlk and bSideQisLargeBlk, condition 1 is defined as follows.
[0138] Condition 1 (Condition1)=(bSidePisLargeBlk||bSidePisLargeBlk)? TRUE:FALSE
[0139] Next, if Condition1 is true, then Condition2 (Condition2) will be further checked. First, derive the following variables:
[0140] –dp0, dp3, dq0, dq3 are first exported as in HEVC.
[0141] –if (p side is greater than or equal to 32)
[0142] dp0=(dp0+Abs(p50-2*p40+p30)+1)>>1
[0143] dp3=(dp3+Abs(p53-2*p43+p33)+1)>>1
[0144] –if (q side is greater than or equal to 32)
[0145] dq0=(dq0+Abs(q50-2*q40+q30)+1)>>1
[0146] dq3=(dq3+Abs(q53-2*q43+q33)+1)>>1
[0147] Condition2=(d<β)? TRUE:FALSE
[0148] Where d = dp0 + dq0 + dp3 + dq3.
[0149] If conditions 1 and 2 are valid, whether any block uses sub-blocks is further examined:
[0150]
[0151]
[0152] Finally, if both conditions 1 and 2 are valid, the proposed deblocking method will check condition 3 (large block strong filtering condition), which is defined as follows.
[0153] In condition 3 StrongFilterCondition, derive the following variables:
[0154] dpq is exported just like in HEVC.
[0155] sp3 = Abs(p3-p0), and is exported as in HEVC.
[0156] if (p side is greater than or equal to 32)
[0157]
[0158] sq3 = Abs(q0-q3), and is exported as in HEVC.
[0159] if (q side is greater than or equal to 32)
[0160]
[0161] In HEVC, StrongFilterCondition = (dpq < (β >> 2), sp3 + sq3 < (3 * β >> 5), and Abs(p0 - q0) < (5 * t). C +1)>>1)? TRUE:FALSE.
[0162] 2.4.4. Stronger deblocking filter for luminance (designed for larger blocks)
[0163] A bilinear filter is used when samples on either side of the boundary belong to a large block. Samples belonging to a large block are defined as having a vertical edge width >= 32 and a horizontal edge height >= 32.
[0164] Bilinear filters are listed below.
[0165] Block boundary samples for i = 0 to Sp-1 p i and q for j = 0 to Sq-1 i (In the above HEVC deblocking, pi and qi are the i-th sample point in the row of the filtered vertical edge, or the i-th sample point in the column of the filtered horizontal edge) are replaced by linear interpolation as follows:
[0166] —p i ′=(f i *Middle s,t +(64-f i )*P s +32)>>6), trim to p i ±tcPD i
[0167] —q j ′=(g j *Middle s,t +(64-g j )*Q s +32)>>6), trim to q j ±tcPD j
[0168] tcPD i and tcPD j The term is the position-related clipping described in Section 2.4.7, and g j f i Middle s,t P s and Q s The following is given.
[0169] 2.4.5. Color deblocking control
[0170] A strong chroma filter is applied on both sides of the block boundary. Here, the chroma filter is selected when both sides of the chroma edge are greater than or equal to 8 (chroma position), and the following decisions with three conditions are met: The first condition is the boundary strength and the block size decision. The proposed filter can be applied when the block width or height orthogonally across the block edge is equal to or greater than 8 in the chroma sample domain. The second and third conditions are essentially the same as the HEVC luminance deblocking decision, which are the on / off decision and the strong filter decision, respectively.
[0171] In the first decision, the boundary strength (bS) is modified for chroma filtering and the conditions are checked sequentially. If a condition is met, the remaining conditions with lower priority are skipped.
[0172] When bS equals 2, perform chroma deblocking; or when a large block boundary is detected, bS equals 1.
[0173] The second and third conditions are essentially the same as the HEVC luminance filter decision shown below.
[0174] In the second condition:
[0175] The d-value is derived in the same way as the brightness deblocking function in HEVC.
[0176] The second condition will be TRUE when d is less than β.
[0177] In the third condition, StrongFilterCondition is derived as follows:
[0178] dpq is derived in the same way as in HEVC.
[0179] sp3 = Abs(p3 - p0), which is derived as in HEVC.
[0180] sq3 = Abs(q0 - q3), which is derived as in HEVC.
[0181] In HEVC design, StrongFilterCondition = (dpq < (β >> 2), sp3 + sq3 < (β >> 3), and Abs(p0 - q0) < (5 * t) C +1)>>1)
[0182] 2.4.6. Strong deblocking filtering of chroma
[0183] The following strong deblocking filter for chroma is defined as:
[0184] p2′=(3*p3+2*p2+p1+p0+q0+4)>>3
[0185] p1′=(2*p3+p2+2*p1+p0+q0+q1+4)>>3
[0186] p0′=(p3+p2+p1+2*p0+q0+q1+q2+4)>>3
[0187] The proposed chromaticity filter performs deblocking on a 4×4 chromaticity sample grid.
[0188] 2.4.7. Position-related clipping
[0189] Position-dependent clipping (tcPD) is applied to the output samples of the brightness filtering process, which involves modifying the strong and long filters at the boundaries of 7, 5, and 3 samples. Assuming a quantization error distribution, it is recommended to increase the clipping value for samples expected to have higher quantization noise, thus anticipating a higher deviation between the reconstructed sample values and the true sample values.
[0190] For each P or Q boundary filtered by an asymmetric filter, based on the results of the decision process in Section 2.4.2, a table of location-related thresholds is selected from two tables (i.e., Tc7 and Tc3, listed below), which are provided to the decoder as edge information:
[0191] Tc7={6,5,4,3,2,1,1}; Tc3={6,4,2};
[0192] tcPD=(Sp==3)? Tc3:Tc7;
[0193] tcQD=(Sq==3)? Tc3:Tc7;
[0194] For P or Q boundaries filtered using short symmetric filters, apply a position-dependent threshold with a low amplitude:
[0195] Tc3 = {3, 2, 1};
[0196] After defining the threshold, the filtered p' is clipped based on the tcP and tcQ clipping values. i and q' i Sample values:
[0197] p” i =Clip3(p' i +tcP i ,p' i –tcP i ,p' i );
[0198] q” j =Clip3(q' j +tcQ j ,q' j –tcQ j ,q' j );
[0199] Where p' i and q' i These are the filtered sample values, p” i and q” j It is the output sample value after clipping, and tcP i tcQ jThe clipping threshold is derived from the VVC tc parameters, tcPD, and tcQD. The Clip3 function is the clipping function specified in VVC.
[0200] 2.4.8. Sub-block Removal and Adjustment
[0201] To enable parallel-friendly deblocking using long filters and sub-block deblocking, the long filter is limited to modifying a maximum of 5 samples (AFFINE, ATMVP, or DMVR) on the side using sub-block deblocking, as shown in the long filter's brightness control. Furthermore, sub-block deblocking is adjusted such that sub-block boundaries on the 8×8 grid near the CU or implicit TU boundaries are limited to modifying a maximum of two samples on each side.
[0202] The following applies to sub-block boundaries that are not aligned with the CU boundary.
[0203]
[0204] Edges equal to 0 correspond to the CU boundary, edges equal to 2 or orthogonalLength-2 correspond to 8 sample points of the sub-block boundary at a distance from the CU boundary, and so on. If implicit partitioning using TU is used, then implicit TU is true.
[0205] 2.5. Sample Adaptive Migration (SAO)
[0206] The input to SAO is the reconstructed samples after DB. The concept of SAO is to reduce the average sample distortion of the region by first classifying the region samples into multiple categories with selected classifiers, obtaining the offset for each category, and then adding the offset to each sample in each category. The classifier index and the region's offset are encoded and decoded in the bitstream. In HEVC and VVC, this region (the unit notified by SAO parameter signaling) is defined as a CTU.
[0207] Two SAO types that meet the low complexity requirements are used in HEVC. These two types are Edge Offset (EO) and Band Offset (BO), which will be discussed in more detail below. The index of the SAO type is encoded and decoded (it is in the range [0, 2]. For EO, sample classification is based on comparing the current sample with neighboring samples according to a one-dimensional orientation pattern (horizontal, vertical, 135° diagonal, and 45° diagonal).
[0208] Figure 10 A-10D shows four one-dimensional orientation patterns for EO sample point classification: horizontal (EO classification = 0), vertical (EO classification = 1), 135° diagonal (EO classification = 2), and 45° diagonal (EO classification = 3).
[0209] For a given EO category, each sample point within the CTB is classified into one of five categories. The current sample point value, labeled "c", is compared with two adjacent sample values (labeled "a" and "b") in the selected one-dimensional pattern. The classification rules for each sample point are summarized in Tables 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 angles along the selected one-dimensional pattern, respectively. If the current sample point does not belong to EO categories 1–4, it is category 0 and SAO is not applied.
[0210] Table 2-4. Sampling classification rules for edge offset
[0211] 1 c < a and c < b 2 (c<a&&c==b)||(c==a&&c<b) 3 (c>a&&c==b)||(c==a&&c>b) 4 c>a&&c>b 5 None of the above
[0212] 2.6. Adaptive Loop Filtering (ALF)
[0213] 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 activity of the local gradient.
[0214] 2.6.1. Filter Shape
[0215] Use two diamond filter shapes (such as...) Figure 11 (As described in the text). A 7×7 rhombus shape is applied to the luminance component, and a 5×5 rhombus shape is applied to the chrominance component.
[0216] Figure 11 The shape of the ALF filter is shown (chroma: 5×5 rhombus, luminance: 7×7 rhombus).
[0217] 2.6.2. Block Classification
[0218] For the luminance component, each 4×4 block is classified into one of 25 categories, based on its directionality (D) and activity. The quantization value is used to derive the classification index C, as shown below:
[0219]
[0220] To calculate D and First, the gradients in the horizontal, vertical, and two diagonal directions are calculated using the one-dimensional Laplacian operator:
[0221]
[0222]
[0223]
[0224]
[0225] Here, indices i and j refer to the coordinates of the top left sample point within the 4×4 block, and R(i,j) indicates the reconstructed sample point at coordinates (i,j).
[0226] To reduce the complexity of block classification, a one-dimensional Laplace operator for subsampling is applied for computation. For example... Figure 2-1 As shown, the same subsampling position is used for gradient calculation in all directions.
[0227] (a) Subsampling position of vertical gradient (b) Subsampling position of horizontal gradient
[0228] (c) Subsampling position of diagonal gradient (d) Subsampling position of diagonal gradient
[0229] Figure 2-1 Laplace operator computation for subsampling
[0230] The maximum and minimum values of the gradient D in the horizontal and vertical directions are then set as follows:
[0231]
[0232] The maximum and minimum values of the gradients in the two diagonal directions are set as follows:
[0233]
[0234] To derive the values of directionality D, these values are compared to each other and to two thresholds t1 and t2:
[0235] Step 1. If and If true, then D is set to 0.
[0236] Step 2. If If so, continue from step 3; otherwise, continue from step 4.
[0237] Step 3. If Then D is set to 2; otherwise, D is set to 1.
[0238] Step 4. If Then D is set to 4; otherwise, D is set to 3.
[0239] Activity value A is calculated as follows:
[0240]
[0241] A is further quantized to the range of 0 to 4 (inclusive), and the quantized value is represented as
[0242] For the chromaticity components in the image, no classification method is applied; that is, a single set of ALF coefficients is applied to each chromaticity component.
[0243] 2.6.3. Geometric Transformation of Filter Coefficients and Clipping Values
[0244] Before filtering each 4×4 luma block, geometric transformations (such as rotation or diagonal and vertical flips) are applied to the filter coefficients f(k,l) and the corresponding filter clipping values c(k,l), which depend on the gradient values computed for that block. This is equivalent to applying these transformations to samples in the filter's support region. The idea is to make the different blocks to which ALF is applied more similar by aligning their orientations. Three geometric transformations are introduced, including diagonal, vertical flip, and rotation:
[0245] Diagonal: f D (k,l)=f(l,k), c D (k,l)=c(l,k), (2-9)
[0246] Vertical flip: f V (k,l)=f(k,Kl-1), c V (k,l)=c(k,Kl-1)
[0247] (2-10)
[0248] Rotation: f T (k,l)=f(Kl-1,k), c R (k,l)=c(Kl-1,k) (2-11)
[0249] Where K is the size of the filter, and 0 ≤ k, l ≤ K⁻¹ are the coefficient coordinates, such that position (0, 0) is at the top left corner and position (K⁻¹, K⁻¹) is at the bottom right corner. The transform is applied to the filter coefficients f(k, l) and to the clipping value c(k, l), which depends on the gradient value calculated for that block. The relationship between the transform and the four gradients in the four directions is summarized in the table below.
[0250] Table 2-5. Gradient and transformation mapping for a block's computation.
[0251] <![CDATA[g d2 <g d1 And g h <g v ]]> No transformation <![CDATA[g d2 <g d1 And g v <g h ]]> diagonal <![CDATA[g d1 <g d2 And g h <g v ]]> Vertical flip <![CDATA[g d1 <g d2 And g v <g h ]]> Rotation
[0252] 2.6.4. Filter Parameter Signaling Notification
[0253] ALF filter parameters are signaled in the Adaptive Parameter Set (APS). An APS can signal up to 25 sets of luma filter coefficients and clipping value indices, and up to eight sets of chroma filter coefficients and clipping value indices. To reduce bit overhead, filter coefficients from different categories of the luma component can be merged. In the strip header, the index of the APS used for the current strip is signaled.
[0254] The crop value index decoded from the APS allows a table of crop values to determine the crop value for both the luminance and chrominance components. These crop values depend on the internal bit depth. More precisely, the crop values are obtained by the following formula:
[0255] AlfClip = {round(2 B-α*n (2-12) for n∈[0..N-1]}
[0256] Where B equals the internal bit depth, α is a predefined constant value equal to 2.35, and N equals 4, which is the number of clipped values allowed in VVC.
[0257] In the stripe header, up to seven APS indices can be signaled to specify the luma filter bank used for the current stripe. The filtering process can be further controlled at the CTB level. A flag is always signaled to indicate whether the ALF is applied to the luma CTB. The luma CTB can select a filter bank from 16 fixed filter banks and filter banks from the APS. The filter bank index is signaled for the luma CTB to indicate which filter bank to apply. The 16 fixed filter banks are predefined and hard-coded in the encoder and decoder.
[0258] For chroma components, the APS index is signaled in the stripe header to indicate the chroma filter bank being used for the current stripe. At the CTB level, if there is more than one chroma filter bank in the APS, the filter index is signaled for each chroma CTB.
[0259] The filter coefficients are quantized using a norm equal to 128. To limit the multiplication complexity, bitstream consistency is applied so that coefficients at non-center positions should be within -2. 7 Up to 2 7 The range is -1 (inclusive). The center position coefficient is not signaled in the bitstream and is considered equal to 128.
[0260] 2.6.5. Filtering Process
[0261] On the decoder side, when ALF is enabled for CTB, each sample R(i,j) within the CU is filtered to obtain the sample value R′(i,j), as shown below.
[0262] R′(i,j)=R(i,j)+((∑ k≠0 ∑ l≠0 f(k,l)×K(R(i+k,j+l)-R(i,j),c(k,l))+64)>>7) (2-13)
[0263] Where f(k, l) represents the filter coefficients for decoding, K(x, y) is the pruning function, and c(k, l) represents the pruning parameters for decoding. The variables k and l in... and The values vary between L and L, where L represents the filter length. The clipping function K(x, y) = min(y, max(-y, x)), which corresponds to the function Clip3(-y, y, x).
[0264] 2.6.6. Reduce the virtual boundary filtering process of the row buffer
[0265] In hardware and embedded software, image-based processing is practically unacceptable due to its high image buffer requirements. Using on-chip image buffers is very expensive, and using off-chip image buffers significantly increases external memory access, power consumption, and data access latency. Therefore, DF, SAO, and ALF will shift from image-based to LCU-based decoding in real-world products. When LCU-based processing is used in DF, SAO, and ALF, the entire decoding process can be completed one LCU at a time during raster scanning, with multiple LCUs processed in parallel using an LCU pipeline. In this case, DF, SAO, and ALF require row buffers because processing one LCU row requires pixels from the LCU rows above. If off-chip row buffers (e.g., DRAM) are used, external memory bandwidth and power consumption will increase; if on-chip row buffers (e.g., SRAM) are used, chip area will increase. Therefore, although row buffers are already much smaller than image buffers, reducing row buffer size is still desirable.
[0266] In VTM-4.0, such as Figure 13As shown, the total number of line buffers required for the luminance components is 11.25 lines. The line buffer requirement is explained as follows: Deblocking of horizontal edges overlapping with CTU edges cannot be performed because decision-making and filtering require lines K, L, M, and N from the first CTU and lines O and P from the bottom CTU. Therefore, deblocking of horizontal edges overlapping CTU boundaries is postponed until the lower CTU arrives. Thus, for lines K, L, M, and N, the reconstructed luminance samples must be stored in the line buffer (4 lines). SAO filtering can then be performed on lines A through J. Line J can be SAO filtered because deblocking does not change the samples in line K. For SAO filtering of line K, the edge offset classification decision is stored only in the line buffer (which is 0.25 luminance lines). ALF filtering can be performed only on line AF. Figure 13 As shown, ALF classification is performed on each 4×4 block. Each 4×4 block classification requires an 8×8 active window, which in turn requires a 9×9 window to compute a one-dimensional Laplacian operator to determine the gradient.
[0267] Therefore, for block classification of 4×4 blocks overlapping with rows G, H, I, and J, samples from SAO filtering below the virtual boundary are required. Furthermore, for ALF classification, samples from SAO filtering of rows D, E, and F are required. Additionally, ALF filtering of row G requires samples from the three SAO-filtered rows D, E, and F above it. Therefore, the total row buffer requirements are as follows:
[0268] – Row KN (Horizontal DF Pixels): 4 rows
[0269] – Row DJ (pixels filtered by SAO): 7 rows
[0270] – SAO edge offset classifier value between rows J and K: 0.25 rows
[0271] Therefore, the total number of brightness rows required is 7 + 4 + 0.25 = 11.25.
[0272] Similarly, the line buffer for the chroma component requires... Figure 14 As shown in the diagram, the line buffer requirement for the chroma component is 6.25 lines.
[0273] Figure 13 The loop filter line buffer requirements for the luminance component in VTM-4.0 are shown.
[0274] Figure 14 The requirements for the loop filter line buffer in VTM-4.0 for the chroma component are shown.
[0275] To eliminate the line buffer requirements of SAO and ALF, the concept of Virtual Boundary (VB) is introduced to reduce the line buffer requirements of ALF in the latest VVC. Modified block classification and filtering are used for samples near the horizontal CTU boundary. Figure 13 As shown, the VB is shifted upwards by N pixels from the horizontal LCU boundary. For each LCU, SAO and ALF can process pixels above the VB before the arrival of the lower LCU, but cannot process pixels below the VB before the arrival of the lower LCU, due to DF. Considering the cost of the hardware implementation, the proposed space between the VB and the horizontal LCU boundary is set to four pixels for the luma component (i.e., ... Figure 13 or Figure 15 In the N=4), and for the chroma component, it is set to two pixels (i.e., N=2).
[0276] Figure 15 The modified block classification at the virtual boundary is shown.
[0277] The modified block classification was applied to the luminance component, such as Figure 16 As shown in the diagram. For the one-dimensional Laplacian operator gradient computation of the 4×4 block above the virtual boundary, only the samples above the virtual boundary are used. Similarly, for the one-dimensional Laplacian operator gradient computation of the 4×4 block below the virtual boundary, only the samples below the virtual boundary are used. Considering the reduced number of samples used in the one-dimensional Laplacian operator gradient computation, the quantization of the activity value A is scaled accordingly.
[0278] For the filtering process, the mirror (symmetric) fill operation at the virtual boundary is used for both the luminance and chrominance components. For example... Figure 16 As shown, when the sample being filtered is below the virtual boundary, the neighboring sample above the virtual boundary is filled. At the same time, the corresponding sample on the other side is also filled symmetrically.
[0279] Figure 16 The modified ALF filter for the luminance component at the virtual boundary is shown.
[0280] For another example, if a sample point located at (i, j) (e.g., Figure 17B If the dashed line P0A in the middle is filled, then the position in (m, n) (for example, Figure 17B Samples corresponding to the same filter coefficients (P3B with dashed lines) are also filled in, even if the sample is available. Figures 17A-17C As shown in the image.
[0281] Figure 17A This shows one required row (on each side) that needs to be filled above / below VB.
[0282] Figure 17BThis shows the two required rows (on each side) that need to be filled above / below VB.
[0283] Figure 17C This shows the 3 required rows (on each side) that need to be filled above / below VB.
[0284] Figure 27 An example of modified luminance ALF filtering at virtual boundaries is shown.
[0285] Unlike the mirror (symmetric) fill method used at horizontal CTU boundaries, a repeated (one-sided) fill process is applied to strip, patch, and sub-image boundaries when cross-boundary filters are disabled. The repeated (one-sided) fill process is also applied at image boundaries. The filled samples are used in classification and filtering processes. Figure 18 An example of a repeating padding method for luminance ALF filtering at the boundaries of an image / sub-image / strip / piece is shown.
[0286] Figure 18 An example of repeated padding of luminance ALF filtering at the boundaries of an image / sub-image / strip / piece is shown.
[0287] 2.7.360-degree video encoding and decoding
[0288] Horizontal surround motion compensation in VTM5 is a 360-specific codec tool designed to improve the visual quality of reconstructed 360-degree video in equirectangular projection (ERP) formats. In conventional motion compensation, when the motion vector represents a sample point beyond the boundary of a reference image, repetition padding is applied to derive the value of the sample point outside the boundary by copying the nearest neighbor image from the corresponding image boundary. This repetition padding method is unsuitable for 360-degree video and can result in visual artifacts known as "seam artifacts" in the reconstructed viewport video. Because 360-degree video is captured on a sphere and inherently has no "boundaries," reference samples outside the boundary of the reference image in the projection domain can always be obtained from neighboring samples in the sphere domain. For general projection formats, deriving the corresponding neighboring samples in the sphere domain can be difficult because it involves 2D-to-3D and 3D-to-2D coordinate transformations, as well as sample interpolation of fractional sample positions. This problem is much simpler for the left and right boundaries of the ERP projection format, because the spherical neighborhood outside the left image boundary can be obtained from the samples inside the right image boundary, and vice versa.
[0289] Figure 19 An example of horizontal orbital motion compensation in VVC is shown.
[0290] The horizontal orbital motion compensation process is in Figure 19As shown in the diagram. When a portion of the reference block is outside the left (or right) boundary of the reference image within the projection domain, no repetition padding is applied; the portion "outside the boundary" is taken from the corresponding spherical neighborhood within the reference image facing the right (or left) boundary within the projection domain. Repetition padding is only applied to the top and bottom image boundaries. For example, in... Figure 19 As shown, horizontal wrap motion compensation can be combined with the decanted padding method frequently used in 360-degree video encoding and decoding. In VVC, this is achieved by signaling higher-level syntax elements to indicate the wrap offset, which should be set to the ERP picture width before padding; this syntax is then used to adjust the position of the horizontal wrap accordingly. This syntax is unaffected by the specific amount of padding on the left and right picture boundaries, and therefore naturally supports asymmetric padding of the ERP picture, i.e., when the left and right paddings are different. Horizontal wrap motion compensation provides more meaningful information for motion compensation when the reference sample is outside the left and right boundaries of the reference picture.
[0291] For projection formats consisting of multiple faces, regardless of the compact frame packing arrangement used, discontinuities will occur between two or more adjacent faces in the frame-packed image. For example, consider in Figure 20 The 3×2 frame packing configuration shown has three faces that are continuous in 3D geometry in the upper half and three faces that are continuous in 3D geometry in the lower half, but the upper and lower halves of the frame packing image are discontinuous in 3D geometry. If a loop filtering operation is performed at this discontinuity, face seam artifacts may become visible in the reconstructed video.
[0292] To mitigate face seam artifacts, loop filtering across discontinuities can be disabled in frame-packed images. A syntax is proposed to signal vertical and / or horizontal virtual boundaries that disable loop filtering across these boundaries. Compared to using two slices (one for each set of consecutive faces) and disabling loop filtering across slices, the proposed signaling notification method is more flexible because it does not require the face size to be a multiple of the CTU size.
[0293] Figure 20 An image of the HEC in a 3×2 layout is shown.
[0294] 2.8. JVET-P0080: CE5-2.1, CE5-2.2: Cross-component adaptive loop filtering
[0295] Figure 21A The arrangement of the CC-ALF[1] with respect to other loop filters is shown. The CC-ALF uses linear, diamond-shaped filters ( Figure 21B This operation is applied to the luminance channel of each chromaticity component, and is expressed as follows:
[0296]
[0297] in
[0298] (x, y) is the position of the i-th chromaticity component after positive refinement.
[0299] (x C ,y C () is the brightness position based on (x,y).
[0300] S i It supports filters for chrominance component i in luminance.
[0301] c i (x0, y0) represents the filter coefficients (2-14)
[0302] Figure 21A An example arrangement of CC-ALF with respect to other loop filters is shown. Figure 21B A diamond-shaped filter is shown.
[0303] Supported area around its centered brightness position (x C ,y C The CC-ALF coefficients are calculated based on the spatial scaling factor between the luma and chroma planes. All filter coefficients are transmitted in the APS and have an 8-bit dynamic range. The APS can be referenced in the strip header. The CC-ALF coefficients for each chroma component of the strip are also stored in a buffer corresponding to the temporal sublayer. The reuse of these temporal sublayer filter coefficient groups facilitates the use of strip-level flags. The application of CC-ALF filters is controlled on variable block sizes (i.e., 16×16, 32×32, 64×64, 128×128) and is notified by context-coded flag signaling received for each block of samples. The block size for each chroma component, along with the CC-ALF enable flag, is received at the strip level. Boundary padding for horizontal virtual boundaries utilizes repetition. For the remaining boundaries, the same type of padding as regular ALF is used.
[0304] 2.8.1. CC-ALF Specification in JVET-P0080
[0305] Cross-component filtering process for xxxx chroma samples
[0306] The input to this process is:
[0307] - Reconstructing the luminance image sample array recPicture before the luminance adaptive loop filtering process L ,
[0308] –Filtered reconstruction of chroma image sample array alfPicture C ,
[0309] – Chroma position (xC, yC), specifies the left top-left chroma point of the current block relative to the left top-left chroma point of the current image.
[0310] – Width of the chromaticity sample block ccAlfWidth
[0311] – Height of the chromaticity sample block ccAlfHeight
[0312] – Cross-component filter coefficients CcAlfCoeff[j], where j = 0...13
[0313] The output of this process is a modified filtered reconstructed chroma image sample array ccAlfPicture.
[0314] The derivation of the brightness position (xCtb, yCtb) of the codec tree block is as follows:
[0315] xCtb=((xC*SubWidthC)>>CtbLog2SizeY)< <CtbLog2SizeY
[0316] (8-1229)
[0317] yCtb=((yC*SubHeightC)>>CtbLog2SizeY)< <CtbLog2SizeY
[0318] (8-1229)
[0319] For the derivation of the reconstructed chromaticity sample ccAlfPicture[xC+x][yC+y] for filtering, the sample alfPicture C Each reconstructed chroma sample within the current chroma block [xC+x][yC+y], where x = 0...ccAlfWidth-1 and y = 0...ccAlfHeight-1, is filtered as follows:
[0320] – The brightness position (xL, yL) of the current chromaticity sample point at the chromaticity position (xC+x, yC+y) is set to equal to ((xC+x)*SubWidthC, (yC+y)*SubHeightC).
[0321] – array recPicture L Brightness position within (h) xL+i ,v yL+j ), where i = -2...2, j = -2...3, the derivation is as follows:
[0322] – If pps_loop_filter_across_virtual_boundaries_disabled_flag equals 1, and PpsVirtualBoundariesPosX[n]%CtbSizeY is not equal to 0, and for any n=0...pps_num_ver_virtual_boundaries–1, xL-PpsVirtualBoundariesPosX[n] is greater than or equal to 0 and less than 3, the following applies:
[0323] h xL+i =Clip3(PpsVirtualBoundariesPosX[n],pic_width_in_luma_samples-1,xL+i) (8-1229)
[0324] Otherwise, if pps_loop_filter_across_virtual_boundaries_disabled_flag equals 1, and PpsVirtualBoundariesPosX[n]%CtbSizeY is not equal to 0, and for any n=0...pps_num_ver_virtual_boundaries–1, PpsVirtualBoundariesPosX[n]-xL is greater than 0 and less than 4, the following applies:
[0325] h x+i =Clip3(0,PpsVirtualBoundariesPosX[n]-1,xL+i) (8-1230)
[0326] –Otherwise, the following applies:
[0327] h x+i =Clip3(0,pic_width_in_luma_samples-1,xL+i) (8-1231)
[0328] – If pps_loop_filter_across_virtual_boundaries_disabled_flag equals 1, and PpsVirtualBoundariesPosY[n]%CtbSizeY is not equal to 0, and for any n=0...pps_num_hor_virtual_boundaries–1,yL-PpsVirtualBoundariesPosY[n] is greater than or equal to 0 and less than 3, the following applies:
[0329] v y+j =Clip3(PpsVirtualBoundariesPosY[n],pic_height_in_luma_samples-1,yL+j) (8-1232)
[0330] Otherwise, if pps_loop_filter_across_virtual_boundaries_disabled_flag equals 1, and PpsVirtualBoundariesPosY[n]%CtbSizeY is not equal to 0, and for any n=0...pps_num_hor_virtual_boundaries–1, PpsVirtualBoundariesPosY[n]-yL is greater than 0 and less than 4, the following applies:
[0331] v y+j =Clip3(0,PpsVirtualBoundariesPosY[n]-1,yL+j) (8-1233)
[0332] –Otherwise, the following applies:
[0333] v y+j =Clip3(0,pic_height_in_luma_samples-1,yL+j) (8-1234)
[0334] – The variables clipLeftPos, clipRightPos, clipTopPos, and clipBottomPos are derived by calling the ALF boundary position derivation procedure as specified in Clause 8.8.5.5, with (xCtb, yCtb) and (xL–xCtb, yL–yCtb) as inputs.
[0335] – The vertical sample position offsets yM2, yM1, yP1, yP2, and yP3 are specified in Table 2-6 based on the vertical brightness sample positions yL, clipLeftPos, and clipRightPos.
[0336] – The horizontal sample position offsets xM1, xM2, xP1, and xP2 are specified in Table 2-7 based on the horizontal brightness sample positions xL, clipLeftPos, and clipRightPos.
[0337] – The derivation of variable curr is as follows:
[0338] curr = alfPicture C[xC+x,yC+y] (8-1286)
[0339] – The array of cross-component filter coefficients f[j] is derived as follows, where j = 0...13:
[0340] f[j]=CcAlfCoeff[j] (8-1287)
[0341] – The derivation of variable sum is as follows:
[0342]
[0343]
[0344] sum=curr+(sum+64)>>7) (8-1290)
[0345] – The derivation of the modified filter for reconstructing the chroma image sample array ccAlfPicture[xC+x][yC+y] is as follows:
[0346] ccAlfPicture[xC+x][yC+y]=Clip3(0,(1< <BitDepth C )-1,sum)
[0347] (8-1291)
[0348] Table 2-6. Specifications of yM1, yM2, yP1, yP2, and yP3 based on the vertical brightness sample point positions yL, clipTopPos, and clipBottomPos
[0349] yL==clipTopPos+1 -1 -1 1 2 3 yL==clipTopPos 0 0 1 2 3 yL==clipBottomPos-1 -2 -1 0 0 0 yL==clipBottomPos-2 -2 -1 1 1 1 yL==clipBottomPos-3 -2 -1 1 2 2 otherwise -2 -1 1 2 3
[0350] Table 2-7. Specifications of xM1, xM2, xP1, and xP2 based on the horizontal luminance sample point positions xL, clipLeftPos, and clipRightPos
[0351]
[0352]
[0353] 2.8.2. Filling method at virtual boundaries in JVET-P0080
[0354] Similar to the luminance ALF / chrominance ALF, the CC-ALF in JVET-P0080 uses repeated padding at the virtual boundaries of the ALF. For example... Figure 22 As shown, if brightness samples above or below the ALF virtual boundary are unavailable, the nearest sample row is used for filling. Detailed filling methods are also shown in Table 2-6.
[0355] 2.9. JVET-P1008: CE5 related: Design of CC-ALF
[0356] In JVET-O0636[1] and CE5-2.1[2], cross-component adaptive loop filtering (CC-ALF) was introduced and studied. The filter uses a linear filter to filter the luminance sample values and generates residual corrections for the chrominance channel from the output of the filter located at the same position. The filter is designed to operate in parallel with the existing luminance ALF.
[0357] A CC-ALF design is proposed that simplifies and better aligns with existing ALFs. This design uses a 3×4 rhombus shape with 8 unique coefficients. This reduces the number of multiplications by 43% compared to the 5×6 design studied in CE5-2.1. The multiplier per pixel is limited to 16 (compared to 15 in the current ALF) when the chroma ALF or CC-ALF constraint is enabled for the chroma components of the CTU. The dynamic range of the filter coefficients is limited to 6 bits (signed). Illustrations of the proposed filter and the filter from the CE5-2.1 scheme are shown in [the provided text]. Figure 23 middle.
[0358] To better align with existing ALF designs, filter coefficients are signaled in the APS. Up to four filters are supported, and filter selection is indicated at the CTU level. Symmetry line selection is used at virtual boundaries for further ALF reconciliation. Finally, to limit the amount of storage required for the corrected output, the CC-ALF residual output is clipped to -2. BitDepthC-1 Up to 2 BitDepthC-1 -1 (including the end value).
[0359] The CC-ALF specification in JVET-P1008.
[0360] Cross-component filtering process for xxxx chroma samples
[0361] The input to this process is:
[0362] - Reconstructed luminance image sample array recPicture prior to the luminance adaptive loop filtering process L ,
[0363] –Filtered reconstruction of chroma image sample array alfPicture C ,
[0364] – Chroma position (xCtbC, yCtbC), specifies the left vertex of the current chroma codec block relative to the left vertex of the current image.
[0365] – Width of the chroma sample block ccAlfWidth
[0366] – Height of the chromaticity sample block ccAlfHeight
[0367] – Cross-component filter coefficients CcAlfCoeff[j], where j = 0...7
[0368] The output of this process is a modified, filtered, reconstructed chroma image sample array ccAlfPicture.
[0369] The luminance positions (xCtb, yCtb) of the codec tree block are derived as follows:
[0370] xCtb=((xCtbC*SubWidthC)>>CtbLog2SizeY)< <CtbLog2SizeY
[0371] (8-1229)
[0372] yCtb=((yCtbC*SubHeightC)>>CtbLog2SizeY)< <CtbLog2SizeY
[0373] (8-1229)
[0374] The derivation of the reconstructed chroma sample ccAlfPicture[xCtbC+x][yCtbC+y] for filtering involves each reconstructed chroma sample within the current chroma block of sample alfPictureC[xCtbC+x][yCtbC+y], where x = 0...ccAlfWidth-1, y = 0...ccAlfHeight-1, being filtered as follows:
[0375] – The brightness position (xL, yL) of the current chromaticity sample point at the chromaticity position (xCtbC+x, yCtbC+y) is set to equal to ((xCtbC+x)*SubWidthC, (yCtbC+y)*SubHeightC).
[0376] – array recPicture L Brightness position within (h) xL+i v yL+j ), where i = -1...1, j = -1...2, the derivation is as follows:
[0377] – If pps_loop_filter_across_virtual_boundaries_disabled_flag equals 1, and PpsVirtualBoundariesPosX[n]%CtbSizeY is not equal to 0, and for any n=0...pps_num_ver_virtual_boundaries–1, xL-PpsVirtualBoundariesPosX[n] is greater than or equal to 0 and less than 3, the following applies:
[0378] h xL+i =Clip3(PpsVirtualBoundariesPosX[n],pic_width_in_luma_samples-1,xL+i) (8-1229)
[0379] Otherwise, if pps_loop_filter_across_virtual_boundaries_disabled_flag equals 1, and PpsVirtualBoundariesPosX[n]%CtbSizeY is not equal to 0, and for any n=0...pps_num_ver_virtual_boundaries–1, PpsVirtualBoundariesPosX[n]-xL is greater than 0 and less than 4, the following applies:
[0380] h x+i =Clip3(0,PpsVirtualBoundariesPosX[n]-1,xL+i) (8-1230)
[0381] –Otherwise, the following applies:
[0382] h x+i =Clip3(0,pic_width_in_luma_samples-1,xL+i) (8-1231)
[0383] – If pps_loop_filter_across_virtual_boundaries_disabled_flag equals 1, and PpsVirtualBoundariesPosY[n]%CtbSizeY is not equal to 0, and for any n=0...pps_num_hor_virtual_boundaries-1, yL-PpsVirtualBoundariesPosY[n] is greater than or equal to 0 and less than 3, the following applies:
[0384] v y+j =Clip3(PpsVirtualBoundariesPosY[n],pic_height_in_luma_samples-1,yL+j) (8-1232)
[0385] Otherwise, if pps_loop_filter_across_virtual_boundaries_disabled_flag equals 1, and PpsVirtualBoundariesPosY[n]%CtbSizeY is not equal to 0, and for any n = 0...pps_num_hor_virtual_boundaries-1, PpsVirtualBoundariesPosY[n]-yL is greater than 0 and less than 4, the following applies:
[0386] v y+j =Clip3(0,PpsVirtualBoundariesPosY[n]-1,yL+j) (8-1233)
[0387] –Otherwise, the following applies:
[0388] v y+j =Clip3(0,pic_height_in_luma_samples-1,yL+j) (8-1234)
[0389] – The variables clipLeftPos, clipRightPos, clipTopPos, and clipBottomPos are derived by calling the ALF boundary position derivation procedure as specified in Clause 8.8.5.5, with (xCtb, yCtb) and (xL–xCtb, yL–yCtb) as inputs.
[0390] – The vertical sample point position offsets yM1, yP1, and yP2 are specified in Table 2-8 based on the vertical brightness sample point positions yL, clipLeftPos, and clipRightPos.
[0391] – The horizontal sample position offsets xM1 and xP1 are specified in Table 2-9 based on the horizontal brightness sample positions xL, clipLeftPos, and clipRightPos.
[0392] – The derivation of variable curr is as follows:
[0393] curr = alfPicture C [xCtbC+x,yCtbC+y] (8-1286)
[0394] – The array of cross-component filter coefficients f[j] is derived as follows, where j = 0...7:
[0395] f[j]=CcAlfCoeff[j] (8-1287)
[0396] – The derivation of variable sum is as follows:
[0397]
[0398]
[0399] sum = Clip3(-(1<<(BitDepth)) C -1),(1<<(BitDepth)),(1<<(BitDepth) C -1))-1,sum)
[0400] (8-1290)
[0401] sum=curr+(sum+64)>>(7+(BitDepth Y -BitDepth C (8-1290)
[0402] – The derivation of the modified filtered reconstructed chroma image sample array ccAlfPicture[xCtbC+x][yCtbC+y] is as follows:
[0403] ccAlfPicture[xCtbC+x][yCtbC+y]=Clip3(0,(1< <BitDepth C )-1,sum)
[0404] (8-1291)
[0405] Table 2-8. Specifications of yM1, yP1, and yP2 based on the vertical brightness sample point positions yL, clipTopPos, and clipBottomPos
[0406] yL==clipTopPos+1 -1 1 1 yL==clipTopPos 0 0 1 yL==clipBottomPos–1 0 0 1 yL==clipBottomPos–2 -1 1 1 otherwise -1 1 2
[0407] Table 2-9. Specifications of xM1 and xP1 based on the horizontal luminance sample point positions xL, clipLeftPos, and clipRightPos
[0408] xL==clipLeftPos 0 0 xL==clipRightPos-1 0 0 xL==clipRightPos–2 –1 1 otherwise –1 1
[0409] 2.9.1. Filling method at virtual boundaries in JVET-P1008
[0410] For CC-ALF in JVET-P1008, mirror (symmetric) fill is used at the ALF virtual boundary. For example... Figure 24 As shown, if the brightness samples above or below the ALF virtual boundary are unavailable, the nearest sample row is used for filling, and the corresponding samples also need to be filled. Detailed filling methods are shown in Table 2-9.
[0411] 2.10. Simplified method of CC-ALF in JVET-P2025
[0412] 2.10.1. Alternative Filter Shapes
[0413] The shape of the CC-ALF filter is modified to have 8 or 6 coefficients, as shown in the figure below.
[0414] Figure 25 The shape of the CC-ALF filter with 8 coefficients in JVET-P0106 is shown.
[0415] Figure 26 The shape of the CC-ALF filter with 6 coefficients in JVET-P0173 is shown.
[0416] Figure 27 The shape of the CC-ALF filter with 6 coefficients in JVET-P0251 is shown.
[0417] 2.10.2. Joint Chromaticity Cross-Component Adaptive Filtering
[0418] Joint Chromaticity Cross-Component Adaptive Loop Filtering (JC-CCALF) uses only a set of CCALF filter coefficients trained on the encoder to generate a filtered output as a refinement signal, which is directly added to the Cb component and then appropriately weighted before being added to the Cr component. The filter is indicated at the CTU level or by block size, which is communicated with each band-ground signaling.
[0419] Supported chroma block sizes range from the minimum chroma CTU size to the current chroma CTU size. The minimum chroma CTU size is the minimum of the minimum possible width and height of the chroma CTU, i.e., Min(32 / SubWidthC, 32 / SubHeightC), while the current chroma CTU size is the minimum of the width and height of the current chroma CTU, i.e., Min(CtbWidthC, CtbHeightC). For example, if the CTU size is set to a maximum of 128×128, the JC-CCALF chroma block size for a stripe will be one of 32×32, 64×64, and 128×128 for 4:4:4 video, or one of 16×16, 32×32, and 64×64 for 4:2:0 and 4:2:2 video.
[0420] Figure 28 The JC-CCALF workflow is shown.
[0421] 3. The technical problem solved by the technical solution described in this paper.
[0422] The current design of CC-ALF boundary padding has the following problems:
[0423] 1. The filling method at the ALF virtual boundary in CC-ALF may be suboptimal because the filling samples used may be inefficient.
[0424] 2. There are different ways to handle ALF virtual boundaries and video unit boundaries (e.g., picture / subpicture / strip / piece boundaries) and 360-degree virtual boundaries, i.e., different filling methods.
[0425] 3. In ALF, mirror fill is applied, where the distance to the current sample is calculated to determine which corresponding sample needs to be filled. However, in CC-ALF, particularly for 4:2:0, multiple luminance samples are involved in filtering one chroma sample. How to determine which corresponding sample needs to be filled is unknown.
[0426] 4. Examples of techniques and embodiments
[0427] The following list should be considered as examples to illustrate the overall concept. These items should not be interpreted in a narrow way. Furthermore, these items can be combined in any way.
[0428] In some embodiments described in this disclosure, the term 'CC-ALF' refers to a codec tool that refines samples in a first color component (e.g., Cb) using sample values from a second color component (e.g., Y) or multiple color components (e.g., Y and Cr). It is not limited to the CC-ALF techniques described in [1]-[4]. The term "corresponding filter sample set" can be used to refer to those samples contained in the filter support; for example, for CC-ALF, "corresponding filter sample set" can be used to refer to the juxtaposed luminance samples of the chrominance samples and the neighboring luminance samples of the juxtaposed luminance samples, which are used to derive the refinement / offset of the chrominance samples.
[0429] The padding method used for ALF virtual boundaries can be represented as 'mirror padding', where the first unavailable sample located at (i, j) is padded, and the second sample defined by the 'corresponding sample of the first sample' in the filter support of ALF (e.g., the corresponding sample located at (m, n) which shares the same distance as the current luminance sample) is also padded, even if the second sample is available.
[0430] In one example, vertical fill is used, such as the sample point to be filled located at (x, y1) is set to be equal to the sample point located at (x, y2), where y1 represents the y coordinate of the sample point or the corresponding sample point, and y2 represents the y coordinate of the sample point used for filling.
[0431] In one example, horizontal fill is used, such as a sample point located at (x1, y) that needs to be filled is set to be equal to a sample point located at (x2, y), where x1 represents the x-coordinate of the sample point or the corresponding sample point, and x2 represents the x-coordinate of the sample point used for filling.
[0432] The filling method used for image / sub-image / strip / piece boundary / 360-degree video virtual boundary, standard boundary (e.g., top and bottom boundary) can be represented as 'repeated fill', where if a sample to be used is outside the boundary, it can be copied from an available sample inside the boundary.
[0433] In this disclosure, if a neighboring (adjacent or non-adjacent) sample is "unavailable" if it is located in a different video processing unit (e.g., one of the following: current picture, or current subpicture, or current slice, or current strip, or current block, or current CTU, or current processing unit (such as ALF processing unit or narrow ALF processing unit), or any other current video unit) or is not reconstructed or is not allowed across a filtered video processing unit, then the sample is "unavailable".
[0434] The “ALF Boundary” location defines where the clipped samples used during ALF sample filling are obtained. When a sample used in ALF (e.g., during filtering and / or classification) crosses the top / bottom / left / right boundaries, that sample will be clipped to not cross those boundaries. The “ALF Boundary” includes the “Luminosity ALF Boundary” and the “Chroma ALF Boundary”. When deriving the “Chroma ALF Boundary,” the “Luminosity ALF Boundary” is derived first, and then mapped to the “Chroma ALF Boundary” according to the color format.
[0435] Handling ALF virtual boundaries in CC-ALF
[0436] 1. For unavailable luminance samples that need to be filled at the virtual boundary of an ALF sample, mirror filling can be used to derive the unavailable luminance sample and one or more corresponding luminance samples for filtering in CC-ALF. That is, at least one corresponding luminance sample of an unavailable sample needs to be filled, even if it is available.
[0437] a. In one example, the luminance sample of the corresponding sample that is determined to be unavailable can be filled using the mirror fill method.
[0438] b. In one example, whether a luma sample (in a corresponding set of filtered samples) is determined as a corresponding sample of an unavailable sample may depend on a distance of the sample relative to a representative luma sample and / or a distance of the unavailable sample relative to the representative luma sample. Let C denote the center row where the representative luma sample is located. Assuming that a K×L filter shape is used in CC-ALF, which adopts K rows of samples and L columns of samples.
[0439] i. In one example, the representative luma sample is defined as the collocated luma sample of the current chroma sample to be filtered.
[0440] 1) In one example, the position of the collocated luma sample of the current chroma sample may depend on the color format.
[0441] a) In one example, the collocated luma sample of a chroma sample located at (x, y) is defined as the sample located at (2x, 2y) in 4:2:0 chroma format.
[0442] b) In one example, the collocated luma sample of a chroma sample located at (x, y) is defined as the sample located at (2x, y) in 4:2:2 chroma format.
[0443] c) In one example, the collocated luma sample of a chroma sample located at (x, y) is defined as the sample located at (x, y) in 4:4:4 chroma format.
[0444] ii. In one example, the distance may refer to a vertical distance between a row comprising the luma sample and a row comprising the representative luma sample. For example, the distance may be calculated as an absolute y-coordinate difference between the luma sample and the representative luma sample.
[0445] 1) As Figure 29 shown, let C, M and N denote the center row where the representative luma sample is located, the row of the unavailable sample, and the row of the corresponding sample, respectively, and M is not equal to N. Let d(x, y) denote the absolute y-coordinate difference between x and y, which represents the distance between row x and row y.
[0446] iii. In one example, the determination of corresponding samples to be filled in mirror padding may depend on how many rows of samples are adopted by the filter shape.
[0447] iv. In one example, when d(C, M) = d(N, C), if the unavailable sample is located in row M (e.g., M<C<N or M>C>N), then the sample located in row N is determined as the corresponding sample to be filled.
[0448] 1) In one example, if the value K (e.g., K×L CC-ALF filter shape) is an odd number, then the ALF mirror padding method (e.g., Figure 16 This can be used in CC-ALF, where the center luminance sample is selected as the representative luminance sample.
[0449] a) In one example, assume K = 5 and represent yM2 = -2, yM1 = -1, yL = 0, yP1 = 1, and yP2 = 2 as the y-coordinates of the five sample rows, as shown in Table 4-5. The ALF virtual boundary is equal to CtbSizeY – 4.
[0450] i. In one example, when the ALF virtual boundary is above a representative brightness sample, the unavailable sample can be filled with the nearest row below the ALF virtual boundary. Simultaneously, the corresponding sample can be filled with the nearest row above the row containing that sample.
[0451] 1. In one example, when yL equals CtbSizeY – 3 and row yM2 is unavailable, the sample (x, yM2) at row yM2 can be filled with the sample (x, yM1) at row yM1. Simultaneously, the corresponding sample (x, yP2) at row yP2 can be filled with the sample (x, yP1) at row yP1.
[0452] 2. In one example, when yL equals CtbSizeY – 4 and rows yM2 and yM1 are unavailable, the samples (x, yM2) and (x, yM1) at rows yM2 and yM1 can be filled with the sample (x, yL) at row yL. Similarly, the samples (x, yP2) and (x, yP1) at the corresponding rows yP2 and yP1 can be filled with the sample (x, yL) at row yL.
[0453] ii. In one example, when the ALF virtual boundary is below a representative brightness sample, the unavailable sample can be filled with the nearest row above the ALF virtual boundary. Simultaneously, the corresponding sample can be filled with the nearest row below the row containing the corresponding sample.
[0454] 1. In one example, when yL equals CtbSizeY – 6 and row yP2 is unavailable, the sample point (x, yP2) at row yP2 can be filled with the sample point (x, yP1) at row yP1. Simultaneously, the corresponding sample point (x, yM2) at row yM2 can be filled with the sample point (x, yM1) at row yM1.
[0455] 2. In one example, when yL equals CtbSizeY – 5 and rows yP2 and yP1 are unavailable, the samples (x, yP2) and (x, yP1) at rows yP2 and yP1 can be filled with the sample (x, yL) at row yL. Similarly, the samples (x, yM2) and (x, yM1) at the corresponding rows yM2 and yM1 can be filled with the sample (x, yL) at row yL.
[0456] 2) In one example, if the value K (e.g., the shape of the K×L CC-ALF filter) is even, it can be used Figure 30 The mirror fill method is defined in [the documentation]. When unavailable samples in row M(N) located above (below) the ALF virtual boundary are filled with the nearest sample row below (above) the ALF virtual boundary, it is recommended to fill the corresponding samples in row N(M) located below (above) the ALF virtual boundary with the nearest sample row above (below) row N(M).
[0457] a) In one example, assume K = 2 and represent yL = 0 and yP1 = 1 as the y coordinates of two sample rows, as shown in Table 4-1. The ALF virtual boundary is equal to CtbSizeY – 4.
[0458] i. In one example, when the ALF virtual boundary is above a representative brightness sample, the unavailable sample can be filled with the nearest row below the ALF virtual boundary. Simultaneously, the corresponding sample can be filled with the nearest row above the row containing the corresponding sample.
[0459] 1. In one example, when yL equals CtbSizeY – 4 and the rows above yL are unavailable, the sample point (x, yP1) at the corresponding row yP1 can be filled with the sample point (x, yL) at the row yL.
[0460] ii. In one example, when the ALF virtual boundary is below a representative brightness sample, the unavailable sample can be filled with the nearest row above the ALF virtual boundary. Simultaneously, the corresponding sample can be filled with the nearest row below the row containing the corresponding sample.
[0461] 1. In one example, when yL equals CtbSizeY – 5 and row yP1 is unavailable, the sample point (x, yP1) at row yP1 can be filled with the sample point (x, yL) at row yL.
[0462] b) In one example, assume K = 4 and represent yM1 = -1, yL = 0, yP1 = 1, and yP2 = 2 as the y-coordinates of the four sample rows, as shown in Table 4-3. The ALF virtual boundary is equal to CtbSizeY – 4.
[0463] i. In one example, when the ALF virtual boundary is above a representative brightness sample, the unavailable sample can be filled with the nearest row below the ALF virtual boundary. Simultaneously, the corresponding sample can be filled with the nearest row above the row containing the corresponding sample.
[0464] 1. In one example, when yL equals CtbSizeY – 3 and the row above yM1 is unavailable, the sample point (x, yP2) at the corresponding row yP2 can be filled with the sample point (x, yP1) at the row yP1.
[0465] 2. In one example, when yL equals CtbSizeY – 4 and the row above yM1 and yM1 are unavailable, the sample point (x, yM1) at row yM1 can be filled with the sample point (x, yL) at row yL. Simultaneously, the corresponding sample points (x, yP2) and (x, yP1) at rows yP2 and yP1 can be filled with the sample point (x, yL) at row yL.
[0466] ii. In one example, when the ALF virtual boundary is below a representative brightness sample, the unavailable sample can be filled with the nearest row above the ALF virtual boundary. Simultaneously, the corresponding sample can be filled with the nearest row below the row containing the corresponding sample.
[0467] 1. In one example, when yL equals CtbSizeY – 6 and row yP2 is unavailable, the sample point (x, yP2) at row yP2 can be filled with the sample point (x, yP1) at row yP1.
[0468] 2. In one example, when yL equals CtbSizeY – 5 and rows yP2 and yP1 are unavailable, the samples (x, yP2) and (x, yP1) at rows yP2 and yP1 can be filled with the sample (x, yL) at row yL. Simultaneously, the corresponding sample (x, yM1) at row yM1 can be filled with the sample (x, yL) at row yL.
[0469] c) In one example, assume K = 6 and represent yM2 = -2, yM1 = -1, yL = 0, yP1 = 1, yP2 = 2, and yP3 = 3 as the y-coordinates of the six sample rows, as shown in Table 4-6. The ALF virtual boundary is equal to CtbSizeY – 4.
[0470] i. In one example, when the ALF virtual boundary is above a representative brightness sample, the unavailable sample can be filled with the nearest row below the ALF virtual boundary. Simultaneously, the corresponding sample can be filled with the nearest row above the row containing the corresponding sample.
[0471] 1. In one example, when yL equals CtbSizeY–2 and the row above yM2 is unavailable, the sample point (x, yP3) at the corresponding row yP3 can be filled with the sample point (x, yP2) at the row yP2.
[0472] 2. In one example, when yL is equal to CtbSizeY–3 and the row above yM2 and yM2 are unavailable, the sample (x, yM2) at row yM2 may be padded with the sample (x, yM1) at row yM1. Meanwhile, the corresponding samples (x, yP3) and (x, yP2) at rows yP3 and yP2 may be padded with the sample (x, yP1) at row yP1.
[0473] 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) at rows yM2 and yM1 may be padded with the sample (x, yL) at row yL. Meanwhile, the corresponding samples (x, yP3), (x, yP2) and (x, yP1) at rows yP3, yP2 and yP1 may be padded with the sample (x, yL) at row yL.
[0474] ii. In one example, when the ALF virtual boundary is below the representative luma sample, unavailable samples may be padded with the closest row above the ALF virtual boundary. Meanwhile, corresponding samples may be padded with the closest row below the row where the corresponding samples are located.
[0475] 1. In one example, when yL is equal to CtbSizeY–7 and row yP3 is unavailable, the sample (x, yP3) at row yP3 may be padded with the sample (x, yP2) at row yP2.
[0476] 2. In one example, when yL is equal to CtbSizeY–6 and rows yP3 and yP2 are unavailable, the samples (x, yP3) and (x, yP2) at rows yP3 and yP2 may be padded with the sample (x, yP1) at the row. Meanwhile, the corresponding sample (x, yM2) at row yM2 may be padded with the sample (x, yM1) at row yM1.
[0477] 3. In one example, when yL is equal to CtbSizeY–5 and rows yP3, yP2 and yP1 are unavailable, the samples (x, yP3), (x, yP2) and (x, yP1) at rows yP3, yP2 and yP1 may be padded with the sample (x, yL) at row yL. Meanwhile, the corresponding samples (x, yM2) and (x, yM1) at rows yM2 and yM1 may be padded with the sample (x, yL) at the row.
[0478] v. In one example, if an unavailable sample is located in row M (e.g., M<C), then when d(C, M)=d(N, C)–offset (where offset is an integer value, e.g., equal to 1) or d(C, M)<d(N, C), a sample located in row N is determined as the corresponding sample that needs to be padded.
[0479] 1) In an example, if the unavailable sample is located in row M (for example, M>C), the sample located in row N is considered as the corresponding sample to be padded when d(M,C)=d(C,N)–offset (where offset is an integer value, for example, equal to 1) or d(C,M)<d(N,C).
[0480] 2) In an example, the Figure 31 mirror padding method defined therein may be adopted. When an unavailable sample in row M (N) above (below) an ALF virtual boundary is padded with the closest row of samples below (above) the ALF virtual boundary, it is suggested that the corresponding sample in row N (M) below (above) the ALF virtual boundary may be padded with the closest row of samples above (below) row N (M).
[0481] a) In an example, assuming K=2 and yL=0 and yP1=1 are represented as the y-coordinates of two sample rows, which are shown in Table 4-2. The ALF virtual boundary is equal to CtbSizeY–4.
[0482] i. In an example, when the ALF virtual boundary is below a representative luma sample, the unavailable sample may be padded with the closest row above the ALF virtual boundary. Meanwhile, the corresponding sample may be padded with the closest row below the row where the corresponding sample is located.
[0483] 1. In an example, when yL is equal to CtbSizeY–5 and row yP1 is unavailable, the sample (x, yP1) at row yP1 may be padded with the sample (x, yL) at row yL.
[0484] b) In an example, assuming K=4 and yM1=-1, yL=0, yP1=1, and yP2=2 are respectively represented as the y-coordinates of four sample rows, which are shown in Table 4-4. The ALF virtual boundary is equal to CtbSizeY–4.
[0485] i. In an example, when the ALF virtual boundary is above a representative luma sample, the unavailable sample may be padded with the closest row below the ALF virtual boundary. Meanwhile, the corresponding sample may be padded with the closest row above the row where the corresponding sample is located.
[0486] 1. In an example, when yL is equal to CtbSizeY–4 and the row above yM1 and yM1 are unavailable, the sample (x, yM1) at row yM1 may be padded with the sample (x, yL) at row yL. Meanwhile, the corresponding sample (x, yP2) at row yP2 may be padded with the sample (x, yP1) at row yP1.
[0487] ii. In one example, when the ALF virtual boundary is below a representative brightness sample, the unavailable sample can be filled with the nearest row above the ALF virtual boundary. Simultaneously, the corresponding sample can be filled with the nearest row below the row containing the corresponding sample.
[0488] 1. In one example, when yL equals CtbSizeY – 6 and row yP2 is unavailable, the sample point (x, yP2) at row yP2 can be filled with the sample point (x, yP1) at row yP1.
[0489] 2. In one example, when yL equals CtbSizeY – 5 and rows yP2 and yP1 are unavailable, the samples (x, yP2) and (x, yP1) at rows yP2 and yP1 can be filled with the sample (x, yL) at row yL. Simultaneously, the corresponding sample (x, yM1) at row yM1 can be filled with the sample (x, yL) at row yL.
[0490] c) In one example, assume K = 6 and represent yM2 = -2, yM1 = -1, yL = 0, yP1 = 1, yP2 = 2, and yP3 = 3 as the y-coordinates of the six sample rows, as shown in Table 4-7. The ALF virtual boundary is equal to CtbSizeY – 4.
[0491] i. In one example, when the ALF virtual boundary is above a representative brightness sample, the unavailable sample can be filled with the nearest row below the ALF virtual boundary. Simultaneously, the corresponding sample can be filled with the nearest row above the row containing the corresponding sample.
[0492] 1. In one example, when yL equals CtbSizeY – 3 and the row above yM2 and yM2 are unavailable, the sample point (x, yM2) at row yM2 can be filled with the sample point (x, yM1) at row yM1. Simultaneously, the corresponding sample point (x, yP3) at row yP3 can be filled with the sample point (x, yP2) at row yP2.
[0493] 2. In one example, when yL equals CtbSizeY – 4 and the rows above yM2, yM2, and yM1 are unavailable, the samples (x, yM2) and (x, yM1) at rows yM2 and yM1 can be filled with the sample (x, yL) at row yL. Similarly, the samples (x, yP3) and (x, yP2) at the corresponding rows yP3 and yP2 can be filled with the sample (x, yP1) at row yP1.
[0494] ii. In one example, when the ALF virtual boundary is below a representative brightness sample, the unavailable sample can be filled with the nearest row above the ALF virtual boundary. Simultaneously, the corresponding sample can be filled with the nearest row below the row containing the corresponding sample.
[0495] 1. In one example, when yL equals CtbSizeY – 7 and row yP3 is unavailable, the sample point (x, yP3) at row yP3 can be filled with the sample point (x, yP2) at row yP2. At the same time, the corresponding sample point (x, yM2) at row yM2 can be filled with the sample point (x, yM1) at row yM1.
[0496] 2. In one example, when yL equals CtbSizeY – 6 and rows yP3 and yP2 are unavailable, the samples (x, yP3) and (x, yP2) at rows yP3 and yP2 can be filled with the sample (x, yP1) at row yP1. Similarly, the samples (x, yM2) and (x, yM1) at the corresponding rows yM2 and yM1 can be filled with the sample (x, yL) at row yL.
[0497] 3. In one example, when yL equals CtbSizeY – 5 and rows yP3, yP2, and yP1 are unavailable, the samples (x, yP3), (x, yP2), and (x, yP1) at rows yP3, yP2, and yP1 can be filled with the sample (x, yL) at yL. Simultaneously, the samples (x, yM2) and (x, yM1) at the corresponding rows yM2 and yM1 can be filled with the sample (x, yL) at yL.
[0498] c. Figure 29 This shows when the filter is located at (X) c Y c This is an example of the location of the current chroma sample point (above the ALF virtual boundary, denoted by C0) and its corresponding sample point (denoted by C7).
[0499] d. In one example, whether mirror padding is enabled or disabled for CC-ALF / chroma ALF / luminance ALF / other types of filtering methods at the ALF virtual boundary can be signaled at the sequence level / picture level / strip level / piece group level, such as in the sequence header / picture header / SPS / VPS / DPS / PPS / APS / strip header / piece group header.
[0500] e. In one example, whether to enable or disable repeat padding and / or mirror padding at ALF virtual boundaries can depend on codec information.
[0501] i. In one example, codec information could refer to block size, such as CTU / CTB size.
[0502] 1) In one example, when the CTU / CTB size is greater than or equal to T, such as T = 32 / 64 / 128, mirror fill can be used at the ALF virtual boundary.
[0503] 2) In one example, when the CTU / CTB size is less than or equal to T, such as T = 4 / 8 / 16, repeated padding can be used at the ALF virtual boundary.
[0504] 2. In the above items, vertical fill can be replaced by horizontal fill.
[0505] a. Alternatively, the fill direction (vertical or horizontal) to be used can depend on whether the boundary is a horizontal or vertical boundary.
[0506] b. Alternatively, vertical distance can be replaced by horizontal distance.
[0507] 3. The mirror fill method in bullet point 1 can be used for picture / subpicture / strip / piece boundaries and / or 360-degree boundaries.
[0508] How to define ALF boundary positions
[0509] 4. The first “luminance ALF boundary” can be derived for the luminance component, and the second “luminance ALF boundary” can be derived for the chrominance component, and then mapped to the “chrominance ALF boundary”. The first “luminance ALF boundary” may be different from the second “luminance ALF boundary”.
[0510] a. In one example, the first “luminance ALF boundary” can be derived and used for luminance ALF and / or CC-ALF.
[0511] i. In one example, during the derivation of the first “luminance ALF boundary”, the CC-ALF can be regarded as the luminance ALF.
[0512] b. In one example, the second “luminance ALF boundary” can be derived and used for the chrominance ALF.
[0513] c. In one example, the second “luminance ALF boundary” can depend on the color format and / or filtering method.
[0514] i. For example, the second “luminance ALF boundary” can be derived in different ways in chroma ALF of 4:2:0 color format and chroma ALF of 4:2:2 / 4:4:4 color format.
[0515] ii. For example, the second “luminance ALF boundary” in the chroma ALF of a 4:2:0 color format can be the same as the first “luminance ALF boundary”.
[0516] iii. For example, during the derivation of the second “luminance ALF boundary”, the chroma ALF of the 4:2:0 color format can be regarded as the luminance ALF.
[0517] iv. For example, during the derivation of the second “luminance ALF boundary”, the chroma ALF of the 4:2:0 color format can be regarded as CC-ALF.
[0518] v. For example, the second “luminance ALF boundary” in the chroma ALF of the 4:2:2 / 4:4:4 color format can be derived in a different way than the first “luminance ALF boundary” in the luminance ALF.
[0519] vi. For example, the second “luminance ALF boundary” in the chroma ALF of the 4:2:2 / 4:4:4 color format can be derived in a different way than the first “luminance ALF boundary” in CC-ALF.
[0520] d. The “luminance ALF boundary” position can refer to the top boundary position, or / and the bottom boundary position, or / and the left boundary position, or / and the right boundary position.
[0521] e. In one example, the derivation of the "luminance ALF boundary" position can rely on the variable vbOffset, which specifies the offset of the ALF virtual boundary (or the distance between the ALF virtual boundary and the bottom boundary of the current CTU), and / or the variable M, which specifies the offset from the top boundary of the current CTU. The luminance position of the current sample relative to the left top sample of the current luminance CTB is represented as (x, y). The luminance position of the left top sample of the current luminance CTB relative to the left top sample of the current image is (xCtb, yCtb), and the size of the current luminance CTB is CtbSizeY.
[0522] i. In one example, when y-(CtbSizeY-vbOffset) is greater than or equal to 0, the top boundary position can be set to equal to yCtb+CtbSizeY-vbOffset.
[0523] ii. In one example, if the top boundary of the current CTB is the top boundary of a slice / strip / subpicture and the loop filter across slice / strip / subpicture is disabled, then the top boundary position can be set to equal yCtb when y is less than M.
[0524] iii. In one example, when CtbSizeY-vbOffset-y is greater than 0 and less than N, the bottom boundary position can be set to be equal to yCtb+CtbSizeY-vbOffset.
[0525] iv. In one example, if the bottom boundary of the current CTB is the bottom boundary of a slice / strip / subpicture, and the loop filter across slice / strip / subpicture is disabled, then the bottom boundary position can be set to equal yCtb+CtbSizeY when CtbSizeY-y is less than L.
[0526] f. In one example, the first “ALF luminance boundary” in CC-ALF is the same as the first “ALF luminance boundary” in luminance ALF.
[0527] i. In one example, during the derivation of the top boundary position and / or bottom boundary position, vbOffset can be used with the same value for both CC-ALF and Luminance ALF.
[0528] ii. In one example, during the derivation of the top boundary position and / or bottom boundary position, M, N, and L can use the same values for both CC-ALF and Luminance ALF.
[0529] g. In one example, the second “ALF luminance boundary” used in a chroma ALF with a 4:2:0 format is the same as the first “ALF luminance boundary”.
[0530] i. In one example, when the chroma format is 4:2:0, vbOffset can use the same value for both chroma ALF and luminance ALF during the derivation of the top and / or bottom boundary positions.
[0531] 1) In one example, vbOffset is an integer, such as 4.
[0532] ii. In one example, when the chroma format is 4:2:0, M, N, and L can use the same values for chroma ALF and luminance ALF during the derivation of the top boundary position and / or bottom boundary position.
[0533] 1) In one example, M, N, and L are integers, such as M = 3, N = 5, and L = 5.
[0534] h. In one example, a second “ALF luminance boundary” used in chroma ALF with a 4:2:2 / 4:4:4 chroma format is derived in a different manner than the first “ALF luminance boundary”.
[0535] i. In one example, when the chroma format is 4:2:2 / 4:4:4, different values of vbOffset can be used for the chroma ALF and the luminance ALF during the derivation of the top boundary position and / or bottom boundary position.
[0536] 1) In one example, vbOffset1 is used for chroma ALF and vbOffset2 is used for luminance ALF. vbOffset1 can be different from vbOffset2, such as vbOffset1 = 2 and vbOffset2 = 4.
[0537] ii. In one example, when the chroma format is 4:2:2 / 4:4:4, different values of vbOffset can be used for chroma ALF and chroma ALF with 4:2:0 chroma format during the derivation of the top boundary position and / or bottom boundary position.
[0538] iii. In one example, when the chroma format is 4:2:2 / 4:4:4, different values of M, N, and L can be used for the chroma ALF and the luminance ALF during the derivation of the top boundary position and / or bottom boundary position.
[0539] 1) In one example, M1, N1, L1 are used for chroma ALF with 4:2:2 / 4:4:4 chroma format, and M2, N2, L2 are used for luminance ALF, where M1 may not be equal to M2, N1 may not be equal to N2, and L1 may not be equal to L2.
[0540] a) In one example, M1 = 2, N1 = 3, L1 = 3, and M2 = 3, N2 = 5, L2 = 5.
[0541] iv. In one example, when the chroma format is 4:2:2 / 4:4:4, different values of M, N, L can be used for chroma ALF and chroma ALF with 4:2:0 chroma format during the derivation of the top boundary position and / or bottom boundary position.
[0542] i. In one example, a second “ALF luminance boundary” used in chroma ALF with a 4:2:2 / 4:4:4 chroma format is derived in a different manner than the first “ALF luminance boundary” used in CC-ALF.
[0543] i. In one example, when the chroma format is 4:2:2 / 4:4:4, different values of vbOffset can be used for chroma ALF and CC-ALF during the derivation of the top boundary position and / or bottom boundary position.
[0544] 1) In one example, vbOffset3\1 is used for chroma ALF, and vbOffset2 is used for CC-ALF. vbOffset1 can be different from vbOffset2, such as vbOffset1=2 and vbOffset2=4.
[0545] ii. In one example, when the chroma format is 4:2:2 / 4:4:4, different values of M, N, L can be used for chroma ALF and CC-ALF during the derivation of the top boundary position and / or bottom boundary position.
[0546] 1) In one example, M1, N1, L1 are used for chroma ALF with 4:2:2 / 4:4:4 chroma format, and M2, N2, L2 are used for CC-ALF, where M1 may not be equal to M2, N1 may not be equal to N2, and L1 may not be equal to L2.
[0547] a) In one example, M1 = 2, N1 = 3, L1 = 3, and M2 = 3, N2 = 5, L2 = 5.
[0548] j. The methods proposed above can be applied to 360-degree boundaries.
[0549] Overall concept
[0550] 5. Whether and / or how the methods disclosed above can be signaled at the sequence level / picture level / strip level / piece group level, such as in the sequence header / picture header / SPS / VPS / DPS / PPS / APS / strip header / piece group header.
[0551] 6. Whether and / or how the methods disclosed above are applied may depend on encoding / decoding information such as color format, single / dual tree segmentation, and sample location (e.g., relative to CU / CTU).
[0552] Table 4-1. Specifications based on the vertical brightness sample point position yL and applyAlfLineBufBoundary's yP1
[0553]
[0554] Table 4-2. Specifications based on the vertical brightness sample point position yL and applyAlfLineBufBoundary's yP1
[0555]
[0556]
[0557] Table 4-3. Specifications of yM1, yP1, and yP2 based on the vertical brightness sample point position yL and applyAlfLineBufBoundary.
[0558]
[0559] Table 4-4. Specifications of yM1, yP1, and yP2 based on the vertical brightness sample point position yL and applyAlfLineBufBoundary.
[0560]
[0561] Table 4-5. Specifications of yM2, yM1, yP1, and yP2 based on the vertical brightness sample point position yL and applyAlfLineBufBoundary.
[0562]
[0563] Table 4-6. Specifications of yM2, yM1, yP1, yP2, and yP3 based on the vertical luminance sample point position yL and applyAlfLineBufBoundary.
[0564]
[0565] Table 4-7. Specifications of yM2, yM1, yP1, yP2, and yP3 based on the vertical luminance sample point position yL and applyAlfLineBufBoundary.
[0566]
[0567] 5. Examples
[0568] The changes are highlighted by showing deletions and additions.
[0569] 5.1. Example #1
[0570] The working draft specified in JVET-P0080 can be modified as follows.
[0571] Cross-component filtering process for xxxx chroma samples
[0572] The input to this process is:
[0573] - Reconstructed luminance image sample array recPicture prior to the luminance adaptive loop filtering process L ,
[0574] –Filtered reconstruction of chroma image sample array alfPicture C ,
[0575] – Chroma position (xC, yC), specifies the left top-left chroma point of the current block relative to the left top-left chroma point of the current image.
[0576] – Width of the chroma sample block ccAlfWidth
[0577] – Height of the chromaticity sample block ccAlfHeight
[0578] – Cross-component filter coefficients CcAlfCoeff[j], where j = 0...13
[0579] The output of this process is a modified, filtered, reconstructed chroma image sample array ccAlfPicture.
[0580] The luminance positions (xCtb, yCtb) of the codec tree block are derived as follows:
[0581] xCtb=(((xC*SubWidthC)>>CtbLog2SizeY)< <CtbLog2SizeY
[0582] (8-1229)
[0583] yCtb=(((yC*SubHeightC)>>CtbLog2SizeY)< <CtbLog2SizeY
[0584] (8-1229)
[0585] For the reconstructed chromaticity sample points ccAlfPicture[xC+x][yC+y] derived from the filter, and sample points alfPicture C Each reconstructed chroma sample within the current chroma block of [xC+x][yC+y], where x = 0...ccAlfWidth-1 and y = 0...ccAlfHeight-1, is filtered as follows:
[0586] – The brightness position (xL, yL) of the current chromaticity sample point at the chromaticity position (xC+x, yC+y) is set to equal to ((xC+x)*SubWidthC, (yC+y)*SubHeightC).
[0587] – array recPicture L Brightness position within (h) xL+i v yL+j ), where i = -2…2, j = -2…3, is derived as follows:
[0588] – If pps_loop_filter_across_virtual_boundaries_disabled_flag equals 1, and PpsVirtualBoundariesPosX[n]%CtbSizeY is not equal to 0, and for any n=0...pps_num_ver_virtual_boundaries–1, xL-PpsVirtualBoundariesPosX[n] is greater than or equal to 0 and less than 3, the following applies:
[0589] h xL+i=Clip3(PpsVirtualBoundariesPosX[n],pic_width_in_luma_samples-1,xL+i) (8-1229)
[0590] Otherwise, if pps_loop_filter_across_virtual_boundaries_disabled_flag equals 1, and PpsVirtualBoundariesPosX[n]%CtbSizeY is not equal to 0, and for any n=0...pps_num_ver_virtual_boundaries–1, PpsVirtualBoundariesPosX[n]-xL is greater than 0 and less than 4, the following applies:
[0591] h x+i =Clip3(0,PpsVirtualBoundariesPosX[n]-1,xL+i) (8-1230)
[0592] –Otherwise, the following applies:
[0593] h x+i =Clip3(0,pic_width_in_luma_samples-1,xL+i) (8-1231)
[0594] – If pps_loop_filter_across_virtual_boundaries_disabled_flag equals 1, and PpsVirtualBoundariesPosY[n]%CtbSizeY is not equal to 0, and for any n=0...pps_num_hor_virtual_boundaries–1,yL-PpsVirtualBoundariesPosY[n] is greater than or equal to 0 and less than 3, the following applies:
[0595] v y+j =Clip3(PpsVirtualBoundariesPosY[n],pic_height_in_luma_samples-1,yL+j) (8-1232)
[0596] Otherwise, if pps_loop_filter_across_virtual_boundaries_disabled_flag equals 1, and PpsVirtualBoundariesPosY[n]%CtbSizeY is not equal to 0, and for any n=0...pps_num_hor_virtual_boundaries–1, PpsVirtualBoundariesPosY[n]-yL is greater than 0 and less than 4, the following applies:
[0597] v y+j =Clip3(0,PpsVirtualBoundariesPosY[n]-1,yL+j) (8-1233)
[0598] –Otherwise, the following applies:
[0599] v y+j =Clip3(0,pic_height_in_luma_samples-1,yL+j) (8-1234)
[0600] – The variables clipLeftPos, clipRightPos, clipTopPos, and clipBottomPos are derived by invoking the derivation procedure for the ALF boundary positions specified in Clause 8.8.5.5, where (xCtb, yCtb) and (xL–xCtb, yL–yCtb) are taken as inputs.
[0601] – The vertical sample point position offsets yM2, yM1, yP1, yP2, and yP3 are specified in:
[0602] Table 4-1. Specifications based on the vertical brightness sample point position yL and applyAlfLineBufBoundary's yP1
[0603]
[0604] Table 4-2. Specifications based on the vertical brightness sample point position yL and applyAlfLineBufBoundary's yP1
[0605]
[0606] –Based on the vertical brightness sample point positions yL, clipLeftPos, and clipRightPos.
[0607] – The horizontal sample position offsets xM1, xM2, xP1, and xP2 are specified in the table y-yyyy based on the horizontal brightness sample position xL, clipLeftPos, and clipRightPos.
[0608] – The derivation of variable curr is as follows:
[0609] curr = alfPicture C [xC+x,yC+y] (8-1286)
[0610] – The array derivation of the cross-component filter coefficients f[j] is as follows, where j = 0...13:
[0611] f[j]=CcAlfCoeff[j] (8-1287)
[0612] – The derivation of variable sum is as follows:
[0613]
[0614] sum=curr+(sum+64)>>7)(8-1290)
[0615] – The derivation of the modified filter for reconstructing the chroma image sample array ccAlfPicture[xC+x][yC+y] is as follows:
[0616] ccAlfPicture[xC+x][yC+y]=Clip3(0,(1< <BitDepth C )-1,sum)
[0617] (8-1291)
[0618] Table x-xx – Specifications of yM1, yM2, yP1, yP2, and yP3 based on vertical luminance sample point positions yL, clipTopPos, and clipBottomPos
[0619] Delete the following table:
[0620] yL==clipTopPos+1 -1 -1 1 2 3 yL==clipTopPos 0 0 1 2 3 yL==clipBottomPos-1 -2 -1 0 0 0 yL==clipBottomPos-2 -2 -1 1 1 1 yL==clipBottomPos-3 -2 -1 1 2 2 otherwise -2 -1 1 2 3
[0621] Replace the above table with the following table:
[0622] yL==clipTopPos+1 -1 -1 1 2 2 yL==clipTopPos 0 0 1 1 1 yL==clipBottomPos-1 0 0 0 0 0 yL==clipBottomPos-2 0 0 1 1 1 yL==clipBottomPos-3 -1 -1 1 2 2 otherwise -2 -1 1 2 3
[0623] Table y-yy – Specifications of xM1, xM2, xP1, and xP2 based on the horizontal luminance sample point positions xL, clipLeftPos, and clipRightPos
[0624] xL==clipLeftPos+1 –1 –1 1 2 xL==clipLeftPos 0 0 1 2 xL==clipRightPos-1 –2 –1 0 0 xL==clipRightPos–2 –2 –1 1 1 otherwise –2 –1 1 2
[0625] 5.2. Example #2
[0626] The working draft specified in JVET-P0080 can be modified as follows.
[0627] Cross-component filtering process for xxxx chroma samples
[0628] The input to this process is:
[0629] - Reconstructed luminance image sample array recPicture prior to the luminance adaptive loop filtering process L ,
[0630] –Filtered reconstruction of chroma image sample array alfPicture C ,
[0631] – Chroma position (xC, yC), specifies the left top-left chroma point of the current block relative to the left top-left chroma point of the current image.
[0632] – Width of the chroma sample block ccAlfWidth
[0633] – Height of the chromaticity sample block ccAlfHeight
[0634] – Cross-component filter coefficients CcAlfCoeff[j], where j = 0...13
[0635] The output of this process is a modified, filtered, reconstructed chroma image sample array ccAlfPicture.
[0636] The luminance positions (xCtb, yCtb) of the codec tree block are derived as follows:
[0637] xCtb=(((xC*SubWidthC)>>CtbLog2SizeY)< <CtbLog2SizeY
[0638] (8-1229)
[0639] yCtb=(((yC*SubHeightC)>>CtbLog2SizeY)< <CtbLog2SizeY
[0640] (8-1229)
[0641] For the reconstructed chromaticity sample points ccAlfPicture[xC+x][yC+y] derived from the filter, and sample points alfPicture CEach reconstructed chroma sample within the current chroma block of [xC+x][yC+y], where x = 0...ccAlfWidth-1 and y = 0...ccAlfHeight-1, is filtered as follows:
[0642] – The brightness position (xL, yL) of the current chromaticity sample point at the chromaticity position (xC+x, yC+y) is set to equal to ((xC+x)*SubWidthC, (yC+y)*SubHeightC).
[0643] – array recPicture L Brightness position within (h) xL+i v yL+j ), where i = -2...2, j = -2...3, the derivation is as follows:
[0644] – If pps_loop_filter_across_virtual_boundaries_disabled_flag equals 1, and PpsVirtualBoundariesPosX[n]%CtbSizeY is not equal to 0, and for any n=0...pps_num_ver_virtual_boundaries–1, xL-PpsVirtualBoundariesPosX[n] is greater than or equal to 0 and less than 3, the following applies:
[0645] h xL+i =Clip3(PpsVirtualBoundariesPosX[n],pic_width_in_luma_samples-1,xL+i) (8-1229)
[0646] Otherwise, if pps_loop_filter_across_virtual_boundaries_disabled_flag equals 1, and PpsVirtualBoundariesPosX[n]%CtbSizeY is not equal to 0, and for any n=0...pps_num_ver_virtual_boundaries–1, PpsVirtualBoundariesPosX[n]-xL is greater than 0 and less than 4, the following applies:
[0647] h x+i =Clip3(0,PpsVirtualBoundariesPosX[n]-1,xL+i)(8-1230)
[0648] –Otherwise, the following applies:
[0649] h x+i =Clip3(0,pic_width_in_luma_samples-1,xL+i)(8-1231)
[0650] – If pps_loop_filter_across_virtual_boundaries_disabled_flag equals 1, and PpsVirtualBoundariesPosY[n]%CtbSizeY is not equal to 0, and for any n=0...pps_num_hor_virtual_boundaries–1,yL-PpsVirtualBoundariesPosY[n] is greater than or equal to 0 and less than 3, the following applies:
[0651] v y+j =Clip3(PpsVirtualBoundariesPosY[n],pic_height_in_luma_samples-1,yL+j) (8-1232)
[0652] Otherwise, if pps_loop_filter_across_virtual_boundaries_disabled_flag equals 1, and PpsVirtualBoundariesPosY[n]%CtbSizeY is not equal to 0, and for any n=0...pps_num_hor_virtual_boundaries–1, PpsVirtualBoundariesPosY[n]-yL is greater than 0 and less than 4, the following applies:
[0653] v y+j =Clip3(0,PpsVirtualBoundariesPosY[n]-1,yL+j) (8-1233)
[0654] –Otherwise, the following applies:
[0655] v y+j =Clip3(0,pic_height_in_luma_samples-1,yL+j) (8-1234)
[0656] – The variables clipLeftPos, clipRightPos, clipTopPos, and clipBottomPos are derived by invoking the derivation procedure for the ALF boundary positions specified in Clause 8.8.5.5, where (xCtb, yCtb) and (xL–xCtb, yL–yCtb) are taken as inputs.
[0657] – The vertical sample point position offsets yM2, yM1, yP1, yP2, and yP3 are specified in:
[0658] Table 4-1. Specifications based on the vertical brightness sample point position yL and applyAlfLineBufBoundary's yP1
[0659]
[0660]
[0661] Table 4-2. Specifications based on the vertical brightness sample location yL and applyAlfLineBufBoundary's yP1
[0662]
[0663] –Based on the vertical brightness sample point positions yL, clipLeftPos, and clipRightPos.
[0664] – The horizontal sample position offsets xM1, xM2, xP1, and xP2 are specified in table y-yyyy based on the horizontal brightness sample position xL, clipLeftPos, and clipRightPos.
[0665] – The derivation of variable curr is as follows:
[0666] curr = alfPicture C [xC+x,yC+y] (8-1286)
[0667] – The array of cross-component filter coefficients f[j] is derived as follows, where j = 0...13:
[0668] f[j]=CcAlfCoeff[j] (8-1287)
[0669] – The derivation of variable sum is as follows:
[0670]
[0671]
[0672] sum=curr+(sum+64)>>7) (8-1290)
[0673] – The derivation of the modified filter for reconstructing the chroma image sample array ccAlfPicture[xC+x][yC+y] is as follows:
[0674] ccAlfPicture[xC+x][yC+y]=Clip3(0,(1< <BitDepth C )-1,sum)
[0675] (8-1291)
[0676] Table x-xx – Specifications of yM1, yM2, yP1, yP2, and yP3 based on vertical luminance sample point positions yL, clipTopPos, and clipBottomPos
[0677] Delete the following table:
[0678] yL==clipTopPos+1 -1 -1 1 2 3 yL==clipTopPos 0 0 1 2 3 yL==clipBottomPos-1 -2 -1 0 0 0 yL==clipBottomPos-2 -2 -1 1 1 1 yL==clipBottomPos-3 -2 -1 1 2 2 otherwise -2 -1 1 2 3
[0679] Add the following table:
[0680] yL==clipTopPos+2 -2 -1 1 2 2 yL==clipTopPos+1 -1 -1 1 1 1 yL==clipTopPos 0 0 0 0 0 yL==clipBottomPos-1 0 0 0 0 0 yL==clipBottomPos-2 0 -1 1 1 1 yL==clipBottomPos-3 -2 -1 1 2 2 otherwise -2 -1 1 2 3
[0681] Table y-yy – Specifications of xM1, xM2, xP1, and xP2 based on the horizontal luminance sample point positions xL, clipLeftPos, and clipRightPos
[0682] xL==clipLeftPos+1 –1 –1 1 2 xL==clipLeftPos 0 0 1 2 xL==clipRightPos-1 –2 –1 0 0 xL==clipRightPos–2 –2 –1 1 1 otherwise –2 –1 1 2
[0683] 5.3. Example #3
[0684] The working draft specified in JVET-P1008 can be modified as follows.
[0685] Cross-component filtering process for xxxx chroma samples
[0686] The input to this process is:
[0687] - Reconstructed luminance image sample array recPicture prior to the luminance adaptive loop filtering process L ,
[0688] –Filtered reconstruction of chroma image sample array alfPicture C ,
[0689] – Chroma position (xCtbC, yCtbC), specifies the left vertex of the current chroma codec block relative to the left vertex of the current image.
[0690] – Width of the chromaticity sample block ccAlfWidth
[0691] – Height of the chromaticity sample block ccAlfHeight
[0692] – Cross-component filter coefficients CcAlfCoeff[j], where j = 0...7
[0693] The output of this process is a modified filtered reconstructed chroma image sample array ccAlfPicture.
[0694] The luminance positions (xCtb, yCtb) of the codec tree block are derived as follows:
[0695] xCtb=(((xCtbC*SubWidthC)>>CtbLog2SizeY)< <CtbLog2SizeY
[0696] (8-1229)
[0697] yCtb=(((yCtbC*SubHeightC)>>CtbLog2SizeY)< <CtbLog2SizeY
[0698] (8-1229)
[0699] For the reconstructed chromaticity sample points ccAlfPicture[xCtbC+x][yCtbC+y] derived from the filter, and sample points alfPicture C Each reconstructed chroma sample within the current chroma block of [xCtbC+x][yCtbC+y], where x = 0...ccAlfWidth-1 and y = 0...ccAlfHeight-1, is filtered as follows:
[0700] – The brightness position (xL, yL) of the current chromaticity sample point at the chromaticity position (xCtbC+x, yCtbC+y) is set to equal to ((xCtbC+x)*SubWidthC, (yCtbC+y)*SubHeightC).
[0701] – array recPicture L Brightness position within (h) xL+i v yL+j ), where i = -1...1, j = -1...2, are derived as follows:
[0702] – If pps_loop_filter_across_virtual_boundaries_disabled_flag equals 1, and PpsVirtualBoundariesPosX[n]%CtbSizeY is not equal to 0, and for any n=0...pps_num_ver_virtual_boundaries–1, xL-PpsVirtualBoundariesPosX[n] is greater than or equal to 0 and less than 3, the following applies:
[0703] h xL+i =Clip3(PpsVirtualBoundariesPosX[n],pic_width_in_luma_samples-1,xL+i) (8-1229)
[0704] Otherwise, if pps_loop_filter_across_virtual_boundaries_disabled_flag equals 1, and PpsVirtualBoundariesPosX[n]%CtbSizeY is not equal to 0, and for any n=0...pps_num_ver_virtual_boundaries–1, PpsVirtualBoundariesPosX[n]-xL is greater than 0 and less than 4, the following applies:
[0705] h x+i =Clip3(0,PpsVirtualBoundariesPosX[n]-1,xL+i) (8-1230)
[0706] –Otherwise, the following applies:
[0707] h x+i =Clip3(0,pic_width_in_luma_samples-1,xL+i) (8-1231)
[0708] – If pps_loop_filter_across_virtual_boundaries_disabled_flag equals 1, and PpsVirtualBoundariesPosY[n]%CtbSizeY is not equal to 0, and for any n=0...pps_num_hor_virtual_boundaries–1,yL-PpsVirtualBoundariesPosY[n] is greater than or equal to 0 and less than 3, the following applies:
[0709] v y+j =Clip3(PpsVirtualBoundariesPosY[n],pic_height_in_luma_samples-1,yL+j) (8-1232)
[0710] Otherwise, if pps_loop_filter_across_virtual_boundaries_disabled_flag equals 1, and PpsVirtualBoundariesPosY[n]%CtbSizeY is not equal to 0, and for any n=0...pps_num_hor_virtual_boundaries–1, PpsVirtualBoundariesPosY[n]-yL is greater than 0 and less than 4, the following applies:
[0711] v y+j =Clip3(0,PpsVirtualBoundariesPosY[n]-1,yL+j) (8-1233)
[0712] –Otherwise, the following applies:
[0713] v y+j =Clip3(0,pic_height_in_luma_samples-1,yL+j) (8-1234)
[0714] – The variables clipLeftPos, clipRightPos, clipTopPos, and clipBottomPos are derived by invoking the derivation procedure for the ALF boundary positions specified in Clause 8.8.5.5, where (xCtb, yCtb) and (xL–xCtb, yL–yCtb) are taken as inputs.
[0715] – The vertical sample point position offsets yM1, yP1, and yP2 are specified in:
[0716] Table 4-1. Specifications based on the vertical brightness sample point position yL and applyAlfLineBufBoundary's yP1
[0717]
[0718] Table 4-2. Specifications based on the vertical brightness sample location yL and applyAlfLineBufBoundary's yP1
[0719]
[0720] –Based on the vertical brightness sample point positions yL, clipLeftPos, and clipRightPos.
[0721] – The horizontal sample position offsets xM1 and xP1 are specified in table y-yyyy based on the horizontal brightness sample position xL, clipLeftPos, and clipRightPos.
[0722] – The derivation of variable curr is as follows:
[0723] curr = alfPicture C [xCtbC+x,yCtbC+y] (8-1286)
[0724] – The array of cross-component filter coefficients f[j] is derived as follows, where j = 0...7:
[0725] f[j]=CcAlfCoeff[j] (8-1287)
[0726] – The derivation of variable sum is as follows:
[0727]
[0728] sum = Clip3(-(1<<(BitDepth)) C -1),(1<<(BitDepth)),(1<<(BitDepth) C -1))-1,sum)
[0729] (8-1290)
[0730] sum=curr+(sum+64)>>(7+(BitDepth Y -BitDepth C (8-1290)
[0731] – The derivation of the modified filtered reconstructed chroma image sample array ccAlfPicture[xCtbC+x][yCtbC+y] is as follows:
[0732] ccAlfPicture[xCtbC+x][yCtbC+y]=Clip3(0,(1< <BitDepth C )-1,sum)
[0733] (8-1291)
[0734] Table x-xx – Specification of yM1, yP1, and yP2 based on vertical luminance sample point positions yL, clipTopPos, and clipBottomPos
[0735] Delete the following table:
[0736] yL==clipTopPos+1 -1 1 1 yL==clipTopPos 0 0 1 yL==clipBottomPos-1 0 0 1 yL==clipBottomPos-2 -1 1 1 otherwise -1 1 2
[0737] Add the following table
[0738]
[0739]
[0740] Table y-yy – Specification of xM1 and xP1 based on the horizontal luminance sample point positions xL, clipLeftPos, and clipRightPos
[0741] xL==clipLeftPos 0 0 xL==clipRightPos-1 0 0 xL==clipRightPos–2 –1 1 otherwise –1 1
[0742] 5.4. Example #4
[0743] The working draft specified in JVET-P1008 can be modified as follows. Changes are highlighted in bold and italics, and deleted text is marked with double brackets (e.g., [[a]] indicates the deletion of the character "a").
[0744] Cross-component filtering process for xxxx chroma samples
[0745] The input to this process is:
[0746] - Reconstructed luminance image sample array recPicture prior to the luminance adaptive loop filtering process L ,
[0747] –Filtered reconstruction of chroma image sample array alfPicture C ,
[0748] – Chroma position (xCtbC, yCtbC), specifies the left vertex of the current chroma codec block relative to the left vertex of the current image.
[0749] – Width of the chroma sample block ccAlfWidth
[0750] – Height of the chromaticity sample block ccAlfHeight
[0751] – Cross-component filter coefficients CcAlfCoeff[j], where j = 0...7
[0752] The output of this process is a modified filtered reconstructed chroma image sample array ccAlfPicture.
[0753] The luminance positions (xCtb, yCtb) of the codec tree block are derived as follows:
[0754] xCtb=(((xCtbC*SubWidthC)>>CtbLog2SizeY)< <CtbLog2SizeY
[0755] (8-1229)
[0756] yCtb=(((yCtbC*SubHeightC)>>CtbLog2SizeY)< <CtbLog2SizeY
[0757] (8-1229)
[0758] For the reconstructed chromaticity sample points ccAlfPicture[xCtbC+x][yCtbC+y] derived from the filter, and sample points alfPicture C Each reconstructed chroma sample within the current chroma block of [xCtbC+x][yCtbC+y], where x = 0...ccAlfWidth-1 and y = 0...ccAlfHeight-1, is filtered as follows:
[0759] – The brightness position (xL, yL) of the current chromaticity sample point at the chromaticity position (xCtbC+x, yCtbC+y) is set to equal to ((xCtbC+x)*SubWidthC, (yCtbC+y)*SubHeightC).
[0760] – array recPicture L Brightness position within (h) xL+i v yL+j ), where i = -1...1, j = -1...2, are derived as follows:
[0761] – If pps_loop_filter_across_virtual_boundaries_disabled_flag equals 1, and PpsVirtualBoundariesPosX[n]%CtbSizeY is not equal to 0, and for any n=0...pps_num_ver_virtual_boundaries–1, xL-PpsVirtualBoundariesPosX[n] is greater than or equal to 0 and less than 3, the following applies:
[0762] h xL+i =Clip3(PpsVirtualBoundariesPosX[n],pic_width_in_luma_samples-1,xL+i) (8-1229)
[0763] Otherwise, if pps_loop_filter_across_virtual_boundaries_disabled_flag equals 1, and PpsVirtualBoundariesPosX[n]%CtbSizeY is not equal to 0, and for any n=0...pps_num_ver_virtual_boundaries–1, PpsVirtualBoundariesPosX[n]-xL is greater than 0 and less than 4, the following applies:
[0764] h x+i =Clip3(0,PpsVirtualBoundariesPosX[n]-1,xL+i) (8-1230)
[0765] –Otherwise, the following applies:
[0766] h x+i =Clip3(0,pic_width_in_luma_samples-1,xL+i) (8-1231)
[0767] – If pps_loop_filter_across_virtual_boundaries_disabled_flag equals 1, and PpsVirtualBoundariesPosY[n]%CtbSizeY is not equal to 0, and for any n=0...pps_num_hor_virtual_boundaries–1,yL-PpsVirtualBoundariesPosY[n] is greater than or equal to 0 and less than 3, the following applies:
[0768] v y+j =Clip3(PpsVirtualBoundariesPosY[n],pic_height_in_luma_samples-1,yL+j) (8-1232)
[0769] Otherwise, if pps_loop_filter_across_virtual_boundaries_disabled_flag equals 1, and PpsVirtualBoundariesPosY[n]%CtbSizeY is not equal to 0, and for any n=0...pps_num_hor_virtual_boundaries–1, PpsVirtualBoundariesPosY[n]-yL is greater than 0 and less than 4, the following applies:
[0770] v y+j =Clip3(0,PpsVirtualBoundariesPosY[n]-1,yL+j) (8-1233)
[0771] –Otherwise, the following applies:
[0772] v y+j =Clip3(0,pic_height_in_luma_samples-1,yL+j) (8-1234)
[0773] – The variables clipLeftPos, clipRightPos, clipTopPos, and clipBottomPos are derived by invoking the derivation procedure for the ALF boundary positions specified in Clause 8.8.5.5, where (xCtb, yCtb) and (xL–xCtb, yL–yCtb) are taken as inputs.
[0774] – Vertical sample point position offsets yM1, yP1, and yP2 are specified in:
[0775] Table 4-1. Specifications based on the vertical brightness sample point position yL and applyAlfLineBufBoundary's yP1
[0776]
[0777] Table 4-2. Specifications based on the vertical brightness sample point position yL and applyAlfLineBufBoundary's yP1
[0778]
[0779] –Based on the vertical brightness sample point positions yL, clipLeftPos, and clipRightPos.
[0780] – The horizontal sample position offsets xM1 and xP1 are specified in table y-yyyy based on the horizontal brightness sample position xL, clipLeftPos, and clipRightPos.
[0781] – The derivation of variable curr is as follows:
[0782] curr = alfPicture C [xCtbC+x,yCtbC+y] (8-1286)
[0783] – The array of cross-component filter coefficients f[j] is derived as follows, where j = 0...7:
[0784] f[j]=CcAlfCoeff[j] (8-1287)
[0785] – The derivation of variable sum is as follows:
[0786]
[0787] sum = Clip3(-(1<<(BitDepth)) C -1),(1<<(BitDepth)),(1<<(BitDepth) C -1))-1,sum)
[0788] (8-1290)
[0789] sum=curr+(sum+64)>>(7+(BitDepth Y -BitDepth C ))(8-1290)
[0790] – The derivation of the modified filtered reconstructed chroma image sample array ccAlfPicture[xCtbC+x][yCtbC+y] is as follows:
[0791] ccAlfPicture[xCtbC+x][yCtbC+y]=Clip3(0,(1< <BitDepth C )-1,sum)
[0792] (8-1291)
[0793] Table x-xx – Specification of yM1, yP1, and yP2 based on vertical luminance sample point positions yL, clipTopPos, and clipBottomPos
[0794] Delete the following table:
[0795] yL==clipTopPos+1 -1 1 1 yL==clipTopPos 0 0 1 yL==clipBottomPos-1 0 0 1 yL==clipBottomPos-2 -1 1 1 otherwise -1 1 2
[0796] Add the following table:
[0797] yL==clipTopPos+1 -1 1 1 yL==clipTopPos 0 0 0 yL==clipBottomPos-1 0 0 0 yL==clipBottomPos-2 -1 1 1 otherwise -1 1 2
[0798] Table y-yy – Specification of xM1 and xP1 based on the horizontal luminance sample point positions xL, clipLeftPos, and clipRightPos
[0799] xL==clipLeftPos 0 0 xL==clipRightPos-1 0 0 xL==clipRightPos–2 –1 1 otherwise –1 1
[0800] 5.5. Example #5
[0801] The working draft specified in JVET-S2001-v5 can be modified as follows.
[0802] 8.8.5 Adaptive Loop Filtering Process
[0803] 8.8.5.2 Encoding and Decoding Tree Block Filtering Process for Luminance Samples
[0804] – The variables clipLeftPos, clipRightPos, clipTopPos, clipBottomPos, clipTopLeftFlag, and clipBotRightFlag are derived by invoking the derivation procedure for the ALF boundary positions specified in Clause 8.8.5.5, where (xCtb, yCtb)[[and]], (x, y), and the variable vbOffset set to 4 are taken as input.
[0805] – Modify the variable h by calling the ALF sample fill procedure specified in Clause 8.8.5.6. x+i and v y+j Where (xCtb, yCtb) and (h x+i v y+j ), 0, clipLeftPos, clipLeftPos, clipBottomPos, clipTopLeftFlag, and clipBotRightFlag are used as inputs.
[0806] 8.8.5.3 Derivation of ALF transpose and filter index of luminance samples
[0807] – The variables clipLeftPos, clipRightPos, clipTopPos, clipBottomPos, clipTopLeftFlag, and clipBotRightFlag are derived by invoking the derivation procedure for the ALF boundary positions specified in Clause 8.8.5.5, where (xCtb, yCtb)[[and]], (x4, y4), and the variable vbOffset set to 4 are taken as input.
[0808] 8.8.5.4 Encoding and Decoding Tree Block Filtering Process for Chroma Samples
[0809] – The variables clipLeftPos, clipRightPos, clipTopPos, clipBottomPos, clipTopLeftFlag, and clipBotRightFlag are derived by invoking the derivation procedure for the ALF boundary positions specified in Clause 8.8.5.5, where (xCtbC*SubWidthC, yCtbC*SubHeightC)[[and]], (x*SubWidthC, y*SubHeightC) and the variable vbOffset set to equal 2*SubHeightC are taken as input.
[0810] – Modify variables hx+i and vy+j by calling the ALF sample filling procedure specified in Clause 8.8.5.6, where (xCtbC*SubWidthC, yCtbC*SubHeightC), (hx+i, vy+j), and variables isChroma, clipLeftPos, clipRightPos, clipTopPos, clipBottomPos, clipTopLeftFlag, and clipBotRightFlag set to 1 are taken as inputs.
[0811] 8.8.5.5 Derivation of ALF Boundary Position
[0812] The input to this process is:
[0813] – Luminance position (xCtb, yCtb), specifies the left vertex of the current luminance codec block relative to the left vertex of the current image.
[0814] – Luminosity position (x, y), specifies the current sample relative to the left-hand top sample of the current luminosity codec block.
[0815] – The variable vbOffset specifies the offset of the ALF virtual boundary.
[0816] The variable clipTopPos is modified as follows:
[0817] – If y-(CtbSizeY-[[4]]vbOffset) is greater than or equal to 0, then the variable clipTopPos is set to equal to yCtb+CtbSizeY-[[4]]vbOffset.
[0818] – Otherwise, if VirtualBoundariesPresentFlag equals 1, and for any n = 0...NumHorVirtualBoundaries-1, yCtb+y-VirtualBoundaryPosY[n] is greater than or equal to 0 and less than 3, then the following applies:
[0819] clipTopPos=VirtualBoundaryPosY[n] (1497)
[0820] Otherwise, if y is less than 3 and one or more of the following conditions are true, the variable clipTopPos is set to equal yCtb:
[0821] – The top boundary of the current codec tree block is the top boundary of the tile, and pps_loop_filter_across_tiles_enabled_flag is equal to 0.
[0822] – The top boundary of the current codec tree block is the top boundary of the slice, and pps_loop_filter_across_slices_enabled_flag is equal to 0.
[0823] – The top boundary of the current codec tree block is the top boundary of the subpic, and sps_loop_filter_across_subpic_enabled_flag[CurrSubpicIdx] equals 0.
[0824] The variable clipBottomPos is modified as follows:
[0825] – If VirtualBoundariesPresentFlag equals 1, then VirtualBoundaryPosY[n] is not equal to pps_pic_height_in_luma_samples-1 or 0, and for any n = 0...NumHorVirtualBoundaries-1, VirtualBoundaryPosY[n]-yCtb-y is greater than 0 and less than 5, then the following applies:
[0826] clipBottomPos=VirtualBoundaryPosY[n](1498)
[0827] Otherwise, if CtbSizeY-[[4]]vbOffset-y is greater than 0 and less than 5, the variable clipBottomPos is set to equal yCtb+CtbSizeY-[[4]]vbOffset.
[0828] Otherwise, if CtbSizeY - y is less than 5, and one or more of the following conditions are true, then the variable clipBottomPos is set to equal yCtb + CtbSizeY:
[0829] – The bottom boundary of the current codec tree block is the bottom boundary of the tile, and pps_loop_filter_across_tiles_enabled_flag is equal to 0.
[0830] – The bottom boundary of the current codec tree block is the bottom boundary of the stripe, and pps_loop_filter_across_slices_enabled_flag is equal to 0.
[0831] – The bottom boundary of the current codec tree block is the bottom boundary of the subpic, and sps_loop_filter_across_subpic_enabled_flag[CurrSubpicIdx] equals 0.
[0832] 8.8.5.6 ALF Sample Filling Process
[0833] The input to this process is:
[0834] – [[Luminance]] Sample Position (xCtb, yCtb), specifies the left-top sample of the current luminance codec block relative to the left-top sample of the current image.
[0835] – Brightness position (x, y), specifies the neighboring sample points relative to the left top sample point of the current image.
[0836] – The isChroma flag specifies whether a color component is a chromaticity component.
[0837] – Left vertical boundary position clipLeftPos
[0838] – Right vertical boundary position clipRightPos
[0839] – Upper horizontal boundary position clipTopPos,
[0840] – Lower horizontal boundary position clipBottomPos
[0841] – Left top boundary marker clipTopLeftFlag
[0842] – Right bottom boundary marker clipBotRightFlag.
[0843] The output of this process is:
[0844] – Modified [[Brightness]] sample position (x, y), specifying the neighboring sample relative to the left top sample of the current image.
[0845] 8.8.5.7 Cross-component filtering process
[0846] – The variables clipLeftPos, clipRightPos, clipTopPos, clipBottomPos, clipTopLeftFlag, and clipBotRightFlag are derived by invoking the ALF boundary position derivation procedure specified in Clause 8.8.5.5, where (xCtbC*SubWidthC, yCtbC*SubHeightC)[[and]](x*SubWidthC, y*SubHeightC) and the variable vbOffset set to 4 are taken as input.
[0847] – Modify the variable h by calling the ALF sample fill procedure specified in Clause 8.8.5.6. x+i and v y+j Where (xCtbC*SubWidthC, yCtbC*SubHeightC), (h x+i v y+j The variables isChroma, clipLeftPos, clipRightPos, clipTopPos, clipBottomPos, clipTopLeftFlag, and clipBotRightFlag, set to 0, are used as inputs.
[0848] 5.6. Example #6
[0849] The working draft specified in JVET-S2001-v5 can be modified as follows.
[0850] 8.8.5 Adaptive Loop Filtering Process
[0851] 8.8.5.2 Encoding and Decoding Tree Block Filtering Process for Luminance Samples
[0852] – The variables clipLeftPos, clipRightPos, clipTopPos, clipBottomPos, clipTopLeftFlag, and clipBotRightFlag are derived by invoking the derivation procedure for the ALF boundary positions specified in Clause 8.8.5.5, where (xCtb, yCtb)[[and]], (x, y), and the variable vbOffset set to 4 are taken as input.
[0853] – Modify the variable h by calling the ALF sample fill procedure specified in Clause 8.8.5.6. x+i and v y+j Where (xCtb, yCtb) and (h x+i v y+j ), 0, clipLeftPos, clipRightPos, clipTopPos, clipBottomPos, clipTopLeftFlag, and clipBotRightFlag are used as inputs.
[0854] 8.8.5.3 Derivation of ALF transpose and filter index of luminance samples
[0855] – The variables clipLeftPos, clipRightPos, clipTopPos, clipBottomPos, clipTopLeftFlag, and clipBotRightFlag are derived by invoking the derivation procedure for the ALF boundary positions specified in Clause 8.8.5.5, where (xCtb, yCtb)[[and]], (x4, y4), and the variable vbOffset set to 4 are taken as input.
[0856] 8.8.5.4 Encoding and Decoding Tree Block Filtering Process for Chroma Samples
[0857] – The variables clipLeftPos, clipRightPos, clipTopPos, clipBottomPos, clipTopLeftFlag, and clipBotRightFlag are derived by invoking the derivation procedure for the ALF boundary positions specified in Clause 8.8.5.5, where (xCtbC*SubWidthC, yCtbC*SubHeightC)[[and]], (x*SubWidthC, y*SubHeightC) and the variable vbOffset set to equal 2*SubHeightC are taken as input.
[0858] – Modify variables hx+i and vy+j by calling the ALF sample filling procedure specified in Clause 8.8.5.6, where (xCtbC*SubWidthC, yCtbC*SubHeightC), (hx+i, vy+j), and variables isChroma, clipLeftPos, clipRightPos, clipTopPos, clipBottomPos, clipTopLeftFlag, and clipBotRightFlag set to 1 are taken as inputs.
[0859] 8.8.5.5 Derivation of the ALF Boundary Location
[0860] The input to this process is:
[0861] – Luminance position (xCtb, yCtb), specifies the left vertex of the current luminance codec block relative to the left vertex of the current image.
[0862] – Luminosity position (x, y), specifies the current sample relative to the left-hand top sample of the current luminosity codec block.
[0863] – The variable vbOffset specifies the offset of the ALF virtual boundary.
[0864] The variable clipTopPos is modified as follows:
[0865] – If y-(CtbSizeY-[[4]]vbOffset) is greater than or equal to 0, then the variable clipTopPos is set to equal to yCtb+CtbSizeY-[[4]]vbOffset.
[0866] – Otherwise, if VirtualBoundariesPresentFlag equals 1, and for any n = 0...NumHorVirtualBoundaries-1, yCtb+y-VirtualBoundaryPosY[n] is greater than or equal to 0 and less than 3, then the following applies:
[0867] clipTopPos=VirtualBoundaryPosY[n] (1497)
[0868] – Otherwise, if y is less than [[3]](vbOffset>>1)+1, and one or more of the following conditions apply.
[0869] If true, then the variable clipTopPos is set to equal yCtb:
[0870] – The top boundary of the current codec tree block is the top boundary of the tile, and pps_loop_filter_across_tiles_enabled_flag is equal to 0.
[0871] – The top boundary of the current codec tree block is the top boundary of the slice, and pps_loop_filter_across_slices_enabled_flag is equal to 0.
[0872] – The top boundary of the current codec tree block is the top boundary of the subpic, and sps_loop_filter_across_subpic_enabled_flag[CurrSubpicIdx] equals 0.
[0873] The variable clipBottomPos is modified as follows:
[0874] – If VirtualBoundariesPresentFlag equals 1, then VirtualBoundaryPosY[n] is not equal to pps_pic_height_in_luma_samples-1 or 0, and for any n = 0...NumHorVirtualBoundaries-1, VirtualBoundaryPosY[n]-yCtb-y is greater than 0 and less than 5, then the following applies:
[0875] clipBottomPos=VirtualBoundaryPosY[n] (1498)
[0876] Otherwise, if CtbSizeY-[[4]]vbOffset-y is greater than 0 and less than [[5]]vbOffset+1, then the variable clipBottomPos is set to equal yCtb+CtbSizeY-[[4]]vbOffset.
[0877] Otherwise, if CtbSizeY-y is less than [[5]]vbOffset+1, and one or more of the following conditions are true, then the variable clipBottomPos is set to equal yCtb+CtbSizeY:
[0878] – The bottom boundary of the current codec tree block is the bottom boundary of the tile, and pps_loop_filter_across_tiles_enabled_flag is equal to 0.
[0879] – The bottom boundary of the current codec tree block is the bottom boundary of the stripe, and pps_loop_filter_across_slices_enabled_flag is equal to 0.
[0880] – The bottom boundary of the current codec tree block is the bottom boundary of the subpic, and sps_loop_filter_across_subpic_enabled_flag[CurrSubpicIdx] equals 0.
[0881] 8.8.5.6 ALF Sample Filling Process
[0882] The input to this process is:
[0883] – [[Luminance]] Sample Position (xCtb, yCtb), specifies the left-top sample of the current luminance codec block relative to the left-top sample of the current image.
[0884] – Brightness position (x, y), specifies the neighboring sample points relative to the left top sample point of the current image.
[0885] – The isChroma flag specifies whether a color component is a chromaticity component.
[0886] – Left vertical boundary position clipLeftPos
[0887] – Right vertical boundary position clipRightPos
[0888] – Upper horizontal boundary position clipTopPos,
[0889] – Lower horizontal boundary position clipBottomPos
[0890] – Left top boundary marker clipTopLeftFlag
[0891] – Right bottom boundary marker clipBotRightFlag.
[0892] The output of this process is:
[0893] – Modified [[Brightness]] sample position (x, y), specifying the neighboring sample relative to the left top sample of the current image.
[0894] 8.8.5.7 Cross-component filtering process
[0895] – The variables clipLeftPos, clipRightPos, clipTopPos, clipBottomPos, clipTopLeftFlag, and clipBotRightFlag are derived by invoking the derivation procedure for the ALF boundary positions specified in Clause 8.8.5.5, where (xCtbC*SubWidthC, yCtbC*SubHeightC)[[and]](x*SubWidthC, y*SubHeightC) and the variable vbOffset set to 4 are taken as input.
[0896] – Modify the variable h by calling the ALF sample fill procedure specified in Clause 8.8.5.6. x+i and v y+j Where (xCtbC*SubWidthC, yCtbC*SubHeightC), (hx+i v y+j The variables isChroma, clipLeftPos, clipRightPos, clipTopPos, clipBottomPos, clipTopLeftFlag, and clipBotRightFlag, set to 0, are used as inputs.
[0897] 5.7. Example #7
[0898] The working draft specified in JVET-S2001-v5 can be modified as follows.
[0899] 8.8.5 Adaptive Loop Filtering Process
[0900] 8.8.5.2 Encoding and Decoding Tree Block Filtering Process for Luminance Samples
[0901] – The variables clipLeftPos, clipRightPos, clipTopPos, clipBottomPos, clipTopLeftFlag, and clipBotRightFlag are derived by invoking the derivation procedure for the ALF boundary positions specified in Clause 8.8.5.5, where (xCtb, yCtb)[[and]], (x, y), and the variable vbOffset set to 4 are taken as input.
[0902] – Modify the variable h by calling the ALF sample fill procedure specified in Clause 8.8.5.6. x+i and v y+j Where (xCtb, yCtb) and (h x+i v y+j ), 0, clipLeftPos, clipRightPos, clipTopPos, clipBottomPos, clipTopLeftFlag, and clipBotRightFlag are used as inputs.
[0903] 8.8.5.3 Derivation of ALF transpose and filter index of luminance samples
[0904] – The variables clipLeftPos, clipRightPos, clipTopPos, clipBottomPos, clipTopLeftFlag, and clipBotRightFlag are derived by invoking the derivation procedure for the ALF boundary positions specified in Clause 8.8.5.5, where (xCtb, yCtb)[[and]], (x4, y4), and the variable vbOffset set to 4 are taken as input.
[0905] 8.8.5.4 Encoding and Decoding Tree Block Filtering Process for Chroma Samples
[0906] – The variables clipLeftPos, clipRightPos, clipTopPos, clipBottomPos, clipTopLeftFlag, and clipBotRightFlag are derived by invoking the derivation procedure for the ALF boundary positions specified in Clause 8.8.5.5, where (xCtbC*SubWidthC, yCtbC*SubHeightC)[[and]], (x*SubWidthC, y*SubHeightC) and the variable vbOffset set to equal 2*SubHeightC are taken as input.
[0907] – Modify variables hx+i and vy+j by calling the ALF sample filling procedure specified in Clause 8.8.5.6, where (xCtbC*SubWidthC, yCtbC*SubHeightC), (hx+i, vy+j), and variables isChroma, clipLeftPos, clipRightPos, clipTopPos, clipBottomPos, clipTopLeftFlag, and clipBotRightFlag set to 1 are taken as inputs.
[0908] 8.8.5.5 Derivation of ALF Boundary Position
[0909] The input to this process is:
[0910] – Luminance position (xCtb, yCtb), specifies the left vertex of the current luminance codec block relative to the left vertex of the current image.
[0911] – Luminosity position (x, y), specifies the current sample relative to the left-hand top sample of the current luminosity codec block.
[0912] – The variable vbOffset specifies the offset of the ALF virtual boundary.
[0913] The variable clipTopPos is modified as follows:
[0914] – If y-(CtbSizeY-[[4]]vbOffset) is greater than or equal to 0, then the variable clipTopPos is set to equal to yCtb+CtbSizeY-[[4]]vbOffset.
[0915] – Otherwise, if VirtualBoundariesPresentFlag equals 1, and for any n = 0...NumHorVirtualBoundaries-1, yCtb+y-VirtualBoundaryPosY[n] is greater than or equal to 0 and less than [[3]](vbOffset>>1)+1, then the following applies:
[0916] clipTopPos=VirtualBoundaryPosY[n] (1497)
[0917] Otherwise, if y is less than [[3]](vbOffset>>1)+1, and one or more of the following conditions are true, then the variable clipTopPos is set to equal yCtb:
[0918] – The top boundary of the current codec tree block is the top boundary of the tile, and pps_loop_filter_across_tiles_enabled_flag is equal to 0.
[0919] – The top boundary of the current codec tree block is the top boundary of the slice, and pps_loop_filter_across_slices_enabled_flag is equal to 0.
[0920] – The top boundary of the current codec tree block is the top boundary of the subpic, and sps_loop_filter_across_subpic_enabled_flag[CurrSubpicIdx] equals 0.
[0921] The variable clipBottomPos is modified as follows:
[0922] – If VirtualBoundariesPresentFlag equals 1, then VirtualBoundaryPosY[n] is not equal to pps_pic_height_in_luma_samples-1 or 0, and for any n = 0...NumHorVirtualBoundaries-1, VirtualBoundaryPosY[n]-yCtb-y is greater than 0 and less than 5vbOffset+1, then the following applies:
[0923] clipBottomPos=VirtualBoundaryPosY[n] (1498)
[0924] Otherwise, if CtbSizeY-[[4]]vbOffset-y is greater than 0 and less than [[5]]vbOffset+1, then the variable clipBottomPos is set to equal yCtb+CtbSizeY-[[4]]vbOffset.
[0925] Otherwise, if CtbSizeY-y is less than [[5]]vbOffset+1, and one or more of the following conditions are true, then the variable clipBottomPos is set to equal yCtb+CtbSizeY:
[0926] – The bottom boundary of the current codec tree block is the bottom boundary of the tile, and pps_loop_filter_across_tiles_enabled_flag is equal to 0.
[0927] – The bottom boundary of the current codec tree block is the bottom boundary of the stripe, and pps_loop_filter_across_slices_enabled_flag is equal to 0.
[0928] – The bottom boundary of the current codec tree block is the bottom boundary of the subpic, and sps_loop_filter_across_subpic_enabled_flag[CurrSubpicIdx] equals 0.
[0929] 8.8.5.6 ALF Sample Filling Process
[0930] The input to this process is:
[0931] – [[Luminance]] Sample Position (xCtb, yCtb), specifies the left-top sample of the current luminance codec block relative to the left-top sample of the current image.
[0932] – Brightness position (x, y), specifies the neighboring sample points relative to the left top sample point of the current image.
[0933] – The isChroma flag specifies whether a color component is a chromaticity component.
[0934] – Left vertical boundary position clipLeftPos
[0935] – Right vertical boundary position clipRightPos
[0936] – Upper horizontal boundary position clipTopPos,
[0937] – Lower horizontal boundary position clipBottomPos
[0938] – Left top boundary marker clipTopLeftFlag
[0939] – Right bottom boundary marker clipBotRightFlag.
[0940] The output of this process is:
[0941] – Modified [[Brightness]] sample position (x, y), specifying the neighboring sample relative to the left top sample of the current image.
[0942] 8.8.5.7 Cross-component filtering process
[0943] – The variables clipLeftPos, clipRightPos, clipTopPos, clipBottomPos, clipTopLeftFlag, and clipBotRightFlag are derived by invoking the derivation procedure for the ALF boundary positions specified in Clause 8.8.5.5, where (xCtbC*SubWidthC, yCtbC*SubHeightC)[[and]](x*SubWidthC, y*SubHeightC) and the variable vbOffset set to 4 are taken as input.
[0944] – Modify the variable h by calling the ALF sample fill procedure specified in Clause 8.8.5.6. x+i and v y+j , with (xCtbC*SubWidthC, yCtbC*SubHeightC), (h x+i v y+j The variables isChroma, clipLeftPos, clipRightPos, clipTopPos, clipBottomPos, clipTopLeftFlag, and clipBotRightFlag, set to 0, are used as inputs.
[0945] Figure 32 This is a block diagram illustrating an example video processing system 1900 in which various techniques disclosed herein may be implemented. Various implementations may include some or all of the components of system 1900. System 1900 may include an input 1902 for receiving video content. The video content may be received in a raw or uncompressed format, such as 8 or 10-bit multi-component pixel values, or it may be in a compressed or encoded format. Input 1902 may represent a network interface, a peripheral bus interface, or a storage interface. Examples of network interfaces include wired interfaces such as Ethernet, Passive Optical Network (PON), and wireless interfaces such as Wi-Fi or cellular interfaces.
[0946] System 1900 may include a codec component 1904 capable of implementing the various codec or encoding methods described in this document. Codec component 1904 can reduce the average bit rate of the video from input 1902 to the output of codec component 1904 to produce a codec representation of the video. Codec techniques are therefore sometimes referred to as video compression or video transcoding techniques. The output of codec component 1904 may be stored or transmitted via a communication connection as indicated by component 1906. The bitstream (or codec) representation of the video received at input 1902, whether stored or communicated, can be used by component 1908 to generate pixel values or transmit as displayable video to display interface 1910. The process of generating user-visible video from the bitstream representation is sometimes referred to as video decompression. Furthermore, although some video processing operations are referred to as “codec” operations or tools, it will be understood that codec tools or operations are used at the encoder, and the corresponding decoding tools or operations that inversely represent the codec results will be performed by the decoder.
[0947] Examples of peripheral bus interfaces or display interfaces may include Universal Serial Bus (USB), High Definition Multimedia Interface (HDMI), or DisplayPort. Examples of storage interfaces include SATA (Serial Advanced Technology Accessory), PCI, IDE, etc. The technologies described in this document can be found in a variety of electronic devices, such as mobile phones, laptops, smartphones, or other devices capable of performing digital data processing and / or video display.
[0948] Figure 33 This is a block diagram of a video processing apparatus 3600. Apparatus 3600 can be used to implement one or more methods described herein. Apparatus 3600 can be embodied in smartphones, tablets, computers, Internet of Things (IoT) receivers, etc. Apparatus 3600 may include one or more processors 3602, one or more memories 3604, and video processing hardware 3606. The processors (multiple) 3602 can be configured to implement one or more methods described in this document. The memories (multiple) 3604 can be used to store data and code for implementing the methods and techniques described herein. The video processing hardware 3606 can be used to implement some of the techniques described in this document in a hardware circuit system.
[0949] Figure 35 This is a block diagram illustrating an example video codec system 100 that can utilize the techniques disclosed herein.
[0950] like Figure 35As shown, the video encoding / decoding system 100 may include a source device 110 and a target device 120. The source device 110 generates encoded video data, and this source device 110 may be referred to as a video encoding device. The target device 120 can decode the encoded video data generated by the source device 110, and this target device 120 may be referred to as a video decoding device.
[0951] The source device 110 may include a video source 112, a video encoder 114, and an input / output (I / O) interface 116.
[0952] Video source 112 may include sources such as video capture devices, interfaces for receiving video data from video content providers, and / or computer graphics systems for generating video data, or combinations of these sources. Video data may include one or more pictures. Video encoder 114 encodes the video data from video source 112 to generate a bitstream. The bitstream may include a sequence of bits forming a codec representation of the video data. The bitstream may include codec pictures and related data. A codec picture is a codec representation of a picture. Related data may include sequence parameter sets, picture parameter sets, and other syntax structures. I / O interface 116 may include a modulator / demodulator (modem) and / or a transmitter. Encoded video data may be transmitted directly to target device 120 via network 130a through I / O interface 116. Encoded video data may also be stored on storage medium / server 130b for access by target device 120.
[0953] The target device 120 may include an I / O interface 126, a video decoder 124, and a display device 122.
[0954] I / O interface 126 may include a receiver and / or a modem. I / O interface 126 may acquire encoded video data from source device 110 or storage medium / server 130b. Video decoder 124 may decode the encoded video data. Display device 122 may display the decoded video data to a user. Display device 122 may be integrated with target device 120 or may be external to target device 120 configured to interface with an external display device.
[0955] The video encoder 114 and the video decoder 124 can operate according to video compression standards, such as the High Efficiency Video Codec (HEVC) standard, the Multi-Functional Video Codec (VVM) standard, and other current and / or additional standards.
[0956] Figure 36 This is a block diagram illustrating an example of a video encoder 200, which can be in... Figure 35 The video encoder 114 in the system 100 shown in the figure.
[0957] The video encoder 200 can be configured to perform any or all of the techniques disclosed herein. Figure 36 In the example, the video encoder 200 includes multiple functional components. The techniques described in this disclosure can be shared among the various components of the video encoder 200. In some examples, the processor can be configured to perform any or all of the techniques described in this disclosure.
[0958] The functional components of the video encoder 200 may include a segmentation unit 201, a prediction unit 202 (which may include a mode selection unit 203, a motion estimation unit 204, a motion compensation unit 205, and an intra-frame prediction unit 206), a residual generation unit 207, a transform unit 208, a quantization unit 209, an inverse quantization unit 210, an inverse transform unit 211, a reconstruction unit 212, a buffer 213, and an entropy coding unit 214.
[0959] 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 IBC mode, where at least one reference picture is the picture containing the current video block.
[0960] Furthermore, some components, such as the motion estimation unit 204 and the motion compensation unit 205, can be highly integrated, but for interpretive purposes, in Figure 36 The example is represented separately.
[0961] The segmentation unit 201 can segment an image into one or more video blocks. The video encoder 200 and the video decoder 300 can support various video block sizes.
[0962] The mode selection unit 203 can select one of the encoding / decoding modes (e.g., intra-frame or inter-frame) based on the error result, and provide the resulting intra-frame or inter-frame codec block to the residual generation unit 207 to generate residual block data, and to the reconstruction unit 212 to reconstruct the coded block for use as a reference picture. In some examples, the mode selection unit 203 can select a combination of intra-frame and inter-frame prediction modes (CIIP), where the prediction is based on the inter-frame prediction signal and the intra-frame prediction signal. In the case of inter-frame prediction, the mode selection unit 203 can also select the resolution of the block's motion vector (e.g., sub-pixel or integer pixel precision).
[0963] To perform inter-frame prediction on the current video block, motion estimation unit 204 can generate motion information for the current video block by comparing one or more reference frames from buffer 213 with the current video block. Motion compensation unit 205 can determine the predicted video block for the current video block based on the motion information and decoded samples of images from buffer 213 other than the image associated with the current video block.
[0964] The motion estimation unit 204 and the motion compensation unit 205 can perform different operations on the current video block, for example, depending on whether the current video block is in an I-strip, P-strip, or B-strip.
[0965] In some examples, motion estimation unit 204 can perform unidirectional prediction on the current video block, and can search for reference images in list 0 or list 1 for reference video blocks of the current video block. Motion estimation unit 204 can then generate a reference index indicating the reference image in list 0 or list 1, which contains the reference video block and a motion vector indicating the spatial displacement between the current video block and the reference video block. Motion estimation unit 204 can output the reference index, prediction direction indicator, and motion vector as motion information for the current video block. Motion compensation unit 205 can generate a predicted video block for the current block based on the reference video block indicated by the motion information of the current video block.
[0966] In other examples, motion estimation unit 204 can perform bidirectional prediction on the current video block. Motion estimation unit 204 can search for a reference video block for the current video block in the reference images in list 0, and can also search for another reference video block for the current video block in list 1. Motion estimation unit 204 can then generate a reference index indicating the reference images in lists 0 and 1 containing the reference video blocks, and a motion vector indicating the spatial displacement between the reference video blocks and the current video block. Motion estimation unit 204 can output the reference index and motion vector of the current video block as motion information for the current video block. Motion compensation unit 205 can generate a predicted video block for the current video block based on the reference video blocks indicated by the motion information of the current video block.
[0967] In some examples, the motion estimation unit 204 can output a complete set of motion information for use in the decoder's decoding process.
[0968] In some examples, motion estimation unit 204 may not output the complete set of motion information for the current video. Instead, motion estimation unit 204 may signal the motion information of the current video block by referencing the motion information of another video block. For example, motion estimation unit 204 may determine that the motion information of the current video block is sufficiently similar to the motion information of neighboring video blocks.
[0969] In one example, the motion estimation unit 204 may indicate a value in the syntax structure associated with the current video block that indicates to the video decoder 300 that the current video block has the same motion information as another video block.
[0970] In another example, motion estimation unit 204 can identify another video block and motion vector difference (MVD) in the syntax structure associated with the current video block. The motion vector difference indicates the difference between the motion vector of the current video block and the motion vector of the indicated video block. Video decoder 300 can use the motion vector of the indicated video block and the motion vector difference to determine the motion vector of the current video block.
[0971] As discussed above, the video encoder 200 can predictively signal motion vectors. Two examples of predictive signaling notification techniques that can be implemented by the video encoder 200 include Advanced Motion Vector Prediction (AMVP) and Merge Pattern Signaling Notification.
[0972] Intra-prediction unit 206 can perform intra-prediction on the current video block. When intra-prediction unit 206 performs intra-prediction on the current video block, it can generate prediction data for the current video block based on decoded samples from other video blocks in the same frame. The prediction data for the current video block can include the predicted video block and various syntax elements.
[0973] The residual generation unit 207 can generate residual data for the current video block by subtracting (e.g., indicated by a minus sign) multiple predicted video blocks from the current video block. The residual data for the current video block may include residual video blocks corresponding to different sample components of the samples in the current video block.
[0974] In other examples, such as in skip mode, there may be no residual data for the current video block, and the residual generation unit 207 may not perform the subtraction operation.
[0975] The transform processing unit 208 can generate one or more transform coefficient video blocks for the current video block by applying one or more transforms to the residual video blocks associated with the current video block.
[0976] After the transform processing unit 208 generates a transform coefficient video block associated with the current video block, the quantization unit 209 can quantize the transform coefficient video block associated with the current video block based on one or more quantization parameter (QP) values associated with the current video block.
[0977] Inverse quantization unit 210 and inverse transform unit 211 can apply inverse quantization and inverse transform to the transform coefficient video block, respectively, to reconstruct the residual video block from the transform coefficient video block. Reconstruction unit 212 can add the reconstructed residual video block to the corresponding sample points of one or more predicted video blocks generated by prediction unit 202 to generate a reconstructed video block associated with the current block, which is stored in buffer 213.
[0978] After the video block is reconstructed by the reconstruction unit 212, a loop filtering operation can be performed to reduce the video block effect in the video block.
[0979] Entropy encoding unit 214 can receive data from other functional components of video encoder 200. When entropy encoding unit 214 receives data, it can perform one or more entropy encoding operations to generate entropy encoded data and output a bit stream including the entropy encoded data.
[0980] Figure 37 This is a block diagram illustrating an example of a video decoder 300, which can be in... Figure 35 The video decoder 124 in the system 100 shown in the figure.
[0981] The video decoder 300 can be configured to perform any or all of the technologies disclosed herein. Figure 37 In the example, the video decoder 300 includes multiple functional components. The techniques described in this disclosure can be shared among the various components of the video decoder 300. In some examples, the processor can be configured to perform any or all of the techniques described in this disclosure.
[0982] exist Figure 37 In the example, the video decoder 300 includes an entropy decoding unit 301, a motion compensation unit 302, an intra-frame prediction unit 303, an inverse quantization unit 304, an inverse transform unit 305, a reconstruction unit 306, and a buffer 307. In some examples, the video decoder 300 can perform functions typically associated with the video encoder 200. Figure 36 The encoding process described is the opposite of the decoding process.
[0983] The entropy decoding unit 301 can retrieve the encoded bitstream. The encoded bitstream may include entropy-coded video data (e.g., encoded blocks of video data). The entropy decoding unit 301 can decode the entropy-coded video data, and from the entropy-coded video data, the motion compensation unit 302 can determine motion information including motion vectors, motion vector precision, reference image list index, and other motion information. The motion compensation unit 302 can determine such information, for example, by executing AMVP and Merge modes.
[0984] The motion compensation unit 302 can generate motion compensation blocks and can perform interpolation based on an interpolation filter. The identifier of the interpolation filter to be used at sub-pixel precision can be included in the syntax element.
[0985] The motion compensation unit 302 can use an interpolation filter, such as that used by the video encoder 200 during the encoding of a video block, to calculate the interpolation of sub-integer pixels of the reference block. The motion compensation unit 302 can determine the interpolation filter used by the video encoder 200 based on the received syntax information, and use the interpolation filter to generate the prediction block.
[0986] The motion compensation unit 302 may use some syntax information to determine the size of the blocks used to encode (multiple) frames and / or (multiple) stripes of the encoded video sequence, segmentation information describing how each macroblock of the image of the encoded video sequence is segmented, a pattern indicating how each segment is encoded, one or more reference frames (and a list of reference frames) for each inter-frame coded block, and other information for decoding the encoded video sequence.
[0987] Intra-prediction unit 303 can use, for example, an intra-prediction mode received in the bitstream to form prediction blocks from spatially adjacent blocks. Inverse quantization unit 303 performs inverse quantization, i.e., dequantization, on the quantized video block coefficients provided in the bitstream and decoded by entropy decoding unit 301. Inverse transform unit 303 applies an inverse transform.
[0988] The reconstruction unit 306 can add the residual block to the corresponding prediction block generated by the motion compensation unit 202 or the intra-frame prediction unit 303 to form a decoded block. If necessary, a deblocking filter can also be applied to the decoded block to remove block artifacts. The decoded video block is then stored in the buffer 307 to provide a reference block for subsequent motion compensation / intra-frame prediction, and also generates decoded video for presentation on the display device.
[0989] The following is a list of preferred solutions for some embodiments.
[0990] The first set of solutions is provided below. The following solutions illustrate example embodiments of the techniques discussed in the previous section (e.g., item 1).
[0991] 1. A video processing method (e.g., Figure 34Method 3400 includes: for the conversion between video units and the encoded / decoded representation of a video, determining, based on criteria, to use a cross-component adaptive loop filter operation (3402), wherein the cross-component adaptive loop filter uses a mirror-fill technique for unavailable luminance samples; and performing the conversion based on this determination (3404). This document discloses various embodiments of the cross-component adaptive loop filter and its operation, as well as the mirror-fill technique, and their relationship to virtual buffer boundaries.
[0992] 2. According to the method of Solution 1, wherein the mirror fill technique is further used to derive one or more corresponding luminance samples of the unavailable luminance samples.
[0993] 3. The method according to Solution 2, wherein one or more corresponding luminance samples are determined based on the distance of one or more corresponding luminance samples from the representative luminance sample or the distance of unavailable samples from the representative luminance sample.
[0994] 4. The method according to Solution 3, wherein the representative luminance sample corresponds to the position of the chrominance sample using cross-component adaptive loop filtering.
[0995] 5. The method according to Solution 3, wherein the location of the representative luminance sample depends on the color format of the video.
[0996] 6. The method according to any one of solutions 3-4, wherein the distance corresponds to the distance in the first direction between a pixel row containing one or more luminance samples along the second direction and a row containing representative samples.
[0997] 7. According to the method described in Solution 6, where C represents the center row of the representative luminance sample along the second direction, M represents the row of the unavailable sample along the second direction, and N represents the row of one or more luminance samples along the second direction, where C, M, and N are positive integers and M is not equal to N, then the mirror filling technique is applied based on the size and shape of the cross-component adaptive loop filter.
[0998] 8. The method according to Solution 1, wherein the cross-component adaptive loop filter has a K×L filter shape, where K is an even number and L is a positive integer, and wherein the mirror filling technique includes filling unavailable samples located at a distance M or N from the virtual boundary M or N of the cross-component adaptive loop filter along a second direction from the nearest sample row to the virtual boundary.
[0999] 9. The method according to solution 3, wherein, in a case where a virtual boundary of the cross-component adaptive loop filter is below the representative luma sample in the second direction, the closest row above the virtual boundary in the second direction is used to fill the unavailable sample.
[1000] 10. The method according to solution 3, wherein, in a case where the unavailable sample is located in row M, M is an integer smaller than C, C is an integer indicating a center row of the representative luma sample along the second direction, then when d(C,M)=d(N,C)–offset, a sample located in row N in the second direction is determined as the corresponding sample, wherein offset is an integer value, or d(C,M)<d(N,C), wherein d() is a distance function.
[1001] The following solutions present example embodiments of the technology discussed in the previous section (e.g., item 2).
[1002] 11. The method according to any one of solutions 1-10, wherein the first direction is a vertical direction, and the second direction is a horizontal direction.
[1003] 12. The method according to any one of solutions 1-10, wherein the first direction is a horizontal direction, and the second direction is a vertical direction.
[1004] 13. The method according to any one of solutions 11-12, wherein the orientation of the first direction and the second direction depends on an orientation of a boundary of a virtual buffer.
[1005] The following solutions present example embodiments of the technology discussed in the previous section (e.g., item 3).
[1006] 14. The method according to any one of solutions 1-13, wherein the video unit comprises a video picture, a video sub-picture, a video slice, a video tile or a 360-degree boundary of video.
[1007] 15. The method according to any one of solutions 1-14, wherein performing the conversion comprises encoding the video to generate a coded representation.
[1008] 16. The method according to any one of solutions 1-14, wherein performing the conversion comprises parsing and decoding the coded representation to generate the video.
[1009] In the solutions disclosed above, the orientation may be horizontal or vertical, and accordingly, the first direction and the second direction may be a vertical or horizontal direction referenced by pixel columns and pixel rows.
[1010] 17. A video decoding apparatus, comprising a processor configured to implement the method according to one or more of solutions 1 to 16.
[1011] 18. A video encoding apparatus comprising a processor configured to implement the method according to one or more of solutions 1 to 16.
[1012] 19. A computer program product storing computer code that, when executed by a processor, causes the processor to perform the method according to any one of solutions 1 to 16.
[1013] 20. A method, apparatus or system described in this document.
[1014] The second set of solutions illustrates example embodiments of the techniques discussed in the previous section (e.g., item 4).
[1015] 1. A video processing method (e.g., such as...) Figure 38 The method 3800 shown includes: for the conversion between video units and video bitstreams, making a first determination of a first luminance adaptive loop filter (ALF) boundary and a second luminance ALF boundary, wherein the luminance adaptive loop filter is selectively applied across the first luminance ALF boundary to the luminance component of the video unit 3802; making a second determination of a chrominance ALF boundary from the second luminance ALF boundary, wherein the chrominance adaptive loop filter is selectively applied across the chrominance ALF boundary to the chrominance component of the video unit 3804; and performing the conversion based on the first determination and the second determination 3806.
[1016] 2. The method according to Solution 1, wherein the second luminance ALF boundary is different from the first luminance ALF boundary.
[1017] 3. The method according to Solution 1, wherein the first luminance ALF boundary is used for cross component ALF (CC-ALF) and / or luminance ALF.
[1018] 4. The method according to solution 3, wherein, during the period of making the first determination, CC-ALF is regarded as luminance ALF.
[1019] 5. The method according to Solution 1, wherein the second luminance ALF boundary is used for chrominance ALF.
[1020] 6. The method according to Solution 1, wherein the second luminance ALF boundary is determined based on color format and / or filtering method.
[1021] 7. The method according to Solution 1, wherein the second luminance ALF boundary in the chroma ALF of the 4:2:0 color format is determined to be the same as the first luminance ALF boundary.
[1022] 8. The method according to Solution 1, wherein, during the period of making the first determination, the chroma ALF of the 4:2:0 color format is regarded as the luminance ALF or the cross-component ALF (CC-ALF).
[1023] 9. The method according to Solution 1, wherein the second luminance ALF boundary in the chroma ALF of the 4:2:2 or 4:4:4:color format is determined to be different from the first luminance ALF boundary in the luminance ALF or CC-ALF.
[1024] 10. The method according to Solution 1, wherein the first luminance ALF boundary and / or the second luminance ALF boundary refers to the top boundary position, bottom boundary position, left boundary position, or right boundary position.
[1025] 11. The method according to solution 10, wherein the first luminance ALF boundary and / or the second luminance ALF boundary are based on i) a first variable vbOffset, which specifies the offset of the ALF virtual boundary or the distance between the ALF virtual boundary and the bottom boundary of the current codec tree unit (CTU), or / and ii) a second variable M, which specifies the offset from the top boundary of the current CTU.
[1026] 12. According to the method described in Solution 11, (x, y) refers to the brightness position of the current sample relative to the left top sample of the current brightness codec block CTB, (xCtb, yCtb) refers to the brightness position of the left top sample of the current brightness CTB relative to the left top sample of the current image, and CtbSizeY refers to the size of the current brightness CTB.
[1027] 13. The method according to solution 12, wherein, when y-(CtbSizeY-vbOffset) is greater than or equal to 0, the top boundary position is set to be equal to yCtb+CtbSizeY-vbOffset.
[1028] 14. The method according to solution 12, wherein the top boundary position is set to equal yCtb when i) the top boundary of the current luminance CTB is the top boundary of a slice, strip, or sub-picture, ii) adaptive loop filtering across slices, strips, or sub-pictures is disabled, and iii) y is less than the second variable M.
[1029] 15. The method according to Solution 12, wherein, when CtbSizeY-vbOffset-y is greater than 0 and less than the third variable N, the bottom boundary position is set to be equal to yCtb+CtbSizeY-vbOffset.
[1030] 16. The method described in solution 15, wherein the third variable N is an integer.
[1031] 17. The method described in solution 15, wherein the third variable N is equal to 3 or 5.
[1032] 18. The method according to Solution 12, wherein the bottom boundary position is set to equal to yCtb+CtbSizeY when i) the bottom boundary of the current luminance CTB is the bottom boundary of a patch, strip, or sub-picture, ii) adaptive loop filtering across a patch, strip, or sub-picture is disabled, and iii) CtbSizeY-y is less than the fourth variable L.
[1033] 19. The method described in solution 18, wherein the fourth variable L is an integer.
[1034] 20. The method described in solution 18, wherein the fourth variable L is equal to 3 or 5.
[1035] 21. The method according to any one of solutions 11-20, wherein the first luminance ALF boundary is determined in the same manner for both cross-component ALF (CC-ALF) and luminance ALF.
[1036] 22. The method according to solution 21, wherein the first variable vbOffset is the same for both cross-component ALF (CC-ALF) and luminance ALF.
[1037] 23. The method according to solution 21, wherein the second variable M is the same for CC-ALF and luminance ALF.
[1038] 24. The method according to solution 21, wherein the third variable N is the same for CC-ALF and luminance ALF.
[1039] 25. The method according to solution 21, wherein the fourth variable L is the same for CC-ALF and luminance ALF.
[1040] 26. The method according to any one of solutions 11-20, wherein the second luminance ALF boundary used in the chroma ALF is determined based on the color format of the chroma ALF.
[1041] 27. The method according to solution 26, wherein, for a color format of 4:2:0, the second luminance ALF boundary is determined to be the same as the first luminance ALF boundary.
[1042] 28. The method according to solution 26 or 27, wherein, for a color format of 4:2:0, the first variable vbOffset is the same for both chroma ALF and luminance ALF.
[1043] 29. The method described in solution 28, wherein the first variable vbOffset is an integer.
[1044] 30. The method described in solution 28, wherein the first variable vboffset is 4.
[1045] 31. The method according to solution 26 or 27, wherein, for a color format of 4:2:0, the second variable M is the same for both chroma ALF and luminance ALF.
[1046] 32. The method described in solution 31, wherein the variable M is an integer.
[1047] 33. The method described in solution 31, wherein the variable M is 3.
[1048] 34. The method according to solution 26 or 27, wherein the third variable N is the same for chroma ALF and luminance ALF.
[1049] 35. The method described according to solution 26 or 27, wherein the fourth variable L is the same for both chromaticity ALF and luminance ALF.
[1050] 36. The method according to solution 26, wherein, for a color format of 4:2:2 or 4:4:4, the second luminance ALF boundary is determined to be different from the first luminance ALF boundary.
[1051] 37. The method according to solution 36, wherein, for a color format of 4:2:2 or 4:4:4, the first variable vbOffset has different values for chroma ALF and luminance ALF.
[1052] 38. The method according to solution 37, wherein vbOffset1 is used for chroma ALF, vbOffset2 is used for luminance ALF, and vbOffset1 is not equal to vbOffset2.
[1053] 39. The method described in solution 38, wherein vbOffset1 = 2 and vbOffset2 = 4.
[1054] 40. The method described in solution 36, wherein the first variable vbOffset has different values depending on whether the color format is the same as or different from 4:2:0.
[1055] 41. The method according to solution 36, wherein, for a color format of 4:2:2 or 4:4:4, each of the second variable M, the third variable N, and the fourth variable L has a different value for chroma ALF and luminance ALF.
[1056] 42. The method according to solution 41, wherein M1 is used for chromaticity ALF, M2 is used for luminance ALF, and M1 is not equal to M2.
[1057] 43. The method according to solution 42, wherein M1 = 2 and M2 = 3.
[1058] 44. The method according to solution 41, wherein N1 is used for chromaticity ALF, N2 is used for luminance ALF, and N1 is not equal to N2.
[1059] 45. The method according to solution 44, wherein N1 = 3 and N2 = 5.
[1060] 46. The method according to solution 41, wherein L1 is used for chromaticity ALF, L2 is used for luminance ALF, and L1 is not equal to L2.
[1061] 47. The method according to solution 46, wherein L1 = 3 and L2 = 5.
[1062] 48. The method according to solution 36, wherein each of the second variable M, the third variable N, and the fourth variable L has a different value depending on whether the color format is the same as or different from 4:2:0.
[1063] 49. The method according to solution 26, wherein, for a color format of 4:2:2 or 4:4:4, the second luminance ALF boundary is determined to be different from the first ALF luminance boundary used in cross-component ALF (CC-ALF).
[1064] 50. The method according to solution 49, wherein, for a color format of 4:2:2 or 4:4:4, the first variable vbOffset has different values for chroma ALF and CC-ALF.
[1065] 51. The method according to solution 50, wherein vbOffset1 is used for chroma ALF, vbOffset2 is used for CC-ALF, and vbOffset1 is not equal to vbOffset2.
[1066] 52. The method described in solution 51, wherein vbOffset1 = 2 and vbOffset2 = 4.
[1067] 53. The method according to solution 49, wherein the second variable M, the third variable N, and the fourth variable L have different values for chroma ALF and CC-ALF for color formats of 4:2:2 or 4:4:4.
[1068] 54. The method according to solution 53, wherein M1 is used for chroma ALF with a 4:2:2 or 4:4:4 color format, M2 is used for CC-ALF, and M2 is not equal to M1.
[1069] 55. The method according to solution 54, wherein M1 = 2 and M2 = 3.
[1070] 56. The method according to solution 53, wherein N1 is used for chroma ALF with a 4:2:2 or 4:4:4 color format, N2 is used for CC-ALF, and N1 is not equal to N2.
[1071] 57. The method described in solution 56, wherein N1 = 3 and N2 = 5.
[1072] 58. The method according to solution 53, wherein L1 is used for chroma ALF with a 4:2:2 or 4:4:4 color format, L2 is used for CC-ALF, and L1 is not equal to L2.
[1073] 59. The method described in solution 58, wherein L1 = 3 and L2 = 5.
[1074] 60. The method according to any one of the above solutions, wherein the method is applied to a 360-degree virtual boundary.
[1075] 61. The method according to any one of solutions 1 to 60, wherein the conversion includes encoding the video into a bitstream.
[1076] 62. The method according to any one of solutions 1 to 60, wherein the conversion includes decoding video from a bitstream.
[1077] 63. The method according to any one of solutions 1 to 60, wherein the conversion includes generating a bitstream from video, and the method further includes storing the bitstream in a non-transitory computer-readable recording medium.
[1078] 64. A video processing apparatus comprising a processor configured to implement the method according to any one or more of solutions 1 to 63.
[1079] 65. A method for storing a bitstream of video, comprising the method according to any one of solutions 1 to 63, and further comprising storing the bitstream to a non-transitory computer-readable recording medium.
[1080] 66. A computer-readable medium storing program code that, when executed, causes a processor to perform the method according to any one or more of solutions 1 to 63.
[1081] 67. A computer-readable medium storing a bit stream generated according to any one of the above methods.
[1082] 68. A video processing apparatus for storing bit streams, wherein the video processing apparatus is configured to implement the method according to any one or more of solutions 1 to 63.
[1083] In this document, the term "video processing" can refer to video encoding, video decoding, video compression, or video decompression. For example, a video compression algorithm can be applied during the conversion from the pixel representation of a video to its corresponding bitstream representation, and vice versa. As defined in the syntax, the bitstream representation of the current video block can, for example, correspond to bits juxtaposed or scattered in different places within the bitstream. For example, a macroblock can be encoded according to the error residuals of the transformation and encoding / decoding, and also using bits from the header and other fields in the bitstream.
[1084] The disclosed and other solutions, examples, embodiments, modules, and functional operations described herein can be implemented in digital electronic circuits, or in computer software, firmware, or hardware (including the structures disclosed herein and their equivalents), or in a combination of one or more of these. The disclosed and other embodiments can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer-readable medium for execution by or control of the operation of a data processing apparatus. The computer-readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a combination of substances influencing machine-readable propagation signals, or a combination of one or more of these. The term "data processing apparatus" includes all means, devices, and machines for processing data, including, for example, a programmable processor, a computer, or multiple processors or computers. In addition to hardware, the apparatus may also include code that creates an execution environment for the computer program in question, such as code constituting processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of these. Propagation signals are artificially generated signals, such as machine-generated electrical signals, optical signals, or electromagnetic signals, generated to encode information for transmission to a suitable receiver device.
[1085] Computer programs (also known as programs, software, software applications, scripts, or code) can be written in any programming language (including compiled or interpreted languages) and can be deployed in any form, including as standalone programs or as modules, components, subroutines, or other units suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program can be stored as part of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., a file storing one or more modules, subroutines, or code sections). A computer program can be deployed to execute on a single computer or on multiple computers located at a single site or distributed across multiple sites and interconnected via a communications network.
[1086] The processes and logic flows described herein can be executed by one or more programmable processors that execute one or more computer programs to perform functions by manipulating input data and generating outputs. The processes and logic flows can also be executed by dedicated logic circuits, and the devices can be implemented as dedicated logic circuits, such as FPGAs (Field-Programmable Gate Arrays) or ASICs (Application-Specific Integrated Circuits).
[1087] Processors suitable for executing computer programs include, for example, general-purpose and special-purpose microprocessors, and any one or more processors of any type of digital computer. Typically, a processor receives instructions and data from read-only memory or random access memory, or both. The basic components of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Typically, a computer will also include one or more mass storage devices (e.g., magnetic disks, magneto-optical disks, or optical disks) for storing data, or operatively coupled to receive data from, transfer data to, or receive data from and transfer data to such mass storage devices. However, a computer does not require such devices. Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and memory devices, including, for example, semiconductor memory devices such as EPROM, EEPROM, and flash memory devices; magnetic disks, such as internal hard disks or removable disks; magneto-optical disks; and CD-ROMs and DVD-ROMs. The processor and memory may be supplemented by or incorporated into special-purpose logic circuitry.
[1088] While this patent document contains numerous details, these details should not be construed as limiting any subject matter or potentially claimed scope, but rather as descriptions of features specific to particular embodiments of a particular art. Certain features described in this patent document within the context of individual embodiments may also be implemented in combination in a single embodiment. Conversely, various features described in the context of a single embodiment may also be implemented individually in multiple embodiments or in any suitable sub-combination. Furthermore, although features may be described above as functioning in certain combinations and even initially claimed in this way, in some cases one or more features from the claimed combination may be excluded from the combination, and the claimed combination may be for sub-combinations or variations thereof.
[1089] Similarly, although operations are depicted in a specific order in the accompanying drawings, this should not be construed as requiring the operations to be performed in the specific order shown or in a sequential manner, or as performing all shown operations to achieve the desired result. Furthermore, the separation of various system components in the embodiments described in this patent document should not be construed as requiring such separation in all embodiments.
[1090] Only some implementation methods and examples are described, and other implementation methods, enhancements and variations can be made based on the content described and shown in this patent document.
Claims
1. A video processing method, comprising: For the conversion between the video unit of the video and the bitstream of the video, a first determination is made of the position of the first luminance adaptive loop filter (ALF) boundary and the position of the second luminance ALF boundary, wherein the position of the first luminance ALF boundary is used to selectively apply to the luminance adaptive loop filter of the luminance component of the video unit. A second determination of the position of the chroma ALF boundary is made from the position of the second luminance ALF boundary, wherein the position of the chroma ALF boundary is used to selectively apply to the chroma adaptive loop filter of the chroma component of the video unit; and The conversion is performed based on the first determination and the second determination. The positions of the first luminance ALF boundary and / or the second luminance ALF boundary are based on a first variable, vbOffset, which specifies the offset of the ALF virtual boundary or the distance between the ALF virtual boundary and the bottom boundary of the current codec tree unit (CTU). Where (x, y) refers to the luminance position of the current sample relative to the left-top sample of the current luminance codec block (CTB), (xCtb, yCtb) refers to the luminance position of the left-top sample of the current luminance CTB relative to the left-top sample of the current image, and CtbSizeY refers to the size of the current luminance CTB. Where y − (CtbSizeY − vbOffset) is greater than or equal to 0, the top boundary position of the first luminance ALF boundary and / or the second luminance ALF boundary is set to be equal to yCtb + CtbSizeY − vbOffset; or The top boundary position is set to equal yCtb if i) the top boundary of the current luminance CTB is the top boundary of a slice, strip, or sub-image, ii) adaptive loop filtering across the slice, strip, or sub-image is disabled, and iii) y is less than a second variable M, wherein the second variable M is an integer.
2. The method according to claim 1, wherein, The location of the first luminance ALF boundary is also used for cross-component ALF (CC-ALF).
3. The method according to claim 1, wherein, The position of the second luminance ALF boundary is determined based on the color format.
4. The method according to claim 1, wherein, The position of the second luminance ALF boundary in the 4:2:0 color format is determined to be the same as the position of the first luminance ALF boundary; or The position of the second luminance ALF boundary in the 4:2:2 or 4:4:4: color format is determined to be different from the position of the first luminance ALF boundary.
5. The method according to claim 1, wherein, The position of the first brightness ALF boundary and / or the position of the second brightness ALF boundary refers to the top boundary position, bottom boundary position, left boundary position, or right boundary position.
6. The method according to claim 1, wherein, The second variable M equals 3.
7. The method according to claim 1, wherein, When CtbSizeY − vbOffset − y is greater than 0 and less than the third variable N, the bottom boundary position is set to be equal to yCtb + CtbSizeY − vbOffset, where the third variable N is an integer, or The bottom boundary position is set to equal yCtb + CtbSizeY if i) the bottom boundary of the current luminance CTB is the bottom boundary of a slice, strip, or sub-image, ii) adaptive loop filtering across the slice, strip, or sub-image is disabled, and iii) CtbSizeY − y is less than the fourth variable L.
8. The method according to claim 7, wherein, The third variable N and the fourth variable L are both equal to 5.
9. The method according to claim 1, wherein, The first variable vbOffset is the same for both the cross-component ALF (CC-ALF) and the luminance ALF.
10. The method according to claim 1, wherein, For a 4:2:0 color format, the first variable vbOffset has the same position for the first luminance ALF boundary and the second luminance ALF boundary, and the first variable vbOffset is 4, or For a color format of 4:2:2 or 4:4:4, the first variable vbOffset for the position of the second luminance ALF boundary is determined to be different from the first variable vbOffset for the position of the first luminance ALF boundary, where the first variable vbOffset for the position of the second luminance ALF boundary is equal to 2 and the first variable vbOffset for the position of the first luminance ALF boundary is equal to 4.
11. The method according to any one of claims 1 to 10, wherein, The conversion includes encoding the video into the bitstream.
12. The method according to any one of claims 1 to 10, wherein, The conversion includes decoding the video from the bitstream.
13. An apparatus for processing video data, comprising a processor and a non-transitory memory having instructions thereon, wherein, When the instruction is executed by the processor, the processor: For the conversion between the video unit of the video and the bitstream of the video, a first determination is made of the position of the first luminance adaptive loop filter (ALF) boundary and the position of the second luminance ALF boundary, wherein the position of the first luminance ALF boundary is used to selectively apply to the luminance adaptive loop filter of the luminance component of the video unit. A second determination of the position of the chroma ALF boundary is made from the position of the second luminance ALF boundary, wherein the position of the chroma ALF boundary is used to selectively apply to the chroma adaptive loop filter of the chroma component of the video unit; and The conversion is performed based on the first determination and the second determination. The positions of the first luminance ALF boundary and / or the second luminance ALF boundary are based on a first variable, vbOffset, which specifies the offset of the ALF virtual boundary or the distance between the ALF virtual boundary and the bottom boundary of the current codec tree unit (CTU). Where (x, y) refers to the luminance position of the current sample relative to the left-top sample of the current luminance codec block (CTB), (xCtb, yCtb) refers to the luminance position of the left-top sample of the current luminance CTB relative to the left-top sample of the current image, and CtbSizeY refers to the size of the current luminance CTB. Where y − (CtbSizeY − vbOffset) is greater than or equal to 0, the top boundary position of the first luminance ALF boundary and / or the second luminance ALF boundary is set to be equal to yCtb + CtbSizeY − vbOffset; or The top boundary position is set to equal yCtb if i) the top boundary of the current luminance CTB is the top boundary of a slice, strip, or sub-image, ii) adaptive loop filtering across the slice, strip, or sub-image is disabled, and iii) y is less than a second variable M, wherein the second variable M is an integer.
14. The apparatus according to claim 13, wherein, The position of the first luminance ALF boundary is also used for cross-component ALF (CC-ALF). The position of the second luminance ALF boundary is determined based on the color format; The position of the second luminance ALF boundary in the 4:2:0 color format is determined to be the same as the position of the first luminance ALF boundary, or the position of the second luminance ALF boundary in the 4:2:2 or 4:4:4 color format is determined to be different from the position of the first luminance ALF boundary. The position of the first brightness ALF boundary and / or the position of the second brightness ALF boundary refer to the top boundary position, bottom boundary position, left boundary position or right boundary position; When CtbSizeY − vbOffset − y is greater than 0 and less than the third variable N, the bottom boundary position is set to equal yCtb + CtbSizeY − vbOffset, where the third variable N is an integer; or, when i) the bottom boundary of the current luminance CTB is the bottom boundary of a patch, strip, or sub-picture, ii) adaptive loop filtering across the patch, strip, or sub-picture is disabled, and iii) CtbSizeY − y is less than the fourth variable L, the bottom boundary position is set to equal yCtb + CtbSizeY, where the fourth variable L is an integer, and the third variable N and the fourth variable L are equal to 5; The first variable, vbOffset, is the same for both the cross-component ALF (CC-ALF) and the luma ALF; or For the color format of 4:2:0, the first variable vbOffset is the same for the positions of the first luminance ALF boundary and the second luminance ALF boundary, and the first variable vbOffset is 4. Alternatively, for the color format of 4:2:2 or 4:4:4, the first variable vbOffset for the position of the second luminance ALF boundary is determined to be different from the first variable vbOffset for the position of the first luminance ALF boundary, where the first variable vbOffset for the position of the second luminance ALF boundary is equal to 2, and the first variable vbOffset for the position of the first luminance ALF boundary is equal to 4.
15. A non-transitory computer-readable storage medium for storing instructions, said instructions causing a processor to: For the conversion between video units and the video bitstream, a first determination is made regarding the positions of the first luminance adaptive loop filter (ALF) boundary and the second luminance ALF boundary, wherein, The position of the first luminance ALF boundary is used to selectively apply a luminance adaptive loop filter to the luminance component of the video unit; A second determination of the position of the chroma ALF boundary is made from the position of the second luminance ALF boundary, wherein the position of the chroma ALF boundary is used to selectively apply to the chroma adaptive loop filter of the chroma component of the video unit; and The conversion is performed based on the first determination and the second determination. The positions of the first luminance ALF boundary and / or the second luminance ALF boundary are based on a first variable, vbOffset, which specifies the offset of the ALF virtual boundary or the distance between the ALF virtual boundary and the bottom boundary of the current codec tree unit (CTU). Where (x, y) refers to the luminance position of the current sample relative to the left-top sample of the current luminance codec block (CTB), (xCtb, yCtb) refers to the luminance position of the left-top sample of the current luminance CTB relative to the left-top sample of the current image, and CtbSizeY refers to the size of the current luminance CTB. Where y − (CtbSizeY − vbOffset) is greater than or equal to 0, the top boundary position of the first luminance ALF boundary and / or the second luminance ALF boundary is set to be equal to yCtb + CtbSizeY − vbOffset; or The top boundary position is set to equal yCtb if i) the top boundary of the current luminance CTB is the top boundary of a slice, strip, or sub-image, ii) adaptive loop filtering across the slice, strip, or sub-image is disabled, and iii) y is less than a second variable M, wherein the second variable M is an integer.
16. The non-transitory computer-readable storage medium according to claim 15, wherein, The position of the first luminance ALF boundary is also used for cross-component ALF (CC-ALF). The position of the second luminance ALF boundary is determined based on the color format; The position of the second luminance ALF boundary in the 4:2:0 color format is determined to be the same as the position of the first luminance ALF boundary, or the position of the second luminance ALF boundary in the 4:2:2 or 4:4:4 color format is determined to be different from the position of the first luminance ALF boundary. The position of the first brightness ALF boundary and / or the position of the second brightness ALF boundary refer to the top boundary position, bottom boundary position, left boundary position or right boundary position; When CtbSizeY − vbOffset − y is greater than 0 and less than the third variable N, the bottom boundary position is set to equal yCtb + CtbSizeY − vbOffset, where the third variable N is an integer; or, when i) the bottom boundary of the current luminance CTB is the bottom boundary of a patch, strip, or sub-picture, ii) adaptive loop filtering across the patch, strip, or sub-picture is disabled, and iii) CtbSizeY − y is less than the fourth variable L, the bottom boundary position is set to equal yCtb + CtbSizeY, where the fourth variable L is an integer, and the third variable N and the fourth variable L are equal to 5; The first variable, vbOffset, is the same for both the cross-component ALF (CC-ALF) and the luma ALF; or For the color format of 4:2:0, the first variable vbOffset is the same for the positions of the first luminance ALF boundary and the second luminance ALF boundary, and the first variable vbOffset is 4. Alternatively, for the color format of 4:2:2 or 4:4:4, the first variable vbOffset for the position of the second luminance ALF boundary is determined to be different from the first variable vbOffset for the position of the first luminance ALF boundary, where the first variable vbOffset for the position of the second luminance ALF boundary is equal to 2, and the first variable vbOffset for the position of the first luminance ALF boundary is equal to 4.
17. A non-transitory computer-readable recording medium having a computer program and a bit stream stored thereon, the computer program, when executed by a processor, causing the processor to perform a method to generate the bit stream, the method comprising: For a video unit of a video, a first determination is made of the position of the first luminance adaptive loop filter (ALF) boundary and the position of the second luminance ALF boundary, wherein the position of the first luminance ALF boundary is used to selectively apply to the luminance adaptive loop filter of the luminance component of the video unit. A second determination of the position of the chroma ALF boundary is made from the position of the second luminance ALF boundary, wherein the position of the chroma ALF boundary is used to selectively apply to the chroma adaptive loop filter of the chroma component of the video unit; and The bitstream of the video is generated based on the first determination and the second determination. The positions of the first luminance ALF boundary and / or the second luminance ALF boundary are based on a first variable, vbOffset, which specifies the offset of the ALF virtual boundary or the distance between the ALF virtual boundary and the bottom boundary of the current codec tree unit (CTU). Where (x, y) refers to the luminance position of the current sample relative to the left-top sample of the current luminance codec block (CTB), (xCtb, yCtb) refers to the luminance position of the left-top sample of the current luminance CTB relative to the left-top sample of the current image, and CtbSizeY refers to the size of the current luminance CTB. Where y − (CtbSizeY − vbOffset) is greater than or equal to 0, the top boundary position of the first luminance ALF boundary and / or the second luminance ALF boundary is set to be equal to yCtb + CtbSizeY − vbOffset; or The top boundary position is set to equal yCtb if i) the top boundary of the current luminance CTB is the top boundary of a slice, strip, or sub-image, ii) adaptive loop filtering across the slice, strip, or sub-image is disabled, and iii) y is less than a second variable M, wherein the second variable M is an integer.
18. The non-transitory computer-readable recording medium according to claim 17, wherein, The position of the first luminance ALF boundary is also used for cross-component ALF (CC-ALF). The position of the second luminance ALF boundary is determined based on the color format; The position of the second luminance ALF boundary in the 4:2:0 color format is determined to be the same as the position of the first luminance ALF boundary, or the position of the second luminance ALF boundary in the 4:2:2 or 4:4:4 color format is determined to be different from the position of the first luminance ALF boundary. The position of the first brightness ALF boundary and / or the position of the second brightness ALF boundary refer to the top boundary position, bottom boundary position, left boundary position or right boundary position; When CtbSizeY − vbOffset − y is greater than 0 and less than the third variable N, the bottom boundary position is set to equal yCtb + CtbSizeY − vbOffset, where the third variable N is an integer; or, when i) the bottom boundary of the current luminance CTB is the bottom boundary of a patch, strip, or sub-picture, ii) adaptive loop filtering across the patch, strip, or sub-picture is disabled, and iii) CtbSizeY − y is less than the fourth variable L, the bottom boundary position is set to equal yCtb + CtbSizeY, where the fourth variable L is an integer, and the third variable N and the fourth variable L are equal to 5; The first variable, vbOffset, is the same for both the cross-component ALF (CC-ALF) and the luma ALF; or For the color format of 4:2:0, the first variable vbOffset is the same for the positions of the first luminance ALF boundary and the second luminance ALF boundary, and the first variable vbOffset is 4. Alternatively, for the color format of 4:2:2 or 4:4:4, the first variable vbOffset for the position of the second luminance ALF boundary is determined to be different from the first variable vbOffset for the position of the first luminance ALF boundary, where the first variable vbOffset for the position of the second luminance ALF boundary is equal to 2, and the first variable vbOffset for the position of the first luminance ALF boundary is equal to 4.
19. A method for storing a bitstream of video, comprising: For each video unit of the video, a first determination is made regarding the position of the first luminance adaptive loop filter (ALF) boundary and the position of the second luminance ALF boundary, wherein... The position of the first luminance ALF boundary is used to selectively apply a luminance adaptive loop filter to the luminance component of the video unit; A second determination of the position of the chroma ALF boundary is made from the position of the second luminance ALF boundary, wherein the position of the chroma ALF boundary is used to selectively apply to the chroma adaptive loop filter of the chroma component of the video unit; The bitstream of the video is generated based on the first determination and the second determination; and The bitstream is stored in a non-transitory computer-readable recording medium. The positions of the first luminance ALF boundary and / or the second luminance ALF boundary are based on a first variable, vbOffset, which specifies the offset of the ALF virtual boundary or the distance between the ALF virtual boundary and the bottom boundary of the current codec tree unit (CTU). Where (x, y) refers to the luminance position of the current sample relative to the left-top sample of the current luminance codec block (CTB), (xCtb, yCtb) refers to the luminance position of the left-top sample of the current luminance CTB relative to the left-top sample of the current image, and CtbSizeY refers to the size of the current luminance CTB. Where y − (CtbSizeY − vbOffset) is greater than or equal to 0, the top boundary position of the first luminance ALF boundary and / or the second luminance ALF boundary is set to be equal to yCtb + CtbSizeY − vbOffset; or The top boundary position is set to equal yCtb if i) the top boundary of the current luminance CTB is the top boundary of a slice, strip, or sub-image, ii) adaptive loop filtering across the slice, strip, or sub-image is disabled, and iii) y is less than a second variable M, wherein the second variable M is an integer.