Methods and systems for quantization level binarization in video coding

CN119815025BActive Publication Date: 2026-05-26GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP LTD
View PDF 1 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP LTD
Filing Date
2022-06-01
Publication Date
2026-05-26

Smart Images

  • Figure CN119815025B_ABST
    Figure CN119815025B_ABST
Patent Text Reader

Abstract

In some aspects, a method for encoding an image including a video of the current transform unit is disclosed. A processor quantizes the coefficients at each position in the current transform unit to generate a quantization level for the current transform unit. The processor determines a Rice parameter value for Columbus-Rice binarization at the current position in the current transform unit based on historical variable values ​​from previous transform units preceding the current transform unit. This historical variable value is determined based on at least one of the bit depth or bit rate used to encode the image. The processor converts the quantization level of the current position into a binary representation using Columbus-Rice binarization with the Rice parameter value. The processor compresses the binary representation of the current position into the bitstream.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross-reference to related applications

[0002] This application claims priority to U.S. Provisional Patent Application No. 63 / 196,618, filed June 3, 2021, entitled “Bypass Residual Coding for Video Compression,” the entire contents of which are incorporated herein by reference. Technical Field

[0003] Embodiments of this disclosure relate to video coding, and more particularly to a method and system for binarizing quantization levels in video coding. Background Technology

[0004] Digital video has become mainstream and is widely used in applications including digital television, video telephony, and teleconferencing. These digital video applications are feasible due to advancements in computing and communication technologies, as well as efficient video coding techniques. Various video coding techniques can be used to compress video data, allowing the encoding of video data to be performed using one or more video coding standards. Exemplary video coding standards may include, but are 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, and so on. Summary of the Invention

[0005] According to one aspect of this disclosure, a method for encoding an image including a video of a current transform unit is disclosed. A processor quantizes the coefficients at each position in the current transform unit to generate a quantization level for the current transform unit. The processor determines a Rice parameter value for Columbus-Rice binarization at the current position in the current transform unit based on historical variable values ​​from previous transform units preceding the current transform unit. This historical variable value is determined based on at least one of a bit depth or a bit rate used to encode the image. The processor converts the quantization level of the current position into a binary representation using Columbus-Rice binarization with the Rice parameter value. The processor compresses the binary representation of the current position into the bitstream.

[0006] According to another aspect of this disclosure, a system for encoding an image including a video of a current transform unit includes a memory for storing instructions and a processor coupled to the memory. The processor is configured to, upon execution of instructions, quantize the coefficients at each position in the current transform unit to generate a quantization level for the current transform unit. The processor is also configured to, upon execution of instructions, determine a Rice parameter value for Columbus-Rice binarization of the current position in the current transform unit based on historical variable values ​​of previous transform units preceding the current transform unit. This historical variable value is determined based on at least one of a bit depth or a bit rate used to encode the image. The processor is further configured to, upon execution of instructions, convert the quantization level of the current position into a binary representation using Columbus-Rice binarization with the Rice parameter value. The processor is also configured to, upon execution of instructions, compress the binary representation of the current position into a bitstream.

[0007] According to another aspect of this disclosure, a non-transitory computer-readable medium storing instructions is disclosed that, when executed by a processor, performs processing for encoding an image including a video of a current transform unit. The processing includes quantizing coefficients at each position in the current transform unit to generate a quantization level for the current transform unit. The processing also includes determining a Rice parameter value for Columbus-Rice binarization at the current position in the current transform unit based on historical variable values ​​from previous transform units preceding the current transform unit. The historical variable values ​​are determined based on at least one of a bit depth or a bit rate used to encode the image. The processing further includes converting the quantization level of the current position into a binary representation using Columbus-Rice binarization with the Rice parameter value. The processing also includes compressing the binary representation of the current position into a bitstream.

[0008] According to another aspect of this disclosure, a method for decoding an image including a video of the current transform unit is disclosed. A processor decompresses the bitstream to obtain a binary representation of the current position in the current transform unit and a Rice parameter value for Columbus-Rice binarization of the current position. The Rice parameter value is determined based on historical variable values ​​from previous transform units preceding the current transform unit. These historical variable values ​​are determined based on at least one of a bit depth or a bit rate used to decode the image. The processor uses Columbus-Rice binarization with the Rice parameter value to convert the binary representation into a quantization level for the current position. The processor dequantizes the quantization level for the current position to generate coefficients for the current position.

[0009] According to another aspect of this disclosure, a system for decoding an image of video including a current transform unit includes a memory for storing instructions and a processor coupled to the memory. The processor, upon execution of instructions, decompresses the bitstream to obtain a binary representation of the current position in the current transform unit and a Rice parameter value for Columbus-Rice binarization of the current position. The Rice parameter value is determined based on historical variable values ​​from previous transform units preceding the current transform unit. The historical variable values ​​are determined based on at least one of a bit depth or a bit rate used to decode the image. The processor is also configured, upon execution of instructions, to convert the binary representation into a quantization level of the current position using Columbus-Rice binarization with the Rice parameter value. The processor is further configured, upon execution of instructions, to dequantize the quantization level of the current position to generate coefficients for the current position.

[0010] According to another aspect of this disclosure, a non-transitory computer-readable medium storing instructions is disclosed that, when executed by a processor, performs processing for decoding an image including a video of the current transform unit. The processing includes decompressing a bitstream to obtain a binary representation of the current position in the current transform unit and a Rice parameter value for Columbus-Rice binarization of the current position. The Rice parameter value is determined based on historical variable values ​​of previous transform units preceding the current transform unit. The historical variable values ​​are determined based on at least one of a bit depth or a bit rate used to decode the image. The processing also includes converting the binary representation to a quantization level of the current position using Columbus-Rice binarization with the Rice parameter value. The processing further includes dequantizing the quantization level of the current position to generate coefficients for the current position.

[0011] These illustrative embodiments are mentioned not to limit or restrict this disclosure, but to provide examples to aid understanding thereto. Additional embodiments are described in the detailed description, and further description is provided. Attached Figure Description

[0012] Embodiments of the present disclosure are illustrated in conjunction with the accompanying drawings, which form a part of this specification, and the drawings, together with the specification, are further used to explain the principles of the present disclosure and to enable those skilled in the art to make and use the present disclosure.

[0013] Figure 1 A block diagram of an exemplary encoding system according to some embodiments of the present disclosure is shown.

[0014] Figure 2 A block diagram of an exemplary decoding system according to some embodiments of the present disclosure is shown.

[0015] Figure 3 Some embodiments according to this disclosure are shown. Figure 1 A detailed block diagram of an exemplary encoder in the encoding system.

[0016] Figure 4 Some embodiments according to this disclosure are shown. Figure 2 A detailed block diagram of an exemplary decoder in the decoding system.

[0017] Figure 5 Exemplary images showing divisions into coding tree units (CTUs) according to some embodiments of the present disclosure are shown.

[0018] Figure 6 An exemplary CTU divided into coding units (CUs) according to some embodiments of the present disclosure is shown.

[0019] Figure 7 Exemplary transform blocks are shown that are encoded using regular residual coding (RRC) according to some embodiments of this disclosure.

[0020] Figure 8 Exemplary codewords used in Columbus-Rice binarization of input levels according to some embodiments of this disclosure are shown.

[0021] Figure 9A and Figure 9B An exemplary template style for determining the localSumAbs variable in a transformation unit according to some embodiments of this disclosure is shown.

[0022] Figure 10 The encoding process in RCC is shown.

[0023] Figure 11A Exemplary bypass coding modes in RCC according to some embodiments of this disclosure are shown.

[0024] Figure 11B Another exemplary bypass coding mode in RCC according to some embodiments of this disclosure is shown.

[0025] Figure 11C This illustrates yet another exemplary bypass coding mode in transform unit (TU) coding according to some embodiments of the present disclosure.

[0026] Figure 11D Exemplary bypass coding modes in TU coding according to some embodiments of this disclosure are shown.

[0027] Figure 12 A flowchart illustrating an exemplary method of video encoding according to some embodiments of the present disclosure is shown.

[0028] Figure 13A flowchart illustrating an exemplary method for determining historical variable values ​​according to some embodiments of this disclosure is shown.

[0029] Figure 14 A flowchart illustrating an exemplary method for video decoding according to some embodiments of the present disclosure is shown.

[0030] The embodiments disclosed herein will be described with reference to the accompanying drawings. Detailed Implementation

[0031] While some configurations and arrangements have been discussed, it should be understood that this is done for illustrative purposes only. Those skilled in the art will recognize that other configurations and arrangements can be used without departing from the spirit and scope of this disclosure. Clearly, this disclosure can also be applied to a variety of other applications by those skilled in the art.

[0032] It should be noted that references to "an embodiment," "an exemplary embodiment," "some embodiments," "certain embodiments," etc., in the specification indicate that the described embodiment may include specific features, structures, or characteristics, but each embodiment does not necessarily include that specific feature, structure, or characteristic. Furthermore, such phrases do not necessarily refer to the same embodiment. In addition, when a specific feature, structure, or characteristic is described in conjunction with an embodiment, those skilled in the art should understand that, whether explicitly described or not, such feature, structure, or characteristic can also be implemented in combination with other embodiments.

[0033] Generally, terms can be understood, at least in part, from their usage in context. For example, the term "one or more" as used herein can be used to describe any feature, structure, or property in a singular sense, or a combination of features, structures, or properties in a plural sense, depending at least in part on the context. Similarly, terms such as "a," "an," or "the" can be understood as either singular or plural, depending at least in part on the context. Furthermore, the term "based on" can be understood as not necessarily intended to express an exclusive set of factors, but rather allowing for the presence of other factors that are not necessarily explicitly described, also depending at least in part on the context.

[0034] The various aspects of a video coding system will now be described with reference to various apparatuses and methods. These apparatuses and methods will be described in detail below and illustrated in the accompanying drawings by various modules, components, circuits, steps, operations, processes, algorithms, etc. (collectively, “elements”). These elements may be implemented using electronic hardware, firmware, computer software, or any combination thereof. Whether these elements are implemented in hardware, firmware, or software depends on the specific application and the design constraints imposed on the entire system.

