Two-part signaling for adaptive loop filters in video coding

By adopting adaptive loop filter technology in video encoding and decoding and dynamically adjusting the filter parameters and shape, the problem of insufficient video compression efficiency in existing technologies is solved, and more efficient video data compression and bandwidth utilization are achieved.

CN114424529BActive Publication Date: 2025-09-19DOUYIN VISION CO LTD +1
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202080065895.0
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-09-18
Filing Date
2020-09-18
Publication Date
2025-09-19
Estimated Expiration
2040-09-18

AI Technical Summary

Technical Problem

Existing video coding and decoding technologies still have the problem of insufficient compression efficiency when processing video data, especially in the Internet and digital communication networks, which occupy a large amount of bandwidth resources. As the number of user devices increases, bandwidth demand continues to grow.

Method used

Adaptive loop filter (ALF) technology is used to optimize the compression performance of video data by dynamically adjusting filter parameters and filter shape during video encoding and decoding.

Benefits of technology

It improves the compression efficiency of video data, reduces bandwidth requirements, and improves the performance of video encoding and decoding.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114424529B_ABST
    Figure CN114424529B_ABST
Patent Text Reader

Abstract

Methods, systems, and apparatus for signaling the use of adaptive loop filtering in image and video codecs are described. An example method of video processing includes, for a conversion between a current region of video and a bitstream representation of the video, determining whether a luma adaptive loop filter is used during the conversion and whether luma adaptive loop filter coefficients are included in the bitstream representation, wherein a single syntax element in the bitstream representation indicates the use of the luma adaptive loop filter and the signaling of the luma adaptive loop filter coefficients, and performing the conversion based on the determination.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This application is based upon International Patent Application No. PCT / CN2020 / 116086, filed on September 18, 2020, which claims priority to and the benefit of International Patent Application No. PCT / CN2019 / 106420, filed on September 18, 2019. All of the above patent applications are hereby incorporated by reference in their entirety. Technical Field

[0003] This application document relates to video encoding and decoding technology. Background Art

[0004] Despite advances in video compression, digital video still accounts for the largest usage of bandwidth on the Internet and other digital communications networks. As the number of connected user devices capable of receiving and displaying video increases, bandwidth demand for digital video usage is expected to continue to grow. Summary of the Invention

[0005] Devices, systems, and methods related to digital video coding and decoding, and in particular, devices, systems, and methods related to video and image coding and decoding using adaptive loop filtering.

[0006] In one example aspect, a video processing method is disclosed. The method includes: for a conversion between a current region of a video and a bitstream representation of the video, determining whether to use a luma adaptive loop filter during the conversion and whether to include luma adaptive loop filter coefficients in the bitstream representation, wherein a single syntax element in the bitstream representation indicates the use of the luma adaptive loop filter and the signaling of the luma adaptive loop filter coefficients; and performing the conversion based on the determination.

[0007] In another example aspect, a video processing method is disclosed. The method includes performing a conversion between a current region of a video and a bitstream representation of the video, wherein an adaptive loop filter is used during the conversion, and wherein the bitstream representation conforms to a grammatical rule that specifies that coefficients of the adaptive loop filter signaled in the bitstream representation include zero-valued adaptive loop filter coefficients.

[0008] In yet another example aspect, a video processing method is disclosed. The method includes: for a conversion between a current region of video and a bitstream representation of the video, determining that zero-valued adaptive loop filter coefficients of a previous region of the video signaled in the bitstream representation are not used in the conversion; and performing the conversion based on the determination.

[0009] In yet another example aspect, a video processing method is disclosed. The method includes performing conversion between a current region of a video and a bitstream representation of the video, wherein the bitstream representation conforms to a grammatical rule that specifies that a flag indicating whether loop filtering is used for the conversion is included in the bitstream representation at a video unit level including the current region, the video unit level being less than a slice level of the video.

[0010] In yet another example aspect, a video processing method is disclosed. The method includes performing a conversion between a current region of a video and a bitstream representation of the video, wherein the conversion includes use of an adaptive loop filter, and wherein the bitstream representation is configured to indicate the adaptive loop filter using two-part signaling, the two-part signaling including a first part indicating a technique for determining the adaptive loop filter and a second part indicating an index of the technique used.

[0011] In yet another example aspect, a video processing method is disclosed. The method includes determining, based on properties of the video, a size of a current region of the video that shares a common loop filter setting, the common loop filter setting being used for conversion between the current region and a bitstream representation of the video; and performing the conversion based on the determination.

[0012] In yet another example aspect, a video processing method is disclosed. The method includes performing a lossless conversion between a current region of a video and a bitstream representation of the video, wherein the bitstream representation conforms to syntax rules that constrain values ​​of syntax fields associated with the current region in the bitstream representation because the conversion is lossless.

[0013] In yet another example aspect, the above-described method is implemented in the form of processor-executable code and stored in a computer-readable program medium.

[0014] In yet another exemplary aspect, a device configured or operable to perform the above method is disclosed. The device may include a processor programmed to implement the method.

[0015] In yet another example aspect, a video decoder device may implement a method as described herein.

[0016] The above and other aspects and features of the disclosed technology are described in more detail in the drawings, the description, and the claims. BRIEF DESCRIPTION OF THE DRAWINGS

[0017] Figure 1 is an example of an encoder block diagram.

[0018] Figure 2 Examples of GALF filter shapes are shown (left: 5×5 diamond, middle: 7×7 diamond, right: 9×9 diamond).

[0019] Figure 3 is a flowchart of one implementation of encoder decision making for GALF.

[0020] Figure 4 An example of subsampling Laplacian calculation for CE2.6.2 is shown. Top left (a): subsampling positions for vertical gradients, top right (b): subsampling positions for horizontal gradients, bottom left (c): subsampling positions for diagonal gradients, bottom right (d): subsampling positions for diagonal gradients.

[0021] Figure 5 An example of raster scan striping partitioning of a picture is shown, where the picture is divided into 12 slices and 3 raster scan strips.

[0022] Figure 6 A picture with 18 by 12 luma CTUs is shown, divided into 24 slices and 9 rectangular strips.

[0023] Figure 7 An example of a picture partitioned into 4 slices, 11 bricks, and 4 rectangular strips is shown.

[0024] Figure 8 A picture with 28 sub-pictures is shown.

[0025] Figure 9 It is a block diagram of the video system.

[0026] Figure 10 is a block diagram of an example of a video processing device.

[0027] Figure 11-17 is a flow chart of an example method of video processing. DETAILED DESCRIPTION

[0028] Embodiments of the disclosed technology can be applied to existing video codec standards (e.g., HEVC, H.265) and future standards to improve compression performance. In this document, section headings are used to improve the readability of the description and do not in any way limit the discussion or embodiments (and / or implementation methods) to the corresponding section.

[0029] 1. Summary

[0030] This application relates to video coding and decoding technology. Specifically, this application relates to adaptive loop filtering in video encoding or decoding. It can be applied to existing video coding and decoding standards, such as HEVC, and can also be applied to a pending standard (Multi-Function Video Codec). It may also be applicable to future video coding and decoding standards or video codecs.

[0031] 2. Preliminary Discussion

[0032] Video codec standards have evolved primarily through the development of the well-known ITU-T and ISO / IEC standards. ITU-T developed H.261 and H.263, ISO / IEC developed MPEG-1 and MPEG-4 Vision, and the two organizations jointly developed the H.262 / MPEG-2 Video, H.264 / MPEG-4 Advanced Video Codec (AVC), and H.265 / HEVC standards. Since H.262, video codec standards have been based on a hybrid video codec architecture that uses temporal prediction plus transform coding. To explore future video codec technologies beyond HEVC, VCEG and MPEG jointly established the Joint Video Exploration Team (JVET) in 2015. Since then, JVET has adopted many new methods and incorporated them into reference software called the Joint Exploration Model (JEM). In April 2018, a Joint Video Experts Team (JVET) between VCEG (Q6 / 16) and ISO / IEC JTC1 SC29 / WG11 (MPEG) was established to work on the VVC standard with the goal of reducing bitrate by 50% compared to HEVC.

[0033] The latest version of the VVC draft, Universal Video Codec (Draft 6), can be found at:

[0034] http: / / phenix.it-sudparis.eu / jvet / doc_end_user / documents / 15_Gothenburg / wg11 / JVET-O2001-v14.zip

[0035] The latest reference software for VVC, called VTM, can be found at:

[0036] https: / / vcgit.hhi.fraunhofer.de / jvet / VVCSoftware_VTM / tags / VTM-2.1

[0037] 2.1 Color Space and Chroma Subsampling

[0038] A color space (also called a color model (or color system)) is an abstract mathematical model that simply describes the range of colors as a tuple of numbers, usually 3 or 4 values ​​or color components (e.g., RGB). Basically, a color space is a refinement of a coordinate system and subspace.

[0039] For video compression, the most commonly used color spaces are YCbCr and RGB.

