Method and apparatus for improved quantization-center shifting for quantizations
The method and apparatus for quantization-center shifting in video coding address inefficiencies by determining and applying quantization-center shifting based on bit or bin differences, improving decoding efficiency and accuracy.
Patent Information
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP LTD
- Filing Date
- 2025-08-28
- Publication Date
- 2026-04-23
AI Technical Summary
Existing video coding techniques face inefficiencies in quantization processes, particularly in determining optimal quantization-center shifting, leading to suboptimal bit usage and decoding accuracy.
A method and apparatus for quantization-center shifting are introduced, enabling processors to determine and apply quantization-center shifting based on the difference in bits or bins associated with adjacent coding levels, facilitating accurate dequantization and decoding.
Improves decoding efficiency by optimizing quantization-center shifting, reducing bitstream complexity, and enhancing decoding accuracy.
Smart Images

Figure CN2025117652_23042026_PF_FP_ABST
Abstract
Description
METHOD AND APPARATUS FOR IMPROVED QUANTIZATION-CENTER SHIFTING FOR QUANTIZATIONSCROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims the benefit of priority to U.S. Provisional Application No. 63 / 709,384, entitled “METHOD AND APPARATUS FOR IMPROVED QUANTIZATION-CENTER SHIFTING FOR QUANTIZATIONS, ” and filed on October 18, 2024, which is incorporated by reference herein in its entirety.BACKGROUND
[0002] Embodiments of the present disclosure relate to video coding.
[0003] Digital video has become mainstream and is being used in a wide range of applications including digital television, video telephony, and teleconferencing. These digital video applications are feasible because of the advances in computing and communication technologies as well as efficient video coding techniques. Various video coding techniques may be used to compress video data, such that coding on the video data can be performed using one or more video coding standards. Exemplary video coding standards may include, but not limited to, versatile video coding (H. 266 / VVC) , high-efficiency video coding (H. 265 / HEVC) , advanced video coding (H. 264 / AVC) , moving picture expert group (MPEG) coding, enhanced video coding model (ECM) , to name a few.SUMMARY
[0004] According to one aspect of the present disclosure, a method of decoding by a decoder is provided. The method may include determining, by a processor, whether a first amount of bits or bins associated with coding a coefficient at a first coding level and a second amount of bits or bins associated with coding the coefficient at a second coding level are a same amount. The first coding level and the second coding level may be adjacent coding levels. The method may include, in response to the first amount of bits or bins and the second amount of bits or bins being a different amount, determining, by the processor, quantization-center shifting is enabled. The method may include, in response to the quantization-center shifting being enabled, determining, by the processor, a dequantized coefficient based on the quantization-center shifting. The method may include decoding, by the processor, a bitstream based on the dequantized coefficient.
[0005] According to another aspect of the present disclosure, a decoder is provided. The decoder may include a processor and memory storing instructions. The memory storing instructions, which when executed by the processor, may cause the processor to determine whether a first amount of bits or bins associated with coding a coefficient at a first coding level and a second amount of bits or bins associated with coding the coefficient at a second coding level are a same amount. The first coding level and the second coding level may be adjacent coding levels. The memory storing instructions, which when executed by the processor, may cause the processor to, in response to the first amount of bits or bins and the second amount of bits or bins being a different amount, determine quantization-center shifting is enabled. The memory storing instructions, which when executed by the processor, may cause the processor to, in response to the quantization-center shifting being enabled, determine a dequantized coefficient based on the quantization-center shifting. The memory storing instructions, which when executed by the processor, may cause the processor to decode a bitstream based on the dequantized coefficient.
[0006] According to a further aspect of the present disclosure, an apparatus for decoding is provided. The apparatus for decoding may include a processor and memory storing instructions. The memory storing instructions, which when executed by the processor, may cause the processor to determine whether a first amount of bits or bins associated with coding a coefficient at a first coding level and a second amount of bits or bins associated with coding the coefficient at a second coding level are a same amount. The first coding level and the second coding level may be adjacent coding levels. The memory storing instructions, which when executed by the processor, may cause the processor to, in response to the first amount of bits or bins and the second amount of bits or bins being a different amount, determine quantization-center shifting is enabled. The memory storing instructions, which when executed by the processor, may cause the processor to, in response to the quantization-center shifting being enabled, determine a dequantized coefficient based on the quantization-center shifting. The memory storing instructions, which when executed by the processor, may cause the processor to decode a bitstream based on the dequantized coefficient.
[0007] According to still another aspect of the present disclosure, a non-transitory computer-readable medium storing instructions for a decoder is provided. The instructions, which when executed by the processor of the decoder, may cause the processor of the decoder to determine whether a first amount of bits or bins associated with coding a coefficient at a first coding level and a second amount of bits or bins associated with coding the coefficient at a second coding level are a same amount. The first coding level and the second coding level may be adjacent coding levels. The instructions, which when executed by the processor of the decoder, may cause the processor of the decoder to, in response to the first amount of bits or bins and the second amount of bits or bins being a different amount, determine quantization-center shifting is enabled. The instructions, which when executed by the processor of the decoder, may cause the processor of the decoder to, in response to the quantization-center shifting being enabled, determine a dequantized coefficient based on the quantization-center shifting. The instructions, which when executed by the processor of the decoder, may cause the processor of the decoder to decode a bitstream based on the dequantized coefficient.
[0008] According to one aspect of the present disclosure, a method of encoding by an encoder is provided. The method may include determining, by a processor, whether a first amount of bits or bins associated with coding a coefficient at a first coding level and a second amount of bits or bins associated with coding the coefficient at a second coding level are a same amount. The first coding level and the second coding level may be adjacent coding levels. The method may include, in response to the first amount of bits or bins and the second amount of bits or bins being a different amount, determining, by the processor, quantization-center shifting is enabled. The method may include, in response to the quantization-center shifting being enabled, determining, by the processor, a dequantized coefficient based on the quantization-center shifting. The method may include encoding, by the processor, a bitstream based on the dequantized coefficient.
[0009] According to another aspect of the present disclosure, an encoder is provided. The encoder may include a processor and memory storing instructions. The memory storing instructions, which when executed by the processor, may cause the processor to determine whether a first amount of bits or bins associated with coding a coefficient at a first coding level and a second amount of bits or bins associated with coding the coefficient at a second coding level are a same amount. The first coding level and the second coding level may be adjacent coding levels. The memory storing instructions, which when executed by the processor, may cause the processor to, in response to the first amount of bits or bins and the second amount of bits or bins being a different amount, determine quantization-center shifting is enabled. The memory storing instructions, which when executed by the processor, may cause the processor to, in response to the quantization-center shifting being enabled, determine a dequantized coefficient based on the quantization-center shifting. The memory storing instructions, which when executed by the processor, may cause the processor to encode a bitstream based on the dequantized coefficient.
[0010] According to a further aspect of the present disclosure, an apparatus for encoding is provided. The apparatus for encoding may include a processor and memory storing instructions. The memory storing instructions, which when executed by the processor, may cause the processor to determine whether a first amount of bits or bins associated with coding a coefficient at a first coding level and a second amount of bits or bins associated with coding the coefficient at a second coding level are a same amount. The first coding level and the second coding level may be adjacent coding levels. The memory storing instructions, which when executed by the processor, may cause the processor to, in response to the first amount of bits or bins and the second amount of bits or bins being a different amount, determine quantization-center shifting is enabled. The memory storing instructions, which when executed by the processor, may cause the processor to, in response to the quantization-center shifting being enabled, determine a dequantized coefficient based on the quantization-center shifting. The memory storing instructions, which when executed by the processor, may cause the processor to encode a bitstream based on the dequantized coefficient.
[0011] According to still another aspect of the present disclosure, a non-transitory computer-readable medium storing instructions for an encoder is provided. The instructions, which when executed by the processor of the encoder, may cause the processor of the encoder to determine whether a first amount of bits or bins associated with coding a coefficient at a first coding level and a second amount of bits or bins associated with coding the coefficient at a second coding level are a same amount. The first coding level and the second coding level may be adjacent coding levels. The instructions, which when executed by the processor of the encoder, may cause the processor of the encoder to, in response to the first amount of bits or bins and the second amount of bits or bins being a different amount, determine quantization-center shifting is enabled. The instructions, which when executed by the processor of the encoder, may cause the processor of the encoder to, in response to the quantization-center shifting being enabled, determine a dequantized coefficient based on the quantization-center shifting. The instructions, which when executed by the processor of the encoder, may cause the processor of the encoder to encode a bitstream based on the dequantized coefficient.
[0012] According to still another aspect of the present disclosure, a non-transitory computer-readable medium storing a bitstream generated based on one or more of the operations described herein is provided.
[0013] According to yet a further aspect of the present disclosure, a method of transmitting a bitstream is provided. The method may include generating, by a processor, a bitstream based on one or more of the operations described herein. The method may include transmitting, by the processor, the bitstream.
[0014] These illustrative embodiments are mentioned not to limit or define the present disclosure, but to provide examples to aid understanding thereof. Additional embodiments are described in the Detailed Description, and further description is provided there.BRIEF DESCRIPTION OF THE DRAWINGS
[0015] The accompanying drawings, which are incorporated herein and form a part of the specification, illustrate embodiments of the present disclosure and, together with the description, further serve to explain the principles of the present disclosure and to enable a person skilled in the pertinent art to make and use the present disclosure.
[0016] FIG. 1 illustrates a block diagram of an exemplary encoding system, according to some embodiments of the present disclosure.
[0017] FIG. 2 illustrates a block diagram of an exemplary decoding system, according to some embodiments of the present disclosure.
[0018] FIG. 3 illustrates a detailed block diagram of an exemplary encoder in the encoding system in FIG. 1, according to some embodiments of the present disclosure.
[0019] FIG. 4 illustrates a detailed block diagram of an exemplary decoder in the decoding system in FIG. 2, according to some embodiments of the present disclosure.
[0020] FIG. 5 illustrates an exemplary picture divided into coding tree units (CTUs) , according to some embodiments of the present disclosure.
[0021] FIG. 6 illustrates an exemplary CTU divided into coding units (CUs) , according to some embodiments of the present disclosure.
[0022] FIG. 7 illustrates a schematic visualization of two scalar quantizers with different reconstruction values, according to some embodiments of the present disclosure.
[0023] FIG. 8 illustrates a schematic visualization of state transition and quantizer selection for dependent quantization (DQ) , according to some embodiments of the present disclosure.
[0024] FIG. 9 illustrates a diagram of a first RRC scan order, according to some embodiments of the present disclosure.
[0025] FIG. 10 illustrates a diagram of a second RRC scan order, according to some embodiments of the present disclosure.
[0026] FIG. 11 illustrates a diagram of a TSRC scan order, according to some embodiments of the present disclosure.
[0027] FIG. 12 illustrates a flowchart of a method of decoding, according to some embodiments of the present disclosure.
[0028] FIG. 13 illustrates a flowchart of a method of decoding, according to some embodiments of the present disclosure.
[0029] Embodiments of the present disclosure will be described with reference to the accompanying drawings.DETAILED DESCRIPTION
[0030] Although some configurations and arrangements are discussed, it should be understood that this is done for illustrative purposes only. A person skilled in the pertinent art will recognize that other configurations and arrangements can be used without departing from the spirit and scope of the present disclosure. It will be apparent to a person skilled in the pertinent art that the present disclosure can also be employed in a variety of other applications.
[0031] It is noted that references in the specification to “one embodiment, ” “an embodiment, ” “an example embodiment, ” “some embodiments, ” “certain embodiments, ” etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases do not necessarily refer to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it would be within the knowledge of a person skilled in the pertinent art to effect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
[0032] In general, terminology may be understood at least in part from usage in context. For example, the term “one or more” as used herein, depending at least in part upon context, may be used to describe any feature, structure, or characteristic in a singular sense or may be used to describe combinations of features, structures or characteristics in a plural sense. Similarly, terms, such as “a, ” “an, ” or “the, ” again, may be understood to convey a singular usage or to convey a plural usage, depending at least in part upon context. In addition, the term “based on” may be understood as not necessarily intended to convey an exclusive set of factors and may, instead, allow for existence of additional factors not necessarily expressly described, again, depending at least in part on context.
[0033] Various aspects of video coding systems will now be described with reference to various apparatus and methods. These apparatus and methods will be described in the following detailed description and illustrated in the accompanying drawings by various modules, components, circuits, steps, operations, processes, algorithms, etc. (collectively referred to as “elements” ) . These elements may be implemented using electronic hardware, firmware, computer software, or any combination thereof. Whether such elements are implemented as hardware, firmware, or software depends upon the particular application and design constraints imposed on the overall system.
[0034] The techniques described herein may be used for various video coding applications. As described herein, video coding includes both encoding and decoding a video. Encoding and decoding of a video can be performed by the unit of block. For example, an encoding / decoding process such as transform, quantization, prediction, in-loop filtering, reconstruction, or the like may be performed on a coding block, a transform block, or a prediction block. As described herein, a block to be encoded / decoded will be referred to as a “current block. ” For example, the current block may represent a coding block, a transform block, or a prediction block according to a current encoding / decoding process. In addition, it is understood that the term “unit” used in the present disclosure indicates a basic unit for performing a specific encoding / decoding process, and the term “block” indicates a sample array of a predetermined size. Unless otherwise stated, the “block” and “unit” may be used interchangeably.
[0035] FIG. 1 illustrates a block diagram of an exemplary encoding system 100, according to some embodiments of the present disclosure. FIG. 2 illustrates a block diagram of an exemplary decoding system 200, according to some embodiments of the present disclosure. Each system 100 or 200 may be applied or integrated into various systems and apparatus capable of data processing, such as computers and wireless communication devices. For example, system 100 or 200 may be the entirety or part of a mobile phone, a desktop computer, a laptop computer, a tablet, a vehicle computer, a gaming console, a printer, a positioning device, a wearable electronic device, a smart sensor, a virtual reality (VR) device, an augmented reality (AR) device, or any other suitable electronic devices having data processing capability. As shown in FIGs. 1 and 2, system 100 or 200 may include a processor 102, a memory 104, and an interface 106. These components are shown as connected to one another by a bus, but other connection types are also permitted. It is understood that system 100 or 200 may include any other suitable components for performing functions described here.
[0036] Processor 102 may include microprocessors, such as a graphic processing unit (GPU) , image signal processor (ISP) , central processing unit (CPU) , digital signal processor (DSP) , tensor processing unit (TPU) , vision processing unit (VPU) , neural processing unit (NPU) , synergistic processing unit (SPU) , or physics processing unit (PPU) , microcontroller units (MCUs) , application-specific integrated circuits (ASICs) , field-programmable gate arrays (FPGAs) , programmable logic devices (PLDs) , state machines, gated logic, discrete hardware circuits, and other suitable hardware configured to perform the various functions described throughout the present disclosure. Although only one processor is shown in FIGs. 1 and 2, it is understood that multiple processors can be included. Processor 102 may be a hardware device having one or more processing cores. Processor 102 may execute software. Software shall be construed broadly to mean instructions, instruction sets, code, code segments, program code, programs, subprograms, software modules, applications, software applications, software packages, routines, subroutines, objects, executables, threads of execution, procedures, functions, etc., whether referred to as software, firmware, middleware, microcode, hardware description language, or otherwise. Software can include computer instructions written in an interpreted language, a compiled language, or machine code. Other techniques for instructing hardware are also permitted under the broad category of software.
[0037] Memory 104 can broadly include both memory (a.k.a, primary / system memory) and storage (a.k.a. secondary memory) . For example, memory 104 may include random-access memory (RAM) , read-only memory (ROM) , static RAM (SRAM) , dynamic RAM (DRAM) , ferro-electric RAM (FRAM) , electrically erasable programmable ROM (EEPROM) , compact disc read-only memory (CD-ROM) or other optical disk storage, hard disk drive (HDD) , such as magnetic disk storage or other magnetic storage devices, Flash drive, solid-state drive (SSD) , or any other medium that can be used to carry or store desired program code in the form of instructions that can be accessed and executed by processor 102. Broadly, memory 104 may be embodied by any computer-readable medium, such as a non-transitory computer-readable medium. Although only one memory is shown in FIGs. 1 and 2, it is understood that multiple memories can be included.
[0038] Interface 106 can broadly include a data interface and a communication interface that is configured to receive and transmit a signal in a process of receiving and transmitting information with other external network elements. For example, interface 106 may include input / output (I / O) devices and wired or wireless transceivers. Although only one memory is shown in FIGs. 1 and 2, it is understood that multiple interfaces can be included.
[0039] Processor 102, memory 104, and interface 106 may be implemented in various forms in system 100 or 200 for performing video coding functions. In some embodiments, processor 102, memory 104, and interface 106 of system 100 or 200 are implemented (e.g., integrated) on one or more system-on-chips (SoCs) . In one example, processor 102, memory 104, and interface 106 may be integrated on an application processor (AP) SoC that handles application processing in an operating system (OS) environment, including running video encoding and decoding applications. In another example, processor 102, memory 104, and interface 106 may be integrated on a specialized processor chip for video coding, such as a GPU or ISP chip dedicated to image and video processing in a real-time operating system (RTOS) .
[0040] As shown in FIG. 1, in encoding system 100, processor 102 may include one or more modules, such as an encoder 101. Although FIG. 1 shows that encoder 101 is within one processor 102, it is understood that encoder 101 may include one or more sub-modules that can be implemented on different processors located closely or remotely with each other. Encoder 101 (and any corresponding sub-modules or sub-units) can be hardware units (e.g., portions of an integrated circuit) of processor 102 designed for use with other components or software units implemented by processor 102 through executing at least part of a program, e.g., instructions. The instructions of the program may be stored on a computer-readable medium, such as memory 104, and when executed by processor 102, it may perform a process having one or more functions related to video encoding, such as picture partitioning, inter prediction, intra prediction, transformation, quantization, filtering, entropy encoding, etc., as described below in detail.
[0041] Similarly, as shown in FIG. 2, in decoding system 200, processor 102 may include one or more modules, such as a decoder 201. Although FIG. 2 shows that decoder 201 is within one processor 102, it is understood that decoder 201 may include one or more sub-modules that can be implemented on different processors located closely or remotely with each other. Decoder 201 (and any corresponding sub-modules or sub-units) can be hardware units (e.g., portions of an integrated circuit) of processor 102 designed for use with other components or software units implemented by processor 102 through executing at least part of a program, e.g., instructions. The instructions of the program may be stored on a computer-readable medium, such as memory 104, and when executed by processor 102, it may perform a process having one or more functions related to video decoding, such as entropy decoding, inverse quantization, inverse transformation, inter prediction, intra prediction, filtering, as described below in detail.
[0042] FIG. 3 illustrates a detailed block diagram of exemplary encoder 101 in encoding system 100 in FIG. 1, according to some embodiments of the present disclosure. As shown in FIG. 3, encoder 101 may include a partitioning module 302, an inter prediction module 304, an intra prediction module 306, a transform module 308, a quantization module 310, a dequantization module 312, an inverse transform module 314, a filter module 316, a buffer module 318, and an encoding module 320. It is understood that each of the elements shown in FIG. 3 is independently shown to represent characteristic functions different from each other in a video encoder, and it does not mean that each component is formed by the configuration unit of separate hardware or single software. That is, each element is included to be listed as an element for convenience of explanation, and at least two of the elements may be combined to form a single element, or one element may be divided into a plurality of elements to perform a function. It is also understood that some of the elements are not necessary elements that perform functions described in the present disclosure but instead may be optional elements for improving performance. It is further understood that these elements may be implemented using electronic hardware, firmware, computer software, or any combination thereof. Whether such elements are implemented as hardware, firmware, or software depends upon the particular application and design constraints imposed on encoder 101.
[0043] Partitioning module 302 may be configured to partition an input picture of a video into at least one processing unit. A picture can be a frame of the video or a field of the video. In some embodiments, a picture includes an array of luma samples in monochrome format, or an array of luma samples and two corresponding arrays of chroma samples. At this point, the processing unit may be a prediction unit (PU) , a transform unit (TU) , or a coding unit (CU) . Partitioning module 302 may partition a picture into a combination of a plurality of coding units, prediction units, and transform units, and encode a picture by selecting a combination of a coding unit, a prediction unit, and a transform unit based on a predetermined criterion (e.g., a cost function) .
[0044] Similar to H. 265 / HEVC, H. 266 / VVC is a block-based hybrid spatial and temporal predictive coding scheme. As shown in FIG. 5, during encoding, an input picture 500 is first divided into square blocks - CTUs 502, by partitioning module 302. For example, CTUs 502 can be blocks of 128×128 pixels. As shown in FIG. 6, each CTU 502 in input picture 500 can be partitioned by partitioning module 302 into one or more CUs 602, which can be used for prediction and transformation. Unlike H. 265 / HEVC, in H. 266 / VVC, CUs 602 can be rectangular or square, and can be coded without further partitioning into prediction units or transform units. For example, as shown in FIG. 6, the partition of CTU 502 into CUs 602 may include quadtree splitting (indicated in solid lines) , binary tree splitting (indicated in dashed lines) , and ternary splitting (indicated in dash-dotted lines) . Each CU 602 can be as large as its root CTU or be subdivisions of root CTU 502 as small as 4×4 blocks, according to some embodiments.
[0045] Referring to FIG. 3, inter prediction module 304 may be configured to perform inter prediction on a prediction unit, and intra prediction module 306 may be configured to perform intra prediction on the prediction unit. It may be determined whether to use inter prediction or to perform intra prediction for the prediction unit, and determine specific information (e.g., intra prediction mode, motion vector, reference picture, etc. ) according to each prediction method. At this point, a processing unit for performing prediction may be different from a processing unit for determining a prediction method and specific content. For example, a prediction method and a prediction mode may be determined in a prediction unit, and prediction may be performed in a transform unit. Residual coefficients in a residual block between the generated prediction block and the original block may be input into transform module 308. In addition, prediction mode information, motion vector information, and the like used for prediction may be encoded by encoding module 320 together with the residual coefficients or quantization levels into the bitstream. It is understood that in certain encoding modes, an original block may be encoded as it is without generating a prediction block through prediction module 304 or 306. It is also understood that in certain encoding modes, prediction, transform, and / or quantization may be skipped as well.
[0046] In some embodiments, inter prediction module 304 may predict a prediction unit based on information on at least one picture among pictures before or after the current picture, and in some cases, it may predict a prediction unit based on information on a partial area that has been encoded in the current picture. Inter prediction module 304 may include sub-modules, such as a reference picture interpolation module, a motion prediction module, and a motion compensation module (not shown) . For example, the reference picture interpolation module may receive reference picture information from buffer module 318 and generate pixel information of an integer number of pixels or less from the reference picture. In the case of a luminance pixel, a discrete cosine transform (DCT) -based 8-tap interpolation filter with a varying filter coefficient may be used to generate pixel information of an integer number of pixels or less by the unit of 1 / 4 pixels. In the case of a color difference signal, a DCT-based 4-tap interpolation filter with a varying filter coefficient may be used to generate pixel information of an integer number of pixels or less by the unit of 1 / 8 pixels. The motion prediction module may perform motion prediction based on the reference picture interpolated by the reference picture interpolation part. Various methods, such as a full search-based block matching algorithm (FBMA) , a three-step search (TSS) , and a new three-step search algorithm (NTS) may be used as a method of calculating a motion vector. The motion vector may have a motion vector value of a unit of 1 / 2, 1 / 4, or 1 / 16 pixels or integer pel based on interpolated pixels. The motion prediction module may predict a current prediction unit by varying the motion prediction method. Various methods, such as a skip method, a merge method, an advanced motion vector prediction (AMVP) method, an intra-block copy method, and the like, may be used as the motion prediction method.
[0047] Still referring to FIG. 3, in some embodiments, intra prediction module 306 may generate a prediction unit based on the information on reference pixels around the current block, which is pixel information in the current picture. The reference pixels may be located in reference lines non-adjacent to the current block. When a block in the neighborhood of the current prediction unit is a block on which inter prediction has been performed and thus, the reference pixel is a pixel on which inter prediction has been performed, the reference pixel included in the block on which inter prediction has been performed may be used in place of reference pixel information of a block in the neighborhood on which intra prediction has been performed. That is, when a reference pixel is unavailable, at least one reference pixel among available reference pixels may be used in place of unavailable reference pixel information. In the intra prediction, the prediction mode may have an angular prediction mode that uses reference pixel information according to a prediction direction, and a non-angular prediction mode that does not use directional information when performing prediction. A mode for predicting luminance information may be different from a mode for predicting color difference information, and intra prediction mode information used to predict luminance information or predicted luminance signal information may be used to predict the color difference information. If the size of the prediction unit is the same as the size of the transform unit when intra prediction is performed, the intra prediction may be performed for the prediction unit based on pixels on the left side, pixels on the top-left side, and pixels on the top of the prediction unit. However, if the size of the prediction unit is different from the size of the transform unit when the intra prediction is performed, the intra prediction may be performed using a reference pixel based on the transform unit.
[0048] The intra prediction method may generate a prediction block after applying an adaptive intra smoothing (AIS) filter to the reference pixel according to a prediction mode. The type of the AIS filter applied to the reference pixel may vary. In order to perform the intra prediction method, the intra prediction mode of the current prediction unit may be predicted from the intra prediction mode of the prediction unit existing in the neighborhood of the current prediction unit. When a prediction mode of the current prediction unit is predicted using the mode information predicted from the neighboring prediction unit, if the intra prediction modes of the current prediction unit are the same as the prediction unit in the neighborhood, information indicating that the prediction modes of the current prediction unit are the same as the prediction unit in the neighborhood may be transmitted using predetermined flag information, and if the prediction modes of the current prediction unit and the prediction unit in the neighborhood are different from each other, prediction mode information of the current block may be encoded by extra flags information.
[0049] As shown in FIG. 3, a residual block including a prediction unit that has performed prediction based on the prediction unit generated by prediction module 304 or 306 and residual coefficient information (also referred to herein as the “residual” ) , which is a difference value of the prediction unit with the original block, may be generated. The generated residual block may be input into transform module 308. Additional details of residuals and transforms for video coding will now be provided.
[0050] In hybrid video coding systems, redundancy in the video signal is first exploited by applying inter or intra prediction tools for each CU. The difference between the original samples of a CU and the prediction block for that CU is commonly referred to as the residual. Even after prediction, the residual may still be highly spatially correlated. Although conditional entropy coding can capture some spatial dependency between adjacent samples, it is computationally impractical to form entropy coding statistical models that can fully exploit spatial correlation in the residual. In contrast, transform coding is a practical and effective method for spatially decorrelating the residual.
[0051] For example, transform module 308 may transform the residual using an integerized version of the two-dimensional discrete cosine transform (DCT) , which may be applied separably in the horizontal and vertical directions. For an MxN block of residual samples (where M is the width of the block and N is the height of the block) , transform module 308 may obtain transform coefficients by applying an MxM DCT to each row, resulting in intermediate transform coefficients, and then applying an NxN DCT to each column of intermediate transform coefficients.
[0052] For intra-coded CUs (also referred to herein as “intra CUs” ) , spatial neighboring reconstructed samples are used to predict the current block, and the intra prediction mode is signaled once for the entire CU. Each CU consists of one or more collocated coding blocks (CBs) corresponding to the color components of the video sequence. For example, consumer video typically takes the 4: 2: 0 chroma format, in which case each CU consists of a luma CB and two chroma CBs with one-quarter of the samples of the luma CB. Intra prediction and transform coding are performed at the prediction block (PB) and transform block (TB) levels, respectively. Each CB consists of a single TB, except in the cases of Intra Subpartition (ISP) mode and implicit splitting. For luma CBs, the maximum side length of a TB is 64, and the minimum side length is 4. In addition, luma TBs are further specified as W × H rectangular blocks of width W and height H, where W, H ∈ {4, 8, 16, 32, 64} . For chroma CBs, the maximum TB side length is 32, and chroma TBs are rectangular W × H blocks of width W and height H. Here, W, H ∈ {2, 4, 8, 16, 32} , but blocks of shapes 2 × H and 4 × 2 are excluded in order to address memory architecture and throughput requirements.
[0053] Referring to FIG. 5, each picture is divided into a tiling of square CTUs, which are processed in raster scan order. When an intra prediction method is performed on a current CU 602 in a current CTU 502, samples belonging to other CTUs preceding current CTU 502 in raster scan order are reconstructed and may be available for prediction. Samples belonging to CTUs following the current CTU 502 in raster scan order are not reconstructed and, therefore, are not available.
[0054] Each CTU 502 itself is partitioned into CUs by a hierarchical structure consisting of quadtree, binary tree, and ternary tree splits, with an example of such splits shown in FIG. 6. The scan order of CUs within a CTU 502 is determined by the partitioning structure. For a single level of partitioning split, the partitions are scanned in the following order: 1) left to right for the cases of horizontal binary tree split or horizontal ternary tree split, 2) top to bottom for the cases of vertical binary tree split or vertical ternary tree split, and 3) top-left, top-right, bottom-left, bottom-right for the case of quadtree split.
[0055] If a partition contains further hierarchical splits, then all CUs within that partition are scanned before continuing to the CUs in the next partition. FIG. 6 shows an example of partitioning of a CTU 502 into 15 CUs. Each CU 602 in FIG. 6 is numbered from 1 to 15 to indicate their scan order. When an intra prediction method is performed on a current CU in a current CTU, samples belonging to other CUs in the current CTU that precede the current CU in the current CTU’s partitioning scan order are reconstructed and may be available for prediction. Samples belonging to the current CU, or CUs following the current CU in the current CTU’s partitioning scan order are not reconstructed and, therefore, not available.
[0056] Samples belonging to a CTU preceding the current CTU in raster scan order are considered reconstructed by the definition above. However, they are not necessarily available for intra prediction. To be considered available for prediction, they must also belong to a logical unit that the current CU is permitted to use. Pictures may be divided into sub-picture partitions, each of which contains a whole number of CTUs.
[0057] Referring again to FIG. 3, transform module 308 can transform the video signals in the residual block from the pixel domain to a transform domain (e.g., a frequency domain depending on the transform method) . It is understood that in some examples, transform module 308 may be skipped, and the video signals may not be transformed to the transform domain.
[0058] Quantization module 310 may be configured to quantize the coefficient of each position in the coding block to generate quantization levels of the positions. The current block may be the residual block. That is, quantization module 310 can perform a quantization process on each residual block. The residual block may include N×M positions (samples) , each associated with a transformed or non-transformed video signal / data, such as luma and / or chroma information, where N and M are positive integers. In the present disclosure, before quantization, the transformed or non-transformed video signal at a specific position is referred to herein as a “coefficient. ” After quantization, the quantized value of the coefficient is referred to herein as a “quantization level” or “level. ”
[0059] Quantization can be used to reduce the dynamic range of transformed or non-transformed video signals so that fewer bits will be used to represent video signals. Quantization typically involves division by a quantization step size and subsequent rounding, while dequantization (a.k.a. inverse quantization) involves multiplication by the quantization step size. The quantization step size can be indicated by a quantization parameter (QP) . Such a quantization process is referred to as scalar quantization. The quantization of all coefficients within a coding block can be done independently, and this kind of quantization method is used in some existing video compression standards, such as H. 264 / AVC and H. 265 / HEVC. The QP in quantization can affect the bit rate used for encoding / decoding the pictures of the video. For example, a higher QP can result in a lower bit rate, and a lower QP can result in a higher bit rate.
[0060] Referring to FIG. 3, encoding module 320 may be configured to encode the quantization level of each position in the coding block into the bitstream. In some embodiments, encoding module 320 may perform entropy encoding on the coding block. Entropy encoding may use various binarization methods, such as Golomb-Rice binarization, to convert each quantization level into a respective binary representation, such as binary bins. Then, the binary representation can be further compressed using entropy encoding algorithms. The compressed data may be added to the bitstream. Besides the quantization levels, encoding module 320 may encode various other information, such as block type information of a coding unit, prediction mode information, partitioning unit information, prediction unit information, transmission unit information, motion vector information, reference frame information, block interpolation information, and filtering information input from, for example, prediction modules 304 and 306. In some embodiments, encoding module 320 may perform residual coding on a coding block to convert the quantization level into the bitstream. For example, after quantization, there may be N×M quantization levels for an N×M block. These N×M levels may be zero or non-zero values. The non-zero levels may be further binarized to binary bins if the levels are not binary, for example, using combined Truncated Rice (TR) and limited EGk binarization.
[0061] Non-binary syntax elements may be mapped to binary codewords. The bijective mapping between symbols and codewords, for which typically simple structured codes are used, is called binarization. The binary symbols, also called bins, of both binary syntax elements and codewords for non-binary data may be coded using binary arithmetic coding. The core coding engine of context-adaptive binary arithmetic coding (CABAC) can support two operating modes: a context coding mode, in which the bins are coded with adaptive probability models, and a less complex bypass mode that uses a fixed probability of 1 / 2. The adaptive probability models are also called contexts, and the assignment of probability models to individual bins is referred to as context modeling.
[0062] As shown in FIG. 3, dequantization module 312 may be configured to dequantize the quantization levels by dequantization module 312, and inverse transform module 314 may be configured to inversely transform the coefficients transformed by transform module 308. The reconstructed residual block generated by dequantization module 312 and inverse transform module 314 may be combined with the prediction units predicted through prediction module 304 or 306 to generate a reconstructed block.
[0063] Filter module 316 may include at least one among a deblocking filter, a sample adaptive offset (SAO) , and an adaptive loop filter (ALF) . The deblocking filter may remove block distortion generated by the boundary between blocks in the reconstructed picture. The SAO module may correct an offset to the original video by the unit of pixel for a video on which the deblocking has been performed. ALF may be performed based on a value obtained by comparing the reconstructed and filtered video with the original video. Buffer module 318 may be configured to store the reconstructed block or picture calculated through filter module 316, and the reconstructed and stored block or picture may be provided to inter prediction module 304 when inter prediction is performed.
[0064] FIG. 4 illustrates a detailed block diagram of exemplary decoder 201 in decoding system 200 in FIG. 2, according to some embodiments of the present disclosure. As shown in FIG. 4, decoder 201 may include a decoding module 402, a dequantization module 404, an inverse transform module 406, an inter prediction module 408, an intra prediction module 410, a filter module 412, and a buffer module 414. It is understood that each of the elements shown in FIG. 4 is independently shown to represent characteristic functions different from each other in a video decoder, and it does not mean that each component is formed by the configuration unit of separate hardware or single software. That is, each element is included to be listed as an element for convenience of explanation, and at least two of the elements may be combined to form a single element, or one element may be divided into a plurality of elements to perform a function. It is also understood that some of the elements are not necessary elements that perform functions described in the present disclosure but instead may be optional elements for improving performance. It is further understood that these elements may be implemented using electronic hardware, firmware, computer software, or any combination thereof. Whether such elements are implemented as hardware, firmware, or software depends upon the particular application and design constraints imposed on decoder 201.
[0065] When a video bitstream is input from a video encoder (e.g., encoder 101) , the input bitstream may be decoded by decoder 201 in a procedure opposite to that of the video encoder. Thus, some details of decoding that are described above with respect to encoding may be skipped for ease of description. Decoding module 402 may be configured to decode the bitstream to obtain various information encoded into the bitstream, such as the quantization level of each position in the coding block. In some embodiments, decoding module 402 may perform entropy decoding (decompressing) corresponding to the entropy encoding (compressing) performed by the encoder, such as, for example, variable length coding (VLC) , context-adaptive variable-length coding (CAVLC) , CABAC, syntax-based binary arithmetic coding (SBAC) , PIPE coding, and the like to obtain the binary representation (e.g., binary bins) . Decoding module 402 may further convert the binary representations to quantization levels using Golomb-Rice binarization, including, for example, EGk binarization and combined TR and limited EGk binarization. Besides the quantization levels of the positions in the transform units, decoding module 402 may decode various other information, such as the parameters used for Golomb-Rice binarization (e.g., the Rice parameter) , block type information of a coding unit, prediction mode information, partitioning unit information, prediction unit information, transmission unit information, motion vector information, reference frame information, block interpolation information, and filtering information. During the decoding process, decoding module 402 may perform rearrangement on the bitstream to reconstruct and rearrange the data from a 1D order into a 2D rearranged block through a method of inverse-scanning based on the coding scan order used by the encoder.
[0066] Dequantization module 404 may be configured to dequantize the quantization level of each position of the coding block (e.g., the 2D reconstructed block) to obtain the coefficient of each position. In some embodiments, dequantization module 404 may perform dependent dequantization based on quantization parameters provided by the encoder as well, including the information related to the quantizers used in dependent quantization, for example, the quantization step size used by each quantizer.
[0067] Inverse transform module 406 may be configured to perform inverse transformation, for example, inverse discrete cosine transform (DCT) , inverse DST, and inverse Karhunen-Loève transform (KLT) , for DCT, DST, and KLT performed by the encoder, respectively, to transform the data from the transform domain (e.g., coefficients) back to the pixel domain (e.g., luma and / or chroma information) . In some embodiments, inverse transform module 406 may selectively perform a transform operation (e.g., DCT, DST, KLT) according to a plurality of pieces of information such as a prediction method, a size of the current block, a prediction direction, and the like.
[0068] Inter prediction module 408 and intra prediction module 410 may be configured to generate a prediction block based on information related to the generation of a prediction block provided by decoding module 402 and information of a previously decoded block or picture provided by buffer module 414. As described above, if the size of the prediction unit and the size of the transform unit are the same when intra prediction is performed in the same manner as the operation of the encoder, intra prediction may be performed on the prediction unit based on the pixel existing on the left side, the pixel on the top-left side, and the pixel on the top of the prediction unit. However, if the size of the prediction unit and the size of the transform unit are different when intra prediction is performed, intra prediction may be performed using a reference pixel based on a transform unit.
[0069] For example, inter prediction module 408 may be configured to receive a bitstream that includes a reference frame, a current frame, and an indication of a weighting factor associated with a multiple-hypothesis prediction (MHP) procedure from an encoder. Inter prediction module 408 may be configured to perform the MHP procedure for a CU located in the current frame based on a search block (e.g., reference frame and / or reference template) in the reference frame. In some embodiments, to perform the MHP procedure, the inter prediction module 408 may be configured to perform template matching for the CU located in the current frame based on a search block in the reference frame and the weighting factor to obtain motion information. In some embodiments, to perform the MHP procedures, inter prediction module 408 may be configured to identify a weighting factor index associated with the weighting factor based on the template matching. Inter prediction module 408 may be configured to identify a weighting factor sign of the weighting factor based on an indication included in the bitstream. Inter prediction module performs an inter prediction procedure based on the current frame, the reference frame, the weighting factor index, and the weighting factor sign of the weighting factor to decode the bitstream.
[0070] The reconstructed block or reconstructed picture combined from the outputs of inverse transform module 406 and prediction module 408 or 410 may be provided to filter module 412. Filter module 412 may include a deblocking filter, an offset correction module, and an ALF. Buffer module 414 may store the reconstructed picture or block and use it as a reference picture or a reference block for inter prediction module 408 and may output the reconstructed picture.
[0071] Consistent with the scope of the present disclosure, encoding module 320 and decoding module 402 may be configured to adopt a scheme of quantization level binarization with Rice parameter adapted to the bit depth and / or the bit rate for encoding the picture of the video to improve the coding efficiency.
[0072] In video coding, quantization is a key step applied in reducing the amount of data needed to represent a video frame. First, the difference between the original signal and predicted signal is obtained. This difference may be referred to as a residual. Second, the residual may be transformed by applying a primary transform and optionally a further secondary transform. The residual may also not be transformed and in such cases may be called a transform skip residual. Then, the transformed or non-transformed residual consists of a set of coefficients. Third, each coefficient is quantized by applying division with a specified quantization step size to reduce the dynamic range of the coefficient. The result after this process is a quantization level (also referred to as a “level” ) . The quantization level is an integer number. Finally, the quantization levels are entropy coded to generate the bitstream at the encoder 101.
[0073] More specifically, given a (transformed or non-transformed) coefficient (coef) and a quantization step size (qpstep) , the encoder 101 may calculate a quantization level (level) according to formula (1) , as shown below.
[0074] Such quantization is also called scalar quantization. The quantization module 310 rounds off the value of the level in formula (1) to an integer number and decides the integer number to which the value of the level is rounded.
[0075] The level is entropy coded by encoding module 320 to the bitstream using a certain number of bits. Typically, a smaller qpstep keeps fine details and result in a larger number of bits, while a larger qpstep keeps coarser information and loses some finer details, which results in a smaller number of bits compared with a smaller qpstep.
[0076] At the decoder 201, dequantization module 404 de-quantizes or scales the level to recover the coefficient according to formula (2) , as shown below. icoef=level*qpstep (2) , where icoef is an inverse coefficient (also referred to as a “de-quantized coefficient” or a “reconstructed coefficient” ) .
[0077] The inverse coefficient (icoef) may have a different value than the coefficient (coef) due to the quantization and de-quantization processes. The difference between coef and icoef is referred to as the “quantization error. ” De-quantization typically cannot recover all information. Thus, the quantization / de-quantization processes may result in a lossy coding.
[0078] When considering the quantization error in the hyper-dimensional space of the set of coefficients belonging to the residual, the scalar quantization applied to each coefficient effectively results in the quantized residual being assigned to one of a set of hyper-cubes spanning the space. Compared with this, it is known that vector quantization can reduce the quantization error for the same amount of bit consumption by packing the hyper-dimensional space with “rounder” Voronoi cells. For this reason, the coding gain provided purely by switching from scalar quantization to vector quantization is typically referred to as “shape gain. ”
[0079] Vector quantization is typically impractical to implement in video coding due to its complexity. However, a class of vector quantization, sometimes referred to as trellis coded quantization, and referred to as dependent quantization (DQ) in VVC, provides a practical solution by effectively providing vector quantization of the residual through switching between two different and offset scalar quantizers.
[0080] Quantization of a coefficient within a coding block may make use of the coding scan order information. For example, it may depend on the status of the previous quantization level along the coding scan order. To further improve the coding efficiency, more than one quantizer, e.g., two scalar quantizers, can be used by quantization module 310, shown in FIG. 3. Which quantizer will be used for quantizing the current coefficient may depend on the information preceding the current coefficient in coding scan order. Such a quantization process is referred to as dependent quantization (DQ) .
[0081] The approach of DQ is realized by, e.g., 1) defining two scalar quantizers with different reconstruction values and 2) defining a process for switching between the two scalar quantizers.
[0082] FIG. 7 illustrates a schematic visualization of two scalar quantizers 700 with different reconstruction values, according to some embodiments of the present disclosure. As shown in FIG. 7, the two scalar quantizers 700 are denoted by Q0 and Q1. Each of these two quantizers can be considered as a quantizer that has 2Δ quantization step size. The location of the available reconstruction values for DQ is uniquely specified by a quantization step size Δ. The two scalar quantizers Q0 and Q1 are characterized as follows.
[0083] The reconstruction values of the first quantizer Q0 are given by the even integer multiples of the quantization step size Δ. When the first quantizer Q0 is used, a reconstructed coefficient icoef is calculated according to formula (3) , as shown below. where k denotes the corresponding transform coefficient level.
[0084] The reconstruction values of the second quantizer Q1 are given by the odd integer multiples of the quantization step size Δ and the reconstruction value equal to zero. The mapping of transform coefficient levels k to reconstructed transform coefficients icoef is defined according to formula (4) , as shown below. where sgn (. ) denotes the signum function and sgn (k) = (k==0 ? 0: (k<0 ? -1: 1) ) .
[0085] The level k for each quantizer (Q0 or Q1) is coded in the bitstream and a quantization index for DQ can be calculated based upon the index of two quantizers according to formula (5) , as shown below. where yi is the quantization index for DQ.
[0086] Formula (3) and (4) can be simplified into a single quantizer function where i equals 0 for quantizer Q0, and 1 for quantizer Q1. Then the inverse quantization to calculate icoef based upon DQ’s quantization index yi can be simplified as follows.
[0087] The scalar quantizer used (Q0 or Q1) is not explicitly signalled in the bitstream. Instead, the quantizer used for a current coefficient is determined by a quantizer state, and the parities of the levels that precede the current coefficient in coding / reconstruction order. For example, a schematic visualization of state transition and quantizer selection 800 for dependent quantization in VVC is illustrated in FIG. 8.
[0088] In VVC the quantizer state, which may also be referred to as “Qstate, ” is initialized as 0. For each coefficient, the quantizer is selected according to the value of the quantizer state at the start of encoding or decoding that coefficient. Quantizer state 0 or 1 selects Q0, while quantizer state 2 or 3 selects Q1. Equivalently, the quantizer selected is (QState > 1 ? 1 : 0 ) . For example, the first coefficient is decoded using the initialized quantizer state of 0, which selects quantizer Q0. After each coefficient is signaled, the state is updated according to a state transition that is controlled by the parity of the quantization level. The parity is the last bit of quantization level k, which can be isolated by bitwise AND operation with the value 1 (i.e., k &1 as shown in FIG. 8) . The transitions are shown both graphically and in table form in FIG. 8, however in practice the state transition is implemented by a state transition table.
[0089] ECM increases the number of quantizer states to 8, however the mechanism of selecting the quantizer is similar. State transitions are still performed according to the parity of quantization level k, and which of quantizers Q0 or Q1 is selected is determined by a mapping from the current Qstate.
[0090] It is known that the quantization step size determines the upper bound of quantization error. For a given coefficient, it could be quantized to two level indices, l and l-1, along the quantization level line according to formula (1) , where l is an integer number. The distortion (quantization error) for these two levels to represent the given coefficient are denoted as dist (l) and dist (l-1) and can be calculated according to formulas (7) and (8) , respectively, as shown below. dist (l) = (coef-icoef (l) )2 (7) , and dist (l-1) = (coef-icoef (l-1) )2 (8) , where icoef (l) and icoef (l-1) represent the reconstructed coefficients for level l and level l- 1 and can be calculated according to formula (2) .
[0091] With variable length coding, the number of bits used to code different levels may be different. For level coding, if the level is a non-zero number, the sign of the level and the absolute value of the level will be coded separately. The number of bits used to code level l typically are greater than the number bits used to code level l-1 when l is a positive number. Similarly, the number of bits used to code level l-1 is typically larger than the number of bits used to code level l when l is a negative number. In short, variable length coding typically uses a larger number of bits to code a larger absolute value of the level than the number of bits used to code a smaller absolute value of the level.
[0092] To achieve the best coding performance for coding a given coefficient, the minimum of the rate-distortion (RD) cost (cost) may be typically selected for quantizing the given coefficient. The cost for quantizing to level l may be calculated according to formula (9) , as shown below. cost=dist (l) +lambda*rate (l) (9) , where rate (l) represents the number of bits used to code level l, and lambda may be a constant depending on quantization step size and slice type etc. and may be selected to provide a trade-off between the distortion and bits used to code the level. Typically, the RD costs for coding levels l and l-1 are calculated, and the smaller cost for coding a coefficient is then selected by the quantization module 310 to represent the quantized version of the given coefficient.
[0093] A smaller absolute value of a level typically will consume a fewer number of bits compared to the larger absolute value of a level. For example, coding level 5 typically will consume fewer bits compared to coding level 6. Therefore, some quantizers may favor quantizing a given coefficient to a smaller level while this level may have a slightly larger distortion. In other words, the dequantized coefficient typically is smaller than the real coefficient because the quantizer intends to quantize the given coefficient to a relatively smaller level instead of a larger level.
[0094] In addition, shifting latent representations of reconstructed coefficients by the gradient of the rate can improve the overall coding performance. In regular scalar quantization, the reconstructed coefficients are calculated by simply scaling the levels. This is equivalent to placing the reconstructed coefficient values for each level at the midpoint (e.g., center) of its corresponding quantization bin. Shifting the quantization center may move the reconstructed coefficient value away from the center of these quantization bins. De-quantized coefficient values are shifted and the amount of shifting is proportional to the gradient of the rate. In ECM-12.0, a quantization index yi of DQ is used to predict the rate R (yi) and the rate is modelled as increasing by the logarithm of the absolute value of the index according to formula (10) , as shown below. where yi ∈ Z is the quantization index for DQ, and a, b ∈ R are two real numbers.
[0095] Using this assumption, the gradient of the rate may be calculated according to formula (11) , as shown below. where yi≠0 (11) .
[0096] Since α=a / ln (2) is a constant scalar, the gradient of the rate is inversely proportional to the quantization index of DQ in formula (10) . This means that the dequantized coefficients or the quantization centers are shifted with the shifting amount inversely proportional to the quantization indices. An integer valued lookup table where each element is the shifting amount for each possible unique absolute quantization indices of DQ, may be used. In summary, shifting of dequantized coefficients icoef is calculated according to formula (12) , as shown below. icoef= ( (1024-T [|yi|] )*yi*Δ +T [|yi|] *y′i*Δ ) >>10 if |T|>|yi|>0 (12) , where Δ is the quantization step size for DQ shown in FIG. 7, |T| is the size of the lookup table, yi ∈ Z is the quantization index of DQ, and y′i is the modified quantization index of DQ, which can be calculated according to formula (13) , as shown below. y′i=yi+ (yi>0? 1: -1) (13) .
[0097] According to formula (12) , the actual shifting amount of a dequantization coefficient is depended on the values of T [|yi|] , yi, and Δ.
[0098] In one implementation, α=63 is used along with a lookup table of size 64 with entries as shown below in formula (14) . T= [0, 63, 31, 21, 15, 12, 10, 9, 7, 7, 6, 5, 5, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2,2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] (14) .
[0099] If the absolute quantization index of DQ is 0 or above 63, formula (12) is not applied and the default dequantization of formula (6) is used.
[0100] As noted above, formula (12) is calculated using quantization index yi, based on an assumption of the rate of yi expressed in formula (10) . However, the quantization index is never actually coded to the bitstream. DQ consists of two individual scalar quantizers, where for each coefficient a quantizer is selected, and then the quantization level k for the selected quantizer is actually coded in the bitstream. For example, formula (10) predicts different rates for quantization indices 3 and 4. However, both of these values result in the same quantization level. Quantization index 3 is signalled by coding the Q0 quantization level 2 to the bitstream, while quantization index 4 is signalled by coding the Q1 quantization level 2 to the bitstream. While some difference in signalling cost is still expected because of differences in context modelling, the rate to signal these levels is much closer than what formula (10) models.
[0101] Thus, the present disclosure proposes that the actual coded quantization level from individual quantizers will be used to predict the rate instead of the quantization index of DQ. More specifically, the quantization level k is used to predict the rate R (k) for each of the quantizers, and the rate increases by the logarithm of the absolute value of the quantization level k according to formula (15) , as shown below where k∈ Z is the quantization level from either Q0 or Q1, and a, b ∈ R are real numbers.
[0102] Using this assumption, the gradient of the rate may be calculated according to formula (16) , as shown below. where k≠0 (16) .
[0103] Since α=a / ln (2) is a constant scalar, the gradient of the rate is inversely proportional to the quantization level k of the individual quantizer in formula (15) . It yields that the dequantized coefficients or quantization centers are shifted with the shifting amount inversely proportional to the quantization level k.
[0104] An integer valued lookup table T, shown below in formula (17) , is used in the proposed method, where each element in lookup table T is the shifting amount for each possible unique absolute quantization level for the individual quantizer, including both Q0 and Q1.
[0105] In some implementations, the shifting of the dequantized coefficients is performed according to formula (18) , as shown below. where i indicates the quantizer Q0 or Q1, icoef is the dequantized coefficient, |T| is the size of the lookup table, is the dequantized value of the quantization level k from quantizer Qi defined at formulas (3) , (4) , and (6) , k′ is the auxiliary quantization level that can be calculated as shown in formula (19) , and is the dequantized value of the quantization level k from quantizer Qi. k′=k+ (k>0? 1: -1) (19) .
[0106] In some implementations, α=31 is used according to formula (17) , resulting in a lookup table of size 32, as shown below in formula (20) . T=[0, 31, 15, 10, 7, 6, 5, 4, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] (20) .
[0107] It may be observed that the value of α controls the length of the lookup table, e.g., |T|=α+1. If the absolute quantization level of Q0 or Q1 is 0 or above 31, formula (17) is not applied and the default dequantization of formula (6) is used. Formula (18) shows an example demonstrating that the same amount of shifting is made for the same level from both quantizers Q0 and Q1.
[0108] In some implementations, two separate lookup tables T0 and T1 may be used for the Q0 and Q1 quantizers, respectively. The two lookup tables may be the same size but contain different values. For the same quantization level value, the number of bits generated for a Q0 quantization level may be different from the number of bits generated for a Q1 quantization level because the contexts used to code Q0 quantization levels are different from that for Q1 quantization levels. Typically, Q1 may generate fewer bits. Therefore, in such case it may be advantageous for Q1 to shift more.
[0109] In some implementations, T0 may be determined according to formula (17) , and then all entries in T1 may shift a fixed offset relative to the quantization center shifts made in T0 except the value of the first entry (0) . In another example, only the second entry of T1 may be modified to shift more as shown below in formulas (21) and (22) . T0= [0, 31, 15, 10, 7, 6, 5, 4, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] (21) , and T1= [0, x, 15, 10, 7, 6, 5, 4, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] (22) , where x is an integer, e.g., 47 or 63.
[0110] Here, the dequantized coefficients for Q0 and Q1 may be respectively calculated according to formulas (23) and (24) , as shown below. and where icoef is the dequantized coefficient, |T0| and |T1| are the sizes of the lookup tables T0 and T1 for quantizers Q0 and Q1, respectively, and and are the dequantized values of the quantization level k from quantizers Q0 and Q1 defined according to formulas (3) , (4) , and (6) , respectively, k′ is the auxiliary quantization level that can be calculated as shown above in formula (19) , and and are the dequantized values of the auxiliary quantization level k′ from quantizers Q0 and Q1, respectively.
[0111] As used herein, icoef may be used to refer to a dequantized coefficient. The value of the dequantized coefficient is also equivalent to the position of the shifted quantization center for that quantization level. Alternatively, the dequantized coefficient may be referred to as a reconstructed coefficient, or a scaled coefficient. Furthermore, “coefficient” may be taken as an abbreviation for transform coefficient, or in the case of transform skip coding, as an abbreviation for prediction residual coefficient, or residual coefficient. Therefore, the dequantized coefficient icoef may also be referred to as a dequantized transform coefficient, a reconstructed transform coefficient, a scaled transform coefficient, a dequantized prediction residual coefficient, a dequantized residual coefficient, a reconstructed prediction residual coefficient, a reconstructed residual coefficient, a scaled prediction residual coefficient, or a scaled residual coefficient, just to name a few.
[0112] Other values of α (e.g., α=63) that decide the table size according to formula (17) may be used in the above implementations, and corresponding changes can be made accordingly.
[0113] In some other implementations, two separate lookup tables T0 and T1 may be used for the Q0 and Q1 quantizers, respectively. Compared some of the above-described implementations, the two lookup tables may be determined with two different values of α0 and α1. Therefore, the lookup tables have different sizes and contain different values.
[0114] Since the same quantization level from quantizers Q0 and Q1 will generate a similar rate, the amount of dequantization value shifting for the same quantization level from quantizers Q0 and Q1 may be similar.
[0115] However, the dequantization value of Q1 is smaller than that of Q0 for the same quantization level k according to DQ. Therefore, the shifting of dequantization value for Q1 may be less than that for Q0 for the same quantization level according to (18) , (23) , and (24) . To compensate for this difference, it was proposed that Q1 and Q0 may use different values of α0 and α1 to decide the shifting amount. For chosen values of α0 and α1, the sizes of tables T0 and T1 and the values of all entries in the tables are determined according to formula (17) .
[0116] In one example, a lookup table T0 of size 32 and a lookup table T1 of size 48 as shown in formulas (25) and (26) are used for Q0 and Q1, respectively. T0
[0032] = [0, 31, 15, 10, 7, 6, 5, 4, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] (25) , and
[0117] The dequantization value for quantization level k from Q0 or Q1 is calculated according to formula (27) , as shown below. where icoef is the dequantized coefficient, i indicates the quantizer Q0 or Q1, |Ti| is the size of the lookup table associated with quantizer Qi, is the dequantized value of the quantization level k from quantizer Qi defined according to formulas (3) , (4) , and (6) , k′ is the auxiliary quantization level that can be calculated as shown above in formula (19) , and is the dequantized value of the quantization level k from quantizer Qi.
[0118] The arrangements described above in relation to two separate lookup tables are one method of implementing two different quantization shifting models dependent on parameters α0 and α1 respectively, to coefficients from Q0 and Q1. Equivalently, these two different quantization shifting models may be implemented by a single table appropriately configured. Further arrangements are described below as examples of these alternative implementations.
[0119] In further arrangements, two lookup tables T0 and T1 may be determined with two different values of α0 and α1, but then implemented as a single lookup table T resulting from interleaving the entries of T0 and T1. In one example, the lookup tables of formulas (25) and (26) are interleaved to form the combined table shown below in formula (28) .
[0120] In another example, the lookup tables of formulas (25) and (26) are interleaved to form the combined table shown below in formula (29) . In formula (29) , the first entry of the combined table is zero, the second entry of the combined table is the second entry of T1 table in formula (26) , the third entry of the combined table is the second entry of T0 table in formula (25) , the fourth entry of the combined table is the third entry of T1 table in formula (26) , the fifth entry of the combined table is the third entry of T0 table in formula (25) , etc. Because the length of T1 in formula (26) is longer than the length of T0 in formula (25) , some additional zeros are inserted interleavedly until the last non-zero element of T1 in formula (26) .
[0121] In some examples, the dequantized coefficient for quantization level k from Q0 or Q1 may be calculated according to formula (30) or (31) , shown below. and where i indicates the quantizer Q0 or Q1, icoef is the dequantized coefficient, |T| is the size of the lookup table, is the dequantized value of the quantization level k from quantizer Qi defined according to formulas (3) , (4) , and (6) , k′ is the auxiliary quantization level that can be calculated as shown above in formula (19) , and is the dequantized value of the auxiliary quantization level k′ from quantizer Qi.
[0122] Formulas (30) and / or (31) can be further simplified (as shown below in formula (32) ) to an expression in terms of the quantization index yi (rather than a quantizer Q0 or Q1 and the associated quantization level k) : icoef= ( (1024-T [|yi|] ) *yi*Δ+T [|yi|] *y″i*Δ)>>10 if |T|>|yi|>0 (32) , where |T| is size of the lookup table and y″i is the auxiliary quantization index that can be calculated according to formula (33) . y″i=yi+ (yi>0 ? 2∶ -2) (33)
[0123] In further arrangements, two lookup tables T0 and T1 may be determined with two different values of α0 and α1, but then implemented as a combined lookup table T resulting from concatenating the entries of T0 and T1. In one example, the lookup tables of formulas (25) and (26) are concatenated to form the combined table shown below in formula (34) .
[0124] The dequantized coefficient for quantization level k from Q0 or Q1 may be calculated according to formula (35) , as follows. where i indicates the quantizer Q0 or Q1, icoef is the dequantized coefficient, |T| is size of the lookup table, is the dequantized value of the quantization level k from quantizer Qi defined according to formulas (3) , (4) , and (6) , k′ is the auxiliary quantization level that can be calculated as shown above in formula (19) , and is the dequantized value of the auxiliary quantization level k′ from quantizer Qi.
[0125] Some techniques further propose that the method of quantization center shifting may also be applied to the quantization of coefficients in the transform skip mode. For instance, the method of quantization center shifting is applied when a single scalar quantization is applied to quantize such non-transformed coefficients. Supposing the quantization level is k and the quantization step size is Δ for quantizing a transform skip mode coefficient, the dequantized coefficient icoef may be calculated according to formula (36) , as shown below. icoef= ( (1024-T [|k|] ) *k*Δ +T [|k|] *k′*Δ)>>10 if |T|>|k|>0 (36) , where icoef is the dequantized coefficient, |T| is the size of the lookup table, and k′ is the auxiliary quantization level of non-transformed coefficient that can be calculated according to formula (37) , as shown below. k′=k+ (k>0? 1: -1) (37) .
[0126] In some implantations, α=63 is used, which gives the lookup table of size 64, as shown below in formula (38) . T= [0, 63, 31, 21, 15, 12, 10, 9, 7, 7, 6, 5, 5, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] (38) .
[0127] If the absolute quantization level of non-transformed coefficient is 0 or above 63, formula (36) is not applied and the default dequantization of formula (6) is used.
[0128] In RRC, the coding process is highly optimised for the purpose of coding transform coefficients. One purpose of applying a transform is to produce energy compaction - that is, the energy of the original residual is compacted into a relatively small number of transform coefficients. This implies that after quantisation, many transform coefficients should be zero in value. To efficiently code this, VVC employs a hierarchical subblock coding scheme. Transform coefficients are grouped into 4x4 subblocks (as shown in FIGs. 7 and 8) , and for each subblock a subblock coded flag (sb_coded_flag) may be signaled or inferred. A subblock coded flag value of 1 indicates that at least one coefficient in the subblock is non-zero, while a value of 0 indicates that all the coefficients are zero.
[0129] As a transform should result in energy compaction, a natural question may be compaction in which coefficients. The application of a transform in VVC typically results in large-valued transform coefficients occurring in a localised (top-left) area of the block. For example, when the DCT is used, the transform coefficients correspond to spatial frequencies of the residual signal. By convention, the coefficients are ordered from low frequency to high frequency, with horizontal frequencies ordering left to right and vertical frequencies ordering top to bottom. That is, the low frequency coefficients both horizontally and vertically are located at the top-left of the block, while the high frequency coefficients both horizontally and vertically are located at the bottom-right of the block. It is known that “natural” (e.g., camera-captured) images have most of their energy concentrated in the low frequencies, and therefore, the coefficients corresponding to these frequencies, which reside in the top-left of the block while have the largest values. Other transforms used in VVC either are similar in behaviour due to also being frequency-based transforms such as the multi transform set (MTS) or are designed to concentrate large-valued coefficients in the same top-left area.
[0130] RRC exploits this localised property of transform coefficients in two ways. Firstly, a hierarchical reverse diagonal scan through the coefficients is defined, which begins at the highest spatial frequencies (the bottom-right of the block) , and ends at the lowest spatial frequencies (the top-left of the block) . This scan order approximately orders the coefficients from low to high magnitude. Entropy coding is performed along the direction of this scan order, which allows efficient adaptation to the changing statistics of the coefficients as they increase in magnitude gradually. Secondly, as it is expected many of the high frequency coefficients are quantized to zero, the position of the last significant coefficient (in the forward direction of the hierarchical diagonal scan) is signaled.
[0131] FIG. 9 illustrates a diagram of a first RRC scan order 900 for a 16x8 residual block, according to some embodiments of the present disclosure. The coefficient positions are each labeled with their order in the forward direction of the hierarchical diagonal scan, so that the top-left most position is labelled 0, and so on. The scan is hierarchical because whenever it enters a subblock (e.g., subblock 1 902a, subblock 2 902b, subblock 3 902c, subblock 4 902d, subblock 5 902e, subblock 6 902f, subblock 7 902g, or subblock 8 902h) it passes through all coefficients of that subblock before continuing to the next subblock. In this non-limiting example, the last significant position is identified at position 72 by signaling the horizontal component of the last significant position (LastSigPosX=10) and the vertical component of the last significant position (LastSigPosY=1) . Then, the hierarchical reverse diagonal scan for this example begins at position 72, and proceeds backward through the numbered positions 71, 70, and so forth, ending at position 0.
[0132] FIG. 10 illustrates a diagram of a second RRC scan order 1000 for a 16x4 residual block, according to some embodiments of the present disclosure. In this non-limiting example, the last significant position is in the same spatial location as in FIG. 9, e.g., that is, at LastSigPosX=10 and LastSigPosY=1. However, its position in the scan order is different because of the arrangement of the subblocks (e.g., subblock 1 1002a, subblock 2 1002b, subblock 3 1002c, and subblock 4 1002d) . The hierarchical reverse diagonal scan for this example begins at position 40, and proceeds backward through the numbered positions 39, 38, and so forth, ending at position 0.
[0133] After the last significant position is signaled, the RRC proceeds with coding the coefficients subblock by subblock in the reverse diagonal scan order. At the start of each subblock, a subblock coded flag (sb_coded_flag) is signaled before any syntax elements for the coefficients themselves within that subblock. A subblock coded flag with value 0 indicates that all the coefficients within that subblock have the value zero and so do not need to be signaled. Conversely, a subblock coded flag with value 1 indicates that there may be coefficients with non-zero values, so some further signaling is performed.
[0134] Because all coefficients after the last significant position must be zero valued, subblock coded flags for subblocks after the last significant position are not signaled. Their values, and the values of the transform coefficients contained in them, can be inferred as zero. The subblock containing the last significant position is guaranteed to contain at least one significant coefficient, so its subblock coded flag also does not need to be signaled and is automatically inferred to have a value of 1. The top-left subblock (e.g., subblock 1 902a in FIG. 9 and subblock 1 1002a in FIG. 10 containing coefficient positions 0-15) is not guaranteed to contain significant coefficients but is highly likely to because it has the lowest frequency coefficients which are most likely to have large magnitude. The top-left subblock is also often referred to as the “DC subblock. ” Then, by design the subblock coded flag corresponding to the DC subblock is also inferred to have a value of 1. All other subblock coded flags are signaled.
[0135] In the non-limiting example of FIG. 9, the subblock coded flags for the subblocks containing coefficient positions 80-95 (subblock 6 902f) , 96-111 (subblock 7 902g) and 112-127 (subblock 8 902h) inclusive are inferred as zero because they are following the last significant position. The subblock coded flag for the subblock containing coefficient positions 64-79 (subblock 5 902e) is inferred as one because it contains the last significant position. Following this inference, the coefficients at positions 64-79 are signalled, starting at the last significant position 72 and progressing backward in the reverse scan order. Next, the subblock coded flag for the subblock containing coefficient positions 48-63 (subblock 4 902d) is signaled. If the subblock coded flag has the value 1, then the corresponding coefficients at positions 48-63 are signaled next. This is repeated for the subblocks containing coefficient positions 32-47 (subblock 3 902c) and 16-31 (subblock 2 902b) in that order (e.g., following the reverse scan order) . Finally, the subblock coded flag for the subblock containing coefficient positions 0-15 is inferred as one, and the coefficients at positions 0-15 are signaled.
[0136] VVC utilises a context adaptive binary arithmetic coder (CABAC) (located in encoding module 320 and decoding module 402) , which can adapt to and efficiently code a variety of syntax elements with different statistical properties. However, CABAC is computationally intensive compared to alternatives such as variable length binarization. For this reason, CABAC is not exclusively used to code syntax elements in VVC. In particular, the coding of residual coefficients occupies a significant portion of the total video bitstream. To ensure real-time encoders and decoders can maintain the throughput of CABAC coding, the extent of CABAC coding is limited for the heaviest burden on CABAC, which is coefficient coding. When encoding, transform coefficients are firstly binarized in a process described in detail below, with the individual bits after binarization referred to as “bins. ” Each bin can then be coded either by the CABAC engine, in which case it is referred to as a “context coded bin, ” or passed through to the bitstream as a bit, in which case it is referred to as a “bypass coded bin. ” The maximum number of bins that are permitted to be context coded bins is referred to as the “CABAC bin budget” or “context coded bin budget” and is set at the residual block level to 1.75 bins per coefficient. For example, the 16x8 residual block of FIG. 9 has a CABAC bin budget of 1.75x16x8 = 224 bins. This limit applies only to syntax elements related to coefficient coding, which are described further below, and not to any other higher level syntax elements. The last significant position syntax elements and the subblock coded flags are not counted by the CABAC bin budget.
[0137] Each transform coefficient can be coded by a mixture of context and bypass coding, depending on the state of the CABAC bin budget and the magnitude of the coefficient itself. This is handled by several coding passes through the subblock, with each pass proceeding through the coefficients of the subblock in the reverse scan order already described above. That is, each coding pass begins at the last coefficient position and progresses backward through the numbered coefficient positions until terminated by some condition or ending at the top-left most coefficient position in the subblock. For the subblock containing the last significant position, the last coefficient position is the last significant position, while for all other subblocks the last coefficient position is the bottom-right most coefficient position. The first two coding passes code the magnitude of the coefficients, while the third and final coding pass codes the sign of the coefficients.
[0138] The first coding pass binarizes and codes context coded syntax elements and proceeds until either the CABAC bin budget is exhausted, or the pass reaches the end of the scan order. At each coefficient position, we first check whether the remaining CABAC bin budget is at least 4 bins. If it is less than 4 bins, then the first coding pass ends and the coefficient position where it has ended is recorded to a variable n. If the remaining CABAC bin budget is at least 4 bins, then the first coding pass can proceed by coding the coefficient at that position with syntax elements as described below. In the case where the first coding pass ends without terminating early (e.g., exhausting the CABAC bin budget) n is set to the value of the top-left coefficient position of the subblock minus one.
[0139] What context coded syntax elements are coded in the first coding pass depends at each coefficient on the magnitude of the coefficient. Firstly, a “significant coefficient flag” (sig_coeff_flag) may be signaled or inferred. This flag has a value of 0 when a current coefficient is zero in magnitude, and a value of 1 when the current coefficient is non-zero. Note that when a subblock coded flag has a value of 0, no further syntax elements are signaled for that subblock, and all sig_coeff_flag syntax elements corresponding to that subblock are inferred as 0. The sig_coeff_flag may be inferred as 1 for other edge cases. For example, at the last significant position the coefficient is already known to be significant and does not need to be signaled. Additionally, if a subblock coded flag has been signaled with a value of 1 but all significant coefficient flags within that subblock have a value of 0 until the final (e.g.., the top-left most) significant coefficient flag for that subblock, that final significant coefficient flag must be inferred as 1. In all other cases, the significant coefficient flag is signalled.
[0140] If the significant coefficient flag is 0, then the coding pass proceeds to the next coefficient, as the current coefficient’s value is already fully determined as zero. However, if the significant coefficient flag is 1, then next, a “greater than one flag” (gt1_flag) is signaled. This flag has a value of 1 when the current coefficient’s magnitude is greater than one, and a value of 0 when the current coefficient’s magnitude is one or less. If the greater than one flag is 0, then the coding pass proceeds to the next coefficient, as the current coefficient’s magnitude is fully determined as one. If the greater than one flag is 1, then two more flags are signaled - a “parity flag, ” and a “greater than three flag” (gt3_flag) .
[0141] The parity flag has a value of 1 when the current coefficient’s magnitude is odd and has a value of 0 when the current coefficient’s magnitude is even. The greater than three flag has a value of 1 when the current coefficient’s magnitude is greater than three, and a value of 0 when the current coefficient’s magnitude is three or less.
[0142] With each flag that is signaled, the remaining CABAC bin budget is decremented by one bin. Note that the remaining CABAC bin budget continues to be tracked and carries across the subblocks of the residual block. The number of context coded bins consumed by each coefficient is equal to the number of flags signaled, which depends on the coefficient’s magnitude. However, the worst case is four bins, which is why the check at the beginning of each coefficient requires at least 4 bins in the remaining CABAC bin budget.
[0143] The second coding pass binarizes and codes with bypass coded bins the remaining portion of the transform coefficient magnitudes that have not already been coded in the first coding pass. The second coding pass is split into two parts. The first part is a pass over the coefficients from the last coefficient position of the subblock until before (not including) coefficient position n. The second part is a pass over the coefficients from position n to the top-left coefficient position in the subblock. The second coding pass can consist of just one of the parts. For example, if the first coding pass is completed without exhausting the CABAC bin budget, then the second coding pass will consist only of the first part. If the CABAC bin budget was already exhausted before the first coding pass began, then the second coding pass will consist only of the second part.
[0144] For each coefficient in the first part of the second coding pass, some part of the current coefficient’s magnitude has already been signaled by the first coding pass. Therefore, in this case, a remainder may be signaled (abs_rem) . No remainder needs to be signaled if the coefficient’s magnitude can be fully determined from the context coded flags already signaled. As shown in Table 1, a remainder needs to be signaled when the greater than three flag has been signaled with a value of 1. Because the parity flag has already been signaled, the remaining part is always even in value. Therefore, abs_rem is signaled as a non-negative integer quantity but then multiplied by two when added to reconstruct the coefficient’s magnitude. abs_rem is binarized with a truncated Rice-Golomb binarization and bypass coded. Table 1: Mapping between RRC coefficient syntax elements and coefficient magnitude
[0145] For each coefficient in the second part of the second coding pass, the first coding pass had already terminated, so all the current coefficient’s magnitude (coded with dec_abs_level) must be determined. dec_abs_level is not signaled and inferred as 0 for coefficients belonging to subblocks with a subblock coded flag of 0. Otherwise, it is binarized with a truncated Rice-Golomb binarization and bypass coded. A variable ZeroPos is first calculated according to formula (39) , depending on the state of DQ (QState) or set as 0 for non-DQ case. ZeroPos [n ] = (QState < 2 ? 1 : 2 ) << cRicePar (39) , where cRicePar is a Rice parameter used to binarize the current level and is calculated with some previous coded information. The real absolute level, AbsLevel, for the current position is calcualted according to fomula (40) shown below. AbsLevel = (dec_abs_level == ZeroPos) ? 0 : ( (dec_abs_level < ZeroPos) ? dec_abs_level [n ] + 1 : dec_abs_level [n ] ) (40) .
[0146] The third coding pass codes the sign bits associated with the transform coefficients. One sign bit is signaled for each non-zero transform coefficient - that is, for each coefficient with a significant coefficient flag with value 1. All the sign bits are bypass coded.
[0147] FIG. 11 illustrates a diagram of a TSRC scan order 1100 with a 16x8 residual block, according to some embodiments of the present disclosure. The TSRC process is optimised for coding residual blocks that do have any transform applied. There are significant differences in the properties of the residual block, as compared to the residual block of RRC. Firstly, because there is no transform applied, there is no reason to expect the energy of the residual signal to be concentrated in the top-left coefficients, or for many coefficients in the bottom-right of the residual block to be quantised to zero. For this reason, the last significant position is not signaled in TSRC. Moreover, at least for intra predicted blocks, the prediction is made using neighbouring samples on the top-left edge of the coding block. On average, the top-left of the coding block may be predicted more accurately, resulting in smaller residual samples in the top-left of the block.
[0148] In TSRC, the residual coefficients are scanned with a hierarchical forward diagonal scan, which begins at the top-left of the block and ends at the bottom-right of the block. In the non-limiting example of FIG. 11, the hierarchical forward diagonal scan begins at position 0, then proceeds forwards through the numbered positions 1, 2, and so forth, ending at position 127.
[0149] Similar to RRC, for each 4x4 group of residual coefficients a subblock coding flag is determined. Unlike RRC, the subblock coding flag for the “DC subblock” is not inferred as 1. The last subblock coded flag (e.g., corresponding to subblock 8 1102h) is inferred as 1 if all other subblock coded flags before the last subblock (e.g., subblock 8 1102h) have a value of 0. Otherwise, the last subblock coded flag is also signaled.
[0150] In the example shown in FIG. 11, the subblock coded flag for the subblock containing coefficient positions 0-15 (subblock 1 1102a) is signalled first. If the subblock coded flag has the value 1, then the corresponding coefficients at positions 0-15 are signalled. This is repeated for the subblocks containing coefficient positions 16-31 (subblock 2 1102b) , 32-47 (subblock 3 1102c) , 48-63 (subblock 4 1102d) , 64-79 (subblock 5 1102e) , 80-95 (subblock 6 1102f) , and 96-111 (subblock 7 1102g) in that order (e.g., following the forward scan order) . Finally, the subblock coded flag for the subblock containing coefficient positions 112-127 (subblock 8 1102h) may be inferred as one if all other subblock coded flags have a value of 0 and is signalled otherwise. If the subblock coded flag has the value 1, the coefficients at positions 112-127 are signalled.
[0151] Like RRC, the TSRC process also codes the residual coefficients with a mixture of context and bypass coding. The amount of context coding allowed is controlled by the CABAC bin budget, which is calculated at the residual block level by the same method as for RRC. TSRC also sets the CABAC bin budget to 1.75 bins per coefficient. The coefficients are visited by several coding passes, with each pass proceeding through the coefficients of the subblock in the hierarchical forward scan order already described for TSRC. That is, each coding pass begins at the top-left most coefficient position in the subblock and progresses forwards through the numbered coefficient positions until terminated by some conditions or ending at the bottom-right most coefficient position in the subblock. The first two coding passes code syntax elements using context coding, while the third and final coding pass uses bypass coding.
[0152] The first coding pass binarizes and codes context syntax elements and proceeds until either the CABAC bin budget is exhausted, or the pass reaches the end of the scan order. At each coefficient position, we first check whether the remaining CABAC bin budget is at least 4 bins. If it is less than 4 bins, then the first coding pass ends and the coefficient position where it has ended is recorded to a variable n. If the remaining CABAC bin budget is at least 4 bins, then the first coding pass can proceed by coding the coefficient at that position with syntax elements as described below. In the case where the first coding pass ends without terminating early (e.g., exhausting the CABAC bin budget) n is set to N, where N is the value of the bottom-right coefficient position of the subblock plus one.
[0153] What context coded bins are coded in the first coding pass depends at each coefficient on the magnitude of the coefficient. Firstly, a “significant coefficient flag” (sig_coeff_flag) may be signaled. This flag has a value of 0 when a current coefficient is zero in magnitude, and a value of 1 when the current coefficient is non-zero. Note that when a subblock coded flag has a value of 0, no further syntax elements are signalled for that subblock, and all sig_coeff_flag syntax elements corresponding to that subblock are inferred as 0. The sig_coeff_flag may be inferred as 1 for other edge cases. For example, if a subblock coded flag has been set to 1 but all significant coefficient flags within that subblock have a value of 0 until the final (e.g., bottom-right most) significant coefficient flag for that subblock, that final significant coefficient flag must be inferred as 1. In all other cases, the significant coefficient flag is signalled.
[0154] If the significant coefficient flag is 0, then the coding pass proceeds to the next coefficient, as the current coefficient’s value is already fully determined as zero. However, if the significant coefficient flag is 1, then two more flags are signaled - a “sign flag” (coeff_sign_flag) and a “greater than one flag” (gt1_flag) . The sign flag indicates the sign of the coefficient. For instance, it has a value of 0 when the coefficient is positive, and a value of 1 when the coefficient is negative. The greater than one flag has a value of 1 when the current coefficient’s magnitude is greater than one, and a value of 0 when the current coefficient’s magnitude is one or less. If the greater than one flag is 0, then the coding pass proceeds to the next coefficient, as the current coefficient’s magnitude is fully determined as one. If the greater than one flag is 1, then a parity flag is finally signaled, and the coding pass proceeds to the next coefficient. The parity flag has a value of 1 when the current coefficient’s magnitude is odd and has a value of 0 when the current coefficient’s magnitude is even.
[0155] With each flag that is signaled, the remaining CABAC bin budget is decremented by one bin. Note that the remaining CABAC bin budget continues to be tracked and carries across the subblocks of the residual block. The number of context coded bins consumed by each coefficient is equal to the number of flags signaled, which depends on the coefficient’s magnitude. However, the worst case is four bins, which is why the check at the beginning of each coefficient requires at least 4 bins in the remaining CABAC bin budget.
[0156] The second coding pass further codes the magnitude of the residual coefficients with context coded bins. As with the first coding pass, at each coefficient position, it is first checked whether the remaining CABAC bin budget is at least 4 bins. If it is less than 4 bins, then the second coding pass ends and the coefficient position where it has ended is recorded to a variable m.If the remaining CABAC bin budget is at least 4 bins, then the second coding pass can proceed by coding the coefficient at that position with syntax elements as described below. In the case where the first coding pass ends without terminating early (e.g., exhausting the CABAC bin budget) m is set to N.
[0157] What context coded bins are coded in the second coding pass depends on each coefficient on the magnitude of the coefficient. Firstly, if either the significant coefficient flag or the greater than one flag for the current coefficient were signaled as 0 in the first coding pass, then the current coefficient’s magnitude is already fully determined, and no further syntax elements need to be signaled. Then, the coding pass proceeds to the next coefficient. Otherwise, up to four “greater than X” flags may be signaled, being “greater than three flag” (gt3_flag) , “greater than five flag” (gt5_flag) , “greater than seven flag” (gt7_flag) , and “greater than nine flag” (gt9_flag) in signaling order. The gt3_flag is signaled first, and each subsequent greater than X flag is signaled if the prior greater than X flag has a value of 1. When any greater than X flag is signaled with a value of 0, or if the greater than nine flag is signaled, the coding pass proceeds to the next coefficient.
[0158] The third coding pass binarizes and codes with bypass coded bins the remaining portion of the residual coefficients that have not already been coded in the first two coding passes. The third coding pass is split into three parts. The first part is a pass over the coefficients from the first (top-left) coefficient until before (not including) coefficient position m. The second part is a pass over the coefficients from position m until before coefficient position n. The third part is a pass over the coefficients from position n to the last (bottom-right) coefficient position. Not all the parts occur in the third coding pass. For example, if the first two coding passes are completed without exhausting the CABAC bin budget, then m=n=N and the third coding pass will consist only of the first part. If the CABAC bin budget was exhausted in the second coding pass, then n= N and the third part of the third coding pass does not occur. If the CABAC bin budget was exhausted in the first coding pass, it will also be exhausted before the second coding pass can begin, so m will be the top-left most coefficient position, and the first part of the third coding pass does not occur.
[0159] A remainder is signaled when the current coefficient’s value has not already been determined by signaled flags. As shown in Table 2, the coefficient can be fully determined if the sig_coeff_flag or any one of the greater than X flags has been signaled with a value of 0. Table 2: Mapping between TSRC coefficient syntax elements and coefficient magnitude
[0160] For each coefficient in the first part of the third coding pass, some part of the current coefficient’s magnitude has been signaled by both the first and second coding passes. In this case a remainder (abs_rem) is signaled when the “greater than nine” flag (gt9_flag) has been signaled with a value of 1. Because the parity flag has already been signaled, the remaining part is always even in value. Therefore, abs_rem is signaled as a non-negative integer quantity but then multiplied by two when added to reconstruct the coefficient’s magnitude. The magnitude is determined as 10 + parity_flag + 2*abs_rem. abs_rem is binarized with a truncated Rice-Golomb binarization and bypass coded.
[0161] For each coefficient in the second part of the third coding pass, some part of the current coefficient’s magnitude has been signaled by the first coding pass, but not by the second coding pass. In this case abs_rem is signaled when the greater than one flag has been signaled with a value of 1. Therefore, abs_rem is signaled as a non-negative integer quantity but then multiplied by two when added to reconstruct the coefficient’s magnitude. The magnitude is determined as 2 + parity flag + 2*abs_rem. abs_rem is binarized with a truncated Rice-Golomb binarization and bypass coded.
[0162] For each coefficient in the third part of the third coding pass, the first coding pass had already terminated, so all the current coefficient’s value must be determined. abs_rem is not signaled and inferred as 0 for coefficients belonging to subblocks with a subblock coded flag of 0. Otherwise, it is binarized with a truncated Rice-Golomb binarization and bypass coded. If abs_rem is signaled, then the sign bit is signaled afterward as a bypass coded bin.
[0163] An RRC process has been proposed for ECM to replace the RRC process used in VVC. In the ECM RRC proposal, the syntax elements used to signal the transform coefficient magnitudes are modified. Higher level aspects of the RRC (e.g., the scan order, subblock coded flag signaling, last significant position signaling) have not been modified. Firstly, the number of greater than X flags is increased to F, where F=7. Secondly, the parity flag is moved in signaling order to after all the greater than X flags, and the parity flag is bypass coded. Because the parity is not known when the greater than X flags are signaled, the greater than X flags must increment by 1 at a time, rather than 2 at a time as in the RRC process of VVC.
[0164] In total, the context coded flags used to signal the transform coefficient magnitude are: significant coefficient flag, (sig_coeff_flag) , greater than one flag (gt1_flag) , greater than two flag, (gt2_flag) , greater than three flag (gt3_flag) , greater than four flag (gt4_flag) , greater than five flag (gt5_flag) , greater than six flag (gt6_flag) , and greater than seven flag (gt7_flag) .
[0165] At each coefficient position in the first coding pass, the new RRC still checks whether the remaining CABAC bin budget is at least 4 bins. If it is less than 4 bins, then the first coding pass ends and the coefficient position where it has ended is recorded to a variable n. If the remaining CABAC bin budget is at least 4 bins, then the first coding pass can proceed by coding the coefficient at that position with syntax elements corresponding to the first coding pass, such as significant coefficient flag, greater than X flags, and parity flag. In the case where the first coding pass ends without terminating early (e.g., exhausting the CABAC bin budget) n is set to the value of the top-left coefficient position minus one.
[0166] The significant coefficient flag may be signaled or inferred. This flag has a value of 0 when a current coefficient is zero in magnitude, and a value of 1 when the current coefficient is non-zero. When a subblock coded flag has a value of 0, no further syntax elements are signalled for that subblock, and all sig_coeff_flag syntax elements corresponding to that subblock are inferred as 0. The sig_coeff_flag may be inferred as 1 for other edge cases. For example, if a subblock coded flag has been signaled with a value of 1 but all significant coefficient flags within that subblock have a value of 0 until the final (e.g., the top-left most) significant coefficient flag for that subblock, that final significant coefficient flag must be inferred as 1. In all other cases the significant coefficient flag is signalled.
[0167] If the significant coefficient flag is 0, then the coding pass proceeds to the next coefficient, as the current coefficient’s value is already fully determined as zero. Otherwise, up to seven “greater than X” flags may be signaled. The “greater than X” flags may include, e.g., “greater than one flag” (gt1_flag) , “greater than two flag” (gt2_flag) , “greater than three flag” (gt3_flag) , “greater than four flag” (gt4_flag) , “greater than five flag” (gt5_flag) , “greater than six flag” (gt6_flag) , and “greater than seven flag” (gt7_flag) in signalling order. The gt1_flag is signalled first, and each subsequent greater than X flag is signalled if the prior greater than X flag has a value of 1. When any greater than X flag is signalled with a value of 0, the coding pass proceeds to the next coefficient. Otherwise, if the greater than seven flag is signalled with a value of 1 (which means all the flags sig_coeff_flag, gt1_flag, … gt7_flag have the value 1) , the parity flag is signalled as a bypass coded bin, and the coding pass proceeds to the next coefficient.
[0168] Each context coded flag that is signalled decrements the remaining CABAC bin budget by one bin. The number of context coded bins consumed by each coefficient is equal to the number of context coded flags signalled, which depends on the coefficient’s magnitude. For the case F=7 and with the parity flag being bypass coded, the worst case is eight context coded bins, which means that the remaining CABAC bin budget could potentially reach a negative value (with the lowest value of -4) .
[0169] Any remaining magnitude after coding the greater than X flags and the parity flag is still signaled with the bypass coded abs_rem syntax element, which is binarized with a truncated Rice-Golomb binarization and signaled in the second coding pass. If the CABAC bin budget was exhausted, then coefficients for which the full magnitude must be signaled, are still signaled with the bypass coded dec_abs_level syntax element.
[0170] The transform coefficient magnitude can be determined by the syntax elements as follows: sig_coeff_flag + gt1_flag + gt2_flag + gt3_flag + gt4_flag + gt5_flag + gt6_flag + gt7_flag + parity_flag + 2*abs_rem, or equivalently, by the mapping shown in Table 3. Table 3: Proposed mapping between RRC coefficient syntax elements and coefficient magnitude
[0171] Existing quantization-center techniques assume that the coding of a smaller quantization level will consume fewer bits compared to the coding of a larger quantization level. However, depending on the location of a given quantization level within a transform unit (TU) , the given quantization level and the quantization level plus one may consume the same number of bits to code. Therefore, quantization-center shifting may bring a negative impact on the dequantization of such a level.
[0172] For some encoders, the cost defined by formulas (7) and (8) may not be used to select quantization levels due to different reasons, e.g., implementation complexity. Instead, formula (1) or a similar strategy is directly used to decide the quantization levels. In other words, only distortion may be used to decide how to quantize a coefficient to a level. As a result, quantization-center shifting may not bring coding benefits in some cases.
[0173] To overcome these and other challenges, the present disclosure proposes that one flag may be added at different syntax levels, e.g., sequence parameter set (SPS) , picture parameter set (PPS) , picture header (PH) , and slice header (SH) to indicate if quantization-center shifting is enabled or disabled. If quantization-center shifting is enabled, quantization-center shifting will be used to modify the dequantization levels from the scalar quantizer or DQ. If quantization-center shifting is disabled, the dequantization levels from scalar quantizer or DQ is directly used as the final dequantization levels.
[0174] When the cost defined by formulas (7) and (8) is used to decide the quantization levels, if the bins / bits from level and level+1 are the same, having a symmetrical quantization error around 0 (midpoint between level and level+1) will actually lead to the best quantization results. In such a case, quantization-center shifting during the decoding process is not necessary. However, if the bits / bins from level and level+1 are not the same, and an encoder decides to use a quantizer with unsymmetric quantization error to achieve an ideal RD cost, then quantization-center shifting during the decoding process is beneficial and can lead to an improved average PSNR. In other words, depending on whether the same amount bits / bins for coding level and level+1 are used, symmetrical / unsymmetric quantization may be used. Therefore, quantization-center shifting may or may not be used to achieve improved coding performance, depending on whether the same amount bits / bins are used for coding level and level+1.
[0175] The present disclosure further proposes that quantization-center shifting may not be used to modify the dequantization level, depending on how many bits / bins are used to code the level and the level equal to level + 1. Let level denote the coded level used to represent the current coefficient within RRC and TSRC. If the numbers of bits or bins coded for the current level and level +1 at the current position within RRC and TSRC are the same, quantization-center shifting is not used to dequantize the current level. Otherwise, if the numbers of bits or bins coded for the current level and level +1 at the current position within RRC and TSRC are different, quantization-center shifting is used to dequantize the current level.
[0176] In one arrangement, the level is k for each quantizer (one quantizer for TSRC, two quantizer Q0 and Q1 for DQ) .
[0177] As one example, for a coded level in the current ECM RRC, if the coded level can be coded (represented) within the first loop without coding a parity flag, e.g., the level is 7 or smaller, it is guaranteed that the numbers of bits / bins for coding level and level +1 are different. Therefore, quantization-center shifting may be used for dequantizing such levels. If the coded level can be coded (represented) within the first loop with a parity flag, e.g., the level is 8 or larger, abs_rem () part will be coded as bypass bins. The numbers of bits / bins used to code level and level +1 may be roughly the same. For example, the remainder part is 0 for coding both 8 and 9. If the abs_rem () parts used to code level and level +1 consume same number of bits / bins, it may be considered that the numbers of bits / bins used to code level and level +1 are the same. Therefore, quantization-center shifting may not used for dequantizing this level. Otherwise, if the abs_rem () parts used to code level and level +1 consume different numbers of bits / bins, quantization-center shifting will be used for dequantizing this level.
[0178] As another example, if a level is coded with dec_abs_level, level and level +1 consume the same number of bins, quantization-center shifting is not used for dequantizing this level. If a level is coded with dec_abs_level, level and level +1 consume different numbers of bins, quantization-center shifting will be used for dequantizing this level.
[0179] In another arrangement, the level is quantization index yi defined as before if DQ is used. Similar to previous arrangements, the numbers of bits / bins for coding level and level +1 will be checked to decide if quantization-center shifting will be used for dequantizing this level.
[0180] Similar to RRC, if the current coded level is level for TSRC, level and level +1 consume the same number of bits / bins, quantization-center shifting is not used for dequantizing this level. If level and level +1 consume different numbers of bins, quantization-center shifting will be used for dequantizing this level.
[0181] When a level is coded with dec_abs_level, an adjustment may be used to restore / reconstruct the real level as shown in formula (39) . Then, the real level is used in formula (s) (12) , (27) , or (29) for quantization-center shifting. Because this real level is not the value to be coded at the bitstream, the value of dec_abs_level may more accurately reflect the corresponding bit consumption. Based upon this observation, the present disclosure proposes that the value of dec_abs_level instead of the real level is used in the calculation for quantization-center shifting if a level is coded with dec_abs_level. More specifically, if a level is coded with dec_abs_level, a modified level, mod_level is calculated for the purpose of quantization-center shifting according to formula (41) , shown below. mod_level = (dec_abs_level == ZeroPos) ? 0 : ( (dec_abs_level == 0) ? (dec_abs_level +1) : dec_abs_level) (41) .
[0182] In another arrangement, the number of bits / bins consumed by coding level and level -1 instead of level and level +1 may be used to check whether quantization-center shifting is applied. If the same amount of bits / bins is consumed by coding level and level-1, the quantization-center shifting is not applied. If the different amounts of bits / bins are consumed by coding level and level-1, the quantization-center shifting is applied. The checking amount of bits / bins consumed by coding level and level -1 can be applied to all of above arrangements.
[0183] FIG. 12 illustrates a flowchart of a first method 1200 of decoding, according to some embodiments of the present disclosure. Method 1200 may be performed by a system, e.g., decoding system 200, decoder 201, just to name a few. Method 1200 may include operations 1202-1212, as described below. It is to be appreciated that some of the steps may be optional (as indicated with dashed lines) , and some of the steps may be performed simultaneously, or in a different order than shown in FIG. 12.
[0184] Referring to FIG. 12, at 1202, whether a first amount of bits or bins associated with coding a coefficient at a first coding level and a second amount of bits or bins associated with coding the coefficient at a second coding level are a same amount may be determined.
[0185] In some implementations, the determining whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount may include determining whether the first coding level is coded without coding a parity flag in a first coding loop. In some implementations, the determining whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount may include, in response to determining the first coding level being coded without the parity flag in the first coding loop, determining the first amount of bits or bins and the second amount of bits or bins are the different amount.
[0186] In some implementations, the determining whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount may include, determining whether the first coding level is coded with coding a parity flag in a first coding loop. In some implementations, the determining whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount may include, in response to determining the first coding level being coded with the parity flag in the first coding loop, determining whether the first amount of bits or bins used to code a first abs_rem () syntax element corresponding to the first coding level and the second amount of bits or bins used to code a second abs_rem () syntax element corresponding the second coding level are the same amount.
[0187] In some implementations, the determining whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount may include determining whether the first amount of bits or bins used to code a first dec_abs_level syntax element corresponding to the first coding level and the second amount of bits or bins used to code a second dec_abs_level syntax element corresponding to the second coding level are the same amount.
[0188] In some implementations, the determining whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount may include determining whether the first amount of bits or bins used to code a first quantization index value corresponding to the first coding level and the second amount of bits or bins used to code a second quantization index value corresponding to the second coding level are the same amount.
[0189] At 1204, in response to the first amount of bits or bins and the second amount of bits or bins being a different amount, quantization-center shifting may be determined to be enabled.
[0190] At 1206, in response to the quantization-center shifting being enabled, a dequantized coefficient may be determined based on the quantization-center shifting.
[0191] In some implementations, in response to the quantization-center shifting being enabled, the determining the dequantized coefficient based on the quantization-center shifting may include determining a modified level (mod_level) based on a decoded dec_abs_level syntax element by solving: mod_level = (dec_abs_level == ZeroPos) ? 0 : ( (dec_abs_level == 0) ? (dec_abs_level +1) : dec_abs_level) . In some implementations, in response to the quantization-center shifting being enabled, the determining the dequantized coefficient based on the quantization-center shifting may include determining the dequantized coefficient based on the modified level.
[0192] In some implementations, the dequantized coefficient may be associated with an RRC mode or a TSRC mode.
[0193] At 1208, in response to the first amount of bits or bins and the second amount of bits or bins being the same amount, quantization-center shifting may be determined to not be enabled.
[0194] At 1210, in response to the quantization-center shifting not being enabled, the dequantized coefficient may be determined based on a default dequantization.
[0195] At 1212, decode a bitstream based on the dequantized coefficient.
[0196] FIG. 13 illustrates a flowchart of a first method 1300 of encoding, according to some embodiments of the present disclosure. Method 1300 may be performed by a system, e.g., encoding system 100, encoder 101, just to name a few. Method 1300 may include operations 1302-1312, as described below. It is to be appreciated that some of the steps may be optional (as indicated with dashed lines) , and some of the steps may be performed simultaneously, or in a different order than shown in FIG. 13.
[0197] Referring to FIG. 13, at 1302, whether a first amount of bits or bins associated with coding a coefficient at a first coding level and a second amount of bits or bins associated with coding the coefficient at a second coding level are a same amount may be determined.
[0198] In some implementations, the determining whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount may include determining whether the first coding level is coded without coding a parity flag in a first coding loop. In some implementations, the determining whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount may include, in response to determining the first coding level being coded without the parity flag in the first coding loop, determining the first amount of bits or bins and the second amount of bits or bins are the different amount.
[0199] In some implementations, the determining whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount may include, determining whether the first coding level is coded with coding a parity flag in a first coding loop. In some implementations, the determining whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount may include, in response to determining the first coding level being coded with the parity flag in the first coding loop, determining whether the first amount of bits or bins used to code a first abs_rem () syntax element corresponding to the first coding level and the second amount of bits or bins used to code a second abs_rem () syntax element corresponding the second coding level are the same amount.
[0200] In some implementations, the determining whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount may include determining whether the first amount of bits or bins used to code a first dec_abs_level syntax element corresponding to the first coding level and the second amount of bits or bins used to code a second dec_abs_level syntax element corresponding to the second coding level are the same amount.
[0201] In some implementations, the determining whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount may include determining whether the first amount of bits or bins used to code a first quantization index value corresponding to the first coding level and the second amount of bits or bins used to code a second quantization index value corresponding to the second coding level are the same amount.
[0202] At 1304, in response to the first amount of bits or bins and the second amount of bits or bins being a different amount, quantization-center shifting may be determined to be enabled.
[0203] At 1306, in response to the quantization-center shifting being enabled, a dequantized coefficient may be determined based on the quantization-center shifting.
[0204] In some implementations, in response to the quantization-center shifting being enabled, the determining the dequantized coefficient based on the quantization-center shifting may include determining a modified level (mod_level) based on an encoded dec_abs_level syntax element by solving: mod_level = (dec_abs_level == ZeroPos) ? 0 : ( (dec_abs_level == 0) ? (dec_abs_level +1) : dec_abs_level) . In some implementations, in response to the quantization-center shifting being enabled, the determining the dequantized coefficient based on the quantization-center shifting may include determining the dequantized coefficient based on the modified level.
[0205] In some implementations, the dequantized coefficient may be associated with an RRC mode or a TSRC mode.
[0206] At 1308, in response to the first amount of bits or bins and the second amount of bits or bins being the same amount, quantization-center shifting may be determined to not be enabled.
[0207] At 1310, in response to the quantization-center shifting not being enabled, the dequantized coefficient may be determined based on a default dequantization.
[0208] At 1313, encode a bitstream based on the dequantized coefficient.
[0209] In various aspects of the present disclosure, the functions described herein may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored as instructions on a non-transitory computer-readable medium. Computer-readable media includes computer storage media. Storage media may be any available media that can be accessed by a processor, such as processor 102 in FIGs. 1 and 2. By way of example, and not limitation, such computer-readable media can include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, HDD, such as magnetic disk storage or other magnetic storage devices, Flash drive, SSD, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and that can be accessed by a processing system, such as a mobile device or a computer. Disk and disc, as used herein, include CD, laser disc, optical disc, digital video disc (DVD) , and floppy disk where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.
[0210] According to one aspect of the present disclosure, a method of decoding by a decoder is provided. The method may include determining, by a processor, whether a first amount of bits or bins associated with coding a coefficient at a first coding level and a second amount of bits or bins associated with coding the coefficient at a second coding level are a same amount. The first coding level and the second coding level may be adjacent coding levels. The method may include, in response to the first amount of bits or bins and the second amount of bits or bins being a different amount, determining, by the processor, quantization-center shifting is enabled. The method may include, in response to the quantization-center shifting being enabled, determining, by the processor, a dequantized coefficient based on the quantization-center shifting. The method may include decoding, by the processor, a bitstream based on the dequantized coefficient.
[0211] In some implementations, the method may include, in response to the first amount of bits or bins and the second amount of bits or bins being the same amount, determining, by the processor, quantization-center shifting is not enabled. In some implementations, the method may include, in response to the quantization-center shifting not being enabled, determining, by the processor, the dequantized coefficient based on a default dequantization.
[0212] In some implementations, the determining, by the processor, whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount may include determining, by the processor, whether the first coding level is coded without coding a parity flag in a first coding loop. In some implementations, the determining, by the processor, whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount may include, in response to determining the first coding level being coded without the parity flag in the first coding loop, determining, by the processor, the first amount of bits or bins and the second amount of bits or bins are the different amount.
[0213] In some implementations, the determining, by the processor, whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount may include, determining, by the processor, whether the first coding level is coded with coding a parity flag in a first coding loop. In some implementations, the determining, by the processor, whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount may include, in response to determining the first coding level being coded with the parity flag in the first coding loop, determining, by the processor, whether the first amount of bits or bins used to code a first abs_rem () syntax element corresponding to the first coding level and the second amount of bits or bins used to code a second abs_rem () syntax element corresponding the second coding level are the same amount.
[0214] In some implementations, the determining, by the processor, whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount may include determining, by the processor, whether the first amount of bits or bins used to code a first dec_abs_level syntax element corresponding to the first coding level and the second amount of bits or bins used to code a second dec_abs_level syntax element corresponding to the second coding level are the same amount.
[0215] In some implementations, in response to the quantization-center shifting being enabled, the determining, by the processor, the dequantized coefficient based on the quantization-center shifting may include determining, by the processor, a modified level (mod_level) based on a decoded dec_abs_level syntax element by solving: mod_level = (dec_abs_level == ZeroPos) ? 0 : ( (dec_abs_level == 0) ? (dec_abs_level +1) : dec_abs_level) . In some implementations, in response to the quantization-center shifting being enabled, the determining, by the processor, the dequantized coefficient based on the quantization-center shifting may include determining, by the processor, the dequantized coefficient based on the modified level.
[0216] In some implementations, the determining, by the processor, whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount may include determining, by the processor, whether the first amount of bits or bins used to code a first quantization index value corresponding to the first coding level and the second amount of bits or bins used to code a second quantization index value corresponding to the second coding level are the same amount.
[0217] In some implementations, the dequantized coefficient may be associated with an RRC mode or a TSRC mode.
[0218] According to another aspect of the present disclosure, a decoder is provided. The decoder may include a processor and memory storing instructions. The memory storing instructions, which when executed by the processor, may cause the processor to determine whether a first amount of bits or bins associated with coding a coefficient at a first coding level and a second amount of bits or bins associated with coding the coefficient at a second coding level are a same amount. The first coding level and the second coding level may be adjacent coding levels. The memory storing instructions, which when executed by the processor, may cause the processor to, in response to the first amount of bits or bins and the second amount of bits or bins being a different amount, determine quantization-center shifting is enabled. The memory storing instructions, which when executed by the processor, may cause the processor to, in response to the quantization-center shifting being enabled, determine a dequantized coefficient based on the quantization-center shifting. The memory storing instructions, which when executed by the processor, may cause the processor to decode a bitstream based on the dequantized coefficient.
[0219] In some implementations, the memory storing instructions, which when executed by the processor, may further cause the processor to, in response to the first amount of bits or bins and the second amount of bits or bins being the same amount, determine quantization-center shifting is not enabled. In some implementations, the memory storing instructions, which when executed by the processor, may further cause the processor to, in response to the quantization-center shifting not being enabled, determine the dequantized coefficient based on a default dequantization.
[0220] In some implementations, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the memory storing instructions, which when executed by the processor, may cause the processor to determine whether the first coding level is coded without coding a parity flag in a first coding loop. In some implementations, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the memory storing instructions, which when executed by the processor, may cause the processor to, in response to determining the first coding level being coded without the parity flag in the first coding loop, determine the first amount of bits or bins and the second amount of bits or bins are the different amount.
[0221] In some implementations, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the memory storing instructions, which when executed by the processor, may cause the processor to, determine whether the first coding level is coded with coding a parity flag in a first coding loop. In some implementations, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the memory storing instructions, which when executed by the processor, may cause the processor to, in response to determining the first coding level being coded with the parity flag in the first coding loop, determine whether the first amount of bits or bins used to code a first abs_rem () syntax element corresponding to the first coding level and the second amount of bits or bins used to code a second abs_rem () syntax element corresponding the second coding level are the same amount.
[0222] In some implementations, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the memory storing instructions, which when executed by the processor, may cause the processor to determine whether the first amount of bits or bins used to code a first dec_abs_level syntax element corresponding to the first coding level and the second amount of bits or bins used to code a second dec_abs_level syntax element corresponding to the second coding level are the same amount.
[0223] In some implementations, in response to the quantization-center shifting being enabled, to determine the dequantized coefficient based on the quantization-center shifting, the memory storing instructions, which when executed by the processor, may cause the processor to determine a modified level (mod_level) based on a decoded dec_abs_level syntax element by solving: mod_level = (dec_abs_level == ZeroPos) ? 0 : ( (dec_abs_level == 0) ? (dec_abs_level +1) : dec_abs_level) . In some implementations, in response to the quantization-center shifting being enabled, to determine the dequantized coefficient based on the quantization-center shifting, the memory storing instructions, which when executed by the processor, may cause the processor to determine the dequantized coefficient based on the modified level.
[0224] In some implementations, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the memory storing instructions, which when executed by the processor, may cause the processor to determine whether the first amount of bits or bins used to code a first quantization index value corresponding to the first coding level and the second amount of bits or bins used to code a second quantization index value corresponding to the second coding level are the same amount.
[0225] In some implementations, the dequantized coefficient may be associated with an RRC mode or a TSRC mode.
[0226] According to a further aspect of the present disclosure, an apparatus for decoding is provided. The apparatus for decoding may include a processor and memory storing instructions. The memory storing instructions, which when executed by the processor, may cause the processor to determine whether a first amount of bits or bins associated with coding a coefficient at a first coding level and a second amount of bits or bins associated with coding the coefficient at a second coding level are a same amount. The first coding level and the second coding level may be adjacent coding levels. The memory storing instructions, which when executed by the processor, may cause the processor to, in response to the first amount of bits or bins and the second amount of bits or bins being a different amount, determine quantization-center shifting is enabled. The memory storing instructions, which when executed by the processor, may cause the processor to, in response to the quantization-center shifting being enabled, determine a dequantized coefficient based on the quantization-center shifting. The memory storing instructions, which when executed by the processor, may cause the processor to decode a bitstream based on the dequantized coefficient.
[0227] According to still another aspect of the present disclosure, a non-transitory computer-readable medium storing instructions for a decoder is provided. The instructions, which when executed by the processor of the decoder, may cause the processor of the decoder to determine whether a first amount of bits or bins associated with coding a coefficient at a first coding level and a second amount of bits or bins associated with coding the coefficient at a second coding level are a same amount. The first coding level and the second coding level may be adjacent coding levels. The instructions, which when executed by the processor of the decoder, may cause the processor of the decoder to, in response to the first amount of bits or bins and the second amount of bits or bins being a different amount, determine quantization-center shifting is enabled. The instructions, which when executed by the processor of the decoder, may cause the processor of the decoder to, in response to the quantization-center shifting being enabled, determine a dequantized coefficient based on the quantization-center shifting. The instructions, which when executed by the processor of the decoder, may cause the processor of the decoder to decode a bitstream based on the dequantized coefficient.
[0228] In some implementations, the instructions, which when executed by the processor of the decoder, may further cause the processor of the decoder to, in response to the first amount of bits or bins and the second amount of bits or bins being the same amount, determine quantization-center shifting is not enabled. In some implementations, the instructions, which when executed by the processor of the decoder, may further cause the processor of the decoder to, in response to the quantization-center shifting not being enabled, determine the dequantized coefficient based on a default dequantization.
[0229] In some implementations, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the instructions, which when executed by the processor of the decoder, may cause the processor of the decoder to determine whether the first coding level is coded without coding a parity flag in a first coding loop. In some implementations, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the instructions, which when executed by the processor of the decoder, may cause the processor of the decoder to, in response to determining the first coding level being coded without the parity flag in the first coding loop, determine the first amount of bits or bins and the second amount of bits or bins are the different amount.
[0230] In some implementations, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the instructions, which when executed by the processor of the decoder, may cause the processor of the decoder to, determine whether the first coding level is coded with coding a parity flag in a first coding loop. In some implementations, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the instructions, which when executed by the processor of the decoder, may cause the processor of the decoder to, in response to determining the first coding level being coded with the parity flag in the first coding loop, determine whether the first amount of bits or bins used to code a first abs_rem () syntax element corresponding to the first coding level and the second amount of bits or bins used to code a second abs_rem () syntax element corresponding the second coding level are the same amount.
[0231] In some implementations, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the instructions, which when executed by the processor of the decoder, may cause the processor of the decoder to determine whether the first amount of bits or bins used to code a first dec_abs_level syntax element corresponding to the first coding level and the second amount of bits or bins used to code a second dec_abs_level syntax element corresponding to the second coding level are the same amount.
[0232] In some implementations, in response to the quantization-center shifting being enabled, to determine the dequantized coefficient based on the quantization-center shifting, the instructions, which when executed by the processor of the decoder, may cause the processor of the decoder to determine a modified level (mod_level) based on a decoded dec_abs_level syntax element by solving: mod_level = (dec_abs_level == ZeroPos) ? 0 : ( (dec_abs_level == 0) ? (dec_abs_level +1) : dec_abs_level) . In some implementations, in response to the quantization-center shifting being enabled, to determine the dequantized coefficient based on the quantization-center shifting, the instructions, which when executed by the processor of the decoder, may cause the processor of the decoder to determine the dequantized coefficient based on the modified level.
[0233] In some implementations, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the instructions, which when executed by the processor of the decoder, may cause the processor of the decoder to determine whether the first amount of bits or bins used to code a first quantization index value corresponding to the first coding level and the second amount of bits or bins used to code a second quantization index value corresponding to the second coding level are the same amount.
[0234] In some implementations, the dequantized coefficient may be associated with an RRC mode or a TSRC mode.
[0235] According to one aspect of the present disclosure, a method of encoding by an encoder is provided. The method may include determining, by a processor, whether a first amount of bits or bins associated with coding a coefficient at a first coding level and a second amount of bits or bins associated with coding the coefficient at a second coding level are a same amount. The first coding level and the second coding level may be adjacent coding levels. The method may include, in response to the first amount of bits or bins and the second amount of bits or bins being a different amount, determining, by the processor, quantization-center shifting is enabled. The method may include, in response to the quantization-center shifting being enabled, determining, by the processor, a dequantized coefficient based on the quantization-center shifting. The method may include encoding, by the processor, a bitstream based on the dequantized coefficient.
[0236] In some implementations, the method may include, in response to the first amount of bits or bins and the second amount of bits or bins being the same amount, determining, by the processor, quantization-center shifting is not enabled. In some implementations, the method may include, in response to the quantization-center shifting not being enabled, determining, by the processor, the dequantized coefficient based on a default dequantization. In some implementations, the determining, by the processor, whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount may include determining, by the processor, whether the first coding level is coded without coding a parity flag in a first coding loop. In some implementations, the determining, by the processor, whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount may include, in response to determining the first coding level being coded without the parity flag in the first coding loop, determining, by the processor, the first amount of bits or bins and the second amount of bits or bins are the different amount.
[0237] In some implementations, the determining, by the processor, whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount may include, determining, by the processor, whether the first coding level is coded with coding a parity flag in a first coding loop. In some implementations, the determining, by the processor, whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount may include, in response to determining the first coding level being coded with the parity flag in the first coding loop, determining, by the processor, whether the first amount of bits or bins used to code a first abs_rem () syntax element corresponding to the first coding level and the second amount of bits or bins used to code a second abs_rem () syntax element corresponding the second coding level are the same amount.
[0238] In some implementations, the determining, by the processor, whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount may include determining, by the processor, whether the first amount of bits or bins used to code a first dec_abs_level syntax element corresponding to the first coding level and the second amount of bits or bins used to code a second dec_abs_level syntax element corresponding to the second coding level are the same amount.
[0239] In some implementations, in response to the quantization-center shifting being enabled, the determining, by the processor, the dequantized coefficient based on the quantization-center shifting may include determining, by the processor, a modified level (mod_level) based on a encoded dec_abs_level syntax element by solving: mod_level = (dec_abs_level == ZeroPos) ? 0 : ( (dec_abs_level == 0) ? (dec_abs_level +1) : dec_abs_level) . In some implementations, in response to the quantization-center shifting being enabled, the determining, by the processor, the dequantized coefficient based on the quantization-center shifting may include determining, by the processor, the dequantized coefficient based on the modified level.
[0240] In some implementations, the determining, by the processor, whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount may include determining, by the processor, whether the first amount of bits or bins used to code a first quantization index value corresponding to the first coding level and the second amount of bits or bins used to code a second quantization index value corresponding to the second coding level are the same amount.
[0241] In some implementations, the dequantized coefficient may be associated with an RRC mode or a TSRC mode.
[0242] According to another aspect of the present disclosure, an encoder is provided. The encoder may include a processor and memory storing instructions. The memory storing instructions, which when executed by the processor, may cause the processor to determine whether a first amount of bits or bins associated with coding a coefficient at a first coding level and a second amount of bits or bins associated with coding the coefficient at a second coding level are a same amount. The first coding level and the second coding level may be adjacent coding levels. The memory storing instructions, which when executed by the processor, may cause the processor to, in response to the first amount of bits or bins and the second amount of bits or bins being a different amount, determine quantization-center shifting is enabled. The memory storing instructions, which when executed by the processor, may cause the processor to, in response to the quantization-center shifting being enabled, determine a dequantized coefficient based on the quantization-center shifting. The memory storing instructions, which when executed by the processor, may cause the processor to encode a bitstream based on the dequantized coefficient.
[0243] In some implementations, the memory storing instructions, which when executed by the processor, may further cause the processor to, in response to the first amount of bits or bins and the second amount of bits or bins being the same amount, determine quantization-center shifting is not enabled. In some implementations, the memory storing instructions, which when executed by the processor, may further cause the processor to, in response to the quantization-center shifting not being enabled, determine the dequantized coefficient based on a default dequantization.
[0244] In some implementations, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the memory storing instructions, which when executed by the processor, may cause the processor to determine whether the first coding level is coded without coding a parity flag in a first coding loop. In some implementations, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the memory storing instructions, which when executed by the processor, may cause the processor to, in response to determining the first coding level being coded without the parity flag in the first coding loop, determine the first amount of bits or bins and the second amount of bits or bins are the different amount.
[0245] In some implementations, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the memory storing instructions, which when executed by the processor, may cause the processor to, determine whether the first coding level is coded with coding a parity flag in a first coding loop. In some implementations, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the memory storing instructions, which when executed by the processor, may cause the processor to, in response to determining the first coding level being coded with the parity flag in the first coding loop, determine whether the first amount of bits or bins used to code a first abs_rem () syntax element corresponding to the first coding level and the second amount of bits or bins used to code a second abs_rem () syntax element corresponding the second coding level are the same amount.
[0246] In some implementations, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the memory storing instructions, which when executed by the processor, may cause the processor to determine whether the first amount of bits or bins used to code a first dec_abs_level syntax element corresponding to the first coding level and the second amount of bits or bins used to code a second dec_abs_level syntax element corresponding to the second coding level are the same amount.
[0247] In some implementations, in response to the quantization-center shifting being enabled, to determine the dequantized coefficient based on the quantization-center shifting, the memory storing instructions, which when executed by the processor, may cause the processor to determine a modified level (mod_level) based on a encoded dec_abs_level syntax element by solving: mod_level = (dec_abs_level == ZeroPos) ? 0 : ( (dec_abs_level == 0) ? (dec_abs_level +1) : dec_abs_level) . In some implementations, in response to the quantization-center shifting being enabled, to determine the dequantized coefficient based on the quantization-center shifting, the memory storing instructions, which when executed by the processor, may cause the processor to determine the dequantized coefficient based on the modified level.
[0248] In some implementations, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the memory storing instructions, which when executed by the processor, may cause the processor to determine whether the first amount of bits or bins used to code a first quantization index value corresponding to the first coding level and the second amount of bits or bins used to code a second quantization index value corresponding to the second coding level are the same amount.
[0249] In some implementations, the dequantized coefficient may be associated with an RRC mode or a TSRC mode.
[0250] According to a further aspect of the present disclosure, an apparatus for encoding is provided. The apparatus for encoding may include a processor and memory storing instructions. The memory storing instructions, which when executed by the processor, may cause the processor to determine whether a first amount of bits or bins associated with coding a coefficient at a first coding level and a second amount of bits or bins associated with coding the coefficient at a second coding level are a same amount. The first coding level and the second coding level may be adjacent coding levels. The memory storing instructions, which when executed by the processor, may cause the processor to, in response to the first amount of bits or bins and the second amount of bits or bins being a different amount, determine quantization-center shifting is enabled. The memory storing instructions, which when executed by the processor, may cause the processor to, in response to the quantization-center shifting being enabled, determine a dequantized coefficient based on the quantization-center shifting. The memory storing instructions, which when executed by the processor, may cause the processor to encode a bitstream based on the dequantized coefficient.
[0251] According to still another aspect of the present disclosure, a non-transitory computer-readable medium storing instructions for an encoder is provided. The instructions, which when executed by the processor of the encoder, may cause the processor of the encoder to determine whether a first amount of bits or bins associated with coding a coefficient at a first coding level and a second amount of bits or bins associated with coding the coefficient at a second coding level are a same amount. The first coding level and the second coding level may be adjacent coding levels. The instructions, which when executed by the processor of the encoder, may cause the processor of the encoder to, in response to the first amount of bits or bins and the second amount of bits or bins being a different amount, determine quantization-center shifting is enabled. The instructions, which when executed by the processor of the encoder, may cause the processor of the encoder to, in response to the quantization-center shifting being enabled, determine a dequantized coefficient based on the quantization-center shifting. The instructions, which when executed by the processor of the encoder, may cause the processor of the encoder to encode a bitstream based on the dequantized coefficient.
[0252] In some implementations, the instructions, which when executed by the processor of the encoder, may further cause the processor of the encoder to, in response to the first amount of bits or bins and the second amount of bits or bins being the same amount, determine quantization-center shifting is not enabled. In some implementations, the instructions, which when executed by the processor of the encoder, may further cause the processor of the encoder to, in response to the quantization-center shifting not being enabled, determine the dequantized coefficient based on a default dequantization.
[0253] In some implementations, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the instructions, which when executed by the processor of the encoder, may cause the processor of the encoder to determine whether the first coding level is coded without coding a parity flag in a first coding loop. In some implementations, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the instructions, which when executed by the processor of the encoder, may cause the processor of the encoder to, in response to determining the first coding level being coded without the parity flag in the first coding loop, determine the first amount of bits or bins and the second amount of bits or bins are the different amount.
[0254] In some implementations, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the instructions, which when executed by the processor of the decoder, may cause the processor of the decoder to, determine whether the first coding level is coded with coding a parity flag in a first coding loop. In some implementations, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the instructions, which when executed by the processor of the decoder, may cause the processor of the decoder to, in response to determining the first coding level being coded with the parity flag in the first coding loop, determine whether the first amount of bits or bins used to code a first abs_rem () syntax element corresponding to the first coding level and the second amount of bits or bins used to code a second abs_rem () syntax element corresponding the second coding level are the same amount.
[0255] In some implementations, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the instructions, which when executed by the processor of the encoder, may cause the processor of the encoder to determine whether the first amount of bits or bins used to code a first dec_abs_level syntax element corresponding to the first coding level and the second amount of bits or bins used to code a second dec_abs_level syntax element corresponding to the second coding level are the same amount.
[0256] In some implementations, in response to the quantization-center shifting being enabled, to determine the dequantized coefficient based on the quantization-center shifting, the instructions, which when executed by the processor of the encoder, may cause the processor of the encoder to determine a modified level (mod_level) based on a encoded dec_abs_level syntax element by solving: mod_level = (dec_abs_level == ZeroPos) ? 0 : ( (dec_abs_level == 0) ? (dec_abs_level +1) : dec_abs_level) . In some implementations, in response to the quantization-center shifting being enabled, to determine the dequantized coefficient based on the quantization-center shifting, the instructions, which when executed by the processor of the encoder, may cause the processor of the encoder to determine the dequantized coefficient based on the modified level.
[0257] In some implementations, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the instructions, which when executed by the processor of the encoder, may cause the processor of the encoder to determine whether the first amount of bits or bins used to code a first quantization index value corresponding to the first coding level and the second amount of bits or bins used to code a second quantization index value corresponding to the second coding level are the same amount.
[0258] In some implementations, the dequantized coefficient may be associated with an RRC mode or a TSRC mode.
[0259] According to still another aspect of the present disclosure, a non-transitory computer-readable medium storing a bitstream generated based on one or more of the operations described herein is provided.
[0260] According to yet a further aspect of the present disclosure, a method of transmitting a bitstream is provided. The method may include generating, by a processor, a bitstream based on one or more of the operations described herein. The method may include transmitting, by the processor, the bitstream.
[0261] The foregoing description of the embodiments will so reveal the general nature of the present disclosure that others can, by applying knowledge within the skill of the art, readily modify and / or adapt for various applications such embodiments, without undue experimentation, without departing from the general concept of the present disclosure. Therefore, such adaptations and modifications are intended to be within the meaning and range of equivalents of the disclosed embodiments, based on the teaching and guidance presented herein. It is to be understood that the phraseology or terminology herein is for the purpose of description and not of limitation, such that the terminology or phraseology of the present specification is to be interpreted by the skilled artisan in light of the teachings and guidance.
[0262] Embodiments of the present disclosure have been described above with the aid of functional building blocks illustrating the implementation of specified functions and relationships thereof. The boundaries of these functional building blocks have been arbitrarily defined herein for the convenience of the description. Alternate boundaries can be defined so long as the specified functions and relationships thereof are appropriately performed.
[0263] The Summary and Abstract sections may set forth one or more but not all exemplary embodiments of the present disclosure as contemplated by the inventor (s) , and thus, are not intended to limit the present disclosure and the appended claims in any way.
[0264] Various functional blocks, modules, and steps are disclosed above. The arrangements provided are illustrative and without limitation. Accordingly, the functional blocks, modules, and steps may be reordered or combined in different ways than in the examples provided above. Likewise, some embodiments include only a subset of the functional blocks, modules, and steps, and any such subset is permitted.
[0265] The breadth and scope of the present disclosure should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.
Claims
1.A method of decoding by a decoder, comprising:determining, by a processor, whether a first amount of bits or bins associated with coding a coefficient at a first coding level and a second amount of bits or bins associated with coding the coefficient at a second coding level are a same amount, the first coding level and the second coding level being adjacent coding levels;in response to the first amount of bits or bins and the second amount of bits or bins being a different amount, determining, by the processor, quantization-center shifting is enabled;in response to the quantization-center shifting being enabled, determining, by the processor, a dequantized coefficient based on the quantization-center shifting; anddecoding, by the processor, a bitstream based on the dequantized coefficient.2.The method of claim 1, further comprising:in response to the first amount of bits or bins and the second amount of bits or bins being the same amount, determining, by the processor, quantization-center shifting is not enabled; andin response to the quantization-center shifting not being enabled, determining, by the processor, the dequantized coefficient based on a default dequantization.3.The method of claim 1, wherein the determining, by the processor, whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount comprises:determining, by the processor, whether the first coding level is coded without coding a parity flag in a first coding loop; andin response to determining the first coding level being coded without the parity flag in the first coding loop, determining, by the processor, the first amount of bits or bins and the second amount of bits or bins are the different amount.4.The method of claim 1, wherein the determining, by the processor, whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount comprises:determining, by the processor, whether the first coding level is coded with coding a parity flag in a first coding loop; andin response to determining the first coding level being coded with the parity flag in the first coding loop, determining, by the processor, whether the first amount of bits or bins used to code a first abs_rem () syntax element corresponding to the first coding level and the second amount of bits or bins used to code a second abs_rem () syntax element corresponding the second coding level are the same amount.5.The method of claim 1, wherein the determining, by the processor, whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount comprises:determining, by the processor, whether the first amount of bits or bins used to code a first dec_abs_level syntax element corresponding to the first coding level and the second amount of bits or bins used to code a second dec_abs_level syntax element corresponding to the second coding level are the same amount.6.The method of claim 5, wherein, in response to the quantization-center shifting being enabled, the determining, by the processor, the dequantized coefficient based on the quantization-center shifting comprises:determining, by the processor, a modified level (mod_level) based on a decoded dec_abs_level syntax element by solving: mod_level = (dec_abs_level == ZeroPos) ? 0 : ( (dec_abs_level == 0) ? (dec_abs_level +1) : dec_abs_level) ; anddetermining, by the processor, the dequantized coefficient based on the modified level.7.The method of claim 1, wherein the determining, by the processor, whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount comprises:determining, by the processor, whether the first amount of bits or bins used to code a first quantization index value corresponding to the first coding level and the second amount of bits or bins used to code a second quantization index value corresponding to the second coding level are the same amount.8.The method of claim 1, wherein the dequantized coefficient is associated with a regular residual coding (RRC) mode or a transform skip residual coding (TSRC) mode.9.A decoder, comprising:a processor; andmemory storing instructions, which when executed by the processor, cause the processor to:determine whether a first amount of bits or bins associated with coding a coefficient at a first coding level and a second amount of bits or bins associated with coding the coefficient at a second coding level are a same amount, the first coding level and the second coding level being adjacent coding levels;in response to the first amount of bits or bins and the second amount of bits or bins being a different amount, determine quantization-center shifting is enabled;in response to the quantization-center shifting being enabled, determine a dequantized coefficient based on the quantization-center shifting; anddecode a bitstream based on the dequantized coefficient.10.The decoder of claim 9, wherein the memory storing instructions, which when executed by the processor, further cause the processor to:in response to the first amount of bits or bins and the second amount of bits or bins being the same amount, determine quantization-center shifting is not enabled; andin response to the quantization-center shifting not being enabled, determine the dequantized coefficient based on a default dequantization.11.The decoder of claim 9, wherein, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the memory storing instructions, which when executed by the processor, cause the processor to:determine whether the first coding level is coded without coding a parity flag in a first coding loop; andin response to determining the first coding level being coded without the parity flag in the first coding loop, determine the first amount of bits or bins and the second amount of bits or bins are the different amount.12.The decoder of claim 9, wherein, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the memory storing instructions, which when executed by the processor, cause the processor to:determine whether the first coding level is coded with coding a parity flag in a first coding loop; andin response to determining the first coding level being coded with the parity flag in the first coding loop, determine whether the first amount of bits or bins used to code a first abs_rem () syntax element corresponding to the first coding level and the second amount of bits or bins used to code a second abs_rem () syntax element corresponding the second coding level are the same amount.13.The decoder of claim 9, wherein, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the memory storing instructions, which when executed by the processor, cause the processor to:determine whether the first amount of bits or bins used to code a first dec_abs_level syntax element corresponding to the first coding level and the second amount of bits or bins used to code a second dec_abs_level syntax element corresponding to the second coding level are the same amount.14.The decoder of claim 13, wherein, in response to the quantization-center shifting being enabled, to determine the dequantized coefficient based on the quantization-center shifting, the memory storing instructions, which when executed by the processor, cause the processor to:determine a modified level (mod_level) based on a decoded dec_abs_level syntax element by solving: mod_level = (dec_abs_level == ZeroPos) ? 0 : ( (dec_abs_level == 0) ? (dec_abs_level +1) : dec_abs_level) ; anddetermine the dequantized coefficient based on the modified level.15.The decoder of claim 9, wherein, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the memory storing instructions, which when executed by the processor, cause the processor to:determine whether the first amount of bits or bins used to code a first quantization index value corresponding to the first coding level and the second amount of bits or bins used to code a second quantization index value corresponding to the second coding level are the same amount.16.The decoder of claim 9, wherein the dequantized coefficient is associated with a regular residual coding (RRC) mode or a transform skip residual coding (TSRC) mode.17.An apparatus for decoding, comprising:a processor; andmemory storing instructions, which when executed by the processor, cause the processor to:determine whether a first amount of bits or bins associated with coding a coefficient at a first coding level and a second amount of bits or bins associated with coding the coefficient at a second coding level are a same amount, the first coding level and the second coding level being adjacent coding levels;in response to the first amount of bits or bins and the second amount of bits or bins being a different amount, determine quantization-center shifting is enabled;in response to the quantization-center shifting being enabled, determine a dequantized coefficient based on the quantization-center shifting; anddecode a bitstream based on the dequantized coefficient.18.A non-transitory computer-readable medium storing instructions, which when executed by a processor of a decoder, cause the processor of the decoder to:determine whether a first amount of bits or bins associated with coding a coefficient at a first coding level and a second amount of bits or bins associated with coding the coefficient at a second coding level are a same amount, the first coding level and the second coding level being adjacent coding levels;in response to the first amount of bits or bins and the second amount of bits or bins being a different amount, determine quantization-center shifting is enabled;in response to the quantization-center shifting being enabled, determine a dequantized coefficient based on the quantization-center shifting; anddecode a bitstream based on the dequantized coefficient.19.The non-transitory computer-readable medium of claim 18, wherein the instructions, which when executed by the processor of the decoder, further cause the processor of the decoder to:in response to the first amount of bits or bins and the second amount of bits or bins being the same amount, determine quantization-center shifting is not enabled; andin response to the quantization-center shifting not being enabled, determine the dequantized coefficient based on a default dequantization.20.The non-transitory computer-readable medium of claim 18, wherein, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the instructions, which when executed by the processor of the decoder, cause the processor of the decoder to:determine whether the first coding level is coded without coding a parity flag in a first coding loop; andin response to determining the first coding level being coded without the parity flag in the first coding loop, determine the first amount of bits or bins and the second amount of bits or bins are the different amount.21.The non-transitory computer-readable medium of claim 18, wherein, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the instructions, which when executed by the processor of the decoder, cause the processor of the decoder to:determine whether the first coding level is coded with coding a parity flag in a first coding loop; andin response to determining the first coding level being coded with the parity flag in the first coding loop, determine whether the first amount of bits or bins used to code a first abs_rem () syntax element corresponding to the first coding level and the second amount of bits or bins used to code a second abs_rem () syntax element corresponding the second coding level are the same amount.22.The non-transitory computer-readable medium of claim 18, wherein, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the instructions, which when executed by the processor of the decoder, cause the processor of the decoder to:determine whether the first amount of bits or bins used to code a first dec_abs_level syntax element corresponding to the first coding level and the second amount of bits or bins used to code a second dec_abs_level syntax element corresponding to the second coding level are the same amount.23.The non-transitory computer-readable medium of claim 22, wherein, in response to the quantization-center shifting being enabled, to determine the dequantized coefficient based on the quantization-center shifting, the instructions, which when executed by the processor of the decoder, cause the processor of the decoder to:determine a modified level (mod_level) based on a decoded dec_abs_level syntax element by solving: mod_level = (dec_abs_level == ZeroPos) ? 0 : ( (dec_abs_level == 0) ? (dec_abs_level +1) : dec_abs_level) ; anddetermine the dequantized coefficient based on the modified level.24.The non-transitory computer-readable medium of claim 18, wherein, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the instructions, which when executed by the processor of the decoder, cause the processor of the decoder to:determine whether the first amount of bits or bins used to code a first quantization index value corresponding to the first coding level and the second amount of bits or bins used to code a second quantization index value corresponding to the second coding level are the same amount.25.The non-transitory computer-readable medium of claim 18, wherein the dequantized coefficient is associated with a regular residual coding (RRC) mode or a transform skip residual coding (TSRC) mode.26.A method of encoding by an encoder, comprising:determining, by a processor, whether a first amount of bits or bins associated with coding a coefficient at a first coding level and a second amount of bits or bins associated with coding the coefficient at a second coding level are a same amount, the first coding level and the second coding level being adjacent coding levels;in response to the first amount of bits or bins and the second amount of bits or bins being a different amount, determining, by the processor, quantization-center shifting is enabled;in response to the quantization-center shifting being enabled, determining, by the processor, a dequantized coefficient based on the quantization-center shifting; andencoding, by the processor, a bitstream based on the dequantized coefficient.27.The method of claim 26, further comprising:in response to the first amount of bits or bins and the second amount of bits or bins being the same amount, determining, by the processor, quantization-center shifting is not enabled; andin response to the quantization-center shifting not being enabled, determining, by the processor, the dequantized coefficient based on a default dequantization.28.The method of claim 26, wherein the determining, by the processor, whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount comprises:determining, by the processor, whether the first coding level is coded without coding a parity flag in a first coding loop; andin response to determining the first coding level being coded without the parity flag in the first coding loop, determining, by the processor, the first amount of bits or bins and the second amount of bits or bins are the different amount.29.The method of claim 26, wherein the determining, by the processor, whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount comprises:determining, by the processor, whether the first coding level is coded with coding a parity flag in a first coding loop; andin response to determining the first coding level being coded with the parity flag in the first coding loop, determining, by the processor, whether the first amount of bits or bins used to code a first abs_rem () syntax element corresponding to the first coding level and the second amount of bits or bins used to code a second abs_rem () syntax element corresponding the second coding level are the same amount.30.The method of claim 26, wherein the determining, by the processor, whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount comprises:determining, by the processor, whether the first amount of bits or bins used to code a first dec_abs_level syntax element corresponding to the first coding level and the second amount of bits or bins used to code a second dec_abs_level syntax element corresponding to the second coding level are the same amount.31.The method of claim 30, wherein, in response to the quantization-center shifting being enabled, the determining, by the processor, the dequantized coefficient based on the quantization-center shifting comprises:determining, by the processor, a modified level (mod_level) based on a encoded dec_abs_level syntax element by solving: mod_level = (dec_abs_level == ZeroPos) ? 0 : ( (dec_abs_level == 0) ? (dec_abs_level +1) : dec_abs_level) ; anddetermining, by the processor, the dequantized coefficient based on the modified level.32.The method of claim 26, wherein the determining, by the processor, whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount comprises:determining, by the processor, whether the first amount of bits or bins used to code a first quantization index value corresponding to the first coding level and the second amount of bits or bins used to code a second quantization index value corresponding to the second coding level are the same amount.33.The method of claim 26, wherein the dequantized coefficient is associated with a regular residual coding (RRC) mode or a transform skip residual coding (TSRC) mode.34.An encoder, comprising:a processor; andmemory storing instructions, which when executed by the processor, cause the processor to:determine whether a first amount of bits or bins associated with coding a coefficient at a first coding level and a second amount of bits or bins associated with coding the coefficient at a second coding level are a same amount, the first coding level and the second coding level being adjacent coding levels;in response to the first amount of bits or bins and the second amount of bits or bins being a different amount, determine quantization-center shifting is enabled;in response to the quantization-center shifting being enabled, determine a dequantized coefficient based on the quantization-center shifting; andencode a bitstream based on the dequantized coefficient.35.The encoder of claim 34, wherein the memory storing instructions, which when executed by the processor, further cause the processor to:in response to the first amount of bits or bins and the second amount of bits or bins being the same amount, determine quantization-center shifting is not enabled; andin response to the quantization-center shifting not being enabled, determine the dequantized coefficient based on a default dequantization.36.The encoder of claim 34, wherein, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the memory storing instructions, which when executed by the processor, cause the processor to:determine whether the first coding level is coded without coding a parity flag in a first coding loop; andin response to determining the first coding level being coded without the parity flag in the first coding loop, determine the first amount of bits or bins and the second amount of bits or bins are the different amount.37.The encoder of claim 34, wherein, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the memory storing instructions, which when executed by the processor, cause the processor to:determine whether the first coding level is coded with coding a parity flag in a first coding loop; andin response to determining the first coding level being coded with the parity flag in the first coding loop, determine whether the first amount of bits or bins used to code a first abs_rem () syntax element corresponding to the first coding level and the second amount of bits or bins used to code a second abs_rem () syntax element corresponding the second coding level are the same amount.38.The encoder of claim 34, wherein, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the memory storing instructions, which when executed by the processor, cause the processor to:determine whether the first amount of bits or bins used to code a first dec_abs_level syntax element corresponding to the first coding level and the second amount of bits or bins used to code a second dec_abs_level syntax element corresponding to the second coding level are the same amount.39.The encoder of claim 38, wherein, in response to the quantization-center shifting being enabled, to determine the dequantized coefficient based on the quantization-center shifting, the memory storing instructions, which when executed by the processor, cause the processor to:determine a modified level (mod_level) based on a encoded dec_abs_level syntax element by solving: mod_level = (dec_abs_level == ZeroPos) ? 0 : ( (dec_abs_level == 0) ? (dec_abs_level +1) : dec_abs_level) ; anddetermine the dequantized coefficient based on the modified level.40.The encoder of claim 34, wherein, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the memory storing instructions, which when executed by the processor, cause the processor to:determine whether the first amount of bits or bins used to code a first quantization index value corresponding to the first coding level and the second amount of bits or bins used to code a second quantization index value corresponding to the second coding level are the same amount.41.The encoder of claim 34, wherein the dequantized coefficient is associated with a regular residual coding (RRC) mode or a transform skip residual coding (TSRC) mode.42.An apparatus for encoding, comprising:a processor; andmemory storing instructions, which when executed by the processor, cause the processor to:determine whether a first amount of bits or bins associated with coding a coefficient at a first coding level and a second amount of bits or bins associated with coding the coefficient at a second coding level are a same amount, the first coding level and the second coding level being adjacent coding levels;in response to the first amount of bits or bins and the second amount of bits or bins being a different amount, determine quantization-center shifting is enabled;in response to the quantization-center shifting being enabled, determine a dequantized coefficient based on the quantization-center shifting; andencode a bitstream based on the dequantized coefficient.43.A non-transitory computer-readable medium storing instructions, which when executed by a processor of an encoder, cause the processor of the encoder to:determine whether a first amount of bits or bins associated with coding a coefficient at a first coding level and a second amount of bits or bins associated with coding the coefficient at a second coding level are a same amount, the first coding level and the second coding level being adjacent coding levels;in response to the first amount of bits or bins and the second amount of bits or bins being a different amount, determine quantization-center shifting is enabled;in response to the quantization-center shifting being enabled, determine a dequantized coefficient based on the quantization-center shifting; andencode a bitstream based on the dequantized coefficient.44.The non-transitory computer-readable medium of claim 43, wherein the instructions, which when executed by the processor of the encoder, further cause the processor of the encoder to:in response to the first amount of bits or bins and the second amount of bits or bins being the same amount, determine quantization-center shifting is not enabled; andin response to the quantization-center shifting not being enabled, determine the dequantized coefficient based on a default dequantization.45.The non-transitory computer-readable medium of claim 43, wherein, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the instructions, which when executed by the processor of the encoder, cause the processor of the encoder to:determine whether the first coding level is coded without coding a parity flag in a first coding loop; andin response to determining the first coding level being coded without the parity flag in the first coding loop, determine the first amount of bits or bins and the second amount of bits or bins are the different amount.46.The non-transitory computer-readable medium of claim 43, wherein, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the instructions, which when executed by the processor of the encoder, cause the processor of the encoder to:determine whether the first coding level is coded with coding a parity flag in a first coding loop; andin response to determining the first coding level being coded with the parity flag in the first coding loop, determine whether the first amount of bits or bins used to code a first abs_rem () syntax element corresponding to the first coding level and the second amount of bits or bins used to code a second abs_rem () syntax element corresponding the second coding level are the same amount.47.The non-transitory computer-readable medium of claim 43, wherein, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the instructions, which when executed by the processor of the encoder, cause the processor of the encoder to:determine whether the first amount of bits or bins used to code a first dec_abs_level syntax element corresponding to the first coding level and the second amount of bits or bins used to code a second dec_abs_level syntax element corresponding to the second coding level are the same amount.48.The non-transitory computer-readable medium of claim 47, wherein, in response to the quantization-center shifting being enabled, to determine the dequantized coefficient based on the quantization-center shifting, the instructions, which when executed by the processor of the encoder, cause the processor of the encoder to:determine a modified level (mod_level) based on a encoded dec_abs_level syntax element by solving: mod_level = (dec_abs_level == ZeroPos) ? 0 : ( (dec_abs_level == 0) ? (dec_abs_level +1) : dec_abs_level) ; anddetermine the dequantized coefficient based on the modified level.49.The non-transitory computer-readable medium of claim 43, wherein, to determine whether the first amount of bits or bins associated with coding the coefficient at the first coding level and the second amount of bits or bins associated with coding the coefficient at the second coding level are the same amount, the instructions, which when executed by the processor of the encoder, cause the processor of the encoder to:determine whether the first amount of bits or bins used to code a first quantization index value corresponding to the first coding level and the second amount of bits or bins used to code a second quantization index value corresponding to the second coding level are the same amount.50.The non-transitory computer-readable medium of claim 43, wherein the dequantized coefficient is associated with a regular residual coding (RRC) mode or a transform skip residual coding (TSRC) mode.51.A non-transitory computer-readable medium storing a bitstream, the bitstream being generated based on one or more of claims 26-33.52.A method of transmitting a bitstream, comprising:generating, by a processor, the bitstream based on one or more of claims 26-33; andtransmitting, by the processor, the bitstream.