[0035] The techniques described herein can be used in a variety of video coding applications. As described herein, video coding includes encoding and decoding video. Video encoding and decoding can be performed on a block-by-block basis. For example, encoding / decoding processes such as transform, quantization, prediction, loop filtering, reconstruction, etc., can be performed on encoded blocks, transform blocks, or prediction blocks. As described herein, the block to be encoded / decoded will be referred to as the “current block.” For example, depending on the current encoding / decoding process, the current block can represent an encoded block, a transform block, or a prediction block. Furthermore, it should be understood that the term “unit” as used in this disclosure refers to a basic unit used to perform a particular encoding / decoding process, and the term “block” refers to a sample array of a predetermined size. Unless otherwise stated, “block” and “unit” are used interchangeably.

[0036] In video coding, quantization is used to reduce the dynamic range of a transformed or untransformed video signal, thereby enabling the video signal to be represented using fewer bits. Before quantization, the transformed or untransformed video signal at a specific location is referred to as a "coefficient". After quantization, the quantized value of the coefficient is referred to as a "quantization level" or "level". In this disclosure, the quantization level of a location refers to the quantization level of the coefficient at that location. In video coding, residual coding is used to encode the quantization level of the location into the bitstream. After quantization, there can be N×M quantization levels for an N×M coded block. These N×M quantization levels can be zero or non-zero values. If the level is not binary, a binarization method can be used to further convert (e.g., binaryize) the non-zero level into a binary representation (e.g., binary bits). A coding algorithm (e.g., entropy coding algorithm) can be used to compress the binary representation (e.g., binary bits) into the bitstream. Binarization methods can be, but are not limited to, Columbus-Rice binarization, such as combined truncated Rice (TR) binarization, k-th order Exp-Golomb (EGk) binarization, and EGk binarization. Entropy coding algorithms can be, but are not limited to, variable-length coding (VLC) schemes, context-adaptive VLC (CAVLC) schemes, arithmetic coding schemes, binarization, context-adaptive binary arithmetic coding (CABAC), syntax-based context-adaptive binary arithmetic coding (SBAC), probability interval partitioning entropy (PIPE) coding, or other entropy coding techniques.

[0037] For example, combined TR and finite EGk binarization in versatile video coding (H.266 / VVC) utilizes numerous parameters, such as truncation parameters, Ricean parameters, and the length of dynamic range (LDR) of the coefficients. The Ricean parameter determines the initial suffix code length. The truncation parameter determines the number of input values ​​that can be used with the initial suffix code length. The LDR determines the maximum suffix code length. For high-bit-depth and high-bit-rate video coding (e.g., 16-bit), the quantization levels to be binarized are, on average, much larger than those to be binarized in current H.266 / VVC (e.g., less than 16-bit, such as 10-bit). Therefore, the parameters currently used for binarizing quantization levels (e.g., Ricean parameters) may not be optimal for high-bit-depth and high-bit-rate video coding, and the coding performance of current H.266 / VVC may be affected.

[0038] To improve the coding performance of video encoding, particularly high bit depth and high bit rate video encoding, this disclosure provides a quantization level binarization scheme that uses a Rice parameter adapted to the bit depth and bit rate used to encode the video image. In some embodiments, the Rice parameter value for Columbus-Rice binarization at the current position in the current transform unit is determined based on historical variable values ​​from previous transform units preceding the current transform unit, and the historical variable values ​​are determined based on the bit depth and / or bit rate used to encode the image. For example, an offset (e.g., a non-zero integer) can be used to adjust the historical variable value based on the bit depth and / or bit rate of the encoded image. For high bit depth and high bit rate video encoding, the offset value can be greater than that for low bit depth and low bit rate or normal bit depth and normal bit rate video encoding, thus being more suitable for quantization levels with larger average values. Therefore, the Rice parameter (e.g., codeword length) can be optimized based on the bit depth and / or bit rate to improve coding efficiency.

[0039] Based on some aspects of this disclosure, the quantization level binarization scheme disclosed herein can be applied to bypass coding modes, especially bypass coding modes in regular residual coding (RRC).

[0040] For example, CABAC in H.266 / VVC, High-efficiency Video Coding (H.265 / HEVC), and Advanced Video Coding (H.264 / AVC) uses bits to encode the quantization level of a position as bits. CABAC employs two context-based coding methods. The context-based method adaptively updates the context model based on neighboring coding information; bits encoded in this way are called context-coded bins (CCBs). In contrast, another bypass method assumes that the probability of 1 or 0 is always 50%, thus always using a fixed context model without any adjustments; bits encoded in this way are called bypass-coded bins (BCBs).

[0041] For high-bit-depth and high-bit-rate video coding, throughput is a more critical issue. However, compared to BCB coding, CCB coding requires more complex hardware implementation and generally reduces video coding throughput. Therefore, CCB coding is a bottleneck for improving the throughput of high-bit-depth and high-bit-rate video coding.

[0042] To improve video coding throughput, especially for high-bit-depth and high-bit-rate video coding, the residual coding block (CCB) is typically skipped or replaced with the binary code block (BCB) in bypass coding mode. In other words, bypass coding mode in RRC can only use the BCB (e.g., the binary code block from the absolute level in the quantization level). However, current H.266 / VVC does not use offsets based on bit depth and / or bit rate when calculating historical variable values ​​for the Rice parameter used to determine bypass mode in RRC.

[0043] According to some aspects of this disclosure, the quantization level binarization scheme uses a Rice parameter adapted to the bit depth and / or bit rate used to encode the video image, and this scheme can also be used for bypass coding modes in RRC. In some embodiments, the binary representation of the current position includes the BCB in RRC. For example, the absolute level BCB in the quantization level can also be transformed using the Rice parameter value adapted to the bit depth and / or bit rate used to encode the video image. Therefore, the coding efficiency and throughput of bypass modes in RRC for high bit depth and high bit rate video coding can be improved.

[0044] Figure 1 A block diagram of an exemplary encoding system 100 according to some embodiments of the present disclosure is shown. Figure 2A block diagram of an exemplary decoding system 200 according to some embodiments of the present disclosure is shown. Each system 100 or 200 can be applied to or integrated into a variety of systems and devices capable of data processing, such as computers and wireless communication devices. For example, system 100 or 200 can be all or part of a mobile phone, desktop computer, laptop computer, tablet computer, in-vehicle computer, game console, printer, positioning device, wearable electronic device, smart sensor, virtual reality (VR) device, augmented reality (AR) device, or any other suitable electronic device with data processing capabilities. Figure 1 and Figure 2 As shown, system 100 or 200 may include processor 102, memory 104, and interface 106. These components are interconnected via a bus, as illustrated, but other connection types are also permitted. It should be understood that system 100 or 200 may include any other suitable components for performing the functions described herein.

[0045] Processor 102 may include a microprocessor, such as a graphics 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 unit (MCU), application-specific integrated circuit (ASIC), field-programmable gate array (FPGA), programmable logic device (PLD), state machine, gated logic, discrete hardware circuitry, and other suitable hardware for performing the various functions described in this disclosure. Although in Figure 1 and Figure 2Only one processor is shown, but it should be understood that multiple processors may be included. Processor 102 may be a hardware device having one or more processing cores. Processor 102 can execute software. Software should be interpreted broadly as representing instructions, instruction sets, codes, code segments, program code, programs, subroutines, software modules, applications, software applications, software packages, routines, subroutines, objects, executable files, threads of execution, processes, functions, etc., whether referred to as software, firmware, middleware, microcode, hardware description languages, or others. Software may include computer instructions written in interpreted languages, computer instructions written in compiled languages, or computer instructions written in machine code. Other techniques for indicating hardware are also permitted within the broad category of software.

[0046] Memory 104 can broadly include both memory (also known as main / system memory) and storage (also known as secondary storage). 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 disc storage, hard disk drive (HDD), such as disk storage or other magnetic storage devices, flash memory 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 accessed and executed by processor 102. More broadly, memory 104 can be implemented by any computer-readable medium, such as non-transitory computer-readable media. Although in Figure 1 and Figure 2 Only one memory is shown, but it should be understood that multiple memories may be included.

[0047] Interface 106 can broadly include data interfaces and communication interfaces, with the communication interface used to receive and transmit signals during the process of receiving and transmitting information with other external network components. For example, interface 106 may include input / output (I / O) devices and wired or wireless transceivers. Although in Figure 1 and Figure 2 Only one memory is shown, but it should be understood that it may include multiple interfaces.

[0048] Processor 102, memory 104, and interface 106 may be implemented in various forms within system 100 or 200 for performing video encoding 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-chip (SoCs). In one example, processor 102, memory 104, and interface 106 may be integrated on an application processor (AP) SoC that processes application processing (including running video encoding and decoding applications) within an operating system (OS) environment. In another example, processor 102, memory 104, and interface 106 may be integrated on a dedicated processor chip for video encoding, such as a GPU or ISP chip dedicated to image and video processing in a real-time operating system (RTOS).

[0049] like Figure 1 As shown, in the encoding system 100, the processor 102 may include one or more modules, such as the encoder 101. Although Figure 1 Encoder 101 is shown within a processor 102; however, it should be understood that encoder 101 may include one or more submodules that may be implemented on different processors, either close to or far from each other. Encoder 101 (and any corresponding submodules or subunits) may be a hardware unit of processor 102 (e.g., part of an integrated circuit) designed for use with other components or software units implemented by processor 102 by executing at least a portion of a program (i.e., instructions). The program instructions may be stored on a computer-readable medium (e.g., memory 104) and, when executed by processor 102, may perform processing with one or more functions related to video coding, such as image segmentation, inter-frame prediction, intra-frame prediction, transform, quantization, filtering, entropy coding, etc., as described in detail below.

