Method and apparatus for context-based binary arithmetic encoding and decoding

By adopting separate context sets and QP value-based context model selection in the video encoding system, the efficiency problem of the CABAC encoding/decoding system in the case of multiple QP value switching is solved, and more efficient video compression is achieved.

CN119520781APending Publication Date: 2025-02-25INTERDIGITAL VC HOLDINGS INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411513441.1
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2018-07-02
Filing Date
2019-05-30
Publication Date
2025-02-25

AI Technical Summary

Technical Problem

In the video encoding system, when multiple QP values ​​are switched, the encoding efficiency is affected, resulting in a decrease in the accuracy of the statistical behavior model.

Method used

The video data is encoded and decoded by using separate context sets in the case where multiple QP values ​​change within the same codec strip, specifically including selecting different context models based on the QP values ​​and updating the context probability under appropriate conditions.

Benefits of technology

The efficiency of the CABAC encoding/decoding system in the case of switching multiple QP values ​​is improved, the accuracy of the statistical behavior model of syntax elements is enhanced, and the compression efficiency of the video encoding system is improved.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119520781A_ABST
    Figure CN119520781A_ABST
Patent Text Reader

Abstract

An encoding method is disclosed. At least one context for encoding a syntax element associated with a current block of an image is first determined from quantization information associated with the current block. Next, context-based entropy coding is performed on the syntax element with the determined at least one context.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a divisional application of the invention patent application with application number 201980044062.3 filed on May 30, 2019 and invention name “Context-based binary arithmetic coding and decoding”. Technical Field

[0002] The present embodiments generally relate to methods and apparatus for video encoding or decoding, and more particularly to methods and apparatus for video encoding or decoding using adaptive quantization. Background Art

[0003] In order to achieve high compression efficiency, image and video coding schemes usually use prediction and transformation to fully utilize the spatial and temporal redundancy in the video content. In general, intra-frame or inter-frame prediction is used to exploit intra-frame or inter-frame correlation, and then the difference between the original image block and the predicted image block (often expressed as a prediction error or prediction residual) is transformed, quantized, and entropy encoded and decoded. During encoding, it is usually possible to partition / split the original image block into sub-blocks using quadtree partitioning. In order to reconstruct the video, the compressed data is decoded by the inverse process corresponding to the prediction, transformation, quantization, and entropy encoding and decoding. Summary of the invention

[0004] One or more of the given embodiments also provide a computer-readable storage medium on which instructions for encoding or decoding video data according to at least a portion of any of the above methods are stored. One or more embodiments also provide a computer-readable storage medium on which a bit stream generated according to the above encoding method is stored. One or more embodiments also provide a method and apparatus for sending or receiving a bit stream generated according to the above encoding method. One or more embodiments also provide a computer program product, which includes instructions for executing at least a portion of any of the above methods. BRIEF DESCRIPTION OF THE DRAWINGS

[0005] Figure 1 Describes the CABAC (Context-Adaptive Binary Arithmetic Coding and Decoding) decoding process for syntax elements of a given input codec bitstream;

[0006] Figure 2 Describes the CABAC (Context-Adaptive Binary Arithmetic Coding and Decoding) encoding process of syntax elements in a bitstream;

[0007] Figure 3 illustrates different scanning orders in an 8×8 transform block as supported by HEVC;

[0008] Figure 4 A flow chart depicting a method for encoding and decoding a significance coefficient flag;

[0009] Figure 5 The principle of template-based context model selection for encoding and decoding coefficient levels, in particular, significant coefficient flags, is illustrated;

[0010] Figure 6 A flow chart depicting a context calculation method for encoding and decoding a quadtree split flag for a coding unit;

[0011] Figure 7 Depicts the codec tree and the quadtree depth of each codec unit in the codec tree;

[0012] Figure 8 A flow chart depicting a method for encoding and decoding a significance coefficient flag using context separation based on a codec unit's QP;

[0013] Fig. 9 and 10 A flowchart of a context calculation method for encoding and decoding a quadtree split flag of a codec unit according to various embodiments is depicted;

[0014] Fig.11 illustrates a block diagram of a video encoder according to an embodiment;

[0015] Fig.12 illustrates a block diagram of a video decoder according to an embodiment; and

[0016] Fig.13 A block diagram of an example of a system in which various aspects and embodiments are implemented is illustrated. DETAILED DESCRIPTION

[0017] Adaptive (or variable) quantization is widely used to optimize the visual quality of decoded video at a given bitrate. As an example, a variable quantization parameter (QP) can be used within the same slice. Typically, perceptually optimized encoding is obtained by allocating more bits to perceptually sensitive picture areas.

[0018] Under the assumption that a picture is encoded using multiple QPs, at least one embodiment proposes to improve the compression efficiency of a video encoding system.

[0019] In conventional standard video compression schemes, entropy coding of some bitstream syntax elements employs the well-known Context Adaptive Binary Arithmetic Coding (CABAC).

[0020] This consists in representing each syntax element (or symbol) so as to be encoded in the form of a series of binary symbols called "bins". Each bin can be arithmetically encoded or decoded. The probability of a bin being equal to 1 or 0 is a conditional probability, which depends on some contextual state / information associated with the bin under consideration.

[0021] These conditional probabilities define a so-called context model that represents the statistical behavior of a random variable corresponding to the considered binary symbol. When processing the considered binary bit, the context for encoding / decoding the considered binary bit can be adaptively selected according to the context state of the codec.

[0022] Therefore, in order to select a context suitable for encoding / decoding the bin in question, a context index is calculated and then used to identify the context for encoding / decoding.

[0023] Typically, the context index may depend on the value taken by the considered symbol for some surrounding (top, left) already coded blocks.

[0024] Whenever a "bin" is encoded, for example for consecutive blocks in a picture, the context model of interest (ie the conditional probabilities associated with the context) is updated according to the values ​​successively taken by the bin.

[0025] The update of context probabilities considers single or double sliding windows in HEVC and JEM (Joint Exploration Model, "Algorithm description of Joint Exploration Test Model 7 (JEM7)", J. Chen, E. Alshina, G. J. Sullivan, J.-R. Ohm, J. Boyce (eds.), JVET-G1001, August 2017), respectively. It aims to gradually match the conditional probabilities to the statistical behavior of the considered bins as accurately as possible. The context model update process also has a given inertia, i.e., the probabilities gradually converge to the exact statistical pattern of the bins at a certain speed.

[0026] However, the statistical behavior of some syntax elements varies significantly from one QP to another. Usually this is the case for signaling some bins of splitting mode or some transform coefficient / block importance information. Indeed, such information depends strongly on the codec operating point in terms of rate level.

[0027] In fact, in case QP takes multiple values ​​within the same codec's slice, the statistical behavior of some syntax elements may change, and their associated contexts may be updated according to these statistical model changes due to multiple QP values.

[0028] The context model update system has a certain degree of inertia, requiring several events of the "bin" of interest for the model to converge towards accurate modeling. Therefore, CABAC coding efficiency suffers from switching between multiple QPs in the same codec's slices in terms of the accuracy of the statistical behavior model of some coded / decoded syntax elements.

[0029] At least one embodiment makes the CABAC encoding / decoding system more efficient in the case of multiple QP changes within a single codec's slice.

[0030] Typically, given some past events, the context model consists of two conditional probabilities that a bit is 1 or 0. Each time a bit is decoded, the context model of interest is updated according to the multi-hypothesis system.

[0031] The context model probability update process has a certain speed in terms of convergence towards accurate modeling. This speed is adjusted to optimize coding efficiency through slice type and slice level quantization parameter (QP).

[0032] However, the context probability update process does not take into account the possibility that the QP may vary from block to block within a given slice. Furthermore, for a given binary symbol of the video syntax of a codec, the same context is generally used for all QP values.

[0033] Therefore, the CABAC arithmetic coding engine and context management are not optimized for the case where the QP changes from block to block within a slice of the same codec.

