Coding of Residuals and Coefficients for Video Coding

Improved residual and coefficient coding methods in video coding technologies address inefficiencies, enhancing compression performance and reducing complexity for better bitrate and quality trade-offs.

JP7701981B2Active Publication Date: 2025-07-02BEIJING DAJIA INTERNET INFORMATION TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2023540955
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2021-01-04
Filing Date
2022-01-04
Publication Date
2025-07-02
Estimated Expiration
2042-01-04

AI Technical Summary

Technical Problem

Existing video coding technologies, such as HEVC and VVC, face inefficiencies in residual and coefficient coding, leading to suboptimal compression performance and increased computational complexity.

Method used

Implementing improved methods for residual and coefficient coding, including fixed and variable binary codeword sets, adaptive Rice parameter derivation, and simplified context modeling to enhance coding efficiency and reduce complexity.

Benefits of technology

Enhances video coding efficiency by improving compression performance and reducing computational requirements, thereby optimizing bitrate and quality trade-offs.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007701981000094
    Figure 0007701981000094
  • Figure 0007701981000095
    Figure 0007701981000095
  • Figure 0007701981000096
    Figure 0007701981000096
Patent Text Reader

Abstract

A method, an apparatus, and a non-transitory computer-readable storage medium for video coding are provided. The method for video coding includes receiving, by a decoder, a sequence parameter set (SPS) residual coding flag indicating whether an index sh_ts_residual_coding_rice_idx is present in an SH syntax structure that references an SPS, and in response to determining that a value of the SPS residual coding flag is equal to 1, determining that sh_ts_residual_coding_rice_idx is present in a slice head (SH) syntax structure that references the SPS, and in response to determining that a value of the residual coding flag is equal to 0, determining that sh_ts_residual_coding_rice_idx is not present in the SH syntax structure that references the SPS.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Cross - Reference to Related Applications

[0001] This application claims priority based on Provisional Application No. 63 / 133,765, filed on January 4, 2021, the entire content of which is incorporated herein by reference for all purposes.

[0002]

[0002] This disclosure relates to video coding and compression. More particularly, this disclosure relates to the improvement and simplification of the coding of residuals and coefficients for video coding.

Background Art

[0003]

[0003] To compress video data, various video coding techniques can be used. Video coding is performed according to one or more video coding standards. For example, video coding standards include Versatile Video Coding (VVC), Joint Exploration Test Model (JEM), High Efficiency Video Coding (H.265 / HEVC), Advanced Video Coding (H.264 / AVC), Moving Picture Experts Group (MPEG) coding, and the like. Video coding generally utilizes prediction methods (e.g., inter - prediction, intra - prediction, etc.) that exploit the redundancy present in video images or sequences. An important goal of video coding techniques is to compress video data into a form that uses a lower bitrate while avoiding or minimizing the degradation of video quality.

Summary of the Invention

[0004]

[0004] Examples of this disclosure provide methods and apparatuses for video coding.

[0005] According to a first aspect of the present disclosure, a method for video coding is provided. The method may include receiving, by a decoder, a sequence parameter set (SPS) residual coding flag indicating whether an index sh_ts_residual_coding_rice_idx exists within an SH syntax structure that refers to the SPS; determining that sh_ts_residual_coding_rice_idx exists within the slice head (SH) syntax structure that refers to the SPS in response to a determination that the value of the SPS residual coding flag is equal to 1; and determining that sh_ts_residual_coding_rice_idx does not exist within the SH syntax structure that refers to the SPS in response to a determination that the value of the residual coding flag is equal to 0.

[0006] According to a second aspect of the present disclosure, a method for video coding is provided. The method may include receiving, by a decoder, a sequence parameter set (SPS) adaptable flag indicating whether alternative Rice parameter derivation for binarization of syntaxes abs_remaining and dec_abs_level is used; determining that alternative Rice parameter derivation for binarization of the syntax is used in response to a determination that the value of the SPS adaptable flag is equal to 1; and determining that alternative Rice parameter derivation for binarization of the syntax is not used in response to a determination that the value of the SPS adaptable flag is equal to 0.

[0007] According to a third aspect of the present disclosure, a method for video coding is provided. The method may include receiving, by a decoder, a residual coding Rice constraint flag to provide general constraint control for other flags; and determining that the value of another flag is equal to 0 in response to a determination that the value of the residual coding Rice constraint flag is equal to 1.

[0008] It should be understood that the above general description and the following detailed description are merely illustrative and explanatory, and are not intended to limit the present disclosure.

[0009] The accompanying drawings incorporated herein and constituting a part thereof show examples consistent with the present disclosure and serve to explain the principles of the present disclosure together with the description.

Brief Description of the Drawings

[0010]

Figure 1

[0010] It is a block diagram of an encoder according to an example of the present disclosure.

Figure 2

[0011] It is a block diagram of a decoder according to an example of the present disclosure.

Figure 3A

[0012] It is a diagram showing block division in a multi-tree structure according to an example of the present disclosure.

Figure 3B

[0013] It is a diagram showing block division in a multi-tree structure according to an example of the present disclosure.

Figure 3C

[0014] It is a diagram showing block division in a multi-tree structure according to an example of the present disclosure.

Figure 3D

[0015] It is a diagram showing block division in a multi-tree structure according to an example of the present disclosure.

Figure 3E

[0016] It is a diagram showing block division in a multi-tree structure according to an example of the present disclosure.

Figure 4

[0017] It is a diagram showing a picture having an 18×12 luminance CTU according to an example of the present disclosure.

Figure 5

[0018] It is a diagram of a picture having an 18×12 luminance CTU according to an example of the present disclosure.

Figure 6A

[0019] It is a diagram showing an example of prohibited ternary tree (TT) and binary tree (BT) division in VTM according to an example of the present disclosure.

Figure 6B

[0020] A diagram showing an example of an unauthorized TT and BT split in VTM according to an example of the present disclosure.

Figure 6C

[0021] A diagram showing an example of an unauthorized TT and BT split in VTM according to an example of the present disclosure.

Figure 6D

[0022] A diagram showing an example of an unauthorized TT and BT split in VTM according to an example of the present disclosure.

Figure 6E

[0023] A diagram showing an example of an unauthorized TT and BT split in VTM according to an example of the present disclosure.

Figure 6F

[0024] A diagram showing an example of an unauthorized TT and BT split in VTM according to an example of the present disclosure.

Figure 6G

[0025] A diagram showing an example of an unauthorized TT and BT split in VTM according to an example of the present disclosure.

Figure 6H

[0026] A diagram showing an example of an unauthorized TT and BT split in VTM according to an example of the present disclosure.

Figure 7

[0027] A diagram showing the residual coding structure of a transform block according to an example of the present disclosure.

Figure 8

[0028] A diagram showing the residual coding structure of a transform skip block according to an example of the present disclosure.

Figure 9

[0029] A diagram showing two scalar quantizers according to an example of the present disclosure.

Figure 10A

[0030] A diagram showing a state transition according to an example of the present disclosure.

Figure 10B

[0031] A diagram showing the selection of a quantizer according to an example of the present disclosure.

Figure 11

[0032] A diagram of a template used to select a probability model according to the present disclosure.

Figure 12

[0033] A diagram showing an example of a block encoded in palette mode according to the present disclosure.

Figure 13

[0034] A diagram showing the use of a palette predictor for transmitting palette entries according to the present disclosure.

Figure 14A

[0035] A diagram showing a horizontal traversal scan according to the present disclosure.

Figure 14B

[0036] A diagram showing a vertical traversal scan according to the present disclosure.

Figure 15A

[0037] A diagram showing a sub-block-based index map for scanning a palette according to the present disclosure.

Figure 15B

[0038] A diagram showing a sub-block-based index map for scanning a palette according to the present disclosure.

Figure 16

[0039] A diagram of a method for encoding a video signal according to an example of the present disclosure.

Figure 17

[0040] A diagram of a method for encoding a video signal according to an example of the present disclosure.

Figure 18

[0041] A diagram showing a computing environment coupled with a user interface according to an example of the present disclosure.

Figure 19

[0042] A diagram showing a method for video coding according to an example of the present disclosure.

Figure 20

[0043] A diagram showing a method for video coding according to an example of the present disclosure.

Figure 21

[0044] A diagram showing a method for video coding according to an example of the present disclosure.

DETAILED DESCRIPTION OF THE INVENTION

[0011]

[0045] Next, refer in detail to the exemplary embodiments, and show their examples in the accompanying drawings. The following description refers to the accompanying drawings, and unless otherwise specified, the same numbers in different drawings represent the same or similar elements. The implementations described in the following description of the exemplary embodiments do not represent all implementations consistent with the present disclosure. Rather, they are merely examples of devices and methods consistent with aspects related to the present disclosure described in the appended claims.

[0012]

[0046] The terms used in this disclosure are for the purpose of describing particular embodiments only and are not intended to limit the present disclosure. When used in this disclosure and the appended claims, the singular forms "a", "an", and "the" shall include the plural forms as well, unless the context clearly dictates otherwise. It should also be understood that the term "and / or" used herein means any one or all possible combinations of one or more of the associated listed items and is intended to include them.

[0013]

[0047] The terms such as "first", "second", "third", etc. may be used herein to describe various information, but it should be understood that the information should not be limited by these terms. These terms are used only to distinguish one category of information from another. For example, without departing from the scope of the present disclosure, the first information can also be called the second information. Similarly, the second information can also be called the first information. The term "when" used herein can be understood to mean "when", "at that time", or "depending on the judgment" according to the context.

[0014]

[0048] The first version of the HEVC standard was completed in October 2013, providing about 50% bitrate savings or equivalent perceptual quality compared to the previous-generation video coding standard H.264 / MPEG AVC. In the HEVC standard, coding has been significantly improved compared to previous standards, but there is evidence that better coding efficiency than HEVC can be achieved using additional coding tools. Based on this, both VCEG and MPEG initiated a search for new coding technologies for future video coding standardization, and in October 2015, the Joint Video Exploration Team (JVET) was formed by ITU-T VCEG and ISO / IEC MPEG, starting important research on advanced technologies that could enable a significant improvement in coding efficiency. One reference software called the Joint Exploration Model (JEM) was maintained by JVET by integrating some additional coding tools on top of the HEVC Test Model (HM).

[0015]

[0049] In October 2017, a Call for Proposals (CfP) regarding video compression with capabilities beyond HEVC was issued by ITU-T and ISO / IEC. In April 2018, 23 CfP responses were received and evaluated at the 10th JVET meeting, demonstrating that the compression efficiency was improved by about 40% compared to HEVC. Based on such evaluation results, JVET launched a new project to develop a new generation of video coding standard named Versatile Video Coding (VVC). In the same month, a reference software codebase called the VVC Test Model (VTM) was established to demonstrate the reference implementation of the VVC standard.

[0016]

[0050] Similar to HEVC, VVC is constructed based on a framework of block-based hybrid video coding.

[0017]

[0051] FIG. 1 shows a general diagram of a block-based video encoder (video coder) for VVC. Specifically, FIG. 1 shows a typical encoder 100. The encoder 100 includes a video input 110, motion compensation 112, motion estimation 114, intra / inter mode decision 116, block predictor 140, adder 128, transform 130, quantization 132, prediction-related information 142, intra prediction 118, picture buffer 120, inverse quantization 134, inverse transform 136, adder 126, memory 124, in-loop filter 122, entropy coding 138, and bitstream 144.

[0018]

[0052] In the encoder 100, a video frame is divided into a plurality of video blocks for processing. For each predetermined video block, a prediction is formed based on either an inter prediction approach or an intra prediction approach.

[0019]

[0053] A prediction residual representing the difference between the current video block, which is part of the video input 110, and its predictor, which is part of the block predictor 140, is sent from the adder 128 to the transform 130. Next, the transform coefficients are sent from the transform 130 to the quantization 132 for entropy reduction. Then, the quantized coefficients are supplied to the entropy coding 138 to generate a compressed video bitstream. As shown in FIG. 1, prediction-related information 142 from the intra / inter mode decision 116, such as video block partition information, motion vector (MV), reference picture index, and intra prediction mode, is also supplied through the entropy coding 138 and stored in the compressed bitstream 144. The compressed bitstream 144 includes the video bitstream.

[0020]

[0054] In the encoder 100, decoder (decoder) related circuitry is also required to reconstruct pixels for prediction purposes. The prediction residual is reconstructed through the inverse quantization 134 and the inverse transform 136. This reconstructed prediction residual is combined with the block predictor 140 to generate the unfiltered reconstructed pixels of the current video block.

[0021]

[0055] Spatial prediction (or "intra prediction") predicts the current video block using pixels from samples of already-encoded adjacent blocks (referred to as reference samples) within the same video frame as the current video block.

[0022]

[0056] Temporal prediction (also referred to as "inter prediction") predicts the current video block using pixels reconstructed from already-encoded video pictures. Temporal prediction reduces the temporal redundancy inherent in the video signal. The temporal prediction signal for a particular coding unit (CU) or coding block is typically transmitted by one or more motion vectors (MVs) indicating the amount and direction of motion between the current CU and its temporal reference. Further, when multiple reference pictures are supported, one reference picture index is additionally transmitted to identify from which reference picture within the reference picture storage the temporal prediction signal is derived.

[0023]

[0057] Motion estimator 114 takes in signals from video input 110 and picture buffer 120 and outputs a motion estimation signal to motion compensator 112. Motion compensator 112 takes in signals from video input 110, picture buffer 120, and the motion estimation signal from motion estimator 114 and outputs a motion compensation signal to intra / inter mode decision 116.

[0024]

[0058] After spatial and / or temporal prediction is performed, the intra / inter mode decision 116 within the encoder 100 selects the best prediction mode, for example, based on a rate distortion optimization method. Next, the block predictor 140 is subtracted from the current video block, and the resulting prediction residual is decorrelated using the transform 130 and quantization 132. The resulting quantized residual coefficients are inverse quantized by the inverse quantization 134 and inverse transformed by the inverse transform 136 to form a reconstructed residual, which is then added back to the prediction block to form the reconstructed signal of the CU. Further in-loop filtering 122, such as a deblocking filter, sample adaptive offset (SAO), and / or adaptive loop-in filter (ALF), can be applied to the reconstructed CU before the reconstructed CU is placed in the reference picture storage of the picture buffer 120 and used to encode future video blocks. To form the output video bitstream 144, the encoding mode (inter or intra), prediction mode information, motion information, and quantized residual coefficients are all sent to the entropy coding unit 138, where they are further compressed and packed to form the bitstream.

