Signaling of cross-component adaptive loop filter
By refining and correcting the luminance and chrominance components using a cross-component adaptive loop filter tool, the problem of difficulty in reducing artifacts in chrominance component sub-sampling and filtering processing in existing technologies is solved, thereby improving encoding and decoding efficiency and video quality.
Patent Information
- Application Number
- CN202080076587.8
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-10-29
- Filing Date
- 2020-10-29
- Publication Date
- 2025-12-12
- Estimated Expiration
- 2040-10-29
AI Technical Summary
Existing video encoding and decoding technologies struggle to effectively reduce artifacts and improve encoding and decoding efficiency when processing video signals, especially in the subsampling and filtering of chroma components.
The Cross-Component Adaptive Loop Filter (CC-ALF) tool is used to refine and correct the sample values of the luminance and chrominance components, and to perform filtering processing using an adaptive parameter set and filter to adapt to the characteristics of different video regions.
It improves artifact correction in the video encoding and decoding process, enhances encoding and decoding efficiency and video quality, and reduces bandwidth requirements.
Smart Images

Figure CN115244924B_ABST
Abstract
Description
[0001] Cross Reference to Related Applications
[0002] This application is a national stage entry of International Patent Application No. PCT / CN2020 / 124705, filed October 29, 2020, which claims priority to International Patent Application No. PCT / CN2019 / 113955, filed October 29, 2019. The entire disclosure of the above applications is incorporated by reference as part of the disclosure of this application. TECHNICAL FIELD
[0003] This patent document relates to encoding and decoding of images and video. BACKGROUND
[0004] Digital video accounts for the largest bandwidth use on the internet and other digital communication networks. As the number of connected user devices capable of receiving and displaying video increases, it is expected that bandwidth demand for digital video usage will continue to grow. SUMMARY
[0005] This document discloses techniques that can be used by video encoders and decoders to perform cross-component adaptive loop filtering during video encoding or decoding.
[0006] In one example aspect, a method of video processing is disclosed. The method includes, for a conversion between a video region of a video and a bitstream representation of the video, making a determination to use a cross-component adaptive loop filtering (CC-ALF) tool to refine chroma sample values using luma sample values; and performing the conversion based on the determination, wherein the refining includes correcting the chroma sample values using a final refinement determined by a further refinement of a first refinement value determined by selectively filtering the luma sample values.
[0007] In another example aspect, another method of video processing is disclosed. The method includes, for a conversion between a video region of a video and a bitstream representation of the video, making a determination to use a cross-component adaptive loop filtering (CC-ALF) tool to correct sample values of a first video block of a first component using sample values of a second video block of a second component; and performing the conversion based on the determination; wherein the CC-ALF tool is used except when both 1) where the first component is a Cr or Cb component and 2) the second component is a Y component are satisfied.
[0008] In yet another example aspect, another video processing method is disclosed. The method includes, for a conversion between a video unit of a video and a bitstream representation of the video, making a determination to use a cross-component adaptive loop filter (CC-ALF) tool to correct sample values of a first component using sample values of a second component according to a rule; and performing the conversion based on the determination; wherein the rule specifies to use two or more ALF adaptation parameter sets (APSs), the two or more ALF APSs including a first ALF APS and a second ALF APS in the bitstream representation.
[0009] In yet another example aspect, another video processing method is disclosed. The method includes, for a conversion between a video region of a video and a bitstream representation of the video, making a determination to use a cross-component adaptive loop filter (CC-ALF) tool to correct sample values of a first component using sample values of a second component according to a rule; and performing the conversion based on the determination; wherein the rule specifies to use two or more CC-ALF filters, the two or more CC-ALF filters including a first CC-ALF filter applied to first samples in the video region and a second CC-ALF filter applied to second samples in the video region.
[0010] In yet another example aspect, another video processing method is disclosed. The method includes, for a conversion between a video region of a video and a bitstream representation of the video, deriving a first offset for a first color component of the video region based on luma samples of the video region; deriving a second offset for a second color component of the video region based on the first offset; and performing the conversion by applying a cross-component adaptive loop filter (CC-ALF) tool to correct the first color component and the second color component based on the luma samples of the video region.
[0011] In yet another example aspect, another video processing method is disclosed. The method includes, for a conversion between a video block of a video comprising a plurality of components and a bitstream representation of the video, determining to use a cross-component adaptive loop filter (CC-ALF) tool at an MxN subblock level, M and N being positive integers, where at least one of M and N is greater than 1; and performing the conversion based on the determination, wherein the CC-ALF tool is used to correct MxN subblock samples of a first component of the video based on a second component of the video.
[0012] In yet another example aspect, another video processing method is disclosed. The method includes determining, for a conversion between a video region of a video and a bitstream representation of the video, to use a cross-component adaptive loop filter (CC-ALF) process based on a difference value filtering of luma samples to correct chroma samples of the video region, and performing the conversion based on the determination.
[0013] In yet another example aspect, another video processing method is disclosed. The method includes performing a conversion between a portion of a chroma component of a video and a bitstream representation of the video according to a rule, wherein the rule specifies whether a cross-component adaptive loop filter (CC-ALF) tool is available for the conversion of the portion of the video depends on whether an availability or usage of an adaptive loop filter (ALF) tool is indicated for a corresponding portion of a luma component.
[0014] In yet another example aspect, another video processing method is disclosed. The method includes performing a conversion between a video region of a video and a bitstream representation of the video, wherein the bitstream representation conforms to a format rule that specifies whether an inclusion of a syntax element indicating a usage of a cross-component adaptive loop filter (CC-ALF) tool in the bitstream representation depends on a number of available adaptive loop filter (ALF) adaptation parameter sets (APSs).
[0015] In yet another example aspect, another video processing method is disclosed. The method includes performing a conversion between a video unit of a video and a bitstream representation of the video, wherein the bitstream representation conforms to a format rule that specifies an applicability of a cross-component adaptive loop filter (CC-ALF) tool that refines sample values of a first component using sample values of a second component is included in the bitstream representation at a video unit level that is different from a slice level.
[0016] In yet another example aspect, another video processing method is disclosed. The method includes performing a conversion between a video region of a video and a bitstream representation of the video, wherein the bitstream representation conforms to a format rule that specifies whether a syntax element indicating a usage of a cross-component adaptive loop filter (CC-ALF) tool in the bitstream representation depends on an availability of an adaptive loop filter (ALF) tool for a corresponding portion of a luma component.
[0017] In yet another example aspect, another video processing method is disclosed. The method includes performing a conversion between a video region of a video and a bitstream representation of the video, wherein the bitstream representation conforms to a format rule, the format rule specifies that the bitstream representation includes an adaptation parameter set (APS) that includes a syntax element to indicate whether the APS contains information related to a cross-component adaptive loop filter (CC-ALF) tool.
[0018] In yet another example aspect, another video processing method is disclosed. The method includes determining that an exclusion rule applies to a conversion between a video region of a video and a bitstream representation of the video, wherein the exclusion rule specifies that the conversion does not allow a coding tool and a cross-component adaptive loop filter (CC-ALF) tool to be used together for the video region; and performing the conversion based on the determination.
[0019] In yet another example aspect, another video processing method is disclosed. The method includes performing, for a conversion between a chroma block of a video and a bitstream representation of the video, in accordance with a rule, wherein, during the conversion, a cross-component adaptive loop filter (CC-ALF) tool is used to determine a prediction of the chroma block based on samples of a luma block; and wherein the rule specifies the luma block used for the prediction and / or an order in which the CC-ALF tool is used during the conversion.
[0020] In yet another example aspect, another video processing method is disclosed. The method includes determining, in accordance with a rule, an order of an adaptive loop filter (ALF) processing a chroma component and a cross-component adaptive loop filter (CC-ALF) of the chroma component; and performing a conversion between a video and a bitstream representation of the video based on the determination, wherein the rule specifies whether the order is predefined or adaptively changed at a video region of the video, the video region having a size of MxN, and M and N are positive integers.
[0021] In yet another example aspect, another video processing method is disclosed. The method includes performing a conversion between a video region of a video and a bitstream representation of the video, wherein the bitstream representation conforms to a format rule, the format rule specifies that a syntax element is included in the bitstream representation, the syntax element indicating usage of an adaptive loop filter (ALF) and a cross-component adaptive loop filter (CC-ALF) for one chroma component.
[0022] In yet another example aspect, a video encoder apparatus is disclosed. The video encoder includes a processor configured to implement a method recited above.
[0023] In yet another example aspect, a video decoder apparatus is disclosed. The video decoder includes a processor configured to implement a method recited above.
[0024] In yet another example aspect, a computer readable medium having code stored thereon is disclosed. The code embodies one of the methods described herein in the form of processor-executable code.
[0025] These, additional, and other features are described throughout the present document. BRIEF DESCRIPTION OF DRAWINGS
[0026] Figure 1 An example of a video encoder is shown.
[0027] Figure 2 An example shape of a geometry transform based adaptive loop filter is shown.
[0028] Figures 3A to 3D An example of a sub-sampled Laplacian computation example is shown.
[0029] Figure 4A And Figure 4B An example of adaptive loop filter arrangement and shape is shown.
[0030] Figure 5 An example of an adaptive loop filter is shown.
[0031] Figure 6 And Figure 7 A block diagram of an example of a hardware platform for implementing a video decoder or video encoder apparatus described herein.
[0032] Figure 8 A block diagram showing an example video codec system.
[0033] Figure 9 A block diagram showing an encoder in accordance with some embodiments of the present disclosure.
[0034] Figure 10 A block diagram showing a decoder in accordance with some embodiments of the present disclosure.
[0035] Figure 11 A flowchart of an example method of video processing based on some implementations of the present technology.
[0036] Figures 12A to 12D A flowchart of an example method of video processing based on some implementations of the present technology.
[0037] Figure 13 A flowchart of an example method of video processing based on some implementations of the present technology.
[0038] Figures 14A to 14CA flowchart of an example method for video processing based on some embodiments of the disclosed technology. DETAILED DESCRIPTION
[0039] For ease of understanding, section headings are used in this document, and the teachings and embodiments disclosed in each section are not meant to be limited to the section in which the teachings and embodiments are disclosed. Further, the use of H.266 terminology in some descriptions is merely for ease of understanding and is not meant to limit the scope of the disclosed technology. As such, the technology described herein is applicable to other video codec designs as well.
[0040] 1. OVERVIEW
[0041] This patent document relates to video coding technology. In particular, it relates to cross-component adaptive loop filter in image / video coding. It can be applied to existing video coding standards (such as HEVC), or standards under development (Versatile Video Coding). It can also be applied to future video coding standards or video codecs.
[0042] 2. BACKGROUND
[0043] Video coding standards have evolved primarily through the development of the well-known ITU-T and ISO / IEC standards. ITU-T produced H.261 and H.263, ISO / IEC produced MPEG-1 and MPEG-4 Visual, and the two organizations jointly produced the H.262 / MPEG-2 Video and H.263 / MPEG-4 Advanced Video Coding (AVC) and H.265 / HEVC standards. Since H.262, the video coding standards are based on the hybrid video coding structure wherein temporal prediction plus transform coding are employed. To explore future video coding technologies beyond HEVC, the Joint Video Exploration Team (JVET) was founded by VCEG and MPEG jointly in 2015. Since then, many new methods have been adopted by JVET and brought into the reference software named Joint Exploration Model (JEM). In April 2018, the Joint
[0044] 2.1. Color Space and Chroma Subsampling
[0045] A color space, also called a color model (or a color system), is an abstract mathematical model that simply describes the range of colors as tuples of numbers, usually 3 or 4 values or color components (e.g., RGB). Fundamentally, a color space is an elaboration of a coordinate system and a subspace.
[0046] For video compression, the most commonly used color spaces are YCbCr and RGB. YCbCr, Y'CbCr, or Y Pb / Cb Pr / Cr, also known as YCBCR or Y'CBCR, is a family of color spaces 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-difference and red-difference chrominance components. Y' (with a prime) is different from Y (Y is luminance), which means that the light intensity is non-linearly encoded based on the gamma-corrected RGB primaries.
[0047] Chroma subsampling is a practice of encoding images with lower precision for chrominance information than for luminance information, exploiting the fact that the human visual system is less sensitive to color differences than to light intensity. 2.1.1 4:4:4
[0049] Each of the three Y'CbCr components has the same sample rate, so there is no chroma subsampling. This scheme is sometimes used for high-end film scanners and post-production of movies. 2.1.2 4:2:2
[0051] The two chroma components are sampled at half the rate of the luminance samples: horizontal chroma precision is halved. This reduces the bandwidth of the uncompressed video signal by a third with little visual difference. 2.1.3 4:2:0
[0053] In 4:2:0, the horizontal sampling is doubled compared to 4:1:1, but the vertical precision is halved since the Cb and Cr channels are only sampled on every other line in this scheme. So the data rate is the same. Both Cb and Cr are subsampled by a factor of 2 in both the horizontal and vertical directions. There are three variants of the 4:2:0 scheme with different horizontal and vertical addressing.
[0054] • In MPEG-2, Cb and Cr are co-located in the horizontal direction. Cb and Cr are located between pixels in the vertical direction (in the gaps).
[0055] • In JPEG / JIF, H.261, and MPEG-1, Cb and Cr are located in the gaps, halfway between the alternating luminance samples.
[0056] • In 4:2:0 DV, Cb and Cr are co-located in the horizontal direction. In the vertical direction, they are co-located on the alternating lines.
[0057] 2.1.4 Encoding of different color components
[0058] The value of the variable ChromaArrayType is assigned as follows, depending on the value of separate_colour_plane_flag:
[0059] If separate_colour_plane_flag is equal to 0, ChromaArrayType is set equal to chroma_format_idc.
[0060] Otherwise (separate_colour_plane_flag is equal to 1), ChromaArrayType is set equal to 0.
[0061] 2.2 Coding process of a typical video codec
[0062] Figure 1 An example of the encoder block diagram of VVC is shown, which contains three in-loop filters: Deblocking Filter (DF), Sample Adaptive Offset (SAO) and ALF. Unlike DF which uses a pre-defined filter, SAO and ALF exploit the original samples of the current picture to add an offset and apply a Finite Impulse Response (FIR) filter, respectively, by signaling the coding side information of the offset and filter coefficients, to reduce the mean square error between the original and reconstructed samples. ALF is located at the last processing stage of each picture and can be regarded as a tool trying to capture and fix the artifacts caused by the previous stages.
[0063] 2.3 Geometry-based Adaptive Loop Filter in JEM
[0064] In JEM, a geometry-based adaptive loop filter (GALF) is applied, which has a block-based filter adaptation. For the luma component, a local gradient-based direction and activity are used to select one of 25 filters for each 2x2 block.
[0065] 2.3.1 Filter shape
[0066] In JEM, up to three diamond filter shapes (as shown in Figure 2 ) can be selected for the luma component. An index is signaled at the picture level to indicate the filter shape used for the luma component.
[0067] Figure 2 An example of GALF filter shapes is shown (left: 5x5 diamond, middle: 7x7 diamond, right: 9x9 diamond).
[0068] For the chroma components in a picture, the 5x5 diamond shape is always used.
[0069] 2.3.1.1 Block classification
[0070] Each 2x2 block is classified into one of 25 categories. The classification index C is based on the quantized values of its directionality D and activity A The derived values are as follows:
[0071]
[0072] To compute D and A, the gradients in the horizontal, vertical and two diagonal directions are computed. First, the 1-D Laplacian is used to compute the gradients in the horizontal, vertical and two diagonal directions:
[0073]
[0074]
[0075]
[0076]
[0077] The indices i and j refer to the coordinates of the top-left sample in the 2x2 block, and R(i,j) indicates the reconstructed sample at coordinates (i,j).
[0078] The maximum and minimum values of the gradients in the horizontal and vertical directions are then set as follows:
[0079]
[0080] And the maximum and minimum values of the gradients in the two diagonal directions are set as follows:
[0081]
[0082] To derive the value of the directionality D, these values are compared to each other and to two thresholds t1 and t2:
[0083] Step 1 : If and are both true, then D is set to 0.
[0084] Step 2: If then continue with Step 3; otherwise continue with Step 4.
[0085] Step 3: If then D is set to 2; otherwise D is set to 1.
[0086] Step 4: If then D is set to 4; otherwise D is set to 3.
[0087] The activity value A is computed as follows:
[0088]
[0089] A is further quantized to the range of 0 to 4, inclusive, and the quantized value is denoted as
[0090] For two chroma components in a picture, the classification method is not applied, i.e., a single set of ALF coefficients is applied for each chroma component.
[0091] 2.3.1.2 Geometric transformation of filter coefficients
[0092] Before filtering each 2x2 block, a geometric transformation such as rotation or diagonal and vertical flip is applied to the filter coefficients f(k,l) depending on the gradient value computed for the block. This is equivalent to applying these transformations to the samples in the filter support region. The idea is to make different blocks with ALF applied more similar by aligning their directionality.
[0093] Three geometric transformations are introduced, including diagonal, vertical flip and rotation:
[0094]
[0095] where K is the size of the filter and 0≤k,l≤K-1 are the coefficient coordinates, such that position (0,0) is at the top-left corner and position (K-1,K-1) is at the bottom-right corner. A transformation is applied to the filter coefficients f(k,l) depending on the gradient value computed for the block. Table 1 summarizes the mapping between the four gradients and the four transformations.
[0096] Table 1: Mapping of the gradients computed for a block to the transformations
[0097] Gradient value Transform g d2 g d1 and g h g v ]]> No transform g d2 g d1 and g v g h ]]> Diagonal g d1 g d2 and g h g v ]]> Vertical flip g d1 g d2 and g v g h ]]> Rotation
[0098] 2.3.1.3 Filter parameter signaling
[0099] In JEM, the GALF filter parameters are signaled for the first CTU, i.e., after the slice header and before the SAO parameters of the first CTU. Up to 25 sets of luma filter coefficients can be signaled. To reduce the bit overhead, filter coefficients of different classes can be merged. In addition, the GALF coefficients of a reference picture are stored and allowed to be reused as the GALF coefficients of the current picture. The current picture can choose to use the stored GALF coefficients of a reference picture and bypass the GALF coefficient signaling. In this case, only the index of one of the reference pictures is signaled and the stored GALF coefficients of the indicated reference picture are inherited for the current picture.
[0100] To support GALF temporal prediction, a candidate list of GALF filter sets is maintained. At the beginning of the decoding of a new sequence, the candidate list is empty. After the decoding of a picture, the corresponding filter set can be added to the candidate list. Once the size of the candidate list reaches the maximum allowed value (i.e. 6 in the current JEM), a new filter set overrides the oldest set in the decoding order, that is, a first-in-first-out (FIFO) rule applies to update the candidate list. To avoid duplication, a set is only added to the list if the corresponding picture does not use GALF temporal prediction. To support temporal scalability, there are multiple candidate lists of filter sets and each candidate list is associated with a temporal layer. More specifically, each array assigned by the temporal layer index (TempIdx) can consist of filter sets with previously decoded pictures equal to lower TempIdx. For example, the k-th array is assigned to be associated with TempIdx equal to k and it only contains filter sets from pictures with TempIdx smaller than or equal to k. After a certain picture is coded, the filter set associated with this picture will be used to update those arrays associated with equal or higher TempIdx.
[0101] Temporal prediction of GALF coefficients is used for inter-coded frames to minimize the signaling overhead. For intra frames, temporal prediction is not available and 16 fixed filter sets are assigned to each category. To indicate the use of fixed filters, a flag is signaled for each category and, if needed, the index of the selected fixed filter is signaled. Even if a fixed filter is selected for a given category, it is still possible to send the coefficients of the adaptive filter f(k,l) for this category, in which case the coefficients of the filter applied to the reconstructed image are the sum of the two sets of coefficients.
[0102] The filtering process for the luma component can be controlled at the CU level. A flag is signaled to indicate whether GALF is applied to the luma component of a CU. For the chroma components, it is only indicated at the picture level whether GALF is applied.
[0103] 2.3.1.4 Filtering process
[0104] At the decoding side, when GALF is enabled for a block, each sample R(i,j) within the block is filtered, resulting in a sample value R'(i,j) as shown below, where L denotes the filter length, f m,n denotes the filter coefficients, and f(k,l) denotes the decoded filter coefficients.
[0105]
[0106] Alternatively, the filtering process of the adaptive loop filter can be represented as follows:
[0107] O(x, y) = ∑ (i,j) w(i, j).I(x+i, y+j), (11)
[0108] where the sample I(x+i, y+j) is the input sample, O(x, y) is the filtered output sample (i.e., the filter result), and w(i, j) denotes the filter coefficients. In practice, in VTM4.0, it is implemented using an integer algorithm for fixed-point precision calculation:
[0109]
[0110] where L denotes the filter length, and where w(i, j) are the filter coefficients at fixed-point precision.
[0111] 2.4 Non-linear ALF
[0112] 2.4.1 Filter Reconstruction
[0113] Equation (11) can be re-expressed as the following expression without affecting the coding efficiency:
[0114] O(x, y) = I(x, y) + ∑ (i,j)≠(0,0) w(i, j).(I(x+i, y+j)-I(x, y)) (13)
[0115] where w(i, j) are the same filter coefficients as in equation (11) [except that w(0, 0) is equal to 1 in equation (13) while it is equal to 1-∑ (i,j)≠(0,0) w(i, j) in equation (11)].
[0116] 2.4.2 Modified Filter
[0117] With the filter formula (13) above, we can easily introduce non-linearity to make the ALF more effective to reduce the impact of the neighboring sample values (I(x+i, y+j)) when they differ too much from the current sample value (I(x, y)) being filtered by using a simple clipping function.
[0118] In this proposal, the ALF filter is modified as follows:
[0119] O'(x, y) = I(x, y) + ∑ (i,j)≠(0,0) w(i, j).K(I(x+i, y+j)-I(x, y), k(i, j)), (14)
[0120] where K(d,b) = min(b, max(-b, d)) is the clipping function and k(i,j) is the clipping parameter, which depends on the (i,j) filter coefficient. The encoder performs this optimization to find the optimal k(i,j).
[0121] For implementation convenience, the filter coefficients w(i,j) are stored and used with integer precision. The above equation can be rewritten as follows:
[0122] O'(i,j) = I(i,j) + ((∑ k≠0 ∑ l≠0 w(k,l) x K(I(i+k,j+l) - I(i,j), c(k,l)) + 64) » 7) (16)
[0123] where w(k,l) denotes the decoded filter coefficients, K(x,y) is the clipping function, and c(k,l) denotes the decoded clipping parameters. The variables k and l vary between and where L denotes the filter length. The clipping function K(x,y) = min(y, max(-y, x)) corresponds to the function Clip3(-y, y, x).
[0124] In the JVET-N0242 implementation, a clipping parameter k(i,j) is specified for each ALF filter, with one clipping value signaled for each filter coefficient. This means that up to 12 clipping values can be signaled in the bitstream for each luma filter and up to 6 clipping values for each chroma filter. To limit the signaling cost and encoder complexity, we restrict the evaluation of the clipping value to a small set of possible values. In this proposal, we only use 4 fixed values, which are the same for inter and intra slice groups.
[0125] Because the local difference values of luma are typically higher than those of chroma, we use two different sets for luma and chroma filters. We also include the maximum sample value (1024 in this text for 10-bit depth) in each set, so that clipping can be disabled if not needed.
[0126] The clipping value sets used in the JVET-N0242 tests are provided in Table 2. The 4 values are chosen by roughly equally dividing the entire range of luma sample values (coded in 10 bits) and the range from 4 to 1024 for chroma in the log domain.
[0127] More precisely, the luma table of clipping values is obtained by the following formula:
[0128]
[0129] Similarly, the chroma table of clipping values is obtained according to the following formula:
[0130]
[0131] Table 2: authorized clipping values.
[0132]
[0133] The selected clipping values are coded in the "alf_data" syntax element by using a Golomb coding scheme corresponding to the index of the clipping value in the above table 2. This coding scheme is the same as the one used for the filter index.
[0134] 2.5 Geometry-based adaptive loop filter in VVC
[0135] Compared to JEM, the current design of GALF in VVC has the following main changes:
[0136] 1) The adaptive filter shape is removed. Only 7x7 filter shape is allowed for luma component and only 5x5 filter shape is allowed for chroma component.
[0137] 2) The ALF filter coefficients are signaled in the ALF adaptation parameter set (APS).
[0138] 3) Non-linear ALF can be applied.
[0139] 4) For each CTU, one bit flag is signaled for each color component whether the ALF is enabled or disabled.
[0140] 5) The calculation of the class index is performed at 4x4 level instead of 2x2 level. Moreover, as proposed in JVET-L0147, the ALF classification is done with a sub-sampled Laplacian calculation method. More specifically, there is no need to calculate the horizontal / vertical / 45-degree diagonal / 135-degree diagonal gradients for each sample within a block. Instead, a 1:2 sub-sampling is used.
[0141] Figure 3A An example of sub-sampled Laplacian calculation showing the sub-sampled positions of the vertical gradients.
[0142] Figure 3B An example of sub-sampled Laplacian calculation showing the sub-sampled positions of the horizontal gradients.
[0143] Figure 3C An example of sub-sampled Laplacian calculation showing the sub-sampled positions of the diagonal gradients.
[0144] Figure 3DAn example of sub-sampled Laplacian computation for sub-sampled locations of the diagonal gradient is shown.
[0145] 2.6 Signaling of ALF parameters in adaptive parameter set
[0146] In the latest version of VVC draft, ALF parameters can be signaled in an adaptive parameter set (APS), and ALF parameters can be adaptively selected by each CTU. In one APS, up to 25 sets of luma filter coefficients and clipping value indices, and up to 8 sets of chroma filter coefficients and clipping value indices can be signaled. To reduce the bit overhead, different categories of filter coefficients for luma components can be merged. In the slice header, the index of the APS used for the current slice is signaled.
[0147] Filter coefficients are quantized with a norm equal to 128. To limit the multiplication complexity, bitstream conformance is applied such that the coefficient values at non-central positions should be in the range of -2 7 to 2 7 -1 (including the endpoints). The central position coefficients are not signaled in the bitstream and are considered equal to 128.
[0148] The detailed signaling of ALF (in JVET-P2001-v9) is as follows.
[0149] 7.3.2.5 Adaptive parameter set syntax
[0150]
[0151] 7.3.2.16 Adaptive loop filter data syntax
[0152]
[0153]
[0154]
[0155] 7.4.3.5 Adaptive parameter set semantics
[0156] Each APS RBSP shall be available to the decoding process prior to being referenced, including in at least one access unit with Temporalld less than or equal to the Temporalld of the coded slice NAL unit that referred to it or was provided through external means.
[0157] Let aspLayerld be the nuh layer id of the APS NAL unit. If the layer with nuh layer id equal to aspLayerld is an independent layer (i.e., vps_independent_layer_flag[ GeneralLayerldx[ aspLayerld ] ] is equal to 1), the nuh layer id of the APS NAL unit containing the APS RBSP shall be equal to the nuh layer id of the slice NAL unit to which it refers for coding. Otherwise, the nuh layer id of the APS NAL unit containing the APS RBSP shall be equal to the nuh layer id of the slice NAL unit to which it refers for coding or equal to the nuh layer id of a direct dependency layer of the layer containing the slice NAL unit to which it refers for coding.
[0158] All APS NAL units within an access unit with a particular adaptation_parameter_set_id value and a particular aps_params_type value shall have the same content.
[0159] adaptation_parameter_set_id provides an identifier for the APS for reference by other syntax elements.
[0160] When aps_params_type is equal to ALF_APS or SCALING_APS, the value of adaptation_parameter_set_id shall be in the range of 0 to 7, inclusive.
[0161] When aps_params_type is equal to LMCS_APS, the value of adaptation_parameter_set_id shall be in the range of 0 to 3, inclusive.
[0162] aps_params_type specifies the type of APS parameters carried in the APS as specified in Table 7-2. When aps_params_type is equal to 1 (LMCS_APS), the value of adaptation_parameter_set_id shall be in the range of 0 to 3, inclusive.
[0163] Table 7-2 APS parameter type codes and APS parameter types
[0164]
[0165] NOTE 1 Separate value spaces are used for adaptation_parameter_set_id for each type of APS.
[0166] NOTE 2 An APS NAL unit (with a particular adaptation_parameter_set_id value and a particular aps_params_type value) can be shared across pictures, and different slices within a picture can refer to different ALF APSs.
[0167] aps_extension_flag equal to 0 specifies that the aps_extension_data_flag syntax element is not present in the APS RBSP syntax structure. aps_extension_flag equal to 1 specifies that the aps_extension_data_flag syntax element is present in the APS RBSP syntax structure.
[0168] aps_extension_data_flag can have any value. Its presence and value do not affect decoder conformance to the profile specified in this version of this Specification. Decoders conforming to this version of this Specification shall ignore all aps_extension_data_flag syntax elements.
[0169] 7.4.3.14 Adaptive loop filter data semantics
[0170] alf_luma_filter_signal_flag equal to 1 specifies that the luma filter set is signaled. alf_luma_filter_signal_flag equal to 0 specifies that the luma filter set is not signaled.
[0171] alf_chroma_filter_signal_flag equal to 1 specifies that the chroma filter is signaled. alf_chroma_filter_signal_flag equal to 0 specifies that the chroma filter is not signaled. When ChromaArrayType is equal to 0, alf_chroma_filter_signal_flag shall be equal to 0.
[0172] The variable NumAlfFilters, which specifies the number of different adaptive loop filters, is set equal to 25.
[0173] alf_luma_clip_flag equal to 0 specifies that linear adaptive loop filtering is applied to luma components. alf_luma_clip_flag equal to 1 specifies that non-linear adaptive loop filtering can be applied to luma components.
[0174] alf_luma_num_filters_signed_minus 1 plus 1 specifies the number of adaptive loop filter categories that can signal luma coefficients. The value of alf_luma_num_filters_signed_minus 1 shall be in the range of 0 to NumAlfFilters - 1, inclusive.
[0175] alf_luma_coeff_delta_idx[ filtldx ] specifies the index of the signaled adaptive loop filter luma coefficient delta for the filter category indicated by filtldx in the range of 0 to NumAlfFilters - 1. When alf_luma_coeff_delta_idx[ filtldx ] is not present, it is inferred to be equal to 0. The length of alf_luma_coeff_delta_idx[ filtldx ] is Ceil( Log2( alf_luma_num_filters_signalled_minus 1 + 1 ) ) bits.
[0176] alf_luma_coeff_signalled_flag equal to 1 specifies that alf_luma_coeff_flag[ sfldx ] is signaled. alf_luma_coeff_signalled_flag equal to 0 specifies that alf_luma_coeff_flag[ sfldx ] is not signaled.
[0177] alf_luma_coeff_flag[ sfldx ] equal to 1 specifies that the coefficient of the luma filter indicated by sfldx is signaled. alf_luma_coeff_flag[ sfldx ] equal to 0 specifies that all filter coefficients of the luma filter indicated by sfldx are set equal to 0. When not present, alf_luma_coeff_flag[ sfldx ] is set equal to 1.
[0178] alf_luma_coeff_abs[ sfldx ][ j ] specifies the absolute value of the j-th coefficient of the signaled luma filter indicated by sfldx. When alf_luma_coeff_abs[ sfldx ][ j ] is not present, it is inferred to be equal to 0.
[0179] The order k of the Exponential-Golomb binarization uek(v) is set equal to 3.
[0180] alf_luma_coeff_sign[ sfldx ][ j ] specifies the sign of the j-th luma coefficient of the filter indicated by sfldx as follows:
[0181] - If alf_luma_coeff_sign[ sfldx ][ j ] is equal to 0, the corresponding luma filter coefficient has a positive value.
[0182] - Otherwise (alf_luma_coeff_sign[ sfldx ][ j ] is equal to 1 ), the corresponding luma filter coefficient has a negative value.
[0183] When alf_luma_coeff_sign[ sfldx ][ j ] is not present, it is inferred to be equal to 0.
[0184] The variable filtCoeff[ sfldx ][ j ] with sfldx = 0..alf_luma_num_filters_signalled_minusl, j = 0..11 is initialized as follows:
[0185]
[0186] The luma filter coefficients AlfCoeff with filtldx = 0..NumAlfFilters - 1 and j = 0..11 are derived as follows: L [ adaptation_parameter_set_id ][ filtldx ][ j ] L [ adaptation_parameter_set_id ]:
[0187] AlfCoeff L [ adaptation_parameter_set_id ][ filtldx ][ j ] = filtCoeff[ alf_luma_coeff_delta_idx[ filtldx ] ][ j ] (7-48)
[0188] The fixed filter coefficients AlfFixFiltCoeff[ i ][ j ] with i = 0..64 and j = 0..11 and the class-to-filter map AlfClassToFiltMap[ m ][ n ] with m = 0..15 and n = 0..24 are derived as follows:
[0189]
[0190]
[0191]
[0192]
[0193]
[0194] The values of Alflnter[ adaptation_parameter_set_id ][ filtldx ][ j ] shall be in the range of -2 L [ adaptation_parameter_set_id ][ filtldx ][ j ] shall be in the range of -2 7 [ adaptation_parameter_set_id ][ filtldx ][ j ] shall be in the range of -2 7 - 1, inclusive.
[0195] alf_luma_clip_idx[ sfldx ][ j ] specifies the clipping index of the clipping value to be used before multiplying by the j-th coefficient of the signalled luma filter indicated by sfldx. The requirement for bitstream conformance is that the values of alf_luma_clip_idx[ sfldx ][ j ] with sfldx = 0.. alf_luma_num_filters_signalled_minusl and j = 0.. 11 shall be in the range of 0 to 3, inclusive.
[0196] Depending on the bitDepth set equal to BitDepth Y [ adaptation_parameter_set_id ][ filtldx ][ j ] of the luma filter clipping values Alflnter[ adaptation_parameter_set_id ][ filtldx ][ j ] with filtldx = 0.. NumAlfFilters - 1 and j = 0.. 11 as specified in Table 7-4. L [ adaptation_parameter_set_id ].
[0197] alf_chroma_num_alt_filters_minusl plus 1 specifies the number of alternative filters for chroma components.
[0198] alf_chroma_clip_flag[ altIdx ] equal to 0 specifies that linear adaptive loop filtering is applied to the chroma components when the chroma filter with index altIdx is used; alf_chroma_clip_flag[ altIdx ] equal to 1 specifies that non-linear adaptive loop filtering is applied to the chroma components when the chroma filter with index altIdx is used. When not present, alf_chroma_clip_flag[ altIdx ] is inferred to be equal to 0.
[0199] alf_chroma_coeff_abs[ altIdx ][ j ] specifies the absolute value of the j-th chroma filter coefficient of the alternative chroma filter with index altIdx. When not present, alf_chroma_coeff_abs[ altIdx ][ j ] is inferred to be equal to 0. The requirement for bitstream conformance is that the value of alf_chroma_coeff_abs[ altIdx ][ j ] shall be in the range of 0 to 2 7 - 1, inclusive.
[0200] The order k of the Exponential Golomb binarization uek(v) is set equal to 3.
[0201] The alf_chroma_coeff_sign[ altIdx ][ j ] specifies the sign of the j-th chroma filter coefficient of the alternative chroma filter with index altIdx as follows:
[0202] - If alf_chroma_coeff_sign[ altIdx ][ j ] is equal to 0, the corresponding chroma filter coefficient has a positive value.
[0203] - Otherwise (alf_chroma_coeff_sign[ altIdx ][ j ] is equal to 1), the corresponding chroma filter coefficient has a negative value.
[0204] When not present, alf_chroma_coeff_sign[ altIdx ][ j ] is inferred to be equal to 0.
[0205] The chroma filter coefficients AlfCoeff C [ adaptation_parameter_set_id ][ altIdx ][ j ] are derived as follows: C [ adaptation_parameter_set_id ][ altIdx ]:
[0206] AlfCoeff C [ adaptation_parameter_set_id ] [ altIdx ] [ j ] = alf_chroma_coeff_abs [ altIdx ] [ j ] * ( 1 - 2 * alf_chroma_coeff_sign [ altIdx ] [ j ] ) (7-51)
[0207] The requirement for bitstream conformance is that the values of AlfCoeff, where altIdx = 0..alf_chroma_num_alt_filters_minus1 and j = 0..5, shall be in the range of -2 C [ adaptation_parameter_set_id ] [ altIdx ] [ j ] shall be in the range of -2 7 -1 to 2 7 -1, inclusive.
[0208] alf_chroma_clip_idx [ altIdx ] [ j ] specifies the clipping index of the clipping value to be used before multiplying the j-th coefficient of the alternative chroma filter with index altIdx. The requirement for bitstream conformance is that the values of alf_chroma_clip_idx [ altIdx ] [ j ], where altIdx = 0..alf_chroma_num_alt_filters_minus1 and j = 0..5, shall be in the range of 0 to 3, inclusive.
[0209] AlfClip C [ adaptation_parameter_set_id ] [ altIdx ] [ j ] is derived as specified in Table 7-4, depending on bitDepth set equal to BitDepth C [ adaptation_parameter_set_id ] [ altIdx ] [ j ] of the chroma filter clipping value AlfClip C [ adaptation_parameter_set_id ] [ altIdx ] [ j ] of the chroma filter clipping value AlfClip
[0210] Table 7-4 - Specification of AlfClip depending on bitDepth and clipIdx
[0211]
[0212] 2.7 Signaling of ALF parameters for a CTU
[0213] In VTM6, ALF filter parameters are signaled in an adaptation parameter set (APS). In one APF, up to 25 sets of luma filter coefficients and clipping value indices, and up to 8 sets of chroma filter coefficients and clipping value indices can be signaled. To reduce the bit overhead, different categories of filter coefficients for luma components can be merged. In the slice header, the APS index for the current slice is signaled.
[0214] The clipping value indices decoded from the APS allow to determine the clipping values using the set of clipping values for luma and the set of clipping values for chroma. These clipping values depend on the internal bit depth.
[0215] In the slice header, up to 7 APS indices can be signaled to specify the set of luma filters for the current slice. The filtering process can be further controlled at the CTB level. A flag is always signaled to indicate whether ALF is applied to the luma CTB or not. The luma CTB can select a filter set from 16 fixed filter sets and the filter set from the APS. A filter set index is signaled for the luma CTB to indicate which filter set is applied. These 16 fixed filter sets are predefined and hard-coded in both the encoder and the decoder.
[0216] For the chroma components, an APS index is signaled in the slice header to indicate the set of chroma filters for the current slice. At the CTB level, a filter index is signaled for each chroma CTB if there is more than one set of chroma filter in the APS.
[0217] More specifically, the following applies:
[0218] First, a slice on / off control flag is coded to indicate whether ALF is applied to at least one CTU in the slice or not. When it is true, for each CTU, the following is checked and signaled in order:
[0219] On the luma part :
[0220] 1. Whether ALF is applied to the luma CTB or not. If yes, go to step 2. Otherwise, no further signaling is needed.
[0221] 2. Check the number of ALF APS for the current slice, denoted by numALFAPS.
[0222] 3. If numALF APS is equal to 0, the index of the fixed filter is signaled (e.g., alf luma fixed filter idx). Otherwise, the following applies:
[0223] - A flag is signaled to indicate whether it is predicted from the first ALF APS or not.
[0224] - If not, go to step 4. Otherwise, stop the signaling of ALF parameters for the luma CTB.
[0225] 4. If numALF APS is greater than 1, a flag is signaled to indicate whether it is predicted from the ALF APS or not.
[0226] - If not, the index of the fixed filter is signaled;
[0227] - If yes, and numALF APS is greater than 2, the index of the ALF APS minus 1 is signaled with truncated unary.
[0228] Regarding the chroma part:
[0229] 1. Whether ALF is applied to the Cb / Cr CTB or not. If yes, go to step 2. Otherwise, no further signaling is needed.
[0230] 2. The index of the filter associated with the i-th ALF APS is signaled, where the APS index is signaled in the slice header.
[0231] 7.3.8.2 Coding tree unit syntax
[0232]
[0233]
[0234]
[0235] 2.8 Cross-component adaptive loop filter (CC-ALF)
[0236] The cross-component adaptive loop filter (CC-ALF) uses luma sample values to refine each chroma component. Basically, if CC-ALF is applied, CC-ALF generates a correction for each chroma sample by filtering luma samples. It serves as a loop filter step. The tool is controlled by information in the bitstream, which includes both (a) filter coefficients for each chroma component and (b) a mask that controls the application of the filter to blocks of samples.
[0237] Figure 4AThe arrangement of CC-ALF relative to other loop filters is shown. CC-ALF operates by applying a linear diamond filter (as shown in Figure 4B
[0238]
[0239] where,
[0240] (x,y) is the location of the chroma component i being refined,
[0241] (x C ,y C ) is the luminance location based on (x,y),
[0242] S i is the filter support in the luminance of chroma component i,
[0243] c i (x0,y0) represents the filter coefficients.
[0244] Figure 4A The arrangement of CC-ALF relative to other loop filters is shown. Figure 4B The diamond filter is shown.
[0245] The CC-ALF process is further described in JVET-O0636. Key feature characteristics include:
[0246] • The support region is centered around a luminance location (x C ,y C ) that is computed based on the spatial scaling factor between the luminance and chroma planes.
[0247] • All filter coefficients are transmitted in the APS and have 8-bit dynamic range.
[0248] • The APS can be referenced in the slice header.
[0249] • The CC-ALF coefficients for each chroma component of a slice are also stored in the buffer corresponding to the temporal sublayer. A slice level flag is used to facilitate the reuse of these temporal sublayer filter coefficient sets.
[0250] • The application of the CC-ALF filter is controlled on a variable block size and signaled by a context coded flag received for each block of samples. The block size as well as the CC-ALF enable flag are received at the slice level for each chroma component.
[0251] • The boundary padding for the horizontal virtual boundary utilizes repetition. For the remaining boundaries, the same type of padding as regular ALF is used.
[0252] 2.8.1 Further simplification of CC-ALF in JVET-P1008
[0253] The following new aspects are proposed to simplify the CC-ALF design compared to JVET-P0080.
[0254] - Complexity reduction
[0255] o Reduce the number of multiplications in the filter operation by changing the filter shape to a 3x4 diamond shape as shown in Figure 5
[0256] o Limit the dynamic range of CC-ALF coefficients to 6 bits.
[0257] o Allow sharing of multipliers with chroma ALF.
[0258] - Alignment with ALF
[0259] o Restrict filter selection to CTU level signaling.
[0260] o Remove the temporal layer coefficient buffer.
[0261] o Use symmetric line selection at ALF virtual boundaries.
[0262] Furthermore, as the simplification reduces the coding efficiency, limit the application of at most 4 filters per chroma component.
[0263] Figure 5 An example of a 3x4 diamond filter is shown.
[0264] 2.8.1.1 Syntax and semantics of CC-ALF
[0265] 7.3.6 Slice header syntax
[0266] 7.3.6.1 General slice header syntax
[0267]
[0268]
[0269]
[0270]
[0271]
[0272] Adaptive loop filter data syntax
[0273]
[0274]
[0275] 7.3.8.2 Coding tree unit syntax
[0276]
[0277]
[0278] 3. Technical problems solved by some of the disclosed technical solutions
[0279] The current CC-ALF design has the following problems:
[0280] 1. Only one CC-ALF mode that utilizes luma information to refine chroma samples is applied, which lacks flexibility.
[0281] 2. The same SPS flag is used to control the usage of non-linear ALF and CC-ALF. It is impossible to turn off CC-ALF separately from non-linear ALF.
[0282] 3. The signaling of CC-ALF is independent of the non-linear ALF flag (i.e., slice_alf_enabled_flag), which is unreasonable.
[0283] 4. Only one CC-ALF filter is allowed for each CTB (indicated by alf_ctb_cross_component_cb_idc for Cb and alf_ctb_cross_component_cr_idc for Cr), which cannot capture local characteristics.
[0284] 5. CC-ALF utilizes luma information to refine chroma samples, while other filters such as SAO can also refine chroma samples. The repeated refinement of the same chroma sample can cause large distortion.
[0285] 6. For one CTB, the inputs of CC-ALF and chroma ALF filtering processes are the same, i.e., the reconstructed samples after SAO process. The interaction between CC-ALF and chroma ALF filtering processes is not considered.
[0286] 4. List of embodiments and techniques
[0287] The following list of embodiments should be considered as examples of explaining the general concepts. These items should not be interpreted narrowly. In addition, these items can be combined in any manner.
[0288] In this document, an ALF filter can mean a filter applied to a given color component using information of the given color component (e.g., a luma ALF filter (linear or non-linear) applied to luma using luma information; a chroma ALF filter applied to chroma using chroma information, e.g., a Cb chroma ALF filter for filtering Cb samples; and a Cr chroma ALF filter for filtering Cr samples); while a CC-ALF filter can mean a filter applied to a first color component using information of a second color component (e.g., the first color component can be Cb or Cr; the second color component can be luma).
[0289] Extension of CC-ALF
[0290] 1. CC-ALF can be extended to cases where a sample in a first component is corrected by filtering a sample in a second component, excluding the case where the first component is Cb / Cr and the second component is Y.
[0291] a. In addition, or alternatively, an indication can be signaled of which color component the CC-ALF is applied to.
[0292] b. In one example, the first color component can be Y in YCbCR format, or G in RGB format.
[0293] c. In one example, the first color component can be Cb in YCbCR format, or B in RGB format.
[0294] d. In one example, the first color component can be Cr in YCbCR format, or R in RGB format.
[0295] e. In one example, the second color component can be Y in YCbCR format, or G in RGB format.
[0296] f. In one example, the second color component can be Cb in YCbCR format, or B in RGB format.
[0297] g. In one example, the second color component can be Cr in YCbCR format, or R in RGB format.
[0298] 2. It is proposed that when a "sample correction" or "refined sample" of a first component is derived in a CC-ALF, samples from more than one component can be filtered.
[0299] a. In one example, when calculating a correction from a sample of a first component, samples from a second component and a third component can be filtered, where the first component is different from the second component and the third component.
[0300] i. In one example, the first component is Cb in YCbCr format and the second and third components are Y and Cr, respectively.
[0301] ii. In one example, the first component is Cr in YCbCr format and the second and third components are Y and Cb, respectively.
[0302] iii. In one example, the first component is Y in YCbCr format and the second and third components are Cb and Cr, respectively.
[0303] iv. In one example, the first component is G in RGB format and the second and third components are R and B, respectively.
[0304] v. In one example, the first component is B in RGB format and the second and third components are R and G, respectively.
[0305] vi. In one example, the first component is R in RGB format and the second and third components are G and B, respectively.
[0306] b. Alternatively, when calculating the correction for a sample from the first component, samples from the second and third components can be filtered, where the first component is the same as the second or third component.
[0307] i. In one example, the first component is Cb in YCbCr format and the second and third components are Cb and Y, respectively.
[0308] ii. In one example, the first component is Cb in YCbCr format and the second and third components are Cb and Cr, respectively.
[0309] iii. In one example, the first component is Cr in YCbCr format and the second and third components are Cr and Y, respectively.
[0310] iv. In one example, the first component is Cr in YCbCr format and the second and third components are Cr and Cb, respectively.
[0311] v. In one example, the first component is Y in YCbCr format and the second and third components are Y and Cb, respectively.
[0312] vi. In one example, the first component is Y in YCbCr format and the second and third components are Y and Cr, respectively.
[0313] vii. In one example, the first component is G in RGB format and the second and third components are G and R, respectively.
[0314] viii. In one example, the first component is G in RGB format, and the second and third components are G and B, respectively.
[0315] ix. In one example, the first component is B in RGB format, and the second and third components are B and R, respectively.
[0316] x. In one example, the first component is B in RGB format, and the second and third components are B and G, respectively.
[0317] xi. In one example, the first component is R in RGB format, and the second and third components are R and G, respectively.
[0318] xii. In one example, the first component is R in RGB format, and the second and third components are R and B, respectively.
[0319] c. In one example, when calculating the correction from a sample of the first component, samples from three components can be filtered.
[0320] i. In one example, the first component is Cb in YCbCr format, or is Cr or Y.
[0321] ii. In one example, the first component is G in RGB format, or is R or B.
[0322] iii. In one example, the three components are Y, Cb and Cr in YCbCr format.
[0323] iv. In one example, the three components are R, G and B in RGB format.
[0324] d. In one example, the first / second / third component and / or the indication of how many components are needed for the derivation of one offset can be signaled from the encoder to the decoder or predefined.
[0325] In the following description, it is assumed that CC-ALF is applied to a chroma component (e.g. Cb or Cr). It should be noted that when CC-ALF is extended to refine other color components (e.g. luma or G, or B, or R), similar ideas can be applied by changing the color component.
[0326] Multiple filters in CC-ALF
[0327] 3. For the CC-ALF process, more than 1 ALF APS can be referred to for a video unit (e.g., slice / picture). That is, for at least a first sample in the video unit, a CC-ALF filter in a first ALF APS can be utilized, while a CC-ALF filter in a second ALF APS can be used for at least a second sample in the video unit.
[0328] a. In one example, the number of ALF APSs referred to can be coded.
[0329] b. In one example, the index of the ALF APS can be coded.
[0330] c. In one example, the same set of ALF APSs referred to by the luma ALF filter can be used for CC-ALF.
[0331] i. In addition, or alternatively, the ALF APS used to derive the CC-ALF filter need not be signaled.
[0332] d. In one example, a subset or superset of the ALF APSs referred to by the luma ALF can be used for CC-ALF.
[0333] i. In addition, or alternatively, the difference in the ALF APSs used to derive the CC-ALF filter and the luma ALF filter can be signaled.
[0334] 4. For the CC-ALF process, more than 1 CC-ALF filter can be used for a video region (e.g., CTB). That is, for at least a first sample in the video region, a first CC-ALF filter can be utilized, while a CC-ALF filter in a second CC-ALF filter can be used for at least a second sample in the video region.
[0335] a. In one example, an indication of the multiple CC-ALF filters can be signaled in a video region (e.g., CTB / CU / CB / PU / PB, CTB row).
[0336] i. In one example, the indication can include a selected CC-ALF filter index in an ALF APS.
[0337] ii. Alternatively, the indication can include a selected CC-ALF filter index and the index of the ALF APS in which the CC-ALF filter is associated.
[0338] iii. Alternatively, the indication can include a selected fixed CC-ALF filter that is not signaled in an APS.
[0339] a) In addition, or alternatively, the fixed CC-ALF filter can be predefined and used to predict the selected CC-ALF filter / inherited by the block as the selected CC-ALF filter.
[0340] iv. In one example, the video region is the same as the video zone.
[0341] v. Alternatively, the video zone can be larger (e.g., slice) or smaller (e.g., CU) than the video region.
[0342] b. In one example, the chroma samples can be classified into multiple sets, and how to select the CC-ALF filter can depend on the classification results.
[0343] i. In one example, the classification of two chroma components can be derived independently.
[0344] a) In one example, the classification process of a chroma component can depend on the chroma sample information of the chroma component.
[0345] ii. In one example, the classification of two chroma components can be derived jointly.
[0346] a) In one example, the classification process of two corresponding chroma blocks (Cb and Cr) can depend on the chroma samples within the two blocks.
[0347] iii. In one example, the classification process of a chroma component can depend on the information of the luma color component.
[0348] a) In one example, the same class index can be set for a chroma block and its corresponding luma block.
[0349] iv. In one example, the classification process of one or more chroma components can depend on a joint decision based on more than one component. (e.g. Y+Cb+Cr or Y+Cb or Y+Cr)
[0350] v. In one example, the chroma samples can be classified into multiple sets following the corresponding classification of the luma samples in the luma ALF.
[0351] vi. In addition, or alternatively, an indication on how to select the CC-ALF filter according to the class index can be further signaled, e.g. the CC-ALF filter index for each class index can be signaled.
[0352] Filtering process of improved CC-ALF
[0353] 5. Propose to modify the refinement (e.g. derived offset) before applying it to the chroma samples.
[0354] a. In one example, the derived offsets can be clipped to a given range.
[0355] i. In one example, whether and / or how to clip the offsets can be signaled from the encoder to the decoder.
[0356] 6. Instead of performing the CC-ALF filtering process twice for two corresponding chroma samples of a pixel, it is proposed to invoke it once. Assuming that Offsetl for a pixel S of a first color component can be derived from the luma sample, then Offset2 for the pixel S of a second color component can be derived from Offsetl.
[0357] a. In one example, Offsetl is equal to Offset2.
[0358] b. In one example, Offsetl plus Offset2 can be equal to 0.
[0359] c. In one example, Offset2 can be derived as a linear function of Offsetl. For example, Offset2 is equal to a*Offsetl + b.
[0360] d. In one example, a clipping operation can be used to derive Offset2 from Offsetl.
[0361] e. In one example, Offset2 can be derived based on Offsetl and a slice level sign flag for joint Cb and Cr mode (e.g., slice_joint_cbcr_sign_flag).
[0362] i. In one example, when slice_joint_cbcr_sign_flag is 0, offset2 can be set equal to Offsetl.
[0363] a) Alternatively, in one example, when slice_joint_cbcr_sign_flag is 1, offset2 can be set equal to -Offsetl.
[0364] f. In one example, one CC-ALF filter set can be used for two corresponding chroma samples (e.g., Cb and Cr).
[0365] i. Furthermore, or, for two chroma components, the indication of the CC-ALF filter can be signaled only once, instead of twice.
[0366] g. Furthermore, or, the correction of the offsets for the chroma components can be further signaled or derived.
[0367] i. In one example, the offset (denoted by O) derived from the luma sample can be directly used to refine one sample of the first chroma component (e.g., Cb); both O and a correction of O can be used to refine one sample of the second chroma component (e.g., Cr).
[0368] 7. Instead of performing the CC-ALF filtering process at sample level, it is proposed to apply the CC-ALF filtering process at sub-block (containing more than 1 sample) level.
[0369] a. In one example, the offset derivation process can be invoked only once for all chroma samples within a sub-block.
[0370] b. In one example, the same offset can be utilized for chroma samples within a sub-block.
[0371] i. Alternatively, the offset derived from at least the second color component can be further modified, e.g., the offset derived from at least the second color component can be set as an internal offset, and the final offset for a sample in a sub-block can be derived from the internal offset.
[0372] c. In one example, the sub-block size can be set as MxN (e.g., 2x2, 2x1, 1x2).
[0373] d. In one example, the sub-block size can depend on the color format (e.g., 4:4:4 or 4:2:0).
[0374] e. In one example, the sub-block size can be different in different blocks (e.g., CTB).
[0375] f. In one example, the sub-block size can be different for different color components.
[0376] g. In one example, the CC-ALF filter support region can depend on the sub-block size.
[0377] h. In one example, the sub-block size and / or the granularity of CC-ALF invocation can be signaled in a video unit.
[0378] 8. The CC-ALF filtering process is invoked to apply the coefficient filtering to luma sample difference values, instead of directly to luma samples.
[0379] a. In one example, the luma sample difference value can be defined as the difference between one luma sample in the filter support (region) and the corresponding luma sample. Assume the chroma sample coordinate is denoted by (x, y).
[0380] i. In one example, for 4:4:4 format, the corresponding luma sample is the one located at (x, y).
[0381] ii. In one example, for non-4:4:4 formats, the corresponding luma sample is the luma sample located at (2x, 2y).
[0382] iii. In one example, for 4:2:0 format, the corresponding luma sample is derived as a function (e.g., average) of the two samples located at (2x, 2y) and (2x, 2y+1).
[0383] iv. In one example, the filtering process in equation (18) can be rewritten as:
[0384]
[0385] where,
[0386] (x,y) is the location of the refined chroma component i,
[0387] (x C ,y C ) is the luma location based on (x,y),
[0388] S i is the filter support in luma for chroma component i,
[0389] c i (x0,y0) denotes the filter coefficients.
[0390] Note that if the corresponding sample is defined as (x C ,y C ), then x0 and y0 both equal to 0 will be excluded from S i .
[0391] b. Also, or, the luma sample difference values can be further modified, e.g., clipped, before use.
[0392] i. In one example, the filtering process in equation (18) can be rewritten as:
[0393]
[0394] where,
[0395] (x,y) is the location of the refined chroma component i,
[0396] (x C ,y C ) is the luma location based on (x,y),
[0397] S i is the filter support in luma for chroma component i,
[0398] ci (x0, y0) represents the filter coefficients.
[0399] Note that if the corresponding sample is defined as (x C , y C ), then x0 and y0 are both equal to 0 will be excluded from S i , and the function Clip can depend on (x0, y0).
[0400] ii. In one example, it can be signaled whether and / or how clipping is performed.
[0401] iii. In one example, the clipping parameters can be signaled to the decoder.
[0402] a) In addition, or alternatively, the clipping parameters in CC-ALF can be signaled with the signaling method of clipping parameters in luma ALF process.
[0403] iv. In one example, the clipping parameters used in luma ALF process (if available) can be reused in CC-ALF.
[0404] Signaling of CC-ALF
[0405] 9、In one example, at least one syntax element is signaled in APS to indicate whether the APS contains information related to CC-ALF.
[0406] a. In one example, the APS containing information related to CC-ALF can be marked as a new APS type.
[0407] b. The indication of Cb and Cr CC-ALF filters (e.g., alf_cross_component_cb_filter_signal_flag and alf_cross_component_cr_filter_signal_flag) can be jointly coded with one syntax element (e.g., represented by alf_cross_component_filter_signal_flag).
[0408] i. Alternatively, the syntax element can be a non-binary value.
[0409] 10、CC-ALF and coding tool X can be exclusive. That is, if CC-ALF is used, X is disabled, and vice versa.
[0410] a. In one example, coding tool X can be:
[0411] i. SAO for chroma components
[0412] ii. Chroma residual scaling in LMCS
[0413] iii. Deblocking of chroma component(s).
[0414] iv. ALF of chroma component(s).
[0415] b. In one example, the signaling of CC-ALF related side information can be under the condition check of enabling / disabling of the coding tool X.
[0416] c. In one example, the signaling of coding tool X related side information can be under the condition check of enabling / disabling of CC-ALF.
[0417] d. In one example, if a coding tool (CC-ALF or X) is disabled, the corresponding side information is not signaled.
[0418] e. It can be determined whether CC-ALF and the coding tool X are exclusively used for the whole sequence, or for the whole picture, or for the whole slice, or for a region such as tile, subpicture, CTB, coding block, etc.
[0419] 11. The enabling / disabling of CC-ALF for a video region (e.g. CTB) or a video unit (e.g. sequence or picture or slice) can depend on the signaling and / or usage of ALF for the luma component.
[0420] a. In one example, if no ALF parameters are signaled for the luma component, CC-ALF is mandatorily disabled.
[0421] i. In addition, or, the signaling of CC-ALF related side information can be under the condition check of the usage of ALF for the luma component (e.g. alf_luma_filter_signal_flag).
[0422] ii. In addition, or, if no ALF parameters are signaled, the signaling of CC-ALF related side information can be skipped.
[0423] ALF related side information.
[0424] b. In one example, if ALF is disabled for the luma component, CC-ALF is mandatorily disabled.
[0425] i. In addition, or alternatively, the signaling of CC-ALF related side information (e.g., slice_cross_component_alf_cb_enabled_flag, slice_cross_component_alf_cr_enabled_flag, alf_ctb_cross_component_cb_idc, or alf_ctb_cross_component_cr_idc) can be under the conditional check of the ALF usage (e.g., slice_alf_enabled_flag or alf_ctb_flag) of the luma component.
[0426] ii. In addition, or alternatively, the signaling of CC-ALF related side information can be skipped.
[0427] 12. Whether to signal the usage of CC-ALF can depend on the number of available ALF APSs.
[0428] a. In one example, the signaling of CC-ALF related information (e.g., slice_cross_component_alf_cb_enabled_flag, slice_cross_component_alf_cr_enabled_flag) is under the conditional check that the number of available ALF APSs is not equal to 0. Alternatively, the signaling of CC-ALF related information is under the conditional check that the number of available ALF APSs is greater than 0.
[0429] b. In one example, if the number of available ALF APSs is equal to 0, the signaling of CC-ALF related information (e.g., slice_cross_component_alf_cb_enabled_flag, slice_cross_component_alf_cr_enabled_flag) can be skipped.
[0430] c. Alternatively, a conforming bitstream shall satisfy that the signaled APS index for CC-ALF and / or ALF shall not be smaller than the number of transmitted ALF APSs.
[0431] d. Alternatively, a conforming bitstream shall satisfy that the signaled APS index for CC-ALF and / or ALF shall refer to one available ALF APS.
[0432] e. Alternatively, whether to signal the usage of CC-ALF can depend on the number of available ALF APSs containing CC-ALF information.
[0433] Invoking of CC-ALF
[0434] 13. CC-ALF can be applied in the prediction stage of a block.
[0435] a. In one example, at the encoder side, the prediction error can be generated based on the original block and the CC-ALF filtered result (e.g., the difference between the original signal and the CC-ALF filtered result).
[0436] b. In one example, at the encoder side, the prediction error can be generated based on the original block, the predicted block according to a given prediction mode, and the CC-ALF filtered result, e.g., set to original signal minus predicted signal minus CC-ALF filtered result.
[0437] c. In one example, at the decoder side, the reconstruction of a block can depend on the CC-ALF filtered result and the residual.
[0438] d. In one example, at the decoder side, the reconstruction of a block can depend on the CC-ALF filtered result, the residual, and a predicted block generated from intra / inter / other coding modes.
[0439] e. In one example, the above example can be enabled for partial samples within a block, but disabled for the remaining samples.
[0440] i. In one example, the partial samples can represent the first N rows / columns of samples.
[0441] ii. In one example, the partial samples can represent the last N rows / columns of samples.
[0442] iii. In one example, N can depend on the filter shape used in CC-ALF.
[0443] 14. CC-ALF can be applied after the reconstruction of one block (e.g., CTB) before decoding another block.
[0444] 15. Different order of filtering methods can be applied instead of applying CC-ALF between SAO and ALF.
[0445] a. In one example, CC-ALF can be applied before all in-loop filters.
[0446] b. In one example, CC-ALF can be applied after the reconstruction of a block, and the filtered reconstructed block can be used to predict previous blocks.
[0447] c. In one example, CC-ALF can be applied before SAO.
[0448] 16. Whether to enable or disable CC-ALF can be signaled in a video unit (e.g., sequence / picture / view / subpicture / tile) instead of slice.
[0449] a. In one example, the indication of using CC-ALF can be conditionally signaled according to the enablement of ALF.
[0450] b. In one example, the indication of using CC-ALF can be conditionally signaled according to the chroma color format and / or separate plane coding enable flag.
[0451] c. In one example, the indication of using CC-ALF in a slice / CTB / CTU can be under the condition check of enabling CC-ALF for the video unit.
[0452] d. In one example, a syntax element (e.g., flag) can be signaled in SPS / VPS / PPS / picture header / slice header to indicate whether to allow the enablement of CC-ALF.
[0453] i. In addition, or, the syntax element can be coded only when ALF is enabled for the video unit (e.g., only when sps_alf_enabled_flag is equal to 1).
[0454] ii. In addition, or, the syntax element can be coded only when ALF is enabled for the video unit and ChromaArrayType is not equal to 0 (e.g., only when sps_alf_enabled_flag is equal to 1 and ChromaArrayType is not equal to zero).
[0455] 17. The indication of using CC-ALF can be conditionally signaled according to the enablement of ALF for the luma component.
[0456] a. In one example, if ALF is disabled for the luma component, CC-ALF is also disabled without explicit signaling of CC-ALF.
[0457] 18. The order of processing ALF for the chroma component and CC-ALF for the chroma component can be pre-defined or adaptively changed over an MxN region.
[0458] a. In one example, the samples filtered due to the chroma ALF filtering process over an MxN region can be further modified before being input to CC-ALF for the chroma component over the MxN region.
[0459] b. In one example, the samples filtered due to the chroma ALF filtering process and / or CC-ALF for a first MxN region can be used as input for a second MxN region.
[0460] c. In one example, CC-ALF on chroma components on an MxN region can be performed first, followed by ALF on chroma components on the MxN region.
[0461] i. In one example, the input to the chroma ALF filtering process for an MxN region can be the output of CC-ALF.
[0462] ii. In one example, samples in an MxN region can be modified by CC-ALF before being input to ALF on chroma components on the MxN region.
[0463] d. In one example, the MxN region can be a CTB.
[0464] e. In one example, the MxN region can be smaller than a CTB.
[0465] i. In one example, the MxN region can be one sample.
[0466] f. The order can be signaled from the encoder to the decoder, e.g., in VPS / DPS / SPS / PPS / picture header / slice header.
[0467] 19. Syntax elements can be signaled to indicate the usage of ALF and CC-ALF for a given chroma component (e.g., Cb or Cr).
[0468] a. In one example, the value of the syntax element can be non-binary.
[0469] i. In one example, a value of the syntax equal to K indicates that both non-linear ALF and CC-ALF are disabled for a given color component.
[0470] ii. In one example, a value of the syntax equal to L indicates that both non-linear ALF and CC-ALF are enabled for a given color component.
[0471] iii. In one example, a value of the syntax equal to M indicates that only non-linear ALF is enabled for a given color component, while CC-ALF is disabled.
[0472] iv. In one example, a value of the syntax equal to N indicates that only CC-ALF is enabled for a given color component, while non-linear ALF is disabled.
[0473] v. In the above examples, K, L, M, N are four integer values, e.g., K=0, L=3, M=1 and N=2.
[0474] b. The value of the syntax element can be coded with fixed length, unary, truncated unary, k-th order EG, etc. binarization methods.
[0475] 20. Whether and / or how to apply the above methods can be based on one or more conditions listed below:
[0476] a. video content (e.g., screen content or natural content);
[0477] b. messages signaled in DPS / SPS / VPS / PPS / APS / picture header / tile group header / largest coding unit (LCU) / coding unit (CU) / LCU row / LCU group / TU / PU block / video coding unit;
[0478] c. location of CU / PU / TU / block / video coding unit;
[0479] d. decoded information of current block and / or its neighboring blocks:
[0480] i. block size / block shape of current block and / or its neighboring blocks;
[0481] e. indication of color format (e.g., 4:2:0, 4:4:4, RGB, or YUV);
[0482] f. coding tree structure (e.g., dual tree or single tree);
[0483] g. slice / tile group type and / or picture type;
[0484] h. color component (e.g., can be applied to luma component and / or chroma component only);
[0485] i. temporal layer ID;
[0486] j. profile / tier / level of the standard.
[0487] Figure 6 is a block diagram of a video processing device 600. The device 600 can be used to implement one or more methods described herein. The device 600 can be embodied in a smartphone, tablet, computer, Internet of Things (IoT) receiver, etc. The device 600 can include one or more processors 602, one or more memories 604, and video processing circuitry 606. The processor(s) 602 can be configured to implement one or more methods described in the present document. The memory(ies) 604 can be used for storing data and code for implementing methods and techniques described herein. The video processing circuitry 606 can be used to implement some techniques described in the present document in hardware circuitry. In some embodiments, the hardware circuitry 606 can be partially or entirely within the processor 602 (e.g., a graphics processor).
[0488] Figure 7This is a block diagram illustrating an example video processing system 700 in which various techniques disclosed herein may be implemented. Various implementations may include some or all of the components of system 700. System 700 may include an input 702 for receiving video content. The video content may be received in a raw or uncompressed format (e.g., 8 or 10-bit multi-component pixel values), or it may be received in a compressed or encoded format. Input 702 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.
[0489] System 700 may include an encoding / decoding component 704, which may implement the various encoding / decoding or coding methods described in this document. The encoding / decoding component 704 may reduce the average bit rate of the video from input 702 to the output of the encoding / decoding component 704 to produce an encoded / decoded representation of the video. Therefore, encoding / decoding techniques are sometimes referred to as video compression or video transcoding techniques. The output of the encoding / decoding component 704 may be stored or transmitted via communication through the connection represented by component 706. Component 708 may use the stored or communicated bitstream (or encoded / decoded) representation of the video received at input 702 to generate pixel values or displayable video that is sent to display interface 710. 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 “encoding / decoding” operations or tools, it should be understood that encoding / decoding tools or operations are used at the encoder, and the corresponding decoding tools or operations that reverse the encoding / decoding results will be performed by the decoder.
[0490] 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 embodied 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.
[0491] Figure 8 A block diagram is provided to illustrate an example video codec system 100 that can utilize the techniques disclosed herein.
[0492] like Figure 8 As 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 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 may be referred to as a video decoding device.
[0493] Source device 110 can include a video source 112, a video encoder 114, and an input / output (VO) interface 116.
[0494] Video source 112 can include a source such as a video capture device, an interface to receive video data from a video content provider, and / or a computer graphics system for generating video data, or a combination of such sources. Video data can comprise one or more pictures. Video encoder 114 encodes video data from video source 112 to generate a bitstream. The bitstream can include a sequence of bits that form a coded representation of the video data. The bitstream can include coded pictures and associated data. A coded picture is a coded representation of a picture. Associated data can include sequence parameter sets, picture parameter sets, and other syntax structures. VO interface 116 can include a modulator / demodulator (modem) and / or a transmitter. Encoded video data can be transmitted directly to destination device 120 by source device 110 via VO interface 116 and network 130a. Encoded video data can also be stored onto storage medium / server 130b for access by destination device 120.
[0495] Destination device 120 can include VO interface 126, video decoder 124, and display device 122.
[0496] VO interface 126 can include a receiver and / or a modem. VO interface 126 can acquire encoded video data from source device 110 or storage medium / server 130b. Video decoder 124 can decode the encoded video data. Display device 122 can display the decoded video data to a user. Display device 122 can be integrated with destination device 120, or can be external to destination device 120 which is configured to interface with an external display device.
[0497] Video encoder 114 and video decoder 124 can operate according to a video compression standard, such as High Efficiency Video Coding (HEVC) standard, Versatile Video Coding (VVC) standard, and other current and / or further standards.
[0498] Figure 9 To show a block diagram of an example of a video encoder 200, which can be Figure 8 the video encoder 114 in the system 100 shown.
[0499] Video encoder 200 can be configured to perform any or all of the techniques of this disclosure. In Figure 9 In examples, video encoder 200 includes a plurality of functional components. The techniques described in this disclosure can be shared among the various components of video encoder 200. In some examples, a processor can be configured to perform any or all of the techniques described in this disclosure.
[0500] The functional components of video encoder 200 can include partition unit 201, prediction unit 202, residual generation unit 207, transform unit 208, quantization unit 209, inverse quantization unit 210, inverse transform unit 211, reconstruction unit 212, buffer 213, and entropy encoding unit 214. Prediction unit 202 can include mode select unit 203, motion estimation unit 204, motion compensation unit 205, and intra-prediction unit 206.
[0501] In other examples, video encoder 200 can include more, less, or different functional components. In one example, prediction unit 202 can include an intra-block copy (IBC) unit. The IBC unit can perform prediction in an IBC mode in which at least one reference picture is the picture in which the current video block is located.
[0502] Furthermore, some components, such as motion estimation unit 204 and motion compensation unit 205, can be highly integrated but are represented separately for explanatory purposes. Figure 9
[0503] Partition unit 201 can partition a picture into one or more video blocks. Video encoder 200 and video decoder 300 can support various video block sizes.
[0504] Mode select unit 203 can select one of the coding modes (intra or inter), e.g., based on error results, and provide the resulting intra or inter coded block to residual generation unit 207 to generate residual block data and to reconstruction unit 212 to use as a reference picture to reconstruct the encoded block. In some examples, mode select unit 203 can select a combined intra-inter prediction (CIIP) mode in which the prediction is based on an inter prediction signal and an intra prediction signal. Mode select unit 203 can also select the precision of the motion vectors of the block (e.g., sub-pixel or integer pixel precision) in the case of inter prediction.
[0505] To perform inter prediction for a 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 to the current video block. Motion compensation unit 205 can determine a predicted video block for the current video block based on the motion information and decoded samples of pictures from buffer 213 other than the picture with which the current video block is associated.
[0506] Motion estimation unit 204 and motion compensation unit 205 can perform different operations for a current video block, e.g., depending on whether the current video block is in an I slice, a P slice, or a B slice.
[0507] In some examples, the motion estimation unit 204 can perform uni-prediction for the current video block, and the motion estimation unit 204 can search for a reference video block for the current video block in a reference picture in List 0 or List 1. The motion estimation unit 204 can then generate a reference index indicating the reference picture in List 0 or List 1 containing the reference video block and a motion vector indicating a spatial displacement between the current video block and the reference video block. The motion estimation unit 204 can output the reference index, the prediction direction indicator, and the motion vector as the motion information for the current video block. The 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 for the current video block.
[0508] In other examples, the motion estimation unit 204 can perform bi-prediction for the current video block, the motion estimation unit 204 can search for a reference video block for the current video block in a reference picture in List 0 and can also search for another reference video block for the current video block in a reference picture in List 1. The motion estimation unit 204 can then generate a reference index indicating the reference pictures in List 0 and List 1 containing the reference video blocks and a motion vector indicating a spatial displacement between the reference video blocks and the current video block. The motion estimation unit 204 can output the reference index and the motion vector for the current video block as the motion information for the current video block. The 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 for the current video block.
[0509] In some examples, the motion estimation unit 204 can output a full set of motion information for the current video block for decoding processing by the decoder.
[0510] In some examples, the motion estimation unit 204 can not output a full set of motion information for the current video block. Instead, the motion estimation unit 204 can signal the motion information for the current video block with reference to the motion information of another video block. For example, the motion estimation unit 204 can determine that the motion information for the current video block is sufficiently similar to the motion information of a neighboring video block.
[0511] In one example, the motion estimation unit 204 can indicate a value in a syntax structure associated with the current video block, the value indicating to the video decoder 300 that the current video block has the same motion information as another video block.
[0512] In another example, the motion estimation unit 204 can identify another video block and a motion vector difference (MVD) in a syntax structure associated with the current video block. The motion vector difference indicates a difference between the motion vector of the current video block and the motion vector of the indicated video block. The 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.
[0513] As described above, video encoder 200 can predictively signal motion vectors. Two examples of prediction signaling techniques that can be implemented by video encoder 200 include advanced motion vector prediction (AMVP) and Merge mode signaling.
[0514] 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, intra prediction unit 206 can generate prediction data for the current video block based on decoded samples of other video blocks in the same picture. The prediction data for the current video block can include a predicted video block and various syntax elements.
[0515] Residual generation unit 207 can generate residual data for the current video block by subtracting (e.g., indicated by a minus sign) the prediction video block(s) for the current video block from the current video block. The residual data for the current video block can include residual video blocks corresponding to different sample components of samples in the current video block.
[0516] In other examples, such as in skip mode, there can be no residual data for the current video block for the current video block, and residual generation unit 207 can not perform the subtraction operation.
[0517] 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 block associated with the current video block.
[0518] After transform processing unit 208 generates a transform coefficient video block associated with the current video block, 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.
[0519] Inverse quantization unit 210 and inverse transform unit 211 can apply inverse quantization and inverse transform, respectively, to a transform coefficient video block to reconstruct a residual video block from the transform coefficient video block. Reconstruction unit 212 can add the reconstructed residual video block to corresponding samples from one or more prediction video blocks generated by prediction unit 202 to produce a reconstructed video block associated with the current block for storage in buffer 213.
[0520] After reconstruction unit 212 reconstructs a video block, loop filtering operations can be performed to reduce video block artifacts in the video block.
[0521] Entropy encoding unit 214 can receive data from other functional components of video encoder 200. When entropy encoding unit 214 receives data, entropy encoding unit 214 can perform one or more entropy encoding operations to generate entropy encoded data and output a bitstream that includes the entropy encoded data.
[0522] Figure 10 To illustrate a block diagram of an example of video decoder 300, which can be Figure 8 the video decoder 114 in system 100 shown.
[0523] Video decoder 300 can be configured to perform any or all of the techniques of this disclosure. In Figure 10 example, video decoder 300 includes a plurality of functional components. The techniques described in this disclosure can be shared among the various components of video decoder 300. In some examples, a processor can be configured to perform any or all of the techniques described in this disclosure.
[0524] In Figure 10 example, video decoder 300 includes an entropy decoding unit 301, a motion compensation unit 302, an intra prediction unit 303, an inverse quantization unit 304, an inverse transformation unit 305, and a reconstruction unit 306 and a buffer 307. In some examples, video decoder 300 can perform a decoding process generally reciprocal to the encoding process described with respect to video encoder 200 (e.g., Figure 9 ).
[0525] Entropy decoding unit 301 can retrieve an encoded bitstream. The encoded bitstream can include entropy encoded video data (e.g., encoded blocks of video data). Entropy decoding unit 301 can decode the entropy encoded video data, and from the entropy decoded video data, motion compensation unit 302 can determine motion information including motion vectors, motion vector precision, reference picture list indices, and other motion information. For example, motion compensation unit 302 can determine such information by performing AMVP and Merge modes.
[0526] Interpolation can be performed based on an interpolation filter, and motion compensation unit 302 can produce a motion compensated block. An identifier of the interpolation filter to be used at sub-pixel precision can be included in the syntax elements.
[0527] Motion compensation unit 302 can use the interpolation filter used by video encoder 200 during encoding of the video block to calculate interpolation of sub-integer pixels of the reference block. Motion compensation unit 302 can determine the interpolation filter used by video encoder 200 from the received syntax information and use the interpolation filter to produce the prediction block.
[0528] Motion compensation unit 302 can use some of the syntax information to determine the size of the blocks used to encode the frame(s) and / or slice(s) of the encoded video sequence, partitioning information describing how to partition each macroblock of the pictures of the encoded video sequence, the mode indicating how to encode each partition, one or more reference frames (and reference frame lists) for each inter-coded block, and other information to decode the encoded video sequence.
[0529] Intra prediction unit 303 can use, for example, intra prediction modes received in the bitstream to form a prediction block from spatial neighboring blocks. Inverse quantization unit 303 inverse quantizes, i.e., de-quantizes, quantized video block coefficients provided in the bitstream and decoded by entropy decoding unit 301. Inverse transform unit 303 applies an inverse transform.
[0530] Reconstruction unit 306 can add the residual block to the corresponding prediction block generated by motion compensation unit 202 or intra prediction unit 303 to form a decoded block. If desired, a deblocking filter can also be applied to the decoded block to filter out blockiness artifacts. The decoded video block is then stored in buffer 307, which provides reference blocks for subsequent motion compensation.
[0531] Some embodiments of the disclosed technology include making a decision or determination to enable a video processing tool or mode. In one example, when a video processing tool or mode is enabled, an encoder will use or implement the tool or mode in the processing of a video block, but does not necessarily modify the resulting bitstream based on the use of the tool or mode. That is, when a video processing tool or mode is enabled based on the decision or determination, the conversion from the video block to the bitstream representation of the video will use the video processing tool or mode. In another example, when a video processing tool or mode is enabled, a decoder will process the bitstream knowing that the bitstream has been modified based on the video processing tool or mode. That is, the conversion from the bitstream representation of the video to the video block will be performed using the video processing tool or mode enabled based on the decision or determination.
[0532] Some embodiments of the disclosed technology include making a decision or determination to disable a video processing tool or mode. In an example, when a video processing tool or mode is disabled, an encoder will not use the tool or mode in the conversion of a video block to a bitstream representation of the video. In another example, when a video processing tool or mode is disabled, a decoder will process the bitstream knowing that the bitstream has not been modified using the video processing tool or mode disabled based on the decision or determination.
[0533] 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, for example, the bitstream representation of the current video block can correspond to bits located in common bits within the bitstream or distributed at different positions. For example, a macroblock can be encoded based on the error residual values after transformation and encoding / decoding, and can also use bits in the header and other fields in the bitstream.
[0534] In some embodiments, a video processing method includes: for a conversion between a video region of a video comprising multiple component video blocks and a bitstream representation of the video; determining that, during the conversion, a reconstructed sample value of a first component video block is corrected using a cross-component adaptive loop filter (CC-ALF) with reconstructed sample values of a second component video block using reconstructed sample values of a second component video block, wherein the first component does not include Cb and Cr color representations, and wherein the second component does not include a luminance (Y) component; and performing the conversion based on the determination. In various embodiments, the bitstream representation may identify the first component, using a YCbCr format to represent the video, wherein the first component is a Y component, or using an RGB format to represent the video, wherein the first component is a G component.
[0535] The following is a list of preferred terms for some embodiments.
[0536] The first set of clauses illustrates example embodiments of the techniques discussed in previous chapters (e.g., Item 1).
[0537] 1. A video processing method (e.g., Figure 11 The method 700 described herein includes: for the conversion between a video region of a video comprising multiple component video blocks and a bitstream representation of the video, making a determination (702) to use a cross-component adaptive loop filter (CC-ALF) during the conversion to correct the reconstructed sample values of a first component video block using the reconstructed sample values of at least two component video blocks; and performing the conversion (704) based on the determination.
[0538] 2. The method according to Clause 1, wherein one of the two components is the first component.
[0539] 3. The method described in Clause 1, wherein the two components are different from the first component.
[0540] 4. The method according to Clause 1, wherein CC-ALF is used based on the reconstructed sample values of video blocks of the three color components.
[0541] The following clauses show example embodiments of the techniques discussed in the previous sections (e.g., item 4).
[0542] 5. A method of video processing, comprising: for a conversion between a video region of a video comprising a plurality of component video blocks and a bitstream representation of the video, making a determination to convert a first portion of the video region using a first cross-component adaptive loop filter (CC-ALF) and to convert a second portion of the video region using a second CC-ALF; and performing the conversion based on the determination; wherein the first CC-ALF is to correct reconstructed sample values of a first component of the first portion of the video region using reconstructed sample values of a second component of the first portion of the video region; and wherein the second CC-ALF is to correct reconstructed sample values of a third component of the second portion of the video region using reconstructed sample values of a fourth component of the second portion of the video region.
[0543] 6. The method of clause 5, wherein the bitstream representation comprises an indication of a usage of the plurality of CC-ALFs and / or the first CC-ALF and / or the second CC-ALF.
[0544] 7. The method of clause 6, wherein the indication is included in a coding tree block or a coding unit or a prediction unit or a prediction block or a coding tree block row level.
[0545] 8. The method of any of clauses 5-7, wherein the converting comprises classifying samples of the first component or the third component into a plurality of sets, and determining a characteristic of the first CC-ALF and / or the second CC-ALF based on the classification.
[0546] 9. The method of any of clauses 5-7, wherein the first component and the third component are the same; and the second component and the fourth component are the same frame.
[0547] The following clauses show example embodiments of the techniques discussed in the previous sections (e.g., item 7).
[0548] 10. A method of video processing, comprising: for a conversion between a video block of a video comprising a plurality of components and a bitstream representation of the video, determining to use a cross-component adaptive loop filter (CC-ALF) at an MxN subblock level and to derive a first offset from samples of at least a second component of one MxN subblock; and performing the conversion based on the determination, wherein M and N are positive integers; and wherein the CC-ALF is to correct MxN subblock samples of a first component of the video based on at least the first offset.
[0549] 11. The method of clause 10, wherein the CC-ALF uses a first offset value for all samples in the MxN subblock.
[0550] 12. The method of clause 10, wherein the CC-ALF uses a plurality of final offset values for samples in the MxN subblock, and the final offset is derived from a first offset.
[0551] 13. The method of any of clauses 10-12, wherein M and N depend on a color format of the video.
[0552] 14. The method of any of clauses 10-13, wherein a transform of another video block of the video uses subblocks of a different size for the transform.
[0553] 15. The method of any of clauses 10-13, wherein MxN = 2x2 or MxN = 2x1 or MxN = 1x2.
[0554] The following clauses show example embodiments of the techniques discussed in the previous sections (e.g., item 10).
[0555] 16. A method of video processing, comprising: determining that an exclusion rule applies to a conversion between a current video block of a video and a bitstream representation of the video, wherein the exclusion rule specifies that the conversion does not allow a coding tool and a cross-component adaptive loop filter coding tool to be used together for the current video block; and performing the conversion based on the determination
[0556] 17. The method of clause 16, wherein the coding tool comprises a sample adaptive offset coding tool for chroma components.
[0557] 18. The method of clause 16, wherein the coding tool comprises a residual scaling tool for luma mapping with a chroma scaling coding tool.
[0558] 19. The method of clause 16, wherein the coding tool comprises a deblocking process or an adaptive loop filter for chroma samples.
[0559] 20. The method of any of clauses 16-19, wherein the exclusion rule is signaled as a field in the bitstream representation.
[0560] The following clauses show example embodiments of the techniques discussed in the previous sections (e.g., item 15).
[0561] 21. A method of video processing, comprising: determining, during a conversion between a video block and a bitstream representation of a video, an order in which to apply a cross-component adaptive loop filter (CC-ALF) and one or more loop filters to reconstructed samples of a video block of the video; and performing the conversion according to the order; wherein the order does not include using the CC-ALF after a sample adaptive offset tool and before an adaptive loop filter tool.
[0562] 22. The method of clause 21, wherein the order provides that CC-ALF is applied to the reconstructed samples prior to any other loop filter.
[0563] 23. The method of clause 21, wherein the order provides that CC-ALF is applied to the reconstructed samples of the video block prior to prediction of a subsequent video block of the video during the conversion.
[0564] 24. The method of any of clauses 21-23, wherein the order provides that CC-ALF is used prior to a sample adaptive offset loop filter.
[0565] 25. The method of any of clauses 1 to 24, wherein the conversion comprises encoding the video into a coded representation.
[0566] 26. The method of any of clauses 1 to 25, wherein the conversion comprises decoding a coded representation to generate pixel values of the video.
[0567] 27. A video decoding apparatus comprising a processor configured to implement one or more of the methods described in clauses 1 to 26.
[0568] 28. A video encoding apparatus comprising a processor configured to implement one or more of the methods described in clauses 1 to 26.
[0569] 29. A computer program product having computer code stored thereon, the code, when executed by a processor, causing the processor to implement the method of any of clauses 1 to 26.
[0570] 30. The method, apparatus or system described in this document.
[0571] The second set of clauses describes certain features and aspects of the techniques disclosed in the previous sections (e.g., items 1 to 7).
[0572] 1. A video processing method (e.g., the method 1210 described in this document) comprising: Figure 12A for a conversion between a video region of a video and a bitstream representation of the video, making (1212) a determination to use a cross-component adaptive loop filtering (CC-ALF) tool to refine chroma sample values using luma sample values; and performing (1214) the conversion based on the determination, wherein the refining includes correcting the chroma sample values using a final refinement that is a further refinement of a first refinement value determined by selectively filtering the luma sample values.
[0573] 2. The method of clause 1, wherein the further refinement of the first refinement value comprises clipping the first refinement value to a given range.
[0574] 3. The method of clause 2, wherein the bitstream representation includes information that indicates whether and / or how to clip the first refinement.
[0575] 4. A method of video processing (e.g., the method 1220 described in clause Figure 12B ), comprising making (1222), for a conversion between a video region of a video and a bitstream representation of the video, a determination to use a cross-component adaptive loop filtering (CC-ALF) tool to correct sample values of a first video block of a first component using sample values of a second video block of a second component; and performing (1224) the conversion based on the determination; wherein the CC-ALF tool is used except when both 1) the first component is a Cr component or a Cb component, and 2) the second component is a Y component are both satisfied.
[0576] 5. The method of clause 4, wherein the bitstream representation identifies the first component.
[0577] 6. The method of clause 4, wherein at least one of the first component and the second component is a Y component in the first video block represented in a YCbCr format or a G component in the first video block represented in an RGB format.
[0578] 7. The method of clause 4, wherein at least one of the first component and the second component is a Cb component in the first video block represented in a YCbCr format or a B component in the first video block represented in an RGB format.
[0579] 8. The method of clause 4, wherein at least one of the first component and the second component is a Cr component in the first video block represented in a YCbCr format or a R component in the first video block represented in an RGB format.
[0580] 9. The method of clause 4, wherein the CC-ALF tool is used to further refine the sample values of the first video block using sample values of a third video block of a third component, the second component and the third component being different from the first component, and wherein when correcting the sample values of the first component, samples from the second component and the third component are filtered.
[0581] 10. The method of clause 9, wherein the first component is a Cb in the first video block represented using a YCbCr format, and the second component and the third component are a Y component and a Cr component, respectively.
[0582] 11. The method of clause 9, wherein the first component is a Cr in the first video block represented using a YCbCr format, and the second component and the third component are a Y component and a Cb component, respectively.
[0583] 12. The method of clause 9, wherein the first component is Y in the first video block represented using a YCbCr format and the second and third components are Cb and Cr components, respectively.
[0584] 13. The method of clause 9, wherein the first component is G in the first video block represented using an RGB format and the second and third components are R and B components, respectively.
[0585] 14. The method of clause 9, wherein the first component is B in the first video block represented using an RGB format and the second and third components are R and G components, respectively.
[0586] 15. The method of clause 9, wherein the first component is R in the first video block represented using an RGB format and the second and third components are G and B components, respectively.
[0587] 16. The method of clause 4, wherein the sample values of the third video block of the third component are further used to refine the sample values of the first video block using a CC-ALF tool, one of the second and third components is the same as the first component, and wherein when correcting the sample values of the first component, samples from the second and third components are filtered.
[0588] 17. The method of clause 16, wherein the first component is Cb in the first component video block represented using a YCbCr format and the second and third components are Cb and Y components, respectively.
[0589] 18. The method of clause 16, wherein the first component is Cb in the first component video block represented using a YCbCr format and the second and third components are Cb and Cr components, respectively.
[0590] 19. The method of clause 16, wherein the first component is Cr in the first component video block represented using a YCbCr format and the second and third components are Cr and Y components, respectively.
[0591] 20. The method of clause 16, wherein the first component is Cr in the first component video block represented using a YCbCr format and the second and third components are Cr and Cb components, respectively.
[0592] 21. The method of clause 16, wherein the first component is Y in the first component video block represented using a YCbCr format and the second and third components are Y and Cb components, respectively.
[0593] 22. The method of clause 16, wherein the first component is Y in the first component video block represented using a YCbCr format, and the second and third components are the Y and Cr components, respectively.
[0594] 23. The method of clause 16, wherein the first component is G in the first component video block represented using an RGB format, and the second and third components are the G and R components, respectively.
[0595] 24. The method of clause 16, wherein the first component is G in the first component video block represented using an RGB format, and the second and third components are the G and B components, respectively.
[0596] 25. The method of clause 16, wherein the first component is B in the first component video block represented using an RGB format, and the second and third components are the B and R components, respectively.
[0597] 26. The method of clause 16, wherein the first component is B in the first component video block represented using an RGB format, and the second and third components are the B and G components, respectively.
[0598] 27. The method of clause 16, wherein the first component is R in the first component video block represented using an RGB format, and the second and third components are the R and G components, respectively.
[0599] 28. The method of clause 16, wherein the first component is R in the first component video block represented using an RGB format, and the second and third components are the R and B components, respectively.
[0600] 29. The method of clause 4, wherein the CC-ALF tool also uses sample values of a third video block of a third component, the first through third components being different from each other, and wherein the sample values of the first video block are refined based on filtered sample values of the first through third video blocks.
[0601] 30. The method of clause 29, wherein the first component is Cb, Cr, or Y in the first component video block represented using a YCbCr format.
[0602] 31. The method of clause 29, wherein the first component is G, R, or B in the first component video block represented using an RGB format.
[0603] 32. The method of clause 29, wherein the first through third components are Y, Cb, and Cr components in a YCbCr format.
[0604] 33. The method of clause 29, wherein the first component to the third component are R, G, and B components in an RGB format.
[0605] 34. The method of clause 29, wherein the bitstream representation includes at least one of: i) an indication of the first component to the third component and / or ii) a number of components to be archived for offset derivation.
[0606] 35. A method of video processing, comprising: for a conversion between a video unit of a video and a bitstream representation of the video, making a determination to use a cross-component adaptive loop filtering (CC-ALF) tool to correct sample values of a first component using sample values of a second component according to a rule; and performing the conversion based on the determination; wherein the rule specifies use of two or more ALF adaptation parameter sets (APSs), the two or more ALF APSs including a first ALF APS and a second ALF APS in the bitstream representation.
[0607] 36. The method of clause 35, wherein the first APS and the second APS are the same.
[0608] 37. The method of clause 35, wherein the first APS and the second APS are different from each other.
[0609] 38. The method of clause 35, wherein the video unit corresponds to a slice or a picture of the video.
[0610] 39. The method of clause 35, wherein the rule specifies that the two or more ALF APSs include a first ALF APS applied to first samples in the video unit and a second ALF APS applied to second samples in the video unit.
[0611] 40. The method of clause 35, wherein a number of the two or more ALF APSs referenced by the video unit is included in the bitstream representation.
[0612] 41. The method of clause 35, wherein indices of the two or more ALF APSs referenced by the video unit are included in the bitstream representation.
[0613] 42. The method of clause 35, wherein the CC-ALF tool utilizes a same set, a subset, or a superset of the two or more ALF APSs referenced by a luma ALF filter.
[0614] 43. The method of clause 42, wherein the two or more ALF APSs used to derive the CC-ALF filter are not included in the bitstream representation.
[0615] 44. The method of clause 42, wherein a difference of ALF APSs for deriving a CC-ALF filter and a luma ALF filter is included in the bitstream representation.
[0616] 45. A method of video processing, comprising: for a conversion between a video region of a video and a bitstream representation of the video, making a determination to use a cross-component adaptive loop filtering (CC-ALF) tool to correct sample values of a first component using sample values of a second component according to a rule; and performing the conversion based on the determination; wherein the rule specifies use of two or more CC-ALF filters, the two or more CC-ALF filters comprising a first CC-ALF filter applied to first samples in the video region and a second CC-ALF filter applied to second samples in the video region.
[0617] 46. The method of clause 45, wherein the bitstream representation includes an indication in the video region.
[0618] 47. The method of clause 45, wherein the bitstream representation includes an indication in a video zone that is less than or greater than the video region.
[0619] 48. The method of clause 47, wherein the video region corresponds to a coding tree block and the video zone is a slice or a coding unit.
[0620] 49. The method of any of clauses 45-48, wherein the bitstream representation includes an indication comprising indices of the two or more CC-ALF filters selected from one ALF adaptation parameter set (APS).
[0621] 50. The method of any of clauses 45-48, wherein the bitstream representation includes an indication comprising indices of the two or more CC-ALF filters selected from one or more ALF APSs and indices of the one or more ALF APSs.
[0622] 51. The method of any of clauses 45-48, wherein at least one of the two or more CC-ALF filters is selected from predefined fixed CC-ALF filters or inherited from the video region, and wherein the bitstream representation includes an indication comprising indices of the selected fixed CC-ALF filters that are not in the APS.
[0623] 52. The method of clause 45, wherein the conversion includes one or more processes to classify chroma samples of one or more chroma components into a plurality of sets, and to determine a property of the first CC-ALF filter and / or the second CC-ALF filter based on the classification.
[0624] 53. The method of clause 52, wherein the classification of the chroma samples of the two chroma components is derived independently.
[0625] 54. The method of clause 52, wherein the classification of the chroma samples of the two chroma components is derived jointly.
[0626] 55. The method of clause 52, wherein one or more processes for classifying the chroma samples of a chroma component depend on information of the corresponding luma color component.
[0627] 56. The method of clause 52, wherein one or more processes for classifying the chroma samples of one or more chroma components depend on a joint decision based on more than one chroma component.
[0628] 57. The method of clause 52, wherein the chroma samples are classified into a plurality of sets based on the classification of the corresponding luma samples in the luma ALF.
[0629] 58. The method of clause 52, wherein an indication about the first CC-ALF filter and / or the second CC-ALF filter is signaled according to a classification index.
[0630] 59. A video processing method (e.g., the method 1230 described in Figure 12C Clause 59), comprising: for a conversion between a video region of a video and a bitstream representation of the video, deriving (1232) a first offset for a first color component of the video region based on luma samples of the video region; deriving (1234) a second offset for a second color component of the video region based on the first offset; and performing (1236) the conversion by applying a cross-component adaptive loop filtering (CC-ALF) tool to correct the first color component and the second color component based on the luma samples of the video region.
[0631] 60. The method of clause 59, wherein the first offset and the second offset are identical to each other.
[0632] 61. The method of clause 59, wherein a sum of the first offset and the second offset is equal to 0.
[0633] 62. The method of clause 59, wherein the second offset is derived using a linear function of the first offset.
[0634] 63. The method of clause 59, wherein the second offset is derived using a clipping operation of the first offset.
[0635] 64. The method of clause 59, wherein the second offset is derived based on the first offset and a slice-level flag indicating a joint Cb and Cr mode.
[0636] 65. The method of clause 59, wherein a CC-ALF filter set is used for the first color component and the second color component.
[0637] 66. The method of clause 59, wherein a correction of at least one of the first offset and the second offset is signaled or derived.
[0638] 67. A method of video processing (e.g., the method 1240 described in Figure 12D Clause 1), comprising determining (1242), for a conversion between a video block of a video comprising a plurality of components and a bitstream representation of the video, to use a cross-component adaptive loop filter (CC-ALF) at an MxN subblock level, M and N being positive integers, wherein at least one of M and N is greater than 1, and performing (1244) the conversion based on the determining, wherein the CC-ALF tool is used to correct MxN subblock samples of a first component of the video based on a second component of the video.
[0639] 68. The method of clause 67, further comprising deriving a first offset from samples of at least the second component of one MxN subblock, and wherein the CC-ALF tool is used to correct the MxN subblock samples based on the first offset.
[0640] 69. The method of clause 68, wherein the CC-ALF tool uses the first offset for all samples in the MxN subblock.
[0641] 70. The method of clause 68, wherein the CC-ALF tool uses a final offset for samples in the MxN subblock, and the final offset is derived from the first offset.
[0642] 71. The method of clause 67, wherein M and N depend on a color format of the video.
[0643] 72. The method of clause 67, wherein MxN = 2x2, or MxN = 2x1, or MxN = 1x2.
[0644] 73. The method of clause 67, wherein a conversion of another video block of the video uses subblocks of different sizes for the conversion.
[0645] 74. The method of clause 67, wherein M and N depend on which color the first component represents.
[0646] 75. The method of clause 67, wherein a support of the CC-ALF tool depends on a value of M and a value of N.
[0647] 76. The method of clause 67, wherein values of M and N, and / or a granularity of the CC-ALF tool, are signaled in a video unit of the video.
[0648] 77. The method of any of clauses 1 to 76, wherein the converting comprises encoding the video into a bitstream representation.
[0649] 78. The method of any of clauses 1 to 76, wherein the converting comprises decoding a bitstream representation to generate the video.
[0650] 79. A video processing apparatus comprising a processor configured to implement a method recited by one or more of clauses 1 to 78.
[0651] 80. A computer-readable medium storing program code that, when executed, causes a processor to implement a method recited by one or more of clauses 1 to 78.
[0652] 81. A computer-readable medium storing a coded representation or bitstream representation generated according to any of the methods described above.
[0653] The third group of clauses describes certain features and aspects of the techniques disclosed in the previous sections (e.g., item 8).
[0654] 1. A video processing method (e.g., the method 1310 described in Figure 13 Clause 1), comprising:
[0655] For a conversion between a video region of a video and a bitstream representation of the video, determining to use a cross-component adaptive loop filter (CC-ALF) process based on luma sample difference values to correct chroma samples of the video region; and performing the conversion based on the determination.
[0656] 2. The method of clause 1, wherein a luma sample difference value corresponds to a difference between a luma sample value in a filter support region and a luma sample value corresponding to a chroma sample of the video region.
[0657] 3. The method of clause 2, wherein the corresponding luma sample is at (x, y) of the video region in 4:4:4 format, and wherein (x, y) indicates coordinates of the chroma sample.
[0658] 4. The method of clause 2, wherein the corresponding luma sample is at (2x, 2y) of the video region in non-4:4:4 format, and wherein (x, y) indicates coordinates of the chroma sample.
[0659] 5. The method of clause 2, wherein the corresponding luma sample is derived as a function of the two samples located at (2x, 2y) and (2x, 2y+1) of a video region in 4:2:0 format, and wherein (x, y) indicates the coordinates of the chroma sample.
[0660] 6. The method of clause 1, wherein the luma sample difference values are clipped before use.
[0661] 7. The method of clause 6, wherein the bitstream representation includes information about whether and / or how the luma sample difference values are clipped.
[0662] 8. The method of clause 6, wherein the bitstream representation includes clipping parameters for clipping the luma sample difference values.
[0663] 9. The method of clause 6, wherein the clipping parameters in the CC-ALF process are signaled using a signaling method of clipping parameters in the luma ALF process.
[0664] 10. The method of clause 1, wherein clipping parameters used in the luma ALF process are used in the CC-ALF process.
[0665] 11. The method of any of clauses 1 to 10, wherein the conversion includes encoding the video into the bitstream representation.
[0666] 12. The method of any of clauses 1 to 10, wherein the conversion includes decoding the bitstream representation to generate the video.
[0667] 13. A video processing apparatus comprising a processor configured to implement a method recited in one or more of clauses 1 to 12.
[0668] 14. A computer readable medium storing program code that when executed causes a processor to implement a method recited in one or more of clauses 1 to 12.
[0669] 15. A computer readable medium storing a coded representation or bitstream representation generated according to any of the methods above.
[0670] The fourth group of clauses describes certain features and aspects of the techniques disclosed in the previous sections (e.g., items 9-20).
[0671] 1. A video processing method (e.g., Figure 14AThe method 1410) shown includes performing (1412) a conversion between a portion of a chroma component of a video and a bitstream representation of the video according to a rule, wherein the rule specifies that whether a cross-component adaptive loop filter (CC-ALF) tool is available for the conversion of the portion of the video depends on whether an availability or usage of an adaptive loop filter (ALF) tool is indicated for a corresponding portion of a luma component.
[0672] 2. The method of clause 1, wherein the portion of the chroma component corresponds to a video region or a video unit.
[0673] 3. The method of clause 2, wherein the video region corresponds to a coding tree block.
[0674] 4. The method of clause 2, wherein the video unit corresponds to a sequence or a picture or a slice of the video.
[0675] 5. The method of clause 1, wherein the rule specifies that the CC-ALF tool is not available in the absence of an ALF parameter being signaled for the corresponding portion of the luma component.
[0676] 6. The method of clause 1, wherein the signaling of the information related to the CC-ALF tool is based on a usage of the ALF tool for the corresponding portion of the luma component.
[0677] 7. The method of clause 1, wherein the bitstream representation omits the information related to the CC-ALF tool in the case that the ALF tool for the corresponding portion of the luma component is disabled.
[0678] 8. The method of clause 6, wherein the signaling of the information related to the CC-ALF tool in a slice level is dependent on a usage of the ALF tool for the corresponding portion of the luma component in the slice level.
[0679] 9. The method of clause 6, wherein the signaling of the information related to the CC-ALF tool in a coding tree block (CTB) level is dependent on a usage of the ALF tool for the corresponding portion of the luma component in the CTB level.
[0680] 10. The method of clause 6, wherein the information related to the CC-ALF tool is signaled using a syntax element corresponding to i) slice_cross_component_alf_cb_enabled_flag, ii) slice_cross_component_alf_cr_enabled_flag, iii) alf_ctb_cross_component_cb_idc, or iv) alf_ctb_cross_component_cr_idc.
[0681] 11. The method of clause 6, wherein the use of the ALF tool for the corresponding portion of the luma component is signaled using a syntax element corresponding to i) slice alf enabled flag or ii) alf ctb flag.
[0682] 12. The method of clause 1, wherein the signaling of information related to the CC-ALF tool is skipped in the absence of the ALF parameters being signaled for the corresponding portion of the luma component.
[0683] 13. The method of clause 1, wherein the rule specifies that the CC-ALF tool is disabled for the portion of the chroma components in the case that the ALF tool is disabled for the corresponding portion of the luma component.
[0684] 14. A method of video processing, comprising performing a conversion between a video region of a video and a bitstream representation of the video, wherein the bitstream representation conforms to a format rule that specifies whether a syntax element in the bitstream representation that indicates usage of a cross-component adaptive loop filtering (CC-ALF) tool depends on a number of available adaptive loop filtering (ALF) adaptation parameter sets (APSs).
[0685] 15. The method of clause 14, wherein the format rule specifies that the syntax element is included in the bitstream representation in the case that the number of ALF APSs is not equal to 0 or greater than 0.
[0686] 16. The method of clause 14, wherein the format rule specifies that the syntax element is omitted in the bitstream representation in the case that the number of ALF APSs is 0.
[0687] 17. The method of clause 14, wherein the format rule specifies that a conforming bitstream satisfies that an APS index for the CC-ALF tool and / or the ALF tool is not less than the number of transmitted ALF APSs.
[0688] 18. The method of clause 14, wherein the format rule specifies that a conforming bitstream satisfies that an APS index for the CC-ALF tool and / or the ALF tool refers to one available ALF APS.
[0689] 19. The method of clause 14, wherein the ALF APS contains information related to the CC-ALF tool.
[0690] 20. A method of video processing, comprising performing a conversion between a video unit of a video and a bitstream representation of the video, wherein the bitstream representation conforms to a format rule that specifies inclusion of applicability of a cross-component adaptive loop filtering (CC-ALF) tool that refines sample values of a first component using sample values of a second component in the bitstream representation at a video unit level that is different from a slice level.
[0691] 21. The method of clause 20, wherein the video unit corresponds to a sequence, a picture, a view, a subpicture, or a tile, and does not correspond to a slice.
[0692] 22. The method of clause 20, wherein the format rule further specifies signaling an indication of usage of the CC-ALF tool based on an enabling of the ALF tool.
[0693] 23. The method of clause 20, wherein the format rule further specifies signaling the indication of usage of the CC-ALF tool based on a chroma color format and / or a syntax element that indicates that video blocks of the video unit contain both luma and chroma samples.
[0694] 24. The method of clause 20, wherein the format rule further specifies including the indication of usage of the CC-ALF tool in the bitstream representation based on a chroma color format and / or usage of separate color plane coding.
[0695] 25. The method of clause 20, wherein the format rule further specifies including an indication of usage of the CC-ALF tool in video regions corresponding to a slice, a coding tree block, or a coding tree unit in the bitstream representation based on the applicability of the CC-ALF tool for the video unit.
[0696] 26. The method of clause 20, wherein the format rule further specifies signaling a syntax element that indicates the applicability of the CC-ALF tool in a sequence parameter set (SPS), a video parameter set (VPS), a picture parameter set (PPS), a picture header, or a slice header.
[0697] 27. The method of clause 26, wherein the syntax element is coded only when the ALF tool is enabled for the video unit.
[0698] 28. The method of clause 26, wherein the syntax element is coded only for conditions that both i) the ALF tool is enabled for the video unit and ii) a variable ChromaArrayType is not equal to 0.
[0699] 29. The method according to Clause 26, wherein syntax elements are encoded or decoded only for conditions that simultaneously satisfy i) ALF is enabled for the video unit and ii) the chroma format of the video unit is monochrome.
[0700] 30. A video processing method comprising: performing a conversion between a video region of a video and a bitstream representation of the video, wherein the bitstream representation conforms to a format rule specifying whether a syntax element in the bitstream representation indicates the use of a cross-component adaptive loop filter (CC-ALF) tool depending on the availability of an adaptive loop filter (ALF) tool for the corresponding portion of the luma component.
[0701] 31. The method described in Clause 30, wherein the format rule specifies that the CC-ALF tool is disabled without explicit signaling notification when the ALF tool is not available for the corresponding portion of the luminance component.
[0702] 32. A video processing method comprising: performing a conversion between a video region of a video and a bitstream representation of the video, wherein the bitstream representation conforms to a format rule specifying that the bitstream representation includes an adaptive parameter set (APS), the APS including syntax elements to indicate whether the APS contains information related to the cross-component adaptive filtering (CC-ALF) tool.
[0703] 33. The method according to Clause 32, wherein the APS including information related to the CC-ALF tool has a different type from another APS that does not have information related to the CC-ALF type.
[0704] 34. The method according to Clause 32, wherein the syntax element corresponds to a combination of a first syntax element associated with the CC-ALF tool applied to the Cb component and a second syntax element associated with the CC-ALF tool applied to the Cr component.
[0705] 35. The method described in Clause 32, wherein the syntax element has a non-binary value.
[0706] 36. A video processing method (e.g., Figure 14B The method 1420 shown includes: determining an exclusion rule applicable to the conversion between a video region of the video and the bitstream representation of the video, wherein the exclusion rule specifies that the conversion does not allow the use of encoding / decoding tools and cross-component adaptive loop filtering (CC-ALF) tools for the video region; and performing the conversion based on the determination.
[0707] 37. The method of clause 36, wherein the coding tool comprises a sample adaptive offset coding tool for chroma components, a residual scaling tool for luma mapping employing a chroma scaling coding tool, a deblocking process for chroma components, or an adaptive loop filter for chroma components.
[0708] 38. The method of clause 36, wherein the bitstream representation comprises information related to a CC-ALF tool depending on an enabled state of the coding tool.
[0709] 39. The method of clause 36, wherein the bitstream representation comprises information related to a coding tool depending on an enabled state of a CC-ALF tool.
[0710] 40. The method of clause 36, wherein the bitstream representation conforms to a format rule that specifies omitting information related to a coding tool in case the coding tool is disabled.
[0711] 41. The method of clause 36, wherein the bitstream representation conforms to a format rule that specifies omitting information related to a CC-ALF tool in case the CC-ALF tool is disabled.
[0712] 42. The method of clause 36, wherein the video region corresponds to an entire sequence, an entire picture, an entire slice, a tile, a subpicture, a coding tree block, or a coding block.
[0713] 43. A method of video processing, comprising performing a conversion between a chroma block of a video and a bitstream representation of the video according to a rule, wherein a cross-component adaptive loop filter (CC-ALF) tool is used during the conversion to determine a prediction of the chroma block based on samples of a luma block; wherein the rule specifies an order of the luma block used for the prediction and / or the CC-ALF tool during the conversion.
[0714] 44. The method of clause 43, wherein the rule specifies that the CC-ALF tool is applied during a prediction stage to predict sample values of the chroma block.
[0715] 45. The method of clause 44, wherein a prediction error is produced based on a difference between an original signal before the CC-ALF tool is applied and a CC-ALF filtering result.
[0716] 46. The method of clause 44, wherein a reconstruction of the chroma block depends on the CC-ALF filtering result and a residual.
[0717] 47. The method of clause 44, wherein the rule applies to partial samples in the chroma block but not to remaining samples in the chroma block.
[0718] 48. The method of clause 47, wherein the partial samples correspond to samples at the first N rows or first N columns or samples at the last N rows or last N columns.
[0719] 49. The method of clause 48, wherein N depends on a filter shape used in the CC-ALF tool.
[0720] 50. The method of clause 43, wherein the rule specifies that the CC-ALF tool is applied after reconstruction of the chroma block and before decoding another block.
[0721] 51. The method of clause 43, wherein the rule specifies that the order does not include using the CC-ALF tool after the sample adaptive offset tool and before the adaptive loop filter tool.
[0722] 52. The method of clause 43, wherein the rule specifies that the CC-ALF tool is applied before any other loop filter is applied.
[0723] 53. The method of clause 43, wherein the rule specifies that the CC-ALF tool is applied to reconstructed samples of the chroma block before prediction for a subsequent video block of the video.
[0724] 54. The method of clause 43, wherein the rule specifies that the CC-ALF tool is applied before the sample adaptive offset loop filter.
[0725] 55. A video processing method (e.g., method 1430) as shown in Figure 14C FIG. 1430, comprising determining (1432) an order of processing an adaptive loop filter (ALF) of a chroma component and a cross-component adaptive loop filter (CC-ALF) of the chroma component according to a rule; and performing (1434) a conversion between a video and a bitstream representation of the video based on the determining, wherein the rule specifies whether the order is predefined or adaptively changed at a video region of the video, the video region having a size of MxN, and M and N are positive integers.
[0726] 56. The method of clause 55, wherein a filtered sample obtained after processing the ALF on the MxN region is modified before applying the CC-ALF on the MxN region.
[0727] 57. The method of clause 55, wherein a filtered sample obtained after processing the ALF or the CC-ALF on a first MxN region is used as an input for a second MxN region.
[0728] 58. The method of clause 55, wherein the CC-ALF for the chroma components over the MxN region is performed first, and then the ALF for the chroma components over the MxN region is performed.
[0729] 59. The method of clause 58, wherein an output of the CC-ALF is provided as an input to the ALF.
[0730] 60. The method of clause 58, wherein the samples in the MxN region are modified by the CC-ALF prior to being provided as an input to the ALF.
[0731] 61. The method of clause 55, wherein the video region corresponds to a coding tree block (CTB) or is smaller than a CTB.
[0732] 62. The method of clause 55, wherein the order is signaled in a sequence parameter set (SPS), a video parameter set (VPS), a picture parameter set (PPS), a dependency parameter set (DPS), a picture header, or a slice header.
[0733] 63. A method of video processing, comprising: performing a conversion between a video region of a video and a bitstream representation of the video, wherein the bitstream representation conforms to a format rule that specifies a syntax element included in the bitstream representation that indicates usage of adaptive loop filtering (ALF) and cross-component adaptive loop filtering (CC-ALF) for one chroma component.
[0734] 64. The method of clause 63, wherein the syntax element has a non-binary value.
[0735] 65. The method of clause 64, wherein a value equal to K indicates that ALF and CC-ALF are disabled for one color component, the ALF is non-linear, and K is an integer.
[0736] 66. The method of clause 64, wherein a value equal to L indicates that ALF and CC-ALF are enabled for one color component, the ALF is non-linear, and L is an integer.
[0737] 67. The method of clause 64, wherein a value equal to M indicates that only non-linear ALF is enabled for a given color component, and CC-ALF is disabled, M is an integer.
[0738] 68. The method of clause 64, wherein a value equal to N indicates that only CC-ALF is enabled for one color component, and non-linear ALF is disabled, N is an integer.
[0739] 69. The method of any of clauses 65-68, wherein K, L, M, N are four integer values that are different from each other.
[0740] 70. The method of clause 63, wherein the syntax element has a value that is coded with a fixed length binarization, unary binarization, truncated unary binarization, or k-th order exponential Golomb binarization.
[0741] 71. The method of any of the preceding clauses, wherein the method is further based on at least one of: 1) a type of video content; 2) a message signaled in a sequence parameter set (SPS), a video parameter set (VPS), a picture parameter set (PPS), a dependency parameter set (DPS), an adaptation parameter set (APS), a picture header, a slice header, a tile group header, a largest coding unit (LCU), a coding unit (CU), a line of LCUs, a group of LCUs, a transform unit (TU), a prediction unit (PU) block, or a video coding unit; 3) a location of a CU, PU, TU, block, or video coding unit; 4) decoded information of a current block and / or a neighboring block; 5) a size or shape of a current block and / or a neighboring block; 6) an indication of a color format; 7) a coding tree structure; 8) a slice type, tile group type, and / or picture type; 9) a type of color component; 10) a temporal layer identifier; 11) a profile, tier, or level of a standard.
[0742] 72. The method of any of the preceding clauses, wherein the CC-ALF tool is applied to refine sample values of a first component using sample values of a second component.
[0743] 73. The method of any of clauses 1 to 72, wherein the conversion comprises encoding a video into a bitstream representation.
[0744] 74. The method of any of clauses 1 to 72, wherein the conversion comprises decoding a bitstream representation to generate a video.
[0745] 75. A video processing apparatus comprising a processor configured to implement a method recited by one or more of clauses 1 to 74.
[0746] 76. A computer-readable medium storing program code that, when executed, causes a processor to implement a method recited by one or more of clauses 1 to 74.
[0747] 77. A computer-readable medium storing a coded representation or bitstream representation generated according to any of the above methods.
[0748] 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 a conversion from a pixel representation of a video to a corresponding bitstream representation, or vice versa. As defined by the syntax, for example, a bitstream representation of a current video block can correspond to bits co-located within the bitstream or distributed at different locations within the bitstream. For example, a macroblock can be encoded according to transformed and coded error residual values and also using bits and other fields in a header in the bitstream.
[0749] The disclosures and other solutions, examples, embodiments, modules and functional operations described in this document can be realized in digital electronic circuitry, or in computer software, firmware, or hardware, including the structural equivalents of such disclosed structures, or in combinations of one or more thereof. The embodiments disclosed in this document and other embodiments can be realized as one or more computer program products, e.g., one or more modules of computer program instructions encoded on a tangible and non-transitory computer readable medium for execution by, or to control the operation of, data processing apparatus. The computer readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter effecting a machine-readable propagated signal, or a combination of one or more thereof. The term "data processing apparatus" encompasses all apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers. The apparatus can also include, in addition to hardware, code that creates an execution environment for computer programs, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. The propagated signal is an artificially generated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus.
[0750] A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program can be stored in a portion 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., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and are interconnected by a communication network.
[0751] The processes and logic flows described in this document can be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit), and / or devices can be implemented as special purpose logic circuitry, e.g., an FPGA or an ASIC.
[0752] Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. However, a computer need not have 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 by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
[0753] Although the present patent document contains many details, it is not to be limited to any specific embodiment disclosed herein, but intended to cover all legal equivalents. Various modifications, alterations, and permutations of the described embodiments are possible and can be derived from the description, drawings, and claims. In some instances, details suitable for use in implementing the present application have been omitted inasmuch as such details are believed to be within the skills of persons of ordinary skill in the art. Nothing herein is intended to be a disclaimer of scope of any claim or claims.
[0754] Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring such an order, nor that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing can be advantageous. Moreover, the separation of various system components in the embodiments described herein should not be understood as requiring such separation in all embodiments.
[0755] Only some implementations and examples are described, other implementations, enhancements and variations can be made based on what is described and illustrated in this patent document.
Claims
1. A method of video data processing, comprising: determining, during a conversion between a video unit of a video and a bitstream of the video, whether an indication of usage of a cross-component filter tool is included in the bitstream at a sequence parameter set (SPS) level based on whether an adaptive loop filter tool is enabled, wherein in the cross-component filter tool, values of chroma samples are refined by using values of luma samples; and performing the conversion based on the determination, wherein a first offset for a chroma sample of the chroma samples in the cross- component filter tool is derived based on values of luma samples in a filter support region and filter coefficients of the video unit, wherein a second offset is derived using a clipping operation on the first offset, wherein the second offset is clipped to a given range, and wherein the conversion is performed by applying the cross-component filter tool to refine a chroma sample based on the second offset.
2. The method of claim 1, wherein, further determining whether the indication of usage of the cross-component filter tool is included in the bitstream at the SPS level based on a chroma color format.
3. The method of claim 1, wherein, in a case that the indication indicates that the cross-component filter tool is enabled at the SPS level, a first syntax element indicating applicability of the cross- component filter tool is included in the bitstream in a picture header or a slice header.
4. The method of claim 1, wherein, in a case that the adaptive loop filter tool is disabled, the indication is not explicitly included.
5. The method of claim 1, wherein, in a case that the adaptive loop filter tool is disabled, information related to the cross-component filter tool is excluded from the bitstream.
6. The method of claim 5, wherein, the information related to the cross-component filter tool includes at least one of a second syntax element specifying whether the cross-component filter tool is enabled for a Cb color component or a third syntax element specifying whether the cross- component filter tool is enabled for a Cr color component.
7. The method of claim 6, wherein, when the second syntax element indicates that the cross-component filter tool is enabled for the Cb color component, the information related to the cross- component filter tool further includes a fourth syntax element specifying a first identifier of a first adaptive loop filter that the Cb color component of a current slice refers to; and wherein when the third syntax element indicates that the cross- component filter tool is enabled for the Cr color component, the information related to the cross-component filter tool further includes a fifth syntax element specifying a second identifier of a second adaptive loop filter that the Cr color component of the current slice refers to.
8. The method of claim 1, wherein, a conforming bitstream satisfies that identifiers of adaptive loop filters of the cross-component filter tool included in the bitstream refer to one available adaptive loop filter.
9. The method of claim 1, wherein, the conversion includes encoding the video into the bitstream.
10. The method of claim 1, wherein, the conversion includes decoding the video from the bitstream.
11. A video data processing device comprising a processor and a non-transitory memory having instructions thereon, wherein, the instructions, when executed by the processor, cause the processor to: During a conversion between a video unit of a video and a bitstream of the video, based on whether an adaptive loop filter tool is enabled, determining whether an indication of usage of a cross-component filter tool is included in the bitstream at a sequence parameter set (SPS) level, wherein in the cross-component filter tool, values of chroma samples are refined by using values of luma samples; and performing the conversion based on the determination, wherein a first offset for a chroma sample of the chroma samples in the cross-component filter tool is derived based on values of luma samples in a filter support region and filter coefficients of the video unit, wherein a second offset is derived using a clipping operation on the first offset, wherein the second offset is clipped to a given range, and wherein the conversion is performed by applying the cross-component filter tool to refine a chroma sample based on the second offset.
12. The apparatus of claim 11, wherein, In a case that the indication indicates that the cross-component filter tool is enabled at the SPS level, a first syntax element indicating applicability of the cross-component filter tool is included in the bitstream in a picture header or a slice header.
13. The apparatus of claim 11, wherein, Further based on a chroma color format, determining whether the indication of usage of the cross-component filter tool is included in the bitstream at the SPS level; and wherein in a case that the adaptive loop filter tool is disabled, the indication is not explicitly included.
14. The apparatus of claim 11, wherein, In a case that the adaptive loop filter tool is disabled, information related to the cross-component filter tool is excluded from the bitstream; wherein the information related to the cross-component filter tool includes at least one of a second syntax element specifying whether the cross-component filter tool is enabled for a Cb color component or a third syntax element specifying whether the cross-component filter tool is enabled for a Cr color component; wherein when the second syntax element indicates that the cross-component filter tool is enabled for the Cb color component, the information related to the cross-component filter tool further includes a fourth syntax element specifying a first identifier of a first adaptive loop filter that the Cb color component of a current slice refers to; and wherein when the third syntax element indicates that the cross-component filter tool is enabled for the Cr color component, the information related to the cross-component filter tool further includes a fifth syntax element specifying a second identifier of a second adaptive loop filter that the Cr color component of the current slice refers to; and wherein a conforming bitstream satisfies that identifiers of adaptive loop filters of the cross-component filter tool included in the bitstream refer to one available adaptive loop filter.
15. A non-transitory computer-readable storage medium having stored therein instructions, the instructions causing a processor to: During a conversion between a video unit of a video and a bitstream of the video, based on whether an adaptive loop filter tool is enabled, a determination is made whether an indication of using a cross-component filtering tool is included in the bitstream at a sequence parameter set (SPS) level, wherein in the cross-component filter tool, refine values of chroma samples by using values of luma samples; and perform the conversion based on the determination, wherein a first offset for a luma sample in the cross-component filter tool is derived based on a value of the luma sample in a filter support region and filter coefficients of the video unit, wherein a second offset is derived using a clipping operation on the first offset, wherein the second offset is clipped to a given range, and wherein a chroma sample is refined based on the second offset by applying the cross-component filter tool, the conversion being performed.
16. The non-transitory computer-readable storage medium of claim 15, wherein, determining, further based on a chroma color format, whether the indication to use the cross-component filter tool is included in the bitstream at the SPS level; wherein, in a case that the indication indicates that the cross-component filter tool is enabled at the SPS level, a first syntax element indicating applicability of the cross-component filter tool is included in the bitstream in a picture header or a slice header; and wherein, in a case that the adaptive loop filter tool is disabled, the indication is not explicitly included.
17. The non-transitory computer-readable storage medium of claim 15, wherein, in a case that the adaptive loop filter tool is disabled, information related to the cross-component filter tool is excluded from the bitstream; wherein the information related to the cross-component filter tool includes at least one of a second syntax element specifying whether the cross-component filter tool is enabled for a Cb color component or a third syntax element specifying whether the cross-component filter tool is enabled for a Cr color component; wherein, when the second syntax element indicates that the cross-component filter tool is enabled for the Cb color component, the information related to the cross-component filter tool further includes a fourth syntax element specifying a first identifier of a first adaptive loop filter referred by the Cb color component of a current slice; and wherein, when the third syntax element indicates that the cross-component filter tool is enabled for the Cr color component, the information related to the cross-component filter tool further includes a fifth syntax element specifying a second identifier of a second adaptive loop filter referred by the Cr color component of the current slice; and wherein a conforming bitstream satisfies that an identifier of an adaptive loop filter of the cross-component filter tool included in the bitstream refers to one available adaptive loop filter.
18. A non-transitory computer-readable recording medium storing a bitstream of a video generated by a method performed by a video processing apparatus, wherein, The method comprises: determining, for a video unit of a video, whether an indication to use a cross-component filter tool is included in the bitstream at a sequence parameter set (SPS) level based on whether an adaptive loop filter tool is enabled, wherein, in the cross-component filter tool, values of chroma samples are refined by using values of luma samples; and generating the bitstream based on the determination, wherein a first offset for a luma sample in the cross-component filter tool is derived based on a value of the luma sample in a filter support region and filter coefficients of the video unit, wherein a second offset is derived using a clipping operation on the first offset, wherein the second offset is clipped to a given range, and wherein a chroma sample is refined based on the second offset by applying the cross-component filter tool, the conversion being performed. wherein the generating is performed based on refining chroma samples by applying the cross-component filter tool based on the second offset. 19.The non-transitory computer-readable recording medium of claim 18, wherein, determining, further based on a chroma color format, whether the indication to use the cross-component filter tool is included in the bitstream at the SPS level; wherein, in a case that the indication indicates that the cross-component filter tool is enabled at the SPS level, a first syntax element indicating applicability of the cross-component filter tool is included in the bitstream in a picture header or a slice header; and wherein, in a case that the adaptive loop filter tool is disabled, the indication is not explicitly included. 20.The non-transitory computer-readable recording medium of claim 18, wherein, in a case that the adaptive loop filter tool is disabled, information related to the cross-component filter tool is excluded from the bitstream; wherein the information related to the cross-component filter tool includes at least one of a second syntax element specifying whether the cross-component filter tool is enabled for a Cb color component or a third syntax element specifying whether the cross-component filter tool is enabled for a Cr color component; wherein, when the second syntax element indicates that the cross-component filter tool is enabled for the Cb color component, the information related to the cross-component filter tool further includes a fourth syntax element specifying a first identifier of a first adaptive loop filter referred by the Cb color component of a current slice; and wherein, when the third syntax element indicates that the cross-component filter tool is enabled for the Cr color component, the information related to the cross-component filter tool further includes a fifth syntax element specifying a second identifier of a second adaptive loop filter referred by the Cr color component of the current slice; and wherein a conforming bitstream satisfies that an identifier of an adaptive loop filter of the cross-component filter tool included in the bitstream refers to one available adaptive loop filter.
21. A method of storing a bitstream of a video, comprising: determining, for a video unit of a video, whether an indication to use a cross-component filter tool is included in the bitstream at a sequence parameter set (SPS) level based on whether an adaptive loop filter tool is enabled, wherein, in the cross-component filter tool, values of chroma samples are refined by using values of luma samples; generating the bitstream based on the determining; and storing the bitstream into a non-transitory computer-readable recording medium, wherein a first offset used for a chroma sample of the chroma samples in the cross-component filter tool is derived based on values of luma samples in a filter support region and filter coefficients of the video unit, wherein a second offset is derived using a clipping operation on the first offset, wherein the second offset is clipped to a given range, and wherein the generating is performed based on refining chroma samples by applying the cross-component filter tool based on the second offset. wherein the generating is performed based on refining chroma samples by applying the cross-component filter tool based on the second offset.
Citation Information
Patent Citations
Method and apparatus using in-loop processing to process video
CN106331709A
Inter-component filtering
US20140369426A1