[0050] Similarly, such as Figure 2 As shown, in the decoding system 200, the processor 102 may include one or more modules, such as the decoder 201. Although Figure 2Decoder 201 is shown within a processor 102; however, it should be understood that decoder 201 may include one or more submodules that may be implemented on different processors, either close to or far from each other. Decoder 201 (and any corresponding submodules or subunits) may be a hardware unit of processor 102 (e.g., part of an integrated circuit) designed for use with other components or software units implemented by processor 102 by executing at least a portion of a program (i.e., instructions). The program instructions may be stored on a computer-readable medium (e.g., memory 104), and when executed by processor 102, the instructions may perform processing with one or more functions related to video decoding, such as entropy decoding, inverse quantization, inverse transform, inter-frame prediction, intra-frame prediction, and filtering, as described in detail below.

[0051] Figure 3 Some embodiments according to this disclosure are shown. Figure 1 A detailed block diagram of an exemplary encoder 101 in the encoding system 100. (See attached diagram.) Figure 3 As shown, encoder 101 may include a partitioning module 302, an inter-frame prediction module 304, an intra-frame 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 should be understood that... Figure 3 Each element shown is presented independently to represent a different feature function within the video encoder, and this does not imply that each component is formed by a separate hardware or software configuration unit. That is, for ease of explanation, each element is listed as an element, and at least two elements can be combined into a single element, or an element can be broken down into multiple elements to perform a function. It should also be understood that some elements are not essential for performing the functions described in this disclosure, but may be optional elements used to improve performance. It should also be understood that these elements can be implemented using electronic hardware, firmware, computer software, or any combination thereof. Whether these elements are implemented in hardware, firmware, or software depends on the specific application and the design constraints imposed on encoder 101.

[0052] The partitioning module 302 can be used to partition the input image of a video into at least one processing unit. The image can be a frame or a field of a video. In some embodiments, the image includes a monochrome luminance sample array, or a luminance sample array and two corresponding chrominance sample arrays. In this case, the processing unit can be a prediction unit (PU), a transform unit (TU), or a coding unit (CU). The partitioning module 302 can partition the image into a combination of multiple CUs, prediction units, and transform units, and select the combination of CUs, prediction units, and transform units based on a predetermined criterion (e.g., a cost function) to encode the image.

[0053] Similar to H.265 / HEVC, H.266 / VVC is a block-based hybrid spatiotemporal predictive coding scheme. Figure 5 As shown, during encoding, the input image 500 is first divided into square blocks—coding tree units (CTUs) 502—by the partitioning module 302. For example, a CTU 502 can be a 128×128 pixel block. Figure 6 As shown, each CTU 502 in image 500 can be divided into one or more CUs 602 by partitioning module 302. These one or more CUs 602 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 encoded without further partitioning into prediction or transformation units. For example, as... Figure 6 As shown, the partitioning of CTU 502 to CU 602 may include quadtree partitioning (indicated by solid lines), binary tree partitioning (indicated by dashed lines), and ternary tree partitioning (indicated by dotted lines). According to some embodiments, each CU 602 may be at most its root CTU 502, or at least a 4×4 subdivision of the root CTU 502.

[0054] Reference Figure 3Inter-frame prediction module 304 can be used to perform inter-frame prediction on prediction units, and intra-frame prediction module 306 can be used to perform intra-frame prediction on prediction units. It can be determined whether to use inter-frame prediction or perform intra-frame prediction for a prediction unit, and specific information (e.g., intra-frame prediction mode, motion vector, reference image, etc.) can be determined based on each prediction method. In this case, the processing unit used to perform prediction can be different from the processing unit used to determine the prediction method and specific content. For example, the prediction method and prediction mode can be determined in the prediction unit, and prediction can be performed in the transform unit. The residual coefficients in the residual block between the generated prediction block and the original block can be input to the transform module 308. Furthermore, the prediction mode information, motion vector information, etc., used for prediction can be encoded into the bitstream along with the residual coefficients or quantization level by the encoding module 320. It should be understood that in some encoding modes, the original block itself can be encoded without generating a prediction block through prediction modules 304 or 306. It should also be understood that in some encoding modes, prediction, transform, and / or quantization can be skipped.

[0055] In some embodiments, the inter-frame prediction module 304 can predict prediction units based on information from at least one image preceding or following the current image, and in some cases, the inter-frame prediction module 304 can predict prediction units based on information from a portion of the current image that has already been encoded. The inter-frame prediction module 304 may include sub-modules, such as a reference image interpolation module, a motion prediction module, and a motion compensation module (not shown). For example, the reference image interpolation module can receive reference image information from the buffer module 318 and generate pixel information of an integer number of pixels or fewer pixels from the reference image. In the case of luminance pixels, an 8-tap interpolation filter based on discrete cosine transform (DCT) with varying filter coefficients can be used to generate pixel information of an integer number of pixels or fewer pixels in units of 1 / 4 pixels. In the case of chrominance signals, a 4-tap interpolation filter based on DCT with varying filter coefficients can be used to generate pixel information of an integer number of pixels or fewer pixels in units of 1 / 8 pixels. The motion prediction module can perform motion prediction based on the reference image interpolated by the reference image interpolation module. For example, various methods such as the full search-based block matching algorithm (FBMA), three-step search (TSS), and new three-step search (NTS) can be used to compute motion vectors. Motion vectors can have values ​​in units of 1 / 2, 1 / 4, or 1 / 16 of the interpolated pixel, or integer pixels. The motion prediction module can predict the current prediction unit by changing the motion prediction method. Various methods can be used as motion prediction methods, such as skipping methods, merging methods, advanced motion vector prediction (AMVP) methods, and intra-block copying methods.

[0056] In some embodiments, the intra-prediction module 306 can generate prediction units based on information of reference pixels surrounding the current block (which is pixel information in the current image). When a block in the neighborhood of the current prediction unit has already undergone inter-frame prediction, and therefore the reference pixel is a pixel that has already undergone inter-frame prediction, the reference pixel information of the block in the neighborhood that has undergone intra-frame prediction can be replaced by the reference pixel included in the block that has undergone inter-frame prediction. That is, when a reference pixel is unavailable, at least one of the available reference pixels can be used to replace the unavailable reference pixel information. In intra-frame prediction, the prediction mode can have an angular prediction mode that uses reference pixel information according to the prediction direction, and a non-angular prediction mode that does not use direction information when performing prediction. The mode used to predict luminance information can be different from the mode used to predict chromatic difference information, and the intra-frame prediction mode information used to predict luminance information or predicted luminance signal information can be used to predict chromatic difference information. If the size of the prediction unit is the same as the size of the transformation unit when performing intra-frame prediction, intra-frame prediction can be performed on the prediction unit based on the pixels to the left, the pixels to the upper left, and the pixels at the top of the prediction unit. However, if the size of the prediction unit is different from the size of the transform unit when performing intra-frame prediction, intra-frame prediction can be performed based on the reference pixel using the transform unit.

[0057] Intra-prediction methods can generate prediction blocks after applying an adaptive intra-smoothing (AIS) filter to a reference pixel based on the prediction mode. The type of AIS filter applied to the reference pixel can vary. To perform intra-prediction, the intra-prediction mode of the current prediction unit can be predicted from the intra-prediction modes of prediction units existing in the neighborhood of the current prediction unit. When using mode information predicted from neighboring prediction units to predict the prediction mode of the current prediction unit, if the intra-prediction mode of the current prediction unit is the same as that of the prediction units in the neighborhood, predetermined flag information can be used to send information indicating that the prediction mode of the current prediction unit is the same as that of the prediction units in the neighborhood; and if the prediction modes of the current prediction unit and the prediction modes of the prediction units in the neighborhood are different from each other, additional flag information can be used to encode the prediction mode information of the current block.

[0058] like Figure 3 As shown, a residual block can be generated, which includes prediction units that have been used to perform predictions based on prediction units generated by prediction modules 304 or 306, and residual coefficient information, which is the difference between the prediction units and the original block. The generated residual block can be input into the transformation module 308.

[0059] Transform module 308 can be used to perform transform methods such as DCT, discrete sine transform (DST), Karhunen-Loève transform (KLT), or transform-skipped transforms. The transform includes the original block and a residual block containing residual coefficient information of the prediction units generated by prediction modules 304 and 306. Whether to apply DCT, DST, or KLT to transform the residual block can be determined based on the intra-frame prediction mode information of the prediction units used to generate the residual block. Transform module 308 can transform the video signal in the residual block from the pixel domain to the transform domain (e.g., the frequency domain, depending on the transform method). It should be understood that in some examples, transform module 308 can be skipped, and the video signal can be not transformed to the transform domain.

[0060] Quantization module 310 can be used to quantize the coefficients at each position in the coded block to generate a quantization level for that position. The current block can be a residual block. That is, quantization module 310 can perform quantization processing on each residual block. A residual block can include N×M positions (samples), each position associated with a transformed or untransformed video signal / data (e.g., luminance and / or chrominance information), where N and M are positive integers. In this disclosure, the transformed or untransformed video signal at a particular position before quantization 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".

[0061] Quantization can be used to reduce the dynamic range of transformed or untransformed video signals, thus requiring fewer bits to represent the signal. Quantization typically involves dividing by the quantization step size and subsequent rounding, while dequantization (also known as inverse quantization) involves multiplying by the quantization step size. The quantization step size can be represented by the quantization parameter (QP). This quantization process is called scalar quantization. Quantization of all coefficients within a coded block can be performed independently; this method is used in some existing video compression standards (such as H.264 / AVC and H.265 / HEVC). The quantization QP affects the bitrate used to encode / decode video images. For example, a higher QP results in a lower bitrate, and a lower QP results in a higher bitrate.

[0062] For an N×M coded block, a specific coding scan order can be used to convert the two-dimensional (2D) coefficients of the block into a one-dimensional (1D) sequence for coefficient quantization and encoding. Typically, the coding scan begins at the top left corner of the coded block and stops at the bottom right corner or the last non-zero coefficient / level in the bottom-right direction. It should be understood that the coding scan order can include any suitable order, such as a zigzag scan order, a vertical (column) scan order, a level (row) scan order, a diagonal scan order, or any combination thereof. The quantization of coefficients within a coded block can utilize coding scan order information. For example, the quantization of a coefficient can depend on the state of previous quantization levels along the coding scan order. To further improve coding efficiency, the quantization module 310 can use more than one quantizer, for example, two scalar quantizers. Which quantizer will be used to quantize the current coefficient depends on information preceding the current coefficient in the coding scan order; this quantization process is called dependent quantization.

