Methods, apparatuses, and media for video processing
By introducing adaptive clipping operation into video processing and flexibly setting clipping parameters, the problem of improving encoding and decoding quality in existing technologies is solved, and more efficient encoding and decoding effects are achieved.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- DOUYIN VISION CO LTD
- Filing Date
- 2024-11-01
- Publication Date
- 2026-06-05
AI Technical Summary
Existing video encoding and decoding technologies have room for improvement in encoding and decoding quality, especially in terms of the flexibility and accuracy of clipping operations, resulting in the need to improve encoding and decoding efficiency and effects.
By introducing adaptive clipping operation into video processing, the upper and lower limits of the clipping operation can be flexibly set, and these parameters can be indicated in the bitstream to achieve precise control over the sample values.
It improves the quality and efficiency of video encoding and decoding, making the encoding and decoding process more flexible and efficient, and enhancing the quality of encoding and decoding.
Smart Images

Figure CN122162373A_ABST
Abstract
Description
Technical Field
[0001] The embodiments of this disclosure generally relate to video processing techniques, and more specifically, to adaptive clipping of sample values in video encoding and decoding. Background Technology
[0002] Today, digital video capabilities are being applied to all aspects of people's lives. Various video compression technologies have been proposed for video encoding / decoding, such as MPEG-2, MPEG-4, ITU-TH.263, ITU-TH.264 / MPEG-4 Part 10 Advanced Video Codec (AVC), ITU-TH.265 High Efficiency Video Codec (HEVC) standard, and Multi-Functional Video Codec (VVC) standard. However, the encoding and decoding quality of video codec technologies is generally expected to be further improved. Summary of the Invention
[0003] Embodiments of this disclosure provide a solution for video processing.
[0004] In a first aspect, a method for video processing is proposed. The method includes: a conversion between a current video block and a bitstream of the video; limiting the value of a first point associated with the current video block using a limiting operation; at least one parameter for the limiting operation being indicated in the bitstream; and the at least one parameter including at least one of an upper limit value or a lower limit value; and performing the conversion based on the limited value.
[0005] Based on the method according to the first aspect of this disclosure, upper and / or lower limits for clipping operations are indicated in the bitstream. Compared to conventional solutions with fixed upper and lower limits, the proposed method advantageously allows for greater flexibility in the upper and / or lower limits, thereby enabling adaptive clipping for sample values. In this way, encoding and decoding quality can be improved.
[0006] In a second aspect, an apparatus for video processing is provided. The apparatus includes a processor and a non-transitory memory having instructions thereon. When executed by the processor, the instructions cause the processor to perform the method according to the first aspect of this disclosure.
[0007] In a third aspect, a non-transitory computer-readable storage medium is proposed. This non-transitory computer-readable storage medium stores instructions that cause a processor to execute the method according to the first aspect of this disclosure.
[0008] In a fourth aspect, another non-transitory computer-readable recording medium is proposed. This non-transitory computer-readable recording medium stores a bitstream of video generated by a method performed by an apparatus for video processing. The method includes: limiting the value of a first point associated with a current video block of the video by using a limiting operation, wherein at least one parameter for the limiting operation is indicated in the bitstream, and the at least one parameter includes at least one of an upper limit value or a lower limit value; and generating the bitstream based on the limited value.
[0009] In a fifth aspect, a method for storing a bitstream of video is proposed. The method includes: limiting the value of a first point associated with a current video block of the video using a limiting operation, wherein at least one parameter for the limiting operation is indicated in the bitstream, and the at least one parameter includes at least one of an upper limit value or a lower limit value; generating the bitstream based on the limited value; and storing the bitstream in a non-transitory computer-readable recording medium.
[0010] This synopsis aims to present, in a simplified form, the selected concepts further described below in the detailed embodiments. This synopsis is not intended to identify key or essential features of the claimed subject matter, nor is it intended to limit the scope of the claimed subject matter. Attached Figure Description
[0011] The above and other objects, features, and advantages of exemplary embodiments of the present disclosure will become more apparent from the following detailed description with reference to the accompanying drawings. In the exemplary embodiments of the present disclosure, the same reference numerals generally refer to the same components.
[0012] Figure 1 A block diagram of an example video codec system according to some embodiments of the present disclosure is shown; Figure 2 A block diagram of a first example video encoder according to some embodiments of the present disclosure is shown; Figure 3 A block diagram of an example video decoder according to some embodiments of the present disclosure is shown; Figure 4 The nominal vertical and horizontal positions of the 4:2:2 luminance and chrominance samples in the image are shown; Figure 5 An example of an encoder block diagram is shown; Figure 6A An example of raster scan strip segmentation of an image is shown; Figure 6B An example of rectangular strip segmentation of an image is shown; Figure 6C Examples of images segmented into pieces, bricks, and rectangular strips are shown; Figure 6DThe CTB (Content Tolerance) is shown across the bottom edge of the image; Figure 6E The CTB (Content Boundary) is shown across the right edge of the image; Figure 6F The CTB (Cross-Boundary Tolerance) is shown across the bottom right edge of the image; Figure 7 67 intra-frame prediction modes are shown; Figure 8 The image samples and horizontal and vertical block boundaries on an 8×8 grid are shown, as well as the non-overlapping blocks of the 8×8 samples; Figure 9 The pixels related to filter on / off decisions and strong / weak filter selection are shown; Figures 10A-10C An example of an ALF filter shape is shown; Figure 11A-11C An example of relative coordinates supported by a 5×5 diamond filter is shown; Figure 12 An example of relative coordinates supported by a 5×5 diamond filter is shown; Figure 13 A flowchart of a method for video processing according to embodiments of the present disclosure is shown; and Figure 14 A block diagram of a computing device in which various embodiments of the present disclosure may be implemented is shown.
[0013] Throughout all the accompanying figures, the same or similar reference numerals generally refer to the same or similar elements. Detailed Implementation
[0014] The principles of this disclosure will now be described with reference to some embodiments. It should be understood that these embodiments are described for illustrative purposes only and to help those skilled in the art understand and implement this disclosure, and do not imply any limitation on the scope of this disclosure. In addition to the methods described below, the disclosure described herein can be implemented in various other ways.
[0015] In the following description and claims, unless otherwise defined, all scientific and technical terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this disclosure pertains.
[0016] The terms "an embodiment," "embodiment," "example embodiment," etc., used in this disclosure refer to embodiments that may include specific features, structures, or characteristics, but not every embodiment is required to include that specific feature, structure, or characteristic. Furthermore, these phrases do not necessarily refer to the same embodiment. Moreover, when a specific feature, structure, or characteristic is described in conjunction with an example embodiment, it is claimed that, whether explicitly described or not, such a feature, structure, or characteristic affecting its relation to other embodiments is within the knowledge of those skilled in the art.
[0017] It should be understood that although the terms “first” and “second”, etc., may be used herein to describe various elements, these elements should not be limited to these terms. These terms are used only to distinguish one element from another. For example, a first element may be referred to as a second element, and similarly, a second element may be referred to as a first element, without departing from the scope of the exemplary embodiments. As used herein, the term “and / or” includes any and all combinations of one or more of the listed terms.
[0018] The terminology used herein is for the purpose of describing particular embodiments only and is not intended to limit the exemplary embodiments. As used herein, the singular forms “a,” “an,” and “the” are also intended to include the plural forms unless the context clearly indicates otherwise. It should also be understood that the terms “comprising,” “including,” “having,” “containing,” and / or “comprising” as used herein indicate the presence of the said features, elements, and / or components, but do not exclude the presence or addition of one or more other features, elements, components, and / or combinations thereof.
[0019] Example Environment Figure 1 This is a block diagram illustrating an example video encoding / decoding system 100 from which the techniques of this disclosure may be utilized. As shown, the video encoding / decoding system 100 may include a source device 110 and a destination device 120. The source device 110 may also be referred to as a video encoding device, and the destination device 120 may also be referred to as a video decoding device. In operation, the source device 110 may be configured to generate encoded video data, and the destination device 120 may be configured to decode the encoded video data generated by the source device 110. The source device 110 may include a video source 112, a video encoder 114, and an input / output (I / O) interface 116.
[0020] Video source 112 may include sources such as video capture devices. Examples of video capture devices include, but are not limited to, interfaces for receiving video data from video content providers, computer graphics systems for generating video data, and / or combinations thereof.
[0021] Video data may include one or more images. Video encoder 114 encodes the video data from video source 112 to generate a bitstream. The bitstream may include a sequence of bits forming an encoded representation of the video data. The bitstream may include encoded images and associated data. An encoded image is an encoded representation of an image. Associated data may include sequence parameter sets, image parameter sets, and other syntax structures. I / O interface 116 may include a modulator / demodulator and / or a transmitter. Encoded video data can be directly transmitted to destination device 120 via network 130A through I / O interface 116. Encoded video data may also be stored on storage medium / server 130B for access by destination device 120.
[0022] The destination device 120 may include an I / O interface 126, a video decoder 124, and a display device 122. The I / O interface 126 may include a receiver and / or a modem. The I / O interface 126 may acquire encoded video data from the source device 110 or the storage medium / server 130B. The video decoder 124 may decode the encoded video data. The display device 122 may display the decoded video data to a user. The display device 122 may be integrated with the destination device 120, or it may be external to the destination device 120, which is configured to interface with an external display device.
[0023] The video encoder 114 and the video decoder 124 can operate according to video compression standards, such as the High Efficiency Video Codec (HEVC) standard, the Multi-Functional Video Codec (VVC) standard, and other existing and / or future standards.
[0024] Figure 2 This is a block diagram illustrating an example of a video encoder 200 according to some embodiments of the present disclosure. The video encoder 200 may be... Figure 1 An example of a video encoder 114 in system 100 is shown.
[0025] The video encoder 200 can be configured to implement any or all of the technologies disclosed herein. Figure 2 In the example, the video encoder 200 includes multiple functional components. The techniques described in this disclosure can be shared among the various components of the video encoder 200. In some examples, the processor can be configured to perform any or all of the techniques described in this disclosure.
[0026] In some embodiments, the video encoder 200 may include a segmentation unit 201, a prediction unit 202, a residual generation unit 207, a transform unit 208, a quantization unit 209, an inverse quantization unit 210, an inverse transform unit 211, a reconstruction unit 212, a buffer 213, and an entropy coding unit 214. The prediction unit 202 may include a mode selection unit 203, a motion estimation unit 204, a motion compensation unit 205, and an intra-frame prediction unit 206.
[0027] In other examples, the video encoder 200 may include more, fewer, or different functional components. In one example, the prediction unit 202 may include an intra-block copy (IBC) unit. The IBC unit can perform prediction in an IBC mode, in which at least one reference picture is the picture in which the current video block is located.
[0028] Furthermore, although some components (such as motion estimation unit 204 and motion compensation unit 205) can be integrated, for interpretable purposes, these components are... Figure 2 The examples are shown separately.
[0029] The segmentation unit 201 can segment an image into one or more video blocks. The video encoder 200 and the video decoder 300 can support various video block sizes.
[0030] The mode selection unit 203 can, for example, select one of several coding modes (intra-coding or inter-coding) based on the error result, and provide the resulting intra-coded or inter-coded block to the residual generation unit 207 to generate residual block data, and to the reconstruction unit 212 to reconstruct the coded block for use as a reference image. In some examples, the mode selection unit 203 can select an intra-inter-prediction joint prediction (CIIP) mode, in which prediction is based on inter-prediction signals and intra-prediction signals. In the case of inter-prediction, the mode selection unit 203 can also select a resolution for the block based on the motion vector (e.g., sub-pixel precision or integer pixel precision).
[0031] To perform inter-frame prediction on the current video block, motion estimation unit 204 can generate motion information for the current video block by comparing one or more reference frames from buffer 213 with the current video block. Motion compensation unit 205 can determine the predicted video block for the current video block based on the motion information and decoded samples of images from buffer 213 other than the image associated with the current video block.
[0032] The motion estimation unit 204 and the motion compensation unit 205 can perform different operations on the current video block, for example, depending on whether the current video block is in an I-strip, P-strip, or B-strip. As used herein, an "I-strip" can refer to a portion of an image composed of macroblocks, all of which are based on macroblocks within the same image. Furthermore, as used herein, in some aspects, "P-strip" and "B-strip" can refer to portions of an image composed of macroblocks independent of macroblocks within the same image.
[0033] In some examples, motion estimation unit 204 can perform unidirectional prediction on the current video block, and can search reference images in list 0 or list 1 to find a reference video block for the current video block. Motion estimation unit 204 can then generate a reference index indicating the reference image containing the reference video block in list 0 or list 1, and a motion vector indicating the spatial displacement between the current video block and the reference video block. Motion estimation unit 204 can output the reference index, prediction direction indicator, and motion vector as motion information for the current video block. Motion compensation unit 205 can generate a predicted video block for the current video block based on the reference video block indicated by the motion information of the current video block.
[0034] Alternatively, in other examples, motion estimation unit 204 can perform bidirectional prediction on the current video block. Motion estimation unit 204 can search for reference images in list 0 to find a reference video block for the current video block, and can also search for reference images in list 1 to find another reference video block for the current video block. Motion estimation unit 204 can then generate reference indices indicating multiple reference images containing multiple reference video blocks in lists 0 and 1, and motion vectors indicating multiple spatial displacements between the multiple reference video blocks and the current video block. Motion estimation unit 204 can output the multiple reference indices and multiple motion vectors of the current video block as motion information for the current video block. Motion compensation unit 205 can generate a predicted video block for the current video block based on the multiple reference video blocks indicated by the motion information of the current video block.
[0035] In some examples, the motion estimation unit 204 can output a complete set of motion information for use in the decoder's decoding process. Alternatively, in some embodiments, the motion estimation unit 204 can reference the motion information of another video block to transmit the motion information of the current video block via a signal. For example, the motion estimation unit 204 can determine that the motion information of the current video block is sufficiently similar to the motion information of neighboring video blocks.
[0036] In one example, the motion estimation unit 204 may indicate a value to the video decoder 300 in the syntax structure associated with the current video block, which indicates that the current video block has the same motion information as another video block.
[0037] In another example, motion estimation unit 204 can identify another video block and motion vector difference (MVD) in the syntax structure associated with the current video block. The motion vector difference indicates the difference between the motion vector of the current video block and the motion vector of the indicated video block. Video decoder 300 can use the motion vector of the indicated video block and the motion vector difference to determine the motion vector of the current video block.
[0038] As discussed above, the video encoder 200 can transmit motion vectors via signals in a predictive manner. Two examples of predictive signaling techniques that can be implemented by the video encoder 200 include Advanced Motion Vector Prediction (AMVP) and Merge Pattern Signaling.
[0039] Intra-prediction unit 206 can perform intra-prediction on the current video block. When intra-prediction unit 206 performs intra-prediction on the current video block, it can generate prediction data for the current video block based on decoded samples from other video blocks in the same frame. The prediction data for the current video block can include the predicted video block and various syntax elements.
[0040] The residual generation unit 207 can generate residual data for the current video block by subtracting (e.g., indicated by a minus sign) multiple predicted video blocks from the current video block. The residual data for the current video block may include residual video blocks corresponding to different sample components of the samples in the current video block.
[0041] In other examples, such as in skip mode, there may be no residual data for the current video block, and the residual generation unit 207 may not perform the subtraction operation.
[0042] The transform processing unit 208 can generate one or more transform coefficient video blocks for the current video block by applying one or more transforms to the residual video blocks associated with the current video block.
[0043] After the transform processing unit 208 generates a transform coefficient video block associated with the current video block, the quantization unit 209 can quantize the transform coefficient video block associated with the current video block based on one or more quantization parameter (QP) values associated with the current video block.
[0044] The inverse quantization unit 210 and the inverse transform unit 211 can apply inverse quantization and inverse transform to the transform coefficient video block respectively to reconstruct the residual video block from the transform coefficient video block. The reconstruction unit 212 can add the reconstructed residual video block to the corresponding samples from one or more predicted video blocks generated by the prediction unit 202 to produce a reconstructed video block associated with the current video block for storage in the buffer 213.
[0045] After the video block is reconstructed by reconstruction unit 212, a loop filtering operation can be performed to reduce video block artifacts in the video block.
[0046] Entropy encoding unit 214 can receive data from other functional components of video encoder 200. When entropy encoding unit 214 receives data, it can perform one or more entropy encoding operations to generate entropy-encoded data and output a bitstream including the entropy-encoded data.
[0047] Figure 3 This is a block diagram illustrating an example of a video decoder 300 according to some embodiments of the present disclosure. The video decoder 300 may be... Figure 1 An example of video decoder 124 in system 100 is shown.
[0048] The video decoder 300 can be configured to perform any or all of the technologies disclosed herein. Figure 3 In the example, the video decoder 300 includes multiple functional components. The techniques described in this disclosure can be shared among the various components of the video decoder 300. In some examples, the processor can be configured to perform any or all of the techniques described in this disclosure.
[0049] exist Figure 3 In the example, the video decoder 300 includes an entropy decoding unit 301, a motion compensation unit 302, an intra-frame prediction unit 303, an inverse quantization unit 304, an inverse transform unit 305, a reconstruction unit 306, and a buffer 307. In some examples, the video decoder 300 can perform a decoding process that is generally contrasted with the encoding process described with respect to the video encoder 200.
[0050] Entropy decoding unit 301 can retrieve the encoded bitstream. The encoded bitstream may include entropy-encoded video data (e.g., encoded blocks of video data). Entropy decoding unit 301 can decode the entropy-encoded video data, and motion compensation unit 302 can determine motion information from the entropy-decoded video data, including motion vectors, motion vector precision, reference picture list indices, and other motion information. Motion compensation unit 302 can determine such information, for example, by performing AMVP and Merge pattern. AMVP is used, which involves deriving several most likely candidates based on data from neighboring PBs and reference pictures. Motion information typically includes horizontal and vertical motion vector displacement values, one or two reference picture indices, and, in the case of a prediction region in a B-strip, an identifier of which reference picture list is associated with each index. As used herein, in some aspects, "Merge pattern" may refer to deriving motion information from spatially or temporally neighboring blocks.
[0051] The motion compensation unit 302 can generate motion compensation blocks and can perform interpolation based on an interpolation filter. Identifiers for the interpolation filters used at sub-pixel precision can be included in the syntax elements.
[0052] The motion compensation unit 302 can use the interpolation filter used by the video encoder 200 during the encoding of the video block to calculate the interpolated values for sub-integer pixels of the reference block. The motion compensation unit 302 can determine the interpolation filter used by the video encoder 200 based on the received syntax information, and the motion compensation unit 302 can use the interpolation filter to generate the prediction block.
[0053] Motion compensation unit 302 may use at least some of the syntax information to determine the size of the blocks for encoding the encoded video sequence (multiple frames) and / or (multiple stripes), segmentation information describing how each macroblock of the image of the encoded video sequence is segmented, a pattern indicating how each segment is encoded, one or more reference frames (and a list of reference frames) for each inter-frame coded block, and other information for decoding the encoded video sequence. As used herein, in some aspects, a “strip” can refer to a data structure that can be decoded independently of other stripes of the same image in terms of entropy encoding / decoding, signal prediction, and residual signal reconstruction. A strip can be an entire image or a region of an image.
[0054] Intra-prediction unit 303 can use, for example, an intra-prediction mode received in the bitstream to form prediction blocks from spatially adjacent blocks. Dequantization unit 304 dequantizes, i.e., dequantizes, the quantized video block coefficients provided in the bitstream and decoded by entropy decoding unit 301. Inverse transform unit 305 applies an inverse transform.
[0055] The reconstruction unit 306 can obtain the decoded block, for example, by adding the residual block to the corresponding predicted block generated by the motion compensation unit 302 or the intra-frame prediction unit 303. If necessary, a deblocking filter can also be applied to filter the decoded block to remove block artifacts. The decoded video block is then stored in a buffer 307, which provides a reference block for subsequent motion compensation / intra-frame prediction and also generates decoded video for presentation on a display device.
[0056] Some exemplary embodiments of this disclosure will be described in detail below. It should be understood that section headings are used in this document for ease of understanding and not to limit the embodiments disclosed in a section to that section only. Furthermore, although some embodiments are described with reference to multi-functional video codecs or other specific video codecs, the disclosed techniques are also applicable to other video codec techniques. Furthermore, although some embodiments describe video encoding steps in detail, it should be understood that the corresponding decoding steps corresponding to de-encoding will be implemented by the decoder. Additionally, the term video processing includes video encoding or compression, video decoding or decompression, and video transcoding, in which video pixels are represented from one compression format to another or at different compression bitrates.
[0057] 1. Brief Overview This disclosure relates to video codec techniques. Specifically, it relates to loop filters and other codec tools in image / video codecs. These ideas can be applied individually or in various combinations to any existing video codec standard or non-standard video codec, such as High Efficiency Video Codec (HEVC) and Versatile Video Codec (VVC). The proposed ideas can also be applied to future video codec standards or video codecs.
[0058] 2. Abbreviation AVC Advanced Video Encoding and Decoding CPB encoded / decoded image cache CRA Pure Random Access CTU encoding / decoding tree unit CVS encoded video sequence DPB decodes image cache DPS Decoding Parameter Set GCI General Constraints Information HEVC High-Efficiency Video Encoding and Decoding JEM Joint Exploration Model MCTS motion constraint set NAL Network Abstraction Layer OLS Output Layer Set PH image header PPS Image Parameter Set PTL levels, tiers, and grades PU image unit RRP reference image resampling RBSP raw byte sequence payload SEI Supplemental Enhancement Information SH strip head SPS sequence parameter set VCL video codec layer VPS Video Parameter Set VTMVVC test model VUI Video Availability Information VVC Multifunctional Video Encoding and Decoding TU Transformer CU encoding / decoding unit DF Deblocking Filter SAO Sample Adaptive Compensation ALF Adaptive Loop Filter CBF codec block flag QP quantization parameters RDO Rate Distortion Optimization BF bilateral filter GDR is being gradually decoded and refreshed. 3. Introduction Video codec standards have primarily evolved through the development of well-known ITU-T and ISO / IEC standards. ITU-T developed the H.261 and H.263 standards, while ISO / IEC developed the MPEG-1 and MPEG-4 visual standards. These two organizations jointly developed the H.262 / MPEG-2 video standard, the H.264 / MPEG-4 Advanced Video Codec (AVC) standard, and the H.265 / HEVC standard. Starting with H.262, video codec standards are based on a hybrid video codec architecture, utilizing temporal prediction plus transform coding. To explore future video codec technologies beyond HEVC, the Joint Video Exploration Team (JVET) was jointly established by VCEG and MPEG in 2015. Since then, JVET has adopted many new methods and incorporated them into reference software called the Joint Exploration Model (JEM). JVET meetings are held concurrently every quarter, and the goal of the new codec standards is to reduce the bitrate by 50% compared to HEVC. The new video codec standard was officially named Multifunctional Video Codec (VVC) at the JVET meeting in April 2018, and the first version of the VVC Test Model (VTM) was also released at that time. Due to ongoing efforts to standardize VVC, new codec technologies have been adopted into the VVC standard at every JVET meeting. The VVC working draft and the VTM test model are updated after each meeting.
[0059] ITU-T VCEG (Q6 / 16) and ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) are investigating the potential need to standardize future video codec technologies with compression capabilities significantly exceeding the current VVC standard. This future standardization effort could take the form of extended versions of VVC or entirely new standards. These groups are conducting this exploratory activity in a joint collaborative effort called the Joint Video Exploration Team (JVET) to evaluate compression technology designs proposed by experts in the field. The first exploratory experiment (EE) was established at the JVET meeting from January 6-15, 2021, and named the reference software for the Enhanced Compression Model (ECM). The test model ECM is updated after each JVET meeting.
[0060] 3.1. Color Space and Chromaticity Downsampling A color space, also known as a color model (or color system), is an abstract mathematical model that simply describes a range of colors as tuples of numbers, typically 3 or 4 values or color components (e.g., RGB). Essentially, a color space is a refinement of a coordinate system and its subspaces.
[0061] For video compression, the most commonly used color spaces are YCbCr and RGB.
[0062] YCbCr, Y'CbCr, or Y Pb / Cb Pr / Cr, also written as YCBCR or Y'CBCR, is a family of color spaces used as part of the color image pipeline in video and digital photography systems. Y' is the luminance component, and CB and CR are the blue and red difference chromaticity components. Y' (with an apostrophe) is distinguished from Y, which is luminance, meaning that light intensity is non-linearly encoded based on gamma-corrected RGB primary colors.
[0063] Chromaticity downsampling is a practice of encoding images by applying a lower resolution to chromaticity information compared to luminance information. It takes advantage of the fact that the human visual system is less sensitive to color differences than to luminance differences. 3.1.1.4:4:4 Each of the three Y'CbCr components has the same sample rate, therefore there is no chromaticity downsampling. This scheme is sometimes used in high-end cinema scanners and film post-production. 3.1.2.4:2:2 The two chroma components are sampled at half the sample rate of the luminance: the horizontal chroma resolution is halved, while the vertical chroma resolution remains unchanged. This reduces the bandwidth of the uncompressed video signal by one-third with almost no visual difference. An example of the nominal vertical and horizontal positions of the 4:2:2 color format is shown in... Figure 4 It is depicted in the middle. Figure 4 The nominal vertical and horizontal positions of the 4:2:2 luminance and chrominance samples in the image are shown. 3.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 because the Cb and Cr channels are sampled only on each alternating row. Therefore, the data rate remains the same. Cb and Cr are downsampled by a factor of 2 in both the horizontal and vertical directions. There are three variations of the 4:2:0 scheme with different horizontal and vertical positions.
[0067] • In MPEG-2, Cb and Cr are co-located in the horizontal direction. Cb and Cr are located between pixels in the vertical direction (at the gap position).
[0068] • In JPEG / JFIF, H.261, and MPEG-1, Cb and Cr are located at intervening positions, in the middle of alternating luminance samples.
[0069] • In a 4:2:0 DV, Cb and Cr co-occur in the horizontal direction. In the vertical direction, they co-occur on alternating rows.
[0070] Table 3-1 SubWidthC and SubHeightC values derived from chroma_format_idc and separate_colour_plane_flag
[0071] 3.2. Encoding and decoding process of a typical video codec Figure 5 An example of a VVC encoder block diagram is shown, which contains three loop filtering blocks: Deblocking Filter (DF), Sample Adaptive Compensation (SAO), and ALF. Unlike DF, which uses predefined filters, SAO and ALF utilize the original samples of the current image, reducing the mean square error between the original and reconstructed samples by adding an offset and applying a Finite Impulse Response (FIR) filter, respectively, and by using the side information transmitted through the signal transmission offset and filter coefficients via encoding and decoding. ALF is located in the last processing stage of each image and can be viewed as a tool attempting to capture and repair artifacts caused by previous stages.
[0072] 3.3. Definition of Video / Encoding / Decoding Unit The image is divided into one or more slice rows and one or more slice columns. A slice is a sequence of CTUs that cover a rectangular area of the image.
[0073] The sheet is divided into one or more bricks, each brick consisting of multiple CTU rows within the sheet.
[0074] A slice that is not divided into multiple bricks is also called a brick. However, a brick that is a proper subset of a slice is not called a slice.
[0075] A strip contains several slices of an image or several bricks of a slice.
[0076] Two stripe modes are supported: raster scan stripe mode and rectangular stripe mode. In raster scan stripe mode, the stripe contains a sequence of slices from a raster scan of the image. In rectangular stripe mode, the stripe contains multiple tiles that together form a rectangular area of the image. The tiles within the rectangular stripe are arranged in the order of the stripe's raster scan.
[0077] Figure 6A An example of raster scan strip segmentation of an image is shown, where the image is divided into 12 slices and 3 raster scan strips.
[0078] Figure 6B An example of rectangular strip segmentation of an image is shown, where the image is divided into 24 slices (6 slice columns and 4 slice rows) and 9 rectangular strips.
[0079] Figure 6CAn example of an image divided into slices, bricks, and rectangular strips is shown, where the image is divided into 4 slices (2 slice columns and 2 slice rows), 11 bricks (the top left slice contains 1 brick, the top right slice contains 5 bricks, the bottom left slice contains 2 bricks, and the bottom right slice contains 3 bricks) and 4 rectangular strips.
[0080] 3.3.1. CTU / CTB Dimensions In VVC, the CTU size for signal transmission in SPS can be as small as 4x4 via the syntax element log2_ctu_size_minus2.
[0081] 7.3.2.3 Sequence Parameter Set (RBSP) Syntax
[0082] The increment of 2 in log2_ctu_size_minus2 specifies the size of the luminance codec tree block for each CTU.
[0083] log2_min_luma_coding_block_size_minus2 plus 2 specifies the minimum luma encoding / decoding block size.
[0084] The variables CtbLog2SizeY, CtbSizeY, MinCbLog2SizeY, MinCbSizeY, MinTbLog2SizeY, MaxTbLog2SizeY, MinTbSizeY, MaxTbSizeY, PicWidthInCtbsY, PicHeightInCtbsY, PicSizeInCtbsY, PicWidthInMinCbsY, PicHeightInMinCbsY, PicSizeInMinCbsY, PicSizeInSamplesY, PicWidthInSamplesC, and PicHeightInSamplesC are derived as follows: CtbLog2SizeY = log2_ctu_size_minus2+2 CtbSizeY = 1< <CtbLog2SizeY MinCbLog2SizeY = log2_min_luma_coding_block_size_minus2+2 MinCbSizeY = 1< <MinCbLog2SizeY MinTbLog2SizeY = 2 MaxTbLog2SizeY = 6 MinTbSizeY = 1 << MinTbLog2SizeY MaxTbSizeY = 1 << MaxTbLog2SizeY PicWidthInCtbsY = Ceil(pic_width_in_luma_samples ÷ CtbSizeY) PicHeightInCtbsY = Ceil(pic_height_in_luma_samples ÷ CtbSizeY) PicSizeInCtbsY = PicWidthInCtbsY * PicHeightInCtbsY PicWidthInMinCbsY = pic_width_in_luma_samples / MinCbSizeY PicHeightInMinCbsY = pic_height_in_luma_samples / MinCbSizeY PicSizeInMinCbsY = PicWidthInMinCbsY * PicHeightInMinCbsY PicSizeInSamplesY = pic_width_in_luma_samples * pic_height_in_luma_samples PicWidthInSamplesC = pic_width_in_luma_samples / SubWidthC PicHeightInSamplesC = pic_height_in_luma_samples / SubHeightC 3.3.2. CTUs in a Picture Assume that the CTB / LCU size is indicated by M×N (usually M equals N, as defined in HEVC / VVC), and for a CTB located at the boundary of a picture (or slice or strip or other kind of type, taking the picture boundary as an example), K×L samples are within the picture boundary, where K < M or L < N. For those CTBs depicted as in Figures 6D to 6F the CTB size remains equal to M×N. However, the bottom boundary / right boundary of the CTB is outside the picture. Figure 6DA schematic diagram showing the CTB across the bottom image boundary is shown. Figure 6E A schematic diagram showing the CTB across the right edge of the image is shown. Figure 6F A schematic diagram showing the CTB across the bottom right edge of the image is shown.
[0085] 3.4. Intra-frame prediction To capture arbitrary edge directions presented in natural video, the number of directional intra-frame modes has been expanded from 33 used in HEVC to 65. The expanded directional modes are depicted as dashed arrows, and the planar and DC modes remain the same. These denser directional intra-frame prediction modes are applicable to all block sizes and both luma and chroma intra-frame prediction.
[0086] The standard intra-frame prediction direction is defined as clockwise from 45 degrees to -135 degrees, such as... Figure 7 As shown. In VTM, for non-square blocks, several regular angular intra-prediction modes are adaptively replaced with wide-angle intra-prediction modes. The replaced modes are transmitted via signaling using the original method and remapped to the wide-angle mode index after resolution. The total number of intra-prediction modes remains unchanged at 67, and the intra-mode encoding and decoding remain unchanged.
[0087] In HEVC, each intra-codec block has a square shape, and the length of each side is a power of 2. Therefore, no division operation is needed to generate intra-prediction values using DC mode. In VVC, blocks can have a rectangular shape, which in general requires division for each block. To avoid division for DC prediction, only the longer side is used to calculate the average of non-square blocks.
[0088] 3.5. Inter-frame prediction For each inter-frame prediction CU, motion parameters consist of a motion vector, a reference picture index, and a reference picture list usage index. Extended information is the new encoding / decoding feature of the VVC required for inter-frame prediction sample generation. Motion parameters can be transmitted via signaling in an explicit or implicit manner. When a CU is encoded / decoded in skip mode, the CU is associated with a PU and has no significant residual coefficients, no encoded motion vector increments, or reference picture indices. A Merge mode is defined, whereby motion parameters for the current CU are obtained from neighboring CUs, including spatial and temporal candidates and extended scheduling introduced in the VVC. The Merge mode can be applied to any inter-frame prediction CU, not just skip mode. An alternative to the Merge mode is explicit transmission of motion parameters, where for each CU, the motion vector, the corresponding reference picture index for each reference picture list, the reference picture list usage flag, and other required information are explicitly transmitted via signaling.
[0089] 3.6. Deblocking Filter Deblocking filtering is a typical loop filter in video codecs. In VVC, the deblocking filtering process is applied to CU boundaries, transform subblock boundaries, and prediction subblock boundaries. Prediction subblock boundaries include prediction unit boundaries introduced by SbTMVP (subblock-based temporal motion vector prediction) and affine modes, while transform subblock boundaries include transform unit boundaries introduced by SBT (subblock transform) and ISP (intra-frame sub-segmentation) modes and transforms (due to implicit partitioning of large CUs). Following the practice in HEVC, the deblocking filter processing order is defined as first performing horizontal filtering on the vertical edges of the entire image, and then performing vertical filtering on the horizontal edges. This specific order allows multiple horizontal or vertical filtering processes to be applied in parallel threads, or still implemented on a CTB-by-CTB basis, with only a small processing latency.
[0090] The vertical edges in the image are first filtered. Then, the horizontal edges in the image are filtered using samples modified by the vertical edge filtering process as input. Vertical and horizontal edges in the CTB of each CTU are processed separately on a codec unit basis. The vertical edges of the codec blocks in the codec unit are filtered, starting from the edge on the left-hand side of the codec block and proceeding geometrically through the edges towards the right-hand side of the codec block. The horizontal edges of the codec blocks in the codec unit are filtered, starting from the edge on the top of the codec block and proceeding geometrically through the edges towards the bottom of the codec block. Figure 8 It is a schematic diagram of image samples, horizontal and vertical block boundaries, and non-overlapping blocks of 8×8 samples on an 8×8 grid, which can be de-blocked in parallel.
[0091] 3.6.1. Boundary Determination The filter is applied to the 8x8 block boundaries. Additionally, it must be a transform block boundary or a codec sub-block boundary (e.g., due to the use of affine motion prediction or ATMVP). For boundaries that are not such, the filter is disabled.
[0092] 3.6.2. Boundary Strength Calculation For transform block boundaries / encoder / decoder sub-block boundaries, if they are located within an 8x8 grid, they can be filtered, and bS[xD] can be applied to that edge. i ][yD j ] (where [xD i ][yD j The settings for (representing coordinates) are defined as follows.
[0093] Table 3-2 Boundary Strength (when SPS IBC is disabled)
[0094] Table 3-3 Boundary Strength (when SPS IBC is enabled)
[0095] 3.6.3. Deblocking Decision for Luminance Component Figure 9 The pixels involved in the filter on / off decision and strong / weak filter switching are shown. A wider and stronger brightness filter is used only when conditions 1, 2, and 3 are all true.
[0096] Condition 1 is the "large block condition". This condition detects whether the samples on the P-side and Q-side belong to a large block, and is represented by the variables bSidePisLargeBlk and bSideQisLargeBlk, respectively. bSidePisLargeBlk and bSideQisLargeBlk are defined as follows.
[0097] bSidePisLargeBlk = ((Edge type is vertical and p0 belongs to CU with width >= 32) || (Edge type is horizontal and p0 belongs to CU with height >= 32)) ? True : False bSideQisLargeBlk = ((Edge type is vertical and q0 belongs to CU with width >= 32) || (Edge type is horizontal and q0 belongs to CU with height >= 32)) ? True : False Based on bSidePisLargeBlk and bSideQisLargeBlk, condition 1 is defined as follows.
[0098] Condition 1 = (bSidePisLargeBlk || bSidePisLargeBlk) ? True : False Next, if condition 1 is true, condition 2 will be further examined. First, the following variables are derived: – First, derive dp0, dp3, dq0, and dq3 as in HEVC. – if (p side is greater than or equal to 32) dp0 = (dp0 + Abs(p50)) 2 * p40 + p30) + 1 )>>1 dp3 = (dp3 + Abs(p53)) 2 * p43+ p33) + 1 )>>1 – if (q side is greater than or equal to 32) dq0 = ( dq0 + Abs( q50 2 * q40 + q30) + 1 )>>1 dq3 = (dq3 + Abs(q53)) 2 * q43 + q33) + 1 )>>1 Condition 2 = (d < β) ? True : False Where d = dp0 + dq0 + dp3 + dq3. If conditions 1 and 2 are valid, then further check whether any item in the block uses a sub-block: If (bSidePisLargeBlk) { If (block P's mode == SUBBLOCKMODE) Sp = 5 else Sp = 7 } else Sp = 3 If (bSideQisLargeBlk) { If (block Q's mode == SUBBLOCKMODE) Sq = 5 else Sq = 7 } else Sq = 3 Finally, if both conditions 1 and 2 are valid, the proposed deblocking method will check condition 3 (the large block strong filter condition), which is defined as follows.
[0099] In condition 3, the strong filter condition, the following variables are derived: For example, deriving dpq in HEVC.
[0100] sp3 = Abs( p3 p0), as derived in HEVC if (p side is greater than or equal to 32) if (Sp == 5) sp3 = (sp3 + Abs(p5)) p3) + 1)>>1 else sp3 = (sp3 + Abs(p7) p3) + 1)>>1 sq3 = Abs( q0 q3), such as the derivation in HEVC if (q side is greater than or equal to 32) If (Sq == 5) sq3 = (sq3 + Abs(q5)) q3) + 1)>>1 else sq3 = (sq3 + Abs(q7)) q3) + 1)>>1 According to HEVC, the strong filter condition is: dpq < (β >> 2), sp3 + sq3 < (3 * β >> 5), and Abs(p0) q0) is less than (5 * t) C + 1 )>>1) ? True: False.
[0101] 3.6.4. A more robust deblocking filter for luminance A bilinear filter is used when samples on either side of the boundary belong to a large block. Samples belonging to a large block are defined as those with a vertical edge width >= 32 and those with a horizontal edge height >= 32.
[0102] Bilinear filters are listed below.
[0103] Then, in the above HEVC deblocking block, the block boundary sample point p i (For i=0 to Sp-1) and q i (For j=0 to Sq-1) (pi and qi are the i-th sample in the row used to filter vertical edges, or the i-th sample in the column used to filter horizontal edges), replaced by the following linear interpolation: —
[0104] —
[0105] in and The term is the position-related limiting described in Section 3.6.2, and , , , and The following is given.
[0106] 3.6.5. De-blocking decision for chroma A strong chromaticity filter is used on both sides of the block boundary. Here, the chromaticity filter is selected when the chromaticity edge on both sides is greater than or equal to 8 (chromaticity position), and the following decision with three conditions is satisfied: the first is for boundary strength and the decision of the block size. The proposed filter can be applied when the block width or height orthogonally spanning the block edge in the chromaticity sample domain is equal to or greater than 8. The second and third are essentially the same as those used for HEVC luminance deblocking decision, which are the on / off decision and the strong filter decision, respectively.
[0107] In the first decision, the boundary strength (bS) is modified for chroma filtering, and the conditions are checked sequentially. If a condition is met, the remaining conditions with lower priority are skipped.
[0108] Chromatic deblocking is performed when bS equals 2, or when bS equals 1 when a large block boundary is detected.
[0109] The second and third conditions are essentially the same as those for the HEVC luminance filter determination below.
[0110] In the second condition: Then, d is derived from the HEVC brightness in the block.
[0111] The second condition will be true when d is less than β.
[0112] In the third condition, the strong filter condition is derived as follows: For example, deriving dpq in HEVC.
[0113] sp3 = Abs( p3 p0), as derived in HEVC sq3 = Abs( q0 q3), such as the derivation in HEVC For example, in HEVC design, the strong filter condition is: dpq < (β >> 2), sp3 + sq3 < (β >> 3), and Abs(p0) q0) is less than (5 * t) C + 1 )>>1).
[0114] 3.6.6. Strong Deblocking Filter for Chroma The following strong deblocking filter is defined for chroma: p2′= (3*p3+2*p2+p1+p0+q0+4)>>3 p1′= (2*p3+p2+2*p1+p0+q0+q1+4)>>3 p0′= (p3+p2+p1+2*p0+q0+q1+q2+4)>>3 The proposed chromaticity filter performs deblocking on a 4x4 chromaticity sample grid.
[0115] 3.6.7. Location-Related Limiting Position-dependent limiting (tcPD) is applied to the output samples of strong and long filters that involve modifying 7, 5, and 3 samples at the boundaries. Assuming a quantization error distribution, it is proposed to increase the limiting value for samples expected to have higher quantization noise, thus anticipating a higher deviation between the reconstructed sample values and the true sample values.
[0116] For each P or Q boundary filtered by an asymmetric filter, based on the decision result, the position-related threshold table is selected from two tables (i.e., Tc7 and Tc3 listed below) that are provided to the decoder as edge information: Tc7 = { 6, 5, 4, 3, 2, 1, 1};Tc3 = { 6, 4, 2}; tcPD = (Sp == 3) ? Tc3 : Tc7; tcQD = (Sq == 3) ? Tc3 : Tc7; For P or Q boundaries filtered by short symmetric filters, a lower-amplitude position correlation threshold is applied: Tc3 = { 3, 2, 1}; After defining the threshold, the filtered p’ i and q’ i The sample values are limited based on the tcP and tcQ limiting values: p’’ i = Clip3(p' i + tcP i , p’ i – tcP i , p’ i ); q’’ j = Clip3(q' j + tcQ j , q’ j – tcQ j , q’ j ); in p’ i and q’ i These are the filtered sample values. p’’i and q’’ j It is the output sample value after amplitude limiting, and tcP i tcP i From VVC tc parameters and tcPD as well as tcQD The derived clipping threshold. The function Clip3 is the clipping function, as specified in VVC.
[0117] 3.6.8. Sub-block Removal and Adjustment To enable parallel-friendly deblocking using both long filters and sub-block deblocking, the long filter is restricted to modifying a maximum of 5 samples on the side using sub-block deblocking (affine, ATMVP, or DMVR), as shown in the brightness control for the long filter. Extending this, sub-block deblocking is adjusted such that sub-block boundaries on the 8x8 grid near the CU or implicit TU boundaries are restricted to modifying a maximum of two samples on each side.
[0118] The following applies to sub-block boundaries that are not aligned with the CU boundary.
[0119] If (block Q's mode == SUBBLOCKMODE && edge != 0) { if (!(implicitTU&&(edge == (64 / 4)))) if (edge == 2 || edge == (orthogonalLength - 2) || edge == (56 / 4) || edge == (72 / 4)) Sp = Sq = 2; else Sp = Sq = 3; else Sp = Sq = bSideQisLargeBlk ? 5:3 } Where edge = 0 corresponds to the CU boundary, edge = 2 or orthogonalLength-2 corresponds to the sub-block boundary 8 samples away from the CU boundary, etc. If implicit partitioning of TU is used, then implicit TU is true.
[0120] 3.7. Sample point adaptive compensation Sample Adaptive Compensation (SAO) is applied to the reconstructed signal after the deblocking filter, using compensation specified by the encoder for each CTB. The video encoder first decides whether to apply the SAO process to the current slice. If SAO is applied to a slice, each CTB is classified into one of five SAO types as shown in Table 3-1. The concept of SAO is to classify pixels into multiple categories and reduce distortion by adding compensation to pixels in each category. SAO operations include Edge Compensation (EO) and Band Compensation (BO), where EO uses edge attributes to classify pixels in SAO types 1 through 4, and BO uses pixel intensity to classify pixels in SAO type 5. Each applicable CTB has SAO parameters including sao_merge_left_flag, sao_merge_up_flag, SAO type, and four compensations. If sao_merge_left_flag equals 1, the current CTB will reuse the SAO type and compensation of the left CTB. If sao_merge_up_flag equals 1, the current CTB will reuse the SAO type and compensation of the upper CTB.
[0121] Table 3-4 Specifications for SAO Types
[0122] 3.8. Adaptive Loop Filter Adaptive Loop Filtering (ALF) for video encoding and decoding minimizes the mean square error between the original and decoded samples using Wiener-based adaptive filters. ALF is located at the last processing stage of each picture and can be considered a tool for capturing and repairing artifacts from previous stages. Appropriate filter coefficients are determined by the encoder and explicitly transmitted to the decoder via the signal. To achieve better encoding and decoding efficiency, especially for high-resolution video, local adaptation is used for the luminance signal by applying different filters to different regions or blocks in the picture. In addition to filter adaptation, filter on / off control at the codec tree unit (CTU) level also contributes to improved encoding and decoding efficiency. Syntactically, filter coefficients are sent in a picture-level header called the adaptive parameter set, and the filter on / off flags of the CTUs are interleaved at the CTU level in the stripe data. This syntax design not only supports picture-level optimization but also achieves low encoding latency.
[0123] 3.8.1. Signaling of parameters According to the ALF design in VTM, filter coefficients and limiting indices are carried in the ALF APS. The ALF APS can include up to eight chromaticity filters and a luma filter set with up to 25 filters. An index is also included for each of the 25 luma categories. Categories with the same index share the same filters. By merging different categories, the number of bits required to represent the filter coefficients is reduced. The absolute values of the filter coefficients use 0. th The signal is represented by an Exp-Golomb code followed by a sign bit for the non-zero coefficients. When clipping is enabled, a two-bit fixed-length code is also used for each filter coefficient via signal transmission clipping index. The decoder can use up to 8 ALF APS simultaneously.
[0124] The filter control syntax elements of ALF in VTM include two types of information. First, the ALF on / off flag is transmitted via signaling at the sequence, picture, strip, and CTB levels. Chroma ALF can only be enabled at the picture and strip levels if the luma ALF is enabled at the corresponding level. Second, if the ALF is enabled at that level, filter usage information is transmitted via signaling at the picture, strip, and CTB levels. If all strips within a picture use the same APS, the referenced ALF APSID is encoded / decoded at the strip or picture level. The luma component can reference up to 7 ALF APSs, and the chroma component can reference 1 ALF APS. For the luma CTB, an index indicating which ALF APS or the offline-trained luma filter set is transmitted via signaling. For the chroma CTB, the index indicates which filter in the referenced APS is used.
[0125] The data syntax elements of ALF associated with the luminance component in VTM are listed below:
[0126] A value of 1 for `alf_luma_filter_signal_flag` indicates that the luminance filter set is transmitted via signal. A value of 0 for `alf_luma_filter_signal_flag` indicates that the luminance filter set is not transmitted via signal.
[0127] A value of 0 for `alf_luma_clip_flag` indicates that linear adaptive loop filtering is applied to the luminance component. A value of 1 for `alf_luma_clip_flag` indicates that nonlinear adaptive loop filtering can be applied to the luminance component.
[0128] The increment of 1 in alf_luma_num_filters_signalled_minus1 specifies the number of adaptive loop filter classes through which the luminance coefficient can be transmitted via signal transmission. The value of alf_luma_num_filters_signalled_minus1 must be in the range of 0 to NumAlfFilters – 1 (inclusive).
[0129] `alf_luma_coeff_delta_idx[filtIdx]` specifies the index of the adaptive loop filter luminance coefficient increment for the filter class indicated by `filtIdx`, ranging from 0 to `NumAlfFilters – 1`. When `alf_luma_coeff_delta_idx[filtIdx]` does not exist, it is presumed 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. The value of `alf_luma_coeff_delta_idx[filtIdx]` must be in the range of 0 to `alf_luma_num_filters_signalled_minus1` (inclusive).
[0130] `alf_luma_coeff_abs[sfIdx][j]` specifies the absolute value of the j-th coefficient of the luminance filter transmitted through the signal, indicated by `sfIdx`. When `alf_luma_coeff_abs[sfIdx][j]` does not exist, it is presumed to be equal to 0. The value of `alf_luma_coeff_abs[sfIdx][j]` must be in the range of 0 to 128 (inclusive).
[0131] alf_luma_coeff_sign[sfIdx][j] specifies the sign of the j-th luminance coefficient of the filter indicated by sfIdx, as follows: – If alf_luma_coeff_sign[sfIdx][j] equals 0, then the corresponding luminance filter coefficient has a positive value.
[0132] – Otherwise (alf_luma_coeff_sign[sfIdx][j] equals 1), the corresponding luminance filter coefficient has a negative value.
[0133] When alf_luma_coeff_sign[sfIdx][j] does not exist, it is presumed to be equal to 0.
[0134] alf_luma_clip_idx[sfIdx][j] specifies the limiting index to be used before multiplying by the j-th coefficient of the luminance filter transmitted through the signal, indicated by sfIdx. When alf_luma_clip_idx[sfIdx][j] does not exist, it is presumed to be equal to 0.
[0135] The ALF codec tree unit syntax elements associated with the luma component in VTM are listed below:
[0136] `alf_ctb_flag[cIdx][xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]` equal to 1 indicates that the adaptive loop filter is applied to the codec tree block for the color components indicated by `cIdx` of the codec tree unit at the luma position (xCtb, yCtb). `alf_ctb_flag[cIdx][xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]` equal to 0 indicates that the adaptive loop filter is not applied to the codec tree block for the color components indicated by `cIdx` of the codec tree unit at the luma position (xCtb, yCtb).
[0137] When alf_ctb_flag[cIdx][xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY] does not exist, it is presumed to be equal to 0.
[0138] A value of 0 for `alf_use_aps_flag` specifies that one filter from the fixed filter set is applied to the lumen CTB. A value of 1 for `alf_use_aps_flag` specifies that the filter set from the APS is applied to the lumen CTB. When `alf_use_aps_flag` does not exist, it is presumed to be equal to 0.
[0139] `alf_luma_prev_filter_idx` specifies the previous filter applied to the lumen CTB. The value of `alf_luma_prev_filter_idx` must be in the range of 0 to `sh_num_alf_aps_ids_luma – 1` (inclusive). When `alf_luma_prev_filter_idx` does not exist, it is presumed to be equal to 0.
[0140] The variable AlfCtbFiltSetIdxY[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY], which represents the filter set index of the luminance CTB at a specified location (xCtb, yCtb), is derived as follows: – If alf_use_aps_flag equals 0, then AlfCtbFiltSetIdxY[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY] is set to equal alf_luma_fixed_filter_idx.
[0141] Otherwise, AlfCtbFiltSetIdxY[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY] is set to equal to 16+alf_luma_prev_filter_idx.
[0142] alf_luma_fixed_filter_idx specifies the fixed filter to be applied to the lumen CTB. The value of alf_luma_fixed_filter_idx must be in the range of 0 to 15 (inclusive).
[0143] Based on the VTM-based ALF design, the ECM-based ALF design further introduces the concept of candidate filter sets into the luminance filter. The luminance filter is trained with multiple candidates / rounds based on the updated luminance CTU ALF on / off decisions for each candidate / round. In this way, multiple filter sets will be associated with each trained candidate, and the class merging results for each filter set can be different. Each CTU can select the optimal filter set via RDO, and the relevant candidate information will be transmitted via signal transmission.
[0144] The data syntax elements of ALF associated with the luminance component in ECM are listed below:
[0145] The increment of alf_luma_num_alts_minus1 by 1 specifies the number of alternative filter sets for the luminance component. The value of alf_luma_num_alts_minus1 must be in the range of 0 to 3 (inclusive).
[0146] A value of 0 for `alf_luma_clip_flag[altIdx]` indicates that linear adaptive loop filtering is applied to the set of candidate luminance filters indexed `altIdx`. A value of 1 for `alf_luma_clip_flag[altIdx]` indicates that nonlinear adaptive loop filtering can be applied to the set of candidate luminance filters indexed `altIdx`.
[0147] The value of alf_luma_num_filters_signalled_minus1[altIdx] plus 1 specifies the number of adaptive loop filter classes through which the luminance coefficients of the candidate luminance filter set at index altIdx can be transmitted via signal transmission. The value of alf_luma_num_filters_signalled_minus1[altIdx] must be in the range of 0 to NumAlfFilters – 1 (inclusive).
[0148] `alf_luma_coeff_delta_idx[altIdx][filtIdx]` specifies the index of the adaptive loop filter luminance coefficient increment for the filter class of the candidate luminance filter set, indicated by `filtIdx` in the range 0 to `NumAlfFilters–1`. When `alf_luma_coeff_delta_idx[altIdx][filtIdx]` does not exist, it is presumed to be equal to 0. The length of `alf_luma_coeff_delta_idx[altIdx][filtIdx]` is Ceil(Log2(alf_luma_num_filters_signalled_minus1[altIdx]+1)) bits. The value of alf_luma_coeff_delta_idx[altIdx][filtIdx] must be in the range of 0 to alf_luma_num_filters_signalled_minus1[altIdx] (inclusive).
[0149] `alf_luma_coeff_abs[altIdx][sfIdx][j]` specifies the absolute value of the j-th coefficient of the luminance filter transmitted through the signal, indicated by `sfIdx` of the candidate luminance filter set indexed at `altIdx`. When `alf_luma_coeff_abs[altIdx][sfIdx][j]` does not exist, it is presumed to be equal to 0. The value of `alf_luma_coeff_abs[altIdx][sfIdx][j]` must be in the range of 0 to 128 (inclusive).
[0150] alf_luma_coeff_sign[altIdx][sfIdx][j] specifies the sign of the j-th luminance coefficient of the filter indicated by sfIdx of the candidate luminance filter set with index altIdx, as follows: – If alf_luma_coeff_sign[altIdx][sfIdx][j] equals 0, then the corresponding luminance filter coefficient has a positive value.
[0151] – Otherwise (alf_luma_coeff_sign[altIdx][sfIdx][j] equals 1), the corresponding luminance filter coefficient has a negative value.
[0152] When alf_luma_coeff_sign[altIdx][sfIdx][j] does not exist, it is presumed to be equal to 0.
[0153] `alf_luma_clip_idx[altIdx][sfIdx][j]` specifies the limiting index of the limiting value, which is used before multiplying by the j-th coefficient of the luminance filter transmitted through the signal, indicated by `sfIdx` of the candidate luminance filter set with index `altIdx`. When `alf_luma_clip_idx[altIdx][sfIdx][j]` does not exist, it is presumed to be equal to 0.
[0154] The ALF codec tree unit syntax elements associated with the luma component in the ECM are listed below:
[0155] `alf_ctb_luma_filter_alt_idx[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]` specifies the index of the alternative luma filter for the codec tree block of the luma component applied to the luma position (xCtb, yCtb). When `alf_ctb_luma_filter_alt_idx[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]` does not exist, it is presumed to be equal to 0.
[0156] 3.8.2. Filter Shape In JEM, there are a maximum of three diamond filter shapes (e.g. Figures 10A to 10C (As shown) can be selected for the luminance component. Indices are transmitted via signaling at the image level to indicate the filter shape used for the luminance component. Each square represents a sample, and Ci (i = 0~6 (left), 0~12 (middle), 0~20 (right)) represents the coefficient to be applied to the sample. For the chrominance component in the image, a 5×5 rhombus shape is always used. In VVC, a 7×7 rhombus shape is always used for luminance, while a 5×5 rhombus shape is always used for chrominance.
[0157] 3.8.3. Classification of ALF Each 2×2 (or 4×4) block is categorized into one of 25 categories. Category Index C Based on its directionality and activity The quantization value is derived as follows:
[0158] In order to calculate and First, the gradients in the horizontal, vertical, and two diagonal directions are calculated using the 1-D Laplacian:
[0159] index and Referencing the coordinates of the top left sample point in the 2×2 block, and Indicator coordinates The reconstructed sample points.
[0160] Then, the gradients in the horizontal and vertical directions The maximum and minimum values are set as follows:
[0161] Furthermore, the maximum and minimum values of the gradients in the two diagonal directions are set as follows:
[0162] In order to derive directionality The values are compared with each other and with two thresholds. and Compare: Step 1. If and If both are true, then Set as .
[0163] Step 2. If If yes, continue from step 3; otherwise, continue from step 4.
[0164] Step 3. If ,but Set as ;otherwise Set as .
[0165] Step 4. If ,but Set as ;otherwise Set as .
[0166] Activity value Calculated as:
[0167] It is further quantized to the range of 0 to 4 (including boundary values), and the quantized value is represented as .
[0168] For the two chromaticity components in the image, no classification method is applied; that is, a single set of ALF coefficients is applied for each chromaticity component.
[0169] 3.8.4. Geometric Transformation of Filter Coefficients Before filtering each 2×2 block, geometric transformations (such as rotation or diagonal and vertical flips) are applied to the coordinates, depending on the gradient values calculated for that block. k , l Associated filter coefficients This is equivalent to applying these transformations to samples in the filter's support region. The idea is to make these different blocks more similar by aligning the directions of the different blocks to which the ALF is applied.
[0170] Three geometric transformations are introduced, including diagonal flip, vertical flip, and rotation:
[0171] in It is the size of the filter, and These are coefficient coordinates, which make the position... In the top left corner, and in position In the bottom right corner. Depending on the gradient values calculated for this block, the transformation is applied to the filter coefficients. f ( k , l The relationship between the transformation and the four gradients in the four directions is summarized in Table 3-5. Figures 11A to 11C The transformation coefficients for each position based on a 5x5 rhombus are shown.
[0172] Table 3-5 shows the mapping between gradients and transformations computed for a block.
[0173] 3.8.5. Filtering Process On the decoder side, when ALF is enabled for a block, each sample within the block... Filtering causes sample values As shown below, where L Indicates the filter length. Represents the filter coefficients, and This represents the decoded filter coefficients.
[0174]
[0175] Figure 12 This example illustrates relative coordinates used in a 5x5 diamond filter, assuming the current sample point's coordinates are (i, j) and (0, 0). Sample points at different coordinates, filled with the same color, are multiplied by the same filter coefficients.
[0176] 3.8.6. Restating Nonlinear Filtering Without the impact of encoding / decoding efficiency, linear filtering can be reformulated as follows:
[0177] in They are the same filter coefficients.
[0178] VVC introduces nonlinearity by using a simple limiting function to measure the value at neighboring sample points ( Compared with the current sample value being filtered ( When the difference is too large, the influence of neighboring sample values is reduced, thus making ALF more efficient.
[0179] More specifically, the ALF filter is modified as follows:
[0180] in It is a limiting function, and It is the limiting parameter, which depends on Filter coefficients. The encoder performs optimization to find the optimal values. .
[0181] A limiting parameter is specified for each ALF filter. For each filter coefficient, a limiting value is transmitted via signal. This means that up to 12 limiting values per luminance filter and up to 6 limiting values per chroma filter can be transmitted via signal in the bitstream.
[0182] To limit signaling costs and encoder complexity, only four fixed values are used for both inter-frame and intra-frame stripes.
[0183] Because the variance of local differences in luminance is typically higher than that in chrominance, two distinct sets are applied to the luminance and chrominance filters. A maximum sample value is also introduced in each set (here, for a 10-bit filter with a bit depth of 1024), allowing clipping to be disabled unnecessarily.
[0184] Four values are selected by dividing the full range of luminance sample values (encoded and decoded on 10 bits) and the chrominance range of 4 to 1024 into approximately equal parts in the logarithmic domain.
[0185] More precisely, the brightness table for the limit value has been obtained using the following formula: AlfClip L Where M=2 10 And N=4.
[0186] Similarly, the colorimetric table for the limiting values is obtained according to the following formula: AlfClip C Where M=2 10 N=4 and A=4.
[0187] 3.9. Bilateral Loop Filter 3.9.1. Bilateral Image Filter Bilateral image filtering is a nonlinear filter that smooths noise while preserving edge structure. Bilateral filtering is a technique where the filter weights decrease not only with the distance between samples but also with increasing intensity. In this way, excessive edge smoothing can be improved. The weights are defined as follows:
[0188] in and It is the distance in both the vertical and horizontal directions, and It refers to the intensity difference between sample points.
[0189] The edge-preserving denoising bilateral filter employs low-pass Gaussian filters for both the domain and range filters. The domain low-pass Gaussian filter assigns higher weights to pixels spatially closer to the center pixel. The range low-pass Gaussian filter assigns higher weights to pixels similar to the center pixel. Combining the range and domain filters, the bilateral filter at edge pixels becomes a slender Gaussian filter oriented along the edge and significantly reduced in the gradient direction. This is why the bilateral filter can smooth noise while preserving edge structure.
[0190] 3.9.2. Bilateral Filters in Video Encoding and Decoding Bilateral filters were proposed as a coding / decoding tool for VVC (Video Video Coding). The filters act as loop filters in parallel with Sample Adaptive Compensation (SAO) filters. Both the bilateral filters and SAO operate on the same input samples; each filter produces compensation, and these compensations are subsequently added to the input samples to produce output samples, which are then clipped before proceeding to the next stage. Spatial domain filtering intensity. Determined by the block size, smaller blocks are filtered more strongly, and the intensity of the filter is... Determined by the quantization parameters, stronger filtering is used for higher QP. Only the four nearest samples are used, therefore the filtered sample intensity... It can be calculated as
[0191] in Indicates the intensity of the central sample point. This indicates the intensity difference between the center sample point and the sample points above it. These represent the intensity differences between the central sample point and the sample points below, to the left, and to the right, respectively.
[0192] 4. Question Existing designs for sample value limiting in video encoding and decoding have the following problems: 1. In the current sample value limiting, the sample value is limited to a fixed range, without considering the local sample value distribution.
[0193] 5. Detailed Solution To address the above-mentioned problems and some other issues not mentioned, the following summarized methods are disclosed. The embodiments should be considered as examples for explaining general concepts and should not be interpreted in a narrow sense. Furthermore, these embodiments can be applied individually or combined in any way.
[0194] In this disclosure, a video unit can refer to a sequence, picture, subpicture, strip, CTU, TU, block, or region. A video unit may include one color component, or it may include multiple color components.
[0195] 1) A limiting method is proposed that can be applied to sample values in video encoding and decoding.
[0196] a. The clipping method can be applied to sample values from different stages of video encoding and decoding.
[0197] a) In one example, the amplitude limiting method can be applied to the predicted samples.
[0198] 1. In one example, the predicted samples can be generated by intra-frame mode.
[0199] 2. In one example, the predicted samples can be generated from inter-frame patterns.
[0200] 3. In one example, the predicted sample points can be generated by the CIIP pattern.
[0201] 4. In one example, the predicted samples can be generated by the SGPM model.
[0202] 5. In one example, the predicted sample points can be generated by the IBC model.
[0203] 6. In one example, predicted samples can be generated by intra-frame template matching patterns.
[0204] 7. In one example, the predicted samples can be generated by affine patterns.
[0205] 8. In one example, the predicted samples can be generated by the Merge pattern.
[0206] 9. In one example, the predicted samples can be generated using the AMVP pattern.
[0207] 10. In one example, the predicted samples can be generated by the GPM model.
[0208] 11. In one example, the predicted samples can be generated by the DMVR pattern.
[0209] 12. In one example, the predicted samples can be generated by the BDOF pattern.
[0210] 13. In one example, the predicted samples can be generated by the MMVD model.
[0211] 14. In one example, the predicted samples can be generated by the MIP pattern.
[0212] 15. In one example, predicted samples can be generated by cross-component modes (such as CCLM / intra-frame CCCM / inter-frame CCCM).
[0213] 16. In one example, the predicted samples can be generated by the sub-block TMVP pattern.
[0214] 17. In one example, the predicted samples can be generated by the TIMD pattern.
[0215] 18. In one example, the predicted samples can be generated by the DIMD pattern.
[0216] 19. In one example, predicted samples can be generated from patterns based on template matching.
[0217] 20. In one example, predicted samples can be generated from patterns based on non-template matching.
[0218] 21. In one example, the predicted samples can be generated by any other encoding / decoding mode.
[0219] b) In one example, the amplitude limiting method can be applied to reconstruct samples.
[0220] 1. In one example, the reconstructed samples can be generated by intra-frame mode.
[0221] 2. In one example, reconstructed samples can be generated from inter-frame patterns.
[0222] 3. In one example, the reconstructed samples can be generated using the CIIP pattern.
[0223] 4. In one example, the reconstructed samples can be generated by the SGPM pattern.
[0224] 5. In one example, the reconstructed samples can be generated by the IBC pattern.
[0225] 6. In one example, reconstructed samples can be generated using intra-frame template matching patterns.
[0226] 7. In one example, the reconstructed samples can be generated by an affine pattern.
[0227] 8. In one example, the reconstructed samples can be generated by the Merge pattern.
[0228] 9. In one example, the reconstructed samples can be generated using the AMVP pattern.
[0229] 10. In one example, the reconstructed samples can be generated by the GPM pattern.
[0230] 11. In one example, the reconstructed samples can be generated by the DMVR mode.
[0231] 12. In one example, the reconstructed samples can be generated by the BDOF pattern.
[0232] 13. In one example, the reconstructed samples can be generated by the MMVD model.
[0233] 14. In one example, the reconstructed samples can be generated using the MIP pattern.
[0234] 15. In one example, reconstructed samples can be generated by cross-component modes (such as CCLM / intra-frame CCCM / inter-frame CCCM).
[0235] 16. In one example, reconstructed samples can be generated using the sub-block TMVP pattern.
[0236] 17. In one example, the reconstructed samples can be generated by the TIMD pattern.
[0237] 18. In one example, the reconstructed samples can be generated using the DIMD pattern.
[0238] 19. In one example, reconstructed samples can be generated from a pattern based on template matching.
[0239] 20. In one example, reconstructed samples can be generated from patterns based on non-template matching.
[0240] 21. In one example, the reconstructed samples can be generated by any other codec mode.
[0241] c) In one example, the clipping method can be applied to the reference sample point.
[0242] 1. In one example, reference samples can be generated for intra-frame mode.
[0243] 2. In one example, reference samples can be generated for inter-frame mode.
[0244] 3. In one example, reference samples can be generated for the CIIP pattern.
[0245] 4. In one example, reference samples can be generated for the SGPM pattern.
[0246] 5. In one example, reference samples can be generated for the IBC mode.
[0247] 6. In one example, reference samples can be generated for an intra-frame template matching pattern.
[0248] 7. In one example, reference samples can be generated for an affine pattern.
[0249] 8. In one example, reference samples can be generated for the Merge pattern.
[0250] 9. In one example, reference samples can be generated for the AMVP pattern.
[0251] 10. In one example, reference samples can be generated for the GPM pattern.
[0252] 11. In one example, reference samples can be generated for DMVR mode.
[0253] 12. In one example, reference samples can be generated for the BDOF pattern.
[0254] 13. In one example, reference samples can be generated for the MMVD pattern.
[0255] 14. In one example, reference samples can be generated for the MIP pattern.
[0256] 15. In one example, reference samples can be generated for cross-component modes (such as CCLM / intra-frame CCCM / inter-frame CCCM).
[0257] 16. In one example, reference samples can be generated for sub-block TMVP patterns.
[0258] 17. In one example, reference samples can be generated for the TIMD pattern.
[0259] 18. In one example, reference samples can be generated for the DIMD pattern.
[0260] 19. In one example, reference samples can be generated for a pattern based on template matching.
[0261] 20. In one example, reference samples can be generated for patterns based on non-template matching.
[0262] 21. In one example, reference samples can be generated for any other codec mode.
[0263] d) In one example, the amplitude limiting method can be applied to residual samples.
[0264] 1. In one example, residual samples can be generated from intra-frame modes.
[0265] 2. In one example, residual samples can be generated from inter-frame patterns.
[0266] 3. In one example, residual samples can be generated using the CIIP pattern.
[0267] 4. In one example, residual samples can be generated by the SGPM model.
[0268] 5. In one example, residual samples can be generated by the IBC mode.
[0269] 6. In one example, residual samples can be generated by intra-frame template matching mode.
[0270] 7. In one example, residual samples can be generated by affine patterns.
[0271] 8. In one example, residual samples can be generated by the Merge pattern.
[0272] 9. In one example, residual samples can be generated using the AMVP pattern.
[0273] 10. In one example, residual samples can be generated by the GPM model.
[0274] 11. In one example, residual samples can be generated by the DMVR mode.
[0275] 12. In one example, residual samples can be generated from the BDOF pattern.
[0276] 13. In one example, residual samples can be generated by the MMVD model.
[0277] 14. In one example, residual samples can be generated by MIP mode.
[0278] 15. In one example, residual samples can be generated by cross-component modes (such as CCLM / intra-frame CCCM / inter-frame CCCM).
[0279] 16. In one example, residual samples can be generated by the sub-block TMVP pattern.
[0280] 17. In one example, residual samples can be generated by the TIMD pattern.
[0281] 18. In one example, residual samples can be generated using the DIMD pattern.
[0282] 19. In one example, residual samples can be generated from a pattern based on template matching.
[0283] 20. In one example, residual samples can be generated from patterns based on non-template matching.
[0284] 21. In one example, residual samples can be generated by any other encoding / decoding mode.
[0285] e) In one example, the clipping method can be applied to a loop filter.
[0286] 1. In one example, the clipping method can be applied to DBF.
[0287] 2. In one example, the clipping method can be applied to BF.
[0288] 3. In one example, the limiting method can be applied to SAO.
[0289] 4. In one example, the limiting method can be applied to CCSAO.
[0290] 5. In one example, the clipping method can be applied to ALF.
[0291] 6. In one example, the clipping method can be applied to CCALF.
[0292] 7. In one example, the clipping method can be applied within the LMCS domain.
[0293] 8. In one example, the clipping method can be applied outside the LMCS domain.
[0294] f) In one example, the clipping method can be applied to pre - processing.
[0295] g) In one example, the clipping method can be applied to post - processing.
[0296] h) In one example, the clipping method can be applied to RPR processing.
[0297] i) In one example, the clipping method can be applied to out - of - boundary samples.
[0298] 1. In one example, out - of - boundary samples can be generated by repetitive padding.
[0299] 2. In one example, out - of - boundary samples can be generated by mirror padding.
[0300] 3. In one example, out - of - boundary samples can be generated by extended padding.
[0301] 4. In one example, out - of - boundary samples can be generated by motion - compensation - based padding.
[0302] 5. In one example, out - of - boundary samples can be generated by interpolation - based padding.
[0303] 6. In one example, out - of - boundary samples can be generated by fusion - based padding.
[0304] 7. In one example, out - of - boundary samples can be generated by any other padding method.
[0305] j) In one example, the clipping method can be applied to any other video processing.
[0306] 2) In one example, the clipping method can be based on bit depth.
[0307] a. In one example, the bit depth can refer to different settings.
[0308] a) In one example, the bit depth can refer to the input video bit depth.
[0309] b) In one example, the bit depth can refer to the output video bit depth.
[0310] c) In one example, the bit depth can refer to the intermediate / internal bit depth.
[0311] b. In one example, the minimum value used in clipping can refer to the bit depth.
[0312] a) In one example, the minimum value can be set to 1 << N (e.g., N = 0).
[0313] c. In one example, the maximum value used in clipping may refer to the bit depth.
[0314] a) In one example, the maximum value can be set to 1 << M (e.g., M = 10).
[0315] 3) In one example, the adaptive clipping method can be based on local or non - local sample value distribution information.
[0316] a. In one example, the adaptive clipping method can be applied to different regions.
[0317] a) In one example, the proposed method can be applied to the CU.
[0318] b) In one example, the proposed method can be applied to the PU.
[0319] c) In one example, the proposed method can be applied to the TU.
[0320] d) In one example, the proposed method can be applied to the CTU.
[0321] e) In one example, the proposed method can be applied to the CTU row.
[0322] f) In one example, the proposed method can be applied to the slice.
[0323] g) In one example, the proposed method can be applied to the picture.
[0324] h) In one example, the proposed method can be applied to the image.
[0325] i) In one example, the proposed method can be applied to any other codec unit / region / block.
[0326] b. In one example, the adaptive clipping method can be conditionally applied to regions.
[0327] a) Whether to apply the clipping method and / or how to apply the clipping method can depend on conditions.
[0328] b) In one example, the condition can be the type of input samples. (Such as predicted samples / reconstructed samples / reference samples.) c) In one example, the condition can be the color format and / or color component.
[0329] d) In one example, the condition can be the region / block size.
[0330] 1. In one example, the clipping method can be applied when the width / height of the current block is greater than a threshold.
[0331] 2. In one example, the clipping method can be applied when the width / height of the current block is less than a threshold.
[0332] 3. In one example, the amplitude limiting method can be applied when the total number of samples in the current block exceeds a threshold.
[0333] 4. In one example, the amplitude limiting method can be applied when the total number of samples in the current block is less than a threshold.
[0334] e) In one example, the condition could be the number of samples in the current block.
[0335] 1. In one example, the amplitude limiting method can be applied when the number of samples in the current block exceeds a threshold.
[0336] 2. In one example, the amplitude limiting method can be applied when the number of samples in the current block is less than a threshold.
[0337] f) In one example, the condition could be image size / strip size / piece size.
[0338] 1. In one example, the banding method can be applied when the width / height of the current image / strip / piece is greater than a threshold.
[0339] 2. In one example, the clipping method can be applied when the width / height of the current image / strip / piece is less than a threshold.
[0340] 3. In one example, the clipping method can be applied when the total number of samples in the current image / strip / piece exceeds a threshold.
[0341] 4. In one example, the clipping method can be applied when the total number of samples in the current image / strip / piece is less than a threshold.
[0342] g) In one example, the condition could be related to texture intensity.
[0343] 1. In one example, the amplitude limiting method can be applied when the variance of the sample points is greater than a threshold.
[0344] 2. In one example, the amplitude limiting method can be applied when the variance of the sample points is less than a threshold.
[0345] 3. In one example, the amplitude limiting method can be applied when the gradient of a sample point is greater than a threshold.
[0346] 4. In one example, the amplitude limiting method can be applied when the gradient of a sample point is less than a threshold.
[0347] 5. In one example, when the number of valid bands for a sample exceeds a threshold, the amplitude limiting method can be applied.
[0348] 6. In one example, when the number of valid bands for a sample is less than a threshold, the amplitude limiting method can be applied.
[0349] 7. In one example, the clipping method can be applied when other texture-related information of the sample points is greater than a threshold.
[0350] 8. In one example, the clipping method can be applied when other texture-related information of the sample points is less than a threshold.
[0351] h) In one example, the condition can be template information.
[0352] 1. In one example, the clipping method can be applied when the template cost of the current block is greater than a threshold.
[0353] 2. In one example, the clipping method can be applied when the template cost of the current block is less than a threshold.
[0354] i) In one example, the condition can be the value of the sample point to be clipped.
[0355] j) In one example, the condition can be a sample that is adjacent to the sample to be clipped.
[0356] k) In one example, the condition can be the encoding / decoding mode of the block containing the samples to be clipped.
[0357] l) In one example, the condition could be the motion information of a block containing the sample points to be calibrated.
[0358] m) In one example, the above conditions can be used independently.
[0359] n) In one example, the above conditions can be used in combination.
[0360] c. In one example, the first syntax element (SE) can be signaled to indicate whether the proposed method is applied.
[0361] a) In one example, SE can be a flag.
[0362] b) In one example, the SE can be encoded and decoded using at least one context model.
[0363] c) In one example, the SE can be bypassed for encoding and decoding.
[0364] d) In one example, the SE can be conditionally encoded or decoded.
[0365] 1. In one example, SE can be encoded and decoded for one or more specific region sizes.
[0366] 2. In one example, the SE can be encoded and decoded for one or more specific region shapes.
[0367] 3. In one example, SE can be encoded and decoded for one or more specific color components.
[0368] e) In one example, the SE can be transmitted via signal for PB / TB / CB / PU / TU / CU / VPDU / CTU / CTU lines / strips / pieces / sub-pictures / images.
[0369] d. In one example, the minimum / maximum value used in the limiting method can be transmitted via signal.
[0370] a) In one example, the minimum / maximum value used in the clipping method can be transmitted via signaling through bypass encoding / decoding.
[0371] b) In one example, the minimum / maximum values used in the clipping method can be transmitted via signaling through context model encoding / decoding.
[0372] c) In one example, the minimum / maximum values used in the limiting method can be predicted and transmitted via signaling.
[0373] d) In one example, the minimum / maximum value used in the limiting method can be transmitted via signaling through index-based encoding and decoding.
[0374] 1. In one example, the range based on bit depth can be divided into N bands (e.g., N = 16).
[0375] 2. In one example, the indexed minimum / maximum values can be transmitted via signaling through bypass encoding / decoding.
[0376] 3. In one example, the indexed minimum / maximum value can be transmitted via signaling using context model encoding / decoding.
[0377] e) In one example, the minimum / maximum value used in the clipping method can be transmitted via signal for PB / TB / CB / PU / TU / CU / VPDU / CTU / CTU lines / strips / pieces / sub-pictures / images.
[0378] 4) In one example, the amplitude limiting method can be applied to motion-compensated boundary filling.
[0379] a. In one example, out-of-bounds samples generated by motion-compensated padding can be capped to the bit depth of the current strip / piece / sub-image / picture / region.
[0380] b. In one example, out-of-bounds samples generated by motion-compensated padding can be capped to the bit depth of a reference strip / piece / sub-image / picture / region.
[0381] c. In one example, out-of-bounds samples generated by motion-compensated padding can be bounded to the minimum / maximum value transmitted by the signal in the current strip / piece / sub-image / picture / region.
[0382] d. In one example, the out-of-bounds samples generated by motion-compensated padding can be bounded to the minimum / maximum values transmitted through the signal of the reference strip / piece / sub-image / picture / region.
[0383] e. In one example, out-of-bounds samples generated by motion-compensated padding may not be clipped.
[0384] 5) It proposes applying the clipping method to different encoding / decoding regions.
[0385] a. In one example, the proposed method can be applied to CU.
[0386] b. In one example, the proposed method can be applied to PU.
[0387] c. In one example, the proposed method can be applied to TU.
[0388] d. In one example, the proposed method can be applied to CTU.
[0389] e. In one example, the proposed method can be applied to CTU lines.
[0390] f. In one example, the proposed method can be applied to stripes.
[0391] g. In one example, the proposed method can be applied to a slice.
[0392] h. In one example, the proposed method can be applied to an image.
[0393] i. In one example, the proposed method can be applied to any other codec unit / region / block.
[0394] 6) In one example, whether and / or how to apply the clipping method may depend on the color format or color components.
[0395] 7) In one example, the disclosed methods may be used in post-processing and / or pre-processing.
[0396] 8) In one example, the above methods can be used in combination.
[0397] 9) Alternatively, the above methods can be used alone.
[0398] 10) In one example, the proposed / described model parameter inheritance method can be applied to any loop filtering tool, prediction tool, preprocessing or postprocessing filtering method in video encoding and decoding.
[0399] 11) In the above examples, a video unit can refer to a sequence / picture / subpicture / strip / piece / code-decode tree unit (CTU) / CTU line / CTU group / code-decode unit (CU) / prediction unit (PU) / transform unit (TU) / code-decode tree block (CTB) / code-decode block (CB) / prediction block (PB) / transform block (TB) / any other region containing more than one luminance or chrominance sample / pixel.
[0400] 12) Whether and / or how the methods disclosed above can be applied to transmit signals in a bitstream.
[0401] a. In one example, they can be transmitted via signaling at the sequence level / picture group level / picture level / strip level / piece group level, such as in the sequence header / picture header / SPS / VPS / DPS / DCI / PPS / APS / strip header / piece group header.
[0402] b. In one example, they can be transmitted via signal at PB / TB / CB / PU / TU / CU / VPDU / CTU / CTU lines / strips / pieces / sub-pictures / other types of areas containing more than one sample point or pixel.
[0403] 13) Whether to apply the methods disclosed above and / or how to apply the methods disclosed above may depend on the encoded / decoded information, such as block size, color format, single-tree splitting / double-tree splitting, color components, stripe / picture type.
[0404] Further details of embodiments of this disclosure, relating to adaptive clipping of sample values in video encoding and decoding, will be described below. The embodiments of this disclosure should be considered as examples for explaining general concepts and should not be interpreted in a narrow sense. Furthermore, these embodiments may be applied individually or combined in any way.
[0405] As used herein, the term "block" can refer to color components, sub-pictures, pictures, stripes, slices, codec tree units (CTUs), CTU rows, CTU groups, codec units (CUs), prediction units (PUs), transform units (TUs), codec tree blocks (CTBs), codec blocks (CBs), prediction blocks (PBs), transform blocks (TBs), sub-blocks of video blocks, sub-regions within video blocks, and video processing units comprising multiple samples / pixels, etc. Blocks can be rectangular or non-rectangular.
[0406] Figure 13 A flowchart of a method 1300 for video processing according to some embodiments of the present disclosure is shown. Method 1300 can be implemented during the conversion between a current video block and a video bitstream. Figure 13 As shown, method 1300 begins at 1302, wherein the value of the first point associated with the current video block is clipped using a clipping operation. At least one parameter for the clipping operation is indicated in the bitstream, and the at least one parameter includes an upper limit value and / or a lower limit value.
[0407] For example, a limiting operation can be a function used to restrict input values to a range defined by an upper limit and / or a lower limit. For instance, an example limiting operation could be defined as follows: Clip(x, y, z) =
[0408] Where x represents the lower limit value, y represents the upper limit value, and z represents the input value. It should be understood that the possible implementations of the limiting operation described herein are illustrative only and should not be construed as limiting this disclosure in any way.
[0409] In some embodiments, the first sample point may be a predicted sample point, a reconstructed sample point, a reference sample point, or a residual sample point. Alternatively, the first sample point may be generated based on an intra-frame mode, an inter-frame mode, an intra-inter-frame joint prediction (CIIP) mode, a spatial geometric partitioning (SGPM) mode, an intra-block copy (IBC) mode, an intra-template matching mode, an affine mode, a merge mode, an advanced motion vector prediction (AMVP) mode, a geometric partitioning (GPM) mode, a decoder-side motion vector refinement (DMVR) mode, a bidirectional optical flow (BDOF) mode, a merge mode with motion vector difference (MMVD) mode, a matrix-weighted intra-frame prediction (MIP) mode, a cross-component mode, a sub-block-based temporal motion vector prediction (SbTMVP) mode, a template-based intra-frame mode derivation (TIMD) mode, a decoder-side intra-frame mode derivation (DIMD) mode, a template-matching mode, a non-template-matching mode, or any other suitable encoding / decoding mode.
[0410] In some embodiments, the method can be applied to a loop filter process, a preprocessing process, a postprocessing process, or a reference image resampling (RPR) process. For example, the loop filter process may include a deblocking filter (DBF), a bilateral filter (BF), sample adaptive compensation (SAO), cross-component SAO (CCSAO), an adaptive loop filter (ALF), cross-component ALF (CCALF), or a luminance mapping with chroma scaling (LMCS).
[0411] In some embodiments, the first sample point may be outside the boundary of the image containing the current video block. In one example embodiment, the value of the first sample point may be generated based on mirror padding. In this case, the value of the first sample point may be set equal to the value of a sample point mirrored by the boundary. In another example embodiment, the value of the first sample point may be generated based on motion-compensated padding. In this case, a reference sample point for the first sample point may be determined from a reference image of the current image based on motion information of blocks adjacent to the first sample point. Alternatively, the value of the first sample point may be determined based on the value of the reference sample point. It should be noted that the value of the first sample point may also be generated based on any other suitable padding scheme, such as repeated padding, interpolation-based padding, fusion-based padding, etc.
[0412] At 1304, the conversion is performed based on the clipped value. In some embodiments, the conversion may include encoding the current video block into a bitstream. Alternatively or additionally, the conversion may include decoding the current video block from the bitstream.
[0413] In light of the above, the upper and / or lower limits for clipping operations are indicated in the bitstream. Compared to traditional solutions with fixed upper and lower limits, the proposed method advantageously allows for greater flexibility in these limits, enabling adaptive clipping for sample values. In this way, encoding and decoding quality can be improved.
[0414] In some embodiments, at least one parameter may depend on a region of the video associated with the first sample point. For example, the region may include the first sample point, at least one sample point adjacent to the first sample point, and / or at least one sample point not adjacent to the first sample point. Alternatively, the region may be a codec unit (CU), prediction unit (PU), transform unit (TU), codec tree unit (CTU), CTU row, strip, slice, picture, etc.
[0415] In some embodiments, at least one parameter may be determined based on the values of sample points in the region, for example, the distribution of sample point values. For example, but not as a limitation, an upper limit value may be determined based on the maximum value of sample points in the region. Additionally or alternatively, a lower limit value may be determined based on the minimum value of sample points in the region.
[0416] In some embodiments, on the encoder side, the upper limit value can be set to be equal to the maximum value of the samples in the current stripe including the current sample, and the lower limit value can be set to be equal to the minimum value of the samples in the current stripe. The upper limit value and the lower limit value are signaled in the bitstream. On the decoder side, the upper limit value and the lower limit value are parsed from the bitstream and are used to clip the value of the current sample.
[0417] In this case, the parameter(s) for the clipping operation are determined by considering the local sample value distribution (corresponding to the case where the region is around the first sample) or the non - local sample value distribution (corresponding to the case where the region is far from the first sample). In this way, the parameter for the clipping operation is adapted to the first sample, which improves the quality of the result of the clipping operation and thus improves the coding and decoding quality.
[0418] In some additional or alternative embodiments, at least one parameter can depend on the bit depth associated with the transformation. For example, the bit depth can refer to the bit depth of the input for the transformation, the bit depth of the output for the transformation, or the bit depth of an intermediate process of the transformation, such as the bit depth used for a particular coding or decoding tool, etc. By way of example and not limitation, the upper limit value can be set to be equal to 1<<M, where M represents the bit depth.
[0419] In some embodiments, at least one of the following can depend on a condition: whether the method is applied, or how the method is applied. In one exemplary embodiment, the condition can be related to the size of the current video block. For example, if the width or height of the current video block is greater than a threshold, the method can be applied. Alternatively, if the width or height of the current video block is less than a threshold, the method can be applied.
[0420] In another exemplary embodiment, the condition can be related to the number of samples of the current video block. For example, if the number of samples of the current video block is greater than a threshold, the method can be applied. Alternatively, if the number of samples of the current video block is less than a threshold, the method can be applied.
[0421] In yet another exemplary embodiment, the condition can be related to the size of the current picture including the current video block. For example, if the width or height of the current picture is greater than a threshold, the method can be applied. Alternatively, if the width or height of the current picture is less than a threshold, the method can be applied. Additionally, if the total number of samples of the current picture is greater than a threshold, the method can be applied. Alternatively, if the total number of samples of the current picture is less than a threshold, the method can be applied.
[0422] In another example embodiment, the condition may be related to the size of the current strip, which includes the current video block. For example, the method may be applied if the width or height of the current strip is greater than a threshold. Alternatively, the method may be applied if the width or height of the current strip is less than a threshold. Additionally, the method may be applied if the total number of samples in the current strip is greater than a threshold. Alternatively, the method may be applied if the total number of samples in the current strip is less than a threshold.
[0423] In another example embodiment, the condition may be related to the size of the current slice, which includes the current video block. For example, the method may be applied if the width or height of the current slice is greater than a threshold. Alternatively, the method may be applied if the width or height of the current slice is less than a threshold. Additionally, the method may be applied if the total number of samples in the current slice is greater than a threshold. Alternatively, the method may be applied if the total number of samples in the current slice is less than a threshold.
[0424] In yet another example embodiment, the condition may be related to information about the texture intensity of the current video patch. For example, the method may be applied if the metric of the texture intensity of the current video patch is greater than a threshold. Alternatively, the method may be applied if the metric of the texture intensity of the current video patch is less than a threshold. For example, the metric of texture intensity may include the variance of the sample points, the gradient of the sample points, the number of effective bands of the sample points, etc.
[0425] In yet another example embodiment, the condition may relate to information about the template for the current video block. For example, the information may include the template cost. In this case, the method may be applied if the template cost is greater than a threshold. Alternatively, the method may be applied if the template cost is less than the threshold.
[0426] It should be understood that the possible implementations of the conditions described above are merely illustrative and should not be construed as limiting this disclosure in any way. For example, the conditions may also be associated with any other suitable information, such as the type of the first sample point, the color format of the current video block, the color components of the first sample point, the value of the first sample point, one or more samples adjacent to the first sample point, the encoding / decoding mode for the current video block, the motion information of the current video block, etc.
[0427] In some embodiments, the bitstream may include syntax elements indicating whether the method is applied. For example, syntax elements may be flags, etc. Additionally, syntax elements may be encoded / decoded using at least one context model or be bypassed. Furthermore, syntax elements may be encoded / decoded if certain conditions are met. For example, and not limitingly, conditions may include: the current video block has a predetermined size, or the current video block has a predetermined shape, or the current video block has predetermined color components. In some embodiments, syntax elements may be transmitted via signaling for one of the following: prediction block (PB), transform block (TB), codec block (CB), prediction unit (PU), transform unit (TU), codec unit (CU), virtual pipeline data unit (VPDU), CTU, CTU line, strip, slice, sub-picture, or picture.
[0428] In some embodiments, at least one parameter may be encoded using bypass encoding / decoding or context model encoding / decoding. Additionally or alternatively, at least one parameter may be transmitted via signaling in a predictive manner. In one example embodiment, at least one parameter may be indicated using at least one index. For example, a range determined based on bit depth may be divided into multiple bands, and a first parameter of the at least one parameter may be indicated using an index of one of the multiple bands corresponding to the first parameter. Furthermore, the index may be encoded using bypass encoding / decoding or context model encoding / decoding. In some embodiments, at least one parameter may be transmitted via signaling for one of the following: PB, TB, CB, PU, TU, CU, VPDU, CTU, CTU line, strip, slice, sub-picture, or picture.
[0429] In some embodiments, the value of the first sample point can be generated based on motion-compensated padding. In this case, at least one parameter for the clipping operation can depend on one of the following: the bit depth of the region including the first sample point, the bit depth of the region including a reference sample point for the first sample point, the value of the sample point in the region including the first sample point, or the value of the sample point in the region including a reference sample point for the first sample point. For example, the region can be a strip, slice, sub-picture, picture, etc. In some alternative embodiments, the values of samples outside the boundaries of the picture in the video and generated based on motion-compensated padding may not be clipped.
[0430] In some embodiments, the method may be applied to one of the following: a codec unit (CU), a prediction unit (PU), a transform unit (TU), a codec tree unit (CTU), a CTU line, a strip, a slice, or a picture. In some embodiments, the current video block may be one of the following: a sequence, a picture, a sub-picture, a strip, a slice, a codec tree unit (CTU), a CTU line, a CTU group, a codec unit (CU), a prediction unit (PU), a transform unit (TU), a codec tree block (CTB), a codec block (CB), a prediction block (PB), or a transform block (TB).
[0431] In some embodiments, first information regarding at least one of the following may be indicated in the bitstream: whether the method is applied, or how the method is applied. In one example embodiment, the first information may be indicated at one of the following: block level, sequence level, picture group level, picture level, stripe level, or slice group level. Additionally or alternatively, the first information may be indicated at one of the following: sequence header, picture header, sequence parameter set (SPS), video parameter set (VPS), dependency parameter set (DPS), decoding capability information (DCI), picture parameter set (PPS), adaptive parameter set (APS), stripe header, or slice group header. Additionally or alternatively, the first information may be indicated at one of the following: PB, TB, CB, PU, TU, CU, VPDU, CTU, CTU line, stripe, slice, or sub-picture.
[0432] In some embodiments, the first information may depend on the encoded / decoded information of the current video block. For example, the encoded / decoded information may include block size, color format, single-tree segmentation, dual-tree segmentation, color components, stripe type, image type, etc.
[0433] In view of the above, the solutions according to some embodiments of this disclosure can advantageously improve encoding and decoding efficiency and encoding and decoding quality.
[0434] According to another embodiment of this disclosure, a non-transitory computer-readable recording medium is provided. This non-transitory computer-readable recording medium stores a bitstream of video generated by a method performed by an apparatus for video processing. The method includes: limiting the value of a first point associated with a current video block of the video by using a limiting operation, wherein at least one parameter for the limiting operation is indicated in the bitstream, and the at least one parameter includes at least one of an upper limit value or a lower limit value; and generating the bitstream based on the limited value.
[0435] According to further embodiments of this disclosure, a method for storing a bitstream of video is provided. The method includes: limiting the value of a first point associated with a current video block of the video using a limiting operation, wherein at least one parameter for the limiting operation is indicated in the bitstream, and the at least one parameter includes at least one of an upper limit value or a lower limit value; generating the bitstream based on the limited value; and storing the bitstream in a non-transitory computer-readable recording medium.
[0436] The embodiments of this disclosure can be described according to the following entries, and their features can be combined in any reasonable manner.
[0437] Item 1. A method for video processing, comprising: a conversion between a current video block of a video and a bitstream of the video, limiting the value of a first point associated with the current video block by using a limiting operation, wherein at least one parameter for the limiting operation is indicated in the bitstream, and the at least one parameter includes at least one of an upper limit value or a lower limit value; and performing the conversion based on the limited value.
[0438] Item 2. The method according to Item 1, wherein the at least one parameter depends on the region of the video associated with the first sample point.
[0439] Item 3. The method according to Item 2, wherein the region includes at least one of the following: the first sample point, at least one sample point adjacent to the first sample point, or at least one sample point not adjacent to the first sample point.
[0440] Item 4. The method according to any one of items 2 to 3, wherein the at least one parameter is determined based on the value of a sample point in the region.
[0441] Item 5. The method according to Item 4, wherein the upper limit value is determined based on the maximum value of the sample points in the region, or the lower limit value is determined based on the minimum value of the sample points in the region.
[0442] Item 6. The method according to any one of items 2 to 5, wherein said region is one of the following: a codec unit (CU), a prediction unit (PU), a transform unit (TU), a codec tree unit (CTU), a CTU row, a strip, a slice, or a picture.
[0443] Item 7. The method according to any one of Items 1 to 6, wherein the first sample is one of the following: a predicted sample, a reconstructed sample, a reference sample, or a residual sample.
[0444] Item 8. The method according to Item 7, wherein the first point is generated based on one of the following: intra-frame mode, inter-frame mode, intra-inter-frame joint prediction (CIIP) mode, spatial geometry partitioning mode (SGPM) mode, intra-block copy (IBC) mode, intra-template matching mode, affine mode, merge mode, advanced motion vector prediction (AMVP) mode, geometry partitioning mode (GPM) mode, decoder-side motion vector refinement (DMVR) mode, bidirectional optical flow (BDOF) mode, merge mode with motion vector difference (MMVD) mode, matrix-weighted intra-frame prediction (MIP) mode, cross-component mode, sub-block-based temporal motion vector prediction (SbTMVP) mode, template-based intra-frame mode derivation (TIMD) mode, decoder-side intra-frame mode derivation (DIMD) mode, template-matching mode, or non-template-matching mode.
[0445] Item 9. The method according to any one of Items 1 to 6, wherein the method is applied to one of the following: a loop filter process, a preprocessing process, a postprocessing process, or a reference image resampling (RPR) process.
[0446] Item 10. The method according to Item 9, wherein the loop filter process includes one of the following: deblocking filter (DBF), bilateral filter (BF), sample adaptive compensation (SAO), cross-component SAO (CCSAO), adaptive loop filter (ALF), cross-component ALF (CCALF), or luminance mapping with chroma scaling (LMCS).
[0447] Item 11. The method according to any one of items 1 to 10, wherein the first point is outside the boundary of the image in the video.
[0448] Item 12. According to the method of Item 11, the value of the first point is generated based on one of the following: repeated padding, mirror padding, extended padding, motion-compensated padding, interpolation-based padding, or fusion-based padding.
[0449] Item 13. The method according to any one of items 1 to 12, wherein the at least one parameter depends on the bit depth associated with the conversion.
[0450] Item 14. The method according to Item 13, wherein the bit depth is one of the following: the bit depth for the input of the transformation, the bit depth for the output of the transformation, or the bit depth for an intermediate process of the transformation.
[0451] Item 15. The method according to any one of items 1 to 14, wherein at least one of the following depends on conditions: whether the method is applied, or how the method is applied.
[0452] Item 16. The method according to Item 15, wherein the condition is related to at least one of the following: the type of the first sample, the color format of the current video block, the color component of the first sample, the value of the first sample, one or more samples adjacent to the first sample, the encoding / decoding mode for the current video block, or the motion information of the current video block.
[0453] Item 17. The method according to any one of items 15 to 16, wherein the condition is related to the size of the current video block.
[0454] Item 18. The method according to Item 17, wherein the method is applied if the width or height of the current video block is greater than a threshold, or wherein the method is applied if the width or height of the current video block is less than a threshold.
[0455] Item 19. The method according to any one of items 15 to 18, wherein the condition is related to the number of samples of the current video block.
[0456] Item 20. The method according to Item 19, wherein the method is applied if the number of samples of the current video block is greater than a threshold, or wherein the method is applied if the number of samples of the current video block is less than a threshold.
[0457] Item 21. The method according to any one of items 15 to 20, wherein the condition relates to one of the following: the size of the current picture including the current video block, the size of the current strip including the current video block, or the size of the current slice including the current video block.
[0458] Item 22. According to the method described in entry 21, the method is applied if the width or height of the current image is greater than a threshold, or if the width or height of the current image is less than a threshold, or if the total number of samples in the current image is greater than a threshold, or if the total number of samples in the current image is less than a threshold, or if the width or height of the current strip is greater than a threshold, or if the width or height of the current strip is less than a threshold, or if the total number of samples in the current strip is greater than a threshold, or if the total number of samples in the current strip is less than a threshold, or if the width or height of the current piece is greater than a threshold, or if the width or height of the current piece is less than a threshold, or if the total number of samples in the current piece is greater than a threshold, or if the total number of samples in the current piece is less than a threshold, or if the width or height of the current piece is greater than a threshold, or if the total number of samples in the current piece is less than a threshold, or if the total number of samples in the current piece is less than a threshold, or if the width or height of the current piece is greater than a threshold, or if the width or height of the current piece is less than a threshold, or if the total number of samples in the current piece is less than a threshold, or if the total number of samples in the current piece is less than a threshold, or if the current piece is greater ... current piece is less than a threshold, or if the current piece is greater than a threshold, or if the current piece is less than a threshold, or if the current piece is greater than a threshold, or if the current piece is less than a threshold, or if the current piece is greater than a threshold, or if the current piece is
[0459] Item 23. The method according to any one of items 15 to 22, wherein the condition is related to information about the texture intensity of the current video block.
[0460] Item 24. The method according to Item 23, wherein the method is applied if the metric of the texture intensity of the current video block is greater than a threshold, or wherein the method is applied if the metric of the texture intensity of the current video block is less than a threshold.
[0461] Item 25. The method according to Item 24, wherein the metric includes at least one of the following: the variance of the sample points, the gradient of the sample points, or the number of effective bands of the sample points.
[0462] Item 26. The method according to any one of items 15 to 25, wherein the condition relates to information about a template for the current video block.
[0463] Item 27. The method according to Item 26, wherein the information includes a template cost, and the method is applied if the template cost is greater than a threshold, or if the template cost is less than a threshold.
[0464] Item 28. The method according to any one of items 1 to 27, wherein the bitstream includes a syntax element indicating whether the method is applied.
[0465] Item 29. The method according to Item 28, wherein the syntax element includes a sign.
[0466] Item 30. The method according to any one of items 28 to 29, wherein the syntax element is encoded or decoded using at least one context model or is bypassed.
[0467] Item 31. The method according to any one of items 28 to 30, wherein the syntax element is encoded or decoded if the condition is satisfied.
[0468] Item 32. The method according to Item 31, wherein the condition includes one of the following: the current video block has a predetermined size, or the current video block has a predetermined shape, or the current video block has a predetermined color component.
[0469] Item 33. The method according to any one of items 28 to 32, wherein the syntax element is transmitted via a signal for one of the following: prediction block (PB), transform block (TB), codec block (CB), prediction unit (PU), transform unit (TU), codec unit (CU), virtual pipelined data unit (VPDU), CTU, CTU line, strip, slice, sub-picture, or picture.
[0470] Item 34. The method according to any one of items 1 to 33, wherein the at least one parameter is encoded or decoded using bypass encoding / decoding or context model encoding / decoding.
[0471] Item 35. The method according to any one of items 1 to 34, wherein the at least one parameter is transmitted via a signal in a predictive manner.
[0472] Item 36. The method according to any one of items 1 to 35, wherein the at least one parameter is indicated using at least one index.
[0473] Item 37. The method according to Item 36, wherein the range determined based on bit depth is divided into multiple bands, and the first parameter of the at least one parameter is indicated using an index of one of the multiple bands corresponding to the first parameter.
[0474] Item 38. The method according to any one of items 36 to 37, wherein the index is encoded using bypass encoding / decoding or context model encoding / decoding.
[0475] Item 39. The method according to any one of items 1 to 38, wherein the at least one parameter is transmitted via a signal for one of the following: PB, TB, CB, PU, TU, CU, VPDU, CTU, CTU line, strip, sheet, sub-picture or image.
[0476] Item 40. The method according to Item 11, wherein the value of the first point is generated based on motion-compensated padding.
[0477] Item 41. The method according to Item 40, wherein the at least one parameter depends on one of the following: the bit depth of the region including the first sample, the bit depth of the region including a reference sample for the first sample, the value of the sample in the region including the first sample, or the value of the sample in the region including a reference sample for the first sample.
[0478] Item 42. The method according to Item 41, wherein the region is a strip, slice, sub-image, or picture.
[0479] Item 43. The method according to any one of items 1 to 40, wherein the values of samples generated outside the boundaries of the images in the video and according to motion-compensated padding are not clipped.
[0480] Item 44. The method according to any one of items 1 to 43, wherein the method is permitted to be applied to one of the following: a codec unit (CU), a prediction unit (PU), a transform unit (TU), a codec tree unit (CTU), a CTU row, a strip, a slice, or a picture.
[0481] Item 45. The method according to any one of items 1 to 44, wherein the current video block is one of the following: sequence, picture, sub-picture, strip, slice, codec tree unit (CTU), CTU line, CTU group, codec unit (CU), prediction unit (PU), transform unit (TU), codec tree block (CTB), codec block (CB), prediction block (PB), or transform block (TB).
[0482] Item 46. The method according to any one of items 1 to 45, wherein first information regarding at least one of the following is indicated in the bitstream: whether the method is applied, or how the method is applied.
[0483] Item 47. The method according to Item 46, wherein the first information is indicated at one of the following: block level, sequence level, picture group level, picture level, strip level, or slice group level.
[0484] Item 48. The method according to Item 46, wherein the first information is indicated in one of the following: sequence header, picture header, sequence parameter set (SPS), video parameter set (VPS), dependency parameter set (DPS), decoding capability information (DCI), picture parameter set (PPS), adaptive parameter set (APS), strip header, or slice header.
[0485] Item 49. The method according to Item 46, wherein the first information is indicated in one of the following: PB, TB, CB, PU, TU, CU, VPDU, CTU, CTU line, strip, slice, or sub-picture.
[0486] Item 50. The method according to any one of items 46 to 49, wherein the first information depends on the encoded / decoded information of the current video block.
[0487] Item 51. The method according to Item 50, wherein the encoded / decoded information includes at least one of the following: block size, color format, single-tree segmentation, dual-tree segmentation, color components, stripe type, or image type.
[0488] Item 52. The method according to any one of items 1 to 51, wherein the conversion includes encoding the current video block into the bitstream.
[0489] Item 53. The method according to any one of items 1 to 51, wherein the conversion includes decoding the current video block from the bitstream.
[0490] Item 54. An apparatus for video processing, comprising a processor and a nontransitory memory having instructions thereon, wherein the instructions, when executed by the processor, cause the processor to perform a method according to any one of items 1 to 53.
[0491] Item 55. A non-transitory computer-readable storage medium storing instructions that cause a processor to perform the method according to any one of items 1 to 53.
[0492] Item 56. A non-transitory computer-readable recording medium storing a bitstream of video generated by a method performed by means of an apparatus for video processing, wherein the method includes: limiting the value of a first point associated with a current video block of the video by using a limiting operation, wherein at least one parameter for the limiting operation is indicated in the bitstream, and the at least one parameter includes at least one of an upper limit value or a lower limit value; and generating the bitstream based on the limited value.
[0493] Item 57. A method for storing a bitstream of video, comprising: limiting the value of a first point associated with a current video block of the video by using a limiting operation, wherein at least one parameter for the limiting operation is indicated in the bitstream, and the at least one parameter includes at least one of an upper limit value or a lower limit value; generating the bitstream based on the limited value; and storing the bitstream in a non-transitory computer-readable recording medium.
[0494] Example device Figure 14 A block diagram of a computing device 1400 in which various embodiments of the present disclosure may be implemented is shown. The computing device 1400 may be implemented as a source device 110 (or video encoder 114 or 200) or a destination device 120 (or video decoder 124 or 300), or may be included in a source device 110 (or video encoder 114 or 200) or a destination device 120 (or video decoder 124 or 300).
[0495] It should be understood that, Figure 14 The computing device 1400 shown is for illustrative purposes only and is not intended to imply any limitation on the functionality and scope of the embodiments of this disclosure.
[0496] like Figure 14 As shown, computing device 1400 includes general-purpose computing device 1400. Computing device 1400 may include at least one or more processors or processing units 1410, memory 1420, storage unit 1430, one or more communication units 1440, one or more input devices 1450, and one or more output devices 1460.
[0497] In some embodiments, the computing device 1400 can be implemented as any user terminal or server terminal with computing capabilities. The server terminal can be a server, a large computing device, etc., provided by a service provider. The user terminal can be, for example, any type of mobile terminal, fixed terminal, or portable terminal, including mobile phones, stations, units, devices, multimedia computers, multimedia tablet computers, internet nodes, communicators, desktop computers, laptop computers, notebook computers, netbook computers, tablet computers, personal communication system (PCS) devices, personal navigation devices, personal digital assistants (PDAs), audio / video players, digital cameras / camcorders, positioning devices, television receivers, radio receivers, e-book devices, gaming devices, or any combination thereof, including accessories and peripherals of these devices, or any combination thereof. It is conceivable that the computing device 1400 can support any type of interface to the user (such as "wearable" circuitry devices, etc.).
[0498] Processing unit 1410 can be a physical processor or a virtual processor, and can perform various processes based on programs stored in memory 1420. In a multiprocessor system, multiple processing units execute computer-executable instructions in parallel to improve the parallel processing capabilities of computing device 1400. Processing unit 1410 may also be referred to as a central processing unit (CPU), microprocessor, controller, or microcontroller.
[0499] Computing device 1400 typically includes various computer storage media. Such media can be any media accessible by computing device 1400, including but not limited to volatile and non-volatile media, or removable and non-removable media. Memory 1420 can be volatile memory (e.g., registers, cache, random access memory (RAM)), non-volatile memory (such as read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), or flash memory) or any combination thereof. Storage cell 1430 can be any removable or non-removable media and may include machine-readable media, such as memory, flash drives, disks, or other media that can be used to store information and / or data and can be accessed within computing device 1400.
[0500] The computing device 1400 may also include additional removable / non-removable storage media, volatile / non-volatile storage media. Although in Figure 14 Not shown, but a disk drive for reading from and / or writing to a removable non-volatile disk, and an optical disc drive for reading from and / or writing to a removable non-volatile optical disc may be provided. In this case, each drive may be connected to a bus (not shown) via one or more data media interfaces.
[0501] Communication unit 1440 communicates with another computing device via a communication medium. Additionally, the functionality of components in computing device 1400 can be implemented by a single computing cluster or multiple computing machines that can communicate via communication connections. Therefore, computing device 1400 can operate in a networked environment using logical connections to one or more other servers, networked personal computers (PCs), or other general-purpose network nodes.
[0502] Input device 1450 can be one or more of various input devices, such as a mouse, keyboard, trackball, voice input device, etc. Output device 1460 can be one or more of various output devices, such as a monitor, speaker, printer, etc. With the aid of communication unit 1440, computing device 1400 can also communicate with one or more external devices (not shown), such as storage devices and display devices. Computing device 1400 can also communicate with one or more devices that enable a user to interact with computing device 1400, or, if needed, with any device that enables computing device 1400 to communicate with one or more other computing devices (e.g., network card, modem, etc.). This communication can be performed via an input / output (I / O) interface (not shown).
[0503] In some embodiments, some or all of the components of computing device 1400 may be arranged in a cloud computing architecture, rather than integrated into a single device. In a cloud computing architecture, components may be remotely provided and work together to achieve the functionality described herein. In some embodiments, cloud computing provides computing, software, data access, and storage services without requiring end users to know the physical location or configuration of the systems or hardware providing these services. In various embodiments, cloud computing provides services via a wide area network (WAN), such as the Internet, using suitable protocols. For example, a cloud computing provider provides applications via a WAN that can be accessed through a web browser or any other computing component. The software or components of the cloud computing architecture, along with the corresponding data, may be stored on servers at remote locations. Computing resources in a cloud computing environment may be consolidated or distributed across remote data center locations. Cloud computing infrastructure may provide services through shared data centers, although to users they appear as a single access point. Therefore, a cloud computing architecture can be used to provide the components and functionality described herein from service providers at remote locations. Alternatively, the components and functionality described herein may be provided by conventional servers or installed directly or otherwise on client devices.
[0504] In embodiments of this disclosure, computing device 1400 may be used to implement video encoding / decoding. Memory 1420 may include one or more video encoding / decoding modules 1425 having one or more program instructions. These modules are accessible and executable by processing unit 1410 to perform the functions of the various embodiments described herein.
[0505] In an example embodiment of performing video encoding, input device 1450 may receive video data as input 1470 to be encoded. The video data may be processed, for example, by video codec module 1425 to generate an encoded bitstream. The encoded bitstream may be provided as output 1480 via output device 1460.
[0506] In an example embodiment of performing video decoding, input device 1450 may receive an encoded bitstream as input 1470. The encoded bitstream may be processed, for example, by video codec module 1425 to generate decoded video data. The decoded video data may be provided as output 1480 via output device 1460.
[0507] While this disclosure has been specifically shown and described with reference to preferred embodiments, those skilled in the art will understand that various changes in form and detail may be made without departing from the spirit and scope of this application as defined by the appended claims. These variations are intended to be covered by the scope of this application. Therefore, the foregoing description of embodiments of this application is not intended to be limiting.
Claims
1. A method for video processing, comprising: For the conversion between the current video block and the bitstream of the video, the value of the first point associated with the current video block is limited by using a limiting operation, at least one parameter of the limiting operation is indicated in the bitstream, and the at least one parameter includes at least one of an upper limit value or a lower limit value; as well as The conversion is performed based on the value that has been limited.
2. The method of claim 1, wherein the at least one parameter depends on the region of the video associated with the first sample point.
3. The method of claim 2, wherein the region comprises at least one of the following: The first sample point, At least one sample point adjacent to the first sample point, or At least one sample point that is not adjacent to the first sample point.
4. The method according to any one of claims 2 to 3, wherein the at least one parameter is determined based on the value of a sample point in the region.
5. The method of claim 4, wherein the upper limit value is determined based on the maximum value of the sample points in the region, or The lower limit value is determined based on the minimum value of the sample points in the region.
6. The method according to any one of claims 2 to 5, wherein the region is one of the following: Codec Unit (CU) Prediction Unit (PU) Transformer Unit (TU) Code-decode tree unit (CTU) CTU line, strip, film, or picture.
7. The method according to any one of claims 1 to 6, wherein the first characteristic is one of the following: Predicted sample points Reconstruct sample points, Reference sample points, or Residual sample points.
8. The method of claim 7, wherein the first point is generated based on one of the following: In-frame mode, Inter-frame mode, Intra-frame and inter-frame joint prediction (CIIP) mode, Spatial Geometric Partitioning (SGPM) mode, Intra-block copy (IBC) mode, Intra-frame template matching mode, Affine mode, Merge mode Advanced Motion Vector Prediction (AMVP) mode, Geometric Partitioning (GPM) mode Decoder-side motion vector refinement (DMVR) mode, Bidirectional optical flow (BDOF) mode, Merge mode with motion vector difference (MMVD) mode, Matrix-weighted intra-frame prediction (MIP) mode, Cross-component mode, Sub-block-based temporal motion vector prediction (SbTMVP) mode, Template-based intra-frame mode derivation (TIMD) mode, Decoder-side Intra-Frame Mode Derivation (DIMD) mode, Patterns based on template matching, or Patterns based on non-template matching.
9. The method according to any one of claims 1 to 6, wherein the method is applied to one of the following: Loop filter process, Preprocessing, Post-processing, or Reference image resampling (RPR) process.
10. The method of claim 9, wherein the loop filter process comprises one of the following: Deblocking filter (DBF) Bilateral filter (BF) Sample Adaptive Compensation (SAO) Cross-component SAO (CCSAO) Adaptive Loop Filter (ALF) Cross-component ALF (CCALF), or Luminance mapping with chroma scaling (LMCS).
11. The method according to any one of claims 1 to 10, wherein the first point is outside the boundary of the image in the video.
12. The method of claim 11, wherein the value of the first point is generated based on one of the following: Repeat filling, Mirror fill, Expand padding, Motion-compensated filling, Fill based on interpolation, or Fusion-based filling.
13. The method according to any one of claims 1 to 12, wherein the at least one parameter depends on the bit depth associated with the conversion.
14. The method of claim 13, wherein the bit depth is one of the following: For the bit depth of the input to the transformation, The bit depth of the output of the transformation, or The bit depth for the intermediate process of the conversion.
15. The method according to any one of claims 1 to 14, wherein at least one of the following depends on the conditions: Whether to apply the method, or How to apply the method.
16. The method of claim 15, wherein the condition is related to at least one of the following: The type of the first sample point, The color format of the current video block, The color components of the first sample point, The value of the first sample point, One or more sample points adjacent to the first sample point, For the encoding / decoding mode of the current video block, or The motion information of the current video block.
17. The method of any one of claims 15 to 16, wherein the condition is related to the size of the current video block.
18. The method of claim 17, wherein the method is applied if the width or height of the current video block is greater than a threshold, or The method is applied if the width or height of the current video block is less than a threshold.
19. The method according to any one of claims 15 to 18, wherein the condition is related to the number of samples of the current video block.
20. The method of claim 19, wherein the method is applied if the number of samples in the current video block is greater than a threshold, or If the number of samples in the current video block is less than a threshold, the method is applied.
21. The method according to any one of claims 15 to 20, wherein the condition is related to one of the following: Including the size of the current image in the current video block, Including the size of the current stripe of the current video block, or This includes the size of the current slice of the current video block.
22. The method of claim 21, wherein the method is applied if the width or height of the current image is greater than a threshold, or If the width or height of the current image is less than a threshold, then the method is applied, or If the total number of samples in the current image is greater than a threshold, then the method is applied, or If the total number of samples in the current image is less than a threshold, then the method is applied, or If the width or height of the current strip is greater than a threshold, then the method is applied, or If the width or height of the current strip is less than a threshold, the method is applied, or If the total number of samples in the current strip is greater than a threshold, then the method is applied, or If the total number of samples in the current strip is less than a threshold, then the method is applied, or If the width or height of the current slice is greater than a threshold, then the method is applied, or If the width or height of the current slice is less than a threshold, then the method is applied, or If the total number of samples in the current slice is greater than a threshold, then the method is applied, or The method is applied if the total number of samples in the current slice is less than a threshold.
23. The method according to any one of claims 15 to 22, wherein the condition is related to information about the texture intensity of the current video block.
24. The method of claim 23, wherein the method is applied if a metric of the texture intensity of the current video block is greater than a threshold, or The method is applied if the measure of the texture intensity of the current video block is less than a threshold.
25. The method of claim 24, wherein the measure comprises at least one of the following: The variance of the sample points gradient of the sample points, or The number of effective bands for the sample points.
26. The method according to any one of claims 15 to 25, wherein the conditions relate to information about a template for the current video block.
27. The method of claim 26, wherein the information includes template cost, and If the template cost is greater than a threshold, then the method is applied, or If the template cost is less than a threshold, the method is applied.
28. The method according to any one of claims 1 to 27, wherein the bitstream includes a syntax element indicating whether the method is applied.
29. The method of claim 28, wherein the syntax element includes a flag.
30. The method according to any one of claims 28 to 29, wherein the syntax element is encoded or decoded using at least one context model or is bypassed.
31. The method according to any one of claims 28 to 30, wherein the syntax element is encoded or decoded if the condition is satisfied.
32. The method of claim 31, wherein the condition includes one of the following: The current video block has a predetermined size, or The current video block has a predetermined shape, or The current video block has a predetermined color component.
33. The method according to any one of claims 28 to 32, wherein the syntax element is transmitted via a signal for one of the following: Predicted blocks (PB). Transform block (TB) Code block (CB) Prediction Unit (PU) Transformer Unit (TU) Codec Unit (CU) Virtual Pipeline Data Unit (VPDU). CTU CTU line, strip, piece, Sub-images, or picture.
34. The method according to any one of claims 1 to 33, wherein the at least one parameter is encoded using bypass encoding / decoding or context model encoding / decoding.
35. The method according to any one of claims 1 to 34, wherein the at least one parameter is transmitted via a signal in a predictive manner.
36. The method according to any one of claims 1 to 35, wherein the at least one parameter is indicated using at least one index.
37. The method of claim 36, wherein the range determined based on bit depth is divided into a plurality of bands, and the first parameter of the at least one parameter is indicated using an index of one of the plurality of bands corresponding to the first parameter.
38. The method according to any one of claims 36 to 37, wherein the index is encoded using bypass encoding / decoding or context model encoding / decoding.
39. The method according to any one of claims 1 to 38, wherein the at least one parameter is transmitted via a signal for one of the following: PB, TB, CB, PU, TU, CU, VPDU, CTU, CTU line, strip, sheet, sub-picture or image.
40. The method of claim 11, wherein the value of the first point is generated based on motion-compensated padding.
41. The method of claim 40, wherein the at least one parameter depends on one of the following: The bit depth of the region including the first sample point. Including the bit depth of the region of the reference sample point for the first sample point, The values of the sample points in the region including the first sample point, or This includes the values of sample points in the region corresponding to the reference sample point for the first sample point.
42. The method of claim 41, wherein the region is a strip, slice, sub-image, or picture.
43. The method according to any one of claims 1 to 40, wherein the values of samples generated outside the boundaries of the images in the video and according to motion-compensated padding are not capped.
44. The method according to any one of claims 1 to 43, wherein the method is permitted to be applied to one of the following: Codec Unit (CU) Prediction Unit (PU) Transformer Unit (TU) Code-decode tree unit (CTU) CTU line, strip, film, or picture.
45. The method according to any one of claims 1 to 44, wherein the current video block is one of the following: sequence, picture, Sub-images, strip, piece, Code-decode tree unit (CTU) CTU line, CTU group, Codec Unit (CU) Prediction Unit (PU) Transformer Unit (TU) Code-decode tree block (CTB). Code block (CB) Predicted blocks (PB), or Transform block (TB).
46. The method according to any one of claims 1 to 45, wherein first information regarding at least one of the following is indicated in the bitstream: Whether to apply the method, or How to apply the method.
47. The method of claim 46, wherein the first information is indicated in one of the following: Block level, sequence level, Image group level, Image quality, strip level, or Film series level.
48. The method of claim 46, wherein the first information is indicated in one of the following: Sequence header, Image header, Sequence Parameter Set (SPS) Video Parameter Set (VPS) Dependency Parameter Set (DPS) Decoding Capability Information (DCI) Image Parameter Set (PPS) Adaptive Parameter Set (APS) strip head, or The beginning of the film.
49. The method of claim 46, wherein the first information is indicated in one of the following: PB, TB, CB, PU, TU, CU, VPDU, CTU, CTU line, strip, sheet, or sub-picture.
50. The method according to any one of claims 46 to 49, wherein the first information depends on the encoded / decoded information of the current video block.
51. The method of claim 50, wherein the encoded / decoded information comprises at least one of the following: Block size, Color format, Single tree segmentation, Two-tree partitioning, Color components, Strip type, or Image type.
52. The method according to any one of claims 1 to 51, wherein the conversion comprises encoding the current video block into the bitstream.
53. The method according to any one of claims 1 to 51, wherein the conversion comprises decoding the current video block from the bitstream.
54. An apparatus for video processing, comprising a processor and a nontransitory memory having instructions thereon, wherein the instructions, when executed by the processor, cause the processor to perform the method according to any one of claims 1 to 53.
55. A non-transitory computer-readable storage medium storing instructions that cause a processor to perform the method according to any one of claims 1 to 53.
56. A non-transitory computer-readable recording medium for storing a bitstream of video generated by a method performed by means of a video processing apparatus, wherein the method includes: The value of the first point associated with the current video block of the video is limited by using a limiting operation, wherein at least one parameter for the limiting operation is indicated in the bitstream, and the at least one parameter includes at least one of an upper limit value or a lower limit value; as well as The bitstream is generated based on the value that has been throttled.
57. A method for storing a bitstream of video, comprising: The value of the first point associated with the current video block of the video is limited by using a limiting operation, wherein at least one parameter for the limiting operation is indicated in the bitstream, and the at least one parameter includes at least one of an upper limit value or a lower limit value; The bitstream is generated based on the value that has been clipped. as well as The bitstream is stored in a non-transitory computer-readable recording medium.