[0034] At least one embodiment makes a CABAC encoding / decoding system more efficient when multiple QPs vary from block to block within a single encoded slice.

[0035] The following sections describe several implementations. First, the encoding / decoding of various syntax elements is described. Then, various implementations of the first embodiment of entropy encoding / decoding of syntax elements used in residual encoding / decoding are described. Then, different implementations of the second embodiment of entropy encoding / decoding of syntax elements used in encoding / decoding of split information are described. Various implementations of the third embodiment for updating probabilities in context-based entropy coding are described. Finally, at least one embodiment using bypass coding is described. At least one embodiment uses multiple possible context models for some syntax elements and switches from one context set to another context set based on the QP change that occurs during encoding / decoding of the slice.

[0036] Context-Adaptive Binary Arithmetic Coding (CABAC) and Decoding

[0037] Figure 1 Describes the CABAC decoding process for syntax elements of a given input codec's bitstream.

[0038] Figure 1 One input to the process is a coded bitstream, e.g. conforming to the HEVC specification, its extensions or future video coding standards. At any point in the decoding process, the decoder knows which syntax element to decode next. This is fully specified in the standardized bitstream syntax and decoding process. Moreover, it also knows how the syntax element currently to be decoded is binarized (i.e. represented as a sequence of binary symbols called bins, each of which is equal to "1" or "0") and how each bin of the bin string has been encoded.

[0039] Therefore, the first stage of the CABAC decoding process ( Figure 1 ) decodes a sequence of bits. For each bit, it knows whether it has been encoded according to bypass mode or normal mode. Bypass mode consists only in reading a bit in the bit stream and assigning the obtained bit value to the current bit. The advantage of this mode is that it is simple and clear, and therefore fast. Figure 1 The bypass decoding engine (10) performs decoding in bypass mode. It is usually used for binary bits with uniform statistical distribution, that is, the probability of being equal to "1" or "0" is equal.

[0040] In contrast, if the current bin has not been coded in bypass mode, it means that it has been coded in the so-called normal mode, ie by context-based arithmetic coding.

[0041] In that case, the decoding of the considered bin proceeds as follows. First, the context for decoding the current bin is obtained. It is given by Figure 1 The context modeler module (12) shown above is given. The goal of the context is to obtain the conditional probability that the current bin has the value "0" given some context prior information X. The prior information X is usually the value of some already decoded syntax element, which is available in a synchronized manner at both the encoder and decoder sides when the current bin is decoded.

[0042] Typically, the prior information X used to decode a bin is specified in the standard in such a way that it is statistically correlated with the current bin to be decoded. The interest in using this contextual information is that it reduces the rate cost of encoding the bin. The fact that the bin and X are correlated reduces the conditional entropy of the bin (bin) given X, i.e., H(bin|X). In information theory, the following relationship is well known:

[0043] H(bin|X) <H(bin)

[0044] This means that the conditional entropy of a bin knowing X is lower than the entropy of the bin if the bin and X are statistically correlated. Therefore, the contextual information X is used to obtain the probability of a bin being "0" or "1". Given these conditional probabilities, Figure 1 The conventional decoding engine (14) performs arithmetic decoding of the binary value bin. Then, knowing the current context information X, the value of the bin is used to update the value of the conditional probability associated with the current bin. This Figure 1 The above is called the context model update step. Updating the context model for each bin as soon as the bin is decoded (or encoded) allows to gradually refine the context model for each bin. Thus, the CABAC decoder gradually learns the statistical behavior of each bin encoded in a regular pattern.

[0045] Conventional arithmetic decoding or bypass decoding (depending on how it was encoded) of the current bin results in a sequence of decoded bins.

[0046] like Figure 1 As shown on the right side of , the second stage of CABAC decoding consists in converting this sequence of binary symbols into higher-level syntax elements. The syntax element can take the form of a flag, in which case it directly takes the value of the current decoded binary bit. On the other hand, if the binarization of the current syntax element corresponds to a set of several binary bits according to the specification of the considered standard, then the conversion module takes place, in Figure 1 It is called "Binary Codeword to Syntax Element" (16).

[0047] This makes the reciprocal of the binarization step done by the encoder. The inverse transformation performed here therefore consists in obtaining the values ​​of these syntax elements based on their corresponding decoded binarized versions.

[0048] Figure 2 Describes the CABAC encoding process that converts syntax elements into a bitstream. Figure 1The encoding process also includes a binarizer (20), a conventional encoding engine (22), and a bypass encoding engine (24). The binarizer (20) includes obtaining a binarized version of the value of the syntax element.

[0049] Context used in entropy coding of transform coefficients

[0050] First, the transform block is divided into 4×4 sub-blocks of quantized coefficients, called codec groups (CGs). Entropy encoding / decoding consists of several scan passes, which are based on Figure 3 The scanning mode selected from the several possible scanning modes shown above is used to scan the TB (transform block).

[0051] As an example, the codec group (CG) included in the 8×8TB is Figure 3 Shown above.

[0052] Transform coefficient coding in HEVC involves five main steps: scanning, last significant coefficient coding, significance map coding, coefficient level coding, and sign data coding.

[0053] For inter blocks, use Figure 3 The left side is scanned diagonally, while for 4×4 and 8×8 intra blocks, the scanning order depends on the intra prediction mode that is active for those blocks.

[0054] Then, the scan pass over the TB consists of processing each CG in turn according to one of the three scan modes (diagonal, horizontal, vertical), and the 16 coefficients within each CG are also scanned according to the scan order considered. The scan pass starts at the last significant coefficient in the TB and processes all coefficients until the DC coefficient.

[0055] Entropy coding of transform coefficients consists of up to five scan passes, one dedicated to coding each syntax element in the following list:

[0056] · significant-coeff-flag: The significance of a coefficient indicates whether the coefficient is zero or non-zero.

[0057] coeff-abs-level-greater1-flag: Indicates whether the absolute value of the coefficient level is greater than 1.

[0058] coeff-abs-level-greater2-flag: Indicates whether the absolute value of the coefficient level is greater than 2

[0059] coeff-sign-flag: The sign of the significant coefficient (0: positive, 1: negative).

[0060] coeff-abs-level-remaining: The remaining value of the absolute value of the coefficient level (if it is larger than the value decoded in the previous traversal).

[0061] Once the absolute value of a coefficient is known at the decoder side by performing a subset of the first four scanning passes above, no other syntax elements are decoded with respect to its absolute value in the remaining passes for that coefficient. Similarly, coeff-sign-flag is signaled only for coefficients that the decoder knows are not equal to zero based on the significance pass, and is therefore decoded.

[0062] The encoder performs all scan passes for a given CG until all quantized coefficients in that CG can be reconstructed through the corresponding decoding process before moving on to the next CG.

[0063] A scan pass is a loop over all quantized coefficients in a given CG in scan order.

[0064] The entire TB parsing process consists of the following steps:

[0065] 1. Decode the last significant coordinate. This includes the following syntax elements:

[0066] last_sig_coeff_x_prefi, last_sig_coeff_y_prefix,

[0067] last_sig_coeff_x_suffix and last_sig_coeff_y_suffix

[0068] This provides the decoder with the spatial position (x and y coordinates) of the last non-zero coefficient in the entire TB.

[0069] Then, for each consecutive CG from the CG containing the last significant coefficient in the TB to the top-left CG in the TB, the following steps apply:

[0070] 2. Decode the CG importance flag, which is called

[0071] coded_sub_block_flag.

[0072] 3. Decode the significant coefficient flags for each coefficient in the considered CG. This corresponds to the syntax element sig_coeff_flag in the HEVC specification. This indicates which coefficients in the CG are non-zero.

[0073] The next parsing stage aims to signal the coefficient levels of the coefficients that are called non-zero in the considered CG. This involves the following syntax elements.

