Residual and coefficient coding for video coding
By optimizing the syntax structure and encoding/decoding methods of video encoding and decoding, the problem of balancing efficiency and quality in existing video encoding and decoding technologies has been solved, achieving more efficient video compression and quality improvement, and adapting to the characteristics of different video content.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- BEIJING DAJIA INTERNET INFORMATION TECH CO LTD
- Filing Date
- 2022-01-04
- Publication Date
- 2026-05-01
AI Technical Summary
Existing video codec technologies struggle to achieve the optimal balance between compression efficiency and quality, especially in high-efficiency video codec standards such as VVC, where there is room for further optimization of codec tools.
By receiving and processing Sequence Parameter Set (SPS) residual encoding/decoding flags, adaptive enable flags, and residual encoding/decoding rice constraint flags, the syntax structure and encoding/decoding methods in the video encoding/decoding process are optimized, including multi-type tree structures, residual encoding/decoding and quantization processing of transform blocks, and techniques such as dependent scalar quantization and palette prediction.
It improves the compression efficiency and quality of video encoding and decoding, achieves higher encoding and decoding efficiency, adapts to the characteristics of different video content, reduces redundant information, and enhances encoding performance.
Smart Images

Figure CN121967720A_ABST
Abstract
Description
Residual and coefficient encoding / decoding for video encoding / decoding
[0001] This application is a divisional application of Chinese Patent Application No. 202280008946.5, which is the Chinese national phase application of International Patent Application PCT / US2022 / 011183 filed on January 4, 2022, which claims priority to U.S. Patent Application No. 63 / 133,765 filed on January 4, 2021. Technical Field
[0002] This disclosure relates to video encoding / decoding and compression. More specifically, this disclosure relates to improvements and simplifications in residual and coefficient encoding / decoding for video encoding / decoding. Background Technology
[0003] Various video codec techniques can be used to compress video data. Video codecs are performed according to one or more video codec standards. Examples of video codec standards include Universal Video Codec (VVC), Joint Explore Test Model (JEM), High Efficiency Video Codec (H.265 / HEVC), High-Level Video Codec (H.264 / AVC), and Moving Picture Experts Group (MPEG) codecs. Video codecs typically use predictive methods (e.g., inter-frame prediction, intra-frame prediction, etc.) that utilize redundancy present in video images or sequences. A key goal of video codec techniques is to compress video data into a form that uses a lower bitrate while avoiding or minimizing video quality degradation. Summary of the Invention
[0004] Examples of this disclosure provide methods and apparatus for video encoding and decoding.
[0005] According to a first aspect of this disclosure, a method for video encoding and decoding is provided. The method may include: receiving a Sequence Parameter Set (SPS) residual encoding / decoding flag by a decoder, the SPS residual encoding / decoding flag indicating the presence of an index sh_ts_residual_coding_rice_idx in a stripe header (SH) syntax structure referencing the SPS; determining, in response to determining that the value of the SPS residual encoding / decoding flag is equal to 1, that sh_ts_residual_coding_rice_idx exists in a stripe header (SH) syntax structure referencing the SPS; and determining, in response to determining that the value of the residual encoding / decoding flag is equal to 0, that sh_ts_residual_coding_rice_idx does not exist in the SH syntax structure referencing the SPS.
[0006] According to a second aspect of this disclosure, a method for video encoding and decoding is provided. The method may include: receiving a Sequence Parameter Set (SPS) Adaptive Enable Flag by a decoder, the SPS Adaptive Enable Flag indicating whether to use alternative rice parameter derivation for binarization of grammars abs_remaining and dec_abs_level; determining, in response to determining that the value of the SPS Adaptive Enable Flag is equal to 1, to use the alternative rice parameter derivation for binarization of grammars; and determining, in response to determining that the value of the SPS Adaptive Enable Flag is equal to 0, not to use the alternative rice parameter derivation for binarization of grammars.
[0007] According to a third aspect of this disclosure, a method for video encoding and decoding is provided. The method may include: receiving a residual codec rice constraint flag by a decoder to provide general constraint control for other flags; and determining that the values of the other flags are equal to 0 in response to determining that the value of the residual codec rice constraint flag is equal to 1.
[0008] It should be understood that the general description above and the detailed description below are exemplary and explanatory only, and are not intended to limit this disclosure. Attached Figure Description
[0009] Examples consistent with this disclosure are illustrated in conjunction with the accompanying drawings, which are included in and form part of this specification, and together with the description, serve to explain the principles of this disclosure.
[0010] Figure 1 is a block diagram of an encoder according to an example of this disclosure.
[0011] Figure 2 is a block diagram of a decoder according to an example of this disclosure.
[0012] Figure 3A is a diagram illustrating block partitioning in a multi-type tree structure according to an example of the present disclosure.
[0013] Figure 3B is a diagram illustrating block partitioning in a multi-type tree structure according to an example of this disclosure.
[0014] Figure 3C is a diagram illustrating block partitioning in a multi-type tree structure according to an example of the present disclosure.
[0015] Figure 3D is a diagram illustrating block partitioning in a multi-type tree structure according to an example of this disclosure.
[0016] Figure 3E is a diagram illustrating block partitioning in a multi-type tree structure according to an example of this disclosure.
[0017] Figure 4 is an illustration of an image with 18 × 12 luminance CTUs according to an example of this disclosure.
[0018] Figure 5 is an illustration of an image with 18 × 12 luminance CTUs according to an example of this disclosure.
[0019] Figure 6A is an illustration of an example of ternary tree (TT) and binary tree (BT) partitions not permitted in a VTM according to the example of this disclosure.
[0020] Figure 6B is an illustration of an example of TT and BT partitions not permitted in a VTM according to the present disclosure.
[0021] Figure 6C is an illustration of an example of TT and BT partitions not permitted in a VTM according to the present disclosure.
[0022] Figure 6D is an illustration of an example of TT and BT partitions not permitted in a VTM according to the example of this disclosure.
[0023] Figure 6E is an illustration of an example of TT and BT partitions that are not allowed in a VTM according to the present disclosure.
[0024] Figure 6F is an illustration of an example of TT and BT partitions not permitted in a VTM according to the example of this disclosure.
[0025] Figure 6G is an illustration of an example of TT and BT partitions that are not allowed in a VTM according to the example of this disclosure.
[0026] Figure 6H is an illustration of an example of TT and BT partitions not permitted in a VTM according to the present disclosure.
[0027] Figure 7 is a diagram of a residual encoding / decoding structure for a transform block according to an example of this disclosure.
[0028] Figure 8 is an illustration of a residual encoding / decoding structure for transforming skip blocks according to an example of this disclosure.
[0029] Figure 9 is a diagram of two scalar quantizers according to an example of this disclosure.
[0030] Figure 10A is a diagram illustrating a state transition according to an example of this disclosure.
[0031] Figure 10B is a diagram illustrating quantizer selection according to an example of this disclosure.
[0032] Figure 11 is an illustration of a template for selecting a probability model according to the present disclosure.
[0033] Figure 12 is an illustration of an example of a block encoded and decoded in a palette mode according to the present disclosure.
[0034] Figure 13 is a diagram illustrating the use of palette prediction values to represent palette entries with signals according to this disclosure.
[0035] Figure 14A is an illustration of a horizontal traversal scan according to the present disclosure.
[0036] Figure 14B is an illustration of a vertical traversal scan according to the present disclosure.
[0037] Figure 15A is an illustration of a sub-block-based index mapping scan of a palette according to the present disclosure.
[0038] Figure 15B is an illustration of a sub-block-based index mapping scan of a palette according to the present disclosure.
[0039] Figure 16 is an example of a method for encoding a video signal according to the present disclosure.
[0040] Figure 17 is an example of a method for encoding a video signal according to the present disclosure.
[0041] Figure 18 is a diagram illustrating a computing environment coupled to a user interface according to an example of this disclosure.
[0042] Figure 19 illustrates a method for video encoding and decoding according to an example of this disclosure.
[0043] Figure 20 illustrates a method for video encoding and decoding according to an example of this disclosure.
[0044] Figure 21 illustrates a method for video encoding and decoding according to an example of this disclosure. Detailed Implementation
[0045] Reference will now be made in detail to exemplary embodiments, examples of which are illustrated in the accompanying drawings. All descriptions herein refer to the accompanying drawings, in which, unless otherwise stated, the same reference numerals in different drawings denote the same or similar elements. The embodiments described in the following exemplary embodiments do not represent all embodiments consistent with this disclosure. Rather, they are merely examples of apparatuses and methods consistent with the aspects related to this disclosure as set forth in the appended claims.
[0046] The terminology used in this disclosure is for the purpose of describing particular embodiments only and is not intended to be limiting of the disclosure. As used in this disclosure and the appended claims, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It should also be understood that the term “and / or” as used herein is intended to represent and include any or all possible combinations of one or more of the associated enumerated items.
[0047] It should be understood that although the terms “first,” “second,” “third,” etc., may be used herein to describe various types of information, such information should not be limited by these terms. These terms are merely used to distinguish one type of information from another. For example, without departing from the scope of this disclosure, first information may be referred to as second information; and similarly, second information may be referred to as first information. As used herein, depending on the context, the term “if” may be understood to mean “when,” “in,” or “in response to a judgment.”
[0048] The first version of the HEVC standard was completed in October 2013, offering approximately 50% bitrate savings or equivalent perceived quality compared to its predecessor, H.264 / MPEG-AVC. While HEVC offered significant codec improvements over its predecessor, evidence suggested that even better codec efficiency could be achieved using additional codec tools. Building on this, both VCEG and MPEG began exploring new codec technologies to standardize future video codecs. In October 2015, ITU-T VECG and ISO / IEC MPEG established a Joint Video Exploration Team (JVET) to conduct major research into advanced technologies that could significantly improve codec efficiency. JVET maintains a reference software called the Joint Exploration Model (JEM) by integrating multiple additional codec tools on top of the HEVC Test Model (HM).
[0049] In October 2017, the ITU-T and ISO / IEC issued a joint Request for Proposal (CfP) on video compression capabilities exceeding HEVC. In April 2018, the 10th JVET meeting received and evaluated 23 CfP responses, demonstrating a compression efficiency improvement of approximately 40% compared to HEVC. Based on these evaluation results, JVET launched a new project to develop a next-generation video codec standard called Universal Video Codec (VVC). That same month, a reference software codebase called the VVC Test Model (VTM) was established to demonstrate a reference implementation of the VVC standard.
[0050] Like HEVC, VVC is built on a block-based hybrid video codec framework.
[0051] Figure 1 shows an overview of a block-based video encoder for VVC. Specifically, Figure 1 shows a typical encoder 100. Encoder 100 has a video input 110, motion compensation 112, motion estimation 114, intra / inter-frame mode decision 116, block prediction 140, adder 128, transform 130, quantization 132, prediction-related information 142, intra-frame prediction 118, picture buffer 120, inverse quantization 134, inverse transform 136, adder 126, memory 124, loop filter 122, entropy coding 138, and bitstream 144.
[0052] In encoder 100, video frames are partitioned into multiple video blocks for processing. For each given video block, a prediction is formed based on either an inter-frame prediction method or an intra-frame prediction method.
[0053] The prediction residual, representing the difference between the current video block (a portion of video input 110) and its predicted value (a portion of block prediction value 140), is sent from adder 128 to transform 130. The transform coefficients are then sent from transform 130 to quantization 132 for entropy reduction. The quantization coefficients are then fed to entropy coding 138 to generate a compressed video bitstream. As shown in Figure 1, prediction-related information 142 from intra / inter-frame mode decisions 116 (such as video block partitioning information, motion vectors (MV), reference picture indexes, and intra-frame prediction modes) is also fed through entropy coding 138 and stored in the compressed bitstream 144. The compressed bitstream 144 comprises the video bitstream.
[0054] In encoder 100, decoder-related circuitry is also required to reconstruct pixels for prediction purposes. First, the prediction residual is reconstructed via inverse quantization 134 and inverse transform 136. This reconstructed prediction residual is combined with block prediction values 140 to generate the unfiltered reconstructed pixels for the current video block.
[0055] Spatial prediction (or "intra-frame prediction") uses pixels from samples (called reference samples) of already encoded neighboring blocks in the same video frame as the current video block to predict the current video block.
[0056] Timing prediction (also known as "inter-frame prediction") uses reconstructed pixels from already encoded and decoded video frames to predict the current video block. Timing prediction reduces the temporal redundancy inherent in the video signal. The timing prediction signal for a given coding unit (CU) or coding block is typically represented by one or more MV signals indicating the amount and direction of motion between the current CU and its timing reference. Further, if multiple reference frames are supported, an additional reference frame index is sent to identify which reference frame in the reference frame storage the timing prediction signal originates from.
[0057] Motion estimation 114 acquires the video input 110 and the signal from the image buffer 120, and outputs the motion estimation signal to motion compensation 112. Motion compensation 112 acquires the video input 110, the signal from the image buffer 120, and the motion estimation signal from motion estimation 114, and outputs the motion compensation signal to intra / inter-frame mode decision 116.
[0058] After performing spatial and / or temporal prediction, the intra / inter-frame mode decision 116 in encoder 100 selects the optimal prediction mode, for example, based on a rate-distortion optimization method. Then, the block prediction value 140 is subtracted from the current video block, and the resulting prediction residual is decorrelated using transform 130 and quantization 132. The resulting quantization residual coefficients are dequantized by inverse quantization 134, and then inversely transformed by inverse transform 136 to form a reconstruction residual, which is then added back to the prediction block to form the reconstructed CU signal. Before placing the reconstructed CU in the reference picture storage of picture buffer 120 and using it for encoding and decoding future video blocks, further loop filtering 122, such as deblocking filters, sample adaptive offset (SAO), and / or adaptive loop filter (ALF), can be applied to the reconstructed CU. To form the output video bitstream 144, the encoding / decoding mode (inter-frame or intra-frame), prediction mode information, motion information, and quantization residual coefficients are sent to entropy coding unit 138 for further compression and packing to form the bitstream.
[0059] Figure 1 shows a block diagram of a general block-based hybrid video coding system. The input video signal is processed block by block (called a coding unit (CU)). In VTM-1.0, a CU can be up to 128 × 128 pixels. However, unlike HEVC, which only partitions blocks based on quadtrees, in VVC, a coding tree unit (CTU) is divided into multiple CUs to accommodate different local characteristics based on quadtrees, binary trees, and tritrees. By definition, a coding tree block (CTB) is an N × N sample block of some value N, such that dividing the components into CTBs is partitioning. CTUs include luma sample CTBs, two corresponding chroma sample CTBs of an image with three sample arrays, or sample CTBs of a monochrome image, or sample CTBs of an image encoded using three separate color planes and a syntax structure for encoding and decoding the samples. Furthermore, the concept of multiple partitioning unit types in HEVC has been removed; that is, the splitting of CU, prediction unit (PU), and transform unit (TU) no longer exists in VVC. Instead, each CU is always used as the basic unit for both prediction and transformation without further partitioning. In the multi-type tree structure, a CTU is first partitioned by a quadtree structure. Then, each quadtree leaf node can be further partitioned by binary and ternary tree structures. As shown in Figures 3A, 3B, 3C, 3D, and 3E, there are five partitioning types: quad partitioning, horizontal binary partitioning, vertical binary partitioning, horizontal ternary partitioning, and vertical ternary partitioning.
[0060] Figure 3A shows a diagram illustrating block quadrilateral partitioning in a multi-type tree structure according to the present disclosure.
[0061] Figure 3B shows a diagram illustrating block vertical binary partitioning in a multi-type tree structure according to the present disclosure.
[0062] Figure 3C shows a diagram illustrating block-level binary partitioning in a multi-type tree structure according to the present disclosure.
[0063] Figure 3D shows a diagram illustrating a block vertical ternary partition in a multi-type tree structure according to the present disclosure.
[0064] Figure 3E shows a diagram illustrating a block-level ternary partition in a multi-type tree structure according to the present disclosure.
[0065] In Figure 1, spatial prediction and / or temporal prediction can be performed. Spatial prediction (or “intra-frame prediction”) uses pixels from samples (called reference samples) of adjacent blocks already encoded and decoded within the same video picture / strip to predict the current video block. Spatial prediction reduces the spatial redundancy inherent in the video signal. Temporal prediction (also known as “inter-frame prediction” or “motion-compensated prediction”) uses reconstructed pixels from already encoded and decoded video pictures to predict the current video block. Temporal prediction reduces the temporal redundancy inherent in the video signal. The temporal prediction signal for a given CU is typically sent by one or more motion vectors (MVs) indicating the amount and direction of motion between the current CU and its temporal reference. Similarly, if multiple reference pictures are supported, an additional reference picture index is sent to identify which reference picture in the reference picture storage the temporal prediction signal comes from. After spatial and / or temporal prediction, a mode decision block in the encoder selects the optimal prediction mode, for example, based on a rate-distortion optimization method. The prediction block is then subtracted from the current video block; and the prediction residual is decorrelated and quantized using a transform. The quantized residual coefficients are dequantized and inversely transformed to form the reconstructed residuals, which are then added back to the prediction block to form the reconstructed CU signal. Further, before placing the reconstructed CU in the reference image storage and using it for encoding and decoding future video blocks, loop filtering such as deblocking filters, Sample Adaptive Offset (SAO), and Adaptive Loop Filter (ALF) can be applied to the reconstructed CU. To form the output video bitstream, the encoding / decoding mode (inter-frame or intra-frame), prediction mode information, motion information, and quantized residual coefficients are sent to the entropy coding unit for further compression and packing to form the bitstream.
[0066] Figure 2 shows the overall block diagram of a video decoder for VVC. Specifically, Figure 2 shows a block diagram of a typical decoder 200. Decoder 200 has a bitstream 210, entropy decoding 212, dequantization 214, inverse transform 216, adder 218, intra / inter-frame mode selection 220, intra-frame prediction 222, memory 230, loop filter 228, motion compensation 224, picture buffer 226, prediction-related information 234, and video output 232.
[0067] Decoder 200 is similar to the reconstruction-related portion present in encoder 100 of Figure 1. In decoder 200, the incoming video bitstream 210 is first decoded via entropy decoding 212 to obtain quantization coefficient levels and prediction-related information. Then, the quantization coefficient levels are processed via inverse quantization 214 and inverse transform 216 to obtain the reconstruction prediction residual. The block prediction mechanism implemented in intra / inter-frame mode selector 220 is configured to perform intra-frame prediction 222 or motion compensation 224 based on the decoded prediction information. A set of unfiltered reconstructed pixels is obtained by summing the reconstruction prediction residual from inverse transform 216 with the prediction output generated by the block prediction mechanism using summer 218.
[0068] The reconstructed blocks can be further passed through loop filter 228 and then stored in image buffer 226, which serves as a reference image storage. The reconstructed video in image buffer 226 can be sent to drive the display device and used to predict future video blocks. With loop filter 228 enabled, filtering operations are performed on these reconstructed pixels to obtain the final reconstructed video output 232.
[0069] Figure 2 shows the overall block diagram of the block-based video decoder. First, entropy decoding of the video bitstream is performed at the entropy decoding unit. The encoding / decoding mode and prediction information are sent to the spatial prediction unit (in the case of intra-frame encoding / decoding) or the temporal prediction unit (in the case of inter-frame encoding / decoding) to form prediction blocks. The residual transform coefficients are sent to the inverse quantization unit and the inverse transform unit to reconstruct the residual blocks. Then, the prediction blocks and residual blocks are added together. The reconstructed blocks can be further filtered through a loop and then stored in a reference image store. The reconstructed video from the reference image store is then sent to drive the display device and used to predict future video blocks.
[0070] Typically, the basic intra prediction scheme used in VVC is the same as that in HEVC, with the difference being that several modules are further extended and / or improved, such as intra-segmentation sub-partition (ISP) coding mode, extended intra prediction using wide-angle intra-direction, position-dependent intra prediction combination (PDPC), and 4-tap intra interpolation.
[0071] In VVC, tiles are partitioned into images, tile groups, tiles, and CTUs. A tile is defined as a rectangular CTU region within a specific tile column and row in an image. A tile group is a group of an image containing only an integer number of tiles within a single NAL unit. Essentially, the concept of a tile group is the same as that of a stripe defined in HEVC. For example, an image is divided into tile groups and tiles. A tile is a series of CTUs covering a rectangular region of the image. A tile group contains multiple tiles of the image. Two modes of tile groups are supported: raster scan tile group mode and rectangular tile group mode. In raster scan tile group mode, a tile group contains a series of tiles from a raster scan of the image. In rectangular tile group mode, a tile group contains multiple tiles of the image that together form a rectangular region of the image. The tiles within a rectangular tile group are arranged according to the raster scan order of the tile group.
[0072] Figure 4 shows an example of raster scan tile grouping of an image, where the image 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 an image with 18 × 12 luminance CTUs, which is divided into 12 tiles and 3 tile groups (informative). 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, and 432.
[0073] Figure 5 shows an example of rectangular tile grouping for an image, where the image 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 an image with 18 × 12 luminance CTUs, which is divided into 24 tiles and 9 tile groups (informative). 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 and 540, (6) four tiles 530, 532, 542 and 544, (7) two tiles 546 and 548, (8) two tiles 550 and 552, and (9) two tiles 554 and 556.
[0074] In VVC, high-frequency zeroing is enabled for large block transforms up to 64 × 64 pixels. This is primarily suitable for higher resolution videos, such as 1080p and 4K sequences. For transform blocks with a size (width or height, or both) equal to 64, high-frequency transform coefficients are zeroed out, leaving only low-frequency coefficients. For example, for an M × N transform block (where M is the block width and N is the block height), when M equals 64, only the left 32 columns of transform coefficients are retained. Similarly, when N equals 64, only the top 32 rows of transform coefficients are retained. When transform skip mode is used for large blocks, the entire block is used without zeroing out any values.
[0075] Virtual Pipeline Data Units (VPDUs) in VVC are defined as non-overlapping units in an image. In a hardware decoder, consecutive VPDUs are processed simultaneously by multiple pipeline stages. In most pipeline stages, the VPDU size is roughly proportional to the buffer size, so keeping the VPDU size small is important. In most hardware decoders, the VPDU size can be set to the maximum transform block (TB) size. However, in VVC, ternary tree (TT) and binary tree (BT) partitioning can lead to an increase in VPDU size.
[0076] To maintain the VPDU size at 64 × 64 luminance samples, the following specification partitioning restrictions (with syntax signaling modifications) are applied in VTM5: TT partitioning is not allowed for CUs with a width or height of 128 or both width and height.
[0077] For a 128 x N CU (i.e., width equal to 128 and height less than 128) where N ≤ 64, horizontal BT is not allowed.
[0078] For N x 128 CUs with N ≤ 64 (i.e., height equal to 128 and width less than 128), vertical BTs are not allowed.
[0079] Figures 6A, 6B, 6C, 6D, 6E, 6F, 6G, and 6H show examples of TT and BT partitions that are not allowed in VTM.
[0080] Transform coefficient encoding and decoding in VVC is similar to HEVC because they both use non-overlapping coefficient groups (also called CGs or sub-blocks). However, there are some differences between the two encoding and decoding methods. In HEVC, the size of each CG of a coefficient is fixed at 4 × 4. In VVC draft 6, the CG size becomes dependent on the size of the TB. Therefore, a variety of available CG sizes are provided in VVC (1 × 16, 2 × 8, 8 × 2, 2 × 4, 4 × 2, and 16 × 1). CGs within a coding block and transform coefficients within a CG are encoded and decoded according to a predefined scan order.
[0081] To limit the maximum number of bits for context coding per pixel, the maximum number of bits for context coding per TB (CCB) is determined using the area of the TB and the type of video components (e.g., luma and chroma components). The maximum number of bits for context coding is equal to TB_zosize. 1.75. Here, TB_zosize indicates the number of samples within TB after the coefficients are zeroed. Note that coded_sub_block_flag is a flag indicating whether CG contains non-zero coefficients; it is not considered for CCB counting.
[0082] Zero-out is an operation performed on a transform block to force coefficients located in a specific region of the transform block to be 0. For example, in the current VVC, the 64 × 64 transform has an associated zero-out operation. Therefore, transform coefficients located outside the top-left 32 × 32 region within the 64 × 64 transform block are forced to 0. In fact, in the current VVC, for any transform block with a size exceeding 32 along a certain dimension, a zero-out operation is performed along that dimension to force coefficients outside the top-left 32 × 32 region to be 0.
[0083] In VVC transform coefficient encoding and decoding, the variable `remBinsPass1` is initially set to the maximum number of allowed context-coded bits (MCCB). During encoding and decoding, the variable is decremented by one each time context-coded bits are represented by signals. When `remBinsPass1` is greater than or equal to four, coefficients are first represented by signals using syntaxes such as `sig_coeff_flag`, `abs_level_gt1_flag`, `par_level_flag`, and `abs_level_gt3_flag`. In the first pass, all these syntax elements use context-coded bits. The remaining level information of the coefficients is encoded and decoded in the second pass using Golomb-Rice codes and bypass encoding bits via the syntax element `abs_remainder`. When `remBinsPass1` becomes less than four during the first pass, the current coefficient is not encoded in the first pass but is directly encoded and decoded in the second pass using Golomb-Rice codes and bypass encoding bits via the syntax element `dec_abs_level`. The rice parameter derivation for dec_abs_level[ ] is as specified in Table 3. After encoding and decoding at all the levels mentioned above, the sign (sign_flag) of all scan positions where sig_coeff_flag equals 1 is finally encoded into bypass bits. This process is depicted in Figure 7. remBinsPass1 is reset for each TB. The transition from using context-encoded bits for sig_coeff_flag, abs_level_gt1_flag, par_level_flag, and abs_level_gt3_flag to using bypass-encoded bits for the remaining coefficients occurs at most once per TB. For a coefficient subblock, if remBinsPass1 is less than 4 before encoding and decoding its first coefficient, the entire coefficient subblock is encoded and decoded using bypass-encoded bits.
[0084] Figure 7 illustrates the residual encoding / decoding structure used for transform blocks.
[0085] The syntax for signaling `abs_remainder` and `dec_abs_level` is derived using a unified (identical) `rice` parameter (`RicePara`). The only difference is that the base level `baseLevel` is set to 4 and 0 for encoding and decoding `abs_remainder` and `dec_abs_level`, respectively. The `Rice` parameter is determined not only based on the sum of the absolute levels of the five adjacent transform coefficients in the local template but also based on the corresponding base level, as follows: `RicePara = RiceParTable[ max(min( 31, sumAbs – 5 ] ... The syntax and related semantics of residual encoding and decoding in the current VVC draft specification are illustrated in Tables 1 and 2, respectively. How to read Table 1 is illustrated in the appendix of this publication, which can also be found in the VVC specification.
[0086] Table 1. Syntax of Residual Encoding and Decoding
[0087]
[0088]
[0089]
[0090]
[0091]
[0092]
[0093]
[0094] Table 2. Semantics of Residual Encoding and Decoding
[0095]
[0096]
[0097]
[0098] Table 3. Derivation of Rice parameters for abs_remainder[] and dec_abs_level[]
[0099] Table 4. Specification of cRiceParam based on locSumAbs
[0100] In VVC, the residual encoding and decoding of the transform skip mode differs from HEVC, which uses a single residual encoding and decoding scheme to encode and decode both transform coefficients and transform skip coefficients. In VVC, two separate residual encoding and decoding schemes are used for the transform coefficients and transform skip coefficients (i.e., the residuals), respectively.
[0101] In transform skip mode, the statistical properties of the residual signal differ from those of the transform coefficients, and no energy compaction is observed around the low-frequency components. The residual encoding / decoding is modified to account for the different signal characteristics of the (spatial) transform skip residuals, including: no signal transmission at the last x / y position; a coded_sub_block_flag for encoding / decoding each sub-block except the DC sub-block when all previous flags are equal to 0; context modeling of the sig_coeff_flag with two adjacent coefficients; a par_level_flag using only one context model; additional flags greater than 5, 7, and 9; rice parameter derivation for the residual binarization modification; context modeling of the symbol flag is determined based on the adjacent coefficient values to the left and above, and the symbol flag is parsed after the sig_coeff_flag to keep the binary bits of all context encoding / decoding together.
[0102] As shown in Figure 8, the syntax elements sig_coeff_flag, coeff_sign_flag, abs_level_gt1_flag, and par_level_flag are encoded and decoded in the first pass using an interleaved residual sample-to-residual sample method. This is followed by the abs_level_gtX_flag bit plane in the second pass and the abs_remainder encoding and decoding in the third pass.
[0103] First pass: sig_coeff_flag, coeff_sign_flag, abs_level_gt1_flag, par_level_flag Second pass: abs_level_gt3_flag, abs_level_gt5_flag, abs_level_gt7_flag, abs_level_gt9_flag Third pass: abs_remainder Figure 8 illustrates the residual codec structure used for transforming skip blocks.
[0104] The syntax and related semantics of residual encoding / decoding used for transform skip modes in the current VVC draft specification are illustrated in Tables 5 and 2, respectively. How to read Table 5 is illustrated in the appendix of this publication, which can also be found in the VVC specification.
[0105] Table 5. Syntax for Residual Encoding and Decoding for Transform Skip Mode
[0106]
[0107]
[0108]
[0109] In the current VVC, the maximum QP value has been extended from 51 to 63, and the initial QP signal transmission has been changed accordingly. When encoding / decoding non-zero values of slice_qp_delta, the initial value of SliceQpY can be modified at the slice layer. For transform skip blocks, the minimum allowed quantization parameter (QP) is defined as 4 because the quantization step size becomes 1 when QP equals 4.
[0110] Additionally, the same HEVC scalar quantization is used with a new concept called dependent scalar quantization. Dependent scalar quantization is a method where a set of allowable reconstructed values of the transform coefficients depends on the values of the transform coefficient levels preceding the current transform coefficient level in the reconstruction order. The main effect of this method is that, compared to the traditional independent scalar quantization used in HEVC, the allowable reconstructed vectors are packed more densely in an N-dimensional vector space (where N represents the number of transform coefficients in the transform block). This means that for a given average number of allowable reconstructed vectors per N-dimensional unit volume, the average distortion between the input vector and the nearest reconstructed vector is reduced. The dependent scalar quantization method is implemented by: (a) defining two scalar quantizers with different reconstruction levels, and (b) defining a procedure for switching between these two scalar quantizers.
[0111] The two scalar quantizers used are shown in Figure 9, denoted as Q0 and Q1. The position of the available reconstruction level is determined by the quantization step size. Uniquely specified. The scalar quantizer (Q0 or Q1) used is not explicitly represented as a signal in the bitstream. Instead, the quantizer used for the current transform coefficient is determined by the parity of the transform coefficient levels preceding the current transform coefficient in the encoding / decoding / reconstruction order.
[0112] Figure 9 illustrates the two scalar quantizers used in the proposed dependency quantization method.
[0113] As shown in Figures 10A and 10B, the switching between the two scalar quantizers (Q0 and Q1) is implemented via a state machine with four quantizer states (QState). QState can take four different values: 0, 1, 2, and 3. It is uniquely determined by the parity of the transform coefficient levels preceding the current transform coefficient in the encoding / decoding / reconstruction order. At the start of dequantization of the transform block, the state is set to 0. The transform coefficients are reconstructed in scan order (i.e., in the same order as they were entropy-decoded). After the current transform coefficient is reconstructed, the state is updated, as shown in Figure 10, where k represents the value of the transform coefficient level.
[0114] Figure 10A shows the state transition diagram of the proposed dependency quantification.
[0115] Figure 10B shows a table illustrating the selection of quantizers for the proposed dependency quantization.
[0116] It also supports sending default and user-defined scaling matrices via signaling. In DEFAULT mode, the scaling matrices are flat, with all TB-sized elements equal to 16. IBC and intra-frame codec modes currently share the same scaling matrix. Therefore, for the USER_DEFINED matrix, the numbers MatrixType and MatrixType_DC are updated as follows: MatrixType: 30 = 2 (2 for intra-frame and IBC / inter-frame) × 3 (Y / Cb / Cr components) × 5 (square TB size: luma from 4 × 4 to 64 × 64, chroma from 2 × 2 to 32 × 32).
[0117] MatrixType_DC: 14 = 2 (2 for intra-frame and IBC / inter-frame × 1 for Y component) ×3 (TB size: 16 ×16, 32 × 32, 64 × 64) +4 (2 for intra-frame and IBC / inter-frame × 2 for Cb / Cr component) ×2 (TB size: 16 ×16, 32 × 32).
[0118] The DC values are encoded and decoded separately for the following scaling matrices: 16 × 16, 32 × 32, and 64 × 64. For TBs smaller than 8 × 8, all elements of a scaling matrix are signaled. If the TB is larger than or equal to 8 × 8, only 64 elements of an 8 × 8 scaling matrix are signaled as the basic scaling matrix. To obtain a square matrix larger than 8 × 8, the 8 × 8 basic scaling matrix is upsampled (elementally copied) to the corresponding square size (i.e., 16 × 16, 32 × 32, 64 × 64). When zeroing is applied to the high-frequency coefficients of the 64-point transform, the corresponding high frequencies of the scaling matrix are also zeroed. That is, if the width or height of the TB is greater than or equal to 32, only the coefficients of the left or upper half are retained, and the remaining coefficients are assigned zero. Furthermore, the number of elements represented by signals for a 64 × 64 scaling matrix is reduced from 8 × 8 to three 4 × 4 submatrices, because the 4 × 4 elements in the bottom right corner are never used.
[0119] The choice of the probabilistic model for the context modeling used for transform coefficient encoding and decoding, which is related to the absolute value of the transform coefficient level, depends on the value of the absolute level in the local neighborhood or the absolute level of the partially reconstructed level. The template used is illustrated in Figure 11.
[0120] Figure 11 illustrates the template used to select the probabilistic model. The black squares specify the current scan position, and the squares marked with "x" represent the local neighborhood used.
[0121] The chosen probabilistic model depends on the sum of the absolute levels (or partially reconstructed absolute levels) in the local neighborhood and the number of absolute levels greater than 0 in the local neighborhood (given by the number of sig_coeff_flags equal to 1). Context modeling and binarization depend on the following metrics of the local neighborhood: numSig: the number of non-zero levels in the local neighborhood; sumAbs1: the sum of the absolute levels of partially reconstructed in the local neighborhood after the first pass (absLevel1); sumAbs: the sum of the absolute levels reconstructed in the local neighborhood; diagonal position (d): the sum of the horizontal and vertical coordinates of the current scan position within the transform block.
[0122] Based on the values of numSig, sumAbs1, and d, a probabilistic model is selected for encoding and decoding sig_coeff_flag, abs_level_gt1_flag, par_level_flag, and abs_level_gt3_flag. The Rice parameter is selected for binarizing abs_remainder and dec_abs_level based on the values of sumAbs and numSig.
[0123] In the current VVC, the simplified 32-point MTS (also known as RMTS32) is based on skipping high-frequency coefficients and is used to reduce the computational complexity of 32-point DST-7 / DCT-8. Furthermore, it is accompanied by changes in coefficient encoding and decoding, including all types of zeroing (i.e., the existing zeroing of high-frequency components in RMTS32 and DCT2). Specifically, binarization of the last non-zero coefficient position encoding and decoding is based on a reduced TU size, and the context model selection for the last non-zero coefficient position encoding and decoding is determined by the original TU size. Additionally, 60 context models are used to encode and decode the transform coefficients' sig_coeff_flag. The selection of the context model index is based on the sum of the absolute levels of the five largest previous partial reconstructions (called locSumAbsPass1) and the dependency quantization state QState, as follows: If cIdx equals 0, then ctxInc is obtained as follows:
[0124] The basic idea behind palette mode is that samples in the CU are represented by a small set of representative color values. This set is called the palette. Color values excluded from the palette can also be indicated by signaling color values as escape colors, where the by values of the three color components are directly signaled in the bitstream. This is illustrated in Figure 12.
[0125] Figure 12 shows an example of blocks encoded and decoded in Palette mode. Figure 12 includes blocks 1210 and palettes 1220 encoded and decoded in Palette mode.
[0126] In Figure 12, the palette size is 4. The first three samples are reconstructed using palette entries 2, 0, and 3, respectively. The blue samples represent escape symbols. The CU level flag `palette_escape_val_present_flag` indicates whether any escape symbols exist in the CU. If escape symbols exist, the palette size is increased by one, and the last index is used to indicate the escape symbol. Therefore, in Figure 12, index 4 is assigned to the escape symbol.
[0127] In order to decode blocks of a palette encoding / decoding, the decoder needs the following information: a palette table; and a palette index.
[0128] If the palette index corresponds to an escape symbol, then additional overhead is indicated by a signal to indicate the corresponding color value of the sample.
[0129] Additionally, on the encoder side, it is necessary to obtain a suitable color palette for use with the CU.
[0130] For the palette derivation of lossy encoding / decoding, an improved k-means clustering algorithm is used. The first sample of a block is added to the palette. Then, for each subsequent sample in the block, the sum of absolute differences (SAD) between the sample and each current palette color is calculated. If the distortion of each component is less than a threshold corresponding to the minimum SAD of the palette entry, 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.
[0131] In the next step, the clusters are sorted in descending order of usage. Then, the palette entry corresponding to each entry is updated. Typically, the centroid of the cluster is used as the palette entry. However, considering the encoding and decoding costs of the palette entries, rate-distortion analysis is performed to analyze whether any entry from the palette predictions is more suitable to replace the centroid as the updated palette entry. This process continues until all clusters have been processed or the maximum palette size is reached. Finally, if a cluster has only one sample and the corresponding palette entry is not in the palette predictions, that sample is converted to an escape symbol. Additionally, duplicate palette entries are removed, and their clusters are merged.
[0132] After palette derivation, each sample in the block is assigned the index of the nearest (SAD) palette entry. The sample is then assigned to either the 'INDEX' or 'COPY_ABOVE' mode. For each sample, either 'INDEX' or 'COPY_ABOVE' mode can be used. The encoding / decoding cost of the mode is then calculated. The mode with the lower cost is selected.
[0133] For encoding and decoding of palette entries, palette prediction values are maintained. The maximum size of the palette and the palette prediction values are represented by signals in SPS. Palette prediction values are initialized at the beginning of each CTU line, each strip, and each tile.
[0134] For each entry in the palette prediction values, a reuse flag is signaled to indicate whether it is part of the current palette. This is illustrated in Figure 13.
[0135] Figure 13 illustrates the use of palette prediction values to represent palette entries with signals. Figure 13 includes the previous palette 1310 and the current palette 1320.
[0136] The reuse flag is transmitted using a zero-run-length encoding / decoding. Following this, the number of new palette entries is indicated by signals using zero-indexed Golomb code. Finally, the component values of the new palette entries are indicated by signals.
[0137] As shown in Figures 14A and 14B, the palette index is encoded and decoded using horizontal and vertical traversal scans. The scan order is explicitly transmitted via a signal using the `palette_transpose_flag` in the bitstream.
[0138] Figure 14A shows a horizontal traversal scan.
[0139] Figure 14B shows a vertical traversal scan.
[0140] For the encoding / decoding palette index, a palette mode based on line coefficient groups (CGs) 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. In this mode, the index run, the palette index value, and the quantized color of the escape mode are encoded / parsed sequentially for each CG.
[0141] Figure 15A illustrates a sub-block-based index mapping scan for a color palette.
[0142] Figure 15B illustrates a sub-block-based index mapping scan for a color palette.
[0143] Palette indexes are encoded and decoded using two main palette sample modes: 'INDEX' and 'COPY_ABOVE'. As previously explained, escape symbols are assigned an index equal to the maximum palette size. In 'COPY_ABOVE' mode, the palette index of the sample in the previous row is copied. In 'INDEX' mode, the palette index is explicitly transmitted using signals. The encoding order of palette run encoding and decoding within each segment is as follows: For each pixel, a binary bit of context encoding / decoding, run_copy_flag = 0, is used to indicate whether the pixel has the same pattern as the previous pixel; that is, whether both the previous scanned pixel and the current pixel have the run type COPY_ABOVE or both the previous scanned pixel and the current pixel have the run type INDEX and the same index value. Otherwise, run_copy_flag = 1 is used.
[0144] If a pixel has a different mode than the previous pixel, a context-encoded binary bit, copy_above_palette_indices_flag, is used to indicate the pixel's run type (i.e., INDEX or COPY_ABOVE). If the sample is in the first row (horizontal traversal scan) or the first column (vertical traversal scan), the decoder does not need to resolve the run type because the INDEX mode is used by default. Similarly, if the previously resolved run type is COPY_ABOVE, the decoder also does not need to resolve the run type.
[0145] After the pixels in a segment are encoded and decoded using a palette, the index value of the INDEX mode (palette_idx_idc) and the quantized escape color (palette_escape_val) are bypassed and encoded / decoded.
[0146] Improvements to residual and coefficient encoding / decoding in VVC: When encoding / decoding transform coefficients, a unified (identical) rice parameter (RicePara) is used to derive the syntax for representing abs_remainder and dec_abs_level using signals. The only difference is that the base level (baseLevel) is set to 4 and 0 respectively for encoding / decoding abs_remainder and dec_abs_level. The rice parameter is determined not only based on 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: RicePara = RiceParTable[ max(min( 31, sumAbs – 5 ] ... In other words, the binary codewords of the syntax elements abs_remainder and dec_abs_level are adaptively determined based on the level information of adjacent coefficients. Since this codeword determination is performed on a per-sample basis, additional logic is required to handle the adaptation of the codeword to coefficient encoding and decoding.
[0147] Similarly, when encoding and decoding residual blocks in transform skip mode, the binary codeword of the syntax element abs_remainder is adaptively determined based on the level information of adjacent residual samples.
[0148] Furthermore, when encoding or decoding syntax elements related to residual encoding / decoding or transform coefficient encoding / decoding, the choice of probabilistic model depends on the level information of adjacent levels, which requires additional logic and additional context models.
[0149] In the current design, the binarization of escape samples is achieved by calling the third-order exponential Columbus binarization process. There is still room for further performance improvement.
[0150] In the current VVC, there are two different level mapping schemes, applied to regular transforms and transform skipping, respectively. Each level mapping scheme is associated with different conditions, mapping functions, and mapping positions. For blocks applying regular transforms, the level mapping scheme is used after the number of context codec bits (CCB) exceeds the limit. The mapping position, represented by ZeroPos[n], and the mapping result, represented by AbsLevel[xC][yC], are obtained as specified in Table 2. For blocks applying transform skipping, another level mapping scheme is used before the number of context codec bits (CCB) exceeds the limit. The mapping position, represented by predCoeff, and the mapping result, represented by AbsLevel[xC][yC], are obtained as specified in Table 5. From a standardization perspective, this non-uniform design may not be optimal.
[0151] For HEVC profiles exceeding 10 bits, setting `extended_precision_processing_flag` to 1 specifies the use of an extended dynamic range for coefficient resolution and inverse transform processing. It has been reported that in current VVC, residual encoding / decoding or transform skip encoding / decoding of transform coefficients exceeding 10 bits is a significant performance degradation factor. There is still room for further performance improvement.
[0152] The proposed methods presented in this disclosure address several issues mentioned in the improved section on residual and coefficient coding. Note that the following methods can be used individually or in combination.
[0153] According to a first aspect of this disclosure, it is proposed to use a fixed set of binary codewords for encoding and decoding certain syntax elements (e.g., abs_remainder) in residual encoding and decoding. Different methods can be used to form the binary codewords. Some exemplary methods are listed below.
[0154] First, use the same procedure used in the current VVC to determine the codeword for abs_remainder, but always select a fixed rice parameter (e.g., 1, 2, or 3).
[0155] Second, fixed-length binarization.
[0156] Third, truncate Rice binarization.
[0157] Fourth, the binary (TB) binarization process is truncated.
[0158] Fifth, the k-order exponential Columbus binarization process (EGk).
[0159] Sixth, finite k-order exponent Columbus binarization.
[0160] According to a second aspect of this disclosure, it is proposed to use a fixed codeword set for encoding and decoding certain syntax elements (e.g., abs_remainder and dec_abs_level) in transform coefficient encoding and decoding. Different methods can be used to form the binary codewords. Some exemplary methods are listed below.
[0161] First, use the same procedure as the one used in the current VVC to determine the codewords for abs_remainder and dec_abs_level, but with fixed rice parameters, such as 1, 2, or 3. The value of baseLevel can still differ for abs_remainder and dec_abs_level used in the current VVC. (For example, baseLevel could be set to 4 and 0 respectively for encoding and decoding abs_remainder and dec_abs_level).
[0162] Second, use the same procedure as currently used in VVC to determine the codewords for abs_remainder and dec_abs_level, but with fixed rice parameters, such as 1, 2, or 3. The baseLevels values for abs_remainder and dec_abs_level are chosen to be the same, for example, 0 for both or 4 for both.
[0163] Third, fixed-length binarization.
[0164] Fourth, truncate Rice binarization.
[0165] Fifth, truncate the binary (TB) binarization process.
[0166] Sixth, the k-order exponential Columbus binarization process (EGk).
[0167] Seventh, finite k-order exponent Columbus binarization.
[0168] According to a third aspect of this disclosure, it is proposed to use a single context to encode and decode syntax elements (e.g., abs_level_gtx_flag) related to residual encoding / decoding or coefficient encoding / decoding, and context selection based on adjacent decoding level information can be removed.
[0169] According to a fourth aspect of this disclosure, it is proposed to use a variable set of binary codewords to encode and decode certain syntax elements (e.g., abs_remainder) in residual encoding and decoding, and to determine the selection of the binary codeword set based on certain encoded information of the current block, such as quantization parameters (QP) associated with TB / CB and / or slices, the prediction mode of the CU (e.g., IBC mode or intra-frame or inter-frame mode), and / or slice type (e.g., I-slice, P-slice, or B-slice). Different methods can be used to obtain the variable set of binary codewords; some exemplary methods are listed below.
[0170] First, use the same procedure as the current VVC for determining the codewords for abs_remainder, but with different rice parameters.
[0171] Second, the k-order exponential Columbus binarization process (EGk).
[0172] Third, finite k-order exponent Columbus binarization.
[0173] Table 6. Rice parameter determination based on QP value
[0174]
[0175] The same method explained in the fourth aspect is also applicable to transform efficient coding and decoding. According to the fifth aspect of the present disclosure, it is proposed to use a set of variables of binary codewords to encode and decode certain syntax elements (such as abs_remainder and dec_abs_level) in transform coefficient coding and decoding, and to determine the selection of the set of binary codewords according to certain encoded information of the current block, and the encoded information is, for example, a quantization parameter (QP) associated with TB / CB and / or a slice, a prediction mode of the CU (such as IBC mode or intra or inter frame), and / or a slice type (such as I slice, P slice or B slice). Again, different methods can be used to obtain the set of variables of binary codewords, and some exemplary methods are listed below.
[0176] First, use the same process for determining the codeword of abs_remainder as that used in the current VVC, but adopt different rice parameters.
[0177] Second, the k-th order exponential Golomb binarization process (EGk).
[0178] Third, finite k-th order exponential Golomb binarization.
[0179] In the above methods, different rice parameters can be used to obtain different sets of binary codewords. For a given residual sample block, the rice parameter used is determined according to the CU QP represented as QP CU rather than the adjacent level information. A specific example is shown in Table 6, where TH1 to TH4 are predefined thresholds satisfying (TH1 < TH2 < TH3 < TH4), and K0 to K4 are predefined rice parameters. It should be noted that the same logic can have different implementations in practice. For example, the same rice parameter can also be obtained from the QP value of the current CU using certain equations or look-up tables, as shown in Table 6.
[0180] According to the fifth aspect of the present disclosure, a set of parameters and / or thresholds associated with the codeword determination of syntax elements in transform coefficient coding and decoding and / or transform skip residual coding are signaled into the bitstream. When encoding and decoding the syntax elements through an entropy codec (such as arithmetic coding), the determined codeword is used as the binarized codeword.
[0181] Note that the parameter set and / or threshold can be a complete set or subset of all parameters and thresholds associated with the codeword determination of the syntax elements. The parameter set and / or threshold can be represented by signals at different levels in the video bitstream. For example, these parameter sets and / or thresholds can be represented by signals at the sequence level (e.g., sequence parameter set), picture level (e.g., picture parameter set and / or picture header), stripe level (e.g., stripe header), coding tree unit (CTU) level, or coding unit (CU) level.
[0182] In one example, the rice parameter used to determine the codewords for encoding and decoding the abs_remainder syntax in transform skip residual encoding and decoding is represented by signals in the strip header, picture header, PPS, and / or SPS. When the CU is encoded and decoded in transform skip mode and the CU is associated with the aforementioned strip header, picture header, PPS, and / or SPS, the rice parameter, represented by signals, is used to determine the codewords used for encoding and decoding the abs_remainder syntax.
[0183] According to a sixth aspect of this disclosure, a set of parameters and / or thresholds associated with the codeword determination shown in the first and second aspects are used for transforming the syntax elements of coefficient encoding / decoding and / or transforming the skip residual encoding / decoding. Different sets may be used depending on whether the current block contains luminance residuals / coefficients or chrominance residuals / coefficients. The determined codewords are used as binarized codewords when the syntax elements are encoded / decoded by an entropy codec (e.g., arithmetic codec).
[0184] In one example, the codeword of abs_remainder associated with the transform residual codec used in the current VVC is used for both the luma block and the chroma block, but the luma block and the chroma block use different fixed rice parameters (e.g., K1 for the luma block and K2 for the chroma block, where K1 and K2 are integers).
[0185] According to a seventh aspect of this disclosure, the set of parameters and / or thresholds associated with the determination of codewords for syntax elements in transform coefficient encoding / decoding and / or transform skip residual encoding / decoding are represented as signals in a bitstream. Different sets can be represented as signals for luma blocks and chroma blocks. When syntax elements are encoded / decoded using an entropy codec (e.g., an arithmetic codec), the determined codewords are used as binarized codewords.
[0186] The same approach explained above also applies to escape value encoding and decoding in palette mode, such as palette_escape_val.
[0187] According to the eighth aspect of this disclosure, different k-order exponential Golomb binarizations can be used to obtain different sets of binary codewords for encoding and decoding escape values in palette mode. In one example, for a given escape sample block, the exponential Golomb parameter used (i.e., the value of k) is based on the block's QP value (denoted as QP). CU The value of parameter k can be determined based on a given QP value for a block, using the same example shown in Table 6. While four different thresholds (from TH1 to TH4) are listed in this example, the value of parameter k can be determined based on these thresholds and QP. CU Five different k values (from K0 to K4) are obtained, but it's worth noting that the number of thresholds is for illustrative purposes only. In practice, the entire QP value range can be partitioned into different numbers of QP value segments using different numbers of thresholds, and for each QP value segment, different k values can be used to obtain the corresponding binary codewords for encoding and decoding the escape values of blocks encoded and decoded in palette mode. It is also worth noting that the same logic can be implemented differently in practice. For example, the same rice parameter can be obtained using certain equations or lookup tables.
[0188] According to a ninth aspect of this disclosure, the parameter set and / or threshold associated with the codeword determination of the syntax elements of the escape sample are represented as signals in a bitstream. When the syntax elements of the escape sample are encoded or decoded by an entropy codec (e.g., an arithmetic codec), the determined codeword is used as a binarized codeword.
[0189] Note that the parameter set and / or threshold can be a complete set or subset of all parameters and thresholds associated with the codeword determination of the syntax elements. The parameter set and / or threshold can be represented by signals at different levels in the video bitstream. For example, these parameter sets and / or thresholds can be represented by signals at the sequence level (e.g., sequence parameter set), picture level (e.g., picture parameter set and / or picture header), stripe level (e.g., stripe header), coding tree unit (CTU) level, or coding unit (CU) level.
[0190] In one example according to this aspect, k-order exponential Golomb binarization is used to determine the codewords for encoding and decoding the palette_escape_val syntax in palette mode, and the value of k is signaled to the decoder in the bitstream. The value of k can be signaled at different levels, for example, it can be signaled in strip headers, picture headers, PPS and / or SPS, etc. When the CU is encoded and decoded in palette mode and the CU is associated with the aforementioned strip headers, picture headers, PPS and / or SPS, the exponential Golomb parameter, represented by signals, is used to determine the codewords used for encoding and decoding the palette_escape_val syntax.
[0191] According to the tenth aspect of this disclosure, the coordination of level mapping for transform skip mode and regular transform mode involves using the same conditions for applying level mapping for both transform skip mode and regular transform mode. In one example, it is proposed to apply level mapping after the number of context codec bits (CCB) exceeds the limits for both transform skip mode and regular transform mode. In another example, it is proposed to apply level mapping before the number of context codec bits (CCB) exceeds the limits for both transform skip mode and regular transform mode.
[0192] According to the eleventh aspect of this disclosure, the same method for deriving the mapping positions in the level mapping is used for both the transform skip mode and the regular transform mode. In one example, it is proposed that the method for deriving the mapping positions in the level mapping used in the transform skip mode is also applied to the regular transform mode. In another example, it is proposed that the method for deriving the mapping positions in the level mapping used in the regular transform mode is also applied to the transform skip mode.
[0193] According to the twelfth aspect of this disclosure, the same level mapping method is applied to both the transform skip mode and the regular transform mode. In one example, it is proposed that the level mapping function used in the transform skip mode is also applied to the regular transform mode. In another example, it is proposed that the level mapping function used in the regular transform mode is also applied to the transform skip mode.
[0194] Simplification of Rice Parameter Derivation in Residual Encoding and Decoding: According to the thirteenth aspect of this disclosure, when encoding and decoding syntax elements of abs_remainder / dec_abs_level using Golomb-Rice codes, it is proposed to use simple logic (such as shift or division operations) instead of a lookup table to obtain the rice parameter. According to this disclosure, the lookup table specified in Table 4 can be removed. In one example, the rice parameter cRiceParam is obtained as follows: cRiceParam = (locSumAbs>>n), where n is a positive number, such as 3. It is worth noting that in practice, the same result can be achieved using other different logic, for example, by performing division with a value equal to the power of 2. An example of the corresponding decoding process based on the VVC draft is shown below, with the changed parts shown in bold and italics, and the deleted content shown in strikethrough.
[0195] Table 7. Derivation of Rice Parameters
[0196]
[0197] According to the fourteenth aspect of this disclosure, it is proposed to use fewer adjacent positions to obtain the rice parameter when encoding and decoding the syntax element abs_remainder / dec_abs_level using Golomb-Rice codes. In one example, it is proposed to use only two adjacent positions to obtain the rice parameter when encoding and decoding the syntax element abs_remainder / dec_abs_level. The corresponding decoding process based on the VVC draft is shown below, with the changed parts shown in bold and italics, and the deleted content shown in strikethrough.
[0198] Table 8. Derivation of Rice parameters
[0199] In another example, it is proposed that when encoding and decoding the syntax elements of abs_remainder / dec_abs_level, only one adjacent position is used to obtain the rice parameter. The corresponding decoding process based on the VVC draft is shown below, with the changed parts shown in bold and italics, and the deleted content shown in strikethrough.
[0200] Table 9. Derivation of Rice Parameters
[0201] According to the fifteenth aspect of this disclosure, when encoding and decoding the syntax elements of abs_remainder / dec_abs_level using Golomb-Rice codes, it is proposed to use different logic to adjust the value of locSumAbs based on the value of baseLevel to derive the rice parameter. In one example, the scaling and offset operations are appended to "(locSumAbs - baseLevel". 5) The form "alpha + beta" is used. When the alpha value is 1.5 and the beta value is 1, the corresponding decoding process based on the VVC draft is shown below. The changed parts are shown in bold and italic fonts, and the deleted content is shown in strikethrough font.
[0202] Table 10. Derivation of Rice parameters
[0203] According to the sixteenth aspect of this disclosure, it is proposed to use Golomb-Rice codes to remove the clipping operation used to obtain the rice parameter in the syntax elements abs_remainder / dec_abs_level. An example of the decoding process in the VVC draft according to this disclosure is shown below, with the changed parts shown in bold and italics, and the deleted content shown in strikethrough.
[0204] Table 11. Derivation of Rice parameters
[0205] According to this disclosure, an example of the decoding process in the VVC draft is shown below, with the changed parts shown in bold and italic fonts, and the deleted content shown in strikethrough font.
[0206] Table 12. Derivation of Rice parameters
[0207] According to the seventeenth aspect of this disclosure, when encoding and decoding the syntax elements of abs_remainder / dec_abs_level using Golomb-Rice codes, the initial value of locSumAbs is changed from 0 to a non-zero integer to obtain the rice parameter. In one example, the initial value 1 is assigned to locSumAbs, and the corresponding decoding process based on the VVC draft is shown below, with the changed parts shown in bold and italics, and the deleted content shown in strikethrough.
[0208] Table 13. Derivation of Rice parameters
[0209] According to the eighteenth aspect of this disclosure, when encoding and decoding syntax elements of abs_remainder / dec_abs_level using Golomb-Rice codes, the rice parameter is obtained by using the maximum value of adjacent positional level values instead of their sum. An example of the corresponding decoding process based on the VVC draft is shown below, with the changed parts indicated in bold and italics, and the deleted content indicated in strikethrough.
[0210] Table 14. Derivation of Rice parameters
[0211] According to the nineteenth aspect of this disclosure, when encoding and decoding the syntax element abs_remainder / dec_abs_level using Golomb-Rice codes, a rice parameter is proposed based on the relative magnitude of each AbsLevel value at adjacent positions and the base level value. In one example, the rice parameter is obtained based on how many 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, with variations indicated in bold and italics, and deleted content indicated by strikethrough.
[0212] Table 15. Derivation of Rice parameters
[0213] In another example, the rice parameter is derived based on the sum of (AbsLevel - baseLevel) values of adjacent positions where the AbsLevel value is greater than the base Level value. An example of the corresponding decoding process based on the VVC draft is shown below, with changes indicated in bold and italics, and deleted content indicated with strikethrough.
[0214] Table 16. Derivation of Rice Parameters
[0215]
[0216] According to this disclosure, an example of the decoding process in the VVC draft is shown below, with the changed parts shown in bold and italic fonts, and the deleted content shown in strikethrough font.
[0217] Table 17. Derivation of Rice parameters
[0218]
[0219] The simplification of level mapping position derivation in residual encoding and decoding, according to the twentieth aspect of this disclosure, proposes to remove QState from the derivation of ZeroPos[n], so that ZeroPos[n] is obtained only from cRiceParam. An example of the corresponding decoding process based on the VVC draft is shown below, with the changed parts shown in bold and italics, and the deleted content shown in strikethrough.
[0220] Table 18. Derivation of Rice parameters
[0221]
[0222] According to the twenty-first aspect of this disclosure, ZeroPos[n] is obtained based on the value of locSumAbs. An example of the corresponding decoding process based on the VVC draft is shown below, with the changed parts shown in bold and italic font, and the deleted content shown in strikethrough font.
[0223] Table 19. Derivation of Rice Parameters
[0224] According to the twenty-second aspect of this disclosure, ZeroPos[n] is proposed to be obtained based on the values of AbsLevel at adjacent positions. In one example, ZeroPos[n] is obtained based on the maximum value among AbsLevel[xC + 1][yC] and AbsLevel[xC][yC + 1]. An example of the corresponding decoding process based on the VVC draft is shown below, with the changed parts shown in bold and italic fonts, and the deleted content shown in strikethrough font.
[0225] Table 20. Derivation of Rice Parameters
[0226] According to aspect twenty-three of this disclosure, cRiceParam and ZeroPos[n] are obtained 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, with the changed parts shown in bold and italics, and the deleted content shown in strikethrough.
[0227] Table 21. Derivation of Rice parameters
[0228] The methods explained in the foregoing also apply to obtaining predCoeff in residual codecs for transform skipping modes. In one example, the variable predCoeff is obtained as follows: predCoeff = Max(absLeftCoeff, absAboveCoeff) + 1. In this disclosure, to address the problems pointed out in the "Improvements to Residual and Coefficient Codecs" section, methods are provided to simplify and / or further improve existing designs of residual codecs. Generally, the main features of the techniques proposed in this disclosure are summarized below.
[0229] First, adjust the Rice parameter derivation used in the conventional residual encoding and decoding based on the current design.
[0230] Second, change the binary method used in the conventional residual encoding and decoding.
[0231] Third, change the Rice parameter derivation used in the conventional residual encoding and decoding.
[0232] According to the twenty-fourth aspect of the present disclosure, a variable method of using Rice parameters in residual encoding and decoding is proposed to encode and decode certain syntax elements (such as abs_remainder / dec_abs_level), and the selection is determined according to certain encoded information of the current block (such as quantization parameters or encoding and decoding bit depths associated with TB / CB and / or stripe / profile) and / or according to a new flag (such as extended_precision_processing_flag) associated with the TB / CB / stripe / picture / sequence level. Different methods can be used to obtain the Rice parameter, and some exemplary methods are listed below.
[0233] First, cRiceParam = (cRiceParam<<a)+ (cRiceParam>>b)+c, where a, b, and c are positive numbers, for example, {a,b,c}= {1,1,0}. It should be noted that in practice, the same result can be achieved with other different logics, for example, multiplication with a value equal to the nth power of 2.
[0234] Second, cRiceParam = (cRiceParam<<a) +b, where a and b are positive numbers, for example, {a,b}= {1,1}. It should be noted that in practice, the same result can be achieved with other different logics, for example, multiplication with a value equal to the nth power of 2.
[0235] Third, cRiceParam = (cRiceParam a ) +b, where a and b are positive numbers, for example, {a,b}= {1.5,0}. It should be noted that in practice, other different logics can be used to achieve the same result, for example, multiplication with a value equal to the nth power of 2.
[0236] An example of the corresponding decoding process based on the VVC draft is shown below, with changes indicated in bold and italics, and deleted content indicated by strikethrough. Changes to the VVC draft are shown in bold and italics in Table 22. It is worth noting that the same logic can be implemented differently in practice. For example, the same rice parameter can also be obtained from the bit depth value of the current CU / Sequence using certain equations or lookup tables.
[0237] Table 22. Derivation of Rice parameters
[0238]
[0239] In another example, when the bit depth is greater than or equal to a predefined threshold (e.g., 10, 11, 12, 13, 14, 15, or 16), the Rice parameter cRiceParam is obtained as follows: cRiceParam = (cRiceParam <<a)+(cRiceParam> >b)+c, where a, b, and c are positive numbers, such as 1. The corresponding decoding process based on the VVC draft is shown below, with changes indicated in bold and italics, and deleted content indicated by strikethrough. Changes to the VVC draft are shown in bold and italics in Table 23. It is worth noting that the same logic can be implemented differently in practice. For example, the same rice parameter can also be obtained from the bit depth value of the current CU / Sequence using certain equations or lookup tables.
[0240] Table 23. Derivation of Rice parameters
[0241]
[0242] According to the twenty-fifth aspect of this disclosure, a binary approach for residual encoding and decoding of profiles exceeding 10 bits is proposed. This approach uses a variable set of binary codewords to encode and decode certain syntax elements (e.g., `abs_remainder` / `dec_abs_level`), and determines the selection based on certain encoded information of the current block (e.g., quantization parameters or encoding / decoding bit depth associated with the TB / CB and / or stripe / profile) and / or based on new flags associated with the TB / CB / strip / picture / sequence level (e.g., `extended_precision_processing_flag`). Different methods can be used to obtain the variable set of binary codewords; some exemplary methods are listed below.
[0243] First, use the same procedure for determining the codeword for abs_remainder as that used in the current VVC, but always adopt a fixed Rice parameter (e.g., 2, 3, 4, 5, 6, 7, or 8). According to some encoded / decoded information of the current block, such as the quantization parameter or the encoded / decoded bit depth associated with the TB / CB and / or slice / profile, and / or according to the syntax elements associated with the TB / CB / slice / picture / sequence level, such as the rice_parameter_value, this fixed value may be different under different conditions. A specific example is shown in Table 24, where TH1 to TH4 are predefined thresholds satisfying (TH1 < TH2 < TH3 < TH4), and K0 to K4 are predefined Rice parameters. It should be noted that the same logic can have different implementations in practice. For example, some equations or look-up tables can also be used to obtain the same Rice parameter from the bit depth value of the current CU / sequence, as shown in Table 24.
[0244] Second, fixed-length binarization.
[0245] Third, truncated Rice binarization.
[0246] Fourth, truncated binary (TB) binarization process.
[0247] Fifth, k-th order exponential Golomb binarization process (EGk).
[0248] Sixth, finite k-th order exponential Golomb binarization.
[0249] Table 24. Determination of Rice parameter based on bit depth
[0250]
[0251] In one example, when the new flag (e.g., extended_precision_processing_flag) is equal to 1, the Rice parameter cRiceParam is fixed to n, where n is a positive number (e.g., 2, 3, 4, 5, 6, 7, or 8). The fixed value may be different under different conditions. An example of the corresponding decoding process based on the VVC draft is shown below, with the changed parts shown in bold and italic fonts, and the deleted content shown in strikethrough fonts. The changes to the VVC draft are shown in bold and italic fonts in Table 25.
[0252] Table 25. Rice parameter derivation process
[0253] In another example, it is proposed that when a new flag (e.g., extended_precision_processing_flag) equals 1, only a fixed value for the rice parameter should be used when encoding and decoding syntax elements of abs_remainder / dec_abs_level. The corresponding decoding process based on the VVC draft is shown below, with changes indicated in bold and italics, and deleted content indicated by strikethrough. Changes to the VVC draft are shown in bold and italics in Table 26.
[0254] Table 26. Derivation of Rice Parameters
[0255]
[0256] In yet another example, when the bit depth is greater than or equal to a predefined threshold (e.g., 10, 11, 12, 13, 14, 15, or 16), the Rice parameter cRiceParam is fixed at n, where n is a positive number, such as 4, 5, 6, 7, or 8. The fixed value may vary under different conditions. An example of the corresponding decoding process based on the VVC draft is shown below, where TH is a predefined threshold (e.g., 10, 11, 12, 13, 14, 15, or 16). Changes to the VVC draft are shown in bold and italics in Table 27, with the changed portions shown in bold and italics, and deleted content shown with strikethrough.
[0257] Table 27. Derivation of Rice Parameters
[0258] In yet another example, it is proposed that when the bit depth is greater than a predefined threshold (e.g., 10, 11, 12, 13, 14, 15, or 16), only a fixed rice parameter value is used when encoding and decoding syntax elements of abs_remainder / dec_abs_level. The corresponding decoding process based on the VVC draft is shown below, where TH is the predefined threshold (e.g., 10, 11, 12, 13, 14, 15, or 16), and the changed parts are shown in bold and italics, and the deleted content is shown in strikethrough. The changes to the VVC draft are shown in bold and italics in Table 28.
[0259] Table 28. Derivation of Rice parameters
[0260] According to the twenty-sixth aspect of this disclosure, a variable method for using rice parameters in residual encoding and decoding is proposed to encode and decode certain syntax elements (e.g., abs_remainder / dec_abs_level), and to determine the selection based on certain encoded information of the current block (e.g., quantization parameters or encoding / decoding bit depth associated with TB / CB and / or stripe / profile) and / or based on new flags associated with TB / CB / strip / picture / sequence level (e.g., extended_precision_processing_flag). Different methods can be used to obtain the rice parameters; some exemplary methods are listed below.
[0261] First, a counter is proposed to obtain the rice parameter. The counter is determined based on the value of the encoded coefficients and some encoded information of the current block (e.g., part ID). In a specific example, riceParameter = counter / a, where a is a positive number, such as 4, and it maintains 2 counters (divided by luminance / chrominance). These counters are reset to 0 at the beginning of each stripe. Once encoding and decoding have begun, if this is the first coefficient encoded and decoded in a sub-TU, the counters will be updated as follows:
[0262] Second, a shift operation is proposed to be added to the rice parameter derivation in VVC. The shift is determined based on the value of the encoded coefficients. An example of the corresponding decoding process based on the VVC draft is shown below, where the shift is determined according to the counter of Method 1, and the changed parts are shown in bold and italics, and the deleted content is shown in strikethrough. The changes to the VVC draft are shown in bold and italics in Table 29.
[0263] Table 29. Derivation of Rice Parameters
[0264] First, a shift operation is proposed to be added to the rice parameter derivation in VVC. The shift is determined based on certain encoded information of the current block, such as the codec bit depth associated with the TB / CB and / or stripe profile (e.g., a 14-bit or 16-bit profile). An example of the corresponding decoding process based on the VVC draft is shown below, where the shift is determined according to the counter of Method 1, and the changed parts are shown in bold and italics, while the deleted content is shown in strikethrough. The changes to the VVC draft are shown in bold and italics in Table 30.
[0265] Table 30. Derivation of Rice Parameters
[0266] Transform skip residual encoding and decoding According to the twenty-seventh aspect of the present disclosure, it is proposed to encode and decode certain syntax elements (such as abs_remainder) using a set of variables of binary codewords in transform skip residual encoding and decoding, and to determine the selection according to certain encoded information of the current block (such as quantization parameters or encoding / decoding bit depths associated with TB / CB and / or stripes / profiles) and / or according to a new flag associated with the TB / CB / stripe / picture / sequence level (such as extended_precision_processing_flag). Different methods can be used to obtain the set of variables of binary codewords, and some exemplary methods are listed below.
[0267] First, use the same procedure for determining the codeword for abs_remainder as used in the current VVC, but always select a fixed rice parameter (such as 2, 3, 4, 5, 6, 7, or 8). According to certain encoded information of the current block, such as quantization parameters, frame type (such as I, P, or B), component ID (such as luminance or chrominance), color format (such as 420, 422, or 444), or encoding / decoding bit depths associated with TB / CB and / or stripes / profiles, and / or according to a syntax element associated with the TB / CB / stripe / picture / sequence level, such as rice_parameter_value, this fixed value may be different under different conditions. A specific example is shown in Table 7, where TH1 to TH4 are predefined thresholds satisfying (TH1 < TH2 < TH3 < TH4), and K0 to K4 are predefined rice parameters. It should be noted that the same logic can have different implementations in practice. For example, the same rice parameter can also be obtained from the bit depth value of the current CU / sequence using certain equations or look-up tables, as shown in Table 7.
[0268] Second, fixed-length binarization.
[0269] Third, truncated Rice binarization.
[0270] Fourth, truncated binary (TB) binarization process.
[0271] Fifth, k-th order exponential Golomb binarization process (EGk).
[0272] Sixth, limited k-th order exponential Golomb binarization.
[0273] 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 italics in Table 31, and deleted content is indicated with strikethrough. It is worth noting that the same logic can be implemented differently in practice. For example, certain equations or lookup tables can also be used to obtain the same rice parameters.
[0274] Table 31. Derivation of Rice parameters
[0275] In another example, it is proposed that when a new flag (e.g., extended_precision_processing_flag) equals 1, only a fixed value for the rice parameter is used when encoding and decoding syntax elements of abs_remainder. The corresponding decoding process based on the VVC draft is shown below, with changes indicated in bold and italics, and deletions indicated with strikethrough. Changes to the VVC draft are shown in bold and italics in Table 32.
[0276] Table 32. Derivation of Rice Parameters
[0277] In yet another example, when the new flag (e.g., extended_precision_processing_flag) equals 1, the Rice parameter cRiceParam is fixed at n, where n is a positive number (e.g., 2, 3, 4, 5, 6, 7, or 8). The fixed value may vary under different conditions. An example of the corresponding decoding process based on the VVC draft is shown below, with changes indicated in bold and italics, and deletions indicated with strikethrough. Changes to the VVC draft are shown in bold and italics in Table 33.
[0278] Table 33. Derivation of Rice Parameters
[0279] In yet another example, when the bit depth is greater than or equal to a predefined threshold (e.g., 10, 11, 12, 13, 14, 15, or 16), the Rice parameter cRiceParam is fixed at n, where n is a positive number, such as 4, 5, 6, 7, or 8. The fixed value may vary under different conditions. An example of the corresponding decoding process based on the VVC draft is shown below, where TH is a predefined threshold (e.g., 10, 11, 12, 13, 14, 15, or 16), and the changed parts are shown in bold and italics, with deleted content indicated by strikethrough. Changes to the VVC draft are shown in bold and italics in Table 34.
[0280] Table 34. Derivation of Rice Parameters
[0281]
[0282] In yet another example, a control flag is signaled in the stripe header to indicate whether signal transmission of the Rice parameter for the transform skip block is enabled or disabled. When the control flag is signaled as enabled, a further signaled syntax element is used for each transform skip strip to indicate the Rice parameter for that strip. When the control flag is signaled as disabled (e.g., set to "0"), no further signaled syntax element is used at a lower level to indicate the Rice parameter for the transform skip strip; instead, a default Rice parameter (e.g., 1) is used for all transform skip strips. An example of the corresponding decoding process based on the VVC draft is shown below, where TH is a predefined value (e.g., 0, 1, 2), and the changed parts are shown in bold and italics, with deleted content shown in strikethrough. Changes to the VVC draft are shown in bold and italics in Table 35. It is worth noting that sh_ts_residual_coding_rice_index can be encoded and decoded in different ways and / or may have a maximum value. For example, u(n), using an n-bit unsigned integer, or f(n), using an n-bit (left-to-right) fixed-pattern bit string, can also be used to encode / decode the same syntax elements.
[0283] Striped Header Syntax Table 35. Syntax of Residual Encoding and Decoding
[0284]
[0285] A value of 1 for `sh_ts_residual_coding_rice_flag` indicates that `sh_ts_residual_coding_rice_index` may exist in the current slice. A value of 0 for `sh_ts_residual_coding_rice_flag` indicates that `sh_ts_residual_coding_rice_index` does not exist in the current slice. When `sh_ts_residual_coding_rice_flag` does not exist, it is inferred that the value of `sh_ts_residual_coding_rice_flag` is equal to 0.
[0286] The sh_ts_residual_coding_rice_index specifies the rice parameter used in the residual_ts_coding() syntax structure.
[0287] Table 36. Derivation of Rice Parameters
[0288] In yet another example, a control flag is signaled in the sequence parameter set (or in the sequence parameter set range extension syntax) to indicate whether signal transmission of the Rice parameter for the transform skip block is enabled or disabled. When the control flag is signaled as enabled, a further signaled syntax element is used for each transform skip strip to indicate the Rice parameter for that strip. When the control flag is signaled as disabled (e.g., set to equal to "0"), no further signaled syntax element is used at a lower level to indicate the Rice parameter for the transform skip strip; instead, a default Rice parameter (e.g., 1) is used for all transform skip strips. An example of the corresponding decoding process based on the VVC draft is shown below, where TH is a predefined value (e.g., 0, 1, 2). Changes to the VVC draft are shown in bold and italics in Table 37, and deleted content is shown in strikethrough. It is worth noting that sh_ts_residual_coding_rice_idx can be encoded and decoded in different ways and / or may have a maximum value. For example, u(n), using an n-bit unsigned integer, or f(n), using an n-bit (from left to right) fixed-pattern bit string written left-bit first, can also be used to encode / decode the same syntax elements.
[0289] Sequence Parameter Set (RBSP) Syntax Table 37. Syntax of Residual Encoding and Decoding
[0290] `sps_ts_residual_coding_rice_present_in_sh_flag` equal to 1 indicates that `sh_ts_residual_coding_rice_idx` may exist in the SH syntax structure referencing SPS. `sps_ts_residual_coding_rice_present_in_sh_flag` equal to 0 indicates that `sh_ts_residual_coding_rice_idx` does not exist in the SH syntax structure referencing SPS. When `sps_ts_residual_coding_rice_present_in_sh_flag` does not exist, it is inferred that the value of `sps_ts_residual_coding_rice_present_in_sh_flag` is equal to 0.
[0291] Striped Header Syntax Table 38. Syntax of Residual Encoding and Decoding
[0292] sh_ts_residual_coding_rice_idx specifies the rice parameter used in the residual_ts_coding() syntax structure.
[0293] Table 39. Derivation of Rice Parameters
[0294] In yet another example, a syntax element is signaled for each transform skipped strip to indicate the Rice parameter of that strip. An example of the corresponding decoding process based on the VVC draft is illustrated below. Changes to the VVC draft are shown in bold and italics in Table 40. It is worth noting that sh_ts_residual_coding_rice_idx can be encoded / decoded in different ways and / or may have a maximum value. For example, u(n), using an n-bit unsigned integer, or f(n), using an n-bit (left-to-right) fixed-pattern bit string written left-bit-first, can also be used to encode / decode the same syntax element.
[0295] Striped Header Syntax Table 40. Syntax of Residual Encoding and Decoding
[0296] `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, it is assumed that the value of `sh_ts_residual_coding_rice_idx` is equal to 0.
[0297] Table 41. Derivation of Rice parameters
[0298] In yet another example, a control flag is signaled in the picture parameter set range extension syntax to indicate whether signal transmission of the Rice parameter for the transform skip block is enabled or disabled. When the control flag is signaled as enabled, a syntax element is further signaled to indicate the Rice parameter for that picture. When the control flag is signaled as disabled (e.g., set to "0"), no further syntax element is signaled at a lower level to indicate the Rice parameter for the transform skip strip; instead, the default Rice parameter (e.g., 1) is used for all transform skip strips. An example of the corresponding decoding process based on the VVC draft is shown below, where TH is a predefined value (e.g., 0, 1, 2). Changes to the VVC draft are shown in bold and italics in Table 42. It is worth noting that pps_ts_residual_coding_rice_idx can be encoded and decoded in different ways and / or may have a maximum value. For example, u(n), using an n-bit unsigned integer, or f(n), using an n-bit (from left to right) fixed-pattern bit string written left-bit first, can also be used to encode / decode the same syntax elements.
[0299] Image parameter set range extension syntax table 42. Residual encoding and decoding syntax
[0300] A value of 1 for `pps_ts_residual_coding_rice_flag` indicates that `pps_ts_residual_coding_rice_index` may exist in the current image. A value of 0 for `pps_ts_residual_coding_rice_flag` indicates that `pps_ts_residual_coding_rice_idx` does not exist in the current image. When `pps_ts_residual_coding_rice_flag` does not exist, it is assumed that the value of `pps_ts_residual_coding_rice_flag` is equal to 0.
[0301] pps_ts_residual_coding_rice_idx specifies the rice parameter used in the residual_ts_coding() syntax structure.
[0302] Table 43. Derivation of Rice Parameters
[0303]
[0304] In yet another example, it is proposed to encode and decode the syntax element `abs_remainder` using only the varying `rice` parameter. The value of the applied `rice` parameter can be determined based on some encoded information of the current block, such as block size, quantization parameters, bit depth, transform type, etc. In one specific embodiment, it is proposed to adjust the `rice` parameter based on the encoding / decoding bit depth and quantization parameters applicable to a CU. The corresponding decoding process based on the VVC draft is shown below, with changes to the VVC draft shown in bold and italics in Table 44, and deleted content shown in strikethrough. It is worth noting that the same logic can be implemented differently in practice. For example, certain equations or lookup tables can also be used to obtain the same `rice` parameter.
[0305] Table 44. Derivation of Rice Parameters
[0306]
[0307]
[0308] In yet another example, an example of the corresponding decoding process based on the VVC draft is shown below, where TH is a predefined threshold (e.g., 33 or 34). Changes to the VVC draft are shown in bold and italics in Table 45, and deleted content is indicated with strikethrough. It is worth noting that the same logic can be implemented differently in practice. For example, certain equations or lookup tables can also be used to obtain the same rice parameters.
[0309] Table 45. Derivation of Rice Parameters
[0310] In yet another example, an example of the corresponding decoding process based on the VVC draft is shown below, where TH A and TH B It is a predefined threshold (e.g., TH). A= 8、TH B = 33 or 34). Changes to the VVC draft are shown in bold and italics in Table 46, and deleted content is indicated with strikethrough. It is worth noting that the same logic can be implemented differently in practice. For example, certain equations or lookup tables can also be used to obtain the same rice parameters.
[0311] Table 46. Derivation of Rice Parameters
[0312] In yet another example, it is proposed that when a new flag (e.g., extended_precision_processing_flag) equals 1, only the changed rice parameters are used to encode and decode the syntax elements of abs_remainder. The changed value can be determined based on some encoded information of the current block, such as block size, quantization parameters, bit depth, transform type, etc. In one specific embodiment, it is proposed to adjust the rice parameters based on the encoding / decoding bit depth and quantization parameters applicable to a CU. The corresponding decoding process based on the VVC draft is shown below. Changes to the VVC draft are shown in bold and italics in Table 47. It is worth noting that the same logic can be implemented differently in practice. For example, certain equations or lookup tables can also be used to obtain the same rice parameters.
[0313] Table 47. Derivation of Rice Parameters
[0314]
[0315] In yet another example, an example of the corresponding decoding process based on the VVC draft is shown below, where TH is a predefined threshold (e.g., 18, 19). Changes to the VVC draft are shown in bold and italics in Table 48. It is worth noting that the same logic can be implemented differently in practice. For example, certain equations or lookup tables can also be used to obtain the same rice parameters.
[0316] Table 48. Derivation of Rice Parameters
[0317]
[0318] In yet another example, an example of the corresponding decoding process based on the VVC draft is shown below, where TH A and TH B It is a predefined threshold (e.g., TH).A = 8、TH B = 18 or 19). Changes to the VVC draft are shown in bold and italics in Table 49. It is worth noting that the same logic can be implemented differently in practice. For example, certain equations or lookup tables can also be used to obtain the same rice parameters.
[0319] Table 49. Derivation of Rice Parameters
[0320] Figure 16 illustrates a method for video encoding. For example, this method can be applied to an encoder.
[0321] In step 1610, the encoder can receive video input. For example, the video input can be a live stream.
[0322] In step 1612, the encoder can obtain quantization parameters based on the video input. For example, the quantization parameters can be calculated by the quantization unit in the encoder.
[0323] In step 1614, the encoder may obtain rice parameters based on at least one predefined threshold, encoding / decoding bit depth, and quantization parameters. For example, rice parameters are used to represent the syntax of abs_remainder and dec_abs_level using signals.
[0324] In step 1616, the encoder can perform entropy encoding on the video bitstream based on the rice parameter. For example, the video bitstream can be entropy encoded to produce a compressed video bitstream.
[0325] In yet another example, it is proposed that when the bit depth is greater than 10, a fixed value (e.g., 2, 3, 4, 5, 6, 7, or 8) be used for the rice parameter when encoding and decoding syntax elements of `abs_remainder`. This fixed value may vary under different conditions depending on some encoded information of the current block (e.g., quantization parameters). An example of the corresponding decoding process based on the VVC draft is shown below, where TH is a predefined threshold (e.g., 18, 19). Changes to the VVC draft are shown in bold and italics in Table 50. It is worth noting that the same logic can be implemented differently in practice. For example, the same rice parameter can also be obtained using certain equations or lookup tables.
[0326] Table 50. Derivation of Rice Parameters
[0327] In yet another example, an example of the corresponding decoding process based on the VVC draft is shown below, where THA and TH B It is a predefined threshold (e.g., TH). A = 8、TH B = 18 or 19). Changes to the VVC draft are shown in bold and italics in Table 51. It is worth noting that the same logic can be implemented differently in practice. For example, certain equations or lookup tables can also be used to obtain the same rice parameters.
[0328] Table 51. Derivation of Rice Parameters
[0329] In yet another example, an example of the corresponding decoding process based on the VVC draft is shown below, where TH is a predefined threshold (e.g., 33 or 34). Changes to the VVC draft are shown in bold and italics in Table 52. It is worth noting that the same logic can be implemented differently in practice. For example, certain equations or lookup tables can also be used to obtain the same rice parameters.
[0330] Table 52. Derivation of Rice Parameters
[0331]
[0332] In yet another example, an example of the corresponding decoding process based on the VVC draft is shown below, where TH A and TH B It is a predefined threshold (e.g., TH). A = 8、TH B = 33 or 34). Changes to the VVC draft are shown in bold and italics in Table 53. It is worth noting that the same logic can be implemented differently in practice. For example, certain equations or lookup tables can also be used to obtain the same rice parameters.
[0333] Table 53. Derivation of Rice Parameters
[0334] It is worth noting that the equations used to calculate specific rice parameters in the above illustration are merely examples to illustrate the proposed idea. For those familiar with modern video codec techniques, other mapping functions (or equivalent mapping equations) are already applicable to the proposed idea (i.e., determining the rice parameters for the transform skip mode based on the codec bits and the applied quantization parameters). Furthermore, it should be mentioned that in current VVC designs, the values of the applied quantization parameters are allowed to be changed at the block group level. Therefore, the proposed rice parameter adjustment scheme allows for flexible adjustment of the rice parameters for the transform skip mode at the block group level.
[0335] According to the twenty-eighth aspect of this disclosure, signaling information for conventional residual encoding / decoding and transform skip residual encoding / decoding is proposed to be represented by signals for the rice parameters used to encode / decode certain syntax elements (e.g., abs_remainder in transform skip residual encoding / decoding, shift parameters and offset parameters for obtaining rice parameters for abs_remainder / dec_abs_level in conventional residual encoding / decoding), and whether to represent them by signals is determined based on certain encoded information of the current block (e.g., quantization parameters or encoding / decoding bit depth associated with TB / CB and / or stripe / profile) and / or based on new flags associated with TB / CB / strip / picture / sequence level (e.g., sps_residual_coding_info_present_in_sh_flag).
[0336] In one example, a control flag is signaled in the strip header to indicate whether signal transmission for the Rice parameter of the transform skip block and signal transmission for the shift and / or offset parameters used to obtain the Rice parameter in the transform block are enabled or disabled. When the control flag is signaled as enabled, a syntax element is further signaled for each transform skip strip to indicate the Rice parameter of that strip, and two syntax elements are further signaled for each transform strip to indicate the shift and / or offset parameters used to obtain the Rice parameter of that strip. When the control flag is signaled as disabled (e.g., set to "0"), no further syntax elements are signaled at a lower level to indicate the Rice parameter of the transform skip strip; instead, the default Rice parameter (e.g., 1) is used for all transform skip strips, and no further syntax elements are signaled at a lower level to indicate the shift and offset parameters used to obtain the Rice parameter of the transform strip; instead, the default shift and / or offset parameters (e.g., 0) are used for all transform strips. An example of the corresponding decoding process based on the VVC draft is shown below, where TH is a predefined value (e.g., 0, 1, 2). Changes to the VVC draft are shown in bold and italics in Table 54. It is worth noting that sh_residual_coding_rice_shift, sh_residual_coding_rice_offset, and sh_ts_residual_coding_rice_index can be encoded / decoded in different ways and / or may have maximum values. For example, u(n), using an n-bit unsigned integer, or f(n), using an n-bit (left-to-right) fixed-pattern bit string written left-bit-first, can also be used to encode / decode the same syntax elements.
[0337] Figure 17 illustrates a method for video decoding. For example, this method can be applied to an encoder.
[0338] In step 1710, the encoder can receive video input.
[0339] In step 1712, the encoder can use signals to represent the rice parameter of the binary codeword used for encoding / decoding syntax elements. Encoding / decoding syntax elements may include abs_remainder in transform skip residual encoding / decoding.
[0340] In step 1714, the encoder can perform entropy encoding on the video bitstream based on the rice parameter and the video input.
[0341] Striped Header Syntax Table 54. Syntax of Residual Encoding and Decoding
[0342] A value of 1 for `sh_residual_coding_rice_flag` indicates that `sh_residual_coding_rice_shift`, `sh_residual_coding_rice_offset`, and `sh_residual_coding_rice_index` may exist in the current slice. A value of 0 for `sh_residual_coding_rice_flag` indicates that `sh_residual_coding_rice_shift`, `sh_residual_coding_rice_offset`, and `sh_residual_coding_rice_index` do not exist in the current slice.
[0343] sh_residual_coding_rice_shift specifies the shift parameter used in the derivation of Rice parameters for abs_remainder[] and dec_abs_level[]. When sh_residual_coding_rice_shift does not exist, the value of sh_residual_coding_rice_shift is inferred to be 0.
[0344] sh_residual_coding_rice_offset specifies the offset parameter used in the derivation of Rice parameters for abs_remainder[] and dec_abs_level[]. When sh_residual_coding_rice_offset does not exist, it is inferred that the value of sh_residual_coding_rice_offset is equal to 0.
[0345] `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, it is assumed that the value of `sh_ts_residual_coding_rice_index` is equal to 0.
[0346] Table 55. Derivation of Rice Parameters
[0347] Table 56. Derivation of Rice Parameters
[0348]
[0349] In another example, a control flag is signaled in the sequence parameter set (or in the sequence parameter set range extension syntax) to indicate whether signal transmission for the Rice parameter of the transform skip block and signal transmission for the shift and / or offset parameters used to obtain the Rice parameter in the transform block are enabled or disabled. When the control flag is signaled as enabled, a syntax element is further signaled for each transform skip strip to indicate the Rice parameter of that strip, and two syntax elements are further signaled for each transform strip to indicate the shift and / or offset parameters used to obtain the Rice parameter of that strip. When the control flag is signaled as disabled (e.g., set to equal to "0"), no further syntax elements are signaled at a lower level to indicate the Rice parameter of the transform skip strip; instead, the default Rice parameter (e.g., 1) is used for all transform skip strips, and no further syntax elements are signaled at a lower level to indicate the shift and / or offset parameters used to obtain the Rice parameter of the transform strip; instead, the default shift and / or offset parameters (e.g., 0) are used for all transform strips. An example of the corresponding decoding process based on the VVC draft is shown below, where TH is a predefined value (e.g., 0, 1, 2). Changes to the VVC draft are shown in bold and italics in Table 57. It is worth noting that sh_residual_coding_rice_shift, sh_residual_coding_rice_offset, and sh_ts_residual_coding_rice_idx can be encoded / decoded in different ways and / or may have maximum values. For example, u(n), using an n-bit unsigned integer, or f(n), using an n-bit (from left to right) fixed-pattern bit string written left-bit-first, can also be used to encode / decode the same syntax elements.
[0350] Sequence Parameter Set (RBSP) Syntax Table 57. Syntax of Residual Encoding and Decoding
[0351] `sps_residual_coding_info_present_in_sh_flag` equal to 1 indicates that the SH syntax structure referencing SPS may contain `sh_residual_coding_rice_shift`, `sh_residual_coding_rice_offset`, and `sh_ts_residual_coding_rice_idx`. `sps_residual_coding_info_present_in_sh_flag` equal to 0 indicates that the SH syntax structure referencing SPS does not contain `sh_residual_coding_rice_shift`, `sh_residual_coding_rice_offset`, and `sh_ts_residual_coding_rice_idx`. When `sps_residual_coding_info_present_in_sh_flag` does not exist, it is inferred that the value of `sps_residual_coding_info_present_in_sh_flag` is equal to 0.
[0352] Striped Header Syntax Table 58. Syntax of Residual Encoding and Decoding
[0353] sh_residual_coding_rice_shift specifies the shift parameter used in the derivation of Rice parameters for abs_remainder[] and dec_abs_level[]. When sh_residual_coding_rice_shift does not exist, the value of sh_residual_coding_rice_shift is inferred to be 0.
[0354] sh_residual_coding_rice_offset specifies the offset parameter used in the derivation of Rice parameters for abs_remainder[] and dec_abs_level[]. When sh_residual_coding_rice_offset does not exist, it is inferred that the value of sh_residual_coding_rice_offset is equal to 0.
[0355] `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, it is assumed that the value of `sh_ts_residual_coding_rice_index` is equal to 0.
[0356] Table 59. Derivation of Rice Parameters
[0357] Table 60. Derivation of Rice Parameters
[0358]
[0359] In yet another example, a syntax element is signaled for each transform skip strip to indicate the Rice parameter for that strip, and two syntax elements are signaled for each transform strip to indicate the shift and / or offset parameters used to obtain the Rice parameter for that strip. An example of the corresponding decoding process based on the VVC draft is illustrated below. Changes to the VVC draft are shown in bold and italics in Table 61. It is worth noting that sh_residual_coding_rice_shift, sh_residual_coding_rice_offset, and sh_ts_residual_coding_rice_idx can be encoded / decoded in different ways and / or may have maximum values. For example, u(n), using an n-bit unsigned integer, or f(n), using an n-bit (left-to-right) fixed-pattern bit string written left-bit-first, can also be used to encode / decode the same syntax element.
[0360] Striped Header Syntax Table 61. Syntax of Residual Encoding and Decoding
[0361] `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, it is assumed that the value of `sh_ts_residual_coding_rice_idx` is equal to 0.
[0362] sh_residual_coding_rice_offset specifies the offset parameter used in the derivation of Rice parameters for abs_remainder[] and dec_abs_level[]. When sh_residual_coding_rice_offset does not exist, it is inferred that the value of sh_residual_coding_rice_offset is equal to 0.
[0363] `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, it is assumed that the value of `sh_ts_residual_coding_rice_index` is equal to 0.
[0364] Table 62. Derivation of Rice Parameters
[0365]
[0366] Table 63. Derivation of Rice Parameters
[0367]
[0368] In yet another example, a control flag is signaled in the picture parameter set range extension syntax to indicate whether signal transmission of the Rice parameter for transform skip blocks and the shift and / or offset parameters for obtaining the Rice parameter in the transform block are enabled or disabled. When the control flag is signaled as enabled, a syntax element is further signaled to indicate the Rice parameter for transform skip residual codecs for that picture, and two more syntax elements are signaled for regular residual codecs to indicate the shift and / or offset parameters for obtaining the Rice parameter for that picture. When the control flag is signaled as disabled (e.g., set to "0"), no further syntax elements are signaled at a lower level to indicate the Rice parameter for transform skip residual codecs; instead, the default Rice parameter (e.g., 1) is used for all transform skip residual codecs, and no further syntax elements are signaled at a lower level to indicate the shift and / or offset parameters for obtaining the Rice parameter for regular residual codecs; instead, the default shift and / or offset parameters (e.g., 0) are used for all regular residual codecs. An example of the corresponding decoding process based on the VVC draft is shown below, where TH is a predefined value (e.g., 0, 1, 2). Changes to the VVC draft are shown in bold and italics in Table 64. It is worth noting that pps_residual_coding_rice_shift, pps_residual_coding_rice_offset, and pps_ts_residual_coding_rice_idx can be encoded / decoded in different ways and / or may have maximum values. For example, u(n), using an n-bit unsigned integer, or f(n), using an n-bit (from left to right) fixed-pattern bit string written left-bit-first, can also be used to encode / decode the same syntax elements.
[0369] Image parameter set range extension syntax table 64. Residual encoding and decoding syntax
[0370]
[0371] A value of 1 for `pps_residual_coding_info_flag` indicates that `pps_residual_coding_rice_shift`, `pps_residual_coding_rice_offset`, and `pps_ts_residual_coding_rice_index` may exist in the current image. A value of 0 for `pps_residual_coding_info_flag` indicates that `pps_residual_coding_rice_shift`, `pps_residual_coding_rice_offset`, and `pps_ts_residual_coding_rice_idx` do not exist in the current image. When `pps_residual_coding_info_flag` does not exist, it is inferred that the value of `pps_residual_coding_info_flag` is equal to 0.
[0372] pps_residual_coding_rice_shift specifies the shift parameter used in the derivation of Rice parameters for abs_remainder[] and dec_abs_level[]. When pps_residual_coding_rice_shift does not exist, the value of pps_residual_coding_rice_shift is inferred to be 0.
[0373] pps_residual_coding_rice_offset specifies the offset parameter used in the derivation of Rice parameters for abs_remainder[] and dec_abs_level[]. When pps_residual_coding_rice_offset does not exist, the value of pps_residual_coding_rice_offset is inferred to be 0.
[0374] `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, it is assumed that the value of `pps_ts_residual_coding_rice_index` is equal to 0.
[0375] Table 65. Derivation of Rice Parameters
[0376]
[0377] Table 66. Derivation of Rice Parameters
[0378]
[0379] According to the twenty-ninth aspect of this disclosure, it is proposed to use different rice parameters to encode and decode certain syntax elements (e.g., abs_remainder in transform skip residual encoding and decoding, shift parameters and offset parameters for obtaining rice parameters for abs_remainder / dec_abs_level in regular residual encoding and decoding), and to determine which parameter to use based on certain encoded information of the current block (e.g., quantization parameters or encoding / decoding bit depth associated with TB / CB and / or stripe / profile) and / or based on a new flag associated with TB / CB / strip / picture / sequence level (e.g., sps_residual_coding_info_present_in_sh_flag).
[0380] In one example, a control flag is signaled in the stripe header to indicate whether the derivation process for the Rice parameter used for transform skip blocks and the derivation process for the shift and / or offset parameters for the Rice parameter in transform blocks are enabled or disabled. When the control flag is signaled as enabled, the Rice parameter may differ under different conditions depending on some encoded information of the current block (e.g., quantization parameters and bit depth). And the shift and / or offset parameters used to derive the Rice parameter in regular residual encoding / decoding may differ under different conditions depending on some encoded information of the current block (e.g., quantization parameters and bit depth). When the control flag is signaled as disabled (e.g., set to equal to "0"), the default Rice parameter (e.g., 1) is used for all transform skip stripes, and the default shift and / or offset parameters (e.g., 0) are used for all transform stripes. An example of the corresponding decoding process based on the VVC draft is shown below, where TH A and TH B It is a predefined threshold (e.g., TH). A = 8、TH B = 18 or 19). Changes to the VVC draft are shown in bold and italics in Table 67. It is worth noting that the same logic can be implemented differently in practice. For example, certain equations or lookup tables can also be used to obtain the same rice parameters.
[0381] Striped Header Syntax Table 67. Syntax of Residual Encoding and Decoding
[0382] A value of 1 for `sh_residual_coding_rice_flag` specifies that the bit depth-dependent Rice parameter derivation process is used in the current slice. A value of 0 for `sh_residual_coding_rice_flag` specifies that the bit depth-dependent Rice parameter derivation process is not used in the current slice.
[0383] Table 68. Derivation of Rice Parameters
[0384] Table 69. Derivation of Rice Parameters
[0385]
[0386] In yet another example, an example of the corresponding decoding process based on the VVC draft is shown below, where TH is a predefined threshold (e.g., 18, 19). Changes to the VVC draft are shown in bold and italics in Table 70. It is worth noting that the same logic can be implemented differently in practice. For example, certain equations or lookup tables can also be used to obtain the same rice parameters.
[0387] Table 70. Derivation of Rice Parameters
[0388]
[0389] According to another aspect of this disclosure, it is proposed to add constraints marked by the values of the aforementioned encoding / decoding tools to provide the same general constraint control as other constraints in the general constraint information.
[0390] For example, `sps_ts_residual_coding_rice_present_in_sh_flag` equal to 1 indicates that `sh_ts_residual_coding_rice_idx` may exist in the SH syntax structure referencing SPS. `sps_ts_residual_coding_rice_present_in_sh_flag` equal to 0 indicates that `sh_ts_residual_coding_rice_idx` does not exist in the SH syntax structure referencing SPS. According to this disclosure, it is proposed to add the 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 for the VVC draft is illustrated below. Changes to the VVC draft are highlighted. Added sections are highlighted in italics.
[0391]
[0392] Figure 19 illustrates a method for video encoding / decoding according to an example of this disclosure. For example, the method can be applied to a decoder. In step 1902, the decoder may receive a Sequence Parameter Set (SPS) residual encoding / decoding flag, which indicates the presence of the index sh_ts_residual_coding_rice_idx in the SH syntax structure referencing the SPS.
[0393] In step 1904, in response to determining that the value of the SPS residual encoding / decoding flag is equal to 1, the decoder can determine that sh_ts_residual_coding_rice_idx exists in the stripe header (SH) syntax structure that references SPS.
[0394] In step 1906, in response to determining that the value of the residual encoding / decoding flag is equal to 0, the decoder can determine that sh_ts_residual_coding_rice_idx does not exist in the SH syntax structure referencing SPS.
[0395] In another example, pps_ts_residual_coding_rice_flag being equal to 1 specifies that pps_ts_residual_coding_rice_index may exist in the current picture. pps_ts_residual_coding_rice_flag being equal to 0 specifies that pps_ts_residual_coding_rice_idx does not exist in the current picture. According to the present disclosure, it is proposed to add a syntax element gci_no_ts_residual_coding_rice_constraint_flag to the common constraint information syntax to provide the same common constraint control as other flags. The following illustrates an example of the decoding process for the VVC draft. The changes to the VVC draft are highlighted. The added parts are highlighted in italic font.
[0396]
[0397] In yet another example, sps_rice_adaptation_enabled_flag being equal to 1 indicates that the Rice parameters for the binarization of abs_remaining[] and dec_abs_level can be obtained by a formula.
[0398] The formula 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] ) ) ), where the lists Tx[] and Rx[] are specified as follows: Tx[] = { 32, 128, 512, 2048}>>(1523) Rx[] = { 0, 2, 4, 6, 8} Figure 20 shows a method for video coding and decoding according to an example of the present disclosure. For example, the method may be applied to a decoder. In step 2002, the decoder may receive a sequence parameter set (SPS) adaptation enable flag, and the SPS adaptation enable flag indicates whether to use an alternative rice parameter derivation for the binarization of the syntax abs_remaining and dec_abs_level.
[0399] In step 2004, in response to determining that the value of the SPS adaptive enable flag is equal to 1, the decoder can determine the derivation of the alternative rice parameter used for grammar binarization.
[0400] In step 2006, in response to determining that the value of the SPS adaptive enable flag is equal to 0, the decoder can determine that the alternative rice parameter derivation for binarization of the grammar will not be used.
[0401] According to this disclosure, it is proposed to add the syntax element `gci_no_rice_adaptation_constraint_flag` to the general constraint information syntax to provide the same general constraint control as other flags. An example of the decoding process for the VVC draft is illustrated below. Changes to the VVC draft are highlighted. Added sections are highlighted in italics.
[0402]
[0403] Figure 21 illustrates an example of a method for video encoding / decoding according to this disclosure. For example, the method can be applied to a decoder. In step 2102, the decoder may receive a residual codec rice constraint flag to provide general constraint control for other flags.
[0404] In step 2104, in response to determining that the value of the residual codec rice constraint flag is equal to 1, the decoder can determine that the values of other flags are equal to 0.
[0405] Since the proposed rice parameter adaptation scheme is only used for Transform Skip Residual Coding (TSRC), the proposed method only takes effect when TSRC is enabled. Accordingly, in one or more embodiments of this disclosure, a bitstream constraint is proposed to be added, requiring that when the transform skip mode is disabled from the general constraint information level, for example when the value of gci_no_transform_skip_constraint_flag is set to one, the value of gci_no_rice_adaptation_constraint_flag is one.
[0406] The methods described above can be implemented using an apparatus comprising one or more circuits, including 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. The apparatus can be used in conjunction with other hardware or software components for performing the methods described above. Each module, submodule, unit, or subunit disclosed above can be implemented at least partially using the one or more circuits.
[0407] Considering the specification and practice of the disclosure herein, other examples of this disclosure will be apparent to those skilled in the art. This application is intended to cover any changes, uses, or adaptations of the disclosure made in accordance with its general principles, including deviations from this disclosure within the scope of known or customary practice in the art. The specification and examples are intended to be illustrative only.
[0408] It should be understood that this disclosure is not limited to the exact examples shown in the description and figures above, and various modifications and changes can be made without departing from its scope.
[0409] Figure 18 illustrates a computing environment 1810 coupled to a user interface 1860. The computing environment 1810 may be part of a data processing server. The computing environment 1810 includes a processor 1820, memory 1840, and I / O interfaces 1850.
[0410] Processor 1820 typically controls the overall operation of computing environment 1810, such as operations associated with display, data acquisition, data communication, and image processing. Processor 1820 may include one or more processors to execute instructions to perform all or some of the steps described above. Furthermore, processor 1820 may include one or more modules that facilitate interaction between processor 1820 and other components. The processor may be a central processing unit (CPU), microprocessor, microcontroller, GPU, etc.
[0411] Memory 1840 is configured to store various types of data to support the operation of computing environment 1810. Memory 1840 may include predefined software 1842. Examples of such data include instructions for any application or method operating on computing environment 1810, video datasets, image data, etc. Memory 1840 can be implemented using any type of volatile or non-volatile memory device or a combination thereof, 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 storage, flash memory, magnetic disk, or optical disk.
[0412] I / O interface 1850 provides an interface between processor 1820 and peripheral interface modules (such as keyboards, click wheels, buttons, etc.). Buttons may include, but are not limited to, home buttons, start scan buttons, and stop scan buttons. I / O interface 1850 can be coupled to encoders and decoders.
[0413] In some embodiments, a non-transitory computer-readable storage medium is also provided, which includes a plurality of programs, such as those included in memory 1840, executable by processor 1820 in computing environment 1810, for performing the methods described above. For example, the non-transitory computer-readable storage medium may be ROM, RAM, CD-ROM, magnetic tape, floppy disk, optical data storage device, etc.
[0414] The non-transitory computer-readable storage medium stores a plurality of programs for execution by a computing device having one or more processors, wherein the plurality of programs, when executed by the one or more processors, cause the computing device to perform the motion prediction method described above.
[0415] 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 perform the methods described above.
[0416] The description of this disclosure has been presented for illustrative purposes and is not intended to be exhaustive or limited to this disclosure. Many modifications, variations, and alternative embodiments will be apparent to those skilled in the art from the teachings presented in the foregoing description and the associated drawings.
[0417] Examples have been chosen and described to explain the principles of this disclosure and to enable others skilled in the art to understand the various embodiments of this disclosure and to best utilize the basic principles and various embodiments with modifications suitable for the intended particular use. Therefore, it should be understood that the scope of this disclosure is not limited to the specific examples of the disclosed embodiments, and modifications and other embodiments are intended to be included within the scope of this disclosure.
Claims
1. A method for video decoding, comprising: The decoder receives the sequence parameter set SPS residual encoding / decoding flags, which indicate whether there is a syntax element in the strip header SH syntax structure that references the SPS that is used to transform the skip residual encoding / decoding syntax structure; In response to determining that the value of the SPS residual codec flag is equal to 1: it is determined that the syntax element exists in the SH syntax structure that references the SPS; And set the rice parameter to be equal to the value of the syntax element plus a predefined value; And in response to determining that the value of the SPS residual codec flag is equal to 0, it is determined that the syntax element does not exist in the SH syntax structure referencing the SPS; If the syntax element does not exist, it is inferred that the value of the syntax element is equal to 0.
2. The method for video decoding as described in claim 1, further comprising: The decoder receives the PPS residual codec rice flag to indicate whether the index pps_ts_residual_coding_rice_index exists in the current image of the video to indicate the rice parameter; in response to determining that the value of the PPS residual codec rice flag is equal to 1, it is determined that the pps_ts_residual_coding_rice_index exists in the current image. And in response to determining that the value of the PPS residual encoding / decoding flag is equal to 0, it is determined that the pps_ts_residual_coding_rice_index does not exist in the current image.
3. The method for video decoding as described in claim 1, wherein the color format of the current image of the video is 4:2:
2.
4. The method for video decoding as described in claim 1, wherein the color format of the current image of the video is 4:4:
4.
5. A method for video encoding, comprising: Generate a sequence parameter set SPS residual codec flag, wherein the SPS residual codec flag indicates whether there is a syntax element used to transform the skip residual codec syntax structure in the stripe header SH syntax structure that references the SPS; when the syntax element exists in the SH syntax structure that references the SPS: set the value of the SPS residual codec flag to equal 1; And set the rice parameter to be equal to the value of the syntax element plus a predefined value; And when the syntax element does not exist in the SH syntax structure that references the SPS: set the value of the SPS residual codec flag to equal 0.
6. The method for video encoding as described in claim 5, further comprising: A PPS residual codec rice flag is generated to indicate whether the index pps_ts_residual_coding_rice_index exists in the current image of the video to indicate the rice parameter; when the pps_ts_residual_coding_rice_index exists in the current image, the value of the PPS residual codec rice flag is set to 1; and when the pps_ts_residual_coding_rice_index does not exist in the current image, the value of the PPS residual codec flag is set to 0.
7. The method for video encoding as described in claim 5, wherein the color format of the current image of the video is 4:2:
2.
8. The method for video encoding as described in claim 5, wherein the color format of the current image of the video is 4:4:
4.
9. An apparatus for video encoding and decoding, comprising: One or more processors; as well as A memory configured to store instructions executable by the one or more processors; wherein the one or more processors, when executing the instructions, are configured to perform the method as described in any one of claims 1 to 8.
10. A computer program product comprising instructions, wherein, when executed by a computing device, the instructions cause the computing device to perform the method as described in any one of claims 1 to 8.
11. A computer-readable storage medium storing a bit stream formed by instructions, which, when executed by a computing device having one or more processors, cause the one or more processors to perform the method for video encoding as described in any one of claims 5 to 6.
12. The computer-readable storage medium of claim 11, wherein the color format of the current image of the video is 4:2:
2.
13. The computer-readable storage medium of claim 11, wherein the color format of the current image of the video is 4:4:
4.
14. A method for storing a bit stream, comprising: Perform the method according to any one of claims 5 to 6 to generate a bitstream; And to store the bit stream.
15. The method of claim 14, wherein the color format of the current image of the video is 4:2:
2.
16. The method of claim 14, wherein the color format of the current image of the video is 4:4:4.