[0040] YCbCr, Y′CbCr, or Y Pb / Cb Pr / Cr (also written as YCBCR or Y'CBCR) is a family of color spaces used as part of the color imaging pipeline in video and digital photography systems. Y′ is the luma component, while CB and CR are the blue-difference and red-difference chroma components. Y′ (with primes) differs from Y in that it is luminance, meaning that light intensity is nonlinearly encoded based on the gamma-corrected RGB primes.

[0041] Chroma subsampling is the practice of encoding an image at a lower resolution for chroma information than for luminance information, taking advantage of the fact that the human visual system is less sensitive to color differences than to brightness. 2.1.1 4:4:4

[0043] Each of the three Y'CbCr components has the same sampling rate, so there is no chroma subsampling. This scheme is sometimes used in high-end film scanners and film post-production. 2.1.2 4:2:2

[0045] The two chroma components are sampled at half the rate of luma: the horizontal chroma resolution is halved. This reduces the bandwidth of the uncompressed video signal by one-third with almost no visual difference. 2.1.3 4:2:0

[0047] In 4:2:0, horizontal sampling is doubled compared to 4:1:1, but because the Cb and Cr channels are sampled only on selectable lines in this scheme, vertical resolution is halved. Therefore, the data rate remains the same. Cb and Cr are subsampled by a factor of 2 both horizontally and vertically. There are three variants of the 4:2:0 scheme, with different horizontal and vertical settings.

[0048] In MPEG-2, Cb and Cr are set together horizontally. Cb and Cr are set between pixels in the vertical direction (interval setting).

[0049] In JPEG / JFIF, H.261, and MPEG-1, Cb and Cr are interleaved, located between optional luma samples.

[0050] In 4:2:0 DV, Cb and Cr are placed together horizontally and vertically on an optional line.

[0051] 2.2 Encoding and decoding process of typical video codecs

[0052] Figure 1An example of a VVC encoder block diagram is shown, which contains three loop filter blocks: deblocking filter (DF), sample adaptive offset (SAO), and ALF. Unlike DF, which uses a predefined filter, SAO and ALF use the original samples of the current picture to reduce the mean square error between the original samples and the reconstructed samples by adding an offset and applying a finite impulse response (FIR) filter, respectively, while the coded side information signals the offset and filter coefficients. ALF is located in the last processing stage of each picture and can be seen as a tool that attempts to capture and repair artifacts created by previous stages.

[0053] 2.3 Geometric Transformation-Based Adaptive Loop Filter in JEM

[0054] In JEM, a geometric transformation-based adaptive loop filter (GALF) with block-based filter adaptation is applied. For the luminance component, one of 25 filters is selected for each 2×2 block based on the direction and activity of the local gradient.

[0055] 2.3.1 Filter Shape

[0056] In JEM, up to three diamond filter shapes can be selected for the luminance component (e.g. Figure 2 ). An index is signaled at the picture level to indicate the filter shape to use for the luma component.

[0057] Figure 2 Examples of GALF filter shapes are shown (left: 5×5 diamond, middle: 7×7 diamond, right: 9×9 diamond).

[0058] For the chroma components in a picture, a 5x5 diamond shape is always used.

[0059] 2.3.1.1 Block Category

[0060] Each 2×2 block is classified into one of 25 categories. The category index C is based on its direction D and activity The quantized value is as follows:

[0061]

[0062] To calculate D and First, use the one-dimensional Laplacian operator to calculate the gradient in the horizontal, vertical and two diagonal directions:

[0063]

[0064]

[0065]

[0066]

[0067] The indices i and j represent the coordinates of the upper left sample point in the 2×2 block, and R(i, j) represents the reconstructed sample point at the coordinate (i, j).

[0068] Then set the maximum and minimum values ​​of the horizontal and vertical gradients of D to:

[0069]

[0070] Set the maximum and minimum values ​​of the gradients in the two diagonal directions to:

[0071]

[0072] To determine the value of the direction D, these values ​​are compared with one another and with two threshold values ​​t1 and t2 .

[0073] Step 1. If and If both are true, set D to 0.

[0074] Step 2. If Start from step 3; otherwise, start from step 4.

[0075] Step 3. If Set D to 2; otherwise, set D to 1.

[0076] Step 4. If Set D to 4; otherwise, set D to 3.

[0077] The direction value A is calculated as follows:

[0078]

[0079] A is further quantized to a range of 0 to 4 (inclusive), and the quantized value is expressed as

[0080] For the two chroma components in a picture, no classification method is applied, ie, a single set of ALF coefficients is applied to each chroma component.

[0081] 2.3.1.2 Geometric Transformation of Filter Coefficients

[0082] Before filtering each 2×2 block, a geometric transformation (such as rotation or diagonal and vertical flipping) is applied to the filter coefficients f(k,l) according to the gradient values ​​calculated 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 directions.

[0083] Three geometric transformations are introduced, including diagonal, vertical flip and rotation:

[0084]

[0085] Where K is the filter size and 0≤k,l≤K-1 are the coefficient coordinates, so position (0,0) is in the upper left corner and position (K-1,K-1) is in the lower right corner. The transform is applied to the filter coefficients f(k,l) based on the gradient value calculated for that block. The relationship between the transform and the four gradients in the four directions is summarized in Table 1.

[0086] Table 1: Mapping between gradients computed for a block and transformations

[0087] Gradient value Transform <![CDATA[g d2 <g d1 and g h <g v ]]> No transformation <![CDATA[g d2 <g d1 and g v <g h ]]> diagonal <![CDATA[g d1 <g d2 and g h <g v ]]> Flip vertically <![CDATA[g d1 <g d2 and g v <g h ]]> Rotation

[0088] 2.3.1.3 Filter Parameter Signaling

[0089] In JEM, GALF filter parameters are signaled for the first CTU, i.e., after the slice header and before the SAO parameters for the first CTU. A set of up to 25 luma filter coefficients can be signaled. To reduce bit overhead, filter coefficients from different categories can be merged. In addition, the GALF coefficients of the 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 GALF coefficients stored for the reference picture and bypass the signaling of the GALF coefficients. In this case, only the index of one of the reference pictures is signaled, and the current picture inherits the stored GALF coefficients of the indicated reference picture.

[0090] To support GALF temporal prediction, a candidate list of GALF filter sets is maintained. When decoding a new sequence begins, the candidate list is empty. After decoding 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), the new filter set will overwrite the oldest set in decoding order, that is, the first-in-first-out (FIFO) rule is applied 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 a temporal layer index (TempIdx) can constitute a filter set with a previously decoded picture equal to or lower than TempIdx. For example, the kth array is assigned to be associated with a TempIdx equal to k, and it only contains filter sets from pictures with TempIdx less than or equal to k. After encoding or decoding a picture, the filter set associated with the picture will be used to update those arrays associated with equal or higher TempIdx.

[0091] Temporal prediction of the GALF coefficients is used for inter-frame frames to minimize signaling overhead. For intra frames, temporal prediction is unavailable, and a set of 16 fixed filters is assigned to each class. To indicate the use of fixed filters, a flag for each class is signaled, along with the index of the selected fixed filter if necessary. Even if a fixed filter is selected for a given class, the coefficients f(k,l) of the adaptive filter can still be signaled for that class, in which case the filter coefficients applied to the reconstructed image are the sum of the two sets of coefficients.

[0092] The filtering process of the luma component can be controlled at the CU level. A signaling flag is used to indicate whether GALF is applied to the luma component of a CU. For chroma components, whether GALF is applied is only indicated at the picture level.

[0093] 2.3.1.4 Filtering process

[0094] At the decoder side, when GALF is enabled for a block, each sample R(i,j) within the block is filtered so that the sample value R′(i,j) is as follows, where L represents the filter length and f m,n represents the filter coefficient, and f(k,l) represents the decoded filter coefficient.

[0095]

[0096] 2.3.1.5 Process of Determining Filter Parameters on the Coding Side

[0097] exist Figure 3The overall encoder decision process for GALF is illustrated in Figure 2. For each CU's luma samples, the encoder decides whether to apply GALF and includes the appropriate signaling flag in the slice header. For chroma samples, the decision to apply the filter is made at the picture level, not the CU level. Furthermore, the chroma GALF for a picture is only checked if luma GALF is enabled for that picture.

[0098] 2.4 Geometric Transformation-Based Adaptive Loop Filter in VVC

[0099] Compared with JEM, the current design of GALF in VVC has the following major changes:

[0100] 1) Adaptive filter shapes have been removed. Luma components are only allowed to use 7×7 filter shapes, and chroma components are only allowed to use 5×5 filter shapes.

[0101] 2) The time domain prediction of the ALF parameters and the prediction from the fixed filter are removed.

[0102] 3) For each CTU, whether ALF is enabled or disabled is signaled using a one-bit flag.

[0103] 4) Class index calculation is performed at the 4×4 level instead of the 2×2 level. In addition, as proposed in JVET-L0147, a subsampled Laplacian operator calculation method for ALF classification is utilized. More specifically, the horizontal / vertical / 45° / 135° gradients do not need to be calculated for every sample point within a block. Instead, a 1:2 subsampling is used.

[0104] Figure 4 An example of subsampling Laplacian calculation for CE2.6.2 is shown. Top left (a): subsampling positions for vertical gradients, top right (b): subsampling positions for horizontal gradients, bottom left (c): subsampling positions for diagonal gradients, bottom right (d): subsampling positions for diagonal gradients.

[0105] 2.5 Signaling of Adaptive Loop Filter Parameters in the Adaptive Parameter Set

[0106] In the latest version of the VVC draft, ALF parameters can be signaled in an Adaptation Parameter Set (APS), and each CTU can adaptively select these parameters.

[0107] The detailed signaling of ALF (in JVET-O2001-vE) is as follows.

[0108] 7.3.2.5 Adaptation parameter set syntax elements

[0109]

[0110]

[0111] 7.3.2.14 Adaptive Loop Filter Data Syntax Elements

[0112]

[0113]

[0114]

[0115] 7.4.3.5 Adaptation parameter set semantics

[0116] Before being referenced, each APS RBSP is available for decoding and is included in at least one access unit that has a TemporalId less than or equal to the TemporalId of the codec slice NAL unit that references it or a TemporalId provided by external means.

[0117] Let aspLayerId be the nuh_layer_id of the APS NAL unit. If the layer with nuh_layer_id equal to aspLayerId is an independent layer (i.e., vps_independent_layer_flag[GeneralLayerIdx[aspLayerId]] is equal to 1), then the APS NAL unit containing the APS RBSP shall have nuh_layer_id equal to the nuh_layer_id of the codec slice NAL unit that references it. Otherwise, the nuh_layer_id of the APS NAL unit containing the APS RBSP shall be equal to the nuh_layer_id of the codec slice NAL unit that references it, or equal to the nuh_layer_id of the directly dependent layer of the layer containing the codec slice NAL unit that references it.

[0118] All APS NAL units within an access unit with a specific value of adaptation_parameter_set_id and a specific value of aps_params_type shall have the same content.

[0119] adaptation_parameter_set_id provides an identifier for the APS for reference by other syntax elements.

[0120] 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.

[0121] When aps_params_type is equal to LMCS_APS, the value of adaptation_parameter_set_id shall be between 0 and 3 (inclusive).

[0122] aps_params_type specifies the type of APS parameters carried in the APS 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).

[0123] Table 7-2 - APS parameter type codes and APS parameter types

[0124]

[0125] NOTE 1 – Each type of APS uses a separate value space for adaptation_parameter_set_id.

[0126] NOTE 2 – APS NAL units (with a specific value of adaptation_parameter_set_id and a specific value of aps_params_type) can be shared between pictures, and different slices within a picture can reference different ALF APSs.

[0127] 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.

[0128] aps_extension_data_flag can have any value. Its presence and value do not affect the conformance of a decoder 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.

[0129] 7.4.3.14 Adaptive loop filter data semantics

[0130] alf_luma_filter_signal_flag equal to 1 specifies signaling of the luma filter set.

[0131] alf_luma_filter_signal_flag equal to 0 specifies that the luma filter set is not signaled.

[0132] alf_chroma_filter_signal_flag equal to 1 specifies signaling of the chroma filter.

[0133] alf_chroma_filter_signal_flag equal to 0 specifies that no chroma filter is signaled. When ChromaArrayType is equal to 0, alf_chroma_filter_signal_flag shall be equal to 0.

[0134] The variable NumAlfFilters, which specifies the number of different adaptive loop filters, is set equal to 25.

[0135] alf_luma_clip_flag equal to 0 specifies that linear adaptive loop filtering is applied to the luma component. alf_luma_clip_flag equal to 1 specifies that non-linear adaptive loop filtering may be applied to the luma component.

[0136] alf_luma_num_filters_signalled_minus1 plus 1 specifies the number of adaptive loop filter classes that can signal luma coefficients. The value of alf_luma_num_filters_signalled_minus1 shall be in the range of 0 to NumAlfFilters-1, inclusive.

[0137] alf_luma_coeff_delta_idx[filtIdx] specifies the index of the signaled adaptive loop filter luma coefficient delta for the filter class indicated by filtIdx, ranging from 0 to NumAlfFilters - 1. When alf_luma_coeff_delta_idx[filtIdx] is not present, it is inferred to be equal to 0. The length of alf_luma_coeff_delta_idx[filtIdx] is Ceil(Log2(alf_luma_num_filters_signalled_minus1+1)) bits.

[0138] alf_luma_coeff_signalled_flag equal to 1 indicates that alf_luma_coeff_flag[sfIdx] is signaled. alf_luma_coeff_signalled_flag equal to 0 indicates that alf_luma_coeff_flag[sfIdx] is not signaled.