[0074] 4. coeff_abs_level_greater1_flag: This flag indicates whether the absolute value of the current coefficient is greater than 1. If not, then whether the absolute value is equal to 1.

[0075] 5. coeff_abs_level_greater2_flag: This flag indicates whether the absolute value of the current coefficient is greater than 1. If not, then whether the absolute value is equal to 2.

[0076] 6. coeff_sign_flag: This flag indicates the sign of the non-zero coefficient

[0077] coeff_abs_level_remaining encodes the absolute value of coefficients with an absolute value greater than 2.

[0078] Encoding of important flags

[0079] Figure 4 Depicts the important coefficient encoding process.

[0080] The input to this process is the transform block (TB) to be encoded and the current coding group currCG in the considered TB. The size of the TB is defined by (width, height). The first step (S40) of this process aims to calculate the index of the basic context index used to encode the important coefficient flag. More precisely, ctxOffset is calculated at S40. As Figure 4 shown above, it depends on the TB size, more precisely, on the TB area. In fact, the following value is calculated:

[0081] uiLog2BlkSize = (log2(width) + log2(height)) >> 1

[0082] If the current TB is a luminance block, then the context used to encode the important coefficient flag is determined according to this value uiLog2BlkSize.

[0083] indexOnTbSize = uiLog2BlkSize ≤ 2? 0 : f(uiLog2BlkSize)

[0084] In an embodiment, f() is a defined function, for example in the form of a lookup table, and (a < b? i : j) means that if a < b, then the result is i, otherwise the result is j. As an example,

[0085]

[0086] This means that separate CABAC context sets are employed to encode the significant-coefficient flags for TBs with different areas (ie, different uiLog2BlkSize).

[0087] These different context sets are represented by context addresses ctxOffset in the globally indexed context sets, which are useful for encoding significant-coefficient flags.

[0088] Figure 4 The subsequent steps of the encoding process of comprises looping over each coefficient in the current coding group of the current TB, starting from the last coefficient towards the lowest frequency coefficient.

[0089] This loop is initialized at step S42, which calculates the starting coefficient position firstPosInCG and the last coefficient position currScanPos in the considered codec group according to the HEVC scan of the quantized coefficients in the given codec group during the parsing process. At S43, the significant coefficient flag or significance (also sig_coeff_flag) is determined as a variable uiSig, which is 1 if the coefficient in currScanPos is non-zero, otherwise it is 0.

[0090] For each coefficient, a context index currCtxIdx for encoding its importance is calculated at step S45 according to the context offset (ctxOffset) and the context increment (ctxIncrement). It includes calculating the context increment (S44), as will be described later. Figure 5 As described.

[0091] Once the context index currCtxIdx of the current coefficient (defined by currScanPos) is obtained, the significance bits represented by the variable uiSig are entropy encoded (e.g., CABAC encoded) based on the context identified by currCtxIdx in step S46. In step S48, the method checks whether currScanPos is greater than firstPosInCG. If the check in step S48 is true, the method decrements currScanPos by 1 in step S50 and returns to step S43. If the check in step S48 is false, the method ends in step S52.

[0092] Figure 4 The context increment calculation (S44) depends on the value of the important coefficient flag value of the previously encoded coefficient in the neighborhood covered by the local template. More specifically, the context index is determined based on the sum of the important flags of the adjacent coefficients. Figure 5 In order to capture the characteristics of transform coefficients at different frequencies, a TB is split into up to three regions, and the splitting method is fixed regardless of the TB size, such as Figure 5 Each TB is split into three regions marked with different gray levels, and the context index assigned to each region is shown. For example, the first region (the upper left part of the TB) is assigned context indexes 12 to 17.

[0093] The context increment ctxIncrement associated with a given transform coefficient X is calculated as follows:

[0094] - Calculate the number of significant coefficients in a set of adjacent coefficients (x0,…,x4): Where sig(x i ) is the coefficient x i Importance

[0095] - The index of the diagonal to which the coefficient X belongs is calculated as the sum of its coordinates:

[0096] diag=posX(X)+poxY(X)

[0097] -Finally, the context increment for the current coefficient X is calculated as follows:

[0098] ctxIncrement=(diag<2?6:0)+(diag<5?6:0)+num SIG

[0099] Luma and chroma components are processed in a similar manner, but with separate sets of context models.

[0100] The context index for the encoding of the importance of the coefficient is calculated (S45) by adding the context increment ctxIncrement to the context offset ctxOffset. Once the context index currCtxIdx of the current coefficient is obtained, its significance bits represented by the variable uiSig are arithmetically encoded. Once the loop has processed the coefficient with the lowest frequency in the current CG, the processing ends (S48, S50). When the coefficient with the lowest frequency in the CG under consideration has been processed, the processing ends (S52).

[0101] Encoding of split information

[0102] Figure 6 Depicted is the context calculation for encoding of codec unit (CU) quadtree split flag processing.

[0103] The syntax elements used to encode / decode split information in the codec tree are as follows:

[0104] -The quadtree split flag indicates whether the CU is split in a quadtree manner. For example, the context for encoding the quadtree split flag is determined by the value of the quadtree depth of the current CU relative to the quadtree depth of the coded surrounding CUs. The context is selected from 5 possible contexts to encode / parse the quadtree CU split flag. Figure 6 The algorithm depicts the calculation of the context identifier to encode the CU quadtree split flag. As can be seen, the context is determined based on the quadtree depth of the current CU relative to the quadtree depth of the surrounding CUs that have been encoded / parsed. The quadtree depth of a CU represents the depth level of the quadtree portion when the CTU is progressively split into smaller codec units. Figure 7 , an exemplary CTU divided into codec units is illustrated. The quadtree depth of each codec unit is also given. This quadtree depth depends on the number of quadtree splits that resulted in the CU under consideration. Binary or ternary splits are not included in the calculation of the quadtree depth.

[0105] Figure 6 The quantities represented on the graph of are defined as follows:

[0106] οctxIdx represents the index of the context being determined. It is composed of Figure 6 The algorithm is calculated and the associated context is used in the encoding of the CU quadtree split flag.

[0107] οleftQTDepth represents the quadtree depth of the CU located to the left of the upper left corner of the current CU.

[0108] οtopQTDepth represents the quadtree depth of the CU located at the top of the upper left corner of the current CU.

[0109] οbottomLeftQTDepth represents the quadtree depth of the CU located to the left of the lower left corner of the current CU.

[0110] οtopRightQTDepth represents the quadtree depth of the CU located at the top of the upper right corner of the current CU.

[0111] οcurrQTDepth is the quadtree depth of the current CU.

[0112] -Binary / ternary split flag indicates whether a CU that is not split in a quadtree manner is split in a binary or ternary manner. If not, the CU is not split at all. This flag is referred to as the BT split flag hereinafter. In order to encode or parse it, the CABAC context among the 3 possible contexts is used. The context id is calculated based on the combined quadtree and binary tree depth relative to the combined depth of the left and top neighboring CUs or the current CU.

[0113] - The orientation of the binary / ternary splitting pattern. This orientation (horizontal or vertical) is signaled by a flag. It is encoded / parsed based on the context. Depending on the shape of the block, the corresponding context takes the value 0, 1 or 2. It is calculated as follows:

[0114] btSplitOrientationContextIdx=(width==height)? 0:(width>height?1:2)

[0115] -Ternary split mode flag indicates whether ternary split mode is used for the current CU. It is encoded / parsed based on context. Depending on the direction of the split and the shape of the block, a context among 6 possible contexts is used.

[0116] Back to Figure 6 , ctxId is initialized to zero. In the case where the left CU (i.e., the CU located to the left of the upper left corner of the current CU) is available (S60), leftQTDepth is compared with currQTDepth (S62). In the case of leftQTDepth>currQTDepth, ctxIdx is set equal to ctxId+1 (S64), and the method continues to S66. Otherwise (i.e., the left CU is not available or leftQTDepth≤currQTDepth), the method continues to S66.

