Residual and coefficient coding for video coding
Patent Information
- Application Number
- KR1020237011788
- Authority / Receiving Office
- KR · KR
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-09-30
- Filing Date
- 2021-09-23
- Publication Date
- 2026-09-01
- Estimated Expiration
- 2041-09-23
Smart Images

Figure R1020237011788_ABST
Abstract
Description
Technology Field
[0001] Cross-reference regarding related applications
[0002] This application is based on and claims priority to Provisional Application No. 63 / 085,966 filed on September 30, 2020 and Provisional Application No. 63 / 082,452 filed on September 23, 2020, the entire contents of which are incorporated herein by reference for all purposes.
[0003] Technology field
[0004] The present disclosure relates to video coding and compression. More specifically, the present disclosure relates to the improvement and simplification of residual and factor coding for video coding. Background Technology
[0005] Various video coding techniques can be used to compress video data. Video coding is performed according to one or more video coding standards. For example, video coding standards include VVC (versatile video coding), JEM (joint exploration test model), H.265 / HEVC (high-efficiency video coding), H.264 / AVC (advanced video coding), and MPEG (moving picture expert group) coding. Video coding generally utilizes prediction methods (e.g., inter-prediction, intra-prediction, etc.) that take advantage of redundancy present in video images or sequences. An important goal of video coding techniques is to compress video data into a form that uses a lower bit rate while avoiding or minimizing degradation in video quality. means of solving the problem
[0006] Examples of the present disclosure provide a method and apparatus for residual and coefficient coding in video coding.
[0007] According to a first aspect of the present disclosure, a method for video decoding is provided. The method may include the step of a decoder receiving a video bitstream. The decoder may further receive a control flag at the slice header level. The control flag may signal whether a rice parameter is enabled for a transform skip slice. The decoder may also receive at least one syntax element at the slice header level. The at least one syntax element is signaled for a transform skip slice and indicates a rice parameter. The decoder may further entropy decode the video bitstream based on the control flag and the at least one syntax element.
[0008] It should be understood that the general and detailed descriptions below are merely illustrative and descriptive and are not intended to limit the content of the disclosure. Brief explanation of the drawing
[0009] The attached drawings incorporated into and constituting part of this specification serve to illustrate examples according to the present disclosure and to explain the principles of the present disclosure together with the description. FIG. 1 is a block diagram of an encoder according to an example of the present disclosure. FIG. 2 is a block diagram of a decoder according to an example of the present disclosure. FIG. 3a is a drawing illustrating block partitions in a multi-type tree structure according to an example of the present disclosure. FIG. 3b is a drawing illustrating block partitions in a multi-type tree structure according to an example of the present disclosure. FIG. 3c is a drawing illustrating block partitions in a multi-type tree structure according to an example of the present disclosure. FIG. 3d is a drawing illustrating block partitions in a multi-type tree structure according to an example of the present disclosure. FIG. 3e is a drawing illustrating block partitions in a multi-type tree structure according to an example of the present disclosure. FIG. 4 is a drawing example of a picture having 18x12 luma CTUs according to an example of the present disclosure. FIG. 5 is an example of a picture having 18x12 luma CTUs according to an example of the present disclosure. FIG. 6a is an example of an example of unallowed ternary tree (TT) and binary tree (BT) partitioning in VTM according to the example of the present disclosure. FIG. 6b is an example of an example of unallowed TT and BT partitioning in VTM according to the example of the present disclosure. FIG. 6c is an example of an example of unallowed TT and BT partitioning in VTM according to the example of the present disclosure. FIG. 6d is an example of an example of unallowed TT and BT partitioning in VTM according to the example of the present disclosure. FIG. 6e is an example of an example of unallowed TT and BT partitioning in VTM according to the example of the present disclosure. FIG. 6f is an example of an example of unallowed TT and BT partitioning in VTM according to the example of the present disclosure. FIG. 6g is an example of an example of unallowed TT and BT partitioning in VTM according to the example of the present disclosure. FIG. 6h is an example of an example of unallowed TT and BT partitioning in VTM according to the example of the present disclosure. FIG. 7 is an example of a residual coding structure for transformation blocks according to an example of the present disclosure. FIG. 8 is an example of a residual coding structure for transformation skip blocks according to an example of the present disclosure. FIG. 9 is an example of two scalar quantizers according to an example of the present disclosure. FIG. 10a is an example of a state transition according to an example of the present disclosure. FIG. 10b is an example of quantizer selection according to the example of the present disclosure. FIG. 11 is an example of a template used to select a probability model according to the present disclosure. FIG. 12 is an example of a block coded in palette mode according to the present disclosure. FIG. 13 is an example of the use of a pallet predictor for signaling pallet entries according to the present disclosure. FIG. 14a is an example of a horizontal cross-sectional scan according to the present disclosure. FIG. 14b is an example of a vertical transverse scan according to the present disclosure. FIG. 15a is an example of sub-block-based index map scanning for a palette according to the present disclosure. FIG. 15b is an example of sub-block-based index map scanning for a palette according to the present disclosure. FIG. 16 is a method for decoding a video signal according to an example of the present disclosure. FIG. 17 is a method for decoding a video signal according to an example of the present disclosure. FIG. 18 is a drawing illustrating a computing environment combined with a user interface according to an example of the present disclosure. Specific details for implementing the invention
[0010] Now, reference will be made to exemplary embodiments in detail, examples of which are illustrated in the accompanying drawings. Unless otherwise indicated, the following description refers to the accompanying drawings, where the same numbers in different drawings represent identical or similar elements. The implementations described in the following description of exemplary embodiments do not represent all implementations according to the present disclosure. Instead, they are merely examples of apparatuses and methods according to aspects related to the present disclosure as described in the appended claims.
[0011] The terms used in this disclosure are merely for describing specific embodiments and are not intended to limit this disclosure. As used in this disclosure and the appended claims, singular forms (“a,” “an,” and “the”) are intended to include plural forms unless the context clearly indicates otherwise. Additionally, it should be understood that the term “and / or” as used herein is intended to mean and include any or all possible combinations of one or more of the associated listed items.
[0012] It should be understood that while terms such as “first,” “second,” “third,” etc., may be used herein to describe various information, the information should not be limited by these terms. These terms are used solely to distinguish one category of information from another. For example, without departing from the scope of this disclosure, first information may be referred to as second information; similarly, second information may also be referred to as first information. As used herein, the term “in the case of” may be understood, depending on the context, to mean “when,” “at,” or “in response to a judgment.”
[0013] The first version of the HEVC standard was finalized in October 2013, providing approximately 50% bitrate reduction or equivalent perceptual quality compared to the previous generation video coding standard, H.264 / MPEG AVC. While the HEVC standard offers significant coding improvements over its predecessor, there is evidence that superior coding efficiency can be achieved with additional coding tools in addition to HEVC. Based on this, both VCEG and MPEG began exploring new coding technologies for future video coding standardization. A Joint Video Exploration Team (JVET) was formed by ITU-T VECG and ISO / IEC MPEG in October 2015 to initiate substantial research into advanced technologies capable of enabling substantial improvements in coding efficiency. A reference software referred to as the Joint Exploration Model (JEM) was maintained by the JVET by integrating several additional coding tools in addition to the HEVC Test Model (HM).
[0014] In October 2017, a Joint Proposal (CfP) regarding video compression capabilities exceeding HEVC was proposed by ITU-T and ISO / IEC. In April 2018, 23 CfP responses were received and evaluated at the 10th JVET meeting, demonstrating a compression efficiency gain of approximately 40% compared to HEVC. Based on these evaluation results, JVET launched a new project to develop a new generation video coding standard named VVC (Versatile Video Coding). In the same month, a reference software codebase designated as the VVC Test Model (VTM) was established to demonstrate a reference implementation of the VVC standard.
[0015] Like HEVC, VVC is built on a block-based hybrid video coding framework.
[0016] FIG. 1 illustrates a general diagram of a block-based video encoder for VVC. Specifically, FIG. 1 illustrates a typical encoder (100). The encoder (100) has a video input (110), motion compensation (112), motion estimation (114), intra / inter mode determination (116), block predictor (140), adder (128), transform (130), quantization (132), prediction-related information (142), intra prediction (118), picture buffer (120), inverse quantization (134), inverse transform (136), adder (126), memory (124), in-loop filter (122), entropy coding (138), and bitstream (144).
[0017] In the encoder (100), the video frame is divided into multiple video blocks for processing. For each given video block, a prediction is formed based on an inter-prediction approach or an intra-prediction approach.
[0018] A prediction residual representing the difference between the current video block, a portion of the video input (110), and the predictor, a portion of the block predictor (140), is transmitted from the adder (128) to the transform (130). Subsequently, the transform coefficients are transmitted from the transform (130) to the quantization (132) for entropy reduction. The quantized coefficients are then fed to the entropy coding (138) to generate a compressed video bitstream. As illustrated in FIG. 1, prediction-related information (142) from the intra / inter mode determination (116), such as video block partition information, motion vector (MV), reference picture index, and intra prediction mode, is also supplied through the entropy coding (138) and stored in the compressed bitstream (144). The compressed bitstream (144) contains the video bitstream.
[0019] In the encoder (100), decoder-related circuits are also required to reconstruct pixels for prediction purposes. First, the prediction residual is reconstructed through inverse quantization (134) and inverse transformation (136). This reconstructed prediction residual is combined with a block predictor (140) to generate unfiltered reconstructed pixels for the current video block.
[0020] Spatial prediction (or "intra-prediction") uses pixels from samples of neighboring blocks (referred to as reference samples) that are already coded in the same video frame as the current video block to predict the current video block.
[0021] Time prediction (also referred to as "inter prediction") uses reconstructed pixels from already coded video images to predict the current video block. Time prediction reduces the temporal redundancy inherent to the video signal. The time prediction signal for a given coding unit (CU) or coding block is typically signaled by one or more MVs indicating the amount and direction of motion between the current CU and its time reference. Additionally, if multiple reference pictures are supported, one reference picture index is additionally transmitted, which is used to identify which reference picture within the reference picture store the time prediction signal originates from.
[0022] Motion estimation (114) takes signals from the video input (110) and the picture buffer (120) and outputs the motion estimation signal to the motion compensation (112). The motion compensation (112) takes signals from the video input (110), the picture buffer (120), and the motion estimation signal from the motion estimation (114), and outputs the motion compensation signal to the intra / inter mode determination (116).
[0023] After spatial and / or temporal prediction is performed, the intra / inter mode determination (116) in the encoder (100) selects the best prediction mode based, for example, on a rate-distortion optimization method. The block predictor (140) is then subtracted from the current video block, and the resulting prediction residual is decorrelated using a transform (130) and quantization (132). The resulting quantized residual coefficients are dequantized by inverse quantization (134) and inverse transformed by inverse transform (136) to form a reconstructed residual, which is then added back to the prediction block to form the reconstructed signal of the CU. Additional in-loop filtering (122), such as a deblocking filter, a sample adaptive offset (SAO), and / or an adaptive in-loop filter (ALF), may be applied to the reconstructed CU before the reconstructed CU is placed in the reference picture storage of the picture buffer (120) and used to code future video blocks. To form an output video bitstream (144), the coding mode (inter or intra), prediction mode information, motion information, and quantized residual coefficients are all transmitted to an entropy coding unit (138) and further compressed and packed to form a bitstream.
[0024] Figure 1 provides a block diagram of a typical block-based hybrid video encoding system. Input video signals are processed block by block (referred to as Coding Units (CUs)). In VTM-1.0, a CU can be up to 128x128 pixels. However, unlike HEVC, which partitions blocks based solely on quad-trees, in VVC, a single Coding Tree Unit (CTU) is divided into CUs based on quad / binary / ternary trees to adapt to changing local characteristics. By definition, a Coding Tree Block (CTB) is an NxN block of samples for some value of N, and thus partitioning into CTBs of components is partitioning. A CTU includes a CTB of luminance samples, two corresponding CTBs of chroma samples of a picture having a three-sample array, or a CTB of samples of a picture or monochrome picture coded using three distinct color planes and syntax structures used to code the samples. In addition, the concept of multiple partition unit types in HEVC is removed—that is, the separation of CUs, prediction units (PUs), and transformation units (TUs) no longer exists in VVC—; instead, each CU is always used as the base unit for both prediction and transformation without additional partitioning. In a multi-type tree structure, a CTU is first partitioned by a quad-tree structure. Subsequently, each quad-tree leaf node can be further partitioned by binary and ternary tree structures. As illustrated in Figs. 3a, 3b, 3c, 3d, and 3e, there are five partitioning types: quaternary partitioning, horizontal binary partitioning, vertical binary partitioning, horizontal ternary partitioning, and vertical ternary partitioning.
[0025] FIG. 3a illustrates a diagram illustrating a block quaternary partition in a multi-type tree structure. FIG. 3b illustrates a diagram illustrating a block vertical binary partition in a multi-type tree structure. FIG. 3c illustrates a diagram illustrating a block horizontal binary partition in a multi-type tree structure according to the present disclosure. FIG. 3d illustrates a diagram illustrating a block vertical ternary partition in a multi-type tree structure. FIG. 3e illustrates a diagram illustrating a block horizontal ternary partition in a multi-type tree structure.
[0026] In FIG. 1, spatial prediction and / or temporal prediction may be performed. Spatial prediction (or "intra prediction") uses pixels from samples of already coded neighbor blocks (referred to as reference samples) within the same video image / slice to predict the current video block. Spatial prediction reduces spatial redundancy inherent to the video signal. Temporal prediction (also referred to as "inter prediction" or "motion compensation prediction") uses reconstructed pixels from already coded video images to predict the current video block. Temporal prediction reduces temporal redundancy inherent to the video signal. The temporal prediction signal for a given CU is typically signaled by one or more motion vectors (MVs) representing the amount and direction of motion between the current CU and its temporal reference. Additionally, if multiple reference pictures are supported, one reference picture index is additionally transmitted, which is used to identify from which reference picture in the reference picture repository the temporal prediction signal originates. After spatial and / or temporal prediction, the encoder's mode determination block selects the best prediction mode based, for example, on a rate-distortion optimization method. Then, the prediction block is subtracted from the current video block; the prediction residuals are decorrelated and quantized using a transform. The quantized residual coefficients are inversely quantized and inversely transformed to form the reconstructed residuals, which are then added back to the prediction block to form the reconstructed signal of the CU. Additional in-loop filtering, such as a deblocking filter, SAO (sample adaptive offset), and ALF (adaptive in-loop filter), can be applied to the reconstructed CU before it is placed in the reference picture store and used to code future video blocks. To form the output video bitstream, the coding mode (inter or intra), prediction mode information, motion information, and quantized residual coefficients are all transmitted to the entropy coding unit, where they are further compressed and packed to form the bitstream.
[0027] FIG. 2 illustrates a general block diagram of a video decoder for VVC. Specifically, FIG. 2 illustrates a typical block diagram of a decoder (200). The decoder (200) has a bitstream (210), entropy decoding (212), inverse quantization (214), inverse transform (216), an adder (218), intra / inter mode selection (220), intra prediction (222), memory (230), an in-loop filter (228), motion compensation (224), a picture buffer (226), prediction-related information (234), and a video output (232).
[0028] The decoder (200) is similar to the reconstruction-related section present in the encoder (100) of FIG. 1. In the decoder (200), the incoming video bitstream (210) is first decoded through entropy decoding (212) to derive quantized coefficient levels and prediction-related information. Subsequently, the quantized coefficient levels are processed through inverse quantization (214) and inverse transformation (216) to obtain a reconstructed prediction residual. A block predictor mechanism implemented in the intra / inter mode selector (220) is configured to perform intra prediction (222) or motion compensation (224) based on the decoded prediction information. A set of unfiltered reconstructed pixels is obtained by using a summer (218) to sum the reconstructed prediction residual from the inverse transformation (216) and the prediction output generated by the block predictor mechanism.
[0029] The reconstructed blocks may pass through an in-loop filter (228) further before being stored in a picture buffer (226) which functions as a reference picture storage. The reconstructed video in the picture buffer (226) can be transmitted to drive a display device, as well as used to predict future video blocks. When the in-loop filter (228) is turned on, a filtering operation is performed on these reconstructed pixels to derive a final reconstructed video output (232).
[0030] Figure 2 provides a general block diagram of a block-based video decoder. The video bitstream is first entropy decoded in an entropy decoding unit. Coding mode and prediction information are transmitted to a spatial prediction unit (if intra-coding is performed) or a temporal prediction unit (if inter-coding is performed) to form a prediction block. Residual transformation coefficients are transmitted to an inverse quantization unit and an inverse transformation unit to reconstruct the residual block. Then, the prediction block and the residual block are added together. The reconstructed block may pass through in-loop filtering further before being stored in a reference picture store. Subsequently, the reconstructed video in the reference picture store is not only transmitted to drive a display device but is also used to predict future video blocks.
[0031] Generally, the basic intra prediction scheme applied to VVC remains the same as that of HEVC, except that several modules are further extended and / or improved, such as the intra sub-partition (ISP) coding mode, extended intra prediction with wide-angle intra directions, position-dependent intra prediction combination (PDPC), and 4-tap intra interpolation.
[0032] Partitioning of pictures, tile groups, tiles, and CTUs in VVC
[0033] In VVC, a tile is defined as a rectangular area of CTUs within a specific tile column or specific tile row within a picture. A tile group is a group of an integer number of tiles of a picture that is exclusively contained within a single NAL unit. Essentially, the concept of a tile group is identical to the slice defined in HEVC. For example, pictures are divided into tile groups and tiles. A tile is a sequence of CTUs covering a rectangular area of a picture. A tile group contains multiple tiles of a picture. 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 sequence of tiles from a tile raster scan of the picture. In rectangular tile group mode, a tile group contains multiple tiles of the picture that collectively form a rectangular area of the picture. The tiles within a rectangular tile group are arranged in the order of the tile raster scan of the tile group.
[0034] FIG. 4 illustrates an example of raster-scan tile group partitioning of a picture, wherein the picture is divided into 12 tiles and 3 raster-scan tile groups. FIG. 4 includes tiles (410, 412, 414, 416, and 418). Each tile has 18 CTUs. More specifically, FIG. 4 shows a picture having 18x12 luma CTUs that are divided into 12 tiles and 3 tile groups (information). The 3 tile groups are as follows: (1) a first tile group includes tiles (410, 412), (2) a second tile group includes tiles (414, 416, 418, 420, 422), and (3) a third tile group includes tiles (424, 426, 428, 430, 432).
[0035] FIG. 5 illustrates an example of rectangular tile group partitioning of a picture, wherein the picture is divided into 24 tiles (6 tile columns and 4 tile rows) and 9 rectangular tile groups. FIG. 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, 556). More specifically, FIG. 5 shows a picture having 18x12 Luma CTUs divided into 24 tiles and 9 tile groups (information). Tile groups include tiles, and tiles include 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).
[0036] Large block-size transformation with high-frequency zeroing in VVC
[0037] In VTM4, large block-size transforms up to 64x64 are possible, which are primarily useful for high-resolution video, such as 1080p and 4K sequences. For transform blocks with a size equal to 64 (width or height, or both), high-frequency transform factors are zeroed out, and only low-frequency factors are retained. For example, in the case of an MxN transform block where M is the block width and N is the block height, only the left 32 columns of transform factors are retained when M is equal to 64. Similarly, when N is 64, only the top 32 rows of transform factors are retained. When the transform skip mode is used for large blocks, the entire block is used without zeroing out arbitrary values.
[0038] VVC's Virtual Pipeline Data Unit (VPDU)
[0039] A Virtual Pipeline Data Unit (VPDU) is defined as a non-overlapping unit within a picture. In hardware decoders, successive VPDUs are processed simultaneously by multiple pipeline stages. Since the VPDU size is approximately proportional to the buffer size in most pipeline stages, it is important to keep the VPDU size small. In most hardware decoders, the VPDU size can be set to the maximum convert block (TB) size. However, in VVC, ternary tree (TT) and binary tree (BT) partitioning can lead to an increase in the VPDU size.
[0040] To maintain the VPDU size as 64x64 luminance samples, the following prescriptive partition limits (with syntax signaling modifications) are applied to VTM5:
[0041] TT division is not allowed for CUs where either the width or the height, or both the width and the height, are equal to 128. For 128xN CUs where N ≤ 64 (i.e., width equal to 128 and height less than 128), horizontal BT is not allowed. For Nx128 CUs where N ≤ 64 (i.e., height equal to 128 and width less than 128), vertical BT is not allowed.
[0042] FIGS. 6A, FIGS. 6B, FIGS. 6C, FIGS. 6D, FIGS. 6E, FIGS. 6F, FIGS. 6G, and FIGS. 6H illustrate examples of unallowed TT and BT partitioning in VTM.
[0043] Transform factor coding in VVC
[0044] Transform factor coding in VVC is similar to HEVC in that both utilize non-overlapping factor groups (also referred to as CGs or sub-blocks). However, there are also slight differences between them. In HEVC, each CG of the factors has a fixed size of 4x4. In VVC Draft 6, the CG size is dependent on the TB size. As a result, various CG sizes (1x16, 2x8, 8x2, 2x4, 4x2, and 16x1) are available in VVC. The CGs within a coding block, and the transform factors within the CGs, are coded according to predefined scan sequences.
[0045] To limit the maximum number of context-coded bins per pixel, the area of the TB and the type of video component (e.g., luminance component versus chroma component) are used to derive the maximum number of context-coded bins (CCBs) for the TB. The maximum number of context-coded bins is equal to Bozize * 1.75, where TB_zosize represents the number of samples within the TB after count zero-out. Note that coded_sub_block_flag, a flag indicating whether the CG contains non-zero counts, is not considered for the CCB count.
[0046] Count zero-out is an operation performed on a transform block to force the counts located in a specific area of the transform block to become zero. For example, in the current VVC, the 64x64 transform has an associated zero-out operation. As a result, all transform counts located outside the top-left 32x32 area inside the 64x64 transform block are forced to become zero. In fact, in the current VVC, for any transform block with a size exceeding 32 along a specific dimension, the count zero-out operation is performed along that dimension to force the counts located beyond the top-left 32x32 area to become zero.
[0047] In the transformation coefficient coding in VVC, the variable remBinsPass1 is first set to the maximum number of allowed context-coded bins (MCCB). During the coding process, the variable is decremented by 1 each time a context-coded bin is signaled. While remBinsPass1 is 4 or greater, the coefficients are first signaled through the syntax of sig_coeff_flag, abs_level_gt1_flag, par_level_flag, and abs_level_gt3_flag, all of which use context-coded bins in the first pass. The remaining part of the coefficient's level information is coded into the syntax element of abs_remainder using Golom-Rice code and bypass-coded bins in the second pass. When remBinsPass1 becomes less than 4 during the first pass coding, the current coefficient is not coded in the first pass but is directly coded in the second pass as a syntax element of dec_abs_level using the Golom-Rice code and bypass-coded bins. The process for deriving the Rice parameter for dec_abs_level[ ] is derived as specified in Table 3. After all the aforementioned level codings, the sign (sign_flag) for all scan positions where sig_coeff_flag is equal to 1 is finally coded as bypass bins. This process is illustrated in Fig. 7 (described later). remBinsPass1 is reset for all TBs. The transition from using context-coded bins for sig_coeff_flag, abs_level_gt1_flag(abs_level_gtx_flag[0]), par_level_flag, and abs_level_gt3_flag(abs_level_gtx_flag[1]) to using bypass-coded bins for the remaining coefficients occurs at most once per TB. For a coefficient sub-block, if remBinsPass1 is less than 4 before coding the first coefficient, the entire coefficient sub-block is coded using bypass-coded bins.
[0048] Figure 7 illustrates an example of a residual coding structure for transformation blocks.
[0049] The derivation of the integrated (identical) Rice Parameter (RicePara) is used to signal the syntax of abs_remainder and dec_abs_level. The only difference is that the base level is used to code abs_remainder and dec_abs_level, respectively. baseLevel This means that it is set to 4 and 0. The Rice parameter is determined as follows, based not only on the sum of the absolute levels of the five neighboring transformation coefficients in the local template, but also on the corresponding base level:
[0050] RicePara = RiceParTable[ max(min( 31, sumAbs - 5 * baseLevel), 0) ]
[0051] The syntax and associated semantics of residual coding in the current VVC draft specification are exemplified in Table 1 and Table 2, respectively. The method of reading Table 1 is exemplified in the appendix section of the present invention, which can also be found in the VVC specification.
[0052]
[0053]
[0054]
[0055]
[0056]
[0057]
[0058]
[0059]
[0060]
[0061]
[0062]
[0063]
[0064]
[0065]
[0066] Residual coding for transform skip mode in VVC
[0067] Unlike HEVC, where a single residual coding scheme is designed to code both the transform coefficients and the transform skip coefficients, in VVC, two separate residual coding schemes are used for the transform coefficients and the transform skip coefficients (i.e., residuals), respectively.
[0068] In transform skip mode, the statistical characteristics of the residual signal differ from those of the transform coefficients, and energy compression around low-frequency components is not observed. Residual coding is modified to account for the different signal characteristics of the (spatial) transform skip residuals, including the following:
[0069] No signaling at the last x / y position;
[0070] coded_sub_block_flag coded for all sub-blocks except the DC sub-block when all previous flags are equal to 0;
[0071] Context modeling of sig_coeff_flag with 2 neighbor coefficients;
[0072] par_level_flag using only one context model;
[0073] Additional flags exceeding 5, 7, and 9;
[0074] Derivation of modified rice parameters for remainder binarization; and
[0075] Context modeling for the sign flag is determined based on the left and upper neighbor coefficient values, and the sign flag is parsed after sig_coeff_flag to keep all context-coded bins together.
[0076] As illustrated in FIG. 8 (described later), syntax elements sig_coeff_flag , coeff_sign_flag, abs_level_gt1_flag(abs_level_gtx_flag[0]) , par_level_flag is coded in a manner interleaved by residual samples in the first pass, and in the second pass abs_level_gtX_flag(abs_level_gtx_flag[0]、abs_level_gtx_flag[1]、abs_level_gtx_flag[2], abs_level_gtx_flag[3]) The bitplane follows, and the abs_remainder coding follows in the third pass.
[0077] Pass 1: sig_coeff_flag, coeff_sign_flag, abs_level_gt1_flag(abs_level_gtx_flag[0]), par_level_flag.
[0078] Pass 2: abs_level_gt3_flag(abs_level_gtx_flag[0]), abs_level_gt5_flag(abs_level_gtx_flag[1]), abs_level_gt7_flag(abs_level_gtx_flag[2]), abs_level_gt9_flag(abs_level_gtx_flag[3]).
[0079] Pass 3: abs_remainder.
[0080] Figure 8 illustrates an example of a residual coding structure for transformation skip blocks.
[0081] The syntax and associated semantics of residual coding for transform skip modes in the current VVC draft specification are shown in Table 5 and Table 2, respectively. The method of reading Table 5 is exemplified in the appendix section of the present invention, which can also be found in the VVC specification.
[0082]
[0083]
[0084]
[0085]
[0086] Quantization
[0087] In the current VVC, the maximum QP value has been extended from 51 to 63, and the signaling of the initial QP has been changed accordingly. The initial value of SliceQpY can be modified in the slice segment layer when a non-zero value of slice_qp_delta is coded. For the transform skip block, the minimum allowed quantization parameter (QP) is defined as 4 because the quantization step size becomes 1 when QP is 4.
[0088] In addition, the same HEVC scalar quantization is used in conjunction with a new concept referred to as dependent scalar quantization. Dependent scalar quantization refers to an approach in which the set of acceptable reconstruction values for a transform factor depends on the values of the transform factor levels preceding the current transform factor level in the reconstruction order. The main effect of this approach is that, compared to the conventional independent scalar quantization used in HEVC, the acceptable reconstruction vectors are packed more densely in an N-dimensional vector space (where N represents the number of transform factors within a transform block). This implies that for a given average number of acceptable reconstruction vectors per N-dimensional unit volume, the average distortion between the input vector and the nearest reconstruction vector is reduced. The approach of dependent scalar quantization is realized by: (a) defining two scalar quantizers having different reconstruction levels, and (b) defining a process for switching between the two scalar quantizers.
[0089] Two scalar quantizers used, denoted as Q0 and Q1, are exemplified in FIG. 9 (described later). The positions of the available reconstruction levels are uniquely determined by the quantization step size Δ. The scalar quantizer (Q0 or Q1) used is not explicitly signaled in the bitstream. Instead, the quantizer used for the current transformation factor is determined by the parities of the transformation factor levels preceding the current transformation factor in the coding / reconstruction order.
[0090] Figure 9 illustrates an example of two scalar quantizers used in the proposed approach to dependent quantization.
[0091] As exemplified in FIGS. 10a and 10b (described below), switching between two scalar quantizers (Q0 and Q1) is realized through a state machine having four quantizer states (QState). The QState can take four different values: 0, 1, 2, and 3. This is uniquely determined by the parities of the transformation coefficient levels preceding the current transformation coefficient in the coding / reconstruction order. At the start of the inverse quantization for the transformation block, the state is set to 0. The transformation coefficients are reconstructed in scanning order (i.e., in the same order in which they are entropy decoded). After the current transformation coefficient is reconstructed, the state is updated as shown in FIG. 10, where k represents the value of the transformation coefficient level.
[0092] Figure 10a illustrates a transition diagram showing state transitions for the proposed dependent quantization.
[0093] FIG. 10b illustrates a table illustrating the selection of quantizers for the proposed dependent quantization.
[0094] It is also supported to signal default and user-defined scaling matrices. DEFAULT mode scaling matrices are all flat and have 16 elements for all TB sizes. IBC and intra-coding modes currently share the same scaling matrices. Therefore, for USER_DEFINED matrices, the numbers of MatrixType and MatrixType_DC are updated as follows:
[0095] MatrixType: 30 = 2 (Regarding intra&IBC / inter 2) Х 3 (Y / Cb / Cr components) Х 5(Square TB sizes: 4x4 to 64x64 for Luma, 2x2 to 32x32 for Chroma.
[0096] MatrixType_DC: 14 = 2 (For component Y, intra&IBC / inter Х for 1, 2) Х 3 (TB Size: 16x16, 32x32, 64x64) + 4 (Regarding Cb / Cr components, intra&IBC / inter Х Regarding 2, 2) Х 2 (TB size: 16X16, 32X32).
[0097] DC values are coded individually for the following scaling matrices: 16x16, 32x32, and 64x64. For TBs smaller than 8x8, all elements within a single scaling matrix are signaled. If the TB has a size of 8x8 or larger, only 64 elements within a single 8x8 scaling matrix are signaled as the base scaling matrix. To obtain a square matrix larger than 8x8, the 8x8 base scaling matrix is upsampled to the corresponding square size (i.e., 16x16, 32x32, 64x64) (by duplication of elements). When zeroing of high-frequency coefficients for the 64-point transformation is applied, the corresponding high frequencies of the scaling matrices are also zeroed. That is, if the width or height of the TB is 32 or greater, only the left or upper half of the coefficients are retained, and the remaining coefficients are assigned 0. In addition, the number of signaled elements for the 64x64 scaling matrix is also reduced from 8x8 to 3 4x4 submatrices because the bottom right 4x4 elements are never used.
[0098] Context modeling for transformation coefficient coding
[0099] The selection of probabilistic models for syntax elements related to the absolute values of the transformation coefficient levels depends on the values of the absolute levels or the partially reconstructed absolute levels in the local neighborhood. The template used is exemplified in Fig. 11 (described later).
[0100] Figure 11 shows an example of a template used to select a probabilistic model. The black squares indicate the current scan location, and the squares with "x" indicate the local neighborhoods used.
[0101] The selected probabilistic models rely on the sum of absolute levels (or partially reconstructed absolute levels) within the local neighborhood and the number of absolute levels greater than zero within the local neighborhood (given by the number of sig_coeff_flags equal to 1). Context modeling and binarization depend on the following scales for the local neighborhood:
[0102] numSig: Number of non-zero levels in local neighborhoods;
[0103] sumAbs1: Sum of partially reconstructed absolute levels after the first pass in local neighborhoods (absLevel1);
[0104] sumAbs: sum of reconstructed absolute levels within local neighborhoods; and
[0105] Diagonal position (d): Sum of the horizontal and vertical coordinates of the current scan position inside the transform block.
[0106] Based on the values of numSig, sumAbs1, and d, probabilistic models for coding sig_coeff_flag, abs_level_gt1_flag, par_level_flag, and abs_level_gt3_flag are selected. Rice parameters for binarizing abs_remainder and dec_abs_level are selected based on the values of sumAbs and numSig.
[0107] In the current VVC, reduced 32-point MTS (also referred to as RMTS32) is based on skipping high-frequency coefficients and is used to reduce the computational complexity of 32-point DST-7 / DCT-8. It entails coefficient coding changes that include all types of zero-outs (i.e., RMTS32 and conventional zero-outs for high-frequency components in DCT2). Specifically, the binarization of the last non-zero coefficient position coding is coded based on the reduced TU size, and the context model selection for the last non-zero coefficient position coding is determined by the original TU size. Additionally, 60 context models are used to code the sig_coeff_flag of the transform coefficients. The selection of the context model index is based on the sum of the five previously partially reconstructed absolute level maximums, referred to as locSumAbsPass1, and the dependent quantization state QState as follows:
[0108] If cIdx is 0, ctxInc is derived as follows:
[0109] ctxInc = 12 * Max( 0, QState - 1 ) +
[0110] Min( ( locSumAbsPass1 + 1 ) >> 1, 3 ) + ( d < 2 ? 8 : ( d < 5 ? 4 : 0 ) )
[0111] Otherwise (if cIdx is greater than 0), ctxInc is derived as follows:
[0112] ctxInc = 36 + 8 * Max( 0, QState - 1) +
[0113] Min( ( locSumAbsPass1 + 1 ) >> 1, 3 ) + ( d < 2 ? 4 : 0 )
[0114] Palette mode
[0115] The basic idea behind the palette mode is that samples within the CU are represented by a small set of representative color values. This set is referred to as the palette. It is also possible to display color values excluded from the palette by signaling the by values of three color components as escape colors that are directly signaled into the bitstream. This is exemplified in FIG. 12.
[0116] FIG. 12 illustrates an example of a block coded in palette mode. FIG. 12 includes a block 1210 and a palette 1220 coded in palette mode.
[0117] In Fig. 12, the palette size is 4. The first three samples use palette entries 2, 0, and 3, respectively, for reconstruction. Black 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 1, and the last index is used to represent the escape symbol. Thus, in Fig. 12, index 4 is assigned to the escape symbol.
[0118] To decode a palette-coded block, the decoder needs to have the following information: a palette table; and palette indices.
[0119] If the palette index corresponds to an escape symbol, additional overhead is signaled to display the corresponding color values of the sample.
[0120] In addition, on the encoder side, it is necessary to derive an appropriate palette to be used with that CU.
[0121] A modified k-means clustering algorithm is used to derive the palette for loss coding. The first sample from a block is added to the palette. Then, for each subsequent sample from the block, the sum of absolute differences (SAD) between the sample and each current palette color is calculated. If the distortion for each component is less than the threshold for the palette entry corresponding to the minimum SAD, the sample is added to the cluster belonging to that palette entry. Otherwise, the sample is added as a new palette entry. When the number of samples mapped to a cluster exceeds the threshold, the center for that cluster is updated and becomes the palette entry for that cluster.
[0122] In the next step, clusters are sorted in descending order of usage. Subsequently, the palette entry corresponding to each entry is updated. Typically, the cluster center is used as the palette entry. However, rate-skewing analysis is performed to determine whether a random entry from the palette predictor might be more suitable to be used as the updated palette entry instead of the center, considering the cost of coding palette entries. This process continues until all clusters are processed or the maximum palette size is reached. Finally, if a cluster has only a single sample and no corresponding palette entry exists in the palette predictor, the sample is converted into an escape symbol. Additionally, duplicate palette entries are removed, and their clusters are merged.
[0123] After the palette is derived, each sample within the block is assigned the index of the nearest palette entry (in SAD). Then, the samples are assigned to either the 'INDEX' or 'COPY_ABOVE' mode. For each sample, either the 'INDEX' or 'COPY_ABOVE' mode is available. Subsequently, the cost of coding the mode is calculated. The mode with the lower cost is selected.
[0124] A pallet predictor is maintained for coding pallet entries. The maximum size of the pallet, as well as the pallet predictor, is signaled in the SPS. The pallet predictor is initialized at the beginning of each CTU row, each slice, and each tile.
[0125] For each entry in the pallet predictor, a reuse flag is signaled to indicate whether it is part of the current pallet. This is illustrated in FIG. 13.
[0126] FIG. 13 illustrates the use of a pallet predictor for signaling pallet entries. FIG. 13 includes a previous pallet (1310) and a current pallet (1320).
[0127] Reuse flags are transmitted using run-length coding of zeros. Afterwards, the number of new pallet entries is signaled using exponential Gollom code of order 0. Finally, the component values for the new pallet entries are signaled.
[0128] Palette indices are coded using horizontal and vertical transverse scans as shown in FIGS. 14a and 14b. The scan order is explicitly signaled in the bitstream using palette_transpose_flag.
[0129] Fig. 14a shows a horizontal transverse scan. Fig. 14b shows a vertical transverse scan.
[0130] To code the palette indices, a line count group (CG) based palette mode is used to divide the CU into multiple segments with 16 samples based on a cross-scan mode as illustrated in FIGS. 15a and 15b, wherein index runs for escape mode, palette index values, and quantized colors are sequentially encoded / parsed for each CG.
[0131] FIG. 15a illustrates sub-block-based index map scanning for a pallet. FIG. 15b illustrates sub-block-based index map scanning for a pallet.
[0132] Palette indices are coded using two main palette sample modes: 'INDEX' and 'COPY_ABOVE'. As previously mentioned, an index equal to the maximum palette size is assigned to the escape symbol. In 'COPY_ABOVE' mode, the palette index of the sample in the row above is copied. In 'INDEX' mode, the palette index is explicitly signaled. The encoding order for palette run coding in each segment is as follows:
[0133] For each pixel, a single context-coded empty run_copy_flag = 0 is signaled, indicating that the pixel is in the same mode as the previous pixel, i.e., that both the previously scanned pixel and the current pixel have run type COPY_ABOVE or both the previously scanned pixel and the current pixel have run type INDEX and the same index value. Otherwise, run_copy_flag = 1 is signaled.
[0134] If the pixel and the previous pixel are in different modes, a single context-coded empty copy_above_palette_indices_flag is signaled, indicating the pixel's run type, i.e., INDEX or COPY_ABOVE. The decoder does not need to parse the run type if the sample is in the first row (horizontal transverse scan) or the first column (vertical transverse scan), because the index mode is used by default. Additionally, the decoder does not need to parse the run type if the previously parsed run type was COPY_ABOVE.
[0135] After palette run coding of pixels within a segment, index values for the index mode (palette_idx_idc) and quantized escape colors (palette_escape_val) are bypass coded.
[0136] Inefficiency of video decoding
[0137] In VVC, when coding transformation coefficients, the derivation of integrated (identical) RicePara is used to signal the syntax of abs_remainder and dec_abs_level. The only difference is that the base level is used to code abs_remainder and dec_abs_level, respectively. baseLevel This means that it is set to 4 and 0. The rice parameter is determined as follows, based not only on the sum of the absolute levels of the five neighboring transformation coefficients in the local template, but also on the corresponding base level:
[0138] RicePara = RiceParTable[ max(min( 31, sumAbs - 5 * baseLevel), 0) ]
[0139] That is, binary codewords for the syntax elements abs_remainder and dec_abs_level are adaptively determined based on the level information of neighboring coefficients. Since this codeword determination is performed for each sample, additional logic is required to handle this codeword adaptation for coefficient coding.
[0140] Similarly, when coding residual blocks under transform skip mode, syntax elements abs_remainder The binary codewords for are adaptively determined based on the level information of neighboring residual samples.
[0141] Furthermore, when coding syntax elements related to residual coding or transformation coefficient coding, the selection of probabilistic models depends on level information of neighboring levels, which requires additional logic and additional context models.
[0142] In the current design, the binarization of escape samples is achieved by calling the third exponential-Golomb binarization process. There is room for further improvement in performance.
[0143] In the current VVC, two different level mapping schemes are available and applied to normal transformations and transformation skips, respectively. Each level mapping scheme is associated with different conditions, mapping functions, and mapping locations. For blocks where normal transformations are applied, the level mapping scheme is used after the number of context-coded bins (CCBs) exceeds the limit. The mapping location denoted by ZeroPos[n] and the mapping result denoted by AbsLevel[xC][yC] are derived as specified in Table 2. For blocks where transformation skips are applied, another level mapping scheme is used before the number of context-coded bins (CCBs) exceeds the limit. The mapping location denoted by predCoeff and the mapping result denoted by AbsLevel[xC][yC] are derived as specified in Table 5. This unintegrated design may not be optimal from a standardization perspective.
[0144] For profiles exceeding 10 bits in HEVC, the extended_precision_processing_flag, which is equal to 1, specifies that an extended dynamic range is used for factor parsing and inverse transform processing. In the current VVC, residual coding for transform factors exceeding 10 bits or for transform skip coding is reported to cause a significant decrease in performance. There is room for further performance improvement.
[0145] Proposed method
[0146] In this disclosure, several methods are proposed to address the problems mentioned in the section on inefficiencies related to video decoding. It should be noted that the following methods may be applied independently or in combination.
[0147] According to a first aspect of the present disclosure, it is proposed to use a fixed set of binary codewords to code specific syntax elements, e.g., abs_remainder, in residual coding. The binary codewords may be formed using various methods. Some exemplary methods are listed as follows.
[0148] First, the same procedure used to determine the codeword for abs_remainder currently used in VVC is used, but a fixed rice parameter (e.g., 1, 2, or 3) is always selected.
[0149] Second, fixed-length binarization.
[0150] Third, truncation of rice binarization.
[0151] Fourth, TB (truncated binary) binarization process.
[0152] Fifth, k-order exponent-Golomb binarization process (EGk).
[0153] Sixth, restricted k-order exponential-Golomb binarization.
[0154] According to a second aspect of the present disclosure, in transform factor coding, it is proposed to use a fixed set of codewords to code specific syntax elements, e.g., abs_remainder and dec_abs_level. Binary codewords may be formed using various methods. Some exemplary methods are listed as follows.
[0155] First, the same procedure used to determine the codewords for abs_remainder and dec_abs_level in the current VVC is employed, but with a fixed Ratio parameter, e.g., 1, 2, or 3. The value of baseLevel can still vary for abs_remainder and dec_abs_level used in the current VVC. (For example, baseLevel is set to 4 and 0 to code abs_remainder and dec_abs_level, respectively).
[0156] Second, the same procedure used in the current VVC to determine the codewords for abs_remainder and dec_abs_level is used, but with a fixed rice parameter, e.g., 1, 2, or 3. The values of baseLevels for abs_remainder and dec_abs_level are chosen to be the same. For example, 0 is used for both, or 4 is used for both.
[0157] Third, fixed-length binarization.
[0158] Fourth, truncation of rice binarization.
[0159] Fifth, TB (truncated binary) binary conversion process.
[0160] Sixth, k-th order exponent-Golomb binarization process (EGk).
[0161] Seventh, restricted k-order exponential-Golomb binarization.
[0162] According to a third aspect of the present disclosure, for coding syntax elements related to residual coding or coefficient coding, a single context (e.g., abs_level_gtx_flag It is suggested to use ), and context selection based on neighboring decoded level information can be eliminated.
[0163] According to a fourth aspect of the present disclosure, in residual coding, it is proposed to use variable sets of binary codewords to code specific syntax elements, e.g., abs_remainder, and the selection of the set of binary codewords is determined by specific coded information of the current block, e.g., TB / CB and / or quantization parameters (QP) associated with the slice, prediction modes of the CU (e.g., IBC mode or intra or inter) and / or slice type (e.g., I slice, P slice, or B slice). Different methods may be used to derive variable sets of binary codewords, and some exemplary methods are listed as follows.
[0164] First, the same procedure used to determine the codeword for abs_remainder currently used in VVC is employed, but it has different rice parameters.
[0165] Second, the k-th order exponent-Golomb binarization process (EGk).
[0166] Third, restricted k-order exponential-Golomb binarization.
[0167]
[0168] The same methods described in the fourth aspect are also applicable to transformation-efficient coding. According to the fifth aspect of the disclosure, in transformation coefficient coding, it is proposed to use variable sets of binary codewords to code specific syntax elements, e.g., abs_remainder and dec_abs_level, and the selection of the set of binary codewords is determined by specific coded information of the current block, e.g., TB / CB and / or quantization parameters (QP) associated with the slice, prediction modes of the CU (e.g., IBC mode or intra or inter) and / or slice type (e.g., I slice, P slice, or B slice). Again, different methods may be used to derive variable sets of binary codewords, and some exemplary methods are listed as follows.
[0169] First, the same procedure used to determine the codeword for abs_remainder currently used in VVC is employed, but it has different rice parameters.
[0170] Second, the k-th order exponent-Golomb binarization process (EGk).
[0171] Third, restricted k-order exponential-Golomb binarization.
[0172] In the methods above, different rice parameters can be used to derive different sets of binary codewords. For a given block of residual samples, the rice parameters used are QP instead of neighborhood-level information. CUIt is determined according to the CU QP indicated by . One specific example is illustrated as shown in Table 6, where TH1 to TH4 are predefined threshold values satisfying (TH1 < TH2 < TH3 < TH4), and K0 to K4 are predefined rice parameters. It is worth noting that the same logic may actually be implemented differently. For example, specific equations or lookup tables may also be used to derive the same rice parameters from the current CU QP value, as shown in Table 6.
[0173] According to a fifth aspect of the present disclosure, a set of parameters and / or thresholds associated with determining codewords for syntax elements of transform factor coding and / or transform skip residual coding is signaled as a bitstream. The determined codewords are used as binary codewords when coding syntax elements through an entropy coder, e.g., arithmetic coding.
[0174] Note that the set of parameters and / or thresholds may be the entire set, or a subset of all parameters and thresholds associated with codeword determination for syntax elements. The set of parameters and / or thresholds may be signaled at different levels within the video bitstream. For example, they may be signaled at the sequence level (e.g., sequence parameter set), picture level (e.g., picture parameter set, and / or picture header), slice level (e.g., slice header), Coding Tree Unit (CTU) level, or Coding Unit (CU) level.
[0175] In one example, a rice parameter used to determine the codeword for coding the abs_remainder syntax in transform skip residual coding is signaled in the slice header, picture header, PPS, and / or SPS. The signaled rice parameter is used to determine the codeword for coding the syntax abs_remainder when the CU is coded in transform skip mode and the CU is associated with the aforementioned slice header, picture header, PPS, and / or SPS, etc.
[0176] According to a sixth aspect of the present disclosure, a set of parameters and / or thresholds associated with codeword determination as exemplified in the first and second aspects is used for syntax elements of transform coefficient coding and / or transform skip residual coding. Different sets may be used depending on whether the current block contains luminal residuals / coefficients or chroma residuals / coefficients. The determined codewords are used as binary codewords when coding syntax elements through an entropy coder, for example, arithmetic coding.
[0177] In one example, the codeword for abs_remainder associated with transform residual coding, as currently used in VVC, is used for both the luminance and chroma blocks, but different fixed-ratio parameters are used by the luminance and chroma blocks, respectively. (e.g., K1 for the luminance block, K2 for the chroma block, where K1 and K2 are integers)
[0178] According to a seventh aspect of the present disclosure, a set of parameters and / or thresholds associated with determining codewords for syntax elements of transform factor coding and / or transform skip residual coding is signaled as a bitstream. Different sets may be signaled for luminance and chroma blocks. The determined codewords are used as binary codewords when coding syntax elements through an entropy coder, e.g., arithmetic coding.
[0179] The same methods described in the above embodiments are also applicable to escape value coding in palette mode, e.g., palette_escape_val.
[0180] According to the eighth aspect of the present disclosure, different k-th order exponential-Golomb binarizations may be used to derive different sets of binary codewords for coding escape values in palette mode. In one example, for a given block of escape samples, the value of the exponential-Golomb parameter used, i.e., k, is QP CU It is determined according to the QP value of the block indicated by . The same example illustrated in Table 6 can be used to derive the value of parameter k based on the given QP value of the block. In this example, four different thresholds (TH1 to TH4) are listed, and five different k values (K0 to K4) are given based on these thresholds and QP CU It is worth noting that while it can be derived based on [this], the number of thresholds is merely for illustrative purposes. In practice, different numbers of thresholds may be used to partition the entire range of QP values into different numbers of QP value segments, and for each QP value segment, different k values may be used to derive corresponding binary codewords for coding the escape values of blocks coded in palette mode. It is also worth noting that the same logic may actually be implemented differently. For example, specific equations or lookup tables may be used to derive the same rice parameters.
[0181] According to a ninth aspect of the present disclosure, a set of parameters and / or thresholds associated with determining codewords for syntax elements of escape samples is signaled as a bitstream. The determined codewords are used as binary codewords when coding the syntax elements of escape samples through an entropy coder, e.g., arithmetic coding.
[0182] Note that the set of parameters and / or thresholds may be the entire set, or a subset of all parameters and thresholds associated with codeword determination for syntax elements. The set of parameters and / or thresholds may be signaled at different levels within the video bitstream. For example, they may be signaled at the sequence level (e.g., sequence parameter set), picture level (e.g., picture parameter set, and / or picture header), slice level (e.g., slice header), Coding Tree Unit (CTU) level, or Coding Unit (CU) level.
[0183] In one example according to the modality, k-th order exponential-Golomb binarization is used to determine codewords for coding 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 the slice header, picture header, PPS, and / or SPS, etc. The signaled exponential-Golomb parameter is used to determine the codewords for coding the syntax palette_escape_val when the CU is coded as palette mode and the CU is associated with the aforementioned slice header, picture header, PPS, and / or SPS, etc.
[0184] Harmonization of level mapping for transformation skip mode and regular transformation mode
[0185] According to the tenth aspect of the present disclosure, the same conditions for applying level mapping are used for both the transformation skip mode and the normal transformation mode. In one example, it is proposed to apply level mapping after the number of context-coded bins (CCBs) exceeds the limits for both the transformation skip mode and the normal transformation mode. In another example, it is proposed to apply level mapping before the number of context-coded bins (CCBs) exceeds the limits for both the transformation skip mode and the normal transformation mode.
[0186] According to the first aspect of the present disclosure, the same method for deriving mapping locations in level mapping is used in both the transformation skip mode and the normal transformation mode. In one example, it is proposed to apply a derivation method for mapping a location in level mapping used under the transformation skip mode to the normal transformation mode. In another example, it is proposed to apply a derivation method for mapping a location in level mapping used under the normal transformation mode to the transformation skip mode.
[0187] According to the 12th aspect of the present disclosure, the same level mapping method is applied to both the transformation skip mode and the normal transformation mode. In one example, it is proposed to apply the level mapping function used under the transformation skip mode to the normal transformation mode as well. In another example, it is proposed to apply the level mapping function used under the normal transformation mode to the transformation skip mode as well.
[0188] Simplification of Deriving Rice Parameters in Residual Coding
[0189] According to the 13th aspect of the present disclosure, when coding the syntax elements of abs_remainder / dec_abs_level using a Colomb-Rice code, it is proposed to use simple logic, such as shift or division operations, instead of a lookup table for deriving Rice parameters. According to the present disclosure, a lookup table as specified in Table 4 may be eliminated. In one example, the Rice parameter cRiceParam is derived as follows: cRiceParam = (locSumAbs >> n), where n is a positive number, e.g., 3. It is worth noting that other different logic, e.g., division operations by values such as 2 to powers of n, may actually be used to achieve the same results. An example of a corresponding decoding process based on a VVC draft is illustrated below, where the crossed-out font indicates steps or elements deleted or removed from the decoding process.
[0190]
[0191] According to the 14th aspect of the present disclosure, when coding the syntax element of abs_remainder / dec_abs_level using a Colomb-Rice code, it is proposed to use fewer neighboring locations for deriving Rice parameters. In one example, when coding the syntax element of abs_remainder / dec_abs_level, it is proposed to use only two neighboring locations for deriving Rice parameters. A corresponding decoding process based on a VVC draft is exemplified below, where the dashed font represents steps or elements deleted or removed from the decoding process.
[0192]
[0193] In another example, when coding the syntax elements of abs_remainder / dec_abs_level, it is suggested to use only one neighboring location to derive the rice parameters. A corresponding decoding process based on a VVC draft is exemplified below, where the dashed font represents steps or elements deleted or removed from the decoding process.
[0194]
[0195] According to the 15th aspect of the present disclosure, it is proposed to adjust the value of locSumAbs based on the value of baseLevel to derive the Rice parameter when coding the syntax element of abs_remainder / dec_abs_level using a Colomb-Rice code using different logics. In one example, additional scale and offset operations are applied in the form of "(locSumAbs - baseLevel * 5) * alpha + beta". When alpha takes a value of 1.5 and beta takes a value of 1, the corresponding decoding process based on the VVC draft is exemplified as follows.
[0196]
[0197] According to the 16th aspect of the present disclosure, it is proposed to remove clip operations for deriving rice parameters from syntax elements of abs_remainder / dec_abs_level using a Golom-Rice code. According to the present disclosure, an example of a decoding process for a VVC draft is exemplified below, wherein the stroked font represents steps or elements deleted or removed from the decoding process.
[0198]
[0199] According to the present disclosure, an example of a decoding process for a VVC draft is illustrated as follows, wherein the stroked font represents steps or elements deleted or removed from the decoding process.
[0200]
[0201] According to the 17th aspect of the present disclosure, when coding the syntax element of abs_remainder / dec_abs_level using a Golom-Rice code, it is proposed to change the initial value of locSumAbs from 0 to a non-zero integer to derive the Rice parameter. In one example, an initial value of 1 is assigned to locSumAbs, and a corresponding decoding process based on a VVC draft is exemplified below, where the stroke font represents steps or elements deleted or removed from the decoding process.
[0202]
[0203] According to the 18th aspect of the present disclosure, when coding the syntax elements of abs_remainder / dec_abs_level using a Colomb-Rice code, it is proposed to use the maximum value of neighboring position level values instead of their sum for deriving the Rice parameters. An example of a corresponding decoding process based on a VVC draft is illustrated below.
[0204]
[0205] According to the 19th aspect of the present disclosure, when coding the syntax element of abs_remainder / dec_abs_level using a Colomb-Rice code, it is proposed to derive Rice parameters based on the relative amplitude and base level values of each AbsLevel value at neighboring locations. In one example, Rice parameters are derived based on how many AbsLevel values at neighboring locations are greater than the base level. An example of a corresponding decoding process based on a VVC draft is illustrated below, where the dashed font represents steps or elements deleted or removed from the decoding process.
[0206]
[0207] In another example, the Rice parameter is derived based on the sum of the values (AbsLevel - baseLevel) for neighboring positions where AbsLevel values are greater than the base level. An example of a corresponding decoding process based on a VVC draft is illustrated below, where the dashed font indicates steps or elements deleted or removed from the decoding process.
[0208]
[0209] According to the present disclosure, an example of a decoding process for a VVC draft is illustrated as follows, where a dashed font indicates steps or elements deleted or removed from the decoding process.
[0210]
[0211] Simplification of deriving level mapping locations in residual coding
[0212] According to the 20th aspect of the present disclosure, it is proposed to remove QState from the derivation of ZeroPos[n] such that ZeroPos[n] is derived only from cRiceParam. An example of a corresponding decoding process based on a VVC draft is illustrated below, where the crossed-out font indicates steps or elements deleted or removed from the decoding process.
[0213]
[0214] According to the 21st aspect of the present disclosure, it is proposed to derive ZeroPos[n] based on the value of locSumAbs. An example of a corresponding decoding process based on a VVC draft is illustrated below, where the crossed-out font represents steps or elements deleted or removed from the decoding process.
[0215]
[0216] According to the 22nd aspect of the present disclosure, it is proposed to derive ZeroPos[n] based on the AbsLevel values of neighboring locations. In one example, ZeroPos[n] is derived based on the maximum value among AbsLevel[xC+1][yC] and AbsLevel[xC][yC+1]. An example of a corresponding decoding process based on a VVC draft is illustrated below, where the dashed font indicates steps or elements deleted or removed from the decoding process.
[0217]
[0218] According to the 23rd aspect of the present disclosure, it is proposed to derive both cRiceParam and ZeroPos[ n ] based on the maximum value of all AbsLevel values of neighboring locations. An example of a corresponding decoding process based on a VVC draft is illustrated below, where the stroked font indicates steps or elements deleted or removed from the decoding process.
[0219]
[0220] The same methods described in the modalities are also applicable to the derivation of predCoeff in residual coding for the transformation skip mode. In one example, the variable predCoeff is derived as follows:
[0221] predCoeff = Max( absLeftCoeff, absAboveCoeff ) + 1
[0222] Residual coding for transformation coefficients
[0223] In this disclosure, methods are provided to simplify and / or further improve existing designs of residual coding in order to address problems such as those pointed out in the section "Inefficiencies in Video Decoding". In general, the main features of the techniques proposed in this disclosure are summarized as follows.
[0224] First, based on the current design, the derivation of rice parameters used under normalized residual coding is adjusted.
[0225] Second, change the binary method used under normal residual coding.
[0226] Third, the derivation of the rice parameter used under normal residual coding is modified.
[0227] Derivation of Rice Parameters in Residual Coding Based on Current Design
[0228] According to the 24th aspect of the present disclosure, in residual coding, it is proposed to use variable methods of deriving rice parameters to code specific syntax elements, e.g., abs_remainder / dec_abs_level, and the choice is determined by specific coded information of the current block, e.g., quantization parameters or coding bit depth associated with TB / CB and / or slice / profile, and / or a new flag associated with TB / CB / slice / picture / sequence levels, e.g., extended_precision_processing_flag. Different methods may be used to derive rice parameters, and some exemplary methods are listed as follows.
[0229] First, cRiceParam = (cRiceParam << a) + (cRiceParam >> b) + c, where a, b, and c are positive numbers, for example, {a, b, c} = {1, 1, 0}. In practice, it is worth noting that other different logics, for example, multiplication operations by powers of 2 to n, can be used to achieve the same results.
[0230] Second, cRiceParam = (cRiceParam << a) + b, where a and b are positive numbers, for example, {a,b} = {1,1}. In practice, it is worth noting that other different logics, for example, multiplication operations by powers of 2 to n, can be used to achieve the same results.
[0231] Third, cRiceParam = (cRiceParam*a) + b, where a and b are positive numbers, for example, {a,b} = {1.5,0}. In practice, it is worth noting that other different logics, for example, multiplication operations by powers of 2 to n and equivalent values, can be used to achieve the same results.
[0232] An example of a corresponding decoding process based on a VVC draft is illustrated below. Changes to the VVC draft are indicated in bold italic font in Table 22, and dashed font indicates steps or elements that have been deleted or removed from the decoding process. It is worth noting that the same logic may actually be implemented differently. For example, certain equations or lookup tables may also be used to derive the same lice parameters from the BitDepth value of the current CU / sequence.
[0233]
[0234]
[0235] In another example, when BitDepth is greater than or equal to a predefined threshold (e.g., 10, 11, 12, 13, 14, 15, or 16), the rice parameter cRiceParam is derived as follows: cRiceParam = (cRiceParam << a) + (cRiceParam >> b) + c, where a, b, and c are positive numbers, e.g., 1. The corresponding decoding process based on the VVC draft is exemplified below. Changes to the VVC draft are shown in bold italic font in Table 23, and dashed font indicates steps or elements that were deleted or removed from the decoding process. It is worth noting that the same logic may actually be implemented differently. For example, specific equations or lookup tables may also be used to derive the same rice parameters from the BitDepth value of the current CU / sequence.
[0236]
[0237]
[0238] Binary method in residual coding for profiles larger than 10 bits
[0239] According to the 25th aspect of the present disclosure, in residual coding, it is proposed to use variable sets of binary codewords to code specific syntax elements, e.g., abs_remainder / dec_abs_level, and the choice is determined by specific coded information of the current block, e.g., quantization parameters or coding bit depth associated with TB / CB and / or slice / profile, and / or by a new flag associated with TB / CB / slice / picture / sequence levels, e.g., extended_precision_processing_flag. Different methods may be used to derive variable sets of binary codewords, and some exemplary methods are listed as follows.
[0240] First, the same procedure is used to determine the codeword for abs_remainder currently used in VVC, but a fixed rice parameter (e.g., 2, 3, 4, 5, 6, 7, or 8) is always selected. The fixed value may differ under different conditions depending on specific coded information of the current block, e.g., quantization parameters or coding bit depth associated with TB / CB and / or slice / profile, and / or syntax elements associated with TB / CB / slice / picture / sequence levels, e.g., rice_parameter_value. One specific example is illustrated as shown in Table 24, where TH1 through TH4 are predefined thresholds satisfying (TH1 < TH2 < TH3 < TH4), and K0 through K4 are predefined rice parameters. It is worth noting that the same logic may actually be implemented differently. For example, certain equations or lookup tables can also be used to derive the same rice parameters from the BitDepth value of the current CU / sequence, as shown in Table 24.
[0241] Second, fixed-length binarization.
[0242] Third, truncation of rice binarization.
[0243] Fourth, TB (truncated binary) binarization process.
[0244] Fifth, k-order exponent-Golomb binarization process (EGk).
[0245] Sixth, restricted k-order exponential-Golomb binarization.
[0246]
[0247] In one example, when a new flag, e.g., extended_precision_processing_flag, is equal to 1, the rice parameter cRiceParam is fixed as 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 a corresponding decoding process based on a VVC draft is illustrated below. Changes to the VVC draft are shown in Table 25 in bold italic font, and a dashed font indicates steps or elements that were deleted or removed from the decoding process.
[0248]
[0249] In another example, it is suggested to use only one fixed value for the Rhythm parameter when coding syntax elements of abs_remainder / dec_abs_level when a new flag, e.g., extended_precision_processing_flag, is equal to 1. The corresponding decoding process based on the VVC draft is exemplified below. Changes to the VVC draft are shown in Table 26 in bold italic font, and strikethrough font indicates steps or elements that were deleted or removed from the decoding process.
[0250]
[0251] In another example, when BitDepth 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 as n, where n is a positive number, e.g., 4, 5, 6, 7, or 8. The fixed value may vary under different conditions. An example of a corresponding decoding process based on a VVC draft is illustrated 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 italic font in Table 27, and a dashed font indicates steps or elements that were deleted or removed from the decoding process.
[0252]
[0253] In another example, when BitDepth is greater than a predefined threshold (e.g., 10, 11, 12, 13, 14, 15, or 16), it is suggested to use only one fixed value for the Lise parameter when coding the syntax element of abs_remainder / dec_abs_level. The corresponding decoding process based on the VVC draft is exemplified 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 italic font in Table 28, and struck font indicates steps or elements deleted or removed from the decoding process.
[0254]
[0255] Derivation of Rice Parameters in Residual Coding
[0256] According to the 26th aspect of the present disclosure, in residual coding, it is proposed to use variable methods of deriving rice parameters to code specific syntax elements, e.g., abs_remainder / dec_abs_level, and the choice is determined by specific coded information of the current block, e.g., quantization parameters or coding bit depth associated with TB / CB and / or slice / profile, and / or a new flag associated with TB / CB / slice / picture / sequence levels, e.g., extended_precision_processing_flag. Different methods may be used to derive rice parameters, and some exemplary methods are listed as follows.
[0257] First, it is proposed to use counters to derive the rice parameter. The counters are determined based on the value of the coded coefficient and specific coded information of the current block, e.g., the component ID. As a specific example, riceParameter = counter / a, where a is a positive number, e.g., 4, and maintains two counters (divided by luminance / chroma). These counters are reset to 0 at the start of each slice. Once coded, the counter is updated if it is the first coefficient coded in the sub-TU as follows:
[0258] if(coeffValue >=(3 << Rice)) counter++
[0259] if (((coeffValue << 1) < (1 << riceParameter)) && (counter > 0)) counter--;
[0260] Second, it is proposed to add a shift operation to the derivation of the rice parameters in VVC. The shift is determined based on the value of the coded coefficient. An example of a corresponding decoding process based on a VVC draft is illustrated below, and the shift is determined according to the counters of Method 1. Changes to the VVC draft are shown in bold italic font in Table 29, and a dashed font indicates steps or elements deleted or removed from the decoding process.
[0261]
[0262] Third, it is proposed to add a shift operation to the derivation of slice parameters in VVC. The shift is determined according to the coding bit depth associated with specific coded information of the current block, e.g., TB / CB and / or slice profile (e.g., 14-bit profile or 16-bit profile). An example of a corresponding decoding process based on a VVC draft is illustrated below, and the shift is determined according to the counters of Method 1. Changes to the VVC draft are shown in bold italic font in Table 30, and a dashed font indicates steps or elements deleted or removed from the decoding process.
[0263]
[0264] Residual coding for transform skip
[0265] According to the 27th aspect of the present disclosure, in transform skip residual coding, it is proposed to use variable sets of binary codewords to code specific syntax elements, e.g., abs_remainder, and the choice is determined by specific coded information of the current block, e.g., quantization parameters or coding bit depth associated with TB / CB and / or slice / profile, and / or by a new flag associated with TB / CB / slice / picture / sequence levels, e.g., extended_precision_processing_flag. Different methods may be used to derive variable sets of binary codewords, and some exemplary methods are listed as follows.
[0266] First, the same procedure is used to determine the codeword for abs_remainder currently used in VVC, but a fixed rice parameter (e.g., 2, 3, 4, 5, 6, 7, or 8) is always selected. The fixed value may differ under different conditions depending on specific coded information of the current block, e.g., quantization parameters or coding bit depth associated with TB / CB and / or slice / profile, and / or syntax elements associated with TB / CB / slice / picture / sequence levels, e.g., rice_parameter_value. One specific example is illustrated as shown in Table 7, where TH1 through TH4 are predefined thresholds satisfying (TH1 < TH2 < TH3 < TH4), and K0 through K4 are predefined rice parameters. It is worth noting that the same logic may actually be implemented differently. For example, certain equations or lookup tables can also be used to derive the same rice parameters from the BitDepth value of the current CU / sequence, as shown in Table 7.
[0267] Second, fixed-length binarization.
[0268] Third, truncation of rice binarization.
[0269] Fourth, TB (truncated binary) binarization process.
[0270] Fifth, k-order exponent-Golomb binarization process (EGk).
[0271] Sixth, restricted k-order exponential-Golomb binarization.
[0272] An example of a corresponding decoding process based on a VVC draft is illustrated below, changes to the VVC draft are indicated in bold italic font in Table 31, and strikethrough font indicates steps or elements that were deleted or removed from the decoding process. It is worth noting that the same logic may actually be implemented differently. For example, certain equations or lookup tables may also be used to derive the same rice parameters.
[0273]
[0274] In another example, when a new flag, e.g., extended_precision_processing_flag, is equal to 1, it is suggested to use only one fixed value for the rice parameter when coding the syntax elements of abs_remainder. The corresponding decoding process based on the VVC draft is exemplified below. Changes to the VVC draft are shown in Table 32 in bold italic font, and struck font indicates steps or elements that were deleted or removed from the decoding process.
[0275]
[0276] In another example, when a new flag, e.g., extended_precision_processing_flag, is equal to 1, the rice parameter cRiceParam is fixed as 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 a corresponding decoding process based on a VVC draft is illustrated below. Changes to the VVC draft are shown in bold italic font in Table 33, and a dashed font indicates steps or elements that were deleted or removed from the decoding process.
[0277]
[0278] In another example, when BitDepth 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 as n, where n is a positive number, e.g., 4, 5, 6, 7, or 8. The fixed value may vary under different conditions. An example of a corresponding decoding process based on a VVC draft is illustrated 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 italic font in Table 34, and a dashed font indicates steps or elements that were deleted or removed from the decoding process.
[0279]
[0280] In another example, a control flag is signaled in the slice header to indicate whether signaling of rice parameters for transform skip blocks is enabled or disabled. When the control flag is signaled as enabled, an additional syntax element is signaled for each transform skip slice to indicate the rice parameter of that slice. 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 the transform skip slice, and the default rice parameter (e.g., 1) is used for all transform skip slices. An example of the corresponding decoding process based on a VVC draft is illustrated below, where TH is a predefined value (e.g., 0, 1, 2). Changes to the VVC draft are shown in bold italic font in Table 35, and a dashed font indicates steps or elements that were deleted or removed from the decoding process. It is worth noting that sh_ts_residual_coding_rice_index can be coded in different ways and / or can have a maximum value. For example, u(n), an unsigned integer using n bits, or f(n), a fixed pattern bit string using n bits written in left-bit priority (left to right), can also be used to encode / decode the same syntax element.
[0281]
[0282] Same as 1 sh_ts_residual_coding_rice_flagindicates that sh_ts_residual_coding_rice_index may exist in the current slice. sh_ts_residual_coding_rice_flag equal to 0 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, the value of sh_ts_residual_coding_rice_flag is inferred to be 0.
[0283] sh_ts_residual_coding_rice_index specifies the rice parameters used in the residual_ts_coding() syntax structure.
[0284]
[0285] FIG. 16 illustrates a method for video decoding. This method can be applied, for example, to a decoder.
[0286] In step 1610, the decoder can receive a video bitstream. The video bitstream may include encoded video information and information for decoding the encoded video information.
[0287] In step 1612, the decoder may receive a control flag at the slice header level. The control flag may signal whether the rice parameter is enabled for the transform skip slice. For example, the control flag may be used to decode encoded video information, and the rice parameter may be used to decode the syntax of abs_remainder and dec_abs_level.
[0288] In step 1614, the decoder may receive at least one syntax element at the slice header level. At least one syntax element may be signaled for a transform skip slice and represents a rice parameter. For example, a syntax element may be signaled for each transform skip slice to represent the rice parameter of that slice. In another example, when a syntax element is not signaled at a lower level to represent the rice parameter for a transform skip slice, a default rice parameter is used for all transform skip slices.
[0289] In step 1616, the decoder can entropy decode the video bitstream based on a control flag and at least one syntax element. For example, the decoder can use the control flag and at least one syntax element to derive quantized coefficient levels for decoding encoded video information and prediction-related information.
[0290] The entropy coding of quantization indices for transform / transform-skip blocks can be referred to as transform / transform-skip coefficient coding.
[0291] In one or more embodiments, the encoder may determine that the residual coding disabled flag is equal to 0. The encoder may also signal a residual coding rice flag. At least one syntax element may include the residual coding rice flag. The encoder may also determine that the residual coding rice flag is equal to 1. The encoder may additionally signal a residual coding rice index flag. At least one syntax element includes the residual coding rice index flag.
[0292] In one or more embodiments, the decoder may determine that the residual coding disabled flag is equal to 0. The decoder may receive a residual coding rice flag. At least one syntax element may include the residual coding rice flag. The decoder may also determine that the residual coding rice flag is equal to 1. The decoder may additionally receive a residual coding rice index flag. At least one syntax element includes the residual coding rice index flag.
[0293] 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 signaling of rice parameters for transform skip blocks is enabled or disabled. When the control flag is signaled as enabled, an additional syntax element is signaled for each transform skip slice to indicate the rice parameter of that slice. 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 the transform skip slice, and a default rice parameter (e.g., 1) is used for all transform skip slices. An example of the corresponding decoding process based on a VVC draft is illustrated below, where TH is a predefined value (e.g., 0, 1, 2). Changes to the VVC draft are shown in Table 37 in bold italic font, and the dashed font indicates steps or elements that were deleted or removed from the decoding process. It is worth noting that sh_ts_residual_coding_rice_idx can be coded in different ways and / or can have a maximum value. For example, u(n), an unsigned integer using n bits, or f(n), a fixed pattern bit string using n bits written in left-bit priority (left to right), can also be used to encode / decode the same syntax element.
[0294]
[0295] Same as 1 sps_ts_residual_coding_rice_present_in_sh_flagspecifies that sh_ts_residual_coding_rice_idx may exist in SH syntax structures referencing SPS. sps_ts_residual_coding_rice_present_in_sh_flag, which is equal to 0, specifies that sh_ts_residual_coding_rice_idx does not exist in SH syntax structures referencing SPS. When sps_ts_residual_coding_rice_present_in_sh_flag does not exist, the value of sps_ts_residual_coding_rice_present_in_sh_flag is inferred to be 0.
[0296]
[0297] sh_ts_residual_coding_rice_idx specifies the rice parameters used in the residual_ts_coding() syntax structure.
[0298]
[0299] In another example, for each transform skip slice, a syntax element is signaled to represent the rice parameter of that slice. An example of the corresponding decoding process based on the VVC draft is illustrated below. Changes to the VVC draft are shown in bold italic font in Table 40, and a dashed font indicates steps or elements that were deleted or removed from the decoding process. It is worth noting that sh_ts_residual_coding_rice_idx can be coded in different ways and / or can have a maximum value. For example, u(n), an unsigned integer using n bits, or f(n), a fixed pattern bit string using n bits written in left-bit priority (left to right), can also be used to encode / decode the same syntax element.
[0300]
[0301] sh_ts_residual_coding_rice_idx Specifies the rice parameter used in the residual_ts_coding() syntax structure. When sh_ts_residual_coding_rice_idx does not exist, the value of sh_ts_residual_coding_rice_idx is inferred to be 0.
[0302]
[0303] FIG. 17 illustrates a method for video decoding. This method can be applied, for example, to a decoder.
[0304] In step 1710, the decoder may receive a residual coding rice flag in response to a determination that the residual coding disable flag is equal to 0. At least one syntax element includes the residual coding rice flag.
[0305] In step 1712, the decoder may receive a residual coding rice index flag in response to a determination that the residual coding rice flag is equal to 1. At least one syntax element includes the residual coding rice index flag.
[0306] In another example, a control flag is signaled in the picture parameter set range extension syntax to indicate whether signaling of the rice parameters for transform skip blocks is enabled or disabled. When the control flag is signaled as enabled, an additional syntax element is signaled to indicate the rice parameters of 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 parameters for the transform skip slices, and the default rice parameter (e.g., 1) is used for all transform skip slices. An example of the corresponding decoding process based on a VVC draft is illustrated below, where TH is a predefined value (e.g., 0, 1, 2). Changes to the VVC draft are shown in bold italic font in Table 42, and struck font indicates steps or elements that were deleted or removed from the decoding process. It is worth noting that pps_ts_residual_coding_rice_idx can be coded in different ways and / or can have a maximum value. For example, u(n), an unsigned integer using n bits, or f(n), a fixed pattern bit string using n bits written in left-bit priority (left to right), can also be used to encode / decode the same syntax element.
[0307]
[0308] Same as 1 pps_ts_residual_coding_rice_flagindicates that pps_ts_residual_coding_rice_index may exist in the current picture. pps_ts_residual_coding_rice_flag equal to 0 indicates that pps_ts_residual_coding_rice_idx does not exist in the current picture. When pps_ts_residual_coding_rice_flag does not exist, the value of pps_ts_residual_coding_rice_flag is inferred to be 0.
[0309] pps_ts_residual_coding_rice_idx specifies the rice parameters used in the residual_ts_coding() syntax structure.
[0310]
[0311] The above methods may be implemented using a device 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 device may use the circuits in combination with other hardware or software components to perform the methods described above. Each module, sub-module, unit, or sub-unit disclosed above may be implemented at least partially using one or more circuits.
[0312] Other examples of the present disclosure will be apparent to those skilled in the art from consideration of the specifications and practices of the present disclosure as disclosed herein. This application is intended to cover any variations, uses, or adaptations of the present disclosure that follow the general principles of the present disclosure, including such deviations from the present disclosure within known or customary practices in the art. The present specification and examples are intended to be considered merely as examples.
[0313] It will be understood that the present disclosure is not limited to the exact examples described above and illustrated in the accompanying drawings, and that various modifications and changes may be made without departing from the scope thereof.
[0314] FIG. 18 illustrates a computing environment (1810) combined with 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 an I / O interface (1850).
[0315] The processor (1820) typically controls the overall operations of the computing environment (1810), such as operations associated with display, data acquisition, data communication, and image processing. The processor (1820) may include one or more processors for executing instructions to perform all or part of the steps of the aforementioned methods. Additionally, the processor (1820) may include one or more modules that facilitate interaction between the processor (1820) and other components. The processor may be a central processing unit (CPU), a microprocessor, a single-chip machine, a GPU, etc.
[0316] Memory (1840) is configured to store various types of data to support the operation of the computing environment (1810). Memory (1840) may include predetermined software (1842). Examples of such data include instructions for any applications or methods operating on the computing environment (1810), video datasets, image data, etc. Memory (1840) may be implemented using any type of volatile or non-volatile memory devices, such as static random access memory (SRAM), electrically erasable programmable read-only memory (EEPROM), erasable programmable read-only memory (EPROM), programmable read-only memory (PROM), read-only memory (ROM), magnetic memory, flash memory, magnetic or optical disk, or a combination thereof.
[0317] The I / O interface (1850) provides an interface between the processor (1820) and peripheral interface modules such as a keyboard, a click wheel, and buttons. The buttons may include, but are not limited to, a home button, a scan start button, and a scan stop button. The I / O interface (1850) may be combined with an encoder and a decoder.
[0318] In some embodiments, to perform the methods described above, a non-transient computer-readable storage medium is also provided that includes a plurality of programs, such as those contained in memory (1840), which are executable by a processor (1820) in a computing environment (1810). For example, the non-transient computer-readable storage medium may be a ROM, RAM, CD-ROM, magnetic tape, floppy disk, optical data storage device, etc.
[0319] A non-transient computer-readable storage medium stores a plurality of programs for execution by a computing device having one or more processors, and when the plurality of programs are executed by one or more processors, the computing device enables the aforementioned motion prediction method to perform.
[0320] In some embodiments, the computing environment (1810) may be implemented with 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.
[0321] The description of the present disclosure is provided for illustrative purposes only and is not intended to encompass or limit the entirety of the present disclosure. Many modifications, variations, and alternative embodiments will be apparent to those skilled in the art who take advantage of the teachings set forth in the foregoing description and the associated drawings.
[0322] Examples have been selected and described to explain the principles of the present disclosure, to enable a person skilled in the art to understand the present disclosure for various implementations, and to make the best use of the basic principles and various implementations having various modifications suitable for the specific use being considered. Accordingly, it should be understood that the scope of the present disclosure is not limited to the specific examples of the disclosed implementations, and that modifications and other implementations are intended to be included within the scope of the present disclosure.
Claims
Claim 1 A method for video decoding comprising: receiving a video bitstream by a decoder; receiving a control flag at the slice header level by the decoder, wherein the control flag is used to determine whether at least one syntax element regarding a rice parameter for a slice is signaled, and the control flag is a residual coding disabled flag, and the at least one syntax element includes a syntax element associated with a residual coding rice index; receiving the at least one syntax element at the slice header level by the decoder in response to the determination that the at least one syntax element is signaled, wherein the at least one syntax element is used to determine the rice parameter; and entropy decoding the video bitstream by the decoder based on the control flag and the at least one syntax element. Claim 2 The method of claim 1 further comprises the step of receiving a residual coding rice flag at the sequence picture set (SPS) level by the decoder, and the step of receiving the at least one syntax element at the slice header level by the decoder comprises the step of receiving the syntax element associated with the residual coding rice index in response to a determination that the residual coding disabled flag is equal to 0 and the residual coding rice flag is equal to 1. Claim 3 A method according to paragraph 2, wherein when the residual coding rice flag is equal to 1, the residual coding rice flag indicates that the syntax element associated with the residual coding rice index exists in the current slice. Claim 4 A method according to paragraph 2, wherein when the residual coding rice flag is equal to 0, the residual coding rice flag indicates that the syntax element associated with the residual coding rice index does not exist in the current slice. Claim 5 A method according to claim 4, further comprising the step of inferring that the value of the residual coding rice flag is equal to 0 in response to a determination that the residual coding rice flag does not exist. Claim 6 A method according to claim 2, further comprising the step of setting the rice parameter to be equal to the value of the syntax element associated with the residual coding rice index plus a predefined value in response to a determination that the residual coding rice flag is equal to 1, the transformation skip flag is equal to 1, and the residual coding disabled flag is equal to 0. Claim 7 A method according to claim 2, further comprising the step of setting the rice parameter to be equal to the value of the syntax element associated with the residual coding rice index + 1 in response to a determination that the transformation skip flag is equal to 1 and the residual coding disabled flag is equal to 0. Claim 8 A method according to claim 1, wherein the value of the bit depth of the video bitstream is any one of 11, 12, 13, 14, 15, or 16. Claim 9 A method for video encoding comprising: a step of signaling a control flag at the slice header level by an encoder, wherein the control flag is used to determine whether at least one syntax element related to a rice parameter is signaled for the slice, wherein the control flag is a residual coding disabled flag, and the at least one syntax element includes a syntax element related to a residual coding rice index; and a step of signaling the at least one syntax element at the slice header level by the encoder, wherein the at least one syntax element is used to determine the rice parameter. Claim 10 A method according to claim 9, comprising the step of signaling a residual coding rice flag at the SPS (Sequence Picture Set) level by the encoder, and the step of signaling the at least one syntax element at the slice header level by the encoder, comprising the step of signaling the syntax element associated with the residual coding rice index when the residual coding disabled flag is equal to 0 and the residual coding rice flag is equal to 1. Claim 11 A method according to claim 10, wherein the residual coding rice flag equal to 1 indicates that the syntax element associated with the residual coding rice index exists in the current slice, and the residual coding rice flag equal to 0 indicates that the syntax element associated with the residual coding rice index does not exist in the current slice. Claim 12 A method according to claim 11, comprising the step of setting the value of the residual coding rice flag to 0 when the residual coding rice flag does not exist. Claim 13 A method according to claim 10, comprising the step of setting the rice parameter to a value obtained by adding a predefined value to the value of the syntax element associated with the residual coding rice index when the residual coding rice flag is equal to 1, the transformation skip flag is equal to 1, and the residual coding disabled flag is equal to 0. Claim 14 A method according to claim 10, comprising the step of setting the rice parameter to a value obtained by adding 1 to the value of the syntax element associated with the residual coding rice index when the transformation skip flag is equal to 1 and the residual coding disabled flag is equal to 0. Claim 15 In claim 9, the bit depth value of the video is any one of 11, 12, 13, 14, 15, or 16. Claim 16 A computing device comprising: one or more processors; and a non-transient computer-readable storage medium storing instructions executable by said one or more processors, wherein said one or more processors are configured to receive a video bitstream to perform a method of any one of claims 1 to 8 or to generate a video bitstream to perform a method of any one of claims 9 to 15. Claim 17 A non-transient computer-readable storage medium storing a plurality of programs executed by a computing device having one or more processors, wherein, when executed by the one or more processors, the plurality of programs cause the computing device to receive a video bitstream to perform a method of any one of claims 1 to 8 or to generate a video bitstream to perform a method of any one of claims 9 to 15. Claim 18 A computer program stored on a computer-readable storage medium, wherein, when executed by one or more processors, the computer program causes the one or more processors to receive a video bitstream to perform a method of any one of claims 1 to 8, or to generate a video bitstream to perform a method of any one of claims 9 to 15. Claim 19 A method for transmitting a bitstream, comprising: performing an encoding method to generate a bitstream; and transmitting said bitstream, wherein the encoding method comprises: signaling a control flag at a slice header level by an encoder, wherein the control flag is used to determine whether at least one syntax element related to a rice parameter is signaled for the slice, and the control flag is a residual coding disabled flag, and the at least one syntax element includes a syntax element related to a residual coding rice index; and signaling said at least one syntax element within the slice header level by the encoder, wherein the at least one syntax element is used to determine said rice parameter; and wherein the bitstream is decoded by the method of any one of claims 1 to 8. Claim 20 A computer-readable storage medium storing a bitstream to be decoded by any one of the methods of paragraphs 1 through 7. Claim 21 A computer-readable storage medium according to claim 20, wherein the bit depth value of the bitstream is any one of 11, 12, 13, 14, 15, or 16.