Method and apparatus for improved entropy encoding and decoding
By using a flag to indicate the last non-zero coefficient in a systematic manner, the proposed method addresses the inefficiencies of CABAC in video encoding, particularly for large block sizes, and achieves improved compression efficiency.
Patent Information
- Application Number
- JP2025043518
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2010-10-14
- Filing Date
- 2025-03-18
- Publication Date
- 2025-06-12
- Estimated Expiration
- 2031-10-06
AI Technical Summary
Current context adaptive binary arithmetic coding (CABAC) methods in video encoding require two scanning paths, which are inefficient, especially for large block sizes, and do not systematically utilize flags to indicate the last non-zero coefficient.
The proposed solution involves using a flag to indicate the last non-zero coefficient for a block with values greater than or equal to a specific value, allowing for systematic encoding and decoding of quantized transform coefficients in a single scanning path.
This approach simplifies the encoding and decoding process, reduces the number of binary bins, and improves compression efficiency by eliminating unnecessary binary arithmetic coding operations, especially in large block sizes.
Smart Images

Figure 2025089354000001_ABST
Abstract
Description
Technical Field
[0001] This application claims the benefit of U.S. Provisional Patent Application No. 61 / 393,195, filed Oct. 14, 2010, the entire disclosure of which is incorporated herein by reference.
[0002] The principles of the present invention generally relate to video encoding and decoding, and more specifically, to methods and apparatuses for performing improved entropy encoding and decoding.
Background Art
[0003] Video encoding standards use predictive transformation and block-based transformation to exploit redundancy in intra / inter-frame correlation and achieve high compression efficiency. Further, entropy encoding is used to make the encoded bitstream reach its entropy limit, further improving encoding efficiency.
[0004] An important use of entropy encoding in video encoding systems is the encoding process of the quantized transform coefficients of blocks. This block is the residual data block after intra / inter prediction, block transformation, and quantization. For such data, entropy encoding tools have been developed ranging from variable length encoding processes such as Huffman encoding to arithmetic encoding processes. The current context adaptive binary arithmetic coding (CABAC) can achieve high encoding efficiency, but if the CABAC encoding procedure is implemented non-systematically, two scan paths will be executed to encode the data block.
[0005] CABAC is an entropy coding method for quantized transform coefficient blocks in the ISO / IEC (International Organization for Standardization / International Electrotechnical Commission) MEPG-4 (Moving Picture Experts Group-4) Part 10 AVC (Part 10 Advanced Video Coding) standard / ITU-T (International Telecommunication Union, Telecommunication Sector) H.264 recommendation (hereinafter referred to as the "MPEG-4 AVC standard"). CABAC encodes blocks in two main paths. In the first path, CABAC encodes the significance map of the block in the forward zigzag scan order. In the second path, CABAC encodes non-zero values in the reverse zigzag scan order.
[0006] Referring to FIG. 1, an example of CABAC encoding is generally indicated by reference numeral 100. In the significance map encoding path, i.e., the first path, CABAC uses sig_flag and last_flag to indicate the positions of non-zero coefficients.
[0007] In the reverse zigzag encoding of non-zero values, two sub-encoding processes are used. In the first sub-encoding process, Bin_1 (i.e., the first bin) is used to indicate whether the absolute value of the non-zero coefficient is 1. If the absolute value of the non-zero coefficient is 1, then Bin_ = 1 and the sign of the positive or negative of the non-zero coefficient is sent. If the absolute value of the non-zero coefficient is not 1, then Bin_1 = 0 and the encoding proceeds to the second sub-encoding process. In the second sub-encoding process, CABAC encodes coefficients with absolute values greater than 1 corresponding to Bin_1 = 0 and sends the sign of each of these coefficients.
[0008] A disadvantage of CABAC is that it requires two scanning paths for the corresponding encoding, namely, a forward zigzag scan for encoding the importance map and a reverse zigzag scan for encoding the values. Furthermore, the design of CABAC is mainly suitable for small block sizes (e.g., 4×4 and 8×8). CABAC has been found to be less efficient mainly in large blocks (e.g., 16×16, 32×32, and 64×64).
[0009] One approach according to the prior art proposes adding a flag to signal the last position of discrete cosine transform (DCT) coefficients greater than 1. However, this approach according to the prior art is limited to flags greater than 1 and still uses two scanning paths. SUMMARY OF THE INVENTION
[0010] These disadvantages and drawbacks of the prior art, and further other disadvantages and drawbacks, are addressed by the principles of the present invention. The principles of the present invention relate to methods and apparatuses for performing improved entropy encoding and decoding.
[0011] According to one aspect of the principles of the present invention, an apparatus is provided. The apparatus has a video encoder that encodes at least blocks within a picture. The video encoder performs encoding by transforming the residual of a block to obtain transform coefficients, quantizing the transform coefficients to obtain quantized transform coefficients, and entropy encoding the quantized transform coefficients. The quantized transform coefficients are encoded using a flag to indicate that the current transform coefficient being processed among the quantized transform coefficients is the last non-zero coefficient for a block having a value equal to or greater than a specific value.
[0012] According to another aspect of the principle of the present invention, a method in a video encoder is provided. This method includes a step of encoding at least a block in a picture, and this encoding step converts the residual of the block to obtain conversion coefficients, quantizes the conversion coefficients to obtain quantized conversion coefficients, and performs encoding by entropy encoding the quantized conversion coefficients. The quantized conversion coefficients are encoded using a flag, so that the current conversion coefficient being processed among the quantized conversion coefficients is the last non-zero coefficient for a block having a value greater than or equal to a specific value.
[0013] According to still another aspect of the principle of the present invention, an apparatus is provided. This apparatus has a video decoder that decodes at least a block in a picture, and this video decoder performs decoding by entropy decoding the quantized conversion coefficients, inverse quantizing the quantized conversion coefficients to obtain conversion coefficients, and obtaining the reconstructed residual of the block for use in reconstructing the block by inverse transforming the conversion coefficients. The quantized conversion coefficients are decoded using a flag, so that the current conversion coefficient being processed among the quantized conversion coefficients is the last non-zero coefficient for a block having a value greater than or equal to a specific value.
[0014] According to still another aspect of the present invention, a method in a video decoder is provided. This method includes a step of decoding at least a block in a picture, and this decoding step performs decoding by entropy decoding the quantized conversion coefficients, inverse quantizing the quantized conversion coefficients to obtain conversion coefficients, and obtaining the reconstructed residual of the block for use in reconstructing the block by inverse transforming the conversion coefficients. The quantized conversion coefficients are decoded using a flag, so that the current conversion coefficient being processed among the quantized conversion coefficients is the last non-zero coefficient for a block having a value greater than or equal to a specific value.
[0015] These aspects, features, and advantages of the invention of the present application, as well as other aspects, features, and advantages, will become apparent from the following detailed description of exemplary embodiments to be read in conjunction with the accompanying drawings.
[0016] The principles of the present application will be better understood in accordance with the following exemplary drawings.
Brief Description of the Drawings
[0017]
Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7A
Figure 7B
Figure 7C
Figure 7D
Figure 7E
Figure 8A
Figure 8B
Figure 8C
Figure 8D
Figure 8E
Figure 9
Figure 10
[0018] The principles of the present invention relate to methods and apparatus for performing improved entropy encoding and decoding.
[0019] This description is illustrative of the principles of the present invention. Thus, various configurations that implement the principles of this application may be contemplated by those skilled in the art, even if not explicitly described or illustrated herein, and it will be understood that such configurations are encompassed within the spirit and scope of this application.
[0020] All examples and conditional language recited herein are for the purpose of teaching to aid the reader's understanding of the principles of the invention, and the concepts contributed by the inventors are to develop the technology and should not be construed as limited to such specifically recited examples and conditions.
[0021] Also, all descriptions in this specification regarding the principles, aspects, and embodiments of the present invention, and further, its specific examples, are intended to include both structural equivalents and functional equivalents. Furthermore, such equivalents are intended to include not only currently known equivalents but also equivalents developed in the future, that is, all elements developed to perform the same function regardless of structure.
[0022] Therefore, for example, those skilled in the art will be able to understand that the block diagrams shown in this specification are conceptual diagrams illustrating circuits implementing the principles of the present invention. Similarly, it can be understood that flowcharts, flow diagrams, state transition diagrams, pseudocode, etc. all represent various processes. These processes can be represented in a computer-readable medium substantially, executed by a computer or a processor, and it does not matter whether such a computer or a processor is clearly illustrated.
[0023] The functions of the various elements shown in each drawing may be provided by the use of dedicated hardware, or may be provided by the use of hardware capable of executing software in association with appropriate software. When the function is provided by a processor, it may be provided by a single dedicated processor, may be provided by a single shared processor, may be provided by a plurality of separate processors, or there may be something shared among the processors. Furthermore, even when the terms "processor" or "controller" are explicitly used, it should not be construed to mean only hardware capable of executing software, and without limitation, it may implicitly include a digital signal processor (DSP) hardware, a read-only memory (ROM) storing software, a random access memory (RAM), and a non-volatile storage device.
[0024] It may also include conventional and / or customary other hardware. Similarly, any switch shown in the drawings is only conceptual. These functions may be performed via the operation of program logic, via dedicated logic, via the interaction of program control and dedicated logic, or manually. As will be specifically understood according to the situation, the implementer can select a specific technology.
[0025] In the claims, any element expressed as a means for performing a specific function is intended to encompass any way of performing this function. For example, a) a combination of circuit elements that perform the function, or b) regardless of form, software, that is, firmware, microcode, etc., in combination with a circuit suitable for the execution of the software to perform the function. The principle of the present invention defined by such claims is based on the fact that the functions provided by the various means described in the claims are combined and grouped as requirements of the claims. Therefore, any means capable of providing such a function is considered equivalent to what is shown in the present application.
[0026] In the specification, when the "one embodiment", "embodiment", or similar expressions of the principle of the present invention are mentioned, this means that the specific features, structures, characteristics, etc. described with respect to the embodiment are included in at least one embodiment of the principle of the present invention. Therefore , the phrases "in one embodiment", "in an embodiment", or similar expressions that exist in various places throughout the specification do not necessarily refer to all the same embodiments.
[0027] The use of “ / (slash)”, “and / or”, and further, “at least one of ~ (at least one of ~)” is intended to include, for example, in the case of “A / B”, “A and / or B”, “at least one of A and B”, the selection of only the first-listed option (A), the selection of only the second-listed option (B), or the selection of both options (A and B). As another example, in the case of “A, B, and / or C” and further, “at least one of A, B, and C”, such language is intended to include the selection of only the first-listed option (A), the selection of only the second-listed option (B), the selection of only the third-listed option (C), the selection of only the first and second-listed options (A and B), the selection of only the first and third-listed options (A and C), the selection of only the second and third-listed options (B and C), or the selection of all three options (A, B, and C). It will be readily understood by those having ordinary technical knowledge in the art and further, in the related art, that this extends for as many items as are listed.
[0028] Also, as used herein, the words “picture” and “image” are used interchangeably and mean a still image or a picture from a video sequence. As is known, a picture can be a frame or a field.
[0029] Referring to FIG. 2, an exemplary video encoder to which the principles of the present invention are applied is generally indicated by reference numeral 200. The video encoder 200 includes a frame ordering buffer 210 having an output portion that is in signal communication with the non-inverting input portion of a combiner 285. The output portion of the combiner 285 is coupled to be in signal communication with a first input portion of a transformer / quantizer 225. The output portion of the transformer / quantizer 225 is coupled to be in signal communication with a first input portion of an entropy encoder 245 and a first input portion of an inverse transformer / inverse quantizer 250. The output portion of the entropy encoder 245 is coupled to be in signal communication with a first non-inverting input portion of a combiner 290. The output portion of the combiner 290 is coupled to be in signal communication with a first input portion of an output buffer 235.
[0030] A first output portion of an encoder controller 205 is coupled to be in signal communication with a second input portion of the frame ordering buffer 210, a second input portion of the inverse transformer / inverse quantizer 250, an input portion of a picture type determination module 215, a first input portion of a macroblock type (MB type) determination module 220, a second input portion of an intra prediction module 260, a second input portion of a deblocking filter 265, a first input portion of a motion compensator 270, a first input portion of a motion estimator 275, and a second input portion of a reference picture buffer 280.
[0031] A second output portion of the encoder controller 205 is coupled to be in signal communication with a first input portion of a supplementary enhancement information (SEI) inserter 230, a second input portion of the transformer / quantizer 225, a second input portion of the entropy encoder 245, a second input portion of the output buffer 235, and an input portion of a sequence parameter set (SPS) / picture parameter set (PPS) inserter 240.
[0032] The output portion of the SEI inserter 230 is coupled to be in signal communication with a second non-inverting input portion of the combiner 290.
[0033] The first output part of the picture type determination module 215 is coupled to signal-communicate with the third input part of the frame ordering buffer 210. The second output part of the picture type determination module 215 is coupled to signal-communicate with the second input part of the macroblock type determination module 220.
[0034] The output part of the sequence parameter set (SPS) / picture parameter set (PPS) inserter 240 is coupled to signal-communicate with the third non-inverting input part of the combiner 290.
[0035] The output part of the inverse transform / inverse quantization unit 250 is coupled to signal-communicate with the first non-inverting input part of the combiner 219. The output part of the combiner 219 is coupled to signal-communicate with the first input part of the intra prediction module 260 and the first input part of the deblocking filter 265. The output part of the deblocking filter 265 is coupled to signal-communicate with the first input part of the reference picture buffer 280. The output part of the reference picture buffer 280 is coupled to signal-communicate with the second input part of the motion estimator 275 and the third input part of the motion compensator 270. The first output part of the motion estimator 275 is coupled to signal-communicate with the second input part of the motion compensator 270. The second output part of the motion estimator 275 is coupled to signal-communicate with the third input part of the entropy encoder 245.
[0036] The output section of the motion compensator 270 is coupled to signal-communicate with the first input section of the switch 297. The output section of the intra prediction module 260 is coupled to signal-communicate with the second input section of the switch 297. The output section of the macroblock type determination module 220 is coupled to signal-communicate with the third input section of the switch 297. The third input section of the switch 297 determines whether the "data" input of the switch (the control input section, i.e., the input section to be compared with the third input section) is supplied by the motion compensator 270 or the intra prediction module 260. The output section of the switch 297 is coupled to signal-communicate with the second non-inverting input section of the combiner 219 and the inverting input section of the combiner 285.
[0037] The first input section of the frame ordering buffer 210 and the input section of the encoder controller 205 are available to receive an input picture as an input section of the encoder 200. Further, the second input section of the supplementary enhancement information (SEI) inserter 230 is available to receive metadata as an input section of the encoder 200. The output section of the output buffer 235 is available to output a bit stream as an output section of the encoder 200.
[0038] Referring to FIG. 3, an exemplary video decoder to which the principles of the present invention are applied is generally indicated by reference numeral 300. The video decoder 300 includes an input buffer 310 having an output coupled to signal communicate with a first input of an entropy decoder 345. A first output of the entropy decoder 345 is coupled to signal communicate with a first input of an inverse transformer / inverse quantizer 350. An output of the inverse transformer / inverse quantizer 350 is coupled to signal communicate with a second non-inverting input of a combiner 325. An output of the combiner 325 is coupled to signal communicate with a second input of a deblocking filter 365 and a first input of an intra prediction module 360. A second output of the deblocking filter 365 is coupled to signal communicate with a first input of a reference picture buffer 380. An output of the reference picture buffer 380 is coupled to signal communicate with a second input of a motion compensator 370.
[0039] A second output of the entropy decoder 345 is coupled to signal communicate with a third input of the motion compensator 370 and a first input of the de blocking filter 365 and a third input of the intra prediction module 360. A third output of the entropy decoder 345 is coupled to signal communicate with an input of a decoder controller 305. A first output of the decoder controller 305 is coupled to signal communicate with a second input of the entropy decoder 345. A second output of the decoder controller 305 is coupled to signal communicate with a second input of the inverse transformer / inverse quantizer 350. A third output of the decoder controller 305 is coupled to signal communicate with a third input of the deblocking filter 365. A fourth output of the decoder controller 305 is coupled to signal communicate with a second input of the intra prediction module 360, a first input of the motion compensator 370, and a second input of the reference picture buffer 380.
[0040] The output section of the motion compensator 370 is coupled to signal-communicate with the first input section of the switch 397. The output section of the intra prediction module 360 is coupled to signal-communicate with the second input section of the switch 397. The output section of the switch 397 is coupled to signal-communicate with the first non-inverting input section of the combiner 325.
[0041] The input section of the input buffer 310 is available to receive an input bit stream as the input section of the decoder 300. The first output section of the deblocking filter 365 is available to output an output picture as the output section of the decoder 300.
[0042] As described above, the principles of the present invention relate to methods and apparatuses for performing improved video encoding and decoding. The principles of the present invention have the advantage of overcoming the non-systematic drawbacks of CABAC. Further, the principles of the present invention use a binary arithmetic coding engine, but reduce the use of the binary arithmetic coding engine in both the encoder and the decoder by a systematic coding engine that reduces the number of binary bins. This systematic coding method and reduced binary bins achieve a simpler coding system and higher compression efficiency compared to the CABAC system according to the prior art.
[0043] Therefore, the principle of the present invention relates to the systematic entropy coding of coefficient blocks using fewer syntax bins. When the coefficient values are found (or processed) in a predetermined scan order, this coefficient value is systematically coded. Specifically, an "importance flag" (sig_flag) is used to indicate zero and non-zero coefficients. In the case of non-zero, "last coefficient greater than or equal to 2" (last_ge2_flag) and "last flag" (last_flag) are used to indicate whether the remaining set of positions each contains several "coefficients greater than or equal to 2" (ge2) non-zero coefficients and significant coefficients. Whenever a significant coefficient is found (or indicated) by sig_flag (sig_flag = 1), its value is immediately coded. There are at least three advantages to the approach of the principle of the present invention. (1) Since the entire block is coded in one scan, the system is simplified. (2) Since the binary bins are reduced, some of the binary arithmetic coding operation amounts on the coder side and decoder side are reduced. (3) Level information of neighboring coded coefficients is available for designing context models for syntax such as sig_flag, last_flag, last_ge2_flag, and level bins.
[0044] Therefore, the entropy coding system disclosed and described is a simpler and more efficient entropy coding system than the systems according to the prior art.
[0045] In a video coding system, after raw data is processed using intra or inter prediction and intra or inter-frame correlation is removed, 4×4, 8×8, 16 Processing is performed using a block-based transform (or some other transform) such as 16×16, 32×32, and 64×64 DCT, and further correlation is removed. Next, quantization is applied to the coefficients in the transform block. In one embodiment, finally entropy coding is performed to encode the quantized coefficients of each transformed block and supply this to the output bit stream.
[0046] Referring to FIG. 4, an exemplary quantized transform block of size 4×4 is generally indicated by reference numeral 400. After prediction, transformation, and quantization, much of the energy of the block is concentrated at low frequency positions (present at the upper left corner of the transform block), while many of the high frequency coefficients (located at the lower right corner of the block) are zero. In order to entropy code such a data block, it is necessary to efficiently represent block information including the coefficient values and the positions of these coefficients within the block using binary bins. Therefore, the binary bins are encoded using a binary arithmetic coding engine.
[0047] To represent block information using binary bins, the following syntax is used. To simplify the description, some of the syntax elements are borrowed from existing methods such as CABAC. Further, new syntax elements are introduced to enable the principles of the present invention as follows. sig_flag: This flag is defined in the same way as in the case of CABAC. sig_flag = 1 means that the corresponding coefficient is non-zero (important). sig_flag = 0 means that the corresponding coefficient is zero. last_ge2_flag: This flag is a new syntactic element introduced according to the principle of the present invention, and indicates whether the current non-zero coefficient is the last coefficient having a value greater than 1 in absolute value in the current block according to a given scanning order. The expression "ge2" comes from "2 or more". last_ge2_flag = 1 means that the current non-zero coefficient is the last such coefficient. last_ge2_flag = 0 means that the current non-zero coefficient is not the last such coefficient. last_flag: This flag is defined in the same way as in the case of CABAC. last_flag means whether the current non-zero coefficient is the last non-zero coefficient in the current block in a given scanning order. last_flag = 1 means that the current non-zero coefficient is the last non-zero coefficient in the current block in a given scanning order. last_flag = 0 means that the current non-zero coefficient is not the last non-zero coefficient in the current block in a given scanning order. Bin_1: When it is known that the coefficient is non-zero, but it is not known that the absolute value is 1 or greater than 1 (ge2), Bin_1 is sent to clarify this. Bin_1 = 1 means that the non-zero coefficient has an absolute value of 1. Bin_1 = 0 means that the non-zero coefficient has an absolute value greater than 1 (ge2). Instead of encoding this information as a coefficient value of 2, 3, or other larger values, Bin_1 is used to indicate that the coefficient has an absolute value of 1 or greater. This is because in a normal data block, about half of the non-zero values have an absolute value of 1, so it is more efficient to handle them specially. Level: When it is known that the coefficient has an absolute value greater than 1 (ge2), its level is sent as the absolute value. Originally, this level is not binary. For example, but not limited to, it is binarized using some binarization method such as the UEG0 method used in CABAC, and these binary bins are encoded using binary arithmetic coding. encoded. Sign: For all non-zero coefficients, for "+", and "-", 0 and 1 are respectively sent as signs.
[0048] Referring to FIG. 5, an example of the encoding process is generally indicated by reference numeral 500. The encoding process 500 is described with respect to the encoding of the exemplary block 400 in FIG. 4. The data is scanned in a given scan order, for example, a forward zigzag scan in CABAC. The rearranged coefficients are given in the first row of FIG. 5.
[0049] For the first coefficient "10", this coefficient is non-zero (sig_flag = 1) and not the last ge2 (last_ge2_flag = 0). To encode the value of this coefficient, first, Bin_1 = 0 is sent to indicate that its absolute value is greater than 1. Next, its absolute value is encoded using the level. Here, only encoding 10 - 2 = 8, the decoder can know that the absolute value is 8 + 2 = 10. Finally, its sign "+", is sent using 0.
[0050] For the second coefficient "0", sig_flag = 0. Thus, all the information about this coefficient has been sent, and the encoder shifts its operation to the processing of the next coefficient.
[0051] The next coefficient "-1" is non-zero (sig_flag = 1) and not the last ge2 (last_ge2_flag = 0). To encode its value, after sending Bin_1 = 1 to indicate that its absolute value is 1, there is no need to process the level. Finally, its sign "-" is sent using 1.
[0052] The next coefficient "2" is non-zero (sig_flag = 1) and is the last ge2 (last_ge2_flag = 1). After last_ge2_flag = 1, it is necessary to send last_flag to indicate whether the current coefficient is the last non-zero coefficient. Here, since the coefficient is not the last non-zero coefficient, last_flag = 0. Note that the fact that last_ge2_flag = 1 here implicitly indicates that this coefficient must have an absolute value greater than 1 (i.e., it must be ge2), so the use of Bin_1 = 0 is omitted. By encoding the level to send its absolute value by 2 - 2 = 0, the decoder knows that the absolute value is 0 + 2 = 2. Finally, its sign "+" 0 is sent.
[0053] For the next coefficient "0", sig_flag = 0.
[0054] The next coefficient "1" is non-zero (sig_flag = 1) and is not the last non-zero coefficient (last_flag = 0). After last_ge2_flag = 1, since all significant coefficients must have an absolute value not equal to 1, there is no need to encode its absolute value using Bin_1 or the level any further. It is only necessary to send its sign "+" using 0.
[0055] For the next coefficient "0", sig_flag = 0.
[0056] The next coefficient "-1" is non-zero (sig_flag = 1) and is the last non-zero (last_flag = 1). Sending its sign "-" using 1 completes the encoding of this block.
[0057] From the above examples of encoding, it can be seen that at least one novel aspect of the described embodiments is the use of last_ge2_flag. There are several advantages of last_ge2_flag, including at least the following.
[0058] 1. The use of last_flag can be somewhat reduced by last_ge2_flag. When last_ge2_flag = 0, there must be non-zero (specifically, coefficients with an absolute value greater than 1) coefficients at subsequent scanning positions. In that case, since last_flag must be 0, the use of these last_flags is omitted until last_ge2_flag = 1.
[0059] Compare the encoding of blocks in the same example when using CABAC and when using the proposed method. In FIG. 1, for the encoding of a block using CABAC, 5 last_flags are required, and these are 00001. In contrast, in FIG. 5, for the encoding of the same block using the new method, 3 last_ge2_flags (001) and 3 last_flags (001) are required. Assuming there are N non-zero coefficients in the block, in CABAC, N last_flags are required. In contrast, in the new method, a total of N + 1 last_ge2_flags and last_flags are required. Compared with the fact that 2 are saved by last_ge2_flag, the additional 1 flag here is very important.
[0060] 2. At the end of the scanning path, there is a very high probability of generating a plurality of consecutive "trailing ones", that is, a plurality of transform coefficient levels with an absolute value of 1. In the example of FIG. 5, there are five significant coefficients 10, -1, 2, 1, -1, and the last "1" and "-1" are "trailing ones". With last_ge2_flag, the use of Bin_1 for trailing ones in CABAC is omitted. After last_ge2_flag = 1, if some coefficients are shown as non-zero, these coefficients must have an absolute value of 1. These are actually trailing ones in CABAC coding. In CABAC, for each of such trailing ones, one Bin_1 is required to indicate that it is 1 (instead of ge2). In the method of the present invention, since these are implicitly indicated using last_ge2_flag = 1, here, the use of Bin_1 for trailing ones is omitted. In a large transform block, since there are a relatively large number of trailing ones, it is important that the use of Bin_1 is omitted here.
[0061] 3. With last_ge2_flag, the use of other Bin_1 for non-trailing ones can be omitted. When last_ge2_flag changes from 0 to 1 for some coefficient, since the coefficient must be ge2 (that is, the coefficient must have an absolute value greater than 1), there is no need to send out a Bin_1 that must be 0. An example is the coefficient 2 in the coding example of FIG. 1.
[0062] Thus, omitting Bin_1 is only done for blocks where last_ge2_flag changes from 0 to 1. That is, a plurality of last_ge2_flags are sent for a block. Assuming that only one last_ge2_flag is sent for a block, it must be 1, and the corresponding coefficient will have an absolute value of 1 or ge2. FIG. 6 provides some exemplary cases where a plurality of coefficients are arranged in some given scanning order.
[0063] Referring to FIG. 6, an exemplary special case where Bin_1 is not omitted is generally indicated by reference numeral 600. Further, noting that there are four special cases, these are shown as Case 1, Case 2, Case 3, and Case 4 respectively. In Cases 1 and 2, the absolute value of all significant coefficients is less than 2. In Cases 3 and 4, only the first significant coefficient has an absolute value greater than 1. In all cases, since last_ge2_flag is set to 1 for the first significant coefficient, there is no "change from 0 to 1" in last_ge2_flag, and only one bin is used for last_ge2_flag. Therefore, the coefficient with last_ge2_flag = 1 should be 1 (in the case of Cases 1 and 2) or greater than 1 (in the case of Cases 3 and 4), which should be indicated by Bin_1. In Cases 1 and 2, the first significant coefficient "1" has last_ge2_flag = 1 and Bin_1 = 1. In the case of Cases 3 and 4, the first significant coefficient 2 (more generally, 2 or more) has last_ge2_flag = 1 and Bin_1 = 0. That is, when the block's last_ge2_flag contains only one bin, this bin must be 1, and the corresponding Bin_1 needs to be encoded.
[0064] Referring to FIG. 7A, an exemplary method of entropy encoding is generally indicated by reference numeral 700. This method includes a start block 712 that passes control to a determination block 701. The determination block 701 determines whether there are significant coefficients within the block. If there are significant coefficients within the block, control is passed to a function block 702. If there are no significant coefficients within the block, control is passed to an end block 799. The function block 702 sets last_ge2_flag = 0 and last_flag = 0 and passes control to a function block 703. The function block 703 starts a loop using a variable j having a range from 1 to the number (♯) of coefficients if last_flag = 0, and passes control to a function block 704. The function block 704 encodes sig_flag and passes control to a determination block 705. The determination block 705 determines whether sig_flag = 1. If sig_flag = 1, control is passed to a function block 706. If sig_flag ≠ 1, control is passed to a loop end block 711. The function block 706 encodes last_ge2_flag if necessary and passes control to a function block 707. The function block 707 encodes last_flag if necessary and passes control to a function block 708. The function block 708 encodes Bin_1 if necessary and passes control to a function block 709. The function block 709 encodes the level if necessary and passes control to a function block 710. The function block 710 encodes the sign and passes control to the loop end block 711. The loop end block 711 ends the loop and passes control to the end block 799.
[0065] Regarding the functional block 703, loop the coefficients within the block in some scanning order. Coefficients after the coefficient having last_flag = 1 do not require looping. Regarding the determination block 705, if sig_flag = 1 (important), the coefficients are further encoded by blocks 706 to 710. Otherwise, loop to the next coefficient. Regarding the functional block 706, this functional block 706 handles last_ge2_flag. The processing of last_ge2_flag will be further described with reference to FIG. 7B. Regarding the functional block 707, this functional block 707 handles last_flag. The processing of last_flag will be further described with reference to FIG. 7C. Regarding the functional block 708, this functional block 708 handles Bin_1. The processing of Bin_1 will be further described with reference to FIG. 7D. Regarding the functional block 709, this functional block 709 handles the level. The processing of the level will be further described with reference to FIG. 7E.
[0066] Referring to FIG. 7B, an exemplary method of encoding last_ge2_flag is generally indicated by reference numeral 720. The method 720 includes a start block 719 that passes control to a determination block 721. The determination block 721 determines whether last_ge2_flag = 0. If last_ge2_flag = 0, the control is judged It is passed to the fixed block 722. If last_ge2_flag != 0, the control is passed to the end block 798. The determination block 722 determines whether there is a coefficient greater than 1 after the current coefficient. If there is a coefficient greater than 1 after the current coefficient, the control is passed to the function block 723. If there is no coefficient greater than 1 after the current coefficient, the control is passed to the function block 724. The function block 723 sets last_ge2_flag = 0 and passes the control to the determination block 725. The determination block 724 sets last_ge2_flag = 1 and passes the control to the determination block 725. The determination block 725 determines whether the current scanning position is the last scanning position. If the current scanning position is the last scanning position, the control is passed to the end block 798. If the current scanning position is not the last scanning position, the control is passed to the function block 726. The function block 726 encodes last_ge2_flag and passes the control to the end block 798.
[0067] Referring to FIG. 7C, an exemplary method of encoding last_flag is generally indicated by reference numeral 730. This method includes a start block 729 that passes control to a determination block 731. The determination block 731 determines whether last_ge2_flag = 1. If last_ge2_flag = 1, control is passed to a determination block 732. If last_ge2_flag != 1, control is passed to an end block 797. The determination block 732 determines whether there is a significant coefficient after the current coefficient. If there is a significant coefficient after the current coefficient, control is passed to a function block 733. If there is no significant coefficient after the current coefficient, control is passed to a function block 734. The function block 733 sets last_flag = 0 and passes control to a determination block 735. The function block 734 sets last_flag = 1 and passes control to a determination block 735. The determination block 735 determines whether the current scan position is the last scan position. If the current scan position is the last scan position, control is passed to an end block 797. If the current scan position is not the last scan position, control is passed to a function block 736. The function block 736 encodes last_flag and passes control to an end block 797.
[0068] Referring to FIG. 7D, an exemplary method for encoding Bin_1 is generally indicated by reference numeral 740. Method 740 includes a start block 739 that passes control to a determination block 741. Determination block 741 determines whether "last_ge2_flag = 0" or "last_ge2_flag = 1 for the current conversion coefficient which is the first significant coefficient within the block". If "last_ge2_flag = 0" or "last_ge2_flag = 1 for the current conversion coefficient which is the first significant coefficient within the block", control is passed to determination block 742. If neither "last_ge2_flag = 0" nor "last_ge2_flag = 1 for the current conversion coefficient which is the first significant coefficient within the block", control is passed to end block 796. Determination block 742 determines whether the absolute value of the conversion coefficient is 1 (Abs(currCoeff)=1). If the absolute value of the conversion coefficient is 1, control is passed to function block 743. If the absolute value of the conversion coefficient is not 1, control is passed to function block 744. Function block 743 sets Bin_1 = 1 and passes control to function block 745. Function block 744 sets Bin_1 = 0 and passes control to function block 745. Function block 745 encodes Bin_1 and passes control to end block 796.
[0069] Referring to FIG. 7E, an exemplary method for encoding a level is generally indicated by reference numeral 750. Method 750 includes a start block 749 that passes control to a determination block 751. Determination block 751 determines whether the absolute value of the conversion coefficient is 2 or more (Abs(currCoeff)≧2). If the absolute value of the conversion coefficient is 2 or more, control is passed to function block 752. If the absolute value of the conversion coefficient is not 2 or more, control is passed to end block 795. Function block 752 encodes a level where level = abs(currCoeff)-2 and passes control to end block 795.
[0070] The encoding order in method 700 is the same as the encoding order in the example of FIG. 5. However, the encoding order may be flexibly changed for blocks 706 to 710 as long as the following rules are followed. (last_ge2_flag according to functional block 706) is processed before Bin_1 (according to functional block 708), and Bin_1 (according to functional block 708) is processed before the level (according to functional block 709). That is, it is 706 → 708 → 709 →. (Processing of last_flag according to functional block 707) may be performed after functional blocks 706, 708, or 709. (Processing of the code according to functional block 710) may be performed before or after any of the four functional blocks 706, 707, 708, 709. The processing order in the decoder must match the processing in the encoder.
[0071] Note that there is special handling when encoding the coefficient at the last scanning position within the block. In method 720, when last_ge2_flag is still 0 before the last coefficient, for the last coefficient, since last_ge2_flag must be 1, encoding of last_ge2_flag is not required. In method 730, similarly, when last_flag is still 0 before the last coefficient, for the last coefficient, since last_flag must be 1, encoding of last_flag is not required. Bin_1(740): Regarding functional block 741, (although encoding and transmission by functional block 726 are not required,) when last_ge2_flag is set to 1 by functional block 724 for the last coefficient, it is the first significant coefficient within the block, and Bin_1 should be tested and encoded according to blocks 742 to 745. (Level information according to functional block 709) should be encoded if necessary.
[0072] Referring to FIG. 8A, an exemplary method of entropy decoding is generally indicated by reference numeral 800. Method 800 includes a start block 819 that passes control to a determination block 801. The determination block 801 determines whether there is a significant coefficient within the block. If there is a significant coefficient within the block, control is passed to a function block 802. If there is no significant coefficient within the block, control is passed to an end block 899. The function block 802 sets last_ge2_flag = 0 and last_flag = 0 and passes control to a function block 803. The function block 803, if last_flag = 0, starts a loop using a variable j having a range from 1 to the number (#) of coefficients and passes control to a function block 804. The function block 804 decodes sig_flag and passes control to a determination block 805. The determination block 805 determines whether sig_flag = 1. If sig_flag = 1, control is passed to a function block 806. If sig_flag != 1, control is passed to a loop end block 811. The function block 806 decodes last_ge2_flag if necessary and passes control to a function block 807. The function block 807 decodes last_flag if necessary and passes control to a function block 808. The function block 808 decodes Bin_1 if necessary and passes control to a function block 809. The function block 809 decodes the level if necessary and passes control to a function block 810. The function block 810 decodes the code and passes control to the loop end block 811. The function block 811 ends the loop and passes control to the end block 899.
[0073] Regarding functional block 803, loop through the coefficients in the block in the same scan order as in the case of the encoder. Coefficients after a coefficient having last_flag = 1 do not require looping. Regarding functional block 806, this functional block 806 handles last_ge2_flag. The processing of last_ge2_flag will be further described with reference to FIG. 8B. Regarding functional block 807, this functional block 807 handles last_flag. The processing of last_flag will be further described with reference to FIG. 8C. Regarding functional block 808, this functional block 808 handles Bin_1. The processing of Bin_1 will be further described with reference to FIG. 8D. Regarding functional block 809, this functional block 809 handles the level. The processing of the level will be further described with reference to FIG. 8E.
[0074] In one embodiment, it can be understood that the decoding order of method 800 coincides with the encoding order of method 700. However, the decoding order may be flexibly changed for functional blocks 806 to 810 as long as it coincides with the corresponding encoding order.
[0075] Referring to FIG. 8B, an exemplary method of decoding last_ge2_flag is generally indicated by reference numeral 820. Method 820 includes start block 812 that passes control to determination block 821. Determination block 821 determines whether last_ge2_flag = 0. If last_ge2_flag = 0, control is passed to determination block 822. If last_ge2_flag ≠ 0, control is passed to end block 898. Determination block 822 determines whether the current scan position is at the last scan position. If the current scan position is at the last scan position, control is passed to block 823. If the current scan position is not at the last scan position, control is passed to functional block 824. Functional block 823 sets last_ge2_flag = 1 and passes control to end block 898. Functional block 824 decodes last_ge2_flag and passes control to end block 898.
[0076] Referring to FIG. 8C, an exemplary method for decoding last_flag is generally indicated by reference numeral 830. Method 830 includes a start block 825 that passes control to a determination block 831. The determination block 831 determines whether last_ge2_flag = 1. If last_ge2_flag = 1, control is passed to the determination block 832. If last_ge2_flag != 1, control is passed to the end block 897. The determination block 832 determines whether the current scan position is at the last scan position. If the current scan position is at the last scan position, control is passed to the end block 897. If the current scan position is not at the last scan position, control is passed to the function block 833. The function block 833 decodes last_flag and passes control to the end block 897.
[0077] Referring to FIG. 8D, an exemplary method for decoding Bin_1 is generally indicated by reference numeral 840. Method 840 includes a start block 834 that passes control to a function block 841. The function block 841 sets Bin_1 = 1 and passes control to the determination block 842. The determination block 842 determines whether "last_ge2_flag = 0" or "last_ge2_flag = 1 for the current coefficient which is the first significant coefficient within the block". If "last_ge2_flag = 0" or "last_ge2_flag = 1 for the current coefficient which is the first significant coefficient within the block", control is passed to the function block 843. If neither "last_ge2_flag = 0" nor "last_ge2_flag = 1 for the current coefficient which is the first significant coefficient within the block", control is passed to the end block 896. The function block 843 decodes Bin_1 and passes control to the end block 896. = 1" is not satisfied, control is passed to the end block 896. The function block 843 decodes Bin_1 and passes control to the end block 896.
[0078] Referring to FIG. 8E, an exemplary method for decoding a level is generally indicated by reference numeral 850. Method 850 includes a start block 844 that passes control to a determination block 851. The determination block 851 determines whether "Bin_1 = 0" or "last_ge2_flag = 1 for the current coefficient that is not the first significant coefficient within the block". If "Bin_1 = 0" or "last_ge2_flag = 1 for the current coefficient that is not the first significant coefficient within the block", control is passed to a function block 852. If neither "Bin_1 = 0" nor "last_ge2_flag = 1 for the current coefficient that is not the first significant coefficient within the block", control is passed to a function block 853. The function block 852 decodes the level, sets the absolute value of the current coefficient to level + 2 (Abs(currCoeff)=level + 2), and passes control to an end block 895. The function block 853 sets the absolute value of the current coefficient to 1 ((abs(currCoeff)) = 1 and passes control to the end block 895.
[0079] Note that there is special handling when decoding the coefficient at the last scan position within the block. In method 820, if last_ge2_flag is still 0 before the last coefficient, then for the last coefficient, since last_ge2_flag must be 1, decoding of last_ge2_flag is not required. Instead, last_ge2_flag is simply set to 1 according to function block 823. In method 830, similarly, if last_flag is still 0 before the last coefficient, then for the last coefficient, since last_flag must be 1, decoding of last_flag is not required. (Bin_1 for method 840): Regarding function block 842, (although it does not need to be decoded in function block 824), for the last coefficient of block 823, last_ge2_flag is set to 1, and if it is the first significant coefficient within the block, Bin_1 should be decoded by function block 843. At level 851 according to method 850, if Bin_1 = 0, or if (although it need not be decoded by functional block 824, but) last_ge2_flag for the last coefficient is set to 1 by functional block 823 and the last coefficient is not the first significant coefficient, the level should be decoded by functional block 852. Otherwise, functional block 853 sets the absolute value of this last coefficient to 1.
[0080] Another advantage of the proposed method is the coding of coefficient levels in the same scanning path for other syntaxes such as sig_flag, last_flag, etc. In CABAC, the coefficient level information is coded in reverse zigzag scan order. This seems like a second pass to code the block. In this reverse zigzag order coding, the level information can be coded using a context model designed with the reverse zigzag position of the coded coefficients. Specifically, the first coded coefficient (in reverse zigzag order) is coded using context model 0, the second coded coefficient is coded using context model 1, and so on. This context model design shows some gain (i.e., directly outputting multiple bins with 1 bit per bin) compared to the coding of level bins using a more likely (0.5 / 0.5) model as well.
[0081] The minor drawback can be easily compensated for with a context model properly designed in a one-pass coding method. Considering the coefficient level information of the coded coefficients, the context models for sig_flag, last_ge2_flag, last_flag, Bin_1, and level bins can be designed based on the known level information of the coded coefficients existing in their vicinity, further improving the performance of the context model and enhancing the coding efficiency.
[0082] Referring to FIG. 9, a method of selecting and signaling values for current conversion coefficients is generally indicated by reference numeral 900. Method 900 includes a start block 905 that passes control to a functional block 910. Functional block 910 inputs a set of pictures and values and passes control to a functional block 920. Functional block 920 adaptively selects a value based on the statistics of the already processed blocks or pictures and passes control to a functional block 930. Functional block 930 explicitly signals the value selected at the sequence level, frame level, slice level, or block level and passes control to an end block 999.
[0083] Referring to FIG. 10, an exemplary method of decoding values for current conversion coefficients is generally indicated by reference numeral 1000. Method 1000 includes a start block 1005 that passes control to a functional block 1010. Functional block 1010 decodes values at the sequence level, frame level, slice level, or block level and passes control to an end block 1099.
[0084] Accordingly, the principles of the present invention have the advantage of providing a method and apparatus for performing improved entropy encoding and decoding that systematically encode quantized transform blocks. There are at least two novel aspects to this approach. First, the adoption of last_ge2_flag simplifies the system because it reduces the binary bins that are binary arithmetic encoded in the encoder and decoder. Second, the encoding of coefficient value information in the same scan order as other syntaxes allows the block entropy encoding to be completed in one scan pass. The syntax context model can be improved using the value information, further enhancing the encoding efficiency.
[0085] It will be understood that last_ge2_flag is merely an embodiment. Those skilled in the art in this technical field and related technical fields will readily understand that alternatively, the flag can be called last_geX_flag, where X can be any number.
[0086] Some of the many attendant advantages / features of the present invention will be described. Some of these are as already described. For example, one advantage / feature is an apparatus having a video encoder that encodes at least blocks within a picture. The video encoder performs encoding by converting the residual of a block to obtain transform coefficients, quantizing the transform coefficients to obtain quantized transform coefficients, and entropy encoding the quantized transform coefficients. The quantized transform coefficients are encoded in one pass using a flag such that the current transform coefficient being processed among the quantized transform coefficients is the last non-zero coefficient for a block having a value greater than or equal to a specific value.
[0087] Furthermore, another advantage / feature is an apparatus having the video encoder described above, where the specific value is 2.
[0088] Furthermore, another advantage / feature is an apparatus having the video encoder described above, where subsequent non-zero coefficients among the quantized transform coefficients having values less than a specific value are encoded by encoding only the sign of each of the subsequent non-zero coefficients having values less than the specific value.
[0089] Furthermore, another advantage / feature is an apparatus having the video encoder described above, where the specific value is selected from a plurality of values.
[0090] Furthermore, another advantage / feature is an apparatus having a video encoder as described above, where the specific value is selected from a plurality of values, the picture is one of a plurality of pictures included in a video sequence, and the specific value is adaptively selected according to a statistical value derived from already processed blocks within the picture or within one or more other pictures of the plurality of pictures within the video sequence.
[0091] Furthermore, another advantage / feature is the apparatus having the video encoder described above, wherein a specific value is explicitly signaled in this apparatus.
[0092] Furthermore, another advantage / feature is the apparatus having the video encoder described above, wherein a specific value is explicitly signaled at at least one of sequence level, frame level, slice level, and block level in this apparatus.
[0093] Furthermore, another advantage / feature is the apparatus having the video encoder described above, wherein the encoding of the level of the current transform coefficient among the quantized transform coefficients is performed by subtracting a specific value from the actual value of the current transform coefficient among the quantized transform coefficients to obtain a difference value and encoding the difference value as the level, so that the corresponding decoder can reproduce the level by adding the difference value to the specific value.
[0094] Furthermore, another advantage / feature is the apparatus having the video encoder described above, wherein the sig_flag syntax element, flag, last_flag syntax element, Bin_1 syntax element, level syntax element, and sign syntax element are encoded in the same scan order, the sig_flag syntax element indicates whether the current transform coefficient among the quantized transform coefficients has a non-zero value, the last_flag syntax element indicates whether the current transform coefficient among the quantized transform coefficients having a non-zero value is the last quantized transform coefficient having a non-zero value within a block in a given scan order, the Bin_1 syntax element indicates that the absolute value of the current transform coefficient among the quantized transform coefficients has a non-zero value that is not currently known, the level syntax element indicates the absolute value of the current transform coefficient among the quantized transform coefficients when the absolute value of the current transform coefficient among the quantized transform coefficients has an absolute value greater than a specific value, and the sign syntax element indicates the corresponding sign of the current transform coefficient among the quantized transform coefficients.
[0095] These features of the principles of the present invention and other features will be readily apparent to those of ordinary skill in the relevant art based on the disclosure herein. It will be understood that the disclosure of the principles of the present invention can be implemented in the form of hardware, software, firmware, application-specific processors, or a combination thereof.
[0096] More preferably, the disclosure of the principles of the present invention is implemented by combining hardware and software. Further, the software is implemented as an application program that is actually implemented on a program storage unit. The application program may be uploaded to a machine having an appropriate architecture and executed by this machine. Preferably, this machine is implemented on a computer platform having one or more central processing units (CPUs), random access memory (RAM), and input / output (I / O) interfaces. Also, the computer platform may include an operating system and microinstruction code. Various processes and functions disclosed herein may be part of the micro instruction code, part of the application program, a combination thereof, or executed by the CPU. Further, various other peripheral devices may be coupled to the computer platform, such as additional data storage devices and printers.
[0097] Furthermore, since some of the components of the system and steps of the method shown in the accompanying drawings are preferably implemented in the form of software, it can be understood that the actual connections between the components of the system or processing function blocks may vary depending on the method of programming the principles of the present invention. Based on the disclosure herein, those having ordinary technical knowledge in the relevant art will be able to envision embodiments or configurations of the principles of the present invention, as well as similar embodiments or configurations.
[0098] Exemplary embodiments have been described herein with reference to the accompanying drawings, but the present invention is not strictly limited to these embodiments, and it can be understood that those with ordinary skill in the relevant art can make various changes and modifications without departing from the scope or spirit of the principles of the present invention. All such changes and modifications are intended to be included within the scope of the principles of the present invention as recited in the appended claims.
Claims
1. An apparatus comprising: A video encoder (200) for encoding at least one block in a picture, The video encoder (200) performs encoding by transforming residuals of the blocks to obtain transform coefficients, quantizing the transform coefficients to obtain quantized transform coefficients, and entropy encoding the quantized transform coefficients; The apparatus, wherein the quantized transform coefficients are coded using a flag that indicates that the current transform coefficient being processed among the quantized transform coefficients is the last non-zero coefficient for a block having a value equal to or greater than a particular value.
2. The apparatus of claim 1 , wherein the particular value is two.
3. 2. The apparatus of claim 1, wherein subsequent nonzero coefficients of the quantized transform coefficients having values less than the particular value are coded by coding only the signs of each of the subsequent nonzero coefficients having values less than the particular value.
4. The apparatus of claim 1 , wherein the particular value is selected from a plurality of values.
5. 5. The apparatus of claim 4, wherein the picture is one of a plurality of pictures included in a video sequence, and the particular value is adaptively selected in response to statistics derived from already processed blocks within the picture or one or more other pictures of the plurality of pictures in the video sequence.
6. The apparatus of claim 1 , wherein the particular value is explicitly signaled.
7. The apparatus of claim 1 , wherein the particular value is explicitly signaled at least one of a sequence level, a frame level, a slice level, and a block level.
8. 2. The device of claim 1, wherein the level of a current transform coefficient among the quantized transform coefficients is encoded by subtracting the specific value from an actual value of the current transform coefficient among the quantized transform coefficients to obtain a difference value and encoding the difference value as the level, such that a corresponding decoder can regenerate the level by adding the difference value to the specific value.
9. the sig_flag syntax element, the flag, the last_flag syntax element, the Bin_1 syntax element, the level syntax element, and the sign syntax element are coded in the same scanning order; the sig_flag syntax element indicates whether the current one of the quantized transform coefficients has a non-zero value; the last_flag syntax element indicates whether the current transform coefficient among the quantized transform coefficients having the non-zero value is the last quantized transform coefficient in the block in a given scan order having the non-zero value; The Bin — 1 syntax element indicates that the absolute value of the current transform coefficient among the quantized transform coefficients has a currently unknown non-zero value, the level syntax element indicates an absolute value of the current one of the quantized transform coefficients when the absolute value of the current one of the quantized transform coefficients is greater than the particular value; The apparatus of claim 1 , wherein the sign syntax element indicates a corresponding sign of the current one of the quantized transform coefficients.
10. 1. A method in a video encoder, comprising: encoding at least one block in a picture, The encoding step performs a transform by transforming the residual of the block to obtain transform coefficients, quantizing the transform coefficients to obtain quantized transform coefficients, and entropy encoding the quantized transform coefficients; The method, wherein the quantized transform coefficients are coded using a flag that indicates that the current transform coefficient being processed among the quantized transform coefficients is the last non-zero coefficient for a block having a value greater than or equal to a particular value (200, 700).
11. The method of claim 10, wherein the particular value is 2 (751).
12. 11. The method of claim 10, wherein subsequent non-zero coefficients of the quantized transform coefficients having values less than the particular value are coded by coding only the sign of each of the subsequent non-zero coefficients having values less than the particular value (710, 721, 731, 741, 751).
13. The method of claim 10, wherein the particular value is selected from a plurality of values (910, 920).
14. 14. The method of claim 13, wherein the picture is one of a plurality of pictures included in a video sequence, and the particular value is adaptively selected (920) in response to statistics derived from already processed blocks within the picture or within one or more other pictures of the plurality of pictures in the video sequence.
15. The method of claim 10, wherein the particular value is explicitly signaled (930).
16. The method of claim 10 , wherein the particular value is explicitly signaled ( 930 ) at least one of a sequence level, a frame level, a slice level, and a block level.
17. 11. The method of claim 10, wherein a level of a current one of the quantized transform coefficients is encoded by subtracting the specific value from an actual value of the current one of the quantized transform coefficients to obtain a difference value and encoding the difference value as the level, such that a corresponding decoder can regenerate the level by adding the difference value to the specific value (752).
18. the sig_flag syntax element, the flag, the last_flag syntax element, the Bin_1 syntax element, the level syntax element, and the sign syntax element are coded in the same scanning order; The sig_flag syntax element indicates whether the current one of the quantized transform coefficients has a non-zero value; the last_flag syntax element indicates whether the current transform coefficient among the quantized transform coefficients having the non-zero value is the last quantized transform coefficient in the block in a given scan order having the non-zero value; the Bin — 1 syntax element indicates that the absolute value of the current transform coefficient among the quantized transform coefficients has a currently unknown non-zero value; the level syntax element indicates an absolute value of the current one of the quantized transform coefficients when the absolute value of the current one of the quantized transform coefficients is greater than the particular value; The method of claim 10 , wherein the sign syntax element indicates a corresponding sign of the current one of the quantized transform coefficients.
19. An apparatus comprising: A video decoder (300) for decoding at least a block in a picture, the video decoder performs decoding by entropy decoding quantized transform coefficients, dequantizing the quantized transform coefficients to obtain transform coefficients, and inverse transforming the transform coefficients to obtain a reconstructed residual for the block for use in reconstructing the block; The apparatus, wherein the quantized transform coefficients are decoded using a flag that indicates that the current transform coefficient being processed among the quantized transform coefficients is the last non-zero coefficient for a block having a value equal to or greater than a particular value.
20. 20. The apparatus of claim 19, wherein the particular value is two.
21. 20. The apparatus of claim 19, wherein subsequent nonzero coefficients of the quantized transform coefficients having values less than the particular value are decoded by decoding only the signs of each of the subsequent nonzero coefficients having values less than the particular value.
22. The apparatus of claim 19 , wherein the particular value is explicitly determined.
23. 20. The apparatus of claim 19, wherein the particular value is explicitly determined from at least one of a sequence level, a frame level, a slice level, and a block level.
24. 20. The apparatus of claim 19, wherein a level of a current transform coefficient among the quantized transform coefficients is decoded by decoding a predetermined difference value between an actual value of the current transform coefficient among the quantized transform coefficients and the specific value, and adding the difference value to the specific value to obtain the level.
25. the sig_flag syntax element, the flag, the last_flag syntax element, the Bin_1 syntax element, the level syntax element, and the sign syntax element are coded in the same scanning order; The sig_flag syntax element indicates whether the current one of the quantized transform coefficients has a non-zero value; the last_flag syntax element indicates whether the current transform coefficient among the quantized transform coefficients having the non-zero value is the last quantized transform coefficient in the block in a given scan order having the non-zero value; the Bin — 1 syntax element indicates that the absolute value of the current transform coefficient among the quantized transform coefficients has a currently unknown non-zero value; the level syntax element indicates an absolute value of the current one of the quantized transform coefficients when the absolute value of the current one of the quantized transform coefficients is greater than the particular value; 20. The apparatus of claim 19, wherein the sign syntax element indicates a corresponding sign of the current one of the quantized transform coefficients.
26. 1. A method in a video decoder, comprising: Decoding at least a block in a picture, the decoding step comprises: decoding by entropy decoding quantized transform coefficients, dequantizing the quantized transform coefficients to obtain transform coefficients, and inverse transforming the transform coefficients to obtain a reconstructed residual of the block for use in reconstructing the block; The method further comprising: decoding the quantized transform coefficients using a flag that indicates that the current transform coefficient being processed among the quantized transform coefficients is the last non-zero coefficient for a block having a value greater than or equal to a particular value (300, 800).
27. 27. The method of claim 26, wherein the particular value is 2 (802).
28. 27. The method of claim 26, wherein subsequent non-zero coefficients of the quantized transform coefficients having values less than the particular value are decoded by decoding only the signs of each of the subsequent non-zero coefficients having values less than the particular value (810, 821, 831, 842, 851).
29. 27. The method of claim 26, wherein the particular value is explicitly determined (1005).
30. 27. The method of claim 26, wherein the particular value is explicitly determined (1005) from at least one of a sequence level, a frame level, a slice level, and a block level.
31. 27. The method of claim 26, wherein a level of a current one of the quantized transform coefficients is decoded (852) by decoding a predetermined difference value between an actual value of the current one of the quantized transform coefficients and the specific value, and adding the difference value to the specific value to obtain the level.
32. the sig_flag syntax element, the flag, the last_flag syntax element, the Bin_1 syntax element, the level syntax element, and the sign syntax element are coded in the same scanning order; The sig_flag syntax element indicates whether the current one of the quantized transform coefficients has a non-zero value; the last_flag syntax element indicates whether the current transform coefficient among the quantized transform coefficients having the non-zero value is the last quantized transform coefficient in the block in a given scan order having the non-zero value; the Bin — 1 syntax element indicates that the absolute value of the current transform coefficient among the quantized transform coefficients has a currently unknown non-zero value; the level syntax element indicates an absolute value of the current one of the quantized transform coefficients when the absolute value of the current one of the quantized transform coefficients is greater than the particular value; 27. The method of claim 26, wherein the sign syntax element indicates a corresponding sign of the current one of the quantized transform coefficients.
33. 1. A computer readable storage medium for storing encoded video signal data, comprising: a coding scheme for coding at least one block in a picture, the picture being coded by transforming a residual of the block to obtain quantized transform coefficients, quantizing the transform coefficients to obtain quantized transform coefficients, and entropy coding the quantized transform coefficients; The storage medium, wherein the quantized transform coefficients are coded using a flag that indicates that the current transform coefficient being processed among the quantized transform coefficients is the last non-zero coefficient for a block having a value equal to or greater than a particular value.
Citation Information
Patent Citations
Dynamic image encoding device, dynamic image decoding device, dynamic image encoding method, and dynamic image decoding method
JP2012023611A