[0117] In the case where the top CU (i.e., the CU located at the top left corner of the current CU) is available (S66), topQTDepth is compared with currQTDepth (S68). In the case where topQTDepth>currQTDepth, ctxIdx is set equal to ctxId+1 (S70), and the method continues to S72. Otherwise (i.e., the top CU is not available or leftQTDepth≤currQTDepth), the method continues to S72. MinQTDepth is set equal to the minimum value among leftQTDepth, topQTDepth, bottomLeftQTDepth, and topRightQTDepth (S72). MaxQTDepth is set equal to the maximum value among leftQTDepth, topQTDepth, bottomLeftQTDepth, and topRightQTDepth (S72). In the case where currQTDepth<minQTDepth, ctxIdx is set to 3 (S74, S76), and the method continues to S78. Otherwise, the method continues to S78. In the case of currQTDepth>maxQTDepth, ctxIdx is set to 4 (S80), and the method ends (S98). Otherwise, the method ends.

[0118] First Embodiment: Separating Contexts by QP Values ​​to Encode Transform Coefficients of Residual Blocks According to the first embodiment, contexts for encoding transform coefficients are separated according to QP values.

[0119] In other words, with respect to transform coefficients, two CUs having different QP values ​​are encoded and decoded using different context sets.

[0120] According to a variant, a separate context set is used only if the corresponding QP values ​​are sufficiently different, ie the absolute difference between two QP values ​​is above a given value.

[0121] According to a variant, a finite number of separate context sets are used to limit the total number of contexts used for encoding and decoding residual blocks. In this case, one context set is defined per QP range. The syntax elements of a CU are encoded using the context set associated with the QP range to which the QP of the CU belongs. In an example, up to 3 different QP-based context sets can be used.

[0122] In practice, the determination of the identifier of the context used to encode the significance flag of a given coefficient will be similar to the method described in the section entitled "Encoding of significance flags". The difference is that the context id is also differentiated according to the QP value of the considered CU.

[0123] For example, in the prior art, the quantity ctxIncrement is calculated as described in the section entitled "Encoding of Significant Flags". Here, let us assume that 3 separate context sets are used based on the QP value.

[0124] In that case, the final context delta value used to encode the considered importance flag typically becomes:

[0125] contextIncrementFinal=NctxIncrement×QPsetIdx+ctxIncrement (Equation 1)

[0126] in:

[0127] -NctxIncreement is the number of possible values ​​of ctxIncrement (here 5).

[0128] -QPSetIdx is the index of the QP-based context set. If up to 3 separate context sets are used, then QPSetIdx is equal to 0, 1, or 2.

[0129] According to an embodiment, the proposed QP-based context separation is only employed in the encoding and parsing of the lastSignificantX and lastSignificantY syntax elements.

[0130] The first embodiment described in this section can be applied to each of the following syntax elements that adopt context-based binary arithmetic coding:

[0131] -last_sig_coeff_x_prefix,last_sig_coeff_y_prefix

[0132] -coded_sub_block_flag

[0133] -coeff_abs_level_greater1_flag

[0134] -coeff_abs_level_greater2_flag

[0135] exist Figure 8 The first embodiment is shown in the figure above. Figure 4 The steps are exactly the same Figure 8 The steps are identified by the same reference numerals and are not disclosed further. Figure 8The method comprises an additional step according to the proposed first embodiment, which is intended to calculate a final context index increment etxIncrementFinal, which is used to obtain the CABAC context actually used to encode the important flag of the quantization coefficient. The final context index increment is obtained by obtaining the QP of the current CU (S44-1), obtaining the QP range index QPSetIdx from the QP of the current CU (S44-2), and then calculating (S44-3) the final context index increment according to the equation (Equation 1). At S45, the final context index increment ctxIncrementFinal is added to ctxOffset to obtain currCtxIdx.

[0136] Second embodiment: Separating context by QP value to encode CU split information

[0137] According to a second embodiment, the flag indicating CU split is encoded / parsed using a context selected based on the QP value of the considered codec unit. This means that two CUs with different QP values ​​use separate context sets for CABAC encoding of their associated split flags.

[0138] According to a variant, a separate context set is used only if the corresponding QP values ​​are sufficiently different, ie the absolute difference between two QP values ​​is above a given value.

[0139] According to a variant, a finite number of separate context sets are used to limit the total number of contexts used for encoding and decoding the residual block.

[0140] Fig. 9 The diagram illustrates the embodiments described in this section. Figure 6 The steps are exactly the same Fig. 9 The steps (S60 to S80) are identified by the same reference numerals and are not described further. Fig. 9 The processing steps are the last three steps of the flowchart, namely, S92, S94 and S96.

[0141] At S92, the QP of the current CU is obtained, referred to as the current QP. Next, at S94, the set of QP values ​​to which the current QP belongs is calculated. In practice, a finite number of sets of QP values ​​are considered. This results in a finite increase in the number of CABAC contexts when the context is separated based on QP. The calculation of the QP index set (denoted as QPSetIdx) can be in the following form:

[0142] QPSetIdx=floor(max(min((QP–30) / 4+2,4),0))

[0143] Among them: if a>=b, then max(a,b) returns a, otherwise it returns b; if a<=b, then min(a,b) returns a, otherwise it returns b; and floor(a) returns the largest integer less than or equal to x.

[0144] Note that in this particular implementation, 5 QP value sets are used. Reduction to 3 QP range sets can be achieved by using the following modified formula:

[0145] QPSetIdx=floor(max(min((QP–30) / 5+2,2),0))

[0146] In particular, the step of transforming the context identifier (S96) is as follows:

[0147] ctxIdx=ctxIdx+(QPSetIdx×5)

[0148] It is intended to separate contexts. In the prior art, 5 possible contexts (indexed from 0 to 4) are used to select a context to encode the CU quadtree split flag. Now according to the above context id transformation, when three QP ranges are used to separate contexts, the final context id takes its value from the entire set of 3×5=15 possible values. In other words, the calculation of the context id of the prior art is retained, but the context id calculated in this way is used to select a context in the context set indexed by the QPSetIdx value. The QPSetIdx value is an index obtained from the QP value of the current CU, or more precisely, the QP range to which the current QP value belongs. As an example, if 3 separate context sets are used, then QPSetIdx is equal to 0, 1, or 2.

[0149] The second embodiment described in this section can be applied to the following syntax elements.

[0150] -Quadtree split flag

[0151] - Binary / ternary split flag

[0152] - Binary / ternary split direction signs

[0153] - Ternary split mode flag

[0154] Third embodiment: Updating context probability according to QP values ​​of consecutive coding and decoding units

[0155] According to another embodiment, the updating of the probability associated with a given context is performed only if the context information for CABAC coding in the current CU comes from one or several neighboring CUs having the same QP value as the QP value of the current CU, or a QP value close to the QP value of the current CU. Being close to the current QP usually means that the absolute difference between the two QPs is below a given value. If this is not the case, i.e. if the distance between the two QPs is too large, the context probability update step is bypassed.

[0156] In one embodiment, if there is no neighboring CU in the current CU with the same QP (or a close QP) as the current CU, the bypass mode is selected to encode and parse the quadtree split flag of the current CU.

[0157] If at least one neighboring CU has the same QP (or close QP) as the current CU, then only neighboring CUs with the same QP (or close QP) as the current CU are considered to calculate the CABAC context of the quadtree flag of the current CU.

[0158] Indeed, in CABAC, the context probability represents the conditional probability that a binary symbol (or bin) is equal to 1 (or 0) given some context information available at both the encoder and the decoder when the considered bin is encoded or parsed.

[0159] The statistical dependence of the bin values ​​on the context information used in the CABAC engine is even more important because the current CU and its causal neighboring CUs are coded with the same QP or with close QPs.

[0160] Therefore, bypassing the context model update in case of sufficiently different QP values ​​is advantageous because it avoids degrading the accuracy of CABAC context modeling.