[0139] alf_luma_coeff_flag[sfIdx] equal to 1 specifies that the coefficients of the luma filter indicated by sfIdx are signaled. alf_luma_coeff_flag[sfIdx] equal to 0 specifies that all filter coefficients of the luma filter indicated by sfIdx are set to 0. When not present, alf_luma_coeff_flag[sfIdx] is set equal to 1.

[0140] alf_luma_coeff_abs[sfIdx][j] specifies the absolute value of the j-th coefficient of the signaled luma filter indicated by sfIdx. If alf_luma_coeff_abs[sfIdx][j] is not present, it is inferred to be equal to 0.

[0141] The order k of exp-Golomb binarization uek(v) is equal to 3.

[0142] alf_luma_coeff_sign[sfIdx][j] specifies the sign of the j-th luma coefficient of the filter indicated by sfIdx as follows:

[0143] - If alf_luma_coeff_sign[sfIdx][j] is equal to 0, the corresponding luma filter coefficient is positive.

[0144] Otherwise (alf_luma_coeff_sign[sfIdx][j] is equal to 1), the corresponding luma filter coefficient is negative.

[0145] When alf_luma_coeff_sign[sfIdx][j] is not present, it is inferred to be equal to 0.

[0146] The variable filtCoeff[sfIdx][j] with sfIdx=0..alf_luma_num_filters_signalled_minus1, j=0..11 is initialized as follows:

[0147]

[0148] With element AlfCoeff L [adaption_parameter_set_id][filtIdx][j] with lultIdx=0..NumAlfFilters-1 and j=0..11 luma filter coefficients AlfCoeff LThe derivation of [adaptation_parameter_set_id] is as follows:

[0149] Alf Coeff L [adaptation_parameter_set_id][filtIdx][j]=filtCoeff[alf_luma_coeff_delta_idx[filtIdx]][j](7-48)

[0150] The derivation of the class with fixed filter coefficients AlfFixFiltCoeff[i][j] with i=0..64, j=0..11 and filter map AlfClassToFiltMap[m][n] with m=0..15 and n=0 is as follows:

[0151]

[0152]

[0153]

[0154]

[0155]

[0156]

[0157] The requirement for bitstream conformance is to have AlfCoeff with filtIdx=0..NumAlfFilters–1, j=0..11 L The value of [adaptation_parameter_set_id][filtIdx][j] should be between -2 7 to 2 7 The range is -1 (including the end value).

[0158] alf_luma_clip_idx[sfIdx][j] specifies the clip index of the clipping value to be used before multiplying the j-th coefficient of the signaled luma filter indicated by sfIdx. A bitstream conformance requirement is that the value of alf_luma_clip_idx[sfIdx][j] with sfIdx=0..alf_luma_num_filters_signalled_minus1 and j=0..11 shall be in the range 0 to 3 (inclusive).

[0159] Depends on bitDepth being set equal to BitDepth Yand clipIdx is set equal to alf_luma_clip_idx[alf_luma_coeff_delta_idx[filtIdx]][j], derived as specified in Table 7-4 with the element AlfClip L [adaptation_parameter_set_id][filtIdx][j] where filtIdx = 0..NumAlfFilters–1 and j = 0..11, the luma filter clipping value AlfClip L [adaptation_parameter_set_id].

[0160] alf_chroma_num_alt_filters_minus1 plus 1 specifies the number of optional filters for chroma components.

[0161] alf_chroma_clip_flag[altIdx] equal to 0 specifies that when the chroma filter with index altIdx is used, linear adaptive loop filtering is applied to the chroma components; alf_chroma_clip_flag[altIdx] equal to 1 specifies that when the chroma filter with index altIdx is used, non-linear adaptive loop filtering is applied to the chroma components. If not present, alf_chroma_clip_flag[altIdx] is inferred to be equal to 0.

[0162] alf_chroma_coeff_abs[altIdx][j] specifies the absolute value of the j-th chroma filter coefficient for the optional chroma filter indexed by altIdx. When alf_chroma_coeff_abs[altIdx][j] is not present, it is inferred to be equal to 0. A bitstream conformance requirement is that the value of alf_chroma_coeff_abs[altIdx][j] shall be between 0 and 2. 7 The range is -1 (including the end value).

[0163] The order k of exp-Golomb binarization uek(v) is equal to 3.

[0164] alf_chroma_coeff_sign[altIdx][j] specifies the sign of the j-th chroma filter coefficient of the optional chroma filter with index altIdx as follows:

[0165] - If alf_chroma_coeff_sign[altIdx][j] is equal to 0, the corresponding chroma filter coefficient is positive.

[0166] Otherwise (alf_chroma_coeff_sign[altIdx][j] is equal to 1), the corresponding chroma filter coefficient is negative.

[0167] When alf_chroma_coeff_sign[altIdx][j] is not present, it is inferred to be equal to 0.

[0168] With element AlfCoeff C [adaptation_parameter_set_id][altIdx][j] chroma filter coefficients AlfCoeff where altIdx = 0..alf_chroma_num_alt_filters_minus1 and j = 0..5 C [adaptation_parameter_set_id][altIdx] is derived as follows:

[0169]

[0170] The requirement for bitstream conformance is to have AlfCoeff with altIdx=0..alf_chroma_num_alt_filters_minus1, j=0..5 C The value of [adaption_parameter_set_id][altIdx][j] should be between -2 7 -1 to 2 7 The range is -1 (including the end value).

[0171] 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 optional chroma filter with index altIdx. A bitstream conformance requirement is that the value of alf_chroma_clip_idx[altIdx][j] with altIdx=0..alf_chroma_num_alt_filters_minus1, j=0..5 shall be in the range 0 to 3 (inclusive).

[0172] Depends on bitDepth being set equal to BitDepth C and clipIdx is set equal to alf_chroma_clip_idx[altIdx][j], derived as specified in Table 7-4 with the element AlfClip C[adaptation_parameter_set_id][altIdx][j] Chroma filter clipping value AlfClip where altIdx = 0..alf_chroma_num_alt_filters_minus1, j = 0..5 C [adaptation_parameter_set_id][altIdx].

[0173] Table 7-4 – AlfClip depending on bitDepth and clipIdx

[0174]

[0175]

[0176] 2.6 Signaling of ALF Parameters for CTU

[0177] In VTM6, ALF filter parameters are signaled in an Adaptive Parameter Set (APS). In one APS, up to 25 luma filter coefficient sets and clipping value indices, and up to 8 chroma filter coefficient sets and clipping value indices can be signaled. To reduce bit overhead, filter coefficients of different categories for the luma component can be merged. The index of the APS for the current slice is signaled in the slice header.

[0178] The clipping index decoded from the APS allows the clipping value to be determined using the clipping luma table and the clipping chroma table. These clipping values ​​depend on the internal bit depth. More precisely, the clipping luma table and the clipping chroma table are obtained by the following formulas:

[0179]

[0180]

[0181] Where B is equal to the internal bit depth and N is equal to 4, where N is the number of cropping values ​​allowed in VTM6.0.

[0182] In the slice header, up to seven APS indices can be signaled to specify the luma filter set for the current slice. This allows for further control of the filtering process at the CTB level. A flag is always signaled to indicate whether the ALF is applied to the luma CTB. The luma CTB can select a filter set from 16 fixed filter sets and a filter set from the APS. The filter set index for the luma CTB is signaled to indicate which filter set is applied. The 16 fixed filter sets are predefined and hard-coded in both the encoder and decoder.

[0183] For chroma components, the APS index is signaled in the slice header to indicate the chroma filter set used for the current slice. At the CTB level, if there is more than one chroma filter set in the APS, the filter index is signaled for each chroma CTB.

[0184] More specifically, the following applies:

[0185] First, the slice on / off control flag is encoded and decoded to indicate whether ALF is applied to at least one CTU in the slice. If true, the following will be checked and signaled for each CTU in turn:

[0186] Regarding brightness:

[0187] 1. Whether ALF is applied to the luma CTB. If yes, go to step 2. Otherwise, no further signaling is required.

[0188] 2. Check the number of ALF APS used for the current slice, denoted as numALFAPS.

[0189] 3. If numALFAPS is equal to 0, then the fixed filter index (e.g., alf_luma_fixed_filter_idx) is signaled. Otherwise, the following applies:

[0190] - Signaling flag to indicate whether to perform prediction based on the first ALF APS.

[0191] - If no, go to step 4. Otherwise, stop signaling ALF parameters for luma CTB.

[0192] 4. If numALFAPS is greater than 1, a flag is signaled to indicate whether prediction is performed according to ALF APS.

[0193] - if not, signaling the index of the fixed filter;

[0194] - If yes, and numALFAPS is greater than 2, then the index of the ALF APS minus 1 is signaled using truncated unary.

[0195] Part involving chroma:

[0196] 1. Whether ALF is applied to Cb / Cr CTB. If yes, go to step 2. Otherwise, no further signaling is required.

[0197] 2. Signaling the index of the filter associated with the i-th ALF APS, where the APS index is signaled in the slice header.

[0198] 7.3.8.2 Codec Tree Unit Syntax

[0199]

[0200]

[0201]

[0202] 2.7 Partitioning of Pictures, Sub-Pictures, Strips, Slices, Tiles, and CTUs

[0203] Sub-image: A rectangular area of ​​one or more strips within an image.

[0204] Slice: An integer number of tiles of a picture contained exclusively in a single NAL unit.

[0205] NOTE – A strip consists of a continuous sequence of multiple complete slices or complete tiles of only one slice.

[0206] Slice: A rectangular area of ​​a CTU within a specific slice column and a specific slice row in a picture.

[0207] Tile: A rectangular area of ​​a CTU row within a specific slice in a picture.

[0208] Note: A slice can be partitioned into multiple tiles, each consisting of one or more CTU rows within the tile. A slice that is not partitioned into multiple tiles is also referred to as a tile. However, a tile that is a true subset of a slice is not represented as a slice.

[0209] Tile scan: A specific sequential ordering of CTUs that partition a picture, where CTUs are ordered consecutively in a raster scan of CTUs within a tile, tiles within a slice are ordered consecutively in a raster scan of tiles within a slice, and slices within a picture are ordered consecutively in a raster scan of slices within a picture.

[0210] A picture is divided into one or more slice rows and one or more slice columns. A slice is a series of CTUs that cover a rectangular area of ​​the picture.

[0211] A slice is divided into one or more tiles, each tile consisting of multiple CTU rows within the slice.

[0212] A slice that is not split into multiple tiles is also called a tile. However, a tile that is a true subset of a slice is not called a slice.

[0213] A strip contains multiple slices of a picture or multiple tiles of a slice.

[0214] A sub-picture consists of one or more strips that together cover a rectangular area of ​​the picture.

[0215] Two slice modes are supported: raster scan strip mode and rectangular strip mode. In raster scan strip mode, a strip consists of a series of slices from the image's slice raster scan. In rectangular strip mode, a strip consists of multiple tiles from the image, which together form a rectangular region of the image. Tiles within a rectangular strip are arranged in the strip's tile raster scan order.

[0216] Figure 5 An example of raster scan striping partitioning of a picture is shown, where the picture is divided into 12 slices and 3 raster scan strips.

[0217] Figure 6 An example of rectangular strip partitioning of a picture is shown, where the picture is divided into 24 slices (6 slice columns and 4 slice rows) and 9 rectangular strips.