[0063] refer to Figure 3 The encoding module 320 is used to encode the quantization level at each position in the coded block into the bitstream. In some embodiments, the encoding module 320 can perform entropy coding on the coded block. Entropy coding can use various binarization methods (e.g., Columbus-Rice binarization including EGk binarization, combined TR, and finite EGk binarization) to convert each quantization level into a corresponding binary representation (e.g., binary bits). Then, the binary representation can be further compressed using entropy coding algorithms such as VLC, CAVLC, CABAC, SBAC, and PIPE coding. The compressed data can be added to the bitstream. In addition to the quantization level, the encoding module 320 can encode various other information, such as block type information, prediction mode information, partitioning unit information, prediction unit information, transmission unit information, motion vector information, reference frame information, block interpolation information, and filtering information of the CU input from the prediction modules 304 and 306. In some embodiments, the encoding module 320 can perform residual coding on the coded block to convert the quantization level into the bitstream. For example, after quantization, there can be N×M quantization levels for an N×M block. These N×M levels can be zero or non-zero values. If the levels are not binary, non-zero levels can be further binaryized to binary bits using, for example, combined TR and finite EGk binarization.

[0064] Non-binary syntax elements can be mapped to binary codewords. The bijective mapping between symbols and codewords typically uses simple structured codes; this bijective mapping is called binarization. The binary symbols (also called bits) of both binary syntax elements and non-binary data codewords can be encoded using binary arithmetic coding. CABAC's core encoding engine supports two operating modes: a context-based encoding mode, in which bits are encoded using an adaptive probability model; and a relatively simple bypass mode, which uses a fixed probability of 1 / 2. The adaptive probability model is also called the context, and assigning the probability model to individual bits is called context modeling.

[0065] According to some aspects of this disclosure, in H.266 / VVC, the Columbus-Rice binarization process (e.g., combined TR and finite EGk binarization) involves many parameters, such as a truncation parameter, a Rice parameter, and an LDR for the coefficients. The Rice parameter is the initial suffix code length. The truncation parameter is used to determine the number of input values ​​that can be used with the initial suffix code length. The LDR is used to define the maximum suffix code length. In some examples, the LDR is set to 15. In other examples, the LDR is set to a larger value between 15 and the bit depth plus 6. If the bit depth is 16, then the LDR is 22. In some embodiments, the maximum length of binary bits is set to 32. The maximum length of binary bits can be used to determine the maximum length of the codeword prefix. In the current H.266 / VVC specification, the truncation parameter is 5, and the LDR for the coefficients is 15. In transform skip residual coding (TSRC) mode, the Rice parameter is defined as a fixed value of 1. In RRC mode, the Rice parameter is a value between 0 and 3.

[0066] For example, Figure 8 Exemplary codewords for binaryizing input values ​​(e.g., absolute or residual levels in quantization levels) in Columbus-Rice binarization (e.g., combined TR and finite EGk binarization) according to some embodiments of this disclosure are shown. In this example, the truncation parameter value, Rice parameter value, and LDR value are set to 3, 2, and 22, respectively. Therefore, the initial suffix code length is 2, and this initial suffix code length is used for the first truncated + 1 (i.e., 4) input value ranges [0, 3], [4, 7], [8, 11], and [12, 15]. After the first truncated + 1 input value range, the suffix code length for each input value range is incremented by 1 sequentially. For example, the codeword suffix for the value range [16, 23] uses 3 bits, the input value range [24, 39] uses 4 bits, and so on. The codeword suffix for the last input value range uses LDR bits (i.e., 22 bits in this example). The prefix code length for each value range is incremented sequentially until there are LDR bits (e.g., ...). Figure 8The prefix code length of the last input range of the 22-LDR bits reaches 10 bits.

[0067] For high-bit-depth and high-bit-rate video coding (e.g., 16-bit depth), the quantization levels are on average much larger than those of current H.266 / VVC, which is due, for example, to smaller quantization step sizes. Figure 8 The example shown illustrates that the prefix and suffix of a large quantization level use more bits than the prefix and suffix of a small quantization level. Therefore, for high-bit-depth and high-bit-rate video coding, the parameters currently used for binarization quantization levels (such as Rice parameters) may not be optimal and could negatively impact the coding performance of current VVCs.

[0068] Regarding the Rice parameter, to improve the accuracy of Rice parameter estimation based on computational templates, a historical Rice parameter derivation method can be used. For example... Figure 9A and Figure 9B As shown, the Rice parameter at the current position can be calculated using a variable (i.e., localSumAbs), which is the sum of the absolute ranks of up to five adjacent positions in the transform unit. Figure 9A and Figure 9B In the diagram, the solid black square represents the current position within the current transformation unit, and the patterned square represents the adjacent positions within the current transformation unit. For example... Figure 9A As shown, the sum of the quantization levels (such as residual or absolute levels) of five adjacent positions can be used to calculate the variable localSumAbs for the current position, and thus determine the Rice parameter for the current position. However, as... Figure 9B As shown, some locations are near the boundaries of the current transform unit, and the variable localSumAbs, which can be used to calculate the current location of these "boundaries" in the current transform unit, may have fewer than five neighboring locations. In other words, at least one of the five neighboring locations of the current "boundary" location can be outside the current transform unit.

[0069] To improve the accuracy of Rice parameter estimation based on computational templates, historical derived values ​​(e.g., historical variable values) can be used instead of 0 to update the variable localSumAbs at the current location outside the current transform unit, for example, as shown in the following pseudocode:

[0070]

[0071] The inputs to the pseudocode procedure described above are the base level (baseLevel), the color component index (cIdx), the luminance position (x0, y0) of the current transform block relative to the current top-left sample of the current image (x0, y0), the current coefficient scan position (xC, yC), the binary logarithm of the transform block width (log2TbWidth), and the binary logarithm of the transform block height (log2TbHeight). The output of this procedure is the variable `localSumAbs`. If the array of transform blocks `AbsLevel[x][y]` has the component index `cIdx` and the top-left luminance position (x0, y0), then the variable `locSumAbs` can be generated according to the pseudocode procedure described above. Specifically, in the italicized part of the pseudocode procedure described above, the history variable `histValue` is used to calculate the variable `locSumAbs` when at least one adjacent position of the current position is outside the current transform unit.

[0072] The variable localSumAbs is updated as follows:

[0073] locSumAbs=Clip3(0,31,(locSumAbs>>shiftVal)-baseLevel*5)

[0074] The variable shiftVal is generated as follows:

[0075]

[0076] In other words, if the RRC Rice parameter extension flag `sps_rrc_rice_extension_flag` is off, the value of the variable `shiftVal` can be 0. If the RRC Rice parameter extension flag `sps_rrc_rice_extension_flag` is on, the value of the variable `shiftVal` can be calculated based on the value of the variable `localSumAbs` and the values ​​of `Tx[]` and `Rx[]` listed in the pseudocode above. For example, the `Tx[]` and `Rx[]` listed above can be specified as `Tx[] = {32, 128, 512, 2048}` and `Rx[] = {0, 2, 4, 6, 8}`.

[0077] Given the variable locSumAbs, the Rice parameter cRiceParam can be derived first, as shown in Table 1 below, and then updated as follows:

[0078]

[0079] Table 1. Specifications of cRiceParam based on locSumAbs

[0080] To maintain historical records, the history variable `histValue` can be updated at most once per transform unit, and the updated value of `histValue` can be used to determine the variable `locSumAbs` (and the corresponding Rice parameter) for the position in the next transform unit after the current transform unit. In other words, based on the historical variable values ​​of the previous transform units preceding the current transform unit, the Rice parameter value for the current position in the current transform unit (e.g., the current position of the "boundary") can be determined.

[0081] In some embodiments, each transform unit in the RRC can initialize the history variable histValue with the value of the history counter StatCoeff[cIdx] determined according to the previous transform unit before decoding, as follows:

[0082] histValue = 1 <StatCoeff[cIdx]

[0083] updateHist=1

[0084] StatCoeff[cIdx] is a single history counter for each color component index cIdx. For example, the history counter StatCoeff[cIdx] can be updated once per transform unit based on the quantization level (e.g., absolute level or residual level) of the first non-zero Columbus-Rice encoded position (e.g., encoded position using the abs_remainder or dec_abs_level syntax element) (i.e., the first non-zero Columbus-Rice encoded quantization level). updateHist = 1 indicates that the initial value of the variable histValue can be updated in the current transform unit if at least one position is encoded using the abs_remainder or dec_abs_level syntax element (i.e., a Columbus-Rice encoded position).

[0085] In summary, the value of the history counter StatCoeff[cIdx] (and the corresponding history variable histValue) of the previous transform unit affects the Rice parameter value at the current position in the current transform unit, thus affecting the length of the binarized codeword (e.g., the number of binary bits in the binary representation). On the other hand, since the bit depth and / or bit rate used to encode the image affects the average quantization level, adjusting the value of the history counter StatCoeff[cIdx] (and the corresponding history variable histValue) based on the bit depth and / or bit rate can improve the efficiency of binarization using the optimized Rice parameter.

[0086] Please refer to this again. Figure 3In some embodiments, the encoding module 320 may be used to determine the Rice parameter value for Columbus-Rice binarization at the current position in the current transform unit based on historical variable values ​​from previous transform units preceding the current transform unit. This historical variable value is determined based on the bit depth and / or bit rate used to encode the image, as detailed below.

[0087] According to some aspects of this disclosure, in H.266 / VVC, coded blocks are transform blocks encoded using RRC. Transform blocks larger than 4×4 can be divided into disjoint 4×4 sub-blocks, which are processed using a reverse diagonal scan mode. It is understood that H.266 / VVC supports non-square rectangular transform blocks, and therefore also supports non-4×4 sub-blocks. For ease of description and to maintain generality, Figure 7 An example of a 16x16 transform block is described, which is further divided into 4x4 sub-blocks. A reverse diagonal scan mode is used to process the sub-blocks of the transform block and the frequency positions within each sub-block.