[0161] According to an embodiment, the third embodiment described in this section is used in combination with the first embodiment and / or the second embodiment.

[0162] According to another embodiment, the third embodiment described in this section is employed without using the first and second embodiments.

[0163] Fourth embodiment: context-based coding based on the QP value of the current CU relative to the neighboring CU

[0164] According to a fourth embodiment, if the binary bit under consideration and the context information used for its encoding / parsing belong to coding units with the same QP value (or close QP values), context-based encoding of the binary symbols is used (either in the transform coefficients or in the split information encoding).

[0165] Otherwise, the binary symbol in question is encoded in the known bypass mode of the entropy codec, which consists in encoding the binary symbol on one bit. This means that in this case the binary bit in question is not arithmetically encoded. Instead, a bit equal to the binary symbol (or equal to its complementary value) is written directly to the coded bitstream.

[0166] This embodiment consists of Fig.10 The figure shows. Figure 6 The modules are exactly the same Fig.10 The modules (S60 to S80) are identified by the same reference numerals and are not described further. S60, S66 and S72 are slightly modified. In the case where the left CU is available (S60) and has the same QP as the current QP (or a QP close to the QP of the current CU), leftQTDepth is compared with currQTDepth (S62). In the case where the top CU is available (S66) and has the same QP as the current QP (or a QP close to the QP of the current CU), topQTDepth is compared with currQTDepth (S68). In S72, minQTDepth and maxQTDepth are calculated as follows:

[0167] minQTDepth

[0168] = min (QT depth of surrounding CUs with the same (or close) QP as the current CU)

[0169] maxQTDepth

[0170] = max(QT depth of surrounding CUs with the same (or close) QP as the current CU)

[0171] In the case that no neighboring CU in the current CU has the same QP (or a QP close to that of the current CU), the bypass mode is selected to encode and parse the quadtree split flag of the current CU ( S100 ).

[0172] In the case that at least one CU adjacent to the current CU has the same QP (or a close QP) as the current CU, only the adjacent CUs having the same QP (or a close QP) as the current CU are considered to calculate the CABAC context of the quadtree split flag of the current CU (S102).

[0173] Finally, the previous reference Figure 8 The first embodiment described previously in the section entitled "Separating context by QP value to encode transform coefficients of residual blocks" is also included in Fig. 9In the process of (S92, S94 and S96), in order to separate contexts between CUs with different QPs or belonging to different sets of QP values. Note that these context separation steps are optional and can be obtained from Fig. 9 discarded during processing.

[0174] This document describes various aspects including tools, features, embodiments, models, methods, etc. Many of these aspects are described specifically and at least for the purpose of illustrating individual features, and are often described in a manner that may sound restrictive. However, this is for clarity of description and does not limit the application or scope of those aspects. In fact, all of the different aspects can be combined and interchanged to provide additional aspects. Moreover, these aspects can also be combined and interchanged with aspects described in previous applications.

[0175] The aspects described and contemplated in this document may be implemented in many different forms. Fig.11 , 12 13 provide some embodiments, but other embodiments are contemplated and are Fig.11 , 12 The discussion of 13 does not limit the breadth of the embodiments. At least one of these aspects generally relates to video encoding and decoding, and at least another aspect generally relates to transmitting a generated or encoded bitstream. These and other aspects can be implemented as methods, apparatus, a computer-readable storage medium having stored thereon instructions for encoding or decoding video data according to any of the methods described, and / or a computer-readable storage medium having stored thereon a bitstream generated according to any of the methods described.

[0176] In this application, the terms "reconstructed" and "decoded" are used interchangeably, the terms "pixel" and "sample" are used interchangeably, and the terms "image", "picture" and "frame" are used interchangeably. Usually, but not necessarily, the term "reconstructed" is used on the encoder side, while "decoded" is used on the decoder side.

[0177] Various methods are described herein, and each method includes one or more steps or actions for implementing the described method. Unless a specific order of steps or actions is required for proper operation of the method, the order and / or use of specific steps and / or actions may be modified or combined.

[0178] The various methods and other aspects described in this document can be used to modify Fig.11 and 12Modules of the video encoder 100 and decoder 200 shown in , such as the entropy encoding and decoding module (145) and the entropy decoding module (230). Moreover, the present aspects are not limited to VVC or HEVC, and can be applied to, for example, other standards and recommendations (whether pre-existing or developed in the future), as well as extensions of any such standards and recommendations (including VVC and HEVC). Unless otherwise indicated or technically prohibited, the various aspects described in this document can be used alone or in combination.

[0179] Various numerical values ​​are used in this document, for example, the number of different QP-based context sets. The specific values ​​are for example purposes, and the described aspects are not limited to these specific values.

[0180] Fig.11 An encoder 100 is illustrated. Variations of such an encoder 100 are contemplated, but for clarity, the encoder 100 is described below without describing all contemplated variations. Before being encoded, a video sequence may be processed (101) by pre-encoding, for example, applying a color transform to an input color picture (e.g., conversion from RGB 4:4:4 to YCbCr 4:2:0), or performing a remapping of input picture components to obtain a signal distribution that is more resilient to compression (e.g., using histogram equalization of one of the color components). Metadata may be associated with the pre-processing and appended to the bitstream.

[0181] In encoder 100, a picture is encoded by encoder elements as described below. The picture to be encoded is segmented (102) and processed in units such as CUs. Each unit is encoded using, for example, either intra or inter mode. When the unit is encoded in intra mode, it performs intra prediction (160). In inter mode, motion estimation (175) and compensation (170) are performed. The encoder decides (105) which of intra mode or inter mode to use to encode the unit, and indicates the intra / inter decision by, for example, a prediction mode flag. The prediction residual is calculated, for example, by subtracting (110) the predicted block from the original image block.

[0182] The prediction residual is then transformed (125) and quantized (130). The quantized transform coefficients, along with motion vectors and other syntax elements, are entropy encoded (145) to output a bitstream. The encoder may skip the transform and apply quantization directly to the untransformed residual signal. The encoder may bypass both the transform and quantization, i.e., the residual is directly encoded and decoded without applying a transform or quantization process.

[0183] The encoder decodes the encoded block to provide a reference for further prediction. The quantized transform coefficients are dequantized (140) and inverse transformed (150) to decode the prediction residual. The image block is reconstructed by combining (155) the decoded prediction residual and the predicted block. A loop filter (165) is applied to the reconstructed picture to perform, for example, deblocking / SAO (sample adaptive offset) filtering to reduce coding artifacts. The filtered image is stored in a reference picture buffer (180).

[0184] Fig.12 FIG. 2 shows a block diagram of a video decoder 200. In the decoder 200, a bitstream is decoded by decoder elements as described below. The video decoder 200 generally performs a decoding pass corresponding to an encoding pass, such as Fig.11 The encoder 100 also typically performs video decoding as part of encoding the video data.

[0185] In particular, the input to the decoder comprises a video bitstream, which may be generated by the video encoder 100. The bitstream is first entropy decoded (230) to obtain transform coefficients, motion vectors and other coded information.

[0186] The picture segmentation information indicates how the picture is segmented. Thus, the decoder can divide (235) the picture according to the decoded picture segmentation information. The transform coefficients are dequantized (240) and inverse transformed (250) to decode the prediction residual. The decoded prediction residual and the prediction block are combined (255) to reconstruct the image block. The prediction block can be obtained (270) from an intra-frame prediction (260) or a motion compensated prediction (i.e., inter-frame prediction) (275). A loop filter (265) is applied to the reconstructed image. The filtered image is stored in a reference picture buffer (280).

[0187] The decoded picture may also undergo post-decoding processing (285), such as performing an inverse color transform (e.g., conversion from YCbCr 4:2:0 to RGB 4:4:4) or inverse remapping that is the inverse of the remapping process performed in the pre-encoding process (101). The post-decoding processing may use metadata derived in the pre-encoding process and signaled in the bitstream.