[0025]

[0059] FIG. 1 shows a block diagram of a general block-based hybrid video coding system. The input video signal is processed block by block (referred to as a coding unit (CU)). In VTM-1.0, a CU can be up to 128×128 pixels. However, unlike HEVC that divides blocks based only on a quadtree, in VVC, one coding tree unit (CTU) is divided into CUs and adapts to various local characteristics based on a quadtree / binary tree / tritree. By definition, a coding tree block (CTB) is an NxN block of samples for some value of N where dividing the components into CTBs is the division. A CTU contains a CTB of luma samples, two corresponding CTBs of chroma samples of a picture with three sample arrays, or a CTB of samples of a picture encoded using three separate color planes and a syntax structure for monochrome pictures or samples. Further, the concept of multiple split unit types in HEVC is removed. That is, the separation of CUs, prediction units (PUs), and transform units (TUs) no longer exists in VVC. Instead, each CU is always used as a basic unit for both prediction and transform without further division. In the multiple tree structure, first, one CTU is divided in a quadtree structure. Next, each quadtree leaf node can be further divided by binary tree and tritree structures. As shown in FIGS. 3A, 3B, 3C, 3D, and 3E, there are five split types: four-way split, vertical two-way split, horizontal two-way split, horizontal three-way split, and vertical three-way split.

[0026]

[0060] FIG. 3A shows a diagram representing a four-way split of a block in a multiple tree structure according to the present disclosure.

[0027]

[0061] FIG. 3B shows a diagram representing a vertical two-way split of a block in a multiple tree structure according to the present disclosure.

[0028]

[0062] FIG. 3C shows a diagram representing a horizontal two-way split of a block in a multiple tree structure according to the present disclosure.

[0029]

[0063] FIG. 3D shows a diagram representing a 3-way vertical block split in a multi-tree structure according to the present disclosure.

[0030]

[0064] FIG. 3E shows a diagram representing a 3-way horizontal block split in a multi-tree structure according to the present disclosure.

[0031]

[0065] In FIG. 1, spatial prediction and / or temporal prediction can be performed. Spatial prediction (or "intra prediction") uses the pixels of samples (referred to as reference samples) of already encoded adjacent blocks within the same video picture / slice to predict the current video block. Spatial prediction reduces the spatial redundancy inherent in the video signal. Temporal prediction (also called "inter prediction" or "motion compensation prediction") uses the pixels reconstructed from already encoded video pictures to predict the current video block. Temporal prediction reduces the temporal redundancy inherent in the video signal. The temporal prediction signal of a particular CU is usually transmitted by one or more motion vectors (MVs) indicating the amount and direction of motion between the current CU and its temporal reference. Also, when multiple reference pictures are supported, one reference picture index is additionally transmitted to identify from which reference picture in the reference picture store the temporal prediction signal came. After spatial and / or temporal prediction, the mode decision block in the encoder selects the optimal prediction mode, for example, based on a rate-distortion optimization method. Next, the prediction block is subtracted from the current video block. The prediction residual is decorrelated using a transform and quantized. The quantized residual coefficients are inverse quantized, inverse transformed to form a reconstructed residual, and then added back to the prediction block to form the reconstructed signal of the CU. Further in-loop filter processing such as a deblocking filter, sample adaptive offset (SAO), and adaptive loop-in filter (ALF) can be applied to the reconstructed CU before the reconstructed CU is placed in the reference picture store and used for encoding future video blocks. To form the output video bitstream, the encoding mode (inter or intra), prediction mode information, motion information, and quantized residual coefficients are all sent to the entropy coding unit, further compressed and packed to form the bitstream.

[0032]

[0066] Figure 2 shows a general block diagram of a video decoder for VVC (video decoder). Specifically, Figure 2 shows a block diagram of a typical decoder 200. The decoder 200 includes a bitstream 210, entropy decoding 212, inverse quantization 214, inverse transform 216, adder 218, intra / inter mode selection 220, intra prediction 222, memory 230, in-loop filter 228, motion compensation 224, picture buffer 226, prediction-related information 234, and video output 232.

[0033]

[0067] The decoder 200 is similar to the reconstruction-related section existing in the encoder 100 of Figure 1. In the decoder 200, the input video bitstream 210 is first decoded through the entropy decoding 212 to derive the quantized coefficient levels and prediction-related information. Next, the quantized coefficient levels are processed through the inverse quantization 214 and inverse transform 216 to obtain the reconstructed prediction residuals. The block prediction mechanism implemented in the intra / inter mode selector 220 is configured to perform either intra prediction 222 or motion compensation 224 based on the decoded prediction information. A set of unfiltered reconstructed pixels is obtained by using the adder 218 to sum the reconstructed prediction residuals from the inverse transform 216 and the prediction output generated by the block prediction mechanism.

[0034]

[0068] The reconstructed blocks can further pass through the in-loop filter 228 before being stored in the picture buffer 226 that functions as a reference picture store. The reconstructed video in the picture buffer 226 is not only transmitted to drive the display device but may also be used to predict future video blocks. In the situation where the in-loop filter 228 is turned on, a filtering operation is performed on these reconstructed pixels to derive the final reconstructed video output 232.

[0035]

[0069] Figure 2 shows a general block diagram of a block-based video decoder. The video bitstream is first entropy decoded by an entropy decoding unit. The coding mode and prediction information are sent to a spatial prediction unit (in the case of intra coding) or a temporal prediction unit (in the case of inter coding) to form a prediction block. The residual transform coefficients are sent to an inverse quantization unit and an inverse transform unit to reconstruct a residual block. Next, the prediction block and the residual block are added. The reconstructed block may further pass through in-loop filtering before being stored in the reference picture buffer. The reconstructed video in the reference picture buffer is not only sent to drive a display device but also used to predict future video blocks.

[0036]

[0070] Generally, the basic intra prediction method applied to VVC is kept the same as that of HEVC, except that some modules are further extended and / or improved. For example, intra sub-partition (ISP) coding mode, extended intra prediction by wide-angle intra direction, position-dependent intra prediction combination (PDPC), and 4-tap intra interpolation.

[0037]

[0071] <Partitioning of Pictures, Tile Groups, Tiles, and CTUs in VVC>

[0038]

[0072] In VVC, a tile is defined as a rectangular region of CTUs within a specific tile column and a specific tile row in a picture. A tile group is a group of an integer number of tiles of a picture that is exclusively included in a single NAL unit. Basically, the concept of a tile group is the same as that of a slice defined in HEVC. For example, a picture is divided into tile groups and tiles. A tile is a series of CTUs that cover a rectangular region of a picture. A tile group contains multiple tiles of a picture. Two modes of tile groups, namely the raster scan tile group mode and the rectangular tile group mode, are supported. In the raster scan tile group mode, a tile group contains a series of tiles in the tile raster scan of a picture. In the rectangular tile group mode, a tile group contains multiple tiles of a picture that collectively form a rectangular region of a picture. The tiles within a rectangular tile group are in the order of the tile raster scan of the tile group.

[0039]

[0073] Figure 4 shows an example of the raster scan tile group division of a picture, where the picture is divided into 12 tiles and 3 raster scan tile groups. Figure 4 includes tiles 410, 412, 414, 416, and 418. Each tile has 18 CTUs. More specifically, Figure 4 shows a picture containing 18×12 luminance CTUs divided into 12 tiles and 3 tile groups (for reference). The three tile groups are as follows: (1) The first tile group includes tiles 410 and 412, (2) The second tile group includes tiles 414, 416, 418, 420, and 422, and (3) The third tile group includes tiles 424, 426, 428, 430, 432.

[0040]

[0074] Figure 5 shows an example of dividing a picture into rectangular tile groups. The picture is divided into 24 tiles (6 tile columns and 4 tile rows) and 9 rectangular tile groups. Figure 5 includes tiles 510, 512, 514, 516, 518, 520, 522, 524, 526, 528, 530, 532, 534, 536, 538, 540, 542, 544, 546, 548, 550, 552, 554, and 556. More specifically, Figure 5 shows a picture having an 18×12 luminance CTU divided into 24 tiles and 9 tile groups (reference). Tile groups contain tiles, and tiles contain CTUs. The nine rectangular tile groups include (1) two tiles 510 and 512, (2) two tiles 514 and 516, (3) two tiles 518 and 520, (4) four tiles 522, 524, 534, and 536, (5) four tile groups 526, 528, 538, 540, (6) four tiles 530, 532, 542, 544, (7) two tiles 546, 548, (8) two tiles 550, 552, (9) two tiles 554 and 556.

[0041]

[0075] <Conversion of Large Block Sizes with High-Frequency Zeroing in VVC>

[0042]

[0076] In VTM4, conversion of large block sizes up to 64×64 is possible, which is mainly useful for higher-resolution videos, such as 1080p and 4K sequences. Since the high-frequency conversion coefficients of a conversion block with a size (width or height, or both width and height) equal to 64 are set to zero, only the low-frequency coefficients are retained. For example, in the case of an M×N conversion block where the block width is M and the block height is N, when M is equal to 64, only the left 32 columns of the conversion coefficients are retained. Similarly, when N is equal to 64, only the upper 32 rows of the conversion coefficients are retained. When the conversion skip mode is used for large blocks, the entire block is used without setting the values to zero.

[0043]

[0077] <Virtual Pipeline Data Unit (VPDU) in VVC>

[0044]

[0078] The virtual pipeline data unit (VPDU) is defined as a non - overlapping unit within a picture. In a hardware decoder, consecutive VPDUs are processed simultaneously by multiple pipeline stages. Since the VPDU size is approximately proportional to the buffer size of most pipeline stages, it is important to keep the VPDU size small. In most hardware decoders, the VPDU size can be set to the maximum transform block (TB) size. However, in VVC, the VPDU size can increase due to the division of ternary trees (TTs) and binary trees (BTs).

[0045]

[0079] To maintain the VPDU size as 64×64 luminance (luma) samples, the following standard splitting restrictions (with changes to syntax transmission) are applied to VTM5.

[0046]

[0080] TT splitting is not permitted in a coding unit (CU) where either the width or the height, or both the width and the height, are equal to 128.

[0047]

[0081] For a 128×N CU where N≦64 (i.e., the width is equal to 128 and the height is less than 128), horizontal BT is not permitted.

[0048]

[0082] For an N×128 CU where N≦64 (i.e., the height is equal to 128 and the width is less than 128), vertical BT is not permitted.

[0049]

[0083] Figures 6A, 6B, 6C, 6D, 6E, 6F, 6G, and 6H show examples of TT and BT splits not permitted in VTM.

[0050]

[0084] <Coefficient Coding in VVC>

[0051]

[0085] The transform coefficient coding in VVC is similar to HEVC in the sense that both use non-overlapping coefficient groups (also called CGs or sub-blocks). However, there are also some differences between them. In HEVC, the size of each CG of coefficients is fixed at 4×4. In VVC Draft 6, the CG size becomes dependent on the TB size. As a result, various CG sizes (1×16, 2×8, 8×2, 2×4, 4×2, and 16×1) are available in VVC. The CGs within the coding block and the transform coefficients within the CG are coded according to a predefined scan order.

[0052]

[0086] To limit the maximum number of context-coded bins per pixel, the maximum number of context-coded bins (CCBs) of the TB is derived using the area of the TB and the type of the video component (e.g., luma component and chroma component). The maximum number of context-coded bins is equal to TB_zosize * 1.75. Here, TB_zosize indicates the number of samples within the TB after coefficient zeroing. Note that the coded_sub_block_flag is a flag indicating whether the CG contains non-zero coefficients and is not considered in the CCB count.

[0053]

[0087] Coefficient zeroing is an operation performed on the transform block to force coefficients located in a specific region of the transform block to 0. For example, in the current VVC, a zeroing operation is associated with a 64×64 transform. As a result, all transform coefficients located outside the upper-left 32×32 region within the 64×64 transform block are forced to 0. In fact, in the current VVC, for transform blocks with a size exceeding 32 along a specific dimension, a coefficient zeroing operation is performed along that dimension, and coefficients located beyond the upper-left 32×32 region are forced to 0.

[0054]

[0088] In the conversion coefficient coding in VVC, the variable remBinsPassl is first set to the maximum number of allowable context-coded bins (MCCB). During the coding process, the variable decreases by 1 each time a bin coded in the context is transmitted. While remBinsPassl is 4 or more, the coefficient is first transmitted through the syntax of sig_coeff_flag, abs_level_gtl_flag, par_level_flag, and abs_level_gt3_flag, all using bins context-coded in the first pass. The remaining part of the coefficient level information is coded in the syntax element of abs_remainder using Golomb-Rice codes and bypass-coded bins in the second pass. If remBinsPassl becomes less than 4 during the coding of the first pass, the current coefficient is not coded in the first pass but is directly coded in the second pass in the syntax element of dec_abs_level using Golomb-Rice codes and bypass-coded bins. The Rice parameter derivation process of dec_abs_level[] is derived as specified in Table 3. After all the above level codings, the signs (sign flags) at all scan positions where sig_coeff_flag is equal to 1 are finally coded as bypass bins. Such a process is shown in Figure 7. remBinsPassl is reset for each TB. The transition from the use of context-coded bins of sig_coeff_flag, abs_level_gtl_flag, par_level_flag, and abs_level_gt3_flag to the use of bypass-coded bins of the remaining coefficients occurs only once at most for each TB. In the case of a coefficient sub-block, if remBinsPassl is less than 4 before coding the first coefficient, the entire coefficient sub-block is coded using bypass-coded bins.

[0055]

[0089] Figure 7 shows the residual coding structure of the transform block.

[0056]

[0090] The unified (same) Rice parameter (RicePara) derivation is used to transmit the syntax of abs_remainder and dec_abs_level. The only difference is that the base level is set to 4 and 0 respectively for the encoding of abs_remainder and dec_abs_level. The Rice parameter is determined not only by the sum of the absolute levels of five adjacent transform coefficients in the local template, but also based on the corresponding base level as follows.

[0057]

[0091] RicePara = RiceParTable[max(min(31, sumAbs - 5 * baseLevel), 0)]

[0058]

[0092] The syntax of residual coding and the related semantics in the current VVC draft specification are shown in Table 1 and Table 2 respectively. The reading method of Table 1 is shown in the appendix section of this disclosure and is also described in the VVC specification.