[0088] In RRC, the last non-zero level position (also known as the last valid scan position) can be defined as the last non-zero level position along the encoded scan order. The 2D coordinates of this last non-zero level (last_sig_coeff_x and last_sig_coeff_y) can be encoded using up to four syntax elements: two context-coded syntax elements—two last valid coefficient prefixes (last_sig_coeff_x_prefix and last_sig_coeff_y_prefix)—and two bypass-coded syntax elements—two last valid coefficient suffixes (last_sig_coeff_x_suffix and last_sig_coeff_x_suffix). Within a sub-block, RRC can first encode the CCB, the encoded sub-block flag (sb_coded_flag), to indicate whether all levels in the current sub-block are zero. For example, if sb_coded_flag equals 1, there can be at least one non-zero coefficient in the current sub-block. If sb_coded_flag equals 0, all coefficients in the current sub-block are zero. Understandably, the `sb_coded_flag` of the last non-zero sub-block with the last non-zero level can be derived from `last_sig_coeff_x` and `last_sig_coeff_y` based on the encoding scan order, without needing to encode it into the bitstream. Similarly, the `sb_coded_flag` of the first sub-block containing the direct current (DC) of the entire block can be derived based on the encoding scan order, without needing to encode it into the bitstream. Other `sb_coded_flag`s can be encoded as CCBs. RRC can encode sub-blocks one by one, starting from the last non-zero sub-block, following the reverse encoding scan order.

[0089] To guarantee worst-case throughput, the maximum number of CCBs can be limited using the remaining CCB (remBinsPass1) value. The initial value of remBinsPass1 can be calculated at least in part based on the length and width of the coded block. Within a sub-block, the RRC can encode the level of each position in reverse coding scan order. A predefined threshold can be compared with remBinsPass1 to determine whether the maximum number of CCBs has been reached. For example, the threshold for remBinsPass1 in H.266 / VVC can be predefined as 4.