[0188] Fig.13The block diagram of the example of the system in which various aspects and embodiments are implemented is illustrated. System 1000 can be implemented as a device including various components described below, and is configured to perform one or more aspects described in this document. Examples of such devices include, but are not limited to, various electronic devices, such as personal computers, laptop computers, smart phones, tablet computers, digital multimedia set-top boxes, digital television receivers, personal video recording systems, networked household appliances, and servers. The elements of system 1000 can be implemented in a single integrated circuit, multiple ICs and / or discrete components individually or in combination. For example, in at least one embodiment, the processing and encoder / decoder elements of system 1000 are distributed on multiple ICs and / or discrete components. In various embodiments, system 1000 is coupled to other similar systems or other electronic devices via, for example, a communication bus or by dedicated input and / or output ports. In various embodiments, system 1000 is configured to implement one or more aspects described in this document.

[0189] The system 1000 includes at least one processor 1010, which is configured to execute instructions loaded therein to implement various aspects described in this document, for example. The processor 1010 may include embedded memory, input and output interfaces, and various other circuit systems known in the art. The system 1000 includes at least one memory 1020 (e.g., a volatile memory device, and / or a non-volatile memory device). The system 1000 includes a storage device 1040, which may include a non-volatile memory and / or a volatile memory, including but not limited to an EEPROM, a ROM, a PROM, a RAM, a DRAM, an SRAM, a flash memory, a disk drive, and / or an optical drive. As a non-limiting example, the storage device 1040 may include an internal storage device, an attached storage device, and / or a network accessible storage device.

[0190] The system 1000 includes an encoder / decoder module 1030, which is configured to process data to provide encoded video or decoded video, for example, and the encoder / decoder module 1030 may include its own processor and memory. The encoder / decoder module 1030 represents a module (one or more) that can be included in a device to perform encoding and / or decoding functions. As is known, a device may include one or both of the encoding and decoding modules. In addition, the encoder / decoder module 1030 can be implemented as a separate element of the system 1000, or can be combined in the processor 1010 as a combination of hardware and software, as known to those skilled in the art.

[0191] Program code to be loaded onto the processor 1010 or the encoder / decoder 1030 to perform various aspects described in this document may be stored in the storage device 1040 and subsequently loaded onto the memory 1020 for execution by the processor 1010. According to various embodiments, during the execution of the processes described in this document, one or more of the processor 1010, the memory 1020, the storage device 1040, and the encoder / decoder module 1030 may store one or more of various items. Such stored items may include, but are not limited to, input video, decoded video or a portion of decoded video, bitstreams, matrices, variables, and intermediate or final results of equations, formulas, operations, and operation logic.

[0192] In several embodiments, memory within the processor 1010 and / or encoder / decoder module 1030 is used to store instructions and provide working memory for processing required during encoding or decoding. However, in other embodiments, memory external to the processing device (e.g., the processing device may be either the processor 1010 or the encoder / decoder module 1030) is used for one or more of these functions. The external memory may be memory 1020 and / or storage device 1040, such as dynamic volatile memory and / or non-volatile flash memory. In several embodiments, external non-volatile flash memory is used to store the operating system of the television. In at least one embodiment, a fast external dynamic volatile memory (such as RAM) is used as working memory for video encoding and decoding operations, such as for MPEG-2, HEVC, or VVC (universal video codec).

[0193] As shown in block 1130, input to the elements of system 1000 may be provided through various input devices. Such input devices include, but are not limited to, (i) an RF section that receives an RF signal transmitted over the air, for example, by a broadcaster, (ii) a composite input terminal, (iii) a USB input terminal, and / or (iv) an HDMI input terminal.

[0194] In various embodiments, the input device of block 1130 has associated corresponding input processing elements, as known in the art. For example, the RF portion may necessarily be associated with the following elements: (i) selecting a desired frequency (also referred to as selecting a signal, or band limiting a signal within a frequency band), (ii) down-converting the selected signal, (iii) again band-limiting to a narrower frequency band to select a signal band that may be referred to as a channel in some embodiments, (iv) demodulating the down-converted and band-limited signal, (v) performing error correction, and (vi) demultiplexing to select a desired data packet stream. The RF portion of various embodiments includes one or more elements that perform these functions, such as a frequency selector, a signal selector, a band limiter, a channel selector, a filter, a down-converter, a demodulator, an error corrector, and a demultiplexer. The RF portion may include a tuner that performs various of these functions, including, for example, down-converting a received signal to a lower frequency (e.g., an intermediate frequency or near baseband frequency) or baseband. In a set-top box embodiment, the RF part and its associated input processing element receive the RF signal transmitted on wired (for example, cable) medium, and filter to the frequency band of expectation again by filtering, down-conversion and perform frequency selection.Various embodiments rearrange the order of above-mentioned (and other) elements, remove some in these elements, and / or add other elements of similar or different functions.Adding element can include inserting element between existing element, for example, inserting amplifier and analog-to-digital converter.In various embodiments, the RF part comprises antenna.

[0195] In addition, the USB and / or HDMI terminals may include corresponding interface processors for connecting the system 1000 to other electronic devices across the USB and / or HDMI connections. It should be understood that various aspects of input processing (e.g., Reed-Solomon error correction) may be implemented, for example, in a separate input processing IC or in the processor 1010 as desired. Similarly, various aspects of USB or HDMI interface processing may be implemented, for example, in a separate interface IC or in the processor 1010 as desired. The demodulated, error corrected, and demultiplexed streams are provided to various processing elements, including, for example, the processor 1010, and an encoder / decoder 1030 operating in conjunction with memory and storage elements to process the data streams as needed for presentation on an output device.

[0196] The various elements of the system 1000 may be provided within an integrated housing. Within the integrated housing, the various elements may be interconnected and data may be transferred between them using a suitable connection arrangement 1140 (eg, an internal bus known in the art, including an I2C bus, wiring, and printed circuit boards).

[0197] The system 1000 includes a communication interface 1050 that enables communication with other devices via a communication channel 1060. The communication interface 1050 may include, but is not limited to, a transceiver configured to transmit and receive data through the communication channel 1060. The communication interface 1050 may include, but is not limited to, a modem or a network card, and the communication channel 1060 may be implemented, for example, within a wired and / or wireless medium.

[0198] In various embodiments, a Wi-Fi network such as IEEE 802.11 is used to stream data to the system 1000. The Wi-Fi signals of these embodiments are received on a communication channel 1060 and a communication interface 1050 suitable for Wi-Fi communication. The communication channel 1060 of these embodiments is typically connected to an access point or router that provides access to an external network including the Internet to allow streaming applications and other air communications. Other embodiments provide streaming data to the system 1000 using a set-top box that delivers data via an HDMI connection of an input block 1130. Still other embodiments provide streaming data to the system 1000 using an RF connection of an input block 1130.

[0199] The system 1000 can provide output signals to various output devices including a display 1100, a speaker 1110, and other peripherals 1120. In various examples of embodiments, the other peripherals 1120 include one or more of a stand-alone DVR, a disc player, a stereo system, a lighting system, and other devices that provide functions based on the output of the system 1000. In various embodiments, control signals are transmitted between the system 1000 and the display 1100, the speaker 1110, or other peripherals 1120 using signaling such as AV.Link, CEC, or other communication protocols that enable device-to-device control, with or without user intervention. The output devices can be communicatively coupled to the system 1000 via dedicated connections through the respective interfaces 1070, 1080, and 1090. Alternatively, the output devices can be connected to the system 1000 using a communication channel 1060 via a communication interface 1050. In an electronic device (e.g., a television), the display 1100 and the speaker 1110 can be integrated into a single unit with the other components of the system 1000. In various embodiments, the display interface 1070 includes a display driver, such as a timing controller (T Con) chip.

