Quantization level binarization method and system in video coding
By adaptively determining the Rice parameters in video encoding and performing Columbus-Rice binarization, the problem of insufficient encoding performance and throughput under high bit depth and high bit rate conditions is solved, and more efficient video data compression is achieved.
Patent Information
- Application Number
- CN202411948814.8
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2021-06-03
- Filing Date
- 2022-06-01
- Publication Date
- 2025-04-11
- Estimated Expiration
- 2042-06-01
AI Technical Summary
The existing video encoding technology has limited encoding performance and throughput under high bit depth and high bit rate conditions, especially in the bypass encoding mode. The determination of Rice parameters does not adapt to bit depth and bit rate, which affects the encoding efficiency and throughput.
The Rice parameters suitable for the bit depth and bit rate of the video image are used to determine the Rice parameter value in the current transformation unit by calculating the historical variable value, and use this parameter to perform Columbus-Rice binarization to optimize the binary representation of the quantization level.
The encoding efficiency and throughput of high bit depth and high bit rate video encoding are improved, especially in the bypass encoding mode in RRC. By optimizing the Rice parameters, the length of the binary representation is reduced and the efficiency of data compression is improved.
Smart Images

Figure CN119815025A_ABST
Abstract
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims priority to U.S. Provisional Patent Application No. 63 / 196,618, filed on June 3, 2021, entitled “Bypass Residual Coding for Video Compression,” the entire contents of which are incorporated into this application by introduction. Technical Field
[0002] Embodiments of the present disclosure relate to video coding, and more particularly to a method and system for binarizing quantization levels in video coding. Background Art
[0003] Digital video has become mainstream and is widely used in applications including digital television, video phones, and teleconferencing. These digital video applications are feasible due to advances in computing and communication technology and efficient video coding techniques. Various video coding techniques can be used to compress video data, so that one or more video coding standards can be used to perform encoding of video data. 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 the like. Summary of the invention
[0004] According to one aspect of the present disclosure, a method for encoding an image of a video including a current transform unit is disclosed. A processor quantizes coefficients of each position in the current transform unit to generate a quantization level of the current transform unit. The processor determines a Rice parameter value for Golomb-Rice binarization of a current position in the current transform unit based on a historical variable value of a previous transform unit before the current transform unit. The historical variable value is determined based on at least one of a bit depth or a bit rate for encoding an image. The processor converts the quantization level of the current position into a binary representation using Golomb-Rice binarization with a Rice parameter value. The processor compresses the binary representation of the current position into a bitstream.
[0005] According to another aspect of the present disclosure, a system for encoding an image of a video including a current transform unit includes a memory for storing instructions and a processor coupled to the memory. The processor is used to quantize the coefficients of each position in the current transform unit to generate a quantization level of the current transform unit when executing the instructions. The processor is also used to determine the Rice parameter value for Golomb-Rice binarization of the current position in the current transform unit based on the historical variable value of the previous transform unit before the current transform unit when executing the instructions. The historical variable value is determined based on at least one of the bit depth or code rate used to encode the image. The processor is also used to convert the quantization level of the current position into a binary representation using Golomb-Rice binarization with Rice parameter values when executing the instructions. The processor is also used to compress the binary representation of the current position into a bitstream when executing the instructions.
[0006] According to another aspect of the present disclosure, a non-temporary computer-readable medium storing instructions is disclosed, which, when executed by a processor, performs processing for encoding an image of a video including a current transform unit. The processing includes quantizing the coefficients of each position in the current transform unit to generate a quantization level for the current transform unit. The processing also includes determining the Rice parameter value for Columbus-Rice binarization of the current position in the current transform unit based on the historical variable value of the previous transform unit before the current transform unit. The historical variable value is determined based on at least one of the bit depth or bit rate used to encode the image. The processing also includes converting the quantization level of the current position into a binary representation using Columbus-Rice binarization with Rice parameter values. The processing also includes compressing the binary representation of the current position into a bitstream.
[0007] According to another aspect of the present disclosure, a method for decoding an image of a video including a current transform unit is disclosed. A processor decompresses a bitstream to obtain a binary representation of a 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 a historical variable value of a previous transform unit before the current transform unit. The historical variable value is determined based on at least one of a bit depth or a bit rate for a decoded image. The processor converts the binary representation into a quantization level of the current position using Columbus-Rice binarization with a Rice parameter value. The processor dequantizes the quantization level of the current position to generate a coefficient of the current position.
[0008] According to another aspect of the present disclosure, a system for decoding an image of a video including a current transform unit includes a memory for storing instructions and a processor coupled to the memory. The processor is used to decompress the code stream when executing the instructions 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 a historical variable value of a previous transform unit before the current transform unit. The historical variable value is determined based on at least one of the bit depth or bit rate used to decode the image. The processor is also used to convert the binary representation into a quantization level of the current position using Columbus-Rice binarization with Rice parameter values when executing the instructions. The processor is also used to dequantize the quantization level of the current position when executing the instructions to generate a coefficient of the current position.
[0009] According to another aspect of the present disclosure, a non-temporary computer-readable medium storing instructions is disclosed, which, when executed by a processor, performs processing for decoding an image of a video including a current transform unit. The processing includes decompressing 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 a historical variable value of a previous transform unit before the current transform unit. The historical variable value is determined based on at least one of the bit depth or bit rate used to decode the image. The processing also includes converting the binary representation into a quantization level of the current position using Columbus-Rice binarization with a Rice parameter value. The processing also includes dequantizing the quantization level of the current position to generate a coefficient of the current position.
[0010] These illustrative embodiments are mentioned not to limit or define the present disclosure, but to provide examples to aid understanding thereof. Additional embodiments are described in the detailed description and further description is provided. BRIEF DESCRIPTION OF THE DRAWINGS
[0011] The accompanying drawings, which are incorporated herein and form a part of the specification, illustrate embodiments of the present disclosure and, together with the description, further serve to explain the principles of the present disclosure and enable those skilled in the art to make and use the present disclosure.
[0012] Figure 1 A block diagram of an exemplary encoding system according to some embodiments of the present disclosure is shown.
[0013] Figure 2 A block diagram of an exemplary decoding system according to some embodiments of the present disclosure is shown.
[0014] Figure 3 Some embodiments of the present disclosure are shown Figure 1 Detailed block diagram of an exemplary encoder in the encoding system in.
[0015] Figure 4 Some embodiments of the present disclosure are shown Figure 2 Detailed block diagram of an exemplary decoder in a decoding system in .
[0016] Figure 5 An exemplary image divided into coding tree units (CTUs) according to some embodiments of the present disclosure is shown.
[0017] Figure 6 An exemplary CTU divided into coding units (CUs) according to some embodiments of the present disclosure is shown.
[0018] Figure 7 An exemplary transform block encoded using regular residual coding (RRC) according to some embodiments of the present disclosure is shown.
[0019] Figure 8 Exemplary codewords used in Golomb-Rice binarization of input levels according to some embodiments of the present disclosure are shown.
[0020] Fig.9A and Fig. 9B An exemplary template pattern for determining the localSumAbs variable in a transform unit according to some embodiments of the present disclosure is shown.
[0021] Fig.10 The encoding process in RCC is shown.
[0022] Fig.11A An exemplary bypass coding mode in RCC according to some embodiments of the present disclosure is shown.
[0023] Fig. 11B Another exemplary bypass coding mode in RCC according to some embodiments of the present disclosure is shown.
[0024] Fig. 11C Another exemplary bypass coding mode in transform unit (TU) coding according to some embodiments of the present disclosure is shown.
[0025] Fig.11D An exemplary bypass coding mode in TU encoding according to some embodiments of the present disclosure is shown.
[0026] Fig.12 A flowchart of an exemplary method of video encoding according to some embodiments of the present disclosure is shown.
[0027] Fig.13A flow chart of an exemplary method of determining a historical variable value according to some embodiments of the present disclosure is shown.
[0028] Fig.14 A flowchart of an exemplary method of video decoding according to some embodiments of the present disclosure is shown.
[0029] Embodiments of the present disclosure will be described with reference to the accompanying drawings. DETAILED DESCRIPTION
[0030] Although some configurations and arrangements are discussed, it should be understood that this is done for illustrative purposes only. Those skilled in the art will recognize that other configurations and arrangements may be used without departing from the spirit and scope of the present disclosure. Obviously, it will be apparent to those skilled in the art that the present disclosure may also be applied to various other applications.
[0031] It should be noted that references to "one embodiment", "an embodiment", "exemplary embodiments", "some embodiments", "certain embodiments", etc. in the specification indicate that the described embodiments may include specific features, structures, or characteristics, but each embodiment does not necessarily include the specific features, structures, or characteristics. In addition, 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 be aware that such feature, structure, or characteristic may also be implemented in conjunction with other embodiments, whether or not explicitly described.
[0032] In general, terms can be understood at least in part from usage in context. For example, the term "one or more" as used herein can be used to describe any feature, structure, or characteristic in a singular sense, or can be used to describe a combination of features, structures, or characteristics in a plural sense, which depends at least in part on the context. Similarly, terms such as "one," "an," or "the" can also be understood as being used in the singular or in the plural, which depends at least in part on the context. In addition, the term "based on" can be understood as not necessarily intended to express a set of exclusive factors, but can allow for the presence of other factors that are not necessarily explicitly described, which also depends at least in part on the context.
[0033] Various aspects of the video encoding system will be described below with reference to various devices and methods. These devices and methods will be described in the detailed description below and illustrated in the accompanying drawings by various modules, components, circuits, steps, operations, processes, algorithms, etc. (collectively referred to as "elements"). These elements can be implemented using electronic hardware, firmware, computer software, or any combination thereof. Whether these elements are implemented in the form of hardware, firmware, or software depends on the specific application and the design constraints imposed on the overall system.
[0034] The techniques described herein can be used in various video coding applications. As described herein, video coding includes encoding and decoding a video. The encoding and decoding of a video can be performed in units of blocks. For example, encoding / decoding processes such as transform, quantization, prediction, loop filtering, reconstruction, etc. can be performed on a coding block, a transform block, or a prediction block. As described herein, a block to be encoded / decoded will be referred to as a "current block". For example, depending on the current encoding / decoding process, the current block may represent a coding block, a transform block, or a prediction block. In addition, it should be understood that the term "unit" used in the present disclosure indicates a basic unit for performing a specific encoding / decoding process, and the term "block" indicates a sample array of a predetermined size. Unless otherwise specified, "block" and "unit" can be used interchangeably.
[0035] In video coding, quantization is used to reduce the dynamic range of a transformed or untransformed video signal so that fewer bits can be used to represent the video signal. Before quantization, a transformed or untransformed video signal at a specific position is referred to as a "coefficient". After quantization, the quantized value of the coefficient is referred to as a "quantization level" or "level". In the present disclosure, the quantization level of a position refers to the quantization level of the coefficient at that position. In video coding, residual coding is used to encode the quantization level of the position into the bitstream. After quantization, there may be N×M quantization levels for an N×M coding block. These N×M quantization levels may be zero or non-zero values. If the level is not binary, a binarization method may be used to further convert (e.g., binarize) the non-zero level into a binary representation (e.g., binary bits). A coding algorithm (e.g., an entropy coding algorithm) may be used to compress the binary representation (e.g., binary bits) into a bitstream. The binarization method may be, but is not limited to, Golomb-Rice binarization, such as a combined truncated Rice binarization (TR) and k-th order Exp-Golomb (EGk) binarization, and EGk binarization. The entropy coding algorithm may be, but is not limited to, a variable-length coding (VLC) scheme, a context-adaptive VLC (CAVLC) scheme, an arithmetic coding scheme, 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.
[0036] For example, the combined TR and limited EGk binarization of universal video coding (H.266 / VVC) uses many parameters, such as truncation parameters, Rice parameters, and length of dynamic range (LDR) of coefficients. The Rice parameters determine the initial suffix code length. The truncation parameters are used to determine the number of input value ranges that can use the initial suffix code length. The LDR is used to determine the maximum suffix code length. For high-bit depth and high-bitrate video coding (e.g., bit depth of 16 bits), the quantization level to be binarized is on average much larger than the quantization level to be binarized of the current H.266 / VVC (e.g., bit depth less than 16 bits, such as 10 bits). Therefore, for high-bit depth and high-bitrate video coding, the current parameters for binarization quantization levels (e.g., Rice parameters) may not be optimal, and the current H.266 / VVC encoding performance may be affected.
[0037] In order to improve the encoding performance of video coding, especially high bit depth and high bit rate video coding, the present disclosure provides a quantization level binarization scheme, which uses Rice parameters adapted to the bit depth and bit rate for encoding video images. In some embodiments, based on the historical variable values of the previous transform unit before the current transform unit, the Rice parameter value for Columbus-Rice binarization of the current position in the current transform unit is determined, and the historical variable value is determined based on the bit depth and / or bit rate for encoding 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 video coding with high bit depth and high bit rate, its offset value can be greater than the offset value of video coding with low bit depth and low bit rate or normal bit depth and normal bit rate, so as to be more suitable for a quantization level with a larger average value. Therefore, Rice parameters (such as codeword length) can be optimized based on bit depth and / or bit rate, so as to improve coding efficiency.
[0038] According to some aspects of the present disclosure, the quantization level binarization scheme disclosed herein may be applied to a bypass coding mode, especially a bypass coding mode in regular residual coding (RRC).
[0039] 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 the position as bits. CABAC uses two coding methods based on context modeling. The context-based method adaptively updates the context model based on adjacent coding information. The bits encoded in this way are called context-coded bins (CCBs). In contrast, the other bypass method assumes that the probability of 1 or 0 is always 50%, so a fixed context modeling is always used without any adjustment. The bits encoded in this way are called bypass-coded bins (BCBs).
[0040] For high bit depth and high bit rate video encoding, throughput is a more important issue. However, compared with encoding using BCB, encoding using CCB requires relatively complex hardware implementation and reduces the throughput of video encoding overall. Therefore, encoding using CCB is a bottleneck for improving the throughput of high bit depth and high bit rate video encoding.
[0041] In order to improve the throughput of video coding, especially the throughput of video coding with high bit depth and high bit rate, in the bypass coding mode, the CCB of residual coding (e.g., CCB binarized from the remaining level in the quantization level) is usually skipped or changed to BCB. In other words, the bypass coding mode in RRC can only use BCB (e.g., BCB binarized from the absolute level in the quantization level). However, the current H.266 / VVC does not use an offset based on bit depth and / or bit rate when calculating the historical variable value used to determine the Rice parameter in the RRC bypass mode.
[0042] According to some aspects of the present disclosure, the quantization level binarization scheme uses Rice parameters adapted to the bit depth and / or code rate for encoding video images, and the scheme can also be used for the bypass coding mode in RRC. In certain embodiments, the binary representation of the current position includes the BCB in RRC. For example, using the Columbus-Rice binarization that Rice parameter values are adapted to the bit depth and / or code rate for encoding video images, the BCB of the absolute level in the quantization level can also be converted. Therefore, the coding efficiency and throughput of the bypass mode in the RRC for video encoding with high bit depth and high code rate can be improved.
[0043] Figure 1 A block diagram of an exemplary encoding system 100 is shown according to some embodiments of the present disclosure. 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 various systems and devices capable of data processing, such as computers and wireless communication devices. For example, the system 100 or 200 can be all or part of a mobile phone, a desktop computer, a laptop computer, a tablet computer, a car computer, a game console, a printer, a positioning device, a wearable electronic device, a smart sensor, a virtual reality (VR) device, an augmented reality (AR) device, or any other suitable electronic 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. As shown, these components are interconnected via a bus, 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.
[0044] Processor 102 may include a microprocessor, such as a graphics processing unit (GPU), an image signal processor (ISP), a central processing unit (CPU), a digital signal processor (DSP), a tensor processing unit (TPU), a vision processing unit (VPU), a neural processing unit (NPU), a synergistic processing unit (SPU) or a physical processing unit (PPU), a microcontroller unit (MCU), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a programmable logic device (PLD), a state machine, gated logic, discrete hardware circuits, and other suitable hardware for performing the various functions described in the present disclosure. Although in Figure 1 and Figure 2Only one processor is shown in the figure, 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 may execute software. Software should be broadly interpreted as representing instructions, instruction sets, codes, code segments, program codes, programs, subroutines, software modules, applications, software applications, software packages, routines, subroutines, objects, executable files, execution threads, processes, functions, etc., whether referred to as software, firmware, middleware, microcode, hardware description language, or other. Software may include computer instructions written in an interpreted language, computer instructions written in a compiled language, or computer instructions written in machine code. Other techniques for indicating hardware are also allowed under a broad category of software.
[0045] Memory 104 may broadly include both memory (aka, main / system memory) and storage (aka, secondary memory). For example, memory 104 may include random-access memory (RAM), read-only memory (ROM), static RAM (SRAM), dynamic RAM (DRAM), ferroelectric RAM (FRAM), electrically erasable programmable ROM (EEPROM), compact disc read-only memory (CD-ROM) or other optical disk storage, hard disk drive (HDD), such as magnetic disk storage or other magnetic storage device, flash drive, solid-state drive (SSD), or any other medium that can be used to carry or store desired program code in the form of instructions accessed and executed by processor 102. Broadly speaking, memory 104 may be implemented by any computer-readable medium, such as a non-transitory computer-readable medium. Although in Figure 1 and Figure 2 Only one memory is shown in the figure, but it should be understood that multiple memories may be included.
[0046] The interface 106 may broadly include a data interface and a communication interface for receiving and sending signals in the process of receiving and sending information with other external network elements. For example, the interface 106 may include an input / output (I / O) device and a wired or wireless transceiver. Figure 1 and Figure 2 Only one memory is shown, but it should be understood that multiple interfaces may be included.
[0047] The processor 102, memory 104, and interface 106 can be implemented in various forms in the system 100 or 200 for performing video encoding functions. In some embodiments, the processor 102, memory 104, and interface 106 of the system 100 or 200 are implemented (e.g., integrated) on one or more system-on-chips (SOCs). In one example, the processor 102, memory 104, and interface 106 can be integrated on an application processor (application processor, AP) SoC that handles application processing (including running video encoding and decoding applications) in an operating system (operating system, OS) environment. In another example, the processor 102, memory 104, and interface 106 can 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).
[0048] like Figure 1 As shown, in the encoding system 100, the processor 102 may include one or more modules, such as an encoder 101. Figure 1 The encoder 101 is shown within a processor 102, but it should be understood that the encoder 101 may include one or more submodules that can be implemented on different processors that are close to or far away from each other. The encoder 101 (and any corresponding submodules or subunits) can be a hardware unit (e.g., part of an integrated circuit) of the processor 102, which is designed to be used in conjunction with other components or software units implemented by the processor 102 by executing at least a portion of a program (i.e., instructions). The instructions of the program can be stored on a computer-readable medium (e.g., memory 104), and when executed by the processor 102, the instructions can perform processing having one or more functions related to video encoding, such as image partitioning, inter-frame prediction, intra-frame prediction, transform, quantization, filtering, entropy coding, etc., which are described in detail below.
[0049] Similarly, if Figure 2 As shown, in the decoding system 200, the processor 102 may include one or more modules, such as a decoder 201. Figure 2The decoder 201 is shown within one processor 102, but it should be understood that the decoder 201 may include one or more submodules that may be implemented on different processors that are close to or far from each other. The decoder 201 (and any corresponding submodules or subunits) may be a hardware unit (e.g., part of an integrated circuit) of the processor 102 that is designed to be used in conjunction with other components or software units implemented by the processor 102 by executing at least a portion of a program (i.e., instructions). The instructions of the program may be stored on a computer-readable medium (e.g., memory 104), and when executed by the processor 102, the instructions may perform processing having one or more functions related to video decoding, such as entropy decoding, inverse quantization, inverse transform, inter-frame prediction, intra-frame prediction, filtering, described in detail below.
[0050] Figure 3 Some embodiments of the present disclosure are shown Figure 1 Detailed block diagram of an exemplary encoder 101 in the encoding system 100 in FIG. Figure 3 As shown, the encoder 101 may include a partition 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 in is shown independently, to represent the characteristic functions different from each other in the video encoder, and this does not mean that each component is formed by the configuration unit of independent hardware or single software. That is to say, for the convenience of explanation, each element is listed as an element, and at least two of the elements can be combined into a single element, or an element can be split into multiple elements to perform a function. It should also be understood that some elements are not the necessary elements for performing the functions described in the present disclosure, but can be optional elements for improving performance. It should also be understood that these elements can be implemented using electronic hardware, firmware, computer software or any combination thereof. These elements are implemented in the form of hardware, firmware, or software, depending on specific applications and the design constraints imposed on encoder 101.
[0051] The partition module 302 can be used to partition the input image of the video into at least one processing unit. The image can be a frame of the video or a field of the video. In some embodiments, the image includes a luminance sample array in a monochrome format, or a luminance sample array and two corresponding chrominance sample arrays. At this time, the processing unit can be a prediction unit (PU), a transform unit (TU) or a coding unit (CU). The partition module 302 can divide the image into a combination of multiple CUs, prediction units and transform units, and select a combination of CUs, prediction units, and transform units based on a predetermined criterion (e.g., a cost function) to encode the image.
[0052] Similar to H.265 / HEVC, H.266 / VVC is a block-based hybrid spatiotemporal prediction 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, the CTU 502 can be a block of 128×128 pixels. Figure 6 As shown, each CTU 502 in the image 500 can be divided into one or more CUs 602 by the division module 302, and the one or more CUs 602 can be used for prediction and transformation. Unlike H.265 / HEVC, in H.266 / VVC, the CU 602 can be rectangular or square and can be encoded without further division into prediction units or transformation units. For example, Figure 6 As shown, the partitioning of CTU 502 into CU 602 may include quadtree partitioning (indicated by solid lines), binary tree partitioning (indicated by dashed lines), and ternary tree partitioning (indicated by dot-dash lines). According to some embodiments, each CU 602 may be at most a subdivision of its root CTU 502, or at least a subdivision of a 4×4 block of the root CTU 502.
[0053] Reference Figure 3, the inter-frame prediction module 304 can be used to perform inter-frame prediction on the prediction unit, and the intra-frame prediction module 306 can be used to perform intra-frame prediction on the prediction unit. It can be determined whether to use inter-frame prediction or perform intra-frame prediction for the prediction unit, and specific information (e.g., intra-frame prediction mode, motion vector, reference image, etc.) can be determined according to each prediction method. At this time, the processing unit for performing prediction can be different from the processing unit for determining the prediction method and specific content. For example, the prediction method and prediction mode can be determined in the prediction unit, and the 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 into the transform module 308. In addition, the prediction mode information, motion vector information, etc. used for prediction can be encoded into the code stream together with the residual coefficient 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 the prediction module 304 or 306. It should also be understood that in some encoding modes, prediction, transformation, and / or quantization can also be skipped.
[0054] In some embodiments, the inter-frame prediction module 304 may predict the prediction unit based on information of at least one image in the image before or after the current image, and in some cases, the inter-frame prediction module 304 may predict the prediction unit based on information of a partial area that has been encoded in the current image. The inter-frame prediction module 304 may include submodules, 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 may 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 luma pixels, an 8-tap interpolation filter based on discrete cosine transform (DCT) with a variable filter coefficient may 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 color difference signals, a 4-tap interpolation filter based on DCT with a variable filter coefficient may 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 may perform motion prediction based on the reference image interpolated by the reference image interpolation unit. Various methods such as full search-based block matching algorithm (FBMA), three-step search (TSS), and new three-step search (NTS) can be used as methods for calculating motion vectors. The motion vector can have a motion vector value based on a unit of 1 / 2, 1 / 4, or 1 / 16 pixel or integer pixel of the interpolated pixel. The motion prediction module can predict the current prediction unit by changing the motion prediction method. Various methods such as skip method, merge method, advanced motion vector prediction (AMVP) method, intra-block copy method, etc. can be used as motion prediction methods.
[0055] In some embodiments, the intra prediction module 306 may generate a prediction unit based on information of reference pixels around the current block (which is pixel information in the current image). When the block in the neighborhood of the current prediction unit is a block on which inter prediction has been performed, and therefore the reference pixel is a pixel on which inter prediction has been performed, the reference pixel included in the block on which inter prediction has been performed may be used to replace the reference pixel information of the block in the neighborhood on which intra prediction has been performed. That is, when the reference pixel is unavailable, at least one of the available reference pixels may be used to replace the unavailable reference pixel information. In intra prediction, the prediction mode may have an angular prediction mode that uses reference pixel information according to a prediction direction, and a non-angular prediction mode that does not use direction information when performing prediction. The mode for predicting brightness information may be different from the mode for predicting color difference information, and the intra prediction mode information for predicting brightness information or predicted brightness signal information may be used to predict color difference information. If the size of the prediction unit is the same as the size of the transform unit when performing intra prediction, intra prediction may be performed on the prediction unit based on the pixels on the left side, the pixels on the upper left side, and the pixels on the top of the prediction unit. However, if the size of the prediction unit is different from the size of the transform unit when performing intra prediction, the intra prediction may be performed using reference pixels based on the transform unit.
[0056] The intra prediction method may generate a prediction block after applying an adaptive intrasmoothing (AIS) filter to reference pixels according to a prediction mode. The type of the AIS filter applied to the reference pixels may vary. In order to perform the intra prediction method, the intra prediction mode of the current prediction unit may be predicted from the intra prediction mode of the prediction unit present in the neighborhood of the current prediction unit. When the prediction mode of the current prediction unit is predicted using the mode information predicted from the adjacent prediction unit, if the intra prediction mode of the current prediction unit is the same as that of the prediction unit in the neighborhood, predetermined flag information may be used to send information indicating that the prediction mode of the current prediction unit is the same as that of the prediction unit in the neighborhood, and if the prediction modes of the current prediction unit and the prediction unit in the neighborhood are different from each other, the prediction mode information of the current block may be encoded by additional flag information.
[0057] like Figure 3 As shown, a residual block may be generated, which includes a prediction unit that has been predicted based on the prediction unit generated by the prediction module 304 or 306 and residual coefficient information, which is a difference between the prediction unit and the original block. The generated residual block may be input into the transform module 308.
[0058] The transform module 308 may be used to transform a residual block including the original block and the residual coefficient information of the prediction unit generated by the prediction modules 304 and 306 using a transform method such as DCT, discrete sine transform (DST), Karhunen-Loève transform (KLT), or transform skipping. It may be determined whether to apply DCT, DST, or KLT to transform the residual block based on the intra-prediction mode information of the prediction unit used to generate the residual block. The transform module 308 may 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, the transform module 308 may be skipped and the video signal may not be transformed to the transform domain.
[0059] The quantization module 310 can be used to quantize the coefficients of each position in the coding block to generate a quantization level for the position. The current block can be a residual block. That is, the quantization module 310 can perform a quantization process on each residual block. The residual block may include N×M positions (samples), each position being associated with a transformed or untransformed video signal / data (e.g., luminance and / or chrominance information), where N and M are positive integers. In the present disclosure, before quantization, a transformed or untransformed video signal at a specific position is referred to herein as a "coefficient". After quantization, the quantized value of the coefficient is referred to herein as a "quantization level" or "level".
[0060] Quantization can be used to reduce the dynamic range of a transformed or untransformed video signal, so that fewer bits will be used to represent the video signal. Quantization typically involves division by the quantization step size and subsequent rounding, while dequantization (also known as inverse quantization) involves multiplication by the quantization step size. The quantization step size can be represented by a quantization parameter (QP). This quantization process is called scalar quantization. The quantization of all coefficients within a coding block can be done independently, and this quantization method is used in some existing video compression standards (such as H.264 / AVC and H.265 / HEVC). The quantized QP affects the bit rate used to encode / decode video images. For example, the higher the QP, the lower the bit rate; the lower the QP, the higher the bit rate.
[0061] For N×M coding blocks, a specific coding scan order can be used to convert the two-dimensional (2D) coefficients of the block into a one-dimensional (1D) order for coefficient quantization and encoding. Typically, the coding scan starts from the upper left corner of the coding block and stops at the last non-zero coefficient / level in the lower right corner or lower right direction. It should be understood that the coding scan order may include any suitable order, such as a zigzag scanning order, a vertical (column) scanning order, a level (row) scanning order, a diagonal scanning order, or any combination thereof. The quantization of coefficients within the coding block can utilize coding scan order information. For example, the quantization of the coefficients may depend on the state of the previous quantization level along the coding scan order. In order to further improve the 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 the information before the current coefficient in the coding scan order. This quantization process is called dependent quantization.
[0062] refer to Figure 3 , the encoding module 320 is used to encode the quantization level of each position in the coding block into the code stream. In some embodiments, the encoding module 320 can perform entropy coding on the coding block. Entropy coding can use various binarization methods (such as Golomb-Rice binarization including EGk binarization, combined TR and limited EGk binarization) to convert each quantization level into a corresponding binary representation (such as binary bits). Then, entropy coding algorithms such as VLC, CAVLC, CABAC, SBAC, PIPE coding, etc. can be used to further compress the binary representation. The compressed data can be added to the code stream. In addition to the quantization level, the encoding module 320 can encode various other information, such as block type information, prediction mode information, partition 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 module 304 and the prediction module 306. In some embodiments, the encoding module 320 can perform residual coding on the coding block to convert the quantization level into a code stream. For example, after quantization, there may be N×M quantization levels for an N×M block. These N×M levels can be either zero or non-zero values. If the levels are not binary, the non-zero levels can be further binarized into binary bits using, for example, combined TR and finite EGk binarization.
[0063] Non-binary syntax elements can be mapped into binary codewords. The bijective mapping between symbols and codewords is usually done using simple structured codes and is called binarization. Binary symbols (also called bits) for both binary syntax elements and non-binary data codewords can be encoded using binary arithmetic coding. The core coding engine of CABAC supports two operating modes: context coding mode, in which bits are encoded using an adaptive probability model, and a relatively uncomplicated bypass mode that uses a fixed probability of 1 / 2. The adaptive probability model is also called context, and assigning a probability model to a single bit is called context modeling.
[0064] According to some aspects of the present disclosure, in H.266 / VVC, the Columbus-Rice binarization process (e.g., combined TR and limited EGk binarization) involves many parameters, such as truncation parameters, Rice parameters, and LDR of coefficients. The Rice parameter is the initial suffix code length. The truncation parameter is used to determine the number of input value ranges that can use the initial suffix code length. 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, the LDR is 22. In some embodiments, the maximum length of a binary bit is set to 32. The maximum length of a binary bit can be used to determine the maximum length of a codeword prefix. In the current H.266 / VVC specification, the truncation parameter value is 5 and the LDR of the coefficient is 15. In the transform skip residual coding (TSRC) mode, the Rice parameter is defined as a fixed value of 1. In the RRC mode, the Rice parameter is a value between 0 and 3.
[0065] For example, Figure 8 Exemplary codewords for binarizing input values (e.g., absolute levels or residual levels in quantization levels) in Golomb-Rice binarization (e.g., combined TR and finite EGk binarization) according to some embodiments of the present disclosure are shown. In this example, the truncation parameter value, the Rice parameter value, and the 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 truncation + 1 (i.e., 4) input value ranges [0, 3], [4, 7], [8, 11], and [12, 15]. After the first truncation + 1 input value range, the suffix code length of each input value range is increased by 1 in turn. For example, the codeword suffix of the value range [16, 23] uses 3 bits, the input value range [24, 39] uses 4 bits, and so on. The codeword suffix of the last input value range uses LDR bits (i.e., 22 bits in this example). The prefix code length of each value range increases in turn until there is an LDR bit (e.g., Figure 8The prefix code length of the last input range (22-LDR bits in) reaches 10 bits.
[0066] For high bit depth and high bit rate video coding (eg, bit depth of 16 bits), the quantization level is on average much larger than the current H.266 / VVC quantization level, for example due to a smaller quantization step size. Figure 8 As can be seen from the example shown, the number of bits used by the prefix and suffix of the large quantization level is higher than the number of bits used by the prefix and suffix of the small quantization level. Therefore, for high bit depth and high bit rate video encoding, the current parameters used for binary quantization levels (such as Rice parameters) may not be optimal and may affect the current VVC encoding performance.
[0067] In terms of Rice parameters, in order to improve the accuracy of estimating Rice parameters based on calculation templates, a history-based Rice parameter derivation method can be used. Fig.9A and Fig. 9B As shown, the Rice parameter of the current position can be calculated using a variable (i.e., localSumAbs), which is the sum of the absolute levels of up to five adjacent positions in the transform unit. Fig.9A and Fig. 9B In the figure, the solid black box represents the current position in the current transformation unit, and the pattern box represents the adjacent position of the current position in the current transformation unit. Fig.9A As shown, the sum of the quantization levels (such as residual levels or absolute levels) of the five adjacent positions can be used to calculate the variable localSumAbs of the current position, thereby determining the Rice parameter of the current position. Fig. 9B As shown, some positions are located near the border of the current transform unit, and the neighboring positions of the variable localSumAbs in the current transform unit that can be used to calculate these "border" current positions may be less than 5. In other words, at least one of the five neighboring positions of the "border" current position may be located outside the current transform unit.
[0068] In order to improve the accuracy of estimating Rice parameters based on the calculation template, the variable localSumAbs at the current position outside the current transform unit can be updated using a historical derived value (e.g., a historical variable value) instead of 0, for example, as shown in the following pseudo code:
[0069] The inputs to the above pseudo-code process are the base level baseLevel, the color component index cIdx, the luma position (x0, y0) specifying the upper left sample of the current transform block relative to the upper left sample of the current picture, 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 process is the variable localSumAbs. If the array AbsLevel[x][y] of the transform block has the component index cIdx and the upper left luma position (x0, y0), then the variable locSumAbs can be generated according to the above pseudo-code process. Specifically, in the italicized portion of the above pseudo-code process, when at least one neighboring position of the current position is outside the current transform unit, the historical variable histValue is used to calculate the variable locSumAbs.
[0070] The variable localSumAbs is updated as follows: locSumAbs=Clip3(0,31,(locSumAbs>>shiftVal)-baseLevel*5) The variable shiftVal is generated as follows: That is, if the Rice parameter extension flag sps_rrc_rice_extension_flag of RRC is turned off, the value of the variable shiftVal can be 0. If the Rice parameter extension flag sps_rrc_rice_extension_flag of RRC is turned 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 above pseudocode process. For example, the Tx[] and Rx[] listed above can be specified as Tx[] = {32, 128, 512, 2048}, Rx[] = {0, 2, 4, 6, 8}. Given the variable locSumAbs, the Rice parameter cRiceParam can be derived first, for example, as shown in Table 1 below, and then updated as follows: Table 1 Specification of cRiceParam based on locSumAbs
[0071] In order to keep historical records, the value of the historical variable histValue can be updated at most once per transformation unit, and the updated value of the historical variable histValue can be used to determine the variable locSumAbs (and the corresponding Rice parameter) of the position in the next transformation unit after the current transformation unit. In other words, based on the historical variable value of the previous transformation unit before the current transformation unit, the Rice parameter value of the current position in the current transformation unit (e.g., the "boundary" current position) can be determined.
[0072] In some embodiments, before decoding, each transform unit in the RRC may use the value of the history counter StatCoeff[cIdx] determined according to the previous transform unit to initialize the history variable histValue, as follows: histValue=1< <StatCoeff[cIdx] updateHist=1
[0073] 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 Golomb-Rice coded position (e.g., a coded position coded with an abs_remainder or dec_abs_level syntax element) (i.e., the first non-zero Golomb-Rice coded quantization level) by an exponential moving average process. 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 coded with an abs_remainder or dec_abs_level syntax element (i.e., a Golomb-Rice coded position).
[0074] In summary, the value of the history counter StatCoeff[cIdx] of the previous transform unit (and the value of the corresponding history variable histValue) will affect the Rice parameter value of the current position in the current transform unit, and thus affect the length of the binarized codeword (e.g., the number of binary bits represented in binary). On the other hand, because the bit depth and / or bit rate used to encode the image will affect the average quantization level, adjusting the value of the history counter StatCoeff[cIdx] (and the value of the corresponding history variable histValue) based on the bit depth and / or bit rate can improve the efficiency of binarization using the optimized Rice parameters.
[0075] Please refer again Figure 3In some embodiments, the encoding module 320 may be configured to determine a Rice parameter value for Golomb-Rice binarization at a current position in the current transform unit based on a historical variable value of a previous transform unit before the current transform unit. The historical variable value is determined based on the bit depth and / or bit rate used to encode the image, as described below for details.
[0076] According to some aspects of the present disclosure, in H.266 / VVC, a coding block is a transform block encoded using RRC. Transform blocks larger than 4×4 can be divided into non-connected 4×4 sub-blocks, which are processed using an inverse diagonal scan mode. It is understood that H.266 / VVC supports non-square rectangular transform blocks, so it 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. An inverse diagonal scan pattern is used to process the sub-blocks of the transform block and to process the frequency positions within each sub-block.
[0077] 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 coding scan order. The 2D coordinates of the last non-zero level (last_sig_coeff_x and last_sig_coeff_y) can be first encoded with up to four syntax elements, that is, 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). In the sub-block, RRC can first encode the CCB, that is, the coded sub-block flag (sb_coded_flag), to indicate whether all levels of the current sub-block are zero. For example, if sb_coded_flag is equal to 1, there can be at least one non-zero coefficient in the current sub-block. If sb_coded_flag is equal to 0, all coefficients in the current sub-block are zero. It is understood that 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 coding scan order without being encoded into the bitstream. Similarly, the sb_coded_flag of the first sub-block where the direct current (DC) of the entire block is located can be derived based on the coding scan order without being encoded into the bitstream. Other sb_coded_flags can be encoded as CCBs. RRC can encode sub-blocks one by one starting from the last non-zero sub-block in the reverse coding scan order.
[0078] To ensure the worst-case throughput, the value of the remaining CCBs (remBinsPass1) can be used to limit the maximum number of CCBs. The initial value of remBinsPass1 can be calculated based at least in part on the length and width of the coding block. Within a sub-block, RRC can encode the level of each position in a reverse coding scan order. A predefined threshold can be compared to remBinsPass1 to determine whether the maximum number of CCBs has been reached. For example, the threshold of remBinsPass1 in H.266 / VVC can be predefined as 4.
[0079] like Fig.10 As shown, if remBinsPass1 is not less than 4 (i.e. Fig.10 In the "remaining CCB ≥ 4" in the coding sub-block (i.e. Fig.10When the quantization level of each position in the "SB" in the quantization level, the effective flag (ie, sig_coeff_flag, Fig.10 The "sig" in the bitstream 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], Fig.10 The "gt1" in the sub-block, 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, Fig.10 par in the bitstream) to indicate whether the level is odd or even, followed by a greater-than flag (i.e., abs_level_gtx_flag[n][1], Fig.10 The par_level_flag flag and the abs_level_gtx_flag[n][1] flag may also be used to indicate that the level is 2, 3, or greater than 3. After encoding each of the above syntax elements (i.e., CCB) using the context coding method, the value of remBinsPass1 may be reduced by 1. In other words, in the first coding pass ( Fig.10 In "channel 1" in the example, a valid flag, a flag greater than 1, a parity flag, and a greater than flag may be encoded as the CCB of each position of each sub-block.
[0080] If the absolute level is greater than 5 or the value of rembinspass1 is less than 4, for the remaining level after encoding the above CCB, you can respectively Fig.10 "Channel 2" in ) and the third encoding channel (i.e. Fig.10 In "Channel 3" in the , the other two syntax elements - remainder (abs_remainder, Fig.10 The "rem" in the above code is also referred to as the "residual level" in this disclosure) and the absolute level (dec_abs_level, Fig.10 In addition, it can also be encoded as BCB in the fourth encoding channel (i.e. Fig.10 In "Channel 4" in the code, the coefficient sign flag (coeff_sign_flag, Fig.10 The "sign" in ) is encoded as BCB to fully represent the quantization level.
[0081] In some embodiments, a more general residual coding method uses a level greater than flag (abs_level_gtxX_flag) and a remaining level bit, so that the syntax elements of the level coding of the transform block can be conditionally parsed, and the corresponding binarization of the absolute value of its level 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), abs_level_gtx(X+1)_flag does not exist. If abs_level_gtxX_flag is 1, abs_level_gtx(X+1)_flag exists. In addition, if abs_level_gtxN_flag is 0, 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 may be encoded as CCB, and the remaining level bits may be encoded as BCB. 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 ... Table 2 Residual coding based on abs_level_gtxX_flag bit and remainder bit
[0082] like Figure 3 As shown, the dequantization module 312 may be used to dequantize the quantization level by the dequantization module 312, and the inverse transform module 314 may be used to inversely transform the coefficients transformed by the transform module 308. The reconstructed residual block generated by the dequantization module 312 and the inverse transform module 314 may be combined with the prediction unit predicted by the prediction module 304 or 306 to generate a reconstructed block.
[0083] The 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 may remove block distortion generated by the boundaries between blocks in the reconstructed image. The SAO may correct the offset of the original video in units of pixels for the video on which deblocking has been performed. The ALF may be performed based on a value obtained by comparing the reconstructed and filtered video with the original video. The buffer module 318 may be used to store the reconstructed block or image calculated by the filter module 316, and when inter-frame prediction is performed, the reconstructed and stored block or image may be provided to the inter-frame prediction module 304.
[0084] Figure 4 Some embodiments of the present disclosure are shown Figure 2 Detailed block diagram of an exemplary decoder 201 in the decoding system 200 in FIG. Figure 4 As shown, the decoder 201 may include a decoding module 402, a dequantization module 404, an inverse transform module 406, an inter-frame prediction module 408, an intra-frame prediction module 410, a filter module 412, and a buffer module 414. It should be understood that Figure 4 Each element shown in is shown independently, to represent the characteristic function different from each other in the video decoder, and this does not mean that each assembly is formed by the configuration unit of independent hardware or single software.That is to say, for the convenience of explanation, each element is listed as an element, and at least two of the element can be combined into a single element, or an element can be split into multiple elements to perform a function.It should also be understood that some elements are not the necessary elements for performing the function described in the disclosure, but can be the optional elements for improving performance.It should also be understood that these elements can be realized using electronic hardware, firmware, computer software or any combination thereof.These elements are realized in the form of hardware, firmware or software, depending on specific application and the design constraints imposed on decoder 201.
[0085] When a video code stream is input from a video encoder (e.g., encoder 101), the input code stream can be decoded by the decoder 201 in a procedure opposite to that of the video encoder. Therefore, for ease of description, the decoding details that are the same as those described above are not repeated here. The decoding module 402 can be used to decode the code stream to obtain various information encoded into the code stream, such as the quantization level of each position in the coding block. In some embodiments, the decoding module 402 can perform entropy decoding (decompression) corresponding to the entropy coding (compression) performed by the encoder (e.g., VLC, CAVLC, CABAC, SBAC, PIPE coding, etc.) to obtain a binary representation (e.g., binary bits). The decoding module 402 can use Golomb-Rice binarization methods such as EGk binarization, combined TR, and limited EGk binarization to further convert the binary representation into a quantization level. 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 for Golomb-Rice binarization (e.g., Rice parameters), decoding unit block type information, prediction mode information, partition 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 code stream to reconstruct and rearrange data from a 1D order into a 2D rearranged block by a method based on an inverse scanning of the encoding scanning order used by the encoder.
[0086] The dequantization module 404 can be used to dequantize the quantization level of each position of the coding block (e.g., 2D reconstruction block) to obtain the coefficient of each position. In some embodiments, the dequantization module 404 can also perform dependent dequantization based on the quantization parameter provided by the encoder. The quantization parameter includes relevant information of the quantizer used in the dependent quantization, for example, the quantization step size used by each quantizer.
[0087] The inverse transform module 406 can be used to perform inverse transforms, such as inverse DCT, inverse DST, and inverse KLT, respectively, 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 a prediction method, a size of a current block, a prediction direction, etc.
[0088] The inter prediction module 408 and the intra prediction module 410 may be used to generate a prediction block based on information related to generation of the prediction block provided by the decoding module 402 and information of a previously decoded block or image provided by the buffer module 414. As described above, when intra prediction is performed in the same manner as the operation of the encoder, if the size of the prediction unit and the size of the transform unit are the same, intra prediction may be performed on the prediction unit based on the left pixel, the upper left pixel, and the top pixel of the prediction unit. However, when performing intra prediction, if the size of the prediction unit and the size of the transform unit are different, intra prediction may be performed using reference pixels based on the transform unit.
[0089] The reconstructed block or reconstructed image combined from the outputs of the inverse transform module 406 and the prediction module 408 or 410 may be provided to the filter module 412. The filter module 412 may include a deblocking filter, an offset correction module, and an ALF. The buffer module 414 may store the reconstructed image or block and use it as a reference image or reference block for the inter-frame prediction module 408, and may output the reconstructed image.
[0090] Consistent with the scope of the present disclosure, the encoding module 320 and the decoding module 402 may be configured to apply a quantization level binarization scheme using Rice parameters adapted to the bit depth and / or bit rate used to encode the video image, thereby improving encoding efficiency.
[0091] Fig.12A flowchart of an exemplary method 1200 of video encoding according to some embodiments of the present disclosure is shown. The method 1200 may be performed by the encoder 101 of the encoding system 100 or any other suitable video encoding system at the transform unit level. The method 1200 may include operations 1202, 1204, 1206, and 1208 as described below. It should be understood that some of the operations are optional, and some operations may be performed simultaneously or in different modes. Fig.12 Execute in the order shown.
[0092] In operation 1202, the coefficients of each position in the current transform unit are quantized to generate a quantization level of the current transform unit. Figure 3 As shown, the quantization module 310 may be used to quantize the coefficients of each position in the current transform unit to generate corresponding quantization levels. In some embodiments, the transform unit corresponds to multiple (eg, three) transform blocks in the RRC.
[0093] In operation 1204, a Rice parameter value for Golomb-Rice binarization of a current position in the current transform unit is determined based on the historical variable value of the previous transform unit before the current transform unit. The 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 neighboring positions of the current position is located outside the current transform unit. In other words, the historical variable can be applied to a "boundary" position, such as Fig. 9B shown.
[0094] For example, Figure 3 As shown, the encoding module 320 can determine the Rice parameter value for Golomb-Rice binarization at the current position in the current transform unit based on the historical variable value of the previous transform unit. The encoding module 320 can also determine the historical variable value based on the bit depth and / or bit rate used to encode the image.
[0095] In some embodiments, Fig.13As shown, in order to determine the historical variable value, in operation 1302, an offset value is obtained based on the bit depth and / or code rate used to encode the image, and in operation 1304, the historical variable value is determined based on the offset value and the first non-zero Golomb-Rice coding quantization level, for example: using the remaining level (i.e., abs_remainder syntax element) or the absolute level (i.e., dec_abs_level syntax element) in the quantization level of the previous transform unit for encoding. The offset value can be a non-zero integer. For example, the bit depth of high bit depth and high code rate video encoding is 16 bits, and the offset value is 2. In some embodiments, the offset value can increase with the increase of the bit depth, and vice versa. In other words, the offset value is positively correlated with the 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. In addition or alternatively, the offset value can be determined based on the code rate, which can be determined based on the quantization step size (i.e., QP). For example, the higher the QP, the lower the bitrate and the lower the offset value; the lower the QP, the higher the bitrate and the higher the offset value. In other words, the offset value is positively correlated with the bitrate and negatively correlated with the QP. In some embodiments, the offset values of different images of the 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 image being encoded.
[0096] In some embodiments, the binary representation of the current position includes a BCB in the RRC, such as a dec_abs_level bit or an abs_remainder bit. 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 a bypass-coded dec_abs_level bit in the RRC. For example, the absolute level in the quantization level can be binarized using a Golomb-Rice binarization with Rice parameters adapted to the bit depth and / or bit rate used to encode the image, resulting in a bypass-coded dec_abs_level bit in the RRC, as shown in the following pseudo-code process example:
[0097] In the above pseudo-code process, 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 in the quantization level dec_abs_level[n] 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 of 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 Golomb-Rice encoded quantization level (e.g., encoded using dec_abs_level in this transform unit). As described above, the offset value can be obtained based on the bit depth and / or code rate used to encode the image, for example, if the bit depth is 16 bits, the offset value is 2. 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.
[0098] In some embodiments, in order to convert the quantization level of the current position, the remaining levels in the quantization level of the current position are converted to a binary representation, such as a bypass-coded abs_remainder bit in RRC. For example, the remaining levels in the quantization level can be binarized using a Golomb-Rice binarization with Rice parameters adapted to the bit depth and / or code rate used to encode the image, resulting in a bypass-coded abs_remainder bit in RRC, as shown in the following pseudo-code process example:
[0099] In the above pseudo code process, updateHist&&abs_remainder[n]>0 indicates that the history variable histValue can still be updated in the 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 the 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 of 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 using abs_remainder in the transform unit. As described above, the offset value can be obtained based on the bit depth and / or code rate used to encode the image, for example, if the bit depth is 16 bits, the offset value is 2. 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.
[0100] Once the value of the historical variable histValue of the previous transformation unit is determined as the initial value or the updated value, the value of the variable localSumAbs of the current position in the current transformation unit can be determined accordingly (such as based on the above pseudocode process), so that the Rice parameter value of the current position can be determined (such as based on the above Table 1 and the value of the variable shiftVal).
[0101] Please refer again Fig.12 , at operation 1206, the quantization level of the current position is converted to a binary representation using a Golomb-Rice binarization with a Rice parameter value. Figure 3 As shown, the encoding module 320 can be used to convert the quantization level (absolute level or residual level) of the current position into a binary representation (such as binary bits) using a combination TR with a Rice parameter value and a limited EGk binarization. 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.
[0102] In operation 1208, the binary representation of the current position is compressed into the code stream. In some embodiments, the Rice parameter value is also compressed into the code stream. 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 (such as CABAC).
[0103] Fig.14 A flowchart of an exemplary method 1400 of video decoding according to some embodiments of the present disclosure is shown. The method 1400 may be performed by the decoder 201 of the decoding system 200 or any other suitable video decoding system at the transform unit level. The method 1400 may include operation 1402, operation 1404, and operation 1406 as described below. It should be understood that some of the operations are optional, and some operations may be performed simultaneously or in different modes. Fig.14 Execute in the order shown.
[0104] In operation 1402, the code stream is decompressed to obtain a binary representation of a current position in a current transform unit and a Rice parameter value for Golomb-Rice binarization of the current position. The Rice parameter value is determined based on a historical variable value of a previous transform unit before the current transform unit. The historical variable value is determined based on at least one of a bit depth or a bit rate for a decoded image. Figure 4 As shown, the decoding module 402 can be used to decompress the bit stream using the entropy coding algorithm (e.g., CABAC) as described above to obtain a binary representation (e.g., binary bits) of the position in the current transform unit and the Rice parameter value of the position.
[0105] At operation 1404, the binary representation is converted to a quantization level at the current position using Golomb-Rice binarization with Rice parameter values. 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 a position in a current transform unit using a combined TR with a Rice parameter value and a finite EGk binarization.
[0106] In operation 1406, the quantization level of the current position is dequantized to generate a coefficient of the current position. Figure 4 As shown, the dequantization module 404 may be used to dequantize the quantization level of each position to generate coefficients of each position in the transform unit.
[0107] According to some aspects of the present disclosure, a quantization level binarization scheme uses Rice parameters adapted to the bit depth and / or code rate used to encode a video image, and the scheme is applied to a bypass coding mode in RRC.
[0108] Fig.11A FIG. 2 shows an exemplary bypass coding mode in RRC according to some embodiments of the present disclosure. Fig.11AAs shown, the code stream may start with the transform unit bits of the transform unit. In CABAC, many transform unit bits may be reserved as CCBs for context coding. The transform unit bits may include a coded Cb transform block flag (tu_cb_coded_flag), a coded Cr transform block flag (tu_cr_coded_flag), a coded luminance transform block flag (tu_y_coded_flag), a quantization parameter delta value (cu_qp_delta_abs), a chroma quantization parameter offset flag (cu_chroma_qp_offset_flag), a chroma quantization parameter offset index (cu_chroma_qp_offset_idx), a joint chroma flag (tu_joint_cbcr_residual_flag), and a transform skip flag (transform_skip_flag). It will be appreciated that the transform unit bits may also include BCBs, such as a quantization parameter delta sign flag (cu_qp_delta_sign_flag) in some examples.
[0109] like Fig.11A As shown, the transform unit can correspond to the brightness sample (i.e. Fig.11A A coded block of chrominance samples (e.g., a transform block in RRC) and two corresponding coded blocks of chrominance samples (i.e., Fig.11A Therefore, the transform unit bits may include three transform_skip_flags corresponding to the Y coding block, the Cb coding block, and the Cr coding block, respectively, and each transform_skip_flag is a CCB. For each coding block, the first residual coding bit of the coding block encoded / decoded into the bitstream after the transform_skip_flag may be the last significant coefficient prefix (last_sig_coeff_x_prefix and last_sig_coeff_y_prefix), which are still retained as CCBs. Fig.11A As shown, all other residual coding bits in each coding block can be BCB. For example, the bypass coded residual coding bits can include the last significant coefficient suffix (last_sig_coeff_x_suffix and last_sig_coeff_y_suffix), the coded sub-block flag (sb_coded_flag), the absolute level (dec_abs_level), and the coefficient sign flag (coeff_sign_flag).
[0110] That is, the 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 last_sig_coeff_y_prefix and before last_sig_coeff_x_sufix and last_sig_coeff_y_sufix. In other words, the bypass coding mode can be enabled for each coding block immediately after last_sig_coeff_x_prefix and last_sig_coeff_y_prefix. In bypass coding mode, the residual coding bit sb_coded_flag of each position of each sub-block can be converted from CCB to BCB. For example, the encoding of all other CCBs, 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]), can be skipped by setting the value of the remaining CCB (remBinsPass1) to be less than a threshold value of 4 (e.g., 0). Therefore, the encoding of the remaining level / remainder (abs_remainder[n]) can also be skipped. In other words, in bypass coding mode, the first coding pass and the second coding pass of each position in each sub-block of the coding block can be skipped, so that the CCB does not appear in the first coding pass. Therefore, in high throughput mode, each coding block can be encoded using only BCBs except 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).
[0111] Fig. 11B Another exemplary bypass coding mode in RRC according to some embodiments of the present disclosure is shown. Fig.11A The bypass codes shown are different. Fig. 11B The bypass coding mode further converts last_sig_coeff_x_prefix and last_sig_coeff_y_prefix from CCB to BCB, thereby Fig. 11BIn bypass coding mode, each coding block can be coded using only BCB. Fig. 11B As shown, bypass encoding mode can be enabled at the encoding block level. Fig.11A Compared with the scheme shown, Fig. 11B The scheme shown further improves the throughput of video coding by converting the last significant coefficient prefix from CCB to BCB. For very high bitrate and high bit depth operating ranges, the number of bits for the position of the last significant coefficient may also be very high, since most blocks are encoded with a smaller block size. 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 for last_sig_coeff_x_prefix and last_sig_coeff_y_prefix may affect the throughput.
[0112] Fig. 11C Another exemplary bypass coding mode in transform unit coding according to some embodiments of the present disclosure is shown. Fig. 11B The bypass encoding shown is different. Fig. 11C The bypass coding mode further changes transform_skip_flag from CCB to BCB.
[0113] Fig.11D Another exemplary bypass coding mode in transform unit coding according to some embodiments of the present disclosure is shown. Fig. 11C The bypass alignment schemes shown are different. Fig.11D The bypass coding mode shown further converts the TU bits in the TU from CCB to BCB, so that in bypass coding mode, all TU bits in the TU are also coded 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 may also be converted from CCB to BCB. Thus, in Fig.11D In the bypass coding mode shown in FIG. 1 , only BCB can be used to encode the transform unit and the three corresponding coding blocks. Fig. 11C Compared with the scheme shown, Fig.11DThe bypass coding mode shown further improves the video coding throughput by coding the transform unit bits only as BCB, avoiding the CABAC coding engine to switch between context coding and bypass coding when coding the transform unit. The bypass coding mode can be enabled at the transform unit level.
[0114] It can be understood that in some examples, the history counter StatCoeff[cIdx] can be adjusted in different ways for the residual level / remainder bit (abs_remainder) and the absolute level bit (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 larger than the history counter StatCoeff[cIdx] for encoding the first non-zero Golomb-Rice coded transform coefficient in the transform unit as dec_abs_level. This design is reasonable when both abs_remainder and dec_abs_level are allowed to encode the coefficient level. 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 may be a relatively small value.
[0115] However, in the bypass coding mode of the RRC disclosed herein, because the abs_remainder bit coding is skipped and only the dec_abs_level bit coding is allowed, if the offset is not used to adjust the value of the history counter, only a relatively small value of the history counter StatCoeff[cIdx] can be used. As described above, the offset can be used to determine the value of the history counter StatCoeff[cIdx] used to encode the dec_abs_level bit. In some embodiments, a bypass flag (bypassFlag) indicating the bypass coding mode is applied to use / not use the offset in different modes, as shown below: StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(dec_abs_level[]))+(bypassFlag?Offset:0))>>1 If bypassFlag is equal to 1, the bypass coding mode is enabled, and in the bypass coding mode of RRC, the absolute levels in all quantization levels are encoded using the dec_abs_level bit instead of the abs_remainder bit, and the value of the history counter StatCoeff[cIdx] is determined by an offset ("Offset", for example, 2). If bypassFlag is equal to 0, the bypass mode is not enabled, the quantization level can be encoded using the abs_remainder bit and the dec_abs_level bit, and the offset ("0") is not used to determine the value of the history counter StatCoeff[cIdx] used to encode the dec_abs_level bit.
[0116] In various aspects of the present disclosure, the functions described herein may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored as instructions on a non-transitory computer-readable medium. Computer-readable media include computer storage media. The storage medium may be, for example, Figure 1 and Figure 2 Any available medium that can be accessed by the processor 102 of the processor 102 in the computer. As an example and not limitation, such computer readable media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, HDD such as disk storage or other magnetic storage devices, flash drives, SSDs, 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 can be accessed by, for example, a processing system of a mobile device or computer. Disks and discs used herein include CDs, laser discs, optical discs, digital versatile discs (DVDs), and floppy disks, wherein disks usually copy data magnetically, while optical discs use lasers to copy data optically. The above combinations should also be included in the scope of computer readable media.
[0117] According to one aspect of the present disclosure, a method for encoding an image of a video including a current transform unit is disclosed. A processor quantizes coefficients of each position in the current transform unit to generate a quantization level of the current transform unit. The processor determines a Rice parameter value for Golomb-Rice binarization of a current position in the current transform unit based on a historical variable value of a previous transform unit before the current transform unit. The historical variable value is determined based on at least one of a bit depth or a bit rate for encoding an image. The processor converts the quantization level of the current position into a binary representation using Golomb-Rice binarization with a Rice parameter value. The processor compresses the binary representation of the current position into a bitstream.
[0118] In some embodiments, the offset value is obtained based on at least one of a bit depth or a code rate used to encode the image. The historical variable value is determined based on the offset value and a first non-zero Golomb-Rice encoded quantization level in the quantization levels of the previous transform unit.
[0119] In some embodiments, the offset value is a non-zero integer.
[0120] In some embodiments, the bit depth is 16 bits and the offset value is 2.
[0121] In some embodiments, at least one of the neighboring positions of the current position is located outside the current transform unit.
[0122] In some embodiments, the coded block is a transform block coded using RRC.
[0123] In some embodiments, the binary representation of the current position comprises a BCB in RRC.
[0124] 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.
[0125] According to another aspect of the present disclosure, a system for encoding an image of a video including a current transform unit includes a memory for storing instructions and a processor coupled to the memory. The processor is used to quantize the coefficients of each position in the current transform unit to generate a quantization level of the current transform unit when executing the instructions. The processor is also used to determine the Rice parameter value for Golomb-Rice binarization of the current position in the current transform unit based on the historical variable value of the previous transform unit before the current transform unit when executing the instructions. The historical variable value is determined based on at least one of the bit depth or code rate used to encode the image. The processor is also used to convert the quantization level of the current position into a binary representation using Golomb-Rice binarization with Rice parameter values when executing the instructions. The processor is also used to compress the binary representation of the current position into a bitstream when executing the instructions.
[0126] In some embodiments, the processor is further configured to obtain an offset value based on at least one of a bit depth or a bit rate used to encode the image, and to determine a historical variable value based on the offset value and a first non-zero Golomb-Rice encoded quantization level in a quantization level of a previous transform unit.
[0127] In some embodiments, the offset value is a non-zero integer.
[0128] In some embodiments, the bit depth is 16 bits and the offset value is 2.
[0129] In some embodiments, at least one of the neighboring positions of the current position is located outside the current transform unit.
[0130] In some embodiments, the coded block is a transform block coded using RRC.
[0131] In some embodiments, the binary representation of the current position comprises a BCB in RRC.
[0132] In some embodiments, in order to convert the quantization level of the current position, the processor is further configured to convert an absolute level in the quantization level of the current position into a binary representation.
[0133] According to another aspect of the present disclosure, a non-transitory computer-readable medium storing instructions is disclosed, which, when executed by a processor, performs a process for encoding an image of a video including a current transform unit. The process includes quantizing the coefficients of each position in the current transform unit to generate a quantization level for the current transform unit. The process also includes determining a Rice parameter value for Columbus-Rice binarization of the current position in the current transform unit based on the historical variable values of the previous transform unit before the current transform unit. The historical variable value is determined based on at least one of the bit depth or bit rate used to encode the image. The process also includes converting the quantization level of the current position into a binary representation using Columbus-Rice binarization with Rice parameter values. The process also includes compressing the binary representation of the current position into a bitstream.
[0134] According to another aspect of the present disclosure, a method for decoding an image of a video including a current transform unit is disclosed. A processor decompresses a bitstream to obtain a binary representation of a 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 a historical variable value of a previous transform unit before the current transform unit. The historical variable value is determined based on at least one of a bit depth or a bit rate for a decoded image. The processor converts the binary representation into a quantization level of the current position using Columbus-Rice binarization with a Rice parameter value. The processor dequantizes the quantization level of the current position to generate a coefficient of the current position.
[0135] In some embodiments, the historical variable value is determined by obtaining an offset value based on at least one of a bit depth or a code rate for a decoded image, and determining the historical variable value based on the offset value and a first non-zero Golomb-Rice coded quantization level in a 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 value is 2.
[0138] In some embodiments, at least one of the neighboring positions of the current position is located outside the current transform unit.
[0139] In some embodiments, the coded block is a transform block coded using RRC.
[0140] In some embodiments, the binary representation of the current position includes bypass coded bits in RRC.
[0141] 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.
[0142] According to another aspect of the present disclosure, a system for decoding an image of a video including a current transform unit includes a memory for storing instructions and a processor coupled to the memory. The processor is used to decompress the code stream when executing the instructions 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 a historical variable value of a previous transform unit before the current transform unit. The historical variable value is determined based on at least one of the bit depth or bit rate used to decode the image. The processor is also used to convert the binary representation into a quantization level of the current position using Columbus-Rice binarization with Rice parameter values when executing the instructions. The processor is also used to dequantize the quantization level of the current position when executing the instructions to generate a coefficient of the current position.
[0143] In some embodiments, the historical variable value is determined by obtaining an offset value based on at least one of a bit depth or a code rate for a decoded image, and determining the historical variable value based on the offset value and a first non-zero Golomb-Rice coded quantization level in a 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 value is 2.
[0146] In some embodiments, at least one of the neighboring positions of the current position is located outside the current transform unit.
[0147] In some embodiments, the coded block is a transform block coded using RRC.
[0148] In some embodiments, the binary representation of the current position comprises a BCB in RRC.
[0149] In some embodiments, in order to convert the quantization level of the current position, the processor is further configured to convert an absolute level in the quantization level of the current position into a binary representation.
[0150] According to another aspect of the present disclosure, a non-temporary computer-readable medium storing instructions is disclosed, which, when executed by a processor, performs processing for decoding an image of a video including a current transform unit. The processing includes decompressing 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 a historical variable value of a previous transform unit before the current transform unit. The historical variable value is determined based on at least one of the bit depth or bit rate used to decode the image. The processing also includes converting the binary representation into a quantization level of the current position using Columbus-Rice binarization with a Rice parameter value. The processing also includes dequantizing the quantization level of the current position to generate a coefficient of the current position.
[0151] The foregoing description of the embodiments will reveal the general nature of the present disclosure so that others can easily modify and / or adapt the various applications of these embodiments by applying the knowledge within the art without undue experimentation and without departing from the general concept of the present disclosure. Therefore, based on the teachings and guidance presented herein, such adaptations and modifications are intended to be within the meaning and scope of the equivalents of the disclosed embodiments. It should be understood that the wording or terminology here is for the purpose of description rather than limitation, so that the terms or wording of this specification will be interpreted by those skilled in the art based on the teachings and guidance.
[0152] Embodiments of the present disclosure have been described above by means of 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. As long as the specified functions and their relationships are properly performed, alternative boundaries can be defined.
[0153] The Summary and Abstract sections may set forth one or more but not all exemplary embodiments of the present disclosure as contemplated by the inventor(s), and thus, are not intended to limit the present disclosure and the appended claims in any way.
[0154] Various functional blocks, modules and steps are disclosed above. The arrangement provided is illustrative rather than restrictive. Therefore, the functional blocks, modules and steps can be reordered or combined in a different manner than in the examples provided above. Similarly, some embodiments include only a subset of functional blocks, modules and steps, and any such subset is allowed.
[0155] The breadth and scope of the present disclosure should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.
Claims
1. A method for decoding an image of a video, the image comprising a current transform unit, the method comprising: The processor decompresses the bitstream to obtain a binary representation of a current position in the current transform unit and a Rice parameter value for Golomb-Rice binarization of the current position, wherein the Rice parameter value is determined based on a historical variable value of a previous transform unit before the current transform unit, and the historical variable value is determined based on at least one of a bit depth or a bit rate used for decoding the image; The processor converts the binary representation to a quantization level of the current position using Golomb-Rice binarization with the Rice parameter value; and The processor dequantizes the quantization level of the current position to generate a coefficient of the current position.
2. The method according to claim 1, wherein: The historical variable value is determined as follows: obtaining an offset value based on at least one of the bit depth or the code rate used to decode the image; and The historical variable value is determined based on the offset value and a first non-zero Golomb-Rice coded quantization level in the previous transform unit.
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 neighboring positions of the current position is located outside the current transform unit.
6. The method according to claim 1, wherein: The binary representation of the current position includes bypass coded bits in regular residual coding (RRC).
7. The method according to claim 1, wherein: Converting the binary representation includes converting the binary representation to an absolute level in the quantization level of the current position.
8. A method for encoding an image of a video, the image comprising a current transform unit, the method comprising: The processor quantizes the coefficient of each position in the current transform unit to generate a quantization level of the current transform unit; The processor determines, based on historical variable values of a previous transform unit before the current transform unit, a Rice parameter value for Golomb-Rice binarization at a current position in the current transform unit, wherein the 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 converting the quantization level of the current position into a binary representation using a Golomb-Rice binarization with the Rice parameter value; as well as The processor compresses the binary representation of the current position into a code stream.
9. The method according to claim 8, further comprising: obtaining an offset value based on at least one of the bit depth or the bit rate used to encode the image; as well as The history variable value is determined based on the offset value and a first non-zero Golomb-Rice coded quantization level among the quantization levels of the previous transform unit.
10. A non-transitory computer readable medium storing instructions that, when executed by a processor, perform a process for encoding an image of a video, the image comprising a current transform unit, the process comprising: quantizing the coefficients of each position in the current transform unit to generate a quantization level of the current transform unit; Determining a Rice parameter value for Golomb-Rice binarization at a current position in the current transform unit based on a historical variable value of a previous transform unit before the current transform unit, wherein the historical variable value is determined based on at least one of a bit depth or a bit rate used to encode the image; converting the quantization level of the current position into a binary representation using Golomb-Rice binarization with the Rice parameter value; and The binary representation of the current position is compressed into a code stream.
Citation Information
Patent Citations
Rice parameter update for coefficient level coding in video coding process
CN105191307A
Rice parameter initialization for coefficient level coding in video coding process
CN105474641A
Quantization level binarization in video coding
CN117356093A
Method of determining binary codewords for transform coefficients
US20130188727A1
Method, apparatus and system for encoding and decoding a subset of transform units of encoded video data
US20150078443A1