[0059]

Table 1-1

Table 1-2

Table 1-3

Table 1-4

Table 1-5

Table 1-6

Table 1-7

[0060]

Table 2-1

Table 2-2

Table 2-3

Table 2-4

[0061]

Table 3

[0062]

Table 4

[0063]

[0093] <Residual Coding for Transform Skip Mode in VVC>

[0064]

[0094] Unlike HEVC where a single residual coding method is designed to code both transform coefficients and transform skip coefficients, in VVC, two separate residual coding methods are used for transform coefficients and transform skip coefficients (i.e., residuals), respectively.

[0065]

[0095] In the transform skip mode, the statistical characteristics of the residual signal are different from those of the transform coefficients, and no energy compression around the low-frequency components is observed. Residual coding is modified considering various signal characteristics of the following (spatial) transform skip residuals.

[0066]

[0096] There is no transmission of the last x / y position.

[0067]

[0097] The coded_sub_block_flag, which is coded for all sub-blocks except the DC sub-block when all previous flags are equal to 0.

[0068]

[0098] Sig_coeff_flag context modeling using two adjacent coefficients.

[0069]

[0099] The par_level_flag that uses only one context model.

[0070]

[0100] Additional flags beyond 5, 7, 9.

[0071]

[0101] Derivation of a modified Rice parameter for residual binary quantization.

[0072]

[0102] The context modeling of the sign flag is determined based on the left and upper adjacent coefficient values, and the sign flag is parsed after the sig_coeff_flag to maintain all context-coded bits together.

[0073]

[0103] As shown in Figure 8, the syntax elements sig_coeff_flag, coeff_sign_flag, abs_level_gtl_flag, par_level_flag are coded in an interleaved manner for each residual sample in the first pass, followed by the abs_level_gtX_flag bitplane in the second pass and the abs_remainder coding in the third pass.

[0074]

[0104] Path 1: sig_coeff_flag, coeff_sign_flag, abs_level_gtl_flag, par_level_flag

[0075]

[0105] Path 2: abs_level_gt3_flag, abs_level_gt5_flag, abs_level_gt7_flag, abs_level_gt9_flag

[0076]

[0106] Path 3: abs_remainder

[0077]

[0107] FIG. 8 shows the residual coding structure of the conversion skip block.

[0078]

[0108] The syntax and related semantics (meaning content) of the residual coding of the conversion skip mode in the current VVC draft specification are shown in Table 5 and Table 2, respectively. The reading method of Table 5 is shown in the appendix section of this disclosure and is also described in the VVC specification.

[0079]

Table 5-1

Table 5-2

Table 5-3

Table 5-4

Table 5-5

[0080]

[0109] <Quantization>

[0081]

[0110] In the current VVC, the maximum QP value is extended from 51 to 63, and accordingly, the transmission of the initial QP is changed. The initial value of SliceQpY can be changed in the slice segment layer when a non-zero value of slice_qp_delta is coded. In the case of a conversion skip block, when QP is equal to 4, the quantization step size is 1, so the minimum allowable quantization parameter (QP) is defined as 4.

[0082]

[0111] Furthermore, the same HEVC scalar quantization is used together with a new concept called dependent scalar quantization. Dependent scalar quantization refers to an approach where the set of allowable reconstruction values of the transform coefficients depends on the values of the transform coefficient levels that are before the current transform coefficient level in the reconstruction order. The main effect of this approach is that, compared to the conventional independent scalar quantization used in HEVC, the allowable reconstruction vectors are packed more densely in the N-dimensional vector space (N represents the number of transform coefficients in the transform block). That is, when the average number of allowable reconstruction vectors per unit volume in the N dimensions is constant, the average distortion between the input vector and the closest reconstruction vector decreases. The approach of dependent scalar quantization is realized by (a) defining two scalar quantizers with different reconstruction levels and (b) defining a process for switching between the two scalar quantizers.

[0083]

[0112] Two scalar quantizers, denoted as Q0 and Q1, that are used are shown in FIG. 9. The positions of the available reconstruction levels are uniquely specified by the quantization step size Δ. The scalar quantizer (Q0 or Q1) that is used is not explicitly transmitted in the bitstream. Instead, the quantizer used for the current transform coefficient is determined by the parity of the transform coefficient levels that precede the current transform coefficient in the encoding / reconstruction order.

[0084]

[0113] FIG. 9 shows a diagram of the two scalar quantizers used in the proposed dependent quantization approach.

[0085]

[0114] As shown in FIGS. 10A and 10B, the switching between the two scalar quantizers (Q0 and Q1) is realized via a state machine having four quantization states (QState). QState can take four different values: 0, 1, 2, and 3. This is uniquely determined by the parity of the conversion coefficient levels preceding the current conversion coefficient in the encoding / reconstruction order. At the start of the inverse quantization of the conversion block, the state is set to 0. The conversion coefficients are reconstructed in scan order (i.e., in the same order as entropy decoding). After the current conversion coefficient is reconstructed, the state is updated as shown in FIG. 10. Here, k represents the value of the conversion coefficient level.

[0086]

[0115] FIG. 10A shows a transition diagram indicating the state transitions of the proposed dependent quantization.

[0087]

[0116] FIG. 10B shows a table indicating the selection of quantizers for the proposed dependent quantization.

[0088]

[0117] Transmission of default and user-defined scaling matrices is also supported. The scaling matrices in the DEFAULT mode are all flat, with elements corresponding to 16 for all TB sizes. The IBC and intra coding modes currently share the same scaling matrix. Therefore, for the USER_DEFINED matrix, the numbers of MatrixType and MatrixType_DC are updated as follows.

[0089]

[0118] MatrixType: 30 = 2 (2 for intra & IBC / inter) × 3 (Y / Cb / Cr components) × 5 (square TB sizes: from 4×4 to 64×64 for luma, from 2×2 to 32×32 for chroma).

[0090]

[0119] MatrixType_DC:14 = 2 (for 1 of the 2×Y components in Intra & IBC / Inter) × 3 (TB sizes: 16×16, 32×32, 64×64) + 4 (for 2 of the 2×Cb / Cr components in Intra & IBC / Inter) × 2 (TB sizes: 16×16, 32×32).

[0091]

[0120] The DC values are encoded separately for the following scaling matrices, 16×16, 32×32, and 64×64. For TBs smaller than 8×8, all elements of one scaling matrix are transmitted. For TBs with a size of 8×8 or larger, only 64 elements of one 8×8 scaling matrix are transmitted as the base scaling matrix. To obtain a square matrix larger than 8×8, the 8×8 base scaling matrix is upsampled (by element replication) to the corresponding square size (i.e., 16×16, 32×32, 64×64). When zeroing out of the high-frequency coefficients of the 64-point transform is applied, the corresponding high frequencies of the scaling matrix are also zeroed out. That is, when the width or height of the TB is 32 or more, only the left half or the upper half of the coefficients are retained, and 0 is assigned to the remaining coefficients. Further, since the lower-right 4×4 elements are never used, the number of elements transmitted for the 64×64 scaling matrix also reduces from 8×8 to three 4×4 submatrices.

[0092]

[0121] <Context Modeling for Transform Coefficient Coding>

[0093]

[0122] The selection of the probability model for syntax elements related to the absolute value of the transform coefficient level depends on the absolute level in the local neighborhood or the value of the partially reconstructed absolute level. The templates used are shown in Figure 11.

[0094]

[0123] Figure 11 shows a diagram of the templates used to select the probability model. The black squares specify the current scan position, and the squares with "x" represent the local neighborhood used.

[0095]

[0124] The selected probability model depends on the sum of the absolute levels (or partially reconstructed absolute levels) within the local neighborhood and the number of absolute levels greater than 0 within the local neighborhood (given by the number of sig_coeff_flag equal to 1). Context modeling and binarization depend on the following metrics for the local neighborhood.

[0096]

[0125] numSig: The number of non-zero levels within the local neighborhood.

[0097]

[0126] sumAbs1: The sum of the partially reconstructed absolute levels (absLevel1) after the first pass in the local neighborhood.

[0098]

[0127] sumAbs: The sum of the reconstructed absolute levels in the local neighborhood.

[0099]

[0128] Diagonal position (d): The sum of the horizontal and vertical coordinates of the current scan position within the transform block.

[0100]

[0129] Based on the values of numSig, sumAbs1, and d, a probability model is selected for encoding sig_coeff_flag, abs_level_gt1_flag, par_level_flag, and abs_level_gt3_flag. The Rice parameters for binarizing abs_remainder and dec_abs_level are selected based on the values of sumAbs and numSig.

[0101]

[0130] In the current VVC, the reduced 32-point MTS (also called RMTS32) is based on high-frequency coefficient skipping and is used to reduce the complexity of 32-point DST-7 / DCT-8 calculations. Also, this involves changes in coefficient coding that include all types of zeroing out (i.e., existing zeroing out for the high-frequency components of RMTS32 and DCT2). Specifically, the binarization of the last non-zero coefficient position coding is coded based on the reduced TU size, and the selection of the context model for the last non-zero coefficient position coding is determined by the original TU size. Furthermore, 60 context models are used to code the sig_coeff_flag of the transform coefficients. The selection of the context model index is made based on the sum of the maximum 5 absolute levels that have been partially reconstructed beforehand, called locSumAbsPass1, and the dependent quantization state QState, as follows.

[0102]

[0131] When cldx is equal to 0, ctxlnc is derived as follows: ctxlnc = 12 * Max(0, QState - 1) + Min((locSumAbsPassl + 1) >> 1, 3) + (d < 2? 8 : (d < 5? 4 : 0))

[0103]

[0132] Otherwise (when cldx is greater than 0), ctxlnc is derived as follows: ctxlnc = 36 + 8 * Max(0, QState - 1) + Min((locSumAbsPass1 + 1) >> 1, 3) + (d < 2? 4 : 0)

[0104]

[0133] <Palette Mode>

[0105]

[0134] The basic idea behind the palette mode is that the samples within a CU are represented by a small set of representative color values. This set is called the palette. Also, color values that are excluded from the palette can be indicated by transmitting the values of the three color components directly in the bitstream as escape colors. This is shown in FIG. 12.

[0106]

[0135] FIG. 12 shows an example of a block encoded in the palette mode. FIG. 12 includes a block 1210 encoded in the palette mode and a palette 1220.

[0107]

[0136] In FIG. 12, the palette size is 4. The first three samples use palette entries 2, 0, and 3 for reconstruction respectively. The blue sample represents an escape symbol. The CU-level flag palette_escape_val_present_flag indicates whether the escape symbol is present within the CU. If the escape symbol is present, the palette size is increased by 1 only, and the last index is used to indicate the escape symbol. Thus, in FIG. 12, index 4 is assigned to the escape symbol.

[0108]

[0137] To decode a palette-encoded block, the decoder needs to have the following information.

[0138] Palette table

[0139] Palette index

[0109]

[0140] If the palette index corresponds to an escape symbol, additional overhead is transmitted to indicate the corresponding color value of the sample.

[0110]

[0141] Furthermore, on the encoder side, it is necessary to derive the appropriate palette to be used for that CU.

[0111]

[0142] To derive a palette for non-reversible symbolization, a modified k-means clustering algorithm is used. The first sample of the block is added to the palette. Next, for each subsequent sample from the block, the sum of absolute differences (SAD) between the sample and each of the current palette colors is calculated. If the distortion of each component is less than the threshold of the palette entry corresponding to the minimum SAD, the sample is added to the cluster belonging to that palette entry. Otherwise, the sample is added as a new palette entry. When the number of samples mapped to a cluster exceeds the threshold, the centroid of that cluster is updated and becomes the palette entry for that cluster.

[0112]

[0143] In the next step, the clusters are sorted in descending order of usage. And the palette entries corresponding to each entry are updated. Usually, the centroid of the cluster is used as the entry of the palette. However, when considering the encoding cost of the palette entry, a rate-distortion analysis is performed to analyze whether the entry from the palette predictor is suitable to be used as the updated palette entry instead of the centroid. This process continues until all clusters are processed or the maximum size of the palette is reached. Finally, if there is only one sample in a cluster and the corresponding palette entry is not in the palette predictor, the sample is converted to an escape symbol. Additionally, duplicate palette entries are removed and their clusters are merged.

[0113]

[0144] After palette derivation, each sample in the block is assigned the index of the closest (within SAD) palette entry. Next, the sample is assigned to either the "INDEX" or "COPY_ABOVE" mode. For each sample for which either the "INDEX" or "COPY_ABOVE" mode is possible. Next, the cost of encoding the mode is calculated. The mode with the lower cost is selected.

[0114]

[0145] For the encoding of palette entries, a palette predictor is maintained. The maximum size of the palette and the palette predictor are transmitted in the SPS. The palette predictor is initialized at the start of each CTU row, each slice, and each tile.

[0115]

[0146] For each entry in the palette predictor, a reuse flag is transmitted indicating whether it is part of the current palette. This is shown in Figure 13.

[0116]

[0147] Figure 13 shows the use of the palette predictor for transmitting palette entries. Figure 13 includes the previous palette 1310 and the current palette 1320.

[0117]

[0148] The reuse flag is sent using zero run-length coding. After this, the number of new palette entries is transmitted using an exponential Golomb code of order 0. Finally, the component values of the new palette entries are transmitted.

[0118]

[0149] Palette indices are encoded using horizontal and vertical traversal scans as shown in Figures 14A and 14B. The scan order is explicitly transmitted in the bitstream using the palette_transpose_flag.

[0119]

[0150] Figure 14A shows a horizontal traversal scan.

[0120]

[0151] Figure 14B shows a vertical traversal scan.

[0121]

[0152] To encode the palette index, a line coefficient group (CG)-based palette mode is used, which divides the CU into multiple segments with 16 samples based on the traversal scan mode as shown in Figures 15A and 15B, and the index run, the palette index value, and the quantized color in the escape mode are encoded / parsed in order for each CG.

[0122]

[0153] Figure 15A shows a sub-block based index map for scanning a pallet.

[0123]

[0154] Figure 15B shows a sub-block based index map for scanning a pallet.

[0124]

[0155] The pallet index is encoded using two main pallet sample modes, "INDEX" and "COPY_ABOVE". As previously explained, an index equal to the maximum pallet size is assigned to the escape symbol. In the "COPY_ABOVE" mode, the pallet index of the sample in the above row is copied. In the "INDEX" mode, the pallet index is explicitly transmitted. The encoding order of the pallet run encoding for each segment is as follows.