[0200] For example, if the RF portion of input 1130 is part of a separate set-top box, then the display 1100 and speaker 1110 may alternatively be separate from one or more of the other components. In various embodiments where the display 1100 and speaker 1110 are external components, the output signals may be provided via dedicated output connections including, for example, an HDMI port, a USB port, or a COMP output.

[0201] The embodiments may be implemented by computer software implemented by the processor 1010 or by hardware or by a combination of hardware and software. As a non-limiting example, the embodiments may be implemented by one or more integrated circuits. The memory 1020 may be of any type suitable for the technical environment and may be implemented using any appropriate data storage technology, such as, as a non-limiting example, optical memory devices, magnetic memory devices, semiconductor-based memory devices, fixed memory, and removable memory. The processor 1010 may be of any type suitable for the technical environment and, as a non-limiting example, may include one or more of a microprocessor, a general-purpose computer, a special-purpose computer, and a processor based on a multi-core architecture.

[0202] Various embodiments relate to decoding. As used in this application, "decoding" can encompass, for example, all or part of the processing performed on a received encoded sequence to produce a final output suitable for display. In various embodiments, such processing includes one or more of the processing typically performed by a decoder, such as entropy decoding, inverse quantization, inverse transform, and differential decoding. In various embodiments, such processing also, or alternatively, includes processing performed by a decoder of various embodiments described in this application, such as entropy encoding a block in response to a quantization parameter associated with the block.

[0203] As another example, in one embodiment, "decoding" refers only to entropy decoding, in another embodiment, "decoding" refers only to differential decoding, and in another embodiment, "decoding" refers to a combination of entropy decoding and differential decoding. Whether the phrase "decoding process" is intended to refer specifically to a subset of operations or broadly to a broader decoding process will be apparent based on the context of the particular description and is believed to be well understood by those skilled in the art.

[0204] Various embodiments relate to encoding. In a manner similar to the discussion above regarding "decoding", as used in this application, "encoding" can encompass, for example, all or part of the processing performed on an input video sequence to produce an encoded bitstream. In various embodiments, such processing includes one or more of the processing typically performed by an encoder, such as segmentation, differential encoding, transforms, quantization, and entropy encoding. In various embodiments, such processing also, or alternatively, includes processing performed by an encoder of the various embodiments described in this application, such as entropy encoding a block in response to a quantization parameter associated with the block.

[0205] As another example, in one embodiment, "encoding" refers only to entropy encoding, in another embodiment, "encoding" refers only to differential encoding, and in another embodiment, "encoding" refers to a combination of differential encoding and entropy encoding. Whether the phrase "encoding process" is intended to refer specifically to a subset of operations or broadly to a broader encoding process will be apparent based on the context of the particular description and will be well understood by those skilled in the art.

[0206] Note that syntax elements as used herein, e.g., entropy encoding a block in response to a quantization parameter associated with the block, are descriptive terms. As such, they do not exclude the use of other syntax element names.

[0207] When a figure is presented as a flow chart, it should be understood that it also provides a block diagram of the corresponding apparatus. Similarly, when a figure is presented as a block diagram, it should be understood that it also provides a flow chart of the corresponding method / process.

[0208] During the coding process, constraints on computational complexity are often given, and the balance or trade-off between rate and distortion is usually considered. Rate-distortion optimization is usually formulated as minimizing a rate-distortion function, which is a weighted sum of rate and distortion. There are a variety of methods for solving rate-distortion optimization problems. For example, these methods can be based on extensive testing of all coding options, including all considered modes or coding parameter values, and a complete evaluation of their coding costs and the associated distortion of the reconstructed signal after encoding and decoding. Faster methods can also be used to save coding complexity, especially calculating approximate distortion based on prediction or prediction residual signals rather than reconstructed signals. A mixture of these two methods can also be used, such as by using approximate distortion only for some possible coding options and using full distortion for other coding options. Other methods only evaluate a subset of possible coding options. More generally, many methods use any of a variety of techniques to perform optimization, but optimization is not necessarily a complete evaluation of both coding costs and associated distortions.

[0209] The embodiments and aspects described herein can be implemented, for example, in methods or processes, devices, software programs, data streams or signals. Even if only discussed in the context of a single form of embodiment (e.g., discussed only as a method), the embodiments of the features discussed can also be implemented in other forms (e.g., devices or programs). The device can be implemented, for example, with appropriate hardware, software and firmware. The method can be implemented in, for example, a processor, which generally refers to a processing device, including, for example, a computer, a microprocessor, an integrated circuit or a programmable logic device. The processor also includes a communication device, such as, for example, a computer, a mobile phone, a portable / personal digital assistant ("PDA") and other devices that contribute to information communication between end users.

[0210] References to "one embodiment" or "an embodiment" or "one implementation" or "an implementation" and other variations thereof mean that a particular feature, structure, characteristic, etc. described in connection with the embodiment is included in at least one embodiment. Thus, the appearances of the phrases "in one embodiment" or "in an embodiment" or "in one implementation" or "in an implementation" and any other variations throughout this document are not necessarily all referring to the same embodiment.

[0211] Additionally, this document may refer to "determining" various information. Determining information may include, for example, one or more of: estimating information, calculating information, predicting information, or retrieving information from a memory.

[0212] Additionally, this document may refer to "accessing" various information. Accessing information may include, for example, one or more of: receiving information, retrieving information (e.g., from a memory), storing information, moving information, copying information, calculating information, determining information, predicting information, or estimating information.

[0213] Additionally, this document may refer to "receiving" various information. Like "accessing," receiving is a broad term. Receiving information may include one or more of: for example, accessing information or retrieving information (e.g., from storage). Additionally, in one way or another, during operations such as, for example: storing information, processing information, sending information, moving information, copying information, erasing information, calculating information, determining information, predicting information, or estimating information, "receiving" is generally involved.

[0214] It should be appreciated that use of any of the following “ / ”, “and / or”, and “at least one of”, for example, in the context of “A / B”, “A and / or B”, and “at least one of A and B” is intended to encompass selection of only the first listed option (A), or only the second listed option (B), or both options (A and B). As a further example, in the context of “A, B, and / or C” and “at least one of A, B, and C”, such wording is intended to encompass selection of only the first listed option (A), or only the second listed option (B), or only the third listed option (C), or only the first and second listed options (A and B), or only the first and third listed options (A and C), or only the second and third listed options (B and C), or all three options (A and B and C). This may be extended to multiple items listed, as will be apparent to one of ordinary skill in this and related arts.

[0215] Moreover, as used herein, the word "signal" especially indicates something to the corresponding decoder. For example, in some embodiments, the encoder uses signaling to notify specific parameters in multiple parameters for entropy coding based on quantization. In this way, in an embodiment, the same parameters are used on both the encoder side and the decoder side. Therefore, for example, the encoder can transmit (explicitly signaling) specific parameters to the decoder so that the decoder can use the same specific parameters. On the contrary, if the decoder already has specific parameters and other parameters, signaling can be used without transmission (implicit signaling) to simply allow the decoder to know and select specific parameters. By avoiding the transmission of any actual function, bit saving is achieved in various embodiments. It should be recognized that signaling can be completed in a variety of ways. For example, in various embodiments, one or more syntax elements, flags, etc. are used to signal information to the corresponding decoder. Although the verb form of the word "signaling" is mentioned above, the word "signaling" can also be used as a noun signaling in this article.

[0216] As will be apparent to one of ordinary skill in the art, embodiments may generate various signals formatted to carry information that may be stored or transmitted, for example. The information may include, for example, instructions for executing a method or data generated by one of the described embodiments. For example, a signal may be formatted to carry a bit stream of the described embodiments. Such a signal may be formatted as, for example, an electromagnetic wave (e.g., using a radio frequency portion of a spectrum) or a baseband signal. Formatting may include, for example, encoding a data stream and modulating a carrier with the encoded data stream. The information carried by the signal may be, for example, analog or digital information. As is known, the signal may be transmitted over a variety of different wired or wireless links. The signal may be stored on a processor readable medium.