[0218] Figure 7 An example of partitioning a picture into slices, tiles, and rectangular strips is shown, where the picture is divided into 4 slices (2 slice columns and 2 slice rows), 11 tiles (the upper left slice contains 1 tile, the upper right slice contains 5 tiles, the lower left slice contains 2 tiles, and the lower right slice contains 3 tiles), and 4 rectangular strips.

[0219] Figure 8 An example of sub-picture partitioning of a picture is shown, where the picture is partitioned into 28 sub-pictures of varying dimensions.

[0220] When a picture is coded using three separate color planes (separate_colour_plane_flag is equal to 1), a slice contains only CTUs of one color component identified by the corresponding value of colour_plane_id, and each color component array of the picture consists of slices with the same value of colour_plane_id. Codec slices with different colour_plane_id values ​​within a picture can be interleaved with each other under the following conditions: for each value of colour_plane_id, the codec slice NAL units with the same colour_plane_id value shall be arranged in order of increasing CTU addresses in tile scan order for the first CTU of each codec slice NAL unit.

[0221] NOTE 1 – When separate_colour_plane_flag is equal to 0, each CTU of the picture is contained in exactly one slice. When separate_colour_plane_flag is equal to 1, each CTU of a colour component is contained in exactly one slice (i.e., information for each CTU of the picture is present in exactly three slices, and the three slices have different colour_plane_id values).

[0222] 2.8 RPR

[0223] AVC and HEVC do not have the ability to change resolution without introducing IDR or Intra Random Access Point (IRAP) pictures; this capability can be called Adaptive Resolution Change (ARC). There are some situations or application scenarios that can benefit from ARC, such as rate adaptation in video calling and conferencing. ARC is also called dynamic resolution conversion.

[0224] ARC can also be considered a special case of Reference Picture Resampling (RPR), such as H.263 Annex P.

[0225] In VVC, ARC, also known as RPR (reference picture resampling), is included in JVET-O2001-v14. For RPR in JVET-O2001-v14, TMVP is disabled if the collocated picture has a different resolution than the current picture. In addition, BDOF and DMVR are disabled when the resolution of the reference picture is different from that of the current picture. In the SPS, the maximum picture resolution is defined. And for each picture in the PPS, its resolution (including the picture width and height in units of luma samples) is defined. When the picture resolutions are different, RPR is enabled.

[0226] 2.9 Consistency Window in VVC

[0227] The consistency window in VVC defines a rectangle. Samples within the consistency window belong to the image of interest. Samples outside the consistency window may be discarded during output.

[0228] When a consistency window is applied, the scaling ratio in the RPR is derived based on the consistency window.

[0229] 7.3.2.4 Picture Parameter Set RBSP Syntax

[0230]

[0231]

[0232] pic_width_in_luma_samples specifies the width of each decoded picture that references the PPS in units of luma samples. pic_width_in_luma_samples shall not be equal to 0, shall be an integer multiple of Max(8, MinCbSizeY), and shall be less than or equal to pic_width_max_in_luma_samples.

[0233] When subpics_present_flag is equal to 1, the value of pic_width_in_luma_samples shall be equal to pic_width_max_in_luma_samples.

[0234] pic_height_in_luma_samples specifies the height of each decoded picture that references the PPS in units of luma samples. pic_height_in_luma_samples shall not be equal to 0 and shall be an integer multiple of Max(8, MinCbSizeY) and shall be less than or equal to pic_height_max_in_luma_samples.

[0235] When subpics_present_flag is equal to 1, the value of pic_height_in_luma_samples shall be equal to pic_height_max_in_luma_samples.

[0236] Let refPicWidthInLumaSamples and refPicHeightInLumaSamples be the pic_width_in_luma_samples and pic_height_in_luma_samples, respectively, of the reference picture of the current picture that refers to this PPS. Bitstream conformance requires that all of the following conditions be met:

[0237] - pic_width_in_luma_samples*2 should be greater than or equal to

[0238] refPicWidthInLumaSamples.

[0239] - pic_height_in_luma_samples*2 should be greater than or equal to

[0240] refPicHeightInLumaSamples.

[0241] -pic_width_in_luma_samples should be less than or equal to

[0242] refPicWidthInLumaSamples*8.

[0243] -pic_height_in_luma_samples should be less than or equal to

[0244] refPicHeightInLumaSamples*8.

[0245] conformance_window_flag equal to 1 indicates that the conformance cropping window offset parameter follows in the SPS. conformance_window_flag equal to 0 indicates that the conformance cropping window offset parameter is not present.

[0246] conf_win_left_offset, conf_win_right_offset, conf_win_top_offset, and conf_win_bottom_offset specify samples of a picture in the CVS output from the decoding process in terms of a rectangular area specified in picture coordinates for output.

[0247] When conformance_window_flag is equal to 0, the values ​​of conf_win_left_offset, conf_win_right_offset, conf_win_top_offset, and conf_win_bottom_offset are inferred to be equal to 0.

[0248] The conforming cropping window contains luma samples whose horizontal picture coordinates are from SubWidthC*conf_win_left_offset to pic_width_in_luma_samples-(SubWidthC*conf_win_right_offset+1) and whose vertical picture coordinates are from SubHeightC*conf_win_top_offset to pic_height_in_luma_samples-(SubHeightC*conf_win_bottom_offset+1), inclusive.

[0249] The value of SubWidthC*(conf_win_left_offset+conf_win_right_offset) should be less than pic_width_in_luma_samples, and the value of SubHeightC*(conf_win_top_offset+conf_win_bottom_offset) should be less than pic_height_in_luma_samples.

[0250] The variables PicOutputWidthL and PicOutputHeightL are inferred as follows:

[0251]

[0252]

[0253] When ChromaArrayType is not equal to 0, the corresponding specified samples of the two chroma arrays are samples with picture coordinates (x / SubWidthC, y / SubHeightC), where (x, y) are the picture coordinates of the specified luma sample.

[0254] NOTE – The Consistent Crop Window Offset parameter is only applied on output.

[0255] All internal decoding processes are applied to the uncropped picture size.

[0256] Let ppsA and ppsB be any two PPSs that reference the same SPS. Bitstream conformance requirement: when the values ​​of pic_width_in_luma_samples and pic_height_in_luma_samples of ppsA and ppsB are the same, the values ​​of conf_win_left_offset, conf_win_right_offset, conf_win_top_offset and conf_win_bottom of ppsA and ppsB shall be the same.

[0257] 3. Technical Problems Solved by the Technical Solution Described in This Article

[0258] The ALF data in APS has the following problems:

[0259] 1. It has two flags to control whether to signal luma ALF parameters, such as alf_luma_filter_signal_flag and alf_luma_coeff_signalled_flag, which is redundant.

[0260] 2. It signals a flag for each class in the ALF to indicate whether all ALF coefficients in that class are zero. This may be unnecessary because it is rare to choose all ALF coefficients to be zero. At the same time, even with such a flag, all ALF coefficients that are zero are still signaled.

[0261] 3. Multiple condition checks and steps are required to derive the filter predictor for the luma color component. This may introduce unnecessary complexity.

[0262] 4. In VVC, pictures can be divided into slices, tiles, and tiles. Tiles are smaller units than slices and do not allow prediction of different tiles. In practical encoders, signaling ALF on / off at the slice / tile level may provide additional benefits to encoding and decoding performance.

[0263] 4. Example Techniques and Embodiments

[0264] The following list should be considered as examples to explain the general concept. These items should not be interpreted narrowly. In addition, these items can be combined in any way.

[0265] In this application document, the resolution (or dimension, or width / height or size) of a picture may refer to the resolution (or dimension, or width / height or size) of the encoded / decoded picture, or may refer to the resolution (or dimension, or width / height or size) of a consistency window in the encoded / decoded picture.

[0266] 1. It is proposed to signal only one syntax element to indicate whether there is a luma ALF coefficient to be signaled.

[0267] a. In one example, the signaling of alf_luma_coeff_signalled_flag can be skipped.

[0268] b. Alternatively, furthermore, whether the coefficients of the luma filter indicated by sfIdx are signaled (eg, alf_luma_coeff_flag[sfIdx]) may simply depend on whether there is at least one filter that needs to be signaled (eg, alf_luma_filter_signal_flag).

[0269] c. In one example, the signaling of alf_luma_coeff_flag may start from the last (ie, the maximum allowed filter index) to the first.

[0270] d. Alternatively, keep a counter to record how many filters have been coded or how many alf_luma_coeff_flags are equal to true.

[0271] i. If the counter is equal to 0 before encoding the information of the last filter, the alf_luma_coeff_flag for the last filter (eg, with the maximum allowed filter index or index equal to 0 depending on the encoding order) is not signaled and is derived as true.

[0272] e. Alternatively, in addition, when the syntax indicates that there are luma ALF coefficients to be signaled, the conforming bitstream shall satisfy that at least one coefficient of one luma filter is not equal to zero.

[0273] f. Alternatively, in addition, when the syntax indicates that there are luma ALF coefficients to be signaled, the conforming bitstream shall satisfy the signaling of at least one luma filter (eg, at least one alf_luma_coeff_flag[sfIdx] is true).

[0274] 2. It is proposed that when a class in the ALF has all-zero ALF coefficients, the all-zero ALF coefficients are still signaled.

[0275] a. In one example, a zero value (eg, zero alf_luma_coeff_abs) may be signaled for each pair of positions that share the same ALF coefficient. For example, for a 7*7 diagonal ALF filter, 12 zeros may be signaled.

[0276] b. In one example, no more than N (N is a non-negative integer) categories in the ALF can have ALF coefficients that are all zero. For example, N.

[0277] 3. It is proposed that when all categories of luma / chroma ALF coefficients signaled in APS are zero, the following pictures / slices / slices / tiles / CTUs may not use such luma / chroma ALF coefficients.

[0278] a. Alternatively, furthermore, it is not allowed to signal a zero ALF filter (eg, all coefficients are zero) in the APS.

[0279] b. Alternatively, in addition, the bitstream conformance requirement is that the luma / chroma ALF coefficients signaled in the APS should contain at least one non-zero coefficient. For example, when the luma / chroma ALF coefficients contain only zero coefficients, it should be indicated (e.g., via alf_luma_filter_signal_flag or alf_chroma_filter_signal_flag) that the luma / chroma ALF coefficients are not present in the APS.

[0280] 4. The on / off control flag for indicating that at least one CTU / CTB is coded or decoded with an enabled loop filtering method (e.g., SAO / ALF) is removed from the slice level (e.g., slice_alf_enabled_flag / slice_sao_luma_flag / slice_sao_chroma_flag) to the video unit level, and the video unit is smaller than the slice (e.g., tile / slice level).

[0281] a. In one example, for each tile / slice, a flag may be encoded to indicate whether a loop filtering method is applied to at least one sample in the tile / slice.

[0282] b. In one example, a slice-level on / off control flag (eg, slice_alf_enabled_flag) for indicating that at least one CTU / CTB is coded or decoded with an applied loop filtering method is replaced by a flag signaled at the tile / slice level.

[0283] c. In one example, a slice-level on / off control flag (e.g., slice_alf_enabled_flag) for indicating that at least one CTU / CTB is coded or decoded with an applied loop filtering method remains unchanged, and when this flag is true, a tile / slice-level on / off control flag may be further signaled.