[0125]

[0156] For each pixel, one context encoding bin run_copy_flag = 0 is transmitted, indicating whether the pixel is in the same mode as the previous pixel, i.e., if both the previously scanned pixel and the current pixel are of run type COPY_ABOVE, or if both the previously scanned pixel and the current pixel are of run type INDEX with the same index value. Otherwise, run_copy_flag = 1 is transmitted.

[0126]

[0157] If the pixel and the previous pixel are in different modes, one context encoding bin copy_above_palett_indices_flag is transmitted, indicating the run type of the pixel, i.e., INDEX or COPY_ABOVE. Since the INDEX mode is used by default, the decoder does not need to analyze the run type if the sample is in the first row (horizontal traversal scan) or the first column (vertical traversal scan). Also, if the previously analyzed run type is COPY_ABOVE, the decoder does not need to analyze the run type. After the palette run coding of the pixels within a segment, the index value (palette_idx_idc) in INDEX mode and the quantized escape color (palette_escape_val) are bypass-coded.

[0127]

[0158] <Improvement in Coding of Residuals and Coefficients>

[0128]

[0159] In VVC, when coding transform coefficients, a unified (same) Rice parameter (RicePara) derivation is used to transmit the syntax of abs_remainder and dec_abs_level. The only difference is that the base level is set to 4 and 0 respectively for the coding of abs_remainder and dec_abs_level. The Rice parameter is determined based on not only the sum of the absolute levels of five adjacent transform coefficients in the local template but also the corresponding base level as follows.

[0129]

[0160] RicePara = RiceParTable[max(min(31, sumAbs - 5 * baseLevel), 0)]

[0130]

[0161] In other words, the binary codewords of the syntax elements abs_remainder and dec_abs_level are adaptively determined according to the level information of adjacent coefficients. Since this determination of the codeword is performed for each sample, additional logic is required to handle this adaptation of the codeword for coefficient coding.

[0131]

[0162] Similarly, when coding a residual block under the transform skip mode, the binary codeword of the syntax element abs_remainder is adaptively determined according to the level information of adjacent residual samples.

[0132]

[0163] Furthermore, when encoding syntax elements related to residual coding or transform coefficient coding, the selection of the probability model depends on the level information of adjacent levels that requires additional logic and additional context models.

[0133]

[0164] In the current design, the binarization of escape samples is derived by invoking a third-order Exp-Golomb binarization process. There is still room for further improvement in its performance.

[0134]

[0165] In the current VVC, two different level mapping methods are available and are applied to normal transform and transform skip respectively. Each level mapping method is associated with different conditions, mapping functions, and mapping positions. For blocks where normal transform is applied, after the number of context coding bins (CCBs) exceeds the limit, the level mapping method is used. The mapping position indicated by ZeroPosf[n] and the mapping result indicated by AbsLevel[xC][yC] are derived as specified in Table 2. For blocks where transform skip is applied, another level mapping method is used before the number of context coding bins (CCBs) exceeds the limit. The mapping position indicated by predCoeff and the mapping result indicated by AbsLevel[xC][yC] are derived as specified in Table 5. Such a non-unified design may not be optimal from the perspective of standardization.

[0135]

[0166] For profiles with more than 10 bits in HEVC, the extended_precision_processing_flag equal to 1 specifies that the extended dynamic range is used for coefficient analysis and inverse transform processing. In the current VVC, the residual coding or transform skip coding of transform coefficients with more than 10 bits has been reported as a cause of significant performance degradation. There is still room for further improvement in its performance.

[0136]

[0167] <Proposed Method>

[0137]

[0168] In the present disclosure, several methods are proposed to address the problems described in the section on improving the coding of residuals and coefficients. It should be noted that the following methods can be applied independently or in combination.

[0138]

[0169] According to a first aspect of the present disclosure, it is proposed to use a fixed set of binary codewords for encoding a specific syntax element, such as abs_remainder, in residual coding. The binary codewords can be formed using various methods. Some exemplary methods are listed below.

[0139]

[0170] First, the same procedure for determining the codeword for abs_remainder as that used in the current VVC is employed, but a fixed Rice parameter (e.g., 1, 2, or 3) is always selected.

[0140]

[0171] Second, fixed-length binarization.

[0141]

[0172] Third, truncated Rice binarization.

[0142]

[0173] Fourth, truncated binary (TB) binarization process.

[0143]

[0174] Fifth, k-th order Exp-Golomb binarization process (EGk).

[0144]

[0175] Sixth, limited k-th order Exp-Golomb binarization.

[0145]

[0176] According to a second aspect of the present disclosure, in transform coefficient coding, it is proposed to use a fixed set of codewords for encoding a certain syntax element, such as abs_remainder and dec_abs_level. The binary codewords can be formed using various methods. Some exemplary methods are listed below.

[0146]

[0177] First, the same procedure as that used in the current VVC for determining the sign words of abs_remainder and dec_abs_level is used, but a fixed Rice parameter, for example, 1, 2, or 3, is used. As in the current VVC, the value of baseLevel can still be different for abs_remainder and dec_abs_level (for example, when encoding abs_remainder and dec_abs_level, baseLevel is set to 4 and 0 respectively).

[0147]

[0178] Second, the same procedure as that used in the current VVC for determining the sign words of abs_remainder and dec_abs_level is used, but a fixed Rice parameter, for example, 1, 2, or 3, is used. The values of baseLevels for abs_remainder and dec_abs_level are selected to be the same. For example, both use 0 or both use 4.

[0148]

[0179] Third, fixed-length binarization.

[0149]

[0180] Fourth, truncated Rice binarization.

[0150]

[0181] Fifth, the truncated binary (TB) binarization process.

[0151]

[0182] Sixth, the k-th Exp-Golomb binarization process (EGk).

[0152]

[0183] Seventh, the limited k-th Exp-Golomb binarization

[0153]

[0184] According to a third aspect of the present disclosure, it is proposed to use a single context for encoding syntax elements related to residual coding or coefficient coding (for example, abs_level_gtx_flag), and context selection based on adjacent decoded level information can be removed.

[0154]

[0185] According to a fourth aspect of the present disclosure, in residual coding, it is proposed to use a variable set of binary codewords to encode a specific syntax element, such as abs_remainder, and the selection of the set of binary codewords is based on specific coding information of the current block, such as TB / CB and / or slice, the prediction mode of the CU (e.g., IBC mode or intra or inter), and / or the quantization parameter (QP) associated with the slice type (e.g., I slice, P slice, or B slice). Various methods can be used to derive the variable set of binary codewords. Some exemplary methods are shown below.

[0155]

[0186] First, the same procedure as that used in the current VVC is used to determine the codeword for abs_remainder, but the Rice parameter is different.

[0156]

[0187] Second, the k-th order Exp-Golomb binary quantization process (EGk)

[0157]

[0188] Third, the limited k-th order Exp-Golomb binary quantization

[0158]

Table 6

[0159]

[0189] The same method described in the fourth aspect can also be applied to coding with high conversion efficiency. According to the fifth aspect of the present disclosure, in transform coefficient coding, it is proposed to use a variable set of binary codewords to encode specific syntax elements, such as abs_remainder and dec_abs_level. The selection of the set of binary codewords is determined according to specific coding information of the current block, such as TB / CB and / or slice, the prediction mode of the CU (e.g., IBC mode or intra or inter), and / or the quantization parameter (QP) associated with the slice type (e.g., I slice, P slice, or B slice). Here too, various methods are used to derive the variable set of binary codewords. Some exemplary methods are shown below.

[0160]

[0190] First, the same procedure as that used in the current VVC is used to determine the codeword for abs_remainder, but the Rice parameter is different.

[0161]

[0191] Second, the k-th Exp-Golomb binary quantization process (EGk).

[0162]

[0192] Third, limited k-th Exp-Golomb quantization.

[0163]

[0193] In these above methods, different sets of binary codewords can be derived using different Rice parameters. For a specific block of residual samples, the Rice parameter used is determined according to the CU QP shown as QP, rather than adjacent level information. A specific example is shown in Table 6. Here, TH1 to TH4 are predetermined thresholds satisfying (TH1 < TH2 < TH3 < TH4), and K0 to K4 are predetermined Rice parameters. In fact, it is worth noting that the same logic can be implemented in different ways. For example, the same Rice parameter can also be derived from the QP value of the current CU using a specific equation or look-up table, as shown in Table 6. CU ​

[0164]

[0194] According to a fifth aspect of the present disclosure, a set of parameters and / or thresholds related to sign word determination of syntax elements of transform coefficient coding and / or transform skip residual coding is transmitted in the bitstream. The determined sign word is used as a binary-coded word when encoding the syntax element through an entropy coder, such as arithmetic coding.

[0165]

[0195] Note that the set of parameters and / or thresholds can be a complete set or a subset of all parameters and thresholds related to sign word determination of syntax elements. The set of parameters and / or thresholds can be transmitted at various levels within the video bitstream. For example, it can be transmitted at the sequence level (e.g., sequence parameter set), picture level (e.g., picture parameter set and / or picture header), slice level (e.g., slice header), coding tree unit (CTU) level, or coding unit (CU) level.

[0166]

[0196] In one example, the Rice parameter used to determine the sign word for encoding the syntax of abs_remainder in transform skip residual coding is transmitted in the slice header, picture header, PPS, and / or SPS. The Rice parameter for transmission is used to determine the sign word for encoding the syntax abs_remainder when the CU is encoded in the transform skip mode and the CU is associated with the above-mentioned slice header, picture header, PPS, and / or SPS.

[0167]

[0197] According to a sixth aspect of the present disclosure, a set of parameters and / or thresholds related to the sign word determination shown in the first and second aspects is used for the syntax elements of transform coefficient coding and / or transform skip residual coding. Also, different sets can be used depending on whether the current block contains a luminance residual / coefficient or a chrominance residual / coefficient. The determined sign word is used as a binarized sign word when encoding the syntax elements through an entropy coder, for example, arithmetic coding.

[0168]

[0198] In one example, the sign word of abs_remainder associated with the transform residual coding currently used in VVC is used for both luminance blocks and chrominance blocks, but different fixed Rice parameters are used by the luminance block and the chrominance block respectively (for example, K1 for the luminance block and K2 for the chrominance block, where K1 and K2 are integers).

[0169]

[0199] According to a seventh aspect of the present disclosure, a set of parameters and / or thresholds related to the sign word determination of the syntax elements of transform coefficient coding and / or transform skip residual coding is transmitted in the bitstream. Also, different sets can be transmitted for the luminance block and the chrominance block. The determined sign word is used as a binarized sign word when encoding the syntax elements through an entropy coder, for example, arithmetic coding. The same method described in the above aspect can also be applied to the escape value coding in the palette mode, for example, palette_escape_val.

[0170]

[0200] According to an eighth aspect of the present disclosure, different k-th order Exp-Golomb binarization can be used to derive different sets of binary sign words for encoding escape values in the palette mode. In one example, for a given block of escape samples, the Exp-Golomb parameter used, that is, the value of k, is the QP CUIt is determined according to the QP value of the block shown as. The same example as shown in Table 6 can be used when deriving the value of parameter k based on a given QP value of the block. In this example, four different thresholds (TH1 to TH4) are listed, and based on these thresholds and QP CU five different k values (K0 to K4) are derived. It is worth noting that the number of thresholds is only for illustrative purposes. In practice, a different number of thresholds can be used to divide the entire QP value range into different numbers of QP value segments, and for each QP value segment, different k values can be used to derive the corresponding binary codeword for encoding the escape value of the block encoded in palette mode. It is also worth noting that the same logic can be implemented in different ways. For example, a specific equation or look-up table can be used to derive the same Rice parameter.

[0171]

[0201] According to a ninth aspect of the present disclosure, a set of parameters and / or thresholds related to the codeword determination of the syntax elements of the escape samples is transmitted in the bitstream. The determined codeword is used as a binary codeword when encoding the syntax elements of the escape samples through an entropy coder, such as arithmetic coding.

[0172]

[0202] Note that the set of parameters and / or thresholds can be the complete set or a subset of all parameters and thresholds related to the codeword determination of the syntax elements. The set of parameters and / or thresholds can be transmitted at various levels within the video bitstream. For example, it can be transmitted at the sequence level (e.g., sequence parameter set), picture level (e.g., picture parameter set and / or picture header), slice level (e.g., slice header), coding tree unit (CTU) level, or coding unit (CU) level.

[0173]

[0203] In one example according to this aspect, the k-th Exp-Golomb2 quantization is used to determine a codeword for encoding the syntax of palette_escape_val in palette mode, and the value of k is transmitted to the decoder in the bitstream. The value of k may be transmitted at different levels, for example, in a slice header, a picture header, a PPS, and / or an SPS. The transmitted Exp-Golomb parameter is used to determine a codeword for encoding the syntax palette_escape_val when the CU is encoded in palette mode and the CU is associated with the aforementioned slice header, picture header, PPS, and / or SPS.

[0174]

[0204] <Harmonization of Level Mapping between Transform Skip Mode and Normal Transform Mode>

[0175]

[0205] According to a tenth aspect of the present disclosure, the same conditions for applying level mapping are used for both the transform skip mode and the normal transform mode. In one example, it is proposed to apply level mapping after the number of context coding bins (CCBs) exceeds the limits of both the transform skip mode and the normal transform mode. In another example, it has been proposed to apply level mapping before the number of context coding bins (CCBs) exceeds the limits of both the transform skip mode and the normal transform mode.

[0176]

[0206] According to an eleventh aspect of the present disclosure, the same method for deriving the mapping position in level mapping is used for both the transform skip mode and the normal transform mode. In one example, it is proposed to apply the method for deriving the mapping position in the level mapping used in the transform skip mode to the normal transform mode as well. In another example, it has been proposed to apply the method for deriving the mapping position in the level mapping used in the normal transform mode to the transform skip mode as well.

[0177]

[0207] According to a twelfth aspect of the present disclosure, the same level mapping method is applied to both the conversion skip mode and the normal conversion mode. In one example, it is proposed to apply the level mapping function used in the conversion skip mode to the normal conversion mode as well. In another example, it is proposed to apply the level mapping function used in the normal conversion mode to the conversion skip mode as well.

[0178]