[0090] like Figure 10 As shown, if remBinsPass1 is not less than 4 (i.e. Figure 10 If "remaining CCB ≥ 4" is in the encoding sub-block (i.e. Figure 10When quantizing the level of each position in "SB" in the code, the valid flag (i.e., sig_coeff_flag) can be set first. Figure 10 The "sig" in the code is encoded into the bitstream to indicate whether the level is zero or non-zero. If the level is non-zero, a flag greater than 1 (i.e., abs_level_gtx_flag[n][0]) can be encoded into the bitstream. Figure 10 The "gt1" in the code (where n is the index of the scan order along the current position in the sub-block) is encoded into the bitstream to indicate whether the absolute level is 1 or greater than 1. If the absolute level is greater than 1, the parity flag (i.e., par_level_flag) can be added. Figure 10 The "par" in the code is encoded into the bitstream to indicate whether the level is odd or even. Then, a greater-than flag (i.e., abs_level_gtx_flag[n][1]) can be present. Figure 10 The "gt" in the text. The par_level_flag and abs_level_gtx_flag[n][1] flags can also be used to indicate that the level is 2, 3, or greater than 3. After encoding each of the above syntax elements using the context encoding method (i.e., CCB), the value of remBinsPass1 can be reduced by 1. In other words, in the first encoded channel ( Figure 10 In "Channel 1", the valid flag, the greater than 1 flag, the parity flag, and the greater than flag can be encoded into the CCB at each position of each sub-block.

[0091] If the absolute level is greater than 5 or the value of rembinspass1 is less than 4, the remaining levels after encoding the above CCB can be respectively in the second encoding channel (i.e. Figure 10 "Channel 2" and the third encoding channel (i.e. Figure 10 In "Channel 3" of the code, the other two syntax elements are the remainder (abs_remainder). Figure 10 The “rem” in this disclosure is also referred to as the “residual level” and the absolute level (dec_abs_level). Figure 10 The “decAbsLevel” in the code is encoded as BCB. Additionally, it can also be encoded in the fourth encoding channel (i.e., Figure 10 In "Channel 4", the sign flag (coeff_sign_flag) for each non-zero level coefficient will be displayed. Figure 10 The “sign” in the code is encoded as BCB to fully represent the quantification level.

[0092] In some embodiments, a more general residual coding method uses a level greater than flag (abs_level_gtxX_flag) and residual level bits to conditionally parse the syntax elements of the level-coded transform block, and the corresponding binarization of the absolute values ​​of its levels is shown in Table 2 below. Here, abs_level_gtxX_flag describes whether the absolute value of the level is greater than X, where X is an integer, such as 0, 1, 2, ..., or N. If abs_level_gtxX_flag is 0 (where X is an integer between 0 and N-1), then abs_level_gtx(X+1)_flag does not exist. If abs_level_gtxX_flag is 1, then abs_level_gtx(X+1)_flag exists. Furthermore, if abs_level_gtxN_flag is 0, then there is no remainder. When abs_level_gtxN_flag is 1, there is a remainder, which represents the value after removing (N+1) from the level. Typically, abs_level_gtxX_flag can be encoded as CCB, while the remaining level bits can be encoded as BCB.

[0093] abs(lvl) 0 1 2 3 4 5 6 7 8 9 ... abs_level_gtx0_flag 0 1 1 1 1 1 1 1 1 1 ... abs_level_gtx1_flag 0 1 1 1 1 1 1 1 1 ... abs_level_gtx2_flag 0 1 1 1 1 1 1 1 ... abs_level_gtx3_flag 0 1 1 1 1 1 1 ... abs_remainder 0 1 2 3 4 5 ...

[0094] Table 2 Residual coding based on abs_level_gtxX_flag bits and remainder bits

[0095] like Figure 3 As shown, the dequantization module 312 can be used to dequantize the quantization level, and the inverse transformation module 314 can be used to perform an inverse transformation on the coefficients transformed by the transformation module 308. The reconstructed residual block generated by the dequantization module 312 and the inverse transformation module 314 can be combined with the prediction unit predicted by the prediction module 304 or 306 to generate a reconstructed block.

[0096] Filter module 316 may include at least one of a deblocking filter, a sample adaptive offset (SAO), and an adaptive loop filter (ALF). The deblocking filter removes block distortion generated by boundaries between blocks in the reconstructed image. The SAO corrects the offset from the original video pixel-by-pixel for the video to which deblocking has been performed. The ALF can be performed based on values ​​obtained by comparing the reconstructed and filtered video with the original video. Buffer module 318 can be used to store the reconstructed blocks or images calculated by filter module 316, and the reconstructed and stored blocks or images can be provided to inter-frame prediction module 304 when inter-frame prediction is performed.

[0097] Figure 4 Some embodiments according to this disclosure are shown. Figure 2 A detailed block diagram of an exemplary decoder 201 in the decoding system 200. (See attached diagram.) Figure 4 As shown, decoder 201 may include decoding module 402, dequantization module 404, inverse transform module 406, inter-frame prediction module 408, intra-frame prediction module 410, filter module 412, and buffer module 414. It should be understood that... Figure 4 Each element shown is presented independently to represent a different feature or function within the video decoder, and this does not imply that each component is formed by a separate hardware or software configuration unit. That is, for ease of explanation, each element is listed as an element, and at least two elements can be combined into a single element, or an element can be broken down into multiple elements to perform a function. It should also be understood that some elements are not essential for performing the functions described in this disclosure, but may be optional elements used to improve performance. It should also be understood that these elements can be implemented using electronic hardware, firmware, computer software, or any combination thereof. The implementation of these elements in hardware, firmware, or software depends on the specific application and design constraints imposed on the decoder 201.

[0098] When a video stream is input from a video encoder (e.g., encoder 101), the input stream can be decoded by decoder 201 in a procedure opposite to that of the video encoder. Therefore, for ease of description, the decoding details identical to those described above are not repeated here. Decoding module 402 can be used to decode the stream to obtain various information encoded into it, such as the quantization level at each position in the encoded block. In some embodiments, decoding module 402 can perform entropy decoding (decompression) corresponding to entropy encoding (compression) (e.g., VLC, CAVLC, CABAC, SBAC, PIPE encoding, etc.) performed by the encoder to obtain a binary representation (e.g., binary bits). Decoding module 402 can further convert the binary representation into quantization levels using Columbus-Rice binarization methods such as EGk binarization, combined TR, and finite EGk binarization. In addition to the quantization level of the position in the current transform unit, the decoding module 402 can decode various other information, such as parameters used for Columbus-Rice binarization (e.g., Rice parameters), decoding unit block type information, 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, the decoding module 402 can perform rearrangement on the bitstream to reconstruct and rearrange the data from 1D order into 2D rearranged blocks by inverse scanning based on the encoded scan order used by the encoder.

[0099] The dequantization module 404 can be used to dequantize the quantization level at each location of a coded block (e.g., a 2D reconstructed block) to obtain coefficients at each location. In some embodiments, the dequantization module 404 can also perform dependent dequantization based on quantization parameters provided by the encoder. These quantization parameters include information related to the quantizers used in dependent quantization, such as the quantization step size used by each quantizer.

[0100] The inverse transform module 406 can be used to perform inverse transforms, such as inverse DCT, inverse DST, and inverse KLT, on the DCT, DST, and KLT performed by the encoder, to transform data from the transform domain (e.g., coefficients) back to the pixel domain (e.g., luminance and / or chrominance information). In some embodiments, the inverse transform module 406 can selectively perform transform operations (e.g., DCT, DST, KLT) based on multiple pieces of information, such as the prediction method, the size of the current block, and the prediction direction.

[0101] Inter-frame prediction module 408 and intra-frame prediction module 410 can be used to generate prediction blocks based on information related to the generation of prediction blocks provided by decoding module 402 and information about previously decoded blocks or images provided by buffer module 414. As described above, when intra-frame prediction is performed in the same manner as the encoder operation, if the size of the prediction unit and the size of the transform unit are the same, intra-frame prediction can be performed on the prediction unit based on the left-hand pixel, the upper-left pixel, and the top pixel of the prediction unit. However, when performing intra-frame prediction, if the size of the prediction unit and the size of the transform unit are different, intra-frame prediction can be performed based on the transform unit using reference pixels.

[0102] The filter module 412 can provide a reconstructed block or reconstructed image composed of the outputs of the inverse transform module 406 and the prediction module 408 or 410. The filter module 412 may include a deblocking filter, an offset correction module, and an ALF. The buffer module 414 can store the reconstructed image or block and use it as a reference image or reference block for the inter-frame prediction module 408, and can output the reconstructed image.

[0103] Consistent with the scope of this disclosure, the encoding module 320 and the decoding module 402 can be used to apply a quantization level binarization scheme that uses Rice parameters adapted to the bit depth and / or bit rate for encoding video images, thereby improving encoding efficiency.

[0104] Figure 12A flowchart of an exemplary method 1200 for video encoding according to some embodiments of the present disclosure is shown. Method 1200 can be performed at the transform unit level by encoder 101 of encoding system 100 or any other suitable video encoding system. Method 1200 may include operations 1202, 1204, 1206, and 1208 as described below. It should be understood that some of these operations are optional, and some operations may be performed simultaneously or in different ways. Figure 12 Execute in the order shown.

[0105] In operation 1202, the coefficients at each position in the current transform unit are quantized to generate the quantization level of that current transform unit. For example, as... Figure 3 As shown, the quantization module 310 can be used to quantize the coefficients at each position in the current transform unit to generate a corresponding quantization level. In some embodiments, the transform unit corresponds to multiple transform (e.g., three) blocks in the RRC.

[0106] In operation 1204, based on historical variable values ​​from previous transform units preceding the current transform unit, the Rice parameter value for the current position in the current transform unit for Columbus-Rice binarization is determined. This historical variable value is determined based on the bit depth and / or bit rate used to encode the image. In some embodiments, at least one of the adjacent positions of the current position is located outside the current transform unit. In other words, historical variables can be applied to “boundary” positions, for example, as... Figure 9B As shown.

[0107] For example, such as Figure 3 As shown, the encoding module 320 can determine the Rice parameter value for Columbus-Rice binarization at the current position in the current transform unit based on the historical variable values ​​of previous transform units. The encoding module 320 can also determine historical variable values ​​based on the bit depth and / or bit rate used to encode the image.

[0108] In some embodiments, such as Figure 13As shown, to determine historical variable values, in operation 1302, an offset value is obtained based on the bit depth and / or bit rate used to encode the image, and in operation 1304, the historical variable value is determined based on the offset value and a first non-zero Columbus-Rice coding quantization level, for example, by encoding using the residual level (i.e., the abs_remainder syntax element) or the absolute level (i.e., the dec_abs_level syntax element) in the quantization level of the previous transform unit. The offset value can be a non-zero integer. For example, for video coding with high bit depth and high bit rate, the bit depth is 16 bits, and the offset value is 2. In some embodiments, the offset value can increase with increasing bit depth and vice versa. In other words, the offset value is positively correlated with bit depth. In one example, when the bit depth is less than 16 bits, the offset value can be less than 2, such as 1. In another example, when the bit depth is greater than 16 bits, the offset value can be greater than 2, such as 3, 4, 5, etc. Alternatively or additionally, the offset value can be determined based on the bit rate, which in turn can be determined based on the quantization step size (i.e., QP). For example, a higher QP corresponds to a lower bitrate and a lower offset; conversely, a lower QP corresponds to a higher bitrate and a higher offset. In other words, the offset is positively correlated with the bitrate and negatively correlated with the QP. In some embodiments, the offset values ​​for different frames of a video can be the same or different. In other words, the offset value can be adjusted not only based on the bit depth of the encoding but also based on the specific frame being encoded.

[0109] In some embodiments, the binary representation of the current position includes BCBs in the RRC, such as dec_abs_level bits or abs_remainder bits. In some embodiments, to convert the quantization level of the current position, the absolute level in the quantization level of the current position is converted to a binary representation, such as the bypass-coded dec_abs_level bits in the RRC. For example, the absolute level in the quantization level can be binary-coded using Columbus-Rice binarization with Rice parameters adapted to the bit depth and / or bit rate used for encoding the image, to obtain the bypass-coded dec_abs_level bits in the RRC, as illustrated in the following pseudocode example:

[0110]

[0111] In the pseudocode above, `updateHist&&dec_abs_level[n]>0` indicates that the history variable `histValue` can still be updated in this transform unit because the history variable `histValue` is updated no more than once in this transform unit, and indicates that the absolute level `dec_abs_level[n]` in the quantization level is for the first non-zero position encoded with `dec_abs_level`. Therefore, the value of the history counter `StatCoeff[cIdx]` can be updated from its value (e.g., the value of the history counter in the previous transform unit) through two parts: (1) `Floor(Log2(dec_abs_level[n]))` and (2) `offset`. The first part can be determined based on the absolute level in the first non-zero Columbus-Rice encoded quantization level (e.g., encoded with `dec_abs_level` in this transform unit). As mentioned above, the offset value can be obtained based on the bit depth and / or bit rate used to encode the image, for example, an offset value of 2 for a bit depth of 16 bits. `updateHist=0` means that the updated value of the history variable `histValue` (obtained from the updated history counter `StatCoeff[cIdx]`) cannot be updated again in this transformation unit, because each transformation unit can only be updated once at most.

[0112] In some embodiments, to transform the quantization level at the current position, the remaining levels in the quantization level at the current position are converted to a binary representation, such as the bypass-coded abs_remainder bits in RRC. For example, the remaining levels in the quantization level can be binary-coded using Columbus-Rice binarization with Rice parameters adapted to the bit depth and / or bit rate used to encode the image, to obtain the bypass-coded abs_remainder bits in RRC, as shown in the following pseudocode example:

[0113]

[0114] In the pseudocode above, `updateHist&&abs_remainder[n]>0` indicates that the history variable `histValue` can still be updated in this transform unit because the history variable `histValue` is updated no more than once in this transform unit, and indicates that the remaining level in the quantization level `abs_remainder[n]` is for the first non-zero position encoded with this syntax element. Therefore, the value of the history counter `StatCoeff[cIdx]` can be updated from its value (e.g., the value of the history counter in the previous transform unit) through two parts: (1) `Floor(Log2(abs_remainder[n]))` and (2) `offset`. The first part can be determined based on the remaining level in the first non-zero quantization level encoded with `abs_remainder` in this transform unit. As mentioned above, the offset value can be obtained based on the bit depth and / or bit rate used to encode the image, for example, an offset value of 2 for a bit depth of 16 bits. `updateHist=0` means that the updated value of the history variable `histValue` (obtained from the updated history counter `StatCoeff[cIdx]`) cannot be updated again in this transformation unit, because each transformation unit can only be updated once at most.

[0115] Once the value of the historical variable histValue of the previous transformation unit is determined as the initial or updated value, the value of the variable localSumAbs at the current position in the current transformation unit can be determined accordingly (as per the pseudocode procedure described above), thereby enabling the determination of the Rice parameter value at the current position (as per Table 1 and the value of the variable shiftVal described above).

[0116] Please refer to this again. Figure 12 In operation 1206, Columbus-Rice binarization with Rice parameter values ​​is used to convert the quantization level of the current position into a binary representation. For example... Figure 3 As shown, the encoding module 320 can be used to convert the quantization level (absolute level or residual level) at the current position into a binary representation (such as binary bits) using a combination of TR and finite EGk binarization with Rice parameter values. Because the Rice parameter is adjusted based on the bit depth and / or bit rate used to encode the image, the length of the resulting binary representation (such as the number of binary bits) can be optimized, thereby improving encoding efficiency.

[0117] In operation 1208, the binary representation of the current position is compressed into the bitstream. In some embodiments, the Rice parameter value is also compressed into the bitstream. For example... Figure 3 As shown, the encoding module 320 can be used to compress the binary representation and Rice parameter value of each position in the current transform unit into a bitstream using an entropy coding algorithm (e.g., CABAC).

[0118] Figure 14 A flowchart of an exemplary method 1400 for video decoding according to some embodiments of the present disclosure is shown. Method 1400 may be performed at the transform unit level by decoder 201 of decoding system 200 or any other suitable video decoding system. Method 1400 may include operations 1402, 1404, and 1406 as described below. It should be understood that some of these operations are optional, and some operations may be performed simultaneously or in different ways. Figure 14 Execute in the order shown.

[0119] In operation 1402, the bitstream is decompressed to obtain the binary representation of the current position in the current transform unit and the Rice parameter value for Columbus-Rice binarization at that current position. This Rice parameter value is determined based on historical variable values ​​from previous transform units preceding the current transform unit. These historical variable values ​​are determined based on at least one of the bit depth or bit rate used to decode the image. Figure 4 As shown, the decoding module 402 can be used to decompress the bitstream using an entropy coding algorithm (e.g., CABAC) as described above to obtain the binary representation (e.g., binary bits) of the position in the current transform unit and the Rice parameter value of that position.

[0120] In operation 1404, Columbus-Rice binarization with Rice parameter values ​​is used to convert the binary representation to the quantization level of the current position. For example... Figure 4 As shown, the decoding module 402 can be used to convert a binary representation (e.g., binary bits) into a quantization level (e.g., absolute level or residual level) of the position in the current transform unit using a combination of TR and finite EGk binarization with Rice parameter values.

[0121] In operation 1406, the quantization level of the current position is dequantized to generate the coefficient for the current position. For example... Figure 4 As shown, the dequantization module 404 can be used to dequantize the quantization level at each position to generate coefficients at each position in the transform unit.

[0122] According to some aspects of this disclosure, the quantization level binarization scheme uses Rice parameters adapted to the bit depth and / or bit rate for encoding video images, and this scheme is applied to the bypass coding mode in RRC.

[0123] Figure 11A Exemplary bypass coding patterns in RRCs according to some embodiments of this disclosure are shown. For example... Figure 11AAs shown, the bitstream can begin with the transform unit bit of a transform unit. In CABAC, many transform unit bits can be reserved as CCBs for context coding. Transform unit bits can include the coded Cb transform block flag (tu_cb_coded_flag), the coded Cr transform block flag (tu_cr_coded_flag), the coded luminance transform block flag (tu_y_coded_flag), the quantization parameter increment value (cu_qp_delta_abs), the chroma quantization parameter offset flag (cu_chroma_qp_offset_flag), the chroma quantization parameter offset index (cu_chroma_qp_offset_idx), the joint chroma flag (tu_joint_cbcr_residual_flag), and the transform skip flag (transform_skip_flag). It is understood that transform unit bits can also include BCBs, such as the quantization parameter increment sign flag (cu_qp_delta_sign_flag) in some examples.

[0124] like Figure 11A As shown, the transformation unit can correspond to the brightness sample (i.e. Figure 11A A coded block of “Y” (e.g., a transform block in RRC) and two corresponding coded blocks of the chroma sample (i.e., Figure 11A (referring to "Cb" and "Cr" in the original text). Therefore, the transform unit bits can include three transform_skip_flags corresponding to the Y, Cb, and Cr coded blocks, respectively, and each transform_skip_flag is CCB. For each coded block, the first residual coded bit encoded / decoded into the bitstream after transform_skip_flag can be the last valid coefficient prefix (last_sig_coeff_x_prefix and last_sig_coeff_y_prefix), which are still retained as CCB. Figure 11A As shown, all other residual code bits in each coded block can be BCB. For example, residual code bits in bypass coding can include the last valid coefficient suffixes (last_sig_coeff_x_suffix and last_sig_coeff_y_suffix), the coded subblock flag (sb_coded_flag), the absolute level (dec_abs_level), and the coefficient sign flag (coeff_sign_flag).

[0125] In other words, a bypass coding mode can be enabled for each coding block after `last_sig_coeff_x_prefix` and `last_sig_coeff_y_prefix` and before `sb_coded_flag`. In some embodiments where `last_sig_coeff_x_sufix` and `last_sig_coeff_y_sufix` also need to be encoded, the bypass coding mode can be enabled for each coding block after `last_sig_coeff_x_prefix` and before `last_sig_coeff_y_sufix` and `last_sig_coeff_y_sufix`. In other words, the bypass coding mode can be enabled for each coding block immediately following `last_sig_coeff_x_prefix` and `last_sig_coeff_y_prefix`. In bypass coding mode, the residual coded bits `sb_coded_flag` at each position of each sub-block can be transformed from CCB to BCB. For example, the encoding of all other CCBs can be skipped by setting the value of the remaining CCB (remBinsPass1) to less than a threshold of 4 (e.g., 0), such as the valid flag (sig_coeff_flag), the greater than 1 flag (abs_level_gtx_flag[n][0]), the parity flag (par_level_flag), and the greater than flag (abs_level_gtx_flag[n][1]). Therefore, the encoding of the remaining level / remainder (abs_remainder[n]) can also be skipped. In other words, in bypass coding mode, the first and second coding channels at every position in every sub-block of the coded block can be skipped, so that the CCB will not appear in the first coding channel. Therefore, in high throughput mode, each coded block can be encoded using only BCBs, except for last_sig_coeff_x_prefix and last_sig_coeff_y_prefix. The encoding of each quantization level can be done by the absolute level (dec_abs_level) of the bypass coding, instead of the remaining level / remainder (abs_remainder).

[0126] Figure 11B Another exemplary bypass coding pattern in RRC according to some embodiments of this disclosure is shown. Figure 11A The bypass codes shown are different. Figure 11B The bypass coding mode further transforms last_sig_coeff_x_prefix and last_sig_coeff_y_prefix from CCB to BCB, thereby enabling... Figure 11BIn the bypass coding mode, each coding block can be encoded using only BCB. For example... Figure 11B As shown, bypass coding mode can be enabled at the coding block level. (And...) Figure 11A Compared to the proposed solution, Figure 11B The scheme shown further improves video coding throughput by changing the last effective coefficient prefix from CCB to BCB. For very high bit rates and high bit depths of operation, the number of bits at the last effective coefficient position can also be very high, since most blocks are encoded in small block sizes. Because the index of the context variable is derived for each bit of last_sig_coeff_x_prefix and last_sig_coeff_y_prefix, deriving the context index of last_sig_coeff_x_prefix and last_sig_coeff_y_prefix can impact throughput.

[0127] Figure 11C This illustrates yet another exemplary bypass coding mode in transform unit coding according to some embodiments of the present disclosure. Figure 11B The bypass coding methods shown are different. Figure 11C The bypass coding mode further changes transform_skip_flag from CCB to BCB.

[0128] Figure 11D This illustrates yet another exemplary bypass coding mode in transform unit coding according to some embodiments of the present disclosure. Figure 11C The bypass alignment schemes shown are different. Figure 11D The bypass coding mode shown further transforms the transform unit bits in the transform unit from CCB to BCB, so that in bypass coding mode, all transform unit bits in the transform unit are also encoded as BCB. For example, in bypass coding mode, transform_skip_flags, tu_cb_coded_flag, tu_cr_coded_flag, tu_y_coded_flag, cu_qp_delta_abs, cu_chroma_qp_offset_flag, cu_chroma_qp_offset_idx, and tu_joint_cbcr_residual_flag can also be transformed from CCB to BCB. Therefore, in Figure 11D In the bypass coding mode shown, only the BCB can be used to encode the transform unit and the three corresponding coding blocks. Figure 11C Compared to the proposed solution, Figure 11DThe bypass coding mode shown avoids the CABAC coding engine switching between context coding and bypass coding when encoding transform unit bits only as BCB, thus further improving video coding throughput. The bypass coding mode can be enabled at the transform unit level.

[0129] Understandably, in some examples, the history counter StatCoeff[cIdx] can be adjusted differently for the residual level / remainder bits (abs_remainder) and absolute level bits (dec_abs_level) of the quantization level. For example, if the first non-zero Golomb-Rice coded transform coefficient in the transform unit is encoded as abs_remainder, its history counter StatCoeff[cIdx] is designed to be greater than the history counter StatCoeff[cIdx] for the first non-zero Golomb-Rice coded transform coefficient in the transform unit encoded as dec_abs_level. This design is reasonable when both abs_remainder and dec_abs_level are allowed to encode coefficient levels. If abs_remainder is used to update the history counter StatCoeff[cIdx], it means that the absolute level in the current transform unit is most likely to be a relatively large value. If dec_abs_level is used to update the history counter StatCoeff[cIdx], it means that the absolute level in the current transform unit is likely to be a relatively small value.

[0130] However, in the bypass encoding mode of RRC disclosed herein, because the abs_remainder bit encoding is skipped and only the dec_abs_level bit encoding is allowed, only a relatively small value of the history counter StatCoeff[cIdx] can be used if the offset is not used to adjust the value of the history counter. As mentioned above, the offset can be used to determine the value of the history counter StatCoeff[cIdx] used to encode the dec_abs_level bits. In some embodiments, a bypass flag indicating the bypass encoding mode is applied to use / not use the offset in different modes, as follows:

[0131] StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(dec_abs_level[]))+(bypassFlag?Offset:0))>>1

[0132] If bypassFlag equals 1, bypass encoding mode is enabled. In RRC's bypass encoding mode, the absolute level in all quantization levels is encoded using the dec_abs_level bit instead of the abs_remainder bit, and the value of the history counter StatCoeff[cIdx] is determined using an offset ("Offset", e.g., 2). If bypassFlag equals 0, bypass mode is not enabled. Quantization levels can be encoded using both the abs_remainder and dec_abs_level bits, and the value of the history counter StatCoeff[cIdx] used to encode the dec_abs_level bit is not determined using an offset ("0").

[0133] In all aspects of this disclosure, the functions described herein can be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions can be stored as instructions on a non-transitory computer-readable medium. Computer-readable media include computer storage media. Storage media can be, for example... Figure 1 and Figure 2 The processor 102 described herein can access any available medium. By way of example and not limitation, such computer-readable media may include RAM, ROM, EEPROM, CD-ROM or other optical disc storage, HDD, flash drive, SSD, or any other medium that can be used to carry or store the required 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 computer. The terms disk and disc as used herein include CD, laser disc, optical disc, digital versatile disc (DVD), and floppy disk, wherein disks typically copy data magnetically, while discs use lasers to copy data optically. Combinations of the above should also be included within the scope of computer-readable media.

[0134] According to one aspect of this disclosure, a method for encoding an image including a video of a current transform unit is disclosed. A processor quantizes the coefficients at each position in the current transform unit to generate a quantization level for the current transform unit. The processor determines a Rice parameter value for Columbus-Rice binarization at the current position in the current transform unit based on historical variable values ​​from previous transform units preceding the current transform unit. This historical variable value is determined based on at least one of a bit depth or a bit rate used to encode the image. The processor converts the quantization level of the current position into a binary representation using Columbus-Rice binarization with the Rice parameter value. The processor compresses the binary representation of the current position into the bitstream.

[0135] In some embodiments, an offset value is obtained based on at least one of the bit depth or bit rate used to encode the image. Historical variable values ​​are determined based on the offset value and a first non-zero Columbus-Rice coded quantization level in the quantization levels of the previous transform unit.

[0136] In some embodiments, the offset value is a non-zero integer.

[0137] In some embodiments, the bit depth is 16 bits and the offset is 2.

[0138] In some embodiments, at least one of the adjacent positions of the current position is located outside the current transformation unit.

[0139] In some embodiments, the coded block is a transform block encoded using RRC.

[0140] In some embodiments, the binary representation of the current position includes the BCB in the RRC.

[0141] In some embodiments, in order to convert the quantization level of the current position, the absolute level in the quantization level of the current position is converted into a binary representation.

[0142] According to another aspect of this disclosure, a system for encoding an image including a video of a current transform unit includes a memory for storing instructions and a processor coupled to the memory. The processor is configured to, upon execution of instructions, quantize the coefficients at each position in the current transform unit to generate a quantization level for the current transform unit. The processor is also configured to, upon execution of instructions, determine a Rice parameter value for Columbus-Rice binarization of the current position in the current transform unit based on historical variable values ​​of previous transform units preceding the current transform unit. This historical variable value is determined based on at least one of a bit depth or a bit rate used to encode the image. The processor is further configured to, upon execution of instructions, convert the quantization level of the current position into a binary representation using Columbus-Rice binarization with the Rice parameter value. The processor is also configured to, upon execution of instructions, compress the binary representation of the current position into a bitstream.

[0143] In some embodiments, the processor is further configured to obtain an offset value based on at least one of the bit depth or bit rate used to encode the image, and to determine historical variable values ​​based on the offset value and a first non-zero Columbus-Rice coded quantization level in the quantization levels of the previous transform unit.

[0144] In some embodiments, the offset value is a non-zero integer.

[0145] In some embodiments, the bit depth is 16 bits and the offset is 2.

[0146] In some embodiments, at least one of the adjacent positions of the current position is located outside the current transformation unit.

[0147] In some embodiments, the coded block is a transform block encoded using RRC.

[0148] In some embodiments, the binary representation of the current position includes the BCB in the RRC.

[0149] In some embodiments, in order to convert the quantization level of the current position, the processor is further configured to convert the absolute level in the quantization level of the current position into a binary representation.

[0150] According to another aspect of this disclosure, a non-transitory computer-readable medium storing instructions that, when executed by a processor, perform processing for encoding an image including a video of a current transform unit. The processing includes quantizing coefficients at each position in the current transform unit to generate a quantization level for the current transform unit. The processing also includes determining a Rice parameter value for Columbus-Rice binarization at the current position in the current transform unit based on historical variable values ​​from previous transform units preceding the current transform unit. The historical variable values ​​are determined based on at least one of a bit depth or a bit rate used to encode the image. The processing further includes converting the quantization level of the current position into a binary representation using Columbus-Rice binarization with the Rice parameter value. The processing also includes compressing the binary representation of the current position into a bitstream.

[0151] According to another aspect of this disclosure, a method for decoding an image including a video of the current transform unit is disclosed. A processor decompresses the bitstream to obtain a binary representation of the current position in the current transform unit and a Rice parameter value for Columbus-Rice binarization of the current position. The Rice parameter value is determined based on historical variable values ​​from previous transform units preceding the current transform unit. These historical variable values ​​are determined based on at least one of a bit depth or a bit rate used to decode the image. The processor uses Columbus-Rice binarization with the Rice parameter value to convert the binary representation into a quantization level for the current position. The processor dequantizes the quantization level for the current position to generate coefficients for the current position.

[0152] In some embodiments, the historical variable values ​​are determined as follows: an offset value is obtained based on at least one of the bit depth or bit rate used to decode the image, and the historical variable values ​​are determined based on the offset value and the first non-zero Columbus-Rice coded quantization level in the previous transform unit.

[0153] In some embodiments, the offset value is a non-zero integer.

[0154] In some embodiments, the bit depth is 16 bits and the offset is 2.

[0155] In some embodiments, at least one of the adjacent positions of the current position is located outside the current transformation unit.

[0156] In some embodiments, the coded block is a transform block encoded using RRC.

[0157] In some embodiments, the binary representation of the current position includes bypass coded bits in the RRC.

[0158] In some embodiments, in order to convert the quantization level of the current position, the absolute level in the quantization level of the current position is converted into a binary representation.

[0159] According to another aspect of this disclosure, a system for decoding an image of video including a current transform unit includes a memory for storing instructions and a processor coupled to the memory. The processor, upon execution of instructions, decompresses the bitstream to obtain a binary representation of the current position in the current transform unit and a Rice parameter value for Columbus-Rice binarization of the current position. The Rice parameter value is determined based on historical variable values ​​from previous transform units preceding the current transform unit. The historical variable values ​​are determined based on at least one of a bit depth or a bit rate used to decode the image. The processor is also configured, upon execution of instructions, to convert the binary representation into a quantization level of the current position using Columbus-Rice binarization with the Rice parameter value. The processor is further configured, upon execution of instructions, to dequantize the quantization level of the current position to generate coefficients for the current position.

[0160] In some embodiments, the historical variable values ​​are determined as follows: an offset value is obtained based on at least one of the bit depth or bit rate used to decode the image, and the historical variable values ​​are determined based on the offset value and the first non-zero Columbus-Rice coded quantization level in the previous transform unit.

[0161] In some embodiments, the offset value is a non-zero integer.

[0162] In some embodiments, the bit depth is 16 bits and the offset is 2.

[0163] In some embodiments, at least one of the adjacent positions of the current position is located outside the current transformation unit.

[0164] In some embodiments, the coded block is a transform block encoded using RRC.

[0165] In some embodiments, the binary representation of the current position includes the BCB in the RRC.

[0166] In some embodiments, in order to convert the quantization level of the current position, the processor is further configured to convert the absolute level in the quantization level of the current position into a binary representation.

[0167] According to another aspect of this disclosure, a non-transitory computer-readable medium storing instructions, when executed by a processor, performs processing for decoding an image including a video of the current transform unit. The processing includes decompressing a bitstream to obtain a binary representation of the current position in the current transform unit and a Rice parameter value for Columbus-Rice binarization of the current position. The Rice parameter value is determined based on historical variable values ​​of previous transform units preceding the current transform unit. The historical variable values ​​are determined based on at least one of a bit depth or a bit rate used to decode the image. The processing also includes converting the binary representation to a quantization level of the current position using Columbus-Rice binarization with the Rice parameter value. The processing further includes dequantizing the quantization level of the current position to generate coefficients for the current position.

[0168] The foregoing description of the embodiments will thus reveal the general nature of this disclosure, so that others can readily modify and / or adapt these embodiments to various applications by applying knowledge within the art, without excessive experimentation and without departing from the general concept of this disclosure. Therefore, based on the teachings and guidance presented herein, such adaptations and modifications are intended to fall within the meaning and scope of equivalents of the disclosed embodiments. It should be understood that the wording or terminology herein is for descriptive rather than limiting purposes, and that the terminology or terminology of this specification will be interpreted by those skilled in the art based on the teachings and guidance.

[0169] Embodiments of this disclosure have been described above using functional building blocks that illustrate the implementation of specified functions and their relationships. For ease of description, the boundaries of these functional building blocks have been arbitrarily defined herein. Alternative boundaries can be defined as long as the specified functions and their relationships are properly performed.

[0170] The summary and abstract section may set forth one or more, but not all, exemplary embodiments of this disclosure as contemplated by the inventors(s), and is therefore not intended to limit this disclosure and the appended claims in any way.

[0171] Various functional blocks, modules, and steps have been disclosed above. The arrangements provided are illustrative and not limiting. Therefore, functional blocks, modules, and steps may be rearranged or combined in ways different from those provided in the examples above. Similarly, some embodiments include only a subset of functional blocks, modules, and steps, and any such subset is permitted.

[0172] The breadth and scope of this disclosure should not be limited by any of the exemplary embodiments described above, but should be defined solely by the appended claims and their equivalents.

Claims

1. A method for decoding an image of video, the image including a current transform unit, the method comprising: The processor decompresses the bitstream to obtain a binary representation of the current position in the current transform unit and a Rice parameter value for Columbus-Rice binarization of the current position, wherein the Rice parameter value is determined based on historical variable values ​​of previous transform units preceding the current transform unit, and the historical variable values ​​are determined based on at least one of bit depth or bit rate for decoding the image. The processor uses Columbus-Rice binarization with the Rice parameter value to convert the binary representation into a quantization level for the current position; and The processor dequantizes the quantization level of the current position to generate coefficients for the current position. The historical variable values ​​are determined as follows: The historical variable value is determined based on the offset value and the first non-zero Columbus-Rice coded quantization level in the previous transform unit.

2. The method according to claim 1, wherein, The offset value is based on at least one of the bit depth or the bit rate used to decode the image.

3. The method according to claim 2, wherein, The offset value is a non-zero integer.

4. The method according to claim 3, wherein, The bit depth is 16 bits, and the offset value is 2.

5. The method according to claim 1, wherein, At least one of the adjacent positions of the current position is located outside the current transformation unit.

6. The method according to claim 1, wherein, The binary representation of the current position includes bypass coded bits in conventional residual coding (RRC).

7. The method according to claim 1, wherein, Converting the binary representation includes converting the binary representation into an absolute level in the quantization level of the current position.

8. A method for encoding an image for video, the image including a current transform unit, the method comprising: The processor quantizes the coefficients at each position in the current transform unit to generate the quantization level of the current transform unit; The processor determines the Rice parameter value for Columbus-Rice binarization at the current position in the current transform unit based on the historical variable values ​​of previous transform units preceding the current transform unit, wherein the historical variable values ​​are determined based on at least one of bit depth or bit rate for encoding the image; The processor uses Columbus-Rice binarization with the Rice parameter value to convert the quantization level of the current position into a binary representation; and The processor compresses the binary representation of the current position into the bitstream. The historical variable values ​​are determined as follows: The historical variable value is determined based on the offset value and the first non-zero Columbus-Rice coded quantization level in the previous transform unit.

9. The method according to claim 8, wherein, The offset value is based on at least one of the bit depth or the bit rate used to encode the image.

10. A non-transitory computer-readable medium storing computer instructions and a bitstream, the instructions, when executed by a processor, performing processing of an image for encoding video to generate the bitstream, the image including a current transformation unit, the processing including: Quantize the coefficients at each position in the current transform unit to generate the quantization level of the current transform unit; Based on the historical variable values ​​of previous transformation units preceding the current transformation unit, the Rice parameter value for the current position in the current transformation unit for Columbus-Rice binarization is determined, wherein the historical variable values ​​are determined based on at least one of the bit depth or bit rate used to encode the image; The quantization level of the current position is converted to a binary representation using Columbus-Rice binarization with the stated Rice parameter value; and Compress the binary representation of the current position into the bitstream. The historical variable values ​​are determined as follows: The historical variable value is determined based on the offset value and the first non-zero Columbus-Rice coded quantization level in the previous transform unit.