Residual and coefficient coding for video coding
By receiving and processing the extended flags and alignment enable flags in the sequence parameter set (SPS) in video encoding and decoding, the problem of low encoding efficiency in the prior art is solved, and more efficient video encoding is achieved.
Patent Information
- Application Number
- CN202410799509.0
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2021-02-04
- Filing Date
- 2022-01-25
- Publication Date
- 2025-04-04
- Estimated Expiration
- 2042-01-25
AI Technical Summary
Existing video encoding technologies are difficult to effectively utilize additional encoding tools when compressing video data, resulting in low encoding efficiency.
A method for video encoding and decoding is proposed, by receiving and processing extended flags and alignment enable flags in sequence parameter sets (SPS), to determine whether a specific encoding tool exists in different syntax structures, and adopting an extended dynamic range during transformation processing.
By using these extended flags and alignment enable flags, additional encoding tools can be used more effectively to improve the efficiency of video encoding.
Smart Images

Figure CN118555399B_ABST
Abstract
Description
[0001] This application is a divisional application of a patent application with an application date of January 25, 2022, application number 202280012987.1, and invention name “Residual and coefficient coding for video coding”.
[0002] CROSS-REFERENCE TO RELATED APPLICATIONS
[0003] This application is based on and claims the benefit of priority of provisional application No. 63 / 145,964 filed on February 4, 2021, and its entire contents are incorporated herein by reference for all purposes. Technical Field
[0004] The present disclosure relates to video coding and compression. In particular, the present disclosure relates to improvements and simplifications of residual and coefficient coding for video coding. Background Art
[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 Versatile Video Coding (VVC), Joint Exploration Test Model (JEM), High Efficiency Video Coding (H.265 / HEVC), Advanced Video Coding (H-264 / AVC), Moving Picture Experts Group (MPEG) coding, etc. Video coding typically uses prediction methods (e.g., inter-frame prediction, intra-frame prediction, etc.) that exploit the redundancy present in video images or sequences. An important goal of video coding technology is to compress video data into a form that uses a lower bit rate while avoiding or minimizing the degradation of video quality. Summary of the invention
[0006] Examples of the present disclosure provide methods and apparatus for video encoding.
[0007] According to a first aspect of the present disclosure, a method for video coding and decoding is provided. The method may include: receiving, by a decoder, a sequence parameter set (SPS) range extension flag, the SPS range extension flag indicating whether a syntax structure sps_range_extension exists in a slice header (SH) raw byte sequence payload (RBSP) syntax structure based on a value of the SPS range extension flag.
[0008] According to a second aspect of the present disclosure, a method for video coding and decoding is provided. The method may include: receiving a sequence parameter set (SPS) alignment enable flag by a decoder, the SPS alignment enable flag indicating whether to align an index ivlCurrRange before bypass decoding of syntax elements sb_coded_flag, abs_remainder, dec_abs_level, and coeff_sign_flagn based on a value of the SPS alignment enable flag.
[0009] According to a third aspect of the present disclosure, a method for video coding and decoding is provided. The method may include: receiving, by a decoder, an extended precision processing flag, the extended precision processing flag indicating whether an extended dynamic range is used for transform coefficients and during transform processing based on a value of the extended precision processing flag.
[0010] According to a fourth aspect of the present disclosure, a method for video encoding and decoding is provided. The method may include: receiving, by a decoder, a persistent Rice adaptive enable flag, the persistent Rice adaptive enable flag indicating whether to initialize Rice parameter derivation for abs_maining and dec_abs_level binarization at the beginning of each sub-block based on the value of the persistent Rice adaptive enable flag, wherein each sub-block adopts mode-related statistical information accumulated from previous sub-blocks.
[0011] It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not intended to restrict the disclosure. BRIEF DESCRIPTION OF THE DRAWINGS
[0012] The accompanying drawings, which are incorporated herein and constitute a part of this specification, illustrate examples consistent with the disclosure and, together with the description, serve to explain the general principles of the disclosure.
[0013] Figure 1 is a block diagram of an encoder according to an example of the present disclosure.
[0014] Figure 2 is a block diagram of a decoder according to an example of the present disclosure.
[0015] Figure 3A is a diagram illustrating block partitioning in a multi-type tree structure according to an example of the present disclosure.
[0016] Figure 3B is a diagram illustrating block partitioning in a multi-type tree structure according to an example of the present disclosure.
[0017] Figure 3C is a diagram illustrating block partitioning in a multi-type tree structure according to an example of the present disclosure.
[0018] Figure 3D is a diagram illustrating block partitioning in a multi-type tree structure according to an example of the present disclosure.
[0019] Figure 3E is a diagram illustrating block partitioning in a multi-type tree structure according to an example of the present disclosure.
[0020] Figure 4 is a schematic diagram of a picture with 18 by 12 luma CTUs according to an example of the present disclosure.
[0021] Figure 5 is an illustration of a picture with 18 by 12 luma CTUs according to an example of the present disclosure.
[0022] Fig. 6A is a diagram of examples of ternary tree (TT) and binary tree (BT) partitions that are not allowed in a VTM according to an example of the present disclosure.
[0023] Figure 6B is a diagram of an example of TT and BT partitioning that is not allowed in a VTM according to an example of the present disclosure.
[0024] Figure 6C is a diagram of an example of TT and BT partitioning that is not allowed in a VTM according to an example of the present disclosure.
[0025] Fig.6D is a diagram of an example of TT and BT partitioning that is not allowed in a VTM according to an example of the present disclosure.
[0026] Fig. 6E is a diagram of an example of TT and BT partitioning that is not allowed in a VTM according to an example of the present disclosure.
[0027] Fig. 6F is a diagram of an example of TT and BT partitioning that is not allowed in a VTM according to an example of the present disclosure.
[0028] Figure 6G is a diagram of an example of TT and BT partitioning that is not allowed in a VTM according to an example of the present disclosure.
[0029] Figure 6H is a diagram of an example of TT and BT partitioning that is not allowed in a VTM according to an example of the present disclosure.
[0030] Figure 7 is a diagram of a residual coding structure for a transform block according to an example of the present disclosure.
[0031] Figure 8 is a diagram of a residual codec structure for transforming a skipped block according to an example of the present disclosure.
[0032] Fig. 9 is a diagram of two scalar quantizers according to an example of the present disclosure.
[0033] Fig. 10A is a diagram of state transitions according to an example of the present disclosure.
[0034] Fig. 10B is a graphical representation of quantizer selection according to an example of the present disclosure.
[0035] Fig.11 is an illustration of a template for selecting a probability model according to the present disclosure.
[0036] Fig.12 is a diagram of an example of a block encoded in palette mode according to the present disclosure.
[0037] Fig.13 is an illustration of using a palette predictor to signal palette entries in accordance with the present disclosure.
[0038] Fig.14A is an illustration of a horizontal lateral scan according to the present disclosure.
[0039] Fig. 14B is an illustration of a vertical lateral scan according to the present disclosure.
[0040] Fig.15A is an illustration of a sub-block based index map scan for a palette according to the present disclosure.
[0041] Fig. 15B is an illustration of a sub-block based index map scan for a palette according to the present disclosure.
[0042] Fig.16 is a method for encoding a video signal according to an example of the present disclosure.
[0043] Fig.17 is a method for encoding a video signal according to an example of the present disclosure.
[0044] Fig.18 is a diagram illustrating a computing environment coupled with a user interface according to an example of the present disclosure. .
[0045] Fig.19 According to an example of the present disclosure, a method for video encoding and decoding is shown.
[0046] Fig. 20 According to an example of the present disclosure, a method for video encoding and decoding is shown.
[0047] Fig.21According to an example of the present disclosure, a method for video encoding and decoding is shown.
[0048] Fig. 22 According to an example of the present disclosure, a method for video encoding and decoding is shown.
[0049] Fig.23 is a block diagram illustrating an example system for encoding and decoding video blocks according to an example of the present disclosure.
[0050] Fig.24 is a block diagram illustrating an exemplary video encoder according to examples of the present disclosure.
[0051] Fig.25 is a block diagram illustrating an exemplary video decoder according to examples of the present disclosure. DETAILED DESCRIPTION
[0052] Reference will now be made in detail to exemplary embodiments, some examples of which are shown in the accompanying drawings. The following description refers to the accompanying drawings, in which the same numbers in different drawings represent the same or similar elements, unless otherwise specified. The embodiments set forth in the following exemplary embodiment descriptions do not represent all embodiments consistent with the present disclosure. Instead, they are merely examples of devices and methods consistent with aspects related to the present disclosure, as set forth in the appended claims.
[0053] As used in the present disclosure, the terms are used only to describe specific embodiments and are not intended to limit the present disclosure. As used in the present disclosure and the appended claims, the singular forms "a", "an", and "the" are also intended to include the plural forms unless the context clearly indicates otherwise. It should also be understood that the term "and / or" as used herein is intended to represent and cover any or all possible combinations of one or more of the associated listed items.
[0054] It should be understood that although the terms "first", "second", "third", etc. may be used herein to describe various information, the information should not be limited by these terms. These terms are only used to distinguish one category of information from another category of information. For example, without departing from the scope of protection of the present disclosure, the first information may be referred to as the second information; similarly, the second information may also be referred to as the first information. As used herein, the term "if" may be understood to mean "when" or "once" or "in response to a judgment" depending on the context.
[0055] The first version of the HEVC standard was completed in October 2013, and it provides about 50% bitrate savings or equivalent perceptual quality compared to the previous generation video coding standard H.264 / MPEG AVC. Although the HEVC standard provides significant coding improvements over its predecessor, there is evidence that higher coding efficiency can be achieved using additional coding tools compared to HEVC. On this basis, both VCEG and MPEG started exploring new coding techniques for future video coding standardization. ITU-T VECG and ISO / IEC MPEG established a Joint Video Exploration Team (JVET) in October 2015 to start important research on advanced technologies that can significantly improve coding efficiency. JVET maintains a reference software called the Joint Exploration Model (JEM) by integrating several additional coding tools on top of the HEVC Test Model (HM).
[0056] In October 2017, ITU-T and ISO / IEC issued a joint call for proposals (CfP) on video compression that exceeds the capabilities of HEVC. In April 2018, 23 CfP responses were received and evaluated at the 10th JVET meeting, indicating that the compression efficiency was improved by about 40% over HEVC. Based on such evaluation results, JVET launched a new project to develop a new generation of video coding standards, called Versatile Video Coding (VVC). In the same month, a reference software code base called VVC Test Model (VTM) was established to demonstrate the reference implementation of the VVC standard.
[0057] Like HEVC, VVC is built on a block-based hybrid video coding framework.
[0058] Figure 1 shows an overall diagram of a block-based video encoder for VVC. Specifically, Figure 1 A typical encoder 100 is shown. The encoder 100 has a video input 110, motion compensation 112, motion estimation 114, intra / inter mode decision 116, block predictor 140, adder 128, transform 130, quantization 132, prediction related information 142, intra prediction 118, picture buffer 120, inverse quantization 134, inverse transform 136, adder 126, memory 124, loop filter 122, entropy coding 138, and bitstream 144.
[0059] In encoder 100, a video frame is divided into a plurality of video blocks for processing. For each given video block, a prediction is formed based on an inter-frame prediction method or an intra-frame prediction method.
[0060] The prediction residual, which represents the difference between the current video block (part of the video input 110) and its predictor (part of the block predictor 140), is sent from the adder 128 to the transform 130. The transform coefficients are then sent from the transform 130 to the quantization 132 for entropy reduction. The quantized coefficients are then fed to the entropy coding 138 to generate the compressed video bitstream. Figure 1 As shown in FIG. 1 , prediction related information 142 (e.g., video block partition information, motion vector (MV), reference picture index, and intra prediction mode) from intra / inter mode decision 116 is also fed through entropy coding 138 and saved into a compressed bitstream 144. The compressed bitstream 144 includes a video bitstream.
[0061] In encoder 100, decoder-related circuitry is also required to reconstruct pixels for prediction. First, the prediction residual is reconstructed by inverse quantization 134 and inverse transform 136. The reconstructed prediction residual is combined with block predictor 140 to generate unfiltered reconstructed pixels for the current video block.
[0062] Spatial prediction (or "intra-frame prediction") uses pixels from samples of already coded neighboring blocks (called reference samples) in the same video frame as the current video block to predict the current video block.
[0063] Temporal prediction (also called "inter prediction") uses reconstructed pixels from an already coded video picture to predict the current video block. Temporal prediction reduces temporal redundancy inherent in video signals. The temporal prediction signal for a given coding unit (CU) or coding block is typically signaled by one or more MVs that indicate the amount and direction of motion between the current CU and its temporal reference. Furthermore, if multiple reference pictures are supported, a reference picture index is additionally sent that identifies which reference picture in the reference picture memory the temporal prediction signal comes from.
[0064] The motion estimation 114 receives the video input 110 and the signal from the picture buffer 120, and outputs the motion estimation signal to the motion compensation 112. The motion compensation 112 receives the video input 110, the signal from 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 decision 116.
[0065] After performing spatial and / or temporal prediction, the intra / inter mode decision 116 in the encoder 100 selects the best prediction mode, for example based 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 a quantization 132. The obtained quantized residual coefficients are inverse quantized by an inverse quantization 134 and inverse transformed by an inverse transform 136 to form a reconstructed residual, which is then added back to the prediction block to form a reconstructed signal for the CU. Further loop filtering 122 (e.g., a deblocking filter, sample adaptive offset (SAO), and / or an adaptive loop filter (ALF)) may be applied to the reconstructed CU before it is placed in the reference picture storage of the picture buffer 120 and used to encode 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 sent to an entropy coding unit 138 for further compression and packaging to form a bitstream.
[0066] Figure 1 A block diagram of a general block-based hybrid video coding system is given. The input video signal is processed block by block (called coding unit (CU)). In VTM-1.0, a CU can be up to 128x128 pixels. However, unlike HEVC, which partitions blocks based on quadtree only, in VVC, a coding tree unit (CTU) is split into CUs based on quadtree / binary tree / ternary tree to accommodate different local characteristics. By definition, a coding tree block (CTB) is an NxN sample block with a value of N, so partitioning the component into CTBs is a partition. A CTU includes a CTB for luma samples of a picture with three sample arrays, two corresponding CTBs for chroma samples, or a CTB for samples of a monochrome picture or a picture encoded using three separate color planes and syntax structures for coding samples. In addition, the concept of multiple partition unit types in HEVC is removed, that is, the separation of CU, prediction unit (PU) and transform unit (TU) no longer exists in VVC; instead, each CU is always used as a basic unit for prediction and transformation without further partitioning. In the multi-type tree structure, a CTU is first divided by a quadtree structure. Then, each leaf node of the quadtree can be further divided by a binary tree and a ternary tree structure. Figure 3A , 3B As shown in 3C, 3D and 3E, there are five types of partitioning, four-way partitioning, horizontal binary partitioning, vertical binary partitioning, horizontal three-way partitioning and vertical three-way partitioning.
[0067] Figure 3A In accordance with the present disclosure, a diagram is shown for depicting block quad partitioning in a multi-type tree structure.
[0068] Figure 3B In accordance with the present disclosure, a diagram is shown for depicting vertical binary partitioning of blocks in a multi-type tree structure.
[0069] Figure 3C In accordance with the present disclosure, a diagram is shown for depicting block-level binary partitioning in a multi-type tree structure.
[0070] Figure 3D In accordance with the present disclosure, a diagram is shown for depicting vertical ternary partitioning of blocks in a multi-type tree structure.
[0071] Figure 3E In accordance with the present disclosure, a diagram is shown for depicting block level ternary partitioning in a multi-type tree structure.
[0072] exist Figure 1 In the video code, spatial prediction and / or temporal prediction can be performed. Spatial prediction (or "intra-frame prediction") uses pixels from samples (called reference samples) of encoded neighboring blocks in the same video picture / strip to predict the current video block. Spatial prediction reduces the spatial redundancy inherent in the video signal. Temporal prediction (also known as "inter-frame prediction" or "motion compensated prediction") uses reconstructed pixels from encoded video pictures to predict the current video block. Temporal prediction reduces the temporal redundancy inherent in the video signal. The temporal prediction signal for a given CU is usually represented by one or more motion vectors (MVs) that indicate the amount and direction of motion between the current CU and its temporal reference. In addition, if multiple reference pictures are supported, a reference picture index is additionally sent, which is used to identify which reference picture in the reference picture memory the temporal prediction signal comes from. After spatial and / or temporal prediction, the mode decision block in the encoder selects the best prediction mode (e.g., based on a rate-distortion optimization method). The prediction block is then subtracted from the current video block, and the prediction residual is decorrelated and quantized using a transform. The quantized residual coefficients are inverse quantized and inverse transformed to form a reconstructed residual, which is then added back to the prediction block to form the reconstructed signal of the CU. Further loop filtering (e.g., deblocking filter, sample adaptive offset (SAO), and adaptive loop filter (ALF)) may be applied to the reconstructed CU before it is placed in the reference picture storage and used to encode 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 sent to the entropy coding unit for further compression and packaging to form a bitstream.
[0073] Figure 2 A general block diagram of a video decoder for VVC is shown. Specifically, Figure 2A block diagram of a typical decoder 200 is shown. The decoder 200 has a bitstream 210, entropy decoding 212, inverse quantization 214, inverse transform 216, adder 218, intra / inter mode selection 220, intra prediction 222, memory 230, loop filter 228, motion compensation 224, picture buffer 226, prediction related information 234 and video output 232.
[0074] Decoder 200 is similar to Figure 1 The decoder 200 is a decoder that decodes the input video bitstream 210. In the decoder 200, the input video bitstream 210 is first decoded by entropy decoding 212 to derive quantized coefficient levels and prediction related information. The quantized coefficient levels are then processed by inverse quantization 214 and inverse transform 216 to obtain reconstructed prediction residuals. The 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 adding the reconstructed prediction residuals from the inverse transform 216 to the prediction output generated by the block predictor mechanism using an adder 218.
[0075] Before the reconstructed block is stored in the picture buffer 226 used as a reference picture storage, it can be further passed through the loop filter 228. The reconstructed video in the picture buffer 226 can be sent to drive the display device and used to predict future video blocks. With the loop filter 228 turned on, a filtering operation is performed on these reconstructed pixels to derive the final reconstructed video output 232.
[0076] Figure 2 A general block diagram of a block-based video decoder is given. First, at the entropy decoding unit, the video bitstream is entropy decoded. The coding mode and prediction information are sent to the spatial prediction unit (if intra-frame coding) or the temporal prediction unit (if inter-frame coding) to form a prediction block. The residual transform coefficients are sent to the inverse quantization unit and the inverse transform unit to reconstruct the residual block. The prediction block and the residual block are then added. The reconstructed block can be further loop filtered before being stored in the reference picture store. The reconstructed video in the reference picture store is then sent out to drive the display device and is used to predict future video blocks.
[0077] In general, the basic intra prediction scheme applied in VVC remains the same as that of HEVC, except that several modules are further extended and / or improved, such as intra sub-partitioning (ISP) coding mode, extended intra prediction with wide-angle intra direction, position-dependent intra prediction combination (PDPC), and 4-tap intra interpolation.
[0078] The division of pictures, tile groups, tiles and CTUs in VVC
[0079] In VVC, a tile is defined as a CTU of a rectangular area within a specific tile column and a specific tile row in a picture. A tile group is a group of an integer number of tiles of a picture that are exclusively contained in a single NAL unit. Basically, the concept of a tile group is the same as the slice defined in HEVC. For example, a picture is 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 tile group modes are supported, namely, a raster scan tile group mode and a rectangular tile group mode. In the raster scan tile group mode, a tile group contains a sequence of tiles in a tile raster scan of a picture. In the rectangular tile group mode, a tile group contains multiple tiles of a picture that collectively form a rectangular area of a picture. Tiles within a rectangular tile group are arranged in the tile raster scan order of the tile group.
[0080] Figure 4 An example of a raster scan tile group partitioning of a picture is shown, where the picture is partitioned into 12 tiles and 3 raster scan tile groups. Figure 4 It includes tiles 410, 412, 414, 416, and 418. Each tile has 18 CTUs. Specifically, Figure 4 A picture with 18 by 12 luma CTUs is shown, which is divided into 12 tiles and 3 tile groups (informative). The three tile groups are as follows: (1) the first tile group includes tiles 410 and 412, (2) the second tile group includes tiles 414, 416, 418, 420, and 422, and (3) the third tile group includes tiles 424, 426, 428, 430, and 432.
[0081] Figure 5 An example of a rectangular tile group partitioning of a picture is shown, where the picture is divided into 24 tiles (6 tile columns and 4 tile rows) and 9 rectangular tile groups. Figure 5 Including tiles 510, 512, 514, 516, 518, 520, 522, 524, 526, 528, 530, 532, 534, 536, 538, 540, 542, 544, 546, 548, 550, 552, 554 and 556. Specifically, Figure 5A picture with 18 by 12 luma CTUs is shown, which is divided into 24 tiles and 9 tile groups (informative). A tile group contains tiles, and a tile contains a CTU. The 9 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.
[0082] Large block size transformation with high frequency zeroing in VVC
[0083] In VTM4, large block size transforms up to 64×64 are enabled, which are mainly applicable to higher resolution videos (e.g., 1080p and 4K sequences). For transform blocks with a size (width or height, or both) equal to 64, the high-frequency transform coefficients are zeroed, so that only the low-frequency coefficients are retained. For example, for an M×N transform block, where M is the block width and N is the block height, when M is equal to 64, only the transform coefficients of the left 32 columns are retained. Similarly, when N is equal to 64, only the transform coefficients of the first 32 rows are retained. When transform skip mode is used for large blocks, the entire block is used without zeroing any values.
[0084] Virtual Pipeline Data Unit (VPDU) in VVC
[0085] A virtual pipeline data unit (VPDU) is defined as a non-overlapping unit in a picture. In a hardware decoder, multiple pipeline stages process consecutive VPDUs simultaneously. In most pipeline stages, the VPDU size is roughly proportional to the buffer size, so it is important to keep the VPDU size small. In most hardware decoders, the VPDU size can be set to the maximum transform block (TB) size. However, in VVC, ternary tree (TT) and binary tree (BT) partitioning may lead to an increase in the VPDU size.
[0086] To keep the VPDU size to 64×64 luma samples, the following canonical partitioning restrictions are applied in VTM5 (with syntax signaling modifications):
[0087] TT partitioning is not allowed for CUs whose width or height or both width and height are equal to 128.
[0088] For 128xN CUs with N≤64 (ie, width equal to 128 and height less than 128), horizontal BT is not allowed.
[0089] For Nx128 CUs with N≤64 (i.e., height equal to 128 and width less than 128), vertical BT is not allowed.
[0090] Fig. 6A , 6B , 6C, 6D, 6E, 6F, 6G and Figure 6H An example of TT and BT partitioning that is not allowed in VTM is shown.
[0091] Transform coefficient encoding and decoding in VVC
[0092] The transform coefficient coding in VVC is similar to HEVC in that they both use non-overlapping coefficient groups (also called CGs or sub-blocks). However, there are some differences between them as well. In HEVC, each CG of a coefficient has a fixed 4x4 size. In VVC draft 6, the CG size depends on the TB size. Therefore, various CG sizes (1x16, 2x8, 8x2, 2x4, 4x2, and 16x1) are provided in VVC. The CGs within a coding block and the transform coefficients within a CG are encoded according to a predefined scanning order.
[0093] In order to limit the maximum number of context-coded bins for each pixel, the area of the TB and the type of video component (e.g., luminance component vs. chrominance component) are used to derive the maximum number of context-coded bins (CCB) for the TB. The maximum number of context-coded bins is equal to TB_zosize*1.75. Here, TB_zosize indicates the number of samples in the TB after the coefficients are zeroed. It should be noted that coded_sub_block_flag is a flag indicating whether the CG contains non-zero coefficients, regardless of the CCB count.
[0094] Coefficient zeroing is an operation performed on a transform block to force coefficients located in a certain area of the transform block to be 0. For example, in the current VVC, the 64x64 transform has an associated zeroing operation. Therefore, the transform coefficients located outside the upper left 32x32 area within the 64x64 transform block are forced to 0. In fact, in the current VVC, for any transform block whose size along a dimension exceeds 32, a coefficient zeroing operation is performed along that dimension to force coefficients located outside the upper left 32x22 area to be 0.
[0095] In the transform coefficient coding and decoding in VVC, the variable remBinsPass1 is first set to the maximum number of context coding bits allowed (MCCB). During the encoding process, each time the context coding bits are signaled, the variable is reduced by one. When remBinsPass1 is greater than or equal to 4, the coefficient is first signaled through the syntax of sig_coeff_flag, abs_level_gt1_flag, par_levelflag and abs_lovel_gt3_flag, all of which use context coding bits in the first pass. In the second pass, the level information of the remainder of the coefficient is encoded using the syntax element of abs_remainder using Golomb-rice code and bypass coded bits. When remBinsPass1 becomes less than 4 during the first pass encoding, the current coefficient is not encoded during the first pass encoding, but is directly encoded in the second pass using the syntax element of dec_abs_level using Golomb-Rice code and bypass coded bits. The rice parameter derivation process of dec_abs_level[] is derived as shown in Table 3. After all the above-mentioned levels of coding, the sign (sign_flag) of all scan positions with sig_coeff_flag equal to 1 is finally coded as a bypass binary bit. Figure 7 Such a process is described in . remBinsPass1 is reset for each TB. The switch from using context coded bits for sig_coeff_flag, abs_level_gt1_blag, par_level_flag, and abs_lovel_gt3_flagg to using bypass coded bits for the remaining coefficients occurs at most once per TB. For a coefficient subblock, if remBinsPass1 is less than 4 before encoding its first coefficient, the entire coefficient subblock is encoded using bypass coded bits.
[0096] Figure 7 A diagram showing a residual codec structure for a transform block is shown.
[0097] The unified (same) rice parameter (RicePara) derivation syntax is used to signal abs_remainder and dec_abs_level. The only difference is that for abs_remainder and dec_abs_level encoding, the base level baseLevel is set to 4 and 0 respectively. The Rice parameter is determined not only based on the sum of the absolute levels of the adjacent five transform coefficients in the local template, but also based on the corresponding base level, as shown below:
[0098] RicePara=RiceParTable[max(min(31,sumAbs–5*baseLevel),0)]
[0099] The syntax and related semantics of residual coding in the current VVC draft specification are shown in Table 1 and Table 2 respectively. How to read Table 1 can also be found in the appendix section of the VVC specification.
[0100] Table 1. Syntax of residual codec
[0101]
[0102]
[0103]
[0104]
[0105]
[0106]
[0107]
[0108] Table 2. Semantics of residual codec
[0109]
[0110]
[0111]
[0112]
[0113] Table 3. Derivation of Rice parameters for abs_remainder[] and dec_abs_level[]
[0114]
[0115] Table 4. cRiceParam specifications based on locSumAbs
[0116] locSumAbs 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 cRiceParam 0 0 0 0 0 0 0 1 1 1 1 1 1 1 2 2 locSumAbs 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 cRiceParam 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3
[0117] Residual Coding and Decoding of Transform Skip Mode in VVC
[0118] Unlike HEVC, which designs a single residual codec scheme for encoding transform coefficients and transform skip coefficients, in VVC, two separate residual codec methods are adopted for transform coefficients and transform skip coefficients (ie, residuals), respectively.
[0119] In transform skip mode, the statistical characteristics of the residual signal are different from those of the transform coefficients and no energy compression around low frequency components is observed. The residual codec is modified to take into account the different signal characteristics of the (spatial) transform skip residual, which include:
[0120] Don't signal the final x / y position;
[0121] When all previous flags are equal to 0, except for the DC sub-block, coded_sub_block_flag is encoded for each sub-block;
[0122] sig_coeff_flag context modeling with two adjacent coefficients;
[0123] par_level_flag uses only one context model;
[0124] Additional greater than 5, 7, 9 signs;
[0125] Derivation of modified rice parameters for binarization of remainder;
[0126] Context modeling for the sign flag is determined based on the upper left neighboring coefficient value, and the sign flag is parsed after sig_coeff_flag to put all context coding bins together.
[0127] like Figure 8 As shown in , the syntax elements sig_coeff_flag, coeff_sign_flag, abs_level_gt1_flag and par_level_flag are coded residual sample by residual sample in an interleaved manner in the first pass, followed by abs_level_gtX_flag bit-plane coding in the second pass and abs_mainder coding in the third pass.
[0128] Channel 1: sig_coeff_flag, coeff_sign_flag, abs_level_gt1_flag, and par_level_flag
[0129] Channel 2: abs_level_gt3_flag, abs_level_gt5_flag, abs_level_gt7_flag, and abs_evel_gt 9_flag
[0130] Channel 3: abs_remainder
[0131] Figure 8 A diagram showing a residual codec structure for transform skip blocks.
[0132] Table 5 and Table 2 respectively illustrate the syntax and related semantics of residual coding and decoding for transform skip mode in the current VVC draft specification. How to read Table 5 can also be found in the appendix section of the VVC specification.
[0133] Table 5. Syntax for residual codec for transform skip mode
[0134]
[0135]
[0136]
[0137]
[0138]
[0139]
[0140] Quantification
[0141] In the current VVC, the maximum QP value is extended from 51 to 63, and the signal of the initial QP is changed accordingly. When a non-zero value of slice_qp_delta is encoded, the initial value of SliceQpY can be modified at the slice segment level. For transform skip blocks, the minimum allowed quantization parameter (QP) is defined as 4, because when QP is equal to 4, the quantization step becomes 1.
[0142] In addition, the same HEVC scalar quantization is used with a new concept called dependent scalar quantization. Dependent scalar quantization refers to a method in which the set of allowable reconstruction values of a transform coefficient depends on the values of the transform coefficient level before the current transform coefficient level in the reconstruction order. The main effect of this method is that the allowable reconstruction vectors are compressed more densely in the N-dimensional vector space (N represents the number of transform coefficients in the transform block) compared to the traditional independent scalar quantization used in HEVC. This means that for a given average number of allowable reconstruction vectors per N-dimensional unit volume, the average distortion between the input vector and the most recently reconstructed vector is reduced. The method of dependent scalar quantization is implemented by (a) defining two scalar quantizers with different reconstruction levels, and (b) defining a process for switching between the two scalar quantizers.
[0143] exist Fig. 9The two scalar quantizers used (denoted by Q0 and Q1) are shown in FIG. The positions of the available reconstruction levels are uniquely specified by the quantization step size Δ. The scalar quantizer used (Q0 or Q1) is not explicitly signaled in the bitstream. Instead, the quantizer used for the current transform coefficient is determined based on the parity of the transform coefficient level that precedes the current transform coefficient in the coding / reconstruction order.
[0144] Fig. 9 A diagram of two scalar quantizers used in the proposed dependent quantization method is shown.
[0145] like Fig. 10A and Fig. 10B As shown in , switching between two scalar quantizers (Q0 and Q1) is achieved by a state machine with four quantizer states (QState). QState can take four different values: 0, 1, 2, 3. It is uniquely determined by the parity of the transform coefficient level before the current transform coefficient in the encoding / reconstruction order. At the beginning of inverse quantization of the transform block, the state is set equal to 0. The transform coefficients are reconstructed in the scan order (i.e., in the same order as entropy decoding). After reconstructing the current transform coefficient, the state is updated as shown in Figure 10, where k represents the value of the transform coefficient level.
[0146] Fig. 10A A transition diagram illustrating the proposed quantization-dependent state transition is shown.
[0147] Fig. 10B A table illustrating quantizer selection for the proposed dependent quantization is shown.
[0148] Signaling of default and user defined scaling matrices is also supported. Default mode scaling matrices are all flat with elements equal to 16 for all TB sizes. IBC and intra coding modes currently share the same scaling matrix. Therefore, for USER_DEFINED matrices, the number of MatrixType and MatrixType_DC are updated as follows:
[0149] MatrixType: 30 = 2 (intra & IBC / inter is 2) × 3 (Y / Cb / Cr components) × 5 (square TB size: 4×4 to 64×64 for luminance, 2×2 to 32×32 for chrominance).
[0150] MatrixType_DC: 14 = 2 (intra & IBC / inter is 2 × Y component is 1) × 3 (TB size: 16×16, 32×32, 64×64) + 4 (intra & IBC / inter is 2 × Cb / Cr component is 2) × 2 (TB size: 16×16, 32×32).
[0151] The DC values are encoded separately for the following scaling matrices: 16×16, 32×32, and 64×64. For TBs of size less than 8×8, all elements in one scaling matrix are signaled. If the size of the TB is greater than or equal to 8×8, only 64 elements of an 8×8 scaling matrix are signaled as the base scaling matrix. In order to obtain a square matrix larger than 8×8, the 8×8 base scaling matrix is upsampled (by replication of elements) to the corresponding square size (i.e., 16×16, 32×32, 64×64). When the zeroing of the high-frequency coefficients of the 64-point transform is applied, the corresponding high frequencies of the scaling matrix are also zeroed. That is, if the width or height of the TB is greater than or equal to 32, only the left half or the upper half of the coefficients are retained, and the remaining coefficients are assigned to zero. In addition, the number of elements signaled for the 64×64 scaling matrix is also reduced from 8×8 to 3 4×4 sub-matrices, because the 4×4 elements in the lower right corner are never used.
[0152] Context modeling for transform coefficient encoding and decoding
[0153] The choice of the probability model of the syntax element associated with the absolute value of the transform coefficient level depends on the value of the absolute level in the local neighborhood or the absolute level of the partial reconstruction. Fig.11 The template used is shown in .
[0154] Fig.11 An illustration of a template used to select a probability model is shown. The black square specifies the current scan position and the square with an "x" indicates the local neighborhood used.
[0155] The chosen probability model depends on the sum of the absolute level (or partially reconstructed absolute level) in the local neighborhood and the number of absolute levels greater than 0 within the local neighborhood (given by the number of sig_coeff_flags equal to 1). Context modeling and binarization depends on the following measure of the local neighborhood:
[0156] numSig: the number of non-zero levels in the local neighborhood;
[0157] sumAbs1: the sum of the absolute levels (absLevel1) of the partial reconstructions after the first pass in the local neighborhood;
[0158] sumAbs: the sum of the reconstructed absolute levels in the local neighborhood;
[0159] Diagonal position (d): The sum of the horizontal and vertical coordinates of the current scan position within the transform block.
[0160] Based on the values of numSig, sumAbs1 and d, the probability model for encoding sig_coeff_flag, abs_level_gt1_flag, par_levelflag and abs_lovel_gt3_flag is selected. Based on the values of sumAbs and numSig, the Rice parameters for binarizing abs_remainer and dec_abs_level are selected.
[0161] In the current VVC, the simplified 32-point MTS (also called RMTS32) is based on skipping high-frequency coefficients to reduce the computational complexity of 32-point DST-7 / DCT-8. And, it is accompanied by coefficient coding changes, including all types of zeroing (i.e., the existing zeroing of high-frequency components in RMTS32 and DCT2). Specifically, based on the reduced TU size, the binarization of the last non-zero coefficient position coding is encoded, and the context model selection for the last non-zero coefficient position coding is determined by the original TU size. In addition, 60 context models are used to encode the sig_coeff_flag of the transform coefficient. The selection of the context model index is based on the sum of the maximum of the five previous partially reconstructed absolute levels called locSumAbsPass1 and the state of the dependent quantization QState, as shown below:
[0162] If cIdx is equal to 0, ctxInc is derived as follows:
[0163] ctxInc=12*Max(0,QState–1)+
[0164] Min((locSumAbsPass1+1)>>1,3)+
[0165] (d<2?8:(d<5?4:0))
[0166] Otherwise (cIdx is greater than 0), ctxInc is derived as follows:
[0167] ctxInc=36+8*Max(0,QState-1)+
[0168] Min((locSumAbsPass1+1)>>1,3)+(d<2?4:0)
[0169] Palette Mode
[0170] The basic idea behind the palette mode is that samples in a CU are represented by a small set of representative color values. This set is called the palette. It is also possible to indicate color values that are excluded from the palette by signaling the color values as escape colors, for which the values of the three color components are directly signaled in the bitstream. This is done in Fig.12 Shown in.
[0171] Fig.12 An example of a block encoded in palette mode is shown. Fig.12 Includes a block 1210 encoded in palette mode and a palette 1220 .
[0172] exist Fig.12 In , the palette size is 4. The first 3 samples are reconstructed using palette entries 2, 0, and 3, respectively. The blue samples represent escape symbols. The CU level flag palette_escape_val_present_flag indicates whether there is an escape symbol in the CU. If there is an escape symbol, the palette size will increase by one, and the last index is used to indicate the escape symbol. Therefore, in Fig.12 , assigns index 4 to the escape symbol.
[0173] To decode a palette-encoded block, the decoder needs to have the following information:
[0174] Palette table;
[0175] The palette index.
[0176] If the palette index corresponds to an escape symbol, additional overhead is signaled to indicate the corresponding color value of the sample.
[0177] Furthermore, on the encoder side, it is necessary to derive a suitable palette to be used with the CU.
[0178] For the derivation of the lossy coding palette, a modified k-means clustering algorithm is used. The first sample of the 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 of the current palette colors is calculated. If the distortion of each component is less than the threshold of the palette entry corresponding to the minimum SAD, the sample is added to the cluster belonging to the 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 of the cluster is updated and becomes the palette entry of the cluster.
[0179] In the next step, the clusters are sorted in descending order of usage. Then, the palette entry corresponding to each entry is updated. Typically, the center of the cluster is used as the palette entry. But when the cost of encoding the palette entry is taken into account, a rate-distortion analysis is performed to analyze whether any entry from the palette predictor is more suitable to be used as an updated palette entry rather than the center of the cluster. This process continues until all clusters have been processed or the maximum palette size is reached. Finally, if a cluster has only one sample and the corresponding palette entry is not in the palette predictor, the sample is converted to an escape symbol. In addition, duplicate palette entries are deleted and their clusters are merged.
[0180] After palette derivation, each sample in the block is assigned the index of the nearest (in SAD) palette entry. The samples are then assigned to either 'INDEX' or 'COPY_ABOVE' mode. For each sample, either 'INDEX' or 'COPY_ABOVE' mode can be used. The cost of the coding mode is then calculated. The mode with the lower cost is chosen.
[0181] For encoding of palette entries, a palette predictor is maintained. The maximum size of the palette and the palette predictor are signaled in the SPS. The palette predictor is initialized at the beginning of each CTU row, each slice, and each tile.
[0182] For each entry in the palette predictor, a reuse flag is signaled to indicate whether it is part of the current palette. Fig.13 Shown in.
[0183] Fig.13 The use of a palette predictor to signal palette entries is shown. Fig.13 Included is a previous palette 1310 and a current palette 1320 .
[0184] The reuse flag is signaled using a run-length encoding of zero. After that, the number of new palette entries is signaled using an order-0 exponential Golomb code. Finally, the component values of the new palette entries are signaled.
[0185] Using horizontal and vertical sweeps, the palette index is encoded, such as Fig.14A and 14B Use palette_transpose_flag to explicitly signal the scan order in the bitstream.
[0186] Fig.14A A horizontal transverse scan is shown.
[0187] Fig. 14B A vertical transverse scan is shown.
[0188] For the encoding of palette index, a palette mode based on line coefficient groups (CG) is used, which divides the CU into multiple segments with 16 samples based on a traversal scan mode, such as Fig.15A and Fig. 15B As shown in , where for each CG, the index run, palette index value and quantized color of the escape mode are encoded / parsed sequentially.
[0189] Fig.15A A sub-block based index map scan for a palette is shown.
[0190] Fig. 15B A sub-block based index map scan for a palette is shown.
[0191] The palette index is encoded using the two main palette sampling modes 'INDEX' and 'COPY_ABOVE'. As previously described, the escape symbol is assigned an index equal to the maximum palette size. 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 the palette run encoding in each segment is as follows:
[0192] For each pixel, a context coded bit run_copy_flag=0 is signaled, which indicates whether the pixel has the same mode as the previous pixel, that is, whether the previous scanned pixel and the current pixel are both of run type COPY_ABOVE, or whether the previous scanned pixel and the current pixel are both of run type INDEX and the same index value. Otherwise, run_copy_flag=1 is signaled.
[0193] If the mode of the pixel is different from the previous pixel, a context coded bit copy_above_palette_indices_flag is signaled, which indicates the run type of the pixel (i.e., INDEX or COPY_ABOVE). If the sample is located in the first row (horizontal traversal scan) or the first column (vertical traversal scan), the decoder does not have to resolve the run type because the INDEX mode is used by default. In addition, if the previously resolved run type is COPY_ABOVE, the decoder does not have to resolve the run type.
[0194] After the pixels in a palette run are encoded, the index values for the INDEX mode (palette_idx_idc) and the quantization escape color (paletter_escape_val) are bypass encoded.
[0195] Improvements in residual and coefficient coding
[0196] In VVC, when encoding transform coefficients, the syntax of abs_remainder and dec_abs_level is signaled using a unified (same) rice parameter (RicePara) derivation. The only difference is that for abs_remainder and dec_abs_level encoding, the base level baseLevel is set to 4 and 0, respectively. The Rice parameter is determined not only based on the sum of the absolute levels of the five adjacent transform coefficients in the local template, but also based on the corresponding base level, as shown below:
[0197] RicePara=RiceParTable[max(min(31,sumAbs–5*baseLevel),0)]
[0198] In other words, the binary codewords of the syntax elements abs_remainder and dec_abs_level are adaptively determined according to the level information of the neighboring coefficients. Since this codeword determination is performed for each sample, additional logic is required to handle this codeword adaptation for coefficient coding.
[0199] Similarly, when the residual block is encoded in the transform skip mode, the binary codeword of the syntax element abs_remainder is adaptively determined according to the level information of the neighboring residual samples.
[0200] Furthermore, when encoding syntax elements related to residual coding or transform coefficient coding, the selection of the probability model depends on the level information of neighboring levels, which requires additional logic and additional context models.
[0201] In the current design, the binarization of escaped samples is derived by calling the third-order Exp-Golomb binarization process. There is still room for further improvement in its performance.
[0202] In the current VVC, two different level mapping schemes are available and are applied to regular transformation and transformation skipping, respectively. Each level mapping scheme is associated with different conditions, mapping functions, and mapping positions. For blocks to which regular transformation is applied, the level mapping scheme is used after the number of context coding bits (CCB) exceeds the limit. As shown in Table 2, the mapping position (expressed as ZeroPos[n]) and the mapping result (expressed as AbsLevel[xC][yC]) are derived. For blocks to which transformation skipping is applied, another level mapping scheme is used before the number of context coding bits (CCB) exceeds the limit. As shown in Table 5, the mapping position (expressed as predCoeff) and the mapping result (expressed as AbsLevel[xC][yC]) are derived. From a standardization perspective, this non-uniform design may not be optimal.
[0203] For profiles above 10 bits in HEVC, extended_precision_processing_flag equal to 1 specifies: use extended dynamic range for coefficient parsing and inverse transform processing. In the current VVC, residual coding of transform coefficients or skip coding of transforms above 10 bits is reported as a reason for significant performance degradation. There is room for further performance improvement.
[0204] Proposed method
[0205] In this disclosure, some methods are proposed to solve the problems mentioned in the improvement of residual and coefficient coding. It is worth noting that the following methods can be applied individually or jointly.
[0206] According to a first aspect of the present disclosure, it is proposed to use a set of fixed binary codewords to encode certain syntax elements (eg, abs_remainder) in residual coding. Different methods can be used to form the binary codewords. Some example methods are listed below.
[0207] First, the same process used in current VVC to determine the codeword for abs_remainder is used, but a fixed rice parameter (eg, 1, 2, or 3) is always selected.
[0208] Second, fixed-length binarization.
[0209] Third, truncated Rice binarization.
[0210] Fourth, the truncated binary (TB) binarization process.
[0211] Fifth, the k-order Exp-Golomb binarization process (EGk).
[0212] Sixth, finite k-order Exp-Golomb binarization.
[0213] According to a second aspect of the present disclosure, it is proposed to use a fixed set of codewords to encode certain syntax elements (eg, abs_remainder and dec_abs_level) in transform coefficient coding. Different methods can be used to form binary codewords. Some example methods are listed below.
[0214] First, the same process used in 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 value of baseLevel can still be different for abs_remainder and dec_abs_level used by current VVC. (For example, for the encoding of abs_remainder and dec_abs_level, baseLevel is set to 4 and 0, respectively).
[0215] Second, the same process used in 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 baseLevel values for abs_remainder and dec_abs_level are chosen to be the same, such as 0 for both or 4 for both.
[0216] Third, fixed-length binarization.
[0217] Fourth, truncated Rice binarization.
[0218] Fifth, the truncated binary (TB) binarization process.
[0219] Sixth, k-order Exp-Golomb binarization process (EGk).
[0220] Seventh, finite k-order Exp-Golomb binarization
[0221] According to a third aspect of the present disclosure, it is proposed to encode syntax elements related to residual coding or coefficient coding (eg, abs_level_gtx_flag) using a single context, and context selection based on adjacent decoded level information may be removed.
[0222] According to a fourth aspect of the present disclosure, it is proposed to use a variable set of binary codewords to encode certain syntax elements (e.g., abs_remainder) in residual coding and decoding, and to determine the selection of the binary codeword set according to certain coding information of the current block (e.g., quantization parameter (QP) associated with TB / CB and / or slice, prediction mode of CU (e.g., IBC mode or intra or inter) and / or slice type (e.g., I slice, P slice or B slice)). Different methods can be used to derive the variable set of binary codewords, and some example methods are listed below.
[0223] First, the same process for determining the codeword of abs_remainder as used in current VVC is used, but with a different rice parameter.
[0224] Second, k-order Exp-Golomb binarization process (EGk)
[0225] Third, finite k-order Exp-Golomb binarization.
[0226] Table 6. Rice parameter determination based on QP value
[0227]
[0228]
[0229] The same method explained in the fourth aspect is also applicable to transform coefficient encoding. According to the fifth aspect of the present disclosure, it is proposed to use a variable binary codeword set to encode certain syntax elements (e.g., abs_remainder and dec_abs_level) in transform coefficient encoding and decoding, and determine the selection of the binary codeword set based on certain encoding information of the current block (e.g., quantization parameter (QP) associated with TB / CB and / or slice, prediction mode of CU (e.g., IBC mode or intra or inter) and / or slice type (e.g., I slice, P slice or B slice)). Similarly, different methods can be used to derive the variable binary codeword set, and some example methods are listed below.
[0230] First, the same process for determining the codeword of abs_remainder as used in current VVC is used, but with a different rice parameter.
[0231] Second, k-order Exp-Golomb binarization process (EGk)
[0232] Third, finite k-order Exp-Golomb binarization.
[0233] In the methods described above, different rice parameters can be used to derive different sets of binary codewords. For a given residual sample block, the rice parameter used is determined according to the CU QP (denoted as QP CU ), rather than the neighboring level information. A specific example is shown in Table 6, where TH1 to TH4 are predefined thresholds satisfying (TH1 < TH2 < TH3 < TH4), and K0 to K4 are predefined rice parameters. It should be noted that the same logic can be implemented differently in practice. For example, certain equations or lookup tables can also be used to derive the same rice parameter from the QP value of the current CU, as shown in Table 6.
[0234] According to a fifth aspect of the present disclosure, a set of parameters and / or thresholds associated with the determination of codewords for syntax elements used in transform coefficient coding and / or transform skip residual coding is signaled into the bitstream. When encoding the syntax elements by an entropy encoder (e.g., arithmetic coding), the determined codewords are used as binary codewords.
[0235] It should be noted that the set of parameters and / or thresholds can be a complete set or a subset of all parameters and thresholds associated with the determination of codewords for the syntax elements. The set of parameters and / or thresholds can be signaled at different levels in the video bitstream. For example, it can 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), at the coding tree unit (CTU) level or coding unit (CU) level.
[0236] In one example, in the slice header, picture header, PPS, and / or SPS, the rice parameter for determining the codeword for encoding the abs_remainder syntax in transform skip residual coding is signaled. When a CU is encoded in transform skip mode and the CU is associated with the above-mentioned slice header, picture header, PPS, and / or SPS, etc., the signaled rice parameter is used to determine the codeword for encoding the syntax abs_remainder.
[0237] According to a sixth aspect of the present disclosure, a set of parameters and / or thresholds associated with codeword determination as shown in the first and second aspects is used for syntax elements in transform coefficient coding and / or transform skip residual coding. And different sets can be used according to whether the current block contains luminance residuals / coefficients or chrominance residuals / parameters. When encoding the syntax elements by an entropy encoder (e.g., arithmetic coding), the determined codewords are used as binary codewords.
[0238] In one example, the codeword of abs_remainder associated with transform residual codec used in the current VVC is used for both luma blocks and chroma blocks, but luma blocks and chroma blocks use different fixed rice parameters, respectively. (For example, K1 is used for luma blocks and K2 is used for chroma blocks, where K1 and K2 are integers)
[0239] According to a seventh aspect of the present disclosure, a set of parameters and / or thresholds associated with codeword determination of syntax elements for transform coefficient coding and / or transform skip residual coding is signaled into a bitstream. Different sets may be signaled for luma and chroma blocks. When the syntax elements are encoded by an entropy encoder (e.g., arithmetic coding), the determined codeword is used as a binary codeword.
[0240] The same method explained in the above aspects also applies to escape value encoding in palette mode, for example, palette_escape_val.
[0241] According to an eighth aspect of the present disclosure, different k-order Exp-Golomb binarizations can be used to derive different sets of binary codewords for encoding escape values in palette mode. In one example, for a given escape sample block, according to the QP value of the block (expressed as QP CU ) determines the Exp-Golomb parameter (i.e., the value of k) used. The same example as shown in Table 6 can be used to derive the value of parameter k based on a given QP value for the block. Although four different thresholds (from TH1 to TH4) are listed in this example, and can be based on these thresholds and QP CU To derive five different k values (from K0 to K4), it is worth mentioning that this number of thresholds is only for illustration purposes. In practice, different numbers of thresholds can be used to divide the entire QP value range into different numbers of QP value segments, and for each QP value segment, different k values can be used to derive the corresponding binary codeword for encoding the escape value of the block encoded in the palette mode. It is also worth noting that in practice, the same logic can be implemented in different ways. For example, certain equations or lookup tables can be used to derive the same rice parameters.
[0242] According to a ninth aspect of the present disclosure, a parameter and / or a threshold set associated with determining a codeword for a syntax element of an escape sample is signaled into a bitstream. When encoding the syntax element of the escape sample by an entropy encoder (e.g., arithmetic coding), the determined codeword is used as a binary codeword.
[0243] It is worth noting that the parameter and / or threshold set can be a complete set or a subset of all parameters and thresholds associated with codeword determination for syntax elements. The parameter and / or threshold set can be signaled at different levels in the video bitstream. For example, this information can 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), at the coding tree unit (CTU) level, or at the coding unit (CU) level.
[0244] In one example, according to this aspect, the kth order of Exp-Golomb binarization is used to determine the codeword for encoding the palette_escape_val syntax in the 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, the value of k can be signaled in the slice header, the picture header, the PPS and / or the SPS, etc. When the CU is encoded in the palette mode and the CU is associated with the above-mentioned slice header, the picture header, the PPS and / or the SPS, etc., the codeword for encoding the syntax palette_escape_val is determined using the signaled Exp-Golomb parameters.
[0245] Coordination of level mapping for transform skip mode and regular transform mode
[0246] According to the tenth aspect of the present disclosure, the same conditions for applying the layer mapping are also used for the transform skip mode and the regular transform mode. In one example, it is proposed to apply the layer mapping after the number of context coding bits (CCB) exceeds the limit of the transform skip mode and the regular transform mode. In another example, it is proposed to apply the layer mapping before the number of context coding bits (CCB) exceeds the limit of the transform skip mode and the regular transform mode.
[0247] According to an eleventh aspect of the present disclosure, the same method for deriving a mapping position in a hierarchical map is used for a transform skip mode and a regular transform mode. In one example, it is proposed to apply a mapping position derivation method in a hierarchical map used in a transform skip mode to a regular transform mode. In another example, it is proposed to apply a mapping position derivation method in a hierarchical map used in a regular transform mode to a transform skip mode.
[0248] According to a twelfth aspect of the present disclosure, the same level mapping method is applied to the transform skip mode and the regular transform mode. In one example, it is proposed that the level mapping function used in the transform skip mode is also applied to the regular transform mode. In another example, it is proposed that the level mapping function used in the regular transform mode is also applied to the transform skip mode.
[0249] Simplification of Rice parameter derivation in residual coding
[0250] According to the thirteenth aspect of the present disclosure, it is proposed to use simple logic (e.g., shift or division operation) instead of a lookup table to derive rice parameters when encoding the syntax elements of abs_remainder / dec_abs_level using Golomb-rice code. According to the present disclosure, the lookup table as specified in Table 4 can be removed. In one example, the Rice parameter cRiceParam is derived as: cRiceParam = (locSumAbs>>n), where n is a positive number (e.g., 3). It is worth noting that in practice, other different logics can be used to achieve the same result (e.g., divided by a value equal to 2 to the power of n). An example of the corresponding decoding process based on the VVC draft is shown below, where bold and italic fonts illustrate changes, and deleted content is displayed using italic fonts.
[0251] Table 7. Rice parameter derivation process
[0252]
[0253]
[0254] According to a fourteenth aspect of the present disclosure, it is proposed to use fewer adjacent positions to derive rice parameters when encoding the syntax elements of abs_remainder / dec_abs_level using Golomb-rice codes. In one example, it is suggested that only two adjacent positions are used to derive rice parameters when encoding the syntax elements of abs_remainder / dec_abs_level. The corresponding decoding process based on the VVC draft is shown below, where bold and italic fonts indicate changes, and italic fonts are used to indicate deleted content.
[0255] Table 8. Rice parameter derivation process
[0256]
[0257]
[0258] In another example, it is proposed that when encoding the syntax element of abs_remainder / dec_abs_level, only one neighboring position is used to derive the rice parameter. The corresponding decoding process based on the VVC draft is shown below, where bold and italic fonts indicate changes, and italic fonts are used to show deleted content.
[0259] Table 9. Rice parameter derivation process
[0260]
[0261]
[0262] According to the fifteenth aspect of the present disclosure, it is proposed that when using Golomb rice code to encode the syntax elements of abs_mainder / dec_abs_level, different logic is used to adjust the value of locSumAbs according to the value of baseLevel to derive rice parameters. In one example, additional scaling and offset operations are applied in the form of "(locSumAbs-baseLevel*5)*alpha+beta". When the value of alpha is 1.5 and the value of beta is 1, the corresponding decoding process based on the VVC draft is as follows, where bold and italic fonts indicate changes, and deleted content is displayed using italic fonts.
[0263] Table 10. Rice parameter derivation process
[0264]
[0265]
[0266] According to a sixteenth aspect of the present disclosure, it is proposed to use Golomb-rice codes to delete the cropping operation derived from the rice parameter in the abs_remainder / dec_abs_level syntax element. According to the present disclosure, an example of the decoding process of the VVC draft is shown below, where bold and italic fonts indicate changes, and italic fonts are used to show deleted content.
[0267] Table 11. Rice parameter derivation process
[0268]
[0269]
[0270] Based on the current disclosure, an example of the decoding process of the VVC draft is shown below, where bold and italic fonts indicate changes, and italic fonts are used to show deleted content.
[0271] Table 12. Rice parameter derivation process
[0272]
[0273]
[0274] According to the seventeenth aspect of the present disclosure, it is proposed that when the syntax element of abs_remainder / dec_abs_level is encoded using the Golomb-rice code, the initial value of locSumAbs is changed from 0 to a non-zero integer to derive the rice parameter. In one example, locSumAbs is assigned an initial value of 1, and the corresponding decoding process based on the VVC draft is as follows, where bold and italic fonts illustrate changes, and deleted content is displayed using italic fonts.
[0275] Table 13. Rice parameter derivation process
[0276]
[0277]
[0278] According to the eighteenth aspect of the present disclosure, it is proposed that when encoding the syntax element of abs_remainder / dec_abs_level using Golomb-rice code, the maximum value of the adjacent position level values is used instead of their sum to derive the rice parameter. An example of the corresponding decoding process based on the VVC draft is shown below, where bold and italic fonts illustrate changes, and italic fonts are used to display deleted content.
[0279] Table 14. Rice parameter derivation process
[0280]
[0281]
[0282] According to a nineteenth aspect of the present disclosure, it is suggested that when encoding the syntax element of abs_remainer / dec_abs_level using Golomb-rice code, rice parameters are derived based on the relative amplitude of each AbsLevel value at adjacent positions and the base level value. In one example, the rice parameters are derived based on the number of AbsLevel values at adjacent positions that are greater than the base level. An example of a corresponding decoding process based on the VVC draft is shown below, where bold and italic fonts indicate changes, and deleted content is displayed using italic fonts.
[0283] Table 15. Rice parameter derivation process
[0284]
[0285]
[0286] In another example, the rice parameter is derived based on the sum of the (AbsLevel-baseLevel) values of adjacent positions whose AbsLevel values are greater than the base level. An example of the corresponding decoding process based on the VVC draft is shown below, where bold and italic fonts illustrate changes, and italic fonts are used to show deleted content.
[0287] Table 16. Rice parameter derivation process
[0288]
[0289] Based on the current disclosure, an example of the decoding process of the VVC draft is shown below, where bold and italic fonts illustrate changes, and deleted content is shown using italic fonts.
[0290] Table 17. Rice parameter derivation process
[0291]
[0292] Simplification of hierarchical mapping position derivation in residual codec
[0293] According to the twentieth aspect of the present disclosure, it is proposed to remove QState from the derivation of ZeroPos[n] so that ZeroPos[n] is derived only from cRiceParam. An example of the corresponding decoding process based on the VVC draft is shown below, where bold and italic fonts illustrate changes, and deleted content is displayed using italic fonts.
[0294] Table 18. Rice parameter derivation process
[0295]
[0296] According to the twenty-first aspect of the present disclosure, it is proposed to derive ZeroPos[n] based on the value of locSumAbs. An example of the corresponding decoding process based on the VVC draft is shown below, where bold and italic fonts illustrate changes, and deleted content is displayed using italic fonts.
[0297] Table 19. Rice parameter derivation process
[0298]
[0299] According to the twenty-second aspect of the present disclosure, it is proposed to derive ZeroPos[n] based on the AbsLevel value of the adjacent position. In one example, ZeroPos[n] is derived based on the maximum value of AbsLevel[xC+1][yC] and AbsLevel[xC][yC+1]. An example of the corresponding decoding process based on the VVC draft is shown below, where bold and italic fonts illustrate changes, and deleted content is displayed using italic fonts.
[0300] Table 20. Rice parameter derivation process
[0301]
[0302]
[0303] According to the twenty-third aspect of the present disclosure, it is proposed to derive cRiceParam and ZeroPos[n] based on the maximum value of all AbsLevel values of adjacent positions. An example of the corresponding decoding process based on the VVC draft is shown below, where bold and italic fonts illustrate changes, and deleted content is displayed using italic fonts.
[0304] Table 21. Rice parameter derivation process
[0305]
[0306]
[0307] The same method explained in the above aspect is also applicable to the derivation of predCoeff in the residual coding and decoding of the transform skip mode. In one example, the derivation of the variable predCoeff is as follows:
[0308] predCoeff=Max(absLeftCoeff,absAboveCoeff)+1
[0309] Residual encoding and decoding of transform coefficients
[0310] In this disclosure, in order to solve the problems pointed out in the section "Improvements in Residual and Coefficient Coding", methods are provided to simplify and / or further improve existing designs of residual coding and decoding. In general, the main features of the techniques proposed in this disclosure are summarized as follows.
[0311] First, based on the current design, the rice parameter derivation used in conventional residual coding is adjusted.
[0312] Second, the binary method used in conventional residual codecs is changed.
[0313] Third, change the Rice parameter derivation used under the conventional residual encoding and decoding.
[0314] Rice parameter derivation in the residual encoding and decoding based on the current design
[0315] According to the twenty-fourth aspect of the present disclosure, it is proposed to use a variable method of Rice parameter derivation when encoding certain syntax elements (e.g., abs_remainder / dec_abs_level) in the residual encoding and decoding, and determine the selection according to certain encoding information of the current block (e.g., quantization parameter or encoding bit depth associated with TB / CB and / or stripe / profile) and / or according to a new flag associated with the TB / CB / stripe / picture / sequence level (e.g., extended_precision_processing_flag). Different methods can be used to derive the Rice parameter, and some example methods are listed below.
[0316] First, cRiceParam = (cRiceParam << a) + (cRiceParam >> b) + c, where a, b, and c are positive numbers, e.g., {a, b, c} = {1, 0}. It should be noted that in practice, other different logics can be used to achieve the same result (e.g., multiplying by a value equal to a power of 2).
[0317] Second, cRiceParam = (cRiceParam << a) + b, where a and b are positive numbers, e.g., {a, b} = {1, 1}. It should be noted that in practice, other different logics can be used to achieve the same result (e.g., multiplying by a value equal to a power of 2).
[0318] Third, cRiceParam = (cRiceParam * a) + b, where a and b are positive numbers, e.g., {a, b} = {1.5, 0}. It should be noted that in practice, other different logics can be used to achieve the same result (e.g., multiplying by a value equal to a power of 2).
[0319] An example of the corresponding decoding process based on the VVC draft is shown below, where the bold and italic fonts illustrate the changes, and the deleted content is shown in italic font. The changes for the VVC draft are shown in bold and italic in Table 22. It should be noted that the same logic can be implemented differently in practice. For example, certain equations or look-up tables can also be used to derive the same Rice parameter according to the BitDepth value of the current CU / sequence.
[0320] Table 22. Rice parameter derivation process
[0321]
[0322]
[0323]
[0324] In another example, when BitDepth is greater than or equal to a predefined threshold (eg, 10, 11, 12, 13, 14, 15, or 16), the Rice parameter cRiceParam is derived as follows: cRiceParam = (cRiceParam <<a)+(cRiceParam> >b)+c, where a, b, and c are positive numbers (e.g., 1). The corresponding decoding process based on the VVC draft is shown below, where bold and italic fonts illustrate changes, and italic fonts are used to show deleted content. The changes to the VVC draft are shown in bold and italics in Table 23. It is worth noting that the same logic can be implemented differently in practice. For example, certain equations or lookup tables can also be used to derive the same rice parameters based on the BitDepth value of the current CU / sequence.
[0325] Table 23. Rice parameter derivation process
[0326]
[0327]
[0328]
[0329] Binary approach in residual coding for profiles exceeding 10 bits
[0330] According to the twenty-fifth aspect of the present disclosure, it is proposed to use a variable binary codeword set to encode certain syntax elements (e.g., abs_remainder / dec_abs_level) in residual coding and decoding, and the selection is determined according to certain coding information of the current block (e.g., quantization parameter or coding bit depth associated with TB / CB and / or slice / profile) and / or according to a new flag associated with TB / CB / slice / picture / sequence level (e.g., extended_precision_processing_flag). Different methods can be used to derive the variable binary codeword set, and some example methods are listed below.
[0331] First, use the same process as that used in the current VVC for determining the codeword of abs_remainder, but always select a fixed Rice parameter (e.g., 2, 3, 4, 5, 6, 7, or 8). The fixed value can be different under different conditions according to the specific coding information of the current block (e.g., the quantization parameter or coding bit depth associated with the TB / CB and / or slice / profile) and / or according to the syntax elements associated with the TB / CB / slice / picture / sequence level (e.g., rice_parameter_value). A specific example is shown in Table 24, where TH1 to TH4 are predefined thresholds satisfying (TH1 < TH2 < TH3 < TH4), and K0 to K4 are predefined Rice parameters. It should be noted that the same logic can be implemented differently in practice. For example, certain equations or look-up tables can also be used to derive the same Rice parameter according to the BitDepth value of the current CU / sequence, as shown in Table 24.
[0332] Second, fixed-length binarization.
[0333] Third, truncated Rice binarization.
[0334] Fourth, truncated binary (TB) binarization process.
[0335] Fifth, k-th order Exp-Golomb binarization process (EGk).
[0336] Sixth, finite k-th order Exp-Golomb binarization.
[0337] Table 24. Rice parameter determination based on bit depth
[0338]
[0339]
[0340] In one example, when the new flag (e.g., extended_precision_processing_flag) is equal to 1, the Rice parameter cRiceParam is fixed to n, where n is a positive number (e.g., 2, 3, 4, 5, 6, 7, or 8). This fixed value may be different under different conditions. An example of the corresponding decoding process based on the VVC draft is shown below, where the bold and italic fonts illustrate the changes, and the deleted content is shown in italic font. The changes for the VVC draft are shown in bold and italic in Table 25.
[0341] Table 25. Rice parameter derivation process
[0342]
[0343] In another example, when the new flag (e.g., extended_precision_processing_flag) is equal to 1, it is recommended to use only a fixed value for the rice parameter when encoding the syntax elements of abs_remainder / dec_abs_level. The corresponding decoding process based on the VVC draft is shown below, where bold and italic fonts indicate changes and italic fonts are used to indicate deletions. Changes to the VVC draft are shown in bold and italics in Table 26.
[0344] Table 26. Rice parameter derivation process
[0345]
[0346] 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 uqfRice parameter cRiceParam is fixed to n, where n is a positive number (e.g., 4, 5, 6, 7, or 8). This fixed value may be different under different conditions. An example of a corresponding decoding process based on the VVC draft is shown below, where TH is a predefined threshold (e.g., 10, 11, 12, 13, 14, 15, or 16). Changes to the VVC draft are shown in bold and italics in Table 27, where bold and italic fonts indicate changes and deleted content is shown using italic fonts.
[0347] Table 27. Rice parameter derivation process
[0348]
[0349] In another example, when BitDepth is greater than a predefined threshold (e.g., 10, 11, 12, 13, 14, 15, or 16), it is recommended to use only a fixed value for the rice parameter when encoding the syntax elements of abs_remainder / dec_abs_level. The corresponding decoding process based on the VVC draft is as follows, where TH is a predefined threshold (e.g., 10, 11, 12, 13, 14, 15, or 16), where bold and italic fonts indicate changes, and deleted content is shown using italic fonts. Changes to the VVC draft are shown in bold and italics in Table 28.
[0350] Table 28. Rice parameter derivation process
[0351]
[0352] Derivation of Rice parameters in residual coding
[0353] According to the twenty-sixth aspect of the present disclosure, a variable method for deriving rice parameters in residual coding is proposed to encode certain syntax elements (e.g., abs_remainder / dec_abs_level), and the selection is determined according to certain coding information of the current block (e.g., quantization parameter or coding bit depth associated with TB / CB and / or slice / profile) and / or according to a new flag associated with TB / CB / slice / picture / sequence level (e.g., extended_precision_processing_flag). Different methods can be used to derive rice parameters, and some example methods are listed below.
[0354] First, it is proposed to use counters to derive rice parameters. These counters are determined based on the value of the coded coefficient and some coding information of the current block (e.g., compent ID). A specific example, riceParameter = counter / a, where a is a positive number (e.g., 4), which keeps 2 counters (divided by luma / chroma). At the beginning of each slice, these counters are reset to 0. Once coded, if this is the first coefficient coded in the sub-TU, the counters are updated as follows:
[0355] if(coeffValue>=(3< <rice))counter++
[0356] if(((coeffValue<<1)<(1<<riceParameter))&&(counter> 0))counter--;
[0357] Second, it is proposed to add a shift operation in the derivation of the rice parameter in VVC. The shift is determined according to the value of the coding coefficient. An example of the corresponding decoding process based on the VVC draft is shown below, where the shift is determined according to the counter of method 1, where bold and italic fonts indicate changes, and italic fonts are used to show deleted content. Changes to the VVC draft are shown in bold and italics in Table 29.
[0358] Table 29. Rice parameter derivation process
[0359]
[0360]
[0361] Third, it is proposed to add a shift operation in the derivation of the Rice parameter in VVC. This shift is determined according to the specific coding information of the current block, for example, the coding bit depth associated with the TB / CB and / or the slice profile (e.g., 14-bit profile or 16-bit profile). An example of the corresponding decoding process based on the VVC draft is shown below. The shift is determined according to the counter of Method 1, where bold and italic fonts indicate changes, and the deleted content is shown in italic font. The changes for the VVC draft are shown in bold and italic in Table 30.
[0362] Table 30. Rice Parameter Derivation Process
[0363]
[0364] Residual Coding and Decoding for Transform Skip
[0365] According to the twenty-seventh aspect of the present disclosure, it is proposed to use a set of variable binary codewords to encode certain syntax elements (e.g., abs_remainder) in the residual coding and decoding for transform skip, and to determine this selection according to certain coding information of the current block (e.g., quantization parameter or coding bit depth associated with the TB / CB and / or the slice / profile) and / or according to a new flag associated with the TB / CB / slice / picture / sequence level (e.g., extended_precision_processing_flag). Different methods can be used to derive this set of variable binary codewords, and some example methods are listed below.
[0366] Second, use the same process as the codeword used to determine abs_remainder in the current VVC, but always select a fixed Rice parameter (e.g., 2, 3, 4, 5, 6, 7, or 8). According to certain coding information of the current block (e.g., quantization parameter, frame type (e.g., I, P, or B), component ID (e.g., luminance or chrominance), color format (e.g., 420, 422, or 444), or coding bit depth associated with the TB / CB and / or the slice / profile) and / or according to a syntax element associated with the TB / CB / slice / picture / sequence level (e.g., rice_parameter_value), this fixed value may be different under different conditions. A specific example is shown in Table 7, where TH1 to TH4 are predefined thresholds satisfying (TH1 < TH2 < TH3 < TH4), and K0 to K4 are predefined Rice parameters. It should be noted that the same logic can be implemented differently in practice. For example, certain equations or look-up tables can also be used to derive the same Rice parameter according to the BitDepth value of the current CU / sequence, as shown in Table 7.
[0367] Second, fixed-length binarization.
[0368] Third, truncated Rice binarization.
[0369] Fourth, the truncated binary (TB) binarization process.
[0370] Fifth, the k-order Exp-Golomb binarization process (EGk).
[0371] Sixth, finite k-order Exp-Golomb binarization.
[0372] An example of the corresponding decoding process based on the VVC draft is shown below, with changes to the VVC draft shown in bold and italics in Table 31, and deleted content shown in italics. It is worth noting that the same logic can be implemented differently in practice. For example, the same rice parameters can also be derived using certain equations or lookup tables.
[0373] Table 31. Rice parameter derivation process
[0374]
[0375]
[0376] In another example, when the new flag (e.g., extended_precision_processing_flag) is equal to 1, it is proposed to use only a fixed value for the rice parameter when encoding the syntax element of abs_remainder. The corresponding decoding process based on the VVC draft is shown below, where bold and italic fonts indicate changes, and italic fonts are used to show deleted content. Changes to the VVC draft are shown in bold and italics in Table 32.
[0377] Table 32. Rice parameter derivation process
[0378]
[0379]
[0380] In another example, when the new flag (e.g., extended_precision_processing_flag) is equal to 1, the Rice parameter cRiceParam is fixed to n, where n is a positive number (e.g., 2, 3, 4, 5, 6, 7, or 8). The fixed value may be different under different conditions. An example of a corresponding decoding process based on the VVC draft is shown below, where bold and italic fonts indicate changes and italic fonts are used to show deleted content. Changes to the VVC draft are shown in bold and italics in Table 33.
[0381] Table 33. Rice parameter derivation process
[0382]
[0383] 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 to n, where n is a positive number (e.g., 4, 5, 6, 7, or 8). The fixed value may be different under different conditions. An example of a corresponding decoding process based on the VVC draft is shown below, where TH is a predefined threshold (e.g., 10, 11, 12, 13, 14, 15, or 16), where bold and italic fonts indicate changes, and deleted content is displayed using italic fonts. Changes to the VVC draft are shown in bold and italics in Table 34.
[0384] Table 34. Rice parameter derivation process
[0385]
[0386] 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, a syntax element is further signaled for each transform skip slice to indicate the Rice parameters for the slice. When the control flag is signaled as disabled (e.g., set equal to "0"), no syntax elements are further signaled at a lower level to indicate the Rice parameters for the transform skip slice, and the default Rice parameters (e.g., 1) are used for all transform skip slices. An example of a corresponding decoding process based on the VVC draft is shown below, where TH is a predefined value (e.g., 0, 1, 2), where bold and italic fonts indicate changes, and deleted content is shown using italic fonts. Changes to the VVC draft are shown in bold and italics in Table 35. It is worth noting that sh_ts_residual_coding_rice_index can be encoded in different ways and / or can have a maximum value. For example, the same syntax element may also be encoded / decoded using u(n) (an unsigned integer using n bits) or f(n) (a fixed pattern bit string written (from left to right) using n bits, with the left bit first).
[0387] Slice Header Syntax
[0388] Table 35. Syntax of residual codec
[0389]
[0390]
[0391] sh_ts_residual_coding_rice_flag equal to 1 indicates that sh_ts_sresidual_coding_lice_index exists in the current slice. sh_ts_residual_coding_rice_flag equal to 0 indicates that sh_ts_sresidual_coding_lice_index does not exist in the current slice. When sh_ts_residual_coding_rice_flag is not present, the value of sh_ts_residual_coding_lice_flag is inferred to be equal to 0.
[0392] sh_ts_residual_coding_rice_indiex specifies the rice parameter used for the residual_ts_coding() syntax structure.
[0393] Table 36. Rice parameter derivation process
[0394]
[0395] In another example, a control flag is signaled in a sequence parameter set (or in a 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, a syntax element is further signaled for each transform skip slice to indicate the Rice parameters for the slice. When the control flag is signaled as disabled (e.g., set to equal "0"), no syntax elements are further signaled at a lower level to indicate the Rice parameters for the transform skip slice, and the default Rice parameters (e.g., 1) are used for all transform skip slices. An example of a corresponding decoding process based on the VVC draft is shown below, where TH is a predefined value (e.g., 0, 1, 2). Changes to the VVC draft are shown in bold and italics in Table 37, and deleted content is shown in italics. It is worth noting that sh_ts_residual_coding_rice_idx can be encoded in different ways and / or can have a maximum value. For example, the same syntax element may also be encoded / decoded using u(n) (an unsigned integer using n bits) or f(n) (a fixed pattern bit string written (from left to right) using n bits, with the left bit first).
[0396] Sequence Parameter Set RBSP Syntax
[0397] Table 37. Syntax for residual codec
[0398]
[0399] sps_ts_residual_coding_rice_present_in_sh_flag equal to 1 indicates that sh_ts_residual_coding_ric_idx is present in the SH syntax structure referencing the SPS. sps_ts_residual_coding_rice_present_in_sh_flag equal to 0 indicates that sh_ts_residual_coding_ric_idx is not present in the SH syntax structure referencing the SPS. When sps_ts_residual_coding_rice_present_in_sh_flag is not present, the value of sps_ts_residual_coding_rice_present_in_sh flag is inferred to be equal to 0.
[0400] Slice Header Syntax
[0401] Table 38. Syntax for residual codec
[0402]
[0403]
[0404] sh_ts_residual_coding_rice_idx specifies the rice parameter used for the residual_ts_coding() syntax structure.
[0405] Table 39. Rice parameter derivation process
[0406]
[0407] In another example, a syntax element is signaled for each transform skipped slice to indicate the Rice parameters for the slice. An example of a corresponding decoding process based on the VVC draft is shown below. The changes to the VVC draft are shown in bold and italics in Table 40. It is worth noting that sh_ts_residual_coding_rice_idx can be encoded in different ways and / or can have a maximum value. For example, the same syntax element can also be encoded / decoded using u(n) (an unsigned integer using n bits) or f(n) (a fixed pattern bit string written (from left to right) using n bits, with the left bit first).
[0408] Slice Header Syntax
[0409] Table 40. Syntax for residual codec
[0410]
[0411]
[0412] sh_ts_residual_coding_rice_idx specifies the rice parameter used for the residual_ts_coding() syntax structure. When sh_ts_residual_coding_rice_idx is not present, the value of sh_ts_residual_coding_ric_idx is inferred to be equal to 0.
[0413] Table 41. Rice parameter derivation process
[0414]
[0415] In another example, a control flag is signaled in the picture 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, a syntax element is further signaled to indicate the Rice parameters for the picture. When the control flag is signaled as disabled (e.g., set equal to "0"), no syntax elements are further signaled at a lower level to indicate the Rice parameters for transform skip slices, and the default Rice parameters (e.g., 1) are used for all transform skip slices. An example of a corresponding decoding process based on the VVC draft is shown below, where TH is a predefined value (e.g., 0, 1, 2). Changes to the VVC draft are shown in bold and italics in Table 42. It is worth noting that pps_ts_residual_coding_rice_idx can be encoded in different ways and / or can have a maximum value. For example, the same syntax element may also be encoded / decoded using u(n) (an unsigned integer using n bits) or f(n) (a fixed pattern bit string written (from left to right) using n bits, with the left bit first).
[0416] Picture Parameter Set Range Extension Syntax
[0417] Table 42. Syntax for residual codec
[0418]
[0419]
[0420] pps_ts_residual_coding_rice_flag equal to 1 indicates that pps_ts_residual_coding_lice_index exists in the current picture. pps_ts_residual_coding_rice_flag equal to 0 indicates that pps_ts_residial_coding_rice_idx does not exist in the current picture. When pps_ts_residual_coding_rice_flag is not present, the value of pps_ts_residial_coding_rice_flag is inferred to be equal to 0.
[0421] pps_ts_residual_coding_rice_idx specifies the rice parameter used for the residual_ts_coding() syntax structure.
[0422] Table 43. Rice parameter derivation process
[0423]
[0424] In another example, it is proposed to encode the syntax element abs_remainder using only changing rice parameters. The value of the applied rice parameter can be determined based on the specific coding information of the current block (e.g., block size, quantization parameter, bit depth, transform type, etc.). In a specific embodiment, it is proposed to adjust the rice parameters based on the coding bit depth and quantization parameter applied to a CU. The corresponding decoding process based on the VVC draft is shown below, and the changes to the VVC draft are shown in bold and italics in Table 44, and the deleted content is shown in italics. It is worth noting that the same logic can be implemented differently in practice. For example, certain equations or lookup tables can also be used to derive the same rice parameters.
[0425] Table 44. Rice parameter derivation process
[0426]
[0427]
[0428]
[0429] In another example, the corresponding decoding process based on the VVC draft is as follows, where TH is a predefined threshold (e.g., 33 or 34). Changes to the VVC draft are shown in bold and italics in Table 45, and deleted content is shown in italics. It is worth noting that the same logic can be implemented differently in practice. For example, the same rice parameters can also be derived using certain equations or lookup tables.
[0430] Table 45. Rice parameter derivation process
[0431]
[0432]
[0433] In another example, the corresponding decoding process based on the VVC draft is as follows, where TH A and TH B is a predefined threshold (e.g., TH A =8,TH B =33 or 34). Changes to the VVC draft are shown in bold and italics in Table 46, and deleted content is shown in italics. It is worth noting that the same logic can be implemented differently in practice. For example, certain equations or lookup tables can also be used to derive the same rice parameters.
[0434] Table 46. Rice parameter derivation process
[0435]
[0436] In another example, when a new flag (e.g., extended_precision_processing_flag) is equal to 1, it is proposed to encode the syntax element of abs_remainder using only the changed rice parameters. The value of the change can be determined based on the specific coding information of the current block (e.g., block size, quantization parameter, bit depth, transform type, etc.). In a specific embodiment, it is proposed to adjust the rice parameters based on the coding bit depth and quantization parameter applied to a CU. The corresponding decoding process based on the VVC draft is shown as follows. The changes to the VVC draft are shown in bold and italics in Table 47. It is worth noting that the same logic can be implemented differently in practice. For example, certain equations or lookup tables can also be used to derive the same rice parameters.
[0437] Table 47. Rice parameter derivation process
[0438]
[0439]
[0440] In another example, the corresponding decoding process based on the VVC draft is as follows, where TH is a predefined threshold (e.g., 18, 19). The changes to the VVC draft are shown in bold and italics in Table 48. It is worth noting that the same logic can be implemented differently in practice. For example, the same rice parameters can also be derived using certain equations or lookup tables.
[0441] Table 48. Rice parameter derivation process
[0442]
[0443]
[0444] In another example, the corresponding decoding process based on the VVC draft is as follows, where TH A and TH B is a predefined threshold (e.g., TH A =8,TH B =18 or 19). Changes to the VVC draft are shown in bold and italics in Table 49. It is worth noting that the same logic can be implemented differently in practice. For example, the same rice parameters can also be derived using certain equations or lookup tables.
[0445] Table 49. Rice parameter derivation process
[0446]
[0447] Fig.16 A method for video encoding is shown. The method can be applied to an encoder, for example. In step 1610, the encoder can receive a video input. For example, the video input can be a real-time stream. In step 1612, the encoder can obtain a quantization parameter based on the video input. For example, the quantization parameter can be calculated by a quantization unit in the encoder. In step 1614, the encoder can derive rice parameters based on at least one predefined threshold, the encoding bit depth, and the quantization parameter. For example, the rice parameters are used to signal the syntax of abs_remainder and dec_abs_level. In step 1616, the encoder can entropy encode a video bitstream based on the rice parameters. For example, the video bitstream can be entropy encoded to generate a compressed video bitstream.
[0448] In another example, when BitDepth is greater than 10, it is recommended to use only fixed values (e.g., 2, 3, 4, 5, 6, 7, or 8) for the rice parameter when encoding the syntax element of abs_remainder. Depending on the specific encoding information of the current block (e.g., quantization parameter), the fixed value may be different under different conditions. The corresponding decoding process based on the VVC draft is shown below, where TH is a predefined threshold (e.g., 18, 19). The changes to the VVC draft are shown in bold and italics in Table 50. It is worth noting that the same logic can be implemented differently in practice. For example, certain equations or lookup tables can also be used to derive the same rice parameters.
[0449] Table 50. Rice parameter derivation process
[0450]
[0451]
[0452] In another example, the corresponding decoding process based on the VVC draft is as follows, where TH A and TH B is a predefined threshold (e.g., TH A =8,TH B =18 or 19). Changes to the VVC draft are shown in bold and italics in Table 51. It is worth noting that the same logic can be implemented differently in practice. For example, the same rice parameters can also be derived using certain equations or lookup tables.
[0453] Table 51. Rice parameter derivation process
[0454]
[0455] In another example, the corresponding decoding process based on the VVC draft is as follows, where TH is a predefined threshold (e.g., 33 or 34). The changes to the VVC draft are shown in bold and italics in Table 52. It is worth noting that the same logic can be implemented differently in practice. For example, the same rice parameters can also be derived using certain equations or lookup tables.
[0456] Table 52. Rice parameter derivation process
[0457]
[0458] In another example, the corresponding decoding process based on the VVC draft is as follows, where TH A and TH B is a predefined threshold (e.g., TH A =8,THB =33 or 34). Changes to the VVC draft are shown in bold and italics in Table 53. It is worth noting that the same logic can be implemented differently in practice. For example, the same rice parameters can also be derived using certain equations or lookup tables.
[0459] Table 53. Rice parameter derivation process
[0460]
[0461] It is worth mentioning that in the above description, the formula for calculating a specific rice parameter is only used as an example to illustrate the proposed idea. For ordinary technicians in modern video coding technology, other mapping functions (or equivalent mapping equations) are already applicable to the proposed idea (i.e., determining the rice parameters of the transform skip mode based on the coded bits and the applied quantization parameters). At the same time, it should also be mentioned that in the current VVC design, the value of the applied quantization parameter is allowed to change at the coding block group level. Therefore, the proposed rice parameter adjustment scheme can provide flexible adaptation of the rice parameters of the transform skip mode at the coding block group level.
[0462] Signaling information for normal residual codec and transform skip residual codec
[0463] According to the twenty-eighth aspect of the present disclosure, it is proposed to use signals to send rice parameters of binary codewords (for encoding certain syntax elements (e.g., abs_remainder in transform skip residual coding and decoding)), shift and offset parameters of rice parameters for deriving abs_remainder / dec_abs_level for conventional residual coding and decoding, and to determine whether to use signals based on specific coding information of the current block (e.g., quantization parameter or coding bit depth associated with TB / CB and / or slice / profile) and / or based on a new flag associated with TB / CB / slice / picture / sequence level (e.g., sps_residual_coding_info_present_in_sh_flag).
[0464] In one example, a control flag is signaled in a slice header to indicate whether signaling of Rice parameters for a transform skip block and signaling of offset and / or shift parameters for deriving the Rice parameters in the transform block is enabled or disabled. When the control flag is signaled as enabled, one syntax element is further signaled for each transform skip slice to indicate the Rice parameters for the slice, and two syntax elements are further signaled for each transform slice to indicate the offset and / or shift parameters for deriving the Rice parameters for the slice. When the control flag is signaled as disabled (e.g., set equal to "0"), no syntax elements are further signaled at a lower level to indicate the Rice parameters for the transform skip slice, and a default Rice parameter (e.g., 1) is used for all transform skip slices, no syntax elements are further signaled at a lower level to indicate the offset and shift parameters for deriving the Rice parameters for the transform slice, and a default offset and / or shift parameter (e.g., 0) is used for all transform slices. An example of the corresponding decoding process based on the VVC draft is shown below, where TH is a predefined value (e.g., 0, 1, 2). The changes to the VVC draft are shown in bold and italics in Table 54. It is worth noting that sh_residual_coding_rice_shift, sh_residual_coding_rice_offset, and sh_ts_residual_coding_rice_index can be encoded in different ways and / or can have a maximum value. For example, the same syntax element can also be encoded / decoded using u(n) (an unsigned integer using n bits) or f(n) (a fixed-pattern binary bit string written (from left to right) using n bits, with the left bit first).
[0465] Fig.17 A method for video decoding is shown. The method can be applied, for example, to an encoder. In step 1710, the encoder can receive a video input. In step 1712, the encoder can signal rice parameters of binary codewords for encoding syntax elements. The encoded syntax elements can include abs_remainder in a transform skip residual codec. In step 1714, the encoder can entropy encode a video bitstream based on the rice parameters and the video input.
[0466] Slice Header Syntax
[0467] Table 54. Syntax for residual codec
[0468]
[0469]
[0470] sh_residual_coding_rice_flag is equal to 1, which means that sh_resideual_coding_rice_shift, sh_residial_coding_rice_offset and sh_residial_coding_rice_index exist in the current slice. sh_residual_coding_rice_flag is equal to 0, which means that sh_resideal_coding_rice_shift, sh_residial_coding_rice_offset and sh_resdial_coding_rice_index do not exist in the current slice.
[0471] sh_residual_coding_rice_shift specifies the shift parameter used in the rice parameter derivation process for abs_remainer[] and dec_abs_level[]. When sh_residual_coding_rice_shift is not present, the value of sh_resideal_coding_rice_shift is inferred to be equal to 0.
[0472] sh_residual_coding_rice_offset specifies the offset parameter used in the rice parameter derivation process for abs_remainer[] and dec_abs_level[]. When sh_residual_coding_rice_offset is not present, the value of sh_resideal_coding_rice_offset is inferred to be equal to 0.
[0473] sh_ts_residual_coding_rice_index specifies the rice parameter used for the residual_ts_coding() syntax structure. When sh_ts_residual_coding_rice_index is not present, the value of sh_ts_residual_coding_rice_index is inferred to be equal to 0.
[0474] Table 55. Rice parameter derivation process
[0475]
[0476]
[0477] Table 56. Rice parameter derivation process
[0478]
[0479]
[0480] In another example, a control flag is signaled in a sequence parameter set (or in a sequence parameter set range extension syntax) to indicate whether to enable or disable signaling of Rice parameters for a transform skip block and signaling of offset and / or shift parameters for deriving the Rice parameters in the transform block. When the control flag is signaled as enabled, one syntax element is further signaled for each transform skip slice to indicate the Rice parameters for the slice, and two syntax elements are further signaled for each transform slice to indicate the offset and / or shift parameters for deriving the Rice parameters for the slice. When the control flag is signaled as disabled (e.g., set equal to "0"), no syntax elements are further signaled at a lower level to indicate the Rice parameters for the transform skip slice, and a default Rice parameter (e.g., 1) is used for all transform skip slices, no further syntax elements are signaled at a lower level to indicate the offset and shift parameters for deriving the Rice parameters for the transform slice, and a default offset and / or shift parameter (e.g., 0) is used for all transform slices. An example of the corresponding decoding process based on the VVC draft is shown below, where TH is a predefined value (e.g., 0, 1, 2). The changes to the VVC draft are shown in bold and italics in Table 57. It is worth noting that sh_residual_coding_rice_shift, sh_residual_coding_rice_offset, and sh_ts_residual_coding_rice_idx can be encoded in different ways and / or can have a maximum value. For example, the same syntax element can also be encoded / decoded using u(n) (an unsigned integer using n bits) or f(n) (a fixed-pattern binary bit string written (from left to right) using n bits, with the left bit first).
[0481] Sequence Parameter Set RBSP Syntax
[0482] Table 57. Syntax for residual codec
[0483]
[0484] sps_residual_coding_info_present_in_sh_flag equal to 1 indicates that sh_residual_coding_clice_shift, sh_resideual_coding_rice_offset, and sh_ts_resideural_coding_rice_idx are present in the SH syntax structure referencing the SPS. sps_residual_coding_info_present_in_sh_flag equal to 0 indicates that sh_residial_coding_rice_shift, sh_resideual_coding_rice_offset, and sh_ts_resideural_coding_rice_idx are not present in the SH syntax structure referencing the SPS. When sps_residual_coding_info_present_in_sh_flag is not present, the value of sps_residual_coding_info_present_insh_flg is inferred to be equal to 0.
[0485] Slice Header Syntax
[0486] Table 58. Syntax for residual codec
[0487]
[0488] sh_residual_coding_rice_shift specifies the shift parameter used in the rice parameter derivation process for abs_remainer[] and dec_abs_level[]. When sh_residual_coding_rice_shift is not present, the value of sh_resideal_coding_rice_shift is inferred to be equal to 0.
[0489] sh_residual_coding_rice_offset specifies the offset parameter used in the rice parameter derivation process for abs_remainer[] and dec_abs_level[]. When sh_residual_coding_rice_offset is not present, the value of sh_resideal_coding_rice_offset is inferred to be equal to 0.
[0490] sh_ts_residual_coding_rice_idx specifies the rice parameter used for the residual_ts_coding() syntax structure. When sh_ts_residual_coding_rice_index is not present, the value of sh_ts_sresidual_coding_lice_index is inferred to be equal to 0.
[0491] Table 59. Rice parameter derivation process
[0492]
[0493]
[0494] Table 60. Rice parameter derivation process
[0495]
[0496]
[0497] In another example, for each transform skipped slice, one syntax element is signaled to indicate the Rice parameters for the slice, and for each transform slice, two syntax elements are signaled to indicate the shift and / or offset parameters used to derive the Rice parameters for the slice. An example of a corresponding decoding process based on the VVC draft is shown below. The changes to the VVC draft are shown in bold and italics in Table 61. It is worth noting that sh_residual_coding_rice_shift, sh_residual_coding_rice_offset, and sh_ts_residual_coding_rice_idx can be encoded in different ways and / or can have a maximum value. For example, the same syntax element can also be encoded / decoded using u(n) (an unsigned integer using n bits) or f(n) (a fixed pattern binary bit string written (from left to right) using n bits, with the left bit first).
[0498] Slice Header Syntax
[0499] Table 61. Syntax for residual codec
[0500]
[0501]
[0502] sh_ts_residual_coding_rice_idx specifies the rice parameter used for the residual_ts_coding() syntax structure. When sh_ts_residual_coding_rice_idx is not present, the value of sh_ts_residual_coding_ric_idx is inferred to be equal to 0.
[0503] sh_residual_coding_rice_offset specifies the offset parameter used in the rice parameter derivation process for abs_remainer[] and dec_abs_level[]. When sh_residual_coding_rice_offset is not present, the value of sh_resideal_coding_rice_offset is inferred to be equal to 0.
[0504] sh_ts_residual_coding_rice_idx specifies the rice parameter used for the residual_ts_coding() syntax structure. When sh_ts_residual_coding_rice_index is not present, the value of sh_ts_residual_coding_ric_index is inferred to be equal to 0.
[0505] Table 62. Rice parameter derivation process
[0506]
[0507] Table 63. Rice parameter derivation process
[0508]
[0509]
[0510] In another example, a control flag is signaled in the picture parameter set range extension syntax to indicate whether to enable or disable signaling of Rice parameters for transform skip blocks and signaling of offset and / or shift parameters for deriving the Rice parameters in the transform blocks. When the control flag is signaled as enabled, one syntax element is further signaled to indicate Rice parameters for transform skip residual codec for the picture, and two syntax elements are further signaled for normal residual codec to indicate offset and / or shift parameters for deriving the Rice parameters for the picture. When the control flag is signaled as disabled (e.g., set to equal "0"), no further syntax elements are signaled at a lower level to indicate Rice parameters for transform skip residual codecs, and default Rice parameters (e.g., 1) are used for all transform skip residual codecs, no further syntax elements are signaled at a lower level to indicate offset and / or shift parameters for deriving Rice parameters for conventional residual codecs, and default offset and / or shift parameters (e.g., 0) are used for all conventional residual codecs. An example of a corresponding decoding process based on the VVC draft is shown below, where TH is a predefined value (e.g., 0, 1, 2). Changes to the VVC draft are shown in bold and italics in Table 64. It is worth noting that pps_residual_coding_rice_shift, pps_residual_coding_rice_offset, and pps_ts_residual_coding_rice_idx can be encoded in different ways and / or can have maximum values. For example, the same syntax element may also be encoded / decoded using u(n) (an unsigned integer using n bits) or f(n) (a fixed pattern bit string written (from left to right) using n bits, with the left bit first).
[0511] Picture Parameter Set Range Extension Syntax
[0512] Table 64. Syntax for residual codec
[0513]
[0514] pps_residual_coding_info_flag is equal to 1, which means that pps_sresidual_coding_rice_shift, pps_residual_coding_rice_offset and pps_ts_resideual_coding_rice_index are present in the current picture. pps_residual_coding_info_flag is equal to 0, which means that pps_sresidual_coding_rice_shift, pps_residual_coding_rice_offset and pps_ts_resideual_coding_rice_idx are not present in the current picture. When pps_residual_coding_info_flag is not present, the value of pps_residual_coding_info_flag is inferred to be equal to 0.
[0515] pps_residual_coding_rice_shift specifies the shift parameter used in the rice parameter derivation process for abs_remainer[] and dec_abs_level[]. When pps_residual_coding_rice_shift is not present, the value of pps_residual_coding_rice_shift is inferred to be equal to 0.
[0516] pps_residual_coding_rice_offset specifies the offset parameter used in the rice parameter derivation process for abs_remainder[] and dec_abs_level[]. When pps_residual_coding_rice_offset is not present, the value of pps_residual_coding_ric_offset is inferred to be equal to 0.
[0517] pps_ts_residual_coding_rice_idx specifies the rice parameter used for the residual_ts_coding() syntax structure. When pps_ts_residual_coding_rice_index is not present, the value of pps_ts_residial_coding_rice_index is inferred to be equal to 0.
[0518] Table 65. Rice parameter derivation process
[0519]
[0520]
[0521] Table 66. Rice parameter derivation process
[0522]
[0523]
[0524] According to the twenty-ninth aspect of the present disclosure, it is suggested to use different rice parameters to encode certain syntax elements (e.g., abs_remainder in transform skip residual coding), shift and offset parameters of rice parameters for deriving abs_remainder / dec_abs_level for conventional residual coding, and determine which syntax element to use according to specific coding information of the current block (e.g., quantization parameter or coding bit depth associated with TB / CB and / or slice / profile) and / or according to a new flag associated with TB / CB / slice / picture / sequence level (e.g., sps_residual_coding_info_present_in_sh_flag).
[0525] In one example, a control flag is signaled in a slice header to indicate whether to enable or disable the derivation process of Rice parameters for transform skip blocks and the derivation process of offset and / or shift parameters for rice parameters in transform blocks. When the control flag is signaled as enabled, the Rice parameters may be different under different conditions based on specific coding information of the current block (e.g., quantization parameter and bit depth). And the shift and / or offset parameters used to derive Rice parameters in conventional residual coding may be different under different conditions based on specific coding information of the current block (e.g., quantization parameter and bit depth). When the control flag is signaled as disabled (e.g., set to equal "0"), the default Rice parameters (e.g., 1) are used for all transform skip slices, and the default offset and / or shift parameters (e.g., 0) are used for all transform slices. An example of a corresponding decoding process based on the VVC draft is shown below, where TH A and TH B is a predefined threshold (e.g., TH A =8,TH B =18 or 19). Changes to the VVC draft are shown in bold and italics in Table 67. It is worth noting that the same logic can be implemented differently in practice. For example, the same rice parameters can also be derived using certain equations or lookup tables.
[0526] Slice Header Syntax
[0527] Table 67. Syntax for residual codec
[0528]
[0529]
[0530] sh_residual_coding_rice_flag equal to 1 indicates that the bit-depth-dependent rice parameter derivation process is used in the current slice. sh_residual_coding_rice_flag equal to 0 indicates that the bit-depth-dependent rice parameter derivation process is not used in the current slice.
[0531] Table 68. Rice parameter derivation process
[0532]
[0533] Table 69. Rice parameter derivation process
[0534]
[0535]
[0536] In another example, the corresponding decoding process based on the VVC draft is as follows, where TH is a predefined threshold (e.g., 18, 19). The changes to the VVC draft are shown in bold and italics in Table 70. It is worth noting that the same logic can be implemented differently in practice. For example, the same rice parameters can also be derived using certain equations or lookup tables.
[0537] Table 70. Rice parameter derivation process
[0538]
[0539]
[0540] According to another aspect of the present disclosure, it is proposed to add constraints on the values of the above-mentioned encoding tool flags to provide the same general constraint control as other constraints in the general constraint information.
[0541] For example, sps_ts_residual_coding_rice_present_in_sh_flag equal to 1 indicates that sh_ts_residual_coding_ric_idx exists in the SH syntax structure that references SPS. sps_ts_residual_coding_rice_present_in_sh_flag equal to 0 indicates that sh_ts_residual_coding_ric_idx does not exist in the SH syntax structure that references SPS. According to the present disclosure, it is proposed to add a syntax element gci_no_ts_residual_coding_rice_constraint_flag to the general constraint information syntax to provide the same general constraint control as other flags. An example of the decoding process of the VVC draft is shown below. The changes to the VVC draft are highlighted. The added parts are highlighted in italics.
[0542]
[0543]
[0544] In another example, pps_ts_residual_coding_rice_flag equal to 1 indicates that pps_ts_residial_coding_rice_index exists in the current picture. pps_ts_residual_coding_rice_flag equal to 0 indicates that pps_ts_residial_coding_rice_idx does not exist in the current picture. According to the present disclosure, it is recommended to add a syntax element gci_no_ts_residual_coding_rice_constraint_flag to the general constraint information syntax to provide the same general constraint control as other flags. An example of the decoding process of the VVC draft is shown below. The changes to the VVC draft are highlighted. The added parts are highlighted in italics.
[0545]
[0546]
[0547] In another example, sps_rice_adaption_enabled_flag is equal to 1, indicating that the binarized rice parameters for abs_remaining[] and dec_abs_level can be derived by formulas.
[0548] The formula may include: RiceParam = RiceParam + shiftVal and shiftVal = (localSumAbs < Tx[0])? Rx[0] : ((localSumAbs < Tx[1])? Rx[1] : ((localSumAbs < Tx[2])? Rx[2] : ((localSumAbs < Tx[3])? Rx[3] : Rx[4]))), where the lists Tx[] and Rx[] are specified as follows: Tx[] = {32, 128, 512, 2048}>>(1523) Rx[] = {0, 2, 4, 6, 8}
[0549] According to the present disclosure, it is proposed to add a syntax element gci_no_rice_adaption_constraint_flag to the common constraint information syntax to provide the same common constraint control as other flags. An example of the decoding process of the VVC draft is shown below. The changes to the VVC draft are highlighted. The added parts are highlighted in italics.
[0550]
[0551]
[0552] Since the proposed rice parameter adaptation scheme is only used for transform skip residual coding (TSRC), the proposed method is only effective when TSRC is enabled. Accordingly, in one or more embodiments of the present disclosure, it is proposed to add a bitstream constraint that requires the value of gci_no-rice_adaption_constraint to be 1 when the transform skip mode is disabled from the common constraint information level (e.g., when the value of gci_no_transform_skip_constraint_flag is set to 1).
[0553] In another example, sps_range_extension_flag being equal to 1 indicates that there is a sps_lange_extension() syntax structure in the SPS RBSP syntax structure. sps_range_extension_flag being equal to 0 indicates the absence of such a syntax structure. According to the present disclosure, it is proposed to add a syntax element gci_no_range_extension_constraint_flag to the common constraint information syntax to provide the same common constraint control as other flags. An example of the decoding process of the VVC draft is shown below. The changes to the VVC draft are highlighted.
[0554] The added parts are highlighted in italics.
[0555]
[0556]
[0557] Fig.19 A method for video encoding according to an example of the present disclosure is shown. The method can be applied to a decoder, for example. In step 1902, the decoder can receive a sequence parameter set (SPS) range extension flag, which indicates whether a syntax structure SPS_range_extension exists in a slice header (SH) raw byte sequence payload (RBSP) syntax structure based on the value of the SPS range extension flag.
[0558] In step 1904, in response to determining that the value of the SPS range extension flag is equal to 1, the decoder may determine that SPS_range_extension is present in the SHRBSP syntax structure.
[0559] In step 1906 , in response to determining that the value of the range extension flag is equal to 0, the decoder may determine that sps_range_extension is not present in the SH RBSP syntax structure.
[0560] In another example, sps_cabac_bypass_alignment_enabled_flag equal to 1 indicates that the value of ivlCurrRange can be aligned before bypass decoding of the syntax elements sb_coded_flang[][], abs_remainder[], dec_abs_level[n], and coeff_sign_flag[]. sps_cabac_bypass_alignment_enabled_flag equal to 0 indicates that the value of ivlCurrRange is not aligned before bypass decoding. According to the present disclosure, it is proposed to add a syntax element gci_no_cabac_bypass_aligment_constraint_flag in the general constraint information syntax to provide the same general constraint control as other flags. An example of the decoding process of the VVC draft is shown below. The changes to the VVC draft are highlighted. The added parts are highlighted in italics.
[0561]
[0562]
[0563] Fig. 20A method for video encoding according to an example of the present disclosure is shown. The method may be applied, for example, to a decoder. In step 2002, the decoder may receive a sequence parameter set (SPS) alignment enable flag, which indicates whether an index ivlCurrRange is aligned before bypass decoding syntax elements sb_coded_flag, abs_remainder, dec_abs_level, and coeff_sign_flagn based on a value of the SPS alignment enable.
[0564] In step 2004, in response to determining that the value of the SPS alignment enable flag is equal to 1, the decoder can determine that the ivlCurrRange is aligned before bypass decoding.
[0565] In step 2006, in response to determining that the value of the SPS alignment enable flag is equal to 0, the decoder can determine that ivlCurrRange is not aligned prior to bypass decoding.
[0566] In another example, extended_precision_processing_flag equal to 1 indicates that extended dynamic range can be used for transform coefficients and transform processing. extended_precision_processing_flag equal to 0 indicates that extended dynamic range is not used. According to the present disclosure, it is proposed to add a syntax element gci_no_extended_precision_processing_constraint_flag in the general constraint information syntax to provide the same general constraint control as other flags. An example of the decoding process of the VVC draft is shown below. The changes to the VVC draft are highlighted. The added parts are highlighted in italics.
[0567]
[0568]
[0569] Fig.21 A method for video encoding according to an example of the present disclosure is shown. The method can be applied to a decoder, for example. In step 2102, the decoder can receive an extended precision processing flag, which indicates whether an extended dynamic range is used for transform coefficients and during transform processing based on the value of the extended precision processing flag.
[0570] In step 2104 , in response to determining that the value of the extended precision processing flag is equal to 1, the decoder may determine to employ an extended dynamic range for the transform coefficients and during the transform process.
[0571] In step 2106, in response to determining that the value of the extended precision processing flag is 0, the decoder may determine not to employ extended dynamic range for transform coefficients or during transform processing.
[0572] In another example, persistent_rice_adaption_enabled_flag equal to 1 indicates that the binarized rice parameter derivation for abs_remaining[] and dec_abs_level can be initialized at the beginning of each sub-block using the mode-related statistics accumulated from the previous sub-block. persistent_rice_adaption_enabled_flag equal to 0 indicates that the previous sub-block state is not used in the rice parameter derivation. According to the present disclosure, it is proposed to add a syntax element gci_no_persistent_rice_adaption_constraint_flag in the general constraint information syntax to provide the same general constraint control as other flags. An example of the decoding process of the VVC draft is shown below. The changes to the VVC draft are highlighted. The added parts are highlighted in italics.
[0573]
[0574]
[0575] Fig. 22 A method for video encoding according to an example of the present disclosure is shown. The method can be applied to a decoder, for example. In step 2202, the decoder can receive a persistent rice adaptation enable flag, which indicates whether to initialize rice parameter derivation for abs_maining and dec_abs_level binarization at the beginning of each sub-block based on the value of the persistent rice adaptation enable flag, and each sub-block adopts mode-related statistics accumulated from previous sub-blocks.
[0576] In step 2204, in response to determining that the value of the persistent rice adaptation enabled flag is equal to 1, the decoder may determine to initialize rice parameter derivation for binarization at the beginning of each sub-block, each sub-block employing mode-related statistics accumulated from previous sub-blocks.
[0577] In step 2206, in response to determining that the value of the persistent rice adaptation enabled flag is 0, the decoder may determine that no previous sub-block state is employed in rice parameter derivation.
[0578] The above methods may be implemented using an apparatus including one or more circuits, including an application specific integrated circuit (ASIC), a digital signal processor (DSP), a digital signal processing device (DSPD), a programmable logic device (PLD), a field programmable gate array (FPGA), a controller, a microcontroller, a microprocessor or other electronic components. The apparatus may use circuits combined with other hardware or software components to perform the methods described above. Each module, submodule, unit or subunit disclosed above may be implemented at least in part using one or more circuits.
[0579] Fig.18 A computing environment 1810 is shown coupled to a user interface 1860. The computing environment 1810 may be part of a data processing server. The computing environment 1810 includes a processor 1820, a memory 1840, and an I / O interface 1850.
[0580] The processor 1820 generally controls the overall operation 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 to execute instructions to perform all or some steps in the method described above. In addition, 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 microcomputer, a GPU, etc.
[0581] The memory 1840 is configured to store various types of data to support the operation of the computing environment 1810. The memory 1840 may include predetermined software 1842. Examples of such data include instructions for any application or method operating on the computing environment 1810, video data sets, image data, etc. The memory 1840 may be implemented using any type of volatile or non-volatile memory device or combination thereof (e.g., static random access memory (SRAM), electrically erasable programmable read-only memory (EEPROM), erasable programmable read-only memory (EPROM), programmable read-only memory (PROM), read-only memory (ROM), magnetic memory, flash memory, magnetic disk, or optical disk).
[0582] I / O interface 1850 provides an interface between processor 1820 and peripheral interface modules (e.g., keyboard, click wheel, buttons, etc.). Buttons may include, but are not limited to, a home button, a start scan button, and a stop scan button. I / O interface 1850 may be coupled to an encoder and a decoder.
[0583] In some embodiments, a non-transitory computer-readable storage medium is also provided, which includes a plurality of programs (e.g., included in the memory 1840) executable by the processor 1820 in the computing environment 1810 to perform the above-described method. For example, the non-transitory computer-readable storage medium may be a ROM, RAM, CD-ROM, magnetic tape, floppy disk, optical data storage device, etc.
[0584] The non-transitory computer-readable storage medium has stored therein a plurality of programs for execution by a computing device having one or more processors, wherein when the plurality of programs are executed by the one or more processors, the computing device is caused to perform the motion prediction method described above.
[0585] In some embodiments, the computing environment 1810 may be implemented using one or more application specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), field programmable gate arrays (FPGAs), graphics processing units (GPUs), controllers, microcontrollers, microprocessors, or other electronic components for performing the above methods.
[0586] Fig.23 is a block diagram illustrating an example system 10 for encoding and decoding video blocks in parallel, according to some implementations of the present disclosure. Fig.23 As shown in , system 10 includes a source device 12 that generates video data and encodes it for later decoding by a destination device 14. Source device 12 and destination device 14 may include any of a variety of electronic devices, including desktop or laptop computers, tablet computers, smartphones, set-top boxes, digital televisions, cameras, display devices, digital media players, video game consoles, video streaming devices, etc. In some implementations, source device 12 and destination device 14 are equipped with wireless communication capabilities.
[0587] In some implementations, the destination device 14 may receive the encoded video data to be decoded via the link 16. The link 16 may include any type of communication medium or device capable of moving the encoded video data from the source device 12 to the destination device 14. In one example, the link 16 may include a communication medium so that the source device 12 can send the encoded video data directly to the destination device 14 in real time. The encoded video data may be modulated according to a communication standard (e.g., a wireless communication protocol) and sent to the destination device 14. The communication medium may include any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may form part of a packet-based network (e.g., a local area network, a wide area network, or a global network such as the Internet). The communication medium may include a router, a switch, a base station, or any other device that helps facilitate communication from the source device 12 to the destination device 14.
[0588] In some other implementations, the encoded video data may be transferred from the output interface 22 to a storage device 32. Subsequently, the destination device 14 may access the encoded video data in the storage device 32 via the input interface 28. The storage device 32 may include any of a variety of distributed or locally accessed data storage media, such as a hard disk, a Blu-ray disc, a digital versatile disc (DVD), a compact disc read-only memory (CD-ROM), a flash memory, a volatile or non-volatile memory, or any other suitable digital storage medium for storing encoded video data. In another example, the storage device 32 may correspond to a file server or another intermediate storage device that may store the encoded video data generated by the source device 12. The destination device 14 may access the stored video data from the storage device 32 by streaming or downloading. The file server may be any type of computer capable of storing the encoded video data and transmitting the encoded video data to the destination device 14. Exemplary file servers include a web server (e.g., for a website), a file transfer protocol (FTP) server, a network attached storage (NAS) device, or a local disk drive. Destination device 14 may access the encoded video data through any standard data connection, including a wireless channel suitable for accessing encoded video data stored on a file server (e.g., a Wireless Fidelity (Wi-Fi) connection), a wired connection (e.g., a Digital Subscriber Line (DSL), a cable modem, etc.), or a combination of both. The transmission of the encoded video data from storage device 32 may be a streaming transmission, a download transmission, or a combination of both.
[0589] like Fig.23As shown in , source device 12 includes video source 18, video encoder 20 and output interface 22. Video source 18 may include a source such as a video capture device (e.g., a camera), a video archive containing previously captured video, a video feed interface receiving video from a video content provider, and / or a computer graphics system for generating computer graphics data as source video, or a combination of these sources. As an example, if video source 18 is a camera of a security monitoring system, source device 12 and destination device 14 may form a camera phone or a video phone. However, the implementations described in this application may be generally applicable to video encoding, and may be applied to wireless and / or wired applications.
[0590] Captured, pre-captured, or computer-generated video may be encoded by video encoder 20. The encoded video data may be transmitted directly to destination device 14 via output interface 22 of source device 12. The encoded video data may also (or alternatively) be stored on storage device 32 for later access by destination device 14 or other devices for decoding and / or playback. Output interface 22 may also include a modem and / or a transmitter.
[0591] Destination device 14 includes input interface 28, video decoder 30, and display device 34. Input interface 28 may include a receiver and / or a modem and receives encoded video data via link 16. The encoded video data transmitted via link 16 or provided on storage device 32 may include various syntax elements generated by video encoder 20 for use by video decoder 30 in decoding the video data. Such syntax elements may be included within the encoded video data transmitted over a communication medium, stored on a storage medium, or stored on a file server.
[0592] In some implementations, the destination device 14 may include a display device 34, which may be an integrated display device or an external display device configured to communicate with the destination device 12. The display device 34 displays the decoded video data to a user and may include any of a variety of display devices, such as a liquid crystal display (LCD), a plasma display, an organic light emitting diode (OLED) display, or other types of display devices.
[0593] The video encoder 20 and the video decoder 30 may operate in accordance with a proprietary or industry standard (e.g., VVC, HEVC, MPEG-4, Part 10, AVC, or an extension of these standards). It should be understood that the present application is not limited to a particular video encoding / decoding standard and may be applicable to other video encoding / decoding standards. It is generally expected that the video encoder 20 of the source device 12 may be configured to encode the video data in accordance with any of these current or future standards. Similarly, it is also generally expected that the video decoder 30 of the destination device 14 may be configured to decode the video data in accordance with any of these current or future standards.
[0594] The video encoder 20 and the video decoder 30 may be implemented as any of a variety of suitable encoder and / or decoder circuits, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic circuits, software, hardware, firmware, or any combination thereof. When implemented partially in software, the electronic device may store the instructions of the software in a suitable non-transitory computer-readable medium and use one or more processors to execute the instructions in the hardware to perform the video encoding / decoding operations disclosed in the present disclosure. Each of the video encoder 20 and the video decoder 30 may be included in one or more encoders or decoders, any of which may be integrated as part of a combined encoder / decoder (CODEC) in a corresponding device.
[0595] Fig.24 is a block diagram illustrating an exemplary video encoder 20 according to some implementations described in the present application. The video encoder 20 can perform intra-frame and inter-frame prediction coding on video blocks within a video frame. Intra-frame prediction coding relies on spatial prediction to reduce or eliminate spatial redundancy in video data within a given video frame or picture. Inter-frame prediction coding relies on temporal prediction to reduce or remove temporal redundancy in video data within adjacent video frames or pictures of a video sequence. It should be noted that the term "frame" can be used as a synonym for the term "image" or "picture" in the field of video coding.
[0596] like Fig.24As shown in , the video encoder 20 includes a video data memory 40, a prediction processing unit 41, a decoded picture buffer (DPB) 64, an adder 50, a transform processing unit 52, a quantization unit 54, and an entropy coding unit 56. The prediction processing unit 41 also includes a motion estimation unit 42, a motion compensation unit 44, a segmentation unit 45, an intra-frame prediction processing unit 46, and an intra-frame block copy (BC) unit 48. In some implementations, the video encoder 20 also includes an inverse quantization unit 58, an inverse transform processing unit 60, and an adder 62 for video block reconstruction. A loop filter 63 (e.g., a deblocking filter) can be located between the adder 62 and the DPB 64 to filter block boundaries so as to remove block artifacts from the reconstructed video. In addition to the deblocking filter, another loop filter (e.g., a sample adaptive offset (SAO) filter and / or an adaptive loop filter (ALF)) can also be used to filter the output of the adder 62. In some examples, the loop filter may be omitted and summer 64 may provide decoded video blocks directly to DPB 64. Video encoder 20 may take the form of fixed or programmable hardware units, or may be partitioned between one or more of the fixed or programmable hardware units shown.
[0597] Video data memory 40 may store video data to be encoded by components of video encoder 20. Video data may be stored, for example, from Fig.23 The video source 18 shown obtains video data in the video data memory 40. The DPB 64 is a buffer that stores reference video data (e.g., reference frames or pictures) for the video encoder 20 to encode the video data (e.g., in intra-frame or inter-frame prediction coding mode). The video data memory 40 and the DPB 64 can be formed by any of a variety of storage devices. In various examples, the video data memory 40 can be on-chip with other components of the video encoder 20, or off-chip relative to those components.
[0598] like Fig.24As shown in , after receiving the video data, the segmentation unit 45 within the prediction processing unit 41 segments the video data into video blocks. This segmentation may also include: dividing the video frame into strips, tiles (e.g., a set of video blocks) or other larger coding units (CUs) according to a predefined segmentation structure (e.g., a quadtree (QT) structure associated with the video data). A video frame is or can be considered as a two-dimensional array or matrix of sample points with sample values. The samples in the array may also be referred to as pixels or primitives. The number of samples in the horizontal and vertical directions (or axes) of the array or picture defines the size and / or resolution of the video frame. The video frame may be divided into multiple video blocks, for example, by using QT partitioning. A video block is also or can be considered as a two-dimensional array or matrix of sample points with sample values, although its dimensions are smaller than a video frame. The number of samples in the horizontal and vertical directions (or axes) of a video block defines the size of the video block. The video block may also be divided into one or more block partitions or sub-blocks (which may again form blocks) by, for example, iteratively using QT partitioning, binary tree (BT) partitioning or ternary tree (TT) partitioning or any combination thereof. It should be noted that the term "block" or "video block" as used herein may be a portion of a frame or picture, in particular a rectangular (square or non-square) portion. For example, with reference to HEVC and VVC, a block or video block may be or correspond to a coding tree unit (CTU), a CU, a prediction unit (PU) or a transform unit (TU), and / or may be or correspond to a corresponding block (e.g., a coding tree block (CTB), a coding block (CB), a prediction block (PB) or a transform block (TB)) and / or correspond to a sub-block.
[0599] The prediction processing unit 41 may select one of a plurality of possible prediction coding modes (e.g., one of a plurality of intra-frame prediction coding modes or one of a plurality of inter-frame prediction coding modes) for the current video block based on the error results (e.g., coding rate and distortion level). The prediction processing unit 41 may provide the obtained intra-frame or inter-frame prediction coding block to the adder 50 to generate a residual block and to the adder 62 to reconstruct the coding block for subsequent use as part of a reference frame. The prediction processing unit 41 also provides syntax elements such as motion vectors, intra-frame mode indicators, partition information, and other such syntax information to the entropy coding unit 56.
[0600] In order to select an appropriate intra-frame prediction coding mode for the current video block, the intra-frame prediction processing unit 46 within the prediction processing unit 41 can perform intra-frame prediction coding of the current video block relative to one or more neighboring blocks in the same frame as the current block to be encoded to provide spatial prediction. The motion estimation unit 42 and the motion compensation unit 44 within the prediction processing unit 41 perform inter-frame prediction coding of the current video block relative to one or more prediction blocks in one or more reference frames to provide temporal prediction. The video encoder 20 can perform multiple encoding processes, for example, to select an appropriate encoding mode for each block of video data.
[0601] In some implementations, motion estimation unit 42 determines the inter-prediction mode for the current video frame by generating a motion vector that indicates the displacement of a video block within the current video frame relative to a prediction block within a reference video frame according to a predetermined pattern within the sequence of video frames. Motion estimation performed by motion estimation unit 42 is the process of generating motion vectors, where the motion vectors estimate the motion of video blocks. For example, a motion vector may indicate the displacement of a video block within a current video frame or picture relative to a prediction block within a reference frame (which is relative to a current block encoded within the current frame). The predetermined pattern may designate a video frame in a sequence as a P frame or a B frame. Intra BC unit 48 may determine a vector (e.g., a block vector) for intra BC coding in a manner similar to the motion vectors determined by motion estimation unit 42 for inter prediction, or may utilize motion estimation unit 40 to determine the block vector.
[0602] The prediction block for the video block may be or may correspond to a block or reference block of a reference frame that is considered to closely match the video block to be encoded in terms of pixel differences, which may be determined by sum of absolute differences (SAD), sum of squared differences (SSD), or other difference metrics. In some implementations, video encoder 20 may calculate values for sub-integer pixel positions of reference frames stored in DPB 64. For example, video encoder 20 may interpolate values for quarter pixel positions, eighth pixel positions, or other fractional pixel positions of reference frames. Thus, motion estimation unit 42 may perform motion searches relative to full pixel positions and fractional pixel positions and output motion vectors with fractional pixel precision.
[0603] Motion estimation unit 42 calculates a motion vector for a video block in an inter-prediction coded frame by comparing the position of the video block to the position of a prediction block of a reference frame selected from a first reference frame list (list 0) or a second reference frame list (list 1), each of which identifies one or more reference frames stored in DPB 64. Motion estimation unit 42 sends the calculated motion vector to motion compensation unit 44 and then to entropy encoding unit 56.
[0604] The motion compensation performed by the motion compensation unit 44 may involve extracting or generating a prediction block based on the motion vector determined by the motion estimation unit 42. After receiving the motion vector of the current video block, the motion compensation unit 44 may locate the prediction block pointed to by the motion vector in one of the reference frame lists, retrieve the prediction block from the DPB 64, and forward the prediction block to the adder 50. The adder 50 then forms a residual video block of pixel difference values by subtracting the pixel values of the prediction block provided by the motion compensation unit 44 from the pixel values of the current video block being encoded. The pixel difference values forming the residual video block may include luma or chroma difference components or both. The motion compensation unit 44 may also generate syntax elements associated with the video block of the video frame for use by the video decoder 30 when decoding the video block of the video frame. The syntax elements may include, for example, syntax elements defining a motion vector for identifying a prediction block, any flag indicating a prediction mode, or any other syntax information described herein. It should be noted that the motion estimation unit 42 and the motion compensation unit 44 may be highly integrated, but are shown separately for conceptual illustration purposes.
[0605] In some implementations, the intra BC unit 48 may generate vectors and extract prediction blocks in a manner similar to that described above in conjunction with the motion estimation unit 42 and the motion compensation unit 44, but the prediction blocks are in the same frame as the current block being encoded, and these vectors are referred to as block vectors rather than motion vectors. In particular, the intra BC unit 48 may determine an intra prediction mode for encoding the current block. In some examples, the intra BC unit 48 may encode the current block using various intra prediction modes (e.g., during a separate encoding process) and test their performance through rate-distortion analysis. Next, the intra BC unit 48 may select an appropriate intra mode from the various tested intra prediction modes to use and generate an intra mode indicator accordingly. For example, the intra BC unit 48 may calculate a rate-distortion value using rate-distortion analysis for the various tested intra prediction modes, and select an intra prediction model with the best rate-distortion characteristics in the tested mode as the appropriate intra prediction mode to be used. The rate-distortion analysis typically determines the amount of distortion (or error) between a coded block and the original uncoded block, and the bit rate (i.e., the number of bits) used to generate the coded block, where the original uncoded block is encoded to generate the coded block. The intra BC unit 48 may calculate a ratio based on the distortion and rate of the various coded blocks to determine which intra prediction mode exhibits the best rate-distortion value for the block.
[0606] In other examples, intra BC unit 48 may use motion estimation unit 42 and motion compensation unit 44, in whole or in part, to perform these functions for intra BC prediction according to implementations described herein. In either case, for intra block copying, the prediction block may be a block that is considered to closely match the block to be encoded in terms of pixel differences, which may be determined by SAD, SSD, or other difference metrics, and identification of the prediction block may include calculating values for sub-integer pixel positions.
[0607] Whether the prediction block is from the same frame according to intra-frame prediction or from a different frame according to inter-frame prediction, the video encoder 20 can form a residual video block by subtracting the pixel values of the prediction block from the pixel values of the current video block being encoded, thereby forming pixel difference values. The pixel difference values forming the residual video block may include luminance and chrominance component differences.
[0608] As described above, the intra-prediction processing unit 46 may perform intra-prediction on the current video block as an alternative to the inter-prediction performed by the motion estimation unit 42 and the motion compensation unit 44 or the intra-block copy prediction performed by the intra BC unit 48. Specifically, the intra-prediction processing unit 46 may determine the intra-prediction mode used to encode the current block. To this end, the intra-prediction processing unit 46 may encode the current block using various intra-prediction modes (e.g., during a separate encoding process), and the intra-prediction control unit 46 (or the mode selection unit in some examples) may select the appropriate intra-prediction mode to be used from the tested intra-prediction modes. The intra-prediction processing unit 46 may provide information indicating the intra-prediction mode selected for the block to the entropy encoding unit 56. The entropy encoding unit 56 may encode the information indicating the selected intra-prediction mode in the bitstream.
[0609] After prediction processing unit 41 determines a prediction block for the current video block by inter-frame prediction or intra-frame prediction, adder 50 forms a residual video block by subtracting the prediction block from the current video block. The residual video data in the residual block may be included in one or more TUs and provided to transform processing unit 52. Transform processing unit 54 transforms the residual video data into residual transform coefficients using a transform such as a discrete cosine transform (DCT) or a conceptually similar transform.
[0610] The transform processing unit 52 may send the obtained transform coefficients to the quantization unit 54. The quantization unit 54 quantizes the transform coefficients to further reduce the bit rate. The quantization process may also reduce the bit depth associated with some or all coefficients. The degree of quantization may be modified by adjusting the quantization parameter. In some examples, the quantization unit 54 may then perform a scan of the matrix including the quantized transform coefficients. Alternatively, the entropy coding unit 56 may perform the scan.
[0611] After quantization, entropy coding unit 56 entropy encodes the quantized transform coefficients into a video bitstream using, for example, context adaptive variable length coding (CAVLC), context adaptive binary arithmetic coding (CABAC), syntax-based context adaptive binary arithmetic coding (SBAC), probability interval partitioning entropy (PIPE) coding, or another entropy coding method or technique. The encoded bitstream may then be sent to video decoder 30 (e.g., Fig.23 ), or archived in the storage device 32 (as shown in Fig.23 ) for later transmission to or retrieval by video decoder 30. Entropy encoding unit 56 may also entropy encode motion vectors and other syntax elements for the current video frame being encoded.
[0612] Inverse quantization unit 58 and inverse transform processing unit 60 apply inverse quantization and inverse transform, respectively, to reconstruct the residual video block in the pixel domain to generate a reference block for predicting other video blocks. As described above, motion compensation unit 44 may generate a motion compensated prediction block based on one or more reference blocks of a frame stored in DPB 64. Motion compensation unit 44 may also apply one or more interpolation filters to the prediction block to calculate sub-integer pixel values used in motion estimation.
[0613] Adder 62 adds the reconstructed residual block to the motion compensated prediction block produced by motion compensation unit 44 to produce a reference block for storage in DPB 64. Intra BC unit 48, motion estimation unit 42, and motion compensation unit 44 may then use the reference block as a prediction block to inter-predict another video block in a subsequent video frame.
[0614] Fig.25 30 is a block diagram illustrating an exemplary video decoder 30 according to some implementations of the present application. The video decoder 30 includes a video data memory 79, an entropy decoding unit 80, a prediction processing unit 81, an inverse quantization unit 86, an inverse transform processing unit 88, an adder 90, and a DPB 92. The prediction processing unit 81 also includes a motion compensation unit 82, an intra-frame prediction unit 84, and an intra-frame BC unit 85. The video decoder 30 may perform operations in conjunction with the above. Fig.24 The encoding process of the described video encoder 20 is generally the reverse of the decoding process. For example, the motion compensation unit 82 may generate prediction data based on the motion vector received from the entropy decoding unit 80, and the intra-prediction unit 84 may generate prediction data based on the intra-prediction mode indicator received from the entropy decoding unit 80.
[0615] In some examples, a unit of the video decoder 30 may be assigned to perform implementations of the present application. In addition, in some examples, implementations of the present disclosure may be divided between one or more units of the video decoder 30. For example, the intra BC unit 85 may perform implementations of the present application alone or in combination with other units of the video decoder 30 (e.g., the motion compensation unit 82, the intra prediction unit 84, and the entropy decoding unit 80). In some examples, the video decoder 30 may not include the intra BC unit 85, and the functions of the intra BC unit 85 may be performed by other components of the prediction processing unit 81 (e.g., the motion compensation unit 82).
[0616] The video data memory 79 can store video data (e.g., an encoded video bitstream) for decoding by other components of the video decoder 30. The video data stored in the video data memory 79 can be obtained through a wired or wireless network communication of video data, such as from the storage device 32, a local video source (such as a camera), or by accessing a physical data storage medium (e.g., a flash drive or hard disk). The video data memory 79 may include a coded picture buffer (CPB) that stores encoded video data from an encoded video bitstream. The DPB 92 of the video decoder 30 stores reference video data for use when the video decoder 30 (e.g., in intra-frame or inter-frame prediction coding mode) decodes the video data. The video data memory 79 and the DPB 92 can be formed by any of a variety of memory devices, such as a dynamic random access memory (DRAM) (which includes synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM)) or other types of storage devices. For ease of explanation, in Fig.25 92 are described as two different components of the video decoder 30. However, it will be apparent to those skilled in the art that the video data storage 79 and the DPB 92 may be provided by the same storage device or a separate storage device. In some examples, the video data storage 79 may be on-chip with other components of the video decoder 30, or off-chip relative to those components.
[0617] During the decoding process, the video decoder 30 receives a coded video bitstream representing video blocks of a coded video frame and associated syntax elements. The video decoder 30 may receive syntax elements at the video frame level and / or the video block level. The entropy decoding unit 80 of the video decoder 30 entropy decodes the bitstream to generate quantization coefficients, motion vectors or intra-frame prediction mode indicators, and other syntax elements. The entropy decoding unit 80 then forwards the motion vectors or intra-frame prediction mode indicators and other syntax elements to the prediction processing unit 81.
[0618] When a video frame is encoded as an intra-frame prediction block in an intra-frame prediction (I) frame or other type of frame, the intra-frame prediction unit 84 of the prediction processing unit 81 can generate prediction data for the video block of the current video frame based on the intra-frame mode sent by the signal and the reference data from the previously decoded block of the current frame.
[0619] When the video frame is encoded as an inter-frame prediction coded (i.e., B or P) frame, the motion compensation unit 82 of the prediction processing unit 81 generates one or more prediction blocks for the video block of the current video frame based on the motion vectors and other syntax elements received from the entropy decoding unit 80. Each of the prediction blocks can be generated from a reference frame within one of the reference frame lists. The video decoder 30 can use a default construction technique based on the reference frames stored in the DPB 92 to construct the reference frame lists (list 0 and list 1).
[0620] In some examples, when the video block is encoded according to the intra BC mode described herein, intra BC unit 85 of prediction processing unit 81 generates prediction blocks for the current video block based on the block vectors and other syntax elements received from entropy decoding unit 80. These prediction blocks may be within the same reconstruction region of the picture as the current video block defined by video encoder 20.
[0621] The motion compensation unit 82 and / or the intra BC unit 85 determine the prediction information of the video block of the current video frame by parsing the motion vector and other syntax elements, and then use the prediction information to generate the prediction block of the current video block being decoded. For example, the motion compensation unit 82 uses some of the received syntax elements to determine the prediction mode (e.g., intra or inter prediction) used to encode the video block of the video frame, the inter prediction frame type (e.g., B or P), the construction information of one or more reference frame lists of the frame, the motion vector of each inter prediction encoded video block of the frame, the inter prediction state of each inter prediction encoded video block of the frame, and other information used to decode the video block in the current video frame.
[0622] Similarly, the intra BC unit 85 may use some of the received syntax elements (e.g., flags) to determine whether the current video block is predicted using intra BC mode, construction information of which video blocks of the frame are within the reconstruction region and should be stored in the DPB 92, block vectors for each intra BC predicted video block of the frame, the intra BC prediction state of each intra BC predicted video block of the frame, and other information for decoding the video blocks in the current video frame.
[0623] Motion compensation unit 82 may also perform interpolation using interpolation filters used by video encoder 20 during encoding of the video block to calculate interpolated values of sub-integer pixels of the reference block. In this case, motion compensation unit 82 may determine the interpolation filters used by video encoder 20 based on received syntax elements and use the interpolation filters to generate a prediction block.
[0624] Inverse quantization unit 86 inverse quantizes the quantized transform coefficients provided in the bitstream and entropy decoded by entropy decoding unit 80 to determine a degree of quantization using the same quantization parameters calculated by video encoder 20 for each video block in the video frame. Inverse transform processing unit 88 applies an inverse transform (e.g., an inverse DCT, an inverse integer transform, or a conceptually similar inverse transform process) to the transform coefficients in order to reconstruct a residual block in the pixel domain.
[0625] After the motion compensation unit 82 or the intra BC unit 85 generates a prediction block for the current video block based on the vector and other syntax elements, the adder 90 reconstructs the decoded video block of the current video block by adding the residual block from the inverse transform processing unit 88 to the corresponding prediction block generated by the motion compensation unit 82 and the intra BC unit 85. A loop filter 91 such as a deblocking filter, an SAO filter and / or an ALF may be located between the adder 90 and the DPB 92 to further process the decoded video block. In some examples, the loop filter 91 may be omitted and the adder 90 may provide the decoded video block directly to the DPB 92. The decoded video blocks in a given frame are then stored in the DPB 92, which stores reference frames for subsequent motion compensation of the next video block. The DPB 92 or a storage device separate from the DPB 92 may also store the decoded video for later display on a display device (e.g., Fig.23 is presented on a display device 34).
[0626] The description of the present disclosure is presented for illustrative purposes and is not intended to be exhaustive or limited to the present disclosure. Many modifications, variations, and alternative embodiments will be apparent to those of ordinary skill in the art having the benefit of the teachings presented in the foregoing description and the associated drawings.
[0627] These examples are selected and described only to explain the principles of the present disclosure and to enable other persons skilled in the art to understand the various embodiments of the present disclosure and to best utilize the basic principles and various embodiments with various modifications that are suitable for the intended specific use. Therefore, it should be understood that the scope of protection of the present disclosure is not limited to the specific examples of the disclosed implementations, and various modifications and other implementations are also included in the scope of protection of the present disclosure.
Claims
1. A method for video encoding, comprising: sending, by an encoder, an extended precision processing flag, the extended precision processing flag indicating whether extended dynamic range is used for transform coefficients in transform coefficient processing based on a value of the extended precision processing flag; The method further comprises: sending, by the encoder, an extended precision processing constraint flag in a general constraint information syntax to provide general constraint control for the extended precision processing flag; and The value of the extended precision processing constraint flag is set equal to 1 so that the value of the extended precision processing flag should be equal to 0.
2. The method for video encoding according to claim 1, further comprising: setting the value of the extended precision processing flag equal to 1 in a case where the extended dynamic range is used for the transform coefficients in the transform process; as well as In a case where the extended dynamic range is not used for the transform coefficients in the transform process, the value of the extended precision processing flag is set to 0.
3. A device for video encoding, comprising: one or more processors; as well as A memory configured to store instructions executable by the one or more processors; wherein, when executing the instructions, the one or more processors are configured to execute the method according to any one of claims 1-2 to generate a video bitstream and store the generated video bitstream in the memory.
4. A non-temporary computer-readable storage medium for video encoding storing computer-executable instructions, which, when executed by one or more computer processors, enables the one or more computer processors to execute the method according to any one of claims 1 to 2 to generate a video bitstream and store the generated video bitstream in the non-temporary computer-readable storage medium.
5. A computer program product comprising computer executable instructions for video encoding, which, when executed by one or more computer processors, causes the one or more computer processors to perform the method according to any one of claims 1 to 2.
6. A method for transmitting a bit stream by an encoding device, comprising: sending an extended precision processing flag in the bitstream, the extended precision processing flag indicating whether extended dynamic range is used for transform coefficients in transform coefficient processing based on a value of the extended precision processing flag; as well as The method further comprises: An extended precision processing constraint flag in a general constraint information syntax is sent in the bitstream to provide a general constraint control for the extended precision processing flag, wherein a value of the extended precision processing constraint flag equal to 1 is used to indicate that the value of the extended precision processing flag should be equal to 0.
Citation Information
Patent Citations
Residual and coefficient coding for video coding
CN116918335A
Residual and Coefficients Coding for Video Coding
US63145964P0
Method and apparatus for signaling decoding data using high level syntax elements
WO2020263646A1