[0208] <Simplification of Rice parameter derivation in residual coding>

[0179]

[0209] According to a thirteenth aspect of the present disclosure, when encoding the syntax element of abs_remainder / dec_abs_level using the Golomb-Rice code, it is proposed to use simple logic such as shift operations and division operations instead of the lookup table for deriving the Rice parameter. According to the present disclosure, the lookup table specified in Table 4 may be deleted. In one example, the Rice parameter cRiceParam is derived as cRiceParam = (locSumAbs >> n), where n is a positive number, for example 3. In fact, it is worth noting that other different logics, such as division operations with values equal to the nth power of 2, can be used to achieve the same result. An example of the corresponding decoding process based on the VVC draft is shown below. Changes are indicated in bold and italic fonts, and the deleted content is indicated in strikethrough font.

[0180]

Table 7

[0181]

[0210] According to a fourteenth aspect of the present disclosure, it is proposed to use fewer adjacent positions for deriving the Rice parameter when encoding the syntax element of abs_remainder / dec_abs_level using the Golomb-Rice code. In one example, it is proposed to use only two adjacent positions for deriving the Rice parameter when encoding the syntax element of abs_remainder / dec_abs_level. The corresponding decoding process based on the VVC draft is shown below. Changes are in bold and italic fonts, and deleted content is shown in strike-through font.

[0182]

Table 8

[0183]

[0211] In another example, it is proposed to use only one adjacent position for deriving the Rice parameter when encoding the syntax element of abs_remainder / dec_abs_level. The corresponding decoding process based on the VVC draft is shown below. Changes are in bold and italic fonts, and deleted content is shown in strike-through font.

[0184]

Table 9

[0185]

[0212] According to a fifteenth aspect of the present disclosure, when encoding the syntax element of abs_remainder / dec_abs_level using the Golomb-Rice code, it is proposed to use different logic to adjust the value of locSumAbs based on the value of baseLevel in order to derive the Rice parameter. In one example, additional scale and offset operations are applied in the form of "(locSumAbs - baseLevel * 5) * alpha + beta". When the value of alpha is 1.5 and the value of beta is 1, the corresponding decoding process based on the VVC draft is shown as follows. Changes are in bold italic font, and the deleted content is shown in strikethrough font.

[0186]

Table 10

[0187]

[0213] According to a sixteenth aspect of the present disclosure, it is proposed to remove the clip operation for deriving the Rice parameter in the syntax element of abs_remainder / dec_abs_level when using the Golomb-Rice code. According to the current disclosure, an example of the decoding process of the VVC draft is shown as follows, with changes shown in bold and italic font and the deleted content shown in strikethrough font.

[0188]

Table 11

[0189]

[0214] According to the present disclosure, an example of the decoding process of the VVC draft is shown below, with changes shown in bold and italic font and the deleted content shown in strikethrough font.

[0190]

Table 12

[0191]

[0215] According to a seventeenth aspect of the present disclosure, it is proposed to change the initial value of locSumAbs from 0 to a non-zero integer for the derivation of the Rice parameter when encoding the syntax element of abs_remainder / dec_abs_level using the Golomb-Rice code. In one example, the initial value 1 is assigned to locSumAbs, and the corresponding decoding process based on the VVC draft is shown below. The changes are in bold italic font, and the deleted content is shown in strikethrough font.

[0192]

Table 13

[0193]

[0216] According to an eighteenth aspect of the present disclosure, it is proposed to use the maximum value instead of the sum value of adjacent position level values for the derivation of the Rice parameter when encoding the syntax element of abs_remainder / dec_abs_level using the Golomb-Rice code. An example of the corresponding decoding process based on the VVC draft is shown below. The changes are shown in bold and italic font, and the deleted content is shown in strikethrough font.

[0194]

Table 14

[0195]

[0217] According to a nineteenth aspect of the present disclosure, it is proposed to derive the Rice parameter based on the relative amplitude between each AbsLevel value at adjacent positions and the base level value when encoding the syntax element of abs_remainder / dec_abs_level using the Golomb-Rice code. In one example, the Rice parameter is derived based on how many of the AbsLevel values at adjacent positions are greater than the base level. An example of the corresponding decoding process based on the VVC draft is shown below. The changes are shown in bold and italic font, and the deleted content is shown in strikethrough font.

[0196]

Table 15

[0197]

[0218] In another example, the Rice parameter is derived based on the sum of (AbsLevel - baseLevel) values at adjacent positions where the AbsLevel value is greater than the base level. An example of the corresponding decoding process based on the VVC draft is shown below. Changes are shown in bold and italic fonts, and deleted content is shown in strike - through font.

[0198]

Table 16

[0199]

[0219] According to the present disclosure, an example of the decoding process of the VVC draft is shown below, where changes are shown in bold and italic fonts, and deleted content is shown in strike - through font.

[0200]

Table 17

[0201]

[0220] <Simplification of Level Mapping Position Derivation in Residual Coding>

[0202]

[0221] According to the 20th aspect of the present disclosure, it is proposed to remove QState from the derivation of ZeroPos[n] so that ZeroPos[n] is derived only from cRiceParam. An example of the corresponding decoding process based on the VVC draft is shown below. Changes are shown in bold and italic fonts, and deleted content is shown in strike - through font.

[0203]

Table 18

[0204]

[0222] According to the 21st aspect of the present disclosure, it is proposed to derive ZeroPos[n] based on the value of locSumAbs. An example of the corresponding decoding process based on the VVC draft is shown below. Changes are shown in bold and italic fonts, and the deleted content is shown in strikethrough font.

[0205]

Table 19

[0206]

[0223] According to the 22nd aspect of the present disclosure, it is proposed to derive ZeroPos[n] based on the values of AbsLevel at adjacent positions. In one example, ZeroPos[n] is derived based on the maximum value of AbsLevelf[xC + 1][yC] and AbsLevelf[xC][yC + 1]. An example of the corresponding decoding process based on the VVC draft is shown below. Changes are shown in bold and italic fonts, and the deleted content is shown in strikethrough font.

[0207]

Table 20

[0208]

[0224] According to the 23rd aspect of the present disclosure, it is proposed to derive both cRiceParam and ZeroPos[n] based on the maximum value of all AbsLevel values at adjacent positions. An example of the corresponding decoding process based on the VVC draft is shown below. Changes are shown in bold and italic fonts, and the deleted content is shown in strikethrough font.

[0209]

Table 21

[0210]

[0225] The same method described in the above aspect can also be applied to the derivation of predCoeff in the residual coding of the conversion skip mode. In one example, the variable predCoeff is derived as follows.

[0211]

[0226] predCoeff = Max(absLeftCoeff, absAboveCoeff) + 1

[0212]

[0227] <Residual coding of conversion coefficients>

[0213]

[0228] In the present disclosure, in order to address the problems pointed out in the "Improvement of Residual and Coefficient Coding" section, a method is provided to simplify and / or further improve the existing design of residual coding. Generally, the main features of the technology proposed in the present disclosure are summarized as follows.

[0214]

[0229] First, based on the current design, adjust the Rice parameter derivation used under normal residual coding.

[0215]

[0230] Second, change the binary method used under normal residual coding.

[0216]

[0231] Third, change the Rice parameter derivation used under normal residual coding.

[0217]

[0232] <Rice parameter derivation in residual coding based on the current design>

[0218]

[0233] According to a 24th aspect of the present disclosure, in residual coding, it is proposed to use a variable method of Rice parameter derivation to encode a specific syntax element, such as abs_remainder / dec_abs_level, and the selection is based on specific coding information of the current block, such as quantization parameters or coding bit depth associated with TB / CB and / or slice / profile, and / or a new flag associated with TB / CB / slice / picture / sequence level, such as extended_precision_processing_flag. Various methods can be used to derive the Rice parameter. Some exemplary methods are listed below.

[0219]

[0234] First, cRiceParam = (cRiceParam << a) + (cRiceParam >> b) + c, where a, b, and c are positive numbers, for example, {a, b, c} = {1, 1, 0}. It is worth noting that in practice, other different logics, such as multiplication operations with values equal to powers of 2, can be used to achieve the same result.

[0220]

[0235] Second, cRiceParam = (cRiceParam << a) + b, where a and b are positive numbers, for example, {a, b} = {1, 1}. It is worth noting that in practice, other different logics, such as multiplication operations with values equal to powers of 2, can be used to achieve the same result.

[0221]

[0236] Third, cRiceParam = (cRiceParam * a) + b, where a and b are positive numbers, for example, {a, b} = {1.5, 0}. It is worth noting that in practice, other different logics, such as multiplication operations with values equal to powers of 2, can be used to achieve the same result.

[0222]

[0237] An example of the corresponding decoding process based on the VVC draft is shown below. Changes are indicated in bold and italic fonts, and deleted content is indicated in strikethrough font. Changes to the VVC draft are indicated in bold and italic fonts in Table 22. It is worth noting that in practice, the same logic can be implemented in different ways. For example, specific equations or look-up tables can also be used to derive the same Rice parameter from the BitDepth value of the current CU / sequence.

[0223]

Table 22-1

Table 22-2

[0224]

[0238] In another example, when the BitDepth is greater than or equal to a predetermined threshold (e.g., 10, 11, 12, 13, 14, 15, or 16), the Rice parameter cRiceParam is derived as follows: cRiceParam = (cRiceParam << a)) + (cRiceParam >> b) + c, where a, b, and c are positive numbers, e.g., 1. The corresponding decoding process based on the VVC draft is shown below. Changes are indicated in bold and italic fonts, and deleted content is indicated in strikethrough font. Changes to the VVC draft are indicated in bold and italic fonts in Table 23. It is worth noting that in practice, the same logic can be implemented in different ways. For example, specific equations or look-up tables can also be used to derive the same Rice parameter from the BitDepth value of the current CU / sequence.

[0225]

Table 23-1

Table 23-2

[0226]

[0239] <Binarization method in residual coding for profiles exceeding 10 bits>

[0227]

[0240] According to the 25th aspect of the present disclosure, it is proposed to use a variable set of binary codewords to encode specific syntax elements, such as abs_remainder / dec_abs_level, in residual coding, and the selection is based on specific coding information of the current block, such as quantization parameters or coding bit depth associated with TB / CB and / or slice / profile, and / or a new flag associated with TB / CB / slice / picture / sequence level, such as extended_precision_processing_flag. Various methods can be used to derive the variable set of binary codewords. Some exemplary methods are shown below.

[0228]

[0241] First, the same procedure as that used in the current VVC for determining the codeword of abs_remainder is used, but a fixed Rice parameter (e.g., 2, 3, 4, 5, 6, 7, or 8) is always selected. The fixed value can be different under different conditions according to specific coding information of the current block, such as quantization parameters or coding bit depth associated with TB / CB and / or slice / profile, and / or syntax elements associated with TB / CB / slice / picture / sequence level, such as rice_parameter_value. A specific example is shown in Table 24. Here, TH1 to TH4 are predetermined thresholds satisfying (TH1 < TH2 < TH3 < TH4), and K0 to K4 are predetermined Rice parameters. It is worth noting that the same logic can be implemented in different ways. For example, a specific equation or look-up table can be used to derive the same Rice parameter from the BitDepth value of the current CU / sequence as shown in Table 24.

[0229]

[0242] Second, fixed-length binarization.

[0230]

[0243] Thirdly, truncating Rice binarization.

[0231]

[0244] Fourthly, truncating binary (TB) binarization process.

[0232]

[0245] Fifthly, k-th Exp-Golomb binarization process (EGk).

[0233]

[0246] Sixthly, limited k-th Exp-Golomb binarization

[0234]

Table 24

[0235]

[0247] In one example, when a new flag, for example extended_precision_processing_flag, is equal to 1, the Rice parameter cRiceParam is fixed to n. Here, n is a positive number (for example, 2, 3, 4, 5, 6, 7, or 8). The fixed value may vary depending on the conditions. An example of the corresponding decoding process based on the VVC draft is shown below. Changes are shown in bold and italic fonts, and the deleted content is shown in strikethrough font. Changes to the VVC draft are shown in bold and italic fonts in Table 25.

[0236]

Table 25

[0237]

[0248] In another example, when a new flag, for example, extended_precision_processing_flag is equal to 1, it is proposed to use only one fixed value for the Rice parameter when encoding the syntax elements of abs_remainder / dec_abs_level. The corresponding decoding process based on the VVC draft is shown below. Changes are in bold and italic font, and the deleted content is shown in strikethrough font. The changes to the VVC draft are shown in bold and italic font in Table 26.

[0238]

Table 26

[0239]

[0249] In yet another example, when BitDepth is greater than or equal to a predetermined threshold (e.g., 10, 11, 12, 13, 14, 15, or 16), the Rice parameter cRiceParam is fixed to n. Here, n is a positive number, for example, 4, 5, 6, 7, or 8. The fixed value may vary depending on the conditions. An example of the corresponding decoding process based on the VVC draft is shown below. Here, TH is the predetermined threshold (e.g., 10, 11, 12, 13, 14, 15, or 16). The changes to the VVC draft are shown in bold and italic in Table 27, the changes are shown in bold and italic, and the deleted content is shown in strikethrough.

[0240]

Table 27

[0241]

[0250] In yet another example, when the BitDepth is greater than a predetermined threshold (e.g., 10, 11, 12, 13, 14, 15, or 16), it is proposed to use only one fixed value for the Rice parameter when encoding the syntax element of abs_remainder / dec_abs_level. The corresponding decoding process based on the VVC draft is shown below, where TH is a predetermined threshold (e.g., 10, 11, 12, 13, 14, 15, or 16), the changes are shown in bold and italic fonts, and the deleted content is shown in strikethrough font. The changes to the VVC draft are shown in bold and italic fonts in Table 28.

[0242]

Table 28

[0243]

[0251] <Derivation of Rice Parameter in Residual Coding>

[0244]

[0252] According to the 26th aspect of the present disclosure, in residual coding, it is proposed to use a variable method for Rice parameter derivation to encode a specific syntax element, such as abs_remainder / dec_abs_level, and the selection is determined according to specific coding information of the current block, such as quantization parameters or coding bit depth associated with TB / CB and / or slice / profile, and / or a new flag associated with TB / CB / slice / picture / sequence level, such as the extended_precision_processing_flag. Various methods can be used to derive the Rice parameter. Some exemplary methods are shown below.

[0245]

