Two-part signaling of adaptive loop filters in video coding
By introducing a single syntax element in video encoding to indicate the use of Luma Adaptive Loop Filter and coefficient signaling, the problem of redundancy and complexity of ALF parameter signaling in the prior art is solved, and encoding efficiency and performance are improved.
Patent Information
- Application Number
- JP2023122345
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-09-18
- Filing Date
- 2023-07-27
- Publication Date
- 2025-04-08
- Estimated Expiration
- 2040-09-18
AI Technical Summary
In the existing video encoding technology, the parameter signaling of adaptive loop filtering (ALF) has redundancy and complexity, which affects encoding performance.
Indicates whether to use Luma Adaptive Loop Filter and whether its coefficients are signaled and transformed according to that decision during video processing.
The signalization process of ALF parameters is simplified, redundant checking and complexity are reduced, and the efficiency and performance of video encoding are improved.
Smart Images

Figure 0007659014000039 
Figure 0007659014000040 
Figure 0007659014000041
Abstract
Description
[Technical field]
[0001] [CROSS REFERENCE TO RELATED APPLICATIONS] This application is a divisional application of Japanese Application No. 2022-517344 based on International Patent Application No. PCT / CN2020 / 116086 filed on September 18, 2020, which claims priority and the benefit of International Patent Application No. PCT / CN2019 / 106420 filed on September 18, 2019. All of the aforementioned patent applications are incorporated herein by reference in their entirety.
[0002] [Technical field] This patent document relates to video encoding and decoding. [Background technology]
[0003] Despite advances in video compression, digital video still accounts for the largest bandwidth usage in the Internet and other digital communications networks. As the number of connected user devices capable of receiving and displaying video increases, the bandwidth demands for digital video usage are expected to continue to grow. Summary of the Invention
[0004] The devices, systems, and methods relate to digital video coding, and in particular to video and image coding and decoding in which adaptive loop filtering is used.
[0005] In one example aspect, a method of video processing is disclosed that includes determining, for a conversion between a current region of a 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, where a single syntax element in the bitstream representation indicates the use of a luma adaptive loop filter and signaling of the luma adaptive loop filter coefficients, and performing the conversion based on the determination.
[0006] In another exemplary aspect, a video processing method is disclosed that includes performing a conversion between a current region of a video and a bitstream representation of the video, where an adaptive loop filter is used during the conversion, and where the bitstream representation complies with a syntax rule that specifies that coefficients of the adaptive loop filter signaled in the bitstream representation include zero-valued adaptive loop filter coefficients.
[0007] In yet another exemplary aspect, a method of video processing is disclosed that includes determining, for a conversion between a current region of a video and a bitstream representation of the video, that zero-valued adaptive loop filter coefficients of a previous region of the video that are signaled in the bitstream representation are not used in the conversion, and performing the conversion based on the determination.
[0008] In yet another exemplary aspect, a method of video processing is disclosed that includes performing a conversion between a current region of video and a bitstream representation of the video, where the bitstream representation complies with a syntax rule that specifies that a flag indicating whether in-loop filtering is used for the conversion is included in the bitstream representation at a video unit level that contains the current region less than a slice level of the video.
[0009] In yet another exemplary aspect, a method of video processing is disclosed that includes performing a conversion between a current region of video and a bitstream representation of the video, the conversion including using an adaptive loop filter, the bitstream representation configured to indicate the adaptive loop filter using two-part signaling that includes a first part indicating a technique for determining the adaptive loop filter and a second part indicating an index used by the technique.
[0010] In yet another exemplary aspect, a method of video processing is disclosed that includes determining, based on a property of the video, a size of a current region that shares a common loop filtering setting for conversion between a current region of the video and a bitstream representation of the video, and performing the conversion based on the determination.
[0011] In yet another exemplary aspect, a method of video processing is disclosed that includes performing a lossless conversion between a current region of a video and a bitstream representation of the video, where the bitstream representation complies with syntax rules that restrict values of syntax fields associated with the current region in the bitstream representation due to the conversion being lossless.
[0012] In yet another exemplary aspect, the above-described methods are embodied in the form of processor executable code and stored on a computer readable program medium.
[0013] In yet another exemplary aspect, a device configured or operable to perform the above-described method is disclosed. The device may include a processor programmed to implement the method.
[0014] In yet another exemplary aspect, a video decoder device may implement the methods described herein.
[0015] These and other aspects and features of the disclosed technology are described in more detail in the drawings, specification, and claims. [Brief description of the drawings]
[0016] [Figure 1] FIG. 2 is an example of an encoder block diagram. [Diagram 2] Examples of GALF filter shapes (left: 5x5 diamond, center: 7x7 diamond, right: 9x9 diamond) are shown. [Diagram 3] 1 is a flow graph of one implementation of encoder decision for GALF. [Figure 4] An example of subsampling Laplacian computation for CE2.6.2 is shown. The top left (a) is the subsampling position of the vertical gradient, the top right (b) is the subsampling position of the horizontal gradient, the bottom left (c) is the subsampling position of the diagonal gradient, and the bottom right (d) is the subsampling position of the diagonal gradient. [Diagram 5] An example of raster scan slice partitioning of a picture is shown, where the picture is divided into 12 tiles and 3 raster scan slices. [Figure 6] A picture with an 18x12 luma CTU partitioned into 24 tiles and 9 rectangular slices is shown. [Figure 7] Here is an example of a picture partitioned into 4 tiles, 11 bricks, and 4 rectangular slices. [Figure 8] A picture with 28 sub-pictures is shown. [Figure 9] FIG. 1 is a block diagram of a video system. [Figure 10] FIG. 1 is a block diagram of an example of a video processing device. [Figure 11] 1 is a flowchart of an exemplary method of video processing. [Figure 12]1 is a flowchart of an exemplary method of video processing. [Figure 13] 1 is a flowchart of an exemplary method of video processing. [Figure 14] 1 is a flowchart of an exemplary method of video processing. [Figure 15] 1 is a flowchart of an exemplary method of video processing. [Figure 16] 1 is a flowchart of an exemplary method of video processing. [Figure 17] 1 is a flowchart of an exemplary method of video processing. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0017] Embodiments of the disclosed technology may be applied to existing video coding standards (e.g., HEVC, H.265) and future standards to improve compression performance. Section headings are used in this document to improve readability of the description and are not intended to limit the discussion or embodiments (and / or implementations) to only the respective section.
[0018] 1. Summary This document relates to video coding technology. In particular, it relates to an adaptive loop filter in video encoding or decoding. It can be applied to existing video coding standards such as HEVC, or to a standard to be completed (Versatile Video Coding). It can also be applicable to future video coding standards or video codecs.
[0019] 2. Initial discussion Video coding standards have evolved primarily through the development of well-known ITU-T and ISO / IEC standards. ITU-T produced H.261 and H.263, ISO / IEC produced MPEG-1 and MPEG-4 Visual, and the two organizations jointly produced H.262 / MPEG-2 Video, H.264 / MPEG-4 Advanced Video Coding (AVC), and H.265 / HEVC standards. Starting with H.262, video coding standards are based on a hybrid video coding structure in which temporal prediction plus transform coding is used. In 2015, VCEG and MPEG jointly established the Joint Video Exploration Team (JVET) to explore future video coding technologies beyond HEVC. Since then, many new methods have been adopted by JVET and put into reference software named the Joint Exploration Model (JEM). In April 2018, the Joint Video Expert Team (JVET) between VCEG (Q6 / 16) and ISO / IEC JTC1 SC29 / WG11 (MPEG) was created to work on the VVC standard, which aims for a 50% bitrate reduction compared to HEVC.
[0020] The latest version of the VVC draft, namely Generic Video Coding (Draft 6), can be found at:
[0021] http: / / phenix.it-sudparis.eu / jvet / doc_end_user / documents / 15_Gothenburg / wg11 / JVET-O2001-v14.zip
[0022] The latest reference software for VVC, named VTM, can be found at:
[0023] https: / / vcgit.hhi.fraunhofer.de / jvet / VVCSoftware_VTM / tags / VTM-2.1
[0024] 2.1. Color Spaces and Chroma Subsampling A color space, also known as a color model (or color system), is an abstract mathematical model that describes a range of colors simply as a tuple of numbers, typically three or four values or color components (e.g., RGB). Essentially, a color space is a refinement of a coordinate system and a subspace.
[0025] In video compression, the most frequently used color spaces are YCbCr and RGB.
[0026] 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 image pipeline in video and digital photography systems. Y' is the luma component, and CB and CR are the blue-difference and red-difference chroma components. Y' (with a prime sign) is distinguished from Y, which is luminance, meaning that the light intensity is nonlinearly encoded based on the gamma-corrected RGB primaries.
[0027] Chroma subsampling is the practice of encoding images by achieving a lower resolution for the chroma information than for the luma information, which takes advantage of the fact that the human visual system is less sensitive to color differences than to luminance.
[0028] 2.1.1. 4:4:4 Each of the three Y'CbCr components has the same sample rate, so there is no chroma subsampling. This scheme is sometimes used in high-end film scanners and in cinema post-production.
[0029] 2.1.2. 4:2:2 The two chroma components are sampled at half the luma sample rate, i.e. the horizontal chroma resolution is halved, which reduces the bandwidth of the uncompressed video signal by a factor of three with little or no visible difference.
[0030] 2.1.3. 4:2:0 In 4:2:0, the horizontal sampling is doubled compared to 4:1:1, but the vertical resolution is halved since the Cb and Cr channels are sampled only on every other line in this scheme. Thus, the data rate is the same. Cb and Cr are each subsampled by a factor of 2 both horizontally and vertically. There are three variations of the 4:2:0 scheme, with different horizontal and vertical positioning. In MPEG-2, Cb and Cr are cosited horizontally. Cb and Cr are interstitially positioned vertically. In JPEG / JFIF, H.261, and MPEG-1, Cb and Cr are spaced apart, centered between every other luma sample. In 4:2:0 DV, Cb and Cr are co-located horizontally. Vertically, they are co-located on every other line.
[0031] 2.2. Typical video codec coding flow FIG. 1 shows an example of an encoder block diagram for VVC, which includes three in-loop filtering blocks: deblocking filter (DF), sample adaptive offset (SAO), and ALF. Unlike DF, which uses a predefined filter, SAO and ALF utilize the original samples of the current picture to reduce the mean square error between the original and reconstructed samples by adding an offset and applying a finite impulse response (FIR) filter, respectively, and coded side information signals the offset and filter coefficients. The ALF is placed at the last processing stage of each picture and can be seen as a tool that tries to capture and determine the artifacts created in the previous stage.
[0032] 2.3. Geometry transformation-based adaptive loop filter in JEM In JEM, a geometry transformation-based adaptive loop filter (GALF) with block-based filter adaptation is applied: for the luma component, for each 2 × 2 block, one of 25 filters is selected based on local gradient orientation and activity.
[0033] 2.3.1. Filter Shape In JEM, up to three diamond filter shapes (as shown in Figure 2) can be selected for the luma component. An index is signaled at the picture level to indicate the filter shape used for the luma component.
[0034] Figure 2 shows examples of GALF filter shapes (left: 5x5 diamond, center: 7x7 diamond, right: 9x9 diamond).
[0035] For the chroma components of a picture, a 5x5 diamond shape is always used.
[0036] 2.3.1.1. Block Classification Each 2x2 block is categorized into one of 25 classes. The classification index C is determined by its orientation D and the quantized activity value.
number
number
[0037] D, and
number
number
[0038] The indices i and j refer to the coordinates of the top-left sample in a 2x2 block, and R(i,j) denotes the reconstructed sample at coordinate (i,j).
[0039] The maximum and minimum horizontal and vertical gradient values are then set as follows:
number
[0040] Then, the maximum and minimum values of the two diagonal gradients are set as follows:
number
[0041] To derive the value of the directionality D, these values are compared with each other and with two thresholds t 1 and t 2 is compared to. [Table 1]
[0042] The activity value A is calculated as follows:
number
[0043] A is further quantized to a range from 0 to 4, inclusively, with the quantized value being:
number
[0044] For both chroma components in a picture, no classification method is applied, ie, a single set of ALF coefficients is applied for each chroma component.
[0045] 2.3.1.2. Geometric transformation of filter coefficients Before filtering each 2x2 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 that block. This is equivalent to applying these transformations to samples within the filter support region. The idea is to make different blocks to which ALF is applied more similar by aligning their orientations.
[0046] Three geometric transformations are introduced, including diagonal, vertical flip, and rotation.
number
[0047] where K is the size of the filter and 0≦k,l≦K-1 are the coefficient coordinates such that position (0,0) is the upper left corner and position (K-1,K-1) is the lower right corner. The transformation is applied to the filter coefficients f(k,l) according to the gradient value calculated for that block. The relationship between the transformation and the four gradients in the four directions is summarized in Table 1. [Table 2]
[0048] 2.3.1.3. Filter Parameter Signaling In JEM, GALF filter parameters are signaled for the first CTU, i.e., after the slice header and before the SAO parameters of the first CTU. Up to 25 luma filter coefficient sets can be signaled. To reduce bit overhead, filter coefficients of different classifications can be merged. Furthermore, GALF coefficients of a reference picture can be stored and reused as GALF coefficients of the current picture. The current picture may choose to use the stored GALF coefficients for the reference picture and bypass GALF coefficient signaling. In this case, only an index to one of the reference pictures is signaled, and the stored GALF coefficients of the indicated reference picture are inherited for the current picture.
[0049] To support GALF temporal prediction, a candidate list of GALF filter sets is maintained. At the start of decoding a new sequence, the candidate list is empty. After decoding one picture, a corresponding set of filters may be added to the candidate list. When the size of the candidate list reaches a maximum allowed value (i.e., 6 in the current JEM), a new set of filters overwrites the oldest set in the decoding order, i.e., a first-in-first-out (FIFO) rule is applied to update the candidate list. To avoid duplication, a set can be added to the list only when the corresponding picture does not use GALF temporal prediction. To support temporal scalability, there are multiple candidate lists of filter sets, each candidate list associated with a temporal layer. More specifically, each array assigned by the temporal layer index (TempIdx) can constitute the filter sets of previously decoded pictures equal to a lower TempIdx. For example, the kth array is assigned to be associated with TempIdx equal to k and contains only filter sets from pictures with TempIdx less than or equal to k. After coding a particular picture, the filter set associated with this picture is used to update the array associated with an equal or higher TempIdx.
[0050] Temporal prediction of GALF coefficients is used for inter-coded frames to minimize signaling overhead. For intra-frames, temporal prediction is not available and a set of 16 fixed filters is assigned to each class. To indicate the usage of the fixed filters, a flag for each class and, if necessary, the index of the selected fixed filter are signaled. Even when a fixed filter is selected for a given class, the coefficients of the adaptive filter f(k,l) can still be sent for this class, in which case the coefficients of the filter applied to the reconstructed image are the sum of both sets of coefficients.
[0051] The filtering process of the luma component can be controlled at the CU level. A flag is signaled to indicate whether GALF is applied to the luma component of a CU. For the chroma components, whether GALF is applied is indicated only at the picture level.
[0052] 2.3.1.4. Filtering process At the decoder side, when GALF is enabled for a block, each sample R(i,j) in the block is filtered, resulting in a sample value as shown below, where L is the filter length and f m,n denote the filter coefficients, and f(k,l) denotes the decoded filter coefficients.
number
[0053] 2.3.1.5. Encoding-side filter parameter determination process The overall encoder decision process for GALF is shown in Figure 3. For each CU's luma samples, the encoder makes a decision whether GALF is applied or not, and the appropriate signaling flag is included in the slice header. For chroma samples, the decision to apply the filter is made on a picture level rather than a CU level. Furthermore, the chroma GALF of a picture is checked only if luma GALF is enabled for the picture.
[0054] 2.4. Geometry Transformation-Based Adaptive Loop Filter in VVC The current design of GALF in VVC has the following major changes compared to that in JEM: 1) The adaptive filter shapes are removed: simply 7x7 filter shapes are allowed for the luma component and 5x5 filter shapes for the chroma components. 2) Both the time prediction of the ALF parameters and the prediction from the fixed filter are removed. 3) For each CTU, a one-bit flag is signaled whether ALF is enabled or disabled. 4) Class index calculation is performed at 4x4 level instead of 2x2. In addition, a subsampling Laplacian calculation method for ALF classification is utilized as proposed in JVET-L0147. More specifically, there is no need to calculate horizontal / vertical / 45 diagonal / 135 degree gradients for each sample in one block. Instead, 1:2 subsampling is utilized.
[0055] Figure 4 shows an example of subsampled Laplacian calculation for CE2.6.2. The top left (a) is the subsampled position of the vertical gradient, the top right (b) is the subsampled position of the horizontal gradient, the bottom left (c) is the subsampled position of the diagonal gradient, and the bottom right (d) is the subsampled position of the diagonal gradient.
[0056] 2.5. Signaling Adaptive Loop Filter Parameters in an Adaptation Parameter Set In the latest version of the VVC draft, the ALF parameters can be signaled in an Adaptation Parameter Set (APS) and can be adaptively selected by each CTU.
[0057] The detailed signaling of ALF (in JVET-O2001-vE) is as follows: [Table 3] TIFF0007659014000014.tif221165TIFF0007659014000015.tif206163TIFF0007659014000016.t if189165TIFF0007659014000017.tif218165TIFF0007659014000018.tif224166TIFF0007659014 000019.tif226165TIFF0007659014000020.tif226151TIFF0007659014000021.tif217165TIFF00 07659014000022.tif227166TIFF0007659014000023.tif200165TIFF0007659014000024.tif82149
[0058] 2.6. Signaling of ALF parameters in the CTU In VTM6, the ALF filter parameters are signaled in an adaptive parameter set (APS). In one APS, a set of up to 25 luma filter coefficients and clipping value indexes and a set of up to 8 chroma filter coefficients and clipping value indexes can be signaled. To reduce bit overhead, filter coefficients of different classifications for the luma component can be merged. In the slice header, the index of the APS used for the current slice is signaled.
[0059] The clipping value index is decoded from the APS and allows to determine the clipping values using the clipping value luma table and clipping value chroma table. These clipping values depend on the internal bit depth. More precisely, the clipping value luma table and clipping value chroma table are given by the following formula:
number
[0060] B is equal to the internal bit depth and N is equal to 4, which is the number of allowed clipping values in VTM6.0.
[0061] In the slice header, up to seven APS indices can be signaled to specify the luma filter set used for the current slice. The filtering process can be further controlled at the CTB level. A flag is always signaled to indicate whether the ALF is applied to the luma CTB. The luma CTB can select a filter set among the 16 fixed filter sets and a filter set from the APS. For the luma CTB, a filter set index is signaled to indicate which filter set is applied. The 16 fixed filter sets are predefined and hard-coded in both the encoder and the decoder.
[0062] For chroma components, an APS index is signaled in the slice header to indicate the chroma filter set used for the current slice. At the CTB level, for each chroma CTB, a filter index is signaled if there are multiple chroma filter sets in the APS.
[0063] More specifically, the following applies:
[0064] A slice on / off control flag is first coded to indicate whether at least one CTU in the slice applies ALF. When it is true, for each CTU, the following are checked and signaled in order: Luma part related: 1. Whether ALF applies to the luma CTB. If yes, go to step 2. If not, no further signaling is required. 2. Check the number of ALF APS used for the current slice and indicate it with numALFAPS. 3. If numALFAPS is equal to 0, the index of the fixed filter (e.g., alf_luma_fixed_filter_idx) is signaled. Otherwise the following applies: - Signal a flag to indicate whether it is expected from the first ALF APS or not. - If no, go to step 4. Otherwise, the signaling of ALF parameters in the luma CTB is stopped. 4. If numALFAPS is greater than 1, signal a flag to indicate whether it is expected from the ALF APS or not. - If no, signal the index of the fixed filter. - If yes and numALFAPS is greater than 2, signal the ALF APS index minus 1 as a truncated unary. Chroma related: 1. Whether ALF applies to Cb / Cr CTB. If yes, go to step 2. If not, no further signaling is required. 2. Signal the index of the filter associated with the i-th ALF APS, where the APS index is signaled in the slice header. [Table 4]
[0065] 2.7. Partitioning of Pictures, Subpictures, Slices, Tiles, Bricks, and CTUs [Table 5] Slice: An integral number of bricks of a picture contained exclusively in a single NAL unit.
[0066] Note - A slice consists of either multiple complete tiles, or only a contiguous sequence of complete bricks of one tile.
[0067] Tile: A rectangular region of CTUs within a particular tile column and a particular tile row in a picture.
[0068] Brick: A rectangular area of CTU rows within a particular tile in a picture.
[0069] Note - A tile may be partitioned into multiple bricks, each of which consists of one or more CTU rows within the tile. A tile that is not partitioned into multiple bricks is also called a brick. However, a brick that is a true subset of a tile is not called a tile.
[0070] Brick Scan: A particular sequential order of CTUs that partition a picture, where the CTUs are ordered consecutively with a raster scan of the CTUs within a brick, the bricks within a tile are ordered consecutively with a raster scan of the bricks in the tile, and the tiles within a picture are ordered consecutively with a raster scan of the tiles in the picture.
[0071] A picture is divided into one or more tile rows and one or more tile columns. A tile is a sequence of CTUs that covers a rectangular area of the picture.
[0072] A tile is divided into one or more bricks, each of which consists of multiple rows of CTUs within the tile.
[0073] A tile that is not partitioned into multiple bricks is also called a brick, however a brick that is a true subset of a tile is not called a tile.
[0074] A slice contains multiple tiles of a picture, or multiple bricks of a tile.
[0075] A subpicture contains one or more slices that collectively cover a rectangular area of the picture.
[0076] Two modes of slicing are supported: raster scan slice mode and rectangular slice mode. In raster scan slice mode, a slice contains a sequence of tiles in the tile raster scan of a picture. In rectangular slice mode, a slice contains multiple bricks of a picture that collectively form a rectangular region of the picture. The bricks in a rectangular slice are in the order of the brick raster scan of the slice.
[0077] FIG. 5 shows an example of raster scan slice partitioning of a picture, where the picture is divided into 12 tiles and 3 raster scan slices.
[0078] FIG. 6 shows an example of rectangular slice partitioning of a picture, where the picture is divided into 24 tiles (6 tile columns and 4 tile rows) and 9 rectangular slices.
[0079] FIG. 7 shows an example of a picture partitioned into tiles, bricks, and rectangular slices, where the picture is divided into 4 tiles (2 tile columns and 2 tile rows), 11 bricks (the top-left tile contains 1 brick, the top-right tile contains 5 bricks, the bottom-left tile contains 2 bricks, and the bottom-right tile contains 3 bricks), and 4 rectangular slices.
[0080] FIG. 8 shows an example of sub-picture partitioning of a picture, where the picture is partitioned into 28 sub-pictures of various sizes.
[0081] When a picture is coded using three separate colour planes (separate_colour_plane_flag equals 1), a slice contains only CTUs of one colour component identified by a corresponding value of colour_plane_id, and each colour component array of a picture is composed of slices with the same colour_plane_id value. Coding slices with different values of colour_plane_id in a picture may be interleaved with each other, subject to the constraint that for each value of colour_plane_id, the coding slice NAL units with that value of colour_plane_id shall be in order of increasing CTU addresses in brick scan order for the first CTU of each coding slice NAL unit. 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. the information for each CTU of the picture is present in exactly three slices, and these three slices have different colour_plane_id values).
[0082] 2.8 RPR AVC and HEVC do not have the ability to change resolution without the need to introduce IDR or intra random access point (IRAP) pictures, which can be called adaptive resolution change (ARC). There are use cases or application scenarios that benefit from the ARC feature, such as rate adaptation in video telephony and conferencing. ARC is also known as dynamic resolution conversion.
[0083] ARC can also be considered as a special case of Reference Picture Resampling (RPR), such as in H.263 Annex P.
[0084] In VVC, ARC is also known as RPR (Reference Picture Resampling) and is incorporated in JVET-O2001-v14. In JVET-O2001-v14 RPR, TMVP is disabled if the co-located picture has a different resolution than the current picture. Furthermore, BDOF and DMVR are disabled when the reference picture has a different resolution than the current picture. In the SPS, the maximum picture resolution is defined. And for each picture, its resolution (including picture width and height in luma samples) is defined in the PPS. When the picture resolutions are different, RPR is enabled.
[0085] 2.9. VVC Fit Window A relevance window in VVC defines a rectangle. Samples within the relevance window belong to the image of interest. Samples outside the relevance window can be discarded on output.
[0086] When an adaptive window is applied, a scaling ration in the RPR is derived based on the adaptive window. [Table 6] TIFF0007659014000029.tif214165TIFF0007659014000030.tif214164
[0087] 3. Technical problem solved by the technical solution described herein The APS ALF data has the following problems. 1. It has two flags to control whether the luma ALF parameters are signaled or not, e.g., alf_luma_filter_signal_flag and alf_luma_coeff_signalled_flag, which are redundant. 2. It signals one flag for each class in the ALF to indicate whether all ALF coefficients in that class are zero. This may be unnecessary because all-zero ALF coefficients are rarely selected. On the other hand, all-zero ALF coefficients could still be signaled using such a flag. 3. To derive the filter predictor for the luma color component, multiple condition checks and steps are required, which may introduce unnecessary complexity. 4. In VVC, the division of a picture can be slice / tile / brick, where a brick is a smaller unit compared to a slice / tile. Different bricks are not allowed to be predicted from each other. In a practical encoder, signaling ALF on / off at the tile / brick level may bring further benefits to coding performance.
[0088] 4. Exemplary Methods and Embodiments The following list should be considered as examples to illustrate the general concept. These items should not be interpreted in a narrow sense. Moreover, these items can be combined in any way.
[0089] In this document, the resolution (or size, or width / height, or size) of a picture may refer to the resolution (or size, or width / height, or size) of the coded / decoded picture, or may refer to the resolution (or size, or width / height, or size) of a matching window of the coded / decoded picture.
[0090] 1. It is proposed that only one syntax element may be signaled to indicate whether there are luma ALF coefficients signaled. In one example, the signaling of alf_luma_coeff_signalled_flag may be skipped. b. Alternatively, further, whether to signal the coefficient of the luma filter indicated by sfIdx (e.g., alf_luma_coeff_flag[sfIdx]) may purely depend on whether there is at least one filter that needs to be signaled (e.g., alf_luma_filter_signal_flag). c. In one example, the signaling of alf_luma_coeff_flag may start from last to first (ie, maximum filter index allowed). d. Alternatively, a counter is maintained to record how many filters have been coded or how many alf_luma_coeff_flags are equal to true. i. If the counter is equal to 0 before coding the information of the last filter, the alf_luma_coeff_flag of the last filter (e.g., has the maximum allowed filter index or an index equal to 0, depending on the coding order) is not signaled and is derived to be true. e. Alternatively, when the syntax further indicates that there are luma ALF coefficients signaled, a conforming bitstream shall satisfy that at least one coefficient of one luma filter is not equal to zero. f. Alternatively, when the syntax further indicates that there are luma ALF coefficients signaled, a conforming bitstream shall satisfy that at least one luma filter is signaled (e.g., at least one alf_luma_coeff_flag[sfIdx] is true).
[0091] 2. When a class of ALF has all-zero ALF coefficients, it is proposed that the all-zero ALF coefficients can still be signaled. In one example, a zero value (e.g., alf_luma_coeff_abs of zero) may be signaled for each pair of positions that share the same ALF coefficient. For example, for a 7*7 diamond ALF filter, 12 zeros may be signaled. In one example, N or fewer classes in the ALF (N is a non-negative integer) may have ALF coefficients that are all zero, e.g., N=1.
[0092] 3. It is proposed that when the luma / chroma ALF coefficients signaled in an APS are all zero for all classes, such luma / chroma ALF coefficients may not be used in the following picture / slice / tile / brick / CTU. a. Alternatively, furthermore, zero ALF filters (eg, all coefficients are zero) are not allowed to be signaled within the APS. b. Alternatively, it is further a bitstream conformance requirement that the signaled luma / chroma ALF coefficients in an APS shall contain at least one non-zero coefficient. For example, when the luma / chroma ALF coefficients contain only zero coefficients, the absence of luma / chroma ALF coefficients in the APS shall be indicated (e.g., by alf_luma_filter_signal_flag or alf_chroma_filter_signal_flag).
[0093] 4. The on / off control flag indicating that at least one CTU / CTB is coded with an in-loop filtering method (e.g., SAO / ALF) enabled 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, where the video unit is smaller than the slice (e.g., brick / tile level). In one example, for each brick / tile, a flag may be coded to indicate whether the in-loop filtering method is applied to at least one sample within the brick / tile. b. In one example, a slice level on / off control flag (e.g., slice_alf_enabled_flag) indicating that at least one CTU / CTB is coded with an in-loop filtering method applied is replaced with a flag signaled at the brick / tile level. c. In one example, a slice level on / off control flag (e.g., slice_alf_enabled_flag) indicating that at least one CTU / CTB is coded with an in-loop filtering method applied may be left unchanged, and when this flag is true, a brick / tile level on / off control flag may be further signaled.
[0094] 5. The signaling of the ALF filter can be simplified to have two parts, e.g., the first part indicates whether it is predicted or selected from the fixed filter or the ALF APS, and the second part is an index into the fixed filter / ALF APS. In one example, a flag may be signaled to indicate whether the filter is predicted from a fixed filter. i. Alternatively, a flag can be signaled to indicate whether the filter is predicted from the ALF APS or not. ii. Alternatively, a flag may be signaled / parsed to indicate whether the determined filter is selected from the fixed ALF filters or not. iii. Alternatively, a flag may be signaled / parsed to indicate whether the determined filter is selected from the ALF APS or not. iv. Alternatively, such a flag may also be signaled / parsed under the condition that the number of ALF APS used for a color component (eg, luma) is greater than (or not equal to) 0. a) In one example, when the number of ALF APS used for a color component (e.g., luma) is equal to 0, no such flag is signaled / parsed and it can always be inferred that a fixed ALF filter is used. v. In one example, the flags can be context coded or bypass coded. a) In one example, only one context may be used. b) Alternatively, more than two contexts may be used. a. Alternatively, context modeling may also rely on information of neighboring CTBs. b. Alternatively, context modeling may also depend on information of the current CTB, such as the position of the current CTB. c. Alternatively, context modeling may also depend on decoded information such as slice / picture type. b. Alternatively, and further depending on the flag, an index into a fixed filter or an ALF APS can be signaled or parsed. i. In one example, whether to signal an ALF APS index may further depend on the number of ALF APS allowed for the current slice / tile / brick. a) Alternatively, an index may also be signaled when the number of allowed ALF APS for the current slice / tile / brick is greater than 1. Otherwise, when the number of allowed ALF APS for the current slice / tile / brick is equal to 1, an index may not be signaled and a single ALF APS is used. ii. In one example, an indication of the ALF APS index may be signaled. a) In one example, it can be signaled in a truncated unary method. Alternatively, the maximum is also set to the number of allowed ALF APS for the current slice / tile / brick minus K (e.g., K=0 or 1). b) In one example, it can be signaled in a truncated binary method. Alternatively, the maximum is also set to the number of allowed ALF APS for the current slice / tile / brick minus K (e.g., K=0 or 1). iii. In one example, the index may be context coded. a) In one example, the first K bins of a binarized bin string of an index may be context coded and the remaining bins may be bypass coded (e.g., K=1 or based on the number of ALF APS). b) In one example, all bins are bypass coded.
[0095] 6. On / off control of filtering methods (e.g., SAO, bilateral filter, ALF) may be signaled / derived at region level, and the region size may be determined according to at least the picture resolution and the maximum picture resolution. a. Alternatively still, the region size may be fixed for a picture, but different for different pictures with different resolutions. b. In one example, assume that the maximum picture width and height in luma samples are denoted by maxW and maxH, respectively, and the current picture width and height in luma samples are denoted by CurrW and CurrH, respectively. The width and height of the CTU / CTB are denoted by ctbW and ctbH, respectively. The region size, denoted by regW*regH, may be defined as follows: i. Alternatively, further on / off control flags and / or side information (e.g., which fixed filter to predict from and / or which ALF APS to predict from) may be signaled / parsed at the region level. ii. In one example, regW may be set to (ctbW*currW / maxW). iii. In one example, regH may be set to (ctbH*currH / maxH). iv. In one example, regW and / or regH may further depend on the partitioning structure of the current CTB. a) Alternatively, it may also depend on the initial partitioning type (e.g., no splitting (coding as the CTB as a whole), quad-tree splitting, binary tree splitting, ternary tree splitting). a. Alternatively, further, the region size shall be no smaller than the sub-CUs directly split from the CTB. b) In one example, regW is ctbW*max(R W , currW / maxW). c) In one example, regH is ctbH*max(R H , currH / maxH). d) In the above example, R W and / or R H may be set to 1 in the non-split case. e) In the above example, R W and / or R H can be set to 1 / 2 in the case of a quadtree partition. c. The above method may be enabled when RPR is enabled for the sequence.
[0096] 7. A conforming bitstream shall satisfy the following: NAL unit type shall not be equal to APS_NUT (i.e., adaptation parameter set) when lossless coding (e.g., transquant_bypass_enabled_flag) is enabled for the sequence / picture. A conforming bitstream shall satisfy the following when lossless coding (e.g., transquant_bypass_enabled_flag) is enabled for the sequence / picture: aps_params_type shall not be equal to ALF_APS. b. A conforming bitstream shall satisfy the following when lossless coding (eg, transquant_bypass_enabled_flag) is enabled for the sequence / picture: aps_params_type shall not be equal to LMCS_APS. c. A conforming bitstream shall satisfy the following when lossless coding (eg, transquant_bypass_enabled_flag) is enabled for the sequence / picture: aps_params_type shall not be equal to SCALING_APS. d. A conforming bitstream shall satisfy the following: when lossless coding (e.g., transquant_bypass_enabled_flag) is enabled for the sequence / picture, the on / off control flags of some tools at the sequence / picture / slice / tile / brick / CTB / subpicture level (e.g., ALF / LMCS / JCCR indicated by slice_alf_enabled_flag / alf_ctb_flag, slice_lmcs_enabled_flag, slice_joint_cbcr_sign_flag) and / or scaling list present flag (e.g., slice_scaling_list_present_flag) are equal to 0. i. Alternatively, the signaling of on / off control flags and / or scaling lists representing flags for these tools may be under the condition that lossless coding is disabled for the picture.
[0097] 8. Whether and / or how to apply the above method may be based on one or more of the conditions listed below. a. Video content (e.g., screen content or natural content, etc.) b. Messages signaled within DPS / SPS / VPS / PPS / PPS / APS / picture header / slice header / tile group header / largest coding unit (LCU) / coding unit (CU) / LCU row / group of LCUs / TU / PU block / video coding unit c. CU / PU / TU / Block / Video Coding Unit Location d. Decoded information for the current block and / or its neighboring blocks i. Block size / block shape of the current block and / or its neighboring blocks e. Color format index (4:2:0, 4:4:4, RGB, or YUV, etc.) f. Coding tree structure (e.g. dual tree or single tree) g. Slice / Tile Group Type and / or Picture Type h. Color components (e.g., may only apply to luma and / or chroma components) i. Temporal layer ID j. Standard Profiles / Levels / Tiers
[0098] 5. Exemplary embodiments of the present technology The part to be deleted is surrounded by double bold square brackets (e.g., [[a]] indicates that "a" is deleted), and the part to be newly added is surrounded by double bold curly brackets (e.g., {{a}} indicates that "a" is added). The embodiment is on JVET-O2001-vE.
[0099] 5.1. Embodiment #1 This embodiment provides some examples on how to signal ALF parameters in an ALF APS. [Table 7] TIFF0007659014000032.tif237163TIFF0007659014000033.tif224165TIFF0007659014000034.tif217165TIFF0007659014000035.tif138166
[0100] 5.2. Embodiment #2 This embodiment provides an example on how to signal ALF parameters for the luma CTB. [Table 8] TIFF0007659014000037.tif228165TIFF0007659014000038.tif143168
[0101] 9 is a block diagram illustrating an example video processing system 900 in which 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 may be 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 such as Ethernet, passive optical network (PON), and wireless interfaces such as Wi-Fi or cellular interfaces.
[0102] The system 900 may include a coding component 904 capable of implementing various coding or encoding methods described herein. The coding component 904 may reduce the average bit rate of the video from the input 902 to the output of the coding component 904 to generate a coded representation of the video. Thus, this coding technique is sometimes referred to as a video compression or video transcoding technique. The output of the coding component 904 may be stored or transmitted via a connected communication, as represented by component 906. The stored or communicated bitstream (or coded) representation of the video received at the input 902 may be used by component 908 to generate pixel values or displayable video that is sent to the display interface 910. The process of generating a user-viewable video from the bitstream representation is sometimes referred to as video decompression. Furthermore, it will be understood that certain video processing operations are referred to as "coding" operations or tools, with coding tools or operations being used in an encoder and corresponding decoding tools or operations that reverse the results of the coding being performed by a decoder.
[0103] Examples of peripheral bus interfaces or display interfaces may include Universal Serial Bus (USB) or high definition multimedia interface (HDMI) or Displayport, etc. Examples of storage interfaces include SATA (serial advanced technology attachment), PCI, IDE interfaces, etc. The techniques described in this document may be embodied in a variety of electronic devices such as mobile phones, laptops, smartphones, or other devices capable of performing digital data processing and / or video display. can.
[0104] FIG. 10 is a block diagram of a video processing device 1000. The device 1000 can be used to perform one or more of the methods described herein. The device 1000 may be embodied in a smartphone, a tablet, a computer, an Internet of Things (IoT) receiver, etc. The device 1000 may include one or more processors 1002, one or more memories 1004, and video processing hardware 1006. The processor 1002 may be configured to perform one or more of the methods described herein. The memory(s) 1004 may be used to store data and code used to perform the methods and techniques described herein. The video processing hardware 1006 may be used to implement some of the techniques described herein in a hardware circuit. In some implementations, the hardware 1606 may be part or all of the processor 1002, such as a graphics processor, partially or completely.
[0105] 11 is a flow chart of an example method of video processing. The method 1100 includes, at operation 1110, determining, for a conversion between a current region of a 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 a luma adaptive loop filter and the signaling of the luma adaptive loop filter coefficients.
[0106] The method 1100 includes, at operation 1120, performing a conversion based on the determination.
[0107] 12 is a flow chart of an example method of 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, where an adaptive loop filter is used during the conversion, and where the bitstream representation complies with a syntax rule that specifies that coefficients of the adaptive loop filter signaled in the bitstream representation include zero-valued adaptive loop filter coefficients.
[0108] 13 is a flow chart of an exemplary method of video processing. The method 1300 includes, at operation 1310, determining that for a conversion between a current region of a video and a bitstream representation of the video, zero-valued adaptive loop filter coefficients of a previous region of the video signaled in the bitstream representation are not used in the conversion.
[0109] The method 1300 includes, at operation 1320, performing a conversion based on the determination.
[0110] 14 is a flow chart of an example method of 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 complies with a syntax rule that specifies that a flag indicating whether in-loop filtering is used in the conversion is included in the bitstream representation at a video unit level that contains the current region, which is less than a slice level of the video.
[0111] 15 is a flow chart of an example method of video processing. The method 1500 includes, at operation 1510, performing a conversion between a current region of video and a bitstream representation of the video, the conversion including using an adaptive loop filter, such that the bitstream representation is configured to indicate the adaptive loop filter using 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.
[0112] 16 is a flow chart of an example method of video processing. The method 1600 includes, at operation 1610, determining, based on a property of the video, a size of a current region that shares a common loop filtering setting for conversion between the current region of the video and a bitstream representation of the video.
[0113] The method 1600 includes, at operation 1620, performing a conversion based on the determination.
[0114] 17 is a flow chart of an example method of video processing, the method 1700 including, at operation 1710, performing a lossless conversion between a current region of a video and a bitstream representation of the video, where the bitstream representation complies with syntax rules that restrict values of syntax fields associated with the current region in the bitstream representation due to the conversion being lossless.
[0115] The following solutions can be implemented as preferred technical solutions in some embodiments.
[0116] A1. A method of video processing comprising: determining, for a conversion between a current region of a 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, wherein a single syntax element in the bitstream representation indicates the use of the luma adaptive loop filter and signaling of the luma adaptive loop filter coefficients; and performing the conversion based on the determination.
[0117] The method of Solution A1, wherein the single syntax element having a value of A2.1 indicates that the luma adaptive loop filter coefficient having a particular index is signaled, and the single syntax element having a value of 0 indicates that the luma adaptive loop filter coefficient having the particular index is excluded from the bitstream representation.
[0118] A3. The method according to solution A2, wherein the single syntax element is alf_luma_coeff_flag and the particular index is indicated by sfIdx.
[0119] A4. A method according to any one of Solutions A1 to A3, wherein the single syntax element excludes alf_luma_coeff_signalled_flag.
[0120] The method according to Solution A1, wherein the single syntax element having a value of A5.1 indicates that an indication of the use of the luma adaptive filter with a particular index is signaled, and the single syntax element having a value of zero indicates that the indication of the use of the luma adaptive filter with the particular index is excluded from the bitstream representation.
[0121] A6. The method according to solution A5, wherein the single syntax element is alf_luma_coeff_signalled_flag and the particular index is indicated by sfIdx.
[0122] A7. The method of Solution A1, wherein the luma adaptive loop filter coefficients are conditionally signaled in the bitstream representation based on whether at least one luma adaptive loop filter needs to be signaled.
[0123] A8. The method of Solution A7, wherein the luma adaptive loop filter coefficients for multiple luma adaptive loop filters are signaled in reverse order of filter indexes for the multiple luma adaptive loop filters.
[0124] A9. The method according to Solution A1, further comprising maintaining a counter for determining the number of luma adaptive loop filters coded into the bitstream representation.
[0125] A10. The method according to Solution A1, wherein when the single syntax element indicating signaling of the luma adaptive loop filter coefficient is signaled, the bitstream representation includes at least one non-zero luma adaptive loop filter coefficient.
[0126] A11. The method according to Solution A1, wherein the bitstream representation includes at least one luma adaptive loop filter when the single syntax element indicating signaling of the luma adaptive loop filter coefficients is signaled.
[0127] A12. The method according to any one of Solutions A1 to A11, wherein the luma adaptive loop filter coefficients are luma adaptive loop filter (ALF) coefficients.
[0128] 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 complies with syntax rules specifying that coefficients of the adaptive loop filter signaled in the bitstream representation include zero-valued adaptive loop filter coefficients.
[0129] A14. The method of A13, wherein the syntax rules specify signaling a single zero-valued coefficient for adaptive loop filter coefficients that share coefficient values due to symmetry.
[0130] A15. The method according to solution A14, wherein 12 zero-valued coefficients are signaled for the 7×7 diamond adaptive loop filter.
[0131] A16. The method according to Solution A13, wherein the syntax rule specifies that the number of adaptive loop filters having zero-valued adaptive loop filter coefficients is limited to a number N, where N is a non-negative integer.
[0132] A17. The method according to solution A16, wherein N=1.
[0133] A18. A method of video processing comprising: determining, for a conversion between a current region of a video and a bitstream representation of the video, 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.
[0134] A19. The method according to solution A18, wherein the current region corresponds to a luma region.
[0135] A20. The method according to solution A18, wherein the current region corresponds to a chroma region.
[0136] A21. The method according to any one of Solutions A18 to A20, wherein the current region corresponds to a picture, a slice, a tile, a brick, or a coding tree unit (CTU).
[0137] A22. The method according to solution A18, wherein the zero-valued adaptive loop filter coefficients are signaled in a parameter set different from an adaptation parameter set (APS).
[0138] A23. A method of video processing, comprising: performing a conversion between a current region of a video and a bitstream representation of the video, the bitstream representation conforming to a syntax rule specifying that a flag indicating whether in-loop filtering is used in the conversion is included in the bitstream representation at a video unit level that contains the current region, which is less than a slice level of the video.
[0139] A24. The method according to solution A23, wherein the current region is a coding tree unit (CTU) or a coding tree block (CTB) of the video.
[0140] A25. The method according to solution A23 or A24, wherein the video unit level corresponds to a brick level.
[0141] A26. The method according to solution A23 or 24, wherein the video unit level corresponds to a tile level.
[0142] A27. The method according to any one of Solutions A23 to A26, wherein the in-loop filtering comprises adaptive loop filtering (ALF) or sample adaptive offset (SAO) filtering.
[0143] A28. A method according to any one of Solutions A23 to A27, wherein the bitstream representation includes a video unit flag to indicate that the in-loop filtering is applied to at least one sample within a video unit at the video unit level.
[0144] A29. The method according to any one of Solutions A1 to A28, wherein performing the conversion includes generating the bitstream representation from the current region.
[0145] A30. A method according to any one of Solutions A1 to A28, wherein performing the conversion includes generating the current region from the bitstream representation.
[0146] A31. An apparatus in a video system including a processor and a non-transitory memory having instructions, which, when executed by the processor, cause the processor to perform a method according to any one of solutions A1 to A30.
[0147] A32. A computer program product stored on a non-transitory computer readable medium, comprising a program code for performing the method according to any one of the solutions A1 to A30.
[0148] A33. A computer readable medium storing a bitstream representation generated according to the method of any one of Solutions A1 to A30.
[0149] The following further solutions can be implemented as preferred technical solutions in some embodiments.
[0150] B1. A method for processing a video, comprising: performing a conversion between a current region of a video and a bitstream representation of the video, the conversion including using an adaptive loop filter, the bitstream representation configured to indicate the adaptive loop filter using 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.
[0151] B2. The method according to Solution B1, wherein the technique comprises selecting from a fixed filter set or selecting from at least one adaptive loop filter (ALF) adaptive parameter set (APS).
[0152] B3. The method of Solution B2, wherein the bitstream representation includes a zero-valued flag indicating that a filter set for the adaptive loop filter is selected from the fixed filter set.
[0153] B4. The method of any one of Solutions B2 and B3, wherein the bitstream representation includes a one-valued flag indicating that a filter set of the adaptive loop filter is selected from the at least one ALF APS.
[0154] B5. The method according to Solution B2, wherein the bitstream representation includes a flag indicating that the number of ALF APS used for a color component of the current region is greater than zero.
[0155] B6. The method according to solution B5, wherein the color component is a luma component of the video.
[0156] B7. The method according to Solution B2, wherein when the number of ALF APSs used for a color component of the current region is zero, the bitstream representation excludes a flag indicating that the adaptive loop filter is selected from the at least one ALF APS, and the flag is inferred to indicate that the adaptive loop filter is selected from the fixed filter set.
[0157] B8. The method according to any one of Solutions B3 to B7, wherein the flag is context coded or bypass coded.
[0158] B9. The method according to any one of solutions B3 to B4, wherein the value of the index is based on the flag.
[0159] B10. The method of solution B4, wherein whether to signal the index in the bitstream representation is based on the number of allowed ALF APS for the current region.
[0160] B11. The method according to Solution B10, wherein the index is signaled in the bitstream representation when the number of allowed ALF APS for the current region is greater than one.
[0161] B12. The method of Solution B10, wherein the index is excluded from the bitstream representation when the number of allowed ALF APS for the current region is equal to 1.
[0162] B13. The method according to any one of Solutions B10 to B12, wherein the current region comprises a slice, a tile, or a brick.
[0163] B14. The method according to solution B4, wherein an indication of the index of the at least one ALF APS is signaled in the bitstream representation.
[0164] B15. The method according to Solution B14, wherein said indicators are coded in a truncated unary manner.
[0165] B16. The method according to Solution B14, wherein the indicator is coded in a truncated binary manner.
[0166] B17. The method according to any one of Solutions B15 to B16, wherein the maximum value of the index is set to the number of allowed ALF APS for the current region minus K, where K is an integer.
[0167] B18. The method according to solution B17, wherein K=0 or K=1.
[0168] B19. The method according to solution B1, wherein the index is context coded.
[0169] B20. The method according to Solution B19, wherein the first K bins of the binarized bin string of the index are context coded and the remaining bins are bypass coded, where K is an integer.
[0170] B21. The method according to solution B20, wherein K=1.
[0171] B22. The method according to Solution B19, wherein each of a plurality of bins of the binarized bin string of the index is bypass coded.
[0172] B23. The method according to any one of Solutions B1 to B22, wherein the adaptive loop filter (ALF) is a filtering process applied as part of the conversion and controlled by parameters of the adaptation parameter set (APS) in the bitstream representation.
[0173] B24. A method according to any one of Solutions B1 to B23, wherein the adaptation parameter set (APS) is a syntax structure including one or more syntax elements that are applied to zero or more slices of the video as determined by zero or more syntax elements in slice headers corresponding to the zero or more slices.
[0174] B25. A method of video processing, comprising: determining, based on a property of a video, a size of a current region that shares a common loop filtering setting for conversion between the current region of the video and a bitstream representation of the video; and performing the conversion based on the determination.
[0175] B26. The method according to Solution B25, wherein the property is a resolution of a picture containing the current region.
[0176] B27. The method according to Solution B25, wherein the property is a maximum resolution of a picture containing the current region.
[0177] B28. The method described in solution B25, wherein the width in luma samples and the height in luma samples of the maximum size of the picture are denoted by maxW and maxH, respectively, the width in luma samples and the height in luma samples of the size of the current picture including the current region are denoted by CurrW and CurrH, respectively, the width and height of the size of the current coding tree unit (CTU) or current coding tree block (CTB) are denoted by ctbW and ctbH, respectively, and the width and height of the size of the current region are denoted by regW and regH, respectively.
[0178] B29. The method according to solution B28, wherein regW = (ctbW x currW / maxW).
[0179] B30. The method according to solution B28, wherein regH=(ctbH×currH / maxH).
[0180] B31. The method according to solution B28, wherein regW or regH is based on the partitioning structure of the current CTB or the current CTU.
[0181] B32. A method of video processing, comprising the step of performing a lossless conversion between a current region of a video and a bitstream representation of said video, said bitstream representation conforming to syntax rules that restrict values of syntax fields associated with said current region in said bitstream representation due to said conversion being lossless.
[0182] B33. The method according to Solution B32, wherein the syntax rule specifies that a network abstraction layer (NAL) unit type is not equal to a NAL unit type of an adaptation parameter set (APS).
[0183] B34. The method of 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).
[0184] B35. The method of Solution B32, wherein the syntax rule specifies that the value of the syntax field is different from one or more values in a luma mapping with chroma scaling (LMCS) adaptation parameter set (APS).
[0185] B36. The method of Solution B32, wherein the syntax rule specifies that the value of the syntax field is different from one or more values in a scaling list adaptation parameter set (APS).
[0186] B37. The method of any one of Solutions B1 to B37, wherein performing the conversion is further based on one or more of: (a) video content; (b) a message signaled in a decoder parameter set (DPS), a sequence parameter set (SPS), a video parameter set (VPS), a picture parameter set (PPS), an adaptation parameter set (APS), a picture header, a slice header, a tile group header, a largest coding unit (LCU), an LCU row, a group of LCUs, a transform unit (TU), a prediction unit (PU), or a video coding unit; (c) a position of a coding unit (CU), TU, PU, current block, or video coding unit in a current picture containing the current region; (d) decoded information of the current region; (e) an indication of a color format of the video; (f) a coding tree structure; (g) a slice type, a tile group type, or a picture type; (h) a color component of the video; (i) a temporal layer ID; and (j) a profile, level, or tier of a standard.
[0187] B38. The method according to any one of Solutions B1 to B37, wherein performing the conversion includes generating the bitstream representation from the current region.
[0188] B39. The method according to any one of Solutions B1 to B37, wherein performing the conversion includes generating the current region from the bitstream representation.
[0189] B40. An apparatus in a video system comprising a processor and a non-transitory memory having instructions which, when executed by the processor, cause the processor to perform a method according to any one of solutions B1 to B39.
[0190] B41. A computer program product stored on a non-transitory computer readable medium, comprising a program code for carrying out the method according to any one of the solutions B1 to B39.
[0191] B42. A computer readable medium storing a bitstream representation generated according to a method according to any one of solutions B1 to B39.
[0192] In the above solutions, performing the conversion includes using the result of a previous decision step during the encoding or decoding operation (e.g., whether to use or not use a particular coding or decoding step) to arrive at a conversion result. In the above solutions, the video processing may include video coding or encoding or compression or transcoding (changing from one format or bit rate to another), decoding or decompression. Furthermore, these solutions may be applied to other visual data such as images.
[0193] The disclosed and other solutions, examples, embodiments, modules, and functional operations described herein can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed herein and their structural equivalents, or in a combination of one or more of them. The disclosed and other embodiments can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer-readable medium for execution by or for controlling the operation of a data processing apparatus. The computer-readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter affecting a machine-readable propagated signal, or one or more combinations thereof. The term "data processing apparatus" encompasses all apparatus, devices, and machines for processing data, including, for example, a programmable processor, a computer, or multiple processors or computers. An apparatus can include, in addition to hardware, code that creates an environment for the execution of the computer program in question, such as code that constitutes a processor firmware, a protocol stack, a database management system, an operating system, or one or more combinations thereof. A propagated signal is an artificially generated signal, for example a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to an appropriate receiver device.
[0194] A computer program (also known as a program, software, software application, script, or code) can be written in any type of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in several coordinated files (e.g., files that store one or more modules, subprograms, or portions of code). A computer program can be deployed to be executed on one computer or on several computers located at one site or distributed across several sites and interconnected by a communication network.
[0195] The processes and logic flows described herein may 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 may also be performed by, and apparatus may be implemented as, special purpose logic circuitry, such as an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
[0196] Processors suitable for executing computer programs include, for example, both general purpose and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor receives instructions and data from a read-only memory or a random access memory, or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer also includes one or more mass storage devices for storing data, such as magnetic, magneto-optical, or optical disks, or is operatively coupled to receive data from or transfer data to them, 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 non-volatile memory, media, and memory devices, including, by way of example, semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks, such as internal hard disks or removable disks; magnetic optical disks; and CD ROM and DVD-ROM disks. The processor and memory may be supplemented by, or incorporated in, special purpose logic circuitry.
[0197] Although this patent document contains many details, these should not be considered as limitations on any subject matter or the scope of what may be claimed, but rather as descriptions of features that may be specific to certain embodiments of a particular approach. Certain features described in this patent document in the context of separate embodiments may also be implemented in combination in a single embodiment. Conversely, various features described in the context of a single embodiment may also be implemented in multiple embodiments separately or in any suitable subcombination. Furthermore, although features may be described above as acting in a particular combination and may initially be claimed as such, one or more features from a claimed combination may in some cases be carved out of the combination, and the claimed combination may be directed to a subcombination or a variation of the subcombination.
[0198] Similarly, although operations are shown in a particular order in the figures, this should not be understood as requiring that such operations be performed in the particular order or sequence shown, or that all of the illustrated operations be performed, 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.
[0199] Only a few implementations and examples have been described; other implementations, extensions, and variations may be made based on what is described and illustrated in this patent document.
Claims
1. 1. A method for processing video data, comprising the steps of: For a conversion between a current region of a video and a bitstream of the video, determining whether a luma adaptation loop filter set is included in the bitstream based on a first syntax element; determining, based solely on the first syntax element indicating that the luma adaptive loop filter set is included in the bitstream, for each adaptive loop filter class of the luma adaptive loop filter set, luma adaptive loop filter coefficients to be included in the bitstream; performing the conversion based on the determination; and Including, A method according to claim 1, wherein a second syntax element indicating whether the luma adaptive loop filter coefficients are included in the bitstream is unconditionally excluded from the bitstream.
2. 2. The method of claim 1 , wherein each adaptive loop filter class is assigned a specific index, denoted by sfIdx, where sfIdx ranges in value from 0 to the number of adaptive loop filter classes in the luma adaptive loop filter set minus 1.
3. 3. The method of claim 2, wherein the luma adaptive loop filter coefficients include at least one of an absolute value of a j-th coefficient of the adaptive loop filter class indicated by sfIdx or a sign of the j-th coefficient of the adaptive loop filter class indicated by sfIdx, where j is an integer variable.
4. The method of claim 1 , wherein when the adaptive loop filter class has all-zero luma adaptive loop filter coefficients, the all-zero luma adaptive loop filter coefficients are still included in the bitstream.
5. The method of claim 4 , wherein a zero absolute value for each pair of positions that share the same luma adaptive loop filter coefficient is included in the bitstream.
6. The method of claim 5 , wherein the adaptive loop filter class is a 7×7 diamond adaptive loop filter and 12 zero absolute value coefficients are included in the bitstream.
7. The conversion includes using an adaptive loop filter on a current block of the current region, and the bitstream includes: a third syntax element among a plurality of syntax elements, the third syntax element being alf_use_aps_flag, the third syntax element indicating whether a fixed filter set or a filter set from an adaptive parameter set (APS) is applied to the current block; a fourth syntax element among the plurality of syntax elements, the fourth syntax element being alf_luma_prey_filter_idx, the fourth syntax element indicating an index of the fixed filter set or the filter set from the APS; a fifth syntax element among the plurality of syntax elements, the fifth syntax element being alf_luma_fixed_filter_idx, the fifth syntax element indicating an index of the fixed filter set; configured to indicate the adaptive loop filter using the plurality of syntax elements including: the bitstream includes a sixth syntax element in a slice header, the sixth syntax element being num_alf_aps_ids_luma, the sixth syntax element indicating a number of adaptive loop filters APS used for the current region; the third syntax element is included in the bitstream when a value of the sixth syntax element in the slice header is equal to 1, and the third syntax element is included in the bitstream when the value of the sixth syntax element in the slice header is equal to 1; when a value of the third syntax element is equal to one and the value of the sixth syntax element in the slice header is greater than one, the fourth syntax element indicating the index of the filter set from the APS is included in the bitstream; The method of claim 1 , wherein the fifth syntax element is included in the bitstream when the value of the third syntax element is equal to zero.
8. the third syntax element being zero indicates that the fixed filter set is applied to the current block; The method of claim 7 , wherein the third syntax element equal to 1 indicates that the filter set from the APS is applied to the current block.
9. 9. The method of claim 7 or 8, wherein the bitstream excludes the third syntax element in response to the value of the sixth syntax element in the slice header being equal to zero, the third syntax element being inferred to indicate that the fixed filter set is to be applied to the current block.
10. 10. The method of claim 7, wherein in response to the value of the sixth syntax element in the slice header being equal to 1, the fourth syntax element indicating the index of the filter set from the APS is excluded from the bitstream.
11. The method of any one of claims 7 to 10, wherein the current region is a slice.
12. The method of claim 7 , wherein the fourth syntax element indicating the index of the filter set from the APS is coded in a truncated binary manner.
13. 13. The method of claim 7, wherein the maximum value of the fourth syntax element indicating the index of the filter set from the APS is set to the number of allowed ALF APS for the current region minus K, where K=1.
14. The method of claim 7 , wherein all bins of a binarized bin string of the fourth syntax element indicating the index of the filter set from the APS are bypass coded.
15. The method of any one of claims 1 to 14, wherein the converting comprises encoding the video into the bitstream.
16. The method of claim 1 , wherein the converting comprises decoding the video from the bitstream.
17. 1. An apparatus for processing video data, comprising: a processor; and a non-transitory memory having instructions that, when executed by the processor, cause the processor to: For a conversion between a current region of a video and a bitstream of the video, determining whether a luma adaptation loop filter set is included in the bitstream based on a first syntax element; determining, based solely on the first syntax element indicating that the luma adaptive loop filter set is to be included in the bitstream, for each adaptive loop filter class of the luma adaptive loop filter set, luma adaptive loop filter coefficients to be included in the bitstream; Based on the determination, the conversion is performed. Let them do that.
21. The apparatus, wherein a second syntax element indicating whether the luma adaptive loop filter coefficients are included in the bitstream is unconditionally excluded from the bitstream.
18. A non-transitory computer-readable storage medium storing instructions, the instructions causing a processor to: For a conversion between a current region of a video and a bitstream of the video, determining whether a luma adaptation loop filter set is included in the bitstream based on a first syntax element; determining, based solely on the first syntax element indicating that the luma adaptive loop filter set is to be included in the bitstream, for each adaptive loop filter class of the luma adaptive loop filter set, luma adaptive loop filter coefficients to be included in the bitstream; Based on the determination, the conversion is performed. Let them do that.
4. A non-transitory computer-readable storage medium, wherein a second syntax element indicating whether the luma adaptive loop filter coefficients are included in the bitstream is unconditionally excluded from the bitstream.
19. 1. A method for storing a bitstream of video, the method comprising: determining, for a current region of a video, whether a luma adaptive loop filter set is included in the bitstream based on a first syntax element; determining, based solely on the first syntax element indicating that the luma adaptive loop filter set is included in the bitstream, for each adaptive loop filter class of the luma adaptive loop filter set, luma adaptive loop filter coefficients to be included in the bitstream; generating the bitstream based on the determination; storing the bitstream in a non-transitory computer readable storage medium; Including, A method according to claim 1, wherein a second syntax element indicating whether the luma adaptive loop filter coefficients are included in the bitstream is unconditionally excluded from the bitstream.