[0217] We have described a number of embodiments. These embodiments provide at least the following broad invention and claims across various claim categories and types, including all combinations:

[0218] • A method comprising: in response to a quantization parameter associated with a block (eg, CU, TB, picture block), entropy encoding a syntax element associated with the block.

[0219] A method comprising: performing context-based entropy encoding of syntax elements associated with a block, the context for entropy encoding the block (eg, CU) being determined in response to a quantization parameter associated with the block.

[0220] • In case the quantization parameter associated with a block is close to at least one quantization parameter of one of its neighboring blocks (e.g., left or top neighbor), the probability of entropy coding is updated, otherwise not updated.

[0221] • In case the quantization parameter associated with a block is close to all quantization parameters of its neighboring blocks (e.g. left or top neighbors), the probability of entropy coding is updated, otherwise not updated.

[0222] If the values ​​of two quantization parameters are equal, then they are close.

[0223] If the absolute difference between two quantization parameter values ​​is above a given value, then they are close.

[0224] Use a limited number of separate context sets.

[0225] In case the quantization parameter of a block is not close to the quantization parameters of its neighboring blocks, the block is encoded or decoded in bypass mode, otherwise the block is encoded or decoded using the context.

[0226] Entropy coding is context adaptive entropy coding.

[0227] The syntax elements associated with a block belong to a set of syntax elements including: a significance flag of the coefficients of the block, a flag indicating whether the absolute value of the coefficient level of the block is greater than one or two, an element for encoding the position of the last significant coefficient (the last non-zero coefficient) in the block, a split flag (e.g., a binary tree split flag, a ternary tree split flag, etc.).

[0228] • A bitstream or signal comprising one or more of the described syntax elements or variants thereof.

[0229] • Creating and / or sending and / or receiving and / or decoding a bitstream or signal comprising one or more of the described syntax elements or variants thereof.

[0230] • A TV, set-top box, mobile phone, tablet or other electronic device that performs quantization parameter based entropy encoding according to any of the described embodiments.

[0231] • A TV, set-top box, mobile phone, tablet or other electronic device that performs quantization parameter based entropy encoding according to any of the described embodiments and displays (eg using a monitor, screen or other type of display) the resulting picture.

[0232] A TV, set-top box, mobile phone, tablet or other electronic device that tunes (eg, using a tuner) a channel to receive a signal comprising an encoded image and performs quantization parameter based entropy encoding according to any of the described embodiments.

[0233] • A TV, set-top box, mobile phone, tablet or other electronic device that wirelessly receives (eg using an antenna) a signal comprising an encoded image and performs quantization parameter based entropy encoding according to any of the described embodiments.

[0234] Various other general and specific inventions and claims are also supported and contemplated throughout this disclosure.

Claims

1. A method comprising: - determining, from quantization information associated with a current block of an image, at least one context for encoding a syntax element associated with said current block; - performing context-based entropy encoding on the syntax element using the determined at least one context.

2. The method of claim 1, wherein: The range of quantization parameter values ​​is divided into sub-ranges and a set of contexts is associated with each sub-range. Determining at least one context for encoding a syntax element associated with a current block of an image based on quantization information associated with the current block includes: determining a current sub-range to which the quantization information belongs and using a set of contexts associated with the current sub-range.

3. The method of claim 1, wherein: When the quantization information is close to a quantization parameter of at least one neighboring block of the current block, context-based arithmetic encoding is performed on the current block; otherwise, the current block is encoded in a bypass mode.

4. The method of claim 1, wherein: The syntax element associated with the current block belongs to a set of syntax elements, and the set of syntax elements includes: an importance flag of the transform coefficient of the block, a flag indicating whether the absolute value of the transform coefficient level of the block is greater than 1 or greater than 2, an element for encoding the position of the last transform important coefficient in the block, and a partition flag.

5. A method comprising: - determining, from quantization information associated with a current block of an image, at least one context for decoding a syntax element associated with said current block; - performing context-based entropy decoding of the syntax element using the determined at least one context.

6. The method of claim 5, wherein: The range of quantization parameter values ​​is divided into sub-ranges and a set of contexts is associated with each sub-range. Determining at least one context for decoding a syntax element associated with a current block of an image based on quantization information associated with the current block includes: determining a current sub-range to which the quantization information belongs and using the set of contexts associated with the current sub-range.

7. The method of claim 5, further comprising: In a case where the quantization information is close to a quantization parameter of at least one neighboring block of the current block, the probability of the context-based entropy decoding is updated; otherwise, the probability is not updated.

8. The method of claim 5, further comprising: In a case where the quantization information is close to the quantization parameters of all neighboring blocks of the current block, the probability of the context-based entropy decoding is updated; otherwise, the probability is not updated.

9. The method of claim 5, wherein: When the quantization information is close to a quantization parameter of at least one neighboring block of the current block, context-based arithmetic decoding is performed on the current block; otherwise, the current block is decoded in a bypass mode.

10. The method of claim 5, wherein: The syntax element associated with the current block belongs to a set of syntax elements, and the set of syntax elements includes: an importance flag of the transform coefficient of the block, a flag indicating whether the absolute value of the transform coefficient level of the block is greater than 1 or greater than 2, an element for decoding the position of the last important transform coefficient in the block, and a partition flag.

11. An apparatus comprising one or more processors, the processors being configured to perform: - determining, from quantization information associated with a current block of an image, at least one context for encoding a syntax element associated with said current block; - performing context-based entropy encoding on the syntax element using the determined at least one context.

12. The device of claim 11, wherein: The range of quantization parameter values ​​is divided into sub-ranges and a set of contexts is associated with each sub-range. Determining at least one context for encoding a syntax element associated with a current block of an image based on quantization information associated with the current block includes: determining a current sub-range to which the quantization information belongs and using a set of contexts associated with the current sub-range.

13. The device of claim 11, wherein: When the quantization information is close to a quantization parameter of at least one neighboring block of the current block, context-based arithmetic encoding is performed on the current block; otherwise, the current block is encoded in a bypass mode.

14. The device of claim 11, wherein: The syntax element associated with the current block belongs to a set of syntax elements, and the set of syntax elements includes: an importance flag of the transform coefficient of the block, a flag indicating whether the absolute value of the transform coefficient level of the block is greater than 1 or greater than 2, an element for encoding the position of the last transform important coefficient in the block, and a partition flag.

15. An apparatus comprising one or more processors, the processors being configured to perform: - determining, from quantization information associated with a current block of an image, at least one context for decoding a syntax element associated with said current block; - performing context-based entropy decoding of the syntax element using the determined at least one context.

16. The device of claim 15, wherein: The range of quantization parameter values ​​is divided into sub-ranges and a set of contexts is associated with each sub-range. Determining at least one context for decoding a syntax element associated with a current block of an image based on quantization information associated with the current block includes: determining a current sub-range to which the quantization information belongs and using the set of contexts associated with the current sub-range.

17. The apparatus of claim 15, further comprising: In a case where the quantization information is close to a quantization parameter of at least one neighboring block of the current block, the probability of the context-based entropy decoding is updated; otherwise, the probability is not updated.

18. The apparatus of claim 15, further comprising: In a case where the quantization information is close to the quantization parameters of all neighboring blocks of the current block, the probability of the context-based entropy decoding is updated; otherwise, the probability is not updated.

19. The device of claim 15, wherein: When the quantization information is close to a quantization parameter of at least one neighboring block of the current block, context-based arithmetic decoding is performed on the current block; otherwise, the current block is decoded in a bypass mode.

20. The device of claim 15, wherein: The syntax element associated with the current block belongs to a set of syntax elements, and the set of syntax elements includes: an importance flag of the transform coefficient of the block, a flag indicating whether the absolute value of the transform coefficient level of the block is greater than 1 or greater than 2, an element for decoding the position of the last important transform coefficient in the block, and a partition flag.