[0253] First, it is proposed to derive the Rice parameter using a counter. The counter is determined according to the value of the encoded coefficient and specific encoded information of the current block, for example, the component ID. One specific example is riceParameter = counter / a. Here, a is a positive number (e.g., 4), and two counters (divided by luminance / chrominance difference) are maintained. These counters are reset to 0 at the start of each slice. When encoded, if this is the first coefficient encoded within a sub-TU, the counter is updated as follows. if(coeffValue >= (3 << rice)) counter++ if(((coeffValue << 1) < (1 << riceParameter)) && (counter > 0)) counter--;

[0246]

[0254] Second, it is proposed to add a shift operation in the derivation of the Rice parameter in VVC. The shift is determined according to the value of the encoded coefficient. An example of the corresponding decoding process based on the VVC draft is shown below. The shift is determined according to the counter of Method 1, and the changes are in bold and italic fonts, and the deleted content is in strike-through font. The changes to the VVC draft are shown in bold and italic fonts in Table 29.

[0247]

Table 29

[0248]

[0255] First, it is proposed to add a shift operation in the derivation of the Rice parameter in VVC. The shift is determined according to the coding bit depth related to specific coding information of the current block, such as TB / CB and / or slice profile (e.g., 14-bit profile or 16-bit profile). An example of the corresponding decoding process based on the VVC draft is shown below. The shift is determined according to the counter of Method 1, and the changes are shown in bold and italic fonts, and the deleted content is shown in strike-through font. The changes to the VVC draft are shown in bold and italic fonts in Table 30.

[0249]

Table 30

[0250]

[0256] <Residual coding for transform skip>

[0251]

[0257] According to the 27th aspect of the present disclosure, in the residual coding for transform skip, it is proposed to use a variable set of binary codewords to encode a specific syntax element, such as abs_remainder, and the selection is based on specific coding information of the current block, such as the quantization parameter or coding bit depth associated with TB / CB and / or slice / profile, and / or a new flag associated with TB / CB / slice / picture / sequence level, such as the extended_precision_processing_flag. Various methods can be used to derive the variable set of binary codewords. Some exemplary methods are shown below.

[0252]

[0258] First, the same procedure as that used in the current VVC for determining the sign word of abs_remainder is used, but a fixed Rice parameter (e.g., 2, 3, 4, 5, 6, 7, or 8) is always selected. The fixed value can be different under different conditions according to specific coding information of the current block, such as quantization parameter, frame type (e.g., I, P, or B), component ID (e.g., luminance or chrominance difference), color format (e.g., 420, 422, or 444), or coding bit depth associated with TB / CB and / or slice / profile, and / or according to syntax elements associated with TB / CB / slice / picture / sequence level, such as rice_parameter_value. Specific examples are shown in Table 7. Here, TH1 to TH4 are predetermined thresholds satisfying (TH1 < TH2 < TH3 < TH4), and K0 to K4 are predetermined Rice parameters. In fact, it is worth noting that the same logic can be implemented in different ways. For example, a specific equation or look-up table can be used to derive the same Rice parameter from the BitDepth value of the current CU / sequence as shown in Table 7.

[0253]

[0259] Second, fixed-length binarization.

[0254]

[0260] Third, truncated Rice binarization.

[0255]

[0261] Fourth, truncated binary (TB) binarization process.

[0256]

[0262] Fifth, the k-th Exp-Golomb binarization process (EGk).

[0257]

[0263] Sixth, limited k-th Exp-Golomb binarization

[0258]

[0264] An example of the corresponding decoding process based on the VVC draft is shown below. Changes to the VVC draft are shown in bold and italic fonts in Table 31, and the deleted content is shown in strike-through font. It is worth noting that in practice, the same logic can be implemented in different ways. For example, the same Rice parameter can also be derived using a specific equation or lookup table.

[0259]

Table 31

[0260]

[0265] In another example, it is proposed that when a new flag, for example, extended_precision_processing_flag is equal to 1, only one fixed value is used for the Rice parameter when encoding the syntax element of abs_remainder. The corresponding decoding process based on the VVC draft is shown below. The changes are shown in bold and italic fonts, and the deleted content is shown in strike-through font. The changes to the VVC draft are shown in bold and italic fonts in Table 32.

[0261]

Table 32

[0262]

[0266] In yet another example, when a new flag, for example, extended_precision_processing_flag is equal to 1, the Rice parameter cRiceParam is fixed to n. Here, n is a positive number (for example, 2, 3, 4, 5, 6, 7, or 8). The fixed value can vary depending on the conditions. An example of the corresponding decoding process based on the VVC draft is shown below. The changes are shown in bold and italic fonts, and the deleted content is shown in strike-through font. The changes to the VVC draft are shown in bold and italic fonts in Table 33.

[0263]

Table 33

[0264]

[0267] In yet another example, when the BitDepth is greater than or equal to a predetermined threshold (e.g., 10, 11, 12, 13, 14, 15, or 16), the Rice parameter cRiceParam is fixed to n. Here, n is a positive number, e.g., 4, 5, 6, 7, or 8. The fixed value may vary depending on the conditions. An example of the corresponding decoding process based on the VVC draft is shown below, where TH is a predetermined threshold (e.g., 10, 11, 12, 13, 14, 15, or 16), the changes are shown in bold and italic fonts, and the deleted content is shown in strikethrough font. The changes to the VVC draft are shown in bold and italic fonts in Table 34.

[0265]

Table 34

[0266]

[0268] In yet another example, one control flag is transmitted within the slice header to indicate whether the transmission of the Rice parameter of the conversion skip block is valid or not. When the control flag is transmitted as valid, one syntax element is further transmitted for each conversion skip slice to indicate the Rice parameter of that slice. When the control flag is transmitted as invalid (e.g., set to "0"), no further syntax elements are transmitted at a lower level to indicate the Rice parameter of the conversion skip slice, and a default Rice parameter (e.g., 1) is used for all conversion skip slices. An example of the corresponding decoding process based on the VVC draft is shown below. Here, TH is a predetermined value (e.g., 0, 1, 2), changes are shown in bold and italic fonts, and deleted content is shown in strikethrough font. Changes to the VVC draft are shown in bold and italic fonts in Table 35. It is worth noting that sh_ts_residual_coding_rice_index can be coded in various ways and / or can have a maximum value. For example, u(n), an unsigned integer using n bits for coding, or f(n), a fixed pattern bit string using n bits with the left bits written first (from left to right) can also be used for coding / decoding the same syntax element.

[0267]

[0269] <Syntax of slice header>

[0268]

Table 35

[0269]

[0270] sh_ts_residual_coding_rice_flag equal to 1 specifies that sh_ts_residual_coding_rice_index may exist in the current slice, and sh_ts_residual_coding_rice_flag equal to 0 specifies that sh_ts_residual_coding_rice_index does not exist in the current slice. If sh_ts_residual_coding_rice_flag does not exist, the value of sh_ts_residual_coding_rice_flag is assumed to be equal to 0. sh_ts_residual_coding_rice_index specifies the Rice parameter used in the residual_ts_coding() syntax structure.

[0270]

Table 36

[0271]

[0271] In yet another example, one control flag is transmitted within a sequence parameter set (or sequence parameter set range extension syntax), indicating whether the transmission of the Rice parameter for the conversion skip block is valid or invalid. When the control flag is transmitted as valid, one syntax element is further transmitted for each conversion skip slice to indicate the Rice parameter of that slice. When the control flag is transmitted as invalid (e.g., set to "0"), no further syntax elements are transmitted at a lower level to indicate the Rice parameter of the conversion skip slice, and a default Rice parameter (e.g., 1) is used for all conversion skip slices. An example of the corresponding decoding process based on the VVC draft is shown below. Here, TH is a predetermined value (e.g., 0, 1, 2). Changes to the VVC draft are shown in bold and italic font in Table 37, and the deleted content is shown in strikethrough font. It is worth noting that sh_ts_residual_coding_rice_idx can be coded in various ways and / or can have a maximum value. For example, u(n), an unsigned integer using n bits, or f(n), a fixed pattern bit string using n bits with the leftmost bit written first (from left to right), can also be used for the coding / decoding of the same syntax element.

[0272]

[0272] <Sequence Parameter Set RBSP Syntax>

[0273]

Table 37

[0274] The sps_ts_residual_coding_rice_present_in_sh_flag equal to 1 specifies that sh_ts_residual_coding_rice_idx may exist in the SH syntax structure referring to the SPS. The sps_ts_residual_coding_rice_present_in_sh_flag equal to 0 specifies that sh_ts_residual_coding_rice_idx does not exist in the SH syntax structure referring to the SPS. If the sps_ts_residual_coding_rice_present_in_sh_flag does not exist, the value of the sps_ts_residual_coding_rice_present_in_sh_flag is presumed to be equal to 0.

[0275]

[0274] <Slice Header Syntax>

[0276]

Table 38

[0277]

[0275] sh_ts_residual_coding_rice_idx specifies the Rice parameter used in the residual_ts_coding() syntax structure.

[0278]

Table 39

[0279]

[0276] In yet another example, one syntax element is transmitted for each transform skip slice to indicate the Rice parameter of that slice. An example of the corresponding decoding process based on the VVC draft is shown below. Changes to the VVC draft are indicated in Table 40 in bold and italic font. It is noteworthy that sh_ts_residual_coding_rice_idx can be coded in various ways and / or can have a maximum value. For example, u(n), an unsigned integer using n bits, or f(n), a fixed pattern bit string using n bits with the left bit written first (from left to right) can also be used for the coding / decoding of the same syntax element.

[0280]

[0277] <Syntax of slice header>

[0281]

Table 40

[0282]

[0278] sh_ts_residual_coding_rice_idx specifies the Rice parameter used in the residual_ts_coding() syntax structure. If sh_ts_residual_coding_rice_idx does not exist, the value of sh_ts_residual_coding_rice_idx is assumed to be equal to 0.

[0283]

Table 41

[0284]

[0279] In yet another example, one control flag is transmitted in the picture parameter set range extension syntax to indicate whether the transmission of the Rice parameter of the conversion skip block is effective or not. When the control flag is transmitted as effective, one syntax element is further transmitted to indicate the Rice parameter of that picture. When the control flag is transmitted as ineffective (e.g., set to "0"), no further syntax elements are transmitted at a lower level to indicate the Rice parameter of the conversion skip slice, and the default Rice parameter (e.g., 1) is used for all conversion skip slices. An example of the corresponding decoding process based on the VVC draft is shown below. Here, TH is a predetermined value (e.g., 0, 1, 2). Changes to the VVC draft are shown in Table 42 in bold and italic font. It is worth noting that pps_ts_residual_coding_rice_idx can be coded in various ways and / or can have a maximum value. For example, u(n), an unsigned integer using n bits, or f(n), a fixed pattern bit string using n bits with the left bit written first (from left to right), can also be used for the coding / decoding of the same syntax element.

[0285]

[0280] <Extension Syntax of Picture Parameter Set Range>

[0286]

Table 42

[0287] The pps_ts_residual_coding_rice_flag equal to 1 specifies that pps_ts_residual_coding_rice_index may exist in the current picture, and the pps_ts_residual_coding_rice_flag equal to 0 specifies that pps_ts_residual_coding_rice_idx does not exist in the current picture. If the pps_ts_residual_coding_rice_flag does not exist, the value of the pps_ts_residual_coding_rice_flag is assumed to be equal to 0.

[0288]

[0282] pps_ts_residual_coding_rice_idx specifies the Rice parameter used in the residual_ts_coding() syntax structure.

[0289]

Table 43

[0290]

[0283] In yet another example, it is proposed to use only variable Rice parameters for the coding of the syntax element abs_remainder. The value of the Rice parameter to be applied can be determined according to specific coding information of the current block, such as block size, quantization parameter, bit depth, transform type, etc. In one particular embodiment, it is proposed to adjust the Rice parameter based on the coding bit depth and the quantization parameter applied to one CU. The corresponding decoding process based on the VVC draft is shown below. The changes to the VVC draft are shown in bold and italic fonts in Table 44, and the deleted content is shown in strike-through font. It is worth noting that in practice, the same logic can be implemented in different ways. For example, the same Rice parameter can also be derived using a specific equation or a look-up table.

[0291]

Table 44-1

Table 44-2

Table 44-3

[0292]

[0284] In yet another example, the corresponding decoding process based on the VVC draft is shown as follows, where TH is a predetermined threshold (e.g., 33 or 34). Changes to the VVC draft are shown in bold and italic font in Table 45, and the deleted content is shown in strikethrough font. It is worth noting that in practice, the same logic can be implemented in different ways. For example, the same Rice parameter can also be derived using a specific equation or lookup table.

[0293]

Table 45

[0294]

[0285] In yet another example, the corresponding decoding process based on the VVC draft is shown as follows, TH A and TH B are predetermined thresholds (e.g., TH A = 8, TH B = 33 or 34). Changes to the VVC draft are shown in bold and italic font in Table 46, and the deleted content is shown in strikethrough font. It is worth noting that in practice, the same logic can be implemented in different ways. For example, the same Rice parameter can also be derived using a specific equation or lookup table.

[0295]

Table 46

[0296]

[0286] In yet another example, when a new flag, for example extended_precision_processing_flag, is equal to 1, it is proposed to use only the variable Rice parameter for the encoding of the syntax elements of abs_remainder. The varying value can be determined according to specific encoding information of the current block, for example, block size, quantization parameter, bit depth, transform type, etc. In one particular embodiment, it is proposed to adjust the Rice parameter based on the encoded bit depth and the quantization parameter applied to one CU. The corresponding decoding process based on the VVC draft is shown below. The changes to the VVC draft are shown in bold and italic font in Table 47. In practice, it is worth noting that the same logic can be implemented in different ways. For example, the same Rice parameter can also be derived using a specific equation or a look-up table.

[0297]

Table 47-1

Table 47-2

[0298]

[0287] In yet another example, the corresponding decoding process based on the VVC draft is shown as follows, where TH is a predetermined threshold (for example, 18, 19). The changes to the VVC draft are shown in bold and italic font in Table 48. In practice, it is worth noting that the same logic can be implemented in different ways. For example, the same Rice parameter can also be derived using a specific equation or a look-up table.

[0299]

Table 48

[0300]