[0284] 5. The signaling of the ALF filter can be simplified into two parts, for example, the first part indicates whether it is predicted or selected from a fixed filter or an ALF APS; the second part is the index to the fixed filter / ALF APS.

[0285] a. In one example, a flag may be signaled to indicate whether the filter is predicted from a fixed filter.

[0286] i. Alternatively, a flag may be signaled to indicate whether the filter is predicted from the ALF APS.

[0287] ii. Alternatively, a flag may be signaled / parsed to indicate whether the determined filter is selected from fixed ALF filters.

[0288] iii. Alternatively, a flag may be signaled / parsed to indicate whether the determined filter is selected from the ALF APS.

[0289] iv. Alternatively, furthermore, such a flag may be signaled / parsed under the condition that the number of ALF APSs for a color component (eg, luma) is greater than 0 (or not equal to 0).

[0290] a) In one example, when the number of ALF APSs for a color component (eg, luma) is equal to 0, this flag is not signaled / parsed and it can always be inferred that a fixed ALF filter is used.

[0291] v. In one example, the flag can be context codec or bypass codec.

[0292] a) In one example, only one context may be utilized.

[0293] b) Alternatively, more than one context may be utilized.

[0294] a. Alternatively, additionally, context modeling may depend on information of neighboring CTBs.

[0295] b. Alternatively, in addition, context modeling may depend on information of the current CTB, such as the position of the current CTB.

[0296] c. Alternatively, context modeling may also depend on decoded information, such as slice / picture type.

[0297] b. Alternatively, additionally, depending on the flag, the index to the fixed filter or ALF APS can be signaled or resolved.

[0298] i. In one example, whether to signal the ALF APS index may further depend on the number of allowed ALF APSs for the current slice / slice / tile.

[0299] a) Alternatively, when the number of allowed ALF APSs for the current slice / slice / tile is greater than 1, an index may be signaled. Otherwise, when the number of allowed ALF APSs for the current slice / slice / tile is equal to 1, no index may be signaled and a single ALF APS may be used.

[0300] ii. In one example, an indication of the ALF APS index may be signaled.

[0301] a) In one example, a truncated unary method may be utilized for signaling. Alternatively, furthermore, the maximum value is set to the number of allowed ALF APSs for the current slice / slice / tile minus K (eg, K=0 or 1).

[0302] b) In one example, a truncated binary approach may be utilized for signaling. Alternatively, furthermore, the maximum value is set to the number of allowed ALF APSs for the current slice / tile minus K (eg, K=0 or 1).

[0303] iii. In one example, the context encoding and decoding index can be used.

[0304] a) In one example, the first K bins of the binarized bin word of the index may be context-coded, and the remaining bins may be bypass-coded (eg, K=1 or based on the number of ALF APSs).

[0305] b) In one example, all binary numbers are bypassed for encoding and decoding.

[0306] 6. On / off control of filtering methods (eg, SAO, bilateral filter, ALF) may be signaled / derived in region level, where the region size may be determined at least according to the picture resolution and the maximum picture resolution.

[0307] a. Alternatively, furthermore, the size of the region is fixed for a picture, but may be different for different pictures with different resolutions.

[0308] b. In one example, assume that the maximum picture width and height in units of luma samples are denoted as maxW and maxH, respectively; the current picture width and height in units of luma samples are denoted as currW and currH, respectively. The width and height of a CTU / CTB are denoted as ctbW and ctbH, respectively. The region size represented by regW*regH can be defined as:

[0309] i. Alternatively, in addition, on / off control flags and / or auxiliary information (eg, from which fixed filter to predict and / or from which ALF APS to predict) may be signaled / parsed in region level.

[0310] ii. In one example, regW may be set to (ctbW*currW / maxW).

[0311] iii. In one example, regH can be set to (ctbH*currH / maxH).

[0312] iv. In one example, regW and / or regH may further depend on the partition structure of the current CTB.

[0313] a) Alternatively, in addition, it may further depend on the first partitioning type (eg, no partitioning (encoded as the entire CTB), quadtree partitioning, binary tree partitioning, ternary tree partitioning).

[0314] a. Alternatively, in addition, the region size should not be smaller than the sub-CU directly partitioned from the CTB.

[0315] b) In one example, regW can be set to ctbW*max(RW,currW / maxW)

[0316] c) In one example, regH can be set to ctbH*max(RH,currH / maxH)

[0317] d) In the above example, for the case of no partitioning, RW and / or RH can be set to 1.

[0318] e) In the above example, for the case of quadtree partitioning, RW and / or RH can be set to 1 / 2.

[0319] c. When RPR is enabled for a sequence, the above method can be enabled.

[0320] 7. The conforming bitstream shall satisfy: when lossless coding is enabled for a sequence / picture (eg, transquant_bypass_enabled_flag), the NAL unit type shall not be equal to APS_NUT (ie, adaptation parameter set).

[0321] a. The conforming bitstream shall satisfy: when lossless codec is enabled for a sequence / picture (eg, transquant_bypass_enabled_flag), aps_params_type shall not be equal to ALF_APS.

[0322] b. The conforming bitstream shall satisfy: when lossless codec is enabled for a sequence / picture (eg, transquant_bypass_enabled_flag), aps_params_type shall not be equal to LMCS_APS.

[0323] c. The conforming bitstream shall satisfy: when lossless codec is enabled for a sequence / picture (eg, transquant_bypass_enabled_flag), aps_params_type shall not be equal to SCALING_APS.

[0324] d. The conforming bitstream shall satisfy: when lossless codec is enabled for a sequence / picture (e.g., transquant_bypass_enabled_flag), the on / off control flags for some tools at the sequence / picture / slice / slice / tile / CTU / sub-picture level (e.g., ALF / LMCS / JCCR represented by slice_alf_enabled_flag / alf_ctb_flag, slice_lmcs_enabled_flag, slice_joint_cbcr_sign_flag) and the scaling list presentation flag (e.g., slice_scaling_list_present_flag) shall be equal to 0.

[0325] i. Alternatively, an on / off control flag and / or a zoom list presentation flag for those tools may be signaled under the condition that lossless codec is disabled for the picture.

[0326] 8. Whether and / or how the above methods are applied may be based on one or more of the following conditions:

[0327] a. Video content (e.g., screen content or natural content)

[0328] b. Messages signaled in DPS / SPS / VPS / PPS / APS / picture header / slice header / slice group header / largest codec unit (LCU) / codec unit (CU) / LCU row / LCU group / TU / PU block / video codec unit

[0329] c. Location of CU / PU / TU / block / video codec unit

[0330] d. Decoding information of the current block and / or its adjacent blocks

[0331] i. Block dimensions / block shapes of the current block and / or its neighboring blocks

[0332] e. Indication of the color format (e.g., 4:2:0, 4:4:4, RGB, or YUV)

[0333] f. Codec tree structure (e.g. dual tree or single tree)

[0334] g. Strip / slice group type and / or picture type

[0335] h. Color components (e.g., may apply only to luma and / or chroma components)

[0336] i. Time domain layer ID

[0337] j. Standard Profiles / Levels / Classes

[0338] 5. Example Embodiments of the Present Technology

[0339] Deleted parts are enclosed in double bold square brackets (e.g., [[a]] indicates that "a" has been deleted), and newly added parts are enclosed in double bold curly brackets (e.g., {{a}} indicates that "a" has been added). This embodiment is based on JVET-O2001-vE.

[0340] Example #1

[0341] This embodiment gives some examples on how to signal ALF parameters in APF.

[0342] 7.3.2.15 Adaptive Loop Filter Data Syntax

[0343]

[0344]

[0345]

[0346] Alternatively, the following may apply:

[0347]

[0348]

[0349]

[0350] 7.4.3.14 Adaptive loop filter data semantics

[0351] alf_luma_filter_signal_flag equal to 1 specifies signaling of the luma filter set.

[0352] alf_luma_filter_signal_flag equal to 0 specifies that the luma filter set is not signaled.

[0353] alf_chroma_filter_signal_flag equal to 1 specifies signaling of the chroma filter.

[0354] alf_chroma_filter_signal_flag equal to 0 specifies that no chroma filter is signaled. When ChromaArrayType is equal to 0, alf_chroma_filter_signal_flag shall be equal to 0.

[0355] The variable NumAlfFilters, which specifies the number of different adaptive loop filters, is set equal to 25.

[0356] alf_luma_clip_flag equal to 0 specifies that linear adaptive loop filtering is applied to the luma component. alf_luma_clip_flag equal to 1 specifies that non-linear adaptive loop filtering may be applied to the luma component.

[0357] alf_luma_num_filters_signalled_minus1 plus 1 specifies the number of adaptive loop filter classes that can signal luma coefficients. The value of alf_luma_num_filters_signalled_minus1 shall be in the range of 0 to NumAlfFilters-1, inclusive.

[0358] alf_luma_coeff_delta_idx[filtIdx] specifies the index of the signaled adaptive loop filter luma coefficient delta for the filter class indicated by filtIdx, ranging from 0 to NumAlfFilters - 1. When alf_luma_coeff_delta_idx[filtIdx] is not present, it is inferred to be equal to 0. The length of alf_luma_coeff_delta_idx[filtIdx] is Ceil(Log2(alf_luma_num_filters_signalled_minus1+1)) bits.

[0359] [[alf_luma_coeff_signalled_flag equal to 1 indicates that alf_luma_coeff_flag[sfIdx] is signaled. alf_luma_coeff_signalled_flag equal to 0 indicates that alf_luma_coeff_flag[sfIdx] is not signaled.

[0360] alf_luma_coeff_flag[sfIdx] equal to 1 specifies that the coefficients of the luma filter indicated by sfIdx are signaled. alf_luma_coeff_flag[sfIdx] equal to 0 specifies that all filter coefficients of the luma filter indicated by sfIdx are set to 0. When not present, alf_luma_coeff_flag[sfIdx] is set equal to 1. ]]

[0361] alf_luma_coeff_abs[sfIdx][j] specifies the absolute value of the j-th coefficient of the signaled luma filter indicated by sfIdx. If alf_luma_coeff_abs[sfIdx][j] is not present, it is inferred to be equal to 0.

[0362] The order k of exp-Golomb binarization uek(v) is equal to 3.

[0363] alf_luma_coeff_sign[sfIdx][j] specifies the sign of the j-th luma coefficient of the filter indicated by sfIdx as follows:

[0364] - If alf_luma_coeff_sign[sfIdx][j] is equal to 0, the corresponding luma filter coefficient is positive.

[0365] Otherwise (alf_luma_coeff_sign[sfIdx][j] is equal to 1), the corresponding luma filter coefficient is negative.

[0366] When alf_luma_coeff_sign[sfIdx][j] is not present, it is inferred to be equal to 0.

[0367] The variable filtCoeff[sfIdx][j] with sfIdx=0..alf_luma_num_filters_signalled_minus1, j=0..11 is initialized as follows:

[0368]

[0369] With element AlfCoeffL [adaption_parameter_set_id][filtIdx][j] with lultIdx=0..NumAlfFilters-1 and j=0..11 luma filter coefficients AlfCoeff L The derivation of [adaptation_parameter_set_id] is as follows:

[0370] Alf Coeff L [adaptation_parameter_set_id][filtIdx][j]=filtCoeff[alf_luma_coeff_delta_idx[filtIdx]][j](7-48)

[0371]

[0372] 5.2 Example #2