[0288] In yet another example, the corresponding decoding process based on the VVC draft is shown as follows, TH A and TH B are predetermined thresholds (e.g., TH A = 8, TH B = 18 or 19). The changes to the VVC draft are shown in bold and italic font in Table 49. It is worth noting that in practice, the same logic can be implemented in different ways. For example, the same Rice parameter can also be derived using a specific equation or a look-up table.

[0301]

Table 49

[0302]

[0289] FIG. 16 shows a method of video encoding. This method can be applied to, for example, an encoder.

[0303]

[0290] In step 1610, the encoder can receive a video input. For example, the video input can be a live stream.

[0304]

[0291] In step 1612, the encoder can obtain a quantization parameter based on the video input. The quantization parameter can be calculated, for example, by a quantization unit within the encoder.

[0305]

[0292] In step 1614, the encoder can derive a Rice parameter based on at least one predetermined threshold, an encoding bit depth, and a quantization parameter. For example, the Rice parameter is used to transmit the syntax of abs_remainder and dec_abs_level.

[0306]

[0293] In step 1616, the encoder can entropy encode the video bitstream based on the Rice parameter. For example, the video bitstream may be entropy encoded to generate a compressed video bitstream.

[0307]

[0294] In yet another example, when BitDepth is greater than 10, it has been proposed to use only fixed values (e.g., 2, 3, 4, 5, 6, 7, or 8) for the Rice parameter when encoding the syntax elements of abs_remainder. The fixed values may vary under different conditions according to specific encoding information of the current block, such as the quantization parameter. The corresponding decoding process based on the VVC draft is shown as follows. Here, TH is a predetermined threshold (e.g., 18, 19). The changes to the VVC draft are shown in bold and italic fonts in Table 50. It is worth noting that in practice, the same logic can be implemented in different ways. For example, the same Rice parameter can also be derived using a specific equation or a lookup table.

[0308]

Table 50

[0309]

[0295] In yet another example, the corresponding decoding process based on the VVC draft is shown as follows, where TH A and TH B are predetermined thresholds (e.g., TH A = 8, TH B = 18 or 19). The changes to the VVC draft are shown in bold and italic fonts in Table 51. It is worth noting that in practice, the same logic can be implemented in different ways. For example, the same Rice parameter can also be derived using a specific equation or a lookup table.

[0310]

Table 51

[0311]

[0296] In yet another example, the corresponding decoding process based on the VVC draft is shown as follows, where TH is a predetermined threshold (e.g., 33 or 34). The changes to the VVC draft are shown in bold and italic font in Table 52. It is worth noting that in practice, the same logic can be implemented in different ways. For example, the same Rice parameter can also be derived using a specific equation or a lookup table.

[0312]

Table 52

[0313]

[0297] In yet another example, the corresponding decoding process based on the VVC draft is shown as follows, TH A and TH B are predetermined thresholds (e.g., TH A = 8, TH B = 33 or 34). The changes to the VVC draft are shown in bold and italic font in Table 53. It is worth noting that in practice, the same logic can be implemented in different ways. For example, the same Rice parameter can also be derived using a specific equation or a lookup table.

[0314]

Table 53

[0315]

[0298] In the above figure, it is worth mentioning that the equations used to calculate specific Rice parameters are only used as examples to explain the proposed idea. For those skilled in modern video coding technology, other mapping functions (or equivalent mapping equations) can already be applied to the proposed idea, that is, to determine the Rice parameters of the transform skip mode based on the coded bits and the applied quantization parameters. On the other hand, in the current VVC design, it is also necessary to mention that the value of the applied quantization parameter can be changed at the coded block group level. Therefore, the proposed Rice parameter adjustment method can provide flexible adaptation of the Rice parameters of the transform skip mode at the coded block group level.

[0316]

[0299] <Transmission Information for Regular Residual Coding and Transform Skip Residual Coding>

[0317]

[0300] According to the 28th aspect of the present disclosure, in regular residual coding, it is proposed to transmit the Rice parameter of the binary codeword to encode the shift parameter and the offset parameter for deriving the Rice parameter used for a specific syntax element, for example, abs_remainder and abs_remainder / dec_abs_level of transform skip residual coding, and to determine whether to transmit according to the quantization parameter or the coded bit depth associated with the specific coding information of the current block, for example, TB / CB and / or slice / profile, and / or according to a new flag associated with the TB / CB / slice / picture / sequence level, for example, sps_residual_coding_info_present_in_sh_flag.

[0318]

[0301] In one example, one control flag is transmitted in a slice header to indicate whether the transmission of the Rice parameters of the transform skip blocks and the transmission of the shift parameter and / or offset parameter for deriving the Rice parameters of the transform blocks are valid or not. When the control flag is transmitted as being valid, one syntax element is further transmitted for each transform skip slice to indicate the Rice parameter of that slice, and two syntax elements are further transmitted for each transform slice to indicate the shift parameter and / or offset parameter for deriving the Rice parameter of that slice. When the control flag is transmitted as being invalid (e.g., set to "0"), no further syntax elements are transmitted at a lower level to indicate the Rice parameter of the transform skip slice, a default Rice parameter (e.g., 1) is used for all transform skip slices, no further syntax elements are signaled at a lower level to indicate the shift parameter and offset parameter for deriving the Rice parameter of the transform slice, and default shift parameters and / or offset parameters (e.g., 0) are used for all transform slices. An example of the corresponding decoding process based on the VVC draft is shown below. Here, TH is a predetermined value (e.g., 0, 1, 2). The changes to the VVC draft are indicated in Table 54 in bold and italic font. It is noteworthy that sh_residual_coding_rice_shift, sh_residual_coding_rice_offset, and sh_ts_residual_coding_rice_index can be coded in different ways and / or can have maximum values. For example, u(n), an unsigned integer using n bits, or f(n), a fixed pattern bit string using n bits with the left bits written first (from left to right) can also be used to code / decipher the same syntax element.

[0319]

[0302] FIG. 17 shows a method of video decoding. This method can be applied, for example, to an encoder.

[0320]

[0303] In step 1710, the encoder can receive a video input.

[0321]

[0304] In step 1712, the encoder can transmit a Rice parameter of a binary codeword for encoding a syntax element. The encoded syntax element may include the abs_remainder of the transform skip residual coding.

[0322]

[0305] In step 1714, the encoder can entropy-encode a video bitstream based on the Rice parameter and the video input.

[0323]

[0306] <Syntax of slice header>

[0324]

Table 54

[0325]

[0307] sh_residual_coding_rice_flag equal to 1 specifies that sh_residual_coding_rice_shift, sh_residual_coding_rice_offset, and sh_residual_coding_rice_index may exist in the current slice, and sh_residual_coding_rice_flag equal to 0 specifies that sh_residual_coding_rice_shift, sh_residual_coding_rice_offset, and sh_residual_coding_rice_index do not exist in the current slice.

[0326]

[0308] sh_residual_coding_rice_shift specifies the shift parameter used in the Rice parameter derivation process for abs_remainder[] and dec_abs_level[]. If sh_residual_coding_rice_shift does not exist, the value of sh_residual_coding_rice_shift is assumed to be equal to 0.

[0327]

[0309] sh_residual_coding_rice_offset specifies the offset parameter used in the Rice parameter derivation process for abs_remainder[] and dec_abs_level[]. If sh_residual_coding_rice_offset does not exist, the value of sh_residual_coding_rice_offset is assumed to be equal to 0.

[0328]

[0310] sh_ts_residual_coding_rice_index specifies the Rice parameter used in the residual_ts_coding() syntax structure. If sh_ts_residual_coding_rice_index does not exist, the value of sh_ts_residual_coding_rice_index is assumed to be equal to 0.

[0329]

Table 55

[0330]

Table 56

[0331]

[0311] In another example, one control flag is transmitted in the sequence parameter set (or the extended syntax of the sequence parameter set range), indicating whether the transmission of the Rice parameter of the transform skip block and the transmission of the shift parameter and / or offset parameter for deriving the Rice parameter within the transform block are valid or not. When the control flag is transmitted as being valid, one syntax element is further transmitted for each transform skip slice to indicate the Rice parameter of that slice, and two syntax elements are further transmitted for each transform slice to indicate the shift parameter and / or offset parameter for deriving the Rice parameter of that slice. When the control flag is transmitted as being invalid (e.g., set to "0"), no further syntax elements are transmitted at a lower level to indicate the Rice parameter of the transform skip slice, the default Rice parameter (e.g., 1) is used for all transform skip slices, no further syntax elements are signaled at a lower level to indicate the shift parameter and / or offset parameter for deriving the Rice parameter of the transform slice, and the default shift parameter and / or offset parameter (e.g., 0) is used for all transform slices. An example of the corresponding decoding process based on the VVC draft is shown below. Here, TH is a predetermined value (e.g., 0, 1, 2). Changes to the VVC draft are shown in bold and italic font in Table 57. It is worthy of note that sh_residual_coding_rice_shift, sh_residual_coding_rice_offset, and sh_ts_residual_coding_rice_idx can be encoded in different ways and / or can have maximum values. For example, u(n), an unsigned integer using n bits, or f(n), a fixed pattern bit string using n bits with the left bits written first (from left to right) can also be used for encoding / decoding the same syntax element.

[0332]

[0312] <Sequence Parameter Set RBSP Syntax>

[0333]

Table 57

[0334]

[0313] The sps_residual_coding_info_present_in_sh_flag equal to 1 specifies that sh_residual_coding_rice_shift, sh_residual_coding_rice_offset, and sh_ts_residual_coding_rice_idx may exist in the SH syntax structure referring to the SPS, and the sps_residual_coding_info_present_in_sh_flag equal to 0 specifies that sh_residual_coding_rice_shift, sh_residual_coding_rice_offset, and sh_ts_residual_coding_rice_idx do not exist in the SH syntax structure referring to the SPS. If the sps_residual_coding_info_present_in_sh_flag does not exist, the value of the sps_residual_coding_info_present_in_sh_flag is presumed to be equal to 0.

[0335]

[0314] <Syntax of the slice header>

[0336]

Table 58

[0337]

[0315] sh_residual_coding_rice_shift specifies the shift parameter used in the Rice parameter derivation process of abs_readinder[] and dec_abs_level[]. If the sh_residual_coding_rice_shift does not exist, the value of the sh_residual_coding_rice_shift is presumed to be equal to 0.

[0338]

[0316] sh_residual_coding_rice_offset specifies the offset parameter used in the Rice parameter derivation process for abs_remainder[] and dec_abs_level[]. If sh_residual_coding_rice_offset does not exist, the value of sh_residual_coding_rice_offset is assumed to be equal to 0.

[0339]

[0317] sh_ts_residual_coding_rice_idx specifies the Rice parameter used in the residual_ts_coding() syntax structure. If sh_ts_residual_coding_rice_index does not exist, the value of sh_ts_residual_coding_rice_index is assumed to be equal to 0.

[0340]

Table 59

[0341]

Table 60

[0342]

[0318] In yet another example, one syntax element is transmitted for each transform skip slice to indicate the Rice parameter of that slice, and two syntax elements are transmitted for each transform skip slice to indicate the shift parameter and / or offset parameter for deriving the Rice parameter of that slice. An example of the corresponding decoding process based on the VVC draft is shown below. Changes to the VVC draft are shown in Table 61 in bold and italic font. It is noted that sh_residual_coding_rice_shift, sh_residual_coding_rice_offset, and sh_ts_residual_coding_rice_idx can be coded in different ways and / or can have maximum values. For example, u(n), an unsigned integer using n bits, or f(n), a fixed pattern bit string using n bits with the left bits written first (from left to right) can also be used for coding / decoding of the same syntax element.

[0343]

[0319] <Syntax of slice header>

[0344]

Table 61

[0345]

[0320] sh_ts_residual_coding_rice_idx specifies the Rice parameter used in the residual_ts_coding() syntax structure. If sh_ts_residual_coding_rice_idx does not exist, the value of sh_ts_residual_coding_rice_idx is assumed to be equal to 0.

[0346]

[0321] sh_residual_coding_rice_offset specifies the offset parameter used in the Rice parameter derivation process for abs_remainder[] and dec_abs_level[]. If sh_residual_coding_rice_offset does not exist, the value of sh_residual_coding_rice_offset is assumed to be equal to 0.

[0347]

[0322] sh_ts_residual_coding_rice_idx specifies the Rice parameter used in the residual_ts_coding() syntax structure. If sh_ts_residual_coding_rice_index does not exist, the value of sh_ts_residual_coding_rice_index is assumed to be equal to 0.

[0348]

Table 62

[0349]

Table 63

[0350]

[0323] In yet another example, one control flag is transmitted in the extended syntax of the picture parameter set range, indicating whether the transmission of the Rice parameter of the transform skip block and the transmission of the shift parameter and / or offset parameter for deriving the Rice parameter within the transform block are effective or not. When the control flag is transmitted as being effective, one syntax element is further transmitted to indicate the Rice parameter for the transform skip residual coding of that picture, and two syntax elements are further transmitted for the normal residual coding to indicate the shift parameter and / or offset parameter for deriving the Rice parameter of that picture. When the control flag is transmitted as being invalid (e.g., set to "0"), no further syntax elements are transmitted at a lower level to indicate the Rice parameter of the transform skip residual coding, a default Rice parameter (e.g., 1) is used for all transform skip residual codings, no further syntax elements are transmitted at a lower level to indicate the shift parameter and / or offset parameter for deriving the Rice parameter of the normal residual coding, and default shift parameter and / or offset parameter (e.g., 0) are used for all normal residual codings. An example of the corresponding decoding process based on the VVC draft is shown below. Here, TH is a predetermined value (e.g., 0, 1, 2). Changes to the VVC draft are shown in Table 64 in bold and italic font. It is worth noting that pps_residual_coding_rice_shift, pps_residual_coding_rice_offset, and pps_ts_residual_coding_rice_idx can be coded in different ways and / or can have maximum values. For example, u(n), an unsigned integer using n bits, or f(n), a bit string of a fixed pattern written in order from the left bit (left to right) using n bits, can also be used to encode / decode the same syntax element.

[0351]

[0324] <Syntax for Extending Picture Parameter Set Range>

[0352]

Table 64

[0353]

[0325] The pps_residual_coding_info_flag equal to 1 specifies that pps_residual_coding_rice_shift, pps_residual_coding_rice_offset, and pps_ts_residual_coding_rice_index may exist in the current picture, and the pps_residual_coding_info_flag equal to 0 specifies that pps_residual_coding_rice_shift, pps_residual_coding_rice_offset, and pps_ts_residual_coding_rice_idx do not exist in the current picture. If the pps_residual_coding_info_flag does not exist, the value of the pps_residual_coding_info_flag is assumed to be 0.

[0354]

[0326] The pps_residual_coding_rice_shift specifies the shift parameter used in the Rice parameter derivation process for abs_remainder[] and dec_abs_level[]. If the pps_residual_coding_rice_shift does not exist, the value of the pps_residual_coding_rice_shift is assumed to be 0.

[0355]

[0327] pps_residual_coding_rice_offset specifies the offset parameter used in the Rice parameter derivation process for abs_remainder[] and dec_abs_level[]. If pps_residual_coding_rice_offset does not exist, the value of pps_residual_coding_rice_offset is assumed to be equal to 0.

[0356]

[0328] pps_ts_residual_coding_rice_idx specifies the Rice parameter used in the residual_ts_coding() syntax structure. If pps_ts_residual_coding_rice_index does not exist, the value of pps_ts_residual_coding_rice_index is assumed to be equal to 0.

[0357]

Table 65

[0358]

Table 66

[0359]

[0329] According to a 29th aspect of the present disclosure, in normal residual coding, different Rice parameters are used to encode shift parameters and offset parameters for deriving Rice parameters used for specific syntax elements, for example, abs_remainder and abs_remainder / dec_abs_level of transform skip residual coding, and it is proposed to determine which one to use according to specific coding information of the current block, for example, quantization parameters or coding bit depth associated with TB / CB and / or slice / profile, and / or according to a new flag associated with TB / CB / slice / picture / sequence level, for example, sps_residual_coding_info_present_in_sh_flag.

[0360]

[0330] In one example, one control flag is transmitted in the slice header, indicating whether the process of deriving the Rice parameter of the transform skip block and the process of deriving the shift parameter and / or offset parameter of the Rice parameter of the transform block are valid. When the control flag is transmitted as valid, the Rice parameter may be different under different conditions according to specific coding information of the current block, for example, quantization parameters and bit depth. And the shift parameter and / or offset parameter for Rice parameter derivation in normal residual coding may be different under different conditions according to specific coding information of the current block, for example, quantization parameters and bit depth. When the control flag is transmitted as invalid (for example, set to "0"), a default Rice parameter (for example, 1) is used for all transform skip slices, and default shift parameters and / or offset parameters (for example, 0) are used for all transform slices. An example of the corresponding decoding process based on the VVC draft is shown below. Here, TH A and TH B are predetermined thresholds (for example, TH A =8, TH B= 18 or 19). Changes to the VVC draft are shown in Table 67 in bold and italic font. It is worth noting that in fact, the same logic can be implemented in different ways. For example, the same Rice parameter can also be derived using a specific equation or look-up table.

[0361]

[0331] <Slice header syntax>

[0362]

Table 67

[0363]

[0332] sh_residual_coding_rice_flag equal to 1 specifies that the Rice parameter derivation process depending on the bit depth is used in the current slice, and sh_residual_coding_rice_flag equal to 0 specifies that the Rice parameter derivation process depending on the bit depth is not used in the current slice.

[0364]

Table 68

[0365]

Table 69-1

Table 69-2

[0366]

[0333] In yet another example, the corresponding decoding process based on the VVC draft is shown as follows. Here, TH is a predetermined threshold (e.g., 18, 19). Changes to the VVC draft are shown in bold and italic font in Table 70. It is worth noting that in practice, the same logic can be implemented in different ways. For example, the same Rice parameter can also be derived using a specific equation or a lookup table.

[0367]

Table 70-1

Table 70-2

[0368]

[0334] According to another aspect of the present disclosure, it is proposed to add a constraint that sets a flag for the values of these above-mentioned coding tools to provide the same general constraint control as others in the general constraint information.

[0369]

[0335] For example, sps_ts_residual_coding_rice_present_in_sh_flag equal to 1 specifies that sh_ts_residual_coding_rice_idx may exist in the SH syntax structure referring to the SPS. sps_ts_residual_coding_rice_present_in_sh_flag equal to 0 specifies that sh_ts_residual_coding_rice_idx does not exist in the SH syntax structure referring to the SPS. According to this disclosure, it is proposed to add a syntax element gci_no_ts_residual_coding_rice_constraint_flag to the general constraint information syntax to provide the same general constraint control as other flags. An example of the decoding process of the VVC draft is shown below. Changes to the VVC draft are highlighted. The added part is highlighted in italics.

[0370]

Table 71

[0371]

[0336] FIG. 19 shows a method for video coding according to an example of the present disclosure. This method can be applied to, for example, a decoder. In step 1902, the decoder can receive a SPS residual coding flag indicating whether an index sh_ts_residual_coding_rice_idx exists in the SH syntax structure that refers to the sequence parameter set (SPS).

[0372]

[0337] In step 1904, in response to a determination that the value of the SPS residual coding flag is equal to 1, the decoder can determine that sh_ts_residual_coding_rice_idx exists in the slice head (SH) syntax structure that refers to the SPS.

[0373]

[0338] In step 1906, in response to a determination that the value of the residual coding flag is equal to 0, the decoder can determine that sh_ts_residual_coding_rice_idx does not exist in the SH syntax structure that refers to the SPS.

[0374]

[0339] In another example, when pps_ts_residual_coding_rice_flag is equal to 1, it is specified that pps_ts_residual_coding_rice_index may exist in the current picture, and when pps_ts_residual_coding_rice_flag is equal to 0, it is specified that pps_ts_residual_coding_rice_idx does not exist in the current picture. According to this disclosure, in order to provide the same general constraint control as other flags, it has been proposed to add the syntax element gci_no_ts_residual_coding_rice_constraint_flag to the general constraint information syntax. An example of the decoding process of the VVC draft is shown below. Changes to the VVC draft are highlighted. The added parts are highlighted in italics.

[0375]

Table 72

[0376]

[0340] In yet another example, sps_rice_adaptation_enabled_flag equal to 1 indicates that the Rice parameters for the binarization of abs_remaining[ ] and dec_abs_level can be derived by an expression.

[0377]

[0341] The expression may include RiceParam = RiceParam + shiftVal and shiftVal = (localSumAbs < Tx[0])? Rx[0] : ((localSumAbs < Tx[1])? Rx[1] : ((localSumAbs < Tx[2])? Rx[2] : ((localSumAbs < Tx[3])? Rx[3] : Rx[4]))), and the lists Tx[ ] and Rx[ ] are specified as follows: Tx[ ] = {32, 128, 512, 2048}>>(1523) Rx[ ] = {0, 2, 4, 6, 8}

[0378] [

[0342] ]Figure 20 shows a method for video coding according to an example of the present disclosure. This method can be applied to, for example, a decoder. In step 2002, the decoder can receive a sequence parameter set (SPS) adaptable flag indicating whether alternative Rice parameter derivation for binarization of syntax abs_remaining and dec_abs_level is used.

[0379] [

[0343] ]In step 2004, in response to a determination that the value of the SPS adaptable flag is equal to 1, the decoder can determine that alternative Rice parameter derivation for binarization of syntax is used.

[0380] [

[0344] ]In step 2006, in response to a determination that the value of the SPS adaptable flag is equal to 0, the decoder can determine that alternative Rice parameter derivation for binarization of syntax is not used.

[0381] [

[0345] ]According to the present disclosure, in order to provide the same general constraint control as other flags, it is proposed to add a syntax element gci_no_rice_adaptation_constraint_flag to the general constraint information syntax. An example of the decoding process of the VVC draft is shown below. Changes to the VVC draft are highlighted. The added parts are highlighted in italics.

[0382] [[Table 73]]

[0383] [

[0346] ]Figure 21 shows a method for video coding according to an example of the present disclosure. This method can be applied to, for example, a decoder. In step 2102, the decoder can receive a residual coding Rice constraint flag to provide general constraint control for other flags.

[0384]

[0347] In step 2104, in response to determining that the value of the residual coding Rice constraint flag is equal to 1, the decoder can determine that the values of the other flags are equal to 0.

[0385]

[0348] Since the proposed Rice parameter adaptation method is only used for transform skip residual coding (TSRC), the proposed method can be effective only when TSRC is enabled. Similarly, in one or more embodiments of the present disclosure, when the transform skip mode is disabled from a general constraint information level, for example, when the value of gci_no_transform_skip_constraint_flag is set to 1, it is proposed to add one bti stream constraint that requires the value of gci_no_rice_adaptation_constraint_flag to be 1.

[0386]

[0349] The above method can be implemented using an apparatus including one or more circuits, which includes application specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), field programmable gate arrays (FPGAs), controllers, microcontrollers, microprocessors, or other electronic components. This apparatus can use the circuit in combination with other hardware or software components to perform the above method. Each module, sub-module, unit, or sub-unit disclosed above can be at least partially implemented using one or more circuits.

[0387]

[0350] Other examples of the present disclosure will be apparent to those skilled in the art in view of the specification and implementation of the present disclosure disclosed herein. This application is intended to cover any variations, uses, or adaptations of the present disclosure, including such departures from the present disclosure as come within known or customary practice in the art to which the present disclosure pertains, and which fall within the general principles thereof. The specification and examples are intended to be considered as illustrative only.

[0388] It should be understood that the present disclosure is not limited to the exact examples described above and shown in the accompanying drawings, and various modifications and changes can be made without departing from the scope of the present disclosure.

[0389]

[0351] FIG. 18 shows a computing environment 1810 coupled to a user interface 1860. The computing environment 1810 can be part of a data processing server. The computing environment 1810 includes a processor 1820, a memory 1840, and an I / O interface 1850.

[0390]

[0352] The processor 1820 generally controls the overall operation of the computing environment 1810, such as operations related to display, data acquisition, data communication, and image processing. The processor 1820 can include one or more processors that execute instructions for performing all or part of the steps in the methods described above. Further, the processor 1820 can include one or more modules that facilitate the interaction between the processor 1820 and other components. The processor can be a central processing unit (CPU), a microprocessor, a single-chip machine, a GPU, or the like.

[0391]

[0353] Memory 1840 is configured to store various types of data to support the operation of computing environment 1810. Memory 1840 may include predetermined software 1842. Examples of such data include instructions for any application or method operating on computing environment 1810, video data sets, image data, and the like. Memory 1840 can be implemented by using any type of volatile or non-volatile memory device such as static random access memory (SRAM), electrically erasable programmable read-only memory (EEPROM), erasable programmable read-only memory (EPROM), programmable read-only memory (PROM), read-only memory (ROM), magnetic memory, flash memory, magnetic disk, or optical disk, or a combination thereof.

[0392]

[0354] I / O interface 1850 provides an interface between processor 1820 and peripheral interface modules such as a keyboard, click wheel, buttons, etc. Buttons include, but are not limited to, a home button, a scan start button, and a scan stop button. I / O interface 1850 can be coupled to an encoder and a decoder.

[0393]

[0355] In some embodiments, there is also provided a non-transitory computer-readable storage medium including a plurality of programs such as those included in memory 1840 that are executable by processor 1820 within computing environment 1810 for performing the above-described method. For example, the non-transitory computer-readable storage medium may be ROM, RAM, CD-ROM, magnetic tape, floppy disk, optical data storage device, or the like.

[0394]

[0356] The non-transitory computer-readable storage medium stores a plurality of programs executable by a computing device having one or more processors, and when the plurality of programs are executed by the one or more processors, the computing device is caused to execute the above-described motion prediction method.

[0395]

[0357] In some embodiments, the computing environment 1810 may be implemented using one or more application specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), field programmable gate arrays (FPGAs), graphics processing units (GPUs), controllers, microcontrollers, microprocessors, or other electronic components to execute the above method.

[0396]

[0358] The description of the present disclosure has been presented for purposes of illustration and is not intended to be exhaustive or limited to the present disclosure. Many modifications, variations, and alternative implementations will be apparent to those skilled in the art who benefit from the teachings presented in the foregoing description and related drawings.

[0397]

[0359] The examples are selected and described to explain the principles of the present disclosure and to enable others skilled in the art to understand the present disclosure with respect to various implementations. The basic principles and various implementations are modified as appropriate for the intended particular application to maximize their utilization. Therefore, it should be understood that the scope of the present disclosure is not limited to the specific examples of the disclosed implementations, and that modifications and other implementations are intended to be included within the scope of the present disclosure.

Claims

1. A method for video coding, comprising: receiving, by a decoder, an SPS residual coding flag indicating whether a syntax element used for a syntax structure of transform skip residual coding exists in a slice header (SH) syntax structure that refers to a sequence parameter set (SPS); determining, in response to a determination that the value of the SPS residual coding flag is equal to 1, that the syntax element exists in the SH syntax structure that refers to the SPS; determining, in response to a determination that the value of the SPS residual coding flag is equal to 0, that the syntax element does not exist in the SH syntax structure that refers to the SPS; when the syntax element does not exist, estimating that the value of the syntax element is equal to 0 A method comprising the steps of.

2. receiving, by the decoder, a picture parameter set (PPS) residual coding Rice flag indicating whether an index pps_ts_residual_coding_rice_index exists in a current picture of the video; determining, in response to a determination that the value of the PPS residual coding Rice flag is equal to 1, that the pps_ts_residual_coding_rice_index exists in the current picture; determining, in response to a determination that the value of the PPS residual coding flag is equal to 0, that the pps_ts_residual_coding_rice_index does not exist in the current picture The method for video coding according to claim 1, further comprising the steps of.

3. The method for video coding according to claim 1, further comprising the step of setting the value of a transform skip residual coding Rice constraint flag to be equal to 1 when the value of the SPS residual coding flag is equal to 0.

4. An apparatus for video coding, comprising: one or more processors; and a memory configured to store instructions executable by the one or more processors, wherein the one or more processors are configured to execute the method according to any one of claims 1 to 3 when the instructions are executed.

5. A non-transitory computer-readable storage medium for video coding storing computer-executable instructions, wherein when the computer-executable instructions are executed by one or more computer processors, the one or more computer processors are caused to execute the method according to any one of claims 1 to 3 to process a video bitstream and store the processed video bitstream in the non-transitory computer-readable storage medium. A non-transitory computer-readable storage medium for video coding.

6. A computer program including instructions for execution by a computing device having one or more processors, wherein when the instructions are executed by the one or more processors, the computing device is caused to execute the method according to any one of claims 1 to 3. A computer program.