[0373] This embodiment gives an example on how to signal the ALF parameters for the luma CTB.

[0374]

[0375]

[0376]

[0377] [[alf_ctb_use_first_aps_flag equal to 1 specifies that the filter information in the APS with adaptive_parameter_set_id equal to slice_alf_aps_id_luma[0] is used.

[0378] alf_ctb_use_first_aps_flag equal to 0 specifies that the luma CTB does not use the filter information in the APS with adaptive_parameter_set_id equal to slice_alf_aps_id_luma[0]. When alf_ctb_use_first_aps_flag is not present, it is inferred to be 0. ]]

[0379] alf_use_aps_flag equal to 0 specifies that one of the fixed filter sets is applied to the luma CTB. alf_use_aps_flag equal to 1 specifies that the filter set from the APS is applied to the luma CTB. When alf_use_aps_flag is not present, it is inferred to be equal to 0.

[0380] alf_luma_prev_filter_idx[[_minus1 plus 1]] specifies the previous filter to be applied to the luma CTB. The value of alf_luma_prev_filter_idx[[_minus1]] shall be in the range of 0 to slice_num_alf_aps_ids_luma-{{1}}[[2]], inclusive. When alf_luma_prev_filter_idx[[_minus1]] is not present, it is inferred to be equal to 0.

[0381] The variable AlfCtbFiltSetIdxY[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY] specifies that the filter set index for the luma CTB at position (xCtb, yCtb) is derived as follows:

[0382] -[[If alf_ctb_use_first_aps_flag is equal to 1, set AlfCtbFiltSetIdxY[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY] equal to 16.

[0383] - Otherwise, if alf_use_aps_flag is equal to 0, set AlfCtbFiltSetIdxY[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY] equal to alf_luma_fixed_filter_idx.

[0384] Otherwise, set AlfCtbFiltSetIdxY[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY] equal to {{16+alf_luma_prev_filter_idx}}[[17+alf_luma_prev_filter_idx_minus1]].

[0385] alf_luma_fixed_filter_idx specifies the fixed filter to be applied to the luma CTB. The value of alf_luma_fixed_filter_idx should be in the range of 0 to 15 (inclusive).

[0386] Table 9-77 – Binarization of syntax elements and associations

[0387]

[0388] Figure 9is a block diagram illustrating an example of a video processing system 900 in which the various techniques disclosed herein may be implemented. Various implementations may include some or all of the components of system 900. System 900 may include an input 902 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 in a compressed or encoded format. Input 902 may represent a network interface, a peripheral bus interface, or a storage interface. Examples of network interfaces include wired interfaces (e.g., Ethernet, passive optical network (PON), etc.), wireless interfaces such as Wi-Fi or cellular interfaces.

[0389] System 900 may include a codec component 904 that implements various codecs or encoding methods described in this application document. Codec component 904 can reduce the average bit rate of the video from input 902 to the output of codec component 904 to generate a codec representation of the video. Therefore, codec technology is sometimes referred to as video compression or video transcoding technology. The output of codec component 904 can be stored or transmitted via connected communications, as shown in component 906. The stored or transmitted bitstream (or codec) representation of the video received at input 902 can be used by component 908 to generate pixel values ​​or send to a displayable video of display interface 910. The process of generating a user-viewable video from a bitstream representation is sometimes referred to as video decompression. In addition, although some video processing operations are referred to as "codec" operations or tools, it should be understood that the codec tools or operations are used at the encoder, and the corresponding decoding tools or operations of the inverse codec results will be performed by the decoder.

[0390] Examples of peripheral bus interfaces or display interfaces may include Universal Serial Bus (USB), High-Definition Multimedia Interface (HDMI), or DisplayPort, etc. Examples of storage interfaces include SATA (Serial Advanced Technology Attachment), PCI, IDE interfaces, etc. The technology described herein may be implemented in various electronic devices, such as mobile phones, laptop computers, smartphones, or other devices capable of performing digital data processing and / or video display.

[0391] Figure 10is a block diagram of a video processing device 1000. Device 1000 can be used to implement one or more methods described herein. Device 1000 can be implemented in a smartphone, tablet computer, computer, Internet of Things (IoT) receiver, etc. Device 1000 may include one or more processors 1002, one or more memories 1004, and video processing hardware 1006. (Multiple) processors 1002 can be configured to implement one or more methods described in this application document. (Multiple) memories 1004 can be used to store data and code for implementing the methods and techniques described herein. Video processing hardware 1006 can be used to implement some of the techniques described in this application document in hardware circuits. In some implementations, hardware 1006 can be implemented entirely or partially in processor 1002, such as a graphics processor.

[0392] Figure 11 1 is a flow chart of an example method for video processing. The method 1100 includes, at operation 1110, determining, for a conversion between a current region of video and a bitstream representation of the video, whether a luma adaptive loop filter is used during the conversion and whether luma adaptive loop filter coefficients are included in the bitstream representation, such that a single syntax element in the bitstream representation indicates the use of the luma adaptive loop filter and the signaling of the luma adaptive loop filter coefficients.

[0393] The method 1100 includes, at operation 1120 , performing a conversion based on the determination.

[0394] Figure 12 1 is a flow chart of an example method for video processing. The method 1200 includes, at operation 1210, performing a conversion between a current region of video and a bitstream representation of the video such that an adaptive loop filter is used during the conversion and the bitstream representation conforms to a grammatical rule that specifies that coefficients of the adaptive loop filter signaled in the bitstream representation include zero-valued adaptive loop filter coefficients.

[0395] Figure 13 13 is a flow chart of an example method for video processing. The method 1300 includes, at operation 1310, for converting between a current region of video and a bitstream representation of the video, determining adaptive loop filter coefficients of zero values ​​for a previous region of the video signaled in the bitstream representation that are not used in the conversion.

[0396] The method 1300 includes, at operation 1320 , performing a conversion based on the determination.

[0397] Figure 1414 is a flow chart of an example method for video processing. The method 1400 includes, at operation 1410, performing a conversion between a current region of a video and a bitstream representation of the video such that the bitstream representation conforms to a syntax rule that specifies that a flag indicating whether loop filtering is used for the conversion is included in the bitstream representation at a video unit level including the current region, the video unit level being less than a slice level of the video.

[0398] Figure 15 15 is a flow chart of an example method for video processing. The method 1500 includes, at operation 1510, performing conversion between a current region of a video and a bitstream representation of the video, such that the conversion includes use of an adaptive loop filter, and the bitstream representation is configured to indicate the adaptive loop filter using two-part signaling, the two-part signaling including a first part indicating a technique for determining the adaptive loop filter and a second part indicating an index used by the technique.

[0399] Figure 16 is a flow chart of an example method of video processing. The method 1600 includes, at operation 1610, determining a size of a current region of video that shares a common loop filter setting based on properties of the video, the common loop filter setting used for conversion between the current region and a bitstream representation of the video.

[0400] The method 1600 includes, at operation 1620 , performing a conversion based on the determination.

[0401] Figure 17 17 is a flow chart of an example method for video processing. The method 1700 includes, at operation 1710, performing a lossless conversion between a current region of a video and a bitstream representation of the video such that the bitstream representation conforms to syntax rules that restrict values ​​of syntax fields associated with the current region in the bitstream representation because the conversion is lossless.

[0402] In some embodiments, the following solutions may be implemented as preferred technical solutions.

[0403] A1. A method of video processing, comprising: for a conversion between a current region of a video and a bitstream representation of the video, determining whether to use a luma adaptive loop filter during the conversion and whether to include luma adaptive loop filter coefficients in the bitstream representation, wherein a single syntax element in the bitstream representation indicates the use of the luma adaptive loop filter and the signaling of the luma adaptive loop filter coefficients; and performing the conversion based on the determination.

[0404] A2. The method according to solution A1, wherein the single syntax element is a single value indicating that the luma adaptive loop filter coefficient with a specific index is signaled, and wherein the single syntax element is a zero value indicating that the luma adaptive loop filter coefficient with a specific index is excluded from the bitstream representation.

[0405] A3. The method according to solution A2, wherein the single syntax element is alf_luma_coeff_flag, and wherein the specific index is denoted sfIdx.

[0406] A4. The method according to any of solutions A1 to A3, wherein the single syntax element excludes alf_luma_coeff_signalled_flag.

[0407] A5. A method according to solution A1, wherein the single syntax element is a single value indicating the indication of the use of the luma adaptive filter with a specific index, and wherein the single syntax element is a zero value indicating that the indication of the use of the luma adaptive filter with a specific index is excluded from the bitstream representation.

[0408] A6. The method according to solution A5, wherein the single syntax element is alf_luma_coeff_signalled_flag, and wherein the specific index is denoted sfIdx.

[0409] A7. Method according to solution A1, wherein the luma adaptive loop filter coefficients are conditionally signaled in the bitstream representation based on whether or not signaling of at least one luma adaptive loop filter is required.

[0410] A8. The method of solution A7, wherein the luma adaptive loop filter coefficients for the multiple luma adaptive loop filters are signaled in reverse order of the filter indices for the multiple luma adaptive loop filters.

[0411] A9. The method according to solution A1, further comprising: maintaining a counter to determine the number of luma adaptive loop filters encoded in the bitstream representation.

[0412] A10. The method according to solution A1, wherein, when signaling a single syntax element indicating signaling of a luma adaptive loop filter, the bitstream representation comprises at least one non-zero luma adaptive loop filter coefficient.

[0413] A11. The method according to solution A1, wherein, when a single syntax element indicating luma adaptive loop filter coefficients is signaled, the bitstream representation comprises at least one luma adaptive loop filter.

[0414] A12. The method of any of solutions A1 to A11, wherein the luma adaptive loop filter coefficients are luma adaptive loop filter (ALF) coefficients.

[0415] A13. A method of video processing, comprising: performing a conversion between a current region of a video and a bitstream representation of the video, wherein an adaptive loop filter is used during the conversion, and wherein the bitstream representation conforms to grammatical rules that specify that coefficients of the adaptive loop filter signaled in the bitstream representation include zero-valued adaptive loop filter coefficients.

[0416] A14. Method according to solution A13, wherein the syntax rules provide for signaling a single zero-valued coefficient for adaptive loop filter coefficients that share coefficient values ​​due to symmetry.

[0417] A15. Method according to solution A14, wherein for a 7x7 diamond adaptive loop filter, 12 zero-valued coefficients are signaled.

[0418] A16. The method of solution A13, wherein the grammar rules provide for limiting the number of adaptive loop filters having zero-valued adaptive loop filter coefficients to a number N, and wherein N is a non-negative integer.

[0419] A17. The method according to solution A16, wherein N=1.

[0420] A18. A method of video processing, comprising: for a conversion between a current region of a video and a bitstream representation of the video, determining adaptive loop filter coefficients of zero values ​​for a previous region of the video signaled in the bitstream representation that are not used in the conversion; and performing the conversion based on the determination.

[0421] A19. The method of solution A18, wherein the current region corresponds to a luminance region.

[0422] A20. The method of solution A18, wherein the current region corresponds to a chroma region.

[0423] A21. The method of any of solutions A18 to A20, wherein the current region corresponds to a picture, a slice, a tile, or a codec tree unit (CTU).

[0424] A22. The method of solution A18, wherein the zero-valued adaptive loop filter coefficients are signaled in a parameter set different from the adaptive parameter set (APS).

[0425] A23. A video processing method, comprising: performing a conversion between a current region of a video and a bitstream representation of the video, wherein the bitstream representation conforms to a grammatical rule, the grammatical rule providing that a flag indicating whether loop filtering is used for the conversion is included in the bitstream representation at a video unit level including the current region, the video unit level being less than a slice level of the video.

[0426] A24. The method of solution A23, wherein the current region is a codec tree unit (CTU) or a codec tree block (CTB) of the video.

[0427] A25. The method of solution A23 or 24, wherein the video unit level corresponds to the tile level.

[0428] A26. The method of solution A23 or 24, wherein the video unit level corresponds to the slice level.

[0429] A27. The method of any one of solutions A23 to A26, wherein the loop filtering comprises adaptive loop filtering (ALF) or sample adaptive offset (SAO) filtering.

[0430] A28. The method of any of solutions A23 to A27, wherein the bitstream representation comprises a video unit flag to indicate that loop filtering is applied to at least one sample in the video unit at the video unit level.

[0431] A29. The method of any of solutions A1 to A28, wherein performing the conversion comprises generating a bitstream representation from the current region.

[0432] A30. The method of any of solutions A1 to A28, wherein performing the conversion comprises generating the current region from a bitstream representation.

[0433] A31. An apparatus in a video system, comprising a processor and a non-transitory memory having instructions thereon, wherein the instructions, when executed by the processor, cause the processor to implement the method according to any one of solutions A1 to A30.

[0434] A32. A computer program product stored on a non-transitory computer-readable medium, the computer program product comprising program code for performing any of the solutions A1 to A30.

[0435] A33. A computer-readable medium storing a bitstream representation generated according to the method of any of Solutions A1 to A30.

[0436] In some embodiments, the following additional solutions may be implemented as preferred technical solutions.

[0437] B1. A video processing method, comprising: performing a conversion between a current region of a video and a bitstream representation of the video, wherein the conversion includes using an adaptive loop filter, and wherein the bitstream representation is configured to indicate the adaptive loop filter using two-part signaling, the two-part signaling comprising: a first part indicating a technique for determining the adaptive loop filter, and a second part indicating an index used by the technique.

[0438] B2. The method according to solution B1, wherein the technique comprises selecting from a fixed filter bank or selecting from at least one adaptive loop filter (ALF) adaptive parameter set (APS).

[0439] B3. The method according to solution B2, wherein the bitstream representation comprises a flag of zero value indicating that the filter set of the adaptive loop filter is selected from a fixed filter bank.

[0440] B4. Method according to solution B2 or B3, wherein the bitstream representation comprises a single-valued flag indicating a filter set for selecting the adaptive loop filter from at least one ALF APS.

[0441] B5. The method according to solution B2, wherein the bitstream representation comprises a flag indicating that the number of ALF APSs for color components of the current region is greater than zero.

[0442] B6. The method of solution B5, wherein the color component is a luminance component of the video.

[0443] B7. A method according to solution B2, wherein, when the number of ALF APSs for the color components of the current region is zero, the bitstream representation excludes a flag indicating selection of an adaptive loop filter from at least one ALF APS, and wherein the inferred flag indicates selection of an adaptive loop filter from a fixed filter group.

[0444] B8. The method according to any of the solutions B3 to B7, wherein the flag is context coded or bypass coded.

[0445] B9. A method according to solution B3 or B4, wherein the value of the index is based on the flag.

[0446] B10. Method according to solution B4, wherein whether to signal the index in the bitstream representation is based on the number of allowed ALF APSs for the current region.

[0447] B11. Method according to solution B10, wherein when the number of allowed ALFAPS for the current region is greater than 1, an index is signaled in the bitstream representation.

[0448] B12. Method according to solution B10, wherein the index is excluded from the bitstream representation when the number of allowed ALFAPS for the current region is equal to 1.

[0449] B13. The method according to any of the solutions B10 to B12, wherein the current region comprises a strip, a sheet or a brick.

[0450] B14. Method according to solution B4, wherein an indication of an index of at least one ALF APS is signaled in the bitstream representation.

[0451] B15. The method according to solution B14, wherein the indication is encoded and decoded using a truncated unary method.

[0452] B16. The method according to solution B14, wherein the indication is encoded and decoded using a truncated binary method.

[0453] B17. Method according to solution B15 or B16, wherein the indicated maximum value is set to the number of ALF APSs allowed for the current region minus K, and wherein K is an integer.

[0454] B18. The method according to solution B17, wherein K=0 or K=1.

[0455] B19. According to the method of solution B1, the index is context encoded and decoded.

[0456] B20. A method according to solution B19, wherein the first K bins of the indexed binarized binary number character are context-encoded and the remaining bins of the indexed binarized binary number character are bypass-encoded, and wherein K is an integer.

[0457] B21. The method according to solution B20, where K=1.

[0458] B22. The method according to solution B19, wherein each of the plurality of binaries of the binarized binary number character of the index is bypass coded.

[0459] B23. The method according to any of the solutions B1 to B22, wherein an adaptive loop filter (ALF) is a filtering process applied as part of the conversion and controlled by parameters of an adaptive parameter set (APS) in the bitstream representation.

[0460] B24. A method according to any of solutions B1 to B23, wherein an adaptation parameter set (APS) is a syntax structure comprising one or more syntax elements that apply to zero or more slices of a video, the zero or more slices of the video being determined by one or more syntax elements in a slice header corresponding to the zero or more slices.

[0461] B25. A method of video processing, comprising: determining, based on properties of the video, a size of a current region of a video that shares a common loop filter setting, the common loop filter setting being used for conversion between the current region and a bitstream representation of the video; and performing conversion based on the determination.

[0462] B26. The method of solution B25, wherein the attribute is the resolution of the picture comprising the current region.

[0463] B27. The method of solution B25, wherein the attribute is the maximum resolution of the picture that includes the current region.

[0464] B28. A method according to solution B25, wherein the width in luma samples and the height in luma samples of the maximum size of the picture are denoted as maxW and maxH, respectively, wherein the width in luma samples and the height in luma samples of the size of the current picture including the current region are denoted as currW and currH, respectively, wherein the width and height of the size of the current codec tree unit (CTU) or the current codec tree block (CTB) are denoted as ctbW and ctbH, respectively, and wherein the width and height of the size of the current region are denoted as regW and regH, respectively.

[0465] B29. The method according to solution B28, wherein regW = (ctbW × currW / maxW).

[0466] B30. Method according to solution B28, where regH = (ctbH x currH / maxH).

[0467] B31. The method according to solution B28, wherein regW or regH is based on the partition structure of the current CTB or the current CTU.

[0468] B32. A video processing method, comprising: performing a lossless conversion between a current region of a video and a bitstream representation of the video, wherein the bitstream representation conforms to grammatical rules that restrict the values ​​of grammatical fields associated with the current region in the bitstream representation because the conversion is lossless.

[0469] B33. The method according to solution B32, wherein the syntax rule specifies that the network abstraction layer (NAL) unit type is not equal to the NAL unit type of the adaptation parameter set (APS).

[0470] B34. The method according to solution B32, wherein the syntax rule specifies that the value of the syntax field is different from one or more values ​​in an adaptive loop filter (ALF) adaptation parameter set (APS).

[0471] B35. A method according to solution B32, wherein the syntax rules specify that the value of the syntax field differs from one or more values ​​in a Luma Map for Chroma Scale (LMCS) Adaptation Parameter Set (APS).

[0472] B36. A method according to solution B32, wherein the syntax rule specifies that the value of the syntax field is different from one or more values ​​in the scaling list adaptation parameter set (APS).

[0473] B37. A method according to any one of solutions B1 to B36, wherein the conversion is performed based on at least one or more of: (a) video content, (b) a message signaled in a decoder parameter set (DPS), sequence parameter set (SPS), video parameter set (VPS), picture parameter set (PPS), adaptation parameter set (APS), picture header, slice header, slice group header, largest codec unit (LCU), LCU row, LCU group, transform unit (TU), prediction unit (PU) or video codec unit, (c) a position of a codec unit (CU), TU, PU, ​​current block or video codec unit in a current picture including the current region, (d) decoding information of the current region, (e) an indication of a color format of the video, (f) a codec tree structure, (g) a slice type, slice group type or picture type, (h) color components of the video, (i) a temporal layer ID, and (j) a profile, level or grade of the standard.

[0474] B38. The method of any of solutions B1 to B37, wherein performing the conversion comprises generating a bitstream representation from the current region.

[0475] B39. The method of any of solutions B1 to B37, wherein performing the conversion comprises generating the current region from a bitstream representation.

[0476] B40. An apparatus in a video system, comprising a processor and a non-transitory memory having instructions thereon, wherein the instructions, when executed by the processor, cause the processor to implement a method according to any one of solutions B1 to B39.

[0477] B41. A computer program product stored on a non-transitory computer-readable medium, the computer program product comprising a program code for performing a method according to any one of solutions B1 to B39.

[0478] B42. A computer-readable medium storing a bitstream representation generated according to the method of any one of solutions B1 to B39.

[0479] In the above solutions, performing a conversion includes using the results of a previous decision step (e.g., using or not using certain encoding or decoding steps) during an encoding or decoding operation to obtain the conversion result. In the above solutions, video processing can include video encoding and decoding or encoding or compression or transcoding (changing from one format or bit rate to another format or bit rate), decoding or decompression. In addition, these solutions can be applied to other visual data such as images.

[0480] The disclosed and other solutions, examples, embodiments, modules, and functional operations described in this application document can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or any combination thereof. The disclosed and other embodiments can be implemented as one or more computer program products, i.e., one or more modules encoding computer program instructions on a tangible, non-volatile computer-readable medium for execution by a data processing apparatus or to control the operation of the data processing apparatus. A computer-readable medium can be a machine-readable storage device, a machine-readable storage substrate, a storage device, a composition of matter that effects a machine-readable propagated signal, or any combination thereof. The term "data processing unit" or "data processing apparatus" includes all devices, equipment, and machines for processing data, including, for example, a programmable processor, a computer, or a plurality of processors or computers. In addition to hardware, the apparatus may also include code that creates an execution environment for a computer program, such as code constituting processor firmware, a protocol stack, a database management system, an operating system, or any combination thereof. A propagated signal is an artificially generated signal, such as a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode or decode information for transmission to a suitable receiver device.

[0481] A computer program (also referred to as a program, software, software application, script, or code) may be written in any form of programming language (including compiled or interpreted languages) and may be deployed in any form, including as a standalone 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 may 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, or in multiple coordinated files (e.g., files storing one or more modules, subroutines, or portions of code). A computer program may be deployed for execution on one or more computers, located at one site or distributed across multiple sites and interconnected by a communications network.

[0482] The processes and logic flows described in this application 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, and the apparatus can also be implemented as, special-purpose logic circuitry, such as an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).

[0483] For example, processors suitable for executing computer programs include general-purpose and special-purpose microprocessors, as well as any one or more of any type of digital computer. Typically, a processor will receive instructions and data from read-only memory or 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. Typically, a computer will also include one or more mass storage devices for storing data, such as magnetic, magneto-optical, or optical disks, or be operatively coupled to one or more mass storage devices to receive data from them or transfer data to one or more mass storage devices, or both. However, a computer need not have such devices. Computer-readable media suitable for storing computer program instructions and data include all forms of nonvolatile memory, media, and storage devices, including, for example, semiconductor memory devices such as EPROM, EEPROM, and flash memory devices; magnetic disks, such as internal or removable hard disks; magneto-optical disks; and CD ROM and DVD ROM disks. The processor and memory may be supplemented by, or incorporated into, special-purpose logic circuitry.

[0484] While this patent document contains many specifics, they should not be construed as limitations on the scope of any invention or the claims, but rather as descriptions of features for particular embodiments of particular inventions. Certain features described in this patent document in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various functions described in the context of a single embodiment can also be implemented separately in multiple embodiments, or in any suitable subcombination. Furthermore, while the features described above may be described as functioning in certain combinations, or even initially claimed to be so, in some cases one or more features in a claim combination may be removed from the combination, and a claim combination may be directed to a subcombination or variations of a subcombination.

[0485] Likewise, while operations are depicted in a particular order in the drawings, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, in order to achieve desired results. Furthermore, the separation of various system components in the embodiments described in this patent document should not be understood as requiring such separation in all embodiments.

[0486] Only a few implementations and examples are described, and other implementations, enhancements, and variations can be made based on what is described and illustrated in this patent document.

Claims

1. A method for processing video data, comprising: performing conversion between a current block of a current region of a video and a bitstream of the video, wherein the conversion comprises applying an adaptive loop filter to the current block, and wherein the bitstream is configured to indicate the adaptive loop filter using a plurality of syntax elements, the plurality of syntax elements comprising: A first syntax element among the plurality of syntax elements, the first syntax element being alf_use_aps_flag, the first syntax element indicating whether a fixed filter group or a filter group from an adaptive parameter set (APS) is applied to the current block, a second syntax element of the plurality of syntax elements, the second syntax element being alf_luma_prev_filter_idx, the second syntax element indicating an index of a filter bank from the APS, and A third syntax element among the plurality of syntax elements, the third syntax element being alf_luma_fixed_filter_idx, the third syntax element indicating an index of the fixed filter group, The bitstream includes a fourth syntax element in a slice header, the fourth syntax element is num_alf_aps_ids_luma, and the fourth syntax element indicates the number of adaptive loop filters APS used for the current region. When the value of the fourth syntax element in the slice header is greater than 1, the first syntax element is included in the bitstream; when the value of the fourth syntax element in the slice header is equal to 1, the first syntax element is included in the bitstream. wherein, when the value of the first syntax element is equal to 1 and the value of the fourth syntax element in the slice header is greater than 1, the bitstream includes the second syntax element indicating the index of the filter bank from the APS, and When the first syntax element is equal to 0, the third syntax element is included in the bitstream.

2. The method according to claim 1, wherein The first syntax element is 0, indicating that the fixed filter group is applied to the current block.

3. The method according to claim 1, wherein The first syntax element is 1, indicating that the filter group from the APS is applied to the current block.

4. The method according to claim 1, wherein In response to the value of the fourth syntax element in the slice header being equal to 0, the bitstream does not include the first syntax element, and wherein the first syntax element is inferred to indicate that the fixed filter bank is applied to the current block.

5. The method according to claim 1, wherein In response to the value of the fourth syntax element in the slice header being equal to 1, the second syntax element indicating the index of the filter bank from the APS is not included in the bitstream.

6. The method according to claim 1, wherein The current region is a stripe.

7. The method according to claim 1, wherein The second syntax element indicating the index of the filter bank from the APS is encoded using a truncated binary method.

8. The method according to claim 1, wherein The maximum value of the second syntax element indicating the index of the filter bank from the APS is set to the number of allowed ALF APSs for the current region minus K, and where K=1.

9. The method according to claim 1, wherein: All bins of the binary bin string of the second syntax element indicating an index from a filter bank of the APS are bypass coded.

10. The method according to claim 1, wherein The first syntax element is context coded or bypass coded.

11. The method according to claim 1, wherein The current region includes a strip, a slice, or a brick.

12. The method according to claim 1, wherein The second syntax element indicating the index of the filter bank from the APS is encoded using a truncated unary method.

13. The method according to claim 1, wherein The second syntax element indicating an index of a filter bank from the APS is context coded.

14. The method according to claim 1, wherein The first K bins of the binarized binary number word of the second syntax element indicating the index from the filter group of the APS are context-coded, and the remaining bins of the binarized binary number word of the second syntax element indicating the index from the filter group of the APS are bypass-coded, and wherein K is an integer.

15. The method according to claim 14, wherein K=1。 16. The method according to claim 1, wherein The adaptive loop filter ALF is a filtering process applied as part of the conversion and controlled by parameters of the APS in the bitstream representation.

17. The method according to claim 1, wherein The APS is a syntax structure that includes one or more syntax elements that apply to zero or more slices of the video, the zero or more slices of the video being determined by one or more syntax elements in a slice header corresponding to the zero or more slices.

18. The method according to claim 1, wherein The converting includes encoding the video into the bitstream.

19. The method according to claim 1, wherein The converting includes decoding the video from the bitstream.

20. An apparatus for processing video data, comprising a processor and non-transitory memory having instructions thereon, wherein the instructions, when executed by the processor, cause the processor to: performing conversion between a current block of a current region of a video and a bitstream of the video, wherein the conversion comprises applying an adaptive loop filter to the current block, and wherein the bitstream is configured to indicate the adaptive loop filter using a plurality of syntax elements, the plurality of syntax elements comprising: A first syntax element among the plurality of syntax elements, the first syntax element being alf_use_aps_flag, the first syntax element indicating whether a fixed filter group or a filter group from an adaptive parameter set (APS) is applied to the current block, a second syntax element of the plurality of syntax elements, the second syntax element being alf_luma_prev_filter_idx, the second syntax element indicating an index of a filter bank from the APS, and A third syntax element among the plurality of syntax elements, the third syntax element being alf_luma_fixed_filter_idx, the third syntax element indicating an index of the fixed filter group, The bitstream includes a fourth syntax element in a slice header, the fourth syntax element is num_alf_aps_ids_luma, and the fourth syntax element indicates the number of adaptive loop filters APS used for the current region. When the value of the fourth syntax element in the slice header is greater than 1, the first syntax element is included in the bitstream; when the value of the fourth syntax element in the slice header is equal to 1, the first syntax element is included in the bitstream. wherein, when the value of the first syntax element is equal to 1 and the value of the fourth syntax element in the slice header is greater than 1, the bitstream includes the second syntax element indicating the index of the filter bank from the APS, and When the first syntax element is equal to 0, the third syntax element is included in the bitstream.

21. The device according to claim 20, wherein The first syntax element is 0, indicating that the fixed filter group is applied to the current block; The first syntax element is 1, indicating that the filter group from the APS is applied to the current block; wherein, in response to a value of a fourth syntax element in the slice header being equal to 0, the bitstream does not include the first syntax element, and wherein the first syntax element is inferred to indicate that the fixed filter bank is applied to the current block; In response to a value of the fourth syntax element in the slice header being equal to 1, the bitstream does not include the second syntax element indicating the index of the filter bank from the APS.

22. The device according to claim 20, wherein The current region is a strip; wherein the second syntax element indicating the index of the filter bank from the APS is encoded and decoded using a truncated binary method; wherein a maximum value of the second syntax element indicating an index of a filter bank from the APS is set to the number of allowed ALF APSs for the current region minus K, and wherein K=1; and All bins of the binary bin string of the second syntax element indicating the index of the filter bank from the APS are bypass coded.

23. A non-transitory computer-readable storage medium storing instructions that cause a processor to: performing conversion between a current block of a current region of a video and a bitstream of the video, wherein the conversion comprises applying an adaptive loop filter to the current block, and wherein the bitstream is configured to indicate the adaptive loop filter using a plurality of syntax elements, the plurality of syntax elements comprising: A first syntax element among the plurality of syntax elements, the first syntax element being alf_use_aps_flag, the first syntax element indicating whether a fixed filter group or a filter group from an adaptive parameter set (APS) is applied to the current block, a second syntax element of the plurality of syntax elements, the second syntax element being alf_luma_prev_filter_idx, the second syntax element indicating an index of a filter bank from the APS, and A third syntax element among the plurality of syntax elements, the third syntax element being alf_luma_fixed_filter_idx, the third syntax element indicating an index of the fixed filter group, The bitstream includes a fourth syntax element in a slice header, the fourth syntax element is num_alf_aps_ids_luma, and the fourth syntax element indicates the number of adaptive loop filters APS used for the current region. When the value of the fourth syntax element in the slice header is greater than 1, the first syntax element is included in the bitstream; when the value of the fourth syntax element in the slice header is equal to 1, the first syntax element is included in the bitstream. wherein, when the value of the first syntax element is equal to 1 and the value of the fourth syntax element in the slice header is greater than 1, the bitstream includes the second syntax element indicating the index of the filter bank from the APS, and When the first syntax element is equal to 0, the third syntax element is included in the bitstream.

24. The non-transitory computer-readable storage medium of claim 23, wherein: The first syntax element is 0, indicating that the fixed filter group is applied to the current block; The first syntax element is 1, indicating that the filter group from the APS is applied to the current block; wherein, in response to a value of a fourth syntax element in the slice header being equal to 0, the bitstream does not include the first syntax element, and wherein the first syntax element is inferred to indicate that the fixed filter bank is applied to the current block; wherein, in response to a value of a fourth syntax element in the slice header being equal to 1, the bitstream does not include the second syntax element indicating the index of the filter bank from the APS; Wherein, the current region is a strip; wherein the second syntax element indicating the index of the filter bank from the APS is encoded and decoded using a truncated binary method; wherein a maximum value of the second syntax element indicating an index of a filter bank from the APS is set to the number of allowed ALF APSs for the current region minus K, and wherein K=1; and All bins of the binary bin string of the second syntax element indicating the index of the filter bank from the APS are bypass coded.

25. A method for storing a bitstream of a video, comprising: generating the bitstream for a current block of a current region of the video, wherein the generating comprises applying an adaptive loop filter to the current block, and wherein the bitstream is configured to indicate the adaptive loop filter using a plurality of syntax elements, the plurality of syntax elements comprising: A first syntax element among the plurality of syntax elements, the first syntax element being alf_use_aps_flag, the first syntax element indicating whether a fixed filter group or a filter group from an adaptive parameter set (APS) is applied to the current block, a second syntax element of the plurality of syntax elements, the second syntax element being alf_luma_prev_filter_idx, the second syntax element indicating an index of a filter bank from the APS, and A third syntax element among the plurality of syntax elements, the third syntax element being alf_luma_fixed_filter_idx, the third syntax element indicating an index of the fixed filter group, storing the bitstream in a non-transitory computer-readable recording medium, The bitstream includes a fourth syntax element in a slice header, the fourth syntax element is num_alf_aps_ids_luma, and the fourth syntax element indicates the number of adaptive loop filters APS used for the current region. When the value of the fourth syntax element in the slice header is greater than 1, the first syntax element is included in the bitstream; when the value of the fourth syntax element in the slice header is equal to 1, the first syntax element is included in the bitstream. wherein, when the value of the first syntax element is equal to 1 and the value of the fourth syntax element in the slice header is greater than 1, the bitstream includes the second syntax element indicating the index of the filter bank from the APS, and When the first syntax element is equal to 0, the third syntax